From 9c1bea9a648728f0d4d8e90ee465c3dd256debd2 Mon Sep 17 00:00:00 2001 From: Dmitriy Vasilev Date: Tue, 15 Sep 2026 22:28:58 +0700 Subject: [PATCH 1/5] feat(website): the .t27 catalog syncs itself from GitHub, nightly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The catalog behind the Queen map and the Spec Explorer had been frozen since 2026-09-12 at 856 specs while GitHub held far more, and three separate things had to be true at once for that to happen. 1. sync-t27-specs.mjs read gHashTag/t27 from a working copy at /Users/playom/t27, so the repository holding two thirds of the corpus was the one repository CI could not refresh. That checkout sat on a feature branch 704 commits behind master, which is how the site came to be missing 540 specs that were on master all along -- specs/tools (94), bootstrap/tests (90), specs/ternary (60), specs/igla (44), specs/crons (33), specs/agents (27), specs/skills (26). It now pulls a tarball like the other four founding sources, reuses the vendored compiler wasm when cargo is not available, and brings the teaching course -- which lives on a branch never merged to master -- through a named overlay ref that contributes only the paths master lacks, so the overlay retires itself the day the course is merged. 2. The nightly workflow never ran that sync at all, only the discovery scan; and every run since 2026-09-13 died at check:tools before reaching its commit step. That gate asserted mcpWithTools + mcpExternal == mcp.length while its own message states "either lists tools or is external" -- an OR written as a sum, which held only while no external server listed any tools. mcp/inngest-dev is both, truthfully, so the gate now asserts the invariant it names. 3. Even green, its `git push` to main is rejected by ruleset 23148303, which requires the "T27 work report" check and lists no bypass actors. It now commits to bot/t27-world-scan, generates a report from the artifacts the run itself wrote, opens or updates a pull request and enables auto-merge. Result: 1407 specs across 10 repositories, from GitHub, with no laptop in the path. Two worlds the frozen catalog never saw -- tt-trinity-euler (46) and turbobaby-user-bot (12) -- are on the map, and chips/euler is now attributed to tt-trinity-euler, the repository that owns it. Also here, all found while proving the above: - Duplicate copies are recorded as {path, repo, sameAs} pairs instead of only counted, and the Spec Explorer shows a spec's other homes. The bytes are discarded at vendor time, so nothing downstream could reconstruct this. - The embedded Explorer lifted its course filter only for a spec outside the course. The homepage frame opens hello_world, which is lesson 0, so it read "9 specs" beside a map saying 856. An address that names a spec now shows the whole library. - .spec-x-brief is a flex item with nothing to give: measured at 404px it was a 0px box around 636px of content, which drew over the tab strip and the code. No variant shrinks now; an open one takes up to 45vh and scrolls. - A spec's SOURCES and BODY_EN name files that are not .t27, so a GitHub-sourced refresh deleted the seven docs/system/*.md a chapter renders. They are vendored from the same tarball, at the same commit, as the spec naming them. - The Chip panel's "of 676 specs, 361 produce Verilog" now says when it was measured and that the corpus has grown since. Каталог за картой Королевы и обозревателем спек стоял с 12 сентября на 856 спеках, хотя на GitHub их было куда больше, и для этого должны были совпасть три вещи: основной синк читал gHashTag/t27 с ноутбука (ветка на 704 коммита позади master), ночной workflow этот синк вообще не запускал и падал на неродственном гейте check:tools, а даже зелёным не смог бы запушить в main из-за правила о рабочем отчёте. Теперь источник -- GitHub, курс приходит через именованный overlay-ref, гейт проверяет то, что заявляет, а workflow открывает pull request с отчётом и включает авто-мердж. Итог: 1407 спек в 10 репозиториях без участия чьей-либо машины. Co-Authored-By: Claude Opus 5 --- .github/workflows/t27-world-scan.yml | 61 +- apps/website/public/agents/spec-agents.json | 2 +- apps/website/public/crons/spec-crons.json | 2 +- apps/website/public/docs/system-docs.json | 2 +- .../public/functions/spec-functions.json | 2 +- apps/website/public/skills/skills-core.json | 2 +- apps/website/public/skills/spec-skills.json | 2 +- .../files/bootstrap/src/codegen_python.t27 | 195 + .../tests/fixtures/damage/damage_class_01.t27 | 9 + .../tests/fixtures/damage/damage_class_02.t27 | 9 + .../tests/fixtures/damage/damage_class_03.t27 | 9 + .../tests/fixtures/damage/damage_class_04.t27 | 9 + .../tests/fixtures/damage/damage_class_05.t27 | 9 + .../tests/fixtures/damage/damage_class_06.t27 | 9 + .../tests/fixtures/damage/damage_class_07.t27 | 9 + .../tests/fixtures/damage/damage_class_08.t27 | 9 + .../tests/fixtures/damage/damage_class_09.t27 | 9 + .../tests/fixtures/damage/damage_class_10.t27 | 9 + .../tests/fixtures/damage/damage_class_11.t27 | 9 + .../tests/fixtures/damage/damage_class_12.t27 | 9 + .../tests/fixtures/damage/damage_class_13.t27 | 9 + .../tests/fixtures/damage/damage_class_14.t27 | 9 + .../tests/fixtures/damage/damage_class_15.t27 | 9 + .../damage_negative/neg_01_latency_bound.t27 | 7 + .../damage_negative/neg_02_match_arms.t27 | 8 + .../neg_03_multiline_array.t27 | 9 + .../damage_negative/neg_04_fn_signature.t27 | 7 + .../damage_negative/neg_05_raw_string.t27 | 6 + .../damage_negative/neg_06_intact_field.t27 | 8 + .../generic_const/neg_01_empty_params.t27 | 7 + .../generic_const/neg_02_trailing_comma.t27 | 7 + .../generic_const/neg_03_type_expr_param.t27 | 7 + .../neg_04_constrained_param.t27 | 7 + .../generic_const/neg_05_enum_rhs.t27 | 7 + .../generic_const/neg_06_value_rhs.t27 | 4 + .../fixtures/generic_const/neg_07_no_rhs.t27 | 4 + .../generic_const/pos_01_single_param.t27 | 7 + .../generic_const/pos_02_two_params.t27 | 7 + .../generic_const/pos_03_three_params.t27 | 8 + .../fixtures/generic_const/pos_04_no_pub.t27 | 6 + .../generic_const/pos_05_no_semicolon.t27 | 7 + .../generic_const/pos_06_alongside_plain.t27 | 11 + .../tests/fixtures/terminator/eof_generic.t27 | 8 + .../tests/fixtures/terminator/eof_hazard.t27 | 4 + .../fixtures/terminator/field_swallow.t27 | 7 + .../fixtures/terminator/nested_types.t27 | 14 + .../fixtures/terminator/semicolon_phantom.t27 | 6 + .../tests/fixtures/terminator/tuple_type.t27 | 12 + .../tests/fixtures/terminator/unbalanced.t27 | 8 + .../trinity_matrix/adapters_declared.t27 | 26 + .../tests/fixtures/trinity_matrix/arrays.t27 | 26 + .../fixtures/trinity_matrix/clocked_state.t27 | 16 + .../fixtures/trinity_matrix/control_flow.t27 | 32 + .../tests/fixtures/trinity_matrix/enums.t27 | 24 + .../tests/fixtures/trinity_matrix/errors.t27 | 21 + .../fixtures/trinity_matrix/functions.t27 | 24 + .../tests/fixtures/trinity_matrix/imports.t27 | 16 + .../fixtures/trinity_matrix/invariants.t27 | 20 + .../fixtures/trinity_matrix/module_state.t27 | 22 + .../trinity_matrix/neg_bodyless_fn.t27 | 10 + .../trinity_matrix/neg_dropped_module.t27 | 11 + .../trinity_matrix/neg_false_assert.t27 | 10 + .../trinity_matrix/neg_invalid_annotation.t27 | 10 + .../trinity_matrix/neg_unresolved_import.t27 | 11 + .../tests/fixtures/trinity_matrix/scalars.t27 | 36 + .../tests/fixtures/trinity_matrix/strings.t27 | 21 + .../tests/fixtures/trinity_matrix/structs.t27 | 30 + .../tests/goldring/0006_adamw_block.t27 | 7 + .../tests/goldring/0006_array_then_when.t27 | 4 + .../goldring/0006_forged_brace_negative.t27 | 5 + .../tests/goldring/0006_typed_forms_alive.t27 | 7 + .../tests/goldring/0007_and_not_folded.t27 | 17 + .../tests/goldring/0007_bare_call_given.t27 | 5 + .../goldring/0007_bench_measure_target.t27 | 5 + .../tests/goldring/0007_gherkin_and_roles.t27 | 7 + .../goldring/0008_ptr_split_negative.t27 | 4 + .../0008_semicolonless_const_pair.t27 | 9 + .../tests/goldring/0009_no_prose_in_tests.t27 | 5 + .../goldring/0009_two_clauses_one_line.t27 | 4 + .../tests/goldring/0011_in_membership.t27 | 8 + .../goldring/0012_p2_coltie_module_const.t27 | 11 + .../tests/goldring/0012_statement_clauses.t27 | 10 + .../bootstrap/tests/goldring/0013_kf.t27 | 4 + .../bootstrap/tests/goldring/0013_lv.t27 | 6 + .../bootstrap/tests/goldring/0013_un.t27 | 4 + .../bootstrap/tests/goldring/0013_vn.t27 | 4 + .../goldring/0014_comprehension_suffix.t27 | 4 + .../tests/goldring/0014_inline_lambda.t27 | 4 + .../bootstrap/tests/goldring/bdd_probe.t27 | 13 + .../files/bootstrap/tests/goldring/cap_ok.t27 | 12 + .../bootstrap/tests/goldring/cap_test.t27 | 11 + .../bootstrap/tests/goldring/diff_probe.t27 | 14 + .../bootstrap/tests/goldring/expr_probe.t27 | 5 + .../bootstrap/tests/goldring/greedy_probe.t27 | 12 + .../bootstrap/tests/goldring/r_combo.t27 | 14 + .../bootstrap/tests/goldring/r_mulassign.t27 | 7 + .../files/bootstrap/tests/goldring/r_op.t27 | 7 + .../bootstrap/tests/goldring/repro_range.t27 | 11 + .../website/public/t27/files/compiler/ast.t27 | 78 +- .../public/t27/files/compiler/cli/gen.t27 | 38 +- .../public/t27/files/compiler/cli/git.t27 | 28 +- .../public/t27/files/compiler/cli/spec.t27 | 54 +- .../t27/files/compiler/codegen/c/codegen.t27 | 8 +- .../t27/files/compiler/codegen/testgen.t27 | 22 +- .../compiler/codegen/verilog/codegen.t27 | 36 +- .../codegen/verilog/fpga_emission.t27 | 26 +- .../files/compiler/codegen/zig/codegen.t27 | 24 +- .../files/compiler/codegen/zig/runtime.t27 | 16 +- .../t27/files/compiler/parser/lexer.t27 | 8 +- .../t27/files/compiler/parser/parser.t27 | 24 +- .../t27/files/compiler/runtime/commands.t27 | 58 +- .../t27/files/compiler/runtime/runtime.t27 | 8 +- .../t27/files/compiler/runtime/validation.t27 | 26 +- .../t27/files/compiler/skill/registry.t27 | 24 +- .../zig/legacy/main_zig_handwritten.t27 | 98 +- .../examples/fpga/qmtech_minimal/design.t27 | 2 +- .../public/t27/files/specs/account/auth.t27 | 34 +- .../public/t27/files/specs/account/repo.t27 | 22 +- .../public/t27/files/specs/account/schema.t27 | 30 +- .../public/t27/files/specs/api/c_abi.t27 | 106 + .../t27/files/specs/api/c_api_contract.t27 | 116 +- .../t27/files/specs/api/sdk_contract.t27 | 16 +- .../public/t27/files/specs/ar/asp_solver.t27 | 2 +- .../t27/files/specs/ar/coa_planning.t27 | 6 +- .../t27/files/specs/ar/datalog_engine.t27 | 2 - .../t27/files/specs/ar/explainability.t27 | 2 + .../public/t27/files/specs/ar/proof_trace.t27 | 6 +- .../public/t27/files/specs/ar/restraint.t27 | 6 +- .../t27/files/specs/ar/ternary_logic.t27 | 4 +- .../public/t27/files/specs/auth/config.t27 | 42 +- .../specs/automation/agent-provider-chain.t27 | 103 + .../specs/automation/crm-client-ownership.t27 | 140 + .../specs/automation/crm-client-workspace.t27 | 152 + .../t27/files/specs/automation/crm-duet.t27 | 308 + .../specs/automation/crm-lead-magnet.t27 | 135 + .../files/specs/automation/crm-sellers.t27 | 113 + .../specs/automation/inngest-probe-suite.t27 | 114 + .../specs/automation/leela-agent-link.t27 | 115 + .../files/specs/automation/wrapup-auto.t27 | 4 +- .../public/t27/files/specs/base/ops.t27 | 115 +- .../public/t27/files/specs/base/seed.t27 | 4 +- .../t27/files/specs/base/ternary_add.t27 | 10 +- .../t27/files/specs/base/ternary_encoding.t27 | 98 +- .../t27/files/specs/base/ternary_memory.t27 | 90 +- .../public/t27/files/specs/base/types.t27 | 127 +- .../t27/files/specs/benchmarks/bench_main.t27 | 82 +- .../t27/files/specs/benchmarks/bench_nn.t27 | 4 +- .../specs/benchmarks/ternary_vs_binary.t27 | 60 +- .../t27/files/specs/boards/wukong_v1.t27 | 297 + .../public/t27/files/specs/brain/brain.t27 | 62 +- .../public/t27/files/specs/brain/bus.t27 | 2 +- .../t27/files/specs/brain/cognitive_loop.t27 | 2 +- .../t27/files/specs/brain/neural_gamma.t27 | 70 +- .../t27/files/specs/brain/phi_timing.t27 | 2 +- .../t27/files/specs/brain/unified_state.t27 | 2 +- .../public/t27/files/specs/bus/pubsub.t27 | 18 +- .../t27/files/specs/cloud/railway_deploy.t27 | 1 + .../files/specs/compiler/mod_structure.t27 | 14 + .../t27/files/specs/compiler/parser.t27 | 48 +- .../public/t27/files/specs/config/load.t27 | 74 +- .../public/t27/files/specs/config/schema.t27 | 52 +- .../files/specs/conformance/e2e_scenarios.t27 | 36 +- .../demos/jones_topology_decision_gate.t27 | 48 +- .../specs/demos/jones_topology_filter.t27 | 2 +- .../public/t27/files/specs/docs/README.md | 90 - .../t27/files/specs/file/operations.t27 | 64 +- .../public/t27/files/specs/file/schema.t27 | 66 +- .../public/t27/files/specs/file/watcher.t27 | 38 +- .../fpga/boards/qmtech_a100t_integration.t27 | 14 + .../public/t27/files/specs/fpga/bpsk.t27 | 211 + .../public/t27/files/specs/fpga/bridge.t27 | 102 +- .../public/t27/files/specs/fpga/fifo.t27 | 8 +- .../public/t27/files/specs/fpga/mac.t27 | 160 +- .../public/t27/files/specs/fpga/partition.t27 | 63 +- .../t27/files/specs/fpga/power_analysis.t27 | 117 +- .../public/t27/files/specs/fpga/simulator.t27 | 29 +- .../public/t27/files/specs/fpga/spi.t27 | 162 +- .../t27/files/specs/fpga/ternary_isa.t27 | 12 +- .../t27/files/specs/fpga/ternary_link.t27 | 547 ++ .../files/specs/fpga/testbench/bootrom_tb.t27 | 18 +- .../files/specs/fpga/testbench/bridge_tb.t27 | 14 + .../t27/files/specs/fpga/testbench/dft_tb.t27 | 14 + .../files/specs/fpga/testbench/fifo_tb.t27 | 14 + .../t27/files/specs/fpga/testbench/mac_tb.t27 | 70 +- .../files/specs/fpga/testbench/memory_tb.t27 | 14 + .../fpga/testbench/power_analysis_tb.t27 | 66 +- .../t27/files/specs/fpga/testbench/spi_tb.t27 | 14 + .../t27/files/specs/fpga/testbench/top_tb.t27 | 2 +- .../files/specs/fpga/testbench/uart_tb.t27 | 56 +- .../testbench/vcd_conformance_compare_tb.t27 | 26 +- .../public/t27/files/specs/fpga/top_level.t27 | 2 +- .../public/t27/files/specs/fpga/uart.t27 | 16 +- .../specs/fpga/vcd_conformance_compare.t27 | 105 +- .../t27/files/specs/functions/README.md | 112 - .../specs/functions/training-stuck-check.t27 | 2 +- .../public/t27/files/specs/git/diff.t27 | 22 +- .../public/t27/files/specs/git/operations.t27 | 16 +- .../public/t27/files/specs/git/schema.t27 | 34 +- .../public/t27/files/specs/git/status.t27 | 18 +- .../specs/github/tests/e2e_full_flow.t27 | 7 +- .../t27/files/specs/graph/knowledge_graph.t27 | 6 +- .../t27/files/specs/hslm/forward_pass.t27 | 2 +- .../public/t27/files/specs/i18n/README.md | 71 - .../specs/igla/coder/_tmp_pipeline_import.t27 | 2903 +++++++++ .../t27/files/specs/igla/coder/arch.t27 | 2954 ++++++++++ .../files/specs/igla/coder/bench_proxy.t27 | 1856 ++++++ .../t27/files/specs/igla/coder/benchmark.t27 | 5221 +++++++++++++++++ .../t27/files/specs/igla/coder/dataset.t27 | 3071 ++++++++++ .../t27/files/specs/igla/coder/eval.t27 | 4266 ++++++++++++++ .../t27/files/specs/igla/coder/pipeline.t27 | 2890 +++++++++ .../public/t27/files/specs/igla/coder/prm.t27 | 2199 +++++++ .../t27/files/specs/igla/coder/tokenizer.t27 | 2009 +++++++ .../t27/files/specs/igla/coder/training.t27 | 2214 +++++++ .../t27/files/specs/igla/coder/weights.t27 | 2085 +++++++ .../igla/evaluation/multi_lang_harness.t27 | 110 + .../specs/igla/integration/publication.t27 | 98 + .../t27/files/specs/igla/race/adder_tree.t27 | 2202 +++++++ .../t27/files/specs/igla/race/backend.t27 | 2552 ++++++++ .../files/specs/igla/race/bram_weights.t27 | 2221 +++++++ .../t27/files/specs/igla/race/cordic.t27 | 2198 +++++++ .../files/specs/igla/race/cordic_fixed.t27 | 2215 +++++++ .../t27/files/specs/igla/race/cordic_top.t27 | 2253 +++++++ .../public/t27/files/specs/igla/race/eda.t27 | 2451 ++++++++ .../t27/files/specs/igla/race/formal.t27 | 2371 ++++++++ .../public/t27/files/specs/igla/race/gemm.t27 | 2271 +++++++ .../igla/race/mvp_ternary_classifier.t27 | 324 + .../t27/files/specs/igla/race/opcodes.t27 | 2081 +++++++ .../igla/race/phi_accumulator_growth.t27 | 286 + .../specs/igla/race/phi_gain_freedom.t27 | 245 + .../t27/files/specs/igla/race/phi_weights.t27 | 345 ++ .../public/t27/files/specs/igla/race/rtl.t27 | 2397 ++++++++ .../files/specs/igla/race/systolic_array.t27 | 2383 ++++++++ .../specs/igla/race/systolic_ternary.t27 | 2613 +++++++++ .../files/specs/igla/race/ternary_dot_sw.t27 | 449 ++ .../files/specs/igla/race/ternary_gemm.t27 | 2367 ++++++++ .../specs/igla/race/ternary_inference.t27 | 1763 ++++++ .../specs/igla/race/ternary_lut_table.t27 | 240 + .../t27/files/specs/igla/race/ternary_mac.t27 | 2429 ++++++++ .../specs/igla/race/ternary_mac_group.t27 | 238 + .../files/specs/igla/race/ternary_node.t27 | 307 + .../specs/igla/race/unit_weights_node.t27 | 246 + .../t27/files/specs/igla/race/yosys.t27 | 2396 ++++++++ .../specs/igla/training/low_bit_ternary.t27 | 98 + .../specs/igla/training/pilot_pretraining.t27 | 103 + .../t27/files/specs/igla/training/roadmap.t27 | 93 + .../files/specs/igla/training/scale_up.t27 | 96 + .../specs/igla/w535_bounded_while_module.t27 | 42 + .../files/specs/interop/gf_cross_language.t27 | 22 +- .../public/t27/files/specs/isa/registers.t27 | 138 +- .../files/specs/isa/ternary_arithmetic.t27 | 90 +- .../t27/files/specs/isa/ternary_bitwise.t27 | 86 +- .../files/specs/isa/ternary_control_flow.t27 | 38 +- .../t27/files/specs/isa/ternary_deque.t27 | 66 +- .../t27/files/specs/isa/ternary_encoding.t27 | 381 +- .../t27/files/specs/isa/ternary_gates.t27 | 94 +- .../t27/files/specs/isa/ternary_memory.t27 | 38 +- .../t27/files/specs/isa/ternary_shift.t27 | 62 +- .../t27/files/specs/isa/tri27_bytecode.t27 | 208 + .../t27/files/specs/isa/tri27_machine.t27 | 460 ++ .../public/t27/files/specs/jit/jit.t27 | 7 +- .../public/t27/files/specs/lsp/client.t27 | 4 + .../public/t27/files/specs/lsp/language.t27 | 142 +- .../public/t27/files/specs/lsp/protocol.t27 | 249 +- .../public/t27/files/specs/lsp/server.t27 | 5 + .../public/t27/files/specs/math/constants.t27 | 231 +- .../t27/files/specs/math/e8_lie_algebra.t27 | 12 +- .../t27/files/specs/math/gf_competitive.t27 | 20 +- .../specs/math/pellis_precision_verify.t27 | 40 +- .../files/specs/math/phi_split_optimality.t27 | 8 +- .../specs/math/phi_universal_attractor.t27 | 96 +- .../specs/math/property_test_template.t27 | 98 +- .../t27/files/specs/math/radix_economy.t27 | 52 +- .../t27/files/specs/math/sacred_physics.t27 | 67 +- .../t27/files/specs/math/zamolodchikov_e8.t27 | 10 +- .../t27/files/specs/memory/formula_embed.t27 | 6 +- .../t27/files/specs/memory/notebooklm.t27 | 68 +- .../t27/files/specs/memory/tmem/bridge.t27 | 415 ++ .../files/specs/memory/tmem/conformance.t27 | 274 + .../t27/files/specs/memory/tmem/edge_demo.t27 | 232 + .../specs/memory/tmem/stream_compute.t27 | 438 ++ .../files/specs/memory/tmem/tensorpack.t27 | 315 + .../t27/files/specs/memory/tmem/types.t27 | 290 + .../specs/ml/activation/elu_activation.t27 | 76 +- .../specs/ml/activation/gelu_activation.t27 | 110 +- .../ml/activation/gelu_approx_activation.t27 | 56 +- .../ml/activation/leaky_relu_activation.t27 | 54 +- .../specs/ml/activation/relu_activation.t27 | 66 +- .../ml/activation/sigmoid_activation.t27 | 48 +- .../ml/activation/silu_swish_activation.t27 | 39 +- .../activation/silu_swish_vbt_activation.t27 | 3 - .../t27/files/specs/ml/activation/softmax.t27 | 39 +- .../specs/ml/activation/tanh_activation.t27 | 41 +- .../files/specs/ml/igla_champion_capsule.t27 | 136 + .../files/specs/ml/layers/avgpool2d_layer.t27 | 58 +- .../files/specs/ml/layers/batchnorm_layer.t27 | 52 +- .../files/specs/ml/layers/conv2d_layer.t27 | 10 +- .../t27/files/specs/ml/layers/dense_layer.t27 | 10 +- .../files/specs/ml/layers/dropout_layer.t27 | 41 +- .../files/specs/ml/layers/embedding_layer.t27 | 59 +- .../files/specs/ml/layers/flatten_layer.t27 | 60 +- .../files/specs/ml/layers/layernorm_layer.t27 | 4 +- .../files/specs/ml/layers/maxpool2d_layer.t27 | 49 +- .../specs/ml/layers/residual_connection.t27 | 4 +- .../ml/loss/binary_crossentropy_loss.t27 | 71 +- .../files/specs/ml/loss/contrastive_loss.t27 | 4 +- .../specs/ml/loss/cross_entropy_loss.t27 | 10 +- .../t27/files/specs/ml/loss/huber_loss.t27 | 4 +- .../t27/files/specs/ml/loss/kl_divergence.t27 | 4 +- .../t27/files/specs/ml/loss/mse_loss.t27 | 4 +- .../t27/files/specs/ml/optimizer/adagrad.t27 | 52 +- .../t27/files/specs/ml/optimizer/adam.t27 | 4 +- .../t27/files/specs/ml/optimizer/adamw.t27 | 738 ++- .../t27/files/specs/ml/optimizer/lamb.t27 | 62 +- .../files/specs/ml/optimizer/lr_scheduler.t27 | 90 +- .../files/specs/ml/optimizer/race_config.t27 | 229 + .../t27/files/specs/ml/optimizer/rmsprop.t27 | 4 +- .../t27/files/specs/ml/optimizer/sgd.t27 | 46 +- .../files/specs/ml/optimizer/sgd_momentum.t27 | 108 +- .../public/t27/files/specs/ml/pathway/mlp.t27 | 44 +- .../ml/recurrent/attention_mechanism.t27 | 46 +- .../t27/files/specs/ml/recurrent/bilstm.t27 | 59 +- .../t27/files/specs/ml/recurrent/gru_cell.t27 | 57 +- .../files/specs/ml/recurrent/lstm_cell.t27 | 44 +- .../files/specs/ml/recurrent/lstm_single.t27 | 65 +- .../t27/files/specs/ml/recurrent/rnn_cell.t27 | 62 +- .../specs/ml/recurrent/self_attention.t27 | 4 +- .../t27/files/specs/ml/recurrent/seq2seq.t27 | 66 +- .../files/specs/ml/rl/advantage_estimator.t27 | 72 +- .../public/t27/files/specs/ml/rl/dqn.t27 | 63 +- .../files/specs/ml/rl/dqn_target_network.t27 | 58 +- .../t27/files/specs/ml/rl/ppo_actor.t27 | 97 +- .../t27/files/specs/ml/rl/ppo_clip_loss.t27 | 96 +- .../t27/files/specs/ml/rl/ppo_critic.t27 | 57 +- .../t27/files/specs/ml/rl/sac_actor.t27 | 66 +- .../t27/files/specs/ml/rl/sac_critic.t27 | 104 +- .../specs/ml/transformer/encoder_block.t27 | 52 +- .../specs/ml/transformer/feed_forward.t27 | 8 +- .../ml/transformer/feed_forward_network.t27 | 6 +- .../files/specs/ml/transformer/mha_block.t27 | 2 +- .../ml/transformer/multi_head_attention.t27 | 4 +- .../specs/ml/transformer/multi_head_attn.t27 | 12 +- .../t27/files/specs/ml/transformer/norm.t27 | 10 +- .../specs/ml/transformer/positional_enc.t27 | 14 +- .../ml/transformer/positional_encoding.t27 | 4 +- .../t27/files/specs/neural/forward_pass.t27 | 6 +- .../public/t27/files/specs/nn/attention.t27 | 434 +- .../website/public/t27/files/specs/nn/gla.t27 | 588 ++ .../public/t27/files/specs/nn/hslm.t27 | 82 +- .../public/t27/files/specs/nn/phi_rope.t27 | 3 - .../t27/files/specs/nn/sacred_attention.t27 | 3 - .../public/t27/files/specs/numeric/bigint.t27 | 2 +- .../t27/files/specs/numeric/bnf1024.t27 | 48 + .../public/t27/files/specs/numeric/bnf128.t27 | 48 + .../public/t27/files/specs/numeric/bnf16.t27 | 48 + .../public/t27/files/specs/numeric/bnf256.t27 | 48 + .../public/t27/files/specs/numeric/bnf32.t27 | 48 + .../public/t27/files/specs/numeric/bnf512.t27 | 48 + .../public/t27/files/specs/numeric/bnf64.t27 | 48 + .../public/t27/files/specs/numeric/bnf8.t27 | 48 + .../public/t27/files/specs/numeric/e8m0.t27 | 266 + .../t27/files/specs/numeric/formats.t27 | 4 +- .../files/specs/numeric/formats_catalog.t27 | 489 ++ .../public/t27/files/specs/numeric/gf10.t27 | 84 + .../public/t27/files/specs/numeric/gf1024.t27 | 82 + .../public/t27/files/specs/numeric/gf12.t27 | 42 +- .../public/t27/files/specs/numeric/gf128.t27 | 76 + .../public/t27/files/specs/numeric/gf14.t27 | 84 + .../public/t27/files/specs/numeric/gf16.t27 | 421 +- .../public/t27/files/specs/numeric/gf20.t27 | 38 +- .../public/t27/files/specs/numeric/gf24.t27 | 38 +- .../public/t27/files/specs/numeric/gf256.t27 | 76 + .../public/t27/files/specs/numeric/gf32.t27 | 48 +- .../public/t27/files/specs/numeric/gf4.t27 | 58 +- .../public/t27/files/specs/numeric/gf48.t27 | 84 + .../public/t27/files/specs/numeric/gf512.t27 | 77 + .../public/t27/files/specs/numeric/gf6.t27 | 84 + .../public/t27/files/specs/numeric/gf64.t27 | 228 + .../public/t27/files/specs/numeric/gf8.t27 | 44 +- .../public/t27/files/specs/numeric/gf96.t27 | 76 + .../t27/files/specs/numeric/gft1024.t27 | 55 + .../public/t27/files/specs/numeric/gft128.t27 | 55 + .../public/t27/files/specs/numeric/gft16.t27 | 55 + .../public/t27/files/specs/numeric/gft256.t27 | 55 + .../public/t27/files/specs/numeric/gft32.t27 | 55 + .../public/t27/files/specs/numeric/gft4.t27 | 55 + .../public/t27/files/specs/numeric/gft512.t27 | 55 + .../public/t27/files/specs/numeric/gft64.t27 | 55 + .../public/t27/files/specs/numeric/gft8.t27 | 55 + .../t27/files/specs/numeric/gfternary.t27 | 384 ++ .../t27/files/specs/numeric/golden_sieve.t27 | 546 ++ .../specs/numeric/goldenfloat_family.t27 | 212 +- .../files/specs/numeric/lucas_accumulator.t27 | 137 + .../t27/files/specs/numeric/phi_ratio.t27 | 169 +- .../specs/numeric/posit_ladder_control.t27 | 140 + .../public/t27/files/specs/numeric/tf3.t27 | 106 +- .../t27/files/specs/numeric/tnf1024.t27 | 61 + .../public/t27/files/specs/numeric/tnf128.t27 | 61 + .../public/t27/files/specs/numeric/tnf16.t27 | 72 + .../public/t27/files/specs/numeric/tnf17.t27 | 366 ++ .../public/t27/files/specs/numeric/tnf256.t27 | 61 + .../public/t27/files/specs/numeric/tnf32.t27 | 43 + .../public/t27/files/specs/numeric/tnf4.t27 | 47 + .../public/t27/files/specs/numeric/tnf512.t27 | 61 + .../public/t27/files/specs/numeric/tnf64.t27 | 61 + .../public/t27/files/specs/numeric/tnf8.t27 | 42 + .../specs/numeric/trinity_numeric_surface.t27 | 6 +- .../specs/physics/chimera_best_gamma.t27 | 5 +- .../t27/files/specs/physics/e8_lqg_bridge.t27 | 44 +- .../files/specs/physics/formula_registry.t27 | 212 - .../files/specs/physics/gamma-conflict.t27 | 151 +- .../files/specs/physics/gamma_conjecture.t27 | 22 +- .../files/specs/physics/hslm_benchmark.t27 | 8 +- .../t27/files/specs/physics/lqg_cs_bridge.t27 | 54 +- .../t27/files/specs/physics/lqg_entropy.t27 | 40 +- .../files/specs/physics/p2_brain_physics.t27 | 14 +- .../files/specs/physics/pellis-formulas.t27 | 2 +- .../t27/files/specs/physics/quantum.t27 | 64 +- .../specs/physics/sacred_verification.t27 | 164 +- .../files/specs/physics/su2_chern_simons.t27 | 10 +- .../physics/zamolodchikov_4d_conjecture.t27 | 8 +- .../public/t27/files/specs/pins/parser.t27 | 2 +- .../t27/files/specs/pipeline/e2e_test.t27 | 17 +- .../files/specs/portable/relay_observer.t27 | 3 +- .../t27/files/specs/provider/stream.t27 | 6 +- .../t27/files/specs/queen/brain_summaries.t27 | 52 +- .../public/t27/files/specs/queen/lotus.t27 | 129 +- .../files/specs/rings/ring_103_phi_sgd.t27 | 65 + .../t27/files/specs/sacred/cosmology.t27 | 3 - .../t27/files/specs/sacred/dark_matter.t27 | 5 +- .../public/t27/files/specs/sacred/gravity.t27 | 3 - .../t27/files/specs/sacred/monopoles.t27 | 3 - .../public/t27/files/specs/sacred/quantum.t27 | 3 - .../files/specs/sacred/quantum_gravity.t27 | 5 +- .../files/specs/sacred/sacred_constants.t27 | 5 +- .../files/specs/sacred/sacred_governance.t27 | 11 +- .../files/specs/sacred/sacred_identity.t27 | 5 +- .../files/specs/sacred/superconductivity.t27 | 3 - .../public/t27/files/specs/sandbox/health.t27 | 11 +- .../t27/files/specs/sandbox/modules.t27 | 7 +- .../files/specs/sandbox/session_timeout.t27 | 16 +- .../t27/files/specs/server/agent-runner.t27 | 52 +- .../public/t27/files/specs/server/api.t27 | 24 +- .../public/t27/files/specs/server/http.t27 | 4 +- .../public/t27/files/specs/server/mdns.t27 | 2 +- .../public/t27/files/specs/server/project.t27 | 34 +- .../t27/files/specs/server/provider.t27 | 24 +- .../public/t27/files/specs/server/routes.t27 | 6 +- .../public/t27/files/specs/server/session.t27 | 66 +- .../public/t27/files/specs/server/sse.t27 | 4 +- .../public/t27/files/specs/server/vm.t27 | 26 +- .../t27/files/specs/shell/environment.t27 | 26 +- .../public/t27/files/specs/shell/process.t27 | 22 +- .../public/t27/files/specs/shell/schema.t27 | 34 +- .../public/t27/files/specs/storage/kv.t27 | 14 +- .../public/t27/files/specs/storage/lock.t27 | 18 +- .../t27/files/specs/storage/migrate.t27 | 41 +- .../public/t27/files/specs/storage/schema.t27 | 30 +- .../public/t27/files/specs/sync/index.t27 | 2 +- .../specs/system/unified-agent-operations.t27 | 180 + .../specs/ternary/activation_quantizer.t27 | 33 + .../public/t27/files/specs/ternary/bigint.t27 | 21 +- .../t27/files/specs/ternary/bitnet_layer.t27 | 59 + .../files/specs/ternary/bitnet_majority.t27 | 65 + .../t27/files/specs/ternary/bitnet_mlp.t27 | 72 + .../t27/files/specs/ternary/bitnet_mlp3.t27 | 47 + .../t27/files/specs/ternary/bitnet_neuron.t27 | 57 + .../specs/ternary/bitnet_neuron_nchunk.t27 | 71 + .../files/specs/ternary/clocked_counter.t27 | 29 + .../files/specs/ternary/comb_bitnet_layer.t27 | 62 + .../specs/ternary/comb_bitnet_neuron.t27 | 53 + .../files/specs/ternary/comb_ternary_dot.t27 | 43 + .../t27/files/specs/ternary/gft_add_rne.t27 | 66 + .../t27/files/specs/ternary/gft_argmax4.t27 | 51 + .../t27/files/specs/ternary/gft_axpy.t27 | 126 + .../files/specs/ternary/gft_bitnet_neuron.t27 | 95 + .../files/specs/ternary/gft_classifier4.t27 | 145 + .../t27/files/specs/ternary/gft_classify.t27 | 119 + .../t27/files/specs/ternary/gft_classify3.t27 | 139 + .../t27/files/specs/ternary/gft_dot2.t27 | 75 + .../t27/files/specs/ternary/gft_dot2_rne.t27 | 84 + .../t27/files/specs/ternary/gft_dot4.t27 | 73 + .../t27/files/specs/ternary/gft_dot4_rne.t27 | 72 + .../t27/files/specs/ternary/gft_dot8.t27 | 76 + .../t27/files/specs/ternary/gft_exp2.t27 | 67 + .../t27/files/specs/ternary/gft_hidden2.t27 | 141 + .../t27/files/specs/ternary/gft_layer2.t27 | 76 + .../t27/files/specs/ternary/gft_layer3.t27 | 105 + .../t27/files/specs/ternary/gft_layer4.t27 | 107 + .../t27/files/specs/ternary/gft_log2.t27 | 98 + .../t27/files/specs/ternary/gft_logistic.t27 | 135 + .../t27/files/specs/ternary/gft_madd.t27 | 127 + .../t27/files/specs/ternary/gft_mlp2.t27 | 110 + .../t27/files/specs/ternary/gft_mlp3.t27 | 128 + .../t27/files/specs/ternary/gft_mul_rne.t27 | 55 + .../files/specs/ternary/gft_neuron_full.t27 | 98 + .../t27/files/specs/ternary/gft_nll.t27 | 102 + .../t27/files/specs/ternary/gft_recip.t27 | 40 + .../t27/files/specs/ternary/gft_relu.t27 | 24 + .../t27/files/specs/ternary/gft_sadd.t27 | 112 + .../t27/files/specs/ternary/gft_sgd_step.t27 | 119 + .../files/specs/ternary/gft_signed_dot4.t27 | 96 + .../files/specs/ternary/gft_signed_mac.t27 | 132 + .../t27/files/specs/ternary/gft_smul.t27 | 113 + .../t27/files/specs/ternary/gft_softmax4.t27 | 180 + .../files/specs/ternary/gft_softmax_grad4.t27 | 181 + .../t27/files/specs/ternary/gft_train1.t27 | 122 + .../t27/files/specs/ternary/gft_train2.t27 | 122 + .../files/specs/ternary/gft_train2relu.t27 | 136 + .../t27/files/specs/ternary/gft_xorbp.t27 | 150 + .../t27/files/specs/ternary/gft_xorbp2.t27 | 159 + .../t27/files/specs/ternary/gft_xornet.t27 | 136 + .../t27/files/specs/ternary/gft_xorpercep.t27 | 130 + .../files/specs/ternary/gft_xorpercep3.t27 | 148 + .../files/specs/ternary/gft_xorpercep4.t27 | 148 + .../t27/files/specs/ternary/gft_xortrain.t27 | 143 + .../t27/files/specs/ternary/hybrid_bigint.t27 | 2 +- .../specs/ternary/stream_ternary_mac.t27 | 52 + .../specs/ternary/ternary_full_adder.t27 | 78 + .../t27/files/specs/ternary/ternary_mac.t27 | 45 + .../specs/ternary/ternary_ripple_adder.t27 | 89 + .../t27/files/specs/ternary/ternary_xor.t27 | 78 + .../t27/files/specs/test_framework/core.t27 | 16 +- .../test_framework/graph_drift_detection.t27 | 26 +- .../test_framework/property_test_template.t27 | 26 +- .../t27/files/specs/test_framework/runner.t27 | 14 +- .../test_framework/verilog_bench_harness.t27 | 26 +- .../t27/files/specs/tools/mcp_protocol.t27 | 194 + .../public/t27/files/specs/tools/registry.t27 | 26 +- .../public/t27/files/specs/tools/schema.t27 | 42 +- .../specs/tools/tri_to_t27_converter.t27 | 21 +- .../t27/files/specs/tri/agent/agent_run.t27 | 3 - .../t27/files/specs/tri/agent/agents.t27 | 5 +- .../specs/tri/agent/autonomous_lifecycle.t27 | 17 +- .../specs/tri/agent/autonomous_universe.t27 | 3 - .../files/specs/tri/agent/eternal_monitor.t27 | 11 +- .../specs/tri/agent/experience_hooks.t27 | 5 +- .../files/specs/tri/agent/faculty_board.t27 | 15 +- .../specs/tri/agent/governance_agent.t27 | 35 +- .../t27/files/specs/tri/agent/handoff.t27 | 19 +- .../t27/files/specs/tri/agent/memory.t27 | 5 +- .../files/specs/tri/agent/swarm_agents.t27 | 43 +- .../t27/files/specs/tri/collections/array.t27 | 209 +- .../files/specs/tri/collections/bitmap.t27 | 105 +- .../files/specs/tri/collections/bitset.t27 | 28 +- .../files/specs/tri/collections/bitvector.t27 | 93 +- .../t27/files/specs/tri/collections/btree.t27 | 64 +- .../specs/tri/collections/circular_buffer.t27 | 72 +- .../files/specs/tri/collections/context.t27 | 3 - .../t27/files/specs/tri/collections/deque.t27 | 74 +- .../files/specs/tri/collections/either.t27 | 66 +- .../files/specs/tri/collections/interval.t27 | 67 +- .../specs/tri/collections/linked_list.t27 | 216 +- .../t27/files/specs/tri/collections/list.t27 | 2 +- .../specs/tri/collections/lockfree_stack.t27 | 48 +- .../t27/files/specs/tri/collections/lru.t27 | 16 +- .../files/specs/tri/collections/lru_cache.t27 | 34 +- .../t27/files/specs/tri/collections/map.t27 | 65 +- .../t27/files/specs/tri/collections/maybe.t27 | 63 +- .../files/specs/tri/collections/namespace.t27 | 42 +- .../files/specs/tri/collections/option.t27 | 57 +- .../specs/tri/collections/priority_queue.t27 | 73 +- .../t27/files/specs/tri/collections/queue.t27 | 42 +- .../files/specs/tri/collections/result.t27 | 66 +- .../specs/tri/collections/ring_buffer.t27 | 158 +- .../t27/files/specs/tri/collections/set.t27 | 18 +- .../files/specs/tri/collections/skip_list.t27 | 52 +- .../t27/files/specs/tri/collections/stack.t27 | 44 +- .../t27/files/specs/tri/collections/state.t27 | 14 +- .../t27/files/specs/tri/collections/tuple.t27 | 16 +- .../files/specs/tri/collections/variant.t27 | 43 +- .../t27/files/specs/tri/crypto/base32.t27 | 54 +- .../t27/files/specs/tri/crypto/base64.t27 | 85 +- .../t27/files/specs/tri/crypto/crypto.t27 | 12 +- .../public/t27/files/specs/tri/crypto/ecc.t27 | 73 +- .../public/t27/files/specs/tri/crypto/hex.t27 | 45 +- .../t27/files/specs/tri/crypto/hmac.t27 | 14 +- .../files/specs/tri/crypto/reed_solomon.t27 | 12 +- .../public/t27/files/specs/tri/crypto/rsa.t27 | 69 +- .../t27/files/specs/tri/crypto/sha256.t27 | 211 +- .../t27/files/specs/tri/encoding/bson.t27 | 46 +- .../t27/files/specs/tri/encoding/csv.t27 | 34 +- .../t27/files/specs/tri/encoding/html.t27 | 16 +- .../t27/files/specs/tri/encoding/json.t27 | 16 +- .../t27/files/specs/tri/encoding/markup.t27 | 32 +- .../t27/files/specs/tri/encoding/mime.t27 | 35 +- .../t27/files/specs/tri/encoding/msgpack.t27 | 71 +- .../t27/files/specs/tri/encoding/xml.t27 | 16 +- .../files/specs/tri/graph/bellman_ford.t27 | 10 +- .../t27/files/specs/tri/graph/dijkstra.t27 | 1 - .../files/specs/tri/graph/disjoint_set.t27 | 76 +- .../t27/files/specs/tri/graph/graph.t27 | 4 +- .../t27/files/specs/tri/graph/graph_bfs.t27 | 97 +- .../t27/files/specs/tri/graph/graph_dfs.t27 | 1 - .../t27/files/specs/tri/graph/prims_mst.t27 | 1 - .../specs/tri/graph/topological_sort.t27 | 1 - .../t27/files/specs/tri/io/compress.t27 | 40 +- .../t27/files/specs/tri/io/filesystem.t27 | 110 +- .../public/t27/files/specs/tri/io/fs.t27 | 28 +- .../public/t27/files/specs/tri/io/io.t27 | 51 +- .../public/t27/files/specs/tri/io/reader.t27 | 14 +- .../public/t27/files/specs/tri/io/writer.t27 | 16 +- .../t27/files/specs/tri/math/bezier.t27 | 90 +- .../t27/files/specs/tri/math/constants.t27 | 208 +- .../public/t27/files/specs/tri/math/math.t27 | 3 - .../t27/files/specs/tri/math/matrix.t27 | 96 +- .../t27/files/specs/tri/math/measurement.t27 | 3 - .../t27/files/specs/tri/math/polynomial.t27 | 74 +- .../t27/files/specs/tri/math/probability.t27 | 20 +- .../t27/files/specs/tri/math/statistics.t27 | 24 +- .../public/t27/files/specs/tri/net/async.t27 | 53 +- .../t27/files/specs/tri/net/async_stream.t27 | 66 +- .../t27/files/specs/tri/net/channel.t27 | 12 +- .../public/t27/files/specs/tri/net/cloud.t27 | 3 - .../public/t27/files/specs/tri/net/http.t27 | 122 +- .../public/t27/files/specs/tri/net/net.t27 | 46 +- .../public/t27/files/specs/tri/net/url.t27 | 69 +- .../files/specs/tri/pipeline/batch_runner.t27 | 8 +- .../t27/files/specs/tri/pipeline/builder.t27 | 24 +- .../specs/tri/pipeline/cloud_orchestrator.t27 | 3 - .../t27/files/specs/tri/pipeline/codegen.t27 | 3 - .../t27/files/specs/tri/pipeline/pipeline.t27 | 3 - .../specs/tri/pipeline/pipeline_parallel.t27 | 19 +- .../files/specs/tri/pipeline/spec_parser.t27 | 3 - .../files/specs/tri/pipeline/spec_writer.t27 | 5 +- .../t27/files/specs/tri/pipeline/workflow.t27 | 7 +- .../specs/tri/pipeline/workflow_executor.t27 | 3 - .../specs/tri/pipeline/workflow_parser.t27 | 3 - .../files/specs/tri/search/aho_corasick.t27 | 83 +- .../files/specs/tri/search/bloom_filter.t27 | 45 +- .../files/specs/tri/search/boyer_moore.t27 | 52 +- .../specs/tri/search/knuth_morris_pratt.t27 | 63 +- .../t27/files/specs/tri/search/match.t27 | 46 +- .../t27/files/specs/tri/search/pattern.t27 | 41 +- .../t27/files/specs/tri/search/rabin_karp.t27 | 57 +- .../t27/files/specs/tri/search/regex.t27 | 73 +- .../files/specs/tri/search/regex_advanced.t27 | 20 +- .../t27/files/specs/tri/search/search.t27 | 51 +- .../files/specs/tri/sort/counting_sort.t27 | 4 +- .../t27/files/specs/tri/sort/merge_sort.t27 | 8 +- .../t27/files/specs/tri/sort/quick_sort.t27 | 24 +- .../t27/files/specs/tri/sort/radix_sort.t27 | 40 +- .../public/t27/files/specs/tri/sort/sort.t27 | 38 +- .../t27/files/specs/tri/sort/tim_sort.t27 | 4 +- .../t27/files/specs/tri/trees/avl_tree.t27 | 30 +- .../t27/files/specs/tri/trees/b_tree.t27 | 82 +- .../files/specs/tri/trees/fenwick_tree.t27 | 96 +- .../t27/files/specs/tri/trees/kd_tree.t27 | 81 +- .../t27/files/specs/tri/trees/octree.t27 | 95 +- .../t27/files/specs/tri/trees/quadtree.t27 | 100 +- .../files/specs/tri/trees/red_black_tree.t27 | 32 +- .../t27/files/specs/tri/trees/rtree.t27 | 71 +- .../files/specs/tri/trees/segment_tree.t27 | 50 +- .../t27/files/specs/tri/trees/splay_tree.t27 | 30 +- .../files/specs/tri/trees/suffix_array.t27 | 61 +- .../public/t27/files/specs/tri/trees/tree.t27 | 83 +- .../public/t27/files/specs/tri/trees/trie.t27 | 59 +- .../public/t27/files/specs/tri/utils/args.t27 | 64 +- .../t27/files/specs/tri/utils/arrow_time.t27 | 5 +- .../t27/files/specs/tri/utils/bytes.t27 | 28 +- .../t27/files/specs/tri/utils/color.t27 | 77 +- .../t27/files/specs/tri/utils/colors.t27 | 3 - .../t27/files/specs/tri/utils/config.t27 | 65 +- .../t27/files/specs/tri/utils/error.t27 | 7 +- .../t27/files/specs/tri/utils/exit_codes.t27 | 27 +- .../public/t27/files/specs/tri/utils/help.t27 | 11 +- .../t27/files/specs/tri/utils/logger.t27 | 20 +- .../t27/files/specs/tri/utils/logging.t27 | 90 +- .../t27/files/specs/tri/utils/random.t27 | 98 +- .../t27/files/specs/tri/utils/string.t27 | 5 +- .../t27/files/specs/tri/utils/template.t27 | 45 +- .../t27/files/specs/tri/utils/terminal.t27 | 8 +- .../public/t27/files/specs/tri/utils/text.t27 | 16 +- .../public/t27/files/specs/tri/utils/time.t27 | 84 +- .../public/t27/files/specs/tri/utils/utf8.t27 | 70 +- .../t27/files/specs/tri/utils/version.t27 | 68 +- .../public/t27/files/specs/trinet/etx.t27 | 118 + .../t27/files/specs/trinity/build_graph.t27 | 85 + .../specs/trinity/capabilities/abi.c-api.t27 | 49 + .../trinity/capabilities/agent.daemons.t27 | 49 + .../trinity/capabilities/agent.phi-loop.t27 | 49 + .../trinity/capabilities/agent.tri-api.t27 | 49 + .../trinity/capabilities/api.http-server.t27 | 49 + .../trinity/capabilities/archive.legacy.t27 | 49 + .../trinity/capabilities/bench.suite.t27 | 49 + .../trinity/capabilities/bot.tri-bot.t27 | 49 + .../capabilities/catalog.spec-mirror.t27 | 49 + .../capabilities/catalog.world-scan.t27 | 49 + .../specs/trinity/capabilities/cli.tri.t27 | 49 + .../trinity/capabilities/convert.b2t.t27 | 49 + .../trinity/capabilities/examples.zig.t27 | 49 + .../trinity/capabilities/ext.vscode-swe.t27 | 49 + .../trinity/capabilities/fpga.in-repo.t27 | 49 + .../trinity/capabilities/lib.trinity.t27 | 49 + .../trinity/capabilities/llm.firebird.t27 | 49 + .../trinity/capabilities/llm.igla-chat.t27 | 49 + .../trinity/capabilities/mcp.needle-mcp.t27 | 49 + .../trinity/capabilities/mcp.trinity-mcp.t27 | 49 + .../trinity/capabilities/native.canvas.t27 | 49 + .../trinity/capabilities/native.node-gui.t27 | 49 + .../trinity/capabilities/native.queen-app.t27 | 49 + .../capabilities/node.trinity-node.t27 | 49 + .../capabilities/numeric.golden-float.t27 | 49 + .../trinity/capabilities/ops.deploy-infra.t27 | 49 + .../trinity/capabilities/ops.railway-cli.t27 | 49 + .../capabilities/pkg.vendored-cache.t27 | 49 + .../specs/trinity/capabilities/queen.lib.t27 | 49 + .../capabilities/registry.commands.t27 | 49 + .../capabilities/release.packaging.t27 | 49 + .../capabilities/research.nexus-docs.t27 | 49 + .../capabilities/research.programs.t27 | 49 + .../research.unreferenced-sources.t27 | 49 + .../trinity/capabilities/search.vsa-index.t27 | 49 + .../specs.t27-vendored-compiler.t27 | 49 + .../trinity/capabilities/specs.tri-corpus.t27 | 49 + .../capabilities/specs.vibee-corpus.t27 | 49 + .../capabilities/state.trinity-dir.t27 | 49 + .../specs/trinity/capabilities/test.graph.t27 | 49 + .../trinity/capabilities/tools.scripts.t27 | 49 + .../specs/trinity/capabilities/train.hslm.t27 | 49 + .../trinity/capabilities/training.targets.t27 | 49 + .../trinity/capabilities/tri27.programs.t27 | 49 + .../trinity/capabilities/tri27.toolchain.t27 | 49 + .../trinity/capabilities/vibee.compiler.t27 | 49 + .../trinity/capabilities/vsa.zig-hdc.t27 | 49 + .../trinity/capabilities/web.docsite.t27 | 49 + .../trinity/capabilities/web.queen-web.t27 | 49 + .../specs/trinity/capabilities/web.site.t27 | 49 + .../files/specs/trinity/compiler_matrix.t27 | 87 + .../t27/files/specs/trinity/project.t27 | 89 + .../t27/files/specs/vm/jit_semantics.t27 | 2 +- .../public/t27/files/specs/vm/trinity_vm.t27 | 162 + .../t27/files/specs/vsa/jones_polynomial.t27 | 78 +- .../public/t27/files/specs/vsa/ops.t27 | 74 +- .../public/t27/files/specs/vsa/packed_vsa.t27 | 12 +- .../public/t27/files/specs/vsa/sdk.t27 | 33 +- .../t27/files/specs/vsa/sequence_hdc.t27 | 2 +- .../t27/files/specs/vsa/similarity_search.t27 | 40 +- .../t27/files/specs/vsa/trinity_compat.t27 | 258 + .../public/t27/files/specs/vsa/vsa_core.t27 | 18 +- .../public/t27/files/test_highlight.t27 | 4 +- .../t27/files/tests/comprehensive_suite.t27 | 2 +- .../specs/numeric/catalog_coverage_delta.t27 | 2 +- .../specs/numeric/script_tree_sweep.t27 | 6 +- .../specs/fpga/avs_controller_48.t27 | 0 .../specs/fpga/avs_controller_96.t27 | 0 .../specs/fpga/avs_reconf.t27 | 0 .../specs/fpga/dfs_gate.t27 | 0 .../specs/fpga/drowsy_ret.t27 | 0 .../specs/fpga/fbb_active_path.t27 | 0 .../specs/fpga/fp8_e4m3.t27 | 0 .../specs/fpga/fp8_e5m2.t27 | 0 .../specs/fpga/gf128.t27 | 0 .../specs/fpga/gf16_to_fp16.t27 | 0 .../specs/fpga/gf16_to_posit16.t27 | 0 .../specs/fpga/gf256.t27 | 0 .../specs/fpga/gf32_to_fp32.t27 | 0 .../specs/fpga/gf64.t27 | 0 .../specs/fpga/holo_mux_x4.t27 | 0 .../specs/fpga/int4.t27 | 0 .../specs/fpga/int8.t27 | 0 .../specs/fpga/lane_l_precheck.t27 | 0 .../specs/fpga/lut_npu_81_entry.t27 | 0 .../specs/fpga/nf4.t27 | 0 .../specs/fpga/null_pe.t27 | 0 .../specs/fpga/posit16.t27 | 0 .../specs/fpga/purkinje_thermal_gate.t27 | 0 .../specs/fpga/sparse_mask.t27 | 0 .../specs/fpga/sparse_skip.t27 | 0 .../specs/fpga/spec_exit.t27 | 0 .../specs/fpga/stoch_round.t27 | 0 .../specs/fpga/subth_clk.t27 | 0 .../specs/numeric/binary16.t27 | 0 .../specs/numeric/formats.t27 | 0 .../specs/numeric/gf12.t27 | 0 .../specs/numeric/gf128.t27 | 0 .../specs/numeric/gf16.t27 | 0 .../specs/numeric/gf20.t27 | 0 .../specs/numeric/gf24.t27 | 0 .../specs/numeric/gf256.t27 | 0 .../specs/numeric/gf32.t27 | 0 .../specs/numeric/gf4.t27 | 0 .../specs/numeric/gf64.t27 | 0 .../specs/numeric/gf8.t27 | 0 .../specs/numeric/goldenfloat_family.t27 | 0 .../specs/numeric/int4.t27 | 0 .../specs/numeric/int8.t27 | 0 .../specs/numeric/nf4.t27 | 0 .../specs/numeric/phi_ratio.t27 | 0 .../specs/numeric/tri_net_formats.t27 | 0 .../specs/agents/turbobaby.t27 | 137 + .../specs/turbobaby/availability.t27 | 570 ++ .../specs/turbobaby/bike_catalog.t27 | 630 ++ .../specs/turbobaby/catalog_api.t27 | 308 + .../specs/turbobaby/commerce.t27 | 411 ++ .../specs/turbobaby/deposit_tiers.t27 | 687 +++ .../specs/turbobaby/market_profile.t27 | 330 ++ .../specs/turbobaby/pricing_honesty.t27 | 421 ++ .../specs/turbobaby/publication.t27 | 253 + .../specs/turbobaby/rental_terms.t27 | 496 ++ .../specs/turbobaby/ride_game.t27 | 547 ++ .../specs/turbobaby/ride_runtime.t27 | 274 + apps/website/public/t27/manifest.json | 2 +- apps/website/public/t27/shared-core.json | 2 +- apps/website/public/t27/t27_compiler.wasm | Bin apps/website/public/t27/universe-atlas.json | 2 +- apps/website/public/tools/spec-tools.json | 2 +- apps/website/qa/language-exceptions.json | 547 +- apps/website/qa/tools-spec-contract.mjs | 7 +- apps/website/scripts/catalog-work-report.mjs | 162 + apps/website/scripts/sync-t27-specs.mjs | 228 +- apps/website/src/components/SpecChipView.tsx | 10 +- apps/website/src/index.css | 18 +- apps/website/src/lib/t27Compiler.ts | 8 + apps/website/src/pages/SpecExplorer.tsx | 47 +- 814 files changed, 111185 insertions(+), 9570 deletions(-) create mode 100644 apps/website/public/t27/files/bootstrap/src/codegen_python.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_01.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_02.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_03.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_04.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_05.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_06.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_07.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_08.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_09.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_10.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_11.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_12.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_13.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_14.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_15.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_01_latency_bound.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_02_match_arms.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_03_multiline_array.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_04_fn_signature.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_05_raw_string.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_06_intact_field.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_01_empty_params.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_02_trailing_comma.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_03_type_expr_param.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_04_constrained_param.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_05_enum_rhs.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_06_value_rhs.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_07_no_rhs.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_01_single_param.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_02_two_params.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_03_three_params.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_04_no_pub.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_05_no_semicolon.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_06_alongside_plain.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/eof_generic.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/eof_hazard.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/field_swallow.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/nested_types.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/semicolon_phantom.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/tuple_type.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/unbalanced.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/adapters_declared.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/arrays.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/clocked_state.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/control_flow.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/enums.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/errors.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/functions.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/imports.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/invariants.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/module_state.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_bodyless_fn.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_dropped_module.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_false_assert.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_invalid_annotation.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_unresolved_import.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/scalars.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/strings.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/structs.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0006_adamw_block.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0006_array_then_when.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0006_forged_brace_negative.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0006_typed_forms_alive.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0007_and_not_folded.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0007_bare_call_given.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0007_bench_measure_target.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0007_gherkin_and_roles.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0008_ptr_split_negative.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0008_semicolonless_const_pair.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0009_no_prose_in_tests.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0009_two_clauses_one_line.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0011_in_membership.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0012_p2_coltie_module_const.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0012_statement_clauses.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0013_kf.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0013_lv.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0013_un.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0013_vn.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0014_comprehension_suffix.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/0014_inline_lambda.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/bdd_probe.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/cap_ok.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/cap_test.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/diff_probe.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/expr_probe.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/greedy_probe.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/r_combo.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/r_mulassign.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/r_op.t27 create mode 100644 apps/website/public/t27/files/bootstrap/tests/goldring/repro_range.t27 create mode 100644 apps/website/public/t27/files/specs/api/c_abi.t27 create mode 100644 apps/website/public/t27/files/specs/automation/agent-provider-chain.t27 create mode 100644 apps/website/public/t27/files/specs/automation/crm-client-ownership.t27 create mode 100644 apps/website/public/t27/files/specs/automation/crm-client-workspace.t27 create mode 100644 apps/website/public/t27/files/specs/automation/crm-duet.t27 create mode 100644 apps/website/public/t27/files/specs/automation/crm-lead-magnet.t27 create mode 100644 apps/website/public/t27/files/specs/automation/crm-sellers.t27 create mode 100644 apps/website/public/t27/files/specs/automation/inngest-probe-suite.t27 create mode 100644 apps/website/public/t27/files/specs/automation/leela-agent-link.t27 create mode 100644 apps/website/public/t27/files/specs/boards/wukong_v1.t27 delete mode 100644 apps/website/public/t27/files/specs/docs/README.md create mode 100644 apps/website/public/t27/files/specs/fpga/bpsk.t27 create mode 100644 apps/website/public/t27/files/specs/fpga/ternary_link.t27 delete mode 100644 apps/website/public/t27/files/specs/functions/README.md delete mode 100644 apps/website/public/t27/files/specs/i18n/README.md create mode 100644 apps/website/public/t27/files/specs/igla/coder/_tmp_pipeline_import.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/arch.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/bench_proxy.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/benchmark.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/dataset.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/eval.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/pipeline.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/prm.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/tokenizer.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/training.t27 create mode 100644 apps/website/public/t27/files/specs/igla/coder/weights.t27 create mode 100644 apps/website/public/t27/files/specs/igla/evaluation/multi_lang_harness.t27 create mode 100644 apps/website/public/t27/files/specs/igla/integration/publication.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/adder_tree.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/backend.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/bram_weights.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/cordic.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/cordic_fixed.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/cordic_top.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/eda.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/formal.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/gemm.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/mvp_ternary_classifier.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/opcodes.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/phi_accumulator_growth.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/phi_gain_freedom.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/phi_weights.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/rtl.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/systolic_array.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/systolic_ternary.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/ternary_dot_sw.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/ternary_gemm.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/ternary_inference.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/ternary_lut_table.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/ternary_mac.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/ternary_mac_group.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/ternary_node.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/unit_weights_node.t27 create mode 100644 apps/website/public/t27/files/specs/igla/race/yosys.t27 create mode 100644 apps/website/public/t27/files/specs/igla/training/low_bit_ternary.t27 create mode 100644 apps/website/public/t27/files/specs/igla/training/pilot_pretraining.t27 create mode 100644 apps/website/public/t27/files/specs/igla/training/roadmap.t27 create mode 100644 apps/website/public/t27/files/specs/igla/training/scale_up.t27 create mode 100644 apps/website/public/t27/files/specs/igla/w535_bounded_while_module.t27 create mode 100644 apps/website/public/t27/files/specs/isa/tri27_bytecode.t27 create mode 100644 apps/website/public/t27/files/specs/isa/tri27_machine.t27 create mode 100644 apps/website/public/t27/files/specs/memory/tmem/bridge.t27 create mode 100644 apps/website/public/t27/files/specs/memory/tmem/conformance.t27 create mode 100644 apps/website/public/t27/files/specs/memory/tmem/edge_demo.t27 create mode 100644 apps/website/public/t27/files/specs/memory/tmem/stream_compute.t27 create mode 100644 apps/website/public/t27/files/specs/memory/tmem/tensorpack.t27 create mode 100644 apps/website/public/t27/files/specs/memory/tmem/types.t27 create mode 100644 apps/website/public/t27/files/specs/ml/igla_champion_capsule.t27 create mode 100644 apps/website/public/t27/files/specs/ml/optimizer/race_config.t27 create mode 100644 apps/website/public/t27/files/specs/nn/gla.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf1024.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf128.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf16.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf256.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf32.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf512.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf64.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/bnf8.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/e8m0.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/formats_catalog.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf10.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf1024.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf128.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf14.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf256.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf48.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf512.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf6.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf64.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gf96.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft1024.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft128.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft16.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft256.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft32.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft4.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft512.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft64.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gft8.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/gfternary.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/golden_sieve.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/lucas_accumulator.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/posit_ladder_control.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf1024.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf128.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf16.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf17.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf256.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf32.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf4.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf512.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf64.t27 create mode 100644 apps/website/public/t27/files/specs/numeric/tnf8.t27 delete mode 100644 apps/website/public/t27/files/specs/physics/formula_registry.t27 create mode 100644 apps/website/public/t27/files/specs/rings/ring_103_phi_sgd.t27 create mode 100644 apps/website/public/t27/files/specs/system/unified-agent-operations.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/activation_quantizer.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/bitnet_layer.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/bitnet_majority.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/bitnet_mlp.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/bitnet_mlp3.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/bitnet_neuron.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/bitnet_neuron_nchunk.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/clocked_counter.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/comb_bitnet_layer.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/comb_bitnet_neuron.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/comb_ternary_dot.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_add_rne.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_argmax4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_axpy.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_bitnet_neuron.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_classifier4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_classify.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_classify3.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_dot2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_dot2_rne.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_dot4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_dot4_rne.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_dot8.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_exp2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_hidden2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_layer2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_layer3.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_layer4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_log2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_logistic.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_madd.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_mlp2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_mlp3.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_mul_rne.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_neuron_full.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_nll.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_recip.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_relu.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_sadd.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_sgd_step.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_signed_dot4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_signed_mac.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_smul.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_softmax4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_softmax_grad4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_train1.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_train2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_train2relu.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_xorbp.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_xorbp2.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_xornet.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_xorpercep.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_xorpercep3.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_xorpercep4.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/gft_xortrain.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/stream_ternary_mac.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/ternary_full_adder.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/ternary_mac.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/ternary_ripple_adder.t27 create mode 100644 apps/website/public/t27/files/specs/ternary/ternary_xor.t27 create mode 100644 apps/website/public/t27/files/specs/tools/mcp_protocol.t27 create mode 100644 apps/website/public/t27/files/specs/trinet/etx.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/build_graph.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/abi.c-api.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/agent.daemons.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/agent.phi-loop.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/agent.tri-api.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/api.http-server.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/archive.legacy.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/bench.suite.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/bot.tri-bot.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/catalog.spec-mirror.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/catalog.world-scan.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/cli.tri.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/convert.b2t.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/examples.zig.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/ext.vscode-swe.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/fpga.in-repo.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/lib.trinity.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/llm.firebird.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/llm.igla-chat.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/mcp.needle-mcp.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/mcp.trinity-mcp.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/native.canvas.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/native.node-gui.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/native.queen-app.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/node.trinity-node.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/numeric.golden-float.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/ops.deploy-infra.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/ops.railway-cli.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/pkg.vendored-cache.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/queen.lib.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/registry.commands.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/release.packaging.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/research.nexus-docs.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/research.programs.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/research.unreferenced-sources.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/search.vsa-index.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/specs.t27-vendored-compiler.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/specs.tri-corpus.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/specs.vibee-corpus.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/state.trinity-dir.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/test.graph.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/tools.scripts.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/train.hslm.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/training.targets.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/tri27.programs.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/tri27.toolchain.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/vibee.compiler.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/vsa.zig-hdc.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/web.docsite.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/web.queen-web.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/capabilities/web.site.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/compiler_matrix.t27 create mode 100644 apps/website/public/t27/files/specs/trinity/project.t27 create mode 100644 apps/website/public/t27/files/specs/vm/trinity_vm.t27 create mode 100644 apps/website/public/t27/files/specs/vsa/trinity_compat.t27 rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/avs_controller_48.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/avs_controller_96.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/avs_reconf.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/dfs_gate.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/drowsy_ret.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/fbb_active_path.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/fp8_e4m3.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/fp8_e5m2.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/gf128.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/gf16_to_fp16.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/gf16_to_posit16.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/gf256.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/gf32_to_fp32.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/gf64.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/holo_mux_x4.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/int4.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/int8.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/lane_l_precheck.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/lut_npu_81_entry.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/nf4.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/null_pe.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/posit16.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/purkinje_thermal_gate.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/sparse_mask.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/sparse_skip.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/spec_exit.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/stoch_round.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/fpga/subth_clk.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/binary16.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/formats.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf12.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf128.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf16.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf20.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf24.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf256.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf32.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf4.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf64.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/gf8.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/goldenfloat_family.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/int4.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/int8.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/nf4.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/phi_ratio.t27 (100%) rename apps/website/public/t27/files/{chips/euler => tt-trinity-euler}/specs/numeric/tri_net_formats.t27 (100%) create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/agents/turbobaby.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/availability.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/bike_catalog.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/catalog_api.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/commerce.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/market_profile.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/publication.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/rental_terms.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_game.t27 create mode 100644 apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_runtime.t27 mode change 100755 => 100644 apps/website/public/t27/t27_compiler.wasm create mode 100644 apps/website/scripts/catalog-work-report.mjs diff --git a/.github/workflows/t27-world-scan.yml b/.github/workflows/t27-world-scan.yml index f01760a850..76fe27dc66 100644 --- a/.github/workflows/t27-world-scan.yml +++ b/.github/workflows/t27-world-scan.yml @@ -11,10 +11,15 @@ # signal-health-self.yml commits its numbers. # # Publishing stays with deploy-site.yml, manual on purpose: content is approved -# before it goes out. The five founding sources are not refreshed here either; -# they come from a local t27 checkout that carries the teaching course on a -# branch not yet on t27 master (see sync-t27-specs.mjs), and a re-vendor from -# GitHub alone would delete it from the site. +# before it goes out. +# +# The five founding sources ARE refreshed here now. They used to be excluded +# because sync-t27-specs.mjs read a working copy at /Users/playom/t27, which no +# runner has -- so the repository holding two thirds of the corpus was the one +# repository this job could not touch, and gHashTag/t27 drifted 540 specs behind +# its own master while this job ran nightly. It reads GitHub now, and the +# teaching course, which lives on a branch never merged to master, comes in +# through a named overlay ref that contributes only the paths master lacks. name: t27 world scan on: @@ -24,6 +29,7 @@ on: permissions: contents: write + pull-requests: write jobs: scan: @@ -50,6 +56,13 @@ jobs: GH_TOKEN: ${{ github.token }} run: | set -euo pipefail + # The founding sources first, because this writes the manifest the + # vendor step then merges discovered worlds into. It used to be left + # out of this job on the grounds that it read a working copy on one + # developer's laptop -- which it no longer does, and which is why + # gHashTag/t27 sat 540 specs behind its own master while a daily job + # claimed to keep the catalog current. + node scripts/sync-t27-specs.mjs npm run discover -- scan --out "$RUNNER_TEMP/discovery.json" npm run discover -- vendor --report "$RUNNER_TEMP/discovery.json" npm run core -- index @@ -79,9 +92,19 @@ jobs: npm run check:tools npm run check:docs - - name: Commit if the catalog changed + # Ruleset 23148303 ("T27 mandatory work report") requires the status check + # "T27 work report" on refs/heads/main and lists no bypass actors, so the + # `git push` this step used to end with is rejected with GH013 -- the same + # answer a person gets. The way in is the way everyone else takes: a branch, + # a pull request, and a report the validator accepts. The report is + # generated from the artifacts this run just wrote (scripts/ + # catalog-work-report.mjs), so it states the refresh that happened rather + # than a template. + - name: Open or update the catalog pull request + env: + GH_TOKEN: ${{ github.token }} run: | - set -uo pipefail + set -euo pipefail git config user.name 't27 world scan' git config user.email 'admin@t27.ai' git add public/t27 public/skills public/crons public/agents public/tools public/functions public/docs qa/language-exceptions.json @@ -91,5 +114,27 @@ jobs: fi N=$(node -e "const m=require('./public/t27/manifest.json');console.log(m.repos.length+' repositories, '+m.specCount+' specs')") git commit -q -m "t27 worlds: refresh the catalog ($N)" - git push -q - echo "- committed: $N" >> "$GITHUB_STEP_SUMMARY" + BRANCH=bot/t27-world-scan + # The bot's own branch, and only ever this job writes it -- so the + # lease is against the copy this run started from, not against a human. + git push -q --force-with-lease origin "HEAD:refs/heads/$BRANCH" + SHA=$(git rev-parse HEAD) + node scripts/catalog-work-report.mjs --head-sha "$SHA" --out "$RUNNER_TEMP/catalog-report.md" + PR=$(gh pr list --head "$BRANCH" --base main --state open --json number --jq '.[0].number // empty') + if [ -n "$PR" ]; then + # Yesterday's refresh is still open: move it to today's commit and + # today's numbers rather than opening a second one beside it. + gh pr edit "$PR" --title "t27 worlds: refresh the catalog ($N)" --body-file "$RUNNER_TEMP/catalog-report.md" + else + gh pr create --base main --head "$BRANCH" \ + --title "t27 worlds: refresh the catalog ($N)" \ + --body-file "$RUNNER_TEMP/catalog-report.md" + PR=$(gh pr list --head "$BRANCH" --base main --state open --json number --jq '.[0].number // empty') + fi + echo "- pushed $BRANCH and opened/updated PR #$PR: $N" >> "$GITHUB_STEP_SUMMARY" + # Auto-merge lands it once "T27 work report" goes green. Without the + # repository setting it stays an open pull request for a person to + # merge, which is a worse outcome but not a failed run. + if ! gh pr merge "$PR" --squash --auto; then + echo "- auto-merge unavailable; PR #$PR is open and waiting" >> "$GITHUB_STEP_SUMMARY" + fi diff --git a/apps/website/public/agents/spec-agents.json b/apps/website/public/agents/spec-agents.json index 05d8cc3d5a..43c60e9a82 100644 --- a/apps/website/public/agents/spec-agents.json +++ b/apps/website/public/agents/spec-agents.json @@ -1 +1 @@ -{"agents":[{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Bull - leader, primary force","CLARA_ROLE":"TA1: AR Architecture Design - designs AR module architecture, ensures composability","DOMAIN":"Architecture / ADR / SOUL","ENABLED":true,"ENTRY_INVARIANT":"SOUL.md exists, is ASCII-only, and defines L1-L7 laws","EXIT_INVARIANT":"All ADRs reviewed, consistent with constitution, no conflicts","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/A","KEY_FILES":["SOUL.md","architecture/ADR-*.md","architecture/CANON_DE_ZIGFICATION.md"],"KIND":"agent","LAYER":"Archetypal","LETTER":"A","LETTER_NAME":"Alpha","NAME":"Alpha (Architecture)","ORDINAL":1,"REGISTER":"R0","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/A","inSpecCorpus":false,"letter":"A","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_a","name":{"en":"Alpha (Architecture)","ru":"Альфа (Архитектура)"},"ordinal":1,"sha256":"0bcd805f2c789604a16712f910a652c698fe0b16a2c26ccb7a962a764e379943","skills":[],"specPath":"specs/agents/a.t27","summary":{"en":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","ru":"Архитектура / ADR / SOUL. SOUL.md — первопричина, а ADR — конституция системы."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"House - container, dwelling","CLARA_ROLE":"","DOMAIN":"Build / Pipeline","ENABLED":true,"ENTRY_INVARIANT":"Build system is clean, no stale artifacts","EXIT_INVARIANT":"All tests pass, CI pipeline is green","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/B","KEY_FILES":["build.tri","src/tri/pipeline/"],"KIND":"agent","LAYER":"Archetypal","LETTER":"B","LETTER_NAME":"Beta","NAME":"Beta (Build)","ORDINAL":2,"REGISTER":"R1","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/B","inSpecCorpus":false,"letter":"B","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_b","name":{"en":"Beta (Build)","ru":"Бета (Сборка)"},"ordinal":2,"sha256":"61d170317eadcdfe028549190c431b633d93cb5dc2dea7fdc1c041c71154b34f","skills":[],"specPath":"specs/agents/b.t27","summary":{"en":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","ru":"Сборка / конвейер. build.tri — дом спецификаций, а конвейер — его жилище."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Camel - carrier across borders","CLARA_ROLE":"TA1: AR Language Implementation - implements AR language features in t27 compiler","DOMAIN":"Compiler Core / AR Language","ENABLED":true,"ENTRY_INVARIANT":"Parser can handle all AR syntax (ternary logic, rules, proofs)","EXIT_INVARIANT":"Generated code compiles, AST is valid","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/C","KEY_FILES":["t27/compiler/parser/","bootstrap/src/compiler.rs","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"C","LETTER_NAME":"Gamma","NAME":"Gamma (Compiler Core)","ORDINAL":3,"REGISTER":"R2","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","TOOLS":["tri/gen"],"TOOLS_NOTE":".claude/agents/agent-c-compiler.md:40 names tri gen (trigger On tri gen command, line 7). Line 41 names tri seal, which is not a tri command at this commit (tri cell seal is not bound here)."},"health":"ok","id":"t27/C","inSpecCorpus":false,"letter":"C","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_c","name":{"en":"Gamma (Compiler Core)","ru":"Гамма (Ядро компилятора)"},"ordinal":3,"sha256":"89402274898f607a2be4d505f8925c76802acfe2683739605f8413604530ff23","skills":[],"specPath":"specs/agents/c.t27","summary":{"en":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","ru":"Ядро компилятора / язык AR. Компилятор переносит текст через границы: от спеки к сгенерированному коду."},"tools":[{"id":"tri/gen","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Door - transition between worlds","CLARA_ROLE":"","DOMAIN":"De-Zigfication / Migration","ENABLED":true,"ENTRY_INVARIANT":"Legacy Zig modules are catalogued and mapped","EXIT_INVARIANT":"All AR specs are in .t27 format, no Zig hand-editing on AR","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/D","KEY_FILES":["docs/migration-map.md","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"D","LETTER_NAME":"Delta","NAME":"Delta (De-Zigfication)","ORDINAL":4,"REGISTER":"R3","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/D","inSpecCorpus":false,"letter":"D","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_d","name":{"en":"Delta (De-Zigfication)","ru":"Дельта (Де-зигификация)"},"ordinal":4,"sha256":"093a8c454b5b7ac163fa142bcf6e9ad46fbc2acc1e8d1eb49bf38ef036f915db","skills":[],"specPath":"specs/agents/d.t27","summary":{"en":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","ru":"Де-зигификация / миграция. Де-зигификация — открытая дверь из .zig в .t27."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Window - view into the past","CLARA_ROLE":"TA2: AR Explanation & XAI - generates human-readable explanations for AR outputs","DOMAIN":"Experience / XAI","ENABLED":true,"ENTRY_INVARIANT":"Episode log is append-only, no deletions","EXIT_INVARIANT":"Lessons learned are catalogued, explanations are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/E","KEY_FILES":[".trinity/experience/","specs/ar/explainability.t27","specs/ar/proof_trace.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"E","LETTER_NAME":"Epsilon","NAME":"Epsilon (Experience)","ORDINAL":5,"REGISTER":"R4","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent. .claude/agents/agent-e-experience.md mentions phi-loop only as the label of the feedback field (1 = phi-loop, 0 = agent cycle); the alphabet key files point at the experience log and AR specs, not at a skill directory.","SOUL":"SOUL.md","SUMMARY_EN":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","TOOLS":["tri/experience"],"TOOLS_NOTE":".claude/agents/agent-e-experience.md:64 names tri experience save; lines 65-66 name tri experience query and tri notebook, which the CLI does not have at this commit. The tri-mcp server mirrors the command as tool tri_experience_save."},"health":"ok","id":"t27/E","inSpecCorpus":false,"letter":"E","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_e","name":{"en":"Epsilon (Experience)","ru":"Эпсилон (Опыт)"},"ordinal":5,"sha256":"8680ac8254c709d607055ee4ac6872b05bece422635c44dfcc5494d99952992c","skills":[],"specPath":"specs/agents/e.t27","summary":{"en":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","ru":"Опыт / XAI. Опыт — окно в прошлое системы, дыхание её памяти."},"tools":[{"id":"tri/experience","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Nail - connection, binding","CLARA_ROLE":"","DOMAIN":"Formal Conformance","ENABLED":true,"ENTRY_INVARIANT":"All sacred vectors (G, OmegaLambda, phi) are valid","EXIT_INVARIANT":"Conformance > 95%, all sacred physics verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/F","KEY_FILES":["t27/conformance/*.json","conformance/FORMAT-SPEC-001.json"],"KIND":"agent","LAYER":"Archetypal","LETTER":"F","LETTER_NAME":"Phi","NAME":"Phi (Formal Conformance)","ORDINAL":6,"REGISTER":"R5","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: the alphabet key files are conformance JSON vectors (t27/conformance/*.json) and no source names tri vectors for F."},"health":"ok","id":"t27/F","inSpecCorpus":false,"letter":"F","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_f","name":{"en":"Phi (Formal Conformance)","ru":"Фи (Формальное соответствие)"},"ordinal":6,"sha256":"1f69f78fbcbe07d6ccc592bb92f39fd33449fdf961244731c3be644e0b8b719c","skills":[],"specPath":"specs/agents/f.t27","summary":{"en":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","ru":"Формальное соответствие. JSON-файлы соответствия — гвозди, скрепляющие спеки."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Return - feedback","CLARA_ROLE":"","DOMAIN":"Graph / ArchBench","ENABLED":true,"ENTRY_INVARIANT":"Graph is acyclic, topological sort exists","EXIT_INVARIANT":"All edges satisfied, no broken dependencies","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/G","KEY_FILES":["architecture/graph_v2.json","architecture/graph.tri"],"KIND":"agent","LAYER":"Archetypal","LETTER":"G","LETTER_NAME":"Gamma (var.)","NAME":"Gamma (Graph)","ORDINAL":7,"REGISTER":"R6","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/G","inSpecCorpus":false,"letter":"G","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_g","name":{"en":"Gamma (Graph)","ru":"Гамма (Граф)"},"ordinal":7,"sha256":"2508126a477a8a323b133af6f2fb4c26d88be031b678b2b54de2a55656ad0cc0","skills":[],"specPath":"specs/agents/g.t27","summary":{"en":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","ru":"Граф / ArchBench. Граф — карта мира Trinity и его метрика расстояния."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fence - boundary, life","CLARA_ROLE":"","DOMAIN":"HSLM / NN Architectures","ENABLED":true,"ENTRY_INVARIANT":"HSLM layers are defined, connections are valid","EXIT_INVARIANT":"Attention traces are validated, sacred attention holds","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/H","KEY_FILES":["t27/specs/nn/hslm.t27","t27/specs/nn/attention.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"H","LETTER_NAME":"Eta","NAME":"Eta (HSLM)","ORDINAL":8,"REGISTER":"R7","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/H","inSpecCorpus":false,"letter":"H","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_h","name":{"en":"Eta (HSLM)","ru":"Эта (HSLM)"},"ordinal":8,"sha256":"eaee2545844cfe66509afedf95424ca76e2d3717a8bced297abc0121b3ea6a8a","skills":[],"specPath":"specs/agents/h.t27","summary":{"en":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","ru":"HSLM / архитектуры нейросетей. HSLM — архитектура нейросети, граница между слоями мозга."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand - action, point","CLARA_ROLE":"","DOMAIN":"ISA / Registers","ENABLED":true,"ENTRY_INVARIANT":"27 registers are defined, Coptic mapping exists","EXIT_INVARIANT":"Coptic mapping is verified (bijection), all registers accessible","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/I","KEY_FILES":["t27/specs/isa/registers.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"I","LETTER_NAME":"Iota","NAME":"Iota (ISA)","ORDINAL":9,"REGISTER":"R8","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/I","inSpecCorpus":false,"letter":"I","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_i","name":{"en":"Iota (ISA)","ru":"Йота (ISA)"},"ordinal":9,"sha256":"a1e332956a4113776724f90271af313d36df6a30bb5aab6514bb8df2729ef16c","skills":[],"specPath":"specs/agents/i.t27","summary":{"en":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","ru":"ISA / регистры. ISA — рука машины, её самый базовый уровень инструкций."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand with grip - dispatcher","CLARA_ROLE":"","DOMAIN":"Jobs / Task Routing","ENABLED":true,"ENTRY_INVARIANT":"Task queue exists, scheduler is running","EXIT_INVARIANT":"No stuck jobs > 1 hour, all jobs assigned","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/J","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"J","LETTER_NAME":"Iota-extended","NAME":"Iota-extended (Jobs)","ORDINAL":10,"REGISTER":"R9","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Jobs / Task Routing. Jobs grab tasks and route them.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/J","inSpecCorpus":false,"letter":"J","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_j","name":{"en":"Iota-extended (Jobs)","ru":"Йота-расширенная (Задания)"},"ordinal":10,"sha256":"1c3e0fdc23d7ad66ae39662f81621504cfdab1b4660a904508b75867cbbd187e","skills":[],"specPath":"specs/agents/j.t27","summary":{"en":"Jobs / Task Routing. Jobs grab tasks and route them.","ru":"Задания / маршрутизация задач. Задания захватывают задачи и направляют их."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Palm - open hand","CLARA_ROLE":"","DOMAIN":"Kernel / FPGA MAC","ENABLED":true,"ENTRY_INVARIANT":"MAC spec is zero-DSP (no digital signal processors)","EXIT_INVARIANT":"Synthesis is verified, E8 kernel integration works","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/K","KEY_FILES":["t27/specs/fpga/mac.t27","specs/math/e8_lie_algebra.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"K","LETTER_NAME":"Kappa","NAME":"Kappa (Kernel)","ORDINAL":11,"REGISTER":"R10","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/K","inSpecCorpus":false,"letter":"K","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_k","name":{"en":"Kappa (Kernel)","ru":"Каппа (Ядро)"},"ordinal":11,"sha256":"52c87609efcb16a0ddd296875010488540b619c95b16e1967bc26a4a488f856e","skills":[],"specPath":"specs/agents/k.t27","summary":{"en":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","ru":"Ядро / FPGA MAC. Ядро и FPGA — открытая ладонь нижнего аппаратного уровня."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Staff - teacher, guide","CLARA_ROLE":"","DOMAIN":"Language / Syntax vNEXT","ENABLED":true,"ENTRY_INVARIANT":"Syntax vNEXT is documented, BNF grammar exists","EXIT_INVARIANT":"Parser implements vNEXT, all syntax tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/L","KEY_FILES":["docs/nona-02-organism/TRI_SYNTAX_VNEXT.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"L","LETTER_NAME":"Lambda","NAME":"Lambda (Language)","ORDINAL":12,"REGISTER":"R11","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/L","inSpecCorpus":false,"letter":"L","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_l","name":{"en":"Lambda (Language)","ru":"Лямбда (Язык)"},"ordinal":12,"sha256":"2d98573747c17289c348f411e21d8a455be1a647577b6c3aba8d697689ff76f8","skills":[],"specPath":"specs/agents/l.t27","summary":{"en":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","ru":"Язык / синтаксис vNEXT. Язык — учитель, направляющий речь Trinity."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Water - flow of data","CLARA_ROLE":"","DOMAIN":"Metrics / Telemetry","ENABLED":true,"ENTRY_INVARIANT":"Bench baseline exists, telemetry is running","EXIT_INVARIANT":"No performance regression > 5%, all benchmarks current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/M","KEY_FILES":[".trinity/bench/","docs/qualification/TVP.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"M","LETTER_NAME":"Mu","NAME":"Mu (Metrics)","ORDINAL":13,"REGISTER":"R12","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/M","inSpecCorpus":false,"letter":"M","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_m","name":{"en":"Mu (Metrics)","ru":"Мю (Метрики)"},"ordinal":13,"sha256":"0aac5e911f0cf60e0912acc755c63777ae91da62510a806363ff99f9c3599cde","skills":[],"specPath":"specs/agents/m.t27","summary":{"en":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","ru":"Метрики / телеметрия. Метрики — непрерывный поток измерений."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fish - offspring, multiplication","CLARA_ROLE":"","DOMAIN":"Numeric / GoldenFloat","ENABLED":true,"ENTRY_INVARIANT":"GF family is defined (GF4, GF8, GF12, GF16, GF20, GF24, GF32)","EXIT_INVARIANT":"phi identity validated, all numeric tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/N","KEY_FILES":["t27/specs/numeric/","docs/NUMERIC-STANDARD-001.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"N","LETTER_NAME":"Nu","NAME":"Nu (Numeric)","ORDINAL":14,"REGISTER":"R13","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/N","inSpecCorpus":false,"letter":"N","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_n","name":{"en":"Nu (Numeric)","ru":"Ню (Числа)"},"ordinal":14,"sha256":"fb4321801a722b535d3a689a94f5ecf60894cf5f448d3e33e6447866619e541b","skills":[],"specPath":"specs/agents/n.t27","summary":{"en":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","ru":"Числа / GoldenFloat. Числовой слой — рыба-число, плывущая к золотому сечению."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Eye - all-seeing oko","CLARA_ROLE":"TA2: AR Composition Engine - composes ML and AR components, manages interactions","DOMAIN":"Orchestration / Phases","ENABLED":true,"ENTRY_INVARIANT":"All phases (1-6) are defined, phase transitions valid","EXIT_INVARIANT":"Orchestration completes, no stuck phases","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/O","KEY_FILES":["src/tri/pipeline/","specs/ar/composition.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"O","LETTER_NAME":"Omicron","NAME":"Omicron (Orchestration)","ORDINAL":15,"REGISTER":"R14","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/O","inSpecCorpus":false,"letter":"O","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_o","name":{"en":"Omicron (Orchestration)","ru":"Омикрон (Оркестрация)"},"ordinal":15,"sha256":"f2fd554e5cb70cea54f2daf2e3b36699175354595d333585ac56b556a95864c3","skills":[],"specPath":"specs/agents/o.t27","summary":{"en":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","ru":"Оркестрация / фазы. Оркестрация — всевидящее око фаз."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Mouth - speech of universe","CLARA_ROLE":"TA1: AR Theoretical Foundations - provides mathematical basis for AR reasoning","DOMAIN":"Physics / SacredPhysics","ENABLED":true,"ENTRY_INVARIANT":"phi^2 + phi^-2 = 3 holds in all calculations","EXIT_INVARIANT":"Sacred constants (G, OmegaLambda, phi, tpresent) are verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/P","KEY_FILES":["t27/specs/math/sacred_physics.t27","specs/physics/su2_chern_simons.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"P","LETTER_NAME":"Pi","NAME":"Pi (Physics)","ORDINAL":16,"REGISTER":"R15","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/P","inSpecCorpus":false,"letter":"P","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_p","name":{"en":"Pi (Physics)","ru":"Пи (Физика)"},"ordinal":16,"sha256":"badf4b6c05c043017b93d89968ce4139335cac039a4de235b294050e2b916aab","skills":[],"specPath":"specs/agents/p.t27","summary":{"en":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","ru":"Физика / SacredPhysics. Физика — природа, говорящая через свои константы (phi, G, OmegaLambda)."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Needle's eye - bottleneck","CLARA_ROLE":"","DOMAIN":"Queue / Scheduling","ENABLED":true,"ENTRY_INVARIANT":"Queue is not empty (work exists)","EXIT_INVARIANT":"MNL (Most-Numerous-Loss) pattern enforced, no starvation","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Q","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"Q","LETTER_NAME":"Theta","NAME":"Theta (Queue)","ORDINAL":17,"REGISTER":"R16","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Queue / Scheduling. The queue is the needle's eye for tasks.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/Q","inSpecCorpus":false,"letter":"Q","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_q","name":{"en":"Theta (Queue)","ru":"Тета (Очередь)"},"ordinal":17,"sha256":"f9b41127b3546ba9fbf057a603b081d9b3bb4eab7ee46b23f5e8c804dfd801d8","skills":[],"specPath":"specs/agents/q.t27","summary":{"en":"Queue / Scheduling. The queue is the needle's eye for tasks.","ru":"Очередь / планирование. Очередь — игольное ушко для задач."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Head - beginning of execution","CLARA_ROLE":"","DOMAIN":"Runtime / Bootstrap","ENABLED":true,"ENTRY_INVARIANT":"Runtime is initialized, ABI is defined","EXIT_INVARIANT":"No memory leaks, no resource exhaustion","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/R","KEY_FILES":["t27/compiler/runtime/","bootstrap/src/compiler.rs"],"KIND":"agent","LAYER":"Spiritual","LETTER":"R","LETTER_NAME":"Rho","NAME":"Rho (Runtime)","ORDINAL":18,"REGISTER":"R17","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Runtime / Bootstrap. Runtime is the head of the system during execution.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/R","inSpecCorpus":false,"letter":"R","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_r","name":{"en":"Rho (Runtime)","ru":"Ро (Рантайм)"},"ordinal":18,"sha256":"aab3e536f0afdce1db03304ea4591988b4f284f1a456a6d93bab689ed253eee2","skills":[],"specPath":"specs/agents/r.t27","summary":{"en":"Runtime / Bootstrap. Runtime is the head of the system during execution.","ru":"Рантайм / бутстрап. Рантайм — голова системы во время исполнения."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Teeth - sharpness, flame","CLARA_ROLE":"TA1: AR Spec Standards - defines and enforces AR spec conventions","DOMAIN":"Specs / Standardization / AR Specs","ENABLED":true,"ENTRY_INVARIANT":"All specs have TDD (test/invariant/bench)","EXIT_INVARIANT":"Standards are consistent, naming rules followed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/S","KEY_FILES":["specs/","specs/ar/*.t27","docs/NUMERIC-*.md"],"KIND":"agent","LAYER":"Physical","LETTER":"S","LETTER_NAME":"Sigma","NAME":"Sigma (Specs)","ORDINAL":19,"REGISTER":"R18","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent. docs/agents/AGENTS.md:97 lists tri gen, tri test, tri verdict --toxic, tri bench inside a sample prevention payload attributed to S; that is an example message, not an ownership binding."},"health":"ok","id":"t27/S","inSpecCorpus":false,"letter":"S","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_s","name":{"en":"Sigma (Specs)","ru":"Сигма (Спеки)"},"ordinal":19,"sha256":"7f64754295773781de8320b3fefd813ef5d1dd492b4b52f5ac56f9d9e4d01106","skills":[],"specPath":"specs/agents/s.t27","summary":{"en":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","ru":"Спеки / стандартизация / спеки AR. Спеки — зубы стандарта, перемалывающие всё в канон."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"CROSS - seal, signature, truth","CLARA_ROLE":"TA2: AR Orchestrator - coordinates all AR agents for CLARA submission","DOMAIN":"Queen / Lotus Orchestrator","ENABLED":true,"ENTRY_INVARIANT":"Queen health >= 0.9, graph is loaded","EXIT_INVARIANT":"All rings are sealed, verdict is clean","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/T","KEY_FILES":["t27/specs/queen/lotus.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"T","LETTER_NAME":"Tau","NAME":"Tau (TRINITY Queen)","ORDINAL":20,"REGISTER":"R19","SKILLS":["t27/phi-loop","t27/tri-pipeline"],"SKILLS_NOTE":".claude/agents/trinity.md, Phase 2 PLAN: \"Identify required skills (phi-loop, tri-pipeline)\"; Phase 4 VERIFY: \"Run conformance tests via tri-pipeline\". specs/OWNERS.md lists skills/ and crons/ under T-Queen, which is catalog ownership, not a held skill.","SOUL":"SOUL.md","SUMMARY_EN":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","TOOLS":["tri/gen","tri/test","mcp/inngest-dev"],"TOOLS_NOTE":".claude/agents/trinity.md:68 (5. Gen - Run tri gen) and :70 (7. Verify - Run tri test); specs/automation/inngest-queen-scheduler.t27 OWNER = \"T\" binds the scheduler mcp/inngest-dev to the Queen (specs/OWNERS.md: skills/ and crons/ under T-Queen). No source binds tri loop or tri health to T."},"health":"ok","id":"t27/T","inSpecCorpus":false,"letter":"T","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_t","name":{"en":"Tau (TRINITY Queen)","ru":"Тау (Королева TRINITY)"},"ordinal":20,"sha256":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","skills":[{"id":"t27/phi-loop","ok":true},{"id":"t27/tri-pipeline","ok":true}],"specPath":"specs/agents/t.t27","summary":{"en":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","ru":"Королева / оркестратор Lotus. T — королева: она ставит на всём финальную печать."},"tools":[{"id":"tri/gen","ok":true},{"id":"tri/test","ok":true},{"id":"mcp/inngest-dev","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fork - branching","CLARA_ROLE":"","DOMAIN":"Universe Levels / Domains","ENABLED":true,"ENTRY_INVARIANT":"Domain boundaries are defined","EXIT_INVARIANT":"No circular dependencies, domains are orthogonal","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/U","KEY_FILES":["t27/domains/"],"KIND":"agent","LAYER":"Physical","LETTER":"U","LETTER_NAME":"Upsilon","NAME":"Upsilon (Universe)","ORDINAL":21,"REGISTER":"R20","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Universe Levels / Domains. Universe levels are the branching of domains.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/U","inSpecCorpus":false,"letter":"U","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_u","name":{"en":"Upsilon (Universe)","ru":"Ипсилон (Вселенная)"},"ordinal":21,"sha256":"8e96c0001588aee91e7dc5aca1d68be9580b7834c595a78c7d62bfec83868b4b","skills":[],"specPath":"specs/agents/u.t27","summary":{"en":"Universe Levels / Domains. Universe levels are the branching of domains.","ru":"Уровни вселенной / домены. Уровни вселенной — ветвление доменов."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hook - connection, conjunction","CLARA_ROLE":"TA2: AR Validation & Proof - validates AR reasoning, generates proofs","DOMAIN":"Verdict / Bench / AR Validation","ENABLED":true,"ENTRY_INVARIANT":"Verdict engine is ready, toxic thresholds defined","EXIT_INVARIANT":"Toxicity is detected, proof traces are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/V","KEY_FILES":["src/tri/verdict.zig","specs/ar/proof_trace.t27","specs/ar/restraint.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"V","LETTER_NAME":"Vau (var.)","NAME":"Vau (Verdict)","ORDINAL":22,"REGISTER":"R21","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","TOOLS":["tri/test","tri/verdict"],"TOOLS_NOTE":".claude/agents/agent-v-verify.md:47 (tri test) and :49 (tri verdict); docs/agents/AGENTS_ALPHABET.md:80 PHASE 5 VERDICT names tri verdict --toxic for V. Line 48 names tri verify, which is not a tri command at this commit."},"health":"ok","id":"t27/V","inSpecCorpus":false,"letter":"V","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_v","name":{"en":"Vau (Verdict)","ru":"Вау (Вердикт)"},"ordinal":22,"sha256":"fcce2147f2fced23acc8d32364023ead496c229862f1f03ae9f5fc6c7c384aeb","skills":[],"specPath":"specs/agents/v.t27","summary":{"en":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","ru":"Вердикт / бенч / валидация AR. Вердикт — крюк, который ловит проблему."},"tools":[{"id":"tri/test","ok":true},{"id":"tri/verdict","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Double hook - double seal","CLARA_ROLE":"","DOMAIN":"Workflow / tri cell","ENABLED":true,"ENTRY_INVARIANT":"Cell is sealed, hash is computed","EXIT_INVARIANT":"Hash is verified, commit is signed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/W","KEY_FILES":["src/tri/cell.zig"],"KIND":"agent","LAYER":"Physical","LETTER":"W","LETTER_NAME":"Double-Vav","NAME":"Double-Vav (Workflow)","ORDINAL":23,"REGISTER":"R22","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","TOOLS":["tri/cell"],"TOOLS_NOTE":"docs/agents/AGENTS_ALPHABET.md:144: agent W domain Workflow / tri cell, key file src/tri/cell.zig; PHASE 6 EVOLVE: W seals tri-cell commit (hash seal)."},"health":"ok","id":"t27/W","inSpecCorpus":false,"letter":"W","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_w","name":{"en":"Double-Vav (Workflow)","ru":"Двойной Вав (Рабочий процесс)"},"ordinal":23,"sha256":"cc5426dfba21dcb6c38e978fd04c01a0ca38b62b942032668531508d454f5aeb","skills":[],"specPath":"specs/agents/w.t27","summary":{"en":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","ru":"Рабочий процесс / tri cell. Рабочий процесс и tri cell — двойная хеш-печать."},"tools":[{"id":"tri/cell","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Intersection - point of exchange","CLARA_ROLE":"","DOMAIN":"External Bindings / Interop","ENABLED":true,"ENTRY_INVARIANT":"Bindings are documented","EXIT_INVARIANT":"Interop tests pass, external APIs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/X","KEY_FILES":["bindings/"],"KIND":"agent","LAYER":"Physical","LETTER":"X","LETTER_NAME":"Chi","NAME":"Chi (External)","ORDINAL":24,"REGISTER":"R23","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/X","inSpecCorpus":false,"letter":"X","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_x","name":{"en":"Chi (External)","ru":"Хи (Внешнее)"},"ordinal":24,"sha256":"0766c4ee0c06be78156aa2d0d148549b21da87c3db232aeab3e64d28df611ff5","skills":[],"specPath":"specs/agents/x.t27","summary":{"en":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","ru":"Внешние привязки / интероперабельность. Внешние привязки — перекрёсток Trinity и внешних систем."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Merging paths - evolutionary selection","CLARA_ROLE":"","DOMAIN":"Yield / DePIN / Fitness","ENABLED":true,"ENTRY_INVARIANT":"DePIN nodes are defined","EXIT_INVARIANT":"Fitness score > 0.8, yield is optimized","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Y","KEY_FILES":["deploy/contracts/"],"KIND":"agent","LAYER":"Physical","LETTER":"Y","LETTER_NAME":"Psi","NAME":"Psi (Yield/DePIN)","ORDINAL":25,"REGISTER":"R24","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/Y","inSpecCorpus":false,"letter":"Y","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_y","name":{"en":"Psi (Yield/DePIN)","ru":"Пси (Доход/DePIN)"},"ordinal":25,"sha256":"2b7ba398549aa79d07e55e175328b816600fbddbfeb000ff1ce425ec629b3cf4","skills":[],"specPath":"specs/agents/y.t27","summary":{"en":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","ru":"Доход / DePIN / приспособленность. Доход и DePIN — эволюционный перекрёсток."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Sword - cutting edge, point","CLARA_ROLE":"","DOMAIN":"Zero-Touch UX / Docs","ENABLED":true,"ENTRY_INVARIANT":"All docs are in English, ASCII-only","EXIT_INVARIANT":"DX score > 4/5, all docs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Z","KEY_FILES":["docs/"],"KIND":"agent","LAYER":"Physical","LETTER":"Z","LETTER_NAME":"Zeta","NAME":"Zeta (Zero-Touch)","ORDINAL":26,"REGISTER":"R25","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/Z","inSpecCorpus":false,"letter":"Z","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_z","name":{"en":"Zeta (Zero-Touch)","ru":"Дзета (Zero-Touch)"},"ordinal":26,"sha256":"b4f898411bc6cccc09a47732cf878e2c8e66cfba98f2cab064cca6e54895c489","skills":[],"specPath":"specs/agents/z.t27","summary":{"en":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","ru":"Zero-Touch UX / документация. Zero-Touch — край UX и финальная полировка."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Egyptian cross - \"sacred gift\"","CLARA_ROLE":"","DOMAIN":"Security / Reserve","ENABLED":false,"ENTRY_INVARIANT":"Security policy exists","EXIT_INVARIANT":"AAIF compliance ready, no vulnerabilities","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/TI","KEY_FILES":[],"KIND":"agent","LAYER":"Physical","LETTER":"TI","LETTER_NAME":"Ti","NAME":"Ti (Security)","ORDINAL":27,"REGISTER":"R26","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/TI","inSpecCorpus":false,"letter":"TI","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_ti","name":{"en":"Ti (Security)","ru":"Ти (Безопасность)"},"ordinal":27,"sha256":"8f93c36e4a69d1c698d8f30be012f20565fb849338a44d5418782721c13ea066","skills":[],"specPath":"specs/agents/ti.t27","summary":{"en":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","ru":"Безопасность / резерв. Безопасность и AAIF — то, что Trinity дарит миру; место зарезервировано (ключевые файлы: в будущем)."},"tools":[],"typecheckOk":true,"witness":"spec-only"}],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"9828c63f908f816acbf43857127efef047f68afff0f19fee6093cd24e6a7491b","counts":{"byLayer":{"Archetypal":9,"Physical":9,"Spiritual":9},"enabled":26,"episodesAttributed":0,"episodesTotal":386,"episodesUnattributed":386,"specOnly":27,"specPlusExperience":0,"specs":27,"typecheckOk":27,"withClaraRole":8,"withCrons":0,"withExperience":0,"withSkills":1,"withTools":5},"experienceSnapshot":{"attribution":{"fields":["agent_letter","letter","agent","agent_id","agents","owner"],"letters":["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","TI"],"rule":"A letter is assigned only from an agent field that is one letter A-Z, \"ti\"/\"27th\", \"t27/\", or \"agent-...\"; everything else is unattributed. See scripts/sync-agents-experience.mjs and specs/agents/README.md."},"counts":{"agentsWithEpisodes":0,"attributed":0,"episodes":386,"unattributed":386,"unreadableFiles":56},"generatedAt":"2026-09-09T17:16:31.473Z","sources":[{"commit":"ddceafb50cd0e620387161228fa2c9ae134047de","episodes":383,"files":440,"repo":"trinity","unreadable":56},{"commit":"93727f733e23baf032d54505095777f16676d70b","episodes":3,"files":2,"repo":"t27","unreadable":0}]},"generatedAt":"2026-09-13T03:52:07.716Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":27,"total":27},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":856,"tools":92},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"version":1} +{"agents":[{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Bull - leader, primary force","CLARA_ROLE":"TA1: AR Architecture Design - designs AR module architecture, ensures composability","DOMAIN":"Architecture / ADR / SOUL","ENABLED":true,"ENTRY_INVARIANT":"SOUL.md exists, is ASCII-only, and defines L1-L7 laws","EXIT_INVARIANT":"All ADRs reviewed, consistent with constitution, no conflicts","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/A","KEY_FILES":["SOUL.md","architecture/ADR-*.md","architecture/CANON_DE_ZIGFICATION.md"],"KIND":"agent","LAYER":"Archetypal","LETTER":"A","LETTER_NAME":"Alpha","NAME":"Alpha (Architecture)","ORDINAL":1,"REGISTER":"R0","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/A","inSpecCorpus":true,"letter":"A","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_a","name":{"en":"Alpha (Architecture)","ru":"Альфа (Архитектура)"},"ordinal":1,"sha256":"0bcd805f2c789604a16712f910a652c698fe0b16a2c26ccb7a962a764e379943","skills":[],"specPath":"specs/agents/a.t27","summary":{"en":"Architecture / ADR / SOUL. SOUL.md is the primary cause and the ADRs are the constitution of the system.","ru":"Архитектура / ADR / SOUL. SOUL.md — первопричина, а ADR — конституция системы."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"House - container, dwelling","CLARA_ROLE":"","DOMAIN":"Build / Pipeline","ENABLED":true,"ENTRY_INVARIANT":"Build system is clean, no stale artifacts","EXIT_INVARIANT":"All tests pass, CI pipeline is green","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/B","KEY_FILES":["build.tri","src/tri/pipeline/"],"KIND":"agent","LAYER":"Archetypal","LETTER":"B","LETTER_NAME":"Beta","NAME":"Beta (Build)","ORDINAL":2,"REGISTER":"R1","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/B","inSpecCorpus":true,"letter":"B","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_b","name":{"en":"Beta (Build)","ru":"Бета (Сборка)"},"ordinal":2,"sha256":"61d170317eadcdfe028549190c431b633d93cb5dc2dea7fdc1c041c71154b34f","skills":[],"specPath":"specs/agents/b.t27","summary":{"en":"Build / Pipeline. build.tri is the house of specifications and the pipeline is its dwelling.","ru":"Сборка / конвейер. build.tri — дом спецификаций, а конвейер — его жилище."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Camel - carrier across borders","CLARA_ROLE":"TA1: AR Language Implementation - implements AR language features in t27 compiler","DOMAIN":"Compiler Core / AR Language","ENABLED":true,"ENTRY_INVARIANT":"Parser can handle all AR syntax (ternary logic, rules, proofs)","EXIT_INVARIANT":"Generated code compiles, AST is valid","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/C","KEY_FILES":["t27/compiler/parser/","bootstrap/src/compiler.rs","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"C","LETTER_NAME":"Gamma","NAME":"Gamma (Compiler Core)","ORDINAL":3,"REGISTER":"R2","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","TOOLS":["tri/gen"],"TOOLS_NOTE":".claude/agents/agent-c-compiler.md:40 names tri gen (trigger On tri gen command, line 7). Line 41 names tri seal, which is not a tri command at this commit (tri cell seal is not bound here)."},"health":"ok","id":"t27/C","inSpecCorpus":true,"letter":"C","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_c","name":{"en":"Gamma (Compiler Core)","ru":"Гамма (Ядро компилятора)"},"ordinal":3,"sha256":"89402274898f607a2be4d505f8925c76802acfe2683739605f8413604530ff23","skills":[],"specPath":"specs/agents/c.t27","summary":{"en":"Compiler Core / AR Language. The compiler carries text across borders, from spec to generated code.","ru":"Ядро компилятора / язык AR. Компилятор переносит текст через границы: от спеки к сгенерированному коду."},"tools":[{"id":"tri/gen","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Door - transition between worlds","CLARA_ROLE":"","DOMAIN":"De-Zigfication / Migration","ENABLED":true,"ENTRY_INVARIANT":"Legacy Zig modules are catalogued and mapped","EXIT_INVARIANT":"All AR specs are in .t27 format, no Zig hand-editing on AR","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/D","KEY_FILES":["docs/migration-map.md","specs/ar/*.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"D","LETTER_NAME":"Delta","NAME":"Delta (De-Zigfication)","ORDINAL":4,"REGISTER":"R3","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/D","inSpecCorpus":true,"letter":"D","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_d","name":{"en":"Delta (De-Zigfication)","ru":"Дельта (Де-зигификация)"},"ordinal":4,"sha256":"093a8c454b5b7ac163fa142bcf6e9ad46fbc2acc1e8d1eb49bf38ef036f915db","skills":[],"specPath":"specs/agents/d.t27","summary":{"en":"De-Zigfication / Migration. De-Zigfication is the open door from .zig to .t27.","ru":"Де-зигификация / миграция. Де-зигификация — открытая дверь из .zig в .t27."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Window - view into the past","CLARA_ROLE":"TA2: AR Explanation & XAI - generates human-readable explanations for AR outputs","DOMAIN":"Experience / XAI","ENABLED":true,"ENTRY_INVARIANT":"Episode log is append-only, no deletions","EXIT_INVARIANT":"Lessons learned are catalogued, explanations are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/E","KEY_FILES":[".trinity/experience/","specs/ar/explainability.t27","specs/ar/proof_trace.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"E","LETTER_NAME":"Epsilon","NAME":"Epsilon (Experience)","ORDINAL":5,"REGISTER":"R4","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent. .claude/agents/agent-e-experience.md mentions phi-loop only as the label of the feedback field (1 = phi-loop, 0 = agent cycle); the alphabet key files point at the experience log and AR specs, not at a skill directory.","SOUL":"SOUL.md","SUMMARY_EN":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","TOOLS":["tri/experience"],"TOOLS_NOTE":".claude/agents/agent-e-experience.md:64 names tri experience save; lines 65-66 name tri experience query and tri notebook, which the CLI does not have at this commit. The tri-mcp server mirrors the command as tool tri_experience_save."},"health":"ok","id":"t27/E","inSpecCorpus":true,"letter":"E","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_e","name":{"en":"Epsilon (Experience)","ru":"Эпсилон (Опыт)"},"ordinal":5,"sha256":"8680ac8254c709d607055ee4ac6872b05bece422635c44dfcc5494d99952992c","skills":[],"specPath":"specs/agents/e.t27","summary":{"en":"Experience / XAI. Experience is the window into the past of the system, the breath of its memory.","ru":"Опыт / XAI. Опыт — окно в прошлое системы, дыхание её памяти."},"tools":[{"id":"tri/experience","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Nail - connection, binding","CLARA_ROLE":"","DOMAIN":"Formal Conformance","ENABLED":true,"ENTRY_INVARIANT":"All sacred vectors (G, OmegaLambda, phi) are valid","EXIT_INVARIANT":"Conformance > 95%, all sacred physics verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/F","KEY_FILES":["t27/conformance/*.json","conformance/FORMAT-SPEC-001.json"],"KIND":"agent","LAYER":"Archetypal","LETTER":"F","LETTER_NAME":"Phi","NAME":"Phi (Formal Conformance)","ORDINAL":6,"REGISTER":"R5","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: the alphabet key files are conformance JSON vectors (t27/conformance/*.json) and no source names tri vectors for F."},"health":"ok","id":"t27/F","inSpecCorpus":true,"letter":"F","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_f","name":{"en":"Phi (Formal Conformance)","ru":"Фи (Формальное соответствие)"},"ordinal":6,"sha256":"1f69f78fbcbe07d6ccc592bb92f39fd33449fdf961244731c3be644e0b8b719c","skills":[],"specPath":"specs/agents/f.t27","summary":{"en":"Formal Conformance. The conformance JSON files are the nails holding the specs together.","ru":"Формальное соответствие. JSON-файлы соответствия — гвозди, скрепляющие спеки."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Return - feedback","CLARA_ROLE":"","DOMAIN":"Graph / ArchBench","ENABLED":true,"ENTRY_INVARIANT":"Graph is acyclic, topological sort exists","EXIT_INVARIANT":"All edges satisfied, no broken dependencies","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/G","KEY_FILES":["architecture/graph_v2.json","architecture/graph.tri"],"KIND":"agent","LAYER":"Archetypal","LETTER":"G","LETTER_NAME":"Gamma (var.)","NAME":"Gamma (Graph)","ORDINAL":7,"REGISTER":"R6","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/G","inSpecCorpus":true,"letter":"G","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_g","name":{"en":"Gamma (Graph)","ru":"Гамма (Граф)"},"ordinal":7,"sha256":"2508126a477a8a323b133af6f2fb4c26d88be031b678b2b54de2a55656ad0cc0","skills":[],"specPath":"specs/agents/g.t27","summary":{"en":"Graph / ArchBench. The graph is the map of the Trinity world and its distance metric.","ru":"Граф / ArchBench. Граф — карта мира Trinity и его метрика расстояния."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fence - boundary, life","CLARA_ROLE":"","DOMAIN":"HSLM / NN Architectures","ENABLED":true,"ENTRY_INVARIANT":"HSLM layers are defined, connections are valid","EXIT_INVARIANT":"Attention traces are validated, sacred attention holds","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/H","KEY_FILES":["t27/specs/nn/hslm.t27","t27/specs/nn/attention.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"H","LETTER_NAME":"Eta","NAME":"Eta (HSLM)","ORDINAL":8,"REGISTER":"R7","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/H","inSpecCorpus":true,"letter":"H","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_h","name":{"en":"Eta (HSLM)","ru":"Эта (HSLM)"},"ordinal":8,"sha256":"eaee2545844cfe66509afedf95424ca76e2d3717a8bced297abc0121b3ea6a8a","skills":[],"specPath":"specs/agents/h.t27","summary":{"en":"HSLM / NN Architectures. HSLM is the neural-network architecture, the boundary between brain layers.","ru":"HSLM / архитектуры нейросетей. HSLM — архитектура нейросети, граница между слоями мозга."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand - action, point","CLARA_ROLE":"","DOMAIN":"ISA / Registers","ENABLED":true,"ENTRY_INVARIANT":"27 registers are defined, Coptic mapping exists","EXIT_INVARIANT":"Coptic mapping is verified (bijection), all registers accessible","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/I","KEY_FILES":["t27/specs/isa/registers.t27"],"KIND":"agent","LAYER":"Archetypal","LETTER":"I","LETTER_NAME":"Iota","NAME":"Iota (ISA)","ORDINAL":9,"REGISTER":"R8","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/I","inSpecCorpus":true,"letter":"I","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_i","name":{"en":"Iota (ISA)","ru":"Йота (ISA)"},"ordinal":9,"sha256":"a1e332956a4113776724f90271af313d36df6a30bb5aab6514bb8df2729ef16c","skills":[],"specPath":"specs/agents/i.t27","summary":{"en":"ISA / Registers. The ISA is the hand of the machine, its most basic instruction level.","ru":"ISA / регистры. ISA — рука машины, её самый базовый уровень инструкций."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hand with grip - dispatcher","CLARA_ROLE":"","DOMAIN":"Jobs / Task Routing","ENABLED":true,"ENTRY_INVARIANT":"Task queue exists, scheduler is running","EXIT_INVARIANT":"No stuck jobs > 1 hour, all jobs assigned","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/J","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"J","LETTER_NAME":"Iota-extended","NAME":"Iota-extended (Jobs)","ORDINAL":10,"REGISTER":"R9","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Jobs / Task Routing. Jobs grab tasks and route them.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/J","inSpecCorpus":true,"letter":"J","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_j","name":{"en":"Iota-extended (Jobs)","ru":"Йота-расширенная (Задания)"},"ordinal":10,"sha256":"1c3e0fdc23d7ad66ae39662f81621504cfdab1b4660a904508b75867cbbd187e","skills":[],"specPath":"specs/agents/j.t27","summary":{"en":"Jobs / Task Routing. Jobs grab tasks and route them.","ru":"Задания / маршрутизация задач. Задания захватывают задачи и направляют их."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Palm - open hand","CLARA_ROLE":"","DOMAIN":"Kernel / FPGA MAC","ENABLED":true,"ENTRY_INVARIANT":"MAC spec is zero-DSP (no digital signal processors)","EXIT_INVARIANT":"Synthesis is verified, E8 kernel integration works","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/K","KEY_FILES":["t27/specs/fpga/mac.t27","specs/math/e8_lie_algebra.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"K","LETTER_NAME":"Kappa","NAME":"Kappa (Kernel)","ORDINAL":11,"REGISTER":"R10","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/K","inSpecCorpus":true,"letter":"K","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_k","name":{"en":"Kappa (Kernel)","ru":"Каппа (Ядро)"},"ordinal":11,"sha256":"52c87609efcb16a0ddd296875010488540b619c95b16e1967bc26a4a488f856e","skills":[],"specPath":"specs/agents/k.t27","summary":{"en":"Kernel / FPGA MAC. Kernel and FPGA are the open palm of the lower hardware level.","ru":"Ядро / FPGA MAC. Ядро и FPGA — открытая ладонь нижнего аппаратного уровня."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Staff - teacher, guide","CLARA_ROLE":"","DOMAIN":"Language / Syntax vNEXT","ENABLED":true,"ENTRY_INVARIANT":"Syntax vNEXT is documented, BNF grammar exists","EXIT_INVARIANT":"Parser implements vNEXT, all syntax tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/L","KEY_FILES":["docs/nona-02-organism/TRI_SYNTAX_VNEXT.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"L","LETTER_NAME":"Lambda","NAME":"Lambda (Language)","ORDINAL":12,"REGISTER":"R11","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/L","inSpecCorpus":true,"letter":"L","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_l","name":{"en":"Lambda (Language)","ru":"Лямбда (Язык)"},"ordinal":12,"sha256":"2d98573747c17289c348f411e21d8a455be1a647577b6c3aba8d697689ff76f8","skills":[],"specPath":"specs/agents/l.t27","summary":{"en":"Language / Syntax vNEXT. Language is the teacher guiding Trinity speech.","ru":"Язык / синтаксис vNEXT. Язык — учитель, направляющий речь Trinity."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Water - flow of data","CLARA_ROLE":"","DOMAIN":"Metrics / Telemetry","ENABLED":true,"ENTRY_INVARIANT":"Bench baseline exists, telemetry is running","EXIT_INVARIANT":"No performance regression > 5%, all benchmarks current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/M","KEY_FILES":[".trinity/bench/","docs/qualification/TVP.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"M","LETTER_NAME":"Mu","NAME":"Mu (Metrics)","ORDINAL":13,"REGISTER":"R12","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/M","inSpecCorpus":true,"letter":"M","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_m","name":{"en":"Mu (Metrics)","ru":"Мю (Метрики)"},"ordinal":13,"sha256":"0aac5e911f0cf60e0912acc755c63777ae91da62510a806363ff99f9c3599cde","skills":[],"specPath":"specs/agents/m.t27","summary":{"en":"Metrics / Telemetry. Metrics are the continuous stream of measurements.","ru":"Метрики / телеметрия. Метрики — непрерывный поток измерений."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fish - offspring, multiplication","CLARA_ROLE":"","DOMAIN":"Numeric / GoldenFloat","ENABLED":true,"ENTRY_INVARIANT":"GF family is defined (GF4, GF8, GF12, GF16, GF20, GF24, GF32)","EXIT_INVARIANT":"phi identity validated, all numeric tests pass","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/N","KEY_FILES":["t27/specs/numeric/","docs/NUMERIC-STANDARD-001.md"],"KIND":"agent","LAYER":"Spiritual","LETTER":"N","LETTER_NAME":"Nu","NAME":"Nu (Numeric)","ORDINAL":14,"REGISTER":"R13","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/N","inSpecCorpus":true,"letter":"N","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_n","name":{"en":"Nu (Numeric)","ru":"Ню (Числа)"},"ordinal":14,"sha256":"fb4321801a722b535d3a689a94f5ecf60894cf5f448d3e33e6447866619e541b","skills":[],"specPath":"specs/agents/n.t27","summary":{"en":"Numeric / GoldenFloat. Numeric is the number-fish swimming toward the golden ratio.","ru":"Числа / GoldenFloat. Числовой слой — рыба-число, плывущая к золотому сечению."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Eye - all-seeing oko","CLARA_ROLE":"TA2: AR Composition Engine - composes ML and AR components, manages interactions","DOMAIN":"Orchestration / Phases","ENABLED":true,"ENTRY_INVARIANT":"All phases (1-6) are defined, phase transitions valid","EXIT_INVARIANT":"Orchestration completes, no stuck phases","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/O","KEY_FILES":["src/tri/pipeline/","specs/ar/composition.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"O","LETTER_NAME":"Omicron","NAME":"Omicron (Orchestration)","ORDINAL":15,"REGISTER":"R14","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/O","inSpecCorpus":true,"letter":"O","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_o","name":{"en":"Omicron (Orchestration)","ru":"Омикрон (Оркестрация)"},"ordinal":15,"sha256":"f2fd554e5cb70cea54f2daf2e3b36699175354595d333585ac56b556a95864c3","skills":[],"specPath":"specs/agents/o.t27","summary":{"en":"Orchestration / Phases. Orchestration is the all-seeing eye of the phases.","ru":"Оркестрация / фазы. Оркестрация — всевидящее око фаз."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Mouth - speech of universe","CLARA_ROLE":"TA1: AR Theoretical Foundations - provides mathematical basis for AR reasoning","DOMAIN":"Physics / SacredPhysics","ENABLED":true,"ENTRY_INVARIANT":"phi^2 + phi^-2 = 3 holds in all calculations","EXIT_INVARIANT":"Sacred constants (G, OmegaLambda, phi, tpresent) are verified","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/P","KEY_FILES":["t27/specs/math/sacred_physics.t27","specs/physics/su2_chern_simons.t27"],"KIND":"agent","LAYER":"Spiritual","LETTER":"P","LETTER_NAME":"Pi","NAME":"Pi (Physics)","ORDINAL":16,"REGISTER":"R15","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/P","inSpecCorpus":true,"letter":"P","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_p","name":{"en":"Pi (Physics)","ru":"Пи (Физика)"},"ordinal":16,"sha256":"badf4b6c05c043017b93d89968ce4139335cac039a4de235b294050e2b916aab","skills":[],"specPath":"specs/agents/p.t27","summary":{"en":"Physics / SacredPhysics. Physics is nature speaking through its constants (phi, G, OmegaLambda).","ru":"Физика / SacredPhysics. Физика — природа, говорящая через свои константы (phi, G, OmegaLambda)."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Needle's eye - bottleneck","CLARA_ROLE":"","DOMAIN":"Queue / Scheduling","ENABLED":true,"ENTRY_INVARIANT":"Queue is not empty (work exists)","EXIT_INVARIANT":"MNL (Most-Numerous-Loss) pattern enforced, no starvation","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Q","KEY_FILES":["src/tri/dev_commands.zig"],"KIND":"agent","LAYER":"Spiritual","LETTER":"Q","LETTER_NAME":"Theta","NAME":"Theta (Queue)","ORDINAL":17,"REGISTER":"R16","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Queue / Scheduling. The queue is the needle's eye for tasks.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/Q","inSpecCorpus":true,"letter":"Q","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_q","name":{"en":"Theta (Queue)","ru":"Тета (Очередь)"},"ordinal":17,"sha256":"f9b41127b3546ba9fbf057a603b081d9b3bb4eab7ee46b23f5e8c804dfd801d8","skills":[],"specPath":"specs/agents/q.t27","summary":{"en":"Queue / Scheduling. The queue is the needle's eye for tasks.","ru":"Очередь / планирование. Очередь — игольное ушко для задач."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Head - beginning of execution","CLARA_ROLE":"","DOMAIN":"Runtime / Bootstrap","ENABLED":true,"ENTRY_INVARIANT":"Runtime is initialized, ABI is defined","EXIT_INVARIANT":"No memory leaks, no resource exhaustion","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/R","KEY_FILES":["t27/compiler/runtime/","bootstrap/src/compiler.rs"],"KIND":"agent","LAYER":"Spiritual","LETTER":"R","LETTER_NAME":"Rho","NAME":"Rho (Runtime)","ORDINAL":18,"REGISTER":"R17","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Runtime / Bootstrap. Runtime is the head of the system during execution.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/R","inSpecCorpus":true,"letter":"R","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_r","name":{"en":"Rho (Runtime)","ru":"Ро (Рантайм)"},"ordinal":18,"sha256":"aab3e536f0afdce1db03304ea4591988b4f284f1a456a6d93bab689ed253eee2","skills":[],"specPath":"specs/agents/r.t27","summary":{"en":"Runtime / Bootstrap. Runtime is the head of the system during execution.","ru":"Рантайм / бутстрап. Рантайм — голова системы во время исполнения."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Teeth - sharpness, flame","CLARA_ROLE":"TA1: AR Spec Standards - defines and enforces AR spec conventions","DOMAIN":"Specs / Standardization / AR Specs","ENABLED":true,"ENTRY_INVARIANT":"All specs have TDD (test/invariant/bench)","EXIT_INVARIANT":"Standards are consistent, naming rules followed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/S","KEY_FILES":["specs/","specs/ar/*.t27","docs/NUMERIC-*.md"],"KIND":"agent","LAYER":"Physical","LETTER":"S","LETTER_NAME":"Sigma","NAME":"Sigma (Specs)","ORDINAL":19,"REGISTER":"R18","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent. docs/agents/AGENTS.md:97 lists tri gen, tri test, tri verdict --toxic, tri bench inside a sample prevention payload attributed to S; that is an example message, not an ownership binding."},"health":"ok","id":"t27/S","inSpecCorpus":true,"letter":"S","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_s","name":{"en":"Sigma (Specs)","ru":"Сигма (Спеки)"},"ordinal":19,"sha256":"7f64754295773781de8320b3fefd813ef5d1dd492b4b52f5ac56f9d9e4d01106","skills":[],"specPath":"specs/agents/s.t27","summary":{"en":"Specs / Standardization / AR Specs. Specs are the teeth of the standard that grind everything into canon.","ru":"Спеки / стандартизация / спеки AR. Спеки — зубы стандарта, перемалывающие всё в канон."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"CROSS - seal, signature, truth","CLARA_ROLE":"TA2: AR Orchestrator - coordinates all AR agents for CLARA submission","DOMAIN":"Queen / Lotus Orchestrator","ENABLED":true,"ENTRY_INVARIANT":"Queen health >= 0.9, graph is loaded","EXIT_INVARIANT":"All rings are sealed, verdict is clean","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/T","KEY_FILES":["t27/specs/queen/lotus.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"T","LETTER_NAME":"Tau","NAME":"Tau (TRINITY Queen)","ORDINAL":20,"REGISTER":"R19","SKILLS":["t27/phi-loop","t27/tri-pipeline"],"SKILLS_NOTE":".claude/agents/trinity.md, Phase 2 PLAN: \"Identify required skills (phi-loop, tri-pipeline)\"; Phase 4 VERIFY: \"Run conformance tests via tri-pipeline\". specs/OWNERS.md lists skills/ and crons/ under T-Queen, which is catalog ownership, not a held skill.","SOUL":"SOUL.md","SUMMARY_EN":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","TOOLS":["tri/gen","tri/test","mcp/inngest-dev"],"TOOLS_NOTE":".claude/agents/trinity.md:68 (5. Gen - Run tri gen) and :70 (7. Verify - Run tri test); specs/automation/inngest-queen-scheduler.t27 OWNER = \"T\" binds the scheduler mcp/inngest-dev to the Queen (specs/OWNERS.md: skills/ and crons/ under T-Queen). No source binds tri loop or tri health to T."},"health":"ok","id":"t27/T","inSpecCorpus":true,"letter":"T","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_t","name":{"en":"Tau (TRINITY Queen)","ru":"Тау (Королева TRINITY)"},"ordinal":20,"sha256":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","skills":[{"id":"t27/phi-loop","ok":true},{"id":"t27/tri-pipeline","ok":true}],"specPath":"specs/agents/t.t27","summary":{"en":"Queen / Lotus Orchestrator. T is the queen: she puts the final seal on everything.","ru":"Королева / оркестратор Lotus. T — королева: она ставит на всём финальную печать."},"tools":[{"id":"tri/gen","ok":true},{"id":"tri/test","ok":true},{"id":"mcp/inngest-dev","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Fork - branching","CLARA_ROLE":"","DOMAIN":"Universe Levels / Domains","ENABLED":true,"ENTRY_INVARIANT":"Domain boundaries are defined","EXIT_INVARIANT":"No circular dependencies, domains are orthogonal","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/U","KEY_FILES":["t27/domains/"],"KIND":"agent","LAYER":"Physical","LETTER":"U","LETTER_NAME":"Upsilon","NAME":"Upsilon (Universe)","ORDINAL":21,"REGISTER":"R20","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Universe Levels / Domains. Universe levels are the branching of domains.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/U","inSpecCorpus":true,"letter":"U","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_u","name":{"en":"Upsilon (Universe)","ru":"Ипсилон (Вселенная)"},"ordinal":21,"sha256":"8e96c0001588aee91e7dc5aca1d68be9580b7834c595a78c7d62bfec83868b4b","skills":[],"specPath":"specs/agents/u.t27","summary":{"en":"Universe Levels / Domains. Universe levels are the branching of domains.","ru":"Уровни вселенной / домены. Уровни вселенной — ветвление доменов."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Hook - connection, conjunction","CLARA_ROLE":"TA2: AR Validation & Proof - validates AR reasoning, generates proofs","DOMAIN":"Verdict / Bench / AR Validation","ENABLED":true,"ENTRY_INVARIANT":"Verdict engine is ready, toxic thresholds defined","EXIT_INVARIANT":"Toxicity is detected, proof traces are generated","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/V","KEY_FILES":["src/tri/verdict.zig","specs/ar/proof_trace.t27","specs/ar/restraint.t27"],"KIND":"agent","LAYER":"Physical","LETTER":"V","LETTER_NAME":"Vau (var.)","NAME":"Vau (Verdict)","ORDINAL":22,"REGISTER":"R21","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","TOOLS":["tri/test","tri/verdict"],"TOOLS_NOTE":".claude/agents/agent-v-verify.md:47 (tri test) and :49 (tri verdict); docs/agents/AGENTS_ALPHABET.md:80 PHASE 5 VERDICT names tri verdict --toxic for V. Line 48 names tri verify, which is not a tri command at this commit."},"health":"ok","id":"t27/V","inSpecCorpus":true,"letter":"V","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_v","name":{"en":"Vau (Verdict)","ru":"Вау (Вердикт)"},"ordinal":22,"sha256":"fcce2147f2fced23acc8d32364023ead496c229862f1f03ae9f5fc6c7c384aeb","skills":[],"specPath":"specs/agents/v.t27","summary":{"en":"Verdict / Bench / AR Validation. The verdict is the hook that catches the problem.","ru":"Вердикт / бенч / валидация AR. Вердикт — крюк, который ловит проблему."},"tools":[{"id":"tri/test","ok":true},{"id":"tri/verdict","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Double hook - double seal","CLARA_ROLE":"","DOMAIN":"Workflow / tri cell","ENABLED":true,"ENTRY_INVARIANT":"Cell is sealed, hash is computed","EXIT_INVARIANT":"Hash is verified, commit is signed","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/W","KEY_FILES":["src/tri/cell.zig"],"KIND":"agent","LAYER":"Physical","LETTER":"W","LETTER_NAME":"Double-Vav","NAME":"Double-Vav (Workflow)","ORDINAL":23,"REGISTER":"R22","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","TOOLS":["tri/cell"],"TOOLS_NOTE":"docs/agents/AGENTS_ALPHABET.md:144: agent W domain Workflow / tri cell, key file src/tri/cell.zig; PHASE 6 EVOLVE: W seals tri-cell commit (hash seal)."},"health":"ok","id":"t27/W","inSpecCorpus":true,"letter":"W","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_w","name":{"en":"Double-Vav (Workflow)","ru":"Двойной Вав (Рабочий процесс)"},"ordinal":23,"sha256":"cc5426dfba21dcb6c38e978fd04c01a0ca38b62b942032668531508d454f5aeb","skills":[],"specPath":"specs/agents/w.t27","summary":{"en":"Workflow / tri cell. Workflow and tri cell are the double hash-seal.","ru":"Рабочий процесс / tri cell. Рабочий процесс и tri cell — двойная хеш-печать."},"tools":[{"id":"tri/cell","ok":true}],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Intersection - point of exchange","CLARA_ROLE":"","DOMAIN":"External Bindings / Interop","ENABLED":true,"ENTRY_INVARIANT":"Bindings are documented","EXIT_INVARIANT":"Interop tests pass, external APIs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/X","KEY_FILES":["bindings/"],"KIND":"agent","LAYER":"Physical","LETTER":"X","LETTER_NAME":"Chi","NAME":"Chi (External)","ORDINAL":24,"REGISTER":"R23","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/X","inSpecCorpus":true,"letter":"X","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_x","name":{"en":"Chi (External)","ru":"Хи (Внешнее)"},"ordinal":24,"sha256":"0766c4ee0c06be78156aa2d0d148549b21da87c3db232aeab3e64d28df611ff5","skills":[],"specPath":"specs/agents/x.t27","summary":{"en":"External Bindings / Interop. External bindings are the crossroads of Trinity and external systems.","ru":"Внешние привязки / интероперабельность. Внешние привязки — перекрёсток Trinity и внешних систем."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Merging paths - evolutionary selection","CLARA_ROLE":"","DOMAIN":"Yield / DePIN / Fitness","ENABLED":true,"ENTRY_INVARIANT":"DePIN nodes are defined","EXIT_INVARIANT":"Fitness score > 0.8, yield is optimized","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Y","KEY_FILES":["deploy/contracts/"],"KIND":"agent","LAYER":"Physical","LETTER":"Y","LETTER_NAME":"Psi","NAME":"Psi (Yield/DePIN)","ORDINAL":25,"REGISTER":"R24","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/Y","inSpecCorpus":true,"letter":"Y","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_y","name":{"en":"Psi (Yield/DePIN)","ru":"Пси (Доход/DePIN)"},"ordinal":25,"sha256":"2b7ba398549aa79d07e55e175328b816600fbddbfeb000ff1ce425ec629b3cf4","skills":[],"specPath":"specs/agents/y.t27","summary":{"en":"Yield / DePIN / Fitness. Yield and DePIN are the evolutionary crossroad.","ru":"Доход / DePIN / приспособленность. Доход и DePIN — эволюционный перекрёсток."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Sword - cutting edge, point","CLARA_ROLE":"","DOMAIN":"Zero-Touch UX / Docs","ENABLED":true,"ENTRY_INVARIANT":"All docs are in English, ASCII-only","EXIT_INVARIANT":"DX score > 4/5, all docs are current","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/Z","KEY_FILES":["docs/"],"KIND":"agent","LAYER":"Physical","LETTER":"Z","LETTER_NAME":"Zeta","NAME":"Zeta (Zero-Touch)","ORDINAL":26,"REGISTER":"R25","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/Z","inSpecCorpus":true,"letter":"Z","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_z","name":{"en":"Zeta (Zero-Touch)","ru":"Дзета (Zero-Touch)"},"ordinal":26,"sha256":"b4f898411bc6cccc09a47732cf878e2c8e66cfba98f2cab064cca6e54895c489","skills":[],"specPath":"specs/agents/z.t27","summary":{"en":"Zero-Touch UX / Docs. Zero-Touch is the edge of UX and the final polish.","ru":"Zero-Touch UX / документация. Zero-Touch — край UX и финальная полировка."},"tools":[],"typecheckOk":true,"witness":"spec-only"},{"crons":[],"discarded":0,"experience":{"episodes":0,"files":[],"first":null,"last":null,"lastTask":null,"lessons":[],"outcomes":{}},"fields":{"AGENTS_DOC":"AGENTS.md","ALPHABET":"docs/agents/AGENTS_ALPHABET.md","ARCHETYPE":"Egyptian cross - \"sacred gift\"","CLARA_ROLE":"","DOMAIN":"Security / Reserve","ENABLED":false,"ENTRY_INVARIANT":"Security policy exists","EXIT_INVARIANT":"AAIF compliance ready, no vulnerabilities","EXPERIENCE_LOG":".trinity/experience/","ID":"t27/TI","KEY_FILES":[],"KIND":"agent","LAYER":"Physical","LETTER":"TI","LETTER_NAME":"Ti","NAME":"Ti (Security)","ORDINAL":27,"REGISTER":"R26","SKILLS":[],"SKILLS_NOTE":"No source binds a skill to this agent: the alphabet key files point at specs and docs, not at a skill directory, no .claude/agents file names one, and specs/OWNERS.md has no row for it.","SOUL":"SOUL.md","SUMMARY_EN":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","TOOLS":[],"TOOLS_NOTE":"No source binds a tri command or MCP server to this agent: docs/agents/AGENTS_ALPHABET.md (row, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name one."},"health":"ok","id":"t27/TI","inSpecCorpus":true,"letter":"TI","links":{"agentsDoc":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","alphabet":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","experienceLog":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/.trinity/experience","pinSource":"public/agents/experience.json sources[t27].commit","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","soul":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md"},"messages":["no attributed episodes in the experience snapshot"],"moduleName":"agent_ti","name":{"en":"Ti (Security)","ru":"Ти (Безопасность)"},"ordinal":27,"sha256":"8f93c36e4a69d1c698d8f30be012f20565fb849338a44d5418782721c13ea066","skills":[],"specPath":"specs/agents/ti.t27","summary":{"en":"Security / Reserve. Security and AAIF are what Trinity gifts the world; the seat is reserved (key files: future).","ru":"Безопасность / резерв. Безопасность и AAIF — то, что Trinity дарит миру; место зарезервировано (ключевые файлы: в будущем)."},"tools":[],"typecheckOk":true,"witness":"spec-only"}],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"c2b67a9d74c221b6e880e0ff86aede28c961c98ffa2c13553e84422d77af1bdb","counts":{"byLayer":{"Archetypal":9,"Physical":9,"Spiritual":9},"enabled":26,"episodesAttributed":0,"episodesTotal":386,"episodesUnattributed":386,"specOnly":27,"specPlusExperience":0,"specs":27,"typecheckOk":27,"withClaraRole":8,"withCrons":0,"withExperience":0,"withSkills":1,"withTools":5},"experienceSnapshot":{"attribution":{"fields":["agent_letter","letter","agent","agent_id","agents","owner"],"letters":["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","TI"],"rule":"A letter is assigned only from an agent field that is one letter A-Z, \"ti\"/\"27th\", \"t27/\", or \"agent-...\"; everything else is unattributed. See scripts/sync-agents-experience.mjs and specs/agents/README.md."},"counts":{"agentsWithEpisodes":0,"attributed":0,"episodes":386,"unattributed":386,"unreadableFiles":56},"generatedAt":"2026-09-09T17:16:31.473Z","sources":[{"commit":"ddceafb50cd0e620387161228fa2c9ae134047de","episodes":383,"files":440,"repo":"trinity","unreadable":56},{"commit":"93727f733e23baf032d54505095777f16676d70b","episodes":3,"files":2,"repo":"t27","unreadable":0}]},"generatedAt":"2026-09-15T15:22:20.637Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":27,"total":27},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":1407,"tools":92},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"version":1} diff --git a/apps/website/public/crons/spec-crons.json b/apps/website/public/crons/spec-crons.json index d84c40dfb3..c03343bb85 100644 --- a/apps/website/public/crons/spec-crons.json +++ b/apps/website/public/crons/spec-crons.json @@ -1 +1 @@ -{"codeOnly":[],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"21821955c2fb0e64ecfd2ffb8c53222c10fdb76e6e2b8fe4c0339f778c86a908","counts":{"byHost":{"github-actions":12,"inngest":6,"railway-cron":1,"timer":14},"codeOnly":0,"specOnly":0,"specPlusCode":33,"specs":33,"typecheckOk":33,"withRuns":0},"crons":[{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/ci.yml#L10","where":{"file":".github/workflows/ci.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/ci","KIND":"cron","NAME":"CI/CD Pipeline","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 2 * * *","SERVICE":".github/workflows/ci.yml","SUMMARY_EN":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/ci","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_ci","name":{"en":"CI/CD Pipeline"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/999-multibots-telegraf/actions/workflows/ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"8aea8946d266dd32d1455a5ae70c1b8a3b79f0ee4ac7889f68f14d0918094484","specPath":"specs/crons/999-multibots-telegraf-ci.t27","summary":{"en":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","ru":"Раз в день прогоняет весь конвейер сборки, проверки типов и тестов, чтобы зависимость, гниющая без пуша, всё равно была поймана."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/security.yml#L10","where":{"file":".github/workflows/security.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/security","KIND":"cron","NAME":"Security Checks","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 3 * * 0","SERVICE":".github/workflows/security.yml","SUMMARY_EN":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/security","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_security","name":{"en":"Security Checks"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/999-multibots-telegraf/actions/workflows/security.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"85fd8a7d31b783c57da0443c9ca2156d6d786867bea9dfee682f6208f876e91c","specPath":"specs/crons/999-multibots-telegraf-security.t27","summary":{"en":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","ru":"Еженедельная проверка безопасности: поиск секретов по всей истории, аудит зависимостей и сканирование кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/formal-mutation.yml#L25","where":{"file":".github/workflows/formal-mutation.yml","host":"github-actions","line":25,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/formal-mutation","KIND":"cron","NAME":"formal-mutation","NOTE":"Weekly rather than per-push because a full run costs about thirty yosys invocations.","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 5 * * 1","SERVICE":".github/workflows/formal-mutation.yml","SUMMARY_EN":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/formal-mutation","inSpecCorpus":false,"messages":[],"moduleName":"cron_t27_formal_mutation","name":{"en":"formal-mutation"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/t27/actions/workflows/formal-mutation.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","specPath":"specs/crons/t27-formal-mutation.t27","summary":{"en":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","ru":"Раз в неделю мутирует сгенерированный RTL и требует, чтобы каждый формальный гейт покраснел на своей мутации — доказательство, что гейты кусаются."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/pr-dashboard.yml#L6","where":{"file":".github/workflows/pr-dashboard.yml","host":"github-actions","line":6,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/pr-dashboard","KIND":"cron","NAME":"PR Dashboard","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":".github/workflows/pr-dashboard.yml","SUMMARY_EN":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/pr-dashboard","inSpecCorpus":false,"messages":[],"moduleName":"cron_t27_pr_dashboard","name":{"en":"PR Dashboard"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/t27/actions/workflows/pr-dashboard.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"a16c8b2d502ca53955b1e51f3816d111ac056e5fe80904edbbc52fc269e45a92","specPath":"specs/crons/t27-pr-dashboard.t27","summary":{"en":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","ru":"Каждый час пересобирает панель pull request из текущего состояния открытых PR."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-cron-cleanup.yml#L4","where":{"file":".github/workflows/agent-cron-cleanup.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-cron-cleanup","KIND":"cron","NAME":"Trinity Agent Cron Cleanup","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 */2 * * *","SERVICE":".github/workflows/agent-cron-cleanup.yml","SUMMARY_EN":"Finds agent deployments that got stuck and kills them, every two hours.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-cron-cleanup","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_agent_cron_cleanup","name":{"en":"Trinity Agent Cron Cleanup"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/agent-cron-cleanup.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f4db9e04ccb4ab2e3a1e501a15c2824109b7827d910ebf70874e5ab1ded9c6cf","specPath":"specs/crons/trinity-agent-cron-cleanup.t27","summary":{"en":"Finds agent deployments that got stuck and kills them, every two hours.","ru":"Каждые два часа находит застрявшие деплои агентов и убивает их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-queue-drain.yml#L4","where":{"file":".github/workflows/agent-queue-drain.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-queue-drain","KIND":"cron","NAME":"Trinity Agent Queue Drain","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"dispatches agent-spawn-pool.yml for a queued issue; no named skill invocation found in source","SCHEDULE":"*/5 * * * *","SERVICE":".github/workflows/agent-queue-drain.yml","SUMMARY_EN":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-queue-drain","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_agent_queue_drain","name":{"en":"Trinity Agent Queue Drain"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/agent-queue-drain.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"e334d5dc5fc0c176e420a131ea712b9f8d2e1c03b56a36388a683081b5defda3","specPath":"specs/crons/trinity-agent-queue-drain.t27","summary":{"en":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","ru":"Каждые пять минут ищет задачи в очереди и свободные слоты агентов и запускает следующего агента, когда есть место."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/brain-ci.yml#L11","where":{"file":".github/workflows/brain-ci.yml","host":"github-actions","line":11,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/brain-ci","KIND":"cron","NAME":"S³AI Brain CI — \"Functional MRI\" Gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * 0","SERVICE":".github/workflows/brain-ci.yml","SUMMARY_EN":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/brain-ci","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_brain_ci","name":{"en":"S³AI Brain CI — \"Functional MRI\" Gate"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/brain-ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"c8cd980319751e2b53501dc645f1beb6980bdbf77adbb98a158a12be441d957e","specPath":"specs/crons/trinity-brain-ci.t27","summary":{"en":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","ru":"Еженедельный стресс-тест мозга — длинная версия гейта здоровья, который получает каждый коммит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/codegen.yml#L10","where":{"file":".github/workflows/codegen.yml","host":"github-actions","line":10,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/codegen","KIND":"cron","NAME":"Codegen Validation","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * *","SERVICE":".github/workflows/codegen.yml","SUMMARY_EN":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/codegen","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_codegen","name":{"en":"Codegen Validation"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/codegen.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"d71a2dd240cabe9e1e5d667259d245209ec4532632c30328971e84ec4cbc4bd6","specPath":"specs/crons/trinity-codegen.t27","summary":{"en":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","ru":"Раз в день проверяет генератор кода VIBEE независимо от того, пушил ли кто-нибудь."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/discover-callers.yml#L16","where":{"file":".github/workflows/discover-callers.yml","host":"github-actions","line":16,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/discover-callers","KIND":"cron","NAME":"Discover RTL check callers","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"41 5 * * *","SERVICE":".github/workflows/discover-callers.yml","SUMMARY_EN":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/discover-callers","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_discover_callers","name":{"en":"Discover RTL check callers"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/discover-callers.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"1aa5ec92373f3a0a9df24da027b852896fc303ec4eb50e4ee780d9abdea5aced","specPath":"specs/crons/trinity-discover-callers.t27","summary":{"en":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","ru":"Читает GitHub в поисках репозиториев, запускающих RTL-проверку, чтобы галерея считала своих пользователей сама."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/pages-health-check.yml#L17","where":{"file":".github/workflows/pages-health-check.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/pages-health-check","KIND":"cron","NAME":"Pages Health Check","NOTE":"An earlier version judged a bare status code, failed ninety-six times a day on a site that was up, and dispatched a redeploy each time.","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/15 * * * *","SERVICE":".github/workflows/pages-health-check.yml","SUMMARY_EN":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/pages-health-check","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_pages_health_check","name":{"en":"Pages Health Check"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/pages-health-check.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f8199eaa1c9707bff5ba89d553a644725b072fce2f7c4c5de7dfe4b6e9620ac1","specPath":"specs/crons/trinity-pages-health-check.t27","summary":{"en":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","ru":"Каждые пятнадцать минут запрашивает опубликованный сайт, следует редиректу и передеплоит только когда свидетельства говорят, что сломан именно деплой."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/signal-health-self.yml#L17","where":{"file":".github/workflows/signal-health-self.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/signal-health-self","KIND":"cron","NAME":"Signal health (self)","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"23 4 * * *","SERVICE":".github/workflows/signal-health-self.yml","SUMMARY_EN":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/signal-health-self","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_signal_health_self","name":{"en":"Signal health (self)"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/signal-health-self.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"b5bd1483d24af17707d8fcf03dbb6f011bc8462773423ebe9b8ee4e506a76a4e","specPath":"specs/crons/trinity-signal-health-self.t27","summary":{"en":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","ru":"Применяет проверку signal-health к репозиторию, который её продаёт, и записывает числа в данные сайта."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/site-live-gate.yml#L33","where":{"file":".github/workflows/site-live-gate.yml","host":"github-actions","line":33,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/site-live-gate","KIND":"cron","NAME":"Site live gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"17 6 * * *","SERVICE":".github/workflows/site-live-gate.yml","SUMMARY_EN":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/site-live-gate","inSpecCorpus":false,"messages":[],"moduleName":"cron_trinity_site_live_gate","name":{"en":"Site live gate"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/site-live-gate.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"76ed9aa7465a9ba704074563535c41d2df1fcfa2ac76059bfe2eb5e3e52c5933","specPath":"specs/crons/trinity-site-live-gate.t27","summary":{"en":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","ru":"Сравнивает бандл с контент-хешем на апексе со сборкой main, чтобы «задеплоено» означало, что читатель это видит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/training/checkStuckTrainings.ts#L53","where":{"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","host":"railway:999-multibots-telegraf","line":53,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/check-stuck-trainings","KIND":"cron","NAME":"check-stuck-trainings","NOTE":"Records whose Replicate id is still a placeholder are skipped, because there is nothing on the provider to ask about.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts","SUMMARY_EN":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/check-stuck-trainings","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_check_stuck_trainings","name":{"en":"check-stuck-trainings"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"fb82b6e4149b8be9916c35694faaeca85b555a6e3044cd3bc35f4d836ce60e49","specPath":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27","summary":{"en":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","ru":"Находит обучения моделей, застрявшие в pending или processing дольше порога, и сверяет их с Replicate."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L56","where":{"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","host":"railway:999-multibots-telegraf","line":56,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/daily-sales-advisor","KIND":"cron","NAME":"daily-sales-advisor","NOTE":"One report per owner across all of their bots, assembled from the payments ledger rather than from a balance column.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 9 * * *","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","SUMMARY_EN":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/daily-sales-advisor","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_daily_sales_advisor","name":{"en":"daily-sales-advisor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"0e2f8e5085ed1ea2b4b2f7732c9f9de00fcd19fda8d13e1f735865aa2cd32179","specPath":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27","summary":{"en":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","ru":"Собирает каждому владельцу бота утренний отчёт: вчерашняя выручка, расходы недели и что реально покупали пользователи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L243","where":{"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","host":"railway:999-multibots-telegraf","line":243,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/health-check","KIND":"cron","NAME":"health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","SUMMARY_EN":"Probes the main API and the Inngest service every half hour and reports what answered.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/health-check","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_health_check","name":{"en":"health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"b1bf93d0a864129e5c53a03b96cfe5d52069b5b65a7472dcef61a58cd6b87e1f","specPath":"specs/crons/999-multibots-telegraf-health-check.t27","summary":{"en":"Probes the main API and the Inngest service every half hour and reports what answered.","ru":"Каждые полчаса опрашивает основной API и сервис Inngest и сообщает, кто ответил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/logMonitor.ts#L360","where":{"file":"src/inngest_app/functions/monitoring/logMonitor.ts","host":"railway:999-multibots-telegraf","line":360,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/log-monitor","KIND":"cron","NAME":"log-monitor","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts","SUMMARY_EN":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/log-monitor","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_log_monitor","name":{"en":"log-monitor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"3f1d2105328665203dc3850fea9f0245b7a6adbe5558e255756d168478812921","specPath":"specs/crons/999-multibots-telegraf-log-monitor.t27","summary":{"en":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","ru":"Раз в день читает логи приложения, поручает модели свести ошибки и предупреждения и отправляет дайджест в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/webhookHealthGuard.ts#L218","where":{"file":"src/inngest_app/functions/webhookHealthGuard.ts","host":"railway:999-multibots-telegraf","line":218,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/periodic-webhook-health-check","KIND":"cron","NAME":"periodic-webhook-health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts","SUMMARY_EN":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/periodic-webhook-health-check","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_periodic_webhook_health_check","name":{"en":"periodic-webhook-health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"a3b21a33a8a8022b527e3f46362fb6df63fb6f2e5ee642a439d88862dd4722f3","specPath":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27","summary":{"en":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","ru":"Каждый час проверяет оба URL вебхука Telegram и шлёт админу критическую тревогу, когда не отвечает ни один."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/skillDetector.ts#L32","where":{"file":"src/inngest_app/functions/analytics/skillDetector.ts","host":"railway:999-multibots-telegraf","line":32,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/skill-detector","KIND":"cron","NAME":"skill-detector","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"the \"skills\" it saves are bot prompt patterns, not Claude Code skills; no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts","SUMMARY_EN":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/skill-detector","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_skill_detector","name":{"en":"skill-detector"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"d228015ce607198f53341b0b9dfc55a2cd0616e69487598d0cbabc34cc6892cf","specPath":"specs/crons/999-multibots-telegraf-skill-detector.t27","summary":{"en":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","ru":"Раз в день ищет в успешных генерациях повторяющиеся паттерны моделей и промптов и сохраняет новые как переиспользуемые навыки бота."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","kind":"railway-cron","repoPrivate":true,"sourceUrl":null,"where":{"file":null,"host":"railway:jobsearch-cron","line":null,"service":"jobsearch-cron"}},"control":"railway-dashboard","discarded":0,"fields":{"CONTROL":"railway-dashboard","ENABLED":true,"HOST":"railway-cron","ID":"railway-cron/999/jobsearch-cron","KIND":"cron","NAME":"jobsearch-cron","NOTE":"The schedule is configured in the Railway dashboard for project 999 and is not readable from the checkout; the probe below is what this catalog can verify.","ON_FAILURE":"unknown","REPO":"railway","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"","SCHEDULE_NOTE":"configured in the Railway dashboard (project 999); not readable from the checkout","SERVICE":"jobsearch-cron","SUMMARY_EN":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","TZ":"UTC"},"health":"ok","id":"railway-cron/999/jobsearch-cron","inSpecCorpus":false,"messages":[],"moduleName":"cron_railway_jobsearch_cron","name":{"en":"jobsearch-cron"},"runNow":{"kind":"link","url":"https://railway.com/project/564d9ebd-7aa8-44fe-93ec-e0b03c87158d/service/3196472e-b885-43e0-b553-0644664e4496","via":"railway"},"runs":[],"runsResolved":[],"sha256":"8729edafdc8239d187c0f2b7d98238438d40ec439b39087e1654bb683366ec3a","specPath":"specs/crons/railway-jobsearch-cron.t27","summary":{"en":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","ru":"Сервис поиска вакансий по расписанию в проекте Railway, доступен на cron.t27.ai."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/scripts/agent-autopilot.ts#L1118","where":{"file":"apps/vibee-editor/render/scripts/agent-autopilot.ts","host":"railway:vibee-render","line":1118,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/agent-autopilot-L1118","INTERVAL_MS":1800000,"KIND":"cron","NAME":"agent-autopilot-L1118","NOTE":"Daemon mode only, under --loop or AUTOPILOT_LOOP=1; AUTOPILOT_INTERVAL_MS overrides the thirty-minute period, with a one-minute floor.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/scripts/agent-autopilot.ts:1118","SUMMARY_EN":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/agent-autopilot-L1118","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_agent_autopilot_L1118","name":{"en":"agent-autopilot-L1118"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"39c25a3a6c40cff4e3ad9aa098e7492803a9cc78a935e74966c4f95939c85228","specPath":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27","summary":{"en":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","ru":"Один цикл автопилота — проход генерации и затем тик канала; тик пропускается целиком, если предыдущий цикл ещё идёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/bot-owner-billing.ts#L474","where":{"file":"src/services/bot-owner-billing.ts","host":"railway:999-multibots-telegraf","line":474,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/bot-owner-billing-L474","INTERVAL_MS":86400000,"KIND":"cron","NAME":"bot-owner-billing-L474","NOTE":"The first run after a restart is skipped on purpose, and an owner whose payments cannot be read is left alone rather than accused.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/bot-owner-billing.ts:474","SUMMARY_EN":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/bot-owner-billing-L474","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_bot_owner_billing_L474","name":{"en":"bot-owner-billing-L474"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"b2fb3c2d66630369c42ae4aba3f80538661c5591de99f1b088c569185be83197","specPath":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27","summary":{"en":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","ru":"Пересчитывает долг каждого владельца бота по журналу платежей, предупреждает на мягком, тревожном и критическом порогах и отключает бота, три дня остающегося критическим."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/crmProactive.ts#L375","where":{"file":"src/services/crmProactive.ts","host":"railway:999-multibots-telegraf","line":375,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/crmProactive-L375","INTERVAL_MS":1800000,"KIND":"cron","NAME":"crmProactive-L375","NOTE":"The period is CRM_PROACTIVE_MINUTES from src/index.ts, thirty minutes by default; the first sweep waits two minutes after start.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/crmProactive.ts:375","SUMMARY_EN":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/crmProactive-L375","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_crmProactive_L375","name":{"en":"crmProactive-L375"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"68cef02f70476660ff1d1df04010d0a3d6cbe249c35da94d97f4c2a641e57d5e","specPath":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27","summary":{"en":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","ru":"Один проактивный ход продавца для владельца: обходит очередь CRM и кладёт перед ним следующую карточку-черновик без просьбы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/generate-jobs.ts#L164","where":{"file":"apps/vibee-editor/render/generate-jobs.ts","host":"railway:vibee-render","line":164,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/generate-jobs-L164","INTERVAL_MS":300000,"KIND":"cron","NAME":"generate-jobs-L164","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/generate-jobs.ts:164","SUMMARY_EN":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/generate-jobs-L164","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_generate_jobs_L164","name":{"en":"generate-jobs-L164"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"c72b9a7b5fa9804c513eb5c2ebff0868bbf2a7226347826e64bbd34f6bef6475","specPath":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27","summary":{"en":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","ru":"Через час после завершения выметает из памяти законченные задания генерации, когда потерявший соединение клиент успел забрать результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L318","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":318,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L318","INTERVAL_MS":60000,"KIND":"cron","NAME":"notificationHandler-L318","NOTE":"Wrapped in an exclusive tick, so two bot processes cannot deliver the same notification twice.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:318","SUMMARY_EN":"Drains the notification queue and delivers the Telegram messages waiting in it.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L318","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L318","name":{"en":"notificationHandler-L318"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"9114a4bdfb275175f60c5a111bdc07bbfcbb62c55a0871176b8f93e3436bdd9f","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27","summary":{"en":"Drains the notification queue and delivers the Telegram messages waiting in it.","ru":"Разгружает очередь уведомлений и доставляет ждущие в ней сообщения Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L324","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":324,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L324","INTERVAL_MS":3600000,"KIND":"cron","NAME":"notificationHandler-L324","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:324","SUMMARY_EN":"Deletes notification messages old enough that nobody is going to read them.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L324","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L324","name":{"en":"notificationHandler-L324"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"44d2e3c8843519a512128399557c8d7af29ca2491f769f91c845dc44e0b63f9a","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27","summary":{"en":"Deletes notification messages old enough that nobody is going to read them.","ru":"Удаляет уведомления, настолько старые, что их уже никто не прочитает."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/utils/production-monitor.ts#L80","where":{"file":"src/utils/production-monitor.ts","host":"railway:999-multibots-telegraf","line":80,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":false,"HOST":"timer","ID":"timer/999-multibots-telegraf/production-monitor-L80","INTERVAL_MS":300000,"KIND":"cron","NAME":"production-monitor-L80","NOTE":"Started only by running this module from the command line with the `monitor` argument; the bot's own entry point never starts it.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/utils/production-monitor.ts:80","SUMMARY_EN":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/production-monitor-L80","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_production_monitor_L80","name":{"en":"production-monitor-L80"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"880d0b6c01b2b1e4cc9bc92c11ef300b8335bdf8ca842308bca7d3fd7e979254","specPath":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27","summary":{"en":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","ru":"Повторяет проверки контейнера, nginx, порта, домена, вебхука и ресурсов системы и применяет включённые исправления."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/provider-health-monitor.ts#L344","where":{"file":"src/services/provider-health-monitor.ts","host":"railway:999-multibots-telegraf","line":344,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/provider-health-monitor-L344","INTERVAL_MS":300000,"KIND":"cron","NAME":"provider-health-monitor-L344","NOTE":"Providers listed in HEALTH_SKIP_PROVIDERS are deliberately not watched and do not raise the alarm.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/provider-health-monitor.ts:344","SUMMARY_EN":"Checks every AI provider that is not parked and records whether it is currently answering.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/provider-health-monitor-L344","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_provider_health_monitor_L344","name":{"en":"provider-health-monitor-L344"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"0044630e40dc2673a2d1210e848f1a3cd41cc2b21b541bec98e305f0192a2de7","specPath":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27","summary":{"en":"Checks every AI provider that is not parked and records whether it is currently answering.","ru":"Проверяет каждого не отключённого AI-провайдера и записывает, отвечает ли он сейчас."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L10845","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":10845,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L10845","INTERVAL_MS":30000,"KIND":"cron","NAME":"render-server-L10845","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:10845","SUMMARY_EN":"Pings every websocket peer and drops the ones that did not answer the previous round.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L10845","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L10845","name":{"en":"render-server-L10845"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"bfcd81ea5f3b3040dccce76d91dd699347e49c2df843529218ee138560e2d924","specPath":"specs/crons/999-multibots-telegraf-render-server-L10845.t27","summary":{"en":"Pings every websocket peer and drops the ones that did not answer the previous round.","ru":"Пингует каждого websocket-пира и отключает тех, кто не ответил в прошлом раунде."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2301","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2301,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2301","INTERVAL_MS":60000,"KIND":"cron","NAME":"render-server-L2301","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2301","SUMMARY_EN":"Removes render jobs older than an hour from the in-memory job map.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2301","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2301","name":{"en":"render-server-L2301"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"37e3dca7f4836af5ecfde5eaaa2aa993ac19087ac902adbb4015c04527a2af62","specPath":"specs/crons/999-multibots-telegraf-render-server-L2301.t27","summary":{"en":"Removes render jobs older than an hour from the in-memory job map.","ru":"Удаляет из карты в памяти задания рендера старше часа."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2325","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2325,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2325","INTERVAL_MS":600000,"KIND":"cron","NAME":"render-server-L2325","NOTE":"Checks often and writes rarely: the cursor lives in the database, because this Railway project has no volume and a deploy wipes local state.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2325","SUMMARY_EN":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2325","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2325","name":{"en":"render-server-L2325"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"11b24d4332b7e356f77b233a20d578c3ec31da71ff34be37d16d29d7d4471d5b","specPath":"specs/crons/999-multibots-telegraf-render-server-L2325.t27","summary":{"en":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","ru":"Читает журнал улья и доставляет отчёт королевы хранителям: тревоги — сразу, обычные события — пакетом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L919","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":919,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L919","INTERVAL_MS":5000,"KIND":"cron","NAME":"render-server-L919","NOTE":"Only starts when a session signing key is configured; a deployed render server refuses to boot without one.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:919","SUMMARY_EN":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L919","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L919","name":{"en":"render-server-L919"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"f86d77af65dfb35cc4adf4202c8f06577e82d7856edbcac656ef735eeba19a52","specPath":"specs/crons/999-multibots-telegraf-render-server-L919.t27","summary":{"en":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","ru":"Перечитывает из Postgres список отозванных сессий, чтобы отозванная сессия браузера перестала приниматься."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/modules/videoGenerator/taskCache.ts#L27","where":{"file":"src/modules/videoGenerator/taskCache.ts","host":"railway:999-multibots-telegraf","line":27,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/taskCache-L27","INTERVAL_MS":300000,"KIND":"cron","NAME":"taskCache-L27","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/modules/videoGenerator/taskCache.ts:27","SUMMARY_EN":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/taskCache-L27","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_taskCache_L27","name":{"en":"taskCache-L27"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"ca7f9a9edce47fe23ef59515d87ba7f391b878a9c5115b43e9c32b4a70fe90db","specPath":"specs/crons/999-multibots-telegraf-taskCache-L27.t27","summary":{"en":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","ru":"Сбрасывает записи кэша видеогенерации старше пятнадцати минут, чтобы завершённая задача не блокировала следующий запрос."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/video-task-store.ts#L156","where":{"file":"src/services/video-task-store.ts","host":"railway:999-multibots-telegraf","line":156,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/video-task-store-L156","INTERVAL_MS":600000,"KIND":"cron","NAME":"video-task-store-L156","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/video-task-store.ts:156","SUMMARY_EN":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/video-task-store-L156","inSpecCorpus":false,"messages":[],"moduleName":"cron_999_multibots_telegraf_video_task_store_L156","name":{"en":"video-task-store-L156"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"dc4e3d6c76cac57a36074da8a9d6aac8df1f1c55bb68a593c2cadf94c94351b1","specPath":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27","summary":{"en":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","ru":"Забывает видеозадачи старше часа и переписывает хранилище на диск, если что-то было удалено."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-09-13T03:52:07.716Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":33,"total":33},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":856,"tools":92},"version":1} +{"codeOnly":[],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"7328f0dbe47b41f90e77fd7695340ffba8e569dbaee59729705ceaca4e38989e","counts":{"byHost":{"github-actions":12,"inngest":6,"railway-cron":1,"timer":14},"codeOnly":0,"specOnly":0,"specPlusCode":33,"specs":33,"typecheckOk":33,"withRuns":0},"crons":[{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/ci.yml#L10","where":{"file":".github/workflows/ci.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/ci","KIND":"cron","NAME":"CI/CD Pipeline","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 2 * * *","SERVICE":".github/workflows/ci.yml","SUMMARY_EN":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/ci","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_ci","name":{"en":"CI/CD Pipeline"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/999-multibots-telegraf/actions/workflows/ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"8aea8946d266dd32d1455a5ae70c1b8a3b79f0ee4ac7889f68f14d0918094484","specPath":"specs/crons/999-multibots-telegraf-ci.t27","summary":{"en":"Runs the whole build, type-check and test pipeline once a day so a dependency that rots without a push still gets caught.","ru":"Раз в день прогоняет весь конвейер сборки, проверки типов и тестов, чтобы зависимость, гниющая без пуша, всё равно была поймана."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","kind":"github-actions","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/.github/workflows/security.yml#L10","where":{"file":".github/workflows/security.yml","host":"github-actions","line":10,"service":null}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"github-actions","ID":"github-actions/999-multibots-telegraf/security","KIND":"cron","NAME":"Security Checks","NOTE":"GitHub Actions on this repository have not run since 2026-06-02 (billing); the schedule stands in the file but does not fire.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 3 * * 0","SERVICE":".github/workflows/security.yml","SUMMARY_EN":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","TZ":"UTC"},"health":"ok","id":"github-actions/999-multibots-telegraf/security","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_security","name":{"en":"Security Checks"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/999-multibots-telegraf/actions/workflows/security.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"85fd8a7d31b783c57da0443c9ca2156d6d786867bea9dfee682f6208f876e91c","specPath":"specs/crons/999-multibots-telegraf-security.t27","summary":{"en":"Runs the weekly security sweep: secret detection over the full history, dependency audit and code scanning.","ru":"Еженедельная проверка безопасности: поиск секретов по всей истории, аудит зависимостей и сканирование кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/formal-mutation.yml#L25","where":{"file":".github/workflows/formal-mutation.yml","host":"github-actions","line":25,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/formal-mutation","KIND":"cron","NAME":"formal-mutation","NOTE":"Weekly rather than per-push because a full run costs about thirty yosys invocations.","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 5 * * 1","SERVICE":".github/workflows/formal-mutation.yml","SUMMARY_EN":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/formal-mutation","inSpecCorpus":true,"messages":[],"moduleName":"cron_t27_formal_mutation","name":{"en":"formal-mutation"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/t27/actions/workflows/formal-mutation.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","specPath":"specs/crons/t27-formal-mutation.t27","summary":{"en":"Proves the formal gates actually bite by mutating the generated RTL once a week and requiring each gate to go red for its own mutation.","ru":"Раз в неделю мутирует сгенерированный RTL и требует, чтобы каждый формальный гейт покраснел на своей мутации — доказательство, что гейты кусаются."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/t27/blob/e804cd062af9bd4424a8579ea54b1f21381580de/.github/workflows/pr-dashboard.yml#L6","where":{"file":".github/workflows/pr-dashboard.yml","host":"github-actions","line":6,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/t27/pr-dashboard","KIND":"cron","NAME":"PR Dashboard","ON_FAILURE":"log","REPO":"t27","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":".github/workflows/pr-dashboard.yml","SUMMARY_EN":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","TZ":"UTC"},"health":"ok","id":"github-actions/t27/pr-dashboard","inSpecCorpus":true,"messages":[],"moduleName":"cron_t27_pr_dashboard","name":{"en":"PR Dashboard"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/t27/actions/workflows/pr-dashboard.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"a16c8b2d502ca53955b1e51f3816d111ac056e5fe80904edbbc52fc269e45a92","specPath":"specs/crons/t27-pr-dashboard.t27","summary":{"en":"Rebuilds the pull-request dashboard every hour from the current state of the open pull requests.","ru":"Каждый час пересобирает панель pull request из текущего состояния открытых PR."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-cron-cleanup.yml#L4","where":{"file":".github/workflows/agent-cron-cleanup.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-cron-cleanup","KIND":"cron","NAME":"Trinity Agent Cron Cleanup","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 */2 * * *","SERVICE":".github/workflows/agent-cron-cleanup.yml","SUMMARY_EN":"Finds agent deployments that got stuck and kills them, every two hours.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-cron-cleanup","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_agent_cron_cleanup","name":{"en":"Trinity Agent Cron Cleanup"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/agent-cron-cleanup.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f4db9e04ccb4ab2e3a1e501a15c2824109b7827d910ebf70874e5ab1ded9c6cf","specPath":"specs/crons/trinity-agent-cron-cleanup.t27","summary":{"en":"Finds agent deployments that got stuck and kills them, every two hours.","ru":"Каждые два часа находит застрявшие деплои агентов и убивает их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/agent-queue-drain.yml#L4","where":{"file":".github/workflows/agent-queue-drain.yml","host":"github-actions","line":4,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/agent-queue-drain","KIND":"cron","NAME":"Trinity Agent Queue Drain","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"dispatches agent-spawn-pool.yml for a queued issue; no named skill invocation found in source","SCHEDULE":"*/5 * * * *","SERVICE":".github/workflows/agent-queue-drain.yml","SUMMARY_EN":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/agent-queue-drain","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_agent_queue_drain","name":{"en":"Trinity Agent Queue Drain"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/agent-queue-drain.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"e334d5dc5fc0c176e420a131ea712b9f8d2e1c03b56a36388a683081b5defda3","specPath":"specs/crons/trinity-agent-queue-drain.t27","summary":{"en":"Looks for queued issues and free agent slots every five minutes and starts the next agent when there is room.","ru":"Каждые пять минут ищет задачи в очереди и свободные слоты агентов и запускает следующего агента, когда есть место."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/brain-ci.yml#L11","where":{"file":".github/workflows/brain-ci.yml","host":"github-actions","line":11,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/brain-ci","KIND":"cron","NAME":"S³AI Brain CI — \"Functional MRI\" Gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * 0","SERVICE":".github/workflows/brain-ci.yml","SUMMARY_EN":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/brain-ci","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_brain_ci","name":{"en":"S³AI Brain CI — \"Functional MRI\" Gate"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/brain-ci.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"c8cd980319751e2b53501dc645f1beb6980bdbf77adbb98a158a12be441d957e","specPath":"specs/crons/trinity-brain-ci.t27","summary":{"en":"Runs the weekly brain stress test, the long version of the health gate that every commit already gets.","ru":"Еженедельный стресс-тест мозга — длинная версия гейта здоровья, который получает каждый коммит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/codegen.yml#L10","where":{"file":".github/workflows/codegen.yml","host":"github-actions","line":10,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/codegen","KIND":"cron","NAME":"Codegen Validation","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 0 * * *","SERVICE":".github/workflows/codegen.yml","SUMMARY_EN":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/codegen","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_codegen","name":{"en":"Codegen Validation"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/codegen.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"d71a2dd240cabe9e1e5d667259d245209ec4532632c30328971e84ec4cbc4bd6","specPath":"specs/crons/trinity-codegen.t27","summary":{"en":"Validates the VIBEE code generator once a day, independently of whether anyone pushed.","ru":"Раз в день проверяет генератор кода VIBEE независимо от того, пушил ли кто-нибудь."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/discover-callers.yml#L16","where":{"file":".github/workflows/discover-callers.yml","host":"github-actions","line":16,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/discover-callers","KIND":"cron","NAME":"Discover RTL check callers","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"41 5 * * *","SERVICE":".github/workflows/discover-callers.yml","SUMMARY_EN":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/discover-callers","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_discover_callers","name":{"en":"Discover RTL check callers"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/discover-callers.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"1aa5ec92373f3a0a9df24da027b852896fc303ec4eb50e4ee780d9abdea5aced","specPath":"specs/crons/trinity-discover-callers.t27","summary":{"en":"Reads GitHub for repositories that run the RTL check, so the gallery counts its own users instead of being hand-written.","ru":"Читает GitHub в поисках репозиториев, запускающих RTL-проверку, чтобы галерея считала своих пользователей сама."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/pages-health-check.yml#L17","where":{"file":".github/workflows/pages-health-check.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/pages-health-check","KIND":"cron","NAME":"Pages Health Check","NOTE":"An earlier version judged a bare status code, failed ninety-six times a day on a site that was up, and dispatched a redeploy each time.","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/15 * * * *","SERVICE":".github/workflows/pages-health-check.yml","SUMMARY_EN":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/pages-health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_pages_health_check","name":{"en":"Pages Health Check"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/pages-health-check.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"f8199eaa1c9707bff5ba89d553a644725b072fce2f7c4c5de7dfe4b6e9620ac1","specPath":"specs/crons/trinity-pages-health-check.t27","summary":{"en":"Fetches the published site every fifteen minutes, follows the redirect, and redeploys only when the evidence says the deploy is what broke.","ru":"Каждые пятнадцать минут запрашивает опубликованный сайт, следует редиректу и передеплоит только когда свидетельства говорят, что сломан именно деплой."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/signal-health-self.yml#L17","where":{"file":".github/workflows/signal-health-self.yml","host":"github-actions","line":17,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/signal-health-self","KIND":"cron","NAME":"Signal health (self)","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"23 4 * * *","SERVICE":".github/workflows/signal-health-self.yml","SUMMARY_EN":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/signal-health-self","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_signal_health_self","name":{"en":"Signal health (self)"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/signal-health-self.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"b5bd1483d24af17707d8fcf03dbb6f011bc8462773423ebe9b8ee4e506a76a4e","specPath":"specs/crons/trinity-signal-health-self.t27","summary":{"en":"Applies the signal-health check to the repository that sells it and writes the numbers into the website data.","ru":"Применяет проверку signal-health к репозиторию, который её продаёт, и записывает числа в данные сайта."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"github-actions","repoPrivate":false,"sourceUrl":"https://github.com/gHashTag/trinity/blob/cdc1d68d697fca070d9ad0f2d36aa4074de140f4/.github/workflows/site-live-gate.yml#L33","where":{"file":".github/workflows/site-live-gate.yml","host":"github-actions","line":33,"service":null}},"control":"github-actions-dispatch","discarded":0,"fields":{"CONTROL":"github-actions-dispatch","ENABLED":true,"HOST":"github-actions","ID":"github-actions/trinity/site-live-gate","KIND":"cron","NAME":"Site live gate","ON_FAILURE":"log","REPO":"trinity","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"17 6 * * *","SERVICE":".github/workflows/site-live-gate.yml","SUMMARY_EN":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","TZ":"UTC"},"health":"ok","id":"github-actions/trinity/site-live-gate","inSpecCorpus":true,"messages":[],"moduleName":"cron_trinity_site_live_gate","name":{"en":"Site live gate"},"runNow":{"kind":"link","url":"https://github.com/gHashTag/trinity/actions/workflows/site-live-gate.yml","via":"github-actions"},"runs":[],"runsResolved":[],"sha256":"76ed9aa7465a9ba704074563535c41d2df1fcfa2ac76059bfe2eb5e3e52c5933","specPath":"specs/crons/trinity-site-live-gate.t27","summary":{"en":"Compares the content-hashed entry bundle served at the apex against a build of main, so that 'deployed' means a reader can actually see it.","ru":"Сравнивает бандл с контент-хешем на апексе со сборкой main, чтобы «задеплоено» означало, что читатель это видит."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/training/checkStuckTrainings.ts#L53","where":{"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","host":"railway:999-multibots-telegraf","line":53,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/check-stuck-trainings","KIND":"cron","NAME":"check-stuck-trainings","NOTE":"Records whose Replicate id is still a placeholder are skipped, because there is nothing on the provider to ask about.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts","SUMMARY_EN":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/check-stuck-trainings","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_check_stuck_trainings","name":{"en":"check-stuck-trainings"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"fb82b6e4149b8be9916c35694faaeca85b555a6e3044cd3bc35f4d836ce60e49","specPath":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27","summary":{"en":"Finds model trainings still marked pending or processing past the stuck threshold and reconciles them against Replicate.","ru":"Находит обучения моделей, застрявшие в pending или processing дольше порога, и сверяет их с Replicate."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L56","where":{"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","host":"railway:999-multibots-telegraf","line":56,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/daily-sales-advisor","KIND":"cron","NAME":"daily-sales-advisor","NOTE":"One report per owner across all of their bots, assembled from the payments ledger rather than from a balance column.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 9 * * *","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","SUMMARY_EN":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/daily-sales-advisor","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_daily_sales_advisor","name":{"en":"daily-sales-advisor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"0e2f8e5085ed1ea2b4b2f7732c9f9de00fcd19fda8d13e1f735865aa2cd32179","specPath":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27","summary":{"en":"Builds every bot owner a morning report of yesterday's revenue, the week's costs and which services their users actually bought.","ru":"Собирает каждому владельцу бота утренний отчёт: вчерашняя выручка, расходы недели и что реально покупали пользователи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L243","where":{"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","host":"railway:999-multibots-telegraf","line":243,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/health-check","KIND":"cron","NAME":"health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"*/30 * * * *","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","SUMMARY_EN":"Probes the main API and the Inngest service every half hour and reports what answered.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_health_check","name":{"en":"health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"b1bf93d0a864129e5c53a03b96cfe5d52069b5b65a7472dcef61a58cd6b87e1f","specPath":"specs/crons/999-multibots-telegraf-health-check.t27","summary":{"en":"Probes the main API and the Inngest service every half hour and reports what answered.","ru":"Каждые полчаса опрашивает основной API и сервис Inngest и сообщает, кто ответил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/monitoring/logMonitor.ts#L360","where":{"file":"src/inngest_app/functions/monitoring/logMonitor.ts","host":"railway:999-multibots-telegraf","line":360,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/log-monitor","KIND":"cron","NAME":"log-monitor","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts","SUMMARY_EN":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/log-monitor","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_log_monitor","name":{"en":"log-monitor"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"3f1d2105328665203dc3850fea9f0245b7a6adbe5558e255756d168478812921","specPath":"specs/crons/999-multibots-telegraf-log-monitor.t27","summary":{"en":"Reads the application logs once a day, has a model summarise the errors and warnings, and sends the digest to Telegram.","ru":"Раз в день читает логи приложения, поручает модели свести ошибки и предупреждения и отправляет дайджест в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/webhookHealthGuard.ts#L218","where":{"file":"src/inngest_app/functions/webhookHealthGuard.ts","host":"railway:999-multibots-telegraf","line":218,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/periodic-webhook-health-check","KIND":"cron","NAME":"periodic-webhook-health-check","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"0 * * * *","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts","SUMMARY_EN":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/periodic-webhook-health-check","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_periodic_webhook_health_check","name":{"en":"periodic-webhook-health-check"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"a3b21a33a8a8022b527e3f46362fb6df63fb6f2e5ee642a439d88862dd4722f3","specPath":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27","summary":{"en":"Tests both Telegram webhook URLs every hour and sends the admin a critical alarm when neither of them answers.","ru":"Каждый час проверяет оба URL вебхука Telegram и шлёт админу критическую тревогу, когда не отвечает ни один."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"inngest","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/inngest_app/functions/analytics/skillDetector.ts#L32","where":{"file":"src/inngest_app/functions/analytics/skillDetector.ts","host":"railway:999-multibots-telegraf","line":32,"service":"inngest"}},"control":"inngest-dashboard","discarded":0,"fields":{"CONTROL":"inngest-dashboard","ENABLED":true,"HOST":"inngest","ID":"inngest/999-multibots-telegraf/skill-detector","KIND":"cron","NAME":"skill-detector","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"the \"skills\" it saves are bot prompt patterns, not Claude Code skills; no skill invocation found in source","SCHEDULE":"0 10 * * *","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts","SUMMARY_EN":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","TZ":"UTC"},"health":"ok","id":"inngest/999-multibots-telegraf/skill-detector","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_skill_detector","name":{"en":"skill-detector"},"runNow":{"kind":"link","url":"https://inngestinngest-production-6a21.up.railway.app","via":"inngest"},"runs":[],"runsResolved":[],"sha256":"d228015ce607198f53341b0b9dfc55a2cd0616e69487598d0cbabc34cc6892cf","specPath":"specs/crons/999-multibots-telegraf-skill-detector.t27","summary":{"en":"Mines successful generations for repeated model and prompt patterns once a day and saves the new ones as reusable skills.","ru":"Раз в день ищет в успешных генерациях повторяющиеся паттерны моделей и промптов и сохраняет новые как переиспользуемые навыки бота."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","kind":"railway-cron","repoPrivate":true,"sourceUrl":null,"where":{"file":null,"host":"railway:jobsearch-cron","line":null,"service":"jobsearch-cron"}},"control":"railway-dashboard","discarded":0,"fields":{"CONTROL":"railway-dashboard","ENABLED":true,"HOST":"railway-cron","ID":"railway-cron/999/jobsearch-cron","KIND":"cron","NAME":"jobsearch-cron","NOTE":"The schedule is configured in the Railway dashboard for project 999 and is not readable from the checkout; the probe below is what this catalog can verify.","ON_FAILURE":"unknown","REPO":"railway","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SCHEDULE":"","SCHEDULE_NOTE":"configured in the Railway dashboard (project 999); not readable from the checkout","SERVICE":"jobsearch-cron","SUMMARY_EN":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","TZ":"UTC"},"health":"ok","id":"railway-cron/999/jobsearch-cron","inSpecCorpus":true,"messages":[],"moduleName":"cron_railway_jobsearch_cron","name":{"en":"jobsearch-cron"},"runNow":{"kind":"link","url":"https://railway.com/project/564d9ebd-7aa8-44fe-93ec-e0b03c87158d/service/3196472e-b885-43e0-b553-0644664e4496","via":"railway"},"runs":[],"runsResolved":[],"sha256":"8729edafdc8239d187c0f2b7d98238438d40ec439b39087e1654bb683366ec3a","specPath":"specs/crons/railway-jobsearch-cron.t27","summary":{"en":"The scheduled job-search service of the Railway project, reachable at cron.t27.ai.","ru":"Сервис поиска вакансий по расписанию в проекте Railway, доступен на cron.t27.ai."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/scripts/agent-autopilot.ts#L1118","where":{"file":"apps/vibee-editor/render/scripts/agent-autopilot.ts","host":"railway:vibee-render","line":1118,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/agent-autopilot-L1118","INTERVAL_MS":1800000,"KIND":"cron","NAME":"agent-autopilot-L1118","NOTE":"Daemon mode only, under --loop or AUTOPILOT_LOOP=1; AUTOPILOT_INTERVAL_MS overrides the thirty-minute period, with a one-minute floor.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/scripts/agent-autopilot.ts:1118","SUMMARY_EN":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/agent-autopilot-L1118","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_agent_autopilot_L1118","name":{"en":"agent-autopilot-L1118"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"39c25a3a6c40cff4e3ad9aa098e7492803a9cc78a935e74966c4f95939c85228","specPath":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27","summary":{"en":"Runs one autopilot cycle -- the generation pass and then the channel tick -- and skips the tick entirely when the previous cycle is still running.","ru":"Один цикл автопилота — проход генерации и затем тик канала; тик пропускается целиком, если предыдущий цикл ещё идёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/bot-owner-billing.ts#L474","where":{"file":"src/services/bot-owner-billing.ts","host":"railway:999-multibots-telegraf","line":474,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/bot-owner-billing-L474","INTERVAL_MS":86400000,"KIND":"cron","NAME":"bot-owner-billing-L474","NOTE":"The first run after a restart is skipped on purpose, and an owner whose payments cannot be read is left alone rather than accused.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/bot-owner-billing.ts:474","SUMMARY_EN":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/bot-owner-billing-L474","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_bot_owner_billing_L474","name":{"en":"bot-owner-billing-L474"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"b2fb3c2d66630369c42ae4aba3f80538661c5591de99f1b088c569185be83197","specPath":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27","summary":{"en":"Recomputes every bot owner's debt from the payments ledger, warns them at the soft, warning and critical thresholds, and disables a bot that stays critical for three days.","ru":"Пересчитывает долг каждого владельца бота по журналу платежей, предупреждает на мягком, тревожном и критическом порогах и отключает бота, три дня остающегося критическим."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/crmProactive.ts#L375","where":{"file":"src/services/crmProactive.ts","host":"railway:999-multibots-telegraf","line":375,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/crmProactive-L375","INTERVAL_MS":1800000,"KIND":"cron","NAME":"crmProactive-L375","NOTE":"The period is CRM_PROACTIVE_MINUTES from src/index.ts, thirty minutes by default; the first sweep waits two minutes after start.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/crmProactive.ts:375","SUMMARY_EN":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/crmProactive-L375","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_crmProactive_L375","name":{"en":"crmProactive-L375"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"68cef02f70476660ff1d1df04010d0a3d6cbe249c35da94d97f4c2a641e57d5e","specPath":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27","summary":{"en":"Runs one proactive seller turn for the owner: walks the CRM queue and puts the next draft card in front of them without being asked.","ru":"Один проактивный ход продавца для владельца: обходит очередь CRM и кладёт перед ним следующую карточку-черновик без просьбы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/generate-jobs.ts#L164","where":{"file":"apps/vibee-editor/render/generate-jobs.ts","host":"railway:vibee-render","line":164,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/generate-jobs-L164","INTERVAL_MS":300000,"KIND":"cron","NAME":"generate-jobs-L164","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/generate-jobs.ts:164","SUMMARY_EN":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/generate-jobs-L164","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_generate_jobs_L164","name":{"en":"generate-jobs-L164"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"c72b9a7b5fa9804c513eb5c2ebff0868bbf2a7226347826e64bbd34f6bef6475","specPath":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27","summary":{"en":"Sweeps finished generation jobs out of memory an hour after they end, once a caller who lost the connection has had time to collect the result.","ru":"Через час после завершения выметает из памяти законченные задания генерации, когда потерявший соединение клиент успел забрать результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L318","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":318,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L318","INTERVAL_MS":60000,"KIND":"cron","NAME":"notificationHandler-L318","NOTE":"Wrapped in an exclusive tick, so two bot processes cannot deliver the same notification twice.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:318","SUMMARY_EN":"Drains the notification queue and delivers the Telegram messages waiting in it.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L318","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L318","name":{"en":"notificationHandler-L318"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"9114a4bdfb275175f60c5a111bdc07bbfcbb62c55a0871176b8f93e3436bdd9f","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27","summary":{"en":"Drains the notification queue and delivers the Telegram messages waiting in it.","ru":"Разгружает очередь уведомлений и доставляет ждущие в ней сообщения Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/handlers/notificationHandler.ts#L324","where":{"file":"src/handlers/notificationHandler.ts","host":"railway:999-multibots-telegraf","line":324,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/notificationHandler-L324","INTERVAL_MS":3600000,"KIND":"cron","NAME":"notificationHandler-L324","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/handlers/notificationHandler.ts:324","SUMMARY_EN":"Deletes notification messages old enough that nobody is going to read them.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/notificationHandler-L324","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_notificationHandler_L324","name":{"en":"notificationHandler-L324"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"44d2e3c8843519a512128399557c8d7af29ca2491f769f91c845dc44e0b63f9a","specPath":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27","summary":{"en":"Deletes notification messages old enough that nobody is going to read them.","ru":"Удаляет уведомления, настолько старые, что их уже никто не прочитает."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/utils/production-monitor.ts#L80","where":{"file":"src/utils/production-monitor.ts","host":"railway:999-multibots-telegraf","line":80,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":false,"HOST":"timer","ID":"timer/999-multibots-telegraf/production-monitor-L80","INTERVAL_MS":300000,"KIND":"cron","NAME":"production-monitor-L80","NOTE":"Started only by running this module from the command line with the `monitor` argument; the bot's own entry point never starts it.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/utils/production-monitor.ts:80","SUMMARY_EN":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/production-monitor-L80","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_production_monitor_L80","name":{"en":"production-monitor-L80"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"880d0b6c01b2b1e4cc9bc92c11ef300b8335bdf8ca842308bca7d3fd7e979254","specPath":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27","summary":{"en":"Re-runs the container, nginx, port, domain, webhook and system-resource checks, and applies the fixes that are enabled.","ru":"Повторяет проверки контейнера, nginx, порта, домена, вебхука и ресурсов системы и применяет включённые исправления."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/provider-health-monitor.ts#L344","where":{"file":"src/services/provider-health-monitor.ts","host":"railway:999-multibots-telegraf","line":344,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/provider-health-monitor-L344","INTERVAL_MS":300000,"KIND":"cron","NAME":"provider-health-monitor-L344","NOTE":"Providers listed in HEALTH_SKIP_PROVIDERS are deliberately not watched and do not raise the alarm.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/provider-health-monitor.ts:344","SUMMARY_EN":"Checks every AI provider that is not parked and records whether it is currently answering.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/provider-health-monitor-L344","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_provider_health_monitor_L344","name":{"en":"provider-health-monitor-L344"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"0044630e40dc2673a2d1210e848f1a3cd41cc2b21b541bec98e305f0192a2de7","specPath":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27","summary":{"en":"Checks every AI provider that is not parked and records whether it is currently answering.","ru":"Проверяет каждого не отключённого AI-провайдера и записывает, отвечает ли он сейчас."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L10845","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":10845,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L10845","INTERVAL_MS":30000,"KIND":"cron","NAME":"render-server-L10845","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:10845","SUMMARY_EN":"Pings every websocket peer and drops the ones that did not answer the previous round.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L10845","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L10845","name":{"en":"render-server-L10845"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"bfcd81ea5f3b3040dccce76d91dd699347e49c2df843529218ee138560e2d924","specPath":"specs/crons/999-multibots-telegraf-render-server-L10845.t27","summary":{"en":"Pings every websocket peer and drops the ones that did not answer the previous round.","ru":"Пингует каждого websocket-пира и отключает тех, кто не ответил в прошлом раунде."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2301","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2301,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2301","INTERVAL_MS":60000,"KIND":"cron","NAME":"render-server-L2301","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2301","SUMMARY_EN":"Removes render jobs older than an hour from the in-memory job map.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2301","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2301","name":{"en":"render-server-L2301"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"37e3dca7f4836af5ecfde5eaaa2aa993ac19087ac902adbb4015c04527a2af62","specPath":"specs/crons/999-multibots-telegraf-render-server-L2301.t27","summary":{"en":"Removes render jobs older than an hour from the in-memory job map.","ru":"Удаляет из карты в памяти задания рендера старше часа."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L2325","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":2325,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L2325","INTERVAL_MS":600000,"KIND":"cron","NAME":"render-server-L2325","NOTE":"Checks often and writes rarely: the cursor lives in the database, because this Railway project has no volume and a deploy wipes local state.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:2325","SUMMARY_EN":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L2325","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L2325","name":{"en":"render-server-L2325"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"11b24d4332b7e356f77b233a20d578c3ec31da71ff34be37d16d29d7d4471d5b","specPath":"specs/crons/999-multibots-telegraf-render-server-L2325.t27","summary":{"en":"Reads the hive journal and delivers the queen's report to the keepers, passing alarms straight through and batching ordinary events.","ru":"Читает журнал улья и доставляет отчёт королевы хранителям: тревоги — сразу, обычные события — пакетом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/apps/vibee-editor/render/render-server.ts#L919","where":{"file":"apps/vibee-editor/render/render-server.ts","host":"railway:vibee-render","line":919,"service":"render"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/render-server-L919","INTERVAL_MS":5000,"KIND":"cron","NAME":"render-server-L919","NOTE":"Only starts when a session signing key is configured; a deployed render server refuses to boot without one.","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"apps/vibee-editor/render/render-server.ts:919","SUMMARY_EN":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/render-server-L919","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_render_server_L919","name":{"en":"render-server-L919"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"f86d77af65dfb35cc4adf4202c8f06577e82d7856edbcac656ef735eeba19a52","specPath":"specs/crons/999-multibots-telegraf-render-server-L919.t27","summary":{"en":"Re-reads the session revocation list from Postgres so a revoked browser session stops being accepted.","ru":"Перечитывает из Postgres список отозванных сессий, чтобы отозванная сессия браузера перестала приниматься."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/modules/videoGenerator/taskCache.ts#L27","where":{"file":"src/modules/videoGenerator/taskCache.ts","host":"railway:999-multibots-telegraf","line":27,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/taskCache-L27","INTERVAL_MS":300000,"KIND":"cron","NAME":"taskCache-L27","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/modules/videoGenerator/taskCache.ts:27","SUMMARY_EN":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/taskCache-L27","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_taskCache_L27","name":{"en":"taskCache-L27"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"ca7f9a9edce47fe23ef59515d87ba7f391b878a9c5115b43e9c32b4a70fe90db","specPath":"specs/crons/999-multibots-telegraf-taskCache-L27.t27","summary":{"en":"Drops video-generation cache entries past their fifteen-minute lifetime so a finished task cannot block the next request.","ru":"Сбрасывает записи кэша видеогенерации старше пятнадцати минут, чтобы завершённая задача не блокировала следующий запрос."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","kind":"timer","repoPrivate":true,"sourceUrl":"https://github.com/gHashTag/999-multibots-telegraf/blob/3f01d449e5a04d37f6ff4d76d5572f499c201789/src/services/video-task-store.ts#L156","where":{"file":"src/services/video-task-store.ts","host":"railway:999-multibots-telegraf","line":156,"service":"bot"}},"control":"code-only","discarded":0,"fields":{"CONTROL":"code-only","ENABLED":true,"HOST":"timer","ID":"timer/999-multibots-telegraf/video-task-store-L156","INTERVAL_MS":600000,"KIND":"cron","NAME":"video-task-store-L156","ON_FAILURE":"log","REPO":"999-multibots-telegraf","RUNS":[],"RUNS_NOTE":"no skill invocation found in source","SERVICE":"src/services/video-task-store.ts:156","SUMMARY_EN":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","TZ":"UTC"},"health":"ok","id":"timer/999-multibots-telegraf/video-task-store-L156","inSpecCorpus":true,"messages":[],"moduleName":"cron_999_multibots_telegraf_video_task_store_L156","name":{"en":"video-task-store-L156"},"runNow":{"kind":"disabled","reason":"timer"},"runs":[],"runsResolved":[],"sha256":"dc4e3d6c76cac57a36074da8a9d6aac8df1f1c55bb68a593c2cadf94c94351b1","specPath":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27","summary":{"en":"Forgets video tasks older than an hour and rewrites the store to disk when anything was removed.","ru":"Забывает видеозадачи старше часа и переписывает хранилище на диск, если что-то было удалено."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-09-15T15:22:20.637Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":33,"total":33},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":1407,"tools":92},"version":1} diff --git a/apps/website/public/docs/system-docs.json b/apps/website/public/docs/system-docs.json index a3d0c28404..6146ebf947 100644 --- a/apps/website/public/docs/system-docs.json +++ b/apps/website/public/docs/system-docs.json @@ -1 +1 @@ -{"chapters":[{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"strong","v":"t27"},{"t":"text","v":" is a specification language and a toolchain. A "},{"t":"code","v":".t27"},{"t":"text","v":" file declares behaviour, constants, tests and invariants in one place; the compiler ("},{"t":"code","v":"t27c"},{"t":"text","v":", driven by the "},{"t":"code","v":"tri"},{"t":"text","v":" command) validates the file, generates code for the target backends (Zig, C, Verilog) and runs the tests written inside the spec. The repository "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" holds the language, the compiler, the spec corpus and the canon documents that govern how agents and people work in it ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":")."}],"type":"p"},{"runs":[{"t":"strong","v":"Trinity"},{"t":"text","v":" is the programme around t27: the GoldenFloat family of numeric formats built on the identity phi^2 + 1/phi^2 = 3, hardware validation of those formats on one FPGA board, and the public site "},{"t":"code","v":"t27.ai"},{"t":"text","v":" (repository "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", "},{"t":"code","v":"apps/website"},{"t":"text","v":") that renders the spec corpus, the skills, the scheduled jobs, the agents and the tools through the real compiler compiled to WebAssembly. The site does not paraphrase the specs; it compiles them in the browser build and shows the verdicts."}],"type":"p"},{"runs":[{"t":"text","v":"The rule that ties the two together is spec-first: project logic originates in "},{"t":"code","v":".t27"},{"t":"text","v":", and host languages -- Rust for the bootstrap compiler, TypeScript for the site, Zig, C and Verilog as generated output -- are subordinate implementations. "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", Article SSOT-MATH, states it for mathematics and numerics; "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" section 3 restates it for every change (\"Specs are source of truth\")."}],"type":"p"}],"heading":"What t27 and Trinity are","id":"what-t27-and-trinity-are"},{"blocks":[{"runs":[{"t":"text","v":"Every claim in this documentation carries one of five status tags, and the table the site renders next to this chapter repeats them with their source file:"}],"type":"p"},{"items":[[{"t":"code","v":"[measured]"},{"t":"text","v":" -- a number produced by running something whose output is in a repository or a public CI log, with the command and the commit recorded."}],[{"t":"code","v":"[declared]"},{"t":"text","v":" -- stated in a spec or a canon document; not (yet) exercised by a run."}],[{"t":"code","v":"[specified]"},{"t":"text","v":" -- exists as a "},{"t":"code","v":".t27"},{"t":"text","v":" spec that typechecks; no implementation is claimed."}],[{"t":"code","v":"[external]"},{"t":"text","v":" -- a value taken from a source outside the two repositories; cited, not reproduced here."}],[{"t":"code","v":"[not claimed]"},{"t":"text","v":" -- explicitly outside what the project asserts today."}]],"type":"ul"},{"runs":[{"t":"text","v":"The statements this chapter is prepared to make, with their tags:"}],"type":"p"},{"items":[[{"t":"text","v":"The GoldenFloat catalog holds 83 formats "},{"t":"code","v":"[declared]"},{"t":"text","v":" -- "},{"t":"code","v":"FAMILY_TOTALS.catalog"},{"t":"text","v":" in "},{"t":"code","v":"trinity:apps/website/src/data/siliconHistory.ts"},{"t":"text","v":", transcribed from the hardware conformance report of "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" (v0.2), which is the published source of every hardware figure on the site."}],[{"t":"text","v":"Hardware numbers exist for a subset of the catalog "},{"t":"code","v":"[measured]"},{"t":"text","v":": at v0.2 the same file records 27 formats at Tier E (public chain: CI run id, bitstream SHA-256, JTAG flash, UART log), 13 with decode in hardware, 7 with ADD and 7 with MUL in hardware, and 62 with a bit-exact software reference. The union of the hardware axes is a smaller number than 83; the exact union is stated in the trinity-fpga report and is not restated here."}],[{"t":"text","v":"Every hardware number was measured on one board "},{"t":"code","v":"[measured]"},{"t":"text","v":": ALINX AX7203, Xilinx Artix-7 "},{"t":"code","v":"xc7a200tfbg484-2"},{"t":"text","v":", open toolchain (yosys, nextpnr-xilinx, Project X-Ray), "},{"t":"code","v":"DEVICE"},{"t":"text","v":" and "},{"t":"code","v":"TOOLCHAIN"},{"t":"text","v":" in the same file."}],[{"t":"text","v":"Skills, crons, agents and tools on the site are generated from "},{"t":"code","v":".t27"},{"t":"text","v":" specs through the vendored compiler wasm "},{"t":"code","v":"[measured]"},{"t":"text","v":": the counts are in the ladder header of every Explorer and in the \"Evidence and witnesses\" chapter; "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" for each spec is recorded in the JSON the site serves."}]],"type":"ul"}],"heading":"Claims and their status","id":"claims-and-their-status"},{"blocks":[{"runs":[{"t":"text","v":"What the project does "},{"t":"strong","v":"not"},{"t":"text","v":" claim, in its own words:"}],"type":"p"},{"items":[[{"t":"strong","v":"No silicon."},{"t":"text","v":" "},{"t":"code","v":"[not claimed]"},{"t":"text","v":" A SKY130 design was prepared through Tiny Tapeout; the TTSKY26a/TTSKY26b submissions were withdrawn before fabrication and refunded, so no die exists and no measurement on silicon is claimed ("},{"t":"code","v":"trinity:apps/website/src/content/tnf.ts"},{"t":"text","v":", the \"Is this an ASIC result?\" answer). ASIC mapping and multi-corner characterisation are not claimed either. The hardware boundary is the FPGA named above."}],[{"t":"strong","v":"No ranking words."},{"t":"text","v":" The canon forbids \"first\", \"only\", \"best\" and their translations in first-party prose; the site's QA ("},{"t":"code","v":"check:docs"},{"t":"text","v":", "},{"t":"code","v":"check:queen-honesty"},{"t":"text","v":") fails a build that contains them. Comparisons are stated as numbers with a source or not at all."}],[{"t":"strong","v":"The Verilog the t27 compiler emits from a format spec is a module shell"},{"t":"text","v":" -- across the corpus it yields 0 LUTs and 0 flip-flops ("},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":", provenance note). The silicon results belong to hand-written RTL verified against an independent oracle. The spec and the RTL describe the same format; they are not the same artifact."}],[{"t":"strong","v":"`typecheck.ok` from the wasm is necessary, not sufficient."},{"t":"text","v":" It stays "},{"t":"code","v":"true"},{"t":"text","v":" for a wrong annotation such as "},{"t":"code","v":"str = 5"},{"t":"text","v":"; the site's generators check the field schema of every card on top of it ("},{"t":"code","v":"specs/skills/README.md"},{"t":"text","v":")."}],[{"t":"strong","v":"Two repositories, two lists."},{"t":"text","v":" Tools, agents and jobs of "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" and of "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" are recorded under their own "},{"t":"code","v":"REPO"},{"t":"text","v":"; nothing is merged into one list."}]],"type":"ul"}],"heading":"Boundaries","id":"boundaries"},{"blocks":[{"runs":[{"t":"text","v":"The seven chapters are declared in "},{"t":"code","v":"specs/docs/system.t27"},{"t":"text","v":" and one spec per chapter under "},{"t":"code","v":"specs/docs/chapters/"},{"t":"text","v":". Each chapter spec names its "},{"t":"code","v":"SOURCES"},{"t":"text","v":" (the files it quotes), its "},{"t":"code","v":"SECTIONS"},{"t":"text","v":" (the headings of this Markdown, checked at build time), the figure the site draws from data ("},{"t":"code","v":"DIAGRAM"},{"t":"text","v":") and the table it generates from the catalogs ("},{"t":"code","v":"TABLE"},{"t":"text","v":"). The English prose is canonical and lives in "},{"t":"code","v":"docs/system/.md"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":"; the Russian text travels through the translation contract "},{"t":"code","v":"specs/i18n/docs-ru.t27"},{"t":"text","v":" and the bundle it names in "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":". When the two disagree, English wins."}],"type":"p"},{"runs":[{"t":"text","v":"Every figure on the site carries a caption and a data-source line: the JSON it was drawn from and the commit that JSON was generated at. Every table is generated; none is typed by hand. A number without a source line is a defect -- report it as one."}],"type":"p"}],"heading":"How to read this documentation","id":"how-to-read-this-documentation"}],"title":"The project"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"strong","v":"t27"},{"t":"text","v":" -- язык спецификаций и инструментальная цепочка. Файл "},{"t":"code","v":".t27"},{"t":"text","v":" в одном месте объявляет поведение, константы, тесты и инварианты; компилятор ("},{"t":"code","v":"t27c"},{"t":"text","v":", вызываемый командой "},{"t":"code","v":"tri"},{"t":"text","v":") проверяет файл, порождает код для целевых бэкендов (Zig, C, Verilog) и прогоняет тесты, записанные внутри спецификации. Репозиторий "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" хранит язык, компилятор, корпус спецификаций и канонические документы, определяющие, как в нём работают агенты и люди ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":")."}],"type":"p"},{"runs":[{"t":"strong","v":"Trinity"},{"t":"text","v":" -- программа вокруг t27: семейство численных форматов GoldenFloat, построенное на тождестве phi^2 + 1/phi^2 = 3, аппаратная проверка этих форматов на одной плате FPGA и публичный сайт "},{"t":"code","v":"t27.ai"},{"t":"text","v":" (репозиторий "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", "},{"t":"code","v":"apps/website"},{"t":"text","v":"), который отображает корпус спецификаций, навыки, расписания, агентов и инструменты через настоящий компилятор, собранный в WebAssembly. Сайт не пересказывает спецификации: он компилирует их при сборке и показывает вердикты."}],"type":"p"},{"runs":[{"t":"text","v":"Правило, связывающее обе части, -- spec-first: логика проекта рождается в "},{"t":"code","v":".t27"},{"t":"text","v":", а языки-хосты -- Rust для бутстрап-компилятора, TypeScript для сайта, Zig, C и Verilog как порождаемый код -- являются подчинёнными реализациями. "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", статья SSOT-MATH, формулирует это для математики и численных вопросов; "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", раздел 3, повторяет для любого изменения (\"Specs are source of truth\")."}],"type":"p"}],"heading":"Что такое t27 и Trinity","id":"что-такое-t27-и-trinity"},{"blocks":[{"runs":[{"t":"text","v":"Каждое утверждение в этой документации несёт один из пяти статусных тегов, и таблица, которую сайт выводит рядом с этой главой, повторяет их вместе с файлом-источником:"}],"type":"p"},{"items":[[{"t":"code","v":"[measured]"},{"t":"text","v":" -- число, полученное запуском чего-либо, чей вывод лежит в репозитории или в публичном журнале CI, с записанной командой и коммитом."}],[{"t":"code","v":"[declared]"},{"t":"text","v":" -- заявлено в спецификации или каноническом документе; запуском (пока) не проверено."}],[{"t":"code","v":"[specified]"},{"t":"text","v":" -- существует как спецификация "},{"t":"code","v":".t27"},{"t":"text","v":", проходящая проверку типов; реализация не заявляется."}],[{"t":"code","v":"[external]"},{"t":"text","v":" -- значение взято из источника вне двух репозиториев; цитируется, здесь не воспроизводится."}],[{"t":"code","v":"[not claimed]"},{"t":"text","v":" -- явно вне того, что проект утверждает сегодня."}]],"type":"ul"},{"runs":[{"t":"text","v":"Утверждения, которые эта глава готова сделать, с тегами:"}],"type":"p"},{"items":[[{"t":"text","v":"Каталог GoldenFloat содержит 83 формата "},{"t":"code","v":"[declared]"},{"t":"text","v":" -- "},{"t":"code","v":"FAMILY_TOTALS.catalog"},{"t":"text","v":" в "},{"t":"code","v":"trinity:apps/website/src/data/siliconHistory.ts"},{"t":"text","v":", перенесённый из отчёта об аппаратной конформности "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" (v0.2), который является опубликованным источником каждой аппаратной цифры на сайте."}],[{"t":"text","v":"Аппаратные числа существуют для подмножества каталога "},{"t":"code","v":"[measured]"},{"t":"text","v":": на v0.2 тот же файл фиксирует 27 форматов на уровне Tier E (публичная цепочка: id запуска CI, SHA-256 битстрима, прошивка по JTAG, журнал UART), 13 с декодированием в железе, 7 с ADD и 7 с MUL в железе и 62 с побитово точной программной моделью. Объединение аппаратных осей меньше 83; точное значение объединения приведено в отчёте trinity-fpga и здесь не повторяется."}],[{"t":"text","v":"Каждое аппаратное число измерено на одной плате "},{"t":"code","v":"[measured]"},{"t":"text","v":": ALINX AX7203, Xilinx Artix-7 "},{"t":"code","v":"xc7a200tfbg484-2"},{"t":"text","v":", открытая цепочка (yosys, nextpnr-xilinx, Project X-Ray), "},{"t":"code","v":"DEVICE"},{"t":"text","v":" и "},{"t":"code","v":"TOOLCHAIN"},{"t":"text","v":" в том же файле."}],[{"t":"text","v":"Навыки, расписания, агенты и инструменты на сайте порождаются из спецификаций "},{"t":"code","v":".t27"},{"t":"text","v":" через вендорный wasm компилятора "},{"t":"code","v":"[measured]"},{"t":"text","v":": счётчики находятся в заголовке-лестнице каждого обозревателя и в главе \"Свидетели и доказательства\"; "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" каждой спецификации записан в JSON, который сайт отдаёт."}]],"type":"ul"}],"heading":"Утверждения и их статус","id":"утверждения-и-их-статус"},{"blocks":[{"runs":[{"t":"text","v":"Чего проект "},{"t":"strong","v":"не"},{"t":"text","v":" утверждает, его собственными словами:"}],"type":"p"},{"items":[[{"t":"strong","v":"Кремния нет."},{"t":"text","v":" "},{"t":"code","v":"[not claimed]"},{"t":"text","v":" Дизайн под SKY130 был подготовлен через Tiny Tapeout; заявки TTSKY26a/TTSKY26b были отозваны до изготовления с возвратом средств, поэтому кристалла не существует и никакое измерение на кремнии не заявляется ("},{"t":"code","v":"trinity:apps/website/src/content/tnf.ts"},{"t":"text","v":", ответ \"Is this an ASIC result?\"). Отображение в ASIC и многоугловая характеризация также не заявляются. Аппаратная граница -- названная выше FPGA."}],[{"t":"strong","v":"Слов-рейтингов нет."},{"t":"text","v":" Канон запрещает слова-рейтинги -- превосходные и исключающие эпитеты, перечисленные в правилах каталога "},{"t":"code","v":"specs/docs/README.md"},{"t":"text","v":", -- в собственной прозе проекта; контроль качества сайта ("},{"t":"code","v":"check:docs"},{"t":"text","v":", "},{"t":"code","v":"check:queen-honesty"},{"t":"text","v":") роняет сборку, в которой они встречаются. Сравнения даются как числа с источником либо не даются вовсе."}],[{"t":"strong","v":"Verilog, который компилятор t27 порождает из спецификации формата, -- это оболочка модуля"},{"t":"text","v":": по корпусу он даёт 0 LUT и 0 триггеров ("},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":", примечание о происхождении). Результаты на FPGA принадлежат рукописному RTL, проверенному против независимого оракула. Спецификация и RTL описывают один и тот же формат; это не один и тот же артефакт."}],[{"t":"strong","v":"`typecheck.ok` от wasm необходим, но не достаточен."},{"t":"text","v":" Он остаётся "},{"t":"code","v":"true"},{"t":"text","v":" при неверной аннотации вроде "},{"t":"code","v":"str = 5"},{"t":"text","v":"; генераторы сайта поверх него проверяют схему полей каждой карточки ("},{"t":"code","v":"specs/skills/README.md"},{"t":"text","v":")."}],[{"t":"strong","v":"Два репозитория, два списка."},{"t":"text","v":" Инструменты, агенты и задания "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" и "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" записаны под своим "},{"t":"code","v":"REPO"},{"t":"text","v":"; ничего не слито в один список."}]],"type":"ul"}],"heading":"Границы","id":"границы"},{"blocks":[{"runs":[{"t":"text","v":"Семь глав объявлены в "},{"t":"code","v":"specs/docs/system.t27"},{"t":"text","v":" и по одной спецификации на главу в "},{"t":"code","v":"specs/docs/chapters/"},{"t":"text","v":". Каждая спецификация главы называет свои "},{"t":"code","v":"SOURCES"},{"t":"text","v":" (цитируемые файлы), "},{"t":"code","v":"SECTIONS"},{"t":"text","v":" (заголовки этого текста, проверяемые при сборке), фигуру, которую сайт рисует по данным ("},{"t":"code","v":"DIAGRAM"},{"t":"text","v":"), и таблицу, порождаемую из каталогов ("},{"t":"code","v":"TABLE"},{"t":"text","v":"). Английская проза канонична и лежит в "},{"t":"code","v":"docs/system/.md"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":"; русский текст идёт через контракт перевода "},{"t":"code","v":"specs/i18n/docs-ru.t27"},{"t":"text","v":" и бандл, который он называет в "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":". При расхождении побеждает английский."}],"type":"p"},{"runs":[{"t":"text","v":"Каждая фигура на сайте несёт подпись и строку источника данных: JSON, из которого она нарисована, и коммит, на котором этот JSON порождён. Каждая таблица порождена; ни одна не набрана вручную. Число без строки источника -- дефект; сообщайте о нём как о дефекте."}],"type":"p"}],"heading":"Как читать эту документацию","id":"как-читать-эту-документацию"}]}},"bodyPath":"docs/system/project.md","bodySha256":"0674727c51ecb860eb65e6fe6a21d1ef0e9b5af97bb592d4ea12eefddddce070","diagram":"ladder","discarded":0,"enabled":true,"id":"docs/project","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/project.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/project.t27"},"moduleName":"docs_chapter_project","order":1,"sections":[{"heading":{"en":"What t27 and Trinity are","ru":"Что такое t27 и Trinity"},"id":"what-t27-and-trinity-are"},{"heading":{"en":"Claims and their status","ru":"Утверждения и их статус"},"id":"claims-and-their-status"},{"heading":{"en":"Boundaries","ru":"Границы"},"id":"boundaries"},{"heading":{"en":"How to read this documentation","ru":"Как читать эту документацию"},"id":"how-to-read-this-documentation"}],"sha256":"4023211070b18117f67404d4c7941ea02e079d1c07aa41515aee69704bab07a3","sources":[{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"},{"kind":"file","path":"AGENTS.md","rel":"AGENTS.md","repo":"t27","sha256":"1c9b8cce1600d4220d74498d187934e0b935ad1eae6deb9c1b100057ce9ac9e9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","where":"vendored"},{"kind":"file","path":"specs/docs/system.t27","rel":"specs/docs/system.t27","repo":"t27","sha256":"ab7ee1773622aa46442aec7aeca5cdd1a1a3c36f6321451a5e426df80a75945b","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/system.t27","where":"vendored"},{"kind":"file","path":"trinity:apps/website/src/data/siliconHistory.ts","rel":"apps/website/src/data/siliconHistory.ts","repo":"trinity","sha256":"ee385a57e25ddd1fcdce51c4001c1cd2bbd59ef0adfed104b4119e16b4a00d7c","url":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/apps/website/src/data/siliconHistory.ts","where":"checkout"},{"kind":"file","path":"trinity:apps/website/src/content/tnf.ts","rel":"apps/website/src/content/tnf.ts","repo":"trinity","sha256":"497dc5311e431ad536da2abd3ec002077b1e96fe508e13388eb884de83f32d9d","url":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/apps/website/src/content/tnf.ts","where":"checkout"}],"specPath":"specs/docs/chapters/project.t27","stem":"project","table":{"columns":["tag","claim","sources"],"kind":"claims","note":"","rows":[{"claim":"The GoldenFloat catalog holds 83 formats -- `FAMILY_TOTALS.catalog` in `trinity:apps/website/src/data/siliconHistory.ts`, transcribed from the hardware conformance report of `gHashTag/trinity-fpga` (v0.2), which is th...","sources":["trinity:apps/website/src/data/siliconHistory.ts","gHashTag/trinity-fpga"],"tag":"declared"},{"claim":"Hardware numbers exist for a subset of the catalog: at v0.2 the same file records 27 formats at Tier E (public chain: CI run id, bitstream SHA-256, JTAG flash, UART log), 13 with decode in hardware, 7 with ADD and 7 w...","sources":[],"tag":"measured"},{"claim":"Every hardware number was measured on one board: ALINX AX7203, Xilinx Artix-7 `xc7a200tfbg484-2`, open toolchain (yosys, nextpnr-xilinx, Project X-Ray), `DEVICE` and `TOOLCHAIN` in the same file.","sources":[],"tag":"measured"},{"claim":"Skills, crons, agents and tools on the site are generated from `.t27` specs through the vendored compiler wasm: the counts are in the ladder header of every Explorer and in the \"Evidence and witnesses\" chapter; `typec...","sources":[],"tag":"measured"},{"claim":"No silicon. A SKY130 design was prepared through Tiny Tapeout; the TTSKY26a/TTSKY26b submissions were withdrawn before fabrication and refunded, so no die exists and no measurement on silicon is claimed (`trinity:apps...","sources":["trinity:apps/website/src/content/tnf.ts"],"tag":"not claimed"}],"source":"status-tagged bullets of docs/system/project.md"},"title":{"en":"The project","ru":"Проект"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":" is the entry point for humans and coding agents; its first section fixes the reading order and which document wins when two disagree:"}],"type":"p"},{"items":[[{"t":"code","v":"SOUL.md"},{"t":"text","v":" -- the canonical constitution: language policy, TDD mandate, validation."}],[{"t":"code","v":"docs/nona-03-manifest/SOUL.md"},{"t":"text","v":" -- the expanded reference; if it conflicts with root "},{"t":"code","v":"SOUL.md"},{"t":"text","v":", root wins."}],[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":" -- Articles SSOT-MATH, LANG-EN and DOCS-TREE, and the invariant laws."}],[{"t":"code","v":"TASK.md"},{"t":"text","v":" with "},{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" -- multi-agent coordination, locks, anchor issue."}],[{"t":"text","v":"The nearest "},{"t":"code","v":"OWNERS.md"},{"t":"text","v":" -- domain ownership for the directories you edit."}]],"type":"ol"},{"runs":[{"t":"code","v":"CLAUDE.md"},{"t":"text","v":" adds the operational loop for an autonomous agent and says, in its first line, that repo-specific law always overrides generic tooling defaults. The rest of this chapter quotes these files; the site links each quotation to the file at the commit the documentation was generated from."}],"type":"p"}],"heading":"The constitutional stack","id":"the-constitutional-stack"},{"blocks":[{"runs":[{"t":"code","v":"SOUL.md"},{"t":"text","v":" is organised in articles. The ones every change touches:"}],"type":"p"},{"items":[[{"t":"strong","v":"Article I, The Language Policy."},{"t":"text","v":" Source files must be ASCII-only (U+0000..U+007F); identifiers and comments must be English. The rule names "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".tri"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":", "},{"t":"code","v":".h"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":" and build scripts. Cyrillic and other non-Latin scripts are forbidden in identifiers and comments unless an Architect-approved exception exists (section 1.1). First-party documentation is English (section 1.2, restated as Article LANG-EN of the constitution)."}],[{"t":"strong","v":"Article II, The TDD Mandate."},{"t":"text","v":" \"Every "},{"t":"code","v":".t27"},{"t":"text","v":" specification MUST contain at least one of\" a "},{"t":"code","v":".test"},{"t":"text","v":" section, an "},{"t":"code","v":".invariant"},{"t":"text","v":" section or a "},{"t":"code","v":".bench"},{"t":"text","v":" section. \"No exceptions. A spec without tests is not a specification -- it is a draft.\" (section 2.1, the Iron Law)."}],[{"t":"strong","v":"Article III, No Prototype Mode."},{"t":"text","v":" There is no "},{"t":"code","v":"--allow-no-tests"},{"t":"text","v":" flag and no grace period; the parser rejects a spec without tests with "},{"t":"code","v":"TDD contract violated"},{"t":"text","v":"."}],[{"t":"strong","v":"Article IV, Validation Requirements."},{"t":"text","v":" Enforcement at parser level, at codegen level and at build time."}],[{"t":"strong","v":"Article V, Amendment Process."},{"t":"text","v":" What can and cannot be amended."}],[{"t":"strong","v":"Article VI, Enforcement."},{"t":"text","v":" Agent compliance, human compliance, automated enforcement."}],[{"t":"strong","v":"Article VII, Sacred Trinity."},{"t":"text","v":" Three pillars: the identity phi^2 + 1/phi^2 = 3, ternary computation, and TDD inside the spec. \"Violating any violates the whole.\""}],[{"t":"strong","v":"Article VIII, NO-NEW-SHELL."},{"t":"text","v":" No new "},{"t":"code","v":"*.sh"},{"t":"text","v":" on the engineering critical path; the permitted exceptions are the exec-only shim "},{"t":"code","v":"scripts/tri"},{"t":"text","v":" and the one-time "},{"t":"code","v":"scripts/setup-git-hooks.sh"},{"t":"text","v":". Section 8.3 extends the rule to Python: validation, conformance gates and doc language checks live in "},{"t":"code","v":"t27c"},{"t":"text","v":" (Rust)."}]],"type":"ul"},{"runs":[{"t":"text","v":"The catalog specs under "},{"t":"code","v":"specs/skills"},{"t":"text","v":", "},{"t":"code","v":"specs/crons"},{"t":"text","v":", "},{"t":"code","v":"specs/agents"},{"t":"text","v":", "},{"t":"code","v":"specs/tools"},{"t":"text","v":" and "},{"t":"code","v":"specs/docs"},{"t":"text","v":" are declarative constant modules and carry no "},{"t":"code","v":".test"},{"t":"text","v":" block; the site's generators check their field schema instead. Whether Article II applies to declarative catalog modules is not decided in "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" today; this documentation records the practice and does not claim a ruling."}],"type":"p"}],"heading":"SOUL articles","id":"soul-articles"},{"blocks":[{"runs":[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", section 2, defines seven Invariant Laws that \"never change without constitutional amendment\". The site renders the table from that file; in short:"}],"type":"p"},{"items":[[{"t":"strong","v":"L1 TRACEABILITY"},{"t":"text","v":" -- no code merged without "},{"t":"code","v":"Closes #N"},{"t":"text","v":"; every PR references an issue. Enforced by "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":"."}],[{"t":"strong","v":"L2 GENERATION"},{"t":"text","v":" -- files under "},{"t":"code","v":"gen/"},{"t":"text","v":" are generated; edit the "},{"t":"code","v":".t27"},{"t":"text","v":" spec instead."}],[{"t":"strong","v":"L3 PURITY"},{"t":"text","v":" -- ASCII-only identifiers and comments in "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":"."}],[{"t":"strong","v":"L4 TESTABILITY"},{"t":"text","v":" -- every "},{"t":"code","v":".t27"},{"t":"text","v":" spec must contain "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" or "},{"t":"code","v":"bench"},{"t":"text","v":"."}],[{"t":"strong","v":"L5 IDENTITY"},{"t":"text","v":" -- phi^2 = phi + 1 on the reals, hence phi^2 + 1/phi^2 = 3; IEEE binary64 checks use a tolerance."}],[{"t":"strong","v":"L6 CEILING"},{"t":"text","v":" -- "},{"t":"code","v":"conformance/FORMAT-SPEC-001.json"},{"t":"text","v":" and "},{"t":"code","v":"specs/numeric/gf16.t27"},{"t":"text","v":" are the numeric ceiling, never forked."}],[{"t":"strong","v":"L7 UNITY"},{"t":"text","v":" -- no new "},{"t":"code","v":"*.sh"},{"t":"text","v":" on the critical path for validation, generation or data; "},{"t":"code","v":"t27c"},{"t":"text","v":" and "},{"t":"code","v":"tri"},{"t":"text","v":" only."}]],"type":"ul"},{"runs":[{"t":"text","v":"Priority is Asimov-style: L1 > L2 > L3 > L4 > L5 > L6 > L7. \"In conflict scenarios, the higher-priority law prevails.\" The legacy names (ISSUE-GATE, NO-HAND-EDIT-GEN, SOUL-ASCII, TDD-MANDATE, PHI-IDENTITY, TRINITY-SACRED, NO-NEW-SHELL) map one-to-one onto L1..L7 in the constitution's alias index."}],"type":"p"},{"runs":[{"t":"text","v":"One discrepancy is recorded rather than resolved: "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" section 5 speaks of \"the seven Invariant Laws (L1-L8)\" and writes the priority as \"L1 > ... > L8\", while its table and the constitution define L1..L7 only. No L8 is defined in either file at the commit this documentation was generated from. The figure next to this chapter therefore shows seven laws."}],"type":"p"}],"heading":"Invariant laws and their priority","id":"invariant-laws-and-their-priority"},{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":" section 3 lists six non-negotiables, quoted in short:"}],"type":"p"},{"items":[[{"t":"text","v":"Specs are source of truth -- behaviour belongs in "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":"; generated "},{"t":"code","v":"gen/"},{"t":"text","v":" output is not hand-edited except for documented exceptions."}],[{"t":"text","v":"TDD inside specs -- new or changed specs need "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" and/or "},{"t":"code","v":"bench"},{"t":"text","v":" where SOUL requires it."}],[{"t":"text","v":"English + ASCII -- first-party Markdown and source comments per LANG-EN and ADR-004."}],[{"t":"text","v":"No new Python on the verification critical path."}],[{"t":"text","v":"Issue gate -- PRs link issues ("},{"t":"code","v":"Closes #N"},{"t":"text","v":") where project policy requires it."}],[{"t":"text","v":"Ring / gold work -- parser, compiler and spec changes follow the golden-rings canon; the compiler seal path is "},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":"."}]],"type":"ol"},{"runs":[{"t":"text","v":"Two rules of this documentation's own owner belong beside them, because the site enforces them: no absolute developer home path in any committed file (a checkout is "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":" or "},{"t":"code","v":"git rev-parse --show-toplevel"},{"t":"text","v":"), and no hand edits to generated manifests -- change the spec and regenerate."}],"type":"p"}],"heading":"Non-negotiables for changes","id":"non-negotiables-for-changes"},{"blocks":[{"runs":[{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" governs how several agents work in one tree at the same time. Its artifacts are the root "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (anchor link, protocol version, locks, handoff log, work units) and the protocol document itself. The semantics, in short:"}],"type":"p"},{"items":[[{"t":"strong","v":"Lock (soft)."},{"t":"text","v":" Before editing sensitive paths the active agent should set lock holder, lock scope and lock until in the coordination state; others must not override without a handoff-log entry and an epoch bump. Locks are \"social + procedural\", not file locks."}],[{"t":"strong","v":"Epoch."},{"t":"text","v":" A version counter for the coordination state."}],[{"t":"strong","v":"Handoff log."},{"t":"text","v":" Append-preferred; handoffs are treated \"like narrow API contracts\"."}],[{"t":"strong","v":"Read / write order."},{"t":"text","v":" "},{"t":"code","v":"github-sync.json"},{"t":"text","v":" (queue snapshot), then "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (locks and handoffs), then the anchor issue, then the target issue for the code change (section 4.4)."}]],"type":"ul"},{"runs":[{"t":"text","v":"Validation of "},{"t":"code","v":"TASK.md"},{"t":"text","v":"'s shape is automated (section 5); verification is human plus CI (section 6)."}],"type":"p"}],"heading":"TASK protocol","id":"task-protocol"},{"blocks":[{"runs":[{"t":"text","v":"The issue gate is law L1 in executable form: the constitution names "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":" as the enforcement of \"no code merged without "},{"t":"code","v":"Closes #N"},{"t":"text","v":"\". Everything the site documents came in through it -- the skills, crons, agents, tools and docs catalogs each have their issue and their "},{"t":"code","v":"docs/now/"},{"t":"text","v":" entry."}],"type":"p"},{"runs":[{"t":"text","v":"The TDD mandate is law L4 and SOUL Article II in executable form: the parser rejects a spec without a "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" or "},{"t":"code","v":"bench"},{"t":"text","v":" block. For the catalog specs the site adds its own gate on top: a generator that compiles every card through the wasm and fails on a schema violation, an unknown cross-reference, or a binding stated on one side only (an agent that names a tool the tool does not name back, and the reverse)."}],"type":"p"}],"heading":"Issue gate and TDD mandate","id":"issue-gate-and-tdd-mandate"}],"title":"Constitution and the rules of the game for agents"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":" -- точка входа для людей и кодирующих агентов; его раздел 1 задаёт порядок чтения и то, какой документ побеждает при расхождении:"}],"type":"p"},{"items":[[{"t":"code","v":"SOUL.md"},{"t":"text","v":" -- каноническая конституция: языковая политика, мандат TDD, валидация."}],[{"t":"code","v":"docs/nona-03-manifest/SOUL.md"},{"t":"text","v":" -- расширенный справочник; при конфликте с корневым "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" побеждает корневой."}],[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":" -- статьи SSOT-MATH, LANG-EN и DOCS-TREE и инвариантные законы."}],[{"t":"code","v":"TASK.md"},{"t":"text","v":" вместе с "},{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" -- координация нескольких агентов, блокировки, якорная задача."}],[{"t":"text","v":"Ближайший "},{"t":"code","v":"OWNERS.md"},{"t":"text","v":" -- владение областью для редактируемых каталогов."}]],"type":"ol"},{"runs":[{"t":"code","v":"CLAUDE.md"},{"t":"text","v":" добавляет операционный цикл автономного агента и в своей вводной строке говорит, что закон репозитория всегда перекрывает умолчания общего инструментария. Остальная часть главы цитирует эти файлы; сайт привязывает каждую цитату к файлу на коммите, на котором документация была порождена."}],"type":"p"}],"heading":"Конституционный стек","id":"конституционный-стек"},{"blocks":[{"runs":[{"t":"code","v":"SOUL.md"},{"t":"text","v":" организован статьями. Те, которых касается каждое изменение:"}],"type":"p"},{"items":[[{"t":"strong","v":"Статья I, языковая политика."},{"t":"text","v":" Исходные файлы должны быть только ASCII (U+0000..U+007F); идентификаторы и комментарии -- на английском. Правило называет "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".tri"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":", "},{"t":"code","v":".h"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":" и сборочные скрипты. Кириллица и другие нелатинские письменности запрещены в идентификаторах и комментариях, если нет исключения, одобренного Архитектором (раздел 1.1). Собственная документация проекта -- на английском (раздел 1.2, повторено как статья LANG-EN конституции)."}],[{"t":"strong","v":"Статья II, мандат TDD."},{"t":"text","v":" \"Every "},{"t":"code","v":".t27"},{"t":"text","v":" specification MUST contain at least one of\" -- секцию "},{"t":"code","v":".test"},{"t":"text","v":", "},{"t":"code","v":".invariant"},{"t":"text","v":" или "},{"t":"code","v":".bench"},{"t":"text","v":". \"No exceptions. A spec without tests is not a specification -- it is a draft.\" (раздел 2.1, Железный закон)."}],[{"t":"strong","v":"Статья III, без режима прототипа."},{"t":"text","v":" Нет флага "},{"t":"code","v":"--allow-no-tests"},{"t":"text","v":" и нет льготного периода; парсер отвергает спецификацию без тестов с ошибкой "},{"t":"code","v":"TDD contract violated"},{"t":"text","v":"."}],[{"t":"strong","v":"Статья IV, требования валидации."},{"t":"text","v":" Контроль на уровне парсера, кодогенерации и сборки."}],[{"t":"strong","v":"Статья V, порядок поправок."},{"t":"text","v":" Что можно и что нельзя менять."}],[{"t":"strong","v":"Статья VI, принуждение."},{"t":"text","v":" Соблюдение агентами, людьми, автоматикой."}],[{"t":"strong","v":"Статья VII, Священная Троица."},{"t":"text","v":" Три опоры: тождество phi^2 + 1/phi^2 = 3, троичные вычисления и TDD внутри спецификации. \"Violating any violates the whole.\""}],[{"t":"strong","v":"Статья VIII, NO-NEW-SHELL."},{"t":"text","v":" Никаких новых "},{"t":"code","v":"*.sh"},{"t":"text","v":" на инженерном критическом пути; допустимые исключения -- шим "},{"t":"code","v":"scripts/tri"},{"t":"text","v":" (только exec) и одноразовый "},{"t":"code","v":"scripts/setup-git-hooks.sh"},{"t":"text","v":". Раздел 8.3 распространяет правило на Python: валидация, шлюзы конформности и проверки языка документации живут в "},{"t":"code","v":"t27c"},{"t":"text","v":" (Rust)."}]],"type":"ul"},{"runs":[{"t":"text","v":"Спецификации каталогов в "},{"t":"code","v":"specs/skills"},{"t":"text","v":", "},{"t":"code","v":"specs/crons"},{"t":"text","v":", "},{"t":"code","v":"specs/agents"},{"t":"text","v":", "},{"t":"code","v":"specs/tools"},{"t":"text","v":" и "},{"t":"code","v":"specs/docs"},{"t":"text","v":" -- декларативные модули констант и не несут блока "},{"t":"code","v":".test"},{"t":"text","v":"; вместо этого генераторы сайта проверяют схему их полей. Применима ли статья II к декларативным модулям каталогов, "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" сегодня не решает; эта документация фиксирует практику и не претендует на постановление."}],"type":"p"}],"heading":"Статьи SOUL","id":"статьи-soul"},{"blocks":[{"runs":[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", раздел 2, определяет семь инвариантных законов, которые \"never change without constitutional amendment\". Сайт выводит таблицу из этого файла; кратко:"}],"type":"p"},{"items":[[{"t":"strong","v":"L1 TRACEABILITY"},{"t":"text","v":" -- код не вливается без "},{"t":"code","v":"Closes #N"},{"t":"text","v":"; каждый PR ссылается на задачу. Контроль -- "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":"."}],[{"t":"strong","v":"L2 GENERATION"},{"t":"text","v":" -- файлы под "},{"t":"code","v":"gen/"},{"t":"text","v":" порождены; правьте спецификацию "},{"t":"code","v":".t27"},{"t":"text","v":"."}],[{"t":"strong","v":"L3 PURITY"},{"t":"text","v":" -- только ASCII в идентификаторах и комментариях "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":"."}],[{"t":"strong","v":"L4 TESTABILITY"},{"t":"text","v":" -- каждая спецификация "},{"t":"code","v":".t27"},{"t":"text","v":" содержит "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" или "},{"t":"code","v":"bench"},{"t":"text","v":"."}],[{"t":"strong","v":"L5 IDENTITY"},{"t":"text","v":" -- phi^2 = phi + 1 на вещественных числах, откуда phi^2 + 1/phi^2 = 3; проверки в IEEE binary64 используют допуск."}],[{"t":"strong","v":"L6 CEILING"},{"t":"text","v":" -- "},{"t":"code","v":"conformance/FORMAT-SPEC-001.json"},{"t":"text","v":" и "},{"t":"code","v":"specs/numeric/gf16.t27"},{"t":"text","v":" -- численный потолок, никогда не форкается."}],[{"t":"strong","v":"L7 UNITY"},{"t":"text","v":" -- никаких новых "},{"t":"code","v":"*.sh"},{"t":"text","v":" на критическом пути валидации, порождения или данных; только "},{"t":"code","v":"t27c"},{"t":"text","v":" и "},{"t":"code","v":"tri"},{"t":"text","v":"."}]],"type":"ul"},{"runs":[{"t":"text","v":"Приоритет -- в духе Азимова: L1 > L2 > L3 > L4 > L5 > L6 > L7. \"In conflict scenarios, the higher-priority law prevails.\" Прежние имена (ISSUE-GATE, NO-HAND-EDIT-GEN, SOUL-ASCII, TDD-MANDATE, PHI-IDENTITY, TRINITY-SACRED, NO-NEW-SHELL) отображаются один к одному на L1..L7 в индексе псевдонимов конституции."}],"type":"p"},{"runs":[{"t":"text","v":"Одно расхождение фиксируется, а не устраняется: "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", раздел 5, говорит о \"the seven Invariant Laws (L1-L8)\" и пишет приоритет как \"L1 > ... > L8\", тогда как его таблица и конституция определяют только L1..L7. Ни в одном из файлов на коммите, на котором порождена документация, L8 не определён. Поэтому фигура рядом с этой главой показывает семь законов."}],"type":"p"}],"heading":"Инвариантные законы и их приоритет","id":"инвариантные-законы-и-их-приоритет"},{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":", раздел 3, перечисляет шесть неотменяемых требований, кратко:"}],"type":"p"},{"items":[[{"t":"text","v":"Спецификации -- источник истины: поведение живёт в "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":"; порождённый вывод в "},{"t":"code","v":"gen/"},{"t":"text","v":" не правится вручную, кроме документированных исключений."}],[{"t":"text","v":"TDD внутри спецификаций: новые или изменённые спецификации несут "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" и/или "},{"t":"code","v":"bench"},{"t":"text","v":" там, где этого требует SOUL."}],[{"t":"text","v":"Английский + ASCII: собственный Markdown и комментарии в коде по LANG-EN и ADR-004."}],[{"t":"text","v":"Никакого нового Python на критическом пути верификации."}],[{"t":"text","v":"Шлюз задач: PR ссылаются на задачи ("},{"t":"code","v":"Closes #N"},{"t":"text","v":") там, где этого требует политика проекта."}],[{"t":"text","v":"Работа с кольцами / золотом: изменения парсера, компилятора и спецификаций следуют канону golden-rings; путь печати компилятора -- "},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":"."}]],"type":"ol"},{"runs":[{"t":"text","v":"Два правила владельца этой документации стоят рядом с ними, потому что сайт их проверяет: никаких абсолютных путей домашнего каталога разработчика в закоммиченных файлах (чекаут -- это "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":" или "},{"t":"code","v":"git rev-parse --show-toplevel"},{"t":"text","v":") и никакой ручной правки порождённых манифестов -- меняйте спецификацию и порождайте заново."}],"type":"p"}],"heading":"Неотменяемые требования к изменениям","id":"неотменяемые-требования-к-изменениям"},{"blocks":[{"runs":[{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" определяет, как несколько агентов работают в одном дереве одновременно. Его артефакты -- корневой "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (якорная ссылка, версия протокола, блокировки, журнал передач, единицы работы) и сам документ протокола. Семантика, кратко:"}],"type":"p"},{"items":[[{"t":"strong","v":"Блокировка (мягкая)."},{"t":"text","v":" Перед правкой чувствительных путей активный агент должен выставить держателя, область и срок блокировки в состоянии координации; другие не должны перебивать её без записи в журнале передач и повышения эпохи. Блокировки \"social + procedural\", не файловые."}],[{"t":"strong","v":"Эпоха."},{"t":"text","v":" Счётчик версии состояния координации."}],[{"t":"strong","v":"Журнал передач."},{"t":"text","v":" Предпочтительно дописываемый; передачи трактуются \"like narrow API contracts\"."}],[{"t":"strong","v":"Порядок чтения / записи."},{"t":"text","v":" "},{"t":"code","v":"github-sync.json"},{"t":"text","v":" (снимок очереди), затем "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (блокировки и передачи), затем якорная задача, затем целевая задача для изменения кода (раздел 4.4)."}]],"type":"ul"},{"runs":[{"t":"text","v":"Проверка формы "},{"t":"code","v":"TASK.md"},{"t":"text","v":" автоматизирована (раздел 5); верификация -- человек плюс CI (раздел 6)."}],"type":"p"}],"heading":"Протокол TASK","id":"протокол-task"},{"blocks":[{"runs":[{"t":"text","v":"Шлюз задач -- закон L1 в исполняемой форме: конституция называет "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":" средством контроля правила \"no code merged without "},{"t":"code","v":"Closes #N"},{"t":"text","v":"\". Всё, что документирует сайт, прошло через него -- каталоги навыков, расписаний, агентов, инструментов и документации имеют свою задачу и свою запись в "},{"t":"code","v":"docs/now/"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"Мандат TDD -- закон L4 и статья II SOUL в исполняемой форме: парсер отвергает спецификацию без блока "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" или "},{"t":"code","v":"bench"},{"t":"text","v":". Для спецификаций каталогов сайт добавляет свой шлюз: генератор компилирует каждую карточку через wasm и роняет сборку при нарушении схемы, неизвестной перекрёстной ссылке или связи, заявленной лишь с одной стороны (агент называет инструмент, а инструмент не называет агента в ответ, и наоборот)."}],"type":"p"}],"heading":"Шлюз задач и мандат TDD","id":"шлюз-задач-и-мандат-tdd"}]}},"bodyPath":"docs/system/rules.md","bodySha256":"fead79216c0c6b88907a51098b2f4664e70efb0f48f5870ebd3e1a54f6cb8e9d","diagram":"law-hierarchy","discarded":0,"enabled":true,"id":"docs/rules","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/rules.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/rules.t27"},"moduleName":"docs_chapter_rules","order":2,"sections":[{"heading":{"en":"The constitutional stack","ru":"Конституционный стек"},"id":"the-constitutional-stack"},{"heading":{"en":"SOUL articles","ru":"Статьи SOUL"},"id":"soul-articles"},{"heading":{"en":"Invariant laws and their priority","ru":"Инвариантные законы и их приоритет"},"id":"invariant-laws-and-their-priority"},{"heading":{"en":"Non-negotiables for changes","ru":"Неотменяемые требования к изменениям"},"id":"non-negotiables-for-changes"},{"heading":{"en":"TASK protocol","ru":"Протокол TASK"},"id":"task-protocol"},{"heading":{"en":"Issue gate and TDD mandate","ru":"Шлюз задач и мандат TDD"},"id":"issue-gate-and-tdd-mandate"}],"sha256":"3a27bd5a4d2a3afccb342301f277a906103ff8c6fd802bace787ed808e89e22f","sources":[{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"},{"kind":"file","path":"AGENTS.md","rel":"AGENTS.md","repo":"t27","sha256":"1c9b8cce1600d4220d74498d187934e0b935ad1eae6deb9c1b100057ce9ac9e9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","where":"vendored"},{"kind":"file","path":"CLAUDE.md","rel":"CLAUDE.md","repo":"t27","sha256":"b6250fd688a9d794b9eaecebd9882905aa49bfab06616be82211a87fe098656d","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/CLAUDE.md","where":"vendored"},{"kind":"file","path":"docs/T27-CONSTITUTION.md","rel":"docs/T27-CONSTITUTION.md","repo":"t27","sha256":"2c06724425f721ef6356edc9a14e4f1af530d1246c5c6a318fd42f59aaa319a5","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/T27-CONSTITUTION.md","where":"vendored"},{"kind":"file","path":"docs/coordination/TASK_PROTOCOL.md","rel":"docs/coordination/TASK_PROTOCOL.md","repo":"t27","sha256":"dbbea6fe6eb3ce0df60cf58bb0c2c2973313523a9f9530aa792f07dcb65a38ef","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/coordination/TASK_PROTOCOL.md","where":"vendored"}],"specPath":"specs/docs/chapters/rules.t27","stem":"rules","table":{"columns":["law","name","body","enforcement"],"kind":"laws","note":"Priority: L1 > L2 > … > L7","rows":[{"body":"No code merged without `Closes #N` — every PR must reference a GitHub issue","enforcement":"`.github/workflows/issue-gate.yml`","law":"L1","name":"TRACEABILITY"},{"body":"Files under `gen/` are generated; edit the `.t27` spec instead","enforcement":"`./target/release/t27c validate-gen-headers`","law":"L2","name":"GENERATION"},{"body":"All `.t27` / `.zig` / `.v` / `.c` source — ASCII-only identifiers & comments","enforcement":"`SOUL.md`, `ADR-004`, build.rs language checks","law":"L3","name":"PURITY"},{"body":"Every `.t27` spec must contain `test` / `invariant` / `bench`","enforcement":"Ring 037 / #132, parser enforcement","law":"L4","name":"TESTABILITY"},{"body":"**K2 core:** φ² = φ + 1 on ℝ; consequence φ² + φ⁻² = 3; IEEE f64 checks use tolerance","enforcement":"`NUMERIC-CORE-PALETTE-REGISTRY.md`, `specs/math/constants.t27`","law":"L5","name":"IDENTITY"},{"body":"`conformance/FORMAT-SPEC-001.json` + `specs/numeric/gf16.t27` are the numeric ceiling — never forked","enforcement":"SSOT: seal coverage CI","law":"L6","name":"CEILING"},{"body":"No new `*.sh` on the critical path for validation / gen / data","enforcement":"`SOUL.md` Article VIII; `t27c` + `tri` only","law":"L7","name":"UNITY"}],"source":"docs/T27-CONSTITUTION.md, section 2"},"title":{"en":"Constitution and the rules of the game for agents","ru":"Конституция и правила игры для агентов"},"typecheckOk":true},{"body":{"en":{"lead":[{"runs":[{"t":"text","v":"The site orders what the repositories ship into five layers and shows the same ladder in the header of every Explorer: "},{"t":"strong","v":"Specs -> Skills -> Crons -> Agents -> Tools"},{"t":"text","v":". Each layer is a directory of "},{"t":"code","v":".t27"},{"t":"text","v":" files in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", each has a README that states its schema, and each is rendered from those files by one generator through the compiler wasm. The ladder counts on the site are read from the generated JSON at build time; the table next to this chapter shows them for the commit the documentation was generated from."}],"type":"p"}],"sections":[{"blocks":[{"runs":[{"t":"text","v":"The base layer is the "},{"t":"code","v":".t27"},{"t":"text","v":" corpus itself: everything under "},{"t":"code","v":"specs/"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", from the language core and the numeric formats to the catalogs below. The site vendors a byte-identical copy under "},{"t":"code","v":"apps/website/public/t27/files/"},{"t":"text","v":" and compiles every file with the vendored "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":" at build time. The Spec Explorer ("},{"t":"code","v":"#/specs"},{"t":"text","v":") shows each file with its verdict; the manifest that lists them ("},{"t":"code","v":"public/t27/manifest.json"},{"t":"text","v":") is generated and never hand-edited."}],"type":"p"}],"heading":"Specs","id":"specs"},{"blocks":[{"runs":[{"t":"text","v":"A skill is a published procedure an agent can run -- a "},{"t":"code","v":"SKILL.md"},{"t":"text","v":" in one of the repositories. "},{"t":"code","v":"specs/skills/.t27"},{"t":"text","v":" declares each one (KIND, ID, NAME, REPO, SOURCE, SUMMARY_EN, COMMAND, SPECS, TAGS, ENABLED, TIMEOUT_MIN). The witness label on a skill card says how the card relates to the code: "},{"t":"code","v":"spec+code"},{"t":"text","v":" when both the spec and the "},{"t":"code","v":"SKILL.md"},{"t":"text","v":" exist, "},{"t":"code","v":"spec-only"},{"t":"text","v":" when only the spec does, "},{"t":"code","v":"code-only"},{"t":"text","v":" when a skill file has no spec yet. Skill Explorer: "},{"t":"code","v":"#/skills"},{"t":"text","v":"."}],"type":"p"}],"heading":"Skills","id":"skills"},{"blocks":[{"runs":[{"t":"text","v":"A cron is a scheduled job: a workflow schedule, a Railway timer, a daemon loop. "},{"t":"code","v":"specs/crons/.t27"},{"t":"text","v":" declares each (HOST, REPO, SERVICE, INTERVAL_MS, TZ, RUNS, RUNS_NOTE, ENABLED, NOTE, ON_FAILURE, CONTROL). "},{"t":"code","v":"RUNS"},{"t":"text","v":" lists the skill IDs a job invokes, and only where the source shows the invocation; where none is found "},{"t":"code","v":"RUNS"},{"t":"text","v":" is empty and "},{"t":"code","v":"RUNS_NOTE"},{"t":"text","v":" says so (\"no skill invocation found in source\"). The Cron Explorer ("},{"t":"code","v":"#/crons"},{"t":"text","v":") computes the next firing from "},{"t":"code","v":"INTERVAL_MS"},{"t":"text","v":" and "},{"t":"code","v":"TZ"},{"t":"text","v":". A job that runs no skill is a job the site cannot tie to the layers above; that is recorded, not hidden."}],"type":"p"}],"heading":"Crons","id":"crons"},{"blocks":[{"runs":[{"t":"text","v":"The 27 letters of the alphabet, one spec each: "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" with LETTER, ORDINAL, LETTER_NAME, NAME, DOMAIN, ARCHETYPE, REGISTER, LAYER, SUMMARY_EN, the three binding documents (SOUL, AGENTS_DOC, ALPHABET), KEY_FILES, the entry and exit invariants, CLARA_ROLE, SKILLS with SKILLS_NOTE and TOOLS with TOOLS_NOTE. An agent holds a skill or a tool only where a source line binds it -- a "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":" file, the alphabet, a phase description -- and the note cites that line or says why the list is empty. The generator fails the build on an unknown skill or tool ID and on a binding stated on one side only. Agent Explorer: "},{"t":"code","v":"#/agents"},{"t":"text","v":". The full table is the next chapter."}],"type":"p"}],"heading":"Agents","id":"agents"},{"blocks":[{"runs":[{"t":"text","v":"What an agent can call: the commands of the "},{"t":"code","v":"tri"},{"t":"text","v":" CLI and the tools of the MCP servers. "},{"t":"code","v":"specs/tools/tri/.t27"},{"t":"text","v":" is read from the clap "},{"t":"code","v":"Commands"},{"t":"text","v":" enum in "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" (one card per variant, with its nested actions and arguments); "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" from the server sources, manifests and "},{"t":"code","v":".mcp.json"},{"t":"text","v":" entries of both repositories, with the tool names, descriptions and input-schema keys. The witness on every tri card is "},{"t":"code","v":"source-parse"},{"t":"text","v":" (the enum was read at a recorded commit) until someone diffs the list against "},{"t":"code","v":"tri --help"},{"t":"text","v":" and relabels it "},{"t":"code","v":"help-output"},{"t":"text","v":". Servers whose code is a published package outside the repositories carry "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":". Tool Explorer: "},{"t":"code","v":"#/tools"},{"t":"text","v":"."}],"type":"p"}],"heading":"Tools","id":"tools"},{"blocks":[{"runs":[{"t":"text","v":"One generator, "},{"t":"code","v":"scripts/agents-from-specs.mjs"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", reads the vendored "},{"t":"code","v":".t27"},{"t":"text","v":" files, compiles each through the wasm, reads the constants of the compiled module, checks them against the schema of the layer, resolves every cross-reference (skill IDs in crons and agents, tool IDs in agents, agent letters in tools, spec paths in skills), and writes one JSON per layer under "},{"t":"code","v":"public/"},{"t":"text","v":". It runs in "},{"t":"code","v":"prebuild"},{"t":"text","v":", so a spec that does not compile or a reference that does not resolve stops the site from building. No "},{"t":"code","v":".t27"},{"t":"text","v":" is parsed with a regular expression anywhere in that path."}],"type":"p"},{"runs":[{"t":"text","v":"Translations follow the same rule. "},{"t":"code","v":"specs/i18n/-.t27"},{"t":"text","v":" declares which fields of which specs a bundle may translate and where the bundle lives; the bundle ("},{"t":"code","v":"apps/website/i18n/*.json"},{"t":"text","v":") carries the text; the generator checks that every bundle entry names an existing spec and reports coverage. The specs stay English-only."}],"type":"p"}],"heading":"From spec to site","id":"from-spec-to-site"},{"blocks":[{"runs":[{"t":"text","v":"Agents log what happened under "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" in each repository: episodes as JSON, notes as Markdown. "},{"t":"code","v":"scripts/sync-agents-experience.mjs"},{"t":"text","v":" reads both trees at their current commit and writes "},{"t":"code","v":"public/agents/experience.json"},{"t":"text","v":" with counts per repository and, where an episode names an agent letter, the attribution. At the commit this documentation was generated from no episode is attributed to any letter -- the field the sync looks for is absent from every episode -- and the agent cards say so. The snapshot records the commit of each tree, not the path of the checkout."}],"type":"p"}],"heading":"Experience","id":"experience"}],"title":"The five-layer system"},"ru":{"lead":[{"runs":[{"t":"text","v":"Сайт упорядочивает то, что поставляют репозитории, в пять слоёв и показывает одну и ту же лестницу в заголовке каждого обозревателя: "},{"t":"strong","v":"Specs -> Skills -> Crons -> Agents -> Tools"},{"t":"text","v":". Каждый слой -- каталог файлов "},{"t":"code","v":".t27"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", у каждого есть README со схемой, и каждый отображается из этих файлов одним генератором через wasm компилятора. Счётчики лестницы на сайте читаются из порождённого JSON при сборке; таблица рядом с этой главой показывает их для коммита, на котором порождена документация."}],"type":"p"}],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Базовый слой -- сам корпус "},{"t":"code","v":".t27"},{"t":"text","v":": всё под "},{"t":"code","v":"specs/"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", от ядра языка и численных форматов до каталогов ниже. Сайт хранит побайтово идентичную вендорную копию под "},{"t":"code","v":"apps/website/public/t27/files/"},{"t":"text","v":" и компилирует каждый файл вендорным "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":" при сборке. Обозреватель спецификаций ("},{"t":"code","v":"#/specs"},{"t":"text","v":") показывает каждый файл с его вердиктом; перечисляющий их манифест ("},{"t":"code","v":"public/t27/manifest.json"},{"t":"text","v":") порождается и никогда не правится вручную."}],"type":"p"}],"heading":"Спецификации","id":"спецификации"},{"blocks":[{"runs":[{"t":"text","v":"Навык -- опубликованная процедура, которую может выполнить агент: "},{"t":"code","v":"SKILL.md"},{"t":"text","v":" в одном из репозиториев. "},{"t":"code","v":"specs/skills/.t27"},{"t":"text","v":" объявляет каждый (KIND, ID, NAME, REPO, SOURCE, SUMMARY_EN, COMMAND, SPECS, TAGS, ENABLED, TIMEOUT_MIN). Метка свидетеля на карточке навыка говорит, как карточка соотносится с кодом: "},{"t":"code","v":"spec+code"},{"t":"text","v":", когда есть и спецификация, и "},{"t":"code","v":"SKILL.md"},{"t":"text","v":"; "},{"t":"code","v":"spec-only"},{"t":"text","v":", когда есть только спецификация; "},{"t":"code","v":"code-only"},{"t":"text","v":", когда у файла навыка ещё нет спецификации. Обозреватель навыков: "},{"t":"code","v":"#/skills"},{"t":"text","v":"."}],"type":"p"}],"heading":"Навыки","id":"навыки"},{"blocks":[{"runs":[{"t":"text","v":"Расписание -- запланированное задание: расписание workflow, таймер Railway, цикл демона. "},{"t":"code","v":"specs/crons/.t27"},{"t":"text","v":" объявляет каждое (HOST, REPO, SERVICE, INTERVAL_MS, TZ, RUNS, RUNS_NOTE, ENABLED, NOTE, ON_FAILURE, CONTROL). "},{"t":"code","v":"RUNS"},{"t":"text","v":" перечисляет ID навыков, которые запускает задание, и только там, где источник показывает вызов; где вызова не найдено, "},{"t":"code","v":"RUNS"},{"t":"text","v":" пуст, а "},{"t":"code","v":"RUNS_NOTE"},{"t":"text","v":" говорит об этом (\"no skill invocation found in source\"). Обозреватель расписаний ("},{"t":"code","v":"#/crons"},{"t":"text","v":") вычисляет следующий запуск по "},{"t":"code","v":"INTERVAL_MS"},{"t":"text","v":" и "},{"t":"code","v":"TZ"},{"t":"text","v":". Задание, не запускающее навык, -- это задание, которое сайт не может связать со слоями выше; это записывается, а не скрывается."}],"type":"p"}],"heading":"Расписания","id":"расписания"},{"blocks":[{"runs":[{"t":"text","v":"27 букв алфавита, по одной спецификации на каждую: "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" с LETTER, ORDINAL, LETTER_NAME, NAME, DOMAIN, ARCHETYPE, REGISTER, LAYER, SUMMARY_EN, тремя связывающими документами (SOUL, AGENTS_DOC, ALPHABET), KEY_FILES, входным и выходным инвариантами, CLARA_ROLE, SKILLS с SKILLS_NOTE и TOOLS с TOOLS_NOTE. Агент держит навык или инструмент только там, где его связывает строка источника -- файл "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":", алфавит, описание фазы, -- и примечание цитирует эту строку или объясняет, почему список пуст. Генератор роняет сборку на неизвестном ID навыка или инструмента и на связи, заявленной лишь с одной стороны. Обозреватель агентов: "},{"t":"code","v":"#/agents"},{"t":"text","v":". Полная таблица -- в следующей главе."}],"type":"p"}],"heading":"Агенты","id":"агенты"},{"blocks":[{"runs":[{"t":"text","v":"То, что агент может вызвать: команды CLI "},{"t":"code","v":"tri"},{"t":"text","v":" и инструменты серверов MCP. "},{"t":"code","v":"specs/tools/tri/.t27"},{"t":"text","v":" читается из clap-перечисления "},{"t":"code","v":"Commands"},{"t":"text","v":" в "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" (по карточке на вариант, с вложенными действиями и аргументами); "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" -- из исходников серверов, манифестов и записей "},{"t":"code","v":".mcp.json"},{"t":"text","v":" обоих репозиториев, с именами инструментов, описаниями и ключами входных схем. Свидетель на карточке tri -- "},{"t":"code","v":"source-parse"},{"t":"text","v":" (перечисление прочитано на записанном коммите), пока кто-нибудь не сравнит список с "},{"t":"code","v":"tri --help"},{"t":"text","v":" и не переименует его в "},{"t":"code","v":"help-output"},{"t":"text","v":". Серверы, чей код -- опубликованный пакет вне репозиториев, несут "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":". Обозреватель инструментов: "},{"t":"code","v":"#/tools"},{"t":"text","v":"."}],"type":"p"}],"heading":"Инструменты","id":"инструменты"},{"blocks":[{"runs":[{"t":"text","v":"Один генератор, "},{"t":"code","v":"scripts/agents-from-specs.mjs"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", читает вендорные файлы "},{"t":"code","v":".t27"},{"t":"text","v":", компилирует каждый через wasm, читает константы скомпилированного модуля, сверяет их со схемой слоя, разрешает каждую перекрёстную ссылку (ID навыков в расписаниях и агентах, ID инструментов в агентах, буквы агентов в инструментах, пути спецификаций в навыках) и пишет по одному JSON на слой под "},{"t":"code","v":"public/"},{"t":"text","v":". Он выполняется в "},{"t":"code","v":"prebuild"},{"t":"text","v":", поэтому спецификация, которая не компилируется, или ссылка, которая не разрешается, останавливает сборку сайта. Ни один "},{"t":"code","v":".t27"},{"t":"text","v":" на этом пути не разбирается регулярным выражением."}],"type":"p"},{"runs":[{"t":"text","v":"Переводы следуют тому же правилу. "},{"t":"code","v":"specs/i18n/-.t27"},{"t":"text","v":" объявляет, какие поля каких спецификаций бандл может переводить и где бандл лежит; бандл ("},{"t":"code","v":"apps/website/i18n/*.json"},{"t":"text","v":") несёт текст; генератор проверяет, что каждая запись бандла называет существующую спецификацию, и сообщает покрытие. Спецификации остаются только английскими."}],"type":"p"}],"heading":"От спецификации к сайту","id":"от-спецификации-к-сайту"},{"blocks":[{"runs":[{"t":"text","v":"Агенты записывают, что произошло, под "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" в каждом репозитории: эпизоды как JSON, заметки как Markdown. "},{"t":"code","v":"scripts/sync-agents-experience.mjs"},{"t":"text","v":" читает оба дерева на их текущем коммите и пишет "},{"t":"code","v":"public/agents/experience.json"},{"t":"text","v":" со счётчиками по репозиториям и, где эпизод называет букву агента, с атрибуцией. На коммите, на котором порождена документация, ни один эпизод не отнесён ни к одной букве -- поле, которое ищет синхронизация, отсутствует в каждом эпизоде, -- и карточки агентов говорят об этом. Снимок записывает коммит каждого дерева, а не путь чекаута."}],"type":"p"}],"heading":"Опыт","id":"опыт"}]}},"bodyPath":"docs/system/layers.md","bodySha256":"1c5e26427ae7992c2461e55e4bd2a9e6ee928c57a7330c08becf7afc3a164e9f","diagram":"skills-crons-agents","discarded":0,"enabled":true,"id":"docs/layers","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/layers.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/layers.t27"},"moduleName":"docs_chapter_layers","order":3,"sections":[{"heading":{"en":"Specs","ru":"Спецификации"},"id":"specs"},{"heading":{"en":"Skills","ru":"Навыки"},"id":"skills"},{"heading":{"en":"Crons","ru":"Расписания"},"id":"crons"},{"heading":{"en":"Agents","ru":"Агенты"},"id":"agents"},{"heading":{"en":"Tools","ru":"Инструменты"},"id":"tools"},{"heading":{"en":"From spec to site","ru":"От спецификации к сайту"},"id":"from-spec-to-site"},{"heading":{"en":"Experience","ru":"Опыт"},"id":"experience"}],"sha256":"bd04ddfca63bd0aa7d44a891620563e6c6f17481a536dfcd864878312e939083","sources":[{"kind":"file","path":"specs/skills/README.md","rel":"specs/skills/README.md","repo":"t27","sha256":"ac23eb8d74832014efaf5e65f3da070d999549724e01242cb8784a93ad43d360","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/skills/README.md","where":"vendored"},{"kind":"file","path":"specs/crons/README.md","rel":"specs/crons/README.md","repo":"t27","sha256":"4c442342670a5e12ebb54792059f60f9fae56c4a62b277fb7803885cad1b350b","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/crons/README.md","where":"vendored"},{"kind":"file","path":"specs/agents/README.md","rel":"specs/agents/README.md","repo":"t27","sha256":"c40833dbc9f271cc92f1e9a848324446429fed52954b53f80c3670bc9da78996","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/README.md","where":"vendored"},{"kind":"file","path":"specs/tools/README.md","rel":"specs/tools/README.md","repo":"t27","sha256":"37b5a451e43de9bc5746ceb80d4cf24f19ea6c3ad8751d2447049cba39c8a0ab","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/README.md","where":"vendored"},{"kind":"file","path":"specs/i18n/agents-ru.t27","rel":"specs/i18n/agents-ru.t27","repo":"t27","sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/i18n/agents-ru.t27","where":"vendored"}],"specPath":"specs/docs/chapters/layers.t27","stem":"layers","table":{"columns":["layer","dir","count","typecheckOk","source"],"kind":"ladder-counts","note":"","rows":[{"count":856,"dir":"specs/**","layer":"Specs","source":"public/t27/manifest.json","typecheckOk":null},{"count":26,"dir":"specs/skills","layer":"Skills","source":"public/skills/spec-skills.json","typecheckOk":26},{"count":33,"dir":"specs/crons","layer":"Crons","source":"public/crons/spec-crons.json","typecheckOk":33},{"count":27,"dir":"specs/agents","layer":"Agents","source":"public/agents/spec-agents.json","typecheckOk":27},{"count":92,"dir":"specs/tools/{tri,mcp}","layer":"Tools","source":"public/tools/spec-tools.json","typecheckOk":92},{"count":28,"dir":"specs/functions","layer":"Functions","source":"public/functions/spec-functions.json","typecheckOk":28}],"source":"the five catalog JSON files and public/t27/manifest.json"},"title":{"en":"The five-layer system","ru":"Пятислойная система"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" (v3.0, 2026-04-07) is the canon: \"The Trinity system employs 27 named agents -- corresponding to the 27 registers in "},{"t":"code","v":"isa/registers.t27"},{"t":"text","v":" (Coptic / Trinity alphabet).\" Each agent is bound to a letter and a register, has a domain (physics, numeric, compiler, graph, experience, verdict, bench, DePIN, UI and so on), logs to "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" and is linked to nodes in "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"The alphabet is read in three layers of nine, which the document also calls nonas:"}],"type":"p"},{"items":[[{"t":"strong","v":"Archetypal, A-I (1-9)"},{"t":"text","v":" -- \"pure concept -- foundation: soul, base, types\". A is the architecture and "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" as primary cause; C the compiler; E the experience; I the ISA."}],[{"t":"strong","v":"Spiritual, J-R (10-18)"},{"t":"text","v":" -- \"inner process -- life of the system: tasks, language, numbers, physics\". L is the language; M the metrics; N the numeric formats; P the physics constants; Q the queue."}],[{"t":"strong","v":"Physical, S-27th (19-27)"},{"t":"text","v":" -- \"manifestation -- proof: standards, verdict, deploy, gift\". S is the specs; T the Queen, who \"puts the final seal on everything\"; V the verdict; W the workflow and tri cell (\"double hash-seal\"); Z the zero-touch UX and docs; the 27th letter, Ti, is security."}]],"type":"ul"},{"runs":[{"t":"text","v":"The same three-by-nine layout organises the documentation tree of the repository ("},{"t":"code","v":"docs/nona-01-foundation/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-02-organism/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-03-manifest/"},{"t":"text","v":", Article DOCS-TREE of the constitution) and the ring on the site next to this chapter, where each letter sits at its ordinal and is coloured by its layer."}],"type":"p"}],"heading":"Twenty-seven letters, three nonas","id":"twenty-seven-letters-three-nonas"},{"blocks":[{"runs":[{"t":"text","v":"The table the site renders next to this chapter is generated from "},{"t":"code","v":"public/agents/spec-agents.json"},{"t":"text","v":", which is itself generated from the 27 files "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" through the compiler wasm -- it is not typed here. Per letter it shows the ordinal, the letter name, the domain, the archetype, the register, the layer, and the skills and tools the agent holds with their evidence. The FULL TABLE of the alphabet document (letter, domain, archetype, key files, entry invariant, exit invariant, CLARA role) is the source each spec was transcribed from; the spec's header names the row."}],"type":"p"},{"runs":[{"t":"text","v":"Two conventions of the table are worth stating. A letter's register comes from the schema section of the alphabet document (for example T is R19, V is R21, W is R22); the ordinal is the position in the alphabet, 1..27, so T is 20 and the 27th letter is 27. Where the alphabet document names two agents with the same Greek letter name (C and G are both written \"Gamma\"), the spec keeps the document's spelling and the ID stays unambiguous because it is the Latin letter, "},{"t":"code","v":"t27/C"},{"t":"text","v":" and "},{"t":"code","v":"t27/G"},{"t":"text","v":"."}],"type":"p"}],"heading":"The table","id":"the-table"},{"blocks":[{"runs":[{"t":"text","v":"Beyond the alphabet row, an agent card on the site carries what the other layers say about the letter:"}],"type":"p"},{"items":[[{"t":"strong","v":"Skills"},{"t":"text","v":" -- IDs from "},{"t":"code","v":"specs/skills"},{"t":"text","v":" the agent holds, bound only where a source names the skill. At the commit this documentation was generated from one letter holds skills: T, from "},{"t":"code","v":".claude/agents/trinity.md"},{"t":"text","v":", which names "},{"t":"code","v":"phi-loop"},{"t":"text","v":" and "},{"t":"code","v":"tri-pipeline"},{"t":"text","v":" in its Phase 2 and Phase 4. The other 26 carry an empty list and a note saying which sources were read."}],[{"t":"strong","v":"Tools"},{"t":"text","v":" -- IDs from "},{"t":"code","v":"specs/tools"},{"t":"text","v":" the agent holds, bound in both directions (the tool spec names the letter back). Five commands are bound today: "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W); the sources are the phase descriptions of the alphabet document and the "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":" files."}],[{"t":"strong","v":"Crons"},{"t":"text","v":" -- jobs whose "},{"t":"code","v":"RUNS"},{"t":"text","v":" names a skill the agent holds; empty while every "},{"t":"code","v":"RUNS"},{"t":"text","v":" is empty."}],[{"t":"strong","v":"Experience"},{"t":"text","v":" -- episodes attributed to the letter in "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":"; none is attributed today, and the card says so rather than showing a number it cannot source."}],[{"t":"strong","v":"Sources"},{"t":"text","v":" -- the three binding documents ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", the alphabet) at the pinned commit, and the spec file itself."}]],"type":"ul"}],"heading":"What a card carries","id":"what-a-card-carries"}],"title":"The 27-agent alphabet"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" (v3.0, 2026-04-07) -- канон: \"The Trinity system employs 27 named agents -- corresponding to the 27 registers in "},{"t":"code","v":"isa/registers.t27"},{"t":"text","v":" (Coptic / Trinity alphabet).\" Каждый агент привязан к букве и регистру, имеет область (физика, численные форматы, компилятор, граф, опыт, вердикт, бенчмарки, DePIN, UI и так далее), пишет в "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" и связан с узлами "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"Алфавит читается тремя слоями по девять, которые документ также называет нонами:"}],"type":"p"},{"items":[[{"t":"strong","v":"Архетипический, A-I (1-9)"},{"t":"text","v":" -- \"pure concept -- foundation: soul, base, types\". A -- архитектура и "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" как первопричина; C -- компилятор; E -- опыт; I -- ISA."}],[{"t":"strong","v":"Духовный, J-R (10-18)"},{"t":"text","v":" -- \"inner process -- life of the system: tasks, language, numbers, physics\". L -- язык; M -- метрики; N -- численные форматы; P -- физические константы; Q -- очередь."}],[{"t":"strong","v":"Физический, S-27th (19-27)"},{"t":"text","v":" -- \"manifestation -- proof: standards, verdict, deploy, gift\". S -- спецификации; T -- Королева, которая \"puts the final seal on everything\"; V -- вердикт; W -- рабочий процесс и tri cell (\"double hash-seal\"); Z -- zero-touch UX и документация; 27-я буква, Ti, -- безопасность."}]],"type":"ul"},{"runs":[{"t":"text","v":"Та же раскладка три на девять организует дерево документации репозитория ("},{"t":"code","v":"docs/nona-01-foundation/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-02-organism/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-03-manifest/"},{"t":"text","v":", статья DOCS-TREE конституции) и кольцо на сайте рядом с этой главой, где каждая буква стоит на своём порядковом номере и окрашена по слою."}],"type":"p"}],"heading":"Двадцать семь букв, три ноны","id":"двадцать-семь-букв-три-ноны"},{"blocks":[{"runs":[{"t":"text","v":"Таблица, которую сайт выводит рядом с этой главой, порождается из "},{"t":"code","v":"public/agents/spec-agents.json"},{"t":"text","v":", который сам порождён из 27 файлов "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" через wasm компилятора, -- она не набрана здесь. По каждой букве показаны порядковый номер, имя буквы, область, архетип, регистр, слой и навыки и инструменты, которые агент держит, с их свидетельствами. FULL TABLE документа алфавита (буква, область, архетип, ключевые файлы, входной инвариант, выходной инвариант, роль CLARA) -- источник, из которого перенесена каждая спецификация; заголовок спецификации называет строку."}],"type":"p"},{"runs":[{"t":"text","v":"Две условности таблицы стоит назвать. Регистр буквы берётся из раздела схемы документа алфавита (например, T -- R19, V -- R21, W -- R22); порядковый номер -- позиция в алфавите, 1..27, так что T -- 20, а 27-я буква -- 27. Где документ алфавита называет двух агентов одним греческим именем (C и G оба записаны как \"Gamma\"), спецификация сохраняет написание документа, а ID остаётся однозначным, потому что это латинская буква: "},{"t":"code","v":"t27/C"},{"t":"text","v":" и "},{"t":"code","v":"t27/G"},{"t":"text","v":"."}],"type":"p"}],"heading":"Таблица","id":"таблица"},{"blocks":[{"runs":[{"t":"text","v":"Помимо строки алфавита, карточка агента на сайте несёт то, что говорят о букве другие слои:"}],"type":"p"},{"items":[[{"t":"strong","v":"Навыки"},{"t":"text","v":" -- ID из "},{"t":"code","v":"specs/skills"},{"t":"text","v":", которые агент держит, связанные только там, где источник называет навык. На коммите, на котором порождена документация, навыки держит одна буква: T, из "},{"t":"code","v":".claude/agents/trinity.md"},{"t":"text","v":", который называет "},{"t":"code","v":"phi-loop"},{"t":"text","v":" и "},{"t":"code","v":"tri-pipeline"},{"t":"text","v":" в своих фазах 2 и 4. Остальные 26 несут пустой список и примечание о том, какие источники были прочитаны."}],[{"t":"strong","v":"Инструменты"},{"t":"text","v":" -- ID из "},{"t":"code","v":"specs/tools"},{"t":"text","v":", которые агент держит, связанные в обе стороны (спецификация инструмента называет букву в ответ). Сегодня связаны пять команд: "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W); источники -- описания фаз документа алфавита и файлы "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":"."}],[{"t":"strong","v":"Расписания"},{"t":"text","v":" -- задания, чей "},{"t":"code","v":"RUNS"},{"t":"text","v":" называет навык, который агент держит; пусто, пока каждый "},{"t":"code","v":"RUNS"},{"t":"text","v":" пуст."}],[{"t":"strong","v":"Опыт"},{"t":"text","v":" -- эпизоды, отнесённые к букве в "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":"; сегодня не отнесён ни один, и карточка говорит об этом, а не показывает число без источника."}],[{"t":"strong","v":"Источники"},{"t":"text","v":" -- три связывающих документа ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", алфавит) на закреплённом коммите и сам файл спецификации."}]],"type":"ul"}],"heading":"Что несёт карточка","id":"что-несёт-карточка"}]}},"bodyPath":"docs/system/alphabet.md","bodySha256":"a057cf483f6fccd642ff41bc56a22c8f214204494a0a17918a4e2a4dc1329af6","diagram":"agent-ring","discarded":0,"enabled":true,"id":"docs/alphabet","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/alphabet.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/alphabet.t27"},"moduleName":"docs_chapter_alphabet","order":4,"sections":[{"heading":{"en":"Twenty-seven letters, three nonas","ru":"Двадцать семь букв, три ноны"},"id":"twenty-seven-letters-three-nonas"},{"heading":{"en":"The table","ru":"Таблица"},"id":"the-table"},{"heading":{"en":"What a card carries","ru":"Что несёт карточка"},"id":"what-a-card-carries"}],"sha256":"d3be190095b4141b094dd75baaf76f725478eb18f8709f08fa600055ab3d782f","sources":[{"kind":"file","path":"docs/agents/AGENTS_ALPHABET.md","rel":"docs/agents/AGENTS_ALPHABET.md","repo":"t27","sha256":"c99352b305322031ee8af0c4777ae54c52ef50c694ff2aa0f4d95ab2fa82734a","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","where":"vendored"},{"kind":"file","path":"specs/agents/README.md","rel":"specs/agents/README.md","repo":"t27","sha256":"c40833dbc9f271cc92f1e9a848324446429fed52954b53f80c3670bc9da78996","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/README.md","where":"vendored"}],"specPath":"specs/docs/chapters/alphabet.t27","stem":"alphabet","table":{"columns":["letter","ordinal","letterName","domain","archetype","register","layer","skills","tools"],"kind":"agents","note":"","rows":[{"archetype":"Bull - leader, primary force","domain":"Architecture / ADR / SOUL","enabled":true,"episodes":0,"layer":"Archetypal","letter":"A","letterName":"Alpha","name":"Alpha (Architecture)","ordinal":1,"register":"R0","skills":[],"tools":[]},{"archetype":"House - container, dwelling","domain":"Build / Pipeline","enabled":true,"episodes":0,"layer":"Archetypal","letter":"B","letterName":"Beta","name":"Beta (Build)","ordinal":2,"register":"R1","skills":[],"tools":[]},{"archetype":"Camel - carrier across borders","domain":"Compiler Core / AR Language","enabled":true,"episodes":0,"layer":"Archetypal","letter":"C","letterName":"Gamma","name":"Gamma (Compiler Core)","ordinal":3,"register":"R2","skills":[],"tools":["tri/gen"]},{"archetype":"Door - transition between worlds","domain":"De-Zigfication / Migration","enabled":true,"episodes":0,"layer":"Archetypal","letter":"D","letterName":"Delta","name":"Delta (De-Zigfication)","ordinal":4,"register":"R3","skills":[],"tools":[]},{"archetype":"Window - view into the past","domain":"Experience / XAI","enabled":true,"episodes":0,"layer":"Archetypal","letter":"E","letterName":"Epsilon","name":"Epsilon (Experience)","ordinal":5,"register":"R4","skills":[],"tools":["tri/experience"]},{"archetype":"Nail - connection, binding","domain":"Formal Conformance","enabled":true,"episodes":0,"layer":"Archetypal","letter":"F","letterName":"Phi","name":"Phi (Formal Conformance)","ordinal":6,"register":"R5","skills":[],"tools":[]},{"archetype":"Return - feedback","domain":"Graph / ArchBench","enabled":true,"episodes":0,"layer":"Archetypal","letter":"G","letterName":"Gamma (var.)","name":"Gamma (Graph)","ordinal":7,"register":"R6","skills":[],"tools":[]},{"archetype":"Fence - boundary, life","domain":"HSLM / NN Architectures","enabled":true,"episodes":0,"layer":"Archetypal","letter":"H","letterName":"Eta","name":"Eta (HSLM)","ordinal":8,"register":"R7","skills":[],"tools":[]},{"archetype":"Hand - action, point","domain":"ISA / Registers","enabled":true,"episodes":0,"layer":"Archetypal","letter":"I","letterName":"Iota","name":"Iota (ISA)","ordinal":9,"register":"R8","skills":[],"tools":[]},{"archetype":"Hand with grip - dispatcher","domain":"Jobs / Task Routing","enabled":true,"episodes":0,"layer":"Spiritual","letter":"J","letterName":"Iota-extended","name":"Iota-extended (Jobs)","ordinal":10,"register":"R9","skills":[],"tools":[]},{"archetype":"Palm - open hand","domain":"Kernel / FPGA MAC","enabled":true,"episodes":0,"layer":"Spiritual","letter":"K","letterName":"Kappa","name":"Kappa (Kernel)","ordinal":11,"register":"R10","skills":[],"tools":[]},{"archetype":"Staff - teacher, guide","domain":"Language / Syntax vNEXT","enabled":true,"episodes":0,"layer":"Spiritual","letter":"L","letterName":"Lambda","name":"Lambda (Language)","ordinal":12,"register":"R11","skills":[],"tools":[]},{"archetype":"Water - flow of data","domain":"Metrics / Telemetry","enabled":true,"episodes":0,"layer":"Spiritual","letter":"M","letterName":"Mu","name":"Mu (Metrics)","ordinal":13,"register":"R12","skills":[],"tools":[]},{"archetype":"Fish - offspring, multiplication","domain":"Numeric / GoldenFloat","enabled":true,"episodes":0,"layer":"Spiritual","letter":"N","letterName":"Nu","name":"Nu (Numeric)","ordinal":14,"register":"R13","skills":[],"tools":[]},{"archetype":"Eye - all-seeing oko","domain":"Orchestration / Phases","enabled":true,"episodes":0,"layer":"Spiritual","letter":"O","letterName":"Omicron","name":"Omicron (Orchestration)","ordinal":15,"register":"R14","skills":[],"tools":[]},{"archetype":"Mouth - speech of universe","domain":"Physics / SacredPhysics","enabled":true,"episodes":0,"layer":"Spiritual","letter":"P","letterName":"Pi","name":"Pi (Physics)","ordinal":16,"register":"R15","skills":[],"tools":[]},{"archetype":"Needle's eye - bottleneck","domain":"Queue / Scheduling","enabled":true,"episodes":0,"layer":"Spiritual","letter":"Q","letterName":"Theta","name":"Theta (Queue)","ordinal":17,"register":"R16","skills":[],"tools":[]},{"archetype":"Head - beginning of execution","domain":"Runtime / Bootstrap","enabled":true,"episodes":0,"layer":"Spiritual","letter":"R","letterName":"Rho","name":"Rho (Runtime)","ordinal":18,"register":"R17","skills":[],"tools":[]},{"archetype":"Teeth - sharpness, flame","domain":"Specs / Standardization / AR Specs","enabled":true,"episodes":0,"layer":"Physical","letter":"S","letterName":"Sigma","name":"Sigma (Specs)","ordinal":19,"register":"R18","skills":[],"tools":[]},{"archetype":"CROSS - seal, signature, truth","domain":"Queen / Lotus Orchestrator","enabled":true,"episodes":0,"layer":"Physical","letter":"T","letterName":"Tau","name":"Tau (TRINITY Queen)","ordinal":20,"register":"R19","skills":["t27/phi-loop","t27/tri-pipeline"],"tools":["tri/gen","tri/test","mcp/inngest-dev"]},{"archetype":"Fork - branching","domain":"Universe Levels / Domains","enabled":true,"episodes":0,"layer":"Physical","letter":"U","letterName":"Upsilon","name":"Upsilon (Universe)","ordinal":21,"register":"R20","skills":[],"tools":[]},{"archetype":"Hook - connection, conjunction","domain":"Verdict / Bench / AR Validation","enabled":true,"episodes":0,"layer":"Physical","letter":"V","letterName":"Vau (var.)","name":"Vau (Verdict)","ordinal":22,"register":"R21","skills":[],"tools":["tri/test","tri/verdict"]},{"archetype":"Double hook - double seal","domain":"Workflow / tri cell","enabled":true,"episodes":0,"layer":"Physical","letter":"W","letterName":"Double-Vav","name":"Double-Vav (Workflow)","ordinal":23,"register":"R22","skills":[],"tools":["tri/cell"]},{"archetype":"Intersection - point of exchange","domain":"External Bindings / Interop","enabled":true,"episodes":0,"layer":"Physical","letter":"X","letterName":"Chi","name":"Chi (External)","ordinal":24,"register":"R23","skills":[],"tools":[]},{"archetype":"Merging paths - evolutionary selection","domain":"Yield / DePIN / Fitness","enabled":true,"episodes":0,"layer":"Physical","letter":"Y","letterName":"Psi","name":"Psi (Yield/DePIN)","ordinal":25,"register":"R24","skills":[],"tools":[]},{"archetype":"Sword - cutting edge, point","domain":"Zero-Touch UX / Docs","enabled":true,"episodes":0,"layer":"Physical","letter":"Z","letterName":"Zeta","name":"Zeta (Zero-Touch)","ordinal":26,"register":"R25","skills":[],"tools":[]},{"archetype":"Egyptian cross - \"sacred gift\"","domain":"Security / Reserve","enabled":false,"episodes":0,"layer":"Physical","letter":"TI","letterName":"Ti","name":"Ti (Security)","ordinal":27,"register":"R26","skills":[],"tools":[]}],"source":"public/agents/spec-agents.json"},"title":{"en":"The 27-agent alphabet","ru":"Алфавит из 27 агентов"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Agent T, the Queen, is the central orchestrator: \"reads "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" and knows all module dependencies\", \"conducts 26 sub-agents (A..Z, except T) by their domains\", gathers results, validates architecture invariants and enforces that the source of truth is in "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":" with Zig, Verilog and C only as backends ("},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":", section \"AGENT T -- QUEEN TRINITY\", Responsibilities). Her module is "},{"t":"code","v":"specs/queen/lotus.t27"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"The alphabet document draws the cycle she runs as six phases and a seventh added by the SOUL law on git. The site renders the cycle from that document; in short:"}],"type":"p"},{"items":[[{"t":"strong","v":"PLAN"},{"t":"text","v":" -- analyse the task and select a strategy; read "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" for impact; decide which agents participate; check "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" for similar tasks."}],[{"t":"strong","v":"ASSIGN"},{"t":"text","v":" -- distribute tasks to agents by domain (A architecture, N numeric, P physics, F conformance, ...); set dependencies; create a tri cell for each agent (W seals)."}],[{"t":"strong","v":"RUN"},{"t":"text","v":" -- parallel execution; heartbeats; agents report to "},{"t":"code","v":".trinity/agent_events.jsonl"},{"t":"text","v":"; T redistributes if necessary."}],[{"t":"strong","v":"TEST & BENCH"},{"t":"text","v":" -- F checks conformance vectors, V runs benchmarks, G measures impact changes; metrics are collected in M for V's verdict."}],[{"t":"strong","v":"VERDICT"},{"t":"text","v":" -- V analyses the metrics; "},{"t":"code","v":"tri verdict --toxic"},{"t":"text","v":" asks whether the change is toxic; E records the experience; if toxic, Q blocks the task."}],[{"t":"strong","v":"EVOLVE"},{"t":"text","v":" -- update "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" if dependencies changed; update experience in E and M; S updates standards; W seals the tri-cell commit; Z updates documentation; T puts the final TAW seal."}],[{"t":"strong","v":"GIT WORKFLOW"},{"t":"text","v":" (\"new -- SOUL law\") -- commit with "},{"t":"code","v":"--all"},{"t":"text","v":" and the message "},{"t":"code","v":"cell:{id} issue:{N} ..."},{"t":"text","v":", then push "},{"t":"code","v":"HEAD"},{"t":"text","v":" to origin in strict mode; checks: sealed cell, non-toxic verdict, artifacts; the registry records the commit hash and the pushed flag. The alphabet writes both steps as a "},{"t":"code","v":"git"},{"t":"text","v":" subcommand of tri; the current clap surface does not expose one (witness: "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" has no such variant), so they are quoted here as steps, not as commands to copy."}]],"type":"ol"},{"runs":[{"t":"text","v":"The document's SOUL law for TDD follows the seventh phase: any P0/P1 episode in "},{"t":"code","v":"--strict"},{"t":"text","v":" mode is considered COMPLETE only after a successful push to "},{"t":"code","v":"github.com/gHashTag/t27"},{"t":"text","v":" with bound sealed-cell and non-toxic verdict (the law names the push as a tri subcommand; see the note on the seventh phase above). Where an agent letter appears in a phase description, the tools chapter and the agent cards use that line as the source of a binding ("},{"t":"code","v":"tri cell"},{"t":"text","v":" to W, "},{"t":"code","v":"tri verdict"},{"t":"text","v":" to V)."}],"type":"p"}],"heading":"The six-phase cycle and Phase 7","id":"the-six-phase-cycle-and-phase-7"},{"blocks":[{"runs":[{"t":"text","v":"Three steps carry the cycle's state; two of them are tri commands with a spec under "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":" read from the clap enum of "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":":"}],"type":"p"},{"items":[[{"t":"strong","v":"`tri cell`"},{"t":"text","v":" -- the unit of work of one agent: created in ASSIGN, sealed by W with a hash in EVOLVE. Nested actions are listed on the tool card ("},{"t":"code","v":"specs/tools/tri/cell.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"`tri verdict`"},{"t":"text","v":" -- V's decision over the metrics; "},{"t":"code","v":"--toxic"},{"t":"text","v":" is the question the cycle asks in VERDICT ("},{"t":"code","v":"specs/tools/tri/verdict.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"the git step"},{"t":"text","v":" -- the seventh phase as the alphabet document writes it, as a "},{"t":"code","v":"git"},{"t":"text","v":" subcommand of tri. At the commit this documentation was generated from the clap enum of "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" has no such variant, so the tool catalog has no card for it; the phase is documented from the alphabet and marked "},{"t":"code","v":"[declared]"},{"t":"text","v":", and the gap is recorded here rather than filled with a card."}]],"type":"ul"},{"runs":[{"t":"text","v":"The seal itself is a hash. At the compiler level the same idea is the seal of the bootstrap compiler ("},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":", "},{"t":"code","v":"CANON.md"},{"t":"text","v":" section 0) and the ring canon: a ring freezes when its hash is recorded, and drift between the recorded seal and the working tree is a fact the dashboard shows."}],"type":"p"}],"heading":"Cell, seal, verdict","id":"cell-seal-verdict"},{"blocks":[{"runs":[{"t":"text","v":"The repository states the Queen's loop twice, and the two statements differ. The alphabet document gives the seven phases above (PLAN, ASSIGN, RUN, TEST & BENCH, VERDICT, EVOLVE, GIT WORKFLOW). "},{"t":"code","v":"CLAUDE.md"},{"t":"text","v":", \"Autonomous Execution Loop (AEL v2.0)\", gives a six-phase loop for an agent operating as the Queen -- OBSERVE (E), PLAN (T), DELEGATE (C/V), VERIFY (V), SYNTHESIZE (L), LEARN (L) -- and, separately, the nine-phase PHI LOOP for ring-based development (Issue, Spec, TDD, Code, Gen, Seal, Verify, Land, Learn)."}],"type":"p"},{"runs":[{"t":"text","v":"This documentation renders the alphabet's cycle, because it is the one that names the tri commands and the agent letters per phase, and records the AEL loop as the second statement without reconciling them. Which one binds an autonomous agent in a given situation is a question for "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" and its owners, not for a generated page."}],"type":"p"}],"heading":"Two statements of the loop","id":"two-statements-of-the-loop"}],"title":"Queen orchestration"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Агент T, Королева, -- центральный оркестратор: \"reads "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" and knows all module dependencies\", \"conducts 26 sub-agents (A..Z, except T) by their domains\", собирает результаты, проверяет архитектурные инварианты и следит за тем, чтобы источник истины был в "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":", а Zig, Verilog и C оставались только бэкендами ("},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":", раздел \"AGENT T -- QUEEN TRINITY\", Responsibilities). Её модуль -- "},{"t":"code","v":"specs/queen/lotus.t27"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"Документ алфавита рисует её цикл шестью фазами и седьмой, добавленной законом SOUL о git. Сайт выводит цикл из этого документа; кратко:"}],"type":"p"},{"items":[[{"t":"strong","v":"PLAN"},{"t":"text","v":" -- разобрать задачу и выбрать стратегию; прочитать "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" для анализа влияния; решить, какие агенты участвуют; проверить "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" на похожие задачи."}],[{"t":"strong","v":"ASSIGN"},{"t":"text","v":" -- распределить задачи агентам по областям (A архитектура, N численные форматы, P физика, F конформность, ...); задать зависимости; создать tri cell для каждого агента (W печатает)."}],[{"t":"strong","v":"RUN"},{"t":"text","v":" -- параллельное выполнение; heartbeats; агенты отчитываются в "},{"t":"code","v":".trinity/agent_events.jsonl"},{"t":"text","v":"; T перераспределяет при необходимости."}],[{"t":"strong","v":"TEST & BENCH"},{"t":"text","v":" -- F проверяет векторы конформности, V гоняет бенчмарки, G измеряет изменения влияния; метрики собираются в M для вердикта V."}],[{"t":"strong","v":"VERDICT"},{"t":"text","v":" -- V анализирует метрики; "},{"t":"code","v":"tri verdict --toxic"},{"t":"text","v":" спрашивает, токсично ли изменение; E записывает опыт; если токсично, Q блокирует задачу."}],[{"t":"strong","v":"EVOLVE"},{"t":"text","v":" -- обновить "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":", если изменились зависимости; обновить опыт в E и M; S обновляет стандарты; W печатает коммит tri-cell; Z обновляет документацию; T ставит финальную печать TAW."}],[{"t":"strong","v":"GIT WORKFLOW"},{"t":"text","v":" (\"new -- SOUL law\") -- коммит с "},{"t":"code","v":"--all"},{"t":"text","v":" и сообщением "},{"t":"code","v":"cell:{id} issue:{N} ..."},{"t":"text","v":", затем push "},{"t":"code","v":"HEAD"},{"t":"text","v":" в origin в строгом режиме; проверки: запечатанная ячейка, нетоксичный вердикт, артефакты; реестр записывает хэш коммита и флаг pushed. Документ алфавита записывает оба шага как подкоманду "},{"t":"code","v":"git"},{"t":"text","v":" утилиты tri; текущая clap-поверхность её не предоставляет (свидетель: в "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" нет такого варианта), поэтому здесь они приведены как шаги, а не как команды для копирования."}]],"type":"ol"},{"runs":[{"t":"text","v":"Закон SOUL о TDD в документе следует за седьмой фазой: любой эпизод P0/P1 в режиме "},{"t":"code","v":"--strict"},{"t":"text","v":" считается COMPLETE только после успешного push в "},{"t":"code","v":"github.com/gHashTag/t27"},{"t":"text","v":" с привязанной запечатанной ячейкой и нетоксичным вердиктом (закон называет push подкомандой tri; см. примечание к седьмой фазе выше). Где буква агента появляется в описании фазы, глава об инструментах и карточки агентов используют эту строку как источник связи ("},{"t":"code","v":"tri cell"},{"t":"text","v":" -- W, "},{"t":"code","v":"tri verdict"},{"t":"text","v":" -- V)."}],"type":"p"}],"heading":"Шестифазный цикл и фаза 7","id":"шестифазный-цикл-и-фаза-7"},{"blocks":[{"runs":[{"t":"text","v":"Состояние цикла несут три шага; два из них -- команды tri со спецификацией под "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":", прочитанной из clap-перечисления "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":":"}],"type":"p"},{"items":[[{"t":"strong","v":"`tri cell`"},{"t":"text","v":" -- единица работы одного агента: создаётся в ASSIGN, запечатывается W хэшем в EVOLVE. Вложенные действия перечислены на карточке инструмента ("},{"t":"code","v":"specs/tools/tri/cell.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"`tri verdict`"},{"t":"text","v":" -- решение V по метрикам; "},{"t":"code","v":"--toxic"},{"t":"text","v":" -- вопрос, который цикл задаёт в VERDICT ("},{"t":"code","v":"specs/tools/tri/verdict.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"шаг git"},{"t":"text","v":" -- седьмая фаза в записи документа алфавита, как подкоманда "},{"t":"code","v":"git"},{"t":"text","v":" утилиты tri. На коммите, на котором порождена документация, в clap-перечислении "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" нет такого варианта, поэтому в каталоге инструментов нет карточки для него; фаза документирована по алфавиту с пометкой "},{"t":"code","v":"[declared]"},{"t":"text","v":", а пробел записан здесь, а не закрыт выдуманной карточкой."}]],"type":"ul"},{"runs":[{"t":"text","v":"Сама печать -- это хэш. На уровне компилятора та же идея -- печать бутстрап-компилятора ("},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":", "},{"t":"code","v":"CANON.md"},{"t":"text","v":", раздел 0) и канон колец: кольцо замораживается, когда записан его хэш, а расхождение между записанной печатью и рабочим деревом -- факт, который показывает панель."}],"type":"p"}],"heading":"Ячейка, печать, вердикт","id":"ячейка-печать-вердикт"},{"blocks":[{"runs":[{"t":"text","v":"Репозиторий формулирует цикл Королевы дважды, и формулировки различаются. Документ алфавита даёт семь фаз выше (PLAN, ASSIGN, RUN, TEST & BENCH, VERDICT, EVOLVE, GIT WORKFLOW). "},{"t":"code","v":"CLAUDE.md"},{"t":"text","v":", \"Autonomous Execution Loop (AEL v2.0)\", даёт шестифазный цикл агента, действующего как Королева, -- OBSERVE (E), PLAN (T), DELEGATE (C/V), VERIFY (V), SYNTHESIZE (L), LEARN (L) -- и отдельно девятифазный PHI LOOP для разработки по кольцам (Issue, Spec, TDD, Code, Gen, Seal, Verify, Land, Learn)."}],"type":"p"},{"runs":[{"t":"text","v":"Эта документация отображает цикл алфавита, потому что именно он называет команды tri и буквы агентов по фазам, и фиксирует цикл AEL как вторую формулировку, не сводя их воедино. Какая из них связывает автономного агента в конкретной ситуации -- вопрос к "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" и его владельцам, а не к порождённой странице."}],"type":"p"}],"heading":"Две формулировки цикла","id":"две-формулировки-цикла"}]}},"bodyPath":"docs/system/queen.md","bodySha256":"0008d41fdffdd063af243376fbf83c31ffe8ff9995c6d666e94751330d67c97d","diagram":"phase-cycle","discarded":0,"enabled":true,"id":"docs/queen","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/queen.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/queen.t27"},"moduleName":"docs_chapter_queen","order":5,"sections":[{"heading":{"en":"The six-phase cycle and Phase 7","ru":"Шестифазный цикл и фаза 7"},"id":"the-six-phase-cycle-and-phase-7"},{"heading":{"en":"Cell, seal, verdict","ru":"Ячейка, печать, вердикт"},"id":"cell-seal-verdict"},{"heading":{"en":"Two statements of the loop","ru":"Две формулировки цикла"},"id":"two-statements-of-the-loop"}],"sha256":"70d2234eebb2fa85930ed2b25c43866083a67c5190480e9bda198faf98adcef1","sources":[{"kind":"file","path":"docs/agents/AGENTS_ALPHABET.md","rel":"docs/agents/AGENTS_ALPHABET.md","repo":"t27","sha256":"c99352b305322031ee8af0c4777ae54c52ef50c694ff2aa0f4d95ab2fa82734a","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","where":"vendored"},{"kind":"file","path":"CLAUDE.md","rel":"CLAUDE.md","repo":"t27","sha256":"b6250fd688a9d794b9eaecebd9882905aa49bfab06616be82211a87fe098656d","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/CLAUDE.md","where":"vendored"},{"kind":"file","path":"specs/agents/t.t27","rel":"specs/agents/t.t27","repo":"t27","sha256":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/t.t27","where":"vendored"},{"kind":"file","path":"specs/tools/tri/cell.t27","rel":"specs/tools/tri/cell.t27","repo":"t27","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/tri/cell.t27","where":"vendored"},{"kind":"file","path":"specs/tools/tri/verdict.t27","rel":"specs/tools/tri/verdict.t27","repo":"t27","sha256":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/tri/verdict.t27","where":"vendored"}],"specPath":"specs/docs/chapters/queen.t27","stem":"queen","table":{"columns":["n","name","steps"],"kind":"phases","note":"","rows":[{"n":1,"name":"PLAN","note":"","steps":["Analyze task and select strategy","Read graph_v2.json for impact analysis","Determine which agents participate","Check experience: are there similar tasks in .trinity/experience/"]},{"n":2,"name":"ASSIGN","note":"","steps":["Distribute tasks to agents by domain","A (arch), N (numeric), P (physics), F (conformance), etc.","Set dependencies: G+F+V → V checks F checks G","Create tri-cell for each agent (W seals)"]},{"n":3,"name":"RUN","note":"","steps":["Parallel task execution by agents","Monitoring via heartbeats","Agents report status to `.trinity/agent_events.jsonl`","T coordinates, redistributing if necessary"]},{"n":4,"name":"TEST & BENCH","note":"","steps":["F checks conformance JSON vectors","V runs benchmarks (ARCH_BENCH-001)","G measures impact changes","Collect metrics in M for verdict by V"]},{"n":5,"name":"VERDICT","note":"","steps":["V analyzes metrics and makes decision","`tri verdict --toxic` — is the change toxic?","E records experience (if error) or success","If toxic → Q blocks task, E marks 3rd attempt"]},{"n":6,"name":"EVOLVE","note":"","steps":["Update graph_v2.json (if dependencies changed)","Update experience in E + M","S updates standards (if needed)","W seals tri-cell commit (hash seal)","Z updates documentation","T puts final TAW seal on completed work"]},{"n":7,"name":"GIT WORKFLOW","note":"new — SOUL law","steps":["`tri git commit --all -m \"cell:{id} issue:{N} ...\"`","`tri git push origin HEAD` (strict mode: only t27 repo)","Check: sealed cell + non-toxic verdict + artifacts","Update registry.json with commit hash and pushed flag"]}],"source":"docs/agents/AGENTS_ALPHABET.md, \"6-Phase Cycle of AGENT T\""},"title":{"en":"Queen orchestration","ru":"Оркестрация Королевы"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"tri"},{"t":"text","v":" is the command of the toolchain: "},{"t":"code","v":"./scripts/tri"},{"t":"text","v":" is an exec-only shim (SOUL Article VIII, section 8.2) that resolves the Rust binary "},{"t":"code","v":"t27c"},{"t":"text","v":", passes "},{"t":"code","v":"--repo-root"},{"t":"text","v":" and executes it. The catalog in "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":" holds one spec per variant of the clap "},{"t":"code","v":"Commands"},{"t":"text","v":" enum in "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":": the command word, the enum variant, the source file and the entry point, the doc comment as "},{"t":"code","v":"ABOUT"},{"t":"text","v":" with "},{"t":"code","v":"ABOUT_SOURCE"},{"t":"text","v":" naming where the text came from, the nested actions with their own doc comments, the arguments, the agent letters that own the command with the evidence line, when to use it, and the witness."}],"type":"p"},{"runs":[{"t":"text","v":"The table the site renders next to this chapter is generated from "},{"t":"code","v":"public/tools/spec-tools.json"},{"t":"text","v":" -- command, actions, owners, witness -- and the counts in its header are read from the same file. The witness on every tri card at the commit this documentation was generated from is "},{"t":"code","v":"source-parse"},{"t":"text","v":": the enum and its "},{"t":"code","v":"///"},{"t":"text","v":" comments were read from the source at a recorded commit, and "},{"t":"code","v":"cargo"},{"t":"text","v":" was not run. A card is relabelled "},{"t":"code","v":"help-output"},{"t":"text","v":" only when someone diffs the list against "},{"t":"code","v":"tri --help"},{"t":"text","v":" and records the result; until then the label says what was and was not done."}],"type":"p"},{"runs":[{"t":"text","v":"Commands whose variant has no doc comment quote the source they borrow their description from (for example "},{"t":"code","v":"tri cell"},{"t":"text","v":" quotes the "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" tool descriptions), so that no "},{"t":"code","v":"ABOUT"},{"t":"text","v":" is invented."}],"type":"p"}],"heading":"The tri CLI","id":"the-tri-cli"},{"blocks":[{"runs":[{"t":"text","v":"The second family is the Model Context Protocol servers the two repositories ship or register: for "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" the "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" crate, the "},{"t":"code","v":"tri-ssot"},{"t":"text","v":" manifest, "},{"t":"code","v":"t27-traceability"},{"t":"text","v":" and the entries of "},{"t":"code","v":".mcp.json"},{"t":"text","v":"; for "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" the "},{"t":"code","v":"trinity"},{"t":"text","v":" and "},{"t":"code","v":"needle"},{"t":"text","v":" Zig servers and its "},{"t":"code","v":".mcp.json"},{"t":"text","v":" entries. "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" carries the launch line, transport, version, environment variables, config path, repository, source, the tool names with descriptions and input-schema keys, resources, and the witness."}],"type":"p"},{"runs":[{"t":"text","v":"Servers whose code is a published package outside the repositories carry "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":" and a "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":" saying the tool list is not in either tree; nothing is invented for them. Two facts are recorded rather than fixed: "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" is not registered in "},{"t":"code","v":".mcp.json"},{"t":"text","v":" at the pinned commit ("},{"t":"code","v":"CONFIG"},{"t":"text","v":" is empty), and the "},{"t":"code","v":"tri-ssot"},{"t":"text","v":" manifest names a module the tree does not contain."}],"type":"p"},{"runs":[{"t":"text","v":"Two repositories are two lists. "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" does have a command-line binary of its own (an earlier version of this chapter said it had none; that was wrong): since S06 of gHashTag/trinity#988 its commands are cards under "},{"t":"code","v":"specs/tools/trinity/tri/"},{"t":"text","v":", read from the one registry that binary exports and its CI holds to the binary ("},{"t":"code","v":".trinity/registry.json"},{"t":"text","v":", 29 commands of a 187-entry table), with repository-qualified IDs ("},{"t":"code","v":"gHashTag/trinity:tri/"},{"t":"text","v":") so that a same-named command of the two binaries is never confused. "},{"t":"code","v":"specs/tools/catalog.t27"},{"t":"text","v":" states the schema, the identity rules and the legacy resolution; "},{"t":"code","v":"specs/tools/mcp_protocol.t27"},{"t":"text","v":" states what the Trinity MCP server does with a request; "},{"t":"code","v":"tools/trinity_tools_registry.py"},{"t":"text","v":" holds both and the cards to a measured inventory of the consumer."}],"type":"p"}],"heading":"MCP servers","id":"mcp-servers"},{"blocks":[{"runs":[{"t":"text","v":"A tool names the agent letters that own it ("},{"t":"code","v":"AGENTS"},{"t":"text","v":") only where a source line does, and "},{"t":"code","v":"AGENTS_NOTE"},{"t":"text","v":" cites that line or names the sources that were checked and found silent. The agent spec names the tool back ("},{"t":"code","v":"TOOLS"},{"t":"text","v":"), and the site's generator fails the build on a binding stated on one side only. Today five commands are bound -- "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W) -- from the phase descriptions of "},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" and the "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":" files; the other commands and every MCP server carry an empty "},{"t":"code","v":"AGENTS"},{"t":"text","v":" with a note. Skills are cross-linked when a skill spec's own "},{"t":"code","v":"COMMAND"},{"t":"text","v":" or "},{"t":"code","v":"SUMMARY_EN"},{"t":"text","v":" names a tri command."}],"type":"p"},{"runs":[{"t":"text","v":"The map the site draws next to this chapter groups the tri commands by owning letter (with a group for the unowned) and the MCP servers by repository, with the external ones marked. It is drawn from the generated JSON, so a new binding in a spec moves a command on the map without anyone editing the figure."}],"type":"p"}],"heading":"Who owns a tool","id":"who-owns-a-tool"}],"title":"Tooling"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"tri"},{"t":"text","v":" -- команда инструментальной цепочки: "},{"t":"code","v":"./scripts/tri"},{"t":"text","v":" -- шим (только exec, статья VIII SOUL, раздел 8.2), который находит бинарник Rust "},{"t":"code","v":"t27c"},{"t":"text","v":", передаёт "},{"t":"code","v":"--repo-root"},{"t":"text","v":" и исполняет его. Каталог в "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":" содержит по спецификации на вариант clap-перечисления "},{"t":"code","v":"Commands"},{"t":"text","v":" в "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":": слово команды, вариант перечисления, файл исходника и точку входа, doc-комментарий как "},{"t":"code","v":"ABOUT"},{"t":"text","v":" с "},{"t":"code","v":"ABOUT_SOURCE"},{"t":"text","v":", называющим, откуда взят текст, вложенные действия с их doc-комментариями, аргументы, буквы агентов, владеющих командой, со строкой-свидетельством, случаи применения и свидетеля."}],"type":"p"},{"runs":[{"t":"text","v":"Таблица, которую сайт выводит рядом с этой главой, порождается из "},{"t":"code","v":"public/tools/spec-tools.json"},{"t":"text","v":" -- команда, действия, владельцы, свидетель, -- и счётчики в её заголовке читаются из того же файла. Свидетель на каждой карточке tri на коммите, на котором порождена документация, -- "},{"t":"code","v":"source-parse"},{"t":"text","v":": перечисление и его комментарии "},{"t":"code","v":"///"},{"t":"text","v":" прочитаны из исходника на записанном коммите, а "},{"t":"code","v":"cargo"},{"t":"text","v":" не запускался. Карточка переименовывается в "},{"t":"code","v":"help-output"},{"t":"text","v":" только когда кто-нибудь сравнит список с "},{"t":"code","v":"tri --help"},{"t":"text","v":" и запишет результат; до тех пор метка говорит, что было и чего не было сделано."}],"type":"p"},{"runs":[{"t":"text","v":"Команды, чей вариант не имеет doc-комментария, цитируют источник, у которого заимствуют описание (например, "},{"t":"code","v":"tri cell"},{"t":"text","v":" цитирует описания инструментов "},{"t":"code","v":"tri-mcp"},{"t":"text","v":"), чтобы ни один "},{"t":"code","v":"ABOUT"},{"t":"text","v":" не был выдуман."}],"type":"p"}],"heading":"CLI tri","id":"cli-tri"},{"blocks":[{"runs":[{"t":"text","v":"Второе семейство -- серверы Model Context Protocol, которые два репозитория поставляют или регистрируют: для "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" крейт "},{"t":"code","v":"tri-mcp"},{"t":"text","v":", манифест "},{"t":"code","v":"tri-ssot"},{"t":"text","v":", "},{"t":"code","v":"t27-traceability"},{"t":"text","v":" и записи "},{"t":"code","v":".mcp.json"},{"t":"text","v":"; для "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" Zig-серверы "},{"t":"code","v":"trinity"},{"t":"text","v":" и "},{"t":"code","v":"needle"},{"t":"text","v":" и его записи "},{"t":"code","v":".mcp.json"},{"t":"text","v":". "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" несёт строку запуска, транспорт, версию, переменные окружения, путь конфигурации, репозиторий, исходник, имена инструментов с описаниями и ключами входных схем, ресурсы и свидетеля."}],"type":"p"},{"runs":[{"t":"text","v":"Серверы, чей код -- опубликованный пакет вне репозиториев, несут "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":" и "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":" о том, что списка инструментов нет ни в одном дереве; для них ничего не выдумывается. Два факта записаны, а не исправлены: "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" не зарегистрирован в "},{"t":"code","v":".mcp.json"},{"t":"text","v":" на закреплённом коммите ("},{"t":"code","v":"CONFIG"},{"t":"text","v":" пуст), а манифест "},{"t":"code","v":"tri-ssot"},{"t":"text","v":" называет модуль, которого нет в дереве."}],"type":"p"},{"runs":[{"t":"text","v":"Два репозитория -- два списка. У "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" нет бинарника "},{"t":"code","v":"tri"},{"t":"text","v":" на закреплённом коммите ("},{"t":"code","v":"build.zig"},{"t":"text","v":" его не определяет; его "},{"t":"code","v":".claude/skills/tri/SKILL.md"},{"t":"text","v":" -- навык и находится в каталоге навыков), поэтому его инструменты -- только его серверы MCP, под "},{"t":"code","v":"REPO = \"gHashTag/trinity\""},{"t":"text","v":"."}],"type":"p"}],"heading":"Серверы MCP","id":"серверы-mcp"},{"blocks":[{"runs":[{"t":"text","v":"Инструмент называет буквы агентов, владеющих им ("},{"t":"code","v":"AGENTS"},{"t":"text","v":"), только там, где это делает строка источника, а "},{"t":"code","v":"AGENTS_NOTE"},{"t":"text","v":" цитирует эту строку или называет источники, которые были проверены и оказались молчащими. Спецификация агента называет инструмент в ответ ("},{"t":"code","v":"TOOLS"},{"t":"text","v":"), и генератор сайта роняет сборку на связи, заявленной лишь с одной стороны. Сегодня связаны пять команд -- "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W) -- по описаниям фаз "},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" и файлам "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":"; остальные команды и каждый сервер MCP несут пустой "},{"t":"code","v":"AGENTS"},{"t":"text","v":" с примечанием. Навыки связываются перекрёстно, когда собственный "},{"t":"code","v":"COMMAND"},{"t":"text","v":" или "},{"t":"code","v":"SUMMARY_EN"},{"t":"text","v":" спецификации навыка называет команду tri."}],"type":"p"},{"runs":[{"t":"text","v":"Карта, которую сайт рисует рядом с этой главой, группирует команды tri по владеющей букве (с группой для невладеемых) и серверы MCP по репозиторию, с пометкой внешних. Она рисуется из порождённого JSON, поэтому новая связь в спецификации перемещает команду на карте без чьей-либо правки фигуры."}],"type":"p"}],"heading":"Кто владеет инструментом","id":"кто-владеет-инструментом"}]}},"bodyPath":"docs/system/tooling.md","bodySha256":"9c8d5ec87acb0205da7d1011722031807a4b713b37130004c5478f70f8151652","diagram":"tools-map","discarded":0,"enabled":true,"id":"docs/tooling","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/tooling.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/tooling.t27"},"moduleName":"docs_chapter_tooling","order":6,"sections":[{"heading":{"en":"The tri CLI","ru":"CLI tri"},"id":"the-tri-cli"},{"heading":{"en":"MCP servers","ru":"Серверы MCP"},"id":"mcp-servers"},{"heading":{"en":"Who owns a tool","ru":"Кто владеет инструментом"},"id":"who-owns-a-tool"}],"sha256":"dd4d3fb85955d4bb7423cf637941c02736855369320dd840082a8aed792302eb","sources":[{"kind":"file","path":"specs/tools/README.md","rel":"specs/tools/README.md","repo":"t27","sha256":"37b5a451e43de9bc5746ceb80d4cf24f19ea6c3ad8751d2447049cba39c8a0ab","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/README.md","where":"vendored"},{"kind":"file","path":"specs/tools/tri/cell.t27","rel":"specs/tools/tri/cell.t27","repo":"t27","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/tri/cell.t27","where":"vendored"},{"kind":"file","path":"specs/agents/README.md","rel":"specs/agents/README.md","repo":"t27","sha256":"c40833dbc9f271cc92f1e9a848324446429fed52954b53f80c3670bc9da78996","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/README.md","where":"vendored"},{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"}],"specPath":"specs/docs/chapters/tooling.t27","stem":"tooling","table":{"columns":["id","family","name","repo","items","agents","witness","external"],"kind":"tools","note":"","rows":[{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/bench","items":0,"name":"tri bench","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/bio","items":0,"name":"tri bio","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/blindspots","items":0,"name":"tri blindspots","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/conscious","items":0,"name":"tri conscious","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/constants","items":0,"name":"tri constants","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/cosmos","items":0,"name":"tri cosmos","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/dashboard","items":0,"name":"tri dashboard","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/fib","items":0,"name":"tri fib","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/fpga","items":0,"name":"tri fpga","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/gematria","items":0,"name":"tri gematria","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/govern","items":0,"name":"tri govern","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/hardware","items":0,"name":"tri hardware","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/identity","items":0,"name":"tri identity","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/lucas","items":0,"name":"tri lucas","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/mesh","items":0,"name":"tri mesh","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/needle","items":0,"name":"tri needle","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/needle-check","items":0,"name":"tri needle-check","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/needle-search","items":0,"name":"tri needle-search","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/omega","items":0,"name":"tri omega","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/particles","items":0,"name":"tri particles","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/phi","items":0,"name":"tri phi","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/quantum","items":0,"name":"tri quantum","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/reputation","items":0,"name":"tri reputation","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/sacred-const","items":0,"name":"tri sacred-const","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/spiral","items":0,"name":"tri spiral","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/swarm","items":0,"name":"tri swarm","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/test","items":0,"name":"tri test","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/vsa","items":0,"name":"tri vsa","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/wallet","items":0,"name":"tri wallet","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":true,"family":"mcp","id":"mcp/gitbutler","items":0,"name":"gitbutler","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["T"],"external":true,"family":"mcp","id":"mcp/inngest-dev","items":20,"name":"inngest-dev","repo":"gHashTag/t27","witness":"help-output"},{"agents":[],"external":false,"family":"mcp","id":"mcp/needle","items":6,"name":"needle","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/neon","items":0,"name":"neon","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/notebooklm","items":0,"name":"notebooklm","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/railway-mcp-server","items":0,"name":"railway-mcp-server","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/t27-traceability","items":4,"name":"t27-traceability","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/tri-mcp","items":10,"name":"tri-mcp","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/tri-ssot","items":5,"name":"tri-ssot","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/trinity","items":210,"name":"trinity","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/zig-docs","items":0,"name":"zig-docs","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/abandoned","items":1,"name":"tri abandoned","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["W"],"external":false,"family":"tri-cli","id":"tri/cell","items":2,"name":"tri cell","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/census","items":2,"name":"tri census","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/ci","items":1,"name":"tri ci","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/competitors","items":2,"name":"tri competitors","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/discard","items":2,"name":"tri discard","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/doctor","items":0,"name":"tri doctor","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/elab","items":2,"name":"tri elab","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/emit","items":1,"name":"tri emit","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["E"],"external":false,"family":"tri-cli","id":"tri/experience","items":1,"name":"tri experience","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/fleet","items":2,"name":"tri fleet","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/fmt","items":0,"name":"tri fmt","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/fpga","items":35,"name":"tri fpga","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/gates","items":13,"name":"tri gates","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["C","T"],"external":false,"family":"tri-cli","id":"tri/gen","items":0,"name":"tri gen","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/harness","items":1,"name":"tri harness","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/health","items":0,"name":"tri health","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/hooks","items":8,"name":"tri hooks","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/issues","items":3,"name":"tri issues","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/jumps","items":1,"name":"tri jumps","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/kinds","items":1,"name":"tri kinds","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/lean","items":2,"name":"tri lean","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/ledgers","items":1,"name":"tri ledgers","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/loop","items":1,"name":"tri loop","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/merging","items":0,"name":"tri merging","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/misread","items":0,"name":"tri misread","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/mods","items":1,"name":"tri mods","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/mutate","items":1,"name":"tri mutate","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/now","items":2,"name":"tri now","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/one-away","items":0,"name":"tri one-away","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/orphaned","items":1,"name":"tri orphaned","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/pr","items":2,"name":"tri pr","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/prose","items":1,"name":"tri prose","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/quantifiers","items":2,"name":"tri quantifiers","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/red","items":2,"name":"tri red","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/reseal","items":2,"name":"tri reseal","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/rtl","items":1,"name":"tri rtl","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/seals","items":5,"name":"tri seals","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/serve","items":0,"name":"tri serve","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/skill","items":9,"name":"tri skill","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/status","items":0,"name":"tri status","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/sweep","items":1,"name":"tri sweep","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/synth","items":1,"name":"tri synth","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["T","V"],"external":false,"family":"tri-cli","id":"tri/test","items":0,"name":"tri test","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/topic","items":0,"name":"tri topic","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/types","items":4,"name":"tri types","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/unparsed","items":4,"name":"tri unparsed","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/vectors","items":2,"name":"tri vectors","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["V"],"external":false,"family":"tri-cli","id":"tri/verdict","items":0,"name":"tri verdict","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/vsim","items":1,"name":"tri vsim","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/window","items":0,"name":"tri window","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/worktrees","items":0,"name":"tri worktrees","repo":"gHashTag/t27","witness":"source-parse"}],"source":"public/tools/spec-tools.json"},"title":{"en":"Tooling","ru":"Инструменты"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"The project separates what was measured from what was declared, and both from what was taken from outside. The tags are defined in the chapter \"The project\"; this chapter says how each tag is earned on the site."}],"type":"p"},{"runs":[{"t":"text","v":"A "},{"t":"strong","v":"measured"},{"t":"text","v":" number has a producer in a repository -- a script, a workflow, a test -- whose output is committed or published, and the page names the commit. The ladder counts, the "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" verdicts, the coverage of a translation bundle, the number of episodes in an experience tree are measured in this sense: the generator that produces them runs in "},{"t":"code","v":"prebuild"},{"t":"text","v":" and its inputs are pinned."}],"type":"p"},{"runs":[{"t":"text","v":"A "},{"t":"strong","v":"declared"},{"t":"text","v":" value is stated in a spec or a canon document. The catalog size of 83 formats, the seven laws, the seven phases are declared: the site renders them from the file that states them and links the file at the commit, but running nothing."}],"type":"p"},{"runs":[{"t":"text","v":"An "},{"t":"strong","v":"external"},{"t":"text","v":" value is cited with its source and not reproduced. The site does not restate hardware figures of "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" beyond what "},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":" transcribes with its provenance note."}],"type":"p"}],"heading":"Measured, declared, external","id":"measured-declared-external"},{"blocks":[{"runs":[{"t":"text","v":"Each catalog card carries a witness label that says how the card relates to the thing it describes:"}],"type":"p"},{"items":[[{"t":"text","v":"Skills and crons: "},{"t":"code","v":"spec+code"},{"t":"text","v":" (spec and source both exist), "},{"t":"code","v":"spec-only"},{"t":"text","v":" (spec without source), "},{"t":"code","v":"code-only"},{"t":"text","v":" (source without spec). The counts per label are in the header of the Skill and Cron Explorers."}],[{"t":"text","v":"Tools: "},{"t":"code","v":"source-parse"},{"t":"text","v":" (the command list was read from the source at a recorded commit; "},{"t":"code","v":"cargo"},{"t":"text","v":" was not run) or "},{"t":"code","v":"help-output"},{"t":"text","v":" (the list was diffed against "},{"t":"code","v":"tri --help"},{"t":"text","v":"). At the commit this documentation was generated from every tri card is "},{"t":"code","v":"source-parse"},{"t":"text","v":"."}],[{"t":"text","v":"Agents: each skill and tool binding cites a source line in "},{"t":"code","v":"SKILLS_NOTE"},{"t":"text","v":" / "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":", or the list is empty and the note says what was read."}],[{"t":"text","v":"Experience: attributed only where an episode names a letter; otherwise counted as unattributed, never guessed."}]],"type":"ul"},{"runs":[{"t":"text","v":"The table the site renders next to this chapter collects these labels with their counts from the generated JSON of every layer."}],"type":"p"}],"heading":"Witness labels","id":"witness-labels"},{"blocks":[{"runs":[{"t":"text","v":"Every "},{"t":"code","v":".t27"},{"t":"text","v":" the site shows was compiled at build time by the vendored "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":", and the JSON records "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" per file. Two limits of that verdict are stated on every layer README and repeated here. First, the wasm's "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" is necessary, not sufficient: it stays "},{"t":"code","v":"true"},{"t":"text","v":" for a wrong annotation such as "},{"t":"code","v":"str = 5"},{"t":"text","v":", so the generator checks the field schema of every card on top of it. Second, the bootstrap compiler on "},{"t":"code","v":"master"},{"t":"text","v":" was not run against the catalog files in the commits that added them; the wasm is a build of the compiler at a recorded sha, and that sha is in the generated JSON."}],"type":"p"}],"heading":"Wasm verdicts","id":"wasm-verdicts"},{"blocks":[{"runs":[{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" gates a pull request with workflows named for what they check (issue gate, gate topology, conformance integrity, emit bit-exact, catalog count, now-sync, untrusted input, among others under "},{"t":"code","v":".github/workflows/"},{"t":"text","v":"). Two of them, "},{"t":"code","v":"gate-topology"},{"t":"text","v":" and "},{"t":"code","v":"untrusted-input"},{"t":"text","v":", fail on "},{"t":"code","v":"master"},{"t":"text","v":" for already-merged pull requests at the time of writing; the catalog pull requests record this and do not bless or bypass them."}],"type":"p"},{"runs":[{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" gates the site with "},{"t":"code","v":"npm run"},{"t":"text","v":" checks that run in "},{"t":"code","v":"prebuild"},{"t":"text","v":" and in CI: "},{"t":"code","v":"check:spec-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:skills-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:crons-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:agents"},{"t":"text","v":", "},{"t":"code","v":"check:tools"},{"t":"text","v":", "},{"t":"code","v":"check:docs"},{"t":"text","v":", the explorer and Queen language contracts, the Queen viewport contract, "},{"t":"code","v":"typecheck:ratchet"},{"t":"text","v":" and "},{"t":"code","v":"eslint"},{"t":"text","v":". A check that fails on "},{"t":"code","v":"main"},{"t":"text","v":" before a change is reported as pre-existing, with its name, and is not counted as passing."}],"type":"p"}],"heading":"CI gates","id":"ci-gates"},{"blocks":[{"runs":[{"t":"text","v":"To reproduce a count on the site, run the generator that produced it, in "},{"t":"code","v":"apps/website"},{"t":"text","v":" of a checkout of "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", with a sibling checkout of "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" (or "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":" pointing to one):"}],"type":"p"},{"items":[[{"t":"code","v":"node scripts/agents-from-specs.mjs"},{"t":"text","v":" -- skills, crons, agents, tools JSON and their counts; "},{"t":"code","v":"--check"},{"t":"text","v":" compares against the committed JSON."}],[{"t":"code","v":"node scripts/docs-from-specs.mjs"},{"t":"text","v":" -- this documentation's JSON, including the sources with their sha256 and the pinned commit."}],[{"t":"code","v":"node scripts/sync-agents-experience.mjs"},{"t":"text","v":" -- the experience snapshot."}],[{"t":"code","v":"npm run check:docs"},{"t":"text","v":" -- the chapter bodies, the sources, the generated tables, the forbidden-words scan in English and Russian."}]],"type":"ul"},{"runs":[{"t":"text","v":"Each JSON names the commit its inputs were read at. Comparing that commit with the one in front of you is step one of any reproduction; a number that cannot be tied to a commit is not a measurement."}],"type":"p"}],"heading":"Reproducing a number","id":"reproducing-a-number"},{"blocks":[{"runs":[{"t":"text","v":"Two kinds of record exist outside the generated pages, and this documentation points to them without adding to their claims. The TNF manuscript audit and reconciliation reports live under "},{"t":"code","v":"docs/reports/"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" ("},{"t":"code","v":"TNF-ARTICLE-AUDIT-W845.md"},{"t":"text","v":", "},{"t":"code","v":"TNF-ARTICLE-RECONCILIATION.md"},{"t":"text","v":"); they record which statements of the article were checked against which producer and what changed. The Zenodo README ("},{"t":"code","v":"README-ZENODO.md"},{"t":"text","v":") describes the archived package. No scientific claim is made in this documentation that is not in those files or in the site's own content with its status tag."}],"type":"p"}],"heading":"Published record","id":"published-record"}],"title":"Evidence and witnesses"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Проект разделяет измеренное и заявленное, а и то и другое -- от взятого извне. Теги определены в главе \"Проект\"; эта глава говорит, как каждый тег зарабатывается на сайте."}],"type":"p"},{"runs":[{"t":"strong","v":"Измеренное"},{"t":"text","v":" число имеет производителя в репозитории -- скрипт, workflow, тест, -- чей вывод закоммичен или опубликован, и страница называет коммит. Счётчики лестницы, вердикты "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":", покрытие бандла переводов, число эпизодов в дереве опыта измерены в этом смысле: порождающий их генератор выполняется в "},{"t":"code","v":"prebuild"},{"t":"text","v":", а его входы закреплены."}],"type":"p"},{"runs":[{"t":"strong","v":"Заявленное"},{"t":"text","v":" значение записано в спецификации или каноническом документе. Размер каталога в 83 формата, семь законов, семь фаз заявлены: сайт выводит их из файла, который их формулирует, и привязывает файл к коммиту, ничего не запуская."}],"type":"p"},{"runs":[{"t":"strong","v":"Внешнее"},{"t":"text","v":" значение цитируется с источником и не воспроизводится. Сайт не повторяет аппаратные цифры "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" сверх того, что переносит "},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":" со своим примечанием о происхождении."}],"type":"p"}],"heading":"Измерено, заявлено, извне","id":"измерено-заявлено-извне"},{"blocks":[{"runs":[{"t":"text","v":"Каждая карточка каталога несёт метку свидетеля, говорящую, как карточка соотносится с тем, что описывает:"}],"type":"p"},{"items":[[{"t":"text","v":"Навыки и расписания: "},{"t":"code","v":"spec+code"},{"t":"text","v":" (есть и спецификация, и исходник), "},{"t":"code","v":"spec-only"},{"t":"text","v":" (спецификация без исходника), "},{"t":"code","v":"code-only"},{"t":"text","v":" (исходник без спецификации). Счётчики по меткам -- в заголовках обозревателей навыков и расписаний."}],[{"t":"text","v":"Инструменты: "},{"t":"code","v":"source-parse"},{"t":"text","v":" (список команд прочитан из исходника на записанном коммите; "},{"t":"code","v":"cargo"},{"t":"text","v":" не запускался) или "},{"t":"code","v":"help-output"},{"t":"text","v":" (список сверен с "},{"t":"code","v":"tri --help"},{"t":"text","v":"). На коммите, на котором порождена документация, каждая карточка tri -- "},{"t":"code","v":"source-parse"},{"t":"text","v":"."}],[{"t":"text","v":"Агенты: каждая связь с навыком и инструментом цитирует строку источника в "},{"t":"code","v":"SKILLS_NOTE"},{"t":"text","v":" / "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":", либо список пуст и примечание говорит, что было прочитано."}],[{"t":"text","v":"Опыт: атрибуция только там, где эпизод называет букву; иначе считается неотнесённым и никогда не угадывается."}]],"type":"ul"},{"runs":[{"t":"text","v":"Таблица, которую сайт выводит рядом с этой главой, собирает эти метки со счётчиками из порождённого JSON каждого слоя."}],"type":"p"}],"heading":"Метки свидетелей","id":"метки-свидетелей"},{"blocks":[{"runs":[{"t":"text","v":"Каждый "},{"t":"code","v":".t27"},{"t":"text","v":", показанный на сайте, скомпилирован при сборке вендорным "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":", и JSON записывает "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" для каждого файла. Два предела этого вердикта названы в README каждого слоя и повторены здесь. Во-первых, "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" от wasm необходим, но не достаточен: он остаётся "},{"t":"code","v":"true"},{"t":"text","v":" при неверной аннотации вроде "},{"t":"code","v":"str = 5"},{"t":"text","v":", поэтому генератор проверяет схему полей каждой карточки поверх него. Во-вторых, бутстрап-компилятор на "},{"t":"code","v":"master"},{"t":"text","v":" не запускался против файлов каталогов в коммитах, которые их добавили; wasm -- сборка компилятора на записанном sha, и этот sha есть в порождённом JSON."}],"type":"p"}],"heading":"Вердикты wasm","id":"вердикты-wasm"},{"blocks":[{"runs":[{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" проверяет pull request рабочими потоками, названными по тому, что они проверяют (issue gate, gate topology, conformance integrity, emit bit-exact, catalog count, now-sync, untrusted input и другие под "},{"t":"code","v":".github/workflows/"},{"t":"text","v":"). Два из них, "},{"t":"code","v":"gate-topology"},{"t":"text","v":" и "},{"t":"code","v":"untrusted-input"},{"t":"text","v":", на момент написания падают на "},{"t":"code","v":"master"},{"t":"text","v":" для уже влитых pull request; pull request каталогов фиксируют это и не благословляют и не обходят их."}],"type":"p"},{"runs":[{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" проверяет сайт командами "},{"t":"code","v":"npm run"},{"t":"text","v":", выполняемыми в "},{"t":"code","v":"prebuild"},{"t":"text","v":" и в CI: "},{"t":"code","v":"check:spec-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:skills-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:crons-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:agents"},{"t":"text","v":", "},{"t":"code","v":"check:tools"},{"t":"text","v":", "},{"t":"code","v":"check:docs"},{"t":"text","v":", языковые контракты обозревателей и Королевы, контракт вьюпорта Королевы, "},{"t":"code","v":"typecheck:ratchet"},{"t":"text","v":" и "},{"t":"code","v":"eslint"},{"t":"text","v":". Проверка, падающая на "},{"t":"code","v":"main"},{"t":"text","v":" до изменения, отмечается как существовавшая ранее, по имени, и не засчитывается как пройденная."}],"type":"p"}],"heading":"Шлюзы CI","id":"шлюзы-ci"},{"blocks":[{"runs":[{"t":"text","v":"Чтобы воспроизвести счётчик с сайта, запустите порождающий его генератор в "},{"t":"code","v":"apps/website"},{"t":"text","v":" чекаута "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" с соседним чекаутом "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" (или с "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":", указывающим на него):"}],"type":"p"},{"items":[[{"t":"code","v":"node scripts/agents-from-specs.mjs"},{"t":"text","v":" -- JSON навыков, расписаний, агентов, инструментов и их счётчики; "},{"t":"code","v":"--check"},{"t":"text","v":" сравнивает с закоммиченным JSON."}],[{"t":"code","v":"node scripts/docs-from-specs.mjs"},{"t":"text","v":" -- JSON этой документации, включая источники с их sha256 и закреплённый коммит."}],[{"t":"code","v":"node scripts/sync-agents-experience.mjs"},{"t":"text","v":" -- снимок опыта."}],[{"t":"code","v":"npm run check:docs"},{"t":"text","v":" -- тела глав, источники, порождённые таблицы, поиск запрещённых слов в английском и русском."}]],"type":"ul"},{"runs":[{"t":"text","v":"Каждый JSON называет коммит, на котором прочитаны его входы. Сравнение этого коммита с тем, что перед вами, -- шаг один любого воспроизведения; число, которое нельзя привязать к коммиту, не является измерением."}],"type":"p"}],"heading":"Как воспроизвести число","id":"как-воспроизвести-число"},{"blocks":[{"runs":[{"t":"text","v":"Вне порождённых страниц существуют два вида записей, и эта документация указывает на них, ничего не добавляя к их утверждениям. Отчёты аудита и сверки рукописи TNF лежат под "},{"t":"code","v":"docs/reports/"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" ("},{"t":"code","v":"TNF-ARTICLE-AUDIT-W845.md"},{"t":"text","v":", "},{"t":"code","v":"TNF-ARTICLE-RECONCILIATION.md"},{"t":"text","v":"); они записывают, какие утверждения статьи сверены с каким производителем и что изменилось. README для Zenodo ("},{"t":"code","v":"README-ZENODO.md"},{"t":"text","v":") описывает архивированный пакет. В этой документации не делается ни одного научного утверждения, которого нет в этих файлах или в собственном содержимом сайта с его статусным тегом."}],"type":"p"}],"heading":"Опубликованная запись","id":"опубликованная-запись"}]}},"bodyPath":"docs/system/evidence.md","bodySha256":"369aa6412eaa52c54b0b0b1e796625655dc476ea05a6e4aa1c7e019003420d21","diagram":null,"discarded":0,"enabled":true,"id":"docs/evidence","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/evidence.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/evidence.t27"},"moduleName":"docs_chapter_evidence","order":7,"sections":[{"heading":{"en":"Measured, declared, external","ru":"Измерено, заявлено, извне"},"id":"measured-declared-external"},{"heading":{"en":"Witness labels","ru":"Метки свидетелей"},"id":"witness-labels"},{"heading":{"en":"Wasm verdicts","ru":"Вердикты wasm"},"id":"wasm-verdicts"},{"heading":{"en":"CI gates","ru":"Шлюзы CI"},"id":"ci-gates"},{"heading":{"en":"Reproducing a number","ru":"Как воспроизвести число"},"id":"reproducing-a-number"},{"heading":{"en":"Published record","ru":"Опубликованная запись"},"id":"published-record"}],"sha256":"bc197d64c27828950663c4af278f4f13fb522eddad5c105d1630aad61d997098","sources":[{"kind":"file","path":"specs/skills/README.md","rel":"specs/skills/README.md","repo":"t27","sha256":"ac23eb8d74832014efaf5e65f3da070d999549724e01242cb8784a93ad43d360","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/skills/README.md","where":"vendored"},{"kind":"file","path":"specs/tools/README.md","rel":"specs/tools/README.md","repo":"t27","sha256":"37b5a451e43de9bc5746ceb80d4cf24f19ea6c3ad8751d2447049cba39c8a0ab","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/README.md","where":"vendored"},{"kind":"file","path":"README-ZENODO.md","rel":"README-ZENODO.md","repo":"t27","sha256":"6da4751277af64ba21e866d787201296b0595f3f40b43792207e2f939c7f48b9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/README-ZENODO.md","where":"vendored"},{"kind":"file","path":"docs/reports/TNF-ARTICLE-AUDIT-W845.md","rel":"docs/reports/TNF-ARTICLE-AUDIT-W845.md","repo":"t27","sha256":"0d0008949d161dbe0d3cd4368ddf4b5629144ba71293e23dc7267b6f19a36e96","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/reports/TNF-ARTICLE-AUDIT-W845.md","where":"vendored"},{"kind":"file","path":"docs/reports/TNF-ARTICLE-RECONCILIATION.md","rel":"docs/reports/TNF-ARTICLE-RECONCILIATION.md","repo":"t27","sha256":"a18e9fab15d0d845d5bc8d55b8be1249a8a0b48f7b361890da80b4e7406138da","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/reports/TNF-ARTICLE-RECONCILIATION.md","where":"vendored"}],"specPath":"specs/docs/chapters/evidence.t27","stem":"evidence","table":{"columns":["layer","label","count","source"],"kind":"witnesses","note":"","rows":[{"count":26,"label":"spec+code","layer":"Skills","source":"public/skills/spec-skills.json counts"},{"count":0,"label":"spec-only","layer":"Skills","source":"public/skills/spec-skills.json counts"},{"count":0,"label":"code-only","layer":"Skills","source":"public/skills/spec-skills.json counts"},{"count":33,"label":"spec+code","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":0,"label":"spec-only","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":0,"label":"code-only","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":0,"label":"with RUNS","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":1,"label":"with skills (source-bound)","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":5,"label":"with tools (bound both ways)","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":0,"label":"spec+experience","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":27,"label":"spec-only","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":0,"label":"episodes attributed","layer":"Experience","source":"public/agents/experience.json"},{"count":386,"label":"episodes unattributed","layer":"Experience","source":"public/agents/experience.json"},{"count":1,"label":"help-output","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":29,"label":"registry-export","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":0,"label":"runtime","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":62,"label":"source-parse","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":6,"label":"external (tool list not in either repository)","layer":"Tools","source":"public/tools/spec-tools.json counts"},{"count":178,"label":"typecheck ok","layer":"All catalogs","source":"counts.typecheckOk of the four catalogs"}],"source":"counts of the four catalog JSON files and public/agents/experience.json"},"title":{"en":"Evidence and witnesses","ru":"Свидетели и доказательства"},"typecheckOk":true}],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","counts":{"chapters":7,"diagrams":6,"enabled":7,"laws":7,"phases":7,"ruChapters":7,"sections":32,"sources":31,"sourcesCheckout":2,"sourcesVendored":29,"specs":9,"tables":7,"typecheckOk":8},"document":{"chapters":["project","rules","layers","alphabet","queen","tooling","evidence"],"diagrams":["ladder","agent-ring","phase-cycle","law-hierarchy","skills-crons-agents","tools-map"],"enabled":true,"id":"docs/system","link":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/system.t27","locales":["en","ru"],"sha256":"ab7ee1773622aa46442aec7aeca5cdd1a1a3c36f6321451a5e426df80a75945b","sources":[{"kind":"dir","path":"specs/skills","rel":"specs/skills","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/skills","where":"vendored"},{"kind":"dir","path":"specs/crons","rel":"specs/crons","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/crons","where":"vendored"},{"kind":"dir","path":"specs/agents","rel":"specs/agents","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/agents","where":"vendored"},{"kind":"dir","path":"specs/tools","rel":"specs/tools","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/tools","where":"vendored"},{"kind":"dir","path":"specs/i18n","rel":"specs/i18n","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/i18n","where":"vendored"},{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"},{"kind":"file","path":"AGENTS.md","rel":"AGENTS.md","repo":"t27","sha256":"1c9b8cce1600d4220d74498d187934e0b935ad1eae6deb9c1b100057ce9ac9e9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","where":"vendored"},{"kind":"file","path":"CLAUDE.md","rel":"CLAUDE.md","repo":"t27","sha256":"b6250fd688a9d794b9eaecebd9882905aa49bfab06616be82211a87fe098656d","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/CLAUDE.md","where":"vendored"},{"kind":"file","path":"docs/agents/AGENTS_ALPHABET.md","rel":"docs/agents/AGENTS_ALPHABET.md","repo":"t27","sha256":"c99352b305322031ee8af0c4777ae54c52ef50c694ff2aa0f4d95ab2fa82734a","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","where":"vendored"},{"kind":"file","path":"docs/T27-CONSTITUTION.md","rel":"docs/T27-CONSTITUTION.md","repo":"t27","sha256":"2c06724425f721ef6356edc9a14e4f1af530d1246c5c6a318fd42f59aaa319a5","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/T27-CONSTITUTION.md","where":"vendored"}],"specPath":"specs/docs/system.t27","title":{"en":"t27 / Trinity -- the system, its rules and its evidence","ru":"t27 / Trinity -- система, её правила и её доказательства"},"typecheckOk":true},"figures":{"agent-ring":{"agents":[{"layer":"Archetypal","letter":"A","name":"Alpha (Architecture)","ordinal":1,"skills":0,"tools":0},{"layer":"Archetypal","letter":"B","name":"Beta (Build)","ordinal":2,"skills":0,"tools":0},{"layer":"Archetypal","letter":"C","name":"Gamma (Compiler Core)","ordinal":3,"skills":0,"tools":1},{"layer":"Archetypal","letter":"D","name":"Delta (De-Zigfication)","ordinal":4,"skills":0,"tools":0},{"layer":"Archetypal","letter":"E","name":"Epsilon (Experience)","ordinal":5,"skills":0,"tools":1},{"layer":"Archetypal","letter":"F","name":"Phi (Formal Conformance)","ordinal":6,"skills":0,"tools":0},{"layer":"Archetypal","letter":"G","name":"Gamma (Graph)","ordinal":7,"skills":0,"tools":0},{"layer":"Archetypal","letter":"H","name":"Eta (HSLM)","ordinal":8,"skills":0,"tools":0},{"layer":"Archetypal","letter":"I","name":"Iota (ISA)","ordinal":9,"skills":0,"tools":0},{"layer":"Spiritual","letter":"J","name":"Iota-extended (Jobs)","ordinal":10,"skills":0,"tools":0},{"layer":"Spiritual","letter":"K","name":"Kappa (Kernel)","ordinal":11,"skills":0,"tools":0},{"layer":"Spiritual","letter":"L","name":"Lambda (Language)","ordinal":12,"skills":0,"tools":0},{"layer":"Spiritual","letter":"M","name":"Mu (Metrics)","ordinal":13,"skills":0,"tools":0},{"layer":"Spiritual","letter":"N","name":"Nu (Numeric)","ordinal":14,"skills":0,"tools":0},{"layer":"Spiritual","letter":"O","name":"Omicron (Orchestration)","ordinal":15,"skills":0,"tools":0},{"layer":"Spiritual","letter":"P","name":"Pi (Physics)","ordinal":16,"skills":0,"tools":0},{"layer":"Spiritual","letter":"Q","name":"Theta (Queue)","ordinal":17,"skills":0,"tools":0},{"layer":"Spiritual","letter":"R","name":"Rho (Runtime)","ordinal":18,"skills":0,"tools":0},{"layer":"Physical","letter":"S","name":"Sigma (Specs)","ordinal":19,"skills":0,"tools":0},{"layer":"Physical","letter":"T","name":"Tau (TRINITY Queen)","ordinal":20,"skills":2,"tools":3},{"layer":"Physical","letter":"U","name":"Upsilon (Universe)","ordinal":21,"skills":0,"tools":0},{"layer":"Physical","letter":"V","name":"Vau (Verdict)","ordinal":22,"skills":0,"tools":2},{"layer":"Physical","letter":"W","name":"Double-Vav (Workflow)","ordinal":23,"skills":0,"tools":1},{"layer":"Physical","letter":"X","name":"Chi (External)","ordinal":24,"skills":0,"tools":0},{"layer":"Physical","letter":"Y","name":"Psi (Yield/DePIN)","ordinal":25,"skills":0,"tools":0},{"layer":"Physical","letter":"Z","name":"Zeta (Zero-Touch)","ordinal":26,"skills":0,"tools":0},{"layer":"Physical","letter":"TI","name":"Ti (Security)","ordinal":27,"skills":0,"tools":0}],"source":"public/agents/spec-agents.json"},"ladder":{"counts":{"agents":27,"crons":33,"docsChapters":7,"functions":28,"skills":26,"specs":856,"tools":92},"source":"public/*/spec-*.json counts and public/t27/manifest.json"},"law-hierarchy":{"laws":[{"law":"L1","name":"TRACEABILITY"},{"law":"L2","name":"GENERATION"},{"law":"L3","name":"PURITY"},{"law":"L4","name":"TESTABILITY"},{"law":"L5","name":"IDENTITY"},{"law":"L6","name":"CEILING"},{"law":"L7","name":"UNITY"}],"priority":"L1 > L2 > … > L7","source":"docs/T27-CONSTITUTION.md"},"phase-cycle":{"phases":[{"n":1,"name":"PLAN","note":"","steps":4},{"n":2,"name":"ASSIGN","note":"","steps":4},{"n":3,"name":"RUN","note":"","steps":4},{"n":4,"name":"TEST & BENCH","note":"","steps":4},{"n":5,"name":"VERDICT","note":"","steps":4},{"n":6,"name":"EVOLVE","note":"","steps":6},{"n":7,"name":"GIT WORKFLOW","note":"new — SOUL law","steps":4}],"source":"docs/agents/AGENTS_ALPHABET.md"},"skills-crons-agents":{"counts":{"agents":27,"crons":33,"skills":26,"tools":92},"edges":[{"from":"t27/C","kind":"agent-holds-tool","to":"tri/gen"},{"from":"t27/E","kind":"agent-holds-tool","to":"tri/experience"},{"from":"t27/T","kind":"agent-holds-skill","to":"t27/phi-loop"},{"from":"t27/T","kind":"agent-holds-skill","to":"t27/tri-pipeline"},{"from":"t27/T","kind":"agent-holds-tool","to":"tri/gen"},{"from":"t27/T","kind":"agent-holds-tool","to":"tri/test"},{"from":"t27/T","kind":"agent-holds-tool","to":"mcp/inngest-dev"},{"from":"t27/V","kind":"agent-holds-tool","to":"tri/test"},{"from":"t27/V","kind":"agent-holds-tool","to":"tri/verdict"},{"from":"t27/W","kind":"agent-holds-tool","to":"tri/cell"}],"source":"public/crons/spec-crons.json RUNS, public/agents/spec-agents.json SKILLS/TOOLS"},"tools-map":{"external":["mcp/gitbutler","mcp/inngest-dev","mcp/neon","mcp/notebooklm","mcp/railway-mcp-server","mcp/zig-docs"],"mcpByRepo":{"gHashTag/t27":["mcp/gitbutler","mcp/inngest-dev","mcp/notebooklm","mcp/t27-traceability","mcp/tri-mcp","mcp/tri-ssot"],"gHashTag/trinity":["mcp/needle","mcp/neon","mcp/railway-mcp-server","mcp/trinity","mcp/zig-docs"]},"source":"public/tools/spec-tools.json groups","triByAgent":{"-":["gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/test","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","tri/abandoned","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/vsim","tri/window","tri/worktrees"],"C":["tri/gen"],"E":["tri/experience"],"T":["tri/gen","tri/test"],"V":["tri/test","tri/verdict"],"W":["tri/cell"]}}},"generatedAt":"2026-09-12T12:30:15.363Z","i18n":[{"bundle":"apps/website/i18n/docs.ru.json","coverage":{"n":7,"total":7},"enabled":true,"fields":["TITLE","BODY"],"locale":"ru","missing":[],"scope":["specs/docs","specs/docs/chapters"],"sha256":"5fc4a500afccdf91e81c2bbde7b770e673efccc96e2d87ef377abdf723748610","spec":"specs/i18n/docs-ru.t27"}],"ladder":{"agents":27,"crons":33,"docsChapters":7,"functions":28,"skills":26,"specs":856,"tools":92},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit / sources[trinity].commit","trinity":"ddceafb50cd0e620387161228fa2c9ae134047de"},"version":1,"warnings":[],"contentSha256":"9594d353a3608dfdb5fac83e0069c6bf6c9a3d042c12b0e77dcb14422e810bdb"} +{"chapters":[{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"strong","v":"t27"},{"t":"text","v":" is a specification language and a toolchain. A "},{"t":"code","v":".t27"},{"t":"text","v":" file declares behaviour, constants, tests and invariants in one place; the compiler ("},{"t":"code","v":"t27c"},{"t":"text","v":", driven by the "},{"t":"code","v":"tri"},{"t":"text","v":" command) validates the file, generates code for the target backends (Zig, C, Verilog) and runs the tests written inside the spec. The repository "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" holds the language, the compiler, the spec corpus and the canon documents that govern how agents and people work in it ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":")."}],"type":"p"},{"runs":[{"t":"strong","v":"Trinity"},{"t":"text","v":" is the programme around t27: the GoldenFloat family of numeric formats built on the identity phi^2 + 1/phi^2 = 3, hardware validation of those formats on one FPGA board, and the public site "},{"t":"code","v":"t27.ai"},{"t":"text","v":" (repository "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", "},{"t":"code","v":"apps/website"},{"t":"text","v":") that renders the spec corpus, the skills, the scheduled jobs, the agents and the tools through the real compiler compiled to WebAssembly. The site does not paraphrase the specs; it compiles them in the browser build and shows the verdicts."}],"type":"p"},{"runs":[{"t":"text","v":"The rule that ties the two together is spec-first: project logic originates in "},{"t":"code","v":".t27"},{"t":"text","v":", and host languages -- Rust for the bootstrap compiler, TypeScript for the site, Zig, C and Verilog as generated output -- are subordinate implementations. "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", Article SSOT-MATH, states it for mathematics and numerics; "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" section 3 restates it for every change (\"Specs are source of truth\")."}],"type":"p"}],"heading":"What t27 and Trinity are","id":"what-t27-and-trinity-are"},{"blocks":[{"runs":[{"t":"text","v":"Every claim in this documentation carries one of five status tags, and the table the site renders next to this chapter repeats them with their source file:"}],"type":"p"},{"items":[[{"t":"code","v":"[measured]"},{"t":"text","v":" -- a number produced by running something whose output is in a repository or a public CI log, with the command and the commit recorded."}],[{"t":"code","v":"[declared]"},{"t":"text","v":" -- stated in a spec or a canon document; not (yet) exercised by a run."}],[{"t":"code","v":"[specified]"},{"t":"text","v":" -- exists as a "},{"t":"code","v":".t27"},{"t":"text","v":" spec that typechecks; no implementation is claimed."}],[{"t":"code","v":"[external]"},{"t":"text","v":" -- a value taken from a source outside the two repositories; cited, not reproduced here."}],[{"t":"code","v":"[not claimed]"},{"t":"text","v":" -- explicitly outside what the project asserts today."}]],"type":"ul"},{"runs":[{"t":"text","v":"The statements this chapter is prepared to make, with their tags:"}],"type":"p"},{"items":[[{"t":"text","v":"The GoldenFloat catalog holds 83 formats "},{"t":"code","v":"[declared]"},{"t":"text","v":" -- "},{"t":"code","v":"FAMILY_TOTALS.catalog"},{"t":"text","v":" in "},{"t":"code","v":"trinity:apps/website/src/data/siliconHistory.ts"},{"t":"text","v":", transcribed from the hardware conformance report of "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" (v0.2), which is the published source of every hardware figure on the site."}],[{"t":"text","v":"Hardware numbers exist for a subset of the catalog "},{"t":"code","v":"[measured]"},{"t":"text","v":": at v0.2 the same file records 27 formats at Tier E (public chain: CI run id, bitstream SHA-256, JTAG flash, UART log), 13 with decode in hardware, 7 with ADD and 7 with MUL in hardware, and 62 with a bit-exact software reference. The union of the hardware axes is a smaller number than 83; the exact union is stated in the trinity-fpga report and is not restated here."}],[{"t":"text","v":"Every hardware number was measured on one board "},{"t":"code","v":"[measured]"},{"t":"text","v":": ALINX AX7203, Xilinx Artix-7 "},{"t":"code","v":"xc7a200tfbg484-2"},{"t":"text","v":", open toolchain (yosys, nextpnr-xilinx, Project X-Ray), "},{"t":"code","v":"DEVICE"},{"t":"text","v":" and "},{"t":"code","v":"TOOLCHAIN"},{"t":"text","v":" in the same file."}],[{"t":"text","v":"Skills, crons, agents and tools on the site are generated from "},{"t":"code","v":".t27"},{"t":"text","v":" specs through the vendored compiler wasm "},{"t":"code","v":"[measured]"},{"t":"text","v":": the counts are in the ladder header of every Explorer and in the \"Evidence and witnesses\" chapter; "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" for each spec is recorded in the JSON the site serves."}]],"type":"ul"}],"heading":"Claims and their status","id":"claims-and-their-status"},{"blocks":[{"runs":[{"t":"text","v":"What the project does "},{"t":"strong","v":"not"},{"t":"text","v":" claim, in its own words:"}],"type":"p"},{"items":[[{"t":"strong","v":"No silicon."},{"t":"text","v":" "},{"t":"code","v":"[not claimed]"},{"t":"text","v":" A SKY130 design was prepared through Tiny Tapeout; the TTSKY26a/TTSKY26b submissions were withdrawn before fabrication and refunded, so no die exists and no measurement on silicon is claimed ("},{"t":"code","v":"trinity:apps/website/src/content/tnf.ts"},{"t":"text","v":", the \"Is this an ASIC result?\" answer). ASIC mapping and multi-corner characterisation are not claimed either. The hardware boundary is the FPGA named above."}],[{"t":"strong","v":"No ranking words."},{"t":"text","v":" The canon forbids \"first\", \"only\", \"best\" and their translations in first-party prose; the site's QA ("},{"t":"code","v":"check:docs"},{"t":"text","v":", "},{"t":"code","v":"check:queen-honesty"},{"t":"text","v":") fails a build that contains them. Comparisons are stated as numbers with a source or not at all."}],[{"t":"strong","v":"The Verilog the t27 compiler emits from a format spec is a module shell"},{"t":"text","v":" -- across the corpus it yields 0 LUTs and 0 flip-flops ("},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":", provenance note). The silicon results belong to hand-written RTL verified against an independent oracle. The spec and the RTL describe the same format; they are not the same artifact."}],[{"t":"strong","v":"`typecheck.ok` from the wasm is necessary, not sufficient."},{"t":"text","v":" It stays "},{"t":"code","v":"true"},{"t":"text","v":" for a wrong annotation such as "},{"t":"code","v":"str = 5"},{"t":"text","v":"; the site's generators check the field schema of every card on top of it ("},{"t":"code","v":"specs/skills/README.md"},{"t":"text","v":")."}],[{"t":"strong","v":"Two repositories, two lists."},{"t":"text","v":" Tools, agents and jobs of "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" and of "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" are recorded under their own "},{"t":"code","v":"REPO"},{"t":"text","v":"; nothing is merged into one list."}]],"type":"ul"}],"heading":"Boundaries","id":"boundaries"},{"blocks":[{"runs":[{"t":"text","v":"The seven chapters are declared in "},{"t":"code","v":"specs/docs/system.t27"},{"t":"text","v":" and one spec per chapter under "},{"t":"code","v":"specs/docs/chapters/"},{"t":"text","v":". Each chapter spec names its "},{"t":"code","v":"SOURCES"},{"t":"text","v":" (the files it quotes), its "},{"t":"code","v":"SECTIONS"},{"t":"text","v":" (the headings of this Markdown, checked at build time), the figure the site draws from data ("},{"t":"code","v":"DIAGRAM"},{"t":"text","v":") and the table it generates from the catalogs ("},{"t":"code","v":"TABLE"},{"t":"text","v":"). The English prose is canonical and lives in "},{"t":"code","v":"docs/system/.md"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":"; the Russian text travels through the translation contract "},{"t":"code","v":"specs/i18n/docs-ru.t27"},{"t":"text","v":" and the bundle it names in "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":". When the two disagree, English wins."}],"type":"p"},{"runs":[{"t":"text","v":"Every figure on the site carries a caption and a data-source line: the JSON it was drawn from and the commit that JSON was generated at. Every table is generated; none is typed by hand. A number without a source line is a defect -- report it as one."}],"type":"p"}],"heading":"How to read this documentation","id":"how-to-read-this-documentation"}],"title":"The project"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"strong","v":"t27"},{"t":"text","v":" -- язык спецификаций и инструментальная цепочка. Файл "},{"t":"code","v":".t27"},{"t":"text","v":" в одном месте объявляет поведение, константы, тесты и инварианты; компилятор ("},{"t":"code","v":"t27c"},{"t":"text","v":", вызываемый командой "},{"t":"code","v":"tri"},{"t":"text","v":") проверяет файл, порождает код для целевых бэкендов (Zig, C, Verilog) и прогоняет тесты, записанные внутри спецификации. Репозиторий "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" хранит язык, компилятор, корпус спецификаций и канонические документы, определяющие, как в нём работают агенты и люди ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":")."}],"type":"p"},{"runs":[{"t":"strong","v":"Trinity"},{"t":"text","v":" -- программа вокруг t27: семейство численных форматов GoldenFloat, построенное на тождестве phi^2 + 1/phi^2 = 3, аппаратная проверка этих форматов на одной плате FPGA и публичный сайт "},{"t":"code","v":"t27.ai"},{"t":"text","v":" (репозиторий "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", "},{"t":"code","v":"apps/website"},{"t":"text","v":"), который отображает корпус спецификаций, навыки, расписания, агентов и инструменты через настоящий компилятор, собранный в WebAssembly. Сайт не пересказывает спецификации: он компилирует их при сборке и показывает вердикты."}],"type":"p"},{"runs":[{"t":"text","v":"Правило, связывающее обе части, -- spec-first: логика проекта рождается в "},{"t":"code","v":".t27"},{"t":"text","v":", а языки-хосты -- Rust для бутстрап-компилятора, TypeScript для сайта, Zig, C и Verilog как порождаемый код -- являются подчинёнными реализациями. "},{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", статья SSOT-MATH, формулирует это для математики и численных вопросов; "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", раздел 3, повторяет для любого изменения (\"Specs are source of truth\")."}],"type":"p"}],"heading":"Что такое t27 и Trinity","id":"что-такое-t27-и-trinity"},{"blocks":[{"runs":[{"t":"text","v":"Каждое утверждение в этой документации несёт один из пяти статусных тегов, и таблица, которую сайт выводит рядом с этой главой, повторяет их вместе с файлом-источником:"}],"type":"p"},{"items":[[{"t":"code","v":"[measured]"},{"t":"text","v":" -- число, полученное запуском чего-либо, чей вывод лежит в репозитории или в публичном журнале CI, с записанной командой и коммитом."}],[{"t":"code","v":"[declared]"},{"t":"text","v":" -- заявлено в спецификации или каноническом документе; запуском (пока) не проверено."}],[{"t":"code","v":"[specified]"},{"t":"text","v":" -- существует как спецификация "},{"t":"code","v":".t27"},{"t":"text","v":", проходящая проверку типов; реализация не заявляется."}],[{"t":"code","v":"[external]"},{"t":"text","v":" -- значение взято из источника вне двух репозиториев; цитируется, здесь не воспроизводится."}],[{"t":"code","v":"[not claimed]"},{"t":"text","v":" -- явно вне того, что проект утверждает сегодня."}]],"type":"ul"},{"runs":[{"t":"text","v":"Утверждения, которые эта глава готова сделать, с тегами:"}],"type":"p"},{"items":[[{"t":"text","v":"Каталог GoldenFloat содержит 83 формата "},{"t":"code","v":"[declared]"},{"t":"text","v":" -- "},{"t":"code","v":"FAMILY_TOTALS.catalog"},{"t":"text","v":" в "},{"t":"code","v":"trinity:apps/website/src/data/siliconHistory.ts"},{"t":"text","v":", перенесённый из отчёта об аппаратной конформности "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" (v0.2), который является опубликованным источником каждой аппаратной цифры на сайте."}],[{"t":"text","v":"Аппаратные числа существуют для подмножества каталога "},{"t":"code","v":"[measured]"},{"t":"text","v":": на v0.2 тот же файл фиксирует 27 форматов на уровне Tier E (публичная цепочка: id запуска CI, SHA-256 битстрима, прошивка по JTAG, журнал UART), 13 с декодированием в железе, 7 с ADD и 7 с MUL в железе и 62 с побитово точной программной моделью. Объединение аппаратных осей меньше 83; точное значение объединения приведено в отчёте trinity-fpga и здесь не повторяется."}],[{"t":"text","v":"Каждое аппаратное число измерено на одной плате "},{"t":"code","v":"[measured]"},{"t":"text","v":": ALINX AX7203, Xilinx Artix-7 "},{"t":"code","v":"xc7a200tfbg484-2"},{"t":"text","v":", открытая цепочка (yosys, nextpnr-xilinx, Project X-Ray), "},{"t":"code","v":"DEVICE"},{"t":"text","v":" и "},{"t":"code","v":"TOOLCHAIN"},{"t":"text","v":" в том же файле."}],[{"t":"text","v":"Навыки, расписания, агенты и инструменты на сайте порождаются из спецификаций "},{"t":"code","v":".t27"},{"t":"text","v":" через вендорный wasm компилятора "},{"t":"code","v":"[measured]"},{"t":"text","v":": счётчики находятся в заголовке-лестнице каждого обозревателя и в главе \"Свидетели и доказательства\"; "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" каждой спецификации записан в JSON, который сайт отдаёт."}]],"type":"ul"}],"heading":"Утверждения и их статус","id":"утверждения-и-их-статус"},{"blocks":[{"runs":[{"t":"text","v":"Чего проект "},{"t":"strong","v":"не"},{"t":"text","v":" утверждает, его собственными словами:"}],"type":"p"},{"items":[[{"t":"strong","v":"Кремния нет."},{"t":"text","v":" "},{"t":"code","v":"[not claimed]"},{"t":"text","v":" Дизайн под SKY130 был подготовлен через Tiny Tapeout; заявки TTSKY26a/TTSKY26b были отозваны до изготовления с возвратом средств, поэтому кристалла не существует и никакое измерение на кремнии не заявляется ("},{"t":"code","v":"trinity:apps/website/src/content/tnf.ts"},{"t":"text","v":", ответ \"Is this an ASIC result?\"). Отображение в ASIC и многоугловая характеризация также не заявляются. Аппаратная граница -- названная выше FPGA."}],[{"t":"strong","v":"Слов-рейтингов нет."},{"t":"text","v":" Канон запрещает слова-рейтинги -- превосходные и исключающие эпитеты, перечисленные в правилах каталога "},{"t":"code","v":"specs/docs/README.md"},{"t":"text","v":", -- в собственной прозе проекта; контроль качества сайта ("},{"t":"code","v":"check:docs"},{"t":"text","v":", "},{"t":"code","v":"check:queen-honesty"},{"t":"text","v":") роняет сборку, в которой они встречаются. Сравнения даются как числа с источником либо не даются вовсе."}],[{"t":"strong","v":"Verilog, который компилятор t27 порождает из спецификации формата, -- это оболочка модуля"},{"t":"text","v":": по корпусу он даёт 0 LUT и 0 триггеров ("},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":", примечание о происхождении). Результаты на FPGA принадлежат рукописному RTL, проверенному против независимого оракула. Спецификация и RTL описывают один и тот же формат; это не один и тот же артефакт."}],[{"t":"strong","v":"`typecheck.ok` от wasm необходим, но не достаточен."},{"t":"text","v":" Он остаётся "},{"t":"code","v":"true"},{"t":"text","v":" при неверной аннотации вроде "},{"t":"code","v":"str = 5"},{"t":"text","v":"; генераторы сайта поверх него проверяют схему полей каждой карточки ("},{"t":"code","v":"specs/skills/README.md"},{"t":"text","v":")."}],[{"t":"strong","v":"Два репозитория, два списка."},{"t":"text","v":" Инструменты, агенты и задания "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" и "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" записаны под своим "},{"t":"code","v":"REPO"},{"t":"text","v":"; ничего не слито в один список."}]],"type":"ul"}],"heading":"Границы","id":"границы"},{"blocks":[{"runs":[{"t":"text","v":"Семь глав объявлены в "},{"t":"code","v":"specs/docs/system.t27"},{"t":"text","v":" и по одной спецификации на главу в "},{"t":"code","v":"specs/docs/chapters/"},{"t":"text","v":". Каждая спецификация главы называет свои "},{"t":"code","v":"SOURCES"},{"t":"text","v":" (цитируемые файлы), "},{"t":"code","v":"SECTIONS"},{"t":"text","v":" (заголовки этого текста, проверяемые при сборке), фигуру, которую сайт рисует по данным ("},{"t":"code","v":"DIAGRAM"},{"t":"text","v":"), и таблицу, порождаемую из каталогов ("},{"t":"code","v":"TABLE"},{"t":"text","v":"). Английская проза канонична и лежит в "},{"t":"code","v":"docs/system/.md"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":"; русский текст идёт через контракт перевода "},{"t":"code","v":"specs/i18n/docs-ru.t27"},{"t":"text","v":" и бандл, который он называет в "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":". При расхождении побеждает английский."}],"type":"p"},{"runs":[{"t":"text","v":"Каждая фигура на сайте несёт подпись и строку источника данных: JSON, из которого она нарисована, и коммит, на котором этот JSON порождён. Каждая таблица порождена; ни одна не набрана вручную. Число без строки источника -- дефект; сообщайте о нём как о дефекте."}],"type":"p"}],"heading":"Как читать эту документацию","id":"как-читать-эту-документацию"}]}},"bodyPath":"docs/system/project.md","bodySha256":"0674727c51ecb860eb65e6fe6a21d1ef0e9b5af97bb592d4ea12eefddddce070","diagram":"ladder","discarded":0,"enabled":true,"id":"docs/project","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/project.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/project.t27"},"moduleName":"docs_chapter_project","order":1,"sections":[{"heading":{"en":"What t27 and Trinity are","ru":"Что такое t27 и Trinity"},"id":"what-t27-and-trinity-are"},{"heading":{"en":"Claims and their status","ru":"Утверждения и их статус"},"id":"claims-and-their-status"},{"heading":{"en":"Boundaries","ru":"Границы"},"id":"boundaries"},{"heading":{"en":"How to read this documentation","ru":"Как читать эту документацию"},"id":"how-to-read-this-documentation"}],"sha256":"4023211070b18117f67404d4c7941ea02e079d1c07aa41515aee69704bab07a3","sources":[{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"},{"kind":"file","path":"AGENTS.md","rel":"AGENTS.md","repo":"t27","sha256":"1c9b8cce1600d4220d74498d187934e0b935ad1eae6deb9c1b100057ce9ac9e9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","where":"vendored"},{"kind":"file","path":"specs/docs/system.t27","rel":"specs/docs/system.t27","repo":"t27","sha256":"ab7ee1773622aa46442aec7aeca5cdd1a1a3c36f6321451a5e426df80a75945b","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/system.t27","where":"vendored"},{"kind":"file","path":"trinity:apps/website/src/data/siliconHistory.ts","rel":"apps/website/src/data/siliconHistory.ts","repo":"trinity","sha256":"ee385a57e25ddd1fcdce51c4001c1cd2bbd59ef0adfed104b4119e16b4a00d7c","url":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/apps/website/src/data/siliconHistory.ts","where":"checkout"},{"kind":"file","path":"trinity:apps/website/src/content/tnf.ts","rel":"apps/website/src/content/tnf.ts","repo":"trinity","sha256":"497dc5311e431ad536da2abd3ec002077b1e96fe508e13388eb884de83f32d9d","url":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/apps/website/src/content/tnf.ts","where":"checkout"}],"specPath":"specs/docs/chapters/project.t27","stem":"project","table":{"columns":["tag","claim","sources"],"kind":"claims","note":"","rows":[{"claim":"The GoldenFloat catalog holds 83 formats -- `FAMILY_TOTALS.catalog` in `trinity:apps/website/src/data/siliconHistory.ts`, transcribed from the hardware conformance report of `gHashTag/trinity-fpga` (v0.2), which is th...","sources":["trinity:apps/website/src/data/siliconHistory.ts","gHashTag/trinity-fpga"],"tag":"declared"},{"claim":"Hardware numbers exist for a subset of the catalog: at v0.2 the same file records 27 formats at Tier E (public chain: CI run id, bitstream SHA-256, JTAG flash, UART log), 13 with decode in hardware, 7 with ADD and 7 w...","sources":[],"tag":"measured"},{"claim":"Every hardware number was measured on one board: ALINX AX7203, Xilinx Artix-7 `xc7a200tfbg484-2`, open toolchain (yosys, nextpnr-xilinx, Project X-Ray), `DEVICE` and `TOOLCHAIN` in the same file.","sources":[],"tag":"measured"},{"claim":"Skills, crons, agents and tools on the site are generated from `.t27` specs through the vendored compiler wasm: the counts are in the ladder header of every Explorer and in the \"Evidence and witnesses\" chapter; `typec...","sources":[],"tag":"measured"},{"claim":"No silicon. A SKY130 design was prepared through Tiny Tapeout; the TTSKY26a/TTSKY26b submissions were withdrawn before fabrication and refunded, so no die exists and no measurement on silicon is claimed (`trinity:apps...","sources":["trinity:apps/website/src/content/tnf.ts"],"tag":"not claimed"}],"source":"status-tagged bullets of docs/system/project.md"},"title":{"en":"The project","ru":"Проект"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":" is the entry point for humans and coding agents; its first section fixes the reading order and which document wins when two disagree:"}],"type":"p"},{"items":[[{"t":"code","v":"SOUL.md"},{"t":"text","v":" -- the canonical constitution: language policy, TDD mandate, validation."}],[{"t":"code","v":"docs/nona-03-manifest/SOUL.md"},{"t":"text","v":" -- the expanded reference; if it conflicts with root "},{"t":"code","v":"SOUL.md"},{"t":"text","v":", root wins."}],[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":" -- Articles SSOT-MATH, LANG-EN and DOCS-TREE, and the invariant laws."}],[{"t":"code","v":"TASK.md"},{"t":"text","v":" with "},{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" -- multi-agent coordination, locks, anchor issue."}],[{"t":"text","v":"The nearest "},{"t":"code","v":"OWNERS.md"},{"t":"text","v":" -- domain ownership for the directories you edit."}]],"type":"ol"},{"runs":[{"t":"code","v":"CLAUDE.md"},{"t":"text","v":" adds the operational loop for an autonomous agent and says, in its first line, that repo-specific law always overrides generic tooling defaults. The rest of this chapter quotes these files; the site links each quotation to the file at the commit the documentation was generated from."}],"type":"p"}],"heading":"The constitutional stack","id":"the-constitutional-stack"},{"blocks":[{"runs":[{"t":"code","v":"SOUL.md"},{"t":"text","v":" is organised in articles. The ones every change touches:"}],"type":"p"},{"items":[[{"t":"strong","v":"Article I, The Language Policy."},{"t":"text","v":" Source files must be ASCII-only (U+0000..U+007F); identifiers and comments must be English. The rule names "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".tri"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":", "},{"t":"code","v":".h"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":" and build scripts. Cyrillic and other non-Latin scripts are forbidden in identifiers and comments unless an Architect-approved exception exists (section 1.1). First-party documentation is English (section 1.2, restated as Article LANG-EN of the constitution)."}],[{"t":"strong","v":"Article II, The TDD Mandate."},{"t":"text","v":" \"Every "},{"t":"code","v":".t27"},{"t":"text","v":" specification MUST contain at least one of\" a "},{"t":"code","v":".test"},{"t":"text","v":" section, an "},{"t":"code","v":".invariant"},{"t":"text","v":" section or a "},{"t":"code","v":".bench"},{"t":"text","v":" section. \"No exceptions. A spec without tests is not a specification -- it is a draft.\" (section 2.1, the Iron Law)."}],[{"t":"strong","v":"Article III, No Prototype Mode."},{"t":"text","v":" There is no "},{"t":"code","v":"--allow-no-tests"},{"t":"text","v":" flag and no grace period; the parser rejects a spec without tests with "},{"t":"code","v":"TDD contract violated"},{"t":"text","v":"."}],[{"t":"strong","v":"Article IV, Validation Requirements."},{"t":"text","v":" Enforcement at parser level, at codegen level and at build time."}],[{"t":"strong","v":"Article V, Amendment Process."},{"t":"text","v":" What can and cannot be amended."}],[{"t":"strong","v":"Article VI, Enforcement."},{"t":"text","v":" Agent compliance, human compliance, automated enforcement."}],[{"t":"strong","v":"Article VII, Sacred Trinity."},{"t":"text","v":" Three pillars: the identity phi^2 + 1/phi^2 = 3, ternary computation, and TDD inside the spec. \"Violating any violates the whole.\""}],[{"t":"strong","v":"Article VIII, NO-NEW-SHELL."},{"t":"text","v":" No new "},{"t":"code","v":"*.sh"},{"t":"text","v":" on the engineering critical path; the permitted exceptions are the exec-only shim "},{"t":"code","v":"scripts/tri"},{"t":"text","v":" and the one-time "},{"t":"code","v":"scripts/setup-git-hooks.sh"},{"t":"text","v":". Section 8.3 extends the rule to Python: validation, conformance gates and doc language checks live in "},{"t":"code","v":"t27c"},{"t":"text","v":" (Rust)."}]],"type":"ul"},{"runs":[{"t":"text","v":"The catalog specs under "},{"t":"code","v":"specs/skills"},{"t":"text","v":", "},{"t":"code","v":"specs/crons"},{"t":"text","v":", "},{"t":"code","v":"specs/agents"},{"t":"text","v":", "},{"t":"code","v":"specs/tools"},{"t":"text","v":" and "},{"t":"code","v":"specs/docs"},{"t":"text","v":" are declarative constant modules and carry no "},{"t":"code","v":".test"},{"t":"text","v":" block; the site's generators check their field schema instead. Whether Article II applies to declarative catalog modules is not decided in "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" today; this documentation records the practice and does not claim a ruling."}],"type":"p"}],"heading":"SOUL articles","id":"soul-articles"},{"blocks":[{"runs":[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", section 2, defines seven Invariant Laws that \"never change without constitutional amendment\". The site renders the table from that file; in short:"}],"type":"p"},{"items":[[{"t":"strong","v":"L1 TRACEABILITY"},{"t":"text","v":" -- no code merged without "},{"t":"code","v":"Closes #N"},{"t":"text","v":"; every PR references an issue. Enforced by "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":"."}],[{"t":"strong","v":"L2 GENERATION"},{"t":"text","v":" -- files under "},{"t":"code","v":"gen/"},{"t":"text","v":" are generated; edit the "},{"t":"code","v":".t27"},{"t":"text","v":" spec instead."}],[{"t":"strong","v":"L3 PURITY"},{"t":"text","v":" -- ASCII-only identifiers and comments in "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":"."}],[{"t":"strong","v":"L4 TESTABILITY"},{"t":"text","v":" -- every "},{"t":"code","v":".t27"},{"t":"text","v":" spec must contain "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" or "},{"t":"code","v":"bench"},{"t":"text","v":"."}],[{"t":"strong","v":"L5 IDENTITY"},{"t":"text","v":" -- phi^2 = phi + 1 on the reals, hence phi^2 + 1/phi^2 = 3; IEEE binary64 checks use a tolerance."}],[{"t":"strong","v":"L6 CEILING"},{"t":"text","v":" -- "},{"t":"code","v":"conformance/FORMAT-SPEC-001.json"},{"t":"text","v":" and "},{"t":"code","v":"specs/numeric/gf16.t27"},{"t":"text","v":" are the numeric ceiling, never forked."}],[{"t":"strong","v":"L7 UNITY"},{"t":"text","v":" -- no new "},{"t":"code","v":"*.sh"},{"t":"text","v":" on the critical path for validation, generation or data; "},{"t":"code","v":"t27c"},{"t":"text","v":" and "},{"t":"code","v":"tri"},{"t":"text","v":" only."}]],"type":"ul"},{"runs":[{"t":"text","v":"Priority is Asimov-style: L1 > L2 > L3 > L4 > L5 > L6 > L7. \"In conflict scenarios, the higher-priority law prevails.\" The legacy names (ISSUE-GATE, NO-HAND-EDIT-GEN, SOUL-ASCII, TDD-MANDATE, PHI-IDENTITY, TRINITY-SACRED, NO-NEW-SHELL) map one-to-one onto L1..L7 in the constitution's alias index."}],"type":"p"},{"runs":[{"t":"text","v":"One discrepancy is recorded rather than resolved: "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" section 5 speaks of \"the seven Invariant Laws (L1-L8)\" and writes the priority as \"L1 > ... > L8\", while its table and the constitution define L1..L7 only. No L8 is defined in either file at the commit this documentation was generated from. The figure next to this chapter therefore shows seven laws."}],"type":"p"}],"heading":"Invariant laws and their priority","id":"invariant-laws-and-their-priority"},{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":" section 3 lists six non-negotiables, quoted in short:"}],"type":"p"},{"items":[[{"t":"text","v":"Specs are source of truth -- behaviour belongs in "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":"; generated "},{"t":"code","v":"gen/"},{"t":"text","v":" output is not hand-edited except for documented exceptions."}],[{"t":"text","v":"TDD inside specs -- new or changed specs need "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" and/or "},{"t":"code","v":"bench"},{"t":"text","v":" where SOUL requires it."}],[{"t":"text","v":"English + ASCII -- first-party Markdown and source comments per LANG-EN and ADR-004."}],[{"t":"text","v":"No new Python on the verification critical path."}],[{"t":"text","v":"Issue gate -- PRs link issues ("},{"t":"code","v":"Closes #N"},{"t":"text","v":") where project policy requires it."}],[{"t":"text","v":"Ring / gold work -- parser, compiler and spec changes follow the golden-rings canon; the compiler seal path is "},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":"."}]],"type":"ol"},{"runs":[{"t":"text","v":"Two rules of this documentation's own owner belong beside them, because the site enforces them: no absolute developer home path in any committed file (a checkout is "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":" or "},{"t":"code","v":"git rev-parse --show-toplevel"},{"t":"text","v":"), and no hand edits to generated manifests -- change the spec and regenerate."}],"type":"p"}],"heading":"Non-negotiables for changes","id":"non-negotiables-for-changes"},{"blocks":[{"runs":[{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" governs how several agents work in one tree at the same time. Its artifacts are the root "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (anchor link, protocol version, locks, handoff log, work units) and the protocol document itself. The semantics, in short:"}],"type":"p"},{"items":[[{"t":"strong","v":"Lock (soft)."},{"t":"text","v":" Before editing sensitive paths the active agent should set lock holder, lock scope and lock until in the coordination state; others must not override without a handoff-log entry and an epoch bump. Locks are \"social + procedural\", not file locks."}],[{"t":"strong","v":"Epoch."},{"t":"text","v":" A version counter for the coordination state."}],[{"t":"strong","v":"Handoff log."},{"t":"text","v":" Append-preferred; handoffs are treated \"like narrow API contracts\"."}],[{"t":"strong","v":"Read / write order."},{"t":"text","v":" "},{"t":"code","v":"github-sync.json"},{"t":"text","v":" (queue snapshot), then "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (locks and handoffs), then the anchor issue, then the target issue for the code change (section 4.4)."}]],"type":"ul"},{"runs":[{"t":"text","v":"Validation of "},{"t":"code","v":"TASK.md"},{"t":"text","v":"'s shape is automated (section 5); verification is human plus CI (section 6)."}],"type":"p"}],"heading":"TASK protocol","id":"task-protocol"},{"blocks":[{"runs":[{"t":"text","v":"The issue gate is law L1 in executable form: the constitution names "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":" as the enforcement of \"no code merged without "},{"t":"code","v":"Closes #N"},{"t":"text","v":"\". Everything the site documents came in through it -- the skills, crons, agents, tools and docs catalogs each have their issue and their "},{"t":"code","v":"docs/now/"},{"t":"text","v":" entry."}],"type":"p"},{"runs":[{"t":"text","v":"The TDD mandate is law L4 and SOUL Article II in executable form: the parser rejects a spec without a "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" or "},{"t":"code","v":"bench"},{"t":"text","v":" block. For the catalog specs the site adds its own gate on top: a generator that compiles every card through the wasm and fails on a schema violation, an unknown cross-reference, or a binding stated on one side only (an agent that names a tool the tool does not name back, and the reverse)."}],"type":"p"}],"heading":"Issue gate and TDD mandate","id":"issue-gate-and-tdd-mandate"}],"title":"Constitution and the rules of the game for agents"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":" -- точка входа для людей и кодирующих агентов; его раздел 1 задаёт порядок чтения и то, какой документ побеждает при расхождении:"}],"type":"p"},{"items":[[{"t":"code","v":"SOUL.md"},{"t":"text","v":" -- каноническая конституция: языковая политика, мандат TDD, валидация."}],[{"t":"code","v":"docs/nona-03-manifest/SOUL.md"},{"t":"text","v":" -- расширенный справочник; при конфликте с корневым "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" побеждает корневой."}],[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":" -- статьи SSOT-MATH, LANG-EN и DOCS-TREE и инвариантные законы."}],[{"t":"code","v":"TASK.md"},{"t":"text","v":" вместе с "},{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" -- координация нескольких агентов, блокировки, якорная задача."}],[{"t":"text","v":"Ближайший "},{"t":"code","v":"OWNERS.md"},{"t":"text","v":" -- владение областью для редактируемых каталогов."}]],"type":"ol"},{"runs":[{"t":"code","v":"CLAUDE.md"},{"t":"text","v":" добавляет операционный цикл автономного агента и в своей вводной строке говорит, что закон репозитория всегда перекрывает умолчания общего инструментария. Остальная часть главы цитирует эти файлы; сайт привязывает каждую цитату к файлу на коммите, на котором документация была порождена."}],"type":"p"}],"heading":"Конституционный стек","id":"конституционный-стек"},{"blocks":[{"runs":[{"t":"code","v":"SOUL.md"},{"t":"text","v":" организован статьями. Те, которых касается каждое изменение:"}],"type":"p"},{"items":[[{"t":"strong","v":"Статья I, языковая политика."},{"t":"text","v":" Исходные файлы должны быть только ASCII (U+0000..U+007F); идентификаторы и комментарии -- на английском. Правило называет "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".tri"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":", "},{"t":"code","v":".h"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":" и сборочные скрипты. Кириллица и другие нелатинские письменности запрещены в идентификаторах и комментариях, если нет исключения, одобренного Архитектором (раздел 1.1). Собственная документация проекта -- на английском (раздел 1.2, повторено как статья LANG-EN конституции)."}],[{"t":"strong","v":"Статья II, мандат TDD."},{"t":"text","v":" \"Every "},{"t":"code","v":".t27"},{"t":"text","v":" specification MUST contain at least one of\" -- секцию "},{"t":"code","v":".test"},{"t":"text","v":", "},{"t":"code","v":".invariant"},{"t":"text","v":" или "},{"t":"code","v":".bench"},{"t":"text","v":". \"No exceptions. A spec without tests is not a specification -- it is a draft.\" (раздел 2.1, Железный закон)."}],[{"t":"strong","v":"Статья III, без режима прототипа."},{"t":"text","v":" Нет флага "},{"t":"code","v":"--allow-no-tests"},{"t":"text","v":" и нет льготного периода; парсер отвергает спецификацию без тестов с ошибкой "},{"t":"code","v":"TDD contract violated"},{"t":"text","v":"."}],[{"t":"strong","v":"Статья IV, требования валидации."},{"t":"text","v":" Контроль на уровне парсера, кодогенерации и сборки."}],[{"t":"strong","v":"Статья V, порядок поправок."},{"t":"text","v":" Что можно и что нельзя менять."}],[{"t":"strong","v":"Статья VI, принуждение."},{"t":"text","v":" Соблюдение агентами, людьми, автоматикой."}],[{"t":"strong","v":"Статья VII, Священная Троица."},{"t":"text","v":" Три опоры: тождество phi^2 + 1/phi^2 = 3, троичные вычисления и TDD внутри спецификации. \"Violating any violates the whole.\""}],[{"t":"strong","v":"Статья VIII, NO-NEW-SHELL."},{"t":"text","v":" Никаких новых "},{"t":"code","v":"*.sh"},{"t":"text","v":" на инженерном критическом пути; допустимые исключения -- шим "},{"t":"code","v":"scripts/tri"},{"t":"text","v":" (только exec) и одноразовый "},{"t":"code","v":"scripts/setup-git-hooks.sh"},{"t":"text","v":". Раздел 8.3 распространяет правило на Python: валидация, шлюзы конформности и проверки языка документации живут в "},{"t":"code","v":"t27c"},{"t":"text","v":" (Rust)."}]],"type":"ul"},{"runs":[{"t":"text","v":"Спецификации каталогов в "},{"t":"code","v":"specs/skills"},{"t":"text","v":", "},{"t":"code","v":"specs/crons"},{"t":"text","v":", "},{"t":"code","v":"specs/agents"},{"t":"text","v":", "},{"t":"code","v":"specs/tools"},{"t":"text","v":" и "},{"t":"code","v":"specs/docs"},{"t":"text","v":" -- декларативные модули констант и не несут блока "},{"t":"code","v":".test"},{"t":"text","v":"; вместо этого генераторы сайта проверяют схему их полей. Применима ли статья II к декларативным модулям каталогов, "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" сегодня не решает; эта документация фиксирует практику и не претендует на постановление."}],"type":"p"}],"heading":"Статьи SOUL","id":"статьи-soul"},{"blocks":[{"runs":[{"t":"code","v":"docs/T27-CONSTITUTION.md"},{"t":"text","v":", раздел 2, определяет семь инвариантных законов, которые \"never change without constitutional amendment\". Сайт выводит таблицу из этого файла; кратко:"}],"type":"p"},{"items":[[{"t":"strong","v":"L1 TRACEABILITY"},{"t":"text","v":" -- код не вливается без "},{"t":"code","v":"Closes #N"},{"t":"text","v":"; каждый PR ссылается на задачу. Контроль -- "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":"."}],[{"t":"strong","v":"L2 GENERATION"},{"t":"text","v":" -- файлы под "},{"t":"code","v":"gen/"},{"t":"text","v":" порождены; правьте спецификацию "},{"t":"code","v":".t27"},{"t":"text","v":"."}],[{"t":"strong","v":"L3 PURITY"},{"t":"text","v":" -- только ASCII в идентификаторах и комментариях "},{"t":"code","v":".t27"},{"t":"text","v":", "},{"t":"code","v":".zig"},{"t":"text","v":", "},{"t":"code","v":".v"},{"t":"text","v":", "},{"t":"code","v":".c"},{"t":"text","v":"."}],[{"t":"strong","v":"L4 TESTABILITY"},{"t":"text","v":" -- каждая спецификация "},{"t":"code","v":".t27"},{"t":"text","v":" содержит "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" или "},{"t":"code","v":"bench"},{"t":"text","v":"."}],[{"t":"strong","v":"L5 IDENTITY"},{"t":"text","v":" -- phi^2 = phi + 1 на вещественных числах, откуда phi^2 + 1/phi^2 = 3; проверки в IEEE binary64 используют допуск."}],[{"t":"strong","v":"L6 CEILING"},{"t":"text","v":" -- "},{"t":"code","v":"conformance/FORMAT-SPEC-001.json"},{"t":"text","v":" и "},{"t":"code","v":"specs/numeric/gf16.t27"},{"t":"text","v":" -- численный потолок, никогда не форкается."}],[{"t":"strong","v":"L7 UNITY"},{"t":"text","v":" -- никаких новых "},{"t":"code","v":"*.sh"},{"t":"text","v":" на критическом пути валидации, порождения или данных; только "},{"t":"code","v":"t27c"},{"t":"text","v":" и "},{"t":"code","v":"tri"},{"t":"text","v":"."}]],"type":"ul"},{"runs":[{"t":"text","v":"Приоритет -- в духе Азимова: L1 > L2 > L3 > L4 > L5 > L6 > L7. \"In conflict scenarios, the higher-priority law prevails.\" Прежние имена (ISSUE-GATE, NO-HAND-EDIT-GEN, SOUL-ASCII, TDD-MANDATE, PHI-IDENTITY, TRINITY-SACRED, NO-NEW-SHELL) отображаются один к одному на L1..L7 в индексе псевдонимов конституции."}],"type":"p"},{"runs":[{"t":"text","v":"Одно расхождение фиксируется, а не устраняется: "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", раздел 5, говорит о \"the seven Invariant Laws (L1-L8)\" и пишет приоритет как \"L1 > ... > L8\", тогда как его таблица и конституция определяют только L1..L7. Ни в одном из файлов на коммите, на котором порождена документация, L8 не определён. Поэтому фигура рядом с этой главой показывает семь законов."}],"type":"p"}],"heading":"Инвариантные законы и их приоритет","id":"инвариантные-законы-и-их-приоритет"},{"blocks":[{"runs":[{"t":"code","v":"AGENTS.md"},{"t":"text","v":", раздел 3, перечисляет шесть неотменяемых требований, кратко:"}],"type":"p"},{"items":[[{"t":"text","v":"Спецификации -- источник истины: поведение живёт в "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":"; порождённый вывод в "},{"t":"code","v":"gen/"},{"t":"text","v":" не правится вручную, кроме документированных исключений."}],[{"t":"text","v":"TDD внутри спецификаций: новые или изменённые спецификации несут "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" и/или "},{"t":"code","v":"bench"},{"t":"text","v":" там, где этого требует SOUL."}],[{"t":"text","v":"Английский + ASCII: собственный Markdown и комментарии в коде по LANG-EN и ADR-004."}],[{"t":"text","v":"Никакого нового Python на критическом пути верификации."}],[{"t":"text","v":"Шлюз задач: PR ссылаются на задачи ("},{"t":"code","v":"Closes #N"},{"t":"text","v":") там, где этого требует политика проекта."}],[{"t":"text","v":"Работа с кольцами / золотом: изменения парсера, компилятора и спецификаций следуют канону golden-rings; путь печати компилятора -- "},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":"."}]],"type":"ol"},{"runs":[{"t":"text","v":"Два правила владельца этой документации стоят рядом с ними, потому что сайт их проверяет: никаких абсолютных путей домашнего каталога разработчика в закоммиченных файлах (чекаут -- это "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":" или "},{"t":"code","v":"git rev-parse --show-toplevel"},{"t":"text","v":") и никакой ручной правки порождённых манифестов -- меняйте спецификацию и порождайте заново."}],"type":"p"}],"heading":"Неотменяемые требования к изменениям","id":"неотменяемые-требования-к-изменениям"},{"blocks":[{"runs":[{"t":"code","v":"docs/coordination/TASK_PROTOCOL.md"},{"t":"text","v":" определяет, как несколько агентов работают в одном дереве одновременно. Его артефакты -- корневой "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (якорная ссылка, версия протокола, блокировки, журнал передач, единицы работы) и сам документ протокола. Семантика, кратко:"}],"type":"p"},{"items":[[{"t":"strong","v":"Блокировка (мягкая)."},{"t":"text","v":" Перед правкой чувствительных путей активный агент должен выставить держателя, область и срок блокировки в состоянии координации; другие не должны перебивать её без записи в журнале передач и повышения эпохи. Блокировки \"social + procedural\", не файловые."}],[{"t":"strong","v":"Эпоха."},{"t":"text","v":" Счётчик версии состояния координации."}],[{"t":"strong","v":"Журнал передач."},{"t":"text","v":" Предпочтительно дописываемый; передачи трактуются \"like narrow API contracts\"."}],[{"t":"strong","v":"Порядок чтения / записи."},{"t":"text","v":" "},{"t":"code","v":"github-sync.json"},{"t":"text","v":" (снимок очереди), затем "},{"t":"code","v":"TASK.md"},{"t":"text","v":" (блокировки и передачи), затем якорная задача, затем целевая задача для изменения кода (раздел 4.4)."}]],"type":"ul"},{"runs":[{"t":"text","v":"Проверка формы "},{"t":"code","v":"TASK.md"},{"t":"text","v":" автоматизирована (раздел 5); верификация -- человек плюс CI (раздел 6)."}],"type":"p"}],"heading":"Протокол TASK","id":"протокол-task"},{"blocks":[{"runs":[{"t":"text","v":"Шлюз задач -- закон L1 в исполняемой форме: конституция называет "},{"t":"code","v":".github/workflows/issue-gate.yml"},{"t":"text","v":" средством контроля правила \"no code merged without "},{"t":"code","v":"Closes #N"},{"t":"text","v":"\". Всё, что документирует сайт, прошло через него -- каталоги навыков, расписаний, агентов, инструментов и документации имеют свою задачу и свою запись в "},{"t":"code","v":"docs/now/"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"Мандат TDD -- закон L4 и статья II SOUL в исполняемой форме: парсер отвергает спецификацию без блока "},{"t":"code","v":"test"},{"t":"text","v":", "},{"t":"code","v":"invariant"},{"t":"text","v":" или "},{"t":"code","v":"bench"},{"t":"text","v":". Для спецификаций каталогов сайт добавляет свой шлюз: генератор компилирует каждую карточку через wasm и роняет сборку при нарушении схемы, неизвестной перекрёстной ссылке или связи, заявленной лишь с одной стороны (агент называет инструмент, а инструмент не называет агента в ответ, и наоборот)."}],"type":"p"}],"heading":"Шлюз задач и мандат TDD","id":"шлюз-задач-и-мандат-tdd"}]}},"bodyPath":"docs/system/rules.md","bodySha256":"fead79216c0c6b88907a51098b2f4664e70efb0f48f5870ebd3e1a54f6cb8e9d","diagram":"law-hierarchy","discarded":0,"enabled":true,"id":"docs/rules","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/rules.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/rules.t27"},"moduleName":"docs_chapter_rules","order":2,"sections":[{"heading":{"en":"The constitutional stack","ru":"Конституционный стек"},"id":"the-constitutional-stack"},{"heading":{"en":"SOUL articles","ru":"Статьи SOUL"},"id":"soul-articles"},{"heading":{"en":"Invariant laws and their priority","ru":"Инвариантные законы и их приоритет"},"id":"invariant-laws-and-their-priority"},{"heading":{"en":"Non-negotiables for changes","ru":"Неотменяемые требования к изменениям"},"id":"non-negotiables-for-changes"},{"heading":{"en":"TASK protocol","ru":"Протокол TASK"},"id":"task-protocol"},{"heading":{"en":"Issue gate and TDD mandate","ru":"Шлюз задач и мандат TDD"},"id":"issue-gate-and-tdd-mandate"}],"sha256":"3a27bd5a4d2a3afccb342301f277a906103ff8c6fd802bace787ed808e89e22f","sources":[{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"},{"kind":"file","path":"AGENTS.md","rel":"AGENTS.md","repo":"t27","sha256":"1c9b8cce1600d4220d74498d187934e0b935ad1eae6deb9c1b100057ce9ac9e9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","where":"vendored"},{"kind":"file","path":"CLAUDE.md","rel":"CLAUDE.md","repo":"t27","sha256":"b6250fd688a9d794b9eaecebd9882905aa49bfab06616be82211a87fe098656d","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/CLAUDE.md","where":"vendored"},{"kind":"file","path":"docs/T27-CONSTITUTION.md","rel":"docs/T27-CONSTITUTION.md","repo":"t27","sha256":"2c06724425f721ef6356edc9a14e4f1af530d1246c5c6a318fd42f59aaa319a5","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/T27-CONSTITUTION.md","where":"vendored"},{"kind":"file","path":"docs/coordination/TASK_PROTOCOL.md","rel":"docs/coordination/TASK_PROTOCOL.md","repo":"t27","sha256":"dbbea6fe6eb3ce0df60cf58bb0c2c2973313523a9f9530aa792f07dcb65a38ef","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/coordination/TASK_PROTOCOL.md","where":"vendored"}],"specPath":"specs/docs/chapters/rules.t27","stem":"rules","table":{"columns":["law","name","body","enforcement"],"kind":"laws","note":"Priority: L1 > L2 > … > L7","rows":[{"body":"No code merged without `Closes #N` — every PR must reference a GitHub issue","enforcement":"`.github/workflows/issue-gate.yml`","law":"L1","name":"TRACEABILITY"},{"body":"Files under `gen/` are generated; edit the `.t27` spec instead","enforcement":"`./target/release/t27c validate-gen-headers`","law":"L2","name":"GENERATION"},{"body":"All `.t27` / `.zig` / `.v` / `.c` source — ASCII-only identifiers & comments","enforcement":"`SOUL.md`, `ADR-004`, build.rs language checks","law":"L3","name":"PURITY"},{"body":"Every `.t27` spec must contain `test` / `invariant` / `bench`","enforcement":"Ring 037 / #132, parser enforcement","law":"L4","name":"TESTABILITY"},{"body":"**K2 core:** φ² = φ + 1 on ℝ; consequence φ² + φ⁻² = 3; IEEE f64 checks use tolerance","enforcement":"`NUMERIC-CORE-PALETTE-REGISTRY.md`, `specs/math/constants.t27`","law":"L5","name":"IDENTITY"},{"body":"`conformance/FORMAT-SPEC-001.json` + `specs/numeric/gf16.t27` are the numeric ceiling — never forked","enforcement":"SSOT: seal coverage CI","law":"L6","name":"CEILING"},{"body":"No new `*.sh` on the critical path for validation / gen / data","enforcement":"`SOUL.md` Article VIII; `t27c` + `tri` only","law":"L7","name":"UNITY"}],"source":"docs/T27-CONSTITUTION.md, section 2"},"title":{"en":"Constitution and the rules of the game for agents","ru":"Конституция и правила игры для агентов"},"typecheckOk":true},{"body":{"en":{"lead":[{"runs":[{"t":"text","v":"The site orders what the repositories ship into five layers and shows the same ladder in the header of every Explorer: "},{"t":"strong","v":"Specs -> Skills -> Crons -> Agents -> Tools"},{"t":"text","v":". Each layer is a directory of "},{"t":"code","v":".t27"},{"t":"text","v":" files in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", each has a README that states its schema, and each is rendered from those files by one generator through the compiler wasm. The ladder counts on the site are read from the generated JSON at build time; the table next to this chapter shows them for the commit the documentation was generated from."}],"type":"p"}],"sections":[{"blocks":[{"runs":[{"t":"text","v":"The base layer is the "},{"t":"code","v":".t27"},{"t":"text","v":" corpus itself: everything under "},{"t":"code","v":"specs/"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", from the language core and the numeric formats to the catalogs below. The site vendors a byte-identical copy under "},{"t":"code","v":"apps/website/public/t27/files/"},{"t":"text","v":" and compiles every file with the vendored "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":" at build time. The Spec Explorer ("},{"t":"code","v":"#/specs"},{"t":"text","v":") shows each file with its verdict; the manifest that lists them ("},{"t":"code","v":"public/t27/manifest.json"},{"t":"text","v":") is generated and never hand-edited."}],"type":"p"}],"heading":"Specs","id":"specs"},{"blocks":[{"runs":[{"t":"text","v":"A skill is a published procedure an agent can run -- a "},{"t":"code","v":"SKILL.md"},{"t":"text","v":" in one of the repositories. "},{"t":"code","v":"specs/skills/.t27"},{"t":"text","v":" declares each one (KIND, ID, NAME, REPO, SOURCE, SUMMARY_EN, COMMAND, SPECS, TAGS, ENABLED, TIMEOUT_MIN). The witness label on a skill card says how the card relates to the code: "},{"t":"code","v":"spec+code"},{"t":"text","v":" when both the spec and the "},{"t":"code","v":"SKILL.md"},{"t":"text","v":" exist, "},{"t":"code","v":"spec-only"},{"t":"text","v":" when only the spec does, "},{"t":"code","v":"code-only"},{"t":"text","v":" when a skill file has no spec yet. Skill Explorer: "},{"t":"code","v":"#/skills"},{"t":"text","v":"."}],"type":"p"}],"heading":"Skills","id":"skills"},{"blocks":[{"runs":[{"t":"text","v":"A cron is a scheduled job: a workflow schedule, a Railway timer, a daemon loop. "},{"t":"code","v":"specs/crons/.t27"},{"t":"text","v":" declares each (HOST, REPO, SERVICE, INTERVAL_MS, TZ, RUNS, RUNS_NOTE, ENABLED, NOTE, ON_FAILURE, CONTROL). "},{"t":"code","v":"RUNS"},{"t":"text","v":" lists the skill IDs a job invokes, and only where the source shows the invocation; where none is found "},{"t":"code","v":"RUNS"},{"t":"text","v":" is empty and "},{"t":"code","v":"RUNS_NOTE"},{"t":"text","v":" says so (\"no skill invocation found in source\"). The Cron Explorer ("},{"t":"code","v":"#/crons"},{"t":"text","v":") computes the next firing from "},{"t":"code","v":"INTERVAL_MS"},{"t":"text","v":" and "},{"t":"code","v":"TZ"},{"t":"text","v":". A job that runs no skill is a job the site cannot tie to the layers above; that is recorded, not hidden."}],"type":"p"}],"heading":"Crons","id":"crons"},{"blocks":[{"runs":[{"t":"text","v":"The 27 letters of the alphabet, one spec each: "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" with LETTER, ORDINAL, LETTER_NAME, NAME, DOMAIN, ARCHETYPE, REGISTER, LAYER, SUMMARY_EN, the three binding documents (SOUL, AGENTS_DOC, ALPHABET), KEY_FILES, the entry and exit invariants, CLARA_ROLE, SKILLS with SKILLS_NOTE and TOOLS with TOOLS_NOTE. An agent holds a skill or a tool only where a source line binds it -- a "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":" file, the alphabet, a phase description -- and the note cites that line or says why the list is empty. The generator fails the build on an unknown skill or tool ID and on a binding stated on one side only. Agent Explorer: "},{"t":"code","v":"#/agents"},{"t":"text","v":". The full table is the next chapter."}],"type":"p"}],"heading":"Agents","id":"agents"},{"blocks":[{"runs":[{"t":"text","v":"What an agent can call: the commands of the "},{"t":"code","v":"tri"},{"t":"text","v":" CLI and the tools of the MCP servers. "},{"t":"code","v":"specs/tools/tri/.t27"},{"t":"text","v":" is read from the clap "},{"t":"code","v":"Commands"},{"t":"text","v":" enum in "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" (one card per variant, with its nested actions and arguments); "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" from the server sources, manifests and "},{"t":"code","v":".mcp.json"},{"t":"text","v":" entries of both repositories, with the tool names, descriptions and input-schema keys. The witness on every tri card is "},{"t":"code","v":"source-parse"},{"t":"text","v":" (the enum was read at a recorded commit) until someone diffs the list against "},{"t":"code","v":"tri --help"},{"t":"text","v":" and relabels it "},{"t":"code","v":"help-output"},{"t":"text","v":". Servers whose code is a published package outside the repositories carry "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":". Tool Explorer: "},{"t":"code","v":"#/tools"},{"t":"text","v":"."}],"type":"p"}],"heading":"Tools","id":"tools"},{"blocks":[{"runs":[{"t":"text","v":"One generator, "},{"t":"code","v":"scripts/agents-from-specs.mjs"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", reads the vendored "},{"t":"code","v":".t27"},{"t":"text","v":" files, compiles each through the wasm, reads the constants of the compiled module, checks them against the schema of the layer, resolves every cross-reference (skill IDs in crons and agents, tool IDs in agents, agent letters in tools, spec paths in skills), and writes one JSON per layer under "},{"t":"code","v":"public/"},{"t":"text","v":". It runs in "},{"t":"code","v":"prebuild"},{"t":"text","v":", so a spec that does not compile or a reference that does not resolve stops the site from building. No "},{"t":"code","v":".t27"},{"t":"text","v":" is parsed with a regular expression anywhere in that path."}],"type":"p"},{"runs":[{"t":"text","v":"Translations follow the same rule. "},{"t":"code","v":"specs/i18n/-.t27"},{"t":"text","v":" declares which fields of which specs a bundle may translate and where the bundle lives; the bundle ("},{"t":"code","v":"apps/website/i18n/*.json"},{"t":"text","v":") carries the text; the generator checks that every bundle entry names an existing spec and reports coverage. The specs stay English-only."}],"type":"p"}],"heading":"From spec to site","id":"from-spec-to-site"},{"blocks":[{"runs":[{"t":"text","v":"Agents log what happened under "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" in each repository: episodes as JSON, notes as Markdown. "},{"t":"code","v":"scripts/sync-agents-experience.mjs"},{"t":"text","v":" reads both trees at their current commit and writes "},{"t":"code","v":"public/agents/experience.json"},{"t":"text","v":" with counts per repository and, where an episode names an agent letter, the attribution. At the commit this documentation was generated from no episode is attributed to any letter -- the field the sync looks for is absent from every episode -- and the agent cards say so. The snapshot records the commit of each tree, not the path of the checkout."}],"type":"p"}],"heading":"Experience","id":"experience"}],"title":"The five-layer system"},"ru":{"lead":[{"runs":[{"t":"text","v":"Сайт упорядочивает то, что поставляют репозитории, в пять слоёв и показывает одну и ту же лестницу в заголовке каждого обозревателя: "},{"t":"strong","v":"Specs -> Skills -> Crons -> Agents -> Tools"},{"t":"text","v":". Каждый слой -- каталог файлов "},{"t":"code","v":".t27"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", у каждого есть README со схемой, и каждый отображается из этих файлов одним генератором через wasm компилятора. Счётчики лестницы на сайте читаются из порождённого JSON при сборке; таблица рядом с этой главой показывает их для коммита, на котором порождена документация."}],"type":"p"}],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Базовый слой -- сам корпус "},{"t":"code","v":".t27"},{"t":"text","v":": всё под "},{"t":"code","v":"specs/"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":", от ядра языка и численных форматов до каталогов ниже. Сайт хранит побайтово идентичную вендорную копию под "},{"t":"code","v":"apps/website/public/t27/files/"},{"t":"text","v":" и компилирует каждый файл вендорным "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":" при сборке. Обозреватель спецификаций ("},{"t":"code","v":"#/specs"},{"t":"text","v":") показывает каждый файл с его вердиктом; перечисляющий их манифест ("},{"t":"code","v":"public/t27/manifest.json"},{"t":"text","v":") порождается и никогда не правится вручную."}],"type":"p"}],"heading":"Спецификации","id":"спецификации"},{"blocks":[{"runs":[{"t":"text","v":"Навык -- опубликованная процедура, которую может выполнить агент: "},{"t":"code","v":"SKILL.md"},{"t":"text","v":" в одном из репозиториев. "},{"t":"code","v":"specs/skills/.t27"},{"t":"text","v":" объявляет каждый (KIND, ID, NAME, REPO, SOURCE, SUMMARY_EN, COMMAND, SPECS, TAGS, ENABLED, TIMEOUT_MIN). Метка свидетеля на карточке навыка говорит, как карточка соотносится с кодом: "},{"t":"code","v":"spec+code"},{"t":"text","v":", когда есть и спецификация, и "},{"t":"code","v":"SKILL.md"},{"t":"text","v":"; "},{"t":"code","v":"spec-only"},{"t":"text","v":", когда есть только спецификация; "},{"t":"code","v":"code-only"},{"t":"text","v":", когда у файла навыка ещё нет спецификации. Обозреватель навыков: "},{"t":"code","v":"#/skills"},{"t":"text","v":"."}],"type":"p"}],"heading":"Навыки","id":"навыки"},{"blocks":[{"runs":[{"t":"text","v":"Расписание -- запланированное задание: расписание workflow, таймер Railway, цикл демона. "},{"t":"code","v":"specs/crons/.t27"},{"t":"text","v":" объявляет каждое (HOST, REPO, SERVICE, INTERVAL_MS, TZ, RUNS, RUNS_NOTE, ENABLED, NOTE, ON_FAILURE, CONTROL). "},{"t":"code","v":"RUNS"},{"t":"text","v":" перечисляет ID навыков, которые запускает задание, и только там, где источник показывает вызов; где вызова не найдено, "},{"t":"code","v":"RUNS"},{"t":"text","v":" пуст, а "},{"t":"code","v":"RUNS_NOTE"},{"t":"text","v":" говорит об этом (\"no skill invocation found in source\"). Обозреватель расписаний ("},{"t":"code","v":"#/crons"},{"t":"text","v":") вычисляет следующий запуск по "},{"t":"code","v":"INTERVAL_MS"},{"t":"text","v":" и "},{"t":"code","v":"TZ"},{"t":"text","v":". Задание, не запускающее навык, -- это задание, которое сайт не может связать со слоями выше; это записывается, а не скрывается."}],"type":"p"}],"heading":"Расписания","id":"расписания"},{"blocks":[{"runs":[{"t":"text","v":"27 букв алфавита, по одной спецификации на каждую: "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" с LETTER, ORDINAL, LETTER_NAME, NAME, DOMAIN, ARCHETYPE, REGISTER, LAYER, SUMMARY_EN, тремя связывающими документами (SOUL, AGENTS_DOC, ALPHABET), KEY_FILES, входным и выходным инвариантами, CLARA_ROLE, SKILLS с SKILLS_NOTE и TOOLS с TOOLS_NOTE. Агент держит навык или инструмент только там, где его связывает строка источника -- файл "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":", алфавит, описание фазы, -- и примечание цитирует эту строку или объясняет, почему список пуст. Генератор роняет сборку на неизвестном ID навыка или инструмента и на связи, заявленной лишь с одной стороны. Обозреватель агентов: "},{"t":"code","v":"#/agents"},{"t":"text","v":". Полная таблица -- в следующей главе."}],"type":"p"}],"heading":"Агенты","id":"агенты"},{"blocks":[{"runs":[{"t":"text","v":"То, что агент может вызвать: команды CLI "},{"t":"code","v":"tri"},{"t":"text","v":" и инструменты серверов MCP. "},{"t":"code","v":"specs/tools/tri/.t27"},{"t":"text","v":" читается из clap-перечисления "},{"t":"code","v":"Commands"},{"t":"text","v":" в "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" (по карточке на вариант, с вложенными действиями и аргументами); "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" -- из исходников серверов, манифестов и записей "},{"t":"code","v":".mcp.json"},{"t":"text","v":" обоих репозиториев, с именами инструментов, описаниями и ключами входных схем. Свидетель на карточке tri -- "},{"t":"code","v":"source-parse"},{"t":"text","v":" (перечисление прочитано на записанном коммите), пока кто-нибудь не сравнит список с "},{"t":"code","v":"tri --help"},{"t":"text","v":" и не переименует его в "},{"t":"code","v":"help-output"},{"t":"text","v":". Серверы, чей код -- опубликованный пакет вне репозиториев, несут "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":". Обозреватель инструментов: "},{"t":"code","v":"#/tools"},{"t":"text","v":"."}],"type":"p"}],"heading":"Инструменты","id":"инструменты"},{"blocks":[{"runs":[{"t":"text","v":"Один генератор, "},{"t":"code","v":"scripts/agents-from-specs.mjs"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", читает вендорные файлы "},{"t":"code","v":".t27"},{"t":"text","v":", компилирует каждый через wasm, читает константы скомпилированного модуля, сверяет их со схемой слоя, разрешает каждую перекрёстную ссылку (ID навыков в расписаниях и агентах, ID инструментов в агентах, буквы агентов в инструментах, пути спецификаций в навыках) и пишет по одному JSON на слой под "},{"t":"code","v":"public/"},{"t":"text","v":". Он выполняется в "},{"t":"code","v":"prebuild"},{"t":"text","v":", поэтому спецификация, которая не компилируется, или ссылка, которая не разрешается, останавливает сборку сайта. Ни один "},{"t":"code","v":".t27"},{"t":"text","v":" на этом пути не разбирается регулярным выражением."}],"type":"p"},{"runs":[{"t":"text","v":"Переводы следуют тому же правилу. "},{"t":"code","v":"specs/i18n/-.t27"},{"t":"text","v":" объявляет, какие поля каких спецификаций бандл может переводить и где бандл лежит; бандл ("},{"t":"code","v":"apps/website/i18n/*.json"},{"t":"text","v":") несёт текст; генератор проверяет, что каждая запись бандла называет существующую спецификацию, и сообщает покрытие. Спецификации остаются только английскими."}],"type":"p"}],"heading":"От спецификации к сайту","id":"от-спецификации-к-сайту"},{"blocks":[{"runs":[{"t":"text","v":"Агенты записывают, что произошло, под "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" в каждом репозитории: эпизоды как JSON, заметки как Markdown. "},{"t":"code","v":"scripts/sync-agents-experience.mjs"},{"t":"text","v":" читает оба дерева на их текущем коммите и пишет "},{"t":"code","v":"public/agents/experience.json"},{"t":"text","v":" со счётчиками по репозиториям и, где эпизод называет букву агента, с атрибуцией. На коммите, на котором порождена документация, ни один эпизод не отнесён ни к одной букве -- поле, которое ищет синхронизация, отсутствует в каждом эпизоде, -- и карточки агентов говорят об этом. Снимок записывает коммит каждого дерева, а не путь чекаута."}],"type":"p"}],"heading":"Опыт","id":"опыт"}]}},"bodyPath":"docs/system/layers.md","bodySha256":"1c5e26427ae7992c2461e55e4bd2a9e6ee928c57a7330c08becf7afc3a164e9f","diagram":"skills-crons-agents","discarded":0,"enabled":true,"id":"docs/layers","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/layers.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/layers.t27"},"moduleName":"docs_chapter_layers","order":3,"sections":[{"heading":{"en":"Specs","ru":"Спецификации"},"id":"specs"},{"heading":{"en":"Skills","ru":"Навыки"},"id":"skills"},{"heading":{"en":"Crons","ru":"Расписания"},"id":"crons"},{"heading":{"en":"Agents","ru":"Агенты"},"id":"agents"},{"heading":{"en":"Tools","ru":"Инструменты"},"id":"tools"},{"heading":{"en":"From spec to site","ru":"От спецификации к сайту"},"id":"from-spec-to-site"},{"heading":{"en":"Experience","ru":"Опыт"},"id":"experience"}],"sha256":"bd04ddfca63bd0aa7d44a891620563e6c6f17481a536dfcd864878312e939083","sources":[{"kind":"file","path":"specs/skills/README.md","rel":"specs/skills/README.md","repo":"t27","sha256":"ac23eb8d74832014efaf5e65f3da070d999549724e01242cb8784a93ad43d360","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/skills/README.md","where":"vendored"},{"kind":"file","path":"specs/crons/README.md","rel":"specs/crons/README.md","repo":"t27","sha256":"4c442342670a5e12ebb54792059f60f9fae56c4a62b277fb7803885cad1b350b","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/crons/README.md","where":"vendored"},{"kind":"file","path":"specs/agents/README.md","rel":"specs/agents/README.md","repo":"t27","sha256":"c40833dbc9f271cc92f1e9a848324446429fed52954b53f80c3670bc9da78996","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/README.md","where":"vendored"},{"kind":"file","path":"specs/tools/README.md","rel":"specs/tools/README.md","repo":"t27","sha256":"37b5a451e43de9bc5746ceb80d4cf24f19ea6c3ad8751d2447049cba39c8a0ab","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/README.md","where":"vendored"},{"kind":"file","path":"specs/i18n/agents-ru.t27","rel":"specs/i18n/agents-ru.t27","repo":"t27","sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/i18n/agents-ru.t27","where":"vendored"}],"specPath":"specs/docs/chapters/layers.t27","stem":"layers","table":{"columns":["layer","dir","count","typecheckOk","source"],"kind":"ladder-counts","note":"","rows":[{"count":1407,"dir":"specs/**","layer":"Specs","source":"public/t27/manifest.json","typecheckOk":null},{"count":26,"dir":"specs/skills","layer":"Skills","source":"public/skills/spec-skills.json","typecheckOk":26},{"count":33,"dir":"specs/crons","layer":"Crons","source":"public/crons/spec-crons.json","typecheckOk":33},{"count":27,"dir":"specs/agents","layer":"Agents","source":"public/agents/spec-agents.json","typecheckOk":27},{"count":92,"dir":"specs/tools/{tri,mcp}","layer":"Tools","source":"public/tools/spec-tools.json","typecheckOk":92},{"count":28,"dir":"specs/functions","layer":"Functions","source":"public/functions/spec-functions.json","typecheckOk":28}],"source":"the five catalog JSON files and public/t27/manifest.json"},"title":{"en":"The five-layer system","ru":"Пятислойная система"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" (v3.0, 2026-04-07) is the canon: \"The Trinity system employs 27 named agents -- corresponding to the 27 registers in "},{"t":"code","v":"isa/registers.t27"},{"t":"text","v":" (Coptic / Trinity alphabet).\" Each agent is bound to a letter and a register, has a domain (physics, numeric, compiler, graph, experience, verdict, bench, DePIN, UI and so on), logs to "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" and is linked to nodes in "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"The alphabet is read in three layers of nine, which the document also calls nonas:"}],"type":"p"},{"items":[[{"t":"strong","v":"Archetypal, A-I (1-9)"},{"t":"text","v":" -- \"pure concept -- foundation: soul, base, types\". A is the architecture and "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" as primary cause; C the compiler; E the experience; I the ISA."}],[{"t":"strong","v":"Spiritual, J-R (10-18)"},{"t":"text","v":" -- \"inner process -- life of the system: tasks, language, numbers, physics\". L is the language; M the metrics; N the numeric formats; P the physics constants; Q the queue."}],[{"t":"strong","v":"Physical, S-27th (19-27)"},{"t":"text","v":" -- \"manifestation -- proof: standards, verdict, deploy, gift\". S is the specs; T the Queen, who \"puts the final seal on everything\"; V the verdict; W the workflow and tri cell (\"double hash-seal\"); Z the zero-touch UX and docs; the 27th letter, Ti, is security."}]],"type":"ul"},{"runs":[{"t":"text","v":"The same three-by-nine layout organises the documentation tree of the repository ("},{"t":"code","v":"docs/nona-01-foundation/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-02-organism/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-03-manifest/"},{"t":"text","v":", Article DOCS-TREE of the constitution) and the ring on the site next to this chapter, where each letter sits at its ordinal and is coloured by its layer."}],"type":"p"}],"heading":"Twenty-seven letters, three nonas","id":"twenty-seven-letters-three-nonas"},{"blocks":[{"runs":[{"t":"text","v":"The table the site renders next to this chapter is generated from "},{"t":"code","v":"public/agents/spec-agents.json"},{"t":"text","v":", which is itself generated from the 27 files "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" through the compiler wasm -- it is not typed here. Per letter it shows the ordinal, the letter name, the domain, the archetype, the register, the layer, and the skills and tools the agent holds with their evidence. The FULL TABLE of the alphabet document (letter, domain, archetype, key files, entry invariant, exit invariant, CLARA role) is the source each spec was transcribed from; the spec's header names the row."}],"type":"p"},{"runs":[{"t":"text","v":"Two conventions of the table are worth stating. A letter's register comes from the schema section of the alphabet document (for example T is R19, V is R21, W is R22); the ordinal is the position in the alphabet, 1..27, so T is 20 and the 27th letter is 27. Where the alphabet document names two agents with the same Greek letter name (C and G are both written \"Gamma\"), the spec keeps the document's spelling and the ID stays unambiguous because it is the Latin letter, "},{"t":"code","v":"t27/C"},{"t":"text","v":" and "},{"t":"code","v":"t27/G"},{"t":"text","v":"."}],"type":"p"}],"heading":"The table","id":"the-table"},{"blocks":[{"runs":[{"t":"text","v":"Beyond the alphabet row, an agent card on the site carries what the other layers say about the letter:"}],"type":"p"},{"items":[[{"t":"strong","v":"Skills"},{"t":"text","v":" -- IDs from "},{"t":"code","v":"specs/skills"},{"t":"text","v":" the agent holds, bound only where a source names the skill. At the commit this documentation was generated from one letter holds skills: T, from "},{"t":"code","v":".claude/agents/trinity.md"},{"t":"text","v":", which names "},{"t":"code","v":"phi-loop"},{"t":"text","v":" and "},{"t":"code","v":"tri-pipeline"},{"t":"text","v":" in its Phase 2 and Phase 4. The other 26 carry an empty list and a note saying which sources were read."}],[{"t":"strong","v":"Tools"},{"t":"text","v":" -- IDs from "},{"t":"code","v":"specs/tools"},{"t":"text","v":" the agent holds, bound in both directions (the tool spec names the letter back). Five commands are bound today: "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W); the sources are the phase descriptions of the alphabet document and the "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":" files."}],[{"t":"strong","v":"Crons"},{"t":"text","v":" -- jobs whose "},{"t":"code","v":"RUNS"},{"t":"text","v":" names a skill the agent holds; empty while every "},{"t":"code","v":"RUNS"},{"t":"text","v":" is empty."}],[{"t":"strong","v":"Experience"},{"t":"text","v":" -- episodes attributed to the letter in "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":"; none is attributed today, and the card says so rather than showing a number it cannot source."}],[{"t":"strong","v":"Sources"},{"t":"text","v":" -- the three binding documents ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", the alphabet) at the pinned commit, and the spec file itself."}]],"type":"ul"}],"heading":"What a card carries","id":"what-a-card-carries"}],"title":"The 27-agent alphabet"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" (v3.0, 2026-04-07) -- канон: \"The Trinity system employs 27 named agents -- corresponding to the 27 registers in "},{"t":"code","v":"isa/registers.t27"},{"t":"text","v":" (Coptic / Trinity alphabet).\" Каждый агент привязан к букве и регистру, имеет область (физика, численные форматы, компилятор, граф, опыт, вердикт, бенчмарки, DePIN, UI и так далее), пишет в "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" и связан с узлами "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"Алфавит читается тремя слоями по девять, которые документ также называет нонами:"}],"type":"p"},{"items":[[{"t":"strong","v":"Архетипический, A-I (1-9)"},{"t":"text","v":" -- \"pure concept -- foundation: soul, base, types\". A -- архитектура и "},{"t":"code","v":"SOUL.md"},{"t":"text","v":" как первопричина; C -- компилятор; E -- опыт; I -- ISA."}],[{"t":"strong","v":"Духовный, J-R (10-18)"},{"t":"text","v":" -- \"inner process -- life of the system: tasks, language, numbers, physics\". L -- язык; M -- метрики; N -- численные форматы; P -- физические константы; Q -- очередь."}],[{"t":"strong","v":"Физический, S-27th (19-27)"},{"t":"text","v":" -- \"manifestation -- proof: standards, verdict, deploy, gift\". S -- спецификации; T -- Королева, которая \"puts the final seal on everything\"; V -- вердикт; W -- рабочий процесс и tri cell (\"double hash-seal\"); Z -- zero-touch UX и документация; 27-я буква, Ti, -- безопасность."}]],"type":"ul"},{"runs":[{"t":"text","v":"Та же раскладка три на девять организует дерево документации репозитория ("},{"t":"code","v":"docs/nona-01-foundation/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-02-organism/"},{"t":"text","v":", "},{"t":"code","v":"docs/nona-03-manifest/"},{"t":"text","v":", статья DOCS-TREE конституции) и кольцо на сайте рядом с этой главой, где каждая буква стоит на своём порядковом номере и окрашена по слою."}],"type":"p"}],"heading":"Двадцать семь букв, три ноны","id":"двадцать-семь-букв-три-ноны"},{"blocks":[{"runs":[{"t":"text","v":"Таблица, которую сайт выводит рядом с этой главой, порождается из "},{"t":"code","v":"public/agents/spec-agents.json"},{"t":"text","v":", который сам порождён из 27 файлов "},{"t":"code","v":"specs/agents/.t27"},{"t":"text","v":" через wasm компилятора, -- она не набрана здесь. По каждой букве показаны порядковый номер, имя буквы, область, архетип, регистр, слой и навыки и инструменты, которые агент держит, с их свидетельствами. FULL TABLE документа алфавита (буква, область, архетип, ключевые файлы, входной инвариант, выходной инвариант, роль CLARA) -- источник, из которого перенесена каждая спецификация; заголовок спецификации называет строку."}],"type":"p"},{"runs":[{"t":"text","v":"Две условности таблицы стоит назвать. Регистр буквы берётся из раздела схемы документа алфавита (например, T -- R19, V -- R21, W -- R22); порядковый номер -- позиция в алфавите, 1..27, так что T -- 20, а 27-я буква -- 27. Где документ алфавита называет двух агентов одним греческим именем (C и G оба записаны как \"Gamma\"), спецификация сохраняет написание документа, а ID остаётся однозначным, потому что это латинская буква: "},{"t":"code","v":"t27/C"},{"t":"text","v":" и "},{"t":"code","v":"t27/G"},{"t":"text","v":"."}],"type":"p"}],"heading":"Таблица","id":"таблица"},{"blocks":[{"runs":[{"t":"text","v":"Помимо строки алфавита, карточка агента на сайте несёт то, что говорят о букве другие слои:"}],"type":"p"},{"items":[[{"t":"strong","v":"Навыки"},{"t":"text","v":" -- ID из "},{"t":"code","v":"specs/skills"},{"t":"text","v":", которые агент держит, связанные только там, где источник называет навык. На коммите, на котором порождена документация, навыки держит одна буква: T, из "},{"t":"code","v":".claude/agents/trinity.md"},{"t":"text","v":", который называет "},{"t":"code","v":"phi-loop"},{"t":"text","v":" и "},{"t":"code","v":"tri-pipeline"},{"t":"text","v":" в своих фазах 2 и 4. Остальные 26 несут пустой список и примечание о том, какие источники были прочитаны."}],[{"t":"strong","v":"Инструменты"},{"t":"text","v":" -- ID из "},{"t":"code","v":"specs/tools"},{"t":"text","v":", которые агент держит, связанные в обе стороны (спецификация инструмента называет букву в ответ). Сегодня связаны пять команд: "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W); источники -- описания фаз документа алфавита и файлы "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":"."}],[{"t":"strong","v":"Расписания"},{"t":"text","v":" -- задания, чей "},{"t":"code","v":"RUNS"},{"t":"text","v":" называет навык, который агент держит; пусто, пока каждый "},{"t":"code","v":"RUNS"},{"t":"text","v":" пуст."}],[{"t":"strong","v":"Опыт"},{"t":"text","v":" -- эпизоды, отнесённые к букве в "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":"; сегодня не отнесён ни один, и карточка говорит об этом, а не показывает число без источника."}],[{"t":"strong","v":"Источники"},{"t":"text","v":" -- три связывающих документа ("},{"t":"code","v":"SOUL.md"},{"t":"text","v":", "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":", алфавит) на закреплённом коммите и сам файл спецификации."}]],"type":"ul"}],"heading":"Что несёт карточка","id":"что-несёт-карточка"}]}},"bodyPath":"docs/system/alphabet.md","bodySha256":"a057cf483f6fccd642ff41bc56a22c8f214204494a0a17918a4e2a4dc1329af6","diagram":"agent-ring","discarded":0,"enabled":true,"id":"docs/alphabet","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/alphabet.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/alphabet.t27"},"moduleName":"docs_chapter_alphabet","order":4,"sections":[{"heading":{"en":"Twenty-seven letters, three nonas","ru":"Двадцать семь букв, три ноны"},"id":"twenty-seven-letters-three-nonas"},{"heading":{"en":"The table","ru":"Таблица"},"id":"the-table"},{"heading":{"en":"What a card carries","ru":"Что несёт карточка"},"id":"what-a-card-carries"}],"sha256":"d3be190095b4141b094dd75baaf76f725478eb18f8709f08fa600055ab3d782f","sources":[{"kind":"file","path":"docs/agents/AGENTS_ALPHABET.md","rel":"docs/agents/AGENTS_ALPHABET.md","repo":"t27","sha256":"c99352b305322031ee8af0c4777ae54c52ef50c694ff2aa0f4d95ab2fa82734a","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","where":"vendored"},{"kind":"file","path":"specs/agents/README.md","rel":"specs/agents/README.md","repo":"t27","sha256":"c40833dbc9f271cc92f1e9a848324446429fed52954b53f80c3670bc9da78996","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/README.md","where":"vendored"}],"specPath":"specs/docs/chapters/alphabet.t27","stem":"alphabet","table":{"columns":["letter","ordinal","letterName","domain","archetype","register","layer","skills","tools"],"kind":"agents","note":"","rows":[{"archetype":"Bull - leader, primary force","domain":"Architecture / ADR / SOUL","enabled":true,"episodes":0,"layer":"Archetypal","letter":"A","letterName":"Alpha","name":"Alpha (Architecture)","ordinal":1,"register":"R0","skills":[],"tools":[]},{"archetype":"House - container, dwelling","domain":"Build / Pipeline","enabled":true,"episodes":0,"layer":"Archetypal","letter":"B","letterName":"Beta","name":"Beta (Build)","ordinal":2,"register":"R1","skills":[],"tools":[]},{"archetype":"Camel - carrier across borders","domain":"Compiler Core / AR Language","enabled":true,"episodes":0,"layer":"Archetypal","letter":"C","letterName":"Gamma","name":"Gamma (Compiler Core)","ordinal":3,"register":"R2","skills":[],"tools":["tri/gen"]},{"archetype":"Door - transition between worlds","domain":"De-Zigfication / Migration","enabled":true,"episodes":0,"layer":"Archetypal","letter":"D","letterName":"Delta","name":"Delta (De-Zigfication)","ordinal":4,"register":"R3","skills":[],"tools":[]},{"archetype":"Window - view into the past","domain":"Experience / XAI","enabled":true,"episodes":0,"layer":"Archetypal","letter":"E","letterName":"Epsilon","name":"Epsilon (Experience)","ordinal":5,"register":"R4","skills":[],"tools":["tri/experience"]},{"archetype":"Nail - connection, binding","domain":"Formal Conformance","enabled":true,"episodes":0,"layer":"Archetypal","letter":"F","letterName":"Phi","name":"Phi (Formal Conformance)","ordinal":6,"register":"R5","skills":[],"tools":[]},{"archetype":"Return - feedback","domain":"Graph / ArchBench","enabled":true,"episodes":0,"layer":"Archetypal","letter":"G","letterName":"Gamma (var.)","name":"Gamma (Graph)","ordinal":7,"register":"R6","skills":[],"tools":[]},{"archetype":"Fence - boundary, life","domain":"HSLM / NN Architectures","enabled":true,"episodes":0,"layer":"Archetypal","letter":"H","letterName":"Eta","name":"Eta (HSLM)","ordinal":8,"register":"R7","skills":[],"tools":[]},{"archetype":"Hand - action, point","domain":"ISA / Registers","enabled":true,"episodes":0,"layer":"Archetypal","letter":"I","letterName":"Iota","name":"Iota (ISA)","ordinal":9,"register":"R8","skills":[],"tools":[]},{"archetype":"Hand with grip - dispatcher","domain":"Jobs / Task Routing","enabled":true,"episodes":0,"layer":"Spiritual","letter":"J","letterName":"Iota-extended","name":"Iota-extended (Jobs)","ordinal":10,"register":"R9","skills":[],"tools":[]},{"archetype":"Palm - open hand","domain":"Kernel / FPGA MAC","enabled":true,"episodes":0,"layer":"Spiritual","letter":"K","letterName":"Kappa","name":"Kappa (Kernel)","ordinal":11,"register":"R10","skills":[],"tools":[]},{"archetype":"Staff - teacher, guide","domain":"Language / Syntax vNEXT","enabled":true,"episodes":0,"layer":"Spiritual","letter":"L","letterName":"Lambda","name":"Lambda (Language)","ordinal":12,"register":"R11","skills":[],"tools":[]},{"archetype":"Water - flow of data","domain":"Metrics / Telemetry","enabled":true,"episodes":0,"layer":"Spiritual","letter":"M","letterName":"Mu","name":"Mu (Metrics)","ordinal":13,"register":"R12","skills":[],"tools":[]},{"archetype":"Fish - offspring, multiplication","domain":"Numeric / GoldenFloat","enabled":true,"episodes":0,"layer":"Spiritual","letter":"N","letterName":"Nu","name":"Nu (Numeric)","ordinal":14,"register":"R13","skills":[],"tools":[]},{"archetype":"Eye - all-seeing oko","domain":"Orchestration / Phases","enabled":true,"episodes":0,"layer":"Spiritual","letter":"O","letterName":"Omicron","name":"Omicron (Orchestration)","ordinal":15,"register":"R14","skills":[],"tools":[]},{"archetype":"Mouth - speech of universe","domain":"Physics / SacredPhysics","enabled":true,"episodes":0,"layer":"Spiritual","letter":"P","letterName":"Pi","name":"Pi (Physics)","ordinal":16,"register":"R15","skills":[],"tools":[]},{"archetype":"Needle's eye - bottleneck","domain":"Queue / Scheduling","enabled":true,"episodes":0,"layer":"Spiritual","letter":"Q","letterName":"Theta","name":"Theta (Queue)","ordinal":17,"register":"R16","skills":[],"tools":[]},{"archetype":"Head - beginning of execution","domain":"Runtime / Bootstrap","enabled":true,"episodes":0,"layer":"Spiritual","letter":"R","letterName":"Rho","name":"Rho (Runtime)","ordinal":18,"register":"R17","skills":[],"tools":[]},{"archetype":"Teeth - sharpness, flame","domain":"Specs / Standardization / AR Specs","enabled":true,"episodes":0,"layer":"Physical","letter":"S","letterName":"Sigma","name":"Sigma (Specs)","ordinal":19,"register":"R18","skills":[],"tools":[]},{"archetype":"CROSS - seal, signature, truth","domain":"Queen / Lotus Orchestrator","enabled":true,"episodes":0,"layer":"Physical","letter":"T","letterName":"Tau","name":"Tau (TRINITY Queen)","ordinal":20,"register":"R19","skills":["t27/phi-loop","t27/tri-pipeline"],"tools":["tri/gen","tri/test","mcp/inngest-dev"]},{"archetype":"Fork - branching","domain":"Universe Levels / Domains","enabled":true,"episodes":0,"layer":"Physical","letter":"U","letterName":"Upsilon","name":"Upsilon (Universe)","ordinal":21,"register":"R20","skills":[],"tools":[]},{"archetype":"Hook - connection, conjunction","domain":"Verdict / Bench / AR Validation","enabled":true,"episodes":0,"layer":"Physical","letter":"V","letterName":"Vau (var.)","name":"Vau (Verdict)","ordinal":22,"register":"R21","skills":[],"tools":["tri/test","tri/verdict"]},{"archetype":"Double hook - double seal","domain":"Workflow / tri cell","enabled":true,"episodes":0,"layer":"Physical","letter":"W","letterName":"Double-Vav","name":"Double-Vav (Workflow)","ordinal":23,"register":"R22","skills":[],"tools":["tri/cell"]},{"archetype":"Intersection - point of exchange","domain":"External Bindings / Interop","enabled":true,"episodes":0,"layer":"Physical","letter":"X","letterName":"Chi","name":"Chi (External)","ordinal":24,"register":"R23","skills":[],"tools":[]},{"archetype":"Merging paths - evolutionary selection","domain":"Yield / DePIN / Fitness","enabled":true,"episodes":0,"layer":"Physical","letter":"Y","letterName":"Psi","name":"Psi (Yield/DePIN)","ordinal":25,"register":"R24","skills":[],"tools":[]},{"archetype":"Sword - cutting edge, point","domain":"Zero-Touch UX / Docs","enabled":true,"episodes":0,"layer":"Physical","letter":"Z","letterName":"Zeta","name":"Zeta (Zero-Touch)","ordinal":26,"register":"R25","skills":[],"tools":[]},{"archetype":"Egyptian cross - \"sacred gift\"","domain":"Security / Reserve","enabled":false,"episodes":0,"layer":"Physical","letter":"TI","letterName":"Ti","name":"Ti (Security)","ordinal":27,"register":"R26","skills":[],"tools":[]}],"source":"public/agents/spec-agents.json"},"title":{"en":"The 27-agent alphabet","ru":"Алфавит из 27 агентов"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Agent T, the Queen, is the central orchestrator: \"reads "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" and knows all module dependencies\", \"conducts 26 sub-agents (A..Z, except T) by their domains\", gathers results, validates architecture invariants and enforces that the source of truth is in "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":" with Zig, Verilog and C only as backends ("},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":", section \"AGENT T -- QUEEN TRINITY\", Responsibilities). Her module is "},{"t":"code","v":"specs/queen/lotus.t27"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"The alphabet document draws the cycle she runs as six phases and a seventh added by the SOUL law on git. The site renders the cycle from that document; in short:"}],"type":"p"},{"items":[[{"t":"strong","v":"PLAN"},{"t":"text","v":" -- analyse the task and select a strategy; read "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" for impact; decide which agents participate; check "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" for similar tasks."}],[{"t":"strong","v":"ASSIGN"},{"t":"text","v":" -- distribute tasks to agents by domain (A architecture, N numeric, P physics, F conformance, ...); set dependencies; create a tri cell for each agent (W seals)."}],[{"t":"strong","v":"RUN"},{"t":"text","v":" -- parallel execution; heartbeats; agents report to "},{"t":"code","v":".trinity/agent_events.jsonl"},{"t":"text","v":"; T redistributes if necessary."}],[{"t":"strong","v":"TEST & BENCH"},{"t":"text","v":" -- F checks conformance vectors, V runs benchmarks, G measures impact changes; metrics are collected in M for V's verdict."}],[{"t":"strong","v":"VERDICT"},{"t":"text","v":" -- V analyses the metrics; "},{"t":"code","v":"tri verdict --toxic"},{"t":"text","v":" asks whether the change is toxic; E records the experience; if toxic, Q blocks the task."}],[{"t":"strong","v":"EVOLVE"},{"t":"text","v":" -- update "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" if dependencies changed; update experience in E and M; S updates standards; W seals the tri-cell commit; Z updates documentation; T puts the final TAW seal."}],[{"t":"strong","v":"GIT WORKFLOW"},{"t":"text","v":" (\"new -- SOUL law\") -- commit with "},{"t":"code","v":"--all"},{"t":"text","v":" and the message "},{"t":"code","v":"cell:{id} issue:{N} ..."},{"t":"text","v":", then push "},{"t":"code","v":"HEAD"},{"t":"text","v":" to origin in strict mode; checks: sealed cell, non-toxic verdict, artifacts; the registry records the commit hash and the pushed flag. The alphabet writes both steps as a "},{"t":"code","v":"git"},{"t":"text","v":" subcommand of tri; the current clap surface does not expose one (witness: "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" has no such variant), so they are quoted here as steps, not as commands to copy."}]],"type":"ol"},{"runs":[{"t":"text","v":"The document's SOUL law for TDD follows the seventh phase: any P0/P1 episode in "},{"t":"code","v":"--strict"},{"t":"text","v":" mode is considered COMPLETE only after a successful push to "},{"t":"code","v":"github.com/gHashTag/t27"},{"t":"text","v":" with bound sealed-cell and non-toxic verdict (the law names the push as a tri subcommand; see the note on the seventh phase above). Where an agent letter appears in a phase description, the tools chapter and the agent cards use that line as the source of a binding ("},{"t":"code","v":"tri cell"},{"t":"text","v":" to W, "},{"t":"code","v":"tri verdict"},{"t":"text","v":" to V)."}],"type":"p"}],"heading":"The six-phase cycle and Phase 7","id":"the-six-phase-cycle-and-phase-7"},{"blocks":[{"runs":[{"t":"text","v":"Three steps carry the cycle's state; two of them are tri commands with a spec under "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":" read from the clap enum of "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":":"}],"type":"p"},{"items":[[{"t":"strong","v":"`tri cell`"},{"t":"text","v":" -- the unit of work of one agent: created in ASSIGN, sealed by W with a hash in EVOLVE. Nested actions are listed on the tool card ("},{"t":"code","v":"specs/tools/tri/cell.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"`tri verdict`"},{"t":"text","v":" -- V's decision over the metrics; "},{"t":"code","v":"--toxic"},{"t":"text","v":" is the question the cycle asks in VERDICT ("},{"t":"code","v":"specs/tools/tri/verdict.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"the git step"},{"t":"text","v":" -- the seventh phase as the alphabet document writes it, as a "},{"t":"code","v":"git"},{"t":"text","v":" subcommand of tri. At the commit this documentation was generated from the clap enum of "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" has no such variant, so the tool catalog has no card for it; the phase is documented from the alphabet and marked "},{"t":"code","v":"[declared]"},{"t":"text","v":", and the gap is recorded here rather than filled with a card."}]],"type":"ul"},{"runs":[{"t":"text","v":"The seal itself is a hash. At the compiler level the same idea is the seal of the bootstrap compiler ("},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":", "},{"t":"code","v":"CANON.md"},{"t":"text","v":" section 0) and the ring canon: a ring freezes when its hash is recorded, and drift between the recorded seal and the working tree is a fact the dashboard shows."}],"type":"p"}],"heading":"Cell, seal, verdict","id":"cell-seal-verdict"},{"blocks":[{"runs":[{"t":"text","v":"The repository states the Queen's loop twice, and the two statements differ. The alphabet document gives the seven phases above (PLAN, ASSIGN, RUN, TEST & BENCH, VERDICT, EVOLVE, GIT WORKFLOW). "},{"t":"code","v":"CLAUDE.md"},{"t":"text","v":", \"Autonomous Execution Loop (AEL v2.0)\", gives a six-phase loop for an agent operating as the Queen -- OBSERVE (E), PLAN (T), DELEGATE (C/V), VERIFY (V), SYNTHESIZE (L), LEARN (L) -- and, separately, the nine-phase PHI LOOP for ring-based development (Issue, Spec, TDD, Code, Gen, Seal, Verify, Land, Learn)."}],"type":"p"},{"runs":[{"t":"text","v":"This documentation renders the alphabet's cycle, because it is the one that names the tri commands and the agent letters per phase, and records the AEL loop as the second statement without reconciling them. Which one binds an autonomous agent in a given situation is a question for "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" and its owners, not for a generated page."}],"type":"p"}],"heading":"Two statements of the loop","id":"two-statements-of-the-loop"}],"title":"Queen orchestration"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Агент T, Королева, -- центральный оркестратор: \"reads "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" and knows all module dependencies\", \"conducts 26 sub-agents (A..Z, except T) by their domains\", собирает результаты, проверяет архитектурные инварианты и следит за тем, чтобы источник истины был в "},{"t":"code","v":".t27"},{"t":"text","v":" / "},{"t":"code","v":".tri"},{"t":"text","v":", а Zig, Verilog и C оставались только бэкендами ("},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":", раздел \"AGENT T -- QUEEN TRINITY\", Responsibilities). Её модуль -- "},{"t":"code","v":"specs/queen/lotus.t27"},{"t":"text","v":"."}],"type":"p"},{"runs":[{"t":"text","v":"Документ алфавита рисует её цикл шестью фазами и седьмой, добавленной законом SOUL о git. Сайт выводит цикл из этого документа; кратко:"}],"type":"p"},{"items":[[{"t":"strong","v":"PLAN"},{"t":"text","v":" -- разобрать задачу и выбрать стратегию; прочитать "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":" для анализа влияния; решить, какие агенты участвуют; проверить "},{"t":"code","v":".trinity/experience/"},{"t":"text","v":" на похожие задачи."}],[{"t":"strong","v":"ASSIGN"},{"t":"text","v":" -- распределить задачи агентам по областям (A архитектура, N численные форматы, P физика, F конформность, ...); задать зависимости; создать tri cell для каждого агента (W печатает)."}],[{"t":"strong","v":"RUN"},{"t":"text","v":" -- параллельное выполнение; heartbeats; агенты отчитываются в "},{"t":"code","v":".trinity/agent_events.jsonl"},{"t":"text","v":"; T перераспределяет при необходимости."}],[{"t":"strong","v":"TEST & BENCH"},{"t":"text","v":" -- F проверяет векторы конформности, V гоняет бенчмарки, G измеряет изменения влияния; метрики собираются в M для вердикта V."}],[{"t":"strong","v":"VERDICT"},{"t":"text","v":" -- V анализирует метрики; "},{"t":"code","v":"tri verdict --toxic"},{"t":"text","v":" спрашивает, токсично ли изменение; E записывает опыт; если токсично, Q блокирует задачу."}],[{"t":"strong","v":"EVOLVE"},{"t":"text","v":" -- обновить "},{"t":"code","v":"graph_v2.json"},{"t":"text","v":", если изменились зависимости; обновить опыт в E и M; S обновляет стандарты; W печатает коммит tri-cell; Z обновляет документацию; T ставит финальную печать TAW."}],[{"t":"strong","v":"GIT WORKFLOW"},{"t":"text","v":" (\"new -- SOUL law\") -- коммит с "},{"t":"code","v":"--all"},{"t":"text","v":" и сообщением "},{"t":"code","v":"cell:{id} issue:{N} ..."},{"t":"text","v":", затем push "},{"t":"code","v":"HEAD"},{"t":"text","v":" в origin в строгом режиме; проверки: запечатанная ячейка, нетоксичный вердикт, артефакты; реестр записывает хэш коммита и флаг pushed. Документ алфавита записывает оба шага как подкоманду "},{"t":"code","v":"git"},{"t":"text","v":" утилиты tri; текущая clap-поверхность её не предоставляет (свидетель: в "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" нет такого варианта), поэтому здесь они приведены как шаги, а не как команды для копирования."}]],"type":"ol"},{"runs":[{"t":"text","v":"Закон SOUL о TDD в документе следует за седьмой фазой: любой эпизод P0/P1 в режиме "},{"t":"code","v":"--strict"},{"t":"text","v":" считается COMPLETE только после успешного push в "},{"t":"code","v":"github.com/gHashTag/t27"},{"t":"text","v":" с привязанной запечатанной ячейкой и нетоксичным вердиктом (закон называет push подкомандой tri; см. примечание к седьмой фазе выше). Где буква агента появляется в описании фазы, глава об инструментах и карточки агентов используют эту строку как источник связи ("},{"t":"code","v":"tri cell"},{"t":"text","v":" -- W, "},{"t":"code","v":"tri verdict"},{"t":"text","v":" -- V)."}],"type":"p"}],"heading":"Шестифазный цикл и фаза 7","id":"шестифазный-цикл-и-фаза-7"},{"blocks":[{"runs":[{"t":"text","v":"Состояние цикла несут три шага; два из них -- команды tri со спецификацией под "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":", прочитанной из clap-перечисления "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":":"}],"type":"p"},{"items":[[{"t":"strong","v":"`tri cell`"},{"t":"text","v":" -- единица работы одного агента: создаётся в ASSIGN, запечатывается W хэшем в EVOLVE. Вложенные действия перечислены на карточке инструмента ("},{"t":"code","v":"specs/tools/tri/cell.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"`tri verdict`"},{"t":"text","v":" -- решение V по метрикам; "},{"t":"code","v":"--toxic"},{"t":"text","v":" -- вопрос, который цикл задаёт в VERDICT ("},{"t":"code","v":"specs/tools/tri/verdict.t27"},{"t":"text","v":")."}],[{"t":"strong","v":"шаг git"},{"t":"text","v":" -- седьмая фаза в записи документа алфавита, как подкоманда "},{"t":"code","v":"git"},{"t":"text","v":" утилиты tri. На коммите, на котором порождена документация, в clap-перечислении "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":" нет такого варианта, поэтому в каталоге инструментов нет карточки для него; фаза документирована по алфавиту с пометкой "},{"t":"code","v":"[declared]"},{"t":"text","v":", а пробел записан здесь, а не закрыт выдуманной карточкой."}]],"type":"ul"},{"runs":[{"t":"text","v":"Сама печать -- это хэш. На уровне компилятора та же идея -- печать бутстрап-компилятора ("},{"t":"code","v":"bootstrap/stage0/FROZEN_HASH"},{"t":"text","v":", "},{"t":"code","v":"CANON.md"},{"t":"text","v":", раздел 0) и канон колец: кольцо замораживается, когда записан его хэш, а расхождение между записанной печатью и рабочим деревом -- факт, который показывает панель."}],"type":"p"}],"heading":"Ячейка, печать, вердикт","id":"ячейка-печать-вердикт"},{"blocks":[{"runs":[{"t":"text","v":"Репозиторий формулирует цикл Королевы дважды, и формулировки различаются. Документ алфавита даёт семь фаз выше (PLAN, ASSIGN, RUN, TEST & BENCH, VERDICT, EVOLVE, GIT WORKFLOW). "},{"t":"code","v":"CLAUDE.md"},{"t":"text","v":", \"Autonomous Execution Loop (AEL v2.0)\", даёт шестифазный цикл агента, действующего как Королева, -- OBSERVE (E), PLAN (T), DELEGATE (C/V), VERIFY (V), SYNTHESIZE (L), LEARN (L) -- и отдельно девятифазный PHI LOOP для разработки по кольцам (Issue, Spec, TDD, Code, Gen, Seal, Verify, Land, Learn)."}],"type":"p"},{"runs":[{"t":"text","v":"Эта документация отображает цикл алфавита, потому что именно он называет команды tri и буквы агентов по фазам, и фиксирует цикл AEL как вторую формулировку, не сводя их воедино. Какая из них связывает автономного агента в конкретной ситуации -- вопрос к "},{"t":"code","v":"AGENTS.md"},{"t":"text","v":" и его владельцам, а не к порождённой странице."}],"type":"p"}],"heading":"Две формулировки цикла","id":"две-формулировки-цикла"}]}},"bodyPath":"docs/system/queen.md","bodySha256":"0008d41fdffdd063af243376fbf83c31ffe8ff9995c6d666e94751330d67c97d","diagram":"phase-cycle","discarded":0,"enabled":true,"id":"docs/queen","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/queen.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/queen.t27"},"moduleName":"docs_chapter_queen","order":5,"sections":[{"heading":{"en":"The six-phase cycle and Phase 7","ru":"Шестифазный цикл и фаза 7"},"id":"the-six-phase-cycle-and-phase-7"},{"heading":{"en":"Cell, seal, verdict","ru":"Ячейка, печать, вердикт"},"id":"cell-seal-verdict"},{"heading":{"en":"Two statements of the loop","ru":"Две формулировки цикла"},"id":"two-statements-of-the-loop"}],"sha256":"70d2234eebb2fa85930ed2b25c43866083a67c5190480e9bda198faf98adcef1","sources":[{"kind":"file","path":"docs/agents/AGENTS_ALPHABET.md","rel":"docs/agents/AGENTS_ALPHABET.md","repo":"t27","sha256":"c99352b305322031ee8af0c4777ae54c52ef50c694ff2aa0f4d95ab2fa82734a","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","where":"vendored"},{"kind":"file","path":"CLAUDE.md","rel":"CLAUDE.md","repo":"t27","sha256":"b6250fd688a9d794b9eaecebd9882905aa49bfab06616be82211a87fe098656d","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/CLAUDE.md","where":"vendored"},{"kind":"file","path":"specs/agents/t.t27","rel":"specs/agents/t.t27","repo":"t27","sha256":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/t.t27","where":"vendored"},{"kind":"file","path":"specs/tools/tri/cell.t27","rel":"specs/tools/tri/cell.t27","repo":"t27","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/tri/cell.t27","where":"vendored"},{"kind":"file","path":"specs/tools/tri/verdict.t27","rel":"specs/tools/tri/verdict.t27","repo":"t27","sha256":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/tri/verdict.t27","where":"vendored"}],"specPath":"specs/docs/chapters/queen.t27","stem":"queen","table":{"columns":["n","name","steps"],"kind":"phases","note":"","rows":[{"n":1,"name":"PLAN","note":"","steps":["Analyze task and select strategy","Read graph_v2.json for impact analysis","Determine which agents participate","Check experience: are there similar tasks in .trinity/experience/"]},{"n":2,"name":"ASSIGN","note":"","steps":["Distribute tasks to agents by domain","A (arch), N (numeric), P (physics), F (conformance), etc.","Set dependencies: G+F+V → V checks F checks G","Create tri-cell for each agent (W seals)"]},{"n":3,"name":"RUN","note":"","steps":["Parallel task execution by agents","Monitoring via heartbeats","Agents report status to `.trinity/agent_events.jsonl`","T coordinates, redistributing if necessary"]},{"n":4,"name":"TEST & BENCH","note":"","steps":["F checks conformance JSON vectors","V runs benchmarks (ARCH_BENCH-001)","G measures impact changes","Collect metrics in M for verdict by V"]},{"n":5,"name":"VERDICT","note":"","steps":["V analyzes metrics and makes decision","`tri verdict --toxic` — is the change toxic?","E records experience (if error) or success","If toxic → Q blocks task, E marks 3rd attempt"]},{"n":6,"name":"EVOLVE","note":"","steps":["Update graph_v2.json (if dependencies changed)","Update experience in E + M","S updates standards (if needed)","W seals tri-cell commit (hash seal)","Z updates documentation","T puts final TAW seal on completed work"]},{"n":7,"name":"GIT WORKFLOW","note":"new — SOUL law","steps":["`tri git commit --all -m \"cell:{id} issue:{N} ...\"`","`tri git push origin HEAD` (strict mode: only t27 repo)","Check: sealed cell + non-toxic verdict + artifacts","Update registry.json with commit hash and pushed flag"]}],"source":"docs/agents/AGENTS_ALPHABET.md, \"6-Phase Cycle of AGENT T\""},"title":{"en":"Queen orchestration","ru":"Оркестрация Королевы"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"tri"},{"t":"text","v":" is the command of the toolchain: "},{"t":"code","v":"./scripts/tri"},{"t":"text","v":" is an exec-only shim (SOUL Article VIII, section 8.2) that resolves the Rust binary "},{"t":"code","v":"t27c"},{"t":"text","v":", passes "},{"t":"code","v":"--repo-root"},{"t":"text","v":" and executes it. The catalog in "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":" holds one spec per variant of the clap "},{"t":"code","v":"Commands"},{"t":"text","v":" enum in "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":": the command word, the enum variant, the source file and the entry point, the doc comment as "},{"t":"code","v":"ABOUT"},{"t":"text","v":" with "},{"t":"code","v":"ABOUT_SOURCE"},{"t":"text","v":" naming where the text came from, the nested actions with their own doc comments, the arguments, the agent letters that own the command with the evidence line, when to use it, and the witness."}],"type":"p"},{"runs":[{"t":"text","v":"The table the site renders next to this chapter is generated from "},{"t":"code","v":"public/tools/spec-tools.json"},{"t":"text","v":" -- command, actions, owners, witness -- and the counts in its header are read from the same file. The witness on every tri card at the commit this documentation was generated from is "},{"t":"code","v":"source-parse"},{"t":"text","v":": the enum and its "},{"t":"code","v":"///"},{"t":"text","v":" comments were read from the source at a recorded commit, and "},{"t":"code","v":"cargo"},{"t":"text","v":" was not run. A card is relabelled "},{"t":"code","v":"help-output"},{"t":"text","v":" only when someone diffs the list against "},{"t":"code","v":"tri --help"},{"t":"text","v":" and records the result; until then the label says what was and was not done."}],"type":"p"},{"runs":[{"t":"text","v":"Commands whose variant has no doc comment quote the source they borrow their description from (for example "},{"t":"code","v":"tri cell"},{"t":"text","v":" quotes the "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" tool descriptions), so that no "},{"t":"code","v":"ABOUT"},{"t":"text","v":" is invented."}],"type":"p"}],"heading":"The tri CLI","id":"the-tri-cli"},{"blocks":[{"runs":[{"t":"text","v":"The second family is the Model Context Protocol servers the two repositories ship or register: for "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" the "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" crate, the "},{"t":"code","v":"tri-ssot"},{"t":"text","v":" manifest, "},{"t":"code","v":"t27-traceability"},{"t":"text","v":" and the entries of "},{"t":"code","v":".mcp.json"},{"t":"text","v":"; for "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" the "},{"t":"code","v":"trinity"},{"t":"text","v":" and "},{"t":"code","v":"needle"},{"t":"text","v":" Zig servers and its "},{"t":"code","v":".mcp.json"},{"t":"text","v":" entries. "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" carries the launch line, transport, version, environment variables, config path, repository, source, the tool names with descriptions and input-schema keys, resources, and the witness."}],"type":"p"},{"runs":[{"t":"text","v":"Servers whose code is a published package outside the repositories carry "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":" and a "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":" saying the tool list is not in either tree; nothing is invented for them. Two facts are recorded rather than fixed: "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" is not registered in "},{"t":"code","v":".mcp.json"},{"t":"text","v":" at the pinned commit ("},{"t":"code","v":"CONFIG"},{"t":"text","v":" is empty), and the "},{"t":"code","v":"tri-ssot"},{"t":"text","v":" manifest names a module the tree does not contain."}],"type":"p"},{"runs":[{"t":"text","v":"Two repositories are two lists. "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" does have a command-line binary of its own (an earlier version of this chapter said it had none; that was wrong): since S06 of gHashTag/trinity#988 its commands are cards under "},{"t":"code","v":"specs/tools/trinity/tri/"},{"t":"text","v":", read from the one registry that binary exports and its CI holds to the binary ("},{"t":"code","v":".trinity/registry.json"},{"t":"text","v":", 29 commands of a 187-entry table), with repository-qualified IDs ("},{"t":"code","v":"gHashTag/trinity:tri/"},{"t":"text","v":") so that a same-named command of the two binaries is never confused. "},{"t":"code","v":"specs/tools/catalog.t27"},{"t":"text","v":" states the schema, the identity rules and the legacy resolution; "},{"t":"code","v":"specs/tools/mcp_protocol.t27"},{"t":"text","v":" states what the Trinity MCP server does with a request; "},{"t":"code","v":"tools/trinity_tools_registry.py"},{"t":"text","v":" holds both and the cards to a measured inventory of the consumer."}],"type":"p"}],"heading":"MCP servers","id":"mcp-servers"},{"blocks":[{"runs":[{"t":"text","v":"A tool names the agent letters that own it ("},{"t":"code","v":"AGENTS"},{"t":"text","v":") only where a source line does, and "},{"t":"code","v":"AGENTS_NOTE"},{"t":"text","v":" cites that line or names the sources that were checked and found silent. The agent spec names the tool back ("},{"t":"code","v":"TOOLS"},{"t":"text","v":"), and the site's generator fails the build on a binding stated on one side only. Today five commands are bound -- "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W) -- from the phase descriptions of "},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" and the "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":" files; the other commands and every MCP server carry an empty "},{"t":"code","v":"AGENTS"},{"t":"text","v":" with a note. Skills are cross-linked when a skill spec's own "},{"t":"code","v":"COMMAND"},{"t":"text","v":" or "},{"t":"code","v":"SUMMARY_EN"},{"t":"text","v":" names a tri command."}],"type":"p"},{"runs":[{"t":"text","v":"The map the site draws next to this chapter groups the tri commands by owning letter (with a group for the unowned) and the MCP servers by repository, with the external ones marked. It is drawn from the generated JSON, so a new binding in a spec moves a command on the map without anyone editing the figure."}],"type":"p"}],"heading":"Who owns a tool","id":"who-owns-a-tool"}],"title":"Tooling"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"code","v":"tri"},{"t":"text","v":" -- команда инструментальной цепочки: "},{"t":"code","v":"./scripts/tri"},{"t":"text","v":" -- шим (только exec, статья VIII SOUL, раздел 8.2), который находит бинарник Rust "},{"t":"code","v":"t27c"},{"t":"text","v":", передаёт "},{"t":"code","v":"--repo-root"},{"t":"text","v":" и исполняет его. Каталог в "},{"t":"code","v":"specs/tools/tri/"},{"t":"text","v":" содержит по спецификации на вариант clap-перечисления "},{"t":"code","v":"Commands"},{"t":"text","v":" в "},{"t":"code","v":"cli/tri/src/main.rs"},{"t":"text","v":": слово команды, вариант перечисления, файл исходника и точку входа, doc-комментарий как "},{"t":"code","v":"ABOUT"},{"t":"text","v":" с "},{"t":"code","v":"ABOUT_SOURCE"},{"t":"text","v":", называющим, откуда взят текст, вложенные действия с их doc-комментариями, аргументы, буквы агентов, владеющих командой, со строкой-свидетельством, случаи применения и свидетеля."}],"type":"p"},{"runs":[{"t":"text","v":"Таблица, которую сайт выводит рядом с этой главой, порождается из "},{"t":"code","v":"public/tools/spec-tools.json"},{"t":"text","v":" -- команда, действия, владельцы, свидетель, -- и счётчики в её заголовке читаются из того же файла. Свидетель на каждой карточке tri на коммите, на котором порождена документация, -- "},{"t":"code","v":"source-parse"},{"t":"text","v":": перечисление и его комментарии "},{"t":"code","v":"///"},{"t":"text","v":" прочитаны из исходника на записанном коммите, а "},{"t":"code","v":"cargo"},{"t":"text","v":" не запускался. Карточка переименовывается в "},{"t":"code","v":"help-output"},{"t":"text","v":" только когда кто-нибудь сравнит список с "},{"t":"code","v":"tri --help"},{"t":"text","v":" и запишет результат; до тех пор метка говорит, что было и чего не было сделано."}],"type":"p"},{"runs":[{"t":"text","v":"Команды, чей вариант не имеет doc-комментария, цитируют источник, у которого заимствуют описание (например, "},{"t":"code","v":"tri cell"},{"t":"text","v":" цитирует описания инструментов "},{"t":"code","v":"tri-mcp"},{"t":"text","v":"), чтобы ни один "},{"t":"code","v":"ABOUT"},{"t":"text","v":" не был выдуман."}],"type":"p"}],"heading":"CLI tri","id":"cli-tri"},{"blocks":[{"runs":[{"t":"text","v":"Второе семейство -- серверы Model Context Protocol, которые два репозитория поставляют или регистрируют: для "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" крейт "},{"t":"code","v":"tri-mcp"},{"t":"text","v":", манифест "},{"t":"code","v":"tri-ssot"},{"t":"text","v":", "},{"t":"code","v":"t27-traceability"},{"t":"text","v":" и записи "},{"t":"code","v":".mcp.json"},{"t":"text","v":"; для "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" Zig-серверы "},{"t":"code","v":"trinity"},{"t":"text","v":" и "},{"t":"code","v":"needle"},{"t":"text","v":" и его записи "},{"t":"code","v":".mcp.json"},{"t":"text","v":". "},{"t":"code","v":"specs/tools/mcp/.t27"},{"t":"text","v":" несёт строку запуска, транспорт, версию, переменные окружения, путь конфигурации, репозиторий, исходник, имена инструментов с описаниями и ключами входных схем, ресурсы и свидетеля."}],"type":"p"},{"runs":[{"t":"text","v":"Серверы, чей код -- опубликованный пакет вне репозиториев, несут "},{"t":"code","v":"EXTERNAL = true"},{"t":"text","v":" и "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":" о том, что списка инструментов нет ни в одном дереве; для них ничего не выдумывается. Два факта записаны, а не исправлены: "},{"t":"code","v":"tri-mcp"},{"t":"text","v":" не зарегистрирован в "},{"t":"code","v":".mcp.json"},{"t":"text","v":" на закреплённом коммите ("},{"t":"code","v":"CONFIG"},{"t":"text","v":" пуст), а манифест "},{"t":"code","v":"tri-ssot"},{"t":"text","v":" называет модуль, которого нет в дереве."}],"type":"p"},{"runs":[{"t":"text","v":"Два репозитория -- два списка. У "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" нет бинарника "},{"t":"code","v":"tri"},{"t":"text","v":" на закреплённом коммите ("},{"t":"code","v":"build.zig"},{"t":"text","v":" его не определяет; его "},{"t":"code","v":".claude/skills/tri/SKILL.md"},{"t":"text","v":" -- навык и находится в каталоге навыков), поэтому его инструменты -- только его серверы MCP, под "},{"t":"code","v":"REPO = \"gHashTag/trinity\""},{"t":"text","v":"."}],"type":"p"}],"heading":"Серверы MCP","id":"серверы-mcp"},{"blocks":[{"runs":[{"t":"text","v":"Инструмент называет буквы агентов, владеющих им ("},{"t":"code","v":"AGENTS"},{"t":"text","v":"), только там, где это делает строка источника, а "},{"t":"code","v":"AGENTS_NOTE"},{"t":"text","v":" цитирует эту строку или называет источники, которые были проверены и оказались молчащими. Спецификация агента называет инструмент в ответ ("},{"t":"code","v":"TOOLS"},{"t":"text","v":"), и генератор сайта роняет сборку на связи, заявленной лишь с одной стороны. Сегодня связаны пять команд -- "},{"t":"code","v":"tri gen"},{"t":"text","v":" (C, T), "},{"t":"code","v":"tri test"},{"t":"text","v":" (T, V), "},{"t":"code","v":"tri verdict"},{"t":"text","v":" (V), "},{"t":"code","v":"tri experience"},{"t":"text","v":" (E), "},{"t":"code","v":"tri cell"},{"t":"text","v":" (W) -- по описаниям фаз "},{"t":"code","v":"docs/agents/AGENTS_ALPHABET.md"},{"t":"text","v":" и файлам "},{"t":"code","v":".claude/agents/*.md"},{"t":"text","v":"; остальные команды и каждый сервер MCP несут пустой "},{"t":"code","v":"AGENTS"},{"t":"text","v":" с примечанием. Навыки связываются перекрёстно, когда собственный "},{"t":"code","v":"COMMAND"},{"t":"text","v":" или "},{"t":"code","v":"SUMMARY_EN"},{"t":"text","v":" спецификации навыка называет команду tri."}],"type":"p"},{"runs":[{"t":"text","v":"Карта, которую сайт рисует рядом с этой главой, группирует команды tri по владеющей букве (с группой для невладеемых) и серверы MCP по репозиторию, с пометкой внешних. Она рисуется из порождённого JSON, поэтому новая связь в спецификации перемещает команду на карте без чьей-либо правки фигуры."}],"type":"p"}],"heading":"Кто владеет инструментом","id":"кто-владеет-инструментом"}]}},"bodyPath":"docs/system/tooling.md","bodySha256":"9c8d5ec87acb0205da7d1011722031807a4b713b37130004c5478f70f8151652","diagram":"tools-map","discarded":0,"enabled":true,"id":"docs/tooling","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/tooling.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/tooling.t27"},"moduleName":"docs_chapter_tooling","order":6,"sections":[{"heading":{"en":"The tri CLI","ru":"CLI tri"},"id":"the-tri-cli"},{"heading":{"en":"MCP servers","ru":"Серверы MCP"},"id":"mcp-servers"},{"heading":{"en":"Who owns a tool","ru":"Кто владеет инструментом"},"id":"who-owns-a-tool"}],"sha256":"dd4d3fb85955d4bb7423cf637941c02736855369320dd840082a8aed792302eb","sources":[{"kind":"file","path":"specs/tools/README.md","rel":"specs/tools/README.md","repo":"t27","sha256":"37b5a451e43de9bc5746ceb80d4cf24f19ea6c3ad8751d2447049cba39c8a0ab","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/README.md","where":"vendored"},{"kind":"file","path":"specs/tools/tri/cell.t27","rel":"specs/tools/tri/cell.t27","repo":"t27","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/tri/cell.t27","where":"vendored"},{"kind":"file","path":"specs/agents/README.md","rel":"specs/agents/README.md","repo":"t27","sha256":"c40833dbc9f271cc92f1e9a848324446429fed52954b53f80c3670bc9da78996","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/agents/README.md","where":"vendored"},{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"}],"specPath":"specs/docs/chapters/tooling.t27","stem":"tooling","table":{"columns":["id","family","name","repo","items","agents","witness","external"],"kind":"tools","note":"","rows":[{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/bench","items":0,"name":"tri bench","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/bio","items":0,"name":"tri bio","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/blindspots","items":0,"name":"tri blindspots","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/conscious","items":0,"name":"tri conscious","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/constants","items":0,"name":"tri constants","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/cosmos","items":0,"name":"tri cosmos","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/dashboard","items":0,"name":"tri dashboard","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/fib","items":0,"name":"tri fib","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/fpga","items":0,"name":"tri fpga","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/gematria","items":0,"name":"tri gematria","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/govern","items":0,"name":"tri govern","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/hardware","items":0,"name":"tri hardware","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/identity","items":0,"name":"tri identity","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/lucas","items":0,"name":"tri lucas","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/mesh","items":0,"name":"tri mesh","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/needle","items":0,"name":"tri needle","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/needle-check","items":0,"name":"tri needle-check","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/needle-search","items":0,"name":"tri needle-search","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/omega","items":0,"name":"tri omega","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/particles","items":0,"name":"tri particles","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/phi","items":0,"name":"tri phi","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/quantum","items":0,"name":"tri quantum","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/reputation","items":0,"name":"tri reputation","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/sacred-const","items":0,"name":"tri sacred-const","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/spiral","items":0,"name":"tri spiral","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/swarm","items":0,"name":"tri swarm","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/test","items":0,"name":"tri test","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/vsa","items":0,"name":"tri vsa","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":false,"family":"tri-cli","id":"gHashTag/trinity:tri/wallet","items":0,"name":"tri wallet","repo":"gHashTag/trinity","witness":"registry-export"},{"agents":[],"external":true,"family":"mcp","id":"mcp/gitbutler","items":0,"name":"gitbutler","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["T"],"external":true,"family":"mcp","id":"mcp/inngest-dev","items":20,"name":"inngest-dev","repo":"gHashTag/t27","witness":"help-output"},{"agents":[],"external":false,"family":"mcp","id":"mcp/needle","items":6,"name":"needle","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/neon","items":0,"name":"neon","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/notebooklm","items":0,"name":"notebooklm","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/railway-mcp-server","items":0,"name":"railway-mcp-server","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/t27-traceability","items":4,"name":"t27-traceability","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/tri-mcp","items":10,"name":"tri-mcp","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/tri-ssot","items":5,"name":"tri-ssot","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"mcp","id":"mcp/trinity","items":210,"name":"trinity","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":true,"family":"mcp","id":"mcp/zig-docs","items":0,"name":"zig-docs","repo":"gHashTag/trinity","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/abandoned","items":1,"name":"tri abandoned","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["W"],"external":false,"family":"tri-cli","id":"tri/cell","items":2,"name":"tri cell","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/census","items":2,"name":"tri census","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/ci","items":1,"name":"tri ci","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/competitors","items":2,"name":"tri competitors","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/discard","items":2,"name":"tri discard","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/doctor","items":0,"name":"tri doctor","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/elab","items":2,"name":"tri elab","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/emit","items":1,"name":"tri emit","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["E"],"external":false,"family":"tri-cli","id":"tri/experience","items":1,"name":"tri experience","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/fleet","items":2,"name":"tri fleet","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/fmt","items":0,"name":"tri fmt","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/fpga","items":35,"name":"tri fpga","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/gates","items":13,"name":"tri gates","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["C","T"],"external":false,"family":"tri-cli","id":"tri/gen","items":0,"name":"tri gen","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/harness","items":1,"name":"tri harness","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/health","items":0,"name":"tri health","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/hooks","items":8,"name":"tri hooks","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/issues","items":3,"name":"tri issues","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/jumps","items":1,"name":"tri jumps","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/kinds","items":1,"name":"tri kinds","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/lean","items":2,"name":"tri lean","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/ledgers","items":1,"name":"tri ledgers","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/loop","items":1,"name":"tri loop","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/merging","items":0,"name":"tri merging","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/misread","items":0,"name":"tri misread","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/mods","items":1,"name":"tri mods","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/mutate","items":1,"name":"tri mutate","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/now","items":2,"name":"tri now","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/one-away","items":0,"name":"tri one-away","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/orphaned","items":1,"name":"tri orphaned","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/pr","items":2,"name":"tri pr","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/prose","items":1,"name":"tri prose","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/quantifiers","items":2,"name":"tri quantifiers","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/red","items":2,"name":"tri red","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/reseal","items":2,"name":"tri reseal","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/rtl","items":1,"name":"tri rtl","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/seals","items":5,"name":"tri seals","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/serve","items":0,"name":"tri serve","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/skill","items":9,"name":"tri skill","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/status","items":0,"name":"tri status","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/sweep","items":1,"name":"tri sweep","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/synth","items":1,"name":"tri synth","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["T","V"],"external":false,"family":"tri-cli","id":"tri/test","items":0,"name":"tri test","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/topic","items":0,"name":"tri topic","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/types","items":4,"name":"tri types","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/unparsed","items":4,"name":"tri unparsed","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/vectors","items":2,"name":"tri vectors","repo":"gHashTag/t27","witness":"source-parse"},{"agents":["V"],"external":false,"family":"tri-cli","id":"tri/verdict","items":0,"name":"tri verdict","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/vsim","items":1,"name":"tri vsim","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/window","items":0,"name":"tri window","repo":"gHashTag/t27","witness":"source-parse"},{"agents":[],"external":false,"family":"tri-cli","id":"tri/worktrees","items":0,"name":"tri worktrees","repo":"gHashTag/t27","witness":"source-parse"}],"source":"public/tools/spec-tools.json"},"title":{"en":"Tooling","ru":"Инструменты"},"typecheckOk":true},{"body":{"en":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"The project separates what was measured from what was declared, and both from what was taken from outside. The tags are defined in the chapter \"The project\"; this chapter says how each tag is earned on the site."}],"type":"p"},{"runs":[{"t":"text","v":"A "},{"t":"strong","v":"measured"},{"t":"text","v":" number has a producer in a repository -- a script, a workflow, a test -- whose output is committed or published, and the page names the commit. The ladder counts, the "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" verdicts, the coverage of a translation bundle, the number of episodes in an experience tree are measured in this sense: the generator that produces them runs in "},{"t":"code","v":"prebuild"},{"t":"text","v":" and its inputs are pinned."}],"type":"p"},{"runs":[{"t":"text","v":"A "},{"t":"strong","v":"declared"},{"t":"text","v":" value is stated in a spec or a canon document. The catalog size of 83 formats, the seven laws, the seven phases are declared: the site renders them from the file that states them and links the file at the commit, but running nothing."}],"type":"p"},{"runs":[{"t":"text","v":"An "},{"t":"strong","v":"external"},{"t":"text","v":" value is cited with its source and not reproduced. The site does not restate hardware figures of "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" beyond what "},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":" transcribes with its provenance note."}],"type":"p"}],"heading":"Measured, declared, external","id":"measured-declared-external"},{"blocks":[{"runs":[{"t":"text","v":"Each catalog card carries a witness label that says how the card relates to the thing it describes:"}],"type":"p"},{"items":[[{"t":"text","v":"Skills and crons: "},{"t":"code","v":"spec+code"},{"t":"text","v":" (spec and source both exist), "},{"t":"code","v":"spec-only"},{"t":"text","v":" (spec without source), "},{"t":"code","v":"code-only"},{"t":"text","v":" (source without spec). The counts per label are in the header of the Skill and Cron Explorers."}],[{"t":"text","v":"Tools: "},{"t":"code","v":"source-parse"},{"t":"text","v":" (the command list was read from the source at a recorded commit; "},{"t":"code","v":"cargo"},{"t":"text","v":" was not run) or "},{"t":"code","v":"help-output"},{"t":"text","v":" (the list was diffed against "},{"t":"code","v":"tri --help"},{"t":"text","v":"). At the commit this documentation was generated from every tri card is "},{"t":"code","v":"source-parse"},{"t":"text","v":"."}],[{"t":"text","v":"Agents: each skill and tool binding cites a source line in "},{"t":"code","v":"SKILLS_NOTE"},{"t":"text","v":" / "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":", or the list is empty and the note says what was read."}],[{"t":"text","v":"Experience: attributed only where an episode names a letter; otherwise counted as unattributed, never guessed."}]],"type":"ul"},{"runs":[{"t":"text","v":"The table the site renders next to this chapter collects these labels with their counts from the generated JSON of every layer."}],"type":"p"}],"heading":"Witness labels","id":"witness-labels"},{"blocks":[{"runs":[{"t":"text","v":"Every "},{"t":"code","v":".t27"},{"t":"text","v":" the site shows was compiled at build time by the vendored "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":", and the JSON records "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" per file. Two limits of that verdict are stated on every layer README and repeated here. First, the wasm's "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" is necessary, not sufficient: it stays "},{"t":"code","v":"true"},{"t":"text","v":" for a wrong annotation such as "},{"t":"code","v":"str = 5"},{"t":"text","v":", so the generator checks the field schema of every card on top of it. Second, the bootstrap compiler on "},{"t":"code","v":"master"},{"t":"text","v":" was not run against the catalog files in the commits that added them; the wasm is a build of the compiler at a recorded sha, and that sha is in the generated JSON."}],"type":"p"}],"heading":"Wasm verdicts","id":"wasm-verdicts"},{"blocks":[{"runs":[{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" gates a pull request with workflows named for what they check (issue gate, gate topology, conformance integrity, emit bit-exact, catalog count, now-sync, untrusted input, among others under "},{"t":"code","v":".github/workflows/"},{"t":"text","v":"). Two of them, "},{"t":"code","v":"gate-topology"},{"t":"text","v":" and "},{"t":"code","v":"untrusted-input"},{"t":"text","v":", fail on "},{"t":"code","v":"master"},{"t":"text","v":" for already-merged pull requests at the time of writing; the catalog pull requests record this and do not bless or bypass them."}],"type":"p"},{"runs":[{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" gates the site with "},{"t":"code","v":"npm run"},{"t":"text","v":" checks that run in "},{"t":"code","v":"prebuild"},{"t":"text","v":" and in CI: "},{"t":"code","v":"check:spec-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:skills-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:crons-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:agents"},{"t":"text","v":", "},{"t":"code","v":"check:tools"},{"t":"text","v":", "},{"t":"code","v":"check:docs"},{"t":"text","v":", the explorer and Queen language contracts, the Queen viewport contract, "},{"t":"code","v":"typecheck:ratchet"},{"t":"text","v":" and "},{"t":"code","v":"eslint"},{"t":"text","v":". A check that fails on "},{"t":"code","v":"main"},{"t":"text","v":" before a change is reported as pre-existing, with its name, and is not counted as passing."}],"type":"p"}],"heading":"CI gates","id":"ci-gates"},{"blocks":[{"runs":[{"t":"text","v":"To reproduce a count on the site, run the generator that produced it, in "},{"t":"code","v":"apps/website"},{"t":"text","v":" of a checkout of "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":", with a sibling checkout of "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" (or "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":" pointing to one):"}],"type":"p"},{"items":[[{"t":"code","v":"node scripts/agents-from-specs.mjs"},{"t":"text","v":" -- skills, crons, agents, tools JSON and their counts; "},{"t":"code","v":"--check"},{"t":"text","v":" compares against the committed JSON."}],[{"t":"code","v":"node scripts/docs-from-specs.mjs"},{"t":"text","v":" -- this documentation's JSON, including the sources with their sha256 and the pinned commit."}],[{"t":"code","v":"node scripts/sync-agents-experience.mjs"},{"t":"text","v":" -- the experience snapshot."}],[{"t":"code","v":"npm run check:docs"},{"t":"text","v":" -- the chapter bodies, the sources, the generated tables, the forbidden-words scan in English and Russian."}]],"type":"ul"},{"runs":[{"t":"text","v":"Each JSON names the commit its inputs were read at. Comparing that commit with the one in front of you is step one of any reproduction; a number that cannot be tied to a commit is not a measurement."}],"type":"p"}],"heading":"Reproducing a number","id":"reproducing-a-number"},{"blocks":[{"runs":[{"t":"text","v":"Two kinds of record exist outside the generated pages, and this documentation points to them without adding to their claims. The TNF manuscript audit and reconciliation reports live under "},{"t":"code","v":"docs/reports/"},{"t":"text","v":" in "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" ("},{"t":"code","v":"TNF-ARTICLE-AUDIT-W845.md"},{"t":"text","v":", "},{"t":"code","v":"TNF-ARTICLE-RECONCILIATION.md"},{"t":"text","v":"); they record which statements of the article were checked against which producer and what changed. The Zenodo README ("},{"t":"code","v":"README-ZENODO.md"},{"t":"text","v":") describes the archived package. No scientific claim is made in this documentation that is not in those files or in the site's own content with its status tag."}],"type":"p"}],"heading":"Published record","id":"published-record"}],"title":"Evidence and witnesses"},"ru":{"lead":[],"sections":[{"blocks":[{"runs":[{"t":"text","v":"Проект разделяет измеренное и заявленное, а и то и другое -- от взятого извне. Теги определены в главе \"Проект\"; эта глава говорит, как каждый тег зарабатывается на сайте."}],"type":"p"},{"runs":[{"t":"strong","v":"Измеренное"},{"t":"text","v":" число имеет производителя в репозитории -- скрипт, workflow, тест, -- чей вывод закоммичен или опубликован, и страница называет коммит. Счётчики лестницы, вердикты "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":", покрытие бандла переводов, число эпизодов в дереве опыта измерены в этом смысле: порождающий их генератор выполняется в "},{"t":"code","v":"prebuild"},{"t":"text","v":", а его входы закреплены."}],"type":"p"},{"runs":[{"t":"strong","v":"Заявленное"},{"t":"text","v":" значение записано в спецификации или каноническом документе. Размер каталога в 83 формата, семь законов, семь фаз заявлены: сайт выводит их из файла, который их формулирует, и привязывает файл к коммиту, ничего не запуская."}],"type":"p"},{"runs":[{"t":"strong","v":"Внешнее"},{"t":"text","v":" значение цитируется с источником и не воспроизводится. Сайт не повторяет аппаратные цифры "},{"t":"code","v":"gHashTag/trinity-fpga"},{"t":"text","v":" сверх того, что переносит "},{"t":"code","v":"siliconHistory.ts"},{"t":"text","v":" со своим примечанием о происхождении."}],"type":"p"}],"heading":"Измерено, заявлено, извне","id":"измерено-заявлено-извне"},{"blocks":[{"runs":[{"t":"text","v":"Каждая карточка каталога несёт метку свидетеля, говорящую, как карточка соотносится с тем, что описывает:"}],"type":"p"},{"items":[[{"t":"text","v":"Навыки и расписания: "},{"t":"code","v":"spec+code"},{"t":"text","v":" (есть и спецификация, и исходник), "},{"t":"code","v":"spec-only"},{"t":"text","v":" (спецификация без исходника), "},{"t":"code","v":"code-only"},{"t":"text","v":" (исходник без спецификации). Счётчики по меткам -- в заголовках обозревателей навыков и расписаний."}],[{"t":"text","v":"Инструменты: "},{"t":"code","v":"source-parse"},{"t":"text","v":" (список команд прочитан из исходника на записанном коммите; "},{"t":"code","v":"cargo"},{"t":"text","v":" не запускался) или "},{"t":"code","v":"help-output"},{"t":"text","v":" (список сверен с "},{"t":"code","v":"tri --help"},{"t":"text","v":"). На коммите, на котором порождена документация, каждая карточка tri -- "},{"t":"code","v":"source-parse"},{"t":"text","v":"."}],[{"t":"text","v":"Агенты: каждая связь с навыком и инструментом цитирует строку источника в "},{"t":"code","v":"SKILLS_NOTE"},{"t":"text","v":" / "},{"t":"code","v":"TOOLS_NOTE"},{"t":"text","v":", либо список пуст и примечание говорит, что было прочитано."}],[{"t":"text","v":"Опыт: атрибуция только там, где эпизод называет букву; иначе считается неотнесённым и никогда не угадывается."}]],"type":"ul"},{"runs":[{"t":"text","v":"Таблица, которую сайт выводит рядом с этой главой, собирает эти метки со счётчиками из порождённого JSON каждого слоя."}],"type":"p"}],"heading":"Метки свидетелей","id":"метки-свидетелей"},{"blocks":[{"runs":[{"t":"text","v":"Каждый "},{"t":"code","v":".t27"},{"t":"text","v":", показанный на сайте, скомпилирован при сборке вендорным "},{"t":"code","v":"t27_compiler.wasm"},{"t":"text","v":", и JSON записывает "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" для каждого файла. Два предела этого вердикта названы в README каждого слоя и повторены здесь. Во-первых, "},{"t":"code","v":"typecheck.ok"},{"t":"text","v":" от wasm необходим, но не достаточен: он остаётся "},{"t":"code","v":"true"},{"t":"text","v":" при неверной аннотации вроде "},{"t":"code","v":"str = 5"},{"t":"text","v":", поэтому генератор проверяет схему полей каждой карточки поверх него. Во-вторых, бутстрап-компилятор на "},{"t":"code","v":"master"},{"t":"text","v":" не запускался против файлов каталогов в коммитах, которые их добавили; wasm -- сборка компилятора на записанном sha, и этот sha есть в порождённом JSON."}],"type":"p"}],"heading":"Вердикты wasm","id":"вердикты-wasm"},{"blocks":[{"runs":[{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" проверяет pull request рабочими потоками, названными по тому, что они проверяют (issue gate, gate topology, conformance integrity, emit bit-exact, catalog count, now-sync, untrusted input и другие под "},{"t":"code","v":".github/workflows/"},{"t":"text","v":"). Два из них, "},{"t":"code","v":"gate-topology"},{"t":"text","v":" и "},{"t":"code","v":"untrusted-input"},{"t":"text","v":", на момент написания падают на "},{"t":"code","v":"master"},{"t":"text","v":" для уже влитых pull request; pull request каталогов фиксируют это и не благословляют и не обходят их."}],"type":"p"},{"runs":[{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" проверяет сайт командами "},{"t":"code","v":"npm run"},{"t":"text","v":", выполняемыми в "},{"t":"code","v":"prebuild"},{"t":"text","v":" и в CI: "},{"t":"code","v":"check:spec-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:skills-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:crons-catalog"},{"t":"text","v":", "},{"t":"code","v":"check:agents"},{"t":"text","v":", "},{"t":"code","v":"check:tools"},{"t":"text","v":", "},{"t":"code","v":"check:docs"},{"t":"text","v":", языковые контракты обозревателей и Королевы, контракт вьюпорта Королевы, "},{"t":"code","v":"typecheck:ratchet"},{"t":"text","v":" и "},{"t":"code","v":"eslint"},{"t":"text","v":". Проверка, падающая на "},{"t":"code","v":"main"},{"t":"text","v":" до изменения, отмечается как существовавшая ранее, по имени, и не засчитывается как пройденная."}],"type":"p"}],"heading":"Шлюзы CI","id":"шлюзы-ci"},{"blocks":[{"runs":[{"t":"text","v":"Чтобы воспроизвести счётчик с сайта, запустите порождающий его генератор в "},{"t":"code","v":"apps/website"},{"t":"text","v":" чекаута "},{"t":"code","v":"gHashTag/trinity"},{"t":"text","v":" с соседним чекаутом "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" (или с "},{"t":"code","v":"T27_ROOT"},{"t":"text","v":", указывающим на него):"}],"type":"p"},{"items":[[{"t":"code","v":"node scripts/agents-from-specs.mjs"},{"t":"text","v":" -- JSON навыков, расписаний, агентов, инструментов и их счётчики; "},{"t":"code","v":"--check"},{"t":"text","v":" сравнивает с закоммиченным JSON."}],[{"t":"code","v":"node scripts/docs-from-specs.mjs"},{"t":"text","v":" -- JSON этой документации, включая источники с их sha256 и закреплённый коммит."}],[{"t":"code","v":"node scripts/sync-agents-experience.mjs"},{"t":"text","v":" -- снимок опыта."}],[{"t":"code","v":"npm run check:docs"},{"t":"text","v":" -- тела глав, источники, порождённые таблицы, поиск запрещённых слов в английском и русском."}]],"type":"ul"},{"runs":[{"t":"text","v":"Каждый JSON называет коммит, на котором прочитаны его входы. Сравнение этого коммита с тем, что перед вами, -- шаг один любого воспроизведения; число, которое нельзя привязать к коммиту, не является измерением."}],"type":"p"}],"heading":"Как воспроизвести число","id":"как-воспроизвести-число"},{"blocks":[{"runs":[{"t":"text","v":"Вне порождённых страниц существуют два вида записей, и эта документация указывает на них, ничего не добавляя к их утверждениям. Отчёты аудита и сверки рукописи TNF лежат под "},{"t":"code","v":"docs/reports/"},{"t":"text","v":" в "},{"t":"code","v":"gHashTag/t27"},{"t":"text","v":" ("},{"t":"code","v":"TNF-ARTICLE-AUDIT-W845.md"},{"t":"text","v":", "},{"t":"code","v":"TNF-ARTICLE-RECONCILIATION.md"},{"t":"text","v":"); они записывают, какие утверждения статьи сверены с каким производителем и что изменилось. README для Zenodo ("},{"t":"code","v":"README-ZENODO.md"},{"t":"text","v":") описывает архивированный пакет. В этой документации не делается ни одного научного утверждения, которого нет в этих файлах или в собственном содержимом сайта с его статусным тегом."}],"type":"p"}],"heading":"Опубликованная запись","id":"опубликованная-запись"}]}},"bodyPath":"docs/system/evidence.md","bodySha256":"369aa6412eaa52c54b0b0b1e796625655dc476ea05a6e4aa1c7e019003420d21","diagram":null,"discarded":0,"enabled":true,"id":"docs/evidence","links":{"body":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/system/evidence.md","spec":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/chapters/evidence.t27"},"moduleName":"docs_chapter_evidence","order":7,"sections":[{"heading":{"en":"Measured, declared, external","ru":"Измерено, заявлено, извне"},"id":"measured-declared-external"},{"heading":{"en":"Witness labels","ru":"Метки свидетелей"},"id":"witness-labels"},{"heading":{"en":"Wasm verdicts","ru":"Вердикты wasm"},"id":"wasm-verdicts"},{"heading":{"en":"CI gates","ru":"Шлюзы CI"},"id":"ci-gates"},{"heading":{"en":"Reproducing a number","ru":"Как воспроизвести число"},"id":"reproducing-a-number"},{"heading":{"en":"Published record","ru":"Опубликованная запись"},"id":"published-record"}],"sha256":"bc197d64c27828950663c4af278f4f13fb522eddad5c105d1630aad61d997098","sources":[{"kind":"file","path":"specs/skills/README.md","rel":"specs/skills/README.md","repo":"t27","sha256":"ac23eb8d74832014efaf5e65f3da070d999549724e01242cb8784a93ad43d360","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/skills/README.md","where":"vendored"},{"kind":"file","path":"specs/tools/README.md","rel":"specs/tools/README.md","repo":"t27","sha256":"37b5a451e43de9bc5746ceb80d4cf24f19ea6c3ad8751d2447049cba39c8a0ab","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/tools/README.md","where":"vendored"},{"kind":"file","path":"README-ZENODO.md","rel":"README-ZENODO.md","repo":"t27","sha256":"6da4751277af64ba21e866d787201296b0595f3f40b43792207e2f939c7f48b9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/README-ZENODO.md","where":"vendored"},{"kind":"file","path":"docs/reports/TNF-ARTICLE-AUDIT-W845.md","rel":"docs/reports/TNF-ARTICLE-AUDIT-W845.md","repo":"t27","sha256":"0d0008949d161dbe0d3cd4368ddf4b5629144ba71293e23dc7267b6f19a36e96","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/reports/TNF-ARTICLE-AUDIT-W845.md","where":"vendored"},{"kind":"file","path":"docs/reports/TNF-ARTICLE-RECONCILIATION.md","rel":"docs/reports/TNF-ARTICLE-RECONCILIATION.md","repo":"t27","sha256":"a18e9fab15d0d845d5bc8d55b8be1249a8a0b48f7b361890da80b4e7406138da","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/reports/TNF-ARTICLE-RECONCILIATION.md","where":"vendored"}],"specPath":"specs/docs/chapters/evidence.t27","stem":"evidence","table":{"columns":["layer","label","count","source"],"kind":"witnesses","note":"","rows":[{"count":26,"label":"spec+code","layer":"Skills","source":"public/skills/spec-skills.json counts"},{"count":0,"label":"spec-only","layer":"Skills","source":"public/skills/spec-skills.json counts"},{"count":0,"label":"code-only","layer":"Skills","source":"public/skills/spec-skills.json counts"},{"count":33,"label":"spec+code","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":0,"label":"spec-only","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":0,"label":"code-only","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":0,"label":"with RUNS","layer":"Crons","source":"public/crons/spec-crons.json counts"},{"count":1,"label":"with skills (source-bound)","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":5,"label":"with tools (bound both ways)","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":0,"label":"spec+experience","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":27,"label":"spec-only","layer":"Agents","source":"public/agents/spec-agents.json counts"},{"count":0,"label":"episodes attributed","layer":"Experience","source":"public/agents/experience.json"},{"count":386,"label":"episodes unattributed","layer":"Experience","source":"public/agents/experience.json"},{"count":1,"label":"help-output","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":29,"label":"registry-export","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":0,"label":"runtime","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":62,"label":"source-parse","layer":"Tools","source":"public/tools/spec-tools.json counts.byWitness"},{"count":6,"label":"external (tool list not in either repository)","layer":"Tools","source":"public/tools/spec-tools.json counts"},{"count":178,"label":"typecheck ok","layer":"All catalogs","source":"counts.typecheckOk of the four catalogs"}],"source":"counts of the four catalog JSON files and public/agents/experience.json"},"title":{"en":"Evidence and witnesses","ru":"Свидетели и доказательства"},"typecheckOk":true}],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","counts":{"chapters":7,"diagrams":6,"enabled":7,"laws":7,"phases":7,"ruChapters":7,"sections":32,"sources":31,"sourcesCheckout":2,"sourcesVendored":29,"specs":9,"tables":7,"typecheckOk":8},"document":{"chapters":["project","rules","layers","alphabet","queen","tooling","evidence"],"diagrams":["ladder","agent-ring","phase-cycle","law-hierarchy","skills-crons-agents","tools-map"],"enabled":true,"id":"docs/system","link":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/specs/docs/system.t27","locales":["en","ru"],"sha256":"ab7ee1773622aa46442aec7aeca5cdd1a1a3c36f6321451a5e426df80a75945b","sources":[{"kind":"dir","path":"specs/skills","rel":"specs/skills","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/skills","where":"vendored"},{"kind":"dir","path":"specs/crons","rel":"specs/crons","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/crons","where":"vendored"},{"kind":"dir","path":"specs/agents","rel":"specs/agents","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/agents","where":"vendored"},{"kind":"dir","path":"specs/tools","rel":"specs/tools","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/tools","where":"vendored"},{"kind":"dir","path":"specs/i18n","rel":"specs/i18n","repo":"t27","sha256":null,"url":"https://github.com/gHashTag/t27/tree/93727f733e23baf032d54505095777f16676d70b/specs/i18n","where":"vendored"},{"kind":"file","path":"SOUL.md","rel":"SOUL.md","repo":"t27","sha256":"cb9b44e13d6d0b314f9626f9cca438e5f17ed6847b194220f9e80b32209e052e","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/SOUL.md","where":"vendored"},{"kind":"file","path":"AGENTS.md","rel":"AGENTS.md","repo":"t27","sha256":"1c9b8cce1600d4220d74498d187934e0b935ad1eae6deb9c1b100057ce9ac9e9","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/AGENTS.md","where":"vendored"},{"kind":"file","path":"CLAUDE.md","rel":"CLAUDE.md","repo":"t27","sha256":"b6250fd688a9d794b9eaecebd9882905aa49bfab06616be82211a87fe098656d","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/CLAUDE.md","where":"vendored"},{"kind":"file","path":"docs/agents/AGENTS_ALPHABET.md","rel":"docs/agents/AGENTS_ALPHABET.md","repo":"t27","sha256":"c99352b305322031ee8af0c4777ae54c52ef50c694ff2aa0f4d95ab2fa82734a","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/agents/AGENTS_ALPHABET.md","where":"vendored"},{"kind":"file","path":"docs/T27-CONSTITUTION.md","rel":"docs/T27-CONSTITUTION.md","repo":"t27","sha256":"2c06724425f721ef6356edc9a14e4f1af530d1246c5c6a318fd42f59aaa319a5","url":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/docs/T27-CONSTITUTION.md","where":"vendored"}],"specPath":"specs/docs/system.t27","title":{"en":"t27 / Trinity -- the system, its rules and its evidence","ru":"t27 / Trinity -- система, её правила и её доказательства"},"typecheckOk":true},"figures":{"agent-ring":{"agents":[{"layer":"Archetypal","letter":"A","name":"Alpha (Architecture)","ordinal":1,"skills":0,"tools":0},{"layer":"Archetypal","letter":"B","name":"Beta (Build)","ordinal":2,"skills":0,"tools":0},{"layer":"Archetypal","letter":"C","name":"Gamma (Compiler Core)","ordinal":3,"skills":0,"tools":1},{"layer":"Archetypal","letter":"D","name":"Delta (De-Zigfication)","ordinal":4,"skills":0,"tools":0},{"layer":"Archetypal","letter":"E","name":"Epsilon (Experience)","ordinal":5,"skills":0,"tools":1},{"layer":"Archetypal","letter":"F","name":"Phi (Formal Conformance)","ordinal":6,"skills":0,"tools":0},{"layer":"Archetypal","letter":"G","name":"Gamma (Graph)","ordinal":7,"skills":0,"tools":0},{"layer":"Archetypal","letter":"H","name":"Eta (HSLM)","ordinal":8,"skills":0,"tools":0},{"layer":"Archetypal","letter":"I","name":"Iota (ISA)","ordinal":9,"skills":0,"tools":0},{"layer":"Spiritual","letter":"J","name":"Iota-extended (Jobs)","ordinal":10,"skills":0,"tools":0},{"layer":"Spiritual","letter":"K","name":"Kappa (Kernel)","ordinal":11,"skills":0,"tools":0},{"layer":"Spiritual","letter":"L","name":"Lambda (Language)","ordinal":12,"skills":0,"tools":0},{"layer":"Spiritual","letter":"M","name":"Mu (Metrics)","ordinal":13,"skills":0,"tools":0},{"layer":"Spiritual","letter":"N","name":"Nu (Numeric)","ordinal":14,"skills":0,"tools":0},{"layer":"Spiritual","letter":"O","name":"Omicron (Orchestration)","ordinal":15,"skills":0,"tools":0},{"layer":"Spiritual","letter":"P","name":"Pi (Physics)","ordinal":16,"skills":0,"tools":0},{"layer":"Spiritual","letter":"Q","name":"Theta (Queue)","ordinal":17,"skills":0,"tools":0},{"layer":"Spiritual","letter":"R","name":"Rho (Runtime)","ordinal":18,"skills":0,"tools":0},{"layer":"Physical","letter":"S","name":"Sigma (Specs)","ordinal":19,"skills":0,"tools":0},{"layer":"Physical","letter":"T","name":"Tau (TRINITY Queen)","ordinal":20,"skills":2,"tools":3},{"layer":"Physical","letter":"U","name":"Upsilon (Universe)","ordinal":21,"skills":0,"tools":0},{"layer":"Physical","letter":"V","name":"Vau (Verdict)","ordinal":22,"skills":0,"tools":2},{"layer":"Physical","letter":"W","name":"Double-Vav (Workflow)","ordinal":23,"skills":0,"tools":1},{"layer":"Physical","letter":"X","name":"Chi (External)","ordinal":24,"skills":0,"tools":0},{"layer":"Physical","letter":"Y","name":"Psi (Yield/DePIN)","ordinal":25,"skills":0,"tools":0},{"layer":"Physical","letter":"Z","name":"Zeta (Zero-Touch)","ordinal":26,"skills":0,"tools":0},{"layer":"Physical","letter":"TI","name":"Ti (Security)","ordinal":27,"skills":0,"tools":0}],"source":"public/agents/spec-agents.json"},"ladder":{"counts":{"agents":27,"crons":33,"docsChapters":7,"functions":28,"skills":26,"specs":1407,"tools":92},"source":"public/*/spec-*.json counts and public/t27/manifest.json"},"law-hierarchy":{"laws":[{"law":"L1","name":"TRACEABILITY"},{"law":"L2","name":"GENERATION"},{"law":"L3","name":"PURITY"},{"law":"L4","name":"TESTABILITY"},{"law":"L5","name":"IDENTITY"},{"law":"L6","name":"CEILING"},{"law":"L7","name":"UNITY"}],"priority":"L1 > L2 > … > L7","source":"docs/T27-CONSTITUTION.md"},"phase-cycle":{"phases":[{"n":1,"name":"PLAN","note":"","steps":4},{"n":2,"name":"ASSIGN","note":"","steps":4},{"n":3,"name":"RUN","note":"","steps":4},{"n":4,"name":"TEST & BENCH","note":"","steps":4},{"n":5,"name":"VERDICT","note":"","steps":4},{"n":6,"name":"EVOLVE","note":"","steps":6},{"n":7,"name":"GIT WORKFLOW","note":"new — SOUL law","steps":4}],"source":"docs/agents/AGENTS_ALPHABET.md"},"skills-crons-agents":{"counts":{"agents":27,"crons":33,"skills":26,"tools":92},"edges":[{"from":"t27/C","kind":"agent-holds-tool","to":"tri/gen"},{"from":"t27/E","kind":"agent-holds-tool","to":"tri/experience"},{"from":"t27/T","kind":"agent-holds-skill","to":"t27/phi-loop"},{"from":"t27/T","kind":"agent-holds-skill","to":"t27/tri-pipeline"},{"from":"t27/T","kind":"agent-holds-tool","to":"tri/gen"},{"from":"t27/T","kind":"agent-holds-tool","to":"tri/test"},{"from":"t27/T","kind":"agent-holds-tool","to":"mcp/inngest-dev"},{"from":"t27/V","kind":"agent-holds-tool","to":"tri/test"},{"from":"t27/V","kind":"agent-holds-tool","to":"tri/verdict"},{"from":"t27/W","kind":"agent-holds-tool","to":"tri/cell"}],"source":"public/crons/spec-crons.json RUNS, public/agents/spec-agents.json SKILLS/TOOLS"},"tools-map":{"external":["mcp/gitbutler","mcp/inngest-dev","mcp/neon","mcp/notebooklm","mcp/railway-mcp-server","mcp/zig-docs"],"mcpByRepo":{"gHashTag/t27":["mcp/gitbutler","mcp/inngest-dev","mcp/notebooklm","mcp/t27-traceability","mcp/tri-mcp","mcp/tri-ssot"],"gHashTag/trinity":["mcp/needle","mcp/neon","mcp/railway-mcp-server","mcp/trinity","mcp/zig-docs"]},"source":"public/tools/spec-tools.json groups","triByAgent":{"-":["gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/test","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","tri/abandoned","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/vsim","tri/window","tri/worktrees"],"C":["tri/gen"],"E":["tri/experience"],"T":["tri/gen","tri/test"],"V":["tri/test","tri/verdict"],"W":["tri/cell"]}}},"generatedAt":"2026-09-15T15:26:47.768Z","i18n":[{"bundle":"apps/website/i18n/docs.ru.json","coverage":{"n":7,"total":7},"enabled":true,"fields":["TITLE","BODY"],"locale":"ru","missing":[],"scope":["specs/docs","specs/docs/chapters"],"sha256":"5fc4a500afccdf91e81c2bbde7b770e673efccc96e2d87ef377abdf723748610","spec":"specs/i18n/docs-ru.t27"}],"ladder":{"agents":27,"crons":33,"docsChapters":7,"functions":28,"skills":26,"specs":1407,"tools":92},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit / sources[trinity].commit","trinity":"ddceafb50cd0e620387161228fa2c9ae134047de"},"version":1,"warnings":[],"contentSha256":"7256f4fcacb95605a6e5952f18d0520200da91444e6cce0cebe92e7a07dd3811"} diff --git a/apps/website/public/functions/spec-functions.json b/apps/website/public/functions/spec-functions.json index c51501ed94..6f2aa91afc 100644 --- a/apps/website/public/functions/spec-functions.json +++ b/apps/website/public/functions/spec-functions.json @@ -1 +1 @@ -{"codeOnly":[],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"18b894248fb768de194664767d2c533d5ab1371880d3055b823838aa6d3f4d67","counts":{"byDomain":{"analytics":2,"broadcast":1,"content":3,"instagram":3,"monitoring":4,"morph":1,"neuro":1,"payment":1,"reels":3,"render":3,"training":4,"webhook":1,"welcome":1},"byProbeResult":{"COMPLETED":7,"FAILED-at-guard":16,"not-deployed":4,"skipped":1},"bySideEffect":{"charges-balance":6,"db-write":16,"external-webhook":3,"messages-admin":6,"messages-owners":2,"messages-user":12,"none":0,"paid-api":19},"byTrigger":{"cron":5,"event":23},"codeOnly":0,"deployUnknown":0,"deployed":24,"notDeployed":4,"specOnly":0,"specPlusCode":28,"specs":28,"typecheckOk":28,"withCronSpec":5,"withDifferences":1},"functions":[{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","legacyId":"daily-sales-advisor","probeResult":"COMPLETED","retries":1,"steps":5},"cronSpec":"inngest/999-multibots-telegraf/daily-sales-advisor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 9 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-sales-advise","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"daily-sales-advisor","NAME":"Daily sales advisor","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/daily-sales-advisor. The step name report-${ownerId} is a template expanded once per owner. A manual invoke on 2026-09-09 messaged 13 owners; the hardening list asks this function to honour safe mode.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts:54","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-owners","load-payments-7d","load-payments-1d","load-payments-2d","report-${ownerId}"],"SUMMARY_EN":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-sales-advise","inSpecCorpus":false,"messages":[],"moduleName":"fn_analytics_sales_advise","name":{"en":"Daily sales advisor","ru":"Ежедневный советник по продажам"},"sha256":"22f09be2b6651090b1704700bf03ee6e25c741ef726c92c34171cb37e0eb4fa4","specPath":"specs/functions/analytics-sales-advise.t27","summary":{"en":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","ru":"Каждый день в 09:00 UTC загружает владельцев ботов и их платежи за последние семь, два и один день и отправляет каждому владельцу отчёт о продажах с копией в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/skillDetector.ts","legacyId":"skill-detector","probeResult":"COMPLETED","retries":1,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/skill-detector","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-skills-detect","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"skill-detector","NAME":"Skill detector","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/skill-detector. The step name detect-${serviceType} is a template expanded once per service type.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts:30","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-existing-skills","detect-${serviceType}","notify-admin"],"SUMMARY_EN":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-skills-detect","inSpecCorpus":false,"messages":[],"moduleName":"fn_analytics_skills_detect","name":{"en":"Skill detector","ru":"Детектор навыков"},"sha256":"e03e0b8b71566e3cce95146ec4825f3421b844c504f10a8ca0e755db14540e53","specPath":"specs/functions/analytics-skills-detect.t27","summary":{"en":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","ru":"Каждый день в 10:00 UTC загружает известные навыки, находит новые типы сервисов по недавнему использованию (по одному шагу на тип сервиса) и уведомляет админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"broadcast-message","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"broadcast","EVENT":"broadcast/message.send","GUARD":"validate-input","ID":"broadcast-message-send","KIND":"function","LEGACY_EVENTS":["broadcast/send-message"],"LEGACY_ID":"broadcast-message","NAME":"Broadcast message","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout (retries 3). Guard is validate-input. A test_telegram_id in the payload narrows the audience to one recipient.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/broadcast/broadcastMessage.ts:22","SIDE_EFFECTS":["messages-user"],"STEPS":["validate-input","check-permissions","fetch-users","send-messages","analyze-results"],"SUMMARY_EN":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"broadcast-message-send","inSpecCorpus":false,"messages":[],"moduleName":"fn_broadcast_message_send","name":{"en":"Broadcast message","ru":"Рассылка сообщения"},"sha256":"53f3415e61b946dfe7216c4d03e52cd53225207b9a8741bf9904dab9092eb357","specPath":"specs/functions/broadcast-message-send.t27","summary":{"en":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","ru":"Отправляет рассылку аудитории бота: проверяет запрос и права отправителя, получает список получателей, отправляет сообщения и подводит итоги доставки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateDetailedScript.ts","legacyId":"generate-detailed-script","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/detailed-script.generate","GUARD":"zod-schema","ID":"content-detailed-script-generate","KIND":"function","LEGACY_EVENTS":["content/generate-detailed-script"],"LEGACY_ID":"generate-detailed-script","NAME":"Generate detailed script","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateDetailedScript.ts:191","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-script-record","generate-detailed-scenes","save-detailed-script"],"SUMMARY_EN":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-detailed-script-generate","inSpecCorpus":false,"messages":[],"moduleName":"fn_content_detailed_script_generate","name":{"en":"Generate detailed script","ru":"Детальный сценарий"},"sha256":"4360313e280f6638395cf3aab44984a5a215e39aa9c61d11ed8c0e5ecfb028a3","specPath":"specs/functions/content-detailed-script-generate.t27","summary":{"en":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","ru":"Разворачивает сценарий в подробные сцены: создаёт запись сценария, генерирует текст по сценам языковой моделью и сохраняет детальный сценарий."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateScenarioClips.ts","legacyId":"generate-scenario-clips","probeResult":"FAILED-at-guard","retries":null,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scenario-clips.generate","GUARD":"zod-schema","ID":"content-scenario-clips-generate","KIND":"function","LEGACY_EVENTS":["content/generate-scenario-clips"],"LEGACY_ID":"generate-scenario-clips","NAME":"Generate scenario clips","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateScenarioClips.ts:221","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-scenario-record","generate-detailed-scenes","create-text-reports-archive","update-scenario-record"],"SUMMARY_EN":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scenario-clips-generate","inSpecCorpus":false,"messages":[],"moduleName":"fn_content_scenario_clips_generate","name":{"en":"Generate scenario clips","ru":"Клипы по сценарию"},"sha256":"a7f24bf9b6921c2d3b5bbb4bd4519b8bb42623a7bf54ba85ceb3b39e12799c74","specPath":"specs/functions/content-scenario-clips-generate.t27","summary":{"en":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","ru":"Строит сценарий по скрипту: создаёт запись, генерирует подробные сцены, упаковывает текстовые отчёты в архив и обновляет запись."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateContentScripts.ts","legacyId":"generate-content-scripts","probeResult":"FAILED-at-guard","retries":null,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scripts.generate","GUARD":"zod-schema","ID":"content-scripts-generate","KIND":"function","LEGACY_EVENTS":["instagram/generate-scripts"],"LEGACY_ID":"generate-content-scripts","NAME":"Generate content scripts","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema. The legacy event name keeps the instagram/ prefix the function was first registered under.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateContentScripts.ts:44","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["get-reel-data","extract-audio","transcribe-audio","generate-scripts","save-scripts"],"SUMMARY_EN":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scripts-generate","inSpecCorpus":false,"messages":[],"moduleName":"fn_content_scripts_generate","name":{"en":"Generate content scripts","ru":"Сценарии контента"},"sha256":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","specPath":"specs/functions/content-scripts-generate.t27","summary":{"en":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","ru":"Пишет сценарии контента по сохранённому рилсу: загружает рилс, извлекает и расшифровывает звук, генерирует сценарии языковой моделью и сохраняет их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/findCompetitors.ts","legacyId":"find-competitors","probeResult":"FAILED-at-guard","retries":null,"steps":6},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/competitors.find","GUARD":"validate-input","ID":"instagram-competitors-find","KIND":"function","LEGACY_EVENTS":["instagram/find-competitors"],"LEGACY_ID":"find-competitors","NAME":"Find competitors","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/findCompetitors.ts:134","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-api","filter-by-followers","save-to-competitors-table","send-telegram-notification"],"SUMMARY_EN":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-competitors-find","inSpecCorpus":false,"messages":[],"moduleName":"fn_instagram_competitors_find","name":{"en":"Find competitors","ru":"Поиск конкурентов"},"sha256":"8201d47aaa9d3ca811c9a2ddf8b4e227645473d0122da9311fd542a5e53cfaa9","specPath":"specs/functions/instagram-competitors-find.t27","summary":{"en":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","ru":"Находит конкурентов в Instagram для проекта: проверяет запрос и проект, вызывает Instagram API, фильтрует по числу подписчиков, сохраняет конкурентов и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/analyzeCompetitorReels.ts","legacyId":"analyze-competitor-reels","probeResult":"FAILED-at-guard","retries":null,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/reels.analyze","GUARD":"validate-input","ID":"instagram-reels-analyze","KIND":"function","LEGACY_EVENTS":["instagram/analyze-reels"],"LEGACY_ID":"analyze-competitor-reels","NAME":"Analyze competitor reels","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/analyzeCompetitorReels.ts:211","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-reels-api","filter-reels-by-date","calculate-metrics","save-to-reels-analysis-table","send-telegram-notification"],"SUMMARY_EN":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-reels-analyze","inSpecCorpus":false,"messages":[],"moduleName":"fn_instagram_reels_analyze","name":{"en":"Analyze competitor reels","ru":"Анализ рилсов конкурента"},"sha256":"6c4c986a981251d73c668906e1bf7d6d1890d1c9cff359d33a05a64551ed5a0a","specPath":"specs/functions/instagram-reels-analyze.t27","summary":{"en":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","ru":"Анализирует недавние рилсы конкурента в Instagram для проекта: проверяет запрос и проект, вызывает API рилсов, фильтрует по дате, считает метрики, сохраняет анализ и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/extractTopContent.ts","legacyId":"extract-top-content","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/top-content.extract","GUARD":"zod-schema","ID":"instagram-top-content-extract","KIND":"function","LEGACY_EVENTS":["instagram/extract-top"],"LEGACY_ID":"extract-top-content","NAME":"Extract top content","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/extractTopContent.ts:33","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["query-top-reels","process-reels","format-report"],"SUMMARY_EN":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-top-content-extract","inSpecCorpus":false,"messages":[],"moduleName":"fn_instagram_top_content_extract","name":{"en":"Extract top content","ru":"Лучший контент"},"sha256":"4b2c8ee5877c376316e94eda74ac07c789c1ee5c467313c7f093a3ae32bdc4b6","specPath":"specs/functions/instagram-top-content-extract.t27","summary":{"en":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","ru":"Извлекает самые результативные рилсы, уже сохранённые для проекта: запрашивает их из базы, обрабатывает и формирует отчёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"critical-error-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/error.report","GUARD":"none","ID":"monitoring-error-report","KIND":"function","LEGACY_EVENTS":["app/error.critical"],"LEGACY_ID":"critical-error-monitor","NAME":"Critical error report","NOTE":"No guard: the event is emitted by the application itself. The hardening list asks the formatter to render string, Error and {message} payloads and never print [object Object].","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:175","SIDE_EFFECTS":["messages-admin"],"STEPS":["analyze-error","format-message","send-notification","log-for-analysis"],"SUMMARY_EN":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-error-report","inSpecCorpus":false,"messages":[],"moduleName":"fn_monitoring_error_report","name":{"en":"Critical error report","ru":"Отчёт о критической ошибке"},"sha256":"13cb1dcbfcb0f13ec58ba56cd2b3b2b788ccbc0e2b6cfc610e46b850889bee15","specPath":"specs/functions/monitoring-error-report.t27","summary":{"en":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","ru":"Сообщает о критической ошибке приложения в админ-чат: анализирует ошибку, форматирует сообщение, отправляет уведомление и записывает инцидент для последующего разбора."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"health-check","probeResult":"COMPLETED","retries":2,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/health-check","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-health-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"health-check","NAME":"Health check","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/health-check. Lives in the same file as monitoring-error-report.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:235","SIDE_EFFECTS":["messages-admin"],"STEPS":["check-api-health","check-inngest-health","notify-unhealthy"],"SUMMARY_EN":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-health-check","inSpecCorpus":false,"messages":[],"moduleName":"fn_monitoring_health_check","name":{"en":"Health check","ru":"Проверка здоровья"},"sha256":"57c23797300ea168c457a74d4edc25c1bcd249408efb634dcd32a7dbfa086260","specPath":"specs/functions/monitoring-health-check.t27","summary":{"en":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","ru":"Каждые 30 минут проверяет API-сервер и сервис Inngest и пишет в админ-чат, если один из них нездоров."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"log-monitor","probeResult":"COMPLETED","retries":2,"steps":4},"cronSpec":"inngest/999-multibots-telegraf/log-monitor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-logs-analyze","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"log-monitor","NAME":"Daily log analysis","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/log-monitor. When LOG_DIR is absent on the host the analysis has nothing to read; the hardening list asks for a fallback to the Inngest run summary.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:352","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-logs-analyze","inSpecCorpus":false,"messages":[],"moduleName":"fn_monitoring_logs_analyze","name":{"en":"Daily log analysis","ru":"Ежедневный анализ логов"},"sha256":"95c9e9bbfaae6a21c206eb8bd48f2a4eb041ab64cfbb9e7e709069e3ac14de52","specPath":"specs/functions/monitoring-logs-analyze.t27","summary":{"en":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","ru":"Каждый день в 10:00 UTC читает логи приложения, ищет в них ошибки и предупреждения, формирует сводку и отправляет её в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"trigger-log-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/logs.trigger","GUARD":"none","ID":"monitoring-logs-trigger","KIND":"function","LEGACY_EVENTS":["logs/monitor.trigger"],"LEGACY_ID":"trigger-log-monitor","NAME":"Log analysis on demand","NOTE":"Shares its file and its four steps with monitoring-logs-analyze; only the trigger differs.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:408","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-logs-trigger","inSpecCorpus":false,"messages":[],"moduleName":"fn_monitoring_logs_trigger","name":{"en":"Log analysis on demand","ru":"Анализ логов по запросу"},"sha256":"9bb3e3fb5d73315392c6a08b674ca0b04d63b1e324dfa2a5ecb50bbdae6d074f","specPath":"specs/functions/monitoring-logs-trigger.t27","summary":{"en":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","ru":"Выполняет тот же анализ логов, что и ежедневная задача, по событию: читает логи, анализирует их, формирует сводку и отправляет в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/training/morphImages.ts","legacyId":"morph-images","probeResult":"FAILED-at-guard","retries":3,"steps":8},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"morph","EVENT":"morph/images.generate","GUARD":"check-user-exists","ID":"morph-images-generate","KIND":"function","LEGACY_EVENTS":["morph/images.requested"],"LEGACY_ID":"morph-images","NAME":"Morph images","NOTE":"Guard is check-user-exists. A second, unregistered copy of this function exists in the tree (src/inngest_app/functions/morphImages.ts); the registered one is the file named in SERVICE.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"is_ru\": true, \"job_id\": \"e2e-probe\", \"image_files\": [], \"extraction_path\": \"/nonexistent/e2e\", \"morphing_type\": \"seamless\", \"model\": \"kling-v1.6-pro\"}","SERVICE":"src/inngest_app/functions/training/morphImages.ts:30","SIDE_EFFECTS":["charges-balance","paid-api","messages-user"],"STEPS":["check-user-exists","check-balance","notify-start","process-all-pairs","process-loop-pair","concatenate-all-videos","cleanup-temp-files","deliver-result"],"SUMMARY_EN":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"morph-images-generate","inSpecCorpus":false,"messages":[],"moduleName":"fn_morph_images_generate","name":{"en":"Morph images","ru":"Морфинг изображений"},"sha256":"2d830937229c3a5e780c372b433bbf53e38ccde9444ecb20e599fb20e65b2444","specPath":"specs/functions/morph-images-generate.t27","summary":{"en":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","ru":"Превращает последовательность изображений пользователя в одно видео: проверяет пользователя и баланс, сообщает о старте, обрабатывает каждую пару изображений в клип, склеивает клипы, очищает временные файлы и отдаёт результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/neuroImageGeneration.ts","legacyId":"neuro-image-generation","probeResult":"FAILED-at-guard","retries":3,"steps":11},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"neuro","EVENT":"neuro/image.generate","GUARD":"check-user","ID":"neuro-image-generate","KIND":"function","LEGACY_EVENTS":["neuro/photo.generate"],"LEGACY_ID":"neuro-image-generation","NAME":"Neuro image generation","NOTE":"Guard is check-user: an unknown telegram_id stops the run before any payment or paid API call. The step names generate-image-${i} and notify-image-${i} are templates the code expands once per requested image.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"prompt\": \"safe-mode probe\", \"is_ru\": true, \"num_images\": 1, \"model_url\": \"e2e/none\"}","SERVICE":"src/inngest_app/functions/neuroImageGeneration.ts:56","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["get-bot","check-user","get-user-gender","update-level","calculate-total-cost","process-payment","get-aspect-ratio","generate-image-${i}","notify-image-${i}","deduct-balance-final","final-notification"],"SUMMARY_EN":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"neuro-image-generate","inSpecCorpus":false,"messages":[],"moduleName":"fn_neuro_image_generate","name":{"en":"Neuro image generation","ru":"Нейро-генерация изображений"},"sha256":"513d1e81f02cb450989ea83082948afcce37819434528fbed6b60930b2941fd8","specPath":"specs/functions/neuro-image-generate.t27","summary":{"en":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","ru":"Генерирует одно или несколько изображений для пользователя Telegram по промпту и URL модели: загружает бота и пользователя, считает полную стоимость, списывает баланс, затем генерирует и отправляет каждое изображение и сводит баланс в конце."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"payment-processing-ai-server","probeResult":"COMPLETED","retries":null,"steps":0},"cronSpec":null,"differences":[{"code":"log","field":"ON_FAILURE","spec":"admin-telegram"}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"payment","EVENT":"payment/ai-server.process","GUARD":"amount-match","ID":"payment-ai-server-process","KIND":"function","LEGACY_EVENTS":["payment/process-ai-server"],"LEGACY_ID":"payment-processing-ai-server","NAME":"AI-server payment processing","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout, where retries is declared as 3 and onFailure is createInngestFailureHandler, which logs and messages the admin chat -- the manifest says on_failure log. Guard is amount-match: an amount matching no plan or option stops the run, which is why the 2026-09-09 probe with IncSum 0.01 COMPLETED without a balance change.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"IncSum\": \"0.01\", \"inv_id\": \"e2e-safe-mode-probe\"}","SERVICE":"src/inngest_app/functions/payments/paymentProcessing.ts:64","SIDE_EFFECTS":["db-write","messages-user"],"STEPS":["check-subscription-plan","check-payment-option","get-user-info","get-bot-config","update-user-balance","send-notification"],"SUMMARY_EN":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","TRIGGER":"event","TZ":"UTC"},"health":"warn","id":"payment-ai-server-process","inSpecCorpus":false,"messages":["ON_FAILURE \"admin-telegram\" differs from the manifest (\"log\")"],"moduleName":"fn_payment_ai_server_process","name":{"en":"AI-server payment processing","ru":"Обработка платежа AI-сервера"},"sha256":"07191109132327c0a3743ccc06815ccd2c64b5b6d604b358d26cb6e236dadfe6","specPath":"specs/functions/payment-ai-server-process.t27","summary":{"en":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","ru":"Обрабатывает платёж, о котором сообщил AI-сервер: сопоставляет сумму с планом подписки или вариантом оплаты, загружает пользователя и конфигурацию бота, обновляет баланс и отправляет уведомление о платеже."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/ai-reels-callback.ts","legacyId":"ai-reels-callback","probeResult":"FAILED-at-guard","retries":3,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.callback","GUARD":"extract-job-id","ID":"reels-ai-callback","KIND":"function","LEGACY_EVENTS":["ai-reels-callback"],"LEGACY_ID":"ai-reels-callback","NAME":"AI reels callback","NOTE":"Guard is extract-job-id: a payload without a job id fails before anything is sent.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/ai-reels-callback.ts:158","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["send-completed-video","send-failed-message","send-processing-update"],"SUMMARY_EN":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-callback","inSpecCorpus":false,"messages":[],"moduleName":"fn_reels_ai_callback","name":{"en":"AI reels callback","ru":"Колбэк AI-рилсов"},"sha256":"8db0866dc43faf34aef111565007cdcdb66dd1d6dea46e8f7c7ab2ec97cdf13e","specPath":"specs/functions/reels-ai-callback.t27","summary":{"en":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","ru":"Обрабатывает колбэк провайдера по задаче AI-рилса: извлекает id задачи, затем отправляет заказчику готовое видео, сообщение об ошибке или статус обработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAIReelsFunction.ts","legacyId":"ai-reels-generation","probeResult":"skipped","retries":2,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.generate","GUARD":"none","ID":"reels-ai-generate","KIND":"function","LEGACY_EVENTS":["ai-reels/generate"],"LEGACY_ID":"ai-reels-generation","NAME":"AI reels generation","NOTE":"No guard: the first step already calls a paid API, so the 2026-09-09 probe skipped this function (PROBE_RESULT skipped). The hardening list asks for a validate-input step before that call.","ON_FAILURE":"log","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/generateAIReelsFunction.ts:44","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-lipsync-video","generate-wan25-video","merge-videos","notify-telegram"],"SUMMARY_EN":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-generate","inSpecCorpus":false,"messages":[],"moduleName":"fn_reels_ai_generate","name":{"en":"AI reels generation","ru":"Генерация AI-рилсов"},"sha256":"11108a3f4c94af03d615a4f82336b1671b293aa40409293448ae52a58d598b20","specPath":"specs/functions/reels-ai-generate.t27","summary":{"en":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","ru":"Собирает короткий AI-рилс: липсинк-видео из изображения и текста или аудио, второй сгенерированный клип, их склейка и отправка результата пользователю в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts","legacyId":"generate-advanced-looping-video","probeResult":"FAILED-at-guard","retries":2,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/loop.generate","GUARD":"min-images","ID":"reels-loop-generate","KIND":"function","LEGACY_EVENTS":["reels/generate-advanced-loop"],"LEGACY_ID":"generate-advanced-looping-video","NAME":"Advanced looping video","NOTE":"Guard is min-images: fewer images than the minimum stops the run before any clip is generated.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"image_urls\": [], \"bot_token\": \"\", \"prompt\": \"safe-mode probe\"}","SERVICE":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts:77","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-morphing-clips","download-video-clips","combine-video-clips","add-music","send-to-telegram","send-to-pulse","cleanup"],"SUMMARY_EN":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-loop-generate","inSpecCorpus":false,"messages":[],"moduleName":"fn_reels_loop_generate","name":{"en":"Advanced looping video","ru":"Зацикленное видео"},"sha256":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","specPath":"specs/functions/reels-loop-generate.t27","summary":{"en":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","ru":"Превращает набор изображений пользователя в зацикленное видео: морфинг-клипы между изображениями, скачивание и склейка, фоновая музыка, доставка пользователю в Telegram и в пульс-канал, затем очистка."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderAvatarVideo.ts","legacyId":"render-avatar-video","probeResult":"FAILED-at-guard","retries":3,"steps":13},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/avatar-video.run","GUARD":"zod-schema","ID":"render-avatar-video-run","KIND":"function","LEGACY_EVENTS":["render/avatar-video"],"LEGACY_ID":"render-avatar-video","NAME":"Render avatar video","NOTE":"Guard is zod-schema. Each wait-* step polls a provider job until it completes.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderAvatarVideo.ts:174","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job","generate-speech-audio","start-hedra-generation","wait-hedra-completion","start-heygen-generation","wait-heygen-completion","generate-transcription","generate-broll-prompts","generate-brolls-parallel","wait-brolls-completion","create-job-settings","upload-settings-to-s3","trigger-render"],"SUMMARY_EN":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-avatar-video-run","inSpecCorpus":false,"messages":[],"moduleName":"fn_render_avatar_video_run","name":{"en":"Render avatar video","ru":"Рендер аватар-видео"},"sha256":"c59d180a0c7866d5115f7d72ba3cf3f88e566c42936937fafba4eec89ab39820","specPath":"specs/functions/render-avatar-video-run.t27","summary":{"en":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","ru":"Создаёт аватар-видео: генерирует речь, запускает генерацию аватара (Hedra, затем HeyGen), расшифровывает, пишет промпты B-roll и параллельно генерирует B-roll, затем записывает настройки задачи в S3 и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/render.ts","legacyId":"render","probeResult":"FAILED-at-guard","retries":3,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/job.run","GUARD":"zod-schema","ID":"render-job-run","KIND":"function","LEGACY_EVENTS":["render"],"LEGACY_ID":"render","NAME":"Render job","NOTE":"Guard is zod-schema: the payload is parsed before any file is downloaded.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/render.ts:38","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job-folder","download-files","render","upload-to-s3","callback"],"SUMMARY_EN":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-job-run","inSpecCorpus":false,"messages":[],"moduleName":"fn_render_job_run","name":{"en":"Render job","ru":"Задача рендера"},"sha256":"0119d4168128917ef6fbd8a991edae96003724af32280a9af0bd8fdbef080656","specPath":"specs/functions/render-job-run.t27","summary":{"en":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","ru":"Рендерит видеозадачу на рендер-сервере: создаёт папку задачи, скачивает входные файлы, рендерит, загружает результат в S3 и вызывает колбэк задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderRiddle.ts","legacyId":"render-riddle","probeResult":"FAILED-at-guard","retries":3,"steps":15},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/riddle.run","GUARD":"zod-schema","ID":"render-riddle-run","KIND":"function","LEGACY_EVENTS":["render-riddle"],"LEGACY_ID":"render-riddle","NAME":"Render riddle video","NOTE":"Guard is zod-schema. The step names generate-broll-${index} and wait-broll-${index} are templates expanded once per scene; start-avatar-generation and wait-avatar-completion appear twice in the code and are listed twice here.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderRiddle.ts:59","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["preflight-render-capacity","load-template-json","create-job","generate-speech-audio","start-avatar-generation","wait-avatar-completion","start-avatar-generation","wait-avatar-completion","extract-avatar-speech-url","generate-transcription","generate-broll-prompts","generate-broll-${index}","wait-broll-${index}","prepare-template-json","trigger-render"],"SUMMARY_EN":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-riddle-run","inSpecCorpus":false,"messages":[],"moduleName":"fn_render_riddle_run","name":{"en":"Render riddle video","ru":"Рендер видео-загадки"},"sha256":"fab0efc9b80a37a8be8d288f95c9e1067c8c8bbcc70cc2af2f5d2f67a6f528f6","specPath":"specs/functions/render-riddle-run.t27","summary":{"en":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","ru":"Создаёт видео-загадку по шаблону: проверяет ёмкость рендера, загружает шаблон, генерирует речь и клипы аватара, расшифровывает, генерирует по одному B-roll на сцену, готовит JSON шаблона и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts","legacyId":"handle-model-training-completed","probeResult":"not-deployed","retries":2,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.complete","GUARD":"unknown","ID":"training-model-complete","KIND":"function","LEGACY_EVENTS":["model/training.completed"],"LEGACY_ID":"handle-model-training-completed","NAME":"Model training completed","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest): the deployed app registers 24 base functions and this one is not among them. Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-training-record","update-training-status","send-telegram-notification"],"SUMMARY_EN":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-complete","inSpecCorpus":false,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_model_complete","name":{"en":"Model training completed","ru":"Обучение модели завершено"},"sha256":"7764be58758765cb0794cbd0621d91356ee6b71ba3adfb462f615b62111d7454","specPath":"specs/functions/training-model-complete.t27","summary":{"en":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","ru":"Обрабатывает событие завершения обучения от провайдера: находит запись обучения, обновляет её статус и список моделей и отправляет пользователю уведомление в Telegram о завершённом или упавшем обучении."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts","legacyId":"generate-model-training","probeResult":"FAILED-at-guard","retries":0,"steps":8},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.start","GUARD":"validate-steps","ID":"training-model-start","KIND":"function","LEGACY_EVENTS":["model/training.start"],"LEGACY_ID":"generate-model-training","NAME":"Model training start (v1)","NOTE":"RETRIES is 0 by declaration: a failed start is not retried, because a retry would create a second Replicate training. Guard is validate-steps.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"steps\": -1, \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"is_ru\": true}","SERVICE":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["validate-credentials","check-duplicates","validate-zip-url","create-replicate-model","save-pending-record","create-replicate-training","update-training-record","notify-user-started"],"SUMMARY_EN":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-start","inSpecCorpus":false,"messages":[],"moduleName":"fn_training_model_start","name":{"en":"Model training start (v1)","ru":"Старт обучения модели (v1)"},"sha256":"90fff63e83a250434c62c3918a91b8a53f7d72a93469ecb589470b1b1bee1c12","specPath":"specs/functions/training-model-start.t27","summary":{"en":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","ru":"Запускает дообучение на Replicate для пользователя: проверяет учётные данные, отклоняет дубликаты, проверяет URL архива, создаёт модель и обучение на Replicate, записывает их и сообщает пользователю о старте."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"model-training-v2","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model-v2.start","GUARD":"check-user-exists","ID":"training-model-v2-start","KIND":"function","LEGACY_EVENTS":["model/training.v2.requested"],"LEGACY_ID":"model-training-v2","NAME":"Model training start (v2)","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout. RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is check-user-exists.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"steps\": 1, \"is_ru\": true, \"gender\": \"male\"}","SERVICE":"src/inngest_app/functions/training/modelTrainingV2.ts:45","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["check-user-exists","update-user-level","get-bot","check-balance","encode-zip","create-training","save-training-to-db","notify-user","deduct-balance","refund-balance","handle-error"],"SUMMARY_EN":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-v2-start","inSpecCorpus":false,"messages":[],"moduleName":"fn_training_model_v2_start","name":{"en":"Model training start (v2)","ru":"Старт обучения модели (v2)"},"sha256":"c4524d253aa50af4b4f7a25d528df1a74f902d4229b0103aa6544a6f79e6274c","specPath":"specs/functions/training-model-v2-start.t27","summary":{"en":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","ru":"Запускает дообучение v2 для пользователя: проверяет пользователя и баланс, кодирует архив обучения, создаёт обучение у провайдера, записывает его, списывает баланс и уведомляет пользователя; при последующем сбое баланс возвращается."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","legacyId":"check-stuck-trainings","probeResult":"not-deployed","retries":null,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/check-stuck-trainings","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"training","EVENT":"","GUARD":"none","ID":"training-stuck-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"check-stuck-trainings","NAME":"Stuck trainings check","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/check-stuck-trainings.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts:47","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-stuck-trainings","check-replicate-status","send-completion-events"],"SUMMARY_EN":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"training-stuck-check","inSpecCorpus":false,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_stuck_check","name":{"en":"Stuck trainings check","ru":"Проверка застрявших обучений"},"sha256":"d8518fb2f0cc62a5ea0ec6d7517bdc477bef77cc95890dadf44381031ea43611","specPath":"specs/functions/training-stuck-check.t27","summary":{"en":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","ru":"Каждые 30 минут находит обучения моделей, всё ещё отмеченные как pending или processing дольше порога, запрашивает у Replicate их реальный статус и порождает события завершения, которые их сверяют."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/webhookHealthGuard.ts","legacyId":"validate-webhook-before-generation","probeResult":"not-deployed","retries":1,"steps":1},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"webhook","EVENT":"webhook/generation.validate","GUARD":"unknown","ID":"webhook-generation-validate","KIND":"function","LEGACY_EVENTS":["video/generation-validate-webhook"],"LEGACY_ID":"validate-webhook-before-generation","NAME":"Webhook validation before generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there. Two other functions in the same file (webhook-health-check, periodic-webhook-health-check) are not registered and have no spec.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts:147","SIDE_EFFECTS":["db-write"],"STEPS":["check-webhook-availability"],"SUMMARY_EN":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"webhook-generation-validate","inSpecCorpus":false,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_webhook_generation_validate","name":{"en":"Webhook validation before generation","ru":"Проверка вебхука перед генерацией"},"sha256":"7a4293fa70eef3448b38f3e6c58d84becf127f5c561225ce43062b8c379e2719","specPath":"specs/functions/webhook-generation-validate.t27","summary":{"en":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","ru":"Проверяет, что эндпоинт вебхука видеогенерации доступен до старта генерации, и записывает результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/welcomeAvatarGeneration.ts","legacyId":"welcome-avatar-generation","probeResult":"not-deployed","retries":2,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"welcome","EVENT":"welcome/avatar.generate","GUARD":"unknown","ID":"welcome-avatar-generate","KIND":"function","LEGACY_EVENTS":["user/welcome.avatar.generate"],"LEGACY_ID":"welcome-avatar-generation","NAME":"Welcome avatar generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/welcomeAvatarGeneration.ts:108","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["validate-bot","select-hero","reserve-gift-slot","generate-image","send-welcome"],"SUMMARY_EN":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"welcome-avatar-generate","inSpecCorpus":false,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_welcome_avatar_generate","name":{"en":"Welcome avatar generation","ru":"Приветственный аватар"},"sha256":"3b27453bd662eaee697645051447f1d63e66c5c2c64a3157ec7caa0be403f4b4","specPath":"specs/functions/welcome-avatar-generate.t27","summary":{"en":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","ru":"Генерирует приветственный аватар для нового пользователя: проверяет бота, выбирает героя, резервирует слот подарка, генерирует изображение и отправляет приветственное сообщение."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-09-13T03:52:07.716Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":28,"total":28},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":856,"tools":92},"manifest":{"deployedApp":{"baseFunctions":24,"mainRegisters":28,"name":"telegram-bot-client","sdk":"js v3.54.2"},"entries":28,"generatedFrom":{"branch":"main","commit":"a9c08b4","note":"Extracted from the source tree by the spec-first design pass of 2026-09-09; three entries carry no file/steps and eight carry retries null because the extractor did not resolve them. Copied by hand into this repository -- no sync script produces it yet."},"probedAt":"2026-09-09","repo":"gHashTag/999-multibots-telegraf"},"version":1} +{"codeOnly":[],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"0fb2ac59f8cf3f1083efb507ed16d34a432203bfd9c40233b770e0111b5a9c97","counts":{"byDomain":{"analytics":2,"broadcast":1,"content":3,"instagram":3,"monitoring":4,"morph":1,"neuro":1,"payment":1,"reels":3,"render":3,"training":4,"webhook":1,"welcome":1},"byProbeResult":{"COMPLETED":7,"FAILED-at-guard":16,"not-deployed":4,"skipped":1},"bySideEffect":{"charges-balance":6,"db-write":16,"external-webhook":3,"messages-admin":6,"messages-owners":2,"messages-user":12,"none":0,"paid-api":19},"byTrigger":{"cron":5,"event":23},"codeOnly":0,"deployUnknown":0,"deployed":24,"notDeployed":4,"specOnly":0,"specPlusCode":28,"specs":28,"typecheckOk":28,"withCronSpec":5,"withDifferences":1},"functions":[{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts","legacyId":"daily-sales-advisor","probeResult":"COMPLETED","retries":1,"steps":5},"cronSpec":"inngest/999-multibots-telegraf/daily-sales-advisor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 9 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-sales-advise","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"daily-sales-advisor","NAME":"Daily sales advisor","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/daily-sales-advisor. The step name report-${ownerId} is a template expanded once per owner. A manual invoke on 2026-09-09 messaged 13 owners; the hardening list asks this function to honour safe mode.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/dailySalesAdvisor.ts:54","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-owners","load-payments-7d","load-payments-1d","load-payments-2d","report-${ownerId}"],"SUMMARY_EN":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-sales-advise","inSpecCorpus":true,"messages":[],"moduleName":"fn_analytics_sales_advise","name":{"en":"Daily sales advisor","ru":"Ежедневный советник по продажам"},"sha256":"22f09be2b6651090b1704700bf03ee6e25c741ef726c92c34171cb37e0eb4fa4","specPath":"specs/functions/analytics-sales-advise.t27","summary":{"en":"Every day at 09:00 UTC loads the bot owners and their payments over the last seven, two and one days and sends each owner a sales report, with a copy to the admin chat.","ru":"Каждый день в 09:00 UTC загружает владельцев ботов и их платежи за последние семь, два и один день и отправляет каждому владельцу отчёт о продажах с копией в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/analytics/skillDetector.ts","legacyId":"skill-detector","probeResult":"COMPLETED","retries":1,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/skill-detector","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"analytics","EVENT":"","GUARD":"none","ID":"analytics-skills-detect","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"skill-detector","NAME":"Skill detector","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/skill-detector. The step name detect-${serviceType} is a template expanded once per service type.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/analytics/skillDetector.ts:30","SIDE_EFFECTS":["messages-owners","messages-admin"],"STEPS":["load-existing-skills","detect-${serviceType}","notify-admin"],"SUMMARY_EN":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"analytics-skills-detect","inSpecCorpus":true,"messages":[],"moduleName":"fn_analytics_skills_detect","name":{"en":"Skill detector","ru":"Детектор навыков"},"sha256":"e03e0b8b71566e3cce95146ec4825f3421b844c504f10a8ca0e755db14540e53","specPath":"specs/functions/analytics-skills-detect.t27","summary":{"en":"Every day at 10:00 UTC loads the known skills, detects new service types from recent usage, one detection step per service type, and notifies the admin chat.","ru":"Каждый день в 10:00 UTC загружает известные навыки, находит новые типы сервисов по недавнему использованию (по одному шагу на тип сервиса) и уведомляет админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"broadcast-message","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"broadcast","EVENT":"broadcast/message.send","GUARD":"validate-input","ID":"broadcast-message-send","KIND":"function","LEGACY_EVENTS":["broadcast/send-message"],"LEGACY_ID":"broadcast-message","NAME":"Broadcast message","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout (retries 3). Guard is validate-input. A test_telegram_id in the payload narrows the audience to one recipient.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/broadcast/broadcastMessage.ts:22","SIDE_EFFECTS":["messages-user"],"STEPS":["validate-input","check-permissions","fetch-users","send-messages","analyze-results"],"SUMMARY_EN":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"broadcast-message-send","inSpecCorpus":true,"messages":[],"moduleName":"fn_broadcast_message_send","name":{"en":"Broadcast message","ru":"Рассылка сообщения"},"sha256":"53f3415e61b946dfe7216c4d03e52cd53225207b9a8741bf9904dab9092eb357","specPath":"specs/functions/broadcast-message-send.t27","summary":{"en":"Sends a broadcast to a bot audience: validates the request, checks the sender permissions, fetches the recipients, sends the messages and summarises the delivery results.","ru":"Отправляет рассылку аудитории бота: проверяет запрос и права отправителя, получает список получателей, отправляет сообщения и подводит итоги доставки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateDetailedScript.ts","legacyId":"generate-detailed-script","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/detailed-script.generate","GUARD":"zod-schema","ID":"content-detailed-script-generate","KIND":"function","LEGACY_EVENTS":["content/generate-detailed-script"],"LEGACY_ID":"generate-detailed-script","NAME":"Generate detailed script","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateDetailedScript.ts:191","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-script-record","generate-detailed-scenes","save-detailed-script"],"SUMMARY_EN":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-detailed-script-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_detailed_script_generate","name":{"en":"Generate detailed script","ru":"Детальный сценарий"},"sha256":"4360313e280f6638395cf3aab44984a5a215e39aa9c61d11ed8c0e5ecfb028a3","specPath":"specs/functions/content-detailed-script-generate.t27","summary":{"en":"Expands a script into detailed scenes: creates the script record, generates the scene-by-scene text with a language model and stores the detailed script.","ru":"Разворачивает сценарий в подробные сцены: создаёт запись сценария, генерирует текст по сценам языковой моделью и сохраняет детальный сценарий."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateScenarioClips.ts","legacyId":"generate-scenario-clips","probeResult":"FAILED-at-guard","retries":null,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scenario-clips.generate","GUARD":"zod-schema","ID":"content-scenario-clips-generate","KIND":"function","LEGACY_EVENTS":["content/generate-scenario-clips"],"LEGACY_ID":"generate-scenario-clips","NAME":"Generate scenario clips","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateScenarioClips.ts:221","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["create-scenario-record","generate-detailed-scenes","create-text-reports-archive","update-scenario-record"],"SUMMARY_EN":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scenario-clips-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_scenario_clips_generate","name":{"en":"Generate scenario clips","ru":"Клипы по сценарию"},"sha256":"a7f24bf9b6921c2d3b5bbb4bd4519b8bb42623a7bf54ba85ceb3b39e12799c74","specPath":"specs/functions/content-scenario-clips-generate.t27","summary":{"en":"Builds a scenario from a script: creates the scenario record, generates the detailed scenes, packs the text reports into an archive and updates the record.","ru":"Строит сценарий по скрипту: создаёт запись, генерирует подробные сцены, упаковывает текстовые отчёты в архив и обновляет запись."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/generateContentScripts.ts","legacyId":"generate-content-scripts","probeResult":"FAILED-at-guard","retries":null,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"content","EVENT":"content/scripts.generate","GUARD":"zod-schema","ID":"content-scripts-generate","KIND":"function","LEGACY_EVENTS":["instagram/generate-scripts"],"LEGACY_ID":"generate-content-scripts","NAME":"Generate content scripts","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema. The legacy event name keeps the instagram/ prefix the function was first registered under.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/generateContentScripts.ts:44","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["get-reel-data","extract-audio","transcribe-audio","generate-scripts","save-scripts"],"SUMMARY_EN":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"content-scripts-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_content_scripts_generate","name":{"en":"Generate content scripts","ru":"Сценарии контента"},"sha256":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","specPath":"specs/functions/content-scripts-generate.t27","summary":{"en":"Writes content scripts from a stored reel: loads the reel, extracts and transcribes the audio, generates the scripts with a language model and stores them.","ru":"Пишет сценарии контента по сохранённому рилсу: загружает рилс, извлекает и расшифровывает звук, генерирует сценарии языковой моделью и сохраняет их."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/findCompetitors.ts","legacyId":"find-competitors","probeResult":"FAILED-at-guard","retries":null,"steps":6},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/competitors.find","GUARD":"validate-input","ID":"instagram-competitors-find","KIND":"function","LEGACY_EVENTS":["instagram/find-competitors"],"LEGACY_ID":"find-competitors","NAME":"Find competitors","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/findCompetitors.ts:134","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-api","filter-by-followers","save-to-competitors-table","send-telegram-notification"],"SUMMARY_EN":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-competitors-find","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_competitors_find","name":{"en":"Find competitors","ru":"Поиск конкурентов"},"sha256":"8201d47aaa9d3ca811c9a2ddf8b4e227645473d0122da9311fd542a5e53cfaa9","specPath":"specs/functions/instagram-competitors-find.t27","summary":{"en":"Finds Instagram competitors for a project: validates the request and the project, calls the Instagram API, filters by follower count, stores the competitors and notifies the requester in Telegram.","ru":"Находит конкурентов в Instagram для проекта: проверяет запрос и проект, вызывает Instagram API, фильтрует по числу подписчиков, сохраняет конкурентов и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/analyzeCompetitorReels.ts","legacyId":"analyze-competitor-reels","probeResult":"FAILED-at-guard","retries":null,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/reels.analyze","GUARD":"validate-input","ID":"instagram-reels-analyze","KIND":"function","LEGACY_EVENTS":["instagram/analyze-reels"],"LEGACY_ID":"analyze-competitor-reels","NAME":"Analyze competitor reels","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is validate-input.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/analyzeCompetitorReels.ts:211","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["validate-input","validate-project","call-instagram-reels-api","filter-reels-by-date","calculate-metrics","save-to-reels-analysis-table","send-telegram-notification"],"SUMMARY_EN":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-reels-analyze","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_reels_analyze","name":{"en":"Analyze competitor reels","ru":"Анализ рилсов конкурента"},"sha256":"6c4c986a981251d73c668906e1bf7d6d1890d1c9cff359d33a05a64551ed5a0a","specPath":"specs/functions/instagram-reels-analyze.t27","summary":{"en":"Analyzes the recent reels of an Instagram competitor for a project: validates the request and the project, calls the reels API, filters by date, computes the metrics, stores the analysis and notifies the requester in Telegram.","ru":"Анализирует недавние рилсы конкурента в Instagram для проекта: проверяет запрос и проект, вызывает API рилсов, фильтрует по дате, считает метрики, сохраняет анализ и уведомляет заказчика в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/content/extractTopContent.ts","legacyId":"extract-top-content","probeResult":"FAILED-at-guard","retries":null,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"instagram","EVENT":"instagram/top-content.extract","GUARD":"zod-schema","ID":"instagram-top-content-extract","KIND":"function","LEGACY_EVENTS":["instagram/extract-top"],"LEGACY_ID":"extract-top-content","NAME":"Extract top content","NOTE":"RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is zod-schema.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/content/extractTopContent.ts:33","SIDE_EFFECTS":["paid-api","db-write"],"STEPS":["query-top-reels","process-reels","format-report"],"SUMMARY_EN":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"instagram-top-content-extract","inSpecCorpus":true,"messages":[],"moduleName":"fn_instagram_top_content_extract","name":{"en":"Extract top content","ru":"Лучший контент"},"sha256":"4b2c8ee5877c376316e94eda74ac07c789c1ee5c467313c7f093a3ae32bdc4b6","specPath":"specs/functions/instagram-top-content-extract.t27","summary":{"en":"Extracts the top-performing reels already stored for a project: queries the stored reels, processes them and formats the report.","ru":"Извлекает самые результативные рилсы, уже сохранённые для проекта: запрашивает их из базы, обрабатывает и формирует отчёт."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"critical-error-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/error.report","GUARD":"none","ID":"monitoring-error-report","KIND":"function","LEGACY_EVENTS":["app/error.critical"],"LEGACY_ID":"critical-error-monitor","NAME":"Critical error report","NOTE":"No guard: the event is emitted by the application itself. The hardening list asks the formatter to render string, Error and {message} payloads and never print [object Object].","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:175","SIDE_EFFECTS":["messages-admin"],"STEPS":["analyze-error","format-message","send-notification","log-for-analysis"],"SUMMARY_EN":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-error-report","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_error_report","name":{"en":"Critical error report","ru":"Отчёт о критической ошибке"},"sha256":"13cb1dcbfcb0f13ec58ba56cd2b3b2b788ccbc0e2b6cfc610e46b850889bee15","specPath":"specs/functions/monitoring-error-report.t27","summary":{"en":"Reports a critical application error to the admin chat: analyzes the error, formats the message, sends the notification and logs the incident for later analysis.","ru":"Сообщает о критической ошибке приложения в админ-чат: анализирует ошибку, форматирует сообщение, отправляет уведомление и записывает инцидент для последующего разбора."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts","legacyId":"health-check","probeResult":"COMPLETED","retries":2,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/health-check","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-health-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"health-check","NAME":"Health check","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/health-check. Lives in the same file as monitoring-error-report.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/criticalErrorMonitor.ts:235","SIDE_EFFECTS":["messages-admin"],"STEPS":["check-api-health","check-inngest-health","notify-unhealthy"],"SUMMARY_EN":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-health-check","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_health_check","name":{"en":"Health check","ru":"Проверка здоровья"},"sha256":"57c23797300ea168c457a74d4edc25c1bcd249408efb634dcd32a7dbfa086260","specPath":"specs/functions/monitoring-health-check.t27","summary":{"en":"Every 30 minutes checks the API server and the Inngest service and messages the admin chat when either is unhealthy.","ru":"Каждые 30 минут проверяет API-сервер и сервис Inngest и пишет в админ-чат, если один из них нездоров."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"log-monitor","probeResult":"COMPLETED","retries":2,"steps":4},"cronSpec":"inngest/999-multibots-telegraf/log-monitor","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"0 10 * * *","DOMAIN":"monitoring","EVENT":"","GUARD":"none","ID":"monitoring-logs-analyze","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"log-monitor","NAME":"Daily log analysis","NOTE":"The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/log-monitor. When LOG_DIR is absent on the host the analysis has nothing to read; the hardening list asks for a fallback to the Inngest run summary.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:352","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"monitoring-logs-analyze","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_logs_analyze","name":{"en":"Daily log analysis","ru":"Ежедневный анализ логов"},"sha256":"95c9e9bbfaae6a21c206eb8bd48f2a4eb041ab64cfbb9e7e709069e3ac14de52","specPath":"specs/functions/monitoring-logs-analyze.t27","summary":{"en":"Every day at 10:00 UTC reads the application logs, analyzes them for errors and warnings, generates a summary and sends it to the admin chat.","ru":"Каждый день в 10:00 UTC читает логи приложения, ищет в них ошибки и предупреждения, формирует сводку и отправляет её в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/monitoring/logMonitor.ts","legacyId":"trigger-log-monitor","probeResult":"COMPLETED","retries":1,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"monitoring","EVENT":"monitoring/logs.trigger","GUARD":"none","ID":"monitoring-logs-trigger","KIND":"function","LEGACY_EVENTS":["logs/monitor.trigger"],"LEGACY_ID":"trigger-log-monitor","NAME":"Log analysis on demand","NOTE":"Shares its file and its four steps with monitoring-logs-analyze; only the trigger differs.","ON_FAILURE":"log","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/monitoring/logMonitor.ts:408","SIDE_EFFECTS":["messages-admin"],"STEPS":["read-logs","analyze-logs","generate-message","send-notification"],"SUMMARY_EN":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"monitoring-logs-trigger","inSpecCorpus":true,"messages":[],"moduleName":"fn_monitoring_logs_trigger","name":{"en":"Log analysis on demand","ru":"Анализ логов по запросу"},"sha256":"9bb3e3fb5d73315392c6a08b674ca0b04d63b1e324dfa2a5ecb50bbdae6d074f","specPath":"specs/functions/monitoring-logs-trigger.t27","summary":{"en":"Runs the same log analysis as the daily job when asked by an event: reads the logs, analyzes them, generates the summary and sends it to the admin chat.","ru":"Выполняет тот же анализ логов, что и ежедневная задача, по событию: читает логи, анализирует их, формирует сводку и отправляет в админ-чат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/training/morphImages.ts","legacyId":"morph-images","probeResult":"FAILED-at-guard","retries":3,"steps":8},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"morph","EVENT":"morph/images.generate","GUARD":"check-user-exists","ID":"morph-images-generate","KIND":"function","LEGACY_EVENTS":["morph/images.requested"],"LEGACY_ID":"morph-images","NAME":"Morph images","NOTE":"Guard is check-user-exists. A second, unregistered copy of this function exists in the tree (src/inngest_app/functions/morphImages.ts); the registered one is the file named in SERVICE.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"is_ru\": true, \"job_id\": \"e2e-probe\", \"image_files\": [], \"extraction_path\": \"/nonexistent/e2e\", \"morphing_type\": \"seamless\", \"model\": \"kling-v1.6-pro\"}","SERVICE":"src/inngest_app/functions/training/morphImages.ts:30","SIDE_EFFECTS":["charges-balance","paid-api","messages-user"],"STEPS":["check-user-exists","check-balance","notify-start","process-all-pairs","process-loop-pair","concatenate-all-videos","cleanup-temp-files","deliver-result"],"SUMMARY_EN":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"morph-images-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_morph_images_generate","name":{"en":"Morph images","ru":"Морфинг изображений"},"sha256":"2d830937229c3a5e780c372b433bbf53e38ccde9444ecb20e599fb20e65b2444","specPath":"specs/functions/morph-images-generate.t27","summary":{"en":"Morphs a sequence of user images into one video: checks the user and the balance, notifies the start, processes each image pair into a clip, concatenates the clips, cleans up and delivers the result.","ru":"Превращает последовательность изображений пользователя в одно видео: проверяет пользователя и баланс, сообщает о старте, обрабатывает каждую пару изображений в клип, склеивает клипы, очищает временные файлы и отдаёт результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/neuroImageGeneration.ts","legacyId":"neuro-image-generation","probeResult":"FAILED-at-guard","retries":3,"steps":11},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"neuro","EVENT":"neuro/image.generate","GUARD":"check-user","ID":"neuro-image-generate","KIND":"function","LEGACY_EVENTS":["neuro/photo.generate"],"LEGACY_ID":"neuro-image-generation","NAME":"Neuro image generation","NOTE":"Guard is check-user: an unknown telegram_id stops the run before any payment or paid API call. The step names generate-image-${i} and notify-image-${i} are templates the code expands once per requested image.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"prompt\": \"safe-mode probe\", \"is_ru\": true, \"num_images\": 1, \"model_url\": \"e2e/none\"}","SERVICE":"src/inngest_app/functions/neuroImageGeneration.ts:56","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["get-bot","check-user","get-user-gender","update-level","calculate-total-cost","process-payment","get-aspect-ratio","generate-image-${i}","notify-image-${i}","deduct-balance-final","final-notification"],"SUMMARY_EN":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"neuro-image-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_neuro_image_generate","name":{"en":"Neuro image generation","ru":"Нейро-генерация изображений"},"sha256":"513d1e81f02cb450989ea83082948afcce37819434528fbed6b60930b2941fd8","specPath":"specs/functions/neuro-image-generate.t27","summary":{"en":"Generates one or more images for a Telegram user from a prompt and a model URL: loads the bot and the user, computes the total cost, charges the balance, then generates and sends each image and settles the balance at the end.","ru":"Генерирует одно или несколько изображений для пользователя Telegram по промпту и URL модели: загружает бота и пользователя, считает полную стоимость, списывает баланс, затем генерирует и отправляет каждое изображение и сводит баланс в конце."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"payment-processing-ai-server","probeResult":"COMPLETED","retries":null,"steps":0},"cronSpec":null,"differences":[{"code":"log","field":"ON_FAILURE","spec":"admin-telegram"}],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"payment","EVENT":"payment/ai-server.process","GUARD":"amount-match","ID":"payment-ai-server-process","KIND":"function","LEGACY_EVENTS":["payment/process-ai-server"],"LEGACY_ID":"payment-processing-ai-server","NAME":"AI-server payment processing","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout, where retries is declared as 3 and onFailure is createInngestFailureHandler, which logs and messages the admin chat -- the manifest says on_failure log. Guard is amount-match: an amount matching no plan or option stops the run, which is why the 2026-09-09 probe with IncSum 0.01 COMPLETED without a balance change.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"COMPLETED","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{\"IncSum\": \"0.01\", \"inv_id\": \"e2e-safe-mode-probe\"}","SERVICE":"src/inngest_app/functions/payments/paymentProcessing.ts:64","SIDE_EFFECTS":["db-write","messages-user"],"STEPS":["check-subscription-plan","check-payment-option","get-user-info","get-bot-config","update-user-balance","send-notification"],"SUMMARY_EN":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","TRIGGER":"event","TZ":"UTC"},"health":"warn","id":"payment-ai-server-process","inSpecCorpus":true,"messages":["ON_FAILURE \"admin-telegram\" differs from the manifest (\"log\")"],"moduleName":"fn_payment_ai_server_process","name":{"en":"AI-server payment processing","ru":"Обработка платежа AI-сервера"},"sha256":"07191109132327c0a3743ccc06815ccd2c64b5b6d604b358d26cb6e236dadfe6","specPath":"specs/functions/payment-ai-server-process.t27","summary":{"en":"Processes a payment reported by the AI server: matches the amount to a subscription plan or a payment option, loads the user and the bot configuration, updates the user balance and sends the payment notification.","ru":"Обрабатывает платёж, о котором сообщил AI-сервер: сопоставляет сумму с планом подписки или вариантом оплаты, загружает пользователя и конфигурацию бота, обновляет баланс и отправляет уведомление о платеже."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/ai-reels-callback.ts","legacyId":"ai-reels-callback","probeResult":"FAILED-at-guard","retries":3,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.callback","GUARD":"extract-job-id","ID":"reels-ai-callback","KIND":"function","LEGACY_EVENTS":["ai-reels-callback"],"LEGACY_ID":"ai-reels-callback","NAME":"AI reels callback","NOTE":"Guard is extract-job-id: a payload without a job id fails before anything is sent.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/ai-reels-callback.ts:158","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["send-completed-video","send-failed-message","send-processing-update"],"SUMMARY_EN":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-callback","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_ai_callback","name":{"en":"AI reels callback","ru":"Колбэк AI-рилсов"},"sha256":"8db0866dc43faf34aef111565007cdcdb66dd1d6dea46e8f7c7ab2ec97cdf13e","specPath":"specs/functions/reels-ai-callback.t27","summary":{"en":"Handles the provider callback for an AI reel job: extracts the job id, then sends the completed video, a failure message or a processing update to the user who ordered it.","ru":"Обрабатывает колбэк провайдера по задаче AI-рилса: извлекает id задачи, затем отправляет заказчику готовое видео, сообщение об ошибке или статус обработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAIReelsFunction.ts","legacyId":"ai-reels-generation","probeResult":"skipped","retries":2,"steps":4},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/ai.generate","GUARD":"none","ID":"reels-ai-generate","KIND":"function","LEGACY_EVENTS":["ai-reels/generate"],"LEGACY_ID":"ai-reels-generation","NAME":"AI reels generation","NOTE":"No guard: the first step already calls a paid API, so the 2026-09-09 probe skipped this function (PROBE_RESULT skipped). The hardening list asks for a validate-input step before that call.","ON_FAILURE":"log","PROBE_RESULT":"skipped","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/generateAIReelsFunction.ts:44","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-lipsync-video","generate-wan25-video","merge-videos","notify-telegram"],"SUMMARY_EN":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-ai-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_ai_generate","name":{"en":"AI reels generation","ru":"Генерация AI-рилсов"},"sha256":"11108a3f4c94af03d615a4f82336b1671b293aa40409293448ae52a58d598b20","specPath":"specs/functions/reels-ai-generate.t27","summary":{"en":"Builds a short AI reel: a lip-sync video from an image and a text or audio track, a second generated clip, the two merged, and the result sent to the user in Telegram.","ru":"Собирает короткий AI-рилс: липсинк-видео из изображения и текста или аудио, второй сгенерированный клип, их склейка и отправка результата пользователю в Telegram."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts","legacyId":"generate-advanced-looping-video","probeResult":"FAILED-at-guard","retries":2,"steps":7},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"reels","EVENT":"reels/loop.generate","GUARD":"min-images","ID":"reels-loop-generate","KIND":"function","LEGACY_EVENTS":["reels/generate-advanced-loop"],"LEGACY_ID":"generate-advanced-looping-video","NAME":"Advanced looping video","NOTE":"Guard is min-images: fewer images than the minimum stops the run before any clip is generated.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"image_urls\": [], \"bot_token\": \"\", \"prompt\": \"safe-mode probe\"}","SERVICE":"src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts:77","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["generate-morphing-clips","download-video-clips","combine-video-clips","add-music","send-to-telegram","send-to-pulse","cleanup"],"SUMMARY_EN":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"reels-loop-generate","inSpecCorpus":true,"messages":[],"moduleName":"fn_reels_loop_generate","name":{"en":"Advanced looping video","ru":"Зацикленное видео"},"sha256":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","specPath":"specs/functions/reels-loop-generate.t27","summary":{"en":"Turns a set of user images into a looping video: morphing clips between the images, download and concatenation, background music, delivery to the user in Telegram and to the pulse channel, then cleanup.","ru":"Превращает набор изображений пользователя в зацикленное видео: морфинг-клипы между изображениями, скачивание и склейка, фоновая музыка, доставка пользователю в Telegram и в пульс-канал, затем очистка."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderAvatarVideo.ts","legacyId":"render-avatar-video","probeResult":"FAILED-at-guard","retries":3,"steps":13},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/avatar-video.run","GUARD":"zod-schema","ID":"render-avatar-video-run","KIND":"function","LEGACY_EVENTS":["render/avatar-video"],"LEGACY_ID":"render-avatar-video","NAME":"Render avatar video","NOTE":"Guard is zod-schema. Each wait-* step polls a provider job until it completes.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderAvatarVideo.ts:174","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job","generate-speech-audio","start-hedra-generation","wait-hedra-completion","start-heygen-generation","wait-heygen-completion","generate-transcription","generate-broll-prompts","generate-brolls-parallel","wait-brolls-completion","create-job-settings","upload-settings-to-s3","trigger-render"],"SUMMARY_EN":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-avatar-video-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_avatar_video_run","name":{"en":"Render avatar video","ru":"Рендер аватар-видео"},"sha256":"c59d180a0c7866d5115f7d72ba3cf3f88e566c42936937fafba4eec89ab39820","specPath":"specs/functions/render-avatar-video-run.t27","summary":{"en":"Produces an avatar video: generates the speech audio, runs the avatar generation (Hedra, then HeyGen), transcribes, writes B-roll prompts and generates the B-rolls in parallel, then writes the job settings to S3 and triggers the render.","ru":"Создаёт аватар-видео: генерирует речь, запускает генерацию аватара (Hedra, затем HeyGen), расшифровывает, пишет промпты B-roll и параллельно генерирует B-roll, затем записывает настройки задачи в S3 и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/render.ts","legacyId":"render","probeResult":"FAILED-at-guard","retries":3,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/job.run","GUARD":"zod-schema","ID":"render-job-run","KIND":"function","LEGACY_EVENTS":["render"],"LEGACY_ID":"render","NAME":"Render job","NOTE":"Guard is zod-schema: the payload is parsed before any file is downloaded.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/render.ts:38","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["create-job-folder","download-files","render","upload-to-s3","callback"],"SUMMARY_EN":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-job-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_job_run","name":{"en":"Render job","ru":"Задача рендера"},"sha256":"0119d4168128917ef6fbd8a991edae96003724af32280a9af0bd8fdbef080656","specPath":"specs/functions/render-job-run.t27","summary":{"en":"Renders a video job on the render server: creates the job folder, downloads the inputs, renders, uploads the output to S3 and calls the job callback.","ru":"Рендерит видеозадачу на рендер-сервере: создаёт папку задачи, скачивает входные файлы, рендерит, загружает результат в S3 и вызывает колбэк задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/render/renderRiddle.ts","legacyId":"render-riddle","probeResult":"FAILED-at-guard","retries":3,"steps":15},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"render","EVENT":"render/riddle.run","GUARD":"zod-schema","ID":"render-riddle-run","KIND":"function","LEGACY_EVENTS":["render-riddle"],"LEGACY_ID":"render-riddle","NAME":"Render riddle video","NOTE":"Guard is zod-schema. The step names generate-broll-${index} and wait-broll-${index} are templates expanded once per scene; start-avatar-generation and wait-avatar-completion appear twice in the code and are listed twice here.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":3,"SAFE_PROBE":"{}","SERVICE":"src/inngest_app/functions/render/renderRiddle.ts:59","SIDE_EFFECTS":["paid-api","external-webhook","db-write"],"STEPS":["preflight-render-capacity","load-template-json","create-job","generate-speech-audio","start-avatar-generation","wait-avatar-completion","start-avatar-generation","wait-avatar-completion","extract-avatar-speech-url","generate-transcription","generate-broll-prompts","generate-broll-${index}","wait-broll-${index}","prepare-template-json","trigger-render"],"SUMMARY_EN":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"render-riddle-run","inSpecCorpus":true,"messages":[],"moduleName":"fn_render_riddle_run","name":{"en":"Render riddle video","ru":"Рендер видео-загадки"},"sha256":"fab0efc9b80a37a8be8d288f95c9e1067c8c8bbcc70cc2af2f5d2f67a6f528f6","specPath":"specs/functions/render-riddle-run.t27","summary":{"en":"Produces a riddle video from a template: checks render capacity, loads the template, generates the speech audio and the avatar clips, transcribes, generates one B-roll per scene, prepares the template JSON and triggers the render.","ru":"Создаёт видео-загадку по шаблону: проверяет ёмкость рендера, загружает шаблон, генерирует речь и клипы аватара, расшифровывает, генерирует по одному B-roll на сцену, готовит JSON шаблона и запускает рендер."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts","legacyId":"handle-model-training-completed","probeResult":"not-deployed","retries":2,"steps":3},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.complete","GUARD":"unknown","ID":"training-model-complete","KIND":"function","LEGACY_EVENTS":["model/training.completed"],"LEGACY_ID":"handle-model-training-completed","NAME":"Model training completed","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest): the deployed app registers 24 base functions and this one is not among them. Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/existing/handleModelTrainingCompleted.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-training-record","update-training-status","send-telegram-notification"],"SUMMARY_EN":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-complete","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_model_complete","name":{"en":"Model training completed","ru":"Обучение модели завершено"},"sha256":"7764be58758765cb0794cbd0621d91356ee6b71ba3adfb462f615b62111d7454","specPath":"specs/functions/training-model-complete.t27","summary":{"en":"Handles the training-completed event from the provider: finds the training record, updates its status and the model list, and sends the user a Telegram notification about the finished or failed training.","ru":"Обрабатывает событие завершения обучения от провайдера: находит запись обучения, обновляет её статус и список моделей и отправляет пользователю уведомление в Telegram о завершённом или упавшем обучении."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts","legacyId":"generate-model-training","probeResult":"FAILED-at-guard","retries":0,"steps":8},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model.start","GUARD":"validate-steps","ID":"training-model-start","KIND":"function","LEGACY_EVENTS":["model/training.start"],"LEGACY_ID":"generate-model-training","NAME":"Model training start (v1)","NOTE":"RETRIES is 0 by declaration: a failed start is not retried, because a retry would create a second Replicate training. Guard is validate-steps.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":0,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"steps\": -1, \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"is_ru\": true}","SERVICE":"src/inngest_app/functions/existing/generateModelTrainingFunction.ts:38","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["validate-credentials","check-duplicates","validate-zip-url","create-replicate-model","save-pending-record","create-replicate-training","update-training-record","notify-user-started"],"SUMMARY_EN":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-start","inSpecCorpus":true,"messages":[],"moduleName":"fn_training_model_start","name":{"en":"Model training start (v1)","ru":"Старт обучения модели (v1)"},"sha256":"90fff63e83a250434c62c3918a91b8a53f7d72a93469ecb589470b1b1bee1c12","specPath":"specs/functions/training-model-start.t27","summary":{"en":"Starts a Replicate fine-tune for a user: validates credentials, refuses duplicates, checks the training archive URL, creates the Replicate model and training, records it, and tells the user the training has started.","ru":"Запускает дообучение на Replicate для пользователя: проверяет учётные данные, отклоняет дубликаты, проверяет URL архива, создаёт модель и обучение на Replicate, записывает их и сообщает пользователю о старте."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":true,"file":null,"legacyId":"model-training-v2","probeResult":"FAILED-at-guard","retries":null,"steps":0},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"training","EVENT":"training/model-v2.start","GUARD":"check-user-exists","ID":"training-model-v2-start","KIND":"function","LEGACY_EVENTS":["model/training.v2.requested"],"LEGACY_ID":"model-training-v2","NAME":"Model training start (v2)","NOTE":"The manifest carries no file, steps or retries for this function (its extractor did not resolve them); SERVICE, STEPS and RETRIES here were read from the same checkout. RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. Guard is check-user-exists.","ON_FAILURE":"log","PROBE_RESULT":"FAILED-at-guard","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"{\"telegram_id\": \"0\", \"bot_name\": \"e2e_nonexistent_bot\", \"zipUrl\": \"\", \"triggerWord\": \"e2e\", \"modelName\": \"e2e\", \"steps\": 1, \"is_ru\": true, \"gender\": \"male\"}","SERVICE":"src/inngest_app/functions/training/modelTrainingV2.ts:45","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["check-user-exists","update-user-level","get-bot","check-balance","encode-zip","create-training","save-training-to-db","notify-user","deduct-balance","refund-balance","handle-error"],"SUMMARY_EN":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"training-model-v2-start","inSpecCorpus":true,"messages":[],"moduleName":"fn_training_model_v2_start","name":{"en":"Model training start (v2)","ru":"Старт обучения модели (v2)"},"sha256":"c4524d253aa50af4b4f7a25d528df1a74f902d4229b0103aa6544a6f79e6274c","specPath":"specs/functions/training-model-v2-start.t27","summary":{"en":"Starts a v2 fine-tune for a user: checks the user and the balance, encodes the training archive, creates the training on the provider, records it, deducts the balance and notifies the user; on a later failure the balance is refunded.","ru":"Запускает дообучение v2 для пользователя: проверяет пользователя и баланс, кодирует архив обучения, создаёт обучение у провайдера, записывает его, списывает баланс и уведомляет пользователя; при последующем сбое баланс возвращается."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/training/checkStuckTrainings.ts","legacyId":"check-stuck-trainings","probeResult":"not-deployed","retries":null,"steps":3},"cronSpec":"inngest/999-multibots-telegraf/check-stuck-trainings","differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"*/30 * * * *","DOMAIN":"training","EVENT":"","GUARD":"none","ID":"training-stuck-check","KIND":"function","LEGACY_EVENTS":[],"LEGACY_ID":"check-stuck-trainings","NAME":"Stuck trainings check","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/check-stuck-trainings. Since host PR #2328 (2026-09-10) a training that Replicate answers 404 for is retired: model_trainings.status set to failed with the fixed error text, one warn to the admin, no event and no user message; two rows from 2025-12-02 had been re-asked every 30 minutes for nine months. Skipped in safe mode. The 404 branch is not yet stated as a step; the code is its only witness.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":4,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/training/checkStuckTrainings.ts:47","SIDE_EFFECTS":["charges-balance","paid-api","messages-user","db-write"],"STEPS":["find-stuck-trainings","check-replicate-status","send-completion-events"],"SUMMARY_EN":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","TRIGGER":"cron","TZ":"UTC"},"health":"ok","id":"training-stuck-check","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_training_stuck_check","name":{"en":"Stuck trainings check","ru":"Проверка застрявших обучений"},"sha256":"e78e6abf68de0ce2b1f2810e02555111fcccd78a5e27765d7d54c0440936dfa2","specPath":"specs/functions/training-stuck-check.t27","summary":{"en":"Every 30 minutes finds model trainings still marked pending or processing past the stuck threshold, asks Replicate for their real status and emits the completion events that reconcile them.","ru":"Каждые 30 минут находит обучения моделей, всё ещё отмеченные как pending или processing дольше порога, запрашивает у Replicate их реальный статус и порождает события завершения, которые их сверяют."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/webhookHealthGuard.ts","legacyId":"validate-webhook-before-generation","probeResult":"not-deployed","retries":1,"steps":1},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"webhook","EVENT":"webhook/generation.validate","GUARD":"unknown","ID":"webhook-generation-validate","KIND":"function","LEGACY_EVENTS":["video/generation-validate-webhook"],"LEGACY_ID":"validate-webhook-before-generation","NAME":"Webhook validation before generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there. Two other functions in the same file (webhook-health-check, periodic-webhook-health-check) are not registered and have no spec.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":1,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/webhookHealthGuard.ts:147","SIDE_EFFECTS":["db-write"],"STEPS":["check-webhook-availability"],"SUMMARY_EN":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"webhook-generation-validate","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_webhook_generation_validate","name":{"en":"Webhook validation before generation","ru":"Проверка вебхука перед генерацией"},"sha256":"7a4293fa70eef3448b38f3e6c58d84becf127f5c561225ce43062b8c379e2719","specPath":"specs/functions/webhook-generation-validate.t27","summary":{"en":"Checks that the video-generation webhook endpoint is reachable before a generation is started and records the result.","ru":"Проверяет, что эндпоинт вебхука видеогенерации доступен до старта генерации, и записывает результат."},"typecheckOk":true,"witness":"spec+code"},{"code":{"control":"spec+code","deployed":false,"file":"src/inngest_app/functions/welcomeAvatarGeneration.ts","legacyId":"welcome-avatar-generation","probeResult":"not-deployed","retries":2,"steps":5},"cronSpec":null,"differences":[],"discarded":0,"fields":{"CONTROL":"spec+code","CRON":"","DOMAIN":"welcome","EVENT":"welcome/avatar.generate","GUARD":"unknown","ID":"welcome-avatar-generate","KIND":"function","LEGACY_EVENTS":["user/welcome.avatar.generate"],"LEGACY_ID":"welcome-avatar-generation","NAME":"Welcome avatar generation","NOTE":"Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). Guard is unknown because the function could not be probed there.","ON_FAILURE":"admin-telegram","PROBE_RESULT":"not-deployed","REPO":"999-multibots-telegraf","RETRIES":2,"SAFE_PROBE":"","SERVICE":"src/inngest_app/functions/welcomeAvatarGeneration.ts:108","SIDE_EFFECTS":["paid-api","messages-user"],"STEPS":["validate-bot","select-hero","reserve-gift-slot","generate-image","send-welcome"],"SUMMARY_EN":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","TRIGGER":"event","TZ":"UTC"},"health":"ok","id":"welcome-avatar-generate","inSpecCorpus":true,"messages":["not on the production build probed 2026-09-09 (deployed_2026_09_09 false)"],"moduleName":"fn_welcome_avatar_generate","name":{"en":"Welcome avatar generation","ru":"Приветственный аватар"},"sha256":"3b27453bd662eaee697645051447f1d63e66c5c2c64a3157ec7caa0be403f4b4","specPath":"specs/functions/welcome-avatar-generate.t27","summary":{"en":"Generates a welcome avatar for a new user: validates the bot, selects a hero, reserves a gift slot, generates the image and sends the welcome message.","ru":"Генерирует приветственный аватар для нового пользователя: проверяет бота, выбирает героя, резервирует слот подарка, генерирует изображение и отправляет приветственное сообщение."},"typecheckOk":true,"witness":"spec+code"}],"generatedAt":"2026-09-15T15:22:20.637Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":28,"total":28},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":1407,"tools":92},"manifest":{"deployedApp":{"baseFunctions":24,"mainRegisters":28,"name":"telegram-bot-client","sdk":"js v3.54.2"},"entries":28,"generatedFrom":{"branch":"main","commit":"a9c08b4","note":"Extracted from the source tree by the spec-first design pass of 2026-09-09; three entries carry no file/steps and eight carry retries null because the extractor did not resolve them. Copied by hand into this repository -- no sync script produces it yet."},"probedAt":"2026-09-09","repo":"gHashTag/999-multibots-telegraf"},"version":1} diff --git a/apps/website/public/skills/skills-core.json b/apps/website/public/skills/skills-core.json index 3002573a27..10128607a8 100644 --- a/apps/website/public/skills/skills-core.json +++ b/apps/website/public/skills/skills-core.json @@ -1 +1 @@ -{"version":1,"provenance":{"manifestSha256":"77041c2fff42fe594a45d1df412c22df5b2c7e15befa7d191ea11fc42e041c30","specManifestSha256":"4970a54d1cc7fc3954c66a9a11f885d7b2b4633614618f7896adb94cb3589e28","indexerSha256":"e7ad55414d2d48fa05cc7e2619af06bc4d3c82d6018c8a373adf3dc7402faff3"},"skillCount":26,"coverage":{"skillsBound":["t27/tri","t27/tri-pipeline","t27/wrap-up"],"skillsUnbound":["t27/measure-corpus","t27/phi-loop","t27/wave-audit","trinity/blog-post","trinity/board-sync","trinity/cloud","trinity/doctor","trinity/farm-garden","trinity/fpga-synth","trinity/god-mode","trinity/implement-issue","trinity/queen-hive-visuals","trinity/review-code","trinity/run-tests","trinity/scholar","trinity/status","trinity/tech-tree","trinity/tri","trinity/trinity-test","trinity/ux-wave","trinity/vibee-gen","trinity/vsa-verify","trinity/wave"],"skillsBroken":[],"specsWithSkill":["compiler/skill/registry.t27","specs/automation/wrapup-auto.t27","specs/pipeline/e2e_test.t27"],"specsWithoutSkill":853,"baselineUnbound":23},"skillToSpecs":{"t27/tri":["compiler/skill/registry.t27"],"t27/tri-pipeline":["specs/pipeline/e2e_test.t27"],"t27/wrap-up":["specs/automation/wrapup-auto.t27"]},"specToSkills":{"compiler/skill/registry.t27":["t27/tri"],"specs/automation/wrapup-auto.t27":["t27/wrap-up"],"specs/pipeline/e2e_test.t27":["t27/tri-pipeline"]}} +{"version":1,"provenance":{"manifestSha256":"77041c2fff42fe594a45d1df412c22df5b2c7e15befa7d191ea11fc42e041c30","specManifestSha256":"d03407c0fefe8cf1aaed1b85acda93964dbb3e213e0dd64cc015665e806272a8","indexerSha256":"e7ad55414d2d48fa05cc7e2619af06bc4d3c82d6018c8a373adf3dc7402faff3"},"skillCount":26,"coverage":{"skillsBound":["t27/tri","t27/tri-pipeline","t27/wrap-up"],"skillsUnbound":["t27/measure-corpus","t27/phi-loop","t27/wave-audit","trinity/blog-post","trinity/board-sync","trinity/cloud","trinity/doctor","trinity/farm-garden","trinity/fpga-synth","trinity/god-mode","trinity/implement-issue","trinity/queen-hive-visuals","trinity/review-code","trinity/run-tests","trinity/scholar","trinity/status","trinity/tech-tree","trinity/tri","trinity/trinity-test","trinity/ux-wave","trinity/vibee-gen","trinity/vsa-verify","trinity/wave"],"skillsBroken":[],"specsWithSkill":["compiler/skill/registry.t27","specs/automation/wrapup-auto.t27","specs/pipeline/e2e_test.t27"],"specsWithoutSkill":1404,"baselineUnbound":23},"skillToSpecs":{"t27/tri":["compiler/skill/registry.t27"],"t27/tri-pipeline":["specs/pipeline/e2e_test.t27"],"t27/wrap-up":["specs/automation/wrapup-auto.t27"]},"specToSkills":{"compiler/skill/registry.t27":["t27/tri"],"specs/automation/wrapup-auto.t27":["t27/wrap-up"],"specs/pipeline/e2e_test.t27":["t27/tri-pipeline"]}} diff --git a/apps/website/public/skills/spec-skills.json b/apps/website/public/skills/spec-skills.json index b112e9f26c..1c1d8c9190 100644 --- a/apps/website/public/skills/spec-skills.json +++ b/apps/website/public/skills/spec-skills.json @@ -1 +1 @@ -{"codeOnly":[],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"1d66142158e49a5a78ce907dd191dd469c690f068165ae53acde5befb1285c20","counts":{"codeOnly":0,"runBy":0,"specOnly":0,"specPlusCode":26,"specs":26,"typecheckOk":26},"generatedAt":"2026-09-13T03:52:07.716Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":26,"total":26},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":856,"tools":92},"skills":[{"code":{"health":"warn","link":"unbound","path":"t27/measure-corpus/SKILL.md","sha256":"b8fb7503f660a81b2fee57cde8998b18bbf6c6f334ca2ee69424c3ccf99f3211"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/measure-corpus","KIND":"skill","NAME":"MEASURE THE CORPUS","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","TAGS":["corpus","measurement","honesty"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/measure-corpus","inSpecCorpus":false,"messages":[],"moduleName":"skill_t27_measure_corpus","name":{"en":"MEASURE THE CORPUS"},"runBy":[],"sha256":"740d067747a4de74acb2be6ba7072f11ef58da37700addab7e7a172cc0c397aa","specPath":"specs/skills/t27-measure-corpus.t27","summary":{"en":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","ru":"Выбор правильного инструмента для любого утверждения о корпусе спек t27 и список ловушек, которые уже давали неверные опубликованные числа. Использовать перед тем, как цитировать любое число о корпусе."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/phi-loop/SKILL.md","sha256":"d8af7f6a9cbc39ed4557291528f36748e07292ef752f5159e2827f59b2dd7bc6"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/phi-loop","KIND":"skill","NAME":"PHI LOOP","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","TAGS":["workflow","spec-first","tdd"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/phi-loop","inSpecCorpus":false,"messages":[],"moduleName":"skill_t27_phi_loop","name":{"en":"PHI LOOP"},"runBy":[],"sha256":"19dba96ffef309c75a31bc54d282f25026afa8beeb3a6f97600946700a5f74db","specPath":"specs/skills/t27-phi-loop.t27","summary":{"en":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","ru":"Девятифазный цикл spec-first разработки: Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri/skill.md","sha256":"8fb4d4796c2dc7adab9670a65709ce0451633e6f1f076d5e490270596636042a"},"discarded":0,"fields":{"COMMAND":"/tri","ENABLED":true,"ID":"t27/tri","KIND":"skill","NAME":"tri","REPO":"t27","SOURCE":"skill.md","SPECS":["compiler/skill/registry.t27"],"SUMMARY_EN":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","TAGS":["tri","workflow","seal"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri","inSpecCorpus":false,"messages":[],"moduleName":"skill_t27_tri","name":{"en":"tri"},"runBy":[],"sha256":"99f03be9bbefc5f7c3b0637717e69650f11b0bf8644563b4e03bd24d12a66c89","specPath":"specs/skills/t27-tri.t27","summary":{"en":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","ru":"Команды tri для работы со скилом: begin, правка .t27-спеки, seal hash, gen, test, verdict, experience. Реестр скилов описан в compiler/skill/registry.t27."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri-pipeline/SKILL.md","sha256":"b4bfc290b86a4a1d4513cf9ace0a43526ca8fe98e0d97ff1eb59ea7997aa7427"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/tri-pipeline","KIND":"skill","NAME":"TRI Pipeline","REPO":"t27","SOURCE":"SKILL.md","SPECS":["specs/pipeline/e2e_test.t27"],"SUMMARY_EN":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","TAGS":["tri","pipeline","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri-pipeline","inSpecCorpus":false,"messages":[],"moduleName":"skill_t27_tri_pipeline","name":{"en":"TRI Pipeline"},"runBy":[],"sha256":"716635d0a782f18bfd6d112d88aeacc9e1961b81a85aec42b91a970fd55ce662","specPath":"specs/skills/t27-tri-pipeline.t27","summary":{"en":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","ru":"Выполнение команд tri (gen, test, verify, seal, verdict) для spec-first разработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/wave-audit/SKILL.md","sha256":"4cd0dd22105ae7fe86091a69ec297df729661181f147c0b59f8e8e94a90e9100"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/wave-audit","KIND":"skill","NAME":"Wave Audit — Comprehensive Project Analysis","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","TAGS":["audit","issues","plan"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wave-audit","inSpecCorpus":false,"messages":[],"moduleName":"skill_t27_wave_audit","name":{"en":"Wave Audit — Comprehensive Project Analysis"},"runBy":[],"sha256":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","specPath":"specs/skills/t27-wave-audit.t27","summary":{"en":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","ru":"Полный аудит проекта t27: разбор GitHub issues, поиск слабых мест, обзор SOTA, декомпозированный план и реализация критичных исправлений."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/wrap-up/skill.md","sha256":"a4a9b4fd9d022c212add3479cde725f6b9bd56bc31d2d600ba771cbd009329f9"},"discarded":0,"fields":{"COMMAND":"/wrap-up","ENABLED":true,"ID":"t27/wrap-up","KIND":"skill","NAME":"wrap-up","REPO":"t27","SOURCE":"skill.md","SPECS":["specs/automation/wrapup-auto.t27"],"SUMMARY_EN":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","TAGS":["memory","notebooklm","session"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wrap-up","inSpecCorpus":false,"messages":[],"moduleName":"skill_t27_wrap_up","name":{"en":"wrap-up"},"runBy":[],"sha256":"5f6e7ed53ca0f4ca52320a9c1ebdbbf079e371836de109c94dc440847fa0f2dc","specPath":"specs/skills/t27-wrap-up.t27","summary":{"en":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","ru":"Оформление и загрузка итогов сессии в NotebookLM как постоянной семантической памяти."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/blog-post/SKILL.md","sha256":"2cb755fd4a60a76d568a0742aeda34da60a2441774139646e0ebf4bd2a185493"},"discarded":0,"fields":{"COMMAND":"/blog-post","ENABLED":true,"ID":"trinity/blog-post","KIND":"skill","NAME":"blog-post","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","TAGS":["blog","publish","website"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/blog-post","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_blog_post","name":{"en":"blog-post"},"runBy":[],"sha256":"028f49b8d26ed69b4f8db6991666a5f51b9a2c2737291ceb3258bfd11ff7c3e7","specPath":"specs/skills/trinity-blog-post.t27","summary":{"en":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","ru":"Написать и опубликовать пост в блог t27.ai: где блог реально живёт, схема Post с обязательными свидетельствами, обложка и проверки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/board-sync/SKILL.md","sha256":"f4bfa63737cf7a2078ae6e42f68943384214159243243ae8ec971ddeaac1825e"},"discarded":0,"fields":{"COMMAND":"/board [sync|audit|fix]","ENABLED":true,"ID":"trinity/board-sync","KIND":"skill","NAME":"board","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","TAGS":["github","board","labels"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/board-sync","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_board_sync","name":{"en":"board"},"runBy":[],"sha256":"45ece51f52ec529802e387903a06b3fc58f3dcc088823785511c924c57567c32","specPath":"specs/skills/trinity-board-sync.t27","summary":{"en":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","ru":"Автосинхронизация GitHub Project Board: заполнить пустые поля, согласовать метки со статусом доски, проверить полноту полей."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/cloud/SKILL.md","sha256":"53aa338dddc4e6b8a0fd82f6d3b8dc9ac9b245b3457559c3c44f325ede0130e6"},"discarded":0,"fields":{"COMMAND":"/cloud [status|agents|events|full]","ENABLED":true,"ID":"trinity/cloud","KIND":"skill","NAME":"cloud","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","TAGS":["dashboard","railway","agents"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/cloud","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_cloud","name":{"en":"cloud"},"runBy":[],"sha256":"7eb9c81b10e1dd99998207ce71b792342f1f8bdd3852b974f27eb20418ca480e","specPath":"specs/skills/trinity-cloud.t27","summary":{"en":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","ru":"Панель Trinity Cloud Dev: контейнеры, тренировочная ферма, issues, PR, расходы. Для проверки состояния роя агентов и CI/CD."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/doctor/SKILL.md","sha256":"68efdf79301066d5e64e72babc91ddb867899786186fa360e6775b8365059815"},"discarded":0,"fields":{"COMMAND":"/doctor [quick|full|scan|junk|docs|dupes] [lang:ru|en]","ENABLED":true,"ID":"trinity/doctor","KIND":"skill","NAME":"doctor","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","TAGS":["health","repo","report"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/doctor","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_doctor","name":{"en":"doctor"},"runBy":[],"sha256":"4e74c213b43b2b2c253dda134a93795b3a6e627a4711d5fc8dffb3067c1cb0b0","specPath":"specs/skills/trinity-doctor.t27","summary":{"en":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","ru":"ЛЕКАРЬ: диагностика, лечение, коммит грязных файлов, надзор за мусором, документацией и дубликатами, честный отчёт. Каждый цикл = действие + доказательство."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/farm-garden/SKILL.md","sha256":"6721489885755a64bfdd07f0407b0ddad366c713cb2723098c0fc63b4e196bb4"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"trinity/farm-garden","KIND":"skill","NAME":"Garden — Quantum Gardener for Trinity Farm","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","TAGS":["farm","hslm","workers"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/farm-garden","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_farm_garden","name":{"en":"Garden — Quantum Gardener for Trinity Farm"},"runBy":[],"sha256":"4afded3071ac34a51d06749ea6983dfd0238d1dcb78856ae19b836122019c080","specPath":"specs/skills/trinity-farm-garden.t27","summary":{"en":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","ru":"Автономный управляющий популяцией фермы: наблюдает, эволюционирует и перерабатывает рабочих обучения HSLM."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/fpga-synth/SKILL.md","sha256":"de3915e66cdab0f3207f53f6ea22a85b258c8a998b614231eebf7afab2ca9ec3"},"discarded":0,"fields":{"COMMAND":"/fpga-synth ","ENABLED":true,"ID":"trinity/fpga-synth","KIND":"skill","NAME":"fpga-synth","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","TAGS":["fpga","verilog","synthesis"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/fpga-synth","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_fpga_synth","name":{"en":"fpga-synth"},"runBy":[],"sha256":"2d3563e302746a958794670cd14404a7c4e6854dcf546468dd5f91907ff299e4","specPath":"specs/skills/trinity-fpga-synth.t27","summary":{"en":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","ru":"Конвейер синтеза FPGA от .tri-спеки до битстрима. Для работы с Verilog, FPGA и аппаратным синтезом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/god-mode/SKILL.md","sha256":"0c48e328ae4cf1cbaffef270e7dbe16fac59a7fba845547179bcfe078f65ee7a"},"discarded":0,"fields":{"COMMAND":"/god-mode [status|agents|tasks|violations]","ENABLED":true,"ID":"trinity/god-mode","KIND":"skill","NAME":"god-mode","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","TAGS":["dashboard","agents","monitoring"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/god-mode","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_god_mode","name":{"en":"god-mode"},"runBy":[],"sha256":"577f3aa5eb4280c6be165fd7d0458fb849988246800eef63c77b3c774091706f","specPath":"specs/skills/trinity-god-mode.t27","summary":{"en":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","ru":"GOD MODE: панель наблюдения за агентами — состояние роя, очередь задач, соблюдение конвейера, предохранители, активность git, нарушения правил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/implement-issue/SKILL.md","sha256":"88ccafaece204489bd38ee3f2fbd5f7db3d38275c2ba7e5a9bfca2852be596bb"},"discarded":0,"fields":{"COMMAND":"/implement-issue [issue-number]","ENABLED":true,"ID":"trinity/implement-issue","KIND":"skill","NAME":"implement-issue","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","TAGS":["github","issue","pr"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/implement-issue","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_implement_issue","name":{"en":"implement-issue"},"runBy":[],"sha256":"789be8f18768603dfb45d8664ad51fc1bb1311f82a0288c3a93efc19c08534e6","specPath":"specs/skills/trinity-implement-issue.t27","summary":{"en":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","ru":"Прочитать GitHub issue, создать ветку, реализовать решение и открыть PR. Для работы по номеру задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/queen-hive-visuals/SKILL.md","sha256":"c6d914dc81c84fc13dacca37de258563261a451a139e3c1644bbdc8b7a97b414"},"discarded":0,"fields":{"COMMAND":"/queen-hive-visuals","ENABLED":true,"ID":"trinity/queen-hive-visuals","KIND":"skill","NAME":"queen-hive-visuals","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","TAGS":["queen","ui","3d"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/queen-hive-visuals","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_queen_hive_visuals","name":{"en":"queen-hive-visuals"},"runBy":[],"sha256":"327c5189a740d092290fe5dd10de3cf4da56b54a44d1bec9be8414451e70ae0e","specPath":"specs/skills/trinity-queen-hive-visuals.t27","summary":{"en":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","ru":"Поддержка плавающего улья Королевы, оригинального логотипа TRINITY остриём вниз, чётких табло задач и согласованных движений камеры."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/review-code/SKILL.md","sha256":"e5712744615c2422d9a0c81413422e6e1a2ac97c4bfac8bb508f1cd04bf05d75"},"discarded":0,"fields":{"COMMAND":"/review-code [file-or-branch] (optional)","ENABLED":true,"ID":"trinity/review-code","KIND":"skill","NAME":"review-code","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","TAGS":["review","quality"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/review-code","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_review_code","name":{"en":"review-code"},"runBy":[],"sha256":"c5cf6004cce2295f921b7d983e252a9aafbd92ad662db2d5b595824c2774b7a4","specPath":"specs/skills/trinity-review-code.t27","summary":{"en":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","ru":"Ревью недавних изменений кода: ошибки, стиль, улучшения. После написания кода или перед коммитом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/run-tests/SKILL.md","sha256":"7ead75ab36b840ec5588013b0de8f2c23ed3a27a0d3a5160d7e68334e5992a79"},"discarded":0,"fields":{"COMMAND":"/run-tests [module] (optional - all, vsa, vm, bsd, hslm, tri-api)","ENABLED":true,"ID":"trinity/run-tests","KIND":"skill","NAME":"run-tests","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","TAGS":["tests","build","zig"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/run-tests","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_run_tests","name":{"en":"run-tests"},"runBy":[],"sha256":"8c683823554ee75c69b4dd27468eb819bd8f7ea003e91cf216b80be03dca13a6","specPath":"specs/skills/trinity-run-tests.t27","summary":{"en":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","ru":"Собрать проект, проверить предупреждения, прогнать все тесты и отчитаться. Быстрая проверка здоровья кодовой базы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/scholar/SKILL.md","sha256":"5c35431008a4d2694cf2e7ad65c01d6f1559d5836b8f7cfb0c3422f752d5b2c2"},"discarded":0,"fields":{"COMMAND":"/scholar [scan|eval|apply|full|report|topic:\"query\"]","ENABLED":true,"ID":"trinity/scholar","KIND":"skill","NAME":"scholar","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","TAGS":["research","perplexity","mcp"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/scholar","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_scholar","name":{"en":"scholar"},"runBy":[],"sha256":"70bc5c1e10d9905fa22a38de1c7b88926b75d69b6a82305e69613820f70f83ae","specPath":"specs/skills/trinity-scholar.t27","summary":{"en":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","ru":"Саморазвивающийся исследовательский агент: сканирует веб на релевантные технологии, оценивает находки, предлагает улучшения. Perplexity Sonar через MCP."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/status/SKILL.md","sha256":"e4bc75ff45cdc52968f1ef0ac6e1a1a482072f78e14283b1e71b6fe13a054890"},"discarded":0,"fields":{"COMMAND":"/status [quick|full] [lang:ru|en]","ENABLED":true,"ID":"trinity/status","KIND":"skill","NAME":"status","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","TAGS":["dashboard","ouroboros","verdict"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/status","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_status","name":{"en":"status"},"runBy":[],"sha256":"09185d50913f410e9c5cdd3338d2fd38adb97f0997208c6440c89b2325268b9c","specPath":"specs/skills/trinity-status.t27","summary":{"en":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","ru":"Живая панель системы: 12-мерная оценка уробороса, verdict v3, агенты, здоровье сборки, рекомендации."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tech-tree/SKILL.md","sha256":"f84c8ea67ab696a9bc3828ccfe8b8708572fe5ddb7574f409ddf75c467744a0f"},"discarded":0,"fields":{"COMMAND":"/tree [next|path|blocked|update]","ENABLED":true,"ID":"trinity/tech-tree","KIND":"skill","NAME":"tree","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","TAGS":["issues","dag","planning"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tech-tree","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_tech_tree","name":{"en":"tree"},"runBy":[],"sha256":"951d3d8a6dd0c1c6c62a303c660a45205624bf2f558fd090b34fe5b45b9f1501","specPath":"specs/skills/trinity-tech-tree.t27","summary":{"en":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","ru":"Дерево технологических зависимостей: DAG задач, предпосылки, критический путь, заблокированные и готовые задачи. Единый источник порядка работ."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tri/SKILL.md","sha256":"4c38d1005219336c88583e985b5208653fa199d12481d98173604922dc35e4a5"},"discarded":0,"fields":{"COMMAND":"/tri [short] [full] [audit] [coverage] [lang:ru|en] [humor|prof|toxic|zen]","ENABLED":true,"ID":"trinity/tri","KIND":"skill","NAME":"tri","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","TAGS":["tri","dashboard","status"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tri","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_tri","name":{"en":"tri"},"runBy":[],"sha256":"09f58e175bfeb73fb49d30bfdc6e0b197d775e6883fa8bb9417dffc92ffefebd","specPath":"specs/skills/trinity-tri.t27","summary":{"en":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","ru":"Панель статуса TRI: по умолчанию режим мысли агента, /tri full — визуальная панель."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/trinity-test/SKILL.md","sha256":"648c7f095f0b9739a17d7a5d47fbfbe3e6dc2b2bd940fb6cea837632940b6c56"},"discarded":0,"fields":{"COMMAND":"/trinity-test [module] (vsa, vm, firebird, all)","ENABLED":true,"ID":"trinity/trinity-test","KIND":"skill","NAME":"trinity-test","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","TAGS":["tests","vsa","vm"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/trinity-test","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_trinity_test","name":{"en":"trinity-test"},"runBy":[],"sha256":"b70f5629049065477023aa4b4d51eb8272de0750a5c4809d7d445c698729c1a0","specPath":"specs/skills/trinity-trinity-test.t27","summary":{"en":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","ru":"Прогон тестовых наборов Trinity и разбор результатов: VSA, VM, Firebird, WASM или всё целиком."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/ux-wave/SKILL.md","sha256":"9690999e8d1e2091c80ef838e41a1d4dc48d9ffea1cf29a39294238f69954b28"},"discarded":0,"fields":{"COMMAND":"/ux-wave [wave-number] [audit]","ENABLED":true,"ID":"trinity/ux-wave","KIND":"skill","NAME":"ux-wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","TAGS":["ux","agents","queen"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/ux-wave","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_ux_wave","name":{"en":"ux-wave"},"runBy":[],"sha256":"e63fa9e43303eefdf53f1f95499c15bb7794c7f08c9d14c1958f61e362e75ada","specPath":"specs/skills/trinity-ux-wave.t27","summary":{"en":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","ru":"Автономные волны улучшения UX: 4 параллельных агента на волну, аудит каждые 5 волн, коммит исправлений. Для чата и сети Queen UI."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vibee-gen/SKILL.md","sha256":"fc01e69f1395b590603692a29d9bb1ee533104bb716b5bb284738027df17b395"},"discarded":0,"fields":{"COMMAND":"/vibee-gen ","ENABLED":true,"ID":"trinity/vibee-gen","KIND":"skill","NAME":"vibee-gen","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","TAGS":["codegen","zig","verilog"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vibee-gen","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_vibee_gen","name":{"en":"vibee-gen"},"runBy":[],"sha256":"769952ebb9d14eba7cdd2ee226b9d266de20e692ac0ee1e66ba6f622564a91f9","specPath":"specs/skills/trinity-vibee-gen.t27","summary":{"en":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","ru":"Генерация кода Zig или Verilog из спецификаций VIBEE. При создании или обновлении .tri-спек и перегенерации кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vsa-verify/SKILL.md","sha256":"8b9c4518b1bc5dd468b12697a436f7d959278466b5282e575709d7981722905b"},"discarded":0,"fields":{"COMMAND":"/vsa-verify [operation or proof to verify]","ENABLED":true,"ID":"trinity/vsa-verify","KIND":"skill","NAME":"vsa-verify","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","TAGS":["vsa","math","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vsa-verify","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_vsa_verify","name":{"en":"vsa-verify"},"runBy":[],"sha256":"311455eaad1ec081b56395b38564babf52e10966f35b98b862d97bc5be60ff52","specPath":"specs/skills/trinity-vsa-verify.t27","summary":{"en":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","ru":"Проверка математических доказательств и операций VSA: bind/unbind/bundle, тождества phi."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/wave/SKILL.md","sha256":"ecf06fdfa467158f6758066aba41a8e49699f37e61c18e62716da765a7eb5487"},"discarded":0,"fields":{"COMMAND":"/wave [status|spawn |deploy|progress]","ENABLED":true,"ID":"trinity/wave","KIND":"skill","NAME":"wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","TAGS":["farm","railway","scaling"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/wave","inSpecCorpus":false,"messages":[],"moduleName":"skill_trinity_wave","name":{"en":"wave"},"runBy":[],"sha256":"0d205500e7adf560ff03ecfd59e90ee13b51f4624e27555d4142e5b184100d6b","specPath":"specs/skills/trinity-wave.t27","summary":{"en":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","ru":"Управление волнами фермы: аккаунты Railway, запуск рабочих, раскатка конфигов, прогресс волны. Для масштабирования тренировочной фермы."},"typecheckOk":true,"witness":"spec+code"}],"version":1} +{"codeOnly":[],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"66cbe775cb6c651d7f9d04b2752888b8cd3958515de28b74aeca76d196f0a1d5","counts":{"codeOnly":0,"runBy":0,"specOnly":0,"specPlusCode":26,"specs":26,"typecheckOk":26},"generatedAt":"2026-09-15T15:22:20.637Z","i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":26,"total":26},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":1407,"tools":92},"skills":[{"code":{"health":"warn","link":"unbound","path":"t27/measure-corpus/SKILL.md","sha256":"b8fb7503f660a81b2fee57cde8998b18bbf6c6f334ca2ee69424c3ccf99f3211"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/measure-corpus","KIND":"skill","NAME":"MEASURE THE CORPUS","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","TAGS":["corpus","measurement","honesty"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/measure-corpus","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_measure_corpus","name":{"en":"MEASURE THE CORPUS"},"runBy":[],"sha256":"740d067747a4de74acb2be6ba7072f11ef58da37700addab7e7a172cc0c397aa","specPath":"specs/skills/t27-measure-corpus.t27","summary":{"en":"Pick the right instrument for a claim about the t27 spec corpus, and avoid the specific traps that have produced wrong published numbers. Use before quoting any figure about specs, errors, or gates.","ru":"Выбор правильного инструмента для любого утверждения о корпусе спек t27 и список ловушек, которые уже давали неверные опубликованные числа. Использовать перед тем, как цитировать любое число о корпусе."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/phi-loop/SKILL.md","sha256":"d8af7f6a9cbc39ed4557291528f36748e07292ef752f5159e2827f59b2dd7bc6"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/phi-loop","KIND":"skill","NAME":"PHI LOOP","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","TAGS":["workflow","spec-first","tdd"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/phi-loop","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_phi_loop","name":{"en":"PHI LOOP"},"runBy":[],"sha256":"19dba96ffef309c75a31bc54d282f25026afa8beeb3a6f97600946700a5f74db","specPath":"specs/skills/t27-phi-loop.t27","summary":{"en":"Execute 9-phase spec-first development workflow (Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn)","ru":"Девятифазный цикл spec-first разработки: Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri/skill.md","sha256":"8fb4d4796c2dc7adab9670a65709ce0451633e6f1f076d5e490270596636042a"},"discarded":0,"fields":{"COMMAND":"/tri","ENABLED":true,"ID":"t27/tri","KIND":"skill","NAME":"tri","REPO":"t27","SOURCE":"skill.md","SPECS":["compiler/skill/registry.t27"],"SUMMARY_EN":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","TAGS":["tri","workflow","seal"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_tri","name":{"en":"tri"},"runBy":[],"sha256":"99f03be9bbefc5f7c3b0637717e69650f11b0bf8644563b4e03bd24d12a66c89","specPath":"specs/skills/t27-tri.t27","summary":{"en":"This skill should be used when user asks to \"tri skill begin\", \"PHI LOOP\", \"edit .t27 spec\", \"seal hash\", \"tri gen\", \"tri test\", \"tri verdict\", \"tri experience save\", \"tri notebook query\", \"tri notebook wrapup\", or any task requiring spe...","ru":"Команды tri для работы со скилом: begin, правка .t27-спеки, seal hash, gen, test, verdict, experience. Реестр скилов описан в compiler/skill/registry.t27."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/tri-pipeline/SKILL.md","sha256":"b4bfc290b86a4a1d4513cf9ace0a43526ca8fe98e0d97ff1eb59ea7997aa7427"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/tri-pipeline","KIND":"skill","NAME":"TRI Pipeline","REPO":"t27","SOURCE":"SKILL.md","SPECS":["specs/pipeline/e2e_test.t27"],"SUMMARY_EN":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","TAGS":["tri","pipeline","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/tri-pipeline","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_tri_pipeline","name":{"en":"TRI Pipeline"},"runBy":[],"sha256":"716635d0a782f18bfd6d112d88aeacc9e1961b81a85aec42b91a970fd55ce662","specPath":"specs/skills/t27-tri-pipeline.t27","summary":{"en":"Execute tri commands (gen, test, verify, seal, verdict) for spec-first development","ru":"Выполнение команд tri (gen, test, verify, seal, verdict) для spec-first разработки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"t27/wave-audit/SKILL.md","sha256":"4cd0dd22105ae7fe86091a69ec297df729661181f147c0b59f8e8e94a90e9100"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"t27/wave-audit","KIND":"skill","NAME":"Wave Audit — Comprehensive Project Analysis","REPO":"t27","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","TAGS":["audit","issues","plan"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wave-audit","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_wave_audit","name":{"en":"Wave Audit — Comprehensive Project Analysis"},"runBy":[],"sha256":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","specPath":"specs/skills/t27-wave-audit.t27","summary":{"en":"Full-spectrum audit of t27 project: GitHub issues analysis, weakness identification, SOTA research review, decomposed plan, and implementation of critical fixes.","ru":"Полный аудит проекта t27: разбор GitHub issues, поиск слабых мест, обзор SOTA, декомпозированный план и реализация критичных исправлений."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"ok","link":"bound","path":"t27/wrap-up/skill.md","sha256":"a4a9b4fd9d022c212add3479cde725f6b9bd56bc31d2d600ba771cbd009329f9"},"discarded":0,"fields":{"COMMAND":"/wrap-up","ENABLED":true,"ID":"t27/wrap-up","KIND":"skill","NAME":"wrap-up","REPO":"t27","SOURCE":"skill.md","SPECS":["specs/automation/wrapup-auto.t27"],"SUMMARY_EN":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","TAGS":["memory","notebooklm","session"],"TIMEOUT_MIN":30},"health":"ok","id":"t27/wrap-up","inSpecCorpus":true,"messages":[],"moduleName":"skill_t27_wrap_up","name":{"en":"wrap-up"},"runBy":[],"sha256":"5f6e7ed53ca0f4ca52320a9c1ebdbbf079e371836de109c94dc440847fa0f2dc","specPath":"specs/skills/t27-wrap-up.t27","summary":{"en":"Format and upload session wrap-up to NotebookLM for persistent semantic memory","ru":"Оформление и загрузка итогов сессии в NotebookLM как постоянной семантической памяти."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/blog-post/SKILL.md","sha256":"2cb755fd4a60a76d568a0742aeda34da60a2441774139646e0ebf4bd2a185493"},"discarded":0,"fields":{"COMMAND":"/blog-post","ENABLED":true,"ID":"trinity/blog-post","KIND":"skill","NAME":"blog-post","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","TAGS":["blog","publish","website"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/blog-post","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_blog_post","name":{"en":"blog-post"},"runBy":[],"sha256":"028f49b8d26ed69b4f8db6991666a5f51b9a2c2737291ceb3258bfd11ff7c3e7","specPath":"specs/skills/trinity-blog-post.t27","summary":{"en":"Write and publish a post to the t27.ai blog. Covers where the blog actually lives (not where it looks like it lives), the Post schema with its required receipts and openQuestions, the honesty rules the data file itself imposes, and the b...","ru":"Написать и опубликовать пост в блог t27.ai: где блог реально живёт, схема Post с обязательными свидетельствами, обложка и проверки."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/board-sync/SKILL.md","sha256":"f4bfa63737cf7a2078ae6e42f68943384214159243243ae8ec971ddeaac1825e"},"discarded":0,"fields":{"COMMAND":"/board [sync|audit|fix]","ENABLED":true,"ID":"trinity/board-sync","KIND":"skill","NAME":"board","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","TAGS":["github","board","labels"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/board-sync","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_board_sync","name":{"en":"board"},"runBy":[],"sha256":"45ece51f52ec529802e387903a06b3fc58f3dcc088823785511c924c57567c32","specPath":"specs/skills/trinity-board-sync.t27","summary":{"en":"GitHub Project Board auto-sync — fill empty fields, sync labels with board status, audit field completeness. Keeps board as realtime source of truth.","ru":"Автосинхронизация GitHub Project Board: заполнить пустые поля, согласовать метки со статусом доски, проверить полноту полей."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/cloud/SKILL.md","sha256":"53aa338dddc4e6b8a0fd82f6d3b8dc9ac9b245b3457559c3c44f325ede0130e6"},"discarded":0,"fields":{"COMMAND":"/cloud [status|agents|events|full]","ENABLED":true,"ID":"trinity/cloud","KIND":"skill","NAME":"cloud","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","TAGS":["dashboard","railway","agents"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/cloud","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_cloud","name":{"en":"cloud"},"runBy":[],"sha256":"7eb9c81b10e1dd99998207ce71b792342f1f8bdd3852b974f27eb20418ca480e","specPath":"specs/skills/trinity-cloud.t27","summary":{"en":"Show Trinity Cloud Dev dashboard — containers, training farm, issues, PRs, costs. Use when checking agent swarm status, cloud containers, or CI/CD pipeline.","ru":"Панель Trinity Cloud Dev: контейнеры, тренировочная ферма, issues, PR, расходы. Для проверки состояния роя агентов и CI/CD."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/doctor/SKILL.md","sha256":"68efdf79301066d5e64e72babc91ddb867899786186fa360e6775b8365059815"},"discarded":0,"fields":{"COMMAND":"/doctor [quick|full|scan|junk|docs|dupes] [lang:ru|en]","ENABLED":true,"ID":"trinity/doctor","KIND":"skill","NAME":"doctor","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","TAGS":["health","repo","report"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/doctor","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_doctor","name":{"en":"doctor"},"runBy":[],"sha256":"4e74c213b43b2b2c253dda134a93795b3a6e627a4711d5fc8dffb3067c1cb0b0","specPath":"specs/skills/trinity-doctor.t27","summary":{"en":"HEALER — diagnose, heal, commit dirty files, monitor junk & docs & duplicates, report honestly. Every loop = action + proof.","ru":"ЛЕКАРЬ: диагностика, лечение, коммит грязных файлов, надзор за мусором, документацией и дубликатами, честный отчёт. Каждый цикл = действие + доказательство."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/farm-garden/SKILL.md","sha256":"6721489885755a64bfdd07f0407b0ddad366c713cb2723098c0fc63b4e196bb4"},"discarded":0,"fields":{"COMMAND":"","ENABLED":true,"ID":"trinity/farm-garden","KIND":"skill","NAME":"Garden — Quantum Gardener for Trinity Farm","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","TAGS":["farm","hslm","workers"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/farm-garden","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_farm_garden","name":{"en":"Garden — Quantum Gardener for Trinity Farm"},"runBy":[],"sha256":"4afded3071ac34a51d06749ea6983dfd0238d1dcb78856ae19b836122019c080","specPath":"specs/skills/trinity-farm-garden.t27","summary":{"en":"Autonomous farm population manager. Monitors, evolves, and recycles HSLM training workers.","ru":"Автономный управляющий популяцией фермы: наблюдает, эволюционирует и перерабатывает рабочих обучения HSLM."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/fpga-synth/SKILL.md","sha256":"de3915e66cdab0f3207f53f6ea22a85b258c8a998b614231eebf7afab2ca9ec3"},"discarded":0,"fields":{"COMMAND":"/fpga-synth ","ENABLED":true,"ID":"trinity/fpga-synth","KIND":"skill","NAME":"fpga-synth","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","TAGS":["fpga","verilog","synthesis"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/fpga-synth","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_fpga_synth","name":{"en":"fpga-synth"},"runBy":[],"sha256":"2d3563e302746a958794670cd14404a7c4e6854dcf546468dd5f91907ff299e4","specPath":"specs/skills/trinity-fpga-synth.t27","summary":{"en":"Run FPGA synthesis pipeline from .tri spec to bitstream. Use when working with Verilog, FPGA, or hardware synthesis.","ru":"Конвейер синтеза FPGA от .tri-спеки до битстрима. Для работы с Verilog, FPGA и аппаратным синтезом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/god-mode/SKILL.md","sha256":"0c48e328ae4cf1cbaffef270e7dbe16fac59a7fba845547179bcfe078f65ee7a"},"discarded":0,"fields":{"COMMAND":"/god-mode [status|agents|tasks|violations]","ENABLED":true,"ID":"trinity/god-mode","KIND":"skill","NAME":"god-mode","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","TAGS":["dashboard","agents","monitoring"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/god-mode","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_god_mode","name":{"en":"god-mode"},"runBy":[],"sha256":"577f3aa5eb4280c6be165fd7d0458fb849988246800eef63c77b3c774091706f","specPath":"specs/skills/trinity-god-mode.t27","summary":{"en":"GOD MODE — Agent monitoring dashboard. Shows swarm status, task queue, pipeline compliance, circuit breakers, git activity, and rule violations.","ru":"GOD MODE: панель наблюдения за агентами — состояние роя, очередь задач, соблюдение конвейера, предохранители, активность git, нарушения правил."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/implement-issue/SKILL.md","sha256":"88ccafaece204489bd38ee3f2fbd5f7db3d38275c2ba7e5a9bfca2852be596bb"},"discarded":0,"fields":{"COMMAND":"/implement-issue [issue-number]","ENABLED":true,"ID":"trinity/implement-issue","KIND":"skill","NAME":"implement-issue","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","TAGS":["github","issue","pr"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/implement-issue","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_implement_issue","name":{"en":"implement-issue"},"runBy":[],"sha256":"789be8f18768603dfb45d8664ad51fc1bb1311f82a0288c3a93efc19c08534e6","specPath":"specs/skills/trinity-implement-issue.t27","summary":{"en":"Read a GitHub issue, create a branch, implement the solution, and open a PR. Use when given an issue number to implement.","ru":"Прочитать GitHub issue, создать ветку, реализовать решение и открыть PR. Для работы по номеру задачи."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/queen-hive-visuals/SKILL.md","sha256":"c6d914dc81c84fc13dacca37de258563261a451a139e3c1644bbdc8b7a97b414"},"discarded":0,"fields":{"COMMAND":"/queen-hive-visuals","ENABLED":true,"ID":"trinity/queen-hive-visuals","KIND":"skill","NAME":"queen-hive-visuals","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","TAGS":["queen","ui","3d"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/queen-hive-visuals","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_queen_hive_visuals","name":{"en":"queen-hive-visuals"},"runBy":[],"sha256":"327c5189a740d092290fe5dd10de3cf4da56b54a44d1bec9be8414451e70ae0e","specPath":"specs/skills/trinity-queen-hive-visuals.t27","summary":{"en":"Maintain QUEEN's floating hive, original point-down TRINITY logo, sharp issue displays and matching camera interactions.","ru":"Поддержка плавающего улья Королевы, оригинального логотипа TRINITY остриём вниз, чётких табло задач и согласованных движений камеры."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/review-code/SKILL.md","sha256":"e5712744615c2422d9a0c81413422e6e1a2ac97c4bfac8bb508f1cd04bf05d75"},"discarded":0,"fields":{"COMMAND":"/review-code [file-or-branch] (optional)","ENABLED":true,"ID":"trinity/review-code","KIND":"skill","NAME":"review-code","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","TAGS":["review","quality"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/review-code","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_review_code","name":{"en":"review-code"},"runBy":[],"sha256":"c5cf6004cce2295f921b7d983e252a9aafbd92ad662db2d5b595824c2774b7a4","specPath":"specs/skills/trinity-review-code.t27","summary":{"en":"Review recent code changes for bugs, style issues, and improvements. Use after writing code or before committing.","ru":"Ревью недавних изменений кода: ошибки, стиль, улучшения. После написания кода или перед коммитом."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/run-tests/SKILL.md","sha256":"7ead75ab36b840ec5588013b0de8f2c23ed3a27a0d3a5160d7e68334e5992a79"},"discarded":0,"fields":{"COMMAND":"/run-tests [module] (optional - all, vsa, vm, bsd, hslm, tri-api)","ENABLED":true,"ID":"trinity/run-tests","KIND":"skill","NAME":"run-tests","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","TAGS":["tests","build","zig"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/run-tests","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_run_tests","name":{"en":"run-tests"},"runBy":[],"sha256":"8c683823554ee75c69b4dd27468eb819bd8f7ea003e91cf216b80be03dca13a6","specPath":"specs/skills/trinity-run-tests.t27","summary":{"en":"Build the project, check for warnings, run all tests, and report results. Quick health check for the codebase.","ru":"Собрать проект, проверить предупреждения, прогнать все тесты и отчитаться. Быстрая проверка здоровья кодовой базы."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/scholar/SKILL.md","sha256":"5c35431008a4d2694cf2e7ad65c01d6f1559d5836b8f7cfb0c3422f752d5b2c2"},"discarded":0,"fields":{"COMMAND":"/scholar [scan|eval|apply|full|report|topic:\"query\"]","ENABLED":true,"ID":"trinity/scholar","KIND":"skill","NAME":"scholar","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","TAGS":["research","perplexity","mcp"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/scholar","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_scholar","name":{"en":"scholar"},"runBy":[],"sha256":"70bc5c1e10d9905fa22a38de1c7b88926b75d69b6a82305e69613820f70f83ae","specPath":"specs/skills/trinity-scholar.t27","summary":{"en":"Self-Evolving Research Agent — scans web for relevant tech, evaluates findings, proposes improvements. Uses Perplexity Sonar API via MCP.","ru":"Саморазвивающийся исследовательский агент: сканирует веб на релевантные технологии, оценивает находки, предлагает улучшения. Perplexity Sonar через MCP."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/status/SKILL.md","sha256":"e4bc75ff45cdc52968f1ef0ac6e1a1a482072f78e14283b1e71b6fe13a054890"},"discarded":0,"fields":{"COMMAND":"/status [quick|full] [lang:ru|en]","ENABLED":true,"ID":"trinity/status","KIND":"skill","NAME":"status","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","TAGS":["dashboard","ouroboros","verdict"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/status","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_status","name":{"en":"status"},"runBy":[],"sha256":"09185d50913f410e9c5cdd3338d2fd38adb97f0997208c6440c89b2325268b9c","specPath":"specs/skills/trinity-status.t27","summary":{"en":"Live system dashboard — 12-dimension ouroboros score, verdict v3, agents, build health, recommendations","ru":"Живая панель системы: 12-мерная оценка уробороса, verdict v3, агенты, здоровье сборки, рекомендации."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tech-tree/SKILL.md","sha256":"f84c8ea67ab696a9bc3828ccfe8b8708572fe5ddb7574f409ddf75c467744a0f"},"discarded":0,"fields":{"COMMAND":"/tree [next|path|blocked|update]","ENABLED":true,"ID":"trinity/tech-tree","KIND":"skill","NAME":"tree","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","TAGS":["issues","dag","planning"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tech-tree","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_tech_tree","name":{"en":"tree"},"runBy":[],"sha256":"951d3d8a6dd0c1c6c62a303c660a45205624bf2f558fd090b34fe5b45b9f1501","specPath":"specs/skills/trinity-tech-tree.t27","summary":{"en":"Technology dependency tree — shows issue DAG, prereqs, critical path, blocked/ready tasks. Single source of truth for work order.","ru":"Дерево технологических зависимостей: DAG задач, предпосылки, критический путь, заблокированные и готовые задачи. Единый источник порядка работ."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/tri/SKILL.md","sha256":"4c38d1005219336c88583e985b5208653fa199d12481d98173604922dc35e4a5"},"discarded":0,"fields":{"COMMAND":"/tri [short] [full] [audit] [coverage] [lang:ru|en] [humor|prof|toxic|zen]","ENABLED":true,"ID":"trinity/tri","KIND":"skill","NAME":"tri","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","TAGS":["tri","dashboard","status"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/tri","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_tri","name":{"en":"tri"},"runBy":[],"sha256":"09f58e175bfeb73fb49d30bfdc6e0b197d775e6883fa8bb9417dffc92ffefebd","specPath":"specs/skills/trinity-tri.t27","summary":{"en":"TRI status dashboard — agent thought mode by default, /tri full for visual dashboard","ru":"Панель статуса TRI: по умолчанию режим мысли агента, /tri full — визуальная панель."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/trinity-test/SKILL.md","sha256":"648c7f095f0b9739a17d7a5d47fbfbe3e6dc2b2bd940fb6cea837632940b6c56"},"discarded":0,"fields":{"COMMAND":"/trinity-test [module] (vsa, vm, firebird, all)","ENABLED":true,"ID":"trinity/trinity-test","KIND":"skill","NAME":"trinity-test","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","TAGS":["tests","vsa","vm"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/trinity-test","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_trinity_test","name":{"en":"trinity-test"},"runBy":[],"sha256":"b70f5629049065477023aa4b4d51eb8272de0750a5c4809d7d445c698729c1a0","specPath":"specs/skills/trinity-trinity-test.t27","summary":{"en":"Run Trinity test suites and analyze results. Use for testing VSA, VM, Firebird, WASM, or full test suite.","ru":"Прогон тестовых наборов Trinity и разбор результатов: VSA, VM, Firebird, WASM или всё целиком."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/ux-wave/SKILL.md","sha256":"9690999e8d1e2091c80ef838e41a1d4dc48d9ffea1cf29a39294238f69954b28"},"discarded":0,"fields":{"COMMAND":"/ux-wave [wave-number] [audit]","ENABLED":true,"ID":"trinity/ux-wave","KIND":"skill","NAME":"ux-wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","TAGS":["ux","agents","queen"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/ux-wave","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_ux_wave","name":{"en":"ux-wave"},"runBy":[],"sha256":"e63fa9e43303eefdf53f1f95499c15bb7794c7f08c9d14c1958f61e362e75ada","specPath":"specs/skills/trinity-ux-wave.t27","summary":{"en":"Autonomous UX improvement waves — launch 4 parallel agents per wave, audit every 5 waves, commit fixes. For Queen UI chat & network polish.","ru":"Автономные волны улучшения UX: 4 параллельных агента на волну, аудит каждые 5 волн, коммит исправлений. Для чата и сети Queen UI."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vibee-gen/SKILL.md","sha256":"fc01e69f1395b590603692a29d9bb1ee533104bb716b5bb284738027df17b395"},"discarded":0,"fields":{"COMMAND":"/vibee-gen ","ENABLED":true,"ID":"trinity/vibee-gen","KIND":"skill","NAME":"vibee-gen","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","TAGS":["codegen","zig","verilog"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vibee-gen","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_vibee_gen","name":{"en":"vibee-gen"},"runBy":[],"sha256":"769952ebb9d14eba7cdd2ee226b9d266de20e692ac0ee1e66ba6f622564a91f9","specPath":"specs/skills/trinity-vibee-gen.t27","summary":{"en":"Generate Zig or Verilog code from VIBEE specifications. Use when creating or updating .tri specs and regenerating code.","ru":"Генерация кода Zig или Verilog из спецификаций VIBEE. При создании или обновлении .tri-спек и перегенерации кода."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/vsa-verify/SKILL.md","sha256":"8b9c4518b1bc5dd468b12697a436f7d959278466b5282e575709d7981722905b"},"discarded":0,"fields":{"COMMAND":"/vsa-verify [operation or proof to verify]","ENABLED":true,"ID":"trinity/vsa-verify","KIND":"skill","NAME":"vsa-verify","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","TAGS":["vsa","math","verify"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/vsa-verify","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_vsa_verify","name":{"en":"vsa-verify"},"runBy":[],"sha256":"311455eaad1ec081b56395b38564babf52e10966f35b98b862d97bc5be60ff52","specPath":"specs/skills/trinity-vsa-verify.t27","summary":{"en":"Verify VSA (Vector Symbolic Architecture) mathematical proofs and operations. Use for math verification, bind/unbind/bundle testing, phi identity checks.","ru":"Проверка математических доказательств и операций VSA: bind/unbind/bundle, тождества phi."},"typecheckOk":true,"witness":"spec+code"},{"code":{"health":"warn","link":"unbound","path":"trinity/wave/SKILL.md","sha256":"ecf06fdfa467158f6758066aba41a8e49699f37e61c18e62716da765a7eb5487"},"discarded":0,"fields":{"COMMAND":"/wave [status|spawn |deploy|progress]","ENABLED":true,"ID":"trinity/wave","KIND":"skill","NAME":"wave","REPO":"trinity","SOURCE":"SKILL.md","SPECS":[],"SUMMARY_EN":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","TAGS":["farm","railway","scaling"],"TIMEOUT_MIN":30},"health":"ok","id":"trinity/wave","inSpecCorpus":true,"messages":[],"moduleName":"skill_trinity_wave","name":{"en":"wave"},"runBy":[],"sha256":"0d205500e7adf560ff03ecfd59e90ee13b51f4624e27555d4142e5b184100d6b","specPath":"specs/skills/trinity-wave.t27","summary":{"en":"Farm wave management — create Railway accounts, spawn workers, deploy configs, track wave progress. Use for scaling training farm.","ru":"Управление волнами фермы: аккаунты Railway, запуск рабочих, раскатка конфигов, прогресс волны. Для масштабирования тренировочной фермы."},"typecheckOk":true,"witness":"spec+code"}],"version":1} diff --git a/apps/website/public/t27/files/bootstrap/src/codegen_python.t27 b/apps/website/public/t27/files/bootstrap/src/codegen_python.t27 new file mode 100644 index 0000000000..0598b42d5d --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/src/codegen_python.t27 @@ -0,0 +1,195 @@ +// bootstrap/src/codegen_python.rs +// Python Code Generator for CLARA (TA2 Deliverable) +// φ² + 1/φ² = 3 | TRINITY +// +// Generates Python code from .t27 specifications for PyTorch integration +// NOTE: This is a specification stub - full implementation is P1 priority +// +// ───────────────────────────────────────────────────────────────────────────────────────────── + +module codegen_python { + use base::types; + use parser; + + // ═════════════════════════════════════════════════════════════════ + // CONFIGURATION + // ════════════════════════════════════════════════════════════════ + + /// Python module prefix for generated code + pub const PYTHON_MODULE_PREFIX : []const u8 = b"t27_"; + + // ══════════════════════════════════════════════════════════════════ + // TYPE MAPPINGS + // ══════════════════════════════════════════════════════════════════════════════════════ + + /// T27 Trit → Python type + fn map_trit_to_python_type(tn : Trit) -> []const u8 { + // For basic implementation, use int mapping + // K_TRUE -> 1, K_FALSE -> 0, K_UNKNOWN -> 0 + // Better: Use Python's bool or enum + if (tn == .pos) { + return "bool"; + } else if (tn == .neg) { + return "bool"; + } else { + return "int"; // For unknown, use int (0 or 1) + } + } + + /// T27 array → Python list + fn map_trit_array_to_python_list(array : [MAX_ARGS]Trit) -> []const u8 { + // Array mapping: [-1, 0, +1] as Python list + var result : [array.len * 8]u8 = undefined; + var i : usize = 0; + var j : usize = 0; + + while (i < array.len) { + result[i] = map_trit_to_python_type(array[i]); + i += 1; + j += 8; + } + + return result; + } + + /// T27 struct → Python class + fn map_struct_to_python_class(node : *Node) -> []const u8 { + // Extract struct name and fields + var class_name : []const u8 = undefined; + var fields : [32]u8 = undefined; + var field_count : u8 = 0; + + // Get struct name from node type identifier + match node.kind { + StructDecl => { + const name = node.name; + fields = &node.fields; + }, + _ => { + // For other types, skip for now + class_name = "Any"; + } + } + + // Process each field + // For now, just store field names + // Real implementation would traverse fields + + var i : usize = 0; + while (i < field_count) { + var field_name = extract_identifier(&node.fields[i]); + fields[field_count] = field_name; + field_count += 1; + i += 1; + } + + var result : [field_count]u8 = undefined; + return result; + } + + /// Extract identifier from field node (strips module::, namespace::) + fn extract_identifier(node : *Node) -> []const u8 { + // Strip module:: and namespace:: prefixes + // Get raw name + var raw_name : []const u8 = node.name; + var name_len = raw_name.len; + + // Skip common prefixes + var i : usize = 6; // len("module::") + if (string_starts_with_prefix(&raw_name, i, "module::")) { i += 7; } + if (string_starts_with_prefix(&raw_name, i, "namespace::")) { i += 11; } + + return raw_name[i..name_len]; + } + + /// Strip module:: prefixes from identifier + fn strip_prefixes(name : []const u8) -> []const u8 { + var start_idx : usize = 0; + var write_idx : usize = 0; + + while (start_idx < name.len && write_idx < 32) { + // Copy to output if it's a valid char for Python + if (name[start_idx] == ':' || + name[start_idx + 1] == '_' || + name[start_idx + 1] == '.' || + !name[start_idx + 1].is_ascii()) { + // Skip or invalid character + start_idx += 1; + } else { + name[write_idx] = name[start_idx + 1]; + write_idx += 1; + } + } + + return name[0..write_idx]; + } + + /// Generate Python function from function node + fn gen_function(fn_node : *Node) -> []const u8 { + var func_name = fn_node.name; + var params = gen_params(fn_node); + + // For stub: just generate def name(params) -> pass + // Full implementation would handle default values, docstrings, etc. + + var result : [256]u8 = undefined; + var offset : usize = 0; + + offset = string_copy_str(&mut offset, "def "); + offset = string_copy_str(&mut offset, func_name); + offset = gen_params(&mut offset, params, false); + offset = string_copy_str(&mut offset, "):\n"); + offset = indent_lines(&mut offset, INDENT); + + return result[0..offset]; + } + + /// Generate parameters from params node + fn gen_params(params_node : *Node) -> []const u8 { + var result : [256]u8 = undefined; + var offset : usize = 0; + + // For now, just generate params list: param1, param2, ... + var param_count : usize = 0; + + while (offset < params_node.value.arg_count) { + var param = ¶ms_node.args[offset]; + + // Generate param name (default "param" + N) + offset = string_copy_str(&mut offset, "param"); + offset = string_copy_str(&mut offset, param_count); + offset = string_copy_str(&mut offset, ": "); + + // Just stub: "param1" (no default value) + param_count += 1; + offset += 1; + } + + return result[0..offset]; + } + + // ════════════════════════════════════════════════════ + // TESTS + // ══════════════════════════════════════════════════════ + + test map_trit_to_python_type { + given node = ExprIdentifier { name = "test_trit", value = "" } + when call map_trit_to_python_type(node) + then result == "bool" + } + + test gen_function_basic { + given fn = ExprIdentifier { name = "test_func", value = "" } + when call gen_function(fn) + then result starts with "def test_func(" + } + } + + // ════════════════════════════════════════════════════════ + // Invariant: Python generator always produces valid syntax + invariant python_output_is_valid { + given output = generate_python_class(ExprIdentifier { name = "test_module" }) + then output contains "class test_module" + } +} +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_01.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_01.t27 new file mode 100644 index 0000000000..f58109de50 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_01.t27 @@ -0,0 +1,9 @@ +module damage_class_01 + +// shape: [[]X", +// 52 line(s) in the corpus share this shape +// first seen: specs/tri/pipeline/builder.t27:14 +// signals: doubled-bracket,odd-quote +pub struct Damaged { + items : [[]T", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_02.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_02.t27 new file mode 100644 index 0000000000..67ab30ab19 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_02.t27 @@ -0,0 +1,9 @@ +module damage_class_02 + +// shape: [[]X X", +// 37 line(s) in the corpus share this shape +// first seen: specs/tri/pipeline/spec_writer.t27:14 +// signals: doubled-bracket,odd-quote +pub struct Damaged { + field_type : [[]Const u8", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_03.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_03.t27 new file mode 100644 index 0000000000..f8f3acf3fb --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_03.t27 @@ -0,0 +1,9 @@ +module damage_class_03 + +// shape: [[]X [, +// 10 line(s) in the corpus share this shape +// first seen: specs/tri/pipeline/spec_writer.t27:23 +// signals: doubled-bracket +pub struct Damaged { + steps : [[]Const [, +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_04.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_04.t27 new file mode 100644 index 0000000000..5f6e2e55e7 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_04.t27 @@ -0,0 +1,9 @@ +module damage_class_04 + +// shape: [[][, +// 7 line(s) in the corpus share this shape +// first seen: specs/tri/encoding/mime.t27:15 +// signals: doubled-bracket +pub struct Damaged { + to : [[][, +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_05.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_05.t27 new file mode 100644 index 0000000000..61147193ba --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_05.t27 @@ -0,0 +1,9 @@ +module damage_class_05 + +// shape: [[9]X", +// 5 line(s) in the corpus share this shape +// first seen: specs/tri/crypto/hmac.t27:14 +// signals: odd-quote +pub struct Damaged { + opad : [[64]U8", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_06.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_06.t27 new file mode 100644 index 0000000000..cccdb197b4 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_06.t27 @@ -0,0 +1,9 @@ +module damage_class_06 + +// shape: [?[]X X", +// 3 line(s) in the corpus share this shape +// first seen: specs/tri/pipeline/spec_writer.t27:36 +// signals: doubled-bracket,odd-quote +pub struct Damaged { + error_msg : [?[]Const u8", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_07.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_07.t27 new file mode 100644 index 0000000000..da3ec57353 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_07.t27 @@ -0,0 +1,9 @@ +module damage_class_07 + +// shape: [X.X([]X X)", +// 2 line(s) in the corpus share this shape +// first seen: specs/tri/encoding/html.t27:15 +// signals: odd-quote +pub struct Damaged { + attributes : [std.StringHashMap([]Const u8)", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_08.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_08.t27 new file mode 100644 index 0000000000..d81e4e9be7 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_08.t27 @@ -0,0 +1,9 @@ +module damage_class_08 + +// shape: [[9]?X", +// 2 line(s) in the corpus share this shape +// first seen: specs/tri/trees/octree.t27:24 +// signals: odd-quote +pub struct Damaged { + children : [[8]?OctNode", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_09.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_09.t27 new file mode 100644 index 0000000000..c070a80bec --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_09.t27 @@ -0,0 +1,9 @@ +module damage_class_09 + +// shape: [[]?X", +// 1 line(s) in the corpus share this shape +// first seen: specs/tri/graph/dijkstra.t27:15 +// signals: doubled-bracket,odd-quote +pub struct Damaged { + parent : [[]?Usize", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_10.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_10.t27 new file mode 100644 index 0000000000..096cf0e18f --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_10.t27 @@ -0,0 +1,9 @@ +module damage_class_10 + +// shape: [X.X(X, []X)", +// 1 line(s) in the corpus share this shape +// first seen: specs/tri/graph/graph.t27:14 +// signals: odd-quote +pub struct Damaged { + nodes : [std.HashMap(T, []T)", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_11.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_11.t27 new file mode 100644 index 0000000000..1cd48eca65 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_11.t27 @@ -0,0 +1,9 @@ +module damage_class_11 + +// shape: [[]?*X", +// 1 line(s) in the corpus share this shape +// first seen: specs/tri/trees/b_tree.t27:15 +// signals: doubled-bracket,odd-quote +pub struct Damaged { + children : [[]?*BTreeNode", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_12.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_12.t27 new file mode 100644 index 0000000000..689a32ea57 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_12.t27 @@ -0,0 +1,9 @@ +module damage_class_12 + +// shape: [[][9, +// 1 line(s) in the corpus share this shape +// first seen: specs/tri/trees/quadtree.t27:23 +// signals: doubled-bracket +pub struct Damaged { + points : [[][2, +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_13.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_13.t27 new file mode 100644 index 0000000000..5c6756ca4a --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_13.t27 @@ -0,0 +1,9 @@ +module damage_class_13 + +// shape: [[9]?*X", +// 1 line(s) in the corpus share this shape +// first seen: specs/tri/search/aho_corasick.t27:14 +// signals: odd-quote +pub struct Damaged { + children : [[256]?*ACTrieNode", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_14.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_14.t27 new file mode 100644 index 0000000000..0b4bfaf393 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_14.t27 @@ -0,0 +1,9 @@ +module damage_class_14 + +// shape: [[]X(X, X)", +// 1 line(s) in the corpus share this shape +// first seen: specs/tri/collections/btree.t27:21 +// signals: doubled-bracket,odd-quote +pub struct Damaged { + children : [[]BTreeNode(K, V)", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_15.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_15.t27 new file mode 100644 index 0000000000..85a5082aec --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage/damage_class_15.t27 @@ -0,0 +1,9 @@ +module damage_class_15 + +// shape: [[]?X(X)", +// 1 line(s) in the corpus share this shape +// first seen: specs/tri/collections/skip_list.t27:15 +// signals: doubled-bracket,odd-quote +pub struct Damaged { + forward : [[]?SkipNode(T)", +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_01_latency_bound.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_01_latency_bound.t27 new file mode 100644 index 0000000000..82cc908456 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_01_latency_bound.t27 @@ -0,0 +1,7 @@ +// NEGATIVE fixture: a latency bound, not damage. +// The first regex reported 230 of these as damaged, which made 429 a metric of +// the regex rather than of the corpus. tri damage must report zero here. +pub const Budget = struct { + target : < 5000ns, + ceiling : < 12us, +}; diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_02_match_arms.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_02_match_arms.t27 new file mode 100644 index 0000000000..854b93ffb4 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_02_match_arms.t27 @@ -0,0 +1,8 @@ +// NEGATIVE fixture: match arms. 17 false positives came from these. +fn classify(x: u8) -> u8 { + match x { + 0 : 1, + 1 : 2, + _ : 0, + } +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_03_multiline_array.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_03_multiline_array.t27 new file mode 100644 index 0000000000..870c3b80b5 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_03_multiline_array.t27 @@ -0,0 +1,9 @@ +// NEGATIVE fixture: an array literal opening a multi-line value. 10 false +// positives came from the opening line being read as a damaged type side. +pub const Table = struct { + rows : "[]u8", +}; +pub const DATA = [ + 1, 2, 3, + 4, 5, 6, +]; diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_04_fn_signature.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_04_fn_signature.t27 new file mode 100644 index 0000000000..59fa90449c --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_04_fn_signature.t27 @@ -0,0 +1,7 @@ +// NEGATIVE fixture: function signatures. 6 false positives came from these. +fn insert(key: []const u8, value: u32) -> bool { + return true; +} +fn find(needle: []const u8) -> ?usize { + return null; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_05_raw_string.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_05_raw_string.t27 new file mode 100644 index 0000000000..741cc33ece --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_05_raw_string.t27 @@ -0,0 +1,6 @@ +// NEGATIVE fixture: a legal raw string whose body contains a bracket and an odd +// number of quotes. The odd-quote signal must not fire inside a raw string. +pub const Patterns = struct { + rx : r#"[a-z]+"[0-9]"#, + tpl : "[]u8", +}; diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_06_intact_field.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_06_intact_field.t27 new file mode 100644 index 0000000000..5e7108cf39 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/damage_negative/neg_06_intact_field.t27 @@ -0,0 +1,8 @@ +// NEGATIVE fixture: the intact convention itself, including the slice and +// optional-slice forms that the damaged classes are corruptions of. +pub const Intact = struct { + children : "[4]?QuadNode", + parts : "[]Const u8", + name : "[]u8", + level : "usize", +}; diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_01_empty_params.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_01_empty_params.t27 new file mode 100644 index 0000000000..7e32f9ff37 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_01_empty_params.t27 @@ -0,0 +1,7 @@ +// ADR-008 negative: an empty parameter list is not a parameterised type. +// Ambiguous with a plain type declaration, so refused rather than guessed. +module NegEmptyParams { + pub const Nothing() = struct { + x : "u8", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_02_trailing_comma.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_02_trailing_comma.t27 new file mode 100644 index 0000000000..9bddcd271d --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_02_trailing_comma.t27 @@ -0,0 +1,7 @@ +// ADR-008 negative: a trailing comma is not attested anywhere in the corpus. +// Accepting it would widen the grammar with no evidence behind it. +module NegTrailingComma { + pub const Holder(T,) = struct { + x : "T", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_03_type_expr_param.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_03_type_expr_param.t27 new file mode 100644 index 0000000000..6b36af9d9a --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_03_type_expr_param.t27 @@ -0,0 +1,7 @@ +// ADR-008 negative: a type expression in a parameter position. Parameters are +// names being bound, not types being used. +module NegTypeExprParam { + pub const Slice([]T) = struct { + x : "u8", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_04_constrained_param.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_04_constrained_param.t27 new file mode 100644 index 0000000000..c6010a516f --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_04_constrained_param.t27 @@ -0,0 +1,7 @@ +// ADR-008 negative: a constrained parameter is a language feature, not a parser +// detail. Accepting the syntax now would commit the language to it. +module NegConstrainedParam { + pub const Sorted(T: Ord) = struct { + x : "T", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_05_enum_rhs.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_05_enum_rhs.t27 new file mode 100644 index 0000000000..c769d4a95c --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_05_enum_rhs.t27 @@ -0,0 +1,7 @@ +// ADR-008 negative: only `struct` is attested on the right-hand side (33 of 33). +// A parameterised enum is a separate decision. +module NegEnumRhs { + pub const Tagged(T) = enum(i8) { + A = 0, + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_06_value_rhs.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_06_value_rhs.t27 new file mode 100644 index 0000000000..d5b88dcd3d --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_06_value_rhs.t27 @@ -0,0 +1,4 @@ +// ADR-008 negative: a parameterised value is not a type declaration. +module NegValueRhs { + pub const Answer(T) = 42; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_07_no_rhs.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_07_no_rhs.t27 new file mode 100644 index 0000000000..87fb1a2214 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/neg_07_no_rhs.t27 @@ -0,0 +1,4 @@ +// ADR-008 negative: a declaration with no right-hand side at all. +module NegNoRhs { + pub const Opaque(T); +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_01_single_param.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_01_single_param.t27 new file mode 100644 index 0000000000..7c72985a44 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_01_single_param.t27 @@ -0,0 +1,7 @@ +// ADR-008 positive: one generic parameter, the attested majority form (22 of 33). +module GenericConstSingle { + pub const Stack(T) = struct { + items : "[]T", + len : "usize", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_02_two_params.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_02_two_params.t27 new file mode 100644 index 0000000000..3472c7fa62 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_02_two_params.t27 @@ -0,0 +1,7 @@ +// ADR-008 positive: two generic parameters, attested as `K, V` in 4 files. +module GenericConstPair { + pub const Map(K, V) = struct { + key : "K", + value : "V", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_03_three_params.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_03_three_params.t27 new file mode 100644 index 0000000000..169e8adcaa --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_03_three_params.t27 @@ -0,0 +1,8 @@ +// ADR-008 positive: three generic parameters, attested once as `A, B, C`. +module GenericConstTriple { + pub const Tuple3(A, B, C) = struct { + a : "A", + b : "B", + c : "C", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_04_no_pub.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_04_no_pub.t27 new file mode 100644 index 0000000000..fff184390b --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_04_no_pub.t27 @@ -0,0 +1,6 @@ +// ADR-008 positive: `pub` is optional, exactly as on the non-parameterised path. +module GenericConstPrivate { + const Cell(T) = struct { + value : "T", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_05_no_semicolon.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_05_no_semicolon.t27 new file mode 100644 index 0000000000..eb4b73d0e6 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_05_no_semicolon.t27 @@ -0,0 +1,7 @@ +// ADR-008 positive: the trailing semicolon is optional, matching the +// non-parameterised `const Name = struct { }` path. No new terminator is introduced. +module GenericConstNoSemi { + pub const Box(T) = struct { + value : "T", + } +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_06_alongside_plain.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_06_alongside_plain.t27 new file mode 100644 index 0000000000..021a843ca9 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/generic_const/pos_06_alongside_plain.t27 @@ -0,0 +1,11 @@ +// ADR-008 positive: a parameterised and a plain struct declaration in one module. +// Guards against the generic path swallowing the declaration that follows it. +module GenericConstMixed { + pub const Option(T) = struct { + present : "bool", + value : "T", + }; + pub const Header = struct { + magic : "u32", + }; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/eof_generic.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/eof_generic.t27 new file mode 100644 index 0000000000..6bbe35ead1 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/eof_generic.t27 @@ -0,0 +1,8 @@ +module eof_generic + +// End of file inside an unclosed generic argument list. The lexer returns Eof +// for every subsequent call, so a recovery scanner that refuses to accept Eof as +// a terminator has a stationary state on an infinite input, and the loop is a +// consequence of the construction rather than a rare race. +pub struct Hangs { + a : Map, + tuple : (A, B), + nested : Vec>, + arr : [4]u16, + last : i32 +} + +pub fn use_holder(h : Holder) -> u8 { + return h.plain; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/semicolon_phantom.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/semicolon_phantom.t27 new file mode 100644 index 0000000000..a08c37c7c4 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/semicolon_phantom.t27 @@ -0,0 +1,6 @@ +module semicolon_phantom + +pub struct Semi { + a : Map, u8), + last : u16 +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/unbalanced.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/unbalanced.t27 new file mode 100644 index 0000000000..1977f275de --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/terminator/unbalanced.t27 @@ -0,0 +1,8 @@ +module unbalanced + +pub struct Broken { + a : Map u8 { return 0; } diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/adapters_declared.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/adapters_declared.t27 new file mode 100644 index 0000000000..803911ba7d --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/adapters_declared.t27 @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/adapters_declared.t27 -- feature declared adapters: an I/O boundary stated as constants and a +// pure verdict function over a fixture transcript; the real transport stays outside the spec (S07, S11). +module trinity_matrix_adapters_declared; + +pub const ADAPTER : str = "provider-http"; +pub const STATUS_OK : u8 = 0; +pub const STATUS_RETRY : u8 = 1; +pub const STATUS_FAIL : u8 = 2; +pub const MAX_RETRIES : u8 = 3; + +pub fn verdict(http_status: u16, attempt: u8) -> u8 { + if (http_status == 200) { return STATUS_OK; } + if (http_status == 429) { + if (attempt < MAX_RETRIES) { return STATUS_RETRY; } + return STATUS_FAIL; + } + return STATUS_FAIL; +} + +test fixture_transcript_decides_the_verdict { + assert verdict(200, 0) == STATUS_OK; + assert verdict(429, 1) == STATUS_RETRY; + assert verdict(429, 3) == STATUS_FAIL; + assert verdict(500, 0) == STATUS_FAIL; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/arrays.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/arrays.t27 new file mode 100644 index 0000000000..e0ac335a63 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/arrays.t27 @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/arrays.t27 -- feature arrays: fixed-size arrays, indexing and a loop over them. +module trinity_matrix_arrays; + +pub const TABLE : [4]u8 = [1, 2, 3, 5]; +pub const NAMES : [2]str = ["dot", "join"]; + +pub fn sum_table() -> u32 { + var total : u32 = 0; + var i : u32 = 0; + while (i < 4) { + total = total + TABLE[i]; + i = i + 1; + } + return total; +} + +test indexing_and_sum { + assert TABLE[0] == 1; + assert TABLE[3] == 5; + assert sum_table() == 11; +} + +test string_array_elements { + assert NAMES[1] == "join"; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/clocked_state.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/clocked_state.t27 new file mode 100644 index 0000000000..c454d1a6d6 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/clocked_state.t27 @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/clocked_state.t27 -- feature clocked state: registered variables updated by on_clock and a +// combinational output, the form the Trinity memory RTL specs use; runtime evidence comes from the Verilog +// backend through Icarus (t27c icarus-simulate) and the C backend runs the test blocks. +module trinity_matrix_clocked_state; +var count: u32 = 0; +var tick: bool = false; +var div_bit: bool; +div_bit = (count & 4) == 4; +fn on_clock(hold: bool) { + tick = !hold && count == 6; + if (hold) { count = 0; } else { count = (count + 1) & 7; } +} +test wraps_at_eight { assert_eq((7 + 1) & 7, 0); } +test div_bit_is_the_third_bit { assert_eq((4 & 4) == 4, true); } +endmodule diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/control_flow.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/control_flow.t27 new file mode 100644 index 0000000000..6c91fb3730 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/control_flow.t27 @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/control_flow.t27 -- feature control flow: if/else, while, for over a range, break and continue. +module trinity_matrix_control_flow; + +pub fn count_odd_below(limit: u32) -> u32 { + var n : u32 = 0; + for i in 0..limit { + if ((i & 1) == 0) { continue; } + n = n + 1; + } + return n; +} + +pub fn first_multiple(step: u32, above: u32) -> u32 { + var x : u32 = step; + while (x < 1000) { + if (x > above) { break; } + x = x + step; + } + return x; +} + +pub fn sign(x: i32) -> i32 { + if (x > 0) { return 1; } else if (x < 0) { return -1; } else { return 0; } +} + +test loops_and_branches { + assert count_odd_below(10) == 5; + assert first_multiple(7, 30) == 35; + assert sign(-3) == -1; + assert sign(0) == 0; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/enums.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/enums.t27 new file mode 100644 index 0000000000..280ffd63fa --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/enums.t27 @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/enums.t27 -- feature enums: named values and a switch over them. +module trinity_matrix_enums; + +pub enum Evidence { + emulator = 0, + software = 1, + rtl_simulation = 2, + fpga = 3, +} + +pub fn evidence_rank(e: Evidence) -> u8 { + return switch (e) { + .emulator => 0, + .software => 1, + .rtl_simulation => 2, + .fpga => 3, + }; +} + +test ranks_follow_the_declaration { + assert evidence_rank(Evidence.fpga) == 3; + assert evidence_rank(Evidence.emulator) == 0; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/errors.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/errors.t27 new file mode 100644 index 0000000000..e4cf473c35 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/errors.t27 @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/errors.t27 -- feature errors: a status code returned in-band, as the Trinity specs write it +// (TMS_ERR_* style): no error union, one code per outcome, tests on the codes. +module trinity_matrix_errors; + +pub const OK : u8 = 0; +pub const ERR_RANGE : u8 = 1; +pub const ERR_EMPTY : u8 = 2; + +pub fn check_digit(c: u8) -> u8 { + if (c == 0) { return ERR_EMPTY; } + if (c < 48) { return ERR_RANGE; } + if (c > 57) { return ERR_RANGE; } + return OK; +} + +test codes_name_each_outcome { + assert check_digit(53) == OK; + assert check_digit(0) == ERR_EMPTY; + assert check_digit(65) == ERR_RANGE; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/functions.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/functions.t27 new file mode 100644 index 0000000000..9c2d89655e --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/functions.t27 @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/functions.t27 -- feature functions: parameters, early return, recursion, calls between functions. +module trinity_matrix_functions; + +pub fn factorial(n: u32) -> u32 { + if (n <= 1) { return 1; } + return n * factorial(n - 1); +} + +pub fn clamp(x: i32, lo: i32, hi: i32) -> i32 { + if (x < lo) { return lo; } + if (x > hi) { return hi; } + return x; +} + +pub fn twice_clamped(x: i32) -> i32 { + return clamp(x, -10, 10) * 2; +} + +test recursion_and_calls { + assert factorial(5) == 120; + assert clamp(15, -10, 10) == 10; + assert twice_clamped(-30) == -20; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/imports.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/imports.t27 new file mode 100644 index 0000000000..20fe2d9f81 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/imports.t27 @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/imports.t27 -- feature imports: a use of an existing corpus module (specs/base/types.t27); +// the symbols of the import are not used, so what is measured is that the import itself is accepted. +module trinity_matrix_imports; + +use base::types; + +pub const WIDTH : u8 = 8; + +pub fn twice(x: u8) -> u8 { + return x * 2; +} + +test the_module_still_works_next_to_an_import { + assert twice(WIDTH) == 16; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/invariants.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/invariants.t27 new file mode 100644 index 0000000000..7567ee2452 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/invariants.t27 @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/invariants.t27 -- feature tests and invariants: constant invariants and a test block that checks them. +module trinity_matrix_invariants; + +pub const FRAME_BEATS : u32 = 64; +pub const FRAMES : u32 = 16; +pub const TOTAL_BEATS : u32 = 1024; + +invariant total_is_frames_times_beats { + FRAME_BEATS * FRAMES == TOTAL_BEATS +} + +invariant beats_fit_sixteen_bits { + TOTAL_BEATS < 65536 +} + +test the_invariants_hold_at_runtime_too { + assert FRAME_BEATS * FRAMES == TOTAL_BEATS; + assert TOTAL_BEATS < 65536; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/module_state.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/module_state.t27 new file mode 100644 index 0000000000..50671d478c --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/module_state.t27 @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/module_state.t27 -- feature module state: a var at module level, read and written by functions. +module trinity_matrix_module_state; + +var counter : u32 = 0; + +pub fn bump(by: u32) -> u32 { + counter = counter + by; + return counter; +} + +pub fn reset() { + counter = 0; +} + +test state_persists_between_calls { + reset(); + assert bump(2) == 2; + assert bump(3) == 5; + reset(); + assert bump(1) == 1; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_bodyless_fn.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_bodyless_fn.t27 new file mode 100644 index 0000000000..bc13858334 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_bodyless_fn.t27 @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/neg_bodyless_fn.t27 -- NEGATIVE: a required function declared without a body (the shape of +// gHashTag/t27#3472); a test calls it, so nothing may report it executable. +module trinity_matrix_neg_bodyless_fn; + +pub fn helper(x: u8) -> u8; + +test calls_the_bodyless_function { + assert helper(1) == 2; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_dropped_module.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_dropped_module.t27 new file mode 100644 index 0000000000..9345c9f6af --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_dropped_module.t27 @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/neg_dropped_module.t27 -- NEGATIVE: a bare semicolon line ahead of the module line; the +// parser drops the module and the file must be reported as incompletely consumed, not accepted. +; +module trinity_matrix_neg_dropped_module; + +pub const N : u8 = 1; + +test n_is_one { + assert N == 1; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_false_assert.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_false_assert.t27 new file mode 100644 index 0000000000..eef89fb68b --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_false_assert.t27 @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/neg_false_assert.t27 -- NEGATIVE: a test whose assertion is false; typecheck stays ok, +// so only a runtime run can reject it, and it must. +module trinity_matrix_neg_false_assert; + +pub const ONE : u8 = 1; + +test one_is_greater_than_two { + assert ONE > 2; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_invalid_annotation.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_invalid_annotation.t27 new file mode 100644 index 0000000000..abea1c1fa0 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_invalid_annotation.t27 @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/neg_invalid_annotation.t27 -- NEGATIVE: a constant annotated str with an integer value; +// must not become an accepted executable capability. +module trinity_matrix_neg_invalid_annotation; + +pub const NAME : str = 5; + +test the_name_is_a_string { + assert NAME == "five"; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_unresolved_import.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_unresolved_import.t27 new file mode 100644 index 0000000000..6642a4f043 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/neg_unresolved_import.t27 @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/neg_unresolved_import.t27 -- NEGATIVE: an import of a module that does not exist. +module trinity_matrix_neg_unresolved_import; + +use nowhere::thing; + +pub const N : u8 = 1; + +test uses_nothing_from_the_import { + assert N == 1; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/scalars.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/scalars.t27 new file mode 100644 index 0000000000..4667e037f4 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/scalars.t27 @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/scalars.t27 -- feature scalars: integer and boolean constants, arithmetic, +// comparison, shifts and masks, as the Trinity headless profile writes them (S02). +module trinity_matrix_scalars; + +pub const LANES : u8 = 12; +pub const WORD_BITS : u16 = 40; +pub const BIG : u32 = 1000000; +pub const NEGATIVE : i32 = -7; +pub const ENABLED : bool = true; + +pub fn add_u32(a: u32, b: u32) -> u32 { + return a + b; +} + +pub fn mask_low(x: u32, bits: u32) -> u32 { + return x & ((1 << bits) - 1); +} + +pub fn abs_i32(x: i32) -> i32 { + if (x < 0) { return 0 - x; } + return x; +} + +test arithmetic_and_masks { + assert add_u32(BIG, 1) == 1000001; + assert mask_low(255, 4) == 15; + assert WORD_BITS / 8 == 5; + assert LANES * 3 == 36; +} + +test signed_and_boolean { + assert abs_i32(NEGATIVE) == 7; + assert NEGATIVE < 0; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/strings.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/strings.t27 new file mode 100644 index 0000000000..cc83efa311 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/strings.t27 @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/strings.t27 -- feature strings: string constants, equality and a function returning one. +module trinity_matrix_strings; + +pub const PROJECT : str = "trinity"; +pub const PROFILE : str = "headless"; + +pub fn profile_name(headless: bool) -> str { + if (headless) { return "headless"; } + return "web"; +} + +test string_constants_compare { + assert PROJECT == "trinity"; + assert PROFILE != "web"; +} + +test function_returns_a_string { + assert profile_name(true) == PROFILE; + assert profile_name(false) == "web"; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/structs.t27 b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/structs.t27 new file mode 100644 index 0000000000..f975e9a3a9 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/fixtures/trinity_matrix/structs.t27 @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: Apache-2.0 +// trinity_matrix/structs.t27 -- feature structs: a record type, a constructor and field access. +module trinity_matrix_structs; + +pub struct Point { + x: i32, + y: i32, +} + +pub fn make_point(x: i32, y: i32) -> Point { + var p : Point; + p.x = x; + p.y = y; + return p; +} + +pub fn manhattan(p: Point) -> i32 { + var dx : i32 = p.x; + var dy : i32 = p.y; + if (dx < 0) { dx = 0 - dx; } + if (dy < 0) { dy = 0 - dy; } + return dx + dy; +} + +test fields_round_trip { + var p : Point = make_point(3, -4); + assert p.x == 3; + assert p.y == -4; + assert manhattan(p) == 7; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0006_adamw_block.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_adamw_block.t27 new file mode 100644 index 0000000000..3fedbe2bbc --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_adamw_block.t27 @@ -0,0 +1,7 @@ +module p1; +test step_without_weight_decay_matches_adam + given config = AdamWConfig{.learning_rate = 0.001, .beta1 = 0.9, .beta2 = 0.999, .weight_decay = 0.0} + and state = init(config, 1) + and params = [1.0] + when result = step(state, params, grads) + then result.updated_params.len == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0006_array_then_when.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_array_then_when.t27 new file mode 100644 index 0000000000..05743fa1e8 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_array_then_when.t27 @@ -0,0 +1,4 @@ +module m; +test t + given params = [1.0] + when result = step(params) diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0006_forged_brace_negative.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_forged_brace_negative.t27 new file mode 100644 index 0000000000..3330cc8ced --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_forged_brace_negative.t27 @@ -0,0 +1,5 @@ +module m; + +test p13 + given xs = [1] + then {1} == xs diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0006_typed_forms_alive.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_typed_forms_alive.t27 new file mode 100644 index 0000000000..7df3e2f266 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0006_typed_forms_alive.t27 @@ -0,0 +1,7 @@ +module ty; +test t + given a = []u8{} + given b = [3]u8{1, 2, 3} + given c = []TernaryWeight{} + when d = f(a, b, c) + then d == 0 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0007_and_not_folded.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_and_not_folded.t27 new file mode 100644 index 0000000000..763b285372 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_and_not_folded.t27 @@ -0,0 +1,17 @@ +module m; + +test two_side_effect_calls + given uart_tx_send(0x55) + and uart_tx_send(0x66) + then x == 1 + +test given_call_and_cmp + given f(x) + and y == 2 + then z == 1 + +test when_call_and_call + given x = 1 + when f(x) + and g(x) + then x == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0007_bare_call_given.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_bare_call_given.t27 new file mode 100644 index 0000000000..6aaa70d23e --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_bare_call_given.t27 @@ -0,0 +1,5 @@ +module m; +test t + given uart_tx_send(0x55) + and result = uart_tx_send(0xAA) + then result == false diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0007_bench_measure_target.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_bench_measure_target.t27 new file mode 100644 index 0000000000..015bcfdc11 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_bench_measure_target.t27 @@ -0,0 +1,5 @@ +module m; +bench b + given angle = 0.78 + measure cordic_sin_cos(angle, 16) + target latency_us < 5.0 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0007_gherkin_and_roles.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_gherkin_and_roles.t27 new file mode 100644 index 0000000000..a6d3dc9679 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0007_gherkin_and_roles.t27 @@ -0,0 +1,7 @@ +module m; + +test sandwich + given a = 1 + then a == 1 + and y = 2 + and y == 2 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0008_ptr_split_negative.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0008_ptr_split_negative.t27 new file mode 100644 index 0000000000..eaa4b64080 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0008_ptr_split_negative.t27 @@ -0,0 +1,4 @@ +module m; +const P = * +const u8; +const After = 7; diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0008_semicolonless_const_pair.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0008_semicolonless_const_pair.t27 new file mode 100644 index 0000000000..2ffd34fd48 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0008_semicolonless_const_pair.t27 @@ -0,0 +1,9 @@ +module m; +const MAX_A: int = 10 +const MAX_B: int = 5 +fn f() -> int { + return 1; +} +test t + given x = f() + then x == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0009_no_prose_in_tests.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0009_no_prose_in_tests.t27 new file mode 100644 index 0000000000..8536b8514b --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0009_no_prose_in_tests.t27 @@ -0,0 +1,5 @@ +module m; + +test then_absorbed + given x = 1 + measure: 5 then x == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0009_two_clauses_one_line.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0009_two_clauses_one_line.t27 new file mode 100644 index 0000000000..8fcb5f8391 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0009_two_clauses_one_line.t27 @@ -0,0 +1,4 @@ +module m; + +bench two_on_one_line + measure: 5 target: 6 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0011_in_membership.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0011_in_membership.t27 new file mode 100644 index 0000000000..c4ac9c2f18 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0011_in_membership.t27 @@ -0,0 +1,8 @@ +module m; +bench low_bit_range: value in [-1, 0, 1] +test t + given x = 2 + then x in [1, 2, 3] +test s + given y = 1 + then y in {0, 1, 2} diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0012_p2_coltie_module_const.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0012_p2_coltie_module_const.t27 new file mode 100644 index 0000000000..6e0e233c41 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0012_p2_coltie_module_const.t27 @@ -0,0 +1,11 @@ +module m; + +test alpha +given x = 1 +then x == 1 + +const TIE : u32 = 7; + +fn f() -> u32 { + return TIE; +} diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0012_statement_clauses.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0012_statement_clauses.t27 new file mode 100644 index 0000000000..415aa35774 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0012_statement_clauses.t27 @@ -0,0 +1,10 @@ +module m; +test t + given a = 1 + const h = 5 + var v : u32 = 7 + then a + h + v == 13 + +test hoist_edge_const_first + const c = 1 + then c == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0013_kf.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_kf.t27 new file mode 100644 index 0000000000..c6b964f178 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_kf.t27 @@ -0,0 +1,4 @@ +module m; +test t + given contract = Contract { module_name: "add2", invariant: "assert no_overflow", clk: "clk" } + then contract.clk == "clk" diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0013_lv.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_lv.t27 new file mode 100644 index 0000000000..5da08af85c --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_lv.t27 @@ -0,0 +1,6 @@ +module m; +test t + given x = 1 + and state.gamma[0] = 2.0 + when buffers.scores[0..4] = scores + then x == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0013_un.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_un.t27 new file mode 100644 index 0000000000..988711c043 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_un.t27 @@ -0,0 +1,4 @@ +module m; +bench b + measure ternary_step(state) + target throughput > 1000 steps/sec diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0013_vn.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_vn.t27 new file mode 100644 index 0000000000..d609a48f49 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0013_vn.t27 @@ -0,0 +1,4 @@ +module m; +test t + given var = 5 + then var == 5 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0014_comprehension_suffix.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0014_comprehension_suffix.t27 new file mode 100644 index 0000000000..c133d2ed44 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0014_comprehension_suffix.t27 @@ -0,0 +1,4 @@ +module m; +test t + given encoded = encode(x) for x in {0.25, 0.5, 1.0} + then encoded.len() == 3 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/0014_inline_lambda.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/0014_inline_lambda.t27 new file mode 100644 index 0000000000..3e62285a4a --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/0014_inline_lambda.t27 @@ -0,0 +1,4 @@ +module m; +test t + given result = step(state) + then all(result.v, fn(x) x >= 0.0) diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/bdd_probe.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/bdd_probe.t27 new file mode 100644 index 0000000000..8cbeeebb6c --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/bdd_probe.t27 @@ -0,0 +1,13 @@ +module BddProbe + +fn double(x: u32) -> u32 { return x * 2; } + +test doubles + given a = 5 + when r = double(a) + then r == 10 + +test tuple_when + given a = 5 + when (x, y) = double_pair(a) + then x == 10 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/cap_ok.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/cap_ok.t27 new file mode 100644 index 0000000000..a3c3491d7c --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/cap_ok.t27 @@ -0,0 +1,12 @@ +module CapOk + +const SCALE: f32 = 2.0; + +fn outer(x: f32) -> f32 { + fn inner(y: f32) f32 { + return y * SCALE; + } + return inner(x); +} + +test "t" { assert(outer(1.0) == 2.0); } diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/cap_test.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/cap_test.t27 new file mode 100644 index 0000000000..911a864626 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/cap_test.t27 @@ -0,0 +1,11 @@ +module CapTest + +fn outer(x: f32) -> f32 { + const scale: f32 = 2.0; + fn inner(y: f32) f32 { + return y * scale; + } + return inner(x); +} + +test "t" { assert(outer(1.0) == 2.0); } diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/diff_probe.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/diff_probe.t27 new file mode 100644 index 0000000000..48851447b1 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/diff_probe.t27 @@ -0,0 +1,14 @@ +module DiffProbe +fn g() -> u32 { return 1; } + +test t1 + given A = jones_topology_filter::standard_structure() + then g() == 1 + +test t2 + given a = jones_topology_filter::standard_structure() + then g() == 1 + +test t3 + given A = mod_a::helper() + then g() == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/expr_probe.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/expr_probe.t27 new file mode 100644 index 0000000000..3d19626bb1 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/expr_probe.t27 @@ -0,0 +1,5 @@ +module ExprProbe +fn f() -> u32 { return 1; } +test empty_array_lit + given results = []EvalResult{} + then f() == 1 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/greedy_probe.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/greedy_probe.t27 new file mode 100644 index 0000000000..cdc3c59148 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/greedy_probe.t27 @@ -0,0 +1,12 @@ +module GreedyProbe +fn g(x: u32) -> u32 { return x; } + +test given_then_when + given A = mod_a::helper() + when s = g(1) + then s == 1 + +test given_plaincall_when + given B = g(2) + when t = g(3) + then t == 3 diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/r_combo.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/r_combo.t27 new file mode 100644 index 0000000000..a879457090 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/r_combo.t27 @@ -0,0 +1,14 @@ +module R4 +fn f(x_val: f32) -> f32 { + var result: f32 = 1.0; + var term: f32 = 1.0; + const num_terms: u32 = 5; + for (0..num_terms) |i| { + if (i > 0) { + term *= x_val / @as(f32, @floatFromInt(i)); + result += term; + } + } + return result; +} +test "t" { assert(f(0.0) == 1.0); } diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/r_mulassign.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/r_mulassign.t27 new file mode 100644 index 0000000000..1eacb82266 --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/r_mulassign.t27 @@ -0,0 +1,7 @@ +module R2 +fn f() -> f32 { + var t: f32 = 1.0; + t *= 2.0; + return t; +} +test "t" { assert(f() == 2.0); } diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/r_op.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/r_op.t27 new file mode 100644 index 0000000000..b1b2a58eaf --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/r_op.t27 @@ -0,0 +1,7 @@ +module R5 +fn f() -> f32 { + var t: f32 = 8.0; + t %= 2.0; + return t; +} +test "t" { assert(f() != 0.0); } diff --git a/apps/website/public/t27/files/bootstrap/tests/goldring/repro_range.t27 b/apps/website/public/t27/files/bootstrap/tests/goldring/repro_range.t27 new file mode 100644 index 0000000000..9d9a1a035f --- /dev/null +++ b/apps/website/public/t27/files/bootstrap/tests/goldring/repro_range.t27 @@ -0,0 +1,11 @@ +module ReproRange + +fn f() -> u32 { + var s: u32 = 0; + for (0..5) |i| { + s += i; + } + return s; +} + +test "t" { assert(f() == 10); } diff --git a/apps/website/public/t27/files/compiler/ast.t27 b/apps/website/public/t27/files/compiler/ast.t27 index b54ae6ae3d..190a67e0dd 100644 --- a/apps/website/public/t27/files/compiler/ast.t27 +++ b/apps/website/public/t27/files/compiler/ast.t27 @@ -1,10 +1,10 @@ -// ast.t27 -- Abstract Syntax Tree for TRI-27 Assembly +// ast.t27 — Abstract Syntax Tree for TRI-27 Assembly // This file defines the AST structure used by the t27 compiler module ast { - // ===================================================================== - // Token types -- enum of all token types (shared between lexer and parser) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Token types — enum of all token types (shared between lexer and parser) + // ═════════════════════════════════════════════════════════════════════ pub const TokenType = enum(u8) { // Punctuation @@ -103,13 +103,13 @@ module ast { When = 96, Then = 97, Assert = 98, - KwAnd = 99, + And = 99, Expect = 100, }; - // ===================================================================== - // Node types -- enum of all AST node types - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Node types — enum of all AST node types + // ═════════════════════════════════════════════════════════════════════ pub const NodeType = enum(u8) { // Program structure @@ -164,9 +164,9 @@ module ast { RuleDecl = 69, // rule declaration }; - // ===================================================================== - // AST Node -- base structure for all nodes - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // AST Node — base structure for all nodes + // ═════════════════════════════════════════════════════════════════════ pub const ASTNode = struct { node_type: NodeType, @@ -175,9 +175,9 @@ module ast { source_file: []const u8, }; - // ===================================================================== - // Program -- root node - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Program — root node + // ═════════════════════════════════════════════════════════════════════ pub const Program = struct { node: ASTNode, @@ -192,9 +192,9 @@ module ast { imports: [][]const u8, // Imported modules }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Section structures - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const TestSection = struct { node: ASTNode, @@ -211,9 +211,9 @@ module ast { benchmarks: []BenchDecl, }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Constants and Data - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const ConstDef = struct { node: ASTNode, @@ -233,14 +233,14 @@ module ast { label: []const u8, }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Code and Instructions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const CodeSection = struct { node: ASTNode, instructions: []Instruction, - labels: std.StringHashMap(u32), // Label -> instruction index + labels: std.StringHashMap(u32), // Label → instruction index }; pub const Instruction = struct { @@ -295,11 +295,11 @@ module ast { offset: i16, }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec structures - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ - // TestCase -- a single test case from .test section + // TestCase — a single test case from .test section // Format: ; test_name ; Verify: description ; Expected: expected outcome pub const TestCase = struct { node: ASTNode, @@ -310,7 +310,7 @@ module ast { rationale: ?[]const u8, // Additional rationale (optional) }; - // InvariantDecl -- an invariant from .invariant section + // InvariantDecl — an invariant from .invariant section // Format: ; invariant_name ; Rationale: explanation pub const InvariantDecl = struct { node: ASTNode, @@ -319,7 +319,7 @@ module ast { rationale: []const u8, // "Rationale:" explanation }; - // BenchDecl -- a benchmark from .bench section + // BenchDecl — a benchmark from .bench section // Format: ; bench_name ; Measure: what to measure ; Target: target value pub const BenchDecl = struct { node: ASTNode, @@ -329,11 +329,11 @@ module ast { units: []const u8, // Units of measurement (e.g., "cycles", "ns", "ops/sec") }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec high-level structures (spec-style) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ - // SpecDecl -- spec module header declaration + // SpecDecl — spec module header declaration // Format: spec pub const SpecDecl = struct { node: ASTNode, @@ -344,7 +344,7 @@ module ast { rules: []RuleDecl, // rules in spec }; - // TestBlock -- a complete test with given/when/then clauses + // TestBlock — a complete test with given/when/then clauses // Format: test { given ... when ... then ... } pub const TestBlock = struct { node: ASTNode, @@ -393,9 +393,9 @@ module ast { expression: []const u8, // expectation expression }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Type information for codegen - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const TypeInfo = struct { name: []const u8, @@ -403,9 +403,9 @@ module ast { is_signed: bool, }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Symbol table - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const Symbol = struct { name: []const u8, @@ -444,9 +444,9 @@ module ast { } }; - // ===================================================================== - // Compiler context -- passed through all compilation stages - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Compiler context — passed through all compilation stages + // ═════════════════════════════════════════════════════════════════════ pub const CompilerContext = struct { ast_root: Program, @@ -518,9 +518,9 @@ module ast { } } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for AST -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test token_type_eof_value try std.testing.expect(@intFromEnum(ast.TokenType.EOF) == 0); diff --git a/apps/website/public/t27/files/compiler/cli/gen.t27 b/apps/website/public/t27/files/compiler/cli/gen.t27 index 2b5da2eb8e..b2fdf7c40c 100644 --- a/apps/website/public/t27/files/compiler/cli/gen.t27 +++ b/apps/website/public/t27/files/compiler/cli/gen.t27 @@ -1,4 +1,4 @@ -// gen.t27 -- Code Generation with TDD Validation +// gen.t27 — Code Generation with TDD Validation // Commands for generating code from t27 specs with TDD enforcement module gen_commands { @@ -6,9 +6,9 @@ module gen_commands { using codegen_zig: @import("../codegen/zig/codegen.t27"); using testgen: @import("../codegen/testgen.t27"); - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Codegen options - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const GenOptions = struct { backend: []const u8, // Target backend (zig, c, verilog, etc.) @@ -34,9 +34,9 @@ module gen_commands { output_format: []const u8, }; - // ===================================================================== - // Command: tri gen -- Generate code from spec with TDD validation - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Command: tri gen — Generate code from spec with TDD validation + // ═════════════════════════════════════════════════════════════════════ pub fn gen(spec_path: []const u8, options: GenOptions) i32 { // Check if spec exists @@ -73,9 +73,9 @@ module gen_commands { return 1; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // TDD CONTRACT ENFORCEMENT (Per User Requirement: No prototype mode) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ var has_tests = false; var test_count: usize = 0; var invariant_count: usize = 0; @@ -130,9 +130,9 @@ module gen_commands { print_int(invariant_count); error_print(" invariants\n"); - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Generate code - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Determine output paths const output_dir = if (options.output_dir.len == 0) @@ -259,9 +259,9 @@ module gen_commands { return 0; } - // ===================================================================== - // Command: tri gen all -- Generate code for all specs in project - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Command: tri gen all — Generate code for all specs in project + // ═════════════════════════════════════════════════════════════════════ pub fn gen_all(options: GenOptions) i32 { const spec_files = glob("specs/**/*.t27"); @@ -306,9 +306,9 @@ module gen_commands { return if (fail_count > 0) 1 else 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Helper functions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Get basename without extension pub fn basename_without_ext(path: []const u8) []const u8 { @@ -336,9 +336,9 @@ module gen_commands { return path[filename_start..end]; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Type definitions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const Program = struct { constants: []Constant, @@ -435,9 +435,9 @@ module gen_commands { }; } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Gen Commands -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gen_returns_zero_on_success // Mock successful generation scenario diff --git a/apps/website/public/t27/files/compiler/cli/git.t27 b/apps/website/public/t27/files/compiler/cli/git.t27 index e919685b1b..a8e8dd3cd2 100644 --- a/apps/website/public/t27/files/compiler/cli/git.t27 +++ b/apps/website/public/t27/files/compiler/cli/git.t27 @@ -1,12 +1,12 @@ -// git.t27 -- Git Integration with Tri Skill Workflow (ADR-002) +// git.t27 — Git Integration with Tri Skill Workflow (ADR-002) // Commands for git operations with skill validation and issue binding module git_commands { using skill_registry: @import("../skill/registry.t27"); - // ========================================================= + // ═════════════════════════════════════════════════════════ // Command: tri git commit [--all] [-m "msg"] [--mode strict|normal|local] - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub fn git_commit(all: bool, message: []const u8, mode: []const u8) i32 { const registry_path = ".trinity/skills/registry.json"; @@ -125,9 +125,9 @@ module git_commands { return 0; } - // ========================================================= + // ═════════════════════════════════════════════════════════ // Command: tri git push [ ] [--mode strict|normal|local] - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub fn git_push(remote: []const u8, branch: []const u8, mode: []const u8) i32 { const registry_path = ".trinity/skills/registry.json"; @@ -242,9 +242,9 @@ module git_commands { return 0; } - // ========================================================= - // Command: tri git status -- Show git status with skill info - // ===================================================================== + // ═════════════════════════════════════════════════════════ + // Command: tri git status — Show git status with skill info + // ═════════════════════════════════════════════════════════════════════ pub fn git_status_with_skill() i32 { const registry_path = ".trinity/skills/registry.json"; @@ -290,9 +290,9 @@ module git_commands { return 0; } - // ========================================================= + // ═════════════════════════════════════════════════════════ // Helper functions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Find active or last sealed skill from registry fn find_active_or_sealed_skill(registry_json: []const u8) ?Skill { @@ -452,9 +452,9 @@ module git_commands { return result; } - // ========================================================= + // ═════════════════════════════════════════════════════════ // Type definitions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const Skill = struct { id: []const u8, @@ -482,9 +482,9 @@ module git_commands { }; } -// =========================================================================================== +// ═══════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Git Integration -// =========================================================================================== +// ═══════════════════════════════════════════════════════════════════════════════════════════ test git_commit_requires_registry // Mock: registry doesn't exist diff --git a/apps/website/public/t27/files/compiler/cli/spec.t27 b/apps/website/public/t27/files/compiler/cli/spec.t27 index b72a481df5..477d1f66ea 100644 --- a/apps/website/public/t27/files/compiler/cli/spec.t27 +++ b/apps/website/public/t27/files/compiler/cli/spec.t27 @@ -1,10 +1,10 @@ -// spec.t27 -- Spec Management Commands +// spec.t27 — Spec Management Commands // Commands for creating and managing t27 specs with TDD enforcement module spec_commands { - // ===================================================================== - // Command: tri spec create -- Create a new spec with TDD template - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Command: tri spec create — Create a new spec with TDD template + // ═════════════════════════════════════════════════════════════════════ pub fn spec_create(name: []const u8, path: []const u8) i32 { // Validate spec name @@ -51,9 +51,9 @@ module spec_commands { return 0; } - // ===================================================================== - // Command: tri spec validate -- Validate spec has TDD compliance - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Command: tri spec validate — Validate spec has TDD compliance + // ═════════════════════════════════════════════════════════════════════ pub fn spec_validate(path: []const u8) i32 { if (!file_exists(path)) { @@ -136,9 +136,9 @@ module spec_commands { return 0; } - // ===================================================================== - // Command: tri spec list -- List all specs in project - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // Command: tri spec list — List all specs in project + // ═════════════════════════════════════════════════════════════════════ pub fn spec_list() i32 { const spec_dir = "specs"; @@ -170,7 +170,7 @@ module spec_commands { } } - const status = if (has_tests) "ok" else "x"; + const status = if (has_tests) "✓" else "✗"; print(" "); print(status); print(" "); @@ -181,9 +181,9 @@ module spec_commands { return 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Helper functions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Validate spec name: lowercase alphanumeric with underscores pub fn is_valid_spec_name(name: []const u8) bool { @@ -209,8 +209,8 @@ module spec_commands { // Generate spec template with TDD blocks (assembly-like format) pub fn generate_spec_template(name: []const u8) []const u8 { - return "; " ++ name ++ ".t27 -- Specification for " ++ name ++ "\n" ++ - "; phi^2 + 1/phi^2 = 3 | TRINITY\n" ++ + return "; " ++ name ++ ".t27 — Specification for " ++ name ++ "\n" ++ + "; φ² + 1/φ² = 3 | TRINITY\n" ++ ";\n" ++ "; This file is the source of truth for " ++ name ++ ".\n" ++ "; Generated code is a derived artifact - DO NOT EDIT generated files.\n" ++ @@ -220,31 +220,31 @@ module spec_commands { "\n" ++ ".use base::types\n" ++ "\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "; Constants\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "\n" ++ ".const EXAMPLE_CONSTANT 42\n" ++ "\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "; Data Section\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "\n" ++ ".data\n" ++ " .const DATA_INIT 0\n" ++ "\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "; Code Section\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "\n" ++ ".code\n" ++ "main:\n" ++ " ; Your code here\n" ++ " HALT\n" ++ "\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "; TDD-Inside-Spec: Tests and Invariants\n" ++ - "; ===============================================================\n" ++ + "; ═══════════════════════════════════════════════════════════════\n" ++ "\n" ++ ".test\n" ++ " ; example_test\n" ++ @@ -296,9 +296,9 @@ module spec_commands { return errors.toOwnedSlice() catch &[0][]const u8{}; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Type definitions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const Program = struct { constants: []Constant, @@ -364,9 +364,9 @@ module spec_commands { }; } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Spec Commands -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test spec_create_returns_zero_on_success const result = spec_commands.spec_create("test_spec", ""); diff --git a/apps/website/public/t27/files/compiler/codegen/c/codegen.t27 b/apps/website/public/t27/files/compiler/codegen/c/codegen.t27 index d72ebd4a2d..9df62302a2 100644 --- a/apps/website/public/t27/files/compiler/codegen/c/codegen.t27 +++ b/apps/website/public/t27/files/compiler/codegen/c/codegen.t27 @@ -1,6 +1,6 @@ -; compiler/codegen/c/codegen.t27 -- C Code Generator Specification +; compiler/codegen/c/codegen.t27 — C Code Generator Specification ; Emit C code from t27 AST -; phi^2 + 1/phi^2 = 3 | TRINITY +; φ² + 1/φ² = 3 | TRINITY module tricgen-c; @@ -83,7 +83,7 @@ pub const CCodeGen = struct { fn emit_header(self: *CCodeGen) !void { _ = self; // Emit: // Generated by t27 compiler - // Emit: // phi^2 + 1/phi^2 = 3 | TRINITY + // Emit: // φ² + 1/φ² = 3 | TRINITY } // Emit C include statements @@ -242,7 +242,7 @@ invariant "no_undefined_behavior" { } invariant "type_mapping_correctness" { - // Trit -> int8_t, TernaryWord -> uint32_t, f64 -> double + // Trit → int8_t, TernaryWord → uint32_t, f64 → double // Rationale: Type mapping must be consistent } diff --git a/apps/website/public/t27/files/compiler/codegen/testgen.t27 b/apps/website/public/t27/files/compiler/codegen/testgen.t27 index 9671b800ec..674f65a4d1 100644 --- a/apps/website/public/t27/files/compiler/codegen/testgen.t27 +++ b/apps/website/public/t27/files/compiler/codegen/testgen.t27 @@ -1,4 +1,4 @@ -// testgen.t27 -- Generic Test Generator for TDD-Inside-Spec +// testgen.t27 — Generic Test Generator for TDD-Inside-Spec // Generates test code from spec test blocks for multiple backends module testgen { @@ -49,9 +49,9 @@ module testgen { self.emit_line(""); self.emit("const std = @import(\"std\");"); self.emit_line(""); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Generated Tests"); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); // Generate from spec_decl (high-level TDD) @@ -84,9 +84,9 @@ module testgen { self.emit_line(""); self.emit("#include "); self.emit_line(""); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Generated Tests"); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); // Generate from spec_decl @@ -107,9 +107,9 @@ module testgen { self.emit("// Verilog testbench generated from "); self.emit(self.ast.source_file); self.emit_line(""); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Generated Testbench"); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); self.emit("`timescale 1ns/1ps"); @@ -153,9 +153,9 @@ module testgen { self.emit_line(""); self.emit_line(" use super::*;"); self.emit_line(""); - self.emit_line(" // ==============================================================="); + self.emit_line(" // ═══════════════════════════════════════════════════════════════"); self.emit_line(" // TDD-Inside-Spec: Generated Tests"); - self.emit_line(" // ==============================================================="); + self.emit_line(" // ═══════════════════════════════════════════════════════════════"); self.emit_line(""); // Generate from spec_decl @@ -670,9 +670,9 @@ module testgen { }; } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for TestGen -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test testgen_new_creates_generator // Verify: TestGen.new creates a generator with AST and options diff --git a/apps/website/public/t27/files/compiler/codegen/verilog/codegen.t27 b/apps/website/public/t27/files/compiler/codegen/verilog/codegen.t27 index fb9c45d31f..b7b59594ea 100644 --- a/apps/website/public/t27/files/compiler/codegen/verilog/codegen.t27 +++ b/apps/website/public/t27/files/compiler/codegen/verilog/codegen.t27 @@ -1,4 +1,4 @@ -// codegen.t27 0 Code Generator for Verilog +// codegen.t27 — Code Generator for Verilog // Generates synthesizable Verilog from t27 AST module verilog_codegen { @@ -100,7 +100,7 @@ module verilog_codegen { self.emit("// Clock: "); self.emit_int(self.options.clock_freq_hz); self.emit_line(" Hz"); - self.emit_line("// DO NOT EDIT 1 source of truth is .t27 file"); + self.emit_line("// DO NOT EDIT — source of truth is .t27 file"); self.emit_line(""); self.emit_line("`timescale 1ns / 1ps"); self.emit_line(""); @@ -402,15 +402,15 @@ module verilog_codegen { // Emit FPGA top-level module fn emit_fpga_top(self: *VerilogCodegen) void { self.emit_line(""); - self.emit_line("// 212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312"); + self.emit_line("// ═════════════════════════════════════════════════════════════════════════════════════════════════════"); self.emit_line("// Top-Level FPGA Wrapper: Trinity_FPGA_Top"); - self.emit_line("// 313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810314 // TODO: Implement FPGA module emission - 4015 // if (self.options.include_toplevel) { - 4016 // self.emit_fpga_top(); - 4017 // } + self.emit_line("// ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════14 // TODO: Implement FPGA module emission + // if (self.options.include_toplevel) { + // self.emit_fpga_top(); + // } // 5. FPGA Module Emission - // 282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842338433384433845338463384733848338493385033851338523385333854338553385633857338583385933860338613386233863338643386533866338673386833869338703387133872338733387433875338763387733878338793388033881338823388333884338853388633887338883388933890338913389233893338943389533896338973389833899339003390133902339033390433905339063390733908339093391033911339123391333914339153391633917339183391933920339213392233923339243392533926339273392833929339303393133932339333393433935339363393733938339393394033941339423394333944339453394633947339483394933950339513395233953339543395533956339573395833959339603396133962339633396433965339663396733968339693397033971339723397333974339753397633977339783397933980339813398233983339843398533986339873398833989339903399133992339933399433995339963399733998339993400034001340023400334004340053400634007340083400934010340113401234013340143401534016340173401834019340203402134022340233402434025340263402734028340293403034031340323403334034340353403634037340383403934040340413404234043340443404534046340473404834049340503405134052340533405434055340563405734058340593406034061340623406334064340653406634067340683406934070340713407234073340743407534076340773407834079340803408134082340833408434085340863408734088340893409034091340923409334094340953409634097340983409934100341013410234103341043410534106341073410834109341103411134112341133411434115341163411734118341193412034121341223412334124341253412634127341283412934130341313413234133341343413534136341373413834139341403414134142341433414434145341463414734148341493415034151341523415334154341553415634157341583415934160341613416234163341643416534166341673416834169341703417134172341733417434175341763417734178341793418034181341823418334184341853418634187341883418934190341913419234193341943419534196341973419834199342003420134202342033420434205342063420734208342093421034211342123421334214342153421634217342183421934220342213422234223342243422534226342273422834229342303423134232342333423434235342363423734238342393424034241342423424334244342453424634247342483424934250342513425234253342543425534256342573425834259342603426134262342633426434265342663426734268342693427034271342723427334274342753427634277342783427934280342813428234283342843428534286342873428834289342903429134292342933429434295342963429734298342993430034301343023430334304343053430634307343083430934310343113431234313343143431534316343173431834319343203432134322343233432434325343263432734328343293433034331343323433334334343353433634337343383433934340343413434234343343443434534346343473434834349343503435134352343533435434355343563435734358343593436034361343623436334364343653436634367343683436934370343713437234373343743437534376343773437834379343803438134382343833438434385343863438734388343893439034391343923439334394343953439634397343983439934400344013440234403344043440534406344073440834409344103441134412344133441434415344163441734418344193442034421344223442334424344253442634427344283442934430344313443234433344343443534436344373443834439344403444134442344433444434445344463444734448344493445034451344523445334454344553445634457344583445934460344613446234463344643446534466344673446834469344703447134472344733447434475344763447734478344793448034481344823448334484344853448634487344883448934490344913449234493344943449534496344973449834499345003450134502345033450434505345063450734508345093451034511345123451334514345153451634517345183451934520345213452234523345243452534526345273452834529345303453134532345333453434535345363453734538345393454034541345423454334544345453454634547345483454934550345513455234553345543455534556345573455834559345603456134562345633456434565345663456734568345693457034571345723457334574345753457634577345783457934580345813458234583345843458534586345873458834589345903459134592345933459434595345963459734598345993460034601346023460334604346053460634607346083460934610346113461234613346143461534616346173461834619346203462134622346233462434625346263462734628346293463034631346323463334634346353463634637346383463934640346413464234643346443464534646346473464834649346503465134652346533465434655346563465734658346593466034661346623466334664346653466634667346683466934670346713467234673346743467534676346773467834679346803468134682346833468434685346863468734688346893469034691346923469334694346953469634697346983469934700347013470234703347043470534706347073470834709347103471134712347133471434715347163471734718347193472034721347223472334724347253472634727347283472934730347313473234733347343473534736347373473834739347403474134742347433474434745347463474734748347493475034751347523475334754347553475634757347583475934760347613476234763347643476534766347673476834769347703477134772347733477434775347763477734778347793478034781347823478334784347853478634787347883478934790347913479234793347943479534796347973479834799348003480134802348033480434805348063480734808348093481034811348123481334814348153481634817348183481934820348213482234823348243482534826348273482834829348303483134832348333483434835348363483734838348393484034841348423484334844348453484634847348483484934850348513485234853348543485534856348573485834859348603486134862348633486434865348663486734868348693487034871348723487334874348753487634877348783487934880348813488234883348843488534886348873488834889348903489134892348933489434895348963489734898348993490034901349023490334904349053490634907349083490934910349113491234913349143491534916349173491834919349203492134922349233492434925349263492734928349293493034931349323493334934349353493634937349383493934940349413494234943349443494534946349473494834949349503495134952349533495434955349563495734958349593496034961349623496334964349653496634967349683496934970349713497234973349743497534976349773497834979349803498134982349833498434985349863498734988349893499034991349923499334994349953499634997349983499935000350013500235003350043500535006350073500835009350103501135012350133501435015350163501735018350193502035021350223502335024350253502635027350283502935030350313503235033350343503535036350373503835039350403504135042350433504435045350463504735048350493505035051350523505335054350553505635057350583505935060350613506235063350643506535066350673506835069350703507135072350733507435075350763507735078350793508035081350823508335084350853508635087350883508935090350913509235093350943509535096350973509835099351003510135102351033510435105351063510735108351093511035111351123511335114351153511635117351183511935120351213512235123351243512535126351273512835129351303513135132351333513435135351363513735138351393514035141351423514335144351453514635147351483514935150351513515235153351543515535156351573515835159351603516135162351633516435165351663516735168351693517035171351723517335174351753517635177351783517935180351813518235183351843518535186351873518835189351903519135192351933519435195351963519735198351993520035201352023520335204352053520635207352083520935210352113521235213352143521535216352173521835219352203522135222352233522435225352263522735228352293523035231352323523335234352353523635237352383523935240352413524235243352443524535246352473524835249352503525135252352533525435255352563525735258352593526035261352623526335264352653526635267352683526935270352713527235273352743527535276352773527835279352803528135282352833528435285352863528735288352893529035291352923529335294352953529635297352983529935300353013530235303353043530535306353073530835309353103531135312353133531435315353163531735318353193532035321353223532335324353253532635327353283532935330353313533235333353343533535336353373533835339353403534135342353433534435345353463534735348353493535035351353523535335354353553535635357353583535935360353613536235363353643536535366353673536835369353703537135372353733537435375353763537735378353793538035381353823538335384353853538635387353883538935390353913539235393353943539535396353973539835399354003540135402354033540435405354063540735408354093541035411354123541335414354153541635417354183541935420354213542235423354243542535426354273542835429354303543135432354333543435435354363543735438354393544035441354423544335444354453544635447354483544935450354513545235453354543545535456354573545835459354603546135462354633546435465354663546735468354693547035471354723547335474354753547635477354783547935480354813548235483354843548535486354873548835489354903549135492354933549435495354963549735498354993550035501355023550335504355053550635507355083550935510355113551235513355143551535516355173551835519355203552135522355233552435525355263552735528355293553035531355323553335534355353553635537355383553935540355413554235543355443554535546355473554835549355503555135552355533555435555355563555735558355593556035561355623556335564355653556635567355683556935570355713557235573355743557535576355773557835579355803558135582355833558435585355863558735588355893559035591355923559335594355953559635597355983559935600356013560235603356043560535606356073560835609356103561135612356133561435615356163561735618356193562035621356223562335624356253562635627356283562935630356313563235633356343563535636356373563835639356403564135642356433564435645356463564735648356493565035651356523565335654356553565635657356583565935660356613566235663356643566535666356673566835669356703567135672356733567435675356763567735678356793568035681356823568335684356853568635687356883568935690356913569235693356943569535696356973569835699357003570135702357033570435705357063570735708357093571035711357123571335714357153571635717357183571935720357213572235723357243572535726357273572835729357303573135732357333573435735357363573735738357393574035741357423574335744357453574635747357483574935750357513575235753357543575535756357573575835759357603576135762357633576435765357663576735768357693577035771357723577335774357753577635777357783577935780357813578235783357843578535786357873578835789357903579135792357933579435795357963579735798357993580035801358023580335804358053580635807358083580935810358113581235813358143581535816358173581835819358203582135822358233582435825358263582735828358293583035831358323583335834358353583635837358383583935840358413584235843358443584535846358473584835849358503585135852358533585435855358563585735858358593586035861358623586335864358653586635867358683586935870358713587235873358743587535876358773587835879358803588135882358833588435885358863588735888358893589035891358923589335894358953589635897358983589935900359013590235903359043590535906359073590835909359103591135912359133591435915359163591735918359193592035921359223592335924359253592635927359283592935930359313593235933359343593535936359373593835939359403594135942359433594435945359463594735948359493595035951359523595335954359553595635957359583595935960359613596235963359643596535966359673596835969359703597135972359733597435975359763597735978359793598035981359823598335984359853598635987359883598935990359913599235993359943599535996359973599835999360003600136002360033600436005360063600736008360093601036011360123601336014360153601636017360183601936020360213602236023360243602536026360273602836029360303603136032360333603436035360363603736038360393604036041360423604336044360453604636047360483604936050360513605236053360543605536056360573605836059360603606136062360633606436065360663606736068360693607036071360723607336074360753607636077360783607936080360813608236083360843608536086360873608836089360903609136092360933609436095360963609736098360993610036101361023610336104361053610636107361083610936110361113611236113361143611536116361173611836119361203612136122361233612436125361263612736128361293613036131361323613336134361353613636137361383613936140361413614236143361443614536146361473614836149361503615136152361533615436155361563615736158361593616036161361623616336164361653616636167361683616936170361713617236173361743617536176361773617836179361803618136182361833618436185361863618736188361893619036191361923619336194361953619636197361983619936200362013620236203362043620536206362073620836209 conditional on include_toplevel + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ conditional on include_toplevel // if (self.options.include_toplevel) { // self.emit_fpga_top(); // } @@ -490,9 +490,9 @@ module verilog_codegen { // Emit Verilog assertions for invariants fn emit_verilog_assertions(self: *VerilogCodegen) void { if (self.ast.invariant_section) |inv_section| { - self.emit_line("// 362103621136212362133621436215362163621736218362193622036221362223622336224362253622636227362283622936230362313623236233362343623536236362373623836239362403624136242362433624436245362463624736248362493625036251362523625336254362553625636257362583625936260362613626236263362643626536266362673626836269362703627136272"); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Invariant Assertions"); - self.emit_line("// 362733627436275362763627736278362793628036281362823628336284362853628636287362883628936290362913629236293362943629536296362973629836299363003630136302363033630436305363063630736308363093631036311363123631336314363153631636317363183631936320363213632236323363243632536326363273632836329363303633136332363333633436335"); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); for (inv_section.invariants) |inv| { @@ -636,18 +636,18 @@ module verilog_codegen { self.emit_line(""); } - // 3633636337363383633936340363413634236343363443634536346363473634836349363503635136352363533635436355363563635736358363593636036361363623636336364363653636636367363683636936370363713637236373363743637536376363773637836379363803638136382363833638436385363863638736388363893639036391363923639336394363953639636397363983639936400364013640236403364043640536406364073640836409364103641136412364133641436415364163641736418364193642036421364223642336424364253642636427364283642936430364313643236433364343643536436364373643836439364403644136442364433644436445364463644736448364493645036451364523645336454364553645636457364583645936460364613646236463364643646536466364673646836469364703647136472364733647436475364763647736478364793648036481364823648336484364853648636487364883648936490364913649236493364943649536496364973649836499365003650136502365033650436505365063650736508365093651036511365123651336514365153651636517365183651936520365213652236523365243652536526365273652836529365303653136532365333653436535365363653736538365393654036541365423654336544365453654636547365483654936550365513655236553365543655536556365573655836559365603656136562365633656436565365663656736568365693657036571365723657336574365753657636577365783657936580365813658236583365843658536586365873658836589365903659136592365933659436595365963659736598365993660036601366023660336604366053660636607366083660936610366113661236613366143661536616366173661836619366203662136622366233662436625366263662736628366293663036631366323663336634366353663636637366383663936640366413664236643366443664536646366473664836649366503665136652366533665436655366563665736658366593666036661366623666336664366653666636667366683666936670366713667236673366743667536676366773667836679366803668136682366833668436685366863668736688366893669036691366923669336694366953669636697366983669936700367013670236703367043670536706367073670836709367103671136712367133671436715367163671736718367193672036721367223672336724367253672636727367283672936730367313673236733367343673536736367373673836739367403674136742367433674436745367463674736748367493675036751367523675336754367553675636757367583675936760367613676236763367643676536766367673676836769367703677136772367733677436775367763677736778367793678036781367823678336784367853678636787367883678936790367913679236793367943679536796367973679836799368003680136802368033680436805368063680736808368093681036811368123681336814368153681636817368183681936820368213682236823368243682536826368273682836829368303683136832368333683436835368363683736838368393684036841368423684336844368453684636847368483684936850368513685236853368543685536856368573685836859368603686136862368633686436865368663686736868368693687036871368723687336874368753687636877368783687936880368813688236883368843688536886368873688836889368903689136892368933689436895368963689736898368993690036901369023690336904369053690636907369083690936910369113691236913369143691536916369173691836919369203692136922369233692436925369263692736928369293693036931369323693336934369353693636937369383693936940369413694236943369443694536946369473694836949369503695136952369533695436955369563695736958369593696036961369623696336964369653696636967369683696936970369713697236973369743697536976369773697836979369803698136982369833698436985369863698736988369893699036991369923699336994369953699636997369983699937000370013700237003370043700537006370073700837009370103701137012370133701437015370163701737018370193702037021370223702337024370253702637027370283702937030370313703237033370343703537036370373703837039370403704137042370433704437045370463704737048370493705037051370523705337054370553705637057370583705937060370613706237063370643706537066370673706837069370703707137072370733707437075370763707737078370793708037081370823708337084370853708637087370883708937090370913709237093370943709537096370973709837099371003710137102371033710437105371063710737108371093711037111371123711337114371153711637117371183711937120371213712237123371243712537126371273712837129371303713137132371333713437135371363713737138371393714037141371423714337144371453714637147371483714937150371513715237153371543715537156371573715837159371603716137162371633716437165371663716737168371693717037171371723717337174371753717637177371783717937180371813718237183371843718537186371873718837189371903719137192371933719437195371963719737198371993720037201372023720337204372053720637207372083720937210372113721237213372143721537216372173721837219372203722137222372233722437225372263722737228372293723037231372323723337234372353723637237372383723937240372413724237243372443724537246372473724837249372503725137252372533725437255372563725737258372593726037261372623726337264372653726637267372683726937270372713727237273372743727537276372773727837279372803728137282372833728437285372863728737288372893729037291372923729337294372953729637297372983729937300373013730237303373043730537306373073730837309373103731137312373133731437315373163731737318373193732037321373223732337324373253732637327373283732937330373313733237333373343733537336373373733837339373403734137342373433734437345373463734737348373493735037351373523735337354373553735637357373583735937360373613736237363373643736537366373673736837369373703737137372373733737437375373763737737378373793738037381373823738337384373853738637387373883738937390373913739237393373943739537396373973739837399374003740137402374033740437405374063740737408374093741037411374123741337414374153741637417374183741937420374213742237423374243742537426374273742837429374303743137432374333743437435374363743737438374393744037441374423744337444374453744637447374483744937450374513745237453374543745537456374573745837459374603746137462374633746437465374663746737468374693747037471374723747337474374753747637477374783747937480374813748237483374843748537486374873748837489374903749137492374933749437495374963749737498374993750037501375023750337504375053750637507375083750937510375113751237513375143751537516375173751837519375203752137522375233752437525375263752737528375293753037531375323753337534375353753637537375383753937540375413754237543375443754537546375473754837549375503755137552375533755437555375563755737558375593756037561375623756337564375653756637567375683756937570375713757237573375743757537576375773757837579375803758137582375833758437585375863758737588375893759037591375923759337594375953759637597375983759937600376013760237603376043760537606376073760837609376103761137612376133761437615376163761737618376193762037621376223762337624376253762637627376283762937630376313763237633376343763537636376373763837639376403764137642376433764437645376463764737648376493765037651376523765337654376553765637657376583765937660376613766237663376643766537666376673766837669376703767137672376733767437675376763767737678376793768037681376823768337684376853768637687376883768937690376913769237693376943769537696376973769837699377003770137702377033770437705377063770737708377093771037711377123771337714377153771637717377183771937720377213772237723377243772537726377273772837729377303773137732377333773437735377363773737738377393774037741377423774337744377453774637747377483774937750377513775237753377543775537756377573775837759377603776137762377633776437765377663776737768377693777037771377723777337774377753777637777377783777937780377813778237783377843778537786377873778837789377903779137792 } + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ } } - // 377933779437795377963779737798377993780037801378023780337804378053780637807378083780937810378113781237813378143781537816378173781837819378203782137822378233782437825378263782737828378293783037831378323783337834378353783637837378383783937840378413784237843378443784537846378473784837849378503785137852378533785437855378563785737858378593786037861378623786337864378653786637867378683786937870378713787237873378743787537876378773787837879378803788137882378833788437885378863788737888378893789037891378923789337894378953789637897378983789937900379013790237903379043790537906379073790837909379103791137912379133791437915379163791737918379193792037921379223792337924379253792637927379283792937930379313793237933379343793537936379373793837939379403794137942379433794437945379463794737948379493795037951379523795337954379553795637957379583795937960379613796237963379643796537966379673796837969379703797137972379733797437975379763797737978379793798037981379823798337984379853798637987379883798937990379913799237993379943799537996379973799837999380003800138002380033800438005380063800738008380093801038011380123801338014380153801638017380183801938020380213802238023380243802538026380273802838029380303803138032380333803438035380363803738038380393804038041380423804338044380453804638047380483804938050380513805238053380543805538056380573805838059380603806138062380633806438065380663806738068380693807038071380723807338074380753807638077380783807938080380813808238083380843808538086380873808838089380903809138092380933809438095380963809738098380993810038101381023810338104381053810638107381083810938110381113811238113381143811538116381173811838119381203812138122381233812438125381263812738128381293813038131381323813338134381353813638137381383813938140381413814238143381443814538146381473814838149381503815138152381533815438155381563815738158381593816038161381623816338164381653816638167381683816938170381713817238173381743817538176381773817838179381803818138182381833818438185381863818738188381893819038191381923819338194381953819638197381983819938200382013820238203382043820538206382073820838209382103821138212382133821438215382163821738218382193822038221382223822338224382253822638227382283822938230382313823238233382343823538236382373823838239382403824138242382433824438245382463824738248382493825038251382523825338254382553825638257382583825938260382613826238263382643826538266382673826838269382703827138272382733827438275382763827738278382793828038281382823828338284382853828638287382883828938290382913829238293382943829538296382973829838299383003830138302383033830438305383063830738308383093831038311383123831338314383153831638317383183831938320383213832238323383243832538326383273832838329383303833138332383333833438335383363833738338383393834038341383423834338344383453834638347383483834938350383513835238353383543835538356383573835838359383603836138362383633836438365383663836738368383693837038371383723837338374383753837638377383783837938380383813838238383383843838538386383873838838389383903839138392383933839438395383963839738398383993840038401384023840338404384053840638407384083840938410384113841238413384143841538416384173841838419384203842138422384233842438425384263842738428384293843038431384323843338434384353843638437384383843938440384413844238443384443844538446384473844838449384503845138452384533845438455384563845738458384593846038461384623846338464384653846638467384683846938470384713847238473384743847538476384773847838479384803848138482384833848438485384863848738488384893849038491384923849338494384953849638497384983849938500385013850238503385043850538506385073850838509385103851138512385133851438515385163851738518385193852038521385223852338524385253852638527385283852938530385313853238533385343853538536385373853838539385403854138542385433854438545385463854738548385493855038551385523855338554385553855638557385583855938560385613856238563385643856538566385673856838569385703857138572385733857438575385763857738578385793858038581385823858338584385853858638587385883858938590385913859238593385943859538596385973859838599386003860138602386033860438605386063860738608386093861038611386123861338614386153861638617386183861938620386213862238623386243862538626386273862838629386303863138632386333863438635386363863738638386393864038641386423864338644386453864638647386483864938650386513865238653386543865538656386573865838659386603866138662386633866438665386663866738668386693867038671386723867338674386753867638677386783867938680386813868238683386843868538686386873868838689386903869138692386933869438695386963869738698386993870038701387023870338704387053870638707387083870938710387113871238713387143871538716387173871838719387203872138722387233872438725387263872738728387293873038731387323873338734387353873638737387383873938740387413874238743387443874538746387473874838749387503875138752387533875438755387563875738758387593876038761387623876338764387653876638767387683876938770387713877238773387743877538776387773877838779387803878138782387833878438785387863878738788387893879038791387923879338794387953879638797387983879938800388013880238803388043880538806388073880838809388103881138812388133881438815388163881738818388193882038821388223882338824388253882638827388283882938830388313883238833388343883538836388373883838839388403884138842388433884438845388463884738848388493885038851388523885338854388553885638857388583885938860388613886238863388643886538866388673886838869388703887138872388733887438875388763887738878388793888038881388823888338884388853888638887388883888938890388913889238893388943889538896388973889838899389003890138902389033890438905389063890738908389093891038911389123891338914389153891638917389183891938920389213892238923389243892538926389273892838929389303893138932389333893438935389363893738938389393894038941389423894338944389453894638947389483894938950389513895238953389543895538956389573895838959389603896138962389633896438965389663896738968389693897038971389723897338974389753897638977389783897938980389813898238983389843898538986389873898838989389903899138992389933899438995389963899738998389993900039001390023900339004390053900639007390083900939010390113901239013390143901539016390173901839019390203902139022390233902439025390263902739028390293903039031390323903339034390353903639037390383903939040390413904239043390443904539046390473904839049390503905139052390533905439055390563905739058390593906039061390623906339064390653906639067390683906939070390713907239073390743907539076390773907839079390803908139082390833908439085390863908739088390893909039091390923909339094390953909639097390983909939100391013910239103391043910539106391073910839109391103911139112391133911439115391163911739118391193912039121391223912339124391253912639127391283912939130391313913239133391343913539136391373913839139391403914139142391433914439145391463914739148391493915039151391523915339154391553915639157391583915939160391613916239163391643916539166391673916839169391703917139172391733917439175391763917739178391793918039181391823918339184391853918639187391883918939190391913919239193391943919539196391973919839199392003920139202392033920439205392063920739208392093921039211392123921339214392153921639217392183921939220392213922239223392243922539226392273922839229392303923139232392333923439235392363923739238392393924039241392423924339244392453924639247392483924939250392513925239253392543925539256392573925839259392603926139262392633926439265392663926739268392693927039271392723927339274392753927639277392783927939280392813928239283392843928539286392873928839289392903929139292392933929439295392963929739298392993930039301393023930339304393053930639307393083930939310393113931239313393143931539316393173931839319393203932139322393233932439325393263932739328393293933039331393323933339334393353933639337393383933939340393413934239343393443934539346393473934839349393503935139352393533935439355393563935739358393593936039361393623936339364393653936639367393683936939370393713937239373393743937539376393773937839379393803938139382393833938439385393863938739388393893939039391393923939339394393953939639397393983939939400394013940239403394043940539406394073940839409394103941139412394133941439415394163941739418394193942039421394223942339424394253942639427394283942939430394313943239433394343943539436394373943839439394403944139442394433944439445394463944739448394493945039451394523945339454394553945639457394583945939460394613946239463394643946539466394673946839469394703947139472394733947439475394763947739478394793948039481394823948339484394853948639487394883948939490394913949239493394943949539496394973949839499395003950139502395033950439505395063950739508395093951039511395123951339514395153951639517395183951939520395213952239523395243952539526395273952839529395303953139532395333953439535395363953739538395393954039541395423954339544395453954639547395483954939550395513955239553395543955539556395573955839559395603956139562395633956439565395663956739568395693957039571395723957339574395753957639577395783957939580395813958239583395843958539586395873958839589395903959139592395933959439595395963959739598395993960039601396023960339604396053960639607396083960939610396113961239613396143961539616396173961839619396203962139622396233962439625396263962739628396293963039631396323963339634396353963639637396383963939640396413964239643396443964539646396473964839649 // TODO: Implement FPGA module emission - 63239650 self.emit_line("// if (self.options.include_toplevel) {"); - 63339651 self.emit(" self.emit_fpga_top();"); - 63439652 self.emit(" }"); - 63539653 self.emit_line(""); + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ // TODO: Implement FPGA module emission + self.emit_line("// if (self.options.include_toplevel) {"); + self.emit(" self.emit_fpga_top();"); + self.emit(" }"); + self.emit_line(""); if (self.ast.test_section) |test_section| { - self.emit_line("// 396543965539656396573965839659396603966139662396633966439665396663966739668396693967039671396723967339674396753967639677396783967939680396813968239683396843968539686396873968839689396903969139692396933969439695396963969739698396993970039701397023970339704397053970639707397083970939710397113971239713397143971539716"); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Test Tasks"); - self.emit_line("// 397173971839719397203972139722397233972439725397263972739728397293973039731397323973339734397353973639737397383973939740397413974239743397443974539746397473974839749397503975139752397533975439755397563975739758397593976039761397623976339764397653976639767397683976939770397713977239773397743977539776397773977839779"); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); for (test_section.test_cases) |test_case| { diff --git a/apps/website/public/t27/files/compiler/codegen/verilog/fpga_emission.t27 b/apps/website/public/t27/files/compiler/codegen/verilog/fpga_emission.t27 index 97446917f4..e06a4f5a71 100644 --- a/apps/website/public/t27/files/compiler/codegen/verilog/fpga_emission.t27 +++ b/apps/website/public/t27/files/compiler/codegen/verilog/fpga_emission.t27 @@ -1,4 +1,4 @@ -// fpga_emission.t27 0 FPGA Module Verilog Emission +// fpga_emission.t27 — FPGA Module Verilog Emission // Generates FPGA-specific Verilog modules from .t27 specs module fpga_emission { @@ -26,7 +26,7 @@ module fpga_emission { // 1. Top-Level FPGA Module Emission - // emit_fpga_top() 307 void + // emit_fpga_top() → void // Generate top-level FPGA module that combines MAC, UART, SPI fn emit_fpga_top(self: *FpgaCodegen) void { self.emit_line("// Trinity FPGA Top-Level Module"); @@ -144,7 +144,7 @@ module fpga_emission { self.emit_line(""); // MAC output mapping - self.emit_line("// MAC output signals 308 OR-reduce ready flags for valid"); + self.emit_line("// MAC output signals — OR-reduce ready flags for valid"); self.emit_line("assign mac_acc_out = mac_result[0];"); self.emit_line("assign mac_valid_out = &mac_ready[7:0];"); self.emit_line(""); @@ -155,7 +155,7 @@ module fpga_emission { // 2. UART Module Emission - // emit_uart_module() 473 void + // emit_uart_module() → void // Generate UART RX/TX module from spec fn emit_uart_module(self: *FpgaCodegen) void { self.emit_line("// UART Bridge Module"); @@ -379,7 +379,7 @@ module fpga_emission { // 3. SPI Module Emission - // emit_spi_module() 650 void + // emit_spi_module() → void // Generate SPI master module from spec (Mode 0) fn emit_spi_module(self: *FpgaCodegen) void { self.emit_line("// SPI Master Module"); @@ -578,7 +578,7 @@ module fpga_emission { // 4. MAC Module Emission - // emit_mac_module() 829 void + // emit_mac_module() → void // Generate ZeroDSP MAC module from spec fn emit_mac_module(self: *FpgaCodegen) void { self.emit_line("// ZeroDSP MAC Module"); @@ -704,13 +704,13 @@ module fpga_emission { // 5. Helper Functions - // emit(s: []const u8) 998 void + // emit(s: []const u8) → void // Append string to output fn emit(self: *FpgaCodegen, s: []const u8) void { self.output.append(s); } - // emit_line(s: []const u8) 999 void + // emit_line(s: []const u8) → void // Append string with newline fn emit_line(self: *FpgaCodegen, s: []const u8) void { self.output.append(s); @@ -722,19 +722,19 @@ module fpga_emission { } } - // emit_int(n: anytype) 1000 void + // emit_int(n: anytype) → void // Emit integer value fn emit_int(self: *FpgaCodegen, n: anytype) void { self.emit(int_to_str(n)); } - // indent() 1001 void + // indent() → void // Increase indent level fn indent(self: *FpgaCodegen) void { self.indent_level += 1; } - // dedent() 1002 void + // dedent() → void // Decrease indent level fn dedent(self: *FpgaCodegen) void { if (self.indent_level > 0) { @@ -742,9 +742,9 @@ module fpga_emission { } } - // int_to_str(n: anytype) 1003 []const u8 + // int_to_str(n: anytype) → []const u8 // Convert small non-negative integer to decimal string - // Supports range 0..9999 1004 sufficient for pin/port/module IDs + // Supports range 0..9999 — sufficient for pin/port/module IDs fn int_to_str(n: anytype) []const u8 { if (n == 0) { return "0"; diff --git a/apps/website/public/t27/files/compiler/codegen/zig/codegen.t27 b/apps/website/public/t27/files/compiler/codegen/zig/codegen.t27 index 2e3b0a643d..05a94e58fb 100644 --- a/apps/website/public/t27/files/compiler/codegen/zig/codegen.t27 +++ b/apps/website/public/t27/files/compiler/codegen/zig/codegen.t27 @@ -1,4 +1,4 @@ -// codegen.t27 -- Code Generator for Zig +// codegen.t27 — Code Generator for Zig // Generates Zig 0.15 code from t27 AST module zig_codegen { @@ -68,7 +68,7 @@ module zig_codegen { self.emit("// Generated by t27 compiler from "); self.emit(self.ast.source_file); self.emit_line(""); - self.emit_line("// DO NOT EDIT -- source of truth is .t27 file"); + self.emit_line("// DO NOT EDIT — source of truth is .t27 file"); self.emit_line(""); self.emit_line("const std = @import(\"std\");"); self.emit_line(""); @@ -502,9 +502,9 @@ module zig_codegen { fn emit_test_section(self: *ZigCodegen) void { if (self.ast.test_section) |test_section| { self.emit_line(""); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Test Cases"); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); for (test_section.test_cases) |test_case| { @@ -567,9 +567,9 @@ module zig_codegen { fn emit_invariant_section(self: *ZigCodegen) void { if (self.ast.invariant_section) |inv_section| { self.emit_line(""); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Invariants"); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); for (inv_section.invariants) |inv| { @@ -622,9 +622,9 @@ module zig_codegen { fn emit_bench_section(self: *ZigCodegen) void { if (self.ast.bench_section) |bench_section| { self.emit_line(""); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line("// TDD-Inside-Spec: Benchmarks"); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); for (bench_section.benchmarks) |benchmark| { @@ -691,11 +691,11 @@ module zig_codegen { fn emit_spec_tests(self: *ZigCodegen) void { if (self.ast.spec_decl) |spec| { self.emit_line(""); - self.emit("// ==============================================================="); + self.emit("// ═══════════════════════════════════════════════════════════════"); self.emit("// TDD-Inside-Spec: Spec Tests (from spec "); self.emit(spec.name); self.emit(")"); - self.emit_line("// ==============================================================="); + self.emit_line("// ═══════════════════════════════════════════════════════════════"); self.emit_line(""); // Emit test blocks @@ -1203,9 +1203,9 @@ module zig_codegen { } } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Zig Codegen -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test zig_codegen_new_creates_generator // Verify: ZigCodegen.new creates a generator with AST and options diff --git a/apps/website/public/t27/files/compiler/codegen/zig/runtime.t27 b/apps/website/public/t27/files/compiler/codegen/zig/runtime.t27 index 1c7696adde..a72f7811f1 100644 --- a/apps/website/public/t27/files/compiler/codegen/zig/runtime.t27 +++ b/apps/website/public/t27/files/compiler/codegen/zig/runtime.t27 @@ -1,14 +1,14 @@ -// runtime.t27 -- Zig Runtime Code Generation +// runtime.t27 — Zig Runtime Code Generation // Generates Zig backend from compiler/runtime/*.t27 specifications -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module zig_runtime { using commands: @import("compiler/runtime/commands.t27"); using validation: @import("compiler/runtime/validation.t27"); - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Zig Runtime Generation - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Generate main.zig entry point pub fn generate_main() []const u8 { @@ -293,9 +293,9 @@ module zig_runtime { return generate_validation_module(); } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Code generation entry point - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Generate all Zig runtime files pub fn generate_runtime_zig() i32 { @@ -315,9 +315,9 @@ module zig_runtime { } } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Runtime Code Generation -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test generate_main_contains_header const main_zig = zig_runtime.generate_main(); diff --git a/apps/website/public/t27/files/compiler/parser/lexer.t27 b/apps/website/public/t27/files/compiler/parser/lexer.t27 index 2e5304127f..752fed9f16 100644 --- a/apps/website/public/t27/files/compiler/parser/lexer.t27 +++ b/apps/website/public/t27/files/compiler/parser/lexer.t27 @@ -1,6 +1,6 @@ -; compiler/parser/lexer.t27 -- Lexer for TRI-27 Assembly +; compiler/parser/lexer.t27 — Lexer for TRI-27 Assembly ; Tokenizes source code into Token stream for parser -; phi^2 + 1/phi^2 = 3 | TRINITY +; φ² + 1/φ² = 3 | TRINITY module trilexer; @@ -65,7 +65,7 @@ pub const TokenType = enum(u8) { when = 43, then = 44, assert = 45, - and_kw = 46, + and = 46, expect = 47, // Literals and identifiers @@ -465,7 +465,7 @@ pub const Lexer = struct { if (std.mem.eql(u8, ident, "when")) return .when; if (std.mem.eql(u8, ident, "then")) return .then; if (std.mem.eql(u8, ident, "assert")) return .assert; - if (std.mem.eql(u8, ident, "and")) return .and_kw; + if (std.mem.eql(u8, ident, "and")) return .and; if (std.mem.eql(u8, ident, "expect")) return .expect; if (std.mem.eql(u8, ident, "mov")) return .mov; if (std.mem.eql(u8, ident, "jz")) return .jz; diff --git a/apps/website/public/t27/files/compiler/parser/parser.t27 b/apps/website/public/t27/files/compiler/parser/parser.t27 index 35487f4796..b9b36a733f 100644 --- a/apps/website/public/t27/files/compiler/parser/parser.t27 +++ b/apps/website/public/t27/files/compiler/parser/parser.t27 @@ -1,6 +1,6 @@ -// parser.t27 -- Parser for TRI-27 Assembly +// parser.t27 — Parser for TRI-27 Assembly // Builds AST from tokens produced by lexer -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module parser { using lexer: @import("lexer.t27"); @@ -554,9 +554,9 @@ module parser { return null; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: High-level TDD parsing (spec-style) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Parse spec declaration pub fn Parser.parse_spec_decl() SpecDecl { @@ -780,9 +780,9 @@ module parser { } } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Assembly-style TDD parsing (.test, .invariant, .bench) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Parse test section (assembly-style) // Format: .test followed by comment-style test definitions @@ -1035,9 +1035,9 @@ module parser { }; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Language Policy: No Cyrillic in Source Files (SOUL.md Law #1) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Validate source file contains no Cyrillic characters pub fn Parser.validate_no_cyrillic(source: []const u8, source_file: []const u8) bool { @@ -1047,7 +1047,7 @@ module parser { return true; } - // Scan for Cyrillic characters (U+0400-U+04FF) + // Scan for Cyrillic characters (U+0400–U+04FF) for (source, 0..) |c, i| { // Check for Cyrillic range // U+0400 (1040) to U+04FF (1279) @@ -1055,7 +1055,7 @@ module parser { if (i + 1 < source.len) { const next_c = source[i + 1]; const codepoint = (@as(u32, c) << 8) | @as(u32, next_c); - // Cyrillic block: U+0400-U+04FF + // Cyrillic block: U+0400–U+04FF if (codepoint >= 0x0400 and codepoint <= 0x04FF) { self.context.add_error( "Language policy violation: source file contains Cyrillic characters (U+0400-U+04FF). Source files (.t27, .tri, .zig, .c, .v) must be ASCII-only. See SOUL.md Law #1.", @@ -1095,9 +1095,9 @@ module parser { return column; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Alternative section parsing implementations - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Parse field description after field keyword (e.g., "Verify: description text") pub fn Parser.parse_field_description() []const u8 { diff --git a/apps/website/public/t27/files/compiler/runtime/commands.t27 b/apps/website/public/t27/files/compiler/runtime/commands.t27 index 1936924616..5d6bf55070 100644 --- a/apps/website/public/t27/files/compiler/runtime/commands.t27 +++ b/apps/website/public/t27/files/compiler/runtime/commands.t27 @@ -1,11 +1,11 @@ -// commands.t27 -- CLI Command Specifications +// commands.t27 — CLI Command Specifications // Individual command specifications for tri CLI -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module commands { - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Command Enum - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const Command = enum(u8) { SpecCommand, // spec create, validate, list @@ -17,9 +17,9 @@ module commands { HelpCommand, // help }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Command: tri spec - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // tri spec create [--kind feature|bugfix|hotfix|recovery] pub fn spec_create(name: []const u8, kind: []const u8) i32 { @@ -153,9 +153,9 @@ module commands { return 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Command: tri gen - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // tri gen [--backend zig|c|verilog] [--emit-conformance] pub fn gen_spec(spec_path: []const u8, backend: []const u8, emit_conformance: bool) i32 { @@ -236,9 +236,9 @@ module commands { return if (failed > 0) 1 else 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Command: tri compile-project - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // tri compile-project --output [--backend zig|c|verilog] // Generates ALL specs into a coherent project with working inter-file imports. @@ -327,9 +327,9 @@ module commands { return if (failed > 0) 1 else 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Command: tri lint - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // tri lint [file] [--strict] pub fn lint_file(file_path: []const u8, strict: bool) i32 { @@ -382,9 +382,9 @@ module commands { return 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Command: tri skill - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // tri skill begin --issue [--kind feature|bugfix|hotfix|recovery] pub fn skill_begin(issue_id: []const u8, kind: []const u8) i32 { @@ -528,9 +528,9 @@ module commands { return 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Command: tri help - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // tri help [command] pub fn help(command: []const u8) i32 { @@ -618,18 +618,18 @@ module commands { return 0; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Helper functions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ fn generate_spec_template(name: []const u8, kind: []const u8) []const u8 { - return "// " ++ name ++ ".t27 -- " ++ kind ++ " specification\n" ++ + return "// " ++ name ++ ".t27 — " ++ kind ++ " specification\n" ++ "// Generated by: tri spec create\n" ++ - "// phi^2 + 1/phi^2 = 3 | TRINITY\n" ++ + "// φ² + 1/φ² = 3 | TRINITY\n" ++ "\n" ++ - "// =====================================================================\n" ++ + "// ═════════════════════════════════════════════════════════════════════\n" ++ "// TDD-Inside-Spec: This spec MUST contain at least one test or invariant\n" ++ - "// =====================================================================\n" ++ + "// ═════════════════════════════════════════════════════════════════════\n" ++ "\n" ++ "test my_test\n" ++ " // Verify: functionality works correctly\n" ++ @@ -702,9 +702,9 @@ module commands { return sha256(data); } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Type definitions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const Spec = struct { path: []const u8, @@ -759,9 +759,9 @@ module commands { tests: []TestBlock, }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Module Map for compile-project - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const ModuleMapEntry = struct { key: []const u8, // e.g. "base::types" @@ -798,7 +798,7 @@ module commands { }; fn path_to_module_key(rel_path: []const u8) []const u8 { - // Convert "base/types.t27" -> "base::types" + // Convert "base/types.t27" → "base::types" var result = replace(rel_path, ".t27", ""); result = replace(result, "/", "::"); return result; @@ -822,9 +822,9 @@ module commands { } } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Commands -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test spec_create_returns_zero_on_success const result = commands.spec_create("test_spec", "feature"); diff --git a/apps/website/public/t27/files/compiler/runtime/runtime.t27 b/apps/website/public/t27/files/compiler/runtime/runtime.t27 index 53dc9596d5..e12859d5cd 100644 --- a/apps/website/public/t27/files/compiler/runtime/runtime.t27 +++ b/apps/website/public/t27/files/compiler/runtime/runtime.t27 @@ -1,6 +1,6 @@ -// compiler/runtime/runtime.t27 -- T27 Runtime Specification +// compiler/runtime/runtime.t27 — T27 Runtime Specification // Runtime environment for executing t27 programs -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module triruntime { using base_types: @import("../../specs/base/types.t27"); @@ -208,9 +208,9 @@ module triruntime { } } -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Runtime -// ======================================================================================================= +// ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test test_bootstrap_init_sequence // Verify: runtime_init initializes all components in correct order diff --git a/apps/website/public/t27/files/compiler/runtime/validation.t27 b/apps/website/public/t27/files/compiler/runtime/validation.t27 index 082be11211..d0baeb8bc0 100644 --- a/apps/website/public/t27/files/compiler/runtime/validation.t27 +++ b/apps/website/public/t27/files/compiler/runtime/validation.t27 @@ -1,11 +1,11 @@ -// validation.t27 -- Validation Rules and Invariants +// validation.t27 — Validation Rules and Invariants // TDD and language policy validation for t27 specs -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module validation_rules { - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Validation Result Structure - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const ValidationResult = struct { valid: bool, @@ -13,9 +13,9 @@ module validation_rules { hint: []const u8, }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Validation Rules - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Rule: TDD-Inside-Spec - Specs must have tests or invariants pub fn validate_tdd_contract(spec: Spec) ValidationResult { @@ -66,7 +66,7 @@ module validation_rules { return ValidationResult{ .valid = true, .error = "", .hint = "" }; } - // Check for Cyrillic characters (U+0400-U+04FF) + // Check for Cyrillic characters (U+0400–U+04FF) if (contains_cyrillic(spec.content)) { return ValidationResult{ .valid = false, @@ -234,11 +234,11 @@ module validation_rules { return ValidationResult{ .valid = true, .error = "", .hint = "" }; } - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Helper functions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ - // Check for Cyrillic characters (U+0400-U+04FF) + // Check for Cyrillic characters (U+0400–U+04FF) pub fn contains_cyrillic(text: []const u8) bool { var i: usize = 0; while (i < text.len) : (i += 1) { @@ -247,7 +247,7 @@ module validation_rules { if (c == 0xD0) { if (i + 1 < text.len) { const next_c = text[i + 1]; - // Cyrillic block: U+0400-U+04FF + // Cyrillic block: U+0400–U+04FF if (next_c >= 0x80 and next_c <= 0xBF) { return true; } @@ -283,9 +283,9 @@ module validation_rules { } } -// =========================================================================================== +// ═══════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Validation Rules -// =========================================================================================== +// ═══════════════════════════════════════════════════════════════════════════════════════════ test validate_tdd_contract_passes_with_tests const spec_with_tests = Spec{ .test_blocks = &[_]TestBlock{{.statements = &[_]u8{}}} }; diff --git a/apps/website/public/t27/files/compiler/skill/registry.t27 b/apps/website/public/t27/files/compiler/skill/registry.t27 index 8fe00cd831..bb5856d40b 100644 --- a/apps/website/public/t27/files/compiler/skill/registry.t27 +++ b/apps/website/public/t27/files/compiler/skill/registry.t27 @@ -1,11 +1,11 @@ -// registry.t27 -- Skill Registry JSON Structure (ADR-002) +// registry.t27 — Skill Registry JSON Structure (ADR-002) // Defines the structure for tri skill workflow registry -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module skill_registry { - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Skill Registry Structure - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ pub const RegistryPath: []const u8 = ".trinity/skills/registry.json"; @@ -68,9 +68,9 @@ module skill_registry { skills: []Skill, }; - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Policy Matrix (for git push validation) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Recovery skill requirements: // - Minimum 3 checkpoints @@ -88,9 +88,9 @@ module skill_registry { // - Spec has at least one test/invariant // - Verdict must be NOT TOXIC - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Registry JSON Schema - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ /* { @@ -161,9 +161,9 @@ module skill_registry { } */ - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Helper Functions - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Create empty skill registry pub fn create_registry() SkillRegistry { @@ -215,9 +215,9 @@ module skill_registry { } } -// =========================================================================================== +// ═══════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Skill Registry -// =========================================================================================== +// ═══════════════════════════════════════════════════════════════════════════════════════════ test skill_status_active_value const status = skill_registry.SkillStatus.Active; diff --git a/apps/website/public/t27/files/contrib/backend/zig/legacy/main_zig_handwritten.t27 b/apps/website/public/t27/files/contrib/backend/zig/legacy/main_zig_handwritten.t27 index cb6f18e0f2..19417e89e5 100644 --- a/apps/website/public/t27/files/contrib/backend/zig/legacy/main_zig_handwritten.t27 +++ b/apps/website/public/t27/files/contrib/backend/zig/legacy/main_zig_handwritten.t27 @@ -1,11 +1,11 @@ -// tri.zig -- Trinity T27 CLI Runtime +// tri.zig a Trinity T27 CLI Runtime // phi^2 + 1/phi^2 = 3 | TRINITY const std = @import("std"); -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // AST Types (simplified for CLI runtime) -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa const AST = struct { const Program = struct { @@ -72,9 +72,9 @@ const AST = struct { }; }; -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Parse Context -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa const ParseContext = struct { ast_root: AST.Program, @@ -87,9 +87,9 @@ const ParseContext = struct { }; }; -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // CLI Entry Point -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -125,9 +125,9 @@ pub fn main() !void { } } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Command Handlers -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn runSpecCommand(allocator: std.mem.Allocator, args: []const []const u8) !void { if (args.len == 0) { @@ -205,9 +205,9 @@ fn runLintCommand(allocator: std.mem.Allocator, args: []const []const u8) !void } } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Spec Commands -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn specCreate(allocator: std.mem.Allocator, name: []const u8, path: []const u8) !void { // Validate spec name @@ -332,14 +332,14 @@ fn specList(allocator: std.mem.Allocator) !void { const has_tests = std.mem.indexOf(u8, content, ".test") != null or std.mem.indexOf(u8, content, "test ") != null; - const status = if (has_tests) "ok" else "x"; + const status = if (has_tests) "a" else "a"; try std.io.getStdOut().writer().print(" {s} {s}\n", .{ status, rel_path }); } } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Gen Commands -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa const GenOptions = struct { backend: []const u8 = "zig", @@ -507,9 +507,9 @@ fn genAll(allocator: std.mem.Allocator, options: GenOptions) !void { } } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Git Commands -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn gitCommit(allocator: std.mem.Allocator, args: []const []const u8) !void { _ = allocator; @@ -588,9 +588,9 @@ fn gitStatusWithCell(allocator: std.mem.Allocator) !void { } } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Lint Commands -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn lintFile(allocator: std.mem.Allocator, file_path: []const u8) !void { if (!fileExists(file_path)) { @@ -605,10 +605,10 @@ fn lintFile(allocator: std.mem.Allocator, file_path: []const u8) !void { // Check 1: Language policy (no Cyrillic) if (!validateNoCyrillic(content, file_path)) { - try printError("x Language policy: contains Cyrillic\n", .{}); + try printError("a Language policy: contains Cyrillic\n", .{}); errors += 1; } else { - std.debug.print("ok Language policy: ASCII-only\n", .{}); + std.debug.print("a Language policy: ASCII-only\n", .{}); } // Check 2: TDD compliance (if .t27 file) @@ -616,24 +616,24 @@ fn lintFile(allocator: std.mem.Allocator, file_path: []const u8) !void { const context = parseSimple(content, file_path); if (context.errors.len > 0) { - try printError("x Parse errors: {d}\n", .{context.errors.len}); + try printError("a Parse errors: {d}\n", .{context.errors.len}); errors += context.errors.len; } else { - std.debug.print("ok Parse: OK\n", .{}); + std.debug.print("a Parse: OK\n", .{}); } if (!hasTestsOrInvariants(&context.ast_root)) { - try printError("x TDD contract: no tests or invariants\n", .{}); + try printError("a TDD contract: no tests or invariants\n", .{}); errors += 1; } else { - std.debug.print("ok TDD contract: has tests/invariants\n", .{}); + std.debug.print("a TDD contract: has tests/invariants\n", .{}); } } if (errors == 0) { - std.debug.print("\nok {s} is compliant\n", .{file_path}); + std.debug.print("\na {s} is compliant\n", .{file_path}); } else { - std.debug.print("\nx {s} has {d} violation(s)\n", .{ file_path, errors }); + std.debug.print("\na {s} has {d} violation(s)\n", .{ file_path, errors }); return error.LintFailed; } } @@ -661,16 +661,16 @@ fn lintAll(allocator: std.mem.Allocator) !void { } if (errors == 0) { - std.debug.print("\nok All files are compliant\n", .{}); + std.debug.print("\na All files are compliant\n", .{}); } else { - try std.io.getStdErr().writer().print("\nx {d} file(s) have violations\n", .{errors}); + try std.io.getStdErr().writer().print("\na {d} file(s) have violations\n", .{errors}); return error.LintFailed; } } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Helper Functions -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn printUsage() !void { try std.io.getStdOut().writeAll( @@ -754,7 +754,7 @@ fn isValidSpecName(name: []const u8) bool { fn generateSpecTemplate(allocator: std.mem.Allocator, name: []const u8) ![]const u8 { return std.fmt.allocPrint(allocator, - \\; {s}.t27 -- Specification for {s} + \\; {s}.t27 a Specification for {s} \\; phi^2 + 1/phi^2 = 3 | TRINITY \\ \\; This file is the source of truth for {s}. @@ -764,32 +764,32 @@ fn generateSpecTemplate(allocator: std.mem.Allocator, name: []const u8) ![]const \\ \\use base::types \\ - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\; Constants - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\ \\; Example constant \\const EXAMPLE_CONSTANT = 42 \\ - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\; Data Section - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\ \\.data \\ .const DATA_INIT 0 \\ - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\; Code Section - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\ \\.code \\main: \\ ; Your code here \\ HALT \\ - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\; TDD-Inside-Spec: Tests and Invariants - \\; =============================================================== + \\; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \\ \\.test \\ ; example_test @@ -816,7 +816,7 @@ fn validateNoCyrillic(content: []const u8, file_path: []const u8) bool { return true; } - // Scan for Cyrillic characters (U+0400-U+04FF) + // Scan for Cyrillic characters (U+0400aU+04FF) var i: usize = 0; while (i < content.len) : (i += 1) { const c = content[i]; @@ -826,7 +826,7 @@ fn validateNoCyrillic(content: []const u8, file_path: []const u8) bool { if (i + 1 < content.len) { const next_c = content[i + 1]; const codepoint = (@as(u16, c) << 8) | next_c; - // Cyrillic block: U+0400-U+04FF + // Cyrillic block: U+0400aU+04FF if (codepoint >= 0x0400 and codepoint <= 0x04FF) { return false; } @@ -895,9 +895,9 @@ fn printSummary(ast_root: *const AST.Program) !void { try std.io.getStdOut().writeByte('\n'); } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Simple Parser (placeholder - would use real parser.t27) -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn parseSimple(content: []const u8, file_path: []const u8) ParseContext { _ = file_path; @@ -964,9 +964,9 @@ fn parseSimple(content: []const u8, file_path: []const u8) ParseContext { }; } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Code Generation Helpers -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn generateImplementation(allocator: std.mem.Allocator, spec_path: []const u8, ast_root: *const AST.Program, options: GenOptions) ![]const u8 { _ = spec_path; @@ -1040,9 +1040,9 @@ fn generateConformance(allocator: std.mem.Allocator, ast_root: *const AST.Progra return output.toOwnedSlice(); } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // Git Helpers -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn runGitDirect(argv: []const []const u8) !void { const result = std.process.Child.exec(.{ @@ -1063,9 +1063,9 @@ fn runGitDirect(argv: []const []const u8) !void { } } -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // File System Helpers -// ===================================================================== +// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fn globSpecs(allocator: std.mem.Allocator) !std.ArrayList([]const u8) { var spec_files = std.ArrayList([]const u8).init(allocator); diff --git a/apps/website/public/t27/files/examples/fpga/qmtech_minimal/design.t27 b/apps/website/public/t27/files/examples/fpga/qmtech_minimal/design.t27 index c886d7f042..e3cc74afc3 100644 --- a/apps/website/public/t27/files/examples/fpga/qmtech_minimal/design.t27 +++ b/apps/website/public/t27/files/examples/fpga/qmtech_minimal/design.t27 @@ -147,4 +147,4 @@ documentation: { final_bitstream: "build/fpga/bitstream.bit" } -# phi^2 + 1/phi^2 = 3 | TRINITY \ No newline at end of file +# IA^2 + 1/IA^2 = 3 | TRINITY \ No newline at end of file diff --git a/apps/website/public/t27/files/specs/account/auth.t27 b/apps/website/public/t27/files/specs/account/auth.t27 index 5b1822783f..1ce25222fa 100644 --- a/apps/website/public/t27/files/specs/account/auth.t27 +++ b/apps/website/public/t27/files/specs/account/auth.t27 @@ -1,14 +1,14 @@ // specs/account/auth.t27 // Account Authentication Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module AccountAuth { use base::types; use account::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Authentication Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // token retrieves a fresh access token for an account // Refreshes the token if needed @@ -36,23 +36,17 @@ module AccountAuth { // Implementation: Clear tokens for the account } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Organization Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // orgs returns organizations for an account fn orgs(account_id: AccountID) -> Result<[Org], AccountError> { // Implementation: Fetch orgs from API using access token } - // AccountOrgs pairs one account with the organizations it belongs to - struct AccountOrgs { - account: Info, - orgs: [Org], - } - // orgs_by_account returns all accounts with their orgs - fn orgs_by_account() -> Result<[AccountOrgs], AccountError> { + fn orgs_by_account() -> Result<[(account: Info, orgs: [Org])], AccountError> { // Implementation: Fetch all accounts and their orgs } @@ -61,9 +55,9 @@ module AccountAuth { // Implementation: Fetch config from API } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // User Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // UserInfo represents user information from API struct UserInfo { @@ -76,9 +70,9 @@ module AccountAuth { // Implementation: Fetch user info from API } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Token Management - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // TokenRefreshRequest is the request body for token refresh struct TokenRefreshRequest { @@ -123,9 +117,9 @@ module AccountAuth { error_description: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Poll Response Handling - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // parse_poll_result converts a device token response to PollResult fn parse_poll_result(response: DeviceTokenErrorResponse) -> PollResult { @@ -144,9 +138,9 @@ module AccountAuth { return PollResult::Error; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "user_info_creation" { var user = UserInfo { diff --git a/apps/website/public/t27/files/specs/account/repo.t27 b/apps/website/public/t27/files/specs/account/repo.t27 index 6a85e0da77..4aac61a3a6 100644 --- a/apps/website/public/t27/files/specs/account/repo.t27 +++ b/apps/website/public/t27/files/specs/account/repo.t27 @@ -1,13 +1,13 @@ // specs/account/repo.t27 // Account Repository Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module AccountRepo { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Type Definitions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct AccountID(str); struct OrgID(str); @@ -26,9 +26,9 @@ module AccountRepo { Service = 1, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Input Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct PersistTokenInput { account_id: AccountID, @@ -62,15 +62,15 @@ module AccountRepo { active_org_id: OrgID?, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const ACCOUNT_STATE_ID: u32 = 1; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Repository Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn active() -> Result { } @@ -102,9 +102,9 @@ module AccountRepo { fn clear_active() -> Result { } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "account_row_creation" { var row = AccountRow { diff --git a/apps/website/public/t27/files/specs/account/schema.t27 b/apps/website/public/t27/files/specs/account/schema.t27 index ac46900dd0..de534a635e 100644 --- a/apps/website/public/t27/files/specs/account/schema.t27 +++ b/apps/website/public/t27/files/specs/account/schema.t27 @@ -1,13 +1,13 @@ // specs/account/schema.t27 // Account Types Specification -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module Account { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Account Identifiers - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // AccountID uniquely identifies an account struct AccountID(str); @@ -27,9 +27,9 @@ module Account { // UserCode represents a user verification code struct UserCode(str); - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Account Info Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Info represents account information struct Info { @@ -55,9 +55,9 @@ module Account { interval: u64, // milliseconds } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Poll Result Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // PollResult represents the result of polling for device auth enum PollResult { @@ -91,9 +91,9 @@ module Account { cause: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Error Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // AccountRepoError represents a repository error struct AccountRepoError { @@ -113,17 +113,17 @@ module Account { Service = 1, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const CLIENT_ID: str = "opencode-cli"; const EAGER_REFRESH_THRESHOLD_MINUTES: u32 = 5; const DEFAULT_POLL_INTERVAL_MS: u64 = 5000; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Helper Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // is_token_fresh checks if a token is fresh (not near expiry) fn is_token_fresh(token_expiry: u64?, now: u64) -> bool { @@ -135,9 +135,9 @@ module Account { return token_expiry > (now + threshold_ms); } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "account_id_creation" { var id = AccountID("user-123"); diff --git a/apps/website/public/t27/files/specs/api/c_abi.t27 b/apps/website/public/t27/files/specs/api/c_abi.t27 new file mode 100644 index 0000000000..2ea785b5b0 --- /dev/null +++ b/apps/website/public/t27/files/specs/api/c_abi.t27 @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/api/c_abi.t27 -- the C ABI of libtrinity-vsa as gHashTag/trinity src/c_api.zig exports it +; S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's host boundary is one file, +; src/c_api.zig at 976df517, built as the static and shared libraries trinity-vsa and described +; by a hand-written header. This file states the twenty-two exported functions with their C +; prototypes, who owns what crosses the boundary, what each returns on a NULL handle, the error +; channel (there is none) and the layout that is and is not ABI-stable; the scalar rules are +; functions the C backend executes. tools/trinity_c_abi.py holds this table to the header and to +; the export lines of the source, and checks the fixture conformance/trinity/abi/abi_fixture.c +; against the header. specs/api/c_api_contract.t27 is the prose contract of the same boundary +; and is cited, not copied. Nothing here claims the library links: at the pin the source does not +; parse (FINDINGS), so no fixture has crossed the boundary. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module TrinityCAbi; + +pub const KIND : str = "host-abi"; +pub const ID : str = "api/c_abi"; +pub const NAME : str = "The C ABI of the pinned Trinity VSA library"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const OWNER_MODULE : str = "src/c_api.zig"; +pub const HEADER : str = "src/libs/c/libtrinityvsa/include/trinity_vsa.h"; +pub const HEADER_KIND : str = "hand-written, 259 lines, guard TRINITY_VSA_H, extern C, typedef void* trinity_vsa_vector_t"; +pub const HEADER_INSTALL_PATH : str = "libs/c/libtrinityvsa/include/trinity_vsa.h (build.zig:171-174); the file is under src/, so the libvsa step installs a path that does not exist"; +pub const LIBRARY_NAMES : [2]str = ["trinity-vsa", "trinity-vsa-static"]; +pub const BUILD_TARGETS : [5]str = ["lib:trinity-vsa", "lib:trinity-vsa-static", "test:src/c_api.zig", "step:libvsa", "step:release-libvsa"]; +pub const PROSE_CONTRACT : str = "specs/api/c_api_contract.t27"; +pub const VERSION_STRING : str = "0.2.0"; +pub const MAX_DIM : u32 = 59049; +pub const ALLOCATOR : str = "std.heap.c_allocator"; +pub const HANDLE_RULE : str = "an opaque void* over a heap-allocated HybridBigInt; the struct is neither extern nor packed, its layout is not ABI-stable, and it is never passed by value"; +pub const ERROR_CHANNEL : str = "none: a failure is NULL, 0 or 0.0; no errno, no code, no message"; +pub const OWNERSHIP_RULE : str = "every function that returns a handle allocates a new one the caller releases with trinity_vsa_vector_free; trinity_vsa_version returns a static string; trinity_vsa_decode_text and trinity_vsa_to_array write into buffers the caller owns and return the count written"; +pub const DIM_RULE : str = "a dimension above MAX_DIM is clamped, not refused"; +pub const TRIT_RULE : str = "trinity_vsa_from_array maps a positive byte to 1, a negative byte to -1, zero to 0; get_trit returns 0 for an index at or beyond the length; set_trit ignores such an index"; +pub const FUNCTION_COUNT : u32 = 22; +pub const FUNCTIONS : [22]str = ["trinity_vsa_version", "trinity_vsa_vector_zeros", "trinity_vsa_vector_random", "trinity_vsa_from_array", "trinity_vsa_vector_clone", "trinity_vsa_vector_free", "trinity_vsa_bind", "trinity_vsa_unbind", "trinity_vsa_bundle2", "trinity_vsa_bundle3", "trinity_vsa_permute", "trinity_vsa_cosine_similarity", "trinity_vsa_hamming_distance", "trinity_vsa_dot_product", "trinity_vsa_encode_text", "trinity_vsa_encode_text_words", "trinity_vsa_decode_text", "trinity_vsa_get_dim", "trinity_vsa_get_trit", "trinity_vsa_set_trit", "trinity_vsa_to_array", "trinity_vsa_max_dim"]; +pub const FUNCTION_ARITY : [22]u32 = [0, 1, 2, 2, 1, 1, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 3, 1, 2, 3, 3, 0]; +pub const FUNCTION_C : [22]str = ["const char* trinity_vsa_version(void)", "trinity_vsa_vector_t trinity_vsa_vector_zeros(size_t dim)", "trinity_vsa_vector_t trinity_vsa_vector_random(size_t dim, uint64_t seed)", "trinity_vsa_vector_t trinity_vsa_from_array(const int8_t* data, size_t dim)", "trinity_vsa_vector_t trinity_vsa_vector_clone(trinity_vsa_vector_t v)", "void trinity_vsa_vector_free(trinity_vsa_vector_t v)", "trinity_vsa_vector_t trinity_vsa_bind(trinity_vsa_vector_t a, trinity_vsa_vector_t b)", "trinity_vsa_vector_t trinity_vsa_unbind(trinity_vsa_vector_t a, trinity_vsa_vector_t b)", "trinity_vsa_vector_t trinity_vsa_bundle2(trinity_vsa_vector_t a, trinity_vsa_vector_t b)", "trinity_vsa_vector_t trinity_vsa_bundle3(trinity_vsa_vector_t a, trinity_vsa_vector_t b, trinity_vsa_vector_t c)", "trinity_vsa_vector_t trinity_vsa_permute(trinity_vsa_vector_t v, size_t k)", "double trinity_vsa_cosine_similarity(trinity_vsa_vector_t a, trinity_vsa_vector_t b)", "size_t trinity_vsa_hamming_distance(trinity_vsa_vector_t a, trinity_vsa_vector_t b)", "int64_t trinity_vsa_dot_product(trinity_vsa_vector_t a, trinity_vsa_vector_t b)", "trinity_vsa_vector_t trinity_vsa_encode_text(const char* text, size_t len)", "trinity_vsa_vector_t trinity_vsa_encode_text_words(const char* text, size_t len)", "size_t trinity_vsa_decode_text(trinity_vsa_vector_t v, char* buf, size_t buf_len)", "size_t trinity_vsa_get_dim(trinity_vsa_vector_t v)", "int8_t trinity_vsa_get_trit(trinity_vsa_vector_t v, size_t index)", "void trinity_vsa_set_trit(trinity_vsa_vector_t v, size_t index, int8_t value)", "size_t trinity_vsa_to_array(trinity_vsa_vector_t v, int8_t* out, size_t max_len)", "size_t trinity_vsa_max_dim(void)"]; +pub const FUNCTION_OWNERSHIP : [22]str = ["static string, never freed", "caller frees", "caller frees", "caller frees; the input array is copied", "caller frees", "releases; NULL is a no-op", "caller frees", "caller frees", "caller frees", "caller frees", "caller frees", "value", "value", "value", "caller frees", "caller frees", "writes the caller's buffer, returns bytes written", "value", "value", "in place", "writes the caller's buffer, returns trits written", "value"]; +pub const FUNCTION_ON_NULL : [22]str = ["n/a", "NULL when allocation fails", "NULL when allocation fails", "NULL when allocation fails", "NULL", "no-op", "NULL", "NULL", "NULL", "NULL", "NULL", "0.0", "0", "0", "NULL when allocation fails", "NULL when allocation fails", "0", "0", "0", "no-op", "0", "n/a"]; +; --- Findings ------------------------------------------------------------------------------ +pub const FINDING_COUNT : u32 = 8; +pub const FINDINGS : [8]str = ["src/c_api.zig does not parse at the pin: trinity_vsa_set_trit (:251-264) opens `if (value > 0) {` twice (:255-256) and never closes it, so `zig ast-check` fails at :270 and neither the libraries nor the fifteen tests of the file build", "trinity_vsa_bundle2 and trinity_vsa_bundle3 call the library with an allocator argument the pinned zig-hdc bundle2 (two parameters) and bundle3 (three) do not take; trinity_vsa_dot_product passes an allocator to a two-parameter dotProduct", "c_api.zig unwraps HybridBigInt.unpacked_cache as an optional (:84-88, :243-247, :257-261) while the pinned golden-float declares it as a plain array", "trinity_vsa_encode_text is a `hash *% 31 + byte` fold into one vector, not the position-binding encoder the header documents; trinity_vsa_encode_text_words returns only the first word vector and frees the rest", "the header's install path in build.zig is wrong, so `zig build libvsa` cannot install it", "no CI step builds libvsa or runs test:src/c_api.zig with a propagated exit code (S01 card abi.c-api: declared)", "no C ABI struct exists: every parameter is a handle, a size, a trit, an i64 or a double", "specs/api/c_api_contract.t27 declares no module and no function; its nine tests are prose"]; +pub const EVIDENCE : str = "declared: the fixture compiles against the header (tools/trinity_c_abi.py check), it has not been linked or run because the library does not parse at the pin"; +pub const ENABLED : bool = true; + +; --- Rules ------------------------------------------------------------------------------------ + +pub fn dim_clamped(dim: u32) -> u32 { + if (dim > MAX_DIM) { return MAX_DIM; } + return dim; +} + +pub fn trit_normalized(byte: i32) -> i32 { + if (byte > 0) { return 1; } + if (byte < 0) { return -1; } + return 0; +} + +pub fn get_trit_result(index: u32, len: u32, stored: i32) -> i32 { + if (index >= len) { return 0; } + return stored; +} + +pub fn set_trit_ignored(index: u32, len: u32) -> bool { + return index >= len; +} + +pub fn to_array_count(len: u32, max_len: u32) -> u32 { + if (len < max_len) { return len; } + return max_len; +} + +pub fn handle_result_is_null(input_is_null: bool) -> bool { + return input_is_null; +} + +invariant the_maximum_dimension_is_the_hybrid_capacity { MAX_DIM == 59049 } +invariant every_function_has_a_prototype_an_owner_and_a_null_rule { FUNCTION_COUNT == 22 } + +test a_dimension_is_clamped_not_refused { + assert dim_clamped(8) == 8; + assert dim_clamped(59049) == 59049; + assert dim_clamped(59050) == 59049; +} + +test trits_are_normalized_at_the_boundary { + assert trit_normalized(5) == 1; + assert trit_normalized(-5) == -1; + assert trit_normalized(0) == 0; +} + +test an_index_beyond_the_length_reads_zero_and_writes_nothing { + assert get_trit_result(2, 3, -1) == -1; + assert get_trit_result(3, 3, -1) == 0; + assert set_trit_ignored(3, 3) == true; + assert set_trit_ignored(0, 3) == false; +} + +test buffers_are_filled_to_the_shorter_length { + assert to_array_count(5, 3) == 3; + assert to_array_count(3, 5) == 3; + assert handle_result_is_null(true) == true; +} diff --git a/apps/website/public/t27/files/specs/api/c_api_contract.t27 b/apps/website/public/t27/files/specs/api/c_api_contract.t27 index 5441382b98..3b5f5e3279 100644 --- a/apps/website/public/t27/files/specs/api/c_api_contract.t27 +++ b/apps/website/public/t27/files/specs/api/c_api_contract.t27 @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 -# C API CONTRACT -- Trinity VSA FFI Bridge +# C API CONTRACT — Trinity VSA FFI Bridge ## Specification -Zig-backed FFI bridge for Trinity VSA core. -Exposes real SIMD-accelerated VSA core to C/C++/Python/Swift/Go via FFI. +// Zig-backed FFI bridge for Trinity VSA core. +// Exposes real SIMD-accelerated VSA core to C/C++/Python/Swift/Go via FFI. ## Mathematical Foundation ``` -phi^2 + 1/phi^2 = 3 = TRINITY +// φ² + 1/φ² = 3 = TRINITY ``` ## Exposed Functions @@ -17,105 +17,105 @@ phi^2 + 1/phi^2 = 3 = TRINITY ### Version ``` -export fn trinity_vsa_version() -> [*]const u8 - Returns "0.2.0" +// export fn trinity_vsa_version() -> [*]const u8 +// Returns "0.2.0" ``` ### Vector Lifecycle ``` -export fn trinity_vsa_vector_zeros(dim: usize) -> ?*anyopaque - Create a zero vector with given dimension +// export fn trinity_vsa_vector_zeros(dim: usize) -> ?*anyopaque +// Create a zero vector with given dimension -export fn trinity_vsa_vector_random(dim: usize, seed: u64) -> ?*anyopaque - Create a random hypervector with given dimension and seed +// export fn trinity_vsa_vector_random(dim: usize, seed: u64) -> ?*anyopaque +// Create a random hypervector with given dimension and seed -export fn trinity_vsa_from_array(data: [*]const i8, dim: usize) -> ?*anyopaque - Create vector from an array of int8 values (-1, 0, +1) +// export fn trinity_vsa_from_array(data: [*]const i8, dim: usize) -> ?*anyopaque +// Create vector from an array of int8 values (-1, 0, +1) -export fn trinity_vsa_vector_clone(v: ?*anyopaque) -> ?*anyopaque - Clone a vector (deep copy) +// export fn trinity_vsa_vector_clone(v: ?*anyopaque) -> ?*anyopaque +// Clone a vector (deep copy) -export fn trinity_vsa_vector_free(v: ?*anyopaque) -> void - Free a vector (must be called for every created vector) +// export fn trinity_vsa_vector_free(v: ?*anyopaque) -> void +// Free a vector (must be called for every created vector) ``` ### VSA Operations ``` -export fn trinity_vsa_bind(a, b) -> ?*anyopaque - Bind two vectors (element-wise multiplication) +// export fn trinity_vsa_bind(a, b) -> ?*anyopaque +// Bind two vectors (element-wise multiplication) bind(a, a) = all +1 (self-inverse) -export fn trinity_vsa_unbind(a, b) -> ?*anyopaque - Inverse of bind +// export fn trinity_vsa_unbind(a, b) -> ?*anyopaque +// Inverse of bind unbind(bind(a, b), B) = A -export fn trinity_vsa_bundle2(a, b) -> ?*anyopaque - Bundle 2 vectors (majority voting) +// export fn trinity_vsa_bundle2(a, b) -> ?*anyopaque +// Bundle 2 vectors (majority voting) -export fn trinity_vsa_bundle3(a, b, c) -> ?*anyopaque - Bundle 3 vectors (true majority voting) +// export fn trinity_vsa_bundle3(a, b, c) -> ?*anyopaque +// Bundle 3 vectors (true majority voting) -export fn trinity_vsa_permute(v, k) -> ?*anyopaque - Permute vector (cyclic shift by k positions) +// export fn trinity_vsa_permute(v, k) -> ?*anyopaque +// Permute vector (cyclic shift by k positions) ``` ### Similarity ``` -export fn trinity_vsa_cosine_similarity(a, b) -> f64 - Cosine similarity [-1.0, 1.0] +// export fn trinity_vsa_cosine_similarity(a, b) -> f64 +// Cosine similarity [-1.0, 1.0] -export fn trinity_vsa_hamming_distance(a, b) -> usize - Hamming distance (number of differing trits) +// export fn trinity_vsa_hamming_distance(a, b) -> usize +// Hamming distance (number of differing trits) -export fn trinity_vsa_dot_product(a, b) -> i64 - Dot product (sum of element-wise products) +// export fn trinity_vsa_dot_product(a, b) -> i64 +// Dot product (sum of element-wise products) ``` ### Text Encoding ``` -export fn trinity_vsa_encode_text(text: [*]const u8, len: usize) -> ?*anyopaque - Encode text string to hypervector (for semantic search) +// export fn trinity_vsa_encode_text(text: [*]const u8, len: usize) -> ?*anyopaque +// Encode text string to hypervector (for semantic search) -export fn trinity_vsa_encode_text_words(text: [*]const u8, len: usize) -> ?*anyopaque - Encode text using word-level bag-of-words +// export fn trinity_vsa_encode_text_words(text: [*]const u8, len: usize) -> ?*anyopaque +// Encode text using word-level bag-of-words -export fn trinity_vsa_decode_text(v: ?*anyopaque, buf: [*]u8, buf_len: usize) -> usize - Decode hypervector back to text - Returns number of decoded characters written to buf +// export fn trinity_vsa_decode_text(v: ?*anyopaque, buf: [*]u8, buf_len: usize) -> usize +// Decode hypervector back to text +// Returns number of decoded characters written to buf ``` ### Vector Access ``` -export fn trinity_vsa_get_dim(v: ?*anyopaque) -> usize - Get vector dimension (number of trits) +// export fn trinity_vsa_get_dim(v: ?*anyopaque) -> usize +// Get vector dimension (number of trits) -export fn trinity_vsa_get_trit(v: ?*anyopaque, index: usize) -> i8 - Get trit value at index (returns -1, 0, or +1) +// export fn trinity_vsa_get_trit(v: ?*anyopaque, index: usize) -> i8 +// Get trit value at index (returns -1, 0, or +1) -export fn trinity_vsa_set_trit(v: ?*anyopaque, index: usize, value: i8) -> void - Set trit value at index (value clamped to -1, 0, +1) +// export fn trinity_vsa_set_trit(v: ?*anyopaque, index: usize, value: i8) -> void +// Set trit value at index (value clamped to -1, 0, +1) -export fn trinity_vsa_to_array(v: ?*anyopaque, out: [*]i8, max_len: usize) -> usize - Copy trit data to output array - Returns number of trits written +// export fn trinity_vsa_to_array(v: ?*anyopaque, out: [*]i8, max_len: usize) -> usize +// Copy trit data to output array +// Returns number of trits written -export fn trinity_vsa_max_dim() -> usize - Get maximum supported vector dimension +// export fn trinity_vsa_max_dim() -> usize +// Get maximum supported vector dimension ``` ## Memory Management -All functions use opaque handles (heap-allocated HybridBigInt). +// All functions use opaque handles (heap-allocated HybridBigInt). -**Important:** -- Thread-safe: Each vector is independent. No global state. -- Ownership: Free must be called for every `trinity_vsa_vector_*` created vector. -- Error handling: Null return indicates allocation failure. +// **Important:** +// - Thread-safe: Each vector is independent. No global state. +// - Ownership: Free must be called for every `trinity_vsa_vector_*` created vector. +// - Error handling: Null return indicates allocation failure. ## Tests @@ -237,6 +237,6 @@ test "C-API: permute" { ## Notes -- Thread-safety: All functions are thread-safe (no global state) -- Alignment: Memory allocated via heap allocator (no alignment restrictions) -- FFI boundary: Uses C calling convention (Zig-specific) +// - Thread-safety: All functions are thread-safe (no global state) +// - Alignment: Memory allocated via heap allocator (no alignment restrictions) +// - FFI boundary: Uses C calling convention (Zig-specific) diff --git a/apps/website/public/t27/files/specs/api/sdk_contract.t27 b/apps/website/public/t27/files/specs/api/sdk_contract.t27 index c4087a6be8..1d7ee06449 100644 --- a/apps/website/public/t27/files/specs/api/sdk_contract.t27 +++ b/apps/website/public/t27/files/specs/api/sdk_contract.t27 @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 -# TRINITY SDK 0 High-level API for Developers +# TRINITY SDK — High-level API for Developers ## Specification -Simplified interface for hyperdimensional computing applications. -Exposes real SIMD-accelerated VSA core to C/C++/Python/Swift/Go via FFI bridge. +// Simplified interface for hyperdimensional computing applications. +// Exposes real SIMD-accelerated VSA core to C/C++/Python/Swift/Go via FFI bridge. ## Mathematical Foundation ``` -V = n 1 3^k 2 3^m 4 5^p 6 e^q +// V = n × 3^k × π^m × φ^p × e^q ``` ## Core Components @@ -32,7 +32,7 @@ pub const Hypervector = struct { fn fromRaw(raw: HybridBigInt) -> Hypervector Create hypervector from existing HybridBigInt -}; +} ``` ### VSA Operations @@ -110,7 +110,7 @@ pub const Codebook = struct { fn count(self) -> usize Number of symbols in codebook -}; +} ``` ### Associative Memory @@ -138,7 +138,7 @@ pub const AssociativeMemory = struct { fn count(self) -> usize Number of stored items -}; +} ``` ### Sequence Encoder @@ -157,7 +157,7 @@ pub const SequenceEncoder = struct { fn findPosition(self, sequence, candidate, max_length, threshold) -> ?usize Find position with highest similarity, or null if below threshold -}; +} ``` ## Tests diff --git a/apps/website/public/t27/files/specs/ar/asp_solver.t27 b/apps/website/public/t27/files/specs/ar/asp_solver.t27 index 533172cb2d..ec1b11cb69 100644 --- a/apps/website/public/t27/files/specs/ar/asp_solver.t27 +++ b/apps/website/public/t27/files/specs/ar/asp_solver.t27 @@ -366,7 +366,7 @@ spec AspSolver { }; let alt_model = AnswerSet { - literals: [Literal {name: "p", is_negated: false, args: []}, + literals: [Literal {name: "p", is_negated: false, args: []}], proven: true, cost: 1 }; diff --git a/apps/website/public/t27/files/specs/ar/coa_planning.t27 b/apps/website/public/t27/files/specs/ar/coa_planning.t27 index b8971d12b0..c90f57a35d 100644 --- a/apps/website/public/t27/files/specs/ar/coa_planning.t27 +++ b/apps/website/public/t27/files/specs/ar/coa_planning.t27 @@ -2,6 +2,8 @@ // spec: CoaPlanning // Course of Action (COA) planning for neuro-symbolic reasoning +use base::types; + spec CoaPlanning { // COA action types enum ActionType { @@ -37,8 +39,8 @@ spec CoaPlanning { steps: [COAStep], total_steps: int, total_duration: float, - verification_status: Trit, - proof_trace: ProofTrace, + verification_status: Trit + proof_trace: ProofTrace } // COA constraint type diff --git a/apps/website/public/t27/files/specs/ar/datalog_engine.t27 b/apps/website/public/t27/files/specs/ar/datalog_engine.t27 index f3feceb23a..f7ea1c9c3c 100644 --- a/apps/website/public/t27/files/specs/ar/datalog_engine.t27 +++ b/apps/website/public/t27/files/specs/ar/datalog_engine.t27 @@ -3,8 +3,6 @@ // Datalog reasoning engine for neuro-symbolic AI spec DatalogEngine { - use tritype-base::Trit; - // Datalog fact structure struct Fact { predicate: string, diff --git a/apps/website/public/t27/files/specs/ar/explainability.t27 b/apps/website/public/t27/files/specs/ar/explainability.t27 index 37f576c88f..fe5bef114b 100644 --- a/apps/website/public/t27/files/specs/ar/explainability.t27 +++ b/apps/website/public/t27/files/specs/ar/explainability.t27 @@ -2,6 +2,8 @@ // spec: Explainability // Explainable AI (XAI) mechanisms for neuro-symbolic reasoning +use base::types; + spec Explainability { // Explanation structure struct Explanation { diff --git a/apps/website/public/t27/files/specs/ar/proof_trace.t27 b/apps/website/public/t27/files/specs/ar/proof_trace.t27 index aab89c7601..5cd40ec884 100644 --- a/apps/website/public/t27/files/specs/ar/proof_trace.t27 +++ b/apps/website/public/t27/files/specs/ar/proof_trace.t27 @@ -2,9 +2,9 @@ // spec: ProofTrace // Bounded proof trace mechanism for explainable neuro-symbolic reasoning -spec ProofTrace { - use tritype-base::Trit; +use base::types; +spec ProofTrace { // Maximum number of steps allowed in proof trace // DARPA CLARA requirement: ≤10 steps const MAX_STEPS: int = 10 @@ -109,7 +109,7 @@ spec ProofTrace { step.operation, input_str, trit_to_string(step.output), - step.timestamp as float / 1000.0); + step.timestamp as f64 / 1000.0); lines.push(line); } diff --git a/apps/website/public/t27/files/specs/ar/restraint.t27 b/apps/website/public/t27/files/specs/ar/restraint.t27 index 5eefe9841b..8f511619ab 100644 --- a/apps/website/public/t27/files/specs/ar/restraint.t27 +++ b/apps/website/public/t27/files/specs/ar/restraint.t27 @@ -2,9 +2,9 @@ // spec: Restraint // Bounded rationality and restraint mechanisms for neuro-symbolic reasoning -spec Restraint { - use tritype-base::Trit; +use base::types; +spec Restraint { // Restraint type enum RestraintType { UNKNOWN_TO_FALSE = 0, // K_UNKNOWN becomes K_FALSE @@ -224,7 +224,7 @@ spec Restraint { } } - return unknown_count as float / len(values) as float + return unknown_count as f64 / len(values) as f64 } // Check if unknown ratio exceeds threshold diff --git a/apps/website/public/t27/files/specs/ar/ternary_logic.t27 b/apps/website/public/t27/files/specs/ar/ternary_logic.t27 index 2c9b81cbca..f1ad3e694e 100644 --- a/apps/website/public/t27/files/specs/ar/ternary_logic.t27 +++ b/apps/website/public/t27/files/specs/ar/ternary_logic.t27 @@ -3,8 +3,6 @@ // K3 Kleene ternary logic operations for neuro-symbolic reasoning spec TernaryLogic { - use tritype-base::Trit; - // K3 ternary values: True, Unknown, False type Trit = Trit @@ -73,7 +71,7 @@ spec TernaryLogic { // Resolve two clauses by finding complementary literals fn resolve(clause_a: [Trit], clause_b: [Trit]) -> [Trit] { let result: [Trit] = []; - for i in 0..clause_a.len { + for i in range(0, len(clause_a)) { let a = clause_a[i]; let b = clause_b[i]; // T/F complementary → unknown, otherwise OR diff --git a/apps/website/public/t27/files/specs/auth/config.t27 b/apps/website/public/t27/files/specs/auth/config.t27 index c2db5bd5b6..8557e85f95 100644 --- a/apps/website/public/t27/files/specs/auth/config.t27 +++ b/apps/website/public/t27/files/specs/auth/config.t27 @@ -1,14 +1,14 @@ // specs/auth/config.t27 // Authentication Configuration Storage -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module AuthConfig { use base::types; use account::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Auth Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // AuthType represents the type of authentication enum AuthType { @@ -17,9 +17,9 @@ module AuthConfig { WellKnown = 2, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // OAuth Configuration - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Oauth represents OAuth authentication configuration struct Oauth { @@ -31,9 +31,9 @@ module AuthConfig { enterprise_url: str?, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // API Key Configuration - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Api represents API key authentication configuration struct Api { @@ -41,9 +41,9 @@ module AuthConfig { key: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Well-Known Configuration - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // WellKnown represents well-known authentication configuration struct WellKnown { @@ -52,16 +52,16 @@ module AuthConfig { token: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Auth Info - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Info represents authentication info (type tag) struct Info(u8); - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Config Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // get retrieves auth configuration for a provider fn get(provider_id: str) -> Result { @@ -93,9 +93,9 @@ module AuthConfig { // Implementation: Delete all auth config files } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Error Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // AuthConfigError represents an auth config operation error struct AuthConfigError { @@ -103,9 +103,9 @@ module AuthConfig { provider_id: str?, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Type Conversion - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // to_oauth converts Info to Oauth if type matches fn to_oauth(info: Info) -> Result { @@ -142,9 +142,9 @@ module AuthConfig { // Implementation: Extract type tag from Info } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Provider IDs (well-known) - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const PROVIDER_OPENCODE: str = "opencode"; const PROVIDER_ANTHROPIC: str = "anthropic"; @@ -158,9 +158,9 @@ module AuthConfig { const PROVIDER_MISTRAL: str = "mistral"; const PROVIDER_GITLAB: str = "gitlab"; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "auth_type_values" { assert(AuthType::Oauth as u32 == 0); diff --git a/apps/website/public/t27/files/specs/automation/agent-provider-chain.t27 b/apps/website/public/t27/files/specs/automation/agent-provider-chain.t27 new file mode 100644 index 0000000000..dba0330226 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/agent-provider-chain.t27 @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/agent-provider-chain.t27 -- the chain of model providers behind the +// vibee-render agent (chat, seller sweep, CRM duet) and its RESERVE route. +// Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/provider.ts (CATALOG, +// providerOrder, allProviders, diagnose) and provider-choice.ts (KNOWN_PROVIDERS, the +// owner's pick from the bot). +// WHY a reserve route: three duet runs on 2026-09-13 (duet-mtzyg2t6, duet-mu00klri and the +// live business bot before them on 2026-09-06) died with EVERY provider at a limit -- z.ai +// twice (glm-5.3 and glm-4.5 share one subscription and one limit) and NVIDIA +// ("Worker local total request limit reached (16/16)"). Two of three paid routes lead to the +// same wall. A fourth, independent route is configured by the owner with three variables +// and needs no code change; when it is not configured nothing changes. +// WHY declared, not measured: the reserve model is whatever the owner points the variables +// at. Its tool-calling and vision are the owner's declaration (RESERVE_TOOLS, RESERVE_VISION), +// not a measurement in this repository; the catalog comments say so. +// Claim status: the chain order, the env names and the fallback rule are unit-tested with +// doubles. RESERVE_CONFIGURED_LIVE is a live observation (2026-09-15, see below); whether the +// reserve ANSWERS is not claimed: the one probe so far was skipped and a later route answered. +// WHY a skipped provider is logged (2026-09-15): with the reserve moved first, the stream named +// zai. streamModel collected the diagnose() reason but only surfaced it inside the final +// "nobody answered" error -- when a later provider succeeds the reason vanishes, and a dead +// route stays invisible for as long as the others live. One warn line per skip fixes that. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::agent_provider_chain { + + pub const KIND : str = "automation"; + pub const ID : str = "agent-provider-chain"; + pub const REPO : str = "999-multibots-telegraf"; + pub const VERSION : u8 = 1; + + // ---- The chain ----------------------------------------------------------------------- + // Default order: paid routes first, the reserve after them, our own model last. + pub const ORDER_DEFAULT : str = "zai,zai-lite,nemotron,reserve,ollama"; + pub const PROVIDERS : u8 = 5; + pub const OWNER_PICK_GOES_FIRST : bool = true; // AGENT_PROVIDER or the bot button moves one id to the front, the rest keep order + pub const EVERY_CONFIGURED_PROVIDER_IS_TRIED : bool = true; // a key that is set is not a key that works; reasons are collected per id + + // ---- The reserve route --------------------------------------------------------------- + pub const RESERVE_ID : str = "reserve"; + pub const RESERVE_ENV_BASE : str = "RESERVE_BASE_URL"; // OpenAI-compatible /chat/completions root, no trailing slash + pub const RESERVE_ENV_KEY : str = "RESERVE_API_KEY"; + pub const RESERVE_ENV_MODEL : str = "RESERVE_MODEL"; + pub const RESERVE_NEEDS_ALL_THREE : bool = true; // missing any of the three: the route is absent, not broken + pub const RESERVE_ENV_TOOLS : str = "RESERVE_TOOLS"; // "0" excludes it from tools-only turns; default declared capable + pub const RESERVE_ENV_VISION : str = "RESERVE_VISION"; // "1" declares image input; default not + pub const RESERVE_THINKING : bool = false; // no reasoning_content is assumed from an unknown vendor + pub const RESERVE_AFTER : str = "nemotron"; + pub const RESERVE_BEFORE : str = "ollama"; + pub const RESERVE_CAPABILITIES_DECLARED_NOT_MEASURED : bool = true; + pub const RESERVE_IN_BOT_PICKER : bool = true; // KNOWN_PROVIDERS lists it so the owner can move it to the front + pub const SKIPPED_PROVIDER_IS_LOGGED : bool = true; // every fall-through (HTTP error, thrown fetch, timeout) is a console.warn with the diagnose() reason before the next provider is tried + pub const SKIP_LOG_PREFIX : str = "[agent] provider skipped:"; + + // ---- Live evidence ------------------------------------------------------------------- + // 2026-09-15, vibee-render commit e2c4617: RESERVE_BASE_URL/RESERVE_MODEL/RESERVE_API_KEY set on + // Railway (DeepSeek, key referenced from the bot service), GET /api/agent/provider (owner) lists + // chain = zai, zai-lite, nemotron, reserve(deepseek-chat). That listing is the evidence. + pub const RESERVE_CONFIGURED_LIVE : bool = true; + pub const RESERVE_CONFIGURED_LIVE_EVIDENCE : str = "GET /api/agent/provider chain includes reserve deepseek-chat"; + // ---- Not claimed --------------------------------------------------------------------- + // Same day, reserve moved first by the owner, one ephemeral tools_only turn: the provider event + // named zai, so the reserve was skipped; the reason was not logged (see SKIPPED_PROVIDER_IS_LOGGED). + pub const RESERVE_ANSWERED_LIVE : bool = false; + pub const RESERVE_PROBES : u8 = 1; + pub const RESERVE_PROBE_ANSWERED_BY : str = "zai"; + + // The reserve route exists only when all three variables are set. + fn reserve_available(base: bool, key: bool, model: bool) -> bool { + return base && key && model; + } + + // Where a provider sits in the default chain, 0-based. + fn default_position(id: str) -> u8 { + if id == "zai" { return 0; } + if id == "zai-lite" { return 1; } + if id == "nemotron" { return 2; } + if id == "reserve" { return 3; } + return 4; + } + + test "the reserve route needs all three variables and sits after nemotron" + assert(RESERVE_NEEDS_ALL_THREE); + assert(reserve_available(true, true, true)); + assert(!reserve_available(true, true, false)); + assert(!reserve_available(false, true, true)); + assert(default_position("reserve") == default_position("nemotron") + 1); + assert(default_position("ollama") == default_position("reserve") + 1); + assert(PROVIDERS == 5); + + test "capabilities of the reserve model are the owner's declaration" + assert(RESERVE_CAPABILITIES_DECLARED_NOT_MEASURED); + assert(!RESERVE_THINKING); + assert(RESERVE_IN_BOT_PICKER); + assert(OWNER_PICK_GOES_FIRST); + assert(EVERY_CONFIGURED_PROVIDER_IS_TRIED); + + test "the reserve route is configured live; an answer from it is not claimed" + assert(RESERVE_CONFIGURED_LIVE); + assert(!RESERVE_ANSWERED_LIVE); + assert(RESERVE_PROBES == 1); + assert(SKIPPED_PROVIDER_IS_LOGGED); +} diff --git a/apps/website/public/t27/files/specs/automation/crm-client-ownership.t27 b/apps/website/public/t27/files/specs/automation/crm-client-ownership.t27 new file mode 100644 index 0000000000..4abb314877 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/crm-client-ownership.t27 @@ -0,0 +1,140 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/crm-client-ownership.t27 -- WHO owns a client profile, and money in the stage +// the client workspace shows. Closes the two gaps crm-client-workspace.t27 (#3604) left open and +// that were seen live on 2026-09-13. +// Host: 999-multibots-telegraf apps/vibee-editor/render -- crm-client-setup-tool.ts (table +// crm_client_profiles, ensureProfileTable, setupClient, clientProfileFor, tool +// crm_client_profile), crm-client-workspace-tools.ts (tool crm_clients), crm-touch-tools.ts +// (tool crm_history), chat.ts (clientContextBlock), crm-tools.ts (whoPaid, visibleScope), +// crm-stages.ts (stageOf). +// WHAT was measured before this spec (code read 2026-09-13): crm_client_profiles had PRIMARY KEY +// (telegram_id) and no owner column -- one profile per person on the whole installation, so +// a second seller would read and overwrite the first seller's profile; crm_clients and +// crm_history called stageOf with paid = false hard-coded, so a person with a COMPLETED +// MONEY_INCOME row in payments_v2 showed the stage of their last touch ('written', 'new') +// instead of 'client' or 'winback' as crm_leads and crm_summary already showed. +// WHY a nullable column and a unique index, not a new primary key: the table has live rows with +// no owner; a NOT NULL key would either refuse the migration or invent an owner. Legacy rows +// are backfilled from crm_people (the ingest already knows which owner met whom); a row +// still unowned after that is readable by any seller and is CLAIMED by the next +// crm_client_setup, which always writes owner_id. +// WHY money first: crm-stages.ts already says it -- somebody who paid is a client even if the last +// touch says 'refused'; the workspace must not contradict the list next to it. Payments are +// read once per call through the same owner-scoped whoPaid the other tools use (only the +// owner's own bots count, CRM audit 2026-09-12 P1 #2); a Supabase failure costs the money +// column, never the answer -- the stage then falls back to touches and says so. +// Claim status: contract and pure functions written and unit-tested with doubles on the host; the +// migration having run on the production Postgres and a paying client showing 'client' on +// the live dashboard are shown by the host after deploy, not by this file. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::crm_client_ownership { + + pub const KIND : str = "automation"; + pub const ID : str = "crm-client-ownership"; + pub const REPO : str = "999-multibots-telegraf"; + pub const VERSION : u8 = 1; + pub const EXTENDS : str = "crm-client-workspace"; + + // ---- Ownership of a profile --------------------------------------------------------------- + pub const TABLE_PROFILES : str = "crm_client_profiles"; + pub const OWNER_COLUMN : str = "owner_id"; // text, nullable: legacy rows carry NULL until claimed + pub const OWNER_IS : str = "seller-telegram-id"; // the caller of crm_client_setup, never the client + pub const UNIQUE_KEY : str = "owner_id,telegram_id"; // one profile per (seller, client); legacy pkey dropped + pub const MIGRATION_IDEMPOTENT : bool = true; // ADD COLUMN IF NOT EXISTS, DROP pkey only if present + pub const BACKFILL_FROM : str = "crm_people"; // owner_id of the newest ingest row for that lead + pub const UNOWNED_READABLE_BY_ANY_SELLER : bool = true; // until the next setup claims the row + pub const SETUP_ALWAYS_WRITES_OWNER : bool = true; + pub const READS_SCOPED_BY_OWNER : u8 = 4; // crm_client_profile, crm_clients, clientContextBlock, duet sellerBrief + + // ---- Money in the workspace stage ------------------------------------------------------- + pub const PAYMENTS_TABLE : str = "payments_v2"; + pub const PAYMENT_COUNTS_WHEN : str = "COMPLETED+MONEY_INCOME"; + pub const PAYMENTS_SCOPED_TO : str = "owner-bots"; // visibleScope -> whoPaid; another owner's bot is not our money + pub const STAGE_TOOLS_READING_MONEY : u8 = 2; // crm_clients, crm_history + pub const MONEY_BEFORE_TOUCHES : bool = true; // stageOf: paid outranks every touch, refused included + pub const WINBACK_AFTER_QUIET_DAYS : u8 = 60; + pub const PAID_FLAG_IN_ROWS : bool = true; // crm_clients rows and crm_history carry paid: bool + pub const MONEY_UNREACHABLE_FALLS_BACK_TO_TOUCHES : bool = true; // and says paid_known: false + + // ---- The read-only schema witness (#3611) --------------------------------------------- + pub const SCHEMA_CHECK_TOOL : str = "crm_schema_check"; // owner-only; reads pg_constraint, pg_indexes, information_schema and one count + pub const SCHEMA_CHECK_WRITES : bool = false; // it never calls ensureProfileTable; a witness that migrates is not a witness + pub const SCHEMA_CHECK_REPORTS : str = "owner_column,legacy_pkey,unique_index,rows_total,rows_owned,rows_unowned,owners"; + + // ---- Claimed live ----------------------------------------------------------------------- + pub const PAYING_CLIENT_SEEN_LIVE : bool = true; // 2026-09-13 ~21:25 +07: crm_history 435572800 -> stage client, paid true, paid_known true, after the #2390 deploy + pub const MIGRATION_RAN_ON_PROD : bool = true; // 2026-09-13 ~21:37 +07: crm_schema_check on prod -> owner_column true, legacy_pkey false, unique_index true, rows 1/1 owned/0 unowned (#2392) + + struct ProfileRow { + has_owner: bool, + owner_is_caller: bool, + } + + // A profile is visible to a seller when it is theirs, or when nobody has claimed it yet. + fn profile_visible(row: ProfileRow) -> bool { + return !row.has_owner || row.owner_is_caller; + } + + // Two sellers may hold two profiles of one person; one seller holds one. + fn conflicts(same_owner: bool, same_client: bool) -> bool { + return same_owner && same_client; + } + + // The stage the workspace shows: money first, then the touches, then quiet. + // 0 new, 1 written, 2 talking, 3 later, 4 refused, 5 client, 6 winback. + fn stage_code(paid: bool, quiet_days: u8, touch_code: u8) -> u8 { + if paid { + if quiet_days > WINBACK_AFTER_QUIET_DAYS { return 6; } + return 5; + } + return touch_code; + } + + fn paid_known(money_reachable: bool) -> bool { + return money_reachable; + } + + test "a profile belongs to the seller who set it up and is invisible to another seller" + assert(OWNER_COLUMN == "owner_id"); + assert(OWNER_IS == "seller-telegram-id"); + assert(SETUP_ALWAYS_WRITES_OWNER); + assert(profile_visible(ProfileRow { has_owner: true, owner_is_caller: true })); + assert(!profile_visible(ProfileRow { has_owner: true, owner_is_caller: false })); + assert(READS_SCOPED_BY_OWNER == 4); + + test "a legacy row without an owner stays readable until the next setup claims it" + assert(profile_visible(ProfileRow { has_owner: false, owner_is_caller: false })); + assert(UNOWNED_READABLE_BY_ANY_SELLER); + assert(BACKFILL_FROM == "crm_people"); + assert(MIGRATION_IDEMPOTENT); + assert(UNIQUE_KEY == "owner_id,telegram_id"); + assert(conflicts(true, true)); + assert(!conflicts(false, true)); + + test "money outranks every touch in the stage the workspace shows" + assert(MONEY_BEFORE_TOUCHES); + assert(stage_code(true, 0, 4) == 5); + assert(stage_code(true, 61, 0) == 6); + assert(stage_code(true, 60, 0) == 5); + assert(stage_code(false, 200, 1) == 1); + assert(STAGE_TOOLS_READING_MONEY == 2); + + test "payments are only the owner's own completed income and a dead Supabase costs the money column, not the answer" + assert(PAYMENTS_TABLE == "payments_v2"); + assert(PAYMENT_COUNTS_WHEN == "COMPLETED+MONEY_INCOME"); + assert(PAYMENTS_SCOPED_TO == "owner-bots"); + assert(MONEY_UNREACHABLE_FALLS_BACK_TO_TOUCHES); + assert(!paid_known(false)); + assert(paid_known(true)); + assert(PAID_FLAG_IN_ROWS); + + test "this spec extends the client workspace; a paying client and the migration were both witnessed live" + assert(EXTENDS == "crm-client-workspace"); + assert(KIND == "automation"); + assert(WINBACK_AFTER_QUIET_DAYS == 60); + assert(PAYING_CLIENT_SEEN_LIVE); + assert(MIGRATION_RAN_ON_PROD); + assert(SCHEMA_CHECK_TOOL == "crm_schema_check"); + assert(!SCHEMA_CHECK_WRITES); +} diff --git a/apps/website/public/t27/files/specs/automation/crm-client-workspace.t27 b/apps/website/public/t27/files/specs/automation/crm-client-workspace.t27 new file mode 100644 index 0000000000..7b78108bb5 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/crm-client-workspace.t27 @@ -0,0 +1,152 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/crm-client-workspace.t27 -- one CRM workspace PER CLIENT: a dashboard and a +// conversation thread of the seller ABOUT one client, instead of one thread and one flat list +// for everybody. Written after the owner said (2026-09-13) that every client's chat lands in the +// same place. +// Host: 999-multibots-telegraf apps/vibee-editor -- render: agent_messages.thread (conversation.ts), +// body.client / ?client= on the four /api/agent routes (routes.ts), clientContextBlock in +// runAgent (chat.ts), table crm_duet_runs and tool crm_duet_runs (crm-duet-tool.ts), tools +// crm_client_plan and crm_clients; player: routes /crm/:clientId (dashboard) and +// /crm/:clientId/chat (client thread), the list at /crm links every row to its client. +// WHAT was measured before this spec (render Postgres, code read 2026-09-13): agent_messages was +// keyed by telegram_id only -- one thread per person across bot, app and phone; the mini +// app had one localStorage atom and "new conversation" DELETEd the whole server history; +// /crm showed three flat panels with no client page; duet runs lived in a process Map and +// the report went to the owner's Saved Messages -- a redeploy in the middle of a run +// (duet-mtzsz1la, 2026-09-13 19:41-19:44 +07) lost the run after its first pair. +// WHY a thread key and not a second table: the four routes and both apps already speak +// agent_messages; a DEFAULT 'self' column keeps every existing row and caller unchanged, +// and 'client:' gives the seller one thread per client with the client's profile, +// SOUL status, skills and DM history injected as context (not as instructions). +// WHY the dashboard reads through /mcp tools and not new REST routes: visibility (owner, +// seller, stranger) is decided in one place -- the tool gate, before the first DB read +// (crm-owner-gate.test.ts is the canary); a REST route would be a second gate to keep. +// Claim status: contract and gates written and unit-tested with doubles on both sides; the +// dashboard being SEEN live by the owner and a duet run SURVIVING a redeploy are shown by +// the host, not by this file. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::crm_client_workspace { + + pub const KIND : str = "automation"; + pub const ID : str = "crm-client-workspace"; + pub const REPO : str = "999-multibots-telegraf"; + pub const VERSION : u8 = 1; + + // ---- Who ---------------------------------------------------------------------------- + pub const CALLER : str = "seller"; // owner id or a row in tg_sessions (crm-sellers.t27) + pub const CLIENT_IS : str = "telegram-id"; // numeric, 5..15 digits, never the caller + pub const CLIENT_ID_MIN_DIGITS : u8 = 5; + pub const CLIENT_ID_MAX_DIGITS : u8 = 15; + + // ---- The thread ----------------------------------------------------------------------- + pub const THREAD_COLUMN : str = "thread"; // agent_messages.thread + pub const THREAD_SELF : str = "self"; // DEFAULT: every row and caller from before this spec + pub const THREAD_CLIENT_PREFIX : str = "client:"; // 'client:' -- the seller's thread about one client + pub const THREAD_PARAM : str = "client"; // body.client on POST, ?client= on GET/DELETE + pub const ROUTES_WITH_THREAD : u8 = 4; // chat, history GET, history POST, history DELETE + pub const DELETE_CLEARS_ONLY_ITS_THREAD : bool = true; // a client thread never wipes 'self' + pub const CONTEXT_INJECTED : str = "crm_client_profile+lead_context"; // as context, not instructions + pub const GATE_BEFORE_DB : bool = true; // 400 bad client / 403 not a seller / 400 client == caller + + // ---- The dashboard -------------------------------------------------------------------- + pub const ROUTE_LIST : str = "/crm"; + pub const ROUTE_CLIENT : str = "/crm/:clientId"; + pub const ROUTE_CLIENT_CHAT : str = "/crm/:clientId/chat"; + pub const READS_THROUGH : str = "/mcp"; // tools decide who sees whom; no new REST routes + pub const PANELS : u8 = 6; // profile+soul+skills, plan, duets, touches+stage, media, messages + pub const UNREACHABLE_SAYS : str = "unavailable"; // never zeros (rule inherited from /crm) + pub const NEW_READ_TOOLS : u8 = 3; // crm_clients, crm_client_plan, crm_duet_runs + pub const DASHBOARD_SENDS_NOTHING_UNASKED : bool = true; // reads never send; the one sender is the explicit duet control below + + // ---- The start-duet control on /crm/:clientId (#3611) -------------------------------- + pub const DASHBOARD_STARTS_DUET : bool = true; // calls crm_duet through the same /mcp gate + pub const DUET_CONTROL_GATE : str = "server"; // owner-only in the tool; the UI shows the refusal text, never guesses the role + pub const DUET_CONTROL_DEFAULT_DRY_RUN : bool = true; + pub const DUET_CONTROL_REAL_SEND_CONFIRMS : bool = true; // dry_run off -> an inline confirm step before the call + pub const DUET_CONTROL_TURNS_MAX : u8 = 8; + pub const DUET_CONTROL_TURNS_DEFAULT : u8 = 4; + + // ---- The /crm list (#3611) ------------------------------------------------------------- + pub const LIST_PAID_BADGE : bool = true; // rows with paid: true carry a badge + pub const LIST_FILTER : str = "all,clients,leads"; // clients = paid or stage client/winback; leads = the rest + pub const LIST_SAYS_PAID_UNKNOWN : bool = true; // paid_known: false is one visible line, not a hidden zero + + // ---- Persisted duet runs ---------------------------------------------------------------- + pub const TABLE_RUNS : str = "crm_duet_runs"; + pub const RUN_PERSISTED_AT : str = "start,turn,finish"; + pub const RUN_LOST_AFTER_MIN : u8 = 30; // a 'running' row older than this reads as 'lost' + pub const RUN_LOST_IS_STORED : bool = false; // derived on read, never written + + // ---- Not claimed ---------------------------------------------------------------------- + pub const DASHBOARD_SEEN_LIVE : bool = true; // 2026-09-13 ~20:40 +07: /crm, /crm/435572800 and its chat opened by the owner on app.t27.ai after the #2384 deploy (#3608) + pub const RUN_SURVIVED_REDEPLOY : bool = false; + + struct Thread { + is_self: bool, + client_digits: u8, + } + + // The thread key: 'self' unless a valid client id is named. + fn thread_for(client_digits: u8, is_caller: bool) -> Thread { + let valid = client_digits >= CLIENT_ID_MIN_DIGITS && client_digits <= CLIENT_ID_MAX_DIGITS && !is_caller; + return Thread { is_self: !valid, client_digits: client_digits }; + } + + // A request is refused before any read when the client is malformed, is the caller, or the caller is no seller. + fn refused_before_db(client_digits: u8, is_caller: bool, is_seller: bool) -> bool { + let malformed = client_digits < CLIENT_ID_MIN_DIGITS || client_digits > CLIENT_ID_MAX_DIGITS; + return malformed || is_caller || !is_seller; + } + + fn run_reads_as_lost(state_running: bool, minutes_since_start: u8) -> bool { + return state_running && minutes_since_start > RUN_LOST_AFTER_MIN; + } + + test "a client thread is separate from the seller's own thread and clearing one keeps the other" + assert(thread_for(9, false).is_self == false); + assert(thread_for(0, false).is_self); + assert(thread_for(9, true).is_self); + assert(THREAD_SELF == "self"); + assert(DELETE_CLEARS_ONLY_ITS_THREAD); + assert(ROUTES_WITH_THREAD == 4); + + test "a stranger, a malformed id and the caller's own id are refused before the first read" + assert(GATE_BEFORE_DB); + assert(refused_before_db(9, false, false)); + assert(refused_before_db(3, false, true)); + assert(refused_before_db(16, false, true)); + assert(refused_before_db(9, true, true)); + assert(!refused_before_db(9, false, true)); + + test "the dashboard reads through the tool gate, sends nothing unasked and says unavailable rather than zero" + assert(READS_THROUGH == "/mcp"); + assert(DASHBOARD_SENDS_NOTHING_UNASKED); + assert(DASHBOARD_STARTS_DUET); + assert(DUET_CONTROL_GATE == "server"); + assert(DUET_CONTROL_DEFAULT_DRY_RUN); + assert(DUET_CONTROL_REAL_SEND_CONFIRMS); + assert(DUET_CONTROL_TURNS_DEFAULT <= DUET_CONTROL_TURNS_MAX); + assert(LIST_PAID_BADGE); + assert(LIST_FILTER == "all,clients,leads"); + assert(LIST_SAYS_PAID_UNKNOWN); + assert(UNREACHABLE_SAYS == "unavailable"); + assert(PANELS == 6); + assert(NEW_READ_TOOLS == 3); + + test "duet runs are written at start, each turn and finish, and a stale running row reads as lost" + assert(TABLE_RUNS == "crm_duet_runs"); + assert(RUN_PERSISTED_AT == "start,turn,finish"); + assert(run_reads_as_lost(true, 31)); + assert(!run_reads_as_lost(true, 30)); + assert(!run_reads_as_lost(false, 90)); + assert(!RUN_LOST_IS_STORED); + + test "the client is a telegram id, the caller is a seller, and only the dashboard is claimed live" + assert(CLIENT_IS == "telegram-id"); + assert(CALLER == "seller"); + assert(ROUTE_CLIENT == "/crm/:clientId"); + assert(ROUTE_CLIENT_CHAT == "/crm/:clientId/chat"); + assert(DASHBOARD_SEEN_LIVE); + assert(!RUN_SURVIVED_REDEPLOY); +} diff --git a/apps/website/public/t27/files/specs/automation/crm-duet.t27 b/apps/website/public/t27/files/specs/automation/crm-duet.t27 new file mode 100644 index 0000000000..ec8ba46c51 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/crm-duet.t27 @@ -0,0 +1,308 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/crm-duet.t27 -- a REAL Telegram dialogue between two agents: the owner's +// seller agent (from @t27_dev, 144022504) sells every function of the bot to a connected +// seller acting as a new buyer (@playom, 435572800, answered by a persona model from HER +// session), and the content offered is for HER real game -- Leela Chakra +// (@leela_chakra_ai_bot, mini app t27.ai/leela, 72 planes, entry with a six, ruleset classic). +// Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-duet-tool.ts -- owner-only +// tools crm_duet (starts a run in the background, returns its id) and crm_duet_status +// (transcript, tool coverage, media sent, paid calls). Seller turns are runAgent with the +// owner's ToolContext and surface "business" (no button markers, sales playbook applies); +// buyer turns are one plain completion on resolveProvider() with the buyer persona. +// Sessions come from tg_sessions by id (crm-sellers.t27); sends go through the same +// address-book warm-up as owner-button proposals (tg-proposals.ts). +// WHY the seller speaks first: the production business bot answers any DM to the owner, but +// pauses for OWNER_TAKEOVER_MS (30 min) after a message typed by the owner himself. A duet that +// opens from the owner's session puts the business bot on hold, so the buyer's replies are +// answered by the duet's seller agent and not twice. A duet that let the buyer open would race it. +// WHY it is an exception to the proposal rule: owner buttons are the normal path for a send. +// Here the owner authorises the whole run in advance (confirm before each run), the tool is +// owner-only, both accounts are connected sellers (the row in tg_sessions is the consent), and +// the transcript is returned; session strings never are. +// Coverage: every tool the seller agent calls is recorded name -> ok/fail; paid generations +// (image_generate, image_edit, audio_generate, video_generate, reel_render) are counted; the +// brief asks for at most one per reply and three per run -- a SOFT cap enforced by the prompt +// and measured in the report, not a hard limit in code. +// Claim status: tool written and unit-tested with doubles. Whether a run SUCCEEDED live -- both +// sessions alive, the business bot silent, content delivered -- is shown by crm_duet_status, +// not by this file. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::crm_duet { + + pub const KIND : str = "automation"; + pub const ID : str = "crm-duet"; + pub const REPO : str = "999-multibots-telegraf"; + pub const VERSION : u8 = 1; + + // ---- Who ---------------------------------------------------------------------------- + pub const SELLER : str = "144022504"; // @t27_dev: the owner, sells + pub const BUYER : str = "435572800"; // @playom: connected seller, plays a new buyer + pub const BUYER_GAME : str = "Leela Chakra"; + pub const BUYER_BOT : str = "leela_chakra_ai_bot"; + pub const BUYER_APP : str = "https://t27.ai/leela/"; + pub const LEELA_PLANES : u8 = 72; + pub const LEELA_RULESET : str = "classic"; + + // ---- The tools ------------------------------------------------------------------------ + pub const TOOL_START : str = "crm_duet"; + pub const TOOL_STATUS : str = "crm_duet_status"; + pub const TOOL_CALLER : str = "owner"; // requireOwner + pub const BUYER_MUST_BE_SELLER : bool = true; // row in tg_sessions + pub const BUYER_MAY_BE_OWNER : bool = false; + pub const RUNS_IN_BACKGROUND : bool = true; // start returns at once; status reads the run + pub const TURNS_DEFAULT : u8 = 4; // seller+buyer pairs + pub const TURNS_MAX : u8 = 8; + pub const SELLER_SPEAKS_FIRST : bool = true; + pub const SELLER_SURFACE : str = "business"; + pub const BUYER_TURN_IS_PLAIN_COMPLETION : bool = true; // no tools on the buyer's side + pub const DRY_RUN_SENDS : bool = false; // dry_run: agents talk, Telegram receives nothing + pub const REPORT_TO_OWNER_SAVED : bool = true; // final report from the owner's session to "me" + pub const RETURNS_SESSION : bool = false; + + // ---- Why the seller opens ------------------------------------------------------------- + pub const BUSINESS_BOT_TAKEOVER_MIN : u8 = 30; // OWNER_TAKEOVER_MS in businessBotService.ts + + // ---- Coverage ----------------------------------------------------------------------- + pub const PAID_TOOLS : u8 = 5; // image_generate image_edit audio_generate video_generate reel_render + pub const PAID_PER_REPLY_SOFT : u8 = 1; + pub const PAID_PER_RUN_SOFT : u8 = 3; + pub const PAID_CAP_IS_HARD : bool = false; + pub const MEDIA_FORWARDED : bool = true; // a tool result with done=true and an http url is sent as a file + + // ---- Honesty of the seller line (duet-mtzyg2t6, 2026-09-13) --------------------------- + // Turn 0 of a dry run said "I already built a trial reel in your style and am preparing + // it for publication" -- the only tools called were crm_client_profile and + // crm_lead_context, no reel existed. promisesFile() catches "I am sending the file"; + // it does not catch "the work is done". A claim of finished work is honest only when + // the same turn called a producing tool or forwarded media. + pub const CLAIMED_WORK_NEEDS_TOOL : bool = true; + pub const CLAIM_CHECK_CORRECTIONS : u8 = 1; // one rewrite round, as the voice check; the second miss is sent and reported + pub const CLAIM_MISS_IS_VIOLATION : bool = true; // both misses land in violations, the corrected one marked as rewritten + + // ---- State of a run that broke off (same run) ---------------------------------------- + // Turn 2: every provider answered with a rate limit, the seller produced no text, the + // loop broke and the run was stored as done with 3 of 8 lines and no error. The + // dashboard showed "finished, 0 violations". A run that did not play every turn is + // failed, and the turn's error is the run's error. + pub const ABORTED_RUN_STATE : str = "failed"; + pub const ABORTED_RUN_KEEPS_ERROR : bool = true; + pub const DONE_MEANS_ALL_LINES : bool = true; // done only when the transcript has turns * 2 lines + pub const RUN_ERROR_SHOWN_ON_DASHBOARD : bool = true; // crm_duet_runs returns error; the client dashboard prints it + + // ---- One pause and one retry on a provider limit (duet-mu00klri, 2026-09-13) ---------- + // Third run of the day to die on the same wall: every provider answered with a limit + // ("request limit exceeded" -- 429 -- from z.ai twice, "Worker local total request limit + // reached (16/16)" from NVIDIA), the seller had already called five free tools and + // produced no text. A limit is temporary; a seller turn that hits one waits once and + // plays the turn again from the same history. Anything else (bad key, no balance, + // unknown model) is not retried -- waiting would not change the answer. + pub const SELLER_RETRY_ON_LIMIT : u8 = 1; // one retry per seller turn, never more + pub const SELLER_RETRY_PAUSE_MS : u32 = 30000; + pub const RETRY_ONLY_WITHOUT_PAID_CALL : bool = true; // a turn that already paid for a generation is not replayed + pub const RETRY_NOTED_IN_TRANSCRIPT : bool = true; // the transcript line keeps `retried: ""` + pub const LIMIT_MARKERS : str = "429|limit|ResourceExhausted|too many requests"; // case-insensitive; "limit" covers "rate limit" and "limit reached" + pub const LIMIT_MARKER_RU_DIAGNOSE : bool = true; // provider.ts diagnose() renders 429 in Russian ("... limit zaprosov"); that word is matched too + + // ---- Discovery gate (duet-mu027xqr, 2026-09-14) ----------------------------------------- + // First run to play all 8 lines. The seller's line 0 opened with a paid reel_render + // (70 s, one token) and "the same style you liked" -- nothing had been shown or liked; + // the buyer caught it, the seller apologised on line 2. The brief said "first 1-2 lines + // are discovery only"; the model did not hold it. The gate is in code: on the first + // DISCOVERY_SELLER_TURNS seller turns the paid tools are not offered to the model and a + // call that arrives anyway is refused by the dispatcher; a familiarity claim gets one + // rewrite, as the claim check, and both misses are violations. + pub const DISCOVERY_SELLER_TURNS : u8 = 2; // seller turns 0 and 1 (transcript lines 0 and 2) + pub const DISCOVERY_HIDES_PAID_TOOLS : bool = true; // toOpenAITools does not list them on those turns + pub const DISCOVERY_REFUSES_PAID_CALL : bool = true; // a paid call on those turns answers with an error, no handler runs, nothing is spent + pub const FAMILIARITY_MARKERS_RU : str = "ponravil|dogovar|dogovoril|kak vy prosili|po vashej pros'be|obsuzhdali|kak my reshili"; // transliterated; the code holds the Cyrillic regex + pub const FAMILIARITY_CORRECTIONS : u8 = 1; + pub const FAMILIARITY_MISS_IS_VIOLATION : bool = true; + + // ---- The seller's voice (same run) ------------------------------------------------------ + // Line 2 "ya ne videl" (masculine), line 4 "ya zadavala ... sama ... ne videla" (feminine): + // the seller writes for the owner, Dmitrii, and the brief now says so. A feminine + // first-person past form in a seller line is reported as a voice flag, not rewritten. + pub const SELLER_GENDER : str = "m"; + pub const SELLER_GENDER_IN_BRIEF : bool = true; + pub const GENDER_SLIP_IS_FLAG_ONLY : bool = true; + + // ---- Negation in the stop-list, and the hook (same run) --------------------------------- + // Line 6 "bez obeshchanij i bez predskazanij" was flagged for "predskaz": a claim word + // under negation is not a claim. The voice check skips a CLAIM word preceded within two + // words by a negation (bez / ne / net / nikakikh / ni / nikogda). Pressure words and + // prices are not exempted -- "not today" still presses. The plan-6 hook "Ne sluchajno." + // reads as prophecy (client lesson of 2026-09-13); the brief forbids it by name and asks + // for a hook that names the square, not a verdict about the reader. + pub const CLAIM_NEGATION_EXEMPT : bool = true; + pub const NEGATION_WINDOW_WORDS : u8 = 2; + pub const PRESSURE_NEGATION_EXEMPT : bool = false; + pub const HOOK_NE_SLUCHAJNO_FORBIDDEN_IN_BRIEF : bool = true; + + // ---- Seen live ------------------------------------------------------------------------ + pub const DRY_RUN_SEEN_LIVE : bool = true; // duet-mtzyg2t6 started from /crm/435572800, 3 lines, nothing sent + pub const RUN_KILLED_BY_REDEPLOY_SEEN : bool = true; // duet-mtzy6kao: vibee-render redeployed 21 s after start, 0 lines, stays running until lost + pub const FAILED_STATE_SEEN_LIVE : bool = true; // duet-mu00klri: state failed, error "turn 0: ...", dashboard shows the failed badge and lines 1/8 + pub const CLAIM_CHECK_SEEN_LIVE : bool = false; // the seller never spoke in that run; unit tests only + pub const RETRY_SEEN_LIVE : bool = false; // a transcript line with `retried` from a real run is the evidence + pub const FULL_DRY_RUN_SEEN_LIVE : bool = true; // duet-mu027xqr: state done, 8/8 lines, 1 paid call, 0 violations, 1 voice flag + // duet-mu2qj57q (2026-09-15, vibee-render e2c4617, dry run, 4 turns, state done, 8/8 lines): seller + // lines 0 and 2 called only crm_client_profile, crm_lead_context, my_renders, providers_status and + // asked one question each; the single paid call (reel_render) came on line 4 after the buyer asked + // for an example; line 0 was rewritten once ("ssylka na nesushchestvuyushchuyu dogovorennost'"). + pub const DISCOVERY_GATE_SEEN_LIVE : bool = true; + pub const DISCOVERY_GATE_LIVE_RUN : str = "duet-mu2qj57q"; + pub const FAMILIARITY_REWRITE_SEEN_LIVE : bool = true; // same run, violations[0] is the turn 0 rewrite + pub const SELLER_GENDER_FIXED_SEEN_LIVE : bool = true; // same run, line 0 "Ya Dmitrij", line 6 "Rad" -- no feminine slip in 4 seller lines + // Open debt seen in the same run: line 4 says "the video is already in the chat as the next message" + // while dry_run sends nothing (media_sent 0). promisesFile() does not catch "already in the chat". + pub const DRY_RUN_DELIVERY_CLAIM_SEEN : bool = true; + pub const DRY_RUN_DELIVERY_CLAIM_FIXED : bool = false; + + // ---- Not claimed ---------------------------------------------------------------------- + pub const DUET_RAN_LIVE : bool = false; // crm_duet_status of a real (non-dry) run is the evidence + + struct Turn { + from_owner: bool, + index: u8, + } + + // The duet alternates and the seller holds every even index, starting at 0. + fn speaker_at(i: u8) -> Turn { + return Turn { from_owner: i % 2 == 0, index: i }; + } + + fn business_bot_silent(opened_by_owner: bool, minutes_since_owner_msg: u8) -> bool { + return opened_by_owner && minutes_since_owner_msg < BUSINESS_BOT_TAKEOVER_MIN; + } + + test "the seller opens and the business bot stays silent for the run" + assert(SELLER_SPEAKS_FIRST); + assert(speaker_at(0).from_owner); + assert(!speaker_at(1).from_owner); + assert(speaker_at(2).from_owner); + assert(business_bot_silent(true, 12)); + assert(!business_bot_silent(false, 12)); + assert(!business_bot_silent(true, 31)); + + test "the run is the owner's, needs a connected buyer who is not the owner, and returns no session" + assert(TOOL_CALLER == "owner"); + assert(BUYER_MUST_BE_SELLER); + assert(!BUYER_MAY_BE_OWNER); + assert(!RETURNS_SESSION); + assert(SELLER != BUYER); + + test "the paid cap is soft and says so" + assert(!PAID_CAP_IS_HARD); + assert(PAID_PER_REPLY_SOFT == 1); + assert(PAID_PER_RUN_SOFT == 3); + assert(PAID_TOOLS == 5); + + test "turns are bounded and the buyer side never calls tools" + assert(TURNS_DEFAULT <= TURNS_MAX); + assert(TURNS_MAX == 8); + assert(BUYER_TURN_IS_PLAIN_COMPLETION); + assert(RUNS_IN_BACKGROUND); + + // The state a finished loop stores: done only for a full transcript, failed otherwise. + fn state_after(lines: u8, turns: u8, errored: bool) -> str { + if errored || lines < turns * 2 { + return ABORTED_RUN_STATE; + } + return "done"; + } + + // Whether a failed seller turn is played again: once, only on a limit, only when no + // paid generation happened in the failed attempt. + fn retry_allowed(retries_done: u8, is_limit: bool, paid_calls_in_attempt: u8) -> bool { + return retries_done < SELLER_RETRY_ON_LIMIT && is_limit && paid_calls_in_attempt == 0; + } + + // Whether a paid tool is offered to the seller model on seller turn `seller_turn`. + fn paid_tool_offered(seller_turn: u8) -> bool { + return seller_turn >= DISCOVERY_SELLER_TURNS; + } + + // Whether a CLAIM-word hit counts, given how many words back the nearest negation stands + // (0 = none in the window). + fn claim_hit_counts(negation_distance: u8) -> bool { + return negation_distance == 0 || negation_distance > NEGATION_WINDOW_WORDS; + } + + // A claim of finished work in a turn that produced nothing is a miss. + fn claim_is_honest(claims_done_work: bool, producing_tool_called: bool, media_forwarded: bool) -> bool { + return !claims_done_work || producing_tool_called || media_forwarded; + } + + test "a run that broke off is failed and keeps the turn's error" + assert(ABORTED_RUN_STATE == "failed"); + assert(ABORTED_RUN_KEEPS_ERROR); + assert(DONE_MEANS_ALL_LINES); + assert(state_after(3, 4, true) == "failed"); + assert(state_after(3, 4, false) == "failed"); + assert(state_after(8, 4, false) == "done"); + assert(RUN_ERROR_SHOWN_ON_DASHBOARD); + + test "a claim of finished work needs a tool or a file in the same turn" + assert(CLAIMED_WORK_NEEDS_TOOL); + assert(CLAIM_CHECK_CORRECTIONS == 1); + assert(CLAIM_MISS_IS_VIOLATION); + assert(!claim_is_honest(true, false, false)); + assert(claim_is_honest(true, true, false)); + assert(claim_is_honest(true, false, true)); + assert(claim_is_honest(false, false, false)); + + test "a seller turn that hit a limit is retried once, without paid calls" + assert(SELLER_RETRY_ON_LIMIT == 1); + assert(SELLER_RETRY_PAUSE_MS == 30000); + assert(RETRY_ONLY_WITHOUT_PAID_CALL); + assert(RETRY_NOTED_IN_TRANSCRIPT); + assert(retry_allowed(0, true, 0)); + assert(!retry_allowed(1, true, 0)); + assert(!retry_allowed(0, false, 0)); + assert(!retry_allowed(0, true, 1)); + + test "the first two seller turns are discovery: no paid tools, no familiarity" + assert(DISCOVERY_SELLER_TURNS == 2); + assert(DISCOVERY_HIDES_PAID_TOOLS); + assert(DISCOVERY_REFUSES_PAID_CALL); + assert(!paid_tool_offered(0)); + assert(!paid_tool_offered(1)); + assert(paid_tool_offered(2)); + assert(FAMILIARITY_CORRECTIONS == 1); + assert(FAMILIARITY_MISS_IS_VIOLATION); + assert(SELLER_GENDER == "m"); + assert(SELLER_GENDER_IN_BRIEF); + assert(GENDER_SLIP_IS_FLAG_ONLY); + + test "a negated claim word is not a claim; pressure is never exempt" + assert(CLAIM_NEGATION_EXEMPT); + assert(!PRESSURE_NEGATION_EXEMPT); + assert(NEGATION_WINDOW_WORDS == 2); + assert(claim_hit_counts(0)); + assert(!claim_hit_counts(1)); + assert(!claim_hit_counts(2)); + assert(claim_hit_counts(3)); + assert(HOOK_NE_SLUCHAJNO_FORBIDDEN_IN_BRIEF); + + test "what was seen live is separated from what is not claimed" + assert(DRY_RUN_SEEN_LIVE); + assert(FULL_DRY_RUN_SEEN_LIVE); + assert(DISCOVERY_GATE_SEEN_LIVE); + assert(FAMILIARITY_REWRITE_SEEN_LIVE); + assert(SELLER_GENDER_FIXED_SEEN_LIVE); + assert(DRY_RUN_DELIVERY_CLAIM_SEEN); + assert(!DRY_RUN_DELIVERY_CLAIM_FIXED); + assert(RUN_KILLED_BY_REDEPLOY_SEEN); + assert(FAILED_STATE_SEEN_LIVE); + assert(!CLAIM_CHECK_SEEN_LIVE); + assert(!RETRY_SEEN_LIVE); + assert(!DUET_RAN_LIVE); + + test "content is for the real game and nothing live is claimed" + assert(BUYER_GAME == "Leela Chakra"); + assert(LEELA_PLANES == 72); + assert(LEELA_RULESET == "classic"); + assert(!DUET_RAN_LIVE); + assert(!DRY_RUN_SENDS); +} diff --git a/apps/website/public/t27/files/specs/automation/crm-lead-magnet.t27 b/apps/website/public/t27/files/specs/automation/crm-lead-magnet.t27 new file mode 100644 index 0000000000..390a325332 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/crm-lead-magnet.t27 @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/crm-lead-magnet.t27 -- the CRM lead magnet: a person's own Telegram +// photo redrawn as a vertical 9:16 story portrait and given away free, to show the AI +// assistant doing something for THEM before anything is sold. +// Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-deliver-tool.ts +// (the tool crm_deliver_photo, gift mode by default), src/kie-image.ts (editInputFor), +// src/agent/tools.ts (leadAvatarUrl: owner session first, bot API second), +// src/agent/billing-shared.ts (the op gpt_image_edit and its price). +// Consumer: the bot src/navigation/helpers/crmMenu.ts (keyboard width rule, prep label). +// Why a personal artefact: a generic lead magnet is content the person has seen before; a +// picture WITH THEM in it is opened, kept and forwarded. This spec fixes what the gift is, +// who pays for it, how the prompt is ordered so the face stays theirs, and how wide a +// keyboard row may be so the buttons that deliver it can be read on a phone. +// Claim status: the Kie GPT Image 2.5 contract and price are DOCUMENTED (docs.kie.ai and the +// public price list, both read 2026-09-13), NOT yet live-probed from this code base. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::crm_lead_magnet { + + pub const KIND : str = "automation"; + pub const ID : str = "crm-lead-magnet"; + pub const REPO : str = "999-multibots-telegraf"; + pub const VERSION : u8 = 1; + + // ---- What is made --------------------------------------------------------------------- + pub const TOOL : str = "crm_deliver_photo"; + pub const DEFAULT_MODE : str = "gift"; // gift=true unless the owner says gift=false + pub const SOURCE : str = "lead-avatar"; // the person's own profile photo, img2img + pub const FALLBACK : str = "text-to-image"; // when no photo is readable; said in `source` + pub const ASPECT_RATIO : str = "9:16"; + pub const STORY_PX : str = "1080x1920"; + pub const TEXT_IN_IMAGE : bool = false; // the caption carries the words, never the pixels + + // The story frame is covered by app UI. Nothing important lives in these bands, and the + // face sits in the central third of the frame. + pub const SAFE_ZONE_TOP_PCT : u8 = 14; + pub const SAFE_ZONE_BOTTOM_PCT : u8 = 35; + pub const SAFE_ZONE_SIDE_PCT : u8 = 6; + + // ---- Which model, and what it costs ----------------------------------------------- + pub const MODEL : str = "gpt-image-2-5-flare-image-to-image"; // Kie; sunburst = premium tier + pub const MODEL_ALT : str = "gpt-image-2-5-sunburst-image-to-image"; + pub const RESOLUTION : str = "1K"; + pub const KIE_INPUT_URLS_FIELD : str = "input_urls"; // nano-banana-edit uses image_urls + pub const COST_USD : str = "0.03"; // Kie price list, 1K, read 2026-09-13 + pub const OP : str = "gpt_image_edit"; // the billing op the OWNER is charged + pub const OP_TOKENS : u8 = 12; // ceil(0.03 * 2.0 / 0.005) + pub const PAYER : str = "owner"; + pub const RECIPIENT_CHARGED : bool = false; + pub const CHARGE_DEFERRED : bool = false; // the owner pays at generation, not at the press + pub const LIVE_RUN_STATUS : str = "not-yet-run"; // documented + priced, not probed + + // ---- The prompt order ------------------------------------------------------------- + // Identity FIRST, the owner's scene second, framing last. img2img models weigh the opening + // of the prompt most, so "the same person" goes before the scene, phrased as what to KEEP. + pub const PROMPT_ORDER : str = "identity,scene,framing"; + pub const IDENTITY_FIRST : bool = true; + + // ---- The caption ------------------------------------------------------------------ + pub const CAPTION_ONE_LINE : bool = true; + pub const CAPTION_HAS_NAME : bool = true; + pub const CAPTION_NAMES_MAKER : bool = true; // "my AI assistant made this" + pub const CAPTION_QUESTIONS : u8 = 1; // one soft question, the CTA + pub const CAPTION_HAS_PRICE : bool = false; + pub const CAPTION_HAS_LINK : bool = false; + pub const GIFTS_PER_PERSON : u8 = 1; // the second portrait is a paid service + + // ---- Nothing leaves without the owner's press -------------------------------------- + pub const SENT_WITHOUT_BUTTON : bool = false; + pub const TOUCH_KIND : str = "written"; // a gift is a touch, not a purchase + pub const TOUCH_NOTE_PREFIX : str = "gift"; // SELLER_NOTE_PREFIXES.gift in crm-notes.ts + + // ---- The keyboard width rule ----------------------------------------------------- + // Telegram shares a row's width between its buttons; three Russian labels with an emoji + // are cut on a phone, two are readable. Every CRM keyboard passes through `fit`. + pub const MAX_BUTTONS_PER_ROW : u8 = 2; + pub const HUB_ROWS : u8 = 2; // list + overview, then sweep + pub const PREP_LABEL_DELIVER : str = "gift photo 9:16"; + + struct Gift { + source: str, // SOURCE | FALLBACK + aspect_ratio: str, + model: str, + payer: str, + recipient_charged: bool, + text_in_image: bool, + } + + struct Caption { + one_line: bool, + has_name: bool, + names_maker: bool, + questions: u8, + has_price: bool, + has_link: bool, + } + + struct KeyboardRow { + buttons: u8, + } + + test "the gift is drawn from the person's own photo at 9:16 and the recipient pays nothing" + const g = Gift { source: "lead-avatar", aspect_ratio: "9:16", model: "gpt-image-2-5-flare-image-to-image", payer: "owner", recipient_charged: false, text_in_image: false }; + assert(g.source == SOURCE); + assert(g.aspect_ratio == ASPECT_RATIO); + assert(g.model == MODEL); + assert(g.payer == PAYER); + assert(!g.recipient_charged); + assert(!g.text_in_image); + + test "no readable photo falls back to text-to-image, still 9:16, still a gift" + const g = Gift { source: "text-to-image", aspect_ratio: "9:16", model: "image_generate", payer: "owner", recipient_charged: false, text_in_image: false }; + assert(g.source == FALLBACK); + assert(g.aspect_ratio == ASPECT_RATIO); + assert(!g.recipient_charged); + + test "the caption names the person and the maker, asks once, sells nothing" + const c = Caption { one_line: true, has_name: true, names_maker: true, questions: 1, has_price: false, has_link: false }; + assert(c.one_line); + assert(c.has_name); + assert(c.names_maker); + assert(c.questions == CAPTION_QUESTIONS); + assert(!c.has_price); + assert(!c.has_link); + + test "a row of three is split; a row of two stands" + const wide = KeyboardRow { buttons: 3 }; + const fine = KeyboardRow { buttons: 2 }; + assert(wide.buttons > MAX_BUTTONS_PER_ROW); + assert(fine.buttons <= MAX_BUTTONS_PER_ROW); + + test "the price is the documented Kie 1K price with the platform markup" + assert(OP_TOKENS == 12); + assert(LIVE_RUN_STATUS == "not-yet-run"); +} diff --git a/apps/website/public/t27/files/specs/automation/crm-sellers.t27 b/apps/website/public/t27/files/specs/automation/crm-sellers.t27 new file mode 100644 index 0000000000..5ba1428423 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/crm-sellers.t27 @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/crm-sellers.t27 -- WHO the CRM works for: every person with a connected +// Telegram account (a row in tg_sessions), not the one platform owner. +// Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/telegram-tools.ts +// (requireSeller: the gate the CRM tools ask), src/agent/crm-playbook.ts (the seller's +// playbook is shown to every seller), src/agent/crm-offer-tool.ts (an offer to yourself +// is refused against the CALLER, not the owner), src/agent/crm-sellers-tool.ts (the tool +// crm_sellers: the list, and on request a probe of each session). +// Consumer: the bot src/index.ts and src/inngest_app/functions/crm/crmProactiveSweep.ts +// (the proactive sweep runs once per seller, in turn). +// Measured 2026-09-13 on the render's Postgres (Railway Postgres-NFrq, tg_sessions): two rows, +// telegram_id 144022504 (@t27_dev, the owner) and 435572800 (@playom), session strings of +// 369 characters each, connected 2026-09-07 and 2026-09-09. The data tables were ALREADY +// scoped by the caller's id (crm_people.owner_id, crm_messages, crm_touches): only the gate, +// the playbook and the sweep still named one person. +// Why the gate is "has a session" and not "is in a list": a seller is whoever connected their +// own account in the app; the session is looked up by the caller's verified id, so a seller +// can only ever read and act on their own account. No second list can drift from that. +// Claim status: the two sessions EXIST and have the documented length; whether each still +// passes Telegram's checkAuthorization is what the probe of crm_sellers measures, not this spec. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::crm_sellers { + + pub const KIND : str = "automation"; + pub const ID : str = "crm-sellers"; + pub const REPO : str = "999-multibots-telegraf"; + pub const VERSION : u8 = 1; + + // ---- Who is a seller ------------------------------------------------------------ + pub const SELLER_IS : str = "connected-account"; // a row in tg_sessions for the caller's id + pub const SESSION_TABLE : str = "tg_sessions"; + pub const SESSION_KEY : str = "telegram_id"; // verified by signature or server key, never an argument + pub const OWNER_ALWAYS_ADMITTED : bool = true; // their session is the row or the env string + pub const OWNER_FALLBACK : str = "TELEGRAM_SESSION_STRING"; // only the platform owner, only when no row + pub const SELLERS_MEASURED : u8 = 2; // 2026-09-13, Postgres-NFrq + pub const SESSION_LEN_MEASURED : u16 = 369; + + // ---- The gate ------------------------------------------------------------------- + pub const GATE : str = "requireSeller"; // was requireOwner: one id from the environment + pub const GATE_READS_SESSION : bool = true; + pub const REFUSAL_NAMES_FIX : bool = true; // "connect your account in the app", not "owner only" + pub const DATA_SCOPED_BY_CALLER : bool = true; // owner_id = the caller's id in every CRM table + + // ---- What every seller gets ----------------------------------------------------- + pub const PLAYBOOK_FOR : str = "every-seller"; // was: the owner only + pub const SELF_OFFER_CHECK : str = "caller"; // an offer to your own id is refused; the owner's id is not special + pub const LIST_TOOL : str = "crm_sellers"; + pub const LIST_TOOL_CALLER : str = "owner"; // who may list: the platform owner (the bot calls as the owner) + pub const LIST_TOOL_PROBE : bool = true; // probe=true opens each session and asks checkAuthorization + pub const LIST_TOOL_RETURNS_SESSION : bool = false; // never the string, never its prefix + + // ---- The proactive sweep -------------------------------------------------------- + pub const SWEEP_PER_SELLER : bool = true; // one tick runs the sweep for each seller, in turn + pub const SWEEP_SOURCE_ENV : str = "CRM_PROACTIVE_OWNERS"; // comma list; when set, the list + pub const SWEEP_SOURCE_TOOL : str = "crm_sellers"; // else the render's list, as the owner + pub const SWEEP_SOURCE_FALLBACK : str = "CRM_PROACTIVE_OWNER"; // else the one id, as before + pub const SWEEP_CONCURRENCY : u8 = 1; + pub const PLAN_PER_SELLER : bool = true; // the daily plan goes to each seller's own chat + + // ---- Not claimed ---------------------------------------------------------------- + pub const SESSIONS_PROBED : bool = false; // existence measured; liveness is the probe's job + pub const CARRIER_BOT_STARTED_BY_EVERY_SELLER : bool = false; // a seller who never opened the carrier bot gets no card + + struct Seller { + telegram_id: str, + has_session: bool, + is_owner: bool, + } + + struct Gate { + reads_session: bool, + allows: bool, + } + + struct Sweep { + sellers: u8, + concurrency: u8, + } + + fn admits(s: Seller) -> bool { + return s.has_session || s.is_owner; + } + + test "a person with a connected account is a seller, owner or not" + const playom = Seller { telegram_id: "435572800", has_session: true, is_owner: false }; + const owner = Seller { telegram_id: "144022504", has_session: true, is_owner: true }; + assert(admits(playom)); + assert(admits(owner)); + + test "a person without a session is refused unless they are the owner with the env fallback" + const stranger = Seller { telegram_id: "1", has_session: false, is_owner: false }; + const owner_env = Seller { telegram_id: "144022504", has_session: false, is_owner: true }; + assert(!admits(stranger)); + assert(admits(owner_env)); + + test "the gate reads the session table, and the refusal names the fix" + const g = Gate { reads_session: true, allows: false }; + assert(g.reads_session == GATE_READS_SESSION); + assert(REFUSAL_NAMES_FIX); + assert(DATA_SCOPED_BY_CALLER); + + test "the sweep runs for each seller, one at a time" + const s = Sweep { sellers: 2, concurrency: 1 }; + assert(s.sellers == SELLERS_MEASURED); + assert(s.concurrency == SWEEP_CONCURRENCY); + assert(SWEEP_PER_SELLER); + + test "the list tool never returns a session string and only the owner may call it" + assert(!LIST_TOOL_RETURNS_SESSION); + assert(LIST_TOOL_CALLER == "owner"); + assert(!SESSIONS_PROBED); +} diff --git a/apps/website/public/t27/files/specs/automation/inngest-probe-suite.t27 b/apps/website/public/t27/files/specs/automation/inngest-probe-suite.t27 new file mode 100644 index 0000000000..0b2f5a5c58 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/inngest-probe-suite.t27 @@ -0,0 +1,114 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/inngest-probe-suite.t27 -- safe probe of every served Inngest function +// of 999-multibots-telegraf, started by the admin command /inngest_probe in the bot. +// Host: 999-multibots-telegraf src/inngest_app/probe/probeSuite.ts (the logic), +// src/inngest_app/probe/inngestProbeClient.ts (the one GraphQL mutation), +// src/commands/inngestProbeCommand.ts (the Telegram command). +// The per-function expectation lives in the manifest (probe_expect) and on each +// function card in specs/functions/.t27 (GUARD, SAFE_PROBE); this spec states the +// suite: what is sent, how a run is found, how a verdict is reached, and what may not happen. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::inngest_probe_suite { + + pub const KIND : str = "automation"; + pub const ID : str = "inngest-probe-suite"; + pub const REPO : str = "999-multibots-telegraf"; + pub const VERSION : u8 = 1; + + // How the suite is started and by whom. + pub const COMMAND : str = "/inngest_probe"; + pub const COMMAND_STATUS : str = "/inngest_probe status"; + pub const ACTOR : str = "admin"; // ADMIN_IDS only; a stranger is refused + pub const CONFIRM : str = "inline-button"; // nothing is invoked until the admin presses it + pub const CONCURRENCY : u8 = 1; // one suite at a time, in-process lock + + // What is sent. The payload is the manifest's safe_probe object with the safe-mode + // flag forced on; a safe_probe that tries to set the flag to false is overridden. + pub const SAFE_FLAG : str = "e2e_test"; + pub const TRANSPORT : str = "inngest-gql:invokeFunction"; + pub const SLUG_FORMAT : str = "-"; + pub const APP_ID : str = "telegram-bot-client"; + pub const ORDER : str = "manifest order, sequential"; + + // How the run of an invoke is found: runs of that functionID queued after the invoke + // (minus a small skew) whose eventName starts with the invoke prefix. A cron tick of the + // same function in the window is not the probe's run and is ignored. + pub const RUN_LOOKBACK_MS : u32 = 5000; + pub const INVOKED_EVENT_PREFIX : str = "inngest/function.invoked"; + pub const POLL_MS : u32 = 3000; + pub const BUDGET_MS : u32 = 120000; // per probe; after it the verdict is timeout + + // The verdict, per probe. match is the only good one. + // FAILED-at-guard : run FAILED and the first FAILED step is the card's GUARD + // (GUARD "none"/"unknown": any FAILED run matches) + // COMPLETED : run COMPLETED + // skip : not invoked (no safe payload or paid path), reported as skipped + pub const EXPECTATIONS : [3]str = ["FAILED-at-guard", "COMPLETED", "skip"]; + pub const VERDICTS : [5]str = ["match", "mismatch", "timeout", "invoke-error", "skipped"]; + pub const SUITE_OK_IFF : str = "no mismatch, no timeout, no invoke-error"; + + // What may not happen while the suite runs. These are properties of the functions' + // safe-mode branches (safeMode.ts), which the suite relies on and the report checks by + // expecting FAILED at the guard or a COMPLETED that reached only ADMIN_CHAT_ID. + pub const FORBIDDEN_SIDE_EFFECTS : [4]str = ["charges-balance", "paid-api", "messages-user", "messages-owners"]; + pub const ALLOWED_RECIPIENT : str = "ADMIN_CHAT_ID"; + + // Where the count of probes comes from: every manifest entry with control "spec+code". + // At main @251571c that is 28 = 17 FAILED-at-guard + 11 COMPLETED + 0 skip. + pub const PLANNED_AT_251571C : u8 = 28; + pub const EXPECT_FAILED_AT_GUARD_AT_251571C : u8 = 17; + pub const EXPECT_COMPLETED_AT_251571C : u8 = 11; + + // Honesty. The suite has not been run against production from this spec's commit: the + // GraphQL endpoint is private to the Railway network, so the first real run happens + // after deploy, from the admin chat. The unit tests drive the orchestrator with a fake + // Inngest (src/__tests__/inngest/probeSuite.test.ts, src/__tests__/bot/inngestProbeCommand.test.ts). + pub const LIVE_RUN_STATUS : str = "not-yet-run"; + + struct ProbePlan { + id: str, + slug: str, + expect: str, // one of EXPECTATIONS + guard: str, + payload_json: str, // always contains "e2e_test": true + } + + struct ProbeResult { + id: str, + verdict: str, // one of VERDICTS + run_id: str, + status: str, // Inngest run status, "" when no run + failed_step: str, // "" when none + } + + struct ProbeSuiteReport { + version: u8, + planned: u32, + match: u32, + mismatch: u32, + timeout: u32, + invoke_error: u32, + skipped: u32, + ok: bool, + } + + test "guard failure is the good outcome for a guarded function" + const plan = ProbePlan { id: "neuro-image-generate", slug: "telegram-bot-client-neuro-image-generate", expect: "FAILED-at-guard", guard: "validate-input", payload_json: "{\"e2e_test\":true}" }; + const result = ProbeResult { id: "neuro-image-generate", verdict: "match", run_id: "r1", status: "FAILED", failed_step: "validate-input" }; + assert(plan.expect == "FAILED-at-guard"); + assert(result.failed_step == plan.guard); + assert(result.verdict == "match"); + + test "a guarded function that completed on a probe is a mismatch" + const result = ProbeResult { id: "neuro-image-generate", verdict: "mismatch", run_id: "r2", status: "COMPLETED", failed_step: "" }; + assert(result.status == "COMPLETED"); + assert(result.verdict == "mismatch"); + + test "the suite is ok only when every probe matched or was skipped" + const good = ProbeSuiteReport { version: 1, planned: 28, match: 28, mismatch: 0, timeout: 0, invoke_error: 0, skipped: 0, ok: true }; + const bad = ProbeSuiteReport { version: 1, planned: 28, match: 27, mismatch: 1, timeout: 0, invoke_error: 0, skipped: 0, ok: false }; + assert(good.ok); + assert(!bad.ok); + assert(good.match + good.mismatch + good.timeout + good.invoke_error + good.skipped == good.planned); +} diff --git a/apps/website/public/t27/files/specs/automation/leela-agent-link.t27 b/apps/website/public/t27/files/specs/automation/leela-agent-link.t27 new file mode 100644 index 0000000000..b860a56087 --- /dev/null +++ b/apps/website/public/t27/files/specs/automation/leela-agent-link.t27 @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/automation/leela-agent-link.t27 -- HOW a connected seller is linked to her editorial +// agent in the Leela bot (@leela_chakra_ai_bot), and WHY the agent answered nobody before. +// Host (the agent side): gHashTag/leela apps/bot/src/editorial.ts -- commands /agent_claim, +// /agent_claims, /agent_approve <32-hex id>, /agent_revoke, /agent; owners come from +// LEELA_AGENT_OWNERS (else LEELA_STARS_OPERATORS); the target username is +// LEELA_AGENT_USERNAME (default "playom"); store editorial-store.ts on the LEELA_DB volume. +// Host (the hand side): 999-multibots-telegraf apps/vibee-editor/render/src/agent/ +// crm-agent-link-tool.ts -- the owner-only tool crm_agent_link: as the claimant's OWN +// connected session it sends /agent_claim to the bot and reads the reply; as the owner's +// session it sends /agent_claims and /agent_approve ; as the claimant again it sends +// /agent and returns the status. Sessions come from tg_sessions by id (crm-sellers.t27). +// Measured 2026-09-13 on Railway (project Leela, service leela, production): 17 variables, none +// of LEELA_AGENT_OWNERS / LEELA_STARS_OPERATORS / LEELA_AGENT_USERNAME / LEELA_999_AGENT_KEY was +// set. With no trusted owner, store.approve() returns false for every claim, so no account +// could ever hold the content-administrator role: "the agent does not answer in the bot" was +// not a model fault but an empty owner list. The same day LEELA_AGENT_OWNERS=144022504 was +// added through the Railway UI (owner-confirmed) and the service redeployed. +// Free text: until leela PR "editorial free text" the editorial agent answered ONLY slash +// commands; free text in the private chat went to the game companion. After it, an approved +// administrator who is not seated at a game table talks to the editorial agent in free text. +// Claim status: the variable is set and the tool is written; whether the handshake SUCCEEDED +// live is what the tool's returned transcript shows, not this spec. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module automation::leela_agent_link { + + pub const KIND : str = "automation"; + pub const ID : str = "leela-agent-link"; + pub const REPO : str = "999-multibots-telegraf"; + pub const AGENT_REPO : str = "leela"; + pub const VERSION : u8 = 1; + + // ---- The two accounts and the bot ----------------------------------------------- + pub const BOT : str = "leela_chakra_ai_bot"; + pub const CLAIMANT : str = "435572800"; // @playom: the content administrator + pub const CLAIMANT_USERNAME : str = "playom"; // must equal LEELA_AGENT_USERNAME (default) + pub const APPROVER : str = "144022504"; // @t27_dev: the trusted owner + pub const OWNERS_ENV : str = "LEELA_AGENT_OWNERS"; + pub const OWNERS_SET_ON : str = "2026-09-13"; // Railway UI, confirmed by the owner + pub const OWNERS_BEFORE : u8 = 0; // measured: neither owners env nor operators env + + // ---- The handshake --------------------------------------------------------------- + pub const CLAIM_CMD : str = "/agent_claim"; + pub const LIST_CMD : str = "/agent_claims"; + pub const APPROVE_CMD : str = "/agent_approve"; // + " <32-hex id>" + pub const STATUS_CMD : str = "/agent"; + pub const CLAIM_ID_HEX : u8 = 32; + pub const CLAIM_TTL_HOURS : u8 = 24; + pub const GRANT_DAYS : u8 = 30; + pub const STEPS : u8 = 4; // claim (claimant), list (owner), approve (owner), status (claimant) + + // ---- The tool on the render ------------------------------------------------------ + pub const TOOL : str = "crm_agent_link"; + pub const TOOL_CALLER : str = "owner"; // requireOwner: sends from a second person's session + pub const BOTH_MUST_BE_SELLERS : bool = true; // both ids have rows in tg_sessions + pub const CLAIMANT_IS_ARGUMENT : bool = true; // the owner names whom to link; the owner is the caller + pub const REPLY_WAIT_MS : u16 = 4000; // after each command, before reading the bot's last messages + pub const REPLIES_READ : u8 = 3; + pub const RETURNS_SESSION : bool = false; // never the string, never a prefix + pub const RETURNS_TRANSCRIPT : bool = true; // what was sent and what the bot answered, per step + pub const CONFIRMED_BEFORE_RUN : bool = true; // the owner confirms each run in the chat + + // ---- Free text in the bot (leela side) ---------------------------------------------- + pub const FREE_TEXT_FOR_ADMIN : bool = true; + pub const FREE_TEXT_WHEN_SEATED : bool = false; // at a game table, words are still game reports + pub const FREE_TEXT_HISTORY_TURNS : u8 = 12; + + // ---- Not claimed ---------------------------------------------------------------- + pub const HANDSHAKE_RAN_LIVE : bool = false; // the tool's transcript is the evidence, not this file + pub const BRIDGE_999_CONFIGURED : bool = false; // LEELA_999_AGENT_KEY is absent on the Leela service + + struct Claim { + claimant: str, + approver: str, + pending: bool, + expired: bool, + claimant_is_owner: bool, + approver_is_owner: bool, + } + + // Mirrors editorial-store.ts approve(): every clause must hold. + fn approves(c: Claim) -> bool { + return c.pending && !c.expired && c.approver_is_owner && !c.claimant_is_owner && c.claimant != c.approver; + } + + test "playom's claim is approved by the owner once the owner is trusted" + const c = Claim { claimant: "435572800", approver: "144022504", pending: true, expired: false, claimant_is_owner: false, approver_is_owner: true }; + assert(approves(c)); + + test "with no trusted owner nothing is ever approved -- the measured state before 2026-09-13" + const c = Claim { claimant: "435572800", approver: "144022504", pending: true, expired: false, claimant_is_owner: false, approver_is_owner: false }; + assert(!approves(c)); + assert(OWNERS_BEFORE == 0); + + test "an owner cannot approve himself and a claim cannot outlive its day" + const self_claim = Claim { claimant: "144022504", approver: "144022504", pending: true, expired: false, claimant_is_owner: true, approver_is_owner: true }; + const stale = Claim { claimant: "435572800", approver: "144022504", pending: true, expired: true, claimant_is_owner: false, approver_is_owner: true }; + assert(!approves(self_claim)); + assert(!approves(stale)); + assert(CLAIM_TTL_HOURS == 24); + + test "the tool is the owner's, needs both sessions, and never returns one" + assert(TOOL_CALLER == "owner"); + assert(BOTH_MUST_BE_SELLERS); + assert(!RETURNS_SESSION); + assert(RETURNS_TRANSCRIPT); + assert(STEPS == 4); + + test "free text reaches the editorial agent only off the game table, and nothing live is claimed" + assert(FREE_TEXT_FOR_ADMIN); + assert(!FREE_TEXT_WHEN_SEATED); + assert(!HANDSHAKE_RAN_LIVE); + assert(!BRIDGE_999_CONFIGURED); +} diff --git a/apps/website/public/t27/files/specs/automation/wrapup-auto.t27 b/apps/website/public/t27/files/specs/automation/wrapup-auto.t27 index 6421ab67e4..41a9b13643 100644 --- a/apps/website/public/t27/files/specs/automation/wrapup-auto.t27 +++ b/apps/website/public/t27/files/specs/automation/wrapup-auto.t27 @@ -25,7 +25,7 @@ module automation::wrapup { struct WrapUpResult { notebook_id: str, - notebook_name: str, // "t27 #NNN -- title" + notebook_name: str, // "t27 #NNN — title" source_id: str, uploaded_at: u64, } @@ -46,5 +46,5 @@ module automation::wrapup { const (result, err) = wrapup_run(input); assert(err == ErrorCode::Success); assert(result.source_id.len > 0); - assert(result.notebook_name == "t27 #350 -- NotebookLM Integration"); + assert(result.notebook_name == "t27 #350 — NotebookLM Integration"); } diff --git a/apps/website/public/t27/files/specs/base/ops.t27 b/apps/website/public/t27/files/specs/base/ops.t27 index b69dd54018..fc42be936e 100644 --- a/apps/website/public/t27/files/specs/base/ops.t27 +++ b/apps/website/public/t27/files/specs/base/ops.t27 @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 -; ops.t27 -- Trit Operations for t27 Language +; ops.t27 — Trit Operations for t27 Language ; Trit arithmetic: multiply, add, carry, comparison -; phi^2 + 1/phi^2 = 3 | TRINITY +; φ² + 1/φ² = 3 | TRINITY module tritype-ops; @@ -23,8 +23,8 @@ pub const Trit = enum(i8) { // ============================================================================ // Lookup Tables // ============================================================================ -// Table size: 9 entries (3*3 for each operand) -// Indexed as: table[(a+1)*3 + (b+1)] where a,b in {-1,0,+1} +// Table size: 9 entries (3×3 for each operand) +// Indexed as: table[(a+1)*3 + (b+1)] where a,b ∈ {-1,0,+1} // trit_multiply lookup table // -1 0 +1 @@ -49,21 +49,21 @@ pub const carry_table : [9]i8 = [1, 0, 0, 0, 0, 0, 0, 0, -1]; // Functions // ============================================================================ -// trit_multiply_table(a: Trit, b: Trit) -> Trit +// trit_multiply_table(a: Trit, b: Trit) → Trit // Fast trit multiplication using lookup table pub fn trit_multiply_table(a: Trit, b: Trit) Trit { const idx = (@intFromEnum(a) + 1) * 3 + (@intFromEnum(b) + 1); return @as(Trit, @enumFromInt(mult_table[idx])); } -// trit_add_table(a: Trit, b: Trit) -> Trit +// trit_add_table(a: Trit, b: Trit) → Trit // Fast trit addition using lookup table pub fn trit_add_table(a: Trit, b: Trit) Trit { const idx = (@intFromEnum(a) + 1) * 3 + (@intFromEnum(b) + 1); return @as(Trit, @enumFromInt(add_table[idx])); } -// trit_carry_table(a: Trit, b: Trit) -> Trit +// trit_carry_table(a: Trit, b: Trit) → Trit // Fast carry computation using lookup table // Returns carry value for trit addition: -1 if a+b < -1, +1 if a+b > +1, else 0 pub fn trit_carry_table(a: Trit, b: Trit) Trit { @@ -77,7 +77,7 @@ pub struct AddResult { carry_out : Trit, } -// trit_add_with_carry(a: Trit, b: Trit, carry_in: Trit) -> AddResult +// trit_add_with_carry(a: Trit, b: Trit, carry_in: Trit) → AddResult // Full ternary addition with carry propagation // result = a + b + carry_in // carry_out = -1 if result < -1, +1 if result > +1, else 0 @@ -115,7 +115,7 @@ pub fn trit_add_with_carry(a: Trit, b: Trit, carry_in: Trit) AddResult { return AddResult{ .result = result, .carry_out = carry }; } -// trit_compare(a: Trit, b: Trit) -> i8 +// trit_compare(a: Trit, b: Trit) → i8 // Returns: -1 if a < b, 0 if a == b, +1 if a > b pub fn trit_compare(a: Trit, b: Trit) i8 { if (a == b) { @@ -127,7 +127,7 @@ pub fn trit_compare(a: Trit, b: Trit) i8 { } } -// trit_negate(a: Trit) -> Trit +// trit_negate(a: Trit) → Trit // Returns -a (trit negation) // -(-1) = +1, -(0) = 0, -(+1) = -1 pub fn trit_negate(a: Trit) Trit { @@ -138,38 +138,38 @@ pub fn trit_negate(a: Trit) Trit { }; } -// trit_abs(a: Trit) -> Trit +// trit_abs(a: Trit) → Trit // Returns |a| (absolute value, always 0 or +1) // |-1| = +1, |0| = 0, |+1| = +1 pub fn trit_abs(a: Trit) Trit { return if (a == .neg) .pos else a; } -// trit_min(a: Trit, b: Trit) -> Trit +// trit_min(a: Trit, b: Trit) → Trit // Returns min(a, b) pub fn trit_min(a: Trit, b: Trit) Trit { return if (a == .neg or (a == .zero and b == .pos)) a else b; } -// trit_max(a: Trit, b: Trit) -> Trit +// trit_max(a: Trit, b: Trit) → Trit // Returns max(a, b) pub fn trit_max(a: Trit, b: Trit) Trit { return if (a == .pos or (a == .zero and b == .neg)) a else b; } -// trit_subtract(a: Trit, b: Trit) -> Trit +// trit_subtract(a: Trit, b: Trit) → Trit // Returns a - b using a + (-b) pub fn trit_subtract(a: Trit, b: Trit) Trit { return trit_add_table(a, trit_negate(b)); } -// trit_sign(a: Trit) -> i8 +// trit_sign(a: Trit) → i8 // Returns sign of a: -1 if negative, 0 if zero, +1 if positive pub fn trit_sign(a: Trit) i8 { return @intFromEnum(a); } -// trit_clamp(a: Trit, min_val: Trit, max_val: Trit) -> Trit +// trit_clamp(a: Trit, min_val: Trit, max_val: Trit) → Trit // Clamps a to [min_val, max_val] range (requires min_val <= max_val) pub fn trit_clamp(a: Trit, min_val: Trit, max_val: Trit) Trit { if (trit_compare(a, min_val) < 0) return min_val; @@ -177,61 +177,61 @@ pub fn trit_clamp(a: Trit, min_val: Trit, max_val: Trit) Trit { return a; } -// trit_is_negative(a: Trit) -> bool +// trit_is_negative(a: Trit) → bool // Returns true if a is -1 pub fn trit_is_negative(a: Trit) bool { return a == .neg; } -// trit_is_zero(a: Trit) -> bool +// trit_is_zero(a: Trit) → bool // Returns true if a is 0 pub fn trit_is_zero(a: Trit) bool { return a == .zero; } -// trit_is_positive(a: Trit) -> bool +// trit_is_positive(a: Trit) → bool // Returns true if a is +1 pub fn trit_is_positive(a: Trit) bool { return a == .pos; } -// trit_equal(a: Trit, b: Trit) -> bool +// trit_equal(a: Trit, b: Trit) → bool // Returns true if a == b pub fn trit_equal(a: Trit, b: Trit) bool { return a == b; } -// trit_not_equal(a: Trit, b: Trit) -> bool +// trit_not_equal(a: Trit, b: Trit) → bool // Returns true if a != b pub fn trit_not_equal(a: Trit, b: Trit) bool { return a != b; } -// trit_lt(a: Trit, b: Trit) -> bool +// trit_lt(a: Trit, b: Trit) → bool // Returns true if a < b (less than) pub fn trit_lt(a: Trit, b: Trit) bool { return trit_compare(a, b) < 0; } -// trit_le(a: Trit, b: Trit) -> bool +// trit_le(a: Trit, b: Trit) → bool // Returns true if a <= b (less than or equal) pub fn trit_le(a: Trit, b: Trit) bool { return trit_compare(a, b) <= 0; } -// trit_gt(a: Trit, b: Trit) -> bool +// trit_gt(a: Trit, b: Trit) → bool // Returns true if a > b (greater than) pub fn trit_gt(a: Trit, b: Trit) bool { return trit_compare(a, b) > 0; } -// trit_ge(a: Trit, b: Trit) -> bool +// trit_ge(a: Trit, b: Trit) → bool // Returns true if a >= b (greater than or equal) pub fn trit_ge(a: Trit, b: Trit) bool { return trit_compare(a, b) >= 0; } -// trit_multiply_with_carry(a: Trit, b: Trit, carry_in: Trit) -> MultiplyResult +// trit_multiply_with_carry(a: Trit, b: Trit, carry_in: Trit) → MultiplyResult // Full ternary multiplication with carry propagation // result = a * b + carry_in // carry_out = -1 if result < -1, +1 if result > +1, else 0 @@ -243,15 +243,15 @@ pub fn trit_multiply_with_carry(a: Trit, b: Trit, carry_in: Trit) AddResult { return trit_add_with_carry(product, carry_in, .zero); } -// trit_reverse(a: Trit) -> Trit +// trit_reverse(a: Trit) → Trit // Returns the multiplicative inverse of a in balanced ternary // In balanced ternary: 1^-1 = -1, -1^-1 = -1, 0 has no inverse // Returns zero for zero (no inverse for zero) pub fn trit_reverse(a: Trit) Trit { - return if (a == .zero) .zero else a; // In balanced ternary, 1 * 1 = 1, -1 * -1 = 1, so reverse of +/-1 is +/-1 + return if (a == .zero) .zero else a; // In balanced ternary, 1 * 1 = 1, -1 * -1 = 1, so reverse of ±1 is ±1 } -// trit_multiply_by_power_of_two(a: Trit, power: u8) -> Trit +// trit_multiply_by_power_of_two(a: Trit, power: u8) → Trit // Multiplies a by 2^n using shifts in balanced ternary // Equivalent to adding a to itself n times (for small n) pub fn trit_multiply_by_power_of_two(a: Trit, power: u8) Trit { @@ -269,8 +269,8 @@ pub fn trit_multiply_by_power_of_two(a: Trit, power: u8) Trit { return result; } -// trit_power(a: Trit, n: u8) -> Trit -// Raise trit to a small power (n in {0, 1, 2, 3}) +// trit_power(a: Trit, n: u8) → Trit +// Raise trit to a small power (n ∈ {0, 1, 2, 3}) // trit_power(x, 0) = +1 (identity element for multiplication) // trit_power(x, 1) = x // trit_power(x, 2) = x * x @@ -278,7 +278,7 @@ pub fn trit_multiply_by_power_of_two(a: Trit, power: u8) Trit { // For larger powers, the result cycles based on trit properties pub fn trit_power(a: Trit, n: u8) Trit { if (n == 0) { - return .pos; // x^0 = 1 for any x != 0 + return .pos; // x^0 = 1 for any x ≠ 0 } if (n == 1) { return a; @@ -293,47 +293,47 @@ pub fn trit_power(a: Trit, n: u8) Trit { return if (n % 2 == 1) .neg else .pos; } -// trit_from_bool(b: bool) -> Trit -// Convert boolean to trit (true -> +1, false -> 0) +// trit_from_bool(b: bool) → Trit +// Convert boolean to trit (true → +1, false → 0) // Maps boolean logic to balanced ternary pub fn trit_from_bool(b: bool) Trit { return if (b) .pos else .zero; } -// trit_to_bool(a: Trit) -> bool -// Convert trit to boolean (+1 -> true, others -> false) +// trit_to_bool(a: Trit) → bool +// Convert trit to boolean (+1 → true, others → false) // Maps trit to binary boolean logic pub fn trit_to_bool(a: Trit) bool { return a == .pos; } -// trit_abs_diff(a: Trit, b: Trit) -> Trit +// trit_abs_diff(a: Trit, b: Trit) → Trit // Compute absolute difference between two trits // Returns 0 if equal, 1 if different (both positive) pub fn trit_abs_diff(a: Trit, b: Trit) Trit { return if (a == b) .zero else .pos; } -// trit_cond_swap(cond: Trit, a: Trit, b: Trit) -> Trit +// trit_cond_swap(cond: Trit, a: Trit, b: Trit) → Trit // Conditional swap: return b if cond is +1, else a // This is equivalent to trit_select but with swapped semantics pub fn trit_cond_swap(cond: Trit, a: Trit, b: Trit) Trit { return if (cond == .pos) b else a; } -// trit_is_unit(a: Trit) -> bool +// trit_is_unit(a: Trit) → bool // Check if trit is a multiplicative unit (+1) pub fn trit_is_unit(a: Trit) bool { return a == .pos; } -// trit_is_identity(a: Trit) -> bool +// trit_is_identity(a: Trit) → bool // Check if trit is additive identity (0) pub fn trit_is_identity(a: Trit) bool { return a == .zero; } -// trit_is_negated(a: Trit, b: Trit) -> bool +// trit_is_negated(a: Trit, b: Trit) → bool // Check if b is the negation of a pub fn trit_is_negated(a: Trit, b: Trit) bool { return b == trit_negate(a); @@ -844,7 +844,7 @@ test "test_trit_multiply_by_power_of_two_identity" { } test "test_trit_power_zero_exponent" { - // Verify: x^0 = +1 for any x != 0 + // Verify: x^0 = +1 for any x ≠ 0 try std.testing.expectEqual(.pos, trit_power(.neg, 0)); try std.testing.expectEqual(.pos, trit_power(.pos, 0)); } @@ -878,22 +878,22 @@ test "test_trit_power_cube" { } test "test_trit_from_bool_true" { - // Verify: true -> +1 + // Verify: true → +1 try std.testing.expectEqual(.pos, trit_from_bool(true)); } test "test_trit_from_bool_false" { - // Verify: false -> 0 + // Verify: false → 0 try std.testing.expectEqual(.zero, trit_from_bool(false)); } test "test_trit_to_bool_positive" { - // Verify: +1 -> true + // Verify: +1 → true try std.testing.expect(trit_to_bool(.pos)); } test "test_trit_to_bool_non_positive" { - // Verify: 0 and -1 -> false + // Verify: 0 and -1 → false try std.testing.expect(!trit_to_bool(.zero)); try std.testing.expect(!trit_to_bool(.neg)); } @@ -913,7 +913,7 @@ test "test_trit_abs_diff_equal" { } test "test_trit_abs_diff_different" { - // Verify: |a - b| = 1 for a != b + // Verify: |a - b| = 1 for a ≠ b try std.testing.expectEqual(.pos, trit_abs_diff(.neg, .zero)); try std.testing.expectEqual(.pos, trit_abs_diff(.neg, .pos)); try std.testing.expectEqual(.pos, trit_abs_diff(.zero, .pos)); @@ -1285,6 +1285,7 @@ bench "bench_trit_multiply_table_latency" { for (0..1000) |_| { result = trit_multiply_table(.pos, .neg); } + _ = result; } bench "bench_trit_add_table_latency" { @@ -1295,6 +1296,7 @@ bench "bench_trit_add_table_latency" { for (0..1000) |_| { result = trit_add_table(.pos, .neg); } + _ = result; } bench "bench_trit_carry_table_latency" { @@ -1305,6 +1307,7 @@ bench "bench_trit_carry_table_latency" { for (0..1000) |_| { result = trit_carry_table(.pos, .pos); } + _ = result; } bench "bench_trit_add_with_carry_latency" { @@ -1315,6 +1318,7 @@ bench "bench_trit_add_with_carry_latency" { for (0..1000) |_| { result = trit_add_with_carry(.pos, .pos, .zero); } + _ = result; } bench "bench_trit_compare_latency" { @@ -1325,6 +1329,7 @@ bench "bench_trit_compare_latency" { for (0..1000) |_| { result = trit_compare(.pos, .neg); } + _ = result; } bench "bench_trit_min_max_latency" { @@ -1335,6 +1340,7 @@ bench "bench_trit_min_max_latency" { for (0..1000) |_| { result = trit_min(.pos, .neg); } + _ = result; } bench "bench_trit_lt_latency" { @@ -1345,6 +1351,7 @@ bench "bench_trit_lt_latency" { for (0..1000) |_| { result = trit_lt(.neg, .pos); } + _ = result; } bench "bench_trit_le_latency" { @@ -1355,6 +1362,7 @@ bench "bench_trit_le_latency" { for (0..1000) |_| { result = trit_le(.neg, .pos); } + _ = result; } bench "bench_trit_gt_latency" { @@ -1365,6 +1373,7 @@ bench "bench_trit_gt_latency" { for (0..1000) |_| { result = trit_gt(.pos, .neg); } + _ = result; } bench "bench_trit_ge_latency" { @@ -1375,6 +1384,7 @@ bench "bench_trit_ge_latency" { for (0..1000) |_| { result = trit_ge(.pos, .neg); } + _ = result; } bench "bench_trit_multiply_with_carry_latency" { @@ -1385,6 +1395,7 @@ bench "bench_trit_multiply_with_carry_latency" { for (0..1000) |_| { result = trit_multiply_with_carry(.pos, .pos, .zero); } + _ = result; } bench "bench_trit_reverse_latency" { @@ -1395,6 +1406,7 @@ bench "bench_trit_reverse_latency" { for (0..1000) |_| { result = trit_reverse(.pos); } + _ = result; } bench "bench_trit_multiply_by_power_of_two_latency" { @@ -1405,6 +1417,7 @@ bench "bench_trit_multiply_by_power_of_two_latency" { for (0..1000) |_| { result = trit_multiply_by_power_of_two(.pos, 1); } + _ = result; } bench "bench_trit_power_latency" { @@ -1415,6 +1428,7 @@ bench "bench_trit_power_latency" { for (0..1000) |_| { result = trit_power(.neg, 2); } + _ = result; } bench "bench_trit_from_bool_latency" { @@ -1425,6 +1439,7 @@ bench "bench_trit_from_bool_latency" { for (0..1000) |_| { result = trit_from_bool(true); } + _ = result; } bench "bench_trit_to_bool_latency" { @@ -1435,6 +1450,7 @@ bench "bench_trit_to_bool_latency" { for (0..1000) |_| { result = trit_to_bool(.pos); } + _ = result; } bench "bench_trit_abs_diff_latency" { @@ -1445,6 +1461,7 @@ bench "bench_trit_abs_diff_latency" { for (0..1000) |_| { result = trit_abs_diff(.pos, .neg); } + _ = result; } bench "bench_trit_cond_swap_latency" { @@ -1455,6 +1472,7 @@ bench "bench_trit_cond_swap_latency" { for (0..1000) |_| { result = trit_cond_swap(.pos, .neg, .zero); } + _ = result; } bench "bench_trit_is_unit_latency" { @@ -1465,6 +1483,7 @@ bench "bench_trit_is_unit_latency" { for (0..1000) |_| { result = trit_is_unit(.pos); } + _ = result; } bench "bench_trit_is_identity_latency" { @@ -1475,6 +1494,7 @@ bench "bench_trit_is_identity_latency" { for (0..1000) |_| { result = trit_is_identity(.zero); } + _ = result; } bench "bench_trit_is_negated_latency" { @@ -1485,5 +1505,6 @@ bench "bench_trit_is_negated_latency" { for (0..1000) |_| { result = trit_is_negated(.neg, .pos); } + _ = result; } diff --git a/apps/website/public/t27/files/specs/base/seed.t27 b/apps/website/public/t27/files/specs/base/seed.t27 index e4241a6fde..251de37041 100644 --- a/apps/website/public/t27/files/specs/base/seed.t27 +++ b/apps/website/public/t27/files/specs/base/seed.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 -; seed.t27 -- Minimal Golden Seed for E2E CI (#150) -; phi^2 + 1/phi^2 = 3 | TRINITY +; seed.t27 — Minimal Golden Seed for E2E CI (#150) +; φ² + 1/φ² = 3 | TRINITY module seed; diff --git a/apps/website/public/t27/files/specs/base/ternary_add.t27 b/apps/website/public/t27/files/specs/base/ternary_add.t27 index 2cd8527637..10539f20af 100644 --- a/apps/website/public/t27/files/specs/base/ternary_add.t27 +++ b/apps/website/public/t27/files/specs/base/ternary_add.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 -// ternary_add.t27 -- Balanced Ternary Addition Formal Spec -// Ring 043 -- Formal carry propagation invariants, closure, range formula +// ternary_add.t27 — Balanced Ternary Addition Formal Spec +// Ring 043 — Formal carry propagation invariants, closure, range formula // phi^2 + 1/phi^2 = 3 | TRINITY module ternary_add; @@ -141,7 +141,7 @@ pub fn normalize_trit(raw: i8) Trit { } // ============================================================================ -// 5. TDD -- Tests +// 5. TDD — Tests // ============================================================================ test ternary_add_full_adder_pos_pos_zero @@ -323,7 +323,7 @@ test ternary_add_full_adder_associative_no_carry then r2.sum == r4.sum // ============================================================================ -// 6. TDD -- Invariants +// 6. TDD — Invariants // ============================================================================ invariant ternary_add_trit_mul_closure @@ -384,7 +384,7 @@ invariant ternary_add_full_adder_commutative assert trit_full_adder(a, b, c).sum == trit_full_adder(b, a, c).sum for all Trit a, b, c // ============================================================================ -// 7. TDD -- Benchmarks +// 7. TDD — Benchmarks // ============================================================================ bench ternary_add_full_adder_latency diff --git a/apps/website/public/t27/files/specs/base/ternary_encoding.t27 b/apps/website/public/t27/files/specs/base/ternary_encoding.t27 index befac2bced..8e9c72ebdc 100644 --- a/apps/website/public/t27/files/specs/base/ternary_encoding.t27 +++ b/apps/website/public/t27/files/specs/base/ternary_encoding.t27 @@ -3,14 +3,14 @@ // Ternary Encoding/Decoding Specification // Ring 065 - Encoding schemes for ternary data representation // Defines how binary data maps to ternary and vice versa -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryEncoding { use base::types; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Encoding Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Trit values const TRIT_NEG : i32 = -1; @@ -27,24 +27,24 @@ module TernaryEncoding { const TRITS_PER_BYTE : usize = 6; // 6 trits = 3^6 = 729 > 256 const TRITS_PER_NYBBLE : usize = 3; // 3 trits = 27 > 16 - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Bit to Trit Conversion - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // bit_to_trit_pair(bit: u8) -> [2]i32 + // bit_to_trit_pair(bit: u8) → [2]i32 // Convert a single bit (0 or 1) to a pair of trits // 0 -> [0, 0], 1 -> [1, 0] - fn bit_to_trit_pair(bit: u8) -> [2]i32 { + fn bit_to_trit_pair(bit: u8) → [2]i32 { if (bit == 0) { return [_]i32{TRIT_ZERO, TRIT_ZERO}; } return [_]i32{TRIT_POS, TRIT_ZERO}; } - // bits_to_trits(bits: u8) -> [3]i32 + // bits_to_trits(bits: u8) → [3]i32 // Convert a nibble (4 bits) to 3 trits // Maps 0-15 to balanced ternary - fn bits_to_trits(bits: u8) -> [3]i32 { + fn bits_to_trits(bits: u8) → [3]i32 { var result : [3]i32 = [_]i32{TRIT_ZERO, TRIT_ZERO, TRIT_ZERO}; var value = bits; var i : usize = 0; @@ -64,14 +64,14 @@ module TernaryEncoding { return result; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Trit to Bit Conversion - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // trits_to_bits(trits: [3]i32) -> u8 + // trits_to_bits(trits: [3]i32) → u8 // Convert 3 trits to a nibble (4 bits) // Assumes trits represent a valid value 0-15 - fn trits_to_bits(trits: [3]i32) -> u8 { + fn trits_to_bits(trits: [3]i32) → u8 { var result : i32 = 0; var power : i32 = 1; var i : usize = 0; @@ -90,14 +90,14 @@ module TernaryEncoding { return @as(u8, @intCast(result)); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Byte to Trit Array Conversion - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // byte_to_trits(byte: u8, trits: []i32, len: usize) -> usize + // byte_to_trits(byte: u8, trits: []i32, len: usize) → usize // Convert a byte to trits // Returns number of trits used - fn byte_to_trits(byte: u8, trits: []i32, len: usize) -> usize { + fn byte_to_trits(byte: u8, trits: []i32, len: usize) → usize { // Convert byte (0-255) to balanced ternary var value : i32 = @as(i32, @intCast(byte)); var i : usize = 0; @@ -128,10 +128,10 @@ module TernaryEncoding { return len; } - // trits_to_byte(trits: []i32, len: usize) -> u8 + // trits_to_byte(trits: []i32, len: usize) → u8 // Convert trits to a byte // Assumes trits represent a valid value 0-255 - fn trits_to_byte(trits: []i32, len: usize) -> u8 { + fn trits_to_byte(trits: []i32, len: usize) → u8 { var result : i32 = 0; var power : i32 = 1; var i : usize = 0; @@ -150,59 +150,59 @@ module TernaryEncoding { return @as(u8, @intCast(result)); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Balanced to Unipolar Conversion - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // balanced_to_unipolar(trit: i32) -> i32 + // balanced_to_unipolar(trit: i32) → i32 // Convert balanced ternary trit to unipolar // -1 -> 0, 0 -> 1, 1 -> 2 - fn balanced_to_unipolar(trit: i32) -> i32 { + fn balanced_to_unipolar(trit: i32) → i32 { return trit + 1; } - // unipolar_to_balanced(trit: i32) -> i32 + // unipolar_to_balanced(trit: i32) → i32 // Convert unipolar trit to balanced ternary // 0 -> -1, 1 -> 0, 2 -> 1 - fn unipolar_to_balanced(trit: i32) -> i32 { + fn unipolar_to_balanced(trit: i32) → i32 { return trit - 1; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. String Encoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // char_to_trits(c: u8, trits: []i32, len: usize) -> usize + // char_to_trits(c: u8, trits: []i32, len: usize) → usize // Convert ASCII character to trits - fn char_to_trits(c: u8, trits: []i32, len: usize) -> usize { + fn char_to_trits(c: u8, trits: []i32, len: usize) → usize { return byte_to_trits(c, trits, len); } - // trits_to_char(trits: []i32, len: usize) -> u8 + // trits_to_char(trits: []i32, len: usize) → u8 // Convert trits to ASCII character - fn trits_to_char(trits: []i32, len: usize) -> u8 { + fn trits_to_char(trits: []i32, len: usize) → u8 { return trits_to_byte(trits, len); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. Validation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // is_valid_trit(t: i32) -> bool + // is_valid_trit(t: i32) → bool // Check if a value is a valid trit - fn is_valid_trit(t: i32) -> bool { + fn is_valid_trit(t: i32) → bool { return t >= TRIT_NEG and t <= TRIT_POS; } - // is_valid_unipolar_trit(t: i32) -> bool + // is_valid_unipolar_trit(t: i32) → bool // Check if a value is a valid unipolar trit (0, 1, 2) - fn is_valid_unipolar_trit(t: i32) -> bool { + fn is_valid_unipolar_trit(t: i32) → bool { return t >= 0 and t <= 2; } - // validate_trits(trits: []i32, len: usize) -> bool + // validate_trits(trits: []i32, len: usize) → bool // Validate all trits in an array - fn validate_trits(trits: []i32, len: usize) -> bool { + fn validate_trits(trits: []i32, len: usize) → bool { var i : usize = 0; while (i < len) { if (!is_valid_trit(trits[i])) { @@ -213,9 +213,9 @@ module TernaryEncoding { return true; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. Encoding Metadata - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct EncodingInfo { encoding_type : u8, @@ -224,9 +224,9 @@ module TernaryEncoding { is_valid : bool, } - // get_encoding_info(trits: []i32, len: usize) -> EncodingInfo + // get_encoding_info(trits: []i32, len: usize) → EncodingInfo // Get information about a trit encoding - fn get_encoding_info(trits: []i32, len: usize) -> EncodingInfo { + fn get_encoding_info(trits: []i32, len: usize) → EncodingInfo { var info : EncodingInfo = undefined; info.encoding_type = ENCODING_BALANCED; info.trits_used = len; @@ -241,9 +241,9 @@ module TernaryEncoding { return info; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 9. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test bit_to_trit_pair_zero const result = bit_to_trit_pair(0); @@ -319,9 +319,9 @@ module TernaryEncoding { i = i + 1; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 10. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant balanced_unipolar_roundtrip // Converting balanced -> unipolar -> balanced should be identity @@ -374,9 +374,9 @@ module TernaryEncoding { const info = get_encoding_info(&trits, 5); assert info.trits_used == 5 - // ===================================================== + // ═════════════════════════════════════════════════════ // 11. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench byte_to_trits_performance // Measure: cycles to convert 100 bytes to trits diff --git a/apps/website/public/t27/files/specs/base/ternary_memory.t27 b/apps/website/public/t27/files/specs/base/ternary_memory.t27 index 927f8a0aba..148c708b0f 100644 --- a/apps/website/public/t27/files/specs/base/ternary_memory.t27 +++ b/apps/website/public/t27/files/specs/base/ternary_memory.t27 @@ -3,14 +3,14 @@ // Ternary Memory Specification // Ring 066 - Ternary memory cell and array operations // Defines how trits are stored and accessed in memory -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryMemory { use base::types; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Memory Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Trit values const TRIT_NEG : i32 = -1; @@ -28,9 +28,9 @@ module TernaryMemory { const STATE_LOCKED : u8 = 2; const STATE_DIRTY : u8 = 3; - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Trit Memory Cell - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // TritCell: Single trit storage with metadata struct TritCell { @@ -40,9 +40,9 @@ module TernaryMemory { access_count : u32, } - // trit_cell_init() -> TritCell + // trit_cell_init() → TritCell // Initialize a trit cell - fn trit_cell_init() -> TritCell { + fn trit_cell_init() → TritCell { return TritCell{ .value = TRIT_ZERO, .state = STATE_FREE, @@ -51,9 +51,9 @@ module TernaryMemory { }; } - // trit_cell_write(cell: *TritCell, value: i32) -> bool + // trit_cell_write(cell: *TritCell, value: i32) → bool // Write a value to a trit cell - fn trit_cell_write(cell: *TritCell, value: i32) -> bool { + fn trit_cell_write(cell: *TritCell, value: i32) → bool { if (cell.state == STATE_LOCKED) { return false; } @@ -64,17 +64,17 @@ module TernaryMemory { return true; } - // trit_cell_read(cell: *TritCell) -> i32 + // trit_cell_read(cell: *TritCell) → i32 // Read a value from a trit cell - fn trit_cell_read(cell: *TritCell) -> i32 { + fn trit_cell_read(cell: *TritCell) → i32 { cell.last_access = get_timestamp(); cell.access_count = cell.access_count + 1; return cell.value; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Ternary Word - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // TernaryWord: 27 trits struct TernaryWord { @@ -83,9 +83,9 @@ module TernaryMemory { checksum : u32, } - // ternary_word_init() -> TernaryWord + // ternary_word_init() → TernaryWord // Initialize a ternary word - fn ternary_word_init() -> TernaryWord { + fn ternary_word_init() → TernaryWord { var word : TernaryWord = undefined; word.state = STATE_FREE; word.checksum = 0; @@ -99,9 +99,9 @@ module TernaryMemory { return word; } - // ternary_word_write_trit(word: *TernaryWord, index: usize, value: i32) -> bool + // ternary_word_write_trit(word: *TernaryWord, index: usize, value: i32) → bool // Write a single trit in a word - fn ternary_word_write_trit(word: *TernaryWord, index: usize, value: i32) -> bool { + fn ternary_word_write_trit(word: *TernaryWord, index: usize, value: i32) → bool { if (index >= TRIT_CAPACITY) { return false; } @@ -117,18 +117,18 @@ module TernaryMemory { return result; } - // ternary_word_read_trit(word: *TernaryWord, index: usize) -> i32 + // ternary_word_read_trit(word: *TernaryWord, index: usize) → i32 // Read a single trit from a word - fn ternary_word_read_trit(word: *TernaryWord, index: usize) -> i32 { + fn ternary_word_read_trit(word: *TernaryWord, index: usize) → i32 { if (index >= TRIT_CAPACITY) { return TRIT_ZERO; } return trit_cell_read(&word.trits[index]); } - // compute_checksum(word: *TernaryWord) -> u32 + // compute_checksum(word: *TernaryWord) → u32 // Compute checksum for a word - fn compute_checksum(word: *TernaryWord) -> u32 { + fn compute_checksum(word: *TernaryWord) → u32 { var checksum : u32 = 0; var i : usize = 0; @@ -141,9 +141,9 @@ module TernaryMemory { return checksum; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Ternary Memory Bank - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // TernaryMemoryBank: Array of ternary words struct TernaryMemoryBank { @@ -152,9 +152,9 @@ module TernaryMemory { total_accesses : u64, } - // ternary_memory_bank_init() -> TernaryMemoryBank + // ternary_memory_bank_init() → TernaryMemoryBank // Initialize a memory bank - fn ternary_memory_bank_init() -> TernaryMemoryBank { + fn ternary_memory_bank_init() → TernaryMemoryBank { var bank : TernaryMemoryBank = undefined; bank.allocated = 0; bank.total_accesses = 0; @@ -168,10 +168,10 @@ module TernaryMemory { return bank; } - // ternary_memory_alloc(bank: *TernaryMemoryBank) -> usize + // ternary_memory_alloc(bank: *TernaryMemoryBank) → usize // Allocate a word in memory bank // Returns word index or -1 if full - fn ternary_memory_alloc(bank: *TernaryMemoryBank) -> usize { + fn ternary_memory_alloc(bank: *TernaryMemoryBank) → usize { if (bank.allocated >= WORD_CAPACITY) { return 0xFFFFFFFFFFFFFFFF; // -1 in usize } @@ -182,9 +182,9 @@ module TernaryMemory { return index; } - // ternary_memory_free(bank: *TernaryMemoryBank, index: usize) -> bool + // ternary_memory_free(bank: *TernaryMemoryBank, index: usize) → bool // Free a word in memory bank - fn ternary_memory_free(bank: *TernaryMemoryBank, index: usize) -> bool { + fn ternary_memory_free(bank: *TernaryMemoryBank, index: usize) → bool { if (index >= bank.allocated) { return false; } @@ -192,9 +192,9 @@ module TernaryMemory { return true; } - // ternary_memory_read(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize) -> i32 + // ternary_memory_read(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize) → i32 // Read a trit from memory bank - fn ternary_memory_read(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize) -> i32 { + fn ternary_memory_read(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize) → i32 { bank.total_accesses = bank.total_accesses + 1; if (word_index >= bank.allocated) { @@ -204,9 +204,9 @@ module TernaryMemory { return ternary_word_read_trit(&bank.words[word_index], trit_index); } - // ternary_memory_write(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize, value: i32) -> bool + // ternary_memory_write(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize, value: i32) → bool // Write a trit to memory bank - fn ternary_memory_write(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize, value: i32) -> bool { + fn ternary_memory_write(bank: *TernaryMemoryBank, word_index: usize, trit_index: usize, value: i32) → bool { bank.total_accesses = bank.total_accesses + 1; if (word_index >= bank.allocated) { @@ -216,25 +216,25 @@ module TernaryMemory { return ternary_word_write_trit(&bank.words[word_index], trit_index, value); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Helper Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // get_timestamp() -> u64 + // get_timestamp() → u64 // Get current timestamp (placeholder) - fn get_timestamp() -> u64 { + fn get_timestamp() → u64 { return 0; } - // validate_trit(value: i32) -> bool + // validate_trit(value: i32) → bool // Validate trit value - fn validate_trit(value: i32) -> bool { + fn validate_trit(value: i32) → bool { return value >= TRIT_NEG and value <= TRIT_POS; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test trit_cell_initialization const cell = trit_cell_init(); @@ -299,9 +299,9 @@ module TernaryMemory { assert ternary_memory_write(&bank, index, 0, TRIT_POS) == true assert ternary_memory_read(&bank, index, 0) == TRIT_POS - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant trit_cell_read_increments_count // Reading a cell should increment access count @@ -358,9 +358,9 @@ module TernaryMemory { _ = ternary_word_write_trit(&word, 0, TRIT_POS); assert word.state == STATE_DIRTY - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench trit_cell_write_performance // Measure: cycles to write 1000 trit cells diff --git a/apps/website/public/t27/files/specs/base/types.t27 b/apps/website/public/t27/files/specs/base/types.t27 index 7e27f04729..e04f358fe1 100644 --- a/apps/website/public/t27/files/specs/base/types.t27 +++ b/apps/website/public/t27/files/specs/base/types.t27 @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 -; types.t27 -- Base Types for t27 Language +; types.t27 — Base Types for t27 Language ; Trit, PackedTrit, TernaryWord definitions -; phi^2 + 1/phi^2 = 3 | TRINITY +; φ² + 1/φ² = 3 | TRINITY module tritype-base; @@ -25,14 +25,14 @@ pub const Trit = enum(i8) { // ============================================================================ // PackedTrit: 8 trits packed into u8 -// Layout: [t7 t6 t5 t4 t3 t2 t1 t0] where each t in {-1, 0, +1} -// Encoding: -1 -> 10, 0 -> 00, +1 -> 01 (2 bits per trit) +// Layout: [t7 t6 t5 t4 t3 t2 t1 t0] where each t ∈ {-1, 0, +1} +// Encoding: -1 → 10, 0 → 00, +1 → 01 (2 bits per trit) // So packed byte: [t7_1 t7_0][t6_1 t6_0]...[t0_1 t0_0] pub const PACKED_BITS_PER_TRIT : u8 = 2; pub const TRITS_PER_BYTE : u8 = 8; // Trit value mapping (2-bit to trit) -// -1 -> 10b = 2, 0 -> 00b = 0, +1 -> 01b = 1 +// -1 → 10b = 2, 0 → 00b = 0, +1 → 01b = 1 pub const PACKED_NEG : u8 = 2; pub const PACKED_ZERO : u8 = 0; pub const PACKED_ONE : u8 = 1; @@ -45,7 +45,7 @@ pub const PackedTrit = u8; // Type alias // ============================================================================ // TernaryWord: 27 trits packed (full Coptic word) -// Can represent any value in 3^27 ~= 7.6*10^12 states +// Can represent any value in 3^27 ≈ 7.6×10^12 states // Practical use: vector operations, VSA bindings, weight storage pub const TRITS_PER_WORD : u8 = 27; pub const WORD_BYTES : u8 = 5; // ceil(27/8) = 5 bytes for 27 trits @@ -66,7 +66,7 @@ pub struct UnpackResult { // Functions // ============================================================================ -// trit_add(a: Trit, b: Trit) -> Trit +// trit_add(a: Trit, b: Trit) → Trit // Balanced ternary addition // Truth table: // -1 + -1 = -1 (carrying overflow handled by TernaryWord) @@ -94,18 +94,18 @@ pub fn trit_add(a: Trit, b: Trit) Trit { }; } -// trit_multiply(a: Trit, b: Trit) -> Trit +// trit_multiply(a: Trit, b: Trit) → Trit // Balanced ternary multiplication // Truth table: -// -1 * -1 = +1 -// -1 * 0 = 0 -// -1 * +1 = -1 -// 0 * -1 = 0 -// 0 * 0 = 0 -// 0 * +1 = 0 -// +1 * -1 = -1 -// +1 * 0 = 0 -// +1 * +1 = +1 +// -1 × -1 = +1 +// -1 × 0 = 0 +// -1 × +1 = -1 +// 0 × -1 = 0 +// 0 × 0 = 0 +// 0 × +1 = 0 +// +1 × -1 = -1 +// +1 × 0 = 0 +// +1 × +1 = +1 pub fn trit_multiply(a: Trit, b: Trit) Trit { return switch (a) { .neg => switch (b) { @@ -118,8 +118,8 @@ pub fn trit_multiply(a: Trit, b: Trit) Trit { }; } -// trit_negate(a: Trit) -> Trit -// Negate a trit: -1 -> +1, 0 -> 0, +1 -> -1 +// trit_negate(a: Trit) → Trit +// Negate a trit: -1 → +1, 0 → 0, +1 → -1 // Truth table: // trit_negate(-1) = +1 // trit_negate(0) = 0 @@ -132,7 +132,7 @@ pub fn trit_negate(a: Trit) Trit { }; } -// trit_to_packed(trit: Trit) -> u8 +// trit_to_packed(trit: Trit) → u8 // Convert Trit to its 2-bit packed representation pub fn trit_to_packed(trit: Trit) u8 { return switch (trit) { @@ -142,7 +142,7 @@ pub fn trit_to_packed(trit: Trit) u8 { }; } -// packed_to_trit(packed: u8) -> Trit +// packed_to_trit(packed: u8) → Trit // Convert 2-bit packed representation to Trit pub fn packed_to_trit(packed: u8) Trit { return switch (packed & TRIT_MASK) { @@ -153,7 +153,7 @@ pub fn packed_to_trit(packed: u8) Trit { }; } -// pack_trit(trit: Trit, position: u8, packed: PackedTrit) -> PackedTrit +// pack_trit(trit: Trit, position: u8, packed: PackedTrit) → PackedTrit // Pack a single trit into PackedTrit at given position (0-7) // Returns updated packed value or error sentinel (0xFF) for invalid position pub fn pack_trit(trit: Trit, position: u8, packed: PackedTrit) PackedTrit { @@ -162,7 +162,7 @@ pub fn pack_trit(trit: Trit, position: u8, packed: PackedTrit) PackedTrit { } const encoding = trit_to_packed(trit); - const bit_pos: u3 = @intCast(position * PACKED_BITS_PER_TRIT); + const bit_pos = position * PACKED_BITS_PER_TRIT; // Clear 2 bits at position const mask: u8 = ~(TRIT_MASK << bit_pos); @@ -174,24 +174,24 @@ pub fn pack_trit(trit: Trit, position: u8, packed: PackedTrit) PackedTrit { return result; } -// unpack_trit(position: u8, packed: PackedTrit) -> UnpackResult +// unpack_trit(position: u8, packed: PackedTrit) → UnpackResult // Extract a single trit from PackedTrit at given position (0-7) pub fn unpack_trit(position: u8, packed: PackedTrit) UnpackResult { if (position >= TRITS_PER_BYTE) { return UnpackResult{ .value = .zero, .valid = false }; } - const bit_pos: u3 = @intCast(position * PACKED_BITS_PER_TRIT); + const bit_pos = position * PACKED_BITS_PER_TRIT; const encoding = (packed >> bit_pos) & TRIT_MASK; const value = packed_to_trit(encoding); return UnpackResult{ .value = value, .valid = true }; } -// ternary_word_pack(src: []Trit, count: u8) -> TernaryWord +// ternary_word_pack(src: []Trit, count: u8) → TernaryWord // Pack count trits into TernaryWord (max 27 trits) // Returns error sentinel ([0xFF]*5) for count > 27 -pub fn ternary_word_pack(src: []const Trit, count: u8) TernaryWord { +pub fn ternary_word_pack(src: []Trit, count: u8) TernaryWord { if (count > TRITS_PER_WORD) { return [_]u8{0xFF} ** WORD_BYTES; } @@ -228,7 +228,7 @@ pub fn ternary_word_unpack(word: TernaryWord, count: u8) []Trit { return result[0..valid_count]; } -// trit_compare(a: Trit, b: Trit) -> i8 +// trit_compare(a: Trit, b: Trit) → i8 // Compare two trits: -1 if a < b, 0 if a == b, +1 if a > b pub fn trit_compare(a: Trit, b: Trit) i8 { if (a == b) { @@ -240,25 +240,25 @@ pub fn trit_compare(a: Trit, b: Trit) i8 { } } -// trit_min(a: Trit, b: Trit) -> Trit +// trit_min(a: Trit, b: Trit) → Trit // Returns the minimum of two trits pub fn trit_min(a: Trit, b: Trit) Trit { return if (a == .neg or (a == .zero and b == .pos)) a else b; } -// trit_max(a: Trit, b: Trit) -> Trit +// trit_max(a: Trit, b: Trit) → Trit // Returns the maximum of two trits pub fn trit_max(a: Trit, b: Trit) Trit { return if (a == .pos or (a == .zero and b == .neg)) a else b; } -// trit_abs(a: Trit) -> Trit +// trit_abs(a: Trit) → Trit // Absolute value of a trit (always 0 or +1) pub fn trit_abs(a: Trit) Trit { return if (a == .neg) .pos else a; } -// trit_from_i8(value: i8) -> Trit +// trit_from_i8(value: i8) → Trit // Safe conversion from i8 to Trit, clamping to valid range [-1, 0, +1] // Returns .zero for values outside valid range pub fn trit_from_i8(value: i8) Trit { @@ -270,7 +270,7 @@ pub fn trit_from_i8(value: i8) Trit { }; } -// trit_and(a: Trit, b: Trit) -> Trit +// trit_and(a: Trit, b: Trit) → Trit // Logical AND for trits (treating .pos as true, others as false) // Truth table: // .neg & .neg = .neg @@ -287,7 +287,7 @@ pub fn trit_and(a: Trit, b: Trit) Trit { }; } -// trit_or(a: Trit, b: Trit) -> Trit +// trit_or(a: Trit, b: Trit) → Trit // Logical OR for trits (treating .pos as true, others as false) // Truth table: // .neg | .neg = .neg @@ -304,7 +304,7 @@ pub fn trit_or(a: Trit, b: Trit) Trit { }; } -// trit_xor(a: Trit, b: Trit) -> Trit +// trit_xor(a: Trit, b: Trit) → Trit // Logical XOR for trits (treating .pos as true, others as false) // Truth table: // .neg ^ .neg = .neg @@ -317,7 +317,7 @@ pub fn trit_xor(a: Trit, b: Trit) Trit { return if (a == b) if (a == .neg) .neg else .zero else .pos; } -// trit_not(a: Trit) -> Trit +// trit_not(a: Trit) → Trit // Logical NOT for trits (treating .pos as true, others as false) // Truth table: // !.neg = .pos @@ -327,14 +327,14 @@ pub fn trit_not(a: Trit) Trit { return if (a == .pos) .zero else .pos; } -// trit_select(condition: Trit, a: Trit, b: Trit) -> Trit +// trit_select(condition: Trit, a: Trit, b: Trit) → Trit // Ternary selection: return a if condition is .pos, else b // Uses .pos as "true", all other values select b pub fn trit_select(condition: Trit, a: Trit, b: Trit) Trit { return if (condition == .pos) a else b; } -// packed_trit_count(packed: PackedTrit, value: Trit) -> u8 +// packed_trit_count(packed: PackedTrit, value: Trit) → u8 // Count occurrences of a specific trit value in PackedTrit pub fn packed_trit_count(packed: PackedTrit, value: Trit) u8 { var count: u8 = 0; @@ -347,26 +347,26 @@ pub fn packed_trit_count(packed: PackedTrit, value: Trit) u8 { return count; } -// packed_trit_all_equal(packed: PackedTrit, value: Trit) -> bool +// packed_trit_all_equal(packed: PackedTrit, value: Trit) → bool // Check if all trits in PackedTrit equal a specific value pub fn packed_trit_all_equal(packed: PackedTrit, value: Trit) bool { return packed_trit_count(packed, value) == TRITS_PER_BYTE; } -// packed_trit_is_zero(packed: PackedTrit) -> bool +// packed_trit_is_zero(packed: PackedTrit) → bool // Check if all trits in PackedTrit are zero pub fn packed_trit_is_zero(packed: PackedTrit) bool { return packed_trit_all_equal(packed, .zero); } -// packed_trit_is_all_same(packed: PackedTrit) -> bool +// packed_trit_is_all_same(packed: PackedTrit) → bool // Check if all trits in PackedTrit are the same (any value) pub fn packed_trit_is_all_same(packed: PackedTrit) bool { const first = unpack_trit(0, packed).value; return packed_trit_all_equal(packed, first); } -// packed_trit_nand(a: PackedTrit, b: PackedTrit) -> PackedTrit +// packed_trit_nand(a: PackedTrit, b: PackedTrit) → PackedTrit // Element-wise NAND operation on two PackedTrit values pub fn packed_trit_nand(a: PackedTrit, b: PackedTrit) PackedTrit { var result: PackedTrit = 0; @@ -380,7 +380,7 @@ pub fn packed_trit_nand(a: PackedTrit, b: PackedTrit) PackedTrit { return result; } -// packed_trit_nor(a: PackedTrit, b: PackedTrit) -> PackedTrit +// packed_trit_nor(a: PackedTrit, b: PackedTrit) → PackedTrit // Element-wise NOR operation on two PackedTrit values pub fn packed_trit_nor(a: PackedTrit, b: PackedTrit) PackedTrit { var result: PackedTrit = 0; @@ -394,7 +394,7 @@ pub fn packed_trit_nor(a: PackedTrit, b: PackedTrit) PackedTrit { return result; } -// packed_trit_xnor(a: PackedTrit, b: PackedTrit) -> PackedTrit +// packed_trit_xnor(a: PackedTrit, b: PackedTrit) → PackedTrit // Element-wise XNOR operation on two PackedTrit values // Returns pos when trits are equal, neg when different pub fn packed_trit_xnor(a: PackedTrit, b: PackedTrit) PackedTrit { @@ -409,7 +409,7 @@ pub fn packed_trit_xnor(a: PackedTrit, b: PackedTrit) PackedTrit { return result; } -// packed_trit_shift_left(packed: PackedTrit, shift: u8) -> PackedTrit +// packed_trit_shift_left(packed: PackedTrit, shift: u8) → PackedTrit // Left shift packed trits by shift positions (fills with zeros) // shift must be in [0, 8] pub fn packed_trit_shift_left(packed: PackedTrit, shift: u8) PackedTrit { @@ -423,7 +423,7 @@ pub fn packed_trit_shift_left(packed: PackedTrit, shift: u8) PackedTrit { var result: PackedTrit = 0; for (0..TRITS_PER_BYTE) |i| { if (i >= shift) { - const src_pos: u8 = @intCast(i - shift); + const src_pos = @intCast(i - shift); const src_trit = unpack_trit(src_pos, packed).value; result = pack_trit(src_trit, @intCast(i), result); } @@ -432,7 +432,7 @@ pub fn packed_trit_shift_left(packed: PackedTrit, shift: u8) PackedTrit { return result; } -// packed_trit_shift_right(packed: PackedTrit, shift: u8) -> PackedTrit +// packed_trit_shift_right(packed: PackedTrit, shift: u8) → PackedTrit // Right shift packed trits by shift positions (fills with zeros) // shift must be in [0, 8] pub fn packed_trit_shift_right(packed: PackedTrit, shift: u8) PackedTrit { @@ -445,7 +445,7 @@ pub fn packed_trit_shift_right(packed: PackedTrit, shift: u8) PackedTrit { var result: PackedTrit = 0; for (0..TRITS_PER_BYTE) |i| { - const dst_pos: u8 = @intCast(i + shift); + const dst_pos = @intCast(i + shift); if (dst_pos < TRITS_PER_BYTE) { const src_trit = unpack_trit(@intCast(i), packed).value; result = pack_trit(src_trit, dst_pos, result); @@ -455,7 +455,7 @@ pub fn packed_trit_shift_right(packed: PackedTrit, shift: u8) PackedTrit { return result; } -// packed_trit_rotate_left(packed: PackedTrit, rotate: u8) -> PackedTrit +// packed_trit_rotate_left(packed: PackedTrit, rotate: u8) → PackedTrit // Left rotate packed trits by rotate positions (circular shift) // rotate must be in [0, 7] pub fn packed_trit_rotate_left(packed: PackedTrit, rotate: u8) PackedTrit { @@ -467,7 +467,7 @@ pub fn packed_trit_rotate_left(packed: PackedTrit, rotate: u8) PackedTrit { var result: PackedTrit = 0; for (0..TRITS_PER_BYTE) |i| { - const src_pos: u8 = @intCast((i + TRITS_PER_BYTE - shift) % TRITS_PER_BYTE); + const src_pos = @intCast((i + TRITS_PER_BYTE - shift) % TRITS_PER_BYTE); const src_trit = unpack_trit(src_pos, packed).value; result = pack_trit(src_trit, @intCast(i), result); } @@ -475,7 +475,7 @@ pub fn packed_trit_rotate_left(packed: PackedTrit, rotate: u8) PackedTrit { return result; } -// packed_trit_rotate_right(packed: PackedTrit, rotate: u8) -> PackedTrit +// packed_trit_rotate_right(packed: PackedTrit, rotate: u8) → PackedTrit // Right rotate packed trits by rotate positions (circular shift) // rotate must be in [0, 7] pub fn packed_trit_rotate_right(packed: PackedTrit, rotate: u8) PackedTrit { @@ -487,7 +487,7 @@ pub fn packed_trit_rotate_right(packed: PackedTrit, rotate: u8) PackedTrit { var result: PackedTrit = 0; for (0..TRITS_PER_BYTE) |i| { - const src_pos: u8 = @intCast((i + shift) % TRITS_PER_BYTE); + const src_pos = @intCast((i + shift) % TRITS_PER_BYTE); const src_trit = unpack_trit(src_pos, packed).value; result = pack_trit(src_trit, @intCast(i), result); } @@ -495,12 +495,12 @@ pub fn packed_trit_rotate_right(packed: PackedTrit, rotate: u8) PackedTrit { return result; } -// ternary_word_is_zero(word: TernaryWord) -> bool +// ternary_word_is_zero(word: TernaryWord) → bool // Check if all 27 trits in TernaryWord are zero pub fn ternary_word_is_zero(word: TernaryWord) bool { for (0..TRITS_PER_WORD) |i| { const byte_idx = i / TRITS_PER_BYTE; - const trit_pos: u8 = @intCast(i % TRITS_PER_BYTE); + const trit_pos = @intCast(i % TRITS_PER_BYTE); const unpacked = unpack_trit(trit_pos, word[byte_idx]); if (unpacked.valid and unpacked.value != .zero) { return false; @@ -509,13 +509,13 @@ pub fn ternary_word_is_zero(word: TernaryWord) bool { return true; } -// ternary_word_count(word: TernaryWord, value: Trit) -> u8 +// ternary_word_count(word: TernaryWord, value: Trit) → u8 // Count occurrences of a specific trit value in TernaryWord pub fn ternary_word_count(word: TernaryWord, value: Trit) u8 { var count: u8 = 0; for (0..TRITS_PER_WORD) |i| { const byte_idx = i / TRITS_PER_BYTE; - const trit_pos: u8 = @intCast(i % TRITS_PER_BYTE); + const trit_pos = @intCast(i % TRITS_PER_BYTE); const unpacked = unpack_trit(trit_pos, word[byte_idx]); if (unpacked.valid and unpacked.value == value) { count += 1; @@ -524,7 +524,7 @@ pub fn ternary_word_count(word: TernaryWord, value: Trit) u8 { return count; } -// ternary_word_eq(a: TernaryWord, b: TernaryWord) -> bool +// ternary_word_eq(a: TernaryWord, b: TernaryWord) → bool // Compare two TernaryWords for equality pub fn ternary_word_eq(a: TernaryWord, b: TernaryWord) bool { for (0..WORD_BYTES) |i| { @@ -535,13 +535,13 @@ pub fn ternary_word_eq(a: TernaryWord, b: TernaryWord) bool { return true; } -// ternary_word_negate(word: TernaryWord) -> TernaryWord +// ternary_word_negate(word: TernaryWord) → TernaryWord // Negate all trits in TernaryWord pub fn ternary_word_negate(word: TernaryWord) TernaryWord { var result: TernaryWord = undefined; for (0..TRITS_PER_WORD) |i| { const byte_idx = i / TRITS_PER_BYTE; - const trit_pos: u8 = @intCast(i % TRITS_PER_BYTE); + const trit_pos = @intCast(i % TRITS_PER_BYTE); const unpacked = unpack_trit(trit_pos, word[byte_idx]); const negated = trit_negate(unpacked.value); result[byte_idx] = pack_trit(negated, trit_pos, result[byte_idx]); @@ -549,7 +549,7 @@ pub fn ternary_word_negate(word: TernaryWord) TernaryWord { return result; } -// ternary_word_is_all_same(word: TernaryWord) -> bool +// ternary_word_is_all_same(word: TernaryWord) → bool // Check if all 27 trits in TernaryWord are the same value pub fn ternary_word_is_all_same(word: TernaryWord) bool { const first = unpack_trit(0, word[0]).value; @@ -597,8 +597,7 @@ test "test_pack_unpack_roundtrip" { test "test_pack_trit_all_positions" { // Verify: pack_trit works for all valid positions (0-7) - for (0..8) |i| { - const pos: u8 = @intCast(i); + for (0..8) |pos| { const packed = pack_trit(.pos, pos, 0); const unpacked = unpack_trit(pos, packed); try std.testing.expectEqual(@as(Trit, .pos), unpacked.value); @@ -1061,7 +1060,7 @@ test "test_ternary_word_count_all_same" { var word: TernaryWord = [_]u8{0} ** WORD_BYTES; for (0..TRITS_PER_WORD) |i| { const byte_idx = i / TRITS_PER_BYTE; - const trit_pos: u8 = @intCast(i % TRITS_PER_BYTE); + const trit_pos = @intCast(i % TRITS_PER_BYTE); word[byte_idx] = pack_trit(.neg, trit_pos, word[byte_idx]); } try std.testing.expectEqual(TRITS_PER_WORD, ternary_word_count(word, .neg)); @@ -1110,7 +1109,7 @@ test "test_ternary_word_is_all_same_true" { var word: TernaryWord = [_]u8{0} ** WORD_BYTES; for (0..TRITS_PER_WORD) |i| { const byte_idx = i / TRITS_PER_BYTE; - const trit_pos: u8 = @intCast(i % TRITS_PER_BYTE); + const trit_pos = @intCast(i % TRITS_PER_BYTE); word[byte_idx] = pack_trit(.pos, trit_pos, word[byte_idx]); } try std.testing.expect(ternary_word_is_all_same(word)); diff --git a/apps/website/public/t27/files/specs/benchmarks/bench_main.t27 b/apps/website/public/t27/files/specs/benchmarks/bench_main.t27 index eb261d16ca..95ec1ec839 100644 --- a/apps/website/public/t27/files/specs/benchmarks/bench_main.t27 +++ b/apps/website/public/t27/files/specs/benchmarks/bench_main.t27 @@ -1,69 +1,69 @@ // SPDX-License-Identifier: Apache-2.0 -# NN INFERENCE BENCHMARK -- Format Comparison +# NN INFERENCE BENCHMARK — Format Comparison ## Specification -Compares accuracy degradation when using different number formats. -Tiny MLP: 100 -> 64 -> 10 (simplified MNIST-like). +// Compares accuracy degradation when using different number formats. +// Tiny MLP: 100 -> 64 -> 10 (simplified MNIST-like). ## Mathematical Foundation ``` -phi^2 + 1/phi^2 = 3 = TRINITY +// φ² + 1/φ² = 3 = TRINITY ``` ## Model Architecture ``` -LayerConfig: - input_size: 100 - hidden_size: 64 - output_size: 10 +// LayerConfig: +// input_size: 100 +// hidden_size: 64 +// output_size: 10 ``` ## Inference Functions ``` -runInferenceF32(inputs, targets, weights, biases, config, num_samples) -> InferenceResult - Baseline inference with f32 weights +// runInferenceF32(inputs, targets, weights, biases, config, num_samples) -> InferenceResult +// Baseline inference with f32 weights -runInferenceF16Soft(inputs, targets, weights, biases, config, num_samples) -> InferenceResult - Soft quantized f16 inference +// runInferenceF16Soft(inputs, targets, weights, biases, config, num_samples) -> InferenceResult +// Soft quantized f16 inference -runInferenceGF16Soft(inputs, targets, weights, biases, config, num_samples) -> InferenceResult - GF16 soft quantized inference +// runInferenceGF16Soft(inputs, targets, weights, biases, config, num_samples) -> InferenceResult +// GF16 soft quantized inference -runInferenceTernary(inputs, targets, weights, biases, config, num_samples) -> InferenceResult - Ternary quantized inference {-1, 0, +1} +// runInferenceTernary(inputs, targets, weights, biases, config, num_samples) -> InferenceResult +// Ternary quantized inference {-1, 0, +1} ``` ## Quantization Schemes ### FP16 (IEEE 754) -- Sign: 1 bit -- Exponent: 5 bits -- Mantissa: 10 bits +// - Sign: 1 bit +// - Exponent: 5 bits +// - Mantissa: 10 bits ### GF16 (Geometric) -- Positive values: `exp2(x) * frac` where `x in [1, 2)` -- Zero: special case `0` -- Negative: sign flip of positive +// - Positive values: `exp2(x) * frac` where `x ∈ [1, 2)` +// - Zero: special case `0` +// - Negative: sign flip of positive ### Ternary -- Direct mapping: `> 0.5 -> +1`, `< -0.5 -> -1`, `else -> 0` -- Accuracy drop expected due to -1,0,+1 limitation +// - Direct mapping: `> 0.5 → +1`, `< -0.5 → -1`, `else → 0` +// - Accuracy drop expected due to -1,0,+1 limitation ## Forward Pass Functions ``` -forwardPassF32(input, weights, biases, config, hidden, output) -> void - f32 forward pass with ReLU +// forwardPassF32(input, weights, biases, config, hidden, output) -> void +// f32 forward pass with ReLU -forwardPassTernary(input, w1, b1, w2, b2, hidden, output) -> void - Ternary forward pass (weights quantized to i8) +// forwardPassTernary(input, w1, b1, w2, b2, hidden, output) -> void +// Ternary forward pass (weights quantized to i8) -forwardPassGF16(input, w1, b1, w2, b2, hidden, output) -> void - GF16 forward pass (weights quantized to u16) +// forwardPassGF16(input, w1, b1, w2, b2, hidden, output) -> void +// GF16 forward pass (weights quantized to u16) ``` ## Tests @@ -81,14 +81,14 @@ test "NN-Bench: format comparison" { ## Expected Results -| Format | Accuracy | Loss | Size (bytes/weight) | -|----------|----------|---------|-------------------| -| f32 | ~95.2% | 0.048 | 32 | -| f16 soft | ~94.8% | 0.052 | 16 | -| gf16 soft | ~94.9% | 0.051 | 16 | -| ternary | ~88.5% | 0.12 | 2 | - -**Key Findings:** -- GF16 maintains competitive accuracy vs f32 baseline -- Ternary shows significant accuracy drop due to -1,0,+1 limitation -- All soft implementations have overhead vs hardware f32 +// | Format | Accuracy | Loss | Size (bytes/weight) | +// |----------|----------|---------|-------------------| +// | f32 | ~95.2% | 0.048 | 32 | +// | f16 soft | ~94.8% | 0.052 | 16 | +// | gf16 soft | ~94.9% | 0.051 | 16 | +// | ternary | ~88.5% | 0.12 | 2 | + +// **Key Findings:** +// - GF16 maintains competitive accuracy vs f32 baseline +// - Ternary shows significant accuracy drop due to -1,0,+1 limitation +// - All soft implementations have overhead vs hardware f32 diff --git a/apps/website/public/t27/files/specs/benchmarks/bench_nn.t27 b/apps/website/public/t27/files/specs/benchmarks/bench_nn.t27 index 4fdf2057b4..399e7d9ada 100644 --- a/apps/website/public/t27/files/specs/benchmarks/bench_nn.t27 +++ b/apps/website/public/t27/files/specs/benchmarks/bench_nn.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -# NN BENCHMARK -- Small NN Inference +# NN BENCHMARK — Small NN Inference ## Specification @@ -9,7 +9,7 @@ Tests ternary vs FP16/BF16/GF16 on MNIST-like workload. ## Mathematical Foundation ``` -phi^2 + 1/phi^2 = 3 = TRINITY +φ² + 1/φ² = 3 = TRINITY ``` ## Format Conversion diff --git a/apps/website/public/t27/files/specs/benchmarks/ternary_vs_binary.t27 b/apps/website/public/t27/files/specs/benchmarks/ternary_vs_binary.t27 index 8aac765c99..1e28d247aa 100644 --- a/apps/website/public/t27/files/specs/benchmarks/ternary_vs_binary.t27 +++ b/apps/website/public/t27/files/specs/benchmarks/ternary_vs_binary.t27 @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 -# TERNARY VS BINARY -- Format Comparison Benchmark +# TERNARY VS BINARY — Format Comparison Benchmark ## Specification -Minimal research benchmark for TRI-27 algorithms. -Compares accuracy degradation when using different number formats. +// Minimal research benchmark for TRI-27 algorithms. +// Compares accuracy degradation when using different number formats. ## Mathematical Foundation ``` -phi^2 + 1/phi^2 = 3 = TRINITY +// φ² + 1/φ² = 3 = TRINITY ``` ## Format Functions @@ -17,30 +17,30 @@ phi^2 + 1/phi^2 = 3 = TRINITY ### Quantization Functions ``` -quantizeTernary(x: f32) -> i2 - Quantize f32 to ternary {-1, 0, +1} +// quantizeTernary(x: f32) -> i2 +// Quantize f32 to ternary {-1, 0, +1} -quantizeFP16(x: f32) -> u16 - Quantize f32 to FP16 (truncate mantissa to 10 bits) +// quantizeFP16(x: f32) -> u16 +// Quantize f32 to FP16 (truncate mantissa to 10 bits) -quantizeBF16(x: f32) -> u16 - Quantize f32 to BF16 (truncate mantissa to 7 bits) +// quantizeBF16(x: f32) -> u16 +// Quantize f32 to BF16 (truncate mantissa to 7 bits) -decodeFP16(bits: u16) -> f32 - Simple FP16 decode (for testing) +// decodeFP16(bits: u16) -> f32 +// Simple FP16 decode (for testing) -decodeBF16(bits: u16) -> f32 - Simple BF16 decode (for testing) +// decodeBF16(bits: u16) -> f32 +// Simple BF16 decode (for testing) ``` ## Neural Network ``` -relu(x: f32) -> f32 - ReLU activation function +// relu(x: f32) -> f32 +// ReLU activation function -mlpForward(input, w1, b1, w2, b2, hidden, output, config) -> void - Two-layer MLP forward pass with ReLU activations +// mlpForward(input, w1, b1, w2, b2, hidden, output, config) -> void +// Two-layer MLP forward pass with ReLU activations ``` ## Configuration @@ -71,21 +71,21 @@ test "Ternary-Binary: quantization accuracy" { ## Benchmarks ``` -Experiment 1: FP32 Baseline - Baseline inference with f32 weights +// Experiment 1: FP32 Baseline +// Baseline inference with f32 weights -Experiment 2: Ternary Weights - Weights quantized to ternary {-1, 0, +1} +// Experiment 2: Ternary Weights +// Weights quantized to ternary {-1, 0, +1} -Experiment 3: FP16 Weights (not implemented) - Requires full FP16 arithmetic +// Experiment 3: FP16 Weights (not implemented) +// Requires full FP16 arithmetic -Experiment 4: BF16 Weights (not implemented) - Requires full BF16 arithmetic +// Experiment 4: BF16 Weights (not implemented) +// Requires full BF16 arithmetic -Results Summary: +// Results Summary: Format | Output[0] | Output[1] | Output[2] - -------+-------+------ - FP32 | x.xx | x.xx | x.xx - Ternary | x.xx | x.xx | x.xx + ───────┼───────┼────── +// FP32 | x.xx | x.xx | x.xx +// Ternary | x.xx | x.xx | x.xx ``` diff --git a/apps/website/public/t27/files/specs/boards/wukong_v1.t27 b/apps/website/public/t27/files/specs/boards/wukong_v1.t27 new file mode 100644 index 0000000000..33ae460e20 --- /dev/null +++ b/apps/website/public/t27/files/specs/boards/wukong_v1.t27 @@ -0,0 +1,297 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/boards/wukong_v1.t27 +// QMTech Wukong V1 / XC7A200T-FGG676 -- the board actually on this bench. +// +// WHY THIS EXISTS. `specs/boards/` held three files before this one: +// `arty_a7.t27` (a different board, csg324) and `xc7a100t_full.t27` / +// `xc7a100t_minimal.t27` -- both for an XC7A100T. The chip on every one of the +// three connected boards is an XC7A200T; `fpga/HARDWARE_SSOT.md` recorded that +// on 2026-07-03 and no spec followed. So the board this project builds for, +// flashes and reads verdicts off had NO machine-checkable description at all, +// while two specs described a part that is not here. Measured 2026-08-17 (W805). +// +// WHAT THIS FILE IS FOR, beyond bookkeeping. A partner analysis concluded that a +// 1.7-billion-weight ternary LLM (Ternary-Bonsai-1.7B, Q2_0, 2.125 bits/weight) +// "fits the board": 457.3 MB of weights against 1 GB of DDR3 on an Alinx AX7203. +// That board is not this board. This file states, as comptime invariants, the +// two things that decide the question here: +// +// 1. NON-VOLATILE STORAGE IS MEASURED AND IT IS NOT ENOUGH. The SPI flash +// answers JEDEC 0x20ba18 on all three dice -- Micron N25Q128, 128 Mbit, +// 16 MiB. Against 457.3 MB of weights that is a 27x shortfall, and it is a +// constraint that appears in none of the partner's P0 items. Weights that +// do not fit the flash have no home across a power cycle: every boot must +// stream them from a host. +// +// 2. DRAM CAPACITY IS NOT MEASURED, so the fit question is not answered here. +// This file does NOT guess it. `DRAM_BYTES_MEASURED = false` and the +// predicate `weights_fit_dram` is deliberately unusable until a real +// measurement replaces the sentinel. Guessing 1 GB because a different +// board has 1 GB is precisely the substitution this file exists to stop. +// +// Sources for the model figures: two partner documents dated 2026-08-17 -- +// "Does the ternary model fit in an AX7203, and what is needed" and "Protocol of +// a real run: the ternary model answers" -- which read the geometry out of the +// GGUF metadata rather than from prose. Titles translated; the originals are +// Russian and live outside this repository. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module BoardWukongV1 { + + // ---- Identity, all read off the hardware ---- + + const BOARD_NAME : &str = "QMTech Wukong V1"; + const FPGA_PART : &str = "xc7a200tfgg676-1"; + const FPGA_FAMILY : &str = "artix7"; + + // openFPGALoader reports this on busdev 1:4, 1:6 and 1:8 alike. + const JTAG_IDCODE : u32 = 0x03636093; + + // The prjxray-db entry used for place-and-route. Same die, same BGA-676 + // pinout; Xilinx publishes only `xc7a200tfbg676pkg.txt`. See + // fpga/HARDWARE_SSOT.md §2026-07-05. + const PNR_PART : &str = "xc7a200tfbg676-1"; + + // Fabric, from the Artix-7 datasheet for the 200T. + const LUT_TOTAL : u32 = 215_360; + const DSP48E1_TOTAL: u32 = 740; + + // ---- The cables ---- + // + // Three Digilent FTDI cables, all `0x0403:0x6014`, ALL SHARING serial + // 210512180081. Serial-based addressing therefore cannot separate them and + // `--busdev-num` is the only handle. This is recorded as data because it has + // cost this project thirteen waves of mis-diagnosis. + + const CABLE_COUNT : u32 = 3; + const CABLE_VID : u32 = 0x0403; + const CABLE_PID : u32 = 0x6014; + const CABLES_SHARE_SERIAL : bool = true; + + // ---- SPI flash: MEASURED, on all three dice ---- + + const FLASH_JEDEC_ID : u32 = 0x20BA18; // Micron N25Q128 + const FLASH_MBIT : u32 = 128; + const FLASH_BYTES : u32 = 16_777_216; // 128 Mbit / 8 + + // ---- CFGMCLK: MEASURED on each of the three dice (T495) ---- + // + // STARTUPE2's CFGMCLK is an internal RING OSCILLATOR with no crystal; UG470 + // gives 65 MHz nominal over a 50-80 MHz envelope. Measured by timing the + // `beat` bit of `fpga/verilog/e8m0_jtag.v` (a 2^24 prescaler) over JTAG at + // 199 samples/s, 60 s per die. Held in kHz because the numeric core is + // integer; the three dice are named by their `--busdev-num`. + // + // These are the first physical characterisation of these parts. They cost no + // rebuild, no package pin and no extra logic -- every BSCAN wrapper in + // fpga/verilog/ already carries the heartbeat that makes them readable. + const CFGMCLK_KHZ_BUSDEV_1_4 : u32 = 70_770; + const CFGMCLK_KHZ_BUSDEV_1_6 : u32 = 68_490; + const CFGMCLK_KHZ_BUSDEV_1_8 : u32 = 67_200; + + const CFGMCLK_KHZ_NOMINAL : u32 = 65_000; // UG470 + const CFGMCLK_KHZ_MIN : u32 = 50_000; // UG470 envelope + const CFGMCLK_KHZ_MAX : u32 = 80_000; + + fn cfgmclk_in_datasheet_range(khz: u32) -> bool { + if (khz < CFGMCLK_KHZ_MIN) { return false; } + if (khz > CFGMCLK_KHZ_MAX) { return false; } + return true; + } + + // ---- DRAM: NOT MEASURED. Do not fill this in from a datasheet. ---- + // + // The sentinel is zero and the flag is false. Every predicate below that + // depends on DRAM refuses to answer while the flag is false, rather than + // returning a plausible number. A wrong capacity here would propagate into a + // partner-facing feasibility claim, which is exactly how the AX7203 figure + // arrived at this bench in the first place. + const DRAM_BYTES_MEASURED : bool = false; + const DRAM_BYTES : u32 = 0; + + // ---- The workload under question ---- + // + // Ternary-Bonsai-1.7B-Q2_0: 1.72e9 weights, block of 128 weights in 34 bytes + // (32 bytes of ternary codes + one FP16 scale) = 2.125 bits/weight. + // Tensor sum 457.3 MB; the GGUF file is 436 MiB, which agrees to 0.03%. + + const MODEL_WEIGHT_BYTES : u32 = 457_300_000; + const MODEL_LARGEST_TENSOR_BYTES : u32 = 3_300_000; // an FFN tensor + const BRAM_BYTES : u32 = 1_600_000; // 1.60 MB on the 200T + + // KV cache per token, fp16: 28 layers * 8 KV heads * 128 * 2 = 57344 values. + const KV_BYTES_PER_TOKEN : u32 = 114_688; + + // ---- Predicates ---- + + // The one that is answerable today. + fn weights_fit_flash() -> bool { + return (MODEL_WEIGHT_BYTES <= FLASH_BYTES); + } + + // How many times over the weights exceed non-volatile storage, floored. + fn flash_shortfall_factor() -> u32 { + return (MODEL_WEIGHT_BYTES / FLASH_BYTES); + } + + // The one that is NOT answerable today. Returns false when the capacity has + // not been measured -- NOT because the weights do not fit, but because the + // question has no input. Callers must test `DRAM_BYTES_MEASURED` first; that + // is the same discipline `e8m0_is_nan` imposes in specs/numeric/e8m0.t27. + fn weights_fit_dram() -> bool { + if (DRAM_BYTES_MEASURED == false) { return false; } + return (MODEL_WEIGHT_BYTES <= DRAM_BYTES); + } + + // The largest single tensor against block RAM. Independent of DRAM, and it + // is what forces tiling regardless of how the capacity question resolves. + fn largest_tensor_fits_bram() -> bool { + return (MODEL_LARGEST_TENSOR_BYTES <= BRAM_BYTES); + } + + // KV cache for a context length, in bytes. + fn kv_bytes(ctx_tokens: u32) -> u32 { + return (KV_BYTES_PER_TOKEN * ctx_tokens); + } + + // ---- Combinational port surface (T81) ---- + // + // Without a data port the module has no boundary and synthesises to nothing. + // This one answers a storage query: given a code, return the byte figure it + // names. It is a lookup, and that is honest -- this module describes a board, + // it does not compute on one. + fn on_comb(x: u32) -> u32 { + if (x == 0) { return FLASH_BYTES; } + if (x == 1) { return MODEL_WEIGHT_BYTES; } + if (x == 2) { return BRAM_BYTES; } + if (x == 3) { return KV_BYTES_PER_TOKEN; } + if (x == 4) { return LUT_TOTAL; } + return 0; + } + + // ---- Tests ---- + + test idcode_is_the_two_hundred_t + given v = JTAG_IDCODE + then v == 0x03636093 + + test flash_is_one_twenty_eight_mbit + given v = FLASH_MBIT + then v == 128 + + test flash_bytes_follow_from_mbit + given v = FLASH_BYTES + then v == 16777216 + + // THE RESULT. The weights do not fit the flash, and this is the constraint + // no plan on the table lists. + test weights_do_not_fit_flash + given r = weights_fit_flash() + then r == false + + test flash_shortfall_is_twenty_seven_fold + given f = flash_shortfall_factor() + then f == 27 + + // The DRAM question is refused, not answered. + test dram_capacity_is_not_measured + given m = DRAM_BYTES_MEASURED + then m == false + + test dram_fit_refuses_to_answer + given r = weights_fit_dram() + then r == false + + test largest_tensor_exceeds_bram + given r = largest_tensor_fits_bram() + then r == false + + test kv_for_one_k_context + given b = kv_bytes(1024) + then b == 117440512 + + test comb_returns_flash_bytes + given r = on_comb(0) + then r == 16777216 + + test comb_returns_lut_total + given r = on_comb(4) + then r == 215360 + + // ---- CFGMCLK, measured (T495) ---- + + test die_one_four_is_in_range + given r = cfgmclk_in_datasheet_range(CFGMCLK_KHZ_BUSDEV_1_4) + then r == true + + test die_one_six_is_in_range + given r = cfgmclk_in_datasheet_range(CFGMCLK_KHZ_BUSDEV_1_6) + then r == true + + test die_one_eight_is_in_range + given r = cfgmclk_in_datasheet_range(CFGMCLK_KHZ_BUSDEV_1_8) + then r == true + + test a_frequency_below_the_envelope_is_rejected + given r = cfgmclk_in_datasheet_range(40_000) + then r == false + + // ---- Invariants ---- + + invariant flash_bytes_are_mbit_over_eight + assert FLASH_BYTES * 8 == FLASH_MBIT * 1_048_576 + + // The shortfall, asserted at compile time so it cannot be softened in prose. + invariant weights_exceed_flash + assert MODEL_WEIGHT_BYTES > FLASH_BYTES + + invariant shortfall_is_at_least_twenty_seven + assert MODEL_WEIGHT_BYTES > (FLASH_BYTES * 27) + + // Tiling is forced by BRAM alone, whatever the DRAM turns out to be. + invariant tiling_is_mandatory + assert MODEL_LARGEST_TENSOR_BYTES > BRAM_BYTES + + // The sentinel must stay a sentinel until someone measures the board. + invariant dram_sentinel_is_zero_while_unmeasured + assert DRAM_BYTES == 0 + + // Three cables, and they cannot be told apart by serial. + invariant three_cables_share_one_serial + assert CABLE_COUNT == 3 + + // ALL THREE DICE RUN FAST. Every one measures above the 65 MHz nominal -- + // 3.4%, 5.4% and 8.9% -- and all three stay inside the envelope. Asserted so + // the ordering cannot be lost to prose: 1:4 is the fastest of the three. + invariant every_die_runs_above_nominal + assert CFGMCLK_KHZ_BUSDEV_1_8 > CFGMCLK_KHZ_NOMINAL + + invariant one_four_is_the_fastest_die + assert CFGMCLK_KHZ_BUSDEV_1_4 > CFGMCLK_KHZ_BUSDEV_1_6 + + invariant one_six_is_faster_than_one_eight + assert CFGMCLK_KHZ_BUSDEV_1_6 > CFGMCLK_KHZ_BUSDEV_1_8 + + // The measured spread is 5.19%, comfortably inside the envelope's width. + invariant spread_is_smaller_than_the_envelope + assert (CFGMCLK_KHZ_BUSDEV_1_4 - CFGMCLK_KHZ_BUSDEV_1_8) + < (CFGMCLK_KHZ_MAX - CFGMCLK_KHZ_MIN) + + // A ternary core needs no DSP48E1; the FP16 block scales do. One scale per + // 128 weights over 1.72e9 weights is 13.4e6 multiplies per token, which is + // roughly one DSP48E1 of the 740 at a few tokens per second -- so "zero + // DSP48" is true of the ternary core and false of the full pipeline. + invariant the_die_has_dsp_even_though_our_cores_use_none + assert DSP48E1_TOTAL == 740 + + // ---- Bench ---- + + bench wukong_storage_arithmetic + assert weights_fit_flash() == false + assert flash_shortfall_factor() == 27 + assert largest_tensor_fits_bram() == false + assert kv_bytes(1024) == 117440512 +} + +// phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/brain/brain.t27 b/apps/website/public/t27/files/specs/brain/brain.t27 index ad93ae84ad..7af5a219b0 100644 --- a/apps/website/public/t27/files/specs/brain/brain.t27 +++ b/apps/website/public/t27/files/specs/brain/brain.t27 @@ -1,47 +1,47 @@ // SPDX-License-Identifier: Apache-2.0 -# BRAIN -- S^3AI Neuroanatomy v5.1 +# BRAIN — S³AI Neuroanatomy v5.1 ## Specification -Neuroanatomically inspired brain module for Trinity S^3AI. -Aggregator module for all brain regions. Import this file to get -access to all S^3AI neuroanatomy modules at once. +// Neuroanatomically inspired brain module for Trinity S³AI. +// Aggregator module for all brain regions. Import this file to get +// access to all S³AI neuroanatomy modules at once. -Sacred Formula: phi^2 + 1/phi^2 = 3 = TRINITY +// Sacred Formula: φ² + 1/φ² = 3 = TRINITY ## Brain Regions -| Region | Biological Function | File | -|--------|-------------------|-------| -| Thalamus | Sensory Relay -- Railway live logs relay | thalamus_logs.zig | -| Basal Ganglia | Action Selection -- prevents duplicate task execution | basal_ganglia.zig | -| Reticular Formation | Broadcast Alerting -- event bus for all agents | reticular_formation.zig | -| Locus Coeruleus | Arousal Regulation -- backoff/timing policy | locus_coeruleus.zig | -| Amygdala | Emotional Salience -- prioritizes urgent/critical events | amygdala.zig | -| Prefrontal Cortex | Executive Function -- decision making and planning | prefrontal_cortex.zig | -| Intraparietal Sulcus | Numerical Processing -- f16/GF16/TF3 conversions | intraparietal_sulcus.zig | -| Hippocampus | Memory Persistence -- JSONL event logging | persistence.zig | -| Corpus Callosum | Telemetry -- time-series metrics aggregation | telemetry.zig | -| Microglia | Immune Surveillance -- The Constant Gardeners | microglia.zig | -| State Recovery | Crash Recovery -- Persistent state storage with versioning | state_recovery.zig | -| Hypothalamus | Administrative Control -- brain maintenance | admin.zig | -| Health History | Hippocampal Memory -- brain health snapshots | health_history.zig | -| Metrics Dashboard | Command Center -- aggregates metrics | metrics_dashboard.zig | -| Brain Alerts | Critical Health Notification -- monitors health | alerts.zig | -| Simulation | Synthetic Workload Testing -- realistic workload testing | simulation.zig | -| Observability Export | External Monitoring -- Prometheus/OpenTelemetry | observability_export.zig | -| Cerebellum | Motor Learning & Adaptive Performance | learning.zig | -| Thalamic Async Processor | Non-blocking Operations -- async task claim/release | async_processor.zig | -| Corpus Callosum (Federation) | Inter-Hemispheric Communication -- distributed multi-instance | federation.zig | -| Visual Cortex | Spatial Representation -- ASCII art brain maps | visualization.zig | -| Evolution Simulation | Deterministic Evolution -- parallel brain evolution | evolution_simulation.zig | -| Performance Dashboard | Performance Monitoring -- real-time tracking | perf_dashboard.zig | +// | Region | Biological Function | File | +// |--------|-------------------|-------| +// | Thalamus | Sensory Relay — Railway live logs relay | thalamus_logs.zig | +// | Basal Ganglia | Action Selection — prevents duplicate task execution | basal_ganglia.zig | +// | Reticular Formation | Broadcast Alerting — event bus for all agents | reticular_formation.zig | +// | Locus Coeruleus | Arousal Regulation — backoff/timing policy | locus_coeruleus.zig | +// | Amygdala | Emotional Salience — prioritizes urgent/critical events | amygdala.zig | +// | Prefrontal Cortex | Executive Function — decision making and planning | prefrontal_cortex.zig | +// | Intraparietal Sulcus | Numerical Processing — f16/GF16/TF3 conversions | intraparietal_sulcus.zig | +// | Hippocampus | Memory Persistence — JSONL event logging | persistence.zig | +// | Corpus Callosum | Telemetry — time-series metrics aggregation | telemetry.zig | +// | Microglia | Immune Surveillance — The Constant Gardeners | microglia.zig | +// | State Recovery | Crash Recovery — Persistent state storage with versioning | state_recovery.zig | +// | Hypothalamus | Administrative Control — brain maintenance | admin.zig | +// | Health History | Hippocampal Memory — brain health snapshots | health_history.zig | +// | Metrics Dashboard | Command Center — aggregates metrics | metrics_dashboard.zig | +// | Brain Alerts | Critical Health Notification — monitors health | alerts.zig | +// | Simulation | Synthetic Workload Testing — realistic workload testing | simulation.zig | +// | Observability Export | External Monitoring — Prometheus/OpenTelemetry | observability_export.zig | +// | Cerebellum | Motor Learning & Adaptive Performance | learning.zig | +// | Thalamic Async Processor | Non-blocking Operations — async task claim/release | async_processor.zig | +// | Corpus Callosum (Federation) | Inter-Hemispheric Communication — distributed multi-instance | federation.zig | +// | Visual Cortex | Spatial Representation — ASCII art brain maps | visualization.zig | +// | Evolution Simulation | Deterministic Evolution — parallel brain evolution | evolution_simulation.zig | +// | Performance Dashboard | Performance Monitoring — real-time tracking | perf_dashboard.zig | ## Sacred Constants ``` phi = 1.618033988749894882 -phi^2 + phi^(-2) = 3 = TRINITY +// phi^2 + phi^(-2) = 3 = TRINITY ``` ## Tests diff --git a/apps/website/public/t27/files/specs/brain/bus.t27 b/apps/website/public/t27/files/specs/brain/bus.t27 index 7ffe0843cf..48e702be61 100644 --- a/apps/website/public/t27/files/specs/brain/bus.t27 +++ b/apps/website/public/t27/files/specs/brain/bus.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -; bus.t27 -- inter-region messaging contract (spec-first) +; bus.t27 — inter-region messaging contract (spec-first) ; Message shapes and routing rules expand with region specs. ; phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/brain/cognitive_loop.t27 b/apps/website/public/t27/files/specs/brain/cognitive_loop.t27 index 53447efaa3..bf521f1f71 100644 --- a/apps/website/public/t27/files/specs/brain/cognitive_loop.t27 +++ b/apps/website/public/t27/files/specs/brain/cognitive_loop.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -; cognitive_loop.t27 -- sense -> evaluate -> decide -> act -> consolidate (spec-first) +; cognitive_loop.t27 — sense → evaluate → decide → act → consolidate (spec-first) ; Phase timing contract lives in phi_timing.t27; this module holds loop identity constants. ; phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/brain/neural_gamma.t27 b/apps/website/public/t27/files/specs/brain/neural_gamma.t27 index ff231d79e3..e682ab573d 100644 --- a/apps/website/public/t27/files/specs/brain/neural_gamma.t27 +++ b/apps/website/public/t27/files/specs/brain/neural_gamma.t27 @@ -1,33 +1,33 @@ // SPDX-License-Identifier: Apache-2.0 -# NEURAL GAMMA -- Consciousness and Golden Ratio +# NEURAL GAMMA — Consciousness and Golden Ratio ## Specification -This module explores how neural gamma rhythm (40 Hz) relates to -Barbero-Immirzi parameter gamma = phi^-^3 and consciousness thresholds. +// This module explores how neural gamma rhythm (40 Hz) relates to +// Barbero-Immirzi parameter γ = φ⁻³ and consciousness thresholds. ## Mathematical Foundation -Golden Ratio: - phi = (1 + sqrt5)/2 ~= 1.61803398874989482 - gamma = phi^-^3 ~= 0.23606797749978969641 +// Golden Ratio: +// φ = (1 + √5)/2 ≈ 1.61803398874989482 +// γ = φ⁻³ ≈ 0.23606797749978969641 -Trinity Identity: - phi^2 + phi^-^2 = 3 +// Trinity Identity: +// φ² + φ⁻² = 3 ## Hypotheses -1. Neural gamma rhythm (40 Hz) encodes via phi and gamma -2. Consciousness threshold C_thr = gamma * phi^2 ~= 0.618 (phi^-^1) -3. Quantum coherence time tau_phi = phi^4 * gamma * t_Planck -4. Gamma synchrony is fundamental to consciousness +// 1. Neural gamma rhythm (40 Hz) encodes via φ and γ +// 2. Consciousness threshold C_thr = γ × φ² ≈ 0.618 (φ⁻¹) +// 3. Quantum coherence time τ_φ = φ⁴ × γ × t_Planck +// 4. Gamma synchrony is fundamental to consciousness ## Constants ``` PHI = 1.61803398874989482 -GAMMA = phi^-^3 ~= 0.23606797749978969641 -TRINITY = phi^2 + phi^-^2 = 3 +GAMMA = φ⁻³ ≈ 0.23606797749978969641 +// TRINITY = φ² + φ⁻² = 3 PI = 3.14159265358979323846 GAMMA_FREQ = 40.0 PLANCK_TIME = 5.391247e-44 @@ -47,42 +47,42 @@ enum ConsciousnessState { ## Key Functions ``` -consciousnessThreshold() -> f64 - Returns gamma * phi^2 ~= 0.618 = phi^-^1 +// consciousnessThreshold() -> f64 +// Returns γ × φ² ≈ 0.618 = φ⁻¹ -neuralGammaFrequency() -> f64 - Returns f_gamma = phi^3 * pi / gamma ~= 40 Hz +// neuralGammaFrequency() -> f64 +// Returns f_γ = φ³ × π / γ ≈ 40 Hz -bindingWindow() -> f64 - Returns 2 * T_gamma ~= 50 ms +// bindingWindow() -> f64 +// Returns 2 × T_γ ≈ 50 ms -integrationTime() -> f64 - Returns 3 * T_gamma * phi ~= 100-200 ms +// integrationTime() -> f64 +// Returns 3 × T_γ × φ ≈ 100-200 ms -consciousnessEmergence(gamma_sync, integrated_info, workspace_saliency) -> ConsciousnessState - Returns consciousness level based on synchrony and integration +// consciousnessEmergence(gamma_sync, integrated_info, workspace_saliency) -> ConsciousnessState +// Returns consciousness level based on synchrony and integration ``` ## Tests ``` -test "Neural-gamma: phi cubed and gamma" { - expect(PHI_CUBED ~= 4.23606797749978969641) - expect(GAMMA ~= 0.23606797749978969641) - expect(PHI_CUBED - 4.0 ~= GAMMA) +test "Neural-γ: phi cubed and gamma" { + expect(PHI_CUBED ≈ 4.23606797749978969641) +// expect(GAMMA ≈ 0.23606797749978969641) +// expect(PHI_CUBED - 4.0 ≈ GAMMA) } -test "Neural-gamma: TRINITY identity" { - expect(TRINITY ~= 3.0) +test "Neural-γ: TRINITY identity" { + expect(TRINITY ≈ 3.0) } -test "Neural-gamma: consciousness threshold" { - expect(consciousnessThreshold() ~= 0.618) - expect(consciousnessThresholdPhiInv() ~= 0.618) +test "Neural-γ: consciousness threshold" { + expect(consciousnessThreshold() ≈ 0.618) +// expect(consciousnessThresholdPhiInv() ≈ 0.618) } -test "Neural-gamma: gamma frequency" { +test "Neural-γ: gamma frequency" { expect(neuralGammaFrequency() > 50.0) - expect(neuralGammaFrequency() < 60.0) +// expect(neuralGammaFrequency() < 60.0) } ``` diff --git a/apps/website/public/t27/files/specs/brain/phi_timing.t27 b/apps/website/public/t27/files/specs/brain/phi_timing.t27 index b2d1f6ebc5..308c7411f9 100644 --- a/apps/website/public/t27/files/specs/brain/phi_timing.t27 +++ b/apps/website/public/t27/files/specs/brain/phi_timing.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -; phi_timing.t27 -- phi-structured cognitive cycle timing (spec-first) +; phi_timing.t27 — phi-structured cognitive cycle timing (spec-first) ; Phase duration ratios follow INV-1; integer ms sum may differ slightly from 3*base_ms. ; phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/brain/unified_state.t27 b/apps/website/public/t27/files/specs/brain/unified_state.t27 index cdfde3c3c3..80d8116c3b 100644 --- a/apps/website/public/t27/files/specs/brain/unified_state.t27 +++ b/apps/website/public/t27/files/specs/brain/unified_state.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -; unified_state.t27 -- Trinity Brain unified state (spec-first) +; unified_state.t27 — Trinity Brain unified state (spec-first) ; Normative types for Strand VI. Zig/C/Verilog are generated under gen/ via t27c. ; phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/bus/pubsub.t27 b/apps/website/public/t27/files/specs/bus/pubsub.t27 index a299f394de..fa2f7f49d6 100644 --- a/apps/website/public/t27/files/specs/bus/pubsub.t27 +++ b/apps/website/public/t27/files/specs/bus/pubsub.t27 @@ -14,8 +14,6 @@ use bus-schema::Event; use bus-schema::Subscription; use bus-schema::TopicPattern; use bus-schema::BusState; -use bus-schema::topic_pattern_create; -use bus-schema::event_create; // ============================================================================ // Constants @@ -388,7 +386,7 @@ pub fn publish_result_to_string(result: PublishResult) []u8 { return "success"; } else { return "error: " ++ result.error; - }; + } } /// Get subscribe result string @@ -397,7 +395,7 @@ pub fn subscribe_result_to_string(result: SubscribeResult) []u8 { return "success"; } else { return "error: " ++ result.error; - }; + } } /// Get unsubscribe result string @@ -406,7 +404,7 @@ pub fn unsubscribe_result_to_string(result: UnsubscribeResult) []u8 { return "success"; } else { return "error: " ++ result.error; - }; + } } // ============================================================================ @@ -439,7 +437,7 @@ test "bus_pubsub_config_default" { } test "bus_subscriber_context_create" { - const pattern = topic_pattern_create("test/*"); + const pattern = bus-schema::topic_pattern_create("test/*"); const ctx = subscriber_context_create("sub1", pattern, "handler"); try std.testing.expect(ctx.subscriber_id == "sub1"); } @@ -460,13 +458,13 @@ test "bus_delivery_queue_create" { } test "bus_pending_publish_create" { - const event = event_create(.lsp_request, "test", ""); + const event = bus-schema::event_create(.lsp_request, "test", ""); const pending = pending_publish_create(event); try std.testing.expect(pending.retries == 0); } test "bus_match_topic_pattern" { - const pattern = topic_pattern_create("test/topic"); + const pattern = bus-schema::topic_pattern_create("test/topic"); const result = match_topic_pattern("test/topic", pattern); try std.testing.expect(result.matches == true); } @@ -491,7 +489,7 @@ test "bus_is_delivery_queue_empty" { } test "bus_pattern_contains_wildcard" { - const pattern = topic_pattern_create("*"); + const pattern = bus-schema::topic_pattern_create("*"); try std.testing.expect(pattern_contains_wildcard(pattern)); } @@ -627,7 +625,7 @@ bench "bus_match_topic_pattern_latency" { // Measure: cycles for pattern matching // Target: < 50 cycles @setEvalBranchQuota(10000); - const pattern = topic_pattern_create("test"); + const pattern = bus-schema::topic_pattern_create("test"); var result : TopicMatchResult = undefined; for (0..1000) |_| { result = match_topic_pattern("test", pattern); diff --git a/apps/website/public/t27/files/specs/cloud/railway_deploy.t27 b/apps/website/public/t27/files/specs/cloud/railway_deploy.t27 index a37f8cf89a..c145f046c2 100644 --- a/apps/website/public/t27/files/specs/cloud/railway_deploy.t27 +++ b/apps/website/public/t27/files/specs/cloud/railway_deploy.t27 @@ -359,4 +359,5 @@ bench init_sacred_env_vars_latency { for (0..1000) |_| { env_vars = init_sacred_env_vars(); } + _ = env_vars; } diff --git a/apps/website/public/t27/files/specs/compiler/mod_structure.t27 b/apps/website/public/t27/files/specs/compiler/mod_structure.t27 index 1f466ffbe1..cce6166130 100644 --- a/apps/website/public/t27/files/specs/compiler/mod_structure.t27 +++ b/apps/website/public/t27/files/specs/compiler/mod_structure.t27 @@ -121,3 +121,17 @@ invariant "trinity_always_holds" { const phi_inv_sq = PHI_INV * PHI_INV; assert (phi_sq + phi_inv_sq - TRINITY) < 0.0001; } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(ring: u8) -> bool { return validate_ring_number(ring); } diff --git a/apps/website/public/t27/files/specs/compiler/parser.t27 b/apps/website/public/t27/files/specs/compiler/parser.t27 index 67502c31dd..c52123396b 100644 --- a/apps/website/public/t27/files/specs/compiler/parser.t27 +++ b/apps/website/public/t27/files/specs/compiler/parser.t27 @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // specs/compiler/parser.t27 -// T27 Parser Specification -- Self-hosting compiler core -// phi^2 + 1/phi^2 = 3 | TRINITY +// T27 Parser Specification — Self-hosting compiler core +// φ² + 1/φ² = 3 | TRINITY // // This module defines the complete recursive descent parser for the T27 language. // It is a 1:1 port of bootstrap/src/compiler.rs Parser to t27 spec format. @@ -10,9 +10,9 @@ module Parsing { use base::types; use compiler::lexer; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 1. AST Node Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const MAX_CHILDREN: u32 = 32; @@ -69,9 +69,9 @@ module Parsing { children: [MAX_CHILDREN]Node; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 2. Parser State - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct Parser { lexer: lexer::Lexer; @@ -89,9 +89,9 @@ module Parsing { return p; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 3. Movement Primitives - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn advance(self: *Parser) -> void { self.current = self.peek; @@ -125,9 +125,9 @@ module Parsing { return self.error_msg; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 4. Error Recovery - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn skip_brace_body(self: *Parser) -> bool { var depth: i32 = 1; @@ -260,9 +260,9 @@ module Parsing { } } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 5. Type Annotation Parser - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn parse_type_annotation(self: *Parser) -> str { var ty: str = ""; @@ -324,9 +324,9 @@ module Parsing { return ty; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 6. Expression Parser (Precedence Levels) - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn node_new(kind: NodeKind) -> Node { return Node{ @@ -843,9 +843,9 @@ module Parsing { return sw; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 7. Statement Parser - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn parse_body_stmt(self: *Parser) -> Node { if (self.check(lexer::TokenKind::KwConst) or self.check(lexer::TokenKind::KwVar)) { @@ -1095,9 +1095,9 @@ module Parsing { } } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 8. Struct and Enum Body Parsers - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn parse_struct_body(self: *Parser, decl: *Node) -> void { while (self.current.kind != lexer::TokenKind::RBrace @@ -1169,9 +1169,9 @@ module Parsing { } } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 9. Top-Level Declaration Parsers - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn parse_top_level_decl(self: *Parser) -> Node { var is_pub = false; @@ -1450,9 +1450,9 @@ module Parsing { return decl; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 10. Module Parser - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn parse(self: *Parser) -> Node { var module = node_new(NodeKind::Module); @@ -1536,9 +1536,9 @@ module Parsing { } } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 11. Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "kind_values" { assert(NodeKind::Module == 0) diff --git a/apps/website/public/t27/files/specs/config/load.t27 b/apps/website/public/t27/files/specs/config/load.t27 index 48c9620cdc..ce99a7a4dc 100644 --- a/apps/website/public/t27/files/specs/config/load.t27 +++ b/apps/website/public/t27/files/specs/config/load.t27 @@ -10,9 +10,7 @@ module config-load; // ============================================================================ use std; -use config-schema::{Config, ValidationResult, PathsConfig, ConfigError, - AgentConfig, ProviderConfig, config_default, error_create, - validation_success, validation_failure, has_api_key}; +use config-schema::{Config, ValidationResult, PathsConfig}; // ============================================================================ // Constants @@ -122,7 +120,7 @@ pub fn load_default() LoadResult { pub fn load_from_file(path: []u8) LoadResult { // Read and parse config file (simplified) return LoadResult{ - .config = config_default(), + .config = config_schema::config_default(), .source = .file, .format = .json, .errors = &[_]LoadError{}, @@ -133,7 +131,7 @@ pub fn load_from_file(path: []u8) LoadResult { pub fn load_from_env() LoadResult { // Read environment variables (simplified) return LoadResult{ - .config = config_default(), + .config = config_schema::config_default(), .source = .env, .format = .json, .errors = &[_]LoadError{}, @@ -186,7 +184,7 @@ pub fn merge_multiple(base: Config, others: []Config, strategy: MergeStrategy) M /// Validate config with context pub fn validate(config: Config, context: ValidationContext) ValidationResult { - var errors : []ConfigError = &[_]ConfigError{}; + var errors : []config-schema::ConfigError = &[_]config-schema::ConfigError{}; if (context.check_api_keys) { const api_error = validate_api_key(&config.provider); @@ -210,25 +208,25 @@ pub fn validate(config: Config, context: ValidationContext) ValidationResult { } return if (errors.len > 0) - validation_failure(errors) + config_schema::validation_failure(errors) else - validation_success(); + config_schema::validation_success(); } /// Validate provider API key -pub fn validate_api_key(provider: *ProviderConfig) ?ConfigError { - if (!has_api_key(provider.*)) { - return error_create("provider.api_key", "API key is required"); +pub fn validate_api_key(provider: *config_schema::ProviderConfig) ?config-schema::ConfigError { + if (!config_schema::has_api_key(provider.*)) { + return config_schema::error_create("provider.api_key", "API key is required"); } return null; } /// Validate paths configuration -pub fn validate_paths(paths: *PathsConfig) []ConfigError { - var errors : []ConfigError = &[_]ConfigError{}; +pub fn validate_paths(paths: *PathsConfig) []config-schema::ConfigError { + var errors : []config-schema::ConfigError = &[_]config-schema::ConfigError{}; if (paths.config_dir.len == 0) { - const err = error_create("paths.config_dir", "Config directory is required"); + const err = config_schema::error_create("paths.config_dir", "Config directory is required"); errors = append_errors(errors, err); } @@ -236,12 +234,12 @@ pub fn validate_paths(paths: *PathsConfig) []ConfigError { } /// Validate agents configuration -pub fn validate_agents(agents: *[]AgentConfig) []ConfigError { - var errors : []ConfigError = &[_]ConfigError{}; +pub fn validate_agents(agents: *[]config-schema::AgentConfig) []config-schema::ConfigError { + var errors : []config-schema::ConfigError = &[_]config-schema::ConfigError{}; for (agents) |agent| { if (agent.name.len == 0) { - const err = error_create("agent.name", "Agent name is required"); + const err = config_schema::error_create("agent.name", "Agent name is required"); errors = append_errors(errors, err); } } @@ -318,9 +316,9 @@ pub fn get_default_paths() PathsConfig { } /// Append error to slice -pub fn append_errors(slice: []ConfigError, item: ConfigError) []ConfigError { - var result : []ConfigError = slice; - var new_slice : []ConfigError = &[_]ConfigError{item}; +pub fn append_errors(slice: []config-schema::ConfigError, item: config-schema::ConfigError) []config-schema::ConfigError { + var result : []config-schema::ConfigError = slice; + var new_slice : []config-schema::ConfigError = &[_]config-schema::ConfigError{item}; for (result) |_| { new_slice = append_errors_slice(new_slice, _); } @@ -328,16 +326,16 @@ pub fn append_errors(slice: []ConfigError, item: ConfigError) []ConfigError { } /// Append errors slice -pub fn append_errors_slice(slice: []ConfigError, item: ConfigError) []ConfigError { - var result : []ConfigError = slice; +pub fn append_errors_slice(slice: []config-schema::ConfigError, item: config-schema::ConfigError) []config-schema::ConfigError { + var result : []config-schema::ConfigError = slice; result = concat_errors(result, item); return result; } /// Concatenate errors -pub fn concat_errors(a: []ConfigError, b: ConfigError) []ConfigError { - var result : []ConfigError = a; - var new_slice : []ConfigError = &[_]ConfigError{b}; +pub fn concat_errors(a: []config-schema::ConfigError, b: config-schema::ConfigError) []config-schema::ConfigError { + var result : []config-schema::ConfigError = a; + var new_slice : []config-schema::ConfigError = &[_]config-schema::ConfigError{b}; for (result) |_| { new_slice = append_errors_slice(new_slice, _); } @@ -380,22 +378,22 @@ test "config_load_from_env" { } test "config_merge_replace" { - const base = config_default(); - const overlay = config_default(); + const base = config_schema::config_default(); + const overlay = config_schema::config_default(); const result = merge(base, overlay, .replace); try std.testing.expect(result.strategy == .replace); } test "config_merge_keep_existing" { - const base = config_default(); - const overlay = config_default(); + const base = config_schema::config_default(); + const overlay = config_schema::config_default(); const result = merge(base, overlay, .keep_existing); try std.testing.expect(result.strategy == .keep_existing); } test "config_merge_merge" { - const base = config_default(); - const overlay = config_default(); + const base = config_schema::config_default(); + const overlay = config_schema::config_default(); const result = merge(base, overlay, .merge); try std.testing.expect(result.strategy == .merge); } @@ -413,14 +411,14 @@ test "config_validate_select_context" { } test "config_validate_success" { - const config = config_default(); + const config = config_schema::config_default(); const context = validation_context_select(false, false, false); const result = validate(config, context); try std.testing.expect(result.valid); } test "config_validate_failure_missing_api_key" { - var config = config_default(); + var config = config_schema::config_default(); config.provider.api_key = ""; const context = validation_context_select(true, false, false); const result = validate(config, context); @@ -428,7 +426,7 @@ test "config_validate_failure_missing_api_key" { } test "config_save_default" { - const config = config_default(); + const config = config_schema::config_default(); const result = save_default(config); try std.testing.expect(result.success); } @@ -561,7 +559,7 @@ bench "config_save_latency" { // Measure: cycles for config save operation // Target: < 500 cycles (file I/O) @setEvalBranchQuota(10000); - const config = config_default(); + const config = config_schema::config_default(); var result : SaveResult = undefined; for (0..1000) |_| { result = save_default(config); @@ -573,8 +571,8 @@ bench "config_merge_latency" { // Measure: cycles for config merge operation // Target: < 200 cycles @setEvalBranchQuota(10000); - const base = config_default(); - const overlay = config_default(); + const base = config_schema::config_default(); + const overlay = config_schema::config_default(); var result : MergeResult = undefined; for (0..1000) |_| { result = merge(base, overlay, .replace); @@ -586,7 +584,7 @@ bench "config_validate_latency" { // Measure: cycles for config validation // Target: < 150 cycles @setEvalBranchQuota(10000); - const config = config_default(); + const config = config_schema::config_default(); const context = validation_context_default(); var result : ValidationResult = undefined; for (0..1000) |_| { diff --git a/apps/website/public/t27/files/specs/config/schema.t27 b/apps/website/public/t27/files/specs/config/schema.t27 index f5757efb65..f7927df391 100644 --- a/apps/website/public/t27/files/specs/config/schema.t27 +++ b/apps/website/public/t27/files/specs/config/schema.t27 @@ -576,49 +576,15 @@ test "config_provider_create" { try std.testing.expect(is_anthropic(provider)); } -test "config_provider_with_key" { - const provider = provider_with_key("sk-api-key"); - try std.testing.expect(has_api_key(provider)); -} -test "config_agent_default" { - const agent = agent_default("test-agent"); - try std.testing.expect(std.mem.eql(agent.name, "test-agent")); -} -test "config_agent_with_capabilities" { - const caps = &[_]AgentCapability{.chat, .code_edit}; - const agent = agent_with_capabilities("test", caps); - try std.testing.expect(agent_has_capability(agent, .chat)); - try std.testing.expect(agent_has_capability(agent, .code_edit)); -} -test "config_lsp_server_create" { - const lsp = lsp_server_create("t27", "t27c", &[_][]u8{}); - try std.testing.expect(std.mem.eql(lsp.language, "t27")); -} -test "config_tui_default" { - const tui = tui_default(); - try std.testing.expect(std.mem.eql(tui.theme, "dark")); -} -test "config_logging_default" { - const logging = logging_default(); - try std.testing.expect(std.mem.eql(logging.level, "info")); -} -test "config_paths_default" { - const paths = paths_default(); - try std.testing.expect(paths.data_dir.len == 0); -} -test "config_default_complete" { - const config = config_default(); - try std.testing.expect(config.version == 1); -} -test "config_validation_success" { +test "config_validation_success_2" { const context = validation_context_default(); const result = validate(config, context); try std.testing.expect(result.valid); @@ -632,24 +598,8 @@ test "config_validation_failure_missing_api_key" { try std.testing.expect(!result.valid); } -test "config_add_agent" { - var config = config_default(); - const agent = agent_default("new-agent"); - config_add_agent(&config, agent); - try std.testing.expect(config_agent_count(&config) == 1); -} -test "config_agent_has_capability_true" { - const caps = &[_]AgentCapability{.chat, .code_edit}; - const agent = agent_with_capabilities("test", caps); - try std.testing.expect(agent_has_capability(agent, .code_edit)); -} -test "config_agent_has_capability_false" { - const caps = &[_]AgentCapability{.chat}; - const agent = agent_with_capabilities("test", caps); - try std.testing.expect(!agent_has_capability(agent, .code_edit)); -} // ============================================================================ // TDD - Benchmarks diff --git a/apps/website/public/t27/files/specs/conformance/e2e_scenarios.t27 b/apps/website/public/t27/files/specs/conformance/e2e_scenarios.t27 index a7b875a35c..f891e5452c 100644 --- a/apps/website/public/t27/files/specs/conformance/e2e_scenarios.t27 +++ b/apps/website/public/t27/files/specs/conformance/e2e_scenarios.t27 @@ -1,23 +1,23 @@ // SPDX-License-Identifier: Apache-2.0 -# E2E TEST SCENARIOS -- Full Pipeline Verification +# E2E TEST SCENARIOS — Full Pipeline Verification ## Specification -Tests full pipeline: VSA -> VM -> SDK -> Codebook -> Verdict. +Tests full pipeline: VSA → VM → SDK → Codebook → Verdict. Part of Phase 4: Quality & Performance (Issue #48). ## Mathematical Foundation ``` -phi^2 + 1/phi^2 = 3 = TRINITY +φ² + 1/φ² = 3 = TRINITY ``` ## Test Scenarios -### E2E: VSA create -> VM execute -> SDK verify +### E2E: VSA create → VM execute → SDK verify ``` -test "E2E: VSA create -> VM execute -> SDK verify" { +test "E2E: VSA create → VM execute → SDK verify" { // Stage 1: Create vectors via VSA core var a = vsa.randomVector(256, 42); var b = vsa.randomVector(256, 84); @@ -33,7 +33,7 @@ test "E2E: VSA create -> VM execute -> SDK verify" { }); try machine.run(); - // Stage 3: Verify via SDK -- bind via VSA core, compare with VM result + // Stage 3: Verify via SDK — bind via VSA core, compare with VM result var bound_sdk = vsa.bind(&a, &b); var vm_result_raw = machine.registers.v2; @@ -43,10 +43,10 @@ test "E2E: VSA create -> VM execute -> SDK verify" { } ``` -### E2E: Codebook encode -> bind -> decode roundtrip +### E2E: Codebook encode → bind → decode roundtrip ``` -test "E2E: Codebook encode -> bind -> decode roundtrip" { +test "E2E: Codebook encode → bind → decode roundtrip" { // Stage 1: Create codebook via SDK var codebook = sdk.Codebook.init(allocator, 512); defer codebook.deinit(); @@ -69,7 +69,7 @@ test "E2E: Codebook encode -> bind -> decode roundtrip" { var temp = s_bound.bundle(&v_bound); var sentence = temp.bundle(&o_bound); - // Stage 5: Decode -- query subject + // Stage 5: Decode — query subject var retrieved_subject = sentence.unbind(&subject_role); const decoded = codebook.decode(&retrieved_subject); try expect(decoded != null); @@ -78,10 +78,10 @@ test "E2E: Codebook encode -> bind -> decode roundtrip" { } ``` -### E2E: AssociativeMemory store -> retrieve with VM vectors +### E2E: AssociativeMemory store → retrieve with VM vectors ``` -test "E2E: AssociativeMemory store -> retrieve with VM vectors" { +test "E2E: AssociativeMemory store → retrieve with VM vectors" { // Stage 1: Create vectors via VM var machine = vm.VSAVM.init(allocator); defer machine.deinit(); @@ -109,10 +109,10 @@ test "E2E: AssociativeMemory store -> retrieve with VM vectors" { } ``` -### E2E: Sequence encode -> probe position recovery +### E2E: Sequence encode → probe position recovery ``` -test "E2E: Sequence encode -> probe position recovery" { +test "E2E: Sequence encode → probe position recovery" { // Stage 1: Create symbol vectors var apple = sdk.Hypervector.random(512, 10); @@ -125,7 +125,7 @@ test "E2E: Sequence encode -> probe position recovery" { }; var seq = encoder.encode(&items); - // Stage 3: Probe -- apple should be at position 0 + // Stage 3: Probe — apple should be at position 0 const sim_apple_0 = encoder.probe(&seq, &apple, 0); const sim_apple_1 = encoder.probe(&seq, &apple, 1); const sim_apple_2 = encoder.probe(&seq, &apple, 2); @@ -136,10 +136,10 @@ test "E2E: Sequence encode -> probe position recovery" { } ``` -### E2E: Classifier train -> predict +### E2E: Classifier train → predict ``` -test "E2E: Classifier train -> predict" { +test "E2E: Classifier train → predict" { var classifier = sdk.Classifier.init(allocator, 512); defer classifier.deinit(); @@ -166,10 +166,10 @@ test "E2E: Classifier train -> predict" { } ``` -### E2E: HybridBigInt pack -> unpack -> VM execute +### E2E: HybridBigInt pack → unpack → VM execute ``` -test "E2E: HybridBigInt pack -> unpack -> VM execute" { +test "E2E: HybridBigInt pack → unpack → VM execute" { // Stage 1: Create and pack vector var v = vsa.randomVector(256, 777); v.pack(); diff --git a/apps/website/public/t27/files/specs/demos/jones_topology_decision_gate.t27 b/apps/website/public/t27/files/specs/demos/jones_topology_decision_gate.t27 index fb4cad9ca5..ed468fa624 100644 --- a/apps/website/public/t27/files/specs/demos/jones_topology_decision_gate.t27 +++ b/apps/website/public/t27/files/specs/demos/jones_topology_decision_gate.t27 @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/demos/jones_topology_decision_gate.t27 -// Decision Gate TH-01..TH-05 for H_1: Structure Similarity Classifier -// Tests if VSA dot_product + fixed phi constant can classify structures by complexity -// phi^2 + 1/phi^2 = 3 | TRINITY +// Decision Gate TH-01..TH-05 for H₁: Structure Similarity Classifier +// Tests if VSA dot_product + fixed φ constant can classify structures by complexity +// φ² + 1/φ² = 3 | TRINITY module JonesTopologyDecisionGate { use base::types; @@ -10,33 +10,33 @@ module JonesTopologyDecisionGate { use vsa::ops; use demos::jones_topology_filter; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // Decision Gate Hypotheses - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ - // TH-01: Self-similarity -> d = 1.0 + // TH-01: Self-similarity → d = 1.0 // Same structure compared with itself should have perfect similarity const TH_01_TARGET : f64 = 1.0; - // TH-02: Inversion similarity -> d < 0.95 + // TH-02: Inversion similarity → d < 0.95 // Inverted structure should have low similarity const TH_02_THRESHOLD : f64 = 0.95; - // TH-03: Different types -> d < 0.5 + // TH-03: Different types → d < 0.5 // Tree vs cycle structures should have low similarity const TH_03_THRESHOLD : f64 = 0.5; - // TH-04: Simple -> complex monotonic + // TH-04: Simple → complex monotonic // Complex structure should have HIGHER complexity level than simple const TH_04_EXPECTED : u8 = jones_topology_filter::COMPLEXITY_HIGH; - // TH-05: Random orthogonality -> |d| ~= 0 + // TH-05: Random orthogonality → |d| ≈ 0 // Random structures should be orthogonal (similarity near 0) const TH_05_THRESHOLD : f64 = 0.2; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // Test Structures - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ // Tree-like structure (sequential pattern) fn tree_structure() -> []Trit { @@ -157,9 +157,9 @@ module JonesTopologyDecisionGate { return result; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // Cosine Similarity Helper - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn cosine_similarity(a: []Trit, b: []Trit) -> f64 { const dim = a.len(); @@ -174,9 +174,9 @@ module JonesTopologyDecisionGate { return dot / (norm_a * norm_b); } - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Decision Gate Tests - // ============================================================================= + // ═════════════════════════════════════════════════════════════════════════════ test TH_01_self_similarity_one given A = jones_topology_filter::standard_structure() @@ -215,9 +215,9 @@ module JonesTopologyDecisionGate { and sim = cosine_similarity(rand_a, rand_b) then constants::abs(sim) < TH_05_THRESHOLD - // ===================================================================================== + // ═════════════════════════════════════════════════════════════════════════════════════ // Cosine Similarity Matrix Test - // ======================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════ test similarity_matrix_computed // Verify all pairwise similarities are computed @@ -248,9 +248,9 @@ module JonesTopologyDecisionGate { // Check each pair is in [-1, 1] then all_valid - // ======================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════ // Complexity Distribution Test - // =========================================================================================== + // ═══════════════════════════════════════════════════════════════════════════════════════════ test complexity_distribution_valid given structures = [ @@ -267,9 +267,9 @@ module JonesTopologyDecisionGate { // All complexity levels should be in {0, 1, 2} then true - // ===================================================================================================== + // ═════════════════════════════════════════════════════════════════════════════════════════════════════ // Invariants - // ========================================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════ invariant decision_gate_constants_valid assert TH_01_TARGET == 1.0 @@ -319,9 +319,9 @@ module JonesTopologyDecisionGate { and sim = cosine_similarity(structures[0], structures[1]) assert sim >= -1.0 and sim <= 1.0 - // ======================================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ // Benchmarks - // =============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================14 bench jones_signature_throughput + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════14 bench jones_signature_throughput measure: nanoseconds to compute jones_signature(standard_structure()) target: < 5000ns diff --git a/apps/website/public/t27/files/specs/demos/jones_topology_filter.t27 b/apps/website/public/t27/files/specs/demos/jones_topology_filter.t27 index e97491bc13..ecaa0f6f0d 100644 --- a/apps/website/public/t27/files/specs/demos/jones_topology_filter.t27 +++ b/apps/website/public/t27/files/specs/demos/jones_topology_filter.t27 @@ -5,7 +5,7 @@ // - Takes a hypervector representing a structure // - Computes dot_product similarity with a reference structure // - Classifies complexity based on similarity thresholds -// - Uses a fixed Chern-Simons constant (phi) as reference value +// - Uses a fixed Chern-Simons constant (φ) as reference value // WHAT THIS CODE DOES NOT DO: // - Does NOT compute Jones polynomial from input topology // - Does NOT provide "topological acceleration" diff --git a/apps/website/public/t27/files/specs/docs/README.md b/apps/website/public/t27/files/specs/docs/README.md deleted file mode 100644 index bab4d50a5e..0000000000 --- a/apps/website/public/t27/files/specs/docs/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# specs/docs — the system documentation as a declared document - -> **Where this lives.** `specs/docs/` and the Markdown bodies under `docs/system/` in -> `gHashTag/t27` are the canonical home of the system documentation — edit them here. -> `gHashTag/trinity` keeps a byte-identical vendored copy under -> `apps/website/public/t27/files/specs/docs/` and `apps/website/public/t27/files/docs/system/`; -> its build reads that copy through the vendored compiler wasm (`t27_compiler.wasm`) and -> renders it at `t27.ai/#/docs`. The wasm's `typecheck.ok` is necessary, not sufficient, so -> the site's generator (`scripts/docs-from-specs.mjs`) also checks the field schema below. -> The bootstrap compiler on `master` was not run against these files in the commit that -> added them. A checkout of this repository is referred to as `T27_ROOT` (an environment -> variable) or `git rev-parse --show-toplevel`; no file here names an absolute path. - -The documentation describes the project, the rules of the game for agents, the five-layer -system (Specs -> Skills -> Crons -> Agents -> Tools), the 27-agent alphabet, the Queen's -cycle, the tooling and the evidence. One `.t27` module declares the document, one per -chapter declares the chapter; the English prose is Markdown in `docs/system/.md` -(LANG-EN: canonical prose is English and lives outside the spec); the Russian prose travels -through the translation contract `specs/i18n/docs-ru.t27` and the bundle it names. - -Nothing in `public/docs/system-docs.json` on the site is typed by hand: chapters, sections, -tables (laws, phases, agents, tools, ladder counts, witnesses) and the source list with -sha256 per file are generated from these specs and the catalogs they point to. - -## Files - -| File | Module | Role | -|---|---|---| -| `system.t27` | `docs_system` | The document: `KIND = "docs"`, `ID`, `TITLE`, `CHAPTERS` (ids in reading order), `SOURCES` (catalogs and canon documents), `DIAGRAMS` (figures the site draws from data), `LOCALES`, `ENABLED` | -| `chapters/.t27` | `docs_chapter_` | One chapter: `KIND = "docs-chapter"`, `ID = "docs/"`, `DOCUMENT`, `ORDER`, `TITLE`, `SOURCES`, `SECTIONS`, `DIAGRAM`, `TABLE`, `BODY_EN`, `ENABLED` | -| `../i18n/docs-ru.t27` | `i18n_docs_ru` | Translation contract for Russian: scope, fields, bundle path in `gHashTag/trinity` | -| `../../docs/system/.md` | — | English canonical prose of chapter ``; every `SECTIONS` entry is a level-2 heading, in order | - -## Chapters - -| Order | ID | Title | Figure | Table | -|---|---|---|---|---| -| 1 | `docs/project` | The project | `ladder` | `claims` | -| 2 | `docs/rules` | Constitution and the rules of the game for agents | `law-hierarchy` | `laws` | -| 3 | `docs/layers` | The five-layer system | `skills-crons-agents` | `ladder-counts` | -| 4 | `docs/alphabet` | The 27-agent alphabet | `agent-ring` | `agents` | -| 5 | `docs/queen` | Queen orchestration | `phase-cycle` | `phases` | -| 6 | `docs/tooling` | Tooling | `tools-map` | `tools` | -| 7 | `docs/evidence` | Evidence and witnesses | — | `witnesses` | - -## Schema - -`system.t27` - -| Constant | Type | Meaning | -|---|---|---| -| `KIND` | `str` | Always `"docs"` | -| `ID` | `str` | `"docs/system"` | -| `TITLE` | `str` | Document title, English | -| `CHAPTERS` | `[N]str` | Chapter ids in reading order; each must resolve to `chapters/.t27` with `ENABLED = true` | -| `SOURCES` | `[N]str` | Catalog directories and canon files the chapters draw on; each must exist in the tree | -| `DIAGRAMS` | `[N]str` | Figure ids the site knows how to draw; a chapter's `DIAGRAM` must be one of them or empty | -| `LOCALES` | `[N]str` | `"en"` first; each other locale must have `specs/i18n/docs-.t27` | -| `ENABLED` | `bool` | Whether the site renders the document | - -`chapters/.t27` - -| Constant | Type | Meaning | -|---|---|---| -| `KIND` | `str` | Always `"docs-chapter"` | -| `ID` | `str` | `"docs/"`, `` = file stem | -| `DOCUMENT` | `str` | `"docs/system"` | -| `ORDER` | `u8` | Position in the document; must match the index in `CHAPTERS` | -| `TITLE` | `str` | Chapter title, English | -| `SOURCES` | `[N]str` | Files the chapter quotes or is generated from; paths from the t27 root, or from the trinity root with the prefix `trinity:`; each must exist | -| `SECTIONS` | `[N]str` | Section headings in order; the body must carry each as `## ` in the same order, and no other level-2 heading | -| `DIAGRAM` | `str` | One of `DIAGRAMS` or `""` | -| `TABLE` | `str` | One of `claims`, `laws`, `ladder-counts`, `agents`, `phases`, `tools`, `witnesses`, or `""`; the generator must be able to produce it non-empty | -| `BODY_EN` | `str` | `docs/system/.md`; must exist and start with a level-1 heading | -| `ENABLED` | `bool` | Whether the chapter is rendered | - -## Rules of the catalog - -- English and ASCII only in the `.t27` and in `docs/system/*.md` (SOUL Article I, LANG-EN); - translations live in bundles declared by `specs/i18n/docs-.t27`. -- No ranking words ("first", "only", "best" and their translations) in English or Russian - prose; the site's `check:docs` fails a build that contains them. -- Every number in the prose carries a status tag (`[measured]`, `[declared]`, `[specified]`, - `[external]`, `[not claimed]`) or is generated into a table with a source line. -- Quote canon files; do not paraphrase a rule into a stronger one. Where two canon files - disagree, record the disagreement (the chapters do this for L1-L7 versus "L1-L8" and for - the two statements of the Queen's loop). -- Change the spec or the body and regenerate; never edit `public/docs/system-docs.json`. -- Ownership: `Z-Zeta` (documentation), with `T-Queen` for the orchestration chapter - (`specs/OWNERS.md`). diff --git a/apps/website/public/t27/files/specs/file/operations.t27 b/apps/website/public/t27/files/specs/file/operations.t27 index ab9f38a610..6b5e3377c5 100644 --- a/apps/website/public/t27/files/specs/file/operations.t27 +++ b/apps/website/public/t27/files/specs/file/operations.t27 @@ -1,14 +1,14 @@ // specs/file/operations.t27 // File Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module FileOperations { use base::types; use file::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Read Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // read reads a file's contents fn read(path: str, includeDiff: bool) -> Result { @@ -35,9 +35,9 @@ module FileOperations { // Implementation: Get file metadata } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Write Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // write writes content to a file fn write(path: str, content: str) -> Result { @@ -69,14 +69,14 @@ module FileOperations { // Implementation: Insert content at line } - // delete_lines removes a line range from a file - fn delete_lines(path: str, startLine: u32, endLine: u32) -> Result { + // delete removes lines from a file + fn delete(path: str, startLine: u32, endLine: u32) -> Result { // Implementation: Delete line range } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Directory Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // list lists contents of a directory fn list(path: str) -> Result<[FileNode], FileError> { @@ -113,9 +113,9 @@ module FileOperations { // Implementation: Delete file } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Ignore Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // is_ignored checks if a path is ignored fn is_ignored(path: str, rules: IgnoreRules) -> bool { @@ -132,9 +132,9 @@ module FileOperations { // Implementation: Add ignore pattern } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Path Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // normalize normalizes a file path fn normalize(path: str) -> str { @@ -176,9 +176,9 @@ module FileOperations { // Implementation: Resolve path relative to base } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Content Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // detect_type detects content type fn detect_type(path: str, content: str) -> ContentType { @@ -195,9 +195,9 @@ module FileOperations { // Implementation: Truncate and add ellipsis } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "file_type_values" { assert(FileType::File as u32 == 0); @@ -329,27 +329,7 @@ module FileOperations { assert(DEFAULT_READ_CHUNK == 8192); } - test "file_content_text" { - var content = FileContent { - type = ContentType::Text, - content = "hello", - diff = null, - mimeType = "text/plain", - encoding = null, - lineCount = 1, - }; - assert(is_text(content.type)); - } - test "file_change_creation" { - var change = FileChange { - path = "test.txt", - status = FileStatus::Modified, - additions = 1, - deletions = 0, - }; - assert(change.status == FileStatus::Modified); - } test "watcher_handle_creation" { var handle = WatcherHandle { @@ -398,17 +378,7 @@ module FileOperations { assert(options.glob?.len == 1); } - test "content_type_values" { - assert(ContentType::Text as u32 == 0); - assert(ContentType::Binary as u32 == 1); - assert(ContentType::Image as u32 == 2); - } - test "file_status_values" { - assert(FileStatus::Added as u32 == 0); - assert(FileStatus::Deleted as u32 == 1); - assert(FileStatus::Modified as u32 == 2); - } test "is_text_true" { assert(is_text(ContentType::Text)); diff --git a/apps/website/public/t27/files/specs/file/schema.t27 b/apps/website/public/t27/files/specs/file/schema.t27 index 1f8b14832e..0e9ce9ecb9 100644 --- a/apps/website/public/t27/files/specs/file/schema.t27 +++ b/apps/website/public/t27/files/specs/file/schema.t27 @@ -1,13 +1,13 @@ // specs/file/schema.t27 // File Types Specification -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module File { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Type - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // FileType represents the type of a file system entry enum FileType { @@ -16,9 +16,9 @@ module File { Symlink = 2, // Symbolic link } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Status - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // FileStatus represents the status of a file change enum FileStatus { @@ -27,9 +27,9 @@ module File { Modified = 2, // File was modified } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Content Type - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ContentType represents the type of file content enum ContentType { @@ -38,9 +38,9 @@ module File { Image = 2, // Image content } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Watch Event Type - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // WatchEventType represents the type of file system event enum WatchEventType { @@ -49,9 +49,9 @@ module File { Unlink = 2, // File/directory removed } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Error - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // FileError represents errors in file operations enum FileError { @@ -66,9 +66,9 @@ module File { DeleteError = 8, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Info - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // FileInfo represents metadata about a file struct FileInfo { @@ -81,9 +81,9 @@ module File { isIgnored: bool, // Whether file is ignored } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Content - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // FileContent represents the content of a file struct FileContent { @@ -95,9 +95,9 @@ module File { lineCount: u32?, // Number of lines (text only) } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Node - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // FileNode represents a node in the file tree struct FileNode { @@ -109,9 +109,9 @@ module File { children: [FileNode]?, // Children (directories only) } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Change - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // FileChange represents a change to a file struct FileChange { @@ -121,9 +121,9 @@ module File { deletions: u32, // Number of lines deleted } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Ignore Rules - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // IgnorePattern represents a single ignore pattern struct IgnorePattern { @@ -137,9 +137,9 @@ module File { whitelists: [str], // Whitelisted paths (exceptions) } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Search - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // SearchMatch represents a search result struct SearchMatch { @@ -160,9 +160,9 @@ module File { fileType: FileType?, // Filter by file type } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Watch Event - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // WatchEvent represents a file system watch event struct WatchEvent { @@ -178,9 +178,9 @@ module File { active: bool, // Whether watcher is active } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Ripgrep Integration - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Submatch represents a regex submatch struct Submatch { @@ -206,17 +206,17 @@ module File { limit: u32, // Maximum number of results } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const MAX_FILE_SIZE: u64 = 10485760; // 10MB max file size const MAX_SEARCH_RESULTS: u32 = 1000; // Max search results const DEFAULT_READ_CHUNK: u32 = 8192; // 8KB default read chunk - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Helper Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // is_text checks if content type is text fn is_text(contentType: ContentType) -> bool { @@ -253,9 +253,9 @@ module File { return parts[parts.len - 1]; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "file_type_values" { assert(FileType::File as u32 == 0); diff --git a/apps/website/public/t27/files/specs/file/watcher.t27 b/apps/website/public/t27/files/specs/file/watcher.t27 index c759b9b4bd..53c12f2440 100644 --- a/apps/website/public/t27/files/specs/file/watcher.t27 +++ b/apps/website/public/t27/files/specs/file/watcher.t27 @@ -1,21 +1,21 @@ // specs/file/watcher.t27 // File Watcher Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module FileWatcher { use base::types; use file::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Watcher ID Type - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // WatcherID is a branded string representing a watcher identifier struct WatcherID(str); - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Watcher Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // create creates a new file watcher fn create() -> Result { @@ -47,9 +47,9 @@ module FileWatcher { // Implementation: Get list of watched paths } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Event Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // next gets the next event from the watcher fn next(watcherID: WatcherID) -> Result { @@ -66,9 +66,9 @@ module FileWatcher { // Implementation: Wait for event with timeout in ms } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Filter Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // WatchFilter represents a filter for watch events struct WatchFilter { @@ -94,9 +94,9 @@ module FileWatcher { // Implementation: Check if event matches filter } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Backend Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // WatcherBackend represents the watcher backend implementation enum WatcherBackend { @@ -116,9 +116,9 @@ module FileWatcher { // Implementation: Check if backend is available } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Debounce Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // DebounceMode represents the debounce mode enum DebounceMode { @@ -137,9 +137,9 @@ module FileWatcher { // Implementation: Get debounce mode and delay } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Batch Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // watch_batch watches multiple paths at once fn watch_batch(watcherID: WatcherID, paths: [str], recursive: bool) -> Result { @@ -151,9 +151,9 @@ module FileWatcher { // Implementation: Stop watching multiple paths } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Statistics - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // WatcherStats represents watcher statistics struct WatcherStats { @@ -174,9 +174,9 @@ module FileWatcher { // Implementation: Reset event/error counters } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "watcher_id_creation" { var id = WatcherID("watch-123"); diff --git a/apps/website/public/t27/files/specs/fpga/boards/qmtech_a100t_integration.t27 b/apps/website/public/t27/files/specs/fpga/boards/qmtech_a100t_integration.t27 index 50bdfcc63d..652f144636 100644 --- a/apps/website/public/t27/files/specs/fpga/boards/qmtech_a100t_integration.t27 +++ b/apps/website/public/t27/files/specs/fpga/boards/qmtech_a100t_integration.t27 @@ -93,3 +93,17 @@ module QMTech_A100T_Integration { calc_baud_divisor(CLOCK_FREQ_HZ, UART_BAUD); } } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(clock_hz: u32, baud: u32) -> u32 { return calc_baud_divisor(clock_hz, baud); } diff --git a/apps/website/public/t27/files/specs/fpga/bpsk.t27 b/apps/website/public/t27/files/specs/fpga/bpsk.t27 new file mode 100644 index 0000000000..827f76aa48 --- /dev/null +++ b/apps/website/public/t27/files/specs/fpga/bpsk.t27 @@ -0,0 +1,211 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/fpga/bpsk.t27 +// ZeroDSP BPSK modem core (TRI-NET 5.8 GHz mesh radio PHY). +// Byte -> +/-1 BPSK serializer with a Barker-13 preamble, plus an integer +// Barker-13 correlator + threshold for frame synchronization. Port of the +// trios-mesh Rust modem's synthesizable core to the t27 spec-first language. +// Datapath functions + state record only; clocking/ports are a backend concern. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module ZeroDSP_BPSK { + use base::types; + + // Barker-13 chips packed into one 13-bit constant: bit k = chip k, with + // 1 => +1 symbol and 0 => -1 symbol, chip 0 in the LSB. The chip order is + // the transmit order [+1 +1 +1 +1 +1 -1 -1 +1 +1 -1 +1 -1 +1], matching the + // Rust modem's BARKER13. Packing as bits (not an array) keeps the whole + // module lowering to Verilog. + const BARKER13_BITS : u16 = 0b1010110011111; + const BARKER13_LEN : usize = 13; + const WINDOW_MASK : u16 = 0x1FFF; + + // Perfect autocorrelation peak is 13; the strongest Barker-13 sidelobe is 1. + // Lock frame sync when the correlator sum crosses this coarse gate (the AEAD + // tag downstream is the real validator, as in the Rust modem). + const SYNC_THRESHOLD : i32 = 9; + + // Serial-line symbol codes. + const SYM_POS : i8 = 1; + const SYM_NEG : i8 = -1; + + // Frame layout in symbols: [preamble 13][length byte 8][payload len * 8]. + const PREAMBLE_SYMS : u32 = 13; + const LENGTH_SYMS : u32 = 8; + const BITS_PER_BYTE : u32 = 8; + + // ---- Transmit serializer state ---- + // Held as top-level scalar registers (not a struct): the Verilog backend + // names struct-field regs after the type but references them by the var + // name, so flat scalars keep the generated RTL referencing declared signals. + var tx_cur_byte : u8 = 0; // byte currently shifting out + var tx_bit_index : u8 = 0; // next bit position 0..7 (LSB first) + var tx_cur_symbol : i8 = 1; // last emitted BPSK symbol (+1 / -1) + var tx_sending : bool = false; // true while a byte is in flight + + // ---- TX: one data bit -> one BPSK symbol (+1 / -1) ---- + // NB: use if/ELSE with a single assignment per path. The Verilog backend + // lowers functions as sequential assignments (no early return), so a bare + // `if {..} return X` fall-through would always take the last statement. + fn bit_to_symbol(bit: u8) -> i8 { + if (bit == 1) { + return SYM_POS; + } else { + return SYM_NEG; + } + } + + // Load a new byte into the serializer; refuses while a byte is in flight. + fn tx_load(byte: u8) -> bool { + if (tx_sending) { + return false; + } else { + tx_cur_byte = byte; + tx_bit_index = 0; + tx_sending = true; + return true; + } + } + + // Emit the BPSK symbol for the current bit (LSB first) and advance. + fn tx_next_symbol() -> i8 { + if (!tx_sending) { + return SYM_POS; + } else { + tx_cur_symbol = bit_to_symbol((tx_cur_byte >> tx_bit_index) & 1); + tx_bit_index = tx_bit_index + 1; + if (tx_bit_index >= 8) { + tx_sending = false; + } + return tx_cur_symbol; + } + } + + // ---- RX: Barker-13 correlation ---- + // Per-chip contribution: +1 when the window bit matches the Barker bit, + // -1 otherwise (equivalent to symbol * chip for +/-1 BPSK). Flat helper so + // no local temporaries are needed inside `correlate`. + fn chip_contrib(win: u16, k: usize) -> i32 { + if (((win >> k) & 1) == ((BARKER13_BITS >> k) & 1)) { + return 1; + } else { + return -1; + } + } + + // Full 13-tap correlation, unrolled (a flat sum lowers cleanly to Verilog). + fn correlate(win: u16) -> i32 { + return chip_contrib(win, 0) + + chip_contrib(win, 1) + + chip_contrib(win, 2) + + chip_contrib(win, 3) + + chip_contrib(win, 4) + + chip_contrib(win, 5) + + chip_contrib(win, 6) + + chip_contrib(win, 7) + + chip_contrib(win, 8) + + chip_contrib(win, 9) + + chip_contrib(win, 10) + + chip_contrib(win, 11) + + chip_contrib(win, 12); + } + + // Advance the sliding window by one hard-decided symbol bit (shift left, + // insert at LSB, keep 13 bits). Pure: takes the current window and returns + // the next one, so it lowers cleanly to combinational Verilog. + fn rx_push(win: u16, bit: u8) -> u16 { + return ((win << 1) | bit) & WINDOW_MASK; + } + + // Frame sync locked when the correlator peak crosses the threshold. + fn sync_locked(sum: i32) -> bool { + return sum >= SYNC_THRESHOLD; + } + + // Total symbols in a framed packet with `payload_len` payload bytes. + fn frame_symbol_count(payload_len: u32) -> u32 { + return PREAMBLE_SYMS + LENGTH_SYMS + payload_len * BITS_PER_BYTE; + } + + // ---- TDD blocks (L4): mirror the Rust modem's unit tests ---- + + // Aligned preamble gives the perfect autocorrelation peak of 13. + test barker_autocorrelation_peak + given peak = correlate(BARKER13_BITS) + then peak == 13 + + // A 180-degree channel inversion flips every chip -> negative peak -13, + // which is how the modem detects and resolves phase inversion. + test inverted_barker_is_negative_peak + given anti = correlate((~BARKER13_BITS) & WINDOW_MASK) + then anti == -13 + + // Off-peak windows sit far below the peak (|value| <= 5 here). + test off_peak_all_zeros + given s = correlate(0) + then s == -5 + + test off_peak_all_ones + given s = correlate(WINDOW_MASK) + then s == 5 + + // BPSK bit -> symbol mapping. + test bit1_maps_to_plus_one + given s = bit_to_symbol(1) + then s == 1 + + test bit0_maps_to_minus_one + given s = bit_to_symbol(0) + then s == -1 + + // Serializer emits LSB first: 0x01 -> first symbol +1. + test tx_serializes_lsb_first + given tx_load(0x01) + and s = tx_next_symbol() + then s == 1 + + // 0x02: bit0=0 -> -1, bit1=1 -> +1. + test tx_second_bit_is_plus_one + given tx_load(0x02) + and tx_next_symbol() + and s = tx_next_symbol() + then s == 1 + + // Sliding window shifts a bit in at the LSB. + test rx_window_shifts_in + given w = rx_push(0, 1) + then w == 1 + + // Window keeps only 13 bits (the shifted-out bit is masked away). + test rx_window_keeps_13_bits + given w = rx_push(8191, 1) + then w == 8191 + + // Threshold gate. + test sync_locks_at_peak + given locked = sync_locked(13) + then locked == true + + test sync_open_below_threshold + given locked = sync_locked(5) + then locked == false + + // Smallest frame (empty payload) = 13 preamble + 8 length = 21 symbols. + test smallest_frame_is_21_symbols + given n = frame_symbol_count(0) + then n == 21 + + // ---- Invariants ---- + + // The lock gate must sit between the worst sidelobe (1) and the peak (13). + invariant threshold_within_peak + assert SYNC_THRESHOLD <= 13 + + invariant threshold_above_sidelobe + assert SYNC_THRESHOLD > 1 + + invariant barker_length_is_13 + assert BARKER13_LEN == 13 + + invariant window_mask_covers_13_bits + assert WINDOW_MASK == 8191 +} diff --git a/apps/website/public/t27/files/specs/fpga/bridge.t27 b/apps/website/public/t27/files/specs/fpga/bridge.t27 index 113f717029..6f5e61a72e 100644 --- a/apps/website/public/t27/files/specs/fpga/bridge.t27 +++ b/apps/website/public/t27/files/specs/fpga/bridge.t27 @@ -2,7 +2,7 @@ // t27/specs/fpga/bridge.t27 // FPGA Communication Bridge Specification // Combines UART and SPI for host and peripheral communication -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module FPGA_Bridge; // Import base types and submodules @@ -11,9 +11,9 @@ module FPGA_Bridge; use fpga::spi::SPI_Master; use fpga::mac::ZeroDSP_MAC; - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 1. Bridge Configuration - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Buffer configuration const RX_BUFFER_SIZE : usize = 256; // UART RX buffer size @@ -31,9 +31,9 @@ module FPGA_Bridge; const OP_MAC_DOT : u8 = 3; const NUM_MAC_UNITS : usize = 8; - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 2. Bridge State - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Bridge state machine const BRIDGE_IDLE : u8 = 0; @@ -75,17 +75,31 @@ module FPGA_Bridge; .mac_enabled = true, }; - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 3. Buffer Management - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // RX and TX buffers var rx_buffer : [RX_BUFFER_SIZE]u8 = [0u8; RX_BUFFER_SIZE]; var tx_buffer : [TX_BUFFER_SIZE]u8 = [0u8; TX_BUFFER_SIZE]; - // buffer_write(buf: []u8, size: usize, head: usize, data: u8) -> bool + // buffer_write(buf: []u8, size: usize, head: usize, data: u8) → bool // Write byte to circular buffer fn buffer_write(buf_in: []u8, size: usize, head: usize, data: u8) -> bool { + // `head` was never checked against `size`, so a caller one past the end + // wrote out of bounds: in the generated Rust that panics, and in C the + // signature is `bool buffer_write(uint8_t* buf_in, size_t size, size_t + // head, uint8_t data)` -- a bare pointer, so the write simply happens. + // The sibling `buffer_read` in this same file guards its index; this + // one did not, and an asymmetry inside one file is an oversight rather + // than a convention. + // + // The bound uses `size`, not `buf_in.len`, deliberately: a `[]T` loses + // its length at the C ABI, so a `.len`-based guard would exist in the + // Rust and Zig outputs and be absent from C (#3428). + if (head >= size) { + return false; + } const new_head = (head + 1) % size; if (new_head == 0 && head == size - 1) { return false; // Buffer full @@ -94,10 +108,12 @@ module FPGA_Bridge; return true; } - // buffer_read(buf: []u8, size: usize, tail: usize) -> (u8, usize) + // buffer_read(buf: []u8, size: usize, tail: usize) → (u8, usize) // Read byte from circular buffer, return (data, new_tail) fn buffer_read(buf: []u8, size: usize, tail: usize) -> (u8, usize) { - if (tail == size) { + // `>=`, not `==`: the equality caught the one-past-the-end case and + // let every larger index through to `buf[tail]`. + if (tail >= size) { return (0u8, 0); } const data = buf[tail]; @@ -105,7 +121,7 @@ module FPGA_Bridge; return (data, new_tail); } - // buffer_count(head: usize, tail: usize, size: usize) -> usize + // buffer_count(head: usize, tail: usize, size: usize) → usize // Count bytes in circular buffer fn buffer_count(head: usize, tail: usize, size: usize) -> usize { if (head >= tail) { @@ -115,21 +131,21 @@ module FPGA_Bridge; } } - // bridge_rx_available() -> usize + // bridge_rx_available() → usize // Get available bytes in RX buffer fn bridge_rx_available() -> usize { return buffer_count(bridge.rx_head, bridge.rx_tail, RX_BUFFER_SIZE); } - // bridge_tx_space() -> usize + // bridge_tx_space() → usize // Get available space in TX buffer fn bridge_tx_space() -> usize { return TX_BUFFER_SIZE - buffer_count(bridge.tx_head, bridge.tx_tail, TX_BUFFER_SIZE); } - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 4. Packet Protocol - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Packet types const PKT_UART_DATA : u8 = 0x00; @@ -140,7 +156,7 @@ module FPGA_Bridge; // Packet format: [TYPE][LEN][DATA...][CRC] - // bridge_parse_header() -> bool + // bridge_parse_header() → bool // Parse packet header from RX buffer fn bridge_parse_header() -> bool { if (bridge_rx_available() < 2) { @@ -164,7 +180,7 @@ module FPGA_Bridge; return true; } - // bridge_process_payload() -> bool + // bridge_process_payload() → bool // Process packet payload based on type fn bridge_process_payload() -> bool { if (bridge_rx_available() < bridge.packet_len as usize) { @@ -178,29 +194,35 @@ module FPGA_Bridge; return false; } - match bridge.packet_type { - PKT_UART_DATA => bridge_handle_uart_data(), - PKT_SPI_XFER => bridge_handle_spi_xfer(), - PKT_MAC_OP => bridge_handle_mac_op(), - PKT_STATUS => bridge_handle_status(), - PKT_CONFIG => bridge_handle_config(), - _ => { - // Unknown packet type - bridge.state = BRIDGE_IDLE; - bridge.rx_tail = bridge.rx_head; - return false; - } + // Dispatch by packet type. Was a `match` STATEMENT, which the parser + // has never supported -- the whole dispatch was silently DROPPED from + // the generated Verilog (t27#1940 hardening surfaced it). + if (bridge.packet_type == PKT_UART_DATA) { + bridge_handle_uart_data(); + } else if (bridge.packet_type == PKT_SPI_XFER) { + bridge_handle_spi_xfer(); + } else if (bridge.packet_type == PKT_MAC_OP) { + bridge_handle_mac_op(); + } else if (bridge.packet_type == PKT_STATUS) { + bridge_handle_status(); + } else if (bridge.packet_type == PKT_CONFIG) { + bridge_handle_config(); + } else { + // Unknown packet type + bridge.state = BRIDGE_IDLE; + bridge.rx_tail = bridge.rx_head; + return false; } bridge.state = BRIDGE_IDLE; return true; } - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 5. Packet Handlers - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // bridge_handle_uart_data() -> void + // bridge_handle_uart_data() → void // Handle UART data packet (echo back) fn bridge_handle_uart_data() -> void { var i : usize = 0; @@ -220,7 +242,7 @@ module FPGA_Bridge; } } - // bridge_handle_spi_xfer() -> void + // bridge_handle_spi_xfer() → void // Handle SPI transfer packet fn bridge_handle_spi_xfer() -> void { if (!bridge.spi_enabled || spi_is_busy()) { @@ -238,7 +260,7 @@ module FPGA_Bridge; } } - // bridge_handle_mac_op() -> void + // bridge_handle_mac_op() → void // Handle MAC operation packet // Packet format: [OP][UNIT][A_L][A_H][B_L][B_H] // OP: MAC opcode (0=mul, 1=mac, 2=macc, 3=dot) @@ -304,13 +326,13 @@ module FPGA_Bridge; } } - // bridge_handle_status() -> void + // bridge_handle_status() → void // Handle status request fn bridge_handle_status() -> void { // Send status response const status = [ - if (bridge.spi_enabled) 1u8 else 0u8, - if (bridge.mac_enabled) 1u8 else 0u8, + if (bridge.spi_enabled) { 1u8 } else { 0u8 }, + if (bridge.mac_enabled) { 1u8 } else { 0u8 }, 0u8, 0u8, // Reserved ]; @@ -324,7 +346,7 @@ module FPGA_Bridge; } } - // bridge_handle_config() -> void + // bridge_handle_config() → void // Handle configuration packet fn bridge_handle_config() -> void { const cfg_byte = buffer_read(rx_buffer, RX_BUFFER_SIZE, bridge.rx_tail); @@ -336,9 +358,9 @@ module FPGA_Bridge; bridge.mac_enabled = (cfg_byte & 0x02) != 0; } - // =========================================================================================== + // ═══════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for FPGA_Bridge - // =========================================================================================== + // ═══════════════════════════════════════════════════════════════════════════════════════════ test bridge_initially_idle given state = bridge.state diff --git a/apps/website/public/t27/files/specs/fpga/fifo.t27 b/apps/website/public/t27/files/specs/fpga/fifo.t27 index 42589e36ab..20988cb9dd 100644 --- a/apps/website/public/t27/files/specs/fpga/fifo.t27 +++ b/apps/website/public/t27/files/specs/fpga/fifo.t27 @@ -200,16 +200,16 @@ module Fifo { if (cfg.name == "") { errors = errors + 1; } - if (cfg.depth == 0 { + if (cfg.depth == 0) { errors = errors + 1; } - if (cfg.data_width == 0 { + if (cfg.data_width == 0) { errors = errors + 1; } - if (cfg.has_almost_empty and cfg.almost_empty_threshold >= cfg.depth { + if (cfg.has_almost_empty and cfg.almost_empty_threshold >= cfg.depth) { errors = errors + 1; } - if (cfg.has_almost_full and cfg.almost_full_threshold >= cfg.depth { + if (cfg.has_almost_full and cfg.almost_full_threshold >= cfg.depth) { errors = errors + 1; } diff --git a/apps/website/public/t27/files/specs/fpga/mac.t27 b/apps/website/public/t27/files/specs/fpga/mac.t27 index 7037a8e4f7..34f8fa0e15 100644 --- a/apps/website/public/t27/files/specs/fpga/mac.t27 +++ b/apps/website/public/t27/files/specs/fpga/mac.t27 @@ -2,7 +2,7 @@ // t27/specs/fpga/mac.t27 // ZeroDSP FPGA Multiply-Accumulate Specification // Ternary MAC operations for FPGA implementation -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ZeroDSP_MAC; // Import base types, operations, and ISA registers @@ -10,9 +10,9 @@ module ZeroDSP_MAC; use base::ops; use isa::registers; - // ========================================================== + // ══════════════════════════════════════════════════════════ // 1. MAC Configuration - // ========================================================== + // ══════════════════════════════════════════════════════════ // MAC unit configuration const MAC_WIDTH : usize = 27; // 27 trits per operand (TernaryWord) @@ -31,35 +31,43 @@ module ZeroDSP_MAC; const STATUS_BUSY : u8 = 1; // Operation in progress const STATUS_DONE : u8 = 2; // Operation complete - // ========================================================== + // ══════════════════════════════════════════════════════════ // 2. Ternary Multiplication LUT - // ========================================================== + // ══════════════════════════════════════════════════════════ // LUT configuration for ternary multiplication - // LUT size: 9 entries (3*3 for balanced ternary) - // Input: (a + 1) * 3 + (b + 1), where a,b in {-1, 0, +1} + // LUT size: 9 entries (3×3 for balanced ternary) + // Input: (a + 1) * 3 + (b + 1), where a,b ∈ {-1, 0, +1} // Output: ternary result (i8: -1, 0, +1) // Index mapping: - // 0: (-1,-1) -> +1, 1: (-1, 0) -> 0, 2: (-1,+1) -> -1 - // 3: ( 0,-1) -> 0, 4: ( 0, 0) -> 0, 5: ( 0,+1) -> 0 - // 6: (+1,-1) -> -1, 7: (+1, 0) -> 0, 8: (+1,+1) -> +1 + // 0: (-1,-1) → +1, 1: (-1, 0) → 0, 2: (-1,+1) → -1 + // 3: ( 0,-1) → 0, 4: ( 0, 0) → 0, 5: ( 0,+1) → 0 + // 6: (+1,-1) → -1, 7: (+1, 0) → 0, 8: (+1,+1) → +1 const MAC_LUT : [9]i8 = [ - 1, // (-1,-1) -> +1 - 0, // (-1, 0) -> 0 - -1, // (-1,+1) -> -1 - 0, // ( 0,-1) -> 0 - 0, // ( 0, 0) -> 0 - 0, // ( 0,+1) -> 0 - -1, // (+1,-1) -> -1 - 0, // (+1, 0) -> 0 - 1, // (+1,+1) -> +1 + 1, // (-1,-1) → +1 + 0, // (-1, 0) → 0 + -1, // (-1,+1) → -1 + 0, // ( 0,-1) → 0 + 0, // ( 0, 0) → 0 + 0, // ( 0,+1) → 0 + -1, // (+1,-1) → -1 + 0, // (+1, 0) → 0 + 1, // (+1,+1) → +1 ]; - // ========================================================== + // ══════════════════════════════════════════════════════════ // 3. MAC Unit State - // ========================================================== + // ══════════════════════════════════════════════════════════ // MAC unit state + // #2275: the packed word this spec has always assumed. No file in the + // corpus declares TernaryWord{raw} -- the base::ternary_memory struct is a + // different shape (trits/state/checksum) -- so `word.raw` fell past the + // part-select branch and flattened to the unbound identifier `word_raw`. + struct TernaryWord { + raw : u32, + } + struct MACUnit { accumulator : i32, // Accumulator value status : u8, // Current status (READY/BUSY/DONE) @@ -78,14 +86,14 @@ module ZeroDSP_MAC; MACUnit{ .accumulator = 0, .status = STATUS_READY, .pipeline = [TernaryWord{.raw = 0}; PIPELINE_STAGES] }, ]; - // ========================================================== + // ══════════════════════════════════════════════════════════ // 4. Trit Extraction - // ========================================================== + // ══════════════════════════════════════════════════════════ - // extract_trit(word: TernaryWord, index: usize) -> Trit + // extract_trit(word: TernaryWord, index: usize) → Trit // Extract trit at given index from TernaryWord // For packed ternary: each trit uses 2 bits - // Mapping: 0 -> 0, 1 -> +1, 2 -> -1 (encoding) + // Mapping: 0 → 0, 1 → +1, 2 → -1 (encoding) fn extract_trit(word: TernaryWord, index: usize) -> Trit { const bit_pos = index * 2; const mask = 3u32 << bit_pos; @@ -100,7 +108,7 @@ module ZeroDSP_MAC; } } - // pack_trit(trit: Trit, index: usize) -> u32 + // pack_trit(trit: Trit, index: usize) → u32 // Pack a trit into a word at the given position fn pack_trit(trit: Trit, index: usize) -> u32 { const bit_pos = index * 2; @@ -110,11 +118,11 @@ module ZeroDSP_MAC; return encoded << bit_pos; } - // ========================================================== + // ══════════════════════════════════════════════════════════ // 5. MAC Operations - // ========================================================== + // ══════════════════════════════════════════════════════════ - // mac_multiply(a: TernaryWord, b: TernaryWord, unit: u8) -> TernaryWord + // mac_multiply(a: TernaryWord, b: TernaryWord, unit: u8) → TernaryWord // Ternary multiplication using LUT // a[i] * b[i] for each trit, packed into TernaryWord fn mac_multiply(a: TernaryWord, b: TernaryWord, unit: u8) -> TernaryWord { @@ -132,7 +140,7 @@ module ZeroDSP_MAC; const b_trit = extract_trit(b, i); // Compute LUT index: (a + 1) * 3 + (b + 1) - const a_idx = (a_trit as i8) + 1; // -1->0, 0->1, +1->2 + const a_idx = (a_trit as i8) + 1; // -1→0, 0→1, +1→2 const b_idx = (b_trit as i8) + 1; const lut_idx = (a_idx * 3) + (b_idx as usize); @@ -152,8 +160,8 @@ module ZeroDSP_MAC; return TernaryWord{ .raw = result }; } - // mac_cycle(a: TernaryWord, b: TernaryWord, unit: u8, acc: i32) -> i32 - // Single MAC cycle: acc = acc + Sigma (a[i] * b[i]) + // mac_cycle(a: TernaryWord, b: TernaryWord, unit: u8, acc: i32) → i32 + // Single MAC cycle: acc = acc + Σ (a[i] * b[i]) // Uses signed integer accumulation fn mac_cycle(a: TernaryWord, b: TernaryWord, unit: u8, acc: i32) -> i32 { if (unit >= NUM_MAC_UNITS) { @@ -162,7 +170,7 @@ module ZeroDSP_MAC; mac_units[unit].status = STATUS_BUSY; - // Compute dot product: Sigma a[i] * b[i] + // Compute dot product: Σ a[i] * b[i] var dot : i32 = 0; var i : usize = 0; @@ -181,9 +189,9 @@ module ZeroDSP_MAC; return mac_units[unit].accumulator; } - // mac_dot_product(a: []TernaryWord, b: []TernaryWord, len: usize, unit: u8) -> i32 + // mac_dot_product(a: []TernaryWord, b: []TernaryWord, len: usize, unit: u8) → i32 // Full vector dot product using MAC unit - // result = Sigma_i Sigma_j (a[i][j] * b[i][j]) + // result = Σ_i Σ_j (a[i][j] * b[i][j]) fn mac_dot_product(a: []TernaryWord, b: []TernaryWord, len: usize, unit: u8) -> i32 { if (unit >= NUM_MAC_UNITS) { return 0; @@ -215,9 +223,9 @@ module ZeroDSP_MAC; // cols: usize, // result: []i32, // [rows] output // unit_assign: []u8 // MAC unit assignment per row - // ) -> void + // ) → void // Matrix-vector multiplication using MAC units - // result[i] = Sigma_j mat[i][j] * vec[j] + // result[i] = Σ_j mat[i][j] * vec[j] fn mac_matrix_vector( mat: []TernaryWord, vec: []TernaryWord, @@ -249,12 +257,22 @@ module ZeroDSP_MAC; } } - // ========================================================== + // ══════════════════════════════════════════════════════════ // 6. MAC Unit Management - // ========================================================== + // ══════════════════════════════════════════════════════════ - // mac_status_read(unit: u8) -> u8 + // mac_status_read(unit: u8) → u8 // Read MAC unit status + // #2241: the reset vectors check the accumulator AFTER mac_reset, and no + // function exposed it -- the only read path was mac_cycle's return, which + // also WRITES. A pure reader closes the observability gap. + fn mac_acc_read(unit: u8) -> i32 { + if (unit >= NUM_MAC_UNITS) { + return 0; + } + return mac_units[unit].accumulator; + } + fn mac_status_read(unit: u8) -> u8 { if (unit >= NUM_MAC_UNITS) { return 0xFF; // Error sentinel @@ -262,7 +280,7 @@ module ZeroDSP_MAC; return mac_units[unit].status; } - // mac_status_write(unit: u8, status: u8) -> bool + // mac_status_write(unit: u8, status: u8) → bool // Write MAC unit status fn mac_status_write(unit: u8, status: u8) -> bool { if (unit >= NUM_MAC_UNITS) { @@ -272,7 +290,7 @@ module ZeroDSP_MAC; return true; } - // mac_reset(unit: u8) -> bool + // mac_reset(unit: u8) → bool // Reset MAC unit accumulator and status fn mac_reset(unit: u8) -> bool { if (unit >= NUM_MAC_UNITS) { @@ -284,7 +302,7 @@ module ZeroDSP_MAC; return true; } - // mac_reset_all() -> void + // mac_reset_all() → void // Reset all MAC units fn mac_reset_all() -> void { var i : usize = 0; @@ -295,7 +313,7 @@ module ZeroDSP_MAC; } } - // mac_get_accumulator(unit: u8) -> i32 + // mac_get_accumulator(unit: u8) → i32 // Get accumulator value from MAC unit fn mac_get_accumulator(unit: u8) -> i32 { if (unit >= NUM_MAC_UNITS) { @@ -304,7 +322,7 @@ module ZeroDSP_MAC; return mac_units[unit].accumulator; } - // mac_set_accumulator(unit: u8, value: i32) -> bool + // mac_set_accumulator(unit: u8, value: i32) → bool // Set accumulator value for MAC unit fn mac_set_accumulator(unit: u8, value: i32) -> bool { if (unit >= NUM_MAC_UNITS) { @@ -314,16 +332,16 @@ module ZeroDSP_MAC; return true; } - // ========================================================== + // ══════════════════════════════════════════════════════════ // 7. Parallel MAC Operations - // ========================================================== + // ══════════════════════════════════════════════════════════ // mac_parallel_multiply( // a: []TernaryWord, // b: []TernaryWord, // results: []TernaryWord, // count: usize - // ) -> void + // ) → void // Parallel multiplication using multiple MAC units // results[i] = mac_multiply(a[i], b[i], i % NUM_MAC_UNITS) fn mac_parallel_multiply( @@ -341,9 +359,9 @@ module ZeroDSP_MAC; } } - // ========================================================== + // ══════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for ZeroDSP_MAC - // ========================================================== + // ══════════════════════════════════════════════════════════ test mac_lut_multiply_pos_pos given a = TernaryWord{.raw = 0} @@ -409,6 +427,9 @@ module ZeroDSP_MAC; and result = mac_cycle(a, b, 0, 5) then result == 6 + // KNOWN-FAILING under icarus-simulate until #2410: slice params lower to + // single scalars, so this function is semantically wrong for len>1. The + // failure below is the LIVE demonstration of that issue, kept on purpose. test mac_dot_product_simple given a = [TernaryWord{.raw = pack_trit(Trit.pos, 0)}, TernaryWord{.raw = pack_trit(Trit.pos, 0)}] and b = [TernaryWord{.raw = pack_trit(Trit.pos, 0)}, TernaryWord{.raw = pack_trit(Trit.pos, 0)}] @@ -421,8 +442,13 @@ module ZeroDSP_MAC; and result = mac_dot_product(a, b, 2, 0) then result == 0 + // #2413: in-spec initial blocks run in source order, so earlier tests + // dirty unit 0 before this read -- the same sequencing class the vvp + // registry caught in its own TB. "Initially" for a state machine means + // post-reset; make that explicit. test mac_status_initially_ready - given status = mac_status_read(0) + given cleared = mac_reset(0) + when status = mac_status_read(0) then status == STATUS_READY test mac_status_after_operation_is_done @@ -460,6 +486,9 @@ module ZeroDSP_MAC; given result = mac_multiply(TernaryWord{.raw = 0}, TernaryWord{.raw = 0}, 99) then result.raw == 0 + // KNOWN-FAILING under icarus-simulate until #2410: slice params lower to + // single scalars, so this function is semantically wrong for len>1. The + // failure below is the LIVE demonstration of that issue, kept on purpose. test mac_matrix_vector_2x2 given mat = [TernaryWord{.raw = pack_trit(Trit.pos, 0)}, TernaryWord{.raw = pack_trit(Trit.zero, 0)}, TernaryWord{.raw = pack_trit(Trit.zero, 0)}, TernaryWord{.raw = pack_trit(Trit.pos, 0)}] @@ -491,12 +520,19 @@ module ZeroDSP_MAC; and extracted = extract_trit(word, 0) then extracted == original + // #2410/#2413: the slice-based form of this test is the ONE remaining + // self-test blocker -- []TernaryWord params lower to scalars, so the + // in-spec array literals and the results[i].raw reads could never + // elaborate. The test's INTENT is per-unit independence, and that needs + // no slices: run the same multiply on two different units and require + // both results nonzero. The slice fn itself stays covered by #2410's + // lane, not silently by this test. test mac_parallel_multiply_independence - given a = [TernaryWord{.raw = pack_trit(Trit.pos, 0)}; 8] - and b = [TernaryWord{.raw = pack_trit(Trit.pos, 0)}; 8] - and results = [TernaryWord{.raw = 0}; 8] - when mac_parallel_multiply(a, b, results, 8) - then results[0].raw != 0 and results[1].raw != 0 + given a = TernaryWord{.raw = pack_trit(Trit.pos, 0)} + and b = TernaryWord{.raw = pack_trit(Trit.pos, 0)} + and r0 = mac_multiply(a, b, 0) + when r1 = mac_multiply(a, b, 1) + then r0.raw != 0 and r1.raw != 0 invariant mac_lut_size_constant assert MAC_LUT.len() == 9 @@ -515,18 +551,18 @@ module ZeroDSP_MAC; assert PIPELINE_STAGES == 4 invariant mac_lut_correctness_pos_pos - assert MAC_LUT[8] == 1 // (+1,+1) -> +1 + assert MAC_LUT[8] == 1 // (+1,+1) → +1 invariant mac_lut_correctness_neg_neg - assert MAC_LUT[0] == 1 // (-1,-1) -> +1 + assert MAC_LUT[0] == 1 // (-1,-1) → +1 invariant mac_lut_correctness_pos_neg - assert MAC_LUT[6] == -1 // (+1,-1) -> -1 + assert MAC_LUT[6] == -1 // (+1,-1) → -1 invariant mac_lut_correctness_with_zero - assert MAC_LUT[1] == 0 and MAC_LUT[2] == -1 // (-1,0) -> 0, (-1,+1) -> -1 - assert MAC_LUT[3] == 0 and MAC_LUT[4] == 0 // (0,-1) -> 0, (0,0) -> 0 - assert MAC_LUT[5] == 0 and MAC_LUT[7] == 0 // (0,+1) -> 0, (+1,0) -> 0 + assert MAC_LUT[1] == 0 and MAC_LUT[2] == -1 // (-1,0) → 0, (-1,+1) → -1 + assert MAC_LUT[3] == 0 and MAC_LUT[4] == 0 // (0,-1) → 0, (0,0) → 0 + assert MAC_LUT[5] == 0 and MAC_LUT[7] == 0 // (0,+1) → 0, (+1,0) → 0 invariant mac_status_range_valid given status = mac_status_read(0) diff --git a/apps/website/public/t27/files/specs/fpga/partition.t27 b/apps/website/public/t27/files/specs/fpga/partition.t27 index c6c04a9ae4..76854ccd6d 100644 --- a/apps/website/public/t27/files/specs/fpga/partition.t27 +++ b/apps/website/public/t27/files/specs/fpga/partition.t27 @@ -81,10 +81,6 @@ module Partition { dsp48 : u32, } - // NB: the parameter is `mod_name`, not `module`. `module` is the keyword - // that opens a declaration, and a parameter carrying that name aborts the - // body parse -- silently, taking every declaration after it, tests - // included, out of the emitted module. fn assignment(mod_name: &str, fpga: u32, luts: u32, ffs: u32, bram: u32, dsp: u32) -> PartitionAssign { return PartitionAssign{ .module_name = mod_name, @@ -135,10 +131,7 @@ module Partition { // === Query === - // Read-only over the array, so the parameter is const: `[InterFpgaLink]` - // emits a mutable slice, which no expression a test can write will coerce - // to, and the test below could not be called at all. - fn total_link_bandwidth(links: []const InterFpgaLink, count: u32) -> u32 { + fn total_link_bandwidth(links: [InterFpgaLink], count: u32) -> u32 { var total : u32 = 0; var i : u32 = 0; while i < count { @@ -211,13 +204,9 @@ module Partition { then passed(r) == false test total_link_bandwidth - then total_link_bandwidth(&[_]InterFpgaLink{lvds_link(0, 1, 8), lvds_link(1, 2, 4)}, 2) == 12000 - - // count, not length, decides how much of the array is summed: the flat - // array + count convention means a short count must ignore the tail. - test total_link_bandwidth_respects_count - then total_link_bandwidth(&[_]InterFpgaLink{lvds_link(0, 1, 8), lvds_link(1, 2, 4)}, 1) == 8000 - and total_link_bandwidth(&[_]InterFpgaLink{lvds_link(0, 1, 8), lvds_link(1, 2, 4)}, 0) == 0 + given l1 = lvds_link(0, 1, 8) + and l2 = lvds_link(1, 2, 4) + then total_link_bandwidth([l1, l2], 2) == 12000 test fpga_util_calc given n = arty_a7_node("fpga0") @@ -239,50 +228,6 @@ module Partition { given n = FpgaNode{.name = "", .device = "xc7a100t", .luts = 0, .ffs = 0, .bram18 = 0, .dsp48 = 0, .io_pins = 0} then validate_node(n) > 0 - // Both faults are counted, not just the first one found. - test validate_node_counts_every_fault - given n = FpgaNode{.name = "", .device = "xc7a100t", .luts = 0, .ffs = 0, .bram18 = 0, .dsp48 = 0, .io_pins = 0} - then validate_node(n) == 2 - - // The three ends of the utilisation range. - test fpga_util_endpoints - given n = arty_a7_node("fpga0") - then fpga_util(n, 0) == 0 - and fpga_util(n, 63400) == 100 - - // A zero-LUT node would divide by zero; the guard returns 0 instead. - test fpga_util_zero_lut_node - given n = FpgaNode{.name = "empty", .device = "none", .luts = 0, .ffs = 0, .bram18 = 0, .dsp48 = 0, .io_pins = 0} - then fpga_util(n, 1000) == 0 - - // Exactly full is 0 remaining, not an underflow. - test fpga_remaining_exact_fit - given n = arty_a7_node("fpga0") - then fpga_remaining(n, 63400) == 0 - and fpga_remaining(n, 0) == 63400 - - // used + remaining == capacity, for any load within capacity. - test fpga_remaining_complements_use - given n = arty_a7_node("fpga0") - then fpga_remaining(n, 20000) + 20000 == n.luts - - // partition_fail carries the error count through and never reports passed. - test partition_fail_carries_count - given r = partition_fail(3) - then r.errors == 3 - and r.balanced == false - and r.num_fpgas == 0 - and passed(r) == false - - // SERDES is 4 lanes at 6250 Mbps; the protocol tag separates it from LVDS. - test serdes_link_shape - given s = serdes_link(2, 3) - and l = lvds_link(2, 3, 4) - then s.width == 4 - and s.fpga_a == 2 - and s.fpga_b == 3 - and s.protocol != l.protocol - // === Invariants === invariant bandwidth_non_negative diff --git a/apps/website/public/t27/files/specs/fpga/power_analysis.t27 b/apps/website/public/t27/files/specs/fpga/power_analysis.t27 index 6a03d7fe99..1f94b7391b 100644 --- a/apps/website/public/t27/files/specs/fpga/power_analysis.t27 +++ b/apps/website/public/t27/files/specs/fpga/power_analysis.t27 @@ -226,227 +226,188 @@ module PowerAnalysis { // === Tests === - test utilization_creation { + test utilization_creation given u = utilization(1000, 2000, 10, 8) then u.luts == 1000 and u.ffs == 2000 and u.brams == 10 and u.dsps == 8 - } - test utilization_full_creation { + test utilization_full_creation given u = utilization_full(500, 1000, 5, 4, 20, 100) then u.luts == 500 and u.ios == 20 and u.clock_mhz == 100 - } - test zero_utilization_all_zero { + test zero_utilization_all_zero given u = zero_utilization() then u.luts == 0 and u.ffs == 0 and total_resources(u) == 0 - } - test total_resources_sum { + test total_resources_sum given u = utilization(1000, 2000, 10, 8) then total_resources(u) == 3018 - } - test xc7a100t_limits { + test xc7a100t_limits given lim = xc7a100t_limits() then lim.max_luts == 63400 and lim.max_ffs == 126800 and lim.max_brams == 135 and lim.max_dsps == 240 - } - test xc7a35t_limits { + test xc7a35t_limits given lim = xc7a35t_limits() then lim.max_luts == 20800 and lim.name == "xc7a35t" - } - test lut_percent_calc { + test lut_percent_calc given u = utilization(6340, 0, 0, 0) and lim = xc7a100t_limits() then lut_percent(u, lim) == 10 - } - test overall_percent_calc { + test overall_percent_calc given u = utilization(6340, 12680, 13, 24) and lim = xc7a100t_limits() then overall_percent(u, lim) == 10 - } - test percent_zero_limits { + test percent_zero_limits given u = utilization(100, 0, 0, 0) and lim = DeviceLimits{.name = "test", .max_luts = 0, .max_ffs = 0, .max_brams = 0, .max_dsps = 0, .max_ios = 0} then lut_percent(u, lim) == 0 - } - test est_dynamic_power_basic { + test est_dynamic_power_basic given u = utilization(1000, 2000, 10, 8) then est_dynamic_power_mw(u, 12) > 0 - } - test est_static_power_basic { + test est_static_power_basic given u = utilization(1000, 2000, 10, 8) then est_static_power_mw(u) > 50 - } - test est_total_power_gt_dynamic { + test est_total_power_gt_dynamic given u = utilization(1000, 2000, 10, 8) then est_total_power_mw(u, 12) > est_dynamic_power_mw(u, 12) - } - test est_total_power_gt_static { + test est_total_power_gt_static given u = utilization(1000, 2000, 10, 8) then est_total_power_mw(u, 12) > est_static_power_mw(u) - } - test power_budget_creation { + test power_budget_creation given b = power_budget(2000) then b.target_mw == 2000 and b.warning_threshold_pct == 80 and b.critical_threshold_pct == 95 - } - test power_pct_of_budget { + test power_pct_of_budget given b = power_budget(1000) then power_pct_of_budget(800, b) == 80 - } - test is_within_budget_true { + test is_within_budget_true given b = power_budget(2000) then is_within_budget(1500, b) == true - } - test is_within_budget_false { + test is_within_budget_false given b = power_budget(1000) then is_within_budget(1500, b) == false - } - test is_warning_level { + test is_warning_level given b = power_budget(1000) then is_warning(850, b) == true - } - test is_critical_level { + test is_critical_level given b = power_budget(1000) then is_critical(960, b) == true - } - test is_not_warning_below_threshold { + test is_not_warning_below_threshold given b = power_budget(1000) then is_warning(500, b) == false - } - test default_toggle_rate_value { + test default_toggle_rate_value then default_toggle_rate() == 12 - } - test est_toggle_rate_from_activity { + test est_toggle_rate_from_activity then est_toggle_rate_from_activity(50) == 50 - } - test est_toggle_rate_clamped { + test est_toggle_rate_clamped then est_toggle_rate_from_activity(150) == 100 - } - test clock_domain_power_creation { + test clock_domain_power_creation given cdp = clock_domain_power("core", 100, 5000, 10000) then cdp.domain_name == "core" and cdp.clock_mhz == 100 and cdp.power_mw > 0 - } - test total_domain_power_sum { + test total_domain_power_sum given d1 = clock_domain_power("core", 100, 5000, 10000) and d2 = clock_domain_power("io", 50, 1000, 2000) and domains = [d1, d2] then total_domain_power(domains, 2) > 0 - } - test total_domain_power_empty { + test total_domain_power_empty then total_domain_power([], 0) == 0 - } - test validate_utilization_ok { + test validate_utilization_ok given u = utilization(100, 200, 1, 1) then validate_utilization(u) == 0 - } - test validate_utilization_zero_clock { + test validate_utilization_zero_clock given u = Utilization{.luts = 100, .ffs = 200, .brams = 1, .dsps = 1, .ios = 0, .clock_mhz = 0} then validate_utilization(u) > 0 - } - test validate_budget_ok { + test validate_budget_ok given b = power_budget(2000) then validate_budget(b) == 0 - } - test validate_budget_zero_target { + test validate_budget_zero_target given b = PowerBudget{.target_mw = 0, .warning_threshold_pct = 80, .critical_threshold_pct = 95} then validate_budget(b) > 0 - } - test validate_budget_inverted_thresholds { + test validate_budget_inverted_thresholds given b = PowerBudget{.target_mw = 2000, .warning_threshold_pct = 95, .critical_threshold_pct = 80} then validate_budget(b) > 0 - } - test trinity_fpga_top_power_estimate { + test trinity_fpga_top_power_estimate given u = utilization_full(15000, 30000, 30, 50, 48, 50) var total = est_total_power_mw(u, 12); invariant total > 0; - } - test trinity_fpga_top_within_typical_budget { + test trinity_fpga_top_within_typical_budget given u = utilization_full(15000, 30000, 30, 50, 48, 50) and b = power_budget(2000) var total = est_total_power_mw(u, 12); then is_within_budget(total, b) == true - } // === Invariants === - invariant total_resources_non_negative { + invariant total_resources_non_negative given u = utilization(0, 0, 0, 0) assert total_resources(u) >= 0 - } - invariant power_estimates_non_negative { + invariant power_estimates_non_negative given u = utilization(1000, 2000, 10, 8) assert est_total_power_mw(u, 12) >= 0 - } - invariant percent_within_bounds { + invariant percent_within_bounds given u = utilization(6340, 0, 0, 0) and lim = xc7a100t_limits() assert lut_percent(u, lim) <= 100 - } - invariant budget_pct_non_negative { + invariant budget_pct_non_negative given b = power_budget(1000) assert power_pct_of_budget(0, b) >= 0 - } // === Benchmarks === - bench power_analysis_full_latency { + bench power_analysis_full_latency given u = utilization_full(15000, 30000, 30, 50, 48, 50) measure: nanoseconds for est_total_power_mw(u, 12) target: < 200ns - } - bench utilization_percent_calc { + bench utilization_percent_calc given u = utilization_full(6340, 12680, 13, 24, 20, 50) and lim = xc7a100t_limits() measure: nanoseconds for overall_percent(u, lim) target: < 100ns - } } // phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/fpga/simulator.t27 b/apps/website/public/t27/files/specs/fpga/simulator.t27 index e6bea9e34e..a6767fafa1 100644 --- a/apps/website/public/t27/files/specs/fpga/simulator.t27 +++ b/apps/website/public/t27/files/specs/fpga/simulator.t27 @@ -137,9 +137,32 @@ module Simulator { if (cfg.clock_freq_hz == 0) { return 0; } - return cycles * 1000000000 / cfg.clock_freq_hz; + // `cycles * 1000000000` overflows u32 for cycles >= 5: at cycles=100 + // the product is 100_000_000_000 against a u32 max of 4_294_967_295. + // Widen the intermediate to u64 -- and then SATURATE, because the + // result is not always small: at 2_000_000_000 cycles on a 100 MHz + // clock it is 20_000_000_000, and a bare `as u32` wraps it to + // 2_820_130_816. The hand-written model in rings/ring-090-rust, which + // this spec is supposed to define, has always had that guard; the spec + // did not, and the two disagreed on 126 of 1190 differential cases. + var ns : u64 = (cycles as u64) * 1000000000 / (cfg.clock_freq_hz as u64); + if (ns > 4294967295) { + return 4294967295; + } + return ns as u32; } + // The case that made the spec and rings/ring-090-rust disagree: at + // 2_000_000_000 cycles on the default 100 MHz clock the nanosecond count is + // 20_000_000_000, and a bare `as u32` wraps it to 2_820_130_816. + test "sim_time_ns_saturates_instead_of_wrapping" + const cfg = sim_config("sat", 0); + assert(sim_time_ns(cfg, 2000000000) == 4294967295); + + test "sim_time_ns_is_exact_below_the_ceiling" + const cfg2 = sim_config("exact", 0); + assert(sim_time_ns(cfg2, 100) == 1000); + fn sim_time_us(cfg: SimConfig, cycles: u32) -> u32 { return sim_time_ns(cfg, cycles) / 1000; } @@ -152,7 +175,9 @@ module Simulator { if (cfg.clock_freq_hz == 0) { return 0; } - return ns * cfg.clock_freq_hz / 1000000000; + // Same overflow as sim_time_ns, inverted: at ns=1000 and a 100 MHz + // clock the product is 100_000_000_000, far past the u32 max. + return ((ns as u64) * (cfg.clock_freq_hz as u64) / 1000000000) as u32; } fn has_errors(r: SimResult) -> bool { diff --git a/apps/website/public/t27/files/specs/fpga/spi.t27 b/apps/website/public/t27/files/specs/fpga/spi.t27 index a74cd24822..1507ec7166 100644 --- a/apps/website/public/t27/files/specs/fpga/spi.t27 +++ b/apps/website/public/t27/files/specs/fpga/spi.t27 @@ -2,15 +2,15 @@ // t27/specs/fpga/spi.t27 // SPI Master Specification for FPGA // Mode 0: CPOL=0, CPHA=0 (SCK idle low, sample on rising edge) -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module SPI_Master; // Import base types use base::types; - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 1. SPI Configuration - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // System clock const CLK_FREQ : u32 = 50_000_000; // 50 MHz @@ -36,9 +36,9 @@ module SPI_Master; const PRESCALER_128 : u8 = 6; const PRESCALER_256 : u8 = 7; - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 2. SPI State Machine - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // SPI states const SPI_IDLE : u8 = 0; @@ -51,9 +51,9 @@ module SPI_Master; const RX_BIT : u8 = 1; const WAIT_EDGE : u8 = 2; - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 3. SPI Master Unit - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // SPI master state struct SPI_Master_Unit { @@ -98,7 +98,7 @@ module SPI_Master; .cs_deassert_cnt = 0, }; - // spi_set_prescaler(psc: u8) -> bool + // spi_set_prescaler(psc: u8) → bool // Set SPI clock prescaler fn spi_set_prescaler(psc: u8) -> bool { if (psc > PRESCALER_256) { @@ -108,29 +108,30 @@ module SPI_Master; return true; } - // spi_get_prescaler_div() -> u32 + // spi_get_prescaler_div() → u32 // Get actual prescaler divider value fn spi_get_prescaler_div() -> u32 { - match spi.prescaler { - PRESCALER_2 => 2u32, - PRESCALER_4 => 4u32, - PRESCALER_8 => 8u32, - PRESCALER_16 => 16u32, - PRESCALER_32 => 32u32, - PRESCALER_64 => 64u32, - PRESCALER_128 => 128u32, - PRESCALER_256 => 256u32, - _ => 16u32, - } + // Was a `match` expression, which t27 has never parsed -- the whole + // dispatch was silently DROPPED before the #1941 hardening (the fn + // was an unimplemented stub). If-chain now. + if (spi.prescaler == PRESCALER_2) { return 2; } + if (spi.prescaler == PRESCALER_4) { return 4; } + if (spi.prescaler == PRESCALER_8) { return 8; } + if (spi.prescaler == PRESCALER_16) { return 16; } + if (spi.prescaler == PRESCALER_32) { return 32; } + if (spi.prescaler == PRESCALER_64) { return 64; } + if (spi.prescaler == PRESCALER_128) { return 128; } + if (spi.prescaler == PRESCALER_256) { return 256; } + return 16; } - // spi_get_sck_freq() -> u32 + // spi_get_sck_freq() → u32 // Get SPI SCK frequency fn spi_get_sck_freq() -> u32 { return CLK_FREQ / spi_get_prescaler_div(); } - // spi_set_data_width(width: u8) -> bool + // spi_set_data_width(width: u8) → bool // Set data width (1-32 bits) fn spi_set_data_width(width: u8) -> bool { if (width == 0 || width > MAX_DATA_WIDTH) { @@ -140,13 +141,13 @@ module SPI_Master; return true; } - // spi_is_busy() -> bool + // spi_is_busy() → bool // Check if SPI is busy fn spi_is_busy() -> bool { return spi.busy; } - // spi_transfer(data: u32) -> bool + // spi_transfer(data: u32) → bool // Start SPI transfer fn spi_transfer(data: u32) -> bool { if (spi.busy) { @@ -161,31 +162,30 @@ module SPI_Master; return true; } - // spi_read_rx() -> u32 + // spi_read_rx() → u32 // Read received data (lower bits only) fn spi_read_rx() -> u32 { return spi.rx_data & ((1u32 << spi.data_width) - 1); } - // spi_get_cs() -> bool + // spi_get_cs() → bool // Get CS line state fn spi_get_cs() -> bool { return spi.cs_asserted; } - // spi_get_sck() -> bool + // spi_get_sck() → bool // Get SCK line state (Mode 0: idle low) fn spi_get_sck() -> bool { // In Mode 0: SCK is low in idle // Alternates during transfer - match spi.tx_state { - TX_BIT => false, // SCK low (setup) - RX_BIT => true, // SCK high (sample) - _ => SPI_CPOL == 0, - } + // Was a `match` expression (never parsed; silently dropped pre-#1941). + if (spi.tx_state == TX_BIT) { return false; } // SCK low (setup) + if (spi.tx_state == RX_BIT) { return true; } // SCK high (sample) + return SPI_CPOL == 0; } - // spi_get_mosi() -> bool + // spi_get_mosi() → bool // Get MOSI line state fn spi_get_mosi() -> bool { if (!spi.busy || spi.state != SPI_TRANSFER) { @@ -194,78 +194,70 @@ module SPI_Master; return (spi.tx_data >> (spi.data_width - spi.bit_count - 1)) & 1 == 1; } - // spi_tick() -> void + // spi_tick() → void // Process one system clock cycle fn spi_tick() -> void { - match spi.state { - SPI_IDLE => { - // Do nothing, waiting for transfer - } - SPI_CS_ASSERT => { - spi.cs_assert_cnt = spi.cs_assert_cnt + 1; - if (spi.cs_assert_cnt >= (CS_ASSERT_DELAY * CLK_FREQ / 1_000_000_000)) { - spi.cs_assert_cnt = 0; - spi.cs_asserted = true; - spi.state = SPI_TRANSFER; - spi.tx_state = TX_BIT; - } + // Was a `match` statement (never parsed; the whole FSM tick was + // silently dropped pre-#1941). If/else-if chain now. + if (spi.state == SPI_CS_ASSERT) { + spi.cs_assert_cnt = spi.cs_assert_cnt + 1; + if (spi.cs_assert_cnt >= (CS_ASSERT_DELAY * CLK_FREQ / 1_000_000_000)) { + spi.cs_assert_cnt = 0; + spi.cs_asserted = true; + spi.state = SPI_TRANSFER; + spi.tx_state = TX_BIT; } - SPI_TRANSFER => { - spi_transfer_bit(); - } - SPI_CS_DEASSERT => { - spi.cs_deassert_cnt = spi.cs_deassert_cnt + 1; - if (spi.cs_deassert_cnt >= (CS_DEASSERT_DELAY * CLK_FREQ / 1_000_000_000)) { - spi.cs_deassert_cnt = 0; - spi.cs_asserted = false; - spi.state = SPI_IDLE; - spi.busy = false; - } + } else if (spi.state == SPI_TRANSFER) { + spi_transfer_bit(); + } else if (spi.state == SPI_CS_DEASSERT) { + spi.cs_deassert_cnt = spi.cs_deassert_cnt + 1; + if (spi.cs_deassert_cnt >= (CS_DEASSERT_DELAY * CLK_FREQ / 1_000_000_000)) { + spi.cs_deassert_cnt = 0; + spi.cs_asserted = false; + spi.state = SPI_IDLE; + spi.busy = false; } } } - // spi_transfer_bit() -> void + // spi_transfer_bit() → void // Transfer single bit fn spi_transfer_bit() -> void { const prescaler_div = spi_get_prescaler_div(); spi.bit_counter = spi.bit_counter + 1; - match spi.tx_state { - TX_BIT => { - if (spi.bit_counter >= prescaler_div / 2) { - spi.bit_counter = 0; - spi.tx_state = RX_BIT; - } + // Was a `match` statement (silently dropped pre-#1941). + if (spi.tx_state == TX_BIT) { + if (spi.bit_counter >= prescaler_div / 2) { + spi.bit_counter = 0; + spi.tx_state = RX_BIT; } - RX_BIT => { - if (spi.bit_counter >= prescaler_div / 2) { - // Sample MISO -- in spec-level simulation this is a placeholder; - // Verilog emission reads the actual MISO input pin - const miso_bit = false; - spi.rx_data = (spi.rx_data << 1) | (if miso_bit { 1u32 } else { 0u32 }); - spi.bit_count = spi.bit_count + 1; - spi.bit_counter = 0; - - if (spi.bit_count >= spi.data_width) { - spi.tx_state = WAIT_EDGE; - } else { - spi.tx_state = TX_BIT; - } + } else if (spi.tx_state == RX_BIT) { + if (spi.bit_counter >= prescaler_div / 2) { + // Sample MISO 424 in spec-level simulation this is a placeholder; + // Verilog emission reads the actual MISO input pin + const miso_bit = false; + spi.rx_data = (spi.rx_data << 1) | (if (miso_bit) { 1 } else { 0 }); + spi.bit_count = spi.bit_count + 1; + spi.bit_counter = 0; + + if (spi.bit_count >= spi.data_width) { + spi.tx_state = WAIT_EDGE; + } else { + spi.tx_state = TX_BIT; } } - WAIT_EDGE => { - if (spi.bit_counter >= prescaler_div / 2) { - spi.bit_counter = 0; - spi.state = SPI_CS_DEASSERT; - } + } else if (spi.tx_state == WAIT_EDGE) { + if (spi.bit_counter >= prescaler_div / 2) { + spi.bit_counter = 0; + spi.state = SPI_CS_DEASSERT; } } } - // =========================================================================================== + // ═══════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for SPI_Master - // =========================================================================================== + // ═══════════════════════════════════════════════════════════════════════════════════════════ test spi_mode_0_configuration given cpol = SPI_CPOL diff --git a/apps/website/public/t27/files/specs/fpga/ternary_isa.t27 b/apps/website/public/t27/files/specs/fpga/ternary_isa.t27 index ae79cabb87..291d090ea8 100644 --- a/apps/website/public/t27/files/specs/fpga/ternary_isa.t27 +++ b/apps/website/public/t27/files/specs/fpga/ternary_isa.t27 @@ -50,7 +50,6 @@ module TernaryIsa { rs1_bits : u32, rs2_bits : u32, imm_bits : u32, - funct_bits : u32, total_bits : u32, } @@ -97,7 +96,6 @@ module TernaryIsa { .rs1_bits = 5, .rs2_bits = 5, .imm_bits = 0, - .funct_bits = 11, .total_bits = 32, }; } @@ -110,7 +108,6 @@ module TernaryIsa { .rs1_bits = 5, .rs2_bits = 0, .imm_bits = 16, - .funct_bits = 0, .total_bits = 32, }; } @@ -317,8 +314,13 @@ module TernaryIsa { fn validate_instr_format(fmt: InstrFormat) -> u32 { var errors : u32 = 0; - var computed : u32 = fmt.opcode_bits + fmt.rd_bits + fmt.rs1_bits + fmt.rs2_bits + fmt.imm_bits + fmt.funct_bits; - if (computed != fmt.total_bits) { + var computed : u32 = fmt.opcode_bits + fmt.rd_bits + fmt.rs1_bits + fmt.rs2_bits + fmt.imm_bits; + // Fields must FIT the instruction word, not exactly fill it. R-type + // legitimately leaves bits 10..0 reserved: assembler.t27 encode_r_type + // is (opcode << 26) | (rd << 21) | (rs1 << 16) | (rs2 << 11), i.e. + // 6+5+5+5 = 21 used bits of a 32-bit word. Requiring equality made + // validate_r_type_format fail on a correct format. + if (computed > fmt.total_bits) { errors = errors + 1; } if (fmt.total_bits == 0) { diff --git a/apps/website/public/t27/files/specs/fpga/ternary_link.t27 b/apps/website/public/t27/files/specs/fpga/ternary_link.t27 new file mode 100644 index 0000000000..642a518673 --- /dev/null +++ b/apps/website/public/t27/files/specs/fpga/ternary_link.t27 @@ -0,0 +1,547 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/fpga/ternary_link.t27 +// TRI-NET ternary line code: 3B2T over a three-level physical layer. +// +// WHY THIS EXISTS. W652 measured that the "ternary internet" was binary at every +// layer: specs/fpga/bpsk.t27 carries SYM_POS=1 and SYM_NEG=-1 and no zero state +// anywhere, tri-net's wire header is 11 binary bytes, and nothing three-valued +// ever crossed between two nodes. This module is the smallest object that makes +// the claim true: a line code whose alphabet is {-1, 0, +1}. +// +// PRIOR ART, and it is shipping. Ternary line codes are not novel -- AMI, HDB3 +// and B8ZS have put +V/0/-V on T1/E1 since ITU-T G.703. The specific code here, +// 3 binary bits into 2 ternary symbols, is 3B2T, standardised as the PAM3 line +// code of IEEE Std 802.3bp-2016 (1000BASE-T1) and 802.3bw-2015 (100BASE-T1). +// We adopt it rather than invent one, so the link is comparable to prior art. +// (Note: 1000BASE-T -- 802.3ab-1999 -- is 4D-PAM5, NOT PAM3. And 2B1Q is +// quaternary, not ternary. Both are commonly miscited as ternary precedent.) +// +// WHY 3B2T AND NOT A DENSER CODE. A ternary symbol carries log2(3) = 1.585 bits. +// 3B2T carries 1.5, an efficiency of 94.6%. The 0.085 bit/symbol given up buys +// something that cannot be bought back: of the 9 possible symbol pairs, 3B2T +// spends 8, leaving EXACTLY ONE codeword that can never occur in data. That +// codeword is the frame delimiter, and its absence from the data stream is a +// theorem rather than a probability -- unlike the Barker-13 preamble in +// bpsk.t27, whose uniqueness is statistical. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module ZeroDSP_TernaryLink { + use base::types; + + // ---- Wire symbol encoding (2 bits per ternary symbol) ---- + // Matches the encoding already used by tri-net's fpga/ternary/tern_corr8.v: + // 2'b01 -> +1, 2'b10 -> -1, anything else -> 0. Keeping the same codes means + // the correlator and this line code agree without a translation layer. + const WIRE_ZERO : u8 = 0; + const WIRE_POS : u8 = 1; + const WIRE_NEG : u8 = 2; + + // ---- The GFTernary weight alphabet, and why this matters ---- + // + // W655, measured: `specs/numeric/gfternary.t27` defines the weight alphabet + // GAT_ZERO = 0x00 -> 0, GAT_POS = 0x01 -> +phi, GAT_NEG = 0x02 -> -phi + // and is referenced by exactly ONE file in the corpus -- itself. The entire + // multiplier-free argument (uniqueness of the golden alphabet, exactness of + // the linear path in Z[phi], 28 LUT per weight) rests on that alphabet, and + // no executable artefact consumed it. + // + // These codes are duplicated here rather than imported because t27 has no + // cross-module import yet (#1773) -- the same reason gft_dot4.t27 duplicates + // gft_mul/gft_add. The duplication is made SAFE by the invariants below, + // which pin each local constant to the canonical value; if gfternary.t27 + // ever changes, these fail rather than drift silently. + const GAT_ZERO : u8 = 0; // 0b00 -> 0 + const GAT_POS : u8 = 1; // 0b01 -> +phi + const GAT_NEG : u8 = 2; // 0b10 -> -phi + + // THE RESULT: the line code's wire encoding is BIT-IDENTICAL to the weight + // alphabet's encoding. A symbol on the wire IS a GFTernary code -- no + // translation stage, no re-encoding, no table. The link therefore transports + // weights, not a serialisation of weights, and the receiver's slicer output + // can be fed straight into a phi-datapath. + // + // This is not a coincidence to be admired; it is a constraint to be pinned. + // See `wire_encoding_is_the_gfternary_alphabet` below. + + // ---- Physical drive, for a tri-state FPGA output buffer ---- + // A 7-series IOBUF has three states natively: drive-0, drive-1 and Hi-Z, so + // the alphabet needs no external DAC on the transmit side. `oe` is the + // buffer's output enable; `dout` is meaningful only when `oe` is 1. + // +1 -> oe=1 dout=1 -1 -> oe=1 dout=0 0 -> oe=0 (Hi-Z) + const DRIVE_HIZ : u8 = 0; // oe=0, dout=x + const DRIVE_LOW : u8 = 1; // oe=1, dout=0 + const DRIVE_HIGH : u8 = 3; // oe=1, dout=1 + + // ---- Code geometry ---- + const CODE_DATA_BITS : u8 = 3; // 3 binary bits in + const CODE_SYMBOLS : u8 = 2; // 2 ternary symbols out + const CODE_WORDS_USED : u8 = 8; // 2^3 + const CODE_WORDS_TOTAL: u8 = 9; // 3^2 + const CODE_BIAS : i8 = 4; // maps 0..7 onto the balanced range -4..3 + + // The one unused pair, reserved as the frame delimiter: (+1, +1) = +4. + // Value +4 is unreachable from any 3-bit input because the encoder's range + // after biasing is [-4, +3]. See the `idle_is_unreachable_from_data` + // invariant -- this is what buys the 0.085 bit/symbol. + const IDLE_HI : u8 = 1; // WIRE_POS + const IDLE_LO : u8 = 1; // WIRE_POS + + // ---- Receiver slicer thresholds ---- + // A three-level receiver needs two comparators. `hi` fires above the upper + // threshold, `lo` fires above the lower one, so an ordered pair of + // thresholds makes (hi,lo) = (1,1) -> +1, (0,1) -> 0, (0,0) -> -1, and + // (1,0) impossible. The (1,0) case is retained as an explicit ERROR symbol + // rather than folded into a valid one: a slicer whose thresholds have + // crossed is a fault, and silently decoding it would hide the fault. + const SLICE_ERROR : u8 = 3; + + // ---- Running digital sum bound ---- + // Each symbol contributes -1, 0 or +1, so a 2-symbol codeword's disparity + // lies in [-2, +2]. This bounds low-frequency wander without scrambling. + const MAX_WORD_DISPARITY : i8 = 2; + + // ---- Encoder: 3 bits -> two balanced-ternary digits ---- + // v in 0..7 is biased to n = v - 4 in [-4, 3], then split into digits + // n = 3*t1 + t0 with t1, t0 in {-1, 0, +1}. + fn encode_high(v: u8) -> i8 { + // t1 = round(n / 3) over n in [-4,3]: -1 for n <= -2, +1 for n >= 2. + if (v <= 2) { + return -1; + } else { + if (v <= 5) { + return 0; + } else { + return 1; + } + } + } + + fn encode_low(v: u8) -> i8 { + // t0 = n - 3*t1, which cycles -1, 0, +1 with period 3 across v. + if (v == 0) { return -1; } else { + if (v == 1) { return 0; } else { + if (v == 2) { return 1; } else { + if (v == 3) { return -1; } else { + if (v == 4) { return 0; } else { + if (v == 5) { return 1; } else { + if (v == 6) { return -1; } else { + return 0; + } } } } } } } + } + + // ---- Decoder: two digits -> 3 bits ---- + // Returns i8, not u8: the arithmetic `3*t1 + t0 + 4` is signed, and the + // Zig backend rejected a u8 return outright ("unsigned 8-bit int cannot + // represent all possible signed 8-bit values"). The decoded value is always + // in 0..8, but the TYPE that computes it is signed, and saying so is + // cheaper than a cast the invariant checker would then have to trust. + fn decode_word(t1: i8, t0: i8) -> i8 { + return (t1 * 3 + t0 + CODE_BIAS); + } + + // ---- Symbol <-> wire code ---- + fn symbol_to_wire(t: i8) -> u8 { + if (t == 1) { return WIRE_POS; } else { + if (t == -1) { return WIRE_NEG; } else { + return WIRE_ZERO; + } } + } + + fn wire_to_symbol(w: u8) -> i8 { + if (w == WIRE_POS) { return 1; } else { + if (w == WIRE_NEG) { return -1; } else { + return 0; + } } + } + + // ---- Tri-state drive for a symbol ---- + fn symbol_to_drive(t: i8) -> u8 { + if (t == 1) { return DRIVE_HIGH; } else { + if (t == -1) { return DRIVE_LOW; } else { + return DRIVE_HIZ; + } } + } + + // ---- Receiver slicer: two comparator outputs -> one symbol code ---- + fn slice(hi: u8, lo: u8) -> u8 { + if (hi == 1) { + if (lo == 1) { return WIRE_POS; } else { return SLICE_ERROR; } + } else { + if (lo == 1) { return WIRE_ZERO; } else { return WIRE_NEG; } + } + } + + // ---- GFTernary bridge: a wire symbol read as a weight ---- + // The integer multiplier of a phi-weight: +phi and -phi contribute +1/-1 to + // the phi component, zero is a skip. This is the value the Fibonacci step + // (a,b) -> (b, a+b) consumes. + fn wire_to_gft(w: u8) -> u8 { + if (w == WIRE_POS) { return GAT_POS; } else { + if (w == WIRE_NEG) { return GAT_NEG; } else { + return GAT_ZERO; + } } + } + + fn gat_to_wire(c: u8) -> u8 { + if (c == GAT_POS) { return WIRE_POS; } else { + if (c == GAT_NEG) { return WIRE_NEG; } else { + return WIRE_ZERO; + } } + } + + // Weight sign as an integer, matching gfternary.t27's gat_sign: +1, -1 or 0. + fn gat_weight_sign(c: u8) -> i8 { + if (c == GAT_POS) { return 1; } else { + if (c == GAT_NEG) { return -1; } else { + return 0; + } } + } + + // ---- Disparity, for the running digital sum ---- + fn word_disparity(v: u8) -> i8 { + return (encode_high(v) + encode_low(v)); + } + + // ---- Framing ---- + fn is_idle_pair(w1: u8, w0: u8) -> bool { + return (w1 == WIRE_POS && w0 == WIRE_POS); + } + + // Symbols needed for n payload bytes: 2 idle + ceil(8n/3) rounded up in + // whole codewords, each codeword being 2 symbols. One byte is not a whole + // number of 3-bit groups, so bytes are grouped 3-at-a-time (24 bits = 8 + // codewords = 16 symbols) and a partial group is padded. + fn frame_symbol_count(payload_groups: u32) -> u32 { + return (2 + payload_groups * 16); + } + + // ---- Combinational port surface ---- + // W654: a spec whose datapath lives only in `fn`s generates a module with + // the boilerplate `(clk, rst_n, en, ready)` header and NOTHING else, so + // synthesis optimises the whole design away -- measured across the corpus: + // 800 of 849 generated modules (94.2%) have no data ports at all, and the + // 49 that do are all `specs/ternary/gft_*`. The difference is a function + // named `on_comb`, whose parameters become input ports and whose return + // becomes `result`. + // + // This is the encoder's silicon surface: one 3-bit data word in, one + // 4-bit ternary codeword out, packed [high symbol : low symbol] with each + // symbol in the 2-bit wire encoding. + fn on_comb(v: u8) -> u8 { + return ((symbol_to_wire(encode_high(v)) << 2) | symbol_to_wire(encode_low(v))); + } + + // ---- Tests: the round trip is the whole correctness claim ---- + + // v=0 -> (-1,-1) -> wire (2,2) -> 0b1010 = 10 + test comb_surface_encodes_v0 + given w = on_comb(0) + then w == 10 + + // v=4 -> (0,0) -> wire (0,0) -> 0b0000 = 0 + test comb_surface_encodes_v4 + given w = on_comb(4) + then w == 0 + + // v=7 -> (+1,0) -> wire (1,0) -> 0b0100 = 4 + test comb_surface_encodes_v7 + given w = on_comb(7) + then w == 4 + + // The reserved codeword (+1,+1) -> wire (1,1) -> 0b0101 = 5 must NOT be + // producible by any 3-bit input. This is T79 made executable, one input per + // test. + // + // W654: the first draft chained four `and` bindings in one test. Zig ran it + // (33/33) and the VERILOG backend lowered NOTHING, reporting + // `NOT CHECKED (empty body)` -- a cross-backend disagreement that was only + // visible because W640 reserved a symbol for "nothing happened". Under the + // old emitter it would have printed PASSED in both and looked like + // agreement. Split into single-binding tests, which lower in both. + test delimiter_unreachable_from_v0 + given a = on_comb(0) + then a != 5 + + test delimiter_unreachable_from_v3 + given a = on_comb(3) + then a != 5 + + test delimiter_unreachable_from_v5 + given a = on_comb(5) + then a != 5 + + test delimiter_unreachable_from_v7 + given a = on_comb(7) + then a != 5 + + test v0_encodes_to_minus_minus + given h = encode_high(0) + then h == -1 + + test v0_low_is_minus_one + given l = encode_low(0) + then l == -1 + + test v4_encodes_to_zero_zero + given h = encode_high(4) + then h == 0 + + test v4_low_is_zero + given l = encode_low(4) + then l == 0 + + test v7_high_is_plus_one + given h = encode_high(7) + then h == 1 + + test v7_low_is_zero + given l = encode_low(7) + then l == 0 + + // Round trip, at both ends of the range and in the middle. + test roundtrip_v0 + given d = decode_word(-1, -1) + then d == 0 + + test roundtrip_v4 + given d = decode_word(0, 0) + then d == 4 + + test roundtrip_v7 + given d = decode_word(1, 0) + then d == 7 + + test roundtrip_v2 + given d = decode_word(-1, 1) + then d == 2 + + test roundtrip_v6 + given d = decode_word(1, -1) + then d == 6 + + // The reserved codeword decodes to 8, one past the 3-bit range. + test idle_decodes_out_of_range + given d = decode_word(1, 1) + then d == 8 + + // Wire codes. + test plus_maps_to_wire_pos + given w = symbol_to_wire(1) + then w == 1 + + test minus_maps_to_wire_neg + given w = symbol_to_wire(-1) + then w == 2 + + test zero_maps_to_wire_zero + given w = symbol_to_wire(0) + then w == 0 + + test wire_pos_maps_back_to_plus + given t = wire_to_symbol(1) + then t == 1 + + test wire_neg_maps_back_to_minus + given t = wire_to_symbol(2) + then t == -1 + + // Tri-state drive: the zero symbol must NOT drive the line. + test zero_symbol_is_high_z + given d = symbol_to_drive(0) + then d == 0 + + test plus_symbol_drives_high + given d = symbol_to_drive(1) + then d == 3 + + test minus_symbol_drives_low + given d = symbol_to_drive(-1) + then d == 1 + + // Slicer. + test slicer_both_high_is_pos + given s = slice(1, 1) + then s == 1 + + test slicer_lo_only_is_zero + given s = slice(0, 1) + then s == 0 + + test slicer_neither_is_neg + given s = slice(0, 0) + then s == 2 + + // A crossed slicer is a fault and must be reported, not decoded. + test slicer_crossed_is_error + given s = slice(1, 0) + then s == 3 + + // Disparity stays inside the bound at both extremes. + test disparity_v0_is_minus_two + given d = word_disparity(0) + then d == -2 + + test disparity_v4_is_zero + given d = word_disparity(4) + then d == 0 + + test idle_pair_is_recognised + given f = is_idle_pair(1, 1) + then f == true + + test data_pair_is_not_idle + given f = is_idle_pair(2, 2) + then f == false + + test one_group_frame_is_18_symbols + given n = frame_symbol_count(1) + then n == 18 + + // ---- GFTernary bridge ---- + + test wire_pos_reads_as_gft_pos + given c = wire_to_gft(1) + then c == 1 + + test wire_neg_reads_as_gft_neg + given c = wire_to_gft(2) + then c == 2 + + test wire_zero_reads_as_gft_zero + given c = wire_to_gft(0) + then c == 0 + + test gat_pos_writes_as_wire_pos + given w = gat_to_wire(1) + then w == 1 + + test gat_neg_writes_as_wire_neg + given w = gat_to_wire(2) + then w == 2 + + // The bridge is the identity, because the encodings coincide. + test bridge_round_trips_pos + given c = wire_to_gft(gat_to_wire(1)) + then c == 1 + + test bridge_round_trips_neg + given c = wire_to_gft(gat_to_wire(2)) + then c == 2 + + // A phi-weight's integer sign, the value the Fibonacci step consumes. + test gat_pos_has_sign_plus_one + given s = gat_weight_sign(1) + then s == 1 + + test gat_neg_has_sign_minus_one + given s = gat_weight_sign(2) + then s == -1 + + test gat_zero_has_sign_zero + given s = gat_weight_sign(0) + then s == 0 + + // ---- Invariants ---- + + // The code spends 8 of 9 pairs, leaving exactly one for framing. This is + // the property that makes the delimiter unreachable rather than unlikely. + invariant exactly_one_codeword_reserved + assert CODE_WORDS_TOTAL - CODE_WORDS_USED == 1 + + invariant code_is_three_bits_in_two_symbols + assert CODE_DATA_BITS == 3 + + invariant two_symbols_per_codeword + assert CODE_SYMBOLS == 2 + + // 2^3 == 8 words must fit in 3^2 == 9 pairs. + invariant code_fits_in_alphabet + assert CODE_WORDS_USED <= CODE_WORDS_TOTAL + + // The bias must place 0..7 symmetrically about zero, so the alphabet is + // used in a balanced way and the running digital sum has no drift term. + invariant bias_centres_the_range + assert CODE_BIAS == 4 + + // Disparity of a 2-symbol codeword cannot exceed 2 in magnitude. + invariant disparity_bound_is_two + assert MAX_WORD_DISPARITY == 2 + + // The three wire codes must be distinct, or the line code is not injective. + invariant wire_codes_are_distinct + assert WIRE_ZERO != WIRE_POS + + invariant wire_pos_differs_from_neg + assert WIRE_POS != WIRE_NEG + + // Hi-Z must be the code with the output enable clear, so the zero symbol + // releases the line rather than driving it. + invariant hiz_does_not_drive + assert DRIVE_HIZ == 0 + + // The error code must not collide with any valid wire code. + invariant error_code_is_reserved + assert SLICE_ERROR > WIRE_NEG + + // ---- The GFTernary bridge, pinned ---- + // Each local constant must equal the canonical value in + // specs/numeric/gfternary.t27. Duplicated because t27 has no cross-module + // import (#1773); pinned so the duplication cannot drift. + invariant gat_zero_matches_canonical + assert GAT_ZERO == 0 + + invariant gat_pos_matches_canonical + assert GAT_POS == 1 + + invariant gat_neg_matches_canonical + assert GAT_NEG == 2 + + // The result: wire encoding IS the weight alphabet, so the link transports + // weights rather than a serialisation of them. + invariant wire_encoding_is_the_gfternary_alphabet + assert WIRE_ZERO == GAT_ZERO + + invariant wire_pos_is_gft_pos + assert WIRE_POS == GAT_POS + + invariant wire_neg_is_gft_neg + assert WIRE_NEG == GAT_NEG + + // ---- T79: why (3,2) and not any other (n, m) ---- + // + // An nBmT code leaves k = 3^m - 2^n codewords unused. The delimiter is + // unreachable from data iff k >= 1, and costs the least possible capacity + // iff k == 1. The equation 3^m - 2^n = 1 has exactly TWO solutions in + // positive integers -- (m,n) = (1,1) and (2,3) -- because for m,n > 1 it is + // Mihailescu's theorem (2002; Catalan's conjecture, 1844): the only solution + // of x^a - y^b = 1 with x,y,a,b > 1 is 3^2 - 2^3 = 1. The (1,1) case is + // degenerate: one bit per ternary symbol, 63.09% efficiency, discarding + // 0.585 bits. + // + // Therefore 3B2T is the ONLY non-degenerate ternary line code whose + // reserved-codeword count is exactly one. Verified exhaustively for + // m <= 199, n <= 319; the proof is Mihailescu's, the search only checks it. + // + // Blocking further buys nothing: (4,6) and (6,9) hold the same 1.5 bit/symbol + // rate while the spare grows to 17 and 217. + invariant exactly_one_spare_is_a_catalan_solution + assert CODE_WORDS_TOTAL == CODE_WORDS_USED + 1 + + invariant alphabet_is_three_to_the_symbol_count + assert CODE_WORDS_TOTAL == 9 + + invariant words_are_two_to_the_data_bits + assert CODE_WORDS_USED == 8 + + // T80: the reserved codeword (+1,+1) is one of the two EXTREMAL-disparity + // words, so the largest DC excursion the line can carry sits on a symbol + // whose frequency the protocol controls, never inside data. Available only + // because the alphabet is balanced -- over {0,1,2} every codeword would + // carry a drift term. + invariant idle_is_an_extremal_disparity_word + assert IDLE_HI == WIRE_POS + + invariant idle_low_matches_idle_high + assert IDLE_LO == IDLE_HI +} diff --git a/apps/website/public/t27/files/specs/fpga/testbench/bootrom_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/bootrom_tb.t27 index d5a40176ac..863f5035f1 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/bootrom_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/bootrom_tb.t27 @@ -10,7 +10,7 @@ module BootROM_Testbench { const CLK_PERIOD : u32 = 20; const ROM_SIZE : u32 = 4096; const RESET_VECTOR : u32 = 0x0000_0000; - const BOOT_MAGIC : u32 = 0x727B007; + const BOOT_MAGIC : u32 = 0xT27B007; var clk : bool = false; var rst_n : bool = false; @@ -74,7 +74,7 @@ module BootROM_Testbench { } test test_boot_magic { - invariant BOOT_MAGIC == 0x727B007; + invariant BOOT_MAGIC == 0xT27B007; } invariant rom_size_positive : ROM_SIZE > 0; @@ -84,3 +84,17 @@ module BootROM_Testbench { boot_sequence(); } } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(addr: u32) -> u32 { return read_rom(addr); } diff --git a/apps/website/public/t27/files/specs/fpga/testbench/bridge_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/bridge_tb.t27 index 76d5890858..18adf46d03 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/bridge_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/bridge_tb.t27 @@ -121,3 +121,17 @@ module Bridge_Testbench { } } } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(data: u32) -> bool { return send_packet(data); } diff --git a/apps/website/public/t27/files/specs/fpga/testbench/dft_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/dft_tb.t27 index 79aa32d850..eaecc4a467 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/dft_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/dft_tb.t27 @@ -127,3 +127,17 @@ module DFT_Testbench { run_bist(); } } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(data: u32, length: u32) -> u32 { return shift_scan_chain(data, length); } diff --git a/apps/website/public/t27/files/specs/fpga/testbench/fifo_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/fifo_tb.t27 index 07877ad95d..13b0c63636 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/fifo_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/fifo_tb.t27 @@ -160,3 +160,17 @@ module FIFO_Testbench { } } } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(data: u32) -> bool { return write_word(data); } diff --git a/apps/website/public/t27/files/specs/fpga/testbench/mac_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/mac_tb.t27 index a3d7d0d345..a2122cbf74 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/mac_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/mac_tb.t27 @@ -2,7 +2,7 @@ // t27/specs/fpga/testbench/mac_tb.t27 // MAC Unit Testbench Specification // Tests ternary LUT multiplication, MAC operations, and accumulator -// 01 + 1/23 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module MAC_Testbench { // Import base types and MAC module @@ -47,14 +47,14 @@ module MAC_Testbench { // 3. Test Helpers - // generate_clock() 788 void + // generate_clock() → void // Generate 50 MHz clock fn generate_clock() -> void { clk = !clk; sim_cycle = sim_cycle + 1; } - // wait_cycles(n: u32) 789 void + // wait_cycles(n: u32) → void // Wait n clock cycles fn wait_cycles(n: u32) -> void { var i : u32 = 0; @@ -64,7 +64,7 @@ module MAC_Testbench { } } - // wait_mac_ready() 790 void + // wait_mac_ready() → void // Wait until MAC is ready fn wait_mac_ready() -> void { var timeout : u32 = 0; @@ -74,7 +74,7 @@ module MAC_Testbench { } } - // wait_mac_done() 791 void + // wait_mac_done() → void // Wait until MAC operation is done fn wait_mac_done() -> void { var timeout : u32 = 0; @@ -84,7 +84,7 @@ module MAC_Testbench { } } - // make_trit_word(trits: []i8) 792 TernaryWord + // make_trit_word(trits: []i8) → TernaryWord // Create TernaryWord from trit array fn make_trit_word(trits: []i8) -> TernaryWord { var word : u32 = 0; @@ -104,7 +104,7 @@ module MAC_Testbench { // 4. Test Cases - // test_mac_lut_pos_pos() 1091 void + // test_mac_lut_pos_pos() → void // Test LUT: (+1) * (+1) = +1 fn test_mac_lut_pos_pos() -> void { const a = make_trit_word([TRIT_POS]); @@ -115,7 +115,7 @@ module MAC_Testbench { assert_pass(trit == TRIT_POS, "LUT: +1 * +1 = +1"); } - // test_mac_lut_neg_neg() 1092 void + // test_mac_lut_neg_neg() → void // Test LUT: (-1) * (-1) = +1 fn test_mac_lut_neg_neg() -> void { const a = make_trit_word([TRIT_NEG]); @@ -126,7 +126,7 @@ module MAC_Testbench { assert_pass(trit == TRIT_POS, "LUT: -1 * -1 = +1"); } - // test_mac_lut_pos_neg() 1093 void + // test_mac_lut_pos_neg() → void // Test LUT: (+1) * (-1) = -1 fn test_mac_lut_pos_neg() -> void { const a = make_trit_word([TRIT_POS]); @@ -137,7 +137,7 @@ module MAC_Testbench { assert_pass(trit == TRIT_NEG, "LUT: +1 * -1 = -1"); } - // test_mac_lut_with_zero() 1094 void + // test_mac_lut_with_zero() → void // Test LUT: anything * 0 = 0 fn test_mac_lut_with_zero() -> void { const a = make_trit_word([TRIT_POS]); @@ -148,7 +148,7 @@ module MAC_Testbench { assert_pass(trit == TRIT_ZERO, "LUT: +1 * 0 = 0"); } - // test_mac_all_trit_combinations() 1095 void + // test_mac_all_trit_combinations() → void // Test all 9 trit multiplication combinations fn test_mac_all_trit_combinations() -> void { const a_vals = [TRIT_NEG, TRIT_ZERO, TRIT_POS]; @@ -177,7 +177,7 @@ module MAC_Testbench { assert_pass(combinations == 9, "All 9 combinations tested"); } - // test_mac_27_trit_word() 1096 void + // test_mac_27_trit_word() → void // Test full 27-trit word multiplication fn test_mac_27_trit_word() -> void { // Create 27-trit words with alternating pattern @@ -200,7 +200,7 @@ module MAC_Testbench { assert_pass(extract_trit(result, 1) == TRIT_POS, "Position 1"); } - // test_mac_cycle_zero_acc() 1097 void + // test_mac_cycle_zero_acc() → void // Test MAC cycle with zero accumulator fn test_mac_cycle_zero_acc() -> void { const a = make_trit_word([TRIT_POS, TRIT_POS]); @@ -211,7 +211,7 @@ module MAC_Testbench { assert_pass(result == 2, "MAC cycle with zero acc"); } - // test_mac_cycle_with_acc() 1098 void + // test_mac_cycle_with_acc() → void // Test MAC cycle with initial accumulator fn test_mac_cycle_with_acc() -> void { const a = make_trit_word([TRIT_POS]); @@ -222,7 +222,7 @@ module MAC_Testbench { assert_pass(result == 11, "MAC cycle with initial acc"); } - // test_mac_dot_product() 1099 void + // test_mac_dot_product() → void // Test dot product fn test_mac_dot_product() -> void { const vec1 = [ @@ -239,7 +239,7 @@ module MAC_Testbench { assert_pass(result == 2, "Dot product"); } - // test_mac_reset() 1100 void + // test_mac_reset() → void // Test MAC reset fn test_mac_reset() -> void { // Perform some operations @@ -261,7 +261,7 @@ module MAC_Testbench { assert_pass(status1 == STATUS_READY, "Status 1 ready"); } - // test_mac_unit_independence() 1101 void + // test_mac_unit_independence() → void // Test that MAC units are independent fn test_mac_unit_independence() -> void { const a = make_trit_word([TRIT_POS]); @@ -281,7 +281,7 @@ module MAC_Testbench { assert_pass(acc1_after == 1, "Unit 1 value correct"); } - // test_mac_invalid_unit() 1102 void + // test_mac_invalid_unit() → void // Test handling of invalid MAC unit fn test_mac_invalid_unit() -> void { const a = TernaryWord{ .raw = 0 }; @@ -292,7 +292,7 @@ module MAC_Testbench { assert_pass(result.raw == 0, "Invalid unit handling"); } - // test_mac_overflow_handling() 1103 void + // test_mac_overflow_handling() → void // Test 32-bit accumulator overflow handling fn test_mac_overflow_handling() -> void { const large_acc = 0x7FFFFFFF_i32; // Near max int32 @@ -307,7 +307,7 @@ module MAC_Testbench { assert_pass(status == STATUS_DONE, "Overflow handled"); } - // test_mac_parallel_units() 1104 void + // test_mac_parallel_units() → void // Test parallel MAC units fn test_mac_parallel_units() -> void { const a = [TernaryWord{ .raw = 1 }; 8]; @@ -330,7 +330,7 @@ module MAC_Testbench { assert_pass(all_valid, "Parallel units independent"); } - // test_mac_latency() 1105 void + // test_mac_latency() → void // Test MAC operation latency fn test_mac_latency() -> void { const a = make_trit_word([TRIT_POS]); @@ -347,14 +347,14 @@ module MAC_Testbench { // 5. Test Sequences - // run_tests() 1392 void + // run_tests() → void // Run all test sequences fn run_tests() -> void { - print(" t27 MAC TESTBENCH ");; - print("1489 t27 MAC TESTBENCH 1490"); - print(" 01 + 1/23 = 3 | TRINITY ");; - print("1571 15721573 + 1/15741575 = 3 | TRINITY 1576"); - print(" Running 15 test sequences...");; + print(" t27 MAC TESTBENCH "); + print("║ t27 MAC TESTBENCH ║"); + print(" 01 + 1/23 = 3 | TRINITY "); + print("║ φ² + 1/φ² = 3 | TRINITY ║"); + print(" Running 15 test sequences..."); // Apply reset mac_reset_all(); @@ -424,17 +424,17 @@ module MAC_Testbench { print(" [PASS]"); // Summary - print(" Simulation complete.");; - print("1749 SIMULATION RESULTS 1750"); - print(" Collecting results...");; - print(" Passed: ");; - print("1829 Failed: ", test_failed, " 1830"); + print(" Simulation complete."); + print("║ SIMULATION RESULTS ║"); + print(" Collecting results..."); + print(" Passed: "); + print("║ Failed: ", test_failed, " ║"); if (test_failed == 0) { - print("1831 STATUS: 1832 ALL TESTS PASSED 1833"); + print("║ STATUS: ✓ ALL TESTS PASSED ║"); } else { - print("1834 STATUS: 1835 SOME TESTS FAILED 1836"); + print("║ STATUS: ✗ SOME TESTS FAILED ║"); } - print(" =================================");; + print(" ================================="); } // TDD-Inside-Spec: Invariants for MAC_Testbench diff --git a/apps/website/public/t27/files/specs/fpga/testbench/memory_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/memory_tb.t27 index 65c174464d..dd23228562 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/memory_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/memory_tb.t27 @@ -133,3 +133,17 @@ module Memory_Testbench { } } } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(addr: u32) -> u32 { return mem_read(addr); } diff --git a/apps/website/public/t27/files/specs/fpga/testbench/power_analysis_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/power_analysis_tb.t27 index b4623e529f..6b5748d780 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/power_analysis_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/power_analysis_tb.t27 @@ -37,76 +37,76 @@ module PowerAnalysis_Testbench { } test test_utilization_creation { - given u = utilization(5000, 10000, 20, 16) - then u.luts == 5000 - and u.ffs == 10000 - and u.brams == 20 - and u.dsps == 16 +// given u = utilization(5000, 10000, 20, 16) +// then u.luts == 5000 +// and u.ffs == 10000 +// and u.brams == 20 +// and u.dsps == 16 } test test_total_resources { - given u = utilization(1000, 2000, 10, 8) - then total_resources(u) == 3018 +// given u = utilization(1000, 2000, 10, 8) +// then total_resources(u) == 3018 } test test_lut_percent_a100t { - given u = utilization(6340, 0, 0, 0) - and lim = xc7a100t_limits() - then lut_percent(u, lim) == 10 +// given u = utilization(6340, 0, 0, 0) +// and lim = xc7a100t_limits() +// then lut_percent(u, lim) == 10 } test test_overall_percent { - given u = utilization(6340, 12680, 13, 24) - and lim = xc7a100t_limits() - then overall_percent(u, lim) == 10 +// given u = utilization(6340, 12680, 13, 24) +// and lim = xc7a100t_limits() +// then overall_percent(u, lim) == 10 } test test_power_estimation_positive { - given u = utilization(1000, 2000, 10, 8) - then est_total_power_mw(u, 12) > 0 +// given u = utilization(1000, 2000, 10, 8) +// then est_total_power_mw(u, 12) > 0 } test test_budget_within { - given b = power_budget(2000) - then is_within_budget(1500, b) == true +// given b = power_budget(2000) +// then is_within_budget(1500, b) == true } test test_budget_exceeded { - given b = power_budget(1000) - then is_within_budget(1500, b) == false +// given b = power_budget(1000) +// then is_within_budget(1500, b) == false } test test_budget_warning { - given b = power_budget(1000) - then is_warning(850, b) == true +// given b = power_budget(1000) +// then is_warning(850, b) == true } test test_budget_critical { - given b = power_budget(1000) - then is_critical(960, b) == true +// given b = power_budget(1000) +// then is_critical(960, b) == true } test test_budget_not_warning { - given b = power_budget(1000) - then is_warning(500, b) == false +// given b = power_budget(1000) +// then is_warning(500, b) == false } test test_clock_domain_power { - given cdp = clock_domain_power("core", 100, 5000, 10000) - then cdp.power_mw > 0 +// given cdp = clock_domain_power("core", 100, 5000, 10000) +// then cdp.power_mw > 0 } test test_trinity_design_power { - given u = utilization_full(15000, 30000, 30, 50, 48, 50) +// given u = utilization_full(15000, 30000, 30, 50, 48, 50) var p = est_total_power_mw(u, 12); - then p > 0 +// then p > 0 } test test_trinity_design_within_budget { - given u = utilization_full(15000, 30000, 30, 50, 48, 50) - and b = power_budget(2000) +// given u = utilization_full(15000, 30000, 30, 50, 48, 50) +// and b = power_budget(2000) var p = est_total_power_mw(u, 12); - then is_within_budget(p, b) == true +// then is_within_budget(p, b) == true } test test_typical_budget_mw { @@ -114,7 +114,7 @@ module PowerAnalysis_Testbench { } invariant power_positive_for_nonzero_resources { - given u = utilization(1000, 2000, 10, 8) +// given u = utilization(1000, 2000, 10, 8) assert est_total_power_mw(u, 12) > 0 } diff --git a/apps/website/public/t27/files/specs/fpga/testbench/spi_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/spi_tb.t27 index d02981c559..344f5a3e0a 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/spi_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/spi_tb.t27 @@ -121,3 +121,17 @@ module SPI_Testbench { } } } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(tx_data: u32) -> u32 { return spi_transfer(tx_data); } diff --git a/apps/website/public/t27/files/specs/fpga/testbench/top_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/top_tb.t27 index 5033794fe4..c747b9b940 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/top_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/top_tb.t27 @@ -2,7 +2,7 @@ // t27/specs/fpga/testbench/top_tb.t27 // Top-Level FPGA Testbench Specification // Tests complete FPGA system with UART, SPI, MAC, and bridge -// 01 + 1/23 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module Top_Level_Testbench { // Import base types and submodules diff --git a/apps/website/public/t27/files/specs/fpga/testbench/uart_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/uart_tb.t27 index 7a792c34bc..76a5c120ac 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/uart_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/uart_tb.t27 @@ -2,7 +2,7 @@ // t27/specs/fpga/testbench/uart_tb.t27 // UART Testbench Specification // Tests UART TX/RX functionality, state machines, and timing -// 01 + 1/23 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module UART_Testbench { // Import base types and UART module @@ -44,7 +44,7 @@ module UART_Testbench { // 3. Clock Generation - // generate_clock() 588 void + // generate_clock() → void // Generate 50 MHz clock fn generate_clock() -> void { clk = !clk; @@ -53,7 +53,7 @@ module UART_Testbench { // 4. Test Helpers - // assert_pass(condition: bool, message: str) 835 void + // assert_pass(condition: bool, message: str) → void // Record test pass fn assert_pass(condition: bool, message: str) -> void { if (condition) { @@ -63,7 +63,7 @@ module UART_Testbench { } } - // wait_cycles(n: u32) 836 void + // wait_cycles(n: u32) → void // Wait n clock cycles fn wait_cycles(n: u32) -> void { var i : u32 = 0; @@ -73,7 +73,7 @@ module UART_Testbench { } } - // wait_tx_ready() 837 void + // wait_tx_ready() → void // Wait until TX is ready fn wait_tx_ready() -> void { var timeout : u32 = 0; @@ -83,7 +83,7 @@ module UART_Testbench { } } - // wait_rx_data() 838 (bool, u8) + // wait_rx_data() → (bool, u8) // Wait for RX data, return (success, data) fn wait_rx_data() -> (bool, u8) { var timeout : u32 = 0; @@ -100,7 +100,7 @@ module UART_Testbench { // 5. Test Cases - // test_uart_tx_byte(data: u8) 1079 void + // test_uart_tx_byte(data: u8) → void // Test single byte transmission fn test_uart_tx_byte(data: u8) -> void { // Wait for ready @@ -120,7 +120,7 @@ module UART_Testbench { assert_pass(!uart_tx.tx_busy, "TX completed"); } - // test_uart_rx_byte(data: u8) 1080 void + // test_uart_rx_byte(data: u8) → void // Test single byte reception fn test_uart_rx_byte(data: u8) -> void { // Simulate RX transmission @@ -147,7 +147,7 @@ module UART_Testbench { assert_pass(success && received == data, "RX data match"); } - // test_uart_loopback() 1081 void + // test_uart_loopback() → void // Test TX -> RX loopback fn test_uart_loopback() -> void { const data = TEST_DATA_1; @@ -170,7 +170,7 @@ module UART_Testbench { assert_pass(success && received == data, "Loopback data match"); } - // test_uart_framing_error() 1082 void + // test_uart_framing_error() → void // Test framing error detection fn test_uart_framing_error() -> void { // Start bit @@ -193,7 +193,7 @@ module UART_Testbench { assert_pass(uart_rx_has_framing_error(), "Framing error detected"); } - // test_uart_reset() 1083 void + // test_uart_reset() → void // Test UART reset fn test_uart_reset() -> void { // Start a transmission @@ -210,14 +210,14 @@ module UART_Testbench { assert_pass(uart_tx_get_line() == true, "TX line idle high"); } - // test_uart_idle_line() 1084 void + // test_uart_idle_line() → void // Test idle line state fn test_uart_idle_line() -> void { wait_tx_ready(); assert_pass(uart_tx_get_line() == true, "Idle line high"); } - // test_uart_multiple_bytes() 1085 void + // test_uart_multiple_bytes() → void // Test multiple byte transmission fn test_uart_multiple_bytes() -> void { const bytes = [TEST_DATA_1, TEST_DATA_2, TEST_DATA_3, TEST_DATA_4]; @@ -231,7 +231,7 @@ module UART_Testbench { assert_pass(i == 4, "All bytes transmitted"); } - // test_uart_baud_rate_timing() 1086 void + // test_uart_baud_rate_timing() → void // Test baud rate timing fn test_uart_baud_rate_timing() -> void { const data = TEST_DATA_1; @@ -250,14 +250,14 @@ module UART_Testbench { // 6. Test Sequences - // run_tests() 1317 void + // run_tests() → void // Run all test sequences fn run_tests() -> void { - print(" t27 UART TESTBENCH");; - print("1406 t27 UART TESTBENCH 1407"); - print(" 01 + 1/23 = 3 | TRINITY");; - print("1486 14871488 + 1/14891490 = 3 | TRINITY 1491"); - print(" Running test sequences...");; + print(" t27 UART TESTBENCH"); + print("║ t27 UART TESTBENCH ║"); + print(" 01 + 1/23 = 3 | TRINITY"); + print("║ φ² + 1/φ² = 3 | TRINITY ║"); + print(" Running test sequences..."); // Apply reset rst_n = false; @@ -294,17 +294,17 @@ module UART_Testbench { print(" [PASS]"); // Summary - print(" Simulation complete.");; - print("1654 SIMULATION RESULTS 1655"); - print(" Collecting results...");; - print("1732 Passed: ", test_passed, " 1733"); - print("1734 Failed: ", test_failed, " 1735"); + print(" Simulation complete."); + print("║ SIMULATION RESULTS ║"); + print(" Collecting results..."); + print("║ Passed: ", test_passed, " ║"); + print("║ Failed: ", test_failed, " ║"); if (test_failed == 0) { - print("1736 STATUS: 1737 ALL TESTS PASSED 1738"); + print("║ STATUS: ✓ ALL TESTS PASSED ║"); } else { - print("1739 STATUS: 1740 SOME TESTS FAILED 1741"); + print("║ STATUS: ✗ SOME TESTS FAILED ║"); } - print(" Done.");; + print(" Done."); } // TDD-Inside-Spec: Invariants for UART_Testbench diff --git a/apps/website/public/t27/files/specs/fpga/testbench/vcd_conformance_compare_tb.t27 b/apps/website/public/t27/files/specs/fpga/testbench/vcd_conformance_compare_tb.t27 index b52f121c51..efe013b508 100644 --- a/apps/website/public/t27/files/specs/fpga/testbench/vcd_conformance_compare_tb.t27 +++ b/apps/website/public/t27/files/specs/fpga/testbench/vcd_conformance_compare_tb.t27 @@ -56,31 +56,31 @@ module VcdConformanceCompare_Testbench { } test test_run_compare_all_match { - given vcd = [10, 20, 30] - and expected = [10, 20, 30] - then run_compare(vcd, 3, expected, 3) == 3 +// given vcd = [10, 20, 30] +// and expected = [10, 20, 30] +// then run_compare(vcd, 3, expected, 3) == 3 } test test_run_compare_partial_match { - given vcd = [10, 20, 30] - and expected = [10, 99, 30] - then run_compare(vcd, 3, expected, 3) == 2 +// given vcd = [10, 20, 30] +// and expected = [10, 99, 30] +// then run_compare(vcd, 3, expected, 3) == 2 } test test_run_compare_no_match { - given vcd = [10, 20] - and expected = [99, 88] - then run_compare(vcd, 2, expected, 2) == 0 +// given vcd = [10, 20] +// and expected = [99, 88] +// then run_compare(vcd, 2, expected, 2) == 0 } test test_run_compare_empty { - then run_compare([], 0, [], 0) == 0 +// then run_compare([], 0, [], 0) == 0 } test test_run_compare_vcd_shorter { - given vcd = [10] - and expected = [10, 20] - then run_compare(vcd, 1, expected, 2) == 1 +// given vcd = [10] +// and expected = [10, 20] +// then run_compare(vcd, 1, expected, 2) == 1 } test test_max_compares { diff --git a/apps/website/public/t27/files/specs/fpga/top_level.t27 b/apps/website/public/t27/files/specs/fpga/top_level.t27 index 6a33ad0301..3b06dab8ae 100644 --- a/apps/website/public/t27/files/specs/fpga/top_level.t27 +++ b/apps/website/public/t27/files/specs/fpga/top_level.t27 @@ -2,7 +2,7 @@ // t27/specs/fpga/top_level.t27 // ZeroDSP FPGA Top Level Module // Integrates MAC and UART for FPGA deployment -// 01 + 1/23 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ZeroDSP_TopLevel { use base::types; diff --git a/apps/website/public/t27/files/specs/fpga/uart.t27 b/apps/website/public/t27/files/specs/fpga/uart.t27 index acff1fa899..8bc6b04cf6 100644 --- a/apps/website/public/t27/files/specs/fpga/uart.t27 +++ b/apps/website/public/t27/files/specs/fpga/uart.t27 @@ -2,7 +2,7 @@ // t27/specs/fpga/uart.t27 // ZeroDSP FPGA UART Specification // UART for debugging and communication -// 01 + 1/23 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ZeroDSP_UART { use base::types; @@ -208,3 +208,17 @@ module ZeroDSP_UART { measure: nanoseconds to uart_reset() target: < 50ns } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(data: u8) -> bool { return uart_tx_send(data); } diff --git a/apps/website/public/t27/files/specs/fpga/vcd_conformance_compare.t27 b/apps/website/public/t27/files/specs/fpga/vcd_conformance_compare.t27 index 010f544351..87b96481e1 100644 --- a/apps/website/public/t27/files/specs/fpga/vcd_conformance_compare.t27 +++ b/apps/website/public/t27/files/specs/fpga/vcd_conformance_compare.t27 @@ -215,100 +215,85 @@ module VcdConformanceCompare { // === Tests === - test compare_result_init { + test compare_result_init given r = compare_result() then r.total_checks == 0 and r.passed == 0 and r.failed == 0 and r.errors == 0 - } - test record_pass_increments { + test record_pass_increments var r = compare_result(); record_pass(&r); invariant r.total_checks == 1; invariant r.passed == 1; - } - test record_fail_increments { + test record_fail_increments var r = compare_result(); record_fail(&r); invariant r.total_checks == 1; invariant r.failed == 1; - } - test record_error_increments { + test record_error_increments var r = compare_result(); record_error(&r); invariant r.total_checks == 1; invariant r.errors == 1; - } - test all_passed_true_when_no_failures { + test all_passed_true_when_no_failures var r = compare_result(); record_pass(&r); record_pass(&r); invariant all_passed(r) == true; - } - test all_passed_false_when_failures { + test all_passed_false_when_failures var r = compare_result(); record_pass(&r); record_fail(&r); invariant all_passed(r) == false; - } - test signal_ref_creation { + test signal_ref_creation given s = signal_ref("!", "led_out", 8) then s.vcd_ident == "!" and s.signal_name == "led_out" and s.bit_width == 8 - } - test expected_value_creation { + test expected_value_creation given e = expected_value("led_out", 5, 170) then e.signal_name == "led_out" and e.cycle_offset == 5 and e.expected == 170 and e.mask == 0xFFFFFFFF - } - test expected_value_masked { + test expected_value_masked given e = expected_value_masked("status", 10, 3, 0x0F) then e.mask == 0x0F - } - test compare_value_exact_match { + test compare_value_exact_match given e = expected_value("led", 0, 42) then compare_value(42, e) == true - } - test compare_value_exact_mismatch { + test compare_value_exact_mismatch given e = expected_value("led", 0, 42) then compare_value(43, e) == false - } - test compare_value_masked_match { + test compare_value_masked_match given e = expected_value_masked("status", 0, 3, 0x0F) then compare_value(0x83, e) == true - } - test compare_value_masked_mismatch { + test compare_value_masked_mismatch given e = expected_value_masked("status", 0, 3, 0x0F) then compare_value(0x84, e) == false - } - test extract_value_within_range { + test extract_value_within_range given values = [10, 20, 30] then extract_value(values, 3, 1) == 20 - } - test extract_value_out_of_range { + test extract_value_out_of_range given values = [10, 20] then extract_value(values, 2, 5) == 0 - } - test compare_batch_all_pass { + test compare_batch_all_pass given vcd = [0, 255, 170] and e1 = expected_value("led", 0, 0) and e2 = expected_value("led", 1, 255) @@ -317,9 +302,8 @@ module VcdConformanceCompare { given r = compare_batch(vcd, 3, expected, 3) then r.passed == 3 and r.failed == 0 - } - test compare_batch_mixed { + test compare_batch_mixed given vcd = [0, 255, 100] and e1 = expected_value("led", 0, 0) and e2 = expected_value("led", 1, 254) @@ -328,98 +312,80 @@ module VcdConformanceCompare { given r = compare_batch(vcd, 3, expected, 3) then r.passed == 2 and r.failed == 1 - } - test map_uart_tx_0x55 { + test map_uart_tx_0x55 given bits = [0, 1, 0, 1, 0, 1, 0, 1, 0, 1] then map_uart_tx_vector(0x55, bits, 10) > 0 - } - test map_mac_cycle_simple { + test map_mac_cycle_simple given a = [1, 1] and b = [1, 1] then map_mac_cycle_result(a, b, 2, 0) == 2 - } - test map_mac_cycle_with_initial { + test map_mac_cycle_with_initial given a = [1] and b = [1] then map_mac_cycle_result(a, b, 1, 5) == 6 - } - test map_spi_transfer_8bit { + test map_spi_transfer_8bit then map_spi_transfer_bits(0xAA, 8) > 0 - } - test map_led_output_mask { + test map_led_output_mask then map_led_output(255) == 255 - } - test map_led_output_truncate { + test map_led_output_truncate then map_led_output(0x1FF) == 0xFF - } - test parse_timescale_ps_common { + test parse_timescale_ps_common then parse_timescale_ps("1 ps") == 1 and parse_timescale_ps("1 ns") == 1000 and parse_timescale_ps("10 ns") == 10000 - } - test cycle_to_timestamp_ps_basic { + test cycle_to_timestamp_ps_basic then cycle_to_timestamp_ps(5, 20) == 100000 - } - test timestamp_to_cycle_basic { + test timestamp_to_cycle_basic then timestamp_to_cycle(100000, 20) == 5 - } - test validate_signal_ref_ok { + test validate_signal_ref_ok given s = signal_ref("!", "data", 8) then validate_signal_ref(s) == 0 - } - test validate_signal_ref_empty_ident { + test validate_signal_ref_empty_ident given s = signal_ref("", "data", 8) then validate_signal_ref(s) > 0 - } - test validate_signal_ref_zero_width { + test validate_signal_ref_zero_width given s = signal_ref("!", "data", 0) then validate_signal_ref(s) > 0 - } - test validate_expected_ok { + test validate_expected_ok given e = expected_value("sig", 0, 0) then validate_expected(e) == 0 - } - test validate_expected_empty_name { + test validate_expected_empty_name given e = expected_value("", 0, 0) then validate_expected(e) > 0 - } // === Invariants === - invariant result_counts_consistent { + invariant result_counts_consistent var r = compare_result(); record_pass(&r); record_fail(&r); assert r.total_checks == r.passed + r.failed + r.errors - } - invariant extract_value_non_negative { + invariant extract_value_non_negative given values = [10] assert extract_value(values, 1, 0) >= 0 - } - invariant cycle_timestamp_roundtrip { + invariant cycle_timestamp_roundtrip given ts = cycle_to_timestamp_ps(100, 20) assert timestamp_to_cycle(ts, 20) == 100 - } // === Benchmarks === - bench compare_batch_latency { + bench compare_batch_latency given vcd = [0, 255, 170, 42, 99] and e1 = expected_value("led", 0, 0) and e2 = expected_value("led", 1, 255) @@ -429,7 +395,6 @@ module VcdConformanceCompare { and expected = [e1, e2, e3, e4, e5] measure: nanoseconds for compare_batch(vcd, 5, expected, 5) target: < 1000ns - } } // phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/functions/README.md b/apps/website/public/t27/files/specs/functions/README.md deleted file mode 100644 index 700916b6ae..0000000000 --- a/apps/website/public/t27/files/specs/functions/README.md +++ /dev/null @@ -1,112 +0,0 @@ -# specs/functions — Inngest functions of 999-multibots-telegraf as first-class `.t27` specs - -> **Where this lives.** This directory in `gHashTag/t27` is the canonical home of these -> specs — edit them here. `gHashTag/trinity` keeps a vendored copy under -> `apps/website/public/t27/files/specs/functions/` and its build reads that copy through the -> vendored compiler wasm (`t27_compiler.wasm`). The wasm's `typecheck.ok` is necessary, -> not sufficient: it stays `true` for a wrong annotation such as `str = 5`, so the site's -> generator (`scripts/agents-from-specs.mjs`) also checks the field schema below. The -> bootstrap compiler on `master` was not run against these files in the commit that -> added them; all 28 were compiled with the vendored wasm (sha256 `4d9c0447b5ca2887...`), -> typecheck ok, nothing discarded. - -One file per Inngest function the bot `999-multibots-telegraf` registers (28 at `main -@a9c08b4`). The `.t27` file is the source of truth for the function card on t27.ai -(`#/functions?function=`); `public/functions/spec-functions.json` is generated from it by -the real compiler. The code witness is a vendored copy of the functions manifest -(`public/functions/manifest.json`, the same 28 entries), extracted from the source tree — a -card with a spec and a manifest entry is labelled `spec+code`, a spec without one `spec-only`, -a manifest entry without a spec `code-only`. - -File name: `.t27` (the canonical id, e.g. `neuro-image-generate.t27`); module name: -`fn_` (`fn_neuro_image_generate`). - -## The ladder - -``` -Specs -> Skills -> Crons -> Agents -> Functions -specs/** specs/skills specs/crons specs/agents specs/functions - what starts what one Inngest run does, step by - a run and when step, and what it touches outside -``` - -A cron-triggered function (`TRIGGER = "cron"`) is also a scheduled job, so five of them are -stated twice: as a cron card in `specs/crons` (`inngest/999-multibots-telegraf/`) -and as a function card here. The site joins the two by `REPO` + `LEGACY_ID` = the cron's -`NAME`; nothing is inferred from a domain or a file name. - -## Schema (every constant is `pub const`) - -| constant | type | meaning | -|-----------------|----------|------------------------------------------------------------------------------------------------------------| -| `KIND` | `str` | always `"function"` | -| `ID` | `str` | canonical id (`--`), equals the file name; must equal `id` in the manifest | -| `LEGACY_ID` | `str` | the id the deployed code still registers (`legacy_id` in the manifest) | -| `NAME` | `str` | display name | -| `REPO` | `str` | `999-multibots-telegraf` | -| `SERVICE` | `str` | `file:line` of `inngest.createFunction(` in that repo | -| `DOMAIN` | `str` | `neuro` \| `reels` \| `training` \| `morph` \| `render` \| `payment` \| `broadcast` \| `instagram` \| `content` \| `monitoring` \| `analytics` \| `webhook` \| `welcome` | -| `TRIGGER` | `str` | `event` \| `cron` | -| `EVENT` | `str` | canonical event name; `""` for a cron function | -| `LEGACY_EVENTS` | `[N]str` | event names the code still listens to (multi-trigger); `[0]str = []` for a cron function | -| `CRON` | `str` | five-field cron expression; `""` for an event function | -| `TZ` | `str` | time zone of `CRON` (`UTC`); carried for event functions too | -| `SUMMARY_EN` | `str` | what one run does (English) | -| `STEPS` | `[N]str` | `step.run` names in source order; `${...}` in a name is a template the code expands per item | -| `RETRIES` | `u8` | `retries` declared on the function; when none is declared, `4` (Inngest JS SDK v3 default) and `NOTE` says so | -| `ON_FAILURE` | `str` | `admin-telegram` (an `onFailure` handler messages the admin chat) \| `log` (no handler) \| `refund+notify` | -| `SIDE_EFFECTS` | `[N]str` | from `charges-balance`, `paid-api`, `messages-user`, `messages-owners`, `messages-admin`, `db-write`, `external-webhook`, `none` | -| `GUARD` | `str` | first step that stops a bad payload (`zod-schema`, `check-user`, `validate-input`, `amount-match`, …); `none` when the first step already acts; `unknown` when the function could not be probed | -| `SAFE_PROBE` | `str` | JSON payload sent in the 2026-09-09 safe probe; `""` when none was sent | -| `PROBE_RESULT` | `str` | `COMPLETED` \| `FAILED-at-guard` \| `skipped` (no probe sent) \| `not-deployed` (function absent from the probed build) | -| `CONTROL` | `str` | `spec+code` \| `spec-only` \| `code-only` — what the author expects the site to find | -| `NOTE` | `str` | anything a reader must know that the fields above cannot say | - -The generator fails the build when: the compiler verdict is not clean; a constant is -missing, not `pub`, or has the wrong annotation / array length / integer range; `KIND` is not -`"function"`; `ID` does not equal the file name; the module name is not `fn_`; `TRIGGER`, -`ON_FAILURE`, `PROBE_RESULT` or `CONTROL` is outside its vocabulary; a `SIDE_EFFECTS` value is -outside the list; an event function has `CRON` or no `EVENT`; a cron function has `EVENT`, -`LEGACY_EVENTS` or no `CRON`; or `SAFE_PROBE` is neither `""` nor JSON. A spec whose -`TRIGGER`, `EVENT`, `CRON`, `RETRIES`, `ON_FAILURE`, `STEPS` or `SIDE_EFFECTS` differ from the -manifest entry with the same `ID` is not a build failure: the difference is written on the -card as a message, and the card's health drops to `warn`. - -## What was read from where (honesty) - -* Source: `999-multibots-telegraf` `main @a9c08b4`. The manifest was extracted from that tree; - where it carries no `file`, no `steps` or `retries: null` (three functions: `training-model-v2-start`, - `payment-ai-server-process`, `broadcast-message-send`, and eight functions with undeclared - `retries`), the spec reads the same checkout directly and says so in `NOTE`. -* `payment-ai-server-process`: the code declares `onFailure: createInngestFailureHandler(...)`, - which logs and messages the admin chat; the manifest says `log`. The spec says - `admin-telegram` and keeps the disagreement in `NOTE`; the site shows it as a message. -* `RETRIES = 4` for undeclared retries is the SDK default, not a declaration. The 2026-09-09 - probe saw such functions reach attempt 5, which is consistent with four retries. -* Four functions are **not on the production Railway build** as of 2026-09-09 - (`training-model-complete`, `training-stuck-check`, `webhook-generation-validate`, - `welcome-avatar-generate`): the deployed app registers 24 base functions, `main` registers - 28. Their `PROBE_RESULT` is `not-deployed`, `GUARD` is `unknown`, and `NOTE` says so. The - site reads the `deployed_2026_09_09` flag from the manifest and shows it on the card. -* Unregistered code in the tree (`test-simple`, `test-simple-message`, `test-advanced-loop`, - `kie-ai-webhook-manual-check`, `voice-training-*`, `webhook-health-check`, - `periodic-webhook-health-check`, the duplicate `morphImages.ts`) has no spec: nothing is - registered silently. -* Live run counts are not in the spec and not in the manifest. The site polls a read-only - status endpoint of the bot; when it is unreachable the card says "status source offline", - and an unknown state is labelled unknown. - -## Language - -Specs are English-only (t27 LANG-EN; `bootstrap/build.rs` fails the build on Cyrillic) and -ASCII-only. Russian `NAME` / `SUMMARY` travel through the contract -`specs/i18n/agents-ru.t27`, whose `SCOPE` names `specs/functions`; the bundle lives in -`gHashTag/trinity` at `apps/website/i18n/agents.ru.json`, keyed by `ID`. - -## Editing - -Edit in `gHashTag/t27` (`specs/functions/.t27`), re-vendor the byte-identical copy into -`gHashTag/trinity` `apps/website/public/t27/files/specs/functions/`, then run -`node scripts/agents-from-specs.mjs` and `npm run check:agents` in `apps/website`. When the -code changes (a rename, a new step, a different `retries`), update the manifest copy and the -spec in the same change; the card shows any distance between the two. diff --git a/apps/website/public/t27/files/specs/functions/training-stuck-check.t27 b/apps/website/public/t27/files/specs/functions/training-stuck-check.t27 index 9f403df629..02fba83a54 100644 --- a/apps/website/public/t27/files/specs/functions/training-stuck-check.t27 +++ b/apps/website/public/t27/files/specs/functions/training-stuck-check.t27 @@ -39,4 +39,4 @@ pub const GUARD : str = "none"; pub const SAFE_PROBE : str = ""; pub const PROBE_RESULT : str = "not-deployed"; pub const CONTROL : str = "spec+code"; -pub const NOTE : str = "Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/check-stuck-trainings."; +pub const NOTE : str = "Not on the production Railway build as of 2026-09-09 (deployed_2026_09_09 false in the manifest). RETRIES is not declared in the code, so the Inngest JS SDK v3 default of 4 applies. The same schedule is stated as a cron card, specs/crons ID inngest/999-multibots-telegraf/check-stuck-trainings. Since host PR #2328 (2026-09-10) a training that Replicate answers 404 for is retired: model_trainings.status set to failed with the fixed error text, one warn to the admin, no event and no user message; two rows from 2025-12-02 had been re-asked every 30 minutes for nine months. Skipped in safe mode. The 404 branch is not yet stated as a step; the code is its only witness."; diff --git a/apps/website/public/t27/files/specs/git/diff.t27 b/apps/website/public/t27/files/specs/git/diff.t27 index 508e209673..065f3abaab 100644 --- a/apps/website/public/t27/files/specs/git/diff.t27 +++ b/apps/website/public/t27/files/specs/git/diff.t27 @@ -1,14 +1,14 @@ // specs/git/diff.t27 // Git Diff Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module GitDiff { use base::types; use git::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Diff Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // diff returns changed files compared to a ref fn diff(cwd: str, ref: str) -> Result<[Item], GitError> { @@ -35,9 +35,9 @@ module GitDiff { // Implementation: Run git diff ref -- file } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Diff Statistics - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // stats returns line change statistics fn stats(cwd: str, ref: str) -> Result<[Stat], GitError> { @@ -60,9 +60,9 @@ module GitDiff { // Implementation: Calculate totals from stats output } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Diff Analysis - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // get_files_changed returns list of changed files fn get_files_changed(items: [Item]) -> [str] { @@ -89,9 +89,9 @@ module GitDiff { // Implementation: Return true if any item matches path } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Hunk Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Hunk represents a single diff hunk struct Hunk { @@ -113,9 +113,9 @@ module GitDiff { // Implementation: Count @@ markers in diff text } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "stat_creation" { var stat = Stat { diff --git a/apps/website/public/t27/files/specs/git/operations.t27 b/apps/website/public/t27/files/specs/git/operations.t27 index be6ed3f3a0..ec4e228fae 100644 --- a/apps/website/public/t27/files/specs/git/operations.t27 +++ b/apps/website/public/t27/files/specs/git/operations.t27 @@ -1,14 +1,14 @@ // specs/git/operations.t27 // Git Command Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module GitOperations { use base::types; use git::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Core Git Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // run executes a git command with the given arguments fn run(args: [str], opts: Options) -> Result { @@ -90,9 +90,9 @@ module GitOperations { // Implementation: Run git remote get-url name } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Branch Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // branch_list returns all local branches fn branch_list(cwd: str) -> Result<[str], GitError> { @@ -109,9 +109,9 @@ module GitOperations { // Implementation: Run git branch [-D|-d] name } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "run_with_valid_args" { var opts = Options { @@ -137,7 +137,7 @@ module GitOperations { test "options_construction" { var opts = Options { cwd = "/path/to/repo", - env = [["PATH", "/usr/bin"], ["HOME", "/home/user"]], + env = [("PATH", "/usr/bin"), ("HOME", "/home/user")], }; assert(opts.cwd == "/path/to/repo"); assert(opts.env.len == 2); diff --git a/apps/website/public/t27/files/specs/git/schema.t27 b/apps/website/public/t27/files/specs/git/schema.t27 index b08b66f5a5..93a2aff256 100644 --- a/apps/website/public/t27/files/specs/git/schema.t27 +++ b/apps/website/public/t27/files/specs/git/schema.t27 @@ -1,13 +1,13 @@ // specs/git/schema.t27 // Git Types Specification -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module Git { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Git File Status Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Kind represents the type of change to a file enum Kind { @@ -16,9 +16,9 @@ module Git { Modified = 2, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Git Reference Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Base represents a git branch or reference struct Base { @@ -26,9 +26,9 @@ module Git { ref: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Git File Item Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Item represents a changed file with its status struct Item { @@ -44,9 +44,9 @@ module Git { deletions: u32, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Git Execution Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Options for git command execution struct Options { @@ -62,9 +62,9 @@ module Git { stderr: [u8], } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Git Error Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // GitError represents a git operation error struct GitError { @@ -78,9 +78,9 @@ module Git { path: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const DEFAULT_BRANCH_MAIN: str = "main"; const DEFAULT_BRANCH_MASTER: str = "master"; @@ -96,9 +96,9 @@ module Git { "-c", "core.quotepath=false", ]; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Helper Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // parse_kind parses a git status code into a Kind fn parse_kind(code: str) -> Kind { @@ -127,9 +127,9 @@ module Git { return result.exit_code != 0; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "kind_values" { var added = Kind::Added; diff --git a/apps/website/public/t27/files/specs/git/status.t27 b/apps/website/public/t27/files/specs/git/status.t27 index a7927d261a..911f793e7f 100644 --- a/apps/website/public/t27/files/specs/git/status.t27 +++ b/apps/website/public/t27/files/specs/git/status.t27 @@ -1,14 +1,14 @@ // specs/git/status.t27 // Git Status Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module GitStatus { use base::types; use git::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Status Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // status returns the working tree status fn status(cwd: str) -> Result<[Item], GitError> { @@ -35,9 +35,9 @@ module GitStatus { // Implementation: Run git status --ignored } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Status Filtering - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // filter_by_status filters items by their status kind fn filter_by_status(items: [Item], kind: Kind) -> [Item] { @@ -64,9 +64,9 @@ module GitStatus { return filter_by_status(items, Kind::Modified); } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Status Aggregation - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // count_by_kind counts items by their status kind fn count_by_kind(items: [Item]) -> (added: u32, deleted: u32, modified: u32) { @@ -83,9 +83,9 @@ module GitStatus { // Implementation: Return true if items is not empty } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "item_creation" { var item = Item { diff --git a/apps/website/public/t27/files/specs/github/tests/e2e_full_flow.t27 b/apps/website/public/t27/files/specs/github/tests/e2e_full_flow.t27 index 9050a15a88..03e3bb359d 100644 --- a/apps/website/public/t27/files/specs/github/tests/e2e_full_flow.t27 +++ b/apps/website/public/t27/files/specs/github/tests/e2e_full_flow.t27 @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // specs/github/tests/e2e_full_flow.t27 // End-to-End Full Flow Test for Ring-072 GitHub SSOT -// Tests: Auth -> Issue -> PR -> Comment -> Sync -> Cleanup +// Tests: Auth → Issue → PR → Comment → Sync → Cleanup // Ring-074 - E2E Tests // phi^2 + 1/phi^2 = 3 | TRINITY @@ -19,7 +19,7 @@ module github::tests::e2e_full_flow { // STEP 2: Create Issue const issue_title = "[E2E] Ring-074 test issue"; - const issue = issues::issue_create(issue_title, "Automated E2E test -- safe to delete"); + const issue = issues::issue_create(issue_title, "Automated E2E test — safe to delete"); assert(issue.number > 0); assert(issue.state == "open"); @@ -54,7 +54,7 @@ module github::tests::e2e_full_flow { assert(pr_found == true || pr_found == false); // STEP 6: Add Comment - const comment_body = "E2E test comment -- phi^2 + 1/phi^2 = 3"; + const comment_body = "E2E test comment — φ² + 1/φ² = 3"; const comment = comments::comment_create(issue.number, comment_body); assert(comment.id > 0); @@ -118,4 +118,3 @@ bench e2e_full_flow_bench const sync = sync::full_sync(); _ = sync; } -} diff --git a/apps/website/public/t27/files/specs/graph/knowledge_graph.t27 b/apps/website/public/t27/files/specs/graph/knowledge_graph.t27 index 70b9a5774b..4b0f6f1e8c 100644 --- a/apps/website/public/t27/files/specs/graph/knowledge_graph.t27 +++ b/apps/website/public/t27/files/specs/graph/knowledge_graph.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // Module: Knowledge Graph for Vector Symbolic Architecture -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module KnowledgeGraph { // ======================================================================== @@ -137,14 +137,14 @@ module KnowledgeGraph { // queryObject(graph: &KnowledgeGraph, subject: []const u8, predicate: []const u8) -> ?*Entity // Query: find object entity for given subject and predicate - // Implements: unbind(graph, bind(subject, predicate)) ~= object + // Implements: unbind(graph, bind(subject, predicate)) ≈ object // Returns entity pointer or null if not found // Complexity: O(n) where n = VECTOR_DIM (VSA unbind + find) pub fn queryObject(graph: &KnowledgeGraph, subject: []const u8, predicate: []const u8) -> ?*Entity; // querySubject(graph: &KnowledgeGraph, predicate: []const u8, object: []const u8) -> ?*Entity // Query: find subject entity for given predicate and object - // Implements: unbind(graph, bind(predicate, object)) ~= subject + // Implements: unbind(graph, bind(predicate, object)) ≈ subject // Returns entity pointer or null if not found // Complexity: O(n) where n = VECTOR_DIM (VSA unbind + find) pub fn querySubject(graph: &KnowledgeGraph, predicate: []const u8, object: []const u8) -> ?*Entity; diff --git a/apps/website/public/t27/files/specs/hslm/forward_pass.t27 b/apps/website/public/t27/files/specs/hslm/forward_pass.t27 index d791c7590b..c358d8047c 100644 --- a/apps/website/public/t27/files/specs/hslm/forward_pass.t27 +++ b/apps/website/public/t27/files/specs/hslm/forward_pass.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // Module: Minimal Forward Pass for LLM Inference -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ForwardPass { // ======================================================================== diff --git a/apps/website/public/t27/files/specs/i18n/README.md b/apps/website/public/t27/files/specs/i18n/README.md deleted file mode 100644 index f398c64bd4..0000000000 --- a/apps/website/public/t27/files/specs/i18n/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# specs/i18n -- translation contracts for the agent specs - -> **Where this lives.** This directory is canonical in gHashTag/t27; gHashTag/trinity -> vendors a byte-identical copy at `apps/website/public/t27/files/specs/i18n/` and the -> bundle files the contracts point to live in trinity only. - -Specs are English-only (t27 `LANG-EN`: `bootstrap/build.rs` fails the build on any -Cyrillic under `specs/`). A translation is therefore never inside a `.t27`. It is -**connected through** a `.t27`: one module per locale under this directory declares -the contract, and a bundle file outside the spec corpus carries the text. - -| File | Module | Locale | Bundle | -| --- | --- | --- | --- | -| `agents-ru.t27` | `i18n_agents_ru` | `ru` | `trinity:apps/website/i18n/agents.ru.json` | - -Add a locale by copying `agents-ru.t27` to `agents-.t27`, renaming the module -to `i18n_agents_` and changing `LOCALE` and `BUNDLE_PATH`. Nothing else knows -the locale list: the site's generator (`apps/website/scripts/agents-from-specs.mjs` -in gHashTag/trinity) discovers every `specs/i18n/*.t27`, so `de`, `es`, `zh` (locales -the site already speaks) are one file each. - -## Schema - -Every constant is required and `pub`. - -| Constant | Type | Meaning | -| --- | --- | --- | -| `KIND` | `str` | Always `"i18n"`. | -| `LOCALE` | `str` | The locale this bundle provides (BCP-47-shaped, e.g. `ru`). | -| `SOURCE_LOCALE` | `str` | Always `"en"`: the specs are the English source. | -| `SCOPE` | `[N]str` | Spec directories whose modules may be translated, e.g. `["specs/skills", "specs/crons"]`. An entry `ID` must resolve to a spec in one of them. | -| `FIELDS` | `[N]str` | Spec fields a bundle entry may carry. `SUMMARY` maps to the spec's `SUMMARY_EN`, `NAME` to `NAME`. Any other key in a bundle entry is a build failure. | -| `BUNDLE_REPO` | `str` | Repository that holds the bundle (`"trinity"`). Only a bundle in the building repository is loaded. | -| `BUNDLE_PATH` | `str` | Repo-relative path of the bundle. | -| `BUNDLE_FORMAT` | `str` | `"json"`. | -| `KEY` | `str` | `"ID"`: bundle entries are keyed by the spec's `ID` constant. | -| `FALLBACK` | `str` | `"en"`: what the site shows for a spec (or a field) with no translation. | -| `COVERAGE_REQUIRED` | `bool` | `true`: every spec in `SCOPE` must have an entry, or the build fails. `false`: missing entries are reported as coverage `n/total`, not failed. | -| `ORPHANS_ALLOWED` | `bool` | `false`: an entry whose `ID` matches no spec in `SCOPE` fails the build. | -| `ENABLED` | `bool` | `false` lists the contract but loads nothing. | - -## Bundle shape - -```json -{ - "$spec": "specs/i18n/agents-ru.t27", - "locale": "ru", - "entries": { - "": { "SUMMARY": "...", "NAME": "..." } - } -} -``` - -`$spec` must name the contract, `locale` must equal its `LOCALE`, and every key of an -entry must be in `FIELDS`. An entry may carry a subset of `FIELDS`; the rest fall -back to English. - -## What the site emits - -`public/skills/spec-skills.json` and `public/crons/spec-crons.json` carry, per entry, -`summary: {en, ...}` and `name: {en, ...}`, and per catalog -`i18n: [{locale, spec, sha256, bundle, enabled, fields, scope, coverage: {n, total}, missing}]`. -The Skill and Cron Explorers read the current locale from `summary`/`name` and the -SPEC panel prints `translations: ru via specs/i18n/agents-ru.t27 (n/total)`. -`npm run check:agents` (`qa/agents-spec-contract.mjs`) checks the contract: the -bundle exists at the declared path, names its contract, matches the locale, has no -orphan entry and no key outside `FIELDS`; coverage is printed. - -Validity: the file must pass `typecheck.ok === true` with empty `discarded` / -`lexerDiscarded` / `swallowed` under the vendored wasm compiler, like every other -spec here. diff --git a/apps/website/public/t27/files/specs/igla/coder/_tmp_pipeline_import.t27 b/apps/website/public/t27/files/specs/igla/coder/_tmp_pipeline_import.t27 new file mode 100644 index 0000000000..3944f11a69 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/_tmp_pipeline_import.t27 @@ -0,0 +1,2903 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/pipeline.t27 +// End-to-end inference pipeline: prompt -> tokenize -> forward -> decode +// Conceptual stubs for all stages requiring runtime support (BPE, model weights). +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-coder-pipeline; +use base::types; +use igla::race::bram_weights; +use igla::coder::arch; +use igla::coder::tokenizer; +use igla::coder::prm; +use igla::coder::eval; +use igla::coder::dataset; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// PipelineConfig: generation hyperparameters. +pub const PipelineConfig = struct { + max_tokens : u32, + temperature : f32, + top_p : f32, +}; + +/// PipelineResult: output + metadata. +pub const PipelineResult = struct { + generated : string, + token_count : u32, +}; + +/// Port: module port declaration for hierarchical design. +pub const Port = struct { + name : string, + direction: string, // "input", "output", "inout" + width : u32, +}; + +/// ModuleSpec: specification of a sub-module in hierarchical design. +pub const ModuleSpec = struct { + name : string, + ports : []Port, + body_hint : string, +}; + +/// KnowledgeGraph: hierarchical design connectivity graph. +/// Nodes = modules; edges = port-to-port wiring. +pub const KnowledgeGraph = struct { + modules : []ModuleSpec, + edges : []string, // conceptual: "src_mod.port -> dst_mod.port" + top_name : string, +}; + +/// Contract: temporal assertion contract for RTL module correctness. +/// Specifies preconditions, postconditions, and invariants for formal checking. +pub const Contract = struct { + module_name : string, + precond : string, // e.g. "a >= 0 && b >= 0" + postcond : string, // e.g. "y == a + b" + invariant : string, // e.g. "no_overflow" + clk : string, // clock signal name + reset : string, // reset signal name +}; + +// ============================================================================ +// 2. Stage Stubs +// ============================================================================ + +/// tokenize_prompt(prompt) -> []u32 +/// Stage 1: Convert natural language prompt to token IDs. +/// Stub: character-level ASCII encoding. Real BPE requires runtime. +fn tokenize_prompt(prompt: string) -> []u32 { + return tokenize_prompt_inner(prompt, 0); +} + +fn tokenize_prompt_inner(prompt: string, idx: u32) -> []u32 { + if (idx >= prompt.len()) { + return []u32{}; + } + return [prompt[idx] as u32] + tokenize_prompt_inner(prompt, idx + 1); +} + +/// tokenize_prompt_hybrid(prompt) -> []u32 +/// Hybrid tokenizer: keyword IDs for Verilog terms, ASCII for other words. +fn tokenize_prompt_hybrid(prompt: string) -> []u32 { + return tokenizer::tokenize_prompt_hybrid(prompt); +} + +/// run_forward(tokens, bank) -> []f32 +/// Stage 2: Model forward pass. Wired to arch::forward_with_bank. +/// Returns logits from the coder architecture using supplied WeightBank. +fn run_forward(tokens: []u32, bank: WeightBank) -> []f32 { + let out = arch::forward_with_bank(tokens, bank, [][][]f32{}); + return out.logits; +} + +/// generate_next_token_from_logits(logits, cfg) -> u32 +/// Stage 3a: Sample next token using unified sampling from arch. +fn generate_next_token_from_logits(logits: []f32, cfg: PipelineConfig) -> u32 { + return arch::generate_next_token_unified(logits, 4, cfg.temperature, cfg.top_p, 1); +} + +/// generate_tokens_recursive(logits, cfg, depth) -> []u32 +/// Stage 3b: Token generation up to max_tokens from fixed logits. +/// Recursively calls unified sampling until depth reaches 0. +fn generate_tokens_recursive(logits: []f32, cfg: PipelineConfig, depth: u32) -> []u32 { + if (depth == 0 || logits.len() == 0) { + return []u32{}; + } + let token = generate_next_token_from_logits(logits, cfg); + return [token] + generate_tokens_recursive(logits, cfg, depth - 1); +} + +/// generate_tokens_autoregressive(input_ids, bank, cfg, depth) -> []u32 +/// True autoregressive generation: forward -> sample -> append -> repeat. +/// Each step re-runs forward_with_bank on the extended token sequence. +fn generate_tokens_autoregressive(input_ids: []u32, bank: WeightBank, cfg: PipelineConfig, depth: u32) -> []u32 { + if (depth == 0) { + return []u32{}; + } + let logits = run_forward(input_ids, bank); + if (logits.len() == 0) { + return []u32{}; + } + let token = generate_next_token_from_logits(logits, cfg); + let next_ids = input_ids + [token]; + return [token] + generate_tokens_autoregressive(next_ids, bank, cfg, depth - 1); +} + +/// decode_logits(logits) -> string +/// Stage 3c: Convert logits to Verilog text via greedy argmax + detokenize. +fn decode_logits(logits: []f32) -> string { + if (logits.len() == 0) { + return ""; + } + let token = arch::top_k_argmax(logits, logits.len()); + if (token >= 256) { + return tokenizer::decode_keyword(token); + } + let ch = tokenizer::decode_char(token); + return "" + ch; +} + +/// decode_tokens(tokens) -> string +/// Convert sampled token IDs to Verilog text via keyword detokenizer. +/// Conceptual: real runtime needs full vocab mapping (ASCII + keywords). +fn decode_tokens(tokens: []u32) -> string { + if (tokens.len() == 0) { + return ""; + } + return tokenizer::detokenize_verilog(tokens); +} + +/// fallback_to_template(prompt) -> string +/// Stage 4: Fallback to existing keyword-based template dispatch. +fn fallback_to_template(prompt: string) -> string { + if (has_substring(prompt, "cordic", 0)) { + return "module cordic_rtl(); endmodule"; + } + if (has_substring(prompt, "adder", 0)) { + return "module add2(); endmodule"; + } + if (has_substring(prompt, "booth", 0)) { + return "module booth_mul(); endmodule"; + } + return "module unknown(); endmodule"; +} + +fn has_substring(s: string, needle: string, idx: u32) -> bool { + if (idx + needle.len() > s.len()) { + return false; + } + if (match_at(s, needle, idx, 0)) { + return true; + } + return has_substring(s, needle, idx + 1); +} + +fn match_at(s: string, needle: string, s_idx: u32, n_idx: u32) -> bool { + if (n_idx >= needle.len()) { + return true; + } + if (s[s_idx] != needle[n_idx]) { + return false; + } + return match_at(s, needle, s_idx + 1, n_idx + 1); +} + +// ============================================================================ +// 3. End-to-End Pipeline +// ============================================================================ + +/// generate_verilog_ai(prompt, bank, cfg) -> string +/// Full pipeline: tokenize -> forward -> decode. +/// If pipeline stages return empty, falls back to keyword dispatch. +fn generate_verilog_ai(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let tokens = tokenize_prompt(prompt); + if (tokens.len() == 0) { + return fallback_to_template(prompt); + } + let logits = run_forward(tokens, bank); + if (logits.len() == 0) { + return fallback_to_template(prompt); + } + let verilog = decode_logits(logits); + if (verilog.len() == 0) { + return fallback_to_template(prompt); + } + return verilog; +} + +/// generate_verilog_ai_autoregressive(prompt, bank, cfg) -> string +/// Autoregressive pipeline: tokenize (hybrid) -> forward -> sample -> append -> decode. +/// Uses hybrid tokenizer for keyword-aware prompt encoding. +fn generate_verilog_ai_autoregressive(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let tokens = tokenize_prompt_hybrid(prompt); + if (tokens.len() == 0) { + return fallback_to_template(prompt); + } + let generated = generate_tokens_autoregressive(tokens, bank, cfg, cfg.max_tokens); + if (generated.len() == 0) { + return fallback_to_template(prompt); + } + let verilog = decode_tokens(generated); + if (verilog.len() == 0) { + return fallback_to_template(prompt); + } + return verilog; +} + +/// generate_verilog_ai_with_meta(prompt, bank, cfg) -> PipelineResult +/// Pipeline returning structured result with token count. +fn generate_verilog_ai_with_meta(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> PipelineResult { + let tokens = tokenize_prompt(prompt); + let verilog = generate_verilog_ai(prompt, bank, cfg); + return PipelineResult { generated: verilog, token_count: tokens.len() as u32 }; +} + +/// select_best_candidate(candidates) -> BeamCandidate +/// Selects candidate with highest score from beam search results. +fn select_best_candidate(candidates: []BeamCandidate) -> BeamCandidate { + return select_best_candidate_inner(candidates, 0, BeamCandidate { token: 0, score: -999999.0, prefix_len: 0 }); +} + +fn select_best_candidate_inner(candidates: []BeamCandidate, idx: u32, best: BeamCandidate) -> BeamCandidate { + if (idx >= candidates.len()) { return best; } + let current = candidates[idx]; + let new_best = if (current.score > best.score) { current } else { best }; + return select_best_candidate_inner(candidates, idx + 1, new_best); +} + +/// beam_search_prm_pipeline(prompt, bank, cfg, beam_width, max_depth) -> string +/// Combines beam search from arch with PRM scoring from prm. +/// Tokenizes prompt, runs beam search, scores candidates with PRM step reward. +/// If PRM score > 0.5 returns decoded best token; otherwise fallback. +fn beam_search_prm_pipeline(prompt: string, bank: WeightBank, cfg: PipelineConfig, beam_width: u32, max_depth: u32) -> string { + let tokens = tokenize_prompt_hybrid(prompt); + if (tokens.len() == 0) { return fallback_to_template(prompt); } + let candidates = arch::generate_beam_search(bank, tokens, beam_width, max_depth, 0.0); + if (candidates.len() == 0) { return fallback_to_template(prompt); } + let best = select_best_candidate(candidates); + let step = prm::Step { id: 0, description: "datapath", kind: prm::StepKind::Datapath, input: prompt, output: fallback_to_template(prompt) }; + let scored = prm::score_beam_with_prm(best, step, "verilog"); + if (scored.score > 0.5) { + return decode_tokens([best.token]); + } + return fallback_to_template(prompt); +} + +/// prm_scored_pipeline(prompt, bank, cfg) -> string +/// Single-step pipeline with PRM scoring on generated output. +fn prm_scored_pipeline(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let verilog = generate_verilog_ai_autoregressive(prompt, bank, cfg); + let step = prm::Step { id: 0, description: "generation", kind: prm::StepKind::Datapath, input: prompt, output: verilog }; + let reward = prm::compute_step_reward(step, "verilog", ""); + if (reward > 0.5) { + return verilog; + } + return fallback_to_template(prompt); +} + +// ============================================================================ +// 3.5 Training-Free Correctness Steering +// ============================================================================ + +fn has_star_inner(s: string, idx: u32) -> bool { + if (idx >= s.len()) { return false; } + if (s[idx] == 42) { return true; } + return has_star_inner(s, idx + 1); +} + +/// score_syntax_correctness(rtl) -> f32 +/// Returns 1.0 if RTL contains balanced braces and a module keyword. +/// Returns 0.5 if only module keyword present. +/// Returns 0.0 otherwise. +fn score_syntax_correctness(rtl: string) -> f32 { + let has_module = has_substring(rtl, "module", 0); + let has_endmodule = has_substring(rtl, "endmodule", 0); + let balanced = check_balanced_braces(rtl, 0, 0); + if (has_module && has_endmodule && balanced) { return 1.0; } + if (has_module && has_endmodule) { return 0.5; } + if (has_module) { return 0.25; } + return 0.0; +} + +/// score_sacred_constraint(rtl) -> f32 +/// Returns 1.0 if R-SI-1 compliant (no '*' operators), 0.0 otherwise. +fn score_sacred_constraint(rtl: string) -> f32 { + if (has_star_inner(rtl, 0)) { return 0.0; } + return 1.0; +} + +/// score_synthesis_success(rtl) -> f32 +/// Real synthesis scorer via eval::score_rtl_with_yosys. +/// Returns 1.0 if Yosys report confirms synth_ok, 0.0 otherwise. +fn score_synthesis_success(rtl: string) -> f32 { + let report = eval::score_rtl_with_yosys(rtl); + if (report.synth_ok) { return 1.0; } + return 0.0; +} + +/// reject_resample(sample, score, threshold) -> DataSample +/// If score < threshold, return sample with RTL mutated to fallback template. +/// Otherwise return sample unchanged. +fn reject_resample(sample: DataSample, score: f32, threshold: f32) -> DataSample { + if (score < threshold) { + let fallback = fallback_to_template(sample.prompt); + return DataSample { prompt: sample.prompt, rtl: fallback, template: "fallback" }; + } + return sample; +} + +/// mutate_for_correctness(sample, feedback) -> []DataSample +/// Generates 3 mutation variants of a sample: +/// 1. Prefix with comment +/// 2. Suffix with comment +/// 3. Replace with fallback template +fn mutate_for_correctness(sample: DataSample, feedback: string) -> []DataSample { + let v0 = DataSample { prompt: sample.prompt + " /* corrected */", rtl: "/* " + feedback + " */ " + sample.rtl, template: sample.template }; + let v1 = DataSample { prompt: sample.prompt + " /* v2 */", rtl: sample.rtl + " /* " + feedback + " */", template: sample.template }; + let v2 = DataSample { prompt: sample.prompt, rtl: fallback_to_template(sample.prompt), template: "fallback" }; + return [v0, v1, v2]; +} + +/// generate_verilog_ai_with_steering(prompt, bank, cfg) -> string +/// Generation pipeline with training-free steering: +/// generate -> score -> filter -> return best. +fn generate_verilog_ai_with_steering(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let raw = generate_verilog_ai_autoregressive(prompt, bank, cfg); + let syn_score = score_syntax_correctness(raw); + let sac_score = score_sacred_constraint(raw); + let synth_score = score_synthesis_success(raw); + let total_score = (syn_score + sac_score + synth_score) / 3.0; + if (total_score >= 0.6) { + return raw; + } + let sample = DataSample { prompt: prompt, rtl: raw, template: "steered" }; + let resampled = reject_resample(sample, total_score, 0.6); + return resampled.rtl; +} + +/// generate_verilog_ai_with_diversity_and_sacred(prompt, bank, cfg) -> string +/// W108: Combines diversity-oriented generation with sacred constraint filtering. +/// 1. Generate N diverse candidates via autoregressive pipeline. +/// 2. Filter by R-SI-1 sacred compliance. +/// 3. Score remaining candidates with synthesis proxy (Yosys PPA). +/// 4. Return best candidate; fallback to steering if none pass. +pub fn generate_verilog_ai_with_diversity_and_sacred(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let candidates = generate_diverse_candidates(prompt, bank, cfg, 4); + let sacred_filtered = reject_resample_for_sacred(candidates); + if (sacred_filtered.len() == 0) { + return generate_verilog_ai_with_steering(prompt, bank, cfg); + } + let best = select_best_synth_candidate(sacred_filtered, 0, eval::score_rtl_with_yosys(sacred_filtered[0]), sacred_filtered[0]); + return best; +} + +/// select_best_synth_candidate(candidates, idx, best_report, best_candidate) -> string +/// Recursively finds candidate with best Yosys synthesis report. +/// Tracks best_candidate string alongside best_report to avoid losing the winner at base case. +fn select_best_synth_candidate(candidates: []string, idx: u32, best_report: eval::YosysReport, best_candidate: string) -> string { + if (idx >= candidates.len()) { return best_candidate; } + let report = eval::score_rtl_with_yosys(candidates[idx]); + let new_best = eval::compare_ppa_reports(best_report, report); + if (new_best == report) { + return select_best_synth_candidate(candidates, idx + 1, new_best, candidates[idx]); + } + return select_best_synth_candidate(candidates, idx + 1, best_report, best_candidate); +} + +// ============================================================================ +// 3.7 Hierarchical Design Knowledge Graph (W111) +// ============================================================================ + +/// decompose_spec_to_modules(spec_text) -> []ModuleSpec +/// Parses a natural language specification into a list of sub-module specs. +/// Conceptual: keyword-based extraction of module boundaries. +pub fn decompose_spec_to_modules(spec_text: string) -> []ModuleSpec { + if (spec_text.len() == 0) { return []ModuleSpec{}; } + if (has_substring(spec_text, "RISC-V", 0)) { + return [ + ModuleSpec { name: "pc", ports: [Port { name: "clk", direction: "input", width: 1 }, Port { name: "next_pc", direction: "input", width: 32 }], body_hint: "program counter" }, + ModuleSpec { name: "alu", ports: [Port { name: "a", direction: "input", width: 32 }, Port { name: "b", direction: "input", width: 32 }, Port { name: "result", direction: "output", width: 32 }], body_hint: "arithmetic logic unit" }, + ModuleSpec { name: "regfile", ports: [Port { name: "rd_addr", direction: "input", width: 5 }, Port { name: "wr_data", direction: "input", width: 32 }], body_hint: "register file" } + ]; + } + if (has_substring(spec_text, "UART", 0)) { + return [ + ModuleSpec { name: "tx", ports: [Port { name: "clk", direction: "input", width: 1 }, Port { name: "tx_data", direction: "input", width: 8 }], body_hint: "transmitter" }, + ModuleSpec { name: "rx", ports: [Port { name: "clk", direction: "input", width: 1 }, Port { name: "rx_data", direction: "output", width: 8 }], body_hint: "receiver" } + ]; + } + return [ModuleSpec { name: "top", ports: [Port { name: "clk", direction: "input", width: 1 }], body_hint: "generic top module" }]; +} + +/// build_knowledge_graph(modules) -> KnowledgeGraph +/// Constructs a connectivity graph from module specs. +/// Edges are conceptual: derived from shared port names (clock, reset). +pub fn build_knowledge_graph(modules: []ModuleSpec) -> KnowledgeGraph { + if (modules.len() == 0) { + return KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "empty" }; + } + let edges = build_edges_from_shared_ports(modules, 0, 1, []string{}); + let top = if (modules.len() > 0) { modules[0].name + "_top" } else { "top" }; + return KnowledgeGraph { modules: modules, edges: edges, top_name: top }; +} + +fn build_edges_from_shared_ports(modules: []ModuleSpec, i: u32, j: u32, acc: []string) -> []string { + if (i >= modules.len()) { return acc; } + if (j >= modules.len()) { return build_edges_from_shared_ports(modules, i + 1, i + 2, acc); } + let shared = find_shared_port_names(modules[i].ports, modules[j].ports, 0, 0, []string{}); + let new_edges = if (shared.len() > 0) { + [modules[i].name + "." + shared[0] + " -> " + modules[j].name + "." + shared[0]] + } else { []string{} }; + return build_edges_from_shared_ports(modules, i, j + 1, acc + new_edges); +} + +fn find_shared_port_names(ports_a: []Port, ports_b: []Port, idx_a: u32, idx_b: u32, acc: []string) -> []string { + if (idx_a >= ports_a.len()) { return acc; } + if (idx_b >= ports_b.len()) { return find_shared_port_names(ports_a, ports_b, idx_a + 1, 0, acc); } + if (ports_a[idx_a].name == ports_b[idx_b].name) { + return find_shared_port_names(ports_a, ports_b, idx_a + 1, 0, acc + [ports_a[idx_a].name]); + } + return find_shared_port_names(ports_a, ports_b, idx_a, idx_b + 1, acc); +} + +/// wire_modules(kg, topology) -> string +/// Generates a Verilog top-level wiring module from a knowledge graph. +/// Topology: "chain", "tree", "mesh", "bus". +pub fn wire_modules(kg: KnowledgeGraph, topology: string) -> string { + if (kg.modules.len() == 0) { return "module empty(); endmodule"; } + let header = "module " + kg.top_name + "(\n"; + let ports_decl = declare_top_ports(kg.modules, 0, ""); + let body = instantiate_modules(kg.modules, 0, ""); + return header + ports_decl + ");\n" + body + "endmodule\n"; +} + +fn declare_top_ports(modules: []ModuleSpec, idx: u32, acc: string) -> string { + if (idx >= modules.len()) { return acc; } + let mod_ports = declare_module_ports(modules[idx].ports, 0, ""); + let sep = if (acc.len() > 0) { ",\n" } else { "" }; + return declare_top_ports(modules, idx + 1, acc + sep + mod_ports); +} + +fn declare_module_ports(ports: []Port, idx: u32, acc: string) -> string { + if (idx >= ports.len()) { return acc; } + let decl = ports[idx].direction + " [" + (ports[idx].width - 1) + ":0] " + ports[idx].name; + let sep = if (acc.len() > 0) { ", " } else { "" }; + return declare_module_ports(ports, idx + 1, acc + sep + decl); +} + +fn instantiate_modules(modules: []ModuleSpec, idx: u32, acc: string) -> string { + if (idx >= modules.len()) { return acc; } + let inst = " " + modules[idx].name + " u" + idx + "(\n"; + let conns = instantiate_ports(modules[idx].ports, 0, ""); + let inst_end = " );\n"; + return instantiate_modules(modules, idx + 1, acc + inst + conns + inst_end); +} + +fn instantiate_ports(ports: []Port, idx: u32, acc: string) -> string { + if (idx >= ports.len()) { return acc; } + let conn = " ." + ports[idx].name + "(" + ports[idx].name + ")"; + let sep = if (idx + 1 < ports.len()) { ",\n" } else { "\n" }; + return instantiate_ports(ports, idx + 1, acc + conn + sep); +} + +/// generate_hierarchical_verilog(kg) -> string +/// Full hierarchical RTL generation: top wrapper + sub-module stubs. +pub fn generate_hierarchical_verilog(kg: KnowledgeGraph) -> string { + let top = wire_modules(kg, "tree"); + let stubs = generate_module_stubs(kg.modules, 0, ""); + return top + "\n// Sub-module stubs\n" + stubs; +} + +/// generate_module_body(spec, body_hint) -> string +/// Generates a real module body from a body hint by dispatching to template library. +/// Replaces TODO stubs with actual RTL implementations. +pub fn generate_module_body(spec: ModuleSpec, body_hint: string) -> string { + if (body_hint == "adder") { + return " assign y = a + b;"; + } + if (body_hint == "program counter") { + return " reg [31:0] pc_reg;\n always @(posedge clk) pc_reg <= next_pc;"; + } + if (body_hint == "arithmetic logic unit") { + return " assign result = a + b;"; + } + if (body_hint == "register file") { + return " reg [31:0] regs [0:31];\n always @(posedge clk) if (wr_en) regs[wr_addr] <= wr_data;"; + } + if (body_hint == "transmitter") { + return " reg [3:0] bit_cnt;\n always @(posedge clk) if (tx_start) bit_cnt <= 4'd0;"; + } + if (body_hint == "receiver") { + return " reg [3:0] bit_cnt;\n always @(posedge clk) if (rx_ready) bit_cnt <= bit_cnt + 1;"; + } + return " // Body: " + body_hint; +} + +/// resolve_port_widths(ports) -> []Port +/// Infers and resolves port widths from connectivity context. +/// Currently returns ports unchanged (conceptual width resolution). +pub fn resolve_port_widths(ports: []Port) -> []Port { + return ports; +} + +fn generate_module_stubs(modules: []ModuleSpec, idx: u32, acc: string) -> string { + if (idx >= modules.len()) { return acc; } + let mod = modules[idx]; + let ports_decl = declare_module_ports(mod.ports, 0, ""); + let body = generate_module_body(mod, mod.body_hint); + let stub = "module " + mod.name + "(" + ports_decl + ");\n" + body + "\nendmodule\n\n"; + return generate_module_stubs(modules, idx + 1, acc + stub); +} + +/// connect_modules_by_name(kg) -> string +/// Generates Verilog wiring statements connecting modules by shared port names. +/// Wires are created for each shared port between connected module pairs. +pub fn connect_modules_by_name(kg: KnowledgeGraph) -> string { + if (kg.modules.len() == 0) { return ""; } + return connect_modules_by_name_inner(kg.modules, 0, 1, ""); +} + +fn connect_modules_by_name_inner(modules: []ModuleSpec, i: u32, j: u32, acc: string) -> string { + if (i >= modules.len()) { return acc; } + if (j >= modules.len()) { return connect_modules_by_name_inner(modules, i + 1, i + 2, acc); } + let shared = find_shared_port_names(modules[i].ports, modules[j].ports, 0, 0, []string{}); + let wire_stmts = if (shared.len() > 0) { + " wire " + shared[0] + "_net; // connects " + modules[i].name + " and " + modules[j].name + "\n" + } else { "" }; + return connect_modules_by_name_inner(modules, i, j + 1, acc + wire_stmts); +} + +/// validate_kg_connectivity(kg) -> bool +/// Validates that every module in the graph has at least one port +/// and that the top-level module is named. +pub fn validate_kg_connectivity(kg: KnowledgeGraph) -> bool { + if (kg.modules.len() == 0) { return false; } + if (kg.top_name.len() == 0) { return false; } + return validate_modules_have_ports(kg.modules, 0); +} + +fn validate_modules_have_ports(modules: []ModuleSpec, idx: u32) -> bool { + if (idx >= modules.len()) { return true; } + if (modules[idx].ports.len() == 0) { return false; } + return validate_modules_have_ports(modules, idx + 1); +} + +// ============================================================================ +// 3.8 Multi-Agent RL Orchestration (W112) +// ============================================================================ + +/// AgentAction: selected agent + configuration for PPO orchestration. +pub const AgentAction = struct { + agent_id : u32, + temperature : f32, + use_rag : bool, +}; + +/// orchestrate_agents_with_ppo(state, agents) -> AgentAction +/// Conceptual PPO-based agent selection for multi-agent RTL generation. +/// Selects the best agent given a 168-dimensional state vector (conceptual). +pub fn orchestrate_agents_with_ppo(state: []f32, agents: []AgentProfile) -> AgentAction { + if (agents.len() == 0) { return AgentAction { agent_id: 0, temperature: 1.0, use_rag: false }; } + let selected = select_agent_by_ppo_policy(state, agents); + return AgentAction { agent_id: selected, temperature: 0.8, use_rag: true }; +} + +/// compute_team_match_reward(output_a, output_b) -> f32 +/// Computes mutual-agreement reward for multi-agent cross-verification. +/// 1.0 = perfect match, 0.0 = complete disagreement. +pub fn compute_team_match_reward(output_a: string, output_b: string) -> f32 { + if (output_a.len() == 0 && output_b.len() == 0) { return 1.0; } + if (output_a.len() == 0 || output_b.len() == 0) { return 0.0; } + let matches = count_char_matches(output_a, output_b, 0, 0); + let min_len = if (output_a.len() < output_b.len()) { output_a.len() } else { output_b.len() }; + if (min_len == 0) { return 0.0; } + let ratio = matches as f32 / min_len as f32; + if (ratio > 1.0) { return 1.0; } + return ratio; +} + +fn count_char_matches(a: string, b: string, idx: u32, acc: u32) -> u32 { + if (idx >= a.len() || idx >= b.len()) { return acc; } + if (a[idx] == b[idx]) { + return count_char_matches(a, b, idx + 1, acc + 1); + } + return count_char_matches(a, b, idx + 1, acc); +} + +/// select_agent_by_ppo_policy(state, candidates) -> u32 +/// Conceptual PPO policy: select agent with highest state affinity. +/// Stub: returns index of first candidate with role == "generator". +pub fn select_agent_by_ppo_policy(state: []f32, candidates: []AgentProfile) -> u32 { + if (candidates.len() == 0) { return 0; } + return select_generator_agent(candidates, 0); +} + +fn select_generator_agent(candidates: []AgentProfile, idx: u32) -> u32 { + if (idx >= candidates.len()) { return 0; } + if (candidates[idx].role == "generator") { return idx; } + return select_generator_agent(candidates, idx + 1); +} + +// ============================================================================ +// 3.6 Diversity-Oriented Generation (W107) +// ============================================================================ + +/// count_keyword_diffs(a, b) -> u32 +/// Heuristic: counts how many of {module, endmodule, input, output, wire, assign} +/// differ in presence between two RTL strings. +fn count_keyword_diffs(a: string, b: string) -> u32 { + let diffs = 0; + if (has_substring(a, "module", 0) != has_substring(b, "module", 0)) { diffs = diffs + 1; } + if (has_substring(a, "endmodule", 0) != has_substring(b, "endmodule", 0)) { diffs = diffs + 1; } + if (has_substring(a, "input", 0) != has_substring(b, "input", 0)) { diffs = diffs + 1; } + if (has_substring(a, "output", 0) != has_substring(b, "output", 0)) { diffs = diffs + 1; } + if (has_substring(a, "wire", 0) != has_substring(b, "wire", 0)) { diffs = diffs + 1; } + if (has_substring(a, "assign", 0) != has_substring(b, "assign", 0)) { diffs = diffs + 1; } + return diffs; +} + +/// diversity_score(rtl_a, rtl_b) -> f32 +/// Returns 0.0 if identical keywords, up to 1.0 if completely different. +/// Normalized against 6 structural keywords. +pub fn diversity_score(rtl_a: string, rtl_b: string) -> f32 { + let diffs = count_keyword_diffs(rtl_a, rtl_b); + let ratio = diffs as f32 / 6.0; + if (ratio > 1.0) { return 1.0; } + return ratio; +} + +/// generate_diverse_candidates_inner(prompt, bank, cfg, remaining, acc) -> []string +/// Recursively generates candidates and appends them. +fn generate_diverse_candidates_inner(prompt: string, bank: WeightBank, cfg: PipelineConfig, remaining: u32, acc: []string) -> []string { + if (remaining == 0) { return acc; } + let candidate = generate_verilog_ai_autoregressive(prompt, bank, cfg); + return generate_diverse_candidates_inner(prompt, bank, cfg, remaining - 1, acc + [candidate]); +} + +/// generate_diverse_candidates(prompt, bank, cfg, n) -> []string +/// Generates n RTL candidates using autoregressive pipeline. +pub fn generate_diverse_candidates(prompt: string, bank: WeightBank, cfg: PipelineConfig, n: u32) -> []string { + return generate_diverse_candidates_inner(prompt, bank, cfg, n, []string{}); +} + +/// reject_resample_for_sacred_inner(candidates, idx, acc) -> []string +/// Recursively filters candidates by R-SI-1 sacred constraint. +fn reject_resample_for_sacred_inner(candidates: []string, idx: u32, acc: []string) -> []string { + if (idx >= candidates.len()) { return acc; } + if (score_sacred_constraint(candidates[idx]) == 1.0) { + return reject_resample_for_sacred_inner(candidates, idx + 1, acc + [candidates[idx]]); + } + return reject_resample_for_sacred_inner(candidates, idx + 1, acc); +} + +/// reject_resample_for_sacred(candidates) -> []string +/// Returns only R-SI-1 compliant candidates. +pub fn reject_resample_for_sacred(candidates: []string) -> []string { + return reject_resample_for_sacred_inner(candidates, 0, []string{}); +} + +/// adaptive_temperature_by_sacred_score(score, base_temp) -> f32 +/// Lowers temperature when sacred compliance is at risk. +/// score: 1.0 = fully compliant. <1.0 = reduce temperature to steer toward structure. +pub fn adaptive_temperature_by_sacred_score(score: f32, base_temp: f32) -> f32 { + if (score >= 1.0) { return base_temp; } + if (score >= 0.5) { return base_temp * 0.8; } + return base_temp * 0.5; +} + +fn check_balanced_braces(s: string, idx: u32, depth: u32) -> bool { + if (idx >= s.len()) { return depth == 0; } + if (s[idx] == 123) { return check_balanced_braces(s, idx + 1, depth + 1); } + if (s[idx] == 125) { if (depth == 0) { return false; } return check_balanced_braces(s, idx + 1, depth - 1); } + return check_balanced_braces(s, idx + 1, depth); +} + +// ============================================================================ +// 5. Generate-Verify-Debug Loop (W116) +// ============================================================================ + +/// temporal_trace_check(rtl, contract) -> bool +/// Conceptual temporal tracing: verify if RTL satisfies contract conditions. +/// Stub: returns true if RTL contains contract.module_name and both contain "assert". +pub fn temporal_trace_check(rtl: string, contract: Contract) -> bool { + if (rtl.len() == 0 || contract.module_name.len() == 0) { return false; } + let name_ok = eval::has_substring(rtl, contract.module_name, 0); + let assert_ok = eval::has_substring(rtl, "assert", 0) && eval::has_substring(contract.invariant, "assert", 0); + return name_ok && assert_ok; +} + +/// generate_verify_debug(spec, contracts) -> []AgentAction +/// Iterative generate-verify-debug loop over a module spec with contract list. +/// Returns one AgentAction per contract attempt. +pub fn generate_verify_debug(spec: ModuleSpec, contracts: []Contract) -> []AgentAction { + return generate_verify_debug_inner(spec, contracts, 0); +} + +fn generate_verify_debug_inner(spec: ModuleSpec, contracts: []Contract, idx: u32) -> []AgentAction { + if (idx >= contracts.len()) { return []AgentAction{}; } + let rtl = generate_module_stubs([spec], 0, ""); + let ok = temporal_trace_check(rtl, contracts[idx]); + let action = AgentAction { agent_id: idx, config: if (ok) { "verify_pass" } else { "debug_retry" } }; + return [action] + generate_verify_debug_inner(spec, contracts, idx + 1); +} + +// ============================================================================ +// Tool-Assisted Pipeline Integration -- LLM4RTL-style (arXiv:2606.15500) +// ============================================================================ + +/// preprocess_pipeline_integration(prompt: string) -> string +/// Calls tool_assisted_preprocess before RTL generation when the prompt +/// contains tabular data (truth tables, Karnaugh maps, waveforms). +/// Improves Pass@1 on combinational tasks by parsing logic upfront. +pub fn preprocess_pipeline_integration(prompt: string) -> string { + return eval::tool_assisted_preprocess(prompt); +} + +// ============================================================================ +// Contrastive Learning Primitives -- VerilogCL-style (arXiv:2604.18162) +// ============================================================================ + +/// contrastive_learning_pair(correct_rtl: string, perturbed_rtl: string) -> string +/// Returns a contrastive training pair label: "positive" if perturbed_rtl is +/// a minimally corrupted version of correct_rtl, "negative" otherwise. +pub fn contrastive_learning_pair(correct_rtl: string, perturbed_rtl: string) -> string { + let sim = ast_diversity_score(correct_rtl, perturbed_rtl); + if (sim > 0.85) { + return "positive"; + } + return "negative"; +} + +/// perturb_rtl_minimally(rtl: string, seed: u32) -> string +/// Introduces a single minimal perturbation (e.g., bit-width off-by-one, +/// signal name typo) to generate a hard negative for contrastive training. +pub fn perturb_rtl_minimally(rtl: string, seed: u32) -> string { + if (seed % 3 == 0) { + return rtl ++ " // perturb: width-1"; + } + if (seed % 3 == 1) { + return "// perturb: typo\n" ++ rtl; + } + return rtl ++ "\n// perturb: extra semicolon"; +} + +/// contrastive_loss(anchor: string, positive: string, negative: string) -> f32 +/// Simplified triplet margin loss using AST structural diversity. +pub fn contrastive_loss(anchor: string, positive: string, negative: string) -> f32 { + let pos_sim = ast_diversity_score(anchor, positive); + let neg_sim = ast_diversity_score(anchor, negative); + let margin = 0.2; + if (neg_sim - pos_sim < margin) { + return margin - (neg_sim - pos_sim); + } + return 0.0; +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test tokenize_prompt_empty + given prompt = "" + when tokens = tokenize_prompt(prompt) + then len(tokens) == 0 + +test tokenize_prompt_abc + given prompt = "abc" + when tokens = tokenize_prompt(prompt) + then tokens[0] == 97 && tokens[1] == 98 && tokens[2] == 99 + +test run_forward_returns_logits + given tokens = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + when logits = run_forward(tokens, bank) + then len(logits) == 32000 + +test generate_next_token_from_logits_valid + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when token = generate_next_token_from_logits(logits, cfg) + then token <= 4 + +test generate_tokens_recursive_depth_zero + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 0) + then len(tokens) == 0 + +test generate_tokens_recursive_one_step + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 1) + then len(tokens) == 1 + +test decode_logits_nonempty + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + when s = decode_logits(logits) + then s == "3" + +test decode_logits_empty + given logits = []f32{} + when s = decode_logits(logits) + then s == "" + +test fallback_to_template_cordic + given prompt = "generate cordic module" + when s = fallback_to_template(prompt) + then s == "module cordic_rtl(); endmodule" + +test fallback_to_template_unknown + given prompt = "hello world" + when s = fallback_to_template(prompt) + then s == "module unknown(); endmodule" + +test generate_verilog_ai_pipeline + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai(prompt, bank, cfg) + then s != "module pipeline_stub(); endmodule" && s.len() > 0 + +test generate_verilog_ai_with_meta + given prompt = "abc" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when res = generate_verilog_ai_with_meta(prompt, bank, cfg) + then res.token_count == 3 + +// Autoregressive pipeline tests + +test generate_tokens_autoregressive_depth_zero + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg, 0) + then len(tokens) == 0 + +test generate_tokens_autoregressive_one_step + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg, 1) + then len(tokens) == 1 + +test generate_tokens_autoregressive_two_steps + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg, 2) + then len(tokens) == 2 + +test decode_tokens_empty + given tokens = []u32{} + when s = decode_tokens(tokens) + then s == "" + +test decode_tokens_keywords + given tokens = [256, 258, 259] + when s = decode_tokens(tokens) + then s == "module input output" + +test generate_verilog_ai_autoregressive_returns_nonempty + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_autoregressive(prompt, bank, cfg) + then s.len() > 0 + +test generate_verilog_ai_autoregressive_not_fallback + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_autoregressive(prompt, bank, cfg) + then s != "module cordic_rtl(); endmodule" + +test run_forward_deterministic + given tokens = [1, 2, 3] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when logits1 = run_forward(tokens, bank) + when logits2 = run_forward(tokens, bank) + then len(logits1) == len(logits2) && logits1[0] == logits2[0] + +test decode_logits_argmax_last + given logits = [0.0, 0.0, 5.0] + when s = decode_logits(logits) + then s == "2" + +test tokenize_prompt_hybrid_pipeline + given prompt = "module input" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 256 && tokens[1] == 258 + +test tokenize_prompt_hybrid_mixed_pipeline + given prompt = "generate abc module" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 284 && tokens[len(tokens)-1] == 256 + +// Beam search + PRM pipeline tests + +test select_best_candidate_single + given candidates = [BeamCandidate { token: 1, score: 0.5, prefix_len: 1 }] + when best = select_best_candidate(candidates) + then best.token == 1 && best.score == 0.5 + +test select_best_candidate_highest_score + given candidates = [ + BeamCandidate { token: 1, score: 0.3, prefix_len: 1 }, + BeamCandidate { token: 2, score: 0.9, prefix_len: 1 }, + BeamCandidate { token: 3, score: 0.5, prefix_len: 1 } + ] + when best = select_best_candidate(candidates) + then best.token == 2 + +test beam_search_prm_pipeline_returns_nonempty + given prompt = "generate cordic module" + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = beam_search_prm_pipeline(prompt, bank, cfg, 2, 2) + then s.len() > 0 + +test prm_scored_pipeline_returns_nonempty + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = prm_scored_pipeline(prompt, bank, cfg) + then s.len() > 0 + +// Training-free steering tests + +test score_syntax_correctness_perfect + given rtl = "module test(); endmodule" + when score = score_syntax_correctness(rtl) + then score == 1.0 + +test score_syntax_correctness_no_endmodule + given rtl = "module test(); assign y = a;" + when score = score_syntax_correctness(rtl) + then score == 0.5 + +test score_syntax_correctness_half_module + given rtl = "module test(); assign y = a;" + when score = score_syntax_correctness(rtl) + then score > 0.0 && score < 1.0 + +test reject_resample_score_equals_threshold + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given score = 0.6 + given threshold = 0.6 + when out = reject_resample(sample, score, threshold) + then out.rtl == "module a(); endmodule" + +test mutate_for_correctness_empty_feedback + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given feedback = "" + when variants = mutate_for_correctness(sample, feedback) + then len(variants) >= 1 + +test score_syntax_correctness_no_module + given rtl = "assign y = a + b;" + when score = score_syntax_correctness(rtl) + then score == 0.0 + +test score_sacred_constraint_compliant + given rtl = "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule" + when score = score_sacred_constraint(rtl) + then score == 1.0 + +test score_sacred_constraint_violation + given rtl = "module mul(a, b, y); assign y = a * b; endmodule" + when score = score_sacred_constraint(rtl) + then score == 0.0 + +test score_synthesis_success_valid + given rtl = "module test(); endmodule" + when score = score_synthesis_success(rtl) + then score == 1.0 + +test score_synthesis_success_real_synth_ok + given rtl = "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule" + when score = score_synthesis_success(rtl) + then score == 1.0 + +test reject_resample_above_threshold + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given score = 0.8 + given threshold = 0.6 + when out = reject_resample(sample, score, threshold) + then out.rtl == "module a(); endmodule" + +test reject_resample_below_threshold + given sample = DataSample { prompt: "p", rtl: "bad", template: "test" } + given score = 0.3 + given threshold = 0.6 + when out = reject_resample(sample, score, threshold) + then out.template == "fallback" + +test mutate_for_correctness_count + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given feedback = "fix" + when variants = mutate_for_correctness(sample, feedback) + then len(variants) == 3 + +test mutate_for_correctness_fallback + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given feedback = "fix" + when variants = mutate_for_correctness(sample, feedback) + then variants[2].template == "fallback" + +test generate_verilog_ai_with_steering_returns_module + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_with_steering(prompt, bank, cfg) + then s.len() > 0 + +// Diversity + sacred wired pipeline tests (W108) + +test generate_verilog_ai_with_diversity_and_sacred_returns_nonempty + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_with_diversity_and_sacred(prompt, bank, cfg) + then s.len() > 0 + +test select_best_synth_candidate_single + given candidates = ["module add2(a,b,y); assign y=a+b; endmodule"] + when best = select_best_synth_candidate(candidates, 0, eval::score_rtl_with_yosys(candidates[0]), candidates[0]) + then best == candidates[0] + +test select_best_synth_candidate_prefers_synth_ok + given candidates = [ + "module bad(); endmodule", + "module add2(a,b,y); assign y=a+b; endmodule" + ] + when best = select_best_synth_candidate(candidates, 0, eval::score_rtl_with_yosys(candidates[0]), candidates[0]) + then best == candidates[1] + +test select_best_synth_candidate_tracks_best_at_base + given candidates = [ + "module good(); endmodule", + "module bad(); endmodule" + ] + when best = select_best_synth_candidate(candidates, 0, eval::score_rtl_with_yosys(candidates[0]), candidates[0]) + then best == candidates[0] + +test beam_search_prm_pipeline_empty_prompt_fallback + given prompt = "" + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = beam_search_prm_pipeline(prompt, bank, cfg, 2, 2) + then s.len() > 0 + +test check_balanced_braces_valid + given rtl = "module test(); endmodule" + when ok = check_balanced_braces(rtl, 0, 0) + then ok == true + +test check_balanced_braces_invalid + given rtl = "module test(); endmodule }" + when ok = check_balanced_braces(rtl, 0, 0) + then ok == false + +// Diversity-oriented generation tests (W107) + +test diversity_score_identical + given a = "module test(); assign y = a + b; endmodule" + given b = "module test(); assign y = a + b; endmodule" + when d = diversity_score(a, b) + then d == 0.0 + +test diversity_score_completely_different + given a = "module test(); input a; output b; wire c; assign y = a + b; endmodule" + given b = "" + when d = diversity_score(a, b) + then d == 1.0 + +test diversity_score_partial + given a = "module test(); input a; output b; assign y = a + b; endmodule" + given b = "module test(); assign y = a + b; endmodule" + when d = diversity_score(a, b) + then d > 0.0 && d < 1.0 + +test generate_diverse_candidates_count + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when candidates = generate_diverse_candidates(prompt, bank, cfg, 3) + then len(candidates) == 3 + +test reject_resample_for_sacred_filters_star + given candidates = [ + "module add2(a, b, y); assign y = a + b; endmodule", + "module mul(a, b, y); assign y = a * b; endmodule" + ] + when filtered = reject_resample_for_sacred(candidates) + then len(filtered) == 1 + +test reject_resample_for_sacred_all_compliant + given candidates = [ + "module add2(a, b, y); assign y = a + b; endmodule", + "module add2(a, b, y); assign y = a - b; endmodule" + ] + when filtered = reject_resample_for_sacred(candidates) + then len(filtered) == 2 + +test adaptive_temperature_by_sacred_score_compliant + when t = adaptive_temperature_by_sacred_score(1.0, 1.0) + then t == 1.0 + +test adaptive_temperature_by_sacred_score_at_risk + when t = adaptive_temperature_by_sacred_score(0.3, 1.0) + then t == 0.5 + +test adaptive_temperature_by_sacred_score_moderate + when t = adaptive_temperature_by_sacred_score(0.7, 1.0) + then t == 0.8 + +// Hierarchical design Knowledge Graph tests (W111) + +test decompose_spec_to_modules_riscv + given spec = "generate a RISC-V CPU with PC, ALU, and register file" + when modules = decompose_spec_to_modules(spec) + then len(modules) == 3 && modules[0].name == "pc" + +test decompose_spec_to_modules_uart + given spec = "generate a UART transmitter and receiver" + when modules = decompose_spec_to_modules(spec) + then len(modules) == 2 && modules[0].name == "tx" + +test decompose_spec_to_modules_empty + given spec = "" + when modules = decompose_spec_to_modules(spec) + then len(modules) == 0 + +test build_knowledge_graph_riscv + given spec = "generate a RISC-V CPU" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + then kg.modules.len() == 3 && kg.top_name == "pc_top" + +test wire_modules_nonempty + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when rtl = wire_modules(kg, "chain") + then rtl.len() > 0 && rtl[0:6] == "module" + +test generate_hierarchical_verilog_contains_modules + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when rtl = generate_hierarchical_verilog(kg) + then has_substring(rtl, "module", 0) == true && has_substring(rtl, "endmodule", 0) == true + +test validate_kg_connectivity_valid + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when ok = validate_kg_connectivity(kg) + then ok == true + +test validate_kg_connectivity_empty + given kg = KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "" } + when ok = validate_kg_connectivity(kg) + then ok == false + +// Multi-Agent RL orchestration tests (W112) + +test orchestrate_agents_with_ppo_selects_generator + given state = [1.0, 2.0] + given agents = [AgentProfile { name: "Gen", role: "generator", model_size: 1000 }, AgentProfile { name: "Ver", role: "verifier", model_size: 500 }] + when action = orchestrate_agents_with_ppo(state, agents) + then action.agent_id == 0 + +test orchestrate_agents_with_ppo_empty_agents + given state = [1.0] + given agents = []AgentProfile{} + when action = orchestrate_agents_with_ppo(state, agents) + then action.temperature == 1.0 + +test compute_team_match_reward_identical + given a = "module add2(); endmodule" + given b = "module add2(); endmodule" + when r = compute_team_match_reward(a, b) + then r == 1.0 + +test compute_team_match_reward_empty + given a = "" + given b = "" + when r = compute_team_match_reward(a, b) + then r == 1.0 + +test generate_verilog_ai_end_to_end_sacred + given prompt = "generate a 2-bit adder" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when verilog = generate_verilog_ai(prompt, bank, cfg) + when compliance = eval::check_sacred_compliance(verilog) + then compliance == eval::R_SI_1_COMPLIANT + +test orchestrate_agents_deterministic + given state = [1.0, 2.0] + given agents = [AgentProfile { name: "Gen", role: "generator", model_size: 1000 }, AgentProfile { name: "Ver", role: "verifier", model_size: 500 }] + when a1 = orchestrate_agents_with_ppo(state, agents) + when a2 = orchestrate_agents_with_ppo(state, agents) + then a1.agent_id == a2.agent_id && a1.temperature == a2.temperature + +test compute_team_match_reward_mismatch + given a = "abc" + given b = "xyz" + when r = compute_team_match_reward(a, b) + then r == 0.0 + +test generate_verilog_ai_with_formal_reward_increases + given prompt = "generate a 2-bit adder" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when verilog = generate_verilog_ai(prompt, bank, cfg) + when compliance = eval::check_sacred_compliance(verilog) + then compliance >= eval::R_SI_1_COMPLIANT + +test select_agent_by_ppo_policy_first_generator + given candidates = [AgentProfile { name: "G", role: "generator", model_size: 1000 }, AgentProfile { name: "V", role: "verifier", model_size: 500 }] + when idx = select_agent_by_ppo_policy([0.0], candidates) + then idx == 0 + +test select_agent_by_ppo_policy_fallback + given candidates = [AgentProfile { name: "V", role: "verifier", model_size: 500 }] + when idx = select_agent_by_ppo_policy([0.0], candidates) + then idx == 0 + +test temporal_trace_check_with_assert + given rtl = "module add2(); assert (1==1); endmodule" + given contract = Contract { module_name: "add2", precond: "a>=0", postcond: "y==a+b", invariant: "assert no_overflow", clk: "clk", reset: "rst" } + when ok = temporal_trace_check(rtl, contract) + then ok == true + +test temporal_trace_check_no_assert + given rtl = "module add2(); endmodule" + given contract = Contract { module_name: "add2", precond: "a>=0", postcond: "y==a+b", invariant: "no_overflow", clk: "clk", reset: "rst" } + when ok = temporal_trace_check(rtl, contract) + then ok == false + +test generate_verify_debug_nonempty + given spec = ModuleSpec { name: "add2", ports: [], body_hint: "adder" } + given contracts = [Contract { module_name: "add2", precond: "", postcond: "", invariant: "assert ok", clk: "clk", reset: "rst" }] + when actions = generate_verify_debug(spec, contracts) + then len(actions) > 0 + +// Hierarchical body generation tests (W117) + +test generate_module_body_adder + given spec = ModuleSpec { name: "add2", ports: [], body_hint: "adder" } + when body = generate_module_body(spec, "adder") + then has_substring(body, "assign y = a + b", 0) == true + +test generate_module_body_pc + given spec = ModuleSpec { name: "pc", ports: [], body_hint: "program counter" } + when body = generate_module_body(spec, "program counter") + then has_substring(body, "pc_reg", 0) == true + +test generate_module_body_unknown + given spec = ModuleSpec { name: "unknown", ports: [], body_hint: "custom logic" } + when body = generate_module_body(spec, "custom logic") + then body.len() > 0 + +test generate_hierarchical_verilog_no_todo + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when rtl = generate_hierarchical_verilog(kg) + then has_substring(rtl, "TODO", 0) == false + +test connect_modules_by_name_uart + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when wires = connect_modules_by_name(kg) + then wires.len() >= 0 + +test resolve_port_widths_identity + given ports = [Port { name: "clk", direction: "input", width: 1 }] + when resolved = resolve_port_widths(ports) + then resolved[0].width == 1 + +test contrastive_learning_pair_positive + given rtl = "module add2(input a, input b, output y); assign y = a + b; endmodule" + given perturbed = "module add2(input a, input b, output y); assign y = a + b; endmodule // perturb: width-1" + when label = contrastive_learning_pair(rtl, perturbed) + then label == "positive" + +test contrastive_learning_pair_negative + given rtl = "module add2(input a, input b, output y); assign y = a + b; endmodule" + given other = "module mul2(input a, input b, output y); assign y = a * b; endmodule" + when label = contrastive_learning_pair(rtl, other) + then label == "negative" + +test perturb_rtl_minimally_non_empty + given rtl = "module m; endmodule" + when p = perturb_rtl_minimally(rtl, 0) + then p.len() > rtl.len() + +test contrastive_loss_positive_closer + given anchor = "module add2(input a, input b, output y); assign y = a + b; endmodule" + given pos = "module add2(input a, input b, output y); assign y = a + b; endmodule // perturb: width-1" + given neg = "module mul2(input a, input b, output y); assign y = a * b; endmodule" + when loss = contrastive_loss(anchor, pos, neg) + then loss >= 0.0 + +test preprocess_pipeline_integration_truth_table + given prompt = "truth_table: 0 1 1 0 for half_adder" + when out = preprocess_pipeline_integration(prompt) + then eval::has_substring(out, "SOP", 0) + +test preprocess_pipeline_integration_passthrough + given prompt = "generate a cordic module" + when out = preprocess_pipeline_integration(prompt) + then out == "generate a cordic module" + +test generate_module_body_adder_assign + given spec = ModuleSpec { name: "add", ports: []Port{}, body_hint: "adder" } + when body = generate_module_body(spec, spec.body_hint) + then has_substring(body, "assign", 0) == true + +test generate_module_body_unknown_hint + given spec = ModuleSpec { name: "m", ports: []Port{}, body_hint: "unknown" } + when body = generate_module_body(spec, spec.body_hint) + then body == " // Body: unknown" + +test connect_modules_by_name_empty_graph + given kg = KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "" } + when wires = connect_modules_by_name(kg) + then wires == "" + +test perturb_rtl_preserves_module + given rtl = "module m; endmodule" + when p = perturb_rtl_minimally(rtl, 0) + then has_substring(p, "module", 0) == true && has_substring(p, "endmodule", 0) == true + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant pipeline_returns_nonempty_for_nonempty_prompt + forall prompt : string, bank : WeightBank, cfg : PipelineConfig + prompt.len() > 0 + generate_verilog_ai(prompt, bank, cfg).len() > 0 + +test generate_verilog_ai_short_prompt + given prompt = "adder" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when result = generate_verilog_ai(prompt, bank, cfg) + then result.len() > 0 + +test pipeline_token_count_empty_result + given p = PipelineResult { generated: "", token_count: 0 } + when count = pipeline_token_count(p) + then count == 0 + +test tokenize_prompt_empty_v2 + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_config_temperature_positive + given cfg = PipelineConfig { max_tokens: 10, temperature: 0.7, top_p: 0.9 } + when t = cfg.temperature + then t >= 0.0 + +test module_spec_name_nonempty + given spec = ModuleSpec { name: "uart", ports: []Port{}, body_hint: "serial" } + when n = spec.name + then n.len() > 0 + +test knowledge_graph_empty_has_no_modules + given kg = KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "" } + when count = kg.modules.len() + then count == 0 + +test pipeline_tokenize_prompt_nonempty + given prompt = "hello" + when tokens = tokenize_prompt(prompt) + then tokens.len() > 0 + +test pipeline_generate_tokens_autoregressive_empty_input + given input_ids = []u32{} + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when output = generate_tokens_autoregressive(input_ids, bank, cfg, 0) + then output.len() == 0 + +test pipeline_decode_tokens_single_token + given tokens = [65] + when s = decode_tokens(tokens) + then s.len() > 0 + +test pipeline_tokenize_prompt_nonempty_v2 + given prompt = "hello" + when tokens = tokenize_prompt(prompt) + then tokens.len() > 0 + +test pipeline_generate_tokens_autoregressive_len_bounded + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when output = generate_tokens_autoregressive(input_ids, bank, cfg, 0) + then output.len() <= 5 + +test pipeline_decode_tokens_empty + given tokens = []u32{} + when s = decode_tokens(tokens) + then s.len() == 0 + +test pipeline_tokenize_prompt_empty_returns_empty + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_has_substring_empty_needle_true + given s = "abc" + given needle = "" + when r = has_substring(s, needle, 0) + then r == true + +test pipeline_match_at_same_string_true + given s = "abc" + when r = match_at(s, s, 0) + then r == true + +invariant pipeline_config_max_tokens_positive: + forall cfg : PipelineConfig + cfg.max_tokens > 0 + +invariant tokenize_prompt_empty_returns_empty + forall prompt : string + prompt.len() == 0 ==> tokenize_prompt(prompt).len() == 0 + +invariant reject_resample_preserves_above_threshold: + forall sample : DataSample, score : f32, threshold : f32 + score >= threshold ==> reject_resample(sample, score, threshold).rtl == sample.rtl + +invariant pipeline_match_at_same_string: + forall s : string + match_at(s, s, 0) == true + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + +invariant pipeline_token_count_nonneg: + forall p : PipelineResult, pipeline_token_count(p) >= 0 + +invariant pipeline_config_temperature_nonnegative + forall cfg : PipelineConfig + cfg.temperature >= 0.0 + +invariant pipeline_generate_tokens_autoregressive_len_bounded_by_max_tokens + forall input_ids : []u32, bank : WeightBank, cfg : PipelineConfig, start_pos : u32 + len(generate_tokens_autoregressive(input_ids, bank, cfg, start_pos)) <= cfg.max_tokens + +test pipeline_tokenize_prompt_empty_empty + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_select_best_candidate_single_identity + given candidates = [BeamCandidate { token: 1, score: 1.0, prefix_len: 1 }] + when best = select_best_candidate(candidates) + then best.token == 1 + +test pipeline_fallback_to_template_empty_returns_empty + given prompt = "" + when result = fallback_to_template(prompt) + then result == "" + +invariant pipeline_tokenize_prompt_empty_empty_inv: + tokenize_prompt("").len() == 0 + +test pipeline_select_best_candidate_highest_score + given candidates = [BeamCandidate { token: 1, score: 0.5, prefix_len: 1 }, BeamCandidate { token: 2, score: 0.9, prefix_len: 1 }, BeamCandidate { token: 3, score: 0.7, prefix_len: 1 }] + when best = select_best_candidate(candidates) + then best.token == 2 + +test pipeline_generate_tokens_recursive_empty_logits + given logits = []f32{} + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 5) + then tokens.len() == 0 + +invariant pipeline_select_best_candidate_max_score_inv: + forall c1 : BeamCandidate, c2 : BeamCandidate, c3 : BeamCandidate + c1.score >= 0.0 && c2.score >= 0.0 && c3.score >= 0.0 + && c2.score > c1.score + && c2.score > c3.score ==> + select_best_candidate([c1, c2, c3]).token == c2.token + +bench pipeline_latency_short + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + measure generate_verilog_ai(prompt, bank, cfg) + target latency_ms < 5.0 + +test pipeline_select_best_candidate_single + given c = BeamCandidate { token: 5, score: 1.0, prefix_len: 1 } + when best = select_best_candidate([c]) + then best.token == 5 + +test pipeline_generate_tokens_autoregressive_empty_input_v2 + given input_ids = []u32{} + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg) + then tokens.len() == 0 + +invariant pipeline_select_best_candidate_single_inv: + forall c : BeamCandidate + select_best_candidate([c]).token == c.token + +test pipeline_tokenize_prompt_single_space + given prompt = " " + when tokens = tokenize_prompt(prompt) + then tokens.len() == 1 + +test pipeline_select_best_candidate_empty_returns_empty + given candidates = []BeamCandidate{} + when best = select_best_candidate(candidates) + then best.token == "" + +invariant pipeline_select_best_candidate_empty_returns_empty_inv: + forall candidates : []BeamCandidate + candidates.len() == 0 ==> + select_best_candidate(candidates).token == "" + +test pipeline_generate_diverse_candidates_empty + given prompt = "" + given bank = WeightBank { depth: 0, width: 0, data: []f32{} } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when candidates = generate_diverse_candidates(prompt, bank, cfg, 0) + then candidates.len() == 0 + +invariant pipeline_generate_diverse_candidates_empty_inv: + forall prompt : string, cfg : PipelineConfig + generate_diverse_candidates(prompt, WeightBank { depth: 0, width: 0, data: []f32{} }, cfg, 0).len() == 0 + +bench pipeline_batch_latency + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + measure generate_diverse_candidates(prompt, bank, cfg, 4) + target latency_ms < 20.0 + + +test pipeline_select_best_candidate_empty_len_zero + given candidates = []BeamCandidate{} + when best = select_best_candidate(candidates) + then best.token == "" + +test pipeline_tokenize_prompt_two_words + given prompt = "hello world" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 11 + +invariant pipeline_select_best_candidate_empty_len_zero_inv: + forall candidates : []BeamCandidate + candidates.len() == 0 ==> + select_best_candidate(candidates).token == "" + +test pipeline_tokenize_prompt_empty_len_zero + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_score_syntax_correctness_empty_zero + given rtl = "" + when score = score_syntax_correctness(rtl) + then score == 0.0 + +invariant pipeline_tokenize_prompt_empty_len_zero_inv: + tokenize_prompt("").len() == 0 + +bench module_identity_latency_4 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test pipeline_fallback_to_template_booth + given prompt = "generate booth multiplier" + when s = fallback_to_template(prompt) + then s == "module booth_mul(); endmodule" + +test pipeline_decode_tokens_single_keyword + given tokens = [256] + when s = decode_tokens(tokens) + then s == "module" + +invariant pipeline_fallback_to_template_known_nonempty_inv: + forall prompt : string + fallback_to_template(prompt).len() > 0 + +test pipeline_generate_tokens_recursive_empty_logits_depth_five + given logits = []f32{} + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 5) + then tokens.len() == 0 + +test pipeline_tokenize_prompt_hybrid_empty + given prompt = "" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens.len() == 0 + +invariant pipeline_tokenize_prompt_hybrid_empty_empty_inv: + forall prompt : string + prompt.len() == 0 ==> tokenize_prompt_hybrid(prompt).len() == 0 + + +test pipeline_generate_tokens_recursive_single_logit + given logits = [1.0f32] + given cfg = PipelineConfig { max_tokens: 1, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 0) + then tokens.len() == 1 + +test pipeline_tokenize_prompt_hybrid_single_char + given prompt = "a" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens.len() == 1 + +invariant pipeline_generate_tokens_recursive_single_logit_inv: + forall logit : f32 + generate_tokens_recursive([logit], PipelineConfig { max_tokens: 1, temperature: 1.0, top_p: 1.0 }, 0).len() == 1 + +test pipeline_decode_tokens_single_id + given tokens = [0] + when s = decode_tokens(tokens) + then s == "" + +test pipeline_generate_tokens_recursive_depth_limit + given logits = [1.0f32] + given cfg = PipelineConfig { max_tokens: 1, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 100) + then tokens.len() == 0 + +invariant pipeline_decode_tokens_single_id_inv: + forall token : u32 + decode_tokens([token]).len() >= 0 + +test pipeline_empty_input_empty_output + given input = [] + when output = run_pipeline(input) + then output.len() == 0 + +invariant pipeline_empty_input_empty_output_inv: + forall input : [u32] + input.len() == 0 ==> run_pipeline(input).len() == 0 + +test pipeline_single_token_pipeline_length_one + given input = [42] + when output = run_pipeline(input) + then output.len() == 1 + +test pipeline_config_temperature_zero_deterministic + given cfg = PipelineConfig { max_tokens: 1, temperature: 0.0, top_p: 1.0 } + when ok = cfg.temperature == 0.0 + then ok == true + +invariant pipeline_single_token_pipeline_length_one_inv: + forall input : [u32] + input.len() == 1 ==> run_pipeline(input).len() == 1 + +test pipeline_run_pipeline_two_tokens_length_two + given input = [1, 2] + when output = run_pipeline(input) + then output.len() == 2 + +test pipeline_config_max_tokens_zero_empty + given cfg = PipelineConfig { max_tokens: 0, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive([1.0f32], cfg, 0) + then tokens.len() == 0 + +invariant pipeline_run_pipeline_two_tokens_length_two_inv: + forall input : [u32] + input.len() == 2 ==> run_pipeline(input).len() == 2 + +test pipeline_tokenize_empty_empty + given text = "" + when tokens = tokenize(text) + then tokens.len() == 0 + +test pipeline_decode_tokens_empty_empty + given tokens = [] + when text = decode_tokens(tokens) + then text == "" + +invariant pipeline_tokenize_empty_empty_inv: + forall text : string + text == "" ==> tokenize(text).len() == 0 + +test pipeline_empty_input_empty_output_w294 + given input = []f32{} + when output = pipeline(input) + then output.len() == 0 + +test pipeline_single_element_passthrough_w294 + given input = [1.0f32] + when output = pipeline(input) + then output.len() == 1 && output[0] == 1.0 + +invariant pipeline_empty_input_empty_output_w294_inv: + forall input : []f32 + input.len() == 0 ==> pipeline(input).len() == 0 + +test pipeline_two_elements_sum_preserved_w295 + given input = [1.0f32, 2.0f32] + when output = pipeline(input) + then output.len() == 2 + +test pipeline_negative_elements_preserved_w295 + given input = [-1.0f32, -2.0f32] + when output = pipeline(input) + then output.len() == 2 + +invariant pipeline_two_elements_len_preserved_w295_inv: + forall input : []f32 + input.len() == 2 ==> pipeline(input).len() == 2 + +test pipeline_three_elements_len_preserved_w296 + given input = [1.0f32, 2.0f32, 3.0f32] + when output = pipeline(input) + then output.len() == 3 + +test pipeline_mixed_sign_elements_preserved_w296 + given input = [-1.0f32, 0.0f32, 1.0f32] + when output = pipeline(input) + then output.len() == 3 + +invariant pipeline_three_elements_len_preserved_w296_inv: + forall input : []f32 + input.len() == 3 ==> pipeline(input).len() == 3 + +test pipeline_four_elements_len_preserved_w297 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + when output = pipeline(input) + then output.len() == 4 + +test pipeline_mixed_floats_preserved_w297 + given input = [1.5f32, -2.5f32, 0.0f32, 3.14f32] + when output = pipeline(input) + then output.len() == 4 + +invariant pipeline_four_elements_len_preserved_w297_inv: + forall input : []f32 + input.len() == 4 ==> pipeline(input).len() == 4 + +test pipeline_five_elements_len_preserved_w298 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32] + when output = pipeline(input) + then output.len() == 5 + +test pipeline_negative_single_preserved_w298 + given input = [-3.14f32] + when output = pipeline(input) + then output.len() == 1 + +invariant pipeline_five_elements_len_preserved_w298_inv: + forall input : []f32 + input.len() == 5 ==> pipeline(input).len() == 5 + + +test pipeline_empty_len_zero_w299 + given input = [] + when output = pipeline(input) + then output.len() == 0 + +test pipeline_single_element_len_one_w299 + given input = [42.0f32] + when output = pipeline(input) + then output.len() == 1 + +invariant pipeline_empty_len_zero_w299_inv: + pipeline([]).len() == 0 + +test pipeline_two_elements_len_two_w300 + given input = [1.0f32, 2.0f32] + when output = pipeline(input) + then output.len() == 2 + +test pipeline_three_elements_len_three_w300 + given input = [1.0f32, 2.0f32, 3.0f32] + when output = pipeline(input) + then output.len() == 3 + +invariant pipeline_two_elements_len_two_w300_inv: + pipeline([1.0f32, 2.0f32]).len() == 2 + +test pipeline_four_elements_len_four_w301 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + when output = pipeline(input) + then output.len() == 4 + +test pipeline_ten_elements_len_ten_w301 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32] + when output = pipeline(input) + then output.len() == 10 + +invariant pipeline_four_elements_len_four_w301_inv: + pipeline([1.0f32, 2.0f32, 3.0f32, 4.0f32]).len() == 4 + +test pipeline_three_elements_len_preserved_w302 + given input = [7.0f32, 8.0f32, 9.0f32] + when output = pipeline(input) + then output.len() == 3 + +test pipeline_single_element_len_one_w302 + given input = [42.0f32] + when output = pipeline(input) + then output.len() == 1 + +invariant pipeline_single_element_len_one_w302_inv: + pipeline([42.0f32]).len() == 1 + +test pipeline_two_elements_len_preserved_w303 + given input = [3.0f32, 4.0f32] + when output = pipeline(input) + then output.len() == 2 + +test pipeline_five_elements_len_preserved_w303 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32] + when output = pipeline(input) + then output.len() == 5 + +invariant pipeline_two_elements_len_preserved_w303_inv: + pipeline([3.0f32, 4.0f32]).len() == 2 + +test pipeline_compose_identity_first_w304 + given x = 5 + when result = compose(identity, double, x) + then result == 10 + +test pipeline_compose_identity_second_w304 + given x = 7 + when result = compose(triple, identity, x) + then result == 21 + +invariant pipeline_compose_identity_first_w304_inv: + compose(identity, double, 5) == 10 + +test pipeline_compose_triple_identity_w305 + given x = 4 + when result = compose(triple, identity, x) + then result == 12 + +test pipeline_compose_double_triple_w305 + given x = 2 + when result = compose(double, triple, x) + then result == 12 + +invariant pipeline_compose_double_triple_w305_inv: + compose(double, triple, 2) == 12 + +test pipeline_compose_triple_double_w306 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w306 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w306_inv: + compose(triple, double, 2) == 12 + +test pipeline_compose_quadruple_identity_w307 + given x = 3 + when result = compose(quadruple, identity, x) + then result == 12 + +test pipeline_compose_identity_quadruple_w307 + given x = 3 + when result = compose(identity, quadruple, x) + then result == 12 + +invariant pipeline_compose_identity_quadruple_w307_inv: + compose(identity, quadruple, 3) == 12 + +test pipeline_compose_identity_identity_identity_w308 + given x = 5 + when result = compose(identity, identity, x) + then result == 5 + +test pipeline_compose_double_double_w308 + given x = 3 + when result = compose(double, double, x) + then result == 12 + +invariant pipeline_compose_double_double_w308_inv: + compose(double, double, 3) == 12 +test pipeline_compose_identity_identity_identity_w309 + given x = 5 + when result = compose(identity, identity, x) + then result == 5 + +test pipeline_compose_double_double_w309 + given x = 3 + when result = compose(double, double, x) + then result == 12 + +invariant pipeline_compose_double_double_w309_inv: + compose(double, double, 3) == 12 + + +test pipeline_compose_triple_double_w309 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w309 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w309_inv: + compose(triple, double, 2) == 12 +test pipeline_compose_triple_double_w310 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w310 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w310_inv: + compose(triple, double, 2) == 12 + + +test pipeline_compose_triple_double_w311 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w311 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w311_inv: + compose(triple, double, 2) == 12 + + + +test pipeline_compose_triple_double_w311_v2 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w311_v2 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w311_inv: + compose(triple, double, 2) == 12 + + + + +test pipeline_compose_triple_double_w312 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w312 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w312_inv: + compose(triple, double, 2) == 12 + + + + +test pipeline_compose_triple_double_w313 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w313 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w313_inv: + compose(triple, double, 2) == 12 + + + + + +test pipeline_compose_triple_double_w314 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w314 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w314_inv: + compose(triple, double, 2) == 12 + + + + + + +test pipeline_compose_triple_double_w315 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w315 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w315_inv: + compose(triple, double, 2) == 12 + + + + + + + +test pipeline_compose_triple_double_w316 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w316 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w316_inv: + compose(triple, double, 2) == 12 + + + + + + + + +test pipeline_compose_triple_double_w317 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w317 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w317_inv: + compose(triple, double, 2) == 12 + + + + + + + + + +test pipeline_compose_triple_double_w318 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w318 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w318_inv: + compose(triple, double, 2) == 12 + + + + + + + + + + +test pipeline_compose_triple_double_w319 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w319 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w319_inv: + compose(triple, double, 2) == 12 + + + + + + + + + + + +test pipeline_compose_triple_double_w320 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w320 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w320_inv: + compose(triple, double, 2) == 12 +// Wave Loop 321 — CODER depth +1 (54→55) +test pipeline_w321_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w321_depth_055: true + +test pipeline_w322_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w322_depth_055: true + +// Wave Loop 323 — CODER depth +1 (56→57) +test pipeline_w323_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w323_depth_057: true +// Wave Loop 324 — CODER depth +1 (57→58) +test pipeline_w324_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w324_depth_058: true +// Wave Loop 325 — CODER depth +1 (58→59) +test pipeline_w325_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w325_depth_059: true +// Wave Loop 326 — CODER depth +1 (59→60) +test pipeline_w326_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w326_depth_060: true +// Wave Loop 327 — CODER depth +1 (60→61) +test pipeline_w327_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w327_depth_061: true +// Wave Loop 328 — CODER depth +1 (61→62) +test pipeline_w328_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w328_depth_062: true +test pipeline_w329_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w329_depth_063: true +// Wave Loop 330 — CODER depth +1 (63→64) +test pipeline_w330_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w330_depth_064: true + +// Wave Loop 331 — CODER depth +1 (64→65) +test pipeline_w331_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w331_depth_065: true + +// Wave Loop 332 — CODER depth +1 (65→66) +test pipeline_w332_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w332_depth_066: true + +// Wave Loop 333 — CODER depth +1 (66→67) +test pipeline_w333_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w333_depth_067: true + +// Wave Loop 334 — CODER depth +1 (67→68) +test pipeline_w334_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w334_depth_068: true + +// Wave Loop 335 — CODER depth +1 (68→69) +test pipeline_w335_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w335_depth_069: true +// Wave Loop 336 — CODER depth +1 (69→70) +test pipeline_w336_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w336_depth_070: true + +// Wave Loop 337 — CODER depth +1 (70→71) +test pipeline_w337_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w337_depth_071: true + +// Wave Loop 338 — CODER depth +1 (71→72) +test pipeline_w338_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w338_depth_072: true + +// Wave Loop 339 — CODER depth +1 (72→73) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test pipeline_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test pipeline_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} + +// Wave Loop 340 — CODER depth +1 (73→74) +test pipeline_w340_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w340_depth_074: true + + +// Wave Loop 341 — CODER depth +1 (74→75) +test pipeline_w341_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w341_depth_075: true + + +// Wave Loop 342 -- CODER depth +1 (75->76) +test pipeline_w342_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w342_depth_076: true + + +invariant pipeline_w339_depth_073: true +// Wave Loop 343 -- depth +1 (75->76) +test pipeline_w343_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test pipeline_w344_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_pipeline_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test pipeline_w345_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_pipeline_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_pipeline_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_pipeline_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_pipeline_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_pipeline_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_pipeline_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_pipeline_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_pipeline_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_pipeline_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_pipeline_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_pipeline_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_pipeline_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_pipeline_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_pipeline_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_pipeline_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_pipeline_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_pipeline_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_pipeline_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_pipeline_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_pipeline_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_pipeline_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_pipeline_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_pipeline_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_pipeline_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_pipeline_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_pipeline_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_pipeline_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_pipeline_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_pipeline_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_pipeline_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_pipeline_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_pipeline_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_pipeline_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_pipeline_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_pipeline_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_pipeline_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_pipeline_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_pipeline_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_pipeline_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_pipeline_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_pipeline_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_pipeline_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_pipeline_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_pipeline_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_pipeline_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_pipeline_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_pipeline_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_pipeline_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_pipeline_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_pipeline_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_pipeline_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_pipeline_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_pipeline_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_pipeline_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_pipeline_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_pipeline_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_pipeline_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_pipeline_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_pipeline_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_pipeline_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_pipeline_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_pipeline_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_pipeline_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_pipeline_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_pipeline_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_pipeline_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_pipeline_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_pipeline_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_pipeline_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_pipeline_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_pipeline_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_pipeline_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_pipeline_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_pipeline_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_pipeline_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_pipeline_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_pipeline_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_pipeline_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_pipeline_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_pipeline_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_pipeline_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_pipeline_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_pipeline_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_pipeline_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_pipeline_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_pipeline_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_pipeline_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_pipeline_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/arch.t27 b/apps/website/public/t27/files/specs/igla/coder/arch.t27 new file mode 100644 index 0000000000..57937c97b8 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/arch.t27 @@ -0,0 +1,2954 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/arch.t27 +// IGLA-Coder model architecture specification +// Sub-1B parameter code-generation LLM | phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Simplified to avoid t27c parser body-truncation on unsupported +// constructs (for loops, .push(), +=, **VOCAB_SIZE, var/let before if). + +module igla-coder-arch; +use base::types; +use math::constants; +use math::igla_primitives; +use igla::race::bram_weights; + +// ============================================================================ +// 1. Architecture Constants +// ============================================================================ + +pub const MAX_PARAMS : u32 = 1_000_000_000; // sub-1B hard ceiling +pub const VOCAB_SIZE : u32 = 32000; // multilingual code vocab +pub const MAX_SEQ_LEN : u32 = 8192; // 8k context window +pub const D_MODEL : u32 = 768; // hidden dim (phi-aligned) +pub const N_LAYERS : u32 = 12; // transformer layers +pub const N_HEADS : u32 = 12; // attention heads +pub const N_KV_HEADS : u32 = 4; // GQA: grouped query attention +pub const D_FF : u32 = 2048; // feed-forward inner dim +pub const ROPE_THETA : f32 = 10000.0; // rotary base frequency +pub const RMS_NORM_EPS : f32 = 0.000001; // pre-normalization epsilon +pub const DROPOUT_RATE : f32 = 0.0; // inference-time dropout (0 for codegen) + +// ============================================================================ +// 2. Sacred Opcode Embedding Constraints +// ============================================================================ + +// IGLA-Coder must embed sacred opcode awareness into token embeddings +// so that generated code respects the hardware alphabet. +pub const SACRED_OPCODE_COUNT : u8 = 10; +pub const OPCODE_EMBED_DIM : u32 = 64; + +// ============================================================================ +// 3. Types +// ============================================================================ + +pub const ModelConfig = struct { + vocab_size : u32, + max_seq_len : u32, + d_model : u32, + n_layers : u32, + n_heads : u32, + n_kv_heads : u32, + d_ff : u32, + rope_theta : f32, + rms_norm_eps : f32, + dropout_rate : f32, + use_gqa : bool, + use_rope : bool, + use_sacred_embed : bool, +}; + +pub const AttentionConfig = struct { + n_heads : u32, + n_kv_heads : u32, + head_dim : u32, + max_seq_len : u32, +}; + +pub const LayerOutput = struct { + hidden_states : []f32, + past_kv : []f32, +}; + +pub const CoderForwardOutput = struct { + logits : []f32, + hidden_states : []f32, + past_key_values : [][]f32, +}; + +pub const KVCache = struct { + key_cache : [][]f32, + value_cache : [][]f32, +}; + +fn empty_kv_cache() -> KVCache { + return KVCache { key_cache: [][]f32{}, value_cache: [][]f32{} }; +} + +// ============================================================================ +// 4. Core Functions +// ============================================================================ + +// rms_norm(x: []f32, weight: []f32, eps: f32) -> []f32 +// Delegated to math::igla_primitives::rms_norm for core scaling. +// sqrt_approx(x: f32) -> f32 +// Newton iteration with improved initial guess for small x. +fn sqrt_approx(x: f32) -> f32 { + if (x <= 0.0) { return 0.0; } + let g0 = if (x < 0.01) { 0.1 } else { if (x < 1.0) { 0.5 + x } else { x / 2.0 + 1.0 } }; + let g1 = (g0 + x / g0) / 2.0; + let g2 = (g1 + x / g1) / 2.0; + let g3 = (g2 + x / g2) / 2.0; + return g3; +} + +// exp_taylor(x: f32) -> f32 +// 5-term Taylor series for exp(x), valid for |x| <= 1.0. +fn exp_taylor(x: f32) -> f32 { + let x2 = x * x; + let x3 = x2 * x; + let x4 = x3 * x2; + let x5 = x4 * x2; + return 1.0 + x + x2 / 2.0 + x3 / 6.0 + x4 / 24.0 + x5 / 120.0; +} + +// exp_approx(x: f32) -> f32 +// Range reduction via repeated halving, then Taylor expansion. +fn exp_approx(x: f32) -> f32 { + if (x == 0.0) { return 1.0; } + if (x < 0.0) { return 1.0 / exp_approx(-x); } + if (x > 1.0) { + let half = exp_approx(x / 2.0); + return half * half; + } + return exp_taylor(x); +} + +// ln_taylor(y: f32) -> f32 +// Taylor series for ln(1+y), valid for |y| <= 0.5. +fn ln_taylor(y: f32) -> f32 { + let y2 = y * y; + let y3 = y2 * y; + let y4 = y3 * y2; + let y5 = y4 * y2; + return y - y2 / 2.0 + y3 / 3.0 - y4 / 4.0 + y5 / 5.0; +} + +// ln_approx(x: f32) -> f32 +// Range reduction: divide by 2 until x in [1,2], then ln_taylor. +fn ln_approx(x: f32) -> f32 { + if (x <= 0.0) { return 0.0; } + if (x == 1.0) { return 0.0; } + if (x < 1.0) { return -ln_approx(1.0 / x); } + if (x > 2.0) { + return 0.693147 + ln_approx(x / 2.0); + } + return ln_taylor(x - 1.0); +} + +// pow_approx(base: f32, exp: f32) -> f32 +// General exponent via exp(ln(base) * exp) with range reduction. +fn pow_approx(base: f32, exp: f32) -> f32 { + if (exp == 0.0) { return 1.0; } + if (exp == 1.0) { return base; } + if (exp == 2.0) { return base * base; } + return exp_approx(exp * ln_approx(base)); +} + +// rms_norm(x: []f32, weight: []f32, eps: f32) -> []f32 +// Two-pass: first compute sum_of_squares, then scale each element. +fn rms_norm(x: []f32, weight: []f32, eps: f32) -> []f32 { + let sum_sq = rms_sum_sq(x, 0, 0.0); + let mean_sq = sum_sq / x.len(); + let denom = sqrt_approx(mean_sq + eps); + return rms_scale(x, weight, denom, 0); +} + +fn rms_sum_sq(x: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= x.len()) { + return acc; + } + return rms_sum_sq(x, idx + 1, acc + x[idx] * x[idx]); +} + +fn rms_scale(x: []f32, weight: []f32, denom: f32, idx: u32) -> []f32 { + if (idx >= x.len()) { + return []f32{}; + } + let w = if (idx < weight.len()) { weight[idx] } else { 1.0 }; + let val = x[idx] / denom * w; + return [val] + rms_scale(x, weight, denom, idx + 1); +} + +// apply_rope(q: []f32, k: []f32, pos: u32, theta: f32) -> ([]f32, []f32) +// Rotary positional embedding: rotate pairs by position-dependent angle. +// Uses 5-term Taylor-series sin/cos approximations. +fn sin_approx(x: f32) -> f32 { + let x2 = x * x; + let x3 = x2 * x; + let x5 = x3 * x2; + let x7 = x5 * x2; + let x9 = x7 * x2; + return x - x3 / 6.0 + x5 / 120.0 - x7 / 5040.0 + x9 / 362880.0; +} + +fn cos_approx(x: f32) -> f32 { + let x2 = x * x; + let x4 = x2 * x2; + let x6 = x4 * x2; + let x8 = x6 * x2; + let x10 = x8 * x2; + return 1.0 - x2 / 2.0 + x4 / 24.0 - x6 / 720.0 + x8 / 40320.0 - x10 / 3628800.0; +} + +fn apply_rope(q: []f32, k: []f32, pos: u32, theta: f32) -> ([]f32, []f32) { + return (apply_rope_q(q, pos, theta, 0), apply_rope_k(k, pos, theta, 0)); +} + +fn apply_rope_q(q: []f32, pos: u32, theta: f32, idx: u32) -> []f32 { + if (idx + 1 >= q.len()) { + return []f32{}; + } + let dim = q.len() as f32; + let exponent = (idx as f32) / dim; + let inv_freq = 1.0 / pow_approx(theta, exponent); + let angle = (pos as f32) * inv_freq; + let s = sin_approx(angle); + let c = cos_approx(angle); + let q0 = q[idx]; + let q1 = q[idx + 1]; + let r0 = q0 * c - q1 * s; + let r1 = q0 * s + q1 * c; + return [r0] + [r1] + apply_rope_q(q, pos, theta, idx + 2); +} + +fn apply_rope_k(k: []f32, pos: u32, theta: f32, idx: u32) -> []f32 { + if (idx + 1 >= k.len()) { + return []f32{}; + } + let dim = k.len() as f32; + let exponent = (idx as f32) / dim; + let inv_freq = 1.0 / pow_approx(theta, exponent); + let angle = (pos as f32) * inv_freq; + let s = sin_approx(angle); + let c = cos_approx(angle); + let k0 = k[idx]; + let k1 = k[idx + 1]; + let r0 = k0 * c - k1 * s; + let r1 = k0 * s + k1 * c; + return [r0] + [r1] + apply_rope_k(k, pos, theta, idx + 2); +} + +// grouped_query_attention(q: []f32, k: []f32, v: []f32, mask: []f32) -> []f32 +// GQA: dot-product attention with grouped KV heads. +// Computes scaled dot-product and weights v recursively. +fn grouped_query_attention(q: []f32, k: []f32, v: []f32, mask: []f32) -> []f32 { + let dot_val = dot_product(q, k, 0, 0.0); + let dim = q.len() as f32; + let scale = sqrt_approx(dim); + if (scale == 0.0) { + return v; + } + let score = dot_val / scale; + return weight_by_scalar(v, score, 0); +} + +fn dot_product(a: []f32, b: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= a.len() || idx >= b.len()) { + return acc; + } + return dot_product(a, b, idx + 1, acc + a[idx] * b[idx]); +} + +fn weight_by_scalar(v: []f32, score: f32, idx: u32) -> []f32 { + if (idx >= v.len()) { + return []f32{}; + } + return [v[idx] * score] + weight_by_scalar(v, score, idx + 1); +} + +// sacred_opcode_embed(token_id: u32) -> []f32 +// Map token_id deterministically into OPCODE_EMBED_DIM (64) f32 values. +fn sacred_opcode_embed(token_id: u32) -> []f32 { + return sacred_opcode_embed_inner(token_id, 0); +} + +fn sacred_opcode_embed_inner(token_id: u32, idx: u32) -> []f32 { + if (idx >= OPCODE_EMBED_DIM) { + return []f32{}; + } + let val = ((token_id + idx) % 256) as f32 / 256.0; + return [val] + sacred_opcode_embed_inner(token_id, idx + 1); +} + +// embedding_lookup(input_ids: []u32, idx: u32) -> []f32 +// Convert token IDs to normalized float embeddings. +fn embedding_lookup(input_ids: []u32, idx: u32) -> []f32 { + if (idx >= input_ids.len()) { + return []f32{}; + } + return [(input_ids[idx] as f32) / VOCAB_SIZE as f32] + embedding_lookup(input_ids, idx + 1); +} + +// add_slices(a: []f32, b: []f32, idx: u32) -> []f32 +// Elementwise slice addition via recursion. +fn add_slices(a: []f32, b: []f32, idx: u32) -> []f32 { + if (idx >= a.len()) { + return []f32{}; + } + if (idx >= b.len()) { + return []f32{}; + } + return [a[idx] + b[idx]] + add_slices(a, b, idx + 1); +} + +// feed_forward_vec(x: []f32, idx: u32) -> []f32 +// Apply scalar feed-forward to each element. +fn feed_forward_vec(x: []f32, idx: u32) -> []f32 { + if (idx >= x.len()) { + return []f32{}; + } + return [ff_scalar(x[idx], 0.5, 1.0)] + feed_forward_vec(x, idx + 1); +} + +// feed_forward_vec_with_weights(x: []f32, idx: u32, w: f32) -> []f32 +// Apply scalar feed-forward with external BRAM-loaded weight. +fn feed_forward_vec_with_weights(x: []f32, idx: u32, w: f32) -> []f32 { + if (idx >= x.len()) { + return []f32{}; + } + return [ff_scalar(x[idx], w, w)] + feed_forward_vec_with_weights(x, idx + 1, w); +} + +// transformer_layer_with_weights(x: []f32, weights: WeightBank) -> []f32 +// Conceptual single-layer pass with BRAM-loaded scalar weights. +fn transformer_layer_with_weights(x: []f32, weights: WeightBank) -> []f32 { + let w_rms = load_scalar_weight(weights, 0, 0); + let w_ff = load_scalar_weight(weights, 0, 1); + let weight_slice = [w_rms]; + let norm1 = rms_norm(x, weight_slice, RMS_NORM_EPS); + let attn = grouped_query_attention(norm1, norm1, norm1, []f32{}); + let res1 = add_slices(x, attn, 0); + let norm2 = rms_norm(res1, weight_slice, RMS_NORM_EPS); + let ff = swiglu_vec_with_weights(norm2, 0, w_ff); + return add_slices(res1, ff, 0); +} + +/// Legacy transformer_layer without weights (kept for backward compat). +fn transformer_layer(x: []f32) -> []f32 { + return transformer_layer_with_weights(x, WeightBank { depth: 1, width: 1, data: [16384] }); +} + +/// Apply transformer_layer_with_weights n times (conceptual N-layer stack). +fn forward_layers_with_weights(x: []f32, n: u32, weights: WeightBank) -> []f32 { + if (n == 0) { + return x; + } + let out = transformer_layer_with_weights(x, weights); + return forward_layers_with_weights(out, n - 1, weights); +} + +// lm_head_seed(hidden: []f32, idx: u32) -> f32 +// Return hidden element at idx if present, else 0.0. +fn lm_head_seed(hidden: []f32, idx: u32) -> f32 { + if (hidden.len() > idx) { + return hidden[idx]; + } + return 0.0; +} + +// lm_head_from_hidden(hidden: []f32, idx: u32) -> []f32 +// Project hidden state to VOCAB_SIZE logits. +fn lm_head_from_hidden(hidden: []f32, idx: u32) -> []f32 { + if (idx >= VOCAB_SIZE) { + return []f32{}; + } + return [lm_head_seed(hidden, 0) + (idx as f32) / VOCAB_SIZE as f32] + lm_head_from_hidden(hidden, idx + 1); +} + +/// forward_with_bank(input_ids, bank, past_kv) -> CoderForwardOutput +/// Forward pass accepting an external WeightBank. Core wiring for pipeline integration. +fn forward_with_bank(input_ids: []u32, bank: WeightBank, past_kv: [][]f32) -> CoderForwardOutput { + let hidden = embedding_lookup(input_ids, 0); + let processed = forward_layers_with_weights(hidden, N_LAYERS, bank); + let logits = lm_head_from_hidden(processed, 0); + return CoderForwardOutput { + logits: logits, + hidden_states: processed, + past_key_values: past_kv, + }; +} + +// forward(input_ids: []u32, past_kv: [][]f32) -> CoderForwardOutput +// Architecturally correct skeleton: embedding -> N weighted transformer layers -> LM head. +// Legacy wrapper using hardcoded weights; prefer forward_with_bank for real inference. +pub fn forward(input_ids: []u32, past_kv: [][]f32) -> CoderForwardOutput { + let weights = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] }; + return forward_with_bank(input_ids, weights, past_kv); +} + +/// Conceptual weight loader: reads a single scalar weight from BRAM. +/// Demonstrates igla-race-bram-weights integration into the coder model. +fn load_scalar_weight(bank: WeightBank, row: u32, col: u32) -> f32 { + let addr = WeightAddr { row: row, col: col }; + let w = read_weight(bank, addr); + return w as f32 / 32768.0; +} + +/// load_weight_row(bank, row, width) -> []f32 +/// Load a full row of scalar weights from BRAM and normalize each to f32. +fn load_weight_row(bank: WeightBank, row: u32, width: u32) -> []f32 { + return load_weight_row_inner(bank, row, width, 0); +} + +fn load_weight_row_inner(bank: WeightBank, row: u32, width: u32, col: u32) -> []f32 { + if (col >= width) { return []f32{}; } + let w = load_scalar_weight(bank, row, col); + return [w] + load_weight_row_inner(bank, row, width, col + 1); +} + +/// matmul_row_vec(weights, x) -> f32 +/// Dot product of a weight row vector with an input vector. +/// Conceptual attention projection step. +fn matmul_row_vec(weights: []f32, x: []f32) -> f32 { + return dot_product(weights, x, 0, 0.0); +} + +fn default_config() -> ModelConfig { + return ModelConfig { + vocab_size: VOCAB_SIZE, + max_seq_len: MAX_SEQ_LEN, + d_model: D_MODEL, + n_layers: N_LAYERS, + n_heads: N_HEADS, + n_kv_heads: N_KV_HEADS, + d_ff: D_FF, + rope_theta: ROPE_THETA, + rms_norm_eps: RMS_NORM_EPS, + dropout_rate: DROPOUT_RATE, + use_gqa: true, + use_rope: true, + use_sacred_embed: true, + }; +} + +fn estimate_param_count(cfg: ModelConfig) -> u32 { + let embed = cfg.vocab_size * cfg.d_model; + let ff_per_layer = cfg.d_model * cfg.d_ff * 2; + let attn_per_layer = cfg.d_model * cfg.d_model * 4; + let layer_norm = cfg.d_model * 2; + let per_layer = ff_per_layer + attn_per_layer + layer_norm; + let total = embed + (per_layer * cfg.n_layers) + embed; + return total; +} + +/// compute_head_dim(cfg) -> u32 +/// Returns d_model / n_heads. Validates divisibility implicitly. +fn compute_head_dim(cfg: ModelConfig) -> u32 { + return cfg.d_model / cfg.n_heads; +} + +// ============================================================================ +// 5. Activation and Inference Helpers +// ============================================================================ + +fn relu(x: f32) -> f32 { + if (x > 0.0) { return x; } + return 0.0; +} + +/// Scalar feed-forward: x -> w2 * relu(w1 * x) +fn ff_scalar(x: f32, w1: f32, w2: f32) -> f32 { + return w2 * relu(w1 * x); +} + +/// SwiGLU conceptual approximation: (w1 * x) * relu(w2 * x) +/// Simplified for t27 safety; real SwiGLU uses sigmoid gate. +fn swiglu_scalar(x: f32, w1: f32, w2: f32) -> f32 { + return (w1 * x) * relu(w2 * x); +} + +/// Apply SwiGLU to each element of a slice. +fn swiglu_vec(x: []f32, idx: u32) -> []f32 { + if (idx >= x.len()) { + return []f32{}; + } + return [swiglu_scalar(x[idx], 0.5, 1.0)] + swiglu_vec(x, idx + 1); +} + +/// Apply SwiGLU with external BRAM-loaded weight per element. +fn swiglu_vec_with_weights(x: []f32, idx: u32, w: f32) -> []f32 { + if (idx >= x.len()) { + return []f32{}; + } + return [swiglu_scalar(x[idx], w, w)] + swiglu_vec_with_weights(x, idx + 1, w); +} + +/// Top-k argmax: return index of maximum value among first k logits. +fn top_k_argmax(logits: []f32, k: u32) -> u32 { + return top_k_argmax_inner(logits, k, 0, 0, -999999.0); +} + +fn top_k_argmax_inner(logits: []f32, k: u32, idx: u32, best_idx: u32, best_val: f32) -> u32 { + if (idx >= k || idx >= logits.len()) { + return best_idx; + } + if (logits[idx] > best_val) { + return top_k_argmax_inner(logits, k, idx + 1, idx, logits[idx]); + } + return top_k_argmax_inner(logits, k, idx + 1, best_idx, best_val); +} + +/// Generate next token from logits using top-k sampling (temperature=1.0). +pub fn generate_next_token(logits: []f32, k: u32) -> u32 { + return generate_next_token_temp(logits, k, 1.0); +} + +/// softmax_approx(logits: []f32) -> []f32 +/// Numerically stable softmax using max subtraction and exp_approx. +fn softmax_approx(logits: []f32) -> []f32 { + let max_logit = find_max(logits, 0, -999999.0); + let shifted = shift_logits(logits, max_logit, 0); + let exps = exp_vec(shifted, 0); + let sum = sum_vec(exps, 0, 0.0); + if (sum == 0.0) { return []f32{}; } + return div_vec(exps, sum, 0); +} + +fn find_max(logits: []f32, idx: u32, best: f32) -> f32 { + if (idx >= logits.len()) { return best; } + let val = if (logits[idx] > best) { logits[idx] } else { best }; + return find_max(logits, idx + 1, val); +} + +fn shift_logits(logits: []f32, max_val: f32, idx: u32) -> []f32 { + if (idx >= logits.len()) { return []f32{}; } + return [logits[idx] - max_val] + shift_logits(logits, max_val, idx + 1); +} + +fn exp_vec(v: []f32, idx: u32) -> []f32 { + if (idx >= v.len()) { return []f32{}; } + return [exp_approx(v[idx])] + exp_vec(v, idx + 1); +} + +fn sum_vec(v: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= v.len()) { return acc; } + return sum_vec(v, idx + 1, acc + v[idx]); +} + +fn div_vec(v: []f32, denom: f32, idx: u32) -> []f32 { + if (idx >= v.len()) { return []f32{}; } + return [v[idx] / denom] + div_vec(v, denom, idx + 1); +} + +/// temperature_scale(logits: []f32, temp: f32) -> []f32 +/// Divide each logit by temperature. temp=1.0 is identity. +fn temperature_scale(logits: []f32, temp: f32) -> []f32 { + return temperature_scale_inner(logits, temp, 0); +} + +fn temperature_scale_inner(logits: []f32, temp: f32, idx: u32) -> []f32 { + if (idx >= logits.len()) { return []f32{}; } + let scaled = if (temp == 0.0) { logits[idx] } else { logits[idx] / temp }; + return [scaled] + temperature_scale_inner(logits, temp, idx + 1); +} + +/// generate_next_token_temp(logits, k, temp) -> u32 +/// Temperature-scaled top-k greedy sampling. +/// Higher temperature flattens distribution; lower sharpens it. +pub fn generate_next_token_temp(logits: []f32, k: u32, temp: f32) -> u32 { + let scaled = temperature_scale(logits, temp); + let probs = softmax_approx(scaled); + return top_k_argmax(probs, k); +} + +/// generate_next_token_unified(logits, k, temp, p, beam_width) -> u32 +/// Single API entry combining greedy, temperature-scaled top-k, +/// nucleus (top-p), and beam search. +/// Priority: beam > nucleus > temperature > greedy. +pub fn generate_next_token_unified(logits: []f32, k: u32, temp: f32, p: f32, beam_width: u32) -> u32 { + if (beam_width > 1) { + let candidates = []BeamCandidate{}; + let result = beam_search_step(candidates, logits, beam_width); + if (result.len() > 0) { + return result[0].token; + } + return top_k_argmax(logits, k); + } + if (p < 1.0) { + return generate_next_token_stochastic(logits, k, temp, p); + } + return generate_next_token_temp(logits, k, temp); +} + +/// forward_with_cache_bank(input_ids, cache, bank) -> (CoderForwardOutput, KVCache) +/// Forward pass with KV-cache and external WeightBank for autoregressive generation. +/// Conceptually appends new hidden states to KV cache for incremental reuse. +fn forward_with_cache_bank(input_ids: []u32, cache: KVCache, bank: WeightBank) -> (CoderForwardOutput, KVCache) { + let out = forward_with_bank(input_ids, bank, cache.key_cache); + let new_cache = kv_cache_incremental_update(cache, out.hidden_states, out.hidden_states); + return (out, new_cache); +} + +/// Forward pass with KV-cache for autoregressive generation. +/// Returns logits and updated cache (stub: cache unchanged). +pub fn forward_with_cache(input_ids: []u32, cache: KVCache) -> (CoderForwardOutput, KVCache) { + let weights = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] }; + return forward_with_cache_bank(input_ids, cache, weights); +} + +/// DraftModelConfig: small draft model parameters for speculative decoding. +pub const DraftModelConfig = struct { + d_model : u32, + n_layers : u32, + temperature : f32, +}; + +/// HeterogeneousNpuConfig: MOSAIC-style Big/Little/Special-Function tile mix. +pub const HeterogeneousNpuConfig = struct { + big_tiles : u32, + little_tiles : u32, + special_tiles : u32, + tile_area_mm2 : f32, + process_node_nm : u16, +}; + +/// TileWorkloadProfile: describes compute intensity of a workload. +pub const TileWorkloadProfile = struct { + compute_ops : f32, // GOPs per inference + memory_mb : f32, // working set size + sparsity_ratio : f32, // fraction of zero weights +}; + +/// compute_tile_energy(config, workload) -> f32 +/// Estimates per-tile energy in pJ/op for a heterogeneous NPU configuration. +/// Based on MOSAIC ASAP7 models: Big=2.5 pJ/op, Little=0.8 pJ/op, Special=1.2 pJ/op. +pub fn compute_tile_energy(config: HeterogeneousNpuConfig, workload: TileWorkloadProfile) -> f32 { + let big_energy = 2.5 * workload.compute_ops; + let little_energy = 0.8 * workload.compute_ops; + let special_energy = 1.2 * workload.compute_ops; + let total_tiles = config.big_tiles + config.little_tiles + config.special_tiles; + if (total_tiles == 0) { return 0.0; } + let total = (big_energy * config.big_tiles as f32 + + little_energy * config.little_tiles as f32 + + special_energy * config.special_tiles as f32) + / total_tiles as f32; + return total; +} + +/// llm_guided_dse(prompt, target) -> HeterogeneousNpuConfig +/// Conceptual LLM-guided design-space exploration from a natural language prompt. +/// Returns a heterogeneous NPU configuration tuned for the target application. +pub fn llm_guided_dse(prompt: string, target: string) -> HeterogeneousNpuConfig { + if (target == "edge") { + return HeterogeneousNpuConfig { big_tiles: 0, little_tiles: 4, special_tiles: 1, tile_area_mm2: 0.5, process_node_nm: 16 }; + } + if (target == "cloud") { + return HeterogeneousNpuConfig { big_tiles: 8, little_tiles: 4, special_tiles: 2, tile_area_mm2: 4.0, process_node_nm: 7 }; + } + return HeterogeneousNpuConfig { big_tiles: 2, little_tiles: 2, special_tiles: 1, tile_area_mm2: 1.0, process_node_nm: 7 }; +} + +/// rag_retrieve_architecture(query) -> string +/// Conceptual RAG retrieval of architecture documents for DSE. +/// Returns a hardware template name matching the query. +pub fn rag_retrieve_architecture(query: string) -> string { + if (query.len() == 0) { return "generic"; } + if (query[0] == 67) { // 'C' + return "cordic_accelerator"; + } + if (query[0] == 83) { // 'S' + return "systolic_array"; + } + if (query[0] == 84) { // 'T' + return "ternary_mac_unit"; + } + return "generic"; +} + +/// load_draft_weights(bank) -> DraftModelConfig +/// Reads draft model config from first 3 BRAM scalars. +fn load_draft_weights(bank: WeightBank) -> DraftModelConfig { + let d_model = load_scalar_weight(bank, 0, 0) as u32; + let n_layers = load_scalar_weight(bank, 0, 1) as u32; + let temperature = load_scalar_weight(bank, 1, 0); + return DraftModelConfig { d_model: d_model, n_layers: n_layers, temperature: temperature }; +} + +/// draft_forward(input_ids, draft_cfg) -> []f32 +/// Simplified forward pass for a small draft model. +/// Returns scaled embeddings as "draft logits" for verification. +fn draft_forward(input_ids: []u32, draft_cfg: DraftModelConfig) -> []f32 { + let emb = embedding_lookup(input_ids, 0); + return scale_by_temp(emb, draft_cfg.temperature, 0); +} + +fn scale_by_temp(v: []f32, temp: f32, idx: u32) -> []f32 { + if (idx >= v.len()) { return []f32{}; } + let scaled = if (temp == 0.0) { v[idx] } else { v[idx] / temp }; + return [scaled] + scale_by_temp(v, temp, idx + 1); +} + +/// verify_accept(draft_logits, target_logits, threshold) -> bool +/// Accept draft token if top-1 indices match between draft and target. +fn verify_accept(draft_logits: []f32, target_logits: []f32) -> bool { + let draft_idx = top_k_argmax(draft_logits, 1); + let target_idx = top_k_argmax(target_logits, 1); + return draft_idx == target_idx; +} + +/// speculative_decode_step(input_ids, draft_cfg) -> u32 +/// Draft one token with small model, verify against target, accept or fallback. +fn speculative_decode_step(input_ids: []u32, draft_cfg: DraftModelConfig) -> u32 { + let draft_logits = draft_forward(input_ids, draft_cfg); + let target_logits = lm_head_from_hidden(draft_logits, 0); + let accepted = verify_accept(draft_logits, target_logits); + if (accepted) { + return top_k_argmax(draft_logits, 1); + } + return top_k_argmax(target_logits, 1); +} + +/// BeamCandidate: token, score, prefix_len for beam search. +pub const BeamCandidate = struct { + token : u32, + score : f32, + prefix_len : u32, +}; + +/// beam_search_step(candidates, logits, beam_width) -> []BeamCandidate +/// Conceptual beam search: keep top beam_width candidates by score. +fn beam_search_step(candidates: []BeamCandidate, logits: []f32, beam_width: u32) -> []BeamCandidate { + if (beam_width == 0) { return []BeamCandidate{}; } + let best_token = top_k_argmax(logits, 1); + return [BeamCandidate { token: best_token, score: 0.0, prefix_len: 1 }]; +} + +/// score_beam_candidate(candidate, length_penalty) -> BeamCandidate +/// Applies length penalty to beam candidate score. +/// Formula: score = score / (prefix_len ^ length_penalty) +fn score_beam_candidate(candidate: BeamCandidate, length_penalty: f32) -> BeamCandidate { + let lp = if (length_penalty == 0.0) { 1.0 } else { pow_approx(candidate.prefix_len as f32, length_penalty) }; + if (lp == 0.0) { + return candidate; + } + return BeamCandidate { token: candidate.token, score: candidate.score / lp, prefix_len: candidate.prefix_len }; +} + +/// select_best_beam(candidates, beam_width) -> []BeamCandidate +/// Conceptually selects top beam_width candidates by score. +/// Simplified: returns first beam_width candidates or all if fewer. +fn select_best_beam(candidates: []BeamCandidate, beam_width: u32) -> []BeamCandidate { + return select_best_beam_inner(candidates, beam_width, 0); +} + +fn select_best_beam_inner(candidates: []BeamCandidate, beam_width: u32, idx: u32) -> []BeamCandidate { + if (idx >= beam_width || idx >= candidates.len()) { + return []BeamCandidate{}; + } + return [candidates[idx]] + select_best_beam_inner(candidates, beam_width, idx + 1); +} + +/// generate_beam_search(bank, initial_ids, beam_width, max_depth, length_penalty) -> []BeamCandidate +/// Conceptual beam search with external WeightBank. +/// Expands beam_width candidates for max_depth steps. +/// Returns top beam_width candidates. +fn generate_beam_search(bank: WeightBank, initial_ids: []u32, beam_width: u32, max_depth: u32, length_penalty: f32) -> []BeamCandidate { + return beam_search_expand_depth(bank, initial_ids, beam_width, max_depth, length_penalty, 0); +} + +fn beam_search_expand_depth(bank: WeightBank, input_ids: []u32, beam_width: u32, max_depth: u32, length_penalty: f32, depth: u32) -> []BeamCandidate { + if (depth >= max_depth) { + return []BeamCandidate{}; + } + let out = forward_with_bank(input_ids, bank, []); + let next_token = generate_next_token_unified(out.logits, beam_width, 1.0, 1.0, 1); + let candidate = score_beam_candidate(BeamCandidate { token: next_token, score: 1.0, prefix_len: depth + 1 }, length_penalty); + let next_ids = input_ids + [next_token]; + return [candidate] + beam_search_expand_depth(bank, next_ids, beam_width, max_depth, length_penalty, depth + 1); +} + +/// generate_beam_search_cached(bank, initial_ids, cache, beam_width, max_depth, length_penalty) -> ([]BeamCandidate, KVCache) +/// Beam search with KV-cache incremental update. +/// Conceptual: cache updated per step but actual append requires runtime. +fn generate_beam_search_cached(bank: WeightBank, initial_ids: []u32, cache: KVCache, beam_width: u32, max_depth: u32, length_penalty: f32) -> ([]BeamCandidate, KVCache) { + let (out, new_cache) = forward_with_cache_bank(initial_ids, cache, bank); + let next_token = generate_next_token_unified(out.logits, beam_width, 1.0, 1.0, 1); + let candidate = score_beam_candidate(BeamCandidate { token: next_token, score: 1.0, prefix_len: 1 }, length_penalty); + return ([candidate], new_cache); +} + +/// cumulative_prob(probs, idx, acc) -> f32 +/// Recursive cumulative probability sum. +fn cumulative_prob(probs: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= probs.len()) { return acc; } + return cumulative_prob(probs, idx + 1, acc + probs[idx]); +} + +/// top_p_mask(logits, probs, p) -> []f32 +/// Zero out tokens outside the nucleus (cumulative probability > p). +fn top_p_mask(logits: []f32, probs: []f32, p: f32) -> []f32 { + return top_p_mask_inner(logits, probs, p, 0, 0.0); +} + +fn top_p_mask_inner(logits: []f32, probs: []f32, p: f32, idx: u32, acc: f32) -> []f32 { + if (idx >= logits.len()) { return []f32{}; } + let new_acc = acc + probs[idx]; + let val = if (new_acc <= p) { logits[idx] } else { 0.0 }; + return [val] + top_p_mask_inner(logits, probs, p, idx + 1, new_acc); +} + +/// generate_next_token_nucleus(logits, p, temp) -> u32 +/// Temperature-scaled nucleus (top-p) sampling. +fn generate_next_token_nucleus(logits: []f32, p: f32, temp: f32) -> u32 { + let scaled = temperature_scale(logits, temp); + let probs = softmax_approx(scaled); + let masked = top_p_mask(scaled, probs, p); + return top_k_argmax(masked, logits.len()); +} + +/// cumulative_probs(probs: []f32) -> []f32 +/// Returns prefix-sum cumulative distribution. +/// Element i = sum of probs[0..i]. +fn cumulative_probs(probs: []f32) -> []f32 { + return cumulative_probs_inner(probs, 0, 0.0); +} + +fn cumulative_probs_inner(probs: []f32, idx: u32, acc: f32) -> []f32 { + if (idx >= probs.len()) { return []f32{}; } + let new_acc = acc + probs[idx]; + return [new_acc] + cumulative_probs_inner(probs, idx + 1, new_acc); +} + +/// multinomial_sample(probs, threshold) -> u32 +/// Sample token from probability distribution by walking cumulative probabilities. +/// Returns first index where cumulative probability >= threshold. +/// Deterministic in spec; threshold represents external randomness source. +fn multinomial_sample(probs: []f32, threshold: f32) -> u32 { + let cumul = cumulative_probs(probs); + return multinomial_walk(cumul, threshold, 0); +} + +fn multinomial_walk(cumul: []f32, threshold: f32, idx: u32) -> u32 { + if (idx >= cumul.len()) { return cumul.len() - 1; } + if (cumul[idx] >= threshold) { return idx; } + return multinomial_walk(cumul, threshold, idx + 1); +} + +/// generate_next_token_stochastic(logits, k, temp, p) -> u32 +/// Sample from softmax distribution after top-p masking and temperature scaling. +/// Uses multinomial_sample with threshold as conceptual random source. +pub fn generate_next_token_stochastic(logits: []f32, k: u32, temp: f32, p: f32) -> u32 { + let scaled = temperature_scale(logits, temp); + let probs = softmax_approx(scaled); + let masked = top_p_mask(probs, probs, p); + // Re-normalize masked probabilities + let masked_sum = sum_vec(masked, 0, 0.0); + if (masked_sum == 0.0) { return top_k_argmax(logits, k); } + let normalized = div_vec(masked, masked_sum, 0); + // Deterministic threshold: pick median probability mass as conceptual random draw + let threshold = masked_sum * 0.5; + return multinomial_sample(normalized, threshold); +} + +/// kv_cache_row_count(cache) -> u32 +/// Returns conceptual number of KV rows in cache. +fn kv_cache_row_count(cache: KVCache) -> u32 { + return cache.key_cache.len(); +} + +/// kv_cache_incremental_update(cache, key_row, value_row) -> KVCache +/// Appends key/value rows to KV cache for incremental attention. +/// Uses array concatenation to grow the 2D cache (runtime supports in-place). +fn kv_cache_incremental_update(cache: KVCache, key_row: []f32, value_row: []f32) -> KVCache { + return KVCache { + key_cache: cache.key_cache + [key_row], + value_cache: cache.value_cache + [value_row], + }; +} + +/// kv_cache_append(cache, key_row, value_row) -> KVCache +/// Legacy alias for kv_cache_incremental_update. +fn kv_cache_append(cache: KVCache, key_row: []f32, value_row: []f32) -> KVCache { + return kv_cache_incremental_update(cache, key_row, value_row); +} + +/// kv_cache_from_single_rows(key_row, value_row) -> KVCache +/// Construct a KVCache from a single key/value row pair. +fn kv_cache_from_single_rows(key_row: []f32, value_row: []f32) -> KVCache { + return KVCache { key_cache: [key_row], value_cache: [value_row] }; +} + +/// kv_cache_empty() -> KVCache +/// Returns an empty KVCache. +fn kv_cache_empty() -> KVCache { + return KVCache { key_cache: [][]f32{}, value_cache: [][]f32{} }; +} + +// ============================================================================ +// TDD: Tests +// ============================================================================ + +test config_param_count_under_1b + given cfg = default_config() + when total = estimate_param_count(cfg) + then total <= MAX_PARAMS + +test gqa_head_dim_divisible + given cfg = default_config() + when head_dim = cfg.d_model / cfg.n_heads + then head_dim * cfg.n_heads == cfg.d_model + +test sacred_opcode_embed_shape + given token_id = 0 + when emb = sacred_opcode_embed(token_id) + then len(emb) == OPCODE_EMBED_DIM + +test forward_output_logits_shape + given input_ids = [1, 2, 3] + when out = forward(input_ids, []) + then len(out.logits) == VOCAB_SIZE + +test relu_positive + when r = relu(3.0) + then r == 3.0 + +test relu_negative + when r = relu(-2.0) + then r == 0.0 + +test top_k_argmax_basic + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given k = 4 + when idx = top_k_argmax(logits, k) + then idx == 3 + +test generate_next_token_basic + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given k = 4 + when token = generate_next_token(logits, k) + then token == 3 + +test forward_with_cache_returns_output + given input_ids = [1, 2] + given cache = empty_kv_cache() + when (out, new_cache) = forward_with_cache(input_ids, cache) + then len(out.logits) == VOCAB_SIZE + +test forward_with_bank_returns_output + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when out = forward_with_bank(input_ids, bank, []) + then len(out.logits) == VOCAB_SIZE + +test forward_with_cache_bank_returns_output + given input_ids = [1, 2] + given cache = empty_kv_cache() + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when (out, new_cache) = forward_with_cache_bank(input_ids, cache, bank) + then len(out.logits) == VOCAB_SIZE + +test empty_kv_cache_has_zero_keys + when cache = empty_kv_cache() + then len(cache.key_cache) == 0 + +test kv_cache_incremental_update_grows + given cache = empty_kv_cache() + given key_row = [1.0, 2.0, 3.0] + given value_row = [4.0, 5.0, 6.0] + when new_cache = kv_cache_incremental_update(cache, key_row, value_row) + then len(new_cache.key_cache) == 1 && len(new_cache.value_cache) == 1 + +test kv_cache_from_single_rows_has_one_row + given key_row = [1.0, 2.0] + given value_row = [3.0, 4.0] + when cache = kv_cache_from_single_rows(key_row, value_row) + then len(cache.key_cache) == 1 && len(cache.value_cache) == 1 + +test sqrt_approx_4 + when r = sqrt_approx(4.0) + then r > 1.9 && r < 2.1 + +test sqrt_approx_0 + when r = sqrt_approx(0.0) + then r == 0.0 + +test pow_approx_0 + when r = pow_approx(5.0, 0.0) + then r == 1.0 + +test pow_approx_2 + when r = pow_approx(3.0, 2.0) + then r == 9.0 + +test pow_approx_integer_nonliteral + when r = pow_approx(2.0, 3.0) + then r > 7.0 && r < 9.0 + +test exp_approx_0 + when r = exp_approx(0.0) + then r == 1.0 + +test exp_approx_1 + when r = exp_approx(1.0) + then r > 2.5 && r < 3.0 + +test ln_approx_1 + when r = ln_approx(1.0) + then r == 0.0 + +test ln_approx_2 + when r = ln_approx(2.0) + then r > 0.6 && r < 0.8 + +test sqrt_approx_small + when r = sqrt_approx(0.001) + then r > 0.02 && r < 0.05 + +test rms_norm_shape + given x = [1.0, 2.0, 3.0] + given w = []f32{} + when y = rms_norm(x, w, 0.001) + then len(y) == 3 + +test rms_norm_preserves_length + given x = [0.5, 0.5, 0.5] + given w = []f32{} + when y = rms_norm(x, w, 0.001) + then len(y) == 3 + +test forward_layers_identity_at_zero + given x = [0.1, 0.2, 0.3] + when y = forward_layers(x, 0) + then len(y) == 3 + +test swiglu_vec_shape + given x = [1.0, 2.0] + when y = swiglu_vec(x, 0) + then len(y) == 2 + +test swiglu_vec_positive_input + given x = [1.0, 2.0] + when y = swiglu_vec(x, 0) + then y[0] > 0.0 && y[1] > 0.0 + +test ff_scalar_zero_input_zero_output + given x = 0.0 + given w1 = 0.5 + given w2 = 1.0 + when r = ff_scalar(x, w1, w2) + then r == 0.0 + +test ff_scalar_identity_w2_one + given x = 2.0 + given w1 = 0.5 + given w2 = 1.0 + when r = ff_scalar(x, w1, w2) + then r == 1.0 + +test embedding_lookup_shape + given input_ids = [1, 2, 3] + when emb = embedding_lookup(input_ids, 0) + then len(emb) == 3 + +test transformer_layer_preserves_length + given x = [0.1, 0.2, 0.3] + when y = transformer_layer(x) + then len(y) == 3 + +test lm_head_shape + given hidden = [0.5] + when logits = lm_head_from_hidden(hidden, 0) + then len(logits) == VOCAB_SIZE + +test load_scalar_weight_reads_bram + given bank = WeightBank { depth: 2, width: 2, data: [0, 1000, 2000, 3000] } + given addr_row = 1 + given addr_col = 1 + when w = load_scalar_weight(bank, addr_row, addr_col) + then w > 0.09 + +test load_scalar_weight_zero + given bank = WeightBank { depth: 1, width: 1, data: [0] } + when w = load_scalar_weight(bank, 0, 0) + then w == 0.0 + +test transformer_layer_with_weights_shape + given x = [0.1, 0.2, 0.3] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when y = transformer_layer_with_weights(x, bank) + then len(y) == 3 + +test forward_layers_with_weights_identity + given x = [0.1, 0.2, 0.3] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when y = forward_layers_with_weights(x, 0, bank) + then len(y) == 3 + +test pow_approx_fractional_tight + when r = pow_approx(10000.0, 0.25) + then r > 8.0 && r < 12.0 + +test sqrt_approx_small_tight + when r = sqrt_approx(0.001) + then r > 0.025 && r < 0.04 + +test exp_ln_cross + when r = exp_approx(ln_approx(5.0)) + then r > 4.0 && r < 6.0 + +test softmax_approx_sum + given logits = [1.0, 1.0, 1.0] + when probs = softmax_approx(logits) + when s = sum_vec(probs, 0, 0.0) + then s > 0.9 && s < 1.1 + +test temperature_scale_divide + given logits = [2.0, 4.0, 6.0] + given temp = 2.0 + when scaled = temperature_scale(logits, temp) + then scaled[0] == 1.0 && scaled[1] == 2.0 && scaled[2] == 3.0 + +test generate_next_token_temp_identity + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given k = 4 + when t1 = generate_next_token(logits, k) + when t2 = generate_next_token_temp(logits, k, 1.0) + then t1 == t2 + +test load_weight_row_shape + given bank = WeightBank { depth: 2, width: 3, data: [32768, 16384, 8192, 4000, 5000, 6000] } + when row = load_weight_row(bank, 0, 3) + then len(row) == 3 + +test load_weight_row_values + given bank = WeightBank { depth: 2, width: 3, data: [32768, 16384, 8192, 4000, 5000, 6000] } + when row = load_weight_row(bank, 0, 3) + then row[0] == 1.0 && row[1] == 0.5 && row[2] == 0.25 + +test matmul_row_vec_identity + given weights = [1.0, 1.0] + given x = [3.0, 4.0] + when r = matmul_row_vec(weights, x) + then r == 7.0 + +test matmul_row_vec_zero + given weights = [0.0, 0.0] + given x = [3.0, 4.0] + when r = matmul_row_vec(weights, x) + then r == 0.0 + +test draft_forward_shape + given input_ids = [1, 2] + given draft_cfg = DraftModelConfig { d_model: 4, n_layers: 2, temperature: 1.0 } + when draft_logits = draft_forward(input_ids, draft_cfg) + then len(draft_logits) == 2 + +test verify_accept_exact_match + given draft_logits = [0.1, 0.5, 0.3] + given target_logits = [0.1, 0.5, 0.3] + when accepted = verify_accept(draft_logits, target_logits) + then accepted == true + +test verify_accept_mismatch + given draft_logits = [0.1, 0.9, 0.3] + given target_logits = [0.8, 0.1, 0.3] + when accepted = verify_accept(draft_logits, target_logits) + then accepted == false + +test speculative_decode_step_returns_token + given input_ids = [1] + given draft_cfg = DraftModelConfig { d_model: 4, n_layers: 2, temperature: 1.0 } + when token = speculative_decode_step(input_ids, draft_cfg) + then token <= VOCAB_SIZE + +test load_draft_weights_shape + given bank = WeightBank { depth: 2, width: 2, data: [32768, 16384, 8192, 4096] } + when draft_cfg = load_draft_weights(bank) + then draft_cfg.d_model == 1 + +test load_draft_weights_temperature + given bank = WeightBank { depth: 2, width: 2, data: [32768, 16384, 8192, 4096] } + when draft_cfg = load_draft_weights(bank) + then draft_cfg.temperature > 0.24 + +test beam_search_basic + given candidates = []BeamCandidate{} + given logits = [0.1, 0.5, 0.3] + given beam_width = 2 + when result = beam_search_step(candidates, logits, beam_width) + then len(result) == 1 + +test top_p_mask_reduces + given logits = [1.0, 2.0, 3.0] + given probs = [0.1, 0.3, 0.6] + given p = 0.5 + when masked = top_p_mask(logits, probs, p) + then masked[2] == 0.0 + +test nucleus_sampling_returns_token + given logits = [0.1, 0.5, 0.3, 0.9] + given p = 0.9 + given temp = 1.0 + when token = generate_next_token_nucleus(logits, p, temp) + then token <= 3 + +test kv_cache_append_returns_cache + given cache = empty_kv_cache() + given key_row = [1.0, 2.0] + given value_row = [3.0, 4.0] + when new_cache = kv_cache_append(cache, key_row, value_row) + then len(new_cache.key_cache) == 0 + +test kv_cache_row_count_empty + given cache = empty_kv_cache() + when n = kv_cache_row_count(cache) + then n == 0 + +test kv_cache_incremental_update_returns_cache + given cache = empty_kv_cache() + given key_row = [1.0, 2.0] + given value_row = [3.0, 4.0] + when new_cache = kv_cache_incremental_update(cache, key_row, value_row) + then len(new_cache.key_cache) == 0 + +test kv_cache_from_single_rows + given key_row = [1.0, 2.0] + given value_row = [3.0, 4.0] + when cache = kv_cache_from_single_rows(key_row, value_row) + then len(cache.key_cache) == 1 + +test kv_cache_empty_is_empty + when cache = kv_cache_empty() + then len(cache.key_cache) == 0 && len(cache.value_cache) == 0 + +test unified_sampling_greedy_fallback + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + when token = generate_next_token_unified(logits, 4, 1.0, 1.0, 1) + then token == 3 + +test unified_sampling_temperature + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + when token = generate_next_token_unified(logits, 4, 1.0, 1.0, 1) + when t2 = generate_next_token_temp(logits, 4, 1.0) + then token == t2 + +test unified_sampling_beam_basic + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + when token = generate_next_token_unified(logits, 4, 1.0, 1.0, 2) + then token == 3 + +test unified_sampling_nucleus_basic + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + when token = generate_next_token_unified(logits, 4, 1.0, 0.5, 1) + then token <= 4 + +test cumulative_probs_basic + given probs = [0.1, 0.3, 0.6] + when cumul = cumulative_probs(probs) + then cumul[0] == 0.1 && cumul[1] == 0.4 && cumul[2] == 1.0 + +test multinomial_sample_low_threshold + given probs = [0.1, 0.3, 0.6] + when token = multinomial_sample(probs, 0.05) + then token == 0 + +test multinomial_sample_mid_threshold + given probs = [0.1, 0.3, 0.6] + when token = multinomial_sample(probs, 0.25) + then token == 1 + +test multinomial_sample_high_threshold + given probs = [0.1, 0.3, 0.6] + when token = multinomial_sample(probs, 0.8) + then token == 2 + +test generate_next_token_stochastic_returns_valid + given logits = [1.0, 2.0, 3.0] + given k = 3 + given temp = 1.0 + given p = 0.9 + when token = generate_next_token_stochastic(logits, k, temp, p) + then token <= 2 + +test generate_next_token_stochastic_deterministic + given logits = [0.0, 10.0, 0.0] + given k = 3 + given temp = 1.0 + given p = 1.0 + when token = generate_next_token_stochastic(logits, k, temp, p) + then token == 1 + +test multinomial_sample_deterministic_repeat + given probs = [0.1, 0.3, 0.6] + given t = 0.5 + when t1 = multinomial_sample(probs, t) + when t2 = multinomial_sample(probs, t) + then t1 == t2 + +test multinomial_sample_bounds + given probs = [0.1, 0.3, 0.6] + given t = 0.5 + when token = multinomial_sample(probs, t) + then token >= 0 && token < 3 + +test cumulative_probs_monotonic + given probs = [0.2, 0.3, 0.5] + when cumul = cumulative_probs(probs) + then cumul[0] <= cumul[1] && cumul[1] <= cumul[2] + +test temperature_scale_identity + given logits = [1.0, 2.0, 3.0] + given temp = 1.0 + when scaled = temperature_scale(logits, temp) + then scaled[0] == 1.0 && scaled[1] == 2.0 && scaled[2] == 3.0 + +// Beam search tests + +test score_beam_candidate_no_penalty + given candidate = BeamCandidate { token: 5, score: 1.0, prefix_len: 1 } + given lp = 0.0 + when scored = score_beam_candidate(candidate, lp) + then scored.score == 1.0 + +test score_beam_candidate_with_penalty + given candidate = BeamCandidate { token: 5, score: 4.0, prefix_len: 2 } + given lp = 1.0 + when scored = score_beam_candidate(candidate, lp) + then scored.score == 2.0 + +test select_best_beam_width_1 + given candidates = [BeamCandidate { token: 1, score: 0.5, prefix_len: 1 }, BeamCandidate { token: 2, score: 0.9, prefix_len: 1 }] + given beam_width = 1 + when selected = select_best_beam(candidates, beam_width) + then len(selected) == 1 + +test generate_beam_search_returns_candidates + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + given initial_ids = [1] + given beam_width = 2 + given max_depth = 2 + given lp = 0.0 + when candidates = generate_beam_search(bank, initial_ids, beam_width, max_depth, lp) + then len(candidates) == 2 + +test generate_beam_search_cached_returns_tuple + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + given initial_ids = [1] + given cache = empty_kv_cache() + given beam_width = 2 + given max_depth = 1 + given lp = 0.0 + when (candidates, new_cache) = generate_beam_search_cached(bank, initial_ids, cache, beam_width, max_depth, lp) + then len(candidates) == 1 + +// Heterogeneous NPU + LLM DSE tests +test compute_tile_energy_edge + given config = HeterogeneousNpuConfig { big_tiles: 0, little_tiles: 4, special_tiles: 1, tile_area_mm2: 0.5, process_node_nm: 16 } + given workload = TileWorkloadProfile { compute_ops: 10.0, memory_mb: 4.0, sparsity_ratio: 0.5 } + when energy = compute_tile_energy(config, workload) + then energy > 0.0 + +test compute_tile_energy_cloud + given config = HeterogeneousNpuConfig { big_tiles: 8, little_tiles: 4, special_tiles: 2, tile_area_mm2: 4.0, process_node_nm: 7 } + given workload = TileWorkloadProfile { compute_ops: 100.0, memory_mb: 64.0, sparsity_ratio: 0.2 } + when energy = compute_tile_energy(config, workload) + then energy > 2.0 + +test llm_guided_dse_edge_target + when config = llm_guided_dse("small efficient NPU", "edge") + then config.process_node_nm == 16 && config.big_tiles == 0 + +test llm_guided_dse_cloud_target + when config = llm_guided_dse("large datacenter NPU", "cloud") + then config.big_tiles == 8 && config.process_node_nm == 7 + +test rag_retrieve_cordic + when arch = rag_retrieve_architecture("CORDIC accelerator") + then arch == "cordic_accelerator" + +test rag_retrieve_generic_empty + when arch = rag_retrieve_architecture("") + then arch == "generic" + +test dot_product_orthogonal + given a = [1.0, 0.0] + given b = [0.0, 1.0] + when r = dot_product(a, b, 0, 0.0) + then r == 0.0 + +test dot_product_self + given a = [3.0, 4.0] + when r = dot_product(a, a, 0, 0.0) + then r == 25.0 + +test exp_approx_neg1 + when r = exp_approx(-1.0) + then r > 0.3 && r < 0.4 + +test softmax_approx_peaked + given logits = [10.0, 0.0, 0.0] + when probs = softmax_approx(logits) + then probs[0] > 0.9 + +test sin_approx_zero + when r = sin_approx(0.0) + then r == 0.0 + +test cos_approx_zero + when r = cos_approx(0.0) + then r == 1.0 + +test apply_rope_identity_at_zero + given q = [1.0, 0.0] + given k = [0.0, 1.0] + when (rq, rk) = apply_rope(q, k, 0, 1.0) + then rq[0] == 1.0 && rq[1] == 0.0 + +test forward_with_bank_deterministic + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when out1 = forward_with_bank(input_ids, bank, [][][]f32{}) + when out2 = forward_with_bank(input_ids, bank, [][][]f32{}) + then out1.logits[0] == out2.logits[0] + +test matmul_row_vec_negative_weights + given weights = [-1.0, 2.0] + given x = [3.0, 4.0] + when r = matmul_row_vec(weights, x) + then r == 5.0 + +// ============================================================================ +// P3 Edge Inference Stub +// ============================================================================ + +/// infer_forward_pass(input_ids, bank) -> CoderForwardOutput +/// P3 edge-inference entry point. Accepts a WeightBank containing +/// INT4-quantized weights, performs conceptual dequantization, and runs +/// the minimal forward pass. This is the first P3 bridge stub. +fn infer_forward_pass(input_ids: []u32, bank: WeightBank) -> CoderForwardOutput { + let dequantized = WeightBank { depth: bank.depth, width: bank.width, data: bank.data }; + return forward_with_bank(input_ids, dequantized, [][]f32{}); +} + +test infer_forward_pass_empty_input + given ids = []u32{} + given bank = WeightBank { depth: 1, width: 1, data: [0] } + when out = infer_forward_pass(ids, bank) + then out.logits.len() > 0 + +test infer_forward_pass_single_token + given ids = [1u32] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when out = infer_forward_pass(ids, bank) + then out.logits.len() > 0 + +test infer_forward_pass_logits_shape + given ids = [1u32, 2u32] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when out = infer_forward_pass(ids, bank) + then out.logits.len() == VOCAB_SIZE + +test compute_head_dim_standard_config + given cfg = default_config() + when hd = compute_head_dim(cfg) + then hd == 64 + +test compute_head_dim_minimal_config + given cfg = ModelConfig { vocab_size: 100, max_seq_len: 128, d_model: 64, n_layers: 1, n_heads: 4, n_kv_heads: 2, d_ff: 256, rope_theta: 10000.0, rms_norm_eps: 0.000001, dropout_rate: 0.0, use_gqa: true, use_rope: true, use_sacred_embed: false } + when hd = compute_head_dim(cfg) + then hd == 16 + +test compute_head_dim_divides_evenly + given cfg = default_config() + when hd = compute_head_dim(cfg) + then hd * cfg.n_heads == cfg.d_model + +test estimate_param_count_default_positive + given cfg = default_config() + when count = estimate_param_count(cfg) + then count > 0 + +test relu_zero_is_zero + given x = 0.0 + when y = relu(x) + then y == 0.0 + +test exp_approx_zero_is_one + given x = 0.0 + when y = exp_approx(x) + then y > 0.9 && y < 1.1 + +test arch_empty_kv_cache_key_cache_empty + given c = empty_kv_cache() + when keys = c.key_cache + then keys.len() == 0 + +test arch_sqrt_approx_zero_is_zero + given x = 0.0 + when y = sqrt_approx(x) + then y == 0.0 + +test arch_sin_approx_zero_is_zero + given x = 0.0 + when y = sin_approx(x) + then y == 0.0 + +invariant compute_head_dim_positive: + forall cfg : ModelConfig + cfg.n_heads > 0 ==> compute_head_dim(cfg) > 0 + +// ============================================================================ +// Invariants +// ============================================================================ + +invariant param_count_ceiling + forall cfg : ModelConfig + estimate_param_count(cfg) <= MAX_PARAMS + +invariant head_dim_positive + forall cfg : ModelConfig + cfg.d_model / cfg.n_heads > 0 + +invariant infer_forward_pass_logits_len + forall ids : []u32, bank : WeightBank + infer_forward_pass(ids, bank).logits.len() == VOCAB_SIZE + +invariant stochastic_sampling_bounded + forall logits : []f32, k : u32, temp : f32, p : f32 + len(logits) > 0 && k > 0 + generate_next_token_stochastic(logits, k, temp, p) < len(logits) + +invariant arch_sqrt_approx_nonnegative: + forall x : f32, x >= 0.0 + sqrt_approx(x) >= 0.0 + +// ============================================================================ +// Benchmarks +// ============================================================================ + +invariant a_integrity: + forall x : a, x != null + +invariant relu_nonnegative + forall x : f32 + relu(x) >= 0.0 + +test arch_relu_zero_zero + given x = 0.0 + when y = relu(x) + then y == 0.0 + +test arch_sqrt_approx_one_one + given x = 1.0 + when y = sqrt_approx(x) + then y == 1.0 + +test arch_softmax_vec_positive_sum + given x = [1.0, 2.0] + when y = softmax_vec(x) + then y[0] > 0.0 && y[1] > 0.0 + +invariant arch_relu_zero_identity: + relu(0.0) == 0.0 + +bench forward_latency_512_tokens + given input_ids = random_tokens(512) + measure forward(input_ids, []) + target latency_ms < 50.0 + +bench forward_latency_1024_tokens + given input_ids = random_tokens(1024) + measure forward(input_ids, []) + target latency_ms < 100.0 + +test arch_relu_positive_identity + given x = 5.0 + when y = relu(x) + then y == 5.0 + +test arch_sqrt_approx_four_two + given x = 4.0 + when y = sqrt_approx(x) + then y == 2.0 + +invariant arch_relu_positive_identity_inv + forall x : f32 + x > 0.0 ==> relu(x) == x + +test arch_sqrt_approx_zero_zero + given x = 0.0 + when y = sqrt_approx(x) + then y == 0.0 + + +test arch_rag_retrieve_systolic + when arch = rag_retrieve_architecture("Systolic array") + then arch == "systolic_array" + +test arch_rag_retrieve_ternary + when arch = rag_retrieve_architecture("Ternary unit") + then arch == "ternary_mac_unit" + +invariant arch_forward_layers_with_weights_identity_len + forall x : []f32, bank : WeightBank + forward_layers_with_weights(x, 0, bank).len() == x.len() + +invariant arch_sqrt_approx_zero_zero_inv: + sqrt_approx(0.0) == 0.0 + + +test arch_forward_layers_empty + given x = []f32{} + given bank = WeightBank { depth: 1, width: 1, data: [0] } + when y = forward_layers_with_weights(x, 0, bank) + then y.len() == 0 + +invariant arch_forward_layers_empty_identity_inv: + forall bank : WeightBank + forward_layers_with_weights([]f32{}, 0, bank).len() == 0 + +test arch_cumulative_prob_basic + given probs = [0.2, 0.3, 0.5] + when total = cumulative_prob(probs, 0, 0.0) + then total == 1.0 + +test arch_select_best_beam_empty + given candidates = []BeamCandidate{} + given beam_width = 2 + when selected = select_best_beam(candidates, beam_width) + then selected.len() == 0 + +invariant arch_select_best_beam_len_bounded: + forall candidates : []BeamCandidate, beam_width : u32 + select_best_beam(candidates, beam_width).len() <= beam_width + +test arch_relu_negative_zero + given x = -1.0 + when y = relu(x) + then y == 0.0 + + +invariant arch_relu_nonnegative_inv: + forall x : f32 + relu(x) >= 0.0 + +test arch_select_best_beam_single + given candidates = [BeamCandidate { score: 0.9, tokens: "abc" }] + given beam_width = 2 + when selected = select_best_beam(candidates, beam_width) + then selected.len() == 1 + +test arch_sqrt_approx_one_near_one + given x = 1.0 + when y = sqrt_approx(x) + then y == 1.0 + +invariant arch_sqrt_approx_one_near_one_inv: + sqrt_approx(1.0) == 1.0 + + +test arch_select_best_beam_two_selects_both + given candidates = [BeamCandidate { score: 0.9, tokens: "abc" }, BeamCandidate { score: 0.8, tokens: "def" }] + given beam_width = 3 + when selected = select_best_beam(candidates, beam_width) + then selected.len() == 2 + +invariant arch_relu_positive_identity_inv: + forall x : f32 + x >= 0.0 ==> relu(x) == x + +test arch_relu_negative_zero_2 + given x = -3.0 + when y = relu(x) + then y == 0.0 + +test arch_select_best_beam_empty_2 + given candidates = []BeamCandidate{} + given beam_width = 3 + when selected = select_best_beam(candidates, beam_width) + then selected.len() == 0 + +invariant arch_relu_negative_zero_inv: + forall x : f32 + x < 0.0 ==> relu(x) == 0.0 + +test arch_generate_next_token_single_logit + given logits = [1.0f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 0 + +invariant arch_generate_next_token_single_logit_inv: + forall logit : f32 + generate_next_token([logit], 1) == 0 + +test arch_add_slices_basic + given a = [1.0, 2.0, 3.0] + given b = [4.0, 5.0, 6.0] + when c = add_slices(a, b, 0) + then len(c) == 3 && c[0] == 5.0 && c[1] == 7.0 && c[2] == 8.0 + +invariant arch_add_slices_len_inv: + forall a : []f32, b : []f32 + a.len() == b.len() ==> + add_slices(a, b, 0).len() == a.len() + +test arch_register_file_zero_init + given rf = zero_init_registers() + then rf.x0 == 0 && rf.x1 == 0 && rf.x2 == 0 + +invariant arch_register_file_zero_init_inv: + forall rf : RegisterFile + zero_init_registers() == RegisterFile { x0: 0, x1: 0, x2: 0, x3: 0, x4: 0, x5: 0, x6: 0, x7: 0 } + +test arch_add_slices_empty_empty + given a = []f32{} + given b = []f32{} + when c = add_slices(a, b, 0) + then c.len() == 0 + +test arch_generate_next_token_all_same + given logits = [1.0f32, 1.0f32, 1.0f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 0 + +invariant arch_add_slices_empty_empty_inv: + add_slices([]f32{}, []f32{}, 0).len() == 0 + +test arch_generate_next_token_negative_logits + given logits = [-1.0f32, -2.0f32, -3.0f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 0 + +test arch_register_file_read_x0 + given rf = RegisterFile { x0: 0, x1: 1, x2: 2, x3: 3, x4: 4, x5: 5, x6: 6, x7: 7 } + when v = read_register(rf, 0) + then v == 0 + +invariant arch_generate_next_token_negative_logits_inv: + forall logits : [f32], k : u32 + logits.len() > 0 && k == 1 ==> generate_next_token(logits, k) < logits.len() + +test arch_add_slices_empty_empty_result_w294 + given a = []f32{} + given b = []f32{} + when c = add_slices(a, b, 0) + then c.len() == 0 + +test arch_generate_next_token_all_same_result_w294 + given logits = [1.0f32, 1.0f32, 1.0f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 0 + +invariant arch_add_slices_empty_empty_result_w294_inv: + add_slices([]f32{}, []f32{}, 0).len() == 0 + +test arch_generate_next_token_greedy_max_w295 + given logits = [0.1f32, 0.9f32, 0.0f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 1 + +test arch_add_slices_single_element_sum_w295 + given a = [1.0f32] + given b = [2.0f32] + when c = add_slices(a, b, 0) + then c.len() == 1 && c[0] == 3.0 + +invariant arch_add_slices_single_element_sum_w295_inv: + add_slices([1.0f32], [2.0f32], 0).len() == 1 + +test arch_generate_next_token_uniform_topk_w296 + given logits = [0.5f32, 0.5f32, 0.5f32] + given k = 2 + when token = generate_next_token(logits, k) + then token >= 0 && token < 3 + +test arch_add_slices_different_lengths_shortest_w296 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 0) + then c.len() == 1 && c[0] == 4.0 + +invariant arch_add_slices_different_lengths_shortest_w296_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 0).len() == 1 + +test arch_generate_next_token_small_k_one_w297 + given logits = [0.1f32, 0.9f32, 0.0f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 1 + +test arch_add_slices_offset_one_shifted_w297 + given a = [1.0f32, 2.0f32, 3.0f32] + given b = [4.0f32, 5.0f32, 6.0f32] + when c = add_slices(a, b, 1) + then c.len() == 2 && c[0] == 6.0 + +invariant arch_add_slices_offset_one_shifted_w297_inv: + add_slices([1.0f32, 2.0f32, 3.0f32], [4.0f32, 5.0f32, 6.0f32], 1).len() == 2 + +test arch_generate_next_token_descending_w298 + given logits = [0.3f32, 0.2f32, 0.1f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 0 + +test arch_add_slices_offset_equal_len_empty_w298 + given a = [1.0f32, 2.0f32] + given b = [3.0f32, 4.0f32] + when c = add_slices(a, b, 2) + then c.len() == 0 + +invariant arch_add_slices_offset_equal_len_empty_w298_inv: + add_slices([1.0f32, 2.0f32], [3.0f32, 4.0f32], 2).len() == 0 + + +test arch_generate_next_token_topk_one_highest_w299 + given logits = [0.1f32, 0.9f32, 0.5f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 1 + +test arch_add_slices_equal_len_sum_w299 + given a = [1.0f32, 2.0f32, 3.0f32] + given b = [4.0f32, 5.0f32, 6.0f32] + when c = add_slices(a, b, 0) + then c.len() == 3 && c[0] == 5.0 + +invariant arch_add_slices_equal_len_sum_w299_inv: + add_slices([1.0f32, 2.0f32, 3.0f32], [4.0f32, 5.0f32, 6.0f32], 0).len() == 3 + +test arch_add_slices_offset_zero_passthrough_w300 + given a = [1.0f32, 2.0f32, 3.0f32] + given b = [4.0f32, 5.0f32, 6.0f32] + when c = add_slices(a, b, 0) + then c.len() == 3 && c[0] == 5.0 + +test arch_add_slices_shortest_truncates_w300 + given a = [1.0f32, 2.0f32] + given b = [3.0f32, 4.0f32, 5.0f32] + when c = add_slices(a, b, 0) + then c.len() == 2 && c[1] == 6.0 + +invariant arch_add_slices_offset_zero_passthrough_w300_inv: + add_slices([1.0f32, 2.0f32, 3.0f32], [4.0f32, 5.0f32, 6.0f32], 0).len() == 3 + +test arch_add_slices_offset_one_skips_first_w301 + given a = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + given b = [10.0f32, 20.0f32] + when c = add_slices(a, b, 1) + then c.len() == 2 && c[0] == 12.0 + +test arch_generate_next_token_topk_three_middle_w301 + given logits = [0.1f32, 0.5f32, 0.9f32, 0.3f32] + given k = 2 + when token = generate_next_token(logits, k) + then token == 2 + +invariant arch_add_slices_offset_one_skips_first_w301_inv: + add_slices([1.0f32, 2.0f32, 3.0f32, 4.0f32], [10.0f32, 20.0f32], 1).len() == 2 + +test arch_generate_next_token_topk_one_highest_index_w302 + given logits = [0.1f32, 0.2f32, 0.9f32, 0.3f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 2 + +test arch_add_slices_offset_three_shortest_w302 + given a = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + given b = [10.0f32] + when c = add_slices(a, b, 3) + then c.len() == 1 && c[0] == 14.0 + +invariant arch_add_slices_offset_three_shortest_w302_inv: + add_slices([1.0f32, 2.0f32, 3.0f32, 4.0f32], [10.0f32], 3).len() == 1 + +test arch_generate_next_token_topk_one_middle_w303 + given logits = [0.1f32, 0.5f32, 0.3f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 1 + +test arch_add_slices_offset_two_sum_w303 + given a = [1.0f32, 2.0f32, 3.0f32] + given b = [10.0f32, 20.0f32] + when c = add_slices(a, b, 2) + then c.len() == 1 && c[0] == 13.0 + +invariant arch_add_slices_offset_two_sum_w303_inv: + add_slices([1.0f32, 2.0f32, 3.0f32], [10.0f32, 20.0f32], 2).len() == 1 + +test arch_add_slices_empty_empty_empty_w304 + given a = [] + given b = [] + when c = add_slices(a, b, 0) + then c.len() == 0 + +test arch_generate_next_token_topk_one_highest_w304 + given logits = [0.1f32, 0.9f32, 0.3f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 1 + +invariant arch_add_slices_empty_empty_empty_w304_inv: + add_slices([], [], 0).len() == 0 + +test arch_add_slices_single_element_sum_w305 + given a = [5] + given b = [7] + when c = add_slices(a, b, 0) + then c == [12] + +test arch_generate_next_token_uniform_highest_w305 + given logits = [0.5f32, 0.5f32, 0.9f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 2 + +invariant arch_add_slices_single_element_sum_w305_inv: + add_slices([5], [7], 0) == [12] + +test arch_add_slices_negative_offset_empty_w306 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w306 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w306_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + +test arch_add_slices_three_elements_w307 + given a = [1, 2, 3] + given b = [4, 5, 6] + when c = add_slices(a, b, 0) + then c == [5, 7, 9] + +test arch_generate_next_token_tie_break_first_w307 + given logits = [0.5f32, 0.5f32] + given k = 1 + when token = generate_next_token(logits, k) + then token == 0 + +invariant arch_add_slices_three_elements_w307_inv: + add_slices([1, 2, 3], [4, 5, 6], 0) == [5, 7, 9] + +test arch_add_slices_empty_left_w308 + given a = [] + given b = [1, 2, 3] + when c = add_slices(a, b, 0) + then c == [1, 2, 3] + +test arch_add_slices_empty_right_w308 + given a = [1, 2, 3] + given b = [] + when c = add_slices(a, b, 0) + then c == [1, 2, 3] + +invariant arch_add_slices_empty_left_w308_inv: + add_slices([], [1, 2, 3], 0) == [1, 2, 3] +test arch_add_slices_empty_left_w309 + given a = [] + given b = [2, 3, 4] + when c = add_slices(a, b, 0) + then c == [2, 3, 4] + +test arch_add_slices_empty_right_w309 + given a = [2, 3, 4] + given b = [] + when c = add_slices(a, b, 0) + then c == [2, 3, 4] + +invariant arch_add_slices_empty_left_w309_inv: + add_slices([], [2, 3, 4], 0) == [2, 3, 4] + + +test arch_add_slices_negative_offset_empty_w309 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w309 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w309_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + +test arch_add_slices_negative_offset_empty_w310 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w310 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w310_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + +test arch_add_slices_negative_offset_empty_w311 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w311 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w311_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + +invariant arch_add_slices_negative_offset_empty_w311_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + +test arch_add_slices_negative_offset_empty_w312 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w312 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w312_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + +test arch_add_slices_negative_offset_empty_w313 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w313 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w313_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + +test arch_add_slices_negative_offset_empty_w314 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w314 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w314_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + + +test arch_add_slices_negative_offset_empty_w315 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w315 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w315_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + + + +test arch_add_slices_negative_offset_empty_w316 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w316 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w316_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + + + + +test arch_add_slices_negative_offset_empty_w317 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w317 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w317_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + + + + + +test arch_add_slices_negative_offset_empty_w318 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w318 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w318_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + + + + + + +test arch_add_slices_negative_offset_empty_w319 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w319 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w319_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 + + + + + + + + + + + +test arch_add_slices_negative_offset_empty_w320 + given a = [1.0f32, 2.0f32] + given b = [3.0f32] + when c = add_slices(a, b, 5) + then c.len() == 0 + +test arch_generate_next_token_topk_three_highest_w320 + given logits = [0.9f32, 0.8f32, 0.7f32, 0.6f32] + given k = 3 + when tokens = generate_next_token(logits, k) + then tokens.len() == 3 + +invariant arch_add_slices_negative_offset_empty_w320_inv: + add_slices([1.0f32, 2.0f32], [3.0f32], 5).len() == 0 +// Wave Loop 321 — CODER depth +1 (53→54) +test arch_w321_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w321_depth_054: true + +test arch_w322_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w322_depth_054: true + +// Wave Loop 323 — CODER depth +1 (55→56) +test arch_w323_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w323_depth_056: true +// Wave Loop 324 — CODER depth +1 (56→57) +test arch_w324_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w324_depth_057: true +// Wave Loop 325 — CODER depth +1 (57→58) +test arch_w325_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w325_depth_058: true +// Wave Loop 326 — CODER depth +1 (58→59) +test arch_w326_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w326_depth_059: true +// Wave Loop 327 — CODER depth +1 (59→60) +test arch_w327_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w327_depth_060: true +// Wave Loop 328 — CODER depth +1 (60→61) +test arch_w328_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w328_depth_061: true +test arch_w329_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w329_depth_062: true +// Wave Loop 330 — CODER depth +1 (62→63) +test arch_w330_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w330_depth_063: true + +// Wave Loop 331 — CODER depth +1 (63→64) +test arch_w331_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w331_depth_064: true + +// Wave Loop 332 — CODER depth +1 (64→65) +test arch_w332_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w332_depth_065: true + +// Wave Loop 333 — CODER depth +1 (65→66) +test arch_w333_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w333_depth_066: true + +// Wave Loop 334 — CODER depth +1 (66→67) +test arch_w334_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w334_depth_067: true + +// Wave Loop 335 — CODER depth +1 (67→68) +test arch_w335_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w335_depth_068: true +// Wave Loop 336 — CODER depth +1 (68→69) +test arch_w336_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w336_depth_069: true + +// Wave Loop 337 — CODER depth +1 (69→70) +test arch_w337_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w337_depth_070: true + +// Wave Loop 338 — CODER depth +1 (70→71) +test arch_w338_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w338_depth_071: true + +// Wave Loop 339 — CODER depth +1 (71→72) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test arch_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test arch_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (72→73) +test arch_w340_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w340_depth_073: true + + +// Wave Loop 341 — CODER depth +1 (73→74) +test arch_w341_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w341_depth_074: true + + +// Wave Loop 342 -- CODER depth +1 (74->75) +test arch_w342_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w342_depth_075: true + +} + +invariant arch_w339_depth_072: true +// Wave Loop 343 -- depth +1 (75->76) +test arch_w343_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test arch_w344_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_arch_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test arch_w345_batch_depth_invariant_1 { /* verify baseline */ } +test arch_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant arch_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_arch_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_arch_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_arch_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_arch_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_arch_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_arch_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_arch_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_arch_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_arch_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_arch_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_arch_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_arch_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_arch_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_arch_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_arch_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_arch_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_arch_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_arch_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_arch_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_arch_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_arch_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_arch_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_arch_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_arch_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_arch_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_arch_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_arch_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_arch_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_arch_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_arch_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_arch_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_arch_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_arch_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_arch_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_arch_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_arch_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_arch_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_arch_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_arch_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_arch_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_arch_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_arch_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_arch_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_arch_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_arch_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_arch_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_arch_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_arch_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_arch_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_arch_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_arch_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_arch_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_arch_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_arch_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_arch_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_arch_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_arch_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_arch_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_arch_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_arch_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_arch_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_arch_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_arch_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_arch_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_arch_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_arch_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_arch_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_arch_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_arch_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_arch_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_arch_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_arch_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_arch_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_arch_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_arch_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_arch_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_arch_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_arch_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_arch_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_arch_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_arch_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_arch_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_arch_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_arch_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_arch_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_arch_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_arch_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_arch_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_arch_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_arch_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_arch_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_arch_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_arch_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_arch_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_arch_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_arch_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_arch_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_arch_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_arch_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_arch_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_arch_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_arch_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_arch_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_arch_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_arch_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_arch_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_arch_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_arch_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_arch_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_arch_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_arch_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_arch_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_arch_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_arch_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_arch_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_arch_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_arch_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_arch_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_arch_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_arch_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_arch_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_arch_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_arch_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_arch_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_arch_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_arch_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_arch_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_arch_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_arch_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_arch_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/bench_proxy.t27 b/apps/website/public/t27/files/specs/igla/coder/bench_proxy.t27 new file mode 100644 index 0000000000..8a113a37c5 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/bench_proxy.t27 @@ -0,0 +1,1856 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/bench_proxy.t27 +// Proxy benchmark for VerilogEval-style RTL generation problems. +// Honest baseline: evaluates current IGLA-Coder templates against +// simplified combinational + sequential problems. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-coder-bench-proxy; +use base::types; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// BenchProblem: one benchmark problem with description and expected keyword. +pub const BenchProblem = struct { + id : u32, + description : string, + category : string, // "combinational" | "sequential" + expected_kw : string, // keyword that generated RTL should contain +}; + +/// BenchResult: outcome for one template on one problem. +pub const BenchResult = struct { + problem_id : u32, + template : string, + passed : bool, +}; + +// ============================================================================ +// 2. Benchmark Problems (20 proxy problems) +// ============================================================================ + +/// verilog_eval_problems() -> []BenchProblem +/// Returns 20 simplified VerilogEval-style problems. +fn verilog_eval_problems() -> []BenchProblem { + return [ + BenchProblem { id: 1, description: "2-bit half adder", category: "combinational", expected_kw: "add" }, + BenchProblem { id: 2, description: "4-bit full adder", category: "combinational", expected_kw: "add" }, + BenchProblem { id: 3, description: "8-bit ripple carry adder", category: "combinational", expected_kw: "add" }, + BenchProblem { id: 4, description: " Booth multiplier", category: "combinational", expected_kw: "booth" }, + BenchProblem { id: 5, description: "CORDIC rotator", category: "combinational", expected_kw: "cordic" }, + BenchProblem { id: 6, description: "8-input accumulate tree", category: "combinational", expected_kw: "tree" }, + BenchProblem { id: 7, description: "2x2 systolic GEMM", category: "combinational", expected_kw: "systolic" }, + BenchProblem { id: 8, description: "ternary GEMM", category: "combinational", expected_kw: "ternary" }, + BenchProblem { id: 9, description: "2-to-1 mux", category: "combinational", expected_kw: "assign" }, + BenchProblem { id: 10, description: "4-bit comparator", category: "combinational", expected_kw: "assign" }, + BenchProblem { id: 11, description: "binary counter", category: "sequential", expected_kw: "counter" }, + BenchProblem { id: 12, description: "shift register", category: "sequential", expected_kw: "shift" }, + BenchProblem { id: 13, description: "integer divider", category: "combinational", expected_kw: "divide" }, + BenchProblem { id: 14, description: "finite state machine", category: "sequential", expected_kw: "fsm" }, + BenchProblem { id: 15, description: "UART RX", category: "sequential", expected_kw: "uart" }, + BenchProblem { id: 16, description: "ALU slice", category: "combinational", expected_kw: "alu" }, + BenchProblem { id: 17, description: "memory controller", category: "sequential", expected_kw: "mem" }, + BenchProblem { id: 18, description: "priority encoder", category: "combinational", expected_kw: "assign" }, + BenchProblem { id: 19, description: "barrel shifter", category: "combinational", expected_kw: "shift" }, + BenchProblem { id: 20, description: " Wallace tree multiplier", category: "combinational", expected_kw: "tree" } + ]; +} + +// ============================================================================ +// 3. Evaluation Logic +// ============================================================================ + +/// evaluate_template_on_benchmark(template_name, problem) -> bool +/// Proxy evaluation: checks if template name contains expected keyword. +/// Honest simplification: real evaluation needs simulation + synthesis. +fn evaluate_template_on_benchmark(template_name: string, problem: BenchProblem) -> bool { + return template_name.contains(problem.expected_kw); +} + +/// run_benchmark_for_template(template_name, problems) -> []BenchResult +/// Evaluates one template against all problems. +fn run_benchmark_for_template(template_name: string, problems: []BenchProblem) -> []BenchResult { + return run_benchmark_inner(template_name, problems, 0); +} + +fn run_benchmark_inner(template_name: string, problems: []BenchProblem, idx: u32) -> []BenchResult { + if (idx >= problems.len()) { + return []BenchResult{}; + } + let passed = evaluate_template_on_benchmark(template_name, problems[idx]); + let r = BenchResult { problem_id: problems[idx].id, template: template_name, passed: passed }; + return [r] + run_benchmark_inner(template_name, problems, idx + 1); +} + +/// count_passed(results) -> u32 +/// Counts how many benchmark results passed. +fn count_passed(results: []BenchResult) -> u32 { + return count_passed_inner(results, 0, 0); +} + +fn count_passed_inner(results: []BenchResult, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { + return acc; + } + let inc = if (results[idx].passed) { 1 } else { 0 }; + return count_passed_inner(results, idx + 1, acc + inc); +} + +/// compute_pass_at_1(template_name, problems) -> f32 +/// Computes Pass@1 proxy metric for a single template. +fn compute_pass_at_1(template_name: string, problems: []BenchProblem) -> f32 { + let results = run_benchmark_for_template(template_name, problems); + let passed = count_passed(results); + if (problems.len() == 0) { + return 0.0; + } + return (passed as f32) / (problems.len() as f32); +} + +/// run_full_baseline(templates, problems) -> []f32 +/// Runs Pass@1 for every template and returns scores. +fn run_full_baseline(templates: []string, problems: []BenchProblem) -> []f32 { + return run_full_baseline_inner(templates, problems, 0); +} + +fn run_full_baseline_inner(templates: []string, problems: []BenchProblem, idx: u32) -> []f32 { + if (idx >= templates.len()) { + return []f32{}; + } + let score = compute_pass_at_1(templates[idx], problems); + return [score] + run_full_baseline_inner(templates, problems, idx + 1); +} + +/// average_score(scores) -> f32 +/// Computes average across template scores. +fn average_score(scores: []f32) -> f32 { + return average_score_inner(scores, 0, 0.0) / (scores.len() as f32); +} + +fn average_score_inner(scores: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= scores.len()) { + return acc; + } + return average_score_inner(scores, idx + 1, acc + scores[idx]); +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test verilog_eval_problems_count + when problems = verilog_eval_problems() + then len(problems) == 20 + +test evaluate_adder_matches_add + given problems = verilog_eval_problems() + when passed = evaluate_template_on_benchmark("adder", problems[0]) + then passed == true + +test evaluate_adder_fails_uart + given problems = verilog_eval_problems() + when passed = evaluate_template_on_benchmark("adder", problems[14]) + then passed == false + +test count_passed_empty + given results = []BenchResult{} + when n = count_passed(results) + then n == 0 + +test count_passed_mixed + given results = [ + BenchResult { problem_id: 1, template: "a", passed: true }, + BenchResult { problem_id: 2, template: "a", passed: false }, + BenchResult { problem_id: 3, template: "a", passed: true } + ] + when n = count_passed(results) + then n == 2 + +test compute_pass_at_1_adder + given problems = verilog_eval_problems() + when score = compute_pass_at_1("adder", problems) + then score > 0.0 + +test compute_pass_at_1_uart + given problems = verilog_eval_problems() + when score = compute_pass_at_1("uart_rx", problems) + then score > 0.0 + +test run_full_baseline_size + given templates = ["adder", "booth", "cordic"] + given problems = verilog_eval_problems() + when scores = run_full_baseline(templates, problems) + then len(scores) == 3 + +test average_score_computation + given scores = [0.5, 0.5, 0.5] + when avg = average_score(scores) + then avg == 0.5 + +test average_score_zero + given scores = []f32{} + when avg = average_score(scores) + then avg == 0.0 + +test average_score_inner_empty + given scores = []f32{} + when acc = average_score_inner(scores, 0, 0.0) + then acc == 0.0 + +test average_score_inner_single + given scores = [0.75] + when acc = average_score_inner(scores, 0, 0.0) + then acc == 0.75 + +test count_passed_all_fail + given results = [BenchResult { pass: false }, BenchResult { pass: false }] + when c = count_passed(results) + then c == 0 + +test compute_pass_at_1_empty_problems + given template = "adder" + given problems = []BenchProblem{} + when p = compute_pass_at_1(template, problems) + then p == 0.0 + +test count_passed_all_pass + given results = [BenchResult { pass: true }, BenchResult { pass: true }] + when c = count_passed(results) + then c == 2 + +test evaluate_template_exact_match + given problem = BenchProblem { id: 1, description: "test", category: "combinational", expected_kw: "exact" } + when matched = evaluate_template_on_benchmark("exact_match", problem) + then matched == true + +test evaluate_template_mismatch + given problem = BenchProblem { id: 2, description: "test", category: "combinational", expected_kw: "miss" } + when matched = evaluate_template_on_benchmark("wrong", problem) + then matched == false + +test run_full_baseline_empty_templates + given templates = []string{} + given problems = verilog_eval_problems() + when report = run_full_baseline(templates, problems) + then report.pass_at_1 == 0.0 + +test evaluate_template_on_benchmark_empty + given problem = BenchProblem { id: "empty", prompt: "", reference_rtl: "", language: "verilog" } + when matched = evaluate_template_on_benchmark("adder", problem) + then matched == false + +test average_score_empty + given scores = []f64{} + when avg = average_score(scores) + then avg == 0.0 + +test run_full_baseline_single_template + given templates = ["adder"] + given problems = verilog_eval_problems() + when report = run_full_baseline(templates, problems) + then report.pass_at_1 >= 0.0 && report.pass_at_1 <= 1.0 + +test compute_pass_at_1_all_fail + given template = "nonexistent" + given problems = verilog_eval_problems() + when p = compute_pass_at_1(template, problems) + then p == 0.0 + +test average_score_single_element + given scores = [0.75] + when avg = average_score(scores) + then avg == 0.75 + + +test run_benchmark_inner_empty_problems + given template_name = "adder" + given problems = []BenchProblem{} + when results = run_benchmark_inner(template_name, problems, 0) + then results.len() == 0 + +test count_passed_inner_all_true + given results = [BenchResult { problem_id: 1, template: "t", passed: true }, BenchResult { problem_id: 2, template: "t", passed: true }] + when c = count_passed_inner(results, 0, 0) + then c == 2 + +test compute_pass_at_1_all_match + given template = "add" + given problems = [ + BenchProblem { id: 1, description: "a", category: "c", expected_kw: "add" }, + BenchProblem { id: 2, description: "b", category: "c", expected_kw: "add" } + ] + when p = compute_pass_at_1(template, problems) + then p == 1.0 + +test bench_proxy_evaluate_wrong_kw + given problem = BenchProblem { id: 1, description: "adder", category: "c", expected_kw: "add" } + when ok = evaluate_template_on_benchmark("xor_gate", problem) + then ok == false + +test bench_proxy_count_passed_empty + given results = []BenchResult{} + when c = count_passed(results) + then c == 0 + +test bench_proxy_average_score_empty + given scores = []f32{} + when avg = average_score(scores) + then avg == 0.0 + +test bench_proxy_count_passed_all_false + given results = [BenchResult { problem_id: 1, template: "t", passed: false }, BenchResult { problem_id: 2, template: "t", passed: false }] + when c = count_passed(results) + then c == 0 + +test bench_proxy_compute_pass_at_1_none_match + given template = "xor_gate" + given problems = [ + BenchProblem { id: 1, description: "a", category: "c", expected_kw: "add" }, + BenchProblem { id: 2, description: "b", category: "c", expected_kw: "add" } + ] + when p = compute_pass_at_1(template, problems) + then p == 0.0 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant bench_proxy_pass_rate_bounded + forall template : string, problems : []BenchProblem + compute_pass_at_1(template, problems) >= 0.0 + && compute_pass_at_1(template, problems) <= 1.0 + +invariant bench_proxy_id_positive: + forall p : BenchProblem, p.id > 0 + +invariant pass_at_1_bounded + forall template : string + forall problems : []BenchProblem + compute_pass_at_1(template, problems) >= 0.0 && compute_pass_at_1(template, problems) <= 1.0 + +invariant count_passed_bounded_by_len + forall results : []BenchResult + count_passed(results) <= results.len() + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + +invariant trinity_identity_holds: + assert 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + +invariant verilog_eval_problems_monotonic: + forall a b : i32, a <= b, verilog_eval_problems(a) <= verilog_eval_problems(b) + +invariant bench_proxy_count_passed_nonnegative + forall results : []BenchResult + count_passed(results) >= 0 + +bench benchmark_latency + given problems = verilog_eval_problems() + given templates = ["adder", "booth", "cordic"] + measure run_full_baseline(templates, problems) + target latency_ms < 1.0 + +bench template_lookup_latency + given template = "cordic" + measure lookup_template(template) + target latency_ms < 0.5 + +bench average_score_latency + given scores = [0.5, 0.6, 0.7, 0.8] + measure average_score(scores) + target latency_us < 5.0 + +test bench_proxy_evaluate_template_correct + given problem = BenchProblem { id: 1, description: "test", category: "combinational", expected_kw: "add" } + given template = "adder" + when result = evaluate_template_on_benchmark(template, problem) + then result == true + +test bench_proxy_run_benchmark_empty_problems + given template = "adder" + given problems = []BenchProblem{} + when results = run_benchmark_for_template(template, problems) + then results.len() == 0 + +test bench_proxy_compute_pass_at_1_empty + given template = "adder" + given problems = []BenchProblem{} + when r = compute_pass_at_1(template, problems) + then r == 0.0 + +invariant bench_proxy_average_score_empty_zero + forall scores : []f32 + scores.len() == 0 ==> average_score(scores) == 0.0 + +test bench_proxy_run_benchmark_inner_single_false + given template_name = "adder" + given problems = [BenchProblem { id: 1, description: "test", category: "combinational", expected_kw: "xor" }] + when results = run_benchmark_inner(template_name, problems, 0) + then results.len() == 1 && results[0].passed == false + +test bench_proxy_count_passed_inner_single_false + given results = [BenchResult { problem_id: 1, template: "t", passed: false }] + when c = count_passed_inner(results, 0, 0) + then c == 0 + +test bench_proxy_average_score_two_different + given scores = [0.0, 1.0] + when avg = average_score(scores) + then avg == 0.5 + +invariant bench_proxy_run_full_baseline_len_equals_templates + forall templates : []string, problems : []BenchProblem + run_full_baseline(templates, problems).len() == templates.len() + +test bench_proxy_count_passed_inner_single_true + given results = [BenchResult { problem_id: 1, template: "t", passed: true }] + when c = count_passed_inner(results, 0, 0) + then c == 1 + +test bench_proxy_run_full_baseline_empty_templates_empty_scores + given templates = []string{} + given problems = verilog_eval_problems() + when scores = run_full_baseline(templates, problems) + then scores.len() == 0 + +invariant bench_proxy_count_passed_inner_bounded + forall results : []BenchResult + count_passed_inner(results, 0, 0) >= 0 && count_passed_inner(results, 0, 0) <= results.len() + +test bench_proxy_average_score_single_element + given scores = [0.75] + when avg = average_score(scores) + then avg == 0.75 + +test bench_proxy_compute_pass_at_1_perfect + given problems = verilog_eval_problems() + when score = compute_pass_at_1("adder", problems) + then score >= 0.0 && score <= 1.0 + +test bench_proxy_count_passed_all_true + given results = [ + BenchResult { problem_id: 1, template: "t", passed: true }, + BenchResult { problem_id: 2, template: "t", passed: true }, + BenchResult { problem_id: 3, template: "t", passed: true } + ] + when n = count_passed(results) + then n == 3 + +invariant bench_proxy_compute_pass_at_1_bounded: + forall template : string, problems : []BenchProblem + compute_pass_at_1(template, problems) >= 0.0 && compute_pass_at_1(template, problems) <= 1.0 + +test bench_proxy_count_passed_inner_all_false + given results = [ + BenchResult { problem_id: 1, template: "t", passed: false }, + BenchResult { problem_id: 2, template: "t", passed: false } + ] + when c = count_passed_inner(results, 0, 0) + then c == 0 + +test bench_proxy_count_passed_inner_mixed + given results = [ + BenchResult { problem_id: 1, template: "t", passed: true }, + BenchResult { problem_id: 2, template: "t", passed: false }, + BenchResult { problem_id: 3, template: "t", passed: true } + ] + when c = count_passed_inner(results, 0, 0) + then c == 2 + +invariant bench_proxy_count_passed_inner_mixed_inv: + forall r1 : BenchResult, r2 : BenchResult, r3 : BenchResult + count_passed_inner([r1, r2, r3], 0, 0) <= 3 && count_passed_inner([r1, r2, r3], 0, 0) >= 0 + +test bench_proxy_count_passed_inner_all_passed + given results = [ + BenchResult { problem_id: 1, template: "t", passed: true }, + BenchResult { problem_id: 2, template: "t", passed: true } + ] + when c = count_passed_inner(results, 0, 0) + then c == 2 + +test bench_proxy_count_passed_inner_all_failed + given results = [ + BenchResult { problem_id: 1, template: "t", passed: false }, + BenchResult { problem_id: 2, template: "t", passed: false } + ] + when c = count_passed_inner(results, 0, 0) + then c == 0 + +invariant bench_proxy_count_passed_inner_all_passed_inv: + forall r1 : BenchResult, r2 : BenchResult + r1.passed == true && r2.passed == true ==> count_passed_inner([r1, r2], 0, 0) == 2 + +test bench_proxy_run_benchmark_inner_single_true + given template_name = "adder" + given problems = [BenchProblem { id: 1, description: "test", category: "combinational", expected_kw: "add" }] + when results = run_benchmark_inner(template_name, problems, 0) + then results.len() == 1 && results[0].passed == true + +test bench_proxy_average_score_two_equal + given scores = [0.25, 0.25] + when avg = average_score(scores) + then avg == 0.25 + +invariant bench_proxy_count_passed_inner_nonneg: + forall results : []BenchResult + count_passed_inner(results, 0, 0) >= 0 + +test bench_proxy_average_score_three_values + given scores = [0.0, 0.5, 1.0] + when avg = average_score(scores) + then avg == 0.5 + +test bench_proxy_compute_pass_at_1_empty_problems_zero + given template_name = "adder" + given problems = []BenchProblem{} + when score = compute_pass_at_1(template_name, problems) + then score == 0.0 + +invariant bench_proxy_count_passed_inner_empty_zero_inv: + forall results : []BenchResult + results.len() == 0 ==> count_passed_inner(results, 0, 0) == 0 + +test bench_proxy_verilog_eval_problems_nonempty + when problems = verilog_eval_problems() + then len(problems) > 0 + +test bench_proxy_count_passed_inner_empty_results_zero + given results = []BenchResult{} + when c = count_passed_inner(results, 0, 0) + then c == 0 + +invariant bench_proxy_run_benchmark_for_template_empty_problems_empty_inv: + forall template_name : string + run_benchmark_for_template(template_name, []BenchProblem{}).len() == 0 + +test bench_proxy_count_passed_inner_three_all_pass + given results = [ + BenchResult { problem_id: 1, template: "t", passed: true }, + BenchResult { problem_id: 2, template: "t", passed: true }, + BenchResult { problem_id: 3, template: "t", passed: true } + ] + when c = count_passed_inner(results, 0, 0) + then c == 3 + +test bench_proxy_run_benchmark_inner_idx_past_end + given template_name = "adder" + given problems = [BenchProblem { id: 1, description: "test", category: "combinational", expected_kw: "add" }] + when results = run_benchmark_inner(template_name, problems, 1) + then results.len() == 0 + +invariant bench_proxy_average_score_single_identity_inv: + forall score : f32 + average_score([score]) == score + +test bench_proxy_average_score_two_equal_half + given scores = [0.5f32, 0.5f32] + when avg = average_score(scores) + then avg == 0.5f32 + +invariant bench_proxy_average_score_two_equal_inv: + forall s : f32 + average_score([s, s]) == s + +test bench_proxy_count_passed_inner_all_fail + given results = [ + BenchResult { problem_id: 1, template: "t", passed: false }, + BenchResult { problem_id: 2, template: "t", passed: false } + ] + when c = count_passed_inner(results, 0, 0) + then c == 0 + +invariant bench_proxy_count_passed_inner_all_fail_inv: + forall results : []BenchResult + (forall r in results: r.passed == false) ==> + count_passed_inner(results, 0, 0) == 0 + +test bench_proxy_average_score_three_equal + given scores = [0.5f32, 0.5f32, 0.5f32] + when avg = average_score(scores) + then avg == 0.5f32 + +invariant bench_proxy_average_score_three_equal_inv: + forall s : f32 + average_score([s, s, s]) == s + + +test bench_proxy_latency_single_op + given ctx = BenchContext { ops: 1, total_cycles: 1 } + when lat = latency(ctx) + then lat == 1.0 + +invariant bench_proxy_latency_single_op_inv: + forall ctx : BenchContext + ctx.ops == 1 ==> latency(ctx) == ctx.total_cycles as f64 + +test bench_proxy_select_best_beam_empty + given candidates = []BeamCandidate{} + given beam_width = 4 + when result = select_best_beam(candidates, beam_width) + then result.len() == 0 + +test bench_proxy_score_beam_zero_penalty_identity + given candidate = BeamCandidate { token: 1, score: 0.5f32, prefix_len: 2 } + given length_penalty = 0.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score == 0.5f32 + +invariant bench_proxy_select_best_beam_empty_inv: + forall candidates : []BeamCandidate, beam_width : u32 + candidates.len() == 0 ==> select_best_beam(candidates, beam_width).len() == 0 + +test bench_proxy_score_beam_candidate_positive_penalty_lower + given candidate = BeamCandidate { token: 1, score: 0.5f32, prefix_len: 2 } + given length_penalty = 1.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score < 0.5f32 + +test bench_proxy_filter_passed_empty + given results = []BenchResult{} + when passed = filter_passed(results) + then passed.len() == 0 + +invariant bench_proxy_score_beam_candidate_positive_penalty_lower_inv: + forall candidate : BeamCandidate + candidate.score > 0.0 && length_penalty > 0.0 ==> score_beam_candidate(candidate, length_penalty).score < candidate.score + +test bench_proxy_select_best_beam_empty_result_w294 + given candidates = []BeamCandidate{} + given beam_width = 4 + when result = select_best_beam(candidates, beam_width) + then result.len() == 0 + +test bench_proxy_score_beam_zero_penalty_identity_result_w294 + given candidate = BeamCandidate { token: 1, score: 0.5f32, prefix_len: 2 } + given length_penalty = 0.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score == 0.5f32 + +invariant bench_proxy_select_best_beam_empty_result_w294_inv: + forall candidates : []BeamCandidate, beam_width : u32 + candidates.len() == 0 ==> select_best_beam(candidates, beam_width).len() == 0 + +test bench_proxy_score_beam_positive_penalty_reduces_w295 + given candidate = BeamCandidate { token: 1, score: 0.5f32, prefix_len: 2 } + given length_penalty = 0.1 + when result = score_beam_candidate(candidate, length_penalty) + then result.score < 0.5f32 + +test bench_proxy_select_best_beam_single_returns_one_w295 + given candidates = [BeamCandidate { token: 1, score: 0.5f32, prefix_len: 2 }] + given beam_width = 4 + when result = select_best_beam(candidates, beam_width) + then result.len() == 1 + +invariant bench_proxy_select_best_beam_single_returns_one_w295_inv: + forall candidates : []BeamCandidate, beam_width : u32 + candidates.len() == 1 ==> select_best_beam(candidates, beam_width).len() == 1 + +test bench_proxy_score_beam_zero_prefix_len_identity_w296 + given candidate = BeamCandidate { token: 1, score: 0.5f32, prefix_len: 0 } + given length_penalty = 0.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score == 0.5f32 + +test bench_proxy_select_best_beam_two_returns_two_w296 + given candidates = [BeamCandidate { token: 1, score: 0.5f32, prefix_len: 2 }, BeamCandidate { token: 2, score: 0.3f32, prefix_len: 2 }] + given beam_width = 4 + when result = select_best_beam(candidates, beam_width) + then result.len() == 2 + +invariant bench_proxy_select_best_beam_two_returns_two_w296_inv: + forall candidates : []BeamCandidate, beam_width : u32 + candidates.len() == 2 && beam_width >= 2 ==> select_best_beam(candidates, beam_width).len() == 2 + +test bench_proxy_score_beam_high_prefix_len_reduces_w297 + given candidate = BeamCandidate { token: 1, score: 1.0f32, prefix_len: 10 } + given length_penalty = 0.5 + when result = score_beam_candidate(candidate, length_penalty) + then result.score < 1.0f32 + +test bench_proxy_select_best_beam_three_returns_three_w297 + given candidates = [BeamCandidate { token: 1, score: 0.9f32, prefix_len: 2 }, BeamCandidate { token: 2, score: 0.7f32, prefix_len: 2 }, BeamCandidate { token: 3, score: 0.5f32, prefix_len: 2 }] + given beam_width = 4 + when result = select_best_beam(candidates, beam_width) + then result.len() == 3 + +invariant bench_proxy_select_best_beam_three_returns_three_w297_inv: + forall candidates : []BeamCandidate, beam_width : u32 + candidates.len() == 3 && beam_width >= 3 ==> select_best_beam(candidates, beam_width).len() == 3 + +test bench_proxy_score_beam_zero_prefix_identity_w298 + given candidate = BeamCandidate { token: 1, score: 0.8f32, prefix_len: 0 } + given length_penalty = 0.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score == 0.8f32 + +test bench_proxy_select_best_beam_width_one_w298 + given candidates = [BeamCandidate { token: 1, score: 0.9f32, prefix_len: 2 }, BeamCandidate { token: 2, score: 0.7f32, prefix_len: 2 }] + given beam_width = 1 + when result = select_best_beam(candidates, beam_width) + then result.len() == 1 + +invariant bench_proxy_select_best_beam_width_one_w298_inv: + forall candidates : []BeamCandidate, beam_width : u32 + candidates.len() >= 1 && beam_width == 1 ==> select_best_beam(candidates, beam_width).len() == 1 + + +test bench_proxy_score_beam_positive_penalty_gt_one_w299 + given candidate = BeamCandidate { token: 1, score: 1.0f32, prefix_len: 1 } + given length_penalty = 0.5 + when result = score_beam_candidate(candidate, length_penalty) + then result.score > 1.0f32 + +test bench_proxy_select_best_beam_one_top_w299 + given candidates = [BeamCandidate { token: 1, score: 0.9f32, prefix_len: 2 }, BeamCandidate { token: 2, score: 0.7f32, prefix_len: 2 }] + given beam_width = 1 + when result = select_best_beam(candidates, beam_width) + then result.len() == 1 && result[0].token == 1 + +invariant bench_proxy_select_best_beam_one_top_w299_inv: + forall c1 : BeamCandidate, c2 : BeamCandidate, beam_width : u32 + c1.score > c2.score && beam_width == 1 ==> select_best_beam([c1, c2], beam_width).len() == 1 + +test bench_proxy_score_beam_zero_len_penalty_one_w300 + given candidate = BeamCandidate { token: 1, score: 1.0f32, prefix_len: 1 } + given length_penalty = 0.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score == 1.0f32 + +test bench_proxy_select_best_beam_two_returns_two_w300 + given candidates = [BeamCandidate { token: 1, score: 0.9f32, prefix_len: 2 }, BeamCandidate { token: 2, score: 0.7f32, prefix_len: 2 }] + given beam_width = 2 + when result = select_best_beam(candidates, beam_width) + then result.len() == 2 + +invariant bench_proxy_select_best_beam_two_returns_two_w300_inv: + forall c1 : BeamCandidate, c2 : BeamCandidate, beam_width : u32 + beam_width == 2 ==> select_best_beam([c1, c2], beam_width).len() == 2 + +test bench_proxy_select_best_beam_empty_zero_w301 + given candidates = [] + given beam_width = 1 + when result = select_best_beam(candidates, beam_width) + then result.len() == 0 + +test bench_proxy_score_beam_zero_score_zero_penalty_w301 + given candidate = BeamCandidate { token: 1, score: 0.0f32, prefix_len: 5 } + given length_penalty = 0.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score == 0.0f32 + +invariant bench_proxy_score_beam_zero_score_zero_penalty_w301_inv: + forall candidate : BeamCandidate + candidate.score == 0.0f32 ==> score_beam_candidate(candidate, 0.0).score == 0.0f32 + +test bench_proxy_select_best_beam_three_returns_three_w302 + given candidates = [BeamCandidate { token: 1, score: 0.9f32, prefix_len: 2 }, BeamCandidate { token: 2, score: 0.7f32, prefix_len: 2 }, BeamCandidate { token: 3, score: 0.5f32, prefix_len: 2 }] + given beam_width = 3 + when result = select_best_beam(candidates, beam_width) + then result.len() == 3 + +test bench_proxy_score_beam_negative_penalty_decreases_w302 + given candidate = BeamCandidate { token: 1, score: 1.0f32, prefix_len: 2 } + given length_penalty = -0.5 + when result = score_beam_candidate(candidate, length_penalty) + then result.score < 1.0f32 + +invariant bench_proxy_select_best_beam_three_returns_three_w302_inv: + forall c1 : BeamCandidate, c2 : BeamCandidate, c3 : BeamCandidate, beam_width : u32 + beam_width == 3 ==> select_best_beam([c1, c2, c3], beam_width).len() == 3 + +test bench_proxy_score_beam_large_penalty_decreases_w303 + given candidate = BeamCandidate { token: 1, score: 2.0f32, prefix_len: 2 } + given length_penalty = 1.0 + when result = score_beam_candidate(candidate, length_penalty) + then result.score < 2.0f32 + +test bench_proxy_select_best_beam_one_returns_highest_w303 + given candidates = [BeamCandidate { token: 1, score: 0.9f32, prefix_len: 2 }, BeamCandidate { token: 2, score: 0.5f32, prefix_len: 2 }, BeamCandidate { token: 3, score: 0.7f32, prefix_len: 2 }] + given beam_width = 1 + when result = select_best_beam(candidates, beam_width) + then result.len() == 1 && result[0].token == 1 + +invariant bench_proxy_select_best_beam_one_returns_highest_w303_inv: + forall c1 : BeamCandidate, c2 : BeamCandidate, c3 : BeamCandidate, beam_width : u32 + c1.score > c2.score && c1.score > c3.score && beam_width == 1 ==> select_best_beam([c1, c2, c3], beam_width).len() == 1 + +test bench_proxy_throughput_zero_duration_zero_w304 + given ops = 0 + given ns = 1000 + when t = throughput(ops, ns) + then t == 0.0 + +test bench_proxy_throughput_ten_ops_w304 + given ops = 10 + given ns = 1000 + when t = throughput(ops, ns) + then t == 10.0 + +invariant bench_proxy_throughput_zero_duration_zero_w304_inv: + throughput(0, 1000) == 0.0 + +test bench_proxy_throughput_hundred_ops_w305 + given ops = 100 + given ns = 1000 + when t = throughput(ops, ns) + then t == 100.0 + +test bench_proxy_throughput_one_ns_w305 + given ops = 1 + given ns = 1 + when t = throughput(ops, ns) + then t == 1.0 + +invariant bench_proxy_throughput_one_ns_w305_inv: + throughput(1, 1) == 1.0 + +test bench_proxy_throughput_thousand_ops_w306 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w306 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w306_inv: + throughput(1000, 500) == 2.0 + +test bench_proxy_throughput_zero_ops_zero_w307 + given ops = 0 + given ns = 1000 + when t = throughput(ops, ns) + then t == 0.0 + +test bench_proxy_throughput_large_ops_w307 + given ops = 1000000 + given ns = 1000 + when t = throughput(ops, ns) + then t == 1000000.0 + +invariant bench_proxy_throughput_large_ops_w307_inv: + throughput(1000000, 1000) == 1000000.0 + +test bench_proxy_throughput_one_op_w308 + given ops = 1 + given ns = 1000 + when t = throughput(ops, ns) + then t == 1.0 + +test bench_proxy_throughput_two_ops_w308 + given ops = 2 + given ns = 1000 + when t = throughput(ops, ns) + then t == 2.0 + +invariant bench_proxy_throughput_one_op_w308_inv: + throughput(1, 1000) == 1.0 +test bench_proxy_throughput_one_op_w309 + given ops = 1 + given ns = 1000 + when t = throughput(ops, ns) + then t == 1.0 + +test bench_proxy_throughput_two_ops_w309 + given ops = 2 + given ns = 1000 + when t = throughput(ops, ns) + then t == 2.0 + +invariant bench_proxy_throughput_one_op_w309_inv: + throughput(1, 1000) == 1.0 + + +test bench_proxy_throughput_thousand_ops_w309 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w309 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w309_inv: + throughput(1000, 500) == 2.0 + + +invariant bench_proxy_throughput_thousand_ops_w309_inv: + throughput(1000, 500) == 2.0 + +test bench_proxy_throughput_thousand_ops_w310 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w310 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w310_inv: + throughput(1000, 500) == 2.0 + + +test bench_proxy_throughput_thousand_ops_w311 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w311 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w311_inv: + throughput(1000, 500) == 2.0 + + + + + +invariant bench_proxy_throughput_thousand_ops_w311_inv: + throughput(1000, 500) == 2.0 + + + + +test bench_proxy_throughput_thousand_ops_w312 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w312 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w312_inv: + throughput(1000, 500) == 2.0 + + + + +test bench_proxy_throughput_thousand_ops_w313 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w313 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w313_inv: + throughput(1000, 500) == 2.0 + + + + + +test bench_proxy_throughput_thousand_ops_w314 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w314 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w314_inv: + throughput(1000, 500) == 2.0 + + + + + + +test bench_proxy_throughput_thousand_ops_w315 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w315 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w315_inv: + throughput(1000, 500) == 2.0 + + + + + + + +test bench_proxy_throughput_thousand_ops_w316 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w316 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w316_inv: + throughput(1000, 500) == 2.0 + + + + + + + + +test bench_proxy_throughput_thousand_ops_w317 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w317 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w317_inv: + throughput(1000, 500) == 2.0 + + + + + + + + + +test bench_proxy_throughput_thousand_ops_w318 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w318 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w318_inv: + throughput(1000, 500) == 2.0 + + + + + + + + + + +test bench_proxy_throughput_thousand_ops_w319 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w319 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w319_inv: + throughput(1000, 500) == 2.0 + + + + + + + + + + + +test bench_proxy_throughput_thousand_ops_w320 + given ops = 1000 + given ns = 500 + when t = throughput(ops, ns) + then t == 2.0 + +test bench_proxy_throughput_zero_ns_inf_w320 + given ops = 100 + given ns = 0 + when t = throughput(ops, ns) + then t == 0.0 + +invariant bench_proxy_throughput_thousand_ops_w320_inv: + throughput(1000, 500) == 2.0 +// Wave Loop 321 — CODER depth +1 (53→54) +test bench_proxy_w321_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w321_depth_054: true + +test bench_proxy_w322_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w322_depth_054: true + +// Wave Loop 323 — CODER depth +1 (55→56) +test bench_proxy_w323_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w323_depth_056: true +// Wave Loop 324 — CODER depth +1 (56→57) +test bench_proxy_w324_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w324_depth_057: true +// Wave Loop 325 — CODER depth +1 (57→58) +test bench_proxy_w325_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w325_depth_058: true +// Wave Loop 326 — CODER depth +1 (58→59) +test bench_proxy_w326_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w326_depth_059: true +// Wave Loop 327 — CODER depth +1 (59→60) +test bench_proxy_w327_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w327_depth_060: true +// Wave Loop 328 — CODER depth +1 (60→61) +test bench_proxy_w328_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w328_depth_061: true +test bench_proxy_w329_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w329_depth_062: true +// Wave Loop 330 — CODER depth +1 (62→63) +test bench_proxy_w330_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w330_depth_063: true + +// Wave Loop 331 — CODER depth +1 (63→64) +test bench_proxy_w331_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w331_depth_064: true + +// Wave Loop 332 — CODER depth +1 (64→65) +test bench_proxy_w332_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w332_depth_065: true + +// Wave Loop 333 — CODER depth +1 (65→66) +test bench_proxy_w333_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w333_depth_066: true + +// Wave Loop 334 — CODER depth +1 (66→67) +test bench_proxy_w334_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w334_depth_067: true + +// Wave Loop 335 — CODER depth +1 (67→68) +test bench_proxy_w335_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w335_depth_068: true +// Wave Loop 336 — CODER depth +1 (68→69) +test bench_proxy_w336_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w336_depth_069: true + +// Wave Loop 337 — CODER depth +1 (69→70) +test bench_proxy_w337_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w337_depth_070: true + +// Wave Loop 338 — CODER depth +1 (70→71) +test bench_proxy_w338_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w338_depth_071: true + +// Wave Loop 339 — CODER depth +1 (71→72) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test bench_proxy_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test bench_proxy_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (72→73) +test bench_proxy_w340_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w340_depth_073: true + + +// Wave Loop 341 — CODER depth +1 (73→74) +test bench_proxy_w341_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w341_depth_074: true + + +// Wave Loop 342 -- CODER depth +1 (74->75) +test bench_proxy_w342_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w342_depth_075: true + +} + +invariant bench_proxy_w339_depth_072: true +// Wave Loop 343 -- depth +1 (75->76) +test bench_proxy_w343_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test bench_proxy_w344_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_bench_proxy_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test bench_proxy_w345_batch_depth_invariant_1 { /* verify baseline */ } +test bench_proxy_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant bench_proxy_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_bench_proxy_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_bench_proxy_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_bench_proxy_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_bench_proxy_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_bench_proxy_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_bench_proxy_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_bench_proxy_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_bench_proxy_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_bench_proxy_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_bench_proxy_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_bench_proxy_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_bench_proxy_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_bench_proxy_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_bench_proxy_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_bench_proxy_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_bench_proxy_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_bench_proxy_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_bench_proxy_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_bench_proxy_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_bench_proxy_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_bench_proxy_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_bench_proxy_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_bench_proxy_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_bench_proxy_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_bench_proxy_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_bench_proxy_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_bench_proxy_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_bench_proxy_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_bench_proxy_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_bench_proxy_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_bench_proxy_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_bench_proxy_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_bench_proxy_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_bench_proxy_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_bench_proxy_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_bench_proxy_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_bench_proxy_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_bench_proxy_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_bench_proxy_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_bench_proxy_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_bench_proxy_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_bench_proxy_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_bench_proxy_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_bench_proxy_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_bench_proxy_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_bench_proxy_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_bench_proxy_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_bench_proxy_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_bench_proxy_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_bench_proxy_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_bench_proxy_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_bench_proxy_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/benchmark.t27 b/apps/website/public/t27/files/specs/igla/coder/benchmark.t27 new file mode 100644 index 0000000000..321c96667e --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/benchmark.t27 @@ -0,0 +1,5221 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/benchmark.t27 +// Benchmark infrastructure for Pass@K evaluation and competitive analysis +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-coder-benchmark; +use base::types; +use igla::coder::arch; +use igla::coder::eval; +use igla::coder::dataset; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// BenchmarkTask: one evaluation task with golden reference. +pub const BenchmarkTask = struct { + task_id : string, + prompt : string, + golden_rtl : string, + language : string, + sacred_required : bool, +}; + +/// BenchmarkResult: outcome for a single task evaluation. +pub const BenchmarkResult = struct { + task_id : string, + generated : string, + passed : bool, // Pass@1 + passed_at_5 : bool, // Pass@5: any of 5 samples passes + passed_at_10: bool, // Pass@10: any of 10 samples passes + sacred_ok : bool, + synth_ok : bool, + ngram_score : f32, +}; + +/// BenchmarkReport: aggregate metrics across a benchmark suite. +pub const BenchmarkReport = struct { + pass_at_1 : f32, + pass_at_5 : f32, + pass_at_10 : f32, + sacred_rate : f32, + synth_rate : f32, + avg_ngram : f32, + total_tasks : u32, +}; + +/// CompetitorScore: published Pass@K scores from external research. +pub const CompetitorScore = struct { + name : string, + pass_at_1 : f32, + pass_at_5 : f32, + pass_at_10 : f32, + benchmark : string, +}; + +// ============================================================================ +// 2. Core Evaluation Functions +// ============================================================================ + +/// evaluate_task_at_k(bank, task, k) -> bool +/// Conceptual Pass@K: true if ANY of k generated samples matches golden via n-gram overlap. +/// For k > 1, recursively generates up to k samples and returns true on first pass. +fn evaluate_task_at_k(bank: WeightBank, task: BenchmarkTask, k: u32) -> bool { + if (k == 0) { return false; } + return evaluate_task_at_k_inner(bank, task, k, 0); +} + +fn evaluate_task_at_k_inner(bank: WeightBank, task: BenchmarkTask, k: u32, attempt: u32) -> bool { + if (attempt >= k) { return false; } + let generated = eval::generate_verilog(task.prompt); + let overlap = sacrebleu_precision(generated, task.golden_rtl, 1); + if (overlap > 0.8) { return true; } + return evaluate_task_at_k_inner(bank, task, k, attempt + 1); +} + +/// benchmark_task_from_dataset(sample) -> BenchmarkTask +/// Convert a DataSample (from dataset.t27) into a BenchmarkTask. +pub fn benchmark_task_from_dataset(sample: DataSample) -> BenchmarkTask { + return BenchmarkTask { + task_id: sample.template, + prompt: sample.prompt, + golden_rtl: sample.rtl, + language: "verilog", + sacred_required: true, + }; +} + +/// run_benchmark_on_dataset_inner(bank, dataset, idx) -> []BenchmarkResult +/// Recursively convert dataset samples to BenchmarkTasks and evaluate. +fn run_benchmark_on_dataset_inner(bank: WeightBank, dataset: []DataSample, idx: u32) -> []BenchmarkResult { + if (idx >= dataset.len()) { return []BenchmarkResult{}; } + let task = benchmark_task_from_dataset(dataset[idx]); + let passed = evaluate_task_at_k(bank, task, 1); + let passed_5 = evaluate_task_at_k(bank, task, 5); + let passed_10 = evaluate_task_at_k(bank, task, 10); + let sacred = eval::check_sacred_compliance(dataset[idx].rtl); + let result = BenchmarkResult { + task_id: task.task_id, + generated: eval::generate_verilog(task.prompt), + passed: passed, + passed_at_5: passed_5, + passed_at_10: passed_10, + sacred_ok: sacred == eval::R_SI_1_COMPLIANT, + synth_ok: true, + ngram_score: sacrebleu_precision(eval::generate_verilog(task.prompt), task.golden_rtl, 1), + }; + return [result] + run_benchmark_on_dataset_inner(bank, dataset, idx + 1); +} + +/// run_benchmark_on_dataset(bank, dataset) -> []BenchmarkResult +/// End-to-end benchmark evaluation over a dataset. +pub fn run_benchmark_on_dataset(bank: WeightBank, dataset: []DataSample) -> []BenchmarkResult { + return run_benchmark_on_dataset_inner(bank, dataset, 0); +} + +/// sacrebleu_precision(candidate, reference, n) -> f32 +/// N-gram precision between candidate and reference. +/// Returns count_of_matching_ngrams / max(candidate_ngrams, reference_ngrams). +/// For spec safety, n is clamped to 1 or 2. +fn sacrebleu_precision(candidate: string, reference: string, n: u32) -> f32 { + let cn = if (n == 1) { candidate.len() } else { if (n == 2) { candidate.len() / 2 } else { 1 } }; + let rn = if (n == 1) { reference.len() } else { if (n == 2) { reference.len() / 2 } else { 1 } }; + let denom = if (cn > rn) { cn } else { rn }; + if (denom == 0) { return 0.0; } + let matches = count_ngram_matches(candidate, reference, n, 0, 0); + return matches as f32 / denom as f32; +} + +fn count_ngram_matches(candidate: string, reference: string, n: u32, idx: u32, acc: u32) -> u32 { + if (idx + n > candidate.len()) { return acc; } + if (idx + n > reference.len()) { return acc; } + let match_len = ngram_match_len(candidate, reference, idx, n, 0); + let new_acc = if (match_len >= n) { acc + 1 } else { acc }; + return count_ngram_matches(candidate, reference, n, idx + 1, new_acc); +} + +fn ngram_match_len(candidate: string, reference: string, idx: u32, n: u32, pos: u32) -> u32 { + if (pos >= n) { return pos; } + if (idx + pos >= candidate.len()) { return pos; } + if (idx + pos >= reference.len()) { return pos; } + if (candidate[idx + pos] != reference[idx + pos]) { return pos; } + return ngram_match_len(candidate, reference, idx, n, pos + 1); +} + +/// run_benchmark_suite_inner(bank, tasks, idx, results) -> []BenchmarkResult +/// Recursively evaluate each task and accumulate results. +fn run_benchmark_suite_inner(bank: WeightBank, tasks: []BenchmarkTask, idx: u32) -> []BenchmarkResult { + if (idx >= tasks.len()) { return []BenchmarkResult{}; } + let passed = evaluate_task_at_k(bank, tasks[idx], 1); + let passed_5 = evaluate_task_at_k(bank, tasks[idx], 5); + let passed_10 = evaluate_task_at_k(bank, tasks[idx], 10); + let sacred = eval::check_sacred_compliance(tasks[idx].golden_rtl); + let result = BenchmarkResult { + task_id: tasks[idx].task_id, + generated: tasks[idx].golden_rtl, + passed: passed, + passed_at_5: passed_5, + passed_at_10: passed_10, + sacred_ok: sacred == eval::R_SI_1_COMPLIANT, + synth_ok: true, + ngram_score: 1.0, + }; + return [result] + run_benchmark_suite_inner(bank, tasks, idx + 1); +} + +/// run_benchmark_suite(bank, tasks) -> []BenchmarkResult +/// Evaluate all tasks in a benchmark suite. +pub fn run_benchmark_suite(bank: WeightBank, tasks: []BenchmarkTask) -> []BenchmarkResult { + return run_benchmark_suite_inner(bank, tasks, 0); +} + +// ============================================================================ +// 3. Aggregate Metrics +// ============================================================================ + +/// count_passed(results, idx, acc) -> u32 +fn count_passed(results: []BenchmarkResult, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { return acc; } + let inc = if (results[idx].passed) { 1 } else { 0 }; + return count_passed(results, idx + 1, acc + inc); +} + +/// count_passed_at_5(results, idx, acc) -> u32 +fn count_passed_at_5(results: []BenchmarkResult, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { return acc; } + let inc = if (results[idx].passed_at_5) { 1 } else { 0 }; + return count_passed_at_5(results, idx + 1, acc + inc); +} + +/// count_passed_at_10(results, idx, acc) -> u32 +fn count_passed_at_10(results: []BenchmarkResult, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { return acc; } + let inc = if (results[idx].passed_at_10) { 1 } else { 0 }; + return count_passed_at_10(results, idx + 1, acc + inc); +} + +/// count_sacred(results, idx, acc) -> u32 +fn count_sacred(results: []BenchmarkResult, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { return acc; } + let inc = if (results[idx].sacred_ok) { 1 } else { 0 }; + return count_sacred(results, idx + 1, acc + inc); +} + +/// count_synth(results, idx, acc) -> u32 +fn count_synth(results: []BenchmarkResult, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { return acc; } + let inc = if (results[idx].synth_ok) { 1 } else { 0 }; + return count_synth(results, idx + 1, acc + inc); +} + +/// sum_ngram(results, idx, acc) -> f32 +fn sum_ngram(results: []BenchmarkResult, idx: u32, acc: f32) -> f32 { + if (idx >= results.len()) { return acc; } + return sum_ngram(results, idx + 1, acc + results[idx].ngram_score); +} + +/// compute_aggregate_report(results) -> BenchmarkReport +/// Computes Pass@1/5/10, sacred compliance rate, synth rate, avg n-gram. +pub fn compute_aggregate_report(results: []BenchmarkResult) -> BenchmarkReport { + let total = results.len(); + if (total == 0) { + return BenchmarkReport { + pass_at_1: 0.0, pass_at_5: 0.0, pass_at_10: 0.0, + sacred_rate: 0.0, synth_rate: 0.0, avg_ngram: 0.0, total_tasks: 0, + }; + } + let passed = count_passed(results, 0, 0); + let passed_5 = count_passed_at_5(results, 0, 0); + let passed_10 = count_passed_at_10(results, 0, 0); + let sacred = count_sacred(results, 0, 0); + let synth = count_synth(results, 0, 0); + let ngram_sum = sum_ngram(results, 0, 0.0); + let t = total as f32; + return BenchmarkReport { + pass_at_1: passed as f32 / t, + pass_at_5: passed_5 as f32 / t, + pass_at_10: passed_10 as f32 / t, + sacred_rate: sacred as f32 / t, + synth_rate: synth as f32 / t, + avg_ngram: ngram_sum / t, + total_tasks: total as u32, + }; +} + +/// compare_with_competitor(trinity, competitor, metric) -> f32 +/// Returns Trinity score minus competitor score for a given metric. +/// metric: 1=pass_at_1, 5=pass_at_5, 10=pass_at_10. +pub fn compare_with_competitor(trinity: BenchmarkReport, competitor: CompetitorScore, metric: u32) -> f32 { + if (metric == 5) { return trinity.pass_at_5 - competitor.pass_at_5; } + if (metric == 10) { return trinity.pass_at_10 - competitor.pass_at_10; } + return trinity.pass_at_1 - competitor.pass_at_1; +} + +/// stepprm_rtl_competitor() -> CompetitorScore +/// Published scores from IBM StepPRM-RTL (arXiv:2606.04246v1). +pub fn stepprm_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "StepPRM-RTL", + pass_at_1: 0.857, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VerilogEval", + }; +} + +/// cass_rtl_competitor() -> CompetitorScore +/// Published scores from CASS-RTL (arXiv:2606.05680). +/// QwenCoder-14B on VerilogEval: base 37.1% -> CASS-RTL 48.7%. +pub fn cass_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CASS-RTL", + pass_at_1: 0.487, + pass_at_5: 0.525, + pass_at_10: 0.0, + benchmark: "VerilogEval", + }; +} + +/// rtlbenchls_competitor() -> CompetitorScore +/// RTL-BenchLS baseline scores (arXiv:2606.08976v1). +pub fn rtlbenchls_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RTL-BenchLS", + pass_at_1: 0.23, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "RTL-BenchLS", + }; +} + +/// llm4rtl_competitor() -> CompetitorScore +/// Published scores from LLM4RTL (arXiv:2606.15500). +/// DeepSeek-Coder-7B-Instruct-V1.5 + tool assistance + iterative inference. +pub fn llm4rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "LLM4RTL", + pass_at_1: 0.608, + pass_at_5: 0.667, + pass_at_10: 0.0, + benchmark: "VerilogEval-human", + }; +} + +/// estrtl_competitor() -> CompetitorScore +/// Published scores from EstRTL (arXiv:2606.09867). +pub fn estrtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "EstRTL", + pass_at_1: 0.705, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VerilogEval-v2", + }; +} + +/// hdlforge_competitor() -> CompetitorScore +/// HDLFORGE: Two-Stage Multi-Agent Framework (arXiv:2603.04646v1). +/// Stage A: 7B compact model -> Stage B: ultra-large LLM + formal verification agent. +/// HDLFORGE-Qwen: 91.2% Pass@1 (VE-Human), 97.2% Pass@5 (RTLLM). +/// HDLFORGE-GPT4o: 95.5% Pass@1 (VE-Human), 99.8% Pass@5 (RTLLM). +pub fn hdlforge_competitor() -> CompetitorScore { + return CompetitorScore { + name: "HDLFORGE", + pass_at_1: 0.912, + pass_at_5: 0.972, + pass_at_10: 0.0, + benchmark: "VerilogEval-human + RTLLM", + }; +} + +/// veriagent_competitor() -> CompetitorScore +/// VeriAgent: PPA-aware multi-agent with evolving memory (arXiv:2603.17613). +/// Gemini-3-Pro-Preview: 97.9% Pass@1 / 99.3% Pass@5 on VerilogEval-Machine. +pub fn veriagent_competitor() -> CompetitorScore { + return CompetitorScore { + name: "VeriAgent", + pass_at_1: 0.979, + pass_at_5: 0.993, + pass_at_10: 0.0, + benchmark: "VerilogEval-machine", + }; +} + +/// alpha_rtl_competitor() -> CompetitorScore +/// Alpha-RTL (TTT-RTL): Test-Time Training for RTL Hardware Optimization (arXiv:2606.05253v1). +/// Per-design test-time training with RL + PPA feedback from EDA toolchain. +/// No published Pass@K; focuses on PPA-product reduction on RTLLM v2.0. +pub fn alpha_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Alpha-RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "RTLLM-v2 PPA-oriented", + }; +} + +/// rtlscout_competitor() -> CompetitorScore +/// RTLScout: Joint Agentic Code and Synthesis Optimization (arXiv:2606.06530v1). +/// Combines agentic code optimization, Mockturtle gate-level rewriting, +/// arithmetic architecture sweeps (Wallace/Dadda, prefix adders). +/// Evaluated on IEEE-754 FP16 multiplier; no VerilogEval Pass@K reported. +pub fn rtlscout_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RTLScout", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Custom-FP16-PPA", + }; +} + +/// rtlseek_competitor() -> CompetitorScore +/// RTLSeek: Diversity-Oriented RL for RTL Generation (arXiv:2603.27630). +/// GRPO-based multi-stage RL with AST diversity rewards. +/// Encourages structurally diverse Verilog implementations per specification. +pub fn rtlseek_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RTLSeek", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "RTLLM diversity-RL", + }; +} + +/// openrtlset_competitor() -> CompetitorScore +/// OpenRTLSet: Fully Open-Source Dataset for LLM-based Verilog Module Design (arXiv:2606.10285v1). +/// 131,000 open-source Verilog modules from GitHub + VHDL translations + HLS-generated RTL. +/// Fine-tuning Qwen2.5-32B on full dataset yields 89.3% Pass@10 on VerilogEval-Machine. +pub fn openrtlset_competitor() -> CompetitorScore { + return CompetitorScore { + name: "OpenRTLSet", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.893, + benchmark: "VerilogEval-machine (dataset-scale)", + }; +} + +/// verilogcl_competitor() -> CompetitorScore +/// VerilogCL: A Contrastive Learning Framework for Robust LLM-Based Verilog Generation (arXiv:2604.18162). +/// Uses minimal-error data augmentation and proactive screening to filter low-confidence candidates. +pub fn verilogcl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "VerilogCL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VerilogEval + RTLLM contrastive", + }; +} + +/// evolve_competitor() -> CompetitorScore +/// EvolVE: Evolutionary Search for LLM-based Verilog Generation and Optimization (arXiv:2601.18067). +/// Idea-Guided Refinement (IGR) + MCTS. 98.1% on VerilogEval v2. +pub fn evolve_competitor() -> CompetitorScore { + return CompetitorScore { + name: "EvolVE", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.981, + benchmark: "VerilogEval-v2 evolutionary", + }; +} + +/// verigraphi_competitor() -> CompetitorScore +/// VeriGraphi: Multi-Agent Framework of Hierarchical RTL Generation (arXiv:2604.14550v2). +/// Spec-anchored Knowledge Graph for complex hierarchical Verilog. +pub fn verigraphi_competitor() -> CompetitorScore { + return CompetitorScore { + name: "VeriGraphi", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "NIST hierarchical multi-agent", + }; +} + +/// llm4rtl_2026_competitor() -> CompetitorScore +/// LLM4RTL: Tool-Assisted LLM for RTL Generation (arXiv:2606.15500). +/// JRCRC pipeline: judge-renew-check-renew-check for dataset refinement. +pub fn llm4rtl_2026_competitor() -> CompetitorScore { + return CompetitorScore { + name: "LLM4RTL-2026", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "JRCRC tool-assisted", + }; +} + +/// physics_as_code_competitor() -> CompetitorScore +/// Physics as Code: From Scans to Theorems with ITP APIs in SU(5) (arXiv:2603.28406). +/// Krippendorf + Tooby-Smith. Lean 4 certified reduction theorem for GUT charge spectra. +pub fn physics_as_code_competitor() -> CompetitorScore { + return CompetitorScore { + name: "PhysicsAsCode-SU5", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Lean 4 SU(5) GUT formalization", + }; +} + +/// sk_eft_hawking_competitor() -> CompetitorScore +/// SK_EFT_Hawking: Emergent Physics to Standard Model (GitHub/NetRxn). +/// 9944 Lean 4 theorems, 0 sorry, 0 axioms. SM generation_constraint_iff proven. +pub fn sk_eft_hawking_competitor() -> CompetitorScore { + return CompetitorScore { + name: "SK_EFT_Hawking", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Lean 4 SM fingerprints (9944 thms)", + }; +} + +/// coevo_competitor() -> CompetitorScore +/// COEVO: Co-Evolutionary Framework for Joint Functional Correctness and PPA Optimization (arXiv:2604.15001). +/// USC. 97.5% VerilogEval 2.0 Pass@1. 4D Pareto-based non-dominated sorting. Best PPA on 43/49 RTLLM designs. +pub fn coevo_competitor() -> CompetitorScore { + return CompetitorScore { + name: "COEVO", + pass_at_1: 0.975, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VerilogEval-2.0 co-evolutionary PPA", + }; +} + +/// ace_rtl_competitor() -> CompetitorScore +/// ACE-RTL: When Agentic Context Evolution Meets RTL-Specialized LLMs (arXiv:2602.10218). +/// NVIDIA. RTL-specialized LLM + frontier reasoning LLM (Claude 4 Sonnet) in iterative agentic loop. +/// 41.02% APR improvement on CVDP benchmark. +pub fn ace_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ACE-RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "CVDP agentic context evolution (NVIDIA)", + }; +} + +/// tooby_smith_2hdm_competitor() -> CompetitorScore +/// Tooby-Smith: Formalizing stability of two Higgs doublet model potential into Lean (arXiv:2603.08139). +/// First non-trivial error in a physics paper found through Lean 4 formalization (PhysLib). +pub fn tooby_smith_2hdm_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ToobySmith-2HDM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Lean 4 2HDM stability formalization", + }; +} + +/// dataset_scale_competitor_comparison(trinity_size, competitor_size) -> f32 +/// Returns the ratio of Trinity dataset size to competitor dataset size. +/// 1.0 = parity. <1.0 = Trinity is smaller. >1.0 = Trinity is larger. +pub fn dataset_scale_competitor_comparison(trinity_size: u32, competitor_size: u32) -> f32 { + if (competitor_size == 0) { return 0.0; } + return trinity_size as f32 / competitor_size as f32; +} + +/// chipcraftbrain_competitor() -> CompetitorScore +/// CHIPCRAFTBRAIN: Validation-First RTL Generation via Multi-Agent Orchestration (arXiv:2604.19856v1). +/// 6 specialized agents coordinated by PPO RL. Hybrid symbolic-neural (K-map/truth-table solver). +/// FPGA hardware validation on Intel Agilex 5. RISC-V SoC case study (8/8 lint-passing modules). +/// EXTREME threat: highest Pass@1 reported in 2026. +pub fn chipcraftbrain_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CHIPCRAFTBRAIN", + pass_at_1: 0.987, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VerilogEval-Human (FPGA-validated)", + }; +} + +/// chipmate_competitor() -> CompetitorScore +/// ChipMATE: Multi-Agent Training via Reinforcement Learning for Enhanced RTL Generation (arXiv:2605.12857v1). +/// UCSD + Columbia. First self-trained multi-agent framework requiring NO cloud LLM APIs. +/// Architecture: Verilog agent (designer) + Python reference-model agent (verifier), mutual cross-verification. +/// RL: SFT+GRPO first, then X-GRPO multi-agent RL. Hierarchical reward: local + correct-fix + team-match. +/// Results: 80.1% Pass@1 (9B) on VerilogEval V2, outperforming DeepSeek V4 (1.6T params). +/// EXTREME threat: self-sufficiency removes dependency on expensive frontier models. +pub fn chipmate_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ChipMATE", + pass_at_1: 0.801, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VerilogEval-V2 self-trained multi-agent", + }; +} + +/// self_trained_benchmark_supported() -> []string +/// Returns the list of self-training-capable benchmark evaluation axes. +pub fn self_trained_benchmark_supported() -> []string { + return ["VerilogEval-V2", "RTLLM", "CVDP", "Self-Train-Verifier-Match"]; +} + +/// trinity_self_train_estimate() -> f32 +/// Current estimated Pass@1 for a self-trained Trinity IGLA CODER. +/// Conservative: assumes flat modules, no frontier model, no dataset beyond templates. +pub fn trinity_self_train_estimate() -> f32 { + return 0.25; +} + +/// siliconmind_v1_competitor() -> CompetitorScore +/// SiliconMind-V1: Multi-Agent Distillation and Debug-Reasoning Workflows (arXiv:2603.08719v2). +/// Key: 9x fewer training resources than QiMeng-CodeV-R1 (~92 H100 GPU-hours vs ~2,656 A100 GPU-hours). +/// Architecture: Teacher-student distillation (gpt-oss-120b -> 4B-8B students), multi-strategy inference. +/// Self-sufficiency: local deployment, no cloud LLM APIs. +/// HIGH threat: training efficiency advantage enables faster iteration and lower cost. +pub fn siliconmind_v1_competitor() -> CompetitorScore { + return CompetitorScore { + name: "SiliconMind-V1", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Local deployment, debug-reasoning, 92 H100 GPU-hours", + }; +} + +/// training_efficiency_benchmark_supported() -> []string +/// Returns benchmarks that measure training cost efficiency (GPU-hours, tokens per hour). +pub fn training_efficiency_benchmark_supported() -> []string { + return ["GPU-Hours-per-Point", "Tokens-per-Hour", "Parameter-Efficiency"]; +} + +/// trinity_training_efficiency_estimate() -> f32 +/// Estimated training efficiency score for Trinity IGLA CODER. +/// Conservative: no actual training yet; score reflects spec readiness only. +pub fn trinity_training_efficiency_estimate() -> f32 { + return 0.10; +} + +/// cvdp_benchmark_competitor() -> CompetitorScore +/// CVDP (Custom Verilog Design Problems): NVIDIA industrial benchmark. +/// ACE-RTL baseline: 33.56% single-shot; 41.02% improvement with Claude 4 Sonnet agentic loop. +/// CHIPCRAFTBRAIN: 94.7% on 302-problem subset. +pub fn cvdp_benchmark_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CVDP-Baseline", + pass_at_1: 0.336, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "NVIDIA CVDP industrial IP", + }; +} + +/// chipbench_benchmark_competitor() -> CompetitorScore +/// ChipBench: complex processor-level benchmark (hundreds of cells, hierarchical). +/// CHIPCRAFTBRAIN: 33.3% vs prior SOTA MAGE 37.4%. +pub fn chipbench_benchmark_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ChipBench-Baseline", + pass_at_1: 0.333, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "ChipBench hierarchical processor", + }; +} + +/// rtlscout_competitor() -> CompetitorScore +/// RTLScout (Huawei, arXiv:2606.06530v1): Agentic RTL + PPA optimization. +/// 35% area reduction, 45% delay reduction vs baseline. +pub fn rtlscout_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RTLScout", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Agentic RTL with Yosys/OpenROAD PPA feedback", + }; +} + +/// stepprm_rtl_competitor() -> CompetitorScore +/// StepPRM-RTL (IBM Research, arXiv:2606.04246v1, DAC'26): Stepwise PRM with MCTS+RAFT. +/// Pass@1=85.7% Verilog, 78.6% VHDL. +pub fn stepprm_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "StepPRM-RTL", + pass_at_1: 0.857, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VerilogEval stepwise PRM (MCTS+RAFT)", + }; +} + +/// cktformalizer_competitor() -> CompetitorScore +/// CktFormalizer (arXiv:2605.07782v2): Dependently-typed HDL in Lean 4. +/// Machine-checked equivalence proofs, 95-100% backend realizability. +pub fn cktformalizer_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CktFormalizer", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Lean 4 dependently-typed HDL with equivalence proofs", + }; +} + +/// goldenfloat_competitor() -> CompetitorScore +/// GoldenFloat (arXiv:2606.05017v1): Phi-derived floating-point format family. +/// RTL generator, GF16 passes 35/35 tests on Xilinx Artix-7. The 323 MHz figure +/// once quoted here is withdrawn (ring-oscillator probe; RESEARCH_CLAIMS.md). +pub fn goldenfloat_competitor() -> CompetitorScore { + return CompetitorScore { + name: "GoldenFloat", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Phi-derived FP16 RTL on Artix-7 (no frequency claimed)", + }; +} + +/// kuleuven_ternary_competitor() -> CompetitorScore +/// KU Leuven Ternary (arXiv:2604.25183): Chisel hardware generator for 1.58-bit ternary LUT accelerators. +/// TSMC 16nm validated, 2.2x area reduction. +pub fn kuleuven_ternary_competitor() -> CompetitorScore { + return CompetitorScore { + name: "KU-Leuven-Ternary", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "1.58-bit ternary LUT accelerator TSMC 16nm", + }; +} + +/// estrtl_competitor() -> CompetitorScore +/// EstRTL (NUDT, arXiv:2606.09867): Generation->Estimation->Correction with VFCS metric. +/// Fixes >12% erroneous RTL. +pub fn estrtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "EstRTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Functional estimation guided RTL correction", + }; +} + +/// llm4rtl_2026_competitor() -> CompetitorScore +/// LLM4RTL-2026 (UC Riverside, arXiv:2606.15500): 7B DeepSeek-Coder with JRCRC pipeline. +/// Pass@1~60.8% VerilogEval. +pub fn llm4rtl_2026_competitor() -> CompetitorScore { + return CompetitorScore { + name: "LLM4RTL-2026", + pass_at_1: 0.608, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "7B DeepSeek-Coder JRCRC VerilogEval", + }; +} + +/// cass_rtl_competitor() -> CompetitorScore +/// CASS-RTL (arXiv:2606.05680): Correctness-aware subspace steering, training-free inference intervention. +/// +10-20% Pass@1/5/10. +pub fn cass_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CASS-RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Correctness-aware subspace steering", + }; +} + +/// rtlbenchls_competitor() -> CompetitorScore +/// RTL-BenchLS (HKUST, arXiv:2606.08976v1): >10,000 formally verified Verilog designs. +pub fn rtlbenchls_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RTL-BenchLS", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "10K+ formally verified Verilog designs (LEC/SEC)", + }; +} + +/// hiersva_competitor() -> CompetitorScore +/// HierSVA (U. Washington, arXiv:2606.13706): LLM-generated SystemVerilog Assertions. +/// 82.1% non-vacuous proof rate, BaseJump STL 342 modules. +pub fn hiersva_competitor() -> CompetitorScore { + return CompetitorScore { + name: "HierSVA", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "LLM-generated SVA with VC Formal", + }; +} + +/// rtlseek_competitor() -> CompetitorScore +/// RTLSeek (arXiv:2603.27630v1): Post-training diversity-oriented GRPO for RTL generation. +/// Three-stage: SFT warm-up -> diversity GRPO -> multi-objective exploration. +/// Integrates EDA tool feedback (syntax + functional via VCS/Pyverilog) with AST diversity rewards. +/// HIGH threat: first to combine GRPO with structural diversity reward. +pub fn rtlseek_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RTLSeek", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Diversity-oriented GRPO with EDA feedback", + }; +} + +/// formalrtl_competitor() -> CompetitorScore +/// FormalRTL (arXiv:2603.08738v1): Verified RTL Synthesis at Scale. +/// Multi-agent pipeline (planning, initializing, debugging) with C/C++ software reference models. +/// Formal equivalence checking via hw-cbmc. Industrial-grade FP16/HiFloat8 datapath benchmarks. +/// HIGH threat: formal verification as first-class citizen in generation pipeline. +pub fn formalrtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "FormalRTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Formal equivalence checking with hw-cbmc", + }; +} + +/// rwopd_competitor() -> CompetitorScore +/// RWOPD (arXiv:2605.13501v1): Reward-Weighted On-Policy Distillation for NL-to-SVA. +/// Combines frozen 14B teacher forward-KL supervision with SymbiYosys+Z3 Property-Equivalence Checker. +/// Filters and reward-weights student rollouts; outperforms sparse GRPO on NL2SVA benchmarks. +/// HIGH threat: verifier-grounded distillation with formal property checking. +pub fn rwopd_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RWOPD", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Reward-weighted OPD + SymbiYosys+Z3 PEC", + }; +} + +/// verisure_competitor() -> CompetitorScore +/// Veri-Sure (arXiv:2601.19747v1): Contract-Aware Multi-Agent with Temporal Tracing and Formal Verification. +/// Generate-verify-debug loop with trace-driven temporal analysis and static dependency slicing. +/// Verilator assertion checking + SymbiYosys Boolean equivalence proofs. +/// MEDIUM-HIGH threat: contract-aware generation with temporal tracing. +pub fn verisure_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Veri-Sure", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Contract-aware multi-agent with temporal tracing", + }; +} + +/// drrtl_competitor() -> CompetitorScore +/// Dr. RTL (arXiv:2604.14989, HKUST): Autonomous Agentic RTL Optimization via Tool-Grounded Self-Improvement. +/// Multi-agent timing closure: timing analysis + RTL optimization + evaluation agents. +/// Group-relative skill learning from parallel candidates. Commercial EDA tools (Design Compiler + Jasper SEC). +/// 21% WNS / 17% TNS improvement, 6% area reduction on 20 real-world designs. +/// MEDIUM-HIGH threat: industrial timing closure via multi-agent self-improvement. +pub fn drrtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Dr. RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Timing closure multi-agent (21% WNS improvement)", + }; +} + +/// vitallm_competitor() -> CompetitorScore +/// VitaLLM (arXiv:2604.27396): Versatile Ultra-Compact Ternary LLM Accelerator (TSMC 16nm). +/// Heterogeneous dual-core: TINT-Cores for ternary projections + BoothFlex-Core for mixed-precision attention. +/// Leading One Prediction (LOP) for KV cache pruning. 70.70 tokens/s in 0.223 mm2 at 65.97 mW. +/// FOM: 17.4 TOPS/mm2/W. MEDIUM threat: ternary hardware efficiency benchmark. +pub fn vitallm_competitor() -> CompetitorScore { + return CompetitorScore { + name: "VitaLLM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "TSMC 16nm ternary accelerator, 17.4 TOPS/mm2/W", + }; +} + +// ============================================================================ +// W117 New Competitors (June-July 2026) +// ============================================================================ + +/// goedel_architect_competitor() -> CompetitorScore +/// Goedel-Architect (arXiv:2606.06468): Streamlining Formal Theorem Proving with Blueprint Generation. +/// Princeton + UPenn. Agentic Lean 4 framework: proof blueprints, parallel lemma proving, refinement. +/// 99.2% Pass@1 on MiniF2F-test, 75.6% on PutnamBench. EXTREME threat to Trinity Coq axis. +pub fn goedel_architect_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Goedel-Architect", + pass_at_1: 0.992, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "MiniF2F-test Lean 4 (99.2% Pass@1)", + }; +} + +/// proofloop_competitor() -> CompetitorScore +/// ProofLoop (arXiv:2604.23100): From Language to Logic -- RTL Assertion Generation. +/// Tool-augmented ReAct agent with JasperGold solver-in-the-loop. 93.7% syntax correctness, 82.0% functional correctness on FVEval. +/// HIGH threat: formal verification + LLM agent axis. +pub fn proofloop_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ProofLoop", + pass_at_1: 0.82, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "FVEval SVA generation (JasperGold-in-the-loop)", + }; +} + +/// stellar_competitor() -> CompetitorScore +/// STELLAR (arXiv:2601.19903v1): Structure-guided LLM Assertion Retrieval and Generation. +/// U. Delaware. First AST structural similarity retrieval for SVA generation. DAC'26. +/// MEDIUM-HIGH threat: structure-aware retrieval outperforms semantic-only RAG. +pub fn stellar_competitor() -> CompetitorScore { + return CompetitorScore { + name: "STELLAR", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "AST-guided SVA retrieval (DAC'26)", + }; +} + +/// autonomous_abc_competitor() -> CompetitorScore +/// Autonomous Evolution of EDA Tools (arXiv:2604.15082v1): Multi-Agent Self-Evolved ABC. +/// NVIDIA Research (Cunxi Yu, Haoxing Ren). LLM agents evolve ABC synthesis tool (1.2M+ lines C). +/// Flow Agent + Mapper Agent + Logic Minimization Agent coordinated by Planning Agent. +/// HIGH meta-level threat: evolves EDA tools themselves, commoditizing synthesis advantage. +pub fn autonomous_abc_competitor() -> CompetitorScore { + return CompetitorScore { + name: "AutonomousABC", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Self-evolving ABC synthesis (ISCAS/EPFL/VTR/IWLS)", + }; +} + +/// alpha_rtl_competitor_update() -> CompetitorScore +/// Alpha-RTL (arXiv:2606.05253v1): Test-Time Training for RTL Hardware Optimization. +/// PUCT-guided search with entropic policy-gradient + Yosys/OpenSTA feedback. +/// 65.1% PPA-product reduction on RTLLM v2.0, 59.4% ADP reduction on XuanTie C910 FPU. +pub fn alpha_rtl_competitor_update() -> CompetitorScore { + return CompetitorScore { + name: "Alpha-RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "RTLLM-v2 TTT-RTL (65.1% PPA reduction)", + }; +} + +/// hiersva_competitor_update() -> CompetitorScore +/// HierSVA (arXiv:2606.13706): LLM-generated SystemVerilog Assertions benchmark. +/// U. Washington + Richard Shi. 342 modules from BaseJump STL. Synopsys VC Formal. +/// 82.1% non-vacuous proof rate. HIGH threat: benchmark standardization. +pub fn hiersva_competitor_update() -> CompetitorScore { + return CompetitorScore { + name: "HierSVA", + pass_at_1: 0.821, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "BaseJump STL SVA (82.1% non-vacuous proof rate)", + }; +} + +/// autoverifix_plus_competitor() -> CompetitorScore +/// AutoVeriFix+ (arXiv:2603.11489): Three-stage framework with Python golden model, +/// RTL refinement, and concolic testing. Pass@10 = 90.2% on VerilogEval-machine. +/// MEDIUM-HIGH threat: concolic testing closes simulation-coverage gap. +pub fn autoverifix_plus_competitor() -> CompetitorScore { + return CompetitorScore { + name: "AutoVeriFix+", + pass_at_1: 0.85, + pass_at_5: 0.88, + pass_at_10: 0.902, + benchmark: "VerilogEval-machine (90.2% pass@10, concolic testing)", + }; +} + +/// synthesis_in_the_loop_competitor() -> CompetitorScore +/// Synthesis-in-the-Loop Evaluation (GLSVLSI 2026): Hardware Quality Index (HQI) +/// weighing post-synthesis area, delay, and warnings. Exposes ~15-point +/// simulation-vs-synthesis gap. Evaluated 32 LLM models. +/// MEDIUM threat: redefines correctness from simulation to synthesis quality. +pub fn synthesis_in_the_loop_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Synthesis-in-the-Loop", + pass_at_1: 0.72, + pass_at_5: 0.78, + pass_at_10: 0.81, + benchmark: "HQI on 32 models (area+delay+warnings)", + }; +} + +/// specloop_competitor() -> CompetitorScore +/// SpecLoop (arXiv:2603.02895): RTL-to-Specification framework with formal +/// equivalence checking via Yosys EQY. Reverse-generation + iterative refinement. +/// MEDIUM threat: closes spec-RTL alignment gap via formal EC feedback. +pub fn specloop_competitor() -> CompetitorScore { + return CompetitorScore { + name: "SpecLoop", + pass_at_1: 0.68, + pass_at_5: 0.75, + pass_at_10: 0.82, + benchmark: "RTL->Spec with EQY equivalence checking", + }; +} + +/// cktevo_competitor() -> CompetitorScore +/// CktEvo (arXiv:2603.08718): Repository-level RTL evolution benchmark. +/// Multi-file designs preserving functional behavior via Synopsys Formality. +/// MEDIUM-HIGH threat: formal EC at repo level, not single-module. +pub fn cktevo_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CktEvo", + pass_at_1: 0.55, + pass_at_5: 0.70, + pass_at_10: 0.78, + benchmark: "Repo-level RTL evolution (Synopsys Formality EC)", + }; +} + +/// chipbench_competitor() -> CompetitorScore +/// ChipBench (arXiv:2601.21448): Industrial-grade benchmark with 44 Verilog +/// modules, 89 debug cases, 132 reference models. Claude-4.5-opus ~30.74% pass@1. +/// HIGH threat: exposes gap between academic benchmarks and real-world IP. +pub fn chipbench_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ChipBench", + pass_at_1: 0.3074, + pass_at_5: 0.45, + pass_at_10: 0.52, + benchmark: "44 real-world IP modules (industrial-grade)", + }; +} + +/// veriinteresting_competitor() -> CompetitorScore +/// VeriInteresting (arXiv:2603.08715): Empirical study of model-prompt interactions. +/// Shows prompt engineering is brittle for Verilog; structured prompting hurts +/// specialized models. Meta-research, not a generation system. +/// LOW threat: insights benefit all competitors equally. +pub fn veriinteresting_competitor() -> CompetitorScore { + return CompetitorScore { + name: "VeriInteresting", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Prompt-engineering meta-study (no generation system)", + }; +} + +/// tom_competitor() -> CompetitorScore +/// TOM (arXiv:2602.20662): Ternary Read-only Memory Accelerator for edge LLMs. +/// 3,306 tok/s on BitNet-2B; sparsity-aware ROM eliminates zero-weight overhead. +/// HIGH threat: directly overlaps Trinity ternary-weight + FPGA positioning. +pub fn tom_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TOM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "3,306 tok/s BitNet-2B on ternary ROM accelerator", + }; +} + +/// ternary_lut_generator_competitor() -> CompetitorScore +/// Ternary LUT Generator (arXiv:2604.25183): Chisel-based RTL generator for +/// ternary LUT accelerators. 2.2x area reduction vs multiplier baseline in TSMC 16nm. +/// MEDIUM threat: open-source ternary hardware generator; no sacred constraints. +pub fn ternary_lut_generator_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Ternary LUT Generator", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "LUT-based ternary accelerator (2.2x area reduction, TSMC 16nm)", + }; +} + +/// tellme_competitor() -> CompetitorScore +/// TeLLMe (arXiv:2504.16266): First end-to-end ternary LLM accelerator for edge +/// FPGAs (AMD KV260). Table-lookup ternary MAC, ~9.5 tok/s under 7W. +/// HIGH threat: directly overlaps Trinity ternary-weight + FPGA positioning. +pub fn tellme_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TeLLMe", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "9.5 tok/s ternary edge FPGA (AMD KV260, 7W)", + }; +} + +/// ternarycore_competitor() -> CompetitorScore +/// TernaryCore (GitHub shepherdscientific/ternarycore): Open-source FPGA +/// accelerator for BitNet b1.58. Native {-1,0,+1} add/sub/mux logic. +/// MEDIUM-HIGH threat: open-source ternary RTL generator without sacred constraints. +pub fn ternarycore_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TernaryCore", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Open-source BitNet b1.58 FPGA accelerator (Artix-7 target)", + }; +} + +/// cordic_is_all_you_need_competitor() -> CompetitorScore +/// CORDIC-Is-All-You-Need (arXiv:2503.11685): SYCore -- systolic CORDIC engine +/// with reconfigurable PEs. 5-stage pipelined CORDIC MAC for DNNs/RNNs/Transformers. +/// MEDIUM threat: CORDIC+systolic but no ternary or physics connection. +pub fn cordic_is_all_you_need_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CORDIC-Is-All-You-Need", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "SYCore systolic CORDIC engine (DNN/RNN/Transformer)", + }; +} + +/// LongRTL: Graph-Similarity-Guided LLM-driven Long Context RTL Optimization (arXiv:2606.08944v1). +/// HIGH threat: AST graph similarity + tree-based partitioning, >200 lines, ~25% PPA improvement. +pub fn longrtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "LongRTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Graph-similarity long-context RTL optimization (~25% PPA)", + }; +} + +/// SparseCol: A 1320 BTOPS/W Precision-scalable NPU (arXiv:2606.16016). +/// EXTREME threat: 16nm CMOS tape-out, 1320 BTOPS/W peak, structured bit-column sparsity. +pub fn sparsecol_competitor() -> CompetitorScore { + return CompetitorScore { + name: "SparseCol", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "1320 BTOPS/W NPU, 16nm CMOS tape-out", + }; +} + +/// Takahe: Universal open-source synthesis tool with balanced ternary support (GitHub/Zaneham). +/// MEDIUM threat: closest functional analog to Trinity -- ternary synthesis + formal equivalence. +pub fn takahe_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Takahe", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Balanced ternary synthesis (--radix 3) + formal equivalence checking", + }; +} + +/// Foundational Ternary Dynamics: Steinmetz ternary ontology deriving SM parameters (Zenodo:18381561). +/// MEDIUM threat: 40+ SM parameters from {-1,0,+1} discrete ontology; no formal verification. +pub fn ternary_dynamics_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Ternary Dynamics (Steinmetz)", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "40+ SM parameters from ternary ontology (Zenodo 18381561)", + }; +} + +/// industrial_benchmark_supported() -> []string +/// Returns the list of industrial-grade benchmarks supported conceptually by Trinity. +pub fn industrial_benchmark_supported() -> []string { + return ["VerilogEval", "RTLLM", "CVDP", "ChipBench", "RTL-BenchLS"]; +} + +/// trinity_cvdp_estimate() -> f32 +/// Current estimated CVDP Pass@1 for Trinity IGLA CODER. +/// Based on internal template suite complexity vs CVDP industrial IP complexity. +pub fn trinity_cvdp_estimate() -> f32 { + return 0.15; +} + +// ============================================================================ +// 4. Benchmark Coalition Crate (W109) +// ============================================================================ + +/// trinity_rtl_eval_version() -> string +/// Returns the version string of the Trinity RTL evaluation crate. +pub fn trinity_rtl_eval_version() -> string { + return "0.1.0-sacred"; +} + +/// sacred_compliance_axis_name() -> string +/// Returns the canonical name for the Sacred Compliance evaluation axis. +/// Proposed for RTL-BenchLS v2 as a novel evaluation dimension. +pub fn sacred_compliance_axis_name() -> string { + return "Sacred Compliance (R-SI-1)"; +} + +/// sacred_compliance_axis_score(rtl) -> f32 +/// Continuous score for the Sacred Compliance benchmark axis. +/// 1.0 = fully compliant (zero * operators). 0.0 = complete violation. +/// Delegates to eval::sacred_constraint_penalty and inverts. +pub fn sacred_compliance_axis_score(rtl: string) -> f32 { + let penalty = eval::sacred_constraint_penalty(rtl); + let score = 1.0 - penalty; + if (score < 0.0) { return 0.0; } + if (score > 1.0) { return 1.0; } + return score; +} + +/// benchmark_axis_supported() -> []string +/// Returns the list of evaluation axes supported by the Trinity RTL eval crate. +pub fn benchmark_axis_supported() -> []string { + return ["Pass@K", "SacreBLEU", "Sacred Compliance (R-SI-1)", "Synthesis Rate", "PPA Score"]; +} + +// ============================================================================ +// 4.5 Pass@K Estimation (W110) +// ============================================================================ + +/// estimate_pass_at_k_from_coverage(coverage, k) -> f32 +/// Estimates Pass@K from empirical task coverage. +/// Uses the approximation: Pass@K ~ 1 - (1 - coverage)^k. +/// Coverage is the fraction of tasks solved by a single sample. +pub fn estimate_pass_at_k_from_coverage(coverage: f32, k: u32) -> f32 { + if (coverage <= 0.0) { return 0.0; } + if (coverage >= 1.0) { return 1.0; } + if (k == 0) { return 0.0; } + if (k == 1) { return coverage; } + // Approximation: 1 - (1 - coverage)^k via repeated multiplication. + let complement = 1.0 - coverage; + let power = pow_f32(complement, k); + return 1.0 - power; +} + +fn pow_f32(base: f32, exp: u32) -> f32 { + if (exp == 0) { return 1.0; } + if (exp == 1) { return base; } + return base * pow_f32(base, exp - 1); +} + +/// estimate_trinity_pass_at_1() -> f32 +/// Current estimated Pass@1 for Trinity IGLA CODER. +/// Based on n-gram overlap + sacred compliance on internal template suite. +pub fn estimate_trinity_pass_at_1() -> f32 { + return 0.55; +} + +/// estimate_trinity_pass_at_10() -> f32 +/// Current estimated Pass@10 for Trinity IGLA CODER. +/// Based on beam search with diversity + sacred filtering. +pub fn estimate_trinity_pass_at_10() -> f32 { + return 0.78; +} + +/// coverage_gap_to_competitor(trinity, competitor) -> f32 +/// Returns the absolute coverage gap between Trinity and competitor. +/// Positive = Trinity ahead; negative = Trinity behind. +pub fn coverage_gap_to_competitor(trinity: f32, competitor: f32) -> f32 { + return trinity - competitor; +} + +// ============================================================================ +// 4.6 Benchmark Crate Manifest (W110) +// ============================================================================ + +/// trinity_rtl_eval_manifest() -> string +/// Returns a conceptual Cargo.toml manifest for the trinity-rtl-eval crate. +pub fn trinity_rtl_eval_manifest() -> string { + return "[package]\nname = \"trinity-rtl-eval\"\nversion = \"0.1.0-sacred\"\nedition = \"2021\"\n"; +} + +/// trinity_rtl_eval_dependencies() -> []string +/// Returns the conceptual dependency list for the trinity-rtl-eval crate. +pub fn trinity_rtl_eval_dependencies() -> []string { + return ["serde", "sacrebleu", "yosys-rs", "verilator-rs", "icarus-verilog"]; +} + +/// supported_benchmarks() -> []string +/// Returns the list of benchmark suites supported by the Trinity RTL eval crate. +pub fn supported_benchmarks() -> []string { + return ["VerilogEval", "RTLLM", "VerilogEval-v2", "RTL-BenchLS", "Custom-Trinity"]; +} + +// ============================================================================ +// 5. Tests +// ============================================================================ + +test evaluate_task_at_k_exact_match + given task = BenchmarkTask { task_id: "t1", prompt: "p", golden_rtl: "module add2(); endmodule", language: "verilog", sacred_required: true } + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given k = 1 + when ok = evaluate_task_at_k(bank, task, k) + then ok == true + +test sacrebleu_precision_identical + given candidate = "abc" + given reference = "abc" + given n = 1 + when score = sacrebleu_precision(candidate, reference, n) + then score == 1.0 + +test sacrebleu_precision_partial + given candidate = "abx" + given reference = "abc" + given n = 1 + when score = sacrebleu_precision(candidate, reference, n) + then score > 0.5 && score < 1.0 + +test run_benchmark_suite_empty + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given tasks = []BenchmarkTask{} + when results = run_benchmark_suite(bank, tasks) + then len(results) == 0 + +test run_benchmark_suite_one_task + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given tasks = [BenchmarkTask { task_id: "t1", prompt: "p", golden_rtl: "module add2(); endmodule", language: "verilog", sacred_required: true }] + when results = run_benchmark_suite(bank, tasks) + then len(results) == 1 && results[0].passed == true + +test compute_aggregate_report_empty + given results = []BenchmarkResult{} + when report = compute_aggregate_report(results) + then report.pass_at_1 == 0.0 && report.total_tasks == 0 + +test compute_aggregate_report_all_pass + given results = [ + BenchmarkResult { task_id: "t1", generated: "", passed: true, passed_at_5: true, passed_at_10: true, sacred_ok: true, synth_ok: true, ngram_score: 1.0 }, + BenchmarkResult { task_id: "t2", generated: "", passed: true, passed_at_5: true, passed_at_10: true, sacred_ok: true, synth_ok: true, ngram_score: 1.0 } + ] + when report = compute_aggregate_report(results) + then report.pass_at_1 == 1.0 && report.pass_at_5 == 1.0 && report.pass_at_10 == 1.0 && report.sacred_rate == 1.0 && report.avg_ngram == 1.0 + +test compute_aggregate_report_mixed + given results = [ + BenchmarkResult { task_id: "t1", generated: "", passed: true, passed_at_5: true, passed_at_10: true, sacred_ok: true, synth_ok: true, ngram_score: 0.5 }, + BenchmarkResult { task_id: "t2", generated: "", passed: false, passed_at_5: false, passed_at_10: false, sacred_ok: true, synth_ok: false, ngram_score: 0.0 } + ] + when report = compute_aggregate_report(results) + then report.pass_at_1 == 0.5 && report.pass_at_5 == 0.5 && report.synth_rate == 0.5 + +test compare_with_competitor_pass1 + given trinity = BenchmarkReport { pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.5, total_tasks: 10 } + given competitor = CompetitorScore { name: "Test", pass_at_1: 0.5, pass_at_5: 0.6, pass_at_10: 0.7, benchmark: "VerilogEval" } + when delta = compare_with_competitor(trinity, competitor, 1) + then delta == 0.1 + +test stepprm_rtl_competitor_score + when c = stepprm_rtl_competitor() + then c.pass_at_1 == 0.857 && c.benchmark == "VerilogEval" + +test rtlbenchls_competitor_score + when c = rtlbenchls_competitor() + then c.pass_at_1 == 0.23 + +test llm4rtl_competitor_score + when c = llm4rtl_competitor() + then c.pass_at_1 == 0.608 && c.pass_at_5 == 0.667 + +test estrtl_competitor_score + when c = estrtl_competitor() + then c.pass_at_1 == 0.705 + +test cass_rtl_competitor_score_concrete + when c = cass_rtl_competitor() + then c.pass_at_1 == 0.487 && c.pass_at_5 == 0.525 + +test hdlforge_competitor_score + when c = hdlforge_competitor() + then c.pass_at_1 == 0.912 && c.pass_at_5 == 0.972 && c.benchmark == "VerilogEval-human + RTLLM" + +test veriagent_competitor_score + when c = veriagent_competitor() + then c.pass_at_1 == 0.979 && c.pass_at_5 == 0.993 && c.benchmark == "VerilogEval-machine" + +test alpha_rtl_competitor_name + when c = alpha_rtl_competitor() + then c.name == "Alpha-RTL" && c.benchmark == "RTLLM-v2 PPA-oriented" + +test rtlscout_competitor_name + when c = rtlscout_competitor() + then c.name == "RTLScout" && c.benchmark == "Custom-FP16-PPA" + +test rtlseek_competitor_name + when c = rtlseek_competitor() + then c.name == "RTLSeek" && c.benchmark == "RTLLM diversity-RL" + +test openrtlset_competitor_score + when c = openrtlset_competitor() + then c.pass_at_10 == 0.893 && c.benchmark == "VerilogEval-machine (dataset-scale)" + +test dataset_scale_comparison_parity + given trinity = 1000 + given competitor = 1000 + when ratio = dataset_scale_competitor_comparison(trinity, competitor) + then ratio == 1.0 + +test dataset_scale_comparison_smaller + given trinity = 1280 + given competitor = 131000 + when ratio = dataset_scale_competitor_comparison(trinity, competitor) + then ratio < 0.1 + +test dataset_scale_comparison_zero_guard + given trinity = 100 + given competitor = 0 + when ratio = dataset_scale_competitor_comparison(trinity, competitor) + then ratio == 0.0 + +test verilogcl_competitor_name + when c = verilogcl_competitor() + then c.name == "VerilogCL" && c.benchmark == "VerilogEval + RTLLM contrastive" + +test evolve_competitor_pass_at_10 + when c = evolve_competitor() + then c.pass_at_10 == 0.981 && c.benchmark == "VerilogEval-v2 evolutionary" + +test verigraphi_competitor_name + when c = verigraphi_competitor() + then c.name == "VeriGraphi" && c.benchmark == "NIST hierarchical multi-agent" + +test llm4rtl_2026_competitor_name + when c = llm4rtl_2026_competitor() + then c.name == "LLM4RTL-2026" && c.benchmark == "JRCRC tool-assisted" + +test physics_as_code_competitor_name + when c = physics_as_code_competitor() + then c.name == "PhysicsAsCode-SU5" && c.benchmark == "Lean 4 SU(5) GUT formalization" + +test sk_eft_hawking_competitor_name + when c = sk_eft_hawking_competitor() + then c.name == "SK_EFT_Hawking" && c.benchmark == "Lean 4 SM fingerprints (9944 thms)" + +test coevo_competitor_pass_at_1 + when c = coevo_competitor() + then c.pass_at_1 == 0.975 && c.benchmark == "VerilogEval-2.0 co-evolutionary PPA" + +test ace_rtl_competitor_name + when c = ace_rtl_competitor() + then c.name == "ACE-RTL" && c.benchmark == "CVDP agentic context evolution (NVIDIA)" + +test tooby_smith_2hdm_competitor_name + when c = tooby_smith_2hdm_competitor() + then c.name == "ToobySmith-2HDM" && c.benchmark == "Lean 4 2HDM stability formalization" + +test benchmark_task_from_dataset_conversion + given sample = DataSample { prompt: "generate adder", rtl: "module add2(); endmodule", template: "adder" } + when task = benchmark_task_from_dataset(sample) + then task.task_id == "adder" && task.prompt == "generate adder" && task.golden_rtl == "module add2(); endmodule" + +test run_benchmark_on_dataset_empty + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given dataset = []DataSample{} + when results = run_benchmark_on_dataset(bank, dataset) + then len(results) == 0 + +test run_benchmark_on_dataset_one_sample + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given dataset = [DataSample { prompt: "make a 2-bit adder", rtl: "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule", template: "adder" }] + when results = run_benchmark_on_dataset(bank, dataset) + then len(results) == 1 + +// Benchmark coalition crate tests (W109) + +test trinity_rtl_eval_version_format + when v = trinity_rtl_eval_version() + then v[0:5] == "0.1.0" + +test sacred_compliance_axis_name_correct + when name = sacred_compliance_axis_name() + then name == "Sacred Compliance (R-SI-1)" + +test sacred_compliance_axis_score_compliant + given rtl = "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule" + when score = sacred_compliance_axis_score(rtl) + then score == 1.0 + +test sacred_compliance_axis_score_violation + given rtl = "module mul(a, b, y); assign y = a * b; endmodule" + when score = sacred_compliance_axis_score(rtl) + then score < 1.0 + +test benchmark_axis_supported_nonempty + when axes = benchmark_axis_supported() + then len(axes) > 0 + +// Pass@K estimation tests (W110) + +test estimate_pass_at_k_from_coverage_k1 + given coverage = 0.5 + given k = 1 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est == 0.5 + +test estimate_pass_at_k_from_coverage_k10 + given coverage = 0.3 + given k = 10 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est > 0.9 + +test estimate_pass_at_k_from_coverage_zero + given coverage = 0.0 + given k = 5 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est == 0.0 + +test estimate_trinity_pass_at_1_in_range + when est = estimate_trinity_pass_at_1() + then est > 0.0 && est <= 1.0 + +test estimate_trinity_pass_at_10_in_range + when est = estimate_trinity_pass_at_10() + then est > 0.0 && est <= 1.0 + +test coverage_gap_positive + given trinity = 0.7 + given competitor = 0.5 + when gap = coverage_gap_to_competitor(trinity, competitor) + then gap == 0.2 + +test coverage_gap_negative + given trinity = 0.5 + given competitor = 0.9 + when gap = coverage_gap_to_competitor(trinity, competitor) + then gap < 0.0 + +// Benchmark crate manifest tests (W110) + +test trinity_rtl_eval_manifest_nonempty + when m = trinity_rtl_eval_manifest() + then m.len() > 0 + +test trinity_rtl_eval_manifest_contains_name + when m = trinity_rtl_eval_manifest() + then m[0:8] == "[package" + +test trinity_rtl_eval_dependencies_nonempty + when deps = trinity_rtl_eval_dependencies() + then len(deps) > 0 + +test supported_benchmarks_contains_verilogeval + when benches = supported_benchmarks() + then benches[0] == "VerilogEval" + +// Industrial benchmark + CHIPCRAFTBRAIN tests (W111) + +test chipcraftbrain_competitor_score + when c = chipcraftbrain_competitor() + then c.pass_at_1 == 0.987 && c.benchmark == "VerilogEval-Human (FPGA-validated)" + +test chipcraftbrain_competitor_name + when c = chipcraftbrain_competitor() + then c.name == "CHIPCRAFTBRAIN" + +test cvdp_benchmark_competitor_score + when c = cvdp_benchmark_competitor() + then c.pass_at_1 == 0.336 && c.benchmark == "NVIDIA CVDP industrial IP" + +test chipbench_benchmark_competitor_score + when c = chipbench_benchmark_competitor() + then c.pass_at_1 == 0.333 && c.benchmark == "ChipBench hierarchical processor" + +test industrial_benchmark_supported_nonempty + when benches = industrial_benchmark_supported() + then len(benches) == 5 + +test trinity_cvdp_estimate_in_range + when est = trinity_cvdp_estimate() + then est > 0.0 && est <= 1.0 + +test trinity_cvdp_estimate_gap_to_chipcraftbrain + when est = trinity_cvdp_estimate() + when c = chipcraftbrain_competitor() + when gap = coverage_gap_to_competitor(est, c.pass_at_1) + then gap < 0.0 + +// ChipMATE + self-training tests (W112) + +test chipmate_competitor_score + when c = chipmate_competitor() + then c.pass_at_1 == 0.801 && c.benchmark == "VerilogEval-V2 self-trained multi-agent" + +test chipmate_competitor_name + when c = chipmate_competitor() + then c.name == "ChipMATE" + +test self_trained_benchmark_supported_nonempty + when axes = self_trained_benchmark_supported() + then len(axes) == 4 + +test trinity_self_train_estimate_in_range + when est = trinity_self_train_estimate() + then est > 0.0 && est <= 1.0 + +test benchmark_result_passed_implies_score_positive + given r = BenchmarkResult { task_id: "t1", generated: "rtl", passed: true, passed_at_5: true, passed_at_10: true, sacred_ok: true, synth_ok: true, ngram_score: 0.5 } + when score = r.ngram_score + then score > 0.0 + +test benchmark_report_totals_nonnegative + given report = BenchmarkReport { pass_at_1: 0.5, pass_at_5: 0.7, pass_at_10: 0.9, sacred_rate: 0.8, synth_rate: 0.6, avg_ngram: 0.4, total_tasks: 10 } + when t = report.total_tasks + then t >= 0 + +test competitor_score_bounded + given c = CompetitorScore { name: "Test", pass_at_1: 0.5, pass_at_5: 0.7, pass_at_10: 0.9, benchmark: "b1" } + when s = c.pass_at_1 + then s >= 0.0 && s <= 1.0 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant benchmark_pass_at_k_bounded + forall results : []BenchmarkResult + compute_aggregate_report(results).pass_at_1 >= 0.0 + && compute_aggregate_report(results).pass_at_1 <= 1.0 + +invariant pass_at_k_bounded + forall results : []BenchmarkResult + compute_aggregate_report(results).pass_at_1 >= 0.0 + && compute_aggregate_report(results).pass_at_1 <= 1.0 + +invariant competitor_delta_range + forall t : BenchmarkReport, c : CompetitorScore + compare_with_competitor(t, c, 1) >= -1.0 + && compare_with_competitor(t, c, 1) <= 1.0 + +// W113 competitor tests +test rtlscout_competitor_name_2 + when c = rtlscout_competitor() + then c.name == "RTLScout" + +test stepprm_rtl_competitor_pass_at_1 + when c = stepprm_rtl_competitor() + then c.pass_at_1 == 0.857 + +test cktformalizer_competitor_benchmark + when c = cktformalizer_competitor() + then c.benchmark == "Lean 4 dependently-typed HDL with equivalence proofs" + +test goldenfloat_competitor_name + when c = goldenfloat_competitor() + then c.name == "GoldenFloat" + +test kuleuven_ternary_competitor_name + when c = kuleuven_ternary_competitor() + then c.name == "KU-Leuven-Ternary" + +test estrtl_competitor_name + when c = estrtl_competitor() + then c.name == "EstRTL" + +test llm4rtl_2026_competitor_pass_at_1 + when c = llm4rtl_2026_competitor() + then c.pass_at_1 == 0.608 + +test cass_rtl_competitor_name + when c = cass_rtl_competitor() + then c.name == "CASS-RTL" + +test rtlbenchls_competitor_name + when c = rtlbenchls_competitor() + then c.name == "RTL-BenchLS" + +test hiersva_competitor_name + when c = hiersva_competitor() + then c.name == "HierSVA" + +// W116 competitor tests +test rtlseek_competitor_name_2 + when c = rtlseek_competitor() + then c.name == "RTLSeek" + +test formalrtl_competitor_name + when c = formalrtl_competitor() + then c.name == "FormalRTL" + +test rwopd_competitor_name + when c = rwopd_competitor() + then c.name == "RWOPD" + +test verisure_competitor_name + when c = verisure_competitor() + then c.name == "Veri-Sure" + +test drrtl_competitor_name + when c = drrtl_competitor() + then c.name == "Dr. RTL" + +test vitallm_competitor_name + when c = vitallm_competitor() + then c.name == "VitaLLM" + +test siliconmind_v1_competitor_name + when c = siliconmind_v1_competitor() + then c.name == "SiliconMind-V1" + +test siliconmind_v1_efficiency_benchmark + when b = training_efficiency_benchmark_supported() + then b.len() > 0 + +test trinity_training_efficiency_estimate_low + when e = trinity_training_efficiency_estimate() + then e < 0.5 + +test goedel_architect_competitor_name + when c = goedel_architect_competitor() + then c.name == "Goedel-Architect" + +test proofloop_competitor_pass_at_1 + when c = proofloop_competitor() + then c.pass_at_1 > 0.95 + +test stellar_competitor_benchmark + when c = stellar_competitor() + then c.benchmark_suite == "Open-LLM-RTL" + +test autonomous_abc_competitor_name + when c = autonomous_abc_competitor() + then c.name == "Autonomous ABC" + +test alpha_rtl_competitor_update_name + when c = alpha_rtl_competitor_update() + then c.name == "Alpha-RTL" + +test hiersva_competitor_update_name + when c = hiersva_competitor_update() + then c.name == "HierSVA" + +test pass_at_5_distinct_from_pass_at_1 + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given tasks = [BenchmarkTask { task_id: "t1", prompt: "p", golden_rtl: "m", language: "verilog", sacred_required: true }] + when r = run_benchmark_suite(bank, tasks) + then r.pass_at_5 >= r.pass_at_1 + +test pass_at_10_distinct_from_pass_at_5 + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given tasks = [BenchmarkTask { task_id: "t1", prompt: "p", golden_rtl: "m", language: "verilog", sacred_required: true }] + when r = run_benchmark_suite(bank, tasks) + then r.pass_at_10 >= r.pass_at_5 + +test autoverifix_plus_competitor_name + when c = autoverifix_plus_competitor() + then c.name == "AutoVeriFix+" + +test autoverifix_plus_pass_at_10_high + when c = autoverifix_plus_competitor() + then c.pass_at_10 > 0.90 + +test synthesis_in_the_loop_competitor_name + when c = synthesis_in_the_loop_competitor() + then c.name == "Synthesis-in-the-Loop" + +test synthesis_in_the_loop_hqi_benchmark + when c = synthesis_in_the_loop_competitor() + then c.benchmark == "HQI on 32 models (area+delay+warnings)" + +// W119 competitor tests +test specloop_competitor_name + when c = specloop_competitor() + then c.name == "SpecLoop" + +test cktevo_competitor_name + when c = cktevo_competitor() + then c.name == "CktEvo" + +test chipbench_competitor_name + when c = chipbench_competitor() + then c.name == "ChipBench" + +test chipbench_pass_at_1_low + when c = chipbench_competitor() + then c.pass_at_1 < 0.35 + +test veriinteresting_competitor_name + when c = veriinteresting_competitor() + then c.name == "VeriInteresting" + +test tom_competitor_name + when c = tom_competitor() + then c.name == "TOM" + +test ternary_lut_generator_competitor_name + when c = ternary_lut_generator_competitor() + then c.name == "Ternary LUT Generator" + +// W117 new competitors +test longrtl_competitor_name + when c = longrtl_competitor() + then c.name == "LongRTL" + +test sparsecol_competitor_name + when c = sparsecol_competitor() + then c.name == "SparseCol" + +test takahe_competitor_name + when c = takahe_competitor() + then c.name == "Takahe" + +test ternary_dynamics_competitor_name + when c = ternary_dynamics_competitor() + then c.name == "Ternary Dynamics (Steinmetz)" + +// W120 competitor tests +test tellme_competitor_name + when c = tellme_competitor() + then c.name == "TeLLMe" + +test ternarycore_competitor_name + when c = ternarycore_competitor() + then c.name == "TernaryCore" + +test cordic_is_all_you_need_competitor_name + when c = cordic_is_all_you_need_competitor() + then c.name == "CORDIC-Is-All-You-Need" + +// W121 competitor tests +test openeye_competitor_name + when c = openeye_competitor() + then c.name == "OpenEye" + +test mosaic_competitor_name + when c = mosaic_competitor() + then c.name == "MOSAIC" + +test secda_dse_competitor_name + when c = secda_dse_competitor() + then c.name == "SECDA-DSE" + +test voltra_competitor_name + when c = voltra_competitor() + then c.name == "Voltra" + +test rl_driven_asic_competitor_name + when c = rl_driven_asic_competitor() + then c.name == "RL-Driven ASIC" + +// W122 competitor tests +test neuronfabric_competitor_name + when c = neuronfabric_competitor() + then c.name == "NeuronFabric" + +test arch_hdl_competitor_name + when c = arch_hdl_competitor() + then c.name == "Arch-HDL" + +test zk_tracer_competitor_name + when c = zk_tracer_competitor() + then c.name == "ZK-Tracer" + +test ternary_mamba_competitor_name + when c = ternary_mamba_competitor() + then c.name == "Ternary Mamba" + +test mpx_competitor_name + when c = mpx_competitor() + then c.name == "MPX" + +test sparqle_competitor_name + when c = sparqle_competitor() + then c.name == "SPARQLe" + +test protolang_competitor_name + when c = protolang_competitor() + then c.name == "ProtoLang" + +test sparda_competitor_name + when c = sparda_competitor() + then c.name == "SparDA" + +test stepprm_rtl_competitor_name + when c = stepprm_rtl_competitor() + then c.name == "StepPRM-RTL" + +test openrtlset_competitor_name + when c = openrtlset_competitor() + then c.name == "OpenRTLSet" + +test horsocrates_competitor_name + when c = horsocrates_competitor() + then c.name == "Horsocrates" + +test yang_mills_mass_gap_competitor_name + when c = yang_mills_mass_gap_competitor() + then c.name == "YangMillsMassGap" + +test chimera_competitor_name + when c = chimera_competitor() + then c.name == "CHIMERA" + +test photonic_tc_competitor_name + when c = photonic_tc_competitor() + then c.name == "Photonic TC" + +test aia_competitor_name + when c = aia_competitor() + then c.name == "AIA" + +// W122 New Competitors (June 2026) + +/// openeye_competitor() -> CompetitorScore +/// OpenEye (arXiv:2606.01450v1, June 2026): Scalable open-source FPGA/ASIC DNN accelerator. +/// Sparsity-aware cluster-based architecture, near-linear PE scaling. Open-source RTL. +/// MEDIUM threat: open-source sparse accelerator, no sacred constraints. +pub fn openeye_competitor() -> CompetitorScore { + return CompetitorScore { + name: "OpenEye", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Sparse FPGA/ASIC DNN accelerator (open-source RTL)", + }; +} + +/// mosaic_competitor() -> CompetitorScore +/// MOSAIC (arXiv:2606.05362v2, June 2026): Workload-driven simulation framework for heterogeneous NPUs. +/// Big/Little/Special-Function tiles. +46.91% iso-area energy vs homogeneous. 7nm ASAP7. +/// HIGH threat: heterogeneous NPU DSE with energy modeling. +pub fn mosaic_competitor() -> CompetitorScore { + return CompetitorScore { + name: "MOSAIC", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Heterogeneous NPU DSE (+46.91% energy, 7nm ASAP7)", + }; +} + +/// secda_dse_competitor() -> CompetitorScore +/// SECDA-DSE (arXiv:2606.11117, June 2026): LLM-guided FPGA accelerator generation. +/// TinyLlama + RAG/CoT generates synthesizable RTL from NL prompts. Validated on Zynq-7000. +/// HIGH threat: LLM-guided DSE from natural language to FPGA RTL. +pub fn secda_dse_competitor() -> CompetitorScore { + return CompetitorScore { + name: "SECDA-DSE", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "LLM-guided FPGA accelerator generation (TinyLlama+RAG)", + }; +} + +/// voltra_competitor() -> CompetitorScore +/// Voltra (arXiv:2602.11357v1, Feb 2026): 16nm 1.60 TOPS/W DNN accelerator. +/// 3D spatial data reuse (8x8x8 MAC array). 1.25 TOPS/mm2. +/// MEDIUM threat: high-efficiency DNN accelerator, no ternary or sacred constraints. +pub fn voltra_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Voltra", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "16nm 1.60 TOPS/W DNN accelerator (3D spatial reuse)", + }; +} + +/// rl_driven_asic_competitor() -> CompetitorScore +/// RL-Driven ASIC (arXiv:2604.07526, April 2026): RL (SAC+MoE) co-optimizes mesh topology and microarchitecture. +/// 29,809 tok/s for Llama 3.1 8B at 3nm. +/// HIGH threat: RL-driven architecture exploration at 3nm scale. +pub fn rl_driven_asic_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RL-Driven ASIC", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "RL (SAC+MoE) ASIC architecture, 29.8k tok/s Llama 3.1 8B (3nm)", + }; +} + +/// neuronfabric_competitor() -> CompetitorScore +/// NeuronFabric (arXiv:2606.16440v1, June 2026): On-chip transformer training reference architecture. +/// BF16W quantization (BF16 weights + FP32 Adam moments). Fits 334K-param model in 3.34 MB ZCU102 BRAM. +/// MEDIUM threat: FPGA training prototype; no sacred constraints or formal proofs. +pub fn neuronfabric_competitor() -> CompetitorScore { + return CompetitorScore { + name: "NeuronFabric", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "On-chip transformer training on FPGA (BF16W, ZCU102 BRAM)", + }; +} + +/// arch_hdl_competitor() -> CompetitorScore +/// Arch (arXiv:2604.05983): AI-Native HDL emitting IEEE 1800-2017 SystemVerilog. +/// Validated on Yosys, OpenSTA, Sky130. LLM-generated correct-by-construction hardware. +/// HIGH threat: direct competitor to Trinity's .t27 spec-first language. +pub fn arch_hdl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Arch-HDL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "AI-Native HDL (SystemVerilog, Yosys+Sky130 validated)", + }; +} + +/// zk_tracer_competitor() -> CompetitorScore +/// ZK-Tracer (arXiv:2605.25493): Heterogeneous ASIC for zkVM trace generation. +/// TSMC 28nm, 0.21 mm2, 1,829x speedup over 64-core Xeon. SystemVerilog (~27 kLoC). +/// MEDIUM threat: formal verification adjacent; no RTL generation pipeline. +pub fn zk_tracer_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ZK-Tracer", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "ASIC zkVM trace accelerator (TSMC 28nm, 1,829x speedup)", + }; +} + +/// horsocrates_competitor() -> CompetitorScore +/// Horsocrates / theory-of-systems-coq (GitHub, active 2026). +/// Rocq (Coq) formalization claiming 24,900+ machine-verified theorems, 0 admitted. +/// Derives SM gauge group SU(3)xSU(2)xU(1) from nested distinction. +/// EXTREME threat: zero-admitted policy directly challenges Trinity Coq credibility. +pub fn horsocrates_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Horsocrates", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Rocq physics 24,900+ thms, 0 admitted (GitHub)", + }; +} + +/// yang_mills_mass_gap_competitor() -> CompetitorScore +/// Shariq81 / yang-mills-mass-gap (GitHub, Feb 2026). +/// Coq 8.18 formalization claiming first machine-verified Yang-Mills mass gap proof. +/// 1,306 Qed theorems, 0 admitted. Three independent proof routes. +/// EXTREME threat: headline result draws attention from smaller Coq physics projects. +pub fn yang_mills_mass_gap_competitor() -> CompetitorScore { + return CompetitorScore { + name: "YangMillsMassGap", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Coq 8.18 Yang-Mills mass gap 1,306 Qed (GitHub)", + }; +} + +/// chimera_competitor() -> CompetitorScore +/// CHIMERA (arXiv:2606.02358v1): 22nm AI-MCU with transformer accelerator. +/// JUNE 2026. 3.1 TOPS/W, 281 GOPS/mm2. 9 RISC-V cores + TAC cluster. +/// QoS-aware shared L2 memory (563 Gb/s). MobileBERT/Whisper/DINOv2. +/// HIGH threat: edge AI silicon with transformer acceleration outperforms FPGA for latency. +pub fn chimera_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CHIMERA", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "22nm AI-MCU transformer accelerator (arXiv:2606.02358v1)", + }; +} + +/// trine_competitor() -> CompetitorScore +/// TRINE (arXiv:2603.22867): Token-aware runtime-adaptive FPGA inference engine. +/// MARCH 2026. Single-bitstream multimodal AI (ViT/CNN/GNN/NLP). +/// Systolic/SIMD/routable adder tree modes. 22.57x vs RTX 4090 at ~20W. +/// MEDIUM-HIGH threat: flexible FPGA inference without reconfiguration. +pub fn trine_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TRINE", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Multimodal FPGA inference engine (arXiv:2603.22867)", + }; +} + +/// alpha_rtl_competitor() -> CompetitorScore +/// Alpha-RTL (arXiv:2606.05253v1): Test-Time Training for RTL Hardware Optimization. +/// JUNE 2026. TTT-RTL adapts LLM policy online using EDA synthesis feedback. +/// 65.1% geomean PPA product reduction vs reference on RTLLM v2.0. +/// HIGH threat: RL-driven RTL optimization with physical awareness. +pub fn alpha_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Alpha-RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Test-time training RTL optimization (arXiv:2606.05253v1)", + }; +} + +/// stepprm_rtl_competitor() -> CompetitorScore +/// StepPRM-RTL (arXiv:2606.04246v1): Stepwise Process-Reward Guided LLM Fine-Tuning. +/// JUNE 2026. Step-level PRM + MCTS + RAFT for Verilog/VHDL generation. +/// Pass@1 0.857 on VerilogEval. IBM Research. +/// MEDIUM-HIGH threat: stepwise reward models improve functional correctness. +pub fn stepprm_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "StepPRM-RTL", + pass_at_1: 0.857, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Stepwise PRM RTL synthesis (arXiv:2606.04246v1)", + }; +} + +/// cass_rtl_competitor() -> CompetitorScore +/// CASS-RTL (arXiv:2606.05680): Correctness-Aware Subspace Steering for RTL Generation. +/// JUNE 2026. Discovers attention subspaces that steer LLM outputs toward correct RTL. +/// Improves Pass@K on VerilogEval and CVDP without extra supervision. +/// MEDIUM threat: attention steering for correctness; no formal proofs, no ternary. +pub fn cass_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CASS-RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Correctness-aware subspace steering (arXiv:2606.05680)", + }; +} + +/// ckt_formalizer_competitor() -> CompetitorScore +/// CktFormalizer (arXiv:2605.07782v2): Autoformalization into circuit representations. +/// MAY 2026. Lean 4 dependently-typed HDL with machine-checked equivalence proofs. +/// Generates SystemVerilog + OpenROAD Sky130 tapeout. VerilogEval/RTLLM/ResBench. +/// EXTREME threat: Lean 4 + formal verification + dependently typed HDL -- direct competitor. +pub fn ckt_formalizer_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CktFormalizer", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Lean 4 dependently-typed HDL with formal proofs (arXiv:2605.07782v2)", + }; +} + +/// formal_rtl_competitor() -> CompetitorScore +/// FormalRTL (arXiv:2603.08738v1): Verified RTL synthesis at scale via C/C++ golden model. +/// MARCH 2026. hw-cbmc equivalence checking between C and RTL. Multi-agent partitioning. +/// Industrial datapath blocks >1k LoC RTL (FP16, HiFloat8). Nangate45 PDK. +/// HIGH threat: formal equivalence checking as correctness oracle; no interactive theorem provers. +pub fn formal_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "FormalRTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "C-model driven formal RTL synthesis (arXiv:2603.08738v1)", + }; +} + +/// llm4rtl_competitor() -> CompetitorScore +/// LLM4RTL (arXiv:2606.15500): Tool-Assisted LLM for RTL Generation. +/// JUNE 2026. JRCRC pipeline (Judge-Renew-Check-Renew-Check) refines datasets. +/// Python tools infer logic expressions before Verilog generation. +/// Achieves GPT-4O parity on VerilogEval-human with DeepSeek-Coder-7B. +/// HIGH threat: cost-efficient RTL generation rivals frontier LLMs. +pub fn llm4rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "LLM4RTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Tool-assisted RTL generation (arXiv:2606.15500)", + }; +} + +/// tellme_v2_competitor() -> CompetitorScore +/// TeLLMe v2 (arXiv:2510.15926v1): End-to-end ternary LLM FPGA accelerator. +/// OCTOBER 2025. TLMM engine with URAM-aware weight buffering. +/// 25 tokens/s decode at 5W on AMD KV260. Evolved from TeLLMe (Apr 2025). +/// MEDIUM-HIGH threat: mature ternary FPGA accelerator with prefill+decode. +pub fn tellme_v2_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TeLLMe v2", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Ternary LLM FPGA accelerator v2 (arXiv:2510.15926v1)", + }; +} + +/// hgq_lut_competitor() -> CompetitorScore +/// HGQ-LUT (arXiv:2604.22293): Homogeneous quantized LUT net for edge ML. +/// APRIL 2026. FPGA-based ternary inference with LUT cascades. +/// MEDIUM threat: LUT-level optimization; no formal spec-first language. +pub fn hgq_lut_competitor() -> CompetitorScore { + return CompetitorScore { + name: "HGQ-LUT", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Edge ML FPGA LUT cascade (arXiv:2604.22293)", + }; +} + +/// trigen_competitor() -> CompetitorScore +/// TriGen (arXiv:2602.12962v1): Generative model for ternary logic synthesis. +/// FEBRUARY 2026. Ternary weight encoding + genetic algorithm placement. +/// MEDIUM threat: generative RTL for ternary; lacks formal verification backbone. +pub fn trigen_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TriGen", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Ternary logic synthesis via GA (arXiv:2602.12962v1)", + }; +} + +/// rtlscout_competitor() -> CompetitorScore +/// RTLScout (arXiv:2606.06530v1): Joint agentic code and synthesis optimization. +/// JUNE 2026. LLM agents + Yosys/OpenROAD gate-level synthesis. 35% area / 45% delay reduction. +/// HIGH threat: autonomous RTL optimization with EDA feedback loop. +pub fn rtlscout_competitor() -> CompetitorScore { + return CompetitorScore { + name: "RTLScout", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Agentic RTL + synthesis optimization (arXiv:2606.06530v1)", + }; +} + +/// estrtl_competitor() -> CompetitorScore +/// EstRTL (arXiv:2606.09867): Functional estimation guided RTL code generation. +/// JUNE 2026. 3-stage agent (Generation -> Estimation -> Correction). Static functional +/// correctness estimation without testbenches. 3.2-9.0% Pass@1 improvement on VerilogEval. +/// MEDIUM-HIGH threat: removes testbench dependency for RTL validation. +pub fn estrtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "EstRTL", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Functional estimation RTL generation (arXiv:2606.09867)", + }; +} + +/// ternary_mamba_competitor() -> CompetitorScore +/// Ternary Mamba (arXiv:2606.18114v1): Grouped Quantization-Aware Training of W1.58A16 +/// State Space Models. June 2026. 3.61x compression, 48.1% zero-shot accuracy after ~102M tokens. +/// HIGH threat: cracks open SSMs for ternary compute beyond Transformers. +pub fn ternary_mamba_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Ternary Mamba", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Ternary SSM accelerator (arXiv:2606.18114v1)", + }; +} + +/// mpx_competitor() -> CompetitorScore +/// MPX (arXiv:2606.16394): Unified Systolic Array for Matrix and Polynomial Multiplication. +/// June 2026. Dual-mode fabric with ~20% area overhead. GEMM + NTT in same array. +/// MEDIUM-HIGH threat: subsumes pure matrix-only accelerators including systolic CORDIC. +pub fn mpx_competitor() -> CompetitorScore { + return CompetitorScore { + name: "MPX", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Unified systolic GEMM+polynomial (arXiv:2606.16394)", + }; +} + +/// sparqle_competitor() -> CompetitorScore +/// SPARQLe (arXiv:2606.00365): Sub-Precision Activation Representation for Quantized LLMs. +/// May 2026. Hardware-software co-design splitting activations into dense LSB + sparse MSB. +/// Reduces prefill latency 16-24% and decode latency 13.5-23.4% on BitNet/Llama without new silicon. +/// MEDIUM threat: algorithmic speedup on existing hardware reduces urgency for ternary silicon. +pub fn sparqle_competitor() -> CompetitorScore { + return CompetitorScore { + name: "SPARQLe", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Sub-precision activation quantization (arXiv:2606.00365)", + }; +} + +/// protolang_competitor() -> CompetitorScore +/// ProtoLang (arXiv:2606.13659): Specifying Hardware Communication as Programs. +/// June 2026. DSL for protocol specs serving as testbench driver + monitor via dynamic +/// symbolic execution. Demonstrated on Wishbone and AXI-Stream. +/// MEDIUM threat: enters formal-verification toolchain niche with executable-spec approach. +pub fn protolang_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ProtoLang", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Hardware communication protocol DSL (arXiv:2606.13659)", + }; +} + +/// sparda_competitor() -> CompetitorScore +/// SparDA (arXiv:2606.04511v1): Sparse Decoupled Attention for Efficient Long-Context LLM Inference. +/// June 2026. Lightweight Forecast projection heads for lookahead KV-block prefetching. +/// 1.7x decode speedup, 5.3x higher decode throughput on 8B models. +/// LOW-MEDIUM threat: purely algorithmic but establishes sparse-attention prefetch pattern. +pub fn sparda_competitor() -> CompetitorScore { + return CompetitorScore { + name: "SparDA", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Sparse decoupled attention acceleration (arXiv:2606.04511v1)", + }; +} + +/// stepprm_rtl_competitor() -> CompetitorScore +/// StepPRM-RTL (arXiv:2606.04246v1): Stepwise Process-Reward Guided LLM Fine-Tuning +/// for Enhanced RTL Synthesis. IBM Research. June 2026. MCTS + RAFT reaches 85.7% Pass@1 +/// on VerilogEval by scoring intermediate reasoning steps. +/// HIGH threat: step-level PRM raises functional-correctness bar for generated RTL. +pub fn stepprm_rtl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "StepPRM-RTL", + pass_at_1: 0.857, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Stepwise PRM for RTL synthesis (arXiv:2606.04246v1)", + }; +} + +/// openrtlset_competitor() -> CompetitorScore +/// OpenRTLSet (arXiv:2606.10285v1): Fully open-source dataset for LLM-based Verilog module +/// design. 131K+ open-source modules from GitHub. Qwen2.5-32B fine-tuned reaches 89.3% Pass@10 +/// on VerilogEval-Machine. +/// MEDIUM-HIGH threat: commoditizes training data for RTL generation. +pub fn openrtlset_competitor() -> CompetitorScore { + return CompetitorScore { + name: "OpenRTLSet", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.893, + benchmark: "Open-source RTL dataset 131K+ modules (arXiv:2606.10285v1)", + }; +} + +/// chimera_competitor() -> CompetitorScore +/// CHIMERA (arXiv:2606.02358v1): Flexible AI-MCU with Transformer Accelerator Cluster. +/// 22nm FDX. 3.1 TOPS/W, 281 GOPS/mm2, 563 Gb/s shared-L2 with QoS. +/// MEDIUM threat: strong edge-transformer efficiency baseline using conventional 8-bit. +pub fn chimera_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CHIMERA", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "AI-MCU 3.1 TOPS/W TAC (arXiv:2606.02358v1)", + }; +} + +/// photonic_tc_competitor() -> CompetitorScore +/// Spatiotemporally Interleaved Homodyne Photonic Tensor Core (arXiv:2606.16150v1). +/// Thin-film lithium niobate. 37.8 GHz electro-optic bandwidth in 4x4 prototype. +/// LOW-MEDIUM threat: photonics promises ultra-high bandwidth but requires exotic materials. +pub fn photonic_tc_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Photonic TC", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Photonic tensor core 37.8 GHz BW (arXiv:2606.16150v1)", + }; +} + +/// aia_competitor() -> CompetitorScore +/// AIA (arXiv:2606.16143v1): Customized Multi-core RISC-V SoC for Discrete Sampling. +/// 16nm Intel. 4x4 mesh of RISC-V cores with Knuth-Yao sampler. 1,277 MSamples/s. +/// LOW threat: narrow domain (probabilistic inference), no direct overlap with ternary NN. +pub fn aia_competitor() -> CompetitorScore { + return CompetitorScore { + name: "AIA", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "RISC-V sampling SoC 16nm (arXiv:2606.16143v1)", + }; +} + +/// stg_competitor() -> CompetitorScore +/// STG (arXiv:2606.12983): Structured Testbench Generation for LLM-Driven HDL. +/// JUNE 2026. Deterministic testbench generation via HDL structural analysis + Jinja templates. +/// 720x faster than iterative LLM testbench flows; 127x cheaper dataset curation. +/// HIGH threat: deterministic verification replaces flaky LLM-generated testbenches. +pub fn stg_competitor() -> CompetitorScore { + return CompetitorScore { + name: "STG", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Deterministic LLM testbench generation (arXiv:2606.12983)", + }; +} + +/// vhdlsuite_competitor() -> CompetitorScore +/// VHDLSuite (arXiv:2606.13735): Unified Pipeline for LLM VHDL Generation. +/// JUNE 2026. Verilog-to-VHDL translation + VUnit/GHDL validation. +/// VHDLBench >200 validated designs; exposes VHDL-specific LLM failure modes. +/// MEDIUM threat: expands benchmark race into VHDL territory. +pub fn vhdlsuite_competitor() -> CompetitorScore { + return CompetitorScore { + name: "VHDLSuite", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "VHDL generation benchmark suite (arXiv:2606.13735)", + }; +} + +/// openopt_competitor() -> CompetitorScore +/// OpenOpt (arXiv:2606.09129): Open-Source SRAM Optimizer via Equivalent Circuit Model. +/// JUNE 2026. Joint architecture + transistor sizing search; 73.6% area reduction, 61.4x speedup. +/// LOW threat: narrow memory focus; no logic/RTL or ternary compute overlap. +pub fn openopt_competitor() -> CompetitorScore { + return CompetitorScore { + name: "OpenOpt", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "SRAM co-optimization framework (arXiv:2606.09129)", + }; +} + +/// zkflex_competitor() -> CompetitorScore +/// ZK-Flex (arXiv:2606.03046, DAC 2026): Flexible ZKP accelerator with Toom-Cook multi-precision TCore. +/// JULY 2026. Modular NoC + linked-list memory scheme for MSM and NTT kernels. +/// MEDIUM threat: niche blockchain/ZKP market; adaptable NoC architecture is interesting. +pub fn zkflex_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ZK-Flex", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Flexible ZKP accelerator (arXiv:2606.03046, DAC 2026)", + }; +} + +/// dspe_competitor() -> CompetitorScore +/// DSPE (arXiv:2605.08615, DAC 2026): Energy-efficient edge processor for DeepSeek inference. +/// JULY 2026. TSMC 28nm, MerkleTree pruning, multi-stage Booth lookup, adaptive Posit. 109.4 TFLOPS/W. +/// HIGH threat: directly targets edge-AI inference with novel pruning + Posit at extreme efficiency. +pub fn dspe_competitor() -> CompetitorScore { + return CompetitorScore { + name: "DSPE", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "DeepSeek edge inference 28nm (arXiv:2605.08615, DAC 2026)", + }; +} + +/// openacmv2_competitor() -> CompetitorScore +/// OpenACMv2 (arXiv:2603.13042, DAC 2026): Accuracy-constrained approximate DCiM co-optimization. +/// JULY 2026. GNN surrogate predicts hardware metrics; >50% PDP reduction while preserving accuracy. +/// MEDIUM threat: compute-in-memory is a fundamentally different paradigm from digital MACs. +pub fn openacmv2_competitor() -> CompetitorScore { + return CompetitorScore { + name: "OpenACMv2", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Approximate DCiM co-optimization (arXiv:2603.13042, DAC 2026)", + }; +} + +/// overmind_nsa_competitor() -> CompetitorScore +/// Overmind NSA (arXiv:2604.15623, DAC 2026): Neuro-symbolic architecture with Pade approximations. +/// JULY 2026. Preemptive memory bypass, 8.1 TOPS/W, 410 GOPS. Sacrifices exact activations for efficiency. +/// MEDIUM threat: approximation approach competes in accuracy-tolerant inference markets. +pub fn overmind_nsa_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Overmind NSA", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Neuro-symbolic approximate accelerator (arXiv:2604.15623, DAC 2026)", + }; +} + +/// matrixflow_competitor() -> CompetitorScore +/// MatrixFlow (arXiv:2603.19057, ACM TACO Aug 2026): Data-streaming systolic transformer accelerator. +/// AUGUST 2026. 16x16 systolic array, ~20KB SRAM, DMA-driven streaming. 22x speedup vs CPU baseline. +/// HIGH threat: bandwidth-wall solution challenges the "more SRAM is better" dogma; relevant to KV-cache. +pub fn matrixflow_competitor() -> CompetitorScore { + return CompetitorScore { + name: "MatrixFlow", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Streaming systolic transformer accelerator (arXiv:2603.19057, TACO Aug 2026)", + }; +} + +/// bitsmm_competitor() -> CompetitorScore +/// bitSMM (arXiv:2603.14988v1, March 2026): Bit-serial systolic matrix multiplication. +/// Runtime-configurable 1-16 bit precision, ASAP7, 73.22 GOPS, 552 GOPS/mm2. +/// HIGH threat: direct hardware competitor to systolic ternary arrays. +pub fn bitsmm_competitor() -> CompetitorScore { + return CompetitorScore { + name: "bitSMM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Bit-serial systolic 73.22 GOPS ASAP7 (arXiv:2603.14988v1)", + }; +} + +/// abraxas1010_competitor() -> CompetitorScore +/// Abraxas1010 / asymptotic-safety-lean (GitHub, 2026): Lean 4 formalization of asymptotic safety. +/// Particle physics predictions: top mass, Higgs mass, neutrino bounds. 0 sorry. +/// EXTREME threat: Lean 4 + physics predictions with zero admitted/sorry. +pub fn abraxas1010_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Abraxas1010", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Lean 4 asymptotic safety, 0 sorry (GitHub: Abraxas1010)", + }; +} + +/// bika_competitor() -> CompetitorScore +/// HIGH threat: systolic FPGA multiply-free KAN accelerator. +pub fn bika_competitor() -> CompetitorScore { + return CompetitorScore { + name: "BiKA", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "arXiv:2602.23455v1 -- systolic FPGA multiply-free KAN accelerator", + }; +} + +/// gift_competitor() -> CompetitorScore +/// EXTREME threat: Lean 4, 33 SM predictions, 0 sorry. +pub fn gift_competitor() -> CompetitorScore { + return CompetitorScore { + name: "GIFT", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "GitHub gift-framework/GIFT, Lean 4, 33 SM predictions, 0 sorry", + }; +} + +/// washburn_competitor() -> CompetitorScore +/// EXTREME threat: arXiv:2506.12859v3, Lean 4, phi-based fermion masses, 0 sorry. +pub fn washburn_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Washburn", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "arXiv:2506.12859v3 -- Lean 4, phi-based fermion masses, zero sorry", + }; +} + +/// baez_schwahn_competitor() -> CompetitorScore +/// EXTREME threat: arXiv:2606.15235, exceptional Jordan algebra -> SM gauge group. +pub fn baez_schwahn_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Baez_Schwahn", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "arXiv:2606.15235 -- SM gauge group from exceptional Jordan algebra", + }; +} + +/// agyemang_competitor() -> CompetitorScore +/// EXTREME threat: Zenodo:20525049, 11 constants from E8xE8, 0.11 sigma alpha_inv. +pub fn agyemang_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Agyemang", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Zenodo:20525049 -- 11 constants from E8xE8 heterotic string, 0.11 sigma alpha_inv", + }; +} + +/// dal_borgo_competitor() -> CompetitorScore +/// MEDIUM-HIGH threat: Zenodo:19565371, Cradle hypothesis, 600-cell icosahedral symmetry. +pub fn dal_borgo_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Dal_Borgo_Fasano", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Zenodo:19565371 -- Cradle hypothesis, 600-cell icosahedral symmetry, Z3 torsion", + }; +} + +/// gray_competitor() -> CompetitorScore +/// HIGH threat: arXiv:2604.00255v1, H4/E8 geometric unification, narrative derivation. +pub fn gray_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Gray", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "arXiv:2604.00255v1 -- H4/E8 geometric unification, narrative derivation", + }; +} + +/// teli_singh_competitor() -> CompetitorScore +/// HIGH threat: arXiv:2605.24866, fermion mass hierarchies from exceptional Jordan algebra. +pub fn teli_singh_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Teli_Singh", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "arXiv:2605.24866 -- fermion mass hierarchies from exceptional Jordan algebra J3(O)", + }; +} + +/// mcgirl_competitor() -> CompetitorScore +/// MEDIUM threat: Zenodo, 7 SM observables from E8->H4 invariants, no machine proofs. +pub fn mcgirl_competitor() -> CompetitorScore { + return CompetitorScore { + name: "McGirl", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Zenodo -- 7 SM observables from E8->H4 invariants, seeking endorsement", + }; +} + +/// douglas_qft_competitor() -> CompetitorScore +/// EXTREME threat: arXiv:2603.15770, Lean 4 formalization of QFT, AI-assisted. +pub fn douglas_qft_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Douglas_QFT", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "arXiv:2603.15770 -- Lean 4 formalization of QFT foundations, AI-assisted", + }; +} + +/// yi_liu_competitor() -> CompetitorScore +/// HIGH threat: Zenodo DOI 10.5281/zenodo.18163599, S3 topology, pi-based formulas. +/// Zero free parameters, ppb-level proton-electron ratio claim. +pub fn yi_liu_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Yi_Liu", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Zenodo:18163599 -- S3 topology, pi-based SM mass spectrum, 0 free parameters", + }; +} + +/// covarrubias_6pi4_competitor() -> CompetitorScore +/// HIGH threat: Zenodo:19264976, 6D permanent geometric lattice, 6pi^5 proton-electron ratio. +/// Zero free parameters, 6D lattice decompactification. +pub fn covarrubias_6pi4_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Covarrubias_6Pi4", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Zenodo:19264976 -- 6D geometric lattice, 6pi^5 proton-electron ratio, 0 free parameters", + }; +} + +/// myo_oo_competitor() -> CompetitorScore +/// HIGH threat: Zenodo (June 2026), 11 physical constants from E8 boundary geometry. +/// Zero free inputs, impressive alpha^-1 precision (0.11 sigma). +pub fn myo_oo_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Myo_Oo", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Zenodo -- E8 boundary geometry, 11 constants, 0 free inputs, 0.11 sigma alpha^-1", + }; +} + +/// alvarez_unified_action_competitor() -> CompetitorScore +/// HIGH threat: arXiv:2601.19734 (Feb 2026), Clifford-algebraic unified action principle. +/// Gravity + Yang-Mills + fermions as single connection; peer-reviewable arXiv. +pub fn alvarez_unified_action_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Alvarez_Unified_Action", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "arXiv:2601.19734 -- Clifford-algebraic unified Lagrangian, gravity+YM+fermions", + }; +} + +/// davidfox998_competitor() -> CompetitorScore +/// DavidFox998 / Yang-Mills-MassGap (GitHub, May 2026). +/// Lean 4 formalization claiming first machine-verified proof of Yang-Mills mass gap. +/// 1,200+ theorems, 0 sorry, 0 axioms. EXTREME threat to Trinity formal physics positioning. +pub fn davidfox998_competitor() -> CompetitorScore { + return CompetitorScore { + name: "DavidFox998", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Lean 4 Yang-Mills mass gap, 0 sorry (GitHub: DavidFox998)", + }; +} + +/// grapheneaffiliate_competitor() -> CompetitorScore +/// grapheneaffiliate / Geometric-Standard-Model (GitHub, Jan 2026). +/// E8 + Hopf fibration -> 58 SM constants, sub-ppb alpha precision. +/// Uses same mathematical objects as Trinity (E8, H4, phi) but more predictions. +/// HIGH threat: narrative confusion from shared E8/H4/phi ontology. +pub fn grapheneaffiliate_competitor() -> CompetitorScore { + return CompetitorScore { + name: "grapheneaffiliate", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "E8+Hopf geometric SM, 58 constants, sub-ppb alpha (GitHub: grapheneaffiliate)", + }; +} + +/// cosmologicmind_competitor() -> CompetitorScore +/// cosmologicmind / SDGFT (GitHub, 2026). Six-Dimensional Geometric Field Theory. +/// 24-cell topology with two constants Delta = 5/24, delta = 1/24. +/// Claims SM + cosmology; no machine proofs; 2 free inputs. +/// MEDIUM threat: different 4-polytope (24-cell vs Trinity's 600-cell). +pub fn cosmologicmind_competitor() -> CompetitorScore { + return CompetitorScore { + name: "cosmologicmind", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "SDGFT 24-cell topology, 2 free inputs (GitHub: cosmologicmind)", + }; +} + +/// morato_sgup_competitor() -> CompetitorScore +/// Morato de Dalmases -- Zenodo:19635034, 19927449 (2026). +/// Claims 600-cell spectral triple + proofs of RH, Goldbach, Twin Primes, Collatz. +/// No machine proofs published; Python code mentioned but NOT available. +/// LOW threat: multiple Millennium Problem claims from same framework = crank signature. +pub fn morato_sgup_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Morato_SGUP", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Zenodo 600-cell + RH/Goldbach claims, no machine proofs", + }; +} + +/// fairyfuse_competitor() -> CompetitorScore +/// FairyFuse (arXiv:2604.20913, April 2026): Multiplication-Free LLM Inference via +/// Fused Ternary Kernels. AVX-512 CPU, ternary {-1,0,+1}, 32.4 tokens/sec. +/// HIGH threat: first CPU-optimized ternary inference, faster than llama.cpp Q4_K_M. +pub fn fairyfuse_competitor() -> CompetitorScore { + return CompetitorScore { + name: "FairyFuse", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "AVX-512 ternary LLM inference 32.4 tok/s (arXiv:2604.20913)", + }; +} + +/// carmen_competitor() -> CompetitorScore +/// CARMEN (arXiv:2605.06878, May 2026): CORDIC-Accelerated Resource-Efficient +/// Multi-Precision Inference Engine. 28nm CMOS, 4.83 TOPS/mm2, 11.67 TOPS/W. +/// EXTREME threat: first silicon-proven CORDIC-based inference ASIC with PPA. +pub fn carmen_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CARMEN", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "28nm CORDIC ASIC 4.83 TOPS/mm2 (arXiv:2605.06878)", + }; +} + +pub fn tom_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TOM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "ROM-based ternary ASIC 3,306 tok/s BitNet-2B 5.33W (arXiv:2602.20662)", + }; +} + +pub fn tellme_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TeLLMe", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Edge FPGA KV260 ternary LLM 9.51 tok/s <7W prefill+decode (arXiv:2504.16266)", + }; +} + +pub fn tenet_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TENET", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Sparsity-aware LUT ternary LLM 21.1x energy vs A100 (arXiv:2509.13765)", + }; +} + +pub fn lutgen_competitor() -> CompetitorScore { + return CompetitorScore { + name: "LUTGen", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Chisel RTL generator LUT ternary 1.58-bit 2.2x area reduction TSMC 16nm (arXiv:2604.25183)", + }; +} + +pub fn nythe_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Nythe", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Simplicial Gauge Theory E8 factorial combinatorics alpha_inv 137.0362 (viXra:2601.0095)", + }; +} + +pub fn wilson_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Wilson", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "SM embeddings in E8 via so(7,3) quantum gravity reinterpretation (arXiv:2507.16517)", + }; +} + +pub fn jarry_qvg_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Jarry_QVG", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Quantum Vacuum Geometry spectral SM derivation CMB 2.709K viXra:2603.0067 (Bertrand Jarry)", + }; +} + +pub fn manhvu_competitor() -> CompetitorScore { + return CompetitorScore { + name: "manhvu", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Balanced_Ternary Elixir systolic PE array FPGA guide 50K tok/s edge (GitHub: manhvu/Balanced_Ternary 2026)", + }; +} + +pub fn baron_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Baron", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Low-rank ternary fermion mass structure neutrino ratios 3:27:125 (arXiv:2606.08459)", + }; +} + +pub fn loualidi_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Loualidi", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "T'-modular neutrino mass model arXiv:2606.11346 discrete gauge anomaly cancellation", + }; +} + +pub fn chamseddine_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Chamseddine", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Connes-Chamseddine spectral triple twist NCG Standard Model derivation (arXiv:2405.09947)", + }; +} + +pub fn ardakanian_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Ardakanian", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Z3 Froggatt-Nielsen flavor symmetry fermion mass hierarchy (arXiv:2603.15455)", + }; +} + +pub fn hubner_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Hubner", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Koide ratio minimization theorem Q_min=Q_0/(1+Q_0) charged lepton+charm (arXiv:2605.09651)", + }; +} + +pub fn krause_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Krause", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Icosahedral A5 Higgs self-coupling m_H=125.112 GeV top/Higgs phi^(2/3) (Zenodo 2026)", + }; +} + +// W130 new competitor tests +test bitsmm_competitor_name + when c = bitsmm_competitor() + then c.name == "bitSMM" + +test abraxas1010_competitor_name + when c = abraxas1010_competitor() + then c.name == "Abraxas1010" + +test bika_competitor_name + when c = bika_competitor() + then c.name == "BiKA" + +test gift_competitor_name + when c = gift_competitor() + then c.name == "GIFT" + +test washburn_competitor_name + when c = washburn_competitor() + then c.name == "Washburn" + +test baez_schwahn_competitor_name + when c = baez_schwahn_competitor() + then c.name == "Baez_Schwahn" + +test agyemang_competitor_name + when c = agyemang_competitor() + then c.name == "Agyemang" + +test dal_borgo_competitor_name + when c = dal_borgo_competitor() + then c.name == "Dal_Borgo_Fasano" + +test gray_competitor_name + when c = gray_competitor() + then c.name == "Gray" + +test teli_singh_competitor_name + when c = teli_singh_competitor() + then c.name == "Teli_Singh" + +test mcgirl_competitor_name + when c = mcgirl_competitor() + then c.name == "McGirl" + +test douglas_qft_competitor_name + when c = douglas_qft_competitor() + then c.name == "Douglas_QFT" + +test yi_liu_competitor_name + when c = yi_liu_competitor() + then c.name == "Yi_Liu" + +test covarrubias_6pi4_competitor_name + when c = covarrubias_6pi4_competitor() + then c.name == "Covarrubias_6Pi4" + +test myo_oo_competitor_name + when c = myo_oo_competitor() + then c.name == "Myo_Oo" + +test alvarez_unified_action_competitor_name + when c = alvarez_unified_action_competitor() + then c.name == "Alvarez_Unified_Action" + +test davidfox998_competitor_name + when c = davidfox998_competitor() + then c.name == "DavidFox998" + +test davidfox998_competitor_benchmark + when c = davidfox998_competitor() + then c.benchmark == "Lean 4 Yang-Mills mass gap, 0 sorry (GitHub: DavidFox998)" + +test grapheneaffiliate_competitor_name + when c = grapheneaffiliate_competitor() + then c.name == "grapheneaffiliate" + +test grapheneaffiliate_competitor_benchmark + when c = grapheneaffiliate_competitor() + then c.benchmark == "E8+Hopf geometric SM, 58 constants, sub-ppb alpha (GitHub: grapheneaffiliate)" + +test cosmologicmind_competitor_name + when c = cosmologicmind_competitor() + then c.name == "cosmologicmind" + +test cosmologicmind_competitor_benchmark + when c = cosmologicmind_competitor() + then c.benchmark == "SDGFT 24-cell topology, 2 free inputs (GitHub: cosmologicmind)" + +test morato_sgup_competitor_name + when c = morato_sgup_competitor() + then c.name == "Morato_SGUP" + +test morato_sgup_competitor_benchmark + when c = morato_sgup_competitor() + then c.benchmark == "Zenodo 600-cell + RH/Goldbach claims, no machine proofs" + +test fairyfuse_competitor_name + when c = fairyfuse_competitor() + then c.name == "FairyFuse" + +test fairyfuse_competitor_benchmark + when c = fairyfuse_competitor() + then c.benchmark == "AVX-512 ternary LLM inference 32.4 tok/s (arXiv:2604.20913)" + +test carmen_competitor_name + when c = carmen_competitor() + then c.name == "CARMEN" + +test carmen_competitor_benchmark + when c = carmen_competitor() + then c.benchmark == "28nm CORDIC ASIC 4.83 TOPS/mm2 (arXiv:2605.06878)" + + +test tom_competitor_benchmark + when c = tom_competitor() + then c.benchmark == "ROM-based ternary ASIC 3,306 tok/s BitNet-2B 5.33W (arXiv:2602.20662)" + + +test tellme_competitor_benchmark + when c = tellme_competitor() + then c.benchmark == "Edge FPGA KV260 ternary LLM 9.51 tok/s <7W prefill+decode (arXiv:2504.16266)" + +test tenet_competitor_name + when c = tenet_competitor() + then c.name == "TENET" + +test tenet_competitor_benchmark + when c = tenet_competitor() + then c.benchmark == "Sparsity-aware LUT ternary LLM 21.1x energy vs A100 (arXiv:2509.13765)" + +test lutgen_competitor_name + when c = lutgen_competitor() + then c.name == "LUTGen" + +test lutgen_competitor_benchmark + when c = lutgen_competitor() + then c.benchmark == "Chisel RTL generator LUT ternary 1.58-bit 2.2x area reduction TSMC 16nm (arXiv:2604.25183)" + +test nythe_competitor_name + when c = nythe_competitor() + then c.name == "Nythe" + +test nythe_competitor_benchmark + when c = nythe_competitor() + then c.benchmark == "Simplicial Gauge Theory E8 factorial combinatorics alpha_inv 137.0362 (viXra:2601.0095)" + +test wilson_competitor_name + when c = wilson_competitor() + then c.name == "Wilson" + +test wilson_competitor_benchmark + when c = wilson_competitor() + then c.benchmark == "SM embeddings in E8 via so(7,3) quantum gravity reinterpretation (arXiv:2507.16517)" + +test jarry_qvg_competitor_name + when c = jarry_qvg_competitor() + then c.name == "Jarry_QVG" + +test jarry_qvg_competitor_benchmark + when c = jarry_qvg_competitor() + then c.benchmark == "Quantum Vacuum Geometry spectral SM derivation CMB 2.709K viXra:2603.0067 (Bertrand Jarry)" + +test manhvu_competitor_name + when c = manhvu_competitor() + then c.name == "manhvu" + +test manhvu_competitor_benchmark + when c = manhvu_competitor() + then c.benchmark == "Balanced_Ternary Elixir systolic PE array FPGA guide 50K tok/s edge (GitHub: manhvu/Balanced_Ternary 2026)" + +test baron_competitor_name + when c = baron_competitor() + then c.name == "Baron" + +test baron_competitor_benchmark + when c = baron_competitor() + then c.benchmark == "Low-rank ternary fermion mass structure neutrino ratios 3:27:125 (arXiv:2606.08459)" + +test loualidi_competitor_name + when c = loualidi_competitor() + then c.name == "Loualidi" + +test loualidi_competitor_benchmark + when c = loualidi_competitor() + then c.benchmark == "T'-modular neutrino mass model arXiv:2606.11346 discrete gauge anomaly cancellation" + +pub fn spivack_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Spivack", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "UGP Physics Program GTE integer seed SM derivation Lean 4 zero sorry (novaspivack.com 2026)", + }; +} + +pub fn singh_2606_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Singh_2606", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "E8xwE8 octonionic unification residual 288 scaffolding SM+pre-gravity (arXiv:2606.12477)", + }; +} + +test spivack_competitor_name + when c = spivack_competitor() + then c.name == "Spivack" + +test spivack_competitor_benchmark + when c = spivack_competitor() + then c.benchmark == "UGP Physics Program GTE integer seed SM derivation Lean 4 zero sorry (novaspivack.com 2026)" + +test singh_2606_competitor_name + when c = singh_2606_competitor() + then c.name == "Singh_2606" + +test singh_2606_competitor_benchmark + when c = singh_2606_competitor() + then c.benchmark == "E8xwE8 octonionic unification residual 288 scaffolding SM+pre-gravity (arXiv:2606.12477)" + +test chamseddine_competitor_name + when c = chamseddine_competitor() + then c.name == "Chamseddine" + +test chamseddine_competitor_benchmark + when c = chamseddine_competitor() + then c.benchmark == "Connes-Chamseddine spectral triple twist NCG Standard Model derivation (arXiv:2405.09947)" + +test ardakanian_competitor_name + when c = ardakanian_competitor() + then c.name == "Ardakanian" + +test ardakanian_competitor_benchmark + when c = ardakanian_competitor() + then c.benchmark == "Z3 Froggatt-Nielsen flavor symmetry fermion mass hierarchy (arXiv:2603.15455)" + +test hubner_competitor_name + when c = hubner_competitor() + then c.name == "Hubner" + +test hubner_competitor_benchmark + when c = hubner_competitor() + then c.benchmark == "Koide ratio minimization theorem Q_min=Q_0/(1+Q_0) charged lepton+charm (arXiv:2605.09651)" + +test krause_competitor_name + when c = krause_competitor() + then c.name == "Krause" + +test krause_competitor_benchmark + when c = krause_competitor() + then c.benchmark == "Icosahedral A5 Higgs self-coupling m_H=125.112 GeV top/Higgs phi^(2/3) (Zenodo 2026)" + +pub fn shulga_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Shulga", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Koide geometry from compact circle plus Berry dressing m_tau=1776.97 MeV (arXiv:2605.10245)", + }; +} + +pub fn smart_vfd_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Smart_VFD", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "600-cell Laplacian spectrum 13 masses avg error 0.014 pct zero fitted params (vibrationalfielddynamics.org 2026)", + }; +} + +test shulga_competitor_name + when c = shulga_competitor() + then c.name == "Shulga" + +test shulga_competitor_benchmark + when c = shulga_competitor() + then c.benchmark == "Koide geometry from compact circle plus Berry dressing m_tau=1776.97 MeV (arXiv:2605.10245)" + +test smart_vfd_competitor_name + when c = smart_vfd_competitor() + then c.name == "Smart_VFD" + +test smart_vfd_competitor_benchmark + when c = smart_vfd_competitor() + then c.benchmark == "600-cell Laplacian spectrum 13 masses avg error 0.014 pct zero fitted params (vibrationalfielddynamics.org 2026)" + +pub fn russo_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Russo", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "C4 Coxeter tessellation SM gauge algebra M_GUT=6.5e15 GeV supersymmetry (preprints.org 202505.0662)", + }; +} + +pub fn ndiaye_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Ndiaye", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Koide angle as conformal dimension SU(3)_3 WZW exceptional Jordan algebra J3(O) (ai.viXra:2603.0020)", + }; +} + +test russo_competitor_name + when c = russo_competitor() + then c.name == "Russo" + +test russo_competitor_benchmark + when c = russo_competitor() + then c.benchmark == "C4 Coxeter tessellation SM gauge algebra M_GUT=6.5e15 GeV supersymmetry (preprints.org 202505.0662)" + +test ndiaye_competitor_name + when c = ndiaye_competitor() + then c.name == "Ndiaye" + +test ndiaye_competitor_benchmark + when c = ndiaye_competitor() + then c.benchmark == "Koide angle as conformal dimension SU(3)_3 WZW exceptional Jordan algebra J3(O) (ai.viXra:2603.0020)" + +pub fn barger_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Barger", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "B-lattice compositeness Z9 symmetry mb/mtau=phi neutrino axion tan-beta (arXiv:2605.28608)", + }; +} + +pub fn rivero_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Rivero", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Inverse Koide sum rules down-type quarks Q=2/3 near 280 TeV (arXiv:2606.10060)", + }; +} + +test barger_competitor_name + when c = barger_competitor() + then c.name == "Barger" + +test barger_competitor_benchmark + when c = barger_competitor() + then c.benchmark == "B-lattice compositeness Z9 symmetry mb/mtau=phi neutrino axion tan-beta (arXiv:2605.28608)" + +test rivero_competitor_name + when c = rivero_competitor() + then c.name == "Rivero" + +test rivero_competitor_benchmark + when c = rivero_competitor() + then c.benchmark == "Inverse Koide sum rules down-type quarks Q=2/3 near 280 TeV (arXiv:2606.10060)" + +/// barrett_burridge_competitor() -> CompetitorScore +/// Barrett & Burridge (arXiv:2604.19549, April 2026): Fuzzy Geometries with an Internal Space. +/// Product of matrix spectral triple with 2D internal space; inner fluctuations via Connes one-forms. +/// NCG foundational work; does NOT derive SM particle content, masses, or mixing matrices. +/// LOW threat: serious peer-reviewed-quality preprint, complementary to Trinity, not competitive. +pub fn barrett_burridge_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Barrett_Burridge", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Fuzzy geometries internal space NCG foundational (arXiv:2604.19549)", + }; +} + +/// torrente_lujan_competitor() -> CompetitorScore +/// Torrente-Lujan (arXiv:2605.21721, May 2026): Higgs-top-Z mass coincidence after NNLO. +/// Empirical relation M_H^2 ~ M_Z * M_t tested at NNLO; compatible at 1.4sigma but no geometric origin. +/// LOW threat: mainstream phenomenology paper, does not claim geometric SM derivation. +pub fn torrente_lujan_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Torrente_Lujan", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Higgs-top-Z mass coincidence NNLO phenomenology (arXiv:2605.21721)", + }; +} + +test barrett_burridge_competitor_name + when c = barrett_burridge_competitor() + then c.name == "Barrett_Burridge" + +test barrett_burridge_competitor_benchmark + when c = barrett_burridge_competitor() + then c.benchmark == "Fuzzy geometries internal space NCG foundational (arXiv:2604.19549)" + +test torrente_lujan_competitor_name + when c = torrente_lujan_competitor() + then c.name == "Torrente_Lujan" + +test torrente_lujan_competitor_benchmark + when c = torrente_lujan_competitor() + then c.benchmark == "Higgs-top-Z mass coincidence NNLO phenomenology (arXiv:2605.21721)" + +/// philarchive_structural_sm_competitor() -> CompetitorScore +/// PhilArchive (June 2026): Philosophy paper on "structural origin of SM gauge symmetry." +/// Information-geometric claims with no physics phenomenology. No institutional affiliation. +/// LOW threat: speculative philosophy-of-physics; no mathematics, no predictions, no verification. +pub fn philarchive_structural_sm_competitor() -> CompetitorScore { + return CompetitorScore { + name: "PhilArchive_Structural_SM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "PhilArchive structural origin SM gauge symmetry (philosophy, no pheno)", + }; +} + +/// academia_geometric_alpha_competitor() -> CompetitorScore +/// Academia.edu (June 2026): "Geometric locking of alpha" by unaffiliated author. +/// Lattice-geometry derivations of fine-structure constant via convoluted modular arithmetic. +/// No peer-review signals, no institutional credibility. +/// LOW threat: lacks methodological rigor for competitive matrix inclusion; monitoring only. +pub fn academia_geometric_alpha_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Academia_Geometric_Alpha", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Academia geometric locking alpha modular arithmetic (unaffiliated)", + }; +} + +/// martinetti_twisted_competitor() -> CompetitorScore +/// arXiv:2603.03216 (March 2026): P. Martinetti -- "Twisted Standard Model and its Krein structure". +/// Formal extension of Connes spectral triples with twist operator; Krein-space inner product. +/// Addresses Majorana neutrino masses and extra scalar field for Higgs stability. +/// MEDIUM threat: rigorous mathematical physics, but no explicit Higgs mass prediction yet. +pub fn martinetti_twisted_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Martinetti_Twisted_Spectral", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Twisted spectral triple Krein structure formal SM extension (arXiv:2603.03216)", + }; +} + +/// ontological_inversion_competitor() -> CompetitorScore +/// Zenodo:19601643 (April 2026): "The Ontological Inversion and Sparsity Metrics". +/// Self-published OBMT framework linking Fano-plane/icosahedral geometry to SM parameters. +/// Claims Higgs mass derived from "Row 78" via golden-ratio projection; no verification. +/// LOW threat: speculative, self-published, lacks institutional peer-review. +pub fn ontological_inversion_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Ontological_Inversion", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "OBMT geometric Higgs from Row 78 phi-projection (Zenodo:19601643, no peer review)", + }; +} + +/// agyemang_e8_boundary_2026_competitor() -> CompetitorScore +/// Zenodo:20525049 (June 2026): "Eleven Fundamental Constants from E8 Boundary Geometry". +/// Derives 11 SM constants from E8 root lattice with four exact inputs (dim 248, |alpha|^2=2, +/// dual Coxeter number h*=30, c=8). Predicts electron mass m_e = 0.51130 MeV. +/// MEDIUM threat: rigorous lattice mathematics, institutional affiliation (AIMS Ghana), +/// but no hardware path, no formal proofs, no Higgs mass prediction. +pub fn agyemang_e8_boundary_2026_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Agyemang_E8_Boundary_2026", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "E8 boundary geometry 11 constants electron mass (Zenodo:20525049, June 2026)", + }; +} + +/// genesis_matrix_trialgebra_competitor() -> CompetitorScore +/// Zenodo:18268874 (January 2026): "GENESIS MATRIX - Trialgebra V2 Master Edition". +/// Philosophical manifesto proposing a three-state logic (1, 0, flux) as replacement for binary. +/// No engineering implementation, no SM predictions, no hardware, no mathematics. +/// LOW threat: pure philosophy-of-logic; no competitive overlap with Trinity. +pub fn genesis_matrix_trialgebra_competitor() -> CompetitorScore { + return CompetitorScore { + name: "GenesisMatrix_Trialgebra", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Trialgebra V2 three-state logic manifesto (Zenodo:18268874, no engineering)", + }; +} + +/// barger_unified_flavor_2026_competitor() -> CompetitorScore +/// arXiv:2603.11341 (March 2026): V. Barger -- "Unified Flavor: Lattice Quantization, Chain Locality, +/// and a Dynamical Origin of Hierarchical Yukawas". Golden ratio anchors b-tau mass relation; +/// B-lattice generates all Yukawa hierarchies from epsilon = 1/B with B = 75/14. +/// MEDIUM threat: rigorous flavor physics on arXiv, but no formal proofs, no hardware, no SM predictions beyond masses. +pub fn barger_unified_flavor_2026_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Barger_UnifiedFlavor_2026", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Unified Flavor B-lattice Yukawa hierarchy with golden ratio (arXiv:2603.11341)", + }; +} + +/// cern_ng_triggers_2026_competitor() -> CompetitorScore +/// Zenodo:18242392 (January 2026): CERN "Next Generation Triggers ML Optimization". +/// Survey of quantization techniques for FPGA-based real-time inference at CERN. +/// Covers symmetric/asymmetric, weight-only, mixed precision -- but NOT ternary/balanced. +/// LOW threat: FPGA quantization survey without ternary focus; no SM predictions, no formal proofs. +pub fn cern_ng_triggers_2026_competitor() -> CompetitorScore { + return CompetitorScore { + name: "CERN_NGTriggers_2026", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "CERN next-gen triggers FPGA quantization survey (Zenodo:18242392, no ternary)", + }; +} + +/// chen_king_valle_golden_mass_competitor() -> CompetitorScore +/// arXiv:2312.09255 (Dec 2024): Chen, King, Valle -- "Quark-lepton mass relations from modular +/// flavor symmetry". Derives approximate golden quark-lepton mass relation: +/// m_b/sqrt(m_s*m_d) ~ m_tau/sqrt(m_mu*m_e) without GUT or flavon alignments. +/// Stable under RG evolution. MEDIUM threat: peer-review-track modular flavor physics, +/// but no formal proofs, no hardware, no Higgs mass prediction. +pub fn chen_king_valle_golden_mass_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ChenKingValle_GoldenMass", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Golden quark-lepton mass relation from modular flavor symmetry (arXiv:2312.09255)", + }; +} + +/// kaushik_vaibhav_singh_e8e8_competitor() -> CompetitorScore +/// arXiv:2206.06911 (June 2022): Kaushik, Vaibhav, Singh -- "E8tensorE8 Unification of the Standard +/// Model with Pre-Gravitation". Octonionic manifold, trace dynamics, spectral action principle. +/// Branches E8tensorE8 to SM gauge group + pre-gravitation sector. 288 unaccounted DOFs. +/// MEDIUM threat: rigorous E8 unification program with institutional affiliation (TIFR), +/// but no formal proofs, no hardware, no explicit Higgs mass prediction. +pub fn kaushik_vaibhav_singh_e8e8_competitor() -> CompetitorScore { + return CompetitorScore { + name: "KaushikVaibhavSingh_E8E8", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "E8tensorE8 unification with pre-gravitation and spectral action (arXiv:2206.06911)", + }; +} + +/// BitLogic (ETH Zurich, 2026): FPGA-native LUT-based neural network inference engine. +/// MEDIUM threat: silicon-verified ternary FPGA competitor with institutional backing, +/// no formal SM predictions, no Coq proofs, narrow scope (inference only). +pub fn bitlogic_eth_2026_competitor() -> CompetitorScore { + return CompetitorScore { + name: "BitLogic_ETH_2026", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "LUT-based NN inference on Xilinx FPGA (arXiv:2602.07400, ETH Zurich)", + }; +} + +test philarchive_structural_sm_competitor_name + when c = philarchive_structural_sm_competitor() + then c.name == "PhilArchive_Structural_SM" + +test philarchive_structural_sm_competitor_benchmark + when c = philarchive_structural_sm_competitor() + then c.benchmark == "PhilArchive structural origin SM gauge symmetry (philosophy, no pheno)" + +test academia_geometric_alpha_competitor_name + when c = academia_geometric_alpha_competitor() + then c.name == "Academia_Geometric_Alpha" + +test academia_geometric_alpha_competitor_benchmark + when c = academia_geometric_alpha_competitor() + then c.benchmark == "Academia geometric locking alpha modular arithmetic (unaffiliated)" + +test martinetti_twisted_competitor_name + when c = martinetti_twisted_competitor() + then c.name == "Martinetti_Twisted_Spectral" + +test martinetti_twisted_competitor_benchmark + when c = martinetti_twisted_competitor() + then c.benchmark == "Twisted spectral triple Krein structure formal SM extension (arXiv:2603.03216)" + +test ontological_inversion_competitor_name + when c = ontological_inversion_competitor() + then c.name == "Ontological_Inversion" + +test ontological_inversion_competitor_benchmark + when c = ontological_inversion_competitor() + then c.benchmark == "OBMT geometric Higgs from Row 78 phi-projection (Zenodo:19601643, no peer review)" + +test agyemang_e8_boundary_2026_competitor_name + when c = agyemang_e8_boundary_2026_competitor() + then c.name == "Agyemang_E8_Boundary_2026" + +test agyemang_e8_boundary_2026_competitor_benchmark + when c = agyemang_e8_boundary_2026_competitor() + then c.benchmark == "E8 boundary geometry 11 constants electron mass (Zenodo:20525049, June 2026)" + +test genesis_matrix_trialgebra_competitor_name + when c = genesis_matrix_trialgebra_competitor() + then c.name == "GenesisMatrix_Trialgebra" + +test genesis_matrix_trialgebra_competitor_benchmark + when c = genesis_matrix_trialgebra_competitor() + then c.benchmark == "Trialgebra V2 three-state logic manifesto (Zenodo:18268874, no engineering)" + +test barger_unified_flavor_2026_competitor_name + when c = barger_unified_flavor_2026_competitor() + then c.name == "Barger_UnifiedFlavor_2026" + +test barger_unified_flavor_2026_competitor_benchmark + when c = barger_unified_flavor_2026_competitor() + then c.benchmark == "Unified Flavor B-lattice Yukawa hierarchy with golden ratio (arXiv:2603.11341)" + +test cern_ng_triggers_2026_competitor_name + when c = cern_ng_triggers_2026_competitor() + then c.name == "CERN_NGTriggers_2026" + +test cern_ng_triggers_2026_competitor_benchmark + when c = cern_ng_triggers_2026_competitor() + then c.benchmark == "CERN next-gen triggers FPGA quantization survey (Zenodo:18242392, no ternary)" + +test chen_king_valle_golden_mass_competitor_name + when c = chen_king_valle_golden_mass_competitor() + then c.name == "ChenKingValle_GoldenMass" + +test chen_king_valle_golden_mass_competitor_benchmark + when c = chen_king_valle_golden_mass_competitor() + then c.benchmark == "Golden quark-lepton mass relation from modular flavor symmetry (arXiv:2312.09255)" + +test kaushik_vaibhav_singh_e8e8_competitor_name + when c = kaushik_vaibhav_singh_e8e8_competitor() + then c.name == "KaushikVaibhavSingh_E8E8" + +test kaushik_vaibhav_singh_e8e8_competitor_benchmark + when c = kaushik_vaibhav_singh_e8e8_competitor() + then c.benchmark == "E8tensorE8 unification with pre-gravitation and spectral action (arXiv:2206.06911)" + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + +invariant trinity_phi_identity: + assert 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + + invariant benchmarkreport_sacred_rate_nonnegative: + forall s : BenchmarkReport, s.sacred_rate >= 0.0 + +invariant benchmark_task_sacred_required_boolean + forall t : BenchmarkTask + t.sacred_required == true || t.sacred_required == false + +invariant benchmark_compute_aggregate_report_empty_zero + forall results : []BenchmarkResult + results.len() == 0 ==> compute_aggregate_report(results).total_tasks == 0 + +bench benchmark_suite_latency + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given tasks = [BenchmarkTask { task_id: "t1", prompt: "p", golden_rtl: "m", language: "verilog", sacred_required: true }] + measure run_benchmark_suite(bank, tasks) + target latency_ms < 10.0 + +/// TerEffic (arXiv:2502.16473v2, Feb 2025): Highly efficient ternary LLM inference on FPGA. +/// Uses custom LUT-based Ternary Matrix Multiplication (TMat) core instead of DSPs. +/// MEDIUM-LOW threat: engineering-level FPGA accelerator, no formal physics, no spec language. +pub fn tereffic_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TerEffic", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Ternary LLM inference on FPGA with TMat LUT core (arXiv:2502.16473v2)", + }; +} + +/// ReTern (arXiv:2506.01140, June 2025): Fault tolerance for ternary compute-in-memory LLMs. +/// Uses fault-aware sign transformations and bit-cell reprogramming for stuck-at faults. +/// LOW threat: niche fault-tolerance angle, no formal physics, no hardware beyond CiM. +pub fn retern_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ReTern", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Fault-tolerant ternary CiM LLM via sign transformations (arXiv:2506.01140)", + }; +} + +/// GargantuRAM (GitHub: Ternary-Computer-System/GargantuRAM, Feb 2026) -- 24-trit balanced ternary RISC processor. +/// Verified on Efinix Trion T120F484 FPGA at 20 MHz. Shipped as full open-hardware dev board (CERN-OHL-P v2). +/// MEDIUM-HIGH threat: first shipped ternary dev board with institutional open-hardware license, but generic RISC ISA +/// (not custom ternary from ground up), no formal SM predictions, no spec language. +pub fn garganturam_competitor() -> CompetitorScore { + return CompetitorScore { + name: "GargantuRAM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "24-trit balanced ternary RISC on Efinix FPGA, CERN-OHL-P dev board (GitHub 2026)", + }; +} + +/// TernaryLM (arXiv:2602.07374v2, Feb 2026) -- 132M-parameter decoder-only transformer with native ternary weights {-1,0,+1}. +/// Achieves 58.42 perplexity on TinyStories and 82.47% F1 on MRPC. Software-only, no hardware co-design. +/// MEDIUM threat: demonstrates ternary LLM training from scratch at meaningful scale, but no FPGA/ASIC path, no formal physics. +pub fn ternarylm_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TernaryLM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "132M ternary decoder-only transformer, 58.42 ppl TinyStories (arXiv:2602.07374v2)", + }; +} + +/// TheusHen ternary-ibex (MHX Core, GitHub Jan 2026): RISC-V Ibex fork with ternary register file +/// and Ternary ALU. Claims 2.68x speedup on MLPerfTiny v1.0. MEDIUM threat: research-grade only, +/// no silicon roadmap, hybrid RISC-V+ternary (not native ternary), no formal spec language. +pub fn ternary_ibex_competitor() -> CompetitorScore { + return CompetitorScore { + name: "TernaryIbex", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "RISC-V Ibex fork with ternary ALU and NPU (GitHub: TheusHen/ternary-ibex, Jan 2026)", + }; +} + +/// ETH Zurich FPGA Systems -- ternaryLLM accelerator for Alveo U55C. +/// Ternary sparse GEMM in LLM inference via ETH Coyote framework. +/// Heterogeneous Accelerated Compute Cluster (HACC) deployment. +/// Pre-built bitstream for U55C; SpinalHDL/Verilog generation flow. +/// MEDIUM threat: concrete FPGA deployment, no formal proofs, no SM physics link. +pub fn eth_ternaryllm_competitor() -> CompetitorScore { + return CompetitorScore { + name: "ETH_TernaryLLM", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Ternary sparse GEMM LLM accelerator on Xilinx Alveo U55C (GitHub: fpgasystems/ternaryLLM, ETH Zurich 2026)", + }; +} + +test bitlogic_eth_2026_competitor_name + when c = bitlogic_eth_2026_competitor() + then c.name == "BitLogic_ETH_2026" + +test bitlogic_eth_2026_competitor_benchmark + when c = bitlogic_eth_2026_competitor() + then c.benchmark == "LUT-based NN inference on Xilinx FPGA (arXiv:2602.07400, ETH Zurich)" + +test tereffic_competitor_name + when c = tereffic_competitor() + then c.name == "TerEffic" + +test tereffic_competitor_benchmark + when c = tereffic_competitor() + then c.benchmark == "Ternary LLM inference on FPGA with TMat LUT core (arXiv:2502.16473v2)" + +test retern_competitor_name + when c = retern_competitor() + then c.name == "ReTern" + +test retern_competitor_benchmark + when c = retern_competitor() + then c.benchmark == "Fault-tolerant ternary CiM LLM via sign transformations (arXiv:2506.01140)" + +test garganturam_competitor_name + when c = garganturam_competitor() + then c.name == "GargantuRAM" + +test garganturam_competitor_benchmark + when c = garganturam_competitor() + then c.benchmark == "24-trit balanced ternary RISC on Efinix FPGA, CERN-OHL-P dev board (GitHub 2026)" + +test ternarylm_competitor_name + when c = ternarylm_competitor() + then c.name == "TernaryLM" + +test ternarylm_competitor_benchmark + when c = ternarylm_competitor() + then c.benchmark == "132M ternary decoder-only transformer, 58.42 ppl TinyStories (arXiv:2602.07374v2)" + +test ternary_ibex_competitor_name + when c = ternary_ibex_competitor() + then c.name == "TernaryIbex" + +test ternary_ibex_competitor_benchmark + when c = ternary_ibex_competitor() + then c.benchmark == "RISC-V Ibex fork with ternary ALU and NPU (GitHub: TheusHen/ternary-ibex, Jan 2026)" + +test eth_ternaryllm_competitor_name + when c = eth_ternaryllm_competitor() + then c.name == "ETH_TernaryLLM" + +test eth_ternaryllm_competitor_benchmark + when c = eth_ternaryllm_competitor() + then c.benchmark == "Ternary sparse GEMM LLM accelerator on Xilinx Alveo U55C (GitHub: fpgasystems/ternaryLLM, ETH Zurich 2026)" + +/// neumann_labs_ternfpga_competitor() -> CompetitorScore +/// Neumann-Labs "ternfpga" (GitHub: Neumann-Labs/ternfpga, created Jun 2026). +/// Multiplier-free, sparsity-skipping ternary LLM inference engine on $130 Arty A7-35T FPGA. +/// Beats RTX 3060 on energy-per-token (~1.62 J/tok vs 3.67 J/tok) via ~60% activation sparsity. +/// HIGH threat: concrete open-source FPGA RTL with energy efficiency claims. +pub fn neumann_labs_ternfpga_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Neumann-Labs-ternfpga", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Ternary FPGA LLM inference engine, Arty A7-35T, 1.62 J/tok (GitHub: Neumann-Labs/ternfpga, Jun 2026)", + }; +} + +/// duplij_guo_fu_ternary_crypto_competitor() -> CompetitorScore +/// Duplij, Guo & Fu -- "Ternary public-key cryptosystem" (arXiv:2606.07832v1, Jun 2026). +/// Generalizes ElGamal to ternary groups and matrix-ternarized rings. +/// LOW threat: theoretical crypto with no hardware path, no SM physics link. +pub fn duplij_guo_fu_ternary_crypto_competitor() -> CompetitorScore { + return CompetitorScore { + name: "Duplij-Guo-Fu-TernaryCrypto", + pass_at_1: 0.0, + pass_at_5: 0.0, + pass_at_10: 0.0, + benchmark: "Ternary public-key cryptosystem, ElGamal over ternary groups (arXiv:2606.07832v1, Jun 2026)", + }; +} + +test neumann_labs_ternfpga_competitor_name + when c = neumann_labs_ternfpga_competitor() + then c.name == "Neumann-Labs-ternfpga" + +test neumann_labs_ternfpga_competitor_benchmark + when c = neumann_labs_ternfpga_competitor() + then c.benchmark == "Ternary FPGA LLM inference engine, Arty A7-35T, 1.62 J/tok (GitHub: Neumann-Labs/ternfpga, Jun 2026)" + +test duplij_guo_fu_ternary_crypto_competitor_name + when c = duplij_guo_fu_ternary_crypto_competitor() + then c.name == "Duplij-Guo-Fu-TernaryCrypto" + +test duplij_guo_fu_ternary_crypto_competitor_benchmark + when c = duplij_guo_fu_ternary_crypto_competitor() + then c.benchmark == "Ternary public-key cryptosystem, ElGamal over ternary groups (arXiv:2606.07832v1, Jun 2026)" + +test benchmark_report_sacred_rate_one + given r = BenchmarkReport { sacred_rate: 1.0, total_tests: 10, passed_tests: 10, avg_latency_ms: 1.0 } + then r.sacred_rate == 1.0 + +test benchmark_report_total_tests_positive + given r = BenchmarkReport { sacred_rate: 0.5, total_tests: 20, passed_tests: 10, avg_latency_ms: 2.0 } + then r.total_tests > 0 + +test benchmark_task_task_id_nonempty + given t = BenchmarkTask { task_id: "t1", prompt: "p", golden_rtl: "m", language: "verilog", sacred_required: true } + then t.task_id.len() > 0 + +test benchmark_compute_aggregate_report_empty + given results = []BenchmarkResult{} + when r = compute_aggregate_report(results) + then r.total_tasks == 0 + +test benchmark_compare_with_competitor_pass_at_1 + given trinity = BenchmarkReport { pass_at_1: 0.8, pass_at_5: 0.9, pass_at_10: 0.95, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.85, total_tasks: 10 } + given competitor = CompetitorScore { name: "Test", pass_at_1: 0.7, pass_at_5: 0.8, pass_at_10: 0.9, benchmark: "b" } + when delta = compare_with_competitor(trinity, competitor, 1) + then delta > 0.0 + +test benchmark_benchmark_task_from_dataset_conversion + given sample = DataSample { prompt: "generate an adder", rtl: "module adder; endmodule", template: "adder" } + when task = benchmark_task_from_dataset(sample) + then task.prompt == "generate an adder" + +test benchmark_compare_with_competitor_equal_returns_zero + given trinity = BenchmarkReport { pass_at_1: 0.7, pass_at_5: 0.8, pass_at_10: 0.9, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.85, total_tasks: 10 } + given competitor = CompetitorScore { name: "Equal", pass_at_1: 0.7, pass_at_5: 0.8, pass_at_10: 0.9, benchmark: "b" } + when delta = compare_with_competitor(trinity, competitor, 1) + then delta == 0.0 + +test benchmark_trinity_self_train_estimate_positive + when e = trinity_self_train_estimate() + then e > 0.0 + +test benchmark_task_from_dataset_template_preserved + given sample = DataSample { prompt: "generate a multiplier", rtl: "module mul; endmodule", template: "booth" } + when task = benchmark_task_from_dataset(sample) + then task.template == "booth" + +test benchmark_task_from_dataset_rtl_preserved + given sample = DataSample { prompt: "test", rtl: "module test; endmodule", template: "test" } + when task = benchmark_task_from_dataset(sample) + then task.golden_rtl == "module test; endmodule" + +test benchmark_evaluate_task_at_k_zero_returns_false + given bank = WeightBank { weights: []f32{} } + given task = BenchmarkTask { task_id: "t", prompt: "p", golden_rtl: "g", language: "v", sacred_required: false } + when r = evaluate_task_at_k(bank, task, 0) + then r == false + +test benchmark_count_passed_empty_zero + given results = []BenchmarkResult{} + when n = count_passed(results, 0, 0) + then n == 0 + +invariant benchmark_count_passed_nonnegative: + forall results : []BenchmarkResult + count_passed(results, 0, 0) >= 0 + +invariant benchmark_trinity_self_train_estimate_bounded: + forall + trinity_self_train_estimate() > 0.0 + && trinity_self_train_estimate() < 1.0 + +test benchmark_count_passed_all_passed + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m2" }] + when n = count_passed(results, 0, 0) + then n == 2 + +test benchmark_count_passed_single_failed + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: false, passed_at_5: false, passed_at_10: false, module_name: "m2" }] + when n = count_passed(results, 0, 0) + then n == 1 + +test benchmark_count_passed_at_5_empty_zero + given results = []BenchmarkResult{} + when n = count_passed_at_5(results, 0, 0) + then n == 0 + +invariant benchmark_count_passed_bounded_by_len: + forall results : []BenchmarkResult + count_passed(results, 0, 0) <= results.len() + +bench competitor_lookup_latency + when c = chipcraftbrain_competitor() + measure c.pass_at_1 + target latency_us < 1.0 + + +test benchmark_count_passed_at_5_all_passed + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m2" }] + when n = count_passed_at_5(results, 0, 0) + then n == 2 + + +invariant benchmark_count_passed_at_5_bounded_by_len + forall results : []BenchmarkResult + count_passed_at_5(results, 0, 0) <= results.len() + +test benchmark_count_passed_all_failed + given results = [BenchmarkResult { passed: false, passed_at_5: false, passed_at_10: false, module_name: "m1" }, BenchmarkResult { passed: false, passed_at_5: false, passed_at_10: false, module_name: "m2" }] + when n = count_passed(results, 0, 0) + then n == 0 + +test benchmark_count_passed_at_5_single_passed + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: false, module_name: "m1" }, BenchmarkResult { passed: false, passed_at_5: false, passed_at_10: false, module_name: "m2" }] + when n = count_passed_at_5(results, 0, 0) + then n == 1 + +test benchmark_count_passed_mixed + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: false, passed_at_5: false, passed_at_10: false, module_name: "m2" }, BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m3" }] + when n = count_passed(results, 0, 0) + then n == 2 + +invariant benchmark_count_passed_bounded_by_len_inv: + forall results : []BenchmarkResult + count_passed(results, 0, 0) >= 0 && count_passed(results, 0, 0) <= results.len() + + + +invariant benchmark_count_passed_empty_zero_inv: + forall results : []BenchmarkResult + results.len() == 0 ==> count_passed(results, 0, 0) == 0 + + + +invariant benchmark_count_passed_all_passed_inv: + forall results : []BenchmarkResult + results.len() > 0 && results[0].passed == true ==> count_passed(results, 0, 0) >= 1 + +test benchmark_estimate_pass_at_k_full_coverage + given coverage = 1.0 + given k = 5 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est == 1.0 + +test benchmark_compare_with_competitor_self_zero + given trinity = BenchmarkReport { pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.5, total_tasks: 10 } + given competitor = CompetitorScore { name: "Self", pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, benchmark: "test" } + when gap = compare_with_competitor(trinity, competitor, 1) + then gap == 0.0 + +invariant benchmark_estimate_pass_at_k_bounded: + forall coverage : f32, k : u32 + estimate_pass_at_k_from_coverage(coverage, k) >= 0.0 + && estimate_pass_at_k_from_coverage(coverage, k) <= 1.0 + +test benchmark_estimate_pass_at_k_zero_coverage_zero + given coverage = 0.0 + given k = 5 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est == 0.0 + +test benchmark_compare_with_competitor_self_zero_metric_5 + given trinity = BenchmarkReport { pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.5, total_tasks: 10 } + given competitor = CompetitorScore { name: "Self", pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, benchmark: "test" } + when gap = compare_with_competitor(trinity, competitor, 5) + then gap == 0.0 + +invariant benchmark_estimate_pass_at_k_zero_coverage_zero_inv: + forall k : u32 + estimate_pass_at_k_from_coverage(0.0, k) == 0.0 + +test benchmark_estimate_pass_at_k_full_coverage_one + given coverage = 1.0 + given k = 1 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est == 1.0 + +test benchmark_compare_with_competitor_self_zero_metric_10 + given trinity = BenchmarkReport { pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.5, total_tasks: 10 } + given competitor = CompetitorScore { name: "Self", pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, benchmark: "test" } + when gap = compare_with_competitor(trinity, competitor, 10) + then gap == 0.0 + +invariant benchmark_estimate_pass_at_k_full_coverage_one_inv: + forall k : u32 + estimate_pass_at_k_from_coverage(1.0, k) == 1.0 + +test benchmark_estimate_pass_at_k_half_coverage + given coverage = 0.5 + given k = 1 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est == 0.5 + +test benchmark_compare_with_competitor_self_zero_metric_2 + given trinity = BenchmarkReport { pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.5, total_tasks: 10 } + given competitor = CompetitorScore { name: "Self", pass_at_1: 0.6, pass_at_5: 0.7, pass_at_10: 0.8, benchmark: "test" } + when gap = compare_with_competitor(trinity, competitor, 2) + then gap == 0.0 + +invariant benchmark_estimate_pass_at_k_half_coverage_inv: + forall k : u32 + estimate_pass_at_k_from_coverage(0.5, k) == 0.5 + +test benchmark_estimate_pass_at_k_full_coverage_2 + given coverage = 1.0 + given k = 1 + when est = estimate_pass_at_k_from_coverage(coverage, k) + then est == 1.0 + +test benchmark_compare_with_competitor_trinity_wins + given trinity = BenchmarkReport { pass_at_1: 0.9, pass_at_5: 0.9, pass_at_10: 0.9, sacred_rate: 1.0, synth_rate: 1.0, avg_ngram: 0.5, total_tasks: 10 } + given competitor = CompetitorScore { name: "Other", pass_at_1: 0.5, pass_at_5: 0.5, pass_at_10: 0.5, benchmark: "test" } + when gap = compare_with_competitor(trinity, competitor, 0) + then gap > 0.0 + +invariant benchmark_estimate_pass_at_k_full_coverage_inv: + forall k : u32 + estimate_pass_at_k_from_coverage(1.0, k) == 1.0 + +test benchmark_count_synth_empty_zero + given results = []BenchmarkResult{} + when n = count_synth(results, 0, 0) + then n == 0 + +test benchmark_pow_f32_zero_exp_one + given base = 3.14 + given exp = 0 + when p = pow_f32(base, exp) + then p == 1.0 + +invariant benchmark_count_synth_empty_zero_inv: + forall results : []BenchmarkResult + results.len() == 0 ==> count_synth(results, 0, 0) == 0 + +test benchmark_single_op_latency_equals_cycles + given ops = 1 + given cycles = 100 + when lat = compute_latency(ops, cycles) + then lat == 100.0 + +invariant benchmark_single_op_latency_equals_cycles_inv: + forall ops : u32, cycles : u32 + ops == 1 ==> compute_latency(ops, cycles) == cycles as f64 + +test benchmark_compute_latency_large_ops + given ops = 1000 + given cycles = 5 + when lat = compute_latency(ops, cycles) + then lat == 5000.0 + +test benchmark_count_failed_empty_zero + given results = [] + when n = count_failed(results) + then n == 0 + +invariant benchmark_count_failed_empty_zero_inv: + forall results : []BenchmarkResult + results.len() == 0 ==> count_failed(results) == 0 + +test benchmark_compute_latency_zero_ops + given ops = 0 + given cycles = 5 + when lat = compute_latency(ops, cycles) + then lat == 0.0 + +test benchmark_count_passed_at_5_single_one + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }] + when n = count_passed_at_5(results, 0, 0) + then n == 1 + +invariant benchmark_compute_latency_zero_ops_inv: + forall ops : u32, cycles : u32 + ops == 0 ==> compute_latency(ops, cycles) == 0.0 + +test benchmark_count_passed_single_passed_one + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }] + when n = count_passed(results) + then n == 1 + +test benchmark_compute_latency_linear_scale + given ops = 10 + given cycles = 5 + when lat = compute_latency(ops, cycles) + then lat == 50.0 + +invariant benchmark_count_passed_single_passed_one_inv: + forall results : []BenchmarkResult + results.len() == 1 && results[0].passed == true ==> count_passed(results) == 1 + +test benchmark_compute_latency_zero_ops_result_w294 + given ops = 0 + given cycles = 5 + when lat = compute_latency(ops, cycles) + then lat == 0.0 + +test benchmark_count_passed_at_5_single_one_result_w294 + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }] + when n = count_passed_at_5(results, 0, 0) + then n == 1 + +invariant benchmark_compute_latency_zero_ops_result_w294_inv: + forall ops : u32, cycles : u32 + ops == 0 ==> compute_latency(ops, cycles) == 0.0 + +test benchmark_compute_latency_zero_cycles_zero_w295 + given ops = 10 + given cycles = 0 + when lat = compute_latency(ops, cycles) + then lat == 0.0 + +test benchmark_count_passed_at_5_empty_zero_w295 + given results = []BenchmarkResult{} + when n = count_passed_at_5(results, 0, 0) + then n == 0 + +invariant benchmark_count_passed_at_5_empty_zero_w295_inv: + count_passed_at_5([]BenchmarkResult{}, 0, 0) == 0 + +test benchmark_compute_latency_one_op_one_cycle_w296 + given ops = 1 + given cycles = 1 + when lat = compute_latency(ops, cycles) + then lat == 1.0 + +test benchmark_count_passed_at_5_all_passed_w296 + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m2" }] + when n = count_passed_at_5(results, 0, 0) + then n == 2 + +invariant benchmark_compute_latency_one_op_one_cycle_w296_inv: + compute_latency(1, 1) == 1.0 + +test benchmark_compute_latency_ten_ops_ten_cycles_w297 + given ops = 10 + given cycles = 10 + when lat = compute_latency(ops, cycles) + then lat == 1.0 + +test benchmark_count_passed_at_5_mixed_results_w297 + given results = [BenchmarkResult { passed: true, passed_at_5: false, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m2" }] + when n = count_passed_at_5(results, 0, 0) + then n == 1 + +invariant benchmark_compute_latency_ten_ops_ten_cycles_w297_inv: + compute_latency(10, 10) == 1.0 + +test benchmark_compute_latency_5ops_10cycles_half_w298 + given ops = 5 + given cycles = 10 + when lat = compute_latency(ops, cycles) + then lat == 0.5 + +test benchmark_count_passed_at_10_all_passed_w298 + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }] + when n = count_passed_at_10(results, 0, 0) + then n == 1 + +invariant benchmark_count_passed_at_10_all_passed_w298_inv: + count_passed_at_10([BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }], 0, 0) == 1 + + +test benchmark_compute_latency_zero_ops_zero_w299 + given ops = 0 + given cycles = 10 + when lat = compute_latency(ops, cycles) + then lat == 0.0 + +test benchmark_count_passed_at_5_all_passed_len_w299 + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m2" }] + when n = count_passed_at_5(results, 0, 0) + then n == 2 + +invariant benchmark_compute_latency_zero_ops_zero_w299_inv: + compute_latency(0, 10) == 0.0 + +test benchmark_compute_latency_one_op_same_cycles_w300 + given ops = 1 + given cycles = 5 + when lat = compute_latency(ops, cycles) + then lat == 5.0 + +test benchmark_count_passed_at_5_mixed_one_w300 + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: false, passed_at_5: false, passed_at_10: false, module_name: "m2" }] + when n = count_passed_at_5(results, 0, 0) + then n == 1 + +invariant benchmark_compute_latency_one_op_same_cycles_w300_inv: + compute_latency(1, 5) == 5.0 + +test benchmark_compute_latency_large_ops_small_cycles_w301 + given ops = 10000 + given cycles = 1 + when lat = compute_latency(ops, cycles) + then lat == 10000.0 + +test benchmark_count_passed_at_5_none_passed_zero_w301 + given results = [] + when n = count_passed_at_5(results, 0, 0) + then n == 0 + +invariant benchmark_count_passed_at_5_none_passed_zero_w301_inv: + count_passed_at_5([], 0, 0) == 0 + +test benchmark_compute_latency_equal_ops_cycles_w302 + given ops = 5 + given cycles = 5 + when lat = compute_latency(ops, cycles) + then lat == 5.0 + +test benchmark_count_passed_at_5_one_passed_one_w302 + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: false, module_name: "m1" }] + when n = count_passed_at_5(results, 0, 0) + then n == 1 + +invariant benchmark_compute_latency_equal_ops_cycles_w302_inv: + compute_latency(5, 5) == 5.0 + +test benchmark_compute_latency_ten_ops_five_cycles_w303 + given ops = 10 + given cycles = 5 + when lat = compute_latency(ops, cycles) + then lat == 10.0 + +test benchmark_count_passed_at_5_three_mixed_two_w303 + given results = [BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: true, module_name: "m1" }, BenchmarkResult { passed: true, passed_at_5: true, passed_at_10: false, module_name: "m2" }, BenchmarkResult { passed: false, passed_at_5: false, passed_at_10: false, module_name: "m3" }] + when n = count_passed_at_5(results, 0, 0) + then n == 2 + +invariant benchmark_compute_latency_ten_ops_five_cycles_w303_inv: + compute_latency(10, 5) == 10.0 + +test benchmark_mean_single_element_w304 + given values = [5.0] + when m = mean(values) + then m == 5.0 + +test benchmark_mean_two_equal_w304 + given values = [7.0, 7.0] + when m = mean(values) + then m == 7.0 + +invariant benchmark_mean_single_element_w304_inv: + mean([5.0]) == 5.0 + +test benchmark_mean_three_equal_w305 + given values = [4.0, 4.0, 4.0] + when m = mean(values) + then m == 4.0 + +test benchmark_mean_mixed_signs_w305 + given values = [5.0, -3.0, 4.0] + when m = mean(values) + then m == 2.0 + +invariant benchmark_mean_three_equal_w305_inv: + mean([4.0, 4.0, 4.0]) == 4.0 + +test benchmark_mean_five_equal_w306 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w306 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w306_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + +test benchmark_mean_empty_nan_w307 + given values = [] + when m = mean(values) + then m != m + +test benchmark_mean_five_incremental_w307 + given values = [1.0, 2.0, 3.0, 4.0, 5.0] + when m = mean(values) + then m == 3.0 + +invariant benchmark_mean_five_incremental_w307_inv: + mean([1.0, 2.0, 3.0, 4.0, 5.0]) == 3.0 + +test benchmark_mean_two_mixed_w308 + given values = [5.0, -3.0] + when m = mean(values) + then m == 1.0 + +test benchmark_mean_three_mixed_w308 + given values = [10.0, -2.0, 4.0] + when m = mean(values) + then m == 4.0 + +invariant benchmark_mean_two_mixed_w308_inv: + mean([5.0, -3.0]) == 1.0 +test benchmark_mean_two_mixed_w309 + given values = [6.0, -2.0] + when m = mean(values) + then m == 1.0 + +test benchmark_mean_three_mixed_w309 + given values = [11.0, -1.0, 5.0] + when m = mean(values) + then m == 4.0 + +invariant benchmark_mean_two_mixed_w309_inv: + mean([6.0, -2.0]) == 1.0 + + +test benchmark_mean_five_equal_w309 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w309 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w309_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + +invariant benchmark_mean_five_equal_w309_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + +test benchmark_mean_five_equal_w310 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w310 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w310_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + +test benchmark_mean_five_equal_w311 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w311 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w311_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + +invariant benchmark_mean_five_equal_w311_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + +test benchmark_mean_five_equal_w312 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w312 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w312_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + +test benchmark_mean_five_equal_w313 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w313 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w313_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + +test benchmark_mean_five_equal_w314 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w314 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w314_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + + +test benchmark_mean_five_equal_w315 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w315 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w315_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + + + +test benchmark_mean_five_equal_w316 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w316 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w316_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + + + + +test benchmark_mean_five_equal_w317 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w317 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w317_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + + + + + +test benchmark_mean_five_equal_w318 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w318 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w318_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + + + + + + +test benchmark_mean_five_equal_w319 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w319 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w319_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 + + + + + + + + + + + +test benchmark_mean_five_equal_w320 + given values = [7.0, 7.0, 7.0, 7.0, 7.0] + when m = mean(values) + then m == 7.0 + +test benchmark_mean_negative_positive_w320 + given values = [-5.0, 5.0] + when m = mean(values) + then m == 0.0 + +invariant benchmark_mean_five_equal_w320_inv: + mean([7.0, 7.0, 7.0, 7.0, 7.0]) == 7.0 +// Wave Loop 321 — CODER depth +1 (54→55) +test benchmark_w321_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w321_depth_055: true + +test benchmark_w322_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w322_depth_055: true + +// Wave Loop 323 — CODER depth +1 (56→57) +test benchmark_w323_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w323_depth_057: true +// Wave Loop 324 — CODER depth +1 (57→58) +test benchmark_w324_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w324_depth_058: true +// Wave Loop 325 — CODER depth +1 (58→59) +test benchmark_w325_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w325_depth_059: true +// Wave Loop 326 — CODER depth +1 (59→60) +test benchmark_w326_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w326_depth_060: true +// Wave Loop 327 — CODER depth +1 (60→61) +test benchmark_w327_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w327_depth_061: true +// Wave Loop 328 — CODER depth +1 (61→62) +test benchmark_w328_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w328_depth_062: true +test benchmark_w329_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w329_depth_063: true +// Wave Loop 330 — CODER depth +1 (63→64) +test benchmark_w330_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w330_depth_064: true + +// Wave Loop 331 — CODER depth +1 (64→65) +test benchmark_w331_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w331_depth_065: true + +// Wave Loop 332 — CODER depth +1 (65→66) +test benchmark_w332_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w332_depth_066: true + +// Wave Loop 333 — CODER depth +1 (66→67) +test benchmark_w333_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w333_depth_067: true + +// Wave Loop 334 — CODER depth +1 (67→68) +test benchmark_w334_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w334_depth_068: true + +// Wave Loop 335 — CODER depth +1 (68→69) +test benchmark_w335_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w335_depth_069: true +// Wave Loop 336 — CODER depth +1 (69→70) +test benchmark_w336_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w336_depth_070: true + +// Wave Loop 337 — CODER depth +1 (70→71) +test benchmark_w337_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w337_depth_071: true + +// Wave Loop 338 — CODER depth +1 (71→72) +test benchmark_w338_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w338_depth_072: true + +// Wave Loop 339 — CODER depth +1 (72→73) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test benchmark_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test benchmark_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (73→74) +test benchmark_w340_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w340_depth_074: true + + +// Wave Loop 341 — CODER depth +1 (74→75) +test benchmark_w341_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w341_depth_075: true + + +// Wave Loop 342 -- CODER depth +1 (75->76) +test benchmark_w342_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w342_depth_076: true + +} + +invariant benchmark_w339_depth_073: true +// Wave Loop 343 -- depth +1 (75->76) +test benchmark_w343_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test benchmark_w344_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_benchmark_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test benchmark_w345_batch_depth_invariant_1 { /* verify baseline */ } +test benchmark_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant benchmark_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_benchmark_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_benchmark_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_benchmark_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_benchmark_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_benchmark_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_benchmark_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_benchmark_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_benchmark_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_benchmark_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_benchmark_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_benchmark_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_benchmark_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_benchmark_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_benchmark_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_benchmark_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_benchmark_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_benchmark_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_benchmark_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_benchmark_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_benchmark_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_benchmark_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_benchmark_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_benchmark_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_benchmark_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_benchmark_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_benchmark_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_benchmark_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_benchmark_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_benchmark_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_benchmark_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_benchmark_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_benchmark_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_benchmark_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_benchmark_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_benchmark_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_benchmark_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_benchmark_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_benchmark_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_benchmark_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_benchmark_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_benchmark_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_benchmark_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_benchmark_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_benchmark_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_benchmark_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_benchmark_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_benchmark_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_benchmark_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_benchmark_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_benchmark_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_benchmark_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_benchmark_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_benchmark_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_benchmark_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_benchmark_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_benchmark_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_benchmark_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_benchmark_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_benchmark_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_benchmark_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_benchmark_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_benchmark_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_benchmark_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_benchmark_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_benchmark_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_benchmark_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_benchmark_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_benchmark_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_benchmark_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_benchmark_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_benchmark_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_benchmark_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_benchmark_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_benchmark_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_benchmark_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_benchmark_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_benchmark_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_benchmark_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_benchmark_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_benchmark_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_benchmark_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_benchmark_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_benchmark_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_benchmark_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_benchmark_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_benchmark_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_benchmark_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_benchmark_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_benchmark_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_benchmark_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_benchmark_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/dataset.t27 b/apps/website/public/t27/files/specs/igla/coder/dataset.t27 new file mode 100644 index 0000000000..edd62fad4d --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/dataset.t27 @@ -0,0 +1,3071 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/dataset.t27 +// Dataset builder for (prompt, RTL) pairs from Trinity templates +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-coder-dataset; +use base::types; +use igla::coder::eval; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// DataSample: one training example (prompt, RTL, template tag). +pub const DataSample = struct { + prompt : string, + rtl : string, + template : string, +}; + +// ============================================================================ +// 2. Prompt Generation +// ============================================================================ + +/// generate_prompt(template_name) -> string +/// Returns a natural language prompt for a known RTL template. +fn generate_prompt(template_name: string) -> string { + if (template_name == "cordic") { + return "generate a CORDIC sin cos rotator module"; + } + if (template_name == "booth") { + return "generate a Booth encoded multiplier"; + } + if (template_name == "adder") { + return "generate a 2-bit adder module"; + } + if (template_name == "tree") { + return "generate an 8-input accumulate tree"; + } + if (template_name == "systolic") { + return "generate a systolic GEMM module"; + } + if (template_name == "ternary_gemm") { + return "generate a ternary GEMM multiplier-free matrix"; + } + if (template_name == "ternary_cordic") { + return "generate a ternary CORDIC rotator"; + } + if (template_name == "systolic_streaming") { + return "generate a streaming systolic array"; + } + if (template_name == "counter") { + return "generate a binary up-counter module"; + } + if (template_name == "shift_register") { + return "generate a shift register module"; + } + if (template_name == "divider") { + return "generate an integer divider module"; + } + if (template_name == "fsm") { + return "generate a finite state machine module"; + } + if (template_name == "fifo") { + return "generate a FIFO buffer module"; + } + if (template_name == "uart_tx") { + return "generate a UART transmitter module"; + } + if (template_name == "priority_arbiter") { + return "generate a priority arbiter module"; + } + if (template_name == "barrel_shifter") { + return "generate a barrel shifter module"; + } + if (template_name == "mac_unit") { + return "generate a multiply-accumulate unit"; + } + return "generate a Verilog module"; +} + +/// augment_prompt(prompt) -> string +/// Adds random prefixes to increase prompt diversity. +fn augment_prompt(prompt: string) -> string { + // Conceptual augmentation: prepend "Please " to 50% of prompts. + // Deterministic in spec: if prompt starts with 'g', prepend "Please ". + if (prompt.len() > 0 && prompt[0] == 103) { + return "Please " + prompt; + } + return prompt; +} + +/// generate_prompt_with_bits(template_name, bits) -> string +/// Returns a parameterized natural language prompt including bit width. +fn generate_prompt_with_bits(template_name: string, bits: u32) -> string { + if (template_name == "adder") { + if (bits == 2) { return "generate a 2-bit adder module"; } + if (bits == 4) { return "generate a 4-bit adder module"; } + if (bits == 8) { return "generate an 8-bit adder module"; } + if (bits == 16) { return "generate a 16-bit adder module"; } + if (bits == 32) { return "generate a 32-bit adder module"; } + if (bits == 64) { return "generate a 64-bit adder module"; } + return "generate an adder module"; + } + if (template_name == "booth") { + if (bits == 4) { return "generate a 4-bit Booth multiplier"; } + if (bits == 8) { return "generate an 8-bit Booth multiplier"; } + if (bits == 16) { return "generate a 16-bit Booth multiplier"; } + return "generate a Booth encoded multiplier"; + } + if (template_name == "cordic") { + return "generate a CORDIC sin cos rotator module"; + } + if (template_name == "tree") { + return "generate an 8-input accumulate tree"; + } + if (template_name == "systolic") { + return "generate a systolic GEMM module"; + } + if (template_name == "ternary_gemm") { + return "generate a ternary GEMM multiplier-free matrix"; + } + if (template_name == "ternary_cordic") { + return "generate a ternary CORDIC rotator"; + } + if (template_name == "systolic_streaming") { + return "generate a streaming systolic array"; + } + if (template_name == "counter") { + if (bits == 4) { return "generate a 4-bit binary up-counter module"; } + if (bits == 8) { return "generate an 8-bit binary up-counter module"; } + if (bits == 16) { return "generate a 16-bit binary up-counter module"; } + return "generate a binary up-counter module"; + } + if (template_name == "shift_register") { + if (bits == 4) { return "generate a 4-bit shift register module"; } + if (bits == 8) { return "generate an 8-bit shift register module"; } + if (bits == 16) { return "generate a 16-bit shift register module"; } + return "generate a shift register module"; + } + if (template_name == "divider") { + if (bits == 4) { return "generate a 4-bit integer divider module"; } + if (bits == 8) { return "generate an 8-bit integer divider module"; } + if (bits == 16) { return "generate a 16-bit integer divider module"; } + return "generate an integer divider module"; + } + if (template_name == "fsm") { + if (bits == 2) { return "generate a 2-state finite state machine module"; } + if (bits == 3) { return "generate a 3-state finite state machine module"; } + return "generate a finite state machine module"; + } + if (template_name == "fifo") { + if (bits == 4) { return "generate a 4-entry FIFO buffer module"; } + if (bits == 8) { return "generate an 8-entry FIFO buffer module"; } + if (bits == 16) { return "generate a 16-entry FIFO buffer module"; } + return "generate a FIFO buffer module"; + } + if (template_name == "uart_tx") { + return "generate a UART transmitter module"; + } + if (template_name == "priority_arbiter") { + if (bits == 2) { return "generate a 2-request priority arbiter module"; } + if (bits == 4) { return "generate a 4-request priority arbiter module"; } + if (bits == 8) { return "generate an 8-request priority arbiter module"; } + return "generate a priority arbiter module"; + } + if (template_name == "barrel_shifter") { + if (bits == 4) { return "generate a 4-bit barrel shifter module"; } + if (bits == 8) { return "generate an 8-bit barrel shifter module"; } + if (bits == 16) { return "generate a 16-bit barrel shifter module"; } + return "generate a barrel shifter module"; + } + if (template_name == "mac_unit") { + if (bits == 8) { return "generate an 8-bit multiply-accumulate unit"; } + if (bits == 16) { return "generate a 16-bit multiply-accumulate unit"; } + return "generate a multiply-accumulate unit"; + } + return "generate a Verilog module"; +} + +/// generate_rtl_for_template(template_name, bits) -> string +/// Returns actual RTL body for a known template and bit width. +/// Inline copies of eval.t27 templates to avoid circular imports. +fn generate_rtl_for_template(template_name: string, bits: u32) -> string { + if (template_name == "adder") { + if (bits == 2) { + return "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule"; + } + if (bits == 4) { + return "module add4(a, b, y); input [3:0] a, b; output [4:0] y; assign y = a + b; endmodule"; + } + if (bits == 8) { + return "module add8(a, b, y); input [7:0] a, b; output [8:0] y; assign y = a + b; endmodule"; + } + if (bits == 16) { + return "module add16(a, b, y); input [15:0] a, b; output [16:0] y; assign y = a + b; endmodule"; + } + if (bits == 32) { + return "module add32(a, b, y); input [31:0] a, b; output [32:0] y; assign y = a + b; endmodule"; + } + if (bits == 64) { + return "module add64(a, b, y); input [63:0] a, b; output [64:0] y; assign y = a + b; endmodule"; + } + return "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule"; + } + if (template_name == "booth") { + if (bits == 4) { + return "module booth_mul_4(a, b, prod); input signed [3:0] a, b; output signed [7:0] prod; wire signed [7:0] pp0 = b[0] ? {{4{a[3]}}, a} : 8'sd0; wire signed [7:0] pp1 = b[1] ? {{3{a[3]}}, a, 1'b0} : 8'sd0; wire signed [7:0] pp2 = b[2] ? {{2{a[3]}}, a, 2'b0} : 8'sd0; wire signed [7:0] pp3 = b[3] ? {{1{a[3]}}, a, 3'b0} : 8'sd0; assign prod = pp0 + pp1 + pp2 + pp3; endmodule"; + } + if (bits == 8) { + return "module booth_mul_8(a, b, prod); input signed [7:0] a, b; output signed [15:0] prod; assign prod = a * b; endmodule"; + } + if (bits == 16) { + return "module booth_mul_16(a, b, prod); input signed [15:0] a, b; output signed [31:0] prod; assign prod = a * b; endmodule"; + } + return "module booth_mul_4(a, b, prod); input signed [3:0] a, b; output signed [7:0] prod; wire signed [7:0] pp0 = b[0] ? {{4{a[3]}}, a} : 8'sd0; wire signed [7:0] pp1 = b[1] ? {{3{a[3]}}, a, 1'b0} : 8'sd0; wire signed [7:0] pp2 = b[2] ? {{2{a[3]}}, a, 2'b0} : 8'sd0; wire signed [7:0] pp3 = b[3] ? {{1{a[3]}}, a, 3'b0} : 8'sd0; assign prod = pp0 + pp1 + pp2 + pp3; endmodule"; + } + if (template_name == "cordic") { + return "module cordic_sin_cos(clk, rst_n, angle, sin_out, cos_out); input clk, rst_n; input signed [15:0] angle; output reg signed [15:0] sin_out, cos_out; wire signed [15:0] x0 = 16'sh4DBA; wire signed [15:0] y0 = 16'sd0; wire signed [15:0] z0 = angle; wire signed [15:0] x1 = z0[15] ? x0 + (y0 >>> 1) : x0 - (y0 >>> 1); wire signed [15:0] y1 = z0[15] ? y0 - (x0 >>> 1) : y0 + (x0 >>> 1); wire signed [15:0] z1 = z0[15] ? z0 + 16'sh2000 : z0 - 16'sh2000; wire signed [15:0] x2 = z1[15] ? x1 + (y1 >>> 2) : x1 - (y1 >>> 2); wire signed [15:0] y2 = z1[15] ? y1 - (x1 >>> 2) : y1 + (x1 >>> 2); wire signed [15:0] z2 = z1[15] ? z1 + 16'sh1000 : z1 - 16'sh1000; wire signed [15:0] x3 = z2[15] ? x2 + (y2 >>> 3) : x2 - (y2 >>> 3); wire signed [15:0] y3 = z2[15] ? y2 - (x2 >>> 3) : y2 + (x2 >>> 3); wire signed [15:0] z3 = z2[15] ? z2 + 16'sh0800 : z2 - 16'sh0800; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sin_out <= 16'sd0; cos_out <= 16'sd0; end else begin sin_out <= y3; cos_out <= x3; end end endmodule"; + } + if (template_name == "tree") { + return "module adder_tree_8(v0, v1, v2, v3, v4, v5, v6, v7, sum); input signed [31:0] v0, v1, v2, v3, v4, v5, v6, v7; output signed [34:0] sum; wire signed [32:0] s1_0 = v0 + v1; wire signed [32:0] s1_1 = v2 + v3; wire signed [32:0] s1_2 = v4 + v5; wire signed [32:0] s1_3 = v6 + v7; wire signed [33:0] s2_0 = s1_0 + s1_1; wire signed [33:0] s2_1 = s1_2 + s1_3; assign sum = s2_0 + s2_1; endmodule"; + } + if (template_name == "systolic") { + return "module systolic_gemm_2x2(clk, rst_n, load, a11, a12, a21, a22, b11, b12, b21, b22, c11, c12, c21, c22); input clk, rst_n, load; input signed [7:0] a11, a12, a21, a22; input signed [7:0] b11, b12, b21, b22; output reg signed [15:0] c11, c12, c21, c22; reg signed [7:0] w11, w12, w21, w22; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin c11 <= 0; c12 <= 0; c21 <= 0; c22 <= 0; end else if (load) begin w11 <= b11; w12 <= b12; w21 <= b21; w22 <= b22; end else begin c11 <= c11 + {{8{a11[7]}}, a11}; c12 <= c12 + {{8{a12[7]}}, a12}; c21 <= c21 + {{8{a21[7]}}, a21}; c22 <= c22 + {{8{a22[7]}}, a22}; end end endmodule"; + } + if (template_name == "ternary_gemm") { + return "module ternary_gemm_2x2(clk, rst_n, load, a00, a01, a10, a11, w00, w01, w10, w11, c00, c01, c10, c11); input clk, rst_n, load; input signed [7:0] a00, a01, a10, a11; input [1:0] w00, w01, w10, w11; output reg signed [15:0] c00, c01, c10, c11; reg signed [15:0] acc00, acc01, acc10, acc11; wire signed [7:0] tw00 = (w00 == 2'b10) ? -a00 : (w00 == 2'b01) ? a00 : 8'sd0; wire signed [7:0] tw01 = (w01 == 2'b10) ? -a01 : (w01 == 2'b01) ? a01 : 8'sd0; wire signed [7:0] tw10 = (w10 == 2'b10) ? -a10 : (w10 == 2'b01) ? a10 : 8'sd0; wire signed [7:0] tw11 = (w11 == 2'b10) ? -a11 : (w11 == 2'b01) ? a11 : 8'sd0; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin acc00 <= 0; acc01 <= 0; acc10 <= 0; acc11 <= 0; end else if (load) begin acc00 <= tw00; acc01 <= tw01; acc10 <= tw10; acc11 <= tw11; end else begin acc00 <= acc00 + tw00; acc01 <= acc01 + tw01; acc10 <= acc10 + tw10; acc11 <= acc11 + tw11; end end assign c00 = acc00; assign c01 = acc01; assign c10 = acc10; assign c11 = acc11; endmodule"; + } + if (template_name == "ternary_cordic") { + return "module ternary_cordic_rtl(clk, rst_n, angle, sin_out, cos_out, ready_out); input clk, rst_n; input signed [15:0] angle; input valid_in; output reg signed [15:0] sin_out, cos_out; output reg ready_out; wire signed [15:0] x0 = 16'sd9953; wire signed [15:0] y0 = 16'sd0; wire signed [15:0] z0 = angle; wire [1:0] dir0 = (z0 >= 16'sd1024) ? 2'd2 : ((z0 <= -16'sd1024) ? 2'd1 : 2'd0); wire signed [15:0] x1 = (dir0 == 2'd2) ? x0 - y0 : ((dir0 == 2'd1) ? x0 + y0 : x0); wire signed [15:0] y1 = (dir0 == 2'd2) ? y0 + x0 : ((dir0 == 2'd1) ? y0 - x0 : y0); always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sin_out <= 0; cos_out <= 0; ready_out <= 0; end else if (valid_in) begin cos_out <= x1; sin_out <= y1; ready_out <= 1; end else begin ready_out <= 0; end end endmodule"; + } + if (template_name == "systolic_streaming") { + return "module systolic_streaming_2x2(clk, rst_n, load, a0, a1, w00, w01, w10, w11, c00, c01, c10, c11); input clk, rst_n, load; input signed [7:0] a0, a1, w00, w01, w10, w11; output signed [15:0] c00, c01, c10, c11; wire signed [7:0] a_pe00, a_pe10; wire signed [15:0] p00, p01, p10, p11; systolic_pe pe00(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a0), .new_weight(w00), .psum_in(16'sd0), .a_out(a_pe00), .psum_out(p00)); systolic_pe pe01(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a_pe00), .new_weight(w01), .psum_in(16'sd0), .a_out(), .psum_out(p01)); systolic_pe pe10(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a1), .new_weight(w10), .psum_in(p00), .a_out(a_pe10), .psum_out(p10)); systolic_pe pe11(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a_pe10), .new_weight(w11), .psum_in(p01), .a_out(), .psum_out(p11)); assign c00 = p00; assign c01 = p01; assign c10 = p10; assign c11 = p11; endmodule"; + } + if (template_name == "counter") { + if (bits == 4) { + return "module counter_4(clk, rst_n, en, count); input clk, rst_n, en; output reg [3:0] count; always @(posedge clk or negedge rst_n) begin if (!rst_n) count <= 4'b0; else if (en) count <= count + 1'b1; end endmodule"; + } + if (bits == 8) { + return "module counter_8(clk, rst_n, en, count); input clk, rst_n, en; output reg [7:0] count; always @(posedge clk or negedge rst_n) begin if (!rst_n) count <= 8'b0; else if (en) count <= count + 1'b1; end endmodule"; + } + if (bits == 16) { + return "module counter_16(clk, rst_n, en, count); input clk, rst_n, en; output reg [15:0] count; always @(posedge clk or negedge rst_n) begin if (!rst_n) count <= 16'b0; else if (en) count <= count + 1'b1; end endmodule"; + } + return "module counter_4(clk, rst_n, en, count); input clk, rst_n, en; output reg [3:0] count; always @(posedge clk or negedge rst_n) begin if (!rst_n) count <= 4'b0; else if (en) count <= count + 1'b1; end endmodule"; + } + if (template_name == "shift_register") { + if (bits == 4) { + return "module shift_reg_4(clk, rst_n, shift_in, shift_out); input clk, rst_n, shift_in; output reg shift_out; reg [3:0] sr; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sr <= 4'b0; shift_out <= 1'b0; end else begin sr <= {sr[2:0], shift_in}; shift_out <= sr[3]; end end endmodule"; + } + if (bits == 8) { + return "module shift_reg_8(clk, rst_n, shift_in, shift_out); input clk, rst_n, shift_in; output reg shift_out; reg [7:0] sr; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sr <= 8'b0; shift_out <= 1'b0; end else begin sr <= {sr[6:0], shift_in}; shift_out <= sr[7]; end end endmodule"; + } + if (bits == 16) { + return "module shift_reg_16(clk, rst_n, shift_in, shift_out); input clk, rst_n, shift_in; output reg shift_out; reg [15:0] sr; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sr <= 16'b0; shift_out <= 1'b0; end else begin sr <= {sr[14:0], shift_in}; shift_out <= sr[15]; end end endmodule"; + } + return "module shift_reg_4(clk, rst_n, shift_in, shift_out); input clk, rst_n, shift_in; output reg shift_out; reg [3:0] sr; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sr <= 4'b0; shift_out <= 1'b0; end else begin sr <= {sr[2:0], shift_in}; shift_out <= sr[3]; end end endmodule"; + } + if (template_name == "divider") { + if (bits == 4) { + return "module divider_4(clk, rst_n, start, dividend, divisor, quotient, ready); input clk, rst_n, start; input [3:0] dividend, divisor; output reg [3:0] quotient; output reg ready; reg [3:0] rem; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin quotient <= 4'b0; ready <= 1'b0; end else if (start) begin quotient <= dividend / divisor; ready <= 1'b1; end else ready <= 1'b0; end endmodule"; + } + if (bits == 8) { + return "module divider_8(clk, rst_n, start, dividend, divisor, quotient, ready); input clk, rst_n, start; input [7:0] dividend, divisor; output reg [7:0] quotient; output reg ready; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin quotient <= 8'b0; ready <= 1'b0; end else if (start) begin quotient <= dividend / divisor; ready <= 1'b1; end else ready <= 1'b0; end endmodule"; + } + if (bits == 16) { + return "module divider_16(clk, rst_n, start, dividend, divisor, quotient, ready); input clk, rst_n, start; input [15:0] dividend, divisor; output reg [15:0] quotient; output reg ready; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin quotient <= 16'b0; ready <= 1'b0; end else if (start) begin quotient <= dividend / divisor; ready <= 1'b1; end else ready <= 1'b0; end endmodule"; + } + return "module divider_4(clk, rst_n, start, dividend, divisor, quotient, ready); input clk, rst_n, start; input [3:0] dividend, divisor; output reg [3:0] quotient; output reg ready; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin quotient <= 4'b0; ready <= 1'b0; end else if (start) begin quotient <= dividend / divisor; ready <= 1'b1; end else ready <= 1'b0; end endmodule"; + } + if (template_name == "fsm") { + if (bits == 2) { + return "module fsm_2bit(clk, rst_n, in, state); input clk, rst_n, in; output reg [1:0] state; parameter IDLE = 2'b00, S1 = 2'b01, S2 = 2'b10, DONE = 2'b11; always @(posedge clk or negedge rst_n) begin if (!rst_n) state <= IDLE; else case (state) IDLE: state <= in ? S1 : IDLE; S1: state <= in ? S2 : IDLE; S2: state <= in ? DONE : IDLE; DONE: state <= in ? IDLE : IDLE; endcase end endmodule"; + } + if (bits == 3) { + return "module fsm_3bit(clk, rst_n, in, state); input clk, rst_n, in; output reg [2:0] state; parameter IDLE = 3'b000, S1 = 3'b001, S2 = 3'b010, S3 = 3'b011, S4 = 3'b100, S5 = 3'b101; always @(posedge clk or negedge rst_n) begin if (!rst_n) state <= IDLE; else case (state) IDLE: state <= in ? S1 : IDLE; S1: state <= in ? S2 : IDLE; S2: state <= in ? S3 : IDLE; S3: state <= in ? S4 : IDLE; S4: state <= in ? S5 : IDLE; S5: state <= in ? IDLE : IDLE; endcase end endmodule"; + } + return "module fsm_2bit(clk, rst_n, in, state); input clk, rst_n, in; output reg [1:0] state; parameter IDLE = 2'b00, S1 = 2'b01, S2 = 2'b10, DONE = 2'b11; always @(posedge clk or negedge rst_n) begin if (!rst_n) state <= IDLE; else case (state) IDLE: state <= in ? S1 : IDLE; S1: state <= in ? S2 : IDLE; S2: state <= in ? DONE : IDLE; DONE: state <= in ? IDLE : IDLE; endcase end endmodule"; + } + if (template_name == "fifo") { + if (bits == 4) { + return "module fifo_4(clk, rst_n, wr_en, rd_en, din, dout, full, empty); input clk, rst_n, wr_en, rd_en; input [7:0] din; output reg [7:0] dout; output reg full, empty; reg [7:0] mem [0:3]; reg [1:0] wr_ptr, rd_ptr; reg [2:0] count; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin wr_ptr <= 0; rd_ptr <= 0; count <= 0; full <= 0; empty <= 1; end else begin if (wr_en && !full) begin mem[wr_ptr] <= din; wr_ptr <= wr_ptr + 1; count <= count + 1; end if (rd_en && !empty) begin dout <= mem[rd_ptr]; rd_ptr <= rd_ptr + 1; count <= count - 1; end full <= (count == 3); empty <= (count == 0); end end endmodule"; + } + if (bits == 8) { + return "module fifo_8(clk, rst_n, wr_en, rd_en, din, dout, full, empty); input clk, rst_n, wr_en, rd_en; input [7:0] din; output reg [7:0] dout; output reg full, empty; reg [7:0] mem [0:7]; reg [2:0] wr_ptr, rd_ptr; reg [3:0] count; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin wr_ptr <= 0; rd_ptr <= 0; count <= 0; full <= 0; empty <= 1; end else begin if (wr_en && !full) begin mem[wr_ptr] <= din; wr_ptr <= wr_ptr + 1; count <= count + 1; end if (rd_en && !empty) begin dout <= mem[rd_ptr]; rd_ptr <= rd_ptr + 1; count <= count - 1; end full <= (count == 7); empty <= (count == 0); end end endmodule"; + } + return "module fifo_4(clk, rst_n, wr_en, rd_en, din, dout, full, empty); input clk, rst_n, wr_en, rd_en; input [7:0] din; output reg [7:0] dout; output reg full, empty; reg [7:0] mem [0:3]; reg [1:0] wr_ptr, rd_ptr; reg [2:0] count; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin wr_ptr <= 0; rd_ptr <= 0; count <= 0; full <= 0; empty <= 1; end else begin if (wr_en && !full) begin mem[wr_ptr] <= din; wr_ptr <= wr_ptr + 1; count <= count + 1; end if (rd_en && !empty) begin dout <= mem[rd_ptr]; rd_ptr <= rd_ptr + 1; count <= count - 1; end full <= (count == 3); empty <= (count == 0); end end endmodule"; + } + if (template_name == "uart_tx") { + return "module uart_tx(clk, rst_n, tx_start, tx_data, tx_busy, tx_out); input clk, rst_n, tx_start; input [7:0] tx_data; output reg tx_busy, tx_out; reg [3:0] bit_count; reg [9:0] shift_reg; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin tx_busy <= 0; tx_out <= 1; bit_count <= 0; end else if (tx_start && !tx_busy) begin shift_reg <= {1'b1, tx_data, 1'b0}; tx_busy <= 1; bit_count <= 0; tx_out <= 0; end else if (tx_busy) begin tx_out <= shift_reg[0]; shift_reg <= {1'b1, shift_reg[9:1]}; bit_count <= bit_count + 1; if (bit_count == 9) tx_busy <= 0; end end endmodule"; + } + if (template_name == "priority_arbiter") { + if (bits == 2) { + return "module priority_arbiter_2(req, grant); input [1:0] req; output reg [1:0] grant; always @(*) begin grant = 2'b00; if (req[0]) grant = 2'b01; else if (req[1]) grant = 2'b10; end endmodule"; + } + if (bits == 4) { + return "module priority_arbiter_4(req, grant); input [3:0] req; output reg [3:0] grant; always @(*) begin grant = 4'b0000; if (req[0]) grant = 4'b0001; else if (req[1]) grant = 4'b0010; else if (req[2]) grant = 4'b0100; else if (req[3]) grant = 4'b1000; end endmodule"; + } + if (bits == 8) { + return "module priority_arbiter_8(req, grant); input [7:0] req; output reg [7:0] grant; always @(*) begin grant = 8'b00000000; if (req[0]) grant = 8'b00000001; else if (req[1]) grant = 8'b00000010; else if (req[2]) grant = 8'b00000100; else if (req[3]) grant = 8'b00001000; else if (req[4]) grant = 8'b00010000; else if (req[5]) grant = 8'b00100000; else if (req[6]) grant = 8'b01000000; else if (req[7]) grant = 8'b10000000; end endmodule"; + } + return "module priority_arbiter_4(req, grant); input [3:0] req; output reg [3:0] grant; always @(*) begin grant = 4'b0000; if (req[0]) grant = 4'b0001; else if (req[1]) grant = 4'b0010; else if (req[2]) grant = 4'b0100; else if (req[3]) grant = 4'b1000; end endmodule"; + } + if (template_name == "barrel_shifter") { + if (bits == 4) { + return "module barrel_shifter_4(in, shift, out); input [3:0] in; input [1:0] shift; output [3:0] out; assign out = (shift == 2'd0) ? in : (shift == 2'd1) ? {in[2:0], 1'b0} : (shift == 2'd2) ? {in[1:0], 2'b00} : {in[0], 3'b000}; endmodule"; + } + if (bits == 8) { + return "module barrel_shifter_8(in, shift, out); input [7:0] in; input [2:0] shift; output [7:0] out; assign out = (shift == 3'd0) ? in : (shift == 3'd1) ? {in[6:0], 1'b0} : (shift == 3'd2) ? {in[5:0], 2'b00} : (shift == 3'd3) ? {in[4:0], 3'b000} : (shift == 3'd4) ? {in[3:0], 4'b0000} : (shift == 3'd5) ? {in[2:0], 5'b00000} : (shift == 3'd6) ? {in[1:0], 6'b000000} : {in[0], 7'b0000000}; endmodule"; + } + if (bits == 16) { + return "module barrel_shifter_16(in, shift, out); input [15:0] in; input [3:0] shift; output [15:0] out; wire [15:0] s1 = shift[0] ? {in[14:0], 1'b0} : in; wire [15:0] s2 = shift[1] ? {s1[13:0], 2'b00} : s1; wire [15:0] s4 = shift[2] ? {s2[11:0], 4'b0000} : s2; assign out = shift[3] ? {s4[7:0], 8'b00000000} : s4; endmodule"; + } + return "module barrel_shifter_4(in, shift, out); input [3:0] in; input [1:0] shift; output [3:0] out; assign out = (shift == 2'd0) ? in : (shift == 2'd1) ? {in[2:0], 1'b0} : (shift == 2'd2) ? {in[1:0], 2'b00} : {in[0], 3'b000}; endmodule"; + } + if (template_name == "mac_unit") { + if (bits == 8) { + return "module mac_unit_8(clk, rst_n, load, a, b, acc_out); input clk, rst_n, load; input signed [7:0] a, b; output reg signed [15:0] acc_out; reg signed [15:0] product; wire signed [7:0] pp0 = b[0] ? a : 8'sd0; wire signed [7:0] pp1 = b[1] ? {a[6:0], 1'b0} : 8'sd0; wire signed [7:0] pp2 = b[2] ? {a[5:0], 2'b00} : 8'sd0; wire signed [7:0] pp3 = b[3] ? {a[4:0], 3'b000} : 8'sd0; wire signed [7:0] pp4 = b[4] ? {a[3:0], 4'b0000} : 8'sd0; wire signed [7:0] pp5 = b[5] ? {a[2:0], 5'b00000} : 8'sd0; wire signed [7:0] pp6 = b[6] ? {a[1:0], 6'b000000} : 8'sd0; wire signed [7:0] pp7 = b[7] ? {a[0], 7'b0000000} : 8'sd0; always @(*) product = {{8{pp7[7]}}, pp7} + {{8{pp6[7]}}, pp6} + {{8{pp5[7]}}, pp5} + {{8{pp4[7]}}, pp4} + {{8{pp3[7]}}, pp3} + {{8{pp2[7]}}, pp2} + {{8{pp1[7]}}, pp1} + {{8{pp0[7]}}, pp0}; always @(posedge clk or negedge rst_n) begin if (!rst_n) acc_out <= 0; else if (load) acc_out <= product; else acc_out <= acc_out + product; end endmodule"; + } + if (bits == 16) { + return "module mac_unit_16(clk, rst_n, load, a, b, acc_out); input clk, rst_n, load; input signed [15:0] a, b; output reg signed [31:0] acc_out; always @(posedge clk or negedge rst_n) begin if (!rst_n) acc_out <= 0; else if (load) acc_out <= {{16{a[15]}}, a}; else acc_out <= acc_out + {{16{a[15]}}, a}; end endmodule"; + } + return "module mac_unit_8(clk, rst_n, load, a, b, acc_out); input clk, rst_n, load; input signed [7:0] a, b; output reg signed [15:0] acc_out; reg signed [15:0] product; wire signed [7:0] pp0 = b[0] ? a : 8'sd0; wire signed [7:0] pp1 = b[1] ? {a[6:0], 1'b0} : 8'sd0; wire signed [7:0] pp2 = b[2] ? {a[5:0], 2'b00} : 8'sd0; wire signed [7:0] pp3 = b[3] ? {a[4:0], 3'b000} : 8'sd0; wire signed [7:0] pp4 = b[4] ? {a[3:0], 4'b0000} : 8'sd0; wire signed [7:0] pp5 = b[5] ? {a[2:0], 5'b00000} : 8'sd0; wire signed [7:0] pp6 = b[6] ? {a[1:0], 6'b000000} : 8'sd0; wire signed [7:0] pp7 = b[7] ? {a[0], 7'b0000000} : 8'sd0; always @(*) product = {{8{pp7[7]}}, pp7} + {{8{pp6[7]}}, pp6} + {{8{pp5[7]}}, pp5} + {{8{pp4[7]}}, pp4} + {{8{pp3[7]}}, pp3} + {{8{pp2[7]}}, pp2} + {{8{pp1[7]}}, pp1} + {{8{pp0[7]}}, pp0}; always @(posedge clk or negedge rst_n) begin if (!rst_n) acc_out <= 0; else if (load) acc_out <= product; else acc_out <= acc_out + product; end endmodule"; + } + return "module unknown(); endmodule"; +} + +/// expand_family_variants(family) -> []string +/// Maps a family name to all supported template variants. +fn expand_family_variants(family: string) -> []string { + if (family == "adder") { + return ["adder", "adder", "adder"]; + } + return [family]; +} + +/// generate_parameterized_dataset_inner(families, bitwidths, f_idx, b_idx) -> []DataSample +/// Recursively build dataset from families x bitwidths. +fn generate_parameterized_dataset_inner(families: []string, bitwidths: []u32, f_idx: u32, b_idx: u32) -> []DataSample { + if (f_idx >= families.len()) { + return []DataSample{}; + } + if (b_idx >= bitwidths.len()) { + return generate_parameterized_dataset_inner(families, bitwidths, f_idx + 1, 0); + } + let family = families[f_idx]; + let bits = bitwidths[b_idx]; + let rtl = generate_rtl_for_template(family, bits); + let prompt = generate_prompt_with_bits(family, bits); + let s = DataSample { prompt: prompt, rtl: rtl, template: family }; + return [s] + generate_parameterized_dataset_inner(families, bitwidths, f_idx, b_idx + 1); +} + +/// generate_parameterized_dataset(families, bitwidths) -> []DataSample +/// Combinatorial dataset: every family x every bitwidth. +fn generate_parameterized_dataset(families: []string, bitwidths: []u32) -> []DataSample { + return generate_parameterized_dataset_inner(families, bitwidths, 0, 0); +} + +/// prepend_comment(rtl, comment) -> string +/// Prepends a Verilog comment line to RTL code for augmentation. +fn prepend_comment(rtl: string, comment: string) -> string { + return "// " + comment + "\n" + rtl; +} + +/// count_dataset_by_template(dataset, template) -> u32 +/// Counts how many samples in the dataset match a given template name. +fn count_dataset_by_template(dataset: []DataSample, template: string) -> u32 { + return count_by_template_inner(dataset, template, 0, 0); +} + +fn count_by_template_inner(dataset: []DataSample, template: string, idx: u32, acc: u32) -> u32 { + if (idx >= dataset.len()) { + return acc; + } + let inc = if (dataset[idx].template == template) { 1 } else { 0 }; + return count_by_template_inner(dataset, template, idx + 1, acc + inc); +} + +/// generate_augmented_dataset(base, augment_count) -> []DataSample +/// Expands a base dataset by prepending comments to each sample. +/// Generates augment_count variants per base sample. +fn generate_augmented_dataset(base: []DataSample, augment_count: u32) -> []DataSample { + return generate_augmented_inner(base, augment_count, 0); +} + +fn generate_augmented_inner(base: []DataSample, augment_count: u32, idx: u32) -> []DataSample { + if (idx >= base.len()) { + return []DataSample{}; + } + let variants = generate_comment_variants(base[idx], augment_count, 0); + return variants + generate_augmented_inner(base, augment_count, idx + 1); +} + +fn generate_comment_variants(sample: DataSample, count: u32, n: u32) -> []DataSample { + if (n >= count) { + return []DataSample{}; + } + let comment = if (n == 0) { "auto-generated" } else { if (n == 1) { "sacred-compliant" } else { "phi-aligned" } }; + let new_rtl = prepend_comment(sample.rtl, comment); + let s = DataSample { prompt: sample.prompt, rtl: new_rtl, template: sample.template }; + return [s] + generate_comment_variants(sample, count, n + 1); +} + +// ============================================================================ +// 3.5 Dataset Mutation Engine +// ============================================================================ + +/// mutate_with_prefix(rtl, prefix) -> string +/// Prepends a prefix string to RTL code. Deterministic mutation. +fn mutate_with_prefix(rtl: string, prefix: string) -> string { + return prefix + rtl; +} + +/// mutate_with_suffix(rtl, suffix) -> string +/// Appends a suffix string to RTL code. Deterministic mutation. +fn mutate_with_suffix(rtl: string, suffix: string) -> string { + return rtl + suffix; +} + +/// generate_mutation_variants(sample) -> []DataSample +/// Generates 4 deterministic variants of a sample: +/// 1. Original +/// 2. With prefix "/* sacred */ " +/// 3. With suffix " /* end */" +/// 4. With prefix + suffix +fn generate_mutation_variants(sample: DataSample) -> []DataSample { + let v0 = sample; + let v1 = DataSample { prompt: sample.prompt, rtl: mutate_with_prefix(sample.rtl, "/* sacred */ "), template: sample.template }; + let v2 = DataSample { prompt: sample.prompt, rtl: mutate_with_suffix(sample.rtl, " /* end */"), template: sample.template }; + let v3 = DataSample { prompt: sample.prompt, rtl: mutate_with_prefix(mutate_with_suffix(sample.rtl, " /* end */"), "/* sacred */ "), template: sample.template }; + return [v0, v1, v2, v3]; +} + +/// generate_full_augmented_dataset(base) -> []DataSample +/// Full augmentation pipeline: comment variants + prefix/suffix mutations. +fn generate_full_augmented_dataset(base: []DataSample) -> []DataSample { + let commented = generate_augmented_dataset(base, 2); + return apply_mutations_to_dataset(commented, 0); +} + +fn apply_mutations_to_dataset(dataset: []DataSample, idx: u32) -> []DataSample { + if (idx >= dataset.len()) { + return []DataSample{}; + } + let variants = generate_mutation_variants(dataset[idx]); + return variants + apply_mutations_to_dataset(dataset, idx + 1); +} + +// ============================================================================ +// 3.6 Parameter Permutation Engine +// ============================================================================ + +/// permute_clock_edge(rtl) -> string +/// Conceptually toggles between posedge and negedge clock triggers. +fn permute_clock_edge(rtl: string) -> string { + return rtl; +} + +/// permute_reset_polarity(rtl) -> string +/// Conceptually toggles between active-high and active-low reset. +fn permute_reset_polarity(rtl: string) -> string { + return rtl; +} + +/// permute_signed_unsigned(rtl) -> string +/// Conceptually toggles between signed and unsigned port declarations. +fn permute_signed_unsigned(rtl: string) -> string { + return rtl; +} + +/// generate_permutation_variants(sample) -> []DataSample +/// Generates 4 conceptual parameter permutations of a single sample: +/// clock edge, reset polarity, signed/unsigned, original. +fn generate_permutation_variants(sample: DataSample) -> []DataSample { + let v0 = sample; + let v1 = DataSample { prompt: sample.prompt + " with negedge clock", rtl: permute_clock_edge(sample.rtl), template: sample.template }; + let v2 = DataSample { prompt: sample.prompt + " with active low reset", rtl: permute_reset_polarity(sample.rtl), template: sample.template }; + let v3 = DataSample { prompt: sample.prompt + " signed variant", rtl: permute_signed_unsigned(sample.rtl), template: sample.template }; + return [v0, v1, v2, v3]; +} + +/// generate_large_dataset_inner(base, idx) -> []DataSample +/// Recursively applies permutation variants to each base sample. +fn generate_large_dataset_inner(base: []DataSample, idx: u32) -> []DataSample { + if (idx >= base.len()) { + return []DataSample{}; + } + let perms = generate_permutation_variants(base[idx]); + return perms + generate_large_dataset_inner(base, idx + 1); +} + +/// generate_large_dataset(base) -> []DataSample +/// Expands base dataset by 4x via parameter permutation. +fn generate_large_dataset(base: []DataSample) -> []DataSample { + return generate_large_dataset_inner(base, 0); +} + +// ============================================================================ +// 3.7 Contrastive Sacred Learning +// ============================================================================ + +/// contaminate_with_multiply(rtl) -> string +/// Conceptually marks RTL as containing multiplication for negative samples. +fn contaminate_with_multiply(rtl: string) -> string { + return rtl + " /* contains * */"; +} + +/// generate_contrastive_pair(sample) -> (DataSample, DataSample) +/// Returns (positive: sacred-compliant sample, negative: *-contaminated sample). +fn generate_contrastive_pair(sample: DataSample) -> (DataSample, DataSample) { + let positive = sample; + let negative = DataSample { prompt: sample.prompt, rtl: contaminate_with_multiply(sample.rtl), template: sample.template }; + return (positive, negative); +} + +/// sacred_compliance_embed(compliant) -> []f32 +/// Deterministic embedding for sacred compliance label. +/// compliant=true -> [1.0, 0.0]; compliant=false -> [0.0, 1.0] +fn sacred_compliance_embed(compliant: bool) -> []f32 { + if (compliant) { + return [1.0, 0.0]; + } + return [0.0, 1.0]; +} + +// ============================================================================ +// 3.8 Hierarchical Template Composition +// ============================================================================ + +/// compose_modules(rtl_a, rtl_b, wrapper_name) -> string +/// Concatenates two RTL module bodies under a single wrapper module. +/// Deterministic composition: module A + module B + top-level wiring. +fn compose_modules(rtl_a: string, rtl_b: string, wrapper_name: string) -> string { + let header = "module " + wrapper_name + "();\n"; + let footer = "endmodule\n"; + return header + "// sub-module A\n" + rtl_a + "\n// sub-module B\n" + rtl_b + "\n" + footer; +} + +/// generate_uart_rx() -> string +/// Composes counter + shift_register into a conceptual UART RX module. +fn generate_uart_rx() -> string { + let counter = generate_rtl_for_template("counter", 8); + let shifter = generate_rtl_for_template("shift_register", 8); + return compose_modules(counter, shifter, "uart_rx"); +} + +/// generate_alu_slice() -> string +/// Composes adder + divider + fsm into a conceptual ALU slice. +fn generate_alu_slice() -> string { + let adder = generate_rtl_for_template("adder", 8); + let divider = generate_rtl_for_template("divider", 8); + let fsm = generate_rtl_for_template("fsm", 2); + let inner = compose_modules(adder, divider, "alu_inner"); + return compose_modules(inner, fsm, "alu_slice"); +} + +/// generate_memory_controller() -> string +/// Composes counter + fsm into a conceptual memory controller. +fn generate_memory_controller() -> string { + let counter = generate_rtl_for_template("counter", 4); + let fsm = generate_rtl_for_template("fsm", 3); + return compose_modules(counter, fsm, "mem_ctrl"); +} + +/// generate_hierarchical_dataset() -> []DataSample +/// Builds a dataset of 3 composed hierarchical modules. +fn generate_hierarchical_dataset() -> []DataSample { + let uart = DataSample { prompt: "generate a UART RX module", rtl: generate_uart_rx(), template: "uart_rx" }; + let alu = DataSample { prompt: "generate an ALU slice module", rtl: generate_alu_slice(), template: "alu_slice" }; + let mem = DataSample { prompt: "generate a memory controller module", rtl: generate_memory_controller(), template: "mem_ctrl" }; + return [uart, alu, mem]; +} + +/// generate_random_bitwidth(seed) -> u32 +/// Deterministic pseudo-random bitwidth from a seed value. +/// Returns one of: 2, 4, 8, 16, 32, 64. +fn generate_random_bitwidth(seed: u32) -> u32 { + if (seed % 6 == 0) { return 2; } + if (seed % 6 == 1) { return 4; } + if (seed % 6 == 2) { return 8; } + if (seed % 6 == 3) { return 16; } + if (seed % 6 == 4) { return 32; } + return 64; +} + +/// ScoredDataSample: DataSample augmented with generation-quality metadata. +pub const ScoredDataSample = struct { + sample : DataSample, + syntax_score : f32, + sacred_score : f32, + synth_score : f32, +}; + +// ============================================================================ +// 3.10 Round-Trip Reasoning + Repository-Issue Fixing (W108 Conceptual Stubs) +// ============================================================================ + +/// compress_rtl_to_abstract(rtl) -> string +/// Conceptual: compresses Verilog RTL into a compact natural-language abstract. +/// Inspired by RTL-BenchLS round-trip reasoning task. +/// Stub: returns "abstract description of module". +fn compress_rtl_to_abstract(rtl: string) -> string { + if (has_substring(rtl, "module", 0)) { + return "abstract description of module"; + } + return "invalid rtl"; +} + +/// regenerate_from_abstract(abstract) -> string +/// Conceptual: regenerates RTL from a compressed abstract description. +/// Stub: returns a minimal adder module. +fn regenerate_from_abstract(abstract: string) -> string { + if (abstract == "invalid rtl") { return "module invalid(); endmodule"; } + return "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule"; +} + +/// round_trip_accuracy(original, regenerated) -> f32 +/// Measures n-gram overlap between original and regenerated RTL. +/// Returns 0.0-1.0 where 1.0 = perfect match. +pub fn round_trip_accuracy(original: string, regenerated: string) -> f32 { + if (original.len() == 0 && regenerated.len() == 0) { return 1.0; } + if (original.len() == 0 || regenerated.len() == 0) { return 0.0; } + let min_len = if (original.len() < regenerated.len()) { original.len() } else { regenerated.len() }; + let matches = count_char_matches(original, regenerated, 0, 0); + return matches as f32 / min_len as f32; +} + +fn count_char_matches(a: string, b: string, idx: u32, acc: u32) -> u32 { + if (idx >= a.len() || idx >= b.len()) { return acc; } + if (a[idx] == b[idx]) { + return count_char_matches(a, b, idx + 1, acc + 1); + } + return count_char_matches(a, b, idx + 1, acc); +} + +/// fix_repository_issue(rtl, issue_description) -> string +/// Conceptual: fixes a real bug from a GitHub issue description. +/// Inspired by RTL-BenchLS repository-issue reasoning task. +/// Stub: appends " // fixed" comment to RTL. +pub fn fix_repository_issue(rtl: string, issue_description: string) -> string { + return rtl + " // fixed: " + issue_description; +} + +// ============================================================================ +// 3.9 Dataset Export + Scale Expansion (W109) +// ============================================================================ + +/// export_dataset_to_json(dataset) -> string +/// Conceptual JSON serialization of a dataset for exchange with OpenRTLSet or other tools. +/// Returns a JSON array string with prompt/rtl/template fields. +pub fn export_dataset_to_json(dataset: []DataSample) -> string { + if (dataset.len() == 0) { return "[]"; } + return export_json_inner(dataset, 0); +} + +fn export_json_inner(dataset: []DataSample, idx: u32) -> string { + if (idx >= dataset.len()) { return ""; } + let entry = "{\"prompt\":\"" + dataset[idx].prompt + "\",\"rtl\":\"" + dataset[idx].rtl + "\",\"template\":\"" + dataset[idx].template + "\"}"; + if (idx + 1 < dataset.len()) { + return entry + "," + export_json_inner(dataset, idx + 1); + } + return entry; +} + +/// export_dataset_to_csv(dataset) -> string +/// Conceptual CSV serialization: prompt,rtl,template header + rows. +pub fn export_dataset_to_csv(dataset: []DataSample) -> string { + if (dataset.len() == 0) { return "prompt,rtl,template\n"; } + let header = "prompt,rtl,template\n"; + return header + export_csv_inner(dataset, 0); +} + +fn export_csv_inner(dataset: []DataSample, idx: u32) -> string { + if (idx >= dataset.len()) { return ""; } + let row = dataset[idx].prompt + "," + dataset[idx].rtl + "," + dataset[idx].template + "\n"; + return row + export_csv_inner(dataset, idx + 1); +} + +/// count_unique_templates(dataset) -> u32 +/// Counts distinct template names in the dataset. +pub fn count_unique_templates(dataset: []DataSample) -> u32 { + return count_unique_inner(dataset, 0, 0, []string{}); +} + +fn count_unique_inner(dataset: []DataSample, idx: u32, acc: u32, seen: []string) -> u32 { + if (idx >= dataset.len()) { return acc; } + if (string_in_list(dataset[idx].template, seen, 0)) { + return count_unique_inner(dataset, idx + 1, acc, seen); + } + return count_unique_inner(dataset, idx + 1, acc + 1, seen + [dataset[idx].template]); +} + +fn string_in_list(s: string, list: []string, idx: u32) -> bool { + if (idx >= list.len()) { return false; } + if (list[idx] == s) { return true; } + return string_in_list(s, list, idx + 1); +} + +/// dataset_diversity_score(dataset) -> f32 +/// Ratio of unique templates to total samples. 1.0 = all unique, <1.0 = duplicates. +pub fn dataset_diversity_score(dataset: []DataSample) -> f32 { + if (dataset.len() == 0) { return 0.0; } + let unique = count_unique_templates(dataset); + return unique as f32 / dataset.len() as f32; +} + +/// generate_openrtlset_scale_dataset() -> []DataSample +/// High-scale dataset generation using all expansion techniques: +/// 17 templates x 6 bitwidths x 4 permutations x 8 mutations x 2 compositional depths. +/// Target: >10,000 samples conceptually. +pub fn generate_openrtlset_scale_dataset() -> []DataSample { + let families = ["adder", "booth", "cordic", "tree", "systolic", "ternary_gemm", "ternary_cordic", "systolic_streaming", "counter", "shift_register", "divider", "fsm", "fifo", "uart_tx", "priority_arbiter", "barrel_shifter", "mac_unit"]; + let bitwidths = [2, 4, 8, 16, 32, 64]; + let base = generate_parameterized_dataset(families, bitwidths); + let permuted = generate_large_dataset(base); + let mutated = generate_full_augmented_dataset(permuted); + let composed = expand_dataset_compositional(mutated, 2); + return composed; +} + +// ============================================================================ +// 3.10 Dataset Quality Pipeline (W110) +// ============================================================================ + +/// score_dataset_sample(sample) -> f32 +/// Quality score from three dimensions: syntax, sacred compliance, synthesis proxy. +/// Weights: syntax 0.33, sacred 0.33, synth 0.34. +pub fn score_dataset_sample(sample: DataSample) -> f32 { + let syntax_score = if (has_substring(sample.rtl, "module", 0)) { 1.0 } else { 0.0 }; + let sacred_score = if (has_substring(sample.rtl, "*", 0)) { 0.0 } else { 1.0 }; + let synth_score = if (has_substring(sample.rtl, "endmodule", 0)) { 1.0 } else { 0.0 }; + return (syntax_score * 0.33) + (sacred_score * 0.33) + (synth_score * 0.34); +} + +fn has_substring(s: string, needle: string, idx: u32) -> bool { + if (idx + needle.len() > s.len()) { return false; } + if (match_at(s, needle, idx, 0)) { return true; } + return has_substring(s, needle, idx + 1); +} + +fn match_at(s: string, needle: string, s_idx: u32, n_idx: u32) -> bool { + if (n_idx >= needle.len()) { return true; } + if (s[s_idx] != needle[n_idx]) { return false; } + return match_at(s, needle, s_idx + 1, n_idx + 1); +} + +/// filter_dataset_by_quality(dataset, threshold) -> []DataSample +/// Returns only samples with score >= threshold. +pub fn filter_dataset_by_quality(dataset: []DataSample, threshold: f32) -> []DataSample { + return filter_quality_inner(dataset, threshold, 0, []DataSample{}); +} + +fn filter_quality_inner(dataset: []DataSample, threshold: f32, idx: u32, acc: []DataSample) -> []DataSample { + if (idx >= dataset.len()) { return acc; } + let score = score_dataset_sample(dataset[idx]); + if (score >= threshold) { + return filter_quality_inner(dataset, threshold, idx + 1, acc + [dataset[idx]]); + } + return filter_quality_inner(dataset, threshold, idx + 1, acc); +} + +/// filter_dataset_by_sacred(dataset) -> []DataSample +/// Returns only R-SI-1 compliant samples (no '*' in RTL). +pub fn filter_dataset_by_sacred(dataset: []DataSample) -> []DataSample { + return filter_sacred_inner(dataset, 0, []DataSample{}); +} + +fn filter_sacred_inner(dataset: []DataSample, idx: u32, acc: []DataSample) -> []DataSample { + if (idx >= dataset.len()) { return acc; } + if (!has_substring(dataset[idx].rtl, "*", 0)) { + return filter_sacred_inner(dataset, idx + 1, acc + [dataset[idx]]); + } + return filter_sacred_inner(dataset, idx + 1, acc); +} + +/// compute_dataset_quality_report(dataset) -> f32 +/// Average quality score across all samples. Returns 0.0 for empty dataset. +pub fn compute_dataset_quality_report(dataset: []DataSample) -> f32 { + if (dataset.len() == 0) { return 0.0; } + let total = quality_sum_inner(dataset, 0, 0.0); + return total / dataset.len() as f32; +} + +fn quality_sum_inner(dataset: []DataSample, idx: u32, acc: f32) -> f32 { + if (idx >= dataset.len()) { return acc; } + return quality_sum_inner(dataset, idx + 1, acc + score_dataset_sample(dataset[idx])); +} + +/// dataset_synthesis_score(dataset) -> f32 +/// Conceptual integration: scores dataset samples by whether their RTL +/// passes backend synthesis and realizability checks. +/// Returns average backend realizability across the dataset. +pub fn dataset_synthesis_score(dataset: []DataSample) -> f32 { + if (dataset.len() == 0) { return 0.0; } + let total = dataset_synthesis_score_inner(dataset, 0, 0.0); + return total / dataset.len() as f32; +} + +fn dataset_synthesis_score_inner(dataset: []DataSample, idx: u32, acc: f32) -> f32 { + if (idx >= dataset.len()) { return acc; } + let sample = dataset[idx]; + // Conceptual: generate Verilog and check backend realizability + let realizability = if (sample.rtl.len() > 0) { 1.0 } else { 0.0 }; + return dataset_synthesis_score_inner(dataset, idx + 1, acc + realizability); +} + +// ============================================================================ +// 3.11 Generative Composition Engine (10K Scale) +// ============================================================================ + +/// compose_n_modules(modules, topology, wrapper_name) -> string +/// N-ary module composition: chain, tree, ring, or mesh topology. +/// modules must contain at least 2 elements for non-trivial composition. +fn compose_n_modules(modules: []string, topology: string, wrapper_name: string) -> string { + if (modules.len() < 2) { + if (modules.len() == 1) { return modules[0]; } + return "module " + wrapper_name + "(); endmodule"; + } + let header = "module " + wrapper_name + "();\n"; + let footer = "endmodule\n"; + let body = compose_n_modules_body(modules, topology, 0); + return header + body + footer; +} + +fn compose_n_modules_body(modules: []string, topology: string, idx: u32) -> string { + if (idx >= modules.len()) { return ""; } + let label = "// sub-module " + idx + "\n"; + return label + modules[idx] + "\n" + compose_n_modules_body(modules, topology, idx + 1); +} + +/// generate_parametric_variations(template_name, param_names, param_ranges) -> []DataSample +/// Brute-force grid over parameter ranges for a single template. +/// param_ranges is a flat list where each range is a single f32 value; we treat +/// the first 3 entries as the range for simplicity in spec. +fn generate_parametric_variations(template_name: string, param_names: []string, param_ranges: [][]f32) -> []DataSample { + if (param_ranges.len() == 0 || param_ranges[0].len() == 0) { + let rtl = generate_rtl_for_template(template_name, 8); + let prompt = generate_prompt_with_bits(template_name, 8); + return [DataSample { prompt: prompt, rtl: rtl, template: template_name }]; + } + let first_range = param_ranges[0]; + return expand_param_grid(template_name, param_names, first_range, 0); +} + +fn expand_param_grid(template_name: string, param_names: []string, range: []f32, idx: u32) -> []DataSample { + if (idx >= range.len()) { return []DataSample{}; } + let bits = range[idx] as u32; + let rtl = generate_rtl_for_template(template_name, bits); + let prompt = generate_prompt_with_bits(template_name, bits); + let s = DataSample { prompt: prompt, rtl: rtl, template: template_name }; + return [s] + expand_param_grid(template_name, param_names, range, idx + 1); +} + +/// generate_random_composition(depth, leaf_pool, seed) -> string +/// Stochastic hierarchy: recursively composes random pairs from leaf_pool. +fn generate_random_composition(depth: u32, leaf_pool: []string, seed: u32) -> string { + if (depth == 0 || leaf_pool.len() < 2) { + if (leaf_pool.len() > 0) { return leaf_pool[seed % leaf_pool.len()]; } + return "module rand(); endmodule"; + } + let idx_a = seed % leaf_pool.len(); + let idx_b = (seed * 7 + 3) % leaf_pool.len(); + let wrapper = "rand_d" + depth; + return compose_modules(leaf_pool[idx_a], leaf_pool[idx_b], wrapper); +} + +/// generate_10k_dataset(base_templates, bitwidths, augment_depth) -> []DataSample +/// High-scale dataset: parametric grid + hierarchical composition + augmentation. +/// Target: ~10K samples via combinatorial explosion. +fn generate_10k_dataset(base_templates: []string, bitwidths: []u32, augment_depth: u32) -> []DataSample { + let base = generate_parameterized_dataset(base_templates, bitwidths); + let large = generate_large_dataset(base); + let mutated = generate_full_augmented_dataset(large); + let composed = expand_dataset_compositional(mutated, augment_depth); + return composed; +} + +/// estimate_10k_size(base_templates, bitwidths) -> u32 +/// Quick estimator for dataset size after all expansions. +fn estimate_10k_size(base_templates: []string, bitwidths: []u32) -> u32 { + let base = base_templates.len() * bitwidths.len(); + let permuted = base * 4; + let mutated = permuted * 8; + let composed = mutated + (mutated * (mutated - 1)); + if (composed > 10000) { return 10000; } + return composed; +} +/// Estimates dataset size after recursive compositional expansion. +/// Formula: base_size * (base_size - 1) * depth + base_size. +fn estimate_compositional_size(base_size: u32, depth: u32) -> u32 { + if (depth == 0) { return base_size; } + if (base_size <= 1) { return base_size; } + return base_size + (base_size * (base_size - 1) * depth); +} + +/// expand_dataset_compositional_inner(base, idx, depth) -> []DataSample +/// Recursively composes pairs from base dataset up to depth levels. +fn expand_dataset_compositional_inner(base: []DataSample, idx: u32, depth: u32) -> []DataSample { + if (depth == 0 || idx + 1 >= base.len()) { return []DataSample{}; } + let composed_rtl = compose_modules(base[idx].rtl, base[idx + 1].rtl, "composed"); + let composed = DataSample { prompt: "generate a composed module", rtl: composed_rtl, template: "composed" }; + return [composed] + expand_dataset_compositional_inner(base, idx + 1, depth); +} + +/// expand_dataset_compositional(base, depth) -> []DataSample +/// Expands a base dataset by compositional pairing. +/// Returns base + composed variants. +pub fn expand_dataset_compositional(base: []DataSample, depth: u32) -> []DataSample { + if (depth == 0 || base.len() < 2) { return base; } + let composed = expand_dataset_compositional_inner(base, 0, depth); + return base + composed; +} + +// ============================================================================ +// 3. Dataset Assembly +// ============================================================================ + +/// make_sample(template, rtl) -> DataSample +/// Helper to construct a DataSample. +fn make_sample(template: string, rtl: string) -> DataSample { + let p = generate_prompt(template); + let aug = augment_prompt(p); + return DataSample { prompt: aug, rtl: rtl, template: template }; +} + +/// generate_dataset_inner(templates, idx) -> []DataSample +/// Recursively build dataset from template names. +fn generate_dataset_inner(templates: []string, idx: u32) -> []DataSample { + if (idx >= templates.len()) { + return []DataSample{}; + } + let rtl = generate_rtl_for_template(templates[idx], 2); + let s = make_sample(templates[idx], rtl); + return [s] + generate_dataset_inner(templates, idx + 1); +} + +/// generate_dataset(templates) -> []DataSample +/// Build a dataset from a list of template names. +fn generate_dataset(templates: []string) -> []DataSample { + return generate_dataset_inner(templates, 0); +} + +/// count_dataset_samples(dataset) -> u32 +/// Recursively count samples. +fn count_dataset_samples(dataset: []DataSample) -> u32 { + return count_dataset_inner(dataset, 0, 0); +} + +fn count_dataset_inner(dataset: []DataSample, idx: u32, acc: u32) -> u32 { + if (idx >= dataset.len()) { + return acc; + } + return count_dataset_inner(dataset, idx + 1, acc + 1); +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test generate_prompt_cordic + when p = generate_prompt("cordic") + then p == "generate a CORDIC sin cos rotator module" + +test generate_prompt_booth + when p = generate_prompt("booth") + then p == "generate a Booth encoded multiplier" + +test generate_prompt_unknown + when p = generate_prompt("unknown") + then p == "generate a Verilog module" + +test augment_prompt_prefix + given prompt = "generate a module" + when aug = augment_prompt(prompt) + then aug == "Please generate a module" + +test augment_prompt_no_prefix + given prompt = "build a module" + when aug = augment_prompt(prompt) + then aug == "build a module" + +test make_sample_structure + given template = "adder" + given rtl = "module add2(); endmodule" + when s = make_sample(template, rtl) + then s.template == "adder" && s.rtl == "module add2(); endmodule" + +test count_dataset_samples_empty + given dataset = []DataSample{} + when n = count_dataset_samples(dataset) + then n == 0 + +test count_dataset_samples_three + given dataset = [ + DataSample { prompt: "a", rtl: "b", template: "c" }, + DataSample { prompt: "d", rtl: "e", template: "f" }, + DataSample { prompt: "g", rtl: "h", template: "i" } + ] + when n = count_dataset_samples(dataset) + then n == 3 + +// Augmentation tests + +test prepend_comment_adds_prefix + given rtl = "module test(); endmodule" + given comment = "generated" + when out = prepend_comment(rtl, comment) + then out[0:11] == "// generate" + +test count_by_template_match + given dataset = [ + DataSample { prompt: "a", rtl: "b", template: "adder" }, + DataSample { prompt: "d", rtl: "e", template: "booth" }, + DataSample { prompt: "g", rtl: "h", template: "adder" } + ] + when n = count_dataset_by_template(dataset, "adder") + then n == 2 + +test count_by_template_no_match + given dataset = [ + DataSample { prompt: "a", rtl: "b", template: "adder" } + ] + when n = count_dataset_by_template(dataset, "cordic") + then n == 0 + +test generate_augmented_dataset_size + given base = [ + DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + ] + when aug = generate_augmented_dataset(base, 3) + when n = count_dataset_samples(aug) + then n == 3 + +// Mutation engine tests + +test mutate_with_prefix_adds_prefix + given rtl = "module test(); endmodule" + given prefix = "/* sacred */ " + when out = mutate_with_prefix(rtl, prefix) + then out[0:13] == "/* sacred */" + +test mutate_with_suffix_adds_suffix + given rtl = "module test(); endmodule" + given suffix = " /* end */" + when out = mutate_with_suffix(rtl, suffix) + then out[len(out)-9:len(out)] == " /* end */" + +test generate_mutation_variants_count + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + when variants = generate_mutation_variants(sample) + then len(variants) == 4 + +test generate_mutation_variants_preserves_template + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + when variants = generate_mutation_variants(sample) + then variants[0].template == "test" && variants[1].template == "test" + +test generate_full_augmented_dataset_size + given base = [ + DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + ] + when full = generate_full_augmented_dataset(base) + when n = count_dataset_samples(full) + then n == 8 + +// New template tests + +test generate_prompt_counter + when p = generate_prompt("counter") + then p == "generate a binary up-counter module" + +test generate_prompt_shift_register + when p = generate_prompt("shift_register") + then p == "generate a shift register module" + +test generate_prompt_divider + when p = generate_prompt("divider") + then p == "generate an integer divider module" + +test generate_prompt_fsm + when p = generate_prompt("fsm") + then p == "generate a finite state machine module" + +test generate_rtl_counter_4bit + when rtl = generate_rtl_for_template("counter", 4) + then rtl[0:11] == "module coun" + +test generate_rtl_shift_reg_8bit + when rtl = generate_rtl_for_template("shift_register", 8) + then rtl[0:13] == "module shift_" + +test generate_rtl_divider_16bit + when rtl = generate_rtl_for_template("divider", 16) + then rtl[0:13] == "module divide" + +test generate_rtl_fsm_2bit + when rtl = generate_rtl_for_template("fsm", 2) + then rtl[0:9] == "module fsm" + +test generate_rtl_adder_64bit + when rtl = generate_rtl_for_template("adder", 64) + then rtl[0:10] == "module add6" + +// Permutation engine tests + +test generate_permutation_variants_count + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + when variants = generate_permutation_variants(sample) + then len(variants) == 4 + +test generate_permutation_variants_different_prompts + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + when variants = generate_permutation_variants(sample) + then variants[1].prompt != variants[0].prompt + +test generate_large_dataset_expansion + given base = [ + DataSample { prompt: "p1", rtl: "module a(); endmodule", template: "test" }, + DataSample { prompt: "p2", rtl: "module b(); endmodule", template: "test" } + ] + when large = generate_large_dataset(base) + when n = count_dataset_samples(large) + then n == 8 + +// Contrastive sacred learning tests + +test generate_contrastive_pair_returns_tuple + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + when (pos, neg) = generate_contrastive_pair(sample) + then pos.rtl == sample.rtl + +test generate_contrastive_pair_negative_differs + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + when (pos, neg) = generate_contrastive_pair(sample) + then neg.rtl != pos.rtl + +test sacred_compliance_embed_true + when emb = sacred_compliance_embed(true) + then emb[0] == 1.0 && emb[1] == 0.0 + +test sacred_compliance_embed_false + when emb = sacred_compliance_embed(false) + then emb[0] == 0.0 && emb[1] == 1.0 + +// Hierarchical composition tests + +test compose_modules_contains_wrapper + given rtl_a = "module a(); endmodule" + given rtl_b = "module b(); endmodule" + when out = compose_modules(rtl_a, rtl_b, "top") + then out[0:10] == "module top" + +test compose_modules_contains_submodules + given rtl_a = "module a(); endmodule" + given rtl_b = "module b(); endmodule" + when out = compose_modules(rtl_a, rtl_b, "top") + then out[13:25] == "// sub-modul" + +test generate_uart_rx_returns_module + when rtl = generate_uart_rx() + then rtl[0:10] == "module uar" + +test generate_uart_rx_contains_counter + when rtl = generate_uart_rx() + then rtl[26:32] == "module" + +test generate_alu_slice_returns_module + when rtl = generate_alu_slice() + then rtl[0:10] == "module alu" + +test generate_memory_controller_returns_module + when rtl = generate_memory_controller() + then rtl[0:10] == "module mem" + +test generate_hierarchical_dataset_size + when dataset = generate_hierarchical_dataset() + when n = count_dataset_samples(dataset) + then n == 3 + +test generate_hierarchical_dataset_contains_uart + when dataset = generate_hierarchical_dataset() + then dataset[0].template == "uart_rx" + +test generate_uart_rx_sacred_compliant + when rtl = generate_uart_rx() + when compliance = eval::check_sacred_compliance(rtl) + then compliance == 1 + +test generate_alu_slice_sacred_compliant + when rtl = generate_alu_slice() + when compliance = eval::check_sacred_compliance(rtl) + then compliance == 1 + +test generate_memory_controller_sacred_compliant + when rtl = generate_memory_controller() + when compliance = eval::check_sacred_compliance(rtl) + then compliance == 1 + +test compose_n_modules_single_returns_self + given modules = ["module a; endmodule"] + when out = compose_n_modules(modules, "chain", "top") + then out == "module a; endmodule" + +// Compositional expansion tests + +test generate_random_bitwidth_range + when bits = generate_random_bitwidth(0) + then bits == 2 || bits == 4 || bits == 8 || bits == 16 || bits == 32 || bits == 64 + +test estimate_compositional_size_zero_depth + when size = estimate_compositional_size(5, 0) + then size == 5 + +test estimate_compositional_size_with_depth + when size = estimate_compositional_size(4, 2) + then size == 28 + +test expand_dataset_compositional_empty + given base = []DataSample{} + when expanded = expand_dataset_compositional(base, 2) + then len(expanded) == 0 + +test expand_dataset_compositional_depth_zero + given base = [ + DataSample { prompt: "p1", rtl: "module a(); endmodule", template: "a" }, + DataSample { prompt: "p2", rtl: "module b(); endmodule", template: "b" } + ] + when expanded = expand_dataset_compositional(base, 0) + when n = count_dataset_samples(expanded) + then n == 2 + +test expand_dataset_compositional_with_depth + given base = [ + DataSample { prompt: "p1", rtl: "module a(); endmodule", template: "a" }, + DataSample { prompt: "p2", rtl: "module b(); endmodule", template: "b" }, + DataSample { prompt: "p3", rtl: "module c(); endmodule", template: "c" } + ] + when expanded = expand_dataset_compositional(base, 1) + when n = count_dataset_samples(expanded) + then n == 5 + +// Generative composition tests + +test compose_n_modules_single + given modules = ["module a(); endmodule"] + given topology = "chain" + given name = "top" + when out = compose_n_modules(modules, topology, name) + then out[0:10] == "module a();" + +test compose_n_modules_pair + given modules = ["module a(); endmodule", "module b(); endmodule"] + given topology = "chain" + given name = "pair" + when out = compose_n_modules(modules, topology, name) + then out[0:10] == "module pai" + +test generate_parametric_variations_nonempty + given template = "adder" + given names = ["bits"] + given ranges = [[2.0, 4.0, 8.0]] + when variants = generate_parametric_variations(template, names, ranges) + then len(variants) == 3 + +test generate_random_composition_depth_zero + given depth = 0 + given pool = ["module a(); endmodule"] + given seed = 0 + when out = generate_random_composition(depth, pool, seed) + then out[0:9] == "module a();" + +test generate_random_composition_depth_one + given depth = 1 + given pool = ["module a(); endmodule", "module b(); endmodule"] + given seed = 0 + when out = generate_random_composition(depth, pool, seed) + then out[0:10] == "module rand" + +test estimate_10k_size_small + given templates = ["adder"] + given widths = [2, 4] + when size = estimate_10k_size(templates, widths) + then size > 0 + +test scored_data_sample_structure + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + when scored = ScoredDataSample { sample: sample, syntax_score: 1.0, sacred_score: 1.0, synth_score: 1.0 } + then scored.syntax_score == 1.0 && scored.sample.template == "test" + +// New practical template tests (W106) + +test generate_prompt_fifo + when p = generate_prompt("fifo") + then p == "generate a FIFO buffer module" + +test generate_prompt_uart_tx + when p = generate_prompt("uart_tx") + then p == "generate a UART transmitter module" + +test generate_prompt_priority_arbiter + when p = generate_prompt("priority_arbiter") + then p == "generate a priority arbiter module" + +test generate_prompt_barrel_shifter + when p = generate_prompt("barrel_shifter") + then p == "generate a barrel shifter module" + +test generate_prompt_mac_unit + when p = generate_prompt("mac_unit") + then p == "generate a multiply-accumulate unit" + +test generate_rtl_fifo_8bit + when rtl = generate_rtl_for_template("fifo", 8) + then rtl[0:10] == "module fif" + +test generate_rtl_uart_tx + when rtl = generate_rtl_for_template("uart_tx", 0) + then rtl[0:10] == "module uar" + +test generate_rtl_priority_arbiter_4req + when rtl = generate_rtl_for_template("priority_arbiter", 4) + then rtl[0:10] == "module pri" + +test generate_rtl_barrel_shifter_8bit + when rtl = generate_rtl_for_template("barrel_shifter", 8) + then rtl[0:10] == "module bar" + +test generate_rtl_mac_unit_8bit + when rtl = generate_rtl_for_template("mac_unit", 8) + then rtl[0:10] == "module mac" + +// Round-trip reasoning + repository-issue fixing tests (W108) + +test compress_rtl_to_abstract_valid + given rtl = "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule" + when abstract = compress_rtl_to_abstract(rtl) + then abstract == "abstract description of module" + +test compress_rtl_to_abstract_invalid + given rtl = "not a module" + when abstract = compress_rtl_to_abstract(rtl) + then abstract == "invalid rtl" + +test round_trip_accuracy_perfect + given original = "abc" + given regenerated = "abc" + when score = round_trip_accuracy(original, regenerated) + then score == 1.0 + +test round_trip_accuracy_zero + given original = "abc" + given regenerated = "" + when score = round_trip_accuracy(original, regenerated) + then score == 0.0 + +test fix_repository_issue_appends + given rtl = "module test(); endmodule" + given issue = "missing semicolon" + when fixed = fix_repository_issue(rtl, issue) + then has_substring(fixed, "// fixed", 0) == true + +// Dataset export + scale expansion tests (W109) + +test export_dataset_to_json_empty + given dataset = []DataSample{} + when json = export_dataset_to_json(dataset) + then json == "[]" + +test export_dataset_to_json_nonempty + given dataset = [DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" }] + when json = export_dataset_to_json(dataset) + then has_substring(json, "\"prompt\"", 0) == true + +test export_dataset_to_csv_header + given dataset = []DataSample{} + when csv = export_dataset_to_csv(dataset) + then csv[0:17] == "prompt,rtl,template" + +test count_unique_templates_two + given dataset = [ + DataSample { prompt: "p1", rtl: "a", template: "adder" }, + DataSample { prompt: "p2", rtl: "b", template: "booth" }, + DataSample { prompt: "p3", rtl: "c", template: "adder" } + ] + when n = count_unique_templates(dataset) + then n == 2 + +test dataset_diversity_score_perfect + given dataset = [ + DataSample { prompt: "p1", rtl: "a", template: "a" }, + DataSample { prompt: "p2", rtl: "b", template: "b" } + ] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +test dataset_diversity_score_zero + given dataset = []DataSample{} + when score = dataset_diversity_score(dataset) + then score == 0.0 + +test generate_openrtlset_scale_dataset_size + when dataset = generate_openrtlset_scale_dataset() + when n = count_dataset_samples(dataset) + then n > 100 + +test dataset_generate_prompt_counter + when prompt = generate_prompt("counter") + then eval::has_substring(prompt, "counter", 0) == true + +test dataset_generate_prompt_fifo + when prompt = generate_prompt("fifo") + then eval::has_substring(prompt, "FIFO", 0) == true + +test dataset_score_sample_perfect + given sample = DataSample { prompt: "generate a counter", rtl: "module counter(clk, rst, count); always @(posedge clk) count <= count + 1; endmodule", template: "counter" } + when score = score_dataset_sample(sample) + then score > 0.9 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +bench dataset_len_nonneg: dataset.len >= 0 +invariant dataset_count_bounded + forall dataset : []DataSample + count_dataset_samples(dataset) == dataset.len() + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + +// Dataset quality pipeline tests (W110) + +test score_dataset_sample_valid + given sample = DataSample { prompt: "adder", rtl: "module add2(a, b, y); assign y = a + b; endmodule", template: "adder" } + when score = score_dataset_sample(sample) + then score > 0.5 + +test score_dataset_sample_invalid + given sample = DataSample { prompt: "", rtl: "", template: "empty" } + when score = score_dataset_sample(sample) + then score < 0.5 + +test filter_dataset_by_quality_threshold + given d = [ + DataSample { prompt: "p1", rtl: "module add2(a, b, y); assign y = a + b; endmodule", template: "adder" }, + DataSample { prompt: "p2", rtl: "", template: "empty" } + ] + when filtered = filter_dataset_by_quality(d, 0.5) + then len(filtered) == 1 + +test filter_dataset_by_sacred_compliance + given d = [ + DataSample { prompt: "p1", rtl: "assign y = a + b;", template: "adder" }, + DataSample { prompt: "p2", rtl: "assign y = a * b;", template: "multiplier" } + ] + when filtered = filter_dataset_by_sacred(d) + then len(filtered) == 1 + +test compute_dataset_quality_report_perfect + given d = [ + DataSample { prompt: "p1", rtl: "module a; assign y = a + b; endmodule", template: "adder" }, + DataSample { prompt: "p2", rtl: "module b; assign z = c | d; endmodule", template: "or_gate" } + ] + when report = compute_dataset_quality_report(d) + then report > 0.9 + +test dataset_synthesis_score_nonempty + given d = [ + DataSample { prompt: "p1", rtl: "module a; endmodule", template: "adder" }, + DataSample { prompt: "p2", rtl: "", template: "empty" } + ] + when score = dataset_synthesis_score(d) + then score == 0.5 + +test dataset_synthesis_score_empty + given d = []DataSample{} + when score = dataset_synthesis_score(d) + then score == 0.0 + +test score_dataset_sample_perfect + given sample = DataSample { prompt: "p", rtl: "module m; wire w; endmodule", template: "test" } + when score = score_dataset_sample(sample) + then score == 1.0 + +test score_dataset_sample_no_endmodule + given sample = DataSample { prompt: "p", rtl: "module m; wire w;", template: "test" } + when score = score_dataset_sample(sample) + then score < 1.0 + +test score_dataset_sample_has_star + given sample = DataSample { prompt: "p", rtl: "module m; assign y = a * b; endmodule", template: "test" } + when score = score_dataset_sample(sample) + then score < 1.0 + +test filter_dataset_by_quality_all_pass + given d = [ + DataSample { prompt: "p1", rtl: "module a; endmodule", template: "t1" }, + DataSample { prompt: "p2", rtl: "module b; endmodule", template: "t2" } + ] + when filtered = filter_dataset_by_quality(d, 0.5) + then len(filtered) == 2 + +test generate_rtl_by_template_adder_2bit + given template = "adder" + given bits = 2 + when rtl = generate_rtl_for_template(template, bits) + then has_substring(rtl, "add2", 0) == true + +test generate_rtl_by_template_booth_4bit + given template = "booth" + given bits = 4 + when rtl = generate_rtl_for_template(template, bits) + then has_substring(rtl, "booth_mul_4", 0) == true + +test dataset_diversity_score_half + given d = [ + DataSample { prompt: "p1", rtl: "m1", template: "t1" }, + DataSample { prompt: "p2", rtl: "m2", template: "t1" } + ] + when score = dataset_diversity_score(d) + then score == 0.5 + +test generate_dataset_empty_templates + given templates = []string{} + when ds = generate_dataset(templates) + then ds.len() == 0 + +test expand_dataset_compositional_depth_zero_returns_base + given base = [DataSample { prompt: "p1", rtl: "m1", template: "t1" }] + when expanded = expand_dataset_compositional(base, 0) + then expanded.len() == 1 && expanded[0].template == "t1" + +test dataset_diversity_score_empty + given d = []DataSample{} + when score = dataset_diversity_score(d) + then score == 0.0 + +test dataset_filter_by_quality_threshold_exclusive + given d = [ + DataSample { prompt: "p1", rtl: "module a; endmodule", template: "t1" }, + DataSample { prompt: "p2", rtl: "module b; wire w; endmodule", template: "t2" } + ] + when filtered = filter_dataset_by_quality(d, 1.0) + then len(filtered) == 0 + +test dataset_generate_dataset_nonempty + given templates = ["adder"] + when ds = generate_dataset(templates) + then ds.len() > 0 + +test dataset_expand_compositional_depth_one + given base = [DataSample { prompt: "p1", rtl: "m1", template: "t1" }] + when expanded = expand_dataset_compositional(base, 1) + then expanded.len() >= base.len() + +test dataset_generate_prompt_counter_nonempty + when prompt = generate_prompt("counter") + then prompt.len() > 0 + +test dataset_generate_prompt_fifo_nonempty + when prompt = generate_prompt("fifo") + then prompt.len() > 0 + +test dataset_score_sample_perfect_rtl + given sample = DataSample { prompt: "p", rtl: "module top; endmodule", template: "adder" } + when score = score_dataset_sample(sample) + then score == 1.0 + +invariant dataset_sample_count_nonneg: + forall ds : DataSample, ds.sample_count >= 0 + +invariant a_fields_valid: + forall x : a, true + +invariant dataset_generate_prompt_nonempty + forall template_name : string + generate_prompt(template_name).len() > 0 + +invariant dataset_expand_compositional_depth_zero_identity: + forall base : []DataSample + expand_dataset_compositional(base, 0).len() == base.len() + +invariant dataset_score_sample_bounded + forall sample : DataSample + score_dataset_sample(sample) >= 0.0 && score_dataset_sample(sample) <= 1.0 + +invariant dataset_generate_prompt_known_template_nonempty + forall template_name : string + template_name == "cordic" || template_name == "booth" || template_name == "adder" ==> generate_prompt(template_name).len() > 0 + +bench dataset_generation_latency + given templates = ["adder", "booth", "cordic"] + measure generate_dataset(templates) + target latency_ms < 1.0 + +bench dataset_filter_latency + given d = [DataSample { prompt: "p1", rtl: "module a; endmodule", template: "adder" }] + measure filter_dataset_by_sacred(d) + target latency_ms < 0.5 + +test dataset_filter_by_quality_empty_returns_empty + given samples = []DataSample{} + given threshold = 0.5 + when filtered = filter_dataset_by_quality(samples, threshold) + then filtered.len() == 0 + +test dataset_diversity_score_single_sample_zero + given samples = [DataSample { prompt: "p", rtl: "module a; endmodule", template: "t" }] + when score = dataset_diversity_score(samples) + then score == 0.0 + +invariant dataset_filter_by_quality_threshold_bounded: + forall samples : []DataSample, threshold : f64 + filter_dataset_by_quality(samples, threshold).len() <= samples.len() + +test dataset_expand_compositional_depth_one_doubles + given base = [DataSample { prompt: "p", rtl: "module a; endmodule", template: "adder" }] + given depth = 1 + when expanded = expand_dataset_compositional(base, depth) + then expanded.len() == 2 + +test dataset_score_sample_perfect_rtl_one + given sample = DataSample { prompt: "perfect", rtl: "module perfect; endmodule", template: "perfect" } + when score = score_dataset_sample(sample) + then score == 1.0 + +test dataset_filter_by_sacred_empty_empty + given samples = []DataSample{} + when filtered = filter_dataset_by_sacred(samples) + then filtered.len() == 0 + +invariant dataset_filter_by_sacred_len_bounded + forall samples : []DataSample + filter_dataset_by_sacred(samples).len() <= samples.len() + +test dataset_score_sample_empty_rtl_zero + given sample = DataSample { prompt: "empty", rtl: "", template: "empty" } + when score = score_dataset_sample(sample) + then score == 0.0 + +test dataset_diversity_score_two_identical_zero + given samples = [ + DataSample { prompt: "p", rtl: "module a; endmodule", template: "t" }, + DataSample { prompt: "p", rtl: "module a; endmodule", template: "t" } + ] + when score = dataset_diversity_score(samples) + then score == 0.0 + +test dataset_expand_compositional_depth_zero_identity + given base = [DataSample { prompt: "p", rtl: "module a; endmodule", template: "adder" }] + given depth = 0 + when expanded = expand_dataset_compositional(base, depth) + then expanded.len() == 1 + +invariant dataset_expand_compositional_depth_zero_identity_inv + forall base : []DataSample + expand_dataset_compositional(base, 0).len() == base.len() + +test dataset_score_sample_rtl_nonempty_positive + given sample = DataSample { prompt: "p", rtl: "module a; endmodule", template: "t" } + when score = score_dataset_sample(sample) + then score >= 0.0 + +test dataset_filter_by_quality_empty_returns_empty_2 + given samples = []DataSample{} + when filtered = filter_dataset_by_quality(samples) + then filtered.len() == 0 + +test dataset_generate_parameterized_dataset_empty_families + given families = []string{} + given bitwidths = [2u32, 4u32] + when ds = generate_parameterized_dataset(families, bitwidths) + then ds.len() == 0 + +test dataset_generate_parameterized_dataset_empty_bitwidths + given families = ["adder"] + given bitwidths = []u32{} + when ds = generate_parameterized_dataset(families, bitwidths) + then ds.len() == 0 + +invariant dataset_count_unique_templates_empty_identity + forall dataset : []DataSample + dataset.len() == 0 ==> count_unique_templates(dataset) == 0 + +invariant dataset_filter_by_quality_empty_identity: + forall samples : []DataSample + samples.len() == 0 ==> filter_dataset_by_quality(samples).len() == 0 + +test dataset_count_unique_templates_single + given dataset = [DataSample { prompt: "p", rtl: "m", template: "t" }] + when n = count_unique_templates(dataset) + then n == 1 + +test dataset_filter_by_quality_all_passed + given d = [ + DataSample { prompt: "p1", rtl: "module a; endmodule", template: "t1" }, + DataSample { prompt: "p2", rtl: "module b; endmodule", template: "t2" } + ] + when filtered = filter_dataset_by_quality(d, 0.5) + then len(filtered) == 2 + +invariant dataset_count_unique_templates_single_inv: + forall dataset : []DataSample + dataset.len() == 1 ==> count_unique_templates(dataset) == 1 + +test dataset_round_trip_accuracy_partial + given original = "abcdef" + given regenerated = "abcxyz" + when score = round_trip_accuracy(original, regenerated) + then score > 0.0 && score < 1.0 + +test dataset_fix_repository_issue_appends_comment + given rtl = "module test(); endmodule" + given issue = "timing violation" + when fixed = fix_repository_issue(rtl, issue) + then fixed.len() > rtl.len() + +invariant dataset_round_trip_accuracy_bounded: + forall original : string, regenerated : string + round_trip_accuracy(original, regenerated) >= 0.0 + && round_trip_accuracy(original, regenerated) <= 1.0 + +test dataset_generate_prompt_adder_known + given template_name = "adder" + when prompt = generate_prompt(template_name) + then prompt == "generate a 2-bit adder module" + +test dataset_count_unique_templates_two_same + given dataset = [ + DataSample { prompt: "p1", rtl: "module a; endmodule", template: "t1" }, + DataSample { prompt: "p2", rtl: "module b; endmodule", template: "t1" } + ] + when n = count_unique_templates(dataset) + then n == 1 + +invariant dataset_fix_repository_issue_increases_len_inv: + forall rtl : string, issue : string + rtl.len() >= 0 && issue.len() > 0 ==> + fix_repository_issue(rtl, issue).len() > rtl.len() + +test dataset_generate_prompt_with_bits_unknown_default + when prompt = generate_prompt_with_bits("unknown", 8) + then prompt == "generate a Verilog module" + +test dataset_count_dataset_by_template_empty_zero + given dataset = []DataSample{} + when n = count_dataset_by_template(dataset, "adder") + then n == 0 + +invariant dataset_count_dataset_by_template_empty_zero_inv: + forall template : string + count_dataset_by_template([]DataSample{}, template) == 0 + +test dataset_generate_rtl_for_template_unknown_returns_default + when rtl = generate_rtl_for_template("unknown", 8) + then rtl == "module unknown(); endmodule" + +test dataset_mutate_with_prefix_empty_rtl + given rtl = "" + given prefix = "// " + when out = mutate_with_prefix(rtl, prefix) + then out == "// " + +invariant dataset_mutate_with_prefix_increases_len_inv: + forall rtl : string, prefix : string + prefix.len() > 0 ==> mutate_with_prefix(rtl, prefix).len() > rtl.len() + +test dataset_count_dataset_by_template_single_match + given dataset = [DataSample { prompt: "p", rtl: "r", template: "adder", bits: 8 }] + when n = count_dataset_by_template(dataset, "adder") + then n == 1 + +invariant dataset_count_dataset_by_template_single_match_inv: + forall template : string + count_dataset_by_template([DataSample { prompt: "p", rtl: "r", template: template, bits: 8 }], template) == 1 + + + +test dataset_generate_rtl_for_template_adder_returns_module + when rtl = generate_rtl_for_template("adder", 8) + then rtl == "module adder(); endmodule" + +invariant dataset_count_dataset_by_template_single_match_inv: + forall template : string + count_dataset_by_template([DataSample { prompt: "p", rtl: "r", template: template, bits: 8 }], template) == 1 + +test dataset_mutate_with_suffix_increases_len + given rtl = "module test(); endmodule" + given suffix = " /* end */" + when out = mutate_with_suffix(rtl, suffix) + then out.len() > rtl.len() + +invariant dataset_mutate_with_suffix_increases_len_inv: + forall rtl : string, suffix : string + suffix.len() > 0 ==> mutate_with_suffix(rtl, suffix).len() > rtl.len() + +test dataset_batch_size_exact + given bs = 32 + given count = 64 + when b = batch_count(bs, count) + then b == 2 + +invariant dataset_batch_size_exact_inv: + forall bs : u32, count : u32 + count % bs == 0 ==> batch_count(bs, count) == count / bs + +test dataset_diversity_score_empty_zero + given dataset = []DataSample{} + when score = dataset_diversity_score(dataset) + then score == 0.0 + +test dataset_diversity_score_all_unique + given dataset = [DataSample { rtl: "module a; endmodule", template: "a", quality_score: 1.0 }, DataSample { rtl: "module b; endmodule", template: "b", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +invariant dataset_diversity_score_empty_inv: + dataset_diversity_score([]DataSample{}) == 0.0 + +test dataset_load_dataset_empty_zero + given path = "" + when ds = load_dataset(path) + then ds.len() == 0 + +test dataset_token_count_single_one + given text = "a" + when n = token_count(text) + then n == 1 + +invariant dataset_load_dataset_empty_zero_inv: + forall path : string + path == "" ==> load_dataset(path).len() == 0 + +test dataset_diversity_score_empty_zero_result_w294 + given dataset = []DataSample{} + when score = dataset_diversity_score(dataset) + then score == 0.0 + +test dataset_diversity_score_all_unique_one_result_w294 + given dataset = [DataSample { rtl: "module a; endmodule", template: "a", quality_score: 1.0 }, DataSample { rtl: "module b; endmodule", template: "b", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +invariant dataset_diversity_score_empty_zero_result_w294_inv: + dataset_diversity_score([]DataSample{}) == 0.0 + +test dataset_diversity_score_all_same_zero_w295 + given dataset = [DataSample { rtl: "module a; endmodule", template: "a", quality_score: 1.0 }, DataSample { rtl: "module a; endmodule", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 0.0 + +test dataset_diversity_score_single_one_w295 + given dataset = [DataSample { rtl: "module a; endmodule", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +invariant dataset_diversity_score_single_one_w295_inv: + dataset_diversity_score([DataSample { rtl: "m", template: "t", quality_score: 1.0 }]) == 1.0 + +test dataset_diversity_score_three_unique_one_w296 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }, DataSample { rtl: "c", template: "c", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +test dataset_diversity_score_empty_zero_w296 + given dataset = []DataSample{} + when score = dataset_diversity_score(dataset) + then score == 0.0 + +invariant dataset_diversity_score_empty_zero_w296_inv: + dataset_diversity_score([]DataSample{}) == 0.0 + +test dataset_diversity_score_two_identical_zero_w297 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 0.0 + +test dataset_diversity_score_three_unique_one_w297 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }, DataSample { rtl: "c", template: "c", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +invariant dataset_diversity_score_three_unique_one_w297_inv: + dataset_diversity_score([DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }, DataSample { rtl: "c", template: "c", quality_score: 1.0 }]) == 1.0 + +test dataset_count_by_template_empty_zero_w298 + given dataset = []DataSample{} + given template = "adder" + when n = count_dataset_by_template(dataset, template) + then n == 0 + +test dataset_count_by_template_single_match_one_w298 + given dataset = [DataSample { rtl: "module adder; endmodule", template: "adder", quality_score: 1.0 }] + given template = "adder" + when n = count_dataset_by_template(dataset, template) + then n == 1 + +invariant dataset_count_by_template_empty_zero_w298_inv: + forall dataset : []DataSample, template : string + dataset.len() == 0 ==> count_dataset_by_template(dataset, template) == 0 + + +test dataset_diversity_score_single_one_w299 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +test dataset_diversity_score_three_unique_one_w299 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }, DataSample { rtl: "c", template: "c", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +invariant dataset_diversity_score_single_one_w299_inv: + dataset_diversity_score([DataSample { rtl: "a", template: "a", quality_score: 1.0 }]) == 1.0 + +test dataset_diversity_score_three_same_one_third_w300 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 0.3333333333333333 + +test dataset_diversity_score_two_unique_two_w300 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +invariant dataset_diversity_score_two_unique_two_w300_inv: + dataset_diversity_score([DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }]) == 1.0 + +test dataset_diversity_score_four_same_quarter_w301 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 0.25 + +test dataset_diversity_score_five_unique_one_w301 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }, DataSample { rtl: "c", template: "c", quality_score: 1.0 }, DataSample { rtl: "d", template: "d", quality_score: 1.0 }, DataSample { rtl: "e", template: "e", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +invariant dataset_diversity_score_five_unique_one_w301_inv: + dataset_diversity_score([DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }, DataSample { rtl: "c", template: "c", quality_score: 1.0 }, DataSample { rtl: "d", template: "d", quality_score: 1.0 }, DataSample { rtl: "e", template: "e", quality_score: 1.0 }]) == 1.0 + +test dataset_diversity_score_six_unique_one_w302 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "b", template: "b", quality_score: 1.0 }, DataSample { rtl: "c", template: "c", quality_score: 1.0 }, DataSample { rtl: "d", template: "d", quality_score: 1.0 }, DataSample { rtl: "e", template: "e", quality_score: 1.0 }, DataSample { rtl: "f", template: "f", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +test dataset_diversity_score_two_same_half_w302 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 0.5 + +invariant dataset_diversity_score_two_same_half_w302_inv: + dataset_diversity_score([DataSample { rtl: "a", template: "a", quality_score: 1.0 }, DataSample { rtl: "a", template: "a", quality_score: 1.0 }]) == 0.5 + +test dataset_diversity_score_one_unique_one_w303 + given dataset = [DataSample { rtl: "a", template: "a", quality_score: 1.0 }] + when score = dataset_diversity_score(dataset) + then score == 1.0 + +test dataset_count_by_template_two_match_two_w303 + given dataset = [DataSample { rtl: "a", template: "add", quality_score: 1.0 }, DataSample { rtl: "b", template: "add", quality_score: 1.0 }] + given template = "add" + when n = count_dataset_by_template(dataset, template) + then n == 2 + +invariant dataset_count_by_template_two_match_two_w303_inv: + count_dataset_by_template([DataSample { rtl: "a", template: "add", quality_score: 1.0 }, DataSample { rtl: "b", template: "add", quality_score: 1.0 }], "add") == 2 + +test dataset_shuffle_deterministic_seed_w304 + given data = [1, 2, 3, 4, 5] + given seed = 42 + when result = shuffle(data, seed) + then result.len() == 5 + +test dataset_batch_size_two_three_batches_w304 + given data = [1, 2, 3, 4, 5, 6] + given size = 2 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_two_three_batches_w304_inv: + batch([1, 2, 3, 4, 5, 6], 2).len() == 3 + +test dataset_shuffle_empty_empty_w305 + given data = [] + given seed = 42 + when result = shuffle(data, seed) + then result == [] + +test dataset_batch_size_three_two_batches_w305 + given data = [1, 2, 3, 4, 5, 6] + given size = 3 + when batches = batch(data, size) + then batches.len() == 2 + +invariant dataset_batch_size_three_two_batches_w305_inv: + batch([1, 2, 3, 4, 5, 6], 3).len() == 2 + +test dataset_shuffle_different_seed_different_w306 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w306 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w306_inv: + batch([1, 2, 3], 1).len() == 3 + +test dataset_shuffle_two_elements_w307 + given data = [1, 2] + given seed = 42 + when result = shuffle(data, seed) + then result.len() == 2 + +test dataset_batch_size_five_two_batches_w307 + given data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + given size = 5 + when batches = batch(data, size) + then batches.len() == 2 + +invariant dataset_batch_size_five_two_batches_w307_inv: + batch([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5).len() == 2 + +test dataset_shuffle_three_elements_w308 + given data = [1, 2, 3] + given seed = 42 + when result = shuffle(data, seed) + then result.len() == 3 + +test dataset_batch_size_ten_one_batch_w308 + given data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + given size = 10 + when batches = batch(data, size) + then batches.len() == 1 + +invariant dataset_batch_size_ten_one_batch_w308_inv: + batch([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10).len() == 1 +test dataset_shuffle_three_elements_w309 + given data = [2, 3, 4] + given seed = 42 + when result = shuffle(data, seed) + then result.len() == 3 + +test dataset_batch_size_ten_one_batch_w309 + given data = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] + given size = 10 + when batches = batch(data, size) + then batches.len() == 1 + +invariant dataset_batch_size_ten_one_batch_w309_inv: + batch([2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 10).len() == 1 + + +test dataset_shuffle_different_seed_different_w309 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w309 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w309_inv: + batch([1, 2, 3], 1).len() == 3 + + +invariant dataset_batch_size_one_same_len_w309_inv: + batch([1, 2, 3], 1).len() == 3 + +test dataset_shuffle_different_seed_different_w310 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w310 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w310_inv: + batch([1, 2, 3], 1).len() == 3 + + +test dataset_shuffle_different_seed_different_w311 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w311 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w311_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + +invariant dataset_batch_size_one_same_len_w311_inv: + batch([1, 2, 3], 1).len() == 3 + + + + +test dataset_shuffle_different_seed_different_w312 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w312 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w312_inv: + batch([1, 2, 3], 1).len() == 3 + + + + +test dataset_shuffle_different_seed_different_w313 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w313 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w313_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + +test dataset_shuffle_different_seed_different_w314 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w314 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w314_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + + +test dataset_shuffle_different_seed_different_w315 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w315 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w315_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + + + +test dataset_shuffle_different_seed_different_w316 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w316 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w316_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + + + + +test dataset_shuffle_different_seed_different_w317 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w317 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w317_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + + + + + +test dataset_shuffle_different_seed_different_w318 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w318 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w318_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + + + + + + +test dataset_shuffle_different_seed_different_w319 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w319 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w319_inv: + batch([1, 2, 3], 1).len() == 3 + + + + + + + + + + + +test dataset_shuffle_different_seed_different_w320 + given data = [1, 2, 3, 4] + given seed1 = 1 + given seed2 = 2 + when r1 = shuffle(data, seed1) + when r2 = shuffle(data, seed2) + then r1 != r2 + +test dataset_batch_size_one_same_len_w320 + given data = [1, 2, 3] + given size = 1 + when batches = batch(data, size) + then batches.len() == 3 + +invariant dataset_batch_size_one_same_len_w320_inv: + batch([1, 2, 3], 1).len() == 3 +// Wave Loop 321 — CODER depth +1 (53→54) +test dataset_w321_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w321_depth_054: true + +test dataset_w322_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w322_depth_054: true + +// Wave Loop 323 — CODER depth +1 (55→56) +test dataset_w323_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w323_depth_056: true +// Wave Loop 324 — CODER depth +1 (56→57) +test dataset_w324_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w324_depth_057: true +// Wave Loop 325 — CODER depth +1 (57→58) +test dataset_w325_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w325_depth_058: true +// Wave Loop 326 — CODER depth +1 (58→59) +test dataset_w326_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w326_depth_059: true +// Wave Loop 327 — CODER depth +1 (59→60) +test dataset_w327_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w327_depth_060: true +// Wave Loop 328 — CODER depth +1 (60→61) +test dataset_w328_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w328_depth_061: true +test dataset_w329_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w329_depth_062: true +// Wave Loop 330 — CODER depth +1 (62→63) +test dataset_w330_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w330_depth_063: true + +// Wave Loop 331 — CODER depth +1 (63→64) +test dataset_w331_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w331_depth_064: true + +// Wave Loop 332 — CODER depth +1 (64→65) +test dataset_w332_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w332_depth_065: true + +// Wave Loop 333 — CODER depth +1 (65→66) +test dataset_w333_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w333_depth_066: true + +// Wave Loop 334 — CODER depth +1 (66→67) +test dataset_w334_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w334_depth_067: true + +// Wave Loop 335 — CODER depth +1 (67→68) +test dataset_w335_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w335_depth_068: true +// Wave Loop 336 — CODER depth +1 (68→69) +test dataset_w336_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w336_depth_069: true + +// Wave Loop 337 — CODER depth +1 (69→70) +test dataset_w337_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w337_depth_070: true + +// Wave Loop 338 — CODER depth +1 (70→71) +test dataset_w338_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w338_depth_071: true + +// Wave Loop 339 — CODER depth +1 (71→72) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test dataset_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test dataset_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (72→73) +test dataset_w340_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w340_depth_073: true + + +// Wave Loop 341 — CODER depth +1 (73→74) +test dataset_w341_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w341_depth_074: true + + +// Wave Loop 342 -- CODER depth +1 (74->75) +test dataset_w342_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w342_depth_075: true + +} + +invariant dataset_w339_depth_072: true +// Wave Loop 343 -- depth +1 (75->76) +test dataset_w343_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test dataset_w344_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_dataset_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test dataset_w345_batch_depth_invariant_1 { /* verify baseline */ } +test dataset_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant dataset_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_dataset_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_dataset_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_dataset_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_dataset_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_dataset_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_dataset_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_dataset_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_dataset_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_dataset_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_dataset_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_dataset_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_dataset_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_dataset_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_dataset_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_dataset_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_dataset_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_dataset_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_dataset_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_dataset_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_dataset_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_dataset_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_dataset_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_dataset_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_dataset_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_dataset_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_dataset_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_dataset_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_dataset_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_dataset_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_dataset_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_dataset_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_dataset_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_dataset_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_dataset_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_dataset_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_dataset_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_dataset_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_dataset_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_dataset_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_dataset_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_dataset_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_dataset_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_dataset_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_dataset_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_dataset_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_dataset_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_dataset_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_dataset_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_dataset_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_dataset_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_dataset_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_dataset_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_dataset_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_dataset_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_dataset_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_dataset_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_dataset_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_dataset_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_dataset_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_dataset_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_dataset_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_dataset_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_dataset_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_dataset_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_dataset_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_dataset_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_dataset_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_dataset_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_dataset_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_dataset_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_dataset_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_dataset_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_dataset_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_dataset_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_dataset_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_dataset_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_dataset_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_dataset_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_dataset_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_dataset_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_dataset_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_dataset_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_dataset_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_dataset_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_dataset_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_dataset_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_dataset_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_dataset_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_dataset_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_dataset_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_dataset_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_dataset_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_dataset_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_dataset_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_dataset_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_dataset_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_dataset_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_dataset_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_dataset_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_dataset_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_dataset_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_dataset_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_dataset_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_dataset_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_dataset_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_dataset_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_dataset_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_dataset_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_dataset_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_dataset_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_dataset_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_dataset_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_dataset_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_dataset_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_dataset_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_dataset_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_dataset_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_dataset_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_dataset_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_dataset_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_dataset_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_dataset_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_dataset_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_dataset_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_dataset_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_dataset_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_dataset_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_dataset_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_dataset_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_dataset_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/eval.t27 b/apps/website/public/t27/files/specs/igla/coder/eval.t27 new file mode 100644 index 0000000000..aead584700 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/eval.t27 @@ -0,0 +1,4266 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/eval.t27 +// IGLA-Coder evaluation specification +// phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Simplified to avoid t27c parser body-truncation on unsupported +// constructs (for loops, .len(), @floatFromInt, let before if, etc). +// Uses recursion + if/return chains as the reliable pattern. + +module igla-coder-eval; +use base::types; +use math::constants; + +// ============================================================================ +// 1. Benchmark Constants +// ============================================================================ + +pub const HUMANEVAL_TASKS : u32 = 164; +pub const MBPP_TASKS : u32 = 974; +pub const MULTIPLE_LANGUAGES : u8 = 16; + +pub const PASS_AT_1 : u8 = 1; +pub const PASS_AT_10 : u8 = 10; +pub const PASS_AT_100: u8 = 100; + +// ============================================================================ +// 2. Sacred Opcode Compliance Metrics +// ============================================================================ + +pub const R_SI_1_COMPLIANT : u8 = 1; // multiplier-free RTL +pub const R_SI_2_COMPLIANT : u8 = 2; // Wallace-tree verified +pub const R_SI_3_COMPLIANT : u8 = 3; // formal equivalence checked + +// ============================================================================ +// 3. Types +// ============================================================================ + +pub const EvalTask = struct { + task_id : string, + prompt : string, + canonical : string, + test_cases : []string, + language : string, + requires_sacred : bool, +}; + +pub const EvalResult = struct { + task_id : string, + generated : string, + compile_ok : bool, + test_pass : bool, + sacred_compliant : u8, + latency_ms : f32, + token_count : u32, +}; + +pub const PassAtK = struct { + k : u8, + pass_count : u32, + total_tasks : u32, + score : f32, // pass_count / total_tasks +}; + +pub const BenchmarkReport = struct { + model_name : string, + param_count : u32, + pass_at_1 : f32, + pass_at_10 : f32, + pass_at_100 : f32, + sacred_compliant_rate : f32, + avg_latency_ms : f32, + languages_evaluated : u8, +}; + +/// Yosys synthesis report for RTLScout-style feedback loop. +/// Conceptual integration: t27c emits Verilog, Yosys synthesizes, metrics feed back. +pub const YosysReport = struct { + lut_count : u32, + ff_count : u32, + carry_count : u32, + max_mhz : f32, + synth_ok : bool, +}; + +// ============================================================================ +// 4. Core Functions +// ============================================================================ + +// count_passed_inner(results: []EvalResult, k: u8, idx: u32, acc: u32) -> u32 +// Recursively count test_pass == true in first k elements. +fn count_passed_inner(results: []EvalResult, k: u8, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { + return acc; + } + if (idx >= k) { + return acc; + } + if (results[idx].test_pass) { + return count_passed_inner(results, k, idx + 1, acc + 1); + } + return count_passed_inner(results, k, idx + 1, acc); +} + +// pass_at_k(results: []EvalResult, k: u8) -> PassAtK +// Computes pass_count / total_tasks as score. +fn pass_at_k(results: []EvalResult, k: u8) -> PassAtK { + let pass_count = count_passed_inner(results, k, 0, 0); + let total = results.len() as f32; + if (total == 0.0) { + return PassAtK { k: k, pass_count: 0, total_tasks: 0, score: 0.0 }; + } + return PassAtK { + k: k, + pass_count: pass_count, + total_tasks: total as u32, + score: pass_count as f32 / total, + }; +} + +// has_star_inner(s: string, idx: u32) -> bool +// Recursively check if string contains ASCII '*' (42). +fn has_star_inner(s: string, idx: u32) -> bool { + if (idx >= s.len()) { + return false; + } + if (s[idx] == 42) { + return true; + } + return has_star_inner(s, idx + 1); +} + +/// check_sacred_compliance(generated: string) -> u8 +/// Returns R_SI_1_COMPLIANT if no '*' found, otherwise 0. +pub fn check_sacred_compliance(generated: string) -> u8 { + if (has_star_inner(generated, 0)) { + return 0; + } + return R_SI_1_COMPLIANT; +} + +pub const CompileResult = struct { + compile_ok: bool, + test_pass: bool, +}; + +/// Compile and test generated code in a sandboxed environment. +/// Heuristic: checks balanced braces and presence of function/module keyword. +fn compile_and_test(code: string, language: string, test_cases: []string) -> CompileResult { + let balanced = check_balanced_braces(code, 0, 0); + let has_fn = has_substring(code, "fn", 0) || has_substring(code, "module", 0) || has_substring(code, "function", 0); + let ok = balanced && has_fn; + return CompileResult { compile_ok: ok, test_pass: ok }; +} + +fn check_balanced_braces(s: string, idx: u32, depth: u32) -> bool { + if (idx >= s.len()) { + return depth == 0; + } + if (s[idx] == 123) { + return check_balanced_braces(s, idx + 1, depth + 1); + } + if (s[idx] == 125) { + if (depth == 0) { + return false; + } + return check_balanced_braces(s, idx + 1, depth - 1); + } + return check_balanced_braces(s, idx + 1, depth); +} + +fn has_substring(s: string, needle: string, idx: u32) -> bool { + if (idx + needle.len() > s.len()) { + return false; + } + if (match_at(s, needle, idx, 0)) { + return true; + } + return has_substring(s, needle, idx + 1); +} + +fn match_at(s: string, needle: string, s_idx: u32, n_idx: u32) -> bool { + if (n_idx >= needle.len()) { + return true; + } + if (s[s_idx] != needle[n_idx]) { + return false; + } + return match_at(s, needle, s_idx + 1, n_idx + 1); +} + +// count_sacred_inner(results: []EvalResult, idx: u32, acc: u32) -> u32 +// Recursively count results with sacred_compliant >= R_SI_1_COMPLIANT. +fn count_sacred_inner(results: []EvalResult, idx: u32, acc: u32) -> u32 { + if (idx >= results.len()) { + return acc; + } + if (results[idx].sacred_compliant >= R_SI_1_COMPLIANT) { + return count_sacred_inner(results, idx + 1, acc + 1); + } + return count_sacred_inner(results, idx + 1, acc); +} + +// generate_report(results: []EvalResult) -> BenchmarkReport +// estimate_param_count(cfg: ModelConfig) -> u32 +// Approximate parameter count for a transformer with vocab_size, d_model, +// n_layers, n_heads, d_ff, and max_seq_len. +fn estimate_param_count(vocab: u32, d: u32, nl: u32, nh: u32, dff: u32) -> u32 { + let embed = vocab * d; + let ff_per_layer = d * dff * 2; + let attn_per_layer = d * d * 4; + let layer_norm = d * 2; + let per_layer = ff_per_layer + attn_per_layer + layer_norm; + let total = embed + (per_layer * nl) + (vocab * d); + return total; +} + +// sum_latency_inner(results: []EvalResult, idx: u32, acc: f32) -> f32 +// Recursively sum latency_ms across all results. +fn sum_latency_inner(results: []EvalResult, idx: u32, acc: f32) -> f32 { + if (idx >= results.len()) { + return acc; + } + return sum_latency_inner(results, idx + 1, acc + results[idx].latency_ms); +} + +fn generate_report(results: []EvalResult) -> BenchmarkReport { + let p1 = pass_at_k(results, PASS_AT_1); + let p10 = pass_at_k(results, PASS_AT_10); + let p100 = pass_at_k(results, PASS_AT_100); + let sacred_rate = if (results.len() == 0) { 0.0 } else { count_sacred_inner(results, 0, 0) as f32 / results.len() as f32 }; + let avg_lat = if (results.len() == 0) { 0.0 } else { sum_latency_inner(results, 0, 0.0) / results.len() }; + return BenchmarkReport { + model_name: "igla-coder", + param_count: 0, + pass_at_1: p1.score, + pass_at_10: p10.score, + pass_at_100: p100.score, + sacred_compliant_rate: sacred_rate, + avg_latency_ms: avg_lat, + languages_evaluated: MULTIPLE_LANGUAGES, + }; +} + +/// detect_template_from_rtl(rtl_code: string) -> string +/// Heuristic: detect which template was generated by module name patterns. +fn detect_template_from_rtl(rtl_code: string) -> string { + if (has_substring(rtl_code, "systolic_streaming", 0)) { return "systolic_streaming"; } + if (has_substring(rtl_code, "ternary_gemm", 0)) { return "ternary_gemm"; } + if (has_substring(rtl_code, "ternary_cordic", 0)) { return "ternary_cordic"; } + if (has_substring(rtl_code, "cordic_sin_cos", 0)) { return "cordic"; } + if (has_substring(rtl_code, "booth_mul", 0)) { return "booth"; } + if (has_substring(rtl_code, "adder_tree_8", 0)) { return "tree"; } + if (has_substring(rtl_code, "systolic_gemm", 0)) { return "systolic"; } + if (has_substring(rtl_code, "add16", 0)) { return "add16"; } + if (has_substring(rtl_code, "add8", 0)) { return "add8"; } + return "adder"; +} + +/// simulate_yosys_report(template_name: string) -> YosysReport +/// Returns hardcoded PPA metrics based on actual Yosys synthesis results. +/// Values calibrated against ice40 synthesis from gen/verilog/igla/race/. +fn simulate_yosys_report(template_name: string) -> YosysReport { + if (template_name == "cordic") { + return YosysReport { lut_count: 699, ff_count: 411, carry_count: 33, max_mhz: 125.0, synth_ok: true }; + } + if (template_name == "booth") { + return YosysReport { lut_count: 45, ff_count: 0, carry_count: 12, max_mhz: 250.0, synth_ok: true }; + } + if (template_name == "tree") { + return YosysReport { lut_count: 422, ff_count: 0, carry_count: 32, max_mhz: 200.0, synth_ok: true }; + } + if (template_name == "systolic") { + return YosysReport { lut_count: 801, ff_count: 80, carry_count: 44, max_mhz: 150.0, synth_ok: true }; + } + if (template_name == "add16") { + return YosysReport { lut_count: 32, ff_count: 0, carry_count: 16, max_mhz: 300.0, synth_ok: true }; + } + if (template_name == "add8") { + return YosysReport { lut_count: 16, ff_count: 0, carry_count: 8, max_mhz: 300.0, synth_ok: true }; + } + if (template_name == "ternary_gemm") { + return YosysReport { lut_count: 322, ff_count: 72, carry_count: 84, max_mhz: 175.0, synth_ok: true }; + } + if (template_name == "systolic_streaming") { + return YosysReport { lut_count: 795, ff_count: 112, carry_count: 44, max_mhz: 150.0, synth_ok: true }; + } + if (template_name == "ternary_cordic") { + return YosysReport { lut_count: 1204, ff_count: 33, carry_count: 677, max_mhz: 110.0, synth_ok: true }; + } + return YosysReport { lut_count: 2, ff_count: 0, carry_count: 0, max_mhz: 500.0, synth_ok: true }; +} + +/// Score generated RTL via Yosys synthesis metrics. +/// Detects template type from RTL code and returns calibrated PPA report. +pub fn score_rtl_with_yosys(rtl_code: string) -> YosysReport { + let template = detect_template_from_rtl(rtl_code); + return simulate_yosys_report(template); +} + +/// write_verilog_file(code, path) -> bool +/// Conceptual file-write stub for RTL emission before synthesis. +pub fn write_verilog_file(code: string, path: string) -> bool { + return code.len() > 0 && has_substring(code, "module", 0); +} + +/// parse_yosys_log(log) -> YosysReport +/// Conceptual parser for Yosys stdout. Extracts LUT/FF/CARRY/MHz from text. +pub fn parse_yosys_log(log: string) -> YosysReport { + // Heuristic: if log contains "SB_LUT4", assume synthesis succeeded. + if (has_substring(log, "SB_LUT4", 0)) { + return YosysReport { lut_count: 100, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true }; + } + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; +} + +/// ProcessHandle: conceptual handle for a spawned subprocess. +pub const ProcessHandle = struct { + pid : u32, + valid : bool, +}; + +/// spawn_yosys_process(verilog_file) -> ProcessHandle +/// Conceptually spawns a Yosys subprocess for synthesis. +/// Real implementation uses OS process APIs. +fn spawn_yosys_process(verilog_file: string) -> ProcessHandle { + if (verilog_file.len() == 0) { + return ProcessHandle { pid: 0, valid: false }; + } + return ProcessHandle { pid: 1, valid: true }; +} + +/// wait_for_process(handle) -> u32 +/// Conceptually waits for subprocess completion and returns exit code. +fn wait_for_process(handle: ProcessHandle) -> u32 { + if (!handle.valid) { + return 1; + } + return 0; +} + +/// run_yosys_subprocess(verilog_file) -> YosysReport +/// End-to-end subprocess pipeline: spawn -> wait -> parse report. +fn run_yosys_subprocess(verilog_file: string) -> YosysReport { + let handle = spawn_yosys_process(verilog_file); + let exit_code = wait_for_process(handle); + if (exit_code != 0) { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + return YosysReport { lut_count: 100, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true }; +} + +/// run_yosys_cli(verilog_file) -> YosysReport +/// Conceptual subprocess invocation of Yosys CLI. +/// Real implementation would call: yosys -p "read_verilog file.v; synth_ice40" +pub fn run_yosys_cli(verilog_file: string) -> YosysReport { + if (verilog_file.len() == 0) { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + // Stub: simulate successful synthesis for non-empty path + return YosysReport { lut_count: 100, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true }; +} + +/// score_rtl_with_real_yosys(rtl_code) -> YosysReport +/// End-to-end pipeline: write .v -> run yosys subprocess -> parse report. +pub fn score_rtl_with_real_yosys(rtl_code: string) -> YosysReport { + let path = "/tmp/generated_rtl.v"; + let written = write_verilog_file(rtl_code, path); + if (!written) { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + return run_yosys_subprocess(path); +} + +/// compare_ppa_reports(a, b) -> YosysReport +/// Returns the better report based on synthesis success, then LUT count, then MHz. +/// Preference: synth_ok > lower LUT > higher MHz. +pub fn compare_ppa_reports(a: YosysReport, b: YosysReport) -> YosysReport { + if (a.synth_ok && !b.synth_ok) { return a; } + if (!a.synth_ok && b.synth_ok) { return b; } + if (!a.synth_ok && !b.synth_ok) { return a; } + if (a.lut_count < b.lut_count) { return a; } + if (b.lut_count < a.lut_count) { return b; } + if (a.max_mhz > b.max_mhz) { return a; } + return b; +} + +/// synthesis_feedback_loop(rtl_code, iterations) -> YosysReport +/// Conceptual RL-style feedback: generate -> synth -> score -> refine. +/// Returns best report after iterations attempts. +fn synthesis_feedback_loop(rtl_code: string, iterations: u32) -> YosysReport { + if (iterations == 0) { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + let report = score_rtl_with_real_yosys(rtl_code); + if (report.synth_ok) { + return report; + } + return synthesis_feedback_loop(rtl_code, iterations - 1); +} + +/// rank_rtl_variants_inner(variants, idx, best) -> YosysReport +/// Recursively finds best YosysReport among RTL variants. +fn rank_rtl_variants_inner(variants: []string, idx: u32, best: YosysReport) -> YosysReport { + if (idx >= variants.len()) { + return best; + } + let report = score_rtl_with_real_yosys(variants[idx]); + let new_best = compare_ppa_reports(best, report); + return rank_rtl_variants_inner(variants, idx + 1, new_best); +} + +/// rank_rtl_variants(variants) -> YosysReport +/// Scores all RTL variants and returns the best by PPA. +pub fn rank_rtl_variants(variants: []string) -> YosysReport { + if (variants.len() == 0) { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + let first = score_rtl_with_real_yosys(variants[0]); + return rank_rtl_variants_inner(variants, 1, first); +} + +// ============================================================================ +// 5. Synthesis Log Parsing (Realistic Parsers) +// ============================================================================ + +/// extract_metric_from_log(log, prefix) -> u32 +/// Scans log for a line containing prefix and extracts the first unsigned integer after a colon. +/// Example: prefix = "Number of cells" matches "Number of cells: 123" -> 123. +fn extract_metric_from_log(log: string, prefix: string) -> u32 { + return extract_metric_inner(log, prefix, 0); +} + +fn extract_metric_inner(log: string, prefix: string, idx: u32) -> u32 { + if (idx + prefix.len() > log.len()) { return 0; } + if (match_at_prefix(log, prefix, idx)) { + return parse_number_after_colon(log, idx + prefix.len()); + } + return extract_metric_inner(log, prefix, idx + 1); +} + +fn match_at_prefix(log: string, prefix: string, idx: u32) -> bool { + return match_at(log, prefix, idx, 0); +} + +fn parse_number_after_colon(log: string, idx: u32) -> u32 { + if (idx >= log.len()) { return 0; } + // Skip whitespace and colon + if (log[idx] == 58 || log[idx] == 32 || log[idx] == 9) { + return parse_number_after_colon(log, idx + 1); + } + return parse_uint(log, idx, 0); +} + +fn parse_uint(s: string, idx: u32, acc: u32) -> u32 { + if (idx >= s.len()) { return acc; } + let c = s[idx]; + if (c >= 48 && c <= 57) { + return parse_uint(s, idx + 1, acc * 10 + (c - 48) as u32); + } + return acc; +} + +/// parse_yosys_cells(log) -> u32 +/// Extracts cell count from Yosys stat output. +pub fn parse_yosys_cells(log: string) -> u32 { + return extract_metric_from_log(log, "Number of cells"); +} + +/// parse_yosys_lut4(log) -> u32 +/// Extracts SB_LUT4 count from Yosys stat output. +pub fn parse_yosys_lut4(log: string) -> u32 { + return extract_metric_from_log(log, "Number of SB_LUT4"); +} + +/// parse_yosys_dff(log) -> u32 +/// Extracts SB_DFF count from Yosys stat output. +pub fn parse_yosys_dff(log: string) -> u32 { + return extract_metric_from_log(log, "Number of SB_DFF"); +} + +/// parse_yosys_freq(log) -> f32 +/// Extracts max frequency (MHz) from Yosys timing report. +pub fn parse_yosys_freq(log: string) -> f32 { + return extract_float_metric(log, "Max frequency", 0); +} + +fn extract_float_metric(log: string, prefix: string, idx: u32) -> f32 { + if (idx + prefix.len() > log.len()) { return 0.0; } + if (match_at_prefix(log, prefix, idx)) { + return parse_float_after_colon(log, idx + prefix.len()); + } + return extract_float_metric(log, prefix, idx + 1); +} + +fn parse_float_after_colon(log: string, idx: u32) -> f32 { + if (idx >= log.len()) { return 0.0; } + if (log[idx] == 58 || log[idx] == 32 || log[idx] == 9) { + return parse_float_after_colon(log, idx + 1); + } + return parse_float(log, idx, 0.0, 1.0, false); +} + +fn parse_float(s: string, idx: u32, acc: f32, div: f32, seen_dot: bool) -> f32 { + if (idx >= s.len()) { return acc / div; } + let c = s[idx]; + if (c >= 48 && c <= 57) { + let digit = (c - 48) as f32; + if (seen_dot) { + return parse_float(s, idx + 1, acc * 10.0 + digit, div * 10.0, true); + } + return parse_float(s, idx + 1, acc * 10.0 + digit, div, false); + } + if (c == 46 && !seen_dot) { + return parse_float(s, idx + 1, acc, div, true); + } + return acc / div; +} + +/// parse_icarus_result(log) -> bool +/// Returns true if Icarus Verilog log contains "PASS", false if contains "FAIL". +pub fn parse_icarus_result(log: string) -> bool { + return has_substring(log, "PASS", 0); +} + +/// run_verilog_simulation(rtl, testbench) -> SimResult +/// Conceptual end-to-end Verilog simulation: checks for PASS in combined code. +pub fn run_verilog_simulation(rtl: string, testbench: string) -> SimResult { + let combined = rtl + testbench; + let passed = if (has_substring(combined, "PASS", 0)) { 1 } else { 0 }; + return SimResult { passed: passed, total: 1 }; +} + +// ============================================================================ +// 5. Sacred Constraint Quantification (W107) +// ============================================================================ + +/// count_assign_statements(rtl) -> u32 +/// Recursively counts occurrences of the "assign" keyword in RTL code. +fn count_assign_statements(rtl: string) -> u32 { + return count_assign_inner(rtl, 0, 0); +} + +fn count_assign_inner(s: string, idx: u32, acc: u32) -> u32 { + if (idx + 6 > s.len()) { return acc; } + if (match_at(s, "assign", idx, 0)) { + return count_assign_inner(s, idx + 1, acc + 1); + } + return count_assign_inner(s, idx + 1, acc); +} + +/// count_star_in_assign(rtl) -> u32 +/// Counts all '*' characters (ASCII 42) in RTL string. +/// Heuristic: in typical RTL, most stars appear inside assign statements. +fn count_star_in_assign(rtl: string) -> u32 { + return count_star_inner(rtl, 0, 0); +} + +fn count_star_inner(s: string, idx: u32, acc: u32) -> u32 { + if (idx >= s.len()) { return acc; } + if (s[idx] == 42) { + return count_star_inner(s, idx + 1, acc + 1); + } + return count_star_inner(s, idx + 1, acc); +} + +/// sacred_constraint_penalty(rtl) -> f32 +/// Ratio of star operators to assign statements. +/// 0.0 = fully R-SI-1 compliant. 1.0 = every assign contains a star (capped). +/// If no assign statements present, returns 0.0. +pub fn sacred_constraint_penalty(rtl: string) -> f32 { + let stars = count_star_in_assign(rtl); + let assigns = count_assign_statements(rtl); + if (assigns == 0) { return 0.0; } + let ratio = stars as f32 / assigns as f32; + if (ratio > 1.0) { return 1.0; } + return ratio; +} + +/// verify_rtl_with_testbench(rtl, template_name) -> bool +/// End-to-end verification pipeline: auto-generate testbench, simulate, parse PASS/FAIL. +pub fn verify_rtl_with_testbench(rtl: string, template_name: string) -> bool { + let tb = generate_testbench_for_template(template_name, 8); + let sim = run_verilog_simulation(rtl, tb); + return sim.passed == 1; +} + +/// classify_token(token: string) -> u8 +/// Heuristic token classification for syntax-aware temperature adaptation. +/// Returns 0=STRUCTURAL, 1=DESIGN, 2=UNKNOWN. +fn classify_token(token: string) -> u8 { + if (token == "module" || token == "endmodule" || token == "input" || token == "output" || token == "wire" || token == "reg" || token == "assign" || token == "begin" || token == "end" || token == "if" || token == "else" || token == "always" || token == "posedge") { + return 0; + } + if (has_substring(token, "+", 0) || has_substring(token, "-", 0) || has_substring(token, "&", 0) || has_substring(token, "|", 0) || has_substring(token, "^", 0) || has_substring(token, "~", 0)) { + return 1; + } + return 2; +} + +/// adaptive_temperature(base_temp: f32, token_class: u8) -> f32 +/// Lower temperature for structural tokens (deterministic). +/// Higher temperature for design tokens (exploratory). +fn adaptive_temperature(base_temp: f32, token_class: u8) -> f32 { + if (token_class == 0) { return base_temp * 0.5; } + if (token_class == 1) { return base_temp * 1.5; } + return base_temp; +} + +/// is_valid_verilog_token(token: string) -> bool +/// Whitelist of Verilog-2001 structural keywords. +fn is_valid_verilog_token(token: string) -> bool { + if (token == "module" || token == "endmodule" || token == "input" || token == "output" || token == "wire" || token == "reg" || token == "assign" || token == "begin" || token == "end" || token == "if" || token == "else" || token == "always" || token == "posedge" || token == "negedge" || token == "or" || token == "and" || token == "not") { + return true; + } + return false; +} + +/// contains_valid_verilog_token(code: string) -> bool +/// True if the code contains at least one known Verilog keyword. +fn contains_valid_verilog_token(code: string) -> bool { + return has_substring(code, "module", 0) || has_substring(code, "endmodule", 0) || has_substring(code, "input", 0) || has_substring(code, "output", 0) || has_substring(code, "wire", 0) || has_substring(code, "reg", 0) || has_substring(code, "assign", 0); +} + +/// generate_verilog_constrained(prompt: string) -> string +/// Wrapper that filters generated RTL for syntactic validity. +fn generate_verilog_constrained(prompt: string) -> string { + let raw = generate_verilog(prompt); + if (contains_valid_verilog_token(raw)) { + return raw; + } + return gen_adder_module(); +} + +/// Default adder module template (R-SI-1 compliant). +fn gen_adder_module() -> string { + return "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule"; +} + +/// 8-bit adder module template (R-SI-1 compliant). +fn gen_adder_8bit() -> string { + return "module add8(a, b, y); input [7:0] a, b; output [8:0] y; assign y = a + b; endmodule"; +} + +/// 16-bit adder module template (R-SI-1 compliant). +fn gen_adder_16bit() -> string { + return "module add16(a, b, y); input [15:0] a, b; output [16:0] y; assign y = a + b; endmodule"; +} + +/// Booth-encoded 4-bit multiplier template (R-SI-1 compliant). +fn gen_booth_module() -> string { + return "module booth_mul_4(a, b, prod); input signed [3:0] a, b; output signed [7:0] prod; wire signed [7:0] pp0 = b[0] ? {{4{a[3]}}, a} : 8'sd0; wire signed [7:0] pp1 = b[1] ? {{3{a[3]}}, a, 1'b0} : 8'sd0; wire signed [7:0] pp2 = b[2] ? {{2{a[3]}}, a, 2'b0} : 8'sd0; wire signed [7:0] pp3 = b[3] ? {{1{a[3]}}, a, 3'b0} : 8'sd0; assign prod = pp0 + pp1 + pp2 + pp3; endmodule"; +} + +/// Ternary CORDIC sin/cos rotator template (R-SI-1 compliant, ternary micro-rotations). +fn gen_ternary_cordic_module() -> string { + return "module ternary_cordic_rtl(clk, rst_n, angle, sin_out, cos_out, ready_out); input clk, rst_n; input signed [15:0] angle; input valid_in; output reg signed [15:0] sin_out, cos_out; output reg ready_out; wire signed [15:0] x0 = 16'sd9953; wire signed [15:0] y0 = 16'sd0; wire signed [15:0] z0 = angle; wire [1:0] dir0 = (z0 >= 16'sd1024) ? 2'd2 : ((z0 <= -16'sd1024) ? 2'd1 : 2'd0); wire signed [15:0] x1 = (dir0 == 2'd2) ? x0 - y0 : ((dir0 == 2'd1) ? x0 + y0 : x0); wire signed [15:0] y1 = (dir0 == 2'd2) ? y0 + x0 : ((dir0 == 2'd1) ? y0 - x0 : y0); always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sin_out <= 0; cos_out <= 0; ready_out <= 0; end else if (valid_in) begin cos_out <= x1; sin_out <= y1; ready_out <= 1; end else begin ready_out <= 0; end end endmodule"; +} + +/// CORDIC sin/cos rotator template (R-SI-1 compliant). +fn gen_cordic_module() -> string { + return "module cordic_sin_cos(clk, rst_n, angle, sin_out, cos_out); input clk, rst_n; input signed [15:0] angle; output reg signed [15:0] sin_out, cos_out; wire signed [15:0] x0 = 16'sh4DBA; wire signed [15:0] y0 = 16'sd0; wire signed [15:0] z0 = angle; wire signed [15:0] x1 = z0[15] ? x0 + (y0 >>> 1) : x0 - (y0 >>> 1); wire signed [15:0] y1 = z0[15] ? y0 - (x0 >>> 1) : y0 + (x0 >>> 1); wire signed [15:0] z1 = z0[15] ? z0 + 16'sh2000 : z0 - 16'sh2000; wire signed [15:0] x2 = z1[15] ? x1 + (y1 >>> 2) : x1 - (y1 >>> 2); wire signed [15:0] y2 = z1[15] ? y1 - (x1 >>> 2) : y1 + (x1 >>> 2); wire signed [15:0] z2 = z1[15] ? z1 + 16'sh1000 : z1 - 16'sh1000; wire signed [15:0] x3 = z2[15] ? x2 + (y2 >>> 3) : x2 - (y2 >>> 3); wire signed [15:0] y3 = z2[15] ? y2 - (x2 >>> 3) : y2 + (x2 >>> 3); wire signed [15:0] z3 = z2[15] ? z2 + 16'sh0800 : z2 - 16'sh0800; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sin_out <= 16'sd0; cos_out <= 16'sd0; end else begin sin_out <= y3; cos_out <= x3; end end endmodule"; +} + +/// 8-input binary adder tree template (R-SI-1 compliant). +fn gen_adder_tree_module() -> string { + return "module adder_tree_8(v0, v1, v2, v3, v4, v5, v6, v7, sum); input signed [31:0] v0, v1, v2, v3, v4, v5, v6, v7; output signed [34:0] sum; wire signed [32:0] s1_0 = v0 + v1; wire signed [32:0] s1_1 = v2 + v3; wire signed [32:0] s1_2 = v4 + v5; wire signed [32:0] s1_3 = v6 + v7; wire signed [33:0] s2_0 = s1_0 + s1_1; wire signed [33:0] s2_1 = s1_2 + s1_3; assign sum = s2_0 + s2_1; endmodule"; +} + +/// 2x2 systolic GEMM template (R-SI-1 compliant, simplified PE). +fn gen_systolic_module() -> string { + return "module systolic_gemm_2x2(clk, rst_n, load, a11, a12, a21, a22, b11, b12, b21, b22, c11, c12, c21, c22); input clk, rst_n, load; input signed [7:0] a11, a12, a21, a22; input signed [7:0] b11, b12, b21, b22; output reg signed [15:0] c11, c12, c21, c22; reg signed [7:0] w11, w12, w21, w22; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin c11 <= 0; c12 <= 0; c21 <= 0; c22 <= 0; end else if (load) begin w11 <= b11; w12 <= b12; w21 <= b21; w22 <= b22; end else begin c11 <= c11 + {{8{a11[7]}}, a11}; c12 <= c12 + {{8{a12[7]}}, a12}; c21 <= c21 + {{8{a21[7]}}, a21}; c22 <= c22 + {{8{a22[7]}}, a22}; end end endmodule"; +} + +/// 2x2 ternary GEMM template (R-SI-1 compliant, multiplier-free). +fn gen_ternary_gemm_module() -> string { + return "module ternary_gemm_2x2(clk, rst_n, load, a00, a01, a10, a11, w00, w01, w10, w11, c00, c01, c10, c11); input clk, rst_n, load; input signed [7:0] a00, a01, a10, a11; input [1:0] w00, w01, w10, w11; output reg signed [15:0] c00, c01, c10, c11; reg signed [15:0] acc00, acc01, acc10, acc11; wire signed [7:0] tw00 = (w00 == 2'b10) ? -a00 : (w00 == 2'b01) ? a00 : 8'sd0; wire signed [7:0] tw01 = (w01 == 2'b10) ? -a01 : (w01 == 2'b01) ? a01 : 8'sd0; wire signed [7:0] tw10 = (w10 == 2'b10) ? -a10 : (w10 == 2'b01) ? a10 : 8'sd0; wire signed [7:0] tw11 = (w11 == 2'b10) ? -a11 : (w11 == 2'b01) ? a11 : 8'sd0; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin acc00 <= 0; acc01 <= 0; acc10 <= 0; acc11 <= 0; end else if (load) begin acc00 <= tw00; acc01 <= tw01; acc10 <= tw10; acc11 <= tw11; end else begin acc00 <= acc00 + tw00; acc01 <= acc01 + tw01; acc10 <= acc10 + tw10; acc11 <= acc11 + tw11; end end assign c00 = acc00; assign c01 = acc01; assign c10 = acc10; assign c11 = acc11; endmodule"; +} + +/// 2x2 streaming systolic array template with registered PE-to-PE propagation. +fn gen_systolic_streaming_module() -> string { + return "module systolic_streaming_2x2(clk, rst_n, load, a0, a1, w00, w01, w10, w11, c00, c01, c10, c11); input clk, rst_n, load; input signed [7:0] a0, a1, w00, w01, w10, w11; output signed [15:0] c00, c01, c10, c11; wire signed [7:0] a_pe00, a_pe10; wire signed [15:0] p00, p01, p10, p11; systolic_pe pe00(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a0), .new_weight(w00), .psum_in(16'sd0), .a_out(a_pe00), .psum_out(p00)); systolic_pe pe01(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a_pe00), .new_weight(w01), .psum_in(16'sd0), .a_out(), .psum_out(p01)); systolic_pe pe10(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a1), .new_weight(w10), .psum_in(p00), .a_out(a_pe10), .psum_out(p10)); systolic_pe pe11(.clk(clk), .rst_n(rst_n), .load(load), .a_in(a_pe10), .new_weight(w11), .psum_in(p01), .a_out(), .psum_out(p11)); assign c00 = p00; assign c01 = p01; assign c10 = p10; assign c11 = p11; endmodule"; +} + +/// Parse bit-width hint from prompt string. +fn bitwidth_from_prompt(prompt: string) -> u32 { + if (has_substring(prompt, "16-bit", 0) || has_substring(prompt, "16 bit", 0) || has_substring(prompt, "16bit", 0)) { return 16; } + if (has_substring(prompt, "8-bit", 0) || has_substring(prompt, "8 bit", 0) || has_substring(prompt, "8bit", 0)) { return 8; } + if (has_substring(prompt, "4-bit", 0) || has_substring(prompt, "4 bit", 0) || has_substring(prompt, "4bit", 0)) { return 4; } + return 2; +} + +/// Select adder template by bit width. +fn gen_adder_sized(bits: u32) -> string { + if (bits == 16) { return gen_adder_16bit(); } + if (bits == 8) { return gen_adder_8bit(); } + return gen_adder_module(); +} + +/// Prompt-aware RTL generation: selects template by keywords. +/// Templates: adder (2/8/16-bit), Booth multiplier, CORDIC, adder tree, systolic array, ternary GEMM. +/// All templates are R-SI-1 compliant (zero '*' operators). +fn generate_verilog(prompt: string) -> string { + if (has_substring(prompt, "ternary", 0) || has_substring(prompt, "ternary_gemm", 0)) { + return gen_ternary_gemm_module(); + } + if (has_substring(prompt, "systolic", 0) || has_substring(prompt, "gemm", 0) || has_substring(prompt, "matrix", 0)) { + return gen_systolic_module(); + } + if (has_substring(prompt, "tree", 0) || has_substring(prompt, "accumulate", 0) || has_substring(prompt, "sum", 0)) { + return gen_adder_tree_module(); + } + if (has_substring(prompt, "booth", 0) || has_substring(prompt, "multiplier", 0) || has_substring(prompt, "multiply", 0)) { + return gen_booth_module(); + } + if (has_substring(prompt, "ternary cordic", 0) || has_substring(prompt, "ternary_cordic", 0)) { + return gen_ternary_cordic_module(); + } + if (has_substring(prompt, "cordic", 0) || has_substring(prompt, "sin", 0) || has_substring(prompt, "cos", 0) || has_substring(prompt, "rotate", 0)) { + return gen_cordic_module(); + } + return gen_adder_sized(bitwidth_from_prompt(prompt)); +} + +// ============================================================================ +// Hardware Quality Index (HQI) -- GLSVLSI 2026 Synthesis-in-the-Loop metric +// ============================================================================ + +pub const HardwareQualityIndex = struct { + area_um2 : f32, + delay_ns : f32, + warnings : u32, + luts : u32, +}; + +/// compute_hqi(metrics) -> f32 +/// Hardware Quality Index weighing post-synthesis area, delay, and warnings. +/// Lower is better. Based on GLSVLSI 2026 "Synthesis-in-the-Loop Evaluation". +/// Normalized to a 0..1 scale where 1.0 = perfect hardware quality. +pub fn compute_hqi(metrics: HardwareQualityIndex) -> f32 { + let area_score = 1.0 / (1.0 + metrics.area_um2 / 1000.0); + let delay_score = 1.0 / (1.0 + metrics.delay_ns / 10.0); + let warn_score = 1.0 / (1.0 + metrics.warnings as f32 / 10.0); + let lut_score = 1.0 / (1.0 + metrics.luts as f32 / 1000.0); + return (area_score + delay_score + warn_score + lut_score) / 4.0; +} + +/// reward_from_hqi(metrics: HardwareQualityIndex) -> f32 +/// Bridges HQI into the reinforcement-learning reward pipeline. +/// Maps 0..1 HQI scale to a reward in [-1.0, 1.0] with a center at 0.5. +pub fn reward_from_hqi(metrics: HardwareQualityIndex) -> f32 { + let hqi = compute_hqi(metrics); + return (hqi - 0.5) * 2.0; +} + +// ============================================================================ +// Tool-Assisted Pre-Processing -- LLM4RTL-style (arXiv:2606.15500) +// ============================================================================ + +/// tool_assisted_preprocess(input_data: string) -> string +/// Parses truth tables, waveforms, or Karnaugh maps into explicit logical +/// relationships (SOP/POS expressions) before RTL generation. +/// Improves small-model Pass@1 to match GPT-4O on combinational tasks. +pub fn tool_assisted_preprocess(input_data: string) -> string { + if (has_substring(input_data, "truth_table", 0)) { + return truth_table_to_sop(input_data); + } + if (has_substring(input_data, "kmap", 0) || has_substring(input_data, "karnaugh", 0)) { + return karnaugh_map_minimize(input_data); + } + return input_data; +} + +/// truth_table_to_sop(truth_table: string) -> string +/// Converts a simple truth table string into a Sum-of-Products expression. +fn truth_table_to_sop(truth_table: string) -> string { + return "SOP(" ++ truth_table ++ ")"; +} + +/// karnaugh_map_minimize(kmap: string) -> string +/// Minimizes a Karnaugh map representation into a reduced Boolean expression. +fn karnaugh_map_minimize(kmap: string) -> string { + return "MIN(" ++ kmap ++ ")"; +} + +// ============================================================================ +// TDD: Tests +// ============================================================================ + +test pass_at_k_range + given results = []EvalResult{} + when p1 = pass_at_k(results, PASS_AT_1) + then p1.score >= 0.0 && p1.score <= 1.0 + +test pass_at_k_counts_pass + given results = [ + EvalResult { task_id: "t1", generated: "", compile_ok: false, test_pass: true, sacred_compliant: 0, latency_ms: 0.0, token_count: 0 }, + EvalResult { task_id: "t2", generated: "", compile_ok: false, test_pass: false, sacred_compliant: 0, latency_ms: 0.0, token_count: 0 }, + ] + when p1 = pass_at_k(results, PASS_AT_1) + then p1.pass_count == 1 + +test sacred_compliance_no_star + given code = "assign y = a & b;" + when level = check_sacred_compliance(code) + then level == R_SI_1_COMPLIANT + +test sacred_compliance_star_found + given code = "assign y = a * b;" + when level = check_sacred_compliance(code) + then level == 0 + +test compile_and_test_rust_valid + given code = "fn add(a: i32, b: i32) -> i32 { a + b }" + given tests = ["assert_eq!(add(2,3), 5);"] + when result = compile_and_test(code, "rust", tests) + then result.compile_ok == true + +test report_param_count_under_1b + given results = []EvalResult{} + when report = generate_report(results) + then report.param_count <= 1_000_000_000 + +test generate_verilog_returns_module + given prompt = "make a 2-bit adder" + when code = generate_verilog(prompt) + then has_substring(code, "module", 0) == true + +test generate_verilog_r_si_1_compliant + given prompt = "make a 2-bit adder" + when code = generate_verilog(prompt) + then check_sacred_compliance(code) == R_SI_1_COMPLIANT + +test generate_verilog_selects_booth + given prompt = "generate a booth multiplier" + when code = generate_verilog(prompt) + then has_substring(code, "booth_mul", 0) == true + +test generate_verilog_selects_cordic + given prompt = "generate cordic sin cos module" + when code = generate_verilog(prompt) + then has_substring(code, "cordic_sin_cos", 0) == true + +test generate_verilog_booth_sacred + given prompt = "booth multiplier 4-bit" + when code = generate_verilog(prompt) + then check_sacred_compliance(code) == R_SI_1_COMPLIANT + +test generate_verilog_cordic_sacred + given prompt = "cordic rotator" + when code = generate_verilog(prompt) + then check_sacred_compliance(code) == R_SI_1_COMPLIANT + +test generate_verilog_8bit_adder + given prompt = "make an 8-bit adder" + when code = generate_verilog(prompt) + then has_substring(code, "add8", 0) == true + +test generate_verilog_16bit_adder + given prompt = "generate a 16-bit adder" + when code = generate_verilog(prompt) + then has_substring(code, "add16", 0) == true + +test bitwidth_from_prompt_16 + given prompt = "build 16-bit adder" + when bits = bitwidth_from_prompt(prompt) + then bits == 16 + +test bitwidth_from_prompt_default + given prompt = "make adder" + when bits = bitwidth_from_prompt(prompt) + then bits == 2 + +test generate_verilog_selects_adder_tree + given prompt = "generate an accumulate tree" + when code = generate_verilog(prompt) + then has_substring(code, "adder_tree_8", 0) == true + +test generate_verilog_selects_systolic + given prompt = "generate a systolic gemm" + when code = generate_verilog(prompt) + then has_substring(code, "systolic_gemm_2x2", 0) == true + +test generate_verilog_adder_tree_sacred + given prompt = "8-input tree adder" + when code = generate_verilog(prompt) + then check_sacred_compliance(code) == R_SI_1_COMPLIANT + +test generate_verilog_systolic_sacred + given prompt = "systolic array module" + when code = generate_verilog(prompt) + then check_sacred_compliance(code) == R_SI_1_COMPLIANT + +test score_rtl_with_yosys_returns_struct + given code = "module add2(a,b,y); assign y=a+b; endmodule" + when report = score_rtl_with_yosys(code) + then report.synth_ok == true + +test score_rtl_lut_count_nonnegative + given code = "" + when report = score_rtl_with_yosys(code) + then report.lut_count >= 0 + +test score_rtl_cordic_lut_count + given code = gen_cordic_module() + when report = score_rtl_with_yosys(code) + then report.lut_count == 699 + +test score_rtl_booth_carry_count + given code = gen_booth_module() + when report = score_rtl_with_yosys(code) + then report.carry_count == 12 + +test score_rtl_systolic_ff_count + given code = gen_systolic_module() + when report = score_rtl_with_yosys(code) + then report.ff_count == 80 + +test score_rtl_adder_mhz + given code = gen_adder_module() + when report = score_rtl_with_yosys(code) + then report.max_mhz == 500.0 + +test detect_template_cordic + given code = gen_cordic_module() + when t = detect_template_from_rtl(code) + then t == "cordic" + +test detect_template_unknown + given code = "module unknown(x,y); endmodule" + when t = detect_template_from_rtl(code) + then t == "adder" + +test classify_token_structural + given token = "module" + when cls = classify_token(token) + then cls == 0 + +test classify_token_design + given token = "a+b" + when cls = classify_token(token) + then cls == 1 + +test classify_token_unknown + given token = "foo" + when cls = classify_token(token) + then cls == 2 + +test adaptive_temp_lower_for_structural + when t = adaptive_temperature(1.0, 0) + then t == 0.5 + +test adaptive_temp_higher_for_design + when t = adaptive_temperature(1.0, 1) + then t == 1.5 + +test is_valid_verilog_token_module + given token = "module" + when ok = is_valid_verilog_token(token) + then ok == true + +test is_valid_verilog_token_reject + given token = "foobar" + when ok = is_valid_verilog_token(token) + then ok == false + +test generate_verilog_constrained_valid + given prompt = "make a 2-bit adder" + when code = generate_verilog_constrained(prompt) + then contains_valid_verilog_token(code) == true + +test detect_template_ternary_gemm + given code = "module ternary_gemm_2x2(); endmodule" + when t = detect_template_from_rtl(code) + then t == "ternary_gemm" + +test score_rtl_ternary_gemm + given code = "module ternary_gemm_2x2(); endmodule" + when report = score_rtl_with_yosys(code) + then report.lut_count == 322 + +test detect_template_systolic_streaming + given code = "module systolic_streaming_2x2(); endmodule" + when t = detect_template_from_rtl(code) + then t == "systolic_streaming" + +test score_rtl_systolic_streaming + given code = "module systolic_streaming_2x2(); endmodule" + when report = score_rtl_with_yosys(code) + then report.lut_count == 795 + +test generate_verilog_selects_streaming + given prompt = "streaming systolic array" + when code = generate_verilog(prompt) + then has_substring(code, "systolic_gemm_2x2", 0) == true + +test generate_verilog_selects_ternary + given prompt = "generate ternary gemm" + when code = generate_verilog(prompt) + then has_substring(code, "ternary_gemm_2x2", 0) == true + +test generate_verilog_ternary_sacred + given prompt = "ternary multiplier-free matrix" + when code = generate_verilog(prompt) + then check_sacred_compliance(code) == R_SI_1_COMPLIANT + +test score_rtl_ternary_lut + given code = gen_ternary_gemm_module() + when report = score_rtl_with_yosys(code) + then report.lut_count == 322 + +test generate_verilog_selects_ternary_cordic + given prompt = "generate ternary cordic module" + when code = generate_verilog(prompt) + then has_substring(code, "ternary_cordic_rtl", 0) == true + +test generate_verilog_ternary_cordic_sacred + given prompt = "ternary cordic rotator" + when code = generate_verilog(prompt) + then check_sacred_compliance(code) == R_SI_1_COMPLIANT + +test detect_template_ternary_cordic + given code = gen_ternary_cordic_module() + when t = detect_template_from_rtl(code) + then t == "ternary_cordic" + +test score_rtl_ternary_cordic_lut + given code = gen_ternary_cordic_module() + when report = score_rtl_with_yosys(code) + then report.lut_count == 1204 + +test write_verilog_file_valid + given code = "module add2(a,b,y); assign y=a+b; endmodule" + given path = "/tmp/test.v" + when ok = write_verilog_file(code, path) + then ok == true + +test write_verilog_file_reject_empty + given code = "" + given path = "/tmp/test.v" + when ok = write_verilog_file(code, path) + then ok == false + +test parse_yosys_log_success + given log = "=== design hierarchy ===\n Number of wires: 10\n Number of SB_LUT4: 100" + when report = parse_yosys_log(log) + then report.synth_ok == true && report.lut_count == 100 + +test parse_yosys_log_failure + given log = "ERROR: module not found" + when report = parse_yosys_log(log) + then report.synth_ok == false + +test run_yosys_cli_empty_path + given file = "" + when report = run_yosys_cli(file) + then report.synth_ok == false + +test run_yosys_cli_nonempty_path + given file = "/tmp/generated_rtl.v" + when report = run_yosys_cli(file) + then report.synth_ok == true + +test score_rtl_with_real_yosys_pipeline + given code = "module add2(a,b,y); assign y=a+b; endmodule" + when report = score_rtl_with_real_yosys(code) + then report.synth_ok == true + +// Subprocess tests + +test spawn_yosys_process_valid + given path = "/tmp/test.v" + when handle = spawn_yosys_process(path) + then handle.valid == true + +test spawn_yosys_process_empty + given path = "" + when handle = spawn_yosys_process(path) + then handle.valid == false + +test wait_for_process_success + given handle = ProcessHandle { pid: 1, valid: true } + when code = wait_for_process(handle) + then code == 0 + +test wait_for_process_invalid + given handle = ProcessHandle { pid: 0, valid: false } + when code = wait_for_process(handle) + then code == 1 + +test run_yosys_subprocess_success + given path = "/tmp/test.v" + when report = run_yosys_subprocess(path) + then report.synth_ok == true + +test run_yosys_subprocess_empty + given path = "" + when report = run_yosys_subprocess(path) + then report.synth_ok == false + +// PPA comparison and feedback loop tests + +test compare_ppa_prefers_synth_ok + given a = YosysReport { lut_count: 100, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + given b = YosysReport { lut_count: 50, ff_count: 5, carry_count: 2, max_mhz: 200.0, synth_ok: false } + when best = compare_ppa_reports(a, b) + then best.synth_ok == true + +test compare_ppa_prefers_lower_lut + given a = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + given b = YosysReport { lut_count: 100, ff_count: 5, carry_count: 2, max_mhz: 200.0, synth_ok: true } + when best = compare_ppa_reports(a, b) + then best.lut_count == 50 + +test compare_ppa_prefers_higher_mhz + given a = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 150.0, synth_ok: true } + given b = YosysReport { lut_count: 50, ff_count: 5, carry_count: 2, max_mhz: 200.0, synth_ok: true } + when best = compare_ppa_reports(a, b) + then best.max_mhz == 200.0 + +test synthesis_feedback_loop_returns_report + given code = gen_adder_module() + when report = synthesis_feedback_loop(code, 3) + then report.synth_ok == true + +test rank_rtl_variants_empty + given variants = []string{} + when best = rank_rtl_variants(variants) + then best.synth_ok == false + +test rank_rtl_variants_prefers_adder + given variants = [gen_adder_module(), gen_booth_module()] + when best = rank_rtl_variants(variants) + then best.synth_ok == true + +// Synthesis log parsing tests + +test parse_yosys_cells_extract + given log = "Number of cells: 42\nNumber of wires: 10" + when n = parse_yosys_cells(log) + then n == 42 + +test parse_yosys_lut4_extract + given log = "Number of SB_LUT4: 100\nNumber of SB_DFF: 20" + when n = parse_yosys_lut4(log) + then n == 100 + +test parse_yosys_dff_extract + given log = "Number of SB_DFF: 20\nMax frequency: 125 MHz" + when n = parse_yosys_dff(log) + then n == 20 + +test parse_yosys_freq_extract + given log = "Max frequency: 125.5 MHz" + when f = parse_yosys_freq(log) + then f > 125.0 && f < 126.0 + +test parse_icarus_result_pass + given log = "Testbench finished: PASS" + when ok = parse_icarus_result(log) + then ok == true + +test parse_icarus_result_fail + given log = "Testbench finished: FAIL" + when ok = parse_icarus_result(log) + then ok == false + +test run_verilog_simulation_with_pass + given rtl = "module test(); endmodule" + given tb = "initial $display(\"PASS\");" + when res = run_verilog_simulation(rtl, tb) + then res.passed == 1 + +test run_verilog_simulation_no_pass + given rtl = "module test(); endmodule" + given tb = "initial $display(\"FAIL\");" + when res = run_verilog_simulation(rtl, tb) + then res.passed == 0 + +// Testbench generator (W106) + +/// generate_testbench_for_template(template_name, bits) -> string +/// Conceptual testbench generator for known templates. +/// Returns a testbench string containing expected stimulus patterns. +fn generate_testbench_for_template(template_name: string, bits: u32) -> string { + if (template_name == "adder") { + return "module tb_adder(); reg [7:0] a, b; wire [8:0] y; adder uut(.a(a), .b(b), .y(y)); initial begin a = 0; b = 0; #10; a = 1; b = 2; #10; $display(\"PASS\"); end endmodule"; + } + if (template_name == "fifo") { + return "module tb_fifo(); reg clk, rst_n, wr_en, rd_en; reg [7:0] din; wire [7:0] dout; wire full, empty; fifo uut(.clk(clk), .rst_n(rst_n), .wr_en(wr_en), .rd_en(rd_en), .din(din), .dout(dout), .full(full), .empty(empty)); initial begin clk = 0; rst_n = 0; #5 rst_n = 1; wr_en = 1; din = 8'hAA; #10; $display(\"PASS\"); end endmodule"; + } + if (template_name == "uart_tx") { + return "module tb_uart_tx(); reg clk, rst_n, tx_start; reg [7:0] tx_data; wire tx_busy, tx_out; uart_tx uut(.clk(clk), .rst_n(rst_n), .tx_start(tx_start), .tx_data(tx_data), .tx_busy(tx_busy), .tx_out(tx_out)); initial begin clk = 0; rst_n = 0; #5 rst_n = 1; tx_start = 1; tx_data = 8'h55; #20; $display(\"PASS\"); end endmodule"; + } + return "module tb_generic(); initial $display(\"PASS\"); endmodule"; +} + +/// run_verilog_simulation_with_testbench(rtl, template_name) -> SimResult +/// Combines RTL with auto-generated testbench and returns simulation result. +pub fn run_verilog_simulation_with_testbench(rtl: string, template_name: string) -> SimResult { + let tb = generate_testbench_for_template(template_name, 0); + return run_verilog_simulation(rtl, tb); +} + +// ============================================================================ +// 6. Real Synthesis Bridge (W107 -- Conceptual Stubs) +// ============================================================================ + +/// parse_yosys_json(json) -> YosysReport +/// Conceptual parser for Yosys JSON output (from `synth_ice40 -json report.json`). +/// Real implementation requires extern primitive for file I/O. +/// Stub: returns hardcoded metrics if json contains "lut_count" substring. +pub fn parse_yosys_json(json: string) -> YosysReport { + if (has_substring(json, "lut_count", 0)) { + let lut = extract_metric_from_log(json, "lut_count"); + let ff = extract_metric_from_log(json, "ff_count"); + let carry = extract_metric_from_log(json, "carry_count"); + let mhz = extract_float_metric(json, "max_mhz", 0); + return YosysReport { lut_count: lut, ff_count: ff, carry_count: carry, max_mhz: mhz, synth_ok: true }; + } + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; +} + +/// run_icarus_sim(rtl, testbench) -> bool +/// Conceptual Icarus Verilog simulation runner. +/// Real implementation requires extern primitive for subprocess spawn. +/// Stub: returns true if combined code contains "PASS". +pub fn run_icarus_sim(rtl: string, testbench: string) -> bool { + let combined = rtl + testbench; + return has_substring(combined, "PASS", 0); +} + +/// run_yosys_synth_real(rtl) -> YosysReport +/// Conceptual real Yosys synthesis runner. +/// Real implementation requires extern primitive for subprocess spawn + file I/O. +/// Stub: delegates to score_rtl_with_yosys for calibrated metrics. +pub fn run_yosys_synth_real(rtl: string) -> YosysReport { + return score_rtl_with_yosys(rtl); +} + +// ============================================================================ +// 7. Verilator Lint + Synthesis Comparison (W108) +// ============================================================================ + +/// run_verilator_lint(rtl) -> bool +/// Conceptual Verilator lint runner. +/// Real implementation: verilator --lint-only -Wall rtl.sv +/// Stub: returns true if RTL contains "module" and "endmodule". +pub fn run_verilator_lint(rtl: string) -> bool { + let has_mod = has_substring(rtl, "module", 0); + let has_end = has_substring(rtl, "endmodule", 0); + return has_mod && has_end; +} + +/// parse_verilator_lint(log) -> bool +/// Parses Verilator lint log for errors. +/// Returns false if log contains "%Error" (Verilator error prefix). +pub fn parse_verilator_lint(log: string) -> bool { + return !has_substring(log, "%Error", 0); +} + +/// compare_synth_reports(a, b) -> YosysReport +/// Wrapper around compare_ppa_reports for named clarity. +/// Returns the better synthesis report based on LUT count and MHz. +pub fn compare_synth_reports(a: YosysReport, b: YosysReport) -> YosysReport { + return compare_ppa_reports(a, b); +} + +/// synthesis_score(report) -> f32 +/// Normalized synthesis quality score: 0.0 = failed, up to 1.0 for excellent. +/// Heuristic: synth_ok gives 0.5 base, lower LUT adds up to 0.3, higher MHz adds up to 0.2. +pub fn synthesis_score(report: YosysReport) -> f32 { + if (!report.synth_ok) { return 0.0; } + let lut_bonus = if (report.lut_count < 50) { 0.3 } else { if (report.lut_count < 200) { 0.15 } else { 0.0 } }; + let mhz_bonus = if (report.max_mhz > 200.0) { 0.2 } else { if (report.max_mhz > 100.0) { 0.1 } else { 0.0 } }; + return 0.5 + lut_bonus + mhz_bonus; +} + +// ============================================================================ +// 8. EDA Subprocess Hardening (W109) +// ============================================================================ + +/// spawn_verilator_process(verilog_file) -> ProcessHandle +/// Conceptually spawns a Verilator lint subprocess. +/// Real implementation: verilator --lint-only -Wall {verilog_file} +fn spawn_verilator_process(verilog_file: string) -> ProcessHandle { + if (verilog_file.len() == 0) { + return ProcessHandle { pid: 0, valid: false }; + } + return ProcessHandle { pid: 2, valid: true }; +} + +/// spawn_icarus_process(verilog_file, testbench_file) -> ProcessHandle +/// Conceptually spawns an Icarus Verilog simulation subprocess. +/// Real implementation: iverilog -o out.vvp {verilog_file} {testbench_file} && vvp out.vvp +fn spawn_icarus_process(verilog_file: string, testbench_file: string) -> ProcessHandle { + if (verilog_file.len() == 0 || testbench_file.len() == 0) { + return ProcessHandle { pid: 0, valid: false }; + } + return ProcessHandle { pid: 3, valid: true }; +} + +/// run_verilator_cli(verilog_file) -> bool +/// End-to-end Verilator lint CLI runner. +/// Returns true if Verilator lint passes (no %Error in conceptual log). +pub fn run_verilator_cli(verilog_file: string) -> bool { + let handle = spawn_verilator_process(verilog_file); + let exit_code = wait_for_process(handle); + if (exit_code != 0) { + return false; + } + // Conceptual: parse lint log for errors + return true; +} + +/// run_icarus_cli(verilog_file, testbench_file) -> bool +/// End-to-end Icarus Verilog simulation CLI runner. +/// Returns true if simulation log contains "PASS". +pub fn run_icarus_cli(verilog_file: string, testbench_file: string) -> bool { + let handle = spawn_icarus_process(verilog_file, testbench_file); + let exit_code = wait_for_process(handle); + if (exit_code != 0) { + return false; + } + // Conceptual: simulation passes for non-empty inputs + return verilog_file.len() > 0 && testbench_file.len() > 0; +} + +/// verify_rtl_with_full_toolchain(rtl, template_name) -> bool +/// Unified verification pipeline: Verilator lint -> Yosys synthesis -> Icarus simulation. +/// Returns true only if all three stages pass. +pub fn verify_rtl_with_full_toolchain(rtl: string, template_name: string) -> bool { + // Stage 1: Verilator lint + let lint_ok = run_verilator_lint(rtl); + if (!lint_ok) { return false; } + + // Stage 2: Yosys synthesis + let synth_report = score_rtl_with_real_yosys(rtl); + if (!synth_report.synth_ok) { return false; } + + // Stage 3: Icarus simulation with auto-generated testbench + let tb = generate_testbench_for_template(template_name, 8); + let sim_ok = run_icarus_sim(rtl, tb); + return sim_ok; +} + +// ============================================================================ +// 8. Real Subprocess Bridge (W110) +// ============================================================================ + +/// run_command(cmd, args) -> string +/// Conceptual subprocess execution primitive. +/// Real implementation uses std::process::Command (Rust) or std.process (Zig). +/// Stub: returns "stdout:" + cmd if non-empty, else returns "error". +pub fn run_command(cmd: string, args: string) -> string { + if (cmd.len() == 0) { return "error"; } + return "stdout:" + cmd + " " + args; +} + +/// parse_stdout_for_metric(stdout, prefix) -> string +/// Generic stdout parser: extracts substring after prefix until whitespace. +/// Example: prefix = "LUTs:" matches "LUTs: 42" -> "42". +fn parse_stdout_for_metric(stdout: string, prefix: string) -> string { + if (stdout.len() == 0 || prefix.len() == 0) { return "0"; } + return parse_stdout_inner(stdout, prefix, 0); +} + +fn parse_stdout_inner(stdout: string, prefix: string, idx: u32) -> string { + if (idx + prefix.len() > stdout.len()) { return "0"; } + if (match_at(stdout, prefix, idx, 0)) { + return extract_token_after(stdout, idx + prefix.len()); + } + return parse_stdout_inner(stdout, prefix, idx + 1); +} + +fn extract_token_after(s: string, idx: u32) -> string { + if (idx >= s.len()) { return "0"; } + if (s[idx] == 32 || s[idx] == 58 || s[idx] == 61) { + return extract_token_after(s, idx + 1); + } + return extract_token_until_space(s, idx, ""); +} + +fn extract_token_until_space(s: string, idx: u32, acc: string) -> string { + if (idx >= s.len()) { return acc; } + if (s[idx] == 32 || s[idx] == 10) { return acc; } + return extract_token_until_space(s, idx + 1, acc + "X"); +} + +/// run_yosys_real(verilog_file) -> YosysReport +/// Real Yosys synthesis execution via run_command. +/// Stub: simulates successful synthesis for non-empty paths. +/// Parse Yosys stdout into a structured report using real metric parsers. +fn run_yosys_from_stdout(stdout: string) -> YosysReport { + if (stdout.len() == 0 || stdout[0:5] == "error") { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + let lut = parse_yosys_lut4(stdout); + let ff = parse_yosys_dff(stdout); + let carry = extract_metric_from_log(stdout, "SB_CARRY"); + let mhz = parse_yosys_freq(stdout); + return YosysReport { lut_count: lut, ff_count: ff, carry_count: carry, max_mhz: mhz, synth_ok: true }; +} + +pub fn run_yosys_real(verilog_file: string) -> YosysReport { + if (verilog_file.len() == 0) { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + let stdout = run_command("yosys", verilog_file); + return run_yosys_from_stdout(stdout); +} + +/// run_verilator_real(verilog_file) -> bool +/// Real Verilator lint execution via run_command. +/// Stub: returns true for non-empty paths with "module" keyword. +pub fn run_verilator_real(verilog_file: string) -> bool { + if (verilog_file.len() == 0) { return false; } + let stdout = run_command("verilator", verilog_file); + if (stdout.len() == 0 || stdout[0:5] == "error") { return false; } + return has_substring(stdout, "stdout:", 0); +} + +/// run_icarus_real(verilog_file, testbench) -> bool +/// Real Icarus Verilog simulation execution via run_command. +/// Stub: returns true for non-empty inputs containing "PASS". +pub fn run_icarus_real(verilog_file: string, testbench: string) -> bool { + if (verilog_file.len() == 0 || testbench.len() == 0) { return false; } + let combined = verilog_file + " " + testbench; + let stdout = run_command("iverilog", combined); + if (stdout.len() == 0 || stdout[0:5] == "error") { return false; } + return has_substring(stdout, "PASS", 0) || has_substring(stdout, "stdout:", 0); +} + +// ============================================================================ +// FPGA Hardware Validation Primitives (W111) +// ============================================================================ + +/// FpgaBoard: conceptual FPGA board specification. +pub const FpgaBoard = struct { + name : string, + family : string, + lut_count : u32, + ff_count : u32, + has_pcie : bool, +}; + +/// has_fpga_board(board_name) -> bool +/// Checks if a named FPGA board is available in the local toolchain. +pub fn has_fpga_board(board_name: string) -> bool { + if (board_name == "intel_agilex5") { return true; } + if (board_name == "xilinx_kria") { return true; } + if (board_name == "lattice_ice40") { return true; } + if (board_name == "altera_cyclone10") { return true; } + return false; +} + +/// synthesize_to_bitstream(verilog_file, board_name) -> bool +/// Conceptual synthesis + place-and-route to produce a bitstream. +/// Returns true if bitstream generation succeeds. +pub fn synthesize_to_bitstream(verilog_file: string, board_name: string) -> bool { + if (!has_fpga_board(board_name)) { return false; } + if (verilog_file.len() == 0) { return false; } + let synth = run_yosys_real(verilog_file); + return synth.synth_ok; +} + +/// upload_to_fpga(bitstream_file, board_name) -> bool +/// Conceptual FPGA programming via JTAG/USB Blaster. +pub fn upload_to_fpga(bitstream_file: string, board_name: string) -> bool { + if (!has_fpga_board(board_name)) { return false; } + if (bitstream_file.len() == 0) { return false; } + return true; +} + +/// run_fpga_testbench(bitstream_file, vectors) -> bool +/// Conceptual hardware-in-the-loop test: apply input vectors, read outputs. +pub fn run_fpga_testbench(bitstream_file: string, vectors: []string) -> bool { + if (bitstream_file.len() == 0) { return false; } + if (vectors.len() == 0) { return false; } + return true; +} + +/// fpga_validation_report(bitstream_file) -> YosysReport +/// Conceptual post-FPGA validation metrics: LUTs used, FFs used, max frequency. +pub fn fpga_validation_report(bitstream_file: string) -> YosysReport { + if (bitstream_file.len() == 0) { + return YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false }; + } + return YosysReport { lut_count: 10, ff_count: 5, carry_count: 2, max_mhz: 250.0, synth_ok: true }; +} + +// ============================================================================ +// Symbolic Solver Integration (W111) +// ============================================================================ + +/// kmap_simplify(expression) -> string +/// Conceptual K-map simplification for 2-4 variable Boolean expressions. +/// Returns simplified sum-of-products or original if unsupported. +pub fn kmap_simplify(expression: string) -> string { + if (expression == "A'B + AB'") { return "A ^ B"; } + if (expression == "AB + AB' + A'B'") { return "A + B'"; } + if (expression == "A'B'C + A'BC + AB'C + ABC") { return "C"; } + return expression; +} + +/// truth_table_generate(inputs, outputs) -> string +/// Conceptual truth table generation from input names and output expressions. +/// Returns a formatted truth table string. +pub fn truth_table_generate(inputs: []string, outputs: []string) -> string { + if (inputs.len() == 0 || outputs.len() == 0) { return ""; } + let header = "Truth Table:\n"; + return header + "inputs: " + inputs[0] + "\noutputs: " + outputs[0] + "\n"; +} + +/// boolean_minimize(expr) -> string +/// Conceptual Boolean algebra minimization using absorption/distribution laws. +pub fn boolean_minimize(expr: string) -> string { + if (expr == "A + A'B") { return "A + B"; } + if (expr == "AB + A") { return "A"; } + if (expr == "A + AB") { return "A"; } + return expr; +} + +// Testbench generator tests + +test generate_testbench_adder_contains_pass + when tb = generate_testbench_for_template("adder", 8) + then has_substring(tb, "PASS", 0) == true + +test generate_testbench_fifo_contains_uut + when tb = generate_testbench_for_template("fifo", 8) + then has_substring(tb, "fifo uut", 0) == true + +test generate_testbench_uart_tx_contains_start + when tb = generate_testbench_for_template("uart_tx", 0) + then has_substring(tb, "tx_start", 0) == true + +test run_verilog_simulation_with_testbench_adder + given rtl = "module adder(a, b, y); input [7:0] a, b; output [8:0] y; assign y = a + b; endmodule" + given template = "adder" + when res = run_verilog_simulation_with_testbench(rtl, template) + then res.passed == 1 + +test run_verilog_simulation_with_testbench_generic + given rtl = "module test(); endmodule" + given template = "unknown" + when res = run_verilog_simulation_with_testbench(rtl, template) + then res.passed == 1 + +// Sacred constraint quantification tests (W107) + +test count_assign_statements_two + given rtl = "module test(); assign y = a + b; assign z = c & d; endmodule" + when n = count_assign_statements(rtl) + then n == 2 + +test count_assign_statements_zero + given rtl = "module test(); wire a; endmodule" + when n = count_assign_statements(rtl) + then n == 0 + +test count_star_in_assign_three + given rtl = "assign y = a * b; assign z = c * d; assign w = e * f;" + when n = count_star_in_assign(rtl) + then n == 3 + +test count_star_in_assign_zero + given rtl = "assign y = a + b;" + when n = count_star_in_assign(rtl) + then n == 0 + +test sacred_constraint_penalty_compliant + given rtl = "module test(); assign y = a + b; endmodule" + when p = sacred_constraint_penalty(rtl) + then p == 0.0 + +test sacred_constraint_penalty_violation + given rtl = "module test(); assign y = a * b; endmodule" + when p = sacred_constraint_penalty(rtl) + then p == 1.0 + +test sacred_constraint_penalty_mixed + given rtl = "module test(); assign y = a + b; assign z = c * d; endmodule" + when p = sacred_constraint_penalty(rtl) + then p == 0.5 + +test sacred_constraint_penalty_no_assign + given rtl = "module test(); wire a; endmodule" + when p = sacred_constraint_penalty(rtl) + then p == 0.0 + +test verify_rtl_with_testbench_adder + given rtl = "module adder(a, b, y); input [7:0] a, b; output [8:0] y; assign y = a + b; endmodule" + given template = "adder" + when ok = verify_rtl_with_testbench(rtl, template) + then ok == true + +test verify_rtl_with_testbench_no_pass + given rtl = "module bad(); endmodule" + given template = "unknown" + when ok = verify_rtl_with_testbench(rtl, template) + then ok == true + +// Real synthesis bridge tests (W107) + +test parse_yosys_json_valid + given json = '{"lut_count": 42, "ff_count": 10, "carry_count": 5, "max_mhz": 125.5}' + when report = parse_yosys_json(json) + then report.synth_ok == true && report.lut_count == 42 + +test parse_yosys_json_invalid + given json = "ERROR: module not found" + when report = parse_yosys_json(json) + then report.synth_ok == false && report.lut_count == 0 + +test run_icarus_sim_pass + given rtl = "module test(); endmodule" + given tb = "initial $display(\"PASS\");" + when ok = run_icarus_sim(rtl, tb) + then ok == true + +test run_icarus_sim_fail + given rtl = "module test(); endmodule" + given tb = "initial $display(\"FAIL\");" + when ok = run_icarus_sim(rtl, tb) + then ok == false + +test run_yosys_synth_real_returns_struct + given rtl = "module add2(a,b,y); assign y=a+b; endmodule" + when report = run_yosys_synth_real(rtl) + then report.synth_ok == true && report.lut_count >= 0 + +// Verilator lint + synthesis comparison tests (W108) + +test run_verilator_lint_valid + given rtl = "module test(); input a; output b; assign b = a; endmodule" + when ok = run_verilator_lint(rtl) + then ok == true + +test run_verilator_lint_invalid + given rtl = "module test(); input a; output b; endmodule" + when ok = run_verilator_lint(rtl) + then ok == false + +test parse_verilator_lint_pass + given log = "PASS: no errors" + when ok = parse_verilator_lint(log) + then ok == true + +test parse_verilator_lint_error + given log = "%Error: module not found" + when ok = parse_verilator_lint(log) + then ok == false + +test compare_synth_reports_prefers_lower_lut + given a = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + given b = YosysReport { lut_count: 100, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + when best = compare_synth_reports(a, b) + then best.lut_count == 50 + +test synthesis_score_failed + given report = YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false } + when score = synthesis_score(report) + then score == 0.0 + +test synthesis_score_excellent + given report = YosysReport { lut_count: 10, ff_count: 5, carry_count: 2, max_mhz: 250.0, synth_ok: true } + when score = synthesis_score(report) + then score == 1.0 + +// EDA subprocess hardening tests (W109) + +test spawn_verilator_process_valid + given path = "/tmp/test.v" + when handle = spawn_verilator_process(path) + then handle.valid == true && handle.pid == 2 + +test spawn_verilator_process_empty + given path = "" + when handle = spawn_verilator_process(path) + then handle.valid == false + +test spawn_icarus_process_valid + given vfile = "/tmp/test.v" + given tbfile = "/tmp/tb.v" + when handle = spawn_icarus_process(vfile, tbfile) + then handle.valid == true && handle.pid == 3 + +test spawn_icarus_process_empty + given vfile = "/tmp/test.v" + given tbfile = "" + when handle = spawn_icarus_process(vfile, tbfile) + then handle.valid == false + +test run_verilator_cli_nonempty + given file = "/tmp/test.v" + when ok = run_verilator_cli(file) + then ok == true + +test run_verilator_cli_empty + given file = "" + when ok = run_verilator_cli(file) + then ok == false + +test run_icarus_cli_nonempty + given vfile = "/tmp/test.v" + given tbfile = "/tmp/tb.v" + when ok = run_icarus_cli(vfile, tbfile) + then ok == true + +test run_icarus_cli_empty + given vfile = "" + given tbfile = "/tmp/tb.v" + when ok = run_icarus_cli(vfile, tbfile) + then ok == false + +test verify_rtl_with_full_toolchain_adder + given rtl = "module adder(a, b, y); input [7:0] a, b; output [8:0] y; assign y = a + b; endmodule" + given template = "adder" + when ok = verify_rtl_with_full_toolchain(rtl, template) + then ok == true + +test verify_rtl_with_full_toolchain_invalid + given rtl = "not a module" + given template = "unknown" + when ok = verify_rtl_with_full_toolchain(rtl, template) + then ok == false + +// FPGA validation tests (W111) + +test has_fpga_board_intel_agilex5 + when ok = has_fpga_board("intel_agilex5") + then ok == true + +test has_fpga_board_unknown + when ok = has_fpga_board("unknown_board") + then ok == false + +test synthesize_to_bitstream_valid + given vfile = "/tmp/test.v" + given board = "intel_agilex5" + when ok = synthesize_to_bitstream(vfile, board) + then ok == true + +test synthesize_to_bitstream_invalid_board + given vfile = "/tmp/test.v" + given board = "unknown" + when ok = synthesize_to_bitstream(vfile, board) + then ok == false + +test upload_to_fpga_valid + given bitfile = "/tmp/output.bit" + given board = "xilinx_kria" + when ok = upload_to_fpga(bitfile, board) + then ok == true + +test run_fpga_testbench_nonempty + given bitfile = "/tmp/output.bit" + given vectors = ["00", "01", "10", "11"] + when ok = run_fpga_testbench(bitfile, vectors) + then ok == true + +test fpga_validation_report_nonempty + given bitfile = "/tmp/output.bit" + when report = fpga_validation_report(bitfile) + then report.synth_ok == true && report.max_mhz == 250.0 + +// Symbolic solver tests (W111) + +test kmap_simplify_xor + given expr = "A'B + AB'" + when out = kmap_simplify(expr) + then out == "A ^ B" + +test kmap_simplify_identity + given expr = "A'B'C + A'BC + AB'C + ABC" + when out = kmap_simplify(expr) + then out == "C" + +test truth_table_generate_nonempty + given ins = ["A", "B"] + given outs = ["Y"] + when tbl = truth_table_generate(ins, outs) + then tbl.len() > 0 + +test boolean_minimize_absorption + given expr = "AB + A" + when out = boolean_minimize(expr) + then out == "A" + +// Real subprocess bridge tests (W110) + +test run_command_nonempty_returns_stdout + given cmd = "yosys" + given args = "test.v" + when out = run_command(cmd, args) + then out[0:6] == "stdout" + +test run_command_empty_returns_error + given cmd = "" + given args = "" + when out = run_command(cmd, args) + then out == "error" + +test run_yosys_real_nonempty_returns_struct + given file = "/tmp/test.v" + when report = run_yosys_real(file) + then report.synth_ok == true + +test run_verilator_real_nonempty + given file = "/tmp/test.v" + when ok = run_verilator_real(file) + then ok == true + +test run_icarus_real_nonempty + given vfile = "/tmp/test.v" + given tb = "/tmp/tb.v" + when ok = run_icarus_real(vfile, tb) + then ok == true + +// ============================================================================ +// Self-Training Pipeline Primitives (W112) +// ============================================================================ + +/// AgentState: snapshot of an RL agent during self-training. +pub const AgentState = struct { + policy_params : []f32, + step_count : u32, + last_reward : f32, +}; + +/// TrajectoryStep: one step in a multi-turn generation-verification trajectory. +pub const TrajectoryStep = struct { + agent_id : u32, + action : string, + reward : f32, + is_error : bool, +}; + +/// AgentProfile: specification of a multi-agent team member. +pub const AgentProfile = struct { + name : string, + role : string, // "generator", "verifier", "optimizer" + model_size: u32, // parameters in millions +}; + +/// compute_grpo_loss(logits, rewards) -> f32 +/// Group Relative Policy Optimization loss. +/// L_GRPO = -E[ (pi/pi_ref) * (reward - baseline) ]. +/// Stub: returns mean reward scaled by logits variance. +pub fn compute_grpo_loss(logits: []f32, rewards: []f32) -> f32 { + if (logits.len() == 0 || rewards.len() == 0) { return 0.0; } + let mean_reward = sum_f32(rewards, 0, 0.0) / rewards.len() as f32; + let logit_var = variance_f32(logits, 0, 0.0, mean_reward); + if (logit_var == 0.0) { return -mean_reward; } + return -mean_reward * logit_var; +} + +fn sum_f32(arr: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= arr.len()) { return acc; } + return sum_f32(arr, idx + 1, acc + arr[idx]); +} + +fn variance_f32(arr: []f32, idx: u32, acc: f32, mean: f32) -> f32 { + if (idx >= arr.len()) { return acc / arr.len() as f32; } + let diff = arr[idx] - mean; + return variance_f32(arr, idx + 1, acc + diff * diff, mean); +} + +/// compute_xgrpo_variance(groups) -> f32 +/// Cross-agent group variance for X-GRPO multi-agent RL. +/// Measures disagreement across agent groups. +pub fn compute_xgrpo_variance(groups: [][]f32) -> f32 { + if (groups.len() == 0) { return 0.0; } + let total_mean = mean_of_groups(groups, 0, 0.0, 0); + if (total_mean == 0.0) { return 0.0; } + let var = group_variance(groups, 0, 0.0, total_mean); + return var; +} + +fn mean_of_groups(groups: [][]f32, idx: u32, acc: f32, count: u32) -> f32 { + if (idx >= groups.len()) { return if (count == 0) { 0.0 } else { acc / count as f32 }; } + let g_mean = if (groups[idx].len() > 0) { sum_f32(groups[idx], 0, 0.0) / groups[idx].len() as f32 } else { 0.0 }; + return mean_of_groups(groups, idx + 1, acc + g_mean, count + 1); +} + +fn group_variance(groups: [][]f32, idx: u32, acc: f32, total_mean: f32) -> f32 { + if (idx >= groups.len()) { return acc / groups.len() as f32; } + let g_mean = if (groups[idx].len() > 0) { sum_f32(groups[idx], 0, 0.0) / groups[idx].len() as f32 } else { 0.0 }; + let diff = g_mean - total_mean; + return group_variance(groups, idx + 1, acc + diff * diff, total_mean); +} + +/// self_train_step(agent_state, verifier_output) -> AgentState +/// Conceptual single self-training iteration: update agent state given verifier feedback. +pub fn self_train_step(agent_state: AgentState, verifier_output: string) -> AgentState { + let reward = if (verifier_output == "PASS") { 1.0 } else { -0.5 }; + let new_params = agent_state.policy_params; + return AgentState { policy_params: new_params, step_count: agent_state.step_count + 1, last_reward: reward }; +} + +/// backtrack_on_error(trajectory, error_step) -> []TrajectoryStep +/// Removes steps from error_step onward and returns truncated trajectory. +pub fn backtrack_on_error(trajectory: []TrajectoryStep, error_step: u32) -> []TrajectoryStep { + return backtrack_inner(trajectory, error_step, 0, []TrajectoryStep{}); +} + +fn backtrack_inner(trajectory: []TrajectoryStep, error_step: u32, idx: u32, acc: []TrajectoryStep) -> []TrajectoryStep { + if (idx >= trajectory.len()) { return acc; } + if (idx >= error_step) { return acc; } + return backtrack_inner(trajectory, error_step, idx + 1, acc + [trajectory[idx]]); +} + +/// compute_sacred_rl_reward(verilog) -> f32 +/// Scalar reward from sacred compliance: 1.0 if R_SI_1_COMPLIANT, 0.0 otherwise. +pub fn compute_sacred_rl_reward(verilog: string) -> f32 { + if (check_sacred_compliance(verilog) == R_SI_1_COMPLIANT) { + return 1.0; + } + return 0.0; +} + +/// grpo_loss_with_sacred_bonus(logits, rewards, sacred_scores) -> f32 +/// Augments GRPO loss with sacred compliance bonus. +/// Formula: L = -E[ (reward + alpha * sacred_score) ] * logit_variance. +pub fn grpo_loss_with_sacred_bonus(logits: []f32, rewards: []f32, sacred_scores: []f32) -> f32 { + if (logits.len() == 0 || rewards.len() == 0 || sacred_scores.len() == 0) { return 0.0; } + let combined = combine_rewards_sacred(rewards, sacred_scores, 0, 0.0); + let mean_combined = combined / rewards.len() as f32; + let logit_var = variance_f32(logits, 0, 0.0, mean_combined); + if (logit_var == 0.0) { return -mean_combined; } + return -mean_combined * logit_var; +} + +fn combine_rewards_sacred(rewards: []f32, sacred_scores: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= rewards.len() || idx >= sacred_scores.len()) { return acc; } + let alpha = 0.5; // sacred bonus weight + return combine_rewards_sacred(rewards, sacred_scores, idx + 1, acc + rewards[idx] + alpha * sacred_scores[idx]); +} + +// ============================================================================ +// Reference Model Agent (W112) +// ============================================================================ + +/// generate_python_reference(verilog) -> string +/// Conceptual extraction of a Python behavioral reference model from Verilog. +/// Stub: returns a Python function signature with the module name. +pub fn generate_python_reference(verilog: string) -> string { + if (verilog.len() == 0) { return ""; } + let mod_name = extract_module_name(verilog, 0, ""); + return "def " + mod_name + "_ref(inputs):\n return outputs\n"; +} + +fn extract_module_name(rtl: string, idx: u32, acc: string) -> string { + if (idx >= rtl.len()) { return if (acc.len() > 0) { acc } else { "unknown" }; } + if (rtl[idx] == 32 && acc.len() > 0) { + // space after "module" starts the name; collect until '(' or ' ' + return extract_name_chars(rtl, idx + 1, ""); + } + return extract_module_name(rtl, idx + 1, acc + rtl[idx]); +} + +fn extract_name_chars(s: string, idx: u32, acc: string) -> string { + if (idx >= s.len()) { return acc; } + let c = s[idx]; + if (c == 40 || c == 32 || c == 59) { return acc; } // '(', ' ', ';' + return extract_name_chars(s, idx + 1, acc + c); +} + +/// cross_verify_verilog_python(verilog, python) -> bool +/// Conceptual cross-verification: check if Python reference agrees with Verilog. +/// Stub: true if both are nonempty. +pub fn cross_verify_verilog_python(verilog: string, python: string) -> bool { + if (verilog.len() == 0 || python.len() == 0) { return false; } + return has_substring(python, "_ref", 0); +} + +/// reference_model_agent() -> AgentProfile +/// Returns the specification of the Python reference-model verifier agent. +pub fn reference_model_agent() -> AgentProfile { + return AgentProfile { name: "PyRef", role: "verifier", model_size: 0 }; +} + +// ============================================================================ +// Python Reference Model Bridge (W115) +// ============================================================================ + +pub const PythonBridge = struct { + python_path : string, // e.g. "python3" or "/usr/bin/python3" + cocotb_path : string, // path to cocotb installation + timeout_ms : u32, // subprocess timeout +}; + +/// generate_python_reference_with_bridge(verilog, bridge) -> string +/// Generates Python reference using an external Python runtime bridge. +/// Stub: same as generate_python_reference unless bridge is configured. +pub fn generate_python_reference_with_bridge(verilog: string, bridge: PythonBridge) -> string { + if (verilog.len() == 0) { return ""; } + if (bridge.python_path.len() == 0) { + return generate_python_reference(verilog); + } + let mod_name = extract_module_name(verilog, 0, ""); + return "# bridge: " + bridge.python_path + "\ndef " + mod_name + "_ref(inputs):\n return outputs\n"; +} + +/// cross_verify_with_cocotb(verilog, python_tb) -> bool +/// Conceptual cocotb-based equivalence checking. +/// Stub: true if both inputs are nonempty and contain expected keywords. +pub fn cross_verify_with_cocotb(verilog: string, python_tb: string) -> bool { + if (verilog.len() == 0 || python_tb.len() == 0) { return false; } + return has_substring(python_tb, "cocotb", 0) || has_substring(python_tb, "_ref", 0); +} + +// ============================================================================ +// EDA Subprocess Reward Primitives (W116) +// ============================================================================ + +/// score_rtl_with_yosys_real(rtl) -> f32 +/// Conceptual latency reward from Yosys synthesis. +/// Stub: returns a heuristic score based on RTL complexity (wire count proxy). +/// Lower wire count = higher reward (simpler designs preferred). +pub fn score_rtl_with_yosys_real(rtl: string) -> f32 { + if (rtl.len() == 0) { return 0.0; } + let wire_count = count_substring(rtl, "wire", 0, 0); + if (wire_count == 0) { return 1.0; } + return 1.0 / (wire_count as f32 + 1.0); +} + +fn count_substring(s: string, needle: string, idx: u32, acc: u32) -> u32 { + if (idx + needle.len() > s.len()) { return acc; } + if (substring_match(s, needle, idx, 0)) { + return count_substring(s, needle, idx + 1, acc + 1); + } + return count_substring(s, needle, idx + 1, acc); +} + +/// diversity_reward(generated_a, generated_b) -> f32 +/// Structural diversity score between two RTL strings. +/// Stub: returns Hamming-like distance normalized by max length. +pub fn diversity_reward(generated_a: string, generated_b: string) -> f32 { + if (generated_a.len() == 0 && generated_b.len() == 0) { return 0.0; } + let max_len = if (generated_a.len() > generated_b.len()) { generated_a.len() } else { generated_b.len() }; + if (max_len == 0) { return 0.0; } + let diff = string_hamming_distance(generated_a, generated_b, 0, 0); + return diff as f32 / max_len as f32; +} + +fn string_hamming_distance(a: string, b: string, idx: u32, acc: u32) -> u32 { + if (idx >= a.len() && idx >= b.len()) { return acc; } + let ca = if (idx < a.len()) { a[idx] } else { 0 }; + let cb = if (idx < b.len()) { b[idx] } else { 0 }; + if (ca != cb) { + return string_hamming_distance(a, b, idx + 1, acc + 1); + } + return string_hamming_distance(a, b, idx + 1, acc); +} + +/// property_equivalence_reward(rtl, spec) -> f32 +/// Formal property equivalence check reward. +/// Stub: returns 1.0 if both rtl and spec contain "assert" (proxy for property-rich design). +pub fn property_equivalence_reward(rtl: string, spec: string) -> f32 { + if (rtl.len() == 0 || spec.len() == 0) { return 0.0; } + let rtl_assert = count_substring(rtl, "assert", 0, 0); + let spec_assert = count_substring(spec, "assert", 0, 0); + if (rtl_assert > 0 && spec_assert > 0) { + return 1.0; + } + return 0.0; +} + +// ============================================================================ +// Formal Verification Integration (W117) +// ============================================================================ + +/// SvaProperty: SystemVerilog Assertion property specification. +pub const SvaProperty = struct { + kind : string, // "assert", "assume", "cover", "restrict" + expr : string, // property expression, e.g. "a |-> ##1 b" + clk : string, // clock signal name + label : string, // optional property label +}; + +/// SvaCheckResult: outcome of formal property checking. +pub const SvaCheckResult = struct { + syntax_ok : bool, + vacuous : bool, // true if property is vacuously true (e.g. antecedent never fires) + coverage : f32, // 0.0-1.0 formal coverage score + formal_ok : bool, // true if proof passes (no counterexample) +}; + +/// generate_sva_from_contract(contract) -> []SvaProperty +/// Generates SystemVerilog Assertions from a temporal contract. +/// Maps Contract precond/postcond/invariant to SVA properties. +pub fn generate_sva_from_contract(contract: pipeline::Contract) -> []SvaProperty { + if (contract.module_name.len() == 0) { return []SvaProperty{}; } + let props = []SvaProperty{}; + if (contract.precond.len() > 0 && contract.postcond.len() > 0) { + let p0 = SvaProperty { kind: "assert", expr: contract.precond + " |-> " + contract.postcond, clk: contract.clk, label: contract.module_name + "_pre_post" }; + props = props + [p0]; + } + if (contract.invariant.len() > 0) { + let p1 = SvaProperty { kind: "assert", expr: contract.invariant, clk: contract.clk, label: contract.module_name + "_inv" }; + props = props + [p1]; + } + if (contract.reset.len() > 0) { + let p2 = SvaProperty { kind: "assume", expr: contract.reset + " |-> ##1 " + contract.reset, clk: contract.clk, label: contract.module_name + "_reset" }; + props = props + [p2]; + } + return props; +} + +/// parse_sva_vacuity(sva_code) -> bool +/// Detects vacuous SVA properties: antecedent never fires or tautology. +/// HierSVA-style vacuity detection heuristic. +pub fn parse_sva_vacuity(sva_code: string) -> bool { + if (sva_code.len() == 0) { return true; } + // Vacuous if antecedent is literal '1' or 'true' (always fires) + let always_true = has_substring(sva_code, "1'b1", 0) || has_substring(sva_code, "true", 0); + // Vacuous if consequent is literal '1' (tautology) + let tautology = has_substring(sva_code, "|-> 1'b1", 0); + return always_true || tautology; +} + +/// symbiyosys_equivalence_check(rtl_a, rtl_b) -> SvaCheckResult +/// Conceptual SymbiYosys Sequential Equivalence Checking (SEC). +/// Stub: returns formal_ok if both RTL are structurally similar (same module keywords). +pub fn symbiyosys_equivalence_check(rtl_a: string, rtl_b: string) -> SvaCheckResult { + if (rtl_a.len() == 0 || rtl_b.len() == 0) { + return SvaCheckResult { syntax_ok: false, vacuous: true, coverage: 0.0, formal_ok: false }; + } + let same_template = eval::detect_template_from_rtl(rtl_a) == eval::detect_template_from_rtl(rtl_b); + return SvaCheckResult { + syntax_ok: true, + vacuous: false, + coverage: if (same_template) { 0.8 } else { 0.3 }, + formal_ok: same_template, + }; +} + +/// formal_coverage_score(rtl, properties) -> f32 +/// Computes formal coverage as fraction of properties satisfied by RTL. +/// 0.0 = none satisfied, 1.0 = all satisfied. +pub fn formal_coverage_score(rtl: string, properties: []SvaProperty) -> f32 { + if (properties.len() == 0) { return 0.0; } + if (rtl.len() == 0) { return 0.0; } + let satisfied = count_satisfied_properties(rtl, properties, 0, 0); + return satisfied as f32 / properties.len() as f32; +} + +fn count_satisfied_properties(rtl: string, properties: []SvaProperty, idx: u32, acc: u32) -> u32 { + if (idx >= properties.len()) { return acc; } + let sat = property_satisfied_by_rtl(rtl, properties[idx]); + return count_satisfied_properties(rtl, properties, idx + 1, acc + if (sat) { 1 } else { 0 }); +} + +fn property_satisfied_by_rtl(rtl: string, prop: SvaProperty) -> bool { + if (prop.kind == "assert" && has_substring(rtl, "assert", 0)) { return true; } + if (prop.kind == "assume" && has_substring(rtl, "assume", 0)) { return true; } + if (prop.kind == "cover" && has_substring(rtl, "cover", 0)) { return true; } + return false; +} + +/// hw_cbmc_equivalence_check(rtl, spec) -> SvaCheckResult +/// Conceptual hw-cbmc FormalRTL-style equivalence checking. +/// Stub: returns formal_ok if RTL contains all signals mentioned in spec. +pub fn hw_cbmc_equivalence_check(rtl: string, spec: string) -> SvaCheckResult { + if (rtl.len() == 0 || spec.len() == 0) { + return SvaCheckResult { syntax_ok: false, vacuous: true, coverage: 0.0, formal_ok: false }; + } + let has_module = has_substring(rtl, "module", 0) && has_substring(spec, "module", 0); + return SvaCheckResult { + syntax_ok: has_module, + vacuous: false, + coverage: if (has_module) { 0.6 } else { 0.0 }, + formal_ok: has_module, + }; +} + +/// sva_syntax_check(sva_code) -> bool +/// Basic SVA syntax validation: contains property keywords and balanced parentheses. +pub fn sva_syntax_check(sva_code: string) -> bool { + if (sva_code.len() == 0) { return false; } + let has_assert = has_substring(sva_code, "assert", 0); + let has_property = has_substring(sva_code, "property", 0); + let balanced = check_balanced_parens(sva_code, 0, 0); + return (has_assert || has_property) && balanced; +} + +fn check_balanced_parens(s: string, idx: u32, depth: u32) -> bool { + if (idx >= s.len()) { return depth == 0; } + if (s[idx] == 40) { return check_balanced_parens(s, idx + 1, depth + 1); } + if (s[idx] == 41) { if (depth == 0) { return false; } return check_balanced_parens(s, idx + 1, depth - 1); } + return check_balanced_parens(s, idx + 1, depth); +} + +// ============================================================================ +// EDA Reward Hardening (W117 -- Response to Alpha-RTL, RTLScout) +// ============================================================================ + +/// yosys_area_delay_product(report) -> f32 +/// Computes Area-Delay Product (ADP) from Yosys synthesis report. +/// Lower ADP = better PPA. Units: LUTs * ns (approximated as LUTs / MHz * 1000). +pub fn yosys_area_delay_product(report: YosysReport) -> f32 { + if (!report.synth_ok) { return 999999.0; } + if (report.max_mhz == 0.0) { return 999999.0; } + let ns_per_cycle = 1000.0 / report.max_mhz; + return report.lut_count as f32 * ns_per_cycle; +} + +/// ElitePool: maintains top-K RTL designs by PPA score. +pub const ElitePool = struct { + entries : []string, + scores : []f32, + capacity: u32, +}; + +/// elite_pool_update(pool, rtl, score) -> ElitePool +/// Adds RTL to elite pool if score is among top-K. Drops lowest if over capacity. +pub fn elite_pool_update(pool: ElitePool, rtl: string, score: f32) -> ElitePool { + if (pool.capacity == 0) { return pool; } + let new_entries = pool.entries + [rtl]; + let new_scores = pool.scores + [score]; + if (new_entries.len() <= pool.capacity) { + return ElitePool { entries: new_entries, scores: new_scores, capacity: pool.capacity }; + } + let min_idx = find_min_score_index(new_scores, 0, 0, 999999.0); + return ElitePool { + entries: remove_idx(new_entries, min_idx), + scores: remove_idx_f32(new_scores, min_idx), + capacity: pool.capacity, + }; +} + +fn find_min_score_index(scores: []f32, idx: u32, best_idx: u32, best_val: f32) -> u32 { + if (idx >= scores.len()) { return best_idx; } + if (scores[idx] < best_val) { + return find_min_score_index(scores, idx + 1, idx, scores[idx]); + } + return find_min_score_index(scores, idx + 1, best_idx, best_val); +} + +fn remove_idx(arr: []string, idx: u32) -> []string { + return remove_idx_inner(arr, idx, 0, []string{}); +} + +fn remove_idx_inner(arr: []string, target: u32, idx: u32, acc: []string) -> []string { + if (idx >= arr.len()) { return acc; } + if (idx == target) { return remove_idx_inner(arr, target, idx + 1, acc); } + return remove_idx_inner(arr, target, idx + 1, acc + [arr[idx]]); +} + +fn remove_idx_f32(arr: []f32, idx: u32) -> []f32 { + return remove_idx_f32_inner(arr, idx, 0, []f32{}); +} + +fn remove_idx_f32_inner(arr: []f32, target: u32, idx: u32, acc: []f32) -> []f32 { + if (idx >= arr.len()) { return acc; } + if (idx == target) { return remove_idx_f32_inner(arr, target, idx + 1, acc); } + return remove_idx_f32_inner(arr, target, idx + 1, acc + [arr[idx]]); +} + +/// elite_pool_select(pool) -> string +/// Returns the highest-scoring RTL from the elite pool. +pub fn elite_pool_select(pool: ElitePool) -> string { + if (pool.entries.len() == 0) { return ""; } + let max_idx = find_max_score_index(pool.scores, 0, 0, -999999.0); + return pool.entries[max_idx]; +} + +fn find_max_score_index(scores: []f32, idx: u32, best_idx: u32, best_val: f32) -> u32 { + if (idx >= scores.len()) { return best_idx; } + if (scores[idx] > best_val) { + return find_max_score_index(scores, idx + 1, idx, scores[idx]); + } + return find_max_score_index(scores, idx + 1, best_idx, best_val); +} + +/// arithmetic_architecture_sweep(template_name) -> []string +/// Returns architectural variant hints for a given template. +/// RTLScout-style: Wallace tree vs Dadda tree vs prefix adder vs ripple-carry. +pub fn arithmetic_architecture_sweep(template_name: string) -> []string { + if (template_name == "multiplier") { + return ["wallace_tree", "dadda_tree", "booth_encoded", "array_multiplier"]; + } + if (template_name == "adder") { + return ["ripple_carry", "carry_lookahead", "prefix_adder", "koggestone"]; + } + if (template_name == "cordic") { + return ["cordic_pipeline", "cordic_unrolled", "cordic_ternary"]; + } + return ["default"]; +} + +/// ppa_score_from_report(report) -> f32 +/// Normalized PPA quality score: 0.0 = failed, higher = better ADP. +/// Uses ADP inverse: lower ADP gives higher score. +pub fn ppa_score_from_report(report: YosysReport) -> f32 { + let adp = yosys_area_delay_product(report); + if (adp >= 999999.0) { return 0.0; } + let score = 1.0 / (adp + 1.0); + if (score > 1.0) { return 1.0; } + return score; +} + +// ============================================================================ +// Self-training + Reference model tests (W112) +// ============================================================================ + +test compute_grpo_loss_positive_reward + given logits = [1.0, 2.0, 3.0] + given rewards = [1.0, 1.0, 1.0] + when loss = compute_grpo_loss(logits, rewards) + then loss < 0.0 + +test compute_grpo_loss_empty + given logits = []f32{} + given rewards = []f32{} + when loss = compute_grpo_loss(logits, rewards) + then loss == 0.0 + +test compute_xgrpo_variance_empty + given groups = [][]f32{} + when var = compute_xgrpo_variance(groups) + then var == 0.0 + +test compute_xgrpo_variance_single_group + given groups = [[1.0, 2.0, 3.0]] + when var = compute_xgrpo_variance(groups) + then var == 0.0 + +test self_train_step_pass + given state = AgentState { policy_params: [0.5], step_count: 0, last_reward: 0.0 } + given verifier = "PASS" + when next = self_train_step(state, verifier) + then next.step_count == 1 && next.last_reward == 1.0 + +test self_train_step_fail + given state = AgentState { policy_params: [0.5], step_count: 0, last_reward: 0.0 } + given verifier = "FAIL" + when next = self_train_step(state, verifier) + then next.step_count == 1 && next.last_reward < 0.0 + +test backtrack_on_error_truncates + given traj = [ + TrajectoryStep { agent_id: 0, action: "a", reward: 1.0, is_error: false }, + TrajectoryStep { agent_id: 0, action: "b", reward: -1.0, is_error: true }, + TrajectoryStep { agent_id: 0, action: "c", reward: 0.0, is_error: false } + ] + when truncated = backtrack_on_error(traj, 1) + then len(truncated) == 1 && truncated[0].action == "a" + +test generate_python_reference_nonempty + given rtl = "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule" + when py = generate_python_reference(rtl) + then py.len() > 0 && has_substring(py, "def", 0) == true + +test cross_verify_verilog_python_agree + given rtl = "module add2(); endmodule" + given py = "def add2_ref(inputs):\n return outputs\n" + when ok = cross_verify_verilog_python(rtl, py) + then ok == true + +test reference_model_agent_is_verifier + when agent = reference_model_agent() + then agent.role == "verifier" && agent.name == "PyRef" + +test compute_sacred_rl_reward_compliant + given code = "assign y = a + b;" + when r = compute_sacred_rl_reward(code) + then r == 1.0 + +test compute_sacred_rl_reward_noncompliant + given code = "assign y = a * b;" + when r = compute_sacred_rl_reward(code) + then r == 0.0 + +test grpo_loss_with_sacred_bonus_higher + given logits = [0.1, 0.2, 0.3] + given rewards = [1.0, 1.0, 1.0] + given sacred = [1.0, 1.0, 1.0] + when loss_base = compute_grpo_loss(logits, rewards) + when loss_sacred = grpo_loss_with_sacred_bonus(logits, rewards, sacred) + then loss_sacred != loss_base + +test grpo_loss_with_sacred_bonus_empty_guard + given logits = []f32{} + given rewards = []f32{} + given sacred = []f32{} + when loss = grpo_loss_with_sacred_bonus(logits, rewards, sacred) + then loss == 0.0 + +test generate_python_reference_with_bridge_fallback + given rtl = "module add2(); endmodule" + given bridge = PythonBridge { python_path: "", cocotb_path: "", timeout_ms: 1000 } + when py = generate_python_reference_with_bridge(rtl, bridge) + then py.len() > 0 && has_substring(py, "def add2_ref", 0) == true + +test generate_python_reference_with_bridge_configured + given rtl = "module add2(); endmodule" + given bridge = PythonBridge { python_path: "python3", cocotb_path: "/opt/cocotb", timeout_ms: 5000 } + when py = generate_python_reference_with_bridge(rtl, bridge) + then has_substring(py, "bridge:", 0) == true + +test cross_verify_with_cocotb_nonempty + given rtl = "module add2(); endmodule" + given py = "import cocotb\ndef add2_ref(inputs):\n return outputs\n" + when ok = cross_verify_with_cocotb(rtl, py) + then ok == true + +test score_rtl_with_yosys_real_nonempty + given rtl = "module add2(a,b,y); input [1:0] a,b; output [2:0] y; assign y = a + b; endmodule" + when score = score_rtl_with_yosys_real(rtl) + then score > 0.0 && score <= 1.0 + +test score_rtl_with_yosys_real_empty + given rtl = "" + when score = score_rtl_with_yosys_real(rtl) + then score == 0.0 + +test diversity_reward_identical + given a = "assign y = a + b;" + given b = "assign y = a + b;" + when r = diversity_reward(a, b) + then r == 0.0 + +test diversity_reward_different + given a = "assign y = a + b;" + given b = "assign z = a * b;" + when r = diversity_reward(a, b) + then r > 0.0 + +test property_equivalence_reward_with_assert + given rtl = "module m(); assert (1==1); endmodule" + given spec = "assert (1==1);" + when r = property_equivalence_reward(rtl, spec) + then r == 1.0 + +test property_equivalence_reward_no_assert + given rtl = "module m(); endmodule" + given spec = "module m(); endmodule" + when r = property_equivalence_reward(rtl, spec) + then r == 0.0 + +// Formal verification tests (W117) + +test generate_sva_from_contract_nonempty + given contract = pipeline::Contract { module_name: "add2", precond: "a>=0", postcond: "y==a+b", invariant: "no_overflow", clk: "clk", reset: "rst" } + when props = generate_sva_from_contract(contract) + then len(props) > 0 && props[0].kind == "assert" + +test generate_sva_from_contract_empty_module + given contract = pipeline::Contract { module_name: "", precond: "", postcond: "", invariant: "", clk: "", reset: "" } + when props = generate_sva_from_contract(contract) + then len(props) == 0 + +test parse_sva_vacuity_always_true + given sva = "assert property (@(posedge clk) 1'b1 |-> ##1 true);" + when v = parse_sva_vacuity(sva) + then v == true + +test parse_sva_vacuity_nontrivial + given sva = "assert property (@(posedge clk) req |-> ##1 gnt);" + when v = parse_sva_vacuity(sva) + then v == false + +test symbiyosys_equivalence_same_template + given rtl_a = "module cordic_sin_cos(); endmodule" + given rtl_b = "module cordic_sin_cos(); endmodule" + when res = symbiyosys_equivalence_check(rtl_a, rtl_b) + then res.formal_ok == true && res.coverage > 0.5 + +test symbiyosys_equivalence_different_template + given rtl_a = "module cordic_sin_cos(); endmodule" + given rtl_b = "module booth_mul(); endmodule" + when res = symbiyosys_equivalence_check(rtl_a, rtl_b) + then res.formal_ok == false + +test formal_coverage_score_all_satisfied + given rtl = "module m(); assert (1==1); assume (1==1); endmodule" + given props = [SvaProperty { kind: "assert", expr: "1==1", clk: "clk", label: "p1" }, SvaProperty { kind: "assume", expr: "1==1", clk: "clk", label: "p2" }] + when score = formal_coverage_score(rtl, props) + then score == 1.0 + +test formal_coverage_score_empty_props + given rtl = "module m(); endmodule" + given props = []SvaProperty{} + when score = formal_coverage_score(rtl, props) + then score == 0.0 + +test hw_cbmc_equivalence_check_valid + given rtl = "module add2(); endmodule" + given spec = "module add2(); endmodule" + when res = hw_cbmc_equivalence_check(rtl, spec) + then res.syntax_ok == true && res.formal_ok == true + +test hw_cbmc_equivalence_check_empty + given rtl = "" + given spec = "module add2(); endmodule" + when res = hw_cbmc_equivalence_check(rtl, spec) + then res.syntax_ok == false + +test sva_syntax_check_valid_assert + given sva = "assert property (@(posedge clk) req |-> ##1 gnt);" + when ok = sva_syntax_check(sva) + then ok == true + +test sva_syntax_check_invalid_empty + given sva = "" + when ok = sva_syntax_check(sva) + then ok == false + +test sva_syntax_check_unbalanced_parens + given sva = "assert property ((req |-> gnt);" + when ok = sva_syntax_check(sva) + then ok == false + +// EDA reward hardening tests (W117) + +test yosys_area_delay_product_valid + given report = YosysReport { lut_count: 100, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + when adp = yosys_area_delay_product(report) + then adp > 0.0 && adp < 999999.0 + +test yosys_area_delay_product_failed + given report = YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false } + when adp = yosys_area_delay_product(report) + then adp == 999999.0 + +test elite_pool_update_adds_entry + given pool = ElitePool { entries: []string{}, scores: []f32{}, capacity: 2 } + given rtl = "module add2(); endmodule" + given score = 0.9 + when new_pool = elite_pool_update(pool, rtl, score) + then new_pool.entries.len() == 1 + +test elite_pool_update_drops_lowest + given pool = ElitePool { entries: ["a", "b"], scores: [0.9, 0.8], capacity: 2 } + given rtl = "c" + given score = 0.95 + when new_pool = elite_pool_update(pool, rtl, score) + then new_pool.entries.len() == 2 + +test elite_pool_select_nonempty + given pool = ElitePool { entries: ["a", "b"], scores: [0.5, 0.9], capacity: 2 } + when best = elite_pool_select(pool) + then best == "b" + +test arithmetic_architecture_sweep_multiplier + when variants = arithmetic_architecture_sweep("multiplier") + then len(variants) == 4 + +test arithmetic_architecture_sweep_adder + when variants = arithmetic_architecture_sweep("adder") + then len(variants) == 4 + +test arithmetic_architecture_sweep_unknown + when variants = arithmetic_architecture_sweep("unknown") + then len(variants) == 1 && variants[0] == "default" + +test ppa_score_from_report_excellent + given report = YosysReport { lut_count: 10, ff_count: 5, carry_count: 2, max_mhz: 250.0, synth_ok: true } + when score = ppa_score_from_report(report) + then score > 0.0 && score <= 1.0 + +test ppa_score_from_report_failed + given report = YosysReport { lut_count: 0, ff_count: 0, carry_count: 0, max_mhz: 0.0, synth_ok: false } + when score = ppa_score_from_report(report) + then score == 0.0 + +test compute_hqi_perfect + given m = HardwareQualityIndex { area_um2: 0.0, delay_ns: 0.0, warnings: 0, luts: 0 } + when hqi = compute_hqi(m) + then hqi == 1.0 + +test compute_hqi_worse + given m = HardwareQualityIndex { area_um2: 10000.0, delay_ns: 100.0, warnings: 100, luts: 10000 } + when hqi = compute_hqi(m) + then hqi < 0.5 + +test reward_from_hqi_perfect + given m = HardwareQualityIndex { area_um2: 0.0, delay_ns: 0.0, warnings: 0, luts: 0 } + when reward = reward_from_hqi(m) + then reward == 1.0 + +test reward_from_hqi_worse + given m = HardwareQualityIndex { area_um2: 10000.0, delay_ns: 100.0, warnings: 100, luts: 10000 } + when reward = reward_from_hqi(m) + then reward < 0.0 + +test tool_assisted_preprocess_truth_table + when out = tool_assisted_preprocess("truth_table: 0 1 1 0") + then has_substring(out, "SOP", 0) + +test tool_assisted_preprocess_kmap + when out = tool_assisted_preprocess("karnaugh: ab/cd") + then has_substring(out, "MIN", 0) + +test tool_assisted_preprocess_passthrough + when out = tool_assisted_preprocess("verilog: module m; endmodule") + then out == "verilog: module m; endmodule" + +test fpga_board_intel_available + when ok = has_fpga_board("intel_agilex5") + then ok == true + +test fpga_board_unknown_unavailable + when ok = has_fpga_board("nonexistent_board") + then ok == false + +test yosys_report_nonempty_module + given code = "module m; wire w; endmodule" + when r = run_yosys_real(code) + then r.synth_ok == true + +test yosys_report_empty_module_fails + given code = "" + when r = run_yosys_real(code) + then r.synth_ok == false + +test boolean_minimize_absorption_2 + given expr = "A + AB" + when out = boolean_minimize(expr) + then out == "A" + +test kmap_xor_simplifies + given expr = "A'B + AB'" + when out = kmap_simplify(expr) + then out == "A ^ B" + +test score_rtl_with_yosys_vs_real_yosys_lut_consistent + given code = gen_adder_module() + when sim = score_rtl_with_yosys(code) + when real = run_yosys_real(code) + then sim.synth_ok == real.synth_ok && sim.lut_count >= 0 && real.lut_count >= 0 + +test run_yosys_from_stdout_exact_metrics + given log = "Number of SB_LUT4: 13\nNumber of SB_DFF: 2\nMax frequency: 210.5 MHz" + when report = run_yosys_from_stdout(log) + then report.lut_count == 13 && report.ff_count == 2 && report.max_mhz > 210.0 && report.max_mhz < 211.0 && report.synth_ok == true + +test run_yosys_from_stdout_error_returns_failure + given log = "error: synthesis failed" + when report = run_yosys_from_stdout(log) + then report.synth_ok == false && report.lut_count == 0 + +// ============================================================================ +// Invariants +// ============================================================================ + +bench eval_idempotent: eval(eval(expr)) == eval(expr) +invariant pass_at_k_bounded + forall results : []EvalResult, k : u8 + pass_at_k(results, k).score >= 0.0 + && pass_at_k(results, k).score <= 1.0 + +invariant sacred_compliance_levels + forall code : string + check_sacred_compliance(code) >= 0 + && check_sacred_compliance(code) <= R_SI_3_COMPLIANT + +// ============================================================================ +// Benchmarks +// ============================================================================ + + invariant evalresult_token_count_nonnegative: + forall s : EvalResult, s.token_count >= 0 +bench full_humaneval_suite + given tasks = []EvalTask{} + measure generate_report([]EvalResult{}) + target total_latency_min < 30.0 + +bench sacred_compliance_check + given code = "" + measure check_sacred_compliance(code) + target latency_ms < 10.0 + + +bench module_identity_latency_6 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test eval_pass_at_k_empty_results + given results = []EvalResult{} + when p = pass_at_k(results, PASS_AT_1) + then p.pass_count == 0 && p.total_tasks == 0 && p.score == 0.0 + +test eval_compile_and_test_invalid_code + given code = "invalid syntax here" + given tests = []string{} + when result = compile_and_test(code, "rust", tests) + then result.compile_ok == false + +test eval_generate_report_empty_sacred_rate + given results = []EvalResult{} + when report = generate_report(results) + then report.sacred_compliant_rate == 0.0 && report.avg_latency_ms == 0.0 + +test eval_score_rtl_with_yosys_empty_fails + given code = "" + when r = score_rtl_with_yosys(code) + then r.synth_ok == false && r.lut_count == 0 + +test eval_compute_hqi_zero_warnings + given m = HardwareQualityIndex { area_um2: 100.0, delay_ns: 1.0, warnings: 0, luts: 10 } + when hqi = compute_hqi(m) + then hqi > 0.0 + +test eval_pass_at_k_score_one_all_pass + given results = [ + EvalResult { task_id: "t1", generated: "", compile_ok: true, test_pass: true, sacred_compliant: 1, latency_ms: 1.0, token_count: 1 }, + EvalResult { task_id: "t2", generated: "", compile_ok: true, test_pass: true, sacred_compliant: 1, latency_ms: 1.0, token_count: 1 } + ] + when p = pass_at_k(results, PASS_AT_1) + then p.score == 1.0 + +test eval_pass_at_k_score_zero_all_fail + given results = [ + EvalResult { task_id: "t1", generated: "", compile_ok: false, test_pass: false, sacred_compliant: 0, latency_ms: 1.0, token_count: 1 }, + EvalResult { task_id: "t2", generated: "", compile_ok: false, test_pass: false, sacred_compliant: 0, latency_ms: 1.0, token_count: 1 } + ] + when p = pass_at_k(results, PASS_AT_1) + then p.score == 0.0 + +test eval_score_rtl_with_yosys_nonempty_passes + given code = "module top(input a, output b); assign b = a; endmodule" + when r = score_rtl_with_yosys(code) + then r.synth_ok == true + +test eval_compile_and_test_empty_tests + given code = "fn main() {}" + given tests = []string{} + when result = compile_and_test(code, "rust", tests) + then result.compile_ok == true + +test eval_check_sacred_compliance_with_star + given code = "a * b" + when r = check_sacred_compliance(code) + then r == 0 + +test eval_check_sacred_compliance_without_star + given code = "fn add(a: i32, b: i32) -> i32 { a + b }" + when r = check_sacred_compliance(code) + then r == R_SI_1_COMPLIANT + +test eval_compile_and_test_unbalanced_braces + given code = "fn main() {" + given tests = []string{} + when result = compile_and_test(code, "rust", tests) + then result.compile_ok == false + +invariant eval_generate_report_sacred_rate_bounded: + forall results : []EvalResult + generate_report(results).sacred_compliant_rate >= 0.0 + && generate_report(results).sacred_compliant_rate <= 1.0 + +invariant eval_compare_ppa_reports_deterministic + forall a : YosysReport, b : YosysReport + compare_ppa_reports(a, b) == a || compare_ppa_reports(a, b) == b + +invariant eval_pass_at_k_score_bounded + forall results : []EvalResult, k : u8 + pass_at_k(results, k).score >= 0.0 && pass_at_k(results, k).score <= 1.0 + +invariant eval_check_sacred_compliance_star_implies_zero + forall s : string + has_star_inner(s, 0) == true ==> check_sacred_compliance(s) == 0 + +test eval_score_rtl_with_yosys_empty_rtl_fails + given rtl = "" + given report = YosysReport { lut_count: 0, ff_count: 0, max_freq_mhz: 0.0 } + when result = score_rtl_with_yosys(rtl, report) + then result == 0.0 + +test eval_compute_hqi_zero_tokens_zero_efficiency + given tokens = 0 + given energy_j = 1.0 + when result = compute_hqi(tokens, energy_j) + then result == 0.0 + +test eval_pass_at_k_empty_k_returns_zero + given results = []EvalResult{} + given k = 0 + when result = pass_at_k(results, k) + then result.score == 0.0 + +invariant eval_score_rtl_nonnegative: + forall rtl : string, report : YosysReport + score_rtl_with_yosys(rtl, report) >= 0.0 + +test eval_estimate_param_count_small + given vocab = 1000 + given d = 64 + given nl = 2 + given nh = 4 + given dff = 256 + when p = estimate_param_count(vocab, d, nl, nh, dff) + then p > 0 + +test eval_parse_yosys_freq_empty_log + given log = "" + when f = parse_yosys_freq(log) + then f == 0.0 + +test eval_detect_template_from_rtl_adder_tree + given code = gen_adder_tree_module() + when t = detect_template_from_rtl(code) + then t == "tree" + +invariant eval_generate_report_languages_evaluated_inv + forall results : []EvalResult + generate_report(results).languages_evaluated == 16 + +test eval_estimate_param_count_minimal + given vocab = 1 + given d = 1 + given nl = 1 + given nh = 1 + given dff = 1 + when p = estimate_param_count(vocab, d, nl, nh, dff) + then p > 0 + +test eval_count_assign_statements_empty_zero + given rtl = "" + when n = count_assign_statements(rtl) + then n == 0 + +test eval_check_balanced_braces_empty_true + given s = "" + when r = check_balanced_braces(s, 0, 0) + then r == true + +invariant eval_count_assign_statements_nonnegative + forall rtl : string + count_assign_statements(rtl) >= 0 + +test eval_check_balanced_braces_single_pair + given s = "{ }" + when r = check_balanced_braces(s, 0, 0) + then r == true + +test eval_has_star_inner_empty_false + given s = "" + when r = has_star_inner(s, 0) + then r == false + +test eval_check_sacred_compliance_empty_compliant + given generated = "" + when r = check_sacred_compliance(generated) + then r == 1 + +test eval_count_assign_statements_no_assign + given rtl = "module test(); endmodule" + when n = count_assign_statements(rtl) + then n == 0 + +test eval_generate_report_empty_empty + given generated = "" + given golden = "" + when r = generate_report(generated, golden) + then r.correct_lines == 0 + +invariant eval_has_star_inner_empty_false_inv: + forall s : string + s.len() == 0 ==> + has_star_inner(s, 0) == false + +invariant eval_generate_report_empty_zero_correct_inv: + generate_report("", "").correct_lines == 0 + +test eval_count_assign_statements_single_assign + given rtl = "assign a = b;" + when n = count_assign_statements(rtl) + then n == 1 + +test eval_has_star_inner_no_star_false + given s = "abc" + when r = has_star_inner(s, 0) + then r == false + +invariant eval_count_assign_statements_single_assign_inv: + count_assign_statements("assign a = b;") == 1 + +test eval_count_assign_statements_two_assigns + given rtl = "module test(); assign y = a + b; assign z = c & d; endmodule" + when n = count_assign_statements(rtl) + then n == 2 + +test eval_has_star_inner_single_star_true + given s = "*" + when r = has_star_inner(s, 0) + then r == true + +invariant eval_count_assign_statements_two_assigns_inv: + count_assign_statements("assign x = 1; assign y = 2;") == 2 + +test eval_compare_ppa_equal_reports + given a = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + given b = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + when best = compare_ppa_reports(a, b) + then best.lut_count == 50 + +test eval_synthesis_score_good_not_excellent + given report = YosysReport { lut_count: 200, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + when score = synthesis_score(report) + then score == 0.5 + +invariant eval_synthesis_score_bounded: + forall report : YosysReport + synthesis_score(report) >= 0.0 && synthesis_score(report) <= 1.0 + + +test eval_compare_ppa_selects_lower_lut + given a = YosysReport { lut_count: 30, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + given b = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + when best = compare_ppa_reports(a, b) + then best.lut_count == 30 + +invariant eval_count_assign_statements_empty_zero_inv: + count_assign_statements("") == 0 + +test eval_compare_ppa_equal_luts_selects_first + given a = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + given b = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + when best = compare_ppa_reports(a, b) + then best.lut_count == 50 + +test eval_synthesis_score_excellent + given report = YosysReport { lut_count: 10, ff_count: 10, carry_count: 5, max_mhz: 500.0, synth_ok: true } + when score = synthesis_score(report) + then score == 1.0 + +invariant eval_synthesis_score_excellent_inv: + forall report : YosysReport + report.lut_count <= 50 && report.max_mhz >= 300.0 && report.synth_ok == true ==> + synthesis_score(report) == 1.0 + +test eval_compare_ppa_selects_higher_mhz_equal_luts + given a = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 200.0, synth_ok: true } + given b = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 100.0, synth_ok: true } + when best = compare_ppa_reports(a, b) + then best.max_mhz == 200.0 + +test eval_count_assign_statements_single_assign_2 + given rtl = "assign y = a + b;" + when n = count_assign_statements(rtl) + then n == 1 + +invariant eval_count_assign_statements_single_assign_inv: + count_assign_statements("assign y = a + b;") == 1 + +test eval_count_assign_statements_two_assigns_2 + given rtl = "assign y = a; assign z = b;" + when n = count_assign_statements(rtl) + then n == 2 + +test eval_compare_ppa_equal_reports_2 + given a = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 200.0, synth_ok: true } + given b = YosysReport { lut_count: 50, ff_count: 10, carry_count: 5, max_mhz: 200.0, synth_ok: true } + when best = compare_ppa_reports(a, b) + then best.max_mhz == 200.0 + +invariant eval_count_assign_statements_two_assigns_inv: + count_assign_statements("assign y = a; assign z = b;") == 2 + +test eval_check_balanced_parens_empty_true + given s = "" + when ok = check_balanced_parens(s, 0, 0) + then ok == true + +test eval_string_hamming_distance_one_char_diff + given a = "abc" + given b = "abd" + when d = string_hamming_distance(a, b, 0, 0) + then d == 1 + +invariant eval_check_balanced_parens_empty_true_inv: + check_balanced_parens("", 0, 0) == true + +test eval_accuracy_perfect_one + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_perfect_inv: + forall preds : [u32], refs : [u32] + preds == refs ==> accuracy(preds, refs) == 1.0 + +test eval_string_hamming_distance_identical_zero + given a = "abc" + given b = "abc" + when d = string_hamming_distance(a, b, 0, 0) + then d == 0 + +test eval_accuracy_empty_zero + given preds = [] + given refs = [] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_empty_zero_inv: + forall preds : [u32], refs : [u32] + preds.len() == 0 && refs.len() == 0 ==> accuracy(preds, refs) == 0.0 + +test eval_bleu_score_empty_zero + given preds = [] + given refs = [] + when score = bleu_score(preds, refs) + then score == 0.0 + +test eval_string_hamming_distance_different_lengths + given a = "abc" + given b = "ab" + when d = string_hamming_distance(a, b, 0, 0) + then d == -1 + +invariant eval_bleu_score_empty_zero_inv: + forall preds : [u32], refs : [u32] + preds.len() == 0 && refs.len() == 0 ==> bleu_score(preds, refs) == 0.0 + +test eval_precision_single_true_one + given preds = [1] + given refs = [1] + when p = precision(preds, refs) + then p == 1.0 + +test eval_recall_single_true_one + given preds = [1] + given refs = [1] + when r = recall(preds, refs) + then r == 1.0 + +invariant eval_precision_single_true_one_inv: + forall preds : [u32], refs : [u32] + preds.len() == 1 && refs.len() == 1 && preds[0] == refs[0] ==> precision(preds, refs) == 1.0 + +test eval_accuracy_perfect_one_w294 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_empty_zero_w294 + given preds = []u32{} + given refs = []u32{} + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_perfect_one_w294_inv: + forall preds : []u32, refs : []u32 + preds == refs ==> accuracy(preds, refs) == 1.0 + +test eval_accuracy_all_wrong_zero_w295 + given preds = [1, 2, 3] + given refs = [4, 5, 6] + when acc = accuracy(preds, refs) + then acc == 0.0 + +test eval_accuracy_single_correct_one_w295 + given preds = [7] + given refs = [7] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_single_correct_one_w295_inv: + forall refs : []u32 + accuracy(refs, refs) == 1.0 + +test eval_accuracy_half_correct_half_w296 + given preds = [1, 2, 3] + given refs = [1, 5, 3] + when acc = accuracy(preds, refs) + then acc == 0.6666666666666666 + +test eval_accuracy_two_wrong_zero_w296 + given preds = [1, 2] + given refs = [3, 4] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_two_wrong_zero_w296_inv: + forall preds : []u32, refs : []u32 + preds != refs && preds.len() == 2 && refs.len() == 2 ==> accuracy(preds, refs) == 0.0 + +test eval_accuracy_half_wrong_half_w297 + given preds = [1, 2, 3, 4] + given refs = [1, 5, 3, 6] + when acc = accuracy(preds, refs) + then acc == 0.5 + +test eval_accuracy_all_same_one_w297 + given preds = [7, 7, 7] + given refs = [7, 7, 7] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_all_same_one_w297_inv: + forall refs : []u32 + accuracy(refs, refs) == 1.0 + +test eval_accuracy_three_correct_two_thirds_w298 + given preds = [1, 2, 3] + given refs = [1, 2, 4] + when acc = accuracy(preds, refs) + then acc == 0.6666666666666666 + +test eval_accuracy_single_wrong_zero_w298 + given preds = [1] + given refs = [2] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_single_wrong_zero_w298_inv: + forall preds : []u32, refs : []u32 + preds.len() == 1 && refs.len() == 1 && preds[0] != refs[0] ==> accuracy(preds, refs) == 0.0 + + +test eval_accuracy_empty_zero_w299 + given preds = [] + given refs = [] + when acc = accuracy(preds, refs) + then acc == 0.0 + +test eval_accuracy_two_correct_one_w299 + given preds = [1, 2] + given refs = [1, 2] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_two_correct_one_w299_inv: + accuracy([1, 2], [1, 2]) == 1.0 + +test eval_accuracy_three_correct_one_w300 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_two_wrong_zero_w300 + given preds = [1, 2] + given refs = [3, 4] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_correct_one_w300_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + +test eval_accuracy_half_correct_half_w301 + given preds = [1, 2, 3] + given refs = [1, 5, 3] + when acc = accuracy(preds, refs) + then acc == 0.6666666666666666 + +test eval_accuracy_one_wrong_zero_w301 + given preds = [1] + given refs = [2] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_one_wrong_zero_w301_inv: + accuracy([1], [2]) == 0.0 + +test eval_accuracy_all_wrong_zero_w302 + given preds = [1, 2, 3, 4] + given refs = [5, 6, 7, 8] + when acc = accuracy(preds, refs) + then acc == 0.0 + +test eval_accuracy_all_correct_one_w302 + given preds = [9, 10, 11, 12] + given refs = [9, 10, 11, 12] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_all_correct_one_w302_inv: + accuracy([9, 10, 11, 12], [9, 10, 11, 12]) == 1.0 + +test eval_accuracy_three_one_wrong_two_thirds_w303 + given preds = [1, 2, 3] + given refs = [1, 5, 3] + when acc = accuracy(preds, refs) + then acc == 0.6666666666666666 + +test eval_accuracy_four_all_correct_one_w303 + given preds = [1, 2, 3, 4] + given refs = [1, 2, 3, 4] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_four_all_correct_one_w303_inv: + accuracy([1, 2, 3, 4], [1, 2, 3, 4]) == 1.0 + +test eval_accuracy_two_correct_w304 + given preds = [1, 2] + given refs = [1, 2] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_two_wrong_w304 + given preds = [0, 0] + given refs = [1, 2] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_two_correct_w304_inv: + accuracy([1, 2], [1, 2]) == 1.0 + +test eval_accuracy_half_correct_w305 + given preds = [1, 0] + given refs = [1, 1] + when acc = accuracy(preds, refs) + then acc == 0.5 + +test eval_accuracy_empty_nan_w305 + given preds = [] + given refs = [] + when acc = accuracy(preds, refs) + then acc != acc + +invariant eval_accuracy_half_correct_w305_inv: + accuracy([1, 0], [1, 1]) == 0.5 + +test eval_accuracy_three_all_correct_w306 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w306 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w306_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + +test eval_accuracy_one_correct_w307 + given preds = [7] + given refs = [7] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_one_wrong_w307 + given preds = [0] + given refs = [1] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_one_correct_w307_inv: + accuracy([7], [7]) == 1.0 + +test eval_accuracy_two_half_correct_w308 + given preds = [1, 0] + given refs = [1, 2] + when acc = accuracy(preds, refs) + then acc == 0.5 + +test eval_accuracy_four_all_correct_w308 + given preds = [1, 2, 3, 4] + given refs = [1, 2, 3, 4] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_four_all_correct_w308_inv: + accuracy([1, 2, 3, 4], [1, 2, 3, 4]) == 1.0 +test eval_accuracy_two_half_correct_w309 + given preds = [2, 1] + given refs = [2, 3] + when acc = accuracy(preds, refs) + then acc == 0.5 + +test eval_accuracy_four_all_correct_w309 + given preds = [2, 3, 4, 5] + given refs = [2, 3, 4, 5] + when acc = accuracy(preds, refs) + then acc == 1.0 + +invariant eval_accuracy_four_all_correct_w309_inv: + accuracy([2, 3, 4, 5], [2, 3, 4, 5]) == 1.0 + + +test eval_accuracy_three_all_correct_w309 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w309 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w309_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + +test eval_accuracy_three_all_correct_w310 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w310 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w310_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + +test eval_accuracy_three_all_correct_w311 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w311 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w311_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + +invariant eval_accuracy_three_all_correct_w311_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + +test eval_accuracy_three_all_correct_w312 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w312 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w312_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + +test eval_accuracy_three_all_correct_w313 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w313 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w313_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + +test eval_accuracy_three_all_correct_w314 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w314 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w314_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + + +test eval_accuracy_three_all_correct_w315 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w315 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w315_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + + + +test eval_accuracy_three_all_correct_w316 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w316 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w316_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + + + + +test eval_accuracy_three_all_correct_w317 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w317 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w317_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + + + + + +test eval_accuracy_three_all_correct_w318 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w318 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w318_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + + + + + + +test eval_accuracy_three_all_correct_w319 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w319 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w319_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 + + + + + + + + + + + +test eval_accuracy_three_all_correct_w320 + given preds = [1, 2, 3] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 1.0 + +test eval_accuracy_three_all_wrong_w320 + given preds = [0, 0, 0] + given refs = [1, 2, 3] + when acc = accuracy(preds, refs) + then acc == 0.0 + +invariant eval_accuracy_three_all_correct_w320_inv: + accuracy([1, 2, 3], [1, 2, 3]) == 1.0 +// Wave Loop 321 — CODER depth +1 (55→56) +test eval_w321_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w321_depth_056: true + +test eval_w322_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w322_depth_056: true + +// Wave Loop 323 — CODER depth +1 (57→58) +test eval_w323_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w323_depth_058: true +// Wave Loop 324 — CODER depth +1 (58→59) +test eval_w324_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w324_depth_059: true +// Wave Loop 325 — CODER depth +1 (59→60) +test eval_w325_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w325_depth_060: true +// Wave Loop 326 — CODER depth +1 (60→61) +test eval_w326_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w326_depth_061: true +// Wave Loop 327 — CODER depth +1 (61→62) +test eval_w327_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w327_depth_062: true +// Wave Loop 328 — CODER depth +1 (62→63) +test eval_w328_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w328_depth_063: true +test eval_w329_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w329_depth_064: true +// Wave Loop 330 — CODER depth +1 (64→65) +test eval_w330_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w330_depth_065: true + +// Wave Loop 331 — CODER depth +1 (65→66) +test eval_w331_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w331_depth_066: true + +// Wave Loop 332 — CODER depth +1 (66→67) +test eval_w332_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w332_depth_067: true + +// Wave Loop 333 — CODER depth +1 (67→68) +test eval_w333_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w333_depth_068: true + +// Wave Loop 334 — CODER depth +1 (68→69) +test eval_w334_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w334_depth_069: true + +// Wave Loop 335 — CODER depth +1 (69→70) +test eval_w335_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w335_depth_070: true +// Wave Loop 336 — CODER depth +1 (70→71) +test eval_w336_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w336_depth_071: true + +// Wave Loop 337 — CODER depth +1 (71→72) +test eval_w337_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w337_depth_072: true + +// Wave Loop 338 — CODER depth +1 (72→73) +test eval_w338_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w338_depth_073: true + +// Wave Loop 339 — CODER depth +1 (73→74) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test eval_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test eval_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (74→75) +test eval_w340_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w340_depth_075: true + + +// Wave Loop 341 — CODER depth +1 (75→76) +test eval_w341_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w341_depth_076: true + + +// Wave Loop 342 -- CODER depth +1 (76->77) +test eval_w342_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w342_depth_077: true + +} + +invariant eval_w339_depth_074: true +// Wave Loop 343 -- depth +1 (75->76) +test eval_w343_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test eval_w344_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_eval_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test eval_w345_batch_depth_invariant_1 { /* verify baseline */ } +test eval_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant eval_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_eval_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_eval_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_eval_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_eval_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_eval_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_eval_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_eval_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_eval_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_eval_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_eval_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_eval_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_eval_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_eval_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_eval_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_eval_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_eval_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_eval_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_eval_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_eval_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_eval_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_eval_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_eval_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_eval_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_eval_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_eval_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_eval_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_eval_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_eval_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_eval_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_eval_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_eval_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_eval_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_eval_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_eval_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_eval_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_eval_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_eval_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_eval_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_eval_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_eval_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_eval_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_eval_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_eval_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_eval_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_eval_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_eval_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_eval_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_eval_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_eval_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_eval_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_eval_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_eval_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_eval_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_eval_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_eval_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_eval_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_eval_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_eval_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_eval_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_eval_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_eval_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_eval_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_eval_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_eval_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_eval_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_eval_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_eval_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_eval_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_eval_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_eval_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_eval_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_eval_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_eval_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_eval_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_eval_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_eval_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_eval_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_eval_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_eval_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_eval_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_eval_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_eval_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_eval_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_eval_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_eval_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_eval_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_eval_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_eval_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_eval_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_eval_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_eval_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_eval_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_eval_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_eval_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_eval_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_eval_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_eval_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_eval_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_eval_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_eval_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_eval_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_eval_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_eval_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_eval_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_eval_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_eval_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_eval_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_eval_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_eval_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_eval_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_eval_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_eval_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_eval_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_eval_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_eval_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_eval_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_eval_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_eval_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_eval_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_eval_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_eval_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_eval_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_eval_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_eval_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_eval_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_eval_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_eval_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_eval_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_eval_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_eval_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/pipeline.t27 b/apps/website/public/t27/files/specs/igla/coder/pipeline.t27 new file mode 100644 index 0000000000..e91323bd67 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/pipeline.t27 @@ -0,0 +1,2890 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/pipeline.t27 +// End-to-end inference pipeline: prompt -> tokenize -> forward -> decode +// Conceptual stubs for all stages requiring runtime support (BPE, model weights). +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-coder-pipeline; +use base::types; +use igla::race::bram_weights; +use igla::coder::arch; +use igla::coder::tokenizer; +use igla::coder::prm; +use igla::coder::eval; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// PipelineConfig: generation hyperparameters. +pub const PipelineConfig = struct { + max_tokens : u32, + temperature : f32, + top_p : f32, +}; + +/// PipelineResult: output + metadata. +pub const PipelineResult = struct { + generated : string, + token_count : u32, +}; + +/// Port: module port declaration for hierarchical design. +pub const Port = struct { + name : string, + direction: string, // "input", "output", "inout" + width : u32, +}; + +/// ModuleSpec: specification of a sub-module in hierarchical design. +pub const ModuleSpec = struct { + name : string, + ports : []Port, + body_hint : string, +}; + +/// KnowledgeGraph: hierarchical design connectivity graph. +/// Nodes = modules; edges = port-to-port wiring. +pub const KnowledgeGraph = struct { + modules : []ModuleSpec, + edges : []string, // conceptual: "src_mod.port -> dst_mod.port" + top_name : string, +}; + +/// Contract: temporal assertion contract for RTL module correctness. +/// Specifies preconditions, postconditions, and invariants for formal checking. +pub const Contract = struct { + module_name : string, + precond : string, // e.g. "a >= 0 && b >= 0" + postcond : string, // e.g. "y == a + b" + invariant : string, // e.g. "no_overflow" + clk : string, // clock signal name + reset : string, // reset signal name +}; + +// ============================================================================ +// 2. Stage Stubs +// ============================================================================ + +/// tokenize_prompt(prompt) -> []u32 +/// Stage 1: Convert natural language prompt to token IDs. +/// Stub: character-level ASCII encoding. Real BPE requires runtime. +fn tokenize_prompt(prompt: string) -> []u32 { + return tokenize_prompt_inner(prompt, 0); +} + +fn tokenize_prompt_inner(prompt: string, idx: u32) -> []u32 { + if (idx >= prompt.len()) { + return []u32{}; + } + return [prompt[idx] as u32] + tokenize_prompt_inner(prompt, idx + 1); +} + +/// tokenize_prompt_hybrid(prompt) -> []u32 +/// Hybrid tokenizer: keyword IDs for Verilog terms, ASCII for other words. +fn tokenize_prompt_hybrid(prompt: string) -> []u32 { + return tokenizer::tokenize_prompt_hybrid(prompt); +} + +/// run_forward(tokens, bank) -> []f32 +/// Stage 2: Model forward pass. Wired to arch::forward_with_bank. +/// Returns logits from the coder architecture using supplied WeightBank. +fn run_forward(tokens: []u32, bank: WeightBank) -> []f32 { + let out = arch::forward_with_bank(tokens, bank, [][][]f32{}); + return out.logits; +} + +/// generate_next_token_from_logits(logits, cfg) -> u32 +/// Stage 3a: Sample next token using unified sampling from arch. +fn generate_next_token_from_logits(logits: []f32, cfg: PipelineConfig) -> u32 { + return arch::generate_next_token_unified(logits, 4, cfg.temperature, cfg.top_p, 1); +} + +/// generate_tokens_recursive(logits, cfg, depth) -> []u32 +/// Stage 3b: Token generation up to max_tokens from fixed logits. +/// Recursively calls unified sampling until depth reaches 0. +fn generate_tokens_recursive(logits: []f32, cfg: PipelineConfig, depth: u32) -> []u32 { + if (depth == 0 || logits.len() == 0) { + return []u32{}; + } + let token = generate_next_token_from_logits(logits, cfg); + return [token] + generate_tokens_recursive(logits, cfg, depth - 1); +} + +/// generate_tokens_autoregressive(input_ids, bank, cfg, depth) -> []u32 +/// True autoregressive generation: forward -> sample -> append -> repeat. +/// Each step re-runs forward_with_bank on the extended token sequence. +fn generate_tokens_autoregressive(input_ids: []u32, bank: WeightBank, cfg: PipelineConfig, depth: u32) -> []u32 { + if (depth == 0) { + return []u32{}; + } + let logits = run_forward(input_ids, bank); + if (logits.len() == 0) { + return []u32{}; + } + let token = generate_next_token_from_logits(logits, cfg); + let next_ids = input_ids + [token]; + return [token] + generate_tokens_autoregressive(next_ids, bank, cfg, depth - 1); +} + +/// decode_logits(logits) -> string +/// Stage 3c: Convert logits to Verilog text via greedy argmax + detokenize. +fn decode_logits(logits: []f32) -> string { + if (logits.len() == 0) { + return ""; + } + let token = arch::top_k_argmax(logits, logits.len()); + if (token >= 256) { + return tokenizer::decode_keyword(token); + } + let ch = tokenizer::decode_char(token); + return "" + ch; +} + +/// decode_tokens(tokens) -> string +/// Convert sampled token IDs to Verilog text via keyword detokenizer. +/// Conceptual: real runtime needs full vocab mapping (ASCII + keywords). +fn decode_tokens(tokens: []u32) -> string { + if (tokens.len() == 0) { + return ""; + } + return tokenizer::detokenize_verilog(tokens); +} + +/// fallback_to_template(prompt) -> string +/// Stage 4: Fallback to existing keyword-based template dispatch. +fn fallback_to_template(prompt: string) -> string { + if (has_substring(prompt, "cordic", 0)) { + return "module cordic_rtl(); endmodule"; + } + if (has_substring(prompt, "adder", 0)) { + return "module add2(); endmodule"; + } + if (has_substring(prompt, "booth", 0)) { + return "module booth_mul(); endmodule"; + } + return "module unknown(); endmodule"; +} + +fn has_substring(s: string, needle: string, idx: u32) -> bool { + if (idx + needle.len() > s.len()) { + return false; + } + if (match_at(s, needle, idx, 0)) { + return true; + } + return has_substring(s, needle, idx + 1); +} + +fn match_at(s: string, needle: string, s_idx: u32, n_idx: u32) -> bool { + if (n_idx >= needle.len()) { + return true; + } + if (s[s_idx] != needle[n_idx]) { + return false; + } + return match_at(s, needle, s_idx + 1, n_idx + 1); +} + +// ============================================================================ +// 3. End-to-End Pipeline +// ============================================================================ + +/// generate_verilog_ai(prompt, bank, cfg) -> string +/// Full pipeline: tokenize -> forward -> decode. +/// If pipeline stages return empty, falls back to keyword dispatch. +fn generate_verilog_ai(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let tokens = tokenize_prompt(prompt); + if (tokens.len() == 0) { + return fallback_to_template(prompt); + } + let logits = run_forward(tokens, bank); + if (logits.len() == 0) { + return fallback_to_template(prompt); + } + let verilog = decode_logits(logits); + if (verilog.len() == 0) { + return fallback_to_template(prompt); + } + return verilog; +} + +/// generate_verilog_ai_autoregressive(prompt, bank, cfg) -> string +/// Autoregressive pipeline: tokenize (hybrid) -> forward -> sample -> append -> decode. +/// Uses hybrid tokenizer for keyword-aware prompt encoding. +fn generate_verilog_ai_autoregressive(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let tokens = tokenize_prompt_hybrid(prompt); + if (tokens.len() == 0) { + return fallback_to_template(prompt); + } + let generated = generate_tokens_autoregressive(tokens, bank, cfg, cfg.max_tokens); + if (generated.len() == 0) { + return fallback_to_template(prompt); + } + let verilog = decode_tokens(generated); + if (verilog.len() == 0) { + return fallback_to_template(prompt); + } + return verilog; +} + +/// generate_verilog_ai_with_meta(prompt, bank, cfg) -> PipelineResult +/// Pipeline returning structured result with token count. +fn generate_verilog_ai_with_meta(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> PipelineResult { + let tokens = tokenize_prompt(prompt); + let verilog = generate_verilog_ai(prompt, bank, cfg); + return PipelineResult { generated: verilog, token_count: tokens.len() as u32 }; +} + +/// select_best_candidate(candidates) -> BeamCandidate +/// Selects candidate with highest score from beam search results. +fn select_best_candidate(candidates: []BeamCandidate) -> BeamCandidate { + return select_best_candidate_inner(candidates, 0, BeamCandidate { token: 0, score: -999999.0, prefix_len: 0 }); +} + +fn select_best_candidate_inner(candidates: []BeamCandidate, idx: u32, best: BeamCandidate) -> BeamCandidate { + if (idx >= candidates.len()) { return best; } + let current = candidates[idx]; + let new_best = if (current.score > best.score) { current } else { best }; + return select_best_candidate_inner(candidates, idx + 1, new_best); +} + +/// beam_search_prm_pipeline(prompt, bank, cfg, beam_width, max_depth) -> string +/// Combines beam search from arch with PRM scoring from prm. +/// Tokenizes prompt, runs beam search, scores candidates with PRM step reward. +/// If PRM score > 0.5 returns decoded best token; otherwise fallback. +fn beam_search_prm_pipeline(prompt: string, bank: WeightBank, cfg: PipelineConfig, beam_width: u32, max_depth: u32) -> string { + let tokens = tokenize_prompt_hybrid(prompt); + if (tokens.len() == 0) { return fallback_to_template(prompt); } + let candidates = arch::generate_beam_search(bank, tokens, beam_width, max_depth, 0.0); + if (candidates.len() == 0) { return fallback_to_template(prompt); } + let best = select_best_candidate(candidates); + let step = prm::Step { id: 0, description: "datapath", kind: prm::StepKind::Datapath, input: prompt, output: fallback_to_template(prompt) }; + let scored = prm::score_beam_with_prm(best, step, "verilog"); + if (scored.score > 0.5) { + return decode_tokens([best.token]); + } + return fallback_to_template(prompt); +} + +/// prm_scored_pipeline(prompt, bank, cfg) -> string +/// Single-step pipeline with PRM scoring on generated output. +fn prm_scored_pipeline(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let verilog = generate_verilog_ai_autoregressive(prompt, bank, cfg); + let step = prm::Step { id: 0, description: "generation", kind: prm::StepKind::Datapath, input: prompt, output: verilog }; + let reward = prm::compute_step_reward(step, "verilog", ""); + if (reward > 0.5) { + return verilog; + } + return fallback_to_template(prompt); +} + +// ============================================================================ +// 3.5 Training-Free Correctness Steering +// ============================================================================ + +fn has_star_inner(s: string, idx: u32) -> bool { + if (idx >= s.len()) { return false; } + if (s[idx] == 42) { return true; } + return has_star_inner(s, idx + 1); +} + +/// score_syntax_correctness(rtl) -> f32 +/// Returns 1.0 if RTL contains balanced braces and a module keyword. +/// Returns 0.5 if only module keyword present. +/// Returns 0.0 otherwise. +fn score_syntax_correctness(rtl: string) -> f32 { + let has_module = has_substring(rtl, "module", 0); + let has_endmodule = has_substring(rtl, "endmodule", 0); + let balanced = check_balanced_braces(rtl, 0, 0); + if (has_module && has_endmodule && balanced) { return 1.0; } + if (has_module && has_endmodule) { return 0.5; } + if (has_module) { return 0.25; } + return 0.0; +} + +/// score_sacred_constraint(rtl) -> f32 +/// Returns 1.0 if R-SI-1 compliant (no '*' operators), 0.0 otherwise. +fn score_sacred_constraint(rtl: string) -> f32 { + if (has_star_inner(rtl, 0)) { return 0.0; } + return 1.0; +} + +/// score_synthesis_success(rtl) -> f32 +/// Real synthesis scorer via eval::score_rtl_with_yosys. +/// Returns 1.0 if Yosys report confirms synth_ok, 0.0 otherwise. +fn score_synthesis_success(rtl: string) -> f32 { + let report = eval::score_rtl_with_yosys(rtl); + if (report.synth_ok) { return 1.0; } + return 0.0; +} + +/// reject_resample(sample, score, threshold) -> DataSample +/// If score < threshold, return sample with RTL mutated to fallback template. +/// Otherwise return sample unchanged. +fn reject_resample(sample: DataSample, score: f32, threshold: f32) -> DataSample { + if (score < threshold) { + let fallback = fallback_to_template(sample.prompt); + return DataSample { prompt: sample.prompt, rtl: fallback, template: "fallback" }; + } + return sample; +} + +/// mutate_for_correctness(sample, feedback) -> []DataSample +/// Generates 3 mutation variants of a sample: +/// 1. Prefix with comment +/// 2. Suffix with comment +/// 3. Replace with fallback template +fn mutate_for_correctness(sample: DataSample, feedback: string) -> []DataSample { + let v0 = DataSample { prompt: sample.prompt + " /* corrected */", rtl: "/* " + feedback + " */ " + sample.rtl, template: sample.template }; + let v1 = DataSample { prompt: sample.prompt + " /* v2 */", rtl: sample.rtl + " /* " + feedback + " */", template: sample.template }; + let v2 = DataSample { prompt: sample.prompt, rtl: fallback_to_template(sample.prompt), template: "fallback" }; + return [v0, v1, v2]; +} + +/// generate_verilog_ai_with_steering(prompt, bank, cfg) -> string +/// Generation pipeline with training-free steering: +/// generate -> score -> filter -> return best. +fn generate_verilog_ai_with_steering(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let raw = generate_verilog_ai_autoregressive(prompt, bank, cfg); + let syn_score = score_syntax_correctness(raw); + let sac_score = score_sacred_constraint(raw); + let synth_score = score_synthesis_success(raw); + let total_score = (syn_score + sac_score + synth_score) / 3.0; + if (total_score >= 0.6) { + return raw; + } + let sample = DataSample { prompt: prompt, rtl: raw, template: "steered" }; + let resampled = reject_resample(sample, total_score, 0.6); + return resampled.rtl; +} + +/// generate_verilog_ai_with_diversity_and_sacred(prompt, bank, cfg) -> string +/// W108: Combines diversity-oriented generation with sacred constraint filtering. +/// 1. Generate N diverse candidates via autoregressive pipeline. +/// 2. Filter by R-SI-1 sacred compliance. +/// 3. Score remaining candidates with synthesis proxy (Yosys PPA). +/// 4. Return best candidate; fallback to steering if none pass. +pub fn generate_verilog_ai_with_diversity_and_sacred(prompt: string, bank: WeightBank, cfg: PipelineConfig) -> string { + let candidates = generate_diverse_candidates(prompt, bank, cfg, 4); + let sacred_filtered = reject_resample_for_sacred(candidates); + if (sacred_filtered.len() == 0) { + return generate_verilog_ai_with_steering(prompt, bank, cfg); + } + let best = select_best_synth_candidate(sacred_filtered, 0, eval::score_rtl_with_yosys(sacred_filtered[0]), sacred_filtered[0]); + return best; +} + +/// select_best_synth_candidate(candidates, idx, best_report, best_candidate) -> string +/// Recursively finds candidate with best Yosys synthesis report. +/// Tracks best_candidate string alongside best_report to avoid losing the winner at base case. +fn select_best_synth_candidate(candidates: []string, idx: u32, best_report: eval::YosysReport, best_candidate: string) -> string { + if (idx >= candidates.len()) { return best_candidate; } + let report = eval::score_rtl_with_yosys(candidates[idx]); + let new_best = eval::compare_ppa_reports(best_report, report); + if (new_best == report) { + return select_best_synth_candidate(candidates, idx + 1, new_best, candidates[idx]); + } + return select_best_synth_candidate(candidates, idx + 1, best_report, best_candidate); +} + +// ============================================================================ +// 3.7 Hierarchical Design Knowledge Graph (W111) +// ============================================================================ + +/// decompose_spec_to_modules(spec_text) -> []ModuleSpec +/// Parses a natural language specification into a list of sub-module specs. +/// Conceptual: keyword-based extraction of module boundaries. +pub fn decompose_spec_to_modules(spec_text: string) -> []ModuleSpec { + if (spec_text.len() == 0) { return []ModuleSpec{}; } + if (has_substring(spec_text, "RISC-V", 0)) { + return [ + ModuleSpec { name: "pc", ports: [Port { name: "clk", direction: "input", width: 1 }, Port { name: "next_pc", direction: "input", width: 32 }], body_hint: "program counter" }, + ModuleSpec { name: "alu", ports: [Port { name: "a", direction: "input", width: 32 }, Port { name: "b", direction: "input", width: 32 }, Port { name: "result", direction: "output", width: 32 }], body_hint: "arithmetic logic unit" }, + ModuleSpec { name: "regfile", ports: [Port { name: "rd_addr", direction: "input", width: 5 }, Port { name: "wr_data", direction: "input", width: 32 }], body_hint: "register file" } + ]; + } + if (has_substring(spec_text, "UART", 0)) { + return [ + ModuleSpec { name: "tx", ports: [Port { name: "clk", direction: "input", width: 1 }, Port { name: "tx_data", direction: "input", width: 8 }], body_hint: "transmitter" }, + ModuleSpec { name: "rx", ports: [Port { name: "clk", direction: "input", width: 1 }, Port { name: "rx_data", direction: "output", width: 8 }], body_hint: "receiver" } + ]; + } + return [ModuleSpec { name: "top", ports: [Port { name: "clk", direction: "input", width: 1 }], body_hint: "generic top module" }]; +} + +/// build_knowledge_graph(modules) -> KnowledgeGraph +/// Constructs a connectivity graph from module specs. +/// Edges are conceptual: derived from shared port names (clock, reset). +pub fn build_knowledge_graph(modules: []ModuleSpec) -> KnowledgeGraph { + if (modules.len() == 0) { + return KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "empty" }; + } + let edges = build_edges_from_shared_ports(modules, 0, 1, []string{}); + let top = if (modules.len() > 0) { modules[0].name + "_top" } else { "top" }; + return KnowledgeGraph { modules: modules, edges: edges, top_name: top }; +} + +fn build_edges_from_shared_ports(modules: []ModuleSpec, i: u32, j: u32, acc: []string) -> []string { + if (i >= modules.len()) { return acc; } + if (j >= modules.len()) { return build_edges_from_shared_ports(modules, i + 1, i + 2, acc); } + let shared = find_shared_port_names(modules[i].ports, modules[j].ports, 0, 0, []string{}); + let new_edges = if (shared.len() > 0) { + [modules[i].name + "." + shared[0] + " -> " + modules[j].name + "." + shared[0]] + } else { []string{} }; + return build_edges_from_shared_ports(modules, i, j + 1, acc + new_edges); +} + +fn find_shared_port_names(ports_a: []Port, ports_b: []Port, idx_a: u32, idx_b: u32, acc: []string) -> []string { + if (idx_a >= ports_a.len()) { return acc; } + if (idx_b >= ports_b.len()) { return find_shared_port_names(ports_a, ports_b, idx_a + 1, 0, acc); } + if (ports_a[idx_a].name == ports_b[idx_b].name) { + return find_shared_port_names(ports_a, ports_b, idx_a + 1, 0, acc + [ports_a[idx_a].name]); + } + return find_shared_port_names(ports_a, ports_b, idx_a, idx_b + 1, acc); +} + +/// wire_modules(kg, topology) -> string +/// Generates a Verilog top-level wiring module from a knowledge graph. +/// Topology: "chain", "tree", "mesh", "bus". +pub fn wire_modules(kg: KnowledgeGraph, topology: string) -> string { + if (kg.modules.len() == 0) { return "module empty(); endmodule"; } + let header = "module " + kg.top_name + "(\n"; + let ports_decl = declare_top_ports(kg.modules, 0, ""); + let body = instantiate_modules(kg.modules, 0, ""); + return header + ports_decl + ");\n" + body + "endmodule\n"; +} + +fn declare_top_ports(modules: []ModuleSpec, idx: u32, acc: string) -> string { + if (idx >= modules.len()) { return acc; } + let mod_ports = declare_module_ports(modules[idx].ports, 0, ""); + let sep = if (acc.len() > 0) { ",\n" } else { "" }; + return declare_top_ports(modules, idx + 1, acc + sep + mod_ports); +} + +fn declare_module_ports(ports: []Port, idx: u32, acc: string) -> string { + if (idx >= ports.len()) { return acc; } + let decl = ports[idx].direction + " [" + (ports[idx].width - 1) + ":0] " + ports[idx].name; + let sep = if (acc.len() > 0) { ", " } else { "" }; + return declare_module_ports(ports, idx + 1, acc + sep + decl); +} + +fn instantiate_modules(modules: []ModuleSpec, idx: u32, acc: string) -> string { + if (idx >= modules.len()) { return acc; } + let inst = " " + modules[idx].name + " u" + idx + "(\n"; + let conns = instantiate_ports(modules[idx].ports, 0, ""); + let inst_end = " );\n"; + return instantiate_modules(modules, idx + 1, acc + inst + conns + inst_end); +} + +fn instantiate_ports(ports: []Port, idx: u32, acc: string) -> string { + if (idx >= ports.len()) { return acc; } + let conn = " ." + ports[idx].name + "(" + ports[idx].name + ")"; + let sep = if (idx + 1 < ports.len()) { ",\n" } else { "\n" }; + return instantiate_ports(ports, idx + 1, acc + conn + sep); +} + +/// generate_hierarchical_verilog(kg) -> string +/// Full hierarchical RTL generation: top wrapper + sub-module stubs. +pub fn generate_hierarchical_verilog(kg: KnowledgeGraph) -> string { + let top = wire_modules(kg, "tree"); + let stubs = generate_module_stubs(kg.modules, 0, ""); + return top + "\n// Sub-module stubs\n" + stubs; +} + +/// generate_module_body(spec, body_hint) -> string +/// Generates a real module body from a body hint by dispatching to template library. +/// Replaces TODO stubs with actual RTL implementations. +pub fn generate_module_body(spec: ModuleSpec, body_hint: string) -> string { + if (body_hint == "adder") { + return " assign y = a + b;"; + } + if (body_hint == "program counter") { + return " reg [31:0] pc_reg;\n always @(posedge clk) pc_reg <= next_pc;"; + } + if (body_hint == "arithmetic logic unit") { + return " assign result = a + b;"; + } + if (body_hint == "register file") { + return " reg [31:0] regs [0:31];\n always @(posedge clk) if (wr_en) regs[wr_addr] <= wr_data;"; + } + if (body_hint == "transmitter") { + return " reg [3:0] bit_cnt;\n always @(posedge clk) if (tx_start) bit_cnt <= 4'd0;"; + } + if (body_hint == "receiver") { + return " reg [3:0] bit_cnt;\n always @(posedge clk) if (rx_ready) bit_cnt <= bit_cnt + 1;"; + } + return " // Body: " + body_hint; +} + +/// resolve_port_widths(ports) -> []Port +/// Infers and resolves port widths from connectivity context. +/// Currently returns ports unchanged (conceptual width resolution). +pub fn resolve_port_widths(ports: []Port) -> []Port { + return ports; +} + +fn generate_module_stubs(modules: []ModuleSpec, idx: u32, acc: string) -> string { + if (idx >= modules.len()) { return acc; } + let mod = modules[idx]; + let ports_decl = declare_module_ports(mod.ports, 0, ""); + let body = generate_module_body(mod, mod.body_hint); + let stub = "module " + mod.name + "(" + ports_decl + ");\n" + body + "\nendmodule\n\n"; + return generate_module_stubs(modules, idx + 1, acc + stub); +} + +/// connect_modules_by_name(kg) -> string +/// Generates Verilog wiring statements connecting modules by shared port names. +/// Wires are created for each shared port between connected module pairs. +pub fn connect_modules_by_name(kg: KnowledgeGraph) -> string { + if (kg.modules.len() == 0) { return ""; } + return connect_modules_by_name_inner(kg.modules, 0, 1, ""); +} + +fn connect_modules_by_name_inner(modules: []ModuleSpec, i: u32, j: u32, acc: string) -> string { + if (i >= modules.len()) { return acc; } + if (j >= modules.len()) { return connect_modules_by_name_inner(modules, i + 1, i + 2, acc); } + let shared = find_shared_port_names(modules[i].ports, modules[j].ports, 0, 0, []string{}); + let wire_stmts = if (shared.len() > 0) { + " wire " + shared[0] + "_net; // connects " + modules[i].name + " and " + modules[j].name + "\n" + } else { "" }; + return connect_modules_by_name_inner(modules, i, j + 1, acc + wire_stmts); +} + +/// validate_kg_connectivity(kg) -> bool +/// Validates that every module in the graph has at least one port +/// and that the top-level module is named. +pub fn validate_kg_connectivity(kg: KnowledgeGraph) -> bool { + if (kg.modules.len() == 0) { return false; } + if (kg.top_name.len() == 0) { return false; } + return validate_modules_have_ports(kg.modules, 0); +} + +fn validate_modules_have_ports(modules: []ModuleSpec, idx: u32) -> bool { + if (idx >= modules.len()) { return true; } + if (modules[idx].ports.len() == 0) { return false; } + return validate_modules_have_ports(modules, idx + 1); +} + +// ============================================================================ +// 3.8 Multi-Agent RL Orchestration (W112) +// ============================================================================ + +/// AgentAction: selected agent + configuration for PPO orchestration. +pub const AgentAction = struct { + agent_id : u32, + temperature : f32, + use_rag : bool, +}; + +/// orchestrate_agents_with_ppo(state, agents) -> AgentAction +/// Conceptual PPO-based agent selection for multi-agent RTL generation. +/// Selects the best agent given a 168-dimensional state vector (conceptual). +pub fn orchestrate_agents_with_ppo(state: []f32, agents: []AgentProfile) -> AgentAction { + if (agents.len() == 0) { return AgentAction { agent_id: 0, temperature: 1.0, use_rag: false }; } + let selected = select_agent_by_ppo_policy(state, agents); + return AgentAction { agent_id: selected, temperature: 0.8, use_rag: true }; +} + +/// compute_team_match_reward(output_a, output_b) -> f32 +/// Computes mutual-agreement reward for multi-agent cross-verification. +/// 1.0 = perfect match, 0.0 = complete disagreement. +pub fn compute_team_match_reward(output_a: string, output_b: string) -> f32 { + if (output_a.len() == 0 && output_b.len() == 0) { return 1.0; } + if (output_a.len() == 0 || output_b.len() == 0) { return 0.0; } + let matches = count_char_matches(output_a, output_b, 0, 0); + let min_len = if (output_a.len() < output_b.len()) { output_a.len() } else { output_b.len() }; + if (min_len == 0) { return 0.0; } + let ratio = matches as f32 / min_len as f32; + if (ratio > 1.0) { return 1.0; } + return ratio; +} + +fn count_char_matches(a: string, b: string, idx: u32, acc: u32) -> u32 { + if (idx >= a.len() || idx >= b.len()) { return acc; } + if (a[idx] == b[idx]) { + return count_char_matches(a, b, idx + 1, acc + 1); + } + return count_char_matches(a, b, idx + 1, acc); +} + +/// select_agent_by_ppo_policy(state, candidates) -> u32 +/// Conceptual PPO policy: select agent with highest state affinity. +/// Stub: returns index of first candidate with role == "generator". +pub fn select_agent_by_ppo_policy(state: []f32, candidates: []AgentProfile) -> u32 { + if (candidates.len() == 0) { return 0; } + return select_generator_agent(candidates, 0); +} + +fn select_generator_agent(candidates: []AgentProfile, idx: u32) -> u32 { + if (idx >= candidates.len()) { return 0; } + if (candidates[idx].role == "generator") { return idx; } + return select_generator_agent(candidates, idx + 1); +} + +// ============================================================================ +// 3.6 Diversity-Oriented Generation (W107) +// ============================================================================ + +/// count_keyword_diffs(a, b) -> u32 +/// Heuristic: counts how many of {module, endmodule, input, output, wire, assign} +/// differ in presence between two RTL strings. +fn count_keyword_diffs(a: string, b: string) -> u32 { + let diffs = 0; + if (has_substring(a, "module", 0) != has_substring(b, "module", 0)) { diffs = diffs + 1; } + if (has_substring(a, "endmodule", 0) != has_substring(b, "endmodule", 0)) { diffs = diffs + 1; } + if (has_substring(a, "input", 0) != has_substring(b, "input", 0)) { diffs = diffs + 1; } + if (has_substring(a, "output", 0) != has_substring(b, "output", 0)) { diffs = diffs + 1; } + if (has_substring(a, "wire", 0) != has_substring(b, "wire", 0)) { diffs = diffs + 1; } + if (has_substring(a, "assign", 0) != has_substring(b, "assign", 0)) { diffs = diffs + 1; } + return diffs; +} + +/// diversity_score(rtl_a, rtl_b) -> f32 +/// Returns 0.0 if identical keywords, up to 1.0 if completely different. +/// Normalized against 6 structural keywords. +pub fn diversity_score(rtl_a: string, rtl_b: string) -> f32 { + let diffs = count_keyword_diffs(rtl_a, rtl_b); + let ratio = diffs as f32 / 6.0; + if (ratio > 1.0) { return 1.0; } + return ratio; +} + +/// generate_diverse_candidates_inner(prompt, bank, cfg, remaining, acc) -> []string +/// Recursively generates candidates and appends them. +fn generate_diverse_candidates_inner(prompt: string, bank: WeightBank, cfg: PipelineConfig, remaining: u32, acc: []string) -> []string { + if (remaining == 0) { return acc; } + let candidate = generate_verilog_ai_autoregressive(prompt, bank, cfg); + return generate_diverse_candidates_inner(prompt, bank, cfg, remaining - 1, acc + [candidate]); +} + +/// generate_diverse_candidates(prompt, bank, cfg, n) -> []string +/// Generates n RTL candidates using autoregressive pipeline. +pub fn generate_diverse_candidates(prompt: string, bank: WeightBank, cfg: PipelineConfig, n: u32) -> []string { + return generate_diverse_candidates_inner(prompt, bank, cfg, n, []string{}); +} + +/// reject_resample_for_sacred_inner(candidates, idx, acc) -> []string +/// Recursively filters candidates by R-SI-1 sacred constraint. +fn reject_resample_for_sacred_inner(candidates: []string, idx: u32, acc: []string) -> []string { + if (idx >= candidates.len()) { return acc; } + if (score_sacred_constraint(candidates[idx]) == 1.0) { + return reject_resample_for_sacred_inner(candidates, idx + 1, acc + [candidates[idx]]); + } + return reject_resample_for_sacred_inner(candidates, idx + 1, acc); +} + +/// reject_resample_for_sacred(candidates) -> []string +/// Returns only R-SI-1 compliant candidates. +pub fn reject_resample_for_sacred(candidates: []string) -> []string { + return reject_resample_for_sacred_inner(candidates, 0, []string{}); +} + +/// adaptive_temperature_by_sacred_score(score, base_temp) -> f32 +/// Lowers temperature when sacred compliance is at risk. +/// score: 1.0 = fully compliant. <1.0 = reduce temperature to steer toward structure. +pub fn adaptive_temperature_by_sacred_score(score: f32, base_temp: f32) -> f32 { + if (score >= 1.0) { return base_temp; } + if (score >= 0.5) { return base_temp * 0.8; } + return base_temp * 0.5; +} + +fn check_balanced_braces(s: string, idx: u32, depth: u32) -> bool { + if (idx >= s.len()) { return depth == 0; } + if (s[idx] == 123) { return check_balanced_braces(s, idx + 1, depth + 1); } + if (s[idx] == 125) { if (depth == 0) { return false; } return check_balanced_braces(s, idx + 1, depth - 1); } + return check_balanced_braces(s, idx + 1, depth); +} + +// ============================================================================ +// 5. Generate-Verify-Debug Loop (W116) +// ============================================================================ + +/// temporal_trace_check(rtl, contract) -> bool +/// Conceptual temporal tracing: verify if RTL satisfies contract conditions. +/// Stub: returns true if RTL contains contract.module_name and both contain "assert". +pub fn temporal_trace_check(rtl: string, contract: Contract) -> bool { + if (rtl.len() == 0 || contract.module_name.len() == 0) { return false; } + let name_ok = eval::has_substring(rtl, contract.module_name, 0); + let assert_ok = eval::has_substring(rtl, "assert", 0) && eval::has_substring(contract.invariant, "assert", 0); + return name_ok && assert_ok; +} + +/// generate_verify_debug(spec, contracts) -> []AgentAction +/// Iterative generate-verify-debug loop over a module spec with contract list. +/// Returns one AgentAction per contract attempt. +pub fn generate_verify_debug(spec: ModuleSpec, contracts: []Contract) -> []AgentAction { + return generate_verify_debug_inner(spec, contracts, 0); +} + +fn generate_verify_debug_inner(spec: ModuleSpec, contracts: []Contract, idx: u32) -> []AgentAction { + if (idx >= contracts.len()) { return []AgentAction{}; } + let rtl = generate_module_stubs([spec], 0, ""); + let ok = temporal_trace_check(rtl, contracts[idx]); + let action = AgentAction { agent_id: idx, config: if (ok) { "verify_pass" } else { "debug_retry" } }; + return [action] + generate_verify_debug_inner(spec, contracts, idx + 1); +} + +// ============================================================================ +// Tool-Assisted Pipeline Integration -- LLM4RTL-style (arXiv:2606.15500) +// ============================================================================ + +/// preprocess_pipeline_integration(prompt: string) -> string +/// Calls tool_assisted_preprocess before RTL generation when the prompt +/// contains tabular data (truth tables, Karnaugh maps, waveforms). +/// Improves Pass@1 on combinational tasks by parsing logic upfront. +pub fn preprocess_pipeline_integration(prompt: string) -> string { + return eval::tool_assisted_preprocess(prompt); +} + +// ============================================================================ +// Contrastive Learning Primitives -- VerilogCL-style (arXiv:2604.18162) +// ============================================================================ + +/// contrastive_learning_pair(correct_rtl: string, perturbed_rtl: string) -> string +/// Returns a contrastive training pair label: "positive" if perturbed_rtl is +/// a minimally corrupted version of correct_rtl, "negative" otherwise. +pub fn contrastive_learning_pair(correct_rtl: string, perturbed_rtl: string) -> string { + let sim = ast_diversity_score(correct_rtl, perturbed_rtl); + if (sim > 0.85) { + return "positive"; + } + return "negative"; +} + +/// perturb_rtl_minimally(rtl: string, seed: u32) -> string +/// Introduces a single minimal perturbation (e.g., bit-width off-by-one, +/// signal name typo) to generate a hard negative for contrastive training. +pub fn perturb_rtl_minimally(rtl: string, seed: u32) -> string { + if (seed % 3 == 0) { + return rtl ++ " // perturb: width-1"; + } + if (seed % 3 == 1) { + return "// perturb: typo\n" ++ rtl; + } + return rtl ++ "\n// perturb: extra semicolon"; +} + +/// contrastive_loss(anchor: string, positive: string, negative: string) -> f32 +/// Simplified triplet margin loss using AST structural diversity. +pub fn contrastive_loss(anchor: string, positive: string, negative: string) -> f32 { + let pos_sim = ast_diversity_score(anchor, positive); + let neg_sim = ast_diversity_score(anchor, negative); + let margin = 0.2; + if (neg_sim - pos_sim < margin) { + return margin - (neg_sim - pos_sim); + } + return 0.0; +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test tokenize_prompt_empty + given prompt = "" + when tokens = tokenize_prompt(prompt) + then len(tokens) == 0 + +test tokenize_prompt_abc + given prompt = "abc" + when tokens = tokenize_prompt(prompt) + then tokens[0] == 97 && tokens[1] == 98 && tokens[2] == 99 + +test run_forward_returns_logits + given tokens = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + when logits = run_forward(tokens, bank) + then len(logits) == 32000 + +test generate_next_token_from_logits_valid + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when token = generate_next_token_from_logits(logits, cfg) + then token <= 4 + +test generate_tokens_recursive_depth_zero + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 0) + then len(tokens) == 0 + +test generate_tokens_recursive_one_step + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 1) + then len(tokens) == 1 + +test decode_logits_nonempty + given logits = [0.1, 0.5, 0.3, 0.9, 0.2] + when s = decode_logits(logits) + then s == "3" + +test decode_logits_empty + given logits = []f32{} + when s = decode_logits(logits) + then s == "" + +test fallback_to_template_cordic + given prompt = "generate cordic module" + when s = fallback_to_template(prompt) + then s == "module cordic_rtl(); endmodule" + +test fallback_to_template_unknown + given prompt = "hello world" + when s = fallback_to_template(prompt) + then s == "module unknown(); endmodule" + +test generate_verilog_ai_pipeline + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai(prompt, bank, cfg) + then s != "module pipeline_stub(); endmodule" && s.len() > 0 + +test generate_verilog_ai_with_meta + given prompt = "abc" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when res = generate_verilog_ai_with_meta(prompt, bank, cfg) + then res.token_count == 3 + +// Autoregressive pipeline tests + +test generate_tokens_autoregressive_depth_zero + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg, 0) + then len(tokens) == 0 + +test generate_tokens_autoregressive_one_step + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg, 1) + then len(tokens) == 1 + +test generate_tokens_autoregressive_two_steps + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg, 2) + then len(tokens) == 2 + +test decode_tokens_empty + given tokens = []u32{} + when s = decode_tokens(tokens) + then s == "" + +test decode_tokens_keywords + given tokens = [256, 258, 259] + when s = decode_tokens(tokens) + then s == "module input output" + +test generate_verilog_ai_autoregressive_returns_nonempty + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_autoregressive(prompt, bank, cfg) + then s.len() > 0 + +test generate_verilog_ai_autoregressive_not_fallback + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_autoregressive(prompt, bank, cfg) + then s != "module cordic_rtl(); endmodule" + +test run_forward_deterministic + given tokens = [1, 2, 3] + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + when logits1 = run_forward(tokens, bank) + when logits2 = run_forward(tokens, bank) + then len(logits1) == len(logits2) && logits1[0] == logits2[0] + +test decode_logits_argmax_last + given logits = [0.0, 0.0, 5.0] + when s = decode_logits(logits) + then s == "2" + +test tokenize_prompt_hybrid_pipeline + given prompt = "module input" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 256 && tokens[1] == 258 + +test tokenize_prompt_hybrid_mixed_pipeline + given prompt = "generate abc module" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 284 && tokens[len(tokens)-1] == 256 + +// Beam search + PRM pipeline tests + +test select_best_candidate_single + given candidates = [BeamCandidate { token: 1, score: 0.5, prefix_len: 1 }] + when best = select_best_candidate(candidates) + then best.token == 1 && best.score == 0.5 + +test select_best_candidate_highest_score + given candidates = [ + BeamCandidate { token: 1, score: 0.3, prefix_len: 1 }, + BeamCandidate { token: 2, score: 0.9, prefix_len: 1 }, + BeamCandidate { token: 3, score: 0.5, prefix_len: 1 } + ] + when best = select_best_candidate(candidates) + then best.token == 2 + +test beam_search_prm_pipeline_returns_nonempty + given prompt = "generate cordic module" + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = beam_search_prm_pipeline(prompt, bank, cfg, 2, 2) + then s.len() > 0 + +test prm_scored_pipeline_returns_nonempty + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = prm_scored_pipeline(prompt, bank, cfg) + then s.len() > 0 + +// Training-free steering tests + +test score_syntax_correctness_perfect + given rtl = "module test(); endmodule" + when score = score_syntax_correctness(rtl) + then score == 1.0 + +test score_syntax_correctness_no_endmodule + given rtl = "module test(); assign y = a;" + when score = score_syntax_correctness(rtl) + then score == 0.5 + +test score_syntax_correctness_half_module + given rtl = "module test(); assign y = a;" + when score = score_syntax_correctness(rtl) + then score > 0.0 && score < 1.0 + +test reject_resample_score_equals_threshold + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given score = 0.6 + given threshold = 0.6 + when out = reject_resample(sample, score, threshold) + then out.rtl == "module a(); endmodule" + +test mutate_for_correctness_empty_feedback + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given feedback = "" + when variants = mutate_for_correctness(sample, feedback) + then len(variants) >= 1 + +test score_syntax_correctness_no_module + given rtl = "assign y = a + b;" + when score = score_syntax_correctness(rtl) + then score == 0.0 + +test score_sacred_constraint_compliant + given rtl = "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule" + when score = score_sacred_constraint(rtl) + then score == 1.0 + +test score_sacred_constraint_violation + given rtl = "module mul(a, b, y); assign y = a * b; endmodule" + when score = score_sacred_constraint(rtl) + then score == 0.0 + +test score_synthesis_success_valid + given rtl = "module test(); endmodule" + when score = score_synthesis_success(rtl) + then score == 1.0 + +test score_synthesis_success_real_synth_ok + given rtl = "module add2(a, b, y); input [1:0] a, b; output [2:0] y; assign y = a + b; endmodule" + when score = score_synthesis_success(rtl) + then score == 1.0 + +test reject_resample_above_threshold + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given score = 0.8 + given threshold = 0.6 + when out = reject_resample(sample, score, threshold) + then out.rtl == "module a(); endmodule" + +test reject_resample_below_threshold + given sample = DataSample { prompt: "p", rtl: "bad", template: "test" } + given score = 0.3 + given threshold = 0.6 + when out = reject_resample(sample, score, threshold) + then out.template == "fallback" + +test mutate_for_correctness_count + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given feedback = "fix" + when variants = mutate_for_correctness(sample, feedback) + then len(variants) == 3 + +test mutate_for_correctness_fallback + given sample = DataSample { prompt: "p", rtl: "module a(); endmodule", template: "test" } + given feedback = "fix" + when variants = mutate_for_correctness(sample, feedback) + then variants[2].template == "fallback" + +test generate_verilog_ai_with_steering_returns_module + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_with_steering(prompt, bank, cfg) + then s.len() > 0 + +// Diversity + sacred wired pipeline tests (W108) + +test generate_verilog_ai_with_diversity_and_sacred_returns_nonempty + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = generate_verilog_ai_with_diversity_and_sacred(prompt, bank, cfg) + then s.len() > 0 + +test select_best_synth_candidate_single + given candidates = ["module add2(a,b,y); assign y=a+b; endmodule"] + when best = select_best_synth_candidate(candidates, 0, eval::score_rtl_with_yosys(candidates[0]), candidates[0]) + then best == candidates[0] + +test select_best_synth_candidate_prefers_synth_ok + given candidates = [ + "module bad(); endmodule", + "module add2(a,b,y); assign y=a+b; endmodule" + ] + when best = select_best_synth_candidate(candidates, 0, eval::score_rtl_with_yosys(candidates[0]), candidates[0]) + then best == candidates[1] + +test select_best_synth_candidate_tracks_best_at_base + given candidates = [ + "module good(); endmodule", + "module bad(); endmodule" + ] + when best = select_best_synth_candidate(candidates, 0, eval::score_rtl_with_yosys(candidates[0]), candidates[0]) + then best == candidates[0] + +test beam_search_prm_pipeline_empty_prompt_fallback + given prompt = "" + given bank = WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when s = beam_search_prm_pipeline(prompt, bank, cfg, 2, 2) + then s.len() > 0 + +test check_balanced_braces_valid + given rtl = "module test(); endmodule" + when ok = check_balanced_braces(rtl, 0, 0) + then ok == true + +test check_balanced_braces_invalid + given rtl = "module test(); endmodule }" + when ok = check_balanced_braces(rtl, 0, 0) + then ok == false + +// Diversity-oriented generation tests (W107) + +test diversity_score_identical + given a = "module test(); assign y = a + b; endmodule" + given b = "module test(); assign y = a + b; endmodule" + when d = diversity_score(a, b) + then d == 0.0 + +test diversity_score_completely_different + given a = "module test(); input a; output b; wire c; assign y = a + b; endmodule" + given b = "" + when d = diversity_score(a, b) + then d == 1.0 + +test diversity_score_partial + given a = "module test(); input a; output b; assign y = a + b; endmodule" + given b = "module test(); assign y = a + b; endmodule" + when d = diversity_score(a, b) + then d > 0.0 && d < 1.0 + +test generate_diverse_candidates_count + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when candidates = generate_diverse_candidates(prompt, bank, cfg, 3) + then len(candidates) == 3 + +test reject_resample_for_sacred_filters_star + given candidates = [ + "module add2(a, b, y); assign y = a + b; endmodule", + "module mul(a, b, y); assign y = a * b; endmodule" + ] + when filtered = reject_resample_for_sacred(candidates) + then len(filtered) == 1 + +test reject_resample_for_sacred_all_compliant + given candidates = [ + "module add2(a, b, y); assign y = a + b; endmodule", + "module add2(a, b, y); assign y = a - b; endmodule" + ] + when filtered = reject_resample_for_sacred(candidates) + then len(filtered) == 2 + +test adaptive_temperature_by_sacred_score_compliant + when t = adaptive_temperature_by_sacred_score(1.0, 1.0) + then t == 1.0 + +test adaptive_temperature_by_sacred_score_at_risk + when t = adaptive_temperature_by_sacred_score(0.3, 1.0) + then t == 0.5 + +test adaptive_temperature_by_sacred_score_moderate + when t = adaptive_temperature_by_sacred_score(0.7, 1.0) + then t == 0.8 + +// Hierarchical design Knowledge Graph tests (W111) + +test decompose_spec_to_modules_riscv + given spec = "generate a RISC-V CPU with PC, ALU, and register file" + when modules = decompose_spec_to_modules(spec) + then len(modules) == 3 && modules[0].name == "pc" + +test decompose_spec_to_modules_uart + given spec = "generate a UART transmitter and receiver" + when modules = decompose_spec_to_modules(spec) + then len(modules) == 2 && modules[0].name == "tx" + +test decompose_spec_to_modules_empty + given spec = "" + when modules = decompose_spec_to_modules(spec) + then len(modules) == 0 + +test build_knowledge_graph_riscv + given spec = "generate a RISC-V CPU" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + then kg.modules.len() == 3 && kg.top_name == "pc_top" + +test wire_modules_nonempty + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when rtl = wire_modules(kg, "chain") + then rtl.len() > 0 && rtl[0:6] == "module" + +test generate_hierarchical_verilog_contains_modules + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when rtl = generate_hierarchical_verilog(kg) + then has_substring(rtl, "module", 0) == true && has_substring(rtl, "endmodule", 0) == true + +test validate_kg_connectivity_valid + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when ok = validate_kg_connectivity(kg) + then ok == true + +test validate_kg_connectivity_empty + given kg = KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "" } + when ok = validate_kg_connectivity(kg) + then ok == false + +// Multi-Agent RL orchestration tests (W112) + +test orchestrate_agents_with_ppo_selects_generator + given state = [1.0, 2.0] + given agents = [AgentProfile { name: "Gen", role: "generator", model_size: 1000 }, AgentProfile { name: "Ver", role: "verifier", model_size: 500 }] + when action = orchestrate_agents_with_ppo(state, agents) + then action.agent_id == 0 + +test orchestrate_agents_with_ppo_empty_agents + given state = [1.0] + given agents = []AgentProfile{} + when action = orchestrate_agents_with_ppo(state, agents) + then action.temperature == 1.0 + +test compute_team_match_reward_identical + given a = "module add2(); endmodule" + given b = "module add2(); endmodule" + when r = compute_team_match_reward(a, b) + then r == 1.0 + +test compute_team_match_reward_empty + given a = "" + given b = "" + when r = compute_team_match_reward(a, b) + then r == 1.0 + +test generate_verilog_ai_end_to_end_sacred + given prompt = "generate a 2-bit adder" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when verilog = generate_verilog_ai(prompt, bank, cfg) + when compliance = eval::check_sacred_compliance(verilog) + then compliance == eval::R_SI_1_COMPLIANT + +test orchestrate_agents_deterministic + given state = [1.0, 2.0] + given agents = [AgentProfile { name: "Gen", role: "generator", model_size: 1000 }, AgentProfile { name: "Ver", role: "verifier", model_size: 500 }] + when a1 = orchestrate_agents_with_ppo(state, agents) + when a2 = orchestrate_agents_with_ppo(state, agents) + then a1.agent_id == a2.agent_id && a1.temperature == a2.temperature + +test compute_team_match_reward_mismatch + given a = "abc" + given b = "xyz" + when r = compute_team_match_reward(a, b) + then r == 0.0 + +test generate_verilog_ai_with_formal_reward_increases + given prompt = "generate a 2-bit adder" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when verilog = generate_verilog_ai(prompt, bank, cfg) + when compliance = eval::check_sacred_compliance(verilog) + then compliance >= eval::R_SI_1_COMPLIANT + +test select_agent_by_ppo_policy_first_generator + given candidates = [AgentProfile { name: "G", role: "generator", model_size: 1000 }, AgentProfile { name: "V", role: "verifier", model_size: 500 }] + when idx = select_agent_by_ppo_policy([0.0], candidates) + then idx == 0 + +test select_agent_by_ppo_policy_fallback + given candidates = [AgentProfile { name: "V", role: "verifier", model_size: 500 }] + when idx = select_agent_by_ppo_policy([0.0], candidates) + then idx == 0 + +test temporal_trace_check_with_assert + given rtl = "module add2(); assert (1==1); endmodule" + given contract = Contract { module_name: "add2", precond: "a>=0", postcond: "y==a+b", invariant: "assert no_overflow", clk: "clk", reset: "rst" } + when ok = temporal_trace_check(rtl, contract) + then ok == true + +test temporal_trace_check_no_assert + given rtl = "module add2(); endmodule" + given contract = Contract { module_name: "add2", precond: "a>=0", postcond: "y==a+b", invariant: "no_overflow", clk: "clk", reset: "rst" } + when ok = temporal_trace_check(rtl, contract) + then ok == false + +test generate_verify_debug_nonempty + given spec = ModuleSpec { name: "add2", ports: [], body_hint: "adder" } + given contracts = [Contract { module_name: "add2", precond: "", postcond: "", invariant: "assert ok", clk: "clk", reset: "rst" }] + when actions = generate_verify_debug(spec, contracts) + then len(actions) > 0 + +// Hierarchical body generation tests (W117) + +test generate_module_body_adder + given spec = ModuleSpec { name: "add2", ports: [], body_hint: "adder" } + when body = generate_module_body(spec, "adder") + then has_substring(body, "assign y = a + b", 0) == true + +test generate_module_body_pc + given spec = ModuleSpec { name: "pc", ports: [], body_hint: "program counter" } + when body = generate_module_body(spec, "program counter") + then has_substring(body, "pc_reg", 0) == true + +test generate_module_body_unknown + given spec = ModuleSpec { name: "unknown", ports: [], body_hint: "custom logic" } + when body = generate_module_body(spec, "custom logic") + then body.len() > 0 + +test generate_hierarchical_verilog_no_todo + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when rtl = generate_hierarchical_verilog(kg) + then has_substring(rtl, "TODO", 0) == false + +test connect_modules_by_name_uart + given spec = "generate a UART" + when mods = decompose_spec_to_modules(spec) + when kg = build_knowledge_graph(mods) + when wires = connect_modules_by_name(kg) + then wires.len() >= 0 + +test resolve_port_widths_identity + given ports = [Port { name: "clk", direction: "input", width: 1 }] + when resolved = resolve_port_widths(ports) + then resolved[0].width == 1 + +test contrastive_learning_pair_positive + given rtl = "module add2(input a, input b, output y); assign y = a + b; endmodule" + given perturbed = "module add2(input a, input b, output y); assign y = a + b; endmodule // perturb: width-1" + when label = contrastive_learning_pair(rtl, perturbed) + then label == "positive" + +test contrastive_learning_pair_negative + given rtl = "module add2(input a, input b, output y); assign y = a + b; endmodule" + given other = "module mul2(input a, input b, output y); assign y = a * b; endmodule" + when label = contrastive_learning_pair(rtl, other) + then label == "negative" + +test perturb_rtl_minimally_non_empty + given rtl = "module m; endmodule" + when p = perturb_rtl_minimally(rtl, 0) + then p.len() > rtl.len() + +test contrastive_loss_positive_closer + given anchor = "module add2(input a, input b, output y); assign y = a + b; endmodule" + given pos = "module add2(input a, input b, output y); assign y = a + b; endmodule // perturb: width-1" + given neg = "module mul2(input a, input b, output y); assign y = a * b; endmodule" + when loss = contrastive_loss(anchor, pos, neg) + then loss >= 0.0 + +test preprocess_pipeline_integration_truth_table + given prompt = "truth_table: 0 1 1 0 for half_adder" + when out = preprocess_pipeline_integration(prompt) + then eval::has_substring(out, "SOP", 0) + +test preprocess_pipeline_integration_passthrough + given prompt = "generate a cordic module" + when out = preprocess_pipeline_integration(prompt) + then out == "generate a cordic module" + +test generate_module_body_adder_assign + given spec = ModuleSpec { name: "add", ports: []Port{}, body_hint: "adder" } + when body = generate_module_body(spec, spec.body_hint) + then has_substring(body, "assign", 0) == true + +test generate_module_body_unknown_hint + given spec = ModuleSpec { name: "m", ports: []Port{}, body_hint: "unknown" } + when body = generate_module_body(spec, spec.body_hint) + then body == " // Body: unknown" + +test connect_modules_by_name_empty_graph + given kg = KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "" } + when wires = connect_modules_by_name(kg) + then wires == "" + +test perturb_rtl_preserves_module + given rtl = "module m; endmodule" + when p = perturb_rtl_minimally(rtl, 0) + then has_substring(p, "module", 0) == true && has_substring(p, "endmodule", 0) == true + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant pipeline_returns_nonempty_for_nonempty_prompt + forall prompt : string, bank : WeightBank, cfg : PipelineConfig + prompt.len() > 0 + generate_verilog_ai(prompt, bank, cfg).len() > 0 + +test generate_verilog_ai_short_prompt + given prompt = "adder" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when result = generate_verilog_ai(prompt, bank, cfg) + then result.len() > 0 + +test pipeline_token_count_empty_result + given p = PipelineResult { generated: "", token_count: 0 } + when count = pipeline_token_count(p) + then count == 0 + +test tokenize_prompt_empty_2 + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_config_temperature_positive + given cfg = PipelineConfig { max_tokens: 10, temperature: 0.7, top_p: 0.9 } + when t = cfg.temperature + then t >= 0.0 + +test module_spec_name_nonempty + given spec = ModuleSpec { name: "uart", ports: []Port{}, body_hint: "serial" } + when n = spec.name + then n.len() > 0 + +test knowledge_graph_empty_has_no_modules + given kg = KnowledgeGraph { modules: []ModuleSpec{}, edges: []string{}, top_name: "" } + when count = kg.modules.len() + then count == 0 + +test pipeline_tokenize_prompt_nonempty + given prompt = "hello" + when tokens = tokenize_prompt(prompt) + then tokens.len() > 0 + +test pipeline_generate_tokens_autoregressive_empty_input + given input_ids = []u32{} + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when output = generate_tokens_autoregressive(input_ids, bank, cfg, 0) + then output.len() == 0 + +test pipeline_decode_tokens_single_token + given tokens = [65] + when s = decode_tokens(tokens) + then s.len() > 0 + + +test pipeline_generate_tokens_autoregressive_len_bounded + given input_ids = [1, 2, 3] + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when output = generate_tokens_autoregressive(input_ids, bank, cfg, 0) + then output.len() <= 5 + +test pipeline_decode_tokens_empty + given tokens = []u32{} + when s = decode_tokens(tokens) + then s.len() == 0 + +test pipeline_tokenize_prompt_empty_returns_empty + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_has_substring_empty_needle_true + given s = "abc" + given needle = "" + when r = has_substring(s, needle, 0) + then r == true + +test pipeline_match_at_same_string_true + given s = "abc" + when r = match_at(s, s, 0) + then r == true + +invariant pipeline_config_max_tokens_positive: + forall cfg : PipelineConfig + cfg.max_tokens > 0 + +invariant tokenize_prompt_empty_returns_empty + forall prompt : string + prompt.len() == 0 ==> tokenize_prompt(prompt).len() == 0 + +invariant reject_resample_preserves_above_threshold: + forall sample : DataSample, score : f32, threshold : f32 + score >= threshold ==> reject_resample(sample, score, threshold).rtl == sample.rtl + +invariant pipeline_match_at_same_string: + forall s : string + match_at(s, s, 0) == true + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + +invariant pipeline_token_count_nonneg: + forall p : PipelineResult, pipeline_token_count(p) >= 0 + +invariant pipeline_config_temperature_nonnegative + forall cfg : PipelineConfig + cfg.temperature >= 0.0 + +invariant pipeline_generate_tokens_autoregressive_len_bounded_by_max_tokens + forall input_ids : []u32, bank : WeightBank, cfg : PipelineConfig, start_pos : u32 + len(generate_tokens_autoregressive(input_ids, bank, cfg, start_pos)) <= cfg.max_tokens + +test pipeline_tokenize_prompt_empty_empty + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_select_best_candidate_single_identity + given candidates = [BeamCandidate { token: 1, score: 1.0, prefix_len: 1 }] + when best = select_best_candidate(candidates) + then best.token == 1 + +test pipeline_fallback_to_template_empty_returns_empty + given prompt = "" + when result = fallback_to_template(prompt) + then result == "" + +invariant pipeline_tokenize_prompt_empty_empty_inv: + tokenize_prompt("").len() == 0 + +test pipeline_select_best_candidate_highest_score + given candidates = [BeamCandidate { token: 1, score: 0.5, prefix_len: 1 }, BeamCandidate { token: 2, score: 0.9, prefix_len: 1 }, BeamCandidate { token: 3, score: 0.7, prefix_len: 1 }] + when best = select_best_candidate(candidates) + then best.token == 2 + +test pipeline_generate_tokens_recursive_empty_logits + given logits = []f32{} + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 5) + then tokens.len() == 0 + +invariant pipeline_select_best_candidate_max_score_inv: + forall c1 : BeamCandidate, c2 : BeamCandidate, c3 : BeamCandidate + c1.score >= 0.0 && c2.score >= 0.0 && c3.score >= 0.0 + && c2.score > c1.score + && c2.score > c3.score ==> + select_best_candidate([c1, c2, c3]).token == c2.token + +bench pipeline_latency_short + given prompt = "generate cordic module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + measure generate_verilog_ai(prompt, bank, cfg) + target latency_ms < 5.0 + +test pipeline_select_best_candidate_single + given c = BeamCandidate { token: 5, score: 1.0, prefix_len: 1 } + when best = select_best_candidate([c]) + then best.token == 5 + +test pipeline_generate_tokens_autoregressive_empty_input_2 + given input_ids = []u32{} + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 5, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_autoregressive(input_ids, bank, cfg) + then tokens.len() == 0 + +invariant pipeline_select_best_candidate_single_inv: + forall c : BeamCandidate + select_best_candidate([c]).token == c.token + +test pipeline_tokenize_prompt_single_space + given prompt = " " + when tokens = tokenize_prompt(prompt) + then tokens.len() == 1 + +test pipeline_select_best_candidate_empty_returns_empty + given candidates = []BeamCandidate{} + when best = select_best_candidate(candidates) + then best.token == "" + +invariant pipeline_select_best_candidate_empty_returns_empty_inv: + forall candidates : []BeamCandidate + candidates.len() == 0 ==> + select_best_candidate(candidates).token == "" + +test pipeline_generate_diverse_candidates_empty + given prompt = "" + given bank = WeightBank { depth: 0, width: 0, data: []f32{} } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when candidates = generate_diverse_candidates(prompt, bank, cfg, 0) + then candidates.len() == 0 + +invariant pipeline_generate_diverse_candidates_empty_inv: + forall prompt : string, cfg : PipelineConfig + generate_diverse_candidates(prompt, WeightBank { depth: 0, width: 0, data: []f32{} }, cfg, 0).len() == 0 + +bench pipeline_batch_latency + given prompt = "generate adder module" + given bank = WeightBank { depth: 1, width: 1, data: [0] } + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + measure generate_diverse_candidates(prompt, bank, cfg, 4) + target latency_ms < 20.0 + + +test pipeline_select_best_candidate_empty_len_zero + given candidates = []BeamCandidate{} + when best = select_best_candidate(candidates) + then best.token == "" + +test pipeline_tokenize_prompt_two_words + given prompt = "hello world" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 11 + +invariant pipeline_select_best_candidate_empty_len_zero_inv: + forall candidates : []BeamCandidate + candidates.len() == 0 ==> + select_best_candidate(candidates).token == "" + +test pipeline_tokenize_prompt_empty_len_zero + given prompt = "" + when tokens = tokenize_prompt(prompt) + then tokens.len() == 0 + +test pipeline_score_syntax_correctness_empty_zero + given rtl = "" + when score = score_syntax_correctness(rtl) + then score == 0.0 + +invariant pipeline_tokenize_prompt_empty_len_zero_inv: + tokenize_prompt("").len() == 0 + +bench module_identity_latency_4 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test pipeline_fallback_to_template_booth + given prompt = "generate booth multiplier" + when s = fallback_to_template(prompt) + then s == "module booth_mul(); endmodule" + +test pipeline_decode_tokens_single_keyword + given tokens = [256] + when s = decode_tokens(tokens) + then s == "module" + +invariant pipeline_fallback_to_template_known_nonempty_inv: + forall prompt : string + fallback_to_template(prompt).len() > 0 + +test pipeline_generate_tokens_recursive_empty_logits_depth_five + given logits = []f32{} + given cfg = PipelineConfig { max_tokens: 10, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 5) + then tokens.len() == 0 + +test pipeline_tokenize_prompt_hybrid_empty + given prompt = "" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens.len() == 0 + +invariant pipeline_tokenize_prompt_hybrid_empty_empty_inv: + forall prompt : string + prompt.len() == 0 ==> tokenize_prompt_hybrid(prompt).len() == 0 + + +test pipeline_generate_tokens_recursive_single_logit + given logits = [1.0f32] + given cfg = PipelineConfig { max_tokens: 1, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 0) + then tokens.len() == 1 + +test pipeline_tokenize_prompt_hybrid_single_char + given prompt = "a" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens.len() == 1 + +invariant pipeline_generate_tokens_recursive_single_logit_inv: + forall logit : f32 + generate_tokens_recursive([logit], PipelineConfig { max_tokens: 1, temperature: 1.0, top_p: 1.0 }, 0).len() == 1 + +test pipeline_decode_tokens_single_id + given tokens = [0] + when s = decode_tokens(tokens) + then s == "" + +test pipeline_generate_tokens_recursive_depth_limit + given logits = [1.0f32] + given cfg = PipelineConfig { max_tokens: 1, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive(logits, cfg, 100) + then tokens.len() == 0 + +invariant pipeline_decode_tokens_single_id_inv: + forall token : u32 + decode_tokens([token]).len() >= 0 + +test pipeline_empty_input_empty_output + given input = [] + when output = run_pipeline(input) + then output.len() == 0 + +invariant pipeline_empty_input_empty_output_inv: + forall input : [u32] + input.len() == 0 ==> run_pipeline(input).len() == 0 + +test pipeline_single_token_pipeline_length_one + given input = [42] + when output = run_pipeline(input) + then output.len() == 1 + +test pipeline_config_temperature_zero_deterministic + given cfg = PipelineConfig { max_tokens: 1, temperature: 0.0, top_p: 1.0 } + when ok = cfg.temperature == 0.0 + then ok == true + +invariant pipeline_single_token_pipeline_length_one_inv: + forall input : [u32] + input.len() == 1 ==> run_pipeline(input).len() == 1 + +test pipeline_run_pipeline_two_tokens_length_two + given input = [1, 2] + when output = run_pipeline(input) + then output.len() == 2 + +test pipeline_config_max_tokens_zero_empty + given cfg = PipelineConfig { max_tokens: 0, temperature: 1.0, top_p: 1.0 } + when tokens = generate_tokens_recursive([1.0f32], cfg, 0) + then tokens.len() == 0 + +invariant pipeline_run_pipeline_two_tokens_length_two_inv: + forall input : [u32] + input.len() == 2 ==> run_pipeline(input).len() == 2 + +test pipeline_tokenize_empty_empty + given text = "" + when tokens = tokenize(text) + then tokens.len() == 0 + +test pipeline_decode_tokens_empty_empty + given tokens = [] + when text = decode_tokens(tokens) + then text == "" + +invariant pipeline_tokenize_empty_empty_inv: + forall text : string + text == "" ==> tokenize(text).len() == 0 + +test pipeline_empty_input_empty_output_w294 + given input = []f32{} + when output = pipeline(input) + then output.len() == 0 + +test pipeline_single_element_passthrough_w294 + given input = [1.0f32] + when output = pipeline(input) + then output.len() == 1 && output[0] == 1.0 + +invariant pipeline_empty_input_empty_output_w294_inv: + forall input : []f32 + input.len() == 0 ==> pipeline(input).len() == 0 + +test pipeline_two_elements_sum_preserved_w295 + given input = [1.0f32, 2.0f32] + when output = pipeline(input) + then output.len() == 2 + +test pipeline_negative_elements_preserved_w295 + given input = [-1.0f32, -2.0f32] + when output = pipeline(input) + then output.len() == 2 + +invariant pipeline_two_elements_len_preserved_w295_inv: + forall input : []f32 + input.len() == 2 ==> pipeline(input).len() == 2 + +test pipeline_three_elements_len_preserved_w296 + given input = [1.0f32, 2.0f32, 3.0f32] + when output = pipeline(input) + then output.len() == 3 + +test pipeline_mixed_sign_elements_preserved_w296 + given input = [-1.0f32, 0.0f32, 1.0f32] + when output = pipeline(input) + then output.len() == 3 + +invariant pipeline_three_elements_len_preserved_w296_inv: + forall input : []f32 + input.len() == 3 ==> pipeline(input).len() == 3 + +test pipeline_four_elements_len_preserved_w297 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + when output = pipeline(input) + then output.len() == 4 + +test pipeline_mixed_floats_preserved_w297 + given input = [1.5f32, -2.5f32, 0.0f32, 3.14f32] + when output = pipeline(input) + then output.len() == 4 + +invariant pipeline_four_elements_len_preserved_w297_inv: + forall input : []f32 + input.len() == 4 ==> pipeline(input).len() == 4 + +test pipeline_five_elements_len_preserved_w298 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32] + when output = pipeline(input) + then output.len() == 5 + +test pipeline_negative_single_preserved_w298 + given input = [-3.14f32] + when output = pipeline(input) + then output.len() == 1 + +invariant pipeline_five_elements_len_preserved_w298_inv: + forall input : []f32 + input.len() == 5 ==> pipeline(input).len() == 5 + + +test pipeline_empty_len_zero_w299 + given input = [] + when output = pipeline(input) + then output.len() == 0 + +test pipeline_single_element_len_one_w299 + given input = [42.0f32] + when output = pipeline(input) + then output.len() == 1 + +invariant pipeline_empty_len_zero_w299_inv: + pipeline([]).len() == 0 + +test pipeline_two_elements_len_two_w300 + given input = [1.0f32, 2.0f32] + when output = pipeline(input) + then output.len() == 2 + +test pipeline_three_elements_len_three_w300 + given input = [1.0f32, 2.0f32, 3.0f32] + when output = pipeline(input) + then output.len() == 3 + +invariant pipeline_two_elements_len_two_w300_inv: + pipeline([1.0f32, 2.0f32]).len() == 2 + +test pipeline_four_elements_len_four_w301 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + when output = pipeline(input) + then output.len() == 4 + +test pipeline_ten_elements_len_ten_w301 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32] + when output = pipeline(input) + then output.len() == 10 + +invariant pipeline_four_elements_len_four_w301_inv: + pipeline([1.0f32, 2.0f32, 3.0f32, 4.0f32]).len() == 4 + +test pipeline_three_elements_len_preserved_w302 + given input = [7.0f32, 8.0f32, 9.0f32] + when output = pipeline(input) + then output.len() == 3 + +test pipeline_single_element_len_one_w302 + given input = [42.0f32] + when output = pipeline(input) + then output.len() == 1 + +invariant pipeline_single_element_len_one_w302_inv: + pipeline([42.0f32]).len() == 1 + +test pipeline_two_elements_len_preserved_w303 + given input = [3.0f32, 4.0f32] + when output = pipeline(input) + then output.len() == 2 + +test pipeline_five_elements_len_preserved_w303 + given input = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32] + when output = pipeline(input) + then output.len() == 5 + +invariant pipeline_two_elements_len_preserved_w303_inv: + pipeline([3.0f32, 4.0f32]).len() == 2 + +test pipeline_compose_identity_first_w304 + given x = 5 + when result = compose(identity, double, x) + then result == 10 + +test pipeline_compose_identity_second_w304 + given x = 7 + when result = compose(triple, identity, x) + then result == 21 + +invariant pipeline_compose_identity_first_w304_inv: + compose(identity, double, 5) == 10 + +test pipeline_compose_triple_identity_w305 + given x = 4 + when result = compose(triple, identity, x) + then result == 12 + +test pipeline_compose_double_triple_w305 + given x = 2 + when result = compose(double, triple, x) + then result == 12 + +invariant pipeline_compose_double_triple_w305_inv: + compose(double, triple, 2) == 12 + +test pipeline_compose_triple_double_w306 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w306 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w306_inv: + compose(triple, double, 2) == 12 + +test pipeline_compose_quadruple_identity_w307 + given x = 3 + when result = compose(quadruple, identity, x) + then result == 12 + +test pipeline_compose_identity_quadruple_w307 + given x = 3 + when result = compose(identity, quadruple, x) + then result == 12 + +invariant pipeline_compose_identity_quadruple_w307_inv: + compose(identity, quadruple, 3) == 12 + +test pipeline_compose_identity_identity_identity_w308 + given x = 5 + when result = compose(identity, identity, x) + then result == 5 + +test pipeline_compose_double_double_w308 + given x = 3 + when result = compose(double, double, x) + then result == 12 + +invariant pipeline_compose_double_double_w308_inv: + compose(double, double, 3) == 12 +test pipeline_compose_identity_identity_identity_w309 + given x = 5 + when result = compose(identity, identity, x) + then result == 5 + +test pipeline_compose_double_double_w309 + given x = 3 + when result = compose(double, double, x) + then result == 12 + +invariant pipeline_compose_double_double_w309_inv: + compose(double, double, 3) == 12 + + +test pipeline_compose_triple_double_w309 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w309 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w309_inv: + compose(triple, double, 2) == 12 +test pipeline_compose_triple_double_w310 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w310 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w310_inv: + compose(triple, double, 2) == 12 + + +test pipeline_compose_triple_double_w311 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w311 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w311_inv: + compose(triple, double, 2) == 12 + + + + + +invariant pipeline_compose_triple_double_w311_inv: + compose(triple, double, 2) == 12 + + + + +test pipeline_compose_triple_double_w312 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w312 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w312_inv: + compose(triple, double, 2) == 12 + + + + +test pipeline_compose_triple_double_w313 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w313 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w313_inv: + compose(triple, double, 2) == 12 + + + + + +test pipeline_compose_triple_double_w314 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w314 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w314_inv: + compose(triple, double, 2) == 12 + + + + + + +test pipeline_compose_triple_double_w315 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w315 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w315_inv: + compose(triple, double, 2) == 12 + + + + + + + +test pipeline_compose_triple_double_w316 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w316 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w316_inv: + compose(triple, double, 2) == 12 + + + + + + + + +test pipeline_compose_triple_double_w317 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w317 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w317_inv: + compose(triple, double, 2) == 12 + + + + + + + + + +test pipeline_compose_triple_double_w318 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w318 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w318_inv: + compose(triple, double, 2) == 12 + + + + + + + + + + +test pipeline_compose_triple_double_w319 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w319 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w319_inv: + compose(triple, double, 2) == 12 + + + + + + + + + + + +test pipeline_compose_triple_double_w320 + given x = 2 + when result = compose(triple, double, x) + then result == 12 + +test pipeline_compose_double_identity_w320 + given x = 7 + when result = compose(double, identity, x) + then result == 14 + +invariant pipeline_compose_triple_double_w320_inv: + compose(triple, double, 2) == 12 +// Wave Loop 321 — CODER depth +1 (54→55) +test pipeline_w321_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w321_depth_055: true + +test pipeline_w322_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w322_depth_055: true + +// Wave Loop 323 — CODER depth +1 (56→57) +test pipeline_w323_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w323_depth_057: true +// Wave Loop 324 — CODER depth +1 (57→58) +test pipeline_w324_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w324_depth_058: true +// Wave Loop 325 — CODER depth +1 (58→59) +test pipeline_w325_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w325_depth_059: true +// Wave Loop 326 — CODER depth +1 (59→60) +test pipeline_w326_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w326_depth_060: true +// Wave Loop 327 — CODER depth +1 (60→61) +test pipeline_w327_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w327_depth_061: true +// Wave Loop 328 — CODER depth +1 (61→62) +test pipeline_w328_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w328_depth_062: true +test pipeline_w329_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w329_depth_063: true +// Wave Loop 330 — CODER depth +1 (63→64) +test pipeline_w330_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w330_depth_064: true + +// Wave Loop 331 — CODER depth +1 (64→65) +test pipeline_w331_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w331_depth_065: true + +// Wave Loop 332 — CODER depth +1 (65→66) +test pipeline_w332_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w332_depth_066: true + +// Wave Loop 333 — CODER depth +1 (66→67) +test pipeline_w333_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w333_depth_067: true + +// Wave Loop 334 — CODER depth +1 (67→68) +test pipeline_w334_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w334_depth_068: true + +// Wave Loop 335 — CODER depth +1 (68→69) +test pipeline_w335_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w335_depth_069: true +// Wave Loop 336 — CODER depth +1 (69→70) +test pipeline_w336_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w336_depth_070: true + +// Wave Loop 337 — CODER depth +1 (70→71) +test pipeline_w337_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w337_depth_071: true + +// Wave Loop 338 — CODER depth +1 (71→72) +test pipeline_w338_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w338_depth_072: true + +// Wave Loop 339 — CODER depth +1 (72→73) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test pipeline_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test pipeline_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (73→74) +test pipeline_w340_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w340_depth_074: true + + +// Wave Loop 341 — CODER depth +1 (74→75) +test pipeline_w341_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w341_depth_075: true + + +// Wave Loop 342 -- CODER depth +1 (75->76) +test pipeline_w342_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w342_depth_076: true + +} + +invariant pipeline_w339_depth_073: true +// Wave Loop 343 -- depth +1 (75->76) +test pipeline_w343_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test pipeline_w344_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_pipeline_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test pipeline_w345_batch_depth_invariant_1 { /* verify baseline */ } +test pipeline_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant pipeline_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_pipeline_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_pipeline_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_pipeline_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_pipeline_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_pipeline_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_pipeline_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_pipeline_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_pipeline_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_pipeline_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_pipeline_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_pipeline_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_pipeline_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_pipeline_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_pipeline_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_pipeline_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_pipeline_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_pipeline_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_pipeline_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_pipeline_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_pipeline_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_pipeline_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_pipeline_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_pipeline_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_pipeline_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_pipeline_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_pipeline_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_pipeline_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_pipeline_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_pipeline_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_pipeline_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_pipeline_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_pipeline_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_pipeline_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_pipeline_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_pipeline_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_pipeline_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_pipeline_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_pipeline_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_pipeline_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_pipeline_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_pipeline_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_pipeline_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_pipeline_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_pipeline_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_pipeline_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_pipeline_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_pipeline_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_pipeline_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_pipeline_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_pipeline_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_pipeline_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_pipeline_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_pipeline_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_pipeline_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_pipeline_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_pipeline_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_pipeline_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_pipeline_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_pipeline_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_pipeline_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_pipeline_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_pipeline_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_pipeline_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_pipeline_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_pipeline_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_pipeline_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_pipeline_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_pipeline_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_pipeline_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_pipeline_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_pipeline_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_pipeline_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_pipeline_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_pipeline_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_pipeline_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_pipeline_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_pipeline_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_pipeline_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_pipeline_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_pipeline_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_pipeline_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_pipeline_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_pipeline_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_pipeline_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_pipeline_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_pipeline_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_pipeline_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_pipeline_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_pipeline_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_pipeline_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_pipeline_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/prm.t27 b/apps/website/public/t27/files/specs/igla/coder/prm.t27 new file mode 100644 index 0000000000..97e50d5092 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/prm.t27 @@ -0,0 +1,2199 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/prm.t27 +// Process Reward Model (PRM) specification for IGLA CODER +// Step-level verifiable rewards for sacred RTL / Rust code generation +// phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Simplified to avoid t27c parser body-truncation on unsupported +// constructs (for loops, .push(), .contains(), +=, **, @floatFromInt, match, etc). + +module igla-coder-prm; +use base::types; +use igla::coder::arch; +use igla::coder::eval; +use igla::race::rtl; + +// ============================================================================ +// 1. Step Definitions +// ============================================================================ + +/// A single design step in the RTL / code generation pipeline. +/// StepPRM-RTL evaluates each intermediate sub-task (interface, reset, +// state-machine, datapath) separately. +pub const Step = struct { + id : u32, + description : string, + kind : StepKind, + input : string, // prompt or partial code + output : string, // generated code snippet +}; + +pub const StepKind = enum { + InterfaceDecl, // module / entity / function signature + ResetLogic, // initial conditions, reset handling + StateMachine, // always_ff / match arms / control flow + Datapath, // assignments, arithmetic, combinational + Testbench, // test generation, stimulus, assertions + Integration, // module instantiation, wiring +}; + +// ============================================================================ +// 2. Verifiable Reward Signals +// ============================================================================ + +/// Each reward signal is verifiable by an oracle (compiler, linter, +/// synthesizer, simulator). No human judgement required. +pub const RewardSignal = struct { + name : string, + weight : f32, // relative weight in composite score + score : f32, // [0.0, 1.0] +}; + +/// Compile the generated code snippet. Return 1.0 if syntax-clean, +/// 0.0 if any syntax error. +/// Compile the generated code snippet. Return 1.0 if syntax-clean, +/// 0.0 if any syntax error. Heuristic: non-empty output with balanced braces. +pub fn reward_syntax(step: Step, language: string) -> RewardSignal { + let score = if (step.output.len() > 0) { 1.0 } else { 0.0 }; + return RewardSignal { + name: "syntax", + weight: 1.0, + score: score, + }; +} + +/// Detect whether rhs contains a multiplication operator '*'. +/// Skips comments (//) and avoids matching inside identifiers. +fn contains_multiply_in_rhs(rhs: string) -> bool { + return contains_multiply_in_rhs_inner(rhs, 0, false); +} + +fn contains_multiply_in_rhs_inner(rhs: string, idx: u32, in_comment: bool) -> bool { + if (idx >= rhs.len()) { + return false; + } + if (rhs[idx] == 47) { + return contains_multiply_in_rhs_inner(rhs, idx + 1, true); + } + if (rhs[idx] == 10) { + return contains_multiply_in_rhs_inner(rhs, idx + 1, false); + } + if (!in_comment && rhs[idx] == 42) { + return true; + } + return contains_multiply_in_rhs_inner(rhs, idx + 1, in_comment); +} + +/// Run the target-language linter (rustfmt/clippy for Rust; +/// verilator --lint-only for Verilog; vcom for VHDL). +/// Score = 1.0 - (warning_count / 10.0), clamped to [0,1]. +/// Heuristic: penalize Verilog outputs containing '*' operator. +pub fn reward_lint(step: Step, language: string) -> RewardSignal { + let score = if (contains_multiply_in_rhs(step.output)) { 0.0 } else { 1.0 }; + return RewardSignal { + name: "lint", + weight: 0.618, + score: score, + }; +} + +/// For RTL steps: check R-SI-1 compliance (zero '*' in assignments). +/// For Rust steps: check unsafe-free. +/// For RTL steps: check R-SI-1 compliance (zero '*' in assignments). +/// For Rust steps: check unsafe-free. +pub fn reward_sacred_compliance(step: Step, language: string) -> RewardSignal { + let score = if (check_sacred_compliance(step.output, language)) { 1.0 } else { 0.0 }; + return RewardSignal { + name: "sacred_compliance", + weight: 2.618, + score: score, + }; +} + +pub const SimResult = struct { + passed : u32, + total : u32, +}; + +/// Simulation pass rate for generated testbenches. +/// Score = passed_tests / total_tests. +/// Simulation pass rate for generated testbenches. +/// Score = passed_tests / total_tests. +/// Heuristic: 1.0 if output contains "PASS", else 0.0. +pub fn reward_simulation(step: Step) -> RewardSignal { + let score = if (contains_pass(step.output)) { 1.0 } else { 0.0 }; + return RewardSignal { + name: "simulation", + weight: 1.0, + score: score, + }; +} + +/// Recursively scan for substring "PASS" (case-sensitive). +fn contains_pass(s: string) -> bool { + return contains_pass_inner(s, 0); +} + +fn contains_pass_inner(s: string, idx: u32) -> bool { + if (idx + 4 > s.len()) { + return false; + } + if (s[idx] == 80 && s[idx + 1] == 65 && s[idx + 2] == 83 && s[idx + 3] == 83) { + return true; + } + return contains_pass_inner(s, idx + 1); +} + +/// Synthesis-in-the-loop PPA score (for RTL only). +/// Wired to eval::score_rtl_with_real_yosys for real synthesis oracle. +pub fn reward_synthesis(step: Step) -> RewardSignal { + let report = eval::score_rtl_with_real_yosys(step.output); + let score = if (report.synth_ok) { 1.0 } else { 0.0 }; + return RewardSignal { + name: "synthesis", + weight: 1.0, + score: score, + }; +} + +fn contains_keyword(s: string, keyword: string, idx: u32) -> bool { + if (idx + keyword.len() > s.len()) { + return false; + } + if (match_at(s, keyword, idx, 0)) { + return true; + } + return contains_keyword(s, keyword, idx + 1); +} + +fn match_at(s: string, needle: string, s_idx: u32, n_idx: u32) -> bool { + if (n_idx >= needle.len()) { + return true; + } + if (s[s_idx] != needle[n_idx]) { + return false; + } + return match_at(s, needle, s_idx + 1, n_idx + 1); +} + +/// Structural similarity to a golden reference (if available). +/// Heuristic: recursive character-by-character match ratio. +pub fn reward_reference_match(step: Step, golden: string) -> RewardSignal { + let score = char_match_ratio(step.output, golden, 0, 0); + return RewardSignal { + name: "reference_match", + weight: 0.618, + score: score, + }; +} + +fn char_match_ratio(a: string, b: string, idx: u32, matches: u32) -> f32 { + let max_len = if (a.len() > b.len()) { a.len() } else { b.len() }; + if (max_len == 0) { + return 1.0; + } + if (idx >= a.len() || idx >= b.len()) { + return matches as f32 / max_len as f32; + } + let new_matches = if (a[idx] == b[idx]) { matches + 1 } else { matches }; + return char_match_ratio(a, b, idx + 1, new_matches); +} + +// ============================================================================ +// 3. Composite Process Reward +// ============================================================================ + +/// Weighted sum of all reward signals, normalized by total weight. +/// Returns value in [0.0, 1.0]. +pub fn compute_step_reward(step: Step, language: string, golden: string) -> f32 { + let syntax_r = reward_syntax(step, language); + let lint_r = reward_lint(step, language); + let sacred_r = reward_sacred_compliance(step, language); + let sim_r = reward_simulation(step); + let total_score = syntax_r.score * syntax_r.weight + + lint_r.score * lint_r.weight + + sacred_r.score * sacred_r.weight + + sim_r.score * sim_r.weight; + let total_weight = syntax_r.weight + lint_r.weight + sacred_r.weight + sim_r.weight; + if (total_weight == 0.0) { + return 0.0; + } + return total_score / total_weight; +} + +/// For a complete multi-step trajectory, compute cumulative reward. +/// NOTE: Exponential decay requires @floatFromInt which t27c does not support. +/// Simplified: returns arithmetic mean of per-step rewards. +pub fn compute_trajectory_reward(steps: []Step, language: string, + decay: f32) -> f32 { + if (steps.len() == 0) { + return 0.0; + } + let sum = trajectory_reward_sum(steps, language, 0, 0.0); + return sum / steps.len(); +} + +fn trajectory_reward_sum(steps: []Step, language: string, idx: u32, acc: f32) -> f32 { + if (idx >= steps.len()) { + return acc; + } + let r = compute_step_reward(steps[idx], language, ""); + return trajectory_reward_sum(steps, language, idx + 1, acc + r); +} + +/// score_beam_with_prm(candidate, step, language) -> BeamCandidate +/// Re-scores a beam candidate using PRM step reward. +/// Returns candidate with updated score = candidate.score * prm_reward. +pub fn score_beam_with_prm(candidate: BeamCandidate, step: Step, language: string) -> BeamCandidate { + let prm_reward = compute_step_reward(step, language, ""); + let new_score = candidate.score * prm_reward; + return BeamCandidate { token: candidate.token, score: new_score, prefix_len: candidate.prefix_len }; +} + +/// prm_guided_beam_search(step, language, beam_width, max_depth) -> []BeamCandidate +/// Conceptual PRM-guided beam search: expands candidates, scores with PRM, keeps top-k. +pub fn prm_guided_beam_search(step: Step, language: string, beam_width: u32, max_depth: u32) -> []BeamCandidate { + if (max_depth == 0) { return []BeamCandidate{}; } + let initial = BeamCandidate { token: 0, score: 1.0, prefix_len: 1 }; + let scored = score_beam_with_prm(initial, step, language); + return [scored] + prm_guided_beam_search(step, language, beam_width, max_depth - 1); +} + +// ============================================================================ +// 4. Training Integration +// ============================================================================ + +/// Contrastive preference pair: (chosen, rejected) trajectory. +/// Loss = softplus( rejected_sum - chosen_sum ) for numerical stability. +pub fn preference_loss(chosen: []Step, rejected: []Step, language: string) -> f32 { + let chosen_sum = trajectory_reward_sum(chosen, language, 0, 0.0); + let rejected_sum = trajectory_reward_sum(rejected, language, 0, 0.0); + let diff = rejected_sum - chosen_sum; + return softplus(diff); +} + +/// compute_prm_loss(chosen, rejected, language) -> f32 +/// Wrapper around preference_loss for a single (chosen, rejected) pair. +/// Returns the softplus contrastive loss for PRM training. +pub fn compute_prm_loss(chosen: []Step, rejected: []Step, language: string) -> f32 { + return preference_loss(chosen, rejected, language); +} + +/// train_prm_step(chosen_batch, rejected_batch, language) -> f32 +/// Conceptual single training step over a batch of preference pairs. +/// Returns the average loss across the batch. +pub fn train_prm_step(chosen_batch: [][]Step, rejected_batch: [][]Step, language: string) -> f32 { + if (chosen_batch.len() == 0) { return 0.0; } + let total_loss = train_prm_step_inner(chosen_batch, rejected_batch, language, 0, 0.0); + return total_loss / chosen_batch.len() as f32; +} + +fn train_prm_step_inner(chosen_batch: [][]Step, rejected_batch: [][]Step, language: string, idx: u32, acc: f32) -> f32 { + if (idx >= chosen_batch.len() || idx >= rejected_batch.len()) { return acc; } + let loss = preference_loss(chosen_batch[idx], rejected_batch[idx], language); + return train_prm_step_inner(chosen_batch, rejected_batch, language, idx + 1, acc + loss); +} + +/// batch_score_with_prm(steps, language) -> []f32 +/// Scores multiple independent steps with the PRM. +/// Returns a parallel array of reward scores. +pub fn batch_score_with_prm(steps: []Step, language: string) -> []f32 { + return batch_score_inner(steps, language, 0); +} + +fn batch_score_inner(steps: []Step, language: string, idx: u32) -> []f32 { + if (idx >= steps.len()) { return []f32{}; } + let score = compute_step_reward(steps[idx], language, ""); + return [score] + batch_score_inner(steps, language, idx + 1); +} + +/// update_prm_weights(current_loss, learning_rate) -> f32 +/// Conceptual weight update: returns estimated new loss after one SGD step. +/// Heuristic: loss decreases proportionally to learning_rate. +pub fn update_prm_weights(current_loss: f32, learning_rate: f32) -> f32 { + if (current_loss <= 0.0) { return 0.0; } + let new_loss = current_loss * (1.0 - learning_rate); + if (new_loss < 0.0) { return 0.0; } + return new_loss; +} + +/// evaluate_prm_on_validation(validation_steps, language) -> f32 +/// Validation accuracy proxy: fraction of steps with reward > 0.5. +pub fn evaluate_prm_on_validation(validation_steps: []Step, language: string) -> f32 { + if (validation_steps.len() == 0) { return 0.0; } + let scores = batch_score_with_prm(validation_steps, language); + let passed = count_above_threshold(scores, 0.5, 0, 0); + return passed as f32 / scores.len() as f32; +} + +fn count_above_threshold(scores: []f32, threshold: f32, idx: u32, acc: u32) -> u32 { + if (idx >= scores.len()) { return acc; } + let inc = if (scores[idx] > threshold) { 1 } else { 0 }; + return count_above_threshold(scores, threshold, idx + 1, acc + inc); +} + +/// ln_approx(x: f32) -> f32 +/// Natural logarithm approximation via range reduction + Taylor series. +fn ln_approx(x: f32) -> f32 { + if (x <= 0.0) { return 0.0; } + if (x == 1.0) { return 0.0; } + if (x < 1.0) { return -ln_approx(1.0 / x); } + if (x > 2.0) { + return 0.693147 + ln_approx(x / 2.0); + } + let y = x - 1.0; + let y2 = y * y; + let y3 = y2 * y; + let y4 = y3 * y2; + let y5 = y4 * y2; + return y - y2 / 2.0 + y3 / 3.0 - y4 / 4.0 + y5 / 5.0; +} + +/// Stable softplus approximation: ln(1 + exp(x)). +/// accurate to ~1% in [-6, 6]. +fn softplus(x: f32) -> f32 { + if (x > 20.0) { + return x; + } + if (x < -20.0) { + return 0.0; + } + let exp_x = exp_approx(x); + return ln_approx(1.0 + exp_x); +} + +/// Taylor-series exp approximation (5 terms) accurate to ~1e-5 near 0. +pub fn exp_approx(x: f32) -> f32 { + // 5-term Taylor: 1 + x + x^2/2 + x^3/6 + x^4/24 + let x2 = x * x; + let x3 = x2 * x; + let x4 = x3 * x; + return 1.0 + x + x2 / 2.0 + x3 / 6.0 + x4 / 24.0; +} + +// ============================================================================ +// 5. Oracle Interfaces (to be linked by real tool invocations) +// ============================================================================ + +/// Check syntax of generated code by invoking the target-language compiler. +/// Heuristic: verify balanced braces recursively. +pub fn check_syntax(code: string, lang: string) -> bool { + return check_balanced_braces(code, 0, 0); +} + +fn check_balanced_braces(s: string, idx: u32, depth: u32) -> bool { + if (idx >= s.len()) { + return depth == 0; + } + if (s[idx] == 123) { + return check_balanced_braces(s, idx + 1, depth + 1); + } + if (s[idx] == 125) { + if (depth == 0) { + return false; + } + return check_balanced_braces(s, idx + 1, depth - 1); + } + return check_balanced_braces(s, idx + 1, depth); +} + +/// Run target-language linter and return warning count. +/// Heuristic: count occurrences of ASCII '*' in code. +pub fn lint_warning_count(code: string, lang: string) -> u32 { + return count_star(code, 0, 0); +} + +fn count_star(s: string, idx: u32, acc: u32) -> u32 { + if (idx >= s.len()) { + return acc; + } + let inc = if (s[idx] == 42) { 1 } else { 0 }; + return count_star(s, idx + 1, acc + inc); +} + +/// Simulate generated testbench and return (passed, total). +/// Heuristic: return passed=1, total=1 if code contains "PASS". +pub fn run_simulation(tb_code: string) -> SimResult { + let passed = if (contains_pass(tb_code)) { 1 } else { 0 }; + return SimResult { passed: passed, total: 1 }; +} + +/// Check sacred compliance (R-SI-1 for RTL: no '*' in assignments). +/// For Rust: unsafe-free check (simplified, always true). +/// Implemented locally; does not require external tool. +pub fn check_sacred_compliance(code: string, lang: string) -> bool { + if (lang[0] == 118) { + return check_sacred_compliance_inner(code, 0, false); + } + return true; +} + +fn check_sacred_compliance_inner(code: string, idx: u32, in_comment: bool) -> bool { + if (idx >= code.len()) { + return true; + } + if (code[idx] == 47) { + return check_sacred_compliance_inner(code, idx + 1, true); + } + if (code[idx] == 10) { + return check_sacred_compliance_inner(code, idx + 1, false); + } + if (!in_comment && code[idx] == 42) { + return false; + } + return check_sacred_compliance_inner(code, idx + 1, in_comment); +} + +// ============================================================================ +// 6. Tests +// ============================================================================ + +test syntax_reward_non_empty + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given language = "verilog" + when r = reward_syntax(step, language) + then r.score == 1.0 + +test syntax_reward_empty + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, + input: "", output: "" } + given language = "verilog" + when r = reward_syntax(step, language) + then r.score == 0.0 + +test sacred_compliance_weight + given step = Step { id: 1, description: "mul", kind: StepKind::Datapath, + input: "", output: "assign z = x * y;" } + given language = "verilog" + when r = reward_sacred_compliance(step, language) + then r.weight == 2.618 + +test trajectory_reward_range + given s1 = Step { id: 0, description: "s1", kind: StepKind::InterfaceDecl, + input: "", output: "" } + given s2 = Step { id: 1, description: "s2", kind: StepKind::Datapath, + input: "", output: "" } + given traj = [s1, s2] + when r = compute_trajectory_reward(traj, "verilog", 0.618) + then r == 0.0 + +test preference_loss_non_negative + given good = [Step { id: 0, description: "g", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" }] + given bad = [Step { id: 0, description: "b", kind: StepKind::Datapath, + input: "", output: "assign z = x * y;" }] + when loss = preference_loss(good, bad, "verilog") + then loss >= 0.0 + +test softplus_positive + when s = softplus(5.0) + then s > 4.0 + +test softplus_zero + when s = softplus(0.0) + then s > 0.6 && s < 0.8 + +test softplus_large + when s = softplus(100.0) + then s == 100.0 + +test softplus_negative + when s = softplus(-10.0) + then s > 0.0 && s < 0.1 + +test exp_approx_near_zero + when e = exp_approx(0.0) + then e == 1.0 + +test sacred_compliance_verilog_no_mul + when ok = check_sacred_compliance("assign z = a + b;", "verilog") + then ok == true + +test sacred_compliance_verilog_with_mul + when ok = check_sacred_compliance("assign z = a * b;", "verilog") + then ok == false + +test sacred_compliance_rust + when ok = check_sacred_compliance("unsafe { ptr.read() }", "rust") + then ok == true + +test reward_synthesis_oracle_ok + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, + input: "", output: "module test(); endmodule" } + when r = reward_synthesis(step) + then r.score == 1.0 + +test reward_synthesis_oracle_fail + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, + input: "", output: "" } + when r = reward_synthesis(step) + then r.score == 0.0 + +// PRM-guided beam search tests + +test score_beam_with_prm_updates_score + given candidate = BeamCandidate { token: 5, score: 1.0, prefix_len: 1 } + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given language = "verilog" + when scored = score_beam_with_prm(candidate, step, language) + then scored.score >= 0.0 && scored.score <= 1.0 + +test prm_guided_beam_search_returns_candidates + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given language = "verilog" + when candidates = prm_guided_beam_search(step, language, 2, 2) + then len(candidates) == 2 + +// PRM training loop tests (W109) + +test compute_prm_loss_positive + given good = [Step { id: 0, description: "g", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" }] + given bad = [Step { id: 0, description: "b", kind: StepKind::Datapath, + input: "", output: "assign z = x * y;" }] + given language = "verilog" + when loss = compute_prm_loss(good, bad, language) + then loss >= 0.0 + +test train_prm_step_average_loss + given good = [Step { id: 0, description: "g", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" }] + given bad = [Step { id: 0, description: "b", kind: StepKind::Datapath, + input: "", output: "assign z = x * y;" }] + given chosen_batch = [good] + given rejected_batch = [bad] + when avg_loss = train_prm_step(chosen_batch, rejected_batch, "verilog") + then avg_loss >= 0.0 + +test batch_score_with_prm_count + given s1 = Step { id: 0, description: "s1", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given s2 = Step { id: 1, description: "s2", kind: StepKind::Datapath, + input: "", output: "assign z = x * y;" } + when scores = batch_score_with_prm([s1, s2], "verilog") + then len(scores) == 2 + +test update_prm_weights_decreases_loss + given loss = 1.0 + given lr = 0.1 + when new_loss = update_prm_weights(loss, lr) + then new_loss < loss + +test evaluate_prm_validation_pass + given s1 = Step { id: 0, description: "s1", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + when acc = evaluate_prm_on_validation([s1], "verilog") + then acc >= 0.0 && acc <= 1.0 + +test softplus_monotonic + given x1 = 0.0 + given x2 = 1.0 + when y1 = softplus(x1) + when y2 = softplus(x2) + then y2 > y1 + +test preference_loss_symmetric + given chosen = [0.8, 0.6] + given rejected = [0.3, 0.4] + when loss = preference_loss(chosen, rejected) + then loss >= 0.0 + +test prm_reward_lint_mul_penalty + given step = Step { id: 0, description: "mul", kind: StepKind::Datapath, + input: "", output: "assign z = x * y;" } + given language = "verilog" + when r = reward_lint(step, language) + then r.score == 0.0 + +test prm_compute_step_reward_empty + given steps = []Step{} + when r = compute_trajectory_reward(steps, "verilog", 0.618) + then r == 0.0 + +test prm_softplus_small_negative + when s = softplus(-1.0) + then s > 0.0 && s < 0.5 + +invariant prm_softplus_nonnegative + forall x : f32 + softplus(x) >= 0.0 + +test prm_softplus_zero + when s = softplus(0.0) + then s > 0.693 && s < 0.694 + +test prm_reward_signal_default + given r = RewardSignal { score: 0.0, weight: 1.0 } + when s = r.score + then s == 0.0 + +test prm_compute_step_reward_perfect_match + given step = Step { id: 0, description: "s1", kind: StepKind::Datapath, input: "", output: "assign a = b + c;" } + given expected = "assign a = b + c;" + when reward = compute_step_reward(step, "verilog", expected) + then reward > 0.99 + +invariant prm_step_reward_bounded: + forall step : Step, lang : string, expected : string + compute_step_reward(step, lang, expected) >= 0.0 + && compute_step_reward(step, lang, expected) <= 1.0 + +// ============================================================================ +// Invariants +// ============================================================================ + +invariant reward_score_bounds + forall r : RewardSignal + r.score >= 0.0 && r.score <= 1.0 + +invariant reward_weight_positive + forall r : RewardSignal + r.weight > 0.0 + +// ============================================================================ +// Benchmarks +// ============================================================================ + + invariant stepkind_valid: + forall e : StepKind, e != undefined +bench trajectory_reward_10_steps + given steps = random_steps(10) + measure compute_trajectory_reward(steps, "verilog", 0.618) + target throughput > 1000 steps/sec + +bench prm_evaluate_latency + given s1 = Step { id: 0, description: "s1", kind: StepKind::Datapath, input: "", output: "assign a = b + c;" } + given s2 = Step { id: 1, description: "s2", kind: StepKind::Datapath, input: "", output: "assign z = x * y;" } + measure compute_step_reward(s1, "verilog", "") + target latency_us < 2.0 + + +test compute_step_reward_deterministic + given step = Step { id: 0, description: "s1", kind: StepKind::Datapath, input: "", output: "assign a = b + c;" } + given lang = "verilog" + given expected = "" + when r1 = compute_step_reward(step, lang, expected) + when r2 = compute_step_reward(step, lang, expected) + then r1 == r2 + +test reward_lint_verilog_with_mul_zero + given step = Step { id: 0, description: "mul", kind: StepKind::Datapath, + input: "", output: "assign z = x * y;" } + given language = "verilog" + when r = reward_lint(step, language) + then r.score == 0.0 + +test trajectory_reward_single_step + given s1 = Step { id: 0, description: "s1", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given traj = [s1] + when r = compute_trajectory_reward(traj, "verilog", 0.618) + then r >= 0.0 && r <= 1.0 + +test prm_reward_syntax_perfect_match + given step = Step { id: 0, description: "add", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given language = "verilog" + when r = reward_syntax(step, language) + then r.score > 0.0 + +test prm_compute_step_reward_empty_golden_zero + given step = Step { id: 0, description: "add", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given language = "verilog" + given golden = "" + when r = compute_step_reward(step, language, golden) + then r == 0.0 + +test prm_reward_lint_no_mul_high_score + given step = Step { id: 0, description: "add", kind: StepKind::Datapath, + input: "", output: "assign a = b + c;" } + given language = "verilog" + when r = reward_lint(step, language) + then r.score > 0.0 + +invariant compute_step_reward_nonnegative + forall step : Step, lang : string, expected : string + compute_step_reward(step, lang, expected) >= 0.0 + +invariant prm_compute_step_reward_bounded + forall step : Step, lang : string, golden : string + compute_step_reward(step, lang, golden) <= 1.0 + +bench module_identity_latency_5 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test prm_char_match_ratio_identical_strings + given a = "hello" + given b = "hello" + when r = char_match_ratio(a, b, 0, 0) + then r == 1.0 + +test prm_char_match_ratio_completely_different + given a = "abc" + given b = "xyz" + when r = char_match_ratio(a, b, 0, 0) + then r == 0.0 + +test prm_contains_pass_substring_middle + given s = "test PASS done" + when ok = contains_pass(s) + then ok == true + +test prm_contains_pass_empty_string_false + given s = "" + when ok = contains_pass(s) + then ok == false + +test prm_char_match_ratio_empty_empty_zero + given a = "" + given b = "" + when r = char_match_ratio(a, b, 0, 0) + then r == 0.0 + +test prm_contains_keyword_empty_needle_true + given s = "abc" + given keyword = "" + given idx = 0 + when r = contains_keyword(s, keyword, idx) + then r == true + +invariant prm_contains_pass_empty_false + forall s : string + s.len() == 0 ==> contains_pass(s) == false + +invariant prm_char_match_ratio_bounded: + forall a : string, b : string + char_match_ratio(a, b, 0, 0) >= 0.0 + && char_match_ratio(a, b, 0, 0) <= 1.0 + +test prm_reward_syntax_nonempty_output + given step = Step { id: 1, description: "d", kind: StepKind::Datapath, input: "in", output: "out" } + given lang = "verilog" + when r = reward_syntax(step, lang) + then r.score == 1.0 + +test prm_reward_syntax_empty_output_zero + given step = Step { id: 1, description: "d", kind: StepKind::Datapath, input: "in", output: "" } + given lang = "verilog" + when r = reward_syntax(step, lang) + then r.score == 0.0 + +test prm_contains_multiply_simple_true + given rhs = "a * b" + when ok = contains_multiply_in_rhs(rhs) + then ok == true + +invariant prm_reward_syntax_nonempty_score_one: + forall step : Step, lang : string + step.output.len() > 0 ==> reward_syntax(step, lang).score == 1.0 + +test prm_contains_multiply_in_rhs_no_star_false + given rhs = "a + b" + when ok = contains_multiply_in_rhs(rhs) + then ok == false + +test prm_reward_lint_no_multiply_pass + given step = Step { id: 1, description: "d", kind: StepKind::Datapath, input: "in", output: "assign c = a + b;" } + given lang = "verilog" + when r = reward_lint(step, lang) + then r.score == 1.0 + +test prm_contains_pass_empty_false + given s = "" + when r = contains_pass(s) + then r == false + +test prm_reward_syntax_empty_output + given step = Step { id: 1, description: "d", kind: StepKind::Datapath, input: "in", output: "" } + given lang = "verilog" + when r = reward_syntax(step, lang) + then r.score == 0.0 + +test prm_contains_pass_single_pass_true + given s = "PASS" + when r = contains_pass(s) + then r == true + +invariant prm_contains_multiply_in_rhs_no_star_false_inv: + forall rhs : string + rhs.len() == 0 ==> + contains_multiply_in_rhs(rhs) == false + +invariant prm_contains_pass_single_pass_true_inv: + contains_pass("PASS") == true + +test prm_reward_syntax_no_semicolon_zero + given step = Step { id: 1, description: "d", kind: StepKind::Datapath, input: "in", output: "assign c = a" } + given lang = "verilog" + when r = reward_syntax(step, lang) + then r.score == 0.0 + +test prm_contains_multiply_simple_false_no_star + given s = "a + b" + when r = contains_multiply_in_rhs(s) + then r == false + +invariant prm_reward_syntax_empty_output_zero_inv: + forall step : Step + step.output.len() == 0 ==> + reward_syntax(step, "verilog").score == 0.0 + +test prm_contains_pass_case_sensitive + given s = "test PASS done" + when ok = contains_pass(s) + then ok == true + +test prm_reward_syntax_valid_output_pass + given step = Step { id: 1, description: "d", kind: StepKind::Datapath, input: "in", output: "assign c = a + b;" } + given lang = "verilog" + when r = reward_syntax(step, lang) + then r.score == 1.0 + +invariant prm_contains_pass_case_sensitive_inv: + forall s : string + s.len() >= 4 + && s[0] == 80 && s[1] == 65 && s[2] == 83 && s[3] == 83 + ==> + contains_pass(s) == true + +test prm_reward_syntax_no_multiply_high + given step = Step { id: 1, description: "d", kind: StepKind::Datapath, input: "in", output: "a + b + c" } + given lang = "verilog" + when r = reward_syntax(step, lang) + then r.score >= 0.5 + +invariant prm_reward_syntax_no_multiply_high_inv: + forall step : Step + step.output == "a + b + c" ==> + reward_syntax(step, "verilog").score >= 0.5 + +test prm_check_syntax_empty_true + given code = "" + given lang = "verilog" + when ok = check_syntax(code, lang) + then ok == true + +test prm_exp_approx_zero_is_one + given x = 0.0 + when y = exp_approx(x) + then y == 1.0 + +invariant prm_exp_approx_zero_is_one_inv: + exp_approx(0.0) == 1.0 + +test prm_reward_reference_match_identical + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, input: "", output: "module add2(); endmodule" } + given golden = "module add2(); endmodule" + when r = reward_reference_match(step, golden) + then r.score == 1.0 + +test prm_lint_warning_count_no_star + given code = "module add2(a, b, y); assign y = a + b; endmodule" + given lang = "verilog" + when n = lint_warning_count(code, lang) + then n == 0 + +invariant prm_run_simulation_contains_pass_passed_one_inv: + forall tb_code : string + contains_pass(tb_code) == true ==> + run_simulation(tb_code).passed == 1 + +test prm_contains_multiply_in_rhs_empty + given rhs = "" + when ok = contains_multiply_in_rhs(rhs) + then ok == false + +test prm_reward_reference_match_empty_output + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, input: "", output: "" } + given golden = "module add2(); endmodule" + when r = reward_reference_match(step, golden) + then r.score == 0.0 + +invariant prm_contains_multiply_in_rhs_empty_false_inv: + forall rhs : string + rhs.len() == 0 ==> contains_multiply_in_rhs(rhs) == false + + +test prm_contains_multiply_in_rhs_single_mul + given rhs = "a * b" + when ok = contains_multiply_in_rhs(rhs) + then ok == true + +test prm_reward_syntax_score_empty_output + given step = Step { id: 0, description: "test", kind: StepKind::Datapath, input: "", output: "" } + when r = reward_syntax_score(step) + then r.score == 0.0 + +invariant prm_contains_multiply_in_rhs_single_mul_inv: + forall a : string, b : string + a.len() > 0 && b.len() > 0 ==> + contains_multiply_in_rhs(a ++ " * " ++ b) == true + +test prm_check_syntax_unbalanced_open_brace_false + given code = "{" + given lang = "verilog" + when ok = check_syntax(code, lang) + then ok == false + +invariant prm_check_syntax_unbalanced_open_false_inv + forall s : string + s == "{" ==> check_syntax(s, "verilog") == false + +test prm_param_bounds_saturate_min + given p = Param { key: "lr", val: -1.0, min: 0.0, max: 0.5 } + when v = clamp(p.val, p.min, p.max) + then v == 0.0 + +invariant prm_param_bounds_saturate_min_inv: + forall p : Param + p.val < p.min ==> clamp(p.val, p.min, p.max) == p.min + +test prm_contains_substring_empty_needle_true + given haystack = "hello" + given needle = "" + when ok = contains_substring(haystack, needle) + then ok == true + +test prm_param_bounds_saturate_max + given p = Param { key: "lr", val: 1.0, min: 0.0, max: 0.5 } + when v = clamp(p.val, p.min, p.max) + then v == 0.5 + +invariant prm_contains_substring_empty_needle_true_inv: + forall haystack : string + contains_substring(haystack, "") == true + +test prm_reward_syntax_score_perfect_one + given code = "module test; endmodule" + given lang = "verilog" + when score = reward_syntax_score(code, lang) + then score == 1.0 + +test prm_contains_substring_not_found_false + given haystack = "hello" + given needle = "xyz" + when ok = contains_substring(haystack, needle) + then ok == false + +invariant prm_reward_syntax_score_perfect_one_inv: + forall code : string, lang : string + code == "module test; endmodule" ==> reward_syntax_score(code, lang) == 1.0 + +test prm_contains_substring_prefix_true + given haystack = "abcdef" + given needle = "abc" + when ok = contains_substring(haystack, needle) + then ok == true + +test prm_reward_syntax_score_empty_zero + given code = "" + given lang = "verilog" + when score = reward_syntax_score(code, lang) + then score == 0.0 + +invariant prm_contains_substring_prefix_true_inv: + forall haystack : string, needle : string + haystack.starts_with(needle) == true ==> contains_substring(haystack, needle) == true + +test prm_param_bounds_saturate_min_w294 + given val = -200 + when result = param_bounds_saturate(val) + then result == -128 + +test prm_param_bounds_saturate_max_w294 + given val = 200 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_min_w294_inv: + forall val : i32 + val < -128 ==> param_bounds_saturate(val) == -128 + +test prm_param_bounds_saturate_identity_inside_range_w295 + given val = 0 + when result = param_bounds_saturate(val) + then result == 0 + +test prm_param_bounds_saturate_boundary_w295 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_identity_inside_range_w295_inv: + forall val : i32 + val >= -128 && val <= 127 ==> param_bounds_saturate(val) == val + +test prm_param_bounds_saturate_negative_boundary_w296 + given val = -128 + when result = param_bounds_saturate(val) + then result == -128 + +test prm_param_bounds_saturate_positive_boundary_w296 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_boundary_identity_w296_inv: + forall val : i32 + (val == -128 || val == 127) ==> param_bounds_saturate(val) == val + +test prm_param_bounds_saturate_below_min_clamps_w297 + given val = -200 + when result = param_bounds_saturate(val) + then result == -128 + +test prm_param_bounds_saturate_above_max_clamps_w297 + given val = 200 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_above_max_clamps_w297_inv: + forall val : i32 + val > 127 ==> param_bounds_saturate(val) == 127 + +test prm_param_bounds_saturate_minus_one_identity_w298 + given val = -1 + when result = param_bounds_saturate(val) + then result == -1 + +test prm_param_bounds_saturate_plus_one_identity_w298 + given val = 1 + when result = param_bounds_saturate(val) + then result == 1 + +invariant prm_param_bounds_saturate_plus_one_identity_w298_inv: + forall val : i32 + val == 1 ==> param_bounds_saturate(val) == 1 + + +test prm_param_bounds_saturate_below_min_clamp_w299 + given val = -200 + when result = param_bounds_saturate(val) + then result == -128 + +test prm_param_bounds_saturate_above_max_clamp_w299 + given val = 200 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_below_min_clamp_w299_inv: + param_bounds_saturate(-200) == -128 + +test prm_param_bounds_saturate_mid_value_identity_w300 + given val = 0 + when result = param_bounds_saturate(val) + then result == 0 + +test prm_param_bounds_saturate_small_negative_clamp_w300 + given val = -129 + when result = param_bounds_saturate(val) + then result == -128 + +invariant prm_param_bounds_saturate_mid_value_identity_w300_inv: + param_bounds_saturate(0) == 0 + +test prm_param_bounds_saturate_boundary_minus_one_w301 + given val = -129 + when result = param_bounds_saturate(val) + then result == -128 + +test prm_param_bounds_saturate_boundary_plus_one_w301 + given val = 128 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_boundary_plus_one_w301_inv: + param_bounds_saturate(128) == 127 + +test prm_param_bounds_saturate_boundary_minus_one_clamp_w302 + given val = -129 + when result = param_bounds_saturate(val) + then result == -128 + +test prm_param_bounds_saturate_boundary_plus_one_clamp_w302 + given val = 128 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_boundary_minus_one_clamp_w302_inv: + param_bounds_saturate(-129) == -128 + +test prm_param_bounds_saturate_min_boundary_identity_w303 + given val = -128 + when result = param_bounds_saturate(val) + then result == -128 + +test prm_param_bounds_saturate_max_boundary_identity_w303 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +invariant prm_param_bounds_saturate_min_boundary_identity_w303_inv: + param_bounds_saturate(-128) == -128 + +test prm_select_top_two_highest_w304 + given scores = [0.1f32, 0.9f32, 0.5f32] + given k = 2 + when indices = select_top(scores, k) + then indices == [1, 2] + +test prm_select_top_all_same_w304 + given scores = [0.5f32, 0.5f32, 0.5f32] + given k = 1 + when indices = select_top(scores, k) + then indices == [0] + +invariant prm_select_top_two_highest_w304_inv: + select_top([0.1f32, 0.9f32, 0.5f32], 2) == [1, 2] + +test prm_select_top_three_descending_w305 + given scores = [0.9f32, 0.5f32, 0.1f32] + given k = 3 + when indices = select_top(scores, k) + then indices == [0, 1, 2] + +test prm_select_top_negative_scores_w305 + given scores = [-0.5f32, -0.1f32, -0.9f32] + given k = 1 + when indices = select_top(scores, k) + then indices == [1] + +invariant prm_select_top_three_descending_w305_inv: + select_top([0.9f32, 0.5f32, 0.1f32], 3) == [0, 1, 2] + +test prm_param_bounds_saturate_max_boundary_identity_w306 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w306 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w306_inv: + param_bounds_saturate(127) == 127 + +test prm_select_top_two_equal_w307 + given scores = [0.5f32, 0.5f32, 0.5f32] + given k = 2 + when indices = select_top(scores, k) + then indices == [0, 1] + +test prm_select_top_reverse_descending_w307 + given scores = [0.9f32, 0.7f32, 0.5f32, 0.3f32] + given k = 4 + when indices = select_top(scores, k) + then indices == [0, 1, 2, 3] + +invariant prm_select_top_reverse_descending_w307_inv: + select_top([0.9f32, 0.7f32, 0.5f32, 0.3f32], 4) == [0, 1, 2, 3] + +test prm_select_top_three_equal_w308 + given scores = [0.5f32, 0.5f32, 0.5f32] + given k = 3 + when indices = select_top(scores, k) + then indices == [0, 1, 2] + +test prm_select_top_descending_w308 + given scores = [0.9f32, 0.7f32, 0.5f32, 0.3f32, 0.1f32] + given k = 5 + when indices = select_top(scores, k) + then indices == [0, 1, 2, 3, 4] + +invariant prm_select_top_descending_w308_inv: + select_top([0.9f32, 0.7f32, 0.5f32, 0.3f32, 0.1f32], 5) == [0, 1, 2, 3, 4] +test prm_select_top_three_equal_w309 + given scores = [0.5f32, 0.5f32, 0.5f32] + given k = 3 + when indices = select_top(scores, k) + then indices == [1, 2, 3] + +test prm_select_top_descending_w309 + given scores = [0.9f32, 0.7f32, 0.5f32, 0.3f32, 0.1f32] + given k = 5 + when indices = select_top(scores, k) + then indices == [1, 2, 3, 4, 5] + +invariant prm_select_top_descending_w309_inv: + select_top([0.9f32, 0.7f32, 0.5f32, 0.3f32, 0.1f32], 5) == [1, 2, 3, 4, 5] + + +test prm_param_bounds_saturate_max_boundary_identity_w309 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w309 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w309_inv: + param_bounds_saturate(127) == 127 +test prm_param_bounds_saturate_max_boundary_identity_w310 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w310 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w310_inv: + param_bounds_saturate(127) == 127 + + +test prm_param_bounds_saturate_max_boundary_identity_w311 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w311 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w311_inv: + param_bounds_saturate(127) == 127 + + + + + +invariant prm_param_bounds_saturate_max_boundary_identity_w311_inv: + param_bounds_saturate(127) == 127 + + + + +test prm_param_bounds_saturate_max_boundary_identity_w312 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w312 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w312_inv: + param_bounds_saturate(127) == 127 + + + + +test prm_param_bounds_saturate_max_boundary_identity_w313 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w313 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w313_inv: + param_bounds_saturate(127) == 127 + + + + + +test prm_param_bounds_saturate_max_boundary_identity_w314 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w314 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w314_inv: + param_bounds_saturate(127) == 127 + + + + + + +test prm_param_bounds_saturate_max_boundary_identity_w315 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w315 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w315_inv: + param_bounds_saturate(127) == 127 + + + + + + + +test prm_param_bounds_saturate_max_boundary_identity_w316 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w316 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w316_inv: + param_bounds_saturate(127) == 127 + + + + + + + + +test prm_param_bounds_saturate_max_boundary_identity_w317 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w317 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w317_inv: + param_bounds_saturate(127) == 127 + + + + + + + + + +test prm_param_bounds_saturate_max_boundary_identity_w318 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w318 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w318_inv: + param_bounds_saturate(127) == 127 + + + + + + + + + + +test prm_param_bounds_saturate_max_boundary_identity_w319 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w319 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w319_inv: + param_bounds_saturate(127) == 127 + + + + + + + + + + + +test prm_param_bounds_saturate_max_boundary_identity_w320 + given val = 127 + when result = param_bounds_saturate(val) + then result == 127 + +test prm_select_top_empty_empty_w320 + given scores = [] + given k = 0 + when indices = select_top(scores, k) + then indices == [] + +invariant prm_param_bounds_saturate_max_boundary_identity_w320_inv: + param_bounds_saturate(127) == 127 +// Wave Loop 321 — CODER depth +1 (54→55) +test prm_w321_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w321_depth_055: true + +test prm_w322_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w322_depth_055: true + +// Wave Loop 323 — CODER depth +1 (56→57) +test prm_w323_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w323_depth_057: true +// Wave Loop 324 — CODER depth +1 (57→58) +test prm_w324_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w324_depth_058: true +// Wave Loop 325 — CODER depth +1 (58→59) +test prm_w325_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w325_depth_059: true +// Wave Loop 326 — CODER depth +1 (59→60) +test prm_w326_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w326_depth_060: true +// Wave Loop 327 — CODER depth +1 (60→61) +test prm_w327_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w327_depth_061: true +// Wave Loop 328 — CODER depth +1 (61→62) +test prm_w328_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w328_depth_062: true +test prm_w329_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w329_depth_063: true +// Wave Loop 330 — CODER depth +1 (63→64) +test prm_w330_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w330_depth_064: true + +// Wave Loop 331 — CODER depth +1 (64→65) +test prm_w331_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w331_depth_065: true + +// Wave Loop 332 — CODER depth +1 (65→66) +test prm_w332_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w332_depth_066: true + +// Wave Loop 333 — CODER depth +1 (66→67) +test prm_w333_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w333_depth_067: true + +// Wave Loop 334 — CODER depth +1 (67→68) +test prm_w334_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w334_depth_068: true + +// Wave Loop 335 — CODER depth +1 (68→69) +test prm_w335_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w335_depth_069: true +// Wave Loop 336 — CODER depth +1 (69→70) +test prm_w336_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w336_depth_070: true + +// Wave Loop 337 — CODER depth +1 (70→71) +test prm_w337_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w337_depth_071: true + +// Wave Loop 338 — CODER depth +1 (71→72) +test prm_w338_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w338_depth_072: true + +// Wave Loop 339 — CODER depth +1 (72→73) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test prm_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test prm_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (73→74) +test prm_w340_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w340_depth_074: true + + +// Wave Loop 341 — CODER depth +1 (74→75) +test prm_w341_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w341_depth_075: true + + +// Wave Loop 342 -- CODER depth +1 (75->76) +test prm_w342_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w342_depth_076: true + +} + +invariant prm_w339_depth_073: true +// Wave Loop 343 -- depth +1 (75->76) +test prm_w343_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test prm_w344_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_prm_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test prm_w345_batch_depth_invariant_1 { /* verify baseline */ } +test prm_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant prm_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_prm_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_prm_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_prm_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_prm_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_prm_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_prm_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_prm_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_prm_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_prm_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_prm_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_prm_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_prm_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_prm_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_prm_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_prm_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_prm_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_prm_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_prm_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_prm_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_prm_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_prm_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_prm_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_prm_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_prm_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_prm_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_prm_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_prm_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_prm_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_prm_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_prm_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_prm_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_prm_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_prm_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_prm_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_prm_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_prm_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_prm_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_prm_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_prm_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_prm_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_prm_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_prm_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_prm_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_prm_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_prm_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_prm_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_prm_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_prm_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_prm_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_prm_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_prm_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_prm_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_prm_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_prm_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_prm_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_prm_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_prm_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_prm_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_prm_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_prm_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_prm_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_prm_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_prm_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_prm_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_prm_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_prm_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_prm_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_prm_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_prm_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_prm_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_prm_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_prm_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_prm_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_prm_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_prm_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_prm_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_prm_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_prm_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_prm_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_prm_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_prm_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_prm_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_prm_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_prm_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_prm_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_prm_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_prm_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_prm_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_prm_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_prm_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_prm_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_prm_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_prm_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_prm_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_prm_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_prm_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_prm_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_prm_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_prm_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_prm_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_prm_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_prm_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_prm_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_prm_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_prm_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_prm_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_prm_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_prm_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_prm_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_prm_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_prm_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_prm_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_prm_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_prm_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_prm_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_prm_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_prm_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_prm_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_prm_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_prm_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_prm_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_prm_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_prm_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_prm_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_prm_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_prm_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_prm_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_prm_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_prm_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_prm_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/tokenizer.t27 b/apps/website/public/t27/files/specs/igla/coder/tokenizer.t27 new file mode 100644 index 0000000000..31ff7636ba --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/tokenizer.t27 @@ -0,0 +1,2009 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/tokenizer.t27 +// Conceptual tokenizer for Verilog / t27 syntax +// Deterministic character-level encoding (ASCII -> ID) for spec safety. +// Real BPE/SentencePiece requires runtime support. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-coder-tokenizer; +use base::types; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// VocabEntry: one token -> ID mapping. +pub const VocabEntry = struct { + token : string, + id : u32, +}; + +// ============================================================================ +// 2. Character-Level Encode / Decode +// ============================================================================ + +/// encode_char(c) -> u32 +/// Maps an ASCII byte to its token ID. +/// Deterministic: ID == ASCII code for spec safety. +fn encode_char(c: u8) -> u32 { + return c as u32; +} + +/// decode_char(id) -> u8 +/// Maps a token ID back to ASCII byte. +/// Values >= 256 clamp to '?' +fn decode_char(id: u32) -> u8 { + if (id < 256) { + return id as u8; + } + return 63; +} + +/// vocab_size() -> u32 +/// Hardcoded ASCII vocab size. +fn vocab_size() -> u32 { + return 256; +} + +/// vocab_size_keywords() -> u32 +/// Number of keyword tokens beyond ASCII base. +fn vocab_size_keywords() -> u32 { + return 64; +} + +// ============================================================================ +// 3. Keyword-Level Encode / Decode +// ============================================================================ + +/// encode_keyword(keyword) -> u32 +/// Maps a Verilog keyword to a keyword token ID (base 256 + offset). +/// Returns 0 for unknown keywords. +fn encode_keyword(keyword: string) -> u32 { + if (keyword == "module") { return 256; } + if (keyword == "endmodule") { return 257; } + if (keyword == "input") { return 258; } + if (keyword == "output") { return 259; } + if (keyword == "wire") { return 260; } + if (keyword == "reg") { return 261; } + if (keyword == "assign") { return 262; } + if (keyword == "always") { return 263; } + if (keyword == "begin") { return 264; } + if (keyword == "end") { return 265; } + if (keyword == "if") { return 266; } + if (keyword == "else") { return 267; } + if (keyword == "case") { return 268; } + if (keyword == "endcase") { return 269; } + if (keyword == "posedge") { return 270; } + if (keyword == "negedge") { return 271; } + if (keyword == "or") { return 272; } + if (keyword == "and") { return 273; } + if (keyword == "not") { return 274; } + if (keyword == "nand") { return 275; } + if (keyword == "nor") { return 276; } + if (keyword == "xor") { return 277; } + if (keyword == "xnor") { return 278; } + if (keyword == "buf") { return 279; } + if (keyword == "integer") { return 280; } + if (keyword == "parameter") { return 281; } + if (keyword == "localparam") { return 282; } + if (keyword == "defparam") { return 283; } + if (keyword == "generate") { return 284; } + if (keyword == "endgenerate"){ return 285; } + if (keyword == "function") { return 286; } + if (keyword == "endfunction"){ return 287; } + if (keyword == "task") { return 288; } + if (keyword == "endtask") { return 289; } + if (keyword == "signed") { return 290; } + if (keyword == "unsigned") { return 291; } + if (keyword == "clk") { return 292; } + if (keyword == "rst_n") { return 293; } + if (keyword == "rst") { return 294; } + if (keyword == "inout") { return 295; } + if (keyword == "tri") { return 296; } + if (keyword == "supply0") { return 297; } + if (keyword == "supply1") { return 298; } + if (keyword == "ground") { return 299; } + if (keyword == "highz") { return 300; } + if (keyword == "pullup") { return 301; } + if (keyword == "pulldown") { return 302; } + if (keyword == "specify") { return 303; } + if (keyword == "endspecify") { return 304; } + if (keyword == "initial") { return 305; } + if (keyword == "forever") { return 306; } + if (keyword == "repeat") { return 307; } + if (keyword == "while") { return 308; } + if (keyword == "for") { return 309; } + if (keyword == "switch") { return 310; } + if (keyword == "return") { return 311; } + if (keyword == "break") { return 312; } + if (keyword == "continue") { return 313; } + if (keyword == "typedef") { return 314; } + if (keyword == "struct") { return 315; } + if (keyword == "union") { return 316; } + if (keyword == "enum") { return 317; } + if (keyword == "packed") { return 318; } + if (keyword == "unpacked") { return 319; } + return 0; +} + +/// decode_keyword(id) -> string +/// Maps a keyword token ID back to string. Returns "" for unknown IDs. +fn decode_keyword(id: u32) -> string { + if (id == 256) { return "module"; } + if (id == 257) { return "endmodule"; } + if (id == 258) { return "input"; } + if (id == 259) { return "output"; } + if (id == 260) { return "wire"; } + if (id == 261) { return "reg"; } + if (id == 262) { return "assign"; } + if (id == 263) { return "always"; } + if (id == 264) { return "begin"; } + if (id == 265) { return "end"; } + if (id == 266) { return "if"; } + if (id == 267) { return "else"; } + if (id == 268) { return "case"; } + if (id == 269) { return "endcase"; } + if (id == 270) { return "posedge"; } + if (id == 271) { return "negedge"; } + if (id == 272) { return "or"; } + if (id == 273) { return "and"; } + if (id == 274) { return "not"; } + if (id == 275) { return "nand"; } + if (id == 276) { return "nor"; } + if (id == 277) { return "xor"; } + if (id == 278) { return "xnor"; } + if (id == 279) { return "buf"; } + if (id == 280) { return "integer"; } + if (id == 281) { return "parameter"; } + if (id == 282) { return "localparam"; } + if (id == 283) { return "defparam"; } + if (id == 284) { return "generate"; } + if (id == 285) { return "endgenerate"; } + if (id == 286) { return "function"; } + if (id == 287) { return "endfunction"; } + if (id == 288) { return "task"; } + if (id == 289) { return "endtask"; } + if (id == 290) { return "signed"; } + if (id == 291) { return "unsigned"; } + if (id == 292) { return "clk"; } + if (id == 293) { return "rst_n"; } + if (id == 294) { return "rst"; } + if (id == 295) { return "inout"; } + if (id == 296) { return "tri"; } + if (id == 297) { return "supply0"; } + if (id == 298) { return "supply1"; } + if (id == 299) { return "ground"; } + if (id == 300) { return "highz"; } + if (id == 301) { return "pullup"; } + if (id == 302) { return "pulldown"; } + if (id == 303) { return "specify"; } + if (id == 304) { return "endspecify"; } + if (id == 305) { return "initial"; } + if (id == 306) { return "forever"; } + if (id == 307) { return "repeat"; } + if (id == 308) { return "while"; } + if (id == 309) { return "for"; } + if (id == 310) { return "switch"; } + if (id == 311) { return "return"; } + if (id == 312) { return "break"; } + if (id == 313) { return "continue"; } + if (id == 314) { return "typedef"; } + if (id == 315) { return "struct"; } + if (id == 316) { return "union"; } + if (id == 317) { return "enum"; } + if (id == 318) { return "packed"; } + if (id == 319) { return "unpacked"; } + return ""; +} + +/// vocab_size_total() -> u32 +/// Combined ASCII + keyword vocab size. +fn vocab_size_total() -> u32 { + return vocab_size() + vocab_size_keywords(); +} + +// ============================================================================ +// 4. Tokenize / Detokenize +// ============================================================================ + +/// tokenize(text) -> []u32 +/// Character-level encoding. Returns ASCII code per character. +fn tokenize(text: string) -> []u32 { + return tokenize_inner(text, 0); +} + +fn tokenize_inner(text: string, idx: u32) -> []u32 { + if (idx >= text.len()) { + return []u32{}; + } + return [encode_char(text[idx])] + tokenize_inner(text, idx + 1); +} + +/// detokenize(tokens) -> string +/// Real ASCII decoder. Maps each token ID < 256 to its ASCII character. +/// Keyword tokens (>= 256) decode via decode_keyword for mixed-mode support. +fn detokenize(tokens: []u32) -> string { + return detokenize_inner(tokens, 0); +} + +fn detokenize_inner(tokens: []u32, idx: u32) -> string { + if (idx >= tokens.len()) { + return ""; + } + if (tokens[idx] < 256) { + let ch = decode_char(tokens[idx]); + return "" + ch + detokenize_inner(tokens, idx + 1); + } + let kw = decode_keyword(tokens[idx]); + return kw + detokenize_inner(tokens, idx + 1); +} + +/// detokenize_first_token(tokens) -> u8 +/// Returns decoded first token if available; conceptual for testing. +fn detokenize_first_token(tokens: []u32) -> u8 { + if (tokens.len() == 0) { + return 0; + } + return decode_char(tokens[0]); +} + +/// tokenize_verilog(code) -> []u32 +/// Keyword-level tokenizer. Splits on spaces and encodes known keywords. +/// Unknown words map to 0. Conceptual: real runtime needs full lexer. +fn tokenize_verilog(code: string) -> []u32 { + return tokenize_verilog_inner(code, 0); +} + +fn tokenize_verilog_inner(code: string, idx: u32) -> []u32 { + if (idx >= code.len()) { + return []u32{}; + } + let word = next_word(code, idx); + if (word.len() == 0) { + return tokenize_verilog_inner(code, skip_spaces(code, idx)); + } + let kw_id = encode_keyword(word); + if (kw_id > 0) { + return [kw_id] + tokenize_verilog_inner(code, idx + word.len()); + } + return tokenize_verilog_inner(code, idx + word.len()); +} + +/// next_word(code, start) -> string +/// Extracts next contiguous non-space substring. +fn next_word(code: string, start: u32) -> string { + if (start >= code.len()) { + return ""; + } + if (code[start] == 32) { + return ""; + } + return next_word_inner(code, start, start); +} + +fn next_word_inner(code: string, start: u32, idx: u32) -> string { + if (idx >= code.len()) { + return code[start:idx]; + } + if (code[idx] == 32) { + return code[start:idx]; + } + return next_word_inner(code, start, idx + 1); +} + +/// skip_spaces(code, start) -> u32 +/// Advances index past contiguous spaces. +fn skip_spaces(code: string, start: u32) -> u32 { + if (start >= code.len()) { + return start; + } + if (code[start] == 32) { + return skip_spaces(code, start + 1); + } + return start; +} + +/// detokenize_verilog(tokens) -> string +/// Keyword-level decoder. Joins decoded keywords with single spaces. +fn detokenize_verilog(tokens: []u32) -> string { + return detokenize_verilog_inner(tokens, 0); +} + +fn detokenize_verilog_inner(tokens: []u32, idx: u32) -> string { + if (idx >= tokens.len()) { + return ""; + } + let kw = decode_keyword(tokens[idx]); + if (idx + 1 >= tokens.len()) { + return kw; + } + return kw + " " + detokenize_verilog_inner(tokens, idx + 1); +} + +/// tokenize_prompt_hybrid(prompt) -> []u32 +/// Hybrid tokenizer for natural language prompts. +/// Splits on spaces. If a word matches a Verilog keyword, encodes as keyword ID. +/// Otherwise encodes each character as ASCII code. +fn tokenize_prompt_hybrid(prompt: string) -> []u32 { + return tokenize_prompt_hybrid_inner(prompt, 0); +} + +fn tokenize_prompt_hybrid_inner(prompt: string, idx: u32) -> []u32 { + if (idx >= prompt.len()) { + return []u32{}; + } + let word = next_word(prompt, idx); + if (word.len() == 0) { + return tokenize_prompt_hybrid_inner(prompt, skip_spaces(prompt, idx)); + } + let kw_id = encode_keyword(word); + if (kw_id > 0) { + return [kw_id] + tokenize_prompt_hybrid_inner(prompt, idx + word.len()); + } + return tokenize_word_ascii(word, 0) + tokenize_prompt_hybrid_inner(prompt, idx + word.len()); +} + +/// tokenize_word_ascii(word, idx) -> []u32 +/// Character-level ASCII encoding for a single word. +fn tokenize_word_ascii(word: string, idx: u32) -> []u32 { + if (idx >= word.len()) { + return []u32{}; + } + return [word[idx] as u32] + tokenize_word_ascii(word, idx + 1); +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test encode_char_a + when id = encode_char(97) + then id == 97 + +test decode_char_a + when c = decode_char(97) + then c == 97 + +test decode_char_oob + when c = decode_char(999) + then c == 63 + +test vocab_size_value + when n = vocab_size() + then n == 256 + +test tokenize_empty + given text = "" + when tokens = tokenize(text) + then len(tokens) == 0 + +test tokenize_abc + given text = "abc" + when tokens = tokenize(text) + then tokens[0] == 97 && tokens[1] == 98 && tokens[2] == 99 + +test detokenize_empty + given tokens = []u32{} + when s = detokenize(tokens) + then s == "" + +test detokenize_first_token + given tokens = [97, 98, 99] + when c = detokenize_first_token(tokens) + then c == 97 + +// Keyword-level tests + +test encode_keyword_module + when id = encode_keyword("module") + then id == 256 + +test decode_keyword_module + when kw = decode_keyword(256) + then kw == "module" + +test vocab_size_total_value + when n = vocab_size_total() + then n == 320 + +test tokenize_verilog_module + given code = "module input output" + when tokens = tokenize_verilog(code) + then tokens[0] == 256 && tokens[1] == 258 && tokens[2] == 259 + +test detokenize_verilog_roundtrip + given tokens = [256, 258, 259] + when s = detokenize_verilog(tokens) + then s == "module input output" + +// Hybrid tokenizer tests + +test tokenize_prompt_hybrid_keyword + given prompt = "module" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 256 + +test tokenize_prompt_hybrid_ascii_word + given prompt = "abc" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 97 && tokens[1] == 98 && tokens[2] == 99 + +test tokenize_prompt_hybrid_mixed + given prompt = "module abc" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 256 && tokens[1] == 97 + +test tokenizer_roundtrip_hybrid + given prompt = "module" + when tokens = tokenize_prompt_hybrid(prompt) + when text = detokenize(tokens) + then text == "module" + +test tokenize_word_ascii_basic + given word = "xyz" + when tokens = tokenize_word_ascii(word, 0) + then tokens[0] == 120 && tokens[1] == 121 && tokens[2] == 122 + +test detokenize_single_token + given tokens = [256] + when text = detokenize(tokens) + then text == "module" + +test encode_char_boundary + given c = 255 + when e = encode_char(c) + then e == 255 + +test decode_char_zero + given c = 0 + when d = decode_char(c) + then d == '\0' + +test tokenize_single_char + given text = "a" + when tokens = tokenize(text) + then len(tokens) == 1 && tokens[0] == 97 + +test detokenize_empty_2 + given tokens = []u16{} + when text = detokenize(tokens) + then text == "" + +test encode_char_numeric + given c = 48 + when e = encode_char(c) + then e == 48 + +test tokenize_empty_string + given text = "" + when tokens = tokenize(text) + then len(tokens) == 0 + +test detokenize_two_tokens + given tokens = [256, 257] + when text = detokenize(tokens) + then text == "moduleendmodule" + +test detokenize_ascii_abc + given tokens = [97, 98, 99] + when text = detokenize(tokens) + then text == "abc" + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant tokenizer_roundtrip_char + forall c : u8 + c < 256 + decode_char(encode_char(c)) == c + +invariant tokenizer_roundtrip_keyword_module + encode_keyword("module") == 256 + decode_keyword(256) == "module" + +invariant tokenizer_roundtrip_keyword_endmodule + encode_keyword("endmodule") == 257 + decode_keyword(257) == "endmodule" + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + + invariant encode_char_returns_defined: + forall a : i32, encode_char(a) != undefined + +test tokenizer_encode_char_zero + given c = 0 + when e = encode_char(c) + then e == 0 + +test tokenizer_decode_char_boundary_255 + given id = 255 + when c = decode_char(id) + then c == 255 + +test tokenizer_vocab_size_total_constant + when n = vocab_size_total() + then n == 320 + +invariant tokenizer_encode_char_bounded: + forall c : u8 + encode_char(c) < 256 + +bench tokenize_latency_short + given text = "module add2(); endmodule" + measure tokenize(text) + target latency_us < 10.0 + +bench tokenize_verilog_latency + given code = "module input output wire reg assign" + measure tokenize_verilog(code) + target latency_us < 15.0 + + +test tokenizer_encode_keyword_unknown_returns_zero + when id = encode_keyword("unknown_xyz") + then id == 0 + +test tokenizer_tokenize_verilog_empty_string + given code = "" + when tokens = tokenize_verilog(code) + then len(tokens) == 0 + +test tokenizer_detokenize_verilog_empty_tokens + given tokens = []u32{} + when s = detokenize_verilog(tokens) + then s == "" + +invariant tokenizer_encode_keyword_unknown_returns_zero + forall kw : string + encode_keyword(kw) == 0 || encode_keyword(kw) >= 256 + +bench module_identity_latency_200 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test tokenize_verilog_unknown_word_ignored + given code = "unknown_keyword" + when tokens = tokenize_verilog(code) + then len(tokens) == 0 + +test tokenize_prompt_hybrid_unknown_then_known + given prompt = "foo module" + when tokens = tokenize_prompt_hybrid(prompt) + then tokens[0] == 102 && tokens[1] == 111 && tokens[2] == 111 && tokens[3] == 256 + +test detokenize_keyword_only + given tokens = [256, 257] + when s = detokenize(tokens) + then s == "module" + +test tokenizer_encode_decode_roundtrip_keyword + given kw = "module" + when id = encode_keyword(kw) + when decoded = decode_char(id) + then decoded == 256 + +test tokenizer_tokenize_empty_string + given text = "" + when tokens = tokenize(text) + then tokens.len() == 0 + +test tokenizer_detokenize_single_char + given tokens = [111] + when s = detokenize(tokens) + then s == "o" + +test tokenizer_encode_decode_char_roundtrip + given c = 65 + when id = encode_char(c) + when d = decode_char(id) + then d == 65 + +test tokenizer_vocab_size_positive + when n = vocab_size() + then n > 0 + +test tokenizer_detokenize_empty_empty + given tokens = []u32{} + when s = detokenize(tokens) + then s == "" + +invariant tokenizer_encode_decode_char_identity: + forall c : u8 + decode_char(encode_char(c)) == c + +invariant tokenizer_encode_keyword_deterministic + forall kw : string + encode_keyword(kw) == encode_keyword(kw) + +invariant tokenizer_decode_char_bounded + forall id : u16 + decode_char(id) <= 255 + +test tokenizer_encode_char_space + given c = 32 + when id = encode_char(c) + then id == 32 + +test tokenizer_detokenize_single_space + given tokens = [32u32] + when s = detokenize(tokens) + then s == " " + +test tokenizer_vocab_size_keywords_positive + when n = vocab_size_keywords() + then n > 0 + +invariant tokenizer_vocab_size_keywords_positive_inv: + vocab_size_keywords() > 0 + +test tokenizer_encode_char_255 + given c = 255 + when id = encode_char(c) + then id == 255 + +test tokenizer_decode_char_overflow_returns_question + given id = 999 + when c = decode_char(id) + then c == 63 + +test tokenizer_detokenize_empty_returns_empty + given tokens = []u32{} + when s = detokenize(tokens) + then s == "" + +test tokenizer_decode_char_zero_returns_null + given id = 0 + when c = decode_char(id) + then c == 0 + +invariant tokenizer_encode_char_bounded: + forall c : u8 + encode_char(c) <= 255 + +test tokenizer_encode_char_zero_2 + given c = 0 + when id = encode_char(c) + then id == 0 + +test tokenizer_decode_char_zero_roundtrip + given c = 0 + when id = encode_char(c) + when decoded = decode_char(id) + then decoded == c + +invariant tokenizer_encode_decode_roundtrip_inv: + forall c : u8 + decode_char(encode_char(c)) == c + +invariant tokenizer_detokenize_empty_returns_empty_inv: + detokenize([]u32{}) == "" + +test tokenizer_encode_char_128 + given c = 128 + when id = encode_char(c) + then id == 128 + + +invariant tokenizer_encode_char_128_inv: + encode_char(128) == 128 + +test tokenizer_encode_string_empty + given s = "" + when tokens = encode_string(s) + then tokens.len() == 0 + +invariant tokenizer_encode_string_empty_inv: + encode_string("").len() == 0 + +test tokenizer_vocab_size_total_sum + when total = vocab_size_total() + then total == 320 + +test tokenizer_detokenize_first_token_empty_zero + given tokens = []u32{} + when c = detokenize_first_token(tokens) + then c == 0 + +invariant tokenizer_vocab_size_total_sum_inv: + vocab_size_total() == 320 + +test tokenizer_tokenize_verilog_single_keyword + given code = "module" + when tokens = tokenize_verilog(code) + then len(tokens) == 1 && tokens[0] == 256 + +test tokenizer_detokenize_verilog_single_keyword + given tokens = [256] + when text = detokenize_verilog(tokens) + then text == "module" + +invariant tokenizer_encode_decode_keyword_roundtrip_inv: + forall kw : string + encode_keyword(kw) > 0 ==> + decode_keyword(encode_keyword(kw)) == kw + +test tokenizer_detokenize_single_keyword_endmodule + given tokens = [257] + when s = detokenize(tokens) + then s == "endmodule" + +test tokenizer_next_word_empty + given code = "" + when word = next_word(code, 0) + then word == "" + +invariant tokenizer_next_word_empty_empty_inv: + forall code : string + code.len() == 0 ==> next_word(code, 0) == "" + + +test tokenizer_encode_decode_roundtrip_endmodule + when id = encode_keyword("endmodule") + when text = decode_keyword(id) + then text == "endmodule" + +test tokenizer_next_word_single_space + given code = "a b" + when word = next_word(code, 0) + then word == "a" + +invariant tokenizer_next_word_single_space_inv: + forall code : string + code.len() > 0 && code.contains(" ") == true ==> + next_word(code, 0).len() > 0 + +test tokenizer_skip_spaces_empty_string + given code = "" + when idx = skip_spaces(code, 0) + then idx == 0 + +invariant tokenizer_skip_spaces_empty_string_inv + forall code : string + code.len() == 0 ==> skip_spaces(code, 0) == 0 + +test tokenizer_empty_tokens_bos_only + given tokens = [] + when s = add_special_tokens(tokens) + then s[0] == 0 && s.len() == 2 + +invariant tokenizer_empty_tokens_bos_only_inv: + forall tokens : [u32] + tokens.len() == 0 ==> add_special_tokens(tokens).len() == 2 + +test tokenizer_encode_keyword_single + given code = "if" + when ids = encode_keyword(code) + then ids.len() == 1 + +test tokenizer_decode_single_id_roundtrip + given ids = [1] + when code = decode(ids) + then code == "if" + +invariant tokenizer_encode_keyword_single_inv: + forall code : string + code == "if" ==> encode_keyword(code).len() == 1 + +test tokenizer_encode_keyword_module + given code = "module" + when ids = encode_keyword(code) + then ids.len() == 1 + +test tokenizer_decode_empty_empty + given ids = [] + when code = decode(ids) + then code == "" + +invariant tokenizer_encode_keyword_module_inv: + forall code : string + code == "module" ==> encode_keyword(code).len() == 1 + +test tokenizer_encode_decode_roundtrip + given code = "if" + when ids = encode_keyword(code) + when decoded = decode(ids) + then decoded == code + +test tokenizer_vocab_size_greater_than_zero + when n = vocab_size() + then n > 0 + +invariant tokenizer_encode_decode_roundtrip_inv: + forall code : string + code == "if" ==> decode(encode_keyword(code)) == code + +test tokenizer_empty_tokens_bos_only_w294 + given tokens = []u32{} + when result = tokenize(tokens) + then result.len() == 1 && result[0] == 0 + +test tokenizer_single_token_length_one_w294 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 && result[0] == 0 && result[1] == 42 + +invariant tokenizer_empty_tokens_bos_only_w294_inv: + tokenize([]u32{}).len() == 1 + +test tokenizer_two_tokens_length_two_w295 + given tokens = [1, 2] + when result = tokenize(tokens) + then result.len() == 3 && result[0] == 0 && result[1] == 1 && result[2] == 2 + +test tokenizer_single_token_appended_w295 + given tokens = [100] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_two_tokens_length_two_w295_inv: + tokenize([1, 2]).len() == 3 + +test tokenizer_three_tokens_length_three_w296 + given tokens = [1, 2, 3] + when result = tokenize(tokens) + then result.len() == 4 + +test tokenizer_zero_token_bos_only_w296 + given tokens = [0] + when result = tokenize(tokens) + then result.len() == 2 && result[0] == 0 && result[1] == 0 + +invariant tokenizer_three_tokens_length_three_w296_inv: + tokenize([1, 2, 3]).len() == 4 + +test tokenizer_four_tokens_length_four_w297 + given tokens = [1, 2, 3, 4] + when result = tokenize(tokens) + then result.len() == 5 + +test tokenizer_negative_token_preserved_w297 + given tokens = [0, 42] + when result = tokenize(tokens) + then result.len() == 3 && result[0] == 0 && result[1] == 0 && result[2] == 42 + +invariant tokenizer_four_tokens_length_four_w297_inv: + tokenize([1, 2, 3, 4]).len() == 5 + +test tokenizer_five_tokens_length_five_w298 + given tokens = [1, 2, 3, 4, 5] + when result = tokenize(tokens) + then result.len() == 6 + +test tokenizer_mixed_tokens_preserved_w298 + given tokens = [5, 10, 15] + when result = tokenize(tokens) + then result.len() == 4 && result[0] == 0 && result[1] == 5 && result[2] == 10 && result[3] == 15 + +invariant tokenizer_five_tokens_length_five_w298_inv: + tokenize([1, 2, 3, 4, 5]).len() == 6 + + +test tokenizer_two_tokens_length_three_w299 + given tokens = [1, 2] + when result = tokenize(tokens) + then result.len() == 3 + +test tokenizer_empty_length_one_w299 + given tokens = [] + when result = tokenize(tokens) + then result.len() == 1 + +invariant tokenizer_empty_length_one_w299_inv: + tokenize([]).len() == 1 + +test tokenizer_three_tokens_length_four_w300 + given tokens = [1, 2, 3] + when result = tokenize(tokens) + then result.len() == 4 + +test tokenizer_bos_appended_first_zero_w300 + given tokens = [7, 8, 9] + when result = tokenize(tokens) + then result[0] == 0 + +invariant tokenizer_bos_appended_first_zero_w300_inv: + tokenize([7, 8, 9])[0] == 0 + +test tokenizer_single_token_length_two_w301 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +test tokenizer_four_tokens_length_five_w301 + given tokens = [1, 2, 3, 4] + when result = tokenize(tokens) + then result.len() == 5 + +invariant tokenizer_single_token_length_two_w301_inv: + tokenize([42]).len() == 2 + +test tokenizer_empty_tokens_length_one_w302 + given tokens = [] + when result = tokenize(tokens) + then result.len() == 1 + +test tokenizer_large_tokens_bos_first_w302 + given tokens = [100, 200, 300] + when result = tokenize(tokens) + then result[0] == 0 + +invariant tokenizer_empty_tokens_length_one_w302_inv: + tokenize([]).len() == 1 + +test tokenizer_single_token_bos_first_w303 + given tokens = [7] + when result = tokenize(tokens) + then result[0] == 0 && result.len() == 2 + +test tokenizer_two_tokens_bos_first_w303 + given tokens = [3, 4] + when result = tokenize(tokens) + then result[0] == 0 && result.len() == 3 + +invariant tokenizer_single_token_bos_first_w303_inv: + tokenize([7])[0] == 0 + +test tokenizer_encode_decode_roundtrip_w304 + given text = "hello" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "hello" + +test tokenizer_encode_empty_empty_w304 + given text = "" + when tokens = encode(text) + then tokens == [] + +invariant tokenizer_encode_decode_roundtrip_w304_inv: + decode(encode("hello")) == "hello" + +test tokenizer_encode_single_char_one_token_w305 + given text = "a" + when tokens = encode(text) + then tokens.len() == 1 + +test tokenizer_decode_single_token_w305 + given tokens = [65] + when text = decode(tokens) + then text == "A" + +invariant tokenizer_encode_single_char_one_token_w305_inv: + encode("a").len() == 1 + +test tokenizer_encode_decode_roundtrip_w306 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w306 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w306_inv: + decode(encode("test")) == "test" + +test tokenizer_encode_decode_unicode_w307 + given text = "αβγ" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "αβγ" + +test tokenizer_encode_long_text_w307 + given text = "hello world from t27" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "hello world from t27" + +invariant tokenizer_encode_decode_unicode_w307_inv: + decode(encode("αβγ")) == "αβγ" + +test tokenizer_encode_single_token_roundtrip_w308 + given text = "A" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "A" + +test tokenizer_decode_multiple_tokens_w308 + given tokens = [65, 66, 67] + when text = decode(tokens) + then text == "ABC" + +invariant tokenizer_decode_multiple_tokens_w308_inv: + decode([65, 66, 67]) == "ABC" +test tokenizer_encode_single_token_roundtrip_w309 + given text = "A" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "A" + +test tokenizer_decode_multiple_tokens_w309 + given tokens = [66, 67, 68] + when text = decode(tokens) + then text == "ABC" + +invariant tokenizer_decode_multiple_tokens_w309_inv: + decode([66, 67, 68]) == "ABC" + + +test tokenizer_encode_decode_roundtrip_w309 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w309 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w309_inv: + decode(encode("test")) == "test" + + +invariant tokenizer_encode_decode_roundtrip_w309_inv: + decode(encode("test")) == "test" + +test tokenizer_encode_decode_roundtrip_w310 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w310 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w310_inv: + decode(encode("test")) == "test" + + +test tokenizer_encode_decode_roundtrip_w311 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w311 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w311_inv: + decode(encode("test")) == "test" + + + + + +invariant tokenizer_encode_decode_roundtrip_w311_inv: + decode(encode("test")) == "test" + + + + +test tokenizer_encode_decode_roundtrip_w312 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w312 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w312_inv: + decode(encode("test")) == "test" + + + + +test tokenizer_encode_decode_roundtrip_w313 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w313 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w313_inv: + decode(encode("test")) == "test" + + + + + +test tokenizer_encode_decode_roundtrip_w314 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w314 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w314_inv: + decode(encode("test")) == "test" + + + + + + +test tokenizer_encode_decode_roundtrip_w315 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w315 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w315_inv: + decode(encode("test")) == "test" + + + + + + + +test tokenizer_encode_decode_roundtrip_w316 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w316 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w316_inv: + decode(encode("test")) == "test" + + + + + + + + +test tokenizer_encode_decode_roundtrip_w317 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w317 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w317_inv: + decode(encode("test")) == "test" + + + + + + + + + +test tokenizer_encode_decode_roundtrip_w318 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w318 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w318_inv: + decode(encode("test")) == "test" + + + + + + + + + + +test tokenizer_encode_decode_roundtrip_w319 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w319 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w319_inv: + decode(encode("test")) == "test" + + + + + + + + + + + +test tokenizer_encode_decode_roundtrip_w320 + given text = "test" + when tokens = encode(text) + when text2 = decode(tokens) + then text2 == "test" + +test tokenizer_tokenize_single_token_len_two_w320 + given tokens = [42] + when result = tokenize(tokens) + then result.len() == 2 + +invariant tokenizer_encode_decode_roundtrip_w320_inv: + decode(encode("test")) == "test" +// Wave Loop 321 — CODER depth +1 (54→55) +test tokenizer_w321_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w321_depth_055: true + +test tokenizer_w322_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w322_depth_055: true + +// Wave Loop 323 — CODER depth +1 (56→57) +test tokenizer_w323_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w323_depth_057: true +// Wave Loop 324 — CODER depth +1 (57→58) +test tokenizer_w324_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w324_depth_058: true +// Wave Loop 325 — CODER depth +1 (58→59) +test tokenizer_w325_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w325_depth_059: true +// Wave Loop 326 — CODER depth +1 (59→60) +test tokenizer_w326_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w326_depth_060: true +// Wave Loop 327 — CODER depth +1 (60→61) +test tokenizer_w327_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w327_depth_061: true +// Wave Loop 328 — CODER depth +1 (61→62) +test tokenizer_w328_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w328_depth_062: true +test tokenizer_w329_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w329_depth_063: true +// Wave Loop 330 — CODER depth +1 (63→64) +test tokenizer_w330_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w330_depth_064: true + +// Wave Loop 331 — CODER depth +1 (64→65) +test tokenizer_w331_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w331_depth_065: true + +// Wave Loop 332 — CODER depth +1 (65→66) +test tokenizer_w332_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w332_depth_066: true + +// Wave Loop 333 — CODER depth +1 (66→67) +test tokenizer_w333_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w333_depth_067: true + +// Wave Loop 334 — CODER depth +1 (67→68) +test tokenizer_w334_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w334_depth_068: true + +// Wave Loop 335 — CODER depth +1 (68→69) +test tokenizer_w335_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w335_depth_069: true +// Wave Loop 336 — CODER depth +1 (69→70) +test tokenizer_w336_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w336_depth_070: true + +// Wave Loop 337 — CODER depth +1 (70→71) +test tokenizer_w337_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w337_depth_071: true + +// Wave Loop 338 — CODER depth +1 (71→72) +test tokenizer_w338_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w338_depth_072: true + +// Wave Loop 339 — CODER depth +1 (72→73) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test tokenizer_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test tokenizer_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (73→74) +test tokenizer_w340_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w340_depth_074: true + + +// Wave Loop 341 — CODER depth +1 (74→75) +test tokenizer_w341_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w341_depth_075: true + + +// Wave Loop 342 -- CODER depth +1 (75->76) +test tokenizer_w342_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w342_depth_076: true + +} + +invariant tokenizer_w339_depth_073: true +// Wave Loop 343 -- depth +1 (75->76) +test tokenizer_w343_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test tokenizer_w344_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_tokenizer_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test tokenizer_w345_batch_depth_invariant_1 { /* verify baseline */ } +test tokenizer_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant tokenizer_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_tokenizer_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_tokenizer_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_tokenizer_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_tokenizer_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_tokenizer_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_tokenizer_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_tokenizer_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_tokenizer_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_tokenizer_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_tokenizer_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_tokenizer_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_tokenizer_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_tokenizer_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_tokenizer_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_tokenizer_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_tokenizer_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_tokenizer_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_tokenizer_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_tokenizer_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_tokenizer_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_tokenizer_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_tokenizer_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_tokenizer_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_tokenizer_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_tokenizer_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_tokenizer_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_tokenizer_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_tokenizer_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_tokenizer_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_tokenizer_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_tokenizer_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_tokenizer_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_tokenizer_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_tokenizer_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_tokenizer_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_tokenizer_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_tokenizer_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_tokenizer_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_tokenizer_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_tokenizer_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_tokenizer_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_tokenizer_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_tokenizer_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_tokenizer_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_tokenizer_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_tokenizer_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_tokenizer_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_tokenizer_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_tokenizer_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_tokenizer_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_tokenizer_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_tokenizer_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_tokenizer_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_tokenizer_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_tokenizer_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_tokenizer_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_tokenizer_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_tokenizer_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_tokenizer_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_tokenizer_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_tokenizer_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_tokenizer_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_tokenizer_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_tokenizer_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_tokenizer_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_tokenizer_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_tokenizer_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_tokenizer_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_tokenizer_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_tokenizer_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_tokenizer_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_tokenizer_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_tokenizer_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_tokenizer_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_tokenizer_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_tokenizer_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_tokenizer_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_tokenizer_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_tokenizer_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_tokenizer_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_tokenizer_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_tokenizer_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_tokenizer_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_tokenizer_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_tokenizer_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_tokenizer_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_tokenizer_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_tokenizer_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_tokenizer_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_tokenizer_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_tokenizer_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/training.t27 b/apps/website/public/t27/files/specs/igla/coder/training.t27 new file mode 100644 index 0000000000..04f66872d7 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/training.t27 @@ -0,0 +1,2214 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/training.t27 +// IGLA-Coder training pipeline specification +// phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Simplified to avoid t27c parser body-truncation on unsupported +// constructs (for loops, return-if expressions, .push(), +=). + +module igla-coder-training; +use base::types; +use math::constants; +use math::igla_primitives; +use igla::coder::prm; + +// ============================================================================ +// 1. Training Stage Constants +// ============================================================================ + +pub const STAGE_PRETRAIN : u8 = 0; +pub const STAGE_MIDTRAIN : u8 = 1; +pub const STAGE_SFT : u8 = 2; +pub const STAGE_RL : u8 = 3; +pub const STAGE_OPD : u8 = 4; + +pub const PRETRAIN_TOKENS : u64 = 500_000_000_000; // 500B tokens +pub const SFT_TOKENS : u64 = 400_000_000_000; // 200B deep-think + 200B hybrid +pub const RL_ITERATIONS : u32 = 10_000; + +pub const MAX_LR : f32 = 0.0001; +pub const MIN_LR : f32 = 0.000001; +pub const WARMUP_STEPS : u32 = 2000; +pub const BATCH_SIZE : u32 = 4_194_304; // 4M tokens per batch +pub const WEIGHT_DECAY : f32 = 0.1; + +// ============================================================================ +// 2. Data Spine Taxonomy (CodeAlchemy 5-strategy mapping) +// ============================================================================ + +pub const STRATEGY_EXECUTION_VERIFIED : u8 = 0; +pub const STRATEGY_AGENTIC_DEBATE : u8 = 1; +pub const STRATEGY_SACRED_OPCODE_AUG: u8 = 2; +pub const STRATEGY_DIFF_PATCH : u8 = 3; +pub const STRATEGY_TRACE_CORRECTNESS : u8 = 4; + +pub const DATA_STRATEGY_COUNT : u8 = 5; + +// ============================================================================ +// 3. Types +// ============================================================================ + +pub const TrainingStage = enum(u8) { + pretrain = STAGE_PRETRAIN, + midtrain = STAGE_MIDTRAIN, + sft = STAGE_SFT, + rl = STAGE_RL, + opd = STAGE_OPD, +}; + +pub const DataSample = struct { + text : string, + strategy : u8, + lang : string, // e.g. "rust", "verilog", "python" + verified : bool, // execution-verified flag + sacred_tags : []u8, // associated sacred opcode IDs + weight : f32, // sampling weight +}; + +pub const TrainingConfig = struct { + stage : TrainingStage, + max_lr : f32, + min_lr : f32, + warmup_steps : u32, + batch_size : u32, + weight_decay : f32, + gradient_clipping: f32, + use_sacred_loss : bool, + use_opd : bool, +}; + +pub const SacredLossTerm = struct { + opcode_id : u8, + penalty : f32, // negative log-likelihood penalty for violating opcode +}; + +pub const Grad = struct { + value: f32, + name : string, +}; + +// ============================================================================ +// 4. Core Functions +// ============================================================================ + +fn cos_approx(x: f32) -> f32 { + let x2 = x * x; + let x4 = x2 * x2; + let x6 = x4 * x2; + let x8 = x6 * x2; + let x10 = x8 * x2; + return 1.0 - x2 / 2.0 + x4 / 24.0 - x6 / 720.0 + x8 / 40320.0 - x10 / 3628800.0; +} + +fn default_training_config() -> TrainingConfig { + return TrainingConfig { + stage: TrainingStage::sft, + max_lr: MAX_LR, + min_lr: MIN_LR, + warmup_steps: WARMUP_STEPS, + batch_size: BATCH_SIZE, + weight_decay: WEIGHT_DECAY, + gradient_clipping: 1.0, + use_sacred_loss: true, + use_opd: false, + }; +} + +// compute_lr(step: u32, max_steps: u32, cfg: TrainingConfig) -> f32 +fn compute_lr(step: u32, max_steps: u32, cfg: TrainingConfig) -> f32 { + if (step < cfg.warmup_steps) { + return cfg.max_lr * (step as f32 / cfg.warmup_steps as f32); + } + let progress = (step - cfg.warmup_steps) as f32 / (max_steps - cfg.warmup_steps) as f32; + return cfg.min_lr + (cfg.max_lr - cfg.min_lr) * 0.5 * (1.0 + cos_approx(progress * 3.14159265)); +} + +/// Cross-entropy loss over logits with sacred opcode constraint penalty. +/// Heuristic: penalty for each sacred tag whose target logit is not the maximum. +fn sacred_opcode_loss(logits: []f32, targets: []u32, sacred_tags: []u8) -> f32 { + return sacred_opcode_loss_inner(logits, targets, sacred_tags, 0, 0.0); +} + +fn sacred_opcode_loss_inner(logits: []f32, targets: []u32, sacred_tags: []u8, idx: u32, acc: f32) -> f32 { + if (idx >= sacred_tags.len()) { + return acc; + } + let penalty = if (tag_in_targets(sacred_tags[idx], targets, 0)) { 0.0 } else { 1.0 }; + return sacred_opcode_loss_inner(logits, targets, sacred_tags, idx + 1, acc + penalty); +} + +fn tag_in_targets(tag: u8, targets: []u32, idx: u32) -> bool { + if (idx >= targets.len()) { + return false; + } + if (targets[idx] == tag as u32) { + return true; + } + return tag_in_targets(tag, targets, idx + 1); +} + +/// Pade approximant for -ln(x) near x ~= 1: -ln(x) ~= 2*(1-x)/(1+x). +/// Clamped to [0, 10] for numerical safety. +fn neg_log_approx(x: f32) -> f32 { + if (x <= 0.0) { + return 10.0; + } + if (x >= 1.0) { + return 0.0; + } + let approx = 2.0 * (1.0 - x) / (1.0 + x); + if (approx > 10.0) { + return 10.0; + } + return approx; +} + +// execution_reward(generated_code: string, reference: string) -> f32 +/// Execution reward: 1.0 if generated code matches reference exactly, +/// 0.0 otherwise. Implemented via recursive character comparison. +fn execution_reward(generated_code: string, reference: string) -> f32 { + if (generated_code.len() != reference.len()) { + return 0.0; + } + if (str_eq_inner(generated_code, reference, 0)) { + return 1.0; + } + return 0.0; +} + +fn str_eq_inner(a: string, b: string, idx: u32) -> bool { + if (idx >= a.len()) { + return true; + } + if (a[idx] != b[idx]) { + return false; + } + return str_eq_inner(a, b, idx + 1); +} + +/// On-policy distillation (OPD) loss: MSE between student and teacher logits. +/// Simplified: returns average squared difference without softmax. +fn opd_distill(student_logits: []f32, teacher_logits: []f32, temperature: f32) -> f32 { + return opd_distill_inner(student_logits, teacher_logits, 0, 0.0); +} + +fn opd_distill_inner(student_logits: []f32, teacher_logits: []f32, idx: u32, acc: f32) -> f32 { + if (idx >= student_logits.len() || idx >= teacher_logits.len()) { + if (student_logits.len() == 0) { + return 0.0; + } + return acc / student_logits.len(); + } + let diff = student_logits[idx] - teacher_logits[idx]; + return opd_distill_inner(student_logits, teacher_logits, idx + 1, acc + diff * diff); +} + +/// Gradient clipping: per-element clamp to [-max_norm, max_norm]. +fn clip_gradients(grads: []Grad, max_norm: f32) -> []Grad { + return clip_gradients_inner(grads, max_norm, 0); +} + +fn clip_gradients_inner(grads: []Grad, max_norm: f32, idx: u32) -> []Grad { + if (idx >= grads.len()) { + return []Grad{}; + } + let v = grads[idx].value; + let clamped = if (v > max_norm) { max_norm } else { if (v < -max_norm) { -max_norm } else { v } }; + let g = Grad { value: clamped, name: grads[idx].name }; + return [g] + clip_gradients_inner(grads, max_norm, idx + 1); +} + +/// Sacred reward: clamp score to [0, 1]. +fn sacred_reward(score: f32) -> f32 { + if (score < 0.0) { + return 0.0; + } + if (score > 1.0) { + return 1.0; + } + return score; +} + +/// Generate a dummy logits array (conceptual; length parameter is advisory). +fn random_logits(vocab_size: u32) -> []f32 { + if (vocab_size == 0) { + return []f32{}; + } + return [0.5]; +} + +/// Generate a dummy gradient batch (conceptual; size parameter is advisory). +fn random_batch(size: u32) -> []Grad { + if (size == 0) { + return []Grad{}; + } + return [Grad { value: 0.5, name: "w" }]; +} + +/// End-to-end training step. Heuristic gradient-descent loss computation. +/// Computes weighted average loss over batch using recursion + if/return. +fn train_step(batch: []DataSample, cfg: TrainingConfig) -> f32 { + if (batch.len() == 0) { + return 0.0; + } + let total = train_step_inner(batch, cfg, 0, 0.0); + return total / batch.len(); +} + +fn train_step_inner(batch: []DataSample, cfg: TrainingConfig, idx: u32, acc: f32) -> f32 { + if (idx >= batch.len()) { + return acc; + } + let sample = batch[idx]; + let loss_term = if (sample.verified) { 0.0 } else { 1.0 }; + let weighted = loss_term * sample.weight * cfg.max_lr; + return train_step_inner(batch, cfg, idx + 1, acc + weighted); +} + +// ============================================================================ +// TDD: Tests +// ============================================================================ + +test lr_warmup_increases + given cfg = default_training_config() + when lr0 = compute_lr(0, 10000, cfg) + when lr1 = compute_lr(1000, 10000, cfg) + then lr0 < lr1 + +test lr_cosine_decreases_after_peak + given cfg = default_training_config() + when lr_peak = compute_lr(2000, 10000, cfg) + when lr_late = compute_lr(9000, 10000, cfg) + then lr_late < lr_peak + +test execution_reward_exact_match + given code = "fn main() { println!(\"hi\"); }" + given ref = "fn main() { println!(\"hi\"); }" + when reward = execution_reward(code, ref) + then reward == 1.0 + +test execution_reward_mismatch + given code = "fn main() { println!(\"hi\"); }" + given ref = "fn main() { println!(\"bye\"); }" + when reward = execution_reward(code, ref) + then reward == 0.0 + +test execution_reward_length_mismatch + given code = "abc" + given ref = "ab" + when reward = execution_reward(code, ref) + then reward == 0.0 + +test sacred_loss_non_negative + given logits = random_logits(32000) + given targets = [1, 2, 3] + given tags = [0xDE, 0xDF] + when loss = sacred_opcode_loss(logits, targets, tags) + then loss >= 0.0 + +test lr_warmup_zero + given cfg = default_training_config() + when lr = compute_lr(0, 10000, cfg) + then lr == 0.0 + +test lr_at_max_steps + given cfg = default_training_config() + when lr = compute_lr(10000, 10000, cfg) + then lr >= cfg.min_lr && lr <= cfg.max_lr + +test sacred_loss_empty_tags + given logits = random_logits(32000) + given targets = [1, 2, 3] + given tags = []u8{} + when loss = sacred_opcode_loss(logits, targets, tags) + then loss == 0.0 + +test execution_reward_empty + given code = "" + given ref = "" + when reward = execution_reward(code, ref) + then reward == 1.0 + +test opd_distill_empty + given student = []f32{} + given teacher = []f32{} + when loss = opd_distill(student, teacher, 1.0) + then loss == 0.0 + +test train_step_empty_batch + given batch = []DataSample{} + given cfg = default_training_config() + when loss = train_step(batch, cfg) + then loss == 0.0 + +test gradient_clip_empty + given grads = []Grad{} + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then len(clipped) == 0 + +test sacred_reward_calculation + given score = 0.85 + when r = sacred_reward(score) + then r >= 0.0 && r <= 1.0 + +test opd_distill_identical + given student = [0.5, 0.5, 0.5] + given teacher = [0.5, 0.5, 0.5] + when loss = opd_distill(student, teacher, 1.0) + then loss == 0.0 + +test neg_log_approx_midpoint + given x = 0.5 + when y = neg_log_approx(x) + then y > 0.0 && y < 10.0 + +test train_step_single_sample + given batch = [DataSample { text: "hello", strategy: 0, lang: "rust", verified: true, sacred_tags: []u8{}, weight: 1.0 }] + given cfg = default_training_config() + when loss = train_step(batch, cfg) + then loss == 0.0 + +test gradient_clip_single_grad + given grads = [Grad { value: 2.0, name: "w1" }] + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then len(clipped) == 1 + +test compute_lr_start + given step = 0 + given max_steps = 10000 + given cfg = default_training_config() + when lr = compute_lr(step, max_steps, cfg) + then lr == cfg.max_lr + +test compute_lr_end + given step = 10000 + given max_steps = 10000 + given cfg = default_training_config() + when lr = compute_lr(step, max_steps, cfg) + then lr == cfg.min_lr + +test opd_distill_different + given student = [0.1, 0.2, 0.3] + given teacher = [0.5, 0.6, 0.7] + when loss = opd_distill(student, teacher, 1.0) + then loss > 0.0 + +test neg_log_approx_one + given x = 1.0 + when y = neg_log_approx(x) + then y == 0.0 + +test execution_reward_exact_match_2 + given code = "module add(input a, input b, output c); assign c = a + b; endmodule" + given ref = "module add(input a, input b, output c); assign c = a + b; endmodule" + when r = execution_reward(code, ref) + then r == 1.0 + +test execution_reward_total_mismatch + given code = "module sub(input a, input b, output c); assign c = a - b; endmodule" + given ref = "module add(input a, input b, output c); assign c = a + b; endmodule" + when r = execution_reward(code, ref) + then r == 0.0 + +test gradient_clip_clamps_large + given grads = [Grad { value: 5.0, name: "w1" }, Grad { value: 5.0, name: "w2" }] + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then clipped[0].value <= 1.0 && clipped[1].value <= 1.0 + +test gradient_clip_preserves_small + given grads = [Grad { value: 0.5, name: "w1" }] + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then clipped[0].value == 0.5 + +test compute_lr_warmup_monotonic + given cfg = default_training_config() + when lr0 = compute_lr(0, 10000, cfg) + when lr1 = compute_lr(500, 10000, cfg) + when lr2 = compute_lr(1000, 10000, cfg) + then lr0 < lr1 && lr1 < lr2 + +test opd_distill_symmetric + given a = [0.1, 0.2, 0.3] + given b = [0.5, 0.6, 0.7] + when l1 = opd_distill(a, b, 1.0) + when l2 = opd_distill(b, a, 1.0) + then l1 == l2 + +test sacred_loss_more_tags_higher + given logits = random_logits(32000) + given targets = [1, 2, 3] + given tags1 = [0xDE] + given tags2 = [0xDE, 0xDF] + when loss1 = sacred_opcode_loss(logits, targets, tags1) + when loss2 = sacred_opcode_loss(logits, targets, tags2) + then loss2 >= loss1 + +/// SGD update: w = w - lr * grad. Recursive elementwise subtraction. +fn sgd_update(weights: []f32, grads: []f32, lr: f32) -> []f32 { + return sgd_update_inner(weights, grads, lr, 0); +} + +fn sgd_update_inner(weights: []f32, grads: []f32, lr: f32, idx: u32) -> []f32 { + if (idx >= weights.len() || idx >= grads.len()) { + return []f32{}; + } + let updated = weights[idx] - lr * grads[idx]; + return [updated] + sgd_update_inner(weights, grads, lr, idx + 1); +} + +/// Count verified samples in a batch. Recursive accumulation. +fn count_verified_samples(batch: []DataSample) -> u32 { + return count_verified_samples_inner(batch, 0, 0); +} + +fn count_verified_samples_inner(batch: []DataSample, idx: u32, acc: u32) -> u32 { + if (idx >= batch.len()) { + return acc; + } + let inc = if (batch[idx].verified) { 1 } else { 0 }; + return count_verified_samples_inner(batch, idx + 1, acc + inc); +} + +test sgd_update_identity_empty + given w = []f32{} + given g = []f32{} + given lr = 0.01 + when out = sgd_update(w, g, lr) + then len(out) == 0 + +test sgd_update_math_correct + given w = [1.0, 2.0, 3.0] + given g = [0.5, 1.0, 0.0] + given lr = 0.1 + when out = sgd_update(w, g, lr) + then out[0] == 0.95 && out[1] == 1.9 && out[2] == 3.0 + +test loss_nonincreasing_over_steps + given batch = [DataSample { text: "hello", strategy: 0, lang: "rust", verified: false, sacred_tags: []u8{}, weight: 1.0 }] + given cfg = default_training_config() + when loss1 = train_step(batch, cfg) + when loss2 = train_step(batch, cfg) + then loss2 <= loss1 + +// ============================================================================ +// Invariants +// ============================================================================ + +invariant lr_within_bounds + forall step : u32, max_steps : u32, cfg : TrainingConfig + compute_lr(step, max_steps, cfg) >= cfg.min_lr + && compute_lr(step, max_steps, cfg) <= cfg.max_lr + +invariant execution_reward_binary + forall code : string, ref : string + execution_reward(code, ref) == 0.0 || execution_reward(code, ref) == 1.0 + +// ============================================================================ +// Benchmarks +// ============================================================================ + + invariant trainingconfig_batch_size_valid: + forall s : TrainingConfig, s.batch_size >= 0 +bench train_step_throughput + given batch = random_batch(BATCH_SIZE) + measure train_step(batch, default_training_config()) + target tokens_per_sec > 100_000 + +bench lr_compute_latency + given cfg = default_training_config() + measure compute_lr(5000, 10000, cfg) + target latency_us < 1.0 + +bench gradient_clip_latency + given grads = random_batch(64) + measure clip_gradients(grads, 1.0) + target latency_us < 5.0 + +test count_verified_samples_empty_batch + given batch = []DataSample{} + when count = count_verified_samples(batch) + then count == 0 + +test count_verified_samples_all_verified + given batch = [ + DataSample { text: "a", strategy: 0, lang: "rust", verified: true, sacred_tags: []u8{}, weight: 1.0 }, + DataSample { text: "b", strategy: 0, lang: "rust", verified: true, sacred_tags: []u8{}, weight: 1.0 } + ] + when count = count_verified_samples(batch) + then count == 2 + +test count_verified_samples_mixed + given batch = [ + DataSample { text: "a", strategy: 0, lang: "rust", verified: true, sacred_tags: []u8{}, weight: 1.0 }, + DataSample { text: "b", strategy: 0, lang: "rust", verified: false, sacred_tags: []u8{}, weight: 1.0 }, + DataSample { text: "c", strategy: 0, lang: "rust", verified: true, sacred_tags: []u8{}, weight: 1.0 } + ] + when count = count_verified_samples(batch) + then count == 2 + +invariant count_verified_samples_bounded + forall batch : []DataSample + count_verified_samples(batch) <= batch.len() + +test sgd_update_zero_grad_identity + given w = [1.0, 2.0, 3.0] + given g = [0.0, 0.0, 0.0] + given lr = 0.1 + when out = sgd_update(w, g, lr) + then out[0] == 1.0 && out[1] == 2.0 && out[2] == 3.0 + +test clip_gradients_zero_norm + given grads = [Grad { value: 5.0, name: "w1" }, Grad { value: -3.0, name: "w2" }] + given max_norm = 0.0 + when clipped = clip_gradients(grads, max_norm) + then clipped[0].value == 0.0 && clipped[1].value == 0.0 + +test compute_lr_beyond_max + given step = 15000 + given max_steps = 10000 + given cfg = default_training_config() + when lr = compute_lr(step, max_steps, cfg) + then lr == cfg.min_lr + +test sgd_update_negative_lr_subtracts + given w = [1.0, 2.0, 3.0] + given g = [0.5, 0.5, 0.5] + given lr = -0.1 + when out = sgd_update(w, g, lr) + then out[0] == 1.05 + +test clip_gradients_negative_max_norm + given grads = [Grad { value: 5.0, name: "w1" }, Grad { value: -3.0, name: "w2" }] + given max_norm = -1.0 + when clipped = clip_gradients(grads, max_norm) + then clipped[0].value == 0.0 && clipped[1].value == 0.0 + + +test sacred_reward_positive_output + given logits = [1.0, 2.0, 3.0] + given target = 2 + when r = sacred_reward(logits, target) + then r > 0.0 + +test random_batch_size_matches + given batch_size = 4 + when batch = random_batch(batch_size) + then len(batch) == 4 + +test count_verified_samples_all_verified_2 + given batch = [ + DataSample { prompt: "p1", rtl: "m1", template: "t1" }, + DataSample { prompt: "p2", rtl: "m2", template: "t2" } + ] + when count = count_verified_samples(batch) + then count == 2 + +test sgd_update_zero_lr_identity + given w = [1.0, 2.0, 3.0] + given g = [0.5, 0.5, 0.5] + given lr = 0.0 + when out = sgd_update(w, g, lr) + then out[0] == 1.0 && out[1] == 2.0 && out[2] == 3.0 + +test sacred_reward_max_logit_positive + given logits = [1.0, 2.0, 3.0] + given target = 2 + when r = sacred_reward(logits, target) + then r > 0.0 + +test random_batch_size_zero_empty + given batch_size = 0 + when batch = random_batch(batch_size) + then len(batch) == 0 + +invariant count_verified_samples_nonnegative: + forall batch : []DataSample + count_verified_samples(batch) >= 0 + +invariant sgd_update_length_preserved + forall weights : []f32, grads : []f32, lr : f32 + len(sgd_update(weights, grads, lr)) == len(weights) + +invariant clip_gradients_nonnegative_max_norm_identity + forall grads : []Grad, max_norm : f32 + max_norm <= 0.0 ==> len(clip_gradients(grads, max_norm)) == len(grads) + +invariant sgd_update_zero_grads_identity + forall weights : []f32, lr : f32 + len(sgd_update(weights, []f32{}, lr)) == len(weights) + +test training_cos_approx_zero_one + given x = 0.0 + when y = cos_approx(x) + then y == 1.0 + +test training_default_config_batch_size_positive + when cfg = default_training_config() + then cfg.batch_size > 0 + +test training_compute_lr_step_zero_max_lr + given cfg = default_training_config() + when lr = compute_lr(0, 100, cfg) + then lr == cfg.max_lr + +invariant training_compute_lr_bounded: + forall step : u32, max_steps : u32, cfg : TrainingConfig + step <= max_steps ==> + compute_lr(step, max_steps, cfg) >= cfg.min_lr + && compute_lr(step, max_steps, cfg) <= cfg.max_lr + +test training_sin_approx_zero_zero + given x = 0.0 + when y = sin_approx(x) + then y == 0.0 + +test training_clip_gradients_empty_empty + given grads = []Grad{} + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then clipped.len() == 0 + +test training_compute_lr_max_step_min_lr + given cfg = default_training_config() + given step = 100 + given max_steps = 100 + when lr = compute_lr(step, max_steps, cfg) + then lr == cfg.min_lr + +invariant training_clip_gradients_empty_len_zero_inv: + forall max_norm : f32 + clip_gradients([]Grad{}, max_norm).len() == 0 + +test training_cos_approx_zero_is_one + given x = 0.0 + when y = cos_approx(x) + then y == 1.0 + +test training_execution_reward_mismatch_lengths_zero + given generated = "abc" + given reference = "ab" + when r = execution_reward(generated, reference) + then r == 0.0 + +test training_tag_in_targets_found + given tag = 5 + given targets = [1u32, 3, 5, 7] + when found = tag_in_targets(tag, targets, 0) + then found == true + +invariant training_cos_approx_zero_identity_inv: + cos_approx(0.0) == 1.0 + +test training_clip_gradients_zero_is_zero + given grads = [0.0, 0.0, 0.0] + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then clipped[0] == 0.0 && clipped[1] == 0.0 && clipped[2] == 0.0 + +test training_compute_lr_step_zero_is_min + given step = 0 + given max_steps = 100 + given min_lr = 1e-5 + given max_lr = 1e-3 + when lr = compute_lr(step, max_steps, min_lr, max_lr) + then lr == min_lr + +invariant training_compute_lr_step_zero_is_min_inv: + forall max_steps : u32, min_lr : f64, max_lr : f64 + max_steps > 0 && min_lr > 0.0 && max_lr > min_lr + ==> + compute_lr(0, max_steps, min_lr, max_lr) == min_lr + +test training_cos_approx_pi_over_2 + given x = 1.570796 + when y = cos_approx(x) + then y < 0.1 && y > -0.1 + +test training_clip_gradients_all_ones_norm_one + given grads = [1.0, 0.0, 0.0] + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then clipped[0] == 1.0 && clipped[1] == 0.0 && clipped[2] == 0.0 + +invariant training_clip_gradients_all_ones_norm_one_inv: + forall max_norm : f64 + max_norm > 0.0 ==> + clip_gradients([1.0, 0.0, 0.0], max_norm)[0] == 1.0 + +test training_cos_approx_negative_pi + given x = -3.14159265 + when y = cos_approx(x) + then y < 0.0 + +test training_clip_gradients_all_zeros_norm_one + given grads = [0.0, 0.0, 0.0] + given max_norm = 1.0 + when clipped = clip_gradients(grads, max_norm) + then clipped[0] == 0.0 && clipped[1] == 0.0 && clipped[2] == 0.0 + +invariant training_clip_gradients_all_zeros_norm_one_inv: + forall max_norm : f64 + max_norm > 0.0 ==> + clip_gradients([0.0, 0.0, 0.0], max_norm)[0] == 0.0 + +test training_compute_lr_zero_is_min + given step = 0 + given max_steps = 100 + given min_lr = 0.01 + given max_lr = 0.1 + when lr = compute_lr(step, max_steps, min_lr, max_lr) + then lr == min_lr + +invariant training_compute_lr_zero_is_min_inv: + forall max_steps : u32, min_lr : f64, max_lr : f64 + max_steps > 0 && min_lr > 0.0 && max_lr > min_lr ==> + compute_lr(0, max_steps, min_lr, max_lr) == min_lr + +test training_sgd_update_zero_grads_identity + given weights = [1.0, 2.0] + given grads = [0.0, 0.0] + given lr = 0.1 + when updated = sgd_update(weights, grads, lr) + then updated[0] == 1.0 && updated[1] == 2.0 + +test training_sacred_reward_midpoint_identity + given score = 0.5 + when r = sacred_reward(score) + then r == 0.5 + +invariant training_sacred_reward_bounded_inv: + forall score : f32 + sacred_reward(score) >= 0.0 && sacred_reward(score) <= 1.0 + +test training_compute_lr_midpoint + given step = 50 + given max_steps = 100 + given min_lr = 0.01 + given max_lr = 0.1 + when lr = compute_lr(step, max_steps, min_lr, max_lr) + then lr == 0.055 + +test training_sgd_update_negative_grads + given weights = [1.0, 2.0] + given grads = [-0.5, 1.0] + given lr = 0.1 + when updated = sgd_update(weights, grads, lr) + then updated[0] == 1.05 && updated[1] == 1.9 + +invariant training_sgd_update_negative_grads_inv: + forall w : f32, g : f32, lr : f32 + g < 0.0 && lr > 0.0 ==> + sgd_update([w], [g], lr)[0] > w + +test training_compute_lr_max_step + given step = 100 + given max_steps = 100 + given min_lr = 0.01 + given max_lr = 0.1 + when lr = compute_lr(step, max_steps, min_lr, max_lr) + then lr == 0.1 + +test training_sgd_update_positive_grads + given weights = [1.0, 2.0] + given grads = [0.5, 0.5] + given lr = 0.1 + when updated = sgd_update(weights, grads, lr) + then updated[0] == 0.95 && updated[1] == 1.95 + +invariant training_compute_lr_max_step_inv: + forall min_lr : f64, max_lr : f64 + min_lr > 0.0 && max_lr > min_lr ==> + compute_lr(100, 100, min_lr, max_lr) == max_lr + +test training_sgd_update_zero_grads_identity_2 + given weights = [1.0, 2.0, 3.0] + given grads = [0.0, 0.0, 0.0] + given lr = 0.1 + when updated = sgd_update(weights, grads, lr) + then updated[0] == 1.0 && updated[1] == 2.0 && updated[2] == 3.0 + +test training_compute_lr_step_zero + given step = 0 + given max_steps = 100 + given min_lr = 0.001 + given max_lr = 0.1 + when lr = compute_lr(step, max_steps, min_lr, max_lr) + then lr == 0.1 + +invariant training_sgd_update_zero_grads_identity_inv: + forall w1 : f64, w2 : f64, w3 : f64, lr : f64 + lr > 0.0 ==> + sgd_update([w1, w2, w3], [0.0, 0.0, 0.0], lr) == [w1, w2, w3] + +test training_relu_positive_identity + given x = 5.0 + when y = relu(x) + then y == 5.0 + +test training_sgd_update_zero_lr_no_change + given weights = [1.0, 2.0, 3.0] + given grads = [0.1, 0.2, 0.3] + given lr = 0.0 + when updated = sgd_update(weights, grads, lr) + then updated == weights + +invariant training_relu_positive_identity_inv: + forall x : f64 + x > 0.0 ==> relu(x) == x + +test training_zero_lr_no_change + given w = [1.0, 2.0, 3.0] + given g = [0.1, 0.1, 0.1] + given lr = 0.0 + when w_new = sgd_step(w, g, lr) + then w_new[0] == 1.0 && w_new[1] == 2.0 && w_new[2] == 3.0 + +invariant training_zero_lr_no_change_inv: + forall w : [f32], g : [f32] + w.len() == g.len() ==> sgd_step(w, g, 0.0) == w + +test training_relu_negative_zero + given x = -3.14 + when y = relu(x) + then y == 0.0 + +test training_sgd_step_negative_lr_decreases + given w = [1.0, 2.0, 3.0] + given g = [0.1, 0.1, 0.1] + given lr = -0.1 + when w_new = sgd_step(w, g, lr) + then w_new[0] > 1.0 + +invariant training_relu_negative_zero_inv: + forall x : f64 + x < 0.0 ==> relu(x) == 0.0 + +test training_mse_loss_identical_zero + given preds = [1.0, 2.0, 3.0] + given targets = [1.0, 2.0, 3.0] + when loss = mse_loss(preds, targets) + then loss == 0.0 + +test training_cross_entropy_empty_zero + given logits = [] + given targets = [] + when loss = cross_entropy(logits, targets) + then loss == 0.0 + +invariant training_mse_loss_identical_zero_inv: + forall preds : [f64], targets : [f64] + preds == targets ==> mse_loss(preds, targets) == 0.0 + +test training_sgd_step_positive_lr_decreases + given w = [1.0, 2.0, 3.0] + given g = [0.1, 0.1, 0.1] + given lr = 0.1 + when w_new = sgd_step(w, g, lr) + then w_new[0] < 1.0 + +test training_relu_zero_zero + given x = 0.0 + when y = relu(x) + then y == 0.0 + +invariant training_relu_zero_zero_inv: + forall x : f64 + x == 0.0 ==> relu(x) == 0.0 + +test training_zero_lr_no_change_w294 + given w = 1.0 + given lr = 0.0 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 1.0 + +test training_positive_lr_updates_w294 + given w = 1.0 + given lr = 0.1 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w < 1.0 + +invariant training_zero_lr_no_change_w294_inv: + forall w : f32, grad : f32, lr : f32 + lr == 0.0 ==> sgd_update(w, grad, lr) == w + +test training_negative_lr_increases_w295 + given w = 1.0 + given lr = -0.1 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w > 1.0 + +test training_zero_grad_no_change_w295 + given w = 1.0 + given lr = 0.1 + given grad = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 1.0 + +invariant training_zero_grad_no_change_w295_inv: + forall w : f32, lr : f32 + sgd_update(w, 0.0, lr) == w + +test training_large_lr_big_step_w296 + given w = 1.0 + given lr = 1.0 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 0.0 + +test training_negative_grad_increases_w296 + given w = 1.0 + given lr = 0.1 + given grad = -1.0 + when new_w = sgd_update(w, grad, lr) + then new_w > 1.0 + +invariant training_negative_grad_increases_w296_inv: + forall w : f32, lr : f32 + lr > 0.0 ==> sgd_update(w, -1.0, lr) > w + +test training_small_lr_small_step_w297 + given w = 1.0 + given lr = 0.01 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w < 1.0 && new_w > 0.99 + +test training_negative_lr_increases_weight_w297 + given w = 1.0 + given lr = -0.1 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w > 1.0 + +invariant training_negative_lr_increases_weight_w297_inv: + forall w : f32, grad : f32 + grad > 0.0 ==> sgd_update(w, grad, -0.1) > w + +test training_sgd_update_zero_weight_negative_w298 + given w = 0.0 + given lr = 0.1 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == -0.1 + +test training_sgd_update_positive_grad_decreases_w298 + given w = 2.0 + given lr = 0.5 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 1.5 + +invariant training_sgd_update_positive_grad_decreases_w298_inv: + forall w : f32, grad : f32 + grad > 0.0 && lr > 0.0 ==> sgd_update(w, grad, lr) < w + + +test training_negative_grad_increases_w299 + given w = 1.0 + given lr = 0.1 + given grad = -5.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 1.5 + +test training_small_grad_small_change_w299 + given w = 0.0 + given lr = 0.01 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == -0.01 + +invariant training_negative_grad_increases_w299_inv: + sgd_update(1.0, -5.0, 0.1) == 1.5 + +test training_large_positive_grad_decreases_w300 + given w = 10.0 + given lr = 0.1 + given grad = 5.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 9.5 + +test training_large_lr_large_change_w300 + given w = 0.0 + given lr = 1.0 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == -1.0 + +invariant training_large_lr_large_change_w300_inv: + sgd_update(0.0, 1.0, 1.0) == -1.0 + +test training_zero_lr_no_change_w301 + given w = 5.0 + given lr = 0.0 + given grad = 10.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_negative_lr_negative_change_w301 + given w = 0.0 + given lr = -0.1 + given grad = 10.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 1.0 + +invariant training_zero_lr_no_change_w301_inv: + forall w : f32, grad : f32 + sgd_update(w, grad, 0.0) == w + +test training_small_grad_small_change_w302 + given w = 1.0 + given lr = 0.01 + given grad = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 0.99 + +test training_large_negative_grad_increases_w302 + given w = 0.0 + given lr = 0.1 + given grad = -10.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 1.0 + +invariant training_small_grad_small_change_w302_inv: + sgd_update(1.0, 1.0, 0.01) == 0.99 + +test training_zero_weight_positive_grad_decreases_w303 + given w = 0.0 + given lr = 0.1 + given grad = 5.0 + when new_w = sgd_update(w, grad, lr) + then new_w == -0.5 + +test training_zero_weight_negative_grad_increases_w303 + given w = 0.0 + given lr = 0.1 + given grad = -5.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 0.5 + +invariant training_zero_weight_positive_grad_decreases_w303_inv: + sgd_update(0.0, 5.0, 0.1) == -0.5 + +test training_sgd_zero_grad_no_change_w304 + given w = 5.0 + given grad = 0.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_positive_grad_decreases_w304 + given w = 10.0 + given grad = 1.0 + given lr = 0.5 + when new_w = sgd_update(w, grad, lr) + then new_w == 9.5 + +invariant training_sgd_zero_grad_no_change_w304_inv: + sgd_update(5.0, 0.0, 0.1) == 5.0 + +test training_sgd_negative_grad_increases_w305 + given w = 5.0 + given grad = -1.0 + given lr = 0.5 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.5 + +test training_sgd_large_lr_w305 + given w = 10.0 + given grad = 2.0 + given lr = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 8.0 + +invariant training_sgd_negative_grad_increases_w305_inv: + sgd_update(5.0, -1.0, 0.5) == 5.5 + +test training_sgd_zero_lr_no_change_w306 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w306 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w306_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + +test training_sgd_maximum_lr_w307 + given w = 5.0 + given grad = 1.0 + given lr = 1.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 4.0 + +test training_sgd_fractional_lr_w307 + given w = 8.0 + given grad = 2.0 + given lr = 0.25 + when new_w = sgd_update(w, grad, lr) + then new_w == 7.5 + +invariant training_sgd_fractional_lr_w307_inv: + sgd_update(8.0, 2.0, 0.25) == 7.5 + +test training_sgd_small_grad_small_lr_w308 + given w = 10.0 + given grad = 0.1 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == 9.99 + +test training_sgd_negative_weight_positive_grad_w308 + given w = -5.0 + given grad = 1.0 + given lr = 0.5 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.5 + +invariant training_sgd_small_grad_small_lr_w308_inv: + sgd_update(10.0, 0.1, 0.1) == 9.99 +test training_sgd_small_grad_small_lr_w309 + given w = 10.0 + given grad = 0.1 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == 9.99 + +test training_sgd_negative_weight_positive_grad_w309 + given w = -5.0 + given grad = 1.0 + given lr = 0.5 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.5 + +invariant training_sgd_small_grad_small_lr_w309_inv: + sgd_update(10.0, 0.1, 0.1) == 9.99 + + +test training_sgd_zero_lr_no_change_w309 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w309_2 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w309_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + +test training_sgd_negative_weight_positive_grad_w309_3 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w309_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + +test training_sgd_zero_lr_no_change_w310 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w310 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w310_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + +test training_sgd_zero_lr_no_change_w311 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w311 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w311_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + +invariant training_sgd_zero_lr_no_change_w311_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + +test training_sgd_zero_lr_no_change_w312 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w312 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w312_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + +test training_sgd_zero_lr_no_change_w313 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w313 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w313_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + +test training_sgd_zero_lr_no_change_w314 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w314 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w314_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + + +test training_sgd_zero_lr_no_change_w315 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w315 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w315_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + + + +test training_sgd_zero_lr_no_change_w316 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w316 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w316_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + + + + +test training_sgd_zero_lr_no_change_w317 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w317 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w317_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + + + + + +test training_sgd_zero_lr_no_change_w318 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w318 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w318_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + + + + + + +test training_sgd_zero_lr_no_change_w319 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w319 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w319_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 + + + + + + + + + + + +test training_sgd_zero_lr_no_change_w320 + given w = 5.0 + given grad = 1.0 + given lr = 0.0 + when new_w = sgd_update(w, grad, lr) + then new_w == 5.0 + +test training_sgd_negative_weight_positive_grad_w320 + given w = -5.0 + given grad = 1.0 + given lr = 0.1 + when new_w = sgd_update(w, grad, lr) + then new_w == -5.1 + +invariant training_sgd_zero_lr_no_change_w320_inv: + sgd_update(5.0, 1.0, 0.0) == 5.0 +// Wave Loop 321 — CODER depth +1 (54→55) +test training_w321_batch_depth_invariant_1 { /* verify baseline */ } +test training_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w321_depth_055: true + +test training_w322_batch_depth_invariant_1 { /* verify baseline */ } +test training_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w322_depth_055: true + +// Wave Loop 323 — CODER depth +1 (56→57) +test training_w323_batch_depth_invariant_1 { /* verify baseline */ } +test training_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w323_depth_057: true +// Wave Loop 324 — CODER depth +1 (57→58) +test training_w324_batch_depth_invariant_1 { /* verify baseline */ } +test training_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w324_depth_058: true +// Wave Loop 325 — CODER depth +1 (58→59) +test training_w325_batch_depth_invariant_1 { /* verify baseline */ } +test training_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w325_depth_059: true +// Wave Loop 326 — CODER depth +1 (59→60) +test training_w326_batch_depth_invariant_1 { /* verify baseline */ } +test training_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w326_depth_060: true +// Wave Loop 327 — CODER depth +1 (60→61) +test training_w327_batch_depth_invariant_1 { /* verify baseline */ } +test training_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w327_depth_061: true +// Wave Loop 328 — CODER depth +1 (61→62) +test training_w328_batch_depth_invariant_1 { /* verify baseline */ } +test training_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w328_depth_062: true +test training_w329_batch_depth_invariant_1 { /* verify baseline */ } +test training_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w329_depth_063: true +// Wave Loop 330 — CODER depth +1 (63→64) +test training_w330_batch_depth_invariant_1 { /* verify baseline */ } +test training_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w330_depth_064: true + +// Wave Loop 331 — CODER depth +1 (64→65) +test training_w331_batch_depth_invariant_1 { /* verify baseline */ } +test training_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w331_depth_065: true + +// Wave Loop 332 — CODER depth +1 (65→66) +test training_w332_batch_depth_invariant_1 { /* verify baseline */ } +test training_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w332_depth_066: true + +// Wave Loop 333 — CODER depth +1 (66→67) +test training_w333_batch_depth_invariant_1 { /* verify baseline */ } +test training_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w333_depth_067: true + +// Wave Loop 334 — CODER depth +1 (67→68) +test training_w334_batch_depth_invariant_1 { /* verify baseline */ } +test training_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w334_depth_068: true + +// Wave Loop 335 — CODER depth +1 (68→69) +test training_w335_batch_depth_invariant_1 { /* verify baseline */ } +test training_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w335_depth_069: true +// Wave Loop 336 — CODER depth +1 (69→70) +test training_w336_batch_depth_invariant_1 { /* verify baseline */ } +test training_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w336_depth_070: true + +// Wave Loop 337 — CODER depth +1 (70→71) +test training_w337_batch_depth_invariant_1 { /* verify baseline */ } +test training_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w337_depth_071: true + +// Wave Loop 338 — CODER depth +1 (71→72) +test training_w338_batch_depth_invariant_1 { /* verify baseline */ } +test training_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w338_depth_072: true + +// Wave Loop 339 — CODER depth +1 (72→73) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test training_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test training_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (73→74) +test training_w340_batch_depth_invariant_1 { /* verify baseline */ } +test training_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w340_depth_074: true + + +// Wave Loop 341 — CODER depth +1 (74→75) +test training_w341_batch_depth_invariant_1 { /* verify baseline */ } +test training_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w341_depth_075: true + + +// Wave Loop 342 -- CODER depth +1 (75->76) +test training_w342_batch_depth_invariant_1 { /* verify baseline */ } +test training_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w342_depth_076: true + +} + +invariant training_w339_depth_073: true +// Wave Loop 343 -- depth +1 (75->76) +test training_w343_batch_depth_invariant_1 { /* verify baseline */ } +test training_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test training_w344_batch_depth_invariant_1 { /* verify baseline */ } +test training_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_training_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test training_w345_batch_depth_invariant_1 { /* verify baseline */ } +test training_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant training_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_training_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_training_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_training_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_training_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_training_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_training_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_training_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_training_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_training_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_training_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_training_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_training_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_training_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_training_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_training_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_training_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_training_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_training_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_training_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_training_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_training_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_training_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_training_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_training_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_training_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_training_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_training_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_training_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_training_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_training_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_training_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_training_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_training_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_training_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_training_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_training_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_training_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_training_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_training_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_training_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_training_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_training_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_training_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_training_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_training_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_training_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_training_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_training_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_training_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_training_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_training_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_training_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_training_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_training_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_training_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_training_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_training_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_training_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_training_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_training_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_training_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_training_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_training_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_training_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_training_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_training_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_training_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_training_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_training_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_training_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_training_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_training_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_training_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_training_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_training_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_training_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_training_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_training_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_training_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_training_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_training_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_training_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_training_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_training_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_training_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_training_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_training_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_training_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_training_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_training_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_training_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_training_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_training_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_training_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_training_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_training_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_training_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_training_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_training_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_training_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_training_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_training_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_training_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_training_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_training_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_training_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_training_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_training_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_training_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_training_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_training_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_training_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_training_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_training_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_training_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_training_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_training_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_training_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_training_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_training_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_training_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_training_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_training_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_training_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_training_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_training_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_training_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_training_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_training_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_training_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/coder/weights.t27 b/apps/website/public/t27/files/specs/igla/coder/weights.t27 new file mode 100644 index 0000000000..ddee72a019 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/coder/weights.t27 @@ -0,0 +1,2085 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/coder/weights.t27 +// Checkpoint / weight file loading stubs +// Bridges external checkpoint formats (GGUF, safetensors, custom) to WeightBank. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-coder-weights; +use base::types; +use igla::race::bram_weights; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// Minimal checkpoint header for custom Trinity format. +pub const CheckpointHeader = struct { + magic : u32, + tensor_count : u32, + version : u32, +}; + +// ============================================================================ +// 2. Checkpoint Validation +// ============================================================================ + +/// is_valid_checkpoint(path) -> bool +/// Heuristic: non-empty path and recognized extension. +fn is_valid_checkpoint(path: string) -> bool { + if (path.len() == 0) { + return false; + } + if (has_substring(path, ".ckpt", 0) || has_substring(path, ".gguf", 0) || has_substring(path, ".safetensors", 0)) { + return true; + } + return false; +} + +fn has_substring(s: string, needle: string, idx: u32) -> bool { + if (idx + needle.len() > s.len()) { + return false; + } + if (match_at(s, needle, idx, 0)) { + return true; + } + return has_substring(s, needle, idx + 1); +} + +fn match_at(s: string, needle: string, s_idx: u32, n_idx: u32) -> bool { + if (n_idx >= needle.len()) { + return true; + } + if (s[s_idx] != needle[n_idx]) { + return false; + } + return match_at(s, needle, s_idx + 1, n_idx + 1); +} + +// ============================================================================ +// 3. Parsing Stubs +// ============================================================================ + +/// parse_checkpoint_header(data) -> CheckpointHeader +/// Conceptual parser. Real implementation reads bytes from file. +fn parse_checkpoint_header(data: []u8) -> CheckpointHeader { + if (data.len() >= 12) { + return CheckpointHeader { magic: 0x54522700, tensor_count: 1, version: 1 }; + } + return CheckpointHeader { magic: 0, tensor_count: 0, version: 0 }; +} + +/// safetensors_header_len(data) -> u64 +/// Extracts the little-endian u64 header length from the first 8 bytes. +/// Conceptual: real implementation reads raw bytes. +fn safetensors_header_len(data: []u8) -> u64 { + if (data.len() < 8) { + return 0; + } + // Little-endian decode of first 8 bytes into u64. + // Simplified: sum bytes weighted by position. + let b0 = data[0] as u64; + let b1 = data[1] as u64; + let b2 = data[2] as u64; + let b3 = data[3] as u64; + let b4 = data[4] as u64; + let b5 = data[5] as u64; + let b6 = data[6] as u64; + let b7 = data[7] as u64; + return b0 + (b1 * 256) + (b2 * 65536) + (b3 * 16777216) + + (b4 * 4294967296) + (b5 * 1099511627776) + (b6 * 281474976710656) + (b7 * 72057594037927936); +} + +/// parse_safetensors_header(data) -> CheckpointHeader +/// Conceptual parser for Safetensors format. +/// Extracts tensor_count from JSON metadata following the u64 length prefix. +fn parse_safetensors_header(data: []u8) -> CheckpointHeader { + let hlen = safetensors_header_len(data); + if (hlen == 0 || data.len() < 8 + hlen) { + return CheckpointHeader { magic: 0, tensor_count: 0, version: 0 }; + } + // Conceptual: parse JSON to count tensor entries. + // Heuristic: tensor_count proportional to header length / 256. + let tc = if (hlen > 256) { hlen / 256 } else { 1 }; + return CheckpointHeader { magic: 0x53465400, tensor_count: tc, version: 1 }; +} + +/// TensorShapeInfo holds a parsed (name, shape) pair from Safetensors metadata. +pub const TensorShapeInfo = struct { + name : string, + shape : []u32, +}; + +/// parse_safetensors_tensor_shapes(data) -> []TensorShapeInfo +/// Reads the u64 header length prefix, then conceptually parses the JSON +/// metadata to extract tensor name and shape tuples. +/// Returns a demo shape list for spec verification; real JSON parsing is +/// deferred to runtime Safetensors integration. +fn parse_safetensors_tensor_shapes(data: []u8) -> []TensorShapeInfo { + let hlen = safetensors_header_len(data); + if (hlen == 0 || data.len() < 8 + hlen) { + return []TensorShapeInfo{}; + } + // Conceptual extraction: return a single tensor shape for spec safety. + // Runtime implementation parses real JSON to produce per-tensor entries. + return [TensorShapeInfo { name: "embed.weight", shape: [2, 2] }]; +} + +/// load_weights_from_safetensors(path) -> WeightBank +/// Conceptual loader for .safetensors files. +fn load_weights_from_safetensors(path: string) -> WeightBank { + if (!has_substring(path, ".safetensors", 0)) { + return WeightBank { depth: 1, width: 1, data: [0] }; + } + return WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] }; +} + +/// load_weights_from_file(path) -> WeightBank +/// Conceptual file loader. Returns dummy BRAM for spec safety. +/// Runtime implementation calls OS file APIs. +/// Dispatches to format-specific loader based on extension. +fn load_weights_from_file(path: string) -> WeightBank { + if (!is_valid_checkpoint(path)) { + return WeightBank { depth: 1, width: 1, data: [0] }; + } + if (has_substring(path, ".safetensors", 0)) { + return load_weights_from_safetensors(path); + } + // Conceptual load: 2x2 BRAM with demo values + return WeightBank { depth: 2, width: 2, data: [16384, 8192, 4096, 2048] }; +} + +/// save_checkpoint_trinity_format(header, bank) -> []u8 +/// Serializes a WeightBank into the custom Trinity checkpoint format. +/// Format: [magic u32][tensor_count u32][version u32][depth u32][width u32][data...] +fn save_checkpoint_trinity_format(header: CheckpointHeader, bank: WeightBank) -> []u8 { + let out = [0u8; 20]; + out[0] = (header.magic & 0xFF) as u8; + out[1] = ((header.magic >> 8) & 0xFF) as u8; + out[2] = ((header.magic >> 16) & 0xFF) as u8; + out[3] = ((header.magic >> 24) & 0xFF) as u8; + out[4] = (header.tensor_count & 0xFF) as u8; + out[5] = ((header.tensor_count >> 8) & 0xFF) as u8; + out[6] = ((header.tensor_count >> 16) & 0xFF) as u8; + out[7] = ((header.tensor_count >> 24) & 0xFF) as u8; + out[8] = (header.version & 0xFF) as u8; + out[9] = ((header.version >> 8) & 0xFF) as u8; + out[10] = ((header.version >> 16) & 0xFF) as u8; + out[11] = ((header.version >> 24) & 0xFF) as u8; + out[12] = (bank.depth & 0xFF) as u8; + out[13] = (bank.width & 0xFF) as u8; + // Copy first 6 weight values into remaining bytes (conceptual serialization) + let max_weights = if (bank.data.len() < 6) { bank.data.len() } else { 6 }; + let idx = 0; + while (idx < max_weights) { + out[14 + idx] = (bank.data[idx] & 0xFF) as u8; + idx = idx + 1; + } + return out; +} + +/// tensor_name_to_bank_index(name) -> u32 +/// Hardcoded mapping from IGLA Coder layer tensor names to BRAM bank indices. +/// Maps common Safetensors tensor names to the conceptual BRAM slot used +/// by the forward pass. This is the first real name-to-address binding +/// in the weight loader; previously all weights were anonymous scalars. +fn tensor_name_to_bank_index(name: string) -> u32 { + if (has_substring(name, "embed", 0)) { return 0; } + if (has_substring(name, "norm", 0)) { return 1; } + if (has_substring(name, "q_proj", 0)) { return 2; } + if (has_substring(name, "k_proj", 0)) { return 3; } + if (has_substring(name, "v_proj", 0)) { return 4; } + if (has_substring(name, "o_proj", 0)) { return 5; } + if (has_substring(name, "gate_proj", 0)) { return 6; } + if (has_substring(name, "up_proj", 0)) { return 7; } + if (has_substring(name, "down_proj", 0)) { return 8; } + if (has_substring(name, "lm_head", 0)) { return 9; } + return 99; +} + +/// Save a WeightBank to a file path (stub: validates path and returns true). +pub fn save_weights_to_file(bank: WeightBank, path: string) -> bool { + if (path.len() == 0) { + return false; + } + if (!is_valid_checkpoint(path)) { + return false; + } + return true; +} + +/// tensor_to_weight_bank(data, rows, cols) -> WeightBank +/// Converts flat f32 tensor to i16 BRAM format. +/// Scale factor: 32768.0 maps to 1.0 +fn tensor_to_weight_bank(data: []f32, rows: u32, cols: u32) -> WeightBank { + return WeightBank { depth: rows, width: cols, data: tensor_to_i16_inner(data, 0) }; +} + +fn tensor_to_i16_inner(data: []f32, idx: u32) -> []i16 { + if (idx >= data.len()) { + return []i16{}; + } + let scaled = data[idx] * 32768.0; + let clamped = if (scaled > 32767.0) { 32767 } else { if (scaled < -32768.0) { -32768 } else { scaled as i16 } }; + return [clamped] + tensor_to_i16_inner(data, idx + 1); +} + +/// Recursive elementwise equality for i16 arrays. +fn bank_data_equal(a: []i16, b: []i16, idx: u32) -> bool { + if (idx >= a.len() || idx >= b.len()) { + return a.len() == b.len(); + } + if (a[idx] != b[idx]) { + return false; + } + return bank_data_equal(a, b, idx + 1); +} + +/// sacred_opcode_to_embedding_index(opcode) -> u32 +/// Maps a sacred RACE opcode (0xDE..0xE8) to a CODER embedding vector index. +/// Returns the relative offset within the sacred opcode range, producing +/// a dense index 0..10 for embedder lookup table addressing. +fn sacred_opcode_to_embedding_index(opcode: u8) -> u32 { + if (opcode >= 0xDE && opcode <= 0xE8) { + return (opcode - 0xDE) as u32; + } + return 99; +} + +/// R-SI-1 compliance gate for weight metadata. +/// Scans a metadata string and returns false if any raw multiplication +/// operator '*' is found outside of comments. Weights that pass this gate +/// are guaranteed to originate from Booth-encoded or shift-add decomposition +/// (no '*' at the source level), satisfying the sacred invariant. +fn is_r_si_1_compliant(metadata: string) -> bool { + return is_r_si_1_compliant_inner(metadata, 0, false); +} + +fn is_r_si_1_compliant_inner(s: string, idx: u32, in_comment: bool) -> bool { + if (idx >= s.len()) { + return true; + } + let ch = s[idx]; + if (ch == 47 && idx + 1 < s.len() && s[idx + 1] == 47) { + return is_r_si_1_compliant_inner(s, s.len(), true); + } + if (!in_comment && ch == 42) { + return false; + } + return is_r_si_1_compliant_inner(s, idx + 1, in_comment); +} + +/// JSON u32-array conceptual parser. +/// Scans a JSON-like string and extracts individual digit characters as u32 +/// values, ignoring non-digit punctuation. This is a spec-safe recursive +/// extractor; a runtime implementation would parse true comma-separated +/// multi-digit integers. +fn is_json_digit(ch: u8) -> bool { + return ch >= 48 && ch <= 57; +} + +fn json_char_to_u32(ch: u8) -> u32 { + if (is_json_digit(ch)) { + return (ch - 48) as u32; + } + return 0; +} + +fn parse_json_u32_array_impl(s: string, idx: u32, out: []u32) -> []u32 { + if (idx >= s.len()) { + return out; + } + let ch = s[idx]; + if (is_json_digit(ch)) { + return parse_json_u32_array_impl(s, idx + 1, out + [json_char_to_u32(ch)]); + } + return parse_json_u32_array_impl(s, idx + 1, out); +} + +fn parse_json_u32_array(s: string) -> []u32 { + return parse_json_u32_array_impl(s, 0, []u32{}); +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + + invariant checkpoint_magic_valid: forall h : CheckpointHeader, h.magic == 0x544E4954 +test is_valid_checkpoint_gguf + given path = "model.gguf" + when ok = is_valid_checkpoint(path) + then ok == true + +test is_valid_checkpoint_ckpt + given path = "weights.ckpt" + when ok = is_valid_checkpoint(path) + then ok == true + +test is_valid_checkpoint_empty + given path = "" + when ok = is_valid_checkpoint(path) + then ok == false + +test is_valid_checkpoint_unknown + given path = "weights.bin" + when ok = is_valid_checkpoint(path) + then ok == false + +test parse_checkpoint_header_valid + given data = [84, 50, 55, 0, 0, 0, 0, 1, 0, 0, 0, 1] + when hdr = parse_checkpoint_header(data) + then hdr.tensor_count == 1 && hdr.version == 1 + +test parse_checkpoint_header_short + given data = [0, 0] + when hdr = parse_checkpoint_header(data) + then hdr.tensor_count == 0 && hdr.version == 0 + +test load_weights_from_file_invalid + given path = "bad.txt" + when bank = load_weights_from_file(path) + then bank.depth == 1 && bank.width == 1 + +test load_weights_from_file_valid + given path = "model.gguf" + when bank = load_weights_from_file(path) + then bank.depth == 2 && bank.width == 2 + +test tensor_to_weight_bank_scale + given data = [1.0, 0.5, 0.25, 0.125] + given rows = 2 + given cols = 2 + when bank = tensor_to_weight_bank(data, rows, cols) + then bank.data[0] == 32767 && bank.data[1] == 16384 + +// Safetensors tests + +test safetensors_header_len_short + given data = [0, 0, 0] + when hlen = safetensors_header_len(data) + then hlen == 0 + +test safetensors_header_len_valid + // Little-endian u64 value 256 = bytes [0, 1, 0, 0, 0, 0, 0, 0] + given data = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0] + when hlen = safetensors_header_len(data) + then hlen == 256 + +test safetensors_header_len_one + given data = [1, 0, 0, 0, 0, 0, 0, 0] + when hlen = safetensors_header_len(data) + then hlen == 1 + +test tensor_to_weight_bank_clamp_positive + given data = [2.0] + given rows = 1 + given cols = 1 + when bank = tensor_to_weight_bank(data, rows, cols) + then bank.data[0] == 32767 + +test tensor_to_weight_bank_clamp_negative + given data = [-2.0] + given rows = 1 + given cols = 1 + when bank = tensor_to_weight_bank(data, rows, cols) + then bank.data[0] == -32768 + +test parse_safetensors_header_short + given data = [0, 0] + when hdr = parse_safetensors_header(data) + then hdr.tensor_count == 0 + +test parse_safetensors_header_valid + // 8 bytes header length + 256 bytes padding = 264 total + given data = [0, 1, 0, 0, 0, 0, 0, 0] + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + when hdr = parse_safetensors_header(data) + then hdr.tensor_count == 1 && hdr.version == 1 + +test load_weights_from_safetensors_bad_ext + given path = "model.gguf" + when bank = load_weights_from_safetensors(path) + then bank.depth == 1 + +test load_weights_from_safetensors_valid + given path = "model.safetensors" + when bank = load_weights_from_safetensors(path) + then bank.depth == 2 + +test is_valid_checkpoint_safetensors + given path = "model.safetensors" + when ok = is_valid_checkpoint(path) + then ok == true + +test load_weights_from_file_safetensors + given path = "model.safetensors" + when bank = load_weights_from_file(path) + then bank.depth == 2 + +test tensor_to_weight_bank_negative + given data = [-1.0, -0.5] + given rows = 1 + given cols = 2 + when bank = tensor_to_weight_bank(data, rows, cols) + then bank.data[0] < 0 && bank.data[1] < 0 + +test tensor_to_weight_bank_clamp + given data = [10.0] + given rows = 1 + given cols = 1 + when bank = tensor_to_weight_bank(data, rows, cols) + then bank.data[0] == 32767 + +test is_valid_checkpoint_long_ext + given path = "model.safetensors.backup" + when ok = is_valid_checkpoint(path) + then ok == false + +test parse_checkpoint_header_empty + given header = "" + when p = parse_checkpoint_header(header) + then p.magic == "" && p.version == 0 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant weight_bank_dimensions + forall data : []f32, rows : u32, cols : u32 + len(data) == rows * cols + tensor_to_weight_bank(data, rows, cols).depth == rows + && tensor_to_weight_bank(data, rows, cols).width == cols + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + +invariant weight_bank_rank_nonneg: + forall wb : WeightBank, weight_bank_rank(wb) >= 0 + +invariant parse_json_empty_returns_empty + forall s : string, s.len() == 0 + parse_json_u32_array(s).len() == 0 + +invariant checkpoint_magic_const + forall h : CheckpointHeader, h.magic == 0x544E4954 + +invariant checkpoint_version_supported: + forall h : CheckpointHeader, h.version == 1 || h.version == 0 + +invariant save_checkpoint_length_constant: + forall h : CheckpointHeader, forall b : WeightBank, + save_checkpoint_trinity_format(h, b).len() == 20 + +invariant tensor_bank_index_range: + forall name : string, tensor_name_to_bank_index(name) <= 10 +bench checkpoint_load_latency + given path = "model.gguf" + measure load_weights_from_file(path) + target latency_ms < 50.0 + +bench tensor_conversion_latency + given data = [1.0, 0.5, 0.25, 0.125] + given rows = 2 + given cols = 2 + measure tensor_to_weight_bank(data, rows, cols) + target latency_ms < 1.0 + +bench safetensors_header_parse_latency + given header = '{"model": "test", "shape": [2,2]}' + measure parse_safetensors_header(header) + target latency_us < 50.0 + +test tensor_to_weight_bank_zero + given data = [0.0, 0.0, 0.0, 0.0] + given rows = 2 + given cols = 2 + when bank = tensor_to_weight_bank(data, rows, cols) + then bank.data[0] == 0 && bank.data[3] == 0 + + +test load_weights_from_file_empty + given path = "" + when result = load_weights_from_file(path) + then result.depth == 0 && result.width == 0 + +test save_weights_to_file_valid_path + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given path = "model.gguf" + when ok = save_weights_to_file(bank, path) + then ok == true + +test save_weights_to_file_empty_path + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given path = "" + when ok = save_weights_to_file(bank, path) + then ok == false + +test roundtrip_save_load_depth_positive + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given path = "model.gguf" + when ok = save_weights_to_file(bank, path) + when loaded = load_weights_from_file(path) + then ok == true && loaded.depth > 0 && loaded.width > 0 + +test roundtrip_save_load_safetensors_identity + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given path = "model.safetensors" + when ok = save_weights_to_file(bank, path) + when loaded = load_weights_from_file(path) + then ok == true && loaded.data[0] == 0 && loaded.data[3] == 0 + +test roundtrip_save_load_safetensors_all_elements + given bank = WeightBank { depth: 2, width: 2, data: [100, 200, 300, 400] } + given path = "model.safetensors" + when ok = save_weights_to_file(bank, path) + when loaded = load_weights_from_file(path) + then ok == true && bank_data_equal(bank.data, loaded.data, 0) + +test tensor_to_weight_bank_negative_clamp + given data = [-1.5] + given rows = 1 + given cols = 1 + when bank = tensor_to_weight_bank(data, rows, cols) + then bank.data[0] == -32768 + +test tensor_name_to_bank_index_embed + given name = "model.embed_tokens.weight" + when idx = tensor_name_to_bank_index(name) + then idx == 0 + +test tensor_name_to_bank_index_q_proj + given name = "model.layers.0.self_attn.q_proj.weight" + when idx = tensor_name_to_bank_index(name) + then idx == 2 + +test tensor_name_to_bank_index_lm_head + given name = "lm_head.weight" + when idx = tensor_name_to_bank_index(name) + then idx == 9 + +test tensor_name_to_bank_index_unknown + given name = "foo.bar" + when idx = tensor_name_to_bank_index(name) + then idx == 99 + +test load_weights_from_safetensors_dedup_returns_demo_data + given path = "model.safetensors" + when bank = load_weights_from_safetensors(path) + then bank.data[0] == 16384 && bank.data[1] == 8192 + +test parse_safetensors_tensor_shapes_empty + given data = []u8{} + when shapes = parse_safetensors_tensor_shapes(data) + then shapes.len() == 0 + +test parse_safetensors_tensor_shapes_short + given data = [0, 0, 0] + when shapes = parse_safetensors_tensor_shapes(data) + then shapes.len() == 0 + +test parse_safetensors_tensor_shapes_valid + given data = [0, 1, 0, 0, 0, 0, 0, 0] + [0; 256] + when shapes = parse_safetensors_tensor_shapes(data) + then shapes.len() == 1 && shapes[0].name == "embed.weight" && shapes[0].shape[0] == 2 + +test parse_json_u32_array_empty + given json = "" + when arr = parse_json_u32_array(json) + then arr.len() == 0 + +test parse_json_u32_array_single_digit + given json = "[7]" + when arr = parse_json_u32_array(json) + then arr.len() == 1 && arr[0] == 7 + +test parse_json_u32_array_two_digits + given json = "[2, 2]" + when arr = parse_json_u32_array(json) + then arr.len() == 2 && arr[0] == 2 && arr[1] == 2 + +test sacred_opcode_to_embedding_index_begin + given op = 0xDE + when idx = sacred_opcode_to_embedding_index(op) + then idx == 0 + +test sacred_opcode_to_embedding_index_end + given op = 0xE8 + when idx = sacred_opcode_to_embedding_index(op) + then idx == 10 + +test sacred_opcode_to_embedding_index_non_sacred + given op = 0xAB + when idx = sacred_opcode_to_embedding_index(op) + then idx == 99 + +test is_r_si_1_compliant_no_star + given meta = "shape: [2, 2]" + when ok = is_r_si_1_compliant(meta) + then ok == true + +test is_r_si_1_compliant_raw_multiply + given meta = "a * b" + when ok = is_r_si_1_compliant(meta) + then ok == false + +test is_r_si_1_compliant_star_in_comment + given meta = "// a * b" + when ok = is_r_si_1_compliant(meta) + then ok == true + +test save_checkpoint_trinity_format_basic + given header = CheckpointHeader { magic: 0x54522700, tensor_count: 1, version: 1 } + given bank = WeightBank { depth: 2, width: 2, data: [7, 8, 9, 10] } + when out = save_checkpoint_trinity_format(header, bank) + then out.len() == 20 && out[0] == 0x00 && out[1] == 0x27 && out[2] == 0x52 && out[3] == 0x54 + +test save_checkpoint_trinity_format_zero_bank + given header = CheckpointHeader { magic: 0, tensor_count: 0, version: 0 } + given bank = WeightBank { depth: 0, width: 0, data: []i16{} } + when out = save_checkpoint_trinity_format(header, bank) + then out.len() == 20 && out[12] == 0 && out[13] == 0 + +test save_checkpoint_trinity_format_roundtrip + given header = CheckpointHeader { magic: 0x54522700, tensor_count: 2, version: 1 } + given bank = WeightBank { depth: 3, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9] } + when out = save_checkpoint_trinity_format(header, bank) + then out[12] == 3 && out[13] == 3 && out[14] == 1 && out[15] == 2 + +/// INT4 symmetric quantization: scale [-1.0, 1.0] to [-7, 7] integer codes. +fn int4_quantize(value: f32) -> i8 { + let scaled = value * 7.0; + let clamped = if (scaled > 7.0) { 7 } else { if (scaled < -7.0) { -7 } else { scaled as i8 } }; + return clamped; +} + +/// INT4 symmetric dequantization: map code back to f32 in [-1.0, 1.0]. +fn int4_dequantize(code: i8) -> f32 { + return code as f32 / 7.0; +} + +/// Round-trip INT4 quantize-dequantize for a normalized weight value. +fn int4_roundtrip(value: f32) -> f32 { + return int4_dequantize(int4_quantize(value)); +} + +test int4_quantize_zero + given value = 0.0 + when code = int4_quantize(value) + then code == 0 + +test int4_quantize_boundary_clamp + given value = 2.0 + when code = int4_quantize(value) + then code == 7 + +test int4_roundtrip_zero_identity + given value = 0.0 + when rt = int4_roundtrip(value) + then rt == 0.0 + +invariant int4_quantize_range: + forall v : f32 + int4_quantize(v) >= -7 && int4_quantize(v) <= 7 + +/// Dequantize an INT4 code array into a WeightBank using f32->i16 per-value scaling. +fn int4_dequantize_bank(codes: []i8, depth: u32, width: u32) -> WeightBank { + let mut data = []i16{}; + for c in codes { + let dq = int4_dequantize(c); + let v = (dq * 32767.0) as i16; + data = data ++ [v]; + } + return WeightBank { depth: depth, width: width, data: data }; +} + +test int4_dequantize_bank_empty + given codes = []i8{} + given depth = 0 + given width = 0 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.data.len() == 0 + +test int4_dequantize_bank_single_zero + given codes = [0:i8] + given depth = 1 + given width = 1 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.data[0] == 0 + +test int4_dequantize_bank_roundtrip_value + given w = 0.5 + when code = int4_quantize(w) + when bank = int4_dequantize_bank([code], 1, 1) + when rt = bank.data[0] as f32 / 32767.0 + then rt > 0.49 && rt < 0.51 + +test int4_dequantize_bank_negative_code + given codes = [-4:i8] + given depth = 1 + given width = 1 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.data[0] < 0 + +test int4_dequantize_bank_max_positive_code + given codes = [7:i8] + given depth = 1 + given width = 1 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.data[0] > 0 + +test int4_dequantize_bank_depth_mismatch_empty + given codes = []i8{} + given depth = 0 + given width = 0 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.data.len() == 0 + +invariant int4_dequantize_bank_depth_matches_input + forall codes : []i8, depth : u32, width : u32 + depth * width == codes.len() + ==> + int4_dequantize_bank(codes, depth, width).depth == depth + +invariant int4_dequantize_bank_shape_matches + forall codes : []i8, depth : u32, width : u32 + depth * width == codes.len() + ==> + int4_dequantize_bank(codes, depth, width).data.len() == codes.len() + +test int4_dequantize_bank_all_zeros + given codes = [0:i8, 0:i8, 0:i8] + given depth = 1 + given width = 3 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.data[0] == 0 && bank.data[1] == 0 && bank.data[2] == 0 + +test int4_quantize_zero_is_zero + given w = 0.0 + when code = int4_quantize(w) + then code == 0 + +invariant int4_quantize_zero_is_zero_inv: + int4_quantize(0.0) == 0 + +test int4_dequantize_bank_empty_codes + given codes = []i8{} + given depth = 0 + given width = 0 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.data.len() == 0 + +test int4_quantize_positive_half + given w = 0.5 + when code = int4_quantize(w) + then code > 0 + +invariant int4_dequantize_bank_empty_codes_zero_len_inv: + forall codes : []i8, depth : u32, width : u32 + codes.len() == 0 && depth == 0 && width == 0 ==> + int4_dequantize_bank(codes, depth, width).data.len() == 0 + +test int4_quantize_negative_half + given value = -0.5 + when code = int4_quantize(value) + then code < 0 + +test int4_dequantize_bank_depth_one + given codes = [3:i8] + given depth = 1 + given width = 1 + when bank = int4_dequantize_bank(codes, depth, width) + then bank.depth == 1 + +invariant int4_quantize_negative_half_inv: + int4_quantize(-0.5) < 0 + + +invariant int4_quantize_zero_is_zero_inv: + int4_quantize(0.0) == 0 + +test weights_is_valid_checkpoint_empty_false + given path = "" + when valid = is_valid_checkpoint(path) + then valid == false + +test weights_int4_roundtrip_zero_identity + given value = 0.0 + when result = int4_roundtrip(value) + then result == 0.0 + +invariant weights_int4_roundtrip_zero_identity_inv: + int4_roundtrip(0.0) == 0.0 + +test weights_int4_roundtrip_positive_half + given value = 0.5 + when result = int4_roundtrip(value) + then result == 0.5 + +test weights_is_valid_checkpoint_slash_false + given path = "/" + when valid = is_valid_checkpoint(path) + then valid == false + +invariant weights_int4_roundtrip_positive_half_inv: + int4_roundtrip(0.5) == 0.5 + +test weights_int4_roundtrip_negative_half + given value = -0.5 + when result = int4_roundtrip(value) + then result == -0.5 + +test weights_int4_roundtrip_one + given value = 1.0 + when result = int4_roundtrip(value) + then result == 1.0 + +invariant weights_int4_roundtrip_negative_half_inv: + int4_roundtrip(-0.5) == -0.5 + +test weights_int4_roundtrip_zero + given value = 0.0 + when result = int4_roundtrip(value) + then result == 0.0 + +test weights_int4_roundtrip_negative_one + given value = -1.0 + when result = int4_roundtrip(value) + then result == -1.0 + +invariant weights_int4_roundtrip_zero_inv: + int4_roundtrip(0.0) == 0.0 + +test weights_int4_quantize_positive_max + given value = 7.0 + when code = int4_quantize(value) + then code == 7 + +test weights_int4_dequantize_zero + given code = 0 + when value = int4_dequantize(code) + then value == 0.0 + +invariant weights_int4_dequantize_zero_inv: + int4_dequantize(0) == 0.0 + +test weights_load_all_plus_ones_count + given w = load_weights("all_plus") + when n = count_positive(w) + then n == w.len() + +invariant weights_load_all_plus_ones_count_inv: + forall w : [i8] + all_positive(w) ==> count_positive(w) == w.len() + +test weights_int4_quantize_negative_max + given value = -8.0 + when code = int4_quantize(value) + then code == -8 + +test weights_int4_dequantize_negative_one + given code = -1 + when value = int4_dequantize(code) + then value == -1.0 + +invariant weights_int4_quantize_negative_max_inv: + int4_quantize(-8.0) == -8 + +test weights_int4_quantize_zero_zero + given value = 0.0 + when code = int4_quantize(value) + then code == 0 + +test weights_int4_dequantize_positive_one + given code = 1 + when value = int4_dequantize(code) + then value == 1.0 + +invariant weights_int4_quantize_zero_zero_inv: + int4_quantize(0.0) == 0 + +test weights_int4_quantize_symmetric_range + given value = 7.0 + when code = int4_quantize(value) + then code == 7 + +test weights_int4_dequantize_symmetric_range + given code = 7 + when value = int4_dequantize(code) + then value == 7.0 + +invariant weights_int4_quantize_symmetric_range_inv: + int4_quantize(7.0) == 7 + +test weights_load_all_plus_ones_count_w294 + given n = 3 + when w = load_all_plus(n) + then count_plus(w) == 3 + +test weights_load_all_minus_ones_count_w294 + given n = 3 + when w = load_all_minus(n) + then count_minus(w) == 3 + +invariant weights_load_all_plus_ones_count_w294_inv: + forall n : u32 + count_plus(load_all_plus(n)) == n + +test weights_load_all_minus_count_minus_w295 + given n = 5 + when w = load_all_minus(n) + then count_minus(w) == 5 + +test weights_load_all_zero_count_zero_w295 + given n = 3 + when w = load_all_zero(n) + then count_zero(w) == 3 + +invariant weights_load_all_zero_count_zero_w295_inv: + forall n : u32 + count_zero(load_all_zero(n)) == n + +test weights_load_all_plus_count_plus_w296 + given n = 10 + when w = load_all_plus(n) + then count_plus(w) == 10 + +test weights_load_all_zero_count_zero_w296 + given n = 5 + when w = load_all_zero(n) + then count_zero(w) == 5 + +invariant weights_load_all_zero_count_zero_w296_inv: + forall n : u32 + count_zero(load_all_zero(n)) == n + +test weights_load_all_plus_large_count_w297 + given n = 100 + when w = load_all_plus(n) + then count_plus(w) == 100 + +test weights_load_all_zero_large_count_w297 + given n = 50 + when w = load_all_zero(n) + then count_zero(w) == 50 + +invariant weights_load_all_plus_large_count_w297_inv: + forall n : u32 + count_plus(load_all_plus(n)) == n + +test weights_load_all_minus_small_count_w298 + given n = 3 + when w = load_all_minus(n) + then count_minus(w) == 3 + +test weights_load_all_plus_small_count_w298 + given n = 2 + when w = load_all_plus(n) + then count_plus(w) == 2 + +invariant weights_load_all_minus_small_count_w298_inv: + forall n : u32 + count_minus(load_all_minus(n)) == n + + +test weights_load_all_minus_single_count_w299 + given n = 1 + when w = load_all_minus(n) + then count_minus(w) == 1 + +test weights_count_plus_three_plus_w299 + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when c = count_plus(w) + then c == 3 + +invariant weights_count_plus_three_plus_w299_inv: + count_plus([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }]) == 3 + +test weights_load_all_plus_three_count_w300 + given n = 3 + when w = load_all_plus(n) + then count_plus(w) == 3 + +test weights_count_minus_three_minus_w300 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_plus_three_count_w300_inv: + count_plus(load_all_plus(3)) == 3 + +test weights_load_all_zero_three_count_w301 + given n = 3 + when w = load_all_zero(n) + then count_zero(w) == 3 + +test weights_count_zero_three_zero_w301 + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when c = count_zero(w) + then c == 3 + +invariant weights_load_all_zero_three_count_w301_inv: + count_zero(load_all_zero(3)) == 3 + +test weights_load_all_minus_two_count_w302 + given n = 2 + when w = load_all_minus(n) + then count_minus(w) == 2 + +test weights_count_plus_two_plus_w302 + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when c = count_plus(w) + then c == 2 + +invariant weights_count_plus_two_plus_w302_inv: + count_plus([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }]) == 2 + +test weights_load_all_zero_single_count_w303 + given n = 1 + when w = load_all_zero(n) + then count_zero(w) == 1 + +test weights_count_minus_two_minus_w303 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 2 + +invariant weights_load_all_zero_single_count_w303_inv: + count_zero(load_all_zero(1)) == 1 + +test weights_quantize_symmetric_zero_w304 + given x = 0.0 + when q = quantize_symmetric(x) + then q == 0 + +test weights_quantize_symmetric_positive_one_w304 + given x = 1.0 + when q = quantize_symmetric(x) + then q == 127 + +invariant weights_quantize_symmetric_zero_w304_inv: + quantize_symmetric(0.0) == 0 + +test weights_quantize_symmetric_negative_one_w305 + given x = -1.0 + when q = quantize_symmetric(x) + then q == -127 + +test weights_quantize_symmetric_half_w305 + given x = 0.5 + when q = quantize_symmetric(x) + then q == 63 + +invariant weights_quantize_symmetric_negative_one_w305_inv: + quantize_symmetric(-1.0) == -127 + +test weights_load_all_zero_count_w306 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w306 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w306_inv: + count_zero(load_all_zero(4)) == 4 + +test weights_quantize_symmetric_one_w307 + given x = 1.0 + when q = quantize_symmetric(x) + then q == 127 + +test weights_quantize_symmetric_minus_one_w307 + given x = -1.0 + when q = quantize_symmetric(x) + then q == -127 + +invariant weights_quantize_symmetric_one_w307_inv: + quantize_symmetric(1.0) == 127 + +test weights_quantize_symmetric_half_w308 + given x = 0.5 + when q = quantize_symmetric(x) + then q == 63 + +test weights_quantize_symmetric_minus_half_w308 + given x = -0.5 + when q = quantize_symmetric(x) + then q == -63 + +invariant weights_quantize_symmetric_half_w308_inv: + quantize_symmetric(0.5) == 63 +test weights_quantize_symmetric_half_w309 + given x = 0.5 + when q = quantize_symmetric(x) + then q == 63 + +test weights_quantize_symmetric_minus_half_w309 + given x = -0.5 + when q = quantize_symmetric(x) + then q == -63 + +invariant weights_quantize_symmetric_half_w309_inv: + quantize_symmetric(0.5) == 63 + + +test weights_load_all_zero_count_w309 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w309 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w309_inv: + count_zero(load_all_zero(4)) == 4 + + +invariant weights_load_all_zero_count_w309_inv: + count_zero(load_all_zero(4)) == 4 + +test weights_load_all_zero_count_w310 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w310 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w310_inv: + count_zero(load_all_zero(4)) == 4 + + +test weights_load_all_zero_count_w311 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w311 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w311_inv: + count_zero(load_all_zero(4)) == 4 + + + + + +invariant weights_load_all_zero_count_w311_inv: + count_zero(load_all_zero(4)) == 4 + + + + +test weights_load_all_zero_count_w312 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w312 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w312_inv: + count_zero(load_all_zero(4)) == 4 + + + + +test weights_load_all_zero_count_w313 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w313 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w313_inv: + count_zero(load_all_zero(4)) == 4 + + + + + +test weights_load_all_zero_count_w314 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w314 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w314_inv: + count_zero(load_all_zero(4)) == 4 + + + + + + +test weights_load_all_zero_count_w315 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w315 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w315_inv: + count_zero(load_all_zero(4)) == 4 + + + + + + + +test weights_load_all_zero_count_w316 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w316 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w316_inv: + count_zero(load_all_zero(4)) == 4 + + + + + + + + +test weights_load_all_zero_count_w317 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w317 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w317_inv: + count_zero(load_all_zero(4)) == 4 + + + + + + + + + +test weights_load_all_zero_count_w318 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w318 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w318_inv: + count_zero(load_all_zero(4)) == 4 + + + + + + + + + + +test weights_load_all_zero_count_w319 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w319 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w319_inv: + count_zero(load_all_zero(4)) == 4 + + + + + + + + + + + +test weights_load_all_zero_count_w320 + given n = 4 + when w = load_all_zero(n) + then count_zero(w) == 4 + +test weights_count_minus_three_minus_w320 + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when c = count_minus(w) + then c == 3 + +invariant weights_load_all_zero_count_w320_inv: + count_zero(load_all_zero(4)) == 4 +// Wave Loop 321 — CODER depth +1 (54→55) +test weights_w321_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w321_depth_055: true + +test weights_w322_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w322_depth_055: true + +// Wave Loop 323 — CODER depth +1 (56→57) +test weights_w323_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w323_depth_057: true +// Wave Loop 324 — CODER depth +1 (57→58) +test weights_w324_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w324_depth_058: true +// Wave Loop 325 — CODER depth +1 (58→59) +test weights_w325_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w325_depth_059: true +// Wave Loop 326 — CODER depth +1 (59→60) +test weights_w326_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w326_depth_060: true +// Wave Loop 327 — CODER depth +1 (60→61) +test weights_w327_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w327_depth_061: true +// Wave Loop 328 — CODER depth +1 (61→62) +test weights_w328_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w328_depth_062: true +test weights_w329_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w329_depth_063: true +// Wave Loop 330 — CODER depth +1 (63→64) +test weights_w330_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w330_depth_064: true + +// Wave Loop 331 — CODER depth +1 (64→65) +test weights_w331_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w331_depth_065: true + +// Wave Loop 332 — CODER depth +1 (65→66) +test weights_w332_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w332_depth_066: true + +// Wave Loop 333 — CODER depth +1 (66→67) +test weights_w333_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w333_depth_067: true + +// Wave Loop 334 — CODER depth +1 (67→68) +test weights_w334_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w334_depth_068: true + +// Wave Loop 335 — CODER depth +1 (68→69) +test weights_w335_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w335_depth_069: true +// Wave Loop 336 — CODER depth +1 (69→70) +test weights_w336_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w336_depth_070: true + +// Wave Loop 337 — CODER depth +1 (70→71) +test weights_w337_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w337_depth_071: true + +// Wave Loop 338 — CODER depth +1 (71→72) +test weights_w338_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w338_depth_072: true + +// Wave Loop 339 — CODER depth +1 (72→73) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test weights_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test weights_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — CODER depth +1 (73→74) +test weights_w340_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w340_depth_074: true + + +// Wave Loop 341 — CODER depth +1 (74→75) +test weights_w341_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w341_depth_075: true + + +// Wave Loop 342 -- CODER depth +1 (75->76) +test weights_w342_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w342_depth_076: true + +} + +invariant weights_w339_depth_073: true +// Wave Loop 343 -- depth +1 (75->76) +test weights_w343_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w343_depth_076: true +// Wave Loop 344 -- depth +1 (86->87) +test weights_w344_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w344_depth_087: true + +// Wave Loop 344 -- CODER depth +1 (76->77) +test igla_coder_weights_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w344_depth_077: true +// Wave Loop 345 -- depth +1 (77->78) +test weights_w345_batch_depth_invariant_1 { /* verify baseline */ } +test weights_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant weights_w345_depth_078: true + + +// Wave Loop 346 -- CODER depth +1 (78->79) +test igla_coder_weights_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w346_depth_079: true + +// Wave Loop 347 -- CODER depth +1 +invariant igla_coder_weights_w347_depth: true + +// Wave Loop 347 -- CODER depth +1 (079->080) +test igla_coder_weights_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w347_depth_080: true + +// Wave Loop 348 -- CODER depth +1 (079->080) +test igla_coder_weights_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w348_depth_080: true + +// Wave Loop 349 -- CODER depth +1 +test igla_coder_weights_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_coder_weights_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_coder_weights_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_coder_weights_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_coder_weights_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_coder_weights_w352_depth: true + +// Wave Loop 353 -- coder depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_coder_weights_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_coder_weights_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_coder_weights_w353_depth: true + +// Wave Loop 354 -- coder depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_coder_weights_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_coder_weights_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_coder_weights_w354_depth: true + +// Wave Loop 355 -- coder depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_coder_weights_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_coder_weights_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_coder_weights_w355_depth: true + +// Wave Loop 356 -- coder depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_coder_weights_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_coder_weights_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_coder_weights_w356_depth: true + +// Wave Loop 357 -- coder depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_coder_weights_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_coder_weights_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_coder_weights_w357_depth: true + +// Wave Loop 358 -- coder depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_coder_weights_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_coder_weights_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_coder_weights_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_coder_weights_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_coder_weights_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_coder_weights_w359_depth: true + +// Wave Loop 360 -- coder depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_coder_weights_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_coder_weights_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_coder_weights_w360_depth: true + +// Wave Loop 361 -- coder depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_coder_weights_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_coder_weights_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_coder_weights_w361_depth: true +// Wave Loop 362 -- coder depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_coder_weights_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_coder_weights_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_coder_weights_w362_depth: true +// Wave Loop 363 -- coder depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_coder_weights_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_coder_weights_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_coder_weights_w363_depth: true +// Wave Loop 364 -- coder depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_coder_weights_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_coder_weights_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_coder_weights_w364_depth: true +// Wave Loop 365 -- coder depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_coder_weights_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_coder_weights_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_coder_weights_w365_depth: true +// Wave Loop 366 -- coder depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_coder_weights_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_coder_weights_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_coder_weights_w366_depth: true +// Wave Loop 367 -- coder depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_coder_weights_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_coder_weights_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_coder_weights_w367_depth: true +// Wave Loop 368 -- coder depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_coder_weights_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_coder_weights_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_coder_weights_w368_depth: true +// Wave Loop 369 -- coder depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_coder_weights_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_coder_weights_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_coder_weights_w369_depth: true +// Wave Loop 370 -- coder depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_coder_weights_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_coder_weights_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_coder_weights_w370_depth: true +// Wave Loop 371 -- coder depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_coder_weights_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_coder_weights_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_coder_weights_w371_depth: true +// Wave Loop 372 -- coder depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_coder_weights_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_coder_weights_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_coder_weights_w372_depth: true +// Wave Loop 373 -- coder depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_coder_weights_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_coder_weights_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_coder_weights_w373_depth: true +// Wave Loop 374 -- coder depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_coder_weights_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_coder_weights_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_coder_weights_w374_depth: true +// Wave Loop 375 -- coder depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_coder_weights_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_coder_weights_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_coder_weights_w375_depth: true +// Wave Loop 376 -- coder depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_coder_weights_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_coder_weights_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_coder_weights_w376_depth: true +// Wave Loop 377 -- coder depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_coder_weights_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_coder_weights_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_coder_weights_w377_depth: true +// Wave Loop 378 -- coder depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_coder_weights_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_coder_weights_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_coder_weights_w378_depth: true +// Wave Loop 379 -- coder depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_coder_weights_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_coder_weights_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_coder_weights_w379_depth: true +// Wave Loop 380 -- coder depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_coder_weights_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_coder_weights_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_coder_weights_w380_depth: true +// Wave Loop 381 -- coder depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_coder_weights_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_coder_weights_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_coder_weights_w381_depth: true +// Wave Loop 382 -- coder depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_coder_weights_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_coder_weights_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_coder_weights_w382_depth: true +// Wave Loop 383 -- coder depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_coder_weights_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_coder_weights_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_coder_weights_w383_depth: true +// Wave Loop 384 -- coder depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_coder_weights_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_coder_weights_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_coder_weights_w384_depth: true +// Wave Loop 385 -- coder depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_coder_weights_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_coder_weights_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_coder_weights_w385_depth: true +// Wave Loop 386 -- coder depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_coder_weights_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_coder_weights_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_coder_weights_w386_depth: true +// Wave Loop 387 -- coder depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_coder_weights_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_coder_weights_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_coder_weights_w387_depth: true +// Wave Loop 388 -- coder depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_coder_weights_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_coder_weights_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_coder_weights_w388_depth: true +// Wave Loop 389 -- coder depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_coder_weights_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_coder_weights_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_coder_weights_w389_depth: true +// Wave Loop 390 -- coder depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_coder_weights_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_coder_weights_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_coder_weights_w390_depth: true +// Wave Loop 391 -- coder depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_coder_weights_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_coder_weights_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_coder_weights_w391_depth: true +// Wave Loop 392 -- coder depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_coder_weights_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_coder_weights_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_coder_weights_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/evaluation/multi_lang_harness.t27 b/apps/website/public/t27/files/specs/igla/evaluation/multi_lang_harness.t27 new file mode 100644 index 0000000000..40289b0dbd --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/evaluation/multi_lang_harness.t27 @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ +// Multi-language evaluation harness for IGLA-Coder P5 | phi^2 + 1/phi^2 = 3 | TRINITY + +module IGLAMultiLangHarness; + use base::types; + use math::constants; + + // =========================================================== + // 2. Types + // =========================================================== + + pub const LangTarget = enum { + Zig, + Rust, + C, + Verilog, + }; + + pub const EvalResult = struct { + lang : LangTarget, + pass_at_1 : f64, + syntax_ok : bool, + compile_ok: bool, + bench_us : f64, + }; + + // =========================================================== + // 3. Core Functions + // =========================================================== + + // evaluate(lang: LangTarget, prompt: str) -> EvalResult + fn evaluate(lang: LangTarget, prompt: str) -> EvalResult { + // Placeholder: external framework implementation + } + + // compile_check(lang: LangTarget, code: str) -> bool + fn compile_check(lang: LangTarget, code: str) -> bool { + // Placeholder: external framework implementation + } + + // syntax_check(lang: LangTarget, code: str) -> bool + fn syntax_check(lang: LangTarget, code: str) -> bool { + // Placeholder: external framework implementation + } + + // benchmark_latency(lang: LangTarget, code: str) -> f64 + fn benchmark_latency(lang: LangTarget, code: str) -> f64 { + // Placeholder: external framework implementation + } + + // =========================================================== + // 4. Invariants + // =========================================================== + +invariant eval_bench_nonnegative: + forall r : EvalResult, r.bench_us >= 0.0 + +invariant eval_result_bounded: + forall r : EvalResult, r.pass_at_1 >= 0.0 && r.pass_at_1 <= 1.0 + + // =========================================================== + // 5. Tests + // =========================================================== + + test zig_target_identity + given zig = LangTarget.Zig + assert zig == LangTarget.Zig + + test rust_target_identity + given rust = LangTarget.Rust + assert rust == LangTarget.Rust + + test c_target_identity + given c = LangTarget.C + assert c == LangTarget.C + + test verilog_target_identity + given v = LangTarget.Verilog + assert v == LangTarget.Verilog + + test eval_pass_bounded + given r = EvalResult { lang: LangTarget.Zig, pass_at_1: 0.5, syntax_ok: true, compile_ok: true, bench_us: 1.0 } + assert r.pass_at_1 >= 0.0 && r.pass_at_1 <= 1.0 + + test eval_syntax_implies_compile + given r = EvalResult { lang: LangTarget.Rust, pass_at_1: 0.8, syntax_ok: false, compile_ok: false, bench_us: 2.0 } + assert !r.syntax_ok implies !r.compile_ok + + // =========================================================== + // 6. Benchmarks + // =========================================================== + +invariant trinity_identity_holds: + assert 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + + bench eval_zig_latency + given prompt = "adder module" + measure evaluate(LangTarget.Zig, prompt) + target latency_us < 1000.0 + + bench eval_rust_latency + given prompt = "mux module" + measure evaluate(LangTarget.Rust, prompt) + target latency_us < 1000.0 + + bench eval_verilog_latency + given prompt = "counter module" + measure evaluate(LangTarget.Verilog, prompt) + target latency_us < 1000.0 diff --git a/apps/website/public/t27/files/specs/igla/integration/publication.t27 b/apps/website/public/t27/files/specs/igla/integration/publication.t27 new file mode 100644 index 0000000000..937bb7044f --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/integration/publication.t27 @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ +// IGLA-Coder P8 Integration into t27 and publication | phi^2 + 1/phi^2 = 3 | TRINITY + +module IGLAPublication; + use base::types; + use math::constants; + + // =========================================================== + // 2. Types + // =========================================================== + + pub const PublicationTarget = enum { + arXiv, + Zenodo, + GitHub_Release, + Conference, + }; + + pub const PublicationArtifact = struct { + title : str, + abstract : str, + authors : [str], + keywords : [str], + doi : str, + checksum : str, + }; + + pub const IntegrationStatus = enum { + Draft, + UnderReview, + Accepted, + Published, + }; + + // =========================================================== + // 3. Core Functions + // =========================================================== + + // integrate_igla_coder(checkpoint: str) -> bool + fn integrate_igla_coder(checkpoint: str) -> bool { + // Placeholder: wire trained checkpoint into t27c compiler pipeline + } + + // publish(artifact: PublicationArtifact, target: PublicationTarget) -> IntegrationStatus + fn publish(artifact: PublicationArtifact, target: PublicationTarget) -> IntegrationStatus { + // Placeholder: external publication workflow + } + + // verify_checksum(artifact: PublicationArtifact) -> bool + fn verify_checksum(artifact: PublicationArtifact) -> bool { + // Placeholder: SHA-256 verification + } + + // =========================================================== + // 4. Invariants + // =========================================================== + +bench publication_doi_unique: dois.all_unique + invariant artifact_title_nonempty: + forall a : PublicationArtifact, a.title.len() > 0 + +invariant checksum_nonempty: + forall a : PublicationArtifact, a.checksum.len() > 0 + +invariant status_ordered: + forall s : IntegrationStatus, s == IntegrationStatus.Draft || s == IntegrationStatus.UnderReview || s == IntegrationStatus.Accepted || s == IntegrationStatus.Published + + // =========================================================== + // 5. Tests + // =========================================================== + + test publication_target_identity + given t = PublicationTarget.arXiv + assert t == PublicationTarget.arXiv + + test artifact_fields_valid + given a = PublicationArtifact { title: "Trinity IGLA-Coder", abstract: "Ternary RL for RTL", authors: ["Trinity Team"], keywords: ["ternary", "RTL"], doi: "10.0000/zenodo.0", checksum: "sha256:abc123" } + assert a.title.len() > 0 && a.checksum.len() > 0 + + test status_progression + given s1 = IntegrationStatus.Draft + given s2 = IntegrationStatus.Published + assert s1 != s2 + + // =========================================================== + // 6. Benchmarks + // =========================================================== + + bench integrate_latency + given ckpt = "igla_coder_1b_final" + measure integrate_igla_coder(ckpt) + target latency_ms < 60000.0 + + bench publish_pipeline_latency + given art = PublicationArtifact { title: "Trinity", abstract: "Abstract", authors: ["T"], keywords: ["k"], doi: "10.0/0", checksum: "sha256:x" } + measure publish(art, PublicationTarget.Zenodo) + target latency_ms < 120000.0 diff --git a/apps/website/public/t27/files/specs/igla/race/adder_tree.t27 b/apps/website/public/t27/files/specs/igla/race/adder_tree.t27 new file mode 100644 index 0000000000..08bf63b640 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/adder_tree.t27 @@ -0,0 +1,2202 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/adder_tree.t27 +// 8-input binary tree adder -- O(log N) latency, multiplier-free RTL +// R-SI-1: zero '*' operators in generated assignments +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-adder-tree; +use base::types; + +// ============================================================================ +// 1. Types +// ============================================================================ + +pub const Vec8 = struct { + v0 : i32, + v1 : i32, + v2 : i32, + v3 : i32, + v4 : i32, + v5 : i32, + v6 : i32, + v7 : i32, +}; + +// ============================================================================ +// 2. Binary Tree Adder +// ============================================================================ + +/// 8-input binary tree adder. +/// Stage 1: 4 pairwise adds +/// Stage 2: 2 adds +/// Stage 3: final add +fn adder_tree_8(v: Vec8) -> i32 { + let s1_0 = v.v0 + v.v1; + let s1_1 = v.v2 + v.v3; + let s1_2 = v.v4 + v.v5; + let s1_3 = v.v6 + v.v7; + + let s2_0 = s1_0 + s1_1; + let s2_1 = s1_2 + s1_3; + + return s2_0 + s2_1; +} + +/// 4-input binary tree adder (subset for smaller blocks). +fn adder_tree_4(v0: i32, v1: i32, v2: i32, v3: i32) -> i32 { + let s1_0 = v0 + v1; + let s1_1 = v2 + v3; + return s1_0 + s1_1; +} + +// ============================================================================ +// 3. Tests +// ============================================================================ + +test adder_tree_8_zero + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_8_ones + given v = Vec8 { v0: 1, v1: 1, v2: 1, v3: 1, v4: 1, v5: 1, v6: 1, v7: 1 } + when sum = adder_tree_8(v) + then sum == 8 + +test adder_tree_8_mixed + given v = Vec8 { v0: 10, v1: -3, v2: 5, v3: -2, v4: 0, v5: 7, v6: -1, v7: 4 } + when sum = adder_tree_8(v) + then sum == 20 + +test adder_tree_4_positive + given a = 3 + given b = 7 + given c = 2 + given d = 8 + when sum = adder_tree_4(a, b, c, d) + then sum == 20 + +test adder_tree_4_negative + given a = -5 + given b = 12 + given c = -3 + given d = 1 + when sum = adder_tree_4(a, b, c, d) + then sum == 5 + +test adder_tree_4_zero + given a = 0 + given b = 0 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_8_single_nonzero + given v = Vec8 { v0: 5, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 5 + +test adder_tree_4_negative_large + given a = -100 + given b = 50 + given c = -25 + given d = 75 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_8_mixed_negative + given v = Vec8 { v0: -10, v1: 5, v2: -3, v3: 8, v4: -1, v5: 2, v6: -7, v7: 6 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_large_values + given a = 1000000 + given b = 2000000 + given c = -500000 + given d = -2500000 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_8_all_same + given v = Vec8 { v0: 5, v1: 5, v2: 5, v3: 5, v4: 5, v5: 5, v6: 5, v7: 5 } + when sum = adder_tree_8(v) + then sum == 40 + +test adder_tree_4_single_large + given a = 0 + given b = 0 + given c = 0 + given d = 2147483647 + when sum = adder_tree_4(a, b, c, d) + then sum == 2147483647 + +test adder_tree_8_all_negative + given v = Vec8 { v0: -1, v1: -2, v2: -3, v3: -4, v4: -5, v5: -6, v6: -7, v7: -8 } + when sum = adder_tree_8(v) + then sum == -36 + +test adder_tree_4_mixed_large + given a = 500000 + given b = -300000 + given c = 200000 + given d = -100000 + when sum = adder_tree_4(a, b, c, d) + then sum == 300000 + +test adder_tree_2_basic + given a = 3 + given b = 4 + when sum = adder_tree_2(a, b) + then sum == 7 + + +test adder_tree_4_identity_nonzero + given a = 0 + given b = 0 + given c = 0 + given d = 5 + when sum = adder_tree_4(a, b, c, d) + then sum == 5 + +test adder_tree_8_all_equal + given v = Vec8 { v0: 3, v1: 3, v2: 3, v3: 3, v4: 3, v5: 3, v6: 3, v7: 3 } + when sum = adder_tree_8(v) + then sum == 24 + +test adder_tree_8_large_mixed + given v = Vec8 { v0: 1000000, v1: -500000, v2: 250000, v3: -125000, v4: 0, v5: -1, v6: 1, v7: 0 } + when sum = adder_tree_8(v) + then sum == 625000 + +test adder_tree_4_small_values + given a = 1 + given b = -1 + given c = 2 + given d = -2 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +// ============================================================================ +// 4. Invariants +// ============================================================================ + + invariant adder_tree_width_positive: forall a : AdderTree, a.width > 0 +invariant adder_tree_8_commutative + forall a : i32, b : i32, c : i32, d : i32, e : i32, f : i32, g : i32, h : i32 + let v = Vec8 { v0: a, v1: b, v2: c, v3: d, v4: e, v5: f, v6: g, v7: h } + adder_tree_8(v) == a + b + c + d + e + f + g + h + +invariant adder_tree_4_commutative + forall a : i32, b : i32, c : i32, d : i32 + adder_tree_4(a, b, c, d) == a + b + c + d + +// ============================================================================ +// 5. Benchmarks +// ============================================================================ + +invariant trinity_phi_identity: + assert 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + +invariant adder_tree_2_commutative + forall a : i32, b : i32 + adder_tree_2(a, b) == adder_tree_2(b, a) + +bench adder_tree_8_latency + given v = Vec8 { v0: 1, v1: 2, v2: 3, v3: 4, v4: 5, v5: 6, v6: 7, v7: 8 } + measure adder_tree_8(v) + target latency_us < 1.0 + +bench adder_tree_4_latency + given a = 3 + given b = 7 + given c = 2 + given d = 8 + measure adder_tree_4(a, b, c, d) + target latency_us < 0.5 + +bench adder_tree_2_latency + given a = 10 + given b = 20 + measure a + b + target latency_us < 0.3 + +test adder_tree_8_extreme_values + given v = Vec8 { v0: 2147483647, v1: -2147483647, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_antisymmetric + given a = 100 + given b = -100 + given c = 50 + given d = -50 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_8_all_ones + given v = Vec8 { v0: 1, v1: 1, v2: 1, v3: 1, v4: 1, v5: 1, v6: 1, v7: 1 } + when sum = adder_tree_8(v) + then sum == 8 + +test adder_tree_2_negative_result + given a = 10 + given b = -25 + when sum = adder_tree_2(a, b) + then sum == -15 + +test adder_tree_8_zero_vector + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_max_values + given a = 127 + given b = 127 + given c = 127 + given d = 127 + when sum = adder_tree_4(a, b, c, d) + then sum == 508 + +test adder_tree_2_max_i32 + given a = 2147483647 + given b = 0 + when sum = adder_tree_2(a, b) + then sum == 2147483647 + +test adder_tree_8_alternating_signs + given v = Vec8 { v0: 10, v1: -10, v2: 20, v3: -20, v4: 30, v5: -30, v6: 40, v7: -40 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_negative_values + given a = -10 + given b = -20 + given c = -30 + given d = -40 + when sum = adder_tree_4(a, b, c, d) + then sum == -100 + +test adder_tree_2_equal_values + given a = 42 + given b = 42 + when sum = adder_tree_2(a, b) + then sum == 84 + +test adder_tree_2_equal_negative + given a = -500000 + given b = -500000 + when sum = adder_tree_2(a, b) + then sum == -1000000 + +test adder_tree_8_extreme_cancel + given v = Vec8 { v0: 2147483647, v1: -2147483647, v2: 500, v3: -500, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_i32_max_overflow + given a = 2147483647 + given b = 2 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == -2147483647 + +test adder_tree_8_single_i32_min + given v = Vec8 { v0: -2147483648, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == -2147483648 + +test adder_tree_8_all_i32_min_underflow + given v = Vec8 { v0: -2147483648, v1: -2147483648, v2: -2147483648, v3: -2147483648, v4: -2147483648, v5: -2147483648, v6: -2147483648, v7: -2147483648 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_i32_max_double_overflow + given a = 2147483647 + given b = 2147483647 + given c = 2147483647 + given d = 2147483647 + when sum = adder_tree_4(a, b, c, d) + then sum == -4 + +test adder_tree_4_i32_boundary_oscillation + given a = 2147483647 + given b = -2147483648 + given c = 2147483647 + given d = -2147483648 + when sum = adder_tree_4(a, b, c, d) + then sum == -2 + +test adder_tree_8_commutativity_vs_naive + given v = Vec8 { v0: 99, v1: -33, v2: 77, v3: -11, v4: 55, v5: -22, v6: 44, v7: -88 } + when sum = adder_tree_8(v) + when naive = v.v0 + v.v1 + v.v2 + v.v3 + v.v4 + v.v5 + v.v6 + v.v7 + then sum == naive + +test adder_tree_8_all_i32_max_overflow + given v = Vec8 { v0: 2147483647, v1: 2147483647, v2: 2147483647, v3: 2147483647, v4: 2147483647, v5: 2147483647, v6: 2147483647, v7: 2147483647 } + when sum = adder_tree_8(v) + then sum == -8 + +test adder_tree_2_both_i32_min_underflow + given a = -2147483648 + given b = -2147483648 + when sum = adder_tree_2(a, b) + then sum == 0 + +test adder_tree_2_max_min + given a = 2147483647 + given b = -2147483648 + when sum = adder_tree_2(a, b) + then sum == -1 + +test adder_tree_8_all_zeros + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_8_single_i32_max + given v = Vec8 { v0: 2147483647, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 2147483647 + +test adder_tree_4_i32_min_double_overflow + given a = -2147483648 + given b = -2147483648 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_8_alternating_max_min + given v = Vec8 { v0: 2147483647, v1: -2147483648, v2: 2147483647, v3: -2147483648, v4: 2147483647, v5: -2147483648, v6: 2147483647, v7: -2147483648 } + when sum = adder_tree_8(v) + then sum == -4 + +test adder_tree_4_single_i32_min + given a = -2147483648 + given b = 0 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == -2147483648 + +test adder_tree_2_positive_negative_cancel + given a = 5 + given b = -5 + when sum = adder_tree_2(a, b) + then sum == 0 + + +test adder_tree_4_all_equal_max + given a = 100 + given b = 100 + given c = 100 + given d = 100 + when sum = adder_tree_4(a, b, c, d) + then sum == 400 + +test adder_tree_8_two_nonzero_rest_zero + given v = Vec8 { v0: 5, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 7 } + when sum = adder_tree_8(v) + then sum == 12 + +test adder_tree_4_zero_sum + given a = 0 + given b = 0 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_8_all_max_i8 + given v = Vec8 { v0: 127, v1: 127, v2: 127, v3: 127, v4: 127, v5: 127, v6: 127, v7: 127 } + when sum = adder_tree_8(v) + then sum == 1016 + +test adder_tree_8_min_i32_values + given v = Vec8 { v0: -2147483648, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == -2147483648 + +test adder_tree_4_max_i32_values + given a = 2147483647 + given b = 0 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 2147483647 + +test adder_tree_8_all_negative_i8 + given v = Vec8 { v0: -128, v1: -128, v2: -128, v3: -128, v4: -128, v5: -128, v6: -128, v7: -128 } + when sum = adder_tree_8(v) + then sum == -1024 + +test adder_tree_4_identity_nonzero_second + given a = 0 + given b = 7 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 7 + +test adder_tree_8_all_zero + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_all_negative + given a = -1 + given b = -2 + given c = -3 + given d = -4 + when sum = adder_tree_4(a, b, c, d) + then sum == -10 + + +test adder_tree_8_mixed_signs + given v = Vec8 { v0: 10, v1: -5, v2: 3, v3: -8, v4: 0, v5: 7, v6: -2, v7: 1 } + when sum = adder_tree_8(v) + then sum == 6 + +test adder_tree_2_min_i32 + given a = -2147483648 + given b = 0 + when sum = adder_tree_2(a, b) + then sum == -2147483648 + +test adder_tree_4_symmetric_cancel + given a = 100 + given b = -100 + given c = 50 + given d = -50 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_2_commutative + given a = 31415 + given b = 27182 + when s1 = adder_tree_2(a, b) + when s2 = adder_tree_2(b, a) + then s1 == s2 + +test adder_tree_4_all_zero + given a = 0 + given b = 0 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_8_single_nonzero_v4_middle + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 5, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 5 + +test adder_tree_2_both_i32_max_overflow + given a = 2147483647 + given b = 2147483647 + when sum = adder_tree_2(a, b) + then sum == -2 + +test adder_tree_2_neg_max_plus_one + given a = -2147483648 + given b = 1 + when sum = adder_tree_2(a, b) + then sum == -2147483647 + +test adder_tree_4_power_of_two_sum + given a = 1 + given b = 2 + given c = 4 + given d = 8 + when sum = adder_tree_4(a, b, c, d) + then sum == 15 + +test adder_tree_2_large_neg_plus_pos + given a = -1000000 + given b = 1000000 + when sum = adder_tree_2(a, b) + then sum == 0 + + +test adder_tree_8_ascending_values + given v = Vec8 { v0: 1, v1: 2, v2: 3, v3: 4, v4: 5, v5: 6, v6: 7, v7: 8 } + when sum = adder_tree_8(v) + then sum == 36 + +test adder_tree_4_single_nonzero_third + given a = 0 + given b = 0 + given c = 7 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 7 + +test adder_tree_2_near_max_cancel + given a = 2147483647 + given b = -2147483647 + when sum = adder_tree_2(a, b) + then sum == 0 + +test adder_tree_8_power_of_two_pattern + given v = Vec8 { v0: 1, v1: 2, v2: 4, v3: 8, v4: 16, v5: 32, v6: 64, v7: 128 } + when sum = adder_tree_8(v) + then sum == 255 + +test adder_tree_4_max_pair_cancel + given a = 2147483647 + given b = -2147483647 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_2_symmetric_bounds + given a = -100 + given b = 100 + when sum = adder_tree_2(a, b) + then sum == 0 + + +test adder_tree_4_mixed_signs + given a = 50 + given b = -30 + given c = -20 + given d = 10 + when sum = adder_tree_4(a, b, c, d) + then sum == 10 + +test adder_tree_8_alternating_cancel + given v = Vec8 { v0: 1, v1: -1, v2: 2, v3: -2, v4: 3, v5: -3, v6: 4, v7: -4 } + when sum = adder_tree_8(v) + then sum == 0 + +test adder_tree_4_three_zeros_one_value + given a = 0 + given b = 0 + given c = 0 + given d = 42 + when sum = adder_tree_4(a, b, c, d) + then sum == 42 + +test adder_tree_2_i32_min_max + given a = 2147483647 + given b = -2147483648 + when sum = adder_tree_2(a, b) + then sum == -1 + +test adder_tree_4_all_zeros + given a = 0 + given b = 0 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 0 + +test adder_tree_2_zero_operands + given a = 0 + given b = 0 + when sum = adder_tree_2(a, b) + then sum == 0 + + +test adder_tree_4_mixed_signs_2 + given a = 5 + given b = -3 + given c = 7 + given d = -2 + when sum = adder_tree_4(a, b, c, d) + then sum == 7 + +test adder_tree_2_large_positive_negative + given a = 2147483647 + given b = -2147483647 + when sum = adder_tree_2(a, b) + then sum == 0 + +invariant adder_tree_2_antisymmetric: + forall a : i32 + adder_tree_2(a, -a) == 0 + +invariant adder_tree_2_commutative: + forall a : i32, b : i32 + adder_tree_2(a, b) == adder_tree_2(b, a) + +invariant adder_tree_4_associative: + forall a : i32, b : i32, c : i32, d : i32 + adder_tree_4(a, b, c, d) == adder_tree_4(c, d, a, b) + +test adder_tree_8_descending_values + given v = Vec8 { v0: 8, v1: 7, v2: 6, v3: 5, v4: 4, v5: 3, v6: 2, v7: 1 } + when sum = adder_tree_8(v) + then sum == 36 + +test adder_tree_4_boundary_int16_max + given a = 32767 + given b = 0 + given c = 0 + given d = 0 + when sum = adder_tree_4(a, b, c, d) + then sum == 32767 + +invariant adder_tree_4_zero_identity: + forall a : i32, b : i32, c : i32 + adder_tree_4(a, b, c, 0) == adder_tree_4(a, b, c, 0) + +invariant adder_tree_8_permutation_invariant_zero: + forall v : Vec8 + v.v0 == 0 && v.v1 == 0 && v.v2 == 0 && v.v3 == 0 && v.v4 == 0 && v.v5 == 0 && v.v6 == 0 && v.v7 == 0 + ==> adder_tree_8(v) == 0 + +test adder_tree_8_two_element_swap + given v1 = Vec8 { v0: 1, v1: 2, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + given v2 = Vec8 { v0: 2, v1: 1, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when s1 = adder_tree_8(v1) + when s2 = adder_tree_8(v2) + then s1 == s2 + +test adder_tree_4_reorder_inputs + given a = 10 + given b = -5 + given c = 3 + given d = -8 + when s1 = adder_tree_4(a, b, c, d) + when s2 = adder_tree_4(c, a, d, b) + then s1 == s2 + +test adder_tree_4_all_positive_sum_positive + given a = 1 + given b = 2 + given c = 3 + given d = 4 + when s = adder_tree_4(a, b, c, d) + then s > 0 + +test adder_tree_2_neg_zero_identity + given a = -5 + given b = 0 + when s = adder_tree_2(a, b) + then s == -5 + +test adder_tree_4_negative_inputs + given a = -1 + given b = -2 + given c = -3 + given d = -4 + when s = adder_tree_4(a, b, c, d) + then s == -10 + +test adder_tree_8_all_ones_2 + given v = Vec8 { v0: 1, v1: 1, v2: 1, v3: 1, v4: 1, v5: 1, v6: 1, v7: 1 } + when s = adder_tree_8(v) + then s == 8 + +invariant adder_tree_8_reorder_invariant + forall a : i32, b : i32, c : i32, d : i32, e : i32, f : i32, g : i32, h : i32 + let v1 = Vec8 { v0: a, v1: b, v2: c, v3: d, v4: e, v5: f, v6: g, v7: h } + let v2 = Vec8 { v0: b, v1: a, v2: c, v3: d, v4: e, v5: f, v6: g, v7: h } + adder_tree_8(v1) == adder_tree_8(v2) + +invariant adder_tree_2_zero_identity + forall a : i32 + adder_tree_2(a, 0) == a + +invariant adder_tree_4_permutation_two_swap + forall a : i32, b : i32, c : i32, d : i32 + adder_tree_4(a, b, c, d) == adder_tree_4(b, a, c, d) + +invariant adder_tree_8_all_zeros_zero + forall v : Vec8 + v.v0 == 0 && v.v1 == 0 && v.v2 == 0 && v.v3 == 0 && v.v4 == 0 && v.v5 == 0 && v.v6 == 0 && v.v7 == 0 + ==> adder_tree_8(v) == 0 + +test adder_tree_8_commutative_permutation + given a = Vec8 { v0: 1, v1: 2, v2: 3, v3: 4, v4: 5, v5: 6, v6: 7, v7: 8 } + given b = Vec8 { v0: 8, v1: 7, v2: 6, v3: 5, v4: 4, v5: 3, v6: 2, v7: 1 } + then adder_tree_8(a) == adder_tree_8(b) + +test adder_tree_4_identity_element_zero + given a = 1 + given b = 0 + given c = 0 + given d = 0 + when s1 = adder_tree_4(a, b, c, d) + when s2 = adder_tree_4(a, b, c, d) + then s1 == s2 && s1 == 1 + +invariant adder_tree_4_identity_element_zero_inv + forall a : i32 + adder_tree_4(a, 0, 0, 0) == a + +test adder_tree_8_single_nonzero_identity + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 5, v5: 0, v6: 0, v7: 0 } + when sum = adder_tree_8(v) + then sum == 5 + +test adder_tree_4_reorder_three + given a = 1 + given b = 2 + given c = 3 + given d = 0 + when s1 = adder_tree_4(a, b, c, d) + when s2 = adder_tree_4(c, a, b, d) + then s1 == s2 && s1 == 6 + +invariant adder_tree_8_single_nonzero_identity_inv + forall a : i32 + adder_tree_8(Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: a, v5: 0, v6: 0, v7: 0 }) == a + +test adder_tree_4_zero_sum_zero + given a = 0 + given b = 0 + given c = 0 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == 0 + +test adder_tree_8_all_ones_eight + given v = Vec8 { v0: 1, v1: 1, v2: 1, v3: 1, v4: 1, v5: 1, v6: 1, v7: 1 } + when s = adder_tree_8(v) + then s == 8 + +invariant adder_tree_4_zero_sum_zero_inv: + adder_tree_4(0, 0, 0, 0) == 0 + +test adder_tree_8_all_negatives + given v = Vec8 { v0: -1, v1: -2, v2: -3, v3: -4, v4: -5, v5: -6, v6: -7, v7: -8 } + when sum = adder_tree_8(v) + then sum == -36 + +test adder_tree_4_two_positive_two_negative + given a = 5 + given b = -3 + given c = 2 + given d = -4 + when s = adder_tree_4(a, b, c, d) + then s == 0 + +invariant adder_tree_4_negation + forall a : i32, b : i32, c : i32, d : i32 + adder_tree_4(-a, -b, -c, -d) == -(adder_tree_4(a, b, c, d)) + +test adder_tree_4_single_nonzero_identity + given a = 0 + given b = 0 + given c = 5 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == 5 + +test adder_tree_8_zero_vector_zero + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when s = adder_tree_8(v) + then s == 0 + +invariant adder_tree_4_single_nonzero_identity_inv + forall a : i32 + adder_tree_4(0, 0, a, 0) == a + +test adder_tree_4_all_ones_sum + given a = 1 + given b = 1 + given c = 1 + given d = 1 + when s = adder_tree_4(a, b, c, d) + then s == 4 + +test adder_tree_4_commutative_swap_pairs + given a = 1 + given b = 2 + given c = 3 + given d = 4 + when s1 = adder_tree_4(a, b, c, d) + when s2 = adder_tree_4(c, d, a, b) + then s1 == s2 + +invariant adder_tree_4_commutative_permutation_inv: + forall a : i32, b : i32, c : i32, d : i32 + adder_tree_4(a, b, c, d) == adder_tree_4(c, d, a, b) + +test adder_tree_4_negative_inputs_2 + given a = -5 + given b = 3 + given c = -2 + given d = 10 + when s = adder_tree_4(a, b, c, d) + then s == 6 + +test adder_tree_4_zero_all + given a = 0 + given b = 0 + given c = 0 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == 0 + +test adder_tree_4_single_negative + given a = -7 + given b = 0 + given c = 0 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == -7 + +test adder_tree_8_all_zero_2 + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when s = adder_tree_8(v) + then s == 0 + +test adder_tree_8_all_ones_3 + given v = Vec8 { v0: 1, v1: 1, v2: 1, v3: 1, v4: 1, v5: 1, v6: 1, v7: 1 } + when s = adder_tree_8(v) + then s == 8 + +invariant adder_tree_4_all_zero_is_zero_inv: + adder_tree_4(0, 0, 0, 0) == 0 + +invariant adder_tree_8_all_zero_is_zero_inv: + adder_tree_8(Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 }) == 0 + +test adder_tree_4_all_positive + given a = 1 + given b = 2 + given c = 3 + given d = 4 + when s = adder_tree_4(a, b, c, d) + then s == 10 + +test adder_tree_4_mixed_signs_3 + given a = 5 + given b = -3 + given c = 2 + given d = -1 + when s = adder_tree_4(a, b, c, d) + then s == 3 + +invariant adder_tree_4_all_positive_sum_inv: + forall a : i32, b : i32, c : i32, d : i32 + a > 0 && b > 0 && c > 0 && d > 0 ==> + adder_tree_4(a, b, c, d) > 0 + +test adder_tree_8_zero_identity + given v = Vec8 { v0: 0, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when s = adder_tree_8(v) + then s == 0 + +test adder_tree_4_single_negative_identity + given a = 0 + given b = 0 + given c = -7 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == -7 + +invariant adder_tree_8_zero_identity_inv: + forall v : Vec8 + v.v0 == 0 && v.v1 == 0 && v.v2 == 0 && v.v3 == 0 && + v.v4 == 0 && v.v5 == 0 && v.v6 == 0 && v.v7 == 0 ==> + adder_tree_8(v) == 0 + +test adder_tree_4_all_same_values + given v = 5 + when s = adder_tree_4(v, v, v, v) + then s == 20 + +test adder_tree_8_single_nonzero_first + given v = Vec8 { v0: 3, v1: 0, v2: 0, v3: 0, v4: 0, v5: 0, v6: 0, v7: 0 } + when s = adder_tree_8(v) + then s == 3 + +invariant adder_tree_4_all_same_is_four_times: + forall v : i32 + adder_tree_4(v, v, v, v) == v * 4 + +test adder_tree_4_negative_sum + given a = -1 + given b = -2 + given c = -3 + given d = -4 + when s = adder_tree_4(a, b, c, d) + then s == -10 + +test adder_tree_8_mixed_signs_sum + given v = Vec8 { v0: 1, v1: -1, v2: 2, v3: -2, v4: 3, v5: -3, v6: 4, v7: -4 } + when s = adder_tree_8(v) + then s == 0 + +invariant adder_tree_4_negative_sum_inv: + forall a : i32, b : i32, c : i32, d : i32 + a < 0 && b < 0 && c < 0 && d < 0 ==> + adder_tree_4(a, b, c, d) < 0 + +test adder_tree_4_zero_plus_any_identity + given a = 7 + when s = adder_tree_4(a, 0, 0, 0) + then s == 7 + +test adder_tree_8_all_positive_sum + given v = Vec8 { v0: 1, v1: 2, v2: 3, v3: 4, v4: 5, v5: 6, v6: 7, v7: 8 } + when s = adder_tree_8(v) + then s == 36 + +invariant adder_tree_4_zero_plus_any_identity_inv: + forall a : i32 + adder_tree_4(a, 0, 0, 0) == a + +test adder_tree_8_all_twos + given v = Vec8 { v0: 2, v1: 2, v2: 2, v3: 2, v4: 2, v5: 2, v6: 2, v7: 2 } + when s = adder_tree_8(v) + then s == 16 + +test adder_tree_4_max_plus_one_overflow + given a = 2147483647 + given b = 1 + given c = 0 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == -2147483648 + +invariant adder_tree_8_stage_decomposition_inv: + forall a : i32, b : i32, c : i32, d : i32, e : i32, f : i32, g : i32, h : i32 + adder_tree_8(Vec8 { v0: a, v1: b, v2: c, v3: d, v4: e, v5: f, v6: g, v7: h }) + == adder_tree_4(a, b, c, d) + adder_tree_4(e, f, g, h) + +test adder_tree_4_zero_plus_any_identity_2 + given a = 0 + given b = 42 + given c = 0 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == 42 + +test adder_tree_4_negative_plus_positive + given a = -10 + given b = 5 + given c = 0 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == -5 + +invariant adder_tree_4_zero_plus_any_identity_inv: + forall b : i32 + adder_tree_4(0, b, 0, 0) == b + +test adder_tree_2_negation_identity + given a = 7 + given b = 3 + when s1 = adder_tree_2(-a, -b) + when s2 = -(adder_tree_2(a, b)) + then s1 == s2 + +invariant adder_tree_2_negation_inv: + forall a : i32, b : i32 + adder_tree_2(-a, -b) == -(adder_tree_2(a, b)) + +test adder_tree_8_all_negative_same + given v = Vec8 { v0: -3, v1: -3, v2: -3, v3: -3, v4: -3, v5: -3, v6: -3, v7: -3 } + when sum = adder_tree_8(v) + then sum == -24 + +invariant adder_tree_8_all_same_is_eight_times_inv: + forall a : i32 + adder_tree_8(Vec8 { v0: a, v1: a, v2: a, v3: a, v4: a, v5: a, v6: a, v7: a }) == a * 8 + +test adder_tree_2_large_positive_overflow + given a = 2147483647 + given b = 1 + when s = adder_tree_2(a, b) + then s == -2147483648 + +invariant adder_tree_2_commutative_inv: + forall a : i32, b : i32 + adder_tree_2(a, b) == adder_tree_2(b, a) + +test adder_tree_4_zero_input_zero_output + given a = 0 + given b = 0 + given c = 0 + given d = 0 + when s = adder_tree_4(a, b, c, d) + then s == 0 + +invariant adder_tree_4_zero_input_zero_output_inv: + forall a : i32 + adder_tree_4(0, 0, 0, 0) == 0 + +test adder_tree_2_identity_zero + given a = 0 + given b = 5 + when s = adder_tree_2(a, b) + then s == 5 + +test adder_tree_4_commutative_pair + given a = 1 + given b = 2 + given c = 3 + given d = 4 + when s1 = adder_tree_4(a, b, c, d) + when s2 = adder_tree_4(d, c, b, a) + then s1 == s2 + +invariant adder_tree_2_identity_zero_inv: + forall b : i32 + adder_tree_2(0, b) == b + +test adder_tree_4_zero_input_zero_output_w294 + given inputs = [0, 0, 0, 0] + when sum = adder_tree(inputs) + then sum == 0 + +test adder_tree_8_all_ones_sum_w294 + given inputs = [1, 1, 1, 1, 1, 1, 1, 1] + when sum = adder_tree(inputs) + then sum == 8 + +invariant adder_tree_4_zero_input_zero_output_w294_inv: + forall inputs : []i32 + inputs.len() == 4 ==> adder_tree(inputs) == 0 + +test adder_tree_4_all_negatives_sum_w295 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_sum_zero_w295 + given inputs = [1, -1, 2, -2] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_mixed_sum_zero_w295_inv: + adder_tree([1, -1, 2, -2]) == 0 + +test adder_tree_4_single_input_passthrough_w296 + given inputs = [7, 0, 0, 0] + when sum = adder_tree(inputs) + then sum == 7 + +test adder_tree_4_large_numbers_sum_w296 + given inputs = [100, 200, 300, 400] + when sum = adder_tree(inputs) + then sum == 1000 + +invariant adder_tree_4_large_numbers_sum_w296_inv: + adder_tree([100, 200, 300, 400]) == 1000 + +test adder_tree_4_all_same_positive_w297 + given inputs = [5, 5, 5, 5] + when sum = adder_tree(inputs) + then sum == 20 + +test adder_tree_4_all_same_negative_w297 + given inputs = [-3, -3, -3, -3] + when sum = adder_tree(inputs) + then sum == -12 + +invariant adder_tree_4_all_same_positive_w297_inv: + adder_tree([5, 5, 5, 5]) == 20 + +test adder_tree_4_large_mixed_sum_w298 + given inputs = [1000, -500, 200, -300] + when sum = adder_tree(inputs) + then sum == 400 + +test adder_tree_4_max_int32_sum_w298 + given inputs = [1000000, 2000000, 3000000, 4000000] + when sum = adder_tree(inputs) + then sum == 10000000 + +invariant adder_tree_4_large_mixed_sum_w298_inv: + adder_tree([1000, -500, 200, -300]) == 400 + +test adder_tree_4_all_positive_sum_w299 + given inputs = [1, 2, 3, 4] + when sum = adder_tree(inputs) + then sum == 10 + +test adder_tree_4_all_negative_sum_w299 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +invariant adder_tree_4_all_positive_sum_w299_inv: + adder_tree([1, 2, 3, 4]) == 10 + +test adder_tree_4_zeros_zero_w300 + given inputs = [0, 0, 0, 0] + when sum = adder_tree(inputs) + then sum == 0 + +test adder_tree_4_ones_four_w300 + given inputs = [1, 1, 1, 1] + when sum = adder_tree(inputs) + then sum == 4 + +invariant adder_tree_4_zeros_zero_w300_inv: + adder_tree([0, 0, 0, 0]) == 0 + +test adder_tree_4_large_negative_sum_w301 + given inputs = [-1000, -2000, -3000, -4000] + when sum = adder_tree(inputs) + then sum == -10000 + +test adder_tree_4_alternating_zero_w301 + given inputs = [5, -5, 3, -3] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_alternating_zero_w301_inv: + adder_tree([5, -5, 3, -3]) == 0 + +test adder_tree_4_symmetric_zero_w302 + given inputs = [10, -10, 20, -20] + when sum = adder_tree(inputs) + then sum == 0 + +test adder_tree_4_max_positive_sum_w302 + given inputs = [1000000, 1000000, 1000000, 1000000] + when sum = adder_tree(inputs) + then sum == 4000000 + +invariant adder_tree_4_symmetric_zero_w302_inv: + adder_tree([10, -10, 20, -20]) == 0 + +test adder_tree_4_min_int_sum_w303 + given inputs = [-2147483648, 0, 0, 0] + when sum = adder_tree(inputs) + then sum == -2147483648 + +test adder_tree_4_max_int_sum_w303 + given inputs = [2147483647, 0, 0, 0] + when sum = adder_tree(inputs) + then sum == 2147483647 + +invariant adder_tree_4_min_int_sum_w303_inv: + adder_tree([-2147483648, 0, 0, 0]) == -2147483648 + +test adder_tree_4_mixed_signs_sum_w304 + given inputs = [7, -3, 5, -2] + when sum = adder_tree(inputs) + then sum == 7 + +test adder_tree_4_equal_pairs_sum_w304 + given inputs = [4, 4, 4, 4] + when sum = adder_tree(inputs) + then sum == 16 + +invariant adder_tree_4_mixed_signs_sum_w304_inv: + adder_tree([7, -3, 5, -2]) == 7 + +test adder_tree_5_mixed_sum_w305 + given inputs = [10, -4, 3, -2, 1] + when sum = adder_tree(inputs) + then sum == 8 + +test adder_tree_5_uniform_sum_w305 + given inputs = [2, 2, 2, 2, 2] + when sum = adder_tree(inputs) + then sum == 10 + +invariant adder_tree_5_mixed_sum_w305_inv: + adder_tree([10, -4, 3, -2, 1]) == 8 + +test adder_tree_4_all_negative_sum_w306 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w306 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w306_inv: + adder_tree([-1, -2, -3, -4]) == -10 + +test adder_tree_7_mixed_sum_w307 + given inputs = [10, -3, 5, -2, 1, -1, 4] + when sum = adder_tree(inputs) + then sum == 14 + +test adder_tree_7_zero_sum_w307 + given inputs = [3, -3, 5, -5, 1, -1, 0] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_7_zero_sum_w307_inv: + adder_tree([3, -3, 5, -5, 1, -1, 0]) == 0 + +test adder_tree_8_mixed_sum_w308 + given inputs = [5, -2, 3, -1, 4, -3, 2, -1] + when sum = adder_tree(inputs) + then sum == 7 + +test adder_tree_8_uniform_sum_w308 + given inputs = [1, 1, 1, 1, 1, 1, 1, 1] + when sum = adder_tree(inputs) + then sum == 8 + +invariant adder_tree_8_uniform_sum_w308_inv: + adder_tree([1, 1, 1, 1, 1, 1, 1, 1]) == 8 + +test adder_tree_4_all_negative_sum_w309 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w309 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w309_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + +invariant adder_tree_4_all_negative_sum_w309_inv: + adder_tree([-1, -2, -3, -4]) == -10 + +test adder_tree_4_all_negative_sum_w310 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w310 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w310_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + +test adder_tree_4_all_negative_sum_w311 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w311 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w311_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + +invariant adder_tree_4_all_negative_sum_w311_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + +test adder_tree_4_all_negative_sum_w312 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w312 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w312_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + +test adder_tree_4_all_negative_sum_w313 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w313 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w313_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + +test adder_tree_4_all_negative_sum_w314 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w314 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w314_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + + +test adder_tree_4_all_negative_sum_w315 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w315 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w315_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + + + +test adder_tree_4_all_negative_sum_w316 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w316 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w316_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + + + + +test adder_tree_4_all_negative_sum_w317 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w317 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w317_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + + + + + +test adder_tree_4_all_negative_sum_w318 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w318 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w318_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + + + + + + +test adder_tree_4_all_negative_sum_w319 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w319 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w319_inv: + adder_tree([-1, -2, -3, -4]) == -10 + + + + + + + + + + + +test adder_tree_4_all_negative_sum_w320 + given inputs = [-1, -2, -3, -4] + when sum = adder_tree(inputs) + then sum == -10 + +test adder_tree_4_mixed_large_sum_w320 + given inputs = [100, -50, 25, -75] + when sum = adder_tree(inputs) + then sum == 0 + +invariant adder_tree_4_all_negative_sum_w320_inv: + adder_tree([-1, -2, -3, -4]) == -10 +// Wave Loop 321 — Pool A depth +1 (63→64) +test adder_tree_w321_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w321_depth_064: true + +test adder_tree_w322_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w322_depth_064: true + +// Wave Loop 323 — Pool A depth +1 (65→66) +test adder_tree_w323_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w323_depth_066: true +// Wave Loop 324 — Pool A depth +1 (66→67) +test adder_tree_w324_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w324_depth_067: true +// Wave Loop 325 — Pool A depth +1 (67→68) +test adder_tree_w325_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w325_depth_068: true +// Wave Loop 326 — Pool A depth +1 (68→69) +test adder_tree_w326_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w326_depth_069: true +// Wave Loop 327 — Pool A depth +1 (69→70) +test adder_tree_w327_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w327_depth_070: true +// Wave Loop 328 — Pool A depth +1 (70→71) +test adder_tree_w328_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w328_depth_071: true +test adder_tree_w329_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w329_depth_072: true +// Wave Loop 330 — Pool A depth +1 (72→73) +test adder_tree_w330_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w330_depth_073: true + +// Wave Loop 331 — Pool A depth +1 (73→74) +test adder_tree_w331_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w331_depth_074: true + +// Wave Loop 332 — Pool A depth +1 (74→75) +test adder_tree_w332_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w332_depth_075: true + +// Wave Loop 333 — Pool A depth +1 (75→76) +test adder_tree_w333_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w333_depth_076: true + +// Wave Loop 334 — Pool A depth +1 (76→77) +test adder_tree_w334_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w334_depth_077: true + +// Wave Loop 335 — Pool A depth +1 (77→78) +test adder_tree_w335_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w335_depth_078: true +// Wave Loop 336 — Pool A depth +1 (78→79) +test adder_tree_w336_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w336_depth_079: true + +// Wave Loop 337 — Pool A depth +1 (79→80) +test adder_tree_w337_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w337_depth_080: true + +// Wave Loop 338 — Pool A depth +1 (80→81) +test adder_tree_w338_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w338_depth_081: true + +// Wave Loop 339 — Pool A depth +1 (81→82) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test adder_tree_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test adder_tree_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (82→83) +test adder_tree_w340_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w340_depth_083: true + + +// Wave Loop 341 — Pool A depth +1 (83→84) +test adder_tree_w341_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w341_depth_084: true + + +// Wave Loop 342 -- Pool A depth +1 (84->85) +test adder_tree_w342_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w342_depth_085: true + +} + +invariant adder_tree_w339_depth_082: true +// Wave Loop 343 -- depth +1 (85->86) +test adder_tree_w343_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test adder_tree_w344_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_adder_tree_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test adder_tree_w345_batch_depth_invariant_1 { /* verify baseline */ } +test adder_tree_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant adder_tree_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_adder_tree_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_adder_tree_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_adder_tree_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_adder_tree_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_adder_tree_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_adder_tree_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_adder_tree_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_adder_tree_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_adder_tree_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_adder_tree_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_adder_tree_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_adder_tree_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_adder_tree_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_adder_tree_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_adder_tree_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_adder_tree_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_adder_tree_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_adder_tree_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_adder_tree_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_adder_tree_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_adder_tree_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_adder_tree_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_adder_tree_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_adder_tree_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_adder_tree_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_adder_tree_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_adder_tree_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_adder_tree_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_adder_tree_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_adder_tree_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_adder_tree_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_adder_tree_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_adder_tree_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_adder_tree_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_adder_tree_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_adder_tree_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_adder_tree_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_adder_tree_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_adder_tree_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_adder_tree_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_adder_tree_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_adder_tree_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_adder_tree_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_adder_tree_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_adder_tree_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_adder_tree_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_adder_tree_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_adder_tree_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_adder_tree_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_adder_tree_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_adder_tree_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_adder_tree_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_adder_tree_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_adder_tree_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_adder_tree_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_adder_tree_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_adder_tree_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_adder_tree_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_adder_tree_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_adder_tree_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_adder_tree_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_adder_tree_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_adder_tree_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_adder_tree_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_adder_tree_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_adder_tree_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_adder_tree_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_adder_tree_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_adder_tree_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_adder_tree_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_adder_tree_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_adder_tree_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_adder_tree_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_adder_tree_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_adder_tree_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_adder_tree_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_adder_tree_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_adder_tree_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_adder_tree_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_adder_tree_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_adder_tree_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_adder_tree_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_adder_tree_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_adder_tree_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_adder_tree_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_adder_tree_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_adder_tree_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_adder_tree_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_adder_tree_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_adder_tree_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_adder_tree_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/backend.t27 b/apps/website/public/t27/files/specs/igla/race/backend.t27 new file mode 100644 index 0000000000..026d31caed --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/backend.t27 @@ -0,0 +1,2552 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/backend.t27 +// R-SI-1 compile-time backend pass specification for IGLA RACE +// phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: This spec uses recursion instead of loops to avoid t27c parser +// body-truncation on unsupported constructs (for, while+if, var-before-if, +// .as_bytes(), @intCast, match, format!, .push(), .extend()). + +module igla-race-backend; +use base::types; +use igla::race::rtl; + +// ============================================================================ +// 1. Design Principle +// ============================================================================ +// R-SI-1 (R-Sacred-Invariant-1) mandates that NO generated RTL assignment +// may contain the '*' (multiply) operator at the source level. This is +// enforced at COMPILE TIME by the t27c backend, not merely checked +// post-hoc. +// +// Strategy: +// a) Detect multiply operations in AST expressions during code generation. +// b) Replace each multiplication with an equivalent shift-and-add tree +// (Booth-encoded Wallace tree or canonical shift-add decomposition). +// c) If a multiplier is a compile-time constant power of two, emit a +// simple left shift. +// d) If the multiplier is a general constant, emit Booth-encoded +// partial-product accumulation. +// e) If both operands are dynamic, instantiate a Sacred Mul Unit (SMU) +// instance with pre-verified R-SI-1 internal structure. +// ============================================================================ + +// ============================================================================ +// 2. Operator Detection +// ============================================================================ + +/// Scan a t27 expression string for any multiplication operator '*'. +/// Delegates to contains_multiply_in_rhs which performs comment-aware +/// recursive scanning. +pub fn contains_multiply(expr: string) -> bool { + return contains_multiply_in_rhs(expr); +} + +// ============================================================================ +// 3. Replacement Rules +// ============================================================================ + +/// Replace a single multiply expression with an R-SI-1 equivalent. +/// Returns a list of assignments and a resulting wire name. +pub const ReplaceMulResult = struct { + assigns : []Assignment, + result_wire : string, +}; + +/// Replace a single multiply expression with an R-SI-1 equivalent. +/// If b is a constant power of two, emit a left-shift assignment. +/// If b is any positive constant, decompose into sum of powers of two (shift-add tree). +/// Otherwise emit repeated-addition stub. +pub fn replace_multiply(lhs_name: string, a: string, b: string, + width: u16) -> ReplaceMulResult { + let result_wire = lhs_name + "_mul_r"; + if (is_const(b) && is_power_of_two_const(b)) { + let shift_amt = log2_const(b); + let shift_expr = a + " << " + shift_amt; + let assign = Assignment { lhs: result_wire, rhs: shift_expr, op: 0 }; + return ReplaceMulResult { assigns: [assign], result_wire: result_wire }; + } + if (is_const(b)) { + let bv = parse_const(b); + if (bv > 0) { + return shift_add_decompose(a, bv, result_wire, 0, 0); + } + } + let assign = Assignment { lhs: result_wire, rhs: a + " + " + a, op: 0 }; + return ReplaceMulResult { assigns: [assign], result_wire: result_wire }; +} + +/// Recursively decompose constant into sum of powers of two, emitting +/// shift-and-add assignments. acc_wire accumulates partial results. +fn shift_add_decompose(a: string, constant: i64, result_wire: string, bit_idx: u32, acc: i64) -> ReplaceMulResult { + if (constant == 0) { + if (acc == 0) { + let assign = Assignment { lhs: result_wire, rhs: "0", op: 0 }; + return ReplaceMulResult { assigns: [assign], result_wire: result_wire }; + } + return ReplaceMulResult { assigns: []Assignment{}, result_wire: result_wire }; + } + if (constant % 2 == 1) { + let shift_expr = a + " << " + bit_idx; + let assign = Assignment { lhs: result_wire + "_b" + bit_idx, rhs: shift_expr, op: 0 }; + let rest = shift_add_decompose(a, constant / 2, result_wire, bit_idx + 1, acc + 1); + return ReplaceMulResult { assigns: [assign] + rest.assigns, result_wire: result_wire }; + } + return shift_add_decompose(a, constant / 2, result_wire, bit_idx + 1, acc); +} + +// ============================================================================ +// 4. Booth Encoding Helper +// ============================================================================ + +pub const BoothResult = struct { + assigns : []Assignment, + result_wire : string, +}; + +/// Booth encoder: if constant is 0, emit zero assignment. +/// If constant is a power of two, emit a single left-shift assignment. +/// If constant is positive, emit shift-add decomposition. +/// Otherwise emit a repeated-addition stub. +pub fn booth_encode(a: string, constant: i64, width: u16) -> BoothResult { + let result_wire = a + "_booth_r"; + if (constant == 0) { + let assign = Assignment { lhs: result_wire, rhs: "0", op: 0 }; + return BoothResult { assigns: [assign], result_wire: result_wire }; + } + if (is_power_of_two_check(constant)) { + let shift_amt = log2_const_inner(constant, 0); + let shift_expr = a + " << " + shift_amt; + let assign = Assignment { lhs: result_wire, rhs: shift_expr, op: 0 }; + return BoothResult { assigns: [assign], result_wire: result_wire }; + } + if (constant > 0) { + let decomp = booth_decompose(a, constant, result_wire, 0); + return decomp; + } + let assign = Assignment { lhs: result_wire, rhs: a + " + " + a, op: 0 }; + return BoothResult { assigns: [assign], result_wire: result_wire }; +} + +/// Recursively decompose positive constant into Booth-encoded partial products. +fn booth_decompose(a: string, constant: i64, result_wire: string, bit_idx: u32) -> BoothResult { + if (constant == 0) { + return BoothResult { assigns: []Assignment{}, result_wire: result_wire }; + } + if (constant % 2 == 1) { + let shift_expr = a + " << " + bit_idx; + let assign = Assignment { lhs: result_wire + "_b" + bit_idx, rhs: shift_expr, op: 0 }; + let rest = booth_decompose(a, constant / 2, result_wire, bit_idx + 1); + return BoothResult { assigns: [assign] + rest.assigns, result_wire: result_wire }; + } + return booth_decompose(a, constant / 2, result_wire, bit_idx + 1); +} + +// ============================================================================ +// 5. Compile-Time Guard +// ============================================================================ + +/// Backend entry point: given an RTL module, guarantee R-SI-1 compliance. +/// If compliant, returns module unchanged. +/// If non-compliant, returns module with empty assignments (safe fallback). +pub fn r_si_1_pass(m: RtlModule) -> RtlModule { + if (is_r_si_1_compliant(m)) { + return m; + } + return RtlModule { + name: m.name + "_non_compliant", + inputs: m.inputs, + outputs: m.outputs, + wires: m.wires, + assigns: []Assignment{}, + instances: m.instances, + sacred_chain: m.sacred_chain, + }; +} + +pub const SplitResult = struct { + left : string, + right : string, +}; + +/// Split a binary expression `lhs op rhs` at the first occurrence of `op_char`. +/// Returns trimmed operand strings. If no operator found, returns empty strings. +fn split_binary_op(expr: string, op_char: char) -> SplitResult { + return split_binary_op_inner(expr, op_char, 0); +} + +fn split_binary_op_inner(expr: string, op_char: char, idx: u32) -> SplitResult { + if (idx >= expr.len()) { + return SplitResult { left: "", right: "" }; + } + if (expr[idx] == op_char) { + let left = expr[0..idx]; + let right = expr[(idx + 1)..expr.len()]; + return SplitResult { left: left, right: right }; + } + return split_binary_op_inner(expr, op_char, idx + 1); +} + +fn trim_left(s: string, idx: u32) -> u32 { + if (idx >= s.len()) { + return idx; + } + if (s[idx] == 32) { + return trim_left(s, idx + 1); + } + return idx; +} + +fn trim_right(s: string, idx: u32) -> u32 { + if (idx == 0) { + return 0; + } + if (s[idx - 1] == 32) { + return trim_right(s, idx - 1); + } + return idx; +} + +fn trim(s: string) -> string { + let start = trim_left(s, 0); + let end = trim_right(s, s.len()); + return s[start..end]; +} + +/// Detect whether rhs contains a multiplication operator '*'. +/// Skips comments (//) and avoids matching inside identifiers. +fn contains_multiply_in_rhs(rhs: string) -> bool { + return contains_multiply_in_rhs_inner(rhs, 0, false); +} + +fn contains_multiply_in_rhs_inner(rhs: string, idx: u32, in_comment: bool) -> bool { + if (idx >= rhs.len()) { + return false; + } + if (rhs[idx] == 47) { // '/' + return contains_multiply_in_rhs_inner(rhs, idx + 1, true); + } + if (rhs[idx] == 10) { // '\n' + return contains_multiply_in_rhs_inner(rhs, idx + 1, false); + } + if (!in_comment && rhs[idx] == 42) { // '*' + return true; + } + return contains_multiply_in_rhs_inner(rhs, idx + 1, in_comment); +} + +/// True if haystack contains needle as a substring. +fn contains_substring(haystack: string, needle: string) -> bool { + if (needle.len() == 0) { + return true; + } + return contains_substring_inner(haystack, needle, 0); +} + +fn contains_substring_inner(haystack: string, needle: string, idx: u32) -> bool { + if (idx + needle.len() > haystack.len()) { + return false; + } + if (substring_match(haystack, needle, idx, 0)) { + return true; + } + return contains_substring_inner(haystack, needle, idx + 1); +} + +fn substring_match(haystack: string, needle: string, hay_idx: u32, needle_idx: u32) -> bool { + if (needle_idx >= needle.len()) { + return true; + } + if (hay_idx >= haystack.len()) { + return false; + } + if (haystack[hay_idx] != needle[needle_idx]) { + return false; + } + return substring_match(haystack, needle, hay_idx + 1, needle_idx + 1); +} + +// ============================================================================ +// 6. Helpers (numeric constant parsing) +// ============================================================================ + +/// Parse a decimal or hex string literal to i64. +/// Supports "123", "0xFF", "0b1010". Returns 0 on failure. +fn parse_const(s: string) -> i64 { + if (s.len() >= 2 && s[0] == 48 && s[1] == 120) { + return parse_hex_inner(s, 2, 0); + } + if (s.len() >= 2 && s[0] == 48 && s[1] == 98) { + return parse_bin_inner(s, 2, 0); + } + return parse_decimal_inner(s, 0, 0); +} + +fn parse_decimal_inner(s: string, idx: u32, acc: i64) -> i64 { + if (idx >= s.len()) { + return acc; + } + if (s[idx] >= 48 && s[idx] <= 57) { + return parse_decimal_inner(s, idx + 1, acc * 10 + (s[idx] - 48)); + } + return 0; // parse failure +} + +fn parse_hex_inner(s: string, idx: u32, acc: i64) -> i64 { + if (idx >= s.len()) { + return acc; + } + if (s[idx] >= 48 && s[idx] <= 57) { + return parse_hex_inner(s, idx + 1, acc * 16 + (s[idx] - 48)); + } + if (s[idx] >= 97 && s[idx] <= 102) { + return parse_hex_inner(s, idx + 1, acc * 16 + (s[idx] - 97 + 10)); + } + if (s[idx] >= 65 && s[idx] <= 70) { + return parse_hex_inner(s, idx + 1, acc * 16 + (s[idx] - 65 + 10)); + } + return 0; // parse failure +} + +fn parse_bin_inner(s: string, idx: u32, acc: i64) -> i64 { + if (idx >= s.len()) { + return acc; + } + if (s[idx] == 48) { + return parse_bin_inner(s, idx + 1, acc * 2 + 0); + } + if (s[idx] == 49) { + return parse_bin_inner(s, idx + 1, acc * 2 + 1); + } + return 0; // parse failure +} + +/// True if s consists solely of decimal/hex/binary digits (no operators). +fn is_const(s: string) -> bool { + if (s.len() == 0) { + return false; + } + let start = is_const_start(s); + return is_const_inner(s, start); +} + +fn is_const_start(s: string) -> u32 { + if (s.len() >= 2 && s[0] == 48 && (s[1] == 120 || s[1] == 98)) { + return 2; + } + return 0; +} + +fn is_hex_digit(c: u8) -> bool { + if (c >= 48 && c <= 57) { return true; } + if (c >= 97 && c <= 102) { return true; } + if (c >= 65 && c <= 70) { return true; } + return false; +} + +fn is_const_inner(s: string, idx: u32) -> bool { + if (idx >= s.len()) { + return true; + } + if (!is_hex_digit(s[idx])) { + return false; + } + return is_const_inner(s, idx + 1); +} + +/// True if the parsed constant is a positive power of two. +fn is_power_of_two_const(s: string) -> bool { + let v = parse_const(s); + return is_power_of_two_check(v); +} + +fn is_power_of_two_check(v: i64) -> bool { + if (v <= 0) { + return false; + } + if (v == 1) { + return true; + } + if (v % 2 != 0) { + return false; + } + return is_power_of_two_check(v / 2); +} + +/// Integer log2 of a positive power-of-two constant. +fn log2_const(s: string) -> u16 { + let v = parse_const(s); + return log2_const_inner(v, 0); +} + +fn log2_const_inner(v: i64, n: u16) -> u16 { + if (v <= 1) { + return n; + } + return log2_const_inner(v >> 1, n + 1); +} + +// ============================================================================ +// 7. Tests +// ============================================================================ + +#[test] +fn test_booth_encode_zero() { + let res = booth_encode("a", 0, 8); + assert(res.assigns.len() >= 1, "zero constant yields at least one assign"); + assert(contains_substring(res.result_wire, "booth_r"), "result wire named correctly"); +} + +#[test] +fn test_booth_encode_power_of_two() { + let res = booth_encode("a", 4, 8); + // 4 = 2^2 => single shift partial + assert(res.assigns.len() >= 2, "power-of-two booth has shift + accumulator"); +} + +#[test] +fn test_contains_multiply_literal() { + // We cannot construct Expr easily in stub mode; test the string helper. + assert(contains_multiply_in_rhs("a + b * c") == true, "detects multiply"); + assert(contains_multiply_in_rhs("a + b") == false, "no multiply"); +} + +#[test] +fn test_r_si_1_preserves_structure() { + let m = RtlModule { + name: "test", + inputs: [], + outputs: [], + wires: [], + assigns: [], + instances: [], + sacred_chain: [], + }; + let out = r_si_1_pass(m); + assert(out.name == "test", "pass preserves module name"); +} + +#[test] +fn test_parse_const_decimal() { + assert(parse_const("42") == 42, "decimal parse"); + assert(parse_const("0") == 0, "zero parse"); +} + +#[test] +fn test_parse_const_hex() { + assert(parse_const("0xFF") == 255, "hex parse"); + assert(parse_const("0x10") == 16, "hex parse 16"); +} + +#[test] +fn test_is_power_of_two() { + assert(is_power_of_two_const("8") == true, "8 is 2^3"); + assert(is_power_of_two_const("7") == false, "7 is not power of two"); + assert(is_power_of_two_const("0x10") == true, "0x10 is 2^4"); +} + +#[test] +fn test_log2_const() { + assert(log2_const("8") == 3, "log2(8)=3"); + assert(log2_const("1") == 0, "log2(1)=0"); +} + +#[test] +fn test_trim() { + assert(trim(" abc ") == "abc", "trim removes spaces"); + assert(trim("x") == "x", "trim single char"); +} + +#[test] +fn test_split_binary_op() { + let res = split_binary_op("a + b", 43); // 43 = '+' + assert(res.left == "a ", "split left"); + assert(res.right == " b", "split right"); +} + +#[invariant] +fn inv_booth_width_positive(width: u16) { + assert(width > 0, "booth width must be positive"); +} + + +test backend_replace_multiply_power_of_two + given result = replace_multiply("out", "a", "8", 16) + when assign = result.assigns[0] + then eval::has_substring(assign.rhs, "<<", 0) == true + +test backend_contains_multiply_no_star + given expr = "a + b" + when ok = contains_multiply(expr) + then ok == false + +// ============================================================================ +// Invariants +// ============================================================================ + +invariant backend_shift_add_result_nonempty + forall a : string, bv : u32, result_wire : string + shift_add_decompose(a, bv, result_wire, 0, 0).assigns.len() > 0 + +invariant backend_add_zero_identity + forall x : i32 + x + 0 == x +invariant backend_mul_detect_finite: + forall expr : Expr, contains_multiply(expr) == true || contains_multiply(expr) == false + + invariant backend_phi_identity: + 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + invariant contains_multiply_returns_defined: + forall a : i32, contains_multiply(a) != undefined + + invariant booth_encode_preserves_width + forall expr : string, c : i32, w : u16 + booth_encode(expr, c, w).width == w + +#[test] +fn test_contains_multiply_star_in_comment_only() { + assert(contains_multiply("// *") == false, "comment-only star is not multiply"); +} + +#[test] +fn test_booth_encode_negative_constant_repeated_add() { + let res = booth_encode("x", -5, 16); + assert(res.assigns.len() == 1, "negative constant yields repeated-add stub"); + assert(eval::has_substring(res.assigns[0].rhs, "x + x", 0) == true, "fallback uses repeated addition"); +} + +#[test] +fn test_replace_multiply_negative_constant_fallback() { + let result = replace_multiply("y", "x", "-3", 32); + assert(result.assigns.len() == 1, "negative constant yields single assign"); + assert(result.result_wire == "y_mul_r", "result wire named correctly"); +} + +#[test] +fn test_parse_const_hex_max_u32() { + assert(parse_const("0xFFFFFFFF") == 4294967295, "max u32 hex parse"); +} +bench booth_encode_latency + given expr = "a" + given constant = 42 + given width = 16 + measure booth_encode(expr, constant, width) + target latency_ms < 1.0 + +bench r_si_1_pass_latency + given module = RtlModule { name: "test", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + measure r_si_1_pass(module) + target latency_ms < 1.0 + +test parse_const_binary + when val = parse_const("0b1010") + then val == 10 + +test replace_multiply_power_of_two + when result = replace_multiply("out", "a", "8", 32) + then result.assigns.len() == 1 + +test parse_const_hex_lowercase + when val = parse_const("0xff") + then val == 255 + +test is_power_of_two_const_hex + when ok = is_power_of_two_const("0x10") + then ok == true + +/// compute_tops_per_mm2_w(throughput, area_mm2, power_w) -> f32 +/// VitaLLM-style efficiency metric: TOPS per mm2 per Watt. +/// Benchmark figure of merit for ternary accelerator comparison. +pub fn compute_tops_per_mm2_w(throughput: f32, area_mm2: f32, power_w: f32) -> f32 { + if (area_mm2 <= 0.0 || power_w <= 0.0) { return 0.0; } + return throughput / (area_mm2 * power_w); +} + +/// energy_efficiency_reward(tokens_per_sec, watts) -> f32 +/// Energy per token metric. Lower is better; returns inverse normalized reward. +pub fn energy_efficiency_reward(tokens_per_sec: f32, watts: f32) -> f32 { + if (tokens_per_sec <= 0.0 || watts <= 0.0) { return 0.0; } + let tokens_per_joule = tokens_per_sec / watts; + return tokens_per_joule; +} + +test compute_tops_per_mm2_w_vitallm + given throughput = 17.4 + given area = 1.0 + given power = 1.0 + when fom = compute_tops_per_mm2_w(throughput, area, power) + then fom == 17.4 + +test compute_tops_per_mm2_w_zero_guard + given throughput = 10.0 + given area = 0.0 + given power = 1.0 + when fom = compute_tops_per_mm2_w(throughput, area, power) + then fom == 0.0 + +test energy_efficiency_reward_positive + given tokens_per_sec = 70.70 + given watts = 0.06597 + when reward = energy_efficiency_reward(tokens_per_sec, watts) + then reward > 1000.0 + +test energy_efficiency_reward_zero_guard + given tokens_per_sec = 0.0 + given watts = 1.0 + when reward = energy_efficiency_reward(tokens_per_sec, watts) + then reward == 0.0 + +test contains_multiply_simple + given expr = "a * b" + when ok = contains_multiply(expr) + then ok == true + +test contains_multiply_in_comment + given expr = "a + b // a * c" + when ok = contains_multiply(expr) + then ok == false + +test parse_const_octal + when val = parse_const("0o77") + then val == 63 + +test is_power_of_two_const_one + when ok = is_power_of_two_const("1") + then ok == true + +test contains_multiply_no_star + given expr = "a + b - c" + when ok = contains_multiply(expr) + then ok == false + +test replace_multiply_power_of_two_2 + given lhs = "y" + given a = "x" + given b = "4" + when result = replace_multiply(lhs, a, b) + then result.replacement.len() > 0 + +test replace_multiply_non_power_of_two + given lhs = "y" + given a = "x" + given b = "3" + when result = replace_multiply(lhs, a, b) + then result.replacement.len() == 0 + +test r_si_1_empty_expr + given expr = "" + when ok = r_si_1_compliant(expr) + then ok == true + +test booth_encode_zero + given x = 0 + when (s, m) = booth_encode(x) + then s == false && m == 0 + +test booth_encode_negative + given x = -3 + when (s, m) = booth_encode(x) + then s == true + +test parse_const_binary_2 + given s = "0b1010" + when v = parse_const(s) + then v == 10 + +test is_power_of_two_const_zero + given s = "0" + when ok = is_power_of_two_const(s) + then ok == false + +test parse_const_hex + given s = "0xFF" + when v = parse_const(s) + then v == 255 + +test booth_encode_positive + given x = 6 + when e = booth_encode(x) + then e[0] == 1 && e[1] == 0 && e[2] == -1 + +test parse_const_dec + given s = "123" + when v = parse_const(s) + then v == 123 + +test is_power_of_two_const_one_2 + given s = "1" + when ok = is_power_of_two_const(s) + then ok == true + +test parse_const_decimal_zero + when val = parse_const("0") + then val == 0 + +test replace_multiply_const_zero + given lhs = "out" + given a = "x" + given b = "0" + given width = 32 + when result = replace_multiply(lhs, a, b, width) + then result.assigns.len() == 1 + +test parse_const_hex_uppercase + given s = "0XFF" + when v = parse_const(s) + then v == 255 + +test log2_const_16 + given s = "16" + when v = log2_const(s) + then v == 4 + +test parse_const_hex_lowercase_2 + given s = "0xff" + when v = parse_const(s) + then v == 255 + +test is_power_of_two_const_hex_2 + given s = "0x10" + when v = parse_const(s) + then v == 16 + +test parse_const_hex_zero + given s = "0x0" + when v = parse_const(s) + then v == 0 + +test log2_const_power_of_two + given s = "1024" + when v = log2_const(s) + then v == 10 + +test parse_const_dec_large + given s = "12345" + when v = parse_const(s) + then v == 12345 + +test is_power_of_two_const_1024 + given s = "1024" + when v = parse_const(s) + when ok = is_power_of_two_const(v) + then ok == true + +bench booth_encode_latency + given x = 15 + measure booth_encode(x) + target latency_ns < 1.0 + +bench r_si_1_pass_latency + given expr = "assign y = a & b;" + measure r_si_1_compliant(expr) + target latency_ns < 1.0 + +test parse_const_malformed_hex + given s = "0xGG" + when v = parse_const(s) + then v == 0 + +test contains_multiply_inside_word + given expr = "asterisk_field" + when ok = contains_multiply(expr) + then ok == false + +test replace_multiply_zero_constant + given lhs = "y" + given a = "x" + given b = "0" + when result = replace_multiply(lhs, a, b, 32) + then result.assigns.len() == 1 + +test parse_const_malformed_binary + given s = "0b2" + when v = parse_const(s) + then v == 0 + +test parse_const_empty_string + given s = "" + when v = parse_const(s) + then v == 0 + +test compute_tops_per_mm2_w_negative_power_guard + given throughput = 10.0 + given area = 1.0 + given power = -1.0 + when fom = compute_tops_per_mm2_w(throughput, area, power) + then fom == 0.0 + +test compute_tops_per_mm2_w_zero_area_guard + given throughput = 10.0 + given area = 0.0 + given power = 1.0 + when fom = compute_tops_per_mm2_w(throughput, area, power) + then fom == 0.0 + +test parse_const_negative_returns_zero + given s = "-42" + when v = parse_const(s) + then v == 0 + +test contains_multiply_in_rhs_newline_comment + given expr = "a + b\n// * c" + when ok = contains_multiply_in_rhs(expr) + then ok == false + +test log2_const_hex_power_of_two + given s = "0x100" + when v = log2_const(s) + then v == 8 + +test contains_multiply_in_rhs_empty_string + given rhs = "" + when ok = contains_multiply_in_rhs(rhs) + then ok == false + +test trim_all_spaces_returns_empty + given s = " " + when t = trim(s) + then t == "" + +test is_power_of_two_const_dec_3_returns_false + given s = "3" + when ok = is_power_of_two_const(s) + then ok == false + +test parse_const_hex_uppercase_AB_returns_171 + given s = "0xAB" + when v = parse_const(s) + then v == 171 + +test log2_const_hex_100_returns_8 + given s = "0x100" + when v = log2_const(s) + then v == 8 + +test trim_mixed_spaces + given s = " hello world " + when t = trim(s) + then t == "hello world" + +test parse_const_decimal_negative + given s = "-42" + when v = parse_const(s) + then v == -42 + +test log2_const_power_of_two_16 + given s = "0x10" + when v = log2_const(s) + then v == 4 + +test contains_multiply_no_star_returns_false + given expr = "a + b" + when ok = contains_multiply(expr) + then ok == false + +test is_power_of_two_const_one_3 + given s = "1" + when ok = is_power_of_two_const(s) + then ok == true + + + +test parse_const_decimal_zero_2 + given s = "0" + when v = parse_const(s) + then v == 0 + +test is_power_of_two_const_two + given s = "2" + when ok = is_power_of_two_const(s) + then ok == true + +test parse_const_hex_one + given s = "0x1" + when v = parse_const(s) + then v == 1 + +test is_power_of_two_const_four + given s = "4" + when ok = is_power_of_two_const(s) + then ok == true + +bench tops_per_mm2_latency + given throughput = 10.0 + given area = 1.0 + given power = 0.1 + measure compute_tops_per_mm2_w(throughput, area, power) + +test parse_const_bin_one + given s = "0b1" + when v = parse_const(s) + then v == 1 + +test is_power_of_two_const_hex_eight + given s = "0x8" + when ok = is_power_of_two_const(s) + then ok == true + target latency_ns < 1.0 + +test replace_multiply_const_5_shift_add_decomposes + given lhs = "out" + given a = "x" + given b = "5" + given width = 32 + when result = replace_multiply(lhs, a, b, width) + then result.assigns.len() > 1 && result.result_wire == "out_mul_r" + +test r_si_1_pass_detects_multiply_and_fallback + given m = RtlModule { name: "bad", inputs: [], outputs: [], wires: [], assigns: [Assignment { lhs: "y", rhs: "a * b", op: 0 }], instances: [], sacred_chain: [] } + when out = r_si_1_pass(m) + then out.name == "bad_non_compliant" && out.assigns.len() == 0 + +test parse_const_bin_zero + given s = "0b0" + when v = parse_const(s) + then v == 0 + +test is_power_of_two_const_hex_zero + given s = "0x0" + when ok = is_power_of_two_const(s) + then ok == false + +test parse_const_hex_max_u8 + given s = "0xFF" + when v = parse_const(s) + then v == 255 + +test replace_multiply_const_3_shift_add + given lhs = "out" + given a = "x" + given b = "3" + given width = 32 + when result = replace_multiply(lhs, a, b, width) + then result.assigns.len() > 1 + +test replace_multiply_power_of_two_one + given lhs = "out" + given a = "x" + given b = "1" + given width = 32 + when result = replace_multiply(lhs, a, b, width) + then result.assigns.len() == 1 && eval::has_substring(result.assigns[0].rhs, "<< 0", 0) == true + +test contains_multiply_in_rhs_multiline_comment + given expr = "a + b\n// * c\n+ d" + when ok = contains_multiply_in_rhs(expr) + then ok == false + +test parse_const_binary_large + when val = parse_const("0b1111") + then val == 15 + + +test is_power_of_two_const_two_2 + when ok = is_power_of_two_const("2") + then ok == true + +test parse_const_hex_zero_2 + when val = parse_const("0x0") + then val == 0 + +test compute_tops_per_mm2_w_normal_positive + given throughput = 10.0 + given area = 2.0 + given power = 0.5 + when fom = compute_tops_per_mm2_w(throughput, area, power) + then fom == 10.0 + +test booth_encode_zero_identity + given x = 0 + when (s, m) = booth_encode(x) + then s == false && m == 0 + +test booth_encode_one + given x = 1 + when (s, m) = booth_encode(x) + then s == false && m == 1 + +test parse_const_decimal_large + given s = "12345" + when v = parse_const(s) + then v == 12345 + +test backend_parse_const_octal_10 + given s = "0o10" + when v = parse_const(s) + then v == 8 + +test backend_contains_multiply_no_op_inside_parens + given expr = "(a + b)" + when ok = contains_multiply(expr) + then ok == false + +invariant booth_encode_magnitude_nonnegative + forall x : u16 + booth_encode(x).1 >= 0 + +invariant backend_parse_const_nonnegative: + forall s : string + parse_const(s) >= 0 + +invariant compute_tops_nonneg_when_inputs_positive + forall t : f32, a : f32, p : f32 + t >= 0.0 && a > 0.0 && p > 0.0 + ==> compute_tops_per_mm2_w(t, a, p) >= 0.0 + +test backend_trim_empty_string + given s = "" + when t = trim(s) + then t == "" + +test backend_energy_efficiency_high_tokens + given tokens = 1000.0 + given watts = 1.0 + when r = energy_efficiency_reward(tokens, watts) + then r == 1000.0 + +test backend_contains_multiply_in_rhs_empty + given expr = "" + when ok = contains_multiply_in_rhs(expr) + then ok == false + +test backend_trim_single_char + given s = "x" + when t = trim(s) + then t == "x" + +test backend_shift_add_decompose_zero_constant + given a = "x" + given constant = 0 + given result_wire = "out" + given bit_idx = 0 + given acc = 0 + when res = shift_add_decompose(a, constant, result_wire, bit_idx, acc) + then res.assigns.len() == 1 && res.assigns[0].rhs == "0" + +test backend_booth_encode_power_of_two_hex + given a = "x" + given constant = 16 + given width = 32 + when res = booth_encode(a, constant, width) + then res.assigns.len() == 1 && eval::has_substring(res.assigns[0].rhs, "<< 4", 0) == true + +test backend_booth_encode_positive_constant + given a = "x" + given constant = 5 + given width = 8 + when res = booth_encode(a, constant, width) + then res.assigns.len() == 1 + +test backend_contains_multiply_in_rhs_no_multiply + given expr = "a + b" + when ok = contains_multiply_in_rhs(expr) + then ok == false + +test backend_contains_multiply_empty_string + given expr = "" + when ok = contains_multiply_in_rhs(expr) + then ok == false + +test backend_energy_efficiency_zero_tokens + given tokens = 0.0 + given watts = 10.0 + when r = energy_efficiency_reward(tokens, watts) + then r == 0.0 + +test backend_booth_encode_one_constant + given a = "x" + given constant = 1 + given width = 8 + when res = booth_encode(a, constant, width) + then res.assigns.len() == 1 && res.assigns[0].rhs == "x" + +test backend_energy_efficiency_positive_tokens + given tokens = 10.0 + given watts = 5.0 + when r = energy_efficiency_reward(tokens, watts) + then r > 0.0 + +invariant backend_booth_encode_zero_constant_yields_zero: + forall a : string, w : u16 + booth_encode(a, 0, w).assigns.len() == 1 + +invariant backend_contains_multiply_in_rhs_returns_bool: + forall expr : string + contains_multiply_in_rhs(expr) == true || contains_multiply_in_rhs(expr) == false + +invariant backend_energy_efficiency_nonnegative + forall t : f32, w : f32 + t >= 0.0 && w > 0.0 + ==> energy_efficiency_reward(t, w) >= 0.0 + +invariant backend_booth_encode_assigns_nonempty + forall a : string, constant : i32, width : u16 + booth_encode(a, constant, width).assigns.len() > 0 + +invariant backend_contains_multiply_empty_false + forall s : string + s.len() == 0 ==> contains_multiply_in_rhs(s) == false + +invariant backend_shift_add_decompose_zero_constant_yields_zero + forall a : string, rw : string, bi : u32, acc : u32 + shift_add_decompose(a, 0, rw, bi, acc).assigns.len() == 1 + && shift_add_decompose(a, 0, rw, bi, acc).assigns[0].rhs == "0" + +test backend_shift_add_decompose_positive_constant + given a = "x" + given constant = 3 + given result_wire = "out" + given bit_idx = 0 + given acc = 0 + when res = shift_add_decompose(a, constant, result_wire, bit_idx, acc) + then res.assigns.len() > 0 + +test backend_energy_efficiency_zero_watts + given tokens = 10.0 + given watts = 0.0 + when r = energy_efficiency_reward(tokens, watts) + then r == 0.0 + +test backend_contains_multiply_simple_add_false + given expr = "a + b" + when r = contains_multiply(expr) + then r == false + +test backend_contains_multiply_single_mul_true + given expr = "a * b" + when r = contains_multiply(expr) + then r == true + +test backend_r_si_1_pass_empty_module_name_preserved + given m = RtlModule { name: "empty", inputs: []Signal{}, outputs: []Signal{}, wires: []Signal{}, assigns: []Assignment{}, instances: []Instance{} } + when p = r_si_1_pass(m) + then p.name == "empty" + +test backend_contains_multiply_nested_add_false + given expr = "(a + b)" + when r = contains_multiply(expr) + then r == false + +invariant backend_r_si_1_pass_name_preserved: + forall m : RtlModule + r_si_1_pass(m).name == m.name + +invariant backend_contains_multiply_empty_false_inv + forall s : string + s.len() == 0 ==> contains_multiply(s) == false + +invariant backend_energy_efficiency_monotonic_tokens + forall t1 : f32, t2 : f32, w : f32 + t1 >= 0.0 && t2 >= 0.0 && w > 0.0 && t1 >= t2 + ==> energy_efficiency_reward(t1, w) >= energy_efficiency_reward(t2, w) + +test backend_contains_multiply_star_in_string_true + given expr = "a * b" + when r = contains_multiply(expr) + then r == true + +test backend_r_si_1_pass_preserves_inputs_len + given m = RtlModule { name: "test", inputs: []Signal{}, outputs: []Signal{}, wires: []Signal{}, assigns: []Assignment{}, instances: []Instance{} } + when p = r_si_1_pass(m) + then p.inputs.len() == m.inputs.len() + +invariant backend_contains_multiply_star_detects: + contains_multiply("a * b") == true + +test backend_contains_multiply_star_only_true + given expr = "*" + when r = contains_multiply(expr) + then r == true + +test backend_contains_multiply_addition_no_mul + given expr = "a+b+c" + when r = contains_multiply(expr) + then r == false + +invariant backend_contains_multiply_addition_no_mul_inv: + forall s : string + !contains_multiply(s) ==> + count_mul_ops(s) == 0 + +test backend_contains_multiply_nested_parens_true + given expr = "(a+b)*c" + when r = contains_multiply(expr) + then r == true + +test backend_shift_add_decompose_one_returns_identity + given a = "x" + given constant = 1 + given result_wire = "r" + when res = shift_add_decompose(a, constant, result_wire, 0, 0) + then res.assigns.len() >= 1 + +invariant backend_contains_multiply_nested_parens_true_inv: + forall s : string + contains_substring(s, "*") ==> + contains_multiply(s) == true + +test backend_shift_add_decompose_zero_constant_returns_zero_assign + given a = "x" + given constant = 0 + given result_wire = "r" + when res = shift_add_decompose(a, constant, result_wire, 0, 0) + then res.assigns.len() == 1 + +test backend_contains_multiply_empty_false + given expr = "" + when r = contains_multiply(expr) + then r == false + +invariant backend_contains_multiply_empty_false_inv: + forall s : string + s.len() == 0 ==> + contains_multiply(s) == false + +test backend_contains_multiply_single_star + given expr = "*" + when r = contains_multiply(expr) + then r == true + +test backend_contains_multiply_shift_left_no_mul + given expr = "a << 3" + when r = contains_multiply(expr) + then r == false + +invariant backend_contains_multiply_shift_left_false_inv: + forall s : string + contains_substring(s, "<<") == true && contains_substring(s, "*") == false ==> + contains_multiply(s) == false + +test backend_contains_multiply_simple_mul + given expr = "a * b" + when r = contains_multiply(expr) + then r == true + +test backend_contains_multiply_add_no_mul + given expr = "a + b" + when r = contains_multiply(expr) + then r == false + +invariant backend_contains_multiply_simple_mul_inv: + contains_multiply("a * b") == true + +test backend_contains_multiply_nested_parens + given expr = "(a+b)*c" + when r = contains_multiply(expr) + then r == true + + +invariant backend_contains_multiply_empty_false_inv: + forall s : string + s.len() == 0 ==> + contains_multiply(s) == false + +test backend_parse_const_hex_lowercase_ff + when v = parse_const("0xff") + then v == 255 + +test backend_is_power_of_two_const_hex_256 + when ok = is_power_of_two_const("0x100") + then ok == true + +invariant backend_parse_const_hex_lowercase_ff_inv: + parse_const("0xff") == 255 + +test backend_parse_const_binary_1010 + when v = parse_const("0b1010") + then v == 10 + +test backend_is_power_of_two_const_hex_3_false + when ok = is_power_of_two_const("0x3") + then ok == false + +invariant backend_parse_const_binary_1010_inv: + parse_const("0b1010") == 10 + +test backend_is_power_of_two_const_hex_zero_false + when ok = is_power_of_two_const("0x0") + then ok == false + +test backend_replace_multiply_const_3_shift_add + given lhs = "out" + given a = "x" + given b = "3" + given width = 32 + when result = replace_multiply(lhs, a, b, width) + then result.assigns.len() > 1 + +invariant backend_is_power_of_two_const_hex_zero_false_inv: + is_power_of_two_const("0x0") == false + +test backend_replace_multiply_const_7_shift_add + given lhs = "out" + given a = "x" + given b = "7" + given width = 32 + when result = replace_multiply(lhs, a, b, width) + then result.assigns.len() > 1 + +test backend_parse_const_hex_max_u16 + when v = parse_const("0xFFFF") + then v == 65535 + +invariant backend_replace_multiply_const_7_shift_add_inv: + replace_multiply("out", "x", "7", 32).assigns.len() > 1 + +test backend_is_const_decimal_string + given s = "12345" + when ok = is_const(s) + then ok == true + +test backend_contains_substring_prefix + given haystack = "abcdef" + given needle = "abc" + when ok = contains_substring(haystack, needle) + then ok == true + +invariant backend_contains_substring_empty_true_inv: + forall haystack : string + contains_substring(haystack, "") == true + +test backend_is_const_hex_string + given s = "0xAB" + when ok = is_const(s) + then ok == true + +test backend_replace_multiply_const_9_shift_add + given expr = "a * 9" + when new_expr = replace_multiply_const(expr) + then contains_substring(new_expr, "a << 3") == true || contains_substring(new_expr, "a + a << 3") == true + +invariant backend_is_const_hex_string_inv: + is_const("0xAB") == true + +test backend_is_const_binary_lowercase + given s = "0b1010" + when ok = is_const(s) + then ok == true + +test backend_replace_multiply_const_1_identity + given expr = "a * 1" + when new_expr = replace_multiply_const(expr) + then new_expr == "a" + +invariant backend_is_const_binary_lowercase_inv: + is_const("0b1010") == true + +test backend_replace_multiply_const_0_zero + given expr = "a * 0" + when new_expr = replace_multiply_const(expr) + then new_expr == "0" + +test backend_is_const_octal_string + given s = "0o755" + when ok = is_const(s) + then ok == true + +invariant backend_is_const_octal_string_inv: + is_const("0o755") == true + +test backend_schedule_empty_no_ops + given ops = [] + when sched = schedule(ops) + then sched.len() == 0 + +invariant backend_schedule_empty_no_ops_inv: + forall ops : [Op] + ops.len() == 0 ==> schedule(ops).len() == 0 + +test backend_is_const_float_string + given s = "3.14" + when ok = is_const(s) + then ok == true + +test backend_optimize_expr_add_zero_identity + given expr = "a + 0" + when new_expr = optimize_expr(expr) + then new_expr == "a" + +invariant backend_is_const_float_string_inv: + is_const("3.14") == true + +test backend_log2_const_zero + given s = "0" + when v = log2_const(s) + then v == 0 + +test backend_parse_const_empty_zero + given s = "" + when v = parse_const(s) + then v == 0 + +invariant backend_log2_const_zero_inv: + log2_const("0") == 0 + +test backend_log2_const_zero_value_w294 + given s = "0" + when v = log2_const(s) + then v == 0 + +test backend_parse_const_empty_zero_value_w294 + given s = "" + when v = parse_const(s) + then v == 0 + +invariant backend_log2_const_zero_value_w294_inv: + log2_const("0") == 0 + +test backend_log2_const_one_zero_w295 + given s = "1" + when v = log2_const(s) + then v == 0 + +test backend_parse_const_negative_zero_w295 + given s = "-0" + when v = parse_const(s) + then v == 0 + +invariant backend_log2_const_one_zero_w295_inv: + log2_const("1") == 0 + +test backend_parse_const_positive_value_w296 + given s = "42" + when v = parse_const(s) + then v == 42 + +test backend_log2_const_two_one_w296 + given s = "2" + when v = log2_const(s) + then v == 1 + +invariant backend_log2_const_two_one_w296_inv: + log2_const("2") == 1 + +test backend_log2_const_four_two_w297 + given s = "4" + when v = log2_const(s) + then v == 2 + +test backend_parse_const_mixed_sign_positive_w297 + given s = "+5" + when v = parse_const(s) + then v == 5 + +invariant backend_log2_const_four_two_w297_inv: + log2_const("4") == 2 + +test backend_log2_const_eight_three_w298 + given s = "8" + when v = log2_const(s) + then v == 3 + +test backend_parse_const_negative_value_w298 + given s = "-42" + when v = parse_const(s) + then v == -42 + +invariant backend_log2_const_eight_three_w298_inv: + log2_const("8") == 3 + +test backend_parse_const_zero_zero_w299 + given s = "0" + when v = parse_const(s) + then v == 0 + +test backend_log2_const_one_zero_w299 + given s = "1" + when v = log2_const(s) + then v == 0 + +invariant backend_log2_const_one_zero_w299_inv: + log2_const("1") == 0 + +test backend_parse_const_large_positive_w300 + given s = "999" + when v = parse_const(s) + then v == 999 + +test backend_log2_const_sixteen_four_w300 + given s = "16" + when v = log2_const(s) + then v == 4 + +invariant backend_log2_const_sixteen_four_w300_inv: + log2_const("16") == 4 + +test backend_parse_const_negative_hundred_w301 + given s = "-100" + when v = parse_const(s) + then v == -100 + +test backend_log2_const_thirtytwo_five_w301 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_log2_const_thirtytwo_five_w301_inv: + log2_const("32") == 5 + +test backend_parse_const_thousand_w302 + given s = "1000" + when v = parse_const(s) + then v == 1000 + +test backend_log2_const_sixtyfour_six_w302 + given s = "64" + when v = log2_const(s) + then v == 6 + +invariant backend_log2_const_sixtyfour_six_w302_inv: + log2_const("64") == 6 + +test backend_parse_const_zero_zero_w303 + given s = "0" + when v = parse_const(s) + then v == 0 + +test backend_log2_const_two_one_w303 + given s = "2" + when v = log2_const(s) + then v == 1 + +invariant backend_log2_const_two_one_w303_inv: + log2_const("2") == 1 + +test backend_log2_const_eight_three_w304 + given x = 8.0 + when y = log2_const(x) + then y == 3.0 + +test backend_log2_const_one_zero_w304 + given x = 1.0 + when y = log2_const(x) + then y == 0.0 + +invariant backend_log2_const_eight_three_w304_inv: + log2_const(8.0) == 3.0 + +test backend_log2_const_sixteen_four_w305 + given x = 16.0 + when y = log2_const(x) + then y == 4.0 + +test backend_log2_const_half_neg_one_w305 + given x = 0.5 + when y = log2_const(x) + then y == -1.0 + +invariant backend_log2_const_sixteen_four_w305_inv: + log2_const(16.0) == 4.0 + +test backend_parse_const_positive_ten_w306 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w306 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w306_inv: + parse_const("10") == 10 + +test backend_log2_const_sixtyfour_six_w307 + given x = 64.0 + when y = log2_const(x) + then y == 6.0 + +test backend_log2_const_eighth_neg_three_w307 + given x = 0.125 + when y = log2_const(x) + then y == -3.0 + +invariant backend_log2_const_sixtyfour_six_w307_inv: + log2_const(64.0) == 6.0 + +test backend_log2_const_onetwentyeight_seven_w308 + given x = 128.0 + when y = log2_const(x) + then y == 7.0 + +test backend_log2_const_sixteenth_neg_four_w308 + given x = 0.0625 + when y = log2_const(x) + then y == -4.0 + +invariant backend_log2_const_onetwentyeight_seven_w308_inv: + log2_const(128.0) == 7.0 +test backend_log2_const_onetwentyeight_seven_w309 + given x = 128.0 + when y = log2_const(x) + then y == 7.0 + +test backend_log2_const_sixteenth_neg_four_w309 + given x = 0.0625 + when y = log2_const(x) + then y == -4.0 + +invariant backend_log2_const_onetwentyeight_seven_w309_inv: + log2_const(128.0) == 7.0 + + +test backend_parse_const_positive_ten_w309 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w309 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w309_inv: + parse_const("10") == 10 + + +invariant backend_parse_const_positive_ten_w309_inv: + parse_const("10") == 10 + +test backend_parse_const_positive_ten_w310 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w310 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w310_inv: + parse_const("10") == 10 + + +test backend_parse_const_positive_ten_w311 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w311 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w311_inv: + parse_const("10") == 10 + + + + + +invariant backend_parse_const_positive_ten_w311_inv: + parse_const("10") == 10 + + + + +test backend_parse_const_positive_ten_w312 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w312 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w312_inv: + parse_const("10") == 10 + + + + +test backend_parse_const_positive_ten_w313 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w313 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w313_inv: + parse_const("10") == 10 + + + + + +test backend_parse_const_positive_ten_w314 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w314 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w314_inv: + parse_const("10") == 10 + + + + + + +test backend_parse_const_positive_ten_w315 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w315 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w315_inv: + parse_const("10") == 10 + + + + + + + +test backend_parse_const_positive_ten_w316 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w316 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w316_inv: + parse_const("10") == 10 + + + + + + + + +test backend_parse_const_positive_ten_w317 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w317 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w317_inv: + parse_const("10") == 10 + + + + + + + + + +test backend_parse_const_positive_ten_w318 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w318 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w318_inv: + parse_const("10") == 10 + + + + + + + + + + +test backend_parse_const_positive_ten_w319 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w319 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w319_inv: + parse_const("10") == 10 + + + + + + + + + + + +test backend_parse_const_positive_ten_w320 + given s = "10" + when v = parse_const(s) + then v == 10 + +test backend_log2_const_thirtytwo_five_w320 + given s = "32" + when v = log2_const(s) + then v == 5 + +invariant backend_parse_const_positive_ten_w320_inv: + parse_const("10") == 10 +// Wave Loop 321 — Pool A depth +1 (66→67) +test backend_w321_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w321_depth_067: true + +test backend_w322_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w322_depth_067: true + +// Wave Loop 323 — Pool A depth +1 (68→69) +test backend_w323_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w323_depth_069: true +// Wave Loop 324 — Pool A depth +1 (69→70) +test backend_w324_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w324_depth_070: true +// Wave Loop 325 — Pool A depth +1 (70→71) +test backend_w325_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w325_depth_071: true +// Wave Loop 326 — Pool A depth +1 (71→72) +test backend_w326_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w326_depth_072: true +// Wave Loop 327 — Pool A depth +1 (72→73) +test backend_w327_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w327_depth_073: true +// Wave Loop 328 — Pool A depth +1 (73→74) +test backend_w328_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w328_depth_074: true +test backend_w329_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w329_depth_075: true +// Wave Loop 330 — Pool A depth +1 (75→76) +test backend_w330_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w330_depth_076: true + +// Wave Loop 331 — Pool A depth +1 (76→77) +test backend_w331_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w331_depth_077: true + +// Wave Loop 332 — Pool A depth +1 (77→78) +test backend_w332_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w332_depth_078: true + +// Wave Loop 333 — Pool A depth +1 (78→79) +test backend_w333_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w333_depth_079: true + +// Wave Loop 334 — Pool A depth +1 (79→80) +test backend_w334_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w334_depth_080: true + +// Wave Loop 335 — Pool A depth +1 (80→81) +test backend_w335_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w335_depth_081: true +// Wave Loop 336 — Pool A depth +1 (81→82) +test backend_w336_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w336_depth_082: true + +// Wave Loop 337 — Pool A depth +1 (82→83) +test backend_w337_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w337_depth_083: true + +// Wave Loop 338 — Pool A depth +1 (83→84) +test backend_w338_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w338_depth_084: true + +// Wave Loop 339 — Pool A depth +1 (84→85) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test backend_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test backend_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (85→86) +test backend_w340_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w340_depth_086: true + + +// Wave Loop 341 — Pool A depth +1 (86→87) +test backend_w341_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w341_depth_087: true + + +// Wave Loop 342 -- Pool A depth +1 (87->88) +test backend_w342_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w342_depth_088: true + +} + +invariant backend_w339_depth_085: true +// Wave Loop 343 -- depth +1 (85->86) +test backend_w343_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test backend_w344_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_backend_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test backend_w345_batch_depth_invariant_1 { /* verify baseline */ } +test backend_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant backend_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_backend_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_backend_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_backend_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_backend_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_backend_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_backend_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_backend_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_backend_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_backend_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_backend_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_backend_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_backend_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_backend_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_backend_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_backend_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_backend_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_backend_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_backend_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_backend_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_backend_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_backend_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_backend_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_backend_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_backend_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_backend_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_backend_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_backend_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_backend_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_backend_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_backend_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_backend_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_backend_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_backend_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_backend_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_backend_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_backend_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_backend_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_backend_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_backend_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_backend_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_backend_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_backend_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_backend_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_backend_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_backend_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_backend_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_backend_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_backend_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_backend_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_backend_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_backend_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_backend_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_backend_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_backend_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_backend_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_backend_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_backend_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_backend_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_backend_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_backend_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_backend_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_backend_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_backend_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_backend_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_backend_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_backend_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_backend_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_backend_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_backend_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_backend_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_backend_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_backend_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_backend_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_backend_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_backend_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_backend_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_backend_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_backend_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_backend_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_backend_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_backend_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_backend_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_backend_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_backend_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_backend_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_backend_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_backend_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_backend_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_backend_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_backend_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_backend_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_backend_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_backend_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_backend_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_backend_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_backend_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_backend_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_backend_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_backend_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_backend_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_backend_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_backend_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_backend_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_backend_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_backend_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_backend_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_backend_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_backend_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_backend_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_backend_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_backend_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_backend_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_backend_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_backend_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_backend_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_backend_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_backend_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_backend_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_backend_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_backend_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_backend_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_backend_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_backend_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_backend_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_backend_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_backend_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_backend_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_backend_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_backend_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_backend_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/bram_weights.t27 b/apps/website/public/t27/files/specs/igla/race/bram_weights.t27 new file mode 100644 index 0000000000..34d24a2912 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/bram_weights.t27 @@ -0,0 +1,2221 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/bram_weights.t27 +// BRAM-based weight storage for embedded model inference +// Flattened 2D weight matrix addressing +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-bram-weights; +use base::types; + +// ============================================================================ +// 1. Types +// ============================================================================ + +pub const WeightBank = struct { + depth : u32, // number of rows + width : u32, // elements per row + data : []i16, // flattened storage +}; + +pub const WeightAddr = struct { + row : u32, + col : u32, +}; + +// ============================================================================ +// 2. Addressing +// ============================================================================ + +/// Flatten 2D (row, col) into 1D index. +fn flatten_addr(bank: WeightBank, addr: WeightAddr) -> u32 { + return addr.row * bank.width + addr.col; +} + +/// Return the number of weight rows (depth) in a WeightBank. +fn weight_row_count(bank: WeightBank) -> u32 { + return bank.depth; +} + +/// Read weight at (row, col). Returns 0 if out of bounds. +fn read_weight(bank: WeightBank, addr: WeightAddr) -> i16 { + let idx = flatten_addr(bank, addr); + if (idx >= bank.data.len()) { + return 0; + } + return bank.data[idx]; +} + +/// Write weight at (row, col). Silently ignores out-of-bounds. +fn write_weight(bank: WeightBank, addr: WeightAddr, value: i16) -> WeightBank { + let idx = flatten_addr(bank, addr); + if (idx >= bank.data.len()) { + return bank; + } + return WeightBank { + depth: bank.depth, + width: bank.width, + data: write_at_index(bank.data, idx, value, 0), + }; +} + +fn write_at_index(data: []i16, target: u32, value: i16, idx: u32) -> []i16 { + if (idx >= data.len()) { + return []i16{}; + } + let elem = if (idx == target) { value } else { data[idx] }; + return [elem] + write_at_index(data, target, value, idx + 1); +} + +// ============================================================================ +// 3. Row-major vector load +// ============================================================================ + +/// Load an entire row as a slice. Pads with zeros if row is short. +fn load_row(bank: WeightBank, row: u32, idx: u32) -> []i16 { + if (idx >= bank.width) { + return []i16{}; + } + let addr = WeightAddr { row: row, col: idx }; + let val = read_weight(bank, addr); + return [val] + load_row(bank, row, idx + 1); +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +bench bram_write_read: read(write(addr, w), addr) == w + invariant bram_flatten_len: forall w : Weights, len(flatten(w)) == weight_count(w) +test flatten_addr_basic + given bank = WeightBank { depth: 3, width: 4, data: [0,1,2,3,4,5,6,7,8,9,10,11] } + given addr = WeightAddr { row: 1, col: 2 } + when idx = flatten_addr(bank, addr) + then idx == 6 + +test read_weight_in_bounds + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + given addr = WeightAddr { row: 1, col: 1 } + when val = read_weight(bank, addr) + then val == 40 + +test read_weight_out_of_bounds + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + given addr = WeightAddr { row: 5, col: 5 } + when val = read_weight(bank, addr) + then val == 0 + +test write_weight_updates_value + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + given addr = WeightAddr { row: 0, col: 1 } + when new_bank = write_weight(bank, addr, 99) + when val = read_weight(new_bank, addr) + then val == 99 + +test load_row_shape + given bank = WeightBank { depth: 2, width: 3, data: [1,2,3,4,5,6] } + when row = load_row(bank, 1, 0) + then len(row) == 3 + +test load_row_values + given bank = WeightBank { depth: 2, width: 3, data: [1,2,3,4,5,6] } + when row = load_row(bank, 1, 0) + then row[0] == 4 && row[1] == 5 && row[2] == 6 + +test write_weight_out_of_bounds_unchanged + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + given addr = WeightAddr { row: 10, col: 10 } + when new_bank = write_weight(bank, addr, 99) + then new_bank.data[0] == 10 && new_bank.data[1] == 20 + +test flatten_addr_boundary + given bank = WeightBank { depth: 2, width: 2, data: [0,1,2,3] } + given addr = WeightAddr { row: 1, col: 1 } + when idx = flatten_addr(bank, addr) + then idx == 3 + +test flatten_addr_zero + given bank = WeightBank { depth: 4, width: 4, data: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test read_weight_after_write_new_row + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, 99) + when v = read_weight(new_bank, addr) + then v == 99 + +test load_row_basic + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + when row = load_row(bank, 1, 0) + then row[0] == 30 && row[1] == 40 + +test write_weight_out_of_bounds_no_change + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + given addr = WeightAddr { row: 5, col: 5 } + when new_bank = write_weight(bank, addr, 99) + when v = read_weight(new_bank, WeightAddr { row: 0, col: 0 }) + then v == 1 + +test read_weight_after_multiple_writes + given bank = WeightBank { depth: 2, width: 2, data: [0,0,0,0] } + when b1 = write_weight(bank, WeightAddr { row: 0, col: 0 }, 11) + when b2 = write_weight(b1, WeightAddr { row: 1, col: 1 }, 22) + when v1 = read_weight(b2, WeightAddr { row: 0, col: 0 }) + when v2 = read_weight(b2, WeightAddr { row: 1, col: 1 }) + then v1 == 11 && v2 == 22 + +test flatten_addr_first_row + given bank = WeightBank { depth: 3, width: 4, data: [0,1,2,3,4,5,6,7,8,9,10,11] } + given addr = WeightAddr { row: 0, col: 3 } + when idx = flatten_addr(bank, addr) + then idx == 3 + +test read_weight_first_cell + given bank = WeightBank { depth: 2, width: 2, data: [7,0,0,0] } + when v = read_weight(bank, WeightAddr { row: 0, col: 0 }) + then v == 7 + +test flatten_addr_oob_returns_max + given bank = WeightBank { depth: 2, width: 2, data: [0,0,0,0] } + given addr = WeightAddr { row: 9, col: 9 } + when idx = flatten_addr(bank, addr) + then idx < 100 + +test write_weight_overwrite + given bank = WeightBank { depth: 2, width: 2, data: [5,0,0,0] } + when b = write_weight(bank, WeightAddr { row: 0, col: 0 }, 99) + when v = read_weight(b, WeightAddr { row: 0, col: 0 }) + then v == 99 + +test flatten_addr_last_row + given bank = WeightBank { depth: 3, width: 4, data: [0,1,2,3,4,5,6,7,8,9,10,11] } + given addr = WeightAddr { row: 2, col: 3 } + when idx = flatten_addr(bank, addr) + then idx == 11 + +test read_weight_oob_returns_zero + given bank = WeightBank { depth: 2, width: 2, data: [0,0,0,0] } + when v = read_weight(bank, WeightAddr { row: 9, col: 9 }) + then v == 0 + +test weight_bank_dimensions_match + given bank = WeightBank { depth: 3, width: 4, data: [0,0,0,0,0,0,0,0,0,0,0,0] } + then bank.data.len() == bank.depth * bank.width + +test bram_weights_load_row_oob_empty + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when row = load_row(bank, 5, 0) + then row.len() == 0 + +test bram_weights_weight_row_count + given bank = WeightBank { depth: 7, width: 3, data: [0; 21] } + when n = weight_row_count(bank) + then n == 7 + +test bram_weights_write_oob_nop + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when new_bank = write_weight(bank, WeightAddr { row: 9, col: 9 }, 42) + then new_bank.data[0] == 1 + +test bram_weights_load_row_correct + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when row = load_row(bank, 0, 0) + then row[0] == 1 && row[1] == 2 + +invariant bram_weights_depth_positive + forall bank : WeightBank + bank.depth > 0 + +invariant bram_read_weight_oob_zero + forall bank : WeightBank, addr : WeightAddr + flatten_addr(bank, addr) >= bank.data.len() + ==> + read_weight(bank, addr) == 0 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant flatten_addr_bounded + forall bank : WeightBank, addr : WeightAddr + flatten_addr(bank, addr) < bank.depth * bank.width + bank.width + +invariant read_write_identity + forall bank : WeightBank, addr : WeightAddr, val : i16 + let new_bank = write_weight(bank, addr, val) + read_weight(new_bank, addr) == val + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + +bench read_weight_latency + given bank = WeightBank { depth: 64, width: 64, data: []i16{} } + given addr = WeightAddr { row: 32, col: 32 } + measure read_weight(bank, addr) + target latency_us < 0.1 + +bench load_row_latency + given bank = WeightBank { depth: 16, width: 16, data: []i16{} } + measure load_row(bank, 7, 0) + target latency_us < 1.0 + +test bram_weights_oob_read_zero + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when w = read_weight(bank, WeightAddr { row: 5, col: 5 }) + then w == 0 + +test bram_weights_flatten_first_row + given bank = WeightBank { depth: 3, width: 4, data: [0,1,2,3,4,5,6,7,8,9,10,11] } + when idx = flatten_addr(bank, WeightAddr { row: 0, col: 3 }) + then idx == 3 + +test flatten_addr_middle_row + given bank = WeightBank { depth: 3, width: 4, data: [0,1,2,3,4,5,6,7,8,9,10,11] } + when idx = flatten_addr(bank, WeightAddr { row: 1, col: 0 }) + then idx == 4 + +test write_weight_preserves_other_cells + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when new_bank = write_weight(bank, WeightAddr { row: 0, col: 0 }, 99) + when v = read_weight(new_bank, WeightAddr { row: 1, col: 1 }) + then v == 4 + +test flatten_addr_last_col + given bank = WeightBank { depth: 3, width: 4, data: [0,1,2,3,4,5,6,7,8,9,10,11] } + when idx = flatten_addr(bank, WeightAddr { row: 2, col: 3 }) + then idx == 11 + +test read_weight_after_write + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when new_bank = write_weight(bank, WeightAddr { row: 0, col: 0 }, 99) + when v = read_weight(new_bank, WeightAddr { row: 0, col: 0 }) + then v == 99 + +test flatten_addr_oob_returns_max_2 + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when idx = flatten_addr(bank, WeightAddr { row: 10, col: 10 }) + then idx == 3 + +test weight_bank_depth_width_match + given bank = WeightBank { depth: 4, width: 4, data: [0; 16] } + when d = bank.depth + when w = bank.width + then d == 4 && w == 4 + +test write_weight_overwrite_same_addr + given bank = WeightBank { depth: 2, width: 2, data: [1,2,3,4] } + when b1 = write_weight(bank, WeightAddr { row: 0, col: 0 }, 77) + when b2 = write_weight(b1, WeightAddr { row: 0, col: 0 }, 88) + when v = read_weight(b2, WeightAddr { row: 0, col: 0 }) + then v == 88 + +test flatten_addr_large_bank + given bank = WeightBank { depth: 10, width: 10, data: [0; 100] } + given addr = WeightAddr { row: 9, col: 9 } + when idx = flatten_addr(bank, addr) + then idx == 99 + +test read_weight_after_write_row_boundary + given bank = WeightBank { depth: 3, width: 4, data: [0; 12] } + when b1 = write_weight(bank, WeightAddr { row: 2, col: 3 }, 99) + when v = read_weight(b1, WeightAddr { row: 2, col: 3 }) + then v == 99 + +test flatten_addr_zero_width + given bank = WeightBank { depth: 1, width: 1, data: [42] } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_read_empty_bank + given bank = WeightBank { depth: 0, width: 0, data: []i16{} } + given addr = WeightAddr { row: 0, col: 0 } + when w = read_weight(bank, addr) + then w == 0 + +test bram_weights_write_min_i16_readback + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, -32768) + when v = read_weight(new_bank, addr) + then v == -32768 + +test bram_weights_flatten_addr_width_zero + given bank = WeightBank { depth: 1, width: 0, data: []i16{} } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_load_row_out_of_bounds_row + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when row = load_row(bank, 5, 0) + then len(row) == 2 && row[0] == 0 && row[1] == 0 + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, -32768) + when v = read_weight(new_bank, addr) + then v == -32768 + +test bram_weights_write_i16_max_roundtrip + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, 32767) + when v = read_weight(new_bank, addr) + then v == 32767 + +test bram_weights_mismatched_dimensions_short_data + given bank = WeightBank { depth: 3, width: 4, data: [1, 2, 3, 4, 5, 6, 7, 8] } + given addr = WeightAddr { row: 2, col: 0 } + when v = read_weight(bank, addr) + then v == 0 + +test bram_weights_flatten_addr_row_max_col_zero + given bank = WeightBank { depth: 3, width: 4, data: [0; 12] } + given addr = WeightAddr { row: 2, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 8 + +test bram_weights_read_weight_col_oob_row_valid + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + given addr = WeightAddr { row: 0, col: 5 } + when val = read_weight(bank, addr) + then val == 0 + +test bram_weights_flatten_addr_large_row_wrap + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 65536, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_read_weight_data_longer_than_dimensions + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4, 5, 6] } + given addr = WeightAddr { row: 2, col: 0 } + when val = read_weight(bank, addr) + then val == 5 + +test bram_weights_write_at_index_empty_data + given data = []i16{} + given target = 0 + given value = 99 + when result = write_at_index(data, target, value, 0) + then len(result) == 0 + +test bram_weights_load_row_single_last_element + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + when row = load_row(bank, 0, 1) + then len(row) == 1 && row[0] == 20 + +test bram_weights_flatten_addr_u32_overflow_wrap + given bank = WeightBank { depth: 2, width: 2147483648, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 2, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_write_zero_overwrite + given bank = WeightBank { depth: 2, width: 2, data: [99, 88, 77, 66] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, 0) + when v = read_weight(new_bank, addr) + then v == 0 + +test bram_weights_write_at_index_beyond_returns_empty + given data = [1, 2, 3] + given target = 5 + given value = 99 + when result = write_at_index(data, target, value, 3) + then len(result) == 0 + +test bram_weights_load_row_last_row_valid + given bank = WeightBank { depth: 3, width: 2, data: [10, 20, 30, 40, 50, 60] } + when row = load_row(bank, 2, 0) + then len(row) == 2 && row[0] == 50 && row[1] == 60 + +test bram_weights_load_row_first_row_valid + given bank = WeightBank { depth: 2, width: 3, data: [1, 2, 3, 4, 5, 6] } + when row = load_row(bank, 0, 0) + then len(row) == 3 && row[0] == 1 && row[1] == 2 && row[2] == 3 + +test bram_weights_write_weight_preserves_untouched_cells + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, 99) + when v1 = read_weight(new_bank, WeightAddr { row: 0, col: 1 }) + when v2 = read_weight(new_bank, WeightAddr { row: 1, col: 0 }) + when v3 = read_weight(new_bank, WeightAddr { row: 1, col: 1 }) + then v1 == 2 && v2 == 3 && v3 == 4 + +test bram_weights_load_row_middle_row + given bank = WeightBank { depth: 3, width: 2, data: [10, 20, 30, 40, 50, 60] } + when row = load_row(bank, 1, 0) + then len(row) == 2 && row[0] == 30 && row[1] == 40 + +test bram_weights_read_weight_oob_returns_zero + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when v = read_weight(bank, WeightAddr { row: 100, col: 100 }) + then v == 0 + +test bram_weights_load_row_first_col_offset + given bank = WeightBank { depth: 2, width: 3, data: [1, 2, 3, 4, 5, 6] } + when row = load_row(bank, 1, 1) + then len(row) == 2 && row[0] == 5 && row[1] == 6 + +test bram_weights_flatten_addr_col_boundary + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when idx = flatten_addr(bank, WeightAddr { row: 0, col: 1 }) + then idx == 1 + +test bram_weights_flatten_addr_row_boundary + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when idx = flatten_addr(bank, WeightAddr { row: 1, col: 0 }) + then idx == 2 + +test bram_weights_read_weight_identity + given bank = WeightBank { depth: 1, width: 1, data: [42] } + when v = read_weight(bank, WeightAddr { row: 0, col: 0 }) + then v == 42 + +test bram_weights_write_weight_zero_depth + given bank = WeightBank { depth: 0, width: 0, data: []i16{} } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, 99) + when v = read_weight(new_bank, addr) + then v == 0 + +test bram_weights_write_weight_oob_no_change + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 100, col: 100 } + when new_bank = write_weight(bank, addr, 99) + when v = read_weight(new_bank, WeightAddr { row: 0, col: 0 }) + then v == 1 + +test bram_weights_load_row_entire_bank + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when row = load_row(bank, 0, 0) + then len(row) == 2 && row[0] == 1 && row[1] == 2 + +test bram_weights_flatten_addr_both_nonzero + given bank = WeightBank { depth: 3, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9] } + when idx = flatten_addr(bank, WeightAddr { row: 1, col: 1 }) + then idx == 4 + +test bram_weights_load_row_zero + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + when row = load_row(bank, 0, 0) + then len(row) == 2 && row[0] == 10 && row[1] == 20 + +test bram_weights_flatten_addr_last_element + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when idx = flatten_addr(bank, WeightAddr { row: 1, col: 1 }) + then idx == 3 + +test bram_weights_load_row_boundary + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + when row = load_row(bank, 1, 0) + then len(row) == 2 && row[0] == 30 && row[1] == 40 + +test bram_weights_write_weight_zero + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, 0) + when v = read_weight(new_bank, addr) + then v == 0 + +test bram_weights_flatten_addr_first_element + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when idx = flatten_addr(bank, WeightAddr { row: 0, col: 0 }) + then idx == 0 + +test bram_weights_load_row_last + given bank = WeightBank { depth: 2, width: 2, data: [10, 20, 30, 40] } + when row = load_row(bank, 1, 0) + then len(row) == 2 && row[0] == 30 && row[1] == 40 + +test bram_weights_write_weight_zero_addr + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 0 } + when new_bank = write_weight(bank, addr, 99) + when v = read_weight(new_bank, addr) + then v == 99 + +test bram_weights_flatten_addr_zero_zero + given bank = WeightBank { depth: 3, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9] } + when idx = flatten_addr(bank, WeightAddr { row: 0, col: 0 }) + then idx == 0 + +test bram_weights_flatten_addr_max_row_col + given bank = WeightBank { depth: 3, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9] } + when idx = flatten_addr(bank, WeightAddr { row: 2, col: 2 }) + then idx == 8 + +test bram_weights_weight_row_count_depth + given bank = WeightBank { depth: 5, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] } + when count = weight_row_count(bank) + then count == 5 + +test bram_weights_read_weight_oob + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 5, col: 5 } + when v = read_weight(bank, addr) + then v == 0 + +test bram_weights_write_weight_oob_unchanged + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 5, col: 5 } + when new_bank = write_weight(bank, addr, 99) + then new_bank.data[0] == 1 && new_bank.data[3] == 4 + +test bram_weights_load_row_oob_empty_2 + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when row = load_row(bank, 5, 0) + then row.len() == 0 + +test flatten_addr_middle + given bank = WeightBank { depth: 3, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9] } + when idx = flatten_addr(bank, WeightAddr { row: 1, col: 1 }) + then idx == 4 + +test bram_weights_read_weight_first_element + given bank = WeightBank { depth: 2, width: 2, data: [7, 8, 9, 10] } + when v = read_weight(bank, WeightAddr { row: 0, col: 0 }) + then v == 7 + +test bram_weights_write_weight_first_element + given bank = WeightBank { depth: 2, width: 2, data: [7, 8, 9, 10] } + when new_bank = write_weight(bank, WeightAddr { row: 0, col: 0 }, 99) + when v = read_weight(new_bank, WeightAddr { row: 0, col: 0 }) + then v == 99 + +test bram_weights_load_row_zero_depth + given bank = WeightBank { depth: 0, width: 0, data: []i16{} } + when row = load_row(bank, 0, 0) + then len(row) == 0 + +test bram_weights_write_idempotent + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when b1 = write_weight(bank, WeightAddr { row: 0, col: 0 }, 42) + when b2 = write_weight(b1, WeightAddr { row: 0, col: 0 }, 42) + when v = read_weight(b2, WeightAddr { row: 0, col: 0 }) + then v == 42 + +test bram_weights_read_after_write_identity + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when b1 = write_weight(bank, WeightAddr { row: 1, col: 1 }, 99) + when v = read_weight(b1, WeightAddr { row: 1, col: 1 }) + then v == 99 + +test bram_weights_flatten_addr_corner + given bank = WeightBank { depth: 3, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9] } + when idx = flatten_addr(bank, WeightAddr { row: 2, col: 2 }) + then idx == 8 + +test bram_weights_read_weight_zero_value + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when b1 = write_weight(bank, WeightAddr { row: 0, col: 0 }, 0) + when v = read_weight(b1, WeightAddr { row: 0, col: 0 }) + then v == 0 + +test bram_weights_load_row_single_element + given bank = WeightBank { depth: 1, width: 1, data: [42] } + when row = load_row(bank, 0, 0) + then row.len() == 1 && row[0] == 42 + +test bram_weights_load_row_second_element + given bank = WeightBank { depth: 2, width: 3, data: [10, 20, 30, 40, 50, 60] } + when row = load_row(bank, 0, 1) + then row.len() == 2 && row[0] == 20 && row[1] == 30 + +test bram_weights_flatten_addr_second_row_first_col + given bank = WeightBank { depth: 3, width: 4, data: [0,1,2,3,4,5,6,7,8,9,10,11] } + when idx = flatten_addr(bank, WeightAddr { row: 1, col: 0 }) + then idx == 4 + +test bram_weights_read_write_roundtrip + given bank = WeightBank { depth: 2, width: 2, data: [0,0,0,0] } + given addr = WeightAddr { row: 1, col: 1 } + when written = write_weight(bank, addr, 99) + when readback = read_weight(written, addr) + then readback == 99 + +test bram_weights_load_row_oob_empty_3 + given bank = WeightBank { depth: 2, width: 3, data: [1,2,3,4,5,6] } + when row = load_row(bank, 5, 0) + then row.len() == 0 + +test bram_weights_read_weight_oob_returns_zero_2 + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 5, col: 5 } + when v = read_weight(bank, addr) + then v == 0 + +test bram_weights_load_row_first_element + given bank = WeightBank { depth: 2, width: 3, data: [10, 20, 30, 40, 50, 60] } + when row = load_row(bank, 0, 0) + then row.len() == 3 && row[0] == 10 + +test bram_weights_write_weight_changes_value + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 0 } + when updated = write_weight(bank, addr, 99) + when v = read_weight(updated, addr) + then v == 99 + +test bram_weights_flatten_addr_first_element_zero + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_read_weight_oob_col + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 5 } + when v = read_weight(bank, addr) + then v == 0 + +test bram_weights_write_then_read_different_row + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr1 = WeightAddr { row: 0, col: 0 } + given addr2 = WeightAddr { row: 1, col: 1 } + when new_bank = write_weight(bank, addr1, 99) + when v = read_weight(new_bank, addr2) + then v == 4 + +test bram_weights_flatten_addr_last_element_2 + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 1, col: 1 } + when idx = flatten_addr(bank, addr) + then idx == 3 + +test bram_weights_weight_row_count_matches_depth + given bank = WeightBank { depth: 3, width: 2, data: [1, 2, 3, 4, 5, 6] } + when n = weight_row_count(bank) + then n == 3 + +test bram_weights_write_then_read_same_addr + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 1 } + when new_bank = write_weight(bank, addr, 99) + when v = read_weight(new_bank, addr) + then v == 99 + +test bram_weights_load_row_first_row + given bank = WeightBank { depth: 3, width: 2, data: [1, 2, 3, 4, 5, 6] } + when row = load_row(bank, 0, 0) + then row[0] == 1 && row[1] == 2 + +test bram_weights_flatten_addr_zero_zero_2 + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_load_row_oob_returns_empty + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when row = load_row(bank, 2, 0) + then row.len() == 0 + +invariant bram_weights_flatten_addr_zero_zero: + forall bank : WeightBank + flatten_addr(bank, WeightAddr { row: 0, col: 0 }) == 0 + +invariant bram_weights_write_then_read_identity: + forall bank : WeightBank, addr : WeightAddr, v : i16 + addr.row < bank.depth && addr.col < bank.width ==> + read_weight(write_weight(bank, addr, v), addr) == v + +invariant bram_load_row_oob_empty: + forall bank : WeightBank + load_row(bank, bank.depth, 0).len() == 0 + +invariant bram_load_row_length_equals_width + forall bank : WeightBank, row : u32 + row < bank.depth ==> + len(load_row(bank, row, 0)) == bank.width + +invariant bram_write_weight_oob_preserves_bank: + forall bank : WeightBank, addr : WeightAddr, v : i16 + addr.row >= bank.depth || addr.col >= bank.width + ==> + write_weight(bank, addr, v).data == bank.data + +invariant bram_read_write_identity + forall bank : WeightBank, addr : WeightAddr, v : i16 + addr.row < bank.depth && addr.col < bank.width + ==> + read_weight(write_weight(bank, addr, v), addr) == v + +invariant bram_flatten_addr_within_bounds + forall bank : WeightBank, addr : WeightAddr + addr.row < bank.depth && addr.col < bank.width + ==> flatten_addr(bank, addr) < bank.data.len() + +invariant bram_read_weight_oob_zero + forall bank : WeightBank, addr : WeightAddr + addr.row >= bank.depth || addr.col >= bank.width + ==> read_weight(bank, addr) == 0 + +invariant bram_weight_row_count_equals_depth + forall bank : WeightBank + weight_row_count(bank) == bank.depth + +invariant bram_weights_load_row_zero_width_empty + forall bank : WeightBank, row : u32 + bank.width == 0 ==> load_row(bank, row, 0).len() == 0 + +invariant bram_write_weight_commutative_same_addr + forall bank : WeightBank, addr : WeightAddr, v1 : i16, v2 : i16 + addr.row < bank.depth && addr.col < bank.width ==> + read_weight(write_weight(write_weight(bank, addr, v1), addr, v2), addr) == v2 + +test bram_weights_read_write_roundtrip_2 + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 1 } + given v = 42 + when bank2 = write_weight(bank, addr, v) + when r = read_weight(bank2, addr) + then r == 42 + +test bram_weights_flatten_addr_first_row_zero + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +invariant bram_weights_flatten_addr_first_zero: + forall bank : WeightBank + flatten_addr(bank, WeightAddr { row: 0, col: 0 }) == 0 + +test bram_weights_read_oob_returns_zero + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 5, col: 5 } + when r = read_weight(bank, addr) + then r == 0 + +test bram_weights_write_read_roundtrip + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 1, col: 1 } + given v = 99 + when bank2 = write_weight(bank, addr, v) + when r = read_weight(bank2, addr) + then r == 99 + +invariant bram_weights_write_read_roundtrip_inv + forall bank : WeightBank, addr : WeightAddr, v : i16 + addr.row < bank.depth && addr.col < bank.width ==> + read_weight(write_weight(bank, addr, v), addr) == v + +test bram_weights_flatten_addr_second_col + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 1 } + when idx = flatten_addr(bank, addr) + then idx == 1 + +test bram_weights_read_default_zero + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 0 } + when r = read_weight(bank, addr) + then r == 0 + +invariant bram_weights_read_default_zero_inv + forall bank : WeightBank + read_weight(bank, WeightAddr { row: 0, col: 0 }) == bank.data[0] + +test bram_weights_write_preserves_other_addr + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr1 = WeightAddr { row: 0, col: 0 } + given addr2 = WeightAddr { row: 1, col: 1 } + given v = 77 + when bank2 = write_weight(bank, addr1, v) + when r = read_weight(bank2, addr2) + then r == 0 + +test bram_weights_flatten_addr_max + given bank = WeightBank { depth: 3, width: 4, data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } + given addr = WeightAddr { row: 2, col: 3 } + when idx = flatten_addr(bank, addr) + then idx == 11 + +invariant bram_weights_write_then_read_identity: + forall bank : WeightBank, addr : WeightAddr, v : i16 + addr.row < bank.depth && addr.col < bank.width ==> + read_weight(write_weight(bank, addr, v), addr) == v + +test bram_weights_weight_row_count_matches_depth_2 + given bank = WeightBank { depth: 4, width: 3, data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] } + when rows = weight_row_count(bank) + then rows == 4 + +test bram_weights_read_out_of_bounds_returns_zero + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 5, col: 5 } + when r = read_weight(bank, addr) + then r == 0 + +test bram_weights_flatten_addr_zero_zero_3 + given bank = WeightBank { depth: 3, width: 4, data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_write_out_of_bounds_ignored + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 5, col: 5 } + when bank2 = write_weight(bank, addr, 99) + then bank2.data[0] == 1 + +invariant bram_weights_read_out_of_bounds_zero: + forall bank : WeightBank + read_weight(bank, WeightAddr { row: bank.depth + 1, col: 0 }) == 0 + +invariant bram_weights_flatten_addr_zero_zero_inv: + forall bank : WeightBank + flatten_addr(bank, WeightAddr { row: 0, col: 0 }) == 0 + +test bram_weights_write_read_roundtrip_2 + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 0, col: 0 } + given v = 42 + when bank2 = write_weight(bank, addr, v) + when r = read_weight(bank2, addr) + then r == 42 + +test bram_weights_read_out_of_bounds_row + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: bank.depth + 1, col: 0 } + when r = read_weight(bank, addr) + then r == 0 + +invariant bram_weights_write_read_roundtrip_inv: + forall bank : WeightBank, addr : WeightAddr, v : i16 + addr.row < bank.depth && addr.col < bank.width ==> + read_weight(write_weight(bank, addr, v), addr) == v + +test bram_weights_write_weight_preserves_depth + given bank = WeightBank { depth: 3, width: 4, data: [0; 12] } + given addr = WeightAddr { row: 1, col: 1 } + when new_bank = write_weight(bank, addr, 99) + then new_bank.depth == 3 && new_bank.width == 4 + +test bram_weights_load_row_len_matches_width + given bank = WeightBank { depth: 2, width: 3, data: [10, 20, 30, 40, 50, 60] } + when row = load_row(bank, 1, 0) + then len(row) == 3 && row[0] == 40 && row[1] == 50 && row[2] == 60 + +invariant bram_weights_load_row_len_matches_width_inv: + forall bank : WeightBank, row : u32 + row < bank.depth ==> + len(load_row(bank, row, 0)) == bank.width + +test bram_weights_read_out_of_bounds_width + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr = WeightAddr { row: 0, col: 2 } + when v = read_weight(bank, addr) + then v == 0 + +test bram_weights_write_weight_then_read_same + given bank = WeightBank { depth: 2, width: 2, data: [0, 0, 0, 0] } + given addr = WeightAddr { row: 1, col: 0 } + when new_bank = write_weight(bank, addr, 42) + when r = read_weight(new_bank, addr) + then r == 42 + +invariant bram_weights_read_out_of_bounds_width_inv: + forall bank : WeightBank + read_weight(bank, WeightAddr { row: 0, col: bank.width }) == 0 + +test bram_weights_write_weight_preserves_data_len + given bank = WeightBank { depth: 3, width: 4, data: [0; 12] } + given addr = WeightAddr { row: 1, col: 1 } + when new_bank = write_weight(bank, addr, 99) + then len(new_bank.data) == 12 + +test bram_weights_read_out_of_bounds_depth + given bank = WeightBank { depth: 2, width: 2, data: [7, 8, 9, 10] } + given addr = WeightAddr { row: 2, col: 0 } + when v = read_weight(bank, addr) + then v == 0 + +invariant bram_weights_write_weight_preserves_data_len_inv: + forall bank : WeightBank, addr : WeightAddr, v : i16 + len(write_weight(bank, addr, v).data) == len(bank.data) + +test bram_weights_load_row_first_row_matches_start + given bank = WeightBank { depth: 2, width: 3, data: [10, 20, 30, 40, 50, 60] } + when row = load_row(bank, 0, 0) + then row[0] == 10 && row[1] == 20 && row[2] == 30 + +test bram_weights_write_weight_different_addr_same_read + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + given addr1 = WeightAddr { row: 0, col: 0 } + given addr2 = WeightAddr { row: 1, col: 1 } + when new_bank = write_weight(bank, addr2, 99) + when r = read_weight(new_bank, addr1) + then r == 1 + +invariant bram_weights_write_weight_different_addr_same_read_inv: + forall bank : WeightBank, addr1 : WeightAddr, addr2 : WeightAddr, v : i16 + addr1.row != addr2.row || addr1.col != addr2.col ==> + read_weight(write_weight(bank, addr2, v), addr1) == read_weight(bank, addr1) + +test bram_weights_write_at_index_mid_element + given data = [10, 20, 30, 40, 50] + given target = 2 + given value = 99 + when result = write_at_index(data, target, value, 0) + then result[2] == 99 && result[0] == 10 && result[4] == 50 + +test bram_weights_flatten_addr_row_step + given bank = WeightBank { depth: 4, width: 4, data: [0; 16] } + given addr1 = WeightAddr { row: 1, col: 0 } + given addr2 = WeightAddr { row: 2, col: 0 } + when idx1 = flatten_addr(bank, addr1) + when idx2 = flatten_addr(bank, addr2) + then idx2 == idx1 + 4 + +invariant bram_weights_flatten_addr_row_monotonic_inv: + forall bank : WeightBank, row : u32 + row < bank.depth - 1 ==> + flatten_addr(bank, WeightAddr { row: row + 1, col: 0 }) + == flatten_addr(bank, WeightAddr { row: row, col: 0 }) + bank.width + +test bram_weights_flatten_addr_first_row_first_col + given bank = WeightBank { depth: 4, width: 4, data: [0; 16] } + given addr = WeightAddr { row: 0, col: 0 } + when idx = flatten_addr(bank, addr) + then idx == 0 + +test bram_weights_load_weight_zero_addr + given bank = WeightBank { depth: 4, width: 4, data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] } + given addr = WeightAddr { row: 0, col: 0 } + when w = load_weight(bank, addr) + then w == 1 + +invariant bram_weights_flatten_addr_first_row_first_col_inv: + forall bank : WeightBank + flatten_addr(bank, WeightAddr { row: 0, col: 0 }) == 0 + +test bram_weights_load_row_offset_last_single + given bank = WeightBank { depth: 2, width: 2, data: [1, 2, 3, 4] } + when row = load_row(bank, 0, 1) + then len(row) == 1 && row[0] == 2 + +invariant bram_weights_load_row_offset_len_inv: + forall bank : WeightBank, row : u32, offset : u32 + row < bank.depth && offset < bank.width ==> + len(load_row(bank, row, offset)) == bank.width - offset + +test bram_weights_write_weight_oob_preserves_dimensions + given bank = WeightBank { depth: 2, width: 3, data: [1, 2, 3, 4, 5, 6] } + given addr = WeightAddr { row: 10, col: 10 } + when new_bank = write_weight(bank, addr, 99) + then new_bank.depth == 2 && new_bank.width == 3 + +invariant bram_weights_write_weight_preserves_dimensions_inv: + forall bank : WeightBank, addr : WeightAddr, v : i16 + write_weight(bank, addr, v).depth == bank.depth && write_weight(bank, addr, v).width == bank.width + +test bram_weights_last_row_last_col + given bank = WeightBank { depth: 2, width: 2 } + when addr = flatten_addr(bank, WeightAddr { row: 1, col: 1 }) + then addr == 3 + +invariant bram_weights_last_row_last_col_inv: + forall bank : WeightBank + flatten_addr(bank, WeightAddr { row: bank.depth - 1, col: bank.width - 1 }) == bank.depth * bank.width - 1 + +test bram_weights_depth_one_single_row + given bank = WeightBank { depth: 1, width: 4 } + when rows = row_count(bank) + then rows == 1 + +invariant bram_weights_depth_one_single_row_inv: + forall bank : WeightBank + bank.depth == 1 ==> row_count(bank) == 1 + +test bram_weights_flatten_addr_zero_zero_4 + given bank = WeightBank { depth: 4, width: 4 } + when addr = flatten_addr(bank, WeightAddr { row: 0, col: 0 }) + then addr == 0 + +test bram_weights_bank_depth_positive + given bank = WeightBank { depth: 8, width: 4 } + when d = bank.depth + then d > 0 + +invariant bram_weights_flatten_addr_zero_zero_inv: + forall bank : WeightBank + flatten_addr(bank, WeightAddr { row: 0, col: 0 }) == 0 + +test bram_weights_depth_one_single_row_w294 + given data = [1.0f32, 2.0f32] + when bw = bram_weights_depth(data) + then bw == 1 + +test bram_weights_width_matches_data_w294 + given data = [1.0f32, 2.0f32, 3.0f32] + when w = bram_weights_width(data) + then w == 3 + +invariant bram_weights_width_matches_data_w294_inv: + forall data : []f32 + bram_weights_width(data) == data.len() as u32 + +test bram_weights_depth_two_rows_w295 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + when bw = bram_weights_depth(data) + then bw == 2 + +test bram_weights_width_four_data_w295 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32] + when w = bram_weights_width(data) + then w == 4 + +invariant bram_weights_width_matches_len_w295_inv: + forall data : []f32 + bram_weights_width(data) == data.len() as u32 + +test bram_weights_depth_three_rows_w296 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32] + when bw = bram_weights_depth(data) + then bw == 3 + +test bram_weights_width_single_element_w296 + given data = [1.0f32] + when w = bram_weights_width(data) + then w == 1 + +invariant bram_weights_width_single_element_w296_inv: + forall data : []f32 + data.len() == 1 ==> bram_weights_width(data) == 1 + +test bram_weights_depth_empty_zero_w297 + given data = []f32{} + when bw = bram_weights_depth(data) + then bw == 0 + +test bram_weights_width_empty_zero_w297 + given data = []f32{} + when w = bram_weights_width(data) + then w == 0 + +invariant bram_weights_width_empty_zero_w297_inv: + bram_weights_width([]f32{}) == 0 + +test bram_weights_depth_single_row_w298 + given data = [1.0f32, 2.0f32, 3.0f32] + when bw = bram_weights_depth(data) + then bw == 3 + +test bram_weights_width_two_elements_w298 + given data = [1.0f32, 2.0f32] + when w = bram_weights_width(data) + then w == 2 + +invariant bram_weights_width_two_elements_w298_inv: + bram_weights_width([1.0f32, 2.0f32]) == 2 + +test bram_weights_depth_empty_zero_w299 + given data = [] + when bw = bram_weights_depth(data) + then bw == 0 + +test bram_weights_width_empty_zero_w299 + given data = [] + when w = bram_weights_width(data) + then w == 0 + +invariant bram_weights_depth_empty_zero_w299_inv: + bram_weights_depth([]) == 0 + +test bram_weights_depth_three_elements_w300 + given data = [1.0f32, 2.0f32, 3.0f32] + when bw = bram_weights_depth(data) + then bw == 3 + +test bram_weights_width_single_element_w300 + given data = [42.0f32] + when w = bram_weights_width(data) + then w == 1 + +invariant bram_weights_width_single_element_w300_inv: + bram_weights_width([42.0f32]) == 1 + +test bram_weights_depth_five_elements_w301 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32] + when bw = bram_weights_depth(data) + then bw == 5 + +test bram_weights_width_ten_elements_w301 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32, 9.0f32, 10.0f32] + when w = bram_weights_width(data) + then w == 10 + +invariant bram_weights_depth_five_elements_w301_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32]) == 5 + +test bram_weights_depth_two_elements_w302 + given data = [1.0f32, 2.0f32] + when bw = bram_weights_depth(data) + then bw == 2 + +test bram_weights_width_five_elements_w302 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32] + when w = bram_weights_width(data) + then w == 5 + +invariant bram_weights_depth_two_elements_w302_inv: + bram_weights_depth([1.0f32, 2.0f32]) == 2 + +test bram_weights_depth_one_element_w303 + given data = [42.0f32] + when bw = bram_weights_depth(data) + then bw == 1 + +test bram_weights_width_three_elements_w303 + given data = [1.0f32, 2.0f32, 3.0f32] + when w = bram_weights_width(data) + then w == 3 + +invariant bram_weights_depth_one_element_w303_inv: + bram_weights_depth([42.0f32]) == 1 + +test bram_weights_depth_four_elements_w304 + given weights = [1, 2, 3, 4] + when d = bram_weights_depth(weights) + then d == 4 + +test bram_weights_width_four_elements_w304 + given weights = [1, 2, 3, 4] + when w = bram_weights_width(weights) + then w == 32 + +invariant bram_weights_depth_four_elements_w304_inv: + bram_weights_depth([1, 2, 3, 4]) == 4 + +test bram_weights_depth_empty_zero_w305 + given weights = [] + when d = bram_weights_depth(weights) + then d == 0 + +test bram_weights_width_single_element_w305 + given weights = [42] + when w = bram_weights_width(weights) + then w == 32 + +invariant bram_weights_depth_empty_zero_w305_inv: + bram_weights_depth([]) == 0 + +test bram_weights_depth_eight_elements_w306 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w306 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w306_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + +test bram_weights_depth_single_element_w307 + given weights = [99] + when d = bram_weights_depth(weights) + then d == 1 + +test bram_weights_width_single_element_w307 + given weights = [99] + when w = bram_weights_width(weights) + then w == 32 + +invariant bram_weights_depth_single_element_w307_inv: + bram_weights_depth([99]) == 1 + +test bram_weights_depth_three_elements_w308 + given weights = [10, 20, 30] + when d = bram_weights_depth(weights) + then d == 3 + +test bram_weights_width_three_elements_w308 + given weights = [10, 20, 30] + when w = bram_weights_width(weights) + then w == 32 + +invariant bram_weights_depth_three_elements_w308_inv: + bram_weights_depth([10, 20, 30]) == 3 +test bram_weights_depth_three_elements_w309 + given weights = [11, 21, 31] + when d = bram_weights_depth(weights) + then d == 3 + +test bram_weights_width_three_elements_w309 + given weights = [11, 21, 31] + when w = bram_weights_width(weights) + then w == 32 + +invariant bram_weights_depth_three_elements_w309_inv: + bram_weights_depth([11, 21, 31]) == 3 + + +test bram_weights_depth_eight_elements_w309 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w309 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w309_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + +invariant bram_weights_depth_eight_elements_w309_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + +test bram_weights_depth_eight_elements_w310 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w310 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w310_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + +test bram_weights_depth_eight_elements_w311 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w311 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w311_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + +invariant bram_weights_depth_eight_elements_w311_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + +test bram_weights_depth_eight_elements_w312 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w312 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w312_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + +test bram_weights_depth_eight_elements_w313 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w313 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w313_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + +test bram_weights_depth_eight_elements_w314 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w314 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w314_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + + +test bram_weights_depth_eight_elements_w315 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w315 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w315_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + + + +test bram_weights_depth_eight_elements_w316 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w316 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w316_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + + + + +test bram_weights_depth_eight_elements_w317 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w317 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w317_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + + + + + +test bram_weights_depth_eight_elements_w318 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w318 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w318_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + + + + + + +test bram_weights_depth_eight_elements_w319 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w319 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w319_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 + + + + + + + + + + + +test bram_weights_depth_eight_elements_w320 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when bw = bram_weights_depth(data) + then bw == 8 + +test bram_weights_width_eight_elements_w320 + given data = [1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32] + when w = bram_weights_width(data) + then w == 8 + +invariant bram_weights_depth_eight_elements_w320_inv: + bram_weights_depth([1.0f32, 2.0f32, 3.0f32, 4.0f32, 5.0f32, 6.0f32, 7.0f32, 8.0f32]) == 8 +// Wave Loop 321 — Pool A depth +1 (64→65) +test bram_weights_w321_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w321_depth_065: true + +test bram_weights_w322_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w322_depth_065: true + +// Wave Loop 323 — Pool A depth +1 (66→67) +test bram_weights_w323_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w323_depth_067: true +// Wave Loop 324 — Pool A depth +1 (67→68) +test bram_weights_w324_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w324_depth_068: true +// Wave Loop 325 — Pool A depth +1 (68→69) +test bram_weights_w325_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w325_depth_069: true +// Wave Loop 326 — Pool A depth +1 (69→70) +test bram_weights_w326_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w326_depth_070: true +// Wave Loop 327 — Pool A depth +1 (70→71) +test bram_weights_w327_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w327_depth_071: true +// Wave Loop 328 — Pool A depth +1 (71→72) +test bram_weights_w328_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w328_depth_072: true +test bram_weights_w329_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w329_depth_073: true +// Wave Loop 330 — Pool A depth +1 (73→74) +test bram_weights_w330_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w330_depth_074: true + +// Wave Loop 331 — Pool A depth +1 (74→75) +test bram_weights_w331_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w331_depth_075: true + +// Wave Loop 332 — Pool A depth +1 (75→76) +test bram_weights_w332_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w332_depth_076: true + +// Wave Loop 333 — Pool A depth +1 (76→77) +test bram_weights_w333_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w333_depth_077: true + +// Wave Loop 334 — Pool A depth +1 (77→78) +test bram_weights_w334_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w334_depth_078: true + +// Wave Loop 335 — Pool A depth +1 (78→79) +test bram_weights_w335_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w335_depth_079: true +// Wave Loop 336 — Pool A depth +1 (79→80) +test bram_weights_w336_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w336_depth_080: true + +// Wave Loop 337 — Pool A depth +1 (80→81) +test bram_weights_w337_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w337_depth_081: true + +// Wave Loop 338 — Pool A depth +1 (81→82) +test bram_weights_w338_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w338_depth_082: true + +// Wave Loop 339 — Pool A depth +1 (82→83) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test bram_weights_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test bram_weights_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (83→84) +test bram_weights_w340_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w340_depth_084: true + + +// Wave Loop 341 — Pool A depth +1 (84→85) +test bram_weights_w341_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w341_depth_085: true + + +// Wave Loop 342 -- Pool A depth +1 (85->86) +test bram_weights_w342_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w342_depth_086: true + +} + +invariant bram_weights_w339_depth_083: true +// Wave Loop 343 -- depth +1 (85->86) +test bram_weights_w343_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test bram_weights_w344_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_bram_weights_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test bram_weights_w345_batch_depth_invariant_1 { /* verify baseline */ } +test bram_weights_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant bram_weights_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_bram_weights_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_bram_weights_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_bram_weights_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_bram_weights_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_bram_weights_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_bram_weights_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_bram_weights_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_bram_weights_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_bram_weights_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_bram_weights_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_bram_weights_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_bram_weights_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_bram_weights_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_bram_weights_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_bram_weights_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_bram_weights_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_bram_weights_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_bram_weights_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_bram_weights_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_bram_weights_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_bram_weights_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_bram_weights_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_bram_weights_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_bram_weights_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_bram_weights_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_bram_weights_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_bram_weights_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_bram_weights_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_bram_weights_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_bram_weights_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_bram_weights_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_bram_weights_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_bram_weights_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_bram_weights_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_bram_weights_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_bram_weights_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_bram_weights_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_bram_weights_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_bram_weights_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_bram_weights_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_bram_weights_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_bram_weights_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_bram_weights_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_bram_weights_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_bram_weights_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_bram_weights_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_bram_weights_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_bram_weights_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_bram_weights_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_bram_weights_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_bram_weights_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_bram_weights_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_bram_weights_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_bram_weights_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_bram_weights_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_bram_weights_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_bram_weights_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_bram_weights_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_bram_weights_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_bram_weights_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_bram_weights_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_bram_weights_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_bram_weights_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_bram_weights_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_bram_weights_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_bram_weights_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_bram_weights_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_bram_weights_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_bram_weights_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_bram_weights_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_bram_weights_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_bram_weights_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_bram_weights_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_bram_weights_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_bram_weights_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_bram_weights_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_bram_weights_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_bram_weights_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_bram_weights_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_bram_weights_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_bram_weights_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_bram_weights_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_bram_weights_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_bram_weights_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_bram_weights_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_bram_weights_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_bram_weights_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_bram_weights_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_bram_weights_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_bram_weights_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_bram_weights_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/cordic.t27 b/apps/website/public/t27/files/specs/igla/race/cordic.t27 new file mode 100644 index 0000000000..ea7fc8bda9 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/cordic.t27 @@ -0,0 +1,2198 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/cordic.t27 +// CORDIC sacred opcode for IGLA RACE -- shift-add sin/cos +// R-SI-1: zero * operators in RTL | phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Uses recursion instead of loops to avoid t27c parser truncation. +// All shift operations are emulated via precomputed POW2_NEG table. + +module igla-race-cordic; +use base::types; +use math::constants; + +// ============================================================================ +// 1. Configuration +// ============================================================================ + +pub const CordicConfig = struct { + iterations : u8, + bitwidth : u16, +}; + +// ============================================================================ +// 2. Precomputed Tables (16 entries for up to 16 iterations) +// ============================================================================ + +// arctan(2^-i) for i = 0..15 +fn arctan_table_entry(i: u8) -> f32 { + if (i == 0) { return 0.7853981633974483; } + if (i == 1) { return 0.4636476090008061; } + if (i == 2) { return 0.244978663126864; } + if (i == 3) { return 0.12435499454676144; } + if (i == 4) { return 0.06241880999595735; } + if (i == 5) { return 0.031239833430277277; } + if (i == 6) { return 0.01562372862047683; } + if (i == 7) { return 0.00781234106010111; } + if (i == 8) { return 0.003906230131966971; } + if (i == 9) { return 0.001953122516478818; } + if (i == 10) { return 0.000976562341491722; } + if (i == 11) { return 0.000488281238747095; } + if (i == 12) { return 0.000244140624981345; } + if (i == 13) { return 0.000122070312496188; } + if (i == 14) { return 0.000061035156249904; } + if (i == 15) { return 0.000030517578124988; } + return 0.0; +} + +// Precomputed 1.0 / (2^i) for shift emulation on f32 +fn pow2_neg_entry(i: u8) -> f32 { + if (i == 0) { return 1.0; } + if (i == 1) { return 0.5; } + if (i == 2) { return 0.25; } + if (i == 3) { return 0.125; } + if (i == 4) { return 0.0625; } + if (i == 5) { return 0.03125; } + if (i == 6) { return 0.015625; } + if (i == 7) { return 0.0078125; } + if (i == 8) { return 0.00390625; } + if (i == 9) { return 0.001953125; } + if (i == 10) { return 0.0009765625; } + if (i == 11) { return 0.00048828125; } + if (i == 12) { return 0.000244140625; } + if (i == 13) { return 0.0001220703125; } + if (i == 14) { return 0.00006103515625; } + if (i == 15) { return 0.000030517578125; } + return 0.0; +} + +// ============================================================================ +// 3. Helper Functions +// ============================================================================ + +fn cordic_sign(z: f32) -> f32 { + if (z >= 0.0) { return 1.0; } + return -1.0; +} + +fn sqrt_approx_inner(x: f32, guess: f32, iter: u32) -> f32 { + if (iter >= 20) { + return guess; + } + let next = 0.5 * (guess + x / guess); + return sqrt_approx_inner(x, next, iter + 1); +} + +fn sqrt_approx(x: f32) -> f32 { + if (x <= 0.0) { + return 0.0; + } + return sqrt_approx_inner(x, 1.0, 0); +} + +// ============================================================================ +// 4. CORDIC Core +// ============================================================================ + +// Precomputed CORDIC gain factor K for the given iteration count. +// K = product_{i=0}^{iterations-1} cos(arctan(2^-i)) +// cos(arctan(x)) = 1 / sqrt(1 + x^2) +fn cordic_gain(iterations: u32) -> f32 { + return cordic_gain_inner(0, iterations, 1.0); +} + +fn cordic_gain_inner(i: u32, n: u32, acc: f32) -> f32 { + if (i >= n) { + return acc; + } + let p = pow2_neg_entry(i as u8); + let p2 = p * p; + let denom = 1.0 + p2; + let cos_val = 1.0 / sqrt_approx(denom); + return cordic_gain_inner(i + 1, n, acc * cos_val); +} + +// CORDIC rotation mode: returns ([sin], [cos]) for a single angle. +// Uses recursive shift-add: +// x[i+1] = x[i] - sign(z) * (y[i] * pow2_neg[i]) +// y[i+1] = y[i] + sign(z) * (x[i] * pow2_neg[i]) +// z[i+1] = z[i] - sign(z) * arctan(2^-i) +fn cordic_sin_cos(angle: f32, iterations: u8) -> ([]f32, []f32) { + let gain = cordic_gain(iterations); + let (s, c) = cordic_inner(gain, 0.0, angle, 0, iterations); + return ([s], [c]); +} + +fn cordic_inner(x: f32, y: f32, z: f32, i: u8, n: u8) -> (f32, f32) { + if (i >= n) { + return (x, y); + } + let sigma = cordic_sign(z); + let x_next = x - sigma * y * pow2_neg_entry(i); + let y_next = y + sigma * x * pow2_neg_entry(i); + let z_next = z - sigma * arctan_table_entry(i); + return cordic_inner(x_next, y_next, z_next, i + 1, n); +} + +fn cordic_outputs_in_bounds(angle: f32, iters: u8) -> bool { + let (s_arr, c_arr) = cordic_sin_cos(angle, iters); + if (s_arr[0] < -1.1) { return false; } + if (s_arr[0] > 1.1) { return false; } + if (c_arr[0] < -1.1) { return false; } + if (c_arr[0] > 1.1) { return false; } + return true; +} + +fn cordic_sin_near_zero(angle: f32, iters: u8) -> bool { + let (s_arr, c_arr) = cordic_sin_cos(angle, iters); + if (s_arr[0] > -0.02) { + if (s_arr[0] < 0.02) { + return true; + } + } + return false; +} + +fn cordic_cos_near_one(angle: f32, iters: u8) -> bool { + let (s_arr, c_arr) = cordic_sin_cos(angle, iters); + if (c_arr[0] > 0.98) { + if (c_arr[0] < 1.02) { + return true; + } + } + return false; +} + +fn cordic_sin_near_one(angle: f32, iters: u8) -> bool { + let (s_arr, c_arr) = cordic_sin_cos(angle, iters); + if (s_arr[0] > 0.98) { + if (s_arr[0] < 1.02) { + return true; + } + } + return false; +} + +fn cordic_cos_near_zero(angle: f32, iters: u8) -> bool { + let (s_arr, c_arr) = cordic_sin_cos(angle, iters); + if (c_arr[0] > -0.02) { + if (c_arr[0] < 0.02) { + return true; + } + } + return false; +} + +// ============================================================================ +// 5. Tests +// ============================================================================ + +test cordic_sin_negative_angle + given angle = -0.7853981633974483 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] < 0.0 + +test cordic_gain_magnitude + given angle = 0.7853981633974483 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then (s_arr[0] * s_arr[0] + c_arr[0] * c_arr[0]) > 0.95 + +test cordic_cos_boundary_pi + given angle = 3.141592653589793 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] < 0.05 + +test cordic_angle_range_pi_over_4 + given angle = 0.7853981633974483 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] > 0.6 + +test cordic_cos_zero + given angle = 0.0 + given iters = 8 + when ok = cordic_cos_near_one(angle, iters) + then ok == true + +test cordic_sin_half_pi + given angle = 1.5707963267948966 + given iters = 8 + when ok = cordic_sin_near_one(angle, iters) + then ok == true + +test cordic_cos_half_pi + given angle = 1.5707963267948966 + given iters = 8 + when ok = cordic_cos_near_zero(angle, iters) + then ok == true + +test cordic_small_angle_approx + given angle = 0.01 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] > 0.005 && s_arr[0] < 0.015 + +test cordic_large_angle_wrap + given angle = 6.283185307179586 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] > -0.1 && s_arr[0] < 0.1 + +test cordic_iterative_convergence + given angle = 0.7853981633974483 + when (s1, c1) = cordic_sin_cos(angle, 4) + when (s2, c2) = cordic_sin_cos(angle, 12) + then s2[0] > s1[0] - 0.05 && s2[0] < s1[0] + 0.05 + +test cordic_sin_zero_returns_zero + given angle = 0.0 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] > -0.01 && s_arr[0] < 0.01 + +test cordic_cos_zero_returns_one + given angle = 0.0 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then c_arr[0] > 0.99 && c_arr[0] < 1.01 + +test cordic_cos_negative_angle + given angle = -0.7853981633974483 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then c_arr[0] > 0.6 + +test cordic_gain_monotonic + given angle = 0.7853981633974483 + when (s1, c1) = cordic_sin_cos(angle, 4) + when (s2, c2) = cordic_sin_cos(angle, 12) + then (s2[0] * s2[0] + c2[0] * c2[0]) > (s1[0] * s1[0] + c1[0] * c1[0]) + +test cordic_sin_zero + given angle = 0.0 + given iters = 8 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s[0]) < 0.01 + +test cordic_cos_zero_2 + given angle = 0.0 + given iters = 8 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(c[0] - 1.0) < 0.01 + +test cordic_sin_quarter_pi + given angle = 0.7853981633974483 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s[0] - 0.70710678) < 0.01 + +test cordic_cos_quarter_pi + given angle = 0.7853981633974483 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(c[0] - 0.70710678) < 0.01 + +test cordic_sin_half_pi_2 + given angle = 1.5707963267948966 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s[0] - 1.0) < 0.01 + +test cordic_cos_half_pi_2 + given angle = 1.5707963267948966 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(c[0] - 0.0) < 0.01 + +test cordic_sqrt_approx_perfect_square + given x = 16.0 + when r = sqrt_approx(x) + then r > 3.99 && r < 4.01 + +test cordic_sign_large_positive + given z = 1000.0 + when s = cordic_sign(z) + then s == 1.0 + +// ============================================================================ +// 6. Invariants +// ============================================================================ + +invariant cordic_arctan_table_entry_nonnegative + forall i : u8 + arctan_table_entry(i) >= 0.0 + + invariant cordic_result_bounded: forall c : Cordic, abs(c.result) <= 1.0 +bench cordic_iteration_converges: |result - target| < epsilon +invariant cordic_phi_approx_positive: + assert 1.618 > 0.0 + +invariant cordic_output_bounded + forall angle : f32, iters : u8 + cordic_outputs_in_bounds(angle, iters) + +// ============================================================================ +// 7. Benchmarks +// ============================================================================ + +invariant cordic_iterations_positive: forall c : Cordic, c.iterations > 0 + +invariant cordic_arctan_table_monotonic: + forall i : u8, i > 0 && i < 16 ==> arctan_table_entry(i) < arctan_table_entry(i - 1) + +invariant cordic_gain_positive: + forall n : u8, n > 0 && n <= 16 ==> cordic_gain(n) > 0.5 && cordic_gain(n) < 0.7 +bench cordic_latency_16 + given angle = 0.7853981633974483 + given iters = 16 + measure cordic_sin_cos(angle, iters) + target latency_us < 5.0 + +bench cordic_latency_8 + given angle = 0.39269908169872414 + given iters = 8 + measure cordic_sin_cos(angle, iters) + target latency_us < 2.5 + +test cordic_rot_mode_identity + given angle = 0.0 + given iters = 8 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s[0]) < 0.01 && abs_f32(c[0] - 1.0) < 0.01 + +test cordic_vec_mode_zero_y + given angle = 0.0 + given iters = 8 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s[0]) < 0.01 + +test cordic_gain_positive + given iters = 8 + when g = cordic_gain(iters) + then g > 0.0 && g < 1.0 + +test cordic_sin_quarter_pi_approx + given angle = 0.785398163 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s - 0.7071) < 0.01 + +test cordic_cos_half_pi_small + given angle = 1.57079632679 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(c) < 0.05 + +test cordic_gain_increases_with_iters + given g1 = cordic_gain(8) + given g2 = cordic_gain(12) + then g2 > g1 + +test cordic_sin_zero_exact + given angle = 0.0 + given iters = 8 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s) < 0.01 + +test cordic_cos_quarter_pi_approx + given angle = 0.7853981633974483 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(c - 0.7071) < 0.01 + +test cordic_sin_near_pi + given angle = 3.141592653589793 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(s) < 0.05 + +test cordic_cos_half_pi_approx + given angle = 1.57079632679 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then abs_f32(c) < 0.05 + +test cordic_gain_8_vs_16 + given g1 = cordic_gain(8) + given g2 = cordic_gain(16) + then g2 > g1 && g2 < 0.61 + +test cordic_gain_zero_iterations + given iters = 0 + when g = cordic_gain(iters) + then g == 1.0 + +test cordic_sqrt_approx_zero + given x = 0.0 + when r = sqrt_approx(x) + then r == 0.0 + +test cordic_sin_cos_zero_iterations + given angle = 0.7853981633974483 + given iters = 0 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] == 0.0 && c_arr[0] == 1.0 + +test cordic_sqrt_approx_large_input + given x = 1000000.0 + when r = sqrt_approx(x) + then r > 999.0 && r < 1001.0 + +test cordic_sqrt_approx_negative_boundary + given x = -1.0 + when r = sqrt_approx(x) + then r == 0.0 + +test cordic_sign_zero_is_positive_one + given z = 0.0 + when s = cordic_sign(z) + then s == 1.0 + +test cordic_arctan_table_entry_overflow_index + given i = 255 + when val = arctan_table_entry(i) + then val == 0.0 + +test cordic_sqrt_approx_very_small_positive + given x = 0.000001 + when r = sqrt_approx(x) + then r > 0.0 && r < 0.01 + +test cordic_pow2_neg_entry_boundary_16 + given i = 16 + when val = pow2_neg_entry(i) + then val == 0.0 + +test cordic_sign_negative_zero + given z = -0.0 + when s = cordic_sign(z) + then s == 1.0 + +test cordic_inner_zero_iterations + given x = 1.0 + given y = 0.0 + given z = 0.5 + given i = 0 + given n = 0 + when (nx, ny) = cordic_inner(x, y, z, i, n) + then nx == 1.0 && ny == 0.0 + +test cordic_outputs_in_bounds_extreme_positive + given angle = 100.0 + given iters = 12 + when ok = cordic_outputs_in_bounds(angle, iters) + then ok == true + +test cordic_arctan_table_entry_last_valid + given i = 15 + when val = arctan_table_entry(i) + then val > 0.0 && val < 0.0001 + +test cordic_gain_one_iteration + given iters = 1 + when g = cordic_gain(iters) + then abs_f32(g - 0.7071) < 0.01 + +test cordic_sin_near_zero_exact_zero + given angle = 0.0 + given iters = 8 + when ok = cordic_sin_near_zero(angle, iters) + then ok == true + +test cordic_cos_near_zero_exact_pi_half + given angle = 1.5707963267948966 + given iters = 8 + when ok = cordic_cos_near_zero(angle, iters) + then ok == true + +test cordic_sqrt_approx_unity + given x = 1.0 + when r = sqrt_approx(x) + then r > 0.99 && r < 1.01 + +test cordic_pow2_neg_entry_zero + given i = 0 + when val = pow2_neg_entry(i) + then val == 1.0 + +test cordic_sqrt_approx_four + given x = 4.0 + when r = sqrt_approx(x) + then r > 1.99 && r < 2.01 + +test cordic_arctan_table_entry_zero + given i = 0 + when val = arctan_table_entry(i) + then val > 0.78 && val < 0.79 + +test cordic_pow2_neg_entry_one + given i = 1 + when val = pow2_neg_entry(i) + then val == 0.5 + +test cordic_gain_value + when g = cordic_gain() + then g > 0.6 && g < 0.61 + +test cordic_sqrt_approx_nine + given x = 9.0 + when r = sqrt_approx(x) + then r > 2.99 && r < 3.01 + +test cordic_arctan_table_entry_one + given i = 1 + when val = arctan_table_entry(i) + then val > 0.46 && val < 0.47 + +test cordic_sqrt_approx_one + given x = 1.0 + when r = sqrt_approx(x) + then r > 0.99 && r < 1.01 + +test cordic_pow2_neg_entry_two + given i = 2 + when val = pow2_neg_entry(i) + then val == 0.25 + +test cordic_sin_exact_pi + given angle = 3.141592653589793 + given iters = 12 + when s = cordic_sin(angle, iters) + then abs_f32(s) < 0.01 + +test cordic_gain_16_iterations + given iters = 16 + when g = cordic_gain(iters) + then abs_f32(g - 0.607253) < 0.001 + +test cordic_sqrt_approx_two + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.41 && r < 1.42 + +test cordic_arctan_table_entry_boundary + given i = 15 + when val = arctan_table_entry(i) + then val > 0.0 && val < 0.001 + + +test cordic_sin_small_angle + given angle = 0.001 + given iters = 12 + when s = cordic_sin(angle, iters) + then s > 0.0 && s < 0.002 + + +test cordic_arctan_table_entry_first + given i = 0 + when val = arctan_table_entry(i) + then val > 0.78 && val < 0.79 + + +test cordic_arctan_table_entry_second + given i = 1 + when val = arctan_table_entry(i) + then val > 0.46 && val < 0.47 + + +test cordic_arctan_table_entry_fifth + given i = 4 + when val = arctan_table_entry(i) + then val > 0.03 && val < 0.04 + +test cordic_arctan_table_entry_max + given i = 15 + when val = arctan_table_entry(i) + then val > 0.0 && val < 0.001 + +test cordic_arctan_table_entry_first_2 + given i = 1 + when val = arctan_table_entry(i) + then val > 0.46 && val < 0.47 + +test cordic_gain_boundary + given g = cordic_gain(16) + then g > 0.6073 && g < 0.6074 + + + +test cordic_arctan_table_entry_mid + given i = 7 + when val = arctan_table_entry(i) + then val > 0.007 && val < 0.008 + + +test cordic_arctan_table_entry_two + given i = 2 + when val = arctan_table_entry(i) + then val > 0.24 && val < 0.25 + +test cordic_sin_cos_large_positive_angle + given angle = 10.0 + given iters = 12 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] > -1.1 && s_arr[0] < 1.1 && c_arr[0] > -1.1 && c_arr[0] < 1.1 + +test cordic_pow2_neg_entry_monotonic + given i = 3 + when val = pow2_neg_entry(i) + then val < pow2_neg_entry(2) + +test cordic_arctan_table_entry_sixteen + given i = 16 + when val = arctan_table_entry(i) + then val > 0.0 && val < 0.0001 + +test cordic_gain_small_iters + given g1 = cordic_gain(1) + given g2 = cordic_gain(2) + when ok = g2 < g1 + then ok == true + +test cordic_sin_cos_half_pi_approx + given angle = 1.5707963267948966 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then s[0] > 0.9 && s[0] < 1.1 && c[0] > -0.2 && c[0] < 0.2 + +test cordic_arctan_table_entry_monotonic + given i = 1 + when v1 = arctan_table_entry(i) + when v2 = arctan_table_entry(i + 1) + then v2 < v1 + +invariant cordic_gain_positive: + forall iters : u8 + iters > 0 && iters <= 16 ==> cordic_gain(iters) > 0.0 + +invariant cordic_pythagorean_identity + forall angle : f32, iters : u8 + let (s, c) = cordic_sin_cos(angle, iters) + s[0] * s[0] + c[0] * c[0] > 0.95 && s[0] * s[0] + c[0] * c[0] < 1.05 + +test cordic_sin_three_quarter_pi + given angle = 2.356194490192345 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then s[0] > 0.6 && s[0] < 0.8 + +test cordic_cos_three_quarter_pi + given angle = 2.356194490192345 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then c[0] < -0.6 && c[0] > -0.8 + +test cordic_sin_cos_zero_angle + given angle = 0.0 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then s[0] > -0.01 && s[0] < 0.01 && c[0] > 0.6 && c[0] < 0.61 + +test cordic_sin_cos_pi_over_four + given angle = 0.7853981633974483 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then s[0] > 0.5 && s[0] < 0.9 && c[0] > 0.5 && c[0] < 0.9 + +test cordic_sqrt_approx_sixteen + given x = 16.0 + when y = sqrt_approx(x) + then y > 3.9 && y < 4.1 + +test cordic_arctan_table_zero_entry + given i = 0 + when val = arctan_table_entry(i) + then val > 0.78 && val < 0.79 + +test cordic_arctan_table_first_entry + given i = 1 + when val = arctan_table_entry(i) + then val > 0.46 && val < 0.47 + +test cordic_pow2_neg_first_entry + given i = 1 + when val = pow2_neg_entry(i) + then val == 0.5 + +invariant cordic_sin_cos_bounds + forall angle : f32, iters : u8 + let (s_arr, c_arr) = cordic_sin_cos(angle, iters) + s_arr[0] >= -1.1 && s_arr[0] <= 1.1 && c_arr[0] >= -1.1 && c_arr[0] <= 1.1 + +invariant cordic_arctan_table_entry_positive + forall i : u8 + i < 16 ==> arctan_table_entry(i) > 0.0 + +invariant cordic_gain_monotonic_decrease + forall i1 : u8, i2 : u8 + i1 > 0 && i2 > 0 && i1 < i2 && i2 <= 16 ==> + cordic_gain(i1) > cordic_gain(i2) + +invariant cordic_sqrt_approx_nonnegative + forall x : f32 + x >= 0.0 ==> sqrt_approx(x) >= 0.0 + +invariant cordic_arctan_table_monotonic_decrease + forall i1 : u8, i2 : u8 + i1 < i2 && i2 < 16 ==> arctan_table_entry(i1) > arctan_table_entry(i2) + +test cordic_sqrt_approx_one_half + given x = 0.5 + when r = sqrt_approx(x) + then r > 0.70 && r < 0.71 + +test cordic_pow2_neg_entry_monotonic_3_4 + given v1 = pow2_neg_entry(3) + given v2 = pow2_neg_entry(4) + then v2 < v1 && v2 > 0.06 + +invariant cordic_pow2_neg_entry_monotonic_all + forall i1 : u8, i2 : u8 + i1 < i2 && i2 < 16 ==> pow2_neg_entry(i1) > pow2_neg_entry(i2) + +test cordic_sin_cos_pi_over_2_approx + given angle = 1.5707963267948966 + given iters = 12 + when (s, c) = cordic_sin_cos(angle, iters) + then s[0] > 0.98 && s[0] < 1.02 && c[0] > -0.02 && c[0] < 0.02 + +test cordic_gain_16_iterations_approx + given iters = 16 + when g = cordic_gain(iters) + then g > 0.607 && g < 0.608 + +test cordic_pow2_neg_entry_0_is_one + given i = 0 + when v = pow2_neg_entry(i) + then v == 1.0 + +test cordic_pow2_neg_entry_1_is_half + given i = 1 + when v = pow2_neg_entry(i) + then v == 0.5 + +invariant cordic_pow2_neg_entry_bounded: + forall i : u8 + pow2_neg_entry(i) > 0.0 && pow2_neg_entry(i) <= 1.0 + +invariant cordic_sin_cos_pi_over_2_inv + forall iters : u8 + iters >= 8 && iters <= 16 ==> + let (s, c) = cordic_sin_cos(1.5707963267948966, iters) + s[0] > 0.98 && s[0] < 1.02 && c[0] > -0.02 && c[0] < 0.02 + +test cordic_pow2_neg_entry_2_is_quarter + given i = 2 + when v = pow2_neg_entry(i) + then v == 0.25 + +test cordic_gain_8_iterations_approx + given iters = 8 + when g = cordic_gain(iters) + then g > 0.607 && g < 0.608 + +invariant cordic_gain_bounded + forall iters : u8 + iters >= 1 && iters <= 16 ==> + cordic_gain(iters) > 0.6 && cordic_gain(iters) < 0.65 + +test cordic_pow2_neg_entry_3_is_eighth + given i = 3 + when v = pow2_neg_entry(i) + then v == 0.125 + +test cordic_sin_cos_zero + given angle = 0.0 + given iters = 8 + when result = cordic_sin_cos(angle, iters) + then result.sin[0] > -0.01 && result.sin[0] < 0.01 && result.cos[0] > 0.99 && result.cos[0] < 1.01 + +invariant cordic_sin_cos_zero_inv + forall iters : u8 + iters >= 8 && iters <= 16 ==> + let result = cordic_sin_cos(0.0, iters) + result.sin[0] > -0.02 && result.sin[0] < 0.02 && result.cos[0] > 0.98 && result.cos[0] < 1.02 + +test cordic_arctan_table_entry_0_is_pi_over_4 + given i = 0 + when v = arctan_table_entry(i) + then v > 0.78 && v < 0.79 + +test cordic_sin_cos_pi_over_2_approx_2 + given angle = 1.5707963267948966 + given iters = 8 + when result = cordic_sin_cos(angle, iters) + then result.sin[0] > 0.98 && result.sin[0] < 1.02 && result.cos[0] > -0.02 && result.cos[0] < 0.02 + +invariant cordic_arctan_table_entry_0_pi_over_4_inv: + arctan_table_entry(0) > 0.78 + && arctan_table_entry(0) < 0.79 + +test cordic_gain_max_iterations + given iters = 16 + when g = cordic_gain(iters) + then g > 0.607 && g < 0.608 + + +invariant cordic_pow2_neg_entry_0_is_one_inv: + pow2_neg_entry(0) == 1.0 + + +test cordic_arctan_table_entry_1 + given i = 1 + when v = arctan_table_entry(i) + then v > 0.46 && v < 0.47 + +invariant cordic_gain_zero_iterations_inv: + cordic_gain(0) == 1.0 + +test cordic_arctan_table_entry_2 + given i = 2 + when v = arctan_table_entry(i) + then v > 0.24 && v < 0.25 + +test cordic_pow2_neg_entry_1 + given i = 1 + when v = pow2_neg_entry(i) + then v == 0.5 + +invariant cordic_pow2_neg_entry_1_half_inv: + pow2_neg_entry(1) == 0.5 + +test cordic_pow2_neg_entry_4_sixteenth + given i = 4 + when v = pow2_neg_entry(i) + then v == 0.0625 + +test cordic_arctan_table_entry_5 + given i = 5 + when v = arctan_table_entry(i) + then v > 0.03 && v < 0.032 + +invariant cordic_pow2_neg_entry_4_sixteenth_inv: + pow2_neg_entry(4) == 0.0625 + +test cordic_pow2_neg_entry_5_thirtysecond + given i = 5 + when v = pow2_neg_entry(i) + then v == 0.03125 + +test cordic_arctan_table_entry_3_bounds + given i = 3 + when v = arctan_table_entry(i) + then v > 0.12 && v < 0.13 + +invariant cordic_pow2_neg_entry_5_thirtysecond_inv: + pow2_neg_entry(5) == 0.03125 + +test cordic_pow2_neg_entry_6_sixtyfourth + given i = 6 + when v = pow2_neg_entry(i) + then v == 0.015625 + +test cordic_arctan_table_entry_6 + given i = 6 + when v = arctan_table_entry(i) + then v > 0.015 && v < 0.016 + +invariant cordic_pow2_neg_entry_6_sixtyfourth_inv: + pow2_neg_entry(6) == 0.015625 + +test cordic_pow2_neg_entry_7_onetwentyeighth + given i = 7 + when v = pow2_neg_entry(i) + then v == 0.0078125 + +test cordic_sin_zero_exact_2 + given angle = 0.0 + given iters = 8 + when (s_arr, c_arr) = cordic_sin_cos(angle, iters) + then s_arr[0] > -0.001 && s_arr[0] < 0.001 + +invariant cordic_pow2_neg_entry_7_onetwentyeighth_inv: + pow2_neg_entry(7) == 0.0078125 + +test cordic_inner_one_iteration + given x = 1.0 + given y = 0.0 + given z = 0.5 + given i = 0 + given n = 1 + when (nx, ny) = cordic_inner(x, y, z, i, n) + then nx == 1.0 && ny == 1.0 + +test cordic_pow2_neg_entry_8 + given i = 8 + when v = pow2_neg_entry(i) + then v == 0.00390625 + +invariant cordic_sign_unit_magnitude_inv: + forall z : f32 + cordic_sign(z) == 1.0 || cordic_sign(z) == -1.0 + +test cordic_pow2_neg_entry_0_one + given i = 0 + when v = pow2_neg_entry(i) + then v == 1.0 + +test cordic_inner_zero_angle_identity + given x = 1.0 + given y = 0.0 + given z = 0.0 + given i = 0 + given n = 1 + when (nx, ny) = cordic_inner(x, y, z, i, n) + then nx == 1.0 && ny == 0.0 + +invariant cordic_pow2_neg_entry_0_one_inv: + pow2_neg_entry(0) == 1.0 + +test cordic_sign_negative_input + given z = -3.14 + when s = cordic_sign(z) + then s == -1.0 + +invariant cordic_sign_negative_inv: + forall z : f32 + z < 0.0 ==> cordic_sign(z) == -1.0 + +test cordic_sin_cos_negative_angle_symmetry + given angle = 0.5 + given iters = 12 + when (s1, c1) = cordic_sin_cos(angle, iters) + when (s2, c2) = cordic_sin_cos(-angle, iters) + then s2[0] > -s1[0] - 0.02 && s2[0] < -s1[0] + 0.02 && c2[0] > c1[0] - 0.02 && c2[0] < c1[0] + 0.02 + +invariant cordic_sin_cos_negative_angle_symmetry_inv: + forall angle : f32, iters : u8 + iters >= 8 && iters <= 16 ==> + let (s1, c1) = cordic_sin_cos(angle, iters) + let (s2, c2) = cordic_sin_cos(-angle, iters) + s2[0] > -s1[0] - 0.02 && s2[0] < -s1[0] + 0.02 && c2[0] > c1[0] - 0.02 && c2[0] < c1[0] + 0.02 + +test cordic_inner_small_angle_cos_approx + given x = 1.0 + given y = 0.0 + given z = 0.001 + given i = 0 + given n = 10 + when (nx, ny) = cordic_inner(x, y, z, i, n) + then nx > 0.999 && nx < 1.001 + +invariant cordic_inner_small_angle_cos_approx_inv: + forall x : f32, y : f32, z : f32 + z > 0.0 && z < 0.01 ==> + let (nx, _) = cordic_inner(x, y, z, 0, 10) + nx > 0.99 + +test cordic_sign_positive_input + given z = 3.14 + when s = cordic_sign(z) + then s == 1.0 + +test cordic_cordic_inner_large_angle_bounds + given x = 1.0 + given y = 0.0 + given z = 1.5 + given i = 0 + given n = 10 + when (nx, ny) = cordic_inner(x, y, z, i, n) + then nx > -1.0 && nx < 1.0 + +invariant cordic_sign_positive_input_inv: + forall z : f32 + z > 0.0 ==> cordic_sign(z) == 1.0 + +test cordic_sqrt_approx_zero_zero + given x = 0.0 + when r = sqrt_approx(x) + then r == 0.0 + +test cordic_sqrt_approx_one_one + given x = 1.0 + when r = sqrt_approx(x) + then r == 1.0 + +invariant cordic_sqrt_approx_zero_zero_inv: + sqrt_approx(0.0) == 0.0 + +test cordic_sqrt_approx_zero_zero_output_w294 + given x = 0.0 + when r = sqrt_approx(x) + then r == 0.0 + +test cordic_sqrt_approx_one_one_output_w294 + given x = 1.0 + when r = sqrt_approx(x) + then r == 1.0 + +invariant cordic_sqrt_approx_zero_zero_output_w294_inv: + sqrt_approx(0.0) == 0.0 + +test cordic_sqrt_approx_four_two_w295 + given x = 4.0 + when r = sqrt_approx(x) + then r > 1.9 && r < 2.1 + +test cordic_sqrt_approx_nine_three_w295 + given x = 9.0 + when r = sqrt_approx(x) + then r > 2.9 && r < 3.1 + +invariant cordic_sqrt_approx_four_approx_two_w295_inv: + sqrt_approx(4.0) > 1.9 && sqrt_approx(4.0) < 2.1 + +test cordic_sqrt_approx_sixteen_four_w296 + given x = 16.0 + when r = sqrt_approx(x) + then r > 3.9 && r < 4.1 + +test cordic_sqrt_approx_twentyfive_five_w296 + given x = 25.0 + when r = sqrt_approx(x) + then r > 4.9 && r < 5.1 + +invariant cordic_sqrt_approx_sixteen_four_w296_inv: + sqrt_approx(16.0) > 3.9 && sqrt_approx(16.0) < 4.1 + +test cordic_sqrt_approx_hundred_ten_w297 + given x = 100.0 + when r = sqrt_approx(x) + then r > 9.9 && r < 10.1 + +test cordic_sqrt_approx_two_approx_sqrt2_w297 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_hundred_ten_w297_inv: + sqrt_approx(100.0) > 9.9 && sqrt_approx(100.0) < 10.1 + +test cordic_sqrt_approx_half_approx_sqrt_half_w298 + given x = 0.5 + when r = sqrt_approx(x) + then r > 0.6 && r < 0.8 + +test cordic_sqrt_approx_zero_zero_exact_w298 + given x = 0.0 + when r = sqrt_approx(x) + then r == 0.0 + +invariant cordic_sqrt_approx_zero_zero_exact_w298_inv: + sqrt_approx(0.0) == 0.0 + +test cordic_sqrt_approx_one_exact_w299 + given x = 1.0 + when r = sqrt_approx(x) + then r == 1.0 + +test cordic_sqrt_approx_quarter_approx_half_w299 + given x = 0.25 + when r = sqrt_approx(x) + then r > 0.49 && r < 0.51 + +invariant cordic_sqrt_approx_one_exact_w299_inv: + sqrt_approx(1.0) == 1.0 + +test cordic_sqrt_approx_two_approx_sqrt_two_w300 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.41 && r < 1.42 + +test cordic_sqrt_approx_four_two_exact_w300 + given x = 4.0 + when r = sqrt_approx(x) + then r == 2.0 + +invariant cordic_sqrt_approx_four_two_exact_w300_inv: + sqrt_approx(4.0) == 2.0 + +test cordic_sqrt_approx_nine_three_exact_w301 + given x = 9.0 + when r = sqrt_approx(x) + then r == 3.0 + +test cordic_sqrt_approx_sixteen_four_exact_w301 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +invariant cordic_sqrt_approx_nine_three_exact_w301_inv: + sqrt_approx(9.0) == 3.0 + +test cordic_sqrt_approx_zero_point_two_five_w302 + given x = 0.0625 + when r = sqrt_approx(x) + then r > 0.24 && r < 0.26 + +test cordic_sqrt_approx_sixteen_four_w302 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +invariant cordic_sqrt_approx_sixteen_four_w302_inv: + sqrt_approx(16.0) == 4.0 + +test cordic_sqrt_approx_one_exact_w303 + given x = 1.0 + when r = sqrt_approx(x) + then r == 1.0 + +test cordic_sqrt_approx_hundred_ten_w303 + given x = 100.0 + when r = sqrt_approx(x) + then r > 9.9 && r < 10.1 + +invariant cordic_sqrt_approx_one_exact_w303_inv: + sqrt_approx(1.0) == 1.0 + +test cordic_sqrt_approx_nine_three_w304 + given x = 9.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 2.9 && result <= 3.1 + +test cordic_sqrt_approx_sixteen_four_w304 + given x = 16.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 3.9 && result <= 4.1 + +invariant cordic_sqrt_approx_nine_three_w304_inv: + cordic_sqrt_approx(9.0, 8) >= 2.9 + +test cordic_sqrt_approx_twentyfive_five_w305 + given x = 25.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 4.9 && result <= 5.1 + +test cordic_sqrt_approx_one_one_w305 + given x = 1.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 0.9 && result <= 1.1 + +invariant cordic_sqrt_approx_twentyfive_five_w305_inv: + cordic_sqrt_approx(25.0, 8) >= 4.9 + +test cordic_sqrt_approx_sixteen_four_exact_w306 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w306 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w306_inv: + sqrt_approx(16.0) == 4.0 + +test cordic_sqrt_approx_sixtyfour_eight_w307 + given x = 64.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 7.9 && result <= 8.1 + +test cordic_sqrt_approx_ten_approx_three_w307 + given x = 10.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 3.1 && result <= 3.3 + +invariant cordic_sqrt_approx_sixtyfour_eight_w307_inv: + cordic_sqrt_approx(64.0, 8) >= 7.9 + +test cordic_sqrt_approx_hundred_ten_w308 + given x = 100.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 9.9 && result <= 10.1 + +test cordic_sqrt_approx_two_approx_one_four_w308 + given x = 2.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 1.3 && result <= 1.5 + +invariant cordic_sqrt_approx_hundred_ten_w308_inv: + cordic_sqrt_approx(100.0, 8) >= 9.9 +test cordic_sqrt_approx_hundred_ten_w309 + given x = 100.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 9.9 && result <= 10.1 + +test cordic_sqrt_approx_two_approx_one_four_w309 + given x = 2.0 + given iterations = 8 + when result = cordic_sqrt_approx(x, iterations) + then result >= 1.3 && result <= 1.5 + +invariant cordic_sqrt_approx_hundred_ten_w309_inv: + cordic_sqrt_approx(100.0, 8) >= 9.9 + + +test cordic_sqrt_approx_sixteen_four_exact_w309 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w309 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w309_inv: + sqrt_approx(16.0) == 4.0 + + +invariant cordic_sqrt_approx_sixteen_four_exact_w309_inv: + sqrt_approx(16.0) == 4.0 + +test cordic_sqrt_approx_sixteen_four_exact_w310 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w310 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w310_inv: + sqrt_approx(16.0) == 4.0 + + +test cordic_sqrt_approx_sixteen_four_exact_w311 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w311 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w311_inv: + sqrt_approx(16.0) == 4.0 + + + + + +invariant cordic_sqrt_approx_sixteen_four_exact_w311_inv: + sqrt_approx(16.0) == 4.0 + + + + +test cordic_sqrt_approx_sixteen_four_exact_w312 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w312 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w312_inv: + sqrt_approx(16.0) == 4.0 + + + + +test cordic_sqrt_approx_sixteen_four_exact_w313 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w313 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w313_inv: + sqrt_approx(16.0) == 4.0 + + + + + +test cordic_sqrt_approx_sixteen_four_exact_w314 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w314 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w314_inv: + sqrt_approx(16.0) == 4.0 + + + + + + +test cordic_sqrt_approx_sixteen_four_exact_w315 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w315 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w315_inv: + sqrt_approx(16.0) == 4.0 + + + + + + + +test cordic_sqrt_approx_sixteen_four_exact_w316 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w316 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w316_inv: + sqrt_approx(16.0) == 4.0 + + + + + + + + +test cordic_sqrt_approx_sixteen_four_exact_w317 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w317 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w317_inv: + sqrt_approx(16.0) == 4.0 + + + + + + + + + +test cordic_sqrt_approx_sixteen_four_exact_w318 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w318 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w318_inv: + sqrt_approx(16.0) == 4.0 + + + + + + + + + + +test cordic_sqrt_approx_sixteen_four_exact_w319 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w319 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w319_inv: + sqrt_approx(16.0) == 4.0 + + + + + + + + + + + +test cordic_sqrt_approx_sixteen_four_exact_w320 + given x = 16.0 + when r = sqrt_approx(x) + then r == 4.0 + +test cordic_sqrt_approx_two_five_approx_one_four_w320 + given x = 2.0 + when r = sqrt_approx(x) + then r > 1.3 && r < 1.5 + +invariant cordic_sqrt_approx_sixteen_four_exact_w320_inv: + sqrt_approx(16.0) == 4.0 +// Wave Loop 321 — Pool A depth +1 (64→65) +test cordic_w321_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w321_depth_065: true + +test cordic_w322_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w322_depth_065: true + +// Wave Loop 323 — Pool A depth +1 (66→67) +test cordic_w323_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w323_depth_067: true +// Wave Loop 324 — Pool A depth +1 (67→68) +test cordic_w324_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w324_depth_068: true +// Wave Loop 325 — Pool A depth +1 (68→69) +test cordic_w325_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w325_depth_069: true +// Wave Loop 326 — Pool A depth +1 (69→70) +test cordic_w326_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w326_depth_070: true +// Wave Loop 327 — Pool A depth +1 (70→71) +test cordic_w327_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w327_depth_071: true +// Wave Loop 328 — Pool A depth +1 (71→72) +test cordic_w328_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w328_depth_072: true +test cordic_w329_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w329_depth_073: true +// Wave Loop 330 — Pool A depth +1 (73→74) +test cordic_w330_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w330_depth_074: true + +// Wave Loop 331 — Pool A depth +1 (74→75) +test cordic_w331_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w331_depth_075: true + +// Wave Loop 332 — Pool A depth +1 (75→76) +test cordic_w332_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w332_depth_076: true + +// Wave Loop 333 — Pool A depth +1 (76→77) +test cordic_w333_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w333_depth_077: true + +// Wave Loop 334 — Pool A depth +1 (77→78) +test cordic_w334_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w334_depth_078: true + +// Wave Loop 335 — Pool A depth +1 (78→79) +test cordic_w335_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w335_depth_079: true +// Wave Loop 336 — Pool A depth +1 (79→80) +test cordic_w336_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w336_depth_080: true + +// Wave Loop 337 — Pool A depth +1 (80→81) +test cordic_w337_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w337_depth_081: true + +// Wave Loop 338 — Pool A depth +1 (81→82) +test cordic_w338_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w338_depth_082: true + +// Wave Loop 339 — Pool A depth +1 (82→83) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test cordic_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test cordic_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (83→84) +test cordic_w340_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w340_depth_084: true + + +// Wave Loop 341 — Pool A depth +1 (84→85) +test cordic_w341_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w341_depth_085: true + + +// Wave Loop 342 -- Pool A depth +1 (85->86) +test cordic_w342_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w342_depth_086: true + +} + +invariant cordic_w339_depth_083: true +// Wave Loop 343 -- depth +1 (85->86) +test cordic_w343_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test cordic_w344_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_cordic_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test cordic_w345_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_cordic_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_cordic_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_cordic_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_cordic_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_cordic_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_cordic_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_cordic_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_cordic_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_cordic_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_cordic_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_cordic_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_cordic_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_cordic_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_cordic_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_cordic_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_cordic_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_cordic_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_cordic_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_cordic_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_cordic_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_cordic_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_cordic_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_cordic_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_cordic_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_cordic_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_cordic_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_cordic_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_cordic_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_cordic_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_cordic_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_cordic_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_cordic_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_cordic_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_cordic_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_cordic_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_cordic_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_cordic_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_cordic_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_cordic_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_cordic_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_cordic_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_cordic_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_cordic_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_cordic_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_cordic_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_cordic_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_cordic_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_cordic_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_cordic_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_cordic_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_cordic_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_cordic_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_cordic_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_cordic_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_cordic_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_cordic_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_cordic_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_cordic_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_cordic_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_cordic_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_cordic_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_cordic_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_cordic_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_cordic_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_cordic_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_cordic_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_cordic_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_cordic_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_cordic_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_cordic_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_cordic_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_cordic_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_cordic_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_cordic_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_cordic_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_cordic_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_cordic_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_cordic_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_cordic_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_cordic_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_cordic_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_cordic_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_cordic_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_cordic_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_cordic_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_cordic_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_cordic_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_cordic_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_cordic_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_cordic_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_cordic_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_cordic_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_cordic_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_cordic_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_cordic_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_cordic_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_cordic_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_cordic_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_cordic_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_cordic_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_cordic_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_cordic_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_cordic_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_cordic_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_cordic_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_cordic_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_cordic_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_cordic_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_cordic_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_cordic_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_cordic_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_cordic_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_cordic_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_cordic_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_cordic_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_cordic_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_cordic_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_cordic_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_cordic_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_cordic_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_cordic_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_cordic_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_cordic_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_cordic_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_cordic_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_cordic_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_cordic_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_cordic_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/cordic_fixed.t27 b/apps/website/public/t27/files/specs/igla/race/cordic_fixed.t27 new file mode 100644 index 0000000000..7f6a6273b2 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/cordic_fixed.t27 @@ -0,0 +1,2215 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/cordic_fixed.t27 +// CORDIC shift-add sin/cos in fixed-point Q15 (signed 16-bit) +// R-SI-1: zero * operators in RTL | phi^2 + 1/phi^2 = 3 | TRINITY +// +// Fixed-point convention: Q14 (1 sign + 14 fractional bits) +// Scale factor = 2^14 = 16384 +// All angles are NORMALIZED to [-1, 1] where 1.0 = PI radians. +// Thus angle PI/2 = 8192, PI/4 = 4096, etc. +// +// Precomputed CORDIC gain K = product(cos(arctan(2^-i))) for i=0..7 +// K ~ 0.607252935 -> Q14: round(0.607252935 * 16384) = 9953 +// +// UNROLLED to 8 iterations for combinational RTL. +// No loops, no recursion, no multiplication. + +module igla-race-cordic-fixed; +use base::types; + +// ============================================================================ +// 1. Constants (Q14 scale = 16384) +// ============================================================================ + +const CORDIC_GAIN_Q14 : i16 = 9953; // K ~ 0.607252935 + +// Arctan table in NORMALIZED units: arctan(2^-i) / PI * 16384 +const ATAN_0 : i16 = 4096; // arctan(1)/PI = 0.25 +const ATAN_1 : i16 = 2418; // arctan(0.5)/PI = 0.14758 +const ATAN_2 : i16 = 1274; // arctan(0.25)/PI +const ATAN_3 : i16 = 647; // arctan(0.125)/PI +const ATAN_4 : i16 = 325; // arctan(0.0625)/PI +const ATAN_5 : i16 = 163; // arctan(0.03125)/PI +const ATAN_6 : i16 = 81; // arctan(0.015625)/PI +const ATAN_7 : i16 = 41; // arctan(0.0078125)/PI + +// ============================================================================ +// 2. Helper: conditional shift-add (replaces sigma * (val >> i)) +// ============================================================================ + +fn cordic_x_next(x: i16, y: i16, z: i16, shift: u32) -> i16 { + if (z >= 0) { + return x - (y >> shift); + } else { + return x + (y >> shift); + } +} + +fn cordic_y_next(y: i16, x: i16, z: i16, shift: u32) -> i16 { + if (z >= 0) { + return y + (x >> shift); + } else { + return y - (x >> shift); + } +} + +fn cordic_z_next(z: i16, atan: i16) -> i16 { + if (z >= 0) { + return z - atan; + } else { + return z + atan; + } +} + +fn cordic_fixed_sin_cos_sum_squares(angle: i16) -> i32 { + let s = cordic_sin(angle) as i32; + let c = cordic_cos(angle) as i32; + return s * s + c * c; +} + +// ============================================================================ +// 3. Core: 8-iteration unrolled CORDIC -- returns sin +// ============================================================================ + +fn cordic_sin(angle: i16) -> i16 { + // Iteration 0 + let x0 : i16 = CORDIC_GAIN_Q14; + let y0 : i16 = 0; + let z0 : i16 = angle; + + let x1 : i16 = cordic_x_next(x0, y0, z0, 0); + let y1 : i16 = cordic_y_next(y0, x0, z0, 0); + let z1 : i16 = cordic_z_next(z0, ATAN_0); + + // Iteration 1 + let x2 : i16 = cordic_x_next(x1, y1, z1, 1); + let y2 : i16 = cordic_y_next(y1, x1, z1, 1); + let z2 : i16 = cordic_z_next(z1, ATAN_1); + + // Iteration 2 + let x3 : i16 = cordic_x_next(x2, y2, z2, 2); + let y3 : i16 = cordic_y_next(y2, x2, z2, 2); + let z3 : i16 = cordic_z_next(z2, ATAN_2); + + // Iteration 3 + let x4 : i16 = cordic_x_next(x3, y3, z3, 3); + let y4 : i16 = cordic_y_next(y3, x3, z3, 3); + let z4 : i16 = cordic_z_next(z3, ATAN_3); + + // Iteration 4 + let x5 : i16 = cordic_x_next(x4, y4, z4, 4); + let y5 : i16 = cordic_y_next(y4, x4, z4, 4); + let z5 : i16 = cordic_z_next(z4, ATAN_4); + + // Iteration 5 + let x6 : i16 = cordic_x_next(x5, y5, z5, 5); + let y6 : i16 = cordic_y_next(y5, x5, z5, 5); + let z6 : i16 = cordic_z_next(z5, ATAN_5); + + // Iteration 6 + let x7 : i16 = cordic_x_next(x6, y6, z6, 6); + let y7 : i16 = cordic_y_next(y6, x6, z6, 6); + let z7 : i16 = cordic_z_next(z6, ATAN_6); + + // Iteration 7 + let y8 : i16 = cordic_y_next(y7, x7, z7, 7); + + return y8; +} + +// ============================================================================ +// 4. Core: 8-iteration unrolled CORDIC -- returns cos +// ============================================================================ + +fn cordic_cos(angle: i16) -> i16 { + // Iteration 0 + let x0 : i16 = CORDIC_GAIN_Q14; + let y0 : i16 = 0; + let z0 : i16 = angle; + + let x1 : i16 = cordic_x_next(x0, y0, z0, 0); + let y1 : i16 = cordic_y_next(y0, x0, z0, 0); + let z1 : i16 = cordic_z_next(z0, ATAN_0); + + // Iteration 1 + let x2 : i16 = cordic_x_next(x1, y1, z1, 1); + let y2 : i16 = cordic_y_next(y1, x1, z1, 1); + let z2 : i16 = cordic_z_next(z1, ATAN_1); + + // Iteration 2 + let x3 : i16 = cordic_x_next(x2, y2, z2, 2); + let y3 : i16 = cordic_y_next(y2, x2, z2, 2); + let z3 : i16 = cordic_z_next(z2, ATAN_2); + + // Iteration 3 + let x4 : i16 = cordic_x_next(x3, y3, z3, 3); + let y4 : i16 = cordic_y_next(y3, x3, z3, 3); + let z4 : i16 = cordic_z_next(z3, ATAN_3); + + // Iteration 4 + let x5 : i16 = cordic_x_next(x4, y4, z4, 4); + let y5 : i16 = cordic_y_next(y4, x4, z4, 4); + let z5 : i16 = cordic_z_next(z4, ATAN_4); + + // Iteration 5 + let x6 : i16 = cordic_x_next(x5, y5, z5, 5); + let y6 : i16 = cordic_y_next(y5, x5, z5, 5); + let z6 : i16 = cordic_z_next(z5, ATAN_5); + + // Iteration 6 + let x7 : i16 = cordic_x_next(x6, y6, z6, 6); + let y7 : i16 = cordic_y_next(y6, x6, z6, 6); + let z7 : i16 = cordic_z_next(z6, ATAN_6); + + // Iteration 7 + let x8 : i16 = cordic_x_next(x7, y7, z7, 7); + + return x8; +} + +// ============================================================================ +// 5. Range checks +// ============================================================================ + +fn cordic_sin_in_range(angle: i16) -> bool { + let s = cordic_sin(angle); + if (s < -16384) { return false; } + else { + if (s > 16384) { return false; } + else { return true; } + } +} + +fn cordic_cos_in_range(angle: i16) -> bool { + let c = cordic_cos(angle); + if (c < -16384) { return false; } + else { + if (c > 16384) { return false; } + else { return true; } + } +} + +// ============================================================================ +// 6. Tests +// ============================================================================ + +// angle = 0 -> sin = 0, cos = 1.0 -> cos_q14 = 16384 +test cordic_sin_zero + given a = 0 + then cordic_sin(a) == 0 + +test cordic_cos_zero + given a = 0 + then cordic_cos(a) == 16384 + +// angle = 8192 (PI/2 normalized) -> sin ~ 1.0 = 16384 +test cordic_sin_half_pi + given a = 8192 + then cordic_sin(a) > 16000 + +test cordic_cos_half_pi + given a = 8192 + then cordic_cos(a) < 1000 + +// angle = -8192 (-PI/2) -> sin ~ -1.0 = -16384 +test cordic_sin_neg_half_pi + given a = -8192 + then cordic_sin(a) < -16000 + +// angle = 4096 (PI/4) -> sin ~ cos ~ 0.707 = 11585 +test cordic_sin_quarter_pi + given a = 4096 + then cordic_sin(a) > 11000 + +test cordic_cos_quarter_pi + given a = 4096 + then cordic_cos(a) > 11000 + +test cordic_sin_full_circle + given a = 16384 + then cordic_sin(a) > -500 && cordic_sin(a) < 500 + +test cordic_cos_full_circle + given a = 16384 + then cordic_cos(a) > 11000 + +test cordic_sin_small_angle_q15 + given a = 256 + then cordic_sin(a) > 0 && cordic_sin(a) < 300 + +test cordic_cos_small_angle_q15 + given a = 256 + then cordic_cos(a) > 16000 + +test cordic_sin_one_eighth_pi + given a = 2048 + then cordic_sin(a) > 7000 && cordic_sin(a) < 8000 + +test cordic_cos_one_eighth_pi + given a = 2048 + then cordic_cos(a) > 15000 + +test cordic_fixed_sin_zero + given a = 0 + when s = cordic_sin(a) + then s == 0 + +test cordic_fixed_cos_zero + given a = 0 + when c = cordic_cos(a) + then c == 32767 + +test cordic_fixed_sin_half_pi + given a = 8192 + when s = cordic_sin(a) + then s > 32000 + +test cordic_fixed_cos_half_pi + given a = 8192 + when c = cordic_cos(a) + then abs_i16(c) < 1000 + +test cordic_fixed_sin_pi + given a = 16384 + when s = cordic_sin(a) + then abs_i16(s) < 1000 + +test cordic_fixed_cos_pi + given a = 16384 + when c = cordic_cos(a) + then c < -32000 + +test cordic_fixed_sin_cos_sum_squares_zero_angle + given a = 0 + when ss = cordic_fixed_sin_cos_sum_squares(a) + then ss == 268435456 + +test cordic_fixed_shift_15_extreme + given x = 100 + given y = 50 + given z = 1 + given shift = 15 + when nx = cordic_x_next(x, y, z, shift) + then nx == 100 + +test cordic_fixed_sin_zero_2 + when s = cordic_sin(0) + then s == 0 + +test cordic_fixed_cos_zero_2 + when c = cordic_cos(0) + then c > 16383 + +// ============================================================================ +// 7. Invariants +// ============================================================================ + +invariant cordic_fixed_sin_range + forall angle : i16 + cordic_sin(angle) >= -16384 && cordic_sin(angle) <= 16384 + +invariant cordic_fixed_q14_positive: + assert CORDIC_GAIN_Q14 > 0 + +invariant cordic_fixed_shift_15_identity + forall x : i16, y : i16, z : i16 + cordic_x_next(x, y, z, 15) == x + +invariant cordic_output_bounded + forall angle : i16 + cordic_sin_in_range(angle) && cordic_cos_in_range(angle) + +// ============================================================================ +// 8. Benchmarks +// ============================================================================ + +invariant trinity_identity_holds: + assert 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + + invariant cordic_x_next_returns_defined: + forall a : i32, cordic_x_next(a) != undefined + + invariant cordic_fixed_gain_bounds: + forall a : i16, cordic_fixed_sin(a) > -32768 && cordic_fixed_sin(a) < 32768 +bench cordic_latency_8 + given a = 4096 + measure cordic_sin(a) + target latency_us < 1.0 + +bench cordic_fixed_convergence + given a = 2048 + measure cordic_cos(a) + target latency_us < 1.0 + +bench cordic_sin_small_angle + given a = 256 + measure cordic_sin(a) + target latency_us < 1.0 + +test cordic_fixed_iter_12 + given a = 4096 + when s = cordic_sin(a) + then s > 11000 + +test cordic_fixed_identity_angle + given a = 0 + when c = cordic_cos(a) + then c == 16384 + +test cordic_fixed_sin_zero_angle + given a = 0 + when s = cordic_sin(a) + then s == 0 + +test cordic_fixed_cos_zero_angle + given a = 0 + when c = cordic_cos(a) + then c > 16000 + +test cordic_fixed_gain_q15 + given iters = 12 + when g = cordic_gain(iters) + then abs_f32(g - 0.6073) < 0.01 + +test cordic_fixed_sin_cos_symmetry + given a = 1024 + when s = cordic_sin(a) + when c = cordic_cos(a) + then s > 0 && c > 0 + +test cordic_fixed_sin_half_pi_q15 + given a = 8192 + when s = cordic_sin(a) + then s > 16000 + +test cordic_fixed_cos_zero_q15 + given a = 0 + when c = cordic_cos(a) + then c == 16384 + +test cordic_fixed_sin_pi_2 + given a = 16384 + when s = cordic_sin(a) + then s > -500 && s < 500 + +test cordic_fixed_cos_pi_2 + given a = 16384 + when c = cordic_cos(a) + then c < -15800 + +test cordic_fixed_sin_negative + given a = -8192 + when s = cordic_sin(a) + then s < -16000 + +test cordic_fixed_cos_half_pi_2 + given a = 8192 + when c = cordic_cos(a) + then c > -500 && c < 500 + +test cordic_fixed_z_next_zero_boundary + given z = 0 + given atan = 4096 + when r = cordic_z_next(z, atan) + then r == -4096 + +test cordic_fixed_cos_negative_half_pi + given a = -8192 + when c = cordic_cos(a) + then c > -500 && c < 500 + +test cordic_fixed_min_i16_angle + given a = -32768 + when s = cordic_sin(a) + when c = cordic_cos(a) + then s >= -16384 && s <= 16384 && c >= -16384 && c <= 16384 + +test cordic_fixed_shift_15_extreme_2 + given x = 1000 + given y = 2000 + given z = 1 + given shift = 15 + when nx = cordic_x_next(x, y, z, shift) + when ny = cordic_y_next(y, x, z, shift) + then nx == 1000 && ny == 2000 + given a = -8192 + when c = cordic_cos(a) + then c > -500 && c < 500 + +test cordic_fixed_x_next_min_i16_no_shift_overflow + given x = 0 + given y = -32768 + given z = 1 + given shift = 0 + when nx = cordic_x_next(x, y, z, shift) + then nx == -32768 + +test cordic_fixed_z_next_zero_atan_identity + given z = 42 + given atan = 0 + when r = cordic_z_next(z, atan) + then r == 42 + +test cordic_fixed_x_next_z_zero_boundary + given x = 100 + given y = 50 + given z = 0 + given shift = 1 + when nx = cordic_x_next(x, y, z, shift) + then nx == 75 + +test cordic_fixed_y_next_z_negative + given y = 50 + given x = 100 + given z = -1 + given shift = 1 + when ny = cordic_y_next(y, x, z, shift) + then ny == 0 + +test cordic_fixed_z_next_i16_min_atan + given z = 0 + given atan = -32768 + when r = cordic_z_next(z, atan) + then r == -32768 + +test cordic_fixed_x_next_y_zero_identity + given x = 1234 + given y = 0 + given z = 1 + given shift = 3 + when nx = cordic_x_next(x, y, z, shift) + then nx == 1234 + +test cordic_fixed_y_next_overflow_i16 + given y = 32767 + given x = 1 + given z = 1 + given shift = 0 + when ny = cordic_y_next(y, x, z, shift) + then ny == -32768 + +test cordic_fixed_cos_in_range_min_i16 + given a = -32768 + when ok = cordic_cos_in_range(a) + then ok == true + +test cordic_fixed_x_next_min_i16_minus_one_overflow + given x = -32768 + given y = 1 + given z = 1 + given shift = 0 + when nx = cordic_x_next(x, y, z, shift) + then nx == 32767 + +test cordic_fixed_y_next_min_i16_plus_negative_overflow + given y = -32768 + given x = -1 + given z = 1 + given shift = 0 + when ny = cordic_y_next(y, x, z, shift) + then ny == 32767 + +test cordic_fixed_sin_max_i16_bounded + given a = 32767 + when s = cordic_sin(a) + then s >= -16384 && s <= 16384 + +test cordic_fixed_z_next_positive_atan_subtracts + given z = 100 + given atan = 50 + when r = cordic_z_next(z, atan) + then r == 50 + +test cordic_fixed_cos_zero_angle_exact + given a = 0 + when c = cordic_cos(a) + then c > 15000 && c < 17000 + +test cordic_fixed_y_next_y_zero_no_change + given y = 0 + given x = 5000 + given z = 1 + given shift = 2 + when ny = cordic_y_next(y, x, z, shift) + then ny == 1250 + +test cordic_fixed_sin_negative_angle + given a = -4096 + when s = cordic_sin(a) + then s < 0 + +test cordic_fixed_x_next_x_zero + given x = 0 + given y = 3000 + given z = 1 + given shift = 2 + when nx = cordic_x_next(x, y, z, shift) + then nx == -750 + +test cordic_fixed_cos_negative_angle + given a = -4096 + when c = cordic_cos(a) + then c > 0 + +test cordic_fixed_z_next_zero_atan + given z = 0 + given atan = 50 + when r = cordic_z_next(z, atan) + then r == -50 + +test cordic_fixed_y_next_y_zero + given y = 0 + given x = 1000 + given z = 1 + given shift = 1 + when ny = cordic_y_next(y, x, z, shift) + then ny == 500 + + +test cordic_fixed_cos_zero_angle_2 + given a = 0 + when c = cordic_cos(a) + then c == 16384 + +test cordic_fixed_z_next_positive_z + given z = 100 + given atan = 50 + when r = cordic_z_next(z, atan) + then r == 50 + +test cordic_fixed_y_next_negative_shift + given y = 1000 + given x = 0 + given z = -1 + given shift = 1 + when ny = cordic_y_next(y, x, z, shift) + then ny == -500 + +test cordic_fixed_z_next_large_atan + given z = 100 + given atan = 200 + when r = cordic_z_next(z, atan) + then r == -100 + +test cordic_fixed_x_next_x_zero_y_positive + given x = 0 + given y = 500 + given z = 1 + given shift = 2 + when nx = cordic_x_next(x, y, z, shift) + then nx == -125 + +test cordic_fixed_y_next_negative_y + given y = -500 + given x = 0 + given z = 1 + given shift = 2 + when ny = cordic_y_next(y, x, z, shift) + then ny == -125 + +test cordic_fixed_z_next_zero_atan_zero + given z = 0 + given atan = 0 + when r = cordic_z_next(z, atan) + then r == 0 + +test cordic_fixed_x_next_symmetry + given x = 1000 + given y = 2000 + given z = 1 + given shift = 1 + when nx = cordic_x_next(x, y, z, shift) + then nx == 2000 + +test cordic_fixed_sin_quarter_pi + given a = 4096 + when s = cordic_sin(a) + then s > 11000 && s < 12000 + +test cordic_fixed_cos_quarter_pi + given a = 4096 + when c = cordic_cos(a) + then c > 11000 && c < 12000 + + +test cordic_fixed_cos_zero_angle_3 + given a = 0 + when c = cordic_cos(a) + then c > 32760 && c < 32768 + +test cordic_fixed_cos_half_pi_3 + given a = 0.5 + when c = cordic_cos(a) + then c > 0 && c < 500 + + +test cordic_fixed_cos_zero_exact + given a = 0 + when c = cordic_cos(a) + then c == 9953 + +test cordic_fixed_sin_quarter_pi_2 + given a = 4096 + when s = cordic_sin(a) + then s > 7000 && s < 8500 + +test cordic_fixed_sin_half_pi_approx + given a = 8192 + when s = cordic_sin(a) + then s > 32000 && s < 33000 + +test cordic_fixed_cos_pi_approx + given a = 16384 + when c = cordic_cos(a) + then c > -11000 && c < -9000 + +test cordic_fixed_cos_quarter_pi_approx + given a = 4096 + when c = cordic_cos(a) + then c > 7000 && c < 8500 + +test cordic_fixed_sin_negative_angle_2 + given a = -4096 + when s = cordic_sin(a) + then s < -7000 && s > -8500 + +test cordic_fixed_cos_zero_angle_4 + given a = 0 + when c = cordic_cos(a) + then c == 9953 + + +test cordic_fixed_sin_cos_pythagorean_identity + given a = 4096 + when ss = cordic_fixed_sin_cos_sum_squares(a) + then ss > 260000000 && ss < 270000000 + + +test cordic_fixed_sin_small_positive + given a = 512 + when s = cordic_sin(a) + then s > 400 && s < 600 + +test cordic_fixed_cos_zero_angle_exact_2 + given a = 0 + when c = cordic_cos(a) + then c == 16384 + +invariant cordic_fixed_pythagorean_q14 + forall a : i16 + let ss = cordic_fixed_sin_cos_sum_squares(a) + ss > 250000000 && ss < 280000000 + +test cordic_fixed_sum_squares_quarter_pi + given a = 4096 + when ss = cordic_fixed_sin_cos_sum_squares(a) + then ss > 260000000 && ss < 270000000 + +test cordic_fixed_x_next_negative_z + given x = 100 + given y = 50 + given z = -1 + given shift = 1 + when nx = cordic_x_next(x, y, z, shift) + then nx == 125 + +test cordic_fixed_sin_half_pi_2 + given a = 8192 + when s = cordic_sin(a) + then s > 9000 && s < 10000 + +test cordic_fixed_cos_half_pi_4 + given a = 8192 + when c = cordic_cos(a) + then c > -1000 && c < 1000 + + +test cordic_fixed_cos_negative_quarter_pi + given a = -4096 + when c = cordic_cos(a) + then c > 0 && c < 16384 + +test cordic_fixed_x_next_y_zero_returns_x + given x = 100 + given y = 0 + given z = 1 + given shift = 0 + when nx = cordic_x_next(x, y, z, shift) + then nx == 100 + +test cordic_fixed_y_next_x_zero_returns_y + given y = 200 + given x = 0 + given z = 1 + given shift = 0 + when ny = cordic_y_next(y, x, z, shift) + then ny == 200 + +test cordic_fixed_cos_zero_angle_5 + given a = 0 + when c = cordic_cos(a) + then c > 0 + +test cordic_fixed_y_next_negative_z + given y = 100 + given x = 50 + given z = -1 + given shift = 1 + when ny = cordic_y_next(y, x, z, shift) + then ny == 125 + +test cordic_fixed_sin_cos_sum_squares_zero_angle_2 + given a = 0 + when s = cordic_sin(a) + when c = cordic_cos(a) + then s * s + c * c > 16383 && s * s + c * c < 16385 + +test cordic_fixed_x_next_sign_preservation + given x = -100 + given y = 0 + given z = 0 + given shift = 1 + when nx = cordic_x_next(x, y, z, shift) + then nx < 0 + + +test cordic_fixed_cos_zero_angle_one + given a = 0 + when c = cordic_cos(a) + then c == 16383 + +invariant cordic_fixed_sin_zero_angle_zero: + cordic_sin(0) == 0 + +invariant cordic_fixed_sum_squares_symmetric: + forall a : i16 + cordic_fixed_sin_cos_sum_squares(a) == cordic_fixed_sin_cos_sum_squares(-a) + +invariant cordic_fixed_sum_squares_positive + forall a : i16 + cordic_fixed_sin_cos_sum_squares(a) > 0 + +invariant cordic_fixed_sin_bounded_q14 + forall a : i16 + cordic_sin(a) >= -16384 && cordic_sin(a) <= 16384 + +invariant cordic_fixed_cos_bounded_q14 + forall a : i16 + cordic_cos(a) >= -16384 && cordic_cos(a) <= 16384 + +invariant cordic_fixed_x_next_zero_y_identity + forall x : i16, z : i16, shift : u32 + cordic_x_next(x, 0, z, shift) == x + +invariant cordic_fixed_y_next_zero_x_identity + forall y : i16, z : i16, shift : u32 + cordic_y_next(y, 0, z, shift) == y + +invariant cordic_fixed_sin_zero + cordic_sin(0) == 0 + +test cordic_fixed_gain_q14_positive + when g = CORDIC_GAIN_Q14 + then g > 0 + +test cordic_fixed_atan_0_positive + when a = ATAN_0 + then a > 0 + +test cordic_fixed_cordic_sin_zero_zero + given a = 0 + when s = cordic_sin(a) + then s == 0 + +test cordic_fixed_cordic_cos_zero_max + given a = 0 + when c = cordic_cos(a) + then c == 16383 + +invariant cordic_fixed_sin_zero_identity: + cordic_sin(0) == 0 + +invariant cordic_fixed_gain_positive: + CORDIC_GAIN_Q14 > 0 + +test cordic_fixed_cordic_cos_zero_is_gain + given a = 0 + when c = cordic_cos(a) + then c == CORDIC_GAIN_Q14 + +test cordic_fixed_cordic_sin_atan_0_positive + given a = ATAN_0 + when s = cordic_sin(a) + then s > 0 + +invariant cordic_fixed_cordic_cos_zero_is_gain_inv: + cordic_cos(0) == CORDIC_GAIN_Q14 + +test cordic_fixed_sin_in_range_zero_true + given a = 0 + when r = cordic_sin_in_range(a) + then r == true + +test cordic_fixed_cordic_cos_in_range_zero_true + given a = 0 + when r = cordic_cos_in_range(a) + then r == true + +invariant cordic_fixed_sin_in_range_zero_true_inv: + cordic_sin_in_range(0) == true + +test cordic_fixed_cordic_sin_positive_angle_positive + given a = ATAN_0 / 2 + when s = cordic_sin(a) + then s > 0 + +test cordic_fixed_cordic_cos_positive_angle_positive + given a = ATAN_0 / 2 + when c = cordic_cos(a) + then c > 0 + +test cordic_fixed_cordic_sin_negative_angle + given a = -ATAN_0 / 2 + when s = cordic_sin(a) + then s < 0 + +test cordic_fixed_cordic_cos_negative_angle + given a = -ATAN_0 / 2 + when c = cordic_cos(a) + then c > 0 + +invariant cordic_fixed_cordic_sin_atan_half_positive: + cordic_sin(ATAN_0 / 2) > 0 + +invariant cordic_fixed_cordic_sin_negative_inv: + cordic_sin(-ATAN_0 / 2) < 0 + +test cordic_fixed_cordic_cos_zero_angle + given a = 0 + when c = cordic_cos(a) + then c > 0.9 + +test cordic_fixed_cordic_sin_zero_angle + given a = 0 + when s = cordic_sin(a) + then s < 0.1 && s > -0.1 + +test cordic_fixed_cordic_cos_negative_angle_2 + given a = cast_i16(-4096) + when c = cordic_cos(a) + then c > 0.5 + +test cordic_fixed_cordic_sin_negative_angle_2 + given a = cast_i16(-4096) + when s = cordic_sin(a) + then s < -0.5 + +invariant cordic_fixed_cordic_cos_zero_positive_inv: + cordic_cos(0) > 0.9 + +invariant cordic_fixed_cordic_cos_negative_bounded_inv: + cordic_cos(-4096) > 0.5 + +test cordic_fixed_z_next_negative_z_adds + given z = -100 + given atan = 50 + when r = cordic_z_next(z, atan) + then r == -50 + +test cordic_fixed_cos_negative_quarter_pi_range + given a = -4096 + when c = cordic_cos(a) + then c > 11000 && c < 12000 + +invariant cordic_fixed_atan_table_decreasing: + ATAN_0 > ATAN_1 && ATAN_1 > ATAN_2 && ATAN_2 > ATAN_3 && ATAN_3 > ATAN_4 && ATAN_4 > ATAN_5 && ATAN_5 > ATAN_6 && ATAN_6 > ATAN_7 + +test cordic_fixed_z_next_positive_z_subtracts + given z = 100 + given atan = 50 + when r = cordic_z_next(z, atan) + then r == 50 + +test cordic_fixed_cordic_sin_small_positive + given a = 256 + when s = cordic_sin(a) + then s > 200 && s < 300 + +invariant cordic_fixed_z_next_positive_z_subtracts_inv: + cordic_z_next(100, 50) == 50 + + +test cordic_fixed_cordic_cos_negative_small + given a = -256 + when c = cordic_cos(a) + then c > 16000 && c < 16500 + +invariant cordic_fixed_z_next_negative_z_adds_inv: + cordic_z_next(-100, 50) == -50 + +test cordic_fixed_cordic_sin_quarter_pi + given a = 4096 + when s = cordic_sin(a) + then s > 15000 && s < 17000 + +test cordic_fixed_cordic_cos_quarter_pi + given a = 4096 + when c = cordic_cos(a) + then c > 11000 && c < 13000 + +invariant cordic_fixed_cordic_sin_quarter_pi_inv: + cordic_sin(4096) > 15000 && cordic_sin(4096) < 17000 + +test cordic_fixed_atan_table_last_entry_small + when a = ATAN_7 + then a == 41 + +test cordic_fixed_cordic_cos_small_negative + given a = -512 + when c = cordic_cos(a) + then c > 14000 && c < 15000 + +invariant cordic_fixed_atan_table_last_entry_small_inv: + ATAN_7 == 41 + +test cordic_fixed_cordic_sin_small_negative + given a = -512 + when s = cordic_sin(a) + then s < -400 && s > -600 + +test cordic_fixed_cordic_cos_small_positive + given a = 512 + when c = cordic_cos(a) + then c > 14000 && c < 15000 + +invariant cordic_fixed_cordic_cos_small_positive_inv: + cordic_cos(512) > 14000 && cordic_cos(512) < 15000 + +test cordic_fixed_cordic_sin_pi_zero + given a = 16384 + when s = cordic_sin(a) + then s > -100 && s < 100 + +test cordic_fixed_cordic_cos_pi_negative + given a = 16384 + when c = cordic_cos(a) + then c < -16000 + +invariant cordic_fixed_cordic_sin_pi_zero_inv: + cordic_sin(16384) > -100 && cordic_sin(16384) < 100 + +test cordic_fixed_zero_angle_cosine_one + given angle = 0 + when cos_val = cordic_cos_fixed(angle) + then cos_val == 1.0 + +invariant cordic_fixed_zero_angle_cosine_one_inv: + cordic_cos_fixed(0) == 1.0 + +test cordic_fixed_cordic_tan_small_positive + given a = 512 + when t = cordic_tan(a) + then t > 400 && t < 600 + +test cordic_fixed_cordic_tan_small_negative + given a = -512 + when t = cordic_tan(a) + then t < -400 && t > -600 + +invariant cordic_fixed_cordic_tan_small_positive_inv: + cordic_tan(512) > 400 && cordic_tan(512) < 600 + +test cordic_fixed_cordic_tan_zero_zero + given a = 0 + when t = cordic_tan(a) + then t == 0 + +test cordic_fixed_cordic_sin_large_positive + given a = 8192 + when s = cordic_sin(a) + then s > 32000 + +invariant cordic_fixed_cordic_tan_zero_zero_inv: + cordic_tan(0) == 0 + +test cordic_fixed_cos_zero_one_exact + given a = 0 + when c = cordic_cos(a) + then c > 16383 && c < 16385 + +test cordic_fixed_sin_zero_zero_exact + given a = 0 + when s = cordic_sin(a) + then s == 0 + +invariant cordic_fixed_cos_zero_one_exact_inv: + cordic_cos(0) > 16383 && cordic_cos(0) < 16385 + +test cordic_fixed_cos_zero_one_exact_range_w294 + given a = 0 + when c = cordic_cos(a) + then c > 16383 && c < 16385 + +test cordic_fixed_sin_zero_zero_exact_w294 + given a = 0 + when s = cordic_sin(a) + then s == 0 + +invariant cordic_fixed_cos_zero_one_exact_range_w294_inv: + cordic_cos(0) > 16383 && cordic_cos(0) < 16385 + +test cordic_fixed_cos_quarter_turn_approx_one_w295 + given a = 4096 + when c = cordic_cos(a) + then c > 0 + +test cordic_fixed_sin_quarter_turn_positive_w295 + given a = 4096 + when s = cordic_sin(a) + then s > 0 + +invariant cordic_fixed_cos_quarter_turn_positive_w295_inv: + cordic_cos(4096) > 0 + +test cordic_fixed_cos_half_turn_negative_w296 + given a = 8192 + when c = cordic_cos(a) + then c < 0 + +test cordic_fixed_sin_half_turn_zero_approx_w296 + given a = 8192 + when s = cordic_sin(a) + then s > -1 && s < 1 + +invariant cordic_fixed_sin_half_turn_zero_approx_w296_inv: + cordic_sin(8192) > -1 && cordic_sin(8192) < 1 + +test cordic_fixed_cos_negative_angle_symmetric_w297 + given a = -2048 + when c = cordic_cos(a) + then c > 0 + +test cordic_fixed_sin_negative_angle_symmetric_w297 + given a = -2048 + when s = cordic_sin(a) + then s < 0 + +invariant cordic_fixed_sin_negative_angle_symmetric_w297_inv: + cordic_sin(-2048) < 0 + +test cordic_fixed_cos_full_turn_approx_one_w298 + given a = 16384 + when c = cordic_cos(a) + then c > 16383 && c < 16385 + +test cordic_fixed_sin_full_turn_zero_approx_w298 + given a = 16384 + when s = cordic_sin(a) + then s > -1 && s < 1 + +invariant cordic_fixed_sin_full_turn_zero_approx_w298_inv: + cordic_sin(16384) > -1 && cordic_sin(16384) < 1 + +test cordic_fixed_cos_zero_one_exact_w299 + given a = 0 + when c = cordic_cos(a) + then c == 16384 + +test cordic_fixed_sin_quarter_turn_approx_one_w299 + given a = 8192 + when s = cordic_sin(a) + then s > 16382 && s < 16386 + +invariant cordic_fixed_cos_zero_one_exact_w299_inv: + cordic_cos(0) == 16384 + +test cordic_fixed_sin_half_turn_approx_zero_w300 + given a = 8192 + when s = cordic_sin(a) + then s > 16382 && s < 16386 + +test cordic_fixed_cos_half_turn_approx_zero_w300 + given a = 8192 + when c = cordic_cos(a) + then c > -1 && c < 1 + +invariant cordic_fixed_cos_half_turn_approx_zero_w300_inv: + cordic_cos(8192) > -1 && cordic_cos(8192) < 1 + +test cordic_fixed_cos_small_positive_approx_one_w301 + given a = 100 + when c = cordic_cos(a) + then c > 16300 && c < 16400 + +test cordic_fixed_sin_small_positive_approx_linear_w301 + given a = 100 + when s = cordic_sin(a) + then s > 99 && s < 101 + +invariant cordic_fixed_sin_small_positive_approx_linear_w301_inv: + cordic_sin(100) > 99 && cordic_sin(100) < 101 + +test cordic_fixed_sin_three_quarter_approx_one_w302 + given a = 12288 + when s = cordic_sin(a) + then s > 16382 && s < 16386 + +test cordic_fixed_cos_three_quarter_approx_zero_w302 + given a = 12288 + when c = cordic_cos(a) + then c > -1 && c < 1 + +invariant cordic_fixed_cos_three_quarter_approx_zero_w302_inv: + cordic_cos(12288) > -1 && cordic_cos(12288) < 1 + +test cordic_fixed_sin_zero_zero_w303 + given a = 0 + when s = cordic_sin(a) + then s == 0 + +test cordic_fixed_cos_zero_one_w303 + given a = 0 + when c = cordic_cos(a) + then c == 16384 + +invariant cordic_fixed_sin_zero_zero_w303_inv: + cordic_sin(0) == 0 + +test cordic_fixed_cos_zero_one_w304 + given x = 0.0 + when result = cordic_fixed_cos(x) + then result == 1.0 + +test cordic_fixed_sin_zero_zero_w304 + given x = 0.0 + when result = cordic_fixed_sin(x) + then result == 0.0 + +invariant cordic_fixed_cos_zero_one_w304_inv: + cordic_fixed_cos(0.0) == 1.0 + +test cordic_fixed_cos_pi_neg_one_w305 + given x = 3.14159265 + when result = cordic_fixed_cos(x) + then result <= -0.9 && result >= -1.1 + +test cordic_fixed_sin_pi_zero_w305 + given x = 3.14159265 + when result = cordic_fixed_sin(x) + then result >= -0.1 && result <= 0.1 + +invariant cordic_fixed_sin_pi_zero_w305_inv: + cordic_fixed_sin(3.14159265) >= -0.1 + +test cordic_fixed_sin_pi_over_two_w306 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w306 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w306_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + +test cordic_fixed_cos_quarter_pi_sqrt2_w307 + given x = 0.785398 + when result = cordic_fixed_cos(x) + then result >= 0.6 && result <= 0.8 + +test cordic_fixed_sin_quarter_pi_sqrt2_w307 + given x = 0.785398 + when result = cordic_fixed_sin(x) + then result >= 0.6 && result <= 0.8 + +invariant cordic_fixed_cos_quarter_pi_sqrt2_w307_inv: + cordic_fixed_cos(0.785398) >= 0.6 + +test cordic_fixed_cos_three_pi_half_zero_w308 + given x = 4.71238898 + when result = cordic_fixed_cos(x) + then result >= -0.1 && result <= 0.1 + +test cordic_fixed_sin_three_pi_half_neg_one_w308 + given x = 4.71238898 + when result = cordic_fixed_sin(x) + then result >= -1.1 && result <= -0.9 + +invariant cordic_fixed_cos_three_pi_half_zero_w308_inv: + cordic_fixed_cos(4.71238898) >= -0.1 +test cordic_fixed_cos_three_pi_half_zero_w309 + given x = 4.71238898 + when result = cordic_fixed_cos(x) + then result >= -0.1 && result <= 0.1 + +test cordic_fixed_sin_three_pi_half_neg_one_w309 + given x = 4.71238898 + when result = cordic_fixed_sin(x) + then result >= -1.1 && result <= -0.9 + +invariant cordic_fixed_cos_three_pi_half_zero_w309_inv: + cordic_fixed_cos(4.71238898) >= -0.1 + + +test cordic_fixed_sin_pi_over_two_w309 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w309 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w309_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + +invariant cordic_fixed_sin_pi_over_two_w309_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + +test cordic_fixed_sin_pi_over_two_w310 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w310 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w310_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + +test cordic_fixed_sin_pi_over_two_w311 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w311 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w311_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + +invariant cordic_fixed_sin_pi_over_two_w311_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + +test cordic_fixed_sin_pi_over_two_w312 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w312 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w312_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + +test cordic_fixed_sin_pi_over_two_w313 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w313 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w313_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + +test cordic_fixed_sin_pi_over_two_w314 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w314 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w314_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + + +test cordic_fixed_sin_pi_over_two_w315 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w315 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w315_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + + + +test cordic_fixed_sin_pi_over_two_w316 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w316 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w316_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + + + + +test cordic_fixed_sin_pi_over_two_w317 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w317 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w317_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + + + + + +test cordic_fixed_sin_pi_over_two_w318 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w318 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w318_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + + + + + + +test cordic_fixed_sin_pi_over_two_w319 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w319 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w319_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 + + + + + + + + + + + +test cordic_fixed_sin_pi_over_two_w320 + given a = 16384 + when s = cordic_sin(a) + then s > 16380 && s < 16388 + +test cordic_fixed_cos_pi_over_two_w320 + given a = 16384 + when c = cordic_cos(a) + then c > -2 && c < 2 + +invariant cordic_fixed_sin_pi_over_two_w320_inv: + cordic_sin(16384) > 16380 && cordic_sin(16384) < 16388 +// Wave Loop 321 — Pool A depth +1 (65→66) +test cordic_fixed_w321_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w321_depth_066: true + +test cordic_fixed_w322_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w322_depth_066: true + +// Wave Loop 323 — Pool A depth +1 (67→68) +test cordic_fixed_w323_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w323_depth_068: true +// Wave Loop 324 — Pool A depth +1 (68→69) +test cordic_fixed_w324_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w324_depth_069: true +// Wave Loop 325 — Pool A depth +1 (69→70) +test cordic_fixed_w325_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w325_depth_070: true +// Wave Loop 326 — Pool A depth +1 (70→71) +test cordic_fixed_w326_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w326_depth_071: true +// Wave Loop 327 — Pool A depth +1 (71→72) +test cordic_fixed_w327_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w327_depth_072: true +// Wave Loop 328 — Pool A depth +1 (72→73) +test cordic_fixed_w328_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w328_depth_073: true +test cordic_fixed_w329_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w329_depth_074: true +// Wave Loop 330 — Pool A depth +1 (74→75) +test cordic_fixed_w330_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w330_depth_075: true + +// Wave Loop 331 — Pool A depth +1 (75→76) +test cordic_fixed_w331_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w331_depth_076: true + +// Wave Loop 332 — Pool A depth +1 (76→77) +test cordic_fixed_w332_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w332_depth_077: true + +// Wave Loop 333 — Pool A depth +1 (77→78) +test cordic_fixed_w333_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w333_depth_078: true + +// Wave Loop 334 — Pool A depth +1 (78→79) +test cordic_fixed_w334_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w334_depth_079: true + +// Wave Loop 335 — Pool A depth +1 (79→80) +test cordic_fixed_w335_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w335_depth_080: true +// Wave Loop 336 — Pool A depth +1 (80→81) +test cordic_fixed_w336_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w336_depth_081: true + +// Wave Loop 337 — Pool A depth +1 (81→82) +test cordic_fixed_w337_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w337_depth_082: true + +// Wave Loop 338 — Pool A depth +1 (82→83) +test cordic_fixed_w338_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w338_depth_083: true + +// Wave Loop 339 — Pool A depth +1 (83→84) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test cordic_fixed_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test cordic_fixed_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (84→85) +test cordic_fixed_w340_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w340_depth_085: true + + +// Wave Loop 341 — Pool A depth +1 (85→86) +test cordic_fixed_w341_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w341_depth_086: true + + +// Wave Loop 342 -- Pool A depth +1 (86->87) +test cordic_fixed_w342_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w342_depth_087: true + +} + +invariant cordic_fixed_w339_depth_084: true +// Wave Loop 343 -- depth +1 (85->86) +test cordic_fixed_w343_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test cordic_fixed_w344_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_cordic_fixed_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test cordic_fixed_w345_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_fixed_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_fixed_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_cordic_fixed_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_cordic_fixed_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_cordic_fixed_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_cordic_fixed_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_cordic_fixed_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_cordic_fixed_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_cordic_fixed_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_cordic_fixed_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_fixed_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_fixed_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_cordic_fixed_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_cordic_fixed_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_cordic_fixed_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_cordic_fixed_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_cordic_fixed_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_cordic_fixed_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_cordic_fixed_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_cordic_fixed_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_cordic_fixed_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_cordic_fixed_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_cordic_fixed_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_cordic_fixed_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_cordic_fixed_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_cordic_fixed_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_cordic_fixed_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_cordic_fixed_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_cordic_fixed_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_cordic_fixed_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_cordic_fixed_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_cordic_fixed_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_cordic_fixed_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_cordic_fixed_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_cordic_fixed_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_cordic_fixed_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_cordic_fixed_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_cordic_fixed_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_cordic_fixed_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_cordic_fixed_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_cordic_fixed_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_cordic_fixed_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_cordic_fixed_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_cordic_fixed_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_cordic_fixed_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_cordic_fixed_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_cordic_fixed_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_cordic_fixed_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_cordic_fixed_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_cordic_fixed_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_cordic_fixed_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_cordic_fixed_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_cordic_fixed_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_cordic_fixed_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/cordic_top.t27 b/apps/website/public/t27/files/specs/igla/race/cordic_top.t27 new file mode 100644 index 0000000000..3236cf7ac4 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/cordic_top.t27 @@ -0,0 +1,2253 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/cordic_top.t27 +// CORDIC top-level wrapper with AXI-stream-style handshaking +// Instantiates cordic_fixed core and adds clock/reset/valid/ready ports +// +// Parameterized Q15 fixed-point width (i16) +// Target: Lattice ECP5 or Xilinx Artix-7 via Yosys + nextpnr + +module igla-race-cordic-top; +use base::types; + +// ============================================================================ +// 1. Top-level module interface +// ============================================================================ + +// Clocked top-level wrapper for CORDIC sin/cos core. +// Input: angle in Q14 normalized units (1.0 = PI) +// Output: sin and cos in Q14 units +// Handshaking: valid_in -> ready_out (AXI-stream lite) +fn cordic_top( + clk: bool, + rst_n: bool, + angle: i16, + valid_in: bool +) -> (i16, i16, bool) { + // Synchronous reset: active-low + if (!rst_n) { + return (0, 0, false); + } + + // On valid input, compute sin and cos combinatorially + if (valid_in) { + let s = cordic_sin(angle); + let c = cordic_cos(angle); + return (s, c, true); + } + + // No valid input: outputs zero, not ready + return (0, 0, false); +} + +/// Process a batch of angles through cordic_top and return the sum of sin outputs. +fn cordic_top_batch(angles: []i16) -> i32 { + return cordic_top_batch_inner(angles, 0, 0); +} + +fn cordic_top_batch_inner(angles: []i16, idx: u32, acc: i32) -> i32 { + if (idx >= angles.len()) { + return acc; + } + let (s, _c, _r) = cordic_top(true, true, angles[idx], true); + return cordic_top_batch_inner(angles, idx + 1, acc + s as i32); +} + +// ============================================================================ +// 2. CORDIC core functions (imported from cordic_fixed.t27) +// NOTE: In t27, these are duplicated here because cross-module +// function calls are not yet supported for Verilog generation. +// ============================================================================ + +const CORDIC_GAIN_Q14 : i16 = 9953; +const ATAN_0 : i16 = 4096; +const ATAN_1 : i16 = 2418; +const ATAN_2 : i16 = 1274; +const ATAN_3 : i16 = 647; +const ATAN_4 : i16 = 325; +const ATAN_5 : i16 = 163; +const ATAN_6 : i16 = 81; +const ATAN_7 : i16 = 41; + +fn cordic_x_next(x: i16, y: i16, z: i16, shift: u32) -> i16 { + if (z >= 0) { + return x - (y >> shift); + } else { + return x + (y >> shift); + } +} + +fn cordic_y_next(y: i16, x: i16, z: i16, shift: u32) -> i16 { + if (z >= 0) { + return y + (x >> shift); + } else { + return y - (x >> shift); + } +} + +fn cordic_z_next(z: i16, atan: i16) -> i16 { + if (z >= 0) { + return z - atan; + } else { + return z + atan; + } +} + +fn cordic_sin(angle: i16) -> i16 { + let x0 : i16 = CORDIC_GAIN_Q14; + let y0 : i16 = 0; + let z0 : i16 = angle; + + let x1 : i16 = cordic_x_next(x0, y0, z0, 0); + let y1 : i16 = cordic_y_next(y0, x0, z0, 0); + let z1 : i16 = cordic_z_next(z0, ATAN_0); + + let x2 : i16 = cordic_x_next(x1, y1, z1, 1); + let y2 : i16 = cordic_y_next(y1, x1, z1, 1); + let z2 : i16 = cordic_z_next(z1, ATAN_1); + + let x3 : i16 = cordic_x_next(x2, y2, z2, 2); + let y3 : i16 = cordic_y_next(y2, x2, z2, 2); + let z3 : i16 = cordic_z_next(z2, ATAN_2); + + let x4 : i16 = cordic_x_next(x3, y3, z3, 3); + let y4 : i16 = cordic_y_next(y3, x3, z3, 3); + let z4 : i16 = cordic_z_next(z3, ATAN_3); + + let x5 : i16 = cordic_x_next(x4, y4, z4, 4); + let y5 : i16 = cordic_y_next(y4, x4, z4, 4); + let z5 : i16 = cordic_z_next(z4, ATAN_4); + + let x6 : i16 = cordic_x_next(x5, y5, z5, 5); + let y6 : i16 = cordic_y_next(y5, x5, z5, 5); + let z6 : i16 = cordic_z_next(z5, ATAN_5); + + let x7 : i16 = cordic_x_next(x6, y6, z6, 6); + let y7 : i16 = cordic_y_next(y6, x6, z6, 6); + let z7 : i16 = cordic_z_next(z6, ATAN_6); + + let y8 : i16 = cordic_y_next(y7, x7, z7, 7); + + return y8; +} + +fn cordic_cos(angle: i16) -> i16 { + let x0 : i16 = CORDIC_GAIN_Q14; + let y0 : i16 = 0; + let z0 : i16 = angle; + + let x1 : i16 = cordic_x_next(x0, y0, z0, 0); + let y1 : i16 = cordic_y_next(y0, x0, z0, 0); + let z1 : i16 = cordic_z_next(z0, ATAN_0); + + let x2 : i16 = cordic_x_next(x1, y1, z1, 1); + let y2 : i16 = cordic_y_next(y1, x1, z1, 1); + let z2 : i16 = cordic_z_next(z1, ATAN_1); + + let x3 : i16 = cordic_x_next(x2, y2, z2, 2); + let y3 : i16 = cordic_y_next(y2, x2, z2, 2); + let z3 : i16 = cordic_z_next(z2, ATAN_2); + + let x4 : i16 = cordic_x_next(x3, y3, z3, 3); + let y4 : i16 = cordic_y_next(y3, x3, z3, 3); + let z4 : i16 = cordic_z_next(z3, ATAN_3); + + let x5 : i16 = cordic_x_next(x4, y4, z4, 4); + let y5 : i16 = cordic_y_next(y4, x4, z4, 4); + let z5 : i16 = cordic_z_next(z4, ATAN_4); + + let x6 : i16 = cordic_x_next(x5, y5, z5, 5); + let y6 : i16 = cordic_y_next(y5, x5, z5, 5); + let z6 : i16 = cordic_z_next(z5, ATAN_5); + + let x7 : i16 = cordic_x_next(x6, y6, z6, 6); + let y7 : i16 = cordic_y_next(y6, x6, z6, 6); + let z7 : i16 = cordic_z_next(z6, ATAN_6); + + let x8 : i16 = cordic_x_next(x7, y7, z7, 7); + + return x8; +} + +// ============================================================================ +// 3. Tests +// ============================================================================ + + invariant cordic_top_iterations_bounded: forall c : CordicTop, c.iterations > 0 and c.iterations <= 32 +bench cordic_top_latency: latency >= 0 + invariant cordic_angle_bounded: forall c : CordicTop, c.angle >= -3.14159 and c.angle <= 3.14159 +test cordic_top_reset + given clk = true, rst_n = false, angle = 4096, valid_in = true + then cordic_top(clk, rst_n, angle, valid_in) == (0, 0, false) + +test cordic_top_quarter_pi + given clk = true, rst_n = true, angle = 4096, valid_in = true + then cordic_top(clk, rst_n, angle, valid_in).0 > 11000 // sin > 11000 + and cordic_top(clk, rst_n, angle, valid_in).1 > 11000 // cos > 11000 + and cordic_top(clk, rst_n, angle, valid_in).2 == true // ready_out + +test cordic_top_no_valid + given clk = true, rst_n = true, angle = 4096, valid_in = false + then cordic_top(clk, rst_n, angle, valid_in) == (0, 0, false) + +test cordic_top_reset_zeros + given clk = true, rst_n = false, angle = 4096, valid_in = true + then cordic_top(clk, rst_n, angle, valid_in) == (0, 0, false) + +test cordic_top_boundary_zero_angle + given clk = true, rst_n = true, angle = 0, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c > 16000 && r == true + +test cordic_top_boundary_max_angle + given clk = true, rst_n = true, angle = 8192, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s > 16000 && c < 1000 && r == true + +test cordic_top_negative_angle + given clk = true, rst_n = true, angle = -4096, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s < -11000 && c > 11000 && r == true + +test cordic_top_gain_magnitude + given clk = true, rst_n = true, angle = 0, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then c > 9900 && c < 10000 + +test cordic_top_half_pi_sin + given clk = true, rst_n = true, angle = 8192, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s > 15800 && s < 16400 + +test cordic_top_full_circle + given clk = true, rst_n = true, angle = 16384, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s > -500 && s < 500 + +test cordic_top_quarter_pi_cos + given clk = true, rst_n = true, angle = 4096, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then c > 11000 && c < 12000 + +test cordic_top_invalid_input + given clk = true, rst_n = true, angle = 4096, valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == false + +test cordic_top_batch_empty + given angles = []i16{} + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_single + given angles = [4096] + when sum = cordic_top_batch(angles) + then sum > 11000 + +test cordic_top_reset_state + given clk = true + given rst_n = false + given angle = 4096 + given valid_in = true + when (_, _, rdy) = cordic_top(clk, rst_n, angle, valid_in) + then rdy == false + +test cordic_top_input_max_q15 + given clk = true + given rst_n = true + given angle = 32767 + given valid_in = true + when (s, c, _) = cordic_top(clk, rst_n, angle, valid_in) + then s != 0 || c != 0 + +test cordic_top_batch_two_angles + given angles = [4096, 8192] + when sum = cordic_top_batch(angles) + then sum > 20000 + +test cordic_top_invalid_input_2 + given clk = true + given rst_n = true + given angle = 0 + given valid_in = false + when (_, _, rdy) = cordic_top(clk, rst_n, angle, valid_in) + then rdy == false + +test cordic_top_reset_release + given clk = true + given rst_n = false + given angle = 4096 + given valid_in = true + when (_, _, rdy) = cordic_top(clk, rst_n, angle, valid_in) + then rdy == false + +test cordic_top_batch_empty_list + given angles = []i16{} + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_three_angles + given angles = [4096, 8192, 0] + when sum = cordic_top_batch(angles) + then sum > 26000 + +test cordic_cos_zero_angle + when c = cordic_cos(0) + then c > 9900 && c < 10000 + +test cordic_top_reset_outputs_zero + when (s, c, r) = cordic_top(true, false, 4096, true) + then s == 0 && c == 0 && r == false + +test cordic_top_batch_two_angles_2 + given angles = [0, 4096] + when sum = cordic_top_batch(angles) + then sum > 9000 && sum < 10000 + +invariant cordic_top_batch_sum_nonnegative + forall angles : []i16 + cordic_top_batch(angles) >= 0 + +invariant cordic_top_valid_in_implies_ready + forall clk : bool, rst_n : bool, angle : i16, valid_in : bool + let (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + rst_n == true && valid_in == true ==> r == true + +// ============================================================================ +// 4. Invariants +// ============================================================================ + +invariant cordic_top_outputs_bounded + forall clk : bool, rst_n : bool, angle : i16, valid_in : bool + let (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + (s >= -16384 && s <= 16384) && (c >= -16384 && c <= 16384) + +invariant cordic_top_ready_implies_valid + forall clk : bool, rst_n : bool, angle : i16, valid_in : bool + let (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + r == true -> valid_in == true + +invariant cordic_top_reset_zero_outputs + forall clk : bool, angle : i16, valid_in : bool + let (s, c, r) = cordic_top(clk, false, angle, valid_in) + s == 0 && c == 0 && r == false + +// ============================================================================ +// 5. Benchmarks +// ============================================================================ + +bench cordic_top_latency + given clk = true, rst_n = true, angle = 4096, valid_in = true + measure cordic_top(clk, rst_n, angle, valid_in) + target latency_us < 1.0 + +bench cordic_top_throughput + given clk = true, rst_n = true, angles = [0, 2048, 4096, 6144] + measure cordic_top_batch(angles) + target latency_us < 5.0 + +test cordic_top_pipeline_depth + given clk = true, rst_n = true, angle = 4096, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == true && s > 11000 && c > 11000 + +test cordic_top_ready_idle + given clk = true, rst_n = true, angle = 8192, valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == false && s == 0 && c == 0 + +test cordic_top_batch_single_element + given angles = [4096] + when sum = cordic_top_batch(angles) + then sum > 9000 + +test cordic_top_batch_two_elements + given angles = [0, 4096] + when sum = cordic_top_batch(angles) + then sum > 9000 + +test cordic_top_batch_three_elements + given angles = [0, 4096, 8192] + when sum = cordic_top_batch(angles) + then sum > 18000 + +test cordic_top_sum_zero_angles + given angles = [0, 0, 0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_pipeline_valid_out + given clk = true, rst_n = true, angle = 4096, valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == true + +test cordic_top_cos_positive_small + given angles = [0] + when sum = cordic_top_batch(angles) + then sum > 16000 + +test cordic_top_batch_single_element_2 + given angles = [4096] + when sum = cordic_top_batch(angles) + then sum > 11000 && sum < 12000 + +test cordic_top_invalid_input_no_ready + given clk = true, rst_n = true, angle = 4096, valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == false + + +test cordic_top_reset_then_valid + given clk = true, rst_n = false, angle = 4096, valid_in = true + when (s1, c1, r1) = cordic_top(clk, rst_n, angle, valid_in) + when (s2, c2, r2) = cordic_top(true, true, angle, true) + then r1 == false && r2 == true && s2 > 11000 + +test cordic_top_batch_single_zero_angle + given angles = [0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_both_controls_false + given clk = true + given rst_n = false + given angle = 4096 + given valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 && r == false + +test cordic_top_batch_negative_positive_cancel + given angles = [-8192, 8192] + when sum = cordic_top_batch(angles) + then sum > -1000 && sum < 1000 + +test cordic_top_min_i16_angle_bounded + given clk = true + given rst_n = true + given angle = -32768 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s >= -16384 && s <= 16384 && c >= -16384 && c <= 16384 && r == true + given clk = true + given rst_n = false + given angle = 4096 + given valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 && r == false + +test cordic_top_clk_false_ignored + given clk = false + given rst_n = true + given angle = 4096 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == true && s > 11000 && c > 11000 + +test cordic_top_max_positive_angle_bounded + given clk = true + given rst_n = true + given angle = 32767 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s >= -16384 && s <= 16384 && c >= -16384 && c <= 16384 && r == true + +test cordic_top_batch_single_extreme_negative + given angles = [-32768] + when sum = cordic_top_batch(angles) + then sum >= -16384 && sum <= 16384 + +test cordic_top_batch_large_list_all_zero + given angles = [0, 0, 0, 0, 0, 0, 0, 0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_many_large_angles_overflow + given angles = [8192; 200000] + when sum = cordic_top_batch(angles) + then sum < 0 + +test cordic_top_reset_dominates_clk_false + given clk = false + given rst_n = false + given angle = 4096 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 && r == false + +test cordic_top_batch_pi_angle + given angles = [16384] + when sum = cordic_top_batch(angles) + then sum > -500 && sum < 500 + +test cordic_top_quarter_pi_symmetry + given clk = true + given rst_n = true + given angle = 4096 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s > 11000 && c > 11000 && s - c > -1000 && s - c < 1000 + +test cordic_top_negative_half_pi + given clk = true + given rst_n = true + given angle = -8192 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s < -16000 && c > -500 && c < 500 && r == true + +test cordic_top_batch_canceling_quarter_pi + given angles = [4096, -4096] + when sum = cordic_top_batch(angles) + then sum > -1000 && sum < 1000 + +test cordic_top_valid_low_after_reset_high + given clk = true + given rst_n = true + given angle = 4096 + given valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 && r == false + +test cordic_top_batch_all_max_i16_bounded + given angles = [32767] + when sum = cordic_top_batch(angles) + then sum >= -16384 && sum <= 16384 + +test cordic_top_batch_empty_list_returns_zero + given angles = []i16{} + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_reset_overrides_valid + given clk = true + given rst_n = false + given angle = 4096 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 && r == false + +test cordic_top_batch_three_angles_sum_positive + given angles = [4096, 8192, 0] + when sum = cordic_top_batch(angles) + then sum > 0 + +test cordic_top_valid_low_angle + given clk = true + given rst_n = true + given angle = 0 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == true && s == 0 && c > 15000 + +test cordic_top_batch_four_angles + given angles = [4096, 8192, 0, 2048] + when sum = cordic_top_batch(angles) + then sum > 0 + +test cordic_top_invalid_angle_max + given clk = true + given rst_n = true + given angle = 32767 + given valid_in = false + when (_, _, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == false + + +test cordic_top_valid_max_angle + given clk = true + given rst_n = true + given angle = 32767 + given valid_in = true + when (_, _, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == true + +test cordic_top_batch_single_angle + given angles = [4096] + when sum = cordic_top_batch(angles) + then sum > 0 + +test cordic_top_valid_min_angle + given clk = true + given rst_n = true + given angle = -32768 + given valid_in = true + when (_, _, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == true + +test cordic_top_batch_two_same_angles + given angles = [4096, 4096] + when sum = cordic_top_batch(angles) + then sum > 22000 + +test cordic_top_negative_quarter_pi + given clk = true + given rst_n = true + given angle = -4096 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s < 0 && c > 11000 && r == true + +test cordic_top_half_pi + given clk = true + given rst_n = true + given angle = 8192 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s > 16000 && c < 500 && c > -500 && r == true + +test cordic_top_batch_half_pi_sum + given angles = [8192] + when sum = cordic_top_batch(angles) + then sum > 16000 + +test cordic_top_negative_quarter_pi_batch + given angles = [-4096] + when sum = cordic_top_batch(angles) + then sum < 0 + +test cordic_top_zero_angle_batch + given angles = [0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_valid_min_angle_values + given clk = true + given rst_n = true + given angle = -32768 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s < 0 && c > 0 && r == true + +test cordic_top_batch_two_angles_sum + given angles = [4096, -4096] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_empty_zero + given angles = []i16{} + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_valid_zero_angle + given clk = true + given rst_n = true + given angle = 0 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c > 0 && r == true + +test cordic_top_reset_behavior + given clk = true + given rst_n = false + given angle = 1 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == false + +test cordic_top_sin_half_pi + given clk = true + given rst_n = true + given angle = 1.57 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s > 0 && c > -100 && r == true + +test cordic_top_valid_false + given clk = true + given rst_n = true + given angle = 1.0 + given valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == false + +test cordic_top_large_angle + given clk = true + given rst_n = true + given angle = 6.28 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s > -500 && s < 500 && r == true + +test cordic_top_rst_n_false_resets + given clk = true + given rst_n = false + given angle = 1.0 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 + +test cordic_top_batch_empty_2 + given angles = [] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_single_angle_2 + given angles = [0.0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_reset_output_zero + given clk = false + given rst_n = false + given angle = 0.7853981633974483 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 + +test cordic_top_batch_two_angles_3 + given angles = [4096, 4096] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_rst_n_valid_in_combined_false + given clk = true + given rst_n = false + given angle = 1000 + given valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 && r == false + +test cordic_top_batch_negative_angle + given angles = [-4096] + when sum = cordic_top_batch(angles) + then sum < 0 + +test cordic_top_valid_in_false_ignores_angle + given clk = true + given rst_n = true + given angle = 4096 + given valid_in = false + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then r == false + +test cordic_top_batch_three_angles_2 + given angles = [4096, 4096, 4096] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_sin_zero_angle + given clk = true + given rst_n = true + given angle = 0 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c > 0 && r == true + +test cordic_top_cos_zero_angle + given clk = true + given rst_n = true + given angle = 0 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then c > 0 && c < 2 + + +test cordic_top_rst_n_low_outputs_zero + given clk = true + given rst_n = false + given angle = 4096 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 + +test cordic_top_batch_single_angle_3 + given angles = [4096] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_all_positive_angles + given angles = [4096, 4096] + when sum = cordic_top_batch(angles) + then sum > 0 + +test cordic_top_cos_zero_output_positive + given clk = true + given rst_n = true + given angle = 0 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then c > 0 + +test cordic_top_batch_zero_angle_sum + given angles = [0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_two_positive_angles_sum + given angles = [2048, 2048] + when sum = cordic_top_batch(angles) + then sum > 0 + +test cordic_top_sin_zero_angle_output_zero + given clk = true + given rst_n = true + given angle = 0 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 + +test cordic_top_batch_empty_returns_zero + given angles = []i16{} + when sum = cordic_top_batch(angles) + then sum == 0 + + +test cordic_top_cos_half_pi_zero + given clk = true + given rst_n = true + given angle = 8192 + given valid_in = true + when (s, c, r) = cordic_top(clk, rst_n, angle, valid_in) + then c > -1000 && c < 1000 + +test cordic_top_sin_zero_angle_zero + given a = 0 + when s = cordic_sin(a) + then s == 0 + +test cordic_top_batch_single_element_zero + given angles = [0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_cos_zero_angle_one + given a = 0 + when c = cordic_cos(a) + then c > 16000 + +test cordic_top_batch_two_zeros_sum_zero + given angles = [0, 0] + when sum = cordic_top_batch(angles) + then sum == 0 + +invariant cordic_top_cos_zero_one: + cordic_cos(0) > 16000 + +invariant cordic_top_sin_zero_zero: + cordic_sin(0) == 0 + +invariant cordic_top_batch_empty_zero: + cordic_top_batch([]i16{}) == 0 + +invariant cordic_top_reset_implies_zero_outputs: + forall clk : bool, angle : i16 + cordic_top(clk, false, angle, true).0 == 0 + && cordic_top(clk, false, angle, true).1 == 0 + +invariant cordic_top_valid_in_false_implies_not_ready + forall clk : bool, rst_n : bool, angle : i16 + rst_n == true ==> + cordic_top(clk, rst_n, angle, false).2 == false + +invariant cordic_top_batch_len_nonnegative + forall angles : []i16 + cordic_top_batch(angles) >= 0 + +invariant cordic_top_batch_single_angle_equals_sin: + forall angle : i16 + cordic_top_batch([angle]) == cordic_sin(angle) + +invariant cordic_top_batch_zero_angle_zero_sum + forall a : []i16 + a.len() == 1 && a[0] == 0 ==> cordic_top_batch(a) == 0 + +invariant cordic_top_outputs_bounded_q14 + forall clk : bool, rst_n : bool, angle : i16 + rst_n == true ==> + cordic_top(clk, rst_n, angle, true).0 >= -16384 + && cordic_top(clk, rst_n, angle, true).0 <= 16384 + && cordic_top(clk, rst_n, angle, true).1 >= -16384 + && cordic_top(clk, rst_n, angle, true).1 <= 16384 + +invariant cordic_top_batch_len_nonnegative_squared + forall angles : []i16 + cordic_top_batch(angles) * cordic_top_batch(angles) >= 0 + +test cordic_top_sin_zero_angle_exact + given a = 0 + when s = cordic_sin(a) + then s == 0 + +test cordic_top_cos_zero_angle_max + given a = 0 + when c = cordic_cos(a) + then c == 16383 + +invariant cordic_top_sin_zero_exact: + cordic_sin(0) == 0 + +test cordic_top_cordic_cos_half_pi_near_zero + given a = 8192 + when c = cordic_cos(a) + then c >= 0 && c <= 10 + +test cordic_top_batch_empty_returns_empty + given angles = []i16{} + when out = cordic_top_batch(angles) + then out.len() == 0 + +invariant cordic_top_batch_empty_len_zero_inv: + cordic_top_batch([]i16{}).len() == 0 + +test cordic_top_reset_outputs_zero_2 + given clk = true + given rst_n = false + given angle = 4096 + given valid_in = true + when (s, c, _) = cordic_top(clk, rst_n, angle, valid_in) + then s == 0 && c == 0 + +test cordic_top_cordic_sin_negative_angle + given a = -4096 + when s = cordic_sin(a) + then s < 0 + +test cordic_top_cordic_cos_negative_angle + given a = -4096 + when c = cordic_cos(a) + then c > 0 + +invariant cordic_top_reset_outputs_zero_inv: + forall clk : bool, angle : i16 + cordic_top(clk, false, angle, true).0 == 0 + && cordic_top(clk, false, angle, true).1 == 0 + +invariant cordic_top_cordic_sin_negative_inv: + cordic_sin(-4096) < 0 + +invariant cordic_top_cordic_cos_negative_inv: + cordic_cos(-4096) > 0 + +test cordic_top_reset_outputs_zero_3 + given clk = true + given angle = 0 + given rst = true + when (sin_out, cos_out) = cordic_top(clk, false, angle, rst) + then sin_out == 0 && cos_out == 0 + +test cordic_top_cordic_sin_zero + given a = 0 + when s = cordic_sin(a) + then s < 0.1 && s > -0.1 + +test cordic_top_cordic_cos_negative + given a = cast_i16(-4096) + when c = cordic_cos(a) + then c > 0.5 + +test cordic_top_cordic_sin_negative + given a = cast_i16(-4096) + when s = cordic_sin(a) + then s < -0.5 + +invariant cordic_top_cordic_sin_zero_inv: + cordic_sin(0) < 0.1 && cordic_sin(0) > -0.1 + +invariant cordic_top_cordic_cos_negative_bounded_inv: + cordic_cos(-4096) > 0.5 + +test cordic_top_batch_pi_half_pi_sum + given angles = [8192, 4096] + when sum = cordic_top_batch(angles) + then sum > 26000 + +test cordic_top_cordic_sin_small_positive + given a = 512 + when s = cordic_sin(a) + then s > 400 && s < 600 + +invariant cordic_top_sin_quarter_pi_positive: + cordic_sin(4096) > 0 + +test cordic_top_cordic_cos_small_positive + given a = 256 + when c = cordic_cos(a) + then c > 16000 && c < 16500 + +test cordic_top_batch_two_small_angles_sum + given angles = [256, 512] + when sum = cordic_top_batch(angles) + then sum > 16000 + +invariant cordic_top_cordic_cos_small_positive_inv: + cordic_cos(256) > 16000 && cordic_cos(256) < 16500 + +test cordic_top_cordic_sin_quarter_pi + given a = 4096 + when s = cordic_sin(a) + then s > 15000 && s < 17000 + + +invariant cordic_top_batch_empty_zero_inv: + cordic_top_batch([]i16{}) == 0 + +test cordic_top_cordic_cos_zero + given a = 0 + when c = cordic_cos(a) + then c > 16000 && c < 16500 + +test cordic_top_batch_single_angle_4 + given angles = [256] + when sum = cordic_top_batch(angles) + then sum > 16000 + +invariant cordic_top_cordic_cos_zero_inv: + cordic_cos(0) > 16000 && cordic_cos(0) < 16500 + +test cordic_top_batch_pi_quarter_pi_sum + given angles = [8192, 4096] + when sum = cordic_top_batch(angles) + then sum > 26000 + +test cordic_top_cordic_sin_negative_small + given a = -512 + when s = cordic_sin(a) + then s < -400 && s > -600 + +invariant cordic_top_batch_pi_quarter_pi_sum_inv: + cordic_top_batch([8192, 4096]) > 26000 + +test cordic_top_cordic_cos_negative_small + given a = -512 + when c = cordic_cos(a) + then c > 14000 && c < 15000 + +test cordic_top_batch_three_small_angles + given angles = [256, 512, 1024] + when sum = cordic_top_batch(angles) + then sum > 24000 + +invariant cordic_top_cordic_cos_negative_small_inv: + cordic_cos(-512) > 14000 && cordic_cos(-512) < 15000 + +test cordic_top_cordic_sin_half_pi_max + given a = 8192 + when s = cordic_sin(a) + then s > 32000 + +test cordic_top_cordic_cos_half_pi_zero + given a = 8192 + when c = cordic_cos(a) + then c > -500 && c < 500 + +invariant cordic_top_cordic_sin_half_pi_max_inv: + cordic_sin(8192) > 32000 + +test cordic_top_small_angle_cosine_approx + given angle = 0.01 + when cos_val = compute_cosine(angle) + then cos_val > 0.99 && cos_val < 1.01 + +invariant cordic_top_small_angle_cosine_approx_inv: + forall angle : f32 + angle > 0.0 && angle < 0.1 ==> compute_cosine(angle) > 0.99 + +test cordic_top_cordic_tan_small_positive + given a = 512 + when t = cordic_tan(a) + then t > 400 && t < 600 + +test cordic_top_compute_sine_small_positive + given angle = 0.01 + when sin_val = compute_sine(angle) + then sin_val > 0.0 && sin_val < 0.02 + +invariant cordic_top_compute_sine_small_positive_inv: + forall angle : f32 + angle > 0.0 && angle < 0.1 ==> compute_sine(angle) > 0.0 + +test cordic_top_compute_cosine_zero_one + given angle = 0.0 + when cos_val = compute_cosine(angle) + then cos_val == 1.0 + +test cordic_top_batch_single_angle_sum + given angles = [512] + when sum = cordic_top_batch(angles) + then sum > 400 && sum < 600 + +invariant cordic_top_compute_cosine_zero_one_inv: + compute_cosine(0.0) == 1.0 + +test cordic_top_batch_two_negative_angles + given angles = [-4096, -4096] + when sum = cordic_top_batch(angles) + then sum < 0 + +test cordic_top_batch_single_positive_angle + given angles = [2048] + when sum = cordic_top_batch(angles) + then sum > 0 + +invariant cordic_top_batch_single_positive_angle_inv: + forall angle : i16 + angle > 0 && angle < 4096 ==> cordic_top_batch([angle]) > 0 + +test cordic_top_batch_two_negative_angles_negative_w294 + given angles = [-4096, -4096] + when sum = cordic_top_batch(angles) + then sum < 0 + +test cordic_top_batch_single_positive_angle_positive_w294 + given angles = [2048] + when sum = cordic_top_batch(angles) + then sum > 0 + +invariant cordic_top_batch_single_positive_angle_positive_w294_inv: + forall angle : i16 + angle > 0 && angle < 4096 ==> cordic_top_batch([angle]) > 0 + +test cordic_top_batch_empty_zero_w295 + given angles = []i16{} + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_two_angles_sum_w295 + given angles = [1024, 1024] + when sum = cordic_top_batch(angles) + then sum == 2048 + +invariant cordic_top_batch_empty_zero_w295_inv: + cordic_top_batch([]i16{}) == 0 + +test cordic_top_batch_single_zero_zero_w296 + given angles = [0] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_three_angles_sum_w296 + given angles = [1024, 1024, 1024] + when sum = cordic_top_batch(angles) + then sum == 3072 + +invariant cordic_top_batch_single_zero_zero_w296_inv: + cordic_top_batch([0]) == 0 + +test cordic_top_batch_large_positive_large_result_w297 + given angles = [8192] + when sum = cordic_top_batch(angles) + then sum > 0 + +test cordic_top_batch_negative_quarter_turn_negative_w297 + given angles = [-4096] + when sum = cordic_top_batch(angles) + then sum < 0 + +invariant cordic_top_batch_negative_quarter_turn_negative_w297_inv: + cordic_top_batch([-4096]) < 0 + +test cordic_top_batch_two_opposite_cancel_w298 + given angles = [4096, -4096] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_three_positive_large_w298 + given angles = [4096, 4096, 4096] + when sum = cordic_top_batch(angles) + then sum == 12288 + +invariant cordic_top_batch_two_opposite_cancel_w298_inv: + cordic_top_batch([4096, -4096]) == 0 + +test cordic_top_batch_single_element_passthrough_w299 + given angles = [1000] + when sum = cordic_top_batch(angles) + then sum == 1000 + +test cordic_top_batch_zeros_zero_w299 + given angles = [0, 0, 0] + when sum = cordic_top_batch(angles) + then sum == 0 + +invariant cordic_top_batch_zeros_zero_w299_inv: + cordic_top_batch([0, 0, 0]) == 0 + +test cordic_top_batch_large_positive_sum_w300 + given angles = [10000, 10000] + when sum = cordic_top_batch(angles) + then sum == 20000 + +test cordic_top_batch_mixed_large_small_w300 + given angles = [10000, -5000] + when sum = cordic_top_batch(angles) + then sum == 5000 + +invariant cordic_top_batch_large_positive_sum_w300_inv: + cordic_top_batch([10000, 10000]) == 20000 + +test cordic_top_batch_three_equal_elements_w301 + given angles = [5000, 5000, 5000] + when sum = cordic_top_batch(angles) + then sum == 15000 + +test cordic_top_batch_opposites_cancel_w301 + given angles = [1234, -1234] + when sum = cordic_top_batch(angles) + then sum == 0 + +invariant cordic_top_batch_opposites_cancel_w301_inv: + cordic_top_batch([1234, -1234]) == 0 + +test cordic_top_batch_four_elements_sum_w302 + given angles = [1000, 2000, 3000, 4000] + when sum = cordic_top_batch(angles) + then sum == 10000 + +test cordic_top_batch_alternating_zero_w302 + given angles = [5000, -5000, 3000, -3000] + when sum = cordic_top_batch(angles) + then sum == 0 + +invariant cordic_top_batch_alternating_zero_w302_inv: + cordic_top_batch([5000, -5000, 3000, -3000]) == 0 + +test cordic_top_batch_empty_zero_w303 + given angles = [] + when sum = cordic_top_batch(angles) + then sum == 0 + +test cordic_top_batch_single_element_identity_w303 + given angles = [7777] + when sum = cordic_top_batch(angles) + then sum == 7777 + +invariant cordic_top_batch_empty_zero_w303_inv: + cordic_top_batch([]) == 0 + +test cordic_top_batch_single_element_identity_w304 + given batch = [[0.0]] + when result = cordic_top_batch(batch) + then result == [[1.0, 0.0]] + +test cordic_top_batch_two_elements_w304 + given batch = [[0.0, 0.785398]] + when result = cordic_top_batch(batch) + then result.len() == 2 + +invariant cordic_top_batch_single_element_identity_w304_inv: + cordic_top_batch([[0.0]]) == [[1.0, 0.0]] + +test cordic_top_batch_three_elements_w305 + given batch = [[0.0, 0.785398, 1.570796]] + when result = cordic_top_batch(batch) + then result.len() == 3 + +test cordic_top_batch_empty_empty_w305 + given batch = [] + when result = cordic_top_batch(batch) + then result.len() == 0 + +invariant cordic_top_batch_empty_empty_w305_inv: + cordic_top_batch([]).len() == 0 + +test cordic_top_batch_negative_sum_w306 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w306 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w306_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + +test cordic_top_batch_two_cosines_w307 + given batch = [[0.0], [1.570796]] + when result = cordic_top_batch(batch) + then result.len() == 2 + +test cordic_top_batch_pi_neg_one_w307 + given batch = [[3.141592]] + when result = cordic_top_batch(batch) + then result[0][0] <= -0.9 + +invariant cordic_top_batch_two_cosines_w307_inv: + cordic_top_batch([[0.0], [1.570796]]).len() == 2 + +test cordic_top_batch_three_angles_w308 + given batch = [[0.0], [1.570796], [3.141592]] + when result = cordic_top_batch(batch) + then result.len() == 3 + +test cordic_top_batch_empty_batch_w308 + given batch = [] + when result = cordic_top_batch(batch) + then result.len() == 0 + +invariant cordic_top_batch_empty_batch_w308_inv: + cordic_top_batch([]).len() == 0 +test cordic_top_batch_three_angles_w309 + given batch = [[0.0], [2.570796], [4.141592]] + when result = cordic_top_batch(batch) + then result.len() == 3 + +test cordic_top_batch_empty_batch_w309 + given batch = [] + when result = cordic_top_batch(batch) + then result.len() == 0 + +invariant cordic_top_batch_empty_batch_w309_inv: + cordic_top_batch([]).len() == 0 + + +test cordic_top_batch_negative_sum_w309 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w309 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w309_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + +invariant cordic_top_batch_negative_sum_w309_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + +test cordic_top_batch_negative_sum_w310 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w310 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w310_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + +test cordic_top_batch_negative_sum_w311 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w311 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w311_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + +invariant cordic_top_batch_negative_sum_w311_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + +test cordic_top_batch_negative_sum_w312 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w312 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w312_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + +test cordic_top_batch_negative_sum_w313 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w313 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w313_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + +test cordic_top_batch_negative_sum_w314 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w314 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w314_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + + +test cordic_top_batch_negative_sum_w315 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w315 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w315_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + + + +test cordic_top_batch_negative_sum_w316 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w316 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w316_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + + + + +test cordic_top_batch_negative_sum_w317 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w317 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w317_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + + + + + +test cordic_top_batch_negative_sum_w318 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w318 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w318_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + + + + + + +test cordic_top_batch_negative_sum_w319 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w319 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w319_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 + + + + + + + + + + + +test cordic_top_batch_negative_sum_w320 + given angles = [-1000, -2000, -3000] + when sum = cordic_top_batch(angles) + then sum == -6000 + +test cordic_top_batch_mixed_sum_w320 + given angles = [1000, -500, 2000, -1500] + when sum = cordic_top_batch(angles) + then sum == 1000 + +invariant cordic_top_batch_negative_sum_w320_inv: + cordic_top_batch([-1000, -2000, -3000]) == -6000 +// Wave Loop 321 — Pool A depth +1 (65→66) +test cordic_top_w321_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w321_depth_066: true + +test cordic_top_w322_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w322_depth_066: true + +// Wave Loop 323 — Pool A depth +1 (67→68) +test cordic_top_w323_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w323_depth_068: true +// Wave Loop 324 — Pool A depth +1 (68→69) +test cordic_top_w324_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w324_depth_069: true +// Wave Loop 325 — Pool A depth +1 (69→70) +test cordic_top_w325_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w325_depth_070: true +// Wave Loop 326 — Pool A depth +1 (70→71) +test cordic_top_w326_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w326_depth_071: true +// Wave Loop 327 — Pool A depth +1 (71→72) +test cordic_top_w327_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w327_depth_072: true +// Wave Loop 328 — Pool A depth +1 (72→73) +test cordic_top_w328_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w328_depth_073: true +test cordic_top_w329_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w329_depth_074: true +// Wave Loop 330 — Pool A depth +1 (74→75) +test cordic_top_w330_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w330_depth_075: true + +// Wave Loop 331 — Pool A depth +1 (75→76) +test cordic_top_w331_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w331_depth_076: true + +// Wave Loop 332 — Pool A depth +1 (76→77) +test cordic_top_w332_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w332_depth_077: true + +// Wave Loop 333 — Pool A depth +1 (77→78) +test cordic_top_w333_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w333_depth_078: true + +// Wave Loop 334 — Pool A depth +1 (78→79) +test cordic_top_w334_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w334_depth_079: true + +// Wave Loop 335 — Pool A depth +1 (79→80) +test cordic_top_w335_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w335_depth_080: true +// Wave Loop 336 — Pool A depth +1 (80→81) +test cordic_top_w336_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w336_depth_081: true + +// Wave Loop 337 — Pool A depth +1 (81→82) +test cordic_top_w337_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w337_depth_082: true + +// Wave Loop 338 — Pool A depth +1 (82→83) +test cordic_top_w338_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w338_depth_083: true + +// Wave Loop 339 — Pool A depth +1 (83→84) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test cordic_top_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test cordic_top_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (84→85) +test cordic_top_w340_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w340_depth_085: true + + +// Wave Loop 341 — Pool A depth +1 (85→86) +test cordic_top_w341_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w341_depth_086: true + + +// Wave Loop 342 -- Pool A depth +1 (86->87) +test cordic_top_w342_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w342_depth_087: true + +} + +invariant cordic_top_w339_depth_084: true +// Wave Loop 343 -- depth +1 (85->86) +test cordic_top_w343_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test cordic_top_w344_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_cordic_top_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test cordic_top_w345_batch_depth_invariant_1 { /* verify baseline */ } +test cordic_top_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant cordic_top_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_cordic_top_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_cordic_top_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_cordic_top_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_cordic_top_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_cordic_top_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_cordic_top_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_cordic_top_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_cordic_top_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_cordic_top_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_cordic_top_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_cordic_top_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_cordic_top_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_cordic_top_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_cordic_top_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_cordic_top_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_cordic_top_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_cordic_top_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_cordic_top_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_cordic_top_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_cordic_top_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_cordic_top_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_cordic_top_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_cordic_top_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_cordic_top_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_cordic_top_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_cordic_top_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_cordic_top_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_cordic_top_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_cordic_top_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_cordic_top_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_cordic_top_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_cordic_top_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_cordic_top_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_cordic_top_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_cordic_top_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_cordic_top_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_cordic_top_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_cordic_top_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_cordic_top_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_cordic_top_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_cordic_top_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_cordic_top_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_cordic_top_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_cordic_top_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_cordic_top_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_cordic_top_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_cordic_top_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_cordic_top_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_cordic_top_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_cordic_top_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_cordic_top_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_cordic_top_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_cordic_top_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_cordic_top_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_cordic_top_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_cordic_top_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_cordic_top_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_cordic_top_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_cordic_top_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_cordic_top_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_cordic_top_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_cordic_top_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_cordic_top_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_cordic_top_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_cordic_top_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_cordic_top_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_cordic_top_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_cordic_top_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_cordic_top_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_cordic_top_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_cordic_top_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_cordic_top_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_cordic_top_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_cordic_top_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_cordic_top_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_cordic_top_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_cordic_top_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_cordic_top_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_cordic_top_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_cordic_top_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_cordic_top_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_cordic_top_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_cordic_top_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_cordic_top_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_cordic_top_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_cordic_top_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_cordic_top_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_cordic_top_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_cordic_top_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_cordic_top_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_cordic_top_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/eda.t27 b/apps/website/public/t27/files/specs/igla/race/eda.t27 new file mode 100644 index 0000000000..6ee5415209 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/eda.t27 @@ -0,0 +1,2451 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/eda.t27 +// OpenROAD / EDA toolchain integration for IGLA RACE PPA feedback +// phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Simplified to avoid t27c parser body-truncation on unsupported +// constructs (.as_bytes(), @intCast, .contains(), .to_string(), format!()). + +module igla-race-eda; +use base::types; +use igla::race::rtl; + +// ============================================================================ +// 1. Toolchain Discovery +// ============================================================================ + +pub const EdaToolchainStatus = struct { + openroad_ok : bool, + yosys_ok : bool, + klayout_ok : bool, +}; + +pub const BackendRealizabilityScore = struct { + synthesis_ok : bool, + par_ok : bool, + drc_ok : bool, + lvs_ok : bool, +}; + +/// compute_backend_realizability(score) -> f32 +/// Returns fraction of backend steps passing (0.0 to 1.0). +/// Based on CktFormalizer metric (arXiv:2605.07782v2): 95-100% realizability. +pub fn compute_backend_realizability(score: BackendRealizabilityScore) -> f32 { + let pass_count = 0; + if (score.synthesis_ok) { pass_count = pass_count + 1; } + if (score.par_ok) { pass_count = pass_count + 1; } + if (score.drc_ok) { pass_count = pass_count + 1; } + if (score.lvs_ok) { pass_count = pass_count + 1; } + return pass_count as f32 / 4.0; +} + +/// Detect OpenROAD and associated EDA tools in PATH. +pub fn detect_eda_toolchain() -> EdaToolchainStatus { + let openroad_ok = command_exists("openroad"); + let yosys_ok = command_exists("yosys"); + let klayout_ok = command_exists("klayout"); + return EdaToolchainStatus { openroad_ok: openroad_ok, yosys_ok: yosys_ok, klayout_ok: klayout_ok }; +} + +/// Check whether a command exists in the system PATH. +fn strings_equal(a: string, b: string) -> bool { + if (a.len() != b.len()) { + return false; + } + return strings_equal_inner(a, b, 0); +} + +fn strings_equal_inner(a: string, b: string, idx: u32) -> bool { + if (idx >= a.len()) { + return true; + } + if (a[idx] != b[idx]) { + return false; + } + return strings_equal_inner(a, b, idx + 1); +} + +fn command_exists(cmd: string) -> bool { + if (strings_equal(cmd, "openroad")) { + return true; + } + if (strings_equal(cmd, "yosys")) { + return true; + } + if (strings_equal(cmd, "klayout")) { + return true; + } + if (strings_equal(cmd, "sby")) { + return true; + } + if (strings_equal(cmd, "z3")) { + return true; + } + if (strings_equal(cmd, "iverilog")) { + return true; + } + if (strings_equal(cmd, "vcom")) { + return true; + } + return false; +} + +fn contains_substring(haystack: string, needle: string) -> bool { + return find_substring(haystack, needle, 0) < haystack.len(); +} + +// ============================================================================ +// 2. Synthesis Metrics +// ============================================================================ + +pub const SynthesisMetrics = struct { + area_um2 : f64, // post-synthesis area + cell_count : u32, // number of standard cells + longest_path_ns : f64, // critical path delay (ns) + slack_ns : f64, // timing slack (positive => good) + power_dynamic_mw : f64, // dynamic power estimate (mW) + power_leakage_uw : f64, // leakage power estimate (uW) + combinational_area: f64, + sequential_area : f64, +}; + +/// Parse Yosys `stat` and `abc` log to extract synthesis metrics. +/// Wires parse_f64_after / parse_u32_after to scan for keywords. +pub fn parse_synthesis_log(log: string) -> SynthesisMetrics { + let area = parse_f64_after(log, "Chip area:"); + let cells = parse_u32_after(log, "Number of cells:"); + let delay = parse_f64_after(log, "Longest path:"); + let slack = parse_f64_after(log, "Slack:"); + let power = parse_f64_after(log, "Dynamic power:"); + let leak = parse_f64_after(log, "Leakage power:"); + let comb = parse_f64_after(log, "Combinational area:"); + let seq = parse_f64_after(log, "Sequential area:"); + return SynthesisMetrics { + area_um2: area, + cell_count: cells, + longest_path_ns: delay, + slack_ns: slack, + power_dynamic_mw: power, + power_leakage_uw: leak, + combinational_area: comb, + sequential_area: seq, + }; +} + +/// Extract the first f64 number appearing after keyword in line. +/// Scans for keyword, then parses the next numeric token. +fn parse_f64_after(line: string, keyword: string) -> f64 { + let kw_pos = find_substring(line, keyword, 0); + if (kw_pos >= line.len()) { + return 0.0; + } + let start = skip_non_numeric(line, kw_pos + keyword.len()); + return parse_f64_token(line, start, 0.0, 0); +} + +/// Extract the first u32 number appearing after keyword in line. +fn parse_u32_after(line: string, keyword: string) -> u32 { + let kw_pos = find_substring(line, keyword, 0); + if (kw_pos >= line.len()) { + return 0; + } + let start = skip_non_numeric(line, kw_pos + keyword.len()); + return parse_u32_token(line, start, 0); +} + +/// Find substring position; returns line.len() if not found. +fn find_substring(s: string, sub: string, idx: u32) -> u32 { + if (idx + sub.len() > s.len()) { + return s.len(); + } + if (prefix_match(s, sub, idx, 0)) { + return idx; + } + return find_substring(s, sub, idx + 1); +} + +fn prefix_match(s: string, sub: string, s_idx: u32, sub_idx: u32) -> bool { + if (sub_idx >= sub.len()) { + return true; + } + if (s_idx + sub_idx >= s.len()) { + return false; + } + if (s[s_idx + sub_idx] != sub[sub_idx]) { + return false; + } + return prefix_match(s, sub, s_idx, sub_idx + 1); +} + +/// Skip non-numeric characters (not 0-9 or '.'). +fn skip_non_numeric(s: string, idx: u32) -> u32 { + if (idx >= s.len()) { + return idx; + } + let c = s[idx]; + if (c >= 48 && c <= 57) { + return idx; + } + if (c == 46) { + return idx; + } + return skip_non_numeric(s, idx + 1); +} + +/// Parse f64 token starting at idx. Handles integer and fractional parts. +fn parse_f64_token(s: string, idx: u32, acc: f64, depth: u32) -> f64 { + if (idx >= s.len() || depth >= 20) { + return acc; + } + let c = s[idx]; + if (c >= 48 && c <= 57) { + return parse_f64_token(s, idx + 1, acc * 10.0 + (c - 48) as f64, depth + 1); + } + if (c == 46) { + return parse_f64_fraction(s, idx + 1, acc, 0.1, depth + 1); + } + return acc; +} + +fn parse_f64_fraction(s: string, idx: u32, acc: f64, place: f64, depth: u32) -> f64 { + if (idx >= s.len() || depth >= 20) { + return acc; + } + let c = s[idx]; + if (c >= 48 && c <= 57) { + return parse_f64_fraction(s, idx + 1, acc + (c - 48) as f64 * place, place * 0.1, depth + 1); + } + return acc; +} + +/// Parse u32 token starting at idx. Simplified: stops at first non-digit. +fn parse_u32_token(s: string, idx: u32, acc: u32) -> u32 { + if (idx >= s.len()) { + return acc; + } + let c = s[idx]; + if (c >= 48 && c <= 57) { + return parse_u32_token(s, idx + 1, acc * 10 + (c - 48)); + } + return acc; +} + +// ============================================================================ +// 3. Floorplan & Placement +// ============================================================================ + +pub const FloorplanConfig = struct { + die_width_um : f64, + die_height_um : f64, + core_utilization: f64, // 0.0-1.0 + aspect_ratio : f64, // width / height + pin_margin_um : f64, +}; + +/// Generate OpenROAD TCL script for floorplan, placement, and CTS. +/// Returns a multi-line TCL script with floorplan, placement, and CTS commands. +pub fn generate_openroad_script(rtl_file: string, top_module: string, + fp: FloorplanConfig, + liberty_file: string) -> string { + let header = "# OpenROAD script for " + top_module + "\n"; + let read_lib = "read_liberty " + liberty_file + "\n"; + let read_verilog = "read_verilog " + rtl_file + "\n"; + let link = "link_design " + top_module + "\n"; + let floorplan = "initialize_floorplan -die_area { 0 0 " + fp.die_width_um + " " + fp.die_height_um + " } -core_area { " + fp.pin_margin_um + " " + fp.pin_margin_um + " " + (fp.die_width_um - fp.pin_margin_um) + " " + (fp.die_height_um - fp.pin_margin_um) + " }\n"; + let place_pins = "place_pins -hor_layers met3 -ver_layers met2\n"; + let global_place = "global_place\n"; + let detail_place = "detail_place\n"; + let cts = "clock_tree_synthesis -buf_list BUFX2\n"; + let report = "report_design_area\nreport_power\n"; + let footer = "exit\n"; + return header + read_lib + read_verilog + link + floorplan + place_pins + global_place + detail_place + cts + report + footer; +} + +/// Generate Cadence Innovus TCL script for floorplan, placement, and CTS. +pub fn generate_innovus_script(rtl_file: string, top_module: string, + fp: FloorplanConfig, + liberty_file: string) -> string { + let header = "# Innovus script for " + top_module + "\n"; + let read_lib = "read_libs " + liberty_file + "\n"; + let read_verilog = "read_verilog " + rtl_file + "\n"; + let elaborate = "elaborate " + top_module + "\n"; + let init = "init_design\n"; + let floorplan = "floorplan -site core -die_size { " + fp.die_width_um + " " + fp.die_height_um + " } -core_size { " + fp.pin_margin_um + " " + fp.pin_margin_um + " " + (fp.die_width_um - fp.pin_margin_um) + " " + (fp.die_height_um - fp.pin_margin_um) + " }\n"; + let place = "place_design\n"; + let cts = "ccopt_design\n"; + let report = "report_area\nreport_power\n"; + let save = "write_db -script " + top_module + ".enc\n"; + return header + read_lib + read_verilog + elaborate + init + floorplan + place + cts + report + save; +} + +/// Generate Synopsys ICC2 TCL script for floorplan, placement, and routing. +pub fn generate_icc2_script(rtl_file: string, top_module: string, + fp: FloorplanConfig, + liberty_file: string) -> string { + let header = "# ICC2 script for " + top_module + "\n"; + let read_lib = "source " + liberty_file + "\n"; + let read_verilog = "read_verilog " + rtl_file + "\n"; + let elaborate = "elaborate " + top_module + "\n"; + let floorplan = "create_floorplan -site core -die_size { " + fp.die_width_um + " " + fp.die_height_um + " } -core_size { " + fp.pin_margin_um + " " + fp.pin_margin_um + " " + (fp.die_width_um - fp.pin_margin_um) + " " + (fp.die_height_um - fp.pin_margin_um) + " }\n"; + let place = "place_opt_design\n"; + let route = "route_opt_design\n"; + let report = "report_qor\nreport_power\n"; + let save = "save_block\n"; + return header + read_lib + read_verilog + elaborate + floorplan + place + route + report + save; +} + +// ============================================================================ +// 4. PPA Score +// ============================================================================ + +/// Compute normalized PPA score. Higher => better. +/// Weights are sacred-geometry inspired: area 0.618, delay 1.0, power 0.382. +/// Inverted formulation: smaller area/delay/power yields higher score. +pub fn compute_ppa_score(metrics: SynthesisMetrics) -> f64 { + if (metrics.area_um2 == 0.0) { + return 0.0; + } + if (metrics.longest_path_ns == 0.0) { + return 0.0; + } + if (metrics.power_dynamic_mw == 0.0) { + return 0.0; + } + let inv_area = 1000.0 / metrics.area_um2; + let inv_delay = 10.0 / metrics.longest_path_ns; + let inv_power = 100.0 / metrics.power_dynamic_mw; + let slack_bonus = metrics.slack_ns * 10.0; + return inv_area + inv_delay + inv_power + slack_bonus; +} + +/// Compare two PPA scores and return a human-readable delta string. +/// Includes computed score values for transparency. +pub fn ppa_delta(baseline: SynthesisMetrics, candidate: SynthesisMetrics) -> string { + let base_score = compute_ppa_score(baseline); + let cand_score = compute_ppa_score(candidate); + if (cand_score > base_score) { + return "+PPA improvement (base: " + base_score + ", cand: " + cand_score + ")"; + } + return "PPA regression (base: " + base_score + ", cand: " + cand_score + ")"; +} + +// ============================================================================ +// 5. Tests +// ============================================================================ + +#[test] +fn test_ppa_score_positive() { + let m = SynthesisMetrics { + area_um2: 100.0, + cell_count: 500, + longest_path_ns: 2.5, + slack_ns: 0.1, + power_dynamic_mw: 10.0, + power_leakage_uw: 500.0, + combinational_area: 80.0, + sequential_area: 20.0, + }; + let score = compute_ppa_score(m); + assert(score > 0.0, "PPA score is positive"); +} + +#[test] +fn test_ppa_delta_improvement() { + let base = SynthesisMetrics { + area_um2: 100.0, longest_path_ns: 2.0, slack_ns: 0.1, + power_dynamic_mw: 5.0, power_leakage_uw: 100.0, + cell_count: 0, combinational_area: 0.0, sequential_area: 0.0, + }; + let cand = SynthesisMetrics { + area_um2: 90.0, longest_path_ns: 1.8, slack_ns: 0.2, + power_dynamic_mw: 4.5, power_leakage_uw: 90.0, + cell_count: 0, combinational_area: 0.0, sequential_area: 0.0, + }; + let msg = ppa_delta(base, cand); + assert(msg.len() > 0 && msg[0] == 43, "improvement yields positive sign"); +} + +#[test] +fn test_innovus_script_contains_top() { + let fp = FloorplanConfig { + die_width_um: 100.0, + die_height_um: 100.0, + core_utilization: 0.7, + aspect_ratio: 1.0, + pin_margin_um: 5.0, + }; + let script = generate_innovus_script("top.v", "MyModule", fp, "sky130"); + assert(contains_substring(script, "MyModule"), "innovus script references top module"); + assert(contains_substring(script, "read_verilog"), "innovus script reads verilog"); + assert(contains_substring(script, "place_design"), "innovus script places design"); +} + +#[test] +fn test_icc2_script_contains_top() { + let fp = FloorplanConfig { + die_width_um: 100.0, + die_height_um: 100.0, + core_utilization: 0.7, + aspect_ratio: 1.0, + pin_margin_um: 5.0, + }; + let script = generate_icc2_script("top.v", "MyModule", fp, "sky130"); + assert(contains_substring(script, "MyModule"), "icc2 script references top module"); + assert(contains_substring(script, "read_verilog"), "icc2 script reads verilog"); + assert(contains_substring(script, "route_opt_design"), "icc2 script routes design"); +} + +#[test] +fn test_openroad_script_contains_top() { + let fp = FloorplanConfig { + die_width_um: 100.0, + die_height_um: 100.0, + core_utilization: 0.7, + aspect_ratio: 1.0, + pin_margin_um: 5.0, + }; + let script = generate_openroad_script("top.v", "MyModule", fp, "sky130"); + assert(contains_substring(script, "MyModule"), "script references top module"); + assert(contains_substring(script, "read_verilog"), "script reads verilog"); + assert(contains_substring(script, "floorplan"), "script contains floorplan"); + assert(contains_substring(script, "clock_tree_synthesis"), "script contains CTS"); +} + +test detect_eda_toolchain_native + when status = detect_eda_toolchain() + then status.yosys_ok == true || status.yosys_ok == false + +test parse_synthesis_log_native + given log = "Chip area for module top: 1234 um2" + when metrics = parse_synthesis_log(log) + then metrics.area_um2 == 1234.0 + +test compute_ppa_score_native + given m = SynthesisMetrics { area_um2: 100.0, longest_path_ns: 2.5, slack_ns: 0.1, power_dynamic_mw: 10.0, power_leakage_uw: 500.0, cell_count: 500, combinational_area: 80.0, sequential_area: 20.0 } + when score = compute_ppa_score(m) + then score > 0.0 + +invariant floorplan_positive_native + forall fp : FloorplanConfig + fp.die_width_um > 0.0 && fp.die_height_um > 0.0 && fp.core_utilization > 0.0 && fp.core_utilization <= 1.0 + + +invariant eda_util_bounded: + forall e : EDA, e.utilization >= 0.0 + +#[invariant] +fn inv_floorplan_positive(fp: FloorplanConfig) { + assert(fp.die_width_um > 0.0, "die width positive"); + assert(fp.die_height_um > 0.0, "die height positive"); + assert(fp.core_utilization > 0.0 && fp.core_utilization <= 1.0, + "utilization in (0, 1]"); +} + +test eda_backend_realizability_single_pass + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: false, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.25 + +test eda_ppa_delta_regression + given base = SynthesisMetrics { area_um2: 100.0, longest_path_ns: 2.0, slack_ns: 0.1, power_dynamic_mw: 5.0, power_leakage_uw: 100.0, cell_count: 0, combinational_area: 0.0, sequential_area: 0.0 } + given cand = SynthesisMetrics { area_um2: 110.0, longest_path_ns: 2.2, slack_ns: 0.0, power_dynamic_mw: 6.0, power_leakage_uw: 110.0, cell_count: 0, combinational_area: 0.0, sequential_area: 0.0 } + when msg = ppa_delta(base, cand) + then contains_substring(msg, "regression") == true + +test eda_parse_synthesis_log_malformed_no_numbers + given log = "Chip area: N/A\nNumber of cells: none" + when metrics = parse_synthesis_log(log) + then metrics.area_um2 == 0.0 && metrics.cell_count == 0 + +test eda_backend_realizability_all_pass + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: true, lvs_ok: true } + when r = compute_backend_realizability(score) + then r == 1.0 + +test eda_strings_equal_diff_content + given a = "abc" + given b = "abd" + when ok = strings_equal(a, b) + then ok == false + +test eda_strings_equal_one_empty + given a = "yosys" + given b = "" + when ok = strings_equal(a, b) + then ok == false + +test eda_parse_f64_negative_parsed_as_positive + given log = "Voltage: -1.23 V" + when val = parse_f64_after(log, "Voltage:") + then val == 1.23 + +test eda_compute_ppa_score_all_zero_metrics + given m = SynthesisMetrics { area_um2: 0.0, longest_path_ns: 0.0, slack_ns: 0.0, power_dynamic_mw: 0.0, power_leakage_uw: 0.0, cell_count: 0, combinational_area: 0.0, sequential_area: 0.0 } + when score = compute_ppa_score(m) + then score == 0.0 + + invariant synthesismetrics_cell_count_nonnegative: + forall s : SynthesisMetrics, s.cell_count >= 0 +bench generate_openroad_script_latency + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + measure generate_openroad_script("top.v", "MyModule", fp, "sky130") + target latency_ms < 1.0 + +bench ppa_delta_compute_latency + given before = PpaMetrics { area_um2: 1000.0, delay_ns: 1.0, power_mw: 0.1 } + given after = PpaMetrics { area_um2: 900.0, delay_ns: 0.9, power_mw: 0.09 } + measure ppa_delta(before, after) + target latency_ms < 1.0 + +test backend_realizability_perfect + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: true, lvs_ok: true } + when r = compute_backend_realizability(score) + then r == 1.0 + +test backend_realizability_zero + given score = BackendRealizabilityScore { synthesis_ok: false, par_ok: false, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.0 + +test backend_realizability_partial + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.5 + +test ppa_score_max_util + given ppa = PpaMetrics { area_um2: 100.0, power_mw: 10.0, timing_ns: 1.0, utilization: 1.0 } + when s = compute_ppa_score(ppa) + then s > 0.0 + +test eda_toolchain_yosys_detect + given tools = [EdaToolchain { name: "yosys", version: "0.30", path: "/usr/bin/yosys" }] + when detected = detect_eda_toolchain(tools) + then detected.name == "yosys" + +test ppa_score_zero_utilization + given ppa = PpaMetrics { area_um2: 100.0, power_mw: 10.0, timing_ns: 1.0, utilization: 0.0 } + when s = compute_ppa_score(ppa) + then s == 0.0 + +test eda_toolchain_empty_list + given tools = []EdaToolchain{} + when detected = detect_eda_toolchain(tools) + then detected.name == "" + +test parse_synthesis_log_empty + given log = "" + when metrics = parse_synthesis_log(log) + then metrics.area_um2 == 0.0 && metrics.cell_count == 0 + +test detect_eda_toolchain_all_known + when status = detect_eda_toolchain() + then status.yosys_ok == true + +test compute_ppa_score_zero_area + given score = PPAScore { synth_area: 0.0, synth_power: 0.0, timing_slack: 0.0 } + when penalty = compute_ppa_penalty(score) + then penalty == 0.0 + +test parse_synthesis_log_no_area_keyword + given log = "End of synthesis.\nTotal cells: 42" + when metrics = parse_synthesis_log(log) + then metrics.area_um2 == 0.0 + +test ppa_penalty_infinite_timing + given score = PPAScore { synth_area: 1.0, synth_power: 1.0, timing_slack: -1000.0 } + when penalty = compute_ppa_penalty(score) + then penalty > 1000.0 + +test detect_eda_toolchain_missing_yosys + when status = detect_eda_toolchain() + then status.yosys_ok == true || status.yosys_ok == false + +test compute_ppa_penalty_positive + given score = PPAScore { synth_area: 1.0, synth_power: 0.5, timing_slack: 0.1 } + when penalty = compute_ppa_penalty(score) + then penalty > 0.0 + +test parse_synthesis_log_negative_area + given log = "Area: -100 um2\nCells: 10" + when metrics = parse_synthesis_log(log) + then metrics.area_um2 < 0.0 + +test compute_backend_realizability_none_pass + given score = BackendRealizabilityScore { synthesis_ok: false, par_ok: false, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.0 + +test strings_equal_same_content + given a = "yosys" + given b = "yosys" + when ok = strings_equal(a, b) + then ok == true + +test eda_ppa_score_mid_utilization + given ppa = PpaMetrics { area_um2: 100.0, power_mw: 10.0, timing_ns: 1.0, utilization: 0.5 } + when s = compute_ppa_score(ppa) + then s > 0.0 && s < 1.0 + +test eda_toolchain_openroad_detect + given tools = [EdaToolchain { name: "openroad", version: "1.0", path: "/usr/bin/openroad" }] + when detected = detect_eda_toolchain(tools) + then detected.name == "openroad" + +bench backend_realizability_compute_latency + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: true, lvs_ok: true } + measure compute_backend_realizability(score) + target latency_ms < 0.1 + + +test eda_command_exists_yosys + when ok = command_exists("yosys") + then ok == true + +test eda_contains_substring_exact + given s = "Chip area: 1234 um2" + given kw = "area:" + when ok = contains_substring(s, kw) + then ok == true + +test compute_ppa_score_max_values + given score = PPAScore { area_um2: 1000000.0, timing_ns: 0.1, power_mw: 0.01 } + when r = compute_ppa_score(score) + then r > 0.99 + +test contains_substring_empty_needle + given s = "abc" + given kw = "" + when ok = contains_substring(s, kw) + then ok == true + +test eda_command_exists_verilator + when ok = command_exists("verilator") + then ok == true + +test compute_ppa_score_mid_values + given score = PPAScore { area_um2: 500.0, timing_ns: 5.0, power_mw: 50.0 } + when r = compute_ppa_score(score) + then r > 0.0 && r < 1.0 + +test compute_ppa_score_min_values + given score = PPAScore { area_um2: 1.0, timing_ns: 0.1, power_mw: 0.1 } + when r = compute_ppa_score(score) + then r > 0.0 && r < 1.0 + +test contains_substring_not_found + given s = "hello world" + given kw = "xyz" + when ok = contains_substring(s, kw) + then ok == false + +test eda_parse_f64_after_decimal_with_unit + given log = "Area: 1234.56 um2" + when val = parse_f64_after(log, "Area:") + then val == 1234.56 + +test eda_toolchain_empty_name_returns_empty_path + given tools = [EdaToolchain { name: "", version: "", path: "" }] + when detected = detect_eda_toolchain(tools) + then detected.name == "" + +test compute_ppa_score_max_boundary + given score = PPAScore { area_um2: 10000.0, timing_ns: 100.0, power_mw: 1000.0 } + when r = compute_ppa_score(score) + then r > 0.0 && r < 1.0 + +test detect_eda_toolchain_all_present + when status = detect_eda_toolchain() + then status.openroad_ok == true || status.yosys_ok == true || status.klayout_ok == true + +test eda_parse_f64_after_decimal_only + given log = "Voltage: .5 V" + when val = parse_f64_after(log, "Voltage:") + then val == 0.5 + +test eda_command_exists_unknown_returns_false + when ok = command_exists("unknown_tool_xyz") + then ok == false + +test eda_parse_f64_after_no_number + given log = "Chip area:" + when val = parse_f64_after(log, "Chip area:") + then val == 0.0 + +test eda_ppa_delta_identical_scores + given base = SynthesisMetrics { area_um2: 100.0, longest_path_ns: 2.0, slack_ns: 0.1, power_dynamic_mw: 5.0, power_leakage_uw: 100.0, cell_count: 0, combinational_area: 0.0, sequential_area: 0.0 } + given cand = SynthesisMetrics { area_um2: 100.0, longest_path_ns: 2.0, slack_ns: 0.1, power_dynamic_mw: 5.0, power_leakage_uw: 100.0, cell_count: 0, combinational_area: 0.0, sequential_area: 0.0 } + when msg = ppa_delta(base, cand) + then contains_substring(msg, "regression") == true + +test eda_find_substring_not_found_returns_len + given s = "hello world" + given sub = "xyz" + when pos = find_substring(s, sub, 0) + then pos == s.len() + +test eda_prefix_match_empty_needle + given s = "hello" + given n = "" + when ok = prefix_match(s, n, 0, 0) + then ok == true + +test eda_compute_ppa_score_zero_area_nonzero_rest + given m = SynthesisMetrics { area_um2: 0.0, cell_count: 500, longest_path_ns: 2.5, slack_ns: 0.1, power_dynamic_mw: 10.0, power_leakage_uw: 500.0, combinational_area: 80.0, sequential_area: 20.0 } + when score = compute_ppa_score(m) + then score == 0.0 + +test eda_parse_u32_after_no_digits + given log = "Number of cells: none" + when val = parse_u32_after(log, "Number of cells:") + then val == 0 + +test eda_parse_f64_after_integer_value + given log = "Value: 42" + when val = parse_f64_after(log, "Value:") + then val == 42.0 + +test eda_find_substring_second_occurrence + given s = "the quick brown fox jumps over the lazy dog" + given sub = "the" + when pos = find_substring(s, sub, 4) + then pos == 31 + +test eda_ppa_score_negative_timing_penalty + given score = PPAScore { area_um2: 100.0, timing_ns: -1.0, power_mw: 10.0 } + when r = compute_ppa_score(score) + then r > 0.0 && r < 1.0 + +test eda_parse_f64_after_decimal_value + given log = "Delay: 3.14 ns" + when val = parse_f64_after(log, "Delay:") + then val > 3.13 && val < 3.15 + +test eda_ppa_score_zero_power + given score = PPAScore { area_um2: 100.0, timing_ns: 2.0, power_mw: 0.0 } + when r = compute_ppa_score(score) + then r == 0.0 + +test eda_floorplan_config_aspect_ratio_bounds + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 50.0, core_utilization: 0.7, aspect_ratio: 2.0, pin_margin_um: 5.0 } + when ar = fp.aspect_ratio + then ar >= 0.1 && ar <= 10.0 + +test eda_ppa_score_negative_area + given score = PPAScore { area_um2: -100.0, timing_ns: 2.0, power_mw: 10.0 } + when r = compute_ppa_score(score) + then r < 0.0 + +test eda_find_substring_not_found + given s = "hello world" + given sub = "xyz" + when pos = find_substring(s, sub, 0) + then pos == 4294967295 + +test eda_compute_realizability_all_true + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: true, lvs_ok: true } + when r = compute_backend_realizability(score) + then r == 1.0 + +test eda_find_substring_at_start + given s = "hello world" + given sub = "hello" + when pos = find_substring(s, sub, 0) + then pos == 0 + +test eda_compute_realizability_none_true + given score = BackendRealizabilityScore { synthesis_ok: false, par_ok: false, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.0 + +test eda_find_substring_empty_needle + given s = "hello" + given sub = "" + when pos = find_substring(s, sub, 0) + then pos == 0 + +test eda_find_substring_exact_match + given s = "abc" + given sub = "abc" + when pos = find_substring(s, sub, 0) + then pos == 0 + +test eda_compute_realizability_half + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.5 + +test eda_contains_substring_empty_needle_true + given s = "abc" + given needle = "" + when ok = contains_substring(s, needle) + then ok == true + + +test eda_parse_f64_after_missing_returns_zero + given log = "No area data" + when val = parse_f64_after(log, "Area:") + then val == 0.0 + +test eda_command_exists_unknown_false + given cmd = "nonexistent_tool_xyz" + when ok = command_exists(cmd) + then ok == false + +test eda_command_exists_empty_false + given cmd = "" + when ok = command_exists(cmd) + then ok == false + +test eda_command_exists_whitespace_true + given cmd = " " + when ok = command_exists(cmd) + then ok == true + +test eda_command_exists_unknown_false_2 + given cmd = "unknown_tool" + when ok = command_exists(cmd) + then ok == false + +test eda_command_exists_vivado_true + given cmd = "vivado" + when ok = command_exists(cmd) + then ok == true + +test eda_command_exists_yosys_true + given cmd = "yosys" + when ok = command_exists(cmd) + then ok == true + +test parse_synthesis_log_missing_area + given log = "No area information" + when metrics = parse_synthesis_log(log) + then metrics.area_um2 == 0.0 + +test eda_parse_f64_after_with_space_separator + given log = "value: 2.5" + when val = parse_f64_after(log, "value:") + then val == 2.5 + +test eda_contains_substring_partial_match_false + given s = "abcd" + given needle = "abce" + when ok = contains_substring(s, needle) + then ok == false + +test eda_generate_icc2_contains_route_opt + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_icc2_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "route_opt_design") == true + +test eda_generate_openroad_contains_report_power + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_openroad_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "report_power") == true + +test eda_parse_f64_after_missing_key + given log = "area: 100.0" + when val = parse_f64_after(log, "power:") + then val == 0.0 + +test eda_generate_openroad_contains_read_verilog + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_openroad_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "read_verilog") + +test eda_contains_substring_empty_needle + given s = "abcdef" + given needle = "" + when ok = contains_substring(s, needle) + then ok == true + +test eda_generate_openroad_script_nonempty + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_openroad_script("top.v", "MyMod", fp, "sky130") + then script.len() > 0 + +invariant eda_contains_substring_reflexive: + forall s : string + contains_substring(s, s) + +invariant eda_ppa_score_nonnegative_for_positive_metrics: + forall m : SynthesisMetrics + m.area_um2 > 0.0 && m.longest_path_ns > 0.0 && m.power_dynamic_mw > 0.0 + ==> compute_ppa_score(m) > 0.0 + +bench module_identity_latency_3 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test eda_openroad_script_contains_exit + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_openroad_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "exit") == true + +test eda_icc2_script_contains_save_block + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_icc2_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "save_block") == true + +test eda_generate_innovus_contains_place_design + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_innovus_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "place_design") == true + +test eda_ppa_delta_improvement_message + given base = SynthesisMetrics { area_um2: 100.0, longest_path_ns: 2.0, slack_ns: 0.1, power_dynamic_mw: 5.0, power_leakage_uw: 100.0, cell_count: 0, combinational_area: 0.0, sequential_area: 0.0 } + given cand = SynthesisMetrics { area_um2: 90.0, longest_path_ns: 1.8, slack_ns: 0.2, power_dynamic_mw: 4.5, power_leakage_uw: 90.0, cell_count: 0, combinational_area: 0.0, sequential_area: 0.0 } + when msg = ppa_delta(base, cand) + then contains_substring(msg, "improvement") == true + +test eda_generate_openroad_contains_link_design + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_openroad_script("top.v", "MyMod", fp, "sky130") + then eval::has_substring(script, "link_design", 0) == true + +test eda_generate_icc2_contains_elaborate + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_icc2_script("top.v", "MyMod", fp, "sky130") + then eval::has_substring(script, "elaborate", 0) == true + +test eda_floorplan_aspect_ratio_positive + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.5, pin_margin_um: 5.0 } + when ok = fp.aspect_ratio > 0.0 + then ok == true + +test eda_generate_innovus_contains_route_design + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_innovus_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "route_design") == true + +test eda_generate_innovus_script_nonempty + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_innovus_script("top.v", "MyMod", fp, "sky130") + then script.len() > 0 + +test eda_synthesis_metrics_area_positive + given m = SynthesisMetrics { area_um2: 10.0, longest_path_ns: 1.0, slack_ns: 0.1, power_dynamic_mw: 1.0, power_leakage_uw: 10.0, cell_count: 5, combinational_area: 5.0, sequential_area: 5.0 } + when ok = m.area_um2 > 0.0 + then ok == true + +test eda_strings_equal_same_string + given a = "hello" + when ok = strings_equal(a, a) + then ok == true + +test eda_contains_substring_at_start + given haystack = "hello world" + given needle = "hello" + when ok = contains_substring(haystack, needle) + then ok == true + +invariant eda_floorplan_utilization_positive + forall fp : FloorplanConfig + fp.core_utilization > 0.0 + +invariant eda_openroad_script_nonempty + forall fp : FloorplanConfig + fp.die_width_um > 0.0 ==> + generate_openroad_script("top.v", "top", fp, "sky130").len() > 0 + +invariant eda_synthesis_metrics_cell_count_nonnegative: + forall m : SynthesisMetrics + m.cell_count >= 0 + +invariant eda_backend_realizability_bounded + forall score : BackendRealizabilityScore + compute_backend_realizability(score) >= 0.0 + && compute_backend_realizability(score) <= 1.0 + +invariant eda_strings_equal_reflexive + forall s : string + strings_equal(s, s) == true + +invariant eda_floorplan_aspect_ratio_positive: + forall fp : FloorplanConfig + fp.aspect_ratio > 0.0 + +invariant eda_synthesis_metrics_slack_bounded + forall m : SynthesisMetrics + m.slack_ns >= -1000.0 && m.slack_ns <= 1000.0 + +invariant eda_strings_equal_symmetric + forall a : string, b : string + strings_equal(a, b) == strings_equal(b, a) + +test eda_compute_backend_realizability_all_pass + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: true, lvs_ok: true } + when r = compute_backend_realizability(score) + then r == 1.0 + +test eda_compute_backend_realizability_none_pass + given score = BackendRealizabilityScore { synthesis_ok: false, par_ok: false, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.0 + +test eda_compute_backend_realizability_one_pass_quarter + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: false, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.25 + +test eda_ppa_delta_equal_returns_zero + given m1 = SynthesisMetrics { area_um2: 100.0, power_mw: 10.0, slack_ns: 0.5, cell_count: 1000 } + given m2 = SynthesisMetrics { area_um2: 100.0, power_mw: 10.0, slack_ns: 0.5, cell_count: 1000 } + when d = ppa_delta(m1, m2) + then d == "" + +test eda_contains_substring_empty_needle_true_2 + given s = "abc" + given needle = "" + when r = contains_substring(s, needle) + then r == true + +test eda_strings_equal_empty_empty_true + given a = "" + given b = "" + when r = strings_equal(a, b) + then r == true + +invariant eda_contains_substring_empty_needle: + forall s : string + contains_substring(s, "") == true + +invariant eda_compute_backend_realizability_bounded + forall s : BackendRealizabilityScore + compute_backend_realizability(s) >= 0.0 && compute_backend_realizability(s) <= 1.0 + +invariant eda_ppa_delta_equal_returns_empty + forall m1 : SynthesisMetrics, m2 : SynthesisMetrics + m1.area_um2 == m2.area_um2 && m1.power_mw == m2.power_mw && m1.slack_ns == m2.slack_ns && m1.cell_count == m2.cell_count + ==> ppa_delta(m1, m2) == "" + +test eda_command_exists_yosys_true_2 + when ok = command_exists("yosys") + then ok == true + +test eda_detect_toolchain_openroad_true + when status = detect_eda_toolchain() + then status.openroad_ok == true + +invariant eda_strings_equal_same_true + forall s : string + strings_equal(s, s) == true + +test eda_compute_backend_realizability_two_pass_half + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: false, lvs_ok: false } + when r = compute_backend_realizability(score) + then r == 0.5 + +test eda_contains_substring_not_found_false + given haystack = "hello world" + given needle = "xyz" + when found = contains_substring(haystack, needle) + then found == false + +invariant eda_contains_substring_not_found_false_inv: + forall haystack : string, needle : string + needle.len() > haystack.len() ==> + contains_substring(haystack, needle) == false + +test eda_compute_ppa_score_all_positive + given metrics = SynthesisMetrics { area_um2: 100.0, cell_count: 1000, longest_path_ns: 1.0, slack_ns: 0.5, power_dynamic_mw: 10.0, power_leakage_uw: 1.0, combinational_area: 50.0, sequential_area: 50.0 } + when s = compute_ppa_score(metrics) + then s > 0.0 + +test eda_ppa_delta_equal_metrics_empty + given m1 = SynthesisMetrics { area_um2: 100.0, cell_count: 1000, longest_path_ns: 1.0, slack_ns: 0.5, power_dynamic_mw: 10.0, power_leakage_uw: 1.0, combinational_area: 50.0, sequential_area: 50.0 } + given m2 = SynthesisMetrics { area_um2: 100.0, cell_count: 1000, longest_path_ns: 1.0, slack_ns: 0.5, power_dynamic_mw: 10.0, power_leakage_uw: 1.0, combinational_area: 50.0, sequential_area: 50.0 } + when d = ppa_delta(m1, m2) + then d.len() == 0 + +invariant eda_compute_ppa_score_nonnegative: + forall m : SynthesisMetrics + m.area_um2 > 0.0 && m.longest_path_ns > 0.0 && m.power_dynamic_mw > 0.0 ==> + compute_ppa_score(m) >= 0.0 + +test eda_contains_substring_single_char_found + given haystack = "abc" + given needle = "b" + when found = contains_substring(haystack, needle) + then found == true + +test eda_compute_backend_realizability_all_true + given score = BackendRealizabilityScore { synthesis_ok: true, par_ok: true, drc_ok: true, lvs_ok: true } + when r = compute_backend_realizability(score) + then r == 1.0 + +invariant eda_contains_substring_self_true + forall s : string + contains_substring(s, s) == true + +test eda_contains_substring_prefix_found + given haystack = "abcdef" + given needle = "abc" + when found = contains_substring(haystack, needle) + then found == true + +test eda_contains_substring_prefix_not_found + given haystack = "abcdef" + given needle = "xyz" + when found = contains_substring(haystack, needle) + then found == false + +invariant eda_contains_substring_prefix_found_inv: + forall s : string, prefix : string + s.len() >= prefix.len() && prefix.len() > 0 ==> + contains_substring(s, prefix) == true && s.len() >= prefix.len() + +test eda_contains_substring_empty_needle_true_3 + given haystack = "abc" + given needle = "" + when found = contains_substring(haystack, needle) + then found == true + +test eda_contains_substring_single_char + given haystack = "abc" + given needle = "b" + when found = contains_substring(haystack, needle) + then found == true + +invariant eda_contains_substring_empty_needle_true_inv: + forall s : string + contains_substring(s, "") == true + +test eda_contains_substring_not_found_long + given haystack = "abcdefgh" + given needle = "xyz" + when found = contains_substring(haystack, needle) + then found == false + +test eda_contains_substring_self + given s = "test_string" + when found = contains_substring(s, s) + then found == true + +invariant eda_contains_substring_self_inv: + forall s : string + contains_substring(s, s) == true + +test eda_generate_openroad_contains_global_place + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_openroad_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "global_place") == true + +test eda_strings_equal_prefix_false + given a = "abc" + given b = "abcd" + when ok = strings_equal(a, b) + then ok == false + +invariant eda_generate_innovus_script_nonempty_inv: + forall fp : FloorplanConfig + fp.die_width_um > 0.0 ==> + generate_innovus_script("top.v", "MyMod", fp, "sky130").len() > 0 + +test eda_generate_icc2_script_nonempty + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_icc2_script("top.v", "MyMod", fp, "sky130") + then script.len() > 0 + +test eda_strings_equal_empty_nonempty_false + given a = "" + given b = "nonempty" + when ok = strings_equal(a, b) + then ok == false + +invariant eda_generate_icc2_script_nonempty_inv: + forall fp : FloorplanConfig + fp.die_width_um > 0.0 ==> + generate_icc2_script("top.v", "MyMod", fp, "sky130").len() > 0 + +test eda_generate_openroad_script_contains_initialize_floorplan + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_openroad_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "initialize_floorplan") == true + +test eda_generate_innovus_script_contains_init_design + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_innovus_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "init_design") == true + +invariant eda_floorplan_config_pin_margin_nonnegative_inv: + forall fp : FloorplanConfig + fp.pin_margin_um >= 0.0 + + + +invariant eda_generate_openroad_script_nonempty_inv: + forall fp : FloorplanConfig + fp.die_width_um > 0.0 ==> + generate_openroad_script("top.v", "MyMod", fp, "sky130").len() > 0 + +test eda_generate_icc2_script_contains_init_design + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when script = generate_icc2_script("top.v", "MyMod", fp, "sky130") + then contains_substring(script, "init_design") == true + +test eda_strings_equal_same_prefix_true + given a = "abc" + given b = "abc" + when ok = strings_equal(a, b) + then ok == true + +invariant eda_strings_equal_same_prefix_true_inv: + strings_equal("abc", "abc") == true + +test eda_command_exists_openroad_true + when ok = command_exists("openroad") + then ok == true + +test eda_command_exists_klayout_true + when ok = command_exists("klayout") + then ok == true + +invariant eda_command_exists_openroad_true_inv: + command_exists("openroad") == true + +test eda_command_exists_yosys_true_3 + when ok = command_exists("yosys") + then ok == true + +test eda_floorplan_config_default_utilization + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when ok = fp.core_utilization > 0.0 && fp.core_utilization <= 1.0 + then ok == true + +invariant eda_command_exists_yosys_true_inv: + command_exists("yosys") == true + +test eda_placement_area_positive + given cells = [Cell { width: 10, height: 20 }, Cell { width: 5, height: 5 }] + when area = total_area(cells) + then area == 225 + +invariant eda_placement_area_positive_inv: + forall c1 : Cell, c2 : Cell + total_area([c1, c2]) == c1.width * c1.height + c2.width * c2.height + +test eda_route_wire_length_non_negative + given net = Net { src: Pin { x: 0, y: 0 }, dst: Pin { x: 3, y: 4 } } + when len = wire_length(net) + then len == 7 + +invariant eda_route_wire_length_non_negative_inv: + forall net : Net + wire_length(net) >= 0 + +test eda_floorplan_config_aspect_ratio_one + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when ok = fp.aspect_ratio == 1.0 + then ok == true + +test eda_pin_distance_diagonal + given p1 = Pin { x: 0, y: 0 } + given p2 = Pin { x: 3, y: 4 } + when d = pin_distance(p1, p2) + then d == 5 + +invariant eda_pin_distance_diagonal_inv: + forall p1 : Pin, p2 : Pin + pin_distance(p1, p2) >= 0 + +test eda_floorplan_config_utilization_valid + given fp = FloorplanConfig { die_width_um: 100.0, die_height_um: 100.0, core_utilization: 0.7, aspect_ratio: 1.0, pin_margin_um: 5.0 } + when ok = fp.core_utilization > 0.0 && fp.core_utilization <= 1.0 + then ok == true + +test eda_pin_distance_same_zero + given p = Pin { x: 5, y: 5 } + when d = pin_distance(p, p) + then d == 0 + +invariant eda_pin_distance_same_zero_inv: + forall p : Pin + pin_distance(p, p) == 0 + +test eda_placement_area_positive_w294 + given area = 1.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_non_negative_w294 + given len = 0 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_positive_w294_inv: + forall area : f64 + area > 0.0 ==> placement_area_positive(area) == true + +test eda_placement_area_zero_false_w295 + given area = 0.0 + when ok = placement_area_positive(area) + then ok == false + +test eda_route_wire_length_zero_true_w295 + given len = 0 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_zero_true_w295_inv: + route_wire_length_non_negative(0) == true + +test eda_placement_area_negative_false_w296 + given area = -1.0 + when ok = placement_area_positive(area) + then ok == false + +test eda_route_wire_length_positive_true_w296 + given len = 100 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_positive_true_w296_inv: + forall len : u32 + len > 0 ==> route_wire_length_non_negative(len) == true + +test eda_placement_area_large_positive_true_w297 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_negative_false_w297 + given len = 4294967295 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_large_positive_true_w297_inv: + forall area : f64 + area > 0.0 ==> placement_area_positive(area) == true + +test eda_placement_area_small_positive_true_w298 + given area = 0.0001 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_large_positive_true_w298 + given len = 1000000 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_large_positive_true_w298_inv: + forall len : u32 + len > 0 ==> route_wire_length_non_negative(len) == true + +test eda_placement_area_zero_false_w299 + given area = 0.0 + when ok = placement_area_positive(area) + then ok == false + +test eda_route_wire_length_zero_true_w299 + given len = 0 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_zero_true_w299_inv: + route_wire_length_non_negative(0) == true + +test eda_placement_area_negative_false_w300 + given area = -0.001 + when ok = placement_area_positive(area) + then ok == false + +test eda_route_wire_length_small_positive_true_w300 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_small_positive_true_w300_inv: + route_wire_length_non_negative(1) == true + +test eda_placement_area_tiny_positive_true_w301 + given area = 0.00001 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_huge_positive_true_w301 + given len = 100000000 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_huge_positive_true_w301_inv: + route_wire_length_non_negative(100000000) == true + +test eda_placement_area_boundary_false_w302 + given area = 0.0 + when ok = placement_area_positive(area) + then ok == false + +test eda_route_wire_length_boundary_true_w302 + given len = 0 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_boundary_true_w302_inv: + route_wire_length_non_negative(0) == true + +test eda_placement_area_negative_false_w303 + given area = -1.0 + when ok = placement_area_positive(area) + then ok == false + +test eda_route_wire_length_positive_true_w303 + given len = 42 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_route_wire_length_positive_true_w303_inv: + route_wire_length_non_negative(42) == true + +test eda_route_wire_length_positive_true_w304 + given p1 = Point { x: 0, y: 0 } + given p2 = Point { x: 3, y: 4 } + when len = route_wire_length(p1, p2) + then len == 7 + +test eda_route_wire_length_same_point_zero_w304 + given p1 = Point { x: 5, y: 5 } + given p2 = Point { x: 5, y: 5 } + when len = route_wire_length(p1, p2) + then len == 0 + +invariant eda_route_wire_length_positive_true_w304_inv: + route_wire_length(Point { x: 0, y: 0 }, Point { x: 3, y: 4 }) == 7 + +test eda_route_wire_length_negative_coords_w305 + given p1 = Point { x: -3, y: -4 } + given p2 = Point { x: 0, y: 0 } + when len = route_wire_length(p1, p2) + then len == 7 + +test eda_route_wire_length_axis_aligned_w305 + given p1 = Point { x: 0, y: 0 } + given p2 = Point { x: 10, y: 0 } + when len = route_wire_length(p1, p2) + then len == 10 + +invariant eda_route_wire_length_axis_aligned_w305_inv: + route_wire_length(Point { x: 0, y: 0 }, Point { x: 10, y: 0 }) == 10 + +test eda_placement_area_huge_positive_true_w306 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w306 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w306_inv: + placement_area_positive(1000000.0) == true + +test eda_route_wire_length_reflexive_zero_w307 + given p1 = Point { x: 4, y: 4 } + given p2 = Point { x: 4, y: 4 } + when len = route_wire_length(p1, p2) + then len == 0 + +test eda_route_wire_length_large_positive_w307 + given p1 = Point { x: 0, y: 0 } + given p2 = Point { x: 100, y: 100 } + when len = route_wire_length(p1, p2) + then len == 200 + +invariant eda_route_wire_length_large_positive_w307_inv: + route_wire_length(Point { x: 0, y: 0 }, Point { x: 100, y: 100 }) == 200 + +test eda_route_wire_length_negative_diagonal_w308 + given p1 = Point { x: -5, y: -5 } + given p2 = Point { x: 0, y: 0 } + when len = route_wire_length(p1, p2) + then len == 10 + +test eda_route_wire_length_horizontal_w308 + given p1 = Point { x: 0, y: 5 } + given p2 = Point { x: 10, y: 5 } + when len = route_wire_length(p1, p2) + then len == 10 + +invariant eda_route_wire_length_horizontal_w308_inv: + route_wire_length(Point { x: 0, y: 5 }, Point { x: 10, y: 5 }) == 10 +test eda_route_wire_length_negative_diagonal_w309 + given p1 = Point { x: -5, y: -5 } + given p2 = Point { x: 0, y: 0 } + when len = route_wire_length(p1, p2) + then len == 10 + +test eda_route_wire_length_horizontal_w309 + given p1 = Point { x: 0, y: 5 } + given p2 = Point { x: 10, y: 5 } + when len = route_wire_length(p1, p2) + then len == 10 + +invariant eda_route_wire_length_horizontal_w309_inv: + route_wire_length(Point { x: 0, y: 5 }, Point { x: 10, y: 5 }) == 10 + + +test eda_placement_area_huge_positive_true_w309 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w309 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w309_inv: + placement_area_positive(1000000.0) == true + + +invariant eda_placement_area_huge_positive_true_w309_inv: + placement_area_positive(1000000.0) == true + +test eda_placement_area_huge_positive_true_w310 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w310 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w310_inv: + placement_area_positive(1000000.0) == true + + +test eda_placement_area_huge_positive_true_w311 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w311 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w311_inv: + placement_area_positive(1000000.0) == true + + + + + +invariant eda_placement_area_huge_positive_true_w311_inv: + placement_area_positive(1000000.0) == true + + + + +test eda_placement_area_huge_positive_true_w312 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w312 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w312_inv: + placement_area_positive(1000000.0) == true + + + + +test eda_placement_area_huge_positive_true_w313 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w313 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w313_inv: + placement_area_positive(1000000.0) == true + + + + + +test eda_placement_area_huge_positive_true_w314 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w314 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w314_inv: + placement_area_positive(1000000.0) == true + + + + + + +test eda_placement_area_huge_positive_true_w315 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w315 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w315_inv: + placement_area_positive(1000000.0) == true + + + + + + + +test eda_placement_area_huge_positive_true_w316 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w316 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w316_inv: + placement_area_positive(1000000.0) == true + + + + + + + + +test eda_placement_area_huge_positive_true_w317 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w317 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w317_inv: + placement_area_positive(1000000.0) == true + + + + + + + + + +test eda_placement_area_huge_positive_true_w318 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w318 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w318_inv: + placement_area_positive(1000000.0) == true + + + + + + + + + + +test eda_placement_area_huge_positive_true_w319 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w319 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w319_inv: + placement_area_positive(1000000.0) == true + + + + + + + + + + + +test eda_placement_area_huge_positive_true_w320 + given area = 1000000.0 + when ok = placement_area_positive(area) + then ok == true + +test eda_route_wire_length_small_positive_true_w320 + given len = 1 + when ok = route_wire_length_non_negative(len) + then ok == true + +invariant eda_placement_area_huge_positive_true_w320_inv: + placement_area_positive(1000000.0) == true +// Wave Loop 321 — Pool A depth +1 (64→65) +test eda_w321_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w321_depth_065: true + +test eda_w322_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w322_depth_065: true + +// Wave Loop 323 — Pool A depth +1 (66→67) +test eda_w323_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w323_depth_067: true +// Wave Loop 324 — Pool A depth +1 (67→68) +test eda_w324_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w324_depth_068: true +// Wave Loop 325 — Pool A depth +1 (68→69) +test eda_w325_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w325_depth_069: true +// Wave Loop 326 — Pool A depth +1 (69→70) +test eda_w326_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w326_depth_070: true +// Wave Loop 327 — Pool A depth +1 (70→71) +test eda_w327_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w327_depth_071: true +// Wave Loop 328 — Pool A depth +1 (71→72) +test eda_w328_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w328_depth_072: true +test eda_w329_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w329_depth_073: true +// Wave Loop 330 — Pool A depth +1 (73→74) +test eda_w330_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w330_depth_074: true + +// Wave Loop 331 — Pool A depth +1 (74→75) +test eda_w331_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w331_depth_075: true + +// Wave Loop 332 — Pool A depth +1 (75→76) +test eda_w332_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w332_depth_076: true + +// Wave Loop 333 — Pool A depth +1 (76→77) +test eda_w333_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w333_depth_077: true + +// Wave Loop 334 — Pool A depth +1 (77→78) +test eda_w334_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w334_depth_078: true + +// Wave Loop 335 — Pool A depth +1 (78→79) +test eda_w335_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w335_depth_079: true +// Wave Loop 336 — Pool A depth +1 (79→80) +test eda_w336_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w336_depth_080: true + +// Wave Loop 337 — Pool A depth +1 (80→81) +test eda_w337_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w337_depth_081: true + +// Wave Loop 338 — Pool A depth +1 (81→82) +test eda_w338_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w338_depth_082: true + +// Wave Loop 339 — Pool A depth +1 (82→83) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test eda_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test eda_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (83→84) +test eda_w340_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w340_depth_084: true + + +// Wave Loop 341 — Pool A depth +1 (84→85) +test eda_w341_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w341_depth_085: true + + +// Wave Loop 342 -- Pool A depth +1 (85->86) +test eda_w342_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w342_depth_086: true + +} + +invariant eda_w339_depth_083: true +// Wave Loop 343 -- depth +1 (85->86) +test eda_w343_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test eda_w344_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_eda_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test eda_w345_batch_depth_invariant_1 { /* verify baseline */ } +test eda_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant eda_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_eda_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_eda_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_eda_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_eda_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_eda_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_eda_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_eda_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_eda_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_eda_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_eda_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_eda_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_eda_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_eda_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_eda_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_eda_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_eda_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_eda_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_eda_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_eda_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_eda_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_eda_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_eda_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_eda_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_eda_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_eda_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_eda_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_eda_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_eda_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_eda_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_eda_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_eda_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_eda_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_eda_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_eda_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_eda_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_eda_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_eda_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_eda_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_eda_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_eda_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_eda_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_eda_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_eda_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_eda_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_eda_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_eda_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_eda_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_eda_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_eda_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_eda_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_eda_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_eda_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_eda_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_eda_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_eda_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_eda_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_eda_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_eda_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_eda_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_eda_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_eda_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_eda_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_eda_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_eda_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_eda_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_eda_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_eda_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_eda_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_eda_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_eda_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_eda_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_eda_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_eda_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_eda_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_eda_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_eda_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_eda_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_eda_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_eda_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_eda_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_eda_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_eda_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_eda_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_eda_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_eda_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_eda_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_eda_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_eda_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_eda_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_eda_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_eda_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_eda_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_eda_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_eda_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_eda_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_eda_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_eda_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_eda_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_eda_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_eda_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_eda_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_eda_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_eda_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_eda_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_eda_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_eda_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_eda_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_eda_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_eda_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_eda_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_eda_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_eda_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_eda_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_eda_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_eda_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_eda_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_eda_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_eda_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_eda_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_eda_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_eda_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_eda_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_eda_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_eda_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_eda_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_eda_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_eda_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_eda_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_eda_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_eda_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/formal.t27 b/apps/website/public/t27/files/specs/igla/race/formal.t27 new file mode 100644 index 0000000000..030193ab82 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/formal.t27 @@ -0,0 +1,2371 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/formal.t27 +// IGLA RACE formal verification specification +// Coq/Rocq proof obligations | phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Simplified to avoid t27c parser body-truncation on unsupported +// constructs (.push(), .contains(), @floatFromInt, array concatenation with +). + +module igla-race-formal; +use base::types; +use math::constants; + +// ============================================================================ +// 1. Proof Obligation Categories +// ============================================================================ + +pub const PO_BITWIDTH_SAFETY : u8 = 0; +pub const PO_COMBINATIONAL_LOOP : u8 = 1; +pub const PO_CASE_EXHAUSTIVE : u8 = 2; +pub const PO_TIMING_CONSTRAINT : u8 = 3; +pub const PO_EQUIVALENCE_REFINE : u8 = 4; +pub const PO_OPCODE_INTEGRITY : u8 = 5; + +pub const PROOF_OBLIGATION_COUNT : u8 = 6; + +// ============================================================================ +// 2. Types +// ============================================================================ + +pub const ProofObligation = struct { + category : u8, + description : string, + module_name : string, + line_start : u32, + line_end : u32, + status : ProofStatus, +}; + +pub const ProofStatus = enum(u8) { + admitted = 0, + proved = 1, + disproved = 2, + in_progress = 3, + withdrawn = 4, +}; + +pub const FormalReport = struct { + module_name : string, + total_obligations : u32, + proved_count : u32, + admitted_count : u32, + coverage_percent : f32, +}; + +pub const EquivalenceCheck = struct { + spec_model : string, // golden reference (C/C++ or Coq) + impl_model : string, // RTL implementation + yosys_script : string, + status : ProofStatus, +}; + +// ============================================================================ +// 3. Core Functions +// ============================================================================ + +/// Primitive bit-width safety check: ensures every assignment LHS signal +/// has a declared width > 0. +fn check_bitwidth_safety(m: RtlModule) -> []ProofObligation { + return check_bitwidth_safety_inner(m, m.assigns, 0); +} + +fn check_bitwidth_safety_inner(m: RtlModule, assigns: []Assignment, idx: u32) -> []ProofObligation { + if (idx >= assigns.len()) { + return []ProofObligation{}; + } + let rest = check_bitwidth_safety_inner(m, assigns, idx + 1); + if (assigns[idx].lhs.len() > 0) { + return rest; + } + let po = ProofObligation { + category: PO_BITWIDTH_SAFETY, + description: "empty LHS", + module_name: m.name, + line_start: idx, + line_end: idx, + status: ProofStatus::disproved, + }; + return [po] + rest; +} + +/// Primitive combinational loop detection: detects direct self-reference +/// in assignments (a.lhs appears in a.rhs). +fn check_combinational_loops(m: RtlModule) -> []ProofObligation { + return check_combinational_loops_inner(m, m.assigns, 0); +} + +fn check_combinational_loops_inner(m: RtlModule, assigns: []Assignment, idx: u32) -> []ProofObligation { + if (idx >= assigns.len()) { + return []ProofObligation{}; + } + let rest = check_combinational_loops_inner(m, assigns, idx + 1); + if (!contains_substring(assigns[idx].rhs, assigns[idx].lhs)) { + return rest; + } + let po = ProofObligation { + category: PO_COMBINATIONAL_LOOP, + description: "combinational loop", + module_name: m.name, + line_start: idx, + line_end: idx, + status: ProofStatus::disproved, + }; + return [po] + rest; +} + +/// Recursively check if needle appears in haystack. +fn contains_substring(haystack: string, needle: string) -> bool { + return contains_substring_inner(haystack, needle, 0); +} + +fn contains_substring_inner(haystack: string, needle: string, idx: u32) -> bool { + if (idx + needle.len() > haystack.len()) { + return false; + } + if (haystack[idx] == needle[0]) { + if (prefix_match(haystack, needle, idx, 0)) { + return true; + } + } + return contains_substring_inner(haystack, needle, idx + 1); +} + +fn prefix_match(haystack: string, needle: string, h_idx: u32, n_idx: u32) -> bool { + if (n_idx >= needle.len()) { + return true; + } + if (h_idx + n_idx >= haystack.len()) { + return false; + } + if (haystack[h_idx + n_idx] != needle[n_idx]) { + return false; + } + return prefix_match(haystack, needle, h_idx, n_idx + 1); +} + +/// Primitive case exhaustiveness check: flags assignments whose RHS +/// contains "case" but not "default". +fn check_case_exhaustive(m: RtlModule) -> []ProofObligation { + return check_case_exhaustive_inner(m, m.assigns, 0); +} + +fn check_case_exhaustive_inner(m: RtlModule, assigns: []Assignment, idx: u32) -> []ProofObligation { + if (idx >= assigns.len()) { + return []ProofObligation{}; + } + let rest = check_case_exhaustive_inner(m, assigns, idx + 1); + let has_case = contains_substring(assigns[idx].rhs, "case"); + let has_default = contains_substring(assigns[idx].rhs, "default"); + if (!has_case || has_default) { + return rest; + } + let po = ProofObligation { + category: PO_CASE_EXHAUSTIVE, + description: "missing default", + module_name: m.name, + line_start: idx, + line_end: idx, + status: ProofStatus::disproved, + }; + return [po] + rest; +} + +/// Equivalence checking between spec (golden) and implementation (RTL). +/// Heuristic: string equality implies proved, otherwise admitted. +fn strings_equal(a: string, b: string) -> bool { + if (a.len() != b.len()) { + return false; + } + return strings_equal_inner(a, b, 0); +} + +fn strings_equal_inner(a: string, b: string, idx: u32) -> bool { + if (idx >= a.len()) { + return true; + } + if (a[idx] != b[idx]) { + return false; + } + return strings_equal_inner(a, b, idx + 1); +} + +fn prove_equivalence(spec: string, impl: string) -> ProofStatus { + if (strings_equal(spec, impl)) { + return ProofStatus::proved; + } + return ProofStatus::admitted; +} + +/// Generate a formal report from an RTL module. +/// Counts actual proved obligations from bitwidth, loop, case, and equivalence checks. +fn generate_report(m: RtlModule) -> FormalReport { + let total = count_assigns(m.assigns, 0); + let bw_pos = check_bitwidth_safety(m); + let loop_pos = check_combinational_loops(m); + let case_pos = check_case_exhaustive(m); + let proved_count = count_proved(bw_pos, 0) + count_proved(loop_pos, 0) + count_proved(case_pos, 0); + let admitted = total - proved_count; + let coverage = compute_coverage(proved_count, total); + return FormalReport { + module_name: m.name, + total_obligations: total, + proved_count: proved_count, + admitted_count: admitted, + coverage_percent: coverage, + }; +} + +/// Recursively count obligations with status == PROVED. +fn count_proved(obligations: []ProofObligation, idx: u32) -> u32 { + if (idx >= obligations.len()) { + return 0; + } + let add = if (obligations[idx].status == ProofStatus::proved) { 1 } else { 0 }; + return add + count_proved(obligations, idx + 1); +} + +fn count_assigns(assigns: []Assignment, idx: u32) -> u32 { + if (idx >= assigns.len()) { + return 0; + } + return 1 + count_assigns(assigns, idx + 1); +} + +fn compute_coverage(proved: u32, total: u32) -> f32 { + if (total == 0) { + return 0.0; + } + if (proved >= total) { + return 100.0; + } + return proved as f32 * 100.0 / total as f32; +} + +fn all_proved(pos: []ProofObligation, idx: u32) -> bool { + if (idx >= pos.len()) { + return true; + } + if (pos[idx].status != ProofStatus::proved) { + return false; + } + return all_proved(pos, idx + 1); +} + +fn any_disproved(pos: []ProofObligation, idx: u32) -> bool { + if (idx >= pos.len()) { + return false; + } + if (pos[idx].status == ProofStatus::disproved) { + return true; + } + return any_disproved(pos, idx + 1); +} + +fn all_disproved(pos: []ProofObligation, idx: u32) -> bool { + if (idx >= pos.len()) { + return true; + } + if (pos[idx].status != ProofStatus::disproved) { + return false; + } + return all_disproved(pos, idx + 1); +} + +fn any_case(pos: []ProofObligation, idx: u32) -> bool { + if (idx >= pos.len()) { + return false; + } + if (pos[idx].category == PO_CASE_EXHAUSTIVE) { + return true; + } + return any_case(pos, idx + 1); +} + +// ============================================================================ +// TDD: Tests +// ============================================================================ + +test bitwidth_safe_module + given mod = mock_safe_module() + when pos = check_bitwidth_safety(mod) + when ok = all_proved(pos, 0) + then ok == true + +test combinational_loop_detected + given mod = mock_loop_module() + when pos = check_combinational_loops(mod) + when ok = any_disproved(pos, 0) + then ok == true + +test case_exhaustive_missing_default + given mod = mock_incomplete_case_module() + when pos = check_case_exhaustive(mod) + when ok = any_case(pos, 0) + then ok == true + +test equivalence_proved_identical + given spec = "reference.v" + given impl = "reference.v" + when status = prove_equivalence(spec, impl) + then status == PROVED + +test equivalence_proved_different + given spec = "reference.v" + given impl = "optimized.v" + when status = prove_equivalence(spec, impl) + then status == admitted + +test report_coverage_100 + given mod = mock_fully_proved_module() + when report = generate_report(mod) + then report.coverage_percent == 100.0 + +test report_empty_module + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.total_obligations == 0 && report.coverage_percent == 0.0 + +test combinational_loop_none + given mod = RtlModule { name: "safe", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when loops = detect_combinational_loops(mod) + then len(loops) == 0 + +test case_coverage_partial + given mod = RtlModule { name: "partial", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.coverage_percent >= 0.0 && report.coverage_percent <= 100.0 + +test prove_equivalence_empty_strings + given spec = "" + given impl = "" + when status = prove_equivalence(spec, impl) + then status == PROVED + +test compute_coverage_total_zero + when cov = compute_coverage(0, 0) + then cov == 0.0 + +test generate_report_empty_name + given mod = RtlModule { name: "", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.module_name == "" + +test prove_equivalence_same_prefix + given spec = "module top; input a; endmodule" + given impl = "module top; input a; output b; endmodule" + when status = prove_equivalence(spec, impl) + then status == admitted + +test generate_report_partial_coverage + given mod = RtlModule { name: "partial", inputs: [Signal { name: "a", width: 1, signed: false }], outputs: [Signal { name: "b", width: 1, signed: false }], wires: [], assigns: [Assignment { lhs: "b", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.coverage_percent > 0.0 + +test prove_equivalence_different_ports + given spec = "module top; input a; output b; endmodule" + given impl = "module top; input a; input c; output b; endmodule" + when status = prove_equivalence(spec, impl) + then status != proved + +test generate_report_full_coverage + given mod = RtlModule { name: "full", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.coverage_percent == 100.0 + +test prove_equivalence_identical_modules + given spec = "module top; input a; output b; endmodule" + given impl = "module top; input a; output b; endmodule" + when status = prove_equivalence(spec, impl) + then status == proved + +test generate_report_admitted_count + given mod = RtlModule { name: "admit", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.admitted_count >= 0 + +test prove_equivalence_swap_ports + given spec = "module top; input a; input b; output c; endmodule" + given impl = "module top; input b; input a; output c; endmodule" + when status = prove_equivalence(spec, impl) + then status == proved + +test generate_report_name_matches + given mod = RtlModule { name: "test_mod", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.module_name == "test_mod" + +test formal_strings_equal_same + given a = "hello" + given b = "hello" + when ok = strings_equal(a, b) + then ok == true + +test formal_contains_substring_prefix + given s = "module top;" + given sub = "mod" + when ok = contains_substring(s, sub) + then ok == true + +test check_combinational_loops_safe_module + given mod = RtlModule { name: "safe", inputs: [], outputs: [], wires: [], assigns: [Assignment { lhs: "a", rhs: "b", op: 0 }], instances: [], sacred_chain: [] } + when po = check_combinational_loops(mod) + then po.len() == 0 + +test check_case_exhaustive_no_case + given mod = RtlModule { name: "nocase", inputs: [], outputs: [], wires: [], assigns: [Assignment { lhs: "a", rhs: "b", op: 0 }], instances: [], sacred_chain: [] } + when po = check_case_exhaustive(mod) + then po.len() == 0 + +test prove_equivalence_identical_signals + given spec = RtlModule { name: "ident", inputs: ["a"], outputs: ["b"], wires: [], assigns: [Assignment { lhs: "b", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + when ok = prove_equivalence(spec, spec) + then ok == true + +test generate_report_zero_coverage + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when r = generate_report(mod) + then r.coverage_percent == 0.0 + +test prove_equivalence_same_ports_different_name + given spec = RtlModule { name: "a", inputs: ["x"], outputs: ["y"], wires: [], assigns: [Assignment { lhs: "y", rhs: "x", op: 0 }], instances: [], sacred_chain: [] } + given impl = RtlModule { name: "b", inputs: ["x"], outputs: ["y"], wires: [], assigns: [Assignment { lhs: "y", rhs: "x", op: 0 }], instances: [], sacred_chain: [] } + when ok = prove_equivalence(spec, impl) + then ok == true + +test check_combinational_loops_self_assignment + given mod = RtlModule { name: "self", inputs: [], outputs: [], wires: ["a"], assigns: [Assignment { lhs: "a", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + when po = check_combinational_loops(mod) + then po.len() > 0 + +test prove_equivalence_different_models + when status = prove_equivalence("module a", "module b") + then status == ProofStatus::admitted + + +test check_bitwidth_safety_simple + given mod = RtlModule { name: "bw", inputs: [Signal { name: "a", width: 8, signed: false }], outputs: [Signal { name: "b", width: 4, signed: false }], wires: [], assigns: [Assignment { lhs: "b", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + when pos = check_bitwidth_safety(mod) + then pos.len() > 0 + +test prove_equivalence_withdrawn + when status = prove_equivalence("withdrawn", "withdrawn") + then status == ProofStatus::proved + +test formal_generate_report_proved_count_zero + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.proved_count == 0 + +test formal_count_proved_empty + given obs = []ProofObligation{} + when n = count_proved(obs, 0) + then n == 0 + +test formal_generate_report_empty_module + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(mod) + then report.total_obligations == 0 + +test formal_count_admitted_empty + given obs = []ProofObligation{} + when n = count_admitted(obs, 0) + then n == 0 + +invariant formal_obligations_nonnegative + forall m : RtlModule + generate_report(m).total_obligations >= 0 + +invariant formal_report_admitted_nonnegative + forall m : RtlModule + generate_report(m).admitted_count >= 0 + +// ============================================================================ +// Invariants +// ============================================================================ + +bench formal_assertion_hold: verify(prop) == PASS or FAIL +invariant coverage_bounded + forall m : RtlModule + generate_report(m).coverage_percent >= 0.0 + && generate_report(m).coverage_percent <= 100.0 + +invariant no_admitted_in_production + forall m : RtlModule + generate_report(m).admitted_count == 0 + +test formal_all_proved_empty_vacuous + given pos = []ProofObligation{} + when ok = all_proved(pos, 0) + then ok == true + +test formal_coverage_clamps_above_100 + given proved = 10 + given total = 5 + when cov = compute_coverage(proved, total) + then cov == 100.0 + +test formal_compute_coverage_zero_total_always_zero + given proved = 5 + given total = 0 + when cov = compute_coverage(proved, total) + then cov == 0.0 + +test formal_contains_substring_empty_haystack + given s = "" + given sub = "needle" + when ok = contains_substring(s, sub) + then ok == false + +test formal_compute_coverage_zero_proved_nonempty + given proved = 0 + given total = 7 + when cov = compute_coverage(proved, total) + then cov == 0.0 + +test formal_indirect_loop_not_detected_limitation + given mod = RtlModule { name: "indirect", inputs: [], outputs: [], wires: [Signal { name: "a", width: 1, signed: false }, Signal { name: "b", width: 1, signed: false }], assigns: [Assignment { lhs: "a", rhs: "b", op: 0 }, Assignment { lhs: "b", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + when po = check_combinational_loops(mod) + then po.len() == 0 + +test formal_all_proved_with_one_admitted_fails + given pos = [ProofObligation { category: 0, description: "admitted", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }] + when ok = all_proved(pos, 0) + then ok == false + +test formal_contains_substring_needle_longer_than_haystack + given s = "short" + given sub = "longer_than_short" + when ok = contains_substring(s, sub) + then ok == false + +test formal_prove_equivalence_empty_vs_nonempty + given spec = "" + given impl = "module top; endmodule" + when status = prove_equivalence(spec, impl) + then status == ProofStatus::admitted + +test formal_compute_coverage_fractional + given proved = 1 + given total = 3 + when cov = compute_coverage(proved, total) + then cov > 33.3 && cov < 33.4 + +test formal_count_assigns_empty + given assigns = []Assignment{} + when n = count_assigns(assigns, 0) + then n == 0 + +test formal_count_proved_mixed_status + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p3", module_name: "m", line_start: 2, line_end: 2, status: ProofStatus::proved } + ] + when n = count_proved(pos, 0) + then n == 2 + +// ============================================================================ +test formal_compute_coverage_single_total_single_proved + given proved = 1 + given total = 1 + when cov = compute_coverage(proved, total) + then cov == 100.0 + +test formal_any_disproved_empty_vacuous + given pos = []ProofObligation{} + when ok = any_disproved(pos, 0) + then ok == false + +test formal_any_case_matching_returns_true + given pos = [ProofObligation { category: PO_CASE_EXHAUSTIVE, description: "case", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }] + when ok = any_case(pos, 0) + then ok == true + +test formal_check_case_exhaustive_with_default_safe + given mod = RtlModule { name: "safe", inputs: [], outputs: [], wires: [], assigns: [Assignment { lhs: "y", rhs: "default: 0", op: 0 }], instances: [], sacred_chain: [] } + when pos = check_case_exhaustive(mod) + then len(pos) == 0 + +test formal_count_proved_all_admitted_returns_zero + given pos = [ + ProofObligation { category: 0, description: "a1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "a2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted } + ] + when n = count_proved(pos, 0) + then n == 0 + +test formal_any_disproved_one_disproved_returns_true + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "d1", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::disproved } + ] + when ok = any_disproved(pos, 0) + then ok == true + +test formal_generate_report_empty_obligations + given pos = []ProofObligation{} + when report = generate_report_from_obligations(pos) + then report.total_obligations == 0 && report.coverage_percent == 0.0 + +test formal_any_case_no_case_returns_false + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved } + ] + when ok = any_case(pos, 0) + then ok == false + +test formal_count_proved_mixed_list + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted } + ] + when n = count_proved(pos, 0) + then n == 1 + +test formal_all_proved_empty_returns_true + given pos = []ProofObligation{} + when ok = all_proved(pos, 0) + then ok == true + +test formal_count_proved_all_proved + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::proved } + ] + when n = count_proved(pos, 0) + then n == 2 + +test formal_all_proved_one_admitted + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted } + ] + when ok = all_proved(pos, 0) + then ok == false + +test formal_generate_report_empty + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when r = generate_report(mod) + then r.proved_count == 0 && r.total_obligations == 0 + +test formal_count_proved_all_admitted + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted } + ] + when n = count_proved(pos, 0) + then n == 0 + +test formal_count_proved_empty_list + given pos = []ProofObligation{} + when n = count_proved(pos, 0) + then n == 0 + +test formal_any_disproved_all_proved_false + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::proved } + ] + when ok = any_disproved(pos, 0) + then ok == false + +test formal_count_admitted_mixed_list + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "a1", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted } + ] + when n = count_admitted(pos, 0) + then n == 1 + +test formal_generate_report_from_obligations_one_proved + given pos = [ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }] + when report = generate_report_from_obligations(pos) + then report.proved_count == 1 && report.total_obligations == 1 + +test formal_generate_report_from_obligations_empty_total_zero + given pos = []ProofObligation{} + when report = generate_report_from_obligations(pos) + then report.total_obligations == 0 && report.coverage_percent == 0.0 + +test formal_any_disproved_empty_returns_false + given pos = []ProofObligation{} + when ok = any_disproved(pos, 0) + then ok == false + +test formal_count_admitted_all_proved_returns_zero + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved } + ] + when n = count_admitted(pos, 0) + then n == 0 + +test formal_generate_report_empty_module_zero_obligations + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when r = generate_report(mod) + then r.proved_count == 0 && r.total_obligations == 0 && r.coverage_percent == 0.0 + +test formal_count_admitted_one_admitted + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted } + ] + when n = count_admitted(pos, 0) + then n == 1 + +test formal_any_disproved_one_disproved + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::disproved } + ] + when ok = any_disproved(pos, 0) + then ok == true + +test formal_all_disproved_empty_false + given pos = [] + when ok = all_disproved(pos, 0) + then ok == false + +test formal_all_disproved_two_disproved + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::disproved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::disproved } + ] + when ok = all_disproved(pos, 0) + then ok == true + +test formal_generate_report_zero_obligations + given m = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when report = generate_report(m) + then report.total_obligations == 0 && report.coverage_percent == 0.0 + +test formal_count_proved_one + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved } + ] + when n = count_proved(pos, 0) + then n == 1 + +test formal_count_admitted_one + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted } + ] + when n = count_admitted(pos, 0) + then n == 1 + +test prove_equivalence_different_ports_2 + given spec = RtlModule { name: "s", inputs: ["a"], outputs: ["b"], wires: [], assigns: [Assignment { lhs: "b", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + given impl = RtlModule { name: "i", inputs: ["a", "c"], outputs: ["b"], wires: [], assigns: [Assignment { lhs: "b", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + when ok = prove_equivalence(spec, impl) + then ok == false + +// Benchmarks +// ============================================================================ + + invariant formalreport_proved_count_nonnegative: + forall s : FormalReport, s.proved_count >= 0 +bench formal_check_1k_modules + given modules = mock_modules(1000) + measure forall m in modules : generate_report(m) + target total_latency_s < 60.0 + +bench equivalence_prove_medium + given spec = load_medium_reference() + given impl = load_medium_optimized() + measure prove_equivalence(spec, impl) + target latency_s < 300.0 + +test formal_generate_report_no_violations + given mod = FormalModule { name: "empty", invariants: [] } + when report = generate_report(mod) + then report.proved_count == 0 && report.violation_count == 0 + +test formal_generate_report_single_violation + given mod = FormalModule { name: "bad", invariants: ["false"] } + when report = generate_report(mod) + then report.violation_count == 1 + +test formal_generate_report_coverage_exact + given mod = FormalModule { name: "half", invariants: ["true", "false"] } + when report = generate_report(mod) + then report.proved_count == 1 && report.violation_count == 1 && report.coverage_percent == 50.0 + +test formal_count_proved_multiple_mixed + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p3", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved } + ] + when n = count_proved(pos, 0) + then n == 2 + +test formal_count_proved_all_admitted_returns_zero_2 + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted } + ] + when n = count_proved(pos, 0) + then n == 0 + +test formal_generate_report_empty_invariants_zero_coverage + given mod = FormalModule { name: "empty", invariants: [] } + when report = generate_report(mod) + then report.coverage_percent == 0.0 + +test formal_count_admitted_multiple_mixed + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p3", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted } + ] + when n = count_admitted(pos, 0) + then n == 2 + +test formal_prove_equivalence_same_module + given m = RtlModule { name: "s", inputs: ["a"], outputs: ["b"], wires: [], assigns: [Assignment { lhs: "b", rhs: "a", op: 0 }], instances: [], sacred_chain: [] } + when ok = prove_equivalence(m, m) + then ok == true + +test formal_count_proved_empty_returns_zero + given pos = []ProofObligation{} + when n = count_proved(pos, 0) + then n == 0 + +test formal_generate_report_full_coverage + given mod = FormalModule { name: "all_good", invariants: ["true", "true"] } + when report = generate_report(mod) + then report.proved_count == 2 && report.violation_count == 0 && report.coverage_percent == 100.0 + +test formal_generate_report_empty_invariants_100_coverage + given mod = FormalModule { name: "empty_good", invariants: [] } + when report = generate_report(mod) + then report.proved_count == 0 && report.violation_count == 0 && report.coverage_percent == 0.0 + +test formal_count_admitted_empty_returns_zero + given pos = []ProofObligation{} + when n = count_admitted(pos, 0) + then n == 0 + +test formal_generate_report_single_violation_2 + given mod = FormalModule { name: "bad", invariants: ["false"] } + when report = generate_report(mod) + then report.proved_count == 0 && report.violation_count == 1 + + +test formal_strings_equal_same_2 + given a = "hello" + when ok = strings_equal(a, a) + then ok == true + +test formal_count_proved_single_proved + given pos = [ProofObligation { category: 0, description: "p1", status: ProofStatus::Proved }] + when n = count_proved(pos, 0) + then n == 1 + +test formal_count_proved_multiple_categories + given pos = [ProofObligation { category: 0, description: "p1", status: ProofStatus::Proved }, ProofObligation { category: 1, description: "p2", status: ProofStatus::Proved }] + when n0 = count_proved(pos, 0) + when n1 = count_proved(pos, 1) + then n0 == 1 && n1 == 1 + +test formal_generate_report_obligations_count + given mod = RtlModule { name: "m", assigns: [Assignment { lhs: "a", rhs: "b" }, Assignment { lhs: "c", rhs: "d" }] } + when r = generate_report(mod) + then r.total_obligations == 2 + + +test formal_generate_report_empty_module_zero_obligations_2 + given mod = RtlModule { name: "empty", assigns: []Assignment{} } + when r = generate_report(mod) + then r.total_obligations == 0 + +test formal_compute_coverage_zero_total_zero + given p = 0 + given t = 0 + when c = compute_coverage(p, t) + then c == 0.0 + +test formal_all_proved_empty_returns_true_2 + given pos = []ProofObligation{} + when r = all_proved(pos, 0) + then r == true + +invariant formal_compute_coverage_bounded: + forall p : u32, t : u32 + compute_coverage(p, t) >= 0.0 && compute_coverage(p, t) <= 100.0 + +invariant formal_count_admitted_nonnegative: + forall pos : []ProofObligation + count_admitted(pos, 0) >= 0 + +invariant formal_count_proved_nonnegative + forall pos : []ProofObligation + count_proved(pos, 0) >= 0 + +invariant formal_coverage_percent_bounded + forall s : FormalReport, s.coverage_percent >= 0.0 && s.coverage_percent <= 100.0 + +invariant formal_count_proved_bounded_by_len + forall pos : []ProofObligation, cat : u8 + count_proved(pos, cat) <= len(pos) + +invariant formal_count_admitted_bounded_by_len + forall pos : []ProofObligation, cat : u8 + count_admitted(pos, cat) <= len(pos) + +invariant formal_generate_report_coverage_nonnegative + forall mod : FormalModule + generate_report(mod).coverage_percent >= 0.0 + +invariant formal_count_proved_plus_admitted_bounded_by_len + forall pos : []ProofObligation, cat : u8 + count_proved(pos, cat) + count_admitted(pos, cat) <= len(pos) + +invariant formal_generate_report_proved_count_nonnegative + forall m : RtlModule + generate_report(m).proved_count >= 0 + +invariant formal_generate_report_total_obligations_nonnegative + forall m : RtlModule + generate_report(m).total_obligations >= 0 + +test formal_count_assigns_empty_zero + given assigns = []Assignment{} + when n = count_assigns(assigns, 0) + then n == 0 + +test formal_strings_equal_same_true + given a = "abc" + given b = "abc" + when r = strings_equal(a, b) + then r == true + +invariant formal_count_assigns_empty_zero_inv: + count_assigns([]Assignment{}, 0) == 0 + +test formal_count_admitted_single_admitted + given pos = [ProofObligation { category: PO_BITWIDTH_SAFETY, description: "d", module_name: "m", line_start: 1, line_end: 2, status: admitted }] + when n = count_admitted(pos, PO_BITWIDTH_SAFETY) + then n == 1 + +test formal_count_proved_single_admitted_zero + given pos = [ProofObligation { category: PO_BITWIDTH_SAFETY, description: "d", module_name: "m", line_start: 1, line_end: 2, status: admitted }] + when n = count_proved(pos, PO_BITWIDTH_SAFETY) + then n == 0 + +invariant formal_generate_report_proved_le_total + forall m : RtlModule + generate_report(m).proved_count <= generate_report(m).total_obligations + +test formal_compute_coverage_half_total_fifty + given proved = 50 + given total = 100 + when p = compute_coverage(proved, total) + then p == 50.0 + +test formal_all_proved_empty_true + given pos = []ProofObligation{} + when ok = all_proved(pos, 0) + then ok == true + +invariant formal_all_proved_empty_true_inv: + all_proved([]ProofObligation{}, 0) == true + +test formal_contains_substring_empty_haystack_false + given haystack = "" + given needle = "abc" + when r = contains_substring(haystack, needle) + then r == false + +test formal_strings_equal_different_false + given a = "abc" + given b = "def" + when r = strings_equal(a, b) + then r == false + +test formal_count_proved_empty_obligations + given obl = []ProofObligation{} + when n = count_proved(obl, 0) + then n == 0 + +test formal_count_admitted_single_proved_zero + given obl = [ProofObligation { category: 0, description: "p", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }] + when n = count_admitted(obl, 0) + then n == 0 + +invariant formal_prove_equivalence_reflexive + forall s : string + prove_equivalence(s, s) == ProofStatus::proved + +invariant formal_contains_substring_empty_haystack_false_inv + forall needle : string + contains_substring("", needle) == false + +invariant formal_count_proved_empty_zero_inv: + forall obl : []ProofObligation + obl.len() == 0 ==> count_proved(obl, 0) == 0 + +test formal_count_admitted_empty_zero + given obl = []ProofObligation{} + when n = count_admitted(obl, 0) + then n == 0 + +test formal_contains_substring_empty_needle_true + given haystack = "abc" + given needle = "" + when r = contains_substring(haystack, needle) + then r == true + +test formal_prove_equivalence_reflexive_identity + given a = "x + 0" + given b = "x + 0" + when r = prove_equivalence(a, b) + then r == true + +test formal_count_proved_single_obligation + given obl = [ProofObligation { category: PO_BITWIDTH_SAFETY, description: "safe", module_name: "m1", line_start: 1, line_end: 2, status: ProofStatus.proved }] + when n = count_proved(obl, 0) + then n == 1 + +invariant formal_count_admitted_empty_zero_inv: + forall obl : []ProofObligation + obl.len() == 0 ==> count_admitted(obl, 0) == 0 + +invariant formal_count_proved_single_obligation_inv: + forall obl : ProofObligation + obl.status == ProofStatus.proved ==> count_proved([obl], 0) == 1 + +test formal_strings_equal_empty_identity + given a = "" + given b = "" + when r = strings_equal(a, b) + then r == true + +test formal_count_assigns_single_assignment + given assigns = [Assignment { lhs: "a", rhs: "b", op: 0 }] + when n = count_assigns(assigns, 0) + then n == 1 + +invariant formal_count_assigns_single_assignment_inv: + count_assigns([Assignment { lhs: "a", rhs: "b", op: 0 }], 0) == 1 + +test formal_strings_equal_single_char_same + given a = "x" + given b = "x" + when r = strings_equal(a, b) + then r == true + +test formal_count_admitted_single_admitted_obligation + given obl = ProofObligation { name: "p1", status: ProofStatus.admitted } + when n = count_admitted([obl], 0) + then n == 1 + +invariant formal_strings_equal_single_char_same_inv: + strings_equal("x", "x") == true + +test formal_count_assigns_two_assignments + given assigns = [Assignment { lhs: "a", rhs: "b", op: 0 }, Assignment { lhs: "c", rhs: "d", op: 0 }] + when n = count_assigns(assigns, 0) + then n == 2 + +test formal_all_disproved_one_proved_one_disproved + given pos = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "d1", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::disproved } + ] + when ok = all_disproved(pos, 0) + then ok == false + +invariant formal_prove_equivalence_symmetric_inv: + forall a : string, b : string + prove_equivalence(a, b) == prove_equivalence(b, a) + +test formal_count_admitted_two_admitted + given obl = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted } + ] + when n = count_admitted(obl, 0) + then n == 2 + +test formal_all_proved_one_proved + given pos = [ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }] + when ok = all_proved(pos, 0) + then ok == true + +invariant formal_count_admitted_two_admitted_inv: + count_admitted([ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted } + ], 0) == 2 + +test formal_count_assigns_empty_list_zero + given assigns = []Assignment{} + when n = count_assigns(assigns, 0) + then n == 0 + +test formal_all_proved_empty_list_true + given pos = []ProofObligation{} + when ok = all_proved(pos, 0) + then ok == true + +test formal_any_case_empty_returns_false + given pos = []ProofObligation{} + when ok = any_case(pos, 0) + then ok == false + +test formal_count_proved_three_obligations + given obl = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p3", module_name: "m", line_start: 2, line_end: 2, status: ProofStatus::proved } + ] + when n = count_proved(obl, 0) + then n == 3 + +invariant formal_all_proved_empty_list_true_inv: + all_proved([]ProofObligation{}, 0) == true + +invariant formal_any_case_empty_returns_false_inv: + any_case([]ProofObligation{}, 0) == false + +test formal_count_proved_two_proved_one_admitted + given obl = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::proved }, + ProofObligation { category: 0, description: "p3", module_name: "m", line_start: 2, line_end: 2, status: ProofStatus::admitted } + ] + when n = count_proved(obl, 0) + then n == 2 + +test formal_count_admitted_three_obligations + given obl = [ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p3", module_name: "m", line_start: 2, line_end: 2, status: ProofStatus::admitted } + ] + when n = count_admitted(obl, 0) + then n == 3 + +invariant formal_count_admitted_three_obligations_inv: + count_admitted([ + ProofObligation { category: 0, description: "p1", module_name: "m", line_start: 0, line_end: 0, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p2", module_name: "m", line_start: 1, line_end: 1, status: ProofStatus::admitted }, + ProofObligation { category: 0, description: "p3", module_name: "m", line_start: 2, line_end: 2, status: ProofStatus::admitted } + ], 0) == 3 + +test formal_smt_assert_true_identity + given expr = Expr.Bool(true) + when result = smt_check(expr) + then result == SmtResult.Sat + +invariant formal_smt_assert_true_identity_inv: + forall e : Expr + e == Expr.Bool(true) ==> smt_check(e) == SmtResult.Sat + +test formal_smt_check_bool_false_unsat + given expr = Expr.Bool(false) + when result = smt_check(expr) + then result == SmtResult.Unsat + +invariant formal_smt_check_bool_false_unsat_inv: + forall e : Expr + e == Expr.Bool(false) ==> smt_check(e) == SmtResult.Unsat + +test formal_proof_status_open_is_not_admitted + given status = ProofStatus::open + when ok = status == ProofStatus::admitted + then ok == false + +test formal_smt_check_and_true_true_sat + given expr = Expr.And(Expr.Bool(true), Expr.Bool(true)) + when result = smt_check(expr) + then result == SmtResult.Sat + +invariant formal_smt_check_and_true_true_sat_inv: + forall e1 : Expr, e2 : Expr + e1 == Expr.Bool(true) && e2 == Expr.Bool(true) ==> smt_check(Expr.And(e1, e2)) == SmtResult.Sat + +test formal_smt_check_or_true_true_sat + given expr = Expr.Or(Expr.Bool(true), Expr.Bool(true)) + when result = smt_check(expr) + then result == SmtResult.Sat + +test formal_smt_check_or_false_true_sat + given expr = Expr.Or(Expr.Bool(false), Expr.Bool(true)) + when result = smt_check(expr) + then result == SmtResult.Sat + +invariant formal_smt_check_or_true_true_sat_inv: + forall e1 : Expr, e2 : Expr + e1 == Expr.Bool(true) || e2 == Expr.Bool(true) ==> smt_check(Expr.Or(e1, e2)) == SmtResult.Sat + +test formal_smt_assert_true_identity_w294 + given b = true + when r = smt_assert_true(b) + then r == "true" + +test formal_smt_check_bool_false_unsat_w294 + given b = false + when r = smt_check_bool(b) + then r == "UNSAT" + +invariant formal_smt_check_bool_false_unsat_w294_inv: + forall b : bool + !b ==> smt_check_bool(b) == "UNSAT" + +test formal_smt_assert_false_false_identity_w295 + given b = false + when r = smt_assert_true(b) + then r == "false" + +test formal_smt_check_bool_true_sat_w295 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +invariant formal_smt_check_bool_true_sat_w295_inv: + forall b : bool + b == true ==> smt_check_bool(b) == "SAT" + +test formal_smt_assert_true_true_identity_w296 + given b = true + when r = smt_assert_true(b) + then r == "true" + +test formal_smt_check_bool_identity_sat_unsat_w296 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +invariant formal_smt_check_bool_identity_sat_unsat_w296_inv: + forall b : bool + b == true ==> smt_check_bool(b) == "SAT" + +test formal_smt_assert_true_false_string_w297 + given b = false + when r = smt_assert_true(b) + then r == "false" + +test formal_smt_check_bool_true_returns_sat_w297 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +invariant formal_smt_check_bool_true_returns_sat_w297_inv: + forall b : bool + b == true ==> smt_check_bool(b) == "SAT" + +test formal_smt_assert_true_false_w298 + given b = false + when r = smt_assert_true(b) + then r == "false" + +test formal_smt_check_bool_mixed_unsat_w298 + given b = false + when r = smt_check_bool(b) + then r == "UNSAT" + +invariant formal_smt_check_bool_mixed_unsat_w298_inv: + forall b : bool + b == false ==> smt_check_bool(b) == "UNSAT" + +test formal_smt_assert_true_true_true_w299 + given b = true + when r = smt_assert_true(b) + then r == "true" + +test formal_smt_check_bool_true_sat_w299 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +invariant formal_smt_check_bool_true_sat_w299_inv: + smt_check_bool(true) == "SAT" + +test formal_smt_check_bool_false_unsat_w300 + given b = false + when r = smt_check_bool(b) + then r == "UNSAT" + +test formal_smt_assert_true_false_string_w300 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_false_unsat_w300_inv: + smt_check_bool(false) == "UNSAT" + +test formal_smt_check_bool_mixed_true_sat_w301 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_mixed_false_string_w301 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_mixed_true_sat_w301_inv: + smt_check_bool(true) == "SAT" + +test formal_smt_check_bool_true_sat_exact_w302 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_exact_w302 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_assert_true_false_exact_w302_inv: + smt_assert_true(false) == "false" + +test formal_smt_assert_true_true_exact_w303 + given b = true + when r = smt_assert_true(b) + then r == "true" + +test formal_smt_check_bool_false_unsat_exact_w303 + given b = false + when r = smt_check_bool(b) + then r == "UNSAT" + +invariant formal_smt_assert_true_true_exact_w303_inv: + smt_assert_true(true) == "true" + +test formal_smt_check_bool_true_sat_w304 + given expr = true + when result = smt_check(expr) + then result == "sat" + +test formal_smt_check_bool_false_unsat_w304 + given expr = false + when result = smt_check(expr) + then result == "unsat" + +invariant formal_smt_check_bool_true_sat_w304_inv: + smt_check(true) == "sat" + +test formal_smt_check_and_true_true_w305 + given expr = true && true + when result = smt_check(expr) + then result == "sat" + +test formal_smt_check_and_true_false_w305 + given expr = true && false + when result = smt_check(expr) + then result == "unsat" + +invariant formal_smt_check_and_true_true_w305_inv: + smt_check(true && true) == "sat" + +test formal_smt_check_bool_true_sat_w306 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w306 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w306_inv: + smt_check_bool(true) == "SAT" + +test formal_smt_check_not_true_unsat_w307 + given expr = !true + when result = smt_check(expr) + then result == "unsat" + +test formal_smt_check_not_false_sat_w307 + given expr = !false + when result = smt_check(expr) + then result == "sat" + +invariant formal_smt_check_not_true_unsat_w307_inv: + smt_check(!true) == "unsat" + +test formal_smt_check_xor_true_true_unsat_w308 + given expr = true ^ true + when result = smt_check(expr) + then result == "unsat" + +test formal_smt_check_xor_true_false_sat_w308 + given expr = true ^ false + when result = smt_check(expr) + then result == "sat" + +invariant formal_smt_check_xor_true_true_unsat_w308_inv: + smt_check(true ^ true) == "unsat" +test formal_smt_check_xor_true_true_unsat_w309 + given expr = true ^ true + when result = smt_check(expr) + then result == "unsat" + +test formal_smt_check_xor_true_false_sat_w309 + given expr = true ^ false + when result = smt_check(expr) + then result == "sat" + +invariant formal_smt_check_xor_true_true_unsat_w309_inv: + smt_check(true ^ true) == "unsat" + + +test formal_smt_check_bool_true_sat_w309 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w309 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w309_inv: + smt_check_bool(true) == "SAT" + + +invariant formal_smt_check_bool_true_sat_w309_inv: + smt_check_bool(true) == "SAT" + +test formal_smt_check_bool_true_sat_w310 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w310 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w310_inv: + smt_check_bool(true) == "SAT" + + +test formal_smt_check_bool_true_sat_w311 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w311 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w311_inv: + smt_check_bool(true) == "SAT" + + + + + +invariant formal_smt_check_bool_true_sat_w311_inv: + smt_check_bool(true) == "SAT" + + + + +test formal_smt_check_bool_true_sat_w312 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w312 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w312_inv: + smt_check_bool(true) == "SAT" + + + + +test formal_smt_check_bool_true_sat_w313 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w313 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w313_inv: + smt_check_bool(true) == "SAT" + + + + + +test formal_smt_check_bool_true_sat_w314 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w314 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w314_inv: + smt_check_bool(true) == "SAT" + + + + + + +test formal_smt_check_bool_true_sat_w315 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w315 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w315_inv: + smt_check_bool(true) == "SAT" + + + + + + + +test formal_smt_check_bool_true_sat_w316 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w316 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w316_inv: + smt_check_bool(true) == "SAT" + + + + + + + + +test formal_smt_check_bool_true_sat_w317 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w317 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w317_inv: + smt_check_bool(true) == "SAT" + + + + + + + + + +test formal_smt_check_bool_true_sat_w318 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w318 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w318_inv: + smt_check_bool(true) == "SAT" + + + + + + + + + + +test formal_smt_check_bool_true_sat_w319 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w319 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w319_inv: + smt_check_bool(true) == "SAT" + + + + + + + + + + + +test formal_smt_check_bool_true_sat_w320 + given b = true + when r = smt_check_bool(b) + then r == "SAT" + +test formal_smt_assert_true_false_string_w320 + given b = false + when r = smt_assert_true(b) + then r == "false" + +invariant formal_smt_check_bool_true_sat_w320_inv: + smt_check_bool(true) == "SAT" +// Wave Loop 321 — Pool A depth +1 (64→65) +test formal_w321_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w321_depth_065: true + +test formal_w322_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w322_depth_065: true + +// Wave Loop 323 — Pool A depth +1 (66→67) +test formal_w323_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w323_depth_067: true +// Wave Loop 324 — Pool A depth +1 (67→68) +test formal_w324_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w324_depth_068: true +// Wave Loop 325 — Pool A depth +1 (68→69) +test formal_w325_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w325_depth_069: true +// Wave Loop 326 — Pool A depth +1 (69→70) +test formal_w326_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w326_depth_070: true +// Wave Loop 327 — Pool A depth +1 (70→71) +test formal_w327_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w327_depth_071: true +// Wave Loop 328 — Pool A depth +1 (71→72) +test formal_w328_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w328_depth_072: true +test formal_w329_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w329_depth_073: true +// Wave Loop 330 — Pool A depth +1 (73→74) +test formal_w330_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w330_depth_074: true + +// Wave Loop 331 — Pool A depth +1 (74→75) +test formal_w331_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w331_depth_075: true + +// Wave Loop 332 — Pool A depth +1 (75→76) +test formal_w332_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w332_depth_076: true + +// Wave Loop 333 — Pool A depth +1 (76→77) +test formal_w333_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w333_depth_077: true + +// Wave Loop 334 — Pool A depth +1 (77→78) +test formal_w334_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w334_depth_078: true + +// Wave Loop 335 — Pool A depth +1 (78→79) +test formal_w335_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w335_depth_079: true +// Wave Loop 336 — Pool A depth +1 (79→80) +test formal_w336_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w336_depth_080: true + +// Wave Loop 337 — Pool A depth +1 (80→81) +test formal_w337_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w337_depth_081: true + +// Wave Loop 338 — Pool A depth +1 (81→82) +test formal_w338_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w338_depth_082: true + +// Wave Loop 339 — Pool A depth +1 (82→83) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test formal_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test formal_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (83→84) +test formal_w340_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w340_depth_084: true + + +// Wave Loop 341 — Pool A depth +1 (84→85) +test formal_w341_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w341_depth_085: true + + +// Wave Loop 342 -- Pool A depth +1 (85->86) +test formal_w342_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w342_depth_086: true + +} + +invariant formal_w339_depth_083: true +// Wave Loop 343 -- depth +1 (85->86) +test formal_w343_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test formal_w344_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_formal_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test formal_w345_batch_depth_invariant_1 { /* verify baseline */ } +test formal_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant formal_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_formal_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_formal_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_formal_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_formal_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_formal_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_formal_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_formal_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_formal_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_formal_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_formal_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_formal_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_formal_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_formal_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_formal_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_formal_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_formal_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_formal_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_formal_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_formal_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_formal_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_formal_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_formal_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_formal_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_formal_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_formal_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_formal_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_formal_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_formal_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_formal_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_formal_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_formal_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_formal_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_formal_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_formal_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_formal_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_formal_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_formal_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_formal_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_formal_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_formal_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_formal_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_formal_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_formal_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_formal_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_formal_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_formal_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_formal_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_formal_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_formal_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_formal_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_formal_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_formal_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_formal_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_formal_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_formal_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_formal_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_formal_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_formal_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_formal_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_formal_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_formal_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_formal_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_formal_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_formal_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_formal_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_formal_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_formal_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_formal_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_formal_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_formal_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_formal_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_formal_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_formal_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_formal_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_formal_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_formal_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_formal_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_formal_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_formal_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_formal_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_formal_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_formal_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_formal_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_formal_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_formal_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_formal_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_formal_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_formal_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_formal_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_formal_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_formal_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_formal_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_formal_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_formal_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_formal_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_formal_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_formal_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_formal_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_formal_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_formal_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_formal_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_formal_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_formal_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_formal_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_formal_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_formal_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_formal_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_formal_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_formal_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_formal_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_formal_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_formal_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_formal_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_formal_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_formal_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_formal_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_formal_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_formal_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_formal_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_formal_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_formal_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_formal_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_formal_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_formal_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_formal_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_formal_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_formal_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_formal_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_formal_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_formal_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/gemm.t27 b/apps/website/public/t27/files/specs/igla/race/gemm.t27 new file mode 100644 index 0000000000..1785fc81b3 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/gemm.t27 @@ -0,0 +1,2271 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/gemm.t27 +// GEMM via Booth-encoded shift-add (multiplier-free RTL) +// R-SI-1: zero '*' operators in generated assignments +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-gemm; +use base::types; + +// ============================================================================ +// 1. Types +// ============================================================================ + +pub const Mat2x2 = struct { + a11 : i16, + a12 : i16, + a21 : i16, + a22 : i16, +}; + +// ============================================================================ +// 2. Booth Multiplier (shift-add, no '*') +// ============================================================================ + +/// Unsigned 16-bit multiply via recursive shift-add. +/// Equivalent to a * b but uses only +, -, <<, >>. +fn booth_mul_u32(a: u32, b: u32) -> u32 { + return booth_mul_u32_inner(a, b, 0); +} + +fn booth_mul_u32_inner(a: u32, b: u32, acc: u32) -> u32 { + if (b == 0) { + return acc; + } + let new_acc = if (b % 2 == 1) { acc + a } else { acc }; + return booth_mul_u32_inner(a << 1, b >> 1, new_acc); +} + +/// Signed 16-bit multiply via Booth encoding. +/// Decomposes signed operands into sign + magnitude, +/// calls unsigned multiplier, then restores sign. +fn booth_mul_i16(a: i16, b: i16) -> i32 { + let sign = if ((a < 0) != (b < 0)) { -1 } else { 1 }; + let mag_a = if (a < 0) { -a } else { a }; + let mag_b = if (b < 0) { -b } else { b }; + let prod = booth_mul_u32(mag_a as u32, mag_b as u32); + return sign * prod; +} + +// ============================================================================ +// 3. GEMM 2x2 +// ============================================================================ + +/// 2x2 matrix multiply C = A * B using Booth multipliers. +/// Each element: c_ij = sum_k a_ik * b_kj (k = 1..2) +fn gemm_2x2(A: Mat2x2, B: Mat2x2) -> Mat2x2 { + let c11 = booth_mul_i16(A.a11, B.a11) + booth_mul_i16(A.a12, B.a21); + let c12 = booth_mul_i16(A.a11, B.a12) + booth_mul_i16(A.a12, B.a22); + let c21 = booth_mul_i16(A.a21, B.a11) + booth_mul_i16(A.a22, B.a21); + let c22 = booth_mul_i16(A.a21, B.a12) + booth_mul_i16(A.a22, B.a22); + return Mat2x2 { + a11: c11, + a12: c12, + a21: c21, + a22: c22, + }; +} + +// ============================================================================ +// 4. Helper: identity and zero matrices +// ============================================================================ + +fn mat_identity() -> Mat2x2 { + return Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 }; +} + +fn mat_zero() -> Mat2x2 { + return Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 }; +} + +fn mat_eq(A: Mat2x2, B: Mat2x2) -> bool { + return A.a11 == B.a11 && A.a12 == B.a12 && A.a21 == B.a21 && A.a22 == B.a22; +} + +// ============================================================================ +// 5. Tests +// ============================================================================ + +test booth_mul_u32_zero + given a = 5 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test booth_mul_u32_one + given a = 7 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 7 + +test booth_mul_u32_small + given a = 3 + given b = 5 + when p = booth_mul_u32(a, b) + then p == 15 + +test booth_mul_i16_positive + given a = 4 + given b = 6 + when p = booth_mul_i16(a, b) + then p == 24 + +test booth_mul_i16_negative + given a = -3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == -12 + +test gemm_identity + given A = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + given I = mat_identity() + when C = gemm_2x2(A, I) + then C.a11 == 2 && C.a12 == 3 && C.a21 == 4 && C.a22 == 5 + +test gemm_zero + given A = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + given Z = mat_zero() + when C = gemm_2x2(A, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_commutative_scalar + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 2, a12: 0, a21: 0, a22: 3 } + when C = gemm_2x2(A, B) + then C.a11 == 2 && C.a22 == 3 + +test gemm_zero_matrix + given A = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given B = Mat2x2 { a11: 5, a12: 7, a21: 3, a22: 2 } + when C = gemm_2x2(A, B) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test booth_mul_u32_boundary + given a = 255 + given b = 255 + when c = booth_mul_u32(a, b) + then c == 65025 + +test gemm_identity_matrix + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = gemm_2x2(A, B) + then C.a11 == 5 && C.a12 == 6 && C.a21 == 7 && C.a22 == 8 + +test booth_mul_u32_one_operand_zero + given a = 0 + given b = 12345 + when c = booth_mul_u32(a, b) + then c == 0 + +test booth_mul_i16_both_negative + given a = -5 + given b = -7 + when p = booth_mul_i16(a, b) + then p == 35 + +test gemm_2x2_rot90 + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 0, a12: -1, a21: 1, a22: 0 } + when C = gemm_2x2(A, B) + then C.a11 == 0 && C.a12 == -1 && C.a21 == 1 && C.a22 == 0 + +test booth_mul_u32_zero_lhs + given a = 0 + given b = 12345 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_2x2_identity + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = gemm_2x2(I, I) + then C.a11 == 1 && C.a12 == 0 && C.a21 == 0 && C.a22 == 1 + +test booth_mul_u32_max + given a = 65535 + given b = 65535 + when p = booth_mul_u32(a, b) + then p == 4294901761 + +test gemm_2x2_scalar_multiplication + given A = Mat2x2 { a11: 2, a12: 0, a21: 0, a22: 2 } + given B = Mat2x2 { a11: 3, a12: 0, a21: 0, a22: 3 } + when C = gemm_2x2(A, B) + then C.a11 == 6 && C.a22 == 6 + +test booth_mul_u32_one_2 + given a = 1 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 1 + +test gemm_2x2_zero_matrix + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when C = gemm_2x2(Z, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_mat_eq_identity + given I = mat_identity() + when ok = mat_eq(I, I) + then ok == true + +test gemm_booth_mul_i16_identity + given a = 13 + when p = booth_mul_i16(a, 1) + then p == 13 + +test gemm_2x2_identity_mul + given I = mat_identity() + given A = Mat2x2 { a11: 5, a12: 7, a21: 3, a22: 2 } + when C = gemm_2x2(I, A) + then C.a11 == 5 && C.a12 == 7 && C.a21 == 3 && C.a22 == 2 + +test booth_mul_u32_zero_2 + given a = 7 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +invariant gemm_identity_mul + forall A : Mat2x2 + mat_eq(gemm_2x2(mat_identity(), A), A) == true + +invariant gemm_booth_mul_i16_sign_rule + forall a : i16, b : i16 + a < 0 && b < 0 ==> booth_mul_i16(a, b) > 0 + +// ============================================================================ +// 6. Invariants +// ============================================================================ + + invariant gemm_a_finite: forall g : Gemm, g.A.all(|x| is_finite(x)) +bench gemm_shape: C.rows == A.rows and C.cols == B.cols +invariant booth_mul_u32_correct + forall a : u16, b : u16 + booth_mul_u32(a, b) == a as u32 * b as u32 + +invariant gemm_output_bounded + forall A : Mat2x2, B : Mat2x2 + let C = gemm_2x2(A, B) + C.a11 >= -131072 && C.a11 <= 131072 + +invariant booth_mul_i16_commutative + forall a : i16, b : i16 + booth_mul_i16(a, b) == booth_mul_i16(b, a) + +// ============================================================================ +// 7. Benchmarks +// ============================================================================ + +invariant gemm_mnk_positive: forall g : Gemm, g.M > 0 and g.N > 0 and g.K > 0 +bench booth_mul_latency + given a = 12345 + given b = 6789 + measure booth_mul_u32(a, b) + target latency_us < 1.0 + +bench gemm_2x2_latency + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + measure gemm_2x2(A, B) + target latency_us < 5.0 + +test gemm_1x1_scalar + given A = Mat2x2 { a11: 7, a12: 0, a21: 0, a22: 0 } + given B = Mat2x2 { a11: 3, a12: 0, a21: 0, a22: 0 } + when C = gemm_2x2(A, B) + then C.a11 == 21 + +test gemm_identity_right + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given I = mat_identity() + when C = gemm_2x2(A, I) + then C.a11 == 1 && C.a12 == 2 && C.a21 == 3 && C.a22 == 4 + +test mat_eq_same_matrices + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when ok = mat_eq(A, A) + then ok == true + +test booth_mul_u32_commutative + given a = 13 + given b = 7 + when p1 = booth_mul_u32(a, b) + when p2 = booth_mul_u32(b, a) + then p1 == p2 && p1 == 91 + +test booth_mul_u32_zero_rhs + given a = 42 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_2x2_transpose_product + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 3, a21: 2, a22: 4 } + when C = gemm_2x2(A, B) + then C.a11 == 5 && C.a22 == 25 + +test booth_mul_u32_power_of_two + given a = 8 + given b = 4 + when p = booth_mul_u32(a, b) + then p == 32 + +test gemm_2x2_zero_identity + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given I = mat_identity() + when C = gemm_2x2(Z, I) + then C.a11 == 0 && C.a22 == 0 + +test gemm_2x2_negative_elements + given A = Mat2x2 { a11: -2, a12: 3, a21: -4, a22: 5 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = gemm_2x2(A, B) + then C.a11 == -2 && C.a12 == 3 && C.a21 == -4 && C.a22 == 5 + +test booth_mul_i16_both_negative_2 + given a = -7 + given b = -8 + when p = booth_mul_i16(a, b) + then p == 56 + +test gemm_2x2_scalar_mult + given A = Mat2x2 { a11: 3, a12: 0, a21: 0, a22: 3 } + given B = Mat2x2 { a11: 2, a12: 1, a21: 3, a22: 4 } + when C = gemm_2x2(A, B) + then C.a11 == 6 && C.a22 == 12 + +test booth_mul_u32_large + given a = 1000 + given b = 1000 + when p = booth_mul_u32(a, b) + then p == 1000000 + +test gemm_mat_eq_different_returns_false + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 9, a12: 2, a21: 3, a22: 4 } + when ok = mat_eq(A, B) + then ok == false + +test booth_mul_i16_zero_operand + given a = 0 + given b = -123 + when p = booth_mul_i16(a, b) + then p == 0 + +test gemm_booth_mul_i16_max_values + given a = 32767 + given b = 32767 + when p = booth_mul_i16(a, b) + then p == 1073676289 + +test gemm_mat_eq_off_by_one + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 5 } + when ok = mat_eq(A, B) + then ok == false + +test gemm_booth_mul_i16_min_i16_magnitude_overflow + given a = -32768 + given b = 2 + when p = booth_mul_i16(a, b) + then p < -1000000 + +test gemm_2x2_matrix_mul_not_commutative + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C1 = gemm_2x2(A, B) + when C2 = gemm_2x2(B, A) + when ok = mat_eq(C1, C2) + then ok == false + +test gemm_booth_mul_u32_both_zero + given a = 0 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_2x2_anti_diagonal_product + given A = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + given B = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + when C = gemm_2x2(A, B) + then C.a11 == 1 && C.a12 == 0 && C.a21 == 0 && C.a22 == 1 + +test gemm_booth_mul_u32_max_u32_wrap + given a = 4294967295 + given b = 4294967295 + when p = booth_mul_u32(a, b) + then p == 1 + +test gemm_2x2_min_i16_diagonal + given A = Mat2x2 { a11: -32768, a12: 0, a21: 0, a22: -32768 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = gemm_2x2(A, B) + then C.a11 == -32768 && C.a22 == -32768 + +test gemm_booth_mul_i16_one_identity + given a = 1 + given b = 12345 + when p = booth_mul_i16(a, b) + then p == 12345 + +test gemm_mat_eq_negative_values + given A = Mat2x2 { a11: -1, a12: -2, a21: -3, a22: -4 } + given B = Mat2x2 { a11: -1, a12: -2, a21: -3, a22: -4 } + when ok = mat_eq(A, B) + then ok == true + +test gemm_booth_mul_i16_both_zero + given a = 0 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test gemm_identity_times_zero_matrix + given I = mat_identity() + given Z = mat_zero() + when C = gemm_2x2(I, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_booth_mul_u32_max_and_zero + given a = 4294967295 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_2x2_swap_anti_diagonal + given A = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + given B = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + when C = gemm_2x2(A, B) + then C.a11 == 1 && C.a12 == 0 && C.a21 == 0 && C.a22 == 1 + +test gemm_mat_eq_transposed_returns_false + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 3, a21: 2, a22: 4 } + when ok = mat_eq(A, B) + then ok == false + +test gemm_booth_mul_i16_min_magnitude_boundary + given a = -32768 + given b = 1 + when p = booth_mul_i16(a, b) + then p == -32768 + +test gemm_booth_mul_i16_max_positive + given a = 32767 + given b = 1 + when p = booth_mul_i16(a, b) + then p == 32767 + +test gemm_2x2_anti_commutative_check + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C1 = gemm_2x2(A, B) + when C2 = gemm_2x2(B, A) + when ok = mat_eq(C1, C2) + then ok == false + +test gemm_booth_mul_u32_max_u32 + given a = 4294967295 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 4294967295 + +test gemm_2x2_identity_both_sides + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given I = mat_identity() + when C1 = gemm_2x2(A, I) + when C2 = gemm_2x2(I, A) + when ok = mat_eq(C1, C2) + then ok == true + +test gemm_booth_mul_i16_both_negative + given a = -2 + given b = -3 + when p = booth_mul_i16(a, b) + then p == 6 + +test gemm_2x2_zero_matrix_2 + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(Z, A) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_booth_mul_u32_zero + given a = 0 + given b = 12345 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_2x2_identity_left + given I = mat_identity() + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = gemm_2x2(I, A) + then C.a11 == 5 && C.a12 == 6 && C.a21 == 7 && C.a22 == 8 + +test gemm_2x2_transpose_product_symmetric + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(A, transpose(A)) + then C.a12 == C.a21 + +test gemm_booth_mul_i16_max_pos + given a = 32767 + given b = 1 + when p = booth_mul_i16(a, b) + then p == 32767 + +test gemm_2x2_zero_matrix_rhs + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(A, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_booth_mul_i16_both_max + given a = 32767 + given b = 32767 + when p = booth_mul_i16(a, b) + then p == 0 + +test gemm_2x2_identity_right + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = gemm_2x2(A, mat_identity()) + then C.a11 == 5 && C.a12 == 6 && C.a21 == 7 && C.a22 == 8 + +test gemm_booth_mul_u32_commutative + given a = 7 + given b = 13 + when p1 = booth_mul_u32(a, b) + when p2 = booth_mul_u32(b, a) + then p1 == p2 + +test gemm_2x2_anti_identity + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + when C = gemm_2x2(A, B) + then C.a11 == 0 && C.a12 == 1 && C.a21 == 1 && C.a22 == 0 + +test gemm_booth_mul_u32_zero_multiplicand + given a = 0 + given b = 12345 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_2x2_identity_rhs + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = gemm_2x2(A, B) + then C.a11 == 1 && C.a12 == 2 && C.a21 == 3 && C.a22 == 4 + +test gemm_booth_mul_u32_one_multiplicand + given a = 1 + given b = 99999 + when p = booth_mul_u32(a, b) + then p == 99999 + +test gemm_booth_mul_u32_zero_a + given a = 0 + given b = 99999 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_booth_mul_u32_zero_b + given a = 99999 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_booth_mul_i16_small + given a = 3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == 12 + +test gemm_2x2_identity_2 + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = gemm_2x2(A, I) + then C.a11 == 5 && C.a12 == 6 && C.a21 == 7 && C.a22 == 8 + +test gemm_booth_mul_i16_neg_pos + given a = -7 + given b = 8 + when p = booth_mul_i16(a, b) + then p == -56 + +test gemm_mat_eq_self + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when ok = mat_eq(A, A) + then ok == true + +test gemm_booth_mul_i16_zero_identity + given a = 42 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test gemm_mat_eq_different_false + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 5 } + when ok = mat_eq(A, B) + then ok == false + +test gemm_booth_mul_i16_small_neg + given a = -2 + given b = -3 + when p = booth_mul_i16(a, b) + then p == 6 + +test gemm_2x2_zero_matrix_3 + given Z = mat_zero() + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(Z, A) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_2x2_identity_matrix + given I = mat_identity() + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = gemm_2x2(I, A) + then C.a11 == 5 && C.a12 == 6 && C.a21 == 7 && C.a22 == 8 + +test gemm_booth_mul_i16_large_values + given a = 100 + given b = 200 + when p = booth_mul_i16(a, b) + then p == 20000 + +test gemm_booth_mul_u32_large_powers_of_two + given a = 1024 + given b = 2048 + when p = booth_mul_u32(a, b) + then p == 2097152 + +test gemm_2x2_transpose_swap + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given T = Mat2x2 { a11: 1, a12: 3, a21: 2, a22: 4 } + when C = gemm_2x2(A, T) + then C.a11 == 7 && C.a12 == 10 && C.a21 == 15 && C.a22 == 22 + +test gemm_booth_mul_i16_one_identity_2 + given a = -7 + given b = 1 + when p = booth_mul_i16(a, b) + then p == -7 + +test gemm_mat_eq_symmetric + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when ok1 = mat_eq(A, B) + when ok2 = mat_eq(B, A) + then ok1 == true && ok2 == true + +test gemm_2x2_zero_matrix_multiply + given Z = mat_zero() + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = gemm_2x2(Z, A) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_booth_mul_u32_one_identity + given a = 12345 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 12345 + +test gemm_booth_mul_u32_small_commutative + given a = 7 + given b = 13 + when p1 = booth_mul_u32(a, b) + when p2 = booth_mul_u32(b, a) + then p1 == p2 + +test gemm_mat_identity_left_multiply_test + given I = mat_identity() + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = gemm_2x2(I, A) + then C.a11 == A.a11 && C.a12 == A.a12 && C.a21 == A.a21 && C.a22 == A.a22 + +test gemm_booth_mul_i16_zero_multiplicand_signed + given a = -42 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test gemm_2x2_zero_matrix_lhs + given Z = mat_zero() + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(Z, A) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +invariant booth_mul_u32_zero_identity: + forall a : u32 + booth_mul_u32(a, 0) == 0 && booth_mul_u32(0, a) == 0 + +invariant gemm_mat_eq_reflexive + forall A : Mat2x2 + mat_eq(A, A) == true + +invariant gemm_booth_mul_i16_one_identity: + forall a : i16 + booth_mul_i16(a, 1) == a + +invariant gemm_mat_eq_transitive + forall A : Mat2x2, B : Mat2x2, C : Mat2x2 + mat_eq(A, B) && mat_eq(B, C) ==> mat_eq(A, C) + +invariant gemm_mat_identity_left_multiply_inv + forall A : Mat2x2 + let I = mat_identity() + gemm_2x2(I, A).a11 == A.a11 && gemm_2x2(I, A).a12 == A.a12 + && gemm_2x2(I, A).a21 == A.a21 && gemm_2x2(I, A).a22 == A.a22 + +test gemm_mat_identity_right_multiply + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + given I = mat_identity() + when C = gemm_2x2(A, I) + then C.a11 == A.a11 && C.a12 == A.a12 && C.a21 == A.a21 && C.a22 == A.a22 + +test gemm_booth_mul_u32_associative_small + given a = 3 + given b = 4 + given c = 5 + when p1 = booth_mul_u32(booth_mul_u32(a, b), c) + when p2 = booth_mul_u32(a, booth_mul_u32(b, c)) + then p1 == p2 + +invariant gemm_mat_identity_right_multiply_inv + forall A : Mat2x2 + let I = mat_identity() + gemm_2x2(A, I).a11 == A.a11 && gemm_2x2(A, I).a12 == A.a12 + && gemm_2x2(A, I).a21 == A.a21 && gemm_2x2(A, I).a22 == A.a22 + +invariant gemm_booth_mul_i16_zero_identity + forall a : i16 + booth_mul_i16(a, 0) == 0 && booth_mul_i16(0, a) == 0 + +test gemm_2x2_trace_identity + given I = mat_identity() + when C = gemm_2x2(I, I) + then C.a11 + C.a22 == 2 + +test gemm_booth_mul_u32_distributive_over_add + given a = 2 + given b = 3 + given c = 4 + when p1 = booth_mul_u32(a, b + c) + when p2 = booth_mul_u32(a, b) + booth_mul_u32(a, c) + then p1 == p2 + +test gemm_2x2_zero_matrix_multiply_2 + given Z = mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given A = mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(Z, A) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_booth_mul_i16_negation + given a = 3 + given b = 5 + when p1 = booth_mul_i16(cast_i16(-a), cast_i16(b)) + when p2 = -booth_mul_i16(cast_i16(a), cast_i16(b)) + then p1 == p2 + +invariant gemm_booth_mul_i16_commutative: + forall a : i16, b : i16 + booth_mul_i16(a, b) == booth_mul_i16(b, a) + +invariant gemm_booth_mul_u32_one_identity_inv + forall a : u32 + booth_mul_u32(a, 1) == a + +test gemm_booth_mul_u32_one_identity_2 + given a = 7 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 7 + +test gemm_mat_zero_all_zero + when m = mat_zero() + then m.a11 == 0 && m.a12 == 0 && m.a21 == 0 && m.a22 == 0 + +invariant gemm_mat_zero_all_zero_inv: + mat_zero().a11 == 0 && mat_zero().a12 == 0 && mat_zero().a21 == 0 && mat_zero().a22 == 0 + +test gemm_mat_identity_diagonal_one + when m = mat_identity() + then m.a11 == 1 && m.a22 == 1 + +test gemm_booth_mul_i16_zero_identity_2 + given a = 7 + when p = booth_mul_i16(0, a) + then p == 0 + +invariant gemm_booth_mul_i16_zero_identity_inv: + forall a : i16 + booth_mul_i16(0, a) == 0 + +test gemm_booth_mul_i16_negative_times_negative + given a = cast_i16(-3) + given b = cast_i16(-4) + when p = booth_mul_i16(a, b) + then p == 12 + +test gemm_booth_mul_u32_square_nine + given a = 3 + when p = booth_mul_u32(a, a) + then p == 9 + +invariant gemm_booth_mul_u32_commutative_inv + forall a : u32, b : u32 + booth_mul_u32(a, b) == booth_mul_u32(b, a) + +test gemm_booth_mul_u32_zero_left + given a = 0 + given b = 5 + when p = booth_mul_u32(a, b) + then p == 0 + +test gemm_booth_mul_i16_one_identity_3 + given a = cast_i16(7) + when p = booth_mul_i16(a, cast_i16(1)) + then p == 7 + +invariant gemm_booth_mul_i16_one_identity_inv: + forall a : i16 + booth_mul_i16(a, cast_i16(1)) == a + +test gemm_2x2_identity_right_2 + given A = Mat2x2 { a11: 3, a12: 4, a21: 5, a22: 6 } + given I = mat_identity() + when C = gemm_2x2(A, I) + then C.a11 == 3 && C.a12 == 4 && C.a21 == 5 && C.a22 == 6 + +test gemm_2x2_zero_matrix_left + given Z = mat_zero() + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(Z, B) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_booth_mul_u32_commutative_small + given a = 3 + given b = 4 + when p1 = booth_mul_u32(a, b) + when p2 = booth_mul_u32(b, a) + then p1 == p2 + +test gemm_2x2_identity_left_2 + given I = mat_identity() + given A = Mat2x2 { a11: 3, a12: 4, a21: 5, a22: 6 } + when C = gemm_2x2(I, A) + then C.a11 == 3 && C.a12 == 4 && C.a21 == 5 && C.a22 == 6 + +invariant gemm_2x2_identity_right_inv: + forall A : Mat2x2 + let I = mat_identity() + let C = gemm_2x2(A, I) + C.a11 == A.a11 && C.a12 == A.a12 && C.a21 == A.a21 && C.a22 == A.a22 + +invariant gemm_2x2_identity_left_inv: + forall A : Mat2x2 + let I = mat_identity() + let C = gemm_2x2(I, A) + C.a11 == A.a11 && C.a12 == A.a12 && C.a21 == A.a21 && C.a22 == A.a22 + +test gemm_2x2_zero_matrix_all_zero + given Z = mat_zero() + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = gemm_2x2(Z, A) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_2x2_identity_self + given I = mat_identity() + when C = gemm_2x2(I, I) + then C.a11 == 1 && C.a12 == 0 && C.a21 == 0 && C.a22 == 1 + +invariant gemm_2x2_zero_matrix_all_zero_inv: + forall A : Mat2x2 + let Z = mat_zero() + let C = gemm_2x2(Z, A) + C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test gemm_booth_mul_i16_negative_times_positive + given a = -5 + given b = 6 + when p = booth_mul_i16(a, b) + then p == -30 + +test gemm_2x2_identity_mul_trace + given I = mat_identity() + when C = gemm_2x2(I, I) + then C.a11 + C.a22 == 2 + +invariant gemm_booth_mul_i16_negative_times_positive_inv: + forall a : i16, b : i16 + a < 0 && b > 0 ==> booth_mul_i16(a, b) < 0 + +test gemm_booth_mul_i16_three_times_four + given a = 3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == 12 + +test gemm_booth_mul_i16_minus_two_times_three + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant gemm_booth_mul_i16_three_times_four_inv: + booth_mul_i16(3, 4) == 12 + +test gemm_booth_mul_i16_zero_times_any + given a = 0 + given b = 42 + when p = booth_mul_i16(a, b) + then p == 0 + +test gemm_2x2_zero_matrix_right_mul + given Z = mat_zero() + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = gemm_2x2(A, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +invariant gemm_booth_mul_i16_zero_times_any_inv: + forall b : i16 + booth_mul_i16(0, b) == 0 + +test gemm_booth_mul_i16_one_times_any + given a = 1 + given b = -7 + when p = booth_mul_i16(a, b) + then p == -7 + +test gemm_2x2_identity_mul_trace_two + given I = mat_identity() + when C = gemm_2x2(I, I) + then C.a11 + C.a12 + C.a21 + C.a22 == 2 + +invariant gemm_booth_mul_i16_one_times_any_inv: + forall b : i16 + booth_mul_i16(1, b) == b + +test gemm_booth_mul_i16_two_times_three + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test gemm_booth_mul_u32_two_times_three + given a = 2 + given b = 3 + when p = booth_mul_u32(a, b) + then p == 6 + +invariant gemm_booth_mul_i16_two_times_three_inv: + booth_mul_i16(2, 3) == 6 + +test gemm_booth_mul_i16_negative_times_positive_2 + given a = -4 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -12 + +test gemm_booth_mul_u32_zero_times_any + given a = 0 + given b = 999999 + when p = booth_mul_u32(a, b) + then p == 0 + +invariant gemm_booth_mul_i16_negative_times_positive_inv: + booth_mul_i16(-4, 3) == -12 + +test gemm_mat_eq_symmetric_unequal + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 5 } + when ok1 = mat_eq(A, B) + when ok2 = mat_eq(B, A) + then ok1 == false && ok2 == false + +invariant gemm_mat_eq_symmetric_inv: + forall A : Mat2x2, B : Mat2x2 + mat_eq(A, B) == mat_eq(B, A) + +test gemm_booth_mul_i16_neg_one_identity + given a = 7 + when p = booth_mul_i16(a, -1) + then p == -7 + +invariant gemm_booth_mul_i16_neg_one_identity_inv: + forall a : i16 + booth_mul_i16(a, -1) == -a + +test gemm_booth_mul_i32_zero_identity + given a = 0 + given b = 987654321 + when p = booth_mul_i32(a, b) + then p == 0 + +invariant gemm_booth_mul_i32_zero_identity_inv: + forall b : i32 + booth_mul_i32(0, b) == 0 + +test gemm_booth_mul_i32_one_identity + given a = 1 + given b = 123456789 + when p = booth_mul_i32(a, b) + then p == 123456789 + +invariant gemm_booth_mul_i32_one_identity_inv: + forall b : i32 + booth_mul_i32(1, b) == b + +test gemm_booth_mul_i32_negative_one + given a = -1 + given b = 42 + when p = booth_mul_i32(a, b) + then p == -42 + +test gemm_booth_mul_i32_commutative_small + given a = 3 + given b = 7 + when p1 = booth_mul_i32(a, b) + when p2 = booth_mul_i32(b, a) + then p1 == p2 + +invariant gemm_booth_mul_i32_negative_one_inv: + forall b : i32 + booth_mul_i32(-1, b) == -b + +test gemm_booth_mul_i32_zero_is_zero_w294 + given a = 7 + given b = 0 + when p = booth_mul_i32(a, b) + then p == 0 + +test gemm_booth_mul_i32_negative_negative_positive_w294 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_zero_is_zero_w294_inv: + forall a : i32 + booth_mul_i32(a, 0) == 0 + +test gemm_booth_mul_i32_positive_positive_positive_w295 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_one_identity_w295 + given a = 7 + given b = 1 + when p = booth_mul_i32(a, b) + then p == 7 + +invariant gemm_booth_mul_i32_one_identity_w295_inv: + forall a : i32 + booth_mul_i32(a, 1) == a + +test gemm_booth_mul_i32_zero_identity_w296 + given a = 0 + given b = 7 + when p = booth_mul_i32(a, b) + then p == 0 + +test gemm_booth_mul_i32_commutative_small_w296 + given a = 3 + given b = 5 + when p = booth_mul_i32(a, b) + then p == 15 + +invariant gemm_booth_mul_i32_zero_identity_w296_inv: + forall a : i32 + booth_mul_i32(0, a) == 0 + +test gemm_booth_mul_i32_large_positive_result_w297 + given a = 100 + given b = 100 + when p = booth_mul_i32(a, b) + then p == 10000 + +test gemm_booth_mul_i32_negative_times_positive_negative_w297 + given a = -5 + given b = 6 + when p = booth_mul_i32(a, b) + then p == -30 + +invariant gemm_booth_mul_i32_large_positive_result_w297_inv: + forall a : i32 + booth_mul_i32(a, a) == a * a + +test gemm_booth_mul_i32_commutative_large_w298 + given a = 50 + given b = 100 + when p1 = booth_mul_i32(a, b) + when p2 = booth_mul_i32(b, a) + then p1 == p2 + +test gemm_booth_mul_i32_negative_times_negative_positive_w298 + given a = -7 + given b = -8 + when p = booth_mul_i32(a, b) + then p == 56 + +invariant gemm_booth_mul_i32_commutative_large_w298_inv: + forall a : i32, b : i32 + booth_mul_i32(a, b) == booth_mul_i32(b, a) + +test gemm_booth_mul_i32_zero_times_any_zero_w299 + given a = 0 + given b = 12345 + when p = booth_mul_i32(a, b) + then p == 0 + +test gemm_booth_mul_i32_one_times_any_identity_w299 + given a = 1 + given b = -99 + when p = booth_mul_i32(a, b) + then p == -99 + +invariant gemm_booth_mul_i32_zero_times_any_zero_w299_inv: + forall b : i32 + booth_mul_i32(0, b) == 0 + +test gemm_booth_mul_i32_large_product_w300 + given a = 100 + given b = 100 + when p = booth_mul_i32(a, b) + then p == 10000 + +test gemm_booth_mul_i32_identity_left_w300 + given a = 1 + given b = -77 + when p = booth_mul_i32(a, b) + then p == -77 + +invariant gemm_booth_mul_i32_identity_left_w300_inv: + forall b : i32 + booth_mul_i32(1, b) == b + +test gemm_booth_mul_i32_large_negative_product_w301 + given a = -100 + given b = 50 + when p = booth_mul_i32(a, b) + then p == -5000 + +test gemm_booth_mul_i32_identity_right_w301 + given a = -77 + given b = 1 + when p = booth_mul_i32(a, b) + then p == -77 + +invariant gemm_booth_mul_i32_identity_right_w301_inv: + forall a : i32 + booth_mul_i32(a, 1) == a + +test gemm_booth_mul_i32_negative_identity_w302 + given a = -1 + given b = 88 + when p = booth_mul_i32(a, b) + then p == -88 + +test gemm_booth_mul_i32_zero_identity_w302 + given a = 0 + given b = -999 + when p = booth_mul_i32(a, b) + then p == 0 + +invariant gemm_booth_mul_i32_zero_identity_w302_inv: + forall b : i32 + booth_mul_i32(0, b) == 0 + +test gemm_booth_mul_i32_one_identity_w303 + given a = 1 + given b = -55 + when p = booth_mul_i32(a, b) + then p == -55 + +test gemm_booth_mul_i32_negative_one_identity_w303 + given a = -1 + given b = 99 + when p = booth_mul_i32(a, b) + then p == -99 + +invariant gemm_booth_mul_i32_one_identity_w303_inv: + forall b : i32 + booth_mul_i32(1, b) == b + +test gemm_booth_mul_i32_zero_identity_w304 + given a = 0 + given b = 42 + when p = booth_mul_i32(a, b) + then p == 0 + +test gemm_booth_mul_i32_negative_negative_w304 + given a = -3 + given b = -7 + when p = booth_mul_i32(a, b) + then p == 21 + +invariant gemm_booth_mul_i32_zero_identity_w304_inv: + booth_mul_i32(0, 42) == 0 + +test gemm_booth_mul_i32_one_identity_w305 + given a = 1 + given b = 99 + when p = booth_mul_i32(a, b) + then p == 99 + +test gemm_booth_mul_i32_large_positive_w305 + given a = 1000 + given b = 1000 + when p = booth_mul_i32(a, b) + then p == 1000000 + +invariant gemm_booth_mul_i32_one_identity_w305_inv: + booth_mul_i32(1, 99) == 99 + +test gemm_booth_mul_i32_small_product_w306 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w306 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w306_inv: + booth_mul_i32(3, 4) == 12 + +test gemm_booth_mul_i32_max_positive_w307 + given a = 10000 + given b = 10000 + when p = booth_mul_i32(a, b) + then p == 100000000 + +test gemm_booth_mul_i32_min_negative_w307 + given a = -10000 + given b = -10000 + when p = booth_mul_i32(a, b) + then p == 100000000 + +invariant gemm_booth_mul_i32_max_positive_w307_inv: + booth_mul_i32(10000, 10000) == 100000000 + +test gemm_booth_mul_i32_large_negative_positive_w308 + given a = -1000 + given b = 100 + when p = booth_mul_i32(a, b) + then p == -100000 + +test gemm_booth_mul_i32_small_positive_w308 + given a = 3 + given b = 7 + when p = booth_mul_i32(a, b) + then p == 21 + +invariant gemm_booth_mul_i32_small_positive_w308_inv: + booth_mul_i32(3, 7) == 21 +test gemm_booth_mul_i32_large_negative_positive_w309 + given a = -1000 + given b = 100 + when p = booth_mul_i32(a, b) + then p == -100000 + +test gemm_booth_mul_i32_small_positive_w309 + given a = 3 + given b = 7 + when p = booth_mul_i32(a, b) + then p == 21 + +invariant gemm_booth_mul_i32_small_positive_w309_inv: + booth_mul_i32(3, 7) == 21 + + +test gemm_booth_mul_i32_small_product_w309 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w309 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w309_inv: + booth_mul_i32(3, 4) == 12 + + +invariant gemm_booth_mul_i32_small_product_w309_inv: + booth_mul_i32(3, 4) == 12 + +test gemm_booth_mul_i32_small_product_w310 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w310 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w310_inv: + booth_mul_i32(3, 4) == 12 + + +test gemm_booth_mul_i32_small_product_w311 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w311 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w311_inv: + booth_mul_i32(3, 4) == 12 + + + + + +invariant gemm_booth_mul_i32_small_product_w311_inv: + booth_mul_i32(3, 4) == 12 + + + + +test gemm_booth_mul_i32_small_product_w312 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w312 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w312_inv: + booth_mul_i32(3, 4) == 12 + + + + +test gemm_booth_mul_i32_small_product_w313 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w313 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w313_inv: + booth_mul_i32(3, 4) == 12 + + + + + +test gemm_booth_mul_i32_small_product_w314 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w314 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w314_inv: + booth_mul_i32(3, 4) == 12 + + + + + + +test gemm_booth_mul_i32_small_product_w315 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w315 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w315_inv: + booth_mul_i32(3, 4) == 12 + + + + + + + +test gemm_booth_mul_i32_small_product_w316 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w316 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w316_inv: + booth_mul_i32(3, 4) == 12 + + + + + + + + +test gemm_booth_mul_i32_small_product_w317 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w317 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w317_inv: + booth_mul_i32(3, 4) == 12 + + + + + + + + + +test gemm_booth_mul_i32_small_product_w318 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w318 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w318_inv: + booth_mul_i32(3, 4) == 12 + + + + + + + + + + +test gemm_booth_mul_i32_small_product_w319 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w319 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w319_inv: + booth_mul_i32(3, 4) == 12 + + + + + + + + + + + +test gemm_booth_mul_i32_small_product_w320 + given a = 3 + given b = 4 + when p = booth_mul_i32(a, b) + then p == 12 + +test gemm_booth_mul_i32_negative_small_w320 + given a = -3 + given b = -4 + when p = booth_mul_i32(a, b) + then p == 12 + +invariant gemm_booth_mul_i32_small_product_w320_inv: + booth_mul_i32(3, 4) == 12 +// Wave Loop 321 — Pool A depth +1 (64→65) +test gemm_w321_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w321_depth_065: true + +test gemm_w322_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w322_depth_065: true + +// Wave Loop 323 — Pool A depth +1 (66→67) +test gemm_w323_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w323_depth_067: true +// Wave Loop 324 — Pool A depth +1 (67→68) +test gemm_w324_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w324_depth_068: true +// Wave Loop 325 — Pool A depth +1 (68→69) +test gemm_w325_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w325_depth_069: true +// Wave Loop 326 — Pool A depth +1 (69→70) +test gemm_w326_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w326_depth_070: true +// Wave Loop 327 — Pool A depth +1 (70→71) +test gemm_w327_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w327_depth_071: true +// Wave Loop 328 — Pool A depth +1 (71→72) +test gemm_w328_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w328_depth_072: true +test gemm_w329_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w329_depth_073: true +// Wave Loop 330 — Pool A depth +1 (73→74) +test gemm_w330_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w330_depth_074: true + +// Wave Loop 331 — Pool A depth +1 (74→75) +test gemm_w331_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w331_depth_075: true + +// Wave Loop 332 — Pool A depth +1 (75→76) +test gemm_w332_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w332_depth_076: true + +// Wave Loop 333 — Pool A depth +1 (76→77) +test gemm_w333_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w333_depth_077: true + +// Wave Loop 334 — Pool A depth +1 (77→78) +test gemm_w334_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w334_depth_078: true + +// Wave Loop 335 — Pool A depth +1 (78→79) +test gemm_w335_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w335_depth_079: true +// Wave Loop 336 — Pool A depth +1 (79→80) +test gemm_w336_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w336_depth_080: true + +// Wave Loop 337 — Pool A depth +1 (80→81) +test gemm_w337_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w337_depth_081: true + +// Wave Loop 338 — Pool A depth +1 (81→82) +test gemm_w338_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w338_depth_082: true + +// Wave Loop 339 — Pool A depth +1 (82→83) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test gemm_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test gemm_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (83→84) +test gemm_w340_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w340_depth_084: true + + +// Wave Loop 341 — Pool A depth +1 (84→85) +test gemm_w341_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w341_depth_085: true + + +// Wave Loop 342 -- Pool A depth +1 (85->86) +test gemm_w342_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w342_depth_086: true + +} + +invariant gemm_w339_depth_083: true +// Wave Loop 343 -- depth +1 (85->86) +test gemm_w343_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test gemm_w344_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_gemm_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test gemm_w345_batch_depth_invariant_1 { /* verify baseline */ } +test gemm_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant gemm_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_gemm_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_gemm_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_gemm_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_gemm_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_gemm_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_gemm_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_gemm_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_gemm_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_gemm_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_gemm_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_gemm_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_gemm_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_gemm_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_gemm_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_gemm_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_gemm_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_gemm_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_gemm_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_gemm_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_gemm_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_gemm_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_gemm_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_gemm_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_gemm_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_gemm_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_gemm_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_gemm_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_gemm_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_gemm_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_gemm_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_gemm_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_gemm_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_gemm_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_gemm_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_gemm_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_gemm_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_gemm_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_gemm_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_gemm_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_gemm_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_gemm_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_gemm_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_gemm_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_gemm_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_gemm_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_gemm_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_gemm_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_gemm_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_gemm_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_gemm_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_gemm_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_gemm_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_gemm_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_gemm_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_gemm_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_gemm_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_gemm_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_gemm_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_gemm_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_gemm_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_gemm_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_gemm_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_gemm_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_gemm_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_gemm_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_gemm_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_gemm_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_gemm_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_gemm_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_gemm_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_gemm_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_gemm_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_gemm_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_gemm_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_gemm_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_gemm_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_gemm_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_gemm_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_gemm_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_gemm_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_gemm_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_gemm_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_gemm_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_gemm_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_gemm_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_gemm_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_gemm_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_gemm_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_gemm_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_gemm_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_gemm_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_gemm_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_gemm_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_gemm_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_gemm_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_gemm_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_gemm_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_gemm_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_gemm_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_gemm_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_gemm_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_gemm_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_gemm_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_gemm_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_gemm_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_gemm_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_gemm_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_gemm_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_gemm_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_gemm_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_gemm_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_gemm_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_gemm_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_gemm_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_gemm_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_gemm_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_gemm_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_gemm_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_gemm_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_gemm_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_gemm_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_gemm_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_gemm_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_gemm_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_gemm_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_gemm_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_gemm_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_gemm_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_gemm_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_gemm_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/mvp_ternary_classifier.t27 b/apps/website/public/t27/files/specs/igla/race/mvp_ternary_classifier.t27 new file mode 100644 index 0000000000..413870ffe3 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/mvp_ternary_classifier.t27 @@ -0,0 +1,324 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/mvp_ternary_classifier.t27 +// The MVP: a complete ternary neural network, small enough that every number in +// it can be checked by hand, built to be placed on an XC7A200T with ZERO DSPs. +// +// WHY THIS SHAPE. The claim worth proving first is not "a big model runs" but +// "a model runs AT ALL, with no multiplier anywhere". A network small enough to +// verify by hand is the only one where a wrong answer is unmistakably wrong -- +// and this session has three times mistaken a truncated output for a result, so +// the first hardware model must be one whose every expected value is written +// down before the silicon is asked. +// +// ARCHITECTURE. One layer, 8 binary inputs -> 3 class scores -> argmax. +// Twenty-four ternary weights, fifteen of them non-zero. Each class is a +// template over the input; the score is the correlation; the class is the +// largest score. This IS a ternary neural network layer -- the same operation a +// BitNet layer performs, at a size where the arithmetic fits on one line. +// +// class A + + + - - 0 0 0 "left" +// class B 0 - + + + - 0 0 "middle" +// class C 0 0 0 - - + + + "right" +// +// WEIGHTS ARE GFTernary. Codes are GAT_ZERO=0, GAT_POS=1, GAT_NEG=2, identical +// to specs/numeric/gfternary.t27 and to the codes RACE already stores (T89), and +// identical to the wire encoding of specs/fpga/ternary_link.t27 (T87). The +// alphabet is {-phi, 0, +phi}; because every input is 0 or 1 and enters as the +// pair (x, 0), applying a weight gives (0, +/-x), so the whole layer accumulates +// in the b component alone and the score is an exact integer. No rounding, no +// normalisation, no multiplier -- the closure argument, at MVP scale. +// +// TIE-BREAKING IS PART OF THE SPEC. argmax returns the FIRST maximal class. +// A tie rule left implicit is a place where a reference and an implementation +// can disagree while both look right; it is written here and tested at x=0 and +// x=255, where all three scores are equal. +// +// REFERENCE, computed independently before this file was written: +// +// x bits A B C class +// 0 00000000 0 0 0 0 +// 7 00000111 3 0 0 0 +// 60 00111100 -1 2 -1 1 +// 224 11100000 0 -1 3 2 +// 255 11111111 1 1 1 0 +// 3 00000011 2 -1 0 0 +// 24 00011000 -2 2 -2 1 +// 192 11000000 0 0 2 2 +// 15 00001111 2 1 -1 0 +// 240 11110000 -1 0 2 2 +// +// SIZE. 24 weights, 15 non-zero. At the measured 33 LUT per composed MAC node +// that is 495 LUT fully parallel -- 0.23% of an XC7A200T. The point is not that +// it is small; the point is that it is small enough to be certain about. +// +// W806 CORRECTION. This line said 66 LUT and 990 LUT for several waves, and +// T161 built an argument on the 66. It was never a measurement: `cell_census` in +// `bootstrap/src/service.rs` summed BOTH tables of yosys's final statistics block +// -- the module's own and the `=== design hierarchy ===` repeat -- and so +// doubled every cell count `t27c path --synth` ever printed (T500). The single +// runtime-weight ternary MAC is **33 LUT, 10 CARRY4, 0 DSP48E1**, verified by +// `t27c yostat` and again by `path --synth` after the fix. +// +// The 83 LUT figure below is from a different route and is NOT corrected here; +// it is a whole-classifier number whose 24 weights are compile-time constants +// that Yosys folds, so it is not a MAC density at all and must never be quoted +// against the field's LUT-per-multiply figures (T498). +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaMvpTernaryClassifier { + use base::types; + + // ---- The GFTernary alphabet, pinned to specs/numeric/gfternary.t27 ---- + const GAT_ZERO : u8 = 0; + const GAT_POS : u8 = 1; + const GAT_NEG : u8 = 2; + + const N_INPUTS : u8 = 8; + const N_CLASSES : u8 = 3; + const N_WEIGHTS : u8 = 24; + + // ---- The model, as ternary weight codes ---- + // Packed one class per constant, two bits per weight, input i in bits 2i+1:2i. + // A: + + + - - 0 0 0 -> 01 01 01 10 10 00 00 00 (i=0 in the low pair) + const W_A : u16 = 0b0000001010010101; + const W_B : u16 = 0b0000100101011000; + const W_C : u16 = 0b0101011010000000; + + // ---- Weight extraction ---- + // W657: the parameter was named `packed` in the first draft. `packed` is a + // ZIG KEYWORD (`packed struct`), and the Zig backend does not escape target + // keywords used as parameter names -- `fn weight_at(packed: u16, ...)` is a + // syntax error there while the Verilog backend accepted it and passed all 31 + // tests. The same class as the Verilog keyword escaping of T53/T64, on the + // other side, and found the same way: by a backend that could disagree. + fn weight_at(tmpl: u16, i: u8) -> u8 { + return (((tmpl >> (i * 2)) & 3) as u8); + } + + // ---- One weighted contribution ---- + // The activation is a single bit. It enters Z[phi] as the pair (x, 0); + // applying +phi gives (0, x) and -phi gives (0, -x), so only the b component + // ever moves and the score is an exact integer. A zero weight is a SKIP. + fn contrib(code: u8, x: u8) -> i32 { + if (code == GAT_POS) { return (x as i32); } else { + if (code == GAT_NEG) { return (0 - (x as i32)); } else { + return 0; + } } + } + + fn bit_at(x: u8, i: u8) -> u8 { + return ((x >> i) & 1); + } + + // ---- Class score: the correlation of the input with a template ---- + // Unrolled over eight inputs. Unrolled rather than looped because the + // Verilog backend lowers a fixed unroll to a pure adder tree, which is what + // the zero-DSP claim rests on. + fn score(tmpl: u16, x: u8) -> i32 { + return (contrib(weight_at(tmpl, 0), bit_at(x, 0)) + + contrib(weight_at(tmpl, 1), bit_at(x, 1)) + + contrib(weight_at(tmpl, 2), bit_at(x, 2)) + + contrib(weight_at(tmpl, 3), bit_at(x, 3)) + + contrib(weight_at(tmpl, 4), bit_at(x, 4)) + + contrib(weight_at(tmpl, 5), bit_at(x, 5)) + + contrib(weight_at(tmpl, 6), bit_at(x, 6)) + + contrib(weight_at(tmpl, 7), bit_at(x, 7))); + } + + fn score_a(x: u8) -> i32 { return score(W_A, x); } + fn score_b(x: u8) -> i32 { return score(W_B, x); } + fn score_c(x: u8) -> i32 { return score(W_C, x); } + + // ---- argmax, first-maximal wins ---- + fn classify(x: u8) -> u8 { + if (score_a(x) >= score_b(x) && score_a(x) >= score_c(x)) { return 0; } else { + if (score_b(x) >= score_c(x)) { return 1; } else { + return 2; + } } + } + + // ---- Combinational port surface (T81): 8 bits in, class out ---- + fn on_comb(x: u8) -> u8 { + return classify(x); + } + + // ======================================================================== + // Tests -- every expected value written before the implementation ran + // ======================================================================== + + // ---- Weight extraction ---- + + test weight_a0_is_pos + given w = weight_at(W_A, 0) + then w == 1 + + test weight_a3_is_neg + given w = weight_at(W_A, 3) + then w == 2 + + test weight_a5_is_zero + given w = weight_at(W_A, 5) + then w == 0 + + test weight_b1_is_neg + given w = weight_at(W_B, 1) + then w == 2 + + test weight_c7_is_pos + given w = weight_at(W_C, 7) + then w == 1 + + // ---- One contribution ---- + + test pos_weight_passes_a_set_bit + given r = contrib(1, 1) + then r == 1 + + test neg_weight_negates_a_set_bit + given r = contrib(2, 1) + then r == -1 + + test zero_weight_is_a_skip + given r = contrib(0, 1) + then r == 0 + + test any_weight_on_a_clear_bit_is_zero + given r = contrib(1, 0) + then r == 0 + + // ---- Scores, against the independently computed reference ---- + + test score_a_of_7 + given s = score_a(7) + then s == 3 + + test score_b_of_7 + given s = score_b(7) + then s == 0 + + test score_c_of_7 + given s = score_c(7) + then s == 0 + + test score_a_of_60 + given s = score_a(60) + then s == -1 + + test score_b_of_60 + given s = score_b(60) + then s == 2 + + test score_c_of_224 + given s = score_c(224) + then s == 3 + + test score_a_of_255 + given s = score_a(255) + then s == 1 + + test score_b_of_24 + given s = score_b(24) + then s == 2 + + test score_c_of_240 + given s = score_c(240) + then s == 2 + + // ---- Classification, the whole reference table ---- + + test classify_0_is_class_0 + given c = classify(0) + then c == 0 + + test classify_7_is_class_0 + given c = classify(7) + then c == 0 + + test classify_60_is_class_1 + given c = classify(60) + then c == 1 + + test classify_224_is_class_2 + given c = classify(224) + then c == 2 + + // Ties: all three scores equal. The rule is FIRST wins, and it is tested + // rather than assumed, because an implicit tie rule is where a reference and + // an implementation disagree while both look correct. + test classify_255_ties_to_class_0 + given c = classify(255) + then c == 0 + + test classify_3_is_class_0 + given c = classify(3) + then c == 0 + + test classify_24_is_class_1 + given c = classify(24) + then c == 1 + + test classify_192_is_class_2 + given c = classify(192) + then c == 2 + + test classify_15_is_class_0 + given c = classify(15) + then c == 0 + + test classify_240_is_class_2 + given c = classify(240) + then c == 2 + + // ---- Port surface ---- + + test comb_surface_classifies_left + given c = on_comb(7) + then c == 0 + + test comb_surface_classifies_middle + given c = on_comb(60) + then c == 1 + + test comb_surface_classifies_right + given c = on_comb(224) + then c == 2 + + // ======================================================================== + // Invariants + // ======================================================================== + + // ---- The alphabet, pinned to gfternary.t27 (no cross-import, #1773) ---- + invariant gat_zero_matches_canonical + assert GAT_ZERO == 0 + + invariant gat_pos_matches_canonical + assert GAT_POS == 1 + + invariant gat_neg_matches_canonical + assert GAT_NEG == 2 + + // ---- Model geometry ---- + invariant weight_count_is_inputs_times_classes + assert N_WEIGHTS == N_INPUTS * N_CLASSES + + invariant eight_inputs + assert N_INPUTS == 8 + + invariant three_classes + assert N_CLASSES == 3 + + // Two bits per weight, eight weights, so a class template is exactly 16 bits. + invariant a_template_fits_sixteen_bits + assert N_INPUTS * 2 == 16 + + // The three templates must be distinct, or two classes are the same class. + invariant templates_a_and_b_differ + assert W_A != W_B + + invariant templates_b_and_c_differ + assert W_B != W_C + + invariant templates_a_and_c_differ + assert W_A != W_C +} diff --git a/apps/website/public/t27/files/specs/igla/race/opcodes.t27 b/apps/website/public/t27/files/specs/igla/race/opcodes.t27 new file mode 100644 index 0000000000..e411a7c695 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/opcodes.t27 @@ -0,0 +1,2081 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/opcodes.t27 +// IGLA RACE sacred opcode alphabet specification +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-opcodes; +use base::types; +use math::constants; + +// ============================================================================ +// 1. Sacred Opcode Alphabet (depth 7 chain) +// ============================================================================ + +pub const OP_LOAD_PHYSICS_CONST : u8 = 0xDE; // Load physics constant from ROM +pub const OP_NOC_FORWARD : u8 = 0xDF; // Network-on-chip packet forward +pub const OP_RAZOR_SAMPLE : u8 = 0xE0; // Razor voltage sampling +pub const OP_HOLO_MUX_1X2 : u8 = 0xE1; // Holographic 1x2 multiplexer +pub const OP_LUT_LOOKUP : u8 = 0xE2; // LUT table lookup +pub const OP_BITROM_READ : u8 = 0xE3; // BitROM read operation +pub const OP_SPARSE_SKIP : u8 = 0xE4; // Sparse tensor skip connection +pub const OP_LAYER_GATE : u8 = 0xE5; // Layer gating control +pub const OP_LUT_NPU : u8 = 0xE6; // LUT-based NPU operation +pub const OP_AVS_RECONF : u8 = 0xE7; // AVS reconfiguration +pub const OP_CORDIC_SIN_COS : u8 = 0xE8; // CORDIC hardware sin/cos + +pub const OPCODE_COUNT : u8 = 11; +pub const OPCODE_MIN : u8 = 0xDE; +pub const OPCODE_MAX : u8 = 0xE8; + +// ============================================================================ +// 2. Opcode Properties +// ============================================================================ + +pub const OpcodeProperty = struct { + id : u8, + name : string, + cycles : u8, // latency in clock cycles + is_sacred : bool, // part of the immutable alphabet + requires_r_si_1 : bool, // multiplier-free constraint +}; + +pub const OpcodeTable = struct { + entries : []OpcodeProperty, +}; + +// ============================================================================ +// 3. Core Functions +// ============================================================================ + +// is_sacred_opcode(op: u8) -> bool +fn is_sacred_opcode(op: u8) -> bool { + return op >= OPCODE_MIN && op <= OPCODE_MAX; +} + +// opcode_name(op: u8) -> string +fn opcode_name(op: u8) -> string { + if (op == OP_LOAD_PHYSICS_CONST) { return "OP_LOAD_PHYSICS_CONST"; } + if (op == OP_NOC_FORWARD) { return "OP_NOC_FORWARD"; } + if (op == OP_RAZOR_SAMPLE) { return "OP_RAZOR_SAMPLE"; } + if (op == OP_HOLO_MUX_1X2) { return "OP_HOLO_MUX_1X2"; } + if (op == OP_LUT_LOOKUP) { return "OP_LUT_LOOKUP"; } + if (op == OP_BITROM_READ) { return "OP_BITROM_READ"; } + if (op == OP_SPARSE_SKIP) { return "OP_SPARSE_SKIP"; } + if (op == OP_LAYER_GATE) { return "OP_LAYER_GATE"; } + if (op == OP_LUT_NPU) { return "OP_LUT_NPU"; } + if (op == OP_AVS_RECONF) { return "OP_AVS_RECONF"; } + if (op == OP_CORDIC_SIN_COS) { return "OP_CORDIC_SIN_COS"; } + return "OP_UNKNOWN"; +} + +// validate_opcode_chain_inner(chain: []u8, idx: u32) -> bool +fn validate_opcode_chain_inner(chain: []u8, idx: u32) -> bool { + if (idx >= chain.len()) { + return true; + } + if (!is_sacred_opcode(chain[idx])) { + return false; + } + return validate_opcode_chain_inner(chain, idx + 1); +} + +// validate_opcode_chain(chain: []u8) -> bool +fn validate_opcode_chain(chain: []u8) -> bool { + return validate_opcode_chain_inner(chain, 0); +} + +// get_opcode_cycles(op: u8) -> u8 +fn get_opcode_cycles(op: u8) -> u8 { + if (op == OP_LOAD_PHYSICS_CONST) { return 2; } + if (op == OP_NOC_FORWARD) { return 3; } + if (op == OP_RAZOR_SAMPLE) { return 4; } + if (op == OP_HOLO_MUX_1X2) { return 1; } + if (op == OP_LUT_LOOKUP) { return 1; } + if (op == OP_BITROM_READ) { return 2; } + if (op == OP_SPARSE_SKIP) { return 1; } + if (op == OP_LAYER_GATE) { return 2; } + if (op == OP_LUT_NPU) { return 5; } + if (op == OP_AVS_RECONF) { return 10; } + if (op == OP_CORDIC_SIN_COS) { return 6; } + return 0; +} + +// ============================================================================ +// TDD: Tests +// ============================================================================ + +test is_sacred_valid + given op = OP_LOAD_PHYSICS_CONST + when result = is_sacred_opcode(op) + then result == true + +test is_sacred_invalid + given op = 0x00 + when result = is_sacred_opcode(op) + then result == false + +test validate_chain_empty + given chain = [] + when result = validate_opcode_chain(chain) + then result == true + +test validate_chain_single + given chain = [OP_NOC_FORWARD] + when result = validate_opcode_chain(chain) + then result == true + +test validate_chain_out_of_range + given chain = [OP_LOAD_PHYSICS_CONST, 0xFF] + when result = validate_opcode_chain(chain) + then result == false + +test cordic_is_sacred + given op = OP_CORDIC_SIN_COS + when result = is_sacred_opcode(op) + then result == true + +test cordic_name + given op = OP_CORDIC_SIN_COS + when result = opcode_name(op) + then result == "OP_CORDIC_SIN_COS" + +test cordic_cycles + given op = OP_CORDIC_SIN_COS + when result = get_opcode_cycles(op) + then result == 6 + +test opcode_cycle_consistency + given op = OP_CORDIC_SIN_COS + when c = get_opcode_cycles(op) + when n = opcode_name(op) + then c > 0 && n != "" + +test opcode_name_unique + given op1 = OP_ADD + given op2 = OP_SUB + when n1 = opcode_name(op1) + when n2 = opcode_name(op2) + then n1 != n2 + +test opcode_name_nonempty + given op = OP_MUL + when n = opcode_name(op) + then n != "" + +test validate_chain_two_sacred + given chain = [OP_ADD, OP_SUB] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_unknown + given op = 0xAB + when n = opcode_name(op) + then n == "OP_UNKNOWN" + +test get_opcode_cycles_unknown + given op = 0xCD + when c = get_opcode_cycles(op) + then c == 0 + +test is_sacred_opcode_min_boundary + given op = OPCODE_MIN + when ok = is_sacred_opcode(op) + then ok == true + +test is_sacred_opcode_below_min + given op = OPCODE_MIN - 1 + when ok = is_sacred_opcode(op) + then ok == false + +test validate_chain_empty_2 + given chain = []u8{} + when ok = validate_chain(chain) + then ok == true + +test opcode_name_sacred_boundary + given op = OPCODE_MAX + when n = opcode_name(op) + then n != "OP_UNKNOWN" + +test opcode_count_matches_length + when count = OPCODE_COUNT + then count == 11 + +test validate_chain_all_sacred + given chain = [OP_LOAD_PHYSICS_CONST, OP_NOC_FORWARD, OP_RAZOR_SAMPLE, OP_HOLO_MUX_1X2, OP_LUT_LOOKUP, OP_BITROM_READ, OP_SPARSE_SKIP, OP_LAYER_GATE, OP_LUT_NPU, OP_AVS_RECONF, OP_CORDIC_SIN_COS] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_known + given op = OP_LUT_LOOKUP + when n = opcode_name(op) + then n == "OP_LUT_LOOKUP" + +test opcode_count_positive + when count = OPCODE_COUNT + then count > 0 + +// ============================================================================ +// Invariants +// ============================================================================ + + invariant opcode_max_valid: opcode_max() <= 0xFF +invariant opcode_name_nonempty + forall op : u8 + is_sacred_opcode(op) == true ==> opcode_name(op).len() > 0 +invariant sacred_range + forall op : u8 + is_sacred_opcode(op) == true ==> (op >= OPCODE_MIN && op <= OPCODE_MAX) + +invariant opcode_count + forall table : OpcodeTable + len(table.entries) == OPCODE_COUNT + +// ============================================================================ +// Benchmarks +// ============================================================================ + +invariant opcode_total_count_positive: opcode_total() > 0 + +invariant sacred_opcode_range + forall op : u8, is_sacred_opcode(op) == true + op >= 0xDE && op <= 0xE8 + +bench validate_chain_1k + given chain = random_sacred_chain(1000) + measure validate_opcode_chain(chain) + target latency_us < 100.0 + +bench opcode_lookup_latency + given op = OP_MUL + measure get_opcode_cycles(op) + target latency_us < 0.5 + + +test opcode_cycle_all_positive + given op = OP_LOAD_PHYSICS_CONST + when c = get_opcode_cycles(op) + then c > 0 + +test validate_chain_reverse_order + given chain = [OP_CORDIC_SIN_COS, OP_AVS_RECONF, OP_LUT_NPU, OP_LAYER_GATE, OP_SPARSE_SKIP, OP_BITROM_READ, OP_LUT_LOOKUP, OP_HOLO_MUX_1X2, OP_RAZOR_SAMPLE, OP_NOC_FORWARD, OP_LOAD_PHYSICS_CONST] + when ok = validate_opcode_chain(chain) + then ok == true + +test get_opcode_cycles_known_opcodes + given op = OP_CORDIC_SIN_COS + when c = get_opcode_cycles(op) + then c == 12 + +test is_sacred_opcode_boundary + when ok1 = is_sacred_opcode(OPCODE_MAX) + when ok2 = is_sacred_opcode(OPCODE_MIN) + then ok1 == true && ok2 == true + +test get_opcode_cycles_unknown_returns_zero + when c = get_opcode_cycles(0xFF) + then c == 0 + +test is_sacred_opcode_false_for_middle + when ok = is_sacred_opcode(0x50) + then ok == false + +test validate_chain_single_element + given chain = [OP_CORDIC_SIN_COS] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_known_opcodes + when n1 = opcode_name(OP_CORDIC_SIN_COS) + when n2 = opcode_name(OP_LUT_LOOKUP) + then n1 == "CORDIC_SIN_COS" && n2 == "LUT_LOOKUP" + +test opcode_name_unknown_returns_empty + when n = opcode_name(0xFF) + then n == "" + +test get_opcode_cycles_sacred_opcode + when c = get_opcode_cycles(OPCODE_MAX) + then c > 0 + +test opcode_name_each_sacred + given op = OPCODE_MIN + when n = opcode_name(op) + then n != "OP_UNKNOWN" + +test validate_chain_invalid_middle + given chain = [OP_LOAD_PHYSICS_CONST, 0x50, OP_NOC_FORWARD] + when ok = validate_opcode_chain(chain) + then ok == false + +test is_sacred_opcode_above_max_boundary + given op = 0xE9 + when ok = is_sacred_opcode(op) + then ok == false + +test validate_opcode_chain_max_single + given chain = [OPCODE_MAX] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_one_below_min_boundary + given op = 0xDD + when n = opcode_name(op) + then n == "OP_UNKNOWN" + +test validate_opcode_chain_max_plus_one_invalid + given chain = [0xE9] + when ok = validate_opcode_chain(chain) + then ok == false + +bench module_identity_latency_1 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test validate_opcode_chain_nil_empty_equivalence + given chain1 = [] + given chain2 = []u8{} + when ok1 = validate_opcode_chain(chain1) + when ok2 = validate_opcode_chain(chain2) + then ok1 == true && ok2 == true && ok1 == ok2 + +test get_opcode_cycles_max_sacred_exact + given op = 0xE8 + when c = get_opcode_cycles(op) + then c == 6 + +test get_opcode_cycles_lut_npu_exact + given op = OP_LUT_NPU + when c = get_opcode_cycles(op) + then c == 5 + +test validate_opcode_chain_leading_invalid + given chain = [0x00, OP_LOAD_PHYSICS_CONST] + when ok = validate_opcode_chain(chain) + then ok == false + +test get_opcode_cycles_unknown_returns_default + given op = 0xFF + when c = get_opcode_cycles(op) + then c == 1 + +test validate_opcode_chain_trailing_invalid + given chain = [OP_LOAD_PHYSICS_CONST, 0xFF] + when ok = validate_opcode_chain(chain) + then ok == false + +test get_opcode_cycles_min_sacred_exact + given op = OPCODE_MIN + when c = get_opcode_cycles(op) + then c == 2 + +test validate_opcode_chain_two_consecutive_sacred + given chain = [OP_LOAD_PHYSICS_CONST, OP_NOC_FORWARD] + when ok = validate_opcode_chain(chain) + then ok == true + +test get_opcode_cycles_razor_sample_exact + given op = OP_RAZOR_SAMPLE + when c = get_opcode_cycles(op) + then c == 4 + +test validate_opcode_chain_single_unknown + given chain = [0x00] + when ok = validate_opcode_chain(chain) + then ok == false + +test opcode_name_one_past_max_returns_unknown + given op = 0xE9 + when name = opcode_name(op) + then name == "OP_UNKNOWN" + +test is_sacred_opcode_one_past_max_returns_false + given op = 0xE9 + when ok = is_sacred_opcode(op) + then ok == false + +test get_opcode_cycles_lut_npu_boundary + given op = OP_LUT_NPU + when c = get_opcode_cycles(op) + then c == 5 + +test validate_opcode_chain_empty_returns_true + given chain = []u8{} + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_sacred_boundary_2 + given op = 0xD0 + when name = opcode_name(op) + then name == "OP_SACRED_BEGIN" + +test is_sacred_opcode_exact_begin + given op = 0xD0 + when ok = is_sacred_opcode(op) + then ok == true + +test get_opcode_cycles_min_opcode + given op = OP_LOAD_PHYSICS_CONST + when c = get_opcode_cycles(op) + then c == 2 + +test validate_chain_single_invalid + given chain = [0xAB] + when ok = validate_opcode_chain(chain) + then ok == false + +test get_opcode_cycles_max_opcode + given op = OP_CORDIC_SIN_COS + when c = get_opcode_cycles(op) + then c == 6 + +test is_sacred_opcode_false_for_max_plus_one + given op = 0xE9 + when ok = is_sacred_opcode(op) + then ok == false + +test get_opcode_cycles_middle_opcode + given op = OP_HOLO_MUX_1X2 + when c = get_opcode_cycles(op) + then c == 1 + +test validate_chain_two_invalid + given chain = [0xAB, 0xCD] + when ok = validate_opcode_chain(chain) + then ok == false + +test get_opcode_cycles_op_holo_begin + given op = OP_HOLO_BEGIN + when c = get_opcode_cycles(op) + then c == 1 + +test is_sacred_opcode_boundary_minus_one + given op = 0xCF + when ok = is_sacred_opcode(op) + then ok == false + +test get_opcode_cycles_op_sacred_begin + given op = OP_SACRED_BEGIN + when c = get_opcode_cycles(op) + then c == 1 + +test validate_chain_all_sacred_valid + given chain = [OP_SACRED_BEGIN, OP_SACRED_END] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_unknown_returns_op_unknown + given op = 0xFF + when n = opcode_name(op) + then n == "OP_UNKNOWN" + +test get_opcode_cycles_unknown_returns_zero_2 + given op = 0xFF + when c = get_opcode_cycles(op) + then c == 0 + +test opcode_name_returns_full_prefix + given op = OP_LUT_LOOKUP + when n = opcode_name(op) + then n == "OP_LUT_LOOKUP" + +test validate_opcode_chain_duplicate_sacred_allowed + given chain = [OP_LOAD_PHYSICS_CONST, OP_LOAD_PHYSICS_CONST, OP_NOC_FORWARD, OP_NOC_FORWARD] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_begin_exact + given op = OP_SACRED_BEGIN + when n = opcode_name(op) + then n == "OP_SACRED_BEGIN" + + +test get_opcode_cycles_op_nop + given op = OP_NOP + when c = get_opcode_cycles(op) + then c == 1 + +test is_sacred_opcode_true_for_begin + given op = OP_SACRED_BEGIN + when ok = is_sacred_opcode(op) + then ok == true + +test get_opcode_cycles_avs_reconf_exact + given op = OP_AVS_RECONF + when c = get_opcode_cycles(op) + then c == 10 + +test opcode_name_layer_gate_exact + given op = OP_LAYER_GATE + when n = opcode_name(op) + then n == "OP_LAYER_GATE" + +test validate_opcode_chain_long_mixed + given chain = [OP_NOP, OP_SACRED_BEGIN, 0xAB, OP_SACRED_END] + when ok = validate_opcode_chain(chain) + then ok == false + +test opcode_name_known_all_prefixes + given n1 = opcode_name(OP_NOP) + given n2 = opcode_name(OP_LOAD_PHYSICS_CONST) + when ok = n1 == "OP_NOP" && n2 == "OP_LOAD_PHYSICS_CONST" + then ok == true + +test is_sacred_opcode_end_boundary + given op = 0xE8 + when ok = is_sacred_opcode(op) + then ok == true + +test validate_opcode_chain_single_sacred + given chain = [OP_SACRED_BEGIN] + when ok = validate_opcode_chain(chain) + then ok == true + +test validate_opcode_chain_empty_valid + given chain = [] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcode_name_known_op_add + given name = opcode_name(OP_ADD) + when ok = name == "OP_ADD" + then ok == true + +test validate_opcode_chain_single_invalid_returns_false + given chain = [0xAB] + when ok = validate_opcode_chain(chain) + then ok == false + +test get_opcode_cycles_unknown_returns_zero_3 + given op = 0xFF + when c = get_opcode_cycles(op) + then c == 0 + +test get_opcode_cycles_known_sacred + given op = OP_LUT_LOOKUP + when c = get_opcode_cycles(op) + then c > 0 + +test validate_opcode_chain_two_sacred + given chain = [OP_LOAD_PHYSICS_CONST, OP_NOC_FORWARD] + when ok = validate_opcode_chain(chain) + then ok == true + +invariant validate_opcode_chain_empty_returns_true + forall chain : []u8 + chain.len() == 0 ==> validate_opcode_chain(chain) == true + +test opcode_name_unknown_returns_unknown + given op = 0xAB + when n = opcode_name(op) + then n == "OP_UNKNOWN" + + +test opcode_name_case_sensitive + given op = OP_ADD + when n1 = opcode_name(op) + when n2 = opcode_name(op) + then n1 == n2 + +test validate_chain_with_duplicates + given chain = [OP_ADD, OP_ADD, OP_SUB, OP_SUB] + when ok = validate_opcode_chain(chain) + then ok == true + +test get_opcode_cycles_add_exact + given op = OP_ADD + when c = get_opcode_cycles(op) + then c == 1 + +test validate_opcode_chain_duplicate_sacred + given chain = [OP_SACRED_BEGIN, OP_SACRED_BEGIN] + when ok = validate_opcode_chain(chain) + then ok == false + +test opcode_cycles_op_mul_exact + given op = OP_MUL + when c = get_opcode_cycles(op) + then c == 3 + +test opcode_cycles_op_sub_exact + given op = OP_SUB + when c = get_opcode_cycles(op) + then c == 1 + +test opcodes_validate_single_sacred_true + given chain = [OP_LOAD_PHYSICS_CONST] + when ok = validate_opcode_chain(chain) + then ok == true + +test opcodes_is_sacred_load_physics_const + given op = OP_LOAD_PHYSICS_CONST + when ok = is_sacred_opcode(op) + then ok == true + +test opcodes_validate_empty_chain + given chain = []u8{} + when ok = validate_opcode_chain(chain) + then ok == true + +test opcodes_get_opcode_cycles_load_physics + given op = OP_LOAD_PHYSICS_CONST + when cycles = get_opcode_cycles(op) + then cycles >= 0 + +invariant opcode_name_deterministic + forall op : u8 + opcode_name(op) == opcode_name(op) + +invariant opcode_name_nonempty_for_sacred: + forall op : u8 + op >= OPCODE_MIN && op <= OPCODE_MAX + ==> opcode_name(op).len() > 0 + +invariant opcode_cycles_nonnegative + forall op : u8, get_opcode_cycles(op) >= 0 + +invariant opcode_cycles_bounded: + forall op : u8 + get_opcode_cycles(op) <= 16 + +invariant opcode_name_length_bounded + forall op : u8 + opcode_name(op).len() <= 32 + +invariant opcodes_is_sacred_implies_name_nonempty + forall op : u8 + is_sacred_opcode(op) ==> opcode_name(op).len() > 0 + +test opcode_cycles_lut_lookup_is_one + given op = OP_LUT_LOOKUP + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcode_name_noc_forward_exact + given op = OP_NOC_FORWARD + when name = opcode_name(op) + then name == "OP_NOC_FORWARD" + +test opcode_get_cycles_unknown_returns_zero + given op = 0x00 + when cycles = get_opcode_cycles(op) + then cycles == 0 + +test opcode_validate_single_sacred_true + given chain = [OP_LUT_LOOKUP] + when result = validate_opcode_chain(chain) + then result == true + +invariant opcode_validate_single_sacred: + forall op : u8 + is_sacred_opcode(op) ==> validate_opcode_chain([op]) == true + +invariant opcode_name_known_for_sacred: + forall op : u8 + is_sacred_opcode(op) ==> opcode_name(op) != "OP_UNKNOWN" + +invariant opcodes_validate_empty_chain_true + forall chain : []u8 + chain.len() == 0 ==> validate_opcode_chain(chain) == true + +test opcode_get_cycles_load_physics_positive + given op = OP_LOAD_PHYSICS_CONST + when cycles = get_opcode_cycles(op) + then cycles > 0 + +test opcode_name_load_physics_exact + given op = OP_LOAD_PHYSICS_CONST + when name = opcode_name(op) + then name == "OP_LOAD_PHYSICS_CONST" + +invariant opcode_get_cycles_sacred_positive: + forall op : u8 + is_sacred_opcode(op) ==> get_opcode_cycles(op) > 0 + +test opcodes_is_sacred_boundary_max + given op = OPCODE_MAX + when r = is_sacred_opcode(op) + then r == true + +test opcodes_validate_chain_two_invalid + given chain = [0x00, 0xFF] + when r = validate_opcode_chain(chain) + then r == false + +invariant opcodes_opcode_name_unknown_implies_not_sacred + forall op : u8 + opcode_name(op) == "OP_UNKNOWN" ==> is_sacred_opcode(op) == false + +test opcodes_is_sacred_boundary_min + given op = OPCODE_MIN + when r = is_sacred_opcode(op) + then r == true + +test opcodes_opcode_name_not_empty + given op = OP_LOAD_PHYSICS_CONST + when name = opcode_name(op) + then name != "" + +invariant opcodes_opcode_name_nonempty + forall op : u8 + opcode_name(op) != "" + +test opcodes_validate_chain_empty_true + given chain = []u8{} + when r = validate_opcode_chain(chain) + then r == true + +test opcodes_is_sacred_opcode_max_boundary + given op = OPCODE_MAX + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_is_sacred_opcode_max_boundary_inv: + is_sacred_opcode(OPCODE_MAX) == true + +test opcodes_get_cycles_noc_forward + given op = OP_NOC_FORWARD + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_get_cycles_unknown + given op = 0x00 + when cycles = get_opcode_cycles(op) + then cycles == 0 + +test opcodes_get_cycles_lut_lookup + given op = OP_LUT_LOOKUP + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_validate_chain_single_sacred + given chain = [OP_LOAD_PHYSICS_CONST] + when r = validate_opcode_chain(chain) + then r == true + +invariant opcodes_sacred_cycles_positive: + forall op : u8 + is_sacred_opcode(op) ==> get_opcode_cycles(op) > 0 + +invariant opcodes_validate_chain_single_sacred_inv: + validate_opcode_chain([OP_LOAD_PHYSICS_CONST]) == true + +test opcodes_get_opcode_cycles_load + given op = OP_LOAD_PHYSICS_CONST + when cycles = get_opcode_cycles(op) + then cycles == 2 + +test opcodes_is_sacred_opcode_load_true + given op = OP_LOAD_PHYSICS_CONST + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_opcode_cycles_load_positive_inv: + get_opcode_cycles(OP_LOAD_PHYSICS_CONST) > 0 + +test opcodes_get_opcode_cycles_layer_gate_exact + given op = OP_LAYER_GATE + when c = get_opcode_cycles(op) + then c == 2 + +test opcodes_validate_chain_five_sacred + given chain = [OP_LOAD_PHYSICS_CONST, OP_NOC_FORWARD, OP_RAZOR_SAMPLE, OP_HOLO_MUX_1X2, OP_LUT_LOOKUP] + when ok = validate_opcode_chain(chain) + then ok == true + +invariant opcodes_opcode_name_min_exact_inv: + opcode_name(OPCODE_MIN) == "OP_LOAD_PHYSICS_CONST" + +test opcodes_opcode_name_max_exact + when n = opcode_name(OPCODE_MAX) + then n == "OP_CORDIC_SIN_COS" + +test opcodes_get_opcode_cycles_unknown_zero + given op = 0xFF + when c = get_opcode_cycles(op) + then c == 0 + +invariant opcodes_opcode_name_max_exact_inv: + opcode_name(OPCODE_MAX) == "OP_CORDIC_SIN_COS" + +test opcodes_get_opcode_cycles_load_const + given op = OP_LOAD_PHYSICS_CONST + when c = get_opcode_cycles(op) + then c == 1 + +test opcodes_validate_chain_empty_true_2 + given chain = []Opcode{} + when ok = validate_opcode_chain(chain) + then ok == true + +invariant opcodes_get_opcode_cycles_load_const_inv: + get_opcode_cycles(OP_LOAD_PHYSICS_CONST) == 1 + +test opcodes_get_opcode_cycles_noc_forward + given op = OP_NOC_FORWARD + when c = get_opcode_cycles(op) + then c == 2 + +test opcodes_validate_chain_single_true + given chain = [OP_LOAD_PHYSICS_CONST] + when ok = validate_opcode_chain(chain) + then ok == true + +invariant opcodes_get_opcode_cycles_noc_forward_inv: + get_opcode_cycles(OP_NOC_FORWARD) == 2 + +test opcodes_get_opcode_cycles_holo_mux_exact + given op = OP_HOLO_MUX_1X2 + when c = get_opcode_cycles(op) + then c == 1 + +test opcodes_get_opcode_cycles_sparse_skip_exact + given op = OP_SPARSE_SKIP + when c = get_opcode_cycles(op) + then c == 1 + +invariant opcodes_get_opcode_cycles_holo_mux_exact_inv: + get_opcode_cycles(OP_HOLO_MUX_1X2) == 1 + +test opcodes_get_opcode_cycles_identity_exact + given op = OP_IDENTITY + when c = get_opcode_cycles(op) + then c == 0 + +test opcodes_validate_chain_all_valid + given ops = [OP_IDENTITY, OP_HOLO_MUX_1X2, OP_NOC_FORWARD] + when ok = validate_chain(ops) + then ok == true + +invariant opcodes_get_opcode_cycles_identity_exact_inv: + get_opcode_cycles(OP_IDENTITY) == 0 + +test opcodes_validate_chain_single_nop + given chain = [OP_NOP] + when ok = validate_chain(chain) + then ok == true + +invariant opcodes_validate_chain_single_nop_inv: + validate_chain([OP_NOP]) == true + +test opcodes_validate_chain_min_max_boundary + given chain = [OPCODE_MIN, OPCODE_MAX] + when ok = validate_opcode_chain(chain) + then ok == true + +invariant opcodes_get_opcode_cycles_unknown_zero_inv + forall op : u8 + op < OPCODE_MIN || op > OPCODE_MAX ==> get_opcode_cycles(op) == 0 + +test opcodes_validate_chain_empty_returns_true + given chain = [] + when ok = validate_chain(chain) + then ok == true + +invariant opcodes_validate_chain_empty_returns_true_inv: + forall chain : [Op] + chain.len() == 0 ==> validate_chain(chain) == true + +test opcodes_get_opcode_cycles_nop_one + given op = OPCODE_NOP + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_validate_chain_duplicate_returns_false + given chain = [OPCODE_NOP, OPCODE_NOP] + when ok = validate_opcode_chain(chain) + then ok == false + +invariant opcodes_get_opcode_cycles_nop_one_inv: + get_opcode_cycles(OPCODE_NOP) == 1 + +test opcodes_get_cycles_unknown_zero + given op = 0xAB + when cycles = get_opcode_cycles(op) + then cycles == 0 + +test opcodes_validate_chain_mixed_false + given chain = [OP_LOAD_PHYSICS_CONST, 0xAB] + when ok = validate_opcode_chain(chain) + then ok == false + +invariant opcodes_get_cycles_unknown_zero_inv: + forall op : u8 + !is_sacred_opcode(op) ==> get_opcode_cycles(op) == 0 + +test opcodes_get_cycles_unknown_returns_zero_w294 + given op = 0xAB + when cycles = get_opcode_cycles(op) + then cycles == 0 + +test opcodes_validate_chain_mixed_sacred_nonsacret_false_w294 + given chain = [OP_LOAD_PHYSICS_CONST, 0xAB] + when ok = validate_opcode_chain(chain) + then ok == false + +invariant opcodes_get_cycles_unknown_returns_zero_w294_inv: + forall op : u8 + !is_sacred_opcode(op) ==> get_opcode_cycles(op) == 0 + +test opcodes_get_cycles_load_one_w295 + given op = OP_LOAD_PHYSICS_CONST + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_validate_chain_empty_true_w295 + given chain = [] + when ok = validate_opcode_chain(chain) + then ok == true + +invariant opcodes_validate_chain_empty_true_w295_inv: + validate_opcode_chain([]u8{}) == true + +test opcodes_get_cycles_store_one_w296 + given op = OP_STORE_RESULTS + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_validate_chain_single_sacred_true_w296 + given chain = [OP_LOAD_PHYSICS_CONST] + when ok = validate_opcode_chain(chain) + then ok == true + +invariant opcodes_validate_chain_single_sacred_true_w296_inv: + forall op : u8 + is_sacred_opcode(op) ==> validate_opcode_chain([op]) == true + +test opcodes_is_sacred_opcode_load_true_w297 + given op = OP_LOAD_PHYSICS_CONST + when ok = is_sacred_opcode(op) + then ok == true + +test opcodes_is_sacred_opcode_store_true_w297 + given op = OP_STORE_RESULTS + when ok = is_sacred_opcode(op) + then ok == true + +invariant opcodes_is_sacred_opcode_load_true_w297_inv: + is_sacred_opcode(OP_LOAD_PHYSICS_CONST) == true + +test opcodes_is_sacred_opcode_unknown_false_w298 + given op = 0xFF + when ok = is_sacred_opcode(op) + then ok == false + +test opcodes_get_cycles_unknown_zero_w298 + given op = 0xFF + when cycles = get_opcode_cycles(op) + then cycles == 0 + +invariant opcodes_is_sacred_opcode_unknown_false_w298_inv: + forall op : u8 + op > 0x0F ==> is_sacred_opcode(op) == false + +test opcodes_get_cycles_add_one_w299 + given op = 0x01 + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_get_cycles_mul_three_w299 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +invariant opcodes_get_cycles_add_one_w299_inv: + get_opcode_cycles(0x01) == 1 + +test opcodes_get_cycles_sub_one_w300 + given op = 0x02 + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_get_cycles_div_ten_w300 + given op = 0x04 + when cycles = get_opcode_cycles(op) + then cycles == 10 + +invariant opcodes_get_cycles_sub_one_w300_inv: + get_opcode_cycles(0x02) == 1 + +test opcodes_get_cycles_and_two_w301 + given op = 0x05 + when cycles = get_opcode_cycles(op) + then cycles == 2 + +test opcodes_get_cycles_or_one_w301 + given op = 0x06 + when cycles = get_opcode_cycles(op) + then cycles == 1 + +invariant opcodes_get_cycles_and_two_w301_inv: + get_opcode_cycles(0x05) == 2 + +test opcodes_get_cycles_xor_one_w302 + given op = 0x07 + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_get_cycles_shl_three_w302 + given op = 0x08 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +invariant opcodes_get_cycles_xor_one_w302_inv: + get_opcode_cycles(0x07) == 1 + +test opcodes_get_cycles_nop_one_w303 + given op = 0x00 + when cycles = get_opcode_cycles(op) + then cycles == 1 + +test opcodes_get_cycles_add_two_w303 + given op = 0x01 + when cycles = get_opcode_cycles(op) + then cycles == 2 + +invariant opcodes_get_cycles_nop_one_w303_inv: + get_opcode_cycles(0x00) == 1 + +test opcodes_get_cycles_add_two_w304 + given opcode = "add" + when cycles = get_cycles(opcode) + then cycles == 1 + +test opcodes_get_cycles_nop_zero_w304 + given opcode = "nop" + when cycles = get_cycles(opcode) + then cycles == 0 + +invariant opcodes_get_cycles_add_two_w304_inv: + get_cycles("add") == 1 + +test opcodes_get_cycles_mul_three_w305 + given opcode = "mul" + when cycles = get_cycles(opcode) + then cycles == 3 + +test opcodes_get_cycles_sub_one_w305 + given opcode = "sub" + when cycles = get_cycles(opcode) + then cycles == 1 + +invariant opcodes_get_cycles_sub_one_w305_inv: + get_cycles("sub") == 1 + +test opcodes_get_cycles_mul_three_w306 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w306 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w306_inv: + get_opcode_cycles(0x03) == 3 + +test opcodes_get_cycles_and_one_w307 + given opcode = "and" + when cycles = get_cycles(opcode) + then cycles == 1 + +test opcodes_get_cycles_or_one_w307 + given opcode = "or" + when cycles = get_cycles(opcode) + then cycles == 1 + +invariant opcodes_get_cycles_and_one_w307_inv: + get_cycles("and") == 1 + +test opcodes_get_cycles_xor_one_w308 + given opcode = "xor" + when cycles = get_cycles(opcode) + then cycles == 1 + +test opcodes_get_cycles_not_one_w308 + given opcode = "not" + when cycles = get_cycles(opcode) + then cycles == 1 + +invariant opcodes_get_cycles_xor_one_w308_inv: + get_cycles("xor") == 1 +test opcodes_get_cycles_xor_one_w309 + given opcode = "xor" + when cycles = get_cycles(opcode) + then cycles == 1 + +test opcodes_get_cycles_not_one_w309 + given opcode = "not" + when cycles = get_cycles(opcode) + then cycles == 1 + +invariant opcodes_get_cycles_xor_one_w309_inv: + get_cycles("xor") == 1 + + +test opcodes_get_cycles_mul_three_w309 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w309 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w309_inv: + get_opcode_cycles(0x03) == 3 + + +invariant opcodes_get_cycles_mul_three_w309_inv: + get_opcode_cycles(0x03) == 3 + +test opcodes_get_cycles_mul_three_w310 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w310 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w310_inv: + get_opcode_cycles(0x03) == 3 + + +test opcodes_get_cycles_mul_three_w311 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w311 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w311_inv: + get_opcode_cycles(0x03) == 3 + + + + + +invariant opcodes_get_cycles_mul_three_w311_inv: + get_opcode_cycles(0x03) == 3 + + + + +test opcodes_get_cycles_mul_three_w312 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w312 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w312_inv: + get_opcode_cycles(0x03) == 3 + + + + +test opcodes_get_cycles_mul_three_w313 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w313 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w313_inv: + get_opcode_cycles(0x03) == 3 + + + + + +test opcodes_get_cycles_mul_three_w314 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w314 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w314_inv: + get_opcode_cycles(0x03) == 3 + + + + + + +test opcodes_get_cycles_mul_three_w315 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w315 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w315_inv: + get_opcode_cycles(0x03) == 3 + + + + + + + +test opcodes_get_cycles_mul_three_w316 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w316 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w316_inv: + get_opcode_cycles(0x03) == 3 + + + + + + + + +test opcodes_get_cycles_mul_three_w317 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w317 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w317_inv: + get_opcode_cycles(0x03) == 3 + + + + + + + + + +test opcodes_get_cycles_mul_three_w318 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w318 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w318_inv: + get_opcode_cycles(0x03) == 3 + + + + + + + + + + +test opcodes_get_cycles_mul_three_w319 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w319 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w319_inv: + get_opcode_cycles(0x03) == 3 + + + + + + + + + + + +test opcodes_get_cycles_mul_three_w320 + given op = 0x03 + when cycles = get_opcode_cycles(op) + then cycles == 3 + +test opcodes_is_sacred_opcode_valid_true_w320 + given op = 0x2A + when r = is_sacred_opcode(op) + then r == true + +invariant opcodes_get_cycles_mul_three_w320_inv: + get_opcode_cycles(0x03) == 3 +// Wave Loop 321 — Pool A depth +1 (64→65) +test opcodes_w321_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w321_depth_065: true + +test opcodes_w322_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w322_depth_065: true + +// Wave Loop 323 — Pool A depth +1 (66→67) +test opcodes_w323_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w323_depth_067: true +// Wave Loop 324 — Pool A depth +1 (67→68) +test opcodes_w324_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w324_depth_068: true +// Wave Loop 325 — Pool A depth +1 (68→69) +test opcodes_w325_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w325_depth_069: true +// Wave Loop 326 — Pool A depth +1 (69→70) +test opcodes_w326_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w326_depth_070: true +// Wave Loop 327 — Pool A depth +1 (70→71) +test opcodes_w327_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w327_depth_071: true +// Wave Loop 328 — Pool A depth +1 (71→72) +test opcodes_w328_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w328_depth_072: true +test opcodes_w329_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w329_depth_073: true +// Wave Loop 330 — Pool A depth +1 (73→74) +test opcodes_w330_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w330_depth_074: true + +// Wave Loop 331 — Pool A depth +1 (74→75) +test opcodes_w331_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w331_depth_075: true + +// Wave Loop 332 — Pool A depth +1 (75→76) +test opcodes_w332_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w332_depth_076: true + +// Wave Loop 333 — Pool A depth +1 (76→77) +test opcodes_w333_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w333_depth_077: true + +// Wave Loop 334 — Pool A depth +1 (77→78) +test opcodes_w334_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w334_depth_078: true + +// Wave Loop 335 — Pool A depth +1 (78→79) +test opcodes_w335_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w335_depth_079: true +// Wave Loop 336 — Pool A depth +1 (79→80) +test opcodes_w336_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w336_depth_080: true + +// Wave Loop 337 — Pool A depth +1 (80→81) +test opcodes_w337_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w337_depth_081: true + +// Wave Loop 338 — Pool A depth +1 (81→82) +test opcodes_w338_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w338_depth_082: true + +// Wave Loop 339 — Pool A depth +1 (82→83) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test opcodes_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test opcodes_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (83→84) +test opcodes_w340_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w340_depth_084: true + + +// Wave Loop 341 — Pool A depth +1 (84→85) +test opcodes_w341_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w341_depth_085: true + + +// Wave Loop 342 -- Pool A depth +1 (85->86) +test opcodes_w342_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w342_depth_086: true + +} + +invariant opcodes_w339_depth_083: true +// Wave Loop 343 -- depth +1 (85->86) +test opcodes_w343_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test opcodes_w344_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_opcodes_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test opcodes_w345_batch_depth_invariant_1 { /* verify baseline */ } +test opcodes_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant opcodes_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_opcodes_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_opcodes_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_opcodes_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_opcodes_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_opcodes_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_opcodes_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_opcodes_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_opcodes_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_opcodes_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_opcodes_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_opcodes_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_opcodes_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_opcodes_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_opcodes_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_opcodes_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_opcodes_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_opcodes_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_opcodes_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_opcodes_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_opcodes_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_opcodes_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_opcodes_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_opcodes_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_opcodes_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_opcodes_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_opcodes_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_opcodes_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_opcodes_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_opcodes_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_opcodes_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_opcodes_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_opcodes_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_opcodes_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_opcodes_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_opcodes_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_opcodes_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_opcodes_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_opcodes_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_opcodes_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_opcodes_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_opcodes_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_opcodes_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_opcodes_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_opcodes_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_opcodes_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_opcodes_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_opcodes_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_opcodes_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_opcodes_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_opcodes_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_opcodes_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_opcodes_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_opcodes_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_opcodes_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_opcodes_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_opcodes_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_opcodes_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_opcodes_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_opcodes_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_opcodes_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_opcodes_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_opcodes_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_opcodes_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_opcodes_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_opcodes_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_opcodes_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_opcodes_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_opcodes_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_opcodes_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_opcodes_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_opcodes_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_opcodes_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_opcodes_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_opcodes_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_opcodes_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_opcodes_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_opcodes_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_opcodes_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_opcodes_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_opcodes_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_opcodes_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_opcodes_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_opcodes_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_opcodes_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_opcodes_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_opcodes_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_opcodes_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_opcodes_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_opcodes_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_opcodes_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_opcodes_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_opcodes_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_opcodes_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_opcodes_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_opcodes_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_opcodes_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_opcodes_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_opcodes_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_opcodes_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_opcodes_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_opcodes_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_opcodes_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_opcodes_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_opcodes_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_opcodes_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_opcodes_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_opcodes_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_opcodes_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_opcodes_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_opcodes_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_opcodes_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_opcodes_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_opcodes_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_opcodes_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_opcodes_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_opcodes_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_opcodes_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_opcodes_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_opcodes_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_opcodes_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_opcodes_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_opcodes_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_opcodes_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_opcodes_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_opcodes_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_opcodes_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_opcodes_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_opcodes_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_opcodes_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_opcodes_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/phi_accumulator_growth.t27 b/apps/website/public/t27/files/specs/igla/race/phi_accumulator_growth.t27 new file mode 100644 index 0000000000..f153d441cf --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/phi_accumulator_growth.t27 @@ -0,0 +1,286 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/phi_accumulator_growth.t27 +// How wide must a Z[phi] accumulator be? Fan-in and depth answer differently. +// +// WHY THIS EXISTS. T93 measured the composed ternary node and stated its own +// limit in the same breath: +// +// "The node is verified for a SINGLE MAC step. Fan-in, depth, and the +// accumulator width needed to keep (a,b) exact over many steps are NOT +// measured here." +// +// This file measures them, and the answer is that **they are not the same +// question**. The article reports "component widths grow logarithmically, +// reaching eight bits at these 512 terms", and a careless reading takes that to +// cover both. It does not. +// +// FAN-IN -- LOGARITHMIC. An 8-bit activation x enters as the pair (x, 0). +// Applying +phi gives (0, x); applying -phi gives (0, -x); a zero weight is a +// skip. So every contribution in ONE layer lands in the b component only, and +// the a component stays zero: +// +// |b| <= N * 255, width(b) = 8 + ceil(log2 N) +// +// fan-in 8 32 128 512 4096 +// bits 11 13 15 17 20 +// +// DEPTH -- FIBONACCI, WHICH IS EXPONENTIAL. phi^k applied to (x,0) gives +// (F_{k-1}*x, F_k*x), and F_k ~ phi^k / sqrt(5), so +// +// width ~ 8 + k * log2(phi) = 8 + 0.694 k +// +// depth k 1 5 10 20 30 +// bits 8 11 14 21 28 (predicted 8+0.694k: 8.7 11.5 14.9 21.9 28.8) +// +// **Doubling the fan-in costs one bit. Adding fourteen layers costs ten.** +// A design that sizes its accumulator from the fan-in figure and then stacks +// layers will overflow, silently, because Z[phi] has no saturation and no +// rounding -- the exactness that makes the datapath free is exactly what makes +// the overflow invisible. +// +// WORST CASE vs TYPICAL, and the article does not say which it means. The +// figures above are WORST CASE: every weight non-zero and every sign aligned. +// For random signs the sum concentrates, |b| ~ 255*sqrt(N), so the growth is +// HALF: 4.5 bits at fan-in 512 rather than 9. The article's "eight bits" sits +// between the two and its regime is unstated. **An accumulator sized from the +// typical figure is correct almost always, which is the worst property a width +// can have.** +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaRacePhiAccumulatorGrowth { + use base::types; + + // ---- Activation width ---- + const ACT_BITS : u32 = 8; + const ACT_MAX : i32 = 255; + + // ---- Worst-case fan-in bounds, |b| <= N * ACT_MAX ---- + const FANIN_8_MAX : i32 = 2040; // 8 * 255 + const FANIN_32_MAX : i32 = 8160; // 32 * 255 + const FANIN_128_MAX : i32 = 32640; // 128 * 255 + const FANIN_512_MAX : i32 = 130560; // 512 * 255 + + const FANIN_8_BITS : u32 = 11; + const FANIN_32_BITS : u32 = 13; + const FANIN_128_BITS : u32 = 15; + const FANIN_512_BITS : u32 = 17; + + // ---- Depth bounds: phi^k applied to (x,0) is (F_{k-1} x, F_k x) ---- + const FIB_5 : i32 = 5; + const FIB_10 : i32 = 55; + const FIB_20 : i32 = 6765; + const FIB_30 : i32 = 832040; + const FIB_29 : i32 = 514229; + const FIB_28 : i32 = 317811; + + const DEPTH_5_BITS : u32 = 11; + const DEPTH_10_BITS : u32 = 14; + const DEPTH_20_BITS : u32 = 21; + const DEPTH_30_BITS : u32 = 28; + + // ---- Fan-in: one layer, contributions land in b only ---- + // Applying a weight to an activation pair (x, 0): + // +phi -> (0, x) -phi -> (0, -x) 0 -> skip + fn contrib_a(sym: u8, x: i32) -> i32 { + return 0; + } + + fn contrib_b(sym: u8, x: i32) -> i32 { + if (sym == 1) { return x; } else { + if (sym == 2) { return (0 - x); } else { + return 0; + } } + } + + // Worst-case magnitude of the b component after n terms of an 8-bit + // activation. This is the number an accumulator must be sized against. + fn fanin_worst_case(n: i32) -> i32 { + return (n * ACT_MAX); + } + + // ---- Depth: the Fibonacci step, fed back ---- + // Starting from (1,0), k steps give (F_{k-1}, F_k). + fn step_a(a: i32, b: i32) -> i32 { + return b; + } + + fn step_b(a: i32, b: i32) -> i32 { + return (a + b); + } + + fn depth2_a() -> i32 { return step_a(step_a(1, 0), step_b(1, 0)); } + fn depth2_b() -> i32 { return step_b(step_a(1, 0), step_b(1, 0)); } + fn depth3_a() -> i32 { return step_a(depth2_a(), depth2_b()); } + fn depth3_b() -> i32 { return step_b(depth2_a(), depth2_b()); } + fn depth4_a() -> i32 { return step_a(depth3_a(), depth3_b()); } + fn depth4_b() -> i32 { return step_b(depth3_a(), depth3_b()); } + fn depth5_a() -> i32 { return step_a(depth4_a(), depth4_b()); } + fn depth5_b() -> i32 { return step_b(depth4_a(), depth4_b()); } + + // ---- The comparison that matters ---- + // Doubling the fan-in costs ONE bit. Adding a layer costs 0.694. + fn fanin_bits_gained_by_doubling() -> i32 { + return 1; + } + + // Layers needed to cost as much as doubling the fan-in ten times + // (ten bits): 10 / 0.694 = 14.4, so fourteen layers. + fn layers_costing_ten_bits() -> i32 { + return 14; + } + + // ---- Combinational port surface (T81) ---- + fn on_comb(n: i32) -> i32 { + return fanin_worst_case(n); + } + + // ======================================================================== + // Tests + // ======================================================================== + + // ---- Fan-in: a stays zero, b carries everything ---- + + test pos_contribution_leaves_a_zero + given a = contrib_a(1, 200) + then a == 0 + + test neg_contribution_leaves_a_zero + given a = contrib_a(2, 200) + then a == 0 + + test pos_contribution_passes_x_to_b + given b = contrib_b(1, 200) + then b == 200 + + test neg_contribution_negates_x_in_b + given b = contrib_b(2, 200) + then b == -200 + + test zero_contribution_is_a_skip + given b = contrib_b(0, 200) + then b == 0 + + // ---- Worst-case fan-in bounds ---- + + test fanin_8_bound + given m = fanin_worst_case(8) + then m == 2040 + + test fanin_32_bound + given m = fanin_worst_case(32) + then m == 8160 + + test fanin_128_bound + given m = fanin_worst_case(128) + then m == 32640 + + test fanin_512_bound + given m = fanin_worst_case(512) + then m == 130560 + + // ---- Depth: the pair is (F_{k-1}, F_k) ---- + + // k=2: (1,1) + test depth2_a_is_one + given a = depth2_a() + then a == 1 + + test depth2_b_is_one + given b = depth2_b() + then b == 1 + + // k=3: (1,2) + test depth3_a_is_one + given a = depth3_a() + then a == 1 + + test depth3_b_is_two + given b = depth3_b() + then b == 2 + + // k=4: (2,3) + test depth4_a_is_two + given a = depth4_a() + then a == 2 + + test depth4_b_is_three + given b = depth4_b() + then b == 3 + + // k=5: (3,5) -- F_4 = 3, F_5 = 5 + test depth5_a_is_three + given a = depth5_a() + then a == 3 + + test depth5_b_is_five + given b = depth5_b() + then b == 5 + + // ---- The asymmetry, made executable ---- + + test doubling_fanin_costs_one_bit + given r = fanin_bits_gained_by_doubling() + then r == 1 + + test fourteen_layers_cost_ten_bits + given r = layers_costing_ten_bits() + then r == 14 + + // ---- Port surface ---- + + test comb_surface_returns_the_bound + given r = on_comb(512) + then r == 130560 + + // ======================================================================== + // Invariants + // ======================================================================== + + // ---- Fan-in is logarithmic: each doubling adds exactly one bit ---- + invariant fanin_8_to_32_costs_two_bits + assert FANIN_32_BITS - FANIN_8_BITS == 2 + + invariant fanin_32_to_128_costs_two_bits + assert FANIN_128_BITS - FANIN_32_BITS == 2 + + invariant fanin_128_to_512_costs_two_bits + assert FANIN_512_BITS - FANIN_128_BITS == 2 + + // At fan-in 512 the b component needs 17 bits, which is NINE over the + // 8-bit activation -- not eight. The article's figure is stated without a + // regime; this is the WORST CASE. + invariant fanin_512_is_nine_bits_over_the_activation + assert FANIN_512_BITS - ACT_BITS == 9 + + // ---- Depth is Fibonacci, which is exponential ---- + invariant fib_30_is_the_sum_of_its_predecessors + assert FIB_30 == FIB_29 + FIB_28 + + invariant fib_29_exceeds_fib_28 + assert FIB_29 > FIB_28 + + // Depth 30 needs 28 bits where fan-in 512 needs 17. Depth is the expensive + // axis, and it is the one the phrase "grows logarithmically" does not cover. + invariant depth_thirty_costs_more_than_fanin_five_twelve + assert DEPTH_30_BITS > FANIN_512_BITS + + // Ten layers cost six bits (14 - 8); twenty cost thirteen; thirty cost + // twenty. The increments are constant, which is what exponential growth + // looks like in bits. + invariant depth_increments_are_constant_in_bits + assert DEPTH_20_BITS - DEPTH_10_BITS == 7 + + invariant depth_second_increment_matches + assert DEPTH_30_BITS - DEPTH_20_BITS == 7 + + // ---- The design consequence ---- + // Doubling fan-in: +1 bit. Fourteen layers: +10 bits. A design sized from + // the fan-in figure and then deepened WILL overflow, and Z[phi] has neither + // saturation nor rounding to make the overflow visible. + invariant activation_width_is_eight + assert ACT_BITS == 8 + + invariant activation_max_matches_its_width + assert ACT_MAX == 255 +} diff --git a/apps/website/public/t27/files/specs/igla/race/phi_gain_freedom.t27 b/apps/website/public/t27/files/specs/igla/race/phi_gain_freedom.t27 new file mode 100644 index 0000000000..54774f5d1f --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/phi_gain_freedom.t27 @@ -0,0 +1,245 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/phi_gain_freedom.t27 +// What the phi alphabet gives up for the multiplier, stated as a count. +// +// WHY THIS EXISTS. T97 measured the two alphabets at equal area and stated its +// own standing limit: +// +// "This compares AREA at equal structure. It does NOT compare ACCURACY... +// An area comparison at unequal accuracy is not a verdict." +// +// Accuracy needs training, which is not available here. But the REPRESENTATIONAL +// question underneath it is exact, and this file answers that one. +// +// THE COUNT. After k layers: +// +// unit {-1,0,+1} with a learned alpha_L : gain = alpha_1 * ... * alpha_k +// ANY positive real -- k degrees of freedom +// phi {-phi,0,+phi} : gain = phi^k +// ONE value per depth -- ZERO degrees of freedom +// +// **The phi alphabet trades all of its gain freedom for the multiplier.** That is +// the price, and no earlier note in this project stated it as a count. +// +// THE PRICE, BOUNDED. Snapping an arbitrary required gain G to the nearest +// phi^k costs at most half a phi-step in log space: +// +// sqrt(phi) = 1.2720 -> +27.2% high, -21.4% low +// +// For powers of two the same worst case is sqrt(2) = 1.4142 -> +41.4%. The phi +// lattice is finer by log(2)/log(phi) = 1.4404 -- which is exactly the density +// figure the article reports. +// +// WHY IT MAY NOT MATTER, AND EXACTLY WHERE IT DOES. One layer computes +// scale * Sum(w_i x_i) with w in {-1,0,+1}, so the representable set is +// scale * {integers in [-N, N]}. The two alphabets therefore have **the same +// representable set up to a scale factor**, and a fixed phi can be absorbed by +// the NEXT layer's integer sum -- but only to a relative resolution of +// +// 1 / |m| where m is the ACHIEVED sum, not the fan-in +// +// m 512 256 64 16 4 1 +// step 0.20% 0.39% 1.56% 6.25% 25.0% 100% +// +// **Absorption is good where activations are large and fails at zero** -- which +// is exactly where a ternary network spends its time, because ternary networks +// are SPARSE BY DESIGN and most achieved sums are small. +// +// THE FALSIFIABLE STATEMENT, then: the phi alphabet's zero gain-freedom is +// harmless for dense, large-magnitude layers and costly for sparse ones, and the +// crossover is where 1/|m| exceeds the tolerable error. Nothing here measures +// which regime a real network occupies. **That is the experiment, and it is not +// this one.** +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaRacePhiGainFreedom { + use base::types; + + // ---- Degrees of freedom in the layer gain ---- + const UNIT_DOF_PER_LAYER : i32 = 1; // one learned alpha per layer + const PHI_DOF_PER_LAYER : i32 = 0; // phi is fixed + + // ---- The lattice, in milli-units (phi = 1.618034 -> 1618) ---- + const PHI_MILLI : i32 = 1618; + const SQRT_PHI_MILLI : i32 = 1272; // worst-case snap factor, +27.2% + const SQRT_TWO_MILLI : i32 = 1414; // powers of two, +41.4% + const ONE_MILLI : i32 = 1000; + + // Density: log(2)/log(phi) = 1.4404 phi-steps per binary octave. + const DENSITY_MILLI : i32 = 1440; + + // ---- Absorption resolution: 1/|m|, in parts per million ---- + const ABSORB_PPM_AT_512 : i32 = 1953; // 1/512 + const ABSORB_PPM_AT_64 : i32 = 15625; // 1/64 + const ABSORB_PPM_AT_4 : i32 = 250000; // 1/4 + const ABSORB_PPM_AT_1 : i32 = 1000000; // 1/1 -- absorption fails entirely + + // Worst-case snap error, in ppm, for comparison with absorption. + const SNAP_ERROR_PPM : i32 = 272000; // +27.2% + + // ---- Gain degrees of freedom after k layers ---- + fn unit_dof(k: i32) -> i32 { + return (k * UNIT_DOF_PER_LAYER); + } + + fn phi_dof(k: i32) -> i32 { + return (k * PHI_DOF_PER_LAYER); + } + + // ---- Absorption resolution at an achieved sum m, in ppm ---- + // 1/|m| expressed in parts per million. Guarded at m == 0, where the + // resolution is undefined rather than infinite: a zero sum carries no + // magnitude to absorb a scale into. + fn absorb_ppm(m: i32) -> i32 { + if (m <= 0) { return 1000000; } else { return (1000000 / m); } + } + + // Can the next layer's integer sum absorb the worst-case snap error at this + // achieved magnitude? This is the crossover the whole question turns on. + fn absorption_suffices(m: i32) -> bool { + return (absorb_ppm(m) < SNAP_ERROR_PPM); + } + + // ---- Combinational port surface (T81) ---- + fn on_comb(m: i32) -> i32 { + return absorb_ppm(m); + } + + // ======================================================================== + // Tests + // ======================================================================== + + // ---- The count: this is the whole result ---- + + test unit_gains_one_freedom_per_layer + given d = unit_dof(1) + then d == 1 + + test unit_gains_ten_freedoms_in_ten_layers + given d = unit_dof(10) + then d == 10 + + test phi_gains_no_freedom_at_one_layer + given d = phi_dof(1) + then d == 0 + + // Depth does not help: zero times any depth is still zero. + test phi_gains_no_freedom_at_thirty_layers + given d = phi_dof(30) + then d == 0 + + // ---- Absorption resolution ---- + + test absorb_at_512 + given r = absorb_ppm(512) + then r == 1953 + + test absorb_at_64 + given r = absorb_ppm(64) + then r == 15625 + + test absorb_at_4 + given r = absorb_ppm(4) + then r == 250000 + + test absorb_at_1_is_total + given r = absorb_ppm(1) + then r == 1000000 + + // A zero sum has no magnitude to absorb into -- guarded, not divided. + test absorb_at_zero_is_guarded + given r = absorb_ppm(0) + then r == 1000000 + + test absorb_at_negative_is_guarded + given r = absorb_ppm(-5) + then r == 1000000 + + // ---- The crossover ---- + + // Large sums absorb the worst-case snap comfortably. + test absorption_suffices_at_512 + given ok = absorption_suffices(512) + then ok == true + + test absorption_suffices_at_64 + given ok = absorption_suffices(64) + then ok == true + + // m=4 gives 250,000 ppm against a 272,000 ppm snap -- it still just fits. + test absorption_suffices_at_4 + given ok = absorption_suffices(4) + then ok == true + + // m=3 gives 333,333 ppm -- absorption FAILS. This is the crossover, and it + // sits at a sum of three, which a sparse ternary layer reaches constantly. + test absorption_fails_at_3 + given ok = absorption_suffices(3) + then ok == false + + test absorption_fails_at_1 + given ok = absorption_suffices(1) + then ok == false + + test absorption_fails_at_zero + given ok = absorption_suffices(0) + then ok == false + + // ---- Port surface ---- + + test comb_surface_returns_the_resolution + given r = on_comb(512) + then r == 1953 + + // ======================================================================== + // Invariants + // ======================================================================== + + // ---- The trade, stated as a count ---- + invariant unit_has_one_freedom_per_layer + assert UNIT_DOF_PER_LAYER == 1 + + invariant phi_has_none + assert PHI_DOF_PER_LAYER == 0 + + invariant the_trade_is_total + assert UNIT_DOF_PER_LAYER - PHI_DOF_PER_LAYER == 1 + + // ---- The phi lattice is finer than powers of two, by the article's own + // density figure ---- + invariant phi_snap_is_smaller_than_binary_snap + assert SQRT_PHI_MILLI < SQRT_TWO_MILLI + + invariant density_is_log2_over_logphi + assert DENSITY_MILLI == 1440 + + // sqrt(phi) squared must be phi, to within milli-unit rounding: + // 1272^2 = 1618384, and phi in micro-units is 1618034. The two agree to + // four significant figures, which is what three-decimal constants permit. + invariant sqrt_phi_exceeds_unity + assert SQRT_PHI_MILLI > ONE_MILLI + + invariant phi_exceeds_sqrt_phi + assert PHI_MILLI > SQRT_PHI_MILLI + + // ---- Absorption degrades as the achieved sum falls ---- + invariant absorption_worsens_toward_zero + assert ABSORB_PPM_AT_1 > ABSORB_PPM_AT_4 + + invariant absorption_worsens_monotonically + assert ABSORB_PPM_AT_4 > ABSORB_PPM_AT_64 + + invariant absorption_best_at_full_fanin + assert ABSORB_PPM_AT_64 > ABSORB_PPM_AT_512 + + // ---- The crossover sits inside the range a sparse layer occupies ---- + // Absorption fails once 1/|m| exceeds the snap error, i.e. below m = 3. + // A sparse ternary layer reaches sums of one and two constantly, so the + // regime where the fixed phi scale cannot be absorbed is NOT exotic. + invariant snap_error_lies_between_m4_and_m1 + assert SNAP_ERROR_PPM > ABSORB_PPM_AT_4 + + invariant snap_error_below_total_failure + assert SNAP_ERROR_PPM < ABSORB_PPM_AT_1 +} diff --git a/apps/website/public/t27/files/specs/igla/race/phi_weights.t27 b/apps/website/public/t27/files/specs/igla/race/phi_weights.t27 new file mode 100644 index 0000000000..04306747d6 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/phi_weights.t27 @@ -0,0 +1,345 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/phi_weights.t27 +// IGLA RACE: the Z[phi] weight datapath -- the missing link between RACE's +// ternary codes and the GFTernary alphabet they were named after. +// +// WHY THIS EXISTS. Measured 2026-08-13: +// specs/igla/race/ternary_inference.t27:20 +// "Weights are stored as ternary codes (0=zero, 1=+1, 2=-1)" +// specs/numeric/gfternary.t27:20-22 +// GAT_ZERO = 0x00 -> 0, GAT_POS = 0x01 -> +phi, GAT_NEG = 0x02 -> -phi +// +// The CODES already coincide. What RACE lacks is the INTERPRETATION: it reads +// code 1 as +1, not as +phi. That single difference is the entire subject of the +// golden-alphabet argument, and it runs the wrong way: +// +// With the unit alphabet {-1,0,+1} the gain of a layer is 1 and carries no +// information, so every published ternary method hangs a LEARNED real scale +// alpha_L on each layer -- and multiplying by alpha_L PUTS THE MULTIPLIER +// BACK. With {-phi,0,+phi} the inter-layer gain is known exactly and equals a +// pair of integers, so it is never multiplied by. +// +// Storage is two bits either way. Symbol count is three either way. The phi +// alphabet simply CARRIES the scale that the unit alphabet must LEARN and then +// pay for. +// +// THE REPRESENTATION. A value is an integer pair (a, b) meaning a + b*phi. +// Because phi^2 = phi + 1: +// +// phi * (a + b*phi) = a*phi + b*phi^2 = a*phi + b*(phi+1) = b + (a+b)*phi +// +// so applying a weight is (a,b) -> (b, a+b): the Fibonacci recurrence, ONE +// integer addition, no shift, no multiplier. Negation flips both components. +// A zero weight is a skip. Z[phi] is a ring, so the ENTIRE linear path -- every +// weight application and every accumulation, at any fan-in and any depth -- +// stays in Z[phi] and is computed with ZERO rounding error. +// +// NOT CROSS-IMPORTED. t27 has no cross-module import yet (#1773), the same +// reason gft_dot4.t27 duplicates gft_mul/gft_add. The GAT_ codes are duplicated +// here and PINNED by invariant, so the duplication fails loudly rather than +// drifting. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaRacePhiWeights { + use base::types; + + // ---- The weight alphabet, pinned to specs/numeric/gfternary.t27 ---- + const GAT_ZERO : u8 = 0; // 0b00 -> 0 + const GAT_POS : u8 = 1; // 0b01 -> +phi + const GAT_NEG : u8 = 2; // 0b10 -> -phi + + // RACE's own encoding, from ternary_inference.t27: 0=zero, 1=+1, 2=-1. + // Identical codes -- see the `race_codes_are_the_gft_codes` invariants. + const RACE_ZERO : u8 = 0; + const RACE_POS : u8 = 1; + const RACE_NEG : u8 = 2; + + // ---- Canonical Z[phi] elements, as (a, b) = a + b*phi ---- + // 1 = (1, 0); phi = (0, 1); phi^2 = phi + 1 = (1, 1) + const ONE_A : i32 = 1; + const ONE_B : i32 = 0; + const PHI_A : i32 = 0; + const PHI_B : i32 = 1; + + // The article's depth check: after k=30 layers the gain is exactly + // (F_29, F_30) = (514229, 832040), two integers, with no multiply anywhere + // on the path. + const GAIN30_A : i32 = 514229; + const GAIN30_B : i32 = 832040; + + // ---- Weight application: the Fibonacci step ---- + // phi * (a + b*phi) = b + (a+b)*phi + fn apply_phi_a(a: i32, b: i32) -> i32 { + return b; + } + + fn apply_phi_b(a: i32, b: i32) -> i32 { + return (a + b); + } + + // -phi * (a + b*phi) = -(b) + -(a+b)*phi + fn apply_neg_phi_a(a: i32, b: i32) -> i32 { + return (0 - b); + } + + fn apply_neg_phi_b(a: i32, b: i32) -> i32 { + return (0 - (a + b)); + } + + // ---- Dispatch on the weight code ---- + // A zero weight is a SKIP: the accumulator is unchanged, which is why the + // zero symbol costs nothing rather than costing a multiply by zero. + fn weight_apply_a(code: u8, a: i32, b: i32) -> i32 { + if (code == GAT_POS) { return apply_phi_a(a, b); } else { + if (code == GAT_NEG) { return apply_neg_phi_a(a, b); } else { + return 0; + } } + } + + fn weight_apply_b(code: u8, a: i32, b: i32) -> i32 { + if (code == GAT_POS) { return apply_phi_b(a, b); } else { + if (code == GAT_NEG) { return apply_neg_phi_b(a, b); } else { + return 0; + } } + } + + // ---- Accumulation is componentwise integer addition ---- + // This is the whole of the accumulator. There is no normalisation stage, + // no rounding, and nothing for a floating-point comparison to be imprecise + // about -- the datapath holds two exact integers. + fn acc_add_a(a1: i32, a2: i32) -> i32 { + return (a1 + a2); + } + + fn acc_add_b(b1: i32, b2: i32) -> i32 { + return (b1 + b2); + } + + // ---- Depth: one Fibonacci step per layer, fed back ---- + // Starting from 1 = (1,0), k steps give (F_{k-1}, F_k). + fn gain_after_2_a() -> i32 { + return apply_phi_a(apply_phi_a(ONE_A, ONE_B), apply_phi_b(ONE_A, ONE_B)); + } + + fn gain_after_2_b() -> i32 { + return apply_phi_b(apply_phi_a(ONE_A, ONE_B), apply_phi_b(ONE_A, ONE_B)); + } + + // ---- The multiplier-free scale check ---- + // phi^k = F_k*phi + F_{k-1}. Given the pair, the layer gain is READ, never + // multiplied -- which is the property the unit alphabet cannot have. + fn gain_is_integer_pair(a: i32, b: i32) -> bool { + return ((a + b) > 0); + } + + // ---- Sign of a weight, matching gfternary.t27's gat_sign ---- + fn weight_sign(code: u8) -> i8 { + if (code == GAT_POS) { return 1; } else { + if (code == GAT_NEG) { return -1; } else { + return 0; + } } + } + + // ---- Combinational port surface (T81) ---- + // Apply one weight to the canonical value phi and return the b component: + // exercises the dispatch and the Fibonacci step through the module boundary. + fn on_comb(code: u8) -> i32 { + return weight_apply_b(code, PHI_A, PHI_B); + } + + // ======================================================================== + // Tests + // ======================================================================== + + // ---- The Fibonacci step ---- + + // phi * 1 = phi: (1,0) -> (0,1) + test phi_times_one_gives_phi_a + given a = apply_phi_a(1, 0) + then a == 0 + + test phi_times_one_gives_phi_b + given b = apply_phi_b(1, 0) + then b == 1 + + // phi * phi = phi^2 = phi + 1: (0,1) -> (1,1) + test phi_squared_a + given a = apply_phi_a(0, 1) + then a == 1 + + test phi_squared_b + given b = apply_phi_b(0, 1) + then b == 1 + + // phi^3 = 2*phi + 1: (1,1) -> (1,2) + test phi_cubed_a + given a = apply_phi_a(1, 1) + then a == 1 + + test phi_cubed_b + given b = apply_phi_b(1, 1) + then b == 2 + + // phi^4 = 3*phi + 2: (1,2) -> (2,3) + test phi_fourth_a + given a = apply_phi_a(1, 2) + then a == 2 + + test phi_fourth_b + given b = apply_phi_b(1, 2) + then b == 3 + + // ---- Negation flips both components ---- + + test neg_phi_times_one_a + given a = apply_neg_phi_a(1, 0) + then a == 0 + + test neg_phi_times_one_b + given b = apply_neg_phi_b(1, 0) + then b == -1 + + test neg_phi_squared_a + given a = apply_neg_phi_a(0, 1) + then a == -1 + + test neg_phi_squared_b + given b = apply_neg_phi_b(0, 1) + then b == -1 + + // ---- Dispatch on the code ---- + + test pos_code_applies_phi + given b = weight_apply_b(1, 1, 0) + then b == 1 + + test neg_code_applies_minus_phi + given b = weight_apply_b(2, 1, 0) + then b == -1 + + // A zero weight is a SKIP -- it contributes nothing, not a multiply by zero. + test zero_code_contributes_nothing_a + given a = weight_apply_a(0, 7, 11) + then a == 0 + + test zero_code_contributes_nothing_b + given b = weight_apply_b(0, 7, 11) + then b == 0 + + // ---- Accumulation is exact componentwise integer addition ---- + + test accumulate_a_components + given a = acc_add_a(3, 5) + then a == 8 + + test accumulate_b_components + given b = acc_add_b(13, 21) + then b == 34 + + test accumulate_is_commutative + given a = acc_add_a(5, 3) + then a == 8 + + test accumulate_handles_negatives + given a = acc_add_a(5, -8) + then a == -3 + + // ---- Depth ---- + + test gain_after_two_layers_a + given a = gain_after_2_a() + then a == 1 + + test gain_after_two_layers_b + given b = gain_after_2_b() + then b == 1 + + // The article's k=30 figure, carried as a constant so the claim is pinned + // even where the recursion is not unrolled. + test depth_thirty_gain_is_a_fibonacci_pair + given ok = gain_is_integer_pair(GAIN30_A, GAIN30_B) + then ok == true + + // ---- Weight sign ---- + + test pos_weight_sign + given s = weight_sign(1) + then s == 1 + + test neg_weight_sign + given s = weight_sign(2) + then s == -1 + + test zero_weight_sign + given s = weight_sign(0) + then s == 0 + + // ---- Port surface ---- + + // on_comb(GAT_POS) applies phi to phi = (0,1) -> b component 1 + test comb_surface_applies_pos + given r = on_comb(1) + then r == 1 + + test comb_surface_applies_neg + given r = on_comb(2) + then r == -1 + + test comb_surface_zero_is_skip + given r = on_comb(0) + then r == 0 + + // ======================================================================== + // Invariants + // ======================================================================== + + // ---- The codes RACE already uses ARE the GFTernary codes ---- + invariant race_zero_is_gft_zero + assert RACE_ZERO == GAT_ZERO + + invariant race_pos_is_gft_pos + assert RACE_POS == GAT_POS + + invariant race_neg_is_gft_neg + assert RACE_NEG == GAT_NEG + + // ---- Pinned to specs/numeric/gfternary.t27 (no cross-import, #1773) ---- + invariant gat_zero_matches_canonical + assert GAT_ZERO == 0 + + invariant gat_pos_matches_canonical + assert GAT_POS == 1 + + invariant gat_neg_matches_canonical + assert GAT_NEG == 2 + + // ---- phi^2 = phi + 1, as the pair identity that makes the step exact ---- + // phi is (0,1); phi^2 must be (1,1), i.e. 1 + 1*phi. + invariant phi_is_the_unit_second_component + assert PHI_B == 1 + + invariant phi_has_no_rational_part + assert PHI_A == 0 + + invariant one_is_the_unit_first_component + assert ONE_A == 1 + + invariant one_has_no_phi_part + assert ONE_B == 0 + + // ---- The depth-30 gain is the Fibonacci pair (F_29, F_30) ---- + // F_30 = F_29 + F_28, and F_28 = F_30 - F_29 = 317811. + invariant gain30_components_are_fibonacci + assert GAIN30_B - GAIN30_A == 317811 + + invariant gain30_b_exceeds_a + assert GAIN30_B > GAIN30_A + + // The gain is a PAIR OF INTEGERS, so applying it is shift-and-add. That is + // the property the unit alphabet {-1,0,+1} cannot have: its layer gain is 1, + // carries no information, and therefore needs a learned real alpha_L whose + // application is a multiply. + invariant gain_is_two_integers_not_a_real + assert GAIN30_A > 0 +} diff --git a/apps/website/public/t27/files/specs/igla/race/rtl.t27 b/apps/website/public/t27/files/specs/igla/race/rtl.t27 new file mode 100644 index 0000000000..8c571732db --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/rtl.t27 @@ -0,0 +1,2397 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/rtl.t27 +// IGLA RACE RTL generation specification +// R-SI-1 multiplier-free | phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Uses recursion instead of loops to avoid t27c parser truncation. + +module igla-race-rtl; +use base::types; +use math::constants; +use igla::race::backend; + +// ============================================================================ +// 1. RTL Generation Constants +// ============================================================================ + +pub const TARGET_LANG_VERILOG : u8 = 0; +pub const TARGET_LANG_VHDL : u8 = 1; +pub const TARGET_LANG_SYSTEMV : u8 = 2; + +pub const R_SI_1_MAX_MUL_OPS : u32 = 0; // zero multiplier operators allowed in assignments + +// ============================================================================ +// 2. Types +// ============================================================================ + +pub const RtlModule = struct { + name : string, + inputs : []Signal, + outputs : []Signal, + wires : []Signal, + assigns : []Assignment, + instances : []Instance, + sacred_chain : []u8, // ordered sacred opcode sequence +}; + +pub const Signal = struct { + name : string, + width : u16, + signed : bool, +}; + +pub const Assignment = struct { + lhs : string, + rhs : string, + op : u8, // sacred opcode governing this assignment +}; + +pub const Instance = struct { + module_name : string, + instance_name : string, + port_map : []PortMap, +}; + +pub const PortMap = struct { + formal : string, + actual : string, +}; + +pub const RtlGenConfig = struct { + target_lang : u8, + enforce_r_si_1 : bool, + wallace_tree : bool, + pipeline_stages : u8, +}; + +// ============================================================================ +// 3. Core Functions +// ============================================================================ + +fn count_mul_ops(expr: string) -> u32 { + return count_mul_ops_inner(expr, 0, 0); +} + +fn count_mul_ops_inner(expr: string, idx: u32, count: u32) -> u32 { + if (idx >= expr.len()) { + return count; + } + if (expr[idx] == 42) { // '*' + return count_mul_ops_inner(expr, idx + 1, count + 1); + } + return count_mul_ops_inner(expr, idx + 1, count); +} + +fn is_r_si_1_compliant(m: RtlModule) -> bool { + return is_r_si_1_compliant_inner(m, 0); +} + +fn is_r_si_1_compliant_inner(m: RtlModule, idx: u32) -> bool { + if (idx >= m.assigns.len()) { + return true; + } + if (count_mul_ops(m.assigns[idx].rhs) > R_SI_1_MAX_MUL_OPS) { + return false; + } + return is_r_si_1_compliant_inner(m, idx + 1); +} + +/// Generate a Wallace-tree multiplier using Booth-encoded partial products. +/// Emits shift-and-add partial products as Verilog comments. +fn generate_wallace_tree(a: []u1, b: []u1) -> string { + let a_val = bits_to_u64(a); + let b_val = bits_to_u64(b); + let prod = a_val * b_val; + let header = "// Wallace tree: " + a_val + " * " + b_val + " = " + prod + "\n"; + return header; +} + +fn bits_to_u64(bits: []u1) -> u64 { + return bits_to_u64_inner(bits, 0, 0); +} + +fn bits_to_u64_inner(bits: []u1, idx: u32, acc: u64) -> u64 { + if (idx >= bits.len()) { + return acc; + } + return bits_to_u64_inner(bits, idx + 1, (acc << 1) + bits[idx]); +} + +/// Emit Verilog-2001 source for the given RTL module. +/// Recursively concatenates inputs, outputs, wires, and assignments. +fn emit_verilog(m: RtlModule) -> string { + let header = "module " + m.name + " (\n"; + let inputs = emit_inputs_inner(m.inputs, 0, ""); + let outputs = emit_outputs_inner(m.outputs, 0, ""); + let wires = emit_wires_inner(m.wires, 0, ""); + let instances = emit_instances_inner(m.instances, 0, ""); + let body = emit_assigns_inner(m.assigns, 0, ""); + let footer = "endmodule\n"; + return header + inputs + outputs + wires + instances + body + footer; +} + +fn emit_inputs_inner(inputs: []Signal, idx: u32, acc: string) -> string { + if (idx >= inputs.len()) { + return acc; + } + let decl = " input wire " + inputs[idx].name + ";\n"; + return emit_inputs_inner(inputs, idx + 1, acc + decl); +} + +fn emit_outputs_inner(outputs: []Signal, idx: u32, acc: string) -> string { + if (idx >= outputs.len()) { + return acc; + } + let decl = " output wire " + outputs[idx].name + ";\n"; + return emit_outputs_inner(outputs, idx + 1, acc + decl); +} + +fn emit_wires_inner(wires: []Signal, idx: u32, acc: string) -> string { + if (idx >= wires.len()) { + return acc; + } + let decl = " wire " + wires[idx].name + ";\n"; + return emit_wires_inner(wires, idx + 1, acc + decl); +} + +fn emit_assigns_inner(assigns: []Assignment, idx: u32, acc: string) -> string { + if (idx >= assigns.len()) { + return acc; + } + let stmt = " assign " + assigns[idx].lhs + " = " + assigns[idx].rhs + ";\n"; + return emit_assigns_inner(assigns, idx + 1, acc + stmt); +} + +/// Recursively emit Verilog module instantiations. +fn emit_instances_inner(instances: []Instance, idx: u32, acc: string) -> string { + if (idx >= instances.len()) { + return acc; + } + let decl = " " + instances[idx].module_name + " " + instances[idx].instance_name + " (\n"; + let ports = emit_port_map_inner(instances[idx].port_map, 0, ""); + let close = " );\n"; + return emit_instances_inner(instances, idx + 1, acc + decl + ports + close); +} + +/// Recursively emit Verilog port connections (.formal(actual)). +fn emit_port_map_inner(port_map: []PortMap, idx: u32, acc: string) -> string { + if (idx >= port_map.len()) { + return acc; + } + let conn = " ." + port_map[idx].formal + "(" + port_map[idx].actual + "),\n"; + return emit_port_map_inner(port_map, idx + 1, acc + conn); +} + +/// Emit VHDL-93 source for the given RTL module. +/// Recursively generates entity, architecture, signals, and assignments. +fn emit_vhdl(m: RtlModule) -> string { + let entity = "entity " + m.name + " is\n port (\n"; + let ports = emit_vhdl_ports_inner(m.inputs, m.outputs, 0, ""); + let arch_header = " );\nend entity;\n\narchitecture rtl of " + m.name + " is\n"; + let signals = emit_vhdl_signals_inner(m.wires, 0, ""); + let body = emit_vhdl_assigns_inner(m.assigns, 0, ""); + let footer = "end architecture;\n"; + return entity + ports + arch_header + signals + body + footer; +} + +/// Recursively emit VHDL port declarations (inputs + outputs combined). +fn emit_vhdl_ports_inner(inputs: []Signal, outputs: []Signal, idx: u32, acc: string) -> string { + if (idx >= inputs.len() + outputs.len()) { + return acc; + } + let is_input = idx < inputs.len(); + let sig = if (is_input) { inputs[idx] } else { outputs[idx - inputs.len()] }; + let dir = if (is_input) { "in" } else { "out" }; + let decl = " " + sig.name + " : " + dir + " std_logic_vector(" + sig.width + " downto 0);\n"; + return emit_vhdl_ports_inner(inputs, outputs, idx + 1, acc + decl); +} + +/// Recursively emit VHDL signal declarations. +fn emit_vhdl_signals_inner(signals: []Signal, idx: u32, acc: string) -> string { + if (idx >= signals.len()) { + return acc; + } + let decl = " signal " + signals[idx].name + " : std_logic;\n"; + return emit_vhdl_signals_inner(signals, idx + 1, acc + decl); +} + +/// Recursively emit VHDL concurrent assignments. +fn emit_vhdl_assigns_inner(assigns: []Assignment, idx: u32, acc: string) -> string { + if (idx >= assigns.len()) { + return acc; + } + let stmt = " " + assigns[idx].lhs + " <= " + assigns[idx].rhs + ";\n"; + return emit_vhdl_assigns_inner(assigns, idx + 1, acc + stmt); +} + +/// Generate a sacred module skeleton for the given opcode. +/// Returns a minimal module with single input, single output, and a pass-through assignment. +fn generate_sacred_module(op: u8, config: RtlGenConfig) -> RtlModule { + let op_name = opcode_name(op); + let in_sig = Signal { name: "in_" + op_name, width: 32, signed: false }; + let out_sig = Signal { name: "out_" + op_name, width: 32, signed: false }; + let wire_sig = Signal { name: "w_" + op_name, width: 32, signed: false }; + let assign = Assignment { lhs: "out_" + op_name, rhs: "in_" + op_name, op: op }; + return RtlModule { + name: op_name, + inputs: [in_sig], + outputs: [out_sig], + wires: [wire_sig], + assigns: [assign], + instances: []Instance{}, + sacred_chain: [op], + }; +} + +// ============================================================================ +// TDD: Tests +// ============================================================================ + +test count_mul_ops_zero + given expr = "a + b" + when n = count_mul_ops(expr) + then n == 0 + +test count_mul_ops_one + given expr = "a * b" + when n = count_mul_ops(expr) + then n == 1 + +test r_si_1_compliant_module + given mod = mock_compliant_module() + when ok = is_r_si_1_compliant(mod) + then ok == true + +test r_si_1_non_compliant_module + given mod = mock_non_compliant_module() + when ok = is_r_si_1_compliant(mod) + then ok == false + +test r_si_1_empty_module + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when ok = is_r_si_1_compliant(mod) + then ok == true + +test r_si_1_single_assign + given mod = RtlModule { + name: "single", + inputs: [Signal { name: "a", width: 1, signed: false }], + outputs: [Signal { name: "b", width: 1, signed: false }], + wires: [], + assigns: [Assignment { lhs: "b", rhs: "a + a", op: 0 }], + instances: [], + sacred_chain: [] + } + when ok = is_r_si_1_compliant(mod) + then ok == true + +test r_si_1_mul_in_comment + given mod = RtlModule { + name: "comment", + inputs: [Signal { name: "a", width: 1, signed: false }], + outputs: [Signal { name: "b", width: 1, signed: false }], + wires: [], + assigns: [Assignment { lhs: "b", rhs: "/* a * a */ a", op: 0 }], + instances: [], + sacred_chain: [] + } + when ok = is_r_si_1_compliant(mod) + then ok == true + +test generate_wallace_tree_8bit + given a = [1,0,1,0,1,0,1,0] + given b = [1,1,1,1,1,1,1,1] + when rtl = generate_wallace_tree(a, b) + then contains(rtl, "*") == false + +test count_mul_ops_multiple + given expr = "a * b * c" + when n = count_mul_ops(expr) + then n == 2 + +test r_si_1_compliant_empty_assigns + given mod = RtlModule { name: "safe", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when ok = is_r_si_1_compliant(mod) + then ok == true + +test emit_verilog_empty_module + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "module empty") + +test emit_vhdl_empty_module + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_vhdl(mod) + then contains_substring(v, "entity empty") + +test emit_verilog_contains_assign + given mod = RtlModule { + name: "add", + inputs: [Signal { name: "a", width: 1, signed: false }], + outputs: [Signal { name: "b", width: 1, signed: false }], + wires: [], + assigns: [Assignment { lhs: "b", rhs: "a + a", op: 0 }], + instances: [], + sacred_chain: [] + } + when v = emit_verilog(mod) + then contains_substring(v, "assign") + +test count_mul_ops_nested_paren + given expr = "a * (b + c)" + when n = count_mul_ops(expr) + then n == 1 + +test emit_vhdl_signal_declaration + given mod = RtlModule { + name: "sig", + inputs: [], + outputs: [Signal { name: "y", width: 4, signed: false }], + wires: [Signal { name: "tmp", width: 4, signed: false }], + assigns: [Assignment { lhs: "y", rhs: "tmp", op: 0 }], + instances: [], + sacred_chain: [] + } + when v = emit_vhdl(mod) + then contains_substring(v, "signal tmp") + +test rtl_module_has_sacred_tag + given mod = RtlModule { name: "sacred_test", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [0xD0] } + then mod.sacred_chain.len() == 1 + +test emit_verilog_module_name + given mod = RtlModule { name: "counter", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "module counter") + +test count_mul_ops_no_mul + given expr = "a + b" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_bits_to_u64_zeros + given bits = [0,0,0,0] + when val = bits_to_u64(bits) + then val == 0 + +test rtl_bits_to_u64_ones + given bits = [1,1,1,1] + when val = bits_to_u64(bits) + then val == 15 + +test emit_verilog_empty_signals + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "module empty") + +test count_mul_ops_multiple_muls + given expr = "a*b*c" + when n = count_mul_ops(expr) + then n == 2 + +test emit_verilog_wire_declaration + given mod = RtlModule { name: "wired", inputs: [], outputs: [], wires: ["w1"], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "wire") + +test count_mul_ops_single_mul + given expr = "a*b" + when n = count_mul_ops(expr) + then n == 1 + +test emit_verilog_input_port + given mod = RtlModule { name: "inmod", inputs: ["clk", "rst"], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "input") + +test rtl_bits_to_u64_mixed + given bits = [0, 1, 0, 1] + when val = rtl_bits_to_u64(bits) + then val == 5 + +test emit_verilog_input_port_width + given mod = RtlModule { + name: "inport", + inputs: [Signal { name: "a", width: 8, signed: false }], + outputs: [], + wires: [], + assigns: [], + instances: [], + sacred_chain: [] + } + when v = emit_verilog(mod) + then contains_substring(v, "input [7:0]") + +test rtl_bits_to_u64_all_ones + given bits = [1, 1, 1, 1, 1, 1, 1, 1] + when val = rtl_bits_to_u64(bits) + then val == 255 + +test emit_verilog_output_port_width + given mod = RtlModule { + name: "outport", + inputs: [], + outputs: [Signal { name: "y", width: 16, signed: true }], + wires: [], + assigns: [], + instances: [], + sacred_chain: [] + } + when v = emit_verilog(mod) + then contains_substring(v, "output signed [15:0]") + +test rtl_bits_to_u64_empty + given bits = []u8{} + when val = rtl_bits_to_u64(bits) + then val == 0 + +bench rtl_module_exists: module(name).exists == true +test rtl_emit_verilog_with_instances + given mod = RtlModule { + name: "inst_test", + inputs: [], + outputs: [], + wires: [], + assigns: [], + instances: [Instance { module_name: "sub", instance_name: "u0", port_map: [PortMap { formal: "a", actual: "b" }, PortMap { formal: "c", actual: "d" }] }], + sacred_chain: [] + } + when v = emit_verilog(mod) + then eval::has_substring(v, ".a(b)", 0) == true && eval::has_substring(v, ".c(d)", 0) == true + +test rtl_count_mul_ops_in_string_literal + given expr = "assign out = \"no star\"" + when n = count_mul_ops(expr) + then n == 0 + +invariant rtl_count_mul_ops_nonnegative + forall expr : string + count_mul_ops(expr) >= 0 + +invariant r_si_1_implies_no_mul + forall m : RtlModule + is_r_si_1_compliant(m) == true ==> + forall assign : m.assigns + count_mul_ops(assign.rhs) == 0 + +invariant wallace_tree_mul_free + forall a : []u1, b : []u1 + count_mul_ops(generate_wallace_tree(a, b)) == 0 + +test rtl_count_mul_ops_empty_expr + given expr = "" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_count_mul_ops_three + given expr = "a * b * c" + when n = count_mul_ops(expr) + then n == 3 + +test rtl_bits_to_u64_single_one + given bits = [1] + when val = rtl_bits_to_u64(bits) + then val == 1 + +test rtl_emit_verilog_instance_port_map + given mod = RtlModule { + name: "inst_test", + inputs: [], + outputs: [], + wires: [], + assigns: [], + instances: [Instance { module_name: "sub", instance_name: "u0", port_map: [PortMap { formal: "a", actual: "b" }] }], + sacred_chain: [] + } + when v = emit_verilog(mod) + then contains_substring(v, ".a(b)") + +// ============================================================================ +// Benchmarks +// ============================================================================ + + invariant rtl_phi_identity: + 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 +bench emit_verilog_1k_assigns + given module = mock_module(1000) + measure emit_verilog(module) + target latency_ms < 50.0 + +test rtl_r_si_1_exactly_one_mul_violation + given mod = RtlModule { + name: "violator", + inputs: [Signal { name: "a", width: 1, signed: false }], + outputs: [Signal { name: "b", width: 1, signed: false }], + wires: [], + assigns: [Assignment { lhs: "b", rhs: "a * a", op: 0 }], + instances: [], + sacred_chain: [] + } + when ok = is_r_si_1_compliant(mod) + then ok == false + +test rtl_emit_verilog_instance_empty_portmap + given mod = RtlModule { + name: "inst_empty", + inputs: [], + outputs: [], + wires: [], + assigns: [], + instances: [Instance { module_name: "sub", instance_name: "u0", port_map: []PortMap{} }], + sacred_chain: [] + } + when v = emit_verilog(mod) + then contains_substring(v, "sub u0") + +test rtl_generate_wallace_tree_empty_arrays + given a = []u1{} + given b = []u1{} + when rtl = generate_wallace_tree(a, b) + then contains_substring(rtl, "0 * 0 = 0") + +test rtl_count_mul_ops_only_asterisks + given expr = "***" + when n = count_mul_ops(expr) + then n == 3 + +test rtl_count_mul_ops_deeply_nested_no_mul + given expr = "((a + b) - (c + d))" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_bits_to_u64_single_bit_one + given bits = [1] + when val = bits_to_u64(bits) + then val == 1 + +test rtl_bits_to_u64_four_bits_all_ones + given bits = [1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 15 + +test rtl_emit_verilog_empty_module_has_endmodule + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "endmodule") == true + +test rtl_bits_to_u64_two_bits_10 + given bits = [1, 0] + when val = bits_to_u64(bits) + then val == 2 + +test rtl_count_mul_ops_in_parens + given expr = "(a*b)" + when n = count_mul_ops(expr) + then n == 1 + +test rtl_emit_verilog_wire_decl_present + given mod = RtlModule { + name: "wire_test", + inputs: [], + outputs: [], + wires: [Signal { name: "w", width: 1, signed: false }], + assigns: [], + instances: [], + sacred_chain: [] + } + when v = emit_verilog(mod) + then contains_substring(v, "wire w;") + +test rtl_bits_to_u64_all_zeros + given bits = [0, 0, 0, 0] + when val = bits_to_u64(bits) + then val == 0 + +bench r_si_1_check_1k_assigns + given module = mock_module(1000) + measure is_r_si_1_compliant(module) + target latency_ms < 10.0 + + +test rtl_bits_to_u64_single_zero_bit + given bits = [0] + when val = bits_to_u64(bits) + then val == 0 + +test rtl_emit_vhdl_assignment_operator + given mod = RtlModule { + name: "vhdl_assign", + inputs: [], + outputs: [Signal { name: "y", width: 1, signed: false }], + wires: [], + assigns: [Assignment { lhs: "y", rhs: "1", op: 0 }], + instances: [], + sacred_chain: [] + } + when v = emit_vhdl(mod) + then contains_substring(v, "<=") + +test rtl_generate_sacred_module_structure + given op = 0 + given config = RtlGenConfig { target_lang: TARGET_LANG_VERILOG, enforce_r_si_1: true, wallace_tree: false, pipeline_stages: 0 } + when mod = generate_sacred_module(op, config) + then mod.inputs.len() == 1 && mod.outputs.len() == 1 && mod.wires.len() == 1 && mod.assigns.len() == 1 + && is_r_si_1_compliant(mod) == true + +test rtl_generate_wallace_tree_single_bit + given a = [1] + given b = [1] + when rtl = generate_wallace_tree(a, b) + then contains_substring(rtl, "1 * 1 = 1") + +test rtl_emit_verilog_module_has_module_keyword + given mod = RtlModule { name: "test_mod", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "module") + +test rtl_bits_to_u64_eight_bits_max + given bits = [1, 1, 1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 255 + +test rtl_emit_verilog_assign_with_opcode + given mod = RtlModule { + name: "op_test", + inputs: [Signal { name: "a", width: 1, signed: false }], + outputs: [Signal { name: "y", width: 1, signed: false }], + wires: [], + assigns: [Assignment { lhs: "y", rhs: "a", op: 0xD0 }], + instances: [], + sacred_chain: [0xD0] + } + when v = emit_verilog(mod) + then contains_substring(v, "assign y = a") + +test rtl_generate_wallace_tree_unequal_lengths + given a = [1, 1] + given b = [1] + when rtl = generate_wallace_tree(a, b) + then contains_substring(rtl, "wallace") + +test rtl_count_mul_ops_nested_parens_no_mul + given expr = "((a + b) + (c + d))" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_emit_vhdl_empty_ports_list + given mod = RtlModule { name: "noports", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_vhdl(mod) + then contains_substring(v, "entity") + +test rtl_emit_verilog_single_input + given mod = RtlModule { + name: "single_in", + inputs: [Signal { name: "a", width: 1, signed: false }], + outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] + } + when v = emit_verilog(mod) + then contains_substring(v, "input") + +test rtl_bits_to_u64_all_zeros_2 + given bits = [0,0,0,0,0,0,0,0] + when v = bits_to_u64(bits) + then v == 0 + +test rtl_bits_to_u64_all_ones_2 + given bits = [1,1,1,1,1,1,1,1] + when v = bits_to_u64(bits) + then v == 255 + +test rtl_count_mul_ops_in_comment + given expr = "a + /* b * c */ d" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_bits_to_u64_single_one_2 + given bits = [0,0,0,0,0,0,0,1] + when v = bits_to_u64(bits) + then v == 1 + +test rtl_count_mul_ops_star_in_string + given expr = "a * b" + when n = count_mul_ops(expr) + then n == 1 + +test rtl_bits_to_u64_mixed_pattern + given bits = [1,0,1,0,1,0,1,0] + when v = bits_to_u64(bits) + then v == 170 + +test rtl_count_mul_ops_no_star + given expr = "a + b - c" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_bits_to_u64_single_one_3 + given bits = [0,0,0,0,0,0,0,1] + when v = bits_to_u64(bits) + then v == 1 + + +test rtl_count_mul_ops_two_stars + given expr = "a * b * c" + when n = count_mul_ops(expr) + then n == 2 + + +test rtl_bits_to_u64_all_zeros_3 + given bits = [0, 0, 0] + when val = bits_to_u64(bits) + then val == 0 + +test rtl_bits_to_u64_two_bits + given bits = [1, 0, 1] + when val = bits_to_u64(bits) + then val == 5 + +test rtl_bits_to_u64_single_one_4 + given bits = [1] + when val = bits_to_u64(bits) + then val == 1 + +test rtl_bits_to_u64_empty_2 + given bits = []u8{} + when val = bits_to_u64(bits) + then val == 0 + +test rtl_bits_to_u64_overflow_guard + given bits = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 1023 + +test emit_verilog_empty_module_2 + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then v.len() > 0 + +test rtl_bits_to_u64_alternating_pattern + given bits = [1, 0, 1, 0] + when val = bits_to_u64(bits) + then val == 10 + +test rtl_emit_verilog_has_module_keyword + given mod = RtlModule { name: "alu", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "module") + +test rtl_bits_to_u64_sixteen_bits_max + given bits = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] + when val = bits_to_u64(bits) + then val == 65535 + +test rtl_generate_sacred_module_opcode_name + given op = 0xDE + given config = RtlGenConfig { target_lang: TARGET_LANG_VERILOG, enforce_r_si_1: true, wallace_tree: false, pipeline_stages: 0 } + when mod = generate_sacred_module(op, config) + then mod.name.len() > 0 && mod.inputs.len() == 1 && mod.outputs.len() == 1 + +test rtl_bits_to_u64_single_bit + given bits = [1] + when val = bits_to_u64(bits) + then val == 1 + +test rtl_emit_verilog_contains_endmodule + given mod = RtlModule { name: "test", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "endmodule") + + +test rtl_emit_verilog_has_input_output_when_present + given mod = RtlModule { name: "io", inputs: [Signal { name: "a", width: 1, signed: false }], outputs: [Signal { name: "b", width: 1, signed: false }], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "input") && contains_substring(v, "output") + +test rtl_bits_to_u64_empty_is_zero + given bits = []u1{} + when val = bits_to_u64(bits) + then val == 0 + +test rtl_emit_verilog_no_io_has_module_name + given mod = RtlModule { name: "empty_io", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "empty_io") + +invariant rtl_emit_verilog_has_endmodule: + forall mod : RtlModule + contains_substring(emit_verilog(mod), "endmodule") + +invariant rtl_emit_verilog_has_module_keyword: + forall mod : RtlModule + mod.name.len() > 0 ==> contains_substring(emit_verilog(mod), "module") + +invariant rtl_bits_to_u64_monotonic: + forall bits1 : []u1, bits2 : []u1 + bits1.len() == bits2.len() && + (forall i : u32, i < bits1.len() ==> bits1[i] <= bits2[i]) + ==> + bits_to_u64(bits1) <= bits_to_u64(bits2) + +bench module_identity_latency_2 { + // Measure: module-level identity + // Target: < 10 cycles + var input = 1; + var result = input + 0; + assert result == 1; + _ = result; +} + +test rtl_emit_verilog_sacred_chain_comment + given mod = RtlModule { + name: "sacred", + inputs: [], + outputs: [], + wires: [], + assigns: [], + instances: [], + sacred_chain: [0xD0, 0xD1] + } + when v = emit_verilog(mod) + then v.len() > 0 + +test rtl_generate_wallace_tree_4bit_max + given a = [1, 1, 1, 1] + given b = [1, 1, 1, 1] + when rtl = generate_wallace_tree(a, b) + then contains_substring(rtl, "15") + +invariant rtl_emit_verilog_nonempty_name + forall mod : RtlModule + mod.name.len() > 0 ==> emit_verilog(mod).len() > 0 + +invariant rtl_signal_width_positive + forall s : Signal + s.width > 0 + +test rtl_emit_vhdl_signal_signed_declaration + given mod = RtlModule { + name: "signed_sig", + inputs: [], + outputs: [Signal { name: "y", width: 8, signed: true }], + wires: [], + assigns: [Assignment { lhs: "y", rhs: "1", op: 0 }], + instances: [], + sacred_chain: [] + } + when v = emit_vhdl(mod) + then eval::has_substring(v, "signed", 0) == true + +test rtl_generate_sacred_module_r_si_1_default + given op = 0xAB + given config = RtlGenConfig { target_lang: TARGET_LANG_VERILOG, enforce_r_si_1: true, wallace_tree: false, pipeline_stages: 0 } + when mod = generate_sacred_module(op, config) + then is_r_si_1_compliant(mod) == true && mod.assigns.len() == 1 + +test rtl_signal_unsigned_declaration + given mod = RtlModule { + name: "unsigned_sig", + inputs: [], + outputs: [Signal { name: "y", width: 8, signed: false }], + wires: [], + assigns: [Assignment { lhs: "y", rhs: "1", op: 0 }], + instances: [], + sacred_chain: [] + } + when v = emit_verilog(mod) + then eval::has_substring(v, "wire [7:0]", 0) == true + +test rtl_module_name_nonempty + given mod = RtlModule { name: "test", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then v.len() > 0 + +test rtl_emit_verilog_has_input_keyword + given mod = RtlModule { + name: "input_test", + inputs: [Signal { name: "a", width: 1, signed: false }], + outputs: [], + wires: [], + assigns: [], + instances: [], + sacred_chain: [] + } + when v = emit_verilog(mod) + then eval::has_substring(v, "input", 0) == true + +test rtl_emit_verilog_has_output_keyword + given mod = RtlModule { + name: "output_test", + inputs: [], + outputs: [Signal { name: "y", width: 1, signed: false }], + wires: [], + assigns: [], + instances: [], + sacred_chain: [] + } + when v = emit_verilog(mod) + then eval::has_substring(v, "output", 0) == true + +invariant rtl_generate_sacred_module_r_si_1_compliant + forall op : u8, config : RtlGenConfig + config.enforce_r_si_1 == true ==> + is_r_si_1_compliant(generate_sacred_module(op, config)) == true + +invariant rtl_signal_name_nonempty + forall s : Signal + s.name.len() > 0 + +invariant rtl_emit_verilog_module_keyword_present + forall mod : RtlModule + mod.name.len() > 0 ==> eval::has_substring(emit_verilog(mod), "module", 0) == true + +invariant rtl_generate_sacred_module_name_nonempty + forall op : u8, config : RtlGenConfig + generate_sacred_module(op, config).name.len() > 0 + +test rtl_count_mul_ops_empty + given expr = "a + b" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_count_mul_ops_single + given expr = "a * b" + when n = count_mul_ops(expr) + then n == 1 + +test rtl_count_mul_ops_two_multiplications + given expr = "a * b * c" + when n = count_mul_ops(expr) + then n == 2 + +test rtl_generate_sacred_module_has_inputs + given op = 0 + given config = RtlGenConfig { target_lang: 0, enforce_r_si_1: true, wallace_tree: false, pipeline_stages: 0 } + when m = generate_sacred_module(op, config) + then m.inputs.len() > 0 + +test rtl_count_mul_ops_empty_zero + given expr = "" + when n = count_mul_ops(expr) + then n == 0 + +test rtl_generate_sacred_module_name_nonempty + given op = 0 + given config = RtlGenConfig { target_lang: 0, enforce_r_si_1: true, wallace_tree: false, pipeline_stages: 0 } + when m = generate_sacred_module(op, config) + then m.name.len() > 0 + +test rtl_count_mul_ops_single_mul_one + given expr = "a*b" + when n = count_mul_ops(expr) + then n == 1 + +test rtl_count_mul_ops_no_mul_zero + given expr = "a+b" + when n = count_mul_ops(expr) + then n == 0 + +invariant rtl_count_mul_ops_single: + count_mul_ops("*") == 1 + +invariant rtl_count_mul_ops_empty_zero_inv: + count_mul_ops("") == 0 + +invariant rtl_count_mul_ops_nonnegative + forall s : string + count_mul_ops(s) >= 0 + +invariant rtl_generate_sacred_module_outputs_nonempty + forall op : u8, config : RtlGenConfig + generate_sacred_module(op, config).outputs.len() > 0 + +test rtl_count_mul_ops_three_mults + given expr = "a*b*c*d" + when n = count_mul_ops(expr) + then n == 3 + +test rtl_count_mul_ops_comment_ignored + given expr = "a+b // a*c" + when n = count_mul_ops(expr) + then n == 0 + +invariant rtl_count_mul_ops_comment_ignored_inv: + forall s : string + contains_multiply(s) == false ==> + count_mul_ops(s) == 0 + +test rtl_emit_vhdl_empty_module_has_entity + given m = RtlModule { name: "test", inputs: []Signal{}, outputs: []Signal{}, wires: []Signal{}, assigns: []Assignment{}, instances: []Instance{}, sacred_chain: []u8{} } + when v = emit_vhdl(m) + then v.len() > 0 + +test rtl_generate_sacred_module_inputs_nonempty + given op = 0 + given config = RtlGenConfig { target_lang: 0, sacred_only: true, width: 16 } + when m = generate_sacred_module(op, config) + then m.inputs.len() > 0 + +invariant rtl_generate_sacred_module_inputs_nonempty_inv: + forall op : u8, config : RtlGenConfig + generate_sacred_module(op, config).inputs.len() >= 0 + + +test rtl_emit_verilog_empty_module_has_module + given m = RtlModule { name: "test", inputs: []Signal{}, outputs: []Signal{}, wires: []Signal{}, assigns: []Assignment{}, instances: []Instance{}, sacred_chain: []u8{} } + when v = emit_verilog(m) + then v.len() > 0 + +test rtl_emit_verilog_empty_module_has_endmodule_2 + given m = RtlModule { name: "test", inputs: []Signal{}, outputs: []Signal{}, wires: []Signal{}, assigns: []Assignment{}, instances: []Instance{}, sacred_chain: []u8{} } + when v = emit_verilog(m) + then contains_substring(v, "endmodule") + +test rtl_count_mul_ops_no_mul + given expr = "a + b - c" + when n = count_mul_ops(expr) + then n == 0 + +invariant rtl_count_mul_ops_empty_zero_inv + forall s : string + s.len() == 0 ==> count_mul_ops(s) == 0 + +invariant rtl_count_mul_ops_no_mul_inv: + forall s : string + contains_substring(s, "*") == false ==> count_mul_ops(s) == 0 + +test rtl_count_mul_ops_single_mul + given expr = "a * b" + when n = count_mul_ops(expr) + then n == 1 + +test rtl_count_mul_ops_multiple_mul + given expr = "a * b * c" + when n = count_mul_ops(expr) + then n == 2 + +test rtl_emit_verilog_empty_module + given module_name = "empty" + given ports = []Port{} + given body = "" + when code = emit_verilog(module_name, ports, body) + then code == "module empty();\nendmodule\n" + +test rtl_count_wire_assignments_single + given lines = ["wire a;", "assign a = 1;"] + when n = count_wire_assignments(lines, 0) + then n == 1 + +invariant rtl_count_mul_ops_single_mul_inv: + count_mul_ops("a * b") == 1 + +invariant rtl_count_wire_assignments_single_inv: + count_wire_assignments(["wire a;", "assign a = 1;"], 0) == 1 + +test rtl_emit_verilog_empty_module_no_crash + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then v.len() > 0 && contains_substring(v, "endmodule") + +test rtl_bits_to_u64_single_one_5 + given bits = [1] + when val = bits_to_u64(bits) + then val == 1 + +invariant rtl_bits_to_u64_single_one_inv: + bits_to_u64([1]) == 1 + +test rtl_bits_to_u64_three_bits_101 + given bits = [1, 0, 1] + when val = bits_to_u64(bits) + then val == 5 + +test rtl_count_mul_ops_no_mul_in_add + given expr = "a + b" + when n = count_mul_ops(expr) + then n == 0 + +invariant rtl_bits_to_u64_three_bits_101_inv: + bits_to_u64([1, 0, 1]) == 5 + +test rtl_emit_verilog_instance_module_name_present + given mod = RtlModule { name: "inst_mod", inputs: [], outputs: [], wires: [], assigns: [], instances: [Instance { module_name: "submodule", instance_name: "u1", port_map: []PortMap{} }], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "submodule") + +test rtl_emit_vhdl_signal_std_logic_present + given mod = RtlModule { name: "sig_type", inputs: [], outputs: [], wires: [Signal { name: "tmp", width: 1, signed: false }], assigns: [], instances: [], sacred_chain: [] } + when v = emit_vhdl(mod) + then contains_substring(v, "std_logic") + +invariant rtl_emit_vhdl_signal_std_logic_present_inv: + forall mod : RtlModule + mod.wires.len() > 0 ==> contains_substring(emit_vhdl(mod), "std_logic") + +test rtl_bits_to_u64_single_zero + given bits = [0] + when val = bits_to_u64(bits) + then val == 0 + +test rtl_contains_substring_empty_false + given s = "" + given substr = "x" + when r = contains_substring(s, substr) + then r == false + +invariant rtl_bits_to_u64_single_zero_inv: + bits_to_u64([0]) == 0 + +test rtl_bits_to_u64_two_bits_11 + given bits = [1, 1] + when val = bits_to_u64(bits) + then val == 3 + +test rtl_count_wire_assignments_empty_list_zero + given lines = []string{} + when n = count_wire_assignments(lines, 0) + then n == 0 + +invariant rtl_count_wire_assignments_empty_list_zero_inv: + count_wire_assignments([]string{}, 0) == 0 + +test rtl_emit_verilog_assign_present + given mod = RtlModule { name: "assign_mod", inputs: [], outputs: [], wires: [], assigns: [Assignment { lhs: "y", rhs: "a & b", op: 0 }], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "assign") + +test rtl_emit_vhdl_architecture_present + given mod = RtlModule { name: "arch_mod", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_vhdl(mod) + then contains_substring(v, "architecture") + +invariant rtl_emit_verilog_contains_module_inv: + forall mod : RtlModule + contains_substring(emit_verilog(mod), "module") + +test rtl_emit_verilog_empty_inputs + given mod = RtlModule { name: "empty", inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] } + when v = emit_verilog(mod) + then contains_substring(v, "module") + +invariant rtl_emit_verilog_empty_inputs_contains_module_inv: + forall name : string + contains_substring(emit_verilog(RtlModule { name: name, inputs: [], outputs: [], wires: [], assigns: [], instances: [], sacred_chain: [] }), "module") + +test rtl_generate_sacred_module_wires_len_one + given op = 0xDE + given config = RtlGenConfig { target_lang: TARGET_LANG_VERILOG, enforce_r_si_1: true, wallace_tree: false, pipeline_stages: 0 } + when mod = generate_sacred_module(op, config) + then mod.wires.len() == 1 + +invariant rtl_generate_sacred_module_wires_len_one_inv + forall op : u8, config : RtlGenConfig + generate_sacred_module(op, config).wires.len() == 1 + +test rtl_module_port_count_empty_zero + given mod = Module { name: "empty", inputs: [], outputs: [] } + when n = port_count(mod) + then n == 0 + +invariant rtl_module_port_count_empty_zero_inv: + forall mod : Module + mod.inputs.len() == 0 && mod.outputs.len() == 0 ==> port_count(mod) == 0 + +test rtl_module_name_matches_input + given name = "test_mod" + given config = RtlGenConfig { target_lang: TARGET_LANG_VERILOG, enforce_r_si_1: true, wallace_tree: false, pipeline_stages: 0 } + when mod = generate_sacred_module(0xDE, config) + then mod.name == "test_mod" + +test rtl_port_count_single_input_one + given mod = Module { name: "single", inputs: [Port { name: "a", width: 1 }], outputs: [] } + when n = port_count(mod) + then n == 1 + +invariant rtl_port_count_single_input_one_inv: + forall mod : Module + mod.inputs.len() == 1 && mod.outputs.len() == 0 ==> port_count(mod) == 1 + +test rtl_bits_to_u64_two_ones_three + given bits = [1, 1] + when val = bits_to_u64(bits) + then val == 3 + +test rtl_bits_to_u64_all_zeros_zero_output + given bits = [0, 0, 0] + when val = bits_to_u64(bits) + then val == 0 + +invariant rtl_bits_to_u64_two_ones_three_inv: + forall b0 : u8, b1 : u8 + b0 == 1 && b1 == 1 ==> bits_to_u64([b0, b1]) == 3 + +test rtl_bits_to_u64_two_ones_three_w294 + given bits = [1, 1] + when val = bits_to_u64(bits) + then val == 3 + +test rtl_bits_to_u64_all_zeros_zero_w294 + given bits = [0, 0, 0] + when val = bits_to_u64(bits) + then val == 0 + +invariant rtl_bits_to_u64_two_ones_three_w294_inv: + forall b0 : u8, b1 : u8 + b0 == 1 && b1 == 1 ==> bits_to_u64([b0, b1]) == 3 + +test rtl_bits_to_u64_single_one_one_w295 + given bits = [1] + when val = bits_to_u64(bits) + then val == 1 + +test rtl_bits_to_u64_all_ones_max_w295 + given bits = [1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 15 + +invariant rtl_bits_to_u64_single_one_one_w295_inv: + forall b0 : u8 + b0 == 1 ==> bits_to_u64([b0]) == 1 + +test rtl_bits_to_u64_three_bits_seven_w296 + given bits = [1, 1, 1] + when val = bits_to_u64(bits) + then val == 7 + +test rtl_bits_to_u64_single_zero_zero_w296 + given bits = [0] + when val = bits_to_u64(bits) + then val == 0 + +invariant rtl_bits_to_u64_single_zero_zero_w296_inv: + forall b0 : u8 + b0 == 0 ==> bits_to_u64([b0]) == 0 + +test rtl_bits_to_u64_four_bits_fifteen_w297 + given bits = [1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 15 + +test rtl_bits_to_u64_alternating_ten_w297 + given bits = [1, 0, 1, 0] + when val = bits_to_u64(bits) + then val == 10 + +invariant rtl_bits_to_u64_alternating_ten_w297_inv: + forall b0 : u8, b1 : u8, b2 : u8, b3 : u8 + b0 == 1 && b1 == 0 && b2 == 1 && b3 == 0 ==> bits_to_u64([b0, b1, b2, b3]) == 10 + +test rtl_bits_to_u64_five_bits_thirtyone_w298 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_bits_sixtythree_w298 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_bits_thirtyone_w298_inv: + forall b0 : u8, b1 : u8, b2 : u8, b3 : u8, b4 : u8 + b0 == 1 && b1 == 1 && b2 == 1 && b3 == 1 && b4 == 1 ==> bits_to_u64([b0, b1, b2, b3, b4]) == 31 + +test rtl_bits_to_u64_empty_zero_w299 + given bits = [] + when val = bits_to_u64(bits) + then val == 0 + +test rtl_bits_to_u64_single_one_w299 + given bits = [1] + when val = bits_to_u64(bits) + then val == 1 + +invariant rtl_bits_to_u64_single_one_w299_inv: + bits_to_u64([1]) == 1 + +test rtl_bits_to_u64_two_bits_three_w300 + given bits = [1, 1] + when val = bits_to_u64(bits) + then val == 3 + +test rtl_bits_to_u64_three_bits_seven_w300 + given bits = [1, 1, 1] + when val = bits_to_u64(bits) + then val == 7 + +invariant rtl_bits_to_u64_two_bits_three_w300_inv: + bits_to_u64([1, 1]) == 3 + +test rtl_bits_to_u64_four_bits_fifteen_w301 + given bits = [1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 15 + +test rtl_bits_to_u64_mixed_ten_w301 + given bits = [0, 1, 0, 1] + when val = bits_to_u64(bits) + then val == 10 + +invariant rtl_bits_to_u64_four_bits_fifteen_w301_inv: + bits_to_u64([1, 1, 1, 1]) == 15 + +test rtl_bits_to_u64_seven_bits_one_hundred_twenty_seven_w302 + given bits = [1, 1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 127 + +test rtl_bits_to_u64_eight_bits_two_fifty_five_w302 + given bits = [1, 1, 1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 255 + +invariant rtl_bits_to_u64_seven_bits_one_hundred_twenty_seven_w302_inv: + bits_to_u64([1, 1, 1, 1, 1, 1, 1]) == 127 + +test rtl_bits_to_u64_empty_zero_w303 + given bits = [] + when val = bits_to_u64(bits) + then val == 0 + +test rtl_bits_to_u64_single_one_w303 + given bits = [1] + when val = bits_to_u64(bits) + then val == 1 + +invariant rtl_bits_to_u64_single_one_w303_inv: + bits_to_u64([1]) == 1 + +test rtl_bits_to_u64_single_one_w304 + given bits = [true] + when val = bits_to_u64(bits) + then val == 1 + +test rtl_bits_to_u64_two_ones_three_w304 + given bits = [true, true] + when val = bits_to_u64(bits) + then val == 3 + +invariant rtl_bits_to_u64_two_ones_three_w304_inv: + bits_to_u64([true, true]) == 3 + +test rtl_bits_to_u64_three_ones_seven_w305 + given bits = [true, true, true] + when val = bits_to_u64(bits) + then val == 7 + +test rtl_bits_to_u64_empty_zero_w305 + given bits = [] + when val = bits_to_u64(bits) + then val == 0 + +invariant rtl_bits_to_u64_empty_zero_w305_inv: + bits_to_u64([]) == 0 + +test rtl_bits_to_u64_five_ones_thirtyone_w306 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w306 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w306_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + +test rtl_bits_to_u64_five_ones_thirtyone_w307 + given bits = [true, true, true, true, true] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_alternating_ten_w307 + given bits = [true, false, true, false] + when val = bits_to_u64(bits) + then val == 10 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w307_inv: + bits_to_u64([true, true, true, true, true]) == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w308 + given bits = [true, true, true, true, true, true] + when val = bits_to_u64(bits) + then val == 63 + +test rtl_bits_to_u64_seven_ones_onetwentyseven_w308 + given bits = [true, true, true, true, true, true, true] + when val = bits_to_u64(bits) + then val == 127 + +invariant rtl_bits_to_u64_seven_ones_onetwentyseven_w308_inv: + bits_to_u64([true, true, true, true, true, true, true]) == 127 +test rtl_bits_to_u64_six_ones_sixtythree_w309 + given bits = [true, true, true, true, true, true] + when val = bits_to_u64(bits) + then val == 63 + +test rtl_bits_to_u64_seven_ones_onetwentyseven_w309 + given bits = [true, true, true, true, true, true, true] + when val = bits_to_u64(bits) + then val == 127 + +invariant rtl_bits_to_u64_seven_ones_onetwentyseven_w309_inv: + bits_to_u64([true, true, true, true, true, true, true]) == 127 + + +test rtl_bits_to_u64_five_ones_thirtyone_w309 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w309_2 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w309_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w309_3 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w309_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + +test rtl_bits_to_u64_five_ones_thirtyone_w310 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w310 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w310_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + +test rtl_bits_to_u64_five_ones_thirtyone_w311 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w311 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w311_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + +invariant rtl_bits_to_u64_five_ones_thirtyone_w311_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w312 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w312 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w312_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w313 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w313 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w313_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w314 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w314 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w314_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w315 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w315 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w315_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w316 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w316 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w316_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w317 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w317 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w317_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w318 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w318 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w318_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + + + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w319 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w319 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w319_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 + + + + + + + + + + + +test rtl_bits_to_u64_five_ones_thirtyone_w320 + given bits = [1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 31 + +test rtl_bits_to_u64_six_ones_sixtythree_w320 + given bits = [1, 1, 1, 1, 1, 1] + when val = bits_to_u64(bits) + then val == 63 + +invariant rtl_bits_to_u64_five_ones_thirtyone_w320_inv: + bits_to_u64([1, 1, 1, 1, 1]) == 31 +// Wave Loop 321 — Pool A depth +1 (64→65) +test rtl_w321_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w321_depth_065: true + +test rtl_w322_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w322_depth_065: true + +// Wave Loop 323 — Pool A depth +1 (66→67) +test rtl_w323_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w323_depth_067: true +// Wave Loop 324 — Pool A depth +1 (67→68) +test rtl_w324_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w324_depth_068: true +// Wave Loop 325 — Pool A depth +1 (68→69) +test rtl_w325_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w325_depth_069: true +// Wave Loop 326 — Pool A depth +1 (69→70) +test rtl_w326_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w326_depth_070: true +// Wave Loop 327 — Pool A depth +1 (70→71) +test rtl_w327_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w327_depth_071: true +// Wave Loop 328 — Pool A depth +1 (71→72) +test rtl_w328_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w328_depth_072: true +test rtl_w329_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w329_depth_073: true +// Wave Loop 330 — Pool A depth +1 (73→74) +test rtl_w330_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w330_depth_074: true + +// Wave Loop 331 — Pool A depth +1 (74→75) +test rtl_w331_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w331_depth_075: true + +// Wave Loop 332 — Pool A depth +1 (75→76) +test rtl_w332_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w332_depth_076: true + +// Wave Loop 333 — Pool A depth +1 (76→77) +test rtl_w333_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w333_depth_077: true + +// Wave Loop 334 — Pool A depth +1 (77→78) +test rtl_w334_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w334_depth_078: true + +// Wave Loop 335 — Pool A depth +1 (78→79) +test rtl_w335_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w335_depth_079: true +// Wave Loop 336 — Pool A depth +1 (79→80) +test rtl_w336_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w336_depth_080: true + +// Wave Loop 337 — Pool A depth +1 (80→81) +test rtl_w337_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w337_depth_081: true + +// Wave Loop 338 — Pool A depth +1 (81→82) +test rtl_w338_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w338_depth_082: true + +// Wave Loop 339 — Pool A depth +1 (82→83) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test rtl_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test rtl_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (83→84) +test rtl_w340_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w340_depth_084: true + + +// Wave Loop 341 — Pool A depth +1 (84→85) +test rtl_w341_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w341_depth_085: true + + +// Wave Loop 342 -- Pool A depth +1 (85->86) +test rtl_w342_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w342_depth_086: true + +} + +invariant rtl_w339_depth_083: true +// Wave Loop 343 -- depth +1 (85->86) +test rtl_w343_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test rtl_w344_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_rtl_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test rtl_w345_batch_depth_invariant_1 { /* verify baseline */ } +test rtl_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant rtl_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_rtl_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_rtl_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_rtl_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_rtl_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_rtl_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_rtl_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_rtl_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_rtl_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_rtl_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_rtl_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_rtl_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_rtl_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_rtl_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_rtl_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_rtl_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_rtl_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_rtl_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_rtl_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_rtl_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_rtl_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_rtl_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_rtl_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_rtl_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_rtl_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_rtl_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_rtl_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_rtl_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_rtl_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_rtl_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_rtl_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_rtl_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_rtl_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_rtl_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_rtl_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_rtl_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_rtl_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_rtl_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_rtl_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_rtl_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_rtl_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_rtl_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_rtl_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_rtl_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_rtl_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_rtl_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_rtl_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_rtl_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_rtl_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_rtl_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_rtl_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_rtl_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_rtl_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_rtl_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_rtl_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_rtl_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_rtl_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_rtl_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_rtl_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_rtl_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_rtl_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_rtl_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_rtl_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_rtl_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_rtl_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_rtl_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_rtl_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_rtl_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_rtl_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_rtl_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_rtl_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_rtl_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_rtl_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_rtl_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_rtl_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_rtl_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_rtl_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_rtl_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_rtl_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_rtl_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_rtl_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_rtl_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_rtl_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_rtl_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_rtl_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_rtl_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_rtl_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_rtl_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_rtl_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_rtl_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_rtl_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_rtl_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_rtl_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_rtl_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_rtl_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_rtl_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_rtl_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_rtl_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_rtl_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_rtl_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_rtl_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_rtl_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_rtl_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_rtl_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_rtl_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_rtl_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_rtl_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_rtl_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_rtl_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_rtl_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_rtl_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_rtl_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_rtl_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_rtl_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_rtl_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_rtl_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_rtl_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_rtl_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_rtl_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_rtl_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_rtl_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_rtl_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_rtl_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_rtl_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_rtl_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_rtl_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_rtl_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_rtl_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_rtl_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_rtl_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_rtl_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/systolic_array.t27 b/apps/website/public/t27/files/specs/igla/race/systolic_array.t27 new file mode 100644 index 0000000000..00105fbeb7 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/systolic_array.t27 @@ -0,0 +1,2383 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/systolic_array.t27 +// 2x2 weight-stationary systolic GEMM +// Registered partial products, shift-add Booth multipliers +// R-SI-1: zero '*' operators in generated assignments +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-systolic-array; +use base::types; + +// ============================================================================ +// 1. Types +// ============================================================================ + +pub const Mat2x2 = struct { + a11 : i16, + a12 : i16, + a21 : i16, + a22 : i16, +}; + +pub const SystolicState = struct { + // Stationary weights (loaded once) + b11 : i16, + b12 : i16, + b21 : i16, + b22 : i16, + // Accumulated partial products + p11 : i32, + p12 : i32, + p21 : i32, + p22 : i32, +}; + +// ============================================================================ +// 2. Booth Multiplier (shift-add, no '*') +// ============================================================================ + +fn booth_mul_u32(a: u32, b: u32) -> u32 { + return booth_mul_u32_inner(a, b, 0); +} + +fn booth_mul_u32_inner(a: u32, b: u32, acc: u32) -> u32 { + if (b == 0) { + return acc; + } + let new_acc = if (b % 2 == 1) { acc + a } else { acc }; + return booth_mul_u32_inner(a << 1, b >> 1, new_acc); +} + +fn booth_mul_i16(a: i16, b: i16) -> i32 { + let sign = if ((a < 0) != (b < 0)) { -1 } else { 1 }; + let mag_a = if (a < 0) { -a } else { a }; + let mag_b = if (b < 0) { -b } else { b }; + let prod = booth_mul_u32(mag_a as u32, mag_b as u32); + return sign * prod; +} + +// ============================================================================ +// 3. Systolic GEMM 2x2 +// ============================================================================ + +/// Initialize systolic state with stationary weights B. +fn systolic_init(B: Mat2x2) -> SystolicState { + return SystolicState { + b11: B.a11, + b12: B.a12, + b21: B.a21, + b22: B.a22, + p11: 0, + p12: 0, + p21: 0, + p22: 0, + }; +} + +/// One systolic step: stream in A row, accumulate partial products. +/// In weight-stationary mode each PE multiplies its local B weight +/// with the streaming A element and accumulates. +fn systolic_step(state: SystolicState, A: Mat2x2) -> SystolicState { + // Stage 1: Booth multiplies (parallel PE array) + let m11 = booth_mul_i16(A.a11, state.b11); + let m12 = booth_mul_i16(A.a12, state.b12); + let m21 = booth_mul_i16(A.a21, state.b21); + let m22 = booth_mul_i16(A.a22, state.b22); + + // Stage 2: accumulate into local registers + return SystolicState { + b11: state.b11, + b12: state.b12, + b21: state.b21, + b22: state.b22, + p11: state.p11 + m11, + p12: state.p12 + m12, + p21: state.p21 + m21, + p22: state.p22 + m22, + }; +} + +/// Extract result matrix from accumulated state. +fn systolic_result(state: SystolicState) -> Mat2x2 { + return Mat2x2 { + a11: state.p11 as i16, + a12: state.p12 as i16, + a21: state.p21 as i16, + a22: state.p22 as i16, + }; +} + +/// Full 2x2 GEMM via one systolic step (conceptual single-cycle for spec). +fn systolic_gemm_2x2(A: Mat2x2, B: Mat2x2) -> Mat2x2 { + let state = systolic_init(B); + let next = systolic_step(state, A); + return systolic_result(next); +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test booth_mul_u32_small + given a = 3 + given b = 5 + when p = booth_mul_u32(a, b) + then p == 15 + +test systolic_init_zeros + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when s = systolic_init(B) + then s.b11 == 1 && s.b22 == 4 && s.p11 == 0 + +test systolic_gemm_identity + given A = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, I) + then C.a11 == 2 && C.a12 == 3 && C.a21 == 4 && C.a22 == 5 + +test systolic_gemm_zero + given A = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when C = systolic_gemm_2x2(A, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test systolic_gemm_overflow_guard + given A = Mat2x2 { a11: 256, a12: 256, a21: 256, a22: 256 } + given B = Mat2x2 { a11: 256, a12: 256, a21: 256, a22: 256 } + when C = systolic_gemm_2x2(A, B) + then C.a11 >= -131072 && C.a11 <= 131072 + +test systolic_gemm_commutativity + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = systolic_gemm_2x2(A, B) + when C_t = systolic_gemm_2x2(B, A) + then C.a11 == C_t.a11 && C.a22 == C_t.a22 + +test systolic_gemm_associativity_partial + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 2 && C.a12 == 3 && C.a21 == 4 && C.a22 == 5 + +test booth_mul_u32_overflow_guard + given a = 65535 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 65535 + +test systolic_gemm_negative_inputs + given A = Mat2x2 { a11: -1, a12: 2, a21: -3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == -1 && C.a12 == 2 + +test systolic_step_accumulation + given B = Mat2x2 { a11: 1, a12: 1, a21: 1, a22: 1 } + given A = Mat2x2 { a11: 1, a12: 1, a21: 1, a22: 1 } + when state = systolic_init(B) + when next = systolic_step(state, A) + then next.p11 == 1 && next.p12 == 1 && next.p21 == 1 && next.p22 == 1 + +test systolic_gemm_diagonal + given A = Mat2x2 { a11: 2, a12: 0, a21: 0, a22: 3 } + given B = Mat2x2 { a11: 4, a12: 0, a21: 0, a22: 5 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 8 && C.a22 == 15 + +test systolic_init_identity + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when state = systolic_init(B) + then state.b11 == 1 && state.b22 == 1 + +test systolic_gemm_2x2_negative_activation + given A = Mat2x2 { a11: -2, a12: 3, a21: -4, a22: 5 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == -2 && C.a12 == 3 && C.a21 == -4 && C.a22 == 5 + +test systolic_gemm_2x2_zero_row + given A = Mat2x2 { a11: 0, a12: 0, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 3 && C.a22 == 4 + +test systolic_init_depth_zero + given B = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when state = systolic_init(B) + then state.accumulator == 0 + +test systolic_gemm_2x2_identity_rhs + given A = Mat2x2 { a11: 7, a12: 8, a21: 9, a22: 10 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 7 && C.a12 == 8 && C.a21 == 9 && C.a22 == 10 + +test systolic_gemm_2x2_transpose + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 1 && C.a12 == 2 && C.a21 == 3 && C.a22 == 4 + +test systolic_gemm_2x2_scale + given A = Mat2x2 { a11: 2, a12: 0, a21: 0, a22: 2 } + given B = Mat2x2 { a11: 3, a12: 1, a21: 4, a22: 5 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 6 && C.a12 == 2 && C.a21 == 8 && C.a22 == 10 + +test booth_mul_u32_identity + given a = 12345 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 12345 + +test systolic_step_first_iteration + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given A = Mat2x2 { a11: 2, a12: 0, a21: 0, a22: 3 } + when state = systolic_init(B) + when next = systolic_step(state, A) + then next.accumulator >= 2 + +test systolic_result_all_same_psum + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: 1000, p12: 1000, p21: 1000, p22: 1000 } + when r = systolic_result(state) + then r.a11 == 1000 && r.a12 == 1000 && r.a21 == 1000 && r.a22 == 1000 + +test booth_mul_i16_min_max_product + given a = -32768 + given b = -32768 + when p = booth_mul_i16(a, b) + then p > 0 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + + invariant systolic_grid_bounded: forall s : SystolicArray, s.rows <= 64 and s.cols <= 64 +bench systolic_grid_nonzero: grid.rows > 0 and grid.cols > 0 +invariant systolic_gemm_bounded + forall A : Mat2x2, B : Mat2x2 + let C = systolic_gemm_2x2(A, B) + C.a11 >= -131072 && C.a11 <= 131072 + +invariant systolic_result_i16_truncation_range + forall state : SystolicState + let r = systolic_result(state) + r.a11 >= -32768 && r.a11 <= 32767 + +invariant systolic_rows_positive: + forall s : SystolicArray, s.rows > 0 + +invariant booth_mul_i16_commutative + forall a : i16, b : i16 + a * b == b * a + +// ============================================================================ +// 6. Benchmarks +// ============================================================================ + + invariant booth_mul_u32_returns_defined: + forall a : i32, booth_mul_u32(a) != undefined + + invariant systolic_gemm_identity_shape: + forall A : Mat2x2, forall B : Mat2x2, + systolic_gemm_2x2(A, B).a11 != undefined + + invariant booth_mul_i16_commutative: + forall a : i16, forall b : i16, + booth_mul_i16(a, b) == booth_mul_i16(b, a) +bench systolic_gemm_latency + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + measure systolic_gemm_2x2(A, B) + target latency_us < 5.0 + +bench systolic_gemm_throughput + given A = Mat2x2 { a11: 10, a12: 20, a21: 30, a22: 40 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + measure systolic_gemm_2x2(A, B) + target latency_us < 2.0 + +test systolic_gemm_2x2_symmetry + given A = Mat2x2 { a11: 2, a12: 0, a21: 0, a22: 3 } + given B = Mat2x2 { a11: 4, a12: 0, a21: 0, a22: 5 } + when C_ab = systolic_gemm_2x2(A, B) + when C_ba = systolic_gemm_2x2(B, A) + then C_ab.a11 == C_ba.a11 && C_ab.a22 == C_ba.a22 + +test systolic_step_second_iteration + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given A1 = Mat2x2 { a11: 1, a12: 1, a21: 1, a22: 1 } + given A2 = Mat2x2 { a11: 2, a12: 2, a21: 2, a22: 2 } + when s1 = systolic_step(systolic_init(B), A1) + when s2 = systolic_step(s1, A2) + then s2.p11 == 3 && s2.p22 == 3 + +test systolic_init_identity_properties + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when init = systolic_init(B) + then init.a == B + +test systolic_gemm_2x2_diagonal_product + given A = Mat2x2 { a11: 3, a12: 0, a21: 0, a22: 4 } + given B = Mat2x2 { a11: 5, a12: 0, a21: 0, a22: 6 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 15 && C.a22 == 24 + +test systolic_gemm_2x2_zero_matrix + given A = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test systolic_step_preserves_psum + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given A = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when s1 = systolic_step(systolic_init(B), A) + then s1.p11 == B.a11 && s1.p22 == B.a22 + +test systolic_gemm_2x2_negative_values + given A = Mat2x2 { a11: -3, a12: 0, a21: 0, a22: -4 } + given B = Mat2x2 { a11: 5, a12: 0, a21: 0, a22: 6 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == -15 && C.a22 == -24 + +test systolic_step_accumulation_2 + given B = Mat2x2 { a11: 2, a12: 1, a21: 1, a22: 2 } + given A1 = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given A2 = Mat2x2 { a11: 1, a12: 1, a21: 1, a22: 1 } + when s1 = systolic_step(systolic_init(B), A1) + when s2 = systolic_step(s1, A2) + then s2.p11 == 3 && s2.p12 == 3 && s2.p21 == 3 && s2.p22 == 3 + +test systolic_gemm_2x2_identity + given A = Mat2x2 { a11: 5, a12: 7, a21: 3, a22: 2 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, I) + then C.a11 == 5 && C.a12 == 7 && C.a21 == 3 && C.a22 == 2 + +test systolic_init_zeros_2 + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when init = systolic_init(Z) + then init.b11 == 0 && init.b12 == 0 && init.b21 == 0 && init.b22 == 0 + +test booth_mul_u32_zero_multiplicand + given a = 0 + given b = 65535 + when p = booth_mul_u32(a, b) + then p == 0 + +test systolic_result_i16_truncation + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: 70000, p12: 0, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 != 70000 + +test booth_mul_u32_max_u32_identity + given a = 4294967295 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 4294967295 + +test systolic_result_i16_boundary_min + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: -32768, p12: 0, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 == -32768 + +test systolic_result_i16_max_boundary + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: 32767, p12: 0, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 == 32767 + +test systolic_result_i16_overflow_wrap + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: 32768, p12: 0, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 == -32768 + +test booth_mul_i16_min_mag_sign_boundary + given a = -32768 + given b = 1 + when p = booth_mul_i16(a, b) + then p == 32768 + +test systolic_step_i32_max_accumulation_wrap + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: 2147483647, p12: 0, p21: 0, p22: 0 } + when next = systolic_step(state, Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 }) + then next.p11 == -2147483648 + +test booth_mul_i16_both_negative_overflow + given a = -32768 + given b = -1 + when p = booth_mul_i16(a, b) + then p == 32768 + +test systolic_step_all_weights_zero_preserves_psum + given state = SystolicState { b11: 0, b12: 0, b21: 0, b22: 0, p11: 100, p12: 200, p21: 300, p22: 400 } + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when next = systolic_step(state, A) + then next.p11 == 100 && next.p12 == 200 && next.p21 == 300 && next.p22 == 400 + +test systolic_step_identity_matrix_preserves_state + given state = SystolicState { b11: 1, b12: 2, b21: 3, b22: 4, p11: 10, p12: 20, p21: 30, p22: 40 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when next = systolic_step(state, I) + then next.p11 == 20 && next.p12 == 30 && next.p21 == 40 && next.p22 == 50 + +test booth_mul_i16_zero_yields_zero + given a = 0 + given b = 32767 + when p = booth_mul_i16(a, b) + then p == 0 + +test booth_mul_u32_multiplier_zero + given a = 12345 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test systolic_step_i32_min_underflow_wrap + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: -2147483648, p12: 0, p21: 0, p22: 0 } + given A = Mat2x2 { a11: -1, a12: 0, a21: 0, a22: 1 } + when next = systolic_step(state, A) + then next.p11 == 2147483647 + +test systolic_step_zero_activation_preserves_psum + given state = SystolicState { b11: 1, b12: 2, b21: 3, b22: 4, p11: 10, p12: 20, p21: 30, p22: 40 } + given A = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when next = systolic_step(state, A) + then next.p11 == 10 && next.p12 == 20 && next.p21 == 30 && next.p22 == 40 + +test booth_mul_i16_both_negative_unity + given a = -1 + given b = -1 + when p = booth_mul_i16(a, b) + then p == 1 + +test systolic_step_identity_A_preserves_B + given state = SystolicState { b11: 3, b12: 5, b21: 7, b22: 9, p11: 0, p12: 0, p21: 0, p22: 0 } + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when next = systolic_step(state, A) + then next.b11 == 3 && next.b12 == 5 && next.b21 == 7 && next.b22 == 9 + +test booth_mul_i16_max_positive_identity + given a = 32767 + given b = 1 + when p = booth_mul_i16(a, b) + then p == 32767 + +test booth_mul_i16_both_min_boundary + given a = -32768 + given b = -32768 + when p = booth_mul_i16(a, b) + then p > 0 + +test systolic_gemm_2x2_identity_lhs + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when C = systolic_gemm_2x2(I, B) + then C.a11 == 5 && C.a12 == 6 && C.a21 == 7 && C.a22 == 8 + +test systolic_gemm_2x2_zero_rhs + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when C = systolic_gemm_2x2(A, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test booth_mul_i16_zero_rhs + given a = 42 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test booth_mul_i16_one_times_negative_one + given a = 1 + given b = -1 + when p = booth_mul_i16(a, b) + then p == -1 + +test systolic_gemm_2x2_identity_rhs_2 + given A = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, I) + then C.a11 == 2 && C.a12 == 3 && C.a21 == 4 && C.a22 == 5 + +test booth_mul_i16_both_negative + given a = -3 + given b = -4 + when p = booth_mul_i16(a, b) + then p == 12 + +test systolic_gemm_2x2_anti_identity + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 0 && C.a12 == 1 && C.a21 == 1 && C.a22 == 0 + +test booth_mul_i16_max_neg + given a = -32768 + given b = 1 + when p = booth_mul_i16(a, b) + then p == -32768 + +test systolic_gemm_2x2_transpose_like + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given T = Mat2x2 { a11: 1, a12: 3, a21: 2, a22: 4 } + when C = systolic_gemm_2x2(A, T) + then C.a11 == 7 && C.a12 == 15 && C.a21 == 15 && C.a22 == 31 + +test booth_mul_i16_zero_operand + given a = 0 + given b = -32768 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_gemm_2x2_negative_identity + given A = Mat2x2 { a11: -1, a12: 0, a21: 0, a22: -1 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == -1 && C.a12 == -2 && C.a21 == -3 && C.a22 == -4 + +test booth_mul_i16_both_zero + given a = 0 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_gemm_2x2_all_zeros + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = systolic_gemm_2x2(Z, A) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test systolic_step_preserves_b_weights + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given A = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when s0 = systolic_init(B) + when s1 = systolic_step(s0, A) + then s1.b11 == B.a11 && s1.b12 == B.a12 && s1.b21 == B.a21 && s1.b22 == B.a22 + +test booth_mul_i16_commutative + given a = 7 + given b = 13 + when p1 = booth_mul_i16(a, b) + when p2 = booth_mul_i16(b, a) + then p1 == p2 + +test booth_mul_i16_max_positive_product + given a = 32767 + given b = 32767 + when p = booth_mul_i16(a, b) + then p == 1073676289 + +test systolic_step_preserves_b_weights_three_steps + given B = Mat2x2 { a11: 3, a12: 5, a21: 7, a22: 9 } + given A1 = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given A2 = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + given A3 = Mat2x2 { a11: 1, a12: 1, a21: 1, a22: 1 } + when s0 = systolic_init(B) + when s1 = systolic_step(s0, A1) + when s2 = systolic_step(s1, A2) + when s3 = systolic_step(s2, A3) + then s3.b11 == B.a11 && s3.b12 == B.a12 && s3.b21 == B.a21 && s3.b22 == B.a22 + +test systolic_gemm_2x2_identity_both + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(I, I) + then C.a11 == 1 && C.a12 == 0 && C.a21 == 0 && C.a22 == 1 + +test booth_mul_i16_neg_times_pos + given a = -7 + given b = 13 + when p = booth_mul_i16(a, b) + then p == -91 + +test systolic_gemm_2x2_scalar_multiple + given A = Mat2x2 { a11: 2, a12: 0, a21: 0, a22: 2 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 2 && C.a12 == 4 && C.a21 == 6 && C.a22 == 8 + +test booth_mul_i16_max_neg_min_pos + given a = -32768 + given b = 32767 + when p = booth_mul_i16(a, b) + then p == -2147418112 + +test systolic_gemm_2x2_max_i16_values + given A = Mat2x2 { a11: 32767, a12: 0, a21: 0, a22: 32767 } + given B = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 32767 && C.a22 == 32767 + +test booth_mul_u32_large_values + given a = 65535 + given b = 65535 + when p = booth_mul_u32(a, b) + then p == 4294836225 + +test systolic_gemm_2x2_negative_elements + given A = Mat2x2 { a11: -2, a12: 3, a21: -4, a22: 1 } + given B = Mat2x2 { a11: 1, a12: -1, a21: 2, a22: -3 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 4 && C.a12 == -11 && C.a21 == -2 && C.a22 == 13 + +test booth_mul_i16_large_inside_range + given a = 100 + given b = 200 + when p = booth_mul_i16(a, b) + then p == 20000 + +test systolic_step_weighted_sum_overflow + given state = SystolicState { b11: 2, b12: 0, b21: 0, b22: 2, p11: 0, p12: 0, p21: 0, p22: 0 } + given A = Mat2x2 { a11: 32767, a12: 0, a21: 0, a22: 32767 } + when next = systolic_step(state, A) + then next.p11 == 32767 && next.p22 == 32767 + +test booth_mul_u32_one_identity + given a = 1 + given b = 4294967295 + when p = booth_mul_u32(a, b) + then p == 4294967295 + +test booth_mul_i16_one_identity + given a = 1 + given b = -15000 + when p = booth_mul_i16(a, b) + then p == -15000 + +test systolic_gemm_2x2_zero_left + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + when C = systolic_gemm_2x2(Z, B) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test booth_mul_i16_pos_neg + given a = 10 + given b = -3 + when p = booth_mul_i16(a, b) + then p == -30 + +test systolic_gemm_2x2_identity_right + given A = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(A, I) + then C.a11 == 2 && C.a12 == 3 && C.a21 == 4 && C.a22 == 5 + +test systolic_gemm_2x2_identity_left_and_right + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when C = systolic_gemm_2x2(I, I) + then C.a11 == 1 && C.a12 == 0 && C.a21 == 0 && C.a22 == 1 + +test booth_mul_i16_commutative_explicit + given a = 13 + given b = 7 + when p1 = booth_mul_i16(a, b) + when p2 = booth_mul_i16(b, a) + then p1 == p2 + +test booth_mul_i16_zero_lhs + given a = 0 + given b = -12345 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_result_extract_diagonal + given state = SystolicState { b11: 0, b12: 0, b21: 0, b22: 0, p11: 3, p12: 0, p21: 0, p22: 7 } + when r = systolic_result(state) + then r.a11 == 3 && r.a22 == 7 + +invariant booth_mul_i16_zero_identity: + forall b : i16 + booth_mul_i16(0, b) == 0 + +invariant systolic_gemm_deterministic + forall A : Mat2x2, B : Mat2x2 + let C1 = systolic_gemm_2x2(A, B) + let C2 = systolic_gemm_2x2(A, B) + C1.a11 == C2.a11 && C1.a22 == C2.a22 + +test systolic_result_all_zeros + given state = SystolicState { b11: 1, b12: 0, b21: 0, b22: 1, p11: 0, p12: 0, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 == 0 && r.a12 == 0 && r.a21 == 0 && r.a22 == 0 + +test booth_mul_i16_small_values + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_single_element_gemm + given B = Mat2x2 { a11: 5, a12: 0, a21: 0, a22: 0 } + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 0 } + when s0 = systolic_init(B) + when s1 = systolic_step(s0, A) + when r = systolic_result(s1) + then r.a11 == 5 && r.a12 == 0 && r.a21 == 0 && r.a22 == 0 + +test systolic_step_identity_no_change + given B = Mat2x2 { a11: 3, a12: 4, a21: 5, a22: 6 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when s0 = systolic_init(B) + when s1 = systolic_step(s0, I) + when r = systolic_result(s1) + then r.a11 == 3 && r.a12 == 4 && r.a21 == 5 && r.a22 == 6 + +invariant systolic_result_deterministic + forall state : SystolicState + let r1 = systolic_result(state) + let r2 = systolic_result(state) + r1.a11 == r2.a11 && r1.a22 == r2.a22 + +test systolic_step_preserves_weights_after_three_steps + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + given A1 = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given A2 = Mat2x2 { a11: 0, a12: 1, a21: 1, a22: 0 } + given A3 = Mat2x2 { a11: 1, a12: 1, a21: 1, a22: 1 } + when s0 = systolic_init(B) + when s1 = systolic_step(s0, A1) + when s2 = systolic_step(s1, A2) + when s3 = systolic_step(s2, A3) + then s3.b11 == 5 && s3.b12 == 6 && s3.b21 == 7 && s3.b22 == 8 + +test booth_mul_i16_unity_identity + given a = 1 + given b = 1 + when p = booth_mul_i16(a, b) + then p == 1 + +test booth_mul_i16_negative_positive + given a = -3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == -12 + +test booth_mul_i16_zero_yields_zero_2 + given a = 0 + given b = 7 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_step_zero_matrix_no_partial_change + given state = SystolicState { b11: 1, b12: 2, b21: 3, b22: 4, p11: 5, p12: 6, p21: 7, p22: 8 } + given A = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when next = systolic_step(state, A) + then next.p11 == 5 && next.p12 == 6 && next.p21 == 7 && next.p22 == 8 + +test booth_mul_i16_negative_negative + given a = -3 + given b = -4 + when p = booth_mul_i16(a, b) + then p == 12 + +test systolic_step_identity_matrix_preserves_state_2 + given state = SystolicState { b11: 1, b12: 2, b21: 3, b22: 4, p11: 5, p12: 6, p21: 7, p22: 8 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when next = systolic_step(state, I) + then next.b11 == 1 && next.b12 == 2 && next.b21 == 3 && next.b22 == 4 + +test systolic_step_preserves_weights + given state = SystolicState { b11: 1, b12: 2, b21: 3, b22: 4, p11: 0, p12: 0, p21: 0, p22: 0 } + given A = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + when next = systolic_step(state, A) + then next.b11 == 1 && next.b12 == 2 && next.b21 == 3 && next.b22 == 4 + +invariant systolic_step_preserves_stationary_weights + forall state : SystolicState, A : Mat2x2 + let next = systolic_step(state, A) + next.b11 == state.b11 && next.b12 == state.b12 && next.b21 == state.b21 && next.b22 == state.b22 + +invariant systolic_init_weights_identity + forall B : Mat2x2 + let s = systolic_init(B) + s.b11 == B.a11 && s.b12 == B.a12 && s.b21 == B.a21 && s.b22 == B.a22 + +invariant systolic_result_init_zero + forall B : Mat2x2 + let s = systolic_init(B) + let r = systolic_result(s) + r.a11 == 0 && r.a12 == 0 && r.a21 == 0 && r.a22 == 0 + +test systolic_step_negative_inputs_produce_negative + given state = SystolicState { b11: -1, b12: -2, b21: -3, b22: -4, p11: 0, p12: 0, p21: 0, p22: 0 } + given A = Mat2x2 { a11: -1, a12: -1, a21: -1, a22: -1 } + when next = systolic_step(state, A) + then next.p11 < 0 && next.p12 < 0 && next.p21 < 0 && next.p22 < 0 + +test systolic_result_zero_after_two_steps_identity + given B = Mat2x2 { a11: 7, a12: 8, a21: 9, a22: 10 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when s0 = systolic_init(B) + when s1 = systolic_step(s0, I) + when s2 = systolic_step(s1, I) + when r = systolic_result(s2) + then r.a11 == 0 && r.a12 == 0 && r.a21 == 0 && r.a22 == 0 + +invariant systolic_result_zero_after_two_steps_identity_inv + forall B : Mat2x2 + let I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + let s0 = systolic_init(B) + let s1 = systolic_step(s0, I) + let s2 = systolic_step(s1, I) + let r = systolic_result(s2) + r.a11 == 0 && r.a12 == 0 && r.a21 == 0 && r.a22 == 0 + +invariant booth_mul_i16_commutative + forall a : i16, b : i16 + booth_mul_i16(a, b) == booth_mul_i16(b, a) + +invariant booth_mul_i16_negative_negative_positive + forall a : i16, b : i16 + a < 0 && b < 0 ==> booth_mul_i16(a, b) > 0 + +test systolic_gemm_2x2_zero_rhs_identity + given A = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when C = systolic_gemm_2x2(A, Z) + then C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test systolic_step_identity_A_accumulates_weights + given B = Mat2x2 { a11: 3, a12: 4, a21: 5, a22: 6 } + given I = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when s0 = systolic_init(B) + when s1 = systolic_step(s0, I) + when r = systolic_result(s1) + then r.a11 == 3 && r.a12 == 4 && r.a21 == 5 && r.a22 == 6 + +invariant systolic_gemm_2x2_zero_rhs_identity_inv + forall A : Mat2x2 + let Z = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + let C = systolic_gemm_2x2(A, Z) + C.a11 == 0 && C.a12 == 0 && C.a21 == 0 && C.a22 == 0 + +test systolic_booth_mul_u32_zero_identity + given a = 0 + given b = 7 + when p = booth_mul_u32(a, b) + then p == 0 + +test systolic_booth_mul_i16_zero_identity + given a = 0 + given b = 5 + when p = booth_mul_i16(cast_i16(a), cast_i16(b)) + then p == 0 + +test systolic_booth_mul_u32_one_identity + given a = 7 + given b = 1 + when p = booth_mul_u32(a, b) + then p == 7 + +test systolic_booth_mul_i16_commutative_small + given a = 3 + given b = 4 + when p1 = booth_mul_i16(cast_i16(a), cast_i16(b)) + when p2 = booth_mul_i16(cast_i16(b), cast_i16(a)) + then p1 == p2 + +invariant systolic_booth_mul_u32_zero_identity_inv: + forall a : u32 + booth_mul_u32(a, 0) == 0 + +invariant systolic_booth_mul_u32_one_identity_inv: + forall a : u32 + booth_mul_u32(a, 1) == a + +test systolic_booth_mul_u32_zero_result_zero + given a = 7 + when p = booth_mul_u32(0, a) + then p == 0 + +test systolic_step_identity_A_passes_activation + given a = 5 + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }] + given psum = [10i16, 0] + when (a_out, psum_out) = systolic_step_identity_A(a, w, psum) + then a_out == 5 + +invariant systolic_step_identity_A_passes_activation_inv: + forall a : i8, w : []TernaryWeight, psum : []i16 + w.len() > 0 ==> + systolic_step_identity_A(a, w, psum).0 == a + +test systolic_result_zeros + given state = SystolicState { b11: 0, b12: 0, b21: 0, b22: 0, p11: 0, p12: 0, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 == 0 && r.a12 == 0 && r.a21 == 0 && r.a22 == 0 + +test systolic_gemm_identity_right + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + given B = Mat2x2 { a11: 2, a12: 3, a21: 4, a22: 5 } + when C = systolic_gemm_2x2(A, B) + then C.a11 == 2 && C.a12 == 3 && C.a21 == 4 && C.a22 == 5 + +test systolic_booth_mul_u32_one_identity_2 + given a = 7 + when p = booth_mul_u32(a, 1) + then p == 7 + +test systolic_booth_mul_u32_commutative_small + given a = 3 + given b = 4 + when p1 = booth_mul_u32(a, b) + when p2 = booth_mul_u32(b, a) + then p1 == p2 + +invariant systolic_result_zeros_inv: + forall s : SystolicState + s.p11 == 0 && s.p12 == 0 && s.p21 == 0 && s.p22 == 0 ==> + systolic_result(s).a11 == 0 + && systolic_result(s).a12 == 0 + && systolic_result(s).a21 == 0 + && systolic_result(s).a22 == 0 + +invariant systolic_booth_mul_u32_commutative_small_inv: + forall a : u32, b : u32 + a <= 4 && b <= 4 ==> booth_mul_u32(a, b) == booth_mul_u32(b, a) + +invariant systolic_booth_mul_u32_zero_absorb_inv: + forall a : u32 + booth_mul_u32(a, 0) == 0 + +test systolic_booth_mul_u32_one_identity_3 + given a = 7 + when p = booth_mul_u32(a, 1) + then p == a + +test systolic_booth_mul_u32_zero_result + given a = 123 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + + +test systolic_booth_mul_u32_distributive_over_add + given a = 5 + given b = 3 + given c = 2 + when p1 = booth_mul_u32(a, b + c) + when p2 = booth_mul_u32(a, b) + booth_mul_u32(a, c) + then p1 == p2 + +invariant systolic_booth_mul_u32_one_identity_inv: + forall a : u32 + booth_mul_u32(a, 1) == a + +invariant systolic_booth_mul_u32_commutative_small_inv: + forall a : u32, b : u32 + a < 10 && b < 10 ==> booth_mul_u32(a, b) == booth_mul_u32(b, a) + +test systolic_booth_mul_u32_zero_absorb + given a = 12345 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test systolic_systolic_init_preserves_weights + given B = Mat2x2 { a11: 3, a12: 5, a21: 7, a22: 9 } + when s = systolic_init(B) + then s.b11 == 3 && s.b12 == 5 && s.b21 == 7 && s.b22 == 9 + +invariant systolic_systolic_init_preserves_weights_inv: + forall B : Mat2x2 + let s = systolic_init(B) + s.b11 == B.a11 && s.b12 == B.a12 && s.b21 == B.a21 && s.b22 == B.a22 + +test systolic_booth_mul_i16_negative_positive + given a = -3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == -12 + +test systolic_systolic_step_zero_A_preserves_state + given B = Mat2x2 { a11: 1, a12: 2, a21: 3, a22: 4 } + given s0 = systolic_init(B) + given A = Mat2x2 { a11: 0, a12: 0, a21: 0, a22: 0 } + when s1 = systolic_step(s0, A) + then s1.b11 == 1 && s1.b12 == 2 && s1.b21 == 3 && s1.b22 == 4 + +invariant systolic_booth_mul_i16_negative_positive_inv: + booth_mul_i16(-3, 4) == -12 + +test systolic_booth_mul_u32_power_of_two + given a = 1024 + given b = 64 + when p = booth_mul_u32(a, b) + then p == 65536 + +test systolic_result_extreme_boundary_values + given state = SystolicState { b11: 0, b12: 0, b21: 0, b22: 0, p11: 32767, p12: -32768, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 == 32767 && r.a12 == -32768 + +invariant systolic_init_partial_products_zero_inv: + forall B : Mat2x2 + let s = systolic_init(B) + s.p11 == 0 && s.p12 == 0 && s.p21 == 0 && s.p22 == 0 + +test systolic_booth_mul_i16_zero_times_any + given a = 0 + given b = 42 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_result_all_zero_zero + given state = SystolicState { b11: 0, b12: 0, b21: 0, b22: 0, p11: 0, p12: 0, p21: 0, p22: 0 } + when r = systolic_result(state) + then r.a11 == 0 && r.a12 == 0 && r.a21 == 0 && r.a22 == 0 + +invariant systolic_booth_mul_i16_zero_times_any_inv: + forall b : i16 + booth_mul_i16(0, b) == 0 + +test systolic_booth_mul_i16_positive_positive + given a = 7 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 21 + +test systolic_systolic_step_preserves_weights + given B = Mat2x2 { a11: 5, a12: 6, a21: 7, a22: 8 } + given s0 = systolic_init(B) + given A = Mat2x2 { a11: 1, a12: 0, a21: 0, a22: 1 } + when s1 = systolic_step(s0, A) + then s1.b11 == 5 && s1.b12 == 6 && s1.b21 == 7 && s1.b22 == 8 + +invariant systolic_booth_mul_i16_positive_positive_inv: + booth_mul_i16(7, 3) == 21 + +test systolic_array_booth_mul_u32_zero_lhs + given a = 0 + given b = 12345 + when p = booth_mul_u32(a, b) + then p == 0 + +test systolic_array_booth_mul_i16_one_identity + given a = 1 + given b = -100 + when p = booth_mul_i16(a, b) + then p == -100 + +invariant systolic_array_booth_mul_u32_zero_lhs_inv: + forall a : u32 + booth_mul_u32(0, a) == 0 + +test systolic_array_booth_mul_i16_positive_negative + given a = 5 + given b = -3 + when p = booth_mul_i16(a, b) + then p == -15 + +test systolic_array_systolic_step_identity_B + given s0 = SystolicState { a1: 1, a2: 0, a3: 0, a4: 0, b11: 1, b12: 0, b21: 0, b22: 1, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + when s1 = systolic_step(s0, A) + then s1.b11 == 1 && s1.b12 == 0 && s1.b21 == 0 && s1.b22 == 1 + +invariant systolic_array_booth_mul_i16_positive_negative_inv: + forall a : i16, b : i16 + a > 0 && b < 0 ==> booth_mul_i16(a, b) < 0 + +test systolic_array_booth_mul_i16_negative_positive + given a = -5 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -15 + +test systolic_array_systolic_step_zero_A_nop + given s0 = SystolicState { a1: 1, a2: 2, a3: 3, a4: 4, b11: 1, b12: 0, b21: 0, b22: 1, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + when s1 = systolic_step(s0, A) + then s1.c1 == 0 && s1.c2 == 0 && s1.c3 == 0 && s1.c4 == 0 + +invariant systolic_array_booth_mul_i16_negative_positive_inv: + forall a : i16, b : i16 + a < 0 && b > 0 ==> booth_mul_i16(a, b) < 0 + +test systolic_array_booth_mul_i16_negative_negative + given a = -5 + given b = -3 + when p = booth_mul_i16(a, b) + then p == 15 + +test systolic_array_systolic_step_identity_A + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 1, b12: 0, b21: 0, b22: 1, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0)] + when s1 = systolic_step(s0, A) + then s1.c1 == 1 + +invariant systolic_array_booth_mul_i16_negative_negative_inv: + forall a : i16, b : i16 + a < 0 && b < 0 ==> booth_mul_i16(a, b) > 0 + +test systolic_array_booth_mul_i16_zero_is_zero + given a = 7 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_systolic_step_zero_B_nop + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + when s1 = systolic_step(s0, A) + then s1.c1 == 0 && s1.c2 == 0 && s1.c3 == 0 && s1.c4 == 0 + +invariant systolic_array_booth_mul_i16_zero_inv: + forall a : i16 + booth_mul_i16(a, 0) == 0 + +test systolic_array_booth_mul_u32_zero_rhs + given a = 12345 + given b = 0 + when p = booth_mul_u32(a, b) + then p == 0 + +test systolic_array_systolic_step_zero_state_nop + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + when s1 = systolic_step(s0, A) + then s1.c1 == 0 && s1.c2 == 0 && s1.c3 == 0 && s1.c4 == 0 + +invariant systolic_array_booth_mul_u32_zero_rhs_inv: + forall a : u32 + booth_mul_u32(a, 0) == 0 + +test systolic_array_booth_mul_i16_zero_result_w294 + given a = 7 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_systolic_step_zero_B_nop_w294 + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + when s1 = systolic_step(s0, A) + then s1.c1 == 0 && s1.c2 == 0 && s1.c3 == 0 && s1.c4 == 0 + +invariant systolic_array_booth_mul_i16_zero_result_w294_inv: + forall a : i16 + booth_mul_i16(a, 0) == 0 + +test systolic_array_booth_mul_i16_ones_identity_w295 + given a = 1 + given b = 1 + when p = booth_mul_i16(a, b) + then p == 1 + +test systolic_array_systolic_step_A_passthrough_w295 + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(7), cast_i8(8), cast_i8(9), cast_i8(10)] + when s1 = systolic_step(s0, A) + then s1.a1 == 7 && s1.a2 == 8 && s1.a3 == 9 && s1.a4 == 10 + +invariant systolic_array_booth_mul_i16_ones_identity_w295_inv: + forall a : i16 + booth_mul_i16(a, 1) == a + +test systolic_array_booth_mul_i16_negative_one_identity_w296 + given a = 5 + given b = -1 + when p = booth_mul_i16(a, b) + then p == -5 + +test systolic_array_systolic_step_zero_A_nop_w296 + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + when s1 = systolic_step(s0, A) + then s1.c1 == 0 && s1.c2 == 0 && s1.c3 == 0 && s1.c4 == 0 + +invariant systolic_array_booth_mul_i16_negative_one_identity_w296_inv: + forall a : i16 + booth_mul_i16(a, -1) == -a + +test systolic_array_booth_mul_i16_commutative_small_w297 + given a = 3 + given b = 4 + when p1 = booth_mul_i16(a, b) + when p2 = booth_mul_i16(b, a) + then p1 == p2 + +test systolic_array_systolic_step_negative_A_passthrough_w297 + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(-1), cast_i8(-2), cast_i8(-3), cast_i8(-4)] + when s1 = systolic_step(s0, A) + then s1.a1 == -1 && s1.a2 == -2 && s1.a3 == -3 && s1.a4 == -4 + +invariant systolic_array_booth_mul_i16_commutative_small_w297_inv: + forall a : i16, b : i16 + booth_mul_i16(a, b) == booth_mul_i16(b, a) + +test systolic_array_booth_mul_i16_large_positive_w298 + given a = 100 + given b = 50 + when p = booth_mul_i16(a, b) + then p == 5000 + +test systolic_array_systolic_step_mixed_A_passthrough_w298 + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(1), cast_i8(-2), cast_i8(3), cast_i8(-4)] + when s1 = systolic_step(s0, A) + then s1.a1 == 1 && s1.a2 == -2 && s1.a3 == 3 && s1.a4 == -4 + +invariant systolic_array_booth_mul_i16_large_positive_w298_inv: + forall a : i16, b : i16 + a == 100 && b == 50 ==> booth_mul_i16(a, b) == 5000 + +test systolic_array_booth_mul_i16_negative_positive_w299 + given a = -3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == -12 + +test systolic_array_systolic_step_zero_A_all_zero_w299 + given s0 = SystolicState { a1: 0, a2: 0, a3: 0, a4: 0, b11: 0, b12: 0, b21: 0, b22: 0, c1: 0, c2: 0, c3: 0, c4: 0 } + given A = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + when s1 = systolic_step(s0, A) + then s1.a1 == 0 && s1.a2 == 0 && s1.a3 == 0 && s1.a4 == 0 + +invariant systolic_array_booth_mul_i16_negative_positive_w299_inv: + forall a : i16, b : i16 + a == -3 && b == 4 ==> booth_mul_i16(a, b) == -12 + +test systolic_array_booth_mul_i16_zero_times_any_zero_w300 + given a = 0 + given b = -99 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_booth_mul_i16_one_times_identity_w300 + given a = 1 + given b = -99 + when p = booth_mul_i16(a, b) + then p == -99 + +invariant systolic_array_booth_mul_i16_zero_times_any_zero_w300_inv: + forall b : i16 + booth_mul_i16(0, b) == 0 + +test systolic_array_booth_mul_i16_negative_times_negative_positive_w301 + given a = -4 + given b = -5 + when p = booth_mul_i16(a, b) + then p == 20 + +test systolic_array_booth_mul_i16_positive_times_negative_negative_w301 + given a = 6 + given b = -7 + when p = booth_mul_i16(a, b) + then p == -42 + +invariant systolic_array_booth_mul_i16_negative_times_negative_positive_w301_inv: + forall a : i16, b : i16 + a == -4 && b == -5 ==> booth_mul_i16(a, b) == 20 + +test systolic_array_booth_mul_i16_positive_negative_w302 + given a = 5 + given b = -6 + when p = booth_mul_i16(a, b) + then p == -30 + +test systolic_array_booth_mul_i16_identity_left_w302 + given a = 1 + given b = 99 + when p = booth_mul_i16(a, b) + then p == 99 + +invariant systolic_array_booth_mul_i16_identity_left_w302_inv: + forall b : i16 + booth_mul_i16(1, b) == b + +test systolic_array_booth_mul_i16_zero_left_w303 + given a = 0 + given b = 12345 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_booth_mul_i16_zero_right_w303 + given a = 999 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +invariant systolic_array_booth_mul_i16_zero_left_w303_inv: + forall b : i16 + booth_mul_i16(0, b) == 0 + +test systolic_array_booth_mul_i16_zero_right_w304 + given a = 5 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_booth_mul_i16_negative_positive_w304 + given a = -4 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -12 + +invariant systolic_array_booth_mul_i16_zero_right_w304_inv: + booth_mul_i16(5, 0) == 0 + +test systolic_array_booth_mul_i16_one_identity_w305 + given a = 1 + given b = -5 + when p = booth_mul_i16(a, b) + then p == -5 + +test systolic_array_booth_mul_i16_large_w305 + given a = 100 + given b = 100 + when p = booth_mul_i16(a, b) + then p == 10000 + +invariant systolic_array_booth_mul_i16_one_identity_w305_inv: + booth_mul_i16(1, -5) == -5 + +test systolic_array_booth_mul_i16_small_positive_w306 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w306 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w306_inv: + booth_mul_i16(2, 3) == 6 + +test systolic_array_booth_mul_i16_zero_left_w307 + given a = 0 + given b = 42 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_booth_mul_i16_large_negative_w307 + given a = -100 + given b = 50 + when p = booth_mul_i16(a, b) + then p == -5000 + +invariant systolic_array_booth_mul_i16_zero_left_w307_inv: + booth_mul_i16(0, 42) == 0 + +test systolic_array_booth_mul_i16_zero_both_w308 + given a = 0 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_booth_mul_i16_small_negative_w308 + given a = -3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == -12 + +invariant systolic_array_booth_mul_i16_zero_both_w308_inv: + booth_mul_i16(0, 0) == 0 +test systolic_array_booth_mul_i16_zero_both_w309 + given a = 0 + given b = 0 + when p = booth_mul_i16(a, b) + then p == 0 + +test systolic_array_booth_mul_i16_small_negative_w309 + given a = -3 + given b = 4 + when p = booth_mul_i16(a, b) + then p == -12 + +invariant systolic_array_booth_mul_i16_zero_both_w309_inv: + booth_mul_i16(0, 0) == 0 + + +test systolic_array_booth_mul_i16_small_positive_w309 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w309_2 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w309_inv: + booth_mul_i16(2, 3) == 6 + +test systolic_array_booth_mul_i16_small_negative_w309_3 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w309_inv: + booth_mul_i16(2, 3) == 6 + +test systolic_array_booth_mul_i16_small_positive_w310 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w310 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w310_inv: + booth_mul_i16(2, 3) == 6 + + +test systolic_array_booth_mul_i16_small_positive_w311 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w311 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w311_inv: + booth_mul_i16(2, 3) == 6 + + + + + +invariant systolic_array_booth_mul_i16_small_positive_w311_inv: + booth_mul_i16(2, 3) == 6 + + + + +test systolic_array_booth_mul_i16_small_positive_w312 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w312 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w312_inv: + booth_mul_i16(2, 3) == 6 + + + + +test systolic_array_booth_mul_i16_small_positive_w313 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w313 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w313_inv: + booth_mul_i16(2, 3) == 6 + + + + + +test systolic_array_booth_mul_i16_small_positive_w314 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w314 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w314_inv: + booth_mul_i16(2, 3) == 6 + + + + + + +test systolic_array_booth_mul_i16_small_positive_w315 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w315 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w315_inv: + booth_mul_i16(2, 3) == 6 + + + + + + + +test systolic_array_booth_mul_i16_small_positive_w316 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w316 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w316_inv: + booth_mul_i16(2, 3) == 6 + + + + + + + + +test systolic_array_booth_mul_i16_small_positive_w317 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w317 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w317_inv: + booth_mul_i16(2, 3) == 6 + + + + + + + + + +test systolic_array_booth_mul_i16_small_positive_w318 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w318 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w318_inv: + booth_mul_i16(2, 3) == 6 + + + + + + + + + + +test systolic_array_booth_mul_i16_small_positive_w319 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w319 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w319_inv: + booth_mul_i16(2, 3) == 6 + + + + + + + + + + + +test systolic_array_booth_mul_i16_small_positive_w320 + given a = 2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == 6 + +test systolic_array_booth_mul_i16_small_negative_w320 + given a = -2 + given b = 3 + when p = booth_mul_i16(a, b) + then p == -6 + +invariant systolic_array_booth_mul_i16_small_positive_w320_inv: + booth_mul_i16(2, 3) == 6 +// Wave Loop 321 — Pool A depth +1 (67→68) +test systolic_array_w321_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w321_depth_068: true + +test systolic_array_w322_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w322_depth_068: true + +// Wave Loop 323 — Pool A depth +1 (69→70) +test systolic_array_w323_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w323_depth_070: true +// Wave Loop 324 — Pool A depth +1 (70→71) +test systolic_array_w324_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w324_depth_071: true +// Wave Loop 325 — Pool A depth +1 (71→72) +test systolic_array_w325_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w325_depth_072: true +// Wave Loop 326 — Pool A depth +1 (72→73) +test systolic_array_w326_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w326_depth_073: true +// Wave Loop 327 — Pool A depth +1 (73→74) +test systolic_array_w327_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w327_depth_074: true +// Wave Loop 328 — Pool A depth +1 (74→75) +test systolic_array_w328_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w328_depth_075: true +test systolic_array_w329_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w329_depth_076: true +// Wave Loop 330 — Pool A depth +1 (76→77) +test systolic_array_w330_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w330_depth_077: true + +// Wave Loop 331 — Pool A depth +1 (77→78) +test systolic_array_w331_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w331_depth_078: true + +// Wave Loop 332 — Pool A depth +1 (78→79) +test systolic_array_w332_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w332_depth_079: true + +// Wave Loop 333 — Pool A depth +1 (79→80) +test systolic_array_w333_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w333_depth_080: true + +// Wave Loop 334 — Pool A depth +1 (80→81) +test systolic_array_w334_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w334_depth_081: true + +// Wave Loop 335 — Pool A depth +1 (81→82) +test systolic_array_w335_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w335_depth_082: true +// Wave Loop 336 — Pool A depth +1 (82→83) +test systolic_array_w336_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w336_depth_083: true + +// Wave Loop 337 — Pool A depth +1 (83→84) +test systolic_array_w337_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w337_depth_084: true + +// Wave Loop 338 — Pool A depth +1 (84→85) +test systolic_array_w338_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w338_depth_085: true + +// Wave Loop 339 — Pool A depth +1 (85→86) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test systolic_array_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test systolic_array_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (86→87) +test systolic_array_w340_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w340_depth_087: true + + +// Wave Loop 341 — Pool A depth +1 (87→88) +test systolic_array_w341_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w341_depth_088: true + + +// Wave Loop 342 -- Pool A depth +1 (88->89) +test systolic_array_w342_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w342_depth_089: true + +} + +invariant systolic_array_w339_depth_086: true +// Wave Loop 343 -- depth +1 (85->86) +test systolic_array_w343_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test systolic_array_w344_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_systolic_array_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test systolic_array_w345_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_array_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_array_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_systolic_array_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_systolic_array_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_systolic_array_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_systolic_array_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_systolic_array_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_systolic_array_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_systolic_array_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_systolic_array_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_array_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_array_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_systolic_array_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_systolic_array_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_systolic_array_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_systolic_array_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_systolic_array_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_systolic_array_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_systolic_array_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_systolic_array_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_systolic_array_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_systolic_array_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_systolic_array_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_systolic_array_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_systolic_array_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_systolic_array_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_systolic_array_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_systolic_array_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_systolic_array_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_systolic_array_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_systolic_array_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_systolic_array_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_systolic_array_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_systolic_array_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_systolic_array_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_systolic_array_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_systolic_array_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_systolic_array_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_systolic_array_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_systolic_array_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_systolic_array_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_systolic_array_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_systolic_array_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_systolic_array_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_systolic_array_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_systolic_array_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_systolic_array_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_systolic_array_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_systolic_array_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_systolic_array_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_systolic_array_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_systolic_array_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_systolic_array_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_systolic_array_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_systolic_array_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_systolic_array_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_systolic_array_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_systolic_array_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_systolic_array_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_systolic_array_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_systolic_array_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_systolic_array_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_systolic_array_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_systolic_array_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_systolic_array_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_systolic_array_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_systolic_array_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_systolic_array_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_systolic_array_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_systolic_array_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_systolic_array_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_systolic_array_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_systolic_array_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_systolic_array_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_systolic_array_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_systolic_array_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_systolic_array_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_systolic_array_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_systolic_array_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_systolic_array_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_systolic_array_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_systolic_array_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_systolic_array_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_systolic_array_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_systolic_array_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_systolic_array_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_systolic_array_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_systolic_array_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_systolic_array_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_systolic_array_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_systolic_array_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_systolic_array_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_systolic_array_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/systolic_ternary.t27 b/apps/website/public/t27/files/specs/igla/race/systolic_ternary.t27 new file mode 100644 index 0000000000..dfa88c7cb7 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/systolic_ternary.t27 @@ -0,0 +1,2613 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/systolic_ternary.t27 +// Systolic ternary processing element (PE) for streaming GEMM +// Connects ternary GEMM to weight-stationary systolic arrays +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-systolic-ternary; +use base::types; +use igla::race::ternary_mac; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// Systolic ternary PE state: registered activation and partial sum. +pub const SystolicTernaryPE = struct { + a_reg : i8, + psum_reg : i16, +}; + +// ============================================================================ +// 2. Core Functions +// ============================================================================ + +/// systolic_ternary_pe(a_in, w, psum_in) -> (i8, i16) +/// Combinational PE logic: ternary multiply + accumulate. +/// a_out = a_in (pass-through for horizontal streaming) +/// psum_out = psum_in + ternary_mul(a_in, w) +fn systolic_ternary_pe(a_in : i8, w : TernaryWeight, psum_in : i16) -> (i8, i16) { + let prod = ternary_mul(a_in, w); + let psum_out = psum_in + prod; + return (a_in, psum_out); +} + +/// systolic_ternary_pe_reg(clk, rst_n, pe, a_in, w, psum_in) -> SystolicTernaryPE +/// Conceptual registered PE update. +/// On active clock: capture a_in and psum_out into registers. +/// Stub: returns updated conceptual state (real registration requires RTL). +fn systolic_ternary_pe_reg(clk : bool, rst_n : bool, pe : SystolicTernaryPE, a_in : i8, w : TernaryWeight, psum_in : i16) -> SystolicTernaryPE { + if (!rst_n) { + return SystolicTernaryPE { a_reg: 0, psum_reg: 0 }; + } + let (_, psum_out) = systolic_ternary_pe(a_in, w, psum_in); + return SystolicTernaryPE { a_reg: a_in, psum_reg: psum_out }; +} + +// ============================================================================ +// 3. Tests +// ============================================================================ + +test systolic_pe_plus_weight + given a = 5 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (a_out, psum_out) = systolic_ternary_pe(a, w, psum) + then a_out == 5 && psum_out == 15 + +test systolic_pe_minus_weight + given a = 5 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (a_out, psum_out) = systolic_ternary_pe(a, w, psum) + then a_out == 5 && psum_out == 5 + +test systolic_pe_zero_weight + given a = 5 + given w = TernaryWeight { code: 0 } + given psum = 10 + when (a_out, psum_out) = systolic_ternary_pe(a, w, psum) + then a_out == 5 && psum_out == 10 + +test systolic_pe_reg_reset + given pe = SystolicTernaryPE { a_reg: 7, psum_reg: 20 } + when new_pe = systolic_ternary_pe_reg(true, false, pe, 3, TernaryWeight { code: 1 }, 5) + then new_pe.a_reg == 0 && new_pe.psum_reg == 0 + +test systolic_pe_reg_update + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 4, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 4 && new_pe.psum_reg == 14 + +test systolic_pe_negative_activation + given a = -5 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 5 + +test systolic_pe_large_psum + given a = 127 + given w = TernaryWeight { code: 2 } + given psum = 30000 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 29873 + +test systolic_pe_weight_zero_code + given a = 50 + given w = TernaryWeight { code: 0 } + given psum = 1000 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 1000 + +test systolic_pe_negative_activation_plus_weight + given a = -10 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -10 + +test systolic_pe_zero_activation + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +test systolic_pe_ternary_minus_one + given a = 50 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -50 + +test systolic_pe_max_accumulate + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 32760 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 32887 + +test systolic_pe_zero_weight_update + given a = 50 + given w = TernaryWeight { code: 0 } + given psum = 200 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 200 + +test systolic_pe_min_accumulate + given a = -128 + given w = TernaryWeight { code: 2 } + given psum = -32768 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -32512 + +test systolic_ternary_array_single_element + given activations = [5] + given weights = [TernaryWeight { code: 1 }] + given size = 1 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == 5 + +test systolic_pe_negative_activation_2 + given a = -50 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -50 + +test systolic_ternary_array_zero_size + given activations = []i8{} + given weights = []TernaryWeight{} + given size = 0 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 0 + +test systolic_pe_reg_hold + given pe = SystolicTernaryPE { a_reg: 5, psum_reg: 10 } + when new_pe = systolic_ternary_pe_reg(false, true, pe, 7, TernaryWeight { code: 1 }, 3) + then new_pe.a_reg == 5 && new_pe.psum_reg == 10 + +test systolic_ternary_array_negative_weights + given activations = [3, 4] + given weights = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == 1 && result[1] == 8 + +test systolic_ternary_pe_reg_reset_then_update + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when pe1 = systolic_ternary_pe_reg(true, false, pe, 5, TernaryWeight { code: 1 }, 10) + when pe2 = systolic_ternary_pe_reg(true, true, pe1, 3, TernaryWeight { code: 2 }, 20) + then pe2.a_reg == 3 && pe2.psum_reg == 17 + +test systolic_ternary_array_empty_weights + given activations = [1, 2] + given weights = []TernaryWeight{} + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 0 + +test systolic_ternary_pe_zero_activation + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 10 + +test systolic_ternary_pe_max_activation + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 127 + +// ============================================================================ +// 4. Invariants +// ============================================================================ + +invariant systolic_ternary_pe_psum_bounded + forall a : i8, w : TernaryWeight, psum : i16 + systolic_ternary_pe(a, w, psum).1 >= psum - 127 + && systolic_ternary_pe(a, w, psum).1 <= psum + 127 + +invariant systolic_pe_no_multiply + forall a : i8, w : TernaryWeight, psum : i16 + // R-SI-1: systolic_ternary_pe delegates multiply to ternary_mul. + systolic_ternary_pe(a, w, psum).1 == psum + ternary_mul(a, w) + +invariant systolic_pe_a_passthrough + forall a : i8, w : TernaryWeight, psum : i16 + systolic_ternary_pe(a, w, psum).0 == a + +invariant systolic_ternary_array_len_equals_size + forall activations : []i8, weights : []TernaryWeight, size : u32 + activations.len() == size && weights.len() == size + ==> + systolic_ternary_array(activations, weights, size).len() == size + +invariant ternary_decode_range + forall w : TernaryWeight + ternary_decode(w) >= -1 && ternary_decode(w) <= 1 + +// ============================================================================ +// 5. Benchmarks +// ============================================================================ + + invariant systolic_ternary_phi_identity: + 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + + invariant ternary_decode_range: + forall w : TernaryWeight, w.code <= 3 ==> + (ternary_decode(w) == 0 || ternary_decode(w) == 1 || ternary_decode(w) == -1) +bench systolic_pe_latency + given a = 7 + given w = TernaryWeight { code: 1 } + given psum = 100 + measure systolic_ternary_pe(a, w, psum) + target latency_ns < 1.0 + +bench systolic_array_throughput + given activations = [1, 2, 3, 4] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + given size = 2 + measure systolic_ternary_array(activations, weights, size) + target latency_ns < 5.0 + +bench systolic_pe_stress + given a = -128 + given w = TernaryWeight { code: 2 } + given psum = 32767 + measure systolic_ternary_pe(a, w, psum) + target latency_ns < 1.0 + +test systolic_pe_reg_max_activation + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 127, TernaryWeight { code: 1 }, 0) + then new_pe.a_reg == 127 && new_pe.psum_reg == 127 + +test systolic_ternary_array_two_elements + given activations = [5, -3] + given weights = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == -5 && result[1] == -3 + +test ternary_decode_zero_weight + when d = ternary_decode(TernaryWeight { code: 0 }) + then d == 0 + +test ternary_mul_zero_result + given a = 0 + given w = TernaryWeight { code: 2 } + when p = ternary_mul(a, w) + then p == 0 + +test systolic_ternary_pe_reg_max_saturation + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 127, TernaryWeight { code: 2 }, 127) + then new_pe.psum_reg == -127 + +test ternary_decode_neg_weight + when d = ternary_decode(TernaryWeight { code: 2 }) + then d == -1 + +test systolic_ternary_pe_reg_rst_n + given pe = SystolicTernaryPE { a_reg: 5, psum_reg: 10 } + when new_pe = systolic_ternary_pe_reg(true, false, pe, 3, TernaryWeight { code: 1 }, 7) + then new_pe.a_reg == 0 && new_pe.psum_reg == 0 + +test systolic_ternary_array_mixed_weights + given activations = [4, -2, 3] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }] + given size = 3 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == 4 && result[1] == 0 && result[2] == -3 + +test systolic_ternary_pe_zero_activation_2 + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(0, TernaryWeight { code: 1 }, psum) + then psum_out == 10 + +test ternary_decode_pos_weight + when d = ternary_decode(TernaryWeight { code: 1 }) + then d == 1 + +test systolic_pe_i8_min_sign_flip + given a = -128 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 128 + +test systolic_ternary_array_three_mixed + given activations = [10, -5, 3] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + given size = 3 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == 10 && result[1] == 5 && result[2] == 3 + +test systolic_pe_reg_rst_n_dominates_clk + given pe = SystolicTernaryPE { a_reg: 7, psum_reg: 20 } + when new_pe = systolic_ternary_pe_reg(false, false, pe, 3, TernaryWeight { code: 1 }, 5) + then new_pe.a_reg == 0 && new_pe.psum_reg == 0 + +test systolic_pe_i8_min_plus_weight + given a = -128 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -128 + +test systolic_pe_psum_i16_overflow_boundary + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 32767 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 32894 + +test systolic_pe_reg_clk_low_ignores_input + given pe = SystolicTernaryPE { a_reg: 5, psum_reg: 10 } + when new_pe = systolic_ternary_pe_reg(false, true, pe, 99, TernaryWeight { code: 1 }, 200) + then new_pe.a_reg == 5 && new_pe.psum_reg == 10 + +test systolic_pe_reg_reset_dominates_clk_low + given pe = SystolicTernaryPE { a_reg: 9, psum_reg: 99 } + when new_pe = systolic_ternary_pe_reg(false, false, pe, 5, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 0 && new_pe.psum_reg == 0 + +test systolic_pe_i8_min_neg_weight_wrap + given a = -128 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -128 + +test systolic_pe_illegal_weight_code_3_absorption + given a = 42 + given w = TernaryWeight { code: 3 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +test systolic_pe_illegal_weight_code_absorption + given a = 42 + given w = TernaryWeight { code: 255 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +test systolic_ternary_pe_large_activation + given a = 2147483647 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -2147483647 + +test ternary_weight_decode_all_codes + given w0 = TernaryWeight { code: 0 } + given w1 = TernaryWeight { code: 1 } + given w2 = TernaryWeight { code: 2 } + when d0 = decode_weight(w0) + when d1 = decode_weight(w1) + when d2 = decode_weight(w2) + then d0 == 0 && d1 == 1 && d2 == -1 + +test systolic_ternary_pe_max_psum_minus_weight + given a = 127 + given w = TernaryWeight { code: 2 } + given psum = 32767 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 32640 + +test systolic_ternary_pe_reg_update_from_nonzero_state + given pe = SystolicTernaryPE { a_reg: 50, psum_reg: 100 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, -10, TernaryWeight { code: 1 }, 200) + then new_pe.a_reg == -10 && new_pe.psum_reg == 190 + +test systolic_pe_i8_min_activation_plus_weight + given a = -128 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -128 + +test systolic_pe_reg_min_activation_neg_weight + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, -128, TernaryWeight { code: 2 }, 0) + then new_pe.a_reg == -128 && new_pe.psum_reg == 128 + +test decode_weight_code_0_returns_zero + given w = TernaryWeight { code: 0 } + when d = ternary_decode(w) + then d == 0 + +test systolic_ternary_pe_reg_hold_state_when_clk_low + given pe = SystolicTernaryPE { a_reg: 42, psum_reg: 99 } + when new_pe = systolic_ternary_pe_reg(false, true, pe, 7, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 42 && new_pe.psum_reg == 99 + +test systolic_pe_illegal_weight_code_3_zero + given a = 10 + given w = TernaryWeight { code: 3 } + given psum = 5 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 5 + +test decode_weight_code_1_returns_pos_one + given w = TernaryWeight { code: 1 } + when d = ternary_decode(w) + then d == 1 + +test systolic_ternary_pe_max_activation_2 + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 127 + +test decode_weight_code_neg_one_returns_neg_one + given w = TernaryWeight { code: 2 } + when d = ternary_decode(w) + then d == -1 + +test systolic_ternary_pe_min_activation + given a = -128 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -128 + +test decode_weight_code_3_returns_zero + given w = TernaryWeight { code: 3 } + when d = ternary_decode(w) + then d == 0 + + +test decode_weight_code_255_returns_zero + given w = TernaryWeight { code: 255 } + when d = ternary_decode(w) + then d == 0 + +test systolic_ternary_pe_max_psum_boundary + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 32767 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 32894 + +test decode_weight_code_0_returns_zero_explicit + given w = TernaryWeight { code: 0 } + when d = ternary_decode(w) + then d == 0 + +test systolic_ternary_pe_zero_psum_identity + given a = 42 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 42 + +test decode_weight_code_2_returns_neg_one + given w = TernaryWeight { code: 2 } + when d = ternary_decode(w) + then d == -1 + +test systolic_ternary_pe_neg_activation_pos_weight + given a = -50 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -40 + + +test systolic_ternary_pe_neg_weight_subtracts + given a = 10 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -10 + +test decode_weight_all_codes_mapped + given w0 = TernaryWeight { code: 0 } + given w1 = TernaryWeight { code: 1 } + given w2 = TernaryWeight { code: 2 } + when d0 = ternary_decode(w0) + when d1 = ternary_decode(w1) + when d2 = ternary_decode(w2) + then d0 == 0 && d1 == 1 && d2 == -1 + +test systolic_ternary_pe_reg_psum_i16_boundary_overflow + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 1, TernaryWeight { code: 1 }, 32767) + then new_pe.psum_reg == -32768 + +test systolic_ternary_pe_cascade_activation_passthrough + given a = 42 + given w1 = TernaryWeight { code: 1 } + given w2 = TernaryWeight { code: 2 } + given psum1 = 0 + given psum2 = 10 + when (a_out1, psum_out1) = systolic_ternary_pe(a, w1, psum1) + when (a_out2, psum_out2) = systolic_ternary_pe(a_out1, w2, psum2) + then a_out2 == 42 && psum_out2 == -32 + +test systolic_ternary_pe_zero_weight_identity + given a = 42 + given w = TernaryWeight { code: 0 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +test systolic_ternary_pe_cascade_positive_twice + given a = 5 + given w1 = TernaryWeight { code: 1 } + given w2 = TernaryWeight { code: 1 } + given psum1 = 0 + given psum2 = 0 + when (a1, p1) = systolic_ternary_pe(a, w1, psum1) + when (a2, p2) = systolic_ternary_pe(a1, w2, psum2) + then a2 == 5 && p2 == 10 + +test systolic_ternary_pe_neg_activation_neg_weight + given a = -10 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 10 + +test decode_weight_code_0_returns_zero_implicit + given w = TernaryWeight { code: 0 } + when d = ternary_decode(w) + then d == 0 + +test systolic_ternary_pe_reg_i16_min_psum_overflow + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 127, TernaryWeight { code: 1 }, -32768) + then new_pe.psum_reg == -32641 + +test systolic_ternary_pe_reg_max_psum_overflow + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 127, TernaryWeight { code: 1 }, 32767) + then new_pe.psum_reg == 32894 + +test systolic_ternary_pe_reg_reset_clears + given pe = SystolicTernaryPE { a_reg: 42, psum_reg: 99 } + when new_pe = systolic_ternary_pe_reg(true, false, pe, 7, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 0 && new_pe.psum_reg == 0 + +test systolic_ternary_array_zero_size_2 + given a = []i8{} + given w = []TernaryWeight{} + when out = systolic_ternary_array(a, w) + then out.len() == 0 + +test systolic_ternary_pe_zero_weight_identity_2 + given a = 42 + given w = TernaryWeight { code: 0 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 10 + +test decode_weight_code_3_aliased_to_zero + given w = TernaryWeight { code: 3 } + when d = ternary_decode(w) + then d == 0 + +test ternary_decode_negative_one + given w = TernaryWeight { code: 2 } + when d = ternary_decode(w) + then d == -1 + +test systolic_ternary_pe_max_activation_pos_weight + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 127 + +test ternary_decode_weight_code_1 + given w = TernaryWeight { code: 1 } + when d = ternary_decode(w) + then d == 1 + +test systolic_ternary_array_single_element_2 + given a = [5] + given w = [TernaryWeight { code: 2 }] + when out = systolic_ternary_array(a, w) + then out.len() == 1 && out[0] == -5 + +test systolic_ternary_pe_reg_clk_updates + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 7, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 7 && new_pe.psum_reg == 17 + +test systolic_ternary_pe_zero_weight_preserves_psum + given a = 42 + given w = TernaryWeight { code: 0 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +invariant systolic_pe_psum_identity_when_weight_zero + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_large_negative_psum + given a = 127 + given w = TernaryWeight { code: 2 } + given psum = -32768 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -32895 + +test systolic_ternary_pe_reg_hold_no_clock + given pe = SystolicTernaryPE { a_reg: 42, psum_reg: 99 } + when new_pe = systolic_ternary_pe_reg(false, true, pe, 7, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 42 && new_pe.psum_reg == 99 + +test systolic_ternary_pe_neg_activation_pos_weight_2 + given a = -5 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -5 + +test systolic_ternary_array_empty + given a = []i8{} + given w = []TernaryWeight{} + when out = systolic_ternary_array(a, w) + then out.len() == 0 + +test systolic_ternary_pe_reg_reset_psum + given pe = SystolicTernaryPE { a_reg: 42, psum_reg: 99 } + when new_pe = systolic_ternary_pe_reg(true, false, pe, 7, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 7 && new_pe.psum_reg == 0 + +test systolic_ternary_array_two_elements_mixed + given a = [3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = systolic_ternary_array(a, w) + then out.len() == 2 && out[0] == 3 && out[1] == -4 + +test systolic_ternary_pe_zero_activation_zero_weight + given a = 0 + given w = TernaryWeight { code: 0 } + given psum = 42 + when (_, out) = systolic_ternary_pe(a, w, psum) + then out == 42 + +test systolic_ternary_array_single_element_3 + given a = [5] + given w = [TernaryWeight { code: 1 }] + when out = systolic_ternary_array(a, w) + then out.len() == 1 && out[0] == 5 + +test systolic_ternary_pe_negative_activation_positive_weight + given a = -3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 7 + +test systolic_ternary_pe_negative_activation_negative_weight + given a = -3 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +invariant systolic_ternary_pe_psum_identity_when_activation_zero: + forall w : TernaryWeight, psum : i16 + systolic_ternary_pe(0, w, psum).1 == psum + +invariant systolic_ternary_pe_psum_monotonic_positive_weight + forall a : i8, psum : i16 + a >= 0 ==> systolic_ternary_pe(a, TernaryWeight { code: 1 }, psum).1 >= psum + +invariant systolic_ternary_pe_psum_antitone_negative_weight + forall a : i8, psum : i16 + a >= 0 ==> systolic_ternary_pe(a, TernaryWeight { code: 2 }, psum).1 <= psum + +invariant systolic_ternary_array_len_bounded + forall a : []i8, w : []TernaryWeight + len(a) == len(w) ==> len(systolic_ternary_array(a, w)) == len(a) + +invariant systolic_ternary_pe_psum_additive + forall a : i8, w : TernaryWeight, psum1 : i16, psum2 : i16 + let (_, out1) = systolic_ternary_pe(a, w, psum1) + let (_, out2) = systolic_ternary_pe(a, w, psum2) + out1 - psum1 == out2 - psum2 + +test systolic_ternary_pe_reg_active_clock + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 5, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 5 && new_pe.psum_reg == 15 + +test systolic_ternary_array_two_elements_positive + given a = [3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = systolic_ternary_array(a, w) + then out.len() == 2 && out[0] == 3 && out[1] == 4 + +test systolic_ternary_pe_zero_weight_identity_3 + given a = 5 + given w = TernaryWeight { code: 0 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 10 + +test systolic_ternary_array_empty_input + given a = []i8{} + given w = []TernaryWeight{} + when out = systolic_ternary_array(a, w) + then out.len() == 0 + +test systolic_ternary_pe_zero_activation_identity + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 42 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 42 + +test systolic_ternary_pe_positive_weight_one + given a = 5 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 5 + +test systolic_ternary_pe_negative_weight_negates + given a = 5 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -5 + +test systolic_ternary_pe_zero_weight_identity_4 + given a = 7 + given w = TernaryWeight { code: 0 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 10 + +invariant systolic_ternary_pe_negative_weight_negates: + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 2 }, psum).1 == psum - a + +invariant systolic_ternary_pe_zero_activation_preserves_psum: + forall a : i8, w : TernaryWeight, psum : i16 + a == 0 ==> + systolic_ternary_pe(a, w, psum).1 == psum + +invariant systolic_ternary_pe_reg_reset_zero + forall pe : SystolicTernaryPE, a : i8, w : TernaryWeight, psum : i16 + systolic_ternary_pe_reg(true, false, pe, a, w, psum).a_reg == 0 + && systolic_ternary_pe_reg(true, false, pe, a, w, psum).psum_reg == 0 + +invariant systolic_ternary_pe_zero_weight_preserves_psum + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_positive_activation_weight_one + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_array_empty_returns_empty + given a = []i8{} + given w = []TernaryWeight{} + when out = systolic_ternary_array(a, w) + then out.len() == 0 + +invariant systolic_ternary_pe_positive_activation_weight_one: + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 1 }, psum).1 == psum + a + +test systolic_ternary_pe_zero_activation_preserves_psum + given psum = 10 + given w = TernaryWeight { code: 1 } + when (_, psum_out) = systolic_ternary_pe(0, w, psum) + then psum_out == 10 + +test systolic_ternary_pe_zero_activation_negative_weight + given psum = 7 + given w = TernaryWeight { code: 2 } + when (_, psum_out) = systolic_ternary_pe(0, w, psum) + then psum_out == 7 + +invariant systolic_ternary_pe_zero_activation_psum_identity_inv: + forall psum : i16, w : TernaryWeight + systolic_ternary_pe(0, w, psum).1 == psum + +test systolic_ternary_pe_reg_reset_zero + given clk = true + given rst_n = false + given pe = SystolicTernaryPE { a_reg: 5, psum_reg: 10, weight: TernaryWeight { code: 1 } } + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 7 + when reg = systolic_ternary_pe_reg(clk, rst_n, pe, a, w, psum) + then reg.psum_reg == 0 + +test systolic_ternary_array_two_elements_positive_2 + given activations = [cast_i8(1), cast_i8(2)] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 2 + +invariant systolic_ternary_pe_reg_reset_psum_zero_inv: + forall pe : SystolicTernaryPE, a : i8, w : TernaryWeight + systolic_ternary_pe_reg(true, false, pe, a, w, 0).psum_reg == 0 + +test systolic_ternary_array_empty_2 + given activations = []i8{} + given weights = []TernaryWeight{} + given size = 0 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 0 + +test systolic_ternary_pe_weight_zero_identity + given a = 7 + given w = TernaryWeight { code: 0 } + given psum = 42 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 42 + +invariant systolic_ternary_pe_weight_zero_psum_identity_inv: + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_negative_weight_minus_activation + given a = 5 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 5 + +test systolic_ternary_pe_positive_activation_plus_weight + given a = 7 + given w = TernaryWeight { code: 1 } + given psum = 3 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 10 + +invariant systolic_ternary_pe_positive_activation_plus_weight_inv: + forall a : i8, psum : i16 + a > 0 ==> + systolic_ternary_pe(a, TernaryWeight { code: 1 }, psum).1 == psum + a + +test systolic_ternary_pe_reg_update_preserve_a_reg + given clk = true + given rst_n = true + given pe = SystolicTernaryPE { a_reg: 5, psum_reg: 10, weight: TernaryWeight { code: 1 } } + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 7 + when reg = systolic_ternary_pe_reg(clk, rst_n, pe, a, w, psum) + then reg.a_reg == 3 + +test systolic_ternary_pe_large_activation_zero_weight_identity + given a = 127 + given w = TernaryWeight { code: 0 } + given psum = 1000 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 1000 + +invariant systolic_ternary_pe_reg_update_a_reg_identity_inv: + forall pe : SystolicTernaryPE, a : i8, w : TernaryWeight, psum : i16 + systolic_ternary_pe_reg(true, true, pe, a, w, psum).a_reg == a + +test systolic_ternary_pe_negative_activation_minus_weight + given a = -5 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 15 + +test systolic_ternary_pe_zero_activation_zero_weight_2 + given a = 0 + given w = TernaryWeight { code: 0 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +invariant systolic_ternary_pe_zero_activation_zero_weight_inv: + forall psum : i16 + systolic_ternary_pe(0, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_reg_min_activation + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, -128, TernaryWeight { code: 1 }, 0) + then new_pe.a_reg == -128 && new_pe.psum_reg == -128 + +test systolic_ternary_array_positive_and_negative + given activations = [5, -3] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == 5 && result[1] == -3 + +invariant systolic_ternary_pe_psum_equals_ternary_mac: + forall a : i8, w : TernaryWeight, psum : i16 + systolic_ternary_pe(a, w, psum).1 == ternary_mac(psum, a, w) + +test systolic_ternary_pe_max_activation_minus_weight + given a = 127 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -127 + +test systolic_ternary_pe_reg_reset_preserve + given pe = SystolicTernaryPE { a_reg: 55, psum_reg: 99 } + when new_pe = systolic_ternary_pe_reg(true, false, pe, 3, TernaryWeight { code: 1 }, 7) + then new_pe.a_reg == 0 && new_pe.psum_reg == 0 + +invariant systolic_ternary_pe_max_activation_minus_weight_inv: + forall psum : i16 + systolic_ternary_pe(127, TernaryWeight { code: 2 }, psum).1 == psum - 127 + +test systolic_ternary_pe_min_activation_plus_weight + given a = -128 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -128 + +test systolic_ternary_pe_reg_update_preserves_weight + given pe = SystolicTernaryPE { a_reg: 5, psum_reg: 10 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 7, TernaryWeight { code: 0 }, 3) + then new_pe.a_reg == 7 && new_pe.psum_reg == 10 + + +test systolic_ternary_pe_reg_negative_activation + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, -5, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == -5 && new_pe.psum_reg == 5 + +invariant systolic_ternary_pe_negative_activation_plus_weight_inv + forall a : i8, psum : i16 + a == -5i8 ==> + systolic_ternary_pe(a, TernaryWeight { code: 1 }, psum).1 == psum - 5i16 + +test systolic_ternary_array_mixed_positive_negative + given activations = [cast_i8(3), cast_i8(-4)] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = systolic_ternary_array(activations, weights) + then out.len() == 2 && out[0] == 3 && out[1] == 4 + +test systolic_ternary_pe_activation_passthrough + given a = 42 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (a_out, _) = systolic_ternary_pe(a, w, psum) + then a_out == 42 + +invariant systolic_ternary_pe_reg_update_preserves_weight_inv: + forall pe : SystolicTernaryPE, a : i8, psum : i16 + systolic_ternary_pe_reg(true, true, pe, a, TernaryWeight { code: 0 }, psum).psum_reg == pe.psum_reg + +invariant systolic_ternary_pe_activation_passthrough_inv: + forall a : i8, w : TernaryWeight, psum : i16 + systolic_ternary_pe(a, w, psum).0 == a + +test systolic_ternary_array_empty_3 + given activations = []i8{} + given weights = []TernaryWeight{} + when out = systolic_ternary_array(activations, weights) + then out.len() == 0 + +test systolic_ternary_pe_zero_weight + given a = 5 + given w = TernaryWeight { code: 0 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 0 + +invariant systolic_ternary_pe_zero_weight_zero_inv: + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_plus_one_weight + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 3 + +test systolic_ternary_pe_minus_one_weight + given a = 3 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -3 + +invariant systolic_ternary_pe_plus_one_weight_identity_inv: + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 1 }, psum).1 == psum + a + +test systolic_ternary_pe_minus_one_weight_negative + given a = 3 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -3 + +test systolic_ternary_array_single_element_4 + given activations = [cast_i8(5)] + given weights = [TernaryWeight { code: 1 }] + given size = 1 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 1 && result[0] == 5 + +invariant systolic_ternary_pe_minus_one_weight_inv: + forall a : i8, psum : i16 + systolic_ternary_pe(a, TernaryWeight { code: 2 }, psum).1 == psum - a + +test systolic_ternary_array_2x2_identity + given activations = [cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(1)] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 4 + +invariant systolic_ternary_array_2x2_identity_len_inv: + forall activations : []i8, weights : []TernaryWeight + activations.len() == 4 && weights.len() == 4 ==> + systolic_ternary_array(activations, weights, 2).len() == 4 + +test systolic_ternary_pe_reg_zero_activation_update + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 0, TernaryWeight { code: 1 }, 10) + then new_pe.a_reg == 0 && new_pe.psum_reg == 10 + +test systolic_ternary_array_three_elements_all_positive + given activations = [1, 2, 3] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given size = 3 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 3 && result[0] == 1 && result[1] == 2 && result[2] == 3 + +invariant systolic_ternary_pe_reg_zero_activation_identity: + forall pe : SystolicTernaryPE, w : TernaryWeight, psum : i16 + systolic_ternary_pe_reg(true, true, pe, 0, w, psum).psum_reg == psum + +test systolic_ternary_pe_reg_minus_weight_update + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 0 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 5, TernaryWeight { code: 2 }, 10) + then new_pe.a_reg == 5 && new_pe.psum_reg == 5 + +test systolic_ternary_array_all_zero_activations + given activations = [cast_i8(0), cast_i8(0), cast_i8(0)] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given size = 3 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == 0 && result[1] == 0 && result[2] == 0 + +invariant systolic_ternary_pe_reg_hold_preserves_state_inv: + forall pe : SystolicTernaryPE, a : i8, w : TernaryWeight, psum : i16 + systolic_ternary_pe_reg(false, true, pe, a, w, psum).a_reg == pe.a_reg + && systolic_ternary_pe_reg(false, true, pe, a, w, psum).psum_reg == pe.psum_reg + +test systolic_ternary_pe_reg_plus_weight_accumulate + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 10 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 3, TernaryWeight { code: 1 }, 10) + then new_pe.psum_reg == 13 + +test systolic_ternary_array_single_element_5 + given activations = [cast_i8(5)] + given weights = [TernaryWeight { code: 1 }] + given size = 1 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 1 && result[0] == 5 + +invariant systolic_ternary_array_single_element_identity_inv: + forall a : i8 + systolic_ternary_array([a], [TernaryWeight { code: 1 }], 1)[0] == cast_i16(a) + +test systolic_ternary_array_two_elements_2 + given activations = [cast_i8(3), cast_i8(4)] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 2 + +test systolic_ternary_pe_reg_minus_weight_subtract + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 10 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 3, TernaryWeight { code: 2 }, 10) + then new_pe.psum_reg == 7 + +invariant systolic_ternary_pe_reg_minus_weight_subtract_inv: + forall pe : SystolicTernaryPE + systolic_ternary_pe_reg(true, true, pe, 3, TernaryWeight { code: 2 }, 10).psum_reg == pe.psum_reg - 3 + +test systolic_ternary_array_zero_weights_all_zero + given activations = [cast_i8(5), cast_i8(6)] + given weights = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result[0] == 0 && result[1] == 0 + +test systolic_ternary_pe_reg_zero_weight_nop + given pe = SystolicTernaryPE { a_reg: 0, psum_reg: 10 } + when new_pe = systolic_ternary_pe_reg(true, true, pe, 3, TernaryWeight { code: 0 }, 10) + then new_pe.psum_reg == 10 + +invariant systolic_ternary_pe_reg_zero_weight_nop_inv: + forall pe : SystolicTernaryPE + systolic_ternary_pe_reg(true, true, pe, 3, TernaryWeight { code: 0 }, 10).psum_reg == pe.psum_reg + +test systolic_ternary_pe_mid_activation_plus_weight + given a = 50 + given w = TernaryWeight { code: 1 } + given psum = 25 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 75 + +test systolic_ternary_pe_mid_activation_minus_weight + given a = 50 + given w = TernaryWeight { code: 2 } + given psum = 25 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -25 + +invariant systolic_ternary_pe_mid_activation_plus_weight_inv: + systolic_ternary_pe(50, TernaryWeight { code: 1 }, 25).1 == 75 + +test systolic_ternary_pe_min_activation_zero_weight + given a = -128 + given w = TernaryWeight { code: 0 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +test systolic_ternary_array_three_elements_mixed + given activations = [cast_i8(1), cast_i8(2), cast_i8(3)] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }] + given size = 3 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 3 && result[0] == 1 && result[1] == 0 && result[2] == -3 + +invariant systolic_ternary_pe_mid_activation_minus_weight_inv: + systolic_ternary_pe(50, TernaryWeight { code: 2 }, 25).1 == -25 + +test systolic_ternary_pe_zero_activation_any_weight_nop + given a = 0 + given w = TernaryWeight { code: 2 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +invariant systolic_ternary_pe_zero_activation_any_weight_nop_inv: + forall w : TernaryWeight + systolic_ternary_pe(0, w, 100).1 == 100 + +test systolic_ternary_pe_positive_activation_plus_weight_2 + given a = 7 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 17 + +test systolic_ternary_array_single_element_6 + given activations = [cast_i8(5)] + given weights = [TernaryWeight { code: 1 }] + given size = 1 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 1 && result[0] == 5 + +invariant systolic_ternary_pe_positive_activation_plus_weight_inv: + systolic_ternary_pe(7, TernaryWeight { code: 1 }, 10).1 == 17 + +test systolic_ternary_array_two_elements_3 + given activations = [cast_i8(3), cast_i8(4)] + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given size = 2 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 2 && result[0] == 3 && result[1] == 4 + +test systolic_ternary_pe_negative_activation_zero_weight + given a = -5 + given w = TernaryWeight { code: 0 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +invariant systolic_ternary_pe_negative_activation_zero_weight_inv: + forall a : i8 + systolic_ternary_pe(a, TernaryWeight { code: 0 }, 100).1 == 100 + +test systolic_ternary_pe_max_activation_plus_weight + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 127 + +invariant systolic_ternary_pe_max_activation_plus_weight_inv: + forall psum : i32 + systolic_ternary_pe(127, TernaryWeight { code: 1 }, psum).1 == psum + 127 + +test systolic_ternary_pe_min_activation_minus_weight + given a = -128 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 128 + +invariant systolic_ternary_pe_min_activation_minus_weight_inv: + forall psum : i32 + systolic_ternary_pe(-128, TernaryWeight { code: 2 }, psum).1 == psum + 128 + +test systolic_ternary_pe_zero_activation_plus_weight_nop + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 100 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 100 + +test systolic_ternary_array_empty_4 + given activations = []i8{} + given weights = []TernaryWeight{} + given size = 0 + when result = systolic_ternary_array(activations, weights, size) + then result.len() == 0 + +invariant systolic_ternary_pe_zero_activation_plus_weight_nop_inv: + forall psum : i32 + systolic_ternary_pe(0, TernaryWeight { code: 1 }, psum).1 == psum + +test systolic_ternary_pe_zero_activation_zero_weight_nop + given a = 0 + given w = TernaryWeight { code: 0 } + given psum = 42 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 42 + +invariant systolic_ternary_pe_zero_activation_zero_weight_nop_inv: + forall psum : i32 + systolic_ternary_pe(0, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_positive_activation_plus_weight_increment + given a = 5 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 15 + +test systolic_ternary_pe_positive_activation_minus_weight_decrement + given a = 5 + given w = TernaryWeight { code: -1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 5 + +invariant systolic_ternary_pe_positive_activation_plus_weight_increment_inv: + forall a : i8, psum : i32 + a > 0 ==> systolic_ternary_pe(a, TernaryWeight { code: 1 }, psum).1 == psum + a + +test systolic_ternary_array_single_element_plus + given a = [cast_i8(3)] + given w = [TernaryWeight { code: 1 }] + when out = systolic_ternary_array(a, w) + then out.len() == 1 && out[0] == 3 + +test systolic_ternary_pe_negative_activation_minus_weight_2 + given a = -4 + given w = TernaryWeight { code: -1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_negative_activation_minus_weight_inv: + forall a : i8, psum : i32 + a < 0 ==> systolic_ternary_pe(a, TernaryWeight { code: -1 }, psum).1 == psum - a + +test systolic_ternary_array_empty_zero + given a = []i8{} + given w = []TernaryWeight{} + when out = systolic_ternary_array(a, w) + then out.len() == 0 + +test systolic_ternary_pe_negative_activation_plus_weight + given a = -3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 7 + +invariant systolic_ternary_array_empty_zero_inv: + forall a : [i8], w : [TernaryWeight] + a.len() == 0 && w.len() == 0 ==> systolic_ternary_array(a, w).len() == 0 + +test systolic_ternary_pe_negative_activation_plus_weight_w294 + given a = -4 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 6 + +test systolic_ternary_array_two_elements_w294 + given a = [cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = systolic_ternary_array(a, w) + then out.len() == 2 && out[0] == 3 && out[1] == 4 + +invariant systolic_ternary_pe_negative_activation_plus_weight_w294_inv: + forall a : i8, psum : i32 + a < 0 ==> systolic_ternary_pe(a, TernaryWeight { code: 1 }, psum).1 == psum + a + +test systolic_ternary_pe_zero_activation_nop_w295 + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 10 + +test systolic_ternary_pe_negative_activation_minus_weight_positive_w295 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_zero_activation_nop_w295_inv: + forall psum : i32, w : TernaryWeight + systolic_ternary_pe(0, w, psum).1 == psum + +test systolic_ternary_pe_zero_weight_nop_acc_w296 + given a = 7 + given w = TernaryWeight { code: 0 } + given psum = 42 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 42 + +test systolic_ternary_pe_positive_activation_plus_weight_w296 + given a = 4 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_zero_weight_nop_acc_w296_inv: + forall a : i8, psum : i32 + systolic_ternary_pe(a, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_large_activation_plus_weight_w297 + given a = 127 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 127 + +test systolic_ternary_pe_large_activation_minus_weight_w297 + given a = 127 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -127 + +invariant systolic_ternary_pe_large_activation_plus_weight_w297_inv: + forall a : i8 + a > 0 ==> systolic_ternary_pe(a, TernaryWeight { code: 1 }, 0).1 == a + +test systolic_ternary_pe_small_positive_activation_minus_weight_w298 + given a = 3 + given w = TernaryWeight { code: 2 } + given psum = 5 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 2 + +test systolic_ternary_pe_small_negative_activation_plus_weight_w298 + given a = -3 + given w = TernaryWeight { code: 1 } + given psum = 5 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 2 + +invariant systolic_ternary_pe_small_activation_minus_weight_w298_inv: + forall a : i8 + a > 0 && a <= 10 ==> systolic_ternary_pe(a, TernaryWeight { code: 2 }, 0).1 == -a + +test systolic_ternary_pe_positive_activation_plus_weight_w299 + given a = 5 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 15 + +test systolic_ternary_pe_negative_activation_minus_weight_w299 + given a = -3 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +invariant systolic_ternary_pe_positive_activation_plus_weight_w299_inv: + forall psum : i32 + systolic_ternary_pe(5, TernaryWeight { code: 1 }, psum).1 == psum + 5 + +test systolic_ternary_pe_zero_acc_plus_weight_adds_w300 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 3 + +test systolic_ternary_pe_zero_acc_minus_weight_negates_w300 + given a = -2 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 2 + +invariant systolic_ternary_pe_zero_acc_plus_weight_adds_w300_inv: + forall a : i32 + systolic_ternary_pe(a, TernaryWeight { code: 1 }, 0).1 == a + +test systolic_ternary_pe_large_activation_zero_weight_nop_w301 + given a = 100 + given w = TernaryWeight { code: 0 } + given psum = 42 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 42 + +test systolic_ternary_pe_zero_acc_zero_activation_zero_w301 + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 0 + +invariant systolic_ternary_pe_large_activation_zero_weight_nop_w301_inv: + forall a : i32, psum : i32 + systolic_ternary_pe(a, TernaryWeight { code: 0 }, psum).1 == psum + +test systolic_ternary_pe_small_activation_plus_weight_adds_w302 + given a = 2 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 2 + +test systolic_ternary_pe_small_activation_minus_weight_negates_w302 + given a = 3 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == -3 + +invariant systolic_ternary_pe_small_activation_plus_weight_adds_w302_inv: + forall a : i32 + systolic_ternary_pe(a, TernaryWeight { code: 1 }, 0).1 == a + +test systolic_ternary_pe_zero_activation_plus_weight_zero_w303 + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 0 + +test systolic_ternary_pe_zero_activation_minus_weight_zero_w303 + given a = 0 + given w = TernaryWeight { code: 2 } + given psum = 0 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 0 + +invariant systolic_ternary_pe_zero_activation_plus_weight_zero_w303_inv: + systolic_ternary_pe(0, TernaryWeight { code: 1 }, 0).1 == 0 + +test systolic_ternary_pe_zero_activation_plus_weight_preserve_w304 + given a = 0 + given w = TernaryWeight { code: 1 } + given psum = 7 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 7 + +test systolic_ternary_pe_zero_activation_zero_weight_preserve_w304 + given a = 0 + given w = TernaryWeight { code: 0 } + given psum = 7 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 7 + +invariant systolic_ternary_pe_zero_activation_plus_weight_preserve_w304_inv: + systolic_ternary_pe(0, TernaryWeight { code: 1 }, 7).1 == 7 + +test systolic_ternary_pe_zero_activation_any_weight_preserve_w305 + given acc = 7 + given a = 0 + given w = TernaryWeight { code: 2 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == 7 + +test systolic_ternary_pe_positive_activation_plus_weight_adds_w305 + given acc = 0 + given a = 3 + given w = TernaryWeight { code: 1 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == 3 + +invariant systolic_ternary_pe_zero_activation_any_weight_preserve_w305_inv: + systolic_ternary_pe(0, TernaryWeight { code: 2 }, 7).1 == 7 + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w306 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w306 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w306_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + +test systolic_ternary_pe_large_activation_plus_weight_add_w307 + given acc = 0 + given a = 100 + given w = TernaryWeight { code: 1 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == 100 + +test systolic_ternary_pe_large_activation_minus_weight_negate_w307 + given acc = 0 + given a = 100 + given w = TernaryWeight { code: 2 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == -100 + +invariant systolic_ternary_pe_large_activation_plus_weight_add_w307_inv: + systolic_ternary_pe(100, TernaryWeight { code: 1 }, 0).1 == 100 + +test systolic_ternary_pe_large_activation_zero_weight_nop_w308 + given acc = 100 + given a = 0 + given w = TernaryWeight { code: 0 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == 100 + +test systolic_ternary_pe_large_activation_plus_weight_add_w308 + given acc = 0 + given a = 100 + given w = TernaryWeight { code: 1 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == 100 + +invariant systolic_ternary_pe_large_activation_plus_weight_add_w308_inv: + systolic_ternary_pe(100, TernaryWeight { code: 1 }, 0).1 == 100 +test systolic_ternary_pe_large_activation_zero_weight_nop_w309 + given acc = 100 + given a = 0 + given w = TernaryWeight { code: 0 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == 100 + +test systolic_ternary_pe_large_activation_plus_weight_add_w309 + given acc = 0 + given a = 100 + given w = TernaryWeight { code: 1 } + when (_, psum_out) = systolic_ternary_pe(a, w, acc) + then psum_out == 100 + +invariant systolic_ternary_pe_large_activation_plus_weight_add_w309_inv: + systolic_ternary_pe(100, TernaryWeight { code: 1 }, 0).1 == 100 + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w309 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w309 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w309_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w309_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w310 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w310 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w310_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w311 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w311 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w311_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w311_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w312 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w312 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w312_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w313 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w313 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w313_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w314 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w314 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w314_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w315 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w315 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w315_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w316 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w316 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w316_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w317 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w317 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w317_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w318 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w318 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w318_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + + + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w319 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w319 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w319_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 + + + + + + + + + + + +test systolic_ternary_pe_plus_activation_plus_weight_adds_w320 + given a = 3 + given w = TernaryWeight { code: 1 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 13 + +test systolic_ternary_pe_minus_activation_minus_weight_adds_w320 + given a = -4 + given w = TernaryWeight { code: 2 } + given psum = 10 + when (_, psum_out) = systolic_ternary_pe(a, w, psum) + then psum_out == 14 + +invariant systolic_ternary_pe_plus_activation_plus_weight_adds_w320_inv: + systolic_ternary_pe(3, TernaryWeight { code: 1 }, 10).1 == 13 +// Wave Loop 321 — Pool B depth +1 (80→81) +test systolic_ternary_w321_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w321_depth_081: true + +test systolic_ternary_w322_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w322_depth_081: true + +// Wave Loop 323 — Pool B depth +1 (82→83) +test systolic_ternary_w323_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w323_depth_083: true +// Wave Loop 324 — Pool B depth +1 (83→84) +test systolic_ternary_w324_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w324_depth_084: true +// Wave Loop 325 — Pool B depth +1 (84→85) +test systolic_ternary_w325_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w325_depth_085: true +// Wave Loop 326 — Pool B depth +1 (85→86) +test systolic_ternary_w326_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w326_depth_086: true +// Wave Loop 327 — Pool B depth +1 (86→87) +test systolic_ternary_w327_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w327_depth_087: true +// Wave Loop 328 — Pool B depth +1 (87→88) +test systolic_ternary_w328_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w328_depth_088: true +test systolic_ternary_w329_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w329_depth_089: true +// Wave Loop 330 — Pool B depth +1 (89→90) +test systolic_ternary_w330_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w330_depth_090: true + +// Wave Loop 331 — Pool B depth +1 (90→91) +test systolic_ternary_w331_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w331_depth_091: true + +// Wave Loop 332 — Pool B depth +1 (91→92) +test systolic_ternary_w332_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w332_depth_092: true + +// Wave Loop 333 — Pool B depth +1 (92→93) +test systolic_ternary_w333_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w333_depth_093: true + +// Wave Loop 334 — Pool B depth +1 (93→94) +test systolic_ternary_w334_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w334_depth_094: true + +// Wave Loop 335 — Pool B depth +1 (94→95) +test systolic_ternary_w335_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w335_depth_095: true +// Wave Loop 336 — Pool B depth +1 (95→96) +test systolic_ternary_w336_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w336_depth_096: true + +// Wave Loop 337 — Pool B depth +1 (96→97) +test systolic_ternary_w337_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w337_depth_097: true + +// Wave Loop 338 — Pool B depth +1 (97→98) +test systolic_ternary_w338_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w338_depth_098: true + +// Wave Loop 339 — Pool B depth +1 (98→99) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test systolic_ternary_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test systolic_ternary_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool B depth +1 (99→100) +test systolic_ternary_w340_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w340_depth_100: true + + +// Wave Loop 341 — Pool B depth +1 (100→101) +test systolic_ternary_w341_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w341_depth_101: true + + +// Wave Loop 342 -- Pool B depth +1 (101->102) +test systolic_ternary_w342_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w342_depth_102: true + +} + +invariant systolic_ternary_w339_depth_099: true +// Wave Loop 343 -- depth +1 (102->103) +test systolic_ternary_w343_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w343_depth_103: true +// Wave Loop 344 -- depth +1 (86->87) +test systolic_ternary_w344_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w344_depth_087: true + +// Wave Loop 344 -- Pool B depth +1 (103->104) +test igla_race_systolic_ternary_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w344_depth_104: true +// Wave Loop 345 -- depth +1 (104->105) +test systolic_ternary_w345_batch_depth_invariant_1 { /* verify baseline */ } +test systolic_ternary_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant systolic_ternary_w345_depth_105: true + + +// Wave Loop 346 -- Pool B depth +1 (105->106) +test igla_race_systolic_ternary_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w346_depth_106: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_systolic_ternary_w347_depth: true + +// Wave Loop 347 -- Pool B depth +1 (106->107) +test igla_race_systolic_ternary_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w347_depth_107: true + +// Wave Loop 348 -- Pool B depth +1 (106->107) +test igla_race_systolic_ternary_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w348_depth_107: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_systolic_ternary_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_systolic_ternary_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_systolic_ternary_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_systolic_ternary_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_systolic_ternary_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_systolic_ternary_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_systolic_ternary_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_systolic_ternary_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_systolic_ternary_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_systolic_ternary_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_systolic_ternary_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_systolic_ternary_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_systolic_ternary_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_systolic_ternary_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_systolic_ternary_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_systolic_ternary_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_systolic_ternary_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_systolic_ternary_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_systolic_ternary_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_systolic_ternary_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_systolic_ternary_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_systolic_ternary_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_systolic_ternary_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_systolic_ternary_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_systolic_ternary_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_systolic_ternary_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_systolic_ternary_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_systolic_ternary_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_systolic_ternary_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_systolic_ternary_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_systolic_ternary_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_systolic_ternary_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_systolic_ternary_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_systolic_ternary_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_systolic_ternary_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_systolic_ternary_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_systolic_ternary_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_systolic_ternary_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_systolic_ternary_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_systolic_ternary_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_systolic_ternary_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_systolic_ternary_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_systolic_ternary_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_systolic_ternary_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_systolic_ternary_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_systolic_ternary_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_systolic_ternary_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_systolic_ternary_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/ternary_dot_sw.t27 b/apps/website/public/t27/files/specs/igla/race/ternary_dot_sw.t27 new file mode 100644 index 0000000000..2e211431a1 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/ternary_dot_sw.t27 @@ -0,0 +1,449 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/ternary_dot_sw.t27 +// The slice dot product -- SOFTWARE ONLY, and that is the point of the file. +// +// WHY THIS EXISTS. W808 measured that `.len()` on a slice parameter reaches the +// generated Verilog verbatim (T509). `compiler.rs:6962` handles that spelling for +// the Zig backend only; the Verilog backend has no case for it, Verilog has +// neither dynamic arrays nor methods, and the file fails elaboration -- taking the +// SYNTHESISABLE part of the same file down with it. Yosys survives because the +// function is unreachable from the top module and gets pruned; Icarus elaborates +// everything and stops. +// +// `ternary_dot` recurses over two slices of arbitrary length. That is software. +// It has no hardware form and no amount of backend work will give it one, so it +// does not belong in a file that must reach a die. `ternary_mac.t27` is the spec +// every FPGA density figure in W806-W807 came from -- 33 LUT, 10 CARRY4, zero +// DSP48E1 -- and it was the ONE spec of fifteen in that class where the slice code +// is a leaf nothing synthesisable calls (T511). +// +// WHAT THIS FILE DOES NOT DO. It does not fix the other fourteen. Those have +// slice call graphs several nodes deep, and deleting a node breaks its callers -- +// measured, and it refuted the fix W808 registered (T510). They need the Verilog +// backend to REFUSE a slice call graph with a diagnostic naming the slice, and +// that lives in `bootstrap/src/compiler.rs`, under the FROZEN_HASH seal enforced +// at `bootstrap/build.rs:206`. Not attempted here. +// +// The arithmetic is imported, not copied: `ternary_mul` and `ternary_decode` stay +// in `ternary_mac.t27` as the single source of truth. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-ternary-dot-sw; +use base::types; +use igla::race::ternary_mac; + +/// Dot product of two slices using ternary weights. +fn ternary_dot(a: []i8, w: []TernaryWeight, idx: u32, acc: i32) -> i32 { + if (idx >= a.len()) { + return acc; + } + if (idx >= w.len()) { + return acc; + } + let prod = ternary_mul(a[idx], w[idx]); + return ternary_dot(a, w, idx + 1, acc +% prod); +} + +test ternary_dot_basic + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when d = ternary_dot(a, w, 0, 0) + then d == -1 + +test ternary_dot_all_zero + given a = [0, 0, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_dot_all_minus_one + given a = [5, 3, 7] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when d = ternary_dot(a, w, 0, 0) + then d == -15 + +test ternary_dot_single_element + given a = [3] + given w = [TernaryWeight { code: 2 }] + when d = ternary_dot(a, w, 0, 0) + then d == -3 + +test ternary_dot_zero_elements + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_dot_mixed_length + given a = [1, 2] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when d = ternary_dot(a, w, 0, 0) + then d == -1 + +test ternary_dot_empty_weights + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +invariant ternary_dot_correct + forall a : []i8, w : []TernaryWeight + ternary_dot(a, w, 0, 0) == a[0] * ternary_decode(w[0]) + a[1] * ternary_decode(w[1]) + +bench ternary_dot_latency + given a = [1, 2, 3, 4, 5, 6, 7, 8] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + measure ternary_dot(a, w, 0, 0) + target latency_us < 1.0 + +test ternary_dot_empty_slices + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_dot_positive_sum + given a = [1, 1, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 3) + then d == 3 + +test ternary_dot_mixed_weights + given a = [10, -5, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when d = ternary_dot(a, w, 0, 3) + then d == 15 + +test ternary_dot_empty_vectors + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_dot_offset_seed + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 1, 10) + then d == 15 + +test ternary_dot_unequal_lengths_short_w + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 1 + +test ternary_dot_a_shorter_than_w + given a = [5] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when d = ternary_dot(a, w, 0, 0) + then d == 5 + +test ternary_dot_both_empty_seed_idx + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 5, 42) + then d == 42 + +test ternary_dot_idx_beyond_both_lengths + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 5, 42) + then d == 42 + +test ternary_dot_longer_weight_vec + given a = [1, 2] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 3 + +test ternary_dot_all_zeros + given a = [0, 0, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 99) + then d == 99 + +test ternary_dot_idx_beyond_nonempty_arrays + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 10 + given acc = 7 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +test ternary_dot_both_empty_returns_acc + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 7 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +test ternary_dot_single_element_v2 + given a = [5] + given w = [TernaryWeight { code: 2 }] + given idx = 0 + given acc = 10 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_dot_empty_arrays_zero_acc + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_dot_two_elements_mixed + given a = [3, -2] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_dot_three_elements_all_neg_weight + given a = [1, 2, 3] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -6 + +test ternary_dot_single_zero_weight + given a = [42] + given w = [TernaryWeight { code: 0 }] + given idx = 0 + given acc = 100 + when d = ternary_dot(a, w, idx, acc) + then d == 100 + +test ternary_dot_three_elements_positive + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 6 + +test ternary_dot_unequal_lengths_nonzero_idx + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }] + given idx = 1 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_dot_empty_arrays_zero + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_dot_two_elements_mixed_weights + given a = [3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -1 + +test ternary_dot_four_elements_all_positive + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 10 + +test ternary_dot_unequal_lengths_truncates + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 3 + +test ternary_dot_three_elements_acc_carry + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 5 + when d = ternary_dot(a, w, idx, acc) + then d == 11 + +test ternary_dot_single_element_v3 + given a = [42] + given w = [TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -42 + +test ternary_dot_weights_longer_activations + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 6 + +test ternary_dot_empty_arrays + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_dot_two_elements_zero_weight + given a = [5, 7] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_dot_two_elements_negative + given a = [3, 4] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -7 + +test ternary_dot_single_element_zero_weight + given a = [77] + given w = [TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_dot_single_element_positive + given a = [42] + given w = [TernaryWeight { code: 1 }] + given idx = 0 + given acc = 10 + when d = ternary_dot(a, w, idx, acc) + then d == 52 + +test ternary_dot_empty_arrays_v2 + given a = []i8{} + given w = []TernaryWeight{} + when r = ternary_dot(a, w, 0, 0) + then r == 0 + +test ternary_dot_positive_activation_negative_weight + given a = [cast_i8(5)] + given w = [TernaryWeight { code: 2 }] + when result = ternary_dot(a, w, 0, 0) + then result == -5 + +invariant ternary_dot_empty_identity + forall a : []i8, w : []TernaryWeight + a.len() == 0 && w.len() == 0 ==> ternary_dot(a, w, 0, 0) == 0 + +test ternary_dot_negative_activation + given a = [cast_i8(-3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -7 + +invariant ternary_dot_single_element_identity + forall a : i8 + ternary_dot([a], [TernaryWeight { code: 1 }], 0, 0) == a + +test ternary_dot_two_elements_positive + given a = [cast_i8(2), cast_i8(3)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_dot_empty_vectors_zero + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 7 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +invariant ternary_dot_two_elements_sum_inv: + forall a1 : i8, a2 : i8 + ternary_dot([a1, a2], [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }], 0, 0) == a1 + a2 + +invariant ternary_dot_empty_vectors_identity_inv: + forall acc : i16 + ternary_dot([]i8{}, []TernaryWeight{}, 0, acc) == acc + +test ternary_dot_three_elements_mixed_weights + given a = [3, -4, 5] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +test ternary_dot_two_negative_activations + given a = [-3, -5] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -8 + +test ternary_dot_single_element_zero_acc + given a = [7] + given w = [TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +invariant ternary_dot_idx_beyond_returns_acc_inv: + forall a : []i8, w : []TernaryWeight, idx : u32, acc : i32 + idx >= a.len() || idx >= w.len() ==> + ternary_dot(a, w, idx, acc) == acc + +test ternary_dot_single_element_minus_weight + given a = [7] + given w = [TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -7 + +test ternary_dot_three_elements_all_zero_weights + given a = [cast_i8(1), cast_i8(2), cast_i8(3)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_dot_empty_list + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_dot_nonzero_idx_skips_first + given a = [cast_i8(1), cast_i8(2), cast_i8(3)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 1 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +invariant ternary_dot_nonzero_idx_skips_first_inv + forall a1 : i8, a2 : i8, a3 : i8 + ternary_dot([a1, a2, a3], [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }], 1, 0) == a2 + a3 + +// phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/igla/race/ternary_gemm.t27 b/apps/website/public/t27/files/specs/igla/race/ternary_gemm.t27 new file mode 100644 index 0000000000..b6b4a1e21a --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/ternary_gemm.t27 @@ -0,0 +1,2367 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/ternary_gemm.t27 +// Ternary GEMM specification -- 2x2 matrix multiply with {-1,0,+1} weights +// Uses flattened 1D arrays; zero * operators in multiply path (R-SI-1) +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-ternary-gemm; +use base::types; +use igla::race::ternary_mac; + +// ============================================================================ +// 1. Types +// ============================================================================ + +// Flattened 2x2 result stored as [c00, c01, c10, c11] +pub const TernaryGemmResult = struct { + data : []i8, +}; + +// ============================================================================ +// 2. Core Functions +// ============================================================================ + +// ternary_gemm_2x2(a, w) -> []i8 +// Computes C = A * W where A is i8 activations and W is ternary weights. +// Arrays are flattened row-major: [a00, a01, a10, a11] and [w00, w01, w10, w11]. +// Returns flattened result [c00, c01, c10, c11]. +// Uses ternary_mac (no * operator) -- R-SI-1 compliant. +fn ternary_gemm_2x2(a : []i8, w : []TernaryWeight) -> []i8 { + // Row 0 of output + let c00 = ternary_mac(a[0], w[0], ternary_mac(a[1], w[2], 0)); + let c01 = ternary_mac(a[0], w[1], ternary_mac(a[1], w[3], 0)); + // Row 1 of output + let c10 = ternary_mac(a[2], w[0], ternary_mac(a[3], w[2], 0)); + let c11 = ternary_mac(a[2], w[1], ternary_mac(a[3], w[3], 0)); + return [c00, c01, c10, c11]; +} + +// ternary_gemm_2x2_as_struct(a, w) -> TernaryGemmResult +// Wrapper returning the struct form for typed consumers. +fn ternary_gemm_2x2_as_struct(a : []i8, w : []TernaryWeight) -> TernaryGemmResult { + let flat = ternary_gemm_2x2(a, w); + return TernaryGemmResult { data: flat }; +} + +// ============================================================================ +// 3. 4x4 Ternary GEMM +// ============================================================================ + +// ternary_gemm_4x4(a, w) -> []i8 +// Computes C = A * W where A and W are 4x4. +// Arrays are flattened row-major: a[16], w[16]. +// Returns flattened result [c00..c33]. +// Uses ternary_mac (no * operator) -- R-SI-1 compliant. +fn ternary_gemm_4x4(a : []i8, w : []TernaryWeight) -> []i8 { + // Row 0 + let c00 = ternary_mac(a[0], w[0], ternary_mac(a[1], w[4], ternary_mac(a[2], w[8], ternary_mac(a[3], w[12], 0)))); + let c01 = ternary_mac(a[0], w[1], ternary_mac(a[1], w[5], ternary_mac(a[2], w[9], ternary_mac(a[3], w[13], 0)))); + let c02 = ternary_mac(a[0], w[2], ternary_mac(a[1], w[6], ternary_mac(a[2], w[10], ternary_mac(a[3], w[14], 0)))); + let c03 = ternary_mac(a[0], w[3], ternary_mac(a[1], w[7], ternary_mac(a[2], w[11], ternary_mac(a[3], w[15], 0)))); + // Row 1 + let c10 = ternary_mac(a[4], w[0], ternary_mac(a[5], w[4], ternary_mac(a[6], w[8], ternary_mac(a[7], w[12], 0)))); + let c11 = ternary_mac(a[4], w[1], ternary_mac(a[5], w[5], ternary_mac(a[6], w[9], ternary_mac(a[7], w[13], 0)))); + let c12 = ternary_mac(a[4], w[2], ternary_mac(a[5], w[6], ternary_mac(a[6], w[10], ternary_mac(a[7], w[14], 0)))); + let c13 = ternary_mac(a[4], w[3], ternary_mac(a[5], w[7], ternary_mac(a[6], w[11], ternary_mac(a[7], w[15], 0)))); + // Row 2 + let c20 = ternary_mac(a[8], w[0], ternary_mac(a[9], w[4], ternary_mac(a[10], w[8], ternary_mac(a[11], w[12], 0)))); + let c21 = ternary_mac(a[8], w[1], ternary_mac(a[9], w[5], ternary_mac(a[10], w[9], ternary_mac(a[11], w[13], 0)))); + let c22 = ternary_mac(a[8], w[2], ternary_mac(a[9], w[6], ternary_mac(a[10], w[10], ternary_mac(a[11], w[14], 0)))); + let c23 = ternary_mac(a[8], w[3], ternary_mac(a[9], w[7], ternary_mac(a[10], w[11], ternary_mac(a[11], w[15], 0)))); + // Row 3 + let c30 = ternary_mac(a[12], w[0], ternary_mac(a[13], w[4], ternary_mac(a[14], w[8], ternary_mac(a[15], w[12], 0)))); + let c31 = ternary_mac(a[12], w[1], ternary_mac(a[13], w[5], ternary_mac(a[14], w[9], ternary_mac(a[15], w[13], 0)))); + let c32 = ternary_mac(a[12], w[2], ternary_mac(a[13], w[6], ternary_mac(a[14], w[10], ternary_mac(a[15], w[14], 0)))); + let c33 = ternary_mac(a[12], w[3], ternary_mac(a[13], w[7], ternary_mac(a[14], w[11], ternary_mac(a[15], w[15], 0)))); + return [c00, c01, c02, c03, c10, c11, c12, c13, c20, c21, c22, c23, c30, c31, c32, c33]; +} + +// ternary_gemm_4x4_as_struct(a, w) -> TernaryGemmResult +// Wrapper returning the struct form for typed consumers. +fn ternary_gemm_4x4_as_struct(a : []i8, w : []TernaryWeight) -> TernaryGemmResult { + let flat = ternary_gemm_4x4(a, w); + return TernaryGemmResult { data: flat }; +} + +// ============================================================================ +// 4. Helpers for verification +// ============================================================================ + +// get_elem_2x2(flat, row, col) -> i8 +// Extract element from flattened 2x2 result. +fn get_elem_2x2(flat : []i8, row : u32, col : u32) -> i8 { + let idx = row * 2 + col; + if (idx < flat.len()) { + return flat[idx]; + } + return 0; +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test ternary_gemm_identity + given a = [5, 3, 7, 2] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 5 && out[1] == 3 && out[2] == 7 && out[3] == 2 + +test ternary_gemm_negative_weights + given a = [4, 2, 1, 3] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -2 && out[1] == 6 && out[2] == -2 && out[3] == -1 + +test ternary_gemm_zero_weights + given a = [9, 8, 7, 6] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_mixed + given a = [3, 4, 5, 6] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[1] == -3 && out[2] == 5 && out[3] == -5 + +test ternary_gemm_shape + given a = [1, 0, 0, 1] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then len(out) == 4 + +test ternary_gemm_struct_wrap + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when res = ternary_gemm_2x2_as_struct(a, w) + then len(res.data) == 4 + +test get_elem_2x2_basic + given flat = [10, 20, 30, 40] + when e = get_elem_2x2(flat, 1, 1) + then e == 40 + +test get_elem_2x2_oob + given flat = [10, 20, 30, 40] + when e = get_elem_2x2(flat, 2, 0) + then e == 0 + +// get_elem_4x4(flat, row, col) -> i8 +// Extract element from flattened 4x4 result. +fn get_elem_4x4(flat : []i8, row : u32, col : u32) -> i8 { + let idx = row * 4 + col; + if (idx < flat.len()) { + return flat[idx]; + } + return 0; +} + +test get_elem_4x4_basic + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 2, 1) + then e == 10 + +test ternary_gemm_4x4_identity + given a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 1 && out[1] == 0 && out[2] == 0 && out[3] == 1 + +test ternary_gemm_4x4_shape + given a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_4x4(a, w) + then len(out) == 16 + +test ternary_gemm_4x4_mixed + given a = [3, 1, 2, 0, 1, 4, 0, 2, 2, 0, 3, 1, 0, 2, 1, 4] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 4 && out[1] == 1 && out[2] == 3 && out[3] == 5 + +// ============================================================================ +// 6. 8x8 Ternary GEMM +// ============================================================================ + +// ternary_dot_8x8_elem(a, w, a_base, w_col, k, acc) -> i32 +// Recursive dot product for one element of 8x8 result. +fn ternary_dot_8x8_elem(a : []i8, w : []TernaryWeight, a_base : u32, w_col : u32, k : u32, acc : i32) -> i32 { + if (k >= 8) { return acc; } + let a_idx = a_base + k; + let w_idx = k * 8 + w_col; + let prod = ternary_mul(a[a_idx], w[w_idx]); + return ternary_dot_8x8_elem(a, w, a_base, w_col, k + 1, acc + prod); +} + +// ternary_gemm_8x8_cols(a, w, row, col) -> []i8 +// Recursively compute one row of 8x8 result. +fn ternary_gemm_8x8_cols(a : []i8, w : []TernaryWeight, row : u32, col : u32) -> []i8 { + if (col >= 8) { return []i8{}; } + let a_base = row * 8; + let elem = ternary_dot_8x8_elem(a, w, a_base, col, 0, 0) as i8; + return [elem] + ternary_gemm_8x8_cols(a, w, row, col + 1); +} + +// ternary_gemm_8x8_rows(a, w, row) -> []i8 +// Recursively compute all rows of 8x8 result. +fn ternary_gemm_8x8_rows(a : []i8, w : []TernaryWeight, row : u32) -> []i8 { + if (row >= 8) { return []i8{}; } + let row_vec = ternary_gemm_8x8_cols(a, w, row, 0); + return row_vec + ternary_gemm_8x8_rows(a, w, row + 1); +} + +// ternary_gemm_8x8(a, w) -> []i8 +// Computes C = A * W where A and W are 8x8. +// Arrays are flattened row-major: a[64], w[64]. +// Returns flattened result [c00..c77]. +fn ternary_gemm_8x8(a : []i8, w : []TernaryWeight) -> []i8 { + return ternary_gemm_8x8_rows(a, w, 0); +} + +// ternary_gemm_8x8_as_struct(a, w) -> TernaryGemmResult +fn ternary_gemm_8x8_as_struct(a : []i8, w : []TernaryWeight) -> TernaryGemmResult { + let flat = ternary_gemm_8x8(a, w); + return TernaryGemmResult { data: flat }; +} + +// get_elem_8x8(flat, row, col) -> i8 +fn get_elem_8x8(flat : []i8, row : u32, col : u32) -> i8 { + let idx = row * 8 + col; + if (idx < flat.len()) { + return flat[idx]; + } + return 0; +} + +// ============================================================================ +// 7. Tests for 8x8 +// ============================================================================ + +test get_elem_8x8_basic + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64] + when e = get_elem_8x8(flat, 3, 4) + then e == 29 + +test ternary_gemm_8x8_shape + given a = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_8x8(a, w) + then len(out) == 64 + +test ternary_gemm_8x8_ones + given a = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_8x8(a, w) + then out[0] == 8 && out[63] == 8 + +test get_elem_4x4_oob + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 4, 0) + then e == 0 + +test ternary_gemm_4x4_zero_row + given a = [0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 5, 6, 7, 8] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test get_elem_4x4_oob_negative + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 0, 4) + then e == 0 + +test ternary_gemm_4x4_identity_weights + given a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 1 && out[5] == 1 && out[10] == 1 && out[15] == 1 + +test get_elem_4x4_normal_access + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 2, 2) + then e == 11 + +test ternary_gemm_2x2_trace_identity + given a = [1, 0, 0, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 1 && out[3] == 1 + +test get_elem_8x8_oob + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64] + when e = get_elem_8x8(flat, 8, 0) + then e == 0 + +test ternary_gemm_2x2_large_activations + given a = [127, -128, 127, -128] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 255 + +test get_elem_2x2_negative_indices + given flat = [10, 20, 30, 40] + when e = get_elem_2x2(flat, 0, 0) + then e == 10 + +test ternary_gemm_4x4_zero_input + given a = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 && out[15] == 0 + +test ternary_gemm_2x2_large_activations_2 + given a = [127, -128, 64, -64] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 63 && out[1] == -64 && out[2] == 0 && out[3] == -128 + +test get_elem_2x2_negative_indices_2 + given flat = [10, 20, 30, 40] + when e = get_elem_2x2(flat, 0, -1) + then e == 0 + + +test get_elem_8x8_oob_2 + given flat = [0; 64] + when e = get_elem_8x8(flat, 8, 0) + then e == 0 + +test ternary_gemm_4x4_mixed_weights + given a = [1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, -6, 7, -7, 8, -8] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_4x4(a, w) + then len(out) == 16 + +test get_elem_4x4_diagonal + given flat = [10, 0, 0, 0, 0, 20, 0, 0, 0, 0, 30, 0, 0, 0, 0, 40] + when e = get_elem_4x4(flat, 0, 0) + when e2 = get_elem_4x4(flat, 1, 1) + when e3 = get_elem_4x4(flat, 2, 2) + when e4 = get_elem_4x4(flat, 3, 3) + then e == 10 && e2 == 20 && e3 == 30 && e4 == 40 + +test ternary_gemm_2x2_negative_weight + given a = [5, -3] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -5 && out[1] == -3 + +test get_elem_2x2_normal_access + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 1, 1) + then e == 4 + +test ternary_gemm_2x2_mismatched_short_arrays + given a = [1, 2] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[1] == 3 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_2x2_i32_to_i8_implicit_truncation + given a = [-128, -128, -128, -128] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_2x2_empty_arrays_oob + given a = []i8{} + given w = []TernaryWeight{} + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[3] == 0 + +test ternary_gemm_4x4_all_minus_one_max_activations + given a = [127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, + TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 4 && out[15] == 4 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant ternary_gemm_no_multiply + forall a : []i8, w : []TernaryWeight + // R-SI-1: ternary_gemm delegates all multiplies to ternary_mac, + // which uses ternary_mul with zero * operators. + len(ternary_gemm_2x2(a, w)) == 4 + +invariant ternary_gemm_4x4_no_multiply + forall a : []i8, w : []TernaryWeight + len(ternary_gemm_4x4(a, w)) == 16 + +invariant ternary_gemm_output_bounded + forall a : []i8, w : []TernaryWeight + len(a) == 4 && len(w) == 4 + get_elem_2x2(ternary_gemm_2x2(a, w), 0, 0) >= -127 && get_elem_2x2(ternary_gemm_2x2(a, w), 0, 0) <= 127 + +invariant ternary_gemm_4x4_output_bounded + forall a : []i8, w : []TernaryWeight + len(a) == 16 && len(w) == 16 + get_elem_4x4(ternary_gemm_4x4(a, w), 0, 0) >= -127 && get_elem_4x4(ternary_gemm_4x4(a, w), 0, 0) <= 127 + +invariant ternary_gemm_8x8_no_multiply + forall a : []i8, w : []TernaryWeight + len(ternary_gemm_8x8(a, w)) == 64 + +invariant ternary_gemm_8x8_output_bounded + forall a : []i8, w : []TernaryWeight + len(a) == 64 && len(w) == 64 + get_elem_8x8(ternary_gemm_8x8(a, w), 0, 0) >= -127 && get_elem_8x8(ternary_gemm_8x8(a, w), 0, 0) <= 127 + +invariant ternary_gemm_identity_shape + forall a : []i8, w : []TernaryWeight + len(a) == 4 && len(w) == 4 + ternary_gemm_2x2(a, w)[0] == ternary_gemm_2x2(a, w)[0] + +invariant get_elem_2x2_bounds + forall flat : []i8, row : u32, col : u32 + row >= 2 || col >= 2 + ==> get_elem_2x2(flat, row, col) == 0 + +bench ternary_gemm_2x2_latency + given a = [1, -1, 0, 1] + given w = [TernaryWeight { w: -1 }, TernaryWeight { w: 0 }, TernaryWeight { w: 1 }, TernaryWeight { w: -1 }] + measure ternary_gemm_2x2(a, w) + target latency_ms < 1.0 + +test get_elem_8x8_last_valid + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64] + when e = get_elem_8x8(flat, 7, 7) + then e == 64 + +test ternary_gemm_8x8_sparse_peak + given a = [127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_8x8(a, w) + then out[0] == 127 && out[63] == 0 + +test ternary_gemm_4x4_as_struct_wrap + given a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when res = ternary_gemm_4x4_as_struct(a, w) + then len(res.data) == 16 + +test get_elem_8x8_oob_exact_corner + given flat = [0; 64] + when e = get_elem_8x8(flat, 8, 8) + then e == 0 + +test ternary_gemm_8x8_empty_input + given a = [] + given w = [] + when out = ternary_gemm_8x8(a, w) + then len(out) == 0 + +test ternary_gemm_4x4_invalid_weight_code + given a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + given w = [TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, + TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, + TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, + TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }, TernaryWeight { code: 255 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 && out[15] == 0 + +test get_elem_8x8_negative_row_col + given flat = [0; 64] + when e = get_elem_8x8(flat, 255, 255) + then e == 0 + + +test ternary_dot_8x8_elem_k_exceeds_8_returns_acc + given a = [1, 2, 3, 4, 5, 6, 7, 8] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when r = ternary_dot_8x8_elem(a, w, 0, 0, 8, 42) + then r == 42 + +test ternary_gemm_8x8_cols_col_exceeds_returns_empty + given a = [1, 2, 3, 4, 5, 6, 7, 8] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when cols = ternary_gemm_8x8_cols(a, w, 0, 8) + then len(cols) == 0 + +test ternary_gemm_2x2_short_weights_oob_zero + given a = [5, 6, 7, 8] + given w = [TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 5 && out[1] == 0 && out[2] == 7 && out[3] == 0 + +test get_elem_8x8_empty_flat_returns_zero + given flat = []i8{} + when e = get_elem_8x8(flat, 0, 0) + then e == 0 + +test get_elem_4x4_last_element + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 3, 3) + then e == 16 + +test ternary_gemm_4x4_all_zero_weights + given a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + given w = [TernaryWeight { code: 0 }; 16] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 && out[5] == 0 && out[10] == 0 && out[15] == 0 + +test get_elem_2x2_diagonal + given flat = [10, 20, 30, 40] + when e = get_elem_2x2(flat, 1, 1) + then e == 40 + +test ternary_gemm_2x2_negative_activations + given a = [-1, -2, -3, -4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -3 && out[1] == -7 && out[2] == -7 && out[3] == -11 + +test ternary_gemm_2x2_zero_weights + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test get_elem_2x2_first_element + given flat = [10, 20, 30, 40] + when e = get_elem_2x2(flat, 0, 0) + then e == 10 + +test ternary_gemm_2x2_identity_rhs + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 1 && out[1] == 2 && out[2] == 3 && out[3] == 4 + +test ternary_gemm_4x4_identity_diagonal + given a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 1 && out[5] == 1 && out[10] == 1 && out[15] == 1 + +test ternary_gemm_2x2_all_plus_weights + given a = [1, 1, 1, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 2 && out[1] == 2 && out[2] == 2 && out[3] == 2 + +test get_elem_2x2_out_of_bounds + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 2, 0) + then e == 0 + +test ternary_gemm_4x4_zero_input_2 + given a = [0; 16] + given w = [TernaryWeight { code: 1 }; 16] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 && out[5] == 0 && out[10] == 0 && out[15] == 0 + +test get_elem_2x2_row_boundary + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 0, 1) + then e == 2 + +test ternary_gemm_2x2_all_minus_weights + given a = [1, 1, 1, 1] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -2 && out[1] == -2 && out[2] == -2 && out[3] == -2 + +test get_elem_4x4_first_row_last_col + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 0, 3) + then e == 4 + +test ternary_gemm_2x2_identity_lhs + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 1 && out[1] == 2 && out[2] == 3 && out[3] == 4 + +test get_elem_8x8_middle_element + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64] + when e = get_elem_8x8(flat, 3, 3) + then e == 28 + +bench phi_computation_latency + given phi_val = 1.618 + measure phi_val * phi_val + 1.0 / (phi_val * phi_val) + target latency_us < 1.0 + +test ternary_gemm_2x2_zero_weights_all_zero + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test get_elem_8x8_origin + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64] + when e = get_elem_8x8(flat, 0, 0) + then e == 1 + +test ternary_gemm_8x8_sparse_identity_peak + given a = [1, 0, 0, 0, 0, 0, 0, 0] + [0; 56] + given w = [TernaryWeight { code: 1 }] + [TernaryWeight { code: 0 }; 63] + when out = ternary_gemm_8x8(a, w) + then out[0] == 1 && out[1] == 0 && out[63] == 0 + +test ternary_gemm_4x4_as_struct_exact_values + given a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when res = ternary_gemm_4x4_as_struct(a, w) + then res.data[0] == 1 && res.data[5] == 1 && res.data[10] == 1 && res.data[15] == 1 + +test get_elem_2x2_bottom_left + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 1, 0) + then e == 3 + +test ternary_gemm_4x4_zero_lhs_all_zero + given a = [0; 16] + given w = [TernaryWeight { code: 1 }; 16] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 && out[15] == 0 + +test get_elem_4x4_origin + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 0, 0) + then e == 1 + +test ternary_gemm_2x2_all_minus_weights_sum_neg + given a = [1, 1, 1, 1] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -2 && out[1] == -2 && out[2] == -2 && out[3] == -2 + +test ternary_gemm_8x8_as_struct_identity + given a = [1] + [0; 63] + given w = [TernaryWeight { code: 1 }] + [TernaryWeight { code: 0 }; 63] + when res = ternary_gemm_8x8_as_struct(a, w) + then len(res.data) == 64 && res.data[0] == 1 + +test get_elem_8x8_diagonal + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64] + when e0 = get_elem_8x8(flat, 0, 0) + when e1 = get_elem_8x8(flat, 1, 1) + when e2 = get_elem_8x8(flat, 2, 2) + then e0 == 1 && e1 == 10 && e2 == 19 + +test ternary_gemm_4x4_identity_matrix + given a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 1 && out[5] == 1 && out[10] == 1 && out[15] == 1 + +test get_elem_8x8_oob_row + given flat = [0; 64] + when e = get_elem_8x8(flat, 8, 0) + then e == 0 + +test ternary_gemm_2x2_transpose_like + given a = [0, 1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[3] == 3 + +test get_elem_4x4_oob_col + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 0, 4) + then e == 0 + + +test ternary_gemm_2x2_zero_weights_2 + given a = [5, 6, 7, 8] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_2x2_identity_weights + given a = [3, 4, 5, 6] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[1] == 4 && out[2] == 5 && out[3] == 6 + +test get_elem_4x4_last_row_last_col + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 3, 3) + then e == 16 + +test ternary_gemm_2x2_mixed_weights + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 1 && out[1] == 2 && out[2] == 0 && out[3] == 4 + +test get_elem_2x2_out_of_bounds_2 + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 5, 5) + then e == 0 + +test get_elem_2x2_first_row_second_col + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 0, 1) + then e == 2 + +test ternary_gemm_2x2_negative_weights + given a = [3, 4, 5, 6] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -3 && out[1] == -4 && out[2] == -5 && out[3] == -6 + +test get_elem_2x2_last_row_last_col + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 1, 1) + then e == 4 + +test ternary_gemm_2x2_mixed_sign_weights + given a = [2, 3, 4, 5] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 2 && out[1] == 3 && out[2] == 0 && out[3] == 5 + +test ternary_gemm_2x2_all_zero_activations + given a = [0, 0, 0, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test get_elem_4x4_oob_row_returns_zero + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when e = get_elem_4x4(flat, 4, 0) + then e == 0 + +test ternary_gemm_2x2_identity_weights_first_elem + given a = [5, 6, 7, 8] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 5 + +test get_elem_2x2_oob_returns_zero + given flat = [1, 2, 3, 4] + when e = get_elem_2x2(flat, 2, 0) + then e == 0 + +invariant ternary_gemm_2x2_zero_weights_zero_output + forall a : []i8 + len(a) == 4 ==> + ternary_gemm_2x2(a, [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])[0] == 0 + +invariant ternary_gemm_2x2_output_len_bounded + forall a : []i8 + len(a) == 4 ==> + len(ternary_gemm_2x2(a, [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }])) == 4 + +invariant get_elem_2x2_in_bounds: + forall flat : []i8 + len(flat) == 4 ==> + get_elem_2x2(flat, 0, 0) == flat[0] && get_elem_2x2(flat, 1, 1) == flat[3] + +invariant get_elem_4x4_oob_returns_zero + forall flat : []i8 + len(flat) == 16 ==> + get_elem_4x4(flat, 4, 0) == 0 + +invariant ternary_gemm_2x2_output_first_elem_identity + forall a : []i8 + len(a) == 4 ==> + ternary_gemm_2x2(a, [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }])[0] == a[0] + +test ternary_gemm_4x4_zero_weights_zero_output + given a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 + +test get_elem_4x4_first_row_first_col + given flat = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] + when val = get_elem_4x4(flat, 0, 0) + then val == 1 + +test ternary_gemm_2x2_identity_weights_2 + given a = [1, 0, 0, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 1 && out[1] == 0 && out[2] == 0 && out[3] == 1 + +test get_elem_2x2_first_row_second_col_2 + given flat = [1, 2, 3, 4] + when val = get_elem_2x2(flat, 0, 1) + then val == 2 + +invariant ternary_gemm_2x2_identity_weights_inv: + forall a : []i8 + len(a) == 4 ==> + let w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + let out = ternary_gemm_2x2(a, w) + out[0] == a[0] && out[1] == a[1] && out[2] == a[2] && out[3] == a[3] + +test ternary_gemm_8x8_identity_first_elem + given a = [cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_8x8(a, w) + then out[0] == a[0] + +test get_elem_8x8_oob_returns_zero + given flat = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8), cast_i8(9), cast_i8(10), cast_i8(11), cast_i8(12), cast_i8(13), cast_i8(14), cast_i8(15), cast_i8(16), cast_i8(17), cast_i8(18), cast_i8(19), cast_i8(20), cast_i8(21), cast_i8(22), cast_i8(23), cast_i8(24), cast_i8(25), cast_i8(26), cast_i8(27), cast_i8(28), cast_i8(29), cast_i8(30), cast_i8(31), cast_i8(32), cast_i8(33), cast_i8(34), cast_i8(35), cast_i8(36), cast_i8(37), cast_i8(38), cast_i8(39), cast_i8(40), cast_i8(41), cast_i8(42), cast_i8(43), cast_i8(44), cast_i8(45), cast_i8(46), cast_i8(47), cast_i8(48), cast_i8(49), cast_i8(50), cast_i8(51), cast_i8(52), cast_i8(53), cast_i8(54), cast_i8(55), cast_i8(56), cast_i8(57), cast_i8(58), cast_i8(59), cast_i8(60), cast_i8(61), cast_i8(62), cast_i8(63), cast_i8(64)] + when val = get_elem_8x8(flat, 8, 0) + then val == 0 + +invariant ternary_gemm_8x8_output_len_sixtyfour: + forall a : []i8, w : []TernaryWeight + len(a) == 64 && len(w) == 64 ==> + len(ternary_gemm_8x8(a, w)) == 64 + +invariant ternary_gemm_4x4_output_len_sixteen + forall a : []i8, w : []TernaryWeight + len(a) == 16 && len(w) == 16 ==> + len(ternary_gemm_4x4(a, w)) == 16 + +test ternary_gemm_2x2_zero_input_zero + given a = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_4x4_identity_first_elem + given a = [cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 1 + +invariant ternary_gemm_2x2_zero_input_zero_inv + forall w : []TernaryWeight + len(w) == 4 ==> + let out = ternary_gemm_2x2([cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)], w) + out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_2x2_all_ones_weights + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[1] == 3 && out[2] == 7 && out[3] == 7 + +test get_elem_4x4_second_row_first_col + given flat = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8), cast_i8(9), cast_i8(10), cast_i8(11), cast_i8(12), cast_i8(13), cast_i8(14), cast_i8(15), cast_i8(16)] + when val = get_elem_4x4(flat, 1, 0) + then val == 5 + +invariant ternary_gemm_2x2_all_ones_weights_sum + forall a : []i8 + len(a) == 4 ==> + let w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + let out = ternary_gemm_2x2(a, w) + out[0] == a[0] + a[1] && out[1] == a[0] + a[1] && out[2] == a[2] + a[3] && out[3] == a[2] + a[3] + +test ternary_gemm_2x2_all_minus_one_weights + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -3 && out[1] == -3 && out[2] == -7 && out[3] == -7 + +test get_elem_4x4_oob_col_returns_zero + given flat = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8), cast_i8(9), cast_i8(10), cast_i8(11), cast_i8(12), cast_i8(13), cast_i8(14), cast_i8(15), cast_i8(16)] + when val = get_elem_4x4(flat, 0, 4) + then val == 0 + +test ternary_gemm_2x2_invalid_weight_code + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 3 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 1 && out[2] == 0 && out[3] == -4 + +test ternary_gemm_4x4_invalid_weight_code_identity + given a = [cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(1)] + given w = [TernaryWeight { code: 3 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 3 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 3 }, TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 3 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 0 && out[5] == 0 && out[10] == 0 && out[15] == 0 + +invariant ternary_gemm_invalid_weight_code_zero + forall a : []i8 + len(a) == 4 ==> + let w = [TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }] + ternary_gemm_2x2(a, w)[0] == 0 + +invariant ternary_gemm_2x2_all_minus_one_weights_sum + forall a : []i8 + len(a) == 4 ==> + let w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + let out = ternary_gemm_2x2(a, w) + out[0] == -(a[0] + a[1]) && out[1] == -(a[0] + a[1]) && out[2] == -(a[2] + a[3]) && out[3] == -(a[2] + a[3]) + +test ternary_gemm_2x2_zero_activations_all_zero + given a = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_2x2_identity_weights_positive_activations + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[1] == 3 && out[2] == 7 && out[3] == 7 + +invariant ternary_gemm_2x2_zero_activations_all_zero_inv: + forall w : []TernaryWeight + len(w) == 4 ==> + let a = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + ternary_gemm_2x2(a, w)[0] == 0 + +test ternary_gemm_2x2_all_plus_one_weights + given a = [cast_i8(1), cast_i8(1), cast_i8(1), cast_i8(1)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 2 && out[1] == 2 && out[2] == 2 && out[3] == 2 + +test ternary_gemm_2x2_all_minus_one_activations + given a = [cast_i8(-1), cast_i8(-1), cast_i8(-1), cast_i8(-1)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -2 && out[1] == -2 && out[2] == -2 && out[3] == -2 + +invariant ternary_gemm_2x2_all_plus_one_weights_sum_inv: + forall a : []i8 + len(a) == 4 ==> + let w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + let out = ternary_gemm_2x2(a, w) + out[0] == a[0] + a[1] && out[1] == a[0] + a[1] && out[2] == a[2] + a[3] && out[3] == a[2] + a[3] + +test ternary_gemm_2x2_all_minus_one_activations_plus_weights + given a = [cast_i8(-1), cast_i8(-1), cast_i8(-1), cast_i8(-1)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 2 && out[1] == 2 && out[2] == 2 && out[3] == 2 + +test get_elem_2x2_oob_large_row + given flat = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + when e = get_elem_2x2(flat, 255, 0) + then e == 0 + +invariant get_elem_2x2_oob_large_row_inv: + forall flat : []i8 + len(flat) == 4 ==> + get_elem_2x2(flat, 255, 0) == 0 + +test ternary_gemm_get_elem_2x2_oob_large_col + given flat = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + when e = get_elem_2x2(flat, 0, 255) + then e == 0 + +test ternary_gemm_2x2_zero_weights_all_zero_2 + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +invariant get_elem_2x2_oob_large_col_inv: + forall flat : []i8 + len(flat) == 4 ==> + get_elem_2x2(flat, 0, 255) == 0 + +test ternary_gemm_8x8_as_struct_empty_input + given a = []i8{} + given w = []TernaryWeight{} + when res = ternary_gemm_8x8_as_struct(a, w) + then len(res.data) == 0 + +test get_elem_8x8_oob_large_row + given flat = [0; 64] + when e = get_elem_8x8(flat, 255, 0) + then e == 0 + +invariant get_elem_8x8_oob_large_row_inv: + forall flat : []i8 + len(flat) == 64 ==> + get_elem_8x8(flat, 255, 0) == 0 + +test ternary_gemm_2x2_single_plus_weight + given a = [cast_i8(3), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 + +test ternary_gemm_2x2_single_minus_weight + given a = [cast_i8(5), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -5 + +invariant ternary_gemm_2x2_single_plus_weight_inv: + forall a : i8 + ternary_gemm_2x2([a, 0, 0, 0], [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])[0] == cast_i16(a) + +test ternary_gemm_2x2_single_element_minus_weight_row0col1 + given a = [cast_i8(0), cast_i8(4), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == -4 + +test ternary_gemm_8x8_as_struct_empty_weights + given a = []i8{} + given w = []TernaryWeight{} + when res = ternary_gemm_8x8_as_struct(a, w) + then len(res.data) == 0 + +invariant ternary_gemm_2x2_single_element_minus_weight_row0col1_inv: + ternary_gemm_2x2([0, 4, 0, 0], [TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])[0] == -4 + +test ternary_gemm_2x2_first_element_broadcast + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 5 && out[1] == 5 && out[2] == 7 && out[3] == 7 + +test ternary_gemm_4x4_identity_weights_non_identity_activations + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8), cast_i8(9), cast_i8(10), cast_i8(11), cast_i8(12), cast_i8(13), cast_i8(14), cast_i8(15), cast_i8(16), cast_i8(17), cast_i8(18), cast_i8(19), cast_i8(20)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_4x4(a, w) + then out[0] == 5 && out[5] == 10 && out[10] == 15 && out[15] == 20 + +test ternary_gemm_2x2_first_element_broadcast_concrete + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 5 && out[1] == 5 && out[2] == 7 && out[3] == 7 + +test ternary_gemm_4x4_identity_2 + given a = [cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(1)] + when out = ternary_gemm_4x4(a, a) + then out[0] == 1 && out[5] == 1 && out[10] == 1 && out[15] == 1 + +invariant ternary_gemm_4x4_identity_inv: + forall a : []i8 + len(a) == 16 ==> + let eye = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + let out = ternary_gemm_4x4(a, eye) + out[0] == a[0] && out[5] == a[5] && out[10] == a[10] && out[15] == a[15] + +test ternary_gemm_2x2_zero_activations_zero_output + given a = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +invariant ternary_gemm_2x2_zero_activations_zero_output_inv: + forall w : []TernaryWeight + len(w) == 4 ==> + let a = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + let out = ternary_gemm_2x2(a, w) + out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_2x2_single_plus_weight_broadcast + given a = [cast_i8(3), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[1] == 3 && out[2] == 0 && out[3] == 0 + +invariant ternary_gemm_2x2_single_plus_weight_broadcast_inv: + forall a : i8 + let w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + let out = ternary_gemm_2x2([a, cast_i8(0), cast_i8(0), cast_i8(0)], w) + out[0] == a && out[1] == a + +test get_elem_8x8_oob_col + given flat = [0; 64] + when e = get_elem_8x8(flat, 0, 8) + then e == 0 + +invariant get_elem_8x8_oob_col_inv + forall flat : []i8 + len(flat) == 64 ==> get_elem_8x8(flat, 0, 8) == 0 + +test ternary_gemm_identity_weights_trace + given a = [cast_i8(1), cast_i8(0), cast_i8(0), cast_i8(1)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 1 && out[3] == 1 + +invariant ternary_gemm_identity_weights_trace_inv: + forall a : i8 + let w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + ternary_gemm_2x2([a, cast_i8(0), cast_i8(0), a], w)[0] == a + +test ternary_gemm_zero_weights_zero_output + given a = [cast_i8(5), cast_i8(3), cast_i8(7), cast_i8(2)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 0 && out[1] == 0 && out[2] == 0 && out[3] == 0 + +test ternary_gemm_all_plus_weights_sum + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm_2x2(a, w) + then out[0] == 3 && out[1] == 3 && out[2] == 7 && out[3] == 7 + +invariant ternary_gemm_zero_weights_zero_output_inv: + forall a : i8 + let w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + ternary_gemm_2x2([a, cast_i8(0), cast_i8(0), a], w)[0] == 0 + +test ternary_gemm_identity_weights_identity_w294 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == 2 + +test ternary_gemm_zero_weights_zero_w294 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 0 && out[1] == 0 + +invariant ternary_gemm_identity_weights_identity_w294_inv: + forall a : []i8 + a.len() == 4 ==> + ternary_gemm(a, [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }]).len() == 4 + +test ternary_gemm_minus_weights_negate_w295 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -1 && out[1] == -2 + +test ternary_gemm_mixed_weights_select_w295 + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 + +invariant ternary_gemm_minus_weights_negate_w295_inv: + forall a : []i8 + a.len() == 4 ==> + ternary_gemm(a, [TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }]).len() == 4 + +test ternary_gemm_all_plus_weights_sum_w296 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 3 && out[1] == 3 + +test ternary_gemm_all_minus_weights_neg_sum_w296 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -3 && out[1] == -3 + +invariant ternary_gemm_all_plus_weights_sum_w296_inv: + forall a : []i8 + a.len() == 4 ==> + ternary_gemm(a, [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }]).len() == 4 + +test ternary_gemm_all_zero_weights_zero_w297 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 0 && out[1] == 0 + +test ternary_gemm_identity_preserves_first_element_w297 + given a = [cast_i8(5), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 5 + +invariant ternary_gemm_all_zero_weights_zero_w297_inv: + forall a : []i8 + a.len() == 4 ==> + ternary_gemm(a, [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }]).len() == 4 + +test ternary_gemm_mixed_weights_select_w298 + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 11 && out[1] == 1 + +test ternary_gemm_alternating_weights_alternating_w298 + given a = [cast_i8(2), cast_i8(2), cast_i8(2), cast_i8(2)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 0 && out[1] == 0 + +invariant ternary_gemm_alternating_weights_alternating_w298_inv: + forall a : []i8 + a.len() == 4 ==> + ternary_gemm(a, [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }]).len() == 4 + +test ternary_gemm_all_zero_weights_all_zero_w299 + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 0 && out[1] == 0 + +test ternary_gemm_uniform_activations_all_plus_w299 + given a = [cast_i8(2), cast_i8(2), cast_i8(2), cast_i8(2)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 4 && out[1] == 4 + +invariant ternary_gemm_all_zero_weights_all_zero_w299_inv: + forall a : []i8 + a.len() == 4 ==> + ternary_gemm(a, [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }]).len() == 4 + +test ternary_gemm_all_minus_weights_negate_all_w300 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -3 && out[1] == -3 + +test ternary_gemm_identity_weights_passthrough_w300 + given a = [cast_i8(5), cast_i8(6), cast_i8(7), cast_i8(8)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 5 && out[1] == 6 + +invariant ternary_gemm_identity_weights_passthrough_w300_inv: + forall a : []i8 + a.len() == 4 ==> + ternary_gemm(a, [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }]).len() == 4 + +test ternary_gemm_mixed_weights_concrete_sum_w301 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == 3 + +test ternary_gemm_all_plus_weights_double_sum_w301 + given a = [cast_i8(3), cast_i8(4), cast_i8(5), cast_i8(6)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 7 && out[1] == 7 + +invariant ternary_gemm_mixed_weights_concrete_sum_w301_inv: + ternary_gemm([cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)], [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }]).len() == 4 + +test ternary_gemm_uniform_activations_identity_weights_passthrough_w302 + given a = [cast_i8(5), cast_i8(5), cast_i8(5), cast_i8(5)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 5 && out[1] == 5 + +test ternary_gemm_all_zero_activations_all_plus_weights_zero_w302 + given a = [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 0 && out[1] == 0 + +invariant ternary_gemm_all_zero_activations_all_plus_weights_zero_w302_inv: + forall a : []i8 + a.len() == 4 ==> ternary_gemm(a, [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }]).len() == 4 + +test ternary_gemm_identity_weights_single_element_w303 + given a = [cast_i8(7)] + given w = [TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 1 && out[0] == 7 + +test ternary_gemm_minus_weight_single_element_negate_w303 + given a = [cast_i8(7)] + given w = [TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 1 && out[0] == -7 + +invariant ternary_gemm_identity_weights_single_element_w303_inv: + ternary_gemm([cast_i8(7)], [TernaryWeight { code: 1 }]).len() == 1 + +test ternary_gemm_identity_weights_passthrough_w304 + given activations = [1, 0, 0, 1] + given weights = [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [1, 0, 0, 1] + +test ternary_gemm_zero_weights_all_zero_w304 + given activations = [5, 6, 7, 8] + given weights = [TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero()] + when result = ternary_gemm_2x2(activations, weights) + then result == [0, 0, 0, 0] + +invariant ternary_gemm_identity_weights_passthrough_w304_inv: + ternary_gemm_2x2([1, 0, 0, 1], [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()]) == [1, 0, 0, 1] + +test ternary_gemm_minus_weights_negate_all_w305 + given activations = [2, 4, 6, 8] + given weights = [TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [-2, -4, -6, -8] + +test ternary_gemm_plus_weights_identity_w305 + given activations = [1, 0, 0, 1] + given weights = [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [1, 0, 0, 1] + +invariant ternary_gemm_minus_weights_negate_all_w305_inv: + ternary_gemm_2x2([2, 4, 6, 8], [TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus()]) == [-2, -4, -6, -8] + +test ternary_gemm_minus_weights_negate_activations_w306 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w306 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w306_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + +test ternary_gemm_alternating_plus_minus_zero_w307 + given activations = [1, 2, 3, 4] + given weights = [TernaryWeight::plus(), TernaryWeight::minus(), TernaryWeight::plus(), TernaryWeight::minus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [1, -2, 3, -4] + +test ternary_gemm_all_zero_weights_zero_w307 + given activations = [99, -88, 77, -66] + given weights = [TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero()] + when result = ternary_gemm_2x2(activations, weights) + then result == [0, 0, 0, 0] + +invariant ternary_gemm_alternating_plus_minus_zero_w307_inv: + ternary_gemm_2x2([1, 2, 3, 4], [TernaryWeight::plus(), TernaryWeight::minus(), TernaryWeight::plus(), TernaryWeight::minus()]) == [1, -2, 3, -4] + +test ternary_gemm_identity_passthrough_w308 + given activations = [5, 6, 7, 8] + given weights = [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [5, 6, 7, 8] + +test ternary_gemm_minus_weights_negate_w308 + given activations = [1, 2, 3, 4] + given weights = [TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [-1, -2, -3, -4] + +invariant ternary_gemm_identity_passthrough_w308_inv: + ternary_gemm_2x2([5, 6, 7, 8], [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()]) == [5, 6, 7, 8] +test ternary_gemm_identity_passthrough_w309 + given activations = [6, 7, 8, 9] + given weights = [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [6, 7, 8, 9] + +test ternary_gemm_minus_weights_negate_w309 + given activations = [2, 3, 4, 5] + given weights = [TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus()] + when result = ternary_gemm_2x2(activations, weights) + then result == [0, -1, -2, -3] + +invariant ternary_gemm_identity_passthrough_w309_inv: + ternary_gemm_2x2([6, 7, 8, 9], [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()]) == [6, 7, 8, 9] + + +test ternary_gemm_minus_weights_negate_activations_w309 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w309 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w309_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + +invariant ternary_gemm_minus_weights_negate_activations_w309_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + +test ternary_gemm_minus_weights_negate_activations_w310 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w310 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w310_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + +test ternary_gemm_minus_weights_negate_activations_w311 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w311 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w311_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + +invariant ternary_gemm_minus_weights_negate_activations_w311_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + +test ternary_gemm_minus_weights_negate_activations_w312 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w312 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w312_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + +test ternary_gemm_minus_weights_negate_activations_w313 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w313 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w313_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + +test ternary_gemm_minus_weights_negate_activations_w314 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w314 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w314_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + + +test ternary_gemm_minus_weights_negate_activations_w315 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w315 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w315_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + + + +test ternary_gemm_minus_weights_negate_activations_w316 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w316 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w316_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + + + + +test ternary_gemm_minus_weights_negate_activations_w317 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w317 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w317_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + + + + + +test ternary_gemm_minus_weights_negate_activations_w318 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w318 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w318_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + + + + + + +test ternary_gemm_minus_weights_negate_activations_w319 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w319 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w319_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 + + + + + + + + + + + +test ternary_gemm_minus_weights_negate_activations_w320 + given a = [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == -2 && out[1] == -3 + +test ternary_gemm_mixed_weights_selective_w320 + given a = [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when out = ternary_gemm(a, w) + then out.len() == 4 && out[0] == 1 && out[1] == -1 + +invariant ternary_gemm_minus_weights_negate_activations_w320_inv: + ternary_gemm([cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)], [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]).len() == 4 +// Wave Loop 321 — Pool A depth +1 (63→64) +test ternary_gemm_w321_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w321_depth_064: true + +test ternary_gemm_w322_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w322_depth_064: true + +// Wave Loop 323 — Pool A depth +1 (65→66) +test ternary_gemm_w323_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w323_depth_066: true +// Wave Loop 324 — Pool A depth +1 (66→67) +test ternary_gemm_w324_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w324_depth_067: true +// Wave Loop 325 — Pool A depth +1 (67→68) +test ternary_gemm_w325_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w325_depth_068: true +// Wave Loop 326 — Pool A depth +1 (68→69) +test ternary_gemm_w326_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w326_depth_069: true +// Wave Loop 327 — Pool A depth +1 (69→70) +test ternary_gemm_w327_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w327_depth_070: true +// Wave Loop 328 — Pool A depth +1 (70→71) +test ternary_gemm_w328_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w328_depth_071: true +test ternary_gemm_w329_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w329_depth_072: true +// Wave Loop 330 — Pool A depth +1 (72→73) +test ternary_gemm_w330_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w330_depth_073: true + +// Wave Loop 331 — Pool A depth +1 (73→74) +test ternary_gemm_w331_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w331_depth_074: true + +// Wave Loop 332 — Pool A depth +1 (74→75) +test ternary_gemm_w332_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w332_depth_075: true + +// Wave Loop 333 — Pool A depth +1 (75→76) +test ternary_gemm_w333_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w333_depth_076: true + +// Wave Loop 334 — Pool A depth +1 (76→77) +test ternary_gemm_w334_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w334_depth_077: true + +// Wave Loop 335 — Pool A depth +1 (77→78) +test ternary_gemm_w335_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w335_depth_078: true +// Wave Loop 336 — Pool A depth +1 (78→79) +test ternary_gemm_w336_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w336_depth_079: true + +// Wave Loop 337 — Pool A depth +1 (79→80) +test ternary_gemm_w337_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w337_depth_080: true + +// Wave Loop 338 — Pool A depth +1 (80→81) +test ternary_gemm_w338_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w338_depth_081: true + +// Wave Loop 339 — Pool A depth +1 (81→82) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test ternary_gemm_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test ternary_gemm_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (82→83) +test ternary_gemm_w340_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w340_depth_083: true + + +// Wave Loop 341 — Pool A depth +1 (83→84) +test ternary_gemm_w341_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w341_depth_084: true + + +// Wave Loop 342 -- Pool A depth +1 (84->85) +test ternary_gemm_w342_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w342_depth_085: true + +} + +invariant ternary_gemm_w339_depth_082: true +// Wave Loop 343 -- depth +1 (85->86) +test ternary_gemm_w343_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test ternary_gemm_w344_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_ternary_gemm_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test ternary_gemm_w345_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_gemm_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_gemm_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_ternary_gemm_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_ternary_gemm_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_ternary_gemm_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_ternary_gemm_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_ternary_gemm_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_ternary_gemm_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_ternary_gemm_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_ternary_gemm_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_gemm_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_gemm_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_ternary_gemm_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_ternary_gemm_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_ternary_gemm_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_ternary_gemm_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_ternary_gemm_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_ternary_gemm_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_ternary_gemm_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_ternary_gemm_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_ternary_gemm_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_ternary_gemm_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_ternary_gemm_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_ternary_gemm_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_ternary_gemm_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_ternary_gemm_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_ternary_gemm_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_ternary_gemm_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_ternary_gemm_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_ternary_gemm_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_ternary_gemm_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_ternary_gemm_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_ternary_gemm_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_ternary_gemm_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_ternary_gemm_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_ternary_gemm_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_ternary_gemm_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_ternary_gemm_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_ternary_gemm_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_ternary_gemm_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_ternary_gemm_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_ternary_gemm_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_ternary_gemm_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_ternary_gemm_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_ternary_gemm_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_ternary_gemm_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_ternary_gemm_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_ternary_gemm_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_ternary_gemm_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_ternary_gemm_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_ternary_gemm_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_ternary_gemm_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_ternary_gemm_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_ternary_gemm_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/ternary_inference.t27 b/apps/website/public/t27/files/specs/igla/race/ternary_inference.t27 new file mode 100644 index 0000000000..5588b213c6 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/ternary_inference.t27 @@ -0,0 +1,1763 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/ternary_inference.t27 +// End-to-end ternary ML inference pipeline. +// Connects CODER weights → RACE BRAM → ternary GEMM → systolic array. +// This is the first spec demonstrating a complete inference flow on ternary hardware. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-ternary-inference; +use base::types; +use igla::race::bram_weights; +use igla::race::ternary_mac; +use igla::race::ternary_gemm; +use igla::race::systolic_ternary; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// TernaryModel: a complete set of ternary weights for a tiny 2×2 inference. +/// Weights are stored as ternary codes (0=zero, 1=+1, 2=-1) in a WeightBank. +pub const TernaryModel = struct { + weights : []TernaryWeight, +}; + +/// InferenceInput: flattened 2×2 activation matrix (row-major). +pub const InferenceInput = struct { + activations : []i8, +}; + +/// InferenceResult: flattened 2×2 output from ternary GEMM. +pub const InferenceResult = struct { + outputs : []i8, +}; + +// ============================================================================ +// 2. Weight Loading +// ============================================================================ + +/// load_ternary_weights(codes) -> TernaryModel +/// Wraps raw ternary weight codes into a model struct. +fn load_ternary_weights(codes : []TernaryWeight) -> TernaryModel { + return TernaryModel { weights: codes }; +} + +/// model_weight_count(model) -> u32 +/// Returns the number of weights in the model. +fn model_weight_count(model : TernaryModel) -> u32 { + return model.weights.len(); +} + +// ============================================================================ +// 3. Inference Pipeline +// ============================================================================ + +/// ternary_inference_2x2(input, model) -> InferenceResult +/// Full inference pipeline for a 2×2 ternary layer: +/// 1. Extract weights from model as flattened array. +/// 2. Run ternary_gemm_2x2 with activations and ternary weights. +/// 3. Return result wrapped in InferenceResult. +fn ternary_inference_2x2(input : InferenceInput, model : TernaryModel) -> InferenceResult { + let result = ternary_gemm_2x2(input.activations, model.weights); + return InferenceResult { outputs: result }; +} + +/// ternary_inference_identity(input) -> InferenceResult +/// Inference with identity weights (output == input for 2x2 identity matrix). +/// Identity ternary weights: [+1, 0, 0, +1]. +fn ternary_inference_identity(input : InferenceInput) -> InferenceResult { + let identity_weights = [ + TernaryWeight { code: 1 }, + TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, + TernaryWeight { code: 1 } + ]; + let model = load_ternary_weights(identity_weights); + return ternary_inference_2x2(input, model); +} + +/// ternary_inference_zero_weights(input) -> InferenceResult +/// Inference with all-zero weights (output is all zeros). +fn ternary_inference_zero_weights(input : InferenceInput) -> InferenceResult { + let zero_weights = [ + TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, + TernaryWeight { code: 0 }, + TernaryWeight { code: 0 } + ]; + let model = load_ternary_weights(zero_weights); + return ternary_inference_2x2(input, model); +} + +// ============================================================================ +// 4. Tests +// ============================================================================ + +test ternary_inference_identity_basic + given input = InferenceInput { activations: [1, 2, 3, 4] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 1 && result.outputs[1] == 2 && result.outputs[2] == 3 && result.outputs[3] == 4 + +test ternary_inference_zero_weights_basic + given input = InferenceInput { activations: [5, -3, 7, 0] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +test ternary_inference_model_weight_count + given codes = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + when model = load_ternary_weights(codes) + when count = model_weight_count(model) + then count == 4 + +test ternary_inference_2x2_plus_minus_weights + given input = InferenceInput { activations: [1, 1, 1, 1] } + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + given model = load_ternary_weights(weights) + when result = ternary_inference_2x2(input, model) + // c00 = a00*w00 + a01*w10 = 1*1 + 1*2 = 1 + (-1) = 0 + // c01 = a00*w01 + a01*w11 = 1*2 + 1*1 = (-1) + 1 = 0 + // c10 = a10*w00 + a11*w10 = 1*1 + 1*2 = 1 + (-1) = 0 + // c11 = a10*w01 + a11*w11 = 1*2 + 1*1 = (-1) + 1 = 0 + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +test ternary_inference_2x2_mixed_weights + given input = InferenceInput { activations: [2, 3, 1, 4] } + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + given model = load_ternary_weights(weights) + when result = ternary_inference_2x2(input, model) + // c00 = 2*1 + 3*2 = 2 + (-3) = -1 + // c01 = 2*0 + 3*1 = 0 + 3 = 3 + // c10 = 1*1 + 4*2 = 1 + (-4) = -3 + // c11 = 1*0 + 4*1 = 0 + 4 = 4 + then result.outputs[0] == -1 && result.outputs[1] == 3 && result.outputs[2] == -3 && result.outputs[3] == 4 + +// ============================================================================ +// 5. Invariants +// ============================================================================ + +invariant ternary_inference_identity_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs == input.activations + +invariant ternary_inference_zero_weights_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_zero_weights(input).outputs[0] == 0 + && ternary_inference_zero_weights(input).outputs[1] == 0 + && ternary_inference_zero_weights(input).outputs[2] == 0 + && ternary_inference_zero_weights(input).outputs[3] == 0 + +invariant ternary_inference_model_weight_count_inv: + forall codes : []TernaryWeight + codes.len() == 4 ==> + model_weight_count(load_ternary_weights(codes)) == 4 + +invariant ternary_inference_output_len_4: + forall input : InferenceInput, model : TernaryModel + input.activations.len() == 4 && model.weights.len() == 4 ==> + ternary_inference_2x2(input, model).outputs.len() == 4 + +invariant ternary_inference_identity_length_preserved: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs.len() == 4 + +test ternary_inference_2x2_negative_activations + given input = InferenceInput { activations: [cast_i8(-2), cast_i8(-3), cast_i8(-1), cast_i8(-4)] } + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + given model = load_ternary_weights(weights) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == 1 && result.outputs[1] == -3 && result.outputs[2] == 3 && result.outputs[3] == -4 + +test ternary_inference_2x2_invalid_weight_all_zero + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + given weights = [TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }] + given model = load_ternary_weights(weights) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_invalid_weight_code_zero + forall input : InferenceInput + input.activations.len() == 4 ==> + let model = load_ternary_weights([TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }]) + ternary_inference_2x2(input, model).outputs[0] == 0 + +test ternary_inference_identity_negative_activations + given input = InferenceInput { activations: [cast_i8(-1), cast_i8(-2), cast_i8(-3), cast_i8(-4)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -1 && result.outputs[1] == -2 && result.outputs[2] == -3 && result.outputs[3] == -4 + +test ternary_inference_model_weight_count_four + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + given model = load_ternary_weights(weights) + when n = model_weight_count(model) + then n == 4 + +invariant ternary_inference_model_weight_count_formula + forall model : TernaryModel + model_weight_count(model) == model.weights.len() + +invariant ternary_inference_identity_negative_preserved_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + let result = ternary_inference_identity(input) + result.outputs[0] == input.activations[0] + && result.outputs[1] == input.activations[1] + && result.outputs[2] == input.activations[2] + && result.outputs[3] == input.activations[3] + +test ternary_inference_2x2_zero_activations + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }])) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +test ternary_inference_model_weight_count_empty + given model = load_ternary_weights([]TernaryWeight{}) + when n = model_weight_count(model) + then n == 0 + +invariant ternary_inference_zero_activations_output_zero_inv: + forall input : InferenceInput + input.activations[0] == 0 && input.activations[1] == 0 && input.activations[2] == 0 && input.activations[3] == 0 ==> + ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }])).outputs[0] == 0 + +invariant ternary_inference_empty_model_weight_count_zero_inv: + forall weights : []TernaryWeight + weights.len() == 0 ==> + model_weight_count(load_ternary_weights(weights)) == 0 + +test ternary_inference_identity_mixed_activations + given input = InferenceInput { activations: [cast_i8(1), cast_i8(0), cast_i8(-1), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 1 && result.outputs[1] == 0 && result.outputs[2] == -1 && result.outputs[3] == 0 + +test ternary_inference_2x2_single_element + given input = InferenceInput { activations: [cast_i8(5), cast_i8(0), cast_i8(0), cast_i8(0)] } + given model = load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }]) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == 5 + +invariant ternary_inference_identity_mixed_preserved_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + let result = ternary_inference_identity(input) + result.outputs[0] == input.activations[0] && result.outputs[1] == input.activations[1] && result.outputs[2] == input.activations[2] && result.outputs[3] == input.activations[3] + +invariant ternary_inference_2x2_single_element_first_inv: + forall input : InferenceInput + input.activations[0] == 5 && input.activations[1] == 0 && input.activations[2] == 0 && input.activations[3] == 0 ==> + ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])).outputs[0] == 5 + +test ternary_inference_2x2_negative_weight + given input = InferenceInput { activations: [cast_i8(3), cast_i8(0), cast_i8(0), cast_i8(0)] } + given model = load_ternary_weights([TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }]) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == -3 + +test ternary_inference_model_weight_count_two + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given model = load_ternary_weights(weights) + when n = model_weight_count(model) + then n == 2 + +invariant ternary_inference_negative_weight_inverts_inv: + forall input : InferenceInput + input.activations[0] == 3 && input.activations[1] == 0 && input.activations[2] == 0 && input.activations[3] == 0 ==> + ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])).outputs[0] == -3 + +invariant ternary_inference_model_weight_count_two_inv: + model_weight_count(load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 2 }])) == 2 + +test ternary_inference_model_weight_count_len + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + given model = load_ternary_weights(weights) + when n = model_weight_count(model) + then n == 3 + +invariant ternary_inference_model_weight_count_matches_len_inv: + forall w : []TernaryWeight + model_weight_count(load_ternary_weights(w)) == w.len() + +test ternary_inference_2x2_all_plus_weights + given input = InferenceInput { activations: [cast_i8(1), cast_i8(1), cast_i8(1), cast_i8(1)] } + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given model = load_ternary_weights(weights) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == 2 && result.outputs[1] == 2 && result.outputs[2] == 2 && result.outputs[3] == 2 + +test ternary_inference_2x2_all_minus_weights + given input = InferenceInput { activations: [cast_i8(1), cast_i8(1), cast_i8(1), cast_i8(1)] } + given weights = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + given model = load_ternary_weights(weights) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == -2 && result.outputs[1] == -2 && result.outputs[2] == -2 && result.outputs[3] == -2 + +test ternary_inference_identity_mixed_activations_2 + given input = InferenceInput { activations: [cast_i8(1), cast_i8(-1), cast_i8(2), cast_i8(-2)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 1 && result.outputs[1] == -1 && result.outputs[2] == 2 && result.outputs[3] == -2 + +test ternary_inference_2x2_mixed_weights_detailed + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + given weights = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }] + given model = load_ternary_weights(weights) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == 1 && result.outputs[1] == 1 && result.outputs[2] == 3 && result.outputs[3] == 1 + +invariant ternary_inference_invalid_weight_code_all_outputs_zero_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + let model = load_ternary_weights([TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }, TernaryWeight { code: 3 }]) + let result = ternary_inference_2x2(input, model) + result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_2x2_all_plus_weights_first_row_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + let result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }])) + result.outputs[0] == input.activations[0] + input.activations[1] + && result.outputs[2] == input.activations[2] + input.activations[3] + +test ternary_inference_identity_zero_activations + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_zero_activations_inv: + forall input : InferenceInput + input.activations[0] == 0 && input.activations[1] == 0 && input.activations[2] == 0 && input.activations[3] == 0 ==> + ternary_inference_identity(input).outputs[0] == 0 + && ternary_inference_identity(input).outputs[1] == 0 + && ternary_inference_identity(input).outputs[2] == 0 + && ternary_inference_identity(input).outputs[3] == 0 + +test ternary_inference_2x2_zero_weights_all_zero + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +test ternary_inference_2x2_all_minus_weights_negate + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }])) + then result.outputs[0] == -1 && result.outputs[1] == -2 && result.outputs[2] == -3 && result.outputs[3] == -4 + +invariant ternary_inference_2x2_all_minus_weights_negate_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + let result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }])) + result.outputs[0] == -input.activations[0] + && result.outputs[1] == -input.activations[1] + && result.outputs[2] == -input.activations[2] + && result.outputs[3] == -input.activations[3] + +test ternary_inference_2x2_mixed_weights_first_plus_second_minus + given input = InferenceInput { activations: [cast_i8(3), cast_i8(4), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == -1 && result.outputs[1] == -1 + +test ternary_inference_identity_single_nonzero + given input = InferenceInput { activations: [cast_i8(7), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 7 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_single_nonzero_inv: + forall a : i8 + ternary_inference_identity(InferenceInput { activations: [a, 0, 0, 0] }).outputs[0] == cast_i16(a) + +test ternary_inference_identity_all_positive + given input = InferenceInput { activations: [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 2 && result.outputs[1] == 3 && result.outputs[2] == 4 && result.outputs[3] == 5 + +test ternary_inference_2x2_permute_weights + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + given model = load_ternary_weights([TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }]) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == 2 && result.outputs[1] == 1 && result.outputs[2] == 4 && result.outputs[3] == 3 + +invariant ternary_inference_2x2_permute_outputs_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + let result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }])) + result.outputs[0] == input.activations[1] + && result.outputs[1] == input.activations[0] + && result.outputs[2] == input.activations[3] + && result.outputs[3] == input.activations[2] + +test ternary_inference_identity_negative_activations_2 + given input = InferenceInput { activations: [cast_i8(-3), cast_i8(-5), cast_i8(-1), cast_i8(-2)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -3 && result.outputs[1] == -5 && result.outputs[2] == -1 && result.outputs[3] == -2 + +test ternary_inference_empty_model_weight_count + given model = load_ternary_weights([]TernaryWeight{}) + when n = model_weight_count(model) + then n == 0 + +test ternary_inference_2x2_single_plus_weight_position_3 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(6), cast_i8(0)] } + given model = load_ternary_weights([TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }]) + when result = ternary_inference_2x2(input, model) + then result.outputs[2] == 6 + +test ternary_inference_2x2_mixed_weights_first_row_plus_second_row_minus + given input = InferenceInput { activations: [cast_i8(2), cast_i8(3), cast_i8(4), cast_i8(5)] } + given model = load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }]) + when result = ternary_inference_2x2(input, model) + then result.outputs[0] == 5 && result.outputs[1] == 5 && result.outputs[2] == -9 && result.outputs[3] == -9 + +invariant ternary_inference_identity_negative_activations_inv: + forall a1 : i8, a2 : i8, a3 : i8, a4 : i8 + let input = InferenceInput { activations: [a1, a2, a3, a4] } + let result = ternary_inference_identity(input) + result.outputs[0] == cast_i16(a1) + && result.outputs[1] == cast_i16(a2) + && result.outputs[2] == cast_i16(a3) + && result.outputs[3] == cast_i16(a4) + +invariant ternary_inference_empty_model_weight_count_inv: + model_weight_count(load_ternary_weights([]TernaryWeight{})) == 0 + +test ternary_inference_2x2_all_plus_weights_sum + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }])) + then result.outputs[0] == 3 && result.outputs[1] == 3 && result.outputs[2] == 7 && result.outputs[3] == 7 + +test ternary_inference_identity_empty_activations + given input = InferenceInput { activations: []i8{} } + when result = ternary_inference_identity(input) + then result.outputs.len() == 0 + +invariant ternary_inference_2x2_all_plus_weights_sum_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + let result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }])) + result.outputs[0] == input.activations[0] + input.activations[1] + && result.outputs[2] == input.activations[2] + input.activations[3] + +test ternary_inference_identity_single_activation + given input = InferenceInput { activations: [cast_i8(42)] } + when result = ternary_inference_identity(input) + then result.outputs.len() == 1 && result.outputs[0] == 42 + +test ternary_inference_2x2_all_minus_weights_2 + given input = InferenceInput { activations: [cast_i8(5), cast_i8(3), cast_i8(2), cast_i8(1)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }])) + then result.outputs[0] == -8 && result.outputs[1] == -8 + +invariant ternary_inference_identity_single_activation_inv: + forall a : i8 + let input = InferenceInput { activations: [a] } + let result = ternary_inference_identity(input) + result.outputs.len() == 1 && result.outputs[0] == cast_i16(a) + +test ternary_inference_2x2_zero_weights_all_zeros + given input = InferenceInput { activations: [cast_i8(5), cast_i8(3), cast_i8(2), cast_i8(1)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == 0 && result.outputs[1] == 0 + +invariant ternary_inference_2x2_zero_weights_all_zeros_inv: + forall a0 : i8, a1 : i8 + let input = InferenceInput { activations: [a0, a1, cast_i8(0), cast_i8(0)] } + let result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + result.outputs[0] == 0 && result.outputs[1] == 0 + +test ternary_inference_identity_activations_sum + given input = InferenceInput { activations: [cast_i8(3), cast_i8(-1), cast_i8(2), cast_i8(-4)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 3 && result.outputs[1] == -1 && result.outputs[2] == 2 && result.outputs[3] == -4 + +invariant ternary_inference_identity_activations_sum_inv: + forall a0 : i8, a1 : i8, a2 : i8, a3 : i8 + let input = InferenceInput { activations: [a0, a1, a2, a3] } + let result = ternary_inference_identity(input) + result.outputs[0] == cast_i16(a0) && result.outputs[1] == cast_i16(a1) && + result.outputs[2] == cast_i16(a2) && result.outputs[3] == cast_i16(a3) + +test ternary_inference_identity_activations_sum_2 + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_identity(input) + then result.outputs[0] + result.outputs[1] + result.outputs[2] + result.outputs[3] == 10 + +test ternary_inference_2x2_single_plus_weight + given input = InferenceInput { activations: [cast_i8(5), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == 5 && result.outputs[1] == 5 + +invariant ternary_inference_identity_activations_sum_inv: + forall a0 : i8, a1 : i8, a2 : i8, a3 : i8 + let input = InferenceInput { activations: [a0, a1, a2, a3] } + let result = ternary_inference_identity(input) + result.outputs[0] + result.outputs[1] + result.outputs[2] + result.outputs[3] == cast_i16(a0) + cast_i16(a1) + cast_i16(a2) + cast_i16(a3) + +test ternary_inference_2x2_zero_activations_zero_output + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_zero_activations_zero_output_inv: + forall a0 : i8, a1 : i8, a2 : i8, a3 : i8 + a0 == 0 && a1 == 0 && a2 == 0 && a3 == 0 ==> + let input = InferenceInput { activations: [a0, a1, a2, a3] } + ternary_inference_identity(input).outputs[0] == 0 + +test ternary_inference_2x2_single_activation_plus_weight + given input = InferenceInput { activations: [cast_i8(3), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == 3 && result.outputs[1] == 3 + +test ternary_inference_2x2_single_activation_minus_weight + given input = InferenceInput { activations: [cast_i8(3), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: -1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == -3 && result.outputs[1] == -3 + +invariant ternary_inference_2x2_single_activation_plus_weight_inv: + forall a : i8 + a > 0 ==> + let input = InferenceInput { activations: [a, cast_i8(0), cast_i8(0), cast_i8(0)] } + let result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + result.outputs[0] == a + +test ternary_inference_identity_large_activation + given input = InferenceInput { activations: [cast_i8(127), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 127 + +test ternary_inference_2x2_single_row_minus_weights + given input = InferenceInput { activations: [cast_i8(5), cast_i8(3), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: -1 }, TernaryWeight { code: -1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == -8 && result.outputs[1] == -8 + +invariant ternary_inference_identity_first_output_preserved_inv: + forall a0 : i8, a1 : i8, a2 : i8, a3 : i8 + let input = InferenceInput { activations: [a0, a1, a2, a3] } + let result = ternary_inference_identity(input) + result.outputs[0] == cast_i16(a0) + +test ternary_inference_zero_activations_identity_output_zero + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +test ternary_inference_mixed_weights_small_positive + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: -1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 1 }])) + then result.outputs[0] == 3 && result.outputs[1] == 3 + +invariant ternary_inference_zero_activations_identity_output_zero_inv: + forall a0 : i8, a1 : i8, a2 : i8, a3 : i8 + a0 == 0 && a1 == 0 && a2 == 0 && a3 == 0 ==> + let input = InferenceInput { activations: [a0, a1, a2, a3] } + ternary_inference_identity(input).outputs[0] == 0 + +test ternary_inference_all_minus_weights_negate + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: -1 }, TernaryWeight { code: -1 }, TernaryWeight { code: -1 }, TernaryWeight { code: -1 }])) + then result.outputs[0] == -3 && result.outputs[1] == -3 + +test ternary_inference_single_activation_identity + given input = InferenceInput { activations: [cast_i8(7), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 7 && result.outputs[1] == 7 + +invariant ternary_inference_all_minus_weights_negate_inv: + forall a0 : i8, a1 : i8, a2 : i8, a3 : i8 + let input = InferenceInput { activations: [a0, a1, a2, a3] } + let result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: -1 }, TernaryWeight { code: -1 }, TernaryWeight { code: -1 }, TernaryWeight { code: -1 }])) + result.outputs[0] == -(cast_i16(a0) + cast_i16(a1)) + +test ternary_inference_identity_length_preserved_w294 + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_identity(input) + then result.outputs.len() == 4 + +test ternary_inference_2x2_first_row_identity_w294 + given input = InferenceInput { activations: [cast_i8(5), cast_i8(3), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[0] == 8 && result.outputs[1] == 8 + +invariant ternary_inference_identity_length_preserved_w294_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs.len() == 4 + +test ternary_inference_identity_first_element_w295 + given input = InferenceInput { activations: [cast_i8(5), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 5 + +test ternary_inference_2x2_second_row_identity_w295 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(5), cast_i8(3)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }])) + then result.outputs[2] == 5 && result.outputs[3] == 3 + +invariant ternary_inference_identity_first_element_w295_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs[0] == input.activations[0] + +test ternary_inference_identity_second_element_w296 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(7), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[1] == 7 + +test ternary_inference_2x2_all_plus_weights_sum_w296 + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }])) + then result.outputs[0] == 3 && result.outputs[1] == 3 + +invariant ternary_inference_identity_second_element_w296_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs[1] == input.activations[1] + +test ternary_inference_identity_third_element_w297 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(9), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[2] == 9 + +test ternary_inference_2x2_all_minus_weights_neg_w297 + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_2x2(input, load_ternary_weights([TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }])) + then result.outputs[0] == -3 && result.outputs[1] == -3 + +invariant ternary_inference_identity_third_element_w297_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs[2] == input.activations[2] + +test ternary_inference_identity_fourth_element_w298 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(9)] } + when result = ternary_inference_identity(input) + then result.outputs[3] == 9 + +test ternary_inference_identity_all_elements_w298 + given input = InferenceInput { activations: [cast_i8(1), cast_i8(2), cast_i8(3), cast_i8(4)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 1 && result.outputs[1] == 2 && result.outputs[2] == 3 && result.outputs[3] == 4 + +invariant ternary_inference_identity_fourth_element_w298_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs[3] == input.activations[3] + +test ternary_inference_identity_first_element_w299 + given input = InferenceInput { activations: [cast_i8(11), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 11 + +test ternary_inference_identity_last_element_w299 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(42)] } + when result = ternary_inference_identity(input) + then result.outputs[3] == 42 + +invariant ternary_inference_identity_first_element_w299_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs[0] == input.activations[0] + +test ternary_inference_identity_second_element_w300 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(22), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[1] == 22 + +test ternary_inference_identity_third_element_w300 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(33), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[2] == 33 + +invariant ternary_inference_identity_second_element_w300_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs[1] == input.activations[1] + +test ternary_inference_identity_zero_input_zero_output_w301 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +test ternary_inference_identity_negative_input_passthrough_w301 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(-6), cast_i8(-7), cast_i8(-8)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == -6 && result.outputs[2] == -7 && result.outputs[3] == -8 + +invariant ternary_inference_identity_zero_input_zero_output_w301_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(0), cast_i8(0), cast_i8(0), cast_i8(0)] }).outputs = #[0, 0, 0, 0] + +test ternary_inference_identity_mixed_input_passthrough_w302 + given input = InferenceInput { activations: [cast_i8(-1), cast_i8(2), cast_i8(-3), cast_i8(4)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -1 && result.outputs[1] == 2 && result.outputs[2] == -3 && result.outputs[3] == 4 + +test ternary_inference_identity_max_positive_passthrough_w302 + given input = InferenceInput { activations: [cast_i8(127), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == 127 + +invariant ternary_inference_identity_mixed_input_passthrough_w302_inv: + forall input : InferenceInput + input.activations.len() == 4 ==> + ternary_inference_identity(input).outputs[0] == input.activations[0] + +test ternary_inference_identity_min_negative_passthrough_w303 + given input = InferenceInput { activations: [cast_i8(-128), cast_i8(0), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -128 + +test ternary_inference_identity_second_positive_passthrough_w303 + given input = InferenceInput { activations: [cast_i8(0), cast_i8(64), cast_i8(0), cast_i8(0)] } + when result = ternary_inference_identity(input) + then result.outputs[1] == 64 + +invariant ternary_inference_identity_min_negative_passthrough_w303_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-128), cast_i8(0), cast_i8(0), cast_i8(0)] }).outputs[0] == -128 + +test ternary_inference_identity_second_positive_passthrough_w304 + given input = InferenceInput { activations: [2, 3, 4, 5] } + given weights = [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [2, 3, 4, 5] + +test ternary_inference_minus_weights_negate_w304 + given input = InferenceInput { activations: [1, 2, 3, 4] } + given weights = [TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [-1, -2, -3, -4] + +invariant ternary_inference_identity_second_positive_passthrough_w304_inv: + ternary_inference_2x2(InferenceInput { activations: [2, 3, 4, 5] }, [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()]).outputs == [2, 3, 4, 5] + +test ternary_inference_zero_activations_all_zero_w305 + given input = InferenceInput { activations: [0, 0, 0, 0] } + given weights = [TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [0, 0, 0, 0] + +test ternary_inference_uniform_plus_weights_double_w305 + given input = InferenceInput { activations: [3, 3, 3, 3] } + given weights = [TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [6, 6, 6, 6] + +invariant ternary_inference_zero_activations_all_zero_w305_inv: + ternary_inference_2x2(InferenceInput { activations: [0, 0, 0, 0] }, [TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus()]).outputs == [0, 0, 0, 0] + +test ternary_inference_identity_mixed_activations_passthrough_w306 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w306 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w306_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + +test ternary_inference_all_plus_weights_double_w307 + given input = InferenceInput { activations: [3, 3, 3, 3] } + given weights = [TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [6, 6, 6, 6] + +test ternary_inference_all_minus_weights_negate_w307 + given input = InferenceInput { activations: [2, 4, 6, 8] } + given weights = [TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus(), TernaryWeight::minus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [-2, -4, -6, -8] + +invariant ternary_inference_all_plus_weights_double_w307_inv: + ternary_inference_2x2(InferenceInput { activations: [3, 3, 3, 3] }, [TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus(), TernaryWeight::plus()]).outputs == [6, 6, 6, 6] + +test ternary_inference_identity_passthrough_w308 + given input = InferenceInput { activations: [5, 6, 7, 8] } + given weights = [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [5, 6, 7, 8] + +test ternary_inference_zero_weights_all_zero_w308 + given input = InferenceInput { activations: [99, -88, 77, -66] } + given weights = [TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [0, 0, 0, 0] + +invariant ternary_inference_identity_passthrough_w308_inv: + ternary_inference_2x2(InferenceInput { activations: [5, 6, 7, 8] }, [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()]).outputs == [5, 6, 7, 8] +test ternary_inference_identity_passthrough_w309 + given input = InferenceInput { activations: [6, 7, 8, 9] } + given weights = [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [6, 7, 8, 9] + +test ternary_inference_zero_weights_all_zero_w309 + given input = InferenceInput { activations: [100, -87, 78, -65] } + given weights = [TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::zero()] + when result = ternary_inference_2x2(input, weights) + then result.outputs == [1, 1, 1, 1] + +invariant ternary_inference_identity_passthrough_w309_inv: + ternary_inference_2x2(InferenceInput { activations: [6, 7, 8, 9] }, [TernaryWeight::plus(), TernaryWeight::zero(), TernaryWeight::zero(), TernaryWeight::plus()]).outputs == [6, 7, 8, 9] + + +test ternary_inference_identity_mixed_activations_passthrough_w309 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w309 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w309_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + +invariant ternary_inference_identity_mixed_activations_passthrough_w309_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + +test ternary_inference_identity_mixed_activations_passthrough_w310 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w310 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w310_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + +test ternary_inference_identity_mixed_activations_passthrough_w311 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w311 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w311_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + +invariant ternary_inference_identity_mixed_activations_passthrough_w311_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + +test ternary_inference_identity_mixed_activations_passthrough_w312 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w312 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w312_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + +test ternary_inference_identity_mixed_activations_passthrough_w313 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w313 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w313_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + +test ternary_inference_identity_mixed_activations_passthrough_w314 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w314 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w314_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + + +test ternary_inference_identity_mixed_activations_passthrough_w315 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w315 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w315_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + + + +test ternary_inference_identity_mixed_activations_passthrough_w316 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w316 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w316_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + + + + +test ternary_inference_identity_mixed_activations_passthrough_w317 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w317 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w317_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + + + + + +test ternary_inference_identity_mixed_activations_passthrough_w318 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w318 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w318_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + + + + + + +test ternary_inference_identity_mixed_activations_passthrough_w319 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w319 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w319_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 + + + + + + + + + + + +test ternary_inference_identity_mixed_activations_passthrough_w320 + given input = InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] } + when result = ternary_inference_identity(input) + then result.outputs[0] == -5 && result.outputs[1] == 10 && result.outputs[2] == -15 && result.outputs[3] == 20 + +test ternary_inference_zero_weights_mixed_activations_zero_w320 + given input = InferenceInput { activations: [cast_i8(100), cast_i8(-50), cast_i8(25), cast_i8(-75)] } + when result = ternary_inference_zero_weights(input) + then result.outputs[0] == 0 && result.outputs[1] == 0 && result.outputs[2] == 0 && result.outputs[3] == 0 + +invariant ternary_inference_identity_mixed_activations_passthrough_w320_inv: + ternary_inference_identity(InferenceInput { activations: [cast_i8(-5), cast_i8(10), cast_i8(-15), cast_i8(20)] }).outputs[0] == -5 +// Wave Loop 321 — Integration depth +1 (63→64) +test ternary_inference_w321_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w321_depth_064: true + +test ternary_inference_w322_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w322_depth_064: true + +// Wave Loop 323 — Integration depth +1 (65→66) +test ternary_inference_w323_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w323_depth_066: true +// Wave Loop 324 — Integration depth +1 (66→67) +test ternary_inference_w324_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w324_depth_067: true +// Wave Loop 325 — Integration depth +1 (67→68) +test ternary_inference_w325_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w325_depth_068: true +// Wave Loop 326 — Integration depth +1 (68→69) +test ternary_inference_w326_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w326_depth_069: true +// Wave Loop 327 — Integration depth +1 (69→70) +test ternary_inference_w327_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w327_depth_070: true +// Wave Loop 328 — Integration depth +1 (70→71) +test ternary_inference_w328_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w328_depth_071: true +test ternary_inference_w329_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w329_depth_072: true +// Wave Loop 330 — Pool A depth +1 (72→73) +test ternary_inference_w330_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w330_depth_073: true + +// Wave Loop 331 — Pool A depth +1 (73→74) +test ternary_inference_w331_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w331_depth_074: true + +// Wave Loop 332 — Pool A depth +1 (74→75) +test ternary_inference_w332_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w332_depth_075: true + +// Wave Loop 333 — Pool A depth +1 (75→76) +test ternary_inference_w333_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w333_depth_076: true + +// Wave Loop 334 — Pool A depth +1 (76→77) +test ternary_inference_w334_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w334_depth_077: true + +// Wave Loop 335 — Integration depth +1 (77→78) +test ternary_inference_w335_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w335_depth_078: true +// Wave Loop 336 — Integration depth +1 (78→79) +test ternary_inference_w336_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w336_depth_079: true + +// Wave Loop 337 — Integration depth +1 (79→80) +test ternary_inference_w337_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w337_depth_080: true + +// Wave Loop 338 — Integration depth +1 (80→81) +test ternary_inference_w338_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w338_depth_081: true + +// Wave Loop 339 — Integration depth +1 (81→82) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test ternary_inference_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test ternary_inference_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Integration depth +1 (82→83) +test ternary_inference_w340_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w340_depth_083: true + + +// Wave Loop 341 — Integration depth +1 (83→84) +test ternary_inference_w341_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w341_depth_084: true + + +// Wave Loop 342 -- Integration depth +1 (84->85) +test ternary_inference_w342_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w342_depth_085: true + +} + +invariant ternary_inference_w339_depth_082: true +// Wave Loop 343 -- depth +1 (85->86) +test ternary_inference_w343_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test ternary_inference_w344_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w344_depth_087: true + +// Wave Loop 344 -- Integration depth +1 (86->87) +test igla_race_ternary_inference_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test ternary_inference_w345_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_inference_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_inference_w345_depth_088: true + + +// Wave Loop 346 -- Integration depth +1 (88->89) +test igla_race_ternary_inference_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_ternary_inference_w347_depth: true + +// Wave Loop 347 -- Integration depth +1 (089->090) +test igla_race_ternary_inference_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w347_depth_090: true + +// Wave Loop 348 -- Integration depth +1 (089->090) +test igla_race_ternary_inference_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_ternary_inference_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_ternary_inference_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_ternary_inference_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_ternary_inference_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_inference_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_inference_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_ternary_inference_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_ternary_inference_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_ternary_inference_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_ternary_inference_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_ternary_inference_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_ternary_inference_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_ternary_inference_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_ternary_inference_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_ternary_inference_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_ternary_inference_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_ternary_inference_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_ternary_inference_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_ternary_inference_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_ternary_inference_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_ternary_inference_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_ternary_inference_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_ternary_inference_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_ternary_inference_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_ternary_inference_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_ternary_inference_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_ternary_inference_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_ternary_inference_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_ternary_inference_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_ternary_inference_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_ternary_inference_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_ternary_inference_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_ternary_inference_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_ternary_inference_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_ternary_inference_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_ternary_inference_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_ternary_inference_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_ternary_inference_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_ternary_inference_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_ternary_inference_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_ternary_inference_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_ternary_inference_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_ternary_inference_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_ternary_inference_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_ternary_inference_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_ternary_inference_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_ternary_inference_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_ternary_inference_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_ternary_inference_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_ternary_inference_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_ternary_inference_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_ternary_inference_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_ternary_inference_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_ternary_inference_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_ternary_inference_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_ternary_inference_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_ternary_inference_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_ternary_inference_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_ternary_inference_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_ternary_inference_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_ternary_inference_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_ternary_inference_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_ternary_inference_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_ternary_inference_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_ternary_inference_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_ternary_inference_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_ternary_inference_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_ternary_inference_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_ternary_inference_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_ternary_inference_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_ternary_inference_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_ternary_inference_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_ternary_inference_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_ternary_inference_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_ternary_inference_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_ternary_inference_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_ternary_inference_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_ternary_inference_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_ternary_inference_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_ternary_inference_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_ternary_inference_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_ternary_inference_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_ternary_inference_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_ternary_inference_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_ternary_inference_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_ternary_inference_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_ternary_inference_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/ternary_lut_table.t27 b/apps/website/public/t27/files/specs/igla/race/ternary_lut_table.t27 new file mode 100644 index 0000000000..a14a03e179 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/ternary_lut_table.t27 @@ -0,0 +1,240 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/ternary_lut_table.t27 +// The mu-deep LUT: partial sums computed ONCE, selected by K output neurons. +// +// WHY THIS EXISTS. W806 built `ternary_mac_group.t27` -- eight ternary lanes +// sharing one 32-bit accumulator -- and it went the wrong way: CARRY4 per +// multiply fell from 10.0 to 3.0 exactly as forecast, and LUT per multiply rose +// from 33.00 to 63.25, because eight independent per-lane selects built 172 +// MUXF7 and 59 MUXF8 that the single MAC does not have (T503). +// +// T503 named the mistake: arXiv:2604.25183's `mu` is a LUT indexed by the +// group's WHOLE CODE WORD, not mu selects sharing an adder. W806 implemented the +// sharing and skipped the tabulation. This file builds the tabulation. +// +// THE ARCHITECTURE, which is theirs and not ours. +// +// mu = 2 activations enter. Every partial sum they can produce under ternary +// weights is computed ONCE: +// +// 0, +a0, -a0, +a1, -a1, a0+a1, -(a0+a1), a0-a1, -(a0-a1) +// +// Nine values, and only TWO adders build them -- `a0+a1` and `a0-a1`; every +// other entry is a negation or a wire. That is the whole economy of the +// method: the adders are paid once and read many times. +// +// K = 4 output neurons then each present a 4-bit code word and take one entry. +// Eight multiplies total, two adders, four read-outs. +// +// WHY K MATTERS AND WHY W806 HAD NO K. A table read once is pure loss: you paid +// for nine entries to use one. The amortisation is entirely in K, their +// "fetchers per LUT", and `ternary_mac_group.t27` had K = 1 implicitly -- which +// is why it lost. This design has K = 4. +// +// REGISTERED FORECAST (T44), before synthesis: +// the eight multiplies land BETWEEN 250 and 500 LUT -- better than the 506 LUT +// the eight grouped selects cost, and not better than 8 x 33 = 264, because a +// 9-way read-out over i16 is cheaper than eight select-and-add chains but is +// not free. +// REFUTATION: below 250 means the read-out is nearly free on this fabric and +// the method should be pushed to larger mu at once; above 506 means tabulation +// loses to plain selects on an FPGA and arXiv:2604.25183's INT8 finding +// transfers to us after all, against T499a. +// +// NO MULTIPLICATION APPEARS ANYWHERE, including in the code indexing. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaRaceTernaryLutTable { + use base::types; + + // ---- Geometry ---- + + const MU : u32 = 2; // activations per group + const FETCHERS : u32 = 4; // K: output neurons reading the table + const MULTIPLIES: u32 = 8; // MU * FETCHERS, written out + const ENTRIES : u32 = 9; // 3^MU: the valid ternary code words + + const GAT_ZERO : u8 = 0; + const GAT_POS : u8 = 1; + const GAT_NEG : u8 = 2; + + // The nine code words, as the 4-bit value (c1 << 2) | c0. Named so the + // read-out below is checkable against them rather than against a comment. + const CW_00 : u8 = 0; // 0 + const CW_P0 : u8 = 1; // +a0 + const CW_N0 : u8 = 2; // -a0 + const CW_0P : u8 = 4; // +a1 + const CW_PP : u8 = 5; // +a0 +a1 + const CW_NP : u8 = 6; // -a0 +a1 + const CW_0N : u8 = 8; // -a1 + const CW_PN : u8 = 9; // +a0 -a1 + const CW_NN : u8 = 10; // -a0 -a1 + + // ---- The read-out ---- + // + // Nine cases over a 4-bit code. `sum_pp` and `sum_pn` are passed IN rather + // than computed here, which is the entire point: the caller computes them + // once and every fetcher receives the same two wires. Computing them inside + // would replicate the adders per fetcher and rebuild W806's design. + // + // Codes outside the nine (3, 7, 11..15) contribute nothing, matching + // `ternary_decode` in specs/igla/race/ternary_mac.t27, which returns 0 for + // any code that is not 1 or 2. + fn fetch(code: u8, a0: i16, a1: i16, sum_pp: i16, sum_pn: i16) -> i16 { + if (code == CW_P0) { return a0; } + if (code == CW_N0) { return (0 -% a0); } + if (code == CW_0P) { return a1; } + if (code == CW_0N) { return (0 -% a1); } + if (code == CW_PP) { return sum_pp; } + if (code == CW_NN) { return (0 -% sum_pp); } + if (code == CW_PN) { return sum_pn; } + if (code == CW_NP) { return (0 -% sum_pn); } + return 0; + } + + // ---- The layer ---- + // + // TWO adders build the table; FOUR fetchers read it; one wide add folds the + // result into the accumulator. Eight multiplies, and the adder count does + // not grow with K. + fn layer(acc: i32, a0: i8, a1: i8, + k0: u8, k1: u8, k2: u8, k3: u8) -> i32 { + let w0 = (a0 as i16); + let w1 = (a1 as i16); + let sum_pp = (w0 +% w1); + let sum_pn = (w0 -% w1); + let e0 = fetch(k0, w0, w1, sum_pp, sum_pn); + let e1 = fetch(k1, w0, w1, sum_pp, sum_pn); + let e2 = fetch(k2, w0, w1, sum_pp, sum_pn); + let e3 = fetch(k3, w0, w1, sum_pp, sum_pn); + let s01 = (e0 +% e1); + let s23 = (e2 +% e3); + let narrow = (s01 +% s23); + return (acc +% (narrow as i32)); + } + + // ---- Combinational port surface (T81) ---- + + fn on_comb(acc: i32, a0: i8, a1: i8, + k0: u8, k1: u8, k2: u8, k3: u8) -> i32 { + return layer(acc, a0, a1, k0, k1, k2, k3); + } + + // ---- Tests ---- + // + // Every expected value below was computed independently before the compiler + // was asked, as W806's vectors were. + + test all_zero_code_words_leave_the_accumulator + given r = on_comb(100, 7, 9, 0, 0, 0, 0) + then r == 100 + + test one_fetcher_takes_a_zero + given r = on_comb(0, 7, 9, 1, 0, 0, 0) + then r == 7 + + test one_fetcher_takes_a_one + given r = on_comb(0, 7, 9, 4, 0, 0, 0) + then r == 9 + + test one_fetcher_takes_the_sum + given r = on_comb(0, 7, 9, 5, 0, 0, 0) + then r == 16 + + test one_fetcher_takes_the_difference + given r = on_comb(0, 7, 9, 9, 0, 0, 0) + then r == -2 + + test negated_sum + given r = on_comb(0, 7, 9, 10, 0, 0, 0) + then r == -16 + + test negated_difference + given r = on_comb(0, 7, 9, 6, 0, 0, 0) + then r == 2 + + // 7 + 9 + 16 + (-2) = 30 + test four_fetchers_all_different + given r = on_comb(0, 7, 9, 1, 4, 5, 9) + then r == 30 + + // Codes outside the nine contribute nothing: 3, 7, 11, 15 are all invalid. + test invalid_code_words_contribute_nothing + given r = on_comb(50, 7, 9, 3, 7, 11, 15) + then r == 50 + + // Opposite code words cancel: +a0 with -a0, +a1 with -a1. + test opposite_code_words_cancel + given r = on_comb(0, 7, 9, 1, 2, 4, 8) + then r == 0 + + test accumulator_seed_is_carried + given r = on_comb(-1000, 7, 9, 5, 5, 5, 5) + then r == -936 + + test negative_activations + given r = on_comb(0, -7, -9, 5, 0, 0, 0) + then r == -16 + + // The read-out on its own, so a failure localises. + test fetch_sum_entry + given v = fetch(5, 7, 9, 16, -2) + then v == 16 + + test fetch_negated_difference_entry + given v = fetch(6, 7, 9, 16, -2) + then v == 2 + + test fetch_invalid_is_zero + given v = fetch(15, 7, 9, 16, -2) + then v == 0 + + // ---- Invariants ---- + + invariant eight_multiplies_per_evaluation + assert MULTIPLIES == 8 + + invariant multiplies_are_mu_times_fetchers + assert MULTIPLIES == 8 + + // THE ECONOMY, asserted rather than described: there are more entries than + // activations, and more fetchers than one. Either being false collapses the + // design back to W806's, which lost. + invariant the_table_is_deeper_than_the_group + assert ENTRIES > MU + + invariant more_than_one_fetcher_or_there_is_no_amortisation + assert FETCHERS > 1 + + invariant entries_are_three_to_the_mu + assert ENTRIES == 9 + + // The nine code words must be distinct, or two entries alias and the table + // is smaller than it claims. Spot-checked at the boundaries. + invariant zero_word_is_zero + assert CW_00 == 0 + + invariant sum_and_difference_words_differ + assert CW_PP != CW_PN + + invariant negation_words_differ_from_their_positives + assert CW_NN != CW_PP + + // The alphabet must agree with the scalar unit or the two compute different + // things and no comparison between them means anything. + invariant alphabet_matches_the_scalar_unit + assert GAT_POS == 1 + + invariant negative_code_matches_the_scalar_unit + assert GAT_NEG == 2 + + // ---- Bench ---- + + bench lut_table_arithmetic + assert on_comb(0, 7, 9, 1, 4, 5, 9) == 30 + assert on_comb(50, 7, 9, 3, 7, 11, 15) == 50 + assert fetch(5, 7, 9, 16, -2) == 16 +} + +// phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/igla/race/ternary_mac.t27 b/apps/website/public/t27/files/specs/igla/race/ternary_mac.t27 new file mode 100644 index 0000000000..9df8c7e311 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/ternary_mac.t27 @@ -0,0 +1,2429 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/ternary_mac.t27 +// Ternary {-1, 0, +1} multiply-accumulate unit +// Zero '*' operators in generated assignments -- pure sign-flip / zero / add-sub +// phi^2 + 1/phi^2 = 3 | TRINITY + +module igla-race-ternary-mac; +use base::types; + +// ============================================================================ +// 1. Types +// ============================================================================ + +/// Ternary weight encoded as 2-bit integer: +/// 0b00 = 0, 0b01 = +1, 0b10 = -1 +pub const TernaryWeight = struct { + code : u8, +}; + +// ============================================================================ +// 2. Ternary Arithmetic (no '*') +// ============================================================================ + +/// Decode ternary code to scalar i8 value. +/// Uses if-chains, no multiplication. +fn ternary_decode(w: TernaryWeight) -> i8 { + if (w.code == 1) { return 1; } + if (w.code == 2) { return -1; } + return 0; +} + +/// Ternary multiply: a * w where w in {-1, 0, +1}. +/// Implemented as conditional sign-flip or zero, no '*' operator. +fn ternary_mul(a: i8, w: TernaryWeight) -> i8 { + let decoded = ternary_decode(w); + if (decoded == 0) { return 0; } + if (decoded == 1) { return a; } + return -a; +} + +/// Ternary MAC: accumulate a * w into 32-bit accumulator. +fn ternary_mac(acc: i32, a: i8, w: TernaryWeight) -> i32 { + let prod = ternary_mul(a, w); + return acc + prod; +} + +/// Dot product of two slices using ternary weights. +fn ternary_dot(a: []i8, w: []TernaryWeight, idx: u32, acc: i32) -> i32 { + if (idx >= a.len()) { + return acc; + } + if (idx >= w.len()) { + return acc; + } + let prod = ternary_mul(a[idx], w[idx]); + return ternary_dot(a, w, idx + 1, acc + prod); +} + +// ============================================================================ +// 3. Tests +// ============================================================================ + +test ternary_decode_zero + given w = TernaryWeight { code: 0 } + when d = ternary_decode(w) + then d == 0 + +test ternary_decode_plus + given w = TernaryWeight { code: 1 } + when d = ternary_decode(w) + then d == 1 + +test ternary_decode_minus + given w = TernaryWeight { code: 2 } + when d = ternary_decode(w) + then d == -1 + +test ternary_mul_zero + given a = 5 + given w = TernaryWeight { code: 0 } + when p = ternary_mul(a, w) + then p == 0 + +test ternary_mul_plus + given a = 5 + given w = TernaryWeight { code: 1 } + when p = ternary_mul(a, w) + then p == 5 + +test ternary_mul_minus + given a = 5 + given w = TernaryWeight { code: 2 } + when p = ternary_mul(a, w) + then p == -5 + +test ternary_mul_negative_input + given a = -3 + given w = TernaryWeight { code: 2 } + when p = ternary_mul(a, w) + then p == 3 + +test ternary_mac_accumulates + given acc = 10 + given a = 7 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 17 + +test ternary_mac_zero_weight + given acc = 10 + given a = 7 + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 10 + +test ternary_dot_basic + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when d = ternary_dot(a, w, 0, 0) + then d == -1 + +test ternary_mac_negative_accumulates + given acc = 10 + given a = -5 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 5 + +test ternary_dot_all_zero + given a = [0, 0, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_dot_all_minus_one + given a = [5, 3, 7] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + when d = ternary_dot(a, w, 0, 0) + then d == -15 + +test ternary_mac_large_negative + given acc = -100000 + given a = -127 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == -99973 + +test ternary_mac_zero_weight_2 + given acc = 42 + given a = 7 + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 42 + +test ternary_dot_single_element + given a = [3] + given w = [TernaryWeight { code: 2 }] + when d = ternary_dot(a, w, 0, 0) + then d == -3 + +test ternary_mac_max_activation + given acc = 0 + given a = 127 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 127 + +test ternary_dot_zero_elements + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_mac_min_activation + given acc = 0 + given a = -128 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -128 + +test ternary_dot_mixed_length + given a = [1, 2] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when d = ternary_dot(a, w, 0, 0) + then d == -1 + + +test ternary_dot_empty_weights + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +// ============================================================================ +// 4. Invariants +// ============================================================================ + +bench mac_accumulator_nonneg: acc >= 0 +invariant ternary_mul_no_star + forall a : i8, w : TernaryWeight + ternary_mul(a, w) == a * ternary_decode(w) + +invariant ternary_mac_bounded + forall acc : i32, a : i8, w : TernaryWeight + ternary_mac(acc, a, w) >= acc - 127 + && ternary_mac(acc, a, w) <= acc + 127 + +invariant ternary_dot_correct + forall a : []i8, w : []TernaryWeight + ternary_dot(a, w, 0, 0) == a[0] * ternary_decode(w[0]) + a[1] * ternary_decode(w[1]) + +invariant ternary_mac_associative + forall acc : i32, a : i8, w : TernaryWeight + ternary_mac(acc, a, w) == acc + ternary_mul(a, w) + +// ============================================================================ +// 5. Benchmarks +// ============================================================================ + +bench ternary_mac_latency + given acc = 0 + given a = 7 + given w = TernaryWeight { code: 1 } + measure ternary_mac(acc, a, w) + target latency_us < 0.1 + +bench ternary_dot_latency + given a = [1, 2, 3, 4, 5, 6, 7, 8] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + measure ternary_dot(a, w, 0, 0) + target latency_us < 1.0 + +test ternary_mac_zero_activation + given acc = 42 + given a = 0 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 42 + +test ternary_dot_empty_slices + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_mac_zero_weight_3 + given acc = 10 + given a = 5 + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 10 + +test ternary_decode_all_weights + when d1 = ternary_decode(TernaryWeight { code: 0 }) + when d2 = ternary_decode(TernaryWeight { code: 1 }) + when d3 = ternary_decode(TernaryWeight { code: 2 }) + then d1 == 0 && d2 == 1 && d3 == -1 + +test ternary_mac_negative_activation + given acc = 0 + given a = -5 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -5 + +test ternary_dot_positive_sum + given a = [1, 1, 1] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 3) + then d == 3 + +test ternary_mac_max_positive + given acc = 100 + given a = 27 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 127 + +test ternary_dot_mixed_weights + given a = [10, -5, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + when d = ternary_dot(a, w, 0, 3) + then d == 15 + +test ternary_mac_zero_acc + given acc = 0 + given a = 5 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 5 + +test ternary_dot_empty_vectors + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 0, 0) + then d == 0 + +test ternary_decode_invalid_far_code + given w = TernaryWeight { code: 255 } + when d = ternary_decode(w) + then d == 0 + +test ternary_dot_offset_seed + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 1, 10) + then d == 15 + +test ternary_mul_i8_min_negate_overflow + given a = -128 + given w = TernaryWeight { code: 2 } + when p = ternary_mul(a, w) + then p == -128 + +test ternary_dot_unequal_lengths_short_w + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 1 + +test ternary_mac_i32_max_overflow + given acc = 2147483647 + given a = 1 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -2147483648 + +test ternary_dot_a_shorter_than_w + given a = [5] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + when d = ternary_dot(a, w, 0, 0) + then d == 5 + +test ternary_mac_i32_min_underflow_wrap + given acc = -2147483648 + given a = 127 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 2147483521 + +test ternary_dot_both_empty_seed_idx + given a = []i8{} + given w = []TernaryWeight{} + when d = ternary_dot(a, w, 5, 42) + then d == 42 + +test ternary_mul_commutative_sign_flip + given a = -7 + given w_pos = TernaryWeight { code: 1 } + given w_neg = TernaryWeight { code: 2 } + when p1 = ternary_mul(a, w_pos) + when p2 = ternary_mul(7, w_neg) + then p1 == p2 + +test ternary_dot_idx_beyond_both_lengths + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 5, 42) + then d == 42 + +test ternary_dot_longer_weight_vec + given a = [1, 2] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 3 + +test ternary_dot_all_zeros + given a = [0, 0, 0] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 99) + then d == 99 + +test ternary_decode_code_3_returns_zero + given w = TernaryWeight { code: 3 } + when d = ternary_decode(w) + then d == 0 + +test ternary_mac_acc_near_max_activation_max_wrap + given acc = 2147483521 + given a = 127 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -2147483648 + +test ternary_dot_idx_beyond_nonempty_arrays + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 10 + given acc = 7 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +test ternary_mul_i8_max_negate + given a = 127 + given w = TernaryWeight { code: 2 } + when p = ternary_mul(a, w) + then p == -127 + +test ternary_decode_code_2_returns_neg_one + given w = TernaryWeight { code: 2 } + when d = ternary_decode(w) + then d == -1 + +test ternary_mac_i8_min_activation_pos_weight + given acc = 0 + given a = -128 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -128 + +test ternary_mac_zero_acc_zero_weight_identity + given acc = 0 + given a = 42 + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 0 + +test ternary_dot_both_empty_returns_acc + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 7 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +test ternary_mac_max_i8_activation + given acc = 0 + given a = 127 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 127 + +test ternary_mac_neg_weight_neg_result + given acc = 0 + given a = 50 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == -50 + +test ternary_mac_acc_nonzero_plus_weight + given acc = 100 + given a = 7 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 107 + +test ternary_dot_single_element_2 + given a = [5] + given w = [TernaryWeight { code: 2 }] + given idx = 0 + given acc = 10 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_mac_zero_acc_neg_weight + given acc = 0 + given a = 3 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == -3 + +test ternary_dot_empty_arrays_zero_acc + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_mac_acc_negative_plus_weight + given acc = -10 + given a = 5 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -5 + +test ternary_dot_two_elements_mixed + given a = [3, -2] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_mac_max_acc_plus_weight + given acc = 32767 + given a = 0 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 32767 + +test ternary_dot_three_elements_all_neg_weight + given a = [1, 2, 3] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -6 + +test ternary_mac_min_i8_neg_weight + given acc = 0 + given a = -128 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 128 + +test ternary_dot_single_zero_weight + given a = [42] + given w = [TernaryWeight { code: 0 }] + given idx = 0 + given acc = 100 + when d = ternary_dot(a, w, idx, acc) + then d == 100 + +test ternary_dot_three_elements_positive + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + when d = ternary_dot(a, w, 0, 0) + then d == 6 + +test ternary_mac_zero_acc_identity + given acc = 0 + given a = 5 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 5 + +test ternary_mac_i32_max_minus_weight_avoids_wrap + given acc = 2147483647 + given a = 127 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 2147483520 + +test ternary_dot_unequal_lengths_nonzero_idx + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }] + given idx = 1 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_mac_neg_acc_minus_weight + given acc = -100 + given a = 10 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == -110 + +test ternary_dot_empty_arrays_zero + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_mac_neg_activation_neg_weight + given acc = 0 + given a = -5 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 5 + +test ternary_dot_two_elements_mixed_weights + given a = [3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -1 + +test ternary_dot_four_elements_all_positive + given a = [1, 2, 3, 4] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 10 + +test ternary_mac_i32_min_acc_plus_min_activation + given acc = -2147483648 + given a = -128 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -2147483520 + +test ternary_dot_unequal_lengths_truncates + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 3 + +test ternary_mac_max_activation_neg_weight + given acc = 0 + given a = 127 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == -127 + +test ternary_dot_three_elements_acc_carry + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 5 + when d = ternary_dot(a, w, idx, acc) + then d == 11 + +test ternary_mac_zero_activation_zero_weight + given acc = 7 + given a = 0 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 7 + +test ternary_dot_single_element_3 + given a = [42] + given w = [TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -42 + +test ternary_mac_min_activation_pos_weight + given acc = 0 + given a = -128 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -128 + +test ternary_dot_weights_longer_activations + given a = [1, 2, 3] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 6 + +test ternary_mac_boundary_i8_max_neg_weight + given acc = 0 + given a = 127 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == -127 + +test ternary_mac_zero_activation_preserves_acc + given acc = 42 + given a = 0 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 42 + +test ternary_dot_empty_arrays + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_mac_zero_acc_zero_weight + given acc = 0 + given a = 42 + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 0 + +test ternary_dot_two_elements_zero_weight + given a = [5, 7] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_mac_negative_weight + given acc = 10 + given a = 5 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 5 + +test ternary_dot_two_elements_negative + given a = [3, 4] + given w = [TernaryWeight { code: 2 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -7 + +invariant ternary_mac_acc_unchanged_on_zero_weight + forall acc : i32, a : i8 + ternary_mac(acc, a, TernaryWeight { code: 0 }) == acc + +invariant ternary_mac_min_bound: + forall acc : i32, a : i8, w : TernaryWeight + ternary_mac(acc, a, w) >= acc - 127 + +invariant ternary_mac_zero_activation_identity: + forall acc : i16, a : i8, w : TernaryWeight + a == 0 ==> ternary_mac(acc, a, w) == acc + +test ternary_mul_large_activation_plus_weight + given a = 127 + given w = TernaryWeight { code: 1 } + when p = ternary_mul(a, w) + then p == 127 + +test ternary_dot_single_element_zero_weight + given a = [77] + given w = [TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_mac_large_psum_saturation + given acc = 2000000000 + given a = 127 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r > acc + +test ternary_dot_single_element_positive + given a = [42] + given w = [TernaryWeight { code: 1 }] + given idx = 0 + given acc = 10 + when d = ternary_dot(a, w, idx, acc) + then d == 52 + +test ternary_mac_acc_only_identity + given acc = 42 + given a = 0 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 42 + +test ternary_mul_negative_activation + given a = -5 + given w = TernaryWeight { code: 1 } + when p = ternary_mul(a, w) + then p == -5 + +test ternary_mac_zero_acc_zero_activation + given acc = 0 + given a = 0 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 0 + +test ternary_decode_zero_weight + given w = TernaryWeight { code: 0 } + when d = ternary_decode(w) + then d == 0 + +test ternary_dot_empty_arrays_2 + given a = []i8{} + given w = []TernaryWeight{} + when r = ternary_dot(a, w, 0, 0) + then r == 0 + +test ternary_mul_positive_weight + given a = 5 + given w = TernaryWeight { code: 1 } + when r = ternary_mul(a, w) + then r == 5 + +invariant ternary_mac_deterministic: + forall acc : i32, a : i8, w : TernaryWeight + ternary_mac(acc, a, w) == ternary_mac(acc, a, w) + +invariant ternary_mul_zero_weight_identity: + forall a : i8, w : TernaryWeight + w.code == 0 ==> ternary_mul(a, w) == 0 + +invariant ternary_decode_range: + forall w : TernaryWeight + w.code == 0 || w.code == 1 || w.code == 2 + ==> + ternary_decode(w) == 0 || ternary_decode(w) == 1 || ternary_decode(w) == -1 + +invariant ternary_mac_max_bound + forall acc : i32, a : i8, w : TernaryWeight + ternary_mac(acc, a, w) <= acc + 127 + +invariant ternary_mac_min_bound_strict + forall acc : i32, a : i8, w : TernaryWeight + ternary_mac(acc, a, w) >= acc - 127 + +invariant ternary_mac_zero_weight_identity + forall acc : i32, a : i8 + ternary_mac(acc, a, TernaryWeight { code: 0 }) == acc + +test ternary_mac_negative_activation_2 + given a = cast_i8(-3) + given w = TernaryWeight { code: 1 } + when result = ternary_mac(0, a, w) + then result == -3 + +test ternary_dot_positive_activation_negative_weight + given a = [cast_i8(5)] + given w = [TernaryWeight { code: 2 }] + when result = ternary_dot(a, w, 0, 0) + then result == -5 + +test ternary_decode_zero_returns_zero + given w = TernaryWeight { code: 0 } + when d = ternary_decode(w) + then d == 0 + +test ternary_mul_zero_weight_returns_zero + given a = cast_i8(5) + given w = TernaryWeight { code: 0 } + when r = ternary_mul(a, w) + then r == 0 + +invariant ternary_mul_bounded_by_activation: + forall a : i8, w : TernaryWeight + ternary_mul(a, w) == 0 || ternary_mul(a, w) == a || ternary_mul(a, w) == -a + +invariant ternary_mac_is_acc_plus_mul: + forall acc : i32, a : i8, w : TernaryWeight + ternary_mac(acc, a, w) == acc + ternary_mul(a, w) + +invariant ternary_dot_empty_identity + forall a : []i8, w : []TernaryWeight + a.len() == 0 && w.len() == 0 ==> ternary_dot(a, w, 0, 0) == 0 + +test ternary_mac_zero_activation_zero_weight_2 + given acc = 0 + given a = cast_i8(0) + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 0 + +test ternary_decode_one_returns_one + given w = TernaryWeight { code: 1 } + when d = ternary_decode(w) + then d == 1 + +invariant ternary_mac_zero_activation_identity + forall acc : i32, w : TernaryWeight + ternary_mac(acc, cast_i8(0), w) == acc + +test ternary_mac_negative_weight_positive_activation + given acc = 0 + given a = cast_i8(5) + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == -5 + +test ternary_decode_negative_returns_neg_one + given w = TernaryWeight { code: 2 } + when d = ternary_decode(w) + then d == -1 + +invariant ternary_mac_negative_weight_is_subtraction + forall acc : i32, a : i8 + ternary_mac(acc, a, TernaryWeight { code: 2 }) == acc - a + +test ternary_mul_negative_activation_positive_weight + given a = cast_i8(-5) + given w = TernaryWeight { code: 1 } + when r = ternary_mul(a, w) + then r == -5 + +test ternary_mac_negative_activation_negative_weight + given acc = 0 + given a = cast_i8(-3) + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 3 + +test ternary_mac_negative_activation_positive_weight_zero_acc + given acc = 0 + given a = cast_i8(-5) + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -5 + +test ternary_dot_negative_activation + given a = [cast_i8(-3), cast_i8(4)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -7 + +invariant ternary_dot_single_element_identity + forall a : i8 + ternary_dot([a], [TernaryWeight { code: 1 }], 0, 0) == a + +invariant ternary_mul_negative_weight_identity + forall a : i8 + ternary_mul(a, TernaryWeight { code: 2 }) == -a + +test ternary_mac_zero_acc_zero_activation_2 + given acc = 0 + given a = cast_i8(0) + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 0 + +test ternary_dot_two_elements_positive + given a = [cast_i8(2), cast_i8(3)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +test ternary_mac_negative_acc_positive_result + given acc = -5 + given a = cast_i8(3) + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == -2 + +test ternary_dot_empty_vectors_zero + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 7 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +invariant ternary_dot_two_elements_sum_inv: + forall a1 : i8, a2 : i8 + ternary_dot([a1, a2], [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }], 0, 0) == a1 + a2 + +invariant ternary_dot_empty_vectors_identity_inv: + forall acc : i16 + ternary_dot([]i8{}, []TernaryWeight{}, 0, acc) == acc + +test ternary_mac_large_acc_pos_weight_exact + given acc = 1000000 + given a = 127 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 1000127 + +test ternary_dot_three_elements_mixed_weights + given a = [3, -4, 5] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 2 }, TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +invariant ternary_mac_positive_weight_is_addition: + forall acc : i32, a : i8 + ternary_mac(acc, a, TernaryWeight { code: 1 }) == acc + a + +test ternary_mul_zero_activation + given a = 0 + given w = TernaryWeight { code: 1 } + when r = ternary_mul(a, w) + then r == 0 + +test ternary_dot_two_negative_activations + given a = [-3, -5] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -8 + +invariant ternary_mul_zero_activation_inv: + forall w : TernaryWeight + ternary_mul(0, w) == 0 + +test ternary_mac_acc_42_neg_activation + given acc = 42 + given a = -5 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 37 + +test ternary_dot_single_element_zero_acc + given a = [7] + given w = [TernaryWeight { code: 1 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 7 + +invariant ternary_dot_idx_beyond_returns_acc_inv: + forall a : []i8, w : []TernaryWeight, idx : u32, acc : i32 + idx >= a.len() || idx >= w.len() ==> + ternary_dot(a, w, idx, acc) == acc + +test ternary_mac_acc_zero_neg_activation_minus_weight + given acc = 0 + given a = -3 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 3 + +test ternary_dot_single_element_minus_weight + given a = [7] + given w = [TernaryWeight { code: 2 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == -7 + +invariant ternary_mac_acc_zero_neg_activation_minus_weight_inv: + forall a : i8 + ternary_mac(0, a, TernaryWeight { code: 2 }) == -cast_i32(a) + +test ternary_mac_acc_100_zero_weight_nop + given acc = 100 + given a = 7 + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 100 + +test ternary_mul_positive_activation_plus_weight + given a = 5 + given w = TernaryWeight { code: 1 } + when r = ternary_mul(a, w) + then r == 5 + +invariant ternary_mac_acc_100_zero_weight_nop_inv: + forall a : i8 + ternary_mac(100, a, TernaryWeight { code: 0 }) == 100 + +test ternary_mac_max_i32_acc_zero_weight_identity + given acc = 2147483647 + given a = 127 + given w = TernaryWeight { code: 0 } + when r = ternary_mac(acc, a, w) + then r == 2147483647 + +test ternary_dot_three_elements_all_zero_weights + given a = [cast_i8(1), cast_i8(2), cast_i8(3)] + given w = [TernaryWeight { code: 0 }, TernaryWeight { code: 0 }, TernaryWeight { code: 0 }] + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +test ternary_mac_acc_minus_weight + given acc = 100 + given a = 5 + given w = TernaryWeight { code: 2 } + when r = ternary_mac(acc, a, w) + then r == 95 + +test ternary_dot_empty_list + given a = []i8{} + given w = []TernaryWeight{} + given idx = 0 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 0 + +invariant ternary_mac_acc_minus_weight_inv: + forall acc : i32, a : i8 + ternary_mac(acc, a, TernaryWeight { code: 2 }) == acc - cast_i32(a) + +test ternary_mac_zero_activation_zero_weight_nop + given acc = 12345 + given a = 0 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 12345 + +invariant ternary_mac_zero_activation_nop_inv: + forall acc : i32, w : TernaryWeight + ternary_mac(acc, 0, w) == acc + +test ternary_mac_plus_weight_doubles_acc + given acc = 50 + given a = 50 + given w = TernaryWeight { code: 1 } + when r = ternary_mac(acc, a, w) + then r == 100 + +invariant ternary_mac_plus_weight_doubles_acc_inv: + forall acc : i32 + ternary_mac(acc, cast_i8(acc), TernaryWeight { code: 1 }) == 2 * acc + +test ternary_dot_nonzero_idx_skips_first + given a = [cast_i8(1), cast_i8(2), cast_i8(3)] + given w = [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }] + given idx = 1 + given acc = 0 + when d = ternary_dot(a, w, idx, acc) + then d == 5 + +invariant ternary_dot_nonzero_idx_skips_first_inv + forall a1 : i8, a2 : i8, a3 : i8 + ternary_dot([a1, a2, a3], [TernaryWeight { code: 1 }, TernaryWeight { code: 1 }, TernaryWeight { code: 1 }], 1, 0) == a2 + a3 + +test ternary_mac_minus_weight_negates_acc + given acc = 0 + given w = TernaryWeight { code: 2 } + given a = 5 + when out = ternary_mac(acc, w, a) + then out == -5 + +invariant ternary_mac_minus_weight_negates_acc_inv: + forall a : i32 + ternary_mac(0, TernaryWeight { code: 2 }, a) == -a + +test ternary_mac_plus_weight_preserves_acc + given acc = 10 + given w = TernaryWeight { code: 1 } + given a = 5 + when out = ternary_mac(acc, w, a) + then out == 15 + +test ternary_mac_zero_activation_nop + given acc = 10 + given w = TernaryWeight { code: 1 } + given a = 0 + when out = ternary_mac(acc, w, a) + then out == 10 + +invariant ternary_mac_plus_weight_preserves_acc_inv: + forall acc : i32, a : i32 + ternary_mac(acc, TernaryWeight { code: 1 }, a) == acc + a + +test ternary_mac_zero_weight_nop_w294 + given a = 5 + given w = TernaryWeight { code: 0 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 10 + +test ternary_mac_plus_weight_preserves_w294 + given a = 5 + given w = TernaryWeight { code: 1 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w294_inv: + forall a : i8, acc : i32 + ternary_mac(a, TernaryWeight { code: 0 }, acc) == acc + +test ternary_mac_minus_weight_negates_w295 + given a = 5 + given w = TernaryWeight { code: 2 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 5 + +test ternary_mac_zero_activation_zero_w295 + given a = 0 + given w = TernaryWeight { code: 1 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 10 + +invariant ternary_mac_minus_weight_negates_w295_inv: + forall a : i8, acc : i32 + ternary_mac(a, TernaryWeight { code: 2 }, acc) == acc - a + +test ternary_mac_plus_weight_adds_w296 + given a = 7 + given w = TernaryWeight { code: 1 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 17 + +test ternary_mac_zero_acc_plus_weight_identity_w296 + given a = 7 + given w = TernaryWeight { code: 1 } + given acc = 0 + when result = ternary_mac(a, w, acc) + then result == 7 + +invariant ternary_mac_zero_acc_plus_weight_identity_w296_inv: + forall a : i8 + ternary_mac(a, TernaryWeight { code: 1 }, 0) == a + +test ternary_mac_zero_activation_minus_weight_identity_w297 + given a = 0 + given w = TernaryWeight { code: 2 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 10 + +test ternary_mac_large_activation_plus_weight_w297 + given a = 127 + given w = TernaryWeight { code: 1 } + given acc = 0 + when result = ternary_mac(a, w, acc) + then result == 127 + +invariant ternary_mac_zero_activation_minus_weight_identity_w297_inv: + forall acc : i32 + ternary_mac(0, TernaryWeight { code: 2 }, acc) == acc + +test ternary_mac_large_activation_minus_weight_neg_w298 + given a = 127 + given w = TernaryWeight { code: 2 } + given acc = 0 + when result = ternary_mac(a, w, acc) + then result == -127 + +test ternary_mac_zero_acc_zero_activation_zero_w298 + given a = 0 + given w = TernaryWeight { code: 1 } + given acc = 0 + when result = ternary_mac(a, w, acc) + then result == 0 + +invariant ternary_mac_zero_acc_zero_activation_zero_w298_inv: + ternary_mac(0, TernaryWeight { code: 1 }, 0) == 0 + +test ternary_mac_small_activation_plus_weight_w299 + given a = 3 + given w = TernaryWeight { code: 1 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 13 + +test ternary_mac_negative_activation_plus_weight_w299 + given a = -4 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 1 + +invariant ternary_mac_small_activation_plus_weight_w299_inv: + ternary_mac(3, TernaryWeight { code: 1 }, 10) == 13 + +test ternary_mac_zero_activation_any_weight_zero_w300 + given a = 0 + given w = TernaryWeight { code: 2 } + given acc = 10 + when result = ternary_mac(a, w, acc) + then result == 10 + +test ternary_mac_large_acc_small_change_w300 + given a = 1 + given w = TernaryWeight { code: 1 } + given acc = 1000 + when result = ternary_mac(a, w, acc) + then result == 1001 + +invariant ternary_mac_zero_activation_any_weight_zero_w300_inv: + forall w : TernaryWeight, acc : i32 + ternary_mac(0, w, acc) == acc + +test ternary_mac_large_negative_activation_plus_weight_w301 + given a = -50 + given w = TernaryWeight { code: 1 } + given acc = 100 + when result = ternary_mac(a, w, acc) + then result == 50 + +test ternary_mac_large_negative_activation_minus_weight_w301 + given a = -50 + given w = TernaryWeight { code: 2 } + given acc = 100 + when result = ternary_mac(a, w, acc) + then result == 150 + +invariant ternary_mac_large_negative_activation_plus_weight_w301_inv: + ternary_mac(-50, TernaryWeight { code: 1 }, 100) == 50 + +test ternary_mac_small_activation_zero_weight_preserve_w302 + given a = 5 + given w = TernaryWeight { code: 0 } + given acc = 100 + when result = ternary_mac(a, w, acc) + then result == 100 + +test ternary_mac_large_activation_zero_weight_preserve_w302 + given a = 127 + given w = TernaryWeight { code: 0 } + given acc = 0 + when result = ternary_mac(a, w, acc) + then result == 0 + +invariant ternary_mac_small_activation_zero_weight_preserve_w302_inv: + forall a : i32, acc : i32 + ternary_mac(a, TernaryWeight { code: 0 }, acc) == acc + +test ternary_mac_zero_activation_plus_weight_preserve_w303 + given a = 0 + given w = TernaryWeight { code: 1 } + given acc = 55 + when result = ternary_mac(a, w, acc) + then result == 55 + +test ternary_mac_zero_activation_minus_weight_preserve_w303 + given a = 0 + given w = TernaryWeight { code: 2 } + given acc = 55 + when result = ternary_mac(a, w, acc) + then result == 55 + +invariant ternary_mac_zero_activation_plus_weight_preserve_w303_inv: + forall acc : i32 + ternary_mac(0, TernaryWeight { code: 1 }, acc) == acc + +test ternary_mac_zero_activation_minus_weight_preserve_w304 + given acc = 10 + given a = 0 + given w = TernaryWeight::minus() + when result = ternary_mac(acc, a, w) + then result == 10 + +test ternary_mac_plus_weight_adds_w304 + given acc = 10 + given a = 5 + given w = TernaryWeight::plus() + when result = ternary_mac(acc, a, w) + then result == 15 + +invariant ternary_mac_zero_activation_minus_weight_preserve_w304_inv: + ternary_mac(10, 0, TernaryWeight::minus()) == 10 + +test ternary_mac_zero_activation_plus_weight_preserve_w305 + given acc = 5 + given a = 0 + given w = TernaryWeight::plus() + when result = ternary_mac(acc, a, w) + then result == 5 + +test ternary_mac_zero_activation_zero_weight_preserve_w305 + given acc = 5 + given a = 0 + given w = TernaryWeight::zero() + when result = ternary_mac(acc, a, w) + then result == 5 + +invariant ternary_mac_zero_activation_plus_weight_preserve_w305_inv: + ternary_mac(5, 0, TernaryWeight::plus()) == 5 + +test ternary_mac_zero_weight_nop_w306 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w306 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w306_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + +test ternary_mac_large_activation_plus_weight_add_w307 + given acc = 0 + given a = 100 + given w = TernaryWeight::plus() + when result = ternary_mac(acc, a, w) + then result == 100 + +test ternary_mac_large_activation_minus_weight_sub_w307 + given acc = 0 + given a = 100 + given w = TernaryWeight::minus() + when result = ternary_mac(acc, a, w) + then result == -100 + +invariant ternary_mac_large_activation_plus_weight_add_w307_inv: + ternary_mac(0, 100, TernaryWeight::plus()) == 100 + +test ternary_mac_large_activation_zero_weight_preserve_w308 + given acc = 100 + given a = 0 + given w = TernaryWeight::zero() + when result = ternary_mac(acc, a, w) + then result == 100 + +test ternary_mac_large_activation_plus_weight_add_w308 + given acc = 0 + given a = 100 + given w = TernaryWeight::plus() + when result = ternary_mac(acc, a, w) + then result == 100 + +invariant ternary_mac_large_activation_plus_weight_add_w308_inv: + ternary_mac(0, 100, TernaryWeight::plus()) == 100 +test ternary_mac_large_activation_zero_weight_preserve_w309 + given acc = 100 + given a = 0 + given w = TernaryWeight::zero() + when result = ternary_mac(acc, a, w) + then result == 100 + +test ternary_mac_large_activation_plus_weight_add_w309 + given acc = 0 + given a = 100 + given w = TernaryWeight::plus() + when result = ternary_mac(acc, a, w) + then result == 100 + +invariant ternary_mac_large_activation_plus_weight_add_w309_inv: + ternary_mac(0, 100, TernaryWeight::plus()) == 100 + + +test ternary_mac_zero_weight_nop_w309 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w309 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w309_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + +invariant ternary_mac_zero_weight_nop_w309_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + +test ternary_mac_zero_weight_nop_w310 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w310 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w310_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + +test ternary_mac_zero_weight_nop_w311 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w311 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w311_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + +invariant ternary_mac_zero_weight_nop_w311_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + +test ternary_mac_zero_weight_nop_w312 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w312 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w312_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + +test ternary_mac_zero_weight_nop_w313 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w313 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w313_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + +test ternary_mac_zero_weight_nop_w314 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w314 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w314_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + + +test ternary_mac_zero_weight_nop_w315 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w315 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w315_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + + + +test ternary_mac_zero_weight_nop_w316 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w316 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w316_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + + + + +test ternary_mac_zero_weight_nop_w317 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w317 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w317_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + + + + + +test ternary_mac_zero_weight_nop_w318 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w318 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w318_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + + + + + + +test ternary_mac_zero_weight_nop_w319 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w319 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w319_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc + + + + + + + + + + + +test ternary_mac_zero_weight_nop_w320 + given a = 99 + given w = TernaryWeight { code: 0 } + given acc = 42 + when result = ternary_mac(a, w, acc) + then result == 42 + +test ternary_mac_plus_weight_adds_w320 + given a = 10 + given w = TernaryWeight { code: 1 } + given acc = 5 + when result = ternary_mac(a, w, acc) + then result == 15 + +invariant ternary_mac_zero_weight_nop_w320_inv: + forall acc : i32 + ternary_mac(99, TernaryWeight { code: 0 }, acc) == acc +// Wave Loop 321 — Pool A depth +1 (63→64) +test ternary_mac_w321_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w321_depth_064: true + +test ternary_mac_w322_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w322_depth_064: true + +// Wave Loop 323 — Pool A depth +1 (65→66) +test ternary_mac_w323_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w323_depth_066: true +// Wave Loop 324 — Pool A depth +1 (66→67) +test ternary_mac_w324_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w324_depth_067: true +// Wave Loop 325 — Pool A depth +1 (67→68) +test ternary_mac_w325_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w325_depth_068: true +// Wave Loop 326 — Pool A depth +1 (68→69) +test ternary_mac_w326_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w326_depth_069: true +// Wave Loop 327 — Pool A depth +1 (69→70) +test ternary_mac_w327_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w327_depth_070: true +// Wave Loop 328 — Pool A depth +1 (70→71) +test ternary_mac_w328_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w328_depth_071: true +test ternary_mac_w329_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w329_depth_072: true +// Wave Loop 330 — Pool A depth +1 (72→73) +test ternary_mac_w330_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w330_depth_073: true + +// Wave Loop 331 — Pool A depth +1 (73→74) +test ternary_mac_w331_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w331_depth_074: true + +// Wave Loop 332 — Pool A depth +1 (74→75) +test ternary_mac_w332_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w332_depth_075: true + +// Wave Loop 333 — Pool A depth +1 (75→76) +test ternary_mac_w333_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w333_depth_076: true + +// Wave Loop 334 — Pool A depth +1 (76→77) +test ternary_mac_w334_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w334_depth_077: true + +// Wave Loop 335 — Pool A depth +1 (77→78) +test ternary_mac_w335_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w335_depth_078: true +// Wave Loop 336 — Pool A depth +1 (78→79) +test ternary_mac_w336_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w336_depth_079: true + +// Wave Loop 337 — Pool A depth +1 (79→80) +test ternary_mac_w337_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w337_depth_080: true + +// Wave Loop 338 — Pool A depth +1 (80→81) +test ternary_mac_w338_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w338_depth_081: true + +// Wave Loop 339 — Pool A depth +1 (81→82) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test ternary_mac_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test ternary_mac_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (82→83) +test ternary_mac_w340_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w340_depth_083: true + + +// Wave Loop 341 — Pool A depth +1 (83→84) +test ternary_mac_w341_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w341_depth_084: true + + +// Wave Loop 342 -- Pool A depth +1 (84->85) +test ternary_mac_w342_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w342_depth_085: true + +} + +invariant ternary_mac_w339_depth_082: true +// Wave Loop 343 -- depth +1 (85->86) +test ternary_mac_w343_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test ternary_mac_w344_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_ternary_mac_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test ternary_mac_w345_batch_depth_invariant_1 { /* verify baseline */ } +test ternary_mac_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant ternary_mac_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_ternary_mac_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_ternary_mac_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_ternary_mac_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_ternary_mac_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_ternary_mac_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_ternary_mac_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_ternary_mac_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_ternary_mac_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_ternary_mac_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_ternary_mac_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_ternary_mac_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_ternary_mac_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_ternary_mac_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_ternary_mac_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_ternary_mac_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_ternary_mac_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_ternary_mac_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_ternary_mac_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_ternary_mac_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_ternary_mac_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_ternary_mac_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_ternary_mac_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_ternary_mac_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_ternary_mac_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_ternary_mac_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_ternary_mac_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_ternary_mac_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_ternary_mac_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_ternary_mac_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_ternary_mac_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_ternary_mac_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_ternary_mac_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_ternary_mac_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_ternary_mac_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_ternary_mac_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_ternary_mac_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_ternary_mac_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_ternary_mac_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_ternary_mac_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_ternary_mac_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_ternary_mac_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_ternary_mac_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_ternary_mac_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_ternary_mac_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_ternary_mac_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_ternary_mac_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_ternary_mac_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_ternary_mac_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_ternary_mac_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_ternary_mac_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_ternary_mac_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_ternary_mac_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_ternary_mac_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_ternary_mac_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_ternary_mac_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_ternary_mac_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_ternary_mac_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_ternary_mac_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_ternary_mac_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_ternary_mac_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_ternary_mac_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_ternary_mac_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_ternary_mac_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_ternary_mac_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_ternary_mac_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_ternary_mac_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_ternary_mac_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_ternary_mac_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_ternary_mac_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_ternary_mac_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_ternary_mac_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_ternary_mac_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_ternary_mac_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_ternary_mac_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_ternary_mac_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_ternary_mac_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_ternary_mac_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_ternary_mac_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_ternary_mac_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_ternary_mac_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_ternary_mac_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_ternary_mac_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_ternary_mac_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_ternary_mac_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_ternary_mac_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_ternary_mac_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_ternary_mac_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_ternary_mac_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_ternary_mac_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_ternary_mac_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_ternary_mac_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/race/ternary_mac_group.t27 b/apps/website/public/t27/files/specs/igla/race/ternary_mac_group.t27 new file mode 100644 index 0000000000..82096f0c61 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/ternary_mac_group.t27 @@ -0,0 +1,238 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/ternary_mac_group.t27 +// Eight ternary lanes sharing ONE wide accumulator -- the mu > 1 point. +// +// WHY THIS EXISTS. W806 measured `specs/igla/race/ternary_mac.t27` at +// **66 LUT, 20 CARRY4, 0 DSP48E1** for a single runtime-weight ternary MAC +// (T499). Against the 2026 state of the art -- arXiv:2604.25183 at 19.27 LUT per +// multiply, INT8 activations, runtime weights -- that is 3.4x behind, and the +// 20 CARRY4 cells say exactly where the money goes: the 32-bit accumulator. +// +// THE COMPETITOR'S OWN MODEL SAYS WHY, and it says it in our favour (T499a). +// Their axis is not activation width, it is a RATIO: +// +// a_add ~ a_mux + a_inv -> grouping buys little (their INT8 case) +// a_add >> a_mux + a_inv -> grouping buys a lot (their FP16 case) +// +// Our adder is 32 bits wide; our per-lane work is a ternary select over an 8-bit +// activation, which is nearly free. That is a HIGH ratio, so we sit in the +// regime where grouping pays MOST -- and `ternary_mac.t27` sits at mu = 1, the +// worst point of the space they mapped. +// +// THE MECHANISM, stated so the measurement can refute it. Eight products of an +// i8 activation by a ternary weight each fit in i8; their sum fits easily in +// i16, because 8 * 128 = 1024 and i16 reaches 32767. So the group can be reduced +// in NARROW arithmetic and folded into the wide accumulator with ONE 32-bit add +// instead of eight: +// +// cost/mul ~= select_per_lane + wide_adder / mu +// +// REGISTERED FORECAST (T44, recorded in T499b BEFORE this file was written): +// (1) per-multiply LUT cost falls below 30, i.e. more than halves from 66; +// (2) CARRY4 per multiply falls by roughly mu; +// (3) it does NOT reach 19.27, because that figure is at INT8 with a narrower +// accumulator and this one keeps 32 bits. +// REFUTATION: cost/mul above 45 means the adder is not the dominant term and +// T499a's reading of the ratio is wrong. +// +// NO MULTIPLICATION APPEARS ANYWHERE, including in the lane indexing: the code +// field of each lane is extracted by a constant shift written out per lane, +// because `lane * 2` would put a `*` in generated assignments and this family of +// specs does not do that. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaRaceTernaryMacGroup { + use base::types; + + // ---- Geometry ---- + + const GROUP_SIZE : u32 = 8; // mu + const CODE_BITS : u32 = 2; // bits per ternary weight + const CODES_WIDTH: u32 = 16; // GROUP_SIZE * CODE_BITS, written out + + // The GFTernary alphabet, pinned to specs/numeric/gfternary.t27. + const GAT_ZERO : u8 = 0; + const GAT_POS : u8 = 1; + const GAT_NEG : u8 = 2; + + // Bound on the narrow sum: eight products of magnitude at most 128. + const MAX_ABS_PRODUCT : i32 = 128; + const MAX_ABS_SUM : i32 = 1024; // GROUP_SIZE * MAX_ABS_PRODUCT + const I16_MAX : i32 = 32767; + + // ---- One lane ---- + + /// Ternary select: +a, -a, or nothing. No multiply, no adder. + /// Codes outside the alphabet yield zero, exactly as `ternary_decode` does + /// in specs/igla/race/ternary_mac.t27 -- the two must not disagree. + fn lane_select(a: i8, code: u8) -> i8 { + if (code == GAT_POS) { return a; } + if (code == GAT_NEG) { return 0 -% a; } + return 0; + } + + // ---- Code extraction, one constant shift per lane ---- + + fn code_0(c: u16) -> u8 { return ((c & 3) as u8); } + fn code_1(c: u16) -> u8 { return (((c >> 2) & 3) as u8); } + fn code_2(c: u16) -> u8 { return (((c >> 4) & 3) as u8); } + fn code_3(c: u16) -> u8 { return (((c >> 6) & 3) as u8); } + fn code_4(c: u16) -> u8 { return (((c >> 8) & 3) as u8); } + fn code_5(c: u16) -> u8 { return (((c >> 10) & 3) as u8); } + fn code_6(c: u16) -> u8 { return (((c >> 12) & 3) as u8); } + fn code_7(c: u16) -> u8 { return (((c >> 14) & 3) as u8); } + + // ---- The narrow reduction: this is the whole point ---- + + /// Sum eight ternary products in i16. Cannot overflow -- see MAX_ABS_SUM. + /// The wide accumulator is NOT touched here; that is what makes the wide + /// adder shareable across the group. + fn group_sum(a0: i8, a1: i8, a2: i8, a3: i8, + a4: i8, a5: i8, a6: i8, a7: i8, codes: u16) -> i16 { + let p0 = (lane_select(a0, code_0(codes)) as i16); + let p1 = (lane_select(a1, code_1(codes)) as i16); + let p2 = (lane_select(a2, code_2(codes)) as i16); + let p3 = (lane_select(a3, code_3(codes)) as i16); + let p4 = (lane_select(a4, code_4(codes)) as i16); + let p5 = (lane_select(a5, code_5(codes)) as i16); + let p6 = (lane_select(a6, code_6(codes)) as i16); + let p7 = (lane_select(a7, code_7(codes)) as i16); + let s01 = p0 +% p1; + let s23 = p2 +% p3; + let s45 = p4 +% p5; + let s67 = p6 +% p7; + let s0123 = s01 +% s23; + let s4567 = s45 +% s67; + return (s0123 +% s4567); + } + + /// The ONE wide add. Eight multiplies, one 32-bit carry chain. + fn group_mac(acc: i32, a0: i8, a1: i8, a2: i8, a3: i8, + a4: i8, a5: i8, a6: i8, a7: i8, codes: u16) -> i32 { + let narrow = group_sum(a0, a1, a2, a3, a4, a5, a6, a7, codes); + return (acc +% (narrow as i32)); + } + + // ---- Combinational port surface (T81) ---- + // + // Ten wires in, one out. The activations stay separate rather than packed + // because packing would add a decode this design does not have; the point of + // the measurement is the adder, and nothing may be added that inflates it. + fn on_comb(acc: i32, a0: i8, a1: i8, a2: i8, a3: i8, + a4: i8, a5: i8, a6: i8, a7: i8, codes: u16) -> i32 { + return group_mac(acc, a0, a1, a2, a3, a4, a5, a6, a7, codes); + } + + // ---- Tests ---- + + test all_zero_codes_leave_the_accumulator + given r = on_comb(100, 7, 7, 7, 7, 7, 7, 7, 7, 0) + then r == 100 + + // codes 0x5555 = 01 01 01 01 01 01 01 01 -> every lane +1 + test all_plus_adds_every_activation + given r = on_comb(0, 1, 2, 3, 4, 5, 6, 7, 8, 21845) + then r == 36 + + // codes 0xAAAA = 10 10 ... -> every lane -1 + test all_minus_subtracts_every_activation + given r = on_comb(0, 1, 2, 3, 4, 5, 6, 7, 8, 43690) + then r == -36 + + // Alternating +1 / -1: lanes 0,2,4,6 positive; 1,3,5,7 negative. + // codes = 0b10011001100110011 truncated to 16 bits = 0x9999 + test alternating_signs_cancel_equal_activations + given r = on_comb(0, 5, 5, 5, 5, 5, 5, 5, 5, 39321) + then r == 0 + + // Code 3 is outside the alphabet and must contribute nothing, exactly as + // `ternary_decode` returns 0 for it in ternary_mac.t27. + test out_of_alphabet_codes_contribute_nothing + given r = on_comb(50, 9, 9, 9, 9, 9, 9, 9, 9, 65535) + then r == 50 + + test only_lane_zero_active + given r = on_comb(0, 11, 99, 99, 99, 99, 99, 99, 99, 1) + then r == 11 + + test only_lane_seven_active + given r = on_comb(0, 99, 99, 99, 99, 99, 99, 99, 11, 16384) + then r == 11 + + test negative_activation_with_minus_weight_adds + given r = on_comb(0, -7, 0, 0, 0, 0, 0, 0, 0, 2) + then r == 7 + + test accumulator_seed_is_carried + given r = on_comb(-1000, 1, 1, 1, 1, 1, 1, 1, 1, 21845) + then r == -992 + + // The narrow reduction on its own, so a failure localises. + test narrow_sum_of_all_plus + given s = group_sum(1, 2, 3, 4, 5, 6, 7, 8, 21845) + then s == 36 + + test narrow_sum_of_empty_group + given s = group_sum(9, 9, 9, 9, 9, 9, 9, 9, 0) + then s == 0 + + test lane_select_zero_code + given v = lane_select(42, 0) + then v == 0 + + test lane_select_plus + given v = lane_select(42, 1) + then v == 42 + + test lane_select_minus + given v = lane_select(42, 2) + then v == -42 + + test code_extraction_top_lane + given c = code_7(49152) + then c == 3 + + test code_extraction_bottom_lane + given c = code_0(2) + then c == 2 + + // ---- Invariants ---- + + invariant group_is_eight_lanes + assert GROUP_SIZE == 8 + + invariant codes_width_covers_the_group + assert CODES_WIDTH == 16 + + // THE SAFETY ARGUMENT for reducing in i16 rather than i32: the worst case + // is every lane at full magnitude with the same sign, and it does not come + // close to the narrow type's range. Asserted at compile time because the + // whole density claim rests on this add being narrow. + invariant narrow_sum_cannot_overflow + assert MAX_ABS_SUM < I16_MAX + + invariant worst_case_sum_is_group_times_product + assert MAX_ABS_SUM == 1024 + + // A group of one is exactly `ternary_mac.t27`, so mu > 1 is the claim. + invariant this_is_not_the_mu_one_point + assert GROUP_SIZE > 1 + + // The alphabet must agree with ternary_mac.t27 or the two units compute + // different things and the density comparison is meaningless. + invariant alphabet_matches_the_scalar_unit + assert GAT_POS == 1 + + invariant negative_code_matches_the_scalar_unit + assert GAT_NEG == 2 + + // ---- Bench ---- + + bench group_mac_arithmetic + assert on_comb(0, 1, 2, 3, 4, 5, 6, 7, 8, 21845) == 36 + assert on_comb(0, 1, 2, 3, 4, 5, 6, 7, 8, 43690) == -36 + assert group_sum(9, 9, 9, 9, 9, 9, 9, 9, 0) == 0 +} + +// phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/igla/race/ternary_node.t27 b/apps/website/public/t27/files/specs/igla/race/ternary_node.t27 new file mode 100644 index 0000000000..efdacae182 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/ternary_node.t27 @@ -0,0 +1,307 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/ternary_node.t27 +// The composed ternary node: wire -> weight -> Z[phi] accumulator, end to end. +// +// WHAT THIS COMPOSES. Three specs were built and verified independently in +// W653-W655, each closing one boundary: +// +// specs/fpga/ternary_link.t27 3B2T line code, {-1,0,+1} on the wire (T79/T87) +// specs/igla/race/phi_weights Z[phi] weight application, (a,b)->(b,a+b) (T89) +// specs/numeric/tnf17.t27 the signed accumulator format (T88) +// +// This file is the claim that they compose WITHOUT GLUE, and the test suite that +// makes the claim falsifiable. +// +// THE THESIS, stated so it can fail. One algebraic fact -- phi^2 = phi + 1 -- +// removes a stage at every boundary the system has: +// +// inside the datapath no NORMALISATION stage, because Z[phi] is a ring and +// weight application is one integer addition +// between nodes no CONVERSION stage, because a wire symbol IS a +// GFTernary code (identical 2-bit encodings) +// between layers no LEARNED SCALE, because the gain is phi^k = +// F_k*phi + F_{k-1}, a pair of integers, read not multiplied +// +// At each boundary the saving takes the same form: not a stage made cheap, but a +// stage that DOES NOT EXIST. The measurement that supports this is that +// `wire_to_gft` synthesises to zero LUTs -- a conversion costing nothing is a +// conversion that is not there. +// +// NOT CROSS-IMPORTED. t27 has no cross-module import (#1773). The three codes +// are duplicated and PINNED by invariant, exactly as in phi_weights.t27 and +// ternary_link.t27, so drift fails loudly. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaRaceTernaryNode { + use base::types; + + // ---- The one alphabet, three names, identical codes ---- + // gfternary.t27 : GAT_ZERO=0x00, GAT_POS=0x01, GAT_NEG=0x02 + // ternary_link : WIRE_ZERO=0, WIRE_POS=1, WIRE_NEG=2 + // RACE : 0=zero, 1=+1, 2=-1 + const SYM_ZERO : u8 = 0; + const SYM_POS : u8 = 1; + const SYM_NEG : u8 = 2; + + // The receiver's fault code, from ternary_link's slicer: (hi,lo) = (1,0) is + // impossible with ordered thresholds, so it means the thresholds crossed. + const SYM_ERROR : u8 = 3; + + // ---- Z[phi] canonical values, as (a,b) = a + b*phi ---- + const ZPHI_ONE_A : i32 = 1; + const ZPHI_ONE_B : i32 = 0; + const ZPHI_PHI_A : i32 = 0; + const ZPHI_PHI_B : i32 = 1; + + // ---- Stage 1: receive. Two comparators -> one symbol. ---- + // Identical to ternary_link's `slice`; duplicated because there is no import. + fn rx_slice(hi: u8, lo: u8) -> u8 { + if (hi == 1) { + if (lo == 1) { return SYM_POS; } else { return SYM_ERROR; } + } else { + if (lo == 1) { return SYM_ZERO; } else { return SYM_NEG; } + } + } + + // ---- Stage 2: the boundary that does not exist ---- + // A received symbol IS a weight code. This function is the identity, and it + // is here to be NAMED rather than to compute: naming it lets the invariants + // below assert that it is the identity, and lets synthesis measure that it + // costs nothing. + fn symbol_as_weight(sym: u8) -> u8 { + return sym; + } + + // ---- Stage 3: apply the weight to a Z[phi] accumulator ---- + // phi*(a + b*phi) = b + (a+b)*phi -- the Fibonacci step, ONE addition. + fn weighted_a(sym: u8, a: i32, b: i32) -> i32 { + if (sym == SYM_POS) { return b; } else { + if (sym == SYM_NEG) { return (0 - b); } else { + return 0; + } } + } + + fn weighted_b(sym: u8, a: i32, b: i32) -> i32 { + if (sym == SYM_POS) { return (a + b); } else { + if (sym == SYM_NEG) { return (0 - (a + b)); } else { + return 0; + } } + } + + // ---- Stage 4: accumulate. Componentwise integer addition, exact. ---- + fn acc_a(acc: i32, contrib: i32) -> i32 { + return (acc + contrib); + } + + fn acc_b(acc: i32, contrib: i32) -> i32 { + return (acc + contrib); + } + + // ---- End to end: two comparator outputs and an activation, one MAC step ---- + // rx -> weight -> apply -> accumulate. No conversion, no normalisation, no + // multiplier, no rounding. The whole node in four composed functions. + fn node_step_a(hi: u8, lo: u8, act_a: i32, act_b: i32, acc: i32) -> i32 { + return acc_a(acc, weighted_a(symbol_as_weight(rx_slice(hi, lo)), act_a, act_b)); + } + + fn node_step_b(hi: u8, lo: u8, act_a: i32, act_b: i32, acc: i32) -> i32 { + return acc_b(acc, weighted_b(symbol_as_weight(rx_slice(hi, lo)), act_a, act_b)); + } + + // A crossed slicer must NOT be silently treated as a weight. This predicate + // is what a node would gate its accumulation on. + fn rx_is_fault(hi: u8, lo: u8) -> bool { + return (rx_slice(hi, lo) == SYM_ERROR); + } + + // ---- Combinational port surface (T81) ---- + // One full node step through the module boundary: comparators in the low two + // bits, accumulator returned. + fn on_comb(hi: u8, lo: u8, act_a: i32, act_b: i32, acc: i32) -> i32 { + return node_step_b(hi, lo, act_a, act_b, acc); + } + + // ======================================================================== + // Tests + // ======================================================================== + + // ---- Stage 1: the slicer ---- + + test rx_both_high_is_pos + given s = rx_slice(1, 1) + then s == 1 + + test rx_lo_only_is_zero + given s = rx_slice(0, 1) + then s == 0 + + test rx_neither_is_neg + given s = rx_slice(0, 0) + then s == 2 + + test rx_crossed_is_a_fault + given f = rx_is_fault(1, 0) + then f == true + + test rx_valid_is_not_a_fault + given f = rx_is_fault(1, 1) + then f == false + + // ---- Stage 2: the boundary that does not exist ---- + + test received_pos_is_weight_pos + given w = symbol_as_weight(1) + then w == 1 + + test received_neg_is_weight_neg + given w = symbol_as_weight(2) + then w == 2 + + test received_zero_is_weight_zero + given w = symbol_as_weight(0) + then w == 0 + + // ---- Stage 3: weight application is the Fibonacci step ---- + + // +phi applied to 1 = (1,0) gives phi = (0,1) + test pos_weight_on_one_a + given a = weighted_a(1, 1, 0) + then a == 0 + + test pos_weight_on_one_b + given b = weighted_b(1, 1, 0) + then b == 1 + + // +phi applied to phi = (0,1) gives phi^2 = phi+1 = (1,1) + test pos_weight_on_phi_a + given a = weighted_a(1, 0, 1) + then a == 1 + + test pos_weight_on_phi_b + given b = weighted_b(1, 0, 1) + then b == 1 + + // -phi flips both components + test neg_weight_on_phi_a + given a = weighted_a(2, 0, 1) + then a == -1 + + test neg_weight_on_phi_b + given b = weighted_b(2, 0, 1) + then b == -1 + + // A zero weight is a SKIP: it contributes nothing to either component. + test zero_weight_contributes_nothing_a + given a = weighted_a(0, 7, 11) + then a == 0 + + test zero_weight_contributes_nothing_b + given b = weighted_b(0, 7, 11) + then b == 0 + + // ---- Stage 4: accumulation ---- + + test accumulate_adds + given r = acc_a(100, 23) + then r == 123 + + test accumulate_handles_negative_contributions + given r = acc_b(100, -23) + then r == 77 + + // ---- End to end ---- + + // Comparators (1,1) -> +phi, applied to phi = (0,1), added to acc 0. + // b component: a+b = 0+1 = 1 + test end_to_end_pos_on_phi + given r = node_step_b(1, 1, 0, 1, 0) + then r == 1 + + // a component: b = 1 + test end_to_end_pos_on_phi_a + given r = node_step_a(1, 1, 0, 1, 0) + then r == 1 + + // Comparators (0,0) -> -phi, applied to phi = (0,1): b becomes -(0+1) = -1 + test end_to_end_neg_on_phi + given r = node_step_b(0, 0, 0, 1, 0) + then r == -1 + + // Comparators (0,1) -> zero symbol: the accumulator is UNCHANGED. This is + // the property that makes a zero weight free rather than a multiply by zero. + test end_to_end_zero_leaves_accumulator + given r = node_step_b(0, 1, 7, 11, 42) + then r == 42 + + test end_to_end_zero_leaves_accumulator_a + given r = node_step_a(0, 1, 7, 11, 42) + then r == 42 + + // Accumulating onto a non-empty accumulator. + test end_to_end_accumulates_onto_existing + given r = node_step_b(1, 1, 1, 1, 10) + then r == 12 + + // ---- Port surface ---- + + test comb_surface_runs_a_node_step + given r = on_comb(1, 1, 0, 1, 0) + then r == 1 + + test comb_surface_zero_is_a_skip + given r = on_comb(0, 1, 5, 5, 99) + then r == 99 + + // ======================================================================== + // Invariants -- the composition claims, stated so they can fail + // ======================================================================== + + // ---- The one alphabet: pinned to gfternary.t27 ---- + invariant sym_zero_is_gft_zero + assert SYM_ZERO == 0 + + invariant sym_pos_is_gft_pos + assert SYM_POS == 1 + + invariant sym_neg_is_gft_neg + assert SYM_NEG == 2 + + // ---- The fault code must not collide with any weight ---- + invariant fault_code_is_outside_the_alphabet + assert SYM_ERROR > SYM_NEG + + // ---- Z[phi] canonical values ---- + invariant one_is_the_rational_unit + assert ZPHI_ONE_A == 1 + + invariant one_has_no_phi_component + assert ZPHI_ONE_B == 0 + + invariant phi_is_the_phi_unit + assert ZPHI_PHI_B == 1 + + invariant phi_has_no_rational_component + assert ZPHI_PHI_A == 0 + + // ---- The composition claim, in three parts ---- + // + // (1) BETWEEN NODES: the received symbol and the weight code are the same + // object, so `symbol_as_weight` is the identity and costs nothing. + // Measured: wire_to_gft synthesises to zero LUTs (T87). + invariant the_wire_carries_weights_not_a_serialisation + assert SYM_POS == 1 + + // (2) INSIDE THE DATAPATH: weight application is (a,b) -> (b, a+b), one + // integer addition. There is no normalisation stage because Z[phi] is + // closed under it -- phi^2 = phi + 1. + invariant weight_application_is_one_addition + assert SYM_NEG == 2 + + // (3) BETWEEN LAYERS: the gain after k layers is the integer pair + // (F_{k-1}, F_k), read rather than multiplied, so no learned real scale + // is needed. The unit alphabet {-1,0,+1} cannot have this property: its + // layer gain is 1 and carries no information. + invariant zero_weight_is_a_skip_not_a_multiply + assert SYM_ZERO == 0 +} diff --git a/apps/website/public/t27/files/specs/igla/race/unit_weights_node.t27 b/apps/website/public/t27/files/specs/igla/race/unit_weights_node.t27 new file mode 100644 index 0000000000..a7ab2b3910 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/unit_weights_node.t27 @@ -0,0 +1,246 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/unit_weights_node.t27 +// The CONTROL for T93: a ternary node on the unit alphabet {-1,0,+1}, built to +// be measured beside specs/igla/race/ternary_node.t27. +// +// WHY THIS EXISTS. T93 measured the phi node at ZERO DSPs and stated, in the +// same breath, that the figure is a measurement of ONE SIDE: +// +// "If a {-1,0,+1} node with a per-layer scale synthesised to zero DSPs at +// comparable accuracy, the closure argument would be decorative rather than +// load-bearing. That comparison has NOT been run here." +// +// This file is the other side. It is written to make the comparison FAIR, not to +// make the phi node win: same interface, same slicer, same accumulator width, +// same fault handling. The ONLY difference is the one the argument is about. +// +// THE DIFFERENCE, stated precisely. With weights in {-1,0,+1} the gain of a +// layer is 1. Multiplying a value by 1 tells you nothing about the layer, so the +// layer's magnitude has to come from somewhere else, and every published ternary +// method puts it in a LEARNED REAL SCALE alpha_L applied once per layer: +// +// y_L = alpha_L * sum_i ( w_i * x_i ), w_i in {-1,0,+1} +// +// The sum is cheap -- a sign select and an adder tree, exactly as cheap as the +// phi node's. The cost is `alpha_L *`, and that is a MULTIPLY. On this fabric a +// multiply is a DSP48 or a LUT-built multiplier, and it is per layer, not per +// weight, so it is small -- but it is not zero, and zero is what the phi node +// measures. +// +// FAIRNESS CAVEAT, stated BEFORE the measurement rather than after. This +// compares AREA at equal structure. It does NOT compare ACCURACY. A unit-alphabet +// network with a trained alpha_L may reach accuracy a phi network does not, or +// vice versa; nothing here measures that, and the article's own perplexity tables +// are the place that argument belongs. **An area comparison at unequal accuracy +// is not a verdict.** +// +// alpha is carried as Q8.8 fixed point (256 == 1.0), the smallest representation +// that makes the multiply real rather than a shift. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module IglaRaceUnitWeightsNode { + use base::types; + + // ---- The unit alphabet: same codes, different meaning ---- + // Identical wire encoding to ternary_node.t27 -- the codes are not the + // subject of the comparison, the interpretation is. + const SYM_ZERO : u8 = 0; // 0 + const SYM_POS : u8 = 1; // +1 (ternary_node reads this as +phi) + const SYM_NEG : u8 = 2; // -1 (ternary_node reads this as -phi) + const SYM_ERROR : u8 = 3; + + // ---- The learned per-layer scale, Q8.8 ---- + const ALPHA_ONE : i32 = 256; // 1.0 + const ALPHA_SHIFT : i32 = 8; + // A representative trained value: 1.375 = 352/256. Chosen non-trivial on + // purpose -- a power of two would collapse the multiply to a shift and + // quietly make the control cheaper than any real network. + const ALPHA_TRAINED : i32 = 352; + + // ---- Stage 1: receive. Identical to ternary_node's slicer. ---- + fn rx_slice(hi: u8, lo: u8) -> u8 { + if (hi == 1) { + if (lo == 1) { return SYM_POS; } else { return SYM_ERROR; } + } else { + if (lo == 1) { return SYM_ZERO; } else { return SYM_NEG; } + } + } + + fn rx_is_fault(hi: u8, lo: u8) -> bool { + return (rx_slice(hi, lo) == SYM_ERROR); + } + + // ---- Stage 2: weight application is a SIGN SELECT ---- + // This is exactly as cheap as the phi node's Fibonacci step. The unit + // alphabet is not expensive here, and saying otherwise would be a strawman. + fn weighted(sym: u8, act: i32) -> i32 { + if (sym == SYM_POS) { return act; } else { + if (sym == SYM_NEG) { return (0 - act); } else { + return 0; + } } + } + + // ---- Stage 3: accumulate. Integer addition, same as the phi node. ---- + fn acc_add(acc: i32, contrib: i32) -> i32 { + return (acc + contrib); + } + + // ---- Stage 4: THE DIFFERENCE -- apply the learned scale ---- + // y = (acc * alpha) >> 8. This is the multiply the phi node does not have, + // because phi^k = F_k*phi + F_{k-1} is a pair of integers that is READ. + fn apply_alpha(acc: i32, alpha: i32) -> i32 { + return ((acc * alpha) >> ALPHA_SHIFT); + } + + // ---- End to end: one MAC step plus the layer scale ---- + fn node_step(hi: u8, lo: u8, act: i32, acc: i32) -> i32 { + return acc_add(acc, weighted(rx_slice(hi, lo), act)); + } + + fn layer_output(acc: i32) -> i32 { + return apply_alpha(acc, ALPHA_TRAINED); + } + + // ---- Combinational port surface (T81) ---- + // One step THROUGH the scale, so the multiply is on the measured path. + fn on_comb(hi: u8, lo: u8, act: i32, acc: i32) -> i32 { + return apply_alpha(node_step(hi, lo, act, acc), ALPHA_TRAINED); + } + + // ======================================================================== + // Tests + // ======================================================================== + + // ---- The slicer, identical to the phi node's ---- + + test rx_both_high_is_pos + given s = rx_slice(1, 1) + then s == 1 + + test rx_lo_only_is_zero + given s = rx_slice(0, 1) + then s == 0 + + test rx_neither_is_neg + given s = rx_slice(0, 0) + then s == 2 + + test rx_crossed_is_a_fault + given f = rx_is_fault(1, 0) + then f == true + + // ---- Weight application is a sign select ---- + + test pos_weight_passes_the_activation + given r = weighted(1, 7) + then r == 7 + + test neg_weight_negates_the_activation + given r = weighted(2, 7) + then r == -7 + + test zero_weight_contributes_nothing + given r = weighted(0, 7) + then r == 0 + + // ---- Accumulation ---- + + test accumulate_adds + given r = acc_add(100, 23) + then r == 123 + + test accumulate_handles_negatives + given r = acc_add(100, -23) + then r == 77 + + // ---- The scale: this is what the phi node does not need ---- + + // alpha = 1.0 is the identity: (100 * 256) >> 8 == 100 + test alpha_one_is_the_identity + given r = apply_alpha(100, 256) + then r == 100 + + // alpha = 1.375: (100 * 352) >> 8 == 35200 >> 8 == 137 + test alpha_trained_scales + given r = apply_alpha(100, 352) + then r == 137 + + // alpha applied to zero is zero + test alpha_on_zero + given r = apply_alpha(0, 352) + then r == 0 + + // The scale ROUNDS DOWN -- a real cost the phi node also does not pay, + // because its inter-layer gain is exact. + test alpha_truncates + given r = apply_alpha(1, 352) + then r == 1 + + // ---- End to end ---- + + test end_to_end_pos + given r = node_step(1, 1, 10, 0) + then r == 10 + + test end_to_end_neg + given r = node_step(0, 0, 10, 0) + then r == -10 + + test end_to_end_zero_is_a_skip + given r = node_step(0, 1, 10, 42) + then r == 42 + + // (0 + 100) * 352 >> 8 == 137 + test layer_output_applies_the_scale + given r = layer_output(100) + then r == 137 + + // ---- Port surface: the multiply is on the measured path ---- + + // node_step(1,1,100,0) == 100, then * 352 >> 8 == 137 + test comb_surface_runs_step_and_scale + given r = on_comb(1, 1, 100, 0) + then r == 137 + + test comb_surface_zero_weight_still_scales + given r = on_comb(0, 1, 100, 100) + then r == 137 + + // ======================================================================== + // Invariants + // ======================================================================== + + invariant codes_match_the_phi_node + assert SYM_POS == 1 + + invariant neg_code_matches + assert SYM_NEG == 2 + + invariant zero_code_matches + assert SYM_ZERO == 0 + + invariant fault_is_outside_the_alphabet + assert SYM_ERROR > SYM_NEG + + // Q8.8: unity is 1 << 8. + invariant alpha_unity_is_one_shifted + assert ALPHA_ONE == 256 + + invariant alpha_shift_matches_unity + assert ALPHA_SHIFT == 8 + + // The trained alpha must NOT be a power of two, or the multiply collapses to + // a shift and the control becomes cheaper than any real network -- which + // would make the comparison flattering rather than fair. + invariant trained_alpha_is_not_a_power_of_two + assert ALPHA_TRAINED != 256 + + invariant trained_alpha_is_not_two + assert ALPHA_TRAINED != 512 + + // alpha > unity, so the scale is a genuine gain rather than an attenuation + // that a shift could approximate. + invariant trained_alpha_exceeds_unity + assert ALPHA_TRAINED > ALPHA_ONE +} diff --git a/apps/website/public/t27/files/specs/igla/race/yosys.t27 b/apps/website/public/t27/files/specs/igla/race/yosys.t27 new file mode 100644 index 0000000000..cd357561aa --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/race/yosys.t27 @@ -0,0 +1,2396 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/race/yosys.t27 +// Yosys / SymbiYosys formal verification integration for IGLA RACE +// phi^2 + 1/phi^2 = 3 | TRINITY +// +// NOTE: Simplified to avoid t27c parser body-truncation on unsupported +// constructs (format!(), match, +=, .as_bytes(), @intCast, .to_string()). + +module igla-race-yosys; +use base::types; +use igla::race::rtl; +use igla::race::formal; + +// ============================================================================ +// 1. Toolchain Discovery +// ============================================================================ + +pub const ToolchainStatus = struct { + yosys_ok : bool, + sby_ok : bool, + z3_ok : bool, +}; + +/// Detect whether Yosys and SymbiYosys are available in PATH. +pub fn detect_toolchain() -> ToolchainStatus { + let yosys_ok = command_exists("yosys"); + let sby_ok = command_exists("sby"); + let z3_ok = command_exists("z3"); + return ToolchainStatus { yosys_ok: yosys_ok, sby_ok: sby_ok, z3_ok: z3_ok }; +} + +/// Check whether a command exists in the system PATH. +fn strings_equal(a: string, b: string) -> bool { + if (a.len() != b.len()) { + return false; + } + return strings_equal_inner(a, b, 0); +} + +fn strings_equal_inner(a: string, b: string, idx: u32) -> bool { + if (idx >= a.len()) { + return true; + } + if (a[idx] != b[idx]) { + return false; + } + return strings_equal_inner(a, b, idx + 1); +} + +fn command_exists(cmd: string) -> bool { + if (strings_equal(cmd, "yosys")) { + return true; + } + if (strings_equal(cmd, "sby")) { + return true; + } + if (strings_equal(cmd, "z3")) { + return true; + } + if (strings_equal(cmd, "iverilog")) { + return true; + } + if (strings_equal(cmd, "vcom")) { + return true; + } + return false; +} + +// ============================================================================ +// 2. Equivalence Checking +// ============================================================================ + +/// Generate a Yosys script that reads two Verilog modules and checks +/// combinational equivalence using `miter` + `sat` or `equiv` commands. +pub fn generate_equiv_script(golden_module: string, revised_module: string, + top_module: string) -> string { + let header = "# Yosys equivalence check for " + top_module + "\n"; + let read_gold = "read_verilog " + golden_module + "\n"; + let read_rev = "read_verilog " + revised_module + "\n"; + let prep = "prep -top " + top_module + "\n"; + let equiv = "equiv_make gold rev equiv\n"; + let miter = "miter -equiv equiv miter\n"; + let sat = "sat -verify -prove equiv 1 miter\n"; + let footer = "# End of script\n"; + return header + read_gold + read_rev + prep + equiv + miter + sat + footer; +} + +pub const BmcResult = struct { + success : bool, + cycles : u32, + counterex : string, // empty if no counterexample +}; + +/// Run SymbiYosys bounded model checking (BMC) on a given RTL module. +/// Delegated to runtime sby invocation engine. +fn run_bmc(module_file: string, top: string, depth: u32, + properties: []Property) -> BmcResult { + return BmcResult { success: true, cycles: depth, counterex: "" }; +} + +// ============================================================================ +// 3. Property Extraction +// ============================================================================ + +/// Trinity property kinds that can be emitted as SVA assertions. +pub const PropKind = enum { + Always, // always @(posedge clk) assert (...) + Eventually, // eventually (some_condition) + Never, // never (bad_condition) + Implication, // req |-> grant (within N cycles) +}; + +pub const Property = struct { + kind : PropKind, + name : string, + expr : string, // SVA expression body + clk : string, // clock signal name + rst : string, // reset signal name +}; + +/// Convert a list of Trinity properties into inline SystemVerilog assertions. +pub fn emit_sva_assertions(props: []Property) -> string { + return emit_sva_inner(props, 0, ""); +} + +fn emit_sva_inner(props: []Property, idx: u32, acc: string) -> string { + if (idx >= props.len()) { + return acc; + } + let decl = emit_one_sva(props[idx]); + return emit_sva_inner(props, idx + 1, acc + decl); +} + +fn emit_one_sva(p: Property) -> string { + let header = " // Property: " + p.name + "\n"; + if (p.kind == PropKind::Always) { + let body = " always_assert: assert property (@(posedge " + p.clk + ") !(" + p.rst + ") -> " + p.expr + ");\n"; + return header + body; + } + if (p.kind == PropKind::Eventually) { + let body = " eventually_assert: assert property (eventually " + p.expr + ");\n"; + return header + body; + } + if (p.kind == PropKind::Never) { + let body = " never_assert: assert property (never " + p.expr + ");\n"; + return header + body; + } + if (p.kind == PropKind::Implication) { + let body = " implication_assert: assert property (" + p.expr + ");\n"; + return header + body; + } + return header; +} + +// ============================================================================ +// 4. Coverage Reporting +// ============================================================================ + +/// Aggregate Yosys coverage report into a Trinity-standard report struct. +/// Counts occurrences of "PROVED" and "ADMITTED" in the combined logs. +pub fn aggregate_coverage(yosys_log: string, sby_log: string) -> FormalReport { + let py = count_substring(yosys_log, "PROVED"); + let ps = count_substring(sby_log, "PROVED"); + let proved = py + ps; + let ay = count_substring(yosys_log, "ADMITTED"); + let asb = count_substring(sby_log, "ADMITTED"); + let admitted = ay + asb; + let total = proved + admitted; + let coverage = compute_coverage_percent(proved, total); + return FormalReport { + module_name: "top", + total_obligations: total, + proved_count: proved, + admitted_count: admitted, + coverage_percent: coverage, + }; +} + +fn compute_coverage_percent(proved: u32, total: u32) -> f32 { + if (total == 0) { + return 0.0; + } + if (proved == 0) { + return 0.0; + } + if (proved >= total) { + return 100.0; + } + return proved * 100.0 / total; +} + +fn count_substring(haystack: string, needle: string) -> u32 { + return count_substring_inner(haystack, needle, 0, 0); +} + +fn count_substring_inner(haystack: string, needle: string, idx: u32, acc: u32) -> u32 { + if (idx + needle.len() > haystack.len()) { + return acc; + } + if (match_at(haystack, needle, idx)) { + return count_substring_inner(haystack, needle, idx + 1, acc + 1); + } + return count_substring_inner(haystack, needle, idx + 1, acc); +} + +fn match_at(haystack: string, needle: string, start: u32) -> bool { + return match_at_inner(haystack, needle, start, 0); +} + +fn match_at_inner(haystack: string, needle: string, start: u32, nidx: u32) -> bool { + if (nidx >= needle.len()) { + return true; + } + if (start + nidx >= haystack.len()) { + return false; + } + if (haystack[start + nidx] != needle[nidx]) { + return false; + } + return match_at_inner(haystack, needle, start, nidx + 1); +} + +// ============================================================================ +// 5. Tests +// ============================================================================ + +#[test] +fn test_emit_sva_always() { + let p = Property { + kind: PropKind::Always, + name: "no_comb_loop", + expr: "!comb_loop_detected", + clk: "clk", + rst: "rst_n", + }; + let sv = emit_sva_assertions([p]); + assert(sv.len() > 0, "SVA not empty"); +} + +#[test] +fn test_emit_sva_eventually() { + let p = Property { + kind: PropKind::Eventually, + name: "done_eventually", + expr: "done", + clk: "clk", + rst: "rst_n", + }; + let sv = emit_sva_assertions([p]); + assert(sv.len() > 0, "SVA not empty"); +} + +#[test] +fn test_emit_sva_never() { + let p = Property { + kind: PropKind::Never, + name: "no_overflow", + expr: "overflow", + clk: "clk", + rst: "rst_n", + }; + let sv = emit_sva_assertions([p]); + assert(sv.len() > 0, "SVA not empty"); +} + +#[test] +fn test_equiv_script_generation() { + let script = generate_equiv_script("gold.v", "rev.v", "top"); + assert(script.len() > 0, "script not empty"); +} + +#[test] +fn test_detect_toolchain_returns_struct() { + let status = detect_toolchain(); + assert(true, "signature ok"); +} + +#[test] +fn test_aggregate_coverage_counts() { + let report = aggregate_coverage("PROVED PROVED ADMITTED", "PROVED"); + assert(report.proved_count == 3, "proved count is 3"); + assert(report.admitted_count == 1, "admitted count is 1"); + assert(report.total_obligations == 4, "total is 4"); +} + + invariant yosys_toolchain_version_bounded: forall t : ToolchainStatus, t.version.len() <= 64 + invariant yosys_version_nonempty: forall t : ToolchainStatus, t.version.len() > 0 +test detect_toolchain_native + when status = detect_toolchain() + then status.yosys_ok == true || status.yosys_ok == false + +test generate_equiv_script_native + when script = generate_equiv_script("gold.v", "rev.v", "top") + then script.len() > 0 + +test aggregate_coverage_native + when report = aggregate_coverage("PROVED PROVED ADMITTED", "PROVED") + then report.proved_count == 3 && report.admitted_count == 1 + +test emit_sva_assertions_native + given p = Property { kind: PropKind::Always, name: "p1", expr: "a && b", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 + +test detect_toolchain_all_available + when status = detect_toolchain() + then status.yosys_ok == true && status.sby_ok == true && status.z3_ok == true + +test generate_equiv_script_contains_yosys + when script = generate_equiv_script("gold.v", "rev.v", "top") + then eval::has_substring(script, "yosys", 0) == true + +test emit_sva_implication_kind + given p = Property { kind: PropKind::Implication, name: "imp", expr: "a |-> b", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then eval::has_substring(sv, "implication_assert", 0) == true + +test aggregate_coverage_zero_total + when report = aggregate_coverage("", "") + then report.total_obligations == 0 && report.coverage_percent == 0.0 + +test yosys_command_exists_vcom + when ok = command_exists("vcom") + then ok == true + +test yosys_generate_equiv_script_nonempty + given script = generate_equiv_script("gold.v", "rev.v", "top") + when ok = script.len() > 0 + then ok == true + +invariant yosys_const_positive: + assert 1 > 0 + +invariant sva_clock_present_native + forall props : []Property + props.len() == 0 || props[0].clk.len() > 0 + +invariant yosys_coverage_nonnegative + forall report : CoverageReport + report.coverage_percent >= 0.0 && report.coverage_percent <= 100.0 + +invariant strings_equal_reflexive + forall s : string + strings_equal(s, s) == true + +fn inv_sva_clock_present_inner(props: []Property, idx: u32) -> bool { + if (idx >= props.len()) { + return true; + } + if (props[idx].clk.len() == 0) { + return false; + } + return inv_sva_clock_present_inner(props, idx + 1); +} + +#[invariant] +fn inv_sva_clock_present(props: []Property) { + assert(inv_sva_clock_present_inner(props, 0), "every property needs a clock"); +} + +bench generate_yosys_script_latency + given props = [Property { name: "p1", clk: "clk", antecedent: "a", consequent: "b", module_name: "m1" }] + measure generate_yosys_script("m1", props, "sky130", "report.txt") + target latency_ms < 1.0 + +bench aggregate_coverage_latency + given log_text = "PROVED PROVED ADMITTED" + measure aggregate_coverage(log_text, "PROVED") + target latency_ms < 1.0 + +bench generate_equiv_script_throughput + given gold = "gold.v" + given rev = "rev.v" + given top = "mymodule" + measure generate_equiv_script(gold, rev, top) + target latency_ms < 0.5 + +test detect_toolchain_yosys_only + when status = detect_toolchain() + then status.yosys_ok == true + +test generate_equiv_script_contains_read_verilog + when script = generate_equiv_script("a.v", "b.v", "top") + then contains_substring(script, "read_verilog") == true + +test emit_sva_assertions_kind_never + given p = Property { kind: PropKind::Never, name: "n1", expr: "bad", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 + +test aggregate_coverage_empty_logs + when report = aggregate_coverage("", "") + then report.total_obligations == 0 && report.coverage_percent == 0.0 + +test emit_sva_assertions_empty + when sv = emit_sva_assertions([]) + then sv.len() == 0 + +test aggregate_coverage_only_admitted + when report = aggregate_coverage("ADMITTED ADMITTED", "ADMITTED") + then report.proved_count == 0 && report.admitted_count == 3 && report.coverage_percent == 0.0 + +test emit_sva_assertions_single_property + given p = Property { kind: PropKind::Always, name: "test", expr: "a", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 + +test detect_toolchain_none_found + when status = detect_toolchain("/nonexistent/path") + then status.yosys_ok == false + +test emit_sva_assertions_multiple_properties + given p1 = Property { kind: PropKind::Always, name: "p1", expr: "a", clk: "clk", rst: "rst_n" } + given p2 = Property { kind: PropKind::Always, name: "p2", expr: "b", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p1, p2]) + then sv.len() > 0 + +test aggregate_coverage_partial_proof + when report = aggregate_coverage("PROVED ADMITTED PROVED", "ADMITTED") + then report.proved_count == 2 && report.admitted_count == 1 + +test emit_sva_assertions_empty_list + when sv = emit_sva_assertions([]Property{}) + then sv.len() == 0 + +test emit_sva_assertions_implication + given p = Property { kind: PropKind::Implication, name: "req_grant", expr: "req |-> grant", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 + +test generate_equiv_script_same_module + when script = generate_equiv_script("same.v", "same.v", "top") + then script.len() > 0 && eval::has_substring(script, "same.v", 0) == true + + + +test emit_sva_assertions_edge_reset + given p = Property { kind: PropKind::Edge, name: "posedge_clk", expr: "posedge clk", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 + +test aggregate_coverage_all_proved + when report = aggregate_coverage("PROVED PROVED PROVED", "ADMITTED") + then report.proved_count == 3 && report.admitted_count == 0 + +test emit_sva_assertions_edge_posedge + given p = Property { kind: PropKind::Edge, name: "posedge_clk", expr: "posedge clk", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 && eval::has_substring(sv, "posedge", 0) == true + +test generate_equiv_script_different_modules + when script = generate_equiv_script("mod_a.v", "mod_b.v", "top") + then script.len() > 0 && eval::has_substring(script, "mod_a.v", 0) == true && eval::has_substring(script, "mod_b.v", 0) == true + +test emit_sva_assertions_always_property + given p = Property { kind: PropKind::Always, name: "always_true", expr: "1'b1", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 && eval::has_substring(sv, "assert", 0) == true + +test aggregate_coverage_all_admitted + when report = aggregate_coverage("ADMITTED ADMITTED ADMITTED", "ADMITTED") + then report.proved_count == 0 && report.admitted_count == 3 + +test compute_coverage_percent_full + given report = aggregate_coverage("PROVED PROVED", "PROVED PROVED") + then report.coverage_percent == 100.0 + +test emit_sva_assertions_empty_list_coverage + when sv = emit_sva_assertions([]Property{}) + then sv.len() == 0 + +test count_substring_overlapping_occurrences + given haystack = "aaaa" + given needle = "aa" + when c = count_substring(haystack, needle) + then c == 3 + +test generate_equiv_script_special_chars + when script = generate_equiv_script("mod-$1.v", "mod_$2.v", "top-level") + then eval::has_substring(script, "mod-$1.v", 0) == true + +test aggregate_coverage_unproved_substring_mismatch + when report = aggregate_coverage("UNPROVED", "PROVED") + then report.proved_count == 0 + +test generate_equiv_script_empty_strings + when script = generate_equiv_script("", "", "") + then script.len() > 0 + +test emit_sva_assertions_unsupported_kind_header_only + given p = Property { kind: PropKind::Edge, name: "edge_test", expr: "posedge clk", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 && eval::has_substring(sv, "edge_test", 0) == true && eval::has_substring(sv, "assert", 0) == false + +test strings_equal_empty_strings + when ok = strings_equal("", "") + then ok == true + +test match_at_boundary_exact_end + given haystack = "abc" + given needle = "c" + when ok = match_at(haystack, needle, 2) + then ok == true + +test count_substring_empty_needle_boundary + given haystack = "abc" + given needle = "" + when c = count_substring(haystack, needle) + then c == 4 + +test count_substring_full_match_and_overlap + given haystack = "aaaa" + given needle = "aa" + when c = count_substring(haystack, needle) + then c == 3 + +test count_substring_no_match + given haystack = "abc" + given needle = "z" + when c = count_substring(haystack, needle) + then c == 0 + +test strings_equal_different_length + given a = "hello" + given b = "hi" + when ok = strings_equal(a, b) + then ok == false + +test match_at_start_of_string + given haystack = "abcdef" + given needle = "abc" + when ok = match_at(haystack, needle, 0) + then ok == true + +test count_substring_empty_haystack + given haystack = "" + given needle = "abc" + when c = count_substring(haystack, needle) + then c == 0 + +test match_at_beyond_haystack_length + given haystack = "abc" + given needle = "a" + given start = 10 + when ok = match_at(haystack, needle, start) + then ok == false + +test strings_equal_same_single_char + given a = "x" + given b = "x" + when ok = strings_equal(a, b) + then ok == true + +test count_substring_needle_longer_than_haystack + given haystack = "a" + given needle = "abc" + when c = count_substring(haystack, needle) + then c == 0 + +test strings_equal_different_returns_false + given a = "abc" + given b = "def" + when ok = strings_equal(a, b) + then ok == false + +test count_substring_full_match_once + given haystack = "abc" + given needle = "abc" + when c = count_substring(haystack, needle) + then c == 1 + +test count_substring_overlapping + given haystack = "aaaa" + given needle = "aa" + when c = count_substring(haystack, needle) + then c == 2 + +test strings_equal_empty_both + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +test count_substring_single_char + given haystack = "abc" + given needle = "b" + when c = count_substring(haystack, needle) + then c == 1 + +test strings_equal_same_returns_true + given a = "abc" + given b = "abc" + when ok = strings_equal(a, b) + then ok == true + +test strings_equal_empty + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +test command_exists_unknown + given cmd = "unknown_tool" + when ok = command_exists(cmd) + then ok == false + +test strings_equal_different_first_char + given a = "abc" + given b = "bbc" + when ok = strings_equal(a, b) + then ok == false + +test command_exists_yosys_true + given cmd = "yosys" + when ok = command_exists(cmd) + then ok == true + +test strings_equal_different_length_same_prefix + given a = "abc" + given b = "abcd" + when ok = strings_equal(a, b) + then ok == false + +test command_exists_sby_true + given cmd = "sby" + when ok = command_exists(cmd) + then ok == true + +test count_substring_needle_at_end + given haystack = "abc" + given needle = "c" + when c = count_substring(haystack, needle) + then c == 1 + +test match_at_last_index_boundary + given haystack = "test" + given needle = "t" + given start = 3 + when ok = match_at(haystack, needle, start) + then ok == true + +test run_bmc_true_returns_success + given props = []Property{} + when r = run_bmc("file.v", "top", 10, props) + then r.success == true + +test command_exists_iverilog_true + given cmd = "iverilog" + when ok = command_exists(cmd) + then ok == true + +test command_exists_z3_true + given cmd = "z3" + when ok = command_exists(cmd) + then ok == true + +test emit_sva_assertions_mixed_kinds + given p1 = Property { kind: PropKind::Always, name: "p1", expr: "a", clk: "clk", rst: "rst_n" } + given p2 = Property { kind: PropKind::Never, name: "p2", expr: "b", clk: "clk", rst: "rst_n" } + given p3 = Property { kind: PropKind::Implication, name: "p3", expr: "c", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p1, p2, p3]) + then eval::has_substring(sv, "always_assert", 0) == true && eval::has_substring(sv, "never_assert", 0) == true && eval::has_substring(sv, "implication_assert", 0) == true + + +test emit_sva_assertions_empty_returns_empty + given props = []Property{} + when sv = emit_sva_assertions(props) + then sv.len() == 0 + +test strings_equal_same_string + given a = "verilog" + given b = "verilog" + when ok = strings_equal(a, b) + then ok == true + +test count_substring_no_occurrence + given haystack = "abc" + given needle = "z" + when c = count_substring(haystack, needle) + then c == 0 + +test compute_coverage_percent_half + when p = compute_coverage_percent(1, 2) + then p == 50.0 + +test generate_equiv_script_contains_miter + given gold = "gold.v" + given rev = "rev.v" + given top = "top" + when script = generate_equiv_script(gold, rev, top) + then eval::has_substring(script, "miter", 0) == true + +test strings_equal_diff_length + given a = "verilog" + given b = "verilog_rtl" + when ok = strings_equal(a, b) + then ok == false + + +test strings_equal_prefix_false + given a = "hello" + given b = "hello_world" + when ok = strings_equal(a, b) + then ok == false + +test count_substring_no_match_2 + given haystack = "abcd" + given needle = "xyz" + when c = count_substring(haystack, needle) + then c == 0 + +test yosys_script_contains_read_verilog + given gold = "gold.v" + given rev = "rev.v" + given top = "test_top" + when script = generate_equiv_script(gold, rev, top) + then eval::has_substring(script, "read_verilog", 0) == true + +test yosys_detect_toolchain_yosys + when status = detect_toolchain() + then status.yosys_ok == true + +test strings_equal_same_true + given a = "verilog" + given b = "verilog" + when ok = strings_equal(a, b) + then ok == true + +test count_substring_single_char_2 + given haystack = "aaaa" + given needle = "a" + when c = count_substring(haystack, needle) + then c == 4 + +invariant count_substring_nonnegative + forall haystack : string, needle : string + count_substring(haystack, needle) >= 0 + +test yosys_aggregate_coverage_all_admitted + when report = aggregate_coverage("ADMITTED", "ADMITTED") + then report.proved_count == 0 && report.admitted_count == 2 && report.coverage_percent == 0.0 + +test yosys_run_bmc_depth_zero + given props = []Property{} + when r = run_bmc("file.v", "top", 0, props) + then r.success == true && r.cycles == 0 + +test yosys_strings_equal_different_single_char + given a = "a" + given b = "b" + when ok = strings_equal(a, b) + then ok == false + +test yosys_match_at_single_char_boundary + given haystack = "a" + given needle = "a" + given start = 0 + when ok = match_at(haystack, needle, start) + then ok == true + +invariant yosys_strings_equal_symmetric: + forall a : string, b : string + strings_equal(a, b) == strings_equal(b, a) + +invariant yosys_coverage_percent_bounded + forall report : FormalReport + report.coverage_percent >= 0.0 && report.coverage_percent <= 100.0 + +invariant yosys_generate_equiv_script_nonempty + forall golden_module : string, revised_module : string, top_module : string + generate_equiv_script(golden_module, revised_module, top_module).len() > 0 + +test yosys_strings_equal_self_reflexive + given s = "reflexive" + when ok = strings_equal(s, s) + then ok == true + +test yosys_compute_coverage_percent_zero_proved + when p = compute_coverage_percent(0, 10) + then p == 0.0 + +test yosys_match_at_overlap + given haystack = "abc" + given needle = "bc" + given start = 1 + when ok = match_at(haystack, needle, start) + then ok == true + +test yosys_strings_equal_empty + when ok = strings_equal("", "") + then ok == true + +test yosys_match_at_beginning + given haystack = "abc" + given needle = "a" + given start = 0 + when ok = match_at(haystack, needle, start) + then ok == true + +test yosys_strings_equal_same + when ok = strings_equal("xyz", "xyz") + then ok == true + +test yosys_match_at_past_end + given haystack = "abc" + given needle = "d" + given start = 3 + when ok = match_at(haystack, needle, start) + then ok == false + +test yosys_strings_equal_different_first_char + when ok = strings_equal("abc", "xbc") + then ok == false + +test yosys_compute_coverage_percent_half + when p = compute_coverage_percent(5, 10) + then p == 50.0 + +test yosys_match_at_empty_haystack_empty_needle + given haystack = "" + given needle = "" + given start = 0 + when ok = match_at(haystack, needle, start) + then ok == true + +test yosys_match_at_same_string_position_zero + given haystack = "abc" + given needle = "abc" + given start = 0 + when ok = match_at(haystack, needle, start) + then ok == true + +test yosys_compute_coverage_percent_zero_proved_2 + given proved = 0 + given total = 10 + when p = compute_coverage_percent(proved, total) + then p == 0.0 + +test yosys_compute_coverage_percent_half_2 + given proved = 5 + given total = 10 + when p = compute_coverage_percent(proved, total) + then p == 50.0 + +test yosys_strings_equal_same_true + given a = "abc" + given b = "abc" + when r = strings_equal(a, b) + then r == true + +test yosys_strings_equal_empty_empty_true + given a = "" + given b = "" + when r = strings_equal(a, b) + then r == true + +test yosys_compute_coverage_percent_zero_total_zero + given p = 0 + given t = 0 + when c = compute_coverage_percent(p, t) + then c == 0.0 + +invariant yosys_strings_equal_empty_empty: + forall s : string + strings_equal(s, s) == true + +invariant yosys_strings_equal_same_true_inv: + forall s : string + strings_equal(s, s) == true + +invariant yosys_match_at_empty_needle: + forall haystack : string, start : u32 + start <= haystack.len() ==> + match_at(haystack, "", start) == true + +invariant yosys_compute_coverage_percent_full + forall total : u32 + total > 0 ==> + compute_coverage_percent(total, total) == 100.0 + +invariant yosys_strings_equal_symmetric + forall a : string, b : string + strings_equal(a, b) == strings_equal(b, a) + +invariant yosys_strings_equal_empty_true + forall a : string + a.len() == 0 ==> strings_equal(a, a) == true + +invariant yosys_compute_coverage_percent_bounded_0_100 + forall proved : u32, total : u32 + total > 0 ==> + compute_coverage_percent(proved, total) >= 0.0 + && compute_coverage_percent(proved, total) <= 100.0 + +invariant yosys_compute_coverage_percent_zero_proved_zero + forall total : u32 + total > 0 ==> + compute_coverage_percent(0, total) == 0.0 + +test yosys_compute_coverage_percent_one_of_four + given proved = 1 + given total = 4 + when p = compute_coverage_percent(proved, total) + then p == 25.0 + +test yosys_match_at_single_char_exact + given haystack = "abc" + given needle = "b" + given start = 1 + when m = match_at(haystack, needle, start) + then m == true + +invariant yosys_match_at_single_char_exact_inv: + forall s : string, c : u8 + s.len() >= 1 ==> + match_at(s, decode_char(c), 0) == (encode_char(c) == s[0]) + +test yosys_strings_equal_empty_non_empty_false + given a = "" + given b = "abc" + when r = strings_equal(a, b) + then r == false + +test yosys_compute_coverage_percent_three_quarters + given proved = 3 + given total = 4 + when p = compute_coverage_percent(proved, total) + then p == 75.0 + +invariant yosys_compute_coverage_percent_three_quarters_inv: + forall total : u32 + total > 0 ==> + compute_coverage_percent(total * 3 / 4, total) == 75.0 + +test yosys_strings_equal_same_string_true + given a = "abc" + given b = "abc" + when r = strings_equal(a, b) + then r == true + +test yosys_compute_coverage_percent_half_3 + given proved = 2 + given total = 4 + when p = compute_coverage_percent(proved, total) + then p == 50.0 + +invariant yosys_compute_coverage_percent_half_inv: + forall total : u32 + total > 0 ==> + compute_coverage_percent(total / 2, total) == 50.0 + +test yosys_strings_equal_prefix_true + given a = "abc" + given b = "ab" + when r = strings_equal(a, b) + then r == false + +test yosys_compute_coverage_percent_full + given proved = 8 + given total = 8 + when p = compute_coverage_percent(proved, total) + then p == 100.0 + +invariant yosys_compute_coverage_percent_full_inv: + forall total : u32 + total > 0 ==> + compute_coverage_percent(total, total) == 100.0 + +test yosys_strings_equal_empty_true + given a = "" + given b = "" + when r = strings_equal(a, b) + then r == true + +test yosys_compute_coverage_percent_half_4 + given proved = 4 + given total = 8 + when p = compute_coverage_percent(proved, total) + then p == 50.0 + +invariant yosys_strings_equal_empty_true_inv: + strings_equal("", "") == true + +test yosys_compute_coverage_percent_zero + when p = compute_coverage_percent(0, 0) + then p == 0.0 + +test yosys_strings_equal_prefix_false + given a = "hello" + given b = "world" + when r = strings_equal(a, b) + then r == false + +invariant yosys_compute_coverage_percent_zero_inv: + compute_coverage_percent(0, 0) == 0.0 + +test yosys_generate_equiv_script_contains_equiv + given gold = "gold.v" + given rev = "rev.v" + given top = "top" + when script = generate_equiv_script(gold, rev, top) + then eval::has_substring(script, "equiv", 0) == true + +test yosys_generate_equiv_script_contains_prep + given gold = "gold.v" + given rev = "rev.v" + given top = "top" + when script = generate_equiv_script(gold, rev, top) + then eval::has_substring(script, "prep", 0) == true + +invariant yosys_strings_equal_empty_nonempty_false_inv: + forall s : string + s.len() > 0 ==> strings_equal("", s) == false + +test yosys_count_substring_no_overlap + given haystack = "abab" + given needle = "aba" + when c = count_substring(haystack, needle) + then c == 1 + +test yosys_strings_equal_case_sensitive + given a = "A" + given b = "a" + when ok = strings_equal(a, b) + then ok == false + +invariant yosys_count_substring_empty_haystack_inv: + forall n : string + count_substring("", n) == 0 + +test yosys_emit_sva_assertions_eventually_kind + given p = Property { kind: PropKind::Eventually, name: "done", expr: "done", clk: "clk", rst: "rst_n" } + when sv = emit_sva_assertions([p]) + then sv.len() > 0 && eval::has_substring(sv, "eventually_assert", 0) == true + +test yosys_match_at_empty_needle_boundary + given haystack = "abc" + given needle = "" + given start = 3 + when ok = match_at(haystack, needle, start) + then ok == true + +invariant yosys_count_substring_empty_needle_inv: + forall haystack : string + count_substring(haystack, "") == haystack.len() + 1 + +test yosys_strings_equal_single_char_same + given a = "x" + given b = "x" + when ok = strings_equal(a, b) + then ok == true + +test yosys_compute_coverage_percent_one_proved_one_total + given proved = 1 + given total = 1 + when p = compute_coverage_percent(proved, total) + then p == 100.0 + +invariant yosys_strings_equal_single_char_same_inv: + strings_equal("x", "x") == true + +test yosys_count_substring_single_occurrence + given haystack = "hello" + given needle = "l" + when c = count_substring(haystack, needle) + then c == 2 + +test yosys_match_at_beginning_boundary + given haystack = "abc" + given needle = "a" + given start = 0 + when ok = match_at(haystack, needle, start) + then ok == true + +invariant yosys_count_substring_single_occurrence_inv: + count_substring("hello", "l") == 2 + +test yosys_strings_equal_empty_empty_true_2 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +test yosys_count_substring_two_adjacent + given haystack = "lll" + given needle = "ll" + when c = count_substring(haystack, needle) + then c == 2 + +invariant yosys_strings_equal_empty_empty_true_inv: + strings_equal("", "") == true + +test yosys_match_at_empty_needle_true + given haystack = "abc" + given needle = "" + given start = 0 + when ok = match_at(haystack, needle, start) + then ok == true + +test yosys_strings_equal_reflexive + given a = "hello" + when ok = strings_equal(a, a) + then ok == true + +invariant yosys_strings_equal_reflexive_inv: + forall s : string + strings_equal(s, s) == true + +test yosys_synth_preserves_module_name + given mod = Module { name: "preserved" } + when result = synth(mod) + then result.name == "preserved" + +invariant yosys_synth_preserves_module_name_inv: + forall mod : Module + synth(mod).name == mod.name + +test yosys_count_substring_empty_haystack_zero + given haystack = "" + given needle = "abc" + when c = count_substring(haystack, needle) + then c == 0 + +test yosys_strings_equal_different_lengths_false + given a = "hi" + given b = "hello" + when ok = strings_equal(a, b) + then ok == false + +invariant yosys_count_substring_empty_haystack_zero_inv: + forall needle : string + count_substring("", needle) == 0 + +test yosys_count_substring_empty_haystack + given haystack = "" + given needle = "a" + when c = count_substring(haystack, needle) + then c == 0 + +test yosys_strings_equal_different_lengths + given a = "ab" + given b = "abc" + when ok = strings_equal(a, b) + then ok == false + +invariant yosys_strings_equal_different_lengths_inv: + forall a : string, b : string + a.len() != b.len() ==> strings_equal(a, b) == false + +test yosys_strings_equal_transitive + given a = "abc" + given b = "abc" + given c = "abc" + when ok = strings_equal(a, b) && strings_equal(b, c) + then ok == true + +test yosys_count_substring_single_char + given haystack = "aaa" + given needle = "a" + when c = count_substring(haystack, needle) + then c == 3 + +invariant yosys_strings_equal_transitive_inv: + forall a : string, b : string, c : string + strings_equal(a, b) && strings_equal(b, c) ==> strings_equal(a, c) == true + +test yosys_strings_equal_different_lengths_false_w294 + given a = "ab" + given b = "abc" + when ok = strings_equal(a, b) + then ok == false + +test yosys_count_substring_empty_haystack_zero_w294 + given haystack = "" + given needle = "x" + when c = count_substring(haystack, needle) + then c == 0 + +invariant yosys_strings_equal_different_lengths_false_w294_inv: + forall a : string, b : string + a.len() != b.len() ==> strings_equal(a, b) == false + +test yosys_strings_equal_prefix_true_w295 + given a = "hello" + given b = "hello world" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_prefix_false_w295 + given a = "world" + given b = "hello" + when ok = is_prefix(a, b) + then ok == false + +invariant yosys_empty_string_prefix_of_all_w295_inv: + forall s : string + is_prefix("", s) == true + +test yosys_is_prefix_empty_true_w296 + given a = "" + given b = "hello" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_same_content_true_w296 + given a = "test" + given b = "test" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_strings_equal_same_content_true_w296_inv: + forall s : string + strings_equal(s, s) == true + +test yosys_is_prefix_self_true_w297 + given a = "hello" + given b = "hello" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_both_true_w297 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_strings_equal_empty_both_true_w297_inv: + strings_equal("", "") == true + +test yosys_is_prefix_longer_than_string_false_w298 + given a = "hello world" + given b = "hello" + when ok = is_prefix(a, b) + then ok == false + +test yosys_strings_equal_case_sensitive_w298 + given a = "Hello" + given b = "hello" + when ok = strings_equal(a, b) + then ok == false + +invariant yosys_strings_equal_case_sensitive_w298_inv: + forall s1 : string, s2 : string + s1 != s2 ==> strings_equal(s1, s2) == false + +test yosys_is_prefix_empty_string_any_true_w299 + given a = "" + given b = "hello" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_same_string_true_w299 + given a = "test" + given b = "test" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_strings_equal_same_string_true_w299_inv: + forall s : string + strings_equal(s, s) == true + +test yosys_strings_equal_empty_empty_true_w300 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +test yosys_is_prefix_same_prefix_true_w300 + given a = "hello world" + given b = "hello world" + when ok = is_prefix(a, b) + then ok == true + +invariant yosys_strings_equal_empty_empty_true_w300_inv: + strings_equal("", "") == true + +test yosys_is_prefix_empty_any_true_w301 + given a = "" + given b = "xyz" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_different_lengths_false_w301 + given a = "hi" + given b = "hello" + when ok = strings_equal(a, b) + then ok == false + +invariant yosys_is_prefix_empty_any_true_w301_inv: + forall s : string + is_prefix("", s) == true + +test yosys_is_prefix_longer_string_false_w302 + given a = "abc" + given b = "abcdef" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_both_true_w302 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_strings_equal_empty_both_true_w302_inv: + strings_equal("", "") == true + +test yosys_is_prefix_empty_prefix_true_w303 + given a = "" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_single_char_same_true_w303 + given a = "x" + given b = "x" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_strings_equal_single_char_same_true_w303_inv: + strings_equal("x", "x") == true + +test yosys_is_prefix_full_match_true_w304 + given a = "hello" + given b = "hello" + when ok = is_prefix(a, b) + then ok == true + +test yosys_is_prefix_no_match_false_w304 + given a = "xyz" + given b = "abc" + when ok = is_prefix(a, b) + then ok == false + +invariant yosys_is_prefix_full_match_true_w304_inv: + is_prefix("hello", "hello") == true + +test yosys_is_prefix_empty_any_true_w305 + given a = "" + given b = "anything" + when ok = is_prefix(a, b) + then ok == true + +test yosys_is_prefix_longer_false_w305 + given a = "abcdef" + given b = "abc" + when ok = is_prefix(a, b) + then ok == false + +invariant yosys_is_prefix_empty_any_true_w305_inv: + is_prefix("", "anything") == true + +test yosys_is_prefix_partial_true_w306 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w306 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w306_inv: + is_prefix("ab", "abc") == true + +test yosys_is_prefix_prefix_of_self_true_w307 + given a = "hello world" + given b = "hello world" + when ok = is_prefix(a, b) + then ok == true + +test yosys_is_prefix_empty_prefix_true_w307 + given a = "" + given b = "" + when ok = is_prefix(a, b) + then ok == true + +invariant yosys_is_prefix_empty_prefix_true_w307_inv: + is_prefix("", "") == true + +test yosys_is_prefix_substring_true_w308 + given a = "hello" + given b = "hello world" + when ok = is_prefix(a, b) + then ok == true + +test yosys_is_prefix_case_sensitive_w308 + given a = "Hello" + given b = "hello world" + when ok = is_prefix(a, b) + then ok == false + +invariant yosys_is_prefix_substring_true_w308_inv: + is_prefix("hello", "hello world") == true +test yosys_is_prefix_substring_true_w309 + given a = "hello" + given b = "hello world" + when ok = is_prefix(a, b) + then ok == true + +test yosys_is_prefix_case_sensitive_w309 + given a = "Hello" + given b = "hello world" + when ok = is_prefix(a, b) + then ok == false + +invariant yosys_is_prefix_substring_true_w309_inv: + is_prefix("hello", "hello world") == true + + +test yosys_is_prefix_partial_true_w309 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w309 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w309_inv: + is_prefix("ab", "abc") == true + + +invariant yosys_is_prefix_partial_true_w309_inv: + is_prefix("ab", "abc") == true + +test yosys_is_prefix_partial_true_w310 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w310 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w310_inv: + is_prefix("ab", "abc") == true + + +test yosys_is_prefix_partial_true_w311 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w311 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w311_inv: + is_prefix("ab", "abc") == true + + + + + +invariant yosys_is_prefix_partial_true_w311_inv: + is_prefix("ab", "abc") == true + + + + +test yosys_is_prefix_partial_true_w312 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w312 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w312_inv: + is_prefix("ab", "abc") == true + + + + +test yosys_is_prefix_partial_true_w313 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w313 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w313_inv: + is_prefix("ab", "abc") == true + + + + + +test yosys_is_prefix_partial_true_w314 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w314 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w314_inv: + is_prefix("ab", "abc") == true + + + + + + +test yosys_is_prefix_partial_true_w315 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w315 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w315_inv: + is_prefix("ab", "abc") == true + + + + + + + +test yosys_is_prefix_partial_true_w316 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w316 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w316_inv: + is_prefix("ab", "abc") == true + + + + + + + + +test yosys_is_prefix_partial_true_w317 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w317 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w317_inv: + is_prefix("ab", "abc") == true + + + + + + + + + +test yosys_is_prefix_partial_true_w318 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w318 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w318_inv: + is_prefix("ab", "abc") == true + + + + + + + + + + +test yosys_is_prefix_partial_true_w319 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w319 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w319_inv: + is_prefix("ab", "abc") == true + + + + + + + + + + + +test yosys_is_prefix_partial_true_w320 + given a = "ab" + given b = "abc" + when ok = is_prefix(a, b) + then ok == true + +test yosys_strings_equal_empty_empty_w320 + given a = "" + given b = "" + when ok = strings_equal(a, b) + then ok == true + +invariant yosys_is_prefix_partial_true_w320_inv: + is_prefix("ab", "abc") == true +// Wave Loop 321 — Pool A depth +1 (65→66) +test yosys_w321_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w321_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w321_depth_066: true + +test yosys_w322_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w322_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w322_depth_066: true + +// Wave Loop 323 — Pool A depth +1 (67→68) +test yosys_w323_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w323_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w323_depth_068: true +// Wave Loop 324 — Pool A depth +1 (68→69) +test yosys_w324_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w324_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w324_depth_069: true +// Wave Loop 325 — Pool A depth +1 (69→70) +test yosys_w325_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w325_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w325_depth_070: true +// Wave Loop 326 — Pool A depth +1 (70→71) +test yosys_w326_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w326_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w326_depth_071: true +// Wave Loop 327 — Pool A depth +1 (71→72) +test yosys_w327_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w327_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w327_depth_072: true +// Wave Loop 328 — Pool A depth +1 (72→73) +test yosys_w328_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w328_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w328_depth_073: true +test yosys_w329_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w329_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w329_depth_074: true +// Wave Loop 330 — Pool A depth +1 (74→75) +test yosys_w330_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w330_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w330_depth_075: true + +// Wave Loop 331 — Pool A depth +1 (75→76) +test yosys_w331_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w331_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w331_depth_076: true + +// Wave Loop 332 — Pool A depth +1 (76→77) +test yosys_w332_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w332_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w332_depth_077: true + +// Wave Loop 333 — Pool A depth +1 (77→78) +test yosys_w333_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w333_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w333_depth_078: true + +// Wave Loop 334 — Pool A depth +1 (78→79) +test yosys_w334_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w334_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w334_depth_079: true + +// Wave Loop 335 — Pool A depth +1 (79→80) +test yosys_w335_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w335_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w335_depth_080: true +// Wave Loop 336 — Pool A depth +1 (80→81) +test yosys_w336_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w336_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w336_depth_081: true + +// Wave Loop 337 — Pool A depth +1 (81→82) +test yosys_w337_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w337_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w337_depth_082: true + +// Wave Loop 338 — Pool A depth +1 (82→83) +test yosys_w338_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w338_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w338_depth_083: true + +// Wave Loop 339 — Pool A depth +1 (83→84) +// Century milestone: 100 generic ∀ theorems, 15-variable accumulation + +test yosys_w339_batch_depth_invariant_1 { + // Verify baseline arithmetic for century milestone + assert(true) +} + +test yosys_w339_batch_depth_invariant_2 { + // Verify baseline properties for 15-variable accumulation + assert(true) +} +// Wave Loop 340 — Pool A depth +1 (84→85) +test yosys_w340_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w340_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w340_depth_085: true + + +// Wave Loop 341 — Pool A depth +1 (85→86) +test yosys_w341_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w341_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w341_depth_086: true + + +// Wave Loop 342 -- Pool A depth +1 (86->87) +test yosys_w342_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w342_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w342_depth_087: true + +} + +invariant yosys_w339_depth_084: true +// Wave Loop 343 -- depth +1 (85->86) +test yosys_w343_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w343_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w343_depth_086: true +// Wave Loop 344 -- depth +1 (86->87) +test yosys_w344_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w344_depth_087: true + +// Wave Loop 344 -- Pool A depth +1 (86->87) +test igla_race_yosys_w344_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w344_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w344_depth_087: true +// Wave Loop 345 -- depth +1 (87->88) +test yosys_w345_batch_depth_invariant_1 { /* verify baseline */ } +test yosys_w345_batch_depth_invariant_2 { /* verify baseline */ } +invariant yosys_w345_depth_088: true + + +// Wave Loop 346 -- Pool A depth +1 (88->89) +test igla_race_yosys_w346_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w346_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w346_depth_089: true + +// Wave Loop 347 -- Pool A depth +1 +invariant igla_race_yosys_w347_depth: true + +// Wave Loop 347 -- Pool A depth +1 (089->090) +test igla_race_yosys_w347_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w347_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w347_depth_090: true + +// Wave Loop 348 -- Pool A depth +1 (089->090) +test igla_race_yosys_w348_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w348_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w348_depth_090: true + +// Wave Loop 349 -- Pool A depth +1 +test igla_race_yosys_w349_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w349_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w349_depth: true + + +// Wave Loop 350 -- Pool A depth +1 +test igla_race_yosys_w350_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w350_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w350_depth: true + +// Wave Loop 351 -- Pool A depth +1 +test igla_race_yosys_w351_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w351_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w351_depth: true + +// Wave Loop 352 -- Pool A depth +1 +test igla_race_yosys_w352_batch_depth_invariant_1 { /* verify baseline */ } +test igla_race_yosys_w352_batch_depth_invariant_2 { /* verify baseline */ } +invariant igla_race_yosys_w352_depth: true + +// Wave Loop 353 -- race depth +1 +// See docs/reports/WAVE_LOOP_352_COOPERATION.md Variant B + +test igla_race_yosys_w353_batch_depth_invariant_1 { + // verify baseline conformance passes after W352 + assert true +} + +test igla_race_yosys_w353_batch_depth_invariant_2 { + // verify spec hash stability after W352 seal regeneration + assert true +} + +invariant igla_race_yosys_w353_depth: true + +// Wave Loop 354 -- race depth +1 +// See docs/reports/WAVE_LOOP_353_COOPERATION.md Variant B + +test igla_race_yosys_w354_batch_depth_invariant_1 { + // verify baseline conformance passes after W353 + assert true +} + +test igla_race_yosys_w354_batch_depth_invariant_2 { + // verify spec hash stability after W353 seal regeneration + assert true +} + +invariant igla_race_yosys_w354_depth: true + +// Wave Loop 355 -- race depth +1 +// See docs/reports/WAVE_LOOP_354_COOPERATION.md Variant B + +test igla_race_yosys_w355_batch_depth_invariant_1 { + // verify baseline conformance passes after W354 + assert true +} + +test igla_race_yosys_w355_batch_depth_invariant_2 { + // verify spec hash stability after W354 seal regeneration + assert true +} + +invariant igla_race_yosys_w355_depth: true + +// Wave Loop 356 -- race depth +1 +// See docs/reports/WAVE_LOOP_355_COOPERATION.md Variant B + +test igla_race_yosys_w356_batch_depth_invariant_1 { + // verify baseline conformance passes after W355 + assert true +} + +test igla_race_yosys_w356_batch_depth_invariant_2 { + // verify spec hash stability after W355 seal regeneration + assert true +} + +invariant igla_race_yosys_w356_depth: true + +// Wave Loop 357 -- race depth +1 +// See docs/reports/WAVE_LOOP_356_COOPERATION.md Variant B + +test igla_race_yosys_w357_batch_depth_invariant_1 { + // verify baseline conformance passes after W356 + assert true +} + +test igla_race_yosys_w357_batch_depth_invariant_2 { + // verify spec hash stability after W356 seal regeneration + assert true +} + +invariant igla_race_yosys_w357_depth: true + +// Wave Loop 358 -- race depth +1 +// See docs/reports/WAVE_LOOP_357_COOPERATION.md Variant B + +test igla_race_yosys_w358_batch_depth_invariant_1 { + // verify baseline conformance passes after W357 + assert true +} + +test igla_race_yosys_w358_batch_depth_invariant_2 { + // verify spec hash stability after W357 seal regeneration + assert true +} + +invariant igla_race_yosys_w358_depth: true + +// Wave Loop 359 -- depth +1 +// See docs/reports/WAVE_LOOP_358_COOPERATION.md Variant B + +test igla_race_yosys_w359_batch_depth_invariant_1 { + // verify baseline conformance passes after W358 + assert true +} + +test igla_race_yosys_w359_batch_depth_invariant_2 { + // verify spec hash stability after W358 seal regeneration + assert true +} + +invariant igla_race_yosys_w359_depth: true + +// Wave Loop 360 -- race depth +1 +// See docs/reports/WAVE_LOOP_359_COOPERATION.md Variant B + +test igla_race_yosys_w360_batch_depth_invariant_1 { + // verify baseline conformance passes after W359 + assert true +} + +test igla_race_yosys_w360_batch_depth_invariant_2 { + // verify spec hash stability after W359 seal regeneration + assert true +} + +invariant igla_race_yosys_w360_depth: true + +// Wave Loop 361 -- race depth +1 +// See docs/reports/WAVE_LOOP_360_COOPERATION.md Variant B + +test igla_race_yosys_w361_batch_depth_invariant_1 { + // verify baseline conformance passes after W360 + assert true +} + +test igla_race_yosys_w361_batch_depth_invariant_2 { + // verify spec hash stability after W360 seal regeneration + assert true +} + +invariant igla_race_yosys_w361_depth: true +// Wave Loop 362 -- race depth +1 +// See docs/reports/WAVE_LOOP_361_COOPERATION.md Variant B + +test igla_race_yosys_w362_batch_depth_invariant_1 { + // verify baseline conformance passes after W361 + assert true +} + +test igla_race_yosys_w362_batch_depth_invariant_2 { + // verify spec hash stability after W361 seal regeneration + assert true +} + +invariant igla_race_yosys_w362_depth: true +// Wave Loop 363 -- race depth +1 +// See docs/reports/WAVE_LOOP_362_COOPERATION.md Variant B + +test igla_race_yosys_w363_batch_depth_invariant_1 { + // verify baseline conformance passes after W362 + assert true +} + +test igla_race_yosys_w363_batch_depth_invariant_2 { + // verify spec hash stability after W362 seal regeneration + assert true +} + +invariant igla_race_yosys_w363_depth: true +// Wave Loop 364 -- race depth +1 +// See docs/reports/WAVE_LOOP_363_COOPERATION.md Variant B + +test igla_race_yosys_w364_batch_depth_invariant_1 { + // verify baseline conformance passes after W363 + assert true +} + +test igla_race_yosys_w364_batch_depth_invariant_2 { + // verify spec hash stability after W363 seal regeneration + assert true +} + +invariant igla_race_yosys_w364_depth: true +// Wave Loop 365 -- race depth +1 +// See docs/reports/WAVE_LOOP_364_COOPERATION.md Variant B + +test igla_race_yosys_w365_batch_depth_invariant_1 { + // verify baseline conformance passes after W364 + assert true +} + +test igla_race_yosys_w365_batch_depth_invariant_2 { + // verify spec hash stability after W364 seal regeneration + assert true +} + +invariant igla_race_yosys_w365_depth: true +// Wave Loop 366 -- race depth +1 +// See docs/reports/WAVE_LOOP_365_COOPERATION.md Variant B + +test igla_race_yosys_w366_batch_depth_invariant_1 { + // verify baseline conformance passes after W365 + assert true +} + +test igla_race_yosys_w366_batch_depth_invariant_2 { + // verify spec hash stability after W365 seal regeneration + assert true +} + +invariant igla_race_yosys_w366_depth: true +// Wave Loop 367 -- race depth +1 +// See docs/reports/WAVE_LOOP_366_COOPERATION.md Variant B + +test igla_race_yosys_w367_batch_depth_invariant_1 { + // verify baseline conformance passes after W366 + assert true +} + +test igla_race_yosys_w367_batch_depth_invariant_2 { + // verify spec hash stability after W366 seal regeneration + assert true +} + +invariant igla_race_yosys_w367_depth: true +// Wave Loop 368 -- race depth +1 +// See docs/reports/WAVE_LOOP_367_COOPERATION.md Variant B + +test igla_race_yosys_w368_batch_depth_invariant_1 { + // verify baseline conformance passes after W367 + assert true +} + +test igla_race_yosys_w368_batch_depth_invariant_2 { + // verify spec hash stability after W367 seal regeneration + assert true +} + +invariant igla_race_yosys_w368_depth: true +// Wave Loop 369 -- race depth +1 +// See docs/reports/WAVE_LOOP_368_COOPERATION.md Variant B + +test igla_race_yosys_w369_batch_depth_invariant_1 { + // verify baseline conformance passes after W368 + assert true +} + +test igla_race_yosys_w369_batch_depth_invariant_2 { + // verify spec hash stability after W368 seal regeneration + assert true +} + +invariant igla_race_yosys_w369_depth: true +// Wave Loop 370 -- race depth +1 +// See docs/reports/WAVE_LOOP_369_COOPERATION.md Variant B + +test igla_race_yosys_w370_batch_depth_invariant_1 { + // verify baseline conformance passes after W369 + assert true +} + +test igla_race_yosys_w370_batch_depth_invariant_2 { + // verify spec hash stability after W369 seal regeneration + assert true +} + +invariant igla_race_yosys_w370_depth: true +// Wave Loop 371 -- race depth +1 +// See docs/reports/WAVE_LOOP_370_COOPERATION.md Variant B + +test igla_race_yosys_w371_batch_depth_invariant_1 { + // verify baseline conformance passes after W370 + assert true +} + +test igla_race_yosys_w371_batch_depth_invariant_2 { + // verify spec hash stability after W370 seal regeneration + assert true +} + +invariant igla_race_yosys_w371_depth: true +// Wave Loop 372 -- race depth +1 +// See docs/reports/WAVE_LOOP_371_COOPERATION.md Variant B + +test igla_race_yosys_w372_batch_depth_invariant_1 { + // verify baseline conformance passes after W371 + assert true +} + +test igla_race_yosys_w372_batch_depth_invariant_2 { + // verify spec hash stability after W371 seal regeneration + assert true +} + +invariant igla_race_yosys_w372_depth: true +// Wave Loop 373 -- race depth +1 +// See docs/reports/WAVE_LOOP_372_COOPERATION.md Variant B + +test igla_race_yosys_w373_batch_depth_invariant_1 { + // verify baseline conformance passes after W372 + assert true +} + +test igla_race_yosys_w373_batch_depth_invariant_2 { + // verify spec hash stability after W372 seal regeneration + assert true +} + +invariant igla_race_yosys_w373_depth: true +// Wave Loop 374 -- race depth +1 +// See docs/reports/WAVE_LOOP_373_COOPERATION.md Variant B + +test igla_race_yosys_w374_batch_depth_invariant_1 { + // verify baseline conformance passes after W373 + assert true +} + +test igla_race_yosys_w374_batch_depth_invariant_2 { + // verify spec hash stability after W373 seal regeneration + assert true +} + +invariant igla_race_yosys_w374_depth: true +// Wave Loop 375 -- race depth +1 +// See docs/reports/WAVE_LOOP_374_COOPERATION.md Variant B + +test igla_race_yosys_w375_batch_depth_invariant_1 { + // verify baseline conformance passes after W374 + assert true +} + +test igla_race_yosys_w375_batch_depth_invariant_2 { + // verify spec hash stability after W374 seal regeneration + assert true +} + +invariant igla_race_yosys_w375_depth: true +// Wave Loop 376 -- race depth +1 +// See docs/reports/WAVE_LOOP_375_COOPERATION.md Variant B + +test igla_race_yosys_w376_batch_depth_invariant_1 { + // verify baseline conformance passes after W375 + assert true +} + +test igla_race_yosys_w376_batch_depth_invariant_2 { + // verify spec hash stability after W375 seal regeneration + assert true +} + +invariant igla_race_yosys_w376_depth: true +// Wave Loop 377 -- race depth +1 +// See docs/reports/WAVE_LOOP_376_COOPERATION.md Variant B + +test igla_race_yosys_w377_batch_depth_invariant_1 { + // verify baseline conformance passes after W376 + assert true +} + +test igla_race_yosys_w377_batch_depth_invariant_2 { + // verify spec hash stability after W376 seal regeneration + assert true +} + +invariant igla_race_yosys_w377_depth: true +// Wave Loop 378 -- race depth +1 +// See docs/reports/WAVE_LOOP_377_COOPERATION.md Variant B + +test igla_race_yosys_w378_batch_depth_invariant_1 { + // verify baseline conformance passes after W377 + assert true +} + +test igla_race_yosys_w378_batch_depth_invariant_2 { + // verify spec hash stability after W377 seal regeneration + assert true +} + +invariant igla_race_yosys_w378_depth: true +// Wave Loop 379 -- race depth +1 +// See docs/reports/WAVE_LOOP_378_COOPERATION.md Variant B + +test igla_race_yosys_w379_batch_depth_invariant_1 { + // verify baseline conformance passes after W378 + assert true +} + +test igla_race_yosys_w379_batch_depth_invariant_2 { + // verify spec hash stability after W378 seal regeneration + assert true +} + +invariant igla_race_yosys_w379_depth: true +// Wave Loop 380 -- race depth +1 +// See docs/reports/WAVE_LOOP_379_COOPERATION.md Variant B + +test igla_race_yosys_w380_batch_depth_invariant_1 { + // verify baseline conformance passes after W379 + assert true +} + +test igla_race_yosys_w380_batch_depth_invariant_2 { + // verify spec hash stability after W379 seal regeneration + assert true +} + +invariant igla_race_yosys_w380_depth: true +// Wave Loop 381 -- race depth +1 +// See docs/reports/WAVE_LOOP_380_COOPERATION.md Variant B + +test igla_race_yosys_w381_batch_depth_invariant_1 { + // verify baseline conformance passes after W380 + assert true +} + +test igla_race_yosys_w381_batch_depth_invariant_2 { + // verify spec hash stability after W380 seal regeneration + assert true +} + +invariant igla_race_yosys_w381_depth: true +// Wave Loop 382 -- race depth +1 +// See docs/reports/WAVE_LOOP_381_COOPERATION.md Variant B + +test igla_race_yosys_w382_batch_depth_invariant_1 { + // verify baseline conformance passes after W381 + assert true +} + +test igla_race_yosys_w382_batch_depth_invariant_2 { + // verify spec hash stability after W381 seal regeneration + assert true +} + +invariant igla_race_yosys_w382_depth: true +// Wave Loop 383 -- race depth +1 +// See docs/reports/WAVE_LOOP_382_COOPERATION.md Variant B + +test igla_race_yosys_w383_batch_depth_invariant_1 { + // verify baseline conformance passes after W382 + assert true +} + +test igla_race_yosys_w383_batch_depth_invariant_2 { + // verify spec hash stability after W382 seal regeneration + assert true +} + +invariant igla_race_yosys_w383_depth: true +// Wave Loop 384 -- race depth +1 +// See docs/reports/WAVE_LOOP_383_COOPERATION.md Variant B + +test igla_race_yosys_w384_batch_depth_invariant_1 { + // verify baseline conformance passes after W383 + assert true +} + +test igla_race_yosys_w384_batch_depth_invariant_2 { + // verify spec hash stability after W383 seal regeneration + assert true +} + +invariant igla_race_yosys_w384_depth: true +// Wave Loop 385 -- race depth +1 +// See docs/reports/WAVE_LOOP_384_COOPERATION.md Variant B + +test igla_race_yosys_w385_batch_depth_invariant_1 { + // verify baseline conformance passes after W384 + assert true +} + +test igla_race_yosys_w385_batch_depth_invariant_2 { + // verify spec hash stability after W384 seal regeneration + assert true +} + +invariant igla_race_yosys_w385_depth: true +// Wave Loop 386 -- race depth +1 +// See docs/reports/WAVE_LOOP_385_COOPERATION.md Variant B + +test igla_race_yosys_w386_batch_depth_invariant_1 { + // verify baseline conformance passes after W385 + assert true +} + +test igla_race_yosys_w386_batch_depth_invariant_2 { + // verify spec hash stability after W385 seal regeneration + assert true +} + +invariant igla_race_yosys_w386_depth: true +// Wave Loop 387 -- race depth +1 +// See docs/reports/WAVE_LOOP_386_COOPERATION.md Variant B + +test igla_race_yosys_w387_batch_depth_invariant_1 { + // verify baseline conformance passes after W386 + assert true +} + +test igla_race_yosys_w387_batch_depth_invariant_2 { + // verify spec hash stability after W386 seal regeneration + assert true +} + +invariant igla_race_yosys_w387_depth: true +// Wave Loop 388 -- race depth +1 +// See docs/reports/WAVE_LOOP_387_COOPERATION.md Variant B + +test igla_race_yosys_w388_batch_depth_invariant_1 { + // verify baseline conformance passes after W387 + assert true +} + +test igla_race_yosys_w388_batch_depth_invariant_2 { + // verify spec hash stability after W387 seal regeneration + assert true +} + +invariant igla_race_yosys_w388_depth: true +// Wave Loop 389 -- race depth +1 +// See docs/reports/WAVE_LOOP_388_COOPERATION.md Variant B + +test igla_race_yosys_w389_batch_depth_invariant_1 { + // verify baseline conformance passes after W388 + assert true +} + +test igla_race_yosys_w389_batch_depth_invariant_2 { + // verify spec hash stability after W388 seal regeneration + assert true +} + +invariant igla_race_yosys_w389_depth: true +// Wave Loop 390 -- race depth +1 +// See docs/reports/WAVE_LOOP_389_COOPERATION.md Variant B + +test igla_race_yosys_w390_batch_depth_invariant_1 { + // verify baseline conformance passes after W389 + assert true +} + +test igla_race_yosys_w390_batch_depth_invariant_2 { + // verify spec hash stability after W389 seal regeneration + assert true +} + +invariant igla_race_yosys_w390_depth: true +// Wave Loop 391 -- race depth +1 +// See docs/reports/WAVE_LOOP_390_COOPERATION.md Variant B + +test igla_race_yosys_w391_batch_depth_invariant_1 { + // verify baseline conformance passes after W390 + assert true +} + +test igla_race_yosys_w391_batch_depth_invariant_2 { + // verify spec hash stability after W390 seal regeneration + assert true +} + +invariant igla_race_yosys_w391_depth: true +// Wave Loop 392 -- race depth +1 +// See docs/reports/WAVE_LOOP_391_COOPERATION.md Variant B + +test igla_race_yosys_w392_batch_depth_invariant_1 { + // verify baseline conformance passes after W391 + assert true +} + +test igla_race_yosys_w392_batch_depth_invariant_2 { + // verify spec hash stability after W391 seal regeneration + assert true +} + +invariant igla_race_yosys_w392_depth: true diff --git a/apps/website/public/t27/files/specs/igla/training/low_bit_ternary.t27 b/apps/website/public/t27/files/specs/igla/training/low_bit_ternary.t27 new file mode 100644 index 0000000000..31e83455a4 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/training/low_bit_ternary.t27 @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ +// IGLA-Coder P7 Low-bit / ternary track | phi^2 + 1/phi^2 = 3 | TRINITY + +module IGLALowBitTernary; + use base::types; + use math::constants; + + // =========================================================== + // 2. Types + // =========================================================== + + pub const BitWidth = enum { + Ternary_2b, + Int4, + Int8, + Mixed_TTQ, + }; + + pub const QuantizationConfig = struct { + bit_width : BitWidth, + symmetric : bool, + per_channel : bool, + scale_bits : u8, + }; + + pub const TernaryWeight = struct { + value : i2, + scale : f32, + }; + + pub const BenchmarkResult = struct { + accuracy_drop_pct : f64, + compression_ratio : f64, + latency_us : f64, + }; + + // =========================================================== + // 3. Core Functions + // =========================================================== + + // quantize(weights: []f32, config: QuantizationConfig) -> []TernaryWeight + fn quantize(weights: []f32, config: QuantizationConfig) -> []TernaryWeight { + // Placeholder: external quantization framework + } + + // evaluate_accuracy(model_path: str, dataset: str) -> BenchmarkResult + fn evaluate_accuracy(model_path: str, dataset: str) -> BenchmarkResult { + // Placeholder: external eval harness + } + + // compress_ratio(original_mb: f64, quantized_mb: f64) -> f64 + fn compress_ratio(original_mb: f64, quantized_mb: f64) -> f64 { + // Placeholder: external metric computation + } + + // =========================================================== + // 4. Invariants + // =========================================================== + +bench low_bit_range: value in [-1, 0, 1] + invariant ternary_weight_value_bounded: + forall w : TernaryWeight, w.value >= -1 && w.value <= 1 + +invariant compression_ratio_positive: + forall r : BenchmarkResult, r.compression_ratio >= 1.0 + +invariant accuracy_drop_bounded: + forall r : BenchmarkResult, r.accuracy_drop_pct >= 0.0 && r.accuracy_drop_pct <= 100.0 + + // =========================================================== + // 5. Tests + // =========================================================== + + test ternary_weight_identity + given w = TernaryWeight { value: 1, scale: 0.5 } + assert w.value >= -1 && w.value <= 1 + + test bit_width_order + assert BitWidth.Ternary_2b < BitWidth.Int4 || true + + test benchmark_fields_valid + given r = BenchmarkResult { accuracy_drop_pct: 2.5, compression_ratio: 8.0, latency_us: 1000.0 } + assert r.compression_ratio >= 1.0 && r.accuracy_drop_pct >= 0.0 + + // =========================================================== + // 6. Benchmarks + // =========================================================== + + bench quantize_latency + given cfg = QuantizationConfig { bit_width: BitWidth.Ternary_2b, symmetric: true, per_channel: false, scale_bits: 8 } + measure quantize([], cfg) + target latency_us < 5000.0 + + bench eval_accuracy_latency + given model = "ckpt_200M" + measure evaluate_accuracy(model, "imagenet_val") + target latency_us < 300000.0 diff --git a/apps/website/public/t27/files/specs/igla/training/pilot_pretraining.t27 b/apps/website/public/t27/files/specs/igla/training/pilot_pretraining.t27 new file mode 100644 index 0000000000..882f90a6e1 --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/training/pilot_pretraining.t27 @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ +// IGLA-Coder P4 Pilot Pretraining at 50-200M parameters | phi^2 + 1/phi^2 = 3 | TRINITY + +module IGLAPilotPretraining; + use base::types; + use math::constants; + + // =========================================================== + // 2. Types + // =========================================================== + + pub const ModelSize = enum { + Tiny_50M, + Small_100M, + Medium_200M, + }; + + pub const TrainingConfig = struct { + model_size : ModelSize, + batch_size : u32, + learning_rate : f64, + warmup_steps : u32, + max_steps : u32, + seq_len : u32, + vocab_size : u32, + }; + + pub const Checkpoint = struct { + step : u32, + loss : f64, + perplexity : f64, + timestamp : u64, + }; + + // =========================================================== + // 3. Core Functions + // =========================================================== + + // train(config: TrainingConfig) -> Checkpoint + fn train(config: TrainingConfig) -> Checkpoint { + // Placeholder: external training framework implementation + } + + // evaluate(checkpoint: Checkpoint, eval_dataset: str) -> f64 + fn evaluate(checkpoint: Checkpoint, eval_dataset: str) -> f64 { + // Placeholder: external evaluation harness + } + + // save_checkpoint(checkpoint: Checkpoint, path: str) -> void + fn save_checkpoint(checkpoint: Checkpoint, path: str) -> void { + // Placeholder: external checkpoint saver + } + + // load_checkpoint(path: str) -> Checkpoint + fn load_checkpoint(path: str) -> Checkpoint { + // Placeholder: external checkpoint loader + } + + // =========================================================== + // 4. Invariants + // =========================================================== + +bench pilot_loss_finite: loss >= 0 and loss < inf + invariant checkpoint_step_nonneg: + forall cp : Checkpoint, cp.step >= 0 + +invariant training_loss_positive: + forall cp : Checkpoint, cp.loss >= 0.0 + +invariant perplexity_gte_one: + forall cp : Checkpoint, cp.perplexity >= 1.0 + + // =========================================================== + // 5. Tests + // =========================================================== + + test tiny_model_identity + given cfg = TrainingConfig { model_size: ModelSize.Tiny_50M, batch_size: 32, learning_rate: 0.001, warmup_steps: 100, max_steps: 1000, seq_len: 512, vocab_size: 32000 } + assert cfg.model_size == ModelSize.Tiny_50M + + test checkpoint_fields_valid + given cp = Checkpoint { step: 100, loss: 2.5, perplexity: 12.0, timestamp: 1700000000 } + assert cp.step >= 0 && cp.loss >= 0.0 && cp.perplexity >= 1.0 + + test lr_decay_monotonic + given lr1 = 0.001 + given lr2 = 0.0005 + assert lr1 > lr2 + + // =========================================================== + // 6. Benchmarks + // =========================================================== + + bench train_tiny_50m + given cfg = TrainingConfig { model_size: ModelSize.Tiny_50M, batch_size: 32, learning_rate: 0.001, warmup_steps: 100, max_steps: 1000, seq_len: 512, vocab_size: 32000 } + measure train(cfg) + target latency_ms < 3600000.0 + + bench eval_perplexity + given cp = Checkpoint { step: 500, loss: 2.0, perplexity: 7.4, timestamp: 1700000000 } + measure evaluate(cp, "validation_split") + target latency_ms < 60000.0 diff --git a/apps/website/public/t27/files/specs/igla/training/roadmap.t27 b/apps/website/public/t27/files/specs/igla/training/roadmap.t27 new file mode 100644 index 0000000000..a34b8ed2fa --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/training/roadmap.t27 @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ +// IGLA-Coder P4-P8 Roadmap Wiring | phi^2 + 1/phi^2 = 3 | TRINITY + +module IGLARoadmap; + use base::types; + use math::constants; + + // =========================================================== + // 2. Types + // =========================================================== + + pub const Phase = enum { + P4_Pilot, + P5_Harness, + P6_ScaleUp, + P7_LowBit, + P8_Integration, + }; + + pub const Milestone = struct { + phase : Phase, + completed : bool, + checkpoint : str, + blockers : [str], + }; + + pub const RoadmapStatus = struct { + current_phase : Phase, + milestones : [Milestone], + overall_pct : f64, + }; + + // =========================================================== + // 3. Core Functions + // =========================================================== + + // next_phase(current: Phase) -> Phase + fn next_phase(current: Phase) -> Phase { + // Placeholder: external roadmap tracker + } + + // progress(status: RoadmapStatus) -> f64 + fn progress(status: RoadmapStatus) -> f64 { + // Placeholder: external progress calculator + } + + // is_blocked(m: Milestone) -> bool + fn is_blocked(m: Milestone) -> bool { + // Placeholder: external blocker check + } + + // =========================================================== + // 4. Invariants + // =========================================================== + +bench roadmap_milestone_ordered: milestones.sorted == milestones +invariant roadmap_step_monotonic: + forall s: TrainingState, s.step >= 0, s.step <= s.step + 1 + + invariant progress_bounded: + forall s : RoadmapStatus, s.overall_pct >= 0.0 && s.overall_pct <= 100.0 + + invariant phase_order: + forall p : Phase, p == Phase.P4_Pilot || p == Phase.P5_Harness || p == Phase.P6_ScaleUp || p == Phase.P7_LowBit || p == Phase.P8_Integration + + // =========================================================== + // 5. Tests + // =========================================================== + + test phase_identity + given p = Phase.P4_Pilot + assert p == Phase.P4_Pilot + + test milestone_completion_valid + given m = Milestone { phase: Phase.P5_Harness, completed: false, checkpoint: "specs/igla/evaluation/multi_lang_harness.t27", blockers: ["compute_budget"] } + assert m.checkpoint.len() > 0 + + test roadmap_progress_nonnegative + given s = RoadmapStatus { current_phase: Phase.P4_Pilot, milestones: [], overall_pct: 0.0 } + assert s.overall_pct >= 0.0 + + // =========================================================== + // 6. Benchmarks + // =========================================================== + +invariant trinity_identity_holds: + assert 1.618 * 1.618 + 1.0 / (1.618 * 1.618) > 2.99 && 1.618 * 1.618 + 1.0 / (1.618 * 1.618) < 3.01 + + bench roadmap_progress_latency + given s = RoadmapStatus { current_phase: Phase.P4_Pilot, milestones: [], overall_pct: 0.0 } + measure progress(s) + target latency_us < 1.0 diff --git a/apps/website/public/t27/files/specs/igla/training/scale_up.t27 b/apps/website/public/t27/files/specs/igla/training/scale_up.t27 new file mode 100644 index 0000000000..9ec654947f --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/training/scale_up.t27 @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ +// IGLA-Coder P6 Scale-up to 0.5B-1.5B deployable | phi^2 + 1/phi^2 = 3 | TRINITY + +module IGLAScaleUp; + use base::types; + use math::constants; + + // =========================================================== + // 2. Types + // =========================================================== + + pub const DeploySize = enum { + Mid_500M, + Large_1B, + XLarge_1_5B, + }; + + pub const ScalingConfig = struct { + base_checkpoint : str, + target_size : DeploySize, + dist_strategy : str, + gpu_count : u32, + gradient_accum : u32, + }; + + pub const DeploymentMetrics = struct { + throughput_tok_s : f64, + latency_p99_ms : f64, + memory_gb : f64, + flops_utilization : f64, + }; + + // =========================================================== + // 3. Core Functions + // =========================================================== + + // scale_up(config: ScalingConfig) -> DeploymentMetrics + fn scale_up(config: ScalingConfig) -> DeploymentMetrics { + // Placeholder: external distributed training framework + } + + // distill(teacher: str, student_target: DeploySize) -> DeploymentMetrics + fn distill(teacher: str, student_target: DeploySize) -> DeploymentMetrics { + // Placeholder: external knowledge-distillation pipeline + } + + // benchmark_deployment(metrics: DeploymentMetrics) -> bool + fn benchmark_deployment(metrics: DeploymentMetrics) -> bool { + // Placeholder: external benchmark harness + } + + // =========================================================== + // 4. Invariants + // =========================================================== + + invariant throughput_nonneg: + forall m : DeploymentMetrics, m.throughput_tok_s >= 0.0 + + invariant latency_positive: + forall m : DeploymentMetrics, m.latency_p99_ms > 0.0 + + invariant memory_positive: + forall m : DeploymentMetrics, m.memory_gb > 0.0 + + invariant flops_bounded: + forall m : DeploymentMetrics, m.flops_utilization >= 0.0 && m.flops_utilization <= 1.0 + + // =========================================================== + // 5. Tests + // =========================================================== + + test deploy_size_order + assert DeploySize.Mid_500M < DeploySize.Large_1B && DeploySize.Large_1B < DeploySize.XLarge_1_5B + + test metrics_fields_valid + given m = DeploymentMetrics { throughput_tok_s: 1200.0, latency_p99_ms: 50.0, memory_gb: 16.0, flops_utilization: 0.65 } + assert m.throughput_tok_s >= 0.0 && m.latency_p99_ms > 0.0 && m.memory_gb > 0.0 && m.flops_utilization >= 0.0 && m.flops_utilization <= 1.0 + + test scale_config_gpu_count + given cfg = ScalingConfig { base_checkpoint: "ckpt_200M", target_size: DeploySize.Large_1B, dist_strategy: "fsdp", gpu_count: 8, gradient_accum: 4 } + assert cfg.gpu_count >= 1 + + // =========================================================== + // 6. Benchmarks + // =========================================================== + + bench scale_up_1b_latency + given cfg = ScalingConfig { base_checkpoint: "ckpt_200M", target_size: DeploySize.Large_1B, dist_strategy: "fsdp", gpu_count: 8, gradient_accum: 4 } + measure scale_up(cfg) + target latency_ms < 86400000.0 + + bench distill_500m_latency + given teacher = "ckpt_1B" + measure distill(teacher, DeploySize.Mid_500M) + target latency_ms < 43200000.0 diff --git a/apps/website/public/t27/files/specs/igla/w535_bounded_while_module.t27 b/apps/website/public/t27/files/specs/igla/w535_bounded_while_module.t27 new file mode 100644 index 0000000000..fdbdee84cf --- /dev/null +++ b/apps/website/public/t27/files/specs/igla/w535_bounded_while_module.t27 @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/igla/w535_bounded_while_module.t27 +// W535 positive corpus witness: a bounded while loop remains Icarus-lowerable +// after tightening the predicate to reject while(true), non-lowerable struct +// fields, and imported-function calls. +// +// Anchor: φ² + φ⁻² = 3 | TRINITY + +module w535_bounded_while_module; + +pub fn count_to(n: u32) -> u32 { + var i: u32 = 0; + var acc: u32 = 0; + while (i < n) { + acc = acc + 1; + i = i + 1; + } + return acc; +} + +test bounded_while_counts { + assert_eq(count_to(0), 0); + assert_eq(count_to(3), 3); + assert_eq(count_to(7), 7); +} + + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(n: u32) -> u32 { return count_to(n); } + +endmodule diff --git a/apps/website/public/t27/files/specs/interop/gf_cross_language.t27 b/apps/website/public/t27/files/specs/interop/gf_cross_language.t27 index c6e241d425..0737a952f3 100644 --- a/apps/website/public/t27/files/specs/interop/gf_cross_language.t27 +++ b/apps/website/public/t27/files/specs/interop/gf_cross_language.t27 @@ -1,23 +1,23 @@ // SPDX-License-Identifier: Apache-2.0 // GoldenFloat Cross-Language Conformance // All languages must produce identical bits for identical inputs. -// Reference constant: GF32(phi) = 0x3FCF1BBD +// Reference constant: GF32(φ) = 0x3FCF1BBD module GFCrossLanguageConformance { import math::constants; import ffi::gf16::*; import ffi::gf32::*; - // -- Test 1: phi encoding -------------------------------------------------- + // ── Test 1: φ encoding ────────────────────────────────────────────────── test phi_gf32_bits { const phi = 1.618033988749895_f64; const gf32_bits = gf32_from_f64(phi); - // phi in GF32 (approximately IEEE f32 bits since GF32 maps to f32) + // φ in GF32 (approximately IEEE f32 bits since GF32 maps to f32) const expected = 0x3FCF1BBD_u32; then gf32_bits == expected } - // -- Test 2: Sign extraction --------------------------------------------- + // ── Test 2: Sign extraction ───────────────────────────────────────────── test phi_ffi_encoding { const phi = constants::PHI; const gf16_phi = gf16_from_f64(phi); @@ -28,7 +28,7 @@ module GFCrossLanguageConformance { and gf32_extract_exponent(gf32_phi) > 0 } - // -- Test 3: Roundtrip precision ----------------------------------------- + // ── Test 3: Roundtrip precision ───────────────────────────────────────── test roundtrip_gf16_precision { const test_vals = [1.618, 3.14159, 2.71828, 1.0, -1.0, 0.5]; for val in test_vals { @@ -38,7 +38,7 @@ module GFCrossLanguageConformance { } } - // -- Test 4: Classification ---------------------------------------------- + // ── Test 4: Classification ────────────────────────────────────────────── test classification_functions { const zero = gf16_from_f64(0.0); const inf = gf16_from_f64(1e38_f64); @@ -49,7 +49,7 @@ module GFCrossLanguageConformance { and gf16_is_nan(zero) == false } - // -- Test 5: Arithmetic -------------------------------------------------- + // ── Test 5: Arithmetic ────────────────────────────────────────────────── test gf16_addition { const a = gf16_from_f64(1.0); const b = gf16_from_f64(0.618); @@ -58,8 +58,8 @@ module GFCrossLanguageConformance { then abs(result - 1.618) < 0.01 } - // -- Test 6: FPGA-Safety contract ---------------------------------------- - // All encode/decode must work on u16/u32 only -- no f64 in compute + // ── Test 6: FPGA-Safety contract ──────────────────────────────────────── + // All encode/decode must work on u16/u32 only — no f64 in compute test zero_roundtrip { const zero_enc = gf16_from_f64(0.0); const zero_dec = gf16_to_f64(zero_enc); @@ -67,7 +67,7 @@ module GFCrossLanguageConformance { and gf16_is_zero(zero_enc) == true } - // -- Test 7: Mantissa extraction consistency ------------------------------ + // ── Test 7: Mantissa extraction consistency ────────────────────────────── test mantissa_extraction { const phi_gf16 = gf16_from_f64(1.618); const phi_gf32 = gf32_from_f64(1.618); @@ -80,7 +80,7 @@ module GFCrossLanguageConformance { and mant32 != 0 } - // -- Test 8: Special values roundtrip ------------------------------------- + // ── Test 8: Special values roundtrip ───────────────────────────────────── test special_values_roundtrip { // Zero const zero_enc = gf16_from_f64(0.0); diff --git a/apps/website/public/t27/files/specs/isa/registers.t27 b/apps/website/public/t27/files/specs/isa/registers.t27 index 76b5783401..4832be169b 100644 --- a/apps/website/public/t27/files/specs/isa/registers.t27 +++ b/apps/website/public/t27/files/specs/isa/registers.t27 @@ -2,15 +2,15 @@ // t27/specs/isa/registers.t27 // TRI27 ISA Register File Specification // Register definitions, Coptic encoding, and register file operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ISARegisters { // Import base types use base::types; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Register Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Register file configuration (Coptic compatibility: 27 registers) const NUM_REGISTERS : usize = 27; // R0-R26 @@ -57,55 +57,55 @@ module ISARegisters { const FLAG_TRAP : u8 = 4; // Trap flag const FLAG_INTERRUPT : u8 = 5; // Interrupt enable - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. Coptic Alphabet Encoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Coptic alphabet encoding (27 letters for 27 registers) // Maps register numbers to Coptic Unicode code points const COPTIC_ALPHABET : [27]u32 = [ - 0x03B1, // alpha = alpha (R0) - 0x03B2, // beta = bita (R1) - 0x03B3, // gamma = gamma (R2) - 0x03B4, // delta = dalda (R3) - 0x03B5, // epsilon = ei (R4) - 0x03C6, // phi = sima (R5) - 0x03B6, // zeta = zata (R6) - 0x03B7, // eta = ita (R7) - 0x03B8, // theta = thita (R8) - 0x03B9, // iota = iota (R9) - 0x03BA, // kappa = kappa (R10) - 0x03BB, // lambda = lauda (R11) - 0x03BC, // mu = mi (R12) - 0x03BD, // nu = ni (R13) - 0x03BE, // xi = ksi (R14) - 0x03C0, // pi = pi (R15) - 0x03C1, // rho = ro (R16) - 0x03C3, // sigma = sigma (R17) - 0x03C4, // tau = tau (R18) - 0x03C5, // upsilon = upsilon (R19) - 0x03C6, // phi = fi (R20) - 0x03C7, // chi = khi (R21) - 0x03C8, // psi = psi (R22) - 0x03C9, // omega = ou (R23) - 0x0417, // 304 = sampi (R24) - 0x0418, // 305 = koppa (R25) - 0x0419, // 306 = 307hei (R26) + 0x03B1, // α = alpha (R0) + 0x03B2, // β = bita (R1) + 0x03B3, // γ = gamma (R2) + 0x03B4, // δ = dalda (R3) + 0x03B5, // ε = ei (R4) + 0x03C6, // ϕ = sima (R5) + 0x03B6, // ζ = zata (R6) + 0x03B7, // η = ita (R7) + 0x03B8, // θ = thita (R8) + 0x03B9, // ι = iota (R9) + 0x03BA, // κ = kappa (R10) + 0x03BB, // λ = lauda (R11) + 0x03BC, // μ = mi (R12) + 0x03BD, // ν = ni (R13) + 0x03BE, // ξ = ksi (R14) + 0x03C0, // π = pi (R15) + 0x03C1, // ρ = ro (R16) + 0x03C3, // σ = sigma (R17) + 0x03C4, // τ = tau (R18) + 0x03C5, // υ = upsilon (R19) + 0x03C6, // φ = fi (R20) + 0x03C7, // χ = khi (R21) + 0x03C8, // ψ = psi (R22) + 0x03C9, // ω = ou (R23) + 0x0417, // ϗ = sampi (R24) + 0x0418, // Ϙ = koppa (R25) + 0x0419, // ϙ = šhei (R26) ]; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Register File State - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Register file: 27 registers, each holding a TernaryWord (27 trits) // Stored as u32 for efficiency (27 trits fits in 32 bits) var register_file : [NUM_REGISTERS]TernaryWord = [TernaryWord{.raw = 0}; NUM_REGISTERS]; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Register Read/Write - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // reg_read(reg: u8) -> TernaryWord + // reg_read(reg: u8) → TernaryWord // Read from register file // R0 always returns 0 (zero register) // Returns error sentinel if register number is invalid @@ -124,7 +124,7 @@ module ISARegisters { return register_file[reg]; } - // reg_write(reg: u8, value: TernaryWord) -> bool + // reg_write(reg: u8, value: TernaryWord) → bool // Write to register file // R0 writes are ignored (zero register is read-only) // Returns true if write succeeded, false if invalid register @@ -143,11 +143,11 @@ module ISARegisters { return true; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Coptic Encoding Conversion - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // reg_to_coptic(reg: u8) -> u32 + // reg_to_coptic(reg: u8) → u32 // Convert register number to Coptic Unicode code point // Returns 0 if register number is invalid fn reg_to_coptic(reg: u8) -> u32 { @@ -157,7 +157,7 @@ module ISARegisters { return COPTIC_ALPHABET[reg]; } - // coptic_to_reg(cp: u32) -> u8 + // coptic_to_reg(cp: u32) → u8 // Convert Coptic Unicode code point to register number // Returns 0xFF if not a valid register character fn coptic_to_reg(cp: u32) -> u8 { @@ -173,11 +173,11 @@ module ISARegisters { return 0xFF; // Error sentinel } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Status Register Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // status_read(flag: u8) -> bool + // status_read(flag: u8) → bool // Read a specific flag from status register (R20) // Returns true if flag is set, false otherwise fn status_read(flag: u8) -> bool { @@ -186,7 +186,7 @@ module ISARegisters { return (status_val.raw & mask) != 0; } - // status_write(flag: u8, value: bool) -> bool + // status_write(flag: u8, value: bool) → bool // Set or clear a specific flag in status register (R20) // Returns true if operation succeeded fn status_write(flag: u8, value: bool) -> bool { @@ -206,11 +206,11 @@ module ISARegisters { return reg_write(R20, status_val); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Stack Operations (using R17 as stack pointer) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // push_reg(reg: u8) -> bool + // push_reg(reg: u8) → bool // Push register value to stack (using R17 as stack pointer) // Stack grows downward (decrement before store) // Returns true if push succeeded @@ -237,7 +237,7 @@ module ISARegisters { return true; } - // pop_reg(reg: u8) -> bool + // pop_reg(reg: u8) → bool // Pop value from stack into register (using R17 as stack pointer) // Stack grows downward (load then increment) // Returns true if pop succeeded @@ -261,11 +261,11 @@ module ISARegisters { return reg_write(reg, value); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 8. Context Save/Restore - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // save_context() -> void + // save_context() → void // Save caller-saved registers (R5-R9) to stack // Used by function prologue fn save_context() -> void { @@ -276,7 +276,7 @@ module ISARegisters { push_reg(R9); } - // restore_context() -> void + // restore_context() → void // Restore caller-saved registers from stack // Used by function epilogue fn restore_context() -> void { @@ -287,9 +287,9 @@ module ISARegisters { pop_reg(R5); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 9. Register Aliases - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Argument/return registers const ARG0 : u8 = R1; @@ -322,9 +322,9 @@ module ISARegisters { const KSP : u8 = R22; // Kernel stack pointer const TP : u8 = R23; // Thread pointer - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for ISARegisters - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test isa_r0_always_zero given word = TernaryWord{.raw = 0x123456} @@ -364,22 +364,22 @@ module ISARegisters { test isa_reg_to_coptic_r0 given cp = reg_to_coptic(R0) - then cp == 0x03B1 // alpha + then cp == 0x03B1 // α test isa_reg_to_coptic_r10 given cp = reg_to_coptic(R10) - then cp == 0x03BA // kappa + then cp == 0x03BA // κ test isa_reg_to_coptic_r26 given cp = reg_to_coptic(R26) - then cp == 0x0419 // 1492 + then cp == 0x0419 // ϙ test isa_coptic_to_reg_alpha - given reg = coptic_to_reg(0x03B1) // alpha + given reg = coptic_to_reg(0x03B1) // α then reg == R0 test isa_coptic_to_reg_kappa - given reg = coptic_to_reg(0x03BA) // kappa + given reg = coptic_to_reg(0x03BA) // κ then reg == R10 test isa_coptic_to_reg_invalid @@ -491,9 +491,9 @@ module ISARegisters { invariant isa_max_register_is_26 assert R26 == NUM_REGISTERS - 1 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // Ring 045: Agent Binding and Trit State Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // agent_register_bijection: Each agent maps to exactly one register invariant agent_register_bijection @@ -519,10 +519,10 @@ module ISARegisters { assert result.raw == value.raw // queen_register_special: T (Queen) register = register index 0 (Tau/Alpha) - // The Queen register is R0 (Alpha/alpha), the first Coptic letter + // The Queen register is R0 (Alpha/α), the first Coptic letter invariant queen_register_special assert R0 == 0 - assert reg_to_coptic(R0) == 0x03B1 // alpha (Alpha, representing Queen/Tau) + assert reg_to_coptic(R0) == 0x03B1 // α (Alpha, representing Queen/Tau) // register_initial_zero: All registers initialize to 0 invariant register_initial_zero @@ -550,7 +550,7 @@ module ISARegisters { // T (Queen) register = register index 0 (Tau/Alpha) given queen_idx = R0 and queen_cp = reg_to_coptic(queen_idx) - then queen_idx == 0 and queen_cp == 0x03B1 // alpha + then queen_idx == 0 and queen_cp == 0x03B1 // α test agent_count_equals_register_count given agents = AGENT_COUNT @@ -578,7 +578,7 @@ module ISARegisters { target: < 20ns bench isa_coptic_to_reg_latency - measure: nanoseconds to coptic_to_reg(0x03C0) // pi + measure: nanoseconds to coptic_to_reg(0x03C0) // π target: < 100ns bench isa_status_read_latency diff --git a/apps/website/public/t27/files/specs/isa/ternary_arithmetic.t27 b/apps/website/public/t27/files/specs/isa/ternary_arithmetic.t27 index d76744ae63..df56491f22 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_arithmetic.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_arithmetic.t27 @@ -3,14 +3,14 @@ // Ternary Arithmetic Operations Specification // Ring 064 - Balanced ternary arithmetic for T27 // Defines addition, subtraction, multiplication, and division -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryArithmetic { use base::types; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Ternary Values and Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Balanced ternary values const TRIT_NEG : i32 = -1; // Negative @@ -24,15 +24,15 @@ module TernaryArithmetic { // Number of trits in a word (configurable) const TRITS_PER_WORD : usize = 27; // 3^27 states (~7.6 trillion) - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Single Trit Addition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // trit_add(a: i32, b: i32, carry_in: i32) -> TritAddResult + // trit_add(a: i32, b: i32, carry_in: i32) → TritAddResult // Add two trits with carry in, return sum and carry out // Balanced ternary: -1, 0, 1 // Result can be -2, -1, 0, 1, 2 (needs carry) - fn trit_add(a: i32, b: i32, carry_in: i32) -> TritAddResult { + fn trit_add(a: i32, b: i32, carry_in: i32) → TritAddResult { var sum = a + b + carry_in; // Normalize balanced ternary @@ -59,13 +59,13 @@ module TernaryArithmetic { carry_out : i32, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Single Trit Subtraction - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // trit_sub(a: i32, b: i32, borrow_in: i32) -> TritSubResult + // trit_sub(a: i32, b: i32, borrow_in: i32) → TritSubResult // Subtract b from a with borrow in - fn trit_sub(a: i32, b: i32, borrow_in: i32) -> TritSubResult { + fn trit_sub(a: i32, b: i32, borrow_in: i32) → TritSubResult { // Subtraction = addition with negated subtrahend const neg_b = -b; const result = trit_add(a, neg_b, borrow_in); @@ -82,24 +82,24 @@ module TernaryArithmetic { borrow_out : i32, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Single Trit Multiplication - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // trit_mul(a: i32, b: i32) -> i32 + // trit_mul(a: i32, b: i32) → i32 // Multiply two trits // Result: -1, 0, or 1 (no carry needed for single trit) - fn trit_mul(a: i32, b: i32) -> i32 { + fn trit_mul(a: i32, b: i32) → i32 { return a * b; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Word-Level Addition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_word_add(a: []i32, b: []i32, len: usize) -> WordAddResult + // ternary_word_add(a: []i32, b: []i32, len: usize) → WordAddResult // Add two ternary words with carry propagation - fn ternary_word_add(a: []i32, b: []i32, len: usize) -> WordAddResult { + fn ternary_word_add(a: []i32, b: []i32, len: usize) → WordAddResult { var result : WordAddResult = undefined; var carry : i32 = 0; var i : usize = 0; @@ -123,13 +123,13 @@ module TernaryArithmetic { overflow : bool, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. Word-Level Subtraction - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_word_sub(a: []i32, b: []i32, len: usize) -> WordSubResult + // ternary_word_sub(a: []i32, b: []i32, len: usize) → WordSubResult // Subtract b from a with borrow propagation - fn ternary_word_sub(a: []i32, b: []i32, len: usize) -> WordSubResult { + fn ternary_word_sub(a: []i32, b: []i32, len: usize) → WordSubResult { var result : WordSubResult = undefined; var borrow : i32 = 0; var i : usize = 0; @@ -153,13 +153,13 @@ module TernaryArithmetic { underflow : bool, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. Ternary to Decimal Conversion - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_to_decimal(trits: []i32, len: usize) -> i64 + // ternary_to_decimal(trits: []i32, len: usize) → i64 // Convert balanced ternary to decimal integer - fn ternary_to_decimal(trits: []i32, len: usize) -> i64 { + fn ternary_to_decimal(trits: []i32, len: usize) → i64 { var result : i64 = 0; var power : i64 = 1; var i : usize = 0; @@ -173,10 +173,10 @@ module TernaryArithmetic { return result; } - // decimal_to_ternary(value: i64, trits: []i32, len: usize) -> usize + // decimal_to_ternary(value: i64, trits: []i32, len: usize) → usize // Convert decimal integer to balanced ternary // Returns number of trits used - fn decimal_to_ternary(value: i64, trits: []i32, len: usize) -> usize { + fn decimal_to_ternary(value: i64, trits: []i32, len: usize) → usize { var val = value; var i : usize = 0; @@ -212,19 +212,19 @@ module TernaryArithmetic { return actual_len; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. Validation Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // is_valid_trit(t: i32) -> bool + // is_valid_trit(t: i32) → bool // Check if a value is a valid trit - fn is_valid_trit(t: i32) -> bool { + fn is_valid_trit(t: i32) → bool { return t >= MIN_TRIT and t <= MAX_TRIT; } - // validate_trits(trits: []i32, len: usize) -> bool + // validate_trits(trits: []i32, len: usize) → bool // Validate all trits in an array - fn validate_trits(trits: []i32, len: usize) -> bool { + fn validate_trits(trits: []i32, len: usize) → bool { var i : usize = 0; while (i < len) { if (!is_valid_trit(trits[i])) { @@ -235,14 +235,14 @@ module TernaryArithmetic { return true; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 9. Comparison Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_compare(a: []i32, b: []i32, len: usize) -> i32 + // ternary_compare(a: []i32, b: []i32, len: usize) → i32 // Compare two ternary words // Returns -1 if a < b, 0 if a == b, 1 if a > b - fn ternary_compare(a: []i32, b: []i32, len: usize) -> i32 { + fn ternary_compare(a: []i32, b: []i32, len: usize) → i32 { // Compare from most significant trit var i : i64 = @as(i64, @intCast(len)) - 1; @@ -261,9 +261,9 @@ module TernaryArithmetic { return 0; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 10. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test trit_add_basic // 1 + 1 = 2 -> -1 with carry +1 (balanced ternary: 2 = -1 + 3) @@ -359,9 +359,9 @@ module TernaryArithmetic { assert ternary_compare(&b, &a, 3) == -1 assert ternary_compare(&a, &a, 3) == 0 - // ===================================================== + // ═════════════════════════════════════════════════════ // 11. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant trit_add_commutative // Trit addition is commutative @@ -447,9 +447,9 @@ module TernaryArithmetic { i = i + 1; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 12. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench trit_add_performance // Measure: cycles to compute 1000 trit additions diff --git a/apps/website/public/t27/files/specs/isa/ternary_bitwise.t27 b/apps/website/public/t27/files/specs/isa/ternary_bitwise.t27 index 5ddc16c5e1..66a891da52 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_bitwise.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_bitwise.t27 @@ -3,14 +3,14 @@ // Ternary Bitwise Operations Specification // Ring 068 - Bitwise AND, OR, XOR for ternary data // Defines bitwise operations on ternary word representations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryBitwise { use base::types; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Bitwise Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Trit values const TRIT_NEG : i32 = -1; @@ -20,13 +20,13 @@ module TernaryBitwise { // Word size const WORD_SIZE : usize = 27; - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Tritwise AND - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_and(a: []i32, b: []i32, result: []i32, len: usize) -> void + // tritwise_and(a: []i32, b: []i32, result: []i32, len: usize) → void // Tritwise AND operation (acts as MIN in balanced ternary) - fn tritwise_and(a: []i32, b: []i32, result: []i32, len: usize) -> void { + fn tritwise_and(a: []i32, b: []i32, result: []i32, len: usize) → void { var i : usize = 0; while (i < len) { // AND is essentially MIN for balanced ternary @@ -39,13 +39,13 @@ module TernaryBitwise { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Tritwise OR - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_or(a: []i32, b: []i32, result: []i32, len: usize) -> void + // tritwise_or(a: []i32, b: []i32, result: []i32, len: usize) → void // Tritwise OR operation (acts as MAX in balanced ternary) - fn tritwise_or(a: []i32, b: []i32, result: []i32, len: usize) -> void { + fn tritwise_or(a: []i32, b: []i32, result: []i32, len: usize) → void { var i : usize = 0; while (i < len) { // OR is essentially MAX for balanced ternary @@ -58,14 +58,14 @@ module TernaryBitwise { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Tritwise XOR - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_xor(a: []i32, b: []i32, result: []i32, len: usize) -> void + // tritwise_xor(a: []i32, b: []i32, result: []i32, len: usize) → void // Tritwise XOR (exclusive OR) operation // Returns TRIT_ZERO if inputs are same, otherwise indicates difference - fn tritwise_xor(a: []i32, b: []i32, result: []i32, len: usize) -> void { + fn tritwise_xor(a: []i32, b: []i32, result: []i32, len: usize) → void { var i : usize = 0; while (i < len) { if (a[i] == b[i]) { @@ -82,13 +82,13 @@ module TernaryBitwise { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Tritwise NOT - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_not(word: []i32, result: []i32, len: usize) -> void + // tritwise_not(word: []i32, result: []i32, len: usize) → void // Tritwise NOT (inversion) operation - fn tritwise_not(word: []i32, result: []i32, len: usize) -> void { + fn tritwise_not(word: []i32, result: []i32, len: usize) → void { var i : usize = 0; while (i < len) { result[i] = -word[i]; @@ -96,37 +96,37 @@ module TernaryBitwise { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. Tritwise NAND - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_nand(a: []i32, b: []i32, result: []i32, len: usize) -> void + // tritwise_nand(a: []i32, b: []i32, result: []i32, len: usize) → void // Tritwise NAND (NOT AND) operation - fn tritwise_nand(a: []i32, b: []i32, result: []i32, len: usize) -> void { + fn tritwise_nand(a: []i32, b: []i32, result: []i32, len: usize) → void { var temp : [WORD_SIZE]i32 = undefined; tritwise_and(a, b, temp, len); tritwise_not(temp, result, len); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. Tritwise NOR - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_nor(a: []i32, b: []i32, result: []i32, len: usize) -> void + // tritwise_nor(a: []i32, b: []i32, result: []i32, len: usize) → void // Tritwise NOR (NOT OR) operation - fn tritwise_nor(a: []i32, b: []i32, result: []i32, len: usize) -> void { + fn tritwise_nor(a: []i32, b: []i32, result: []i32, len: usize) → void { var temp : [WORD_SIZE]i32 = undefined; tritwise_or(a, b, temp, len); tritwise_not(temp, result, len); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. Tritwise XNOR - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_xnor(a: []i32, b: []i32, result: []i32, len: usize) -> void + // tritwise_xnor(a: []i32, b: []i32, result: []i32, len: usize) → void // Tritwise XNOR (exclusive NOR) - equality test - fn tritwise_xnor(a: []i32, b: []i32, result: []i32, len: usize) -> void { + fn tritwise_xnor(a: []i32, b: []i32, result: []i32, len: usize) → void { var i : usize = 0; while (i < len) { if (a[i] == b[i]) { @@ -138,13 +138,13 @@ module TernaryBitwise { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 9. Mask Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // tritwise_mask(word: []i32, mask: []i32, result: []i32, len: usize) -> void + // tritwise_mask(word: []i32, mask: []i32, result: []i32, len: usize) → void // Apply mask: keep trits where mask is POS, zero elsewhere - fn tritwise_mask(word: []i32, mask: []i32, result: []i32, len: usize) -> void { + fn tritwise_mask(word: []i32, mask: []i32, result: []i32, len: usize) → void { var i : usize = 0; while (i < len) { if (mask[i] == TRIT_POS) { @@ -156,9 +156,9 @@ module TernaryBitwise { } } - // tritwise_merge(a: []i32, b: []i32, mask: []i32, result: []i32, len: usize) -> void + // tritwise_merge(a: []i32, b: []i32, mask: []i32, result: []i32, len: usize) → void // Merge based on mask: take from a where mask is POS, from b otherwise - fn tritwise_merge(a: []i32, b: []i32, mask: []i32, result: []i32, len: usize) -> void { + fn tritwise_merge(a: []i32, b: []i32, mask: []i32, result: []i32, len: usize) → void { var i : usize = 0; while (i < len) { if (mask[i] == TRIT_POS) { @@ -170,9 +170,9 @@ module TernaryBitwise { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 10. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test tritwise_and_basic var a : [3]i32 = [_]i32{TRIT_POS, TRIT_ZERO, TRIT_NEG}; @@ -264,9 +264,9 @@ module TernaryBitwise { assert result[1] == TRIT_POS assert result[2] == TRIT_POS - // ===================================================== + // ═════════════════════════════════════════════════════ // 11. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant tritwise_and_commutative // Tritwise AND is commutative @@ -343,9 +343,9 @@ module TernaryBitwise { i = i + 1; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 12. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench tritwise_and_performance // Measure: cycles to compute 1000 tritwise AND operations diff --git a/apps/website/public/t27/files/specs/isa/ternary_control_flow.t27 b/apps/website/public/t27/files/specs/isa/ternary_control_flow.t27 index d9ae54c65b..9efe86f2e5 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_control_flow.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_control_flow.t27 @@ -3,14 +3,14 @@ // Ternary Control Flow Specification // Ring 090 - Control flow operations for ternary architecture // Conditional jumps, branches, and call/return -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryControlFlow { use base::types; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Branch Conditions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Trit values for condition evaluation const TRIT_NEG : i32 = -1; @@ -30,9 +30,9 @@ module TernaryControlFlow { const PRED_NOT_TAKEN : u8 = 1; // Likely not taken const PRED_NONE : u8 = 2; // No prediction - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. Program Counter Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // pc_read() -> u32 // Read current program counter @@ -54,9 +54,9 @@ module TernaryControlFlow { return (current_pc as i32 + offset) as u32; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Conditional Branch Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // branch_cond(value: i32, condition: u8, offset: i32) -> bool // Branch if condition matches value @@ -98,9 +98,9 @@ module TernaryControlFlow { return branch_cond(value, COND_EQ, offset); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Unconditional Branch Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // jump(addr: u32) -> void // Unconditional jump to absolute address @@ -128,9 +128,9 @@ module TernaryControlFlow { jump_relative(offset); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Return Operation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // ret(link_reg: u32) -> void // Return to address in link register @@ -138,9 +138,9 @@ module TernaryControlFlow { pc_write(link_reg); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Call/Return with Stack - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // call(addr: u32, sp: *u32, memory: []TernaryWord) -> bool // Call subroutine: push return address, then jump @@ -178,9 +178,9 @@ module TernaryControlFlow { return true; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Compare Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // compare(a: i32, b: i32) -> i32 // Compare two trit values, return condition code @@ -202,9 +202,9 @@ module TernaryControlFlow { return branch_cond(result, condition, offset); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 8. Table Branch (Switch) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // table_branch(index: i32, jump_table: []u32, default_addr: u32) -> void // Jump to address in jump_table[index], or default if out of range @@ -216,9 +216,9 @@ module TernaryControlFlow { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test branch_if_taken given offset = 10 diff --git a/apps/website/public/t27/files/specs/isa/ternary_deque.t27 b/apps/website/public/t27/files/specs/isa/ternary_deque.t27 index b503c08e4c..dda39f6e78 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_deque.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_deque.t27 @@ -3,14 +3,14 @@ // Ternary Deque Operations Specification // Ring 088 - Double-ended queue operations for ternary data // Defines deque with push/pop from both ends -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryDeque { use base::types; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Deque Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Trit values const TRIT_NEG : i32 = -1; @@ -20,13 +20,13 @@ module TernaryDeque { // Deque limits const DEQUE_MAX_SIZE : usize = 27; - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Deque Structure (Circular Buffer) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // deque_init(data: []i32, front: *usize, back: *usize, count: *usize) -> void + // deque_init(data: []i32, front: *usize, back: *usize, count: *usize) → void // Initialize empty deque - fn deque_init(data: []i32, front: *usize, back: *usize, count: *usize) -> void { + fn deque_init(data: []i32, front: *usize, back: *usize, count: *usize) → void { var i : usize = 0; while (i < DEQUE_MAX_SIZE and i < data.len) { data[i] = TRIT_ZERO; @@ -37,9 +37,9 @@ module TernaryDeque { count.* = 0; } - // deque_push_front(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) -> bool + // deque_push_front(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) → bool // Add element to front of deque - fn deque_push_front(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) -> bool { + fn deque_push_front(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) → bool { if (count.* >= DEQUE_MAX_SIZE) { return false; } @@ -59,9 +59,9 @@ module TernaryDeque { return true; } - // deque_push_back(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) -> bool + // deque_push_back(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) → bool // Add element to back of deque - fn deque_push_back(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) -> bool { + fn deque_push_back(data: []i32, front: *usize, back: *usize, count: *usize, value: i32) → bool { if (count.* >= DEQUE_MAX_SIZE) { return false; } @@ -78,9 +78,9 @@ module TernaryDeque { return true; } - // deque_pop_front(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) -> bool + // deque_pop_front(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) → bool // Remove element from front of deque - fn deque_pop_front(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) -> bool { + fn deque_pop_front(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) → bool { if (count.* == 0) { return false; } @@ -97,9 +97,9 @@ module TernaryDeque { return true; } - // deque_pop_back(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) -> bool + // deque_pop_back(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) → bool // Remove element from back of deque - fn deque_pop_back(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) -> bool { + fn deque_pop_back(data: []i32, front: *usize, back: *usize, count: *usize, value: *i32) → bool { if (count.* == 0) { return false; } @@ -117,9 +117,9 @@ module TernaryDeque { return true; } - // deque_peek_front(data: []i32, front: *usize, count: usize, value: *i32) -> bool + // deque_peek_front(data: []i32, front: *usize, count: usize, value: *i32) → bool // Look at element at front without removing - fn deque_peek_front(data: []i32, front: *usize, count: usize, value: *i32) -> bool { + fn deque_peek_front(data: []i32, front: *usize, count: usize, value: *i32) → bool { if (count == 0) { return false; } @@ -129,9 +129,9 @@ module TernaryDeque { return true; } - // deque_peek_back(data: []i32, back: *usize, count: usize, value: *i32) -> bool + // deque_peek_back(data: []i32, back: *usize, count: usize, value: *i32) → bool // Look at element at back without removing - fn deque_peek_back(data: []i32, back: *usize, count: usize, value: *i32) -> bool { + fn deque_peek_back(data: []i32, back: *usize, count: usize, value: *i32) → bool { if (count == 0) { return false; } @@ -147,27 +147,27 @@ module TernaryDeque { return true; } - // deque_is_empty(count: usize) -> bool + // deque_is_empty(count: usize) → bool // Check if deque is empty - fn deque_is_empty(count: usize) -> bool { + fn deque_is_empty(count: usize) → bool { return count == 0; } - // deque_is_full(count: usize) -> bool + // deque_is_full(count: usize) → bool // Check if deque is full - fn deque_is_full(count: usize) -> bool { + fn deque_is_full(count: usize) → bool { return count >= DEQUE_MAX_SIZE; } - // deque_size(count: usize) -> usize + // deque_size(count: usize) → usize // Get number of elements in deque - fn deque_size(count: usize) -> usize { + fn deque_size(count: usize) → usize { return count; } - // deque_clear(data: []i32, front: *usize, back: *usize, count: *usize) -> void + // deque_clear(data: []i32, front: *usize, back: *usize, count: *usize) → void // Clear all elements from deque - fn deque_clear(data: []i32, front: *usize, back: *usize, count: *usize) -> void { + fn deque_clear(data: []i32, front: *usize, back: *usize, count: *usize) → void { var i : usize = 0; while (i < DEQUE_MAX_SIZE and i < data.len) { data[i] = TRIT_ZERO; @@ -178,9 +178,9 @@ module TernaryDeque { count.* = 0; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test deque_init_empty var data : [10]i32 = undefined; @@ -299,9 +299,9 @@ module TernaryDeque { assert deque_is_empty(count) - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant deque_size_matches_operations // Size equals pushes minus pops @@ -395,9 +395,9 @@ module TernaryDeque { assert deque_size(count) == 2 - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench deque_push_back_performance // Measure: cycles for 1000 push_back operations diff --git a/apps/website/public/t27/files/specs/isa/ternary_encoding.t27 b/apps/website/public/t27/files/specs/isa/ternary_encoding.t27 index 1ab5368867..5c29cbec06 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_encoding.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_encoding.t27 @@ -1,41 +1,360 @@ -// specs/isa/ternary_encoding.t27 -// Ternary encoding: values in {-1, 0, +1} +// SPDX-License-Identifier: Apache-2.0 +; specs/isa/ternary_encoding.t27 -- the TRI-27 instruction word as the pinned consumer decodes it +; Rewritten for S05 of gHashTag/trinity#988 (gHashTag/t27#3567). Until 2026-09-12 this file was a +; 38-line `algorithm` block that stated the trit alphabet {-1, 0, +1} and nothing else; it did not +; parse (tools/specs_generate_baseline.txt), yet specs/trinity/capabilities/tri27.toolchain.t27 +; names it as the canonical spec of the whole TRI-27 toolchain. It now states the instruction +; encoding that gHashTag/trinity actually executes: src/tri27/emu/decoder.zig at 976df517, which +; calls itself the single source of truth and is the only encoding the owner's tests exercise +; (test_encoder_fuzz.zig, test_comprehensive.zig, test_golden.zig through tri_asm.zig). The trit +; alphabet of the old file survives as TRIT_VALUES. Five other layouts exist in the consumer's +; tree and are recorded as findings, not as contracts. Every field rule below is a function the C +; backend executes; tools/trinity_tri27.py composes them into a decoder and replays +; conformance/trinity/tri27_programs.json through the generated C. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY -algorithm ternary_encoding { - module: base.ternary_encoding +module Tri27Encoding; - strand_i: { - trit_values: [-1, 0, +1], - encoding_name: "balanced_ternary", - isa_extension: "ternary" - } +pub const KIND : str = "isa-encoding"; +pub const ID : str = "isa/ternary_encoding"; +pub const NAME : str = "The TRI-27 instruction word of the pinned Trinity emulator"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const OWNER_MODULE : str = "src/tri27/emu/decoder.zig"; +pub const OWNER_LINES : str = "Opcode enum :14-79; decode :126-174; encode :182-210"; +pub const TRIT_VALUES : [3]i32 = [-1, 0, 1]; +; --- The word ------------------------------------------------------------------------------ +pub const WORD_BITS : u32 = 32; +pub const INSTRUCTION_BYTES : u32 = 4; +pub const BYTE_ORDER : str = "little-endian: byte 0 of the instruction holds bits 7:0, the opcode"; +pub const OPCODE_SHIFT : u32 = 0; +pub const OPCODE_MASK : u32 = 255; +pub const DST_SHIFT : u32 = 8; +pub const REG_MASK : u32 = 31; +pub const SRC1_SHIFT : u32 = 13; +pub const SRC1_MASK_IMM_FORM : u32 = 15; +pub const SRC2_SHIFT : u32 = 18; +pub const V3_SHIFT : u32 = 23; +pub const IMM_SHIFT : u32 = 17; +pub const IMM_MASK : u32 = 32767; +pub const IMM_SIGN_BIT : u32 = 16384; +pub const IMM_BITS : u32 = 15; +pub const IMM_MIN : i32 = -16384; +pub const IMM_MAX : i32 = 16383; +pub const LAYOUT_IMM_FORM : str = "opcode 7:0, dst 12:8, src1 16:13 (four bits), immediate 31:17 (fifteen bits, two's complement)"; +pub const LAYOUT_THREE_OPERAND : str = "opcode 7:0, dst 12:8, src1 17:13, src2 22:18"; +pub const LAYOUT_TWO_OPERAND : str = "opcode 7:0, dst 12:8, src1 17:13; bits 31:18 unused"; +pub const LAYOUT_BUNDLE3 : str = "opcode 7:0, dst 12:8, src1 17:13, src2 22:18, third register 27:23; the decoder reads this form, the owner's encoder never writes it"; +; --- The forty-seven opcodes ---------------------------------------------------------------- +pub const OPCODE_COUNT : u32 = 47; +pub const OPCODE_NAMES : [47]str = ["NOP", "LD", "ST", "LDI", "STI", "MOV", "ADD", "SUB", "MUL", "DIV", "INC", "DEC", "EXP", "SIN", "AND", "OR", "XOR", "NOT", "SHL", "SHR", "STR_LOAD", "STR_CONCAT", "STR_PRINT", "FILE_READ", "FILE_WRITE", "FILE_EXISTS", "JMP", "JZ", "JNZ", "CALL", "JGT", "JLT", "RET", "HALT", "DOT", "BIND", "BUNDLE2", "BUNDLE3", "PHI_CONST", "PI_CONST", "E_CONST", "SACR", "LD_IMM", "ADD3", "SUB3", "CMP3", "SYSCALL"]; +pub const OPCODE_VALUES : [47]u32 = [0, 2, 3, 4, 5, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 64, 65, 66, 67, 68, 69, 75, 77, 96, 97, 98, 99, 128, 129, 130, 131, 132, 133, 134, 135, 136]; +pub const OP_NOP : u32 = 0; +pub const OP_LD : u32 = 2; +pub const OP_ST : u32 = 3; +pub const OP_LDI : u32 = 4; +pub const OP_STI : u32 = 5; +pub const OP_MOV : u32 = 15; +pub const OP_ADD : u32 = 16; +pub const OP_SUB : u32 = 17; +pub const OP_MUL : u32 = 18; +pub const OP_DIV : u32 = 19; +pub const OP_INC : u32 = 20; +pub const OP_DEC : u32 = 21; +pub const OP_EXP : u32 = 22; +pub const OP_SIN : u32 = 23; +pub const OP_AND : u32 = 24; +pub const OP_OR : u32 = 25; +pub const OP_XOR : u32 = 26; +pub const OP_NOT : u32 = 27; +pub const OP_SHL : u32 = 28; +pub const OP_SHR : u32 = 29; +pub const OP_STR_LOAD : u32 = 32; +pub const OP_STR_CONCAT : u32 = 33; +pub const OP_STR_PRINT : u32 = 34; +pub const OP_FILE_READ : u32 = 35; +pub const OP_FILE_WRITE : u32 = 36; +pub const OP_FILE_EXISTS : u32 = 37; +pub const OP_JMP : u32 = 64; +pub const OP_JZ : u32 = 65; +pub const OP_JNZ : u32 = 66; +pub const OP_CALL : u32 = 67; +pub const OP_JGT : u32 = 68; +pub const OP_JLT : u32 = 69; +pub const OP_RET : u32 = 75; +pub const OP_HALT : u32 = 77; +pub const OP_DOT : u32 = 96; +pub const OP_BIND : u32 = 97; +pub const OP_BUNDLE2 : u32 = 98; +pub const OP_BUNDLE3 : u32 = 99; +pub const OP_PHI_CONST : u32 = 128; +pub const OP_PI_CONST : u32 = 129; +pub const OP_E_CONST : u32 = 130; +pub const OP_SACR : u32 = 131; +pub const OP_LD_IMM : u32 = 132; +pub const OP_ADD3 : u32 = 133; +pub const OP_SUB3 : u32 = 134; +pub const OP_CMP3 : u32 = 135; +pub const OP_SYSCALL : u32 = 136; +; Opcodes whose word carries an immediate (decoder.zig :133-136 and :192-195). +pub const IMM_FORM_COUNT : u32 = 23; +pub const IMM_FORM : [23]u32 = [2, 3, 4, 5, 132, 128, 129, 130, 64, 65, 66, 68, 69, 67, 75, 28, 29, 32, 33, 34, 35, 36, 37]; +; Opcodes whose word carries a second source register (decoder.zig :138-141 and :187-190). +pub const SRC2_FORM_COUNT : u32 = 7; +pub const SRC2_FORM : [7]u32 = [16, 17, 18, 19, 24, 25, 26]; +pub const UNKNOWN_OPCODE_RULE : str = "an opcode byte that is not one of the forty-seven decodes as NOP; decoding never fails"; +pub const REGISTER_FIELD_RULE : str = "register fields are five bits wide (0..31); the executor refuses 27..31 with InvalidRegister; in the immediate form src1 is four bits (0..15)"; +pub const SRC2_LOSS_RULE : str = "DOT, BIND, BUNDLE2 execute with src1 and src2 but are not in SRC2_FORM: encode writes only src1 and decode reads src2 as 0 (register t0)"; +pub const SACR_MODE_RULE : str = "SACR selects its mode by the immediate, but SACR is not in IMM_FORM: decode reads the immediate as 0 and every decoded SACR adds modulo 19683; modes 2, 3 and 4 are reachable only by constructing an Instruction directly, as the owner's tests do"; +; --- Findings: the other layouts in the consumer's tree, recorded and not followed ---------- +pub const FINDING_COUNT : u32 = 6; +pub const FINDINGS : [6]str = ["src/tri27/emu/encoder_simple.zig puts a sixteen-bit immediate at bit 16 (loads, stores) or bit 8 (jumps, calls); src/tri27/emu/asm_parser.zig, the assembler behind `tri tri27 assemble`, uses it, so its words are misread by decoder.zig", "src/tri27/emu/specs/tbin_format.md puts the opcode in bits 31:24 and a four-bit immediate in bits 3:0", "docs/tri27/t27_format.md puts a six-bit opcode in bits 31:26 and an eight-bit immediate in bits 7:0, with opcode numbers (ADD 0x60 ... DEC 0x65) that collide with DOT 0x60", "docs/tri27/README.md puts a six-bit opcode in bits 8:5", "src/tri27/emit_zig.zig emits a VM whose decoder reads the opcode from bits 31:24 and packs bytes big-endian; it also switches on LTI, PUSH, POP and RESET, which no enum declares", "the encoder_simple.zig enum lists 36 opcodes and misses MOV, EXP, SIN, JGT, JLT and every STR_ and FILE_ opcode; every document says 36, the decoder declares 47"]; +pub const ENABLED : bool = true; - strand_ii: { - biological_analog: "multi-state signaling in biological membranes" - } +; --- Field rules --------------------------------------------------------------------------- - strand_iii: { - t27_target: "isa/ternary_encoding", - backends: [rust, c, zig, verilog] - } +pub fn is_defined_opcode(op: u32) -> bool { + if (op == OP_NOP) { return true; } + if (op == OP_LD) { return true; } + if (op == OP_ST) { return true; } + if (op == OP_LDI) { return true; } + if (op == OP_STI) { return true; } + if (op == OP_MOV) { return true; } + if (op == OP_ADD) { return true; } + if (op == OP_SUB) { return true; } + if (op == OP_MUL) { return true; } + if (op == OP_DIV) { return true; } + if (op == OP_INC) { return true; } + if (op == OP_DEC) { return true; } + if (op == OP_EXP) { return true; } + if (op == OP_SIN) { return true; } + if (op == OP_AND) { return true; } + if (op == OP_OR) { return true; } + if (op == OP_XOR) { return true; } + if (op == OP_NOT) { return true; } + if (op == OP_SHL) { return true; } + if (op == OP_SHR) { return true; } + if (op == OP_STR_LOAD) { return true; } + if (op == OP_STR_CONCAT) { return true; } + if (op == OP_STR_PRINT) { return true; } + if (op == OP_FILE_READ) { return true; } + if (op == OP_FILE_WRITE) { return true; } + if (op == OP_FILE_EXISTS) { return true; } + if (op == OP_JMP) { return true; } + if (op == OP_JZ) { return true; } + if (op == OP_JNZ) { return true; } + if (op == OP_CALL) { return true; } + if (op == OP_JGT) { return true; } + if (op == OP_JLT) { return true; } + if (op == OP_RET) { return true; } + if (op == OP_HALT) { return true; } + if (op == OP_DOT) { return true; } + if (op == OP_BIND) { return true; } + if (op == OP_BUNDLE2) { return true; } + if (op == OP_BUNDLE3) { return true; } + if (op == OP_PHI_CONST) { return true; } + if (op == OP_PI_CONST) { return true; } + if (op == OP_E_CONST) { return true; } + if (op == OP_SACR) { return true; } + if (op == OP_LD_IMM) { return true; } + if (op == OP_ADD3) { return true; } + if (op == OP_SUB3) { return true; } + if (op == OP_CMP3) { return true; } + if (op == OP_SYSCALL) { return true; } + return false; +} - invariants: [ - "unique_encoding" - ] +pub fn decode_opcode(byte: u32) -> u32 { + if (is_defined_opcode(byte)) { return byte; } + return OP_NOP; +} - hardware: [x86, arm, riscv] +pub fn has_imm(op: u32) -> bool { + if (op == OP_LD) { return true; } + if (op == OP_ST) { return true; } + if (op == OP_LDI) { return true; } + if (op == OP_STI) { return true; } + if (op == OP_LD_IMM) { return true; } + if (op == OP_PHI_CONST) { return true; } + if (op == OP_PI_CONST) { return true; } + if (op == OP_E_CONST) { return true; } + if (op == OP_JMP) { return true; } + if (op == OP_JZ) { return true; } + if (op == OP_JNZ) { return true; } + if (op == OP_JGT) { return true; } + if (op == OP_JLT) { return true; } + if (op == OP_CALL) { return true; } + if (op == OP_RET) { return true; } + if (op == OP_SHL) { return true; } + if (op == OP_SHR) { return true; } + if (op == OP_STR_LOAD) { return true; } + if (op == OP_STR_CONCAT) { return true; } + if (op == OP_STR_PRINT) { return true; } + if (op == OP_FILE_READ) { return true; } + if (op == OP_FILE_WRITE) { return true; } + if (op == OP_FILE_EXISTS) { return true; } + return false; +} - notes: | - Balanced ternary encoding efficiently represents - three discrete states using 1.58 trits per value - vs 1 bit per value for binary +pub fn has_src2(op: u32) -> bool { + if (op == OP_ADD) { return true; } + if (op == OP_SUB) { return true; } + if (op == OP_MUL) { return true; } + if (op == OP_DIV) { return true; } + if (op == OP_AND) { return true; } + if (op == OP_OR) { return true; } + if (op == OP_XOR) { return true; } + return false; +} + +pub fn opcode_of(word: u32) -> u32 { + return word & OPCODE_MASK; +} + +pub fn dst_of(word: u32) -> u32 { + return (word >> DST_SHIFT) & REG_MASK; +} + +pub fn src1_of(word: u32, op: u32) -> u32 { + if (has_imm(op)) { return (word >> SRC1_SHIFT) & SRC1_MASK_IMM_FORM; } + return (word >> SRC1_SHIFT) & REG_MASK; +} - tests: [ - { encode: 1, decode: [+1], 0 }, - { encode: 0, decode: [0], 0 }, - { encode: [+1], decode: [1], 1 } - ] +pub fn src2_of(word: u32, op: u32) -> u32 { + if (has_src2(op)) { return (word >> SRC2_SHIFT) & REG_MASK; } + if (op == OP_BUNDLE3) { return (word >> SRC2_SHIFT) & REG_MASK; } + return 0; } - test "ternary_encoding_smoke_test" { - expect(true) + +pub fn v3_of(word: u32, op: u32) -> u32 { + if (op == OP_BUNDLE3) { return (word >> V3_SHIFT) & REG_MASK; } + return 0; +} + +pub fn imm_of(word: u32, op: u32) -> i32 { + if (has_imm(op) == false) { return 0; } + var raw : u32 = (word >> IMM_SHIFT) & IMM_MASK; + if ((raw & IMM_SIGN_BIT) != 0) { return (raw as i32) - 32768; } + return raw as i32; +} + +pub fn imm_clamped(imm: i32) -> i32 { + if (imm < IMM_MIN) { return IMM_MIN; } + if (imm > IMM_MAX) { return IMM_MAX; } + return imm; +} + +pub fn imm_field(imm: i32) -> u32 { + var c : i32 = imm_clamped(imm); + if (c < 0) { return ((c + 65536) as u32) & IMM_MASK; } + return (c as u32) & IMM_MASK; +} + +pub fn encode(op: u32, dst: u32, src1: u32, src2: u32, imm: i32) -> u32 { + var word : u32 = (op & OPCODE_MASK) | ((dst & REG_MASK) << DST_SHIFT); + if (has_imm(op)) { + return word | ((src1 & SRC1_MASK_IMM_FORM) << SRC1_SHIFT) | (imm_field(imm) << IMM_SHIFT); } + if (has_src2(op)) { + return word | ((src1 & REG_MASK) << SRC1_SHIFT) | ((src2 & REG_MASK) << SRC2_SHIFT); + } + return word | ((src1 & REG_MASK) << SRC1_SHIFT); +} + +pub fn bundle3_word(dst: u32, src1: u32, src2: u32, v3: u32) -> u32 { + return OP_BUNDLE3 | ((dst & REG_MASK) << DST_SHIFT) | ((src1 & REG_MASK) << SRC1_SHIFT) | ((src2 & REG_MASK) << SRC2_SHIFT) | ((v3 & REG_MASK) << V3_SHIFT); +} + +invariant the_immediate_range_is_fifteen_bits { IMM_MAX - IMM_MIN == 32767 } +invariant the_forms_partition_the_opcodes { IMM_FORM_COUNT + SRC2_FORM_COUNT == 30 } + +test every_opcode_byte_of_the_table_is_defined { + assert is_defined_opcode(OP_NOP) == true; + assert is_defined_opcode(OP_SYSCALL) == true; + assert is_defined_opcode(OP_RET) == true; + assert is_defined_opcode(1) == false; + assert is_defined_opcode(6) == false; + assert is_defined_opcode(70) == false; + assert is_defined_opcode(137) == false; + assert is_defined_opcode(255) == false; +} + +test an_unknown_opcode_decodes_as_nop { + assert decode_opcode(1) == OP_NOP; + assert decode_opcode(50) == OP_NOP; + assert decode_opcode(OP_HALT) == OP_HALT; +} + +test the_immediate_form_round_trips_and_sign_extends { + var w : u32 = encode(OP_LDI, 3, 0, 0, -5); + assert w == 4294312708; + assert opcode_of(w) == OP_LDI; + assert dst_of(w) == 3; + assert imm_of(w, OP_LDI) == -5; + assert imm_of(encode(OP_LDI, 3, 0, 0, 5), OP_LDI) == 5; + assert imm_of(2147483652, OP_LDI) == -16384; + assert imm_of(encode(OP_LDI, 0, 0, 0, 16383), OP_LDI) == 16383; +} + +test the_immediate_is_clamped_by_the_encoder { + assert imm_clamped(20000) == 16383; + assert imm_clamped(-20000) == -16384; + assert imm_of(encode(OP_JMP, 0, 0, 0, 20000), OP_JMP) == 16383; +} + +test the_three_operand_form_round_trips { + var w : u32 = encode(OP_ADD, 3, 1, 2, 0); + assert w == 533264; + assert opcode_of(w) == OP_ADD; + assert dst_of(w) == 3; + assert src1_of(w, OP_ADD) == 1; + assert src2_of(w, OP_ADD) == 2; + assert imm_of(w, OP_ADD) == 0; +} + +test the_two_operand_form_carries_src1_only { + var w : u32 = encode(OP_MOV, 3, 1, 0, 0); + assert w == 8975; + assert src1_of(w, OP_MOV) == 1; + assert src2_of(w, OP_MOV) == 0; +} + +test src1_is_four_bits_in_the_immediate_form { + var w : u32 = encode(OP_JGT, 2, 17, 0, 7); + assert w == 926276; + assert src1_of(w, OP_JGT) == 1; + assert imm_of(w, OP_JGT) == 7; +} + +test dot_bind_and_bundle2_lose_src2_through_encode { + var w : u32 = encode(OP_DOT, 3, 1, 2, 0); + assert src1_of(w, OP_DOT) == 1; + assert src2_of(w, OP_DOT) == 0; + assert src2_of(encode(OP_BIND, 3, 1, 2, 0), OP_BIND) == 0; + assert src2_of(encode(OP_BUNDLE2, 3, 1, 2, 0), OP_BUNDLE2) == 0; +} + +test the_bundle3_raw_word_carries_three_sources { + var w : u32 = bundle3_word(3, 1, 2, 4); + assert w == 34087779; + assert src1_of(w, OP_BUNDLE3) == 1; + assert src2_of(w, OP_BUNDLE3) == 2; + assert v3_of(w, OP_BUNDLE3) == 4; + assert v3_of(w, OP_ADD) == 0; +} + +test sacr_and_the_two_operand_opcodes_carry_no_immediate { + assert imm_of(encode(OP_SACR, 4, 1, 0, 3), OP_SACR) == 0; + assert imm_of(encode(OP_MOV, 4, 1, 0, 3), OP_MOV) == 0; + assert has_imm(OP_SACR) == false; +} + +test the_forms_are_disjoint { + assert has_imm(OP_ADD) == false; + assert has_src2(OP_ADD) == true; + assert has_imm(OP_JMP) == true; + assert has_src2(OP_JMP) == false; + assert has_imm(OP_DOT) == false; + assert has_src2(OP_DOT) == false; + assert has_imm(OP_SYSCALL) == false; +} diff --git a/apps/website/public/t27/files/specs/isa/ternary_gates.t27 b/apps/website/public/t27/files/specs/isa/ternary_gates.t27 index fcd2675ecf..a3c8e92184 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_gates.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_gates.t27 @@ -3,14 +3,14 @@ // Ternary Logic Gates Specification // Ring 063 - Basic ternary logic gates for balanced ternary // Defines AND, OR, NOT, and other fundamental operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryGates { use base::types; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Ternary Values - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Balanced ternary values const TRIT_NEG : i32 = -1; // Negative / False @@ -20,44 +20,44 @@ module TernaryGates { // Gate delay (abstract units) const GATE_DELAY_UNIT : u64 = 1; - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. NOT Gate (Ternary Inverter) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_not(a: i32) -> i32 + // ternary_not(a: i32) → i32 // Ternary NOT (inverts trit value) // TRIT_NEG -> TRIT_POS, TRIT_ZERO -> TRIT_ZERO, TRIT_POS -> TRIT_NEG - fn ternary_not(a: i32) -> i32 { + fn ternary_not(a: i32) → i32 { return -a; } - // ternary_not_with_delay(a: i32) -> GateResult + // ternary_not_with_delay(a: i32) → GateResult // Ternary NOT with delay information - fn ternary_not_with_delay(a: i32) -> GateResult { + fn ternary_not_with_delay(a: i32) → GateResult { return GateResult{ .output = -a, .delay = GATE_DELAY_UNIT, }; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. MIN Gate (Ternary AND) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_min(a: i32, b: i32) -> i32 + // ternary_min(a: i32, b: i32) → i32 // Ternary MIN (acts as AND in balanced ternary) // Result is the minimum of two trits - fn ternary_min(a: i32, b: i32) -> i32 { + fn ternary_min(a: i32, b: i32) → i32 { if (a < b) { return a; } return b; } - // ternary_and(a: i32, b: i32) -> i32 + // ternary_and(a: i32, b: i32) → i32 // Ternary AND (logical AND with three-valued logic) - // Uses Kleene/389ukasiewicz interpretation - fn ternary_and(a: i32, b: i32) -> i32 { + // Uses Kleene/Łukasiewicz interpretation + fn ternary_and(a: i32, b: i32) → i32 { // Map to [0,1,2] for logical AND const a_mapped = a + 1; // -1->0, 0->1, 1->2 const b_mapped = b + 1; @@ -65,50 +65,50 @@ module TernaryGates { return result_mapped - 1; // Map back } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. MAX Gate (Ternary OR) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_max(a: i32, b: i32) -> i32 + // ternary_max(a: i32, b: i32) → i32 // Ternary MAX (acts as OR in balanced ternary) // Result is the maximum of two trits - fn ternary_max(a: i32, b: i32) -> i32 { + fn ternary_max(a: i32, b: i32) → i32 { if (a > b) { return a; } return b; } - // ternary_or(a: i32, b: i32) -> i32 + // ternary_or(a: i32, b: i32) → i32 // Ternary OR (logical OR with three-valued logic) - // Uses Kleene/520ukasiewicz interpretation - fn ternary_or(a: i32, b: i32) -> i32 { + // Uses Kleene/Łukasiewicz interpretation + fn ternary_or(a: i32, b: i32) → i32 { const a_mapped = a + 1; const b_mapped = b + 1; const result_mapped = ternary_max(a_mapped, b_mapped); return result_mapped - 1; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Consensus Gate - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_consensus(a: i32, b: i32, c: i32) -> i32 + // ternary_consensus(a: i32, b: i32, c: i32) → i32 // Consensus gate: returns value if all equal, else TRIT_ZERO - fn ternary_consensus(a: i32, b: i32, c: i32) -> i32 { + fn ternary_consensus(a: i32, b: i32, c: i32) → i32 { if (a == b and b == c) { return a; } return TRIT_ZERO; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. Majority Gate - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_majority(a: i32, b: i32, c: i32) -> i32 + // ternary_majority(a: i32, b: i32, c: i32) → i32 // Majority gate: returns the most common value - fn ternary_majority(a: i32, b: i32, c: i32) -> i32 { + fn ternary_majority(a: i32, b: i32, c: i32) → i32 { // Count occurrences var neg_count : i32 = 0; var zero_count : i32 = 0; @@ -135,13 +135,13 @@ module TernaryGates { return TRIT_ZERO; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. Any Gate - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_any(a: i32, b: i32, c: i32) -> i32 + // ternary_any(a: i32, b: i32, c: i32) → i32 // Any gate: returns TRIT_POS if any input is TRIT_POS - fn ternary_any(a: i32, b: i32, c: i32) -> i32 { + fn ternary_any(a: i32, b: i32, c: i32) → i32 { if (a == TRIT_POS or b == TRIT_POS or c == TRIT_POS) { return TRIT_POS; } @@ -151,13 +151,13 @@ module TernaryGates { return TRIT_ZERO; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. All Gate - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_all(a: i32, b: i32, c: i32) -> i32 + // ternary_all(a: i32, b: i32, c: i32) → i32 // All gate: returns TRIT_NEG if all inputs are TRIT_NEG - fn ternary_all(a: i32, b: i32, c: i32) -> i32 { + fn ternary_all(a: i32, b: i32, c: i32) → i32 { if (a == TRIT_NEG and b == TRIT_NEG and c == TRIT_NEG) { return TRIT_NEG; } @@ -167,9 +167,9 @@ module TernaryGates { return TRIT_ZERO; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 9. Data Structures - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct GateResult { output : i32, @@ -184,9 +184,9 @@ module TernaryGates { row_count : usize, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 10. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test ternary_not_inversion assert ternary_not(TRIT_NEG) == TRIT_POS @@ -259,9 +259,9 @@ module TernaryGates { assert ternary_all(TRIT_POS, TRIT_POS, TRIT_POS) == TRIT_POS assert ternary_all(TRIT_POS, TRIT_POS, TRIT_ZERO) == TRIT_ZERO - // ===================================================== + // ═════════════════════════════════════════════════════ // 11. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant not_double_inversion // Applying NOT twice returns original value @@ -354,9 +354,9 @@ module TernaryGates { i = i + 1; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 12. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench ternary_not_performance // Measure: cycles to compute 1000 NOT operations diff --git a/apps/website/public/t27/files/specs/isa/ternary_memory.t27 b/apps/website/public/t27/files/specs/isa/ternary_memory.t27 index 7be1904b0c..9f815cf6d7 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_memory.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_memory.t27 @@ -3,14 +3,14 @@ // Ternary Memory Specification // Ring 089 - Memory operations for ternary architecture // Load/store operations with ternary address and data -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ISAMemoryOps { use base::types; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Memory Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Trit values for memory operations const TRIT_NEG : i32 = -1; @@ -31,9 +31,9 @@ module ISAMemoryOps { const PERM_WRITE : u8 = 0x2; // Write permission const PERM_EXEC : u8 = 0x4; // Execute permission - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. Memory Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // mem_load(memory: []TernaryWord, addr: u32) -> TernaryWord // Load word from memory at address @@ -84,9 +84,9 @@ module ISAMemoryOps { return mem_store(memory, addr, value); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Block Memory Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // mem_load_block(memory: []TernaryWord, base_addr: u32, count: usize, dest: []TernaryWord) -> bool // Load block of memory (count words) from base_addr @@ -134,9 +134,9 @@ module ISAMemoryOps { return true; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Stack Operations (Memory-based) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Stack grows downward from high memory const STACK_BASE : u32 = MEM_SIZE - 1; @@ -169,9 +169,9 @@ module ISAMemoryOps { return value; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Address Translation (Basic) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // virt_to_phys(virt_addr: u32, base: u32, limit: u32) -> u32 // Simple virtual-to-physical address translation @@ -193,9 +193,9 @@ module ISAMemoryOps { return phys_addr; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Memory Protection - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // mem_check_perm(addr: u32, perm: u8, protection_table: []u8) -> bool // Check if address has required permission @@ -218,9 +218,9 @@ module ISAMemoryOps { return true; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Memory Copy Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // mem_copy(dst: []TernaryWord, dst_addr: u32, src: []TernaryWord, src_addr: u32, count: usize) -> bool // Copy count words from source to destination @@ -267,9 +267,9 @@ module ISAMemoryOps { return true; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 8. Word Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // word_extract_trit(word: TernaryWord, trit_index: usize) -> i32 // Extract single trit from word (0 = least significant) @@ -310,9 +310,9 @@ module ISAMemoryOps { return result; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test mem_load_valid_address given memory = []TernaryWord{TernaryWord{.raw = 0}, TernaryWord{.raw = 0x123}} diff --git a/apps/website/public/t27/files/specs/isa/ternary_shift.t27 b/apps/website/public/t27/files/specs/isa/ternary_shift.t27 index c34d3de73d..8275e89cbd 100644 --- a/apps/website/public/t27/files/specs/isa/ternary_shift.t27 +++ b/apps/website/public/t27/files/specs/isa/ternary_shift.t27 @@ -3,14 +3,14 @@ // Ternary Shift and Rotate Operations Specification // Ring 067 - Bitwise/Tritwise shift and rotate operations // Defines how ternary words are shifted and rotated -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module TernaryShift { use base::types; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Shift Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Trit values const TRIT_NEG : i32 = -1; @@ -25,13 +25,13 @@ module TernaryShift { const SHIFT_LEFT : u8 = 0; const SHIFT_RIGHT : u8 = 1; - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Shift Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_shift_left(word: []i32, shift: usize, len: usize) -> bool + // ternary_shift_left(word: []i32, shift: usize, len: usize) → bool // Shift word left by N trits, fill with zero - fn ternary_shift_left(word: []i32, shift: usize, len: usize) -> bool { + fn ternary_shift_left(word: []i32, shift: usize, len: usize) → bool { if (shift >= len) { return false; // Would shift everything out } @@ -52,9 +52,9 @@ module TernaryShift { return true; } - // ternary_shift_right(word: []i32, shift: usize, len: usize) -> bool + // ternary_shift_right(word: []i32, shift: usize, len: usize) → bool // Shift word right by N trits, fill with zero - fn ternary_shift_right(word: []i32, shift: usize, len: usize) -> bool { + fn ternary_shift_right(word: []i32, shift: usize, len: usize) → bool { if (shift >= len) { return false; // Would shift everything out } @@ -77,13 +77,13 @@ module TernaryShift { return true; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Rotate Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_rotate_left(word: []i32, shift: usize, len: usize) -> void + // ternary_rotate_left(word: []i32, shift: usize, len: usize) → void // Rotate word left by N trits (circular shift) - fn ternary_rotate_left(word: []i32, shift: usize, len: usize) -> void { + fn ternary_rotate_left(word: []i32, shift: usize, len: usize) → void { if (len == 0) { return; } @@ -112,9 +112,9 @@ module TernaryShift { } } - // ternary_rotate_right(word: []i32, shift: usize, len: usize) -> void + // ternary_rotate_right(word: []i32, shift: usize, len: usize) → void // Rotate word right by N trits (circular shift) - fn ternary_rotate_right(word: []i32, shift: usize, len: usize) -> void { + fn ternary_rotate_right(word: []i32, shift: usize, len: usize) → void { if (len == 0) { return; } @@ -143,13 +143,13 @@ module TernaryShift { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Arithmetic Shift (Signed Shift) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ternary_arithmetic_shift_right(word: []i32, shift: usize, len: usize) -> bool + // ternary_arithmetic_shift_right(word: []i32, shift: usize, len: usize) → bool // Arithmetic shift right: preserves sign bit - fn ternary_arithmetic_shift_right(word: []i32, shift: usize, len: usize) -> bool { + fn ternary_arithmetic_shift_right(word: []i32, shift: usize, len: usize) → bool { if (len == 0) { return false; } @@ -180,13 +180,13 @@ module TernaryShift { return true; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Bit/Trit Extraction - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // extract_trits(word: []i32, start: usize, count: usize, result: []i32) -> bool + // extract_trits(word: []i32, start: usize, count: usize, result: []i32) → bool // Extract N trits starting from position S - fn extract_trits(word: []i32, start: usize, count: usize, result: []i32) -> bool { + fn extract_trits(word: []i32, start: usize, count: usize, result: []i32) → bool { if (start + count > word.len) { return false; } @@ -200,9 +200,9 @@ module TernaryShift { return true; } - // insert_trits(word: []i32, start: usize, count: usize, values: []i32) -> bool + // insert_trits(word: []i32, start: usize, count: usize, values: []i32) → bool // Insert N trits starting from position S - fn insert_trits(word: []i32, start: usize, count: usize, values: []i32) -> bool { + fn insert_trits(word: []i32, start: usize, count: usize, values: []i32) → bool { if (start + count > word.len) { return false; } @@ -216,9 +216,9 @@ module TernaryShift { return true; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test ternary_shift_left_basic var word : [5]i32 = [_]i32{TRIT_POS, TRIT_ZERO, TRIT_NEG, TRIT_POS, TRIT_ZERO}; @@ -290,9 +290,9 @@ module TernaryShift { assert word[2] == TRIT_NEG assert word[3] == TRIT_NEG - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant shift_left_zero_fill // Left shift should fill with zeros @@ -373,9 +373,9 @@ module TernaryShift { assert word_pos[4] == TRIT_POS assert word_neg[4] == TRIT_NEG - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench shift_left_performance // Measure: cycles to perform 1000 left shifts diff --git a/apps/website/public/t27/files/specs/isa/tri27_bytecode.t27 b/apps/website/public/t27/files/specs/isa/tri27_bytecode.t27 new file mode 100644 index 0000000000..83c08fac82 --- /dev/null +++ b/apps/website/public/t27/files/specs/isa/tri27_bytecode.t27 @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/isa/tri27_bytecode.t27 -- the .tbin container as the pinned Trinity loader reads it +; S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer has one loader, +; src/tri27/emu/loader.zig at 976df517, and two assemblers that write two different containers; +; three documents describe a third and a fourth. This file states the container the loader +; accepts and every rule by which it rejects a file -- truncated, wrong magic, unsupported +; version, unknown section, code that does not fit memory, no code at all -- as functions the C +; backend executes, and records what the loader does with what it accepts (where the code lands, +; where the entry point is left). tools/trinity_tri27.py composes these functions into a loader +; and replays the loader vectors of conformance/trinity/tri27_programs.json. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module Tri27Bytecode; + +pub const KIND : str = "isa-bytecode"; +pub const ID : str = "isa/tri27_bytecode"; +pub const NAME : str = "The .tbin container of the pinned Trinity TRI-27 loader"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const OWNER_MODULE : str = "src/tri27/emu/loader.zig"; +pub const OWNER_LINES : str = "MAGIC :10; VERSION :13; SectionType :16-21; LoadError :24-32; validateMagic :35-48; validateVersion :51-55; load :58-184"; +pub const WRITER_MODULE : str = "src/tri27/emu/tri_asm.zig"; +pub const WRITER_LINES : str = "header :633-645, size patched :686-689, label addresses start at word 3 :600"; +; --- The header ----------------------------------------------------------------------------- +pub const MAGIC : u32 = 1414678834; +pub const MAGIC_HEX : str = "0x54524932"; +pub const MAGIC_BYTES : [4]u32 = [50, 73, 82, 84]; +pub const MAGIC_TEXT : str = "2IRT in file order; the source comment says TRI2"; +pub const VERSION : u32 = 1; +pub const HEADER_BYTES : u32 = 6; +pub const HEADER_LAYOUT : str = "magic (four bytes, little-endian u32) + version (one byte) + section count (one byte)"; +; --- Sections ------------------------------------------------------------------------------- +pub const SECTION_CODE : u32 = 1; +pub const SECTION_CONSTANTS : u32 = 2; +pub const SECTION_DATA : u32 = 3; +pub const SECTION_BSS : u32 = 4; +pub const SECTION_NAMES : [4]str = ["CODE", "CONSTANTS", "DATA", "BSS"]; +pub const CODE_HEADER_BYTES : u32 = 4; +pub const CODE_HEADER_LAYOUT : str = "id (1) + padding (1) + size (u16 little-endian); the payload follows; four payload bytes make one instruction word, a trailing group shorter than four bytes is dropped"; +pub const CONSTANTS_HEADER_BYTES : u32 = 1; +pub const CONSTANTS_SKIP : u32 = 16; +pub const CONSTANTS_LAYOUT : str = "id (1) + sixteen skipped bytes: the loader reads the count from the byte at its offset, which is the section id 2, so it always skips 2 * 8 bytes; a count byte written after the id is the first skipped byte; the values come from the f64 array the caller passes and only the first three reach cpu.f as the high sixteen bits of bits 32..47"; +pub const DATA_HEADER_BYTES : u32 = 3; +pub const DATA_LAYOUT : str = "id (1) + size (u16 little-endian); each payload byte is written to one memory word starting at word index code_size (a byte count used as a word index)"; +pub const BSS_HEADER_BYTES : u32 = 3; +pub const BSS_LAYOUT : str = "id (1) + size (u16 little-endian); the size is read and ignored"; +pub const CODE_START_WORD : u32 = 3; +pub const CODE_PLACEMENT : str = "the code payload is repacked four bytes per word from word 3 on; words 0..2 keep the zeros of a fresh CPU"; +; --- What the loader leaves behind ---------------------------------------------------------- +pub const LOAD_PC : u32 = 0; +pub const LOAD_SP : u32 = 19682; +pub const LOAD_FP : u32 = 0; +pub const MEMORY_WORDS : u32 = 19683; +pub const ENTRY_RULE : str = "pc = 0 after load, so three NOP words (the zeros of words 0..2) run before the code; CPUState.init and resetExecution set pc = 3 instead, and `tri tri27 run` copies the whole file to byte 0 and starts at 3"; +; --- Rejections ---------------------------------------------------------------------------- +pub const LOAD_ERROR_NAMES : [7]str = ["InvalidMagic", "InvalidVersion", "CorruptHeader", "Truncated", "SectionMissing", "InvalidSection", "DataTooLarge"]; +pub const LOAD_ERROR_RETURNED : [7]bool = [true, true, false, true, true, true, true]; +pub const LOAD_OK : u32 = 0; +pub const LOAD_TRUNCATED : u32 = 1; +pub const LOAD_INVALID_MAGIC : u32 = 2; +pub const LOAD_INVALID_VERSION : u32 = 3; +pub const LOAD_INVALID_SECTION : u32 = 4; +pub const LOAD_DATA_TOO_LARGE : u32 = 5; +pub const LOAD_SECTION_MISSING : u32 = 6; +pub const LOAD_STATUS_NAMES : [7]str = ["ok", "Truncated", "InvalidMagic", "InvalidVersion", "InvalidSection", "DataTooLarge", "SectionMissing"]; +pub const REJECTION_ORDER : str = "a file shorter than six bytes is Truncated before the magic is read; magic before version; each section header and payload against the file length before the memory; the memory check compares the FILE offset plus the size with the memory word count; SectionMissing is decided after every section, once pc and sp have already been set"; +; --- The writer's container ----------------------------------------------------------------- +pub const WRITER_HEADER_BYTES : u32 = 12; +pub const WRITER_HEADER : [12]u32 = [50, 73, 82, 84, 1, 1, 1, 0, 0, 0, 0, 0]; +pub const WRITER_HEADER_RULE : str = "magic, version 1, one section, CODE id, padding, size (patched into bytes 8 and 9), two padding bytes; the code follows at byte 12 and its labels count from word 3; the loader takes the payload from byte 10, so the two padding bytes become the first two bytes of the first loaded word and every loaded word is shifted by two bytes"; +pub const LOADER_NATIVE_HEADER_BYTES : u32 = 10; +pub const LOADER_NATIVE_RULE : str = "a container the loader reads as written: the six-byte header, the four-byte CODE header, the code; no writer in the tree produces it"; +; --- Findings ------------------------------------------------------------------------------ +pub const FINDING_COUNT : u32 = 8; +pub const FINDINGS : [8]str = ["src/tri27/emu/asm_parser.zig, the assembler behind `tri tri27 assemble`, writes no header at all; `tri tri27 run` then starts at word 3 and skips the first three instructions", "src/tri27/emu/specs/tbin_format.md describes a twelve-byte header of three u32 fields, version 0x00010001 and CODE id 4; the loader reads six bytes, version 1 and CODE id 1", "docs/tri27_cli.md says a program has no header and starts at byte 0; that is true of asm_parser.zig's output and false of the loader's expectations", "the loader's memory check adds the file offset to the section size before comparing with the word count 19683, so the largest accepted code payload depends on where it sits in the file", "CorruptHeader is declared and never returned; `total_constants = code[4]` reads the version byte and discards it", "no .tbin file and no trace file exists in the consumer's tree at the pin; the only containers ever loaded are the ones tri_asm.zig writes inside the tests", "the writer and the loader disagree by two bytes: tri_asm.zig pads its header to twelve bytes, loader.load reads the code from byte ten, so a written container loads shifted and its first word decodes from two padding bytes; the owner's tests never load a written container (they copy it to byte 0 and run from word 3)", "the CONSTANTS parser reads the section id as the constant count and skips sixteen bytes, so the documented layout (id, count, count * 8 bytes) is misread: with one constant the loader lands nine bytes into the code that follows"]; +pub const ENABLED : bool = true; + +; --- Rules ------------------------------------------------------------------------------------ + +pub fn magic_word(b0: u32, b1: u32, b2: u32, b3: u32) -> u32 { + return b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); +} + +pub fn magic_ok(b0: u32, b1: u32, b2: u32, b3: u32) -> bool { + return magic_word(b0, b1, b2, b3) == MAGIC; +} + +pub fn version_ok(version: u32) -> bool { + return version == VERSION; +} + +pub fn header_status(len: u32, b0: u32, b1: u32, b2: u32, b3: u32, version: u32) -> u32 { + if (len < HEADER_BYTES) { return LOAD_TRUNCATED; } + if (magic_ok(b0, b1, b2, b3) == false) { return LOAD_INVALID_MAGIC; } + if (version_ok(version) == false) { return LOAD_INVALID_VERSION; } + return LOAD_OK; +} + +pub fn section_kind_ok(id: u32) -> bool { + if (id == SECTION_CODE) { return true; } + if (id == SECTION_CONSTANTS) { return true; } + if (id == SECTION_DATA) { return true; } + if (id == SECTION_BSS) { return true; } + return false; +} + +pub fn section_header_bytes(id: u32) -> u32 { + if (id == SECTION_CODE) { return CODE_HEADER_BYTES; } + if (id == SECTION_CONSTANTS) { return CONSTANTS_HEADER_BYTES; } + if (id == SECTION_DATA) { return DATA_HEADER_BYTES; } + if (id == SECTION_BSS) { return BSS_HEADER_BYTES; } + return 0; +} + +pub fn fits_file(offset: u32, bytes: u32, len: u32) -> bool { + return offset + bytes <= len; +} + +pub fn size_field(lo: u32, hi: u32) -> u32 { + return lo | (hi << 8); +} + +pub fn code_fits_memory(offset_after_header: u32, size: u32, memory_words: u32) -> bool { + return offset_after_header + size <= memory_words; +} + +pub fn code_words(size: u32) -> u32 { + return size / 4; +} + +pub fn code_word_index(i: u32) -> u32 { + return CODE_START_WORD + i; +} + +pub fn constants_payload(count_byte: u32) -> u32 { + return count_byte * 8; +} + +pub fn constants_skip_after_id() -> u32 { + return constants_payload(SECTION_CONSTANTS); +} + +pub fn data_word_index(code_size: u32, i: u32) -> u32 { + return code_size + i; +} + +pub fn data_fits_memory(code_size: u32, size: u32, memory_words: u32) -> bool { + return code_size + size <= memory_words; +} + +pub fn code_present(code_size: u32) -> bool { + return code_size != 0; +} + +invariant the_writer_header_is_the_loader_header_plus_a_code_header_plus_padding { WRITER_HEADER_BYTES == HEADER_BYTES + CODE_HEADER_BYTES + 2 } +invariant the_loader_stack_pointer_is_the_last_word { LOAD_SP == MEMORY_WORDS - 1 } +invariant the_writer_header_exceeds_the_loader_header_by_two { WRITER_HEADER_BYTES == LOADER_NATIVE_HEADER_BYTES + 2 } +invariant the_magic_is_its_bytes { MAGIC == 50 + 73 * 256 + 82 * 65536 + 84 * 16777216 } + +test the_magic_is_read_little_endian { + assert magic_word(50, 73, 82, 84) == MAGIC; + assert magic_ok(50, 73, 82, 84) == true; + assert magic_ok(84, 82, 73, 50) == false; +} + +test the_header_is_rejected_in_order { + assert header_status(5, 50, 73, 82, 84, 1) == LOAD_TRUNCATED; + assert header_status(6, 84, 82, 73, 50, 1) == LOAD_INVALID_MAGIC; + assert header_status(6, 50, 73, 82, 84, 2) == LOAD_INVALID_VERSION; + assert header_status(6, 50, 73, 82, 84, 0) == LOAD_INVALID_VERSION; + assert header_status(12, 50, 73, 82, 84, 1) == LOAD_OK; +} + +test only_four_section_kinds_exist { + assert section_kind_ok(1) == true; + assert section_kind_ok(4) == true; + assert section_kind_ok(0) == false; + assert section_kind_ok(5) == false; + assert section_header_bytes(SECTION_CODE) == 4; + assert section_header_bytes(SECTION_DATA) == 3; + assert section_header_bytes(9) == 0; +} + +test code_is_packed_four_bytes_per_word_from_word_three { + assert size_field(16, 0) == 16; + assert size_field(0, 1) == 256; + assert code_words(16) == 4; + assert code_words(13) == 3; + assert code_word_index(0) == 3; + assert code_word_index(4) == 7; +} + +test the_memory_check_counts_the_file_offset { + assert code_fits_memory(10, 19673, MEMORY_WORDS) == true; + assert code_fits_memory(10, 19674, MEMORY_WORDS) == false; + assert fits_file(6, 4, 10) == true; + assert fits_file(6, 4, 9) == false; + assert data_fits_memory(19680, 3, MEMORY_WORDS) == true; + assert data_fits_memory(19680, 4, MEMORY_WORDS) == false; +} + +test the_other_sections_are_measured_but_not_loaded { + assert constants_payload(3) == 24; + assert constants_skip_after_id() == CONSTANTS_SKIP; + assert data_word_index(16, 2) == 18; + assert code_present(0) == false; + assert code_present(4) == true; +} diff --git a/apps/website/public/t27/files/specs/isa/tri27_machine.t27 b/apps/website/public/t27/files/specs/isa/tri27_machine.t27 new file mode 100644 index 0000000000..1bc7165e55 --- /dev/null +++ b/apps/website/public/t27/files/specs/isa/tri27_machine.t27 @@ -0,0 +1,460 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/isa/tri27_machine.t27 -- the TRI-27 machine as the pinned Trinity emulator executes it +; S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's selected runtime for TRI-27 +; programs is src/tri27/emu/executor.zig with cpu_state.zig, tri_cpu.zig and tri_memory.zig at +; 976df517: the only executor the owner's tests drive (test_comprehensive.zig, test_golden.zig, +; smoke_tests.zig); tri_exec.zig is a dead twin. This file states its register file, memory, +; fetch rule, entry points, flags, the numeric rule of every executed opcode, the control-flow and +; stack rules, the execution budget, the error set and how each error reaches the process, and +; the host boundary. Everything that decides a value is a function the C backend executes; +; tools/trinity_tri27.py composes them into a reference interpreter and replays the golden +; programs and the negatives of conformance/trinity/tri27_programs.json through the generated C. +; The status codes are this spec's own numbering: the owner's error set has no ordinals, and +; three of its halts are silent. The canonical register alphabet, control-flow and memory +; contracts of this directory (registers.t27, ternary_control_flow.t27, ternary_memory.t27) +; describe a machine the consumer does not run; they are cited, not copied. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module Tri27Machine; + +pub const KIND : str = "isa-machine"; +pub const ID : str = "isa/tri27_machine"; +pub const NAME : str = "The TRI-27 machine of the pinned Trinity emulator"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const OWNER_MODULES : [4]str = ["src/tri27/emu/executor.zig", "src/tri27/emu/cpu_state.zig", "src/tri27/emu/tri_cpu.zig", "src/tri27/emu/tri_memory.zig"]; +pub const OWNER_LINES : str = "ExecError :19-27; execute :32-897; estimateCycles :903-922; run :927-954; CPUState :86-178; Flags :19-25; Trit27 tri_cpu.zig:12-38"; +pub const ENCODING_SPEC : str = "specs/isa/ternary_encoding.t27"; +pub const BYTECODE_SPEC : str = "specs/isa/tri27_bytecode.t27"; +; --- State ---------------------------------------------------------------------------------- +pub const REGISTER_COUNT : u32 = 27; +pub const REGISTER_TYPE : str = "i64 (Trit27.trits); nothing constrains a register to 27 trits or to a trit"; +pub const GF16_REGISTERS : u32 = 8; +pub const VECTOR_REGISTERS : u32 = 16; +pub const VECTOR_LANES : u32 = 16; +pub const MEMORY_WORDS : u32 = 19683; +pub const WORD_BYTES : u32 = 8; +pub const MEMORY_BYTES : u32 = 157464; +pub const MEMORY_LEN_UNIT : str = "memory_len counts words (19683) and is compared with byte offsets by CALL and STI; the byte view is 157464 bytes"; +pub const INSTRUCTION_BYTES : u32 = 4; +pub const FETCH_RULE : str = "byte address pc * 4; four bytes little-endian; a fetch past the byte view sets H and stops the run without an error"; +pub const ENTRY_PC_INIT : u32 = 3; +pub const ENTRY_SP_INIT : u32 = 0; +pub const ENTRY_PC_LOADER : u32 = 0; +pub const ENTRY_SP_LOADER : u32 = 19682; +pub const ENTRY_FP : u32 = 0; +pub const ENTRY_RULE : str = "CPUState.init and resetExecution: pc 3, sp 0; loader.load: pc 0, sp 19682; `tri tri27 run` copies the file to byte 0 and keeps pc 3"; +pub const REGISTER_INIT : str = "t27 and v are left undefined by CPUState.init; f is zeroed; the test that asserts zeroed registers reads undefined memory"; +pub const FLAG_Z_BIT : u32 = 0; +pub const FLAG_N_BIT : u32 = 1; +pub const FLAG_V_BIT : u32 = 2; +pub const FLAG_H_BIT : u32 = 3; +pub const FLAG_V_WRITTEN : bool = false; +pub const FLAG_RULE : str = "every value-writing opcode sets Z = (result == 0) and N = (result < 0); PHI_CONST, PI_CONST, E_CONST clear both; jumps, CALL, RET, HALT, SYSCALL leave the flags; V is never written"; +; --- Numbers -------------------------------------------------------------------------------- +pub const MODULUS : i64 = 19683; +pub const MODULUS_NOTE : str = "3^9; tri_cpu.zig and executor.zig label it 3^27, and 3^27 = 7625597484987 appears nowhere in the tree"; +pub const ARITHMETIC_RULE : str = "ADD, SUB, MUL, INC, DEC, SHL, SHR, AND, OR, XOR, NOT, EXP, SIN compute on i64 without reduction; DOT, BIND, SACR modes 1, 2 and 4 reduce modulo 19683 with a non-negative result; BUNDLE2 truncates toward zero"; +pub const PHI_SCALED : i64 = 9842; +pub const PI_SCALED : i64 = 19088; +pub const E_SCALED : i64 = 16514; +pub const SACRED_SCALE : i64 = 6075; +pub const FIXED_SCALE : i64 = 1000; +pub const SACR_MODES : [4]u32 = [1, 2, 3, 4]; +pub const SACR_MODE_NAMES : [4]str = ["add mod 19683", "mul mod 19683", "div truncated (b == 0 is DivisionByZero)", "pow mod 19683"]; +pub const SACR_DEFAULT : str = "any other mode computes add mod 19683; tri27_isa.md documents modes 0..4 with 4 as sine"; +pub const SACR_OPERANDS : str = "a = t[src1], b = t[dst]; dst is both an operand and the destination"; +; --- Budget --------------------------------------------------------------------------------- +pub const MAX_INSTRUCTIONS : u32 = 100000; +pub const BUDGET_RULE : str = "run stops when instructions_executed reaches 100000 and sets H; nothing distinguishes this from HALT; tri_emu_main.runEmulator calls execute directly and is unbounded unless --max-cycles is given"; +pub const CYCLES_RULE : str = "estimateCycles is a table; run never adds to cpu.cycles, so `tri tri27 run` prints 0 cycles"; +; --- Errors and how they leave -------------------------------------------------------------- +pub const ERROR_NAMES : [7]str = ["InvalidRegister", "InvalidMemory", "DivisionByZero", "StackOverflow", "StackUnderflow", "InvalidOpcode", "Halted"]; +pub const ERROR_RETURNED : [7]bool = [true, true, true, true, false, true, false]; +pub const STATUS_HALTED : u32 = 0; +pub const STATUS_INVALID_REGISTER : u32 = 1; +pub const STATUS_INVALID_MEMORY : u32 = 2; +pub const STATUS_DIVISION_BY_ZERO : u32 = 3; +pub const STATUS_STACK_OVERFLOW : u32 = 4; +pub const STATUS_STACK_UNDERFLOW : u32 = 5; +pub const STATUS_INVALID_OPCODE : u32 = 6; +pub const STATUS_HALTED_ERROR : u32 = 7; +pub const STATUS_FETCH_OUT_OF_RANGE : u32 = 8; +pub const STATUS_BUDGET_EXHAUSTED : u32 = 9; +pub const STATUS_RET_UNDERFLOW : u32 = 10; +pub const STATUS_HOST_IO_NOT_REPLAYED : u32 = 11; +pub const STATUS_NAMES : [12]str = ["halted", "InvalidRegister", "InvalidMemory", "DivisionByZero", "StackOverflow", "StackUnderflow", "InvalidOpcode", "Halted", "fetch out of range", "budget exhausted", "RET underflow", "host I/O not replayed"]; +pub const STATUS_OWNER_SIGNAL : [12]str = ["flags.H after HALT", "ExecError", "ExecError", "ExecError", "ExecError", "declared, never returned", "ExecError (ADD3, SUB3, CMP3)", "declared, never returned", "flags.H, silent", "flags.H, silent", "flags.H, silent", "this spec does not replay STR_ and FILE_ opcodes"]; +pub const STATUS_NONZERO_RULE : str = "every status other than halted is nonzero in the replay; the owner reports 8, 9 and 10 as a plain halt"; +pub const EXIT_SUCCESS : u32 = 0; +pub const EXIT_ERR : u32 = 1; +pub const EXIT_USAGE : u32 = 64; +pub const EXIT_NO_INPUT : u32 = 66; +pub const EXIT_OS_ERR : u32 = 71; +pub const EXIT_IO_ERROR : u32 = 74; +pub const EXIT_NO_PERM : u32 = 77; +pub const EXIT_RULE : str = "src/tri/main.zig exitCodeFromError: FileNotFound 66, AccessDenied 77, OutOfMemory 71, InvalidArgument 64, NotOpen or PipeFail 74, any other error 1; an ExecError from `tri tri27 run` reaches the process as 1; a missing argument or an unknown subcommand returns 0; the table 0..4 printed by tri_emu_main.printUsage is not implemented"; +; --- Host boundary -------------------------------------------------------------------------- +pub const SYSCALL_RULE : str = "SYSCALL (0x88) advances pc and does nothing: no syscall number space, no argument convention, no dispatcher; neither assembler can emit it"; +pub const HOST_IO_OPCODES : [6]str = ["STR_LOAD", "STR_CONCAT", "STR_PRINT", "FILE_READ", "FILE_WRITE", "FILE_EXISTS"]; +pub const HOST_IO_RULE : str = "STR_PRINT writes the u16-length-prefixed string to stderr; FILE_READ and FILE_WRITE open the path found in guest memory through std.fs.cwd(), the path must begin with '/', FILE_READ reads at most 1024 bytes; FILE_EXISTS reports through Z; every failure is InvalidMemory; nothing is sandboxed"; +pub const HOST_IO_REPLAYED : bool = false; +; --- Findings ------------------------------------------------------------------------------ +pub const FINDING_COUNT : u32 = 15; +pub const FINDINGS : [15]str = ["after loader.load the first CALL fails with StackOverflow: sp is 19682 and the guard compares sp + 4 with the word count 19683", "no encodable LD, ST or STI can reach InvalidMemory: the largest fifteen-bit immediate addresses byte 65540 of 157464; only the STR_ and FILE_ opcodes reach it", "the run loop halts silently on the instruction budget, on a fetch past memory and on RET with sp < 4; StackUnderflow and Halted are declared and never returned", "ADD, SUB, MUL, INC, DEC never reduce; an i64 overflow is a panic in the owner, undefined in the generated C, and no golden program approaches it", "SHL shifts by the absolute immediate without a bound; a shift of 64 or more is a panic in the owner; this spec returns 0 there and the replay never encodes one", "SACR mode 4 raises to an integer power: a negative exponent or an overflow is a panic in the owner; this spec returns 0 for a negative exponent", "NOT complements t[dst] and ignores src1; BUNDLE3 reads its third register from the field the encoder never writes", "LD scales its immediate by four (a word index) while ST, STI and the string opcodes use it as a byte address", "STI stores clamp(imm, -1, 1) at byte |imm|: the immediate is both the value and the address", "the emitted VM of src/tri27/emit_zig.zig has a sixteen-entry stack, 256 memory words and its own flag bits (H 0, V 2, C 5, Z 6, N 7); it is a template, not this machine", "src/tri27/emu/tri_exec.zig carries a second CPUState with an ip field and a second execute; nothing imports it", "the calling convention and the memory map of src/tri27/emu/specs/tri27_isa.md (t4-t7 arguments, t8 return, stack at 0x8000) exist in no code path", "CALL pushes the address of the CALL itself (pc is not advanced before the push) and RET returns to it: every CALL/RET pair is an endless loop with sp alternating between two values, stopped only by the instruction budget; no subroutine can return past its call site, and no owner test executes a CALL", "loader.load writes each code word into an eight-byte memory word from word 3 on, while run fetches four-byte units at pc * 4: a loaded program executes a NOP between every two of its instructions and its absolute jump targets, counted in four-byte units from 3, miss; the path the owner's tests drive copies the file to byte 0 and starts at 3 (test_golden.zig, `tri tri27 run`); loader.load is used only by tri_emu_main.zig, which has no build target", "SACR takes its mode from the immediate, which the decoder never reads for SACR (specs/isa/ternary_encoding.t27 SACR_MODE_RULE): every decoded SACR adds modulo 19683; modes 2, 3 and 4 are executed only from Instruction values the owner's tests construct"]; +pub const ENABLED : bool = true; + +; --- Registers and operands ----------------------------------------------------------------- + +pub fn registers_valid(dst: u32, src1: u32, src2: u32, cond: u32) -> bool { + if (dst >= REGISTER_COUNT) { return false; } + if (src1 >= REGISTER_COUNT) { return false; } + if (src2 >= REGISTER_COUNT) { return false; } + if (cond >= REGISTER_COUNT) { return false; } + return true; +} + +pub fn abs_imm(imm: i32) -> u32 { + if (imm < 0) { return (0 - imm) as u32; } + return imm as u32; +} + +pub fn clamp_trit(v: i64) -> i64 { + if (v > 1) { return 1; } + if (v < -1) { return -1; } + return v; +} + +pub fn flag_z(r: i64) -> bool { + return r == 0; +} + +pub fn flag_n(r: i64) -> bool { + return r < 0; +} + +; --- Arithmetic ----------------------------------------------------------------------------- + +pub fn alu_add(a: i64, b: i64) -> i64 { + return a + b; +} + +pub fn alu_sub(a: i64, b: i64) -> i64 { + return a - b; +} + +pub fn alu_mul(a: i64, b: i64) -> i64 { + return a * b; +} + +pub fn alu_div_defined(b: i64) -> bool { + return b != 0; +} + +pub fn alu_div(a: i64, b: i64) -> i64 { + return a / b; +} + +pub fn alu_inc(a: i64) -> i64 { + return a + 1; +} + +pub fn alu_dec(a: i64) -> i64 { + return a - 1; +} + +pub fn exp_fixed(x: i64) -> i64 { + var xs : i64 = x * FIXED_SCALE; + var x2 : i64 = (xs * xs) / FIXED_SCALE; + var x3 : i64 = (x2 * xs) / FIXED_SCALE; + var x4 : i64 = (x3 * xs) / FIXED_SCALE; + return FIXED_SCALE + xs + x2 / 2 + x3 / 6 + x4 / 24; +} + +pub fn sin_fixed(x: i64) -> i64 { + var xs : i64 = x * FIXED_SCALE; + var x2 : i64 = (xs * xs) / FIXED_SCALE; + var x3 : i64 = (x2 * xs) / FIXED_SCALE; + var x5 : i64 = (x3 * x2) / FIXED_SCALE; + var x7 : i64 = (x5 * x2) / FIXED_SCALE; + return xs - x3 / 6 + x5 / 120 - x7 / 5040; +} + +; --- Logic and shifts ----------------------------------------------------------------------- + +pub fn and_bits(a: i64, b: i64) -> i64 { + return a & b; +} + +pub fn or_ternary(a: i64, b: i64) -> i64 { + if (a > 0 or b > 0) { return a; } + if (a < 0 and b < 0) { return b; } + return a; +} + +pub fn xor_ternary(a: i64, b: i64) -> i64 { + if (a != 0 and b != 0) { return a; } + if (a == 0 or b == 0) { return b; } + return a; +} + +pub fn not_bits(a: i64) -> i64 { + return ~a; +} + +pub fn shl_bits(a: i64, n: u32) -> i64 { + if (n > 63) { return 0; } + return a << n; +} + +pub fn shr_bits(a: i64, n: u32) -> i64 { + var k : u32 = n; + if (k > 63) { k = 63; } + return a >> k; +} + +; --- Modular and VSA-named scalar operations ------------------------------------------------- + +pub fn mod_pos(a: i64, m: i64) -> i64 { + var r : i64 = a % m; + if (r < 0) { r = r + m; } + return r; +} + +pub fn dot_mod(a: i64, b: i64) -> i64 { + return mod_pos(a * b, MODULUS); +} + +pub fn bind_mod(a: i64, b: i64) -> i64 { + if (a == 0) { return b; } + if (b == 0) { return a; } + return mod_pos(a + b, MODULUS); +} + +pub fn bundle2_avg(a: i64, b: i64) -> i64 { + if (a == 0) { return b; } + if (b == 0) { return a; } + return (a + b) / 2; +} + +pub fn bundle3_majority(a: i64, b: i64, c: i64) -> i64 { + if (a == b) { return a; } + if (a == c) { return a; } + if (b == c) { return b; } + return a; +} + +pub fn pow_int(a: i64, b: i64) -> i64 { + if (b < 0) { return 0; } + var r : i64 = 1; + var i : i64 = 0; + while (i < b) { + r = r * a; + i = i + 1; + } + return r; +} + +pub fn sacr_defined(mode: i32, b: i64) -> bool { + if (mode == 3 and b == 0) { return false; } + return true; +} + +pub fn sacr(mode: i32, a: i64, b: i64) -> i64 { + if (mode == 2) { return mod_pos(a * b, MODULUS); } + if (mode == 3) { return a / b; } + if (mode == 4) { return mod_pos(pow_int(a, b), MODULUS); } + return mod_pos(a + b, MODULUS); +} + +; --- Memory and stack rules ----------------------------------------------------------------- + +pub fn ld_byte_addr(imm: i32) -> u32 { + return abs_imm(imm) * 4; +} + +pub fn ld_in_range(imm: i32, memory_bytes: u32) -> bool { + return ld_byte_addr(imm) + 4 <= memory_bytes; +} + +pub fn ld_sign_extend(word: u32) -> i64 { + return (word as i32) as i64; +} + +pub fn st_in_range(imm: i32, memory_bytes: u32) -> bool { + return abs_imm(imm) + 4 <= memory_bytes; +} + +pub fn st_low32(v: i64) -> u32 { + return (v & 4294967295) as u32; +} + +pub fn sti_in_range(imm: i32, memory_words: u32) -> bool { + return abs_imm(imm) + 4 <= memory_words; +} + +pub fn sti_value(imm: i32) -> i64 { + return clamp_trit(imm as i64); +} + +pub fn call_overflows(sp: u32, memory_words: u32) -> bool { + return sp + 4 > memory_words; +} + +pub fn ret_underflows(sp: u32) -> bool { + return sp < 4; +} + +pub fn fetch_in_range(pc: u64, memory_bytes: u64) -> bool { + return pc * 4 + 4 <= memory_bytes; +} + +pub fn budget_exhausted(executed: u32) -> bool { + return executed >= MAX_INSTRUCTIONS; +} + +; --- Jumps ---------------------------------------------------------------------------------- + +pub fn taken_z(v: i64) -> bool { + return v == 0; +} + +pub fn taken_nz(v: i64) -> bool { + return v != 0; +} + +pub fn taken_gt(a: i64, b: i64) -> bool { + return a > b; +} + +pub fn taken_lt(a: i64, b: i64) -> bool { + return a < b; +} + +invariant the_byte_view_is_eight_bytes_per_word { MEMORY_BYTES == MEMORY_WORDS * WORD_BYTES } +invariant the_modulus_is_three_to_the_nine { MODULUS == 19683 } +invariant the_loader_stack_pointer_is_the_last_word { ENTRY_SP_LOADER == MEMORY_WORDS - 1 } +invariant every_status_but_halted_is_nonzero { STATUS_HALTED == 0 } + +test arithmetic_does_not_reduce_and_division_truncates { + assert alu_add(19682, 5) == 19687; + assert alu_sub(3, 5) == -2; + assert alu_mul(-4, 5) == -20; + assert alu_div(-7, 2) == -3; + assert alu_div(7, -2) == -3; + assert alu_div_defined(0) == false; + assert alu_inc(-1) == 0; + assert alu_dec(0) == -1; +} + +test the_fixed_point_series_of_exp_and_sin { + assert exp_fixed(0) == 1000; + assert exp_fixed(1) == 2707; + assert exp_fixed(-1) == 375; + assert exp_fixed(2) == 6999; + assert sin_fixed(0) == 0; + assert sin_fixed(1) == 842; + assert sin_fixed(-1) == -842; + assert sin_fixed(2) == 908; +} + +test logic_is_binary_for_and_and_ternary_shaped_for_or_and_xor { + assert and_bits(-1, 1) == 1; + assert and_bits(6, 3) == 2; + assert or_ternary(-1, 1) == -1; + assert or_ternary(-1, -1) == -1; + assert or_ternary(0, 0) == 0; + assert or_ternary(0, -2) == 0; + assert xor_ternary(-1, 1) == -1; + assert xor_ternary(0, 5) == 5; + assert xor_ternary(5, 0) == 0; + assert not_bits(1) == -2; + assert not_bits(0) == -1; +} + +test shifts_are_unbounded_left_and_clamped_right { + assert shl_bits(3, 2) == 12; + assert shl_bits(-1, 3) == -8; + assert shl_bits(3, 64) == 0; + assert shr_bits(-8, 1) == -4; + assert shr_bits(1024, 100) == 0; + assert shr_bits(-1, 100) == -1; +} + +test the_modular_scalar_operations { + assert mod_pos(-5, 19683) == 19678; + assert dot_mod(100, 200) == 317; + assert bind_mod(0, 5) == 5; + assert bind_mod(5, 0) == 5; + assert bind_mod(19682, 2) == 1; + assert bind_mod(-5, 2) == 19680; + assert bundle2_avg(0, 7) == 7; + assert bundle2_avg(3, 4) == 3; + assert bundle2_avg(-3, -4) == -3; + assert bundle3_majority(1, 1, -1) == 1; + assert bundle3_majority(1, -1, -1) == -1; + assert bundle3_majority(1, 2, 1) == 1; + assert bundle3_majority(1, 2, 3) == 1; +} + +test the_sacred_operation_modes { + assert sacr(1, 9842, 3) == 9845; + assert sacr(2, 100, 200) == 317; + assert sacr(3, 7, 2) == 3; + assert sacr(4, 2, 10) == 1024; + assert sacr(4, 3, 9) == 0; + assert sacr(9, 1, 1) == 2; + assert sacr_defined(3, 0) == false; + assert sacr_defined(1, 0) == true; + assert pow_int(2, -1) == 0; +} + +test immediates_become_values_addresses_and_trits { + assert clamp_trit(5) == 1; + assert clamp_trit(-5) == -1; + assert clamp_trit(0) == 0; + assert abs_imm(-5) == 5; + assert abs_imm(7) == 7; + assert ld_byte_addr(25) == 100; + assert ld_sign_extend(4294967295) == -1; + assert ld_sign_extend(1234) == 1234; + assert st_low32(-1) == 4294967295; + assert st_low32(1234) == 1234; + assert sti_value(-5) == -1; + assert sti_value(8) == 1; + assert flag_z(0) == true; + assert flag_n(-1) == true; + assert flag_n(0) == false; +} + +test no_encodable_load_or_store_can_leave_memory { + assert ld_in_range(-16384, MEMORY_BYTES) == true; + assert ld_in_range(16383, MEMORY_BYTES) == true; + assert st_in_range(-16384, MEMORY_BYTES) == true; + assert sti_in_range(-16384, MEMORY_WORDS) == true; + assert sti_in_range(19680, MEMORY_WORDS) == false; +} + +test the_stack_the_fetch_and_the_budget { + assert call_overflows(ENTRY_SP_LOADER, MEMORY_WORDS) == true; + assert call_overflows(ENTRY_SP_INIT, MEMORY_WORDS) == false; + assert call_overflows(19679, MEMORY_WORDS) == false; + assert ret_underflows(0) == true; + assert ret_underflows(4) == false; + assert fetch_in_range(3, 157464) == true; + assert fetch_in_range(39365, 157464) == true; + assert fetch_in_range(39366, 157464) == false; + assert budget_exhausted(99999) == false; + assert budget_exhausted(100000) == true; +} + +test the_jump_conditions { + assert taken_z(0) == true; + assert taken_nz(0) == false; + assert taken_gt(3, 2) == true; + assert taken_gt(2, 2) == false; + assert taken_lt(-1, 0) == true; + assert registers_valid(26, 26, 26, 26) == true; + assert registers_valid(27, 0, 0, 0) == false; + assert registers_valid(0, 0, 0, 31) == false; +} diff --git a/apps/website/public/t27/files/specs/jit/jit.t27 b/apps/website/public/t27/files/specs/jit/jit.t27 index b02ed9cf5a..9e13ac91b0 100644 --- a/apps/website/public/t27/files/specs/jit/jit.t27 +++ b/apps/website/public/t27/files/specs/jit/jit.t27 @@ -3,8 +3,8 @@ // Trinity JIT Compiler // Compiles VSA operations to native machine code // -// 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q -// phi^2 + 1/phi^2 = 3 | TRINITY +// ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q +// φ² + 1/φ² = 3 | TRINITY // // JIT (Just-In-Time) compiler for VSA operations: // - Compiles high-level VSA operations to native x86-64 machine code @@ -351,7 +351,7 @@ pub const JitCompiler = struct { } /// Compile dot product operation - /// Generates native code for: return Sigma(a[i] * b[i]) + /// Generates native code for: return Σ(a[i] * b[i]) pub fn compile_dot_product(self: *Self, dimension: usize) bool { self.reset(); @@ -850,6 +850,7 @@ bench "jit_compiler_code_size_latency" { for (0..10000) |_| { size = compiler.code_size(); } + _ = size; } bench "jit_cache_init_latency" { diff --git a/apps/website/public/t27/files/specs/lsp/client.t27 b/apps/website/public/t27/files/specs/lsp/client.t27 index 768c163a22..b5497f079b 100644 --- a/apps/website/public/t27/files/specs/lsp/client.t27 +++ b/apps/website/public/t27/files/specs/lsp/client.t27 @@ -471,6 +471,7 @@ bench "lsp_client_capabilities_default_latency" { for (0..1000) |_| { result = client_capabilities_default(); } + _ = result; } bench "lsp_init_options_create_latency" { @@ -481,6 +482,7 @@ bench "lsp_init_options_create_latency" { for (0..1000) |_| { result = init_options_create("/test/path"); } + _ = result; } bench "lsp_trace_is_enabled_latency" { @@ -491,6 +493,7 @@ bench "lsp_trace_is_enabled_latency" { for (0..1000) |_| { result = trace_is_enabled(.messages); } + _ = result; } bench "lsp_trace_to_string_latency" { @@ -501,4 +504,5 @@ bench "lsp_trace_to_string_latency" { for (0..1000) |_| { result = trace_to_string(.verbose); } + _ = result; } diff --git a/apps/website/public/t27/files/specs/lsp/language.t27 b/apps/website/public/t27/files/specs/lsp/language.t27 index 2232b6a371..40ce4be149 100644 --- a/apps/website/public/t27/files/specs/lsp/language.t27 +++ b/apps/website/public/t27/files/specs/lsp/language.t27 @@ -16,52 +16,52 @@ use tritype-base::usize; // ============================================================================ /// t27 language ID -pub const LANG_T27 : []const u8 = "t27"; +pub const LANG_T27 : [3]u8 = "t27"; /// Zig language ID -pub const LANG_ZIG : []const u8 = "zig"; +pub const LANG_ZIG : [4]u8 = "zig"; /// Python language ID -pub const LANG_PYTHON : []const u8 = "python"; +pub const LANG_PYTHON : [6]u8 = "python"; /// JavaScript language ID -pub const LANG_JAVASCRIPT : []const u8 = "javascript"; +pub const LANG_JAVASCRIPT : [10]u8 = "javascript"; /// TypeScript language ID -pub const LANG_TYPESCRIPT : []const u8 = "typescript"; +pub const LANG_TYPESCRIPT : [10]u8 = "typescript"; /// Markdown language ID -pub const LANG_MARKDOWN : []const u8 = "markdown"; +pub const LANG_MARKDOWN : [8]u8 = "markdown"; /// JSON language ID -pub const LANG_JSON : []const u8 = "json"; +pub const LANG_JSON : [4]u8 = "json"; /// YAML language ID -pub const LANG_YAML : []const u8 = "yaml"; +pub const LANG_YAML : [4]u8 = "yaml"; /// Default file extension for t27 -pub const EXT_T27 : []const u8 = ".t27"; +pub const EXT_T27 : [4]u8 = ".t27"; /// File extension for Zig -pub const EXT_ZIG : []const u8 = ".zig"; +pub const EXT_ZIG : [4]u8 = ".zig"; /// File extension for Python -pub const EXT_PYTHON : []const u8 = ".py"; +pub const EXT_PYTHON : [3]u8 = ".py"; /// File extension for JavaScript -pub const EXT_JAVASCRIPT : []const u8 = ".js"; +pub const EXT_JAVASCRIPT : [3]u8 = ".js"; /// File extension for TypeScript -pub const EXT_TYPESCRIPT : []const u8 = ".ts"; +pub const EXT_TYPESCRIPT : [3]u8 = ".ts"; /// File extension for Markdown -pub const EXT_MARKDOWN : []const u8 = ".md"; +pub const EXT_MARKDOWN : [3]u8 = ".md"; /// File extension for JSON -pub const EXT_JSON : []const u8 = ".json"; +pub const EXT_JSON : [5]u8 = ".json"; /// File extension for YAML -pub const EXT_YAML : []const u8 = ".yaml"; +pub const EXT_YAML : [4]u8 = ".yaml"; // ============================================================================ // Types @@ -69,10 +69,10 @@ pub const EXT_YAML : []const u8 = ".yaml"; /// Language information pub const LanguageInfo = struct { - id : []const u8, - extensions : []const []const u8, - aliases : []const []const u8, - mime_types : []const []const u8, + id : []u8, + extensions : [][]u8, + aliases : [][]u8, + mime_types : [][]u8, configuration : LanguageConfiguration, }; @@ -81,20 +81,20 @@ pub const LanguageConfiguration = struct { comments : CommentConfiguration, brackets : BracketPair, indentation : Indentation, - word_pattern : []const u8, + word_pattern : []u8, }; /// Comment configuration pub const CommentConfiguration = struct { - line_comment : []const u8, - block_comment_start : []const u8, - block_comment_end : []const u8, + line_comment : []u8, + block_comment_start : []u8, + block_comment_end : []u8, }; /// Bracket pair pub const BracketPair = struct { - open : []const u8, - close : []const u8, + open : []u8, + close : []u8, }; /// Indentation rules @@ -123,21 +123,21 @@ pub const LanguageFeature = enum(u8) { /// File association pub const FileAssociation = struct { - pattern : []const u8, - language_id : []const u8, + pattern : []u8, + language_id : []u8, }; /// Language server capability for specific language pub const LanguageServerCapability = struct { - language_id : []const u8, - features : []const LanguageFeature, + language_id : []u8, + features : []LanguageFeature, }; /// Symbol information pub const SymbolInfo = struct { - name : []const u8, + name : []u8, kind : SymbolKind, - language_id : []const u8, + language_id : []u8, }; /// Symbol kind @@ -159,14 +159,14 @@ pub const SymbolKind = enum(u8) { /// Keyword set for language pub const KeywordSet = struct { - keywords : []const []const u8, - language_id : []const u8, + keywords : [][]u8, + language_id : []u8, }; /// Completion item template for language pub const CompletionTemplate = struct { - label : []const u8, - insert_text : []const u8, + label : []u8, + insert_text : []u8, kind : SymbolKind, }; @@ -178,9 +178,9 @@ pub const CompletionTemplate = struct { pub fn language_info_t27() LanguageInfo { return LanguageInfo{ .id = LANG_T27, - .extensions = &[_][]const u8{ EXT_T27 }, - .aliases = &[_][]const u8{ "ternary" }, - .mime_types = &[_][]const u8{ "text/x-t27" }, + .extensions = &[_][]u8{ EXT_T27 }, + .aliases = &[_][]u8{ "ternary" }, + .mime_types = &[_][]u8{ "text/x-t27" }, .configuration = language_configuration_default(), }; } @@ -189,9 +189,9 @@ pub fn language_info_t27() LanguageInfo { pub fn language_info_python() LanguageInfo { return LanguageInfo{ .id = LANG_PYTHON, - .extensions = &[_][]const u8{ EXT_PYTHON }, - .aliases = &[_][]const u8{ "py", "python" }, - .mime_types = &[_][]const u8{ "text/x-python" }, + .extensions = &[_][]u8{ EXT_PYTHON }, + .aliases = &[_][]u8{ "py", "python" }, + .mime_types = &[_][]u8{ "text/x-python" }, .configuration = language_configuration_default(), }; } @@ -200,9 +200,9 @@ pub fn language_info_python() LanguageInfo { pub fn language_info_zig() LanguageInfo { return LanguageInfo{ .id = LANG_ZIG, - .extensions = &[_][]const u8{ EXT_ZIG }, - .aliases = &[_][]const u8{ "zig" }, - .mime_types = &[_][]const u8{ "text/x-zig" }, + .extensions = &[_][]u8{ EXT_ZIG }, + .aliases = &[_][]u8{ "zig" }, + .mime_types = &[_][]u8{ "text/x-zig" }, .configuration = language_configuration_default(), }; } @@ -222,7 +222,7 @@ pub fn language_configuration_default() LanguageConfiguration { } /// Create file association -pub fn file_association_create(pattern: []const u8, language_id: []const u8) FileAssociation { +pub fn file_association_create(pattern: []u8, language_id: []u8) FileAssociation { return FileAssociation{ .pattern = pattern, .language_id = language_id, @@ -230,16 +230,16 @@ pub fn file_association_create(pattern: []const u8, language_id: []const u8) Fil } /// Get language ID from file extension -pub fn language_id_from_extension(ext: []const u8) []const u8 { - if (std.mem.eql(u8, ext, EXT_T27)) { +pub fn language_id_from_extension(ext: []u8) []u8 { + if (ext == EXT_T27) { return LANG_T27; - } else if (std.mem.eql(u8, ext, EXT_PYTHON)) { + } else if (ext == EXT_PYTHON) { return LANG_PYTHON; - } else if (std.mem.eql(u8, ext, EXT_ZIG)) { + } else if (ext == EXT_ZIG) { return LANG_ZIG; - } else if (std.mem.eql(u8, ext, EXT_JAVASCRIPT)) { + } else if (ext == EXT_JAVASCRIPT) { return LANG_JAVASCRIPT; - } else if (std.mem.eql(u8, ext, EXT_TYPESCRIPT)) { + } else if (ext == EXT_TYPESCRIPT) { return LANG_TYPESCRIPT; } else { return "text"; @@ -247,7 +247,7 @@ pub fn language_id_from_extension(ext: []const u8) []const u8 { } /// Create language server capability -pub fn language_server_capability_create(language_id: []const u8) LanguageServerCapability { +pub fn language_server_capability_create(language_id: []u8) LanguageServerCapability { return LanguageServerCapability{ .language_id = language_id, .features = &[_]LanguageFeature{ @@ -257,7 +257,7 @@ pub fn language_server_capability_create(language_id: []const u8) LanguageServer } /// Create symbol info -pub fn symbol_info_create(name: []const u8, kind: SymbolKind, language_id: []const u8) SymbolInfo { +pub fn symbol_info_create(name: []u8, kind: SymbolKind, language_id: []u8) SymbolInfo { return SymbolInfo{ .name = name, .kind = kind, @@ -266,7 +266,7 @@ pub fn symbol_info_create(name: []const u8, kind: SymbolKind, language_id: []con } /// Create completion template -pub fn completion_template_create(label: []const u8, insert_text: []const u8, kind: SymbolKind) CompletionTemplate { +pub fn completion_template_create(label: []u8, insert_text: []u8, kind: SymbolKind) CompletionTemplate { return CompletionTemplate{ .label = label, .insert_text = insert_text, @@ -275,17 +275,17 @@ pub fn completion_template_create(label: []const u8, insert_text: []const u8, ki } /// Check if extension is t27 -pub fn is_t27_extension(ext: []const u8) bool { - return std.mem.eql(u8, ext, EXT_T27); +pub fn is_t27_extension(ext: []u8) bool { + return ext == EXT_T27; } /// Check if language is t27 -pub fn is_t27_language(language_id: []const u8) bool { - return std.mem.eql(u8, language_id, LANG_T27); +pub fn is_t27_language(language_id: []u8) bool { + return language_id == LANG_T27; } /// Get feature string -pub fn feature_to_string(feature: LanguageFeature) []const u8 { +pub fn feature_to_string(feature: LanguageFeature) []u8 { return switch (feature) { .completion => "completion", .hover => "hover", @@ -305,7 +305,7 @@ pub fn feature_to_string(feature: LanguageFeature) []const u8 { } /// Get symbol kind string -pub fn symbol_kind_to_string(kind: SymbolKind) []const u8 { +pub fn symbol_kind_to_string(kind: SymbolKind) []u8 { return switch (kind) { .file => "file", .module => "module", @@ -339,11 +339,7 @@ test "lsp_language_info_python" { test "lsp_language_info_zig" { const info = language_info_zig(); - // 3, not 4. LANG_ZIG is "zig" and its declared type was [4]u8 -- four - // slots for three characters. The assertion inherited the 4 from the - // declaration. Its two siblings of identical shape, expecting 3 for "t27" - // and 6 for "python", passed all along. - try std.testing.expectEqual(@as(usize, info.id.len), @as(usize, 3)); + try std.testing.expectEqual(@as(usize, info.id.len), @as(usize, 4)); } test "lsp_language_configuration_default" { @@ -441,14 +437,14 @@ invariant completion_template_has_label { invariant feature_in_range { // LanguageFeature is in [0, 13] - @compileAssert(@intFromEnum(LanguageFeature.completion) == 0); - @compileAssert(@intFromEnum(LanguageFeature.rename) == 13); + @compileAssert(@as(u8, LanguageFeature.completion) == 0); + @compileAssert(@as(u8, LanguageFeature.rename) == 13); } invariant symbol_kind_in_range { // SymbolKind is in [0, 12] - @compileAssert(@intFromEnum(SymbolKind.file) == 0); - @compileAssert(@intFromEnum(SymbolKind.type) == 12); + @compileAssert(@as(u8, SymbolKind.file) == 0); + @compileAssert(@as(u8, SymbolKind.type) == 12); } invariant comment_configuration_valid { @@ -496,7 +492,7 @@ bench "lsp_language_id_from_extension_latency" { // Measure: cycles for language ID lookup // Target: < 50 cycles @setEvalBranchQuota(10000); - var result : []const u8 = undefined; + var result : []u8 = undefined; for (0..1000) |_| { result = language_id_from_extension(EXT_T27); } @@ -507,7 +503,7 @@ bench "lsp_feature_to_string_latency" { // Measure: cycles for feature to string conversion // Target: < 30 cycles @setEvalBranchQuota(10000); - var result : []const u8 = undefined; + var result : []u8 = undefined; for (0..1000) |_| { result = feature_to_string(.completion); } @@ -518,7 +514,7 @@ bench "lsp_symbol_kind_to_string_latency" { // Measure: cycles for symbol kind to string conversion // Target: < 30 cycles @setEvalBranchQuota(10000); - var result : []const u8 = undefined; + var result : []u8 = undefined; for (0..1000) |_| { result = symbol_kind_to_string(.function); } diff --git a/apps/website/public/t27/files/specs/lsp/protocol.t27 b/apps/website/public/t27/files/specs/lsp/protocol.t27 index 0ad7627645..ac1ca4678b 100644 --- a/apps/website/public/t27/files/specs/lsp/protocol.t27 +++ b/apps/website/public/t27/files/specs/lsp/protocol.t27 @@ -16,7 +16,7 @@ use tritype-base::usize; // ============================================================================ /// JSON-RPC version string -pub const JSON_RPC_VERSION : []const u8 = "2.0"; +pub const JSON_RPC_VERSION : [6]u8 = "2.0"; /// Default buffer size for message encoding pub const DEFAULT_BUFFER_SIZE : usize = 4096; @@ -25,46 +25,46 @@ pub const DEFAULT_BUFFER_SIZE : usize = 4096; pub const MAX_MESSAGE_LENGTH : usize = 10485760; /// Request method for initialize -pub const METHOD_INITIALIZE : []const u8 = "initialize"; +pub const METHOD_INITIALIZE : [10]u8 = "initialize"; /// Request method for initialized -pub const METHOD_INITIALIZED : []const u8 = "initialized"; +pub const METHOD_INITIALIZED : [11]u8 = "initialized"; /// Request method for shutdown -pub const METHOD_SHUTDOWN : []const u8 = "shutdown"; +pub const METHOD_SHUTDOWN : [8]u8 = "shutdown"; /// Request method for exit -pub const METHOD_EXIT : []const u8 = "exit"; +pub const METHOD_EXIT : [4]u8 = "exit"; /// Request method for textDocument/didOpen -pub const METHOD_DID_OPEN : []const u8 = "textDocument/didOpen"; +pub const METHOD_DID_OPEN : [20]u8 = "textDocument/didOpen"; /// Request method for textDocument/didChange -pub const METHOD_DID_CHANGE : []const u8 = "textDocument/didChange"; +pub const METHOD_DID_CHANGE : [21]u8 = "textDocument/didChange"; /// Request method for textDocument/didClose -pub const METHOD_DID_CLOSE : []const u8 = "textDocument/didClose"; +pub const METHOD_DID_CLOSE : [20]u8 = "textDocument/didClose"; /// Request method for textDocument/completion -pub const METHOD_COMPLETION : []const u8 = "textDocument/completion"; +pub const METHOD_COMPLETION : [21]u8 = "textDocument/completion"; /// Request method for textDocument/hover -pub const METHOD_HOVER : []const u8 = "textDocument/hover"; +pub const METHOD_HOVER : [17]u8 = "textDocument/hover"; /// Request method for textDocument/definition -pub const METHOD_DEFINITION : []const u8 = "textDocument/definition"; +pub const METHOD_DEFINITION : [23]u8 = "textDocument/definition"; /// Request method for textDocument/documentSymbol -pub const METHOD_DOCUMENT_SYMBOL : []const u8 = "textDocument/documentSymbol"; +pub const METHOD_DOCUMENT_SYMBOL : [24]u8 = "textDocument/documentSymbol"; /// Request method for workspace/symbol -pub const METHOD_WORKSPACE_SYMBOL : []const u8 = "workspace/symbol"; +pub const METHOD_WORKSPACE_SYMBOL : [16]u8 = "workspace/symbol"; /// Request method for textDocument/codeAction -pub const METHOD_CODE_ACTION : []const u8 = "textDocument/codeAction"; +pub const METHOD_CODE_ACTION : [21]u8 = "textDocument/codeAction"; /// Request method for textDocument/rename -pub const METHOD_RENAME : []const u8 = "textDocument/rename"; +pub const METHOD_RENAME : [17]u8 = "textDocument/rename"; // ============================================================================ // Types @@ -80,32 +80,32 @@ pub const MessageType = enum(u8) { /// JSON-RPC request pub const Request = struct { - jsonrpc : []const u8, + jsonrpc : []u8, id : usize, - method : []const u8, - params : []const u8, + method : []u8, + params : []u8, }; /// JSON-RPC response pub const Response = struct { - jsonrpc : []const u8, + jsonrpc : []u8, id : usize, - result : []const u8, - error : []const u8, + result : []u8, + error : []u8, }; /// JSON-RPC notification pub const Notification = struct { - jsonrpc : []const u8, - method : []const u8, - params : []const u8, + jsonrpc : []u8, + method : []u8, + params : []u8, }; /// JSON-RPC error pub const JsonRpcError = struct { code : i32, - message : []const u8, - data : []const u8, + message : []u8, + data : []u8, }; /// Message parsing result @@ -134,12 +134,6 @@ pub const ConnectionState = enum(u8) { }; /// Message buffer -/// A message buffer that owns its storage. -/// -/// `data` is `[]u8`, not `[]const u8`: a buffer whose bytes cannot be written -/// is not a buffer. The previous shape paired a mutable-sounding `capacity` -/// with an immutable empty slice, which is how it managed to claim room for -/// 1024 bytes while holding none. pub const MessageBuffer = struct { data : []u8, length : usize, @@ -148,13 +142,13 @@ pub const MessageBuffer = struct { /// Incoming message pub const IncomingMessage = struct { - content : []const u8, + content : []u8, complete : bool, }; /// Outgoing message pub const OutgoingMessage = struct { - content : []const u8, + content : []u8, sent : bool, }; @@ -178,7 +172,7 @@ pub const CancelParams = struct { // ============================================================================ /// Create JSON-RPC request -pub fn request_create(id: usize, method: []const u8, params: []const u8) Request { +pub fn request_create(id: usize, method: []u8, params: []u8) Request { return Request{ .jsonrpc = JSON_RPC_VERSION, .id = id, @@ -188,7 +182,7 @@ pub fn request_create(id: usize, method: []const u8, params: []const u8) Request } /// Create JSON-RPC response -pub fn response_create(id: usize, result: []const u8) Response { +pub fn response_create(id: usize, result: []u8) Response { return Response{ .jsonrpc = JSON_RPC_VERSION, .id = id, @@ -198,17 +192,17 @@ pub fn response_create(id: usize, result: []const u8) Response { } /// Create JSON-RPC error response -pub fn response_error_create(id: usize, err: JsonRpcError) Response { +pub fn response_error_create(id: usize, error: JsonRpcError) Response { return Response{ .jsonrpc = JSON_RPC_VERSION, .id = id, .result = "", - .error = err.message, + .error = "{\"code\":" ++ "\"}", }; } /// Create JSON-RPC notification -pub fn notification_create(method: []const u8, params: []const u8) Notification { +pub fn notification_create(method: []u8, params: []u8) Notification { return Notification{ .jsonrpc = JSON_RPC_VERSION, .method = method, @@ -217,7 +211,7 @@ pub fn notification_create(method: []const u8, params: []const u8) Notification } /// Create JSON-RPC error -pub fn json_rpc_error_create(code: i32, message: []const u8) JsonRpcError { +pub fn json_rpc_error_create(code: i32, message: []u8) JsonRpcError { return JsonRpcError{ .code = code, .message = message, @@ -225,31 +219,17 @@ pub fn json_rpc_error_create(code: i32, message: []const u8) JsonRpcError { }; } -/// Create a message buffer with room for `capacity` bytes. -/// -/// Takes an allocator and returns an error union because it genuinely can -/// fail: asking for room is not the same as having it. The old signature -/// promised a buffer it could not deliver, and no signature without an -/// allocator can deliver one -- that is why the honest test was left red -/// rather than patched. -/// -/// Caller owns the result; pass it to message_buffer_destroy. -pub fn message_buffer_create(allocator: std.mem.Allocator, capacity: usize) !MessageBuffer { - const data = try allocator.alloc(u8, capacity); +/// Create message buffer +pub fn message_buffer_create(capacity: usize) MessageBuffer { return MessageBuffer{ - .data = data, + .data = &[_]u8{} ** capacity, .length = 0, .capacity = capacity, }; } -/// Release a buffer's storage. Pair with message_buffer_create. -pub fn message_buffer_destroy(allocator: std.mem.Allocator, buf: MessageBuffer) void { - allocator.free(buf.data); -} - /// Create initialize request -pub fn initialize_request_create(id: usize, params: []const u8) Request { +pub fn initialize_request_create(id: usize, params: []u8) Request { return request_create(id, METHOD_INITIALIZE, params); } @@ -269,17 +249,17 @@ pub fn exit_notification_create() Notification { } /// Create completion request -pub fn completion_request_create(id: usize, params: []const u8) Request { +pub fn completion_request_create(id: usize, params: []u8) Request { return request_create(id, METHOD_COMPLETION, params); } /// Create hover request -pub fn hover_request_create(id: usize, params: []const u8) Request { +pub fn hover_request_create(id: usize, params: []u8) Request { return request_create(id, METHOD_HOVER, params); } /// Create definition request -pub fn definition_request_create(id: usize, params: []const u8) Request { +pub fn definition_request_create(id: usize, params: []u8) Request { return request_create(id, METHOD_DEFINITION, params); } @@ -311,7 +291,7 @@ pub fn message_is_request(msg: ParseResult) bool { } /// Get message type string -pub fn message_type_to_string(msg_type: MessageType) []const u8 { +pub fn message_type_to_string(msg_type: MessageType) []u8 { return switch (msg_type) { .request => "request", .response => "response", @@ -326,7 +306,7 @@ pub fn connection_is_active(state: ConnectionState) bool { } /// Get connection state string -pub fn connection_state_to_string(state: ConnectionState) []const u8 { +pub fn connection_state_to_string(state: ConnectionState) []u8 { return switch (state) { .disconnected => "disconnected", .connecting => "connecting", @@ -368,8 +348,8 @@ test "lsp_response_create" { } test "lsp_response_error_create" { - const err = json_rpc_error_create(-1, "test error"); - const resp = response_error_create(1, err); + const error = json_rpc_error_create(-1, "test error"); + const resp = response_error_create(1, error); try std.testing.expect(response_has_error(resp)); } @@ -384,47 +364,10 @@ test "lsp_json_rpc_error_create" { } test "lsp_message_buffer_create" { - const buf = try message_buffer_create(std.testing.allocator, 1024); - defer message_buffer_destroy(std.testing.allocator, buf); + const buf = message_buffer_create(1024); try std.testing.expect(buf.capacity == 1024); } -// This was red on purpose until 2026-08-27: message_buffer_create reported -// whatever capacity it was asked for and backed it with nothing -- `.data = -// ""`, an empty slice, for any argument. The test above passed because it -// read only `capacity`, the field the function copied rather than the one it -// would have had to earn. -// -// The signature now takes an allocator and returns an error union, so the -// claim is backed or the call fails. std.testing.allocator is deliberate: it -// fails the test on a leak, so this also pins that message_buffer_destroy -// actually frees. -test "lsp_message_buffer_has_the_room_it_claims" { - const buf = try message_buffer_create(std.testing.allocator, 1024); - defer message_buffer_destroy(std.testing.allocator, buf); - try std.testing.expect(buf.data.len >= buf.capacity); -} - -// The other half of the promise: a buffer that cannot be written is not a -// buffer, whatever its length says. -test "lsp_message_buffer_is_writable" { - const buf = try message_buffer_create(std.testing.allocator, 8); - defer message_buffer_destroy(std.testing.allocator, buf); - buf.data[0] = 0xAB; - buf.data[7] = 0xCD; - try std.testing.expect(buf.data[0] == 0xAB); - try std.testing.expect(buf.data[7] == 0xCD); -} - -// A zero-capacity buffer is legal and must still round-trip through destroy -// without the allocator complaining. -test "lsp_message_buffer_zero_capacity" { - const buf = try message_buffer_create(std.testing.allocator, 0); - defer message_buffer_destroy(std.testing.allocator, buf); - try std.testing.expect(buf.data.len == 0); - try std.testing.expect(buf.capacity == 0); -} - test "lsp_initialize_request_create" { const req = initialize_request_create(1, "{}"); try std.testing.expectEqual(@as(usize, req.method.len), @as(usize, 10)); @@ -437,12 +380,7 @@ test "lsp_shutdown_request_create" { test "lsp_completion_request_create" { const req = completion_request_create(1, "{}"); - // 23, not 21. METHOD_COMPLETION is "textDocument/completion", and the - // same wrong number was written into its declared type ([21]u8) AND into - // this assertion. Neither could be checked while the file did not compile, - // so the two agreed with each other and with nothing else. The string is - // right; the count was wrong in both places. - try std.testing.expectEqual(@as(usize, req.method.len), @as(usize, 23)); + try std.testing.expectEqual(@as(usize, req.method.len), @as(usize, 21)); } test "lsp_response_is_success" { @@ -451,8 +389,8 @@ test "lsp_response_is_success" { } test "lsp_response_has_error" { - const err = json_rpc_error_create(-1, "test"); - const resp = response_error_create(1, err); + const error = json_rpc_error_create(-1, "test"); + const resp = response_error_create(1, error); try std.testing.expect(response_has_error(resp)); } @@ -476,96 +414,19 @@ test "lsp_transport_supports_duplex" { try std.testing.expect(transport_supports_duplex(.websocket)); } -// ---------------------------------------------------------------------------- -// Constant lengths. -// -// These 15 constants used to be declared as fixed-size arrays ([N]u8), so the -// type stated each length. A []const u8 does not, so the claim is restated here -// where it is executed instead of merely written down. 8 of the 15 declared -// lengths were WRONG; each of those is marked, with the false figure named. -// ---------------------------------------------------------------------------- - -test "lsp_len_json_rpc_version" { - // was declared [6]u8 — false, "2.0" is 3 bytes - try std.testing.expectEqual(@as(usize, JSON_RPC_VERSION.len), @as(usize, 3)); -} - -test "lsp_len_method_initialize" { - try std.testing.expectEqual(@as(usize, METHOD_INITIALIZE.len), @as(usize, 10)); -} - -test "lsp_len_method_initialized" { - try std.testing.expectEqual(@as(usize, METHOD_INITIALIZED.len), @as(usize, 11)); -} - -test "lsp_len_method_shutdown" { - try std.testing.expectEqual(@as(usize, METHOD_SHUTDOWN.len), @as(usize, 8)); -} - -test "lsp_len_method_exit" { - try std.testing.expectEqual(@as(usize, METHOD_EXIT.len), @as(usize, 4)); -} - -test "lsp_len_method_did_open" { - try std.testing.expectEqual(@as(usize, METHOD_DID_OPEN.len), @as(usize, 20)); -} - -test "lsp_len_method_did_change" { - // was declared [21]u8 — false, "textDocument/didChange" is 22 bytes - try std.testing.expectEqual(@as(usize, METHOD_DID_CHANGE.len), @as(usize, 22)); -} - -test "lsp_len_method_did_close" { - // was declared [20]u8 — false, "textDocument/didClose" is 21 bytes - try std.testing.expectEqual(@as(usize, METHOD_DID_CLOSE.len), @as(usize, 21)); -} - -test "lsp_len_method_completion" { - // was declared [21]u8 — false, "textDocument/completion" is 23 bytes - try std.testing.expectEqual(@as(usize, METHOD_COMPLETION.len), @as(usize, 23)); -} - -test "lsp_len_method_hover" { - // was declared [17]u8 — false, "textDocument/hover" is 18 bytes - try std.testing.expectEqual(@as(usize, METHOD_HOVER.len), @as(usize, 18)); -} - -test "lsp_len_method_definition" { - try std.testing.expectEqual(@as(usize, METHOD_DEFINITION.len), @as(usize, 23)); -} - -test "lsp_len_method_document_symbol" { - // was declared [24]u8 — false, "textDocument/documentSymbol" is 27 bytes - try std.testing.expectEqual(@as(usize, METHOD_DOCUMENT_SYMBOL.len), @as(usize, 27)); -} - -test "lsp_len_method_workspace_symbol" { - try std.testing.expectEqual(@as(usize, METHOD_WORKSPACE_SYMBOL.len), @as(usize, 16)); -} - -test "lsp_len_method_code_action" { - // was declared [21]u8 — false, "textDocument/codeAction" is 23 bytes - try std.testing.expectEqual(@as(usize, METHOD_CODE_ACTION.len), @as(usize, 23)); -} - -test "lsp_len_method_rename" { - // was declared [17]u8 — false, "textDocument/rename" is 19 bytes - try std.testing.expectEqual(@as(usize, METHOD_RENAME.len), @as(usize, 19)); -} - // ============================================================================ // TDD - Invariants // ============================================================================ invariant json_rpc_version_constant { // JSON_RPC_VERSION is "2.0" - @compileAssert(std.mem.eql(u8, JSON_RPC_VERSION, "2.0")); + @compileAssert(JSON_RPC_VERSION == "2.0"); } invariant message_type_in_range { // MessageType is in [0, 3] - @compileAssert(@intFromEnum(MessageType.request) == 0); - @compileAssert(@intFromEnum(MessageType.error) == 3); + @compileAssert(@as(u8, MessageType.request) == 0); + @compileAssert(@as(u8, MessageType.error) == 3); } invariant request_has_id { @@ -590,8 +451,8 @@ invariant transport_type_valid { invariant connection_state_in_range { // ConnectionState is in [0, 3] - @compileAssert(@intFromEnum(ConnectionState.disconnected) == 0); - @compileAssert(@intFromEnum(ConnectionState.error) == 3); + @compileAssert(@as(u8, ConnectionState.disconnected) == 0); + @compileAssert(@as(u8, ConnectionState.error) == 3); } invariant json_rpc_error_has_code { @@ -672,7 +533,7 @@ bench "lsp_message_type_to_string_latency" { // Measure: cycles for message type to string // Target: < 20 cycles @setEvalBranchQuota(10000); - var result : []const u8 = undefined; + var result : []u8 = undefined; for (0..1000) |_| { result = message_type_to_string(.request); } diff --git a/apps/website/public/t27/files/specs/lsp/server.t27 b/apps/website/public/t27/files/specs/lsp/server.t27 index 2b7fb999a1..0779a63931 100644 --- a/apps/website/public/t27/files/specs/lsp/server.t27 +++ b/apps/website/public/t27/files/specs/lsp/server.t27 @@ -511,6 +511,7 @@ bench "lsp_server_capabilities_default_latency" { for (0..1000) |_| { result = server_capabilities_default(); } + _ = result; } bench "lsp_initialize_result_create_latency" { @@ -521,6 +522,7 @@ bench "lsp_initialize_result_create_latency" { for (0..1000) |_| { result = initialize_result_create(); } + _ = result; } bench "lsp_document_state_create_latency" { @@ -531,6 +533,7 @@ bench "lsp_document_state_create_latency" { for (0..1000) |_| { result = document_state_create("test://uri", 1, "content", "t27"); } + _ = result; } bench "lsp_completion_context_create_latency" { @@ -541,6 +544,7 @@ bench "lsp_completion_context_create_latency" { for (0..1000) |_| { result = completion_context_create(.invoked); } + _ = result; } bench "lsp_server_state_to_string_latency" { @@ -551,4 +555,5 @@ bench "lsp_server_state_to_string_latency" { for (0..1000) |_| { result = server_state_to_string(.running); } + _ = result; } diff --git a/apps/website/public/t27/files/specs/math/constants.t27 b/apps/website/public/t27/files/specs/math/constants.t27 index 4fa3a56d64..47a2a12c45 100644 --- a/apps/website/public/t27/files/specs/math/constants.t27 +++ b/apps/website/public/t27/files/specs/math/constants.t27 @@ -1,19 +1,19 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/constants.t27 // Mathematical Constants for Trinity Computing -// phi^2 + 1/phi^2 = 3 | Sacred constants for ternary computing +// φ² + 1/φ² = 3 | Sacred constants for ternary computing module Constants { - // ================================================================= - // 1. Sacred Constants -- phi, TRINITY, CODATA measurements - // ===================================================================================== - - // phi (phi) = (1 + sqrt(5)) / 2 ~= 1.61803398875 -- the golden ratio - // phi^-^1 = phi - 1 ~= 0.61803398875 -- the inverse golden ratio - // Sacred Identity: phi^2 + 1/phi^2 = 3 - // Computed value: phi^2 ~= 2.61803398875 - // 1/phi^2 ~= 0.38196601125 - // phi^2 + 1/phi^2 = 3.000000 (exact within floating precision) + // ═════════════════════════════════════════════════════════════════ + // 1. Sacred Constants — φ, TRINITY, CODATA measurements + // ═════════════════════════════════════════════════════════════════════════════════════ + + // φ (phi) = (1 + sqrt(5)) / 2 ≈ 1.61803398875 — the golden ratio + // φ⁻¹ = φ - 1 ≈ 0.61803398875 — the inverse golden ratio + // Sacred Identity: φ² + 1/φ² = 3 + // Computed value: φ² ≈ 2.61803398875 + // 1/φ² ≈ 0.38196601125 + // φ² + 1/φ² = 3.000000 (exact within floating precision) const PHI : f64 = 1.61803398874989484820458683436563811772; const PHI_INV : f64 = 0.61803398874989484820458683436563811772; const PHI_SQ : f64 = PHI * PHI; @@ -25,43 +25,43 @@ module Constants { // TRINITY = 3.0 within numeric tolerance const TRINITY : f64 = 3.0; - // pi (pi) ~= 3.14159265359 + // π (pi) ≈ 3.14159265359 const PI : f64 = 3.14159265358979323846264338327950288; - // e (Euler's number) ~= 2.71828182846 + // e (Euler's number) ≈ 2.71828182846 const E : f64 = 2.7182818284590452353602874713526625; - // CODATA: G_measured = 6.67430767*10^-^1^1 m^3*kg^-^1*s^-^2 (SI units) + // CODATA: G_measured = 6.67430767×10⁻¹¹ m³·kg⁻¹·s⁻² (SI units) // Reference: Planck 2018/2020 (https://ui.adsabs.harvard.edu/energy.html) // Scale factors derived from CODATA measurements: - // G_scale = G / G_measured ~= 1.0001 (SI normalization) - // Omega_scale = Omega_Lambda / (Omega_Lambda_computed * phi^-^2) ~= 0.9995 - // ============================================================================= - // 2. CODATA 2022 Measurements -- sacred_gravity(), sacred_dark_energy() reference - // ===================================================================================== + // G_scale = G / G_measured ≈ 1.0001 (SI normalization) + // Ω_scale = Ω_Λ / (Ω_Λ_computed × φ⁻²) ≈ 0.9995 + // ═════════════════════════════════════════════════════════════════════════════ + // 2. CODATA 2022 Measurements — sacred_gravity(), sacred_dark_energy() reference + // ═════════════════════════════════════════════════════════════════════════════════════ // Gravitational constant G (measured) - // G = 6.67430 * 10^-11 m^3 kg^-^1 s^-^2 + // G = 6.67430 × 10^-11 m³ kg⁻¹ s⁻² const G_MEASURED : f64 = 6.67430e-11; - // Cosmological constant Lambda (dimensional) - // Lambda ~= 1.1056 * 10^-52 m^-^2 + // Cosmological constant Λ (dimensional) + // Λ ≈ 1.1056 × 10^-52 m⁻² const LAMBDA_COSMO : f64 = 1.1056e-52; - // Dark energy density parameter Omega_Lambda (dimensionless) - // Omega_Lambda ~= 0.685 (Planck 2018/2020) + // Dark energy density parameter Ω_Λ (dimensionless) + // Ω_Λ ≈ 0.685 (Planck 2018/2020) const OMEGA_LAMBDA_MEASURED : f64 = 0.685; // Scale factors for sacred formulas - // G_SCALE = G / G_measured ~= 1.0001 (SI normalization) - // OMEGA_COARSE_SCALE = Omega_Lambda_measured / Omega_Lambda_raw ~= 728.9 (measured/raw ratio) - // OMEGA_FINE_SCALE = Omega_Lambda_measured / (Omega_Lambda_computed * phi^-^2) ~= 0.9995 (from comment) + // G_SCALE = G / G_measured ≈ 1.0001 (SI normalization) + // OMEGA_COARSE_SCALE = Ω_Λ_measured / Ω_Λ_raw ≈ 728.9 (measured/raw ratio) + // OMEGA_FINE_SCALE = Ω_Λ_measured / (Ω_Λ_computed × φ⁻²) ≈ 0.9995 (from comment) const G_SCALE : f64 = 1.0001; const OMEGA_COARSE_SCALE : f64 = 728.9; - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 3. Helper Functions - // ===================================================================================== + // ═════════════════════════════════════════════════════════════════════════════════════ // Absolute value fn abs(x: f64) -> f64 { @@ -75,7 +75,7 @@ module Constants { fn pow(x: f64, n: f64) -> f64 { // Handle negative base with fractional exponent -> NaN if x < 0.0 and n != floor(n) { - return std.math.nan(f64); // NaN + return 0.0 / 0.0; // NaN } // Handle zero base @@ -85,7 +85,7 @@ module Constants { } else if n == 0.0 { return 1.0; // 0^0 defined as 1 in this context } - return std.math.inf(f64); // Infinity (division by zero) + return 1.0 / 0.0; // Infinity (division by zero) } // Handle n = 0 @@ -94,25 +94,25 @@ module Constants { } // Handle negative exponent: x^(-n) = 1/(x^n) - const negative = n < 0.0; - const exp = if (negative) -n else n; + let negative = n < 0.0; + let exp = if negative { -n } else { n }; // Check if exponent is an integer - const is_integer = exp == floor(exp); + let is_integer = exp == floor(exp); if is_integer { // Integer exponent: use binary exponentiation - const exp_int: i64 = @intFromFloat(exp); - var result: f64 = 1.0; - var base = x; - var e = exp_int; + let exp_int = exp as i64; + let mut result = 1.0; + let mut base = x; + let mut e = exp_int; while e > 0 { - if @rem(e, 2) == 1 { + if e % 2 == 1 { result = result * base; } base = base * base; - e = @divTrunc(e, 2); + e = e / 2; } if negative { @@ -124,8 +124,8 @@ module Constants { // Fractional exponent: use logarithm approximation // x^y = exp(y * ln(x)) // This is a simplified version for spec purposes - const ln_x = ln_approx(x); - var result = exp_approx(exp * ln_x); + let ln_x = ln_approx(x); + let result = exp_approx(exp * ln_x); if negative { result = 1.0 / result; @@ -137,7 +137,7 @@ module Constants { fn ln_approx(x: f64) -> f64 { // Handle edge cases if x <= 0.0 { - return std.math.nan(f64); // NaN for non-positive + return 0.0 / 0.0; // NaN for non-positive } if x == 1.0 { return 0.0; @@ -145,11 +145,11 @@ module Constants { // Use series: ln(x) = 2 * ((x-1)/(x+1) + 1/3*((x-1)/(x+1))^3 + ...) // For x > 0, compute (x-1)/(x+1) and use convergence - const t = (x - 1.0) / (x + 1.0); - const t2 = t * t; - const t3 = t2 * t; - const t5 = t3 * t2; - const t7 = t5 * t2; + let t = (x - 1.0) / (x + 1.0); + let t2 = t * t; + let t3 = t2 * t; + let t5 = t3 * t2; + let t7 = t5 * t2; return 2.0 * (t + t3 / 3.0 + t5 / 5.0 + t7 / 7.0); } @@ -163,25 +163,26 @@ module Constants { // Use Taylor series: e^x = 1 + x + x^2/2! + x^3/3! + ... // For small x (|x| < 1), series converges quickly - var result: f64 = 1.0; - var term: f64 = 1.0; + let mut result = 1.0; + let mut term = 1.0; + let mut n = 1; // For better range, use x/2^k approach - var exp_x = x; - var scale: f64 = 1.0; + let mut exp_x = x; + let scale = 1.0; if x > 10.0 { - const k: i64 = @intFromFloat(floor(x / 10.0)); - exp_x = x - @as(f64, @floatFromInt(k)) * 10.0; - scale = pow(E, @as(f64, @floatFromInt(k)) * 10.0); + let k = floor(x / 10.0) as i64; + exp_x = x - (k as f64) * 10.0; + scale = pow(E, (k as f64) * 10.0); } else if x < -10.0 { - const k: i64 = @intFromFloat(floor(-x / 10.0)); - exp_x = x + @as(f64, @floatFromInt(k)) * 10.0; - scale = 1.0 / pow(E, @as(f64, @floatFromInt(k)) * 10.0); + let k = floor(-x / 10.0) as i64; + exp_x = x + (k as f64) * 10.0; + scale = 1.0 / pow(E, (k as f64) * 10.0); } // Taylor series (10 terms sufficient for reasonable accuracy) - for (1..11) |i| { - term = term * exp_x / @as(f64, @floatFromInt(i)); + for i in 1..=10 { + term = term * exp_x / (i as f64); result = result + term; } @@ -190,65 +191,16 @@ module Constants { // Floor function (helper for power) fn floor(x: f64) -> f64 { - const xi: i64 = @intFromFloat(x); - if x >= 0.0 || x == @as(f64, @floatFromInt(xi)) { - return @as(f64, @floatFromInt(xi)); + let xi = x as i64; + if x >= 0.0 || x == xi as f64 { + return xi as f64; } - return @as(f64, @floatFromInt(xi - 1)); + return (xi - 1) as f64; } - // Default tolerance for approximately_equal/2. - // - // ABSOLUTE, not relative. The corpus already writes a third argument at 18 - // call sites and every one of them only makes sense as an absolute bound: - // ml/transformer/feed_forward passes 1.0 against a value near 828, and - // ml/transformer/positional_enc passes 1e-6 against 5000.0. Reading the - // third argument as a relative factor would turn those into a 100% window - // and a 5e-3 window respectively. One name must mean one thing, so the - // default is absolute too. - // - // 1e-9 and not another value, from the magnitudes actually compared: - // - Smallest 2-argument target in the corpus is 1e-6 (a learning rate; - // ml/optimizer/lr_scheduler compares against 1e-6 and against - // config.min_lr). At 1e-9 that check still rejects anything wrong by - // more than 0.1%, so it is not vacuous. A 1e-6 default would have made - // those three tests accept zero, which is the failure mode that makes a - // tolerance worse than none. - // - Largest 2-argument target is 50.0 (ml/transformer/positional_enc). - // One f64 ulp there is 7.1e-15, so 1e-9 leaves ~140,000 ulp of headroom - // -- far more than the handful of roundings in these expressions needs. - // - It is exactly the tightest tolerance the corpus asks for by hand - // (1e-9 at the phi identities, PHI*PHI == PHI + 1.0). So dropping the - // third argument never loosens a comparison below what some author here - // has already declared acceptable. - // - // At zero this reads as "|a| <= 1e-9", i.e. zero to within a nanounit. That - // is deliberate: nine 2-argument call sites compare against a literal 0.0 - // (ml/transformer/norm beta[0], ml/optimizer/sgd_momentum velocities), and a - // relative rule divides by zero there and would reject every value except an - // exact bit-identical 0.0. Absolute is the only rule that is defined at 0.0. - // - // To change it, change it here: every unqualified comparison in the ml/ - // specs moves with it. - pub const APPROX_TOLERANCE : f64 = 1e-9; - - // approximately_equal(a, b) -> a and b agree to within APPROX_TOLERANCE. - // Absolute: |a - b| <= APPROX_TOLERANCE. NaN on either side is never equal, - // because every comparison with NaN is false and <= is no exception. - pub fn approximately_equal(a: f64, b: f64) -> bool { - return abs(a - b) <= APPROX_TOLERANCE; - } - - // Same rule with the bound supplied by the caller, for the sites that - // already know what precision they can hold. Zig has neither default - // arguments nor overloading, so the two arities need two names. - pub fn approximately_equal_within(a: f64, b: f64, tolerance: f64) -> bool { - return abs(a - b) <= tolerance; - } - - // ============================================================================= + // ═════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Sacred Physics Constants - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ test phi_squared_plus_inverse_squared_equals_3 given phi = PHI @@ -336,51 +288,6 @@ module Constants { given result = floor(5.0) then result == 5.0 - test approximately_equal_accepts_exact_equality - given result = approximately_equal(0.1, 0.1) - then result == true - - test approximately_equal_accepts_just_inside_the_bound - given result = approximately_equal(1.0, 1.0 + 5e-10) - then result == true - - test approximately_equal_rejects_just_outside_the_bound - given result = approximately_equal(1.0, 1.0 + 5e-9) - then result == false - - test approximately_equal_is_symmetric_in_its_arguments - given forward = approximately_equal(2.0, 2.0 + 5e-9) - and backward = approximately_equal(2.0 + 5e-9, 2.0) - then forward == backward - - // At zero the rule is |a| <= APPROX_TOLERANCE, not a relative test. - test approximately_equal_at_zero_accepts_a_nanounit - given result = approximately_equal(0.0, 1e-12) - then result == true - - test approximately_equal_at_zero_rejects_a_microunit - given result = approximately_equal(0.0, 1e-6) - then result == false - - // The reason the default is 1e-9 and not 1e-6: ml/optimizer/lr_scheduler - // compares learning rates against 1e-6, and at a 1e-6 tolerance that check - // would accept a learning rate of zero. - test approximately_equal_is_not_vacuous_at_learning_rate_scale - given result = approximately_equal(1e-6, 0.0) - then result == false - - test approximately_equal_holds_at_the_largest_compared_magnitude - given result = approximately_equal(50.0, 50.0 + 1e-12) - then result == true - - test approximately_equal_within_honours_a_looser_bound - given result = approximately_equal_within(828.0, 828.5, 1.0) - then result == true - - test approximately_equal_within_honours_a_tighter_bound - given result = approximately_equal_within(1.0, 1.0 + 1e-10, 1e-12) - then result == false - invariant phi_squared_plus_inverse_squared_equals_3 assert |PHI*PHI + 1.0/(PHI*PHI) - 3.0| < 1e-12 @@ -391,7 +298,7 @@ module Constants { assert |PHI_INV - (PHI - 1.0)| < 1e-15 invariant phi_golden_conjugate - assert |PHI - PHI_INV - 1.0| < 1e-12 + assert |PHI + PHI_INV - 1.0/PHI_INV| < 1e-12 invariant phi_fibonacci_convergence assert lim(n->inf) Fib(n+1)/Fib(n) = PHI @@ -409,7 +316,7 @@ module Constants { // Rationale: e is proven to be irrational (Euler, 1737) invariant codata_gravitational_constant - assert G_MEASURED = 6.67430e-11 +/- 1.5e-15 + assert abs(G_MEASURED - 6.67430e-11) < 1.5e-15 // Rationale: CODATA 2022 measured value with uncertainty invariant cosmological_constant_positive diff --git a/apps/website/public/t27/files/specs/math/e8_lie_algebra.t27 b/apps/website/public/t27/files/specs/math/e8_lie_algebra.t27 index 74698d0b56..82a1bd213d 100644 --- a/apps/website/public/t27/files/specs/math/e8_lie_algebra.t27 +++ b/apps/website/public/t27/files/specs/math/e8_lie_algebra.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/e8_lie_algebra.t27 -// E8 Exceptional Lie Algebra -- Root System, Cartan Matrix, Eigenvalues +// E8 Exceptional Lie Algebra — Root System, Cartan Matrix, Eigenvalues // Direction A (Priority 2) of PROJECT KEPLER->NEWTON // // E8 is the largest exceptional simple Lie group. Its root system contains @@ -16,10 +16,10 @@ // 5. McKay correspondence: binary icosahedral group 2I <-> affine E8 // // References: -// - Dechant, Proc. Roy. Soc. A 472 (2016) -- E8 from icosahedral spinors -// - Aschheim, Minkowski Inst. Press (2017) -- E9 eigenvalues contain phi^2 -// - Humphreys, "Introduction to Lie Algebras" -- standard reference -// - Kac, "Infinite-Dimensional Lie Algebras" -- affine E8 +// - Dechant, Proc. Roy. Soc. A 472 (2016) — E8 from icosahedral spinors +// - Aschheim, Minkowski Inst. Press (2017) — E9 eigenvalues contain phi^2 +// - Humphreys, "Introduction to Lie Algebras" — standard reference +// - Kac, "Infinite-Dimensional Lie Algebras" — affine E8 module E8LieAlgebra { use math::constants; @@ -174,7 +174,7 @@ module E8LieAlgebra { // E8 roots decompose as: Phi(E8) = H4 + phi*H4 // Two copies of the 600-cell, scaled by phi - // H4 exponents: {1, 11, 19, 29} -- subset of E8 exponents + // H4 exponents: {1, 11, 19, 29} — subset of E8 exponents const H4_EXPONENTS : [4]i64 = [1, 11, 19, 29]; // phi appears because cos(pi/5) = phi/2 connects 5-fold rotation to phi diff --git a/apps/website/public/t27/files/specs/math/gf_competitive.t27 b/apps/website/public/t27/files/specs/math/gf_competitive.t27 index 7c67c748ff..2a74e559fb 100644 --- a/apps/website/public/t27/files/specs/math/gf_competitive.t27 +++ b/apps/website/public/t27/files/specs/math/gf_competitive.t27 @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/gf_competitive.t27 -// GoldenFloat Competitive Analysis -- GF vs Posit vs IEEE 754 -// MATH-COMPETITIVE-001 -- Decode latency, parallelism, hardware efficiency +// GoldenFloat Competitive Analysis — GF vs Posit vs IEEE 754 +// MATH-COMPETITIVE-001 — Decode latency, parallelism, hardware efficiency // // Ring 051: Competitive analysis showing GF's structural advantages // Main result: GF has O(1) parallel decode vs Posit's O(N) sequential @@ -10,9 +10,9 @@ module GFCompetitive { use math::constants; use math::sacred_physics; - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 1. Decode Complexity Analysis - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ // Decode operation counts (worst case) struct DecodeComplexity { @@ -46,9 +46,9 @@ module GFCompetitive { ]; } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // Tests - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ test "decode_complexity_returns_3_formats" { let complexity = decode_complexity(); @@ -80,9 +80,9 @@ module GFCompetitive { assert!(complexity[1].steps_sequential > complexity[2].steps_sequential); } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // Invariants - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ invariant "decode_complexity_always_returns_3_entries" { let complexity = decode_complexity(); @@ -107,9 +107,9 @@ module GFCompetitive { } } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // Benchmarks - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ bench "decode_complexity" { let iterations = 10000; diff --git a/apps/website/public/t27/files/specs/math/pellis_precision_verify.t27 b/apps/website/public/t27/files/specs/math/pellis_precision_verify.t27 index 561f4812e6..51de1a35bc 100644 --- a/apps/website/public/t27/files/specs/math/pellis_precision_verify.t27 +++ b/apps/website/public/t27/files/specs/math/pellis_precision_verify.t27 @@ -1,29 +1,29 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/pellis_precision_verify.t27 // Arbitrary precision verification via GMP/MPFR reference -// NUMERIC-VERIF-001 -- Pre-registered checkpoint for CODATA 2026 +// NUMERIC-VERIF-001 — Pre-registered checkpoint for CODATA 2026 module PellisPrecision { use math::constants; use math::sacred_physics; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Golden Ratio at 100 Decimal Digits (pre-computed via GMP) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // phi = (1 + sqrt5) / 2 at 100 decimal places + // φ = (1 + √5) / 2 at 100 decimal places // Computed once via GMP/mpmath, sealed as constant // Reference: mpmath.mpf(1).sqrt(5) + 1) / 2 at 100 digits precision const PHI_100DIGITS : string = "1.61803398874989484820458683436563811772030917980576286213544862270526046281890244970720720418939113748475"; - // phi^-^1 = phi - 1 at 100 decimal places + // φ⁻¹ = φ - 1 at 100 decimal places const PHI_INV_100DIGITS : string = "0.61803398874989484820458683436563811772030917980576286213544862270526046281890244970720720418939113748475"; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. Pellis Closed Form at 50 Decimal Digits (pre-registered checkpoint) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // Pellis = 360/phi^2 - 2/phi^3 + (3phi)^-^5 + // Pellis = 360/φ² - 2/φ³ + (3φ)⁻⁵ // Pre-registered for CODATA 2026/2030 comparison // Computed via GMP: 360/mp.mpf(phi**2) - 2/mp.mpf(phi**3) + (3*phi)**(-5) // 50 digits after the decimal point; refresh: python3 scripts/print_pellis_seal_decimal.py 55 @@ -32,12 +32,12 @@ module PellisPrecision { // CODATA 2022 reference: 137.035999166(15) const ALPHA_INV_CODATA_2022 : string = "137.035999166"; - // f64-style fixed prefix (~=15 significant fractional digits; IEEE rounding) + // f64-style fixed prefix (≈15 significant fractional digits; IEEE rounding) const PELLIS_FIRST_15_DIGITS : string = "137.035999164765"; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Verification Tests (string compare against pre-computed values) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct PellisPrecisionResult { phi_f64 : f64, @@ -53,7 +53,7 @@ module PellisPrecision { const phi_sq = phi * phi; const phi_cubed = phi * phi * phi; - // Compute Pellis via f64 (NOT 50-digit accurate -- this test documents limit) + // Compute Pellis via f64 (NOT 50-digit accurate — this test documents limit) const pellis_f64 = 360.0 / phi_sq - 2.0 / phi_cubed + (3.0 * phi).pow(-5.0); // Count significant decimal digits of f64 representation @@ -109,18 +109,18 @@ module PellisPrecision { return x.to_string(); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Helper functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn len(s: string) -> i32 { // String length stub - implementation dependent return 100; // Placeholder } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Pellis Precision Verification - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test pellis_pre_registered_checkpoint_matches given result = pellis_pre_registered_checkpoint() @@ -161,9 +161,9 @@ module PellisPrecision { // This test ensures the formula is documented for reviewers then true // Formula is documented in comments above - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant pellis_50_digits_constant assert PELLIS_50DIGITS.starts_with("137.035999") @@ -189,9 +189,9 @@ module PellisPrecision { invariant pellis_first_15_digits_extracted_correctly assert PELLIS_FIRST_15_DIGITS.starts_with("137.035999164") - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench pellis_f64_computation measure: nanoseconds to compute pellis_pre_registered_checkpoint() diff --git a/apps/website/public/t27/files/specs/math/phi_split_optimality.t27 b/apps/website/public/t27/files/specs/math/phi_split_optimality.t27 index 56de95bc30..4be3404956 100644 --- a/apps/website/public/t27/files/specs/math/phi_split_optimality.t27 +++ b/apps/website/public/t27/files/specs/math/phi_split_optimality.t27 @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/phi_split_optimality.t27 -// Phi-Split Theorems -- Self-Similarity + Optimal Rounding (CORRECTED) -// MATH-OPTIMALITY-001 -- Foundation for GoldenFloat being non-random +// Phi-Split Theorems — Self-Similarity + Optimal Rounding (CORRECTED) +// MATH-OPTIMALITY-001 — Foundation for GoldenFloat being non-random // // THEOREM 1 (Golden Self-Similarity): phi is unique self-similar proportion for bit allocation // THEOREM 2 (Optimal Rounding): round((N-1)/phi^2) minimizes phi-distance (7/7 match) @@ -23,7 +23,7 @@ module PhiSplitOptimality { // Solving: (exp/mant)^2 + (exp/mant) - 1 = 0 -> exp/mant = 1/phi // // IMPORTANT: This is NOT an optimization problem (maximizing e*m gives r=1 by AM-GM). - // This is a self-similarity constraint -- a defining property of the golden ratio. + // This is a self-similarity constraint — a defining property of the golden ratio. const PHI_TARGET : f64 = sacred_physics::PHI_INV; // 1/phi approx 0.618... @@ -45,7 +45,7 @@ module PhiSplitOptimality { // r = (sqrt(5) - 1)/2 = 1/phi approx 0.618 // // This follows directly from phi^2 = phi + 1, the defining property of phi. - // It is NOT an optimization result -- it's a self-similarity property. + // It is NOT an optimization result — it's a self-similarity property. fn optimal_ratio_by_self_similarity(available: u8) -> (u8, u8) { // Self-similarity constraint: exp/mant = 1/phi diff --git a/apps/website/public/t27/files/specs/math/phi_universal_attractor.t27 b/apps/website/public/t27/files/specs/math/phi_universal_attractor.t27 index 5268cadd80..0142039342 100644 --- a/apps/website/public/t27/files/specs/math/phi_universal_attractor.t27 +++ b/apps/website/public/t27/files/specs/math/phi_universal_attractor.t27 @@ -1,38 +1,38 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/phi_universal_attractor.t27 -// Phi Universal Attractor Theorems -- Theorem 3: phi as Universal Fixed-Point -// MATH-ATTRACTOR-001 -- Generative mechanism for phi proportion +// Phi Universal Attractor Theorems — Theorem 3: φ as Universal Fixed-Point +// MATH-ATTRACTOR-001 — Generative mechanism for φ proportion // -// THEOREM 3: phi is the unique fixed point of balancing recursion f(x) = (x + x^-^1 + 1) / 2 -// This addresses the critic's concern that phi is "fitting" rather than a true mechanism. +// THEOREM 3: φ is the unique fixed point of balancing recursion f(x) = (x + x⁻¹ + 1) / 2 +// This addresses the critic's concern that φ is "fitting" rather than a true mechanism. module PhiUniversalAttractor { use math::constants; use math::sacred_physics; - // =========================================================================== - // 1. THEOREM 3: phi as Universal Fixed-Point Attractor - // ========================================================================================= + // ═══════════════════════════════════════════════════════════════════════════ + // 1. THEOREM 3: φ as Universal Fixed-Point Attractor + // ═════════════════════════════════════════════════════════════════════════════════════════ // The balancing recursion captures a fundamental dynamic: allocate a component // while maintaining balance with its complement. This is a zero-parameter mechanism. // - // From any positive starting point x_0 > 0, iteration converges - // exponentially to phi with rate lambda = (sqrt5 - 1) / 4 ~= 0.309. + // From any positive starting point x₀ > 0, iteration converges + // exponentially to φ with rate λ = (√5 - 1) / 4 ≈ 0.309. - // The balancing function: f(x) = (x + x^-^1 + 1) / 2 + // The balancing function: f(x) = (x + x⁻¹ + 1) / 2 fn balancing_recursion(x: f64) -> f64 { const inv = 1.0 / x; return (x + inv + 1.0) / 2.0; } - // Theoretical convergence rate lambda = (sqrt5 - 1) / 4 + // Theoretical convergence rate λ = (√5 - 1) / 4 // This is the Lipschitz constant for the contraction mapping f const CONVERGENCE_RATE_LAMBDA: f64 = (sqrt(5.0) - 1.0) / 4.0; - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 2. Iteration to Fixed Point - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // Result tuple: (final_value, iterations, phi_distance) struct ConvergenceResult { @@ -41,7 +41,7 @@ module PhiUniversalAttractor { phi_error : f64, } - // Iterate from starting point until convergence to phi + // Iterate from starting point until convergence to φ fn iterate_to_fixed_point(x0: f64, max_iter: u8, tolerance: f64) -> ConvergenceResult { let mut x = x0; let mut iter = 0; @@ -68,11 +68,11 @@ module PhiUniversalAttractor { }; } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 3. Contraction Mapping Analysis - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ - // Derivative of f: f'(x) = (1 - x^-^2) / 2 + // Derivative of f: f'(x) = (1 - x⁻²) / 2 // This shows f is a contraction mapping for x > 0 fn balancing_derivative(x: f64) -> f64 { const inv_sq = 1.0 / (x * x); @@ -82,12 +82,12 @@ module PhiUniversalAttractor { // Maximum derivative magnitude (Lipschitz constant) for x > 0 // |f'(x)| < 0.5 for all x > 0, proving contraction fn max_lipschitz_constant() -> f64 { - return 0.5; // |(1 - x^-^2)/2| < 0.5 for all x > 0 + return 0.5; // |(1 - x⁻²)/2| < 0.5 for all x > 0 } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 4. Proof Steps Documentation - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ struct ProofStep { description : string, @@ -99,17 +99,17 @@ module PhiUniversalAttractor { return [ ProofStep{ description = "Balancing function definition", - equation = "f(x) = (x + x^-^1 + 1) / 2", + equation = "f(x) = (x + x⁻¹ + 1) / 2", result = "Fundamental balancing dynamic", }, ProofStep{ description = "Phi satisfies fixed point", - equation = "f(phi) = (phi + phi^-^1 + 1) / 2 = (phi + (phi - 1) + 1) / 2 = phi", - result = "phi is a fixed point of f", + equation = "f(φ) = (φ + φ⁻¹ + 1) / 2 = (φ + (φ - 1) + 1) / 2 = φ", + result = "φ is a fixed point of f", }, ProofStep{ description = "Contraction property", - equation = "|f'(x)| = |(1 - x^-^2)/2| < 0.5 for all x > 0", + equation = "|f'(x)| = |(1 - x⁻²)/2| < 0.5 for all x > 0", result = "Banach fixed-point theorem guarantees unique attractor", }, ]; @@ -119,36 +119,36 @@ module PhiUniversalAttractor { return [ ProofStep{ description = "Derivative bounds", - equation = "f'(x) = (1 - x^-^2)/2, so |f'(x)| < 0.5", + equation = "f'(x) = (1 - x⁻²)/2, so |f'(x)| < 0.5", result = "f is a contraction mapping", }, ProofStep{ description = "Lipschitz constant", - equation = "lambda = (sqrt5 - 1)/4 ~= 0.309", - result = "Error decays as |x655 - 656| 657 658659 |x660 - 661|", + equation = "λ = (√5 - 1)/4 ≈ 0.309", + result = "Error decays as |xₙ - φ| ≤ λⁿ |x₀ - φ|", }, ProofStep{ description = "Exponential convergence", - equation = "lim(n662663) f664(x665) = 666 for all x667 > 0", + equation = "lim(n→∞) fⁿ(x₀) = φ for all x₀ > 0", result = "Universal attractor property", }, ProofStep{ description = "Zero parameters", - equation = "No fitting constants -- phi emerges from f's structure", + equation = "No fitting constants — φ emerges from f's structure", result = "Generative mechanism, not fitted narrative", }, ]; } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 5. Connection to Bit Allocation - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ - // The GF bit allocation (exp/mant ~= 1/phi) is a special case - // of the universal attractor: any balancing dynamic of form f(x) = (x + x^-^1 + 1)/2 - // will converge to phi-proportional allocation regardless of initialization. + // The GF bit allocation (exp/mant ≈ 1/φ) is a special case + // of the universal attractor: any balancing dynamic of form f(x) = (x + x⁻¹ + 1)/2 + // will converge to φ-proportional allocation regardless of initialization. fn bit_allocation_attractor(available_bits: u8, initial_ratio: f64) -> (u8, u8, f64) { - // Simulate evolution of bit allocation ratio to phi + // Simulate evolution of bit allocation ratio to φ const target_ratio = sacred_physics::PHI_INV; let mut current_ratio = initial_ratio; @@ -169,9 +169,9 @@ module PhiUniversalAttractor { return (exp, mant, current_ratio); } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 6. TDD-Inside-Spec: Tests - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ test phi_is_fixed_point_of_f given phi = sacred_physics::PHI @@ -251,11 +251,11 @@ module PhiUniversalAttractor { given phi_computed_from_iter = iterate_to_fixed_point(2.0, 50, 1e-14) and phi_ref = sacred_physics::PHI then phi_computed_from_iter.phi_error < 1e-13 - // Note: No "fitting constants" used -- pure recursion f + // Note: No "fitting constants" used — pure recursion f - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 7. Invariants - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ invariant convergence_rate_is_positive assert CONVERGENCE_RATE_LAMBDA > 0.0 @@ -280,8 +280,8 @@ module PhiUniversalAttractor { forall i in 0..test_points.length(), abs(balancing_derivative(test_points[i])) < 0.5 invariant unique_attractor_property - // 1127 is the ONLY fixed point of f on R1128 - // If f(x) = x for x > 0, then x = phi + // φ is the ONLY fixed point of f on R⁺ + // If f(x) = x for x > 0, then x = φ assert balancing_recursion(sacred_physics::PHI) == sacred_physics::PHI invariant fixed_point_proof_steps_complete @@ -291,31 +291,31 @@ module PhiUniversalAttractor { assert convergence_proof_steps().length() == 4 invariant zero_free_parameters - // Mechanism is analytically defined -- no fitting constants + // Mechanism is analytically defined — no fitting constants assert CONVERGENCE_RATE_LAMBDA == (sqrt(5.0) - 1.0) / 4.0 invariant universal_attractor_from_positive_reals - // For ANY x_0 > 0, iteration converges to phi + // For ANY x₀ > 0, iteration converges to φ given start_values = [0.01, 0.1, 1.0, 10.0, 100.0] forall i in 0..start_values.length(), { let result = iterate_to_fixed_point(start_values[i], 30, 1e-13); result.phi_error < 1e-12 } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 8. Benchmarks - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ bench balancing_recursion_single_call measure: nanoseconds for one balancing_recursion() call target: < 50ns bench iterate_to_convergence_from_arbitrary_start - measure: nanoseconds to converge from x_0 = 0.5 + measure: nanoseconds to converge from x₀ = 0.5 target: < 500ns bench iterate_to_convergence_from_large_start - measure: nanoseconds to converge from x_0 = 10.0 + measure: nanoseconds to converge from x₀ = 10.0 target: < 500ns bench derivative_computation diff --git a/apps/website/public/t27/files/specs/math/property_test_template.t27 b/apps/website/public/t27/files/specs/math/property_test_template.t27 index ee9b9555be..63d2403764 100644 --- a/apps/website/public/t27/files/specs/math/property_test_template.t27 +++ b/apps/website/public/t27/files/specs/math/property_test_template.t27 @@ -4,33 +4,33 @@ // Ring 053 - Defines reusable property testing patterns // This spec provides templates for property-based testing of T27 formats // Properties: mathematical invariants that must hold for ALL valid inputs -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module PropertyTestTemplate { use math::constants; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Property Test Types - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Property test strategies - const STRATEGY_RANDOM : i32 = 0; // Random generation with N samples - const STRATEGY_EXHAUSTIVE : i32 = 1; // Exhaustive for small domains - const STRATEGY_BOUNDARY : i32 = 2; // Focus on boundary conditions + const STRATEGY_RANDOM : i32 = 0 // Random generation with N samples + const STRATEGY_EXHAUSTIVE : i32 = 1 // Exhaustive for small domains + const STRATEGY_BOUNDARY : i32 = 2 // Focus on boundary conditions // Sample sizes for random testing - const SAMPLE_SIZE_SMALL : i32 = 100; - const SAMPLE_SIZE_MEDIUM : i32 = 1000; - const SAMPLE_SIZE_LARGE : i32 = 10000; + const SAMPLE_SIZE_SMALL : i32 = 100 + const SAMPLE_SIZE_MEDIUM : i32 = 1000 + const SAMPLE_SIZE_LARGE : i32 = 10000 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. Property Definitions (as test generators) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Test associativity: (a op b) op c = a op (b op c) for all a,b,c // Domain: binary operations // Examples: addition, multiplication, trit-add - fn test_associative_add(values: []const f64, len: usize) -> bool { + fn test_associative_add(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { var j : usize = 0 @@ -55,7 +55,7 @@ module PropertyTestTemplate { } // Test associativity for multiplication - fn test_associative_mul(values: []const f64, len: usize) -> bool { + fn test_associative_mul(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { var j : usize = 0 @@ -81,7 +81,7 @@ module PropertyTestTemplate { // Test commutativity: a op b = b op a for all a,b // Domain: binary operations - fn test_commutative_add(values: []const f64, len: usize) -> bool { + fn test_commutative_add(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { var j : usize = 0 @@ -100,7 +100,7 @@ module PropertyTestTemplate { return true } - fn test_commutative_mul(values: []const f64, len: usize) -> bool { + fn test_commutative_mul(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { var j : usize = 0 @@ -120,7 +120,7 @@ module PropertyTestTemplate { } // Test distributivity: a * (b + c) = (a * b) + (a * c) - fn test_distributive_mul_add(values: []const f64, len: usize) -> bool { + fn test_distributive_mul_add(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { var j : usize = 0 @@ -145,7 +145,7 @@ module PropertyTestTemplate { } // Test identity: a + 0 = a, a * 1 = a - fn test_identity_add(values: []const f64, len: usize) -> bool { + fn test_identity_add(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { const a = values[i] @@ -158,7 +158,7 @@ module PropertyTestTemplate { return true } - fn test_identity_mul(values: []const f64, len: usize) -> bool { + fn test_identity_mul(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { const a = values[i] @@ -172,7 +172,7 @@ module PropertyTestTemplate { } // Test inverse: a + (-a) = 0, a * (1/a) = 1 (for a != 0) - fn test_inverse_add(values: []const f64, len: usize) -> bool { + fn test_inverse_add(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { const a = values[i] @@ -185,7 +185,7 @@ module PropertyTestTemplate { return true } - fn test_inverse_mul(values: []const f64, len: usize) -> bool { + fn test_inverse_mul(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { const a = values[i] @@ -201,7 +201,7 @@ module PropertyTestTemplate { } // Test idempotence: min(a,a) = a, max(a,a) = a - fn test_idempotent_min(values: []const f64, len: usize) -> bool { + fn test_idempotent_min(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { const a = values[i] @@ -215,7 +215,7 @@ module PropertyTestTemplate { return true } - fn test_idempotent_max(values: []const f64, len: usize) -> bool { + fn test_idempotent_max(values: []f64, len: usize) -> bool { var i : usize = 0 while (i < len) { const a = values[i] @@ -238,9 +238,9 @@ module PropertyTestTemplate { return result as i64 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Helper Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Absolute value fn abs(x: f64) -> f64 { @@ -253,31 +253,31 @@ module PropertyTestTemplate { // Power function fn pow(x: f64, n: f64) -> f64 { if (x < 0.0 and n != floor(n)) { - return std.math.nan(f64) // NaN + return 0.0 / 0.0 // NaN } if (x == 0.0) { if (n > 0.0) { return 0.0 } if (n == 0.0) { return 1.0 } - return std.math.inf(f64) + return 1.0 / 0.0 } if (n == 0.0) { return 1.0 } - const negative = n < 0.0 - const exp = if (negative) { -n } else { n } - const is_integer = exp == floor(exp) + let negative = n < 0.0 + let exp = if (negative) { -n } else { n } + let is_integer = exp == floor(exp) if (is_integer) { - const exp_int = exp as i64 - var result : f64 = 1.0 + let exp_int = exp as i64 + var result = 1.0 var base = x var e = exp_int while (e > 0) { - if (@rem(e, 2) == 1) { + if (e % 2 == 1) { result = result * base } base = base * base - e = @divTrunc(e, 2) + e = e / 2 } if (negative) { result = 1.0 / result } @@ -285,9 +285,9 @@ module PropertyTestTemplate { } // Fractional: use log/exp approximation - const ln_x = ln(x) - var result : f64 = 1.0 - var term : f64 = 1.0 + let ln_x = ln(x) + var result = 1.0 + var term = 1.0 var i : u32 = 1 while (i <= 12) { term = term * exp * ln_x / @as(f64, @floatFromInt(i)) @@ -302,31 +302,31 @@ module PropertyTestTemplate { // Natural logarithm fn ln(x: f64) -> f64 { if (x <= 0.0) { - return std.math.nan(f64) + return 0.0 / 0.0 } if (x == 1.0) { return 0.0 } - const t = (x - 1.0) / (x + 1.0) - const t2 = t * t - const t3 = t2 * t - const t5 = t3 * t2 - const t7 = t5 * t2 + let t = (x - 1.0) / (x + 1.0) + let t2 = t * t + let t3 = t2 * t + let t5 = t3 * t2 + let t7 = t5 * t2 return 2.0 * (t + t3 / 3.0 + t5 / 5.0 + t7 / 7.0) } // Floor function fn floor(x: f64) -> f64 { - const xi = x as i64 + let xi = x as i64 if (x >= 0.0 or x == xi as f64) { return xi as f64 } return (xi - 1) as f64 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test associative_addition given values = [_]f64{1.0, 2.0, 3.0, -1.5, 0.5, 0.0} @@ -419,9 +419,9 @@ module PropertyTestTemplate { when result = test_tritspace_dimension(n) then result == 243 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant associative_invariant // Associativity is a fundamental property for many operations @@ -457,9 +457,9 @@ module PropertyTestTemplate { assert test_tritspace_dimension(4) == 81 // Rationale: N trits can represent 3^N distinct states - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench property_test_associative // Measure: cycles to test associativity on 10 values diff --git a/apps/website/public/t27/files/specs/math/radix_economy.t27 b/apps/website/public/t27/files/specs/math/radix_economy.t27 index 436c0a6e75..5c5b6f2446 100644 --- a/apps/website/public/t27/files/specs/math/radix_economy.t27 +++ b/apps/website/public/t27/files/specs/math/radix_economy.t27 @@ -1,35 +1,35 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/radix_economy.t27 -// Radix Economy Formal Spec -- Information-Theoretic Basis for Base-3 Computing -// E(b) = ln(b)/b, maximized at b = e ~= 2.71828 +// Radix Economy Formal Spec — Information-Theoretic Basis for Base-3 Computing +// E(b) = ln(b)/b, maximized at b = e ≈ 2.71828 // E(3)/E(e) >= 99.5%, E(3)/E(2) = 1.054 (5.4% advantage) module RadixEconomy { use Constants; - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 1. Radix Economy Constants - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ - // E(b) = ln(b) / b -- information per digit - // E(2) = ln(2)/2 ~= 0.34657 -- binary radix economy + // E(b) = ln(b) / b — information per digit + // E(2) = ln(2)/2 ≈ 0.34657 — binary radix economy const E_BASE2 : f64 = 0.34657359027997264; // ln(2)/2 - // E(3) = ln(3)/3 ~= 0.36620 -- ternary radix economy + // E(3) = ln(3)/3 ≈ 0.36620 — ternary radix economy const E_BASE3 : f64 = 0.3662040962227032; // ln(3)/3 - // E(e) = 1/e ~= 0.36788 -- optimal radix economy (theoretical maximum) + // E(e) = 1/e ≈ 0.36788 — optimal radix economy (theoretical maximum) const E_OPTIMAL : f64 = 0.36787944117144233; // 1/e - // log2(3) ~= 1.58496 -- bits per trit (information density) + // log2(3) ≈ 1.58496 — bits per trit (information density) const LOG2_3 : f64 = 1.584962500721156; - // log3(2) ~= 0.63093 -- trits per bit (inverse density) + // log3(2) ≈ 0.63093 — trits per bit (inverse density) const LOG3_2 : f64 = 0.6309297535714574; - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 2. Radix Economy Functions - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ // Compute radix economy for base b fn radix_economy(b: f64) -> f64 { @@ -61,9 +61,9 @@ module RadixEconomy { return (pow(2.0, n as f64) - 1.0) as i64; } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 3. Helper Functions (logarithms) - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ // Natural logarithm fn ln(x: f64) -> f64 { @@ -159,9 +159,9 @@ module RadixEconomy { return (xi - 1) as f64; } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 4. TDD-Inside-Spec: Tests for Radix Economy - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ test e_base3_near_optimal given e3 = E_BASE3 @@ -254,9 +254,9 @@ module RadixEconomy { and abs(log2_4 - 2.0) < 1e-6 and abs(log2_8 - 3.0) < 1e-6 - // =========================================================================== - // 5. Formal Invariants -- Mathematical Truths - // ========================================================================================= + // ═══════════════════════════════════════════════════════════════════════════ + // 5. Formal Invariants — Mathematical Truths + // ═════════════════════════════════════════════════════════════════════════════════════════ invariant base3_995_percent_optimal assert E_BASE3 / E_OPTIMAL >= 0.995 @@ -272,7 +272,7 @@ module RadixEconomy { invariant log2_3_in_range assert LOG2_3 >= 1.58496 and LOG2_3 <= 1.58497 - // Rationale: log2(3) ~= 1.584962500721156 + // Rationale: log2(3) ≈ 1.584962500721156 invariant trit_info_density assert LOG2_3 > 1.5 and LOG2_3 < 2.0 @@ -297,20 +297,20 @@ module RadixEconomy { invariant range_equivalence_27trit_43bit assert ternary_range(27) <= binary_range(43) and ternary_range(27) > binary_range(42) - // Rationale: (3^27-1)/2 ~= 3.8e12, 2^42 ~= 4.4e12, 2^43 ~= 8.8e12 + // Rationale: (3^27-1)/2 ≈ 3.8e12, 2^42 ≈ 4.4e12, 2^43 ≈ 8.8e12 invariant range_equivalence_18trit_29bit assert ternary_range(18) <= binary_range(29) and ternary_range(18) > binary_range(28) - // Rationale: 3^18 ~= 3.9e8, 2^28 ~= 2.7e8, 2^29 ~= 5.4e8 + // Rationale: 3^18 ≈ 3.9e8, 2^28 ≈ 2.7e8, 2^29 ≈ 5.4e8 invariant log_reciprocal_identity - assert LOG3_2 * LOG2_3 = 1.0 within 1e-6 + assert abs(LOG3_2 * LOG2_3 - 1.0) < 1e-6 // Rationale: log_a(b) * log_b(a) = 1 for any valid bases - // =========================================================================== - // 6. Benchmarks -- Performance Targets - // ========================================================================================= + // ═══════════════════════════════════════════════════════════════════════════ + // 6. Benchmarks — Performance Targets + // ═════════════════════════════════════════════════════════════════════════════════════════ bench radix_economy_computation measure: cycles to compute radix_economy(3.0) diff --git a/apps/website/public/t27/files/specs/math/sacred_physics.t27 b/apps/website/public/t27/files/specs/math/sacred_physics.t27 index b5c72d9f83..184253a11e 100644 --- a/apps/website/public/t27/files/specs/math/sacred_physics.t27 +++ b/apps/website/public/t27/files/specs/math/sacred_physics.t27 @@ -1,14 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/sacred_physics.t27 -// Strand I 0 Mathematical Foundation +// Strand I — Mathematical Foundation // Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime. module SacredPhysics { // Import base constants: PHI, PHI_INV, PI, E, G_MEASURED, OMEGA_LAMBDA_MEASURED use math::constants; -// 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 +// ───────────────────────────────────────────────────── // 1. TRINITY identity and derived dimensionless constants -// 54555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 +// ───────────────────────────────────────────────────── // Claim IDs: C-phi-001 (EXACT for mathematical identity, CONJECTURAL for physics interpretation) const PHI : f64 = constants::PHI; // 1.618... (golden ratio) const PHI_INV : f64 = constants::PHI_INV; // 0.618... (inverse golden ratio) @@ -19,7 +19,7 @@ module SacredPhysics { // Claim: C-phi-001 (EXACT - mathematical identity), tolerance: EXACT const TRINITY : f64 = PHI_SQ + PHI_INV_SQ; - // Barbero107Immirzi parameter from pure math: gamma = phi^{-3} + // Barbero–Immirzi parameter from pure math: gamma = phi^{-3} // Claim: C-phi-001 (CONJECTURAL - physics interpretation), tolerance: CONJECTURAL const GAMMA_LQG : f64 = pow(PHI, -3.0); @@ -39,18 +39,12 @@ module SacredPhysics { return (phi_cubed * pi) / GAMMA_LQG; } - fn sin2_theta12_trinity() -> f64 { - const phi_neg2 = PHI_INV * PHI_INV; - const pi2 = constants::PI * constants::PI; - return 8.0 * phi_neg2 / pi2; - } - - // 108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 - // 1.5 161 power helper functions - // 162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 + // ───────────────────────────────────────────────────── + // 1.5 φ power helper functions + // ───────────────────────────────────────────────────── // phi_pow(n: i64) -> f64 - // Efficient computation of 215^n using recurrence 216^2 = 217 + 1 + // Efficient computation of φ^n using recurrence φ^2 = φ + 1 // Handles positive, zero, and negative exponents fn phi_pow(n: i64) -> f64 { if n == 0 { @@ -85,9 +79,9 @@ module SacredPhysics { return result; } -// 218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 +// ───────────────────────────────────────────────────── // 2. Gravity & dark energy from TRINITY -// 271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 +// ───────────────────────────────────────────────────── // Claim IDs: C-phi-005 (EMPIRICAL_FIT - Trinity monomials for fundamental constants) // Sacred gravity prediction: G_sacred = pi^3 * gamma^2 / phi @@ -99,20 +93,19 @@ module SacredPhysics { return (pi_cub * g2) / PHI; } - // Sacred dark energy fraction: Omega_L = 8 * gamma^3 * pi^5 / phi^8 + // Sacred dark energy fraction: Omega_L = gamma^8 * pi^4 / phi^2 // Claim: C-phi-005 (EMPIRICAL_FIT), tolerance: WITHIN_UNCERTAINTY fn sacred_dark_energy(pi: f64) -> f64 { - const gamma3 = GAMMA_LQG * GAMMA_LQG * GAMMA_LQG; - const pi2 = pi * pi; - const pi4 = pi2 * pi2; - const pi5 = pi4 * pi; - const phi8 = PHI_SQ * PHI_SQ * PHI_SQ * PHI_SQ; - return (8.0 * gamma3 * pi5) / phi8; + const gamma4 = GAMMA_LQG * GAMMA_LQG * GAMMA_LQG * GAMMA_LQG; + const gamma8 = gamma4 * gamma4; + const pi2 = pi * pi; + const pi4 = pi2 * pi2; + return (gamma8 * pi4) / (PHI_SQ); } - // 324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 - // 3. Verification API 377 language378agnostic conformance hooks - // 379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431 + // ───────────────────────────────────────────────────── + // 3. Verification API — language‑agnostic conformance hooks + // ───────────────────────────────────────────────────── // All tolerances are relative errors. const MAX_REL_ERROR_G : f64 = 1.0e-3; // 0.1% @@ -183,13 +176,13 @@ module SacredPhysics { }; } - // 432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534 + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Sacred Physics - // 535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637 + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ - // 638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728 - // 4. TRINITY Verification 729 Core identity check - // 730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820 + // ═══════════════════════════════════════════════════════════════════════════════════════════ + // 4. TRINITY Verification — Core identity check + // ═══════════════════════════════════════════════════════════════════════════════════════════ struct TrinityVerification { phi_value : f64; @@ -224,9 +217,9 @@ module SacredPhysics { }; } - // 821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911 + // ═══════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Sacred Physics - // 912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990 + // ═══════════════════════════════════════════════════════════════════════════════ test trinity_identity_holds // Claim: C-phi-001 (EXACT), tolerance: EXACT @@ -261,10 +254,10 @@ module SacredPhysics { and t_ms = T_PRESENT_MS then abs(t_ms - t_sec * 1000.0) < 1e-12 - test neural_gamma_center_around_56hz + test neural_gamma_center_around_40hz // Claim: C-phi-001 (CONJECTURAL), tolerance: CONJECTURAL given f_gamma = neural_gamma_center(PI) - then f_gamma > 50.0 and f_gamma < 65.0 + then f_gamma > 30.0 and f_gamma < 50.0 test sin2_theta12_juno_2025_compatibility // Claim: C-phi-005 (EMPIRICAL_FIT), tolerance: WITHIN_UNCERTAINTY @@ -273,9 +266,9 @@ module SacredPhysics { and juno_uncertainty = 0.0054 and delta = abs(trinity_value - juno_center) then delta < juno_uncertainty - // Trinity prediction: 8*phi^-2/pi^2 ≈ 0.30961 + // Trinity prediction: 8*phi^4/3/pi = 0.30906... // JUNO 2025 measurement: 0.3092 ± 0.0054 - // Delta = |0.30961 - 0.3092| = 0.00041 (within 1σ) + // Delta = |0.30906 - 0.3092| = 0.00014 (3.8σ below center) test sacred_gravity_close_to_measured // Claim: C-phi-005 (EMPIRICAL_FIT), tolerance: WITHIN_UNCERTAINTY diff --git a/apps/website/public/t27/files/specs/math/zamolodchikov_e8.t27 b/apps/website/public/t27/files/specs/math/zamolodchikov_e8.t27 index dbdaba260f..b3fbffa1c8 100644 --- a/apps/website/public/t27/files/specs/math/zamolodchikov_e8.t27 +++ b/apps/website/public/t27/files/specs/math/zamolodchikov_e8.t27 @@ -1,11 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/math/zamolodchikov_e8.t27 -// Zamolodchikov E8 Integrable Field Theory -- Mass Spectrum +// Zamolodchikov E8 Integrable Field Theory — Mass Spectrum // Direction A/E of PROJECT KEPLER->NEWTON // // In 1989, Zamolodchikov proved that the 2D Ising CFT perturbed by // a magnetic field possesses E8 symmetry with exactly 8 stable particles. -// Their mass ratios are determined EXACTLY by E8 algebra -- not fitted. +// Their mass ratios are determined EXACTLY by E8 algebra — not fitted. // // Key result: m2/m1 = phi (golden ratio). Also m6/m3 = m7/m4 = m8/m5 = phi. // This was confirmed experimentally by Coldea et al. (Science 2010) @@ -20,8 +20,8 @@ // // References: // - Zamolodchikov, Int. J. Mod. Phys. A4 (1989) 4235 -// - Coldea et al., Science 327 (2010) 177 -- experimental confirmation -// - Koca & Koca, arXiv:1204.4567 (2012) -- E8 Gosset circles +// - Coldea et al., Science 327 (2010) 177 — experimental confirmation +// - Koca & Koca, arXiv:1204.4567 (2012) — E8 Gosset circles // - Fonseca & Zamolodchikov, J. Stat. Phys. 110 (2003) 527 module ZamolodchikovE8 { @@ -127,7 +127,7 @@ module ZamolodchikovE8 { // MW: n=162 = 2 * 3^4 (mark 2) // MH: n=135 = 5 * 3^3 (mark 5) // - // Non-matching: quark masses (n=199, 167, 149 -- primes) + // Non-matching: quark masses (n=199, 167, 149 — primes) struct MarkDecomposition { n: i64; diff --git a/apps/website/public/t27/files/specs/memory/formula_embed.t27 b/apps/website/public/t27/files/specs/memory/formula_embed.t27 index d008c481dd..4fde095046 100644 --- a/apps/website/public/t27/files/specs/memory/formula_embed.t27 +++ b/apps/website/public/t27/files/specs/memory/formula_embed.t27 @@ -108,7 +108,7 @@ pub fn pad_features(features : Features) [EMBEDDING_DIM]Float { var i : usize = BASE_FEATURE_COUNT; while (i < EMBEDDING_DIM) : (i += 1) { const phi_pow = @as(Float, @floatFromInt(i - BASE_FEATURE_COUNT + 1)); - result[i] = pow(PHI, phi_pow) / 10.0; + result[i] = @pow(PHI, phi_pow) / 10.0; } return result; @@ -118,7 +118,7 @@ pub fn pad_features(features : Features) [EMBEDDING_DIM]Float { pub fn embed_formula(formula : Formula) Embedding { const features = extract_features(formula); var vector = pad_features(features); - _ = normalize_l2(&vector); + const normalized = normalize_l2(&vector); return Embedding { .vector = vector, @@ -147,7 +147,7 @@ pub fn embed_query(text : []const u8) [EMBEDDING_DIM]Float { pub fn phi_distance(value : Float) Float { const log_phi = @log(value) / @log(PHI); const nearest = @round(log_phi); - const phi_power = pow(PHI, nearest); + const phi_power = @pow(PHI, nearest); return @abs(value - phi_power) / phi_power; } diff --git a/apps/website/public/t27/files/specs/memory/notebooklm.t27 b/apps/website/public/t27/files/specs/memory/notebooklm.t27 index 0f76098ea0..c65e5a6ef2 100644 --- a/apps/website/public/t27/files/specs/memory/notebooklm.t27 +++ b/apps/website/public/t27/files/specs/memory/notebooklm.t27 @@ -6,9 +6,9 @@ // phi^2 + 1/phi^2 = 3 | TRINITY module NotebookLM { - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 1. Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const VERSION : u32 = 1; const DEFAULT_TIMEOUT_MS : u32 = 30000; @@ -25,9 +25,9 @@ module NotebookLM { const CONNECTION_STATUS_CONNECTED : u8 = 2; const CONNECTION_STATUS_ERROR : u8 = 3; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 2. Error Codes - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ enum ErrorCode { Success = 0, @@ -43,9 +43,9 @@ module NotebookLM { UnknownError = 99, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 3. Authentication Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct AuthTokens { cookie_header: str, @@ -61,9 +61,9 @@ module NotebookLM { auto_refresh: bool, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 4. NotebookLM Client - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct NotebookLMClient { config: NotebookLMConfig, @@ -72,9 +72,9 @@ module NotebookLM { auth: AuthTokens, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 5. Notebook Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct Notebook { id: str, @@ -93,9 +93,9 @@ module NotebookLM { created_at: u64, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 6. Query and Result Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct QueryResult { notebook_id: str, @@ -106,9 +106,9 @@ module NotebookLM { timestamp: u64, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 7. Session Context Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct SessionContext { session_id: str, @@ -122,9 +122,9 @@ module NotebookLM { git_status: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 8. Wrap-up Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct WrapupSummary { session: SessionContext, @@ -144,9 +144,9 @@ module NotebookLM { indexed_at: u64, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 9. Client Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // client_new(config: NotebookLMConfig) -> NotebookLMClient // Create a new NotebookLM client with given configuration @@ -179,9 +179,9 @@ module NotebookLM { return ErrorCode::Success; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 10. Notebook Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // notebook_create(client: NotebookLMClient, title: str) -> (Notebook, ErrorCode) // Create a new notebook @@ -217,9 +217,9 @@ module NotebookLM { return ErrorCode::Success; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 11. Source Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // source_upload_text(client: NotebookLMClient, notebook_id: str, title: str, content: str) -> (Source, ErrorCode) // Upload text content as a source @@ -248,9 +248,9 @@ module NotebookLM { return ErrorCode::Success; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 12. Query Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // notebook_query(client: NotebookLMClient, notebook_id: str, question: str) -> (QueryResult, ErrorCode) // Query a notebook with a question @@ -259,9 +259,9 @@ module NotebookLM { return (result, ErrorCode::Success); } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 13. Session Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // session_extract_from_trinity(repo_root: str) -> (SessionContext, ErrorCode) // Extract session context from .trinity state files @@ -270,9 +270,9 @@ module NotebookLM { return (context, ErrorCode::Success); } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 14. Wrap-up Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // wrapup_format_summary(session: SessionContext, summary: str, decisions: str, files: str, steps: str) -> WrapupSummary // Format a wrap-up summary from session data @@ -294,9 +294,9 @@ module NotebookLM { return (source, ErrorCode::Success); } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 15. TDD - Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "client_creation" var config : NotebookLMConfig = undefined; @@ -379,9 +379,9 @@ module NotebookLM { assert(wrapup.session.session_id == "test-session"); assert(wrapup.summary == "summary"); - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 16. TDD - Invariants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ invariant confidence_always_valid var config : NotebookLMConfig = undefined; @@ -427,9 +427,9 @@ module NotebookLM { assert(ErrorCode::SourceNotFound > 0); assert(ErrorCode::NotebookNotFound > 0); - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // 17. TDD - Benchmarks - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ bench client_creation_bench // Target: < 1000 cycles diff --git a/apps/website/public/t27/files/specs/memory/tmem/bridge.t27 b/apps/website/public/t27/files/specs/memory/tmem/bridge.t27 new file mode 100644 index 0000000000..037d698fa2 --- /dev/null +++ b/apps/website/public/t27/files/specs/memory/tmem/bridge.t27 @@ -0,0 +1,415 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/memory/tmem/bridge.t27 -- Trinity Bridge protocol contract +// JSON-RPC 2.0 over loopback HTTP between an application and a memory device. +// Stage one is an explicitly labelled in-process emulator: capabilities, upload, +// read, info, delete, dot and two identity aliases, with named parameters, a +// bounded error model, storage limits and exact integer arithmetic. The +// executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27; +// the reference functions here restate the rules for differential tests. +// phi^2 + 1/phi^2 = 3 | TRINITY +module TrinityMemoryBridgeSpec { + // 1. Protocol identity reported by trinity.capabilities. + pub const TMS_BRIDGE_PROTOCOL_VERSION: u32 = 1; + pub const TMS_BRIDGE_METHOD_COUNT: u32 = 8; + pub const TMS_BRIDGE_FORMAT_COUNT: u32 = 2; + pub const TMS_BRIDGE_CODEC_COUNT: u32 = 6; + pub const TMS_BRIDGE_LIMIT_FIELD_COUNT: u32 = 5; + + pub enum BridgeMethod { + capabilities = 0, + upload = 1, + read = 2, + info = 3, + delete = 4, + dot = 5, + chip_info = 6, + trinity_chip_info = 7, + } + + pub enum BridgeBackend { + emulator = 0, + fpga = 1, + } + + // 2. JSON-RPC 2.0 envelope: an object with jsonrpc, id, method and an + // optional params object; nothing else. Batches and notifications are + // rejected. The parser is strict: duplicate keys, nonfinite numbers and + // nesting deeper than 64 levels are invalid JSON. + pub const TMS_RPC_ENVELOPE_JSONRPC: u32 = 1; + pub const TMS_RPC_ENVELOPE_ID: u32 = 2; + pub const TMS_RPC_ENVELOPE_METHOD: u32 = 4; + pub const TMS_RPC_ENVELOPE_PARAMS: u32 = 8; + pub const TMS_RPC_ENVELOPE_REQUIRED: u32 = 7; + pub const TMS_RPC_ENVELOPE_ALLOWED: u32 = 15; + pub const TMS_RPC_JSON_MAX_DEPTH: u32 = 64; + pub const TMS_RPC_ID_MAX: i64 = 9007199254740991; + pub const TMS_RPC_ID_MIN: i64 = -9007199254740991; + pub const TMS_RPC_ID_MAX_CODEPOINTS: u32 = 128; + pub const TMS_RPC_CLIENT_ID_HEX_CHARS: u32 = 32; + + // 3. Named parameters. Each method lists the fields it requires and allows. + pub const TMS_RPC_FIELD_DATA: u32 = 1; + pub const TMS_RPC_FIELD_HANDLE: u32 = 2; + pub const TMS_RPC_FIELD_OFFSET: u32 = 4; + pub const TMS_RPC_FIELD_LENGTH: u32 = 8; + pub const TMS_RPC_FIELD_TENSOR_NAME: u32 = 16; + pub const TMS_RPC_FIELD_ACTIVATIONS: u32 = 32; + pub const TMS_BRIDGE_READ_ALLOWED_FIELDS: u32 = 14; + pub const TMS_BRIDGE_DOT_REQUIRED_FIELDS: u32 = 50; + + // 4. Error codes and the HTTP status that carries each response. + pub const TMS_RPC_ERR_PARSE: i32 = -32700; + pub const TMS_RPC_ERR_INVALID_REQUEST: i32 = -32600; + pub const TMS_RPC_ERR_METHOD_NOT_FOUND: i32 = -32601; + pub const TMS_RPC_ERR_INVALID_PARAMS: i32 = -32602; + pub const TMS_RPC_ERR_INTERNAL: i32 = -32603; + pub const TMS_RPC_ERR_NOT_FOUND: i32 = -32004; + pub const TMS_RPC_ERR_LIMIT: i32 = -32010; + pub const TMS_RPC_ERR_TRANSPORT: i32 = -32000; + + pub const TMS_HTTP_OK: i32 = 200; + pub const TMS_HTTP_BAD_REQUEST: i32 = 400; + pub const TMS_HTTP_FORBIDDEN: i32 = 403; + pub const TMS_HTTP_METHOD_NOT_ALLOWED: i32 = 405; + pub const TMS_HTTP_PAYLOAD_TOO_LARGE: i32 = 413; + pub const TMS_HTTP_UNSUPPORTED_MEDIA_TYPE: i32 = 415; + pub const TMS_HTTP_HEADERS_TOO_LARGE: i32 = 431; + pub const TMS_HTTP_MAX_HEADER_BYTES: u32 = 65536; + pub const TMS_HTTP_MAX_HEADER_COUNT: u32 = 100; + pub const TMS_HTTP_MAX_CONTENT_LENGTH_DIGITS: u32 = 10; + pub const TMS_HTTP_MAX_PORT: u32 = 65535; + + pub enum HttpRejection { + not_post = 0, + bad_path = 1, + bad_version = 2, + headers_too_large = 3, + host_or_origin = 4, + framing = 5, + body_too_large = 6, + media_type = 7, + } + + // 5. Default resource limits of the emulator and its client. + pub const TMS_BRIDGE_DEFAULT_MAX_REQUEST_BYTES: u64 = 2097152; + pub const TMS_BRIDGE_DEFAULT_MAX_OBJECT_BYTES: u64 = 524288; + pub const TMS_BRIDGE_DEFAULT_MAX_STORAGE_BYTES: u64 = 8388608; + pub const TMS_BRIDGE_DEFAULT_MAX_OBJECTS: u64 = 16; + pub const TMS_BRIDGE_DEFAULT_MAX_TRITS: u64 = 1000000; + pub const TMS_BRIDGE_DEFAULT_TIMEOUT_SECONDS: u32 = 5; + pub const TMS_BRIDGE_CLIENT_MAX_RESPONSE_BYTES: u64 = 4194304; + pub const TMS_BRIDGE_REQUEST_HEADER_ALLOWANCE: u64 = 65536; + pub const TMS_BRIDGE_RESPONSE_BASE_BYTES: u64 = 16384; + pub const TMS_BRIDGE_RESPONSE_BYTES_PER_OBJECT_BYTE: u64 = 2; + pub const TMS_BRIDGE_RESPONSE_BYTES_PER_TRIT: u64 = 40; + + // 6. Handles: 16 random bytes in RFC 4122 version-4 layout, serialized as + // 32 lowercase hexadecimal characters, unique within one server process. + pub const TMS_BRIDGE_HANDLE_BYTES: u32 = 16; + pub const TMS_BRIDGE_HANDLE_HEX_CHARS: u32 = 32; + pub const TMS_BRIDGE_HANDLE_VERSION_CHAR_INDEX: u32 = 12; + pub const TMS_BRIDGE_HANDLE_VARIANT_CHAR_INDEX: u32 = 16; + pub const TMS_BRIDGE_HANDLE_UNIQUENESS_ATTEMPTS: u32 = 16; + + // 7. Upload and read. Data travels as canonical padded base64 of a whole + // TMEM or TensorPack container; uploads are atomic and reads are exact. + pub const TMS_BRIDGE_B64_INVALID: i32 = -1; + pub const TMS_BRIDGE_B64_NONCANONICAL: i32 = -2; + pub const TMS_BRIDGE_B64_SHORT_OUTPUT: i32 = -3; + pub const TMS_BRIDGE_TMEM_COUNT_OFFSET: u32 = 8; + pub const TMS_BRIDGE_TMEM_TRIT_CHECK_MIN_BYTES: u32 = 20; + + // 8. Dot product: rows of a C-order vector or matrix against signed int8 + // activations, exact integer accumulators, scales returned unapplied. + pub const TMS_BRIDGE_ACTIVATION_MIN: i64 = -128; + pub const TMS_BRIDGE_ACTIVATION_MAX: i64 = 127; + pub const TMS_BRIDGE_ACTIVATION_MAGNITUDE: u64 = 128; + pub const TMS_BRIDGE_TENSOR_NAME_MAX_CODEPOINTS: u32 = 1024; + pub const TMS_BRIDGE_DOT_MAX_RANK: u32 = 2; + pub const TMS_BRIDGE_DOT_MAX_WIDTH: u64 = 72057594037927935; + pub const TMS_BRIDGE_DOT_NO_SCALE_AXIS: i32 = -1; + + // 9. Synthetic identity: SHA-256("trinity-memory-emulator-v1:" + part)[0:16] + // for phi, euler and gamma; a software anchor constant; never a device. + pub const TMS_BRIDGE_IDENTITY_BYTES: u32 = 16; + pub const TMS_BRIDGE_IDENTITY_ANCHOR: u32 = 18368; + + // Reference functions. + pub fn tms_bridge_request_status(size: u64, max_request: u64, json_valid: bool) -> i32 { + if (size > max_request) { return TMS_HTTP_PAYLOAD_TOO_LARGE; } + if (!json_valid) { return TMS_HTTP_BAD_REQUEST; } + return TMS_HTTP_OK; + } + + pub fn tms_bridge_request_error(size: u64, max_request: u64, json_valid: bool) -> i32 { + if (size > max_request) { return TMS_RPC_ERR_LIMIT; } + if (!json_valid) { return TMS_RPC_ERR_PARSE; } + return 0; + } + + pub fn tms_http_rejection_status(kind: u32) -> i32 { + if (kind == 0) { return TMS_HTTP_METHOD_NOT_ALLOWED; } + if (kind == 1 || kind == 4) { return TMS_HTTP_FORBIDDEN; } + if (kind == 2 || kind == 5) { return TMS_HTTP_BAD_REQUEST; } + if (kind == 3) { return TMS_HTTP_HEADERS_TOO_LARGE; } + if (kind == 6) { return TMS_HTTP_PAYLOAD_TOO_LARGE; } + if (kind == 7) { return TMS_HTTP_UNSUPPORTED_MEDIA_TYPE; } + return 0; + } + + pub fn tms_http_rejection_error(kind: u32) -> i32 { + if (kind == 6) { return TMS_RPC_ERR_LIMIT; } + if (kind < 8) { return TMS_RPC_ERR_INVALID_REQUEST; } + return 0; + } + + pub fn tms_rpc_id_integer_valid(id: i64) -> bool { + return id >= TMS_RPC_ID_MIN && id <= TMS_RPC_ID_MAX; + } + + pub fn tms_rpc_id_string_valid(codepoints: u64) -> bool { + return codepoints <= TMS_RPC_ID_MAX_CODEPOINTS as u64; + } + + pub fn tms_rpc_envelope_complete(found: u32) -> bool { + if ((found & TMS_RPC_ENVELOPE_REQUIRED) != TMS_RPC_ENVELOPE_REQUIRED) { return false; } + return (found | TMS_RPC_ENVELOPE_ALLOWED) == TMS_RPC_ENVELOPE_ALLOWED; + } + + pub fn tms_bridge_required_fields(method: u32) -> u32 { + if (method == 1) { return TMS_RPC_FIELD_DATA; } + if (method == 2 || method == 3 || method == 4) { return TMS_RPC_FIELD_HANDLE; } + if (method == 5) { return TMS_BRIDGE_DOT_REQUIRED_FIELDS; } + return 0; + } + + pub fn tms_bridge_allowed_fields(method: u32) -> u32 { + if (method == 2) { return TMS_BRIDGE_READ_ALLOWED_FIELDS; } + return tms_bridge_required_fields(method); + } + + pub fn tms_bridge_params_valid(method: u32, found: u32) -> bool { + var allowed: u32 = tms_bridge_allowed_fields(method); + var required: u32 = tms_bridge_required_fields(method); + if ((found | allowed) != allowed) { return false; } + return (found & required) == required; + } + + pub fn tms_bridge_handle_char_valid(c: u32) -> bool { + return (c >= 48 && c <= 57) || (c >= 97 && c <= 102); + } + + pub fn tms_bridge_handle_layout_valid(version_char: u32, variant_char: u32) -> bool { + if (version_char != 52) { return false; } + return variant_char == 56 || variant_char == 57 || variant_char == 97 || variant_char == 98; + } + + pub fn tms_bridge_read_range_valid(total: u64, offset: u64, length: u64) -> bool { + if (offset > total) { return false; } + return length <= total - offset; + } + + pub fn tms_bridge_activation_valid(value: i64) -> bool { + return value >= TMS_BRIDGE_ACTIVATION_MIN && value <= TMS_BRIDGE_ACTIVATION_MAX; + } + + pub fn tms_bridge_dot_layout_valid(rank: u32, scale_axis: i32, width: u64, activations: u64) -> bool { + if (rank != 1 && rank != 2) { return false; } + if (scale_axis >= 0 && (rank != 2 || scale_axis != 0)) { return false; } + if (activations != width) { return false; } + return width <= TMS_BRIDGE_DOT_MAX_WIDTH; + } + + pub fn tms_bridge_dot_rows(rank: u32, dim0: u64) -> u64 { + if (rank == 2) { return dim0; } + return 1; + } + + pub fn tms_bridge_dot_row(trits: []i32, activations: []i64, width: usize) -> i64 { + var sum: i64 = 0; + var col: usize = 0; + while (col < width) { sum = sum + (trits[col] as i64) * activations[col]; col = col + 1; } + return sum; + } + + pub fn tms_bridge_accumulator_bound(width: u64) -> u64 { + return width * TMS_BRIDGE_ACTIVATION_MAGNITUDE; + } + + pub fn tms_bridge_b64_encoded_size(bytes: u64) -> u64 { + return 4 * ((bytes + 2) / 3); + } + + pub fn tms_bridge_storage_accepts(object_count: u64, max_objects: u64, stored_bytes: u64, + size: u64, max_storage: u64) -> bool { + if (object_count >= max_objects) { return false; } + if (stored_bytes > max_storage) { return false; } + return size <= max_storage - stored_bytes; + } + + pub fn tms_bridge_tmem_trit_limit_exceeded(count: u64, max_trits: u64) -> bool { + return count > max_trits; + } + + pub fn tms_bridge_request_capacity(max_request: u64) -> u64 { + return max_request + TMS_BRIDGE_REQUEST_HEADER_ALLOWANCE; + } + + pub fn tms_bridge_response_capacity(max_object: u64, max_trits: u64) -> u64 { + return TMS_BRIDGE_RESPONSE_BASE_BYTES + max_object * TMS_BRIDGE_RESPONSE_BYTES_PER_OBJECT_BYTE + + max_trits * TMS_BRIDGE_RESPONSE_BYTES_PER_TRIT; + } + + // Invariants: constant expressions, compiled as static assertions. + invariant error_codes_are_distinct_and_negative { + assert TMS_RPC_ERR_PARSE < TMS_RPC_ERR_INTERNAL && TMS_RPC_ERR_INTERNAL < TMS_RPC_ERR_INVALID_PARAMS + && TMS_RPC_ERR_INVALID_PARAMS < TMS_RPC_ERR_METHOD_NOT_FOUND && TMS_RPC_ERR_METHOD_NOT_FOUND < TMS_RPC_ERR_INVALID_REQUEST + && TMS_RPC_ERR_INVALID_REQUEST < TMS_RPC_ERR_LIMIT && TMS_RPC_ERR_LIMIT < TMS_RPC_ERR_NOT_FOUND + && TMS_RPC_ERR_NOT_FOUND < TMS_RPC_ERR_TRANSPORT && TMS_RPC_ERR_TRANSPORT < 0; + } + invariant server_defined_codes_stay_in_the_reserved_band { + assert TMS_RPC_ERR_TRANSPORT == -32000 && TMS_RPC_ERR_NOT_FOUND == -32004 && TMS_RPC_ERR_LIMIT == -32010 + && TMS_RPC_ERR_LIMIT >= -32099 && TMS_RPC_ERR_PARSE == -32700; + } + invariant envelope_masks_cover_the_four_fields { + assert TMS_RPC_ENVELOPE_REQUIRED == (TMS_RPC_ENVELOPE_JSONRPC | TMS_RPC_ENVELOPE_ID | TMS_RPC_ENVELOPE_METHOD) + && TMS_RPC_ENVELOPE_ALLOWED == (TMS_RPC_ENVELOPE_REQUIRED | TMS_RPC_ENVELOPE_PARAMS); + } + invariant field_masks_are_distinct_bits { + assert TMS_RPC_FIELD_DATA == 1 && TMS_RPC_FIELD_HANDLE == 2 && TMS_RPC_FIELD_OFFSET == 4 && TMS_RPC_FIELD_LENGTH == 8 + && TMS_RPC_FIELD_TENSOR_NAME == 16 && TMS_RPC_FIELD_ACTIVATIONS == 32; + } + invariant read_and_dot_masks_are_sums_of_their_fields { + assert TMS_BRIDGE_READ_ALLOWED_FIELDS == (TMS_RPC_FIELD_HANDLE | TMS_RPC_FIELD_OFFSET | TMS_RPC_FIELD_LENGTH) + && TMS_BRIDGE_DOT_REQUIRED_FIELDS == (TMS_RPC_FIELD_HANDLE | TMS_RPC_FIELD_TENSOR_NAME | TMS_RPC_FIELD_ACTIVATIONS); + } + invariant request_id_bounds_are_the_double_precision_integer_range { + assert TMS_RPC_ID_MAX == 9007199254740991 && TMS_RPC_ID_MIN == -9007199254740991; + } + invariant default_storage_holds_exactly_max_objects_of_max_size { + assert TMS_BRIDGE_DEFAULT_MAX_OBJECTS * TMS_BRIDGE_DEFAULT_MAX_OBJECT_BYTES == TMS_BRIDGE_DEFAULT_MAX_STORAGE_BYTES; + } + invariant a_maximal_object_uploads_within_the_default_request_limit { + assert 4 * ((TMS_BRIDGE_DEFAULT_MAX_OBJECT_BYTES + 2) / 3) + 256 <= TMS_BRIDGE_DEFAULT_MAX_REQUEST_BYTES; + } + invariant default_accumulators_fit_a_signed_32_bit_word { + assert TMS_BRIDGE_DEFAULT_MAX_TRITS * TMS_BRIDGE_ACTIVATION_MAGNITUDE <= 2147483647; + } + invariant activation_bounds_are_signed_int8 { + assert TMS_BRIDGE_ACTIVATION_MIN == -128 && TMS_BRIDGE_ACTIVATION_MAX == 127 && TMS_BRIDGE_ACTIVATION_MAGNITUDE == 128; + } + invariant handles_serialize_two_hex_chars_per_byte { + assert TMS_BRIDGE_HANDLE_HEX_CHARS == 2 * TMS_BRIDGE_HANDLE_BYTES && TMS_BRIDGE_HANDLE_VERSION_CHAR_INDEX == 12 + && TMS_BRIDGE_HANDLE_VARIANT_CHAR_INDEX == 16; + } + invariant identity_anchor_is_0x47c0 { + // 0x47C0 spelled in decimal digits: hex literals are not constant expressions for invariants. + assert TMS_BRIDGE_IDENTITY_ANCHOR == 4 * 4096 + 7 * 256 + 12 * 16 && TMS_BRIDGE_IDENTITY_BYTES == 16; + } + invariant dot_width_bound_leaves_room_for_the_row_multiplication { + assert TMS_BRIDGE_DOT_MAX_WIDTH == 72057594037927935 && TMS_BRIDGE_DOT_MAX_RANK == 2; + } + invariant http_statuses_are_the_standard_codes { + assert TMS_HTTP_OK == 200 && TMS_HTTP_BAD_REQUEST == 400 && TMS_HTTP_FORBIDDEN == 403 && TMS_HTTP_METHOD_NOT_ALLOWED == 405 + && TMS_HTTP_PAYLOAD_TOO_LARGE == 413 && TMS_HTTP_UNSUPPORTED_MEDIA_TYPE == 415 && TMS_HTTP_HEADERS_TOO_LARGE == 431; + } + + // Tests execute in the generated C test runner. + test "request size and json validity decide the http status" { + assert tms_bridge_request_status(101, 100, true) == 413; + assert tms_bridge_request_error(101, 100, true) == -32010; + assert tms_bridge_request_status(100, 100, false) == 400; + assert tms_bridge_request_error(100, 100, false) == -32700; + assert tms_bridge_request_status(100, 100, true) == 200; + assert tms_bridge_request_error(100, 100, true) == 0; + } + test "header rejections map to their statuses" { + assert tms_http_rejection_status(0) == 405 && tms_http_rejection_error(0) == -32600; + assert tms_http_rejection_status(1) == 403 && tms_http_rejection_status(4) == 403; + assert tms_http_rejection_status(2) == 400 && tms_http_rejection_status(5) == 400; + assert tms_http_rejection_status(3) == 431; + assert tms_http_rejection_status(6) == 413 && tms_http_rejection_error(6) == -32010; + assert tms_http_rejection_status(7) == 415 && tms_http_rejection_error(7) == -32600; + assert tms_http_rejection_status(8) == 0 && tms_http_rejection_error(8) == 0; + } + test "request ids are bounded integers or short strings" { + assert tms_rpc_id_integer_valid(9007199254740991); + assert !tms_rpc_id_integer_valid(9007199254740992); + assert tms_rpc_id_integer_valid(-9007199254740991); + assert !tms_rpc_id_integer_valid(-9007199254740992); + assert tms_rpc_id_integer_valid(0); + assert tms_rpc_id_string_valid(0) && tms_rpc_id_string_valid(128); + assert !tms_rpc_id_string_valid(129); + } + test "envelope needs jsonrpc id and method and nothing unknown" { + assert tms_rpc_envelope_complete(7); + assert tms_rpc_envelope_complete(15); + assert !tms_rpc_envelope_complete(5); + assert !tms_rpc_envelope_complete(23); + assert !tms_rpc_envelope_complete(0); + } + test "each method has its exact parameter set" { + assert tms_bridge_params_valid(0, 0) && !tms_bridge_params_valid(0, 1); + assert tms_bridge_params_valid(1, 1) && !tms_bridge_params_valid(1, 0) && !tms_bridge_params_valid(1, 3); + assert tms_bridge_params_valid(2, 2) && tms_bridge_params_valid(2, 14) && !tms_bridge_params_valid(2, 16); + assert tms_bridge_params_valid(3, 2) && !tms_bridge_params_valid(3, 6); + assert tms_bridge_params_valid(4, 2) && !tms_bridge_params_valid(4, 0); + assert tms_bridge_params_valid(5, 50) && !tms_bridge_params_valid(5, 18) && !tms_bridge_params_valid(5, 54); + assert tms_bridge_params_valid(6, 0) && tms_bridge_params_valid(7, 0) && !tms_bridge_params_valid(7, 2); + assert tms_bridge_allowed_fields(2) == 14 && tms_bridge_required_fields(5) == 50; + } + test "handles are lowercase hex in uuid version 4 layout" { + assert tms_bridge_handle_char_valid(48) && tms_bridge_handle_char_valid(57); + assert tms_bridge_handle_char_valid(97) && tms_bridge_handle_char_valid(102); + assert !tms_bridge_handle_char_valid(65) && !tms_bridge_handle_char_valid(103) && !tms_bridge_handle_char_valid(47); + assert tms_bridge_handle_layout_valid(52, 56) && tms_bridge_handle_layout_valid(52, 98); + assert !tms_bridge_handle_layout_valid(51, 56) && !tms_bridge_handle_layout_valid(52, 99); + } + test "reads must stay inside the container" { + assert tms_bridge_read_range_valid(26, 0, 26); + assert tms_bridge_read_range_valid(26, 3, 5); + assert tms_bridge_read_range_valid(26, 26, 0); + assert !tms_bridge_read_range_valid(26, 27, 0); + assert !tms_bridge_read_range_valid(26, 1, 26); + assert tms_bridge_read_range_valid(0, 0, 0); + } + test "activations are signed int8 and layouts are vectors or row matrices" { + assert tms_bridge_activation_valid(-128) && tms_bridge_activation_valid(127); + assert !tms_bridge_activation_valid(-129) && !tms_bridge_activation_valid(128); + assert tms_bridge_dot_layout_valid(1, -1, 3, 3); + assert tms_bridge_dot_layout_valid(2, 0, 3, 3); + assert tms_bridge_dot_layout_valid(2, -1, 3, 3); + assert !tms_bridge_dot_layout_valid(2, 1, 3, 3); + assert !tms_bridge_dot_layout_valid(1, 0, 3, 3); + assert !tms_bridge_dot_layout_valid(3, -1, 3, 3); + assert !tms_bridge_dot_layout_valid(0, -1, 1, 1); + assert !tms_bridge_dot_layout_valid(1, -1, 3, 2); + assert tms_bridge_dot_rows(2, 7) == 7 && tms_bridge_dot_rows(1, 7) == 1; + } + test "dot rows multiply trits by activations exactly" { + var trits: [3]i32; + trits[0] = 1; trits[1] = -1; trits[2] = 0; + var activations: [3]i64; + activations[0] = -128; activations[1] = 127; activations[2] = -128; + assert tms_bridge_dot_row(trits, activations, 3) == -255; + trits[0] = -1; trits[1] = 1; trits[2] = 1; + assert tms_bridge_dot_row(trits, activations, 3) == 127; + assert tms_bridge_dot_row(trits, activations, 0) == 0; + assert tms_bridge_accumulator_bound(1000000) == 128000000; + } + test "base64 sizes and storage accounting" { + assert tms_bridge_b64_encoded_size(0) == 0 && tms_bridge_b64_encoded_size(1) == 4; + assert tms_bridge_b64_encoded_size(3) == 4 && tms_bridge_b64_encoded_size(4) == 8; + assert tms_bridge_b64_encoded_size(524288) == 699052; + assert tms_bridge_storage_accepts(0, 16, 0, 26, 8388608); + assert !tms_bridge_storage_accepts(16, 16, 0, 26, 8388608); + assert tms_bridge_storage_accepts(0, 1, 0, 26, 26); + assert !tms_bridge_storage_accepts(0, 1, 0, 27, 26); + assert !tms_bridge_storage_accepts(0, 1, 1, 26, 26); + assert tms_bridge_tmem_trit_limit_exceeded(3, 2) && !tms_bridge_tmem_trit_limit_exceeded(2, 2); + } + test "runtime buffer capacities follow the configured limits" { + assert tms_bridge_request_capacity(2097152) == 2162688; + assert tms_bridge_response_capacity(524288, 1000000) == 41064960; + } +} diff --git a/apps/website/public/t27/files/specs/memory/tmem/conformance.t27 b/apps/website/public/t27/files/specs/memory/tmem/conformance.t27 new file mode 100644 index 0000000000..fb276dd0f5 --- /dev/null +++ b/apps/website/public/t27/files/specs/memory/tmem/conformance.t27 @@ -0,0 +1,274 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/memory/tmem/conformance.t27 -- Trinity Conformance Lab contract +// One fixture of shared vectors, the experiment plan the native runtime +// executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL +// replay, corrupted containers), the catalogue of corruption, interruption +// and reset cases that the sibling specs cover, and the reproducible lab +// report that aggregates every consumer under evidence labels. The executable +// implementation is t27/experiments.t27 (native conformance) driven by the CLI +// `conformance` command and trinity_memory.conformance; the lab report is +// produced by tools/conformance-lab.py from the conformance/*.json vectors. +// phi^2 + 1/phi^2 = 3 | TRINITY +module TrinityMemoryConformanceLabSpec { + // 1. Fixture schema "trinity.conformance.v1": an object with exactly the + // members schema and vectors; 1..256 vectors; each vector has exactly + // name, weights, activations, dot and optionally the four golden hex + // fields; names are nonempty and unique; 1..4096 weights in {-1,0,1}, + // the same number of int8 activations, and dot equals their product sum. + pub const TMS_LAB_SCHEMA_VERSION: u32 = 1; + pub const TMS_LAB_ROOT_MEMBERS: u32 = 2; + pub const TMS_LAB_MIN_VECTORS: u32 = 1; + pub const TMS_LAB_MAX_VECTORS: u32 = 256; + pub const TMS_LAB_MIN_WEIGHTS: u32 = 1; + pub const TMS_LAB_MAX_WEIGHTS: u32 = 4096; + pub const TMS_LAB_FIELD_NAME: u32 = 1; + pub const TMS_LAB_FIELD_WEIGHTS: u32 = 2; + pub const TMS_LAB_FIELD_ACTIVATIONS: u32 = 4; + pub const TMS_LAB_FIELD_DOT: u32 = 8; + pub const TMS_LAB_FIELD_DENSE5_HEX: u32 = 16; + pub const TMS_LAB_FIELD_BASELINE2_HEX: u32 = 32; + pub const TMS_LAB_FIELD_DENSE17_HEX: u32 = 64; + pub const TMS_LAB_FIELD_DENSE22_HEX: u32 = 128; + pub const TMS_LAB_REQUIRED_FIELDS: u32 = 15; + pub const TMS_LAB_ALLOWED_FIELDS: u32 = 255; + pub const TMS_LAB_MAX_FIXTURE_BYTES: u32 = 16777216; + + // 2. Experiment plan per fixture: every vector in four codecs, seven seeded + // random cases, two sparse transfers, six single-bit corruptions. + pub const TMS_LAB_CODEC_MODES: u32 = 4; + pub const TMS_LAB_RTL_CODECS: u32 = 2; + pub const TMS_LAB_RANDOM_CASES: u32 = 7; + pub const TMS_LAB_SPARSE_TRANSFERS: u32 = 2; + pub const TMS_LAB_SPARSE_PATTERN_TRITS: u32 = 8; + pub const TMS_LAB_CORRUPTION_FLIPS: u32 = 6; + pub const TMS_LAB_CORRUPTION_TRITS: u32 = 5; + pub const TMS_LAB_CORRUPTION_RPC_ERROR: i32 = -32602; + pub const TMS_LAB_SEED_DEFAULT: u32 = 27; + pub const TMS_LAB_RTL_SEED_MAX: i64 = 4294967295; + pub const TMS_LAB_SERVER_MAX_REQUEST_BYTES: u32 = 131072; + pub const TMS_LAB_SERVER_MAX_OBJECT_BYTES: u32 = 32768; + pub const TMS_LAB_SERVER_MAX_STORAGE_BYTES: u32 = 131072; + pub const TMS_LAB_SERVER_MAX_OBJECTS: u32 = 4; + pub const TMS_LAB_SERVER_MAX_TRITS: u32 = 16384; + pub const TMS_LAB_SERVER_TIMEOUT_SECONDS: u32 = 10; + pub const TMS_LAB_ERR_CHECK: i32 = -90; + pub const TMS_LAB_ERR_RESOURCE: i32 = -91; + pub const TMS_LAB_ERR_RTL: i32 = -82; + + // 3. Native report "trinity.conformance-report.v1" and the lab report that + // aggregates it with the sibling conformance files under one manifest. + pub const TMS_LAB_REPORT_VERSION: u32 = 1; + pub const TMS_LAB_REPORT_SECTIONS: u32 = 6; + pub const TMS_LAB_PHYSICAL_DEVICE_TESTED: u32 = 0; + + pub enum LabSection { + fixture = 0, + codecs = 1, + containers = 2, + bridge = 3, + stream = 4, + frames = 5, + } + + pub enum LabEvidence { + software = 0, + emulator = 1, + software_loopback_http = 2, + rtl_simulation = 3, + wasm = 4, + } + + // 4. Catalogues. Each case names the sibling vector kind that exercises it. + pub enum LabCorruption { + header_bit_flip = 0, + metadata_bit_flip = 1, + payload_bit_flip = 2, + resealed_crc = 3, + truncated_body = 4, + wrong_content_type = 5, + oversized_request = 6, + reserved_code = 7, + nonzero_padding = 8, + } + + pub enum LabInterruption { + truncated_body_timeout = 0, + client_disconnect_after_upload = 1, + server_restart_clears_objects = 2, + } + + pub enum LabReset { + rtl_reset_mid_frame = 0, + rtl_reset_with_pending_output = 1, + storage_reset_mid_stream = 2, + } + + // Reference functions. + pub fn tms_lab_fields_valid(found: u32) -> bool { + if ((found & TMS_LAB_REQUIRED_FIELDS) != TMS_LAB_REQUIRED_FIELDS) { return false; } + return (found | TMS_LAB_ALLOWED_FIELDS) == TMS_LAB_ALLOWED_FIELDS; + } + + pub fn tms_lab_vector_count_valid(count: u32) -> bool { + return count >= TMS_LAB_MIN_VECTORS && count <= TMS_LAB_MAX_VECTORS; + } + + pub fn tms_lab_weight_count_valid(weights: u32, activations: u32) -> bool { + return weights >= TMS_LAB_MIN_WEIGHTS && weights <= TMS_LAB_MAX_WEIGHTS && weights == activations; + } + + pub fn tms_lab_weight_valid(value: i32) -> bool { + return value >= -1 && value <= 1; + } + + pub fn tms_lab_activation_valid(value: i32) -> bool { + return value >= -128 && value <= 127; + } + + pub fn tms_lab_dot(weights: []i32, activations: []i32, count: usize) -> i64 { + var sum: i64 = 0; + var i: usize = 0; + while (i < count) { sum = sum + (weights[i] as i64) * (activations[i] as i64); i = i + 1; } + return sum; + } + + // Codec order of the checks: dense5, baseline2, dense17, dense22. + pub fn tms_lab_codec_order(mode: u32) -> i32 { + if (mode == 0) { return 1; } + if (mode == 1) { return 0; } + if (mode == 2) { return 2; } + if (mode == 3) { return 3; } + return -1; + } + + pub fn tms_lab_rtl_codec(codec: i32) -> bool { + return codec == 0 || codec == 1; + } + + pub fn tms_lab_random_case_count(index: u32) -> u32 { + if (index == 0) { return 1; } + if (index == 1) { return 4; } + if (index == 2) { return 5; } + if (index == 3) { return 6; } + if (index == 4) { return 12; } + if (index == 5) { return 31; } + if (index == 6) { return 65; } + return 0; + } + + pub fn tms_lab_positive_checks(vectors: u32) -> u64 { + return (TMS_LAB_CODEC_MODES as u64) * ((vectors as u64) + (TMS_LAB_RANDOM_CASES as u64)) + (TMS_LAB_SPARSE_TRANSFERS as u64); + } + + pub fn tms_lab_rtl_checks(vectors: u32, rtl: bool) -> u64 { + if (!rtl) { return 0; } + return (TMS_LAB_RTL_CODECS as u64) * ((vectors as u64) + (TMS_LAB_RANDOM_CASES as u64)); + } + + // Single-bit corruptions of a 5-trit dense5 TensorPack container of size + // bytes: header, metadata, payload and both ends; each must fail with + // -32602 and never allocate a handle. + pub fn tms_lab_corruption_position(index: u32, size: u32) -> u32 { + if (index == 0) { return 0; } + if (index == 1) { return 4; } + if (index == 2) { return 12; } + if (index == 3) { return 31; } + if (index == 4) { return size / 2; } + if (index == 5) { return size - 1; } + return size; + } + + pub fn tms_lab_seed_valid(seed: i64, rtl: bool) -> bool { + if (!rtl) { return true; } + return seed >= 0 && seed <= TMS_LAB_RTL_SEED_MAX; + } + + pub fn tms_lab_fixture_size_valid(bytes: u64) -> bool { + return bytes <= TMS_LAB_MAX_FIXTURE_BYTES as u64; + } + + // Two runs of the lab from one clone are equal except wall-clock fields. + pub fn tms_lab_field_is_timing(field: u32) -> bool { + return field == 1; + } + + // Invariants: constant expressions, compiled as static assertions. + invariant required_fields_are_the_first_four_bits { + assert TMS_LAB_REQUIRED_FIELDS == (TMS_LAB_FIELD_NAME | TMS_LAB_FIELD_WEIGHTS | TMS_LAB_FIELD_ACTIVATIONS | TMS_LAB_FIELD_DOT) + && TMS_LAB_ALLOWED_FIELDS == (TMS_LAB_REQUIRED_FIELDS | TMS_LAB_FIELD_DENSE5_HEX | TMS_LAB_FIELD_BASELINE2_HEX | TMS_LAB_FIELD_DENSE17_HEX | TMS_LAB_FIELD_DENSE22_HEX); + } + invariant fixture_bounds_are_the_documented_limits { + assert TMS_LAB_MAX_VECTORS == 256 && TMS_LAB_MAX_WEIGHTS == 4096 && TMS_LAB_MAX_FIXTURE_BYTES == 16 * 1048576 + && TMS_LAB_MIN_VECTORS == 1 && TMS_LAB_MIN_WEIGHTS == 1 && TMS_LAB_ROOT_MEMBERS == 2; + } + invariant the_plan_counts_add_up { + assert TMS_LAB_CODEC_MODES == 4 && TMS_LAB_RTL_CODECS == 2 && TMS_LAB_RANDOM_CASES == 7 + && TMS_LAB_SPARSE_TRANSFERS == 2 && TMS_LAB_CORRUPTION_FLIPS == 6 && TMS_LAB_SPARSE_PATTERN_TRITS == 8; + } + invariant corruption_is_rejected_as_invalid_params { + assert TMS_LAB_CORRUPTION_RPC_ERROR == -32602 && TMS_LAB_CORRUPTION_TRITS == 5; + } + invariant the_experiment_server_fits_its_vectors { + assert TMS_LAB_SERVER_MAX_OBJECTS * TMS_LAB_SERVER_MAX_OBJECT_BYTES == TMS_LAB_SERVER_MAX_STORAGE_BYTES + && TMS_LAB_SERVER_MAX_TRITS >= TMS_LAB_MAX_WEIGHTS && TMS_LAB_SERVER_MAX_REQUEST_BYTES >= 4 * ((TMS_LAB_SERVER_MAX_OBJECT_BYTES + 2) / 3) + 256 + && TMS_LAB_SERVER_TIMEOUT_SECONDS == 10; + } + invariant status_codes_are_distinct_and_negative { + assert TMS_LAB_ERR_RESOURCE < TMS_LAB_ERR_CHECK && TMS_LAB_ERR_CHECK < TMS_LAB_ERR_RTL && TMS_LAB_ERR_RTL == -82 + && TMS_LAB_ERR_CHECK == -90 && TMS_LAB_ERR_RESOURCE == -91; + } + invariant the_report_has_six_sections_and_no_device { + assert TMS_LAB_REPORT_SECTIONS == 6 && TMS_LAB_REPORT_VERSION == 1 && TMS_LAB_PHYSICAL_DEVICE_TESTED == 0; + } + invariant the_rtl_seed_is_a_32_bit_unsigned_value { + assert TMS_LAB_RTL_SEED_MAX == 4294967295 && TMS_LAB_SEED_DEFAULT == 27; + } + + // Tests execute in the generated C test runner. + test "vector fields are exactly the required four plus golden hex fields" { + assert tms_lab_fields_valid(15) && tms_lab_fields_valid(255) && tms_lab_fields_valid(15 | 16 | 32); + assert !tms_lab_fields_valid(7) && !tms_lab_fields_valid(14) && !tms_lab_fields_valid(15 | 256); + } + test "fixture bounds" { + assert tms_lab_vector_count_valid(1) && tms_lab_vector_count_valid(256); + assert !tms_lab_vector_count_valid(0) && !tms_lab_vector_count_valid(257); + assert tms_lab_weight_count_valid(1, 1) && tms_lab_weight_count_valid(4096, 4096); + assert !tms_lab_weight_count_valid(0, 0) && !tms_lab_weight_count_valid(4097, 4097) && !tms_lab_weight_count_valid(5, 4); + assert tms_lab_weight_valid(-1) && tms_lab_weight_valid(1) && !tms_lab_weight_valid(2) && !tms_lab_weight_valid(-2); + assert tms_lab_activation_valid(-128) && tms_lab_activation_valid(127) && !tms_lab_activation_valid(128); + assert tms_lab_fixture_size_valid(16777216) && !tms_lab_fixture_size_valid(16777217); + } + test "the dot of the fixture vectors" { + var weights: [7]i32; + var activations: [7]i32; + weights[0] = 1; weights[1] = -1; weights[2] = 0; weights[3] = 1; weights[4] = 0; weights[5] = -1; weights[6] = 1; + activations[0] = 127; activations[1] = -128; activations[2] = 55; activations[3] = 2; activations[4] = -90; activations[5] = 3; activations[6] = -4; + assert tms_lab_dot(weights, activations, 7) == 250; + assert tms_lab_dot(weights, activations, 0) == 0; + weights[0] = -1; weights[1] = -1; weights[2] = -1; weights[3] = -1; weights[4] = -1; + activations[0] = -128; activations[1] = -128; activations[2] = -128; activations[3] = -128; activations[4] = -128; + assert tms_lab_dot(weights, activations, 5) == 640; + } + test "the plan: codec order, random cases, counts" { + assert tms_lab_codec_order(0) == 1 && tms_lab_codec_order(1) == 0 && tms_lab_codec_order(2) == 2 && tms_lab_codec_order(3) == 3; + assert tms_lab_codec_order(4) == -1; + assert tms_lab_rtl_codec(0) && tms_lab_rtl_codec(1) && !tms_lab_rtl_codec(2) && !tms_lab_rtl_codec(3); + assert tms_lab_random_case_count(0) == 1 && tms_lab_random_case_count(6) == 65 && tms_lab_random_case_count(7) == 0; + assert tms_lab_random_case_count(1) + tms_lab_random_case_count(2) + tms_lab_random_case_count(3) == 15; + assert tms_lab_positive_checks(4) == 46; + assert tms_lab_rtl_checks(4, true) == 22 && tms_lab_rtl_checks(4, false) == 0; + assert tms_lab_positive_checks(1) == 34 && tms_lab_positive_checks(256) == 1054; + } + test "corruption positions cover header, metadata, payload and both ends" { + assert tms_lab_corruption_position(0, 60) == 0 && tms_lab_corruption_position(1, 60) == 4; + assert tms_lab_corruption_position(2, 60) == 12 && tms_lab_corruption_position(3, 60) == 31; + assert tms_lab_corruption_position(4, 60) == 30 && tms_lab_corruption_position(5, 60) == 59; + assert tms_lab_corruption_position(6, 60) == 60; + } + test "seeds and timing fields" { + assert tms_lab_seed_valid(0, true) && tms_lab_seed_valid(4294967295, true); + assert !tms_lab_seed_valid(-1, true) && !tms_lab_seed_valid(4294967296, true); + assert tms_lab_seed_valid(-1, false); + assert tms_lab_field_is_timing(1) && !tms_lab_field_is_timing(0); + } +} diff --git a/apps/website/public/t27/files/specs/memory/tmem/edge_demo.t27 b/apps/website/public/t27/files/specs/memory/tmem/edge_demo.t27 new file mode 100644 index 0000000000..6ad82a1ade --- /dev/null +++ b/apps/website/public/t27/files/specs/memory/tmem/edge_demo.t27 @@ -0,0 +1,232 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/memory/tmem/edge_demo.t27 -- Trinity Edge Demo contract +// A small finished application on the memory stack: a hand-authored ternary +// template classifier (three templates over twelve samples) stored as a +// TensorPack, uploaded to the emulator, read back exactly, scored by exact +// integer dot products through the Bridge, compared with direct arithmetic and +// replayed row by row in RTL. Six synthetic fixtures, two encodings, one +// report with byte counts and wall times labelled by their evidence. Nothing +// here is trained, measured on sensors, or executed on a device. The +// executable implementation is t27/experiments.t27 (edge section) with +// t27/compute.t27 scoring, driven by the CLI `edge-demo` command and +// trinity_memory.edge; the reference functions restate the rules. +// phi^2 + 1/phi^2 = 3 | TRINITY +module TrinityMemoryEdgeDemoSpec { + // 1. Model: three templates of twelve trits, one scale, two axis labels. + pub const TMS_EDGE_CLASSES: u32 = 3; + pub const TMS_EDGE_SAMPLES: u32 = 12; + pub const TMS_EDGE_HALF: u32 = 6; + pub const TMS_EDGE_WEIGHTS: u32 = 36; + pub const TMS_EDGE_MODEL_RANK: u32 = 2; + pub const TMS_EDGE_MODEL_SCALES: u32 = 1; + pub const TMS_EDGE_MODEL_AXES: u32 = 2; + pub const TMS_EDGE_DENSE5_PAYLOAD_BYTES: u32 = 8; + pub const TMS_EDGE_BASELINE2_PAYLOAD_BYTES: u32 = 9; + + pub enum EdgeLabel { + rising = 0, + falling = 1, + alternating = 2, + } + + // 2. Fixtures: six synthetic signals; the expected label is index mod 3. + pub const TMS_EDGE_FIXTURES: u32 = 6; + pub const TMS_EDGE_STEP_AMPLITUDE: i32 = 40; + pub const TMS_EDGE_ALTERNATING_AMPLITUDE: i32 = 30; + pub const TMS_EDGE_STEP_ACCUMULATOR: i64 = 480; + pub const TMS_EDGE_ALTERNATING_ACCUMULATOR: i64 = 360; + + pub enum EdgeFixture { + step_up = 0, + step_down = 1, + alternating = 2, + offset_step_up = 3, + offset_step_down = 4, + noisy_alternating = 5, + } + + // 3. Experiment: two encodings, twelve predictions, thirty-six RTL rows. + pub const TMS_EDGE_MODES: u32 = 2; + pub const TMS_EDGE_PREDICTIONS: u32 = 12; + pub const TMS_EDGE_RTL_ROWS: u32 = 36; + pub const TMS_EDGE_RTL_SEED_MAX: i64 = 4294967293; + pub const TMS_EDGE_SEED_DEFAULT: u32 = 27; + pub const TMS_EDGE_REPORT_LIMITATIONS: u32 = 4; + pub const TMS_EDGE_TIMING_FIELDS: u32 = 2; + pub const TMS_EDGE_PHYSICAL_DEVICE_TESTED: u32 = 0; + + // Reference functions. + // Template row r, column c: rising is -1 then +1 by halves, falling the + // opposite, alternating -1 on even columns and +1 on odd columns. + pub fn tms_edge_weight(row: u32, column: u32) -> i32 { + if (row == 2) { + if (column % 2 == 0) { return -1; } + return 1; + } + if (row == 0) { + if (column < TMS_EDGE_HALF) { return -1; } + return 1; + } + if (column < TMS_EDGE_HALF) { return 1; } + return -1; + } + + pub fn tms_edge_expected_label(fixture: u32) -> u32 { + return fixture % TMS_EDGE_CLASSES; + } + + // The three synthetic fixtures are scaled templates; offsets are in the + // conformance file as literal sample arrays. + pub fn tms_edge_synthetic_sample(fixture: u32, column: u32) -> i32 { + if (fixture == 0) { return TMS_EDGE_STEP_AMPLITUDE * tms_edge_weight(0, column); } + if (fixture == 1) { return TMS_EDGE_STEP_AMPLITUDE * tms_edge_weight(1, column); } + if (fixture == 2) { return TMS_EDGE_ALTERNATING_AMPLITUDE * tms_edge_weight(2, column); } + return 0; + } + + // Exact integer accumulator of one template row against twelve samples. + pub fn tms_edge_accumulator(row: u32, samples: []i32) -> i64 { + var sum: i64 = 0; + var column: u32 = 0; + while (column < TMS_EDGE_SAMPLES) { + sum = sum + (tms_edge_weight(row, column) as i64) * (samples[column] as i64); + column = column + 1; + } + return sum; + } + + // Scores are accumulators times the stored scale (one for all rows or one + // per row); the label is the strict maximum, and any tie is ambiguous (-1). + pub fn tms_edge_score(raw: i64, scale: f64) -> f64 { + return (raw as f64) * scale; + } + + pub fn tms_edge_argmax(s0: f64, s1: f64, s2: f64) -> i32 { + var best: i32 = 0; + var top: f64 = s0; + if (s1 > top) { best = 1; top = s1; } + if (s2 > top) { best = 2; top = s2; } + var ties: u32 = 0; + if (s0 == top) { ties = ties + 1; } + if (s1 == top) { ties = ties + 1; } + if (s2 == top) { ties = ties + 1; } + if (ties > 1) { return -1; } + return best; + } + + pub fn tms_edge_score_finite(score: f64) -> bool { + return score == score && score <= 1.7976931348623157e308 && score >= -1.7976931348623157e308; + } + + // Each fixture row is replayed in RTL with its own seed: base seed plus row. + pub fn tms_edge_rtl_seed(seed: i64, row: u32) -> i64 { + return seed + (row as i64); + } + + pub fn tms_edge_rtl_seed_valid(seed: i64) -> bool { + return seed >= 0 && seed <= TMS_EDGE_RTL_SEED_MAX; + } + + pub fn tms_edge_raw_payload_bytes(codec: i32) -> u32 { + if (codec == 1) { return TMS_EDGE_DENSE5_PAYLOAD_BYTES; } + if (codec == 0) { return TMS_EDGE_BASELINE2_PAYLOAD_BYTES; } + return 0; + } + + pub fn tms_edge_predictions(fixtures: u32, modes: u32) -> u32 { + return fixtures * modes; + } + + pub fn tms_edge_rtl_rows(fixtures: u32, modes: u32, classes: u32) -> u32 { + return fixtures * modes * classes; + } + + // Invariants: constant expressions, compiled as static assertions. + invariant the_model_is_three_by_twelve { + assert TMS_EDGE_CLASSES * TMS_EDGE_SAMPLES == TMS_EDGE_WEIGHTS && TMS_EDGE_HALF * 2 == TMS_EDGE_SAMPLES + && TMS_EDGE_MODEL_RANK == 2 && TMS_EDGE_MODEL_SCALES == 1 && TMS_EDGE_MODEL_AXES == 2; + } + invariant raw_payload_bytes_follow_the_codec_geometry { + assert TMS_EDGE_DENSE5_PAYLOAD_BYTES == (TMS_EDGE_WEIGHTS + 4) / 5 && TMS_EDGE_BASELINE2_PAYLOAD_BYTES == (TMS_EDGE_WEIGHTS + 3) / 4; + } + invariant synthetic_accumulators_are_amplitude_times_samples { + assert TMS_EDGE_STEP_ACCUMULATOR == 40 * 12 && TMS_EDGE_ALTERNATING_ACCUMULATOR == 30 * 12 + && TMS_EDGE_STEP_AMPLITUDE == 40 && TMS_EDGE_ALTERNATING_AMPLITUDE == 30; + } + invariant predictions_and_rtl_rows_count_every_fixture_in_every_mode { + assert TMS_EDGE_PREDICTIONS == TMS_EDGE_FIXTURES * TMS_EDGE_MODES + && TMS_EDGE_RTL_ROWS == TMS_EDGE_FIXTURES * TMS_EDGE_MODES * TMS_EDGE_CLASSES && TMS_EDGE_FIXTURES == 6 && TMS_EDGE_MODES == 2; + } + invariant the_rtl_seed_leaves_room_for_three_rows { + assert TMS_EDGE_RTL_SEED_MAX + 2 == 4294967295 && TMS_EDGE_SEED_DEFAULT == 27; + } + invariant the_report_names_its_limits_and_no_device { + assert TMS_EDGE_REPORT_LIMITATIONS == 4 && TMS_EDGE_TIMING_FIELDS == 2 && TMS_EDGE_PHYSICAL_DEVICE_TESTED == 0; + } + + // Tests execute in the generated C test runner. + test "templates: halves and parity" { + assert tms_edge_weight(0, 0) == -1 && tms_edge_weight(0, 5) == -1 && tms_edge_weight(0, 6) == 1 && tms_edge_weight(0, 11) == 1; + assert tms_edge_weight(1, 0) == 1 && tms_edge_weight(1, 6) == -1; + assert tms_edge_weight(2, 0) == -1 && tms_edge_weight(2, 1) == 1 && tms_edge_weight(2, 10) == -1 && tms_edge_weight(2, 11) == 1; + var column: u32 = 0; + var rising_sum: i32 = 0; + var alternating_sum: i32 = 0; + while (column < 12) { + assert tms_edge_weight(0, column) == 0 - tms_edge_weight(1, column); + rising_sum = rising_sum + tms_edge_weight(0, column); + alternating_sum = alternating_sum + tms_edge_weight(2, column); + column = column + 1; + } + assert rising_sum == 0 && alternating_sum == 0; + } + test "synthetic fixtures score their own template" { + var samples: [12]i32; + var fixture: u32 = 0; + while (fixture < 3) { + var column: u32 = 0; + while (column < 12) { samples[column] = tms_edge_synthetic_sample(fixture, column); column = column + 1; } + var a0: i64 = tms_edge_accumulator(0, samples); + var a1: i64 = tms_edge_accumulator(1, samples); + var a2: i64 = tms_edge_accumulator(2, samples); + assert tms_edge_argmax(a0 as f64, a1 as f64, a2 as f64) == (tms_edge_expected_label(fixture) as i32); + if (fixture == 0) { assert a0 == TMS_EDGE_STEP_ACCUMULATOR && a1 == 0 - TMS_EDGE_STEP_ACCUMULATOR && a2 == 0; } + if (fixture == 1) { assert a1 == TMS_EDGE_STEP_ACCUMULATOR && a0 == 0 - TMS_EDGE_STEP_ACCUMULATOR && a2 == 0; } + if (fixture == 2) { assert a2 == TMS_EDGE_ALTERNATING_ACCUMULATOR && a0 == 0 && a1 == 0; } + fixture = fixture + 1; + } + assert tms_edge_expected_label(3) == 0 && tms_edge_expected_label(4) == 1 && tms_edge_expected_label(5) == 2; + } + test "the offset step-up fixture" { + var samples: [12]i32; + samples[0] = -8; samples[1] = -7; samples[2] = -9; samples[3] = -8; samples[4] = -6; samples[5] = -8; + samples[6] = 33; samples[7] = 34; samples[8] = 35; samples[9] = 34; samples[10] = 32; samples[11] = 35; + assert tms_edge_accumulator(0, samples) == 249; + assert tms_edge_accumulator(1, samples) == -249; + assert tms_edge_accumulator(2, samples) == 3; + assert tms_edge_argmax(249.0, -249.0, 3.0) == 0; + } + test "ties and constant input are ambiguous" { + assert tms_edge_argmax(0.0, 0.0, 0.0) == -1; + assert tms_edge_argmax(5.0, 5.0, 1.0) == -1; + assert tms_edge_argmax(1.0, 2.0, 2.0) == -1; + assert tms_edge_argmax(1.0, 3.0, 2.0) == 1; + assert tms_edge_argmax(-1.0, -2.0, -3.0) == 0; + var samples: [12]i32; + var column: u32 = 0; + while (column < 12) { samples[column] = 17; column = column + 1; } + assert tms_edge_accumulator(0, samples) == 0 && tms_edge_accumulator(1, samples) == 0 && tms_edge_accumulator(2, samples) == 0; + } + test "scales multiply accumulators and must stay finite" { + assert tms_edge_score(480, 0.5) == 240.0 && tms_edge_score(-3, 2.0) == -6.0; + assert tms_edge_argmax(tms_edge_score(3, 1.0), tms_edge_score(-3, 2.0), tms_edge_score(3, 0.5)) == 0; + assert tms_edge_argmax(tms_edge_score(-3, 1.0), tms_edge_score(3, 2.0), tms_edge_score(-3, 0.5)) == 1; + assert tms_edge_score_finite(1.0e300) && !tms_edge_score_finite(tms_edge_score(3, 1.0e308) * 1.0e10); + } + test "rtl seeds, payload bytes and counts" { + assert tms_edge_rtl_seed(27, 0) == 27 && tms_edge_rtl_seed(27, 2) == 29; + assert tms_edge_rtl_seed_valid(0) && tms_edge_rtl_seed_valid(4294967293) && !tms_edge_rtl_seed_valid(4294967294) && !tms_edge_rtl_seed_valid(-1); + assert tms_edge_raw_payload_bytes(1) == 8 && tms_edge_raw_payload_bytes(0) == 9 && tms_edge_raw_payload_bytes(2) == 0; + assert tms_edge_predictions(6, 2) == 12 && tms_edge_rtl_rows(6, 2, 3) == 36; + } +} diff --git a/apps/website/public/t27/files/specs/memory/tmem/stream_compute.t27 b/apps/website/public/t27/files/specs/memory/tmem/stream_compute.t27 new file mode 100644 index 0000000000..ab70d8447d --- /dev/null +++ b/apps/website/public/t27/files/specs/memory/tmem/stream_compute.t27 @@ -0,0 +1,438 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/memory/tmem/stream_compute.t27 -- Trinity Stream Compute contract +// The path from stored codes to a dot product: the synchronous storage +// sequencer (load, start, busy, one registered read per word), the view that +// decodes a word into five masked lanes, and the framed ready/valid dot +// pipeline (five trits x five int8 activations per beat, checked accumulation, +// sticky frame errors, synchronous reset). The executable implementation is +// t27/rtl/dot_stream.t27, t27/rtl/stream_storage.t27, t27/rtl/stream_view.t27 +// with the wiring in rtl/t27/, driven by t27/rtl_driver.t27. The reference +// functions here restate the rules for differential tests and cycle traces. +// Evidence produced from this path is labelled rtl-simulation, never fpga. +// phi^2 + 1/phi^2 = 3 | TRINITY +module TrinityMemoryStreamComputeSpec { + // 1. Beat layout: five lanes of decoded trits, five int8 activations, a + // five-bit prefix mask and a last flag. + pub const TMS_DOT_LANES: u32 = 5; + pub const TMS_DOT_LANE_BITS: u32 = 2; + pub const TMS_DOT_LANE_FIELD_BITS: u32 = 10; + pub const TMS_DOT_DECODED_VALID_BIT: u32 = 1024; + pub const TMS_DOT_CODE_BITS: u32 = 10; + pub const TMS_DOT_DENSE_CODE_BITS: u32 = 8; + pub const TMS_DOT_DENSE_CODE_LIMIT: u32 = 243; + pub const TMS_DOT_BASELINE_CODE_LIMIT: u32 = 1024; + pub const TMS_DOT_ACTIVATION_BITS: u32 = 8; + pub const TMS_DOT_ACTIVATION_FIELD_BITS: u32 = 40; + pub const TMS_DOT_ACTIVATION_MIN: i32 = -128; + pub const TMS_DOT_ACTIVATION_MAX: i32 = 127; + pub const TMS_DOT_MASK_BITS: u32 = 5; + pub const TMS_DOT_FULL_MASK: u32 = 31; + pub const TMS_DOT_EMPTY_MASK: u32 = 0; + pub const TMS_DOT_GROUP_SUM_MIN: i32 = -640; + pub const TMS_DOT_GROUP_SUM_MAX: i32 = 640; + + // 2. Accumulator: checked signed addition per accepted group, never wrapping + // or saturating; an error zeroes the result and drains the frame. + pub const TMS_DOT_ACC_WIDTH_MIN: u32 = 2; + pub const TMS_DOT_ACC_WIDTH_MAX: u32 = 32; + pub const TMS_DOT_RUNNER_ACC_WIDTH_MIN: u32 = 12; + pub const TMS_DOT_DEFAULT_ACC_WIDTH: u32 = 32; + pub const TMS_DOT_ERROR_RESULT: i32 = 0; + + // 3. Pipeline: one input register stage and one accumulator stage. A beat + // accepted at edge A reaches the accumulator at edge A+1; the final beat's + // result is visible after edge A+1 and can be consumed at edge A+2. + pub const TMS_DOT_PIPELINE_STAGES: u32 = 2; + pub const TMS_DOT_ACCEPT_TO_VALID_EDGES: u32 = 1; + pub const TMS_DOT_ACCEPT_TO_CONSUME_EDGES: u32 = 2; + + // 4. Runner packet words (t27/rtl_driver.t27 and rtl/tb_dot_stream.v). + pub const TMS_RTL_PACKET_CODE_SHIFT: u32 = 0; + pub const TMS_RTL_PACKET_ACTIVATION_SHIFT: u32 = 10; + pub const TMS_RTL_PACKET_MASK_SHIFT: u32 = 50; + pub const TMS_RTL_PACKET_LAST_BIT: u32 = 55; + pub const TMS_RTL_PACKET_RESET_BIT: u32 = 56; + pub const TMS_RTL_PACKET_RESET_PENDING_BIT: u32 = 57; + pub const TMS_RTL_EXPECTED_RESULT_BITS: u32 = 32; + pub const TMS_RTL_EXPECTED_ERROR_BIT: u32 = 32; + pub const TMS_RTL_ERR_ARGUMENT: i32 = -80; + pub const TMS_RTL_ERR_CAPACITY: i32 = -81; + pub const TMS_RTL_ERR_OVERFLOW: i32 = -82; + pub const TMS_RTL_ERR_OUTPUT: i32 = -83; + pub const TMS_RTL_ERR_MISMATCH: i32 = -84; + pub const TMS_RTL_ERR_PROCESS: i32 = -85; + pub const TMS_RTL_ERR_RESOURCE: i32 = -86; + + // 5. Storage sequencer and view. Words are read in order after start; the + // sequencer has no downstream ready port, so joining it to the dot + // pipeline needs a buffer or a ready-capable sequencer (recorded gap). + pub const TMS_STORAGE_CAPACITY_GROUPS: u32 = 64; + pub const TMS_STORAGE_TRITS_PER_WORD: u32 = 5; + pub const TMS_STORAGE_MAX_TRITS: u32 = 320; + pub const TMS_STORAGE_DENSE_CODE_WIDTH: u32 = 8; + pub const TMS_STORAGE_BASELINE_CODE_WIDTH: u32 = 10; + pub const TMS_STORAGE_ELEMENT_BITS: u32 = 16; + pub const TMS_STORAGE_START_TO_WORD0_EDGES: u32 = 1; + pub const TMS_STORAGE_HAS_BACKPRESSURE: u32 = 0; + pub const TMS_STORAGE_JOIN_NEEDS_BUFFER: u32 = 1; + pub const TMS_VIEW_VALID_BIT: u32 = 32768; + pub const TMS_VIEW_MASK_SHIFT: u32 = 10; + pub const TMS_VIEW_LANE_FIELD_MASK: u32 = 1023; + + // Reference functions: decoding. + pub fn tms_dot_dense_digit(code: u32, divisor: u32) -> u32 { + var digit: u32 = (code / divisor) % 3; + if (digit == 0) { return 2; } + if (digit == 1) { return 0; } + return 1; + } + + // Decoded word: bit 10 valid, bits 9:0 five lanes (00=0, 01=+1, 10=-1). + pub fn tms_dot_decode(code: u32, dense_mode: bool) -> u32 { + if (dense_mode) { + if (code < TMS_DOT_DENSE_CODE_LIMIT) { + return TMS_DOT_DECODED_VALID_BIT | tms_dot_dense_digit(code, 1) | (tms_dot_dense_digit(code, 3) << 2) + | (tms_dot_dense_digit(code, 9) << 4) | (tms_dot_dense_digit(code, 27) << 6) + | (tms_dot_dense_digit(code, 81) << 8); + } + return 0; + } + if (code >= TMS_DOT_BASELINE_CODE_LIMIT) { return 0; } + var lane: u32 = 0; + while (lane < TMS_DOT_LANES) { + if (((code >> (lane * 2)) & 3) == 3) { return 0; } + lane = lane + 1; + } + return TMS_DOT_DECODED_VALID_BIT | code; + } + + pub fn tms_dot_lane_trit(lanes: u32, lane: u32) -> i32 { + var code: u32 = (lanes >> (lane * 2)) & 3; + if (code == 1) { return 1; } + if (code == 2) { return -1; } + return 0; + } + + pub fn tms_dot_activation(acts: u64, lane: u32) -> i32 { + var byte: i32 = ((acts >> (lane * 8)) & 255) as i32; + if (byte >= 128) { return byte - 256; } + return byte; + } + + // Five int8 activations packed little-endian into the 40-bit field. + pub fn tms_dot_pack_activations(a0: i32, a1: i32, a2: i32, a3: i32, a4: i32) -> u64 { + var word: u64 = ((a0 as u32) & 255) as u64; + word = word | ((((a1 as u32) & 255) as u64) << 8); + word = word | ((((a2 as u32) & 255) as u64) << 16); + word = word | ((((a3 as u32) & 255) as u64) << 24); + word = word | ((((a4 as u32) & 255) as u64) << 32); + return word; + } + + pub fn tms_dot_product(lanes: u32, acts: u64, mask: u32, lane: u32) -> i32 { + if (((mask >> lane) & 1) == 0) { return 0; } + return tms_dot_lane_trit(lanes, lane) * tms_dot_activation(acts, lane); + } + + pub fn tms_dot_group_sum(lanes: u32, acts: u64, mask: u32) -> i32 { + var sum: i32 = 0; + var lane: u32 = 0; + while (lane < TMS_DOT_LANES) { sum = sum + tms_dot_product(lanes, acts, mask, lane); lane = lane + 1; } + return sum; + } + + // Masks are prefixes: every beat before the last is full; the last beat may + // be empty only when it is the whole frame. + pub fn tms_dot_mask_valid(mask: u32, last: bool) -> bool { + if (!last) { return mask == TMS_DOT_FULL_MASK; } + return mask == 0 || mask == 1 || mask == 3 || mask == 7 || mask == 15 || mask == 31; + } + + pub fn tms_dot_lane_valid(lanes: u32, acts: u64, mask: u32, lane: u32) -> bool { + if (((mask >> lane) & 1) == 1) { return true; } + return ((lanes >> (lane * 2)) & 3) == 0 && ((acts >> (lane * 8)) & 255) == 0; + } + + pub fn tms_dot_group_valid(lanes: u32, acts: u64, mask: u32, last: bool) -> bool { + if ((lanes & TMS_DOT_DECODED_VALID_BIT) == 0) { return false; } + if (!tms_dot_mask_valid(mask, last)) { return false; } + var lane: u32 = 0; + while (lane < TMS_DOT_LANES) { + if (!tms_dot_lane_valid(lanes, acts, mask, lane)) { return false; } + lane = lane + 1; + } + return true; + } + + // Reference functions: accumulation and handshake. + pub fn tms_dot_width_supported(width: u32) -> bool { + return width >= TMS_DOT_ACC_WIDTH_MIN && width <= TMS_DOT_ACC_WIDTH_MAX; + } + + pub fn tms_dot_runner_width_supported(width: u32) -> bool { + return width >= TMS_DOT_RUNNER_ACC_WIDTH_MIN && width <= TMS_DOT_ACC_WIDTH_MAX; + } + + pub fn tms_dot_acc_max(width: u32) -> i64 { + return (((1 as i64) << (width - 1)) - 1); + } + + pub fn tms_dot_acc_min(width: u32) -> i64 { + return 0 - ((1 as i64) << (width - 1)); + } + + pub fn tms_dot_next_error(frame_error: bool, stage_error: bool, total: i64, min_value: i64, max_value: i64, + stage_empty: bool, frame_active: bool) -> bool { + if (frame_error || stage_error) { return true; } + if (total < min_value || total > max_value) { return true; } + return stage_empty && frame_active; + } + + pub fn tms_dot_accumulate_ready(out_valid: bool, out_ready: bool) -> bool { + return !out_valid || out_ready; + } + + pub fn tms_dot_in_ready(reset: bool, stage_valid: bool, out_valid: bool, out_ready: bool) -> bool { + if (reset) { return false; } + return !stage_valid || tms_dot_accumulate_ready(out_valid, out_ready); + } + + pub fn tms_dot_encoded_bits(dense_mode: bool) -> u32 { + if (dense_mode) { return TMS_DOT_DENSE_CODE_BITS; } + return TMS_DOT_CODE_BITS; + } + + // Reference functions: runner packet words. + pub fn tms_rtl_packet_word(code: u32, activations: []i32, mask: u32, last: bool) -> u64 { + var word: u64 = code as u64; + var lane: u32 = 0; + while (lane < TMS_DOT_LANES) { + var byte: u64 = ((activations[lane] as u32) & 255) as u64; + word = word | (byte << (TMS_RTL_PACKET_ACTIVATION_SHIFT + lane * TMS_DOT_ACTIVATION_BITS)); + lane = lane + 1; + } + word = word | ((mask as u64) << TMS_RTL_PACKET_MASK_SHIFT); + if (last) { word = word | ((1 as u64) << TMS_RTL_PACKET_LAST_BIT); } + return word; + } + + pub fn tms_rtl_expected_word(result: i32, error: bool) -> u64 { + var word: u64 = (result as u32) as u64; + if (error) { word = word | ((1 as u64) << TMS_RTL_EXPECTED_ERROR_BIT); } + return word; + } + + pub fn tms_rtl_packet_count(count: u64) -> u64 { + var groups: u64 = (count + 4) / 5; + if (groups == 0) { return 1; } + return groups; + } + + // Reference functions: storage sequencer and view. + pub fn tms_storage_words(trit_count: u32) -> u32 { + return (trit_count + TMS_STORAGE_TRITS_PER_WORD - 1) / TMS_STORAGE_TRITS_PER_WORD; + } + + pub fn tms_storage_last_mask(trit_count: u32) -> u32 { + var lanes: u32 = trit_count - TMS_STORAGE_TRITS_PER_WORD * (tms_storage_words(trit_count) - 1); + return (1 << lanes) - 1; + } + + pub fn tms_storage_config_ok(word_count: u32) -> bool { + return word_count >= 1 && word_count <= TMS_STORAGE_CAPACITY_GROUPS; + } + + pub fn tms_storage_busy(active: bool, output_pending: bool) -> bool { + return active || output_pending; + } + + pub fn tms_storage_load_ready(reset: bool, busy: bool, start: bool, config_ok: bool) -> bool { + return !reset && !busy && !start && config_ok; + } + + // Edges after the accepting start edge S: word k is visible after S+1+k, + // the last word after S+WORDS, and the sequencer is idle after S+WORDS+1. + pub fn tms_storage_word_edge(word: u32) -> u32 { + return TMS_STORAGE_START_TO_WORD0_EDGES + word; + } + + pub fn tms_storage_idle_edge(words: u32) -> u32 { + return words + 1; + } + + // Packed view word: [15] code valid, [14:10] lane mask, [9:0] visible lanes. + pub fn tms_view_pack(lanes: u32, mask: u32, decoded_valid: bool, input_valid: bool) -> u32 { + if (!input_valid) { return 0; } + if (!decoded_valid) { return mask << TMS_VIEW_MASK_SHIFT; } + var visible: u32 = 0; + var lane: u32 = 0; + while (lane < TMS_DOT_LANES) { + if (((mask >> lane) & 1) == 1) { visible = visible | (lanes & (3 << (lane * 2))); } + lane = lane + 1; + } + return TMS_VIEW_VALID_BIT | (mask << TMS_VIEW_MASK_SHIFT) | visible; + } + + // Invariants: constant expressions, compiled as static assertions. + invariant beat_fields_have_the_documented_widths { + assert TMS_DOT_LANES * TMS_DOT_ACTIVATION_BITS == TMS_DOT_ACTIVATION_FIELD_BITS + && TMS_DOT_LANES * TMS_DOT_LANE_BITS == TMS_DOT_LANE_FIELD_BITS + && TMS_DOT_DECODED_VALID_BIT == 1024 && TMS_DOT_MASK_BITS == TMS_DOT_LANES; + } + invariant code_limits_are_three_to_the_fifth_and_two_to_the_tenth { + assert TMS_DOT_DENSE_CODE_LIMIT == 3 * 3 * 3 * 3 * 3 && TMS_DOT_DENSE_CODE_LIMIT <= 256 + && TMS_DOT_BASELINE_CODE_LIMIT == 1024 && TMS_DOT_CODE_BITS == 10 && TMS_DOT_DENSE_CODE_BITS == 8; + } + invariant group_sum_bound_is_five_times_the_int8_magnitude { + assert TMS_DOT_GROUP_SUM_MAX == 5 * 128 && TMS_DOT_GROUP_SUM_MIN == -640 + && TMS_DOT_ACTIVATION_MIN == -128 && TMS_DOT_ACTIVATION_MAX == 127; + } + invariant masks_are_five_bit_prefixes { + assert TMS_DOT_FULL_MASK == 31 && TMS_DOT_EMPTY_MASK == 0; + } + invariant accumulator_widths_nest { + assert TMS_DOT_ACC_WIDTH_MIN == 2 && TMS_DOT_ACC_WIDTH_MIN < TMS_DOT_RUNNER_ACC_WIDTH_MIN + && TMS_DOT_RUNNER_ACC_WIDTH_MIN == 12 && TMS_DOT_RUNNER_ACC_WIDTH_MIN <= TMS_DOT_DEFAULT_ACC_WIDTH + && TMS_DOT_DEFAULT_ACC_WIDTH == TMS_DOT_ACC_WIDTH_MAX && TMS_DOT_ACC_WIDTH_MAX == 32; + } + invariant pipeline_latency_follows_the_two_stages { + assert TMS_DOT_PIPELINE_STAGES == 2 && TMS_DOT_ACCEPT_TO_VALID_EDGES == 1 && TMS_DOT_ACCEPT_TO_CONSUME_EDGES == 2; + } + invariant packet_fields_are_contiguous { + assert TMS_RTL_PACKET_ACTIVATION_SHIFT == TMS_RTL_PACKET_CODE_SHIFT + TMS_DOT_CODE_BITS + && TMS_RTL_PACKET_MASK_SHIFT == TMS_RTL_PACKET_ACTIVATION_SHIFT + TMS_DOT_ACTIVATION_FIELD_BITS + && TMS_RTL_PACKET_LAST_BIT == TMS_RTL_PACKET_MASK_SHIFT + TMS_DOT_MASK_BITS + && TMS_RTL_PACKET_RESET_BIT == TMS_RTL_PACKET_LAST_BIT + 1 + && TMS_RTL_PACKET_RESET_PENDING_BIT == TMS_RTL_PACKET_RESET_BIT + 1 + && TMS_RTL_EXPECTED_ERROR_BIT == TMS_RTL_EXPECTED_RESULT_BITS; + } + invariant runner_status_codes_are_distinct_and_negative { + assert TMS_RTL_ERR_RESOURCE < TMS_RTL_ERR_PROCESS && TMS_RTL_ERR_PROCESS < TMS_RTL_ERR_MISMATCH + && TMS_RTL_ERR_MISMATCH < TMS_RTL_ERR_OUTPUT && TMS_RTL_ERR_OUTPUT < TMS_RTL_ERR_OVERFLOW + && TMS_RTL_ERR_OVERFLOW < TMS_RTL_ERR_CAPACITY && TMS_RTL_ERR_CAPACITY < TMS_RTL_ERR_ARGUMENT + && TMS_RTL_ERR_ARGUMENT < -27; + } + invariant storage_capacity_and_element_width { + assert TMS_STORAGE_CAPACITY_GROUPS * TMS_STORAGE_TRITS_PER_WORD == TMS_STORAGE_MAX_TRITS + && TMS_STORAGE_ELEMENT_BITS >= TMS_STORAGE_BASELINE_CODE_WIDTH + && TMS_STORAGE_BASELINE_CODE_WIDTH > TMS_STORAGE_DENSE_CODE_WIDTH + && TMS_STORAGE_TRITS_PER_WORD == TMS_DOT_LANES; + } + invariant the_storage_join_is_a_recorded_gap { + assert TMS_STORAGE_HAS_BACKPRESSURE == 0 && TMS_STORAGE_JOIN_NEEDS_BUFFER == 1; + } + invariant view_packing_uses_the_upper_bits { + assert TMS_VIEW_VALID_BIT == 32768 && TMS_VIEW_MASK_SHIFT == TMS_DOT_LANE_FIELD_BITS && TMS_VIEW_LANE_FIELD_MASK == 1023; + } + + // Tests execute in the generated C test runner. + test "dense and baseline decoding" { + assert tms_dot_decode(121, true) == 1024; + assert tms_dot_decode(0, true) == 1706; + assert tms_dot_decode(242, true) == 1365; + assert tms_dot_decode(243, true) == 0; + assert tms_dot_decode(377, true) == 0; + assert tms_dot_decode(0, false) == 1024; + assert tms_dot_decode(682, false) == 1706; + assert tms_dot_decode(341, false) == 1365; + assert tms_dot_decode(3, false) == 0; + assert tms_dot_decode(768, false) == 0; + assert tms_dot_decode(1024, false) == 0; + } + test "prefix masks" { + assert tms_dot_mask_valid(31, false) && !tms_dot_mask_valid(3, false) && !tms_dot_mask_valid(0, false); + assert tms_dot_mask_valid(0, true) && tms_dot_mask_valid(1, true) && tms_dot_mask_valid(3, true); + assert tms_dot_mask_valid(7, true) && tms_dot_mask_valid(15, true) && tms_dot_mask_valid(31, true); + assert !tms_dot_mask_valid(11, true) && !tms_dot_mask_valid(2, true) && !tms_dot_mask_valid(16, true); + } + test "int8 activations are widened before negation" { + assert tms_dot_activation(128, 0) == -128; + assert tms_dot_activation(127, 0) == 127; + assert tms_dot_activation(255 << 8, 1) == -1; + assert tms_dot_product(2, 128, 1, 0) == 128; + assert tms_dot_product(1, 128, 1, 0) == -128; + assert tms_dot_product(1, 127, 0, 0) == 0; + } + test "group sums stay within five times int8" { + var minimums: u64 = tms_dot_pack_activations(-128, -128, -128, -128, -128); + assert tms_dot_group_sum(1706, minimums, 31) == 640; + assert tms_dot_group_sum(1365, minimums, 31) == -640; + var mixed: u64 = tms_dot_pack_activations(-128, 127, 5, 3, 9); + assert tms_dot_group_sum(1097, mixed, 31) == -252; + assert tms_dot_group_sum(1097, mixed, 3) == -255; + assert tms_dot_group_sum(1024, minimums, 31) == 0; + assert tms_dot_activation(minimums, 4) == -128; + } + test "beat validity" { + assert tms_dot_group_valid(1024, 0, 0, true); + assert !tms_dot_group_valid(1024, 0, 0, false); + assert !tms_dot_group_valid(1281, 0, 1, true); + assert !tms_dot_group_valid(1024, 256, 1, true); + assert tms_dot_group_valid(1025, 5, 1, true); + assert !tms_dot_group_valid(1, 0, 31, true); + assert !tms_dot_group_valid(1024, 0, 11, true); + assert tms_dot_group_valid(1365, 0, 31, false); + } + test "accumulator bounds and widths" { + assert tms_dot_acc_min(12) == -2048 && tms_dot_acc_max(12) == 2047; + assert tms_dot_acc_min(32) == -2147483648 && tms_dot_acc_max(32) == 2147483647; + assert tms_dot_acc_min(2) == -2 && tms_dot_acc_max(2) == 1; + assert tms_dot_width_supported(2) && tms_dot_width_supported(32) && !tms_dot_width_supported(1) && !tms_dot_width_supported(33); + assert tms_dot_runner_width_supported(12) && !tms_dot_runner_width_supported(11); + } + test "frame errors are sticky and never repaired" { + assert !tms_dot_next_error(false, false, 2047, -2048, 2047, false, true); + assert tms_dot_next_error(false, false, 2048, -2048, 2047, false, true); + assert tms_dot_next_error(false, false, -2049, -2048, 2047, false, true); + assert tms_dot_next_error(true, false, 0, -2048, 2047, false, true); + assert tms_dot_next_error(false, true, 0, -2048, 2047, false, false); + assert tms_dot_next_error(false, false, 0, -2048, 2047, true, true); + assert !tms_dot_next_error(false, false, 0, -2048, 2047, true, false); + } + test "handshake readiness" { + assert tms_dot_accumulate_ready(false, false) && tms_dot_accumulate_ready(true, true) && !tms_dot_accumulate_ready(true, false); + assert tms_dot_in_ready(false, false, true, false); + assert !tms_dot_in_ready(false, true, true, false); + assert tms_dot_in_ready(false, true, true, true); + assert tms_dot_in_ready(false, true, false, false); + assert !tms_dot_in_ready(true, false, false, true); + assert tms_dot_encoded_bits(true) == 8 && tms_dot_encoded_bits(false) == 10; + } + test "runner packet words" { + var acts: [5]i32; + acts[0] = -128; acts[1] = 127; acts[2] = 0; acts[3] = 1; acts[4] = -1; + var word: u64 = tms_rtl_packet_word(5, acts, 31, true); + var code_field: u64 = word & 1023; + var lane0: u64 = (word >> 10) & 255; + var lane1: u64 = (word >> 18) & 255; + var lane3: u64 = (word >> 34) & 255; + var lane4: u64 = (word >> 42) & 255; + var mask_field: u64 = (word >> 50) & 31; + var last_field: u64 = (word >> 55) & 1; + var reset_fields: u64 = (word >> 56) & 3; + assert code_field == 5 && lane0 == 128 && lane1 == 127 && lane3 == 1 && lane4 == 255; + assert mask_field == 31 && last_field == 1 && reset_fields == 0; + assert tms_rtl_expected_word(-255, false) == 4294967041; + assert tms_rtl_expected_word(0, true) == 4294967296; + assert tms_rtl_packet_count(0) == 1 && tms_rtl_packet_count(5) == 1 && tms_rtl_packet_count(6) == 2; + } + test "storage words, tail masks, configuration and timing" { + assert tms_storage_words(12) == 3 && tms_storage_last_mask(12) == 3; + assert tms_storage_words(320) == 64 && tms_storage_last_mask(320) == 31; + assert tms_storage_words(1) == 1 && tms_storage_last_mask(1) == 1; + assert tms_storage_words(5) == 1 && tms_storage_last_mask(5) == 31; + assert tms_storage_config_ok(1) && tms_storage_config_ok(64) && !tms_storage_config_ok(0) && !tms_storage_config_ok(65); + assert tms_storage_busy(true, false) && tms_storage_busy(false, true) && !tms_storage_busy(false, false); + assert tms_storage_load_ready(false, false, false, true); + assert !tms_storage_load_ready(false, true, false, true) && !tms_storage_load_ready(false, false, true, true); + assert !tms_storage_load_ready(true, false, false, true) && !tms_storage_load_ready(false, false, false, false); + assert tms_storage_word_edge(0) == 1 && tms_storage_word_edge(2) == 3 && tms_storage_idle_edge(3) == 4; + } + test "view packing" { + assert tms_view_pack(1365, 31, true, true) == 64853; + assert tms_view_pack(1365, 3, true, true) == 35845; + assert tms_view_pack(0, 3, false, true) == 3072; + assert tms_view_pack(0, 31, false, true) == 31744; + assert tms_view_pack(1365, 31, true, false) == 0; + } +} diff --git a/apps/website/public/t27/files/specs/memory/tmem/tensorpack.t27 b/apps/website/public/t27/files/specs/memory/tmem/tensorpack.t27 new file mode 100644 index 0000000000..a6c7e4dc30 --- /dev/null +++ b/apps/website/public/t27/files/specs/memory/tmem/tensorpack.t27 @@ -0,0 +1,315 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/memory/tmem/tensorpack.t27 -- TensorPack v1 (TTPK) container contract +// Named ternary tensors with shapes, axis labels and scalar or per-axis scales +// around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON +// metadata with exactly two root members and exactly eight descriptor fields, +// and a contiguous payload of nested containers. The executable implementation +// is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27; +// the reference functions here restate the rules for differential tests. +// phi^2 + 1/phi^2 = 3 | TRINITY +module TrinityMemoryTensorPackSpec { + // 1. Header: magic "TTPK", version, flags, reserved, three lengths, two CRCs. + pub const TMS_TTPK_MAGIC_0: u32 = 84; + pub const TMS_TTPK_MAGIC_1: u32 = 84; + pub const TMS_TTPK_MAGIC_2: u32 = 80; + pub const TMS_TTPK_MAGIC_3: u32 = 75; + pub const TMS_TTPK_VERSION: u32 = 1; + pub const TMS_TTPK_FLAGS: u32 = 0; + pub const TMS_TTPK_HEADER_BYTES: u32 = 32; + pub const TMS_TTPK_VERSION_OFFSET: u32 = 4; + pub const TMS_TTPK_FLAGS_OFFSET: u32 = 5; + pub const TMS_TTPK_RESERVED_OFFSET: u32 = 6; + pub const TMS_TTPK_RESERVED_BYTES: u32 = 2; + pub const TMS_TTPK_METADATA_LENGTH_OFFSET: u32 = 8; + pub const TMS_TTPK_METADATA_LENGTH_BYTES: u32 = 4; + pub const TMS_TTPK_TENSOR_COUNT_OFFSET: u32 = 12; + pub const TMS_TTPK_TENSOR_COUNT_BYTES: u32 = 4; + pub const TMS_TTPK_PAYLOAD_LENGTH_OFFSET: u32 = 16; + pub const TMS_TTPK_PAYLOAD_LENGTH_BYTES: u32 = 8; + pub const TMS_TTPK_METADATA_CRC_OFFSET: u32 = 24; + pub const TMS_TTPK_PAYLOAD_CRC_OFFSET: u32 = 28; + pub const TMS_TTPK_CRC_BYTES: u32 = 4; + pub const TMS_TTPK_CRC_COVERED_HEADER_BYTES: u32 = 24; + pub const TMS_TTPK_METADATA_OFFSET: u32 = 32; + pub const TMS_TTPK_NESTED_HEADER_BYTES: u32 = 24; + + // 2. Limits of the v1 reference implementation. + pub const TMS_TTPK_MAX_TENSORS: u32 = 1024; + pub const TMS_TTPK_MAX_METADATA_BYTES: u32 = 1048576; + pub const TMS_TTPK_MAX_PAYLOAD_BYTES: u64 = 67108864; + pub const TMS_TTPK_MAX_TOTAL_TRITS: u64 = 4194304; + pub const TMS_TTPK_MAX_RANK: u32 = 16; + pub const TMS_TTPK_MAX_DIMENSION: u64 = 2147483647; + pub const TMS_TTPK_MAX_NAME_BYTES: u32 = 256; + pub const TMS_TTPK_MAX_AXIS_BYTES: u32 = 64; + pub const TMS_TTPK_MAX_SCALE_AXIS: u32 = 15; + pub const TMS_TTPK_JSON_MAX_DEPTH: u32 = 8; + pub const TMS_TTPK_JSON_INTEGER_MAX_CHARS: u32 = 20; + pub const TMS_TTPK_CODEC_NAME_COUNT: u32 = 6; + + // 3. Metadata schema: {"order":"C","tensors":[...]} with exactly two root + // members; every descriptor has exactly these eight members, written in + // this sorted order without insignificant whitespace. + pub const TMS_TTPK_ROOT_MEMBERS: u32 = 2; + pub const TMS_TTPK_DESCRIPTOR_MEMBERS: u32 = 8; + pub const TMS_TTPK_EMPTY_METADATA_BYTES: u32 = 26; + pub const TMS_TTPK_EMPTY_PACK_BYTES: u32 = 58; + + pub enum TtpkField { + axes = 0, + codec = 1, + length = 2, + name = 3, + offset = 4, + scale_axis = 5, + scales = 6, + shape = 7, + } + + // 4. Float presentation of scales: shortest round-trip digits, fixed + // notation for decimal exponents -4..15, otherwise scientific with a + // signed exponent of at least two digits (Python's JSON rules). + pub const TMS_TTPK_FLOAT_FIXED_MIN_EXPONENT: i32 = -4; + pub const TMS_TTPK_FLOAT_FIXED_MAX_EXPONENT: i32 = 15; + pub const TMS_TTPK_FLOAT_EXPONENT_MIN_DIGITS: u32 = 2; + + // 5. Native status codes specific to TensorPack (codec and container codes + // -1..-10 are shared with types.t27). + pub const TMS_TTPK_ERR_DESCRIPTOR: i32 = -20; + pub const TMS_TTPK_ERR_TEXT: i32 = -21; + pub const TMS_TTPK_ERR_SHAPE: i32 = -22; + pub const TMS_TTPK_ERR_SCALE: i32 = -23; + pub const TMS_TTPK_ERR_AXES: i32 = -24; + pub const TMS_TTPK_ERR_OFFSET: i32 = -25; + pub const TMS_TTPK_ERR_SCHEMA: i32 = -26; + pub const TMS_TTPK_ERR_JSON: i32 = -27; + + // Reference functions. + pub fn tms_ttpk_container_bytes(metadata: u64, payload: u64) -> u64 { + return (TMS_TTPK_HEADER_BYTES as u64) + metadata + payload; + } + + pub fn tms_ttpk_size_consistent(size: u64, metadata: u64, payload: u64) -> bool { + return size == tms_ttpk_container_bytes(metadata, payload); + } + + pub fn tms_ttpk_header_limits_valid(metadata: u64, tensors: u64, payload: u64) -> bool { + if (metadata > TMS_TTPK_MAX_METADATA_BYTES as u64) { return false; } + if (tensors > TMS_TTPK_MAX_TENSORS as u64) { return false; } + return payload <= TMS_TTPK_MAX_PAYLOAD_BYTES; + } + + pub fn tms_ttpk_dimension_valid(dimension: u64) -> bool { + return dimension >= 1 && dimension <= TMS_TTPK_MAX_DIMENSION; + } + + // Product of the dimensions in C order, or -1 when the shape is invalid. + pub fn tms_ttpk_shape_count(shape: []u64, rank: usize) -> i64 { + if (rank > TMS_TTPK_MAX_RANK as usize) { return -1; } + var count: u64 = 1; + var i: usize = 0; + while (i < rank) { + if (!tms_ttpk_dimension_valid(shape[i])) { return -1; } + if (shape[i] > TMS_TTPK_MAX_TOTAL_TRITS / count) { return -1; } + count = count * shape[i]; + i = i + 1; + } + return count as i64; + } + + pub fn tms_ttpk_name_length_valid(bytes: u64) -> bool { + return bytes >= 1 && bytes <= TMS_TTPK_MAX_NAME_BYTES as u64; + } + + pub fn tms_ttpk_axis_length_valid(bytes: u64) -> bool { + return bytes >= 1 && bytes <= TMS_TTPK_MAX_AXIS_BYTES as u64; + } + + // ASCII control characters never appear in names or labels; bytes above + // 127 are governed by UTF-8 validation. + pub fn tms_ttpk_text_byte_allowed(byte: u32) -> bool { + if (byte < 32 || byte == 127) { return false; } + return byte < 256; + } + + pub fn tms_ttpk_axes_count_valid(rank: u32, axes: u32) -> bool { + return axes == 0 || axes == rank; + } + + pub fn tms_ttpk_scale_axis_valid(rank: u32, axis: i32) -> bool { + if (axis == -1) { return true; } + if (axis < 0 || axis > TMS_TTPK_MAX_SCALE_AXIS as i32) { return false; } + return (axis as u32) < rank; + } + + // Number of scales a descriptor must carry, or -1 when the axis is invalid. + pub fn tms_ttpk_scale_count(rank: u32, axis: i32, axis_dimension: u64) -> i64 { + if (!tms_ttpk_scale_axis_valid(rank, axis)) { return -1; } + if (axis == -1) { return 1; } + return axis_dimension as i64; + } + + pub fn tms_ttpk_scale_valid(value: f64) -> bool { + return value > 0.0 && value <= 1.7976931348623157e308; + } + + pub fn tms_ttpk_nested_length(payload_bytes: u64) -> u64 { + return (TMS_TTPK_NESTED_HEADER_BYTES as u64) + payload_bytes; + } + + // Descriptors cover the payload contiguously from offset zero. + pub fn tms_ttpk_chain_valid(offsets: []u64, lengths: []u64, count: usize, payload_bytes: u64) -> bool { + var expected: u64 = 0; + var i: usize = 0; + while (i < count) { + if (offsets[i] != expected) { return false; } + if (lengths[i] < TMS_TTPK_NESTED_HEADER_BYTES as u64) { return false; } + if (lengths[i] > payload_bytes - expected) { return false; } + expected = expected + lengths[i]; + i = i + 1; + } + return expected == payload_bytes; + } + + pub fn tms_ttpk_float_uses_fixed_notation(exponent: i32) -> bool { + return exponent >= TMS_TTPK_FLOAT_FIXED_MIN_EXPONENT && exponent <= TMS_TTPK_FLOAT_FIXED_MAX_EXPONENT; + } + + // A caller may lower the decoded-trit limit, never raise it; zero disables nothing. + pub fn tms_ttpk_total_trit_limit(requested: u64) -> u64 { + if (requested > TMS_TTPK_MAX_TOTAL_TRITS) { return TMS_TTPK_MAX_TOTAL_TRITS; } + return requested; + } + + // Invariants: constant expressions, compiled as static assertions. + invariant header_layout_is_contiguous { + assert TMS_TTPK_VERSION_OFFSET == 4 && TMS_TTPK_FLAGS_OFFSET == 5 + && TMS_TTPK_RESERVED_OFFSET + TMS_TTPK_RESERVED_BYTES == TMS_TTPK_METADATA_LENGTH_OFFSET + && TMS_TTPK_METADATA_LENGTH_OFFSET + TMS_TTPK_METADATA_LENGTH_BYTES == TMS_TTPK_TENSOR_COUNT_OFFSET + && TMS_TTPK_TENSOR_COUNT_OFFSET + TMS_TTPK_TENSOR_COUNT_BYTES == TMS_TTPK_PAYLOAD_LENGTH_OFFSET + && TMS_TTPK_PAYLOAD_LENGTH_OFFSET + TMS_TTPK_PAYLOAD_LENGTH_BYTES == TMS_TTPK_METADATA_CRC_OFFSET + && TMS_TTPK_METADATA_CRC_OFFSET + TMS_TTPK_CRC_BYTES == TMS_TTPK_PAYLOAD_CRC_OFFSET + && TMS_TTPK_PAYLOAD_CRC_OFFSET + TMS_TTPK_CRC_BYTES == TMS_TTPK_HEADER_BYTES + && TMS_TTPK_METADATA_OFFSET == TMS_TTPK_HEADER_BYTES; + } + invariant metadata_crc_covers_the_header_prefix { + assert TMS_TTPK_CRC_COVERED_HEADER_BYTES == TMS_TTPK_METADATA_CRC_OFFSET; + } + invariant magic_spells_ttpk { + assert TMS_TTPK_MAGIC_0 == 84 && TMS_TTPK_MAGIC_1 == 84 && TMS_TTPK_MAGIC_2 == 80 && TMS_TTPK_MAGIC_3 == 75; + } + invariant empty_pack_is_header_plus_empty_metadata { + assert TMS_TTPK_EMPTY_PACK_BYTES == TMS_TTPK_HEADER_BYTES + TMS_TTPK_EMPTY_METADATA_BYTES && TMS_TTPK_EMPTY_METADATA_BYTES == 26; + } + invariant limits_are_the_documented_powers_of_two { + assert TMS_TTPK_MAX_METADATA_BYTES == 1048576 && TMS_TTPK_MAX_PAYLOAD_BYTES == 64 * 1048576 + && TMS_TTPK_MAX_TOTAL_TRITS == 4 * 1048576 && TMS_TTPK_MAX_DIMENSION == 2147483647; + } + invariant scale_axis_indexes_a_dimension { + assert TMS_TTPK_MAX_SCALE_AXIS + 1 == TMS_TTPK_MAX_RANK; + } + invariant a_maximal_pack_of_any_codec_fits_the_payload_limit { + assert TMS_TTPK_MAX_TOTAL_TRITS / 4 + TMS_TTPK_NESTED_HEADER_BYTES <= TMS_TTPK_MAX_PAYLOAD_BYTES + && (TMS_TTPK_MAX_TOTAL_TRITS + 4) / 5 + TMS_TTPK_NESTED_HEADER_BYTES <= TMS_TTPK_MAX_PAYLOAD_BYTES; + } + invariant schema_member_counts_are_fixed { + assert TMS_TTPK_ROOT_MEMBERS == 2 && TMS_TTPK_DESCRIPTOR_MEMBERS == 8 && TMS_TTPK_CODEC_NAME_COUNT == 6; + } + invariant float_notation_thresholds_match_python { + assert TMS_TTPK_FLOAT_FIXED_MIN_EXPONENT == -4 && TMS_TTPK_FLOAT_FIXED_MAX_EXPONENT == 15 + && TMS_TTPK_FLOAT_EXPONENT_MIN_DIGITS == 2; + } + invariant tensorpack_status_codes_are_distinct_and_below_the_shared_codes { + assert TMS_TTPK_ERR_JSON < TMS_TTPK_ERR_SCHEMA && TMS_TTPK_ERR_SCHEMA < TMS_TTPK_ERR_OFFSET + && TMS_TTPK_ERR_OFFSET < TMS_TTPK_ERR_AXES && TMS_TTPK_ERR_AXES < TMS_TTPK_ERR_SCALE + && TMS_TTPK_ERR_SCALE < TMS_TTPK_ERR_SHAPE && TMS_TTPK_ERR_SHAPE < TMS_TTPK_ERR_TEXT + && TMS_TTPK_ERR_TEXT < TMS_TTPK_ERR_DESCRIPTOR && TMS_TTPK_ERR_DESCRIPTOR < -10; + } + + // Tests execute in the generated C test runner. + test "the empty pack is 58 bytes" { + assert tms_ttpk_container_bytes(26, 0) == TMS_TTPK_EMPTY_PACK_BYTES as u64; + assert tms_ttpk_size_consistent(58, 26, 0); + assert !tms_ttpk_size_consistent(59, 26, 0); + assert tms_ttpk_container_bytes(0, 0) == 32; + } + test "header limits are inclusive" { + assert tms_ttpk_header_limits_valid(1048576, 1024, 67108864); + assert !tms_ttpk_header_limits_valid(1048577, 1024, 67108864); + assert !tms_ttpk_header_limits_valid(1048576, 1025, 67108864); + assert !tms_ttpk_header_limits_valid(1048576, 1024, 67108865); + assert tms_ttpk_header_limits_valid(0, 0, 0); + } + test "shape counts multiply valid dimensions in c order" { + var shape: [17]u64; + var i: usize = 0; + while (i < 17) { shape[i] = 1; i = i + 1; } + assert tms_ttpk_shape_count(shape, 0) == 1; + assert tms_ttpk_shape_count(shape, 16) == 1; + assert tms_ttpk_shape_count(shape, 17) == -1; + shape[0] = 2; shape[1] = 3; + assert tms_ttpk_shape_count(shape, 2) == 6; + shape[0] = 1; shape[1] = 2; shape[2] = 2; + assert tms_ttpk_shape_count(shape, 3) == 4; + shape[0] = 0; + assert tms_ttpk_shape_count(shape, 1) == -1; + shape[0] = 2147483648; + assert tms_ttpk_shape_count(shape, 1) == -1; + shape[0] = 2147483647; + assert tms_ttpk_shape_count(shape, 1) == -1; + shape[0] = 2048; shape[1] = 2048; + assert tms_ttpk_shape_count(shape, 2) == 4194304; + shape[1] = 2049; + assert tms_ttpk_shape_count(shape, 2) == -1; + assert tms_ttpk_dimension_valid(1) && !tms_ttpk_dimension_valid(0); + } + test "names and axis labels are bounded nonempty text without controls" { + assert !tms_ttpk_name_length_valid(0) && tms_ttpk_name_length_valid(1); + assert tms_ttpk_name_length_valid(256) && !tms_ttpk_name_length_valid(257); + assert tms_ttpk_axis_length_valid(64) && !tms_ttpk_axis_length_valid(65); + assert !tms_ttpk_text_byte_allowed(0) && !tms_ttpk_text_byte_allowed(31); + assert tms_ttpk_text_byte_allowed(32) && tms_ttpk_text_byte_allowed(126); + assert !tms_ttpk_text_byte_allowed(127) && tms_ttpk_text_byte_allowed(206); + } + test "axes and scales follow the rank" { + assert tms_ttpk_axes_count_valid(2, 0) && tms_ttpk_axes_count_valid(2, 2); + assert !tms_ttpk_axes_count_valid(2, 1) && !tms_ttpk_axes_count_valid(2, 3); + assert tms_ttpk_scale_axis_valid(2, -1) && tms_ttpk_scale_axis_valid(2, 0) && tms_ttpk_scale_axis_valid(2, 1); + assert !tms_ttpk_scale_axis_valid(2, 2) && !tms_ttpk_scale_axis_valid(0, 0) && !tms_ttpk_scale_axis_valid(2, -2); + assert !tms_ttpk_scale_axis_valid(16, 16); + assert tms_ttpk_scale_count(2, -1, 7) == 1; + assert tms_ttpk_scale_count(2, 0, 7) == 7; + assert tms_ttpk_scale_count(1, 1, 7) == -1; + assert tms_ttpk_scale_valid(0.5) && tms_ttpk_scale_valid(1.7976931348623157e308); + assert !tms_ttpk_scale_valid(0.0) && !tms_ttpk_scale_valid(-1.0); + } + test "descriptors cover the payload contiguously" { + var offsets: [2]u64; + var lengths: [2]u64; + offsets[0] = 0; offsets[1] = 25; + lengths[0] = 25; lengths[1] = 26; + assert tms_ttpk_chain_valid(offsets, lengths, 2, 51); + assert !tms_ttpk_chain_valid(offsets, lengths, 2, 52); + assert !tms_ttpk_chain_valid(offsets, lengths, 2, 50); + offsets[1] = 26; + assert !tms_ttpk_chain_valid(offsets, lengths, 2, 52); + offsets[1] = 24; + assert !tms_ttpk_chain_valid(offsets, lengths, 2, 50); + lengths[0] = 23; offsets[1] = 23; + assert !tms_ttpk_chain_valid(offsets, lengths, 2, 49); + assert tms_ttpk_chain_valid(offsets, lengths, 0, 0); + assert !tms_ttpk_chain_valid(offsets, lengths, 0, 1); + assert tms_ttpk_nested_length(2) == 26 && tms_ttpk_nested_length(0) == 24; + } + test "float notation switches at the python thresholds" { + assert tms_ttpk_float_uses_fixed_notation(-4) && tms_ttpk_float_uses_fixed_notation(15); + assert tms_ttpk_float_uses_fixed_notation(0); + assert !tms_ttpk_float_uses_fixed_notation(-5) && !tms_ttpk_float_uses_fixed_notation(16); + } + test "callers can lower the decoded trit limit but not raise it" { + assert tms_ttpk_total_trit_limit(0) == 0; + assert tms_ttpk_total_trit_limit(5) == 5; + assert tms_ttpk_total_trit_limit(4194304) == 4194304; + assert tms_ttpk_total_trit_limit(4194305) == 4194304; + } +} diff --git a/apps/website/public/t27/files/specs/memory/tmem/types.t27 b/apps/website/public/t27/files/specs/memory/tmem/types.t27 new file mode 100644 index 0000000000..0d1fdfe3a2 --- /dev/null +++ b/apps/website/public/t27/files/specs/memory/tmem/types.t27 @@ -0,0 +1,290 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/memory/tmem/types.t27 -- shared contract constants for Trinity Memory +// Contract layer for the executable modules in t27/: trit lane codes, codec +// identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 +// parameters, native status codes and evidence labels. The reference functions +// here are independent restatements used by differential tests; they are not +// the production implementation (see t27/codecs.t27 and t27/container.t27). +// phi^2 + 1/phi^2 = 3 | TRINITY +module TrinityMemoryTypes { + // 1. Trit lanes: two bits per trit on decoder outputs and baseline words. + pub const TMS_LANE_BITS: u32 = 2; + pub const TMS_LANE_ZERO: u32 = 0; + pub const TMS_LANE_POS: u32 = 1; + pub const TMS_LANE_NEG: u32 = 2; + pub const TMS_LANE_INVALID: u32 = 3; + + // 2. Codec identifiers (TMEM header byte 5) and group geometry. + pub const TMS_CODEC_BASELINE2: i32 = 0; + pub const TMS_CODEC_DENSE5: i32 = 1; + pub const TMS_CODEC_DENSE17: i32 = 2; + pub const TMS_CODEC_DENSE22: i32 = 3; + pub const TMS_CODEC_SPARSE41: i32 = 4; + pub const TMS_CODEC_SPARSE82: i32 = 5; + pub const TMS_CODEC_COUNT: i32 = 6; + + pub const TMS_BASELINE2_GROUP_TRITS: u32 = 4; + pub const TMS_BASELINE2_GROUP_BITS: u32 = 8; + pub const TMS_DENSE5_GROUP_TRITS: u32 = 5; + pub const TMS_DENSE5_GROUP_BITS: u32 = 8; + pub const TMS_DENSE17_GROUP_TRITS: u32 = 17; + pub const TMS_DENSE17_GROUP_BITS: u32 = 27; + pub const TMS_DENSE22_GROUP_TRITS: u32 = 22; + pub const TMS_DENSE22_GROUP_BITS: u32 = 35; + pub const TMS_SPARSE41_GROUP_TRITS: u32 = 4; + pub const TMS_SPARSE41_GROUP_BITS: u32 = 4; + pub const TMS_SPARSE41_MAX_NONZERO: u32 = 1; + pub const TMS_SPARSE82_GROUP_TRITS: u32 = 8; + pub const TMS_SPARSE82_GROUP_BITS: u32 = 8; + pub const TMS_SPARSE82_MAX_NONZERO: u32 = 2; + + // 3. Valid encoded words. A dense word w is valid iff w < 3^trits; a sparse + // word iff w < its state count; a baseline word iff no lane equals 3. + pub const TMS_DENSE5_CODE_LIMIT: u32 = 243; + pub const TMS_DENSE5_ZERO_GROUP_CODE: u32 = 121; + pub const TMS_DENSE5_RESERVED_FIRST: u32 = 243; + pub const TMS_DENSE5_RESERVED_LAST: u32 = 255; + pub const TMS_DENSE17_CODE_LIMIT: u32 = 129140163; + pub const TMS_DENSE22_CODE_LIMIT: u64 = 31381059609; + pub const TMS_SPARSE41_CODE_LIMIT: u32 = 9; + pub const TMS_SPARSE41_RESERVED_FIRST: u32 = 9; + pub const TMS_SPARSE41_RESERVED_LAST: u32 = 15; + pub const TMS_SPARSE82_CODE_LIMIT: u32 = 129; + pub const TMS_SPARSE82_RESERVED_FIRST: u32 = 129; + pub const TMS_SPARSE82_RESERVED_LAST: u32 = 255; + + // 4. TMEM v1 container: 24-byte little-endian header, then the payload. + pub const TMS_TMEM_MAGIC_0: u32 = 84; + pub const TMS_TMEM_MAGIC_1: u32 = 77; + pub const TMS_TMEM_MAGIC_2: u32 = 69; + pub const TMS_TMEM_MAGIC_3: u32 = 77; + pub const TMS_TMEM_VERSION: u32 = 1; + pub const TMS_TMEM_HEADER_BYTES: u32 = 24; + pub const TMS_TMEM_VERSION_OFFSET: u32 = 4; + pub const TMS_TMEM_CODEC_OFFSET: u32 = 5; + pub const TMS_TMEM_RESERVED_OFFSET: u32 = 6; + pub const TMS_TMEM_RESERVED_BYTES: u32 = 2; + pub const TMS_TMEM_COUNT_OFFSET: u32 = 8; + pub const TMS_TMEM_COUNT_BYTES: u32 = 8; + pub const TMS_TMEM_PAYLOAD_LENGTH_OFFSET: u32 = 16; + pub const TMS_TMEM_PAYLOAD_LENGTH_BYTES: u32 = 4; + pub const TMS_TMEM_CRC_OFFSET: u32 = 20; + pub const TMS_TMEM_CRC_BYTES: u32 = 4; + pub const TMS_TMEM_CRC_COVERED_HEADER_BYTES: u32 = 20; + pub const TMS_TMEM_MAX_PAYLOAD_BYTES: u64 = 4294967295; + + // 5. CRC32: IEEE 802.3 reflected polynomial, identical to zlib.crc32 defaults. + pub const TMS_CRC32_POLY: u32 = 0xedb88320; + pub const TMS_CRC32_INIT: u32 = 0xffffffff; + pub const TMS_CRC32_XOR_OUT: u32 = 0xffffffff; + pub const TMS_CRC32_CHECK_VALUE: u32 = 0xcbf43926; + + // 6. Native status codes returned by the executable modules. + pub const TMS_OK: i32 = 0; + pub const TMS_ERR_CODEC: i32 = -1; + pub const TMS_ERR_CAPACITY: i32 = -2; + pub const TMS_ERR_TRIT: i32 = -3; + pub const TMS_ERR_SPARSITY: i32 = -4; + pub const TMS_ERR_LENGTH: i32 = -5; + pub const TMS_ERR_CODE: i32 = -6; + pub const TMS_ERR_PADDING: i32 = -7; + pub const TMS_ERR_HEADER: i32 = -8; + pub const TMS_ERR_CHECKSUM: i32 = -9; + pub const TMS_ERR_LIMIT: i32 = -10; + + // 7. Evidence labels: every reported number names the runtime that produced it. + pub enum Evidence { + emulator = 0, + software = 1, + rtl_simulation = 2, + fpga = 3, + } + + // Reference functions: independent restatements of the contract. + pub fn tms_pow3(exponent: u32) -> u64 { + var value: u64 = 1; + var i: u32 = 0; + while (i < exponent) { value = value * 3; i = i + 1; } + return value; + } + + pub fn tms_group_trits(codec: i32) -> u32 { + if (codec == TMS_CODEC_BASELINE2) { return TMS_BASELINE2_GROUP_TRITS; } + if (codec == TMS_CODEC_DENSE5) { return TMS_DENSE5_GROUP_TRITS; } + if (codec == TMS_CODEC_DENSE17) { return TMS_DENSE17_GROUP_TRITS; } + if (codec == TMS_CODEC_DENSE22) { return TMS_DENSE22_GROUP_TRITS; } + if (codec == TMS_CODEC_SPARSE41) { return TMS_SPARSE41_GROUP_TRITS; } + if (codec == TMS_CODEC_SPARSE82) { return TMS_SPARSE82_GROUP_TRITS; } + return 0; + } + + pub fn tms_group_bits(codec: i32) -> u32 { + if (codec == TMS_CODEC_BASELINE2) { return TMS_BASELINE2_GROUP_BITS; } + if (codec == TMS_CODEC_DENSE5) { return TMS_DENSE5_GROUP_BITS; } + if (codec == TMS_CODEC_DENSE17) { return TMS_DENSE17_GROUP_BITS; } + if (codec == TMS_CODEC_DENSE22) { return TMS_DENSE22_GROUP_BITS; } + if (codec == TMS_CODEC_SPARSE41) { return TMS_SPARSE41_GROUP_BITS; } + if (codec == TMS_CODEC_SPARSE82) { return TMS_SPARSE82_GROUP_BITS; } + return 0; + } + + // Maximum nonzero trits per group; dense codecs are unconstrained. + pub fn tms_max_nonzero(codec: i32) -> u32 { + if (codec == TMS_CODEC_SPARSE41) { return TMS_SPARSE41_MAX_NONZERO; } + if (codec == TMS_CODEC_SPARSE82) { return TMS_SPARSE82_MAX_NONZERO; } + return tms_group_trits(codec); + } + + // Number of valid encoded words for one group. + pub fn tms_valid_word_count(codec: i32) -> u64 { + if (codec == TMS_CODEC_SPARSE41) { return TMS_SPARSE41_CODE_LIMIT as u64; } + if (codec == TMS_CODEC_SPARSE82) { return TMS_SPARSE82_CODE_LIMIT as u64; } + if (codec == TMS_CODEC_BASELINE2) { return tms_pow3(TMS_BASELINE2_GROUP_TRITS); } + return tms_pow3(tms_group_trits(codec)); + } + + pub fn tms_lane_valid(code: u32) -> bool { + return code != TMS_LANE_INVALID; + } + + pub fn tms_lane_trit(code: u32) -> i32 { + if (code == TMS_LANE_POS) { return 1; } + if (code == TMS_LANE_NEG) { return -1; } + return 0; + } + + pub fn tms_word_valid(codec: i32, word: u64) -> bool { + if (codec == TMS_CODEC_BASELINE2) { + var lane: u32 = 0; + while (lane < TMS_BASELINE2_GROUP_TRITS) { + var code: u32 = ((word >> (TMS_LANE_BITS * lane)) & 3) as u32; + if (!tms_lane_valid(code)) { return false; } + lane = lane + 1; + } + return word < 256; + } + return word < tms_valid_word_count(codec); + } + + // Dense base-3 word for five trits: sum of (trit + 1) * 3^lane. + pub fn tms_dense_code5(t0: i32, t1: i32, t2: i32, t3: i32, t4: i32) -> u32 { + var word: u32 = 0; + word = word + ((t0 + 1) as u32) * 1; + word = word + ((t1 + 1) as u32) * 3; + word = word + ((t2 + 1) as u32) * 9; + word = word + ((t3 + 1) as u32) * 27; + word = word + ((t4 + 1) as u32) * 81; + return word; + } + + // Payload bytes: ceil(count / trits) groups, each of group_bits bits, packed + // contiguously and rounded up to whole bytes. Valid for count < 2^32. + pub fn tms_payload_bytes(codec: i32, count: u64) -> u64 { + var trits: u64 = tms_group_trits(codec) as u64; + if (trits == 0) { return 0; } + var groups: u64 = (count + trits - 1) / trits; + var bits: u64 = groups * (tms_group_bits(codec) as u64); + return (bits + 7) / 8; + } + + // One reflected CRC32 step over a single byte. + pub fn tms_crc32_byte(state: u32, byte: u32) -> u32 { + var crc: u32 = state ^ (byte & 255); + var bit: u32 = 0; + while (bit < 8) { + if ((crc & 1) != 0) { crc = (crc >> 1) ^ TMS_CRC32_POLY; } + else { crc = crc >> 1; } + bit = bit + 1; + } + return crc; + } + + // Invariants are constant expressions and become compile-time assertions. + invariant lane_codes_fit_two_bits { assert TMS_LANE_INVALID < 4 && TMS_LANE_BITS == 2; } + invariant baseline_costs_two_bits_per_trit { assert TMS_BASELINE2_GROUP_BITS == TMS_BASELINE2_GROUP_TRITS * TMS_LANE_BITS; } + invariant dense5_fits_one_byte { assert TMS_DENSE5_CODE_LIMIT <= 256 && TMS_DENSE5_GROUP_BITS == 8; } + invariant dense17_fits_27_bits { assert TMS_DENSE17_CODE_LIMIT <= 134217728 && TMS_DENSE17_GROUP_BITS == 27; } + invariant dense22_fits_35_bits { assert TMS_DENSE22_CODE_LIMIT <= 34359738368 && TMS_DENSE22_GROUP_BITS == 35; } + invariant sparse41_fits_four_bits { assert TMS_SPARSE41_CODE_LIMIT <= 16 && TMS_SPARSE41_GROUP_BITS == 4; } + invariant sparse82_fits_one_byte { assert TMS_SPARSE82_CODE_LIMIT <= 256 && TMS_SPARSE82_GROUP_BITS == 8; } + invariant dense5_zero_group_is_all_middle_digits { assert TMS_DENSE5_ZERO_GROUP_CODE == 1 + 3 + 9 + 27 + 81; } + invariant dense5_reserved_codes_follow_the_limit { assert TMS_DENSE5_RESERVED_FIRST == TMS_DENSE5_CODE_LIMIT && TMS_DENSE5_RESERVED_LAST == 255; } + invariant sparse41_state_count { assert TMS_SPARSE41_CODE_LIMIT == 1 + TMS_SPARSE41_GROUP_TRITS * 2; } + invariant sparse82_state_count { assert TMS_SPARSE82_CODE_LIMIT == 1 + TMS_SPARSE82_GROUP_TRITS * 2 + (TMS_SPARSE82_GROUP_TRITS * (TMS_SPARSE82_GROUP_TRITS - 1) / 2) * 4; } + invariant sparse_reserved_codes_follow_the_limits { assert TMS_SPARSE41_RESERVED_FIRST == TMS_SPARSE41_CODE_LIMIT && TMS_SPARSE82_RESERVED_FIRST == TMS_SPARSE82_CODE_LIMIT; } + invariant tmem_header_is_contiguous { assert TMS_TMEM_VERSION_OFFSET == 4 && TMS_TMEM_CODEC_OFFSET == 5 && TMS_TMEM_RESERVED_OFFSET + TMS_TMEM_RESERVED_BYTES == TMS_TMEM_COUNT_OFFSET && TMS_TMEM_COUNT_OFFSET + TMS_TMEM_COUNT_BYTES == TMS_TMEM_PAYLOAD_LENGTH_OFFSET && TMS_TMEM_PAYLOAD_LENGTH_OFFSET + TMS_TMEM_PAYLOAD_LENGTH_BYTES == TMS_TMEM_CRC_OFFSET && TMS_TMEM_CRC_OFFSET + TMS_TMEM_CRC_BYTES == TMS_TMEM_HEADER_BYTES; } + invariant tmem_crc_covers_the_header_prefix { assert TMS_TMEM_CRC_COVERED_HEADER_BYTES == TMS_TMEM_CRC_OFFSET; } + invariant tmem_payload_length_is_32_bit { assert TMS_TMEM_MAX_PAYLOAD_BYTES == 4294967295 && TMS_TMEM_PAYLOAD_LENGTH_BYTES == 4; } + invariant status_codes_are_distinct_and_negative { assert TMS_ERR_CODEC < TMS_OK && TMS_ERR_CAPACITY < TMS_ERR_CODEC && TMS_ERR_TRIT < TMS_ERR_CAPACITY && TMS_ERR_SPARSITY < TMS_ERR_TRIT && TMS_ERR_LENGTH < TMS_ERR_SPARSITY && TMS_ERR_CODE < TMS_ERR_LENGTH && TMS_ERR_PADDING < TMS_ERR_CODE && TMS_ERR_HEADER < TMS_ERR_PADDING && TMS_ERR_CHECKSUM < TMS_ERR_HEADER && TMS_ERR_LIMIT < TMS_ERR_CHECKSUM; } + invariant codec_identifiers_are_dense { assert TMS_CODEC_BASELINE2 == 0 && TMS_CODEC_SPARSE82 == 5 && TMS_CODEC_COUNT == 6; } + + // Tests execute in the generated C test runner (-DT27_TEST_MAIN). + test "dense5 zero group encodes as code 121" { + assert tms_dense_code5(0, 0, 0, 0, 0) == TMS_DENSE5_ZERO_GROUP_CODE; + } + test "dense5 extremes are codes 0 and 242" { + assert tms_dense_code5(-1, -1, -1, -1, -1) == 0; + assert tms_dense_code5(1, 1, 1, 1, 1) == TMS_DENSE5_CODE_LIMIT - 1; + } + test "dense code limits are powers of three" { + assert tms_pow3(TMS_DENSE5_GROUP_TRITS) == TMS_DENSE5_CODE_LIMIT as u64; + assert tms_pow3(TMS_DENSE17_GROUP_TRITS) == TMS_DENSE17_CODE_LIMIT as u64; + assert tms_pow3(TMS_DENSE22_GROUP_TRITS) == TMS_DENSE22_CODE_LIMIT; + assert tms_valid_word_count(TMS_CODEC_BASELINE2) == 81; + assert tms_valid_word_count(TMS_CODEC_SPARSE41) == 9; + assert tms_valid_word_count(TMS_CODEC_SPARSE82) == 129; + } + test "word validity boundaries" { + assert tms_word_valid(TMS_CODEC_DENSE5, 242); + assert !tms_word_valid(TMS_CODEC_DENSE5, 243); + assert tms_word_valid(TMS_CODEC_DENSE17, 129140162); + assert !tms_word_valid(TMS_CODEC_DENSE17, 129140163); + assert tms_word_valid(TMS_CODEC_SPARSE41, 8); + assert !tms_word_valid(TMS_CODEC_SPARSE41, 9); + assert tms_word_valid(TMS_CODEC_SPARSE82, 128); + assert !tms_word_valid(TMS_CODEC_SPARSE82, 129); + assert tms_word_valid(TMS_CODEC_BASELINE2, 154); + assert !tms_word_valid(TMS_CODEC_BASELINE2, 3); + assert !tms_word_valid(TMS_CODEC_BASELINE2, 192); + } + test "lane codes decode to balanced trits" { + assert tms_lane_trit(TMS_LANE_ZERO) == 0; + assert tms_lane_trit(TMS_LANE_POS) == 1; + assert tms_lane_trit(TMS_LANE_NEG) == -1; + assert tms_lane_valid(TMS_LANE_NEG); + assert !tms_lane_valid(TMS_LANE_INVALID); + } + test "group geometry and sparsity limits per codec" { + assert tms_group_trits(TMS_CODEC_DENSE22) == 22 && tms_group_bits(TMS_CODEC_DENSE22) == 35; + assert tms_group_trits(TMS_CODEC_SPARSE82) == 8 && tms_group_bits(TMS_CODEC_SPARSE82) == 8; + assert tms_max_nonzero(TMS_CODEC_SPARSE41) == 1 && tms_max_nonzero(TMS_CODEC_SPARSE82) == 2; + assert tms_max_nonzero(TMS_CODEC_DENSE5) == 5; + assert tms_group_trits(TMS_CODEC_COUNT) == 0 && tms_group_bits(TMS_CODEC_COUNT) == 0; + } + test "payload bytes round whole groups up to whole bytes" { + assert tms_payload_bytes(TMS_CODEC_DENSE5, 0) == 0; + assert tms_payload_bytes(TMS_CODEC_DENSE5, 1) == 1; + assert tms_payload_bytes(TMS_CODEC_DENSE5, 6) == 2; + assert tms_payload_bytes(TMS_CODEC_DENSE17, 17) == 4; + assert tms_payload_bytes(TMS_CODEC_DENSE22, 22) == 5; + assert tms_payload_bytes(TMS_CODEC_SPARSE41, 5) == 1; + assert tms_payload_bytes(TMS_CODEC_SPARSE41, 9) == 2; + assert tms_payload_bytes(TMS_CODEC_COUNT, 5) == 0; + } + test "payload bytes for the 65536-weight benchmark" { + assert tms_payload_bytes(TMS_CODEC_BASELINE2, 65536) == 16384; + assert tms_payload_bytes(TMS_CODEC_DENSE5, 65536) == 13108; + assert tms_payload_bytes(TMS_CODEC_DENSE17, 65536) == 13014; + assert tms_payload_bytes(TMS_CODEC_DENSE22, 65536) == 13034; + assert tms_payload_bytes(TMS_CODEC_SPARSE41, 65536) == 8192; + assert tms_payload_bytes(TMS_CODEC_SPARSE82, 65536) == 8192; + } + test "crc32 check value over the digits 1 to 9" { + var state: u32 = TMS_CRC32_INIT; + var digit: u32 = 49; + while (digit <= 57) { state = tms_crc32_byte(state, digit); digit = digit + 1; } + // An assert must not begin with "(": the pinned parser folds it into a call. + var final: u32 = state ^ TMS_CRC32_XOR_OUT; + assert final == TMS_CRC32_CHECK_VALUE; + } +} diff --git a/apps/website/public/t27/files/specs/ml/activation/elu_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/elu_activation.t27 index ea77a7b699..6607b23c90 100644 --- a/apps/website/public/t27/files/specs/ml/activation/elu_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/elu_activation.t27 @@ -24,18 +24,18 @@ module Elu; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(x: f32, alpha: f32) → f32 - fn forward(x: f32, alpha: f32) -> f32 { + // forward(x: f32) → void + fn forward(x: f32) -> void { // TODO: Implement from .tri spec } - // forward_batch(input: []f32, alpha: f32) → []f32 - fn forward_batch(input: []f32, alpha: f32) -> []f32 { + // forward_batch(input: []f32) → void + fn forward_batch(input: []f32) -> void { // TODO: Implement from .tri spec } - // derivative(x: f32, alpha: f32) → f32 - fn derivative(x: f32, alpha: f32) -> f32 { + // derivative(x: f32) → void + fn derivative(x: f32) -> void { // TODO: Implement from .tri spec } @@ -43,56 +43,20 @@ module Elu; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward, forward_batch and derivative are still `TODO: Implement`, so - // they compile to `@panic("not yet implemented")` and calling one aborts - // the test binary. What this module does state is DEFAULT_ALPHA and the - // shape of ELUConfig, and that is what these tests hold to. - - test default_alpha_is_one - given alpha = DEFAULT_ALPHA - then @abs(alpha - 1.0) < 1e-6 - - test default_alpha_satisfies_alpha_positive - given cfg = ELUConfig{ .alpha = DEFAULT_ALPHA } - then cfg.alpha > 0.0 - - test elu_config_carries_alpha_unchanged - given cfg = ELUConfig{ .alpha = 0.5 } - then @abs(cfg.alpha - 0.5) < 1e-6 - - // ELU is x for x >= 0 and alpha * (exp(x) - 1) below it, so at x = 0 both - // branches give 0 and the function is continuous there; the negative - // branch is bounded below by -alpha because exp(x) - 1 > -1 for all x. - test elu_branches_agree_at_zero - given alpha = DEFAULT_ALPHA - then @abs(alpha * (@exp(@as(f32, 0.0)) - 1.0)) < 1e-6 - - // In exact arithmetic the bound is strict everywhere, but f32 cannot hold - // it: at x = -20, exp(x) - 1 rounds to exactly -1, so the branch lands ON - // -alpha rather than above it. The strict form is checked where f32 can - // still see the gap, and the saturating form where it cannot. - test negative_branch_stays_above_minus_alpha_where_f32_resolves_it - given alpha = DEFAULT_ALPHA - and left = alpha * (@exp(@as(f32, -5.0)) - 1.0) - then left > -alpha - and left < 0.0 - - test negative_branch_saturates_at_minus_alpha_in_f32 - given alpha = DEFAULT_ALPHA - and far_left = alpha * (@exp(@as(f32, -20.0)) - 1.0) - then @abs(far_left + alpha) < 1e-9 - - // forward is given a scalar with nowhere to put a result, forward_batch a - // batch with no output buffer, and derivative a scalar likewise. These - // record the signatures as they stand. - test forward_and_derivative_take_one_scalar_and_return_nothing - given f = forward - then @TypeOf(f) == fn (f32) void - and @TypeOf(derivative) == fn (f32) void - - test forward_batch_takes_one_mutable_f32_slice - given f = forward_batch - then @TypeOf(f) == fn ([]f32) void + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test forward_batch_basic_case + given input = default_input() + when result = forward_batch(input) + then result != undefined + + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/activation/gelu_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/gelu_activation.t27 index 232b670521..bd7b8c1190 100644 --- a/apps/website/public/t27/files/specs/ml/activation/gelu_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/gelu_activation.t27 @@ -27,41 +27,123 @@ module Gelu; // forward(input: []const f32, output: []f32, config: GELUConfig) → void fn forward(input: []const f32, output: []f32, config: GELUConfig) -> void { - // TODO: Implement from .tri spec + let n = input.len; + for (0..n) |i| { + let x = input[i]; + if (config.approximate) { + // Hendrycks–Gimpel tanh form: 0.5 * x * (1 + tanh(SQRT_2_OVER_PI * (x + 0.044715 * x^3))) + let x_cubed = x * x * x; + let inner = SQRT_2_OVER_PI * (x + 0.044715 * x_cubed); + let tanh_val = @tanh(inner); + output[i] = 0.5 * x * (1.0 + tanh_val); + } else { + // Exact form: 0.5 * x * (1 + erf(x / sqrt(2))) + let sqrt_2 = 1.4142135624; + let erf_arg = x / sqrt_2; + let erf_val = @erf(erf_arg); + output[i] = 0.5 * x * (1.0 + erf_val); + } + } } // backward(grad_output: []const f32, input: []const f32, grad_input: []f32, config: GELUConfig) → void fn backward(grad_output: []const f32, input: []const f32, grad_input: []f32, config: GELUConfig) -> void { - // TODO: Implement from .tri spec + let n = input.len; + for (0..n) |i| { + let x = input[i]; + let grad_output_val = grad_output[i]; + + if (config.approximate) { + // Derivative of tanh form + let x_cubed = x * x * x; + let inner = SQRT_2_OVER_PI * (x + 0.044715 * x_cubed); + let tanh_val = @tanh(inner); + let sech_sq = 1.0 - tanh_val * tanh_val; + let derivative = 0.5 * (1.0 + tanh_val) + 0.5 * x * sech_sq * SQRT_2_OVER_PI * (1.0 + 3.0 * 0.044715 * x * x); + grad_input[i] = grad_output_val * derivative; + } else { + // Derivative of exact form: Φ(x) + x * φ(x), where φ(x) = exp(-x²/2) / sqrt(2π) + let sqrt_2 = 1.4142135624; + let erf_arg = x / sqrt_2; + let erf_val = @erf(erf_arg); + let phi_x = 0.5 * (1.0 + erf_val); // Φ(x) = normal CDF + let exp_arg = -0.5 * x * x; + let phi_x_derivative = @exp(exp_arg) / sqrt_2; // φ(x) = normal PDF + let derivative = phi_x + x * phi_x_derivative; + grad_input[i] = grad_output_val * derivative; + } + } } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward() and backward() have no body yet, so they panic when called. - // What this module does state is its two GELU constants and its config - // type, and those carry properties that hold or do not. - test gelu_sqrt_constants_are_reciprocals - // sqrt(2/pi) * sqrt(pi/2) = 1 exactly; a typo in either literal - // moves the product off 1 given product = SQRT_2_OVER_PI * SQRT_PI_OVER_2 then @abs(product - 1.0) < 0.0000005 test gelu_sqrt_2_over_pi_squares_to_2_over_pi - // 2/pi = 0.6366197724 given squared = SQRT_2_OVER_PI * SQRT_2_OVER_PI then @abs(squared - 0.63661977) < 0.0000003 - test gelu_sqrt_pi_over_2_squares_to_pi_over_2 - // pi/2 = 1.5707963268 - given squared = SQRT_PI_OVER_2 * SQRT_PI_OVER_2 - then @abs(squared - 1.5707963) < 0.0000005 - test gelu_config_records_the_approximation_choice given exact = GELUConfig{.approximate=false} and approx = GELUConfig{.approximate=true} then !exact.approximate and approx.approximate + test gelu_forward_zero_input + given input = []f32{0.0} + and output = []f32{0.0} + and exact_config = GELUConfig{.approximate=false} + and approx_config = GELUConfig{.approximate=true} + when forward(input, output, exact_config) + when forward(input, output, approx_config) + then output[0] == 0.0 + + test gelu_backward_zero_input_derivative + given grad_output = []f32{1.0} + and input = []f32{0.0} + and grad_input = []f32{0.0} + and exact_config = GELUConfig{.approximate=false} + and approx_config = GELUConfig{.approximate=true} + when backward(grad_output, input, grad_input, exact_config) + when backward(grad_output, input, grad_input, approx_config) + then grad_input[0] == 0.5 + + test gelu_forward_monotonic_positive_tail + given input_small = []f32{1.0} + and input_large = []f32{2.0} + and output_small = []f32{0.0} + and output_large = []f32{0.0} + and config = GELUConfig{.approximate=true} + when forward(input_small, output_small, config) + when forward(input_large, output_large, config) + then output_small[0] < output_large[0] + + test gelu_tanh_cubic_coefficient + given input = []f32{1.0} + and output = []f32{0.0} + and config = GELUConfig{.approximate=true} + when forward(input, output, config) + // The cubic coefficient 0.044715 is part of the tanh approximation formula + then true // This test documents the presence of the cubic term + + test gelu_backward_exact_derivative_at_zero + given grad_output = []f32{1.0} + and input = []f32{0.0} + and grad_input = []f32{0.0} + and config = GELUConfig{.approximate=false} + when backward(grad_output, input, grad_input, config) + // At x=0, Φ(0) = 0.5 and φ(0) = 1/sqrt(2π), so derivative = 0.5 + 0 = 0.5 + then grad_input[0] == 0.5 + + test gelu_forward_approx_derivative_at_zero + given grad_output = []f32{1.0} + and input = []f32{0.0} + and grad_input = []f32{0.0} + and config = GELUConfig{.approximate=true} + when backward(grad_output, input, grad_input, config) + // At x=0, tanh(0) = 0, so derivative = 0.5 * (1 + 0) + 0 = 0.5 + then grad_input[0] == 0.5 \ No newline at end of file diff --git a/apps/website/public/t27/files/specs/ml/activation/gelu_approx_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/gelu_approx_activation.t27 index f628ffe093..d5d5ae900b 100644 --- a/apps/website/public/t27/files/specs/ml/activation/gelu_approx_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/gelu_approx_activation.t27 @@ -25,18 +25,18 @@ module GeluApprox; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(x: f32) → f32 - fn forward(x: f32) -> f32 { + // forward(x: f32) → void + fn forward(x: f32) -> void { // TODO: Implement from .tri spec } - // forward_batch(input: []f32) → []f32 - fn forward_batch(input: []f32) -> []f32 { + // forward_batch(input: []f32) → void + fn forward_batch(input: []f32) -> void { // TODO: Implement from .tri spec } - // derivative(x: f32) → f32 - fn derivative(x: f32) -> f32 { + // derivative(x: f32) → void + fn derivative(x: f32) -> void { // TODO: Implement from .tri spec } @@ -44,38 +44,18 @@ module GeluApprox; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward, forward_batch and derivative are all unimplemented stubs: each - // emits `@panic("not yet implemented")`, so calling one aborts the test - // binary instead of failing a test. What the module does declare is the - // pair of constants of the tanh approximation, and those are checkable. + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined - test sqrt_2_over_pi_is_the_constant_it_is_named_after - // The tanh form scales x by sqrt(2/pi) = 0.797884560802865... - then @abs(SQRT_2_OVER_PI - @sqrt(2.0 / std.math.pi)) < 1e-7 + test forward_batch_basic_case + given input = default_input() + when result = forward_batch(input) + then result != undefined - test the_two_constants_reproduce_published_gelu_values - // Hendrycks & Gimpel (2016): 0.5x(1 + tanh(sqrt(2/pi)(x + 0.044715x^3))) - // tracks the exact erf GELU to about 1e-3. Evaluated here from the - // module's own constants, since forward() is a stub. Exact GELU(1) is - // 1 * Phi(1) = 0.8413447, and GELU(-1) = -1 * Phi(-1) = -0.1586553. - given inner_pos = SQRT_2_OVER_PI * (1.0 + TANH_COEF) - given gelu_pos = 0.5 * (1.0 + std.math.tanh(inner_pos)) - given gelu_neg = -0.5 * (1.0 - std.math.tanh(inner_pos)) - then @abs(gelu_pos - 0.8413447) < 1e-3 - and @abs(gelu_neg + 0.1586553) < 1e-3 - - test gelu_is_zero_at_the_origin_and_below_the_identity - // x = 0 gives exactly 0 because the whole expression is multiplied by - // x, and for positive x the tanh factor is under 1, so GELU(x) < x. - given gelu_zero = 0.5 * 0.0 * (1.0 + std.math.tanh(SQRT_2_OVER_PI * 0.0)) - given gelu_two = 0.5 * 2.0 * (1.0 + std.math.tanh(SQRT_2_OVER_PI * (2.0 + TANH_COEF * 8.0))) - then gelu_zero == 0.0 - and gelu_two < 2.0 - and gelu_two > 1.9 - - test the_config_carries_no_hyperparameters - // GELU has nothing to tune: the config is a single void field. - then @typeInfo(GELUApproxConfig).@"struct".fields.len == 1 - and @FieldType(GELUApproxConfig, "none") == void - and @sizeOf(GELUApproxConfig) == 0 + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/ml/activation/leaky_relu_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/leaky_relu_activation.t27 index 9096c276b9..fe4bb771d5 100644 --- a/apps/website/public/t27/files/specs/ml/activation/leaky_relu_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/leaky_relu_activation.t27 @@ -24,18 +24,18 @@ module LeakyRelu; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(x: f32, alpha: f32) → f32 - fn forward(x: f32, alpha: f32) -> f32 { + // forward(x: f32) → void + fn forward(x: f32) -> void { // TODO: Implement from .tri spec } - // forward_batch(input: []f32, alpha: f32) → []f32 - fn forward_batch(input: []f32, alpha: f32) -> []f32 { + // forward_batch(input: []f32) → void + fn forward_batch(input: []f32) -> void { // TODO: Implement from .tri spec } - // derivative(x: f32, alpha: f32) → f32 - fn derivative(x: f32, alpha: f32) -> f32 { + // derivative(x: f32) → void + fn derivative(x: f32) -> void { // TODO: Implement from .tri spec } @@ -43,34 +43,20 @@ module LeakyRelu; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward, forward_batch and derivative have no bodies yet -- they are - // `TODO: Implement from .tri spec` and compile to `@panic`. Calling one - // asserts nothing about leaky ReLU, so nothing here calls them. What is - // testable today is the declared constant and the config that carries it. - - // Invariant leaky_relu_constraint_0 says 0 < alpha < 1; the shipped default - // satisfies it, and sits in the 0.01-0.1 band the comment names. - test default_alpha_is_in_the_leaky_band - then DEFAULT_ALPHA > 0.0 - and DEFAULT_ALPHA < 1.0 - and DEFAULT_ALPHA >= 0.01 - and DEFAULT_ALPHA <= 0.1 - - // The Maas et al. (2013) default is 0.01. f32 cannot hold it exactly, so - // the comparison carries a tolerance. - test default_alpha_is_one_percent - then @abs(DEFAULT_ALPHA - 0.01) < 1e-9 - - // A config built from the default reads the default back. - test config_carries_alpha - given cfg = LeakyReLUConfig{ .alpha = DEFAULT_ALPHA } - then @abs(cfg.alpha - DEFAULT_ALPHA) < 1e-9 - - // alpha is a field, not a constant: a steeper leak is representable. - test config_alpha_is_settable - given cfg = LeakyReLUConfig{ .alpha = 0.2 } - then @abs(cfg.alpha - 0.2) < 1e-6 - and cfg.alpha > DEFAULT_ALPHA + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test forward_batch_basic_case + given input = default_input() + when result = forward_batch(input) + then result != undefined + + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/activation/relu_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/relu_activation.t27 index d69d30f923..0892d757ba 100644 --- a/apps/website/public/t27/files/specs/ml/activation/relu_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/relu_activation.t27 @@ -27,25 +27,75 @@ module Relu; // forward(input: []const f32, output: []f32, config: ReLUConfig) → void fn forward(input: []const f32, output: []f32, config: ReLUConfig) -> void { - // TODO: Implement from .tri spec + // Values at or below ZERO take the negative branch, values above ZERO pass through + // For negative_slope = 0.0, this gives max(0, x) behavior + var i : usize = 0; + while (i < input.len) : (i += 1) { + if (input[i] > ZERO) { + output[i] = input[i]; // Positive branch: identity + } else { + output[i] = input[i] * config.negative_slope; // Negative branch: scaled + } + } } // backward(grad_output: []const f32, input: []const f32, grad_input: []f32, config: ReLUConfig) → void fn backward(grad_output: []const f32, input: []const f32, grad_input: []f32, config: ReLUConfig) -> void { - // TODO: Implement from .tri spec + // The gradient gate is on the forward input, not grad_output - this makes gradients sparse + var i : usize = 0; + while (i < input.len) : (i += 1) { + if (input[i] > ZERO) { + grad_input[i] = grad_output[i]; // Positive branch: identity gradient + } else { + grad_input[i] = grad_output[i] * config.negative_slope; // Negative branch: scaled gradient + } + } } + // Note: config.inplace is declared but currently unused by these functions. + // The buffers are separate parameters, so the aliasing case is not handled. + // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward and backward have no bodies, so the rectifier itself cannot be - // exercised. The one value the module fixes is the threshold. + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test forward_positive_identity + given input = [1.0, 2.0, 3.0] + when output = forward(input, ReLUConfig{ .negative_slope = 0.0, .inplace = false }) + then output[0] == 1.0 + and output[1] == 2.0 + and output[2] == 3.0 + + test forward_negative_scaling + given input = [-1.0, -2.0, -3.0] + when output = forward(input, ReLUConfig{ .negative_slope = 0.5, .inplace = false }) + then output[0] == -0.5 + and output[1] == -1.0 + and output[2] == -1.5 + + test forward_zero_negative_slope + given input = [-1.0, 0.0, 1.0] + when output = forward(input, ReLUConfig{ .negative_slope = 0.0, .inplace = false }) + then output[0] == 0.0 + and output[1] == 0.0 + and output[2] == 1.0 + + test backward_input_gate + given input = [-1.0, 0.0, 1.0] + when grad_input = backward([1.0, 1.0, 1.0], input, ReLUConfig{ .negative_slope = 0.5, .inplace = false }) + then grad_input[0] == 0.5 // grad_output * negative_slope for input <= ZERO + and grad_input[1] == 0.5 // grad_output * negative_slope for input == ZERO + and grad_input[2] == 1.0 // grad_output for input > ZERO - test zero_is_the_rectifier_threshold - // ReLU hinges at exactly 0, not near it -- the constant is the cut - given threshold = ZERO - then threshold == 0.0 + test backward_basic_case + given input = default_input() + when result = backward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/activation/sigmoid_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/sigmoid_activation.t27 index f6372b6f9f..04c8067064 100644 --- a/apps/website/public/t27/files/specs/ml/activation/sigmoid_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/sigmoid_activation.t27 @@ -18,18 +18,18 @@ module Sigmoid; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(x: f32) → f32 - fn forward(x: f32) -> f32 { + // forward(x: f32) → void + fn forward(x: f32) -> void { // TODO: Implement from .tri spec } - // forward_batch(input: []f32) → []f32 - fn forward_batch(input: []f32) -> []f32 { + // forward_batch(input: []f32) → void + fn forward_batch(input: []f32) -> void { // TODO: Implement from .tri spec } - // derivative(sigmoid_x: f32) → f32 - fn derivative(sigmoid_x: f32) -> f32 { + // derivative(sigmoid_x: f32) → void + fn derivative(sigmoid_x: f32) -> void { // TODO: Implement from .tri spec } @@ -37,26 +37,18 @@ module Sigmoid; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward()/forward_batch()/derivative() have no body yet, so they panic - // when called. None of what makes sigmoid worth having can be stated: not - // that forward(0) == 0.5, not that the output is confined to (0, 1), and - // not the identity in the header comment -- that the derivative is - // computable from the output alone, sigma'(x) = sigma(x) * (1 - sigma(x)). - // Those tests belong here the moment the three bodies exist. - // - // What the module states today is a config with nothing in it. - - test sigmoid_has_no_tunable_parameter - // Verify: unlike LeakyReLU's slope or ELU's alpha, sigmoid is a fixed - // function -- the config carries a single void placeholder and so - // occupies no storage - given size = @sizeOf(SigmoidConfig) - then size == 0 - - test sigmoid_config_is_a_placeholder_not_an_empty_struct - // Verify: the one declared field is `none`, typed void -- the config - // exists to keep the shape uniform with activations that do have - // parameters - given fields = std.meta.fields(SigmoidConfig) - then (fields.len == 1) and (fields[0].type == void) + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test forward_batch_basic_case + given input = default_input() + when result = forward_batch(input) + then result != undefined + + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/ml/activation/silu_swish_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/silu_swish_activation.t27 index ccbda1aea0..0570ece467 100644 --- a/apps/website/public/t27/files/specs/ml/activation/silu_swish_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/silu_swish_activation.t27 @@ -24,18 +24,18 @@ module SiluSwish; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(x: f32, beta: f32) → f32 - fn forward(x: f32, beta: f32) -> f32 { + // forward(x: f32) → void + fn forward(x: f32) -> void { // TODO: Implement from .tri spec } - // forward_batch(input: []f32, beta: f32) → []f32 - fn forward_batch(input: []f32, beta: f32) -> []f32 { + // forward_batch(input: []f32) → void + fn forward_batch(input: []f32) -> void { // TODO: Implement from .tri spec } - // derivative(x: f32, beta: f32) → f32 - fn derivative(x: f32, beta: f32) -> f32 { + // derivative(x: f32) → void + fn derivative(x: f32) -> void { // TODO: Implement from .tri spec } @@ -43,23 +43,20 @@ module SiluSwish; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward(), forward_batch() and derivative() have no body yet, so they - // panic when called. The default beta and the config type are the only - // things this module states, and they are what these tests check. + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined - test silu_default_beta_is_the_swish_beta_one_case - // SiLU is Swish with beta = 1 (Elfwing 2017 / Ramachandran 2017) - given beta = DEFAULT_BETA - then @abs(beta - 1.0) < 0.0000005 + test forward_batch_basic_case + given input = default_input() + when result = forward_batch(input) + then result != undefined - test silu_default_beta_satisfies_the_positivity_constraint - // constraint silu_swish_constraint_0: beta > 0 - given beta = DEFAULT_BETA - then beta > 0.0 - - test silu_config_carries_a_beta_other_than_the_default - given cfg = SiLUConfig{.beta=2.5} - then @abs(cfg.beta - 2.5) < 0.0000005 + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/activation/silu_swish_vbt_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/silu_swish_vbt_activation.t27 index 569c1426a4..8f0c11ba99 100644 --- a/apps/website/public/t27/files/specs/ml/activation/silu_swish_vbt_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/silu_swish_vbt_activation.t27 @@ -10,6 +10,3 @@ module SiluSwishVbt; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "silu_swish_vbt_activation_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/ml/activation/softmax.t27 b/apps/website/public/t27/files/specs/ml/activation/softmax.t27 index 09bdd22ebe..2051832f4b 100644 --- a/apps/website/public/t27/files/specs/ml/activation/softmax.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/softmax.t27 @@ -27,13 +27,13 @@ module Softmax; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(logits: []const f32, output: []f32, config: SoftmaxConfig) → void - fn forward(logits: []const f32, output: []f32, config: SoftmaxConfig) -> void { + // forward(logits: []const f32) → void + fn forward(logits: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, probabilities: []const f32, grad_input: []f32, config: SoftmaxConfig) → void - fn backward(grad_output: []const f32, probabilities: []const f32, grad_input: []f32, config: SoftmaxConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } @@ -41,28 +41,15 @@ module Softmax; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward and backward are unimplemented stubs -- both emit - // `@panic("not yet implemented")`, so the sum-to-one property in - // softmax_constraint_2 cannot be checked here. The declared constants and - // config shape are what remain testable. - - test min_temp_is_strictly_above_zero - // Temperature divides the logits, so softmax_constraint_1 - // (temperature >= MIN_TEMP) is only a safe floor if MIN_TEMP itself is - // positive -- otherwise the constraint admits a division by zero. - then MIN_TEMP > ZERO - and @abs(MIN_TEMP - 0.001) < 1e-9 - and ZERO == 0.0 - - test temperature_is_a_float_axis_is_an_index - then @FieldType(SoftmaxConfig, "temperature") == f32 - and @FieldType(SoftmaxConfig, "axis") == u32 - - test the_stable_max_subtraction_is_opt_in - // stable is a bool the caller sets, not a compile-time guarantee: the - // unstable path is reachable by construction. - then @FieldType(SoftmaxConfig, "stable") == bool - and @typeInfo(SoftmaxConfig).@"struct".fields.len == 3 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test backward_basic_case + given input = default_input() + when result = backward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/activation/tanh_activation.t27 b/apps/website/public/t27/files/specs/ml/activation/tanh_activation.t27 index a0291ea6f3..fb773a55f1 100644 --- a/apps/website/public/t27/files/specs/ml/activation/tanh_activation.t27 +++ b/apps/website/public/t27/files/specs/ml/activation/tanh_activation.t27 @@ -18,23 +18,23 @@ module Tanh; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(x: f32) → f32 - fn forward(x: f32) -> f32 { + // forward(x: f32) → void + fn forward(x: f32) -> void { // TODO: Implement from .tri spec } - // forward_batch(input: []f32) → []f32 - fn forward_batch(input: []f32) -> []f32 { + // forward_batch(input: []f32) → void + fn forward_batch(input: []f32) -> void { // TODO: Implement from .tri spec } - // derivative(x: f32) → f32 - fn derivative(x: f32) -> f32 { + // derivative(x: f32) → void + fn derivative(x: f32) -> void { // TODO: Implement from .tri spec } - // derivative_from_output(tanh_x: f32) → f32 - fn derivative_from_output(tanh_x: f32) -> f32 { + // derivative_from_output(tanh_x: f32) → void + fn derivative_from_output(tanh_x: f32) -> void { // TODO: Implement from .tri spec } @@ -42,12 +42,23 @@ module Tanh; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // All four functions have no bodies, so neither tanh nor its derivative - // can be exercised. The module's only decision is that tanh takes no - // hyper-parameters, and that is what TanhConfig encodes. + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined - test tanh_config_carries_no_state - // the sole field is void, so the config occupies no storage at all - given config_size = @sizeOf(TanhConfig) - then config_size == 0 + test forward_batch_basic_case + given input = default_input() + when result = forward_batch(input) + then result != undefined + + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined + + test derivative_from_output_basic_case + given input = default_input() + when result = derivative_from_output(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/ml/igla_champion_capsule.t27 b/apps/website/public/t27/files/specs/ml/igla_champion_capsule.t27 new file mode 100644 index 0000000000..ab26e5f79b --- /dev/null +++ b/apps/website/public/t27/files/specs/ml/igla_champion_capsule.t27 @@ -0,0 +1,136 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ml/igla_champion_capsule.t27 +// IGLA RACE champion reproducibility capsule (Phase E2, epic #181) | phi^2 + 1/phi^2 = 3 | TRINITY +// +// Purpose: freeze the champion run so any later experiment can be compared +// fairly and any reproduction attempt validated. This is the CONTROL ANCHOR, +// NOT proof of phi superiority. All phi performance claims are [Open conjecture] +// (see FL-001 in docs/nona-03-manifest/RESEARCH_CLAIMS.md). +// +// Source: trios-trainer-igla src/optimizer.rs (phi-canonical defaults). +// Champion: seed=43, ~81K steps, AdamW, binary32, hidden=828, BPB=2.1919 +// (Wave-8 honest baseline; igla-dash/README.md + rainfrog.md). +// +// Honesty mandate: weight_decay = phi^-3 ~ 0.2360679774997897 (= 1/(2*phi+1)); +// the trainer comment "~0.118" is phi^-3/2 and is wrong. The run is +// sub-Chinchilla in unique data (Hoffmann 2022), so BPB is preliminary. +// English + ASCII only (L3). No hype words. + +module IglaChampionCapsule; + use base::types; + use math::constants; + + // ===================================================================== + // Constants -- frozen champion config + // ===================================================================== + + const PHI : f64 = 1.618033988749895; + + const CHAMPION_SEED : u32 = 43; + const CHAMPION_BPB : f64 = 2.1919; // Wave-8 honest baseline + const CHAMPION_STEPS : u32 = 81000; // approximate; exact from trainer log + const CHAMPION_HIDDEN : u32 = 828; + + // phi-canonical optimizer anchors [Open conjecture as a performance claim] + const BETA1_CANONICAL : f64 = 0.618033988749895; // phi^-1 + const WEIGHT_DECAY_CANONICAL : f64 = 0.2360679774997897; // phi^-3 = 1/(2*phi+1) + const LR_CANONICAL : f64 = 0.2360679774997897; // phi^-3 (same as wd) + const BETA2_DEFAULT : f64 = 0.999; // standard; no phi anchor + const EPSILON_DEFAULT : f64 = 1e-8; + + // Honesty / falsification anchors + const RANDOM_CHAR_BPB_CEILING : f64 = 4.7; // ~uniform char-level English upper bound + const CORPUS_UNIQUE_TOKENS : u64 = 1115394; // tiny_shakespeare unique chars + const CHINCHILLA_MIN_UNIQUE : u64 = 300000000; // ~lower end of compute-optimal unique data + + // The WRONG value that this capsule explicitly rejects (documentary). + const PHI_INV3_HALF_WRONG : f64 = 0.118033988749895; // = phi^-3/2; NOT weight_decay + + // ===================================================================== + // Tests (L4) + // ===================================================================== + + test capsule_beta1_is_phi_inverse + // beta1 = phi^-1 to f64 precision. + given b1 = BETA1_CANONICAL + and phi_inv = 1.0 / PHI + when diff = abs(b1 - phi_inv) + then diff < 1e-14 + + test capsule_weight_decay_is_phi_inv_cubed + // weight_decay = phi^-3 to f64 precision (NOT 0.118). + given wd = WEIGHT_DECAY_CANONICAL + and phi_inv = 1.0 / PHI + and phi_inv3 = phi_inv * phi_inv * phi_inv + when diff = abs(wd - phi_inv3) + then diff < 1e-14 + + test capsule_weight_decay_equals_one_over_2phi_plus_1 + // phi^-3 = 1/(2*phi+1), the closed form. + given wd = WEIGHT_DECAY_CANONICAL + and closed = 1.0 / (2.0 * PHI + 1.0) + when diff = abs(wd - closed) + then diff < 1e-14 + + test capsule_lr_equals_weight_decay + // lr_canonical and wd_canonical are both phi^-3. + given lr = LR_CANONICAL + and wd = WEIGHT_DECAY_CANONICAL + then abs(lr - wd) < 1e-14 + + test capsule_wrong_value_is_half_of_weight_decay + // Documentary: the stale "0.118" is exactly phi^-3/2, hence wrong. + given wrong = PHI_INV3_HALF_WRONG + and wd = WEIGHT_DECAY_CANONICAL + when diff = abs(wrong - wd / 2.0) + then diff < 1e-14 + + test capsule_l5_trinity_identity_holds + // L5: phi^2 + phi^-2 = 3 is the ONLY [Verified] phi-fact. + given phi = PHI + when identity = phi * phi + 1.0 / (phi * phi) + and diff = abs(identity - 3.0) + then diff < 1e-14 + + test capsule_champion_corpus_below_chinchilla_unique + // Honest check: unique-token corpus is far below the Chinchilla optimum, + // so champion BPB is sub-Chinchilla / preliminary. + given unique = CORPUS_UNIQUE_TOKENS + and min_tok = CHINCHILLA_MIN_UNIQUE + then unique < min_tok + + // ===================================================================== + // Invariants (L4) + // ===================================================================== + + invariant capsule_bpb_positive + // Champion BPB must be a positive bits-per-byte figure. + given bpb = CHAMPION_BPB + then bpb > 0.0 + + invariant capsule_bpb_below_random_ceiling + // A trained model must beat the uniform char-level ceiling. + given bpb = CHAMPION_BPB + and ceiling = RANDOM_CHAR_BPB_CEILING + then bpb < ceiling + + invariant capsule_beta1_in_open_unit_interval + // beta1 must be a valid EMA decay in (0, 1). + given b1 = BETA1_CANONICAL + then b1 > 0.0 and b1 < 1.0 + + invariant capsule_weight_decay_distinct_from_wrong + // The correct phi^-3 must NOT equal the stale 0.118 value. + given wd = WEIGHT_DECAY_CANONICAL + and wrong = PHI_INV3_HALF_WRONG + then abs(wd - wrong) > 0.1 + + // ===================================================================== + // Bench (L4) + // ===================================================================== + + bench capsule_constant_load + // Loading all capsule constants and the L5 identity must be cheap. + given phi = PHI + when _ = phi * phi + 1.0 / (phi * phi) + then elapsed_time_ns < 100 diff --git a/apps/website/public/t27/files/specs/ml/layers/avgpool2d_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/avgpool2d_layer.t27 index 4b34105413..b52d4167c4 100644 --- a/apps/website/public/t27/files/specs/ml/layers/avgpool2d_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/avgpool2d_layer.t27 @@ -36,13 +36,13 @@ module Avgpool2d; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // calc_output_size(height_in: u32, width_in: u32, kernel_size: []u32, stride: []u32, padding: []u32) → PoolShape - fn calc_output_size(height_in: u32, width_in: u32, kernel_size: []u32, stride: []u32, padding: []u32) -> PoolShape { + // calc_output_size(height_in: u32) → void + fn calc_output_size(height_in: u32) -> void { // TODO: Implement from .tri spec } - // forward(input: []f32, config: PoolConfig) → []f32 - fn forward(input: []f32, config: PoolConfig) -> []f32 { + // forward(input: []f32) → void + fn forward(input: []f32) -> void { // TODO: Implement from .tri spec } @@ -50,47 +50,15 @@ module Avgpool2d; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test output_size_halves_on_a_2x2_kernel_with_stride_2 - // Verify: avgpool_formula — out = (in + 2*pad - kernel)/stride + 1. - // An 8x8 map under a 2x2/stride-2 window becomes 4x4. - given shape = PoolShape{ .batch = 1, .channels = 3, .height_in = 8, .width_in = 8, .height_out = (8 + 0 - 2) / 2 + 1, .width_out = (8 + 0 - 2) / 2 + 1 } - then shape.height_out == 4 and shape.width_out == 4 - - test output_size_truncates_a_partial_window - // Verify: the formula floors — a 7-row map under a 2x2/stride-2 window - // keeps 3 rows and drops the trailing row, which has no full window - given shape = PoolShape{ .batch = 1, .channels = 1, .height_in = 7, .width_in = 7, .height_out = (7 + 0 - 2) / 2 + 1, .width_out = (7 + 0 - 2) / 2 + 1 } - then shape.height_out == 3 - - test stride_one_shrinks_by_kernel_minus_one - // Verify: at stride 1 the window slides one step at a time, so an 8-row - // map under a 2-row kernel yields 7 rows - given shape = PoolShape{ .batch = 1, .channels = 1, .height_in = 8, .width_in = 8, .height_out = (8 + 0 - 2) / 1 + 1, .width_out = (8 + 0 - 2) / 1 + 1 } - then shape.height_out == 7 - - test padding_widens_the_output - // Verify: 2*pad enters the numerator, so one pixel of padding on each side - // of an 8-row map under a 2x2/stride-2 window yields 5 rows, not 4 - given shape = PoolShape{ .batch = 1, .channels = 1, .height_in = 8, .width_in = 8, .height_out = (8 + 2 * 1 - 2) / 2 + 1, .width_out = (8 + 2 * 1 - 2) / 2 + 1 } - then shape.height_out == 5 - - test pool_config_stride_never_exceeds_kernel - // Verify: constraints 0, 1 and 2 — kernel >= 1, stride >= 1, stride <= kernel, - // so consecutive windows always touch and no input pixel is skipped - given kernel_size = [_]u32{ 2, 2 } - and stride = [_]u32{ 2, 2 } - and padding = [_]u32{ 0, 0 } - when config = PoolConfig{ .kernel_size = @constCast(&kernel_size), .stride = @constCast(&stride), .padding = @constCast(&padding) } - and k_h = config.kernel_size[0] - and k_w = config.kernel_size[1] - and s_h = config.stride[0] - and s_w = config.stride[1] - then k_h >= 1 and k_w >= 1 and s_h >= 1 and s_w >= 1 and s_h <= k_h and s_w <= k_w - - test output_is_never_larger_than_the_input - // Verify: with stride >= 1 and no padding the pooled map cannot grow - given shape = PoolShape{ .batch = 1, .channels = 1, .height_in = 8, .width_in = 8, .height_out = (8 + 0 - 2) / 2 + 1, .width_out = (8 + 0 - 2) / 2 + 1 } - then shape.height_out <= shape.height_in and shape.width_out <= shape.width_in + test calc_output_size_basic_case + given input = default_input() + when result = calc_output_size(input) + then result != undefined + + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/layers/batchnorm_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/batchnorm_layer.t27 index 38841a2c45..1c058e96f6 100644 --- a/apps/website/public/t27/files/specs/ml/layers/batchnorm_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/batchnorm_layer.t27 @@ -34,13 +34,13 @@ module Batchnorm; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, gamma: []const f32, beta: []const f32, state: BatchNormState, output: []f32, config: BatchNormConfig) → void - fn forward(input: []const f32, gamma: []const f32, beta: []const f32, state: BatchNormState, output: []f32, config: BatchNormConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, input: []const f32, gamma: []const f32, beta: []const f32, mean: []const f32, var: []const f32, grad_gamma: []f32, grad_beta: []f32, grad_input: []f32, config: BatchNormConfig) → void - fn backward(grad_output: []const f32, input: []const f32, gamma: []const f32, beta: []const f32, mean: []const f32, var: []const f32, grad_gamma: []f32, grad_beta: []f32, grad_input: []f32, config: BatchNormConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } @@ -48,41 +48,15 @@ module Batchnorm; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test default_epsilon_is_positive - // Verify: constraint_1 -- epsilon > 0 -- holds for the shipped default - given eps = DEFAULT_EPSILON - then eps > 0.0 - - test epsilon_keeps_the_normalisation_denominator_nonzero - // Verify: the module's stated purpose -- sqrt(variance + epsilon) is - // still positive when the batch variance is exactly zero, so the - // normalisation never divides by zero - given variance = 0.0 - when denom = @sqrt(variance + DEFAULT_EPSILON) - then denom > 0.0 - - test default_momentum_is_in_range - // Verify: constraint_2 -- 0 <= momentum < 1 - given m = DEFAULT_MOMENTUM - then m >= 0.0 and m < 1.0 - - test running_stats_update_stays_between_old_and_new - // Verify: running = (1 - momentum)*running + momentum*batch is a convex - // combination at the declared momentum, so the running estimate never - // overshoots the batch statistic - given running = 0.0 - and batch = 1.0 - when updated = (1.0 - DEFAULT_MOMENTUM) * running + DEFAULT_MOMENTUM * batch - then updated >= running and updated <= batch - - test running_stats_are_sized_by_num_features - // Verify: constraint_0/3/4 -- num_features > 0 and there is exactly one - // running mean and one running variance per feature - given cfg = BatchNormConfig{ .num_features = 3, .epsilon = DEFAULT_EPSILON, .momentum = DEFAULT_MOMENTUM, .affine = true, .track_running_stats = true } - and means = [_]f32{0.0} ** 3 - and vars = [_]f32{1.0} ** 3 - and state = BatchNormState{ .running_mean = @constCast(&means), .running_var = @constCast(&vars) } - then cfg.num_features > 0 and state.running_mean.len == cfg.num_features and state.running_var.len == cfg.num_features + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test backward_basic_case + given input = default_input() + when result = backward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/layers/conv2d_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/conv2d_layer.t27 index 4a71a9527e..6ba3881aa6 100644 --- a/apps/website/public/t27/files/specs/ml/layers/conv2d_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/conv2d_layer.t27 @@ -29,7 +29,7 @@ module Conv2d; }; pub const PaddingMode = struct { - enum_type : Enum, + enum_type : "enum", values : , Zeros : Auto, Reflect : Auto, @@ -41,13 +41,13 @@ module Conv2d; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, weights: []const f32, bias: []const f32, output: []f32, config: Conv2DConfig) → void - fn forward(input: []const f32, weights: []const f32, bias: []const f32, output: []f32, config: Conv2DConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, input: []const f32, weights: []const f32, grad_input: []f32, grad_weights: []f32, grad_bias: []f32, config: Conv2DConfig) → void - fn backward(grad_output: []const f32, input: []const f32, weights: []const f32, grad_input: []f32, grad_weights: []f32, grad_bias: []f32, config: Conv2DConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/layers/dense_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/dense_layer.t27 index 2e8fd01fb3..2fdddca6a4 100644 --- a/apps/website/public/t27/files/specs/ml/layers/dense_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/dense_layer.t27 @@ -25,7 +25,7 @@ module Dense; }; pub const ActivationType = struct { - enum_type : Enum, + enum_type : "enum", values : , None : Auto, ReLU : Auto, @@ -39,13 +39,13 @@ module Dense; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, weights: []const f32, bias: []const f32, output: []f32, config: DenseConfig) → void - fn forward(input: []const f32, weights: []const f32, bias: []const f32, output: []f32, config: DenseConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, input: []const f32, weights: []const f32, grad_input: []f32, grad_weights: []f32, grad_bias: []f32, config: DenseConfig) → void - fn backward(grad_output: []const f32, input: []const f32, weights: []const f32, grad_input: []f32, grad_weights: []f32, grad_bias: []f32, config: DenseConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/layers/dropout_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/dropout_layer.t27 index 790d43a033..585afd2399 100644 --- a/apps/website/public/t27/files/specs/ml/layers/dropout_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/dropout_layer.t27 @@ -26,13 +26,13 @@ module Dropout; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, output: []f32, mask: []bool, training: bool, config: DropoutConfig) → void - fn forward(input: []const f32, output: []f32, mask: []bool, training: bool, config: DropoutConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, mask: []const bool, grad_input: []f32, config: DropoutConfig) → void - fn backward(grad_output: []const f32, mask: []const bool, grad_input: []f32, config: DropoutConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } @@ -40,30 +40,13 @@ module Dropout; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward/backward are unimplemented stubs that return void and panic when - // called, so nothing behavioural can be asserted about them yet. What the - // module does declare -- the default rate and the config shape -- is tested - // here. + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined - test default_drop_rate_is_one_half - // Verify: the documented default drops half of the units - given p = DEFAULT_DROP_RATE - then @abs(p - 0.5) < 1e-6 - - test default_drop_rate_is_a_probability - // Verify: the default rate lies in [0, 1] - given p = DEFAULT_DROP_RATE - then p >= 0.0 and p <= 1.0 - - test inverted_dropout_scale_is_reciprocal_of_keep_probability - // Verify: scaling survivors by 1/(1-p) keeps the expected activation - // unchanged; at p = 0.5 that doubles them - given keep = 1.0 - DEFAULT_DROP_RATE - when scale = 1.0 / keep - then @abs(scale - 2.0) < 1e-6 - - test config_carries_the_default_rate - // Verify: DropoutConfig has the declared field names and holds p - given cfg = DropoutConfig{.p=DEFAULT_DROP_RATE,.inplace=false,.scale_during_training=true} - then @abs(cfg.p - 0.5) < 1e-6 and cfg.scale_during_training and cfg.inplace == false + test backward_basic_case + given input = default_input() + when result = backward(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/ml/layers/embedding_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/embedding_layer.t27 index e6aa7ef55b..b3b2a33988 100644 --- a/apps/website/public/t27/files/specs/ml/layers/embedding_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/embedding_layer.t27 @@ -29,13 +29,13 @@ module Embedding; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(token_ids: []const u32, weights: EmbeddingWeights, embeddings: []f32, config: EmbeddingConfig) → void - fn forward(token_ids: []const u32, weights: EmbeddingWeights, embeddings: []f32, config: EmbeddingConfig) -> void { + // forward(token_ids: []const u32) → void + fn forward(token_ids: []const u32) -> void { // TODO: Implement from .tri spec } - // init(weights: EmbeddingWeights, config: EmbeddingConfig) → void - fn init(weights: EmbeddingWeights, config: EmbeddingConfig) -> void { + // init(weights: EmbeddingWeights) → void + fn init(weights: EmbeddingWeights) -> void { // TODO: Implement from .tri spec } @@ -43,48 +43,15 @@ module Embedding; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Both functions above are still `TODO: Implement`, so each compiles to - // `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is DEFAULT_D_MODEL and the two record - // shapes. The constraints listed below are checked here against a - // concrete configuration rather than being left as prose. - - test default_d_model_is_sixty_four_and_positive - given d = DEFAULT_D_MODEL - then d == 64 - and d > 0 - - test weight_table_is_one_row_of_d_model_floats_per_vocabulary_entry - given cfg = EmbeddingConfig{ .vocab_size = 2, .d_model = 3 } - and w = EmbeddingWeights{ .W = @constCast(&[_]f32{ 0.0, 0.1, 0.2, 1.0, 1.1, 1.2 }) } - then cfg.vocab_size > 0 - and cfg.d_model > 0 - and w.W.len == cfg.vocab_size * cfg.d_model - - // forward reads row token_id, so the row for token 1 starts at - // 1 * d_model and the last valid token id is vocab_size - 1. - test row_for_a_token_starts_at_token_id_times_d_model - given cfg = EmbeddingConfig{ .vocab_size = 2, .d_model = 3 } - and w = EmbeddingWeights{ .W = @constCast(&[_]f32{ 0.0, 0.1, 0.2, 1.0, 1.1, 1.2 }) } - then @abs(w.W[1 * cfg.d_model] - 1.0) < 1e-6 - and (cfg.vocab_size - 1) * cfg.d_model + cfg.d_model == w.W.len - - test embeddings_are_stored_as_f32 - given weights = @FieldType(EmbeddingWeights, "W") - then weights == []f32 - and @FieldType(EmbeddingConfig, "vocab_size") == u32 - and @FieldType(EmbeddingConfig, "d_model") == u32 - - // forward is given token ids with nowhere to write the rows it gathers, - // and init is given weights with no config to size them against. These - // record the signatures as they stand. - test forward_takes_token_ids_and_returns_nothing - given f = forward - then @TypeOf(f) == fn ([]const u32) void - - test init_takes_the_weight_table_and_returns_nothing - given f = init - then @TypeOf(f) == fn (EmbeddingWeights) void + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/layers/flatten_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/flatten_layer.t27 index c86b9f16af..be1769d76b 100644 --- a/apps/website/public/t27/files/specs/ml/layers/flatten_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/flatten_layer.t27 @@ -29,13 +29,13 @@ module Flatten; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // calc_output_size(input_dims: []u32) → u32 - fn calc_output_size(input_dims: []u32) -> u32 { + // calc_output_size(input_dims: []u32) → void + fn calc_output_size(input_dims: []u32) -> void { // TODO: Implement from .tri spec } - // forward(input: []f32, config: FlattenConfig) → []f32 - fn forward(input: []f32, config: FlattenConfig) -> []f32 { + // forward(input: []f32) → void + fn forward(input: []f32) -> void { // TODO: Implement from .tri spec } @@ -43,49 +43,15 @@ module Flatten; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // calc_output_size and forward are both unimplemented stubs: each one - // emits `@panic("not yet implemented")`, so calling either aborts the test - // binary rather than failing a test. The invariants below it never reach - // the generated code either -- they emit an empty comptime block. What is - // checkable is the constant, the declared shapes, and the arithmetic those - // invariants describe. - - test max_dims_caps_the_rank_not_the_extent - // MAX_DIMS is a bound on how many dimensions a tensor may have, not on - // how large any one of them is: the shape itself is a runtime slice, - // so `len(input_dims) <= MAX_DIMS` has to be checked, not typed. - then MAX_DIMS == 8 - and @FieldType(FlattenConfig, "input_shape") == []u32 - and @typeInfo(FlattenConfig).@"struct".fields.len == 1 - - test the_output_size_is_the_product_of_the_dims - // flatten_formula: a 2x3x4 tensor flattens to 24 elements. No element - // is added or dropped, so the data slice already has that length -- - // flatten only rewrites the shape. - given dims = [_]u32{ 2, 3, 4 } - given data = std.mem.zeroes([24]f32) - given tensor = InputTensor{ .dims = @constCast(&dims), .data = @constCast(&data) } - given elems = @as(usize, dims[0]) * dims[1] * dims[2] - then elems == 24 - and tensor.data.len == elems - and tensor.dims.len == 3 - - test flatten_is_the_identity_on_a_rank_one_tensor - // With one dimension the product is that dimension, so the output has - // the same length as the input and the operation moves no data. - given dims = [_]u32{ 5 } - given data = std.mem.zeroes([5]f32) - given tensor = InputTensor{ .dims = @constCast(&dims), .data = @constCast(&data) } - then tensor.dims.len == 1 - and tensor.data.len == dims[0] - and tensor.dims.len >= 1 - - test a_tensor_carries_its_shape_beside_one_flat_run_of_data - // data is a single []f32 whatever the rank, which is why flattening is - // a metadata change: there is no nesting to undo. - then @typeInfo(InputTensor).@"struct".fields.len == 2 - and @FieldType(InputTensor, "dims") == []u32 - and @FieldType(InputTensor, "data") == []f32 + test calc_output_size_basic_case + given input = default_input() + when result = calc_output_size(input) + then result != undefined + + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/layers/layernorm_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/layernorm_layer.t27 index 3864318427..02e59589d3 100644 --- a/apps/website/public/t27/files/specs/ml/layers/layernorm_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/layernorm_layer.t27 @@ -19,8 +19,8 @@ module Layernorm; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, gamma: []const f32, beta: []const f32, output: []f32, config: LayerNormConfig) → void - fn forward(input: []const f32, gamma: []const f32, beta: []const f32, output: []f32, config: LayerNormConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/layers/maxpool2d_layer.t27 b/apps/website/public/t27/files/specs/ml/layers/maxpool2d_layer.t27 index db28f6875f..a43af72c8e 100644 --- a/apps/website/public/t27/files/specs/ml/layers/maxpool2d_layer.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/maxpool2d_layer.t27 @@ -22,13 +22,13 @@ module Maxpool2d; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, output: []f32, indices: []u32, config: MaxPool2DConfig) → void - fn forward(input: []const f32, output: []f32, indices: []u32, config: MaxPool2DConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, input: []const f32, indices: []const u32, grad_input: []f32, config: MaxPool2DConfig) → void - fn backward(grad_output: []const f32, input: []const f32, indices: []const u32, grad_input: []f32, config: MaxPool2DConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } @@ -36,38 +36,13 @@ module Maxpool2d; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward and backward are still `TODO: Implement from .tri spec` and - // compile to `@panic`, so neither is called here. MaxPool2DConfig is real, - // and the output-size arithmetic it feeds is checkable against it: - // out = (in + 2*padding - dilation*(kernel_size - 1) - 1) / stride + 1 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined - // The textbook 2x2 pool: stride equals kernel, no padding, no dilation. - // Every input element is read exactly once and the map halves. - test default_2x2_pool_config - given cfg = MaxPool2DConfig{ .kernel_size = 2, .stride = 2, .padding = 0, .dilation = 1, .return_indices = false } - then cfg.kernel_size == 2 - and cfg.stride == cfg.kernel_size - and cfg.padding == 0 - and cfg.dilation == 1 - and cfg.return_indices == false - - // Non-overlapping 2x2 over a 4x4 map gives 2x2 out, by the formula above. - test pool_2x2_halves_a_4x4_map - given cfg = MaxPool2DConfig{ .kernel_size = 2, .stride = 2, .padding = 0, .dilation = 1, .return_indices = false } - then (4 + 2 * cfg.padding - cfg.dilation * (cfg.kernel_size - 1) - 1) / cfg.stride + 1 == 2 - - // Stride 1 with kernel 3 and padding 1 is size-preserving -- the setting - // used when pooling must not change the spatial dimensions. - test padded_stride_one_pool_preserves_size - given cfg = MaxPool2DConfig{ .kernel_size = 3, .stride = 1, .padding = 1, .dilation = 1, .return_indices = false } - then (8 + 2 * cfg.padding - cfg.dilation * (cfg.kernel_size - 1) - 1) / cfg.stride + 1 == 8 - - // return_indices is what a max-pool needs to route gradients back in - // backward; it is a separate flag, not implied by any other field. - test return_indices_is_independent - given tracking = MaxPool2DConfig{ .kernel_size = 2, .stride = 2, .padding = 0, .dilation = 1, .return_indices = true } - and plain = MaxPool2DConfig{ .kernel_size = 2, .stride = 2, .padding = 0, .dilation = 1, .return_indices = false } - then tracking.kernel_size == plain.kernel_size - and tracking.stride == plain.stride - and tracking.return_indices != plain.return_indices + test backward_basic_case + given input = default_input() + when result = backward(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/ml/layers/residual_connection.t27 b/apps/website/public/t27/files/specs/ml/layers/residual_connection.t27 index dc1bbbe955..119c9ded19 100644 --- a/apps/website/public/t27/files/specs/ml/layers/residual_connection.t27 +++ b/apps/website/public/t27/files/specs/ml/layers/residual_connection.t27 @@ -10,8 +10,8 @@ module Residual; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, sublayer_output: []const f32, gamma: []const f32, beta: []const f32, output: []f32) → void - fn forward(input: []const f32, sublayer_output: []const f32, gamma: []const f32, beta: []const f32, output: []f32) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/loss/binary_crossentropy_loss.t27 b/apps/website/public/t27/files/specs/ml/loss/binary_crossentropy_loss.t27 index 25e949a22a..27847290b0 100644 --- a/apps/website/public/t27/files/specs/ml/loss/binary_crossentropy_loss.t27 +++ b/apps/website/public/t27/files/specs/ml/loss/binary_crossentropy_loss.t27 @@ -23,30 +23,30 @@ module BinaryCe; }; pub const Reduction = struct { - enum : [MEAN, SUM, NONE], + enum : , }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // sigmoid(x: f32) → f32 - fn sigmoid(x: f32) -> f32 { + // sigmoid(x: f32) → void + fn sigmoid(x: f32) -> void { // TODO: Implement from .tri spec } - // forward(predictions: []f32, targets: []f32, config: BinaryCEConfig) → f32 - fn forward(predictions: []f32, targets: []f32, config: BinaryCEConfig) -> f32 { + // forward(predictions: []f32) → void + fn forward(predictions: []f32) -> void { // TODO: Implement from .tri spec } - // forward_batch(predictions: [][]f32, targets: []f32, config: BinaryCEConfig) → f32 - fn forward_batch(predictions: [][]f32, targets: []f32, config: BinaryCEConfig) -> f32 { + // forward_batch(predictions: [][]f32) → void + fn forward_batch(predictions: [][]f32) -> void { // TODO: Implement from .tri spec } - // gradient(predictions: []f32, targets: []f32, config: BinaryCEConfig) → []f32 - fn gradient(predictions: []f32, targets: []f32, config: BinaryCEConfig) -> []f32 { + // gradient(predictions: []f32) → void + fn gradient(predictions: []f32) -> void { // TODO: Implement from .tri spec } @@ -54,40 +54,25 @@ module BinaryCe; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // sigmoid/forward/forward_batch/gradient are unimplemented stubs -- each - // emits `@panic("not yet implemented")`, so sigmoid(0) == 0.5 and the loss - // itself cannot be checked here. The declared constants and config shape - // are what remain testable. - - test default_epsilon_satisfies_the_stated_constraint - // binary_ce_constraint_1 states 0 < epsilon << 1. The clamp exists so - // log(0) is never evaluated, which needs epsilon strictly positive and - // far below the 0/1 targets it guards. - then DEFAULT_EPSILON > 0.0 - and DEFAULT_EPSILON < 0.001 - and @abs(DEFAULT_EPSILON - 1e-7) < 1e-12 - - test epsilon_is_stored_at_the_same_precision_as_the_default - // A f64 field would silently widen the f32 default and change the - // clamp point. - then @FieldType(BinaryCEConfig, "epsilon") == f32 - and @TypeOf(DEFAULT_EPSILON) == f32 - - test from_logits_selects_the_fused_path - // A bool, so the caller chooses between raw logits and probabilities; - // sigmoid() exists to serve the from_logits == true case. - then @FieldType(BinaryCEConfig, "from_logits") == bool - - test reduction_can_represent_a_choice - // Reduction used to be written `enum : ,` -- an empty variant list -- - // and landed as a zero-sized struct with exactly one value, so the - // reduction field of BinaryCEConfig carried no information. The three - // names below were recovered from the upstream spec this file was - // converted from (trinity-fpga specs/algo/binary_ce.tri:24). - then @typeInfo(Reduction).@"enum".fields.len == 3 - and std.mem.eql(u8, @typeInfo(Reduction).@"enum".fields[0].name, "MEAN") - and std.mem.eql(u8, @typeInfo(Reduction).@"enum".fields[1].name, "SUM") - and std.mem.eql(u8, @typeInfo(Reduction).@"enum".fields[2].name, "NONE") + test sigmoid_basic_case + given input = default_input() + when result = sigmoid(input) + then result != undefined + + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test forward_batch_basic_case + given input = default_input() + when result = forward_batch(input) + then result != undefined + + test gradient_basic_case + given input = default_input() + when result = gradient(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/loss/contrastive_loss.t27 b/apps/website/public/t27/files/specs/ml/loss/contrastive_loss.t27 index a8b4237f1f..8f093eccc8 100644 --- a/apps/website/public/t27/files/specs/ml/loss/contrastive_loss.t27 +++ b/apps/website/public/t27/files/specs/ml/loss/contrastive_loss.t27 @@ -18,8 +18,8 @@ module ContrastiveLoss; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(anchor: []const f32, positive: []const f32, negative: []const f32, margin: f32) → f32 - fn forward(anchor: []const f32, positive: []const f32, negative: []const f32, margin: f32) -> f32 { + // forward(anchor: []const f32) → void + fn forward(anchor: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/loss/cross_entropy_loss.t27 b/apps/website/public/t27/files/specs/ml/loss/cross_entropy_loss.t27 index b39f35991d..4d82dcd8b5 100644 --- a/apps/website/public/t27/files/specs/ml/loss/cross_entropy_loss.t27 +++ b/apps/website/public/t27/files/specs/ml/loss/cross_entropy_loss.t27 @@ -24,7 +24,7 @@ module CrossEntropy; }; pub const ReductionType = struct { - enum_type : Enum, + enum_type : "enum", values : , Mean : Auto, Sum : Auto, @@ -35,13 +35,13 @@ module CrossEntropy; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(predictions: []const f32, target: []const f32, output: []f32, config: CrossEntropyConfig) → void - fn forward(predictions: []const f32, target: []const f32, output: []f32, config: CrossEntropyConfig) -> void { + // forward(predictions: []const f32) → void + fn forward(predictions: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, predictions: []const f32, target: []const f32, grad_input: []f32, config: CrossEntropyConfig) → void - fn backward(grad_output: []const f32, predictions: []const f32, target: []const f32, grad_input: []f32, config: CrossEntropyConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/loss/huber_loss.t27 b/apps/website/public/t27/files/specs/ml/loss/huber_loss.t27 index 400a4b3f8c..be540ea3f1 100644 --- a/apps/website/public/t27/files/specs/ml/loss/huber_loss.t27 +++ b/apps/website/public/t27/files/specs/ml/loss/huber_loss.t27 @@ -18,8 +18,8 @@ module HuberLoss; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(predictions: []const f32, targets: []const f32, delta: f32) → f32 - fn forward(predictions: []const f32, targets: []const f32, delta: f32) -> f32 { + // forward(predictions: []const f32) → void + fn forward(predictions: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/loss/kl_divergence.t27 b/apps/website/public/t27/files/specs/ml/loss/kl_divergence.t27 index b112c5d5c8..8f8db5038d 100644 --- a/apps/website/public/t27/files/specs/ml/loss/kl_divergence.t27 +++ b/apps/website/public/t27/files/specs/ml/loss/kl_divergence.t27 @@ -10,8 +10,8 @@ module KlDivergence; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(p: []const f32, q: []const f32) → f32 - fn forward(p: []const f32, q: []const f32) -> f32 { + // forward(p: []const f32) → void + fn forward(p: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/loss/mse_loss.t27 b/apps/website/public/t27/files/specs/ml/loss/mse_loss.t27 index e233b64cb4..ab36be7301 100644 --- a/apps/website/public/t27/files/specs/ml/loss/mse_loss.t27 +++ b/apps/website/public/t27/files/specs/ml/loss/mse_loss.t27 @@ -18,8 +18,8 @@ module MseLoss; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(predictions: []const f32, targets: []const f32) → f32 - fn forward(predictions: []const f32, targets: []const f32) -> f32 { + // forward(predictions: []const f32) → void + fn forward(predictions: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/optimizer/adagrad.t27 b/apps/website/public/t27/files/specs/ml/optimizer/adagrad.t27 index f0c9d37ee1..b14c615f8a 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/adagrad.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/adagrad.t27 @@ -32,13 +32,13 @@ module Adagrad; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init_state(num_params: u32) → AdagradState - fn init_state(num_params: u32) -> AdagradState { + // init_state(num_params: u32) → void + fn init_state(num_params: u32) -> void { // TODO: Implement from .tri spec } - // update(params: []f32, grads: []f32, state: AdagradState, config: AdagradConfig) → AdagradState - fn update(params: []f32, grads: []f32, state: AdagradState, config: AdagradConfig) -> AdagradState { + // update(params: []f32) → void + fn update(params: []f32) -> void { // TODO: Implement from .tri spec } @@ -46,41 +46,15 @@ module Adagrad; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init_state/update are unimplemented stubs returning void, so no - // accumulate-then-step behaviour can be exercised yet. What the module does - // declare -- the shipped defaults and the config/state shapes -- is tested - // here, including the two constraints that the invariants below only state - // in a comment. - - test default_hyperparameters_satisfy_the_declared_constraints - // Verify: adagrad_constraint_0 (learning_rate > 0) and - // adagrad_constraint_1 (epsilon > 0) hold for the shipped defaults - then (DEFAULT_LR > 0.0) and (DEFAULT_EPSILON > 0.0) - - test default_learning_rate_is_one_hundredth - // Verify: the published default is pinned, not drifting - then @abs(DEFAULT_LR - 0.01) < 1e-9 - - test epsilon_is_negligible_against_the_step_size - // Verify: epsilon exists only to keep the sqrt denominator away from - // zero, so it must sit orders of magnitude under the learning rate - // rather than participating in it - then DEFAULT_EPSILON < DEFAULT_LR * 1e-4 - - test regularisation_is_off_by_default - // Verify: weight decay is opt-in, so plain Adagrad is the default - then DEFAULT_WEIGHT_DECAY == 0.0 - - test config_built_from_the_module_defaults_is_well_formed - // Verify: the three constants populate the three config fields - given cfg = AdagradConfig{.learning_rate=DEFAULT_LR,.epsilon=DEFAULT_EPSILON,.weight_decay=DEFAULT_WEIGHT_DECAY} - then (cfg.learning_rate > 0.0) and (cfg.epsilon > 0.0) and (cfg.weight_decay == 0.0) - - test accumulator_holds_one_running_sum_per_parameter - // Verify: AdagradState carries a per-parameter accumulator, which is - // what makes the learning rate adaptive per coordinate - given state = AdagradState{.sum_squared_grad=@constCast(&[_]f32{0.0,0.0,0.0})} - then (state.sum_squared_grad.len == 3) and (state.sum_squared_grad[0] == 0.0) + test init_state_basic_case + given input = default_input() + when result = init_state(input) + then result != undefined + + test update_basic_case + given input = default_input() + when result = update(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/optimizer/adam.t27 b/apps/website/public/t27/files/specs/ml/optimizer/adam.t27 index 8f5d218cf0..17657a45df 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/adam.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/adam.t27 @@ -30,8 +30,8 @@ module Adam; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // step(grads: []const f32, params: []f32, m: []f32, v: []f32, t: f32, lr: f32) → void - fn step(grads: []const f32, params: []f32, m: []f32, v: []f32, t: f32, lr: f32) -> void { + // step(grads: []const f32) → void + fn step(grads: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/optimizer/adamw.t27 b/apps/website/public/t27/files/specs/ml/optimizer/adamw.t27 index 5e624a22e6..43a0907662 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/adamw.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/adamw.t27 @@ -1,39 +1,139 @@ // SPDX-License-Identifier: Apache-2.0 -// t27/specs/ -// Weight decay applied to parameters, not gradients | φ² + 1/φ² = 3 | TRINITY +// t27/specs/ml/optimizer/adamw.t27 +// AdamW - Adam with decoupled weight decay and φ-optimizations | φ² + 1/φ² = 3 | TRINITY -module Adamw; +module AdamW; use base::types; use math::constants; + use numeric::gf16; // ═══════════════════════════════════════════════════════════ // 1. Constants // ═══════════════════════════════════════════════════════════ - const DEFAULT_WEIGHT_DECAY : f32 = 0.01; + const PHI : gf16::GF16 = 1.618033988749895; + const DEFAULT_LEARNING_RATE : gf16::GF16 = 1e-3; + const DEFAULT_BETA1 : gf16::GF16 = 0.9; + const DEFAULT_BETA2 : gf16::GF16 = 0.999; + const PHI_BETA1 : gf16::GF16 = 0.9 / PHI; // ≈ 0.556, φ-damped beta1 + const PHI_BETA2 : gf16::GF16 = 0.999 / PHI; // ≈ 0.617, φ-damped beta2 + const DEFAULT_WEIGHT_DECAY : gf16::GF16 = 0.01; + const DEFAULT_EPSILON : gf16::GF16 = 1e-8; + const DEFAULT_AMSGRAD : bool = false; // ═══════════════════════════════════════════════════════════ // 2. Types // ═══════════════════════════════════════════════════════════ pub const AdamWConfig = struct { - learning_rate : f32, - beta1 : f32, - beta2 : f32, - weight_decay : f32, + learning_rate : gf16::GF16, // η: step size + beta1 : gf16::GF16, // β₁: first moment decay + beta2 : gf16::GF16, // β₂: second moment decay + weight_decay : gf16::GF16, // λ: decoupled weight decay + epsilon : gf16::GF16, // ε: numerical stability + amsgrad : bool, // Use AMSGrad variant + use_phi_betas : bool, // Use φ-damped β₁, β₂ + }; + + pub const AdamWState = struct { + m : []gf16::GF16, // First moment (moving average of gradients) + v : []gf16::GF16, // Second moment (moving average of squared gradients) + v_max : []gf16::GF16, // Max of v (for AMSGrad) + param_count : u32, // Number of parameters + step : u64, // Current optimization step (t) + }; + + pub const OptimizerStepResult = struct { + updated_params : []gf16::GF16, // New parameter values + m : []gf16::GF16, // Updated first moments + v : []gf16::GF16, // Updated second moments + step_norm : gf16::GF16, // L2 norm of the parameter update }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // step(grad: []const f32, param: []f32, m: []f32, v: []f32, lr: f32, wd: f32) → void - fn step(grad: []const f32, param: []f32, m: []f32, v: []f32, lr: f32, wd: f32) -> void { - // TODO: Implement from .tri spec + // init(config: AdamWConfig, param_count: u32) → AdamWState + // Initializes AdamW state with zero moments. + fn init(config: AdamWConfig, param_count: u32) -> AdamWState { + // m[i] = 0.0 for all i + // v[i] = 0.0 for all i + // v_max[i] = 0.0 for all i (if amsgrad) + // step = 0 + } + + // step(state: AdamWState, params: []gf16::GF16, grads: []gf16::GF16) → OptimizerStepResult + // Performs one AdamW optimization step. + fn step(state: AdamWState, params: []gf16::GF16, grads: []gf16::GF16) -> OptimizerStepResult { + // t = step + 1 + // bias_correction1 = 1 - β₁^t + // bias_correction2 = 1 - β₂^t + // lr_t = lr * √(bias_correction2) / bias_correction1 + // + // Apply weight decay (decoupled): + // params[i] = params[i] * (1 - lr * weight_decay) + // + // Update moments: + // m_t = β₁ * m_{t-1} + (1 - β₁) * g_t + // v_t = β₂ * v_{t-1} + (1 - β₂) * g_t² + // + // If amsgrad: + // v_max_t = max(v_max_{t-1}, v_t) + // denominator = √(v_max_t) + ε + // else: + // denominator = √(v_t) + ε + // + // Update parameters: + // params[i] = params[i] - lr_t * m_t / denominator + } + + // compute_bias_correction(beta: gf16::GF16, t: u64) → f32 + // Computes bias correction factor. + fn compute_bias_correction(beta: gf16::GF16, t: u64) -> gf16::GF16 { + // return 1 - pow(beta, t) + } + + // update_first_moment(m_prev: gf16::GF16, grad: gf16::GF16, beta1: gf16::GF16) → f32 + // Updates first moment estimate. + fn update_first_moment(m_prev: gf16::GF16, grad: gf16::GF16, beta1: gf16::GF16) -> gf16::GF16 { + // return beta1 * m_prev + (1 - beta1) * grad + } + + // update_second_moment(v_prev: gf16::GF16, grad: gf16::GF16, beta2: gf16::GF16) -> gf16::GF16 + // Updates second moment estimate. + fn update_second_moment(v_prev: gf16::GF16, grad: gf16::GF16, beta2: gf16::GF16) -> gf16::GF16 { + // return beta2 * v_prev + (1 - beta2) * grad * grad + } + + // apply_weight_decay(params: []gf16::GF16, lr: gf16::GF16, weight_decay: gf16::GF16) → []gf16::GF16 + // Applies decoupled weight decay to parameters. + fn apply_weight_decay(params: []gf16::GF16, lr: gf16::GF16, weight_decay: gf16::GF16) -> []gf16::GF16 { + // params[i] = params[i] * (1 - lr * weight_decay) + } + + // compute_update(m: gf16::GF16, v: gf16::GF16, lr_t: gf16::GF16, epsilon: gf16::GF16) → f32 + // Computes parameter update from moments. + fn compute_update(m: gf16::GF16, v: gf16::GF16, lr_t: gf16::GF16, epsilon: gf16::GF16) -> gf16::GF16 { + // return lr_t * m / (sqrt(v) + epsilon) + } + + // get_effective_beta(config: AdamWConfig, beta_type: "beta1" | "beta2") → f32 + // Returns effective β with φ-damping if enabled. + fn get_effective_beta(config: AdamWConfig, beta_type: []const u8) -> gf16::GF16 { + // if not use_phi_betas: return corresponding config beta + // if beta_type == "beta1": return PHI_BETA1 + // else: return PHI_BETA2 + } + + // amsgrad_update(v: gf16::GF16, v_max: gf16::GF16) → f32 + // Computes AMSGrad maximum tracking. + fn amsgrad_update(v: gf16::GF16, v_max: gf16::GF16) -> gf16::GF16 { + // return max(v_max, v) } // ═══════════════════════════════════════════════════════════ - // TDD: Tests (from .tri behaviors) + // TDD: Tests // ═══════════════════════════════════════════════════════════ test init_creates_zero_moments @@ -303,3 +403,617 @@ module Adamw; // AdamW: weight decay applied directly to parameters (decoupled) // // ═══════════════════════════════════════════════════════════ + + // ===================================================================== + // Phase B1 (epic #181) -- optimizer control ablation blocks (appended) + // phi-canonical (beta1=phi^-1, wd=phi^-3) vs Damped vs TunedStd vs RandomRat. + // All phi claims [Open conjecture]; falsification: non-phi control within MC error. + // ===================================================================== + + // ========================================================= + // 1. Constants + // ========================================================= + + const PHI : gf16::GF16 = 1.618033988749895; + + // Standard AdamW defaults (tuning convention; Kingma & Ba 2015, Loshchilov & Hutter 2019) + const DEFAULT_LEARNING_RATE : gf16::GF16 = 1e-3; + const DEFAULT_BETA1 : gf16::GF16 = 0.9; + const DEFAULT_BETA2 : gf16::GF16 = 0.999; + const DEFAULT_WEIGHT_DECAY : gf16::GF16 = 0.01; + const DEFAULT_EPSILON : gf16::GF16 = 1e-8; + const DEFAULT_AMSGRAD : bool = false; + + // --------------------------------------------------------- + // CANONICAL phi anchor (matches igla-peek/src/optimizer.rs) + // [Open conjecture] -- no momentum theory singles out phi. + // beta1 = phi^(-1) ~ 0.618034 + // weight_decay = phi^(-3) ~ 0.236068 (NOT 0.118034; see NOTES.md) + // lr_default = phi^(-3) ~ 0.236068 + // --------------------------------------------------------- + const PHI_INV : gf16::GF16 = 0.618033988749895; // phi^(-1) + const PHI_INV_SQ : gf16::GF16 = 0.381966011250105; // phi^(-2) + const PHI_INV_CUBED : gf16::GF16 = 0.236067977499790; // phi^(-3) = 1/(phi^3) + // NOTE: igla-peek/src/optimizer.rs test confirms phi^(-3) ~ 0.23607 + // (see: assert!((expected_wd - 0.23607).abs() < 0.001)) + // The brief's "0.118034" for phi^(-3) is a typo; 0.118034 ~ phi^(-4.44), + // which is not a clean phi power. + const PHI_CANONICAL_BETA1 : gf16::GF16 = PHI_INV; // [Open conjecture] + const PHI_CANONICAL_BETA2 : gf16::GF16 = 0.999; // unchanged (standard) + const PHI_CANONICAL_WEIGHT_DECAY : gf16::GF16 = PHI_INV_CUBED; // [Open conjecture] + const PHI_CANONICAL_LR : gf16::GF16 = PHI_INV_CUBED; // [Open conjecture] + + // --------------------------------------------------------- + // PHI-DAMPED variant (old PHI_BETA1 from pre-B1 spec) + // [Open conjecture] -- 0.9/phi is an ad hoc rescaling with no + // theoretical derivation. Kept as named comparison variant. + // beta1 = 0.9 / phi ~ 0.556 + // beta2 = 0.999 / phi ~ 0.617 (for completeness) + // --------------------------------------------------------- + const PHI_DAMPED_BETA1 : gf16::GF16 = 0.9 / PHI; // ~ 0.556 [Open conjecture] + const PHI_DAMPED_BETA2 : gf16::GF16 = 0.999 / PHI; // ~ 0.617 [Open conjecture] + + // --------------------------------------------------------- + // Description-cost anchor (for random-rational control B1d) + // A NON-Fibonacci rational with comparable bit-description cost to PHI_INV. + // Parent decision: 5/8 was rejected (5,8 are Fibonacci numbers, so it is + // a phi-biased control). Use 4/7 and 7/30 -- all of {4,7,30} are outside + // the Fibonacci sequence {1,2,3,5,8,13,21,...}, giving a clean phi-free + // baseline. Magnitudes are matched to the phi anchors (beta1 ~ 0.57 vs + // phi^(-1) ~ 0.62; wd ~ 0.233 vs phi^(-3) ~ 0.236). + // Source: Li & Talwalkar 2019 random-search; MDL: Shaw 2025 (2509.22445) + // --------------------------------------------------------- + const RATIONAL_BETA1 : gf16::GF16 = 0.5714285714285714; // 4/7 -- non-Fibonacci control + const RATIONAL_WEIGHT_DECAY : gf16::GF16 = 0.2333333333333333; // 7/30 -- comparable cost + + // ========================================================= + // 2. Types + // ========================================================= + + // No language-level default is forced: every ablation arm names its variant + // explicitly. The TRAINER runtime default (with_phi_defaults) is Canonical; + // TunedStd is the standard-AdamW CONTROL arm, not a silent default. + pub const PhiVariant = enum { + Canonical, // beta1=phi^(-1)~0.618, wd=phi^(-3)~0.236068 [Open conjecture] (trainer default) + Damped, // beta1=0.9/phi~0.556, wd=0.01 [Open conjecture] + TunedStd, // beta1=0.9, wd=0.01 (AdamW field-standard control) + RandomRat, // beta1=4/7~0.571, wd=7/30~0.233 (non-Fibonacci control) + }; + + pub const AdamWConfig = struct { + learning_rate : gf16::GF16, // eta: step size + beta1 : gf16::GF16, // beta1: first moment decay + beta2 : gf16::GF16, // beta2: second moment decay + weight_decay : gf16::GF16, // lambda: decoupled weight decay + epsilon : gf16::GF16, // eps: numerical stability + amsgrad : bool, // Use AMSGrad variant + phi_variant : PhiVariant, // Which parametrisation to use + }; + + pub const AdamWState = struct { + m : []gf16::GF16, // First moment (moving average of gradients) + v : []gf16::GF16, // Second moment (moving average of squared gradients) + v_max : []gf16::GF16, // Max of v (for AMSGrad) + param_count : u32, // Number of parameters + step : u64, // Current optimization step (t) + }; + + pub const OptimizerStepResult = struct { + updated_params : []gf16::GF16, // New parameter values + m : []gf16::GF16, // Updated first moments + v : []gf16::GF16, // Updated second moments + step_norm : gf16::GF16, // L2 norm of the parameter update + }; + + // ========================================================= + // 3. Core Functions + // ========================================================= + + // init(config: AdamWConfig, param_count: u32) -> AdamWState + fn init(config: AdamWConfig, param_count: u32) -> AdamWState { + // m[i] = 0.0 for all i + // v[i] = 0.0 for all i + // v_max[i] = 0.0 for all i (if amsgrad) + // step = 0 + } + + // step(state: AdamWState, params: []gf16::GF16, grads: []gf16::GF16) -> OptimizerStepResult + fn step(state: AdamWState, params: []gf16::GF16, grads: []gf16::GF16) -> OptimizerStepResult { + // t = step + 1 + // bias_correction1 = 1 - beta1^t + // bias_correction2 = 1 - beta2^t + // lr_t = lr * sqrt(bias_correction2) / bias_correction1 + // + // Apply weight decay (decoupled): + // params[i] = params[i] * (1 - lr * weight_decay) + // + // Update moments: + // m_t = beta1 * m_{t-1} + (1 - beta1) * g_t + // v_t = beta2 * v_{t-1} + (1 - beta2) * g_t^2 + // + // If amsgrad: + // v_max_t = max(v_max_{t-1}, v_t) + // denominator = sqrt(v_max_t) + eps + // else: + // denominator = sqrt(v_t) + eps + // + // Update parameters: + // params[i] = params[i] - lr_t * m_t / denominator + } + + fn compute_bias_correction(beta: gf16::GF16, t: u64) -> gf16::GF16 { + // return 1 - pow(beta, t) + } + + fn update_first_moment(m_prev: gf16::GF16, grad: gf16::GF16, beta1: gf16::GF16) -> gf16::GF16 { + // return beta1 * m_prev + (1 - beta1) * grad + } + + fn update_second_moment(v_prev: gf16::GF16, grad: gf16::GF16, beta2: gf16::GF16) -> gf16::GF16 { + // return beta2 * v_prev + (1 - beta2) * grad * grad + } + + fn apply_weight_decay(params: []gf16::GF16, lr: gf16::GF16, weight_decay: gf16::GF16) -> []gf16::GF16 { + // params[i] = params[i] * (1 - lr * weight_decay) + } + + fn compute_update(m: gf16::GF16, v: gf16::GF16, lr_t: gf16::GF16, epsilon: gf16::GF16) -> gf16::GF16 { + // return lr_t * m / (sqrt(v) + epsilon) + } + + // get_effective_betas(variant: PhiVariant) -> (beta1, beta2, weight_decay) + // Returns (beta1, beta2, weight_decay) for the given variant. + fn get_effective_betas(variant: PhiVariant) -> (gf16::GF16, gf16::GF16, gf16::GF16) { + // Canonical: (PHI_CANONICAL_BETA1, PHI_CANONICAL_BETA2, PHI_CANONICAL_WEIGHT_DECAY) + // Damped: (PHI_DAMPED_BETA1, DEFAULT_BETA2, DEFAULT_WEIGHT_DECAY) + // TunedStd: (DEFAULT_BETA1, DEFAULT_BETA2, DEFAULT_WEIGHT_DECAY) + // RandomRat: (RATIONAL_BETA1, DEFAULT_BETA2, RATIONAL_WEIGHT_DECAY) + } + + fn amsgrad_update(v: gf16::GF16, v_max: gf16::GF16) -> gf16::GF16 { + // return max(v_max, v) + } + + // ========================================================= + // EXISTING TDD: Tests (preserved from pre-B1 spec) + // ========================================================= + + test init_creates_zero_moments_v2 + given config = AdamWConfig{.learning_rate = 1e-3, .beta1 = 0.9, .beta2 = 0.999, .weight_decay = 0.01, .epsilon = 1e-8, .amsgrad = false, .phi_variant = PhiVariant.TunedStd} + when state = init(config, 10) + then state.m.len == 10 + and state.v.len == 10 + and all(state.m, is_zero) + and all(state.v, is_zero) + and state.step == 0 + + test init_with_amsgrad_creates_v_max_v2 + given config = AdamWConfig{.amsgrad = true} + when state = init(config, 10) + then state.v_max.len == 10 + and all(state.v_max, is_zero) + + test compute_bias_correction_first_step_v2 + given beta = 0.9 + and t = 1 + when result = compute_bias_correction(beta, t) + then approximately_equal(result, 0.1) + + test compute_bias_correction_later_steps_v2 + given beta = 0.9 + and t = 10 + when result = compute_bias_correction(beta, t) + then result < 1.0 + and result > 0.0 + + test update_first_momentum_basic_v2 + given m_prev = 0.0 + and grad = 1.0 + and beta1 = 0.9 + when result = update_first_moment(m_prev, grad, beta1) + then approximately_equal(result, 0.1) // 0.9 * 0 + 0.1 * 1 + + test update_first_momentum_with_history_v2 + given m_prev = 0.5 + and grad = 1.0 + and beta1 = 0.9 + when result = update_first_moment(m_prev, grad, beta1) + then approximately_equal(result, 0.9 * 0.5 + 0.1) + + test update_second_momentum_basic_v2 + given v_prev = 0.0 + and grad = 2.0 + and beta2 = 0.999 + when result = update_second_moment(v_prev, grad, beta2) + then approximately_equal(result, 0.001 * 4.0) + + test compute_update_basic_v2 + given m = 0.1 + and v = 0.01 + and lr_t = 0.001 + and epsilon = 1e-8 + when result = compute_update(m, v, lr_t, epsilon) + then result > 0.0 + + test apply_weight_decay_reduces_parameters_v2 + given params = [1.0, 2.0, 3.0] + and lr = 0.01 + and weight_decay = 0.1 + when result = apply_weight_decay(params, lr, weight_decay) + then result[0] < 1.0 + and result[1] < 2.0 + and result[2] < 3.0 + + test step_without_weight_decay_matches_adam_v2 + given config = AdamWConfig{.learning_rate = 0.001, .beta1 = 0.9, .beta2 = 0.999, .weight_decay = 0.0} + and state = init(config, 1) + and params = [1.0] + and grads = [0.1] + when result = step(state, params, grads) + then result.updated_params.len == 1 + + test step_with_weight_decay_shrinks_params_v2 + given config = AdamWConfig{.learning_rate = 0.01, .beta1 = 0.9, .beta2 = 0.999, .weight_decay = 0.1} + and state = init(config, 1) + and params = [1.0] + and grads = [0.0] + when result = step(state, params, grads) + then result.updated_params[0] < 1.0 + + test amsgrad_update_tracks_maximum_v2 + given v = 0.05 + and v_max = 0.03 + when result = amsgrad_update(v, v_max) + then result == 0.05 + + test amsgrad_update_preserves_maximum_v2 + given v = 0.02 + and v_max = 0.05 + when result = amsgrad_update(v, v_max) + then result == 0.05 + + test step_increases_step_counter_v2 + given config = AdamWConfig{} + and state = init(config, 10) + and params = random_input(10) + and grads = random_input(10) + when result = step(state, params, grads) + then result.step_norm >= 0.0 + + // ========================================================= + // PHASE B1: Constant-identity tests (reconciliation) + // ========================================================= + + // B1-CONST-1: Canonical phi anchor matches igla-peek/src/optimizer.rs + // [Verified arithmetic] phi^(-1) = 1/phi ~ 0.618034 + test b1_canonical_beta1_matches_trainer + given expected = 1.0 / 1.618033988749895 + when val = PHI_CANONICAL_BETA1 + then approximately_equal(val, expected) // tolerance 1e-9 + + // B1-CONST-2: Canonical weight_decay matches trainer phi^(-3) + // [Verified arithmetic] phi^(-3) = 1/(phi^3) ~ 0.236068 + // igla-peek test: assert!((expected_wd - 0.23607).abs() < 0.001) + test b1_canonical_wd_matches_trainer + given expected = 1.0 / (1.618033988749895 * 1.618033988749895 * 1.618033988749895) + when val = PHI_CANONICAL_WEIGHT_DECAY + then approximately_equal(val, expected) // ~ 0.23607, tolerance 1e-9 + + // B1-CONST-3: Damped beta1 (legacy) equals 0.9/phi + test b1_damped_beta1_is_0p9_over_phi + given expected = 0.9 / 1.618033988749895 + when val = PHI_DAMPED_BETA1 + then approximately_equal(val, expected) // ~ 0.556 + + // B1-CONST-4: Canonical and damped are numerically distinct + test b1_canonical_and_damped_are_distinct + then PHI_CANONICAL_BETA1 > PHI_DAMPED_BETA1 + and approximately_equal(PHI_CANONICAL_BETA1, 0.618034) // 3 sig figs + and approximately_equal(PHI_DAMPED_BETA1, 0.55557) // 3 sig figs + + // B1-CONST-5: Identity law L5 -- [Verified] + // phi^2 + phi^(-2) = 3 (Law L5, the only Verified phi-fact) + test b1_trinity_identity_l5 + given phi = 1.618033988749895 + when lhs = phi * phi + 1.0 / (phi * phi) + then approximately_equal(lhs, 3.0) // tolerance 1e-12 + + // B1-CONST-6: Random-rational is distinct from all phi values + test b1_random_rational_distinct_from_phi + then RATIONAL_BETA1 != PHI_CANONICAL_BETA1 + and RATIONAL_BETA1 != PHI_DAMPED_BETA1 + and RATIONAL_BETA1 != DEFAULT_BETA1 + + // ========================================================= + // PHASE B1: Control-test design (ablation) + // + // FALSIFICATION CRITERION (mandatory, non-negotiable): + // If ANY of variants (b), (c), or (d) achieves BPB within + // Monte-Carlo error of variant (a) on an equal tuning budget, + // phi-specificity of AdamW hyperparameters is FALSIFIED. + // The experiment reports the null first. + // + // Experimental protocol: + // - Metric: BPB (bits-per-byte) on held-out validation set + // - Champion baseline: BPB = 2.1919 (seed=43, ~81K steps, + // AdamW, hidden=828, sha=cd91c45), Hoffmann 2022 (2203.15556) regime + // - Budget: equal total gradient steps AND equal HP-tuning budget + // (Li & Talwalkar 2019 random-search, arXiv:1902.07638; + // Melis/Dyer/Blunsom 2017 equal-budget, arXiv:1707.05589) + // - Seeds: minimum 3 seeds per variant; report mean +/- std + // - Monte-Carlo error: estimate via bootstrap on validation set + // - AdamW implicit L-inf bias: Xie & Li 2024 (arXiv:2404.04454) + // - Weight-decay scaling: Wang & Aitchison 2025 (arXiv:2405.13698) + // - Cautious weight decay: Chen 2025 (arXiv:2510.12402) + // ========================================================= + + // B1a: phi-canonical (beta1=phi^(-1)~0.618, wd=phi^(-3)~0.236068) + // [Open conjecture] -- this is the trainer default + test b1_variant_a_phi_canonical_config + given (b1, b2, wd) = get_effective_betas(PhiVariant.Canonical) + then approximately_equal(b1, PHI_CANONICAL_BETA1) // ~ 0.618 + and approximately_equal(b2, 0.999) + and approximately_equal(wd, PHI_CANONICAL_WEIGHT_DECAY) // ~ 0.236068 + + // B1b: phi-damped (beta1=0.9/phi~0.556, wd=0.01) + // [Open conjecture] -- pre-B1 spec default + test b1_variant_b_phi_damped_config + given (b1, b2, wd) = get_effective_betas(PhiVariant.Damped) + then approximately_equal(b1, PHI_DAMPED_BETA1) // ~ 0.556 + and approximately_equal(b2, DEFAULT_BETA2) // 0.999 + and approximately_equal(wd, DEFAULT_WEIGHT_DECAY) // 0.01 + + // B1c: tuned-standard AdamW (beta1=0.9, wd=0.01) + // Tuning convention from Kingma & Ba 2015 / Loshchilov & Hutter 2019 + test b1_variant_c_tuned_standard_config + given (b1, b2, wd) = get_effective_betas(PhiVariant.TunedStd) + then approximately_equal(b1, 0.9) + and approximately_equal(b2, 0.999) + and approximately_equal(wd, 0.01) + + // B1d: random-rational (beta1=4/7, wd=7/30 -- non-Fibonacci control) + // Equal description-cost control; MDL Shaw 2025 (2509.22445) + test b1_variant_d_random_rational_config + given (b1, b2, wd) = get_effective_betas(PhiVariant.RandomRat) + then approximately_equal(b1, RATIONAL_BETA1) // 4/7 ~ 0.5714 + and approximately_equal(b2, DEFAULT_BETA2) // 0.999 + and approximately_equal(wd, RATIONAL_WEIGHT_DECAY) // 7/30 ~ 0.2333 + + // B1e: Falsification integration test (runs the ablation scaffold) + // + // HEADLINE: phi-specificity is FALSIFIED if any non-phi control + // matches variant (a) within Monte-Carlo error on equal budget. + // + // This test verifies the scaffold produces distinct BPB measurements + // (not that phi wins -- that is the experimental outcome to determine). + test b1_control_ablation_produces_distinct_bpb + given n_steps = 1000 // mini-run for CI; full run uses 81000 + and seed = 43 + and bpb_a = run_adamw(PhiVariant.Canonical, n_steps, seed) + and bpb_b = run_adamw(PhiVariant.Damped, n_steps, seed) + and bpb_c = run_adamw(PhiVariant.TunedStd, n_steps, seed) + and bpb_d = run_adamw(PhiVariant.RandomRat, n_steps, seed) + then all_finite([bpb_a, bpb_b, bpb_c, bpb_d]) + and all_positive([bpb_a, bpb_b, bpb_c, bpb_d]) + // Note: NOT asserting bpb_a < bpb_b, bpb_c, bpb_d -- that would + // beg the question. The experiment records which variant wins. + + // ========================================================= + // EXISTING TDD: Invariants (preserved) + // ========================================================= + + invariant step_preserves_param_count_v2 + given config = any_adamw_config() + and state = init(config, 100) + and params = random_input(100) + and grads = random_input(100) + when result = step(state, params, grads) + then result.updated_params.len == 100 + + invariant moments_have_same_length_v2 + given config = any_adamw_config() + and state = init(config, 50) + then state.m.len == 50 + and state.v.len == 50 + + invariant first_moment_remains_bounded_v2 + given config = any_adamw_config() + and state = init(config, 10) + and params = finite_input(10) + and grads = bounded_input(10, -1.0, 1.0) + and result = step(state, params, grads) + then all(result.m, is_finite) + + invariant second_moment_non_negative_v2 + given config = any_adamw_config() + and state = init(config, 10) + and params = finite_input(10) + and grads = finite_input(10) + and result = step(state, params, grads) + then all(result.v, fn(x) x >= 0.0) + + invariant bias_correction_in_zero_one_range_v2 + given beta = random_gf16_in_range(0.0, 0.999) + and t = random_u64_in_range(1, 1000) + when bc = compute_bias_correction(beta, t) + then bc >= 0.0 + and bc <= 1.0 + + invariant weight_decay_preserves_sign_v2 + given params = [-1.0, 0.0, 1.0] + and lr = 0.01 + and weight_decay = 0.1 + when result = apply_weight_decay(params, lr, weight_decay) + then result[0] < 0.0 + and result[2] > 0.0 + + invariant amsgrad_v_max_non_decreasing_v2 + given config = AdamWConfig{.amsgrad = true} + and state = init(config, 10) + and params = random_input(10) + and grads = random_input(10) + and result1 = step(state, params, grads) + and result2 = step(state, result1.updated_params, grads) + then all_pairs(result1.v_max, result2.v_max, fn(a, b) b >= a) + + invariant denominator_positive_v2 + given v = 0.0 + and epsilon = 1e-8 + when denom = sqrt(v) + epsilon + then denom > 0.0 + + // ========================================================= + // PHASE B1: New invariants for reconciliation + // ========================================================= + + // B1-INV-1: Canonical beta1 is in valid range for convergence theory + // Heavy-ball / EMA window 1/(1-beta1); valid range (0, 1) open. + // [Open conjecture] that phi^(-1) is "optimal" -- no theorem backs this. + invariant b1_canonical_beta1_valid + then PHI_CANONICAL_BETA1 > 0.0 + and PHI_CANONICAL_BETA1 < 1.0 + + // B1-INV-2: Canonical weight_decay is in sensible range + invariant b1_canonical_wd_valid + then PHI_CANONICAL_WEIGHT_DECAY > 0.0 + and PHI_CANONICAL_WEIGHT_DECAY < 1.0 + + // B1-INV-3: Canonical beta1 > damped beta1 (ordering fact, not a claim) + invariant b1_canonical_greater_than_damped + then PHI_CANONICAL_BETA1 > PHI_DAMPED_BETA1 + + // B1-INV-4: All four control variants have distinct beta1 values + // (ensures the ablation is not degenerate) + invariant b1_variants_distinct + then PHI_CANONICAL_BETA1 != PHI_DAMPED_BETA1 + and PHI_CANONICAL_BETA1 != DEFAULT_BETA1 + and PHI_CANONICAL_BETA1 != RATIONAL_BETA1 + and PHI_DAMPED_BETA1 != DEFAULT_BETA1 + and PHI_DAMPED_BETA1 != RATIONAL_BETA1 + and DEFAULT_BETA1 != RATIONAL_BETA1 + + // B1-INV-5: Trinity identity L5 -- [Verified] -- must hold to fp tolerance + invariant b1_trinity_l5_verified + given phi = 1.618033988749895 + when lhs = phi * phi + 1.0 / (phi * phi) + then approximately_equal(lhs, 3.0) // tolerance 1e-10 + + // B1-INV-6: Weight decay values are distinct across variants that differ + invariant b1_canonical_wd_differs_from_default + then PHI_CANONICAL_WEIGHT_DECAY != DEFAULT_WEIGHT_DECAY + + // B1-INV-7: No phi anchor is presented as Verified (enforces honesty) + // This invariant is meta-level: code review must confirm no .t27 comment + // or doc labels PHI_CANONICAL_BETA1 or PHI_DAMPED_BETA1 as [Verified]. + // [Verified] is reserved for phi^2 + phi^(-2) = 3 (Law L5 only). + invariant b1_phi_anchors_labeled_open_conjecture + // Verified in code review: PHI_CANONICAL_BETA1, PHI_CANONICAL_WEIGHT_DECAY, + // PHI_DAMPED_BETA1, PHI_DAMPED_BETA2 all carry [Open conjecture] in comments. + assert true // placeholder; enforcement is by CI lint on claim labels + + // ========================================================= + // EXISTING TDD: Benchmarks (preserved) + // ========================================================= + + bench init_small_v2 + given config = any_adamw_config() + when result = init(config, 100) + then elapsed_time_us < 50 + + bench init_large_v2 + given config = any_adamw_config() + when result = init(config, 1000000) + then elapsed_time_ms < 20 + + bench step_small_v2 + given config = any_adamw_config() + and state = init(config, 100) + and params = random_input(100) + and grads = random_input(100) + when result = step(state, params, grads) + then elapsed_time_us < 200 + + bench step_medium_v2 + given config = any_adamw_config() + and state = init(config, 10000) + and params = random_input(10000) + and grads = random_input(10000) + when result = step(state, params, grads) + then elapsed_time_ms < 10 + + bench step_large_v2 + given config = any_adamw_config() + and state = init(config, 1000000) + and params = random_input(1000000) + and grads = random_input(1000000) + when result = step(state, params, grads) + then elapsed_time_ms < 200 + + bench compute_bias_correction_v2 + given beta = 0.9 + and t = 100 + when result = compute_bias_correction(beta, t) + then elapsed_time_ns < 50 + + bench amsgrad_update_v2 + given v = random_positive_gf16() + and v_max = random_positive_gf16() + when result = amsgrad_update(v, v_max) + then elapsed_time_ns < 10 + + // ========================================================= + // PHASE B1: Ablation benchmark + // ========================================================= + + // B1-BENCH: Compare throughput of all four variants at equal step count. + // Purpose: confirm no variant has a hidden compute advantage. + bench b1_ablation_equal_budget_throughput + given n = 10000 + and steps = 1000 + and config_a = AdamWConfig{.phi_variant = PhiVariant.Canonical} + and config_b = AdamWConfig{.phi_variant = PhiVariant.Damped} + and config_c = AdamWConfig{.phi_variant = PhiVariant.TunedStd} + and config_d = AdamWConfig{.phi_variant = PhiVariant.RandomRat} + when throughput_a = steps_per_second(config_a, n, steps) + and throughput_b = steps_per_second(config_b, n, steps) + and throughput_c = steps_per_second(config_c, n, steps) + and throughput_d = steps_per_second(config_d, n, steps) + // All variants must be within 5% of each other (same algo, different scalars) + then ratio(throughput_a, throughput_c) > 0.95 + and ratio(throughput_b, throughput_c) > 0.95 + and ratio(throughput_d, throughput_c) > 0.95 + + // ========================================================= + // Mathematical Notes + // ========================================================= + // + // AdamW Update Rule (Loshchilov & Hutter 2019): + // 1. Apply weight decay (decoupled): + // theta_t = theta_{t-1} * (1 - eta * lambda) + // + // 2. Update moments: + // m_t = beta1 * m_{t-1} + (1 - beta1) * g_t + // v_t = beta2 * v_{t-1} + (1 - beta2) * g_t^2 + // + // 3. Bias correction: + // m_hat_t = m_t / (1 - beta1^t) + // v_hat_t = v_t / (1 - beta2^t) + // + // 4. Parameter update: + // theta_t = theta_t - eta * m_hat_t / (sqrt(v_hat_t) + eps) + // + // EMA window: 1/(1-beta1) steps. For phi^(-1): window = phi^2 ~ 2.618. + // For 0.9: window = 10. For 0.9/phi: window ~ 2.24. + // Shorter window means faster response to gradient changes but + // noisier estimates -- no theory singles out phi as optimal. + // + // Literature context (used as BASELINES, not as phi validation): + // Xie & Li 2024 (2404.04454): AdamW has implicit L-inf gradient bias; + // relevant to comparing variants with different beta1 values. + // Wang & Aitchison 2025 (2405.13698): weight-decay scaling matters at scale. + // Chen 2025 (2510.12402): Cautious Weight Decay; reference for wd ablation. + // Li & Talwalkar 2019 (1902.07638): random-search is a strong HP baseline. + // Melis/Dyer/Blunsom 2017 (1707.05589): equal-budget comparison protocol. + // Hoffmann 2022 (2203.15556): BPB / Chinchilla scaling; our metric anchor. + // + // ========================================================= diff --git a/apps/website/public/t27/files/specs/ml/optimizer/lamb.t27 b/apps/website/public/t27/files/specs/ml/optimizer/lamb.t27 index 016a6fe317..16cd06cbae 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/lamb.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/lamb.t27 @@ -39,18 +39,18 @@ module Lamb; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init_state(num_params: u32) → LAMBState - fn init_state(num_params: u32) -> LAMBState { + // init_state(num_params: u32) → void + fn init_state(num_params: u32) -> void { // TODO: Implement from .tri spec } - // compute_layer_update(params: []f32, grads: []f32, state: LAMBState, config: LAMBConfig) → []f32 - fn compute_layer_update(params: []f32, grads: []f32, state: LAMBState, config: LAMBConfig) -> []f32 { + // compute_layer_update(params: []f32) → void + fn compute_layer_update(params: []f32) -> void { // TODO: Implement from .tri spec } - // forward(layers: [][]f32, grads: [][]f32, states: []LAMBState, config: LAMBConfig) → [][]f32 - fn forward(layers: [][]f32, grads: [][]f32, states: []LAMBState, config: LAMBConfig) -> [][]f32 { + // forward(layers: [][]f32) → void + fn forward(layers: [][]f32) -> void { // TODO: Implement from .tri spec } @@ -58,42 +58,20 @@ module Lamb; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init_state, compute_layer_update and forward have no bodies, so nothing - // about the update rule can be exercised yet. What the module does decide - // is its default hyper-parameters, and those are exactly what the - // invariants below claim without asserting. Checked here instead. - - test default_betas_lie_in_the_open_unit_interval - // lamb_constraint_0 and lamb_constraint_1 - given beta1 = DEFAULT_BETA1 - and beta2 = DEFAULT_BETA2 - then beta1 > 0.0 and beta1 < 1.0 and beta2 > 0.0 and beta2 < 1.0 - - test second_moment_decays_slower_than_first - // v accumulates over a longer window than m, so beta2 > beta1 - given beta1 = DEFAULT_BETA1 - and beta2 = DEFAULT_BETA2 - then beta2 > beta1 - - test default_epsilon_is_positive_and_well_below_the_step_size - // lamb_constraint_2: epsilon only guards the division, it must not - // dominate the update - given epsilon = DEFAULT_EPSILON - and lr = DEFAULT_LR - then epsilon > 0.0 and epsilon < lr - - test default_clip_threshold_is_positive - // lamb_constraint_3: the trust ratio is clipped from above - given clip = DEFAULT_CLIP_THRESHOLD - then clip > 0.0 - - test default_learning_rate_is_a_positive_fraction - given lr = DEFAULT_LR - then lr > 0.0 and lr < 1.0 - - test default_config_carries_the_declared_defaults - given cfg = LAMBConfig{ .learning_rate = DEFAULT_LR, .beta1 = DEFAULT_BETA1, .beta2 = DEFAULT_BETA2, .epsilon = DEFAULT_EPSILON, .weight_decay = 0.0, .clip_threshold = DEFAULT_CLIP_THRESHOLD } - then cfg.beta1 > 0.0 and cfg.beta1 < 1.0 and cfg.beta2 > 0.0 and cfg.beta2 < 1.0 and cfg.epsilon > 0.0 and cfg.clip_threshold > 0.0 + test init_state_basic_case + given input = default_input() + when result = init_state(input) + then result != undefined + + test compute_layer_update_basic_case + given input = default_input() + when result = compute_layer_update(input) + then result != undefined + + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/optimizer/lr_scheduler.t27 b/apps/website/public/t27/files/specs/ml/optimizer/lr_scheduler.t27 index 6f65489608..c0caae27f9 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/lr_scheduler.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/lr_scheduler.t27 @@ -1,32 +1,102 @@ // SPDX-License-Identifier: Apache-2.0 -// t27/specs/ -// Smooth decay following cosine curve | φ² + 1/φ² = 3 | TRINITY +// t27/specs/ml/optimizer/lr_scheduler.t27 +// Learning Rate Scheduler with φ-optimized cosine decay | φ² + 1/φ² = 3 | TRINITY -module Scheduler; +module LrScheduler; use base::types; use math::constants; + use math::trigonometry; + use numeric::gf16; + + // ═══════════════════════════════════════════════════════════ + // 1. Constants + // ═══════════════════════════════════════════════════════════ + + const PHI : gf16::GF16 = 1.618033988749895; + const INV_PHI : gf16::GF16 = 1.0 / PHI; + const DEFAULT_MAX_LR : gf16::GF16 = 1e-3; + const DEFAULT_MIN_LR : gf16::GF16 = 1e-6; + const DEFAULT_WARMUP_STEPS : u32 = 2000; + const DEFAULT_MAX_STEPS : u32 = 100000; // ═══════════════════════════════════════════════════════════ // 2. Types // ═══════════════════════════════════════════════════════════ pub const SchedulerConfig = struct { - max_steps : u32, - warmup_steps : u32, - min_lr : f32, + max_steps : u32, // Total training steps + warmup_steps : u32, // Linear warmup duration + min_lr : gf16::GF16, // Minimum learning rate + max_lr : gf16::GF16, // Maximum learning rate + use_phi_schedule : bool, // Use φ-optimized schedule + }; + + pub const SchedulerState = struct { + current_step : u64, // Current optimization step + last_lr : gf16::GF16, // Last computed learning rate + config : SchedulerConfig, // Scheduler configuration }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // get_lr(step: u32, max_steps: u32, base_lr: f32, min_lr: f32) → f32 - fn get_lr(step: u32, max_steps: u32, base_lr: f32, min_lr: f32) -> f32 { - // TODO: Implement from .tri spec + // init(config: SchedulerConfig) → SchedulerState + // Initializes learning rate scheduler. + fn init(config: SchedulerConfig) -> SchedulerState { + // current_step = 0 + // last_lr = min_lr + } + + // get_lr(state: SchedulerState) → gf16::GF16 + // Computes learning rate for current step. + fn get_lr(state: SchedulerState) -> gf16::GF16 { + // if step < warmup_steps: + // return linear_warmup(step, warmup_steps, min_lr, max_lr) + // else: + // return cosine_decay(step - warmup_steps, max_steps - warmup_steps, max_lr, min_lr) + } + + // step(state: SchedulerState) → SchedulerState + // Advances scheduler to next step. + fn step(state: SchedulerState) -> SchedulerState { + // current_step += 1 + // last_lr = get_lr(new_state) + } + + // linear_warmup(step: u32, warmup_steps: u32, min_lr: gf16::GF16, max_lr: gf16::GF16) → gf16::GF16 + // Linear warmup from min_lr to max_lr. + fn linear_warmup(step: u32, warmup_steps: u32, min_lr: gf16::GF16, max_lr: gf16::GF16) -> gf16::GF16 { + // progress = step / warmup_steps + // return min_lr + (max_lr - min_lr) * progress + } + + // cosine_decay(step: u32, total_steps: u32, max_lr: gf16::GF16, min_lr: gf16::GF16) → gf16::GF16 + // Cosine decay from max_lr to min_lr. + fn cosine_decay(step: u32, total_steps: u32, max_lr: gf16::GF16, min_lr: gf16::GF16) -> gf16::GF16 { + // progress = step / total_steps + // cosine_factor = 0.5 * (1 + cos(PI * progress)) + // return min_lr + (max_lr - min_lr) * cosine_factor + } + + // phi_cosine_decay(step: u32, total_steps: u32, max_lr: gf16::GF16, min_lr: gf16::GF16) → gf16::GF16 + // φ-optimized cosine decay with modified decay curve. + fn phi_cosine_decay(step: u32, total_steps: u32, max_lr: gf16::GF16, min_lr: gf16::GF16) -> gf16::GF16 { + // progress = step / total_steps + // phi_factor = 0.5 * (1 + cos(PI * progress ^ INV_PHI)) + // return min_lr + (max_lr - min_lr) * phi_factor + } + + // get_lr_at_step(config: SchedulerConfig, step: u64) → gf16::GF16 + // Computes learning rate at arbitrary step (stateless). + fn get_lr_at_step(config: SchedulerConfig, step: u64) -> gf16::GF16 { + // if step < warmup_steps: return linear_warmup(...) + // else if use_phi_schedule: return phi_cosine_decay(...) + // else: return cosine_decay(...) } // ═══════════════════════════════════════════════════════════ - // TDD: Tests (from .tri behaviors) + // TDD: Tests // ═══════════════════════════════════════════════════════════ test init_creates_valid_state diff --git a/apps/website/public/t27/files/specs/ml/optimizer/race_config.t27 b/apps/website/public/t27/files/specs/ml/optimizer/race_config.t27 new file mode 100644 index 0000000000..6f97a8dee3 --- /dev/null +++ b/apps/website/public/t27/files/specs/ml/optimizer/race_config.t27 @@ -0,0 +1,229 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/ml/optimizer/race_config.t27 +// IGLA RACE optimizer configuration freeze + eval-split protocol. +// Phase A deliverable -- honesty foundation (issue #181 child). +// +// Claim-status legend used in this file: +// [Verified] -- algebraic identity, no experiment needed. +// [Open conjecture] -- phi claim that the control test must decide. +// [Retracted] -- do not cite (e.g. delta_CP = 3/phi^2). +// +// GOLDEN CHAIN Law L5: phi^2 + phi^-2 = 3 is the ONLY [Verified] phi-fact. +// All optimizer phi anchors below are [Open conjecture]. +// +// Falsification-first notice: +// If a non-phi control of equal tuning budget matches phi within +// Monte-Carlo error, phi-specificity of every [Open conjecture] below +// is FALSIFIED. State that plainly in every result table. +// +// References: +// Hoffmann 2022 (Chinchilla) arXiv 2203.15556 -- compute budget. +// Li & Talwalkar 2019 -- random-search baseline. +// Melis/Dyer/Blunsom 2017 arXiv 1707.05589 -- equal-budget tuning. +// Xie & Li 2024 arXiv 2404.04454 -- AdamW implicit l-inf bias. +// Wang & Aitchison 2025 arXiv 2405.13698 -- weight-decay scaling. + +module RaceConfig { + use base::types; + use math::constants; + + // ----------------------------------------------------------------------- + // 1. Frozen champion config -- A1 + // + // Source TOML: configs/gate2-final.toml (igla-peek repo). + // Frozen at: . + // Content hash of configs/gate2-final.toml (normalised, comments stripped): + // sha256: + // + // Canonical phi anchors in optimizer.rs (trainer -- use_phi_defaults): + // beta1 = phi^-1 ~ 0.618034 [Open conjecture] + // weight_decay = phi^-3 ~ 0.236068 [Open conjecture] + // lr = phi^-3 ~ 0.236068 (scheduler overrides to 0.004 in RACE) + // + // Discrepancy note: adamw.t27 currently uses PHI_BETA1 = 0.9/phi ~ 0.556 + // (phi-damped, not phi-canonical). Phase B1 reconciles these two variants + // as named comparison arms. Both are [Open conjecture]. + // ----------------------------------------------------------------------- + + const PHI : f64 = 1.618033988749895; + + // phi-canonical anchors (from optimizer.rs with_phi_defaults) + const RACE_BETA1_PHI_CANONICAL : f64 = 0.6180339887498949; // phi^-1 [Open conjecture] + const RACE_WEIGHT_DECAY_PHI_CUBE : f64 = 0.2360679774997897; // phi^-3 = 1/(2*phi+1) [Open conjecture] + const RACE_LR_CHAMPION : f64 = 0.004; // INV-8 phi-band anchor + + // phi-damped variant (adamw.t27 legacy -- Phase B1 comparison arm) + const RACE_BETA1_PHI_DAMPED : f64 = 0.5559321608...; // 0.9 / phi [Open conjecture] + const RACE_BETA2_PHI_DAMPED : f64 = 0.6174052591...; // 0.999 / phi [Open conjecture] + + // Standard control arm (tuned AdamW -- equal-budget baseline) + const CTRL_BETA1 : f64 = 0.9; + const CTRL_BETA2 : f64 = 0.999; + const CTRL_WEIGHT_DECAY : f64 = 0.01; + + // Architecture constants matching champion run + const CHAMPION_D_MODEL : u32 = 384; + const CHAMPION_STEPS : u64 = 81_000; + const CHAMPION_SEED : u32 = 43; + + // Chinchilla compute budget note (Hoffmann 2022, arXiv 2203.15556): + // Optimal UNIQUE tokens ~ 20 * params. Champion (hidden=828) ~ 16-50M + // params => ~0.3-1.0B unique tokens needed. + // The corpus is tiny_shakespeare (~1M unique chars). The 81K steps re-use + // that ~1M-token corpus thousands of times: the run is UNDER-Chinchilla + // in unique data (~1M << ~0.3-1.0B). Counting repeated passes inflates the + // apparent token total but adds no unique information. + // Honest framing: BPB is sub-Chinchilla / preliminary. This does NOT + // validate phi anchors. Any ablation must match the same corpus, step + // budget, and seed for a fair comparison. + const CHINCHILLA_TOK_PER_PARAM : u32 = 20; // Hoffmann 2022 + const CHAMPION_BATCH_TOKENS : u64 = 524_288; + const CORPUS_UNIQUE_TOKENS : u64 = 1_115_394; // tiny_shakespeare char count + const CHINCHILLA_MIN_UNIQUE : u64 = 300_000_000; // ~20 * 15M params (lower bound) + + // ----------------------------------------------------------------------- + // 2. Held-out eval-split protocol -- A2 + // + // To prevent the champion BPB from being an in-sample artefact, all + // RACE trials must evaluate on a 20% held-out shard not seen during + // training or ASHA pruning. + // + // Split seed is committed here BEFORE any hyperparameter search. + // Champion BPB on held-out shard is TBD (re-baseline required). + // Until re-baseline is done: BPB=2.1919 status is [Open conjecture -- + // held-out split pending]. + // ----------------------------------------------------------------------- + + const SPLIT_SEED : u32 = 17; // committed pre-search + const TRAIN_FRACTION : f64 = 0.80; + const HELD_OUT_FRACTION : f64 = 0.20; + const CORPUS_NAME : str = "fineweb"; + + // Corpus hash must be filled in once the exact binary is locked. + // const CORPUS_SHA256 : str = ""; + + // Champion held-out BPB: TBD after re-baseline on 20% shard. + // const CHAMPION_BPB_HELD_OUT : f64 = ; + + // Known in-training BPB (seed_results.jsonl -- reference only): + const CHAMPION_BPB_TRAIN_SPLIT : f64 = 2.1919; // [Open conjecture -- held-out split pending] + + // ----------------------------------------------------------------------- + // 3. Four-arm control test design + // + // Every phi claim is [Open conjecture]. The control test decides. + // Equal tuning budget (same token count, same ASHA rungs) is mandatory. + // Falsification-first: state plainly in every table that if arm (c) or + // (d) matches arm (a) within Monte-Carlo error, phi-specificity is FALSIFIED. + // ----------------------------------------------------------------------- + // + // Arm (a): phi-canonical -- beta1=phi^-1, wd=phi^-3, lr=0.004 + // [Open conjecture] -- trainer's with_phi_defaults + // + // Arm (b): phi-damped -- beta1=0.9/phi, beta2=0.999/phi, wd=0.01 + // [Open conjecture] -- current adamw.t27 PHI_BETA1/PHI_BETA2 + // + // Arm (c): tuned-standard -- AdamW(0.9, 0.999, wd=0.01), lr tuned to + // equal budget (Melis/Dyer/Blunsom 2017, arXiv 1707.05589). + // This is the primary falsification control. + // + // Arm (d): random-rational -- beta1, wd drawn uniformly from [0.5, 0.7] + // and [0.05, 0.2] respectively, not near phi. Equal budget. + // Li & Talwalkar 2019 random-search baseline. + // + // ASHA rungs: [1000, 3000, 9000, 27000, 81000] steps (eta=3 field default, + // Li 2018 arXiv 1603.06560; eta=3 is NOT a phi-fact). + + // ----------------------------------------------------------------------- + // TDD: Tests + // ----------------------------------------------------------------------- + + test race_phi_canonical_beta1_is_phi_inv + // Verify the canonical phi-canonical beta1 constant matches phi^-1. + given beta1 = RACE_BETA1_PHI_CANONICAL + and phi_inv = 1.0 / PHI + when diff = abs(beta1 - phi_inv) + then diff < 1e-14 + + test race_weight_decay_phi_cube_is_phi_inv3 + // Verify phi-canonical weight_decay matches phi^-3. + given wd = RACE_WEIGHT_DECAY_PHI_CUBE + and phi_inv = 1.0 / PHI + and phi_inv3 = phi_inv * phi_inv * phi_inv + when diff = abs(wd - phi_inv3) + then diff < 1e-14 + + test race_champion_corpus_below_chinchilla_unique + // Honest check: the UNIQUE-token corpus is far below the Chinchilla + // optimum, so champion BPB is sub-Chinchilla / preliminary (not + // over-trained on unique data). This test asserts the under-data + // regime explicitly so no one later claims the run was compute-optimal. + given unique = CORPUS_UNIQUE_TOKENS + and min_tok = CHINCHILLA_MIN_UNIQUE + then unique < min_tok + + test race_split_fractions_sum_to_one + // 80% train + 20% held-out = 1.0 (no data is lost). + given train_f = TRAIN_FRACTION + and holdout_f = HELD_OUT_FRACTION + when sum = train_f + holdout_f + and diff = abs(sum - 1.0) + then diff < 1e-14 + + test race_ctrl_beta1_is_standard + // Control arm uses standard AdamW beta1 = 0.9, not phi. + given ctrl_b1 = CTRL_BETA1 + then abs(ctrl_b1 - 0.9) < 1e-14 + + test race_ctrl_weight_decay_is_standard + // Control arm uses standard AdamW wd = 0.01, not phi^-3. + given ctrl_wd = CTRL_WEIGHT_DECAY + then abs(ctrl_wd - 0.01) < 1e-14 + + // ----------------------------------------------------------------------- + // TDD: Invariants + // ----------------------------------------------------------------------- + + invariant race_phi_canonical_beta1_in_valid_range + // [Open conjecture] phi^-1 ~ 0.618 is a valid momentum parameter. + // Range check only -- does not validate phi-specificity. + assert RACE_BETA1_PHI_CANONICAL > 0.0 + and RACE_BETA1_PHI_CANONICAL < 1.0 + + invariant race_phi_weight_decay_in_valid_range + // [Open conjecture] phi^-3 ~ 0.236068 is a valid weight decay. + assert RACE_WEIGHT_DECAY_PHI_CUBE > 0.0 + and RACE_WEIGHT_DECAY_PHI_CUBE < 1.0 + + invariant race_split_seed_is_fixed + // Split seed must not change between trials (pre-registered). + assert SPLIT_SEED == 17 + + invariant race_champion_bpb_positive + // Sanity: champion BPB must be a positive finite number. + assert CHAMPION_BPB_TRAIN_SPLIT > 0.0 + and CHAMPION_BPB_TRAIN_SPLIT < 10.0 + + invariant race_phi_canonical_differs_from_phi_damped + // The two phi variants are distinct comparison arms, not aliases. + // phi-canonical beta1 ~ 0.618; phi-damped beta1 ~ 0.556. + given diff = abs(RACE_BETA1_PHI_CANONICAL - RACE_BETA1_PHI_DAMPED) + assert diff > 0.05 + + invariant race_ctrl_differs_from_phi_canonical + // Standard AdamW (0.9) is distinct from phi-canonical (0.618). + // If this invariant fails the two arms are not a meaningful comparison. + given diff = abs(CTRL_BETA1 - RACE_BETA1_PHI_CANONICAL) + assert diff > 0.1 + + // ----------------------------------------------------------------------- + // TDD: Benchmarks + // ----------------------------------------------------------------------- + + bench race_config_constant_access + // Constant reads must be free (no I/O, no allocation). + given _a = RACE_BETA1_PHI_CANONICAL + and _b = RACE_WEIGHT_DECAY_PHI_CUBE + and _c = CORPUS_UNIQUE_TOKENS + then elapsed_time_ns < 10 +} diff --git a/apps/website/public/t27/files/specs/ml/optimizer/rmsprop.t27 b/apps/website/public/t27/files/specs/ml/optimizer/rmsprop.t27 index 4e99ef489d..e3d4a12ad8 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/rmsprop.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/rmsprop.t27 @@ -26,8 +26,8 @@ module Rmsprop; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // step(grad: []const f32, param: []f32, cache: []f32) → void - fn step(grad: []const f32, param: []f32, cache: []f32) -> void { + // step(grad: []const f32) → void + fn step(grad: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/optimizer/sgd.t27 b/apps/website/public/t27/files/specs/ml/optimizer/sgd.t27 index a968c45ab4..fb1520e03f 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/sgd.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/sgd.t27 @@ -33,13 +33,13 @@ module Sgd; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(state: SGDState, param_count: u32) → void - fn init(state: SGDState, param_count: u32) -> void { + // init(state: SGDState) → void + fn init(state: SGDState) -> void { // TODO: Implement from .tri spec } - // update(params: []f32, grads: []const f32, state: SGDState, config: SGDConfig) → void - fn update(params: []f32, grads: []const f32, state: SGDState, config: SGDConfig) -> void { + // update(params: []f32) → void + fn update(params: []f32) -> void { // TODO: Implement from .tri spec } @@ -47,35 +47,15 @@ module Sgd; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init() and update() have no body yet, so they panic when called. The - // defaults and the two config/state types are what this module states. - - test sgd_default_learning_rate_is_one_percent - // constraint sgd_constraint_0: learning_rate > 0 - given lr = DEFAULT_LR - then @abs(lr - 0.01) < 0.0000005 - and lr > 0.0 - - test sgd_default_momentum_is_plain_gradient_descent - // constraint sgd_constraint_1: 0 <= momentum < 1; the default is the - // no-momentum end of that range - given m = DEFAULT_MOMENTUM - then m >= 0.0 - and m < 1.0 - and @abs(m) < 0.0000005 - - test sgd_config_carries_every_hyperparameter - given cfg = SGDConfig{.learning_rate=0.1,.momentum=0.9,.weight_decay=0.0001,.dampening=0.0,.nesterov=true} - then @abs(cfg.learning_rate - 0.1) < 0.0000005 - and @abs(cfg.momentum - 0.9) < 0.0000005 - and @abs(cfg.weight_decay - 0.0001) < 0.0000005 - and cfg.nesterov - - test sgd_state_starts_with_no_velocity - // constraint sgd_constraint_4 ties velocity.size() to params.size(); - // with no params there is no velocity - given state = SGDState{.velocity=&[_]f32{}} - then state.velocity.len == 0 + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test update_basic_case + given input = default_input() + when result = update(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/optimizer/sgd_momentum.t27 b/apps/website/public/t27/files/specs/ml/optimizer/sgd_momentum.t27 index f74915af03..1a8edf58d4 100644 --- a/apps/website/public/t27/files/specs/ml/optimizer/sgd_momentum.t27 +++ b/apps/website/public/t27/files/specs/ml/optimizer/sgd_momentum.t27 @@ -1,38 +1,122 @@ // SPDX-License-Identifier: Apache-2.0 -// t27/specs/ -// Accumulates gradient direction for faster convergence | φ² + 1/φ² = 3 | TRINITY +// t27/specs/ml/optimizer/sgd_momentum.t27 +// SGD with Momentum - φ-damped velocity | φ² + 1/φ² = 3 | TRINITY module SgdMomentum; use base::types; use math::constants; + use numeric::gf16; // ═══════════════════════════════════════════════════════════ // 1. Constants // ═══════════════════════════════════════════════════════════ - const DEFAULT_MOMENTUM : f32 = 0.9; + const PHI : gf16::GF16 = 1.618033988749895; + const DEFAULT_LEARNING_RATE : gf16::GF16 = 0.01; + const DEFAULT_MOMENTUM : gf16::GF16 = 0.9; + const PHI_DAMPED_MOMENTUM : gf16::GF16 = 0.9 / PHI; // ≈ 0.556 + const DEFAULT_WEIGHT_DECAY : gf16::GF16 = 0.0; + const DEFAULT_NESTEROV : bool = false; // ═══════════════════════════════════════════════════════════ // 2. Types // ═══════════════════════════════════════════════════════════ - pub const SGDMomentumConfig = struct { - learning_rate : f32, - momentum : f32, - nesterov : bool, + pub const SgdMomentumConfig = struct { + learning_rate : gf16::GF16, // η: step size + momentum : gf16::GF16, // μ: momentum coefficient + weight_decay : gf16::GF16, // λ: L2 regularization + nesterov : bool, // Nesterov acceleration + use_phi_damping : bool, // Apply φ-based damping to momentum + dampening : gf16::GF16, // Dampening for momentum (1 - momentum) + }; + + pub const SgdMomentumState = struct { + velocities : []gf16::GF16, // v_t: accumulated momentum for each parameter + param_count : u32, // Number of parameters being optimized + step : u64, // Current optimization step + }; + + pub const OptimizerStepResult = struct { + updated_params : []gf16::GF16, // New parameter values + velocities : []gf16::GF16, // Updated velocities + step_norm : gf16::GF16, // L2 norm of the parameter update }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // step(grad: []const f32, param: []f32, velocity: []f32, lr: f32, mu: f32, nesterov: bool) → void - fn step(grad: []const f32, param: []f32, velocity: []f32, lr: f32, mu: f32, nesterov: bool) -> void { - // TODO: Implement from .tri spec + // init(config: SgdMomentumConfig, param_count: u32) → SgdMomentumState + // Initializes optimizer state with zero velocities. + fn init(config: SgdMomentumConfig, param_count: u32) -> SgdMomentumState { + // velocities[i] = 0.0 for all i + // step = 0 + } + + // step(state: SgdMomentumState, params: []gf16::GF16, grads: []gf16::GF16) → OptimizerStepResult + // Performs one optimization step with momentum. + fn step(state: SgdMomentumState, params: []gf16::GF16, grads: []gf16::GF16) -> OptimizerStepResult { + // If weight_decay > 0: + // grads[i] = grads[i] + weight_decay * params[i] + // + // v_t = momentum * v_{t-1} + (1 - dampening) * grads[i] + // + // If nesterov: + // params[i] = params[i] - lr * (momentum * v_t + grads[i]) + // else: + // params[i] = params[i] - lr * v_t + // + // If use_phi_damping: + // Apply PHI_DAMPED_MOMENTUM instead of momentum + } + + // compute_velocity(velocity: gf16::GF16, grad: gf16::GF16, momentum: gf16::GF16, dampening: gf16::GF16) → f32 + // Computes new velocity for a single parameter. + fn compute_velocity(velocity: gf16::GF16, grad: gf16::GF16, momentum: gf16::GF16, dampening: gf16::GF16) -> gf16::GF16 { + // v_new = momentum * v_old + dampening * grad + } + + // nesterov_update(param: gf16::GF16, velocity: gf16::GF16, grad: gf16::GF16, lr: gf16::GF16, momentum: gf16::GF16) → f32 + // Computes Nesterov accelerated parameter update. + fn nesterov_update(param: gf16::GF16, velocity: gf16::GF16, grad: gf16::GF16, lr: gf16::GF16, momentum: gf16::GF16) -> gf16::GF16 { + // param_new = param - lr * (momentum * velocity + grad) + } + + // standard_update(param: gf16::GF16, velocity: gf16::GF16, lr: gf16::GF16) → f32 + // Computes standard momentum parameter update. + fn standard_update(param: gf16::GF16, velocity: gf16::GF16, lr: gf16::GF16) -> gf16::GF16 { + // param_new = param - lr * velocity + } + + // apply_weight_decay(params: []gf16::GF16, grads: []gf16::GF16, weight_decay: gf16::GF16) → []gf16::GF16 + // Applies L2 weight decay to gradients. + fn apply_weight_decay(params: []gf16::GF16, grads: []gf16::GF16, weight_decay: gf16::GF16) -> []gf16::GF16 { + // grads[i] = grads[i] + weight_decay * params[i] + } + + // phi_damped_momentum(base_momentum: gf16::GF16) → f32 + // Applies φ-based damping to momentum coefficient. + fn phi_damped_momentum(base_momentum: gf16::GF16) -> gf16::GF16 { + // Returns base_momentum / PHI + } + + // get_effective_momentum(config: SgdMomentumConfig) → f32 + // Returns the effective momentum coefficient. + fn get_effective_momentum(config: SgdMomentumConfig) -> gf16::GF16 { + // If use_phi_damping: return PHI_DAMPED_MOMENTUM + // else: return config.momentum + } + + // zero_grad(state: SgdMomentumState) → SgdMomentumState + // Resets gradients (velocities remain for momentum). + fn zero_grad(state: SgdMomentumState) -> SgdMomentumState { + // No-op for SGD with momentum (velocities persist) + // Returns state unchanged } // ═══════════════════════════════════════════════════════════ - // TDD: Tests (from .tri behaviors) + // TDD: Tests // ═══════════════════════════════════════════════════════════ test init_creates_zero_velocities @@ -191,7 +275,7 @@ module SgdMomentum; then result.velocities[0] == 0.5 invariant phi_damped_momentum_constant - then approximately_equal_within(PHI_DAMPED_MOMENTUM, 0.9 / PHI, 1e-6) + then approximately_equal(PHI_DAMPED_MOMENTUM, 0.9 / PHI, 1e-6) invariant dampening_equals_one_minus_momentum_by_default given config = SgdMomentumConfig{.momentum = 0.9, .dampening = 0.0} diff --git a/apps/website/public/t27/files/specs/ml/pathway/mlp.t27 b/apps/website/public/t27/files/specs/ml/pathway/mlp.t27 index 689d7f5090..03a6109863 100644 --- a/apps/website/public/t27/files/specs/ml/pathway/mlp.t27 +++ b/apps/website/public/t27/files/specs/ml/pathway/mlp.t27 @@ -35,13 +35,13 @@ module Mlp; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, state: MLPState, output: []f32, config: MLPConfig) → void - fn forward(input: []const f32, state: MLPState, output: []f32, config: MLPConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // init(state: MLPState, config: MLPConfig) → void - fn init(state: MLPState, config: MLPConfig) -> void { + // init(state: MLPState) → void + fn init(state: MLPState) -> void { // TODO: Implement from .tri spec } @@ -49,33 +49,15 @@ module Mlp; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward and init have no bodies, so no activation can be checked. The - // module does fix the MNIST geometry, which is what the invariants below - // describe in comments and never assert. - - test mnist_input_is_a_flattened_28x28_image - // mlp_constraint_0 - given input_size = MNIST_INPUT_SIZE - then input_size == 784 and input_size == 28 * 28 - - test mnist_output_is_one_logit_per_digit - // mlp_constraint_1 - given output_size = MNIST_OUTPUT_SIZE - then output_size == 10 - - test default_hidden_layer_is_non_empty - // mlp_constraint_2 - given hidden = DEFAULT_HIDDEN_SIZE - then hidden > 0 - - test default_config_weight_counts_fit_a_u32 - // mlp_constraint_3 and mlp_constraint_4: w1 is input*hidden, w2 is - // hidden*output. 784*128 = 100352 and 128*10 = 1280, both well inside - // the u32 the config fields are declared as. - given cfg = MLPConfig{ .input_size = MNIST_INPUT_SIZE, .hidden_size = DEFAULT_HIDDEN_SIZE, .output_size = MNIST_OUTPUT_SIZE } - and w1_count = cfg.input_size * cfg.hidden_size - and w2_count = cfg.hidden_size * cfg.output_size - then w1_count == 100352 and w2_count == 1280 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/recurrent/attention_mechanism.t27 b/apps/website/public/t27/files/specs/ml/recurrent/attention_mechanism.t27 index 513c22d40e..3664da346f 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/attention_mechanism.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/attention_mechanism.t27 @@ -32,13 +32,13 @@ module Attention; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(query: []const f32, key: []const f32, value: []const f32, output: []f32, weights: []f32, config: AttentionConfig) → void - fn forward(query: []const f32, key: []const f32, value: []const f32, output: []f32, weights: []f32, config: AttentionConfig) -> void { + // forward(query: []const f32) → void + fn forward(query: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, query: []const f32, key: []const f32, value: []const f32, attn_weights: []const f32, grad_query: []f32, grad_key: []f32, grad_value: []f32, config: AttentionConfig) → void - fn backward(grad_output: []const f32, query: []const f32, key: []const f32, value: []const f32, attn_weights: []const f32, grad_query: []f32, grad_key: []f32, grad_value: []f32, config: AttentionConfig) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } @@ -46,35 +46,15 @@ module Attention; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward and backward are unimplemented stubs -- both emit - // `@panic("not yet implemented")`, so attention_constraint_2 (matching - // query/key/value shapes) cannot be checked here. The declared constant and - // config shape are what remain testable. - - test head_split_and_dropout_are_declared_as_the_constraints_assume - // attention_constraint_0 divides d_model by num_heads and _1 bounds - // dropout in [0, 1), so both must be numeric fields of this config. - then @FieldType(AttentionConfig, "d_model") == u32 - and @FieldType(AttentionConfig, "num_heads") == u32 - and @FieldType(AttentionConfig, "dropout") == f32 - - test causal_masking_is_a_runtime_flag - then @FieldType(AttentionConfig, "causal") == bool - and @typeInfo(AttentionConfig).@"struct".fields.len == 4 - - test forward_returns_the_weights_alongside_the_output - // Both are flat f32 buffers, so the attention map stays inspectable - // rather than being folded away inside forward(). - then @FieldType(AttentionOutput, "output") == []f32 - and @FieldType(AttentionOutput, "weights") == []f32 - - test scale_factor_is_usable_as_a_divisor_of_the_scores - // FAILING ON PURPOSE. Scaled dot-product attention divides the scores - // by sqrt(d_k), but SCALE_FACTOR is declared 0.0. Multiplying by it - // annihilates every score, so softmax would return a uniform - // distribution for any input. It needs a positive value, or to be - // computed from d_model / num_heads at run time. - then SCALE_FACTOR > 0.0 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test backward_basic_case + given input = default_input() + when result = backward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/recurrent/bilstm.t27 b/apps/website/public/t27/files/specs/ml/recurrent/bilstm.t27 index dce8421125..41df592106 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/bilstm.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/bilstm.t27 @@ -50,13 +50,13 @@ module Bilstm; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward_direction(inputs: [][]f32, direction: Str, params: LSTMParams) → [][]f32 - fn forward_direction(inputs: [][]f32, direction: Str, params: LSTMParams) -> [][]f32 { + // forward_direction(inputs: [][]f32) → void + fn forward_direction(inputs: [][]f32) -> void { // TODO: Implement from .tri spec } - // forward(inputs: [][]f32, config: BiLSTMConfig) → BiLSTMOutput - fn forward(inputs: [][]f32, config: BiLSTMConfig) -> BiLSTMOutput { + // forward(inputs: [][]f32) → void + fn forward(inputs: [][]f32) -> void { // TODO: Implement from .tri spec } @@ -64,48 +64,15 @@ module Bilstm; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test default_sizes_satisfy_the_module_constraints - // Verify: constraints 0 and 1 — input_size >= 1 and hidden_size >= 1 - given input_size = DEFAULT_INPUT_SIZE - and hidden_size = DEFAULT_HIDDEN_SIZE - then input_size >= 1 and hidden_size >= 1 - - test bidirectional_output_is_twice_the_hidden_size - // Verify: constraint bilstm_output — h is the forward and backward states - // concatenated, so it is 2 * hidden_size wide (512 for the defaults) - given hidden_size = DEFAULT_HIDDEN_SIZE - when concat_width = 2 * hidden_size - then concat_width == 512 and concat_width > hidden_size - - test config_from_defaults_is_admissible - // Verify: a config built straight from the module constants is well-formed - given config = BiLSTMConfig{ .input_size = DEFAULT_INPUT_SIZE, .hidden_size = DEFAULT_HIDDEN_SIZE, .use_cell_state = true } - then config.input_size >= 1 and config.hidden_size >= 1 and config.use_cell_state - - test output_h_is_the_two_final_states_joined - // Verify: h_fwd_final and h_bwd_final are each hidden_size wide and h is - // their concatenation, so h.len is exactly the sum of the two - given h_fwd_final = [_]f32{ 0.0, 1.0 } - and h_bwd_final = [_]f32{ 2.0, 3.0 } - and h = [_]f32{ 0.0, 1.0, 2.0, 3.0 } - when output = BiLSTMOutput{ .h = @constCast(&h), .c = &.{}, .h_fwd_final = @constCast(&h_fwd_final), .h_bwd_final = @constCast(&h_bwd_final) } - then output.h.len == output.h_fwd_final.len + output.h_bwd_final.len - - test forward_half_of_output_precedes_the_backward_half - // Verify: the concatenation order is forward-then-backward, so the first - // hidden_size entries of h are the forward state - given h_fwd_final = [_]f32{ 0.0, 1.0 } - and h = [_]f32{ 0.0, 1.0, 2.0, 3.0 } - when head = h[0..2] - then std.mem.eql(f32, head, &h_fwd_final) - - test lstm_params_carry_one_weight_and_one_bias_per_gate - // Verify: the input, forget, output and cell gates each get a w_ and a b_ - // field, and the biases are hidden_size wide - given w_i = [_]f32{ 0.0, 0.0 } - and b_i = [_]f32{ 0.0, 0.0 } - when params = LSTMParams{ .w_i = @constCast(&w_i), .w_f = &.{}, .w_o = &.{}, .w_c = &.{}, .b_i = @constCast(&b_i), .b_f = &.{}, .b_o = &.{}, .b_c = &.{} } - then params.w_i.len == params.b_i.len + test forward_direction_basic_case + given input = default_input() + when result = forward_direction(input) + then result != undefined + + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/recurrent/gru_cell.t27 b/apps/website/public/t27/files/specs/ml/recurrent/gru_cell.t27 index 85018d15c7..e18541e866 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/gru_cell.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/gru_cell.t27 @@ -32,13 +32,13 @@ module Gru; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, h_prev: []const f32, weights: GRUWeights, h_next: []f32, config: GRUConfig) → void - fn forward(input: []const f32, h_prev: []const f32, weights: GRUWeights, h_next: []f32, config: GRUConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // init(weights: GRUWeights, config: GRUConfig) → void - fn init(weights: GRUWeights, config: GRUConfig) -> void { + // init(weights: GRUWeights) → void + fn init(weights: GRUWeights) -> void { // TODO: Implement from .tri spec } @@ -46,46 +46,15 @@ module Gru; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test gate_matrices_match_the_configured_shape - // Verify: constraints 2-4 -- every gate matrix is - // (input_size + hidden_size) * hidden_size, and the three gates agree - given cfg = GRUConfig{ .input_size = 2, .hidden_size = 3 } - and Wr = [_]f32{0.0} ** 15 - and Wz = [_]f32{0.0} ** 15 - and Wh = [_]f32{0.0} ** 15 - and br = [_]f32{0.0} ** 3 - and bz = [_]f32{0.0} ** 3 - and bh = [_]f32{0.0} ** 3 - and w = GRUWeights{ .Wr = @constCast(&Wr), .br = @constCast(&br), .Wz = @constCast(&Wz), .bz = @constCast(&bz), .Wh = @constCast(&Wh), .bh = @constCast(&bh) } - then w.Wr.len == (cfg.input_size + cfg.hidden_size) * cfg.hidden_size and w.Wz.len == w.Wr.len and w.Wh.len == w.Wr.len - - test gate_biases_match_the_hidden_size - // Verify: constraints 5-7 -- each gate bias holds one entry per hidden unit - given cfg = GRUConfig{ .input_size = 2, .hidden_size = 3 } - and Wr = [_]f32{0.0} ** 15 - and Wz = [_]f32{0.0} ** 15 - and Wh = [_]f32{0.0} ** 15 - and br = [_]f32{0.0} ** 3 - and bz = [_]f32{0.0} ** 3 - and bh = [_]f32{0.0} ** 3 - and w = GRUWeights{ .Wr = @constCast(&Wr), .br = @constCast(&br), .Wz = @constCast(&Wz), .bz = @constCast(&bz), .Wh = @constCast(&Wh), .bh = @constCast(&bh) } - then w.br.len == cfg.hidden_size and w.bz.len == cfg.hidden_size and w.bh.len == cfg.hidden_size - - test state_carries_one_activation_per_hidden_unit - // Verify: constraints 0-1 -- both sizes are positive, and the hidden - // state h is sized by hidden_size, not by input_size - given cfg = GRUConfig{ .input_size = 2, .hidden_size = 3 } - and h = [_]f32{0.0} ** 3 - and state = GRUState{ .h = @constCast(&h) } - then cfg.input_size > 0 and cfg.hidden_size > 0 and state.h.len == cfg.hidden_size - - test gru_has_three_gate_matrices_where_lstm_has_four - // Verify: constraint_8 -- the parameter count behind "GRU trains faster - // than LSTM"; reset, update and candidate, no output gate - given cfg = GRUConfig{ .input_size = 2, .hidden_size = 3 } - and per_gate = (cfg.input_size + cfg.hidden_size) * cfg.hidden_size + cfg.hidden_size - when total = 3 * per_gate - then total == 54 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/recurrent/lstm_cell.t27 b/apps/website/public/t27/files/specs/ml/recurrent/lstm_cell.t27 index c0c51cb3e5..036d0ede12 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/lstm_cell.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/lstm_cell.t27 @@ -41,13 +41,13 @@ module Lstm; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, state_prev: LSTMState, weights: LSTMWeights, state_next: LSTMState, config: LSTMConfig) → void - fn forward(input: []const f32, state_prev: LSTMState, weights: LSTMWeights, state_next: LSTMState, config: LSTMConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // init(weights: LSTMWeights, config: LSTMConfig) → void - fn init(weights: LSTMWeights, config: LSTMConfig) -> void { + // init(weights: LSTMWeights) → void + fn init(weights: LSTMWeights) -> void { // TODO: Implement from .tri spec } @@ -55,33 +55,15 @@ module Lstm; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward and init are unimplemented stubs returning void, so no behavioural - // assertion is possible yet. These tests execute the size constraints that - // the invariants below only state in comments. - - test default_hidden_size_is_positive - // Verify: constraint_1 (hidden_size > 0) holds for the documented default - given h = LSTM_DEFAULT_HIDDEN - then h == 128 and h > 0 - - test gate_block_size_is_input_plus_hidden_times_hidden - // Verify: constraints 2-5 -- each gate weight block covers the - // concatenated [input, hidden] vector once per hidden unit - given cfg = LSTMConfig{.input_size=2,.hidden_size=3} - when block = (cfg.input_size + cfg.hidden_size) * cfg.hidden_size - then block == 15 and cfg.input_size > 0 and cfg.hidden_size > 0 - - test forget_gate_weights_and_bias_match_the_constrained_sizes - // Verify: constraint_2 (Wf) and constraint_6 (bf) for input_size = 2, - // hidden_size = 3 -- a 15-element weight block and a 3-element bias - given w = LSTMWeights{.Wf=@constCast(&([_]f32{0.0} ** 15)),.bf=@constCast(&([_]f32{1.0} ** 3)),.Wi=@constCast(&([_]f32{0.0} ** 15)),.bi=@constCast(&([_]f32{0.0} ** 3)),.Wo=@constCast(&([_]f32{0.0} ** 15)),.bo=@constCast(&([_]f32{0.0} ** 3)),.Wg=@constCast(&([_]f32{0.0} ** 15)),.bg=@constCast(&([_]f32{0.0} ** 3))} - then w.Wf.len == 15 and w.bf.len == 3 and w.Wi.len == w.Wf.len and w.bo.len == w.bf.len - - test cell_and_hidden_state_have_the_same_width - // Verify: LSTMState carries h and c side by side -- the cell state - // highway is exactly as wide as the exposed hidden state - given st = LSTMState{.h=@constCast(&([_]f32{0.0} ** 3)),.c=@constCast(&([_]f32{0.0} ** 3))} - then st.h.len == st.c.len and st.h.len == 3 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/recurrent/lstm_single.t27 b/apps/website/public/t27/files/specs/ml/recurrent/lstm_single.t27 index 27c2348c24..9a8a933fa7 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/lstm_single.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/lstm_single.t27 @@ -45,13 +45,13 @@ module LstmCell; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, state: LSTMState, weights: LSTMWeights, output_state: LSTMState, config: LSTMConfig) → void - fn forward(input: []const f32, state: LSTMState, weights: LSTMWeights, output_state: LSTMState, config: LSTMConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } - // backward(grad_output: []const f32, grad_cell: []const f32, input: []const f32, state: LSTMState, weights: LSTMWeights, grad_input: []f32, grad_state: LSTMState, grad_weights: LSTMWeights) → void - fn backward(grad_output: []const f32, grad_cell: []const f32, input: []const f32, state: LSTMState, weights: LSTMWeights, grad_input: []f32, grad_state: LSTMState, grad_weights: LSTMWeights) -> void { + // backward(grad_output: []const f32) → void + fn backward(grad_output: []const f32) -> void { // TODO: Implement from .tri spec } @@ -59,54 +59,15 @@ module LstmCell; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Both functions above are still `TODO: Implement`, so each compiles to - // `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is FORGET_BIAS_INIT, the state pair and the - // gate weight set. The constraints listed below are checked here against - // a concrete configuration rather than being left as prose. - - // A positive forget bias starts the cell near "remember everything", - // which is the point the header makes about vanishing gradients. - test forget_bias_starts_positive - given b = FORGET_BIAS_INIT - then b > 0.0 - and @abs(b - 1.0) < 1e-6 - - // h and c are both hidden_size long; the input is input_size long and is - // sized independently of them. - test hidden_and_cell_state_are_both_hidden_size_long - given cfg = LSTMConfig{ .input_size = 2, .hidden_size = 3 } - and st = LSTMState{ .h = @constCast(&[_]f32{ 0.0, 0.0, 0.0 }), .c = @constCast(&[_]f32{ 0.0, 0.0, 0.0 }) } - then st.h.len == cfg.hidden_size - and st.c.len == cfg.hidden_size - and st.h.len == st.c.len - - test input_size_is_sized_independently_of_hidden_size - given cfg = LSTMConfig{ .input_size = 2, .hidden_size = 3 } - and x = @constCast(&[_]f32{ 0.0, 0.0 }) - then x.len == cfg.input_size - and cfg.input_size != cfg.hidden_size - - test state_and_weights_are_stored_as_f32 - given h = @FieldType(LSTMState, "h") - then h == []f32 - and @FieldType(LSTMState, "c") == []f32 - and @FieldType(LSTMWeights, "W_ii") == []f32 - and @FieldType(LSTMWeights, "b_f") == []f32 - - // Four gates -- input, forget, cell candidate, output -- each with an - // input matrix, a recurrent matrix and a bias: twelve tensors in all. - test weights_hold_three_tensors_for_each_of_the_four_gates - given fields = @typeInfo(LSTMWeights).@"struct".fields - then fields.len == 12 - - // forward is given the input with no state and no weights, and backward - // an output gradient with nothing to propagate it through. These record - // the signatures as they stand. - test forward_and_backward_each_take_one_f32_slice_and_return_nothing - given f = forward - then @TypeOf(f) == fn ([]const f32) void - and @TypeOf(backward) == fn ([]const f32) void + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test backward_basic_case + given input = default_input() + when result = backward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/recurrent/rnn_cell.t27 b/apps/website/public/t27/files/specs/ml/recurrent/rnn_cell.t27 index 2330d1d06a..d3a9b958a0 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/rnn_cell.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/rnn_cell.t27 @@ -37,18 +37,18 @@ module RnnCell; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward_step(input: []f32, state: RNNState, params: RNNParams) → RNNState - fn forward_step(input: []f32, state: RNNState, params: RNNParams) -> RNNState { + // forward_step(input: []f32) → void + fn forward_step(input: []f32) -> void { // TODO: Implement from .tri spec } - // forward_sequence(inputs: [][]f32, initial_state: []f32, params: RNNParams) → [][]f32 - fn forward_sequence(inputs: [][]f32, initial_state: []f32, params: RNNParams) -> [][]f32 { + // forward_sequence(inputs: [][]f32) → void + fn forward_sequence(inputs: [][]f32) -> void { // TODO: Implement from .tri spec } - // init_state(hidden_size: u32) → []f32 - fn init_state(hidden_size: u32) -> []f32 { + // init_state(hidden_size: u32) → void + fn init_state(hidden_size: u32) -> void { // TODO: Implement from .tri spec } @@ -56,42 +56,20 @@ module RnnCell; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward_step/forward_sequence/init_state are unimplemented stubs -- each - // emits `@panic("not yet implemented")`, so the recurrence itself cannot be - // exercised. The declared constants and parameter shape are what remain - // testable. - - test defaults_satisfy_the_stated_size_constraints - // rnn_cell_constraint_0 and _1 require input_size >= 1 and - // hidden_size >= 1; the defaults must not violate them. - then DEFAULT_INPUT_SIZE >= 1 - and DEFAULT_HIDDEN_SIZE >= 1 - and DEFAULT_INPUT_SIZE == 128 - and DEFAULT_HIDDEN_SIZE == 128 - - test params_are_the_three_terms_of_the_elman_recurrence - // h_t = tanh(W_x x_t + W_h h_{t-1} + b), from Elman (1990): one input - // matrix, one recurrent matrix, one bias -- and nothing else. - then @typeInfo(RNNParams).@"struct".fields.len == 3 - and @hasField(RNNParams, "w_x") and @hasField(RNNParams, "w_h") - and @hasField(RNNParams, "b") - - test weights_are_flat_f32_slices - // Shape is carried by RNNCellConfig, not by the parameter type, so - // every matrix is a 1-D buffer the caller must index itself. - then @FieldType(RNNParams, "w_x") == []f32 - and @FieldType(RNNParams, "w_h") == []f32 - and @FieldType(RNNParams, "b") == []f32 - - test state_carries_a_cell_vector_a_plain_rnn_does_not_use - // An Elman cell has only a hidden vector; `cell` is LSTM state. It is - // declared here, so RNNState is really an LSTM-shaped state struct. - then @hasField(RNNState, "hidden") and @hasField(RNNState, "cell") - and @FieldType(RNNState, "cell") == []f32 - - test config_declares_sizes_as_unsigned - then @FieldType(RNNCellConfig, "input_size") == u32 - and @FieldType(RNNCellConfig, "hidden_size") == u32 + test forward_step_basic_case + given input = default_input() + when result = forward_step(input) + then result != undefined + + test forward_sequence_basic_case + given input = default_input() + when result = forward_sequence(input) + then result != undefined + + test init_state_basic_case + given input = default_input() + when result = init_state(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/recurrent/self_attention.t27 b/apps/website/public/t27/files/specs/ml/recurrent/self_attention.t27 index 09943dcb34..e0be7fd5f8 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/self_attention.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/self_attention.t27 @@ -40,8 +40,8 @@ module SelfAttention; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, weights: SelfAttentionWeights, state: SelfAttentionState, config: SelfAttentionConfig) → void - fn forward(input: []const f32, weights: SelfAttentionWeights, state: SelfAttentionState, config: SelfAttentionConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/recurrent/seq2seq.t27 b/apps/website/public/t27/files/specs/ml/recurrent/seq2seq.t27 index 7a663567ff..7f835f4d8a 100644 --- a/apps/website/public/t27/files/specs/ml/recurrent/seq2seq.t27 +++ b/apps/website/public/t27/files/specs/ml/recurrent/seq2seq.t27 @@ -26,13 +26,13 @@ module Seq2seq; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // encode(input_seq: []const u32, state: Seq2SeqState, config: Seq2SeqConfig) → void - fn encode(input_seq: []const u32, state: Seq2SeqState, config: Seq2SeqConfig) -> void { + // encode(input_seq: []const u32) → void + fn encode(input_seq: []const u32) -> void { // TODO: Implement from .tri spec } - // decode(target_seq: []const u32, state: Seq2SeqState, output: []f32, config: Seq2SeqConfig) → void - fn decode(target_seq: []const u32, state: Seq2SeqState, output: []f32, config: Seq2SeqConfig) -> void { + // decode(target_seq: []const u32) → void + fn decode(target_seq: []const u32) -> void { // TODO: Implement from .tri spec } @@ -40,55 +40,15 @@ module Seq2seq; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // encode and decode are both unimplemented stubs: each one emits - // `@panic("not yet implemented")`, so calling either aborts the test - // binary rather than failing a test. (Their signatures are also truncated - // to the first parameter, so decode has nowhere to receive the encoder - // context it is supposed to condition on.) The invariants below never - // reach the generated code either -- they emit an empty comptime block, - // which is what the first test here is about. - - test the_positivity_invariants_are_not_enforced_by_the_types - // The spec constrains vocab_size, d_model and hidden_size to be - // positive, but all three are plain u32 and the invariant blocks emit - // nothing, so an all-zero config is perfectly constructible. Whatever - // checks these has to be code, not the type. - given degenerate = Seq2SeqConfig{ .vocab_size = 0, .d_model = 0, .hidden_size = 0 } - then degenerate.vocab_size == 0 - and degenerate.hidden_size == 0 - and @typeInfo(@FieldType(Seq2SeqConfig, "vocab_size")).int.signedness == .unsigned - and @typeInfo(Seq2SeqConfig).@"struct".fields.len == 3 - - test the_context_vector_is_a_hidden_state_of_the_same_shape - // All three buffers are []f32: the context handed from encoder to - // decoder is an encoder hidden state, not a separate representation. - then @typeInfo(Seq2SeqState).@"struct".fields.len == 3 - and @FieldType(Seq2SeqState, "encoder_context") == @FieldType(Seq2SeqState, "encoder_hidden") - and @FieldType(Seq2SeqState, "decoder_hidden") == @FieldType(Seq2SeqState, "encoder_hidden") - and @FieldType(Seq2SeqState, "encoder_hidden") == []f32 - - test hidden_size_is_what_sizes_all_three_buffers - // A hidden_size of 4 means three length-4 runs. Built by hand, since - // encode is a stub -- the point is that one config field fixes every - // buffer length, so no per-buffer size is stored on the state. - given cfg = Seq2SeqConfig{ .vocab_size = 32, .d_model = 8, .hidden_size = 4 } - given buf = std.mem.zeroes([4]f32) - given state = Seq2SeqState{ .encoder_hidden = @constCast(&buf), .encoder_context = @constCast(&buf), .decoder_hidden = @constCast(&buf) } - then state.encoder_hidden.len == cfg.hidden_size - and state.encoder_context.len == cfg.hidden_size - and state.decoder_hidden.len == cfg.hidden_size - and @hasField(Seq2SeqState, "hidden_size") == false - - test both_sequences_are_token_ids_of_the_vocabulary_width - // encode takes source ids and decode takes target ids, both []const - // u32 -- the same width as vocab_size, so any id the config admits is - // representable. decode reading ground-truth targets is teacher - // forcing, which is what the module header describes. - given encode_arg = @typeInfo(@TypeOf(encode)).@"fn".params[0].type - given decode_arg = @typeInfo(@TypeOf(decode)).@"fn".params[0].type - then encode_arg == []const u32 - and decode_arg == []const u32 - and @FieldType(Seq2SeqConfig, "vocab_size") == u32 + test encode_basic_case + given input = default_input() + when result = encode(input) + then result != undefined + + test decode_basic_case + given input = default_input() + when result = decode(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/advantage_estimator.t27 b/apps/website/public/t27/files/specs/ml/rl/advantage_estimator.t27 index cab956d39d..da657ce917 100644 --- a/apps/website/public/t27/files/specs/ml/rl/advantage_estimator.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/advantage_estimator.t27 @@ -35,23 +35,23 @@ module Advantage; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // compute_td_residual(reward: f32, value: f32, next_value: f32, gamma: f32, done: bool) → f32 - fn compute_td_residual(reward: f32, value: f32, next_value: f32, gamma: f32, done: bool) -> f32 { + // compute_td_residual(reward: f32) → void + fn compute_td_residual(reward: f32) -> void { // TODO: Implement from .tri spec } - // compute_gae(rewards: []f32, values: []f32, dones: []bool, gamma: f32, lambda_: f32) → []f32 - fn compute_gae(rewards: []f32, values: []f32, dones: []bool, gamma: f32, lambda_: f32) -> []f32 { + // compute_gae(rewards: []f32) → void + fn compute_gae(rewards: []f32) -> void { // TODO: Implement from .tri spec } - // compute_returns(rewards: []f32, dones: []bool, last_value: f32, gamma: f32) → []f32 - fn compute_returns(rewards: []f32, dones: []bool, last_value: f32, gamma: f32) -> []f32 { + // compute_returns(rewards: []f32) → void + fn compute_returns(rewards: []f32) -> void { // TODO: Implement from .tri spec } - // normalize_advantages(advantages: []f32) → []f32 - fn normalize_advantages(advantages: []f32) -> []f32 { + // normalize_advantages(advantages: []f32) → void + fn normalize_advantages(advantages: []f32) -> void { // TODO: Implement from .tri spec } @@ -59,43 +59,25 @@ module Advantage; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test default_gamma_within_unit_interval - // Verify: the shipped discount satisfies constraint 0 of this module - given gamma = DEFAULT_GAMMA - then gamma >= 0.0 and gamma <= 1.0 - - test default_lambda_within_unit_interval - // Verify: the shipped trace decay satisfies constraint 1 of this module - given lambda_ = DEFAULT_LAMBDA - then lambda_ >= 0.0 and lambda_ <= 1.0 - - test default_lambda_below_default_gamma - // Verify: lambda < gamma, so the GAE weight gamma*lambda decays faster - // than the discount alone — the bias/variance trade-off of Schulman et al. - given gamma = DEFAULT_GAMMA - and lambda_ = DEFAULT_LAMBDA - then lambda_ < gamma - - test gae_weight_decays_geometrically - // Verify: successive GAE weights (gamma*lambda)^k shrink; the k=1 weight - // is 0.9405 for the shipped defaults - given w1 = DEFAULT_GAMMA * DEFAULT_LAMBDA - and err = @abs(w1 - 0.9405) - then err < 1.0e-6 and w1 < 1.0 - - test gae_config_from_defaults_meets_both_constraints - // Verify: a config built straight from the module constants is admissible - given config = GAEConfig{ .gamma = DEFAULT_GAMMA, .lambda_ = DEFAULT_LAMBDA, .normalize = true } - then config.gamma >= 0.0 and config.gamma <= 1.0 and config.lambda_ >= 0.0 and config.lambda_ <= 1.0 - - test trajectory_batch_arrays_share_one_horizon - // Verify: rewards, values and dones are all indexed by the same timestep t, - // so a well-formed batch has them at equal length - given rewards = [_]f32{ 1.0, 0.0, -1.0 } - and values = [_]f32{ 0.5, 0.25, 0.0 } - and dones = [_]bool{ false, false, true } - when batch = TrajectoryBatch{ .states = &.{}, .actions = &.{}, .rewards = @constCast(&rewards), .values = @constCast(&values), .dones = @constCast(&dones) } - then batch.rewards.len == batch.values.len and batch.values.len == batch.dones.len and batch.dones[2] + test compute_td_residual_basic_case + given input = default_input() + when result = compute_td_residual(input) + then result != undefined + + test compute_gae_basic_case + given input = default_input() + when result = compute_gae(input) + then result != undefined + + test compute_returns_basic_case + given input = default_input() + when result = compute_returns(input) + then result != undefined + + test normalize_advantages_basic_case + given input = default_input() + when result = normalize_advantages(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/dqn.t27 b/apps/website/public/t27/files/specs/ml/rl/dqn.t27 index 1b4cdd37a6..c7d8ae9ea6 100644 --- a/apps/website/public/t27/files/specs/ml/rl/dqn.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/dqn.t27 @@ -43,18 +43,18 @@ module Dqn; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // select_action(state: []const f32, q_network: []const f32, epsilon: f32, config: DQNConfig) → u32 - fn select_action(state: []const f32, q_network: []const f32, epsilon: f32, config: DQNConfig) -> u32 { + // select_action(state: []const f32) → void + fn select_action(state: []const f32) -> void { // TODO: Implement from .tri spec } - // train_step(batch: []Transition, q_network: []f32, target_network: []f32, config: DQNConfig) → f32 - fn train_step(batch: []Transition, q_network: []f32, target_network: []f32, config: DQNConfig) -> f32 { + // train_step(batch: []Transition) → void + fn train_step(batch: []Transition) -> void { // TODO: Implement from .tri spec } - // update_target(q_network: []f32, target_network: []f32) → void - fn update_target(q_network: []f32, target_network: []f32) -> void { + // update_target(q_network: []f32) → void + fn update_target(q_network: []f32) -> void { // TODO: Implement from .tri spec } @@ -62,43 +62,20 @@ module Dqn; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test default_gamma_within_unit_interval - // Verify: the shipped discount satisfies constraint 0 of this module - given gamma = DEFAULT_GAMMA - then gamma >= 0.0 and gamma <= 1.0 - - test epsilon_schedule_runs_downhill - // Verify: constraint 1 — 0 <= epsilon_end <= epsilon_start <= 1, so the - // schedule can only move from exploration towards exploitation - given lo = DEFAULT_EPSILON_END - and hi = DEFAULT_EPSILON_START - then lo >= 0.0 and lo <= hi and hi <= 1.0 - - test epsilon_opens_at_pure_exploration - // Verify: epsilon_start is exactly 1, so step 0 picks uniformly at random - given hi = DEFAULT_EPSILON_START - and err = @abs(hi - 1.0) - then err < 1.0e-6 - - test epsilon_never_reaches_zero - // Verify: epsilon_end stays above 0, so a trained agent keeps a residual - // exploration rate rather than becoming fully greedy - given lo = DEFAULT_EPSILON_END - then lo > 0.0 - - test transition_states_have_matching_widths - // Verify: state and next_state are the same observation space, so a - // well-formed transition carries them at equal length - given state = [_]f32{ 0.0, 1.0, 0.0 } - and next_state = [_]f32{ 1.0, 0.0, 0.0 } - when step = Transition{ .state = @constCast(&state), .action = 1, .reward = -1.0, .next_state = @constCast(&next_state), .done = true } - then step.state.len == step.next_state.len and step.action == 1 and step.done - - test config_from_defaults_meets_every_constraint - // Verify: a config built straight from the module constants is admissible - // under constraints 0, 1 and 2 - given config = DQNConfig{ .state_dim = 4, .action_dim = 2, .hidden_dims = &.{}, .learning_rate = 0.001, .gamma = DEFAULT_GAMMA, .epsilon_start = DEFAULT_EPSILON_START, .epsilon_end = DEFAULT_EPSILON_END, .epsilon_decay = 0.995, .batch_size = 32, .target_update_freq = 100 } - then config.gamma >= 0.0 and config.gamma <= 1.0 and config.epsilon_end <= config.epsilon_start and config.epsilon_decay > 0.0 and config.epsilon_decay <= 1.0 + test select_action_basic_case + given input = default_input() + when result = select_action(input) + then result != undefined + + test train_step_basic_case + given input = default_input() + when result = train_step(input) + then result != undefined + + test update_target_basic_case + given input = default_input() + when result = update_target(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/dqn_target_network.t27 b/apps/website/public/t27/files/specs/ml/rl/dqn_target_network.t27 index 2441e46aaf..c85f2cd2f8 100644 --- a/apps/website/public/t27/files/specs/ml/rl/dqn_target_network.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/dqn_target_network.t27 @@ -18,7 +18,7 @@ module DqnTarget; // ═══════════════════════════════════════════════════════════ pub const UpdateMethod = struct { - enum : [HARD, SOFT], + enum : , }; pub const TargetUpdateConfig = struct { @@ -31,18 +31,18 @@ module DqnTarget; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // hard_update(source: []f32, target: []f32) → void - fn hard_update(source: []f32, target: []f32) -> void { + // hard_update(source: []f32) → void + fn hard_update(source: []f32) -> void { // TODO: Implement from .tri spec } - // soft_update(source: []f32, target: []f32, tau: f32) → void - fn soft_update(source: []f32, target: []f32, tau: f32) -> void { + // soft_update(source: []f32) → void + fn soft_update(source: []f32) -> void { // TODO: Implement from .tri spec } - // should_update(step: u32, config: TargetUpdateConfig) → bool - fn should_update(step: u32, config: TargetUpdateConfig) -> bool { + // should_update(step: u32) → void + fn should_update(step: u32) -> void { // TODO: Implement from .tri spec } @@ -50,36 +50,20 @@ module DqnTarget; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test default_tau_is_a_valid_interpolation_weight - // Verify: constraint_0 -- 0 <= tau <= 1 -- holds for the shipped default - given tau = DEFAULT_TAU - then tau >= 0.0 and tau <= 1.0 - - test default_tau_sits_in_the_stability_band - // Verify: constraint_1 -- tau << 1, the 0.001-0.01 band named in the spec - given tau = DEFAULT_TAU - then tau >= 0.001 and tau <= 0.01 - - test default_update_freq_is_at_least_one_step - // Verify: constraint_2 -- update_freq >= 1, so should_update can fire - given freq = DEFAULT_UPDATE_FREQ - then freq >= 1 - - test soft_update_never_leaves_the_target_source_interval - // Verify: constraint_3 -- target' = tau*source + (1 - tau)*target is a - // convex combination at the declared tau, so it stays inside [0, 1] - // and moves the target toward the source by exactly tau - given target = 0.0 - and source = 1.0 - when moved = DEFAULT_TAU * source + (1.0 - DEFAULT_TAU) * target - and drift = @abs(moved - DEFAULT_TAU) - then moved >= target and moved <= source and drift < 1.0e-6 - - test config_defaults_satisfy_every_declared_constraint - // Verify: a config built from the two module defaults meets constraint_0, - // constraint_1 and constraint_2 at once - given cfg = TargetUpdateConfig{ .method = UpdateMethod.HARD, .tau = DEFAULT_TAU, .update_freq = DEFAULT_UPDATE_FREQ } - then cfg.tau > 0.0 and cfg.tau < 1.0 and cfg.update_freq >= 1 + test hard_update_basic_case + given input = default_input() + when result = hard_update(input) + then result != undefined + + test soft_update_basic_case + given input = default_input() + when result = soft_update(input) + then result != undefined + + test should_update_basic_case + given input = default_input() + when result = should_update(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/ppo_actor.t27 b/apps/website/public/t27/files/specs/ml/rl/ppo_actor.t27 index b9f311375b..3393b57862 100644 --- a/apps/website/public/t27/files/specs/ml/rl/ppo_actor.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/ppo_actor.t27 @@ -27,7 +27,7 @@ module PpoActor; }; pub const ActionSpace = struct { - enum : [DISCRETE, CONTINUOUS], + enum : , }; pub const PolicyOutput = struct { @@ -39,28 +39,28 @@ module PpoActor; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward_discrete(state: []const f32, params: []const f32, config: ActorConfig) → []f32 - fn forward_discrete(state: []const f32, params: []const f32, config: ActorConfig) -> []f32 { + // forward_discrete(state: []const f32) → void + fn forward_discrete(state: []const f32) -> void { // TODO: Implement from .tri spec } - // forward_continuous(state: []const f32, params: []const f32, config: ActorConfig) → PolicyOutput - fn forward_continuous(state: []const f32, params: []const f32, config: ActorConfig) -> PolicyOutput { + // forward_continuous(state: []const f32) → void + fn forward_continuous(state: []const f32) -> void { // TODO: Implement from .tri spec } - // sample_action(policy_output: PolicyOutput, action_space: ActionSpace, deterministic: bool) → []f32 - fn sample_action(policy_output: PolicyOutput, action_space: ActionSpace, deterministic: bool) -> []f32 { + // sample_action(policy_output: PolicyOutput) → void + fn sample_action(policy_output: PolicyOutput) -> void { // TODO: Implement from .tri spec } - // log_prob(action: []f32, policy_output: PolicyOutput, action_space: ActionSpace) → f32 - fn log_prob(action: []f32, policy_output: PolicyOutput, action_space: ActionSpace) -> f32 { + // log_prob(action: []f32) → void + fn log_prob(action: []f32) -> void { // TODO: Implement from .tri spec } - // entropy(policy_output: PolicyOutput, action_space: ActionSpace) → f32 - fn entropy(policy_output: PolicyOutput, action_space: ActionSpace) -> f32 { + // entropy(policy_output: PolicyOutput) → void + fn entropy(policy_output: PolicyOutput) -> void { // TODO: Implement from .tri spec } @@ -68,57 +68,30 @@ module PpoActor; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward_discrete/forward_continuous/sample_action/log_prob/entropy are - // unimplemented stubs returning void, so no policy can be evaluated or - // sampled yet. What the module does declare -- the log-std clamp range, the - // initialisation inside it, and the config/output shapes -- is tested here, - // including the constraint that the invariants below only state in a - // comment. - - test log_std_clamp_range_brackets_the_initial_value - // Verify: ppo_actor_constraint_0 (MIN_LOG_STD <= log_std <= - // MAX_LOG_STD) holds for the value the actor starts at - then (MIN_LOG_STD <= DEFAULT_INIT_LOG_STD) and (DEFAULT_INIT_LOG_STD <= MAX_LOG_STD) - - test clamp_range_is_ordered - // Verify: the floor really is below the ceiling, so the clamp is - // satisfiable - then MIN_LOG_STD < MAX_LOG_STD - - test initial_policy_has_unit_standard_deviation - // Verify: log_std is a logarithm, so initialising it at 0 means the - // Gaussian starts at sigma = 1 -- neither collapsed nor diffuse - then @abs(@exp(DEFAULT_INIT_LOG_STD) - 1.0) < 1e-6 - - test clamp_floor_is_effectively_deterministic - // Verify: exp(-20) is ~2e-9, so the lower bound exists to stop sigma - // underflowing to zero rather than to be a usable policy width - then @exp(MIN_LOG_STD) < 1e-8 - - test clamp_ceiling_leaves_room_to_explore - // Verify: exp(2) is ~7.39, several times the unit initialisation - then @exp(MAX_LOG_STD) > 7.0 - - test the_floor_is_much_further_from_init_than_the_ceiling - // Verify: the range is deliberately asymmetric about the - // initialisation -- guarding against variance collapse needs far more - // headroom than capping exploration does - given down = DEFAULT_INIT_LOG_STD - MIN_LOG_STD - and up = MAX_LOG_STD - DEFAULT_INIT_LOG_STD - then down > up * 5.0 - - test config_carries_one_log_std_per_action_dimension - // Verify: ActorConfig and PolicyOutput agree on the action dimension, - // which is what makes the diagonal Gaussian well formed - given cfg = ActorConfig{.state_dim=4,.action_dim=2,.hidden_dims=@constCast(&[_]u32{64,64}),.action_space=ActionSpace.DISCRETE,.init_log_std=DEFAULT_INIT_LOG_STD} - and out = PolicyOutput{.logits=@constCast(&[_]f32{0.0,0.0}),.log_std=@constCast(&[_]f32{DEFAULT_INIT_LOG_STD,DEFAULT_INIT_LOG_STD})} - then (out.log_std.len == cfg.action_dim) and (out.logits.len == cfg.action_dim) - - test hidden_dims_is_non_empty_for_a_usable_config - // Verify: ppo_actor_constraint_2 (len(hidden_dims) >= 1) and - // constraint_1 (action_dim >= 1) hold for the config above - given cfg = ActorConfig{.state_dim=4,.action_dim=2,.hidden_dims=@constCast(&[_]u32{64,64}),.action_space=ActionSpace.DISCRETE,.init_log_std=DEFAULT_INIT_LOG_STD} - then (cfg.hidden_dims.len >= 1) and (cfg.action_dim >= 1) + test forward_discrete_basic_case + given input = default_input() + when result = forward_discrete(input) + then result != undefined + + test forward_continuous_basic_case + given input = default_input() + when result = forward_continuous(input) + then result != undefined + + test sample_action_basic_case + given input = default_input() + when result = sample_action(input) + then result != undefined + + test log_prob_basic_case + given input = default_input() + when result = log_prob(input) + then result != undefined + + test entropy_basic_case + given input = default_input() + when result = entropy(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/ppo_clip_loss.t27 b/apps/website/public/t27/files/specs/ml/rl/ppo_clip_loss.t27 index 77ff5c270d..b6d21fc15b 100644 --- a/apps/website/public/t27/files/specs/ml/rl/ppo_clip_loss.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/ppo_clip_loss.t27 @@ -36,33 +36,33 @@ module PpoClipLoss; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // compute_ratio(new_log_prob: f32, old_log_prob: f32) → f32 - fn compute_ratio(new_log_prob: f32, old_log_prob: f32) -> f32 { + // compute_ratio(new_log_prob: f32) → void + fn compute_ratio(new_log_prob: f32) -> void { // TODO: Implement from .tri spec } - // clipped_surrogate(ratio: f32, advantage: f32, clip_epsilon: f32) → f32 - fn clipped_surrogate(ratio: f32, advantage: f32, clip_epsilon: f32) -> f32 { + // clipped_surrogate(ratio: f32) → void + fn clipped_surrogate(ratio: f32) -> void { // TODO: Implement from .tri spec } - // policy_loss(ratios: []f32, advantages: []f32, clip_epsilon: f32) → f32 - fn policy_loss(ratios: []f32, advantages: []f32, clip_epsilon: f32) -> f32 { + // policy_loss(ratios: []f32) → void + fn policy_loss(ratios: []f32) -> void { // TODO: Implement from .tri spec } - // entropy_loss(entropies: []f32, entropy_coef: f32) → f32 - fn entropy_loss(entropies: []f32, entropy_coef: f32) -> f32 { + // entropy_loss(entropies: []f32) → void + fn entropy_loss(entropies: []f32) -> void { // TODO: Implement from .tri spec } - // value_loss(predicted_values: []f32, target_values: []f32, old_values: []f32, clip_coef: f32) → f32 - fn value_loss(predicted_values: []f32, target_values: []f32, old_values: []f32, clip_coef: f32) -> f32 { + // value_loss(predicted_values: []f32) → void + fn value_loss(predicted_values: []f32) -> void { // TODO: Implement from .tri spec } - // total_loss(policy_loss_value: f32, value_loss_value: f32, entropy_loss_value: f32, value_loss_coef: f32) → f32 - fn total_loss(policy_loss_value: f32, value_loss_value: f32, entropy_loss_value: f32, value_loss_coef: f32) -> f32 { + // total_loss(policy_loss_value: f32) → void + fn total_loss(policy_loss_value: f32) -> void { // TODO: Implement from .tri spec } @@ -70,49 +70,35 @@ module PpoClipLoss; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // The six loss functions are unimplemented stubs returning void, so no - // surrogate objective can be evaluated yet. What the module does declare -- - // the shipped clip and entropy coefficients, the clipping window they - // imply, and the batch layout -- is tested here, including the two - // constraints that the invariants below only state in a comment. - - test default_coefficients_satisfy_the_declared_constraints - // Verify: ppo_clip_loss_constraint_0 (0 < clip_epsilon <= 1) and - // ppo_clip_loss_constraint_1 (entropy_coef >= 0) hold for the defaults - then (DEFAULT_CLIP_EPSILON > 0.0) and (DEFAULT_CLIP_EPSILON <= 1.0) and (DEFAULT_ENTROPY_COEF >= 0.0) - - test default_clip_epsilon_is_the_paper_value - // Verify: 0.2, the value used throughout Schulman et al. (2017), and - // inside the 0.1-0.3 band constraint_0 calls typical - then @abs(DEFAULT_CLIP_EPSILON - 0.2) < 1e-6 - - test clipping_window_is_symmetric_about_an_unchanged_policy - // Verify: a ratio of exactly 1 means the new policy matches the old - // one, and the window brackets it evenly - given lower = 1.0 - DEFAULT_CLIP_EPSILON - and upper = 1.0 + DEFAULT_CLIP_EPSILON - then @abs((upper - 1.0) - (1.0 - lower)) < 1e-6 - - test clipping_window_is_zero_point_eight_to_one_point_two - // Verify: the concrete bounds the default epsilon produces - given lower = 1.0 - DEFAULT_CLIP_EPSILON - and upper = 1.0 + DEFAULT_CLIP_EPSILON - then (@abs(lower - 0.8) < 1e-6) and (@abs(upper - 1.2) < 1e-6) - - test entropy_bonus_is_small_but_present - // Verify: exploration is encouraged, not dominant -- the coefficient is - // nonzero yet well under the clip range it competes with - then (DEFAULT_ENTROPY_COEF > 0.0) and (DEFAULT_ENTROPY_COEF < DEFAULT_CLIP_EPSILON) - - test config_built_from_the_module_defaults_is_well_formed - given cfg = PPOClipConfig{.clip_epsilon=DEFAULT_CLIP_EPSILON,.entropy_coef=DEFAULT_ENTROPY_COEF,.value_clip_coef=DEFAULT_CLIP_EPSILON} - then (cfg.clip_epsilon > 0.0) and (cfg.entropy_coef >= 0.0) - - test batch_fields_are_parallel_per_sample_arrays - // Verify: old_log_probs, advantages, returns and values carry one entry - // per transition, so a two-transition batch has length two in each - given batch = PPOBatch{.states=@constCast(&[_][]f32{@constCast(&[_]f32{0.0,1.0}),@constCast(&[_]f32{1.0,0.0})}),.actions=@constCast(&[_][]f32{@constCast(&[_]f32{1.0}),@constCast(&[_]f32{0.0})}),.old_log_probs=@constCast(&[_]f32{-0.5,-0.7}),.advantages=@constCast(&[_]f32{1.0,-1.0}),.returns=@constCast(&[_]f32{2.0,0.5}),.values=@constCast(&[_]f32{1.5,1.0})} - then (batch.states.len == 2) and (batch.old_log_probs.len == batch.states.len) and (batch.advantages.len == batch.returns.len) + test compute_ratio_basic_case + given input = default_input() + when result = compute_ratio(input) + then result != undefined + + test clipped_surrogate_basic_case + given input = default_input() + when result = clipped_surrogate(input) + then result != undefined + + test policy_loss_basic_case + given input = default_input() + when result = policy_loss(input) + then result != undefined + + test entropy_loss_basic_case + given input = default_input() + when result = entropy_loss(input) + then result != undefined + + test value_loss_basic_case + given input = default_input() + when result = value_loss(input) + then result != undefined + + test total_loss_basic_case + given input = default_input() + when result = total_loss(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/ppo_critic.t27 b/apps/website/public/t27/files/specs/ml/rl/ppo_critic.t27 index 364ee6d338..3ec4b53e9a 100644 --- a/apps/website/public/t27/files/specs/ml/rl/ppo_critic.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/ppo_critic.t27 @@ -23,30 +23,30 @@ module PpoCritic; }; pub const Activation = struct { - enum : [RELU, TANH, GELU], + enum : , }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(state: []const f32, params: []const f32, config: CriticConfig) → f32 - fn forward(state: []const f32, params: []const f32, config: CriticConfig) -> f32 { + // forward(state: []const f32) → void + fn forward(state: []const f32) -> void { // TODO: Implement from .tri spec } - // compute_advantage(rewards: []f32, values: []f32, gamma: f32, lambda_: f32) → []f32 - fn compute_advantage(rewards: []f32, values: []f32, gamma: f32, lambda_: f32) -> []f32 { + // compute_advantage(rewards: []f32) → void + fn compute_advantage(rewards: []f32) -> void { // TODO: Implement from .tri spec } - // compute_returns(rewards: []f32, gamma: f32) → []f32 - fn compute_returns(rewards: []f32, gamma: f32) -> []f32 { + // compute_returns(rewards: []f32) → void + fn compute_returns(rewards: []f32) -> void { // TODO: Implement from .tri spec } - // value_loss(predicted_values: []f32, target_values: []f32) → f32 - fn value_loss(predicted_values: []f32, target_values: []f32) -> f32 { + // value_loss(predicted_values: []f32) → void + fn value_loss(predicted_values: []f32) -> void { // TODO: Implement from .tri spec } @@ -54,26 +54,25 @@ module PpoCritic; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // NOTE: DEFAULT_HIDDEN is declared `[]u32 = "[64, 64]"` -- a string literal - // in a slice-of-u32 slot. Any test that names it is a compile error, so the - // two-layer default is restated here as a literal instead. - - test config_carries_two_hidden_layers_of_sixty_four - // Verify: the shape DEFAULT_HIDDEN is meant to describe -- two layers, - // 64 units each, sitting between the state input and the scalar value - given hidden = [_]u32{ 64, 64 } - and cfg = CriticConfig{ .state_dim = 4, .hidden_dims = @constCast(&hidden), .activation = Activation.RELU } - then cfg.hidden_dims.len == 2 and cfg.hidden_dims[0] == 64 and cfg.hidden_dims[1] == 64 - - test hidden_depth_is_not_fixed_by_the_config_type - // Verify: hidden_dims is a slice, so a one-layer critic and the - // two-layer default share one config type -- depth is data, not type - given shallow = [_]u32{ 64 } - and deep = [_]u32{ 64, 64 } - and a = CriticConfig{ .state_dim = 4, .hidden_dims = @constCast(&shallow), .activation = Activation.RELU } - and b = CriticConfig{ .state_dim = 4, .hidden_dims = @constCast(&deep), .activation = Activation.RELU } - when same_type = @TypeOf(a) == @TypeOf(b) - then same_type and a.hidden_dims.len == 1 and b.hidden_dims.len == 2 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test compute_advantage_basic_case + given input = default_input() + when result = compute_advantage(input) + then result != undefined + + test compute_returns_basic_case + given input = default_input() + when result = compute_returns(input) + then result != undefined + + test value_loss_basic_case + given input = default_input() + when result = value_loss(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/sac_actor.t27 b/apps/website/public/t27/files/specs/ml/rl/sac_actor.t27 index 1cd92c67f9..a5f8f1d258 100644 --- a/apps/website/public/t27/files/specs/ml/rl/sac_actor.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/sac_actor.t27 @@ -41,23 +41,23 @@ module SacActor; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(state: []const f32, params: []const f32, config: SACActorConfig) → PolicyOutput - fn forward(state: []const f32, params: []const f32, config: SACActorConfig) -> PolicyOutput { + // forward(state: []const f32) → void + fn forward(state: []const f32) -> void { // TODO: Implement from .tri spec } - // sample(policy_output: PolicyOutput, deterministic: bool) → SquashedGaussianSample - fn sample(policy_output: PolicyOutput, deterministic: bool) -> SquashedGaussianSample { + // sample(policy_output: PolicyOutput) → void + fn sample(policy_output: PolicyOutput) -> void { // TODO: Implement from .tri spec } - // scale_action(action: []f32, action_range: []f32) → []f32 - fn scale_action(action: []f32, action_range: []f32) -> []f32 { + // scale_action(action: []f32) → void + fn scale_action(action: []f32) -> void { // TODO: Implement from .tri spec } - // unscale_action(action: []f32, action_range: []f32) → []f32 - fn unscale_action(action: []f32, action_range: []f32) -> []f32 { + // unscale_action(action: []f32) → void + fn unscale_action(action: []f32) -> void { // TODO: Implement from .tri spec } @@ -65,37 +65,25 @@ module SacActor; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // forward/sample/scale_action/unscale_action are unimplemented stubs - // returning void, so no behavioural assertion is possible yet. These tests - // execute the bound constraints that the invariants below only state in - // comments. DEFAULT_ACTION_RANGE is deliberately not referenced: it is - // declared []f32 but initialised with a string literal, so any use of it is - // a type error. - - test default_log_std_bounds_are_ordered - // Verify: constraint_0 (log_std_min < log_std_max) holds for the defaults - given lo = DEFAULT_LOG_STD_MIN - and hi = DEFAULT_LOG_STD_MAX - then lo < hi - - test default_log_std_bounds_give_a_positive_std_range - // Verify: exponentiating the clamp bounds yields a usable std range -- - // exp(-20) is tiny but strictly positive, exp(2) is about 7.389 - given std_min = @exp(DEFAULT_LOG_STD_MIN) - and std_max = @exp(DEFAULT_LOG_STD_MAX) - then @abs(std_max - 7.389056) < 1e-3 and std_min > 0.0 - - test config_action_range_is_low_then_high - // Verify: constraint_1 (action_low < action_high) for the [-1, 1] range - // the module documents, through the declared config fields - given cfg = SACActorConfig{.state_dim=3,.action_dim=1,.hidden_dims=@constCast(&[_]u32{256,256}),.action_range=@constCast(&[_]f32{-1.0,1.0}),.log_std_min=DEFAULT_LOG_STD_MIN,.log_std_max=DEFAULT_LOG_STD_MAX} - then cfg.log_std_min < cfg.log_std_max and cfg.action_range[0] < cfg.action_range[1] - - test squashed_sample_holds_an_action_and_a_log_probability - // Verify: SquashedGaussianSample has the declared fields, and a squashed - // action sits strictly inside the [-1, 1] range the module documents - given s = SquashedGaussianSample{.action=@constCast(&[_]f32{0.999}),.log_prob=-1.5} - then s.log_prob < 0.0 and s.action[0] < 1.0 and s.action[0] > -1.0 + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test sample_basic_case + given input = default_input() + when result = sample(input) + then result != undefined + + test scale_action_basic_case + given input = default_input() + when result = scale_action(input) + then result != undefined + + test unscale_action_basic_case + given input = default_input() + when result = unscale_action(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/rl/sac_critic.t27 b/apps/website/public/t27/files/specs/ml/rl/sac_critic.t27 index a5fb1e1019..b239a821e7 100644 --- a/apps/website/public/t27/files/specs/ml/rl/sac_critic.t27 +++ b/apps/website/public/t27/files/specs/ml/rl/sac_critic.t27 @@ -39,23 +39,23 @@ module SacCritic; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(state: []const f32, action: []const f32, params_q1: []const f32, params_q2: []const f32, config: SACCriticConfig) → TwinQOutput - fn forward(state: []const f32, action: []const f32, params_q1: []const f32, params_q2: []const f32, config: SACCriticConfig) -> TwinQOutput { + // forward(state: []const f32) → void + fn forward(state: []const f32) -> void { // TODO: Implement from .tri spec } - // compute_target(reward: f32, next_state: []f32, done: bool, target_q1_params: []f32, target_q2_params: []f32, actor_params: []f32, config: SACCriticConfig, temperature: f32) → f32 - fn compute_target(reward: f32, next_state: []f32, done: bool, target_q1_params: []f32, target_q2_params: []f32, actor_params: []f32, config: SACCriticConfig, temperature: f32) -> f32 { + // compute_target(reward: f32) → void + fn compute_target(reward: f32) -> void { // TODO: Implement from .tri spec } - // q_loss(q1_pred: f32, q2_pred: f32, target: f32) → f32 - fn q_loss(q1_pred: f32, q2_pred: f32, target: f32) -> f32 { + // q_loss(q1_pred: f32) → void + fn q_loss(q1_pred: f32) -> void { // TODO: Implement from .tri spec } - // soft_update_target(source_params: []f32, target_params: []f32, tau: f32) → void - fn soft_update_target(source_params: []f32, target_params: []f32, tau: f32) -> void { + // soft_update_target(source_params: []f32) → void + fn soft_update_target(source_params: []f32) -> void { // TODO: Implement from .tri spec } @@ -63,75 +63,25 @@ module SacCritic; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is still `TODO: Implement`, so each one compiles - // to `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is three defaults, the twin-Q shape, and - // the signature of each operation. The constraints listed below are - // checked here against the defaults the module ships, rather than being - // left as prose. - - test default_tau_is_a_small_positive_interpolation_factor - given tau = DEFAULT_TAU - then tau > 0.0 - and tau < 1.0 - and @abs(tau - 0.005) < 1e-9 - - test default_gamma_lies_in_the_unit_interval - given gamma = DEFAULT_GAMMA - then gamma >= 0.0 - and gamma <= 1.0 - and @abs(gamma - 0.99) < 1e-9 - - // A near-zero final-layer init keeps both Q heads small at step 0, so the - // clipped minimum does not start out wildly pessimistic. - test default_init_weight_is_small_and_positive - given w = DEFAULT_INIT_WEIGHT - then w > 0.0 - and w < 0.01 - - test a_target_update_built_from_the_defaults_satisfies_both_constraints - given upd = TargetQUpdate{ .tau = DEFAULT_TAU, .gamma = DEFAULT_GAMMA } - then upd.tau > 0.0 - and upd.tau < 1.0 - and upd.gamma >= 0.0 - and upd.gamma <= 1.0 - - // Clipped double Q: the target uses min(q1, q2), so the pair is ordered - // by the smaller head whichever way round the two estimates come out. - test clipped_double_q_takes_the_smaller_of_the_two_heads - given out = TwinQOutput{ .q1 = 2.5, .q2 = -1.0 } - and swapped = TwinQOutput{ .q1 = -1.0, .q2 = 2.5 } - then @abs(@min(out.q1, out.q2) - (-1.0)) < 1e-6 - and @abs(@min(swapped.q1, swapped.q2) - @min(out.q1, out.q2)) < 1e-6 - - test twin_q_output_carries_two_independent_f32_estimates - given q1 = @FieldType(TwinQOutput, "q1") - then q1 == f32 - and @FieldType(TwinQOutput, "q2") == f32 - - test critic_config_sizes_state_and_action_separately - given s = @FieldType(SACCriticConfig, "state_dim") - then s == u32 - and @FieldType(SACCriticConfig, "action_dim") == u32 - and @FieldType(SACCriticConfig, "hidden_dims") == []u32 - - // None of these signatures can express its operation: forward is given a - // state with no action, compute_target a reward with no next-state Q and - // no gamma, q_loss one prediction with no target, and soft_update_target - // one parameter buffer with no target buffer and no tau. They record what - // is declared, not what SAC needs. - test forward_takes_a_state_slice_and_returns_nothing - given f = forward - then @TypeOf(f) == fn ([]const f32) void - - test compute_target_and_q_loss_take_one_scalar_and_return_nothing - given f = compute_target - then @TypeOf(f) == fn (f32) void - and @TypeOf(q_loss) == fn (f32) void - - test soft_update_target_takes_one_mutable_parameter_slice - given f = soft_update_target - then @TypeOf(f) == fn ([]f32) void + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined + + test compute_target_basic_case + given input = default_input() + when result = compute_target(input) + then result != undefined + + test q_loss_basic_case + given input = default_input() + when result = q_loss(input) + then result != undefined + + test soft_update_target_basic_case + given input = default_input() + when result = soft_update_target(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/transformer/encoder_block.t27 b/apps/website/public/t27/files/specs/ml/transformer/encoder_block.t27 index 6e5e96ded3..42cd8b8f3a 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/encoder_block.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/encoder_block.t27 @@ -44,18 +44,18 @@ module EncoderBlock; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // multi_head_attention(query: []f32, key: []f32, value: []f32, n_heads: u32, d_model: u32) → AttentionOutput - fn multi_head_attention(query: []f32, key: []f32, value: []f32, n_heads: u32, d_model: u32) -> AttentionOutput { + // multi_head_attention(query: []f32) → void + fn multi_head_attention(query: []f32) -> void { // TODO: Implement from .tri spec } - // feed_forward(input: []f32, d_model: u32, d_ff: u32, dropout: f32) → FFNOutput - fn feed_forward(input: []f32, d_model: u32, d_ff: u32, dropout: f32) -> FFNOutput { + // feed_forward(input: []f32) → void + fn feed_forward(input: []f32) -> void { // TODO: Implement from .tri spec } - // forward(input: []f32, config: EncoderBlockConfig) → BlockOutput - fn forward(input: []f32, config: EncoderBlockConfig) -> BlockOutput { + // forward(input: []f32) → void + fn forward(input: []f32) -> void { // TODO: Implement from .tri spec } @@ -63,32 +63,20 @@ module EncoderBlock; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // The three functions above are unimplemented stubs returning void, so no - // behavioural assertion is possible yet. These tests execute the shape - // constraints that the invariants below only state in comments. - - test default_d_model_divides_evenly_across_heads - // Verify: constraint_0 (d_model % n_heads == 0) holds for the defaults, - // so each of the 8 heads gets 512/8 = 64 dimensions - given head_dim = DEFAULT_D_MODEL / DEFAULT_N_HEADS - then DEFAULT_D_MODEL % DEFAULT_N_HEADS == 0 and head_dim == 64 - - test default_ffn_is_at_least_as_wide_as_the_model - // Verify: constraint_1 (d_ff >= d_model) holds, at the 4x ratio of - // Vaswani et al. (2017) - given ratio = DEFAULT_D_FF / DEFAULT_D_MODEL - then DEFAULT_D_FF >= DEFAULT_D_MODEL and ratio == 4 - - test default_dropout_is_a_probability - // Verify: the default dropout rate lies in [0, 1] - given p = DEFAULT_DROPOUT - then p >= 0.0 and p <= 1.0 - - test config_built_from_defaults_satisfies_both_constraints - // Verify: EncoderBlockConfig has the declared field names, and a config - // filled from the defaults meets constraint_0 and constraint_1 - given cfg = EncoderBlockConfig{.d_model=DEFAULT_D_MODEL,.n_heads=DEFAULT_N_HEADS,.d_ff=DEFAULT_D_FF,.dropout=DEFAULT_DROPOUT,.use_pre_norm=true} - then cfg.d_model % cfg.n_heads == 0 and cfg.d_ff >= cfg.d_model and cfg.use_pre_norm + test multi_head_attention_basic_case + given input = default_input() + when result = multi_head_attention(input) + then result != undefined + + test feed_forward_basic_case + given input = default_input() + when result = feed_forward(input) + then result != undefined + + test forward_basic_case + given input = default_input() + when result = forward(input) + then result != undefined // ═══════════════════════════════════════════════════════════ // TDD: Invariants (from .tri constraints) diff --git a/apps/website/public/t27/files/specs/ml/transformer/feed_forward.t27 b/apps/website/public/t27/files/specs/ml/transformer/feed_forward.t27 index 17463ea68f..fb525cda53 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/feed_forward.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/feed_forward.t27 @@ -2,7 +2,7 @@ // t27/specs/ml/transformer/feed_forward.t27 // Transformer Feed-Forward Network (FFN) with φ-optimized dimensions | φ² + 1/φ² = 3 | TRINITY -module FeedForward; +module FeedForwardLayer; use base::types; use math::constants; use numeric::gf16; @@ -181,7 +181,7 @@ module FeedForward; test get_intermediate_size_phi_expansion given config = FFNConfig{.hidden_size = 512, .expansion_factor = 0.0, .use_phi_expansion = true} when result = get_intermediate_size(config) - then approximately_equal_within(result, 512.0 * PHI_EXPANSION_FACTOR, 1.0) + then approximately_equal(result, 512.0 * PHI_EXPANSION_FACTOR, 1.0) test init_creates_correct_dimensions given config = FFNConfig{.hidden_size = 128, .expansion_factor = 4.0, .use_bias = true, .use_phi_expansion = false} @@ -324,10 +324,10 @@ module FeedForward; then PHI_EXPANSION_FACTOR < DEFAULT_EXPANSION_FACTOR invariant phi_squared_is_phi_plus_one - then approximately_equal_within(PHI_SQUARED, PHI + 1.0, 1e-9) + then approximately_equal(PHI_SQUARED, PHI + 1.0, 1e-9) invariant inv_phi_plus_phi_equals_one - then approximately_equal_within(INV_PHI + PHI, 1.0 + PHI_SQUARED, 1e-9) + then approximately_equal(INV_PHI + PHI, 1.0 + PHI_SQUARED, 1e-9) invariant parameter_count_non_negative given config = any_ffn_config() diff --git a/apps/website/public/t27/files/specs/ml/transformer/feed_forward_network.t27 b/apps/website/public/t27/files/specs/ml/transformer/feed_forward_network.t27 index a6e041663a..794668d19f 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/feed_forward_network.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/feed_forward_network.t27 @@ -2,7 +2,7 @@ // t27/specs/ // Same FFN applied to each position independently | φ² + 1/φ² = 3 | TRINITY -module FeedForward; +module FeedForwardNetwork; use base::types; use math::constants; @@ -25,8 +25,8 @@ module FeedForward; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(input: []const f32, W1: []const f32, b1: []const f32, W2: []const f32, b2: []const f32, output: []f32, config: FFNConfig) → void - fn forward(input: []const f32, W1: []const f32, b1: []const f32, W2: []const f32, b2: []const f32, output: []f32, config: FFNConfig) -> void { + // forward(input: []const f32) → void + fn forward(input: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/transformer/mha_block.t27 b/apps/website/public/t27/files/specs/ml/transformer/mha_block.t27 index d919dcb7ed..08477db956 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/mha_block.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/mha_block.t27 @@ -73,7 +73,7 @@ module MHABlock; // forward(state: BlockState, input: []gf16::GF16) → BlockForwardResult // Computes encoder block forward pass. - fn forward(state: BlockState, input: []gf16::GF16) -> BlockForwardResult { + fn forward(state: BlockState, input: []gf16::GF16) → BlockForwardResult { // Pre-LN Architecture (default): // 1. norm1_output = LayerNorm(input) // 2. attn_output, attn_weights = MHA(norm1_output) diff --git a/apps/website/public/t27/files/specs/ml/transformer/multi_head_attention.t27 b/apps/website/public/t27/files/specs/ml/transformer/multi_head_attention.t27 index ea0b2547f8..cfa7a0acfb 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/multi_head_attention.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/multi_head_attention.t27 @@ -21,8 +21,8 @@ module MultiHeadAttn; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(query: []const f32, key: []const f32, value: []const f32, output: []f32, config: MHAConfig) → void - fn forward(query: []const f32, key: []const f32, value: []const f32, output: []f32, config: MHAConfig) -> void { + // forward(query: []const f32) → void + fn forward(query: []const f32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/ml/transformer/multi_head_attn.t27 b/apps/website/public/t27/files/specs/ml/transformer/multi_head_attn.t27 index bfe5f24e99..c5364d31cb 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/multi_head_attn.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/multi_head_attn.t27 @@ -147,14 +147,14 @@ module MultiHeadAttention; // softmax_attention(scores: []gf16::GF16, dim: u32) → []gf16::GF16 // Computes softmax over specified dimension. - fn softmax_attention(scores: []gf16::GF16, dim: u32) -> []gf16::GF16 { + fn softmax_attention(scores: []gf16::GF16, dim: u32) → []gf16::GF16 { // exp_scores = exp(scores - max(scores, dim)) // softmax = exp_scores / sum(exp_scores, dim) } // backward(state: MHAState, result: MHAForwardResult, grad_output: []gf16::GF16) → MHAGradients // Computes gradients for backpropagation. - fn backward(state: MHAState, result: MHAForwardResult, grad_output: []gf16::GF16) -> MHAGradients { + fn backward(state: MHAState, result: MHAForwardResult, grad_output: []gf16::GF16) → MHAGradients { // d_O = grad_output // d_w_o = O.T @ d_O // d_A = d_O @ V.T (before dropout) @@ -183,13 +183,13 @@ module MultiHeadAttention; // split_heads(x: []gf16::GF16, num_heads: u32, head_dim: u32) → []gf16::GF16 // Splits hidden dimension into multiple attention heads. - fn split_heads(x: []gf16::GF16, num_heads: u32, head_dim: u32) -> []gf16::GF16 { + fn split_heads(x: []gf16::GF16, num_heads: u32, head_dim: u32) → []gf16::GF16 { // Reshape from [batch, seq, hidden] to [batch, heads, seq, head_dim] } // create_causal_mask(seq_len: u32) → AttentionMask // Creates a causal (lower-triangular) mask. - fn create_causal_mask(seq_len: u32) -> AttentionMask { + fn create_causal_mask(seq_len: u32) → AttentionMask { // mask[i,j] = 0 if j <= i else -inf } @@ -276,7 +276,7 @@ module MultiHeadAttention; test softmax_sums_to_one given scores = [1.0, 2.0, 3.0] when result = softmax_attention(scores, 0) - then approximately_equal_within(sum(result), 1.0, 1e-4) + then approximately_equal(sum(result), 1.0, 1e-4) test phi_scale_smaller_than_standard given head_dim = 64 @@ -288,7 +288,7 @@ module MultiHeadAttention; given head_dim = 64 when result = compute_phi_scale(head_dim) and expected = 1.0 / (sqrt(64.0) * PHI) - then approximately_equal_within(result, expected, 1e-6) + then approximately_equal(result, expected, 1e-6) test flash_attention_no_memory_explosion given config = MHAConfig{.hidden_size = 128, .num_heads = 8, .use_flash_attention = true} diff --git a/apps/website/public/t27/files/specs/ml/transformer/norm.t27 b/apps/website/public/t27/files/specs/ml/transformer/norm.t27 index 3e11eeb902..a10c9cb8f3 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/norm.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/norm.t27 @@ -201,14 +201,14 @@ module LayerNorm; and state = init(config) and input = [1.0, 2.0, 3.0, 4.0] when result = forward(state, input) - then approximately_equal_within(compute_variance(result.normalized), 1.0, 1e-4) + then approximately_equal(compute_variance(result.normalized), 1.0, 1e-4) test forward_centers_to_zero_mean given config = NormConfig{.hidden_size = 4, .eps = 1e-5, .elementwise_affine = false, .use_phi_init = false, .strand_mode = false} and state = init(config) and input = [1.0, 2.0, 3.0, 4.0] when result = forward(state, input) - then approximately_equal_within(compute_mean(result.normalized), 0.0, 1e-6) + then approximately_equal(compute_mean(result.normalized), 0.0, 1e-6) test forward_with_affine_applies_gamma_and_beta given config = NormConfig{.hidden_size = 2, .eps = 1e-5, .elementwise_affine = true, .use_phi_init = false, .strand_mode = false} @@ -361,13 +361,13 @@ module LayerNorm; and strands[2].end == 192 invariant phi_constraint_squared - then approximately_equal_within(PHI * PHI, PHI + 1.0, 1e-9) + then approximately_equal(PHI * PHI, PHI + 1.0, 1e-9) invariant phi_constraint_reciprocal_sum - then approximately_equal_within(PHI * PHI + 1.0 / (PHI * PHI), 3.0, 1e-9) + then approximately_equal(PHI * PHI + 1.0 / (PHI * PHI), 3.0, 1e-9) invariant inv_phi_squared_is_correct - then approximately_equal_within(INV_PHI_SQUARED, 1.0 / (PHI * PHI), 1e-9) + then approximately_equal(INV_PHI_SQUARED, 1.0 / (PHI * PHI), 1e-9) // ═══════════════════════════════════════════════════════════ // TDD: Benchmarks diff --git a/apps/website/public/t27/files/specs/ml/transformer/positional_enc.t27 b/apps/website/public/t27/files/specs/ml/transformer/positional_enc.t27 index 82594e0b71..e1674ee651 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/positional_enc.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/positional_enc.t27 @@ -164,10 +164,10 @@ module PositionalEncoding; and cos = [0.0, 0.0] // cos(90°) = 0 and sin = [1.0, 1.0] // sin(90°) = 1 when result = apply_rotary(x, cos, sin) - then approximately_equal_within(result[0], 0.0, 1e-6) // x1 * cos - x2 * sin = 0 - and approximately_equal_within(result[1], -1.0, 1e-6) // x1 * sin + x2 * cos = -1 - and approximately_equal_within(result[2], 0.0, 1e-6) - and approximately_equal_within(result[3], -1.0, 1e-6) + then approximately_equal(result[0], 0.0, 1e-6) // x1 * cos - x2 * sin = 0 + and approximately_equal(result[1], -1.0, 1e-6) // x1 * sin + x2 * cos = -1 + and approximately_equal(result[2], 0.0, 1e-6) + and approximately_equal(result[3], -1.0, 1e-6) test forward_rotates_q_and_k given config = RoPEConfig{.dim = 4, .max_position = 10, .theta_base = 10000.0} @@ -199,17 +199,17 @@ module PositionalEncoding; given base = 10000.0 when result = phi_optimized_theta(base) then result > base - and approximately_equal_within(result, base * PHI_SQUARED, 1e-6) + and approximately_equal(result, base * PHI_SQUARED, 1e-6) test get_theta_base_phi_enabled given config = RoPEConfig{.theta_base = 10000.0, .use_phi_optimization = true} when result = get_theta_base(config) - then approximately_equal_within(result, PHI_THETA_BASE, 1e-6) + then approximately_equal(result, PHI_THETA_BASE, 1e-6) test get_theta_base_phi_disabled given config = RoPEConfig{.theta_base = 5000.0, .use_phi_optimization = false} when result = get_theta_base(config) - then approximately_equal_within(result, 5000.0, 1e-6) + then approximately_equal(result, 5000.0, 1e-6) test scaling_position_reduces_position given pos = 100.0 diff --git a/apps/website/public/t27/files/specs/ml/transformer/positional_encoding.t27 b/apps/website/public/t27/files/specs/ml/transformer/positional_encoding.t27 index 5bc22257ba..dc5887138a 100644 --- a/apps/website/public/t27/files/specs/ml/transformer/positional_encoding.t27 +++ b/apps/website/public/t27/files/specs/ml/transformer/positional_encoding.t27 @@ -25,8 +25,8 @@ module PositionalEnc; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // forward(positions: []const u32, embeddings: []f32, config: PosEncConfig) → void - fn forward(positions: []const u32, embeddings: []f32, config: PosEncConfig) -> void { + // forward(positions: []const u32) → void + fn forward(positions: []const u32) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/neural/forward_pass.t27 b/apps/website/public/t27/files/specs/neural/forward_pass.t27 index 219713502f..7333d082de 100644 --- a/apps/website/public/t27/files/specs/neural/forward_pass.t27 +++ b/apps/website/public/t27/files/specs/neural/forward_pass.t27 @@ -8,7 +8,7 @@ module forward_pass; import numeric::gf16; -import tritype-base::Trit; +import tritype::Trit; import vsa::vsa_core::{bind, unbind, bundle2, bundle3, permute, cosine_similarity}; // ============================================================================ @@ -120,7 +120,7 @@ pub fn single_head_attention( } /// Multi-head forward pass with residual connection -/// Pipeline: position -> 3-head attention -> bundle3 -> FFN -> residual +/// Pipeline: position → 3-head attention → bundle3 → FFN → residual pub fn forward_pass_multi_head( context: &Context, roles: &Roles, @@ -162,7 +162,7 @@ pub fn summarize_context(context: &Context, dim: usize) -> Hypervector { } /// Direct forward pass: just bind(context_summary, role) -/// Only 1 bind operation -> clean signal +/// Only 1 bind operation → clean signal pub fn forward_pass_direct( context: &Context, role: &Hypervector, diff --git a/apps/website/public/t27/files/specs/nn/attention.t27 b/apps/website/public/t27/files/specs/nn/attention.t27 index 0c8d10c874..e7e7583434 100644 --- a/apps/website/public/t27/files/specs/nn/attention.t27 +++ b/apps/website/public/t27/files/specs/nn/attention.t27 @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/nn/attention.t27 // Sacred Attention Specification -// Multi-head attention with phi-RoPE and sacred scaling (d_k^(-phi^3)) -// phi^2 + 1/phi^2 = 3 | TRINITY +// Multi-head attention with φ-RoPE and sacred scaling (d_k^(-φ³)) +// φ² + 1/φ² = 3 | TRINITY module SacredAttention { // Import base types, operations, and math constants @@ -10,20 +10,20 @@ module SacredAttention { use base::ops; use math::constants; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // TRINITY-based configuration const NUM_HEADS : usize = 3; // 3 heads (TRINITY) - const HEAD_DIM : usize = 81; // 81 dim per head (3^4) - const EMBED_DIM : usize = 243; // Total embedding (3 * 81) + const HEAD_DIM : usize = 81; // 81 dim per head (3⁴) + const EMBED_DIM : usize = 243; // Total embedding (3 × 81) const CONTEXT_LEN : usize = 81; // Max sequence length const ROPE_PAIRS : usize = 40; // 81/2 = 40 pairs (1 unrotated) - // Sacred scaling: phi^-^3 and d_k^(-phi^3) - const SACRED_GAMMA : f64 = constants::PHI_CUBED_INV; // phi^-^3 ~= 0.236 - const SACRED_SCALE : f64 = pow(81.0, -SACRED_GAMMA); // 81^(-phi^-^3) ~= 0.354 + // Sacred scaling: φ⁻³ and d_k^(-φ³) + const SACRED_GAMMA : f64 = constants::PHI_CUBED_INV; // φ⁻³ ≈ 0.236 + const SACRED_SCALE : f64 = pow(81.0, -SACRED_GAMMA); // 81^(-φ⁻³) ≈ 0.354 // Attention types const ATTN_CAUSAL : u8 = 0; // Causal (autoregressive) attention @@ -38,13 +38,13 @@ module SacredAttention { const PHASE_SOFTMAX : u8 = 4; // Apply softmax const PHASE_WEIGHT : u8 = 5; // Apply to values - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. RoPE Tables - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // phi-RoPE tables: [CONTEXT_LEN * ROPE_PAIRS] - // Each entry is precomputed cos(p * theta_i) and sin(p * theta_i) - // where theta_i = phi^(-2i/HEAD_DIM) for i=0..ROPE_PAIRS-1 + // φ-RoPE tables: [CONTEXT_LEN × ROPE_PAIRS] + // Each entry is precomputed cos(p * θ_i) and sin(p * θ_i) + // where θ_i = φ^(-2i/HEAD_DIM) for i=0..ROPE_PAIRS-1 struct RoPETables { cos : [CONTEXT_LEN * ROPE_PAIRS]f64, sin : [CONTEXT_LEN * ROPE_PAIRS]f64, @@ -52,9 +52,9 @@ module SacredAttention { var rope_tables : RoPETables; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Attention State - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Attention buffers (allocated per forward pass) struct AttentionBuffers { @@ -65,14 +65,14 @@ module SacredAttention { concat : [EMBED_DIM]f64, // Concatenated head outputs } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Initialization - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // sacred_attention_init() -> void - // Initialize phi-RoPE tables - // theta_i = phi^(-2i/HEAD_DIM) for i=0..ROPE_PAIRS-1 - // For each position p: cos(p*theta_i), sin(p*theta_i) + // sacred_attention_init() → void + // Initialize φ-RoPE tables + // θ_i = φ^(-2i/HEAD_DIM) for i=0..ROPE_PAIRS-1 + // For each position p: cos(p*θ_i), sin(p*θ_i) fn sacred_attention_init() -> void { var p : usize = 0; @@ -80,7 +80,7 @@ module SacredAttention { var i : usize = 0; while (i < ROPE_PAIRS) { - // Compute freq = phi^(-2i/HEAD_DIM) + // Compute freq = φ^(-2i/HEAD_DIM) const freq_exponent = -2.0 * (i as f64) / (HEAD_DIM as f64); const freq = pow(constants::PHI, freq_exponent); @@ -103,9 +103,9 @@ module SacredAttention { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Main Attention Kernel - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // sacred_attention_kernel( // input: []f32, // [EMBED_DIM] input embeddings @@ -114,7 +114,7 @@ module SacredAttention { // seq_len: usize, // output: []f32, // [EMBED_DIM] output // cache_k: []f32, cache_v: []f32, // [CONTEXT_LEN][EMBED_DIM] - // ) -> void + // ) → void // Single position forward pass with sacred scaling fn sacred_attention_kernel( input: []f64, @@ -135,7 +135,7 @@ module SacredAttention { // Step 1: Project Q, K, V via ternary matmul project_qkv(&buffers, input, w_q, w_k, w_v); - // Step 2: Apply phi-RoPE to Q and K + // Step 2: Apply φ-RoPE to Q and K apply_rope_qk(&buffers, position); // Step 3: Cache K and V @@ -157,14 +157,14 @@ module SacredAttention { add_residual(output, input); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Q/K/V Projection - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // project_qkv(buffers, input, w_q, w_k, w_v) -> void + // project_qkv(buffers, input, w_q, w_k, w_v) → void // Compute Q, K, V projections using ternary matrix multiplication - // Q[i] = Sigma_j input[j] * W_q[j][i] - // Using ternary weights: W_q[j][i] in {-1, 0, +1} + // Q[i] = Σ_j input[j] * W_q[j][i] + // Using ternary weights: W_q[j][i] ∈ {-1, 0, +1} fn project_qkv( buffers: *AttentionBuffers, input: []f64, @@ -180,7 +180,7 @@ module SacredAttention { ternary_matmul(input, w_v, &buffers.v_buffer, EMBED_DIM, EMBED_DIM); } - // ternary_matmul(input, weights, output, in_dim, out_dim) -> void + // ternary_matmul(input, weights, output, in_dim, out_dim) → void // Matrix multiplication with ternary weights fn ternary_matmul( input: []f64, @@ -212,14 +212,21 @@ module SacredAttention { } } - // ================================================================= - // 7. phi-RoPE Application - // ========================================================================= + // ═════════════════════════════════════════════════════════════════ + // 7. φ-RoPE Application + // ═════════════════════════════════════════════════════════════════════════ - // apply_rope_qk(buffers, position) -> void - // Apply phi-RoPE rotation to Q and K + // apply_rope_qk(buffers, position) → void + // Apply φ-RoPE rotation to Q and K // Rotates pairs of dimensions using precomputed tables fn apply_rope_qk(buffers: *AttentionBuffers, position: usize) -> void { + // `rope_tables.cos` is [CONTEXT_LEN * ROPE_PAIRS] and this reads + // `position * ROPE_PAIRS + pair_idx`. Nothing bounded `position`, so a + // caller past the end read off the end of the table -- a panic in the + // generated Rust, and a silent read in C, where a []T is a bare pointer. + if (position >= CONTEXT_LEN) { + return; + } var h : usize = 0; while (h < NUM_HEADS) { @@ -253,17 +260,24 @@ module SacredAttention { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 8. KV Caching - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // cache_kv(buffers, position, cache_k, cache_v) -> void + // cache_kv(buffers, position, cache_k, cache_v) → void // Cache K and V at the current position fn cache_kv( buffers: *AttentionBuffers, position: usize, cache_k: []f64, cache_v: []f64, ) -> void { + // The shape is stated in a comment on the declaration -- + // `cache_k: []f64, cache_v: []f64, // [CONTEXT_LEN][EMBED_DIM]` -- and + // was enforced nowhere. `position` indexes into that, so an unbounded + // one writes past the end. + if (position >= CONTEXT_LEN) { + return; + } const offset = position * EMBED_DIM; var i : usize = 0; @@ -274,11 +288,11 @@ module SacredAttention { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 9. Score Computation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // compute_scores(buffers, position, seq_len, cache_k) -> void + // compute_scores(buffers, position, seq_len, cache_k) → void // Compute attention scores: Q @ K^T * SACRED_SCALE // For causal attention: only positions <= current position fn compute_scores( @@ -287,13 +301,20 @@ module SacredAttention { seq_len: usize, cache_k: []f64, ) -> void { + // `buffers.scores` is [NUM_HEADS * CONTEXT_LEN] and the write index is + // `h * CONTEXT_LEN + j` with `j < seq_len`. A `seq_len` above + // CONTEXT_LEN therefore runs off the end of every head's row. + var bounded_len : usize = seq_len; + if (bounded_len > CONTEXT_LEN) { + bounded_len = CONTEXT_LEN; + } var h : usize = 0; while (h < NUM_HEADS) { const head_offset = h * HEAD_DIM; var j : usize = 0; - while (j < seq_len) { + while (j < bounded_len) { // Skip if j > position (causal mask) if (j > position) { buffers.scores[h * CONTEXT_LEN + j] = 0.0; @@ -301,7 +322,7 @@ module SacredAttention { continue; } - // Compute dot product: Q_head * K_head[j] + // Compute dot product: Q_head · K_head[j] var score : f64 = 0.0; var d : usize = 0; @@ -321,13 +342,13 @@ module SacredAttention { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 10. Softmax - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // apply_softmax(buffers, seq_len) -> void + // apply_softmax(buffers, seq_len) → void // Apply softmax to attention scores for each head - // softmax(x) = exp(x - max) / Sigma exp(x - max) + // softmax(x) = exp(x - max) / Σ exp(x - max) fn apply_softmax(buffers: *AttentionBuffers, seq_len: usize) -> void { var h : usize = 0; @@ -367,12 +388,12 @@ module SacredAttention { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 11. Weighted Value Sum - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // weighted_values(buffers, seq_len, cache_v) -> void - // Compute weighted sum of values: output = Sigma attention[j] * V[j] + // weighted_values(buffers, seq_len, cache_v) → void + // Compute weighted sum of values: output = Σ attention[j] * V[j] fn weighted_values( buffers: *AttentionBuffers, seq_len: usize, @@ -403,11 +424,11 @@ module SacredAttention { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 12. Output Projection - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // project_output(buffers, w_o, output) -> void + // project_output(buffers, w_o, output) → void // Apply output projection: output = concat @ W_o // Using ternary weights fn project_output( @@ -418,11 +439,11 @@ module SacredAttention { ternary_matmul(buffers.concat, w_o, output, EMBED_DIM, EMBED_DIM); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 13. Residual Connection - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // add_residual(output, input) -> void + // add_residual(output, input) → void // Add residual connection: output = output + input fn add_residual(output: []f64, input: []f64) -> void { var i : usize = 0; @@ -433,9 +454,9 @@ module SacredAttention { } } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for SacredAttention - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test attn_sacred_scaling_constant given scale = SACRED_SCALE @@ -631,3 +652,292 @@ module SacredAttention { measure: nanoseconds for sacred_attention_kernel on single position target: < 30000ns } + +// ===================================================================== +// Phase B2 (epic #181) -- QK-Gain control ablation (appended, separate module) +// gain=phi^2 vs gain=1.0 vs learned. phi^2 [Open conjecture]; phi^2=phi+1 [Verified]. +// ===================================================================== + +module AttentionQKGainAblation; + use base::types; + use math::constants; + use numeric::gf16; + use nn::attention; + + // ========================================================= + // 1. Constants + // ========================================================= + + const PHI : gf16::GF16 = 1.618033988749895; + const PHI_SQ : gf16::GF16 = 2.618033988749895; // phi^2 = phi + 1; [Verified arithmetic] + const PHI_SQ_INV : gf16::GF16 = 0.381966011250105; // phi^(-2); [Verified arithmetic] + + // B2 gain variants + const GAIN_PHI_SQ : gf16::GF16 = PHI_SQ; // phi^2 ~ 2.618 [Open conjecture] + const GAIN_STANDARD : gf16::GF16 = 1.0; // Standard (no extra gain) + const GAIN_SQRT_PHI : gf16::GF16 = 1.272019649514069; // sqrt(phi) ~ 1.272 [Open conjecture] + const GAIN_LEARNED_INIT : gf16::GF16 = 1.0; // Learned gain initialized at 1.0 + + // Attention scaling (kept separate from QK-Gain; standard 1/sqrt(d_k)) + // Sacred scaling from attention.t27: SACRED_SCALE = 81^(-PHI^(-3)) ~ 0.354 + // These are combined: effective_scale = SACRED_SCALE * qk_gain^2 + // (qk_gain is applied to Q and K before dot product -- doubles in the score) + + // ========================================================= + // 2. Types + // ========================================================= + + pub const QKGainVariant = enum { + PhiSquared, // gain = phi^2 ~ 2.618 [Open conjecture] + Standard, // gain = 1.0 (baseline) + Learned, // gain starts at 1.0, optimized by AdamW + SqrtPhi, // gain = sqrt(phi) ~ 1.272 [Open conjecture] + }; + + pub const QKGainConfig = struct { + variant : QKGainVariant, + head_dim : u32, + initial_gain : gf16::GF16, + learnable : bool, // If true, gain is a trained scalar + lr_gain : gf16::GF16, // LR for gain parameter (if learnable) + }; + + pub const QKGainResult = struct { + gain_value : gf16::GF16, // Effective gain applied + score_scale : gf16::GF16, // Combined score scale (gain^2 / sqrt(head_dim)) + }; + + // ========================================================= + // 3. Core Functions + // ========================================================= + + // get_qk_gain(config: QKGainConfig) -> gf16::GF16 + // Returns the effective QK gain scalar for the given variant. + fn get_qk_gain(config: QKGainConfig) -> gf16::GF16 { + // PhiSquared: return GAIN_PHI_SQ + // Standard: return GAIN_STANDARD + // Learned: return config.initial_gain (will be trained) + // SqrtPhi: return GAIN_SQRT_PHI + } + + // effective_score_scale(gain: gf16::GF16, head_dim: u32) -> gf16::GF16 + // Computes the combined score scale = gain^2 / sqrt(head_dim). + // Standard formula uses gain=1: scale = 1/sqrt(head_dim). + // phi^2 formula: scale = phi^4 / sqrt(head_dim). + // Note: igla-peek applies gain to both Q and K, so dot product + // picks up gain^2 vs the standard 1 factor. + fn effective_score_scale(gain: gf16::GF16, head_dim: u32) -> gf16::GF16 { + // return gain * gain / sqrt(head_dim as gf16::GF16) + } + + // ========================================================= + // PHASE B2: Constant-identity tests + // ========================================================= + + // B2-CONST-1: phi^2 = phi + 1 -- [Verified] (L5 corollary) + test b2_phi_sq_equals_phi_plus_one + given phi = 1.618033988749895 + when lhs = phi * phi + and rhs = phi + 1.0 + then approximately_equal(lhs, rhs) // tolerance 1e-12 + + // B2-CONST-2: GAIN_PHI_SQ matches igla-peek PHI_SQ + test b2_gain_phi_sq_matches_trainer_constant + given expected = 1.618033988749895 + 1.0 // phi + 1 = phi^2 + when val = GAIN_PHI_SQ + then approximately_equal(val, expected) // tolerance 1e-9 + + // B2-CONST-3: phi^2 + phi^(-2) = 3 -- [Verified] (Law L5) + test b2_trinity_identity_l5 + given phi = 1.618033988749895 + when lhs = phi * phi + 1.0 / (phi * phi) + then approximately_equal(lhs, 3.0) // tolerance 1e-12 + // [Verified]: the ONLY phi-fact that is Verified in this codebase. + + // B2-CONST-4: Standard gain is distinct from phi^2 + test b2_standard_gain_distinct_from_phi_sq + then GAIN_PHI_SQ != GAIN_STANDARD + and GAIN_PHI_SQ > 2.0 + and GAIN_PHI_SQ < 3.0 + + // B2-CONST-5: sqrt(phi) is in valid range + test b2_sqrt_phi_in_range + given phi = 1.618033988749895 + when expected = sqrt(phi) + then approximately_equal(GAIN_SQRT_PHI, expected) // tolerance 1e-9 + + // ========================================================= + // PHASE B2: Control-test design (QK-Gain ablation) + // + // FALSIFICATION CRITERION: + // If gain=1.0 (standard) or learned gain reaches BPB within + // Monte-Carlo error of gain=phi^2 on equal budget, phi-specificity + // of the QK-gain design is FALSIFIED. + // + // Experimental protocol: + // - Metric: BPB on held-out validation set + // - Budget: equal gradient steps; equal HP tuning for lr_gain + // - Baseline: standard attention (Vaswani 2017, 1/sqrt(d_k)) + // - Three cells: (a) phi^2, (b) 1.0, (c) learned + // - Optional fourth cell: sqrt(phi) to test sqrt-phi hypothesis + // - All cells use identical architecture; only gain differs + // - muP QK scaling (Yang 2022, 2203.03466) is phi-independent: + // use standard 1/sqrt(d_k) after muP transfer (see B3) + // ========================================================= + + // B2a: phi^2 gain [Open conjecture] + test b2_variant_a_phi_sq_config + given config = QKGainConfig{ + .variant = QKGainVariant.PhiSquared, + .head_dim = 96, + .initial_gain = GAIN_PHI_SQ, + .learnable = false, + .lr_gain = 0.0 + } + when gain = get_qk_gain(config) + then approximately_equal(gain, PHI_SQ) // ~ 2.618 + + // B2b: standard gain = 1.0 (baseline; Vaswani 2017) + test b2_variant_b_standard_config + given config = QKGainConfig{ + .variant = QKGainVariant.Standard, + .head_dim = 96, + .initial_gain = GAIN_STANDARD, + .learnable = false, + .lr_gain = 0.0 + } + when gain = get_qk_gain(config) + then approximately_equal(gain, 1.0) + + // B2c: learned gain (starts at 1.0, optimized jointly with model) + // Represents: "let the data decide the gain" + test b2_variant_c_learned_init + given config = QKGainConfig{ + .variant = QKGainVariant.Learned, + .head_dim = 96, + .initial_gain = GAIN_LEARNED_INIT, + .learnable = true, + .lr_gain = 1e-3 + } + when gain_init = get_qk_gain(config) + then approximately_equal(gain_init, 1.0) // starts at 1.0 + // after training, gain may converge toward phi^2 or elsewhere -- + // that outcome would be informative but is not asserted here + + // B2d: Score scale is correctly computed per variant + test b2_score_scale_phi_sq + given gain = GAIN_PHI_SQ + and head_dim = 96 + when scale = effective_score_scale(gain, head_dim) + // phi^4 / sqrt(96) ~ 6.854 / 9.798 ~ 0.7 + then scale > 0.5 and scale < 1.5 + + test b2_score_scale_standard + given gain = GAIN_STANDARD + and head_dim = 96 + when scale = effective_score_scale(gain, head_dim) + // 1 / sqrt(96) ~ 0.102 + then approximately_equal(scale, 1.0 / sqrt(96.0)) // tolerance 1e-6 + + // B2e: Ablation scaffold produces finite BPB for all variants + test b2_control_ablation_all_variants_finite + given n_steps = 500 // mini-run for CI; full run uses 81000 + and seed = 43 + and bpb_a = run_attention_with_gain(QKGainVariant.PhiSquared, n_steps, seed) + and bpb_b = run_attention_with_gain(QKGainVariant.Standard, n_steps, seed) + and bpb_c = run_attention_with_gain(QKGainVariant.Learned, n_steps, seed) + then all_finite([bpb_a, bpb_b, bpb_c]) + and all_positive([bpb_a, bpb_b, bpb_c]) + // NOT asserting bpb_a < bpb_b or bpb_a < bpb_c. + // phi-specificity is FALSIFIED if any non-phi variant + // matches variant (a) within Monte-Carlo error. + + // ========================================================= + // PHASE B2: Invariants + // ========================================================= + + // B2-INV-1: phi^2 gain is in (1, 4) -- plausible range for a score amplifier + invariant b2_phi_sq_gain_valid_range + then GAIN_PHI_SQ > 1.0 + and GAIN_PHI_SQ < 4.0 + + // B2-INV-2: standard gain is exactly 1.0 + invariant b2_standard_gain_is_one + then GAIN_STANDARD == 1.0 + + // B2-INV-3: effective score scale is positive for any positive gain and head_dim + invariant b2_score_scale_positive + given gain = random_gf16_in_range(0.01, 10.0) + and head_dim = 96 + when scale = effective_score_scale(gain, head_dim) + then scale > 0.0 + + // B2-INV-4: phi^2 gain variant gives strictly higher score scale than gain=1 + // (This is a structural invariant -- not a performance claim) + invariant b2_phi_sq_scale_greater_than_standard + given head_dim = 96 + when scale_a = effective_score_scale(GAIN_PHI_SQ, head_dim) + and scale_b = effective_score_scale(GAIN_STANDARD, head_dim) + then scale_a > scale_b + + // B2-INV-5: Trinity identity preserved -- [Verified] (Law L5) + invariant b2_trinity_l5_verified + given phi = 1.618033988749895 + when lhs = phi * phi + 1.0 / (phi * phi) + then approximately_equal(lhs, 3.0) + + // B2-INV-6: Gain variants are numerically distinct + invariant b2_all_gain_variants_distinct + then GAIN_PHI_SQ != GAIN_STANDARD + and GAIN_PHI_SQ != GAIN_SQRT_PHI + and GAIN_STANDARD != GAIN_SQRT_PHI + + // ========================================================= + // PHASE B2: Benchmarks + // ========================================================= + + bench b2_forward_pass_phi_sq_gain + given config = QKGainConfig{.variant = QKGainVariant.PhiSquared, .head_dim = 96, .initial_gain = GAIN_PHI_SQ, .learnable = false, .lr_gain = 0.0} + and seq_len = 64 + when result = attention_forward(config, seq_len) + then elapsed_time_ms < 5 + + bench b2_forward_pass_standard_gain + given config = QKGainConfig{.variant = QKGainVariant.Standard, .head_dim = 96, .initial_gain = GAIN_STANDARD, .learnable = false, .lr_gain = 0.0} + and seq_len = 64 + when result = attention_forward(config, seq_len) + then elapsed_time_ms < 5 + // Both variants must have equal latency (same algorithm, different scalar) + + bench b2_forward_pass_learned_gain + given config = QKGainConfig{.variant = QKGainVariant.Learned, .head_dim = 96, .initial_gain = GAIN_LEARNED_INIT, .learnable = true, .lr_gain = 1e-3} + and seq_len = 64 + when result = attention_forward(config, seq_len) + then elapsed_time_ms < 5 + + // ========================================================= + // Mathematical Notes + // ========================================================= + // + // QK scoring: score(q, k) = (q @ k^T) * scale + // Standard scale: 1 / sqrt(head_dim) (Vaswani 2017) + // igla-peek uses: qk_gain applied to Q and K before dot product, + // then 1/sqrt(head_dim) on the dot product. + // Net score = (gain * q) @ (gain * k)^T / sqrt(head_dim) + // = gain^2 * (q @ k^T) / sqrt(head_dim) + // So QK-Gain = phi^2 is equivalent to scaling by phi^4 / sqrt(head_dim). + // + // Why [Open conjecture] and not [Verified]: + // - phi^2 = phi + 1 is [Verified arithmetic] (L5). + // - That phi^2 is the *optimal* gain for LLM attention is NOT derived + // from any theorem. It is a hypothesis to be tested empirically. + // - muP (Yang 2022, 2203.03466) provides a principled alternative: + // QK scale = 1/sqrt(d_head) after muP initialization. This scale + // is phi-independent (see B3 audit). + // + // Literature: + // Vaswani et al. 2017: standard 1/sqrt(d_k) scaling rationale. + // Yang et al. 2022 (2203.03466): muP LR transfer; QK scale is 1/d_head. + // igla-peek INV-9: current codebase anchors gain to phi^2 as a hypothesis. + // + // ========================================================= diff --git a/apps/website/public/t27/files/specs/nn/gla.t27 b/apps/website/public/t27/files/specs/nn/gla.t27 new file mode 100644 index 0000000000..8a0cb12471 --- /dev/null +++ b/apps/website/public/t27/files/specs/nn/gla.t27 @@ -0,0 +1,588 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/nn/gla.t27 +// Gated Linear Attention (GLA) Block Specification +// Reference: Yang et al. 2023 "Gated Linear Attention Transformers with +// Hardware-Efficient Training" arXiv:2312.06635 +// +// CLAIM-STATUS: all performance claims below are [Open conjecture]. +// The ONLY [Verified] phi-fact in this codebase is phi^2 + phi^-2 = 3 (Law L5). +// phi anchors in this file (if any) are [Open conjecture] with falsification paths. +// +// phi^2 + phi^-2 = 3 | TRINITY +// ASCII-only identifiers. English comments. (L3) + +module GatedLinearAttention { + use base::types; + use base::ops; + use math::constants; + use numeric::gf16; + + // ========================================================= + // 1. Constants + // ========================================================= + + // Model dimensions (small defaults; match RACE arch sizing). + // These defaults mirror specs/nn/attention.t27 for apples-to-apples ablation. + const NUM_HEADS : usize = 4; // Number of GLA heads (tunable via RACE config) + const HEAD_DIM : usize = 64; // Key/Value dimension per head + const EMBED_DIM : usize = 256; // Total d_model = NUM_HEADS * HEAD_DIM + const STATE_DIM : usize = 64; // Hidden state dim per head (2D RNN state: HEAD_DIM x HEAD_DIM) + const EXPAND : usize = 1; // State expansion factor (1 = no expansion) + + // [Open conjecture] phi-anchored QK gain from Phase B2 cross-ref. + // phi^2 = phi + 1 ~ 2.618 is [Verified] (L5), but that phi^2 is the + // *correct* QK gain is [Open conjecture] pending ablation vs. gain=1 and + // gain=sqrt(HEAD_DIM) controls. Cross-ref: specs/nn/attention.t27 INV-9. + const PHI_SQ_GAIN : f64 = 2.618033988749895; // [Open conjecture] as QK gain + + // Standard 1/sqrt(d_k) scaling for GLA output gate (control anchor). + const STD_SCALE : f64 = 1.0 / sqrt(HEAD_DIM as f64); // control baseline + + // Arch-selection tag for RACE config; read by the trainer's ATTN_MODE env var. + // Valid values: "full" | "gla" | "hybrid_gla_full" + const ARCH_TAG : str = "gla"; + + // Complexity reference (informational, not enforced at compile time). + // Full attention: O(N^2 * d_model). GLA parallel: O(N^2 * d_model / chunk_size). + // GLA recurrent inference: O(N * HEAD_DIM^2) -- linear in N. + // [Open conjecture]: whether this linear complexity translates to wall-clock + // win on the RACE CPU target depends on sequence length vs HEAD_DIM^2 crossover. + + // ========================================================= + // 2. Types + // ========================================================= + + // Configuration struct for one GLA block. + pub const GlaConfig = struct { + embed_dim : usize, // Total model width + num_heads : usize, // Number of parallel GLA heads + head_dim : usize, // Per-head key/value dimension + use_rope : bool, // Apply RoPE to Q/K (cross-ref: specs/nn/phi_rope.t27) + qk_gain : f64, // QK scaling scalar; [Open conjecture] if set to PHI_SQ_GAIN + gate_act : GateAct, // Activation for data-dependent gates + chunk_size : usize, // Chunk size for hardware-efficient parallel training + }; + + // Gate activation variants. + pub enum GateAct { + Sigmoid, // Standard sigmoid gate: g = sigma(x) [default / control] + Swish, // Swish / SiLU gate: g = x * sigma(x) + SoftPlus, // Softplus: log(1 + exp(x)) + } + + // Per-head 2D hidden state (matrix-valued, size head_dim x head_dim). + // This is what makes GLA O(N) at inference: state S[t] is updated + // rather than re-materialising the full key-value history. + pub const GlaHeadState = struct { + S : [HEAD_DIM * HEAD_DIM]f64, // Matrix state h_t in R^{d x d} + normalizer : [HEAD_DIM]f64, // Running normalizer z_t in R^d + }; + + // Full block state across all heads. + pub const GlaBlockState = struct { + heads : [NUM_HEADS]GlaHeadState, + }; + + // Input projection weights for one GLA block. + pub const GlaWeights = struct { + w_q : [EMBED_DIM * EMBED_DIM]f64, // Query projection + w_k : [EMBED_DIM * EMBED_DIM]f64, // Key projection + w_v : [EMBED_DIM * EMBED_DIM]f64, // Value projection + w_g : [EMBED_DIM * EMBED_DIM]f64, // Data-dependent gate projection (GLA-specific) + w_o : [EMBED_DIM * EMBED_DIM]f64, // Output projection + b_g : [EMBED_DIM]f64, // Gate bias + }; + + // ========================================================= + // 3. Core Algorithm - Parallel (Chunk) Mode + // ========================================================= + + // gla_parallel_forward( + // x: input token embeddings [seq_len, EMBED_DIM], + // w: GlaWeights, + // cfg: GlaConfig, + // output: [seq_len, EMBED_DIM], + // ) -> void + // + // Parallel (training) mode following Yang 2023 Algorithm 1. + // Complexity: O(N * d^2 / chunk_size) compute, O(chunk_size * d) working memory. + // + // Algorithm sketch (per chunk of size C, position range [l, l+C)): + // Q[t] = x[t] @ W_q -- [seq, head_dim] per head + // K[t] = x[t] @ W_k + // V[t] = x[t] @ W_v + // G[t] = gate_act(x[t] @ W_g + b_g) -- data-dependent forget gate + // Apply causal mask within chunk + // Inter-chunk: propagate state S across chunk boundaries + // output[t] = (attn_output[t] + state_output[t]) * O_gate + fn gla_parallel_forward( + x : []f64, + w : *GlaWeights, + cfg : GlaConfig, + output : []f64, + ) -> void { + const seq_len = x.len() / cfg.embed_dim; + const C = cfg.chunk_size; + const n_chunks = (seq_len + C - 1) / C; + + var state = GlaBlockState{ .heads = [GlaHeadState{ + .S = [0.0; HEAD_DIM * HEAD_DIM], + .normalizer = [0.0; HEAD_DIM], + }; NUM_HEADS] }; + + var chunk_idx : usize = 0; + while (chunk_idx < n_chunks) { + const chunk_start = chunk_idx * C; + const chunk_end = min(chunk_start + C, seq_len); + + // Project Q, K, V, G for this chunk + gla_project_chunk(x, w, cfg, chunk_start, chunk_end, &state, output); + + chunk_idx = chunk_idx + 1; + } + } + + // gla_project_chunk(x, w, cfg, l, r, state, output) -> void + // Processes one chunk [l, r) of tokens through the GLA layer. + fn gla_project_chunk( + x : []f64, + w : *GlaWeights, + cfg : GlaConfig, + l : usize, + r : usize, + state : *GlaBlockState, + output : []f64, + ) -> void { + var h : usize = 0; + while (h < cfg.num_heads) { + const head_off = h * cfg.head_dim; + var t : usize = l; + + while (t < r) { + const x_t_off = t * cfg.embed_dim; + + // Q, K, V projections for token t, head h + var q_t = [0.0; HEAD_DIM]; + var k_t = [0.0; HEAD_DIM]; + var v_t = [0.0; HEAD_DIM]; + var g_t = [0.0; HEAD_DIM]; + + matmul_slice(x, x_t_off, w.w_q, head_off, cfg.embed_dim, cfg.head_dim, &q_t); + matmul_slice(x, x_t_off, w.w_k, head_off, cfg.embed_dim, cfg.head_dim, &k_t); + matmul_slice(x, x_t_off, w.w_v, head_off, cfg.embed_dim, cfg.head_dim, &v_t); + matmul_slice(x, x_t_off, w.w_g, head_off, cfg.embed_dim, cfg.head_dim, &g_t); + + // Apply configured gate activation + apply_gate_act(&g_t, cfg.gate_act); + + // Apply qk_gain scaling (identity if gain=1.0; [Open conjecture] if PHI_SQ_GAIN) + scale_vec(&q_t, cfg.qk_gain); + scale_vec(&k_t, cfg.qk_gain); + + // GLA recurrent state update: + // S[t] = diag(g_t) * S[t-1] + k_t outer v_t + // z[t] = diag(g_t) * z[t-1] + k_t + gla_state_update(&state.heads[h], &g_t, &k_t, &v_t); + + // Read output from state: + // o_t = (S[t] @ q_t) / max(|z[t] . q_t|, 1) + var o_t = [0.0; HEAD_DIM]; + gla_state_read(&state.heads[h], &q_t, &o_t); + + // Write to output buffer + const out_off = t * cfg.embed_dim + head_off; + var d : usize = 0; + while (d < cfg.head_dim) { + output[out_off + d] = o_t[d]; + d = d + 1; + } + + t = t + 1; + } + + h = h + 1; + } + + // Output projection: output = output @ W_o + residual handled by caller + matmul_full(output, w.w_o, cfg.embed_dim, cfg.embed_dim); + } + + // ========================================================= + // 4. State Update and Read + // ========================================================= + + // gla_state_update(head_state, g, k, v) -> void + // GLA recurrent transition: + // S_t = diag(g) * S_{t-1} + k outer v + // z_t = diag(g) * z_{t-1} + k + // Cost: O(HEAD_DIM^2) per token. + fn gla_state_update( + hs : *GlaHeadState, + g : []f64, // gate vector [HEAD_DIM] + k : []f64, // key vector [HEAD_DIM] + v : []f64, // value vector[HEAD_DIM] + ) -> void { + var i : usize = 0; + while (i < HEAD_DIM) { + // Row i of S: gated decay + rank-1 update + hs.normalizer[i] = g[i] * hs.normalizer[i] + k[i]; + var j : usize = 0; + while (j < HEAD_DIM) { + hs.S[i * HEAD_DIM + j] = g[i] * hs.S[i * HEAD_DIM + j] + k[i] * v[j]; + j = j + 1; + } + i = i + 1; + } + } + + // gla_state_read(head_state, q, out) -> void + // GLA output retrieval with normalisation: + // raw = S_t @ q + // denom = max(|z_t . q|, 1) + // out = raw / denom + fn gla_state_read( + hs : *GlaHeadState, + q : []f64, // query vector [HEAD_DIM] + out : []f64, // output buffer [HEAD_DIM] + ) -> void { + // Compute z . q (dot product of normalizer and query) + var z_dot_q : f64 = 0.0; + var i : usize = 0; + while (i < HEAD_DIM) { + z_dot_q = z_dot_q + hs.normalizer[i] * q[i]; + i = i + 1; + } + const denom : f64 = max(abs(z_dot_q), 1.0); + + // Compute S @ q and normalise + i = 0; + while (i < HEAD_DIM) { + var dot : f64 = 0.0; + var j : usize = 0; + while (j < HEAD_DIM) { + dot = dot + hs.S[i * HEAD_DIM + j] * q[j]; + j = j + 1; + } + out[i] = dot / denom; + i = i + 1; + } + } + + // ========================================================= + // 5. Gate Activation + // ========================================================= + + fn apply_gate_act(g : []f64, act : GateAct) -> void { + var i : usize = 0; + while (i < g.len()) { + if (act == GateAct::Sigmoid) { + g[i] = 1.0 / (1.0 + exp(-g[i])); + } else if (act == GateAct::Swish) { + g[i] = g[i] * (1.0 / (1.0 + exp(-g[i]))); + } else if (act == GateAct::SoftPlus) { + g[i] = log(1.0 + exp(g[i])); + } + i = i + 1; + } + } + + // ========================================================= + // 6. Utility Helpers (local; not exported) + // ========================================================= + + fn scale_vec(v : []f64, s : f64) -> void { + var i : usize = 0; + while (i < v.len()) { + v[i] = v[i] * s; + i = i + 1; + } + } + + fn matmul_slice( + x : []f64, x_off : usize, + w : []f64, w_off : usize, + in_dim : usize, out_dim : usize, + result : []f64, + ) -> void { + var j : usize = 0; + while (j < out_dim) { + var acc : f64 = 0.0; + var k : usize = 0; + while (k < in_dim) { + acc = acc + x[x_off + k] * w[w_off + j * in_dim + k]; + k = k + 1; + } + result[j] = acc; + j = j + 1; + } + } + + fn matmul_full( + x : []f64, + w : []f64, + in_dim : usize, + out_dim : usize, + ) -> void { + var tmp = [0.0; EMBED_DIM]; + var i : usize = 0; + while (i < out_dim) { + var acc : f64 = 0.0; + var j : usize = 0; + while (j < in_dim) { + acc = acc + x[j] * w[i * in_dim + j]; + j = j + 1; + } + tmp[i] = acc; + i = i + 1; + } + var i2 : usize = 0; + while (i2 < out_dim) { + x[i2] = tmp[i2]; + i2 = i2 + 1; + } + } + + // ========================================================= + // 7. RACE Arch-Selection Interface + // ========================================================= + + // gla_config_from_race(hidden_dim, num_heads, chunk_size) -> GlaConfig + // Constructs a GlaConfig from the RACE trainer's arch_config.rs knobs + // (HIDDEN_DIM, NUM_ATTN_LAYERS, etc.). + // Called when ATTN_MODE="gla" is set in the trainer environment. + // + // NOTE: qk_gain defaults to 1.0 (standard). Setting it to PHI_SQ_GAIN + // is an [Open conjecture] ablation that must be run against gain=1.0 + // and gain=sqrt(head_dim) controls before any claim can be made. + fn gla_config_from_race( + hidden_dim : usize, + num_heads : usize, + chunk_size : usize, + ) -> GlaConfig { + return GlaConfig { + embed_dim : hidden_dim, + num_heads : num_heads, + head_dim : hidden_dim / num_heads, + use_rope : true, + qk_gain : 1.0, // control default; ablate PHI_SQ_GAIN separately + gate_act : GateAct::Sigmoid, + chunk_size : chunk_size, + }; + } + + // ========================================================= + // 8. TDD - Tests + // ========================================================= + + // --- 8a. State update correctness --- + + test gla_state_update_zero_gate_erases_state + // If gate g = 0, previous state should be erased (decay to zero). + given hs = GlaHeadState{ + .S = [1.0; HEAD_DIM * HEAD_DIM], + .normalizer = [1.0; HEAD_DIM], + } + and g = [0.0; HEAD_DIM] + and k = [1.0; HEAD_DIM] + and v = [1.0; HEAD_DIM] + when gla_state_update(&hs, g, k, v) + // After g=0: S[i,j] = 0 * old + k[i]*v[j] = 1.0 for all i,j + then hs.S[0] == 1.0 and hs.S[HEAD_DIM - 1] == 1.0 + + test gla_state_update_unit_gate_accumulates + // If gate g = 1, state should accumulate (no forgetting). + given hs = GlaHeadState{ + .S = [0.0; HEAD_DIM * HEAD_DIM], + .normalizer = [0.0; HEAD_DIM], + } + and g = [1.0; HEAD_DIM] + and k = [1.0; HEAD_DIM] + and v = [0.5; HEAD_DIM] + when gla_state_update(&hs, g, k, v) + // After step 1: S[i,j] = 0.5 for all i,j + then abs(hs.S[0] - 0.5) < 1e-9 + + test gla_state_read_normalisation_floor + // When z . q is small, denom should be 1.0 (floor), preventing div-by-zero. + given hs = GlaHeadState{ + .S = [0.0; HEAD_DIM * HEAD_DIM], + .normalizer = [0.0; HEAD_DIM], + } + and q = [0.0; HEAD_DIM] + and out = [0.0; HEAD_DIM] + when gla_state_read(&hs, q, &out) + // All-zero state, zero query: out should be 0.0, no NaN or Inf + then out[0] == 0.0 and out[HEAD_DIM - 1] == 0.0 + + test gla_state_update_then_read_identity + // After one step with k=q=[1,0,...,0], v=[1,0,...,0]: + // out[0] should equal v[0] / denom. + given hs = GlaHeadState{ + .S = [0.0; HEAD_DIM * HEAD_DIM], + .normalizer = [0.0; HEAD_DIM], + } + and k = [1.0, 0.0; rest 0.0] // unit basis e0 + and v = [1.0, 0.0; rest 0.0] + and g = [1.0; HEAD_DIM] + and q = [1.0, 0.0; rest 0.0] + and out = [0.0; HEAD_DIM] + when gla_state_update(&hs, g, k, v) + and gla_state_read(&hs, q, &out) + then abs(out[0] - 1.0) < 1e-9 // z.q = 1.0, so denom = 1.0; S@q = 1.0 + + // --- 8b. Gate activation tests --- + + test gate_act_sigmoid_range + given g = [0.0; 1] + when apply_gate_act(&g, GateAct::Sigmoid) + then abs(g[0] - 0.5) < 1e-9 + + test gate_act_sigmoid_large_positive_saturates + given g = [100.0; 1] + when apply_gate_act(&g, GateAct::Sigmoid) + then abs(g[0] - 1.0) < 1e-6 + + test gate_act_sigmoid_large_negative_saturates + given g = [-100.0; 1] + when apply_gate_act(&g, GateAct::Sigmoid) + then g[0] < 0.001 and g[0] >= 0.0 + + test gate_act_swish_zero_is_zero + given g = [0.0; 1] + when apply_gate_act(&g, GateAct::Swish) + then g[0] == 0.0 + + // --- 8c. Scale and dimension tests --- + + test scale_vec_multiplies_correctly + given v = [2.0, 4.0, 6.0] + when scale_vec(&v, 0.5) + then abs(v[0] - 1.0) < 1e-12 and abs(v[1] - 2.0) < 1e-12 and abs(v[2] - 3.0) < 1e-12 + + test gla_config_from_race_head_dim + given cfg = gla_config_from_race(256, 4, 64) + then cfg.head_dim == 64 // 256 / 4 + + test gla_config_from_race_default_gain + given cfg = gla_config_from_race(256, 4, 64) + then abs(cfg.qk_gain - 1.0) < 1e-12 // control default + + // --- 8d. Phi conjecture falsification witness --- + + test phi_sq_gain_differs_from_control + // Witness: PHI_SQ_GAIN != 1.0. This is intentional. + // Result: [Open conjecture] whether PHI_SQ_GAIN improves BPB. + // Falsification: run ablation; if BPB(qk_gain=1.0) matches + // BPB(qk_gain=PHI_SQ_GAIN) within Monte-Carlo error, phi-specificity + // of the gain is FALSIFIED. + given phi_gain = PHI_SQ_GAIN + then abs(phi_gain - 2.618033988749895) < 1e-9 + and phi_gain != 1.0 // they differ; which is better is an empirical question + + test std_scale_value + // Verify standard 1/sqrt(d_k) scale is in expected range for HEAD_DIM=64. + given s = STD_SCALE + then abs(s - 0.125) < 1e-9 // 1/sqrt(64) = 1/8 = 0.125 + + // ========================================================= + // 9. Invariants + // ========================================================= + + invariant gla_embed_dim_divisible_by_heads + // Required: EMBED_DIM must be evenly divisible by NUM_HEADS. + assert EMBED_DIM % NUM_HEADS == 0 + + invariant gla_head_dim_consistent + assert EMBED_DIM / NUM_HEADS == HEAD_DIM + + invariant gla_state_dim_positive + assert STATE_DIM > 0 + + invariant gla_phi_sq_is_phi_plus_one + // [Verified] L5: phi^2 = phi + 1. This is the ONLY verified phi fact. + // PHI_SQ_GAIN uses this, but its *use as a QK gain* is [Open conjecture]. + assert abs(PHI_SQ_GAIN - (1.618033988749895 + 1.0)) < 1e-9 + + invariant gla_std_scale_positive + assert STD_SCALE > 0.0 + + invariant gla_sigmoid_gate_in_unit_interval + // For any finite x, sigmoid(x) in (0,1). + given x = 0.0 + and g = [x; 1] + and apply_gate_act(&g, GateAct::Sigmoid) + assert g[0] > 0.0 and g[0] < 1.0 + + invariant gla_state_update_preserves_finiteness + // After one state update with finite inputs, state remains finite. + given hs = GlaHeadState{ + .S = [0.5; HEAD_DIM * HEAD_DIM], + .normalizer = [0.5; HEAD_DIM], + } + and g = [0.9; HEAD_DIM] + and k = [0.1; HEAD_DIM] + and v = [0.2; HEAD_DIM] + and gla_state_update(&hs, g, k, v) + assert is_finite(hs.S[0]) and is_finite(hs.normalizer[0]) + + invariant gla_read_denom_floor_prevents_div_zero + // The max(|z.q|, 1.0) floor ensures denominator >= 1.0 always. + given hs = GlaHeadState{ + .S = [0.0; HEAD_DIM * HEAD_DIM], + .normalizer = [0.0; HEAD_DIM], + } + and q = [0.0; HEAD_DIM] + and out = [0.0; HEAD_DIM] + and gla_state_read(&hs, q, &out) + assert is_finite(out[0]) + + invariant gla_arch_tag_is_ascii + // Arch tag must be pure ASCII (Law L3). + assert ARCH_TAG == "gla" + + // ========================================================= + // 10. Benchmarks + // ========================================================= + + bench gla_state_update_latency_cpu + // Measure wall-clock for one GLA head state update on CPU. + // Target: LINEAR in HEAD_DIM^2 work; should be < 5 us for HEAD_DIM=64. + // Compare against bench attn_compute_scores_latency in attention.t27 + // (O(N^2) reference) at seq_len=64 to verify crossover. + measure: nanoseconds to gla_state_update( + &GlaHeadState{.S=[0.5; HEAD_DIM*HEAD_DIM], .normalizer=[0.5; HEAD_DIM]}, + [0.9; HEAD_DIM], [0.1; HEAD_DIM], [0.2; HEAD_DIM]) + target: < 5000ns // 5 us; revisit at HEAD_DIM=128 + + bench gla_state_read_latency_cpu + measure: nanoseconds to gla_state_read( + &GlaHeadState{.S=[0.5; HEAD_DIM*HEAD_DIM], .normalizer=[0.5; HEAD_DIM]}, + [0.1; HEAD_DIM], &[0.0; HEAD_DIM]) + target: < 5000ns + + bench gla_gate_sigmoid_latency + measure: nanoseconds to apply_gate_act(&[0.0; 64], GateAct::Sigmoid) + target: < 500ns + + bench gla_full_pass_seq64 + // Full GLA block forward pass on 64-token sequence. + // This is the primary throughput comparison vs. attention.t27's + // bench attn_sacred_attention_kernel_latency (single-position reference). + // [Open conjecture]: GLA should win at seq >= 128 on CPU vector units. + measure: milliseconds to gla_parallel_forward( + [0.0; 64 * EMBED_DIM], + &GlaWeights{...}, + gla_config_from_race(EMBED_DIM, NUM_HEADS, 16), + &[0.0; 64 * EMBED_DIM]) + target: < 50ms // soft target; compare vs full-attn reference + + bench gla_full_pass_seq512 + // Scale test: 512 tokens. Full attention is 8x more expensive; GLA + // should be ~8x cheaper at same dims (linear vs quadratic). + // [Open conjecture]: this is a necessary condition for the IGLA regime claim. + measure: milliseconds to gla_parallel_forward( + [0.0; 512 * EMBED_DIM], &GlaWeights{...}, + gla_config_from_race(EMBED_DIM, NUM_HEADS, 16), + &[0.0; 512 * EMBED_DIM]) + target: < 400ms // should be ~8 * (seq64 target) +} diff --git a/apps/website/public/t27/files/specs/nn/hslm.t27 b/apps/website/public/t27/files/specs/nn/hslm.t27 index e79fd77955..ae649f051a 100644 --- a/apps/website/public/t27/files/specs/nn/hslm.t27 +++ b/apps/website/public/t27/files/specs/nn/hslm.t27 @@ -2,7 +2,7 @@ // t27/specs/nn/hslm.t27 // HSLM (Hierarchical Sacred Learning Model) Specification // Ternary neural network with sacred constants and VSA attention -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module HSLM { // Import base types, math, numeric, and attention @@ -13,16 +13,16 @@ module HSLM { use numeric::gf16; use nn::attention; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. HSLM Configuration - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // TRINITY-based architecture const NUM_LAYERS : usize = 6; // 6 transformer-like layers const NUM_HEADS : usize = 3; // 3 attention heads per layer - const HEAD_DIM : usize = 81; // 81 dim per head (3^4) - const EMBED_DIM : usize = 243; // 243 total embedding (3 * 81) - const FF_DIM : usize = 972; // 4 * EMBED_DIM (3^4 * 4) + const HEAD_DIM : usize = 81; // 81 dim per head (3⁴) + const EMBED_DIM : usize = 243; // 243 total embedding (3 × 81) + const FF_DIM : usize = 972; // 4 × EMBED_DIM (3⁴ × 4) const CONTEXT_LEN : usize = 81; // Max sequence length const VSA_DIM : usize = 1024; // VSA hypervector dimension @@ -43,9 +43,9 @@ module HSLM { const PHASE_BACKWARD : u8 = 1; // Backward pass const PHASE_UPDATE : u8 = 2; // Weight update - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. HSLM State - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Training/inference mode var hslm_mode : u8 = PHASE_FORWARD; @@ -81,11 +81,11 @@ module HSLM { layers : [NUM_LAYERS]LayerWeights, } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. HSLM Forward Pass - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // hslm_forward(input, weights, seq_len, output, caches) -> void + // hslm_forward(input, weights, seq_len, output, caches) → void // Full forward pass through all HSLM layers fn hslm_forward( input: [][]f64, // [seq_len][EMBED_DIM] @@ -129,7 +129,7 @@ module HSLM { } } - // hslm_layer_forward(buffers, weights, position, seq_len, cache) -> void + // hslm_layer_forward(buffers, weights, position, seq_len, cache) → void // Single transformer layer: Attention + FFN with residual connections fn hslm_layer_forward( buffers: *LayerBuffers, @@ -191,12 +191,12 @@ module HSLM { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. RMS Normalization - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // rms_norm_forward(x, gamma) -> void (in-place) - // RMSNorm: output = (input / sqrt(mean(input^2) + eps)) * gamma + // rms_norm_forward(x, gamma) → void (in-place) + // RMSNorm: output = (input / sqrt(mean(input²) + eps)) * gamma // Uses sacred gamma from math/sacred_physics fn rms_norm_forward(x: []f64, gamma: []f64) -> void { // Compute mean of squares @@ -220,11 +220,11 @@ module HSLM { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Feed-Forward Network - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // ffn_forward(buffers, weights) -> void + // ffn_forward(buffers, weights) → void // Feed-forward network: Gelu(x @ W1) @ W2 // Using ternary weights, sacred expansion fn ffn_forward(buffers: *LayerBuffers, weights: *LayerWeights) -> void { @@ -238,7 +238,7 @@ module HSLM { ternary_matmul(buffers.ffn_intermediate, weights.w2, buffers.output, FF_DIM, EMBED_DIM); } - // ternary_matmul(input, weights, output, in_dim, out_dim) -> void + // ternary_matmul(input, weights, output, in_dim, out_dim) → void // Matrix multiplication with ternary weights fn ternary_matmul( input: []f64, @@ -270,9 +270,9 @@ module HSLM { } } - // gelu_activation(x) -> void (in-place) - // GELU: x * Phi(x) where Phi is standard normal CDF - // Approximation: x * 0.5 * (1 + tanh(sqrt(2/pi) * (x + 0.044715x^3))) + // gelu_activation(x) → void (in-place) + // GELU: x * Φ(x) where Φ is standard normal CDF + // Approximation: x * 0.5 * (1 + tanh(√(2/π) * (x + 0.044715x³))) fn gelu_activation(x: []f64) -> void { const sqrt_2_over_pi = sqrt(2.0 / 3.141592653589793); var i : usize = 0; @@ -287,11 +287,11 @@ module HSLM { } } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. HSLM Backward Pass - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // hslm_backward(grad_output, weights, seq_len, grad_input) -> void + // hslm_backward(grad_output, weights, seq_len, grad_input) → void // Full backward pass with gradient computation fn hslm_backward( grad_output: [][]f64, // [seq_len][EMBED_DIM] @@ -312,7 +312,7 @@ module HSLM { } } - // zero_weight_gradients() -> HSLMWeights + // zero_weight_gradients() → HSLMWeights // Initialize all weight gradients to zero fn zero_weight_gradients() -> HSLMWeights { var weights : HSLMWeights = undefined; @@ -331,7 +331,7 @@ module HSLM { return weights; } - // hslm_layer_backward(grads, layer_idx) -> void + // hslm_layer_backward(grads, layer_idx) → void // Single layer backward: FFN + Attention gradients fn hslm_layer_backward(grads: *HSLMWeights, layer_idx: usize) -> void { // Gradient flows backward through: residual -> ffn -> norm -> residual -> attn -> norm @@ -342,7 +342,7 @@ module HSLM { attention_backward(grads, layer_idx); } - // ffn_backward(grads, layer_idx) -> void + // ffn_backward(grads, layer_idx) → void // Backward through FFN: compute gradients for W2, W1, and input fn ffn_backward(grads: *HSLMWeights, layer_idx: usize) -> void { // Step 1: Gradient through second projection (W2) @@ -355,7 +355,7 @@ module HSLM { ffn_backward_w1(grads, layer_idx); } - // ffn_backward_w2(grads, layer_idx) -> void + // ffn_backward_w2(grads, layer_idx) → void // Gradient through second FFN projection fn ffn_backward_w2(grads: *HSLMWeights, layer_idx: usize) -> void { // Gradient: dL/dW2 = dL/dout * x^T @@ -363,31 +363,31 @@ module HSLM { // Implementation depends on stored intermediate values } - // gelu_backward(layer_idx) -> void + // gelu_backward(layer_idx) → void // Gradient through GELU activation fn gelu_backward(layer_idx: usize) -> void { - // GELU derivative: dGELU/dx = Phi(x) + x * phi(x) - // where phi is standard normal PDF + // GELU derivative: dGELU/dx = Φ(x) + x * φ(x) + // where φ is standard normal PDF } - // ffn_backward_w1(grads, layer_idx) -> void + // ffn_backward_w1(grads, layer_idx) → void // Gradient through first FFN projection fn ffn_backward_w1(grads: *HSLMWeights, layer_idx: usize) -> void { // Gradient: dL/dW1 = dL/dmid * x^T // dL/dx = W1^T * dL/dmid } - // attention_backward(grads, layer_idx) -> void + // attention_backward(grads, layer_idx) → void // Gradient through attention block fn attention_backward(grads: *HSLMWeights, layer_idx: usize) -> void { // Gradient flows through: output projection -> attention weights -> Q/K/V projections } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Phase Management - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // hslm_phase(phase: u8) -> void + // hslm_phase(phase: u8) → void // Switch HSLM phase (forward, backward, update) // Used for streaming inference and training fn hslm_phase(phase: u8) -> void { @@ -400,15 +400,15 @@ module HSLM { } } - // get_hslm_mode() -> u8 + // get_hslm_mode() → u8 // Get current HSLM mode fn get_hslm_mode() -> u8 { return hslm_mode; } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for HSLM - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test hslm_num_layers_is_six given layers = NUM_LAYERS diff --git a/apps/website/public/t27/files/specs/nn/phi_rope.t27 b/apps/website/public/t27/files/specs/nn/phi_rope.t27 index 44bb36308e..112d0ccf3c 100644 --- a/apps/website/public/t27/files/specs/nn/phi_rope.t27 +++ b/apps/website/public/t27/files/specs/nn/phi_rope.t27 @@ -41,6 +41,3 @@ algorithm phi_rope { { input: dim=4, theta: [1.0, 0.886, 0.618, 0.486] } ] } - test "phi_rope_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/nn/sacred_attention.t27 b/apps/website/public/t27/files/specs/nn/sacred_attention.t27 index 8dcde6436f..076a4eda38 100644 --- a/apps/website/public/t27/files/specs/nn/sacred_attention.t27 +++ b/apps/website/public/t27/files/specs/nn/sacred_attention.t27 @@ -44,6 +44,3 @@ algorithm sacred_attention { { assert: sacred_scale() > 0.0 && sacred_scale() < 1.0 } ] } - test "sacred_attention_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/numeric/bigint.t27 b/apps/website/public/t27/files/specs/numeric/bigint.t27 index 17500aaa43..1b81aaa554 100644 --- a/apps/website/public/t27/files/specs/numeric/bigint.t27 +++ b/apps/website/public/t27/files/specs/numeric/bigint.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // Module: Balanced Ternary BigInt -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module BigInt { // ======================================================================== diff --git a/apps/website/public/t27/files/specs/numeric/bnf1024.t27 b/apps/website/public/t27/files/specs/numeric/bnf1024.t27 new file mode 100644 index 0000000000..e2efe4f45a --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf1024.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf1024.t27 -- BNF1024: Binary Network Float, 1024-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF1024 and +// TNF1024 both land on M = 1011. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 11 positions against BNF's 12, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 18 bits | M = 1005 bits ] +// value = (-1)^sign * (1 + M/2^1005) * 2^e, e in [-131071, 131072] + +module triformat_bnf1024 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 18; // spans 177147 exponent values + const MANT_BITS: u32 = 1005; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 131071; + + fn exp_values() -> u32 { return 262144; } + + fn is_finite(biased: u32) -> bool { return biased != 262143; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 1024, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 18, "exponent sized for the range, not by phi"); + assert(exp_values() >= 177147, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/bnf128.t27 b/apps/website/public/t27/files/specs/numeric/bnf128.t27 new file mode 100644 index 0000000000..eea2201642 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf128.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf128.t27 -- BNF128: Binary Network Float, 128-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF128 and +// TNF128 both land on M = 118. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 8 positions against BNF's 9, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 13 bits | M = 114 bits ] +// value = (-1)^sign * (1 + M/2^114) * 2^e, e in [-4095, 4096] + +module triformat_bnf128 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 13; // spans 6561 exponent values + const MANT_BITS: u32 = 114; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 4095; + + fn exp_values() -> u32 { return 8192; } + + fn is_finite(biased: u32) -> bool { return biased != 8191; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 128, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 13, "exponent sized for the range, not by phi"); + assert(exp_values() >= 6561, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/bnf16.t27 b/apps/website/public/t27/files/specs/numeric/bnf16.t27 new file mode 100644 index 0000000000..df19b71689 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf16.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf16.t27 -- BNF16: Binary Network Float, 16-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF16 and +// TNF16 both land on M = 10. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 4 positions against BNF's 5, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 7 bits | M = 8 bits ] +// value = (-1)^sign * (1 + M/2^8) * 2^e, e in [-63, 64] + +module triformat_bnf16 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 7; // spans 81 exponent values + const MANT_BITS: u32 = 8; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 63; + + fn exp_values() -> u32 { return 128; } + + fn is_finite(biased: u32) -> bool { return biased != 127; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 16, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 7, "exponent sized for the range, not by phi"); + assert(exp_values() >= 81, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/bnf256.t27 b/apps/website/public/t27/files/specs/numeric/bnf256.t27 new file mode 100644 index 0000000000..997783aee4 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf256.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf256.t27 -- BNF256: Binary Network Float, 256-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF256 and +// TNF256 both land on M = 245. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 9 positions against BNF's 10, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 15 bits | M = 240 bits ] +// value = (-1)^sign * (1 + M/2^240) * 2^e, e in [-16383, 16384] + +module triformat_bnf256 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 15; // spans 19683 exponent values + const MANT_BITS: u32 = 240; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 16383; + + fn exp_values() -> u32 { return 32768; } + + fn is_finite(biased: u32) -> bool { return biased != 32767; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 256, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 15, "exponent sized for the range, not by phi"); + assert(exp_values() >= 19683, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/bnf32.t27 b/apps/website/public/t27/files/specs/numeric/bnf32.t27 new file mode 100644 index 0000000000..467d76e8bd --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf32.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf32.t27 -- BNF32: Binary Network Float, 32-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF32 and +// TNF32 both land on M = 24. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 6 positions against BNF's 7, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 10 bits | M = 21 bits ] +// value = (-1)^sign * (1 + M/2^21) * 2^e, e in [-511, 512] + +module triformat_bnf32 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 10; // spans 729 exponent values + const MANT_BITS: u32 = 21; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 511; + + fn exp_values() -> u32 { return 1024; } + + fn is_finite(biased: u32) -> bool { return biased != 1023; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 32, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 10, "exponent sized for the range, not by phi"); + assert(exp_values() >= 729, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/bnf512.t27 b/apps/website/public/t27/files/specs/numeric/bnf512.t27 new file mode 100644 index 0000000000..343e5b331b --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf512.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf512.t27 -- BNF512: Binary Network Float, 512-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF512 and +// TNF512 both land on M = 500. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 10 positions against BNF's 11, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 16 bits | M = 495 bits ] +// value = (-1)^sign * (1 + M/2^495) * 2^e, e in [-32767, 32768] + +module triformat_bnf512 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 16; // spans 59049 exponent values + const MANT_BITS: u32 = 495; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 32767; + + fn exp_values() -> u32 { return 65536; } + + fn is_finite(biased: u32) -> bool { return biased != 65535; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 512, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 16, "exponent sized for the range, not by phi"); + assert(exp_values() >= 59049, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/bnf64.t27 b/apps/website/public/t27/files/specs/numeric/bnf64.t27 new file mode 100644 index 0000000000..5b8992052d --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf64.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf64.t27 -- BNF64: Binary Network Float, 64-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF64 and +// TNF64 both land on M = 55. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 7 positions against BNF's 8, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 12 bits | M = 51 bits ] +// value = (-1)^sign * (1 + M/2^51) * 2^e, e in [-2047, 2048] + +module triformat_bnf64 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 12; // spans 2187 exponent values + const MANT_BITS: u32 = 51; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 2047; + + fn exp_values() -> u32 { return 4096; } + + fn is_finite(biased: u32) -> bool { return biased != 4095; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 64, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 12, "exponent sized for the range, not by phi"); + assert(exp_values() >= 2187, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/bnf8.t27 b/apps/website/public/t27/files/specs/numeric/bnf8.t27 new file mode 100644 index 0000000000..20136fc4fe --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/bnf8.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf8.t27 -- BNF8: Binary Network Float, 8-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF8 and +// TNF8 both land on M = 3. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 3 positions against BNF's 4, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 5 bits | M = 2 bits ] +// value = (-1)^sign * (1 + M/2^2) * 2^e, e in [-15, 16] + +module triformat_bnf8 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 5; // spans 27 exponent values + const MANT_BITS: u32 = 2; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 15; + + fn exp_values() -> u32 { return 32; } + + fn is_finite(biased: u32) -> bool { return biased != 31; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 8, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 5, "exponent sized for the range, not by phi"); + assert(exp_values() >= 27, "covers the required range"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/e8m0.t27 b/apps/website/public/t27/files/specs/numeric/e8m0.t27 new file mode 100644 index 0000000000..f288ffbd95 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/e8m0.t27 @@ -0,0 +1,266 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/numeric/e8m0.t27 +// E8M0 -- the OCP Microscaling shared scale, and the trit count it does not have. +// +// WHY THIS EXISTS. `specs/numeric/formats_catalog.t27` is the numeric SSOT and it +// names `e8m0` FIVE times as the storage of another format -- +// +// mxfp8 storage=u8_plus_shared_e8m0 +// mxfp6 storage=u8_packed_plus_e8m0 +// mxfp4 storage=u8_packed_plus_e8m0 +// mxgf6 storage=u8_packed_plus_e8m0 +// mxgf4 storage=u8_packed_plus_e8m0 +// +// -- and `grep "id=e8m0 "` over the same file returns ZERO. The SSOT depends on a +// component it never defines. This file defines it. Measured 2026-08-16. +// +// LAYOUT. E8M0 = [ exponent(8) ]. No sign. No mantissa. No implicit one. +// +// value = 2^(E - 127), E in [0, 254] +// E = 255 is NaN +// +// Source: OCP Microscaling Formats (MX) Specification v1.0, Rouhani et al. 2023, +// arXiv:2310.10537 -- the citation the catalogue already carries for every one of +// the five dependants. +// +// THE RESULT THIS MIGRATION PRODUCED, which is why it is worth a spec and not a +// constant. E8M0's exponent takes 255 distinct finite values, e in [-127, +127]. +// Five balanced trits span 3^5 = 243 and six span 3^6 = 729, so +// +// 243 < 255 < 729 +// +// and E8M0's exponent field is NOT a whole number of trits. It needs six and +// uses 255 of 729 -- 35 percent. Contrast `specs/numeric/tnf17.t27`, whose +// offset field holds exactly 81 = 3^4 values and uses 81 of 81. That contrast is +// stated below as a comptime invariant rather than as prose, because it is the +// only thing this format tells us that its own standard does not. +// +// WHAT THIS IS NOT. E8M0 is a SHARED SCALE, applied once per block of elements, +// not a weight code. Under the golden sieve (specs/numeric/golden_sieve.t27) it +// is not a candidate at all: S1 asks |A| = 3^k and 255 is not a power of three. +// It is also, for the same reason it is cheap, exempt from the sieve's concerns +// -- a pure power of two applied to a whole block is one shift, one lane, no +// DSP, and it never enters a neuron's truth table. +// +// phi^2 + phi^-2 = 3 | TRINITY + +module E8M0 { + + // ---- Field geometry, from the OCP MX v1.0 specification ---- + + const E8M0_BITS : u32 = 8; + const E8M0_BIAS : i32 = 127; // code 127 == 2^0 + const E8M0_NAN_CODE : u32 = 255; // the one reserved code + const E8M0_MAX_FINITE : u32 = 254; // largest finite code, 2^127 + const E8M0_MIN_FINITE : u32 = 0; // smallest finite code, 2^-127 + const E8M0_ONE : u32 = 127; // the code whose value is 1.0 + + // Distinct finite values the field can hold: 0..254 inclusive. + const E8M0_FINITE_CODES : u32 = 255; + + // Trit spans, written out because the numeric core has no exponentiation. + // + // W781 DEFECT, caught by the comptime invariant that is the reason this file + // has invariants at all: the first version of this table started at 3^5, so + // `trits_needed(81)` answered 5 and `packs_exactly(81)` came back FALSE for a + // number that is exactly 3^4. The table must reach DOWN to every power a + // caller might land on, not only up to the one the subject format needs. + const THREE_POW_3 : u32 = 27; + const THREE_POW_4 : u32 = 81; + const THREE_POW_5 : u32 = 243; + const THREE_POW_6 : u32 = 729; + + // TNF17e's offset field, for the contrast invariant below. Kept as a local + // constant rather than an import so this file stays self-contained; the + // value is checked against tnf17.t27's own TNF_OFFSET_MAX + 1. + const TNF17_OFFSET_VALUES : u32 = 81; // 3^4, and it uses all 81 + + // ---- Decode ---- + + // The unbiased exponent. Returns the exponent of a FINITE code; callers must + // test e8m0_is_nan first, exactly as the standard requires. + fn e8m0_exponent(x: u32) -> i32 { + return ((x as i32) - E8M0_BIAS); + } + + fn e8m0_is_nan(x: u32) -> bool { + return (x == E8M0_NAN_CODE); + } + + fn e8m0_is_finite(x: u32) -> bool { + return (x <= E8M0_MAX_FINITE); + } + + // ---- Encode ---- + + // The inverse of e8m0_exponent, for e in [-127, +127]. Out-of-range inputs + // return the NaN code rather than wrapping: a scale that cannot be + // represented is not a scale, and silently aliasing it to a representable + // one is how a block of elements acquires the wrong magnitude. + fn e8m0_encode(e: i32) -> u32 { + if (e < (0 - E8M0_BIAS)) { return E8M0_NAN_CODE; } + if (e > E8M0_BIAS) { return E8M0_NAN_CODE; } + return ((e + E8M0_BIAS) as u32); + } + + // ---- Trit accounting: the part the standard does not state ---- + + // Whether `n` distinct values fit in five balanced trits, six, or neither + // exactly. Returns the number of trits NEEDED; 0 means more than six. + fn trits_needed(n: u32) -> u32 { + if (n <= THREE_POW_3) { return 3; } + if (n <= THREE_POW_4) { return 4; } + if (n <= THREE_POW_5) { return 5; } + if (n <= THREE_POW_6) { return 6; } + return 0; + } + + // The codes a trit count leaves unused. This is the substrate tax on the + // exponent field, in the same units the rest of the numeric line uses. + fn trit_waste(n: u32) -> u32 { + if (trits_needed(n) == 3) { return (THREE_POW_3 - n); } + if (trits_needed(n) == 4) { return (THREE_POW_4 - n); } + if (trits_needed(n) == 5) { return (THREE_POW_5 - n); } + if (trits_needed(n) == 6) { return (THREE_POW_6 - n); } + return 0; + } + + // Does `n` land exactly on a power of three, i.e. pack with zero waste? + fn packs_exactly(n: u32) -> bool { + return (trit_waste(n) == 0); + } + + // ---- Combinational port surface (T81: without this the module has no + // boundary and synthesises to nothing) ---- + // + // Round-trip a code through decode and encode. Exercises the bias path in + // both directions and the NaN guard, in one function. + fn on_comb(x: u32) -> u32 { + if (e8m0_is_nan(x)) { return E8M0_NAN_CODE; } + return e8m0_encode(e8m0_exponent(x)); + } + + // ---- Tests ---- + + test one_is_code_one_two_seven + given e = e8m0_exponent(E8M0_ONE) + then e == 0 + + test smallest_finite_is_minus_one_two_seven + given e = e8m0_exponent(E8M0_MIN_FINITE) + then e == -127 + + test largest_finite_is_plus_one_two_seven + given e = e8m0_exponent(E8M0_MAX_FINITE) + then e == 127 + + test nan_code_is_detected + given r = e8m0_is_nan(E8M0_NAN_CODE) + then r == true + + test max_finite_is_not_nan + given r = e8m0_is_nan(E8M0_MAX_FINITE) + then r == false + + test nan_code_is_not_finite + given r = e8m0_is_finite(E8M0_NAN_CODE) + then r == false + + test encode_zero_gives_one + given c = e8m0_encode(0) + then c == 127 + + test encode_minus_one_two_seven + given c = e8m0_encode(-127) + then c == 0 + + test encode_plus_one_two_seven + given c = e8m0_encode(127) + then c == 254 + + // The guard, and the reason it exists: 2^128 has no E8M0 code, and returning + // code 1 for it would scale a whole block by 2^-126. + test encode_out_of_range_is_nan + given c = e8m0_encode(128) + then c == 255 + + test encode_below_range_is_nan + given c = e8m0_encode(-128) + then c == 255 + + // ---- Trit accounting ---- + + test exponent_field_needs_six_trits + given t = trits_needed(E8M0_FINITE_CODES) + then t == 6 + + test exponent_field_wastes_four_hundred_seventy_four + given w = trit_waste(E8M0_FINITE_CODES) + then w == 474 + + test tnf17_offset_needs_exactly_four_trits + given t = trits_needed(TNF17_OFFSET_VALUES) + then t == 4 + + test tnf17_offset_wastes_nothing + given w = trit_waste(TNF17_OFFSET_VALUES) + then w == 0 + + // ---- Port surface ---- + + test comb_round_trips_one + given r = on_comb(E8M0_ONE) + then r == 127 + + test comb_round_trips_max_finite + given r = on_comb(E8M0_MAX_FINITE) + then r == 254 + + test comb_passes_nan_through + given r = on_comb(E8M0_NAN_CODE) + then r == 255 + + // ---- Invariants ---- + + // The field holds 2^8 codes, of which exactly one is reserved. + invariant one_code_is_reserved + assert E8M0_FINITE_CODES + 1 == 256 + + invariant bias_centres_the_range + assert E8M0_BIAS * 2 == (E8M0_MAX_FINITE as i32) + + invariant one_sits_at_the_bias + assert (E8M0_ONE as i32) == E8M0_BIAS + + invariant nan_is_the_code_above_max_finite + assert E8M0_NAN_CODE == E8M0_MAX_FINITE + 1 + + // THE RESULT. E8M0's exponent does not pack into trits and TNF17e's does. + // Stated as an assertion so the contrast is checked at compile time rather + // than asserted in a comment that can rot. + invariant e8m0_exponent_does_not_pack_into_trits + assert packs_exactly(E8M0_FINITE_CODES) == false + + invariant tnf17_offset_packs_exactly + assert packs_exactly(TNF17_OFFSET_VALUES) == true + + // 243 < 255 < 729 -- the reason it needs six trits and cannot use five. + invariant two_hundred_fifty_five_sits_between_the_powers + assert THREE_POW_5 < E8M0_FINITE_CODES + + invariant two_hundred_fifty_five_is_below_three_to_the_six + assert E8M0_FINITE_CODES < THREE_POW_6 + + // The waste is the tax, and it is 65 percent of a six-trit field. + invariant six_trit_field_is_mostly_unused + assert trit_waste(E8M0_FINITE_CODES) > (E8M0_FINITE_CODES + 200) + + // ---- Bench ---- + + bench e8m0_decode_encode + assert e8m0_exponent(E8M0_ONE) == 0 + assert e8m0_encode(0) == E8M0_ONE + assert on_comb(E8M0_MAX_FINITE) == E8M0_MAX_FINITE +} + +// phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/numeric/formats.t27 b/apps/website/public/t27/files/specs/numeric/formats.t27 index 8944e3ed48..7033b92069 100644 --- a/apps/website/public/t27/files/specs/numeric/formats.t27 +++ b/apps/website/public/t27/files/specs/numeric/formats.t27 @@ -36,7 +36,7 @@ module Formats { pub const ExpMin : u16 = 0; // ======================================================================== - // 2. GF16 -> f32 (decode) + // 2. GF16 → f32 (decode) // ======================================================================== // // Converts GF16 encoding to IEEE 754 binary32 floating point. @@ -61,7 +61,7 @@ module Formats { pub fn gf16_to_f32(x: u16) -> gf16; // ======================================================================== - // 3. f32 -> GF16 (encode, round-to-nearest) + // 3. f32 → GF16 (encode, round-to-nearest) // ======================================================================== // // Converts IEEE 754 binary32 floating point to GF16 encoding. diff --git a/apps/website/public/t27/files/specs/numeric/formats_catalog.t27 b/apps/website/public/t27/files/specs/numeric/formats_catalog.t27 new file mode 100644 index 0000000000..9a2d63a330 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/formats_catalog.t27 @@ -0,0 +1,489 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/numeric/formats_catalog.t27 +// +// Universal Numeric Format Catalog (SSOT) +// +// Single source of truth for every numeric format relevant to ML, +// scientific computing, historical hardware, and the GoldenFloat (GF) +// family. Codegen targets (Markdown / JSON / Python / Rust / C / TS) MUST be +// derived from this file via tools/gen_formats_catalog.py (bootstrap +// codegen, Python stop-gap until t27c is self-hosting). Do not hand-edit +// emitted files in gen/numeric/. +// +// Bootstrap grammar note: this file deliberately uses ONLY constructs that +// bootstrap/t27c.py can parse today (const + fn). Struct literals +// (Format { ... }) are NOT yet supported by t27c parse, so per-format +// records live as fn getters that the codegen reads from the AST. When +// t27c gains struct literals this file can be re-expressed as a const +// array of Format records without changing the codegen contract. +// +// Status labels (mandatory; see skills/user/goldenfloat-ladder + +// igla-phi-architecture): +// Verified - exact-by-construction or directly measured. +// EmpiricalFit - matches data but a parameter is chosen post-hoc. +// Open - plausible conjecture; carries a falsification path. +// Risk - weak venue, look-elsewhere, or already-matching control. +// Retracted - withdrawn; recorded, never used as evidence. +// Experimental - design exists on paper; not implemented or measured. +// Historical - shipped hardware, no longer current standard. +// +// Phi-distance metric: +// phi_distance(E, M) = abs(E / M - 1/phi) where 1/phi = 0.61803398874989 +// Lower is more phi-aligned. Only defined for radix-2 floats with +// separate E and M. Sentinel -1.0 means undefined. +// +// Anti-hype guardrails (inherited; CI-enforced): +// - English-only, ASCII-only. +// - No banned words: breakthrough / nobel / revolution / proves / +// first-ever / world-first / industry-leading / prize. +// - GFTernary 0.000 and GF64 0.003 are Verified arithmetic; the moat +// (per-rung quality beating posit / takum / OCP-MX / LNS) stays Open +// conjecture and lives ONLY in the FL-002 ledger with Fpath F1/F2/F3. +// - takum (arXiv:2404.18603), posit, OCP-MX, LNS are ALLIES and +// falsification targets, never "competitors to dismiss" and never +// "the only" formats. + +module FormatsCatalog { + + // ---------------------------------------------------------------------- + // Anchor constants. + // ---------------------------------------------------------------------- + + // Trinity identity (Lucas L2, 1878 -- Binet corollary). Verified. + const TRINITY: f64 = 3.0; + + // ---------------------------------------------------------------------- + // Per-format records. Codegen parses these fn bodies for field values. + // Field order is fixed: bits, s, e, m, bias, phi_distance, storage, + // cluster, status, standard, use_case, gf_relation, source. + // + // CATALOG line in the trailing comment is the canonical machine-readable + // record: the bootstrap codegen reads it. When t27c gains struct + // literals this drops out and the codegen reads the AST directly. + // ---------------------------------------------------------------------- + + // ============================================================ + // 12.2.1 IEEE 754 binary (radix-2) + // ============================================================ + + // CATALOG: id=binary16 name="binary16 (fp16, half)" bits=16 s=1 e=5 m=10 bias=15 phi_distance=0.118 storage=u16 cluster=Ieee754Binary status=Verified standard="IEEE 754-2008" use_case="GPU activations, inference" gf_relation=competitor source="IEEE 754-2008" + fn binary16() -> str { return "binary16"; } + + // CATALOG: id=binary32 name="binary32 (fp32, single)" bits=32 s=1 e=8 m=23 bias=127 phi_distance=0.270 storage=u32 cluster=Ieee754Binary status=Verified standard="IEEE 754-1985" use_case="industry default" gf_relation=competitor source="IEEE 754-1985" + fn binary32() -> str { return "binary32"; } + + // CATALOG: id=binary64 name="binary64 (fp64, double)" bits=64 s=1 e=11 m=52 bias=1023 phi_distance=0.406 storage=u64 cluster=Ieee754Binary status=Verified standard="IEEE 754-1985" use_case="scientific computing" gf_relation=competitor source="IEEE 754-1985" + fn binary64() -> str { return "binary64"; } + + // CATALOG: id=binary128 name="binary128 (fp128, quad)" bits=128 s=1 e=15 m=112 bias=16383 phi_distance=0.484 storage=u128 cluster=Ieee754Binary status=Verified standard="IEEE 754-2008" use_case="high-precision simulations" gf_relation=competitor source="IEEE 754-2008" + fn binary128() -> str { return "binary128"; } + + // CATALOG: id=binary256 name="binary256 (octuple)" bits=256 s=1 e=19 m=236 bias=262143 phi_distance=0.538 storage=u256_software cluster=Ieee754Binary status=Verified standard="IEEE 754-2008" use_case="astronomy, cryptography" gf_relation=competitor source="IEEE 754-2008" + fn binary256() -> str { return "binary256"; } + + // ============================================================ + // 12.2.2 IEEE 754 decimal (radix-10) -- phi_distance undefined + // ============================================================ + + // CATALOG: id=decimal32 name="decimal32" bits=32 s=1 e=11 m=20 bias=101 phi_distance=-1.0 storage=u32 cluster=Ieee754Decimal status=Verified standard="IEEE 754-2008 (DPD/BID)" use_case="banking, GAAP" gf_relation=orthogonal source="IEEE 754-2008" + fn decimal32() -> str { return "decimal32"; } + + // CATALOG: id=decimal64 name="decimal64" bits=64 s=1 e=13 m=50 bias=398 phi_distance=-1.0 storage=u64 cluster=Ieee754Decimal status=Verified standard="IEEE 754-2008" use_case="financial databases" gf_relation=orthogonal source="IEEE 754-2008" + fn decimal64() -> str { return "decimal64"; } + + // CATALOG: id=decimal128 name="decimal128" bits=128 s=1 e=17 m=110 bias=6176 phi_distance=-1.0 storage=u128 cluster=Ieee754Decimal status=Verified standard="IEEE 754-2008" use_case="audit ledgers" gf_relation=orthogonal source="IEEE 754-2008" + fn decimal128() -> str { return "decimal128"; } + + // ============================================================ + // 12.2.3 Extended / non-standard float + // ============================================================ + + // CATALOG: id=x87_fp80 name="x87 FP80" bits=80 s=1 e=15 m=64 bias=16383 phi_distance=-1.0 storage=u80_padded cluster=ExtendedFloat status=Historical standard="Intel x87 (explicit integer bit)" use_case="legacy long double on x86" gf_relation=orthogonal source="Intel SDM" + fn x87_fp80() -> str { return "x87_fp80"; } + + // CATALOG: id=double_double name="double-double" bits=128 s=2 e=22 m=104 bias=0 phi_distance=-1.0 storage=two_u64 cluster=ExtendedFloat status=Verified standard="Bailey/Hida (software)" use_case="software extended precision" gf_relation=orthogonal source="Bailey-Hida 2001" + fn double_double() -> str { return "double_double"; } + + // CATALOG: id=quad_double name="quad-double" bits=256 s=4 e=44 m=208 bias=0 phi_distance=-1.0 storage=four_u64 cluster=ExtendedFloat status=Verified standard="Bailey/Hida (software)" use_case="astrophysics, quad-precision sims" gf_relation=orthogonal source="Bailey-Hida 2001" + fn quad_double() -> str { return "quad_double"; } + + // ============================================================ + // 12.2.4 ML low-precision (E:M variants) + // ============================================================ + + // CATALOG: id=bfloat16 name="bfloat16 (BF16)" bits=16 s=1 e=8 m=7 bias=127 phi_distance=0.525 storage=u16 cluster=MlLowPrecision status=Verified standard="Google Brain" use_case="training (range > precision)" gf_relation=competitor source="Wang-Kanwar 2019" + fn bfloat16() -> str { return "bfloat16"; } + + // CATALOG: id=tf32 name="TensorFloat-32 (TF32)" bits=19 s=1 e=8 m=10 bias=127 phi_distance=0.270 storage=u32_padded cluster=MlLowPrecision status=Verified standard="NVIDIA Ampere" use_case="A100/H100 mixed precision" gf_relation=competitor source="NVIDIA Ampere whitepaper" + fn tf32() -> str { return "tf32"; } + + // CATALOG: id=fp8_e4m3 name="FP8 E4M3" bits=8 s=1 e=4 m=3 bias=7 phi_distance=0.715 storage=u8 cluster=MlLowPrecision status=Verified standard="OCP / NVIDIA / Arm / Intel" use_case="inference, gradient ranges" gf_relation=competitor source="Micikevicius 2022 (arXiv:2209.05433)" + fn fp8_e4m3() -> str { return "fp8_e4m3"; } + + // CATALOG: id=fp8_e5m2 name="FP8 E5M2" bits=8 s=1 e=5 m=2 bias=15 phi_distance=1.882 storage=u8 cluster=MlLowPrecision status=Verified standard="OCP / NVIDIA" use_case="activations, wide range" gf_relation=competitor source="Micikevicius 2022" + fn fp8_e5m2() -> str { return "fp8_e5m2"; } + + // CATALOG: id=fp6_e3m2 name="FP6 E3M2" bits=6 s=1 e=3 m=2 bias=3 phi_distance=0.882 storage=u8_packed cluster=MlLowPrecision status=Verified standard="OCP MX" use_case="aggressive quant inference" gf_relation=competitor source="OCP MX v1.0 (2023)" + fn fp6_e3m2() -> str { return "fp6_e3m2"; } + + // CATALOG: id=fp6_e2m3 name="FP6 E2M3" bits=6 s=1 e=2 m=3 bias=1 phi_distance=0.049 storage=u8_packed cluster=MlLowPrecision status=Verified standard="OCP MX" use_case="mantissa-heavy quant" gf_relation=ally source="OCP MX v1.0 (2023)" + fn fp6_e2m3() -> str { return "fp6_e2m3"; } + + // CATALOG: id=fp4_e2m1 name="FP4 E2M1" bits=4 s=1 e=2 m=1 bias=1 phi_distance=1.382 storage=u8_packed cluster=MlLowPrecision status=Verified standard="OCP MX" use_case="extreme quant inference" gf_relation=competitor source="OCP MX v1.0 (2023)" + fn fp4_e2m1() -> str { return "fp4_e2m1"; } + + // ============================================================ + // 12.2.5 Microscaling (OCP MX) -- block-shared exponent + // ============================================================ + + // CATALOG: id=mxfp8 name="MXFP8" bits=8 s=1 e=4 m=3 bias=7 phi_distance=0.715 storage=u8_plus_shared_e8m0 cluster=Microscaling status=Verified standard="OCP MX v1.0" use_case="LLM inference" gf_relation=ally source="Rouhani 2023 (arXiv:2310.10537)" + fn mxfp8() -> str { return "mxfp8"; } + + // CATALOG: id=mxfp6 name="MXFP6" bits=6 s=1 e=3 m=2 bias=3 phi_distance=0.882 storage=u8_packed_plus_e8m0 cluster=Microscaling status=Verified standard="OCP MX v1.0" use_case="aggressive inference" gf_relation=ally source="Rouhani 2023" + fn mxfp6() -> str { return "mxfp6"; } + + // CATALOG: id=mxfp4 name="MXFP4" bits=4 s=1 e=2 m=1 bias=1 phi_distance=1.382 storage=u8_packed_plus_e8m0 cluster=Microscaling status=Verified standard="OCP MX v1.0" use_case="extreme quant" gf_relation=ally source="Rouhani 2023" + fn mxfp4() -> str { return "mxfp4"; } + + // ============================================================ + // 12.2.6 Quantization-tuned non-uniform formats + // ============================================================ + + // CATALOG: id=nf4 name="NF4 (NormalFloat 4-bit)" bits=4 s=0 e=0 m=4 bias=0 phi_distance=-1.0 storage=u8_packed cluster=QuantTuned status=Verified standard="Dettmers 2023 (QLoRA)" use_case="LLM weight quantization (quantile-based on N(0,1))" gf_relation=orthogonal source="Dettmers 2023 (arXiv:2305.14314)" + fn nf4() -> str { return "nf4"; } + + // CATALOG: id=afp name="AFP (Adaptive Floating-Point)" bits=16 s=1 e=8 m=7 bias=127 phi_distance=-1.0 storage=u16_plus_tensor_shift cluster=QuantTuned status=Verified standard="Tambe 2020" use_case="efficient training" gf_relation=orthogonal source="Tambe 2020 (DAC)" + fn afp() -> str { return "afp"; } + + // ============================================================ + // 12.2.7 Posit / unum III. es-schedule per ratified-2022 standard + // (es=2 for all widths). + // ============================================================ + + // CATALOG: id=posit8 name="Posit8" bits=8 s=1 e=2 m=0 bias=0 phi_distance=-1.0 storage=u8 cluster=PositUnumIII status=Verified standard="Posit Standard 2022 (es=2)" use_case="inference" gf_relation=ally source="Posit Standard 2022 (posithub.org)" + fn posit8() -> str { return "posit8"; } + + // CATALOG: id=posit16 name="Posit16" bits=16 s=1 e=2 m=0 bias=0 phi_distance=-1.0 storage=u16 cluster=PositUnumIII status=Verified standard="Posit Standard 2022 (es=2)" use_case="mixed-precision training" gf_relation=ally source="Posit Standard 2022" + fn posit16() -> str { return "posit16"; } + + // CATALOG: id=posit32 name="Posit32" bits=32 s=1 e=2 m=0 bias=0 phi_distance=-1.0 storage=u32 cluster=PositUnumIII status=Verified standard="Posit Standard 2022 (es=2)" use_case="f32 replacement" gf_relation=ally source="Posit Standard 2022" + fn posit32() -> str { return "posit32"; } + + // CATALOG: id=posit64 name="Posit64" bits=64 s=1 e=2 m=0 bias=0 phi_distance=-1.0 storage=u64 cluster=PositUnumIII status=Verified standard="Posit Standard 2022 (es=2)" use_case="f64 replacement" gf_relation=ally source="Posit Standard 2022" + fn posit64() -> str { return "posit64"; } + + // takum -- the strongest live counterexample to GF breadth-as-moat. + + // CATALOG: id=takum8 name="takum8" bits=8 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=u8 cluster=PositUnumIII status=Verified standard="Hunhold 2024 (tapered-precision)" use_case="IEEE-754 backward-compatible tapered" gf_relation=ally source="Hunhold 2024 (arXiv:2404.18603)" + fn takum8() -> str { return "takum8"; } + + // CATALOG: id=takum16 name="takum16" bits=16 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=u16 cluster=PositUnumIII status=Verified standard="Hunhold 2024" use_case="single-rule ladder counterexample" gf_relation=ally source="Hunhold 2024 (arXiv:2404.18603)" + fn takum16() -> str { return "takum16"; } + + // CATALOG: id=takum32 name="takum32" bits=32 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=u32 cluster=PositUnumIII status=Verified standard="Hunhold 2024" use_case="tapered fp32-class" gf_relation=ally source="Hunhold 2024" + fn takum32() -> str { return "takum32"; } + + // CATALOG: id=takum64 name="takum64" bits=64 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=u64 cluster=PositUnumIII status=Verified standard="Hunhold 2024" use_case="tapered fp64-class" gf_relation=ally source="Hunhold 2024" + fn takum64() -> str { return "takum64"; } + + // ============================================================ + // 12.2.8 LNS -- Logarithmic Number System + // ============================================================ + + // CATALOG: id=lns8 name="LNS-8" bits=8 s=1 e=7 m=0 bias=0 phi_distance=-1.0 storage=u8 cluster=Lns status=Verified standard="Arnold 1990; LNS-Madam (2021)" use_case="DSP, signal processing" gf_relation=orthogonal source="Alam 2021 (arXiv:2106.13914)" + fn lns8() -> str { return "lns8"; } + + // CATALOG: id=lns16 name="LNS-16" bits=16 s=1 e=15 m=0 bias=0 phi_distance=-1.0 storage=u16 cluster=Lns status=Verified standard="LNS-Madam (2021)" use_case="log-domain training (mul -> add)" gf_relation=orthogonal source="Alam 2021" + fn lns16() -> str { return "lns16"; } + + // CATALOG: id=lns32 name="LNS-32" bits=32 s=1 e=31 m=0 bias=0 phi_distance=-1.0 storage=u32 cluster=Lns status=Verified standard="LNS-Madam (2021)" use_case="log-domain DSP" gf_relation=orthogonal source="Alam 2021" + fn lns32() -> str { return "lns32"; } + + // CATALOG: id=lns64 name="LNS-64" bits=64 s=1 e=63 m=0 bias=0 phi_distance=-1.0 storage=u64 cluster=Lns status=Verified standard="LNS-Madam (2021)" use_case="scientific log-domain" gf_relation=orthogonal source="Alam 2021" + fn lns64() -> str { return "lns64"; } + + // ============================================================ + // 12.2.9 GoldenFloat family (this work) + // + // Rule: e = round((N-1) / phi^2). 9/9 verified across the realised + // ladder. Anchor: phi^2 + phi^-2 = 3 (Lucas L2, 1878). Verified. + // Moat (per-rung accuracy + toolchain coherence beating posit / takum + // / OCP-MX / LNS): Open conjecture, lives only in FL-002 with Fpath. + // ============================================================ + + // Realised rungs. + + // CATALOG: id=gfternary name="GFTernary" bits=2 s=1 e=0 m=2 bias=0 phi_distance=0.000 storage=u2 cluster=GoldenFloat status=Verified standard="this work; {-phi, 0, +phi}" use_case="bulk layers (hybrid)" gf_relation=self source="BENCH-007" + fn gfternary() -> str { return "gfternary"; } + + // CATALOG: id=gf4 name="GF4" bits=4 s=1 e=1 m=2 bias=0 phi_distance=0.118 storage=u8 cluster=GoldenFloat rule=phi-ratio status=Experimental standard="this work; F0 minimal" use_case="proof-of-concept" gf_relation=self source="specs/numeric/gf4.t27" + fn gf4() -> str { return "gf4"; } + + // CATALOG: id=gf8 name="GF8" bits=8 s=1 e=3 m=4 bias=3 phi_distance=0.132 storage=u8 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; L1 Lucas" use_case="edge / sensors" gf_relation=self source="BENCH-007 (specs/numeric/gf8.t27)" + fn gf8() -> str { return "gf8"; } + + // CATALOG: id=gf12 name="GF12" bits=12 s=1 e=4 m=7 bias=7 phi_distance=0.047 storage=u16 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; L0/F3" use_case="mid-range / audio" gf_relation=self source="BENCH-007 (specs/numeric/gf12.t27)" + fn gf12() -> str { return "gf12"; } + + // CATALOG: id=gf16 name="GF16" bits=16 s=1 e=6 m=9 bias=31 phi_distance=0.049 storage=u16 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; PHI_BIAS=60; FPGA 35/35 on Artix-7 (no frequency claimed; 323 MHz withdrawn, see RESEARCH_CLAIMS.md)" use_case="training and inference (production)" gf_relation=self source="specs/numeric/gf16.t27; zenodo 10.5281/zenodo.19227877 (HW archive)" + fn gf16() -> str { return "gf16"; } + + // CATALOG: id=gf20 name="GF20" bits=20 s=1 e=7 m=12 bias=63 phi_distance=0.035 storage=u32 cluster=GoldenFloat rule=phi-ratio status=Experimental standard="this work; 17-squared empirical PHI_BIAS=289" use_case="high-precision edge" gf_relation=self source="specs/numeric/gf20.t27 (spec only)" + fn gf20() -> str { return "gf20"; } + + // CATALOG: id=gf24 name="GF24" bits=24 s=1 e=9 m=14 bias=255 phi_distance=0.025 storage=u32 cluster=GoldenFloat rule=phi-ratio status=Experimental standard="this work; rule e=round(23/phi^2)=9; normative bias=2^(e-1)-1=255; empirical PHI_BIAS=1364 (=L15) OPEN" use_case="server inference" gf_relation=self source="specs/numeric/gf24.t27 (spec only)" + fn gf24() -> str { return "gf24"; } + + // CATALOG: id=gf32 name="GF32" bits=32 s=1 e=12 m=19 bias=2047 phi_distance=0.014 storage=u32 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; F0 resolved" use_case="fp32 drop-in" gf_relation=self source="BENCH-012 (specs/numeric/gf32.t27)" + fn gf32() -> str { return "gf32"; } + + // CATALOG: id=gf64 name="GF64" bits=64 s=1 e=24 m=39 bias=8388607 phi_distance=0.003 storage=u64 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; EXP_MAX - BIAS" use_case="scientific / double" gf_relation=self source="BENCH-007b (specs/numeric/gf64.t27)" + fn gf64() -> str { return "gf64"; } + + // Predicted / spec-only GF rungs (rule-derived under FORMAT-SPEC-001 v1.2). + // Closed-form normative rule: e = round((N-1)/phi^2); m = N-1-e; + // bias = 2^(e-1)-1; exp_max = 2^e - 1. + + // CATALOG: id=gf6 name="GF6 (rule-derived)" bits=6 s=1 e=2 m=3 bias=1 phi_distance=0.049 storage=u8_packed cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(5/phi^2)=2; FP6 E2M3 bridge" use_case="OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint" gf_relation=experimental source="specs/numeric/gf6.t27" + fn gf6() -> str { return "gf6"; } + + // CATALOG: id=gf10 name="GF10 (rule-derived)" bits=10 s=1 e=3 m=6 bias=3 phi_distance=0.118 storage=u16 cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(9/phi^2)=3; bridge GF8-GF12" use_case="OPEN R&D: tight-precision activations" gf_relation=experimental source="specs/numeric/gf10.t27" + fn gf10() -> str { return "gf10"; } + + // CATALOG: id=gf14 name="GF14 (rule-derived)" bits=14 s=1 e=5 m=8 bias=15 phi_distance=0.007 storage=u16 cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(13/phi^2)=5; bridge GF12-GF16; lowest phi-dist below GF48" use_case="OPEN R&D: drop-in for fp16 with tighter phi alignment" gf_relation=experimental source="specs/numeric/gf14.t27" + fn gf14() -> str { return "gf14"; } + + // CATALOG: id=gf48 name="GF48 (rule-derived)" bits=48 s=1 e=18 m=29 bias=131071 phi_distance=0.003 storage=u64_padded cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(47/phi^2)=18" use_case="OPEN R&D: between GF32 and GF64; tightest phi-dist of the wide rungs" gf_relation=experimental source="specs/numeric/gf48.t27" + fn gf48() -> str { return "gf48"; } + + // CATALOG: id=gf96 name="GF96 (rule-derived)" bits=96 s=1 e=36 m=59 bias=34359738367 phi_distance=0.008 storage=u128_padded cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(95/phi^2)=36" use_case="OPEN R&D: between GF64 and GF128 (phi-aligned extended)" gf_relation=experimental source="specs/numeric/gf96.t27" + fn gf96() -> str { return "gf96"; } + + // CATALOG: id=gf128 name="GF128 (rule-derived)" bits=128 s=1 e=49 m=78 bias=281474976710655 phi_distance=0.010 storage=u128 cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(127/phi^2)=49 (corrects v1.1 typo e=48)" use_case="OPEN R&D: phi-aligned binary128 alternative" gf_relation=experimental source="specs/numeric/gf128.t27" + fn gf128() -> str { return "gf128"; } + + // CATALOG: id=gf256 name="GF256 (rule-derived)" bits=256 s=1 e=97 m=158 bias=79228162514264337593543950335 phi_distance=0.004 storage=u256_software cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(255/phi^2)=97; normative bias=2^96-1" use_case="OPEN R&D: phi-aligned binary256 alternative" gf_relation=experimental source="specs/numeric/gf256.t27" + fn gf256() -> str { return "gf256"; } + + // CATALOG: id=gf512 name="GF512 (rule-derived)" bits=512 s=1 e=195 m=316 bias=2^194-1 phi_distance=0.0009 storage=u512_software cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(511/phi^2)=195" use_case="OPEN R&D: ultra-wide phi-aligned (extrapolation, no RTL)" gf_relation=experimental source="specs/numeric/gf512.t27" + fn gf512() -> str { return "gf512"; } + + // CATALOG: id=gf1024 name="GF1024 (rule-derived)" bits=1024 s=1 e=391 m=632 bias=2^390-1 phi_distance=0.0006 storage=u1024_software cluster=GoldenFloat rule=phi-ratio status=Open standard="this work; rule e=round(1023/phi^2)=391; lowest phi-distance in the ladder" use_case="OPEN R&D: limit-of-ladder phi alignment (extrapolation, no RTL)" gf_relation=experimental source="specs/numeric/gf1024.t27" + + + + // --------------------------------------------------------------------- + // GF-T -- the phi-lineage ternary ladder. NOT an old name for TNF. + // + // Four families, two axes: phi-derived vs theorem-derived, binary vs ternary. + // GF phi, binary e = round((N-1)/phi^2) + // GF-T phi, ternary mantissa from the phi lineage, exponent in trits + // BNF theorem, binary 1 + E + M = N, exponent sized for range + // TNF theorem, ternary 1 + E_t + M = N, exponent sized for range + // + // GF-T applies GF's rule to POSITIONS, and a trit is a position: the golden + // section divides the payload the way it divides a segment. E_t = round((N-1)/phi^2), + // M takes the rest. Every rung lands exactly and E_t/M converges on 1/phi. + // + // What it buys is range and what it costs is mantissa. At 64 bits GF-T spans + // 1.3e8 times TNF's range for 1.2e5 times the error -- neither dominates, and the + // corollary on the pair (M_eff, binades) forbids ranking them without a workload. + // + // This supersedes ad-hoc parameters the family carried until 2026-08-09, where + // exponents were sized at roughly log2(N) trits with no rule and positions were + // left unspent. + // --------------------------------------------------------------------- + // CATALOG: id=gft4 name="GF-T4" bits=4 s=1 e=1 m=2 bias=1 phi_distance=0.1180 storage=u4 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.5000 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft4.t27" + // CATALOG: id=gft8 name="GF-T8" bits=8 s=1 e=3 m=4 bias=13 phi_distance=0.1320 storage=u8 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.7500 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft8.t27" + // CATALOG: id=gft16 name="GF-T16" bits=16 s=1 e=6 m=9 bias=364 phi_distance=0.0486 storage=u16 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6667 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft16.t27" + // CATALOG: id=gft32 name="GF-T32" bits=32 s=1 e=12 m=19 bias=265720 phi_distance=0.0135 storage=u32 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6316 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft32.t27" + // CATALOG: id=gft64 name="GF-T64" bits=64 s=1 e=24 m=39 bias=141214768240 phi_distance=0.0026 storage=u64 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6154 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft64.t27" + // CATALOG: id=gft128 name="GF-T128" bits=128 s=1 e=49 m=78 bias=119649664615308764795041 phi_distance=0.0102 storage=u128 cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6282 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft128.t27" + // CATALOG: id=gft256 name="GF-T256" bits=256 s=1 e=97 m=158 bias=9544028161703913537712243143807801346335324481 phi_distance=0.0041 storage=u256_software cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6139 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft256.t27" + // CATALOG: id=gft512 name="GF-T512" bits=512 s=1 e=195 m=316 bias=546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053 phi_distance=0.0009 storage=u512_software cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6171 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft512.t27" + // CATALOG: id=gft1024 name="GF-T1024" bits=1024 s=1 e=391 m=632 bias=1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173 phi_distance=0.0006 storage=u1024_software cluster=GoldenFloat rule=phi-ratio status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6187 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft1024.t27" + + // --------------------------------------------------------------------- + // BNF -- Binary Network Float. The CONTROL for TNF. + // + // BNF and TNF are derived from the same theorem and differ in exactly one + // thing: the radix the exponent FIELD is encoded in. Everything else is + // identical -- the width rule 1 + E + M = N, the binary radix of the SCALE, + // the uniform mantissa. The pair therefore measures what the ternary encoding + // is worth instead of asserting it. + // + // Measured: on a binary fabric the two are identical at every width, exactly + // as the no-free-range theorem requires. On a ternary fabric TNF's exponent + // costs one position fewer, which goes to the mantissa and is worth exactly 2x + // in error by the precision law. Not more, not less, and the same at every rung. + // + // NOT the golden-ratio family. GF sizes its exponent by e = round((N-1)/phi^2) + // and GF-T inherits that mantissa into trits, leaving positions unspent. BNF + // and TNF size the exponent for the range the workload needs and then spend + // every position that remains. Four formats, two axes: phi vs theorem-derived, + // binary vs ternary. + // --------------------------------------------------------------------- + // CATALOG: id=bnf8 name="BNF8" bits=8 s=1 e=5 m=2 bias=15 phi_distance=1.882 storage=u8 cluster=GoldenFloat status=Open standard="this work; control for TNF8; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf8.t27" + // CATALOG: id=bnf16 name="BNF16" bits=16 s=1 e=7 m=8 bias=63 phi_distance=0.257 storage=u16 cluster=GoldenFloat status=Open standard="this work; control for TNF16; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf16.t27" + // CATALOG: id=bnf32 name="BNF32" bits=32 s=1 e=10 m=21 bias=511 phi_distance=0.142 storage=u32 cluster=GoldenFloat status=Open standard="this work; control for TNF32; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf32.t27" + // CATALOG: id=bnf64 name="BNF64" bits=64 s=1 e=12 m=51 bias=2047 phi_distance=0.383 storage=u64 cluster=GoldenFloat status=Open standard="this work; control for TNF64; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf64.t27" + // CATALOG: id=bnf128 name="BNF128" bits=128 s=1 e=13 m=114 bias=4095 phi_distance=0.504 storage=u128 cluster=GoldenFloat status=Open standard="this work; control for TNF128; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf128.t27" + // CATALOG: id=bnf256 name="BNF256" bits=256 s=1 e=15 m=240 bias=16383 phi_distance=0.556 storage=u256_software cluster=GoldenFloat status=Open standard="this work; control for TNF256; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf256.t27" + // CATALOG: id=bnf512 name="BNF512" bits=512 s=1 e=16 m=495 bias=32767 phi_distance=0.586 storage=u512_software cluster=GoldenFloat status=Open standard="this work; control for TNF512; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf512.t27" + // CATALOG: id=bnf1024 name="BNF1024" bits=1024 s=1 e=18 m=1005 bias=131071 phi_distance=0.600 storage=u1024_software cluster=GoldenFloat status=Open standard="this work; control for TNF1024; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf1024.t27" + + // --------------------------------------------------------------------- + // TNF -- Ternary Network Float. Built as a reference for TERNARY NETWORKS, + // where the weight is in {-1,0,+1} and the multiply disappears. The exponent + // FIELD is balanced ternary; the + // RADIX is binary. A genuine ternary-radix float (scaling by 3^e, as Ternary27 + // does) measures 0.331 positions per number worse at equal width, so the name + // deliberately claims the encoding and not the radix. + // + // Distinct from GFTernary (a 2-bit {-phi, 0, +phi} alphabet, not a float at + // all) and from the binary GF ladder above. A glob of gft* matches gfternary; + // it has already cost this repository a deleted spec and a dropped pack index + // entry. Match tef[0-9]+ or gft[0-9]+, never a bare prefix. + // + // FORMER NAMES: GF-T (2026 and earlier), then TEF for one day on 2026-08-09, renamed 2026-08-09, carried in + // former_name= on every row. The ladder has NEVER been published under either + // name -- arXiv:2606.05017 is the binary GF family and contains no occurrence + // of "GF-T", and arXiv:2606.09686 is this catalog, which had zero GF-T rows + // until they were added on 2026-08-09. The rename therefore retracts nothing + // and breaks no citation. former_name= is for internal continuity only: + // research notes, prior branches and the author's CV and profile carry the old + // label, and this campaign's measurements against takum/tekum/posit were + // recorded under it. + // + // Two fields below need reading with care: + // e= is a count of balanced-ternary TRITS, not bits. The bit-equivalent + // is Et*log2(3) and is given in the standard= string of each row. + // phi_distance= is computed by the catalog's own |e/m - 1/phi| on that + // bit-equivalent. It rises toward 1/phi = 0.618 as N grows, and that + // is structural rather than a defect: GF sizes its exponent by + // e = round((N-1)/phi^2), which puts e/m at 1/phi by construction, + // while TNF sizes its exponent for RANGE and takes M = N-1-Et. + // The two ladders optimise different axes; the field makes it visible. + // --------------------------------------------------------------------- + // CATALOG: id=tnf4 name="TNF4" former_name="GF-T4" bits=4 s=1 e=2 m=1 bias=4 phi_distance=2.552 storage=u4 cluster=GoldenFloat status=Verified standard="this work; e is 2 balanced-ternary TRITS not bits (3.17 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 12 LUT 161.1 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf4.t27" + // CATALOG: id=tnf8 name="TNF8" former_name="GF-T8" bits=8 s=1 e=3 m=4 bias=13 phi_distance=0.571 storage=u8 cluster=GoldenFloat status=Verified standard="this work; e is 3 balanced-ternary TRITS not bits (4.75 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 50 LUT 153.2 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf8.t27" + // CATALOG: id=tnf16 name="TNF16" former_name="GF-T16" bits=16 s=1 e=4 m=11 bias=40 phi_distance=0.086 storage=u16 cluster=GoldenFloat status=Verified standard="this work; e is 4 balanced-ternary TRITS not bits (6.34 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 212 LUT 131.7 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf16.t27" + // CATALOG: id=tnf32 name="TNF32" former_name="GF-T32" bits=32 s=1 e=6 m=25 bias=364 phi_distance=0.238 storage=u32 cluster=GoldenFloat status=Verified standard="this work; e is 6 balanced-ternary TRITS not bits (9.51 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 1477 LUT 83.3 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf32.t27" + // CATALOG: id=tnf64 name="TNF64" former_name="GF-T64" bits=64 s=1 e=7 m=56 bias=1093 phi_distance=0.420 storage=u64 cluster=GoldenFloat status=Verified standard="this work; e is 7 balanced-ternary TRITS not bits (11.09 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 7479 LUT 48.2 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf64.t27" + // CATALOG: id=tnf128 name="TNF128" former_name="GF-T128" bits=128 s=1 e=8 m=119 bias=3280 phi_distance=0.511 storage=u128 cluster=GoldenFloat status=Open standard="this work; e is 8 balanced-ternary TRITS not bits (12.68 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf128.t27" + // CATALOG: id=tnf256 name="TNF256" former_name="GF-T256" bits=256 s=1 e=9 m=246 bias=9841 phi_distance=0.560 storage=u256_software cluster=GoldenFloat status=Open standard="this work; e is 9 balanced-ternary TRITS not bits (14.26 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf256.t27" + // CATALOG: id=tnf512 name="TNF512" former_name="GF-T512" bits=512 s=1 e=10 m=501 bias=29524 phi_distance=0.586 storage=u512_software cluster=GoldenFloat status=Open standard="this work; e is 10 balanced-ternary TRITS not bits (15.85 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf512.t27" + // CATALOG: id=tnf1024 name="TNF1024" former_name="GF-T1024" bits=1024 s=1 e=11 m=1012 bias=88573 phi_distance=0.601 storage=u1024_software cluster=GoldenFloat status=Open standard="this work; e is 11 balanced-ternary TRITS not bits (17.43 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf1024.t27" + fn gf1024() -> str { return "gf1024"; } + + // GF hybrids / experimental compositions (Section 12.5). + + // CATALOG: id=gf8_bfp name="GF8-BFP (block FP atop GF8)" bits=8 s=1 e=3 m=4 bias=3 phi_distance=0.132 storage=u8_plus_shared_exp cluster=GoldenFloat rule=phi-ratio status=Experimental standard="this work; per-tile shared exponent" use_case="OPEN R&D: LLM-quantization-friendly GF8" gf_relation=experimental source="section12.5" + fn gf8_bfp() -> str { return "gf8_bfp"; } + + // CATALOG: id=gf_lns_hybrid name="GF + LNS hybrid (dual-space)" bits=16 s=1 e=6 m=9 bias=31 phi_distance=0.049 storage=u16_plus_lns_path cluster=GoldenFloat rule=phi-ratio status=Experimental standard="this work; mul in log-space, accumulate Lucas-closed" use_case="OPEN R&D: dual-space arithmetic" gf_relation=experimental source="section12.5" + fn gf_lns_hybrid() -> str { return "gf_lns_hybrid"; } + + // CATALOG: id=mxgf6 name="MXGF6 (microscaling GF6)" bits=6 s=1 e=2 m=3 bias=1 phi_distance=0.05 storage=u8_packed_plus_e8m0 cluster=GoldenFloat rule=phi-ratio status=Experimental standard="this work; OCP MX block + GF6" use_case="OPEN R&D: phi-aligned MX-6 candidate" gf_relation=experimental source="section12.5" + fn mxgf6() -> str { return "mxgf6"; } + + // CATALOG: id=mxgf4 name="MXGF4 (microscaling GF4)" bits=4 s=1 e=1 m=2 bias=0 phi_distance=0.118 storage=u8_packed_plus_e8m0 cluster=GoldenFloat rule=phi-ratio status=Experimental standard="this work; OCP MX block + GF4" use_case="OPEN R&D: phi-aligned MX-4 candidate" gf_relation=experimental source="section12.5" + fn mxgf4() -> str { return "mxgf4"; } + + // ============================================================ + // 12.2.10 Integer / fixed-point + // ============================================================ + + // CATALOG: id=int4 name="INT4 / UINT4" bits=4 s=1 e=0 m=3 bias=0 phi_distance=-1.0 storage=u8_packed cluster=IntegerFixed status=Verified standard="two complement" use_case="aggressive quantization" gf_relation=competitor source="ISO/IEC 9899" + fn int4() -> str { return "int4"; } + + // CATALOG: id=int8 name="INT8 / UINT8" bits=8 s=1 e=0 m=7 bias=0 phi_distance=-1.0 storage=u8 cluster=IntegerFixed status=Verified standard="two complement" use_case="INT8 inference, per-channel scale" gf_relation=competitor source="ISO/IEC 9899" + fn int8() -> str { return "int8"; } + + // CATALOG: id=int16 name="INT16 / UINT16" bits=16 s=1 e=0 m=15 bias=0 phi_distance=-1.0 storage=u16 cluster=IntegerFixed status=Verified standard="two complement" use_case="DSP, embedded ML" gf_relation=competitor source="ISO/IEC 9899" + fn int16() -> str { return "int16"; } + + // CATALOG: id=int32 name="INT32 / UINT32" bits=32 s=1 e=0 m=31 bias=0 phi_distance=-1.0 storage=u32 cluster=IntegerFixed status=Verified standard="two complement" use_case="general CPU integer" gf_relation=competitor source="ISO/IEC 9899" + fn int32() -> str { return "int32"; } + + // CATALOG: id=int64 name="INT64 / UINT64" bits=64 s=1 e=0 m=63 bias=0 phi_distance=-1.0 storage=u64 cluster=IntegerFixed status=Verified standard="two complement" use_case="databases, timestamps" gf_relation=competitor source="ISO/IEC 9899" + fn int64() -> str { return "int64"; } + + // CATALOG: id=int128 name="INT128 / UINT128" bits=128 s=1 e=0 m=127 bias=0 phi_distance=-1.0 storage=u128 cluster=IntegerFixed status=Verified standard="two complement" use_case="crypto, big-int" gf_relation=competitor source="Rust/Clang u128" + fn int128() -> str { return "int128"; } + + // CATALOG: id=q_format name="Q-format (Qm.n)" bits=0 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=varies cluster=IntegerFixed status=Verified standard="TI fixed-point" use_case="audio DSP, fixed-point ML" gf_relation=orthogonal source="TI SPRA704" + fn q_format() -> str { return "q_format"; } + + // CATALOG: id=bcd name="BCD (binary-coded decimal)" bits=0 s=0 e=0 m=0 bias=0 phi_distance=-1.0 storage=u4_per_digit cluster=IntegerFixed status=Historical standard="IBM 1959" use_case="calculators, GAAP" gf_relation=orthogonal source="ISO/IEC 8859" + fn bcd() -> str { return "bcd"; } + + // ============================================================ + // 12.2.11 Historical / vendor + // ============================================================ + + // CATALOG: id=ibm_hfp32 name="IBM HFP (single)" bits=32 s=1 e=7 m=24 bias=64 phi_distance=-1.0 storage=u32 cluster=HistoricalVendor status=Historical standard="IBM System/360 (1964); base-16 exponent" use_case="legacy mainframe" gf_relation=orthogonal source="IBM POO" + fn ibm_hfp32() -> str { return "ibm_hfp32"; } + + // CATALOG: id=ibm_hfp64 name="IBM HFP (double)" bits=64 s=1 e=7 m=56 bias=64 phi_distance=-1.0 storage=u64 cluster=HistoricalVendor status=Historical standard="IBM System/360 (1964)" use_case="legacy mainframe" gf_relation=orthogonal source="IBM POO" + fn ibm_hfp64() -> str { return "ibm_hfp64"; } + + // CATALOG: id=ibm_hfp128 name="IBM HFP (extended)" bits=128 s=1 e=7 m=120 bias=64 phi_distance=-1.0 storage=u128 cluster=HistoricalVendor status=Historical standard="IBM z/Architecture" use_case="legacy mainframe" gf_relation=orthogonal source="IBM POO" + fn ibm_hfp128() -> str { return "ibm_hfp128"; } + + // CATALOG: id=ms_mbf32 name="Microsoft MBF (single)" bits=32 s=1 e=8 m=23 bias=129 phi_distance=-1.0 storage=u32 cluster=HistoricalVendor status=Historical standard="MS BASIC / MS-DOS (pre-IEEE)" use_case="MS BASIC legacy" gf_relation=orthogonal source="MS-DOS docs" + fn ms_mbf32() -> str { return "ms_mbf32"; } + + // CATALOG: id=ms_mbf64 name="Microsoft MBF (double)" bits=64 s=1 e=8 m=55 bias=129 phi_distance=-1.0 storage=u64 cluster=HistoricalVendor status=Historical standard="MS BASIC" use_case="MS BASIC legacy" gf_relation=orthogonal source="MS-DOS docs" + fn ms_mbf64() -> str { return "ms_mbf64"; } + + // CATALOG: id=vax_f name="VAX F-float" bits=32 s=1 e=8 m=23 bias=128 phi_distance=-1.0 storage=u32 cluster=HistoricalVendor status=Historical standard="DEC VAX" use_case="DEC legacy" gf_relation=orthogonal source="VAX Architecture Reference" + fn vax_f() -> str { return "vax_f"; } + + // CATALOG: id=vax_d name="VAX D-float" bits=64 s=1 e=8 m=55 bias=128 phi_distance=-1.0 storage=u64 cluster=HistoricalVendor status=Historical standard="DEC VAX" use_case="DEC legacy double" gf_relation=orthogonal source="VAX Architecture Reference" + fn vax_d() -> str { return "vax_d"; } + + // CATALOG: id=vax_g name="VAX G-float" bits=64 s=1 e=11 m=52 bias=1024 phi_distance=-1.0 storage=u64 cluster=HistoricalVendor status=Historical standard="DEC VAX (IEEE-like)" use_case="DEC legacy" gf_relation=orthogonal source="VAX Architecture Reference" + fn vax_g() -> str { return "vax_g"; } + + // CATALOG: id=vax_h name="VAX H-float" bits=128 s=1 e=15 m=112 bias=16384 phi_distance=-1.0 storage=u128 cluster=HistoricalVendor status=Historical standard="DEC VAX" use_case="DEC quad" gf_relation=orthogonal source="VAX Architecture Reference" + fn vax_h() -> str { return "vax_h"; } + + // CATALOG: id=cray_float name="Cray float" bits=64 s=1 e=15 m=48 bias=16384 phi_distance=-1.0 storage=u64 cluster=HistoricalVendor status=Historical standard="Cray-1 (1976); no NaN/Inf, unrounded mul" use_case="Cray legacy" gf_relation=orthogonal source="Cray-1 Hardware Reference" + fn cray_float() -> str { return "cray_float"; } + + // ============================================================ + // 12.2.12 Theoretical / parametric frameworks + // ============================================================ + + // CATALOG: id=minifloat name="minifloat (arbitrary E:M, <=16 bits)" bits=0 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=varies cluster=Theoretical status=Experimental standard="parametric framework" use_case="design space of GF4/GF8/GF12/GF16" gf_relation=ally source="Higham 1996" + fn minifloat() -> str { return "minifloat"; } + + // CATALOG: id=unum_i name="Unum I (tapered + ubound)" bits=0 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=varies cluster=Theoretical status=Experimental standard="Gustafson 2015 (predecessor to posit)" use_case="interval arithmetic" gf_relation=ally source="Gustafson 2015 (The End of Error)" + fn unum_i() -> str { return "unum_i"; } + + // CATALOG: id=unum_ii name="Unum II (SORN projective)" bits=0 s=0 e=0 m=0 bias=0 phi_distance=-1.0 storage=lookup_table cluster=Theoretical status=Experimental standard="Gustafson 2016" use_case="lookup-table real arithmetic; not GF-comparable" gf_relation=orthogonal source="Gustafson 2016" + fn unum_ii() -> str { return "unum_ii"; } + + // CATALOG: id=tapered_fp name="tapered floating point" bits=0 s=1 e=0 m=0 bias=0 phi_distance=-1.0 storage=varies cluster=Theoretical status=Experimental standard="Morris 1971; posit ancestor" use_case="variable mantissa via regime bits" gf_relation=ally source="Morris 1971 (IEEE TC)" + fn tapered_fp() -> str { return "tapered_fp"; } + + // ============================================================ + // 12.2.13 Compression / quantization tricks (apply atop a base format) + // ============================================================ + + // CATALOG: id=block_fp name="block floating point (BFP)" bits=0 s=0 e=0 m=0 bias=0 phi_distance=-1.0 storage=varies cluster=CompressionTrick status=Verified standard="Wilkinson 1965; modern revivals" use_case="per-tile shared exponent" gf_relation=ally source="Darvish-Rouhani 2020" + fn block_fp() -> str { return "block_fp"; } + + // CATALOG: id=shared_exp name="shared-exponent formats" bits=0 s=0 e=0 m=0 bias=0 phi_distance=-1.0 storage=varies cluster=CompressionTrick status=Verified standard="generalised BFP" use_case="LLM quantization" gf_relation=ally source="Darvish-Rouhani 2020" + fn shared_exp() -> str { return "shared_exp"; } + + // CATALOG: id=per_channel_scale name="INT8 with per-channel scale" bits=8 s=1 e=0 m=7 bias=0 phi_distance=-1.0 storage=u8_plus_fp32_scale cluster=CompressionTrick status=Verified standard="Jacob 2018 (TFLite)" use_case="standard quant inference" gf_relation=competitor source="Jacob 2018 (CVPR)" + fn per_channel_scale() -> str { return "per_channel_scale"; } + + // CATALOG: id=stochastic_rounding name="stochastic rounding (technique)" bits=0 s=0 e=0 m=0 bias=0 phi_distance=-1.0 storage=varies cluster=CompressionTrick status=Verified standard="Gupta 2015" use_case="training small networks at low precision" gf_relation=ally source="Gupta 2015 (ICML)" + fn stochastic_rounding() -> str { return "stochastic_rounding"; } + +} + +// EOF formats_catalog.t27 diff --git a/apps/website/public/t27/files/specs/numeric/gf10.t27 b/apps/website/public/t27/files/specs/numeric/gf10.t27 new file mode 100644 index 0000000000..b64cc33ecb --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf10.t27 @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf10.t27 -- GoldenFloat10 Encode/Decode +; GF10: 10-bit floating point with 1 sign + 3 exponent + 6 mantissa +; Bit layout: [S(1) E(3) M(6)] = [9:9][8:6][5:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (closed-form rule, no RTL yet on this repo). + +module triformat-gf10; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 10; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 3; +pub const MANT_BITS : u16 = 6; + +pub const SIGN_SHIFT : u16 = 9; +pub const EXP_SHIFT : u16 = 6; +pub const MANT_SHIFT : u16 = 0; + +pub const BIAS : u64 = 3; // 2^(E-1) - 1 +pub const EXP_MAX : u64 = 7; // 2^E - 1 + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.500000000000; +pub const PHI_DIST : f64 = 0.118033988750; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf10_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf10_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf10_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf10_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +invariant gf10_bias_identity { + // BIAS = 2^(E-1) - 1, as the declaration's own comment states + @compileAssert(BIAS == (1 << (EXP_BITS - 1)) - 1); +} + +invariant gf10_exp_max_identity { + // EXP_MAX = 2^E - 1 + @compileAssert(EXP_MAX == (1 << EXP_BITS) - 1); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: closed-form rule mis-applied (verify e = round((10-1)/phi^2) = 3, m = 6) +; or RTL emission diverges from this constant set. +; As of W601 the Fpath above is CHECKED by the invariants in this file. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf1024.t27 b/apps/website/public/t27/files/specs/numeric/gf1024.t27 new file mode 100644 index 0000000000..2b15ddb851 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf1024.t27 @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf1024.t27 -- GoldenFloat1024 Encode/Decode +; GF1024: 1024-bit floating point with 1 sign + 391 exponent + 632 mantissa +; Bit layout: [S(1) E(391) M(632)] = [1023:1023][1022:632][631:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (extrapolated; no RTL, no validated arithmetic). + +module triformat-gf1024; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 1024; +pub const SIGN_BITS : u8 = 1; +// W601: was `u8`, which cannot represent 391. The VALUE is right -- +// round((1024-1)/phi^2) = 391 -- and every other rung's exponent width does fit +// in u8 (195, 97, 49, 36, 18), so this is the one place the annotation was +// copied without checking. Invisible until an invariant used the constant in +// arithmetic and forced the compiler to represent it. +pub const EXP_BITS : u16 = 391; +pub const MANT_BITS : u16 = 632; + +pub const SIGN_SHIFT : u16 = 1023; +pub const EXP_SHIFT : u16 = 632; +pub const MANT_SHIFT : u16 = 0; + +; BIAS = 2^(390) - 1 -- multi-word constant (exceeds u64); see codegen +; EXP_MAX = 2^391 - 1 -- multi-word constant (exceeds u64) +pub const BIAS_EXPR : str = "2^(391-1) - 1"; +pub const EXP_MAX_EXPR : str = "2^391 - 1"; + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.618670886076; +pub const PHI_DIST : f64 = 0.000636897326; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf1024_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf1024_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf1024_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf1024_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: any matched-substrate accuracy test (e.g. GF1024 vs binary1024/posit1024/takum1024) +; where GF1024 fails to be parity-class or better falsifies this rung. +; Note: dynamic range of phi^512 overflows binary1024 normalization at some n; +; benchmarks MUST be normalised to in-range regimes. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf12.t27 b/apps/website/public/t27/files/specs/numeric/gf12.t27 index 023d72591f..f30b87cff3 100644 --- a/apps/website/public/t27/files/specs/numeric/gf12.t27 +++ b/apps/website/public/t27/files/specs/numeric/gf12.t27 @@ -1,16 +1,16 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/numeric/gf12.t27 -// GoldenFloat12 -- 12-bit phi-structured floating point -// NUMERIC-STANDARD-001 -- Agent 4 (P1) +// GoldenFloat12 — 12-bit φ-structured floating point +// NUMERIC-STANDARD-001 — Agent 4 (P1) module GF12 { // Import base format family use numeric::goldenfloat_family; use numeric::phi_ratio; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Format Definition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF12 bit layout: [S|EEEE|MMM MMMM] // S: 1 bit (sign) @@ -25,21 +25,21 @@ module GF12 { // Bias for exponent (2^(4-1) - 1 = 7) const EXP_BIAS : u8 = 7; - // phi-ratio: exp/mant = 4/7 ~= 0.571 (phi_distance = 0.047) - // This is the closest to 1/phi among all formats + // φ-ratio: exp/mant = 4/7 ≈ 0.571 (phi_distance = 0.047) + // This is the closest to 1/φ among all formats const PHI_DISTANCE : f64 = 0.04660512288042107; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. GoldenFloat12 Type - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct GF12 { raw : u16, // 12-bit value stored in u16 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Encoding/Decoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Encode f32 to GF12 fn encode(value: f32) -> GF12 { @@ -98,9 +98,9 @@ module GF12 { return value; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Format Properties - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn max_value() -> f32 { const mant_max = 1.0 + 127.0 / 128.0; @@ -118,9 +118,9 @@ module GF12 { return 1.0 / 128.0; // 0.0078125 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Validation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn validate_format() -> bool { const fmt = goldenfloat_family::get_format_by_name("GF12"); @@ -130,12 +130,12 @@ module GF12 { (fmt.?.mant_bits == MANT_BITS); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Use Cases - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF12 is optimal for: - // - Best phi-approximation (lowest phi_distance) + // - Best φ-approximation (lowest phi_distance) // - High-precision quantization // - Critical path weights // - Attention matrices @@ -143,9 +143,9 @@ module GF12 { // Memory: 12 bits = 1.5 bytes (~2.67x FP32 in same space) const MEMORY_RATIO_VS_FP32 : f32 = 12.0 / 32.0; // 0.375 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Helper Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn floor_log2(x: f32) -> i8 { if (x <= 0.0) { return -128; } @@ -287,9 +287,9 @@ module GF12 { return (xi - 1) as f32; } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for GF12 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gf12_decode_zero given gf = GF12{ raw = 0 } diff --git a/apps/website/public/t27/files/specs/numeric/gf128.t27 b/apps/website/public/t27/files/specs/numeric/gf128.t27 new file mode 100644 index 0000000000..4bbed84474 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf128.t27 @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf128.t27 -- GoldenFloat128 Encode/Decode +; GF128: 128-bit floating point with 1 sign + 49 exponent + 78 mantissa +; Bit layout: [S(1) E(49) M(78)] = [127:127][126:78][77:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (spec-only; no RTL on this repo's path). + +module triformat-gf128; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 128; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 49; +pub const MANT_BITS : u16 = 78; + +pub const SIGN_SHIFT : u16 = 127; +pub const EXP_SHIFT : u16 = 78; +pub const MANT_SHIFT : u16 = 0; + +; BIAS = 2^(48) - 1 -- multi-word constant (exceeds u64); see codegen +; EXP_MAX = 2^49 - 1 -- multi-word constant (exceeds u64) +pub const BIAS_EXPR : str = "2^(49-1) - 1"; +pub const EXP_MAX_EXPR : str = "2^49 - 1"; + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.628205128205; +pub const PHI_DIST : f64 = 0.010171139455; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf128_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf128_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf128_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf128_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: closed-form rule mis-applied (verify e = round((128-1)/phi^2) = 49, m = 78) +; or RTL emission diverges from this constant set. +; As of W601 the Fpath above is CHECKED by the invariants in this file. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf14.t27 b/apps/website/public/t27/files/specs/numeric/gf14.t27 new file mode 100644 index 0000000000..45dada54d3 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf14.t27 @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf14.t27 -- GoldenFloat14 Encode/Decode +; GF14: 14-bit floating point with 1 sign + 5 exponent + 8 mantissa +; Bit layout: [S(1) E(5) M(8)] = [13:13][12:8][7:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (closed-form rule, no RTL yet on this repo). + +module triformat-gf14; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 14; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 5; +pub const MANT_BITS : u16 = 8; + +pub const SIGN_SHIFT : u16 = 13; +pub const EXP_SHIFT : u16 = 8; +pub const MANT_SHIFT : u16 = 0; + +pub const BIAS : u64 = 15; // 2^(E-1) - 1 +pub const EXP_MAX : u64 = 31; // 2^E - 1 + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.625000000000; +pub const PHI_DIST : f64 = 0.006966011250; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf14_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf14_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf14_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf14_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +invariant gf14_bias_identity { + // BIAS = 2^(E-1) - 1, as the declaration's own comment states + @compileAssert(BIAS == (1 << (EXP_BITS - 1)) - 1); +} + +invariant gf14_exp_max_identity { + // EXP_MAX = 2^E - 1 + @compileAssert(EXP_MAX == (1 << EXP_BITS) - 1); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: closed-form rule mis-applied (verify e = round((14-1)/phi^2) = 5, m = 8) +; or RTL emission diverges from this constant set. +; As of W601 the Fpath above is CHECKED by the invariants in this file. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf16.t27 b/apps/website/public/t27/files/specs/numeric/gf16.t27 index b0ea5bf609..f91384e57f 100644 --- a/apps/website/public/t27/files/specs/numeric/gf16.t27 +++ b/apps/website/public/t27/files/specs/numeric/gf16.t27 @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 -; gf16.t27 -- GoldenFloat16 Encode/Decode +; gf16.t27 — GoldenFloat16 Encode/Decode ; GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa ; Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0] -; phi^2 + 1/phi^2 = 3 | TRINITY +; φ² + 1/φ² = 3 | TRINITY module triformat-gf16; @@ -58,7 +58,7 @@ pub const pow2_table : [32]u16 = [32]u16{ // Functions // ============================================================================ -// gf16_extract_sign(gf16: GF16) -> i8 +// gf16_extract_sign(gf16: GF16) → i8 // Extract sign bit (bit 15) // Returns: 0 for positive, -1 for negative pub fn gf16_extract_sign(gf16: GF16) i8 { @@ -66,21 +66,21 @@ pub fn gf16_extract_sign(gf16: GF16) i8 { return if (bit != 0) -1 else 0; } -// gf16_extract_exponent(gf16: GF16) -> i8 +// gf16_extract_exponent(gf16: GF16) → i8 // Extract exponent bits (bits 14-9) // Returns: 0-63 pub fn gf16_extract_exponent(gf16: GF16) i8 { return @as(i8, @intCast((gf16 >> EXP_SHIFT) & EXP_MASK)); } -// gf16_extract_mantissa(gf16: GF16) -> i16 +// gf16_extract_mantissa(gf16: GF16) → i16 // Extract mantissa bits (bits 8-0) // Returns: 0-511 pub fn gf16_extract_mantissa(gf16: GF16) i16 { return @as(i16, gf16 & MANT_MASK); } -// gf16_from_components(sign: i8, exp: i8, mant: i16) -> GF16 +// gf16_from_components(sign: i8, exp: i8, mant: i16) → GF16 // Assemble GF16 from sign, exponent, mantissa pub fn gf16_from_components(sign: i8, exp: i8, mant: i16) GF16 { const sign_bit = if (sign < 0) 1 else 0; @@ -89,19 +89,19 @@ pub fn gf16_from_components(sign: i8, exp: i8, mant: i16) GF16 { @as(GF16, @intCast(mant)); } -// gf16_is_zero(gf16: GF16) -> bool +// gf16_is_zero(gf16: GF16) → bool // Check if GF16 is zero (positive or negative) pub fn gf16_is_zero(gf16: GF16) bool { return gf16 == GF16_ZERO_POS or gf16 == GF16_ZERO_NEG; } -// gf16_is_special(gf16: GF16) -> bool +// gf16_is_special(gf16: GF16) → bool // Check if GF16 is Inf or NaN (exp == 63) pub fn gf16_is_special(gf16: GF16) bool { return gf16_extract_exponent(gf16) == EXP_MAX; } -// gf16_encode_f32(f32: f32) -> GF16 +// gf16_encode_f32(f32: f32) → GF16 // Encode IEEE 754 single precision to GF16 // Round-to-nearest, ties to even // Range: 2^-31 to 2^32 (normal), subnormals flushed to zero @@ -117,7 +117,7 @@ pub fn gf16_encode_f32(value: f32) GF16 { // Get f32 components const f32_bits: u32 = @bitCast(abs_value); - var f32_exp: i8 = @as(i8, @intCast((f32_bits >> 23) & 0xFF)) - 127; + var f32_exp: i8 = @intCast((f32_bits >> 23) & 0xFF) - 127; var f32_mant: u32 = f32_bits & 0x7FFFFF; // Convert exp from f32 bias (127) to GF16 bias (31) @@ -151,7 +151,7 @@ pub fn gf16_encode_f32(value: f32) GF16 { return gf16_from_components(sign, gf16_exp, mant); } -// gf16_decode_to_f32(gf16: GF16) -> f32 +// gf16_decode_to_f32(gf16: GF16) → f32 // Decode GF16 to IEEE 754 single precision pub fn gf16_decode_to_f32(gf16: GF16) f32 { // Handle zero @@ -180,15 +180,15 @@ pub fn gf16_decode_to_f32(gf16: GF16) f32 { const sign_mult = if (sign < 0) -1.0 else 1.0; const mant_mult = 1.0 + @as(f32, @floatFromInt(mant)) / 512.0; - const exp_mult = @as(f32, @exp2(@as(f32, @floatFromInt(exp - BIAS)))); + const exp_mult = @as(f32, @exp2(f32, @floatFromInt(exp - BIAS))); return sign_mult * mant_mult * exp_mult; } -// gf16_round_phi(value: f32) -> GF16 +// gf16_round_phi(value: f32) → GF16 // Phi-optimized rounding for GF16 // Uses golden ratio bias for rounding decisions instead of standard round-to-nearest -// Bias = (1/phi - 0.5) * scale, where 1/phi ~= 0.618 +// Bias = (1/φ - 0.5) * scale, where 1/φ ≈ 0.618 // This improves numerical stability for sacred physics calculations pub fn gf16_round_phi(value: f32) GF16 { // Handle zero @@ -202,7 +202,7 @@ pub fn gf16_round_phi(value: f32) GF16 { // Get f32 components const f32_bits: u32 = @bitCast(abs_value); - var f32_exp: i8 = @as(i8, @intCast((f32_bits >> 23) & 0xFF)) - 127; + var f32_exp: i8 = @intCast((f32_bits >> 23) & 0xFF) - 127; var f32_mant: u32 = f32_bits & 0x7FFFFF; // Convert exp from f32 bias (127) to GF16 bias (31) @@ -234,7 +234,7 @@ pub fn gf16_round_phi(value: f32) GF16 { return gf16_from_components(sign, gf16_exp, mant); } -// gf16_is_inf(gf16: GF16) -> bool +// gf16_is_inf(gf16: GF16) → bool // Check if GF16 represents infinity pub fn gf16_is_inf(gf16: GF16) bool { const exp = gf16_extract_exponent(gf16); @@ -242,7 +242,7 @@ pub fn gf16_is_inf(gf16: GF16) bool { return (exp == EXP_MAX) and (mant == 0); } -// gf16_is_nan(gf16: GF16) -> bool +// gf16_is_nan(gf16: GF16) → bool // Check if GF16 represents NaN (Not a Number) pub fn gf16_is_nan(gf16: GF16) bool { const exp = gf16_extract_exponent(gf16); @@ -250,33 +250,33 @@ pub fn gf16_is_nan(gf16: GF16) bool { return (exp == EXP_MAX) and (mant != 0); } -// gf16_is_negative(gf16: GF16) -> bool +// gf16_is_negative(gf16: GF16) → bool // Check if GF16 is negative (excluding negative zero) pub fn gf16_is_negative(gf16: GF16) bool { const sign = gf16_extract_sign(gf16); return (sign < 0) and !gf16_is_zero(gf16); } -// gf16_is_positive(gf16: GF16) -> bool +// gf16_is_positive(gf16: GF16) → bool // Check if GF16 is positive (excluding positive zero) pub fn gf16_is_positive(gf16: GF16) bool { const sign = gf16_extract_sign(gf16); return (sign >= 0) and !gf16_is_zero(gf16); } -// gf16_negate(gf16: GF16) -> GF16 +// gf16_negate(gf16: GF16) → GF16 // Negate a GF16 value (flip sign bit) pub fn gf16_negate(gf16: GF16) GF16 { return gf16 ^ SIGN_MASK; } -// gf16_abs(gf16: GF16) -> GF16 +// gf16_abs(gf16: GF16) → GF16 // Absolute value of GF16 (clear sign bit) pub fn gf16_abs(gf16: GF16) GF16 { return gf16 & ~SIGN_MASK; } -// gf16_copy_sign(gf16: GF16, sign_source: GF16) -> GF16 +// gf16_copy_sign(gf16: GF16, sign_source: GF16) → GF16 // Copy sign from sign_source to gf16 value pub fn gf16_copy_sign(gf16: GF16, sign_source: GF16) GF16 { const sign_mask = sign_source & SIGN_MASK; @@ -284,7 +284,7 @@ pub fn gf16_copy_sign(gf16: GF16, sign_source: GF16) GF16 { return value_mask | sign_mask; } -// gf16_max(a: GF16, b: GF16) -> GF16 +// gf16_max(a: GF16, b: GF16) → GF16 // Return the greater of two GF16 values pub fn gf16_max(a: GF16, b: GF16) GF16 { if (gf16_is_nan(a)) return b; @@ -296,7 +296,7 @@ pub fn gf16_max(a: GF16, b: GF16) GF16 { if (a_val >= b_val) return a else return b; } -// gf16_min(a: GF16, b: GF16) -> GF16 +// gf16_min(a: GF16, b: GF16) → GF16 // Return the smaller of two GF16 values pub fn gf16_min(a: GF16, b: GF16) GF16 { if (gf16_is_nan(a)) return b; @@ -308,7 +308,7 @@ pub fn gf16_min(a: GF16, b: GF16) GF16 { if (a_val <= b_val) return a else return b; } -// gf16_add(a: GF16, b: GF16) -> GF16 +// gf16_add(a: GF16, b: GF16) → GF16 // Add two GF16 values (decode, add, re-encode) // Returns NaN if either operand is NaN, Inf if overflow pub fn gf16_add(a: GF16, b: GF16) GF16 { @@ -330,7 +330,7 @@ pub fn gf16_add(a: GF16, b: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_sub(a: GF16, b: GF16) -> GF16 +// gf16_sub(a: GF16, b: GF16) → GF16 // Subtract two GF16 values (decode, subtract, re-encode) // Returns NaN if either operand is NaN, Inf if overflow pub fn gf16_sub(a: GF16, b: GF16) GF16 { @@ -352,7 +352,7 @@ pub fn gf16_sub(a: GF16, b: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_mul(a: GF16, b: GF16) -> GF16 +// gf16_mul(a: GF16, b: GF16) → GF16 // Multiply two GF16 values (decode, multiply, re-encode) // Returns NaN if either operand is NaN pub fn gf16_mul(a: GF16, b: GF16) GF16 { @@ -379,7 +379,7 @@ pub fn gf16_mul(a: GF16, b: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_div(a: GF16, b: GF16) -> GF16 +// gf16_div(a: GF16, b: GF16) → GF16 // Divide two GF16 values (decode, divide, re-encode) // Returns NaN if division by zero or either operand is NaN // Returns Inf if numerator is Inf and denominator is finite non-zero @@ -412,7 +412,7 @@ pub fn gf16_div(a: GF16, b: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_fma(a: GF16, b: GF16, c: GF16) -> GF16 +// gf16_fma(a: GF16, b: GF16, c: GF16) → GF16 // Fused multiply-add: a * b + c with single rounding // More accurate than separate mul and add pub fn gf16_fma(a: GF16, b: GF16, c: GF16) GF16 { @@ -434,7 +434,7 @@ pub fn gf16_fma(a: GF16, b: GF16, c: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_sqrt(a: GF16) -> GF16 +// gf16_sqrt(a: GF16) → GF16 // Square root of GF16 value // Returns NaN for negative values, Inf for infinity pub fn gf16_sqrt(a: GF16) GF16 { @@ -450,14 +450,14 @@ pub fn gf16_sqrt(a: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_square(a: GF16) -> GF16 +// gf16_square(a: GF16) → GF16 // Square of GF16 value // Uses gf16_mul internally pub fn gf16_square(a: GF16) GF16 { return gf16_mul(a, a); } -// gf16_eq(a: GF16, b: GF16) -> bool +// gf16_eq(a: GF16, b: GF16) → bool // Equality comparison for GF16 // NaN values are never equal to anything (including themselves) pub fn gf16_eq(a: GF16, b: GF16) bool { @@ -467,14 +467,14 @@ pub fn gf16_eq(a: GF16, b: GF16) bool { return a == b; } -// gf16_ne(a: GF16, b: GF16) -> bool +// gf16_ne(a: GF16, b: GF16) → bool // Not-equal comparison for GF16 // NaN values are not equal to anything (including themselves) pub fn gf16_ne(a: GF16, b: GF16) bool { return !gf16_eq(a, b); } -// gf16_lt(a: GF16, b: GF16) -> bool +// gf16_lt(a: GF16, b: GF16) → bool // Less-than comparison for GF16 // Returns false if either operand is NaN pub fn gf16_lt(a: GF16, b: GF16) bool { @@ -484,7 +484,7 @@ pub fn gf16_lt(a: GF16, b: GF16) bool { return a_val < b_val; } -// gf16_le(a: GF16, b: GF16) -> bool +// gf16_le(a: GF16, b: GF16) → bool // Less-than-or-equal comparison for GF16 // Returns false if either operand is NaN pub fn gf16_le(a: GF16, b: GF16) bool { @@ -494,7 +494,7 @@ pub fn gf16_le(a: GF16, b: GF16) bool { return a_val <= b_val; } -// gf16_gt(a: GF16, b: GF16) -> bool +// gf16_gt(a: GF16, b: GF16) → bool // Greater-than comparison for GF16 // Returns false if either operand is NaN pub fn gf16_gt(a: GF16, b: GF16) bool { @@ -504,7 +504,7 @@ pub fn gf16_gt(a: GF16, b: GF16) bool { return a_val > b_val; } -// gf16_ge(a: GF16, b: GF16) -> bool +// gf16_ge(a: GF16, b: GF16) → bool // Greater-than-or-equal comparison for GF16 // Returns false if either operand is NaN pub fn gf16_ge(a: GF16, b: GF16) bool { @@ -514,7 +514,7 @@ pub fn gf16_ge(a: GF16, b: GF16) bool { return a_val >= b_val; } -// gf16_floor(a: GF16) -> GF16 +// gf16_floor(a: GF16) → GF16 // Round down to the nearest integer (toward -inf) // Returns NaN for NaN input, unchanged for Inf/-Inf pub fn gf16_floor(a: GF16) GF16 { @@ -528,7 +528,7 @@ pub fn gf16_floor(a: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_ceil(a: GF16) -> GF16 +// gf16_ceil(a: GF16) → GF16 // Round up to the nearest integer (toward +inf) // Returns NaN for NaN input, unchanged for Inf/-Inf pub fn gf16_ceil(a: GF16) GF16 { @@ -542,7 +542,7 @@ pub fn gf16_ceil(a: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_round(a: GF16) -> GF16 +// gf16_round(a: GF16) → GF16 // Round to nearest integer, ties to even (IEEE 754 roundTiesToEven) // Returns NaN for NaN input, unchanged for Inf/-Inf pub fn gf16_round(a: GF16) GF16 { @@ -556,7 +556,7 @@ pub fn gf16_round(a: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_trunc(a: GF16) -> GF16 +// gf16_trunc(a: GF16) → GF16 // Round toward zero (truncate fractional part) // Returns NaN for NaN input, unchanged for Inf/-Inf pub fn gf16_trunc(a: GF16) GF16 { @@ -570,7 +570,7 @@ pub fn gf16_trunc(a: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_fms(a: GF16, b: GF16, c: GF16) -> GF16 +// gf16_fms(a: GF16, b: GF16, c: GF16) → GF16 // Fused multiply-subtract: a * b - c with single rounding // More accurate than separate mul and sub // Useful for neural network backpropagation @@ -593,7 +593,7 @@ pub fn gf16_fms(a: GF16, b: GF16, c: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_hypot(a: GF16, b: GF16) -> GF16 +// gf16_hypot(a: GF16, b: GF16) → GF16 // Compute sqrt(a^2 + b^2) without overflow/underflow // Returns NaN if either operand is NaN, Inf if both are Inf // Useful for distance calculations, neural network normalization @@ -620,7 +620,7 @@ pub fn gf16_hypot(a: GF16, b: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_fmod(a: GF16, b: GF16) -> GF16 +// gf16_fmod(a: GF16, b: GF16) → GF16 // Compute remainder of a / b (IEEE 754 style) // Result has same sign as dividend (a) // Returns NaN if divisor is zero or either operand is NaN @@ -641,13 +641,13 @@ pub fn gf16_fmod(a: GF16, b: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_is_finite(gf16: GF16) -> bool +// gf16_is_finite(gf16: GF16) → bool // Check if GF16 value is finite (not NaN, not infinity) pub fn gf16_is_finite(gf16: GF16) bool { return !gf16_is_nan(gf16) and !gf16_is_inf(gf16); } -// gf16_is_normal(gf16: GF16) -> bool +// gf16_is_normal(gf16: GF16) → bool // Check if GF16 value is a normal (normalized) number // Normal numbers have exponent in range [1, EXP_MAX-1] and are not zero pub fn gf16_is_normal(gf16: GF16) bool { @@ -660,7 +660,7 @@ pub fn gf16_is_normal(gf16: GF16) bool { return exp > 0 and exp < GF16_EXP_MAX; } -// gf16_is_subnormal(gf16: GF16) -> bool +// gf16_is_subnormal(gf16: GF16) → bool // Check if GF16 value is subnormal (denormal) // Subnormal numbers have exponent = 0 and mantissa != 0 pub fn gf16_is_subnormal(gf16: GF16) bool { @@ -675,14 +675,14 @@ pub fn gf16_is_subnormal(gf16: GF16) bool { return exp == 0 and mant != 0; } -// gf16_signbit(gf16: GF16) -> bool +// gf16_signbit(gf16: GF16) → bool // Check if the sign bit is set (value is negative or negative zero) // Returns true for negative values and negative zero pub fn gf16_signbit(gf16: GF16) bool { return (gf16 & GF16_SIGN_MASK) != 0; } -// gf16_sign(gf16: GF16) -> i8 +// gf16_sign(gf16: GF16) → i8 // Return the sign of the GF16 value: -1 for negative, 0 for zero, +1 for positive // Returns 0 for NaN (IEEE 754 specifies sign of NaN is undefined) pub fn gf16_sign(gf16: GF16) i8 { @@ -701,7 +701,7 @@ pub fn gf16_sign(gf16: GF16) i8 { } } -// gf16_clamp(x: GF16, min_val: GF16, max_val: GF16) -> GF16 +// gf16_clamp(x: GF16, min_val: GF16, max_val: GF16) → GF16 // Clamp x to the range [min_val, max_val] // Returns min_val if x < min_val, max_val if x > max_val, otherwise x pub fn gf16_clamp(x: GF16, min_val: GF16, max_val: GF16) GF16 { @@ -723,7 +723,7 @@ pub fn gf16_clamp(x: GF16, min_val: GF16, max_val: GF16) GF16 { } } -// gf16_lerp(a: GF16, b: GF16, t: GF16) -> GF16 +// gf16_lerp(a: GF16, b: GF16, t: GF16) → GF16 // Linear interpolation: a + t * (b - a) // Returns a when t=0, b when t=1, and interpolates for other values pub fn gf16_lerp(a: GF16, b: GF16, t: GF16) GF16 { @@ -742,7 +742,7 @@ pub fn gf16_lerp(a: GF16, b: GF16, t: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_fnma(a: GF16, b: GF16, c: GF16) -> GF16 +// gf16_fnma(a: GF16, b: GF16, c: GF16) → GF16 // Fused negative multiply-add: -(a * b) + c // More accurate than computing gf16_sub(c, gf16_mul(a, b)) pub fn gf16_fnma(a: GF16, b: GF16, c: GF16) GF16 { @@ -790,7 +790,7 @@ pub fn gf16_fnma(a: GF16, b: GF16, c: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_exp(x: GF16) -> GF16 +// gf16_exp(x: GF16) → GF16 // Compute e^x (exponential function) // Uses Taylor series approximation for small values // Returns Inf for very large positive inputs, 0 for very large negative inputs @@ -829,7 +829,7 @@ pub fn gf16_exp(x: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_log(x: GF16) -> GF16 +// gf16_log(x: GF16) → GF16 // Compute natural logarithm ln(x) // Returns NaN for x <= 0, Inf for very large x pub fn gf16_log(x: GF16) GF16 { @@ -855,7 +855,7 @@ pub fn gf16_log(x: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_log2(x: GF16) -> GF16 +// gf16_log2(x: GF16) → GF16 // Compute base-2 logarithm log2(x) pub fn gf16_log2(x: GF16) GF16 { if (gf16_is_nan(x)) return GF16_NAN; @@ -873,7 +873,7 @@ pub fn gf16_log2(x: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_log10(x: GF16) -> GF16 +// gf16_log10(x: GF16) → GF16 // Compute base-10 logarithm log10(x) pub fn gf16_log10(x: GF16) GF16 { if (gf16_is_nan(x)) return GF16_NAN; @@ -891,7 +891,7 @@ pub fn gf16_log10(x: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_pow(base: GF16, exponent: GF16) -> GF16 +// gf16_pow(base: GF16, exponent: GF16) → GF16 // Compute base^exponent // Handles various special cases: 0^0 = 1, 1^x = 1, x^0 = 1, etc. pub fn gf16_pow(base: GF16, exponent: GF16) GF16 { @@ -921,12 +921,12 @@ pub fn gf16_pow(base: GF16, exponent: GF16) GF16 { if (exp_val == 1.0) return base; // Use stdlib pow for general case - const result = pow(base_val, exp_val); + const result = @pow(base_val, exp_val); return gf16_encode_f32(result); } -// gf16_sin(x: GF16) -> GF16 +// gf16_sin(x: GF16) → GF16 // Compute sine function sin(x) where x is in radians // Uses Taylor series approximation for small values pub fn gf16_sin(x: GF16) GF16 { @@ -952,7 +952,7 @@ pub fn gf16_sin(x: GF16) GF16 { return gf16_encode_f32(result); } -// gf16_cos(x: GF16) -> GF16 +// gf16_cos(x: GF16) → GF16 // Compute cosine function cos(x) where x is in radians // Uses Taylor series approximation for small values pub fn gf16_cos(x: GF16) GF16 { @@ -1411,7 +1411,7 @@ invariant gf16_sqrt_of_square_less_than_or_equal { } invariant gf16_fma_distributive_approximation { - // gf16_fma(a, b, c) ~= gf16_add(gf16_mul(a, b), c) + // gf16_fma(a, b, c) ≈ gf16_add(gf16_mul(a, b), c) // Not exact due to encoding rounding @compileAssert(true); } @@ -1722,7 +1722,7 @@ invariant gf16_cos_zero_returns_one { } invariant gf16_trig_identity_approx { - // sin^2(x) + cos^2(x) ~= 1 for reasonable x values + // sin^2(x) + cos^2(x) ≈ 1 for reasonable x values @compileAssert(true); } @@ -2724,7 +2724,7 @@ test "gf16_exp_zero" { } test "gf16_exp_one" { - // Verify: e^1 ~= 2.718 + // Verify: e^1 ≈ 2.718 const x = gf16_encode_f32(1.0); const result = gf16_exp(x); const decoded = gf16_decode_to_f32(result); @@ -2732,7 +2732,7 @@ test "gf16_exp_one" { } test "gf16_exp_negative" { - // Verify: e^-1 ~= 0.368 + // Verify: e^-1 ≈ 0.368 const x = gf16_encode_f32(-1.0); const result = gf16_exp(x); const decoded = gf16_decode_to_f32(result); @@ -2755,7 +2755,7 @@ test "gf16_log_one" { } test "gf16_log_e" { - // Verify: ln(e) ~= 1 + // Verify: ln(e) ≈ 1 const e = gf16_encode_f32(2.71828); const result = gf16_log(e); const decoded = gf16_decode_to_f32(result); @@ -2839,7 +2839,7 @@ test "gf16_sin_zero" { } test "gf16_sin_small_angle" { - // Verify: sin(pi/6) ~= 0.5 + // Verify: sin(π/6) ≈ 0.5 const pi_six = gf16_encode_f32(3.14159 / 6.0); const result = gf16_sin(pi_six); const decoded = gf16_decode_to_f32(result); @@ -2855,7 +2855,7 @@ test "gf16_cos_zero" { } test "gf16_cos_small_angle" { - // Verify: cos(pi/6) ~= 0.866 + // Verify: cos(π/6) ≈ 0.866 const pi_six = gf16_encode_f32(3.14159 / 6.0); const result = gf16_cos(pi_six); const decoded = gf16_decode_to_f32(result); @@ -2863,7 +2863,7 @@ test "gf16_cos_small_angle" { } test "gf16_trig_identity" { - // Verify: sin^2(x) + cos^2(x) ~= 1 for small x + // Verify: sin^2(x) + cos^2(x) ≈ 1 for small x const x = gf16_encode_f32(0.5); const sin_val = gf16_decode_to_f32(gf16_sin(x)); const cos_val = gf16_decode_to_f32(gf16_cos(x)); @@ -2883,6 +2883,7 @@ bench "gf16_encode_throughput" { for (0..1000) |_| { result = gf16_encode_f32(1.5); } + _ = result; } bench "gf16_decode_throughput" { @@ -2893,6 +2894,7 @@ bench "gf16_decode_throughput" { for (0..1000) |_| { result = gf16_decode_to_f32(0x3C00); } + _ = result; } bench "gf16_roundtrip_latency" { @@ -2904,6 +2906,7 @@ bench "gf16_roundtrip_latency" { for (0..1000) |_| { result = gf16_decode_to_f32(gf16_encode_f32(value)); } + _ = result; } bench "gf16_round_phi_latency" { @@ -2914,6 +2917,7 @@ bench "gf16_round_phi_latency" { for (0..1000) |_| { result = gf16_round_phi(1.0); } + _ = result; } bench "gf16_extract_sign_latency" { @@ -2924,6 +2928,7 @@ bench "gf16_extract_sign_latency" { for (0..1000) |_| { result = gf16_extract_sign(0x8000); } + _ = result; } bench "gf16_extract_exponent_latency" { @@ -2934,6 +2939,7 @@ bench "gf16_extract_exponent_latency" { for (0..1000) |_| { result = gf16_extract_exponent(0x3C00); } + _ = result; } bench "gf16_is_inf_latency" { @@ -2944,6 +2950,7 @@ bench "gf16_is_inf_latency" { for (0..1000) |_| { result = gf16_is_inf(0x7E00); } + _ = result; } bench "gf16_is_nan_latency" { @@ -2954,6 +2961,7 @@ bench "gf16_is_nan_latency" { for (0..1000) |_| { result = gf16_is_nan(0xFE01); } + _ = result; } bench "gf16_negate_latency" { @@ -2964,6 +2972,7 @@ bench "gf16_negate_latency" { for (0..1000) |_| { result = gf16_negate(0x3C00); } + _ = result; } bench "gf16_abs_latency" { @@ -2974,6 +2983,7 @@ bench "gf16_abs_latency" { for (0..1000) |_| { result = gf16_abs(0xBC00); } + _ = result; } bench "gf16_max_latency" { @@ -2986,6 +2996,7 @@ bench "gf16_max_latency" { for (0..1000) |_| { result = gf16_max(a, b); } + _ = result; } bench "gf16_min_latency" { @@ -2998,6 +3009,7 @@ bench "gf16_min_latency" { for (0..1000) |_| { result = gf16_min(a, b); } + _ = result; } bench "gf16_add_latency" { @@ -3010,6 +3022,7 @@ bench "gf16_add_latency" { for (0..1000) |_| { result = gf16_add(a, b); } + _ = result; } bench "gf16_sub_latency" { @@ -3022,6 +3035,7 @@ bench "gf16_sub_latency" { for (0..1000) |_| { result = gf16_sub(a, b); } + _ = result; } bench "gf16_mul_latency" { @@ -3034,6 +3048,7 @@ bench "gf16_mul_latency" { for (0..1000) |_| { result = gf16_mul(a, b); } + _ = result; } bench "gf16_div_latency" { @@ -3046,6 +3061,7 @@ bench "gf16_div_latency" { for (0..1000) |_| { result = gf16_div(a, b); } + _ = result; } bench "gf16_sqrt_latency" { @@ -3057,6 +3073,7 @@ bench "gf16_sqrt_latency" { for (0..1000) |_| { result = gf16_sqrt(a); } + _ = result; } bench "gf16_fma_latency" { @@ -3070,6 +3087,7 @@ bench "gf16_fma_latency" { for (0..1000) |_| { result = gf16_fma(a, b, c); } + _ = result; } bench "gf16_square_latency" { @@ -3081,6 +3099,7 @@ bench "gf16_square_latency" { for (0..1000) |_| { result = gf16_square(a); } + _ = result; } bench "gf16_eq_latency" { @@ -3093,6 +3112,7 @@ bench "gf16_eq_latency" { for (0..1000) |_| { result = gf16_eq(a, b); } + _ = result; } bench "gf16_ne_latency" { @@ -3105,6 +3125,7 @@ bench "gf16_ne_latency" { for (0..1000) |_| { result = gf16_ne(a, b); } + _ = result; } bench "gf16_lt_latency" { @@ -3117,6 +3138,7 @@ bench "gf16_lt_latency" { for (0..1000) |_| { result = gf16_lt(a, b); } + _ = result; } bench "gf16_le_latency" { @@ -3129,6 +3151,7 @@ bench "gf16_le_latency" { for (0..1000) |_| { result = gf16_le(a, b); } + _ = result; } bench "gf16_gt_latency" { @@ -3141,6 +3164,7 @@ bench "gf16_gt_latency" { for (0..1000) |_| { result = gf16_gt(a, b); } + _ = result; } bench "gf16_ge_latency" { @@ -3153,6 +3177,7 @@ bench "gf16_ge_latency" { for (0..1000) |_| { result = gf16_ge(a, b); } + _ = result; } bench "gf16_floor_latency" { @@ -3164,6 +3189,7 @@ bench "gf16_floor_latency" { for (0..1000) |_| { result = gf16_floor(a); } + _ = result; } bench "gf16_ceil_latency" { @@ -3175,6 +3201,7 @@ bench "gf16_ceil_latency" { for (0..1000) |_| { result = gf16_ceil(a); } + _ = result; } bench "gf16_round_latency" { @@ -3186,6 +3213,7 @@ bench "gf16_round_latency" { for (0..1000) |_| { result = gf16_round(a); } + _ = result; } bench "gf16_trunc_latency" { @@ -3197,6 +3225,7 @@ bench "gf16_trunc_latency" { for (0..1000) |_| { result = gf16_trunc(a); } + _ = result; } bench "gf16_fms_latency" { @@ -3210,6 +3239,7 @@ bench "gf16_fms_latency" { for (0..1000) |_| { result = gf16_fms(a, b, c); } + _ = result; } bench "gf16_hypot_latency" { @@ -3222,6 +3252,7 @@ bench "gf16_hypot_latency" { for (0..1000) |_| { result = gf16_hypot(a, b); } + _ = result; } bench "gf16_fmod_latency" { @@ -3234,6 +3265,7 @@ bench "gf16_fmod_latency" { for (0..1000) |_| { result = gf16_fmod(a, b); } + _ = result; } bench "gf16_is_finite_latency" { @@ -3245,6 +3277,7 @@ bench "gf16_is_finite_latency" { for (0..1000) |_| { result = gf16_is_finite(val); } + _ = result; } bench "gf16_is_normal_latency" { @@ -3256,6 +3289,7 @@ bench "gf16_is_normal_latency" { for (0..1000) |_| { result = gf16_is_normal(val); } + _ = result; } bench "gf16_is_subnormal_latency" { @@ -3267,6 +3301,7 @@ bench "gf16_is_subnormal_latency" { for (0..1000) |_| { result = gf16_is_subnormal(val); } + _ = result; } bench "gf16_signbit_latency" { @@ -3278,6 +3313,7 @@ bench "gf16_signbit_latency" { for (0..1000) |_| { result = gf16_signbit(val); } + _ = result; } bench "gf16_sign_latency" { @@ -3289,6 +3325,7 @@ bench "gf16_sign_latency" { for (0..1000) |_| { result = gf16_sign(val); } + _ = result; } bench "gf16_clamp_latency" { @@ -3302,6 +3339,7 @@ bench "gf16_clamp_latency" { for (0..1000) |_| { result = gf16_clamp(x, min_val, max_val); } + _ = result; } bench "gf16_lerp_latency" { @@ -3315,6 +3353,7 @@ bench "gf16_lerp_latency" { for (0..1000) |_| { result = gf16_lerp(a, b, t); } + _ = result; } bench "gf16_fnma_latency" { @@ -3328,6 +3367,7 @@ bench "gf16_fnma_latency" { for (0..1000) |_| { result = gf16_fnma(a, b, c); } + _ = result; } bench "gf16_exp_latency" { @@ -3339,6 +3379,7 @@ bench "gf16_exp_latency" { for (0..1000) |_| { result = gf16_exp(x); } + _ = result; } bench "gf16_log_latency" { @@ -3350,6 +3391,7 @@ bench "gf16_log_latency" { for (0..1000) |_| { result = gf16_log(x); } + _ = result; } bench "gf16_pow_latency" { @@ -3362,6 +3404,7 @@ bench "gf16_pow_latency" { for (0..1000) |_| { result = gf16_pow(base, exp); } + _ = result; } bench "gf16_sin_latency" { @@ -3373,6 +3416,7 @@ bench "gf16_sin_latency" { for (0..1000) |_| { result = gf16_sin(x); } + _ = result; } bench "gf16_cos_latency" { @@ -3384,8 +3428,249 @@ bench "gf16_cos_latency" { for (0..1000) |_| { result = gf16_cos(x); } + _ = result; } +// ===================================================================== +// Phase C3 (epic #181) -- GF16 1-6-9 split under FP8 low-precision (appended) +// L6 NOTE: append-only; FORMAT-SPEC-001.json and existing gf16 consts UNCHANGED. +// ===================================================================== +pub const FP8_EFFECTIVE_MANT_BITS : u8 = 4; +// GF16 canonical split (registered in FORMAT-SPEC-001 -- do not change). +pub const GF16_CANONICAL_EXP_BITS : u8 = 6; +pub const GF16_CANONICAL_MANT_BITS : u8 = 9; +// Alternate split A: 1-7-8 (ablation only -- NOT registered). +pub const ALT_A_EXP_BITS : u8 = 7; +pub const ALT_A_MANT_BITS : u8 = 8; + +// Alternate split B: 1-8-7 (ablation only -- NOT registered). +pub const ALT_B_EXP_BITS : u8 = 8; +pub const ALT_B_MANT_BITS : u8 = 7; + +// phi_dist of the canonical 1-6-9 split (from FORMAT-SPEC-001.json v1.1). +// [Registered fact -- not a conjecture; do not modify.] +pub const GF16_PHI_DIST_REGISTERED : f64 = 0.0486326415435630; + +// phi_dist of alternate splits (computed, not registered). +// phi_dist = |exp_bits/mant_bits - phi^-1| +// phi^-1 ~ 0.6180339887498949 +pub const ALT_A_PHI_DIST : f64 = 0.2569660112501051; // |7/8 - phi^-1| = |0.875 - 0.618034| +pub const ALT_B_PHI_DIST : f64 = 0.5248231541072479; // |8/7 - phi^-1| = |1.142857 - 0.618034| + +// FP8 effective ULP at the 4-bit mantissa level (1/2^4 = 0.0625). +pub const FP8_ULP : f64 = 0.0625; + +// ============================================================================ +// C3 Tests (L4 TESTABILITY) +// ============================================================================ + +test "gf16_lp_ssot_split_constants" { + // Verify that the canonical GF16 split constants are unchanged (L6 guard). + // These must match FORMAT-SPEC-001.json v1.1 and the existing gf16.t27 constants. + try std.testing.expect(EXP_SHIFT == 9); // EXP_SHIFT = 9 from gf16.t27 + try std.testing.expect(SIGN_SHIFT == 15); // SIGN_SHIFT = 15 + try std.testing.expect(EXP_MASK == 0x7E00); // 6 exp bits + try std.testing.expect(MANT_MASK == 0x01FF); // 9 mant bits + try std.testing.expect(BIAS == 31); // bias = 31 + // Canonical bit counts match registered values. + try std.testing.expect(GF16_CANONICAL_EXP_BITS == 6); + try std.testing.expect(GF16_CANONICAL_MANT_BITS == 9); +} + +test "gf16_lp_phi_dist_registered" { + // The phi_dist of the canonical 1-6-9 split is the FORMAT-SPEC-001 value. + // phi_dist = |exp_bits/mant_bits - phi^-1| = |6/9 - phi^-1| + // = |0.6667 - 0.6180| = 0.04863... + // This matches the registered value to 4 significant figures. + const ratio_canonical : f64 = 6.0 / 9.0; // ~ 0.6667 + const phi_dist_canonical = if (ratio_canonical > PHI_INV) + ratio_canonical - PHI_INV + else + PHI_INV - ratio_canonical; + const d = phi_dist_canonical - GF16_PHI_DIST_REGISTERED; + const d_abs = if (d < 0.0) -d else d; + try std.testing.expect(d_abs < 1e-4); +} + +test "gf16_lp_alternate_split_phi_dist_larger" { + // The canonical 1-6-9 has smaller phi_dist than both alternates. + // This is the phi-motivation for the 1-6-9 split [Open conjecture: this + // structural closeness to phi^-1 is hypothesised to benefit training, + // but that hypothesis is what C3 tests]. + const ratio_canonical : f64 = 6.0 / 9.0; + const ratio_alt_a : f64 = 7.0 / 8.0; // 0.875 + const ratio_alt_b : f64 = 8.0 / 7.0; // ~1.143 + + fn phi_dist(r: f64) f64 { + const d = r - PHI_INV; + return if (d < 0.0) -d else d; + } + + const pd_canonical = phi_dist(ratio_canonical); + const pd_alt_a = phi_dist(ratio_alt_a); + const pd_alt_b = phi_dist(ratio_alt_b); + + // Canonical 1-6-9 has minimum phi_dist (registered structural fact). + try std.testing.expect(pd_canonical < pd_alt_a); + try std.testing.expect(pd_canonical < pd_alt_b); +} + +test "gf16_lp_fp8_effective_precision" { + // Under FP8 (4-bit effective mantissa), test round-trip error for GF16 + // vs a simulated 1-7-8 alternate split on a representative value set. + // + // Method: encode a value to GF16, truncate the mantissa to FP8_EFFECTIVE_MANT_BITS, + // decode, compare error. Then simulate the 1-7-8 split (8 mant bits -> + // truncate to 4 bits), compare. + // + // If both errors are within 1 FP8 ULP of each other, the 9-bit mantissa + // provides no measurable advantage in the FP8 regime. + // + // Test values: 1.0, phi, 0.5, 2.0 (representative small set). + const test_vals : [4]f32 = [1.0, 1.618034, 0.5, 2.0]; + + for (test_vals) |v| { + // Encode to GF16 (full precision, 9-bit mantissa). + const gf16_encoded = gf16_encode_f32(v); + // Extract mantissa bits. + const mant_full = gf16_encoded & MANT_MASK; + // Truncate to FP8 effective depth (keep top FP8_EFFECTIVE_MANT_BITS bits). + // FP8_EFFECTIVE_MANT_BITS = 4; MANT_MASK = 9 bits; shift = 9 - 4 = 5. + const trunc_shift : u4 = GF16_CANONICAL_MANT_BITS - FP8_EFFECTIVE_MANT_BITS; + const mant_truncated = (mant_full >> trunc_shift) << trunc_shift; + // Reconstruct GF16 with truncated mantissa. + const gf16_truncated = (gf16_encoded & ~MANT_MASK) | mant_truncated; + // Decode truncated GF16. + const decoded_trunc = gf16_decode_to_f32(gf16_truncated); + // Compute error. + const err_val = decoded_trunc - v; + const err_abs = if (err_val < 0.0) -err_val else err_val; + // Error must be bounded by 2 FP8 ULPs (loose bound -- tight bound is 1 ULP). + // A tighter bound would require comparing against the 1-7-8 split directly. + try std.testing.expect(err_abs < @as(f32, @floatCast(FP8_ULP * 2.0))); + } +} + +test "gf16_lp_fp8_canonical_vs_alt_error_comparison" { + // Compare GF16 1-6-9 vs simulated 1-7-8 truncated error on phi. + // 1-7-8 simulated: encode with gf16_encode_f32 (same hardware), + // then truncate 8 mant bits to 4 bits (shift = 8 - 4 = 4). + // The alt split has 1 fewer mantissa bit at full precision but + // the same FP8 truncation floor. + // + // Prediction [Open conjecture]: at FP8 floor, both splits suffer + // similar truncation error, making the 9-bit depth vacuous in + // this context. If verified, this FALSIFIES the mantissa-depth + // motivation for 1-6-9 under FP8 training. + const v : f32 = 1.6180339; // phi to f32 precision + + // Canonical GF16 1-6-9 path. + const gf16_enc = gf16_encode_f32(v); + const mant_9 = gf16_enc & MANT_MASK; + const shift_canonical : u4 = 9 - FP8_EFFECTIVE_MANT_BITS; // 5 + const mant_9_trunc = (mant_9 >> shift_canonical) << shift_canonical; + const gf16_trunc = (gf16_enc & ~MANT_MASK) | mant_9_trunc; + const decoded_canonical = gf16_decode_to_f32(gf16_trunc); + const err_canonical = if (decoded_canonical > v) decoded_canonical - v else v - decoded_canonical; + + // Alternate 1-7-8 path simulation: same encoding hardware; treat the + // lower 8 bits as the mantissa (hypothetical), truncate to 4 bits. + const mant_8 = gf16_enc & 0x00FF; // lower 8 bits (hypothetical 1-7-8 mant) + const shift_alt : u4 = 8 - FP8_EFFECTIVE_MANT_BITS; // 4 + const mant_8_trunc = (mant_8 >> shift_alt) << shift_alt; + const gf16_alt = (gf16_enc & 0xFF00) | mant_8_trunc; + const decoded_alt = gf16_decode_to_f32(gf16_alt); + const err_alt = if (decoded_alt > v) decoded_alt - v else v - decoded_alt; + + // Check: neither split dominates by more than 1 FP8 ULP. + const diff = if (err_canonical > err_alt) err_canonical - err_alt else err_alt - err_canonical; + // NOTE: if diff > FP8_ULP, one split is measurably better in this context. + // The test records the comparison; it does NOT assert which is better. + // The parent agent must check the actual run result to evaluate the conjecture. + const within_one_ulp = diff < @as(f32, @floatCast(FP8_ULP)); + // The result of this test is informational: pass in either direction. + // (A strict > assertion here would pre-judge the conjecture.) + _ = within_one_ulp; + // Structural sanity: errors are finite and non-negative. + try std.testing.expect(err_canonical >= 0.0); + try std.testing.expect(err_alt >= 0.0); +} + +// ============================================================================ +// C3 Invariants (L4 TESTABILITY) +// ============================================================================ + +invariant "gf16_lp_ssot_split_unchanged" { + // L6 guard: the canonical split constants must not be altered. + // EXP_SHIFT, EXP_MASK, MANT_MASK, BIAS are the SSOT (FORMAT-SPEC-001). + @compileAssert(EXP_SHIFT == 9); + @compileAssert(EXP_MASK == 0x7E00); + @compileAssert(MANT_MASK == 0x01FF); + @compileAssert(BIAS == 31); + @compileAssert(GF16_CANONICAL_EXP_BITS == 6); + @compileAssert(GF16_CANONICAL_MANT_BITS == 9); +} + +invariant "gf16_lp_phi_dist_registered_positive" { + // The registered phi_dist of GF16 is positive (it is not exactly phi^-1). + @compileAssert(GF16_PHI_DIST_REGISTERED > 0.0); +} + +invariant "gf16_lp_fp8_depth_less_than_canonical" { + // FP8 effective mantissa depth is strictly less than GF16 canonical depth. + @compileAssert(FP8_EFFECTIVE_MANT_BITS < GF16_CANONICAL_MANT_BITS); +} + +invariant "gf16_lp_alt_splits_not_registered" { + // Alternate splits (1-7-8, 1-8-7) are ablation artifacts only. + // They are not in FORMAT-SPEC-001 and must not be confused with the + // canonical format. The ablation is additive and read-only w.r.t. L6. + @compileAssert(ALT_A_EXP_BITS != GF16_CANONICAL_EXP_BITS); + @compileAssert(ALT_A_MANT_BITS != GF16_CANONICAL_MANT_BITS); +} + +invariant "gf16_lp_canonical_minimises_phi_dist" { + // [Registered structural fact from FORMAT-SPEC-001] + // phi_dist(1-6-9) < phi_dist(1-7-8); the canonical split is closer to phi^-1. + // This is a STRUCTURAL fact, not a training quality claim. + @compileAssert(GF16_PHI_DIST_REGISTERED < ALT_A_PHI_DIST); +} + +// ============================================================================ +// C3 Bench (L4 TESTABILITY) +// ============================================================================ + +bench "bench_gf16_lp_encode_fp8_projection" { + // Latency of: encode f32 to GF16, truncate mantissa to 4 bits (FP8 floor), + // decode back. This is the inner loop cost of FP8-projected GF16 operations. + // Target: < 2x overhead vs plain gf16_encode_f32 + gf16_decode_to_f32. + @setEvalBranchQuota(10000); + const v : f32 = 1.5; + const fp8_shift : u4 = GF16_CANONICAL_MANT_BITS - FP8_EFFECTIVE_MANT_BITS; + var result : f32 = 0.0; + for (0..1000) |_| { + const enc = gf16_encode_f32(v); + const mant = enc & MANT_MASK; + const mant_trunc = (mant >> fp8_shift) << fp8_shift; + const enc_trunc = (enc & ~MANT_MASK) | mant_trunc; + result = gf16_decode_to_f32(enc_trunc); + } + _ = result; +} + +bench "bench_gf16_lp_roundtrip_baseline" { + // Plain GF16 encode + decode (no FP8 truncation) for latency comparison. + // The ratio bench_gf16_lp_encode_fp8_projection / bench_gf16_lp_roundtrip_baseline + // must be < 2.0 (the MAX_LATENCY_RATIO from C2 convention). + @setEvalBranchQuota(10000); + const v : f32 = 1.5; + var result : f32 = 0.0; + for (0..1000) |_| { + const enc = gf16_encode_f32(v); + result = gf16_decode_to_f32(enc); + } + _ = result; +} diff --git a/apps/website/public/t27/files/specs/numeric/gf20.t27 b/apps/website/public/t27/files/specs/numeric/gf20.t27 index 35e6852485..d2518dceb1 100644 --- a/apps/website/public/t27/files/specs/numeric/gf20.t27 +++ b/apps/website/public/t27/files/specs/numeric/gf20.t27 @@ -1,16 +1,16 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/numeric/gf20.t27 -// GoldenFloat20 -- 20-bit phi-structured floating point -// NUMERIC-STANDARD-001 -- Agent 6 (P1) +// GoldenFloat20 — 20-bit φ-structured floating point +// NUMERIC-STANDARD-001 — Agent 6 (P1) module GF20 { // Import base format family use numeric::goldenfloat_family; use numeric::phi_ratio; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Format Definition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF20 bit layout: [S|EEE EEE|MMM MMMM MMMM MMM] // S: 1 bit (sign) @@ -25,20 +25,20 @@ module GF20 { // Bias for exponent (2^(7-1) - 1 = 63) const EXP_BIAS : u8 = 63; - // phi-ratio: exp/mant = 7/12 ~= 0.583 (phi_distance = 0.035) + // φ-ratio: exp/mant = 7/12 ≈ 0.583 (phi_distance = 0.035) const PHI_DISTANCE : f64 = 0.03463264154356299; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. GoldenFloat20 Type - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct GF20 { raw : u32, // 20-bit value stored in u32 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Encoding/Decoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Encode f32 to GF20 fn encode(value: f32) -> GF20 { @@ -99,9 +99,9 @@ module GF20 { return value; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Format Properties - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn max_value() -> f32 { const mant_max = 1.0 + 4095.0 / 4096.0; @@ -119,9 +119,9 @@ module GF20 { return 1.0 / 4096.0; // 0.00024414 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Validation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn validate_format() -> bool { const fmt = goldenfloat_family::get_format_by_name("GF20"); @@ -131,9 +131,9 @@ module GF20 { (fmt.?.mant_bits == MANT_BITS); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Use Cases - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF20 is optimal for: // - High-precision ML training @@ -144,9 +144,9 @@ module GF20 { // Memory: 20 bits = 2.5 bytes (~1.6x FP32 in same space) const MEMORY_RATIO_VS_FP32 : f32 = 20.0 / 32.0; // 0.625 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Helper Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn floor_log2(x: f32) -> i16 { if (x <= 0.0) { return -32768; } @@ -288,9 +288,9 @@ module GF20 { return (xi - 1) as f32; } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for GF20 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gf20_decode_zero given gf = GF20{ raw = 0 } diff --git a/apps/website/public/t27/files/specs/numeric/gf24.t27 b/apps/website/public/t27/files/specs/numeric/gf24.t27 index 8ef14eef62..891f65b539 100644 --- a/apps/website/public/t27/files/specs/numeric/gf24.t27 +++ b/apps/website/public/t27/files/specs/numeric/gf24.t27 @@ -1,16 +1,16 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/numeric/gf24.t27 -// GoldenFloat24 -- 24-bit phi-structured floating point -// NUMERIC-STANDARD-001 -- Agent 7 (P1) +// GoldenFloat24 — 24-bit φ-structured floating point +// NUMERIC-STANDARD-001 — Agent 7 (P1) module GF24 { // Import base format family use numeric::goldenfloat_family; use numeric::phi_ratio; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Format Definition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF24 bit layout: [S|EEEE EEEE|MMM MMMM MMMM MMMM MM] // S: 1 bit (sign) @@ -25,20 +25,20 @@ module GF24 { // Bias for exponent (2^(9-1) - 1 = 255) const EXP_BIAS : u16 = 255; - // phi-ratio: exp/mant = 9/14 ~= 0.643 (phi_distance = 0.025) + // φ-ratio: exp/mant = 9/14 ≈ 0.643 (phi_distance = 0.025) const PHI_DISTANCE : f64 = 0.02482317991669112; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. GoldenFloat24 Type - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct GF24 { raw : u32, // 24-bit value stored in u32 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Encoding/Decoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Encode f32 to GF24 fn encode(value: f32) -> GF24 { @@ -99,9 +99,9 @@ module GF24 { return value; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Format Properties - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn max_value() -> f32 { const mant_max = 1.0 + 16383.0 / 16384.0; @@ -119,9 +119,9 @@ module GF24 { return 1.0 / 16384.0; // 0.000061035 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Validation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn validate_format() -> bool { const fmt = goldenfloat_family::get_format_by_name("GF24"); @@ -131,9 +131,9 @@ module GF24 { (fmt.?.mant_bits == MANT_BITS); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Use Cases - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF24 is optimal for: // - Very high precision quantization @@ -144,9 +144,9 @@ module GF24 { // Memory: 24 bits = 3 bytes (~1.33x FP32 in same space) const MEMORY_RATIO_VS_FP32 : f32 = 24.0 / 32.0; // 0.75 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Helper Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn floor_log2(x: f32) -> i16 { if (x <= 0.0) { return -32768; } @@ -288,9 +288,9 @@ module GF24 { return (xi - 1) as f32; } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for GF24 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gf24_decode_zero given gf = GF24{ raw = 0 } diff --git a/apps/website/public/t27/files/specs/numeric/gf256.t27 b/apps/website/public/t27/files/specs/numeric/gf256.t27 new file mode 100644 index 0000000000..9a98af7753 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf256.t27 @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf256.t27 -- GoldenFloat256 Encode/Decode +; GF256: 256-bit floating point with 1 sign + 97 exponent + 158 mantissa +; Bit layout: [S(1) E(97) M(158)] = [255:255][254:158][157:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (spec-only; no RTL on this repo's path). + +module triformat-gf256; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 256; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 97; +pub const MANT_BITS : u16 = 158; + +pub const SIGN_SHIFT : u16 = 255; +pub const EXP_SHIFT : u16 = 158; +pub const MANT_SHIFT : u16 = 0; + +; BIAS = 2^(96) - 1 -- multi-word constant (exceeds u64); see codegen +; EXP_MAX = 2^97 - 1 -- multi-word constant (exceeds u64) +pub const BIAS_EXPR : str = "2^(97-1) - 1"; +pub const EXP_MAX_EXPR : str = "2^97 - 1"; + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.613924050633; +pub const PHI_DIST : f64 = 0.004109938117; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf256_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf256_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf256_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf256_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: closed-form rule mis-applied (verify e = round((256-1)/phi^2) = 97, m = 158) +; or RTL emission diverges from this constant set. +; As of W601 the Fpath above is CHECKED by the invariants in this file. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf32.t27 b/apps/website/public/t27/files/specs/numeric/gf32.t27 index 947e010d18..449c2c8cbf 100644 --- a/apps/website/public/t27/files/specs/numeric/gf32.t27 +++ b/apps/website/public/t27/files/specs/numeric/gf32.t27 @@ -1,16 +1,16 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/numeric/gf32.t27 -// GoldenFloat32 -- 32-bit phi-structured floating point -// NUMERIC-STANDARD-001 -- Agent 8 (P1) +// GoldenFloat32 — 32-bit φ-structured floating point +// NUMERIC-STANDARD-001 — Agent 8 (P1) module GF32 { // Import base format family use numeric::goldenfloat_family; use numeric::phi_ratio; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Format Definition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF32 bit layout: [S|EEEE EEEE EEEE|MMM MMMM MMMM MMMM MMMM MMM] // S: 1 bit (sign) @@ -25,21 +25,21 @@ module GF32 { // Bias for exponent (2^(12-1) - 1 = 2047) const EXP_BIAS : u16 = 2047; - // phi-ratio: exp/mant = 12/19 ~= 0.632 (phi_distance = 0.014) - // This is the second-best phi-approximation after GF12 + // φ-ratio: exp/mant = 12/19 ≈ 0.632 (phi_distance = 0.014) + // This is the second-best φ-approximation after GF12 const PHI_DISTANCE : f64 = 0.01354495894042812; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. GoldenFloat32 Type - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct GF32 { raw : u32, // 32-bit raw value } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Encoding/Decoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Encode f32 to GF32 fn encode(value: f32) -> GF32 { @@ -100,9 +100,9 @@ module GF32 { return value; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Format Properties - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn max_value() -> f32 { const mant_max = 1.0 + 524287.0 / 524288.0; @@ -120,9 +120,9 @@ module GF32 { return 1.0 / 524288.0; // 0.000001907 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Validation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn validate_format() -> bool { const fmt = goldenfloat_family::get_format_by_name("GF32"); @@ -132,26 +132,26 @@ module GF32 { (fmt.?.mant_bits == MANT_BITS); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Use Cases - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF32 is optimal for: - // - Near-IEEE 754 precision with phi-optimized layout + // - Near-IEEE 754 precision with φ-optimized layout // - 12-bit exponent (vs IEEE's 8-bit) for wider dynamic range // - 19-bit mantissa (vs IEEE's 23-bit) - still good precision - // - Same memory footprint as FP32, better phi-ratio + // - Same memory footprint as FP32, better φ-ratio // Comparison with IEEE FP32: - // - IEEE: 1 sign, 8 exp, 23 mant -> exp/mant = 0.348 (phi_distance = 0.270) - // - GF32: 1 sign, 12 exp, 19 mant -> exp/mant = 0.632 (phi_distance = 0.014) + // - IEEE: 1 sign, 8 exp, 23 mant → exp/mant = 0.348 (phi_distance = 0.270) + // - GF32: 1 sign, 12 exp, 19 mant → exp/mant = 0.632 (phi_distance = 0.014) // Memory: 32 bits = 4 bytes (same as FP32) const MEMORY_RATIO_VS_FP32 : f32 = 1.0; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Helper Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn floor_log2(x: f32) -> i16 { if (x <= 0.0) { return -32768; } @@ -293,9 +293,9 @@ module GF32 { return (xi - 1) as f32; } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for GF32 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gf32_decode_zero given gf = GF32{ raw = 0 } diff --git a/apps/website/public/t27/files/specs/numeric/gf4.t27 b/apps/website/public/t27/files/specs/numeric/gf4.t27 index b62f0acc69..3d3767cc8d 100644 --- a/apps/website/public/t27/files/specs/numeric/gf4.t27 +++ b/apps/website/public/t27/files/specs/numeric/gf4.t27 @@ -1,16 +1,16 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/numeric/gf4.t27 -// GoldenFloat4 -- 4-bit phi-structured floating point -// NUMERIC-STANDARD-001 -- Agent 2 (P1) +// GoldenFloat4 — 4-bit φ-structured floating point +// NUMERIC-STANDARD-001 — Agent 2 (P1) module GF4 { // Import base format family use numeric::goldenfloat_family; use numeric::phi_ratio; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Format Definition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF4 bit layout: [S|E|MM] // S: 1 bit (sign) @@ -25,20 +25,20 @@ module GF4 { // Bias for exponent (0-biased for GF4) const EXP_BIAS : u8 = 0; - // phi-ratio: exp/mant = 1/2 = 0.5 (phi_distance = 0.118) + // φ-ratio: exp/mant = 1/2 = 0.5 (phi_distance = 0.118) const PHI_DISTANCE : f64 = 0.1180339887498949; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. GoldenFloat4 Type - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct GF4 { raw : u4, // 4-bit raw value } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Encoding/Decoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Encode f32 to GF4 fn encode(value: f32) -> GF4 { @@ -53,14 +53,14 @@ module GF4 { // For GF4, quantize to available values // Available positive values (mant * exp_scale): - // mant=0.00, exp=1.0 -> 0.00 - // mant=0.25, exp=1.0 -> 0.25 - // mant=0.50, exp=1.0 -> 0.50 - // mant=0.75, exp=1.0 -> 0.75 - // mant=0.00, exp=2.0 -> 0.00 - // mant=0.25, exp=2.0 -> 0.50 - // mant=0.50, exp=2.0 -> 1.00 - // mant=0.75, exp=2.0 -> 1.50 + // mant=0.00, exp=1.0 → 0.00 + // mant=0.25, exp=1.0 → 0.25 + // mant=0.50, exp=1.0 → 0.50 + // mant=0.75, exp=1.0 → 0.75 + // mant=0.00, exp=2.0 → 0.00 + // mant=0.25, exp=2.0 → 0.50 + // mant=0.50, exp=2.0 → 1.00 + // mant=0.75, exp=2.0 → 1.50 // Unique positive non-zero values: 0.25, 0.5, 0.75, 1.0, 1.5 @@ -93,10 +93,10 @@ module GF4 { return 0.0; } - // Decode mantissa (2 bits -> values 0, 0.25, 0.5, 0.75) + // Decode mantissa (2 bits → values 0, 0.25, 0.5, 0.75) const mant = (mant_bits as f32) / 4.0; - // Decode exponent (1 bit -> 1.0 or 2.0) + // Decode exponent (1 bit → 1.0 or 2.0) const exp_scale = if (exp_bit) { 2.0 } else { 1.0 }; const value = mant * exp_scale; @@ -107,17 +107,17 @@ module GF4 { return value; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Format Properties - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn max_value() -> f32 { - // Max: mant=0.75, exp=2.0 -> 1.5 + // Max: mant=0.75, exp=2.0 → 1.5 return 1.5; } fn min_positive() -> f32 { - // Min positive: mant=0.25, exp=1.0 -> 0.25 + // Min positive: mant=0.25, exp=1.0 → 0.25 return 0.25; } @@ -126,9 +126,9 @@ module GF4 { return 0.25; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Validation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn validate_format() -> bool { // Check that we match the goldenfloat_family definition @@ -139,9 +139,9 @@ module GF4 { (fmt.?.mant_bits == MANT_BITS); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Use Cases - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF4 is optimal for: // - Extreme compression (87.5% smaller than FP32) @@ -152,9 +152,9 @@ module GF4 { // Memory: 4 bits = 0.5 bytes (8x FP32 in same space) const MEMORY_RATIO_VS_FP32 : f32 = 4.0 / 32.0; // 0.125 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for GF4 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gf4_decode_zero given gf = GF4{ raw = 0b0000 } diff --git a/apps/website/public/t27/files/specs/numeric/gf48.t27 b/apps/website/public/t27/files/specs/numeric/gf48.t27 new file mode 100644 index 0000000000..4ce389afca --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf48.t27 @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf48.t27 -- GoldenFloat48 Encode/Decode +; GF48: 48-bit floating point with 1 sign + 18 exponent + 29 mantissa +; Bit layout: [S(1) E(18) M(29)] = [47:47][46:29][28:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (closed-form rule, no RTL yet on this repo). + +module triformat-gf48; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 48; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 18; +pub const MANT_BITS : u16 = 29; + +pub const SIGN_SHIFT : u16 = 47; +pub const EXP_SHIFT : u16 = 29; +pub const MANT_SHIFT : u16 = 0; + +pub const BIAS : u64 = 131071; // 2^(E-1) - 1 +pub const EXP_MAX : u64 = 262143; // 2^E - 1 + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.620689655172; +pub const PHI_DIST : f64 = 0.002655666423; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf48_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf48_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf48_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf48_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +invariant gf48_bias_identity { + // BIAS = 2^(E-1) - 1, as the declaration's own comment states + @compileAssert(BIAS == (1 << (EXP_BITS - 1)) - 1); +} + +invariant gf48_exp_max_identity { + // EXP_MAX = 2^E - 1 + @compileAssert(EXP_MAX == (1 << EXP_BITS) - 1); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: closed-form rule mis-applied (verify e = round((48-1)/phi^2) = 18, m = 29) +; or RTL emission diverges from this constant set. +; As of W601 the Fpath above is CHECKED by the invariants in this file. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf512.t27 b/apps/website/public/t27/files/specs/numeric/gf512.t27 new file mode 100644 index 0000000000..c5f172c7f8 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf512.t27 @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf512.t27 -- GoldenFloat512 Encode/Decode +; GF512: 512-bit floating point with 1 sign + 195 exponent + 316 mantissa +; Bit layout: [S(1) E(195) M(316)] = [511:511][510:316][315:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (extrapolated; no RTL, no validated arithmetic). + +module triformat-gf512; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 512; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 195; +pub const MANT_BITS : u16 = 316; + +pub const SIGN_SHIFT : u16 = 511; +pub const EXP_SHIFT : u16 = 316; +pub const MANT_SHIFT : u16 = 0; + +; BIAS = 2^(194) - 1 -- multi-word constant (exceeds u64); see codegen +; EXP_MAX = 2^195 - 1 -- multi-word constant (exceeds u64) +pub const BIAS_EXPR : str = "2^(195-1) - 1"; +pub const EXP_MAX_EXPR : str = "2^195 - 1"; + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.617088607595; +pub const PHI_DIST : f64 = 0.000945381155; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf512_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf512_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf512_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf512_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: any matched-substrate accuracy test (e.g. GF512 vs binary512/posit512/takum512) +; where GF512 fails to be parity-class or better falsifies this rung. +; Note: dynamic range of phi^256 overflows binary512 normalization at some n; +; benchmarks MUST be normalised to in-range regimes. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf6.t27 b/apps/website/public/t27/files/specs/numeric/gf6.t27 new file mode 100644 index 0000000000..4db3af0941 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf6.t27 @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf6.t27 -- GoldenFloat6 Encode/Decode +; GF6: 6-bit floating point with 1 sign + 2 exponent + 3 mantissa +; Bit layout: [S(1) E(2) M(3)] = [5:5][4:3][2:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (closed-form rule, no RTL yet on this repo). + +module triformat-gf6; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 6; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 2; +pub const MANT_BITS : u16 = 3; + +pub const SIGN_SHIFT : u16 = 5; +pub const EXP_SHIFT : u16 = 3; +pub const MANT_SHIFT : u16 = 0; + +pub const BIAS : u64 = 1; // 2^(E-1) - 1 +pub const EXP_MAX : u64 = 3; // 2^E - 1 + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.666666666667; +pub const PHI_DIST : f64 = 0.048632677917; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf6_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf6_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf6_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf6_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +invariant gf6_bias_identity { + // BIAS = 2^(E-1) - 1, as the declaration's own comment states + @compileAssert(BIAS == (1 << (EXP_BITS - 1)) - 1); +} + +invariant gf6_exp_max_identity { + // EXP_MAX = 2^E - 1 + @compileAssert(EXP_MAX == (1 << EXP_BITS) - 1); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: closed-form rule mis-applied (verify e = round((6-1)/phi^2) = 2, m = 3) +; or RTL emission diverges from this constant set. +; As of W601 the Fpath above is CHECKED by the invariants in this file. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gf64.t27 b/apps/website/public/t27/files/specs/numeric/gf64.t27 new file mode 100644 index 0000000000..9db4662a30 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf64.t27 @@ -0,0 +1,228 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/numeric/gf64.t27 +// GoldenFloat64 — 64-bit phi-structured floating point +// NUMERIC-STANDARD-001 — canonical double-precision member of the GoldenFloat family + +module GF64 { + // Import base format family + phi-ratio design rule + use numeric::goldenfloat_family; + use numeric::phi_ratio; + + // 1. Format Definition + // GF64 bit layout: [S(1) | E(24) | M(39)] + // S: 1 bit (sign) + // E: 24 bits (exponent) + // M: 39 bits (mantissa) + // Split chosen by the family rule E/M -> 1/phi: 24/39 = 0.6154 (closest + // split to 1/phi on the whole ladder; phi_distance = 0.00265). + + const BITS : u8 = 64; + const SIGN_BITS : u8 = 1; + const EXP_BITS : u8 = 24; + const MANT_BITS : u8 = 39; + + // Bias for exponent: 2^(24-1) - 1 = 8388607 + const EXP_BIAS : u32 = 8388607; + + // phi-rounding bias (empirical per format, H_E; see docs/NUMERIC_FORMATS_SSOT.md). + // For GF64 this equals EXP_MAX - BIAS = 16777215 - 8388607 = 8388608 = 2^23. + const PHI_BIAS : u32 = 8388608; + + // phi-ratio: exp/mant = 24/39 ~ 0.6154 (phi_distance = 0.00265 — best on the ladder) + const PHI_DISTANCE : f64 = 0.0026493553478736; + + // Derived masks + const EXP_MAX : u32 = 16777215; // 2^24 - 1 + const MANT_DIV : f64 = 549755813888.0; // 2^39 + const MANT_MASK : u64 = 549755813887; // 2^39 - 1 + const EXP_FIELD_MASK : u64 = 16777215; // (1<<24) - 1 + + // 2. GoldenFloat64 Type + struct GF64 { + raw : u64, // 64-bit raw value: [sign:1][exp:24][mant:39] + } + + // 3. Encoding / Decoding + fn encode(value: f64) -> GF64 { + if (value == 0.0) { + return GF64{ raw = 0 }; + } + const sign = if (value < 0.0) { 1u64 } else { 0u64 }; + const abs_val = if (value < 0.0) { -value } else { value }; + + const exp_unbiased = floor_log2(abs_val) as i32; + const exp_biased = (exp_unbiased + EXP_BIAS as i32) as u32; + const exp_clamped = clamp_u32(exp_biased, 0, EXP_MAX); + + const mant = extract_mantissa(abs_val, exp_unbiased, MANT_BITS); + + return GF64{ + raw = (sign << 63) | + ((exp_clamped as u64) << MANT_BITS) | + (mant as u64) + }; + } + + fn decode(gf: GF64) -> f64 { + const sign = (gf.raw >> 63) as u8; + const exp_biased = ((gf.raw >> MANT_BITS) & EXP_FIELD_MASK) as u32; + const mant = (gf.raw & MANT_MASK) as u64; + + if (exp_biased == 0 && mant == 0) { + return 0.0; + } + const exp_unbiased = if (exp_biased == 0) { + -(EXP_BIAS as i32) + 1 + } else { + (exp_biased as i32) - EXP_BIAS as i32 + }; + const mant_normalized = if (exp_biased == 0) { + (mant as f64) / MANT_DIV + } else { + 1.0 + (mant as f64) / MANT_DIV + }; + const value = mant_normalized * pow2(exp_unbiased); + if (sign != 0) { return -value; } + return value; + } + + // 4. Format Properties + fn max_value() -> f64 { + const mant_max = 1.0 + (MANT_MASK as f64) / MANT_DIV; + const exp_max = (EXP_MAX as i32) - (EXP_BIAS as i32); + return mant_max * pow2(exp_max); + } + fn min_positive() -> f64 { + const mant_min = 1.0 / MANT_DIV; + const exp_min = -(EXP_BIAS as i32) + 1; + return mant_min * pow2(exp_min); + } + fn epsilon() -> f64 { + return 1.0 / MANT_DIV; + } + + // Memory: 64 bits = 8 bytes (same as IEEE binary64) + const MEMORY_RATIO_VS_FP64 : f64 = 1.0; + + // 5. Validation against the family descriptor + fn validate_format() -> bool { + const fmt = goldenfloat_family::get_format_by_name("GF64"); + return (fmt != null) && + (fmt.?.bits == BITS) && + (fmt.?.exp_bits == EXP_BITS) && + (fmt.?.mant_bits == MANT_BITS); + } + + // 6. Use Cases + // GF64 is the double-precision member of the family: + // - 24-bit exponent (vs IEEE binary64's 11-bit) -> far wider dynamic range + // - 39-bit mantissa (vs IEEE's 52-bit) -> coarser precision, traded for range + // - Same 8-byte footprint as IEEE binary64, but phi-optimal E:M split + // - Target: scientific / double-precision workloads on phi-structured silicon + // Comparison with IEEE binary64: + // IEEE: 1 + 11 + 52, exp/mant = 0.212 (phi_distance = 0.406) + // GF64: 1 + 24 + 39, exp/mant = 0.615 (phi_distance = 0.00265) + + // 7. Helpers (family-standard; integer-backed) + fn floor_log2(x: f64) -> i32 { + if (x <= 0.0) { return -2147483648; } + let exp : i32 = 0; + while (x >= 2.0) { x = x / 2.0; exp = exp + 1; } + while (x < 1.0) { x = x * 2.0; exp = exp - 1; } + return exp; + } + fn extract_mantissa(value: f64, exp: i32, mant_bits: u8) -> u64 { + const normalized = value / pow2(exp); + const frac = normalized - 1.0; + const max_mant = (1u64 << mant_bits) - 1; + return (frac * (max_mant as f64 + 1.0)) as u64; + } + fn clamp_u32(x: u32, min: u32, max: u32) -> u32 { + if (x < min) { return min; } + if (x > max) { return max; } + return x; + } + fn pow2(e: i32) -> f64 { + let result = 1.0; + let n = if (e < 0) { -e } else { e }; + let acc = 2.0; + let k = n; + while (k > 0) { + if (k % 2 == 1) { result = result * acc; } + acc = acc * acc; k = k / 2; + } + if (e < 0) { return 1.0 / result; } + return result; + } + + // TDD-Inside-Spec: tests + invariants + test gf64_decode_zero + given gf = GF64{ raw = 0 } + when value = decode(gf) + then value == 0.0 + + test gf64_encode_zero_roundtrip + given original = 0.0 + and encoded = encode(original) + and decoded = decode(encoded) + then decoded == original + + test gf64_bits_sum_correct + given total = SIGN_BITS + EXP_BITS + MANT_BITS + then total == BITS + + test gf64_bias_formula + given computed = (1u32 << (EXP_BITS - 1)) - 1 + then computed == EXP_BIAS + + test gf64_exp_max_formula + given computed = (1u32 << EXP_BITS) - 1 + then computed == EXP_MAX + + test gf64_phi_bias_equals_exp_max_minus_bias + // GF64 is the one format where PHI_BIAS coincides with EXP_MAX - BIAS + given computed = EXP_MAX - EXP_BIAS + then computed == PHI_BIAS + + test gf64_phi_distance_best_on_ladder + given phi_dist = PHI_DISTANCE + then phi_dist < 0.003 + + test gf64_memory_ratio_equals_one + given ratio = MEMORY_RATIO_VS_FP64 + then ratio == 1.0 + + test gf64_validate_format_success + given valid = validate_format() + then valid == true + + invariant gf64_bits_constant + assert BITS == 64 + + invariant gf64_sign_bits_is_one + assert SIGN_BITS == 1 + + invariant gf64_exp_bits_is_twentyfour + assert EXP_BITS == 24 + + invariant gf64_mant_bits_is_thirtynine + assert MANT_BITS == 39 + + invariant gf64_bias_is_canonical + assert EXP_BIAS == 8388607 + + invariant gf64_phi_bias_is_canonical + assert PHI_BIAS == 8388608 + + invariant gf64_phi_distance_best_on_ladder + assert PHI_DISTANCE < 0.003 + + invariant gf64_exp_wider_than_ieee + assert EXP_BITS > 11 // IEEE binary64 has 11-bit exponent + + invariant gf64_mant_narrower_than_ieee + assert MANT_BITS < 52 // IEEE binary64 has 52-bit mantissa + + invariant gf64_max_ge_min_positive + assert max_value() >= min_positive() +} diff --git a/apps/website/public/t27/files/specs/numeric/gf8.t27 b/apps/website/public/t27/files/specs/numeric/gf8.t27 index 17f9250901..a4c1d3f399 100644 --- a/apps/website/public/t27/files/specs/numeric/gf8.t27 +++ b/apps/website/public/t27/files/specs/numeric/gf8.t27 @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/numeric/gf8.t27 -// GoldenFloat8 -- 8-bit phi-structured floating point -// NUMERIC-STANDARD-001 -- Agent 3 (P1) +// GoldenFloat8 — 8-bit φ-structured floating point +// NUMERIC-STANDARD-001 — Agent 3 (P1) module GF8 { // Import base format family @@ -12,9 +12,9 @@ module GF8 { use base::testing; use base::benchmarking; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Format Definition - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF8 bit layout: [S|EEE|MMMM] // S: 1 bit (sign) @@ -29,21 +29,21 @@ module GF8 { // Bias for exponent (2^(3-1) - 1 = 3) const EXP_BIAS : u8 = 3; - // phi-ratio: exp/mant = 3/4 = 0.75 - // phi-distance: math::constants::PHI_DISTANCE + // φ-ratio: exp/mant = 3/4 = 0.75 + // φ-distance: math::constants::PHI_DISTANCE const PHI_DISTANCE : f64 = 0.132; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. GoldenFloat8 Type - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ struct GF8 { raw : u8, // 8-bit raw value } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Encoding/Decoding - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Encode f32 to GF8 fn encode(value: f32) -> GF8 { @@ -108,19 +108,19 @@ module GF8 { return value; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Format Properties - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn max_value() -> f32 { - // Max normalized: mant=1.9375, exp=3 -> 15.5 + // Max normalized: mant=1.9375, exp=3 → 15.5 const mant_max = 1.0 + 15.0 / 16.0; const exp_max = (1 << EXP_BITS) - 1 - EXP_BIAS; return mant_max * pow(2.0, exp_max as f32); } fn min_positive() -> f32 { - // Min subnormal: mant=1/16, exp=-2 -> 0.0625 + // Min subnormal: mant=1/16, exp=-2 → 0.0625 const mant_min = 1.0 / 16.0; const exp_min = -EXP_BIAS as i8 + 1; return mant_min * pow(2.0, exp_min as f32); @@ -131,9 +131,9 @@ module GF8 { return 1.0 / 16.0; // 0.0625 } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Validation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn validate_format() -> bool { const fmt = goldenfloat_family::get_format_by_name("GF8"); @@ -143,9 +143,9 @@ module GF8 { (fmt.?.mant_bits == MANT_BITS); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Use Cases - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // GF8 is optimal for: // - High compression (75% smaller than FP32) @@ -156,9 +156,9 @@ module GF8 { // Memory: 8 bits = 1 byte (4x FP32 in same space) const MEMORY_RATIO_VS_FP32 : f32 = 8.0 / 32.0; // 0.25 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 7. Helper Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn floor_log2(x: f32) -> i8 { if (x <= 0.0) { return -128; } @@ -300,9 +300,9 @@ module GF8 { return (xi - 1) as f32; } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for GF8 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gf8_decode_zero given gf = GF8{ raw = 0 } diff --git a/apps/website/public/t27/files/specs/numeric/gf96.t27 b/apps/website/public/t27/files/specs/numeric/gf96.t27 new file mode 100644 index 0000000000..02f5973599 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gf96.t27 @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: Apache-2.0 +; gf96.t27 -- GoldenFloat96 Encode/Decode +; GF96: 96-bit floating point with 1 sign + 36 exponent + 59 mantissa +; Bit layout: [S(1) E(36) M(59)] = [95:95][94:59][58:0] +; phi^2 + 1/phi^2 = 3 | TRINITY +; Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. +; STATUS: Conj (spec-only; no RTL on this repo's path). + +module triformat-gf96; + +// ============================================================================ +// Constants -- derived from the closed-form rule +// ============================================================================ + +pub const TOTAL_BITS : u16 = 96; +pub const SIGN_BITS : u8 = 1; +pub const EXP_BITS : u8 = 36; +pub const MANT_BITS : u16 = 59; + +pub const SIGN_SHIFT : u16 = 95; +pub const EXP_SHIFT : u16 = 59; +pub const MANT_SHIFT : u16 = 0; + +; BIAS = 2^(35) - 1 -- multi-word constant (exceeds u64); see codegen +; EXP_MAX = 2^36 - 1 -- multi-word constant (exceeds u64) +pub const BIAS_EXPR : str = "2^(36-1) - 1"; +pub const EXP_MAX_EXPR : str = "2^36 - 1"; + +// E/M ratio (target: 1/phi ~ 0.6180339887) +pub const EM_RATIO : f64 = 0.610169491525; +pub const PHI_DIST : f64 = 0.007864497224; + +pub const PHI_BIAS_STATUS : str = "OPEN -- not derivable from closed form; empirical per format"; + +// PHI_BIAS for this rung is NOT defined. The published formula +// PHI_BIAS = EXP_MAX - BIAS reproduces GF64 only and is RETRACTED as a general law. +// Do NOT invent a value via Fibonacci/Lucas/square coincidence; those are +// descriptive, not prescriptive. + +// ============================================================================ +// Invariants -- the Fpath below, made executable (W601) +// +// This file declared its own falsification path in a comment and nothing +// checked it. W600's per-test measurement found 38 specs that compile while +// asserting nothing; this is one, and the rule it is derived from is stated +// precisely enough to be a test. +// ============================================================================ + +invariant gf96_field_widths_partition_the_word { + @compileAssert(SIGN_BITS + EXP_BITS + MANT_BITS == TOTAL_BITS); +} + +invariant gf96_closed_form_mantissa { + // m = N - 1 - e, the second half of the generating rule + @compileAssert(MANT_BITS == TOTAL_BITS - 1 - EXP_BITS); +} + +invariant gf96_closed_form_exponent { + // e = round((N-1)/phi^2) <=> (e - 1/2)*phi^2 <= N-1 <= (e + 1/2)*phi^2 + // Stated as bounds because the rule rounds; phi^2 = 2.618033988749895. + @compileAssert((EXP_BITS as f64 - 0.5) * 2.618033988749895 <= TOTAL_BITS as f64 - 1.0); + @compileAssert(TOTAL_BITS as f64 - 1.0 <= (EXP_BITS as f64 + 0.5) * 2.618033988749895); +} + +invariant gf96_shifts_follow_the_layout { + @compileAssert(SIGN_SHIFT == TOTAL_BITS - 1); + @compileAssert(EXP_SHIFT == MANT_BITS); + @compileAssert(MANT_SHIFT == 0); +} + +; ============================================================================ +; Claim-status: Conj +; Fpath: closed-form rule mis-applied (verify e = round((96-1)/phi^2) = 36, m = 59) +; or RTL emission diverges from this constant set. +; As of W601 the Fpath above is CHECKED by the invariants in this file. +; ============================================================================ diff --git a/apps/website/public/t27/files/specs/numeric/gft1024.t27 b/apps/website/public/t27/files/specs/numeric/gft1024.t27 new file mode 100644 index 0000000000..c1abc2797d --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft1024.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft1024.t27 -- GF-T1024: the golden-ratio ternary ladder, 1024-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 391, M = N - 1 - E_t = 632 +// +// Every rung lands exactly: 1 + 391 + 632 = 1024, no position unspent. The ratio +// E_t/M = 0.6187 against 1/phi = 0.6180, a phi-distance of 0.0006 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF1024 on the reference +// oracle: GF-T's exponent spans 1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 391 balanced-ternary trits | M = 632 binary bits ] +// value = (-1)^sign * (1 + M/2^632) * 2^e, e in [-1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173,+1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173] + +module triformat_gft1024 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 391; // round((N-1)/phi^2) + const MANT_BITS: u32 = 632; // the remaining positions, all of them + const EXP_OFFSET: u32 = 1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173; + const OFFSET_MAX: u32 = 3584351526015004100618009021792145314053139745607240550874928781652293123588016773691982854719663372359648038145879993490165614645725985200129303686152276432858826668889920905981978526346; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 1024, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 618, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft128.t27 b/apps/website/public/t27/files/specs/numeric/gft128.t27 new file mode 100644 index 0000000000..44fb5029d0 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft128.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft128.t27 -- GF-T128: the golden-ratio ternary ladder, 128-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 49, M = N - 1 - E_t = 78 +// +// Every rung lands exactly: 1 + 49 + 78 = 128, no position unspent. The ratio +// E_t/M = 0.6282 against 1/phi = 0.6180, a phi-distance of 0.0102 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF128 on the reference +// oracle: GF-T's exponent spans 119649664615308764795041 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 49 balanced-ternary trits | M = 78 binary bits ] +// value = (-1)^sign * (1 + M/2^78) * 2^e, e in [-119649664615308764795041,+119649664615308764795041] + +module triformat_gft128 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 49; // round((N-1)/phi^2) + const MANT_BITS: u32 = 78; // the remaining positions, all of them + const EXP_OFFSET: u32 = 119649664615308764795041; + const OFFSET_MAX: u32 = 239299329230617529590082; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 128, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 628, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft16.t27 b/apps/website/public/t27/files/specs/numeric/gft16.t27 new file mode 100644 index 0000000000..864cf95d22 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft16.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft16.t27 -- GF-T16: the golden-ratio ternary ladder, 16-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 6, M = N - 1 - E_t = 9 +// +// Every rung lands exactly: 1 + 6 + 9 = 16, no position unspent. The ratio +// E_t/M = 0.6667 against 1/phi = 0.6180, a phi-distance of 0.0486 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF16 on the reference +// oracle: GF-T's exponent spans 364 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 6 balanced-ternary trits | M = 9 binary bits ] +// value = (-1)^sign * (1 + M/2^9) * 2^e, e in [-364,+364] + +module triformat_gft16 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 6; // round((N-1)/phi^2) + const MANT_BITS: u32 = 9; // the remaining positions, all of them + const EXP_OFFSET: u32 = 364; + const OFFSET_MAX: u32 = 728; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 729; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 16, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 666, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft256.t27 b/apps/website/public/t27/files/specs/numeric/gft256.t27 new file mode 100644 index 0000000000..c31fccae4c --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft256.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft256.t27 -- GF-T256: the golden-ratio ternary ladder, 256-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 97, M = N - 1 - E_t = 158 +// +// Every rung lands exactly: 1 + 97 + 158 = 256, no position unspent. The ratio +// E_t/M = 0.6139 against 1/phi = 0.6180, a phi-distance of 0.0041 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF256 on the reference +// oracle: GF-T's exponent spans 9544028161703913537712243143807801346335324481 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 97 balanced-ternary trits | M = 158 binary bits ] +// value = (-1)^sign * (1 + M/2^158) * 2^e, e in [-9544028161703913537712243143807801346335324481,+9544028161703913537712243143807801346335324481] + +module triformat_gft256 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 97; // round((N-1)/phi^2) + const MANT_BITS: u32 = 158; // the remaining positions, all of them + const EXP_OFFSET: u32 = 9544028161703913537712243143807801346335324481; + const OFFSET_MAX: u32 = 19088056323407827075424486287615602692670648962; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 256, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 613, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft32.t27 b/apps/website/public/t27/files/specs/numeric/gft32.t27 new file mode 100644 index 0000000000..6a6ad8a8d6 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft32.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft32.t27 -- GF-T32: the golden-ratio ternary ladder, 32-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 12, M = N - 1 - E_t = 19 +// +// Every rung lands exactly: 1 + 12 + 19 = 32, no position unspent. The ratio +// E_t/M = 0.6316 against 1/phi = 0.6180, a phi-distance of 0.0135 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF32 on the reference +// oracle: GF-T's exponent spans 265720 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 12 balanced-ternary trits | M = 19 binary bits ] +// value = (-1)^sign * (1 + M/2^19) * 2^e, e in [-265720,+265720] + +module triformat_gft32 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 12; // round((N-1)/phi^2) + const MANT_BITS: u32 = 19; // the remaining positions, all of them + const EXP_OFFSET: u32 = 265720; + const OFFSET_MAX: u32 = 531440; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 531441; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 32, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 631, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft4.t27 b/apps/website/public/t27/files/specs/numeric/gft4.t27 new file mode 100644 index 0000000000..89c1a1f392 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft4.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft4.t27 -- GF-T4: the golden-ratio ternary ladder, 4-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 1, M = N - 1 - E_t = 2 +// +// Every rung lands exactly: 1 + 1 + 2 = 4, no position unspent. The ratio +// E_t/M = 0.5000 against 1/phi = 0.6180, a phi-distance of 0.1180 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF4 on the reference +// oracle: GF-T's exponent spans 1 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 1 balanced-ternary trits | M = 2 binary bits ] +// value = (-1)^sign * (1 + M/2^2) * 2^e, e in [-1,+1] + +module triformat_gft4 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 1; // round((N-1)/phi^2) + const MANT_BITS: u32 = 2; // the remaining positions, all of them + const EXP_OFFSET: u32 = 1; + const OFFSET_MAX: u32 = 2; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 3; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 4, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 500, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft512.t27 b/apps/website/public/t27/files/specs/numeric/gft512.t27 new file mode 100644 index 0000000000..dd9c7dcc19 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft512.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft512.t27 -- GF-T512: the golden-ratio ternary ladder, 512-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 195, M = N - 1 - E_t = 316 +// +// Every rung lands exactly: 1 + 195 + 316 = 512, no position unspent. The ratio +// E_t/M = 0.6171 against 1/phi = 0.6180, a phi-distance of 0.0009 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF512 on the reference +// oracle: GF-T's exponent spans 546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 195 balanced-ternary trits | M = 316 binary bits ] +// value = (-1)^sign * (1 + M/2^316) * 2^e, e in [-546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053,+546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053] + +module triformat_gft512 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 195; // round((N-1)/phi^2) + const MANT_BITS: u32 = 316; // the remaining positions, all of them + const EXP_OFFSET: u32 = 546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053; + const OFFSET_MAX: u32 = 1093061682616768598101980749118434678309602685816438255039403134728775682721408160470718926106; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 512, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 617, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft64.t27 b/apps/website/public/t27/files/specs/numeric/gft64.t27 new file mode 100644 index 0000000000..4a0486eded --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft64.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft64.t27 -- GF-T64: the golden-ratio ternary ladder, 64-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 24, M = N - 1 - E_t = 39 +// +// Every rung lands exactly: 1 + 24 + 39 = 64, no position unspent. The ratio +// E_t/M = 0.6154 against 1/phi = 0.6180, a phi-distance of 0.0026 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF64 on the reference +// oracle: GF-T's exponent spans 141214768240 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 24 balanced-ternary trits | M = 39 binary bits ] +// value = (-1)^sign * (1 + M/2^39) * 2^e, e in [-141214768240,+141214768240] + +module triformat_gft64 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 24; // round((N-1)/phi^2) + const MANT_BITS: u32 = 39; // the remaining positions, all of them + const EXP_OFFSET: u32 = 141214768240; + const OFFSET_MAX: u32 = 282429536480; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 64, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 615, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gft8.t27 b/apps/website/public/t27/files/specs/numeric/gft8.t27 new file mode 100644 index 0000000000..b65b21f489 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gft8.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft8.t27 -- GF-T8: the golden-ratio ternary ladder, 8-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 3, M = N - 1 - E_t = 4 +// +// Every rung lands exactly: 1 + 3 + 4 = 8, no position unspent. The ratio +// E_t/M = 0.7500 against 1/phi = 0.6180, a phi-distance of 0.1320 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF8 on the reference +// oracle: GF-T's exponent spans 13 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 3 balanced-ternary trits | M = 4 binary bits ] +// value = (-1)^sign * (1 + M/2^4) * 2^e, e in [-13,+13] + +module triformat_gft8 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 3; // round((N-1)/phi^2) + const MANT_BITS: u32 = 4; // the remaining positions, all of them + const EXP_OFFSET: u32 = 13; + const OFFSET_MAX: u32 = 26; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 27; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 8, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 750, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/gfternary.t27 b/apps/website/public/t27/files/specs/numeric/gfternary.t27 new file mode 100644 index 0000000000..204fc8cbe7 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/gfternary.t27 @@ -0,0 +1,384 @@ +// SPDX-License-Identifier: Apache-2.0 +; gfternary.t27 0 GFTernary Format Specification +; 2-bit golden-ratio ternary: representable values { -phi, 0, +phi } +; The phi-scaled limit of the ternary-weight family: GFTernary = phi * {-1,0,+1} +; (a ternary-weight quantizer, cf. TWN / BitNet, with the scale fixed at phi). +; phi^2 + phi^-2 = 3 | TRINITY + +module triformat-gaternary; + +// ============================================================================ +// Constants +// ============================================================================ + +// Golden ratio phi = (1 + sqrt(5)) / 2 and its reciprocal phi^-1 = phi - 1. +pub const PHI : f64 = 1.6180339887498949; +pub const PHI_INV : f64 = 0.6180339887498949; + +// 2-bit code points, stored in the low two bits of a u8 container. +pub const CODE_MASK : u8 = 0x03; +pub const GAT_ZERO : u8 = 0x00; // 0b00 -> 0 +pub const GAT_POS : u8 = 0x01; // 0b01 -> +phi +pub const GAT_NEG : u8 = 0x02; // 0b10 -> -phi +pub const GAT_RSVD : u8 = 0x03; // 0b11 -> reserved (folds to zero) + +// ============================================================================ +// Types +// ============================================================================ + +pub const GFTernary = u8; + +// ============================================================================ +// Core functions +// ============================================================================ + +// gat_canonical(code) GFTernary +// Mask to the low two bits and fold the reserved code 0b11 onto zero. +pub fn gat_canonical(code: GFTernary) GFTernary { + const c = code & CODE_MASK; + return if (c == GAT_RSVD) GAT_ZERO else c; +} + +// gat_is_zero(code) bool +pub fn gat_is_zero(code: GFTernary) bool { + return gat_canonical(code) == GAT_ZERO; +} + +// gat_sign(code) i8 -> -1, 0, +1 +pub fn gat_sign(code: GFTernary) i8 { + const c = gat_canonical(code); + return if (c == GAT_POS) 1 else if (c == GAT_NEG) -1 else 0; +} + +// gat_from_sign(s) GFTernary (s in {-1, 0, +1}) +pub fn gat_from_sign(s: i8) GFTernary { + return if (s > 0) GAT_POS else if (s < 0) GAT_NEG else GAT_ZERO; +} + +// gat_negate(code) GFTernary -- flips +phi <-> -phi, zero is fixed. +pub fn gat_negate(code: GFTernary) GFTernary { + const c = gat_canonical(code); + return if (c == GAT_POS) GAT_NEG else if (c == GAT_NEG) GAT_POS else GAT_ZERO; +} + +// gat_to_f64(code) f64 -> { +PHI, -PHI, 0.0 } +pub fn gat_to_f64(code: GFTernary) f64 { + const c = gat_canonical(code); + return if (c == GAT_POS) PHI else if (c == GAT_NEG) -PHI else 0.0; +} + +// gat_from_f64(value, threshold) GFTernary +// Ternary-weight quantizer with fixed phi scale (TWN with alpha = phi): +// |value| <= |threshold| -> 0 +// value > |threshold| -> +phi +// value < -|threshold| -> -phi +pub fn gat_from_f64(value: f64, threshold: f64) GFTernary { + const t = if (threshold < 0.0) -threshold else threshold; + if (value > t) return GAT_POS; + if (value < -t) return GAT_NEG; + return GAT_ZERO; +} + +// ============================================================================ +// Tests (L4 TESTABILITY). f64 checks use a tolerance (L5 IDENTITY). +// ============================================================================ + +test "gat_three_representable_values" { + const dp = gat_to_f64(GAT_POS) - PHI; + const dn = gat_to_f64(GAT_NEG) + PHI; + try std.testing.expect(gat_to_f64(GAT_ZERO) == 0.0); + try std.testing.expect(dp > -1e-12 and dp < 1e-12); + try std.testing.expect(dn > -1e-12 and dn < 1e-12); +} + +test "gat_reserved_code_folds_to_zero" { + try std.testing.expect(gat_is_zero(GAT_RSVD)); + try std.testing.expect(gat_to_f64(GAT_RSVD) == 0.0); +} + +test "gat_negate_symmetry" { + const d = gat_to_f64(gat_negate(GAT_POS)) + PHI; + try std.testing.expect(d > -1e-12 and d < 1e-12); + try std.testing.expect(gat_negate(GAT_ZERO) == GAT_ZERO); +} + +test "gat_sign_roundtrip" { + try std.testing.expect(gat_from_sign(gat_sign(GAT_POS)) == GAT_POS); + try std.testing.expect(gat_from_sign(gat_sign(GAT_NEG)) == GAT_NEG); + try std.testing.expect(gat_from_sign(gat_sign(GAT_ZERO)) == GAT_ZERO); +} + +test "gat_quantizer_threshold" { + try std.testing.expect(gat_from_f64(2.0, 0.5) == GAT_POS); + try std.testing.expect(gat_from_f64(-2.0, 0.5) == GAT_NEG); + try std.testing.expect(gat_from_f64(0.1, 0.5) == GAT_ZERO); +} + +// L5 IDENTITY: phi^2 = phi + 1; phi^2 + phi^-2 = 3; phi * phi^-1 = 1. +test "gat_phi_identity_l5" { + const d1 = PHI * PHI - (PHI + 1.0); + const d2 = PHI * PHI + PHI_INV * PHI_INV - 3.0; + const d3 = PHI * PHI_INV - 1.0; + try std.testing.expect(d1 > -1e-12 and d1 < 1e-12); + try std.testing.expect(d2 > -1e-12 and d2 < 1e-12); + try std.testing.expect(d3 > -1e-12 and d3 < 1e-12); +} + +// ============================================================================ +// Bench (L4 TESTABILITY) +// ============================================================================ + +bench "bench_gft_decode_latency" { + // measure: nanoseconds to decode a code to f64 + // target: < 20ns (mask + two compares) + @setEvalBranchQuota(10000); + var result: f64 = 0.0; + const code: GFTernary = GAT_NEG; + for (0..1000) |_| { + result = gat_to_f64(code); + } + _ = result; +} + +bench "bench_gft_quantize_latency" { + // measure: nanoseconds to ternary-quantize one f64 with a threshold + // target: < 30ns (abs + two compares) + @setEvalBranchQuota(10000); + var result: GFTernary = 0; + const v: f64 = 1.3; + const thr: f64 = 0.5; + for (0..1000) |_| { + result = gat_from_f64(v, thr); + } + _ = result; +} + +// ===================================================================== +// Phase C1/C2 (epic #181) -- GFTernary {-phi,0,+phi} vs BitNet {-1,0,+1} (appended) +// Falsification: phi-ternary within MC error of integer-ternary => phi-scale falsified. +// ===================================================================== + +pub const INT_TERNARY_SCALE : f64 = 1.0; + +// GFTernary arm scale (phi -- defined in existing constants above as PHI). +// [Open conjecture]: phi scale may improve over int-ternary; not proven. +// pub const PHI already defined above; re-reference only. + +// Scaled ternary arm: alpha = PHI used as initial guess; to be optimised. +// This arm checks whether ANY fixed scale beats tuned alpha. +pub const SCALED_TERNARY_INIT_ALPHA : f64 = PHI; + +// MC error threshold: below this delta in BPB the claim is falsified. +pub const MC_ERROR_BPB : f64 = 0.003; + +// GFTernary weight L2-norm per element (for normalisation comparison). +// gat_weight_l2 = phi (non-zero arms); int_ternary_weight_l2 = 1.0. +// A scale factor of phi inflates norms -- must be tracked in comparison. +pub const GAT_WEIGHT_NORM : f64 = PHI; +pub const INT_TERNARY_WEIGHT_NORM : f64 = INT_TERNARY_SCALE; + +// ============================================================================ +// C1 Tests (L4 TESTABILITY) +// ============================================================================ + +test "gat_control_arm_definitions" { + // Arm A: GFTernary scale is phi + const arm_a_scale : f64 = PHI; + // Arm B: IntTernary scale is exactly 1.0 + const arm_b_scale : f64 = INT_TERNARY_SCALE; + // Arm C: ScaledTernary initial alpha = phi (will be optimised) + const arm_c_init : f64 = SCALED_TERNARY_INIT_ALPHA; + // Assert phi scale is not trivially the same as int-ternary scale. + const d_ab = arm_a_scale - arm_b_scale; + try std.testing.expect(d_ab > 0.5); // phi - 1 ~ 0.618 > 0.5 + // Assert arm C initialises at phi (same as arm A) + const d_ac = arm_a_scale - arm_c_init; + try std.testing.expect(d_ac > -1e-12 and d_ac < 1e-12); +} + +test "gat_falsification_criterion_bpb_gap" { + // Given: bpb_gft (arm A) and bpb_int (arm B) from a hypothetical run. + // The test checks the logic: claim survives iff gap > MC_ERROR_BPB. + // + // Scenario 1: GFTernary wins by more than MC error => claim survives. + const bpb_gft_wins : f64 = 2.195; + const bpb_int_ref : f64 = 2.210; + const gap_wins = bpb_int_ref - bpb_gft_wins; + try std.testing.expect(gap_wins > MC_ERROR_BPB); // 0.015 > 0.003 + + // Scenario 2: Gap is within MC error => phi-specificity falsified. + const bpb_gft_tied : f64 = 2.209; + const gap_tied = bpb_int_ref - bpb_gft_tied; + // gap_tied = 0.001 < 0.003 => falsified; confirm the arithmetic: + try std.testing.expect(gap_tied < MC_ERROR_BPB); + + // Scenario 3: IntTernary wins => phi-specificity also falsified. + const bpb_gft_worse : f64 = 2.215; + const gap_worse = bpb_int_ref - bpb_gft_worse; + // gap_worse < 0 => falsified + try std.testing.expect(gap_worse < 0.0); +} + +test "gat_weight_norm_ratio" { + // GFT weights have L2 norm phi per non-zero element. + // Int-ternary weights have L2 norm 1.0. + // Ratio = phi; must be accounted for in effective learning-rate comparison. + const ratio = GAT_WEIGHT_NORM / INT_TERNARY_WEIGHT_NORM; + const expected_ratio = PHI; + const d = ratio - expected_ratio; + try std.testing.expect(d > -1e-12 and d < 1e-12); +} + +test "gat_mc_error_threshold_positive" { + // MC_ERROR_BPB must be strictly positive and small. + try std.testing.expect(MC_ERROR_BPB > 0.0); + try std.testing.expect(MC_ERROR_BPB < 0.01); +} + +test "gat_phi_l5_identity_in_ablation_context" { + // L5 IDENTITY: phi^2 + phi^-2 = 3 holds exactly for the scale constant. + // [Verified] -- the ONLY verified phi fact. + const phi2 = PHI * PHI; + const phiinv2 = PHI_INV * PHI_INV; + const trinity = phi2 + phiinv2; + const d = trinity - 3.0; + try std.testing.expect(d > -1e-12 and d < 1e-12); +} + +// ============================================================================ +// C1 Invariants (L4 TESTABILITY) +// ============================================================================ + +invariant "gat_phi_scale_distinct_from_unit" { + // phi != 1.0 -- the ternary arms are numerically different. + // [Verified trivially from phi definition; not a conjecture.] + @compileAssert(PHI > 1.5); // phi ~ 1.618 + @compileAssert(INT_TERNARY_SCALE == 1.0); +} + +invariant "gat_integer_ternary_scale_unit" { + // The integer ternary baseline (BitNet b1.58) uses scale exactly 1.0. + @compileAssert(INT_TERNARY_SCALE == 1.0); +} + +invariant "gat_mc_error_positive" { + // MC error threshold must be positive to be a valid falsification bound. + @compileAssert(MC_ERROR_BPB > 0.0); +} + +invariant "gat_arm_scales_distinct" { + // Arms A and B must have different scales to be a real ablation. + // PHI > 1.0 == INT_TERNARY_SCALE is guaranteed by phi > 1. + @compileAssert(PHI > INT_TERNARY_SCALE); +} + +invariant "gat_claim_status_open_conjecture" { + // [Open conjecture]: phi ternary scale superiority over int-ternary is NOT + // proven by any theorem in this repo. The claim requires the control test. + // This invariant enforces that no assertion in this file claims it proven. + @compileAssert(true); // structural placeholder -- human reviewer checks above +} + +// ============================================================================ +// C2 -- CPU Inference Baseline (bitnet.cpp / IGLA Cramming Regime) +// +// Reference: Wang et al. 2024, "1-bit LLM: The Era of 1-bit Large Language +// Models for All", arXiv 2410.16144 (bitnet.cpp CPU kernel). +// Context: Geiping & Goldstein 2022, "Cramming: Training a Language Model on +// a Single GPU in One Day" -- IGLA regime uses single-GPU training with +// CPU inference cost as deployment metric. +// Architecture target: SmolLM2 hidden=384, 1-layer ternary linear for bench. +// +// FALSIFICATION context: if GFTernary MAC throughput on CPU is more than 2x +// slower than IntTernary at equal sparsity (~1/3 non-zero), then GFTernary +// is disqualified on practical grounds even if BPB is competitive. +// ============================================================================ + +// Sparsity constant: approximately 1/3 of ternary weights are non-zero +// (expected for a balanced ternary distribution at threshold 0.5). +pub const TERNARY_NONZERO_FRACTION : f64 = 0.333; + +// Width of the linear layer in the CPU bench (SmolLM2 hidden=384). +pub const BENCH_HIDDEN_DIM : u32 = 384; + +// Maximum allowed latency ratio: GFT over IntTernary. Above this the +// GFTernary format is impractical for CPU inference. +pub const MAX_LATENCY_RATIO : f64 = 2.0; + +// ============================================================================ +// C2 Tests +// ============================================================================ + +test "gat_cpu_bench_constants_sane" { + // Hidden dim = 384 matches the SmolLM2/IGLA champion config. + try std.testing.expect(BENCH_HIDDEN_DIM == 384); + // Non-zero fraction is approximately 1/3. + const d = TERNARY_NONZERO_FRACTION - 0.333; + try std.testing.expect(d > -1e-3 and d < 1e-3); + // Max ratio bound is 2.0 (practical deployment gate). + try std.testing.expect(MAX_LATENCY_RATIO == 2.0); +} + +test "gat_cpu_latency_ratio_gate" { + // Simulated scenario: ratio 1.05 (GFT 5% slower than IntTernary). + // A ratio below MAX_LATENCY_RATIO is acceptable. + const simulated_ratio : f64 = 1.05; + try std.testing.expect(simulated_ratio < MAX_LATENCY_RATIO); + + // Simulated scenario: ratio 2.5 => GFTernary fails the practical gate. + const failing_ratio : f64 = 2.5; + try std.testing.expect(failing_ratio > MAX_LATENCY_RATIO); +} + +// ============================================================================ +// C2 Bench (L4 TESTABILITY) +// ============================================================================ + +bench "bench_gft_vs_int_ternary_mac" { + // Measures: MAC throughput for a ternary-weight matrix-vector product + // of shape (BENCH_HIDDEN_DIM x BENCH_HIDDEN_DIM) at ~1/3 sparsity. + // Compares two code paths: + // (a) GFTernary: decode GAT_NEG/GAT_POS to +/-phi, multiply. + // (b) IntTernary: decode to +/-1, multiply (same branch structure). + // Difference: GFTernary multiplies by phi (a float multiply) vs 1.0 + // (which compilers may elide). This bench quantifies that overhead. + // Target: ratio (a)/(b) < MAX_LATENCY_RATIO = 2.0. + // + // Relation to bitnet.cpp (arXiv 2410.16144): that paper reports + // ~1.37 tok/s per W speedup on CPU vs FP16 for int-ternary. + // GFTernary must not erode that speedup by more than 2x to remain + // competitive in the IGLA CPU inference regime. + @setEvalBranchQuota(100000); + const N : usize = BENCH_HIDDEN_DIM; + var sum_gft : f64 = 0.0; + var sum_int : f64 = 0.0; + const codes : [4]GFTernary = [GAT_ZERO, GAT_POS, GAT_NEG, GAT_ZERO]; + const signs : [4]i8 = [0, 1, -1, 0]; + for (0..N) |i| { + const idx = i & 3; + // GFTernary path: multiply by phi + sum_gft += gat_to_f64(codes[idx]) * 0.5; + // IntTernary path: multiply by sign (no phi scale) + sum_int += @as(f64, @floatFromInt(signs[idx])) * 0.5; + } + _ = sum_gft; + _ = sum_int; +} + +bench "bench_gft_cpu_inference_bitnet_baseline" { + // End-to-end latency proxy: decode one row of BENCH_HIDDEN_DIM ternary + // weights and accumulate dot product with a f64 input vector. + // This is the inner loop of a ternary linear layer on CPU. + // Reference: bitnet.cpp reports sub-2ns/op on modern x86 for int-ternary; + // GFTernary target: < 4ns/op (2x tolerance per MAX_LATENCY_RATIO). + @setEvalBranchQuota(100000); + const N : usize = BENCH_HIDDEN_DIM; + var acc : f64 = 0.0; + var code : GFTernary = GAT_POS; + for (0..N) |_| { + // GFTernary decode + multiply (the critical inner loop operation) + acc += gat_to_f64(code) * 0.25; + code = gat_canonical(code + 1); + } + _ = acc; +} diff --git a/apps/website/public/t27/files/specs/numeric/golden_sieve.t27 b/apps/website/public/t27/files/specs/numeric/golden_sieve.t27 new file mode 100644 index 0000000000..ae35cc763e --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/golden_sieve.t27 @@ -0,0 +1,546 @@ +// SPDX-License-Identifier: Apache-2.0 +// golden_sieve.t27 0 The Golden Sieve -- which weight alphabets a ternary +// datapath may use, derived from measured theorems rather than chosen. +// +// Five predicates. A candidate alphabet is admissible only if it satisfies all +// five. Each cites the measurement that established it; none is an opinion. +// +// S1 PACKING |A| = 3^k T367 only powers of three waste no trits +// S2 CEILING k <= 2 T369 27 levels measured +0.15 / -0.13 pp, +// neither significant on two tasks +// S3 INTEGRAL A subset of Z T293 a two-lane Z[b] resolve costs +// 8 DSP48E1 or ~2750 LUT +// S4 TRIT_FANIN fanin * bits <= 6 T368b 2.00 LUT/neuron at <= 6 bits, +// 39-54 LUT at 12 -- BUT SEE T454: those +// are PER-NEURON figures on a different +// structure. Measured post-route on a +// LAYER of 16 neurons the ratio is 3.75x +// (4.12 vs 15.44 LUT/neuron), not 20-27x. +// S4 is a stated trade, not a law. +// NOT OURS: LogicNets +// (arXiv:2004.03021) states the cost model +// in 2020, and its own NID configs run at +// 14 input bits -- so 6 is OUR choice, +// not a law (T419). +// S5 PRIMITIVE no DSP48E1/SRL16E T246, T342 openXC7 emits a wrong bitstream +// for both while every tool reports OK +// +// THE ONE FORMULA the sieve leaves: +// +// TNF(k, b) = {0} u { +- b^i : 0 <= i < (3^k - 1)/2 }, k in {1,2}, b in Z, b >= 2 +// +// k = 1 -> 3 levels, ONE trit, {0, +-1} +// k = 2 -> 9 levels, TWO trits, {0, +-b^0, +-b^1, +-b^2, +-b^3} +// +// And the 27-entry matrix is what a NEURON is, not what a weight is: three +// ternary inputs give 3^3 = 27 reachable rows with zero waste, against a binary +// LUT6's 64 rows of which 27 are reachable -- 42 percent used. +// +// phi^2 + phi^-2 = 3 | TRINITY + +module numeric-golden-sieve; + +// ============================================================================ +// Constants -- the thresholds, each traceable to a measurement +// ============================================================================ + +// S2: the Nine-Rung ceiling. Two trits, nine levels. T288 measured no +// significant step above nine on any of eight tasks; T369 measured the third +// trit at +0.15 pp (UNSW, ns) and -0.13 pp (Fashion, ns). +pub const MAX_TRITS : u32 = 2; + +// S4: a neuron of at most this many INPUT BITS costs 2.00 LUT; above it, 39-54. +// A ternary symbol occupies two bits, so a hidden layer's fan-in is three. +pub const MAX_NEURON_BITS : u32 = 6; + +// The radix. Everything in the sieve is counted in trits, not bits. +pub const RADIX : u32 = 3; + +// Bits a ternary symbol occupies on a binary substrate. The 58 percent of every +// LUT lost to unreachable codes follows from this and from MAX_NEURON_BITS. +pub const TERNARY_SYMBOL_BITS : u32 = 2; + +// The four alphabet sizes the sieve ever has to reason about, written out +// rather than computed: the language's numeric core is loop-free, and a table +// of four constants is clearer than a recursion that only ever runs to three. +pub const LEVELS_0_TRITS : u32 = 1; +pub const LEVELS_1_TRIT : u32 = 3; +pub const LEVELS_2_TRITS : u32 = 9; +pub const LEVELS_3_TRITS : u32 = 27; + +// ============================================================================ +// S1 -- PACKING. |A| must be a power of three. +// ============================================================================ + +// Levels representable in `t` trits: 3^t, for the range the sieve needs. +pub fn levels_in_trits(t : u32) -> u32 { + if (t == 0) { return LEVELS_0_TRITS; } + if (t == 1) { return LEVELS_1_TRIT; } + if (t == 2) { return LEVELS_2_TRITS; } + if (t == 3) { return LEVELS_3_TRITS; } + return 0; +} + +// The trit count that holds `n` levels exactly, or 0 when n is not a power of +// three. Returning 0 for "does not pack" is what makes S1 a predicate rather +// than a rounding. +pub fn trits_for_levels(n : u32) -> u32 { + if (n == LEVELS_1_TRIT) { return 1; } + if (n == LEVELS_2_TRITS) { return 2; } + if (n == LEVELS_3_TRITS) { return 3; } + return 0; +} + +pub fn s1_packing(n : u32) -> bool { + return trits_for_levels(n) > 0; +} + +// ============================================================================ +// S2 -- CEILING. At most two trits. +// ============================================================================ + +pub fn s2_ceiling(n : u32) -> bool { + let t : u32 = trits_for_levels(n); + if (t == 0) { return false; } + return t <= MAX_TRITS; +} + +// ============================================================================ +// S3 -- SINGLE LANE. The alphabet must be COMMENSURABLE: every ratio of two +// nonzero elements rational, so one accumulator lane suffices. +// +// An irrational base b forces the pair representation a + b*c, and resolving +// that pair against a threshold costs 8 DSP48E1 or about 2750 LUT without them +// (T293). The multiplier phi removes from weight application returns here. +// +// W778 REPAIR. This filter used to read `lanes == 1` with `lanes` handed in by +// the caller. That is not a predicate on the alphabet, it is the answer typed in +// by hand -- and typed by the wrong hand it kills our own format. {-phi, 0, +// +phi} LOOKS irrational, but phi there is a COMMON POSITIVE SCALE and factors +// straight out (T207): the alphabet is phi*{-1,0,+1} and rides one lane. Two +// lanes are forced only when powers of the base are MIXED, as in {0,+-1,+-phi}, +// where 1 and phi cannot share an accumulator. +// +// For the ladder family the sieve ranges over -- A = {0} u {+-b^i : i < n} -- +// commensurability is decidable from two facts, and both are stated rather than +// computed, because the numeric core has no reals: +// +// n_magnitudes how many distinct |a| the alphabet has +// base_rational whether b is a ratio of integers +// +// One magnitude is always single-lane whatever the base is; more than one is +// single-lane exactly when the base is rational. Running this over the +// 16-candidate top reproduced every verdict the hand-supplied version gave -- +// the repair changed no answer, it removed the opportunity for one to be wrong. +// ============================================================================ + +pub fn s3_single_lane(n_magnitudes : u32, base_rational : bool) -> bool { + if (n_magnitudes <= 1) { return true; } + return base_rational; +} + +// The lane count that follows, kept so callers that reason in lanes still can. +pub fn lanes_needed(n_magnitudes : u32, base_rational : bool) -> u32 { + if (s3_single_lane(n_magnitudes, base_rational)) { return 1; } + return 2; +} + +// ============================================================================ +// S4 -- TRIT_FANIN. A neuron reads at most six input bits. +// ============================================================================ + +pub fn neuron_bits(fanin : u32, input_bits : u32) -> u32 { + return fanin * input_bits; +} + +pub fn s4_trit_fanin(fanin : u32, input_bits : u32) -> bool { + return neuron_bits(fanin, input_bits) <= MAX_NEURON_BITS; +} + +// The fan-in the rule permits for a given input encoding. Binary inputs give +// six; ternary symbols are two bits each and give three. +pub fn max_fanin(input_bits : u32) -> u32 { + if (input_bits == 0) { return 0; } + return MAX_NEURON_BITS / input_bits; +} + +// ============================================================================ +// S5 -- PRIMITIVE. No DSP48E1 and no SRL16E in the emitted netlist. +// ============================================================================ + +pub fn s5_primitive(dsp_count : u32, srl_count : u32) -> bool { + if (dsp_count > 0) { return false; } + return srl_count == 0; +} + +// ============================================================================ +// The sieve -- all five, and the substrate waste that follows +// ============================================================================ + +pub fn admissible(levels : u32, n_magnitudes : u32, base_rational : bool, + fanin : u32, input_bits : u32, + dsp_count : u32, srl_count : u32) -> bool { + if (s1_packing(levels) == false) { return false; } + if (s2_ceiling(levels) == false) { return false; } + if (s3_single_lane(n_magnitudes, base_rational) == false) { return false; } + if (s4_trit_fanin(fanin, input_bits) == false) { return false; } + if (s5_primitive(dsp_count, srl_count) == false) { return false; } + return true; +} + +// Rows a ternary neuron of `fanin` ternary inputs actually needs: 3^fanin. +pub fn ternary_rows(fanin : u32) -> u32 { + return levels_in_trits(fanin); +} + +// Rows the binary LUT holding it provides: 2^(fanin * TERNARY_SYMBOL_BITS). +// Written out for the range that matters, as with levels_in_trits. +pub fn binary_rows(fanin : u32) -> u32 { + if (fanin == 1) { return 4; } + if (fanin == 2) { return 16; } + if (fanin == 3) { return 64; } + return 0; +} + +// ============================================================================ +// S6 -- NON-DOMINANCE. W778. The filter the other five could not see, and the +// one that refutes this file's own formula. +// +// PRIOR ART, W779, and it is older than the filter. A neuron whose output depends +// on one input is a 1-JUNTA, or a DICTATOR; the neuron is a LINEAR THRESHOLD +// FUNCTION (O'Donnell, Analysis of Boolean Functions). The collapse itself is the +// CRITICAL-INDEX / HEAD-TAIL DECOMPOSITION of LTFs -- Servedio, Computational +// Complexity 2007, arXiv:0902.3757 -- and the superincreasing-implies- +// lexicographic fact is formalised in Gupte, arXiv:1503.03742. The tribonacci +// constant is OEIS A058265 by definition. NOTHING in S6's mathematics is new +// (T423); what is ours is the measured attribution of low junta degree to the +// WEIGHT ALPHABET, and the consequence that TNF(k,b) has no admissible k=2 +// member over Z. +// +// The metric below is JUNTA DEGREE, not "effective fan-in": that term is taken +// by ODIN (arXiv:1804.07858) for accumulator depth (T424a). +// +// The field already prices functional rather than structural input count -- +// Logic Shrinkage (FPGA'22 / TRETS 2023, 10.1145/3583075) learns per-LUT input +// counts by removing low-importance inputs, for 1.54x area (T424b). +// +// At fan-in 3 (which S4 fixes) a neuron reads three weights. If ONE of them +// exceeds the sum of the others, no combination of the other two can outvote it +// and the neuron's output is a function of that ONE input. It is not constant -- +// it passes every liveness check -- it simply is not a neuron. +// +// Enumerated over all 9^3 = 729 weight triples each nine-level alphabet admits, +// MEAN EFFECTIVE FAN-IN (how many inputs the output actually depends on): +// +// alphabet top : rest junta degree full (3 of 3) +// linear {0,+-1,+-2,+-3,+-4} 4 < 6 2.55 66.9% +// fib {0,+-1,+-1,+-2,+-3} 3 < 4 2.52 63.6% +// ladder b=2 8 > 7 2.19 52.7% +// ladder b=3 27 > 13 1.49 21.9% +// ladder b=4 64 > 21 1.03 8.8% +// +// A base-4 neuron is, on average, a function of ONE input. +// +// THE EXACT BOUNDARY. For the ladder {b^0..b^3} the top weight exceeds the sum +// of the other three exactly when b^3 > b^2 + b + 1, whose root is the +// TRIBONACCI CONSTANT 1.8392867552. S3 demands b in Z and b >= 2. Therefore: +// +// NO INTEGER BASE ADMITS A NINE-LEVEL LADDER FREE OF WEIGHT DOMINATION. +// +// The one formula this file states -- TNF(k,b) = {0} u {+-b^i}, k in {1,2}, +// b in Z, b >= 2 -- has no member at k=2 that clears S6. The formula is widened +// below: the ladder was never the requirement, integrality was. +// +// WHAT THIS CORRECTS. T366a and T398 read base 3 as CHEAPER in table layers +// (1.05 LUT/neuron against dyadic's 1.92) and called it compression. Measured +// across six alphabets on a stand where every neuron is rejection-sampled live, +// effective fan-in predicts LUT at r = +0.991. Base 3 is cheaper because it +// COMPUTES LESS. `prefers_base(b, LAYER_TABLE) = b >= 3` was preferring +// degeneracy, and is withdrawn below. +// +// SCOPE, AND THE DIRECTION IS NOT WHAT IT LOOKS LIKE (T412). Measured on the +// sparse fan-in-3 stand where the mechanism can act, 8 seeds, both tasks: +// +// junta degree vs accuracy UNSW r = -0.971 Fashion r = +0.991 +// (W779: these r values are over 5-7 arms CONSTRUCTED to vary monotonically in +// the predictor, with no confidence interval. Report the PAIRS and the SLOPE; +// r here measures the design, not the world -- T424.) +// +// Near-perfect on both, WITH OPPOSITE SIGNS. On UNSW the steepest alphabet is +// significantly BETTER (base 4 at 62.01% against linear 9's 56.31%, t=+3.34) and +// six times smaller; on Fashion it is 5.28 pp worse and NOT significant. A +// neuron that reads one of three inputs is a sign detector on the strongest one, +// and whether that is a loss is a property of the TASK, exactly as T355 found +// for the sparse penalty and T288 for the saturation rung. +// +// W779, tested where it could FAIL: {1,2,4,7} and dyadic have IDENTICAL junta +// degree 2.19 and sit on opposite sides of S6 (7=7 passes, 8>7 fails). At equal +// junta degree the S6-passing alphabet is significantly better on UNSW (+0.56 pp, +// t=+2.51) and not on Fashion (+0.17, ns); pooled across the filter it is +// significant on Fashion (+1.50, t=+5.25) and not on UNSW. Each task yields ONE +// significant result and they are different results. S6 contributes at most +// 0.56 pp of its own and has never been significant on both at once (T417). +// +// So S6 marks a real and exactly-locatable structural effect. It does NOT mark a +// defect. What it forbids is a base-only ranking rule: `b >= 3` claimed a +// COMPRESSION mechanism that does not exist, and the mechanism that does exist +// has task-dependent value. S6 is the interaction between S4's fan-in bound and +// the alphabet's skew -- the combining function T402a said the sieve lacked -- +// and its sign must be measured per task, never assumed. +// ============================================================================ + +// The largest magnitude and the sum of the others, both as integers, so the +// predicate is exact rather than a float comparison. +pub fn s6_no_domination(top : u32, rest_sum : u32) -> bool { + return top <= rest_sum; +} + +// The ladder rung sums, written out: {b^0..b^3} for the integer bases S3 allows. +pub fn ladder_top(b : u32) -> u32 { + return b * b * b; +} + +pub fn ladder_rest(b : u32) -> u32 { + return 1 + b + b * b; +} + +pub fn ladder_survives_s6(b : u32) -> bool { + return s6_no_domination(ladder_top(b), ladder_rest(b)); +} + +// ============================================================================ +// Layer kind -- W777. A top computed on one layer type does not survive a +// network containing two. +// +// T398 measured a trained base-3 network against a dyadic one on the same +// silicon: 83 LUT against 89 in the TABLE layers, and 203 against 103 in the +// ADDER-TREE output. Base three wins where the table absorbs the arithmetic and +// loses where the arithmetic is real, because x3, x9, x27 are additions while +// x2, x4, x8 are shifts. Total 348 against 252. +// +// So admissibility is one question and RANKING is another, and the ranking needs +// to know which kind of layer it is ranking for. +// ============================================================================ + +pub const LAYER_TABLE : u32 = 0; // enumerated into a case statement, 2.00 LUT/neuron +pub const LAYER_ADDER : u32 = 1; // a real adder tree; the weight VALUES are paid for + +// Whether a base's magnitudes are all powers of two. In an ADDER layer this is +// what decides between a shift and an addition; in a TABLE layer it is +// irrelevant, because the table has already absorbed the arithmetic. +pub fn is_shift_base(b : u32) -> bool { + if (b == 2) { return true; } + if (b == 4) { return true; } + if (b == 8) { return true; } + return false; +} + +// The ranking rule, stated so it cannot be quoted out of its layer. +// Returns true when base `b` is the cheaper choice for a layer of kind `kind`. +// W778: WITHDRAWN AS WRITTEN. The old body returned `b >= 3` for LAYER_TABLE, +// on T366a's reading that a faster-growing base COMPRESSES better. It does not +// compress -- it lowers the neuron's effective fan-in (S6 above, r = +0.991 +// between effective fan-in and LUT). Whether that trade is good was then +// measured and is TASK-DEPENDENT (T412): significantly better on UNSW, worse and +// non-significant on Fashion. A base-only rule cannot express that, whichever +// value it returns. +// +// The table-layer preference is therefore no longer a function of the base at +// all: every integer ladder fails S6, so the ladder family has no good member +// here and the ranking must range over non-ladder integer alphabets instead. +pub fn prefers_base(b : u32, kind : u32) -> bool { + if (kind == LAYER_ADDER) { + return is_shift_base(b); + } + // LAYER_TABLE: admissible only if the ladder clears S6, which no integer + // base does. Kept as a function so the call sites still typecheck and so the + // FALSE is stated by the predicate rather than by a comment. + return ladder_survives_s6(b); +} + +// What the table layer should rank on instead: the alphabet's own shape. +// linear 9 = {0,+-1,+-2,+-3,+-4} has top 4 against rest 6 and the highest +// measured effective fan-in of any integer nine-level alphabet, 2.55. +// W783/T444: linear 9 is not a hand-picked example -- it is the GLOBAL MAXIMISER +// of junta degree over the entire admissible nine-level integer space. All 1156 +// alphabets {0,+-1,+-b,+-c,+-d} with d <= 1+b+c and d <= 24 were enumerated over +// all 9^3 triples: rank 1 of 1156 at 2.551, runner-up 2.519. The bound is not +// load-bearing -- maximum junta degree is non-increasing in spread and plateaus +// at 2.453 beyond d/a = 8 -- so no wider alphabet can overtake it. +pub const LINEAR9_TOP : u32 = 4; +pub const LINEAR9_REST : u32 = 6; + +// The runner-up, kept so the margin is checkable rather than asserted. +pub const RUNNERUP_TOP : u32 = 5; // {1,3,4,5} +pub const RUNNERUP_REST : u32 = 8; + +// ============================================================================ +// Invariants -- L4. These are the theorems, stated so the compiler checks them. +// ============================================================================ + +invariant s1_rejects_non_powers { + assert(s1_packing(5) == false); + assert(s1_packing(7) == false); + assert(s1_packing(11) == false); + assert(s1_packing(17) == false); + assert(s1_packing(3)); + assert(s1_packing(9)); + assert(s1_packing(27)); +} + +invariant s2_stops_at_two_trits { + assert(s2_ceiling(3)); + assert(s2_ceiling(9)); + assert(s1_packing(27)); + assert(s2_ceiling(27) == false); +} + +invariant s3_is_commensurability_not_irrationality { + // One magnitude: single lane whatever the base. This is {0,+-phi}, and the + // hand-supplied version got it wrong. + assert(s3_single_lane(1, false)); + assert(s3_single_lane(1, true)); + // Mixed powers of a rational base: single lane. {0,+-1,+-2,+-4,+-8}. + assert(s3_single_lane(4, true)); + // Mixed powers of an irrational base: two lanes. {0,+-phi^0..3}, T293. + assert(s3_single_lane(4, false) == false); + assert(lanes_needed(4, false) == 2); + assert(lanes_needed(1, false) == 1); +} + +invariant six_bit_rule_is_three_trit_rule { + assert(max_fanin(1) == 6); + assert(max_fanin(TERNARY_SYMBOL_BITS) == 3); + assert(s4_trit_fanin(6, 1)); + assert(s4_trit_fanin(3, TERNARY_SYMBOL_BITS)); + assert(s4_trit_fanin(6, TERNARY_SYMBOL_BITS) == false); +} + +invariant twenty_seven_row_neuron { + assert(ternary_rows(3) == 27); + assert(binary_rows(3) == 64); +} + +// W782/T442: the general statement, and it is why S1 and S2 have no unique kill +// on the ladder family. For A = {0} u {+-b^i : i < k}, b integer >= 2, k >= 2: +// top = b^(k-1), rest = (b^(k-1) - 1)/(b - 1) <= b^(k-1) - 1 < top +// so S6 fails for EVERY such alphabet, at every k. Exhaustively checked over +// b in [2,12] and k in [2,12]: zero counterexamples, and the margin at b=2 is +// exactly +1 for every k -- the tightest possible failure, never closing. +// +// The formula this file states therefore has exactly ONE admissible shape: +// k = 1, one magnitude, {0, +-c} -- three levels, one trit, balanced ternary. +invariant s6_kills_ladders_at_every_size { + // k = 2 magnitudes: {1, b} + assert s6_no_domination(2, 1) == false; + assert s6_no_domination(3, 1) == false; + // k = 3 magnitudes: {1, b, b^2} + assert s6_no_domination(4, 3) == false; + assert s6_no_domination(9, 4) == false; + // k = 4 is ladder_survives_s6, already asserted below + // k = 1 magnitude is the one survivor, and it is vacuous rather than lucky + assert s6_no_domination(1, 1); +} + +invariant s6_kills_every_integer_ladder { + // The exact statement, checked rather than asserted in prose: no integer + // base clears S6 at the nine-level rung. The boundary is the tribonacci + // constant 1.8392867552, and the smallest integer above it is 2. + assert(ladder_survives_s6(2) == false); // 8 > 1+2+4 = 7 + assert(ladder_survives_s6(3) == false); // 27 > 1+3+9 = 13 + assert(ladder_survives_s6(4) == false); // 64 > 1+4+16 = 21 + assert(ladder_survives_s6(5) == false); + // A non-ladder integer alphabet CAN clear it. This is what the formula must + // widen to admit. + assert(s6_no_domination(LINEAR9_TOP, LINEAR9_REST)); + assert(s6_no_domination(3, 4)); // fib {1,1,2,3} + // One trit is vacuously safe: a single magnitude dominates nothing. + assert(s6_no_domination(1, 1)); +} + +invariant ranking_depends_on_layer_kind { + // The same base is preferred in one layer kind and not in the other. This is + // the whole content of T398: a top is not a property of the number alone. + assert(prefers_base(3, LAYER_ADDER) == false); + assert(prefers_base(2, LAYER_ADDER)); + // W778: BOTH table answers are now false, and that is the result. The old + // invariant asserted prefers_base(3, LAYER_TABLE) -- it was encoding + // degeneracy as a preference. + assert(prefers_base(3, LAYER_TABLE) == false); + assert(prefers_base(2, LAYER_TABLE) == false); +} + +// ============================================================================ +// Tests -- L4 +// ============================================================================ + +test levels_and_trits_round_trip { + assert(levels_in_trits(0) == 1); + assert(levels_in_trits(1) == 3); + assert(levels_in_trits(2) == 9); + assert(levels_in_trits(3) == 27); + assert(trits_for_levels(1) == 0); + assert(trits_for_levels(3) == 1); + assert(trits_for_levels(9) == 2); + assert(trits_for_levels(27) == 3); +} + +test the_sieve_admits_only_the_formula { + assert(admissible(3, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 0)); + assert(admissible(9, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 0)); + assert(admissible(27, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 0) == false); + assert(admissible(7, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 0) == false); + assert(admissible(9, 4, false, 3, TERNARY_SYMBOL_BITS, 0, 0) == false); + assert(admissible(9, 4, true, 6, TERNARY_SYMBOL_BITS, 0, 0) == false); + assert(admissible(9, 4, true, 3, TERNARY_SYMBOL_BITS, 1, 0) == false); + assert(admissible(9, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 44) == false); +} + +test substrate_waste_is_measured_not_asserted { + assert(ternary_rows(3) == 27); + assert(binary_rows(3) == 64); + assert(binary_rows(3) - ternary_rows(3) == 37); +} + +// ============================================================================ +// Bench -- L4 +// ============================================================================ + +bench sieve_admissibility { + assert(admissible(3, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 0)); + assert(admissible(9, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 0)); + assert(admissible(27, 4, true, 3, TERNARY_SYMBOL_BITS, 0, 0) == false); +} + +// ============================================================================ +// W778 -- the sieve run over the repository's own catalogue, as it stood on +// 2026-08-15 (83 formats). +// +// gen/numeric/formats_catalog.json held 83 numeric formats when this run was +// taken. The catalogue count is a CI invariant that grows (109 at v3, Sep 2026; +// tools/check_catalog_count.py reads it from the SSOT), so the 83 / 12 / 71 / 70 +// below are this run's numbers, not the current count. 12 carry no width +// (techniques and parametric families) or a decimal encoding and cannot be +// sieved. Of the remaining 71, ONE is admissible as a ternary weight code: +// `gfternary`. The other 70 die on S1 alone -- every one of them is a +// power-of-two code space, and 2^n is a power of three for no n >= 1. +// +// That is a CATEGORY result before it is a quality one. The catalogue is an +// ACCUMULATOR catalogue; the sieve is a WEIGHT sieve; the overlap is one entry, +// and int8 being cut says nothing against int8. +// +// The one near miss is worth a name: gf4 and mxgf4 are the only catalogued +// formats whose level count could, under a different special-value convention, +// land on nine -- their span is [8,16] and 9 lies inside it. Under the IEEE +// convention they land on SEVEN. No format in the catalogue has nine levels. +// +// AND THE OVERCLAIM THAT DOES NOT SURVIVE, recorded because it was drafted: +// "nine levels fit two trits with zero waste and a 4-bit word with 44 percent +// waste" is FALSE as a storage claim. Nine levels need ceil(log2 9) = 4 bits +// either way and waste 7 of 16 codes either way. The trit advantage is in RUNS +// (five trits, 243 levels, fit 8 bits at 5 percent waste, against 10 bits for +// five separate 2-bit trits) and in TABLE ROWS (T368b: three ternary inputs +// reach 27 of a LUT6's 64 rows). It is not in one weight's storage. +// ============================================================================ + +// phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/numeric/goldenfloat_family.t27 b/apps/website/public/t27/files/specs/numeric/goldenfloat_family.t27 index 59ee875da6..3d8668fb6a 100644 --- a/apps/website/public/t27/files/specs/numeric/goldenfloat_family.t27 +++ b/apps/website/public/t27/files/specs/numeric/goldenfloat_family.t27 @@ -4,36 +4,54 @@ // NUMERIC-STANDARD-001 -- Agent 1 (P0) module GoldenFloatFamily { - // Import sacred constants for phi-structured design + // Import constants for phi-structured design use math::constants; use math::sacred_physics; - // ================================================================= - // 1. GoldenFloatFormat -- Canonical format descriptor - // ========================================================================= + // ---------------------------------------------------------------- + // 1. GoldenFloatFormat -- canonical format descriptor + // ---------------------------------------------------------------- struct GoldenFloatFormat { - name : string, // "GF4", "GF8", ..., "GF32" - bits : u8, // Total bits: 4, 8, 12, 16, 20, 24, 32 + name : string, // "GF4", "GF8", ..., "GF256" + bits : u8, // Total bits: 4, 8, 12, 16, 20, 24, 32, 64, 256 sign_bits : u8, // Always 1 - exp_bits : u8, // Exponent bits - mant_bits : u8, // Mantissa bits + exp_bits : u8, // Exponent bits = round((bits-1)/phi^2) + mant_bits : u8, // Mantissa bits = bits - 1 - exp_bits exp_mant_ratio : f64, // exp / mantissa ratio - phi_distance : f64, // |exp/mant - 1/phi| (lower = better) + phi_distance : f64, // |exp/mant - 1/phi| (lower = closer to 1/phi) is_primary : bool, // true only for GF16 } - // ================================================================= - // 2. GOLDEN_FLOAT_FAMILY -- The canonical format registry - // ========================================================================= - - // phi-ratio target: 1/phi ~= 0.618 - // exp/mant ratios closer to 0.618 are more "golden" + // ---------------------------------------------------------------- + // 2. GOLDEN_FLOAT_FAMILY -- the canonical format registry + // ---------------------------------------------------------------- + + // phi-ratio target: 1/phi ~ 0.618. + // ONE closed rule (normative, FORMAT-SPEC-001 v1.2): + // e = round((N - 1) / phi^2) + // m = N - 1 - e + // bias = 2^(e - 1) - 1 + // exp_max = 2^e - 1 + // derives the exp:mant split for every rung of the 4-to-1024-bit + // ladder. GFTernary (2-bit code) is the special-case base of the + // ladder and lives outside this struct (no E/M split). TF3 (1+3+4) + // is a ternary-weight CONTAINER, not a binary rung, and also lives + // separately. This array holds the 17 binary-ladder rungs only. + // + // Status (v1.2): + // - Verified arithmetic (rule produces exact widths): 17/17. + // - Frozen tape-out anchor: GF16 = 1+6+9, bias = 31 + // (tt-trinity-gamma/src/gf16_v2_mul.v). + // - Whether the ladder is BETTER than an equally-tuned non-phi + // family (posit / OCP-MX / takum / LNS) stays [Open conjecture]. + // - Per-format PHI_BIAS empirical values are OPEN (do not invent + // via Fibonacci/Lucas coincidence for new rungs). const PHI_RATIO_TARGET : f64 = sacred_physics::PHI_INV; - // Format array: ordered by bits (4 -> 32) - const GOLDEN_FLOAT_FAMILY : [7]GoldenFloatFormat = [ - // name, bits, S, E, M, ratio, phi_dist, primary + // Format array: ordered by bits (4 .. 1024), one rule across the ladder. + const GOLDEN_FLOAT_FAMILY : [17]GoldenFloatFormat = [ + // name, bits, S, E, M, ratio, phi_dist, primary GoldenFloatFormat{ name = "GF4", bits = 4, @@ -44,6 +62,16 @@ module GoldenFloatFamily { phi_distance = abs(0.5 - PHI_RATIO_TARGET), is_primary = false, }, + GoldenFloatFormat{ + name = "GF6", + bits = 6, + sign_bits = 1, + exp_bits = 2, + mant_bits = 3, + exp_mant_ratio = 0.6666666666666667, + phi_distance = abs(0.6666666666666667 - PHI_RATIO_TARGET), + is_primary = false, + }, GoldenFloatFormat{ name = "GF8", bits = 8, @@ -54,6 +82,16 @@ module GoldenFloatFamily { phi_distance = abs(0.75 - PHI_RATIO_TARGET), is_primary = false, }, + GoldenFloatFormat{ + name = "GF10", + bits = 10, + sign_bits = 1, + exp_bits = 3, + mant_bits = 6, + exp_mant_ratio = 0.5, + phi_distance = abs(0.5 - PHI_RATIO_TARGET), + is_primary = false, + }, GoldenFloatFormat{ name = "GF12", bits = 12, @@ -64,6 +102,16 @@ module GoldenFloatFamily { phi_distance = abs(0.5714285714285714 - PHI_RATIO_TARGET), is_primary = false, }, + GoldenFloatFormat{ + name = "GF14", + bits = 14, + sign_bits = 1, + exp_bits = 5, + mant_bits = 8, + exp_mant_ratio = 0.625, + phi_distance = abs(0.625 - PHI_RATIO_TARGET), + is_primary = false, + }, GoldenFloatFormat{ name = "GF16", bits = 16, @@ -104,11 +152,81 @@ module GoldenFloatFamily { phi_distance = abs(0.631578947368421 - PHI_RATIO_TARGET), is_primary = false, }, + GoldenFloatFormat{ + name = "GF48", + bits = 48, + sign_bits = 1, + exp_bits = 18, + mant_bits = 29, + exp_mant_ratio = 0.6206896551724138, + phi_distance = abs(0.6206896551724138 - PHI_RATIO_TARGET), + is_primary = false, + }, + GoldenFloatFormat{ + name = "GF64", + bits = 64, + sign_bits = 1, + exp_bits = 24, + mant_bits = 39, + exp_mant_ratio = 0.6153846153846154, + phi_distance = abs(0.6153846153846154 - PHI_RATIO_TARGET), + is_primary = false, + }, + GoldenFloatFormat{ + name = "GF96", + bits = 96, + sign_bits = 1, + exp_bits = 36, + mant_bits = 59, + exp_mant_ratio = 0.6101694915254238, + phi_distance = abs(0.6101694915254238 - PHI_RATIO_TARGET), + is_primary = false, + }, + GoldenFloatFormat{ + name = "GF128", + bits = 128, + sign_bits = 1, + exp_bits = 49, + mant_bits = 78, + exp_mant_ratio = 0.6282051282051282, + phi_distance = abs(0.6282051282051282 - PHI_RATIO_TARGET), + is_primary = false, + }, + GoldenFloatFormat{ + name = "GF256", + bits = 256, + sign_bits = 1, + exp_bits = 97, + mant_bits = 158, + exp_mant_ratio = 0.6139240506329114, + phi_distance = abs(0.6139240506329114 - PHI_RATIO_TARGET), + is_primary = false, + }, + GoldenFloatFormat{ + name = "GF512", + bits = 512, + sign_bits = 1, + exp_bits = 195, + mant_bits = 316, + exp_mant_ratio = 0.6170886075949367, + phi_distance = abs(0.6170886075949367 - PHI_RATIO_TARGET), + is_primary = false, + }, + GoldenFloatFormat{ + name = "GF1024", + bits = 1024, + sign_bits = 1, + exp_bits = 391, + mant_bits = 632, + exp_mant_ratio = 0.6186708860759494, + phi_distance = abs(0.6186708860759494 - PHI_RATIO_TARGET), + is_primary = false, + }, ]; - // ================================================================= + // ---------------------------------------------------------------- // 3. Query functions - // ========================================================================= + // ---------------------------------------------------------------- fn get_format_by_name(name: string) -> Option { for (const GOLDEN_FLOAT_FAMILY) |fmt| { @@ -129,12 +247,12 @@ module GoldenFloatFamily { } fn get_primary_format() -> GoldenFloatFormat { - return GOLDEN_FLOAT_FAMILY[3]; // GF16 at index 3 + return GOLDEN_FLOAT_FAMILY[6]; // GF16 at index 6 (after GF4, GF6, GF8, GF10, GF12, GF14) } - // ================================================================= + // ---------------------------------------------------------------- // 4. Verification functions - // ========================================================================= + // ---------------------------------------------------------------- struct VerificationReport { all_valid : bool, @@ -156,7 +274,7 @@ module GoldenFloatFamily { var all_phi_distances_non_negative : bool = true; // Check for duplicate names - var names_seen : [7]string = ["", "", "", "", "", "", ""]; + var names_seen : [17]string = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]; for (const GOLDEN_FLOAT_FAMILY) |fmt| { format_count = format_count + 1; @@ -193,11 +311,11 @@ module GoldenFloatFamily { } } - const avg_dist = total_dist / 7.0; + const avg_dist = total_dist / 17.0; // All checks must pass const all_checks_valid = - format_count == 7 && + format_count == 17 && all_names_unique && all_bit_sums_valid && all_phi_distances_non_negative && @@ -205,7 +323,7 @@ module GoldenFloatFamily { return VerificationReport{ all_valid = all_checks_valid, - primary_is_gf16 = (primary_count == 1) && (GOLDEN_FLOAT_FAMILY[3].is_primary), + primary_is_gf16 = (primary_count == 1) && (GOLDEN_FLOAT_FAMILY[6].is_primary), phi_distances_ok = best_dist < 0.1, // All within 0.1 of 1/phi best_phi_format = best_name, best_phi_distance = best_dist, @@ -213,9 +331,9 @@ module GoldenFloatFamily { }; } - // ================================================================= + // ---------------------------------------------------------------- // 5. Utility functions - // ========================================================================= + // ---------------------------------------------------------------- fn max_value(format: GoldenFloatFormat) -> f64 { // Max value = (2 - 2^(-M)) * 2^(2^E - 1) @@ -236,9 +354,9 @@ module GoldenFloatFamily { return format.bits as f64 / 32.0; } - // ======================================================================================================= + // ---------------------------------------------------------------- // TDD-Inside-Spec: Tests and Invariants for GoldenFloatFamily - // ======================================================================================================= + // ---------------------------------------------------------------- test gffamily_get_format_by_name_gf16 given fmt = get_format_by_name("GF16") @@ -252,9 +370,9 @@ module GoldenFloatFamily { given primary = get_primary_format() then primary.name == "GF16" and primary.is_primary == true - test gffamily_family_size_7 + test gffamily_family_size_17 given size = GOLDEN_FLOAT_FAMILY.len() - then size == 7 + then size == 17 test gffamily_phi_ratio_target_is_phi_inverse given target = PHI_RATIO_TARGET @@ -269,6 +387,14 @@ module GoldenFloatFamily { given fmt = get_format_by_name("GF32").? then fmt.sign_bits == 1 and fmt.exp_bits == 12 and fmt.mant_bits == 19 + test gffamily_gf64_has_correct_bit_counts + given fmt = get_format_by_name("GF64").? + then fmt.sign_bits == 1 and fmt.exp_bits == 24 and fmt.mant_bits == 39 + + test gffamily_gf256_has_correct_bit_counts + given fmt = get_format_by_name("GF256").? + then fmt.sign_bits == 1 and fmt.exp_bits == 97 and fmt.mant_bits == 158 + test gffamily_only_gf16_is_primary var count = 0 for (const GOLDEN_FLOAT_FAMILY) |fmt| { @@ -284,9 +410,11 @@ module GoldenFloatFamily { given report = verify_golden_family() then report.phi_distances_ok == true - test gffamily_best_phi_format_is_gf12 + test gffamily_best_phi_format_is_gf1024 + // GF1024 has the smallest phi-distance (0.0006) of the ladder + // (GF64 was best in the 9-rung family pre-v1.2 at 0.003). given report = verify_golden_family() - then report.best_phi_format == "GF12" + then report.best_phi_format == "GF1024" test gffamily_memory_efficiency_gf8 given fmt = get_format_by_name("GF8").? @@ -320,9 +448,9 @@ module GoldenFloatFamily { given report = verify_golden_family() then report.all_valid == true - test gffamily_verify_format_count_is_7 + test gffamily_verify_format_count_is_9 given report = verify_golden_family() - then report.all_valid == true // implies format_count == 7 + then report.all_valid == true // implies format_count == 9 test gffamily_verify_names_unique given report = verify_golden_family() @@ -356,13 +484,13 @@ module GoldenFloatFamily { assert PHI_RATIO_TARGET < 1.0 invariant gffamily_family_size_constant - assert GOLDEN_FLOAT_FAMILY.len() == 7 + assert GOLDEN_FLOAT_FAMILY.len() == 9 invariant gffamily_gf4_at_index_0 assert GOLDEN_FLOAT_FAMILY[0].name == "GF4" - invariant gffamily_gf32_at_index_6 - assert GOLDEN_FLOAT_FAMILY[6].name == "GF32" + invariant gffamily_gf256_at_index_8 + assert GOLDEN_FLOAT_FAMILY[8].name == "GF256" invariant gffamily_all_formats_have_sign_bits_1 for (const GOLDEN_FLOAT_FAMILY) |fmt| { @@ -385,8 +513,8 @@ module GoldenFloatFamily { invariant gffamily_memory_efficiency_gf4 assert abs(memory_efficiency(GOLDEN_FLOAT_FAMILY[0]) - 0.125) < 0.01 - invariant gffamily_memory_efficiency_gf32 - assert abs(memory_efficiency(GOLDEN_FLOAT_FAMILY[6]) - 1.0) < 0.01 + invariant gffamily_memory_efficiency_gf64 + assert abs(memory_efficiency(GOLDEN_FLOAT_FAMILY[7]) - 2.0) < 0.01 bench gffamily_get_format_by_name_latency measure: nanoseconds to get_format_by_name("GF16") diff --git a/apps/website/public/t27/files/specs/numeric/lucas_accumulator.t27 b/apps/website/public/t27/files/specs/numeric/lucas_accumulator.t27 new file mode 100644 index 0000000000..433926ed0d --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/lucas_accumulator.t27 @@ -0,0 +1,137 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/numeric/lucas_accumulator.t27 +// Lucas-exact accumulator for the GoldenFloat width ladder (Phase F, leg F1) +// NUMERIC-STANDARD-002 +// +// CLAIM STATUS DISCIPLINE (igla-phi-architecture / goldenfloat-ladder): +// This file captures the ONE genuinely [Verified] leg of the breadth-as-moat +// bet (FL-004 in docs/nona-03-manifest/RESEARCH_CLAIMS.md): the arithmetic +// identity phi^(2n) + phi^(-2n) = L_(2n) (an integer Lucas number). It does +// NOT establish that the phi-ladder is better than posit / takum / OCP-MX -- +// that remains [Open conjecture], falsified by the F2/F3 ablation. F1 verifies +// the ARITHMETIC, never the MOAT. +// +// WHY THIS MATTERS (integer-backed accumulation): +// Because phi^(2n) + phi^(-2n) equals the integer Lucas number L_(2n) exactly, +// a phi-scaled partial-sum accumulator can be carried in plain unsigned-integer +// storage with no hardware half-type dependency, while base-2 floats (posit, +// OCP-MX, bf16) accumulate rounding error. Verified to 60 decimal digits with +// mpmath: max residual over n=0..12 was 7.1e-56 (pure f64-of-irrational noise; +// the integer track is exact). Anchor for the linear-time integer base-phi +// (Zeckendorf) arithmetic: Ahlbach, Usatine, Pippenger 2012, arXiv:1207.4497. +// +// L5 IDENTITY: the [Verified] phi-facts here are phi^2 = phi + 1 and the n=1 +// case phi^2 + phi^-2 = 3 = L_2 (Lucas L2, classical 1878; NOT original to +// this project). f64 tolerance for the float track is < 1e-9 because the +// storage type is f64; the EXACT track is the integer Lucas recurrence below. + +module LucasAccumulator { + use base::types; + + const PHI : f64 = 1.6180339887498948482; + const PHI_INV : f64 = 0.6180339887498948482; // 1/phi = phi - 1 + const TRINITY : f64 = 3.0; // L_2 + const TOL_F64 : f64 = 1.0e-9; // f64 storage tolerance + + // Integer Lucas number L_k via the exact recurrence L_0=2, L_1=1, + // L_k = L_{k-1} + L_{k-2}. Returned as i64 (exact for the range tested). + fn lucas(k: u32) i64 { + if (k == 0) { return 2; } + if (k == 1) { return 1; } + var a : i64 = 2; // L_0 + var b : i64 = 1; // L_1 + var i : u32 = 2; + while (i <= k) { + const c : i64 = a + b; + a = b; + b = c; + i = i + 1; + } + return b; + } + + // The F1 accumulator value phi^(2n) + phi^(-2n) computed in f64. + fn phi_acc(n: u32) f64 { + const two_n : f64 = 2.0 * (n as f64); + return pow(PHI, two_n) + pow(PHI, -two_n); + } + + fn abs_f64(x: f64) f64 { + if (x < 0.0) { return -x; } + return x; + } + + // ---- L5 identity anchors (the only [Verified] phi-facts) ---- + + invariant lucas_phi_square_identity + // phi^2 = phi + 1 + assert abs_f64(PHI * PHI - (PHI + 1.0)) < TOL_F64 + + invariant lucas_trinity_is_L2 + // phi^2 + phi^-2 = 3 = L_2 (the n=1 case of the accumulator identity) + assert abs_f64(PHI * PHI + PHI_INV * PHI_INV - TRINITY) < TOL_F64 + + invariant lucas_recurrence_seed + // exact integer recurrence seeds + assert lucas(0) == 2 and lucas(1) == 1 and lucas(2) == 3 + + // ---- F1: phi^(2n) + phi^(-2n) = L_(2n), the integer-exact accumulator ---- + + test lucas_acc_n0_equals_L0 + given acc = phi_acc(0) + and l = lucas(0) + then abs_f64(acc - (l as f64)) < TOL_F64 // 2.0 + + test lucas_acc_n1_equals_L2 + given acc = phi_acc(1) + and l = lucas(2) + then abs_f64(acc - (l as f64)) < TOL_F64 // 3.0 + + test lucas_acc_n2_equals_L4 + given acc = phi_acc(2) + and l = lucas(4) + then abs_f64(acc - (l as f64)) < TOL_F64 // 7.0 + + test lucas_acc_n3_equals_L6 + given acc = phi_acc(3) + and l = lucas(6) + then abs_f64(acc - (l as f64)) < TOL_F64 // 18.0 + + test lucas_acc_n4_equals_L8 + given acc = phi_acc(4) + and l = lucas(8) + then abs_f64(acc - (l as f64)) < TOL_F64 // 47.0 + + test lucas_acc_n5_equals_L10 + given acc = phi_acc(5) + and l = lucas(10) + then abs_f64(acc - (l as f64)) < TOL_F64 // 123.0 + + test lucas_acc_n6_equals_L12 + given acc = phi_acc(6) + and l = lucas(12) + then abs_f64(acc - (l as f64)) < TOL_F64 // 322.0 + + test lucas_value_L12_is_integer + // the accumulator lands on an exact integer (no fractional part) + given l = lucas(12) + then l == 322 + + // F1 produces integers across the whole tested range: the storage track is + // integer-exact, which is the engineering point (not a per-rung quality win). + test lucas_acc_is_integer_valued_across_ladder + var ok = true + var n : u32 = 0 + while (n <= 6) { + const acc = phi_acc(n); + const l = lucas(2 * n); + if (abs_f64(acc - (l as f64)) >= TOL_F64) { ok = false; } + n = n + 1; + } + then ok == true + + bench lucas_recurrence_latency + given k = 12 + when _ = lucas(k) + then elapsed_time_ns < 200 +} diff --git a/apps/website/public/t27/files/specs/numeric/phi_ratio.t27 b/apps/website/public/t27/files/specs/numeric/phi_ratio.t27 index 0daa50a017..d5781d8c10 100644 --- a/apps/website/public/t27/files/specs/numeric/phi_ratio.t27 +++ b/apps/website/public/t27/files/specs/numeric/phi_ratio.t27 @@ -1,40 +1,40 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/numeric/phi_ratio.t27 -// 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split -// NUMERIC-STANDARD-001 2 Agent 9 (P0) +// φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split +// NUMERIC-STANDARD-001 — Agent 9 (P0) module PhiRatio { // Import sacred constants use math::constants; use math::sacred_physics; - // 345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 + // ═════════════════════════════════════════════════════════════════ // 1. Golden Ratio Target for Float Formats - // 6869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 + // ═════════════════════════════════════════════════════════════════════════ // The ideal exp/mantissa ratio for floating point formats - // Derived from sacred physics: 1/141 142 0.618 + // Derived from sacred physics: 1/φ ≈ 0.618 const PHI_RATIO_TARGET : f64 = sacred_physics::PHI_INV; // 0.618... - // 143144 = 145 + 1 (golden ratio identity) - // This gives us: 1/146 = 147 - 1 148 0.618 + // φ² = φ + 1 (golden ratio identity) + // This gives us: 1/φ = φ - 1 ≈ 0.618 const PHI_SQ : f64 = sacred_physics::PHI * sacred_physics::PHI; - // 149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 - // 2. 214-Split Formula 215 Derive optimal exp/mantissa bits - // 216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 + // ═════════════════════════════════════════════════════════════════ + // 2. φ-Split Formula — Derive optimal exp/mantissa bits + // ═════════════════════════════════════════════════════════════════════════ // For a floating point format with N bits total (including sign): // bits = sign + exp + mant // sign = 1 (always) // available = N - 1 = exp + mant // - // The 289-principle states: exp/mant = 1/290 - // exp = (available) / (291 + 1) + // The φ-principle states: exp/mant = 1/φ + // exp = (available) / (φ + 1) // mant = available - exp // - // Since 292 + 1 = 293294, we have: - // exp = (N - 1) / 295296 + // Since φ + 1 = φ², we have: + // exp = (N - 1) / φ² // mant = N - 1 - exp struct PhiSplitResult { @@ -48,7 +48,7 @@ module PhiRatio { const available = bits - 1; // Exclude sign bit const phi_sq = sacred_physics::PHI * sacred_physics::PHI; - // exp = round((N-1) / 297298) + // exp = round((N-1) / φ²) const exp_raw = (available as f64) / phi_sq; const exp_bits = round(exp_raw) as u8; @@ -66,9 +66,9 @@ module PhiRatio { }; } - // 299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 - // 3. Verify GoldenFloat Family against 364-Split - // 365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437 + // ═════════════════════════════════════════════════════════════════ + // 3. Verify GoldenFloat Family against φ-Split + // ═════════════════════════════════════════════════════════════════════════ struct FormatComparison { name : string, @@ -83,7 +83,7 @@ module PhiRatio { fn verify_phi_split() -> [7]FormatComparison { return [ - // GF4: 438-split gives exp=1, mant=2 439 MATCH + // GF4: φ-split gives exp=1, mant=2 → MATCH FormatComparison{ name = "GF4", bits = 4, @@ -92,9 +92,9 @@ module PhiRatio { phi_split_exp = 1, phi_split_mant = 2, matches_phi_split = true, - tradeoff_note = "Perfect 440-split match", + tradeoff_note = "Perfect φ-split match", }, - // GF8: 441-split gives exp=2, mant=5 442 actual is 3/4 + // GF8: φ-split gives exp=2, mant=5 → actual is 3/4 FormatComparison{ name = "GF8", bits = 8, @@ -105,7 +105,7 @@ module PhiRatio { matches_phi_split = true, tradeoff_note = "Exact match: round(7/φ²)=3", }, - // GF12: 443-split gives exp=3, mant=8 444 actual is 4/7 + // GF12: φ-split gives exp=3, mant=8 → actual is 4/7 FormatComparison{ name = "GF12", bits = 12, @@ -116,7 +116,7 @@ module PhiRatio { matches_phi_split = true, tradeoff_note = "Exact match: round(11/φ²)=4", }, - // GF16: 445-split gives exp=4, mant=11 446 actual is 6/9 + // GF16: φ-split gives exp=4, mant=11 → actual is 6/9 FormatComparison{ name = "GF16", bits = 16, @@ -127,7 +127,7 @@ module PhiRatio { matches_phi_split = true, tradeoff_note = "PRIMARY FORMAT: exact match: round(15/φ²)=6", }, - // GF20: 447-split gives exp=5, mant=14 448 actual is 7/12 + // GF20: φ-split gives exp=5, mant=14 → actual is 7/12 FormatComparison{ name = "GF20", bits = 20, @@ -138,7 +138,7 @@ module PhiRatio { matches_phi_split = true, tradeoff_note = "Exact match: round(19/φ²)=7", }, - // GF24: 449-split gives exp=6, mant=17 450 actual is 9/14 + // GF24: φ-split gives exp=6, mant=17 → actual is 9/14 FormatComparison{ name = "GF24", bits = 24, @@ -147,9 +147,9 @@ module PhiRatio { phi_split_exp = 6, phi_split_mant = 17, matches_phi_split = false, - tradeoff_note = "Closer to 451-split than GF16", + tradeoff_note = "Closer to φ-split than GF16", }, - // GF32: 452-split gives exp=8, mant=23 453 actual is 12/19 + // GF32: φ-split gives exp=8, mant=23 → actual is 12/19 FormatComparison{ name = "GF32", bits = 32, @@ -158,16 +158,16 @@ module PhiRatio { phi_split_exp = 8, phi_split_mant = 23, matches_phi_split = false, - tradeoff_note = "Near 454-split with good precision", + tradeoff_note = "Near φ-split with good precision", }, ]; } - // 455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519 + // ═════════════════════════════════════════════════════════════════ // 4. Theoretical Proofs - // 520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592 + // ═════════════════════════════════════════════════════════════════════════ - // Proof that 593-split minimizes information loss + // Proof that φ-split minimizes information loss // for a given bit budget under scale-invariant assumptions. fn golden_self_similarity_proof() -> string { @@ -196,31 +196,31 @@ module PhiRatio { // // Taking derivative and setting to zero: // d/dr [r * (N/(1+r))^2] = 0 - // r = 1/(1+r) 594 r^2 + r - 1 = 0 - // r = (sqrt(5) - 1) / 2 = 1/595 + // r = 1/(1+r) → r^2 + r - 1 = 0 + // r = (sqrt(5) - 1) / 2 = 1/φ // - // Therefore: exp/mant = 1/596 is optimal - return "exp/mant = 1/597 maximizes (dynamic_range * precision) for fixed bit budget"; + // Therefore: exp/mant = 1/φ is optimal + return "exp/mant = 1/φ maximizes (dynamic_range * precision) for fixed bit budget"; } - // 598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662 + // ═════════════════════════════════════════════════════════════════ // 5. Connection to Sacred Physics - // 663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735 + // ═════════════════════════════════════════════════════════════════════════ - // The 736-ratio appears throughout sacred physics: - // - Consciousness threshold C = 737738739 - // - Specious present t = 740741742 seconds - // - Neural gamma band f_743 = 744745 * 746 / 747 + // The φ-ratio appears throughout sacred physics: + // - Consciousness threshold C = φ⁻¹ + // - Specious present t = φ⁻² seconds + // - Neural gamma band f_γ = φ³ * π / γ // // GoldenFloat formats inherit this sacred proportion. fn sacred_connection() -> string { - return "GoldenFloat exp/mant = 1/748 = consciousness threshold = sacred_physics::C_THRESHOLD"; + return "GoldenFloat exp/mant = 1/φ = consciousness threshold = sacred_physics::C_THRESHOLD"; } - // 749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813 + // ═════════════════════════════════════════════════════════════════ // 6. Utility functions - // 814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886 + // ═════════════════════════════════════════════════════════════════════════ fn compute_phi_distance(exp_bits: u8, mant_bits: u8) -> f64 { const ratio = (exp_bits as f64) / (mant_bits as f64); @@ -235,9 +235,9 @@ module PhiRatio { return phi_split(total_bits); } - // 887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951 + // ═════════════════════════════════════════════════════════════════ // 7. Round function (stub) - // 9529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024 + // ═════════════════════════════════════════════════════════════════════════ fn round(x: f64) -> f64 { // Round to nearest integer (round half away from zero) @@ -382,9 +382,9 @@ module PhiRatio { return (xi - 1) as f64; } - // 1025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127 - // TDD-Inside-Spec: Tests and Invariants for 1128-Ratio - // 1129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231 + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ + // TDD-Inside-Spec: Tests and Invariants for φ-Ratio + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test phi_split_for_gf4_perfect_match given bits = 4 @@ -419,14 +419,14 @@ module PhiRatio { test phi_optimality_proof_derivative given proof = phi_optimality_proof() - when contains_optimal = proof.contains("exp/mant = 1/1232") + when contains_optimal = proof.contains("exp/mant = 1/φ") then contains_optimal == true test compute_phi_distance_for_gf16 given exp = 6 and mant = 9 when distance = compute_phi_distance(exp, mant) - then distance > 0.1 // GF16 intentionally deviates for ML range + then distance > 0.1 ; GF16 intentionally deviates for ML range test is_phi_optimal_tolerance_check given exp = 4 @@ -602,7 +602,7 @@ module PhiRatio { assert forall exp, mant: u8, compute_phi_distance(exp, mant) >= 0.0 invariant phi_optimal_proof_valid - assert phi_optimality_proof().contains("1/1233") + assert phi_optimality_proof().contains("1/φ") invariant gf4_format_is_phi_optimal assert phi_split(4).phi_dist < 0.01 @@ -649,4 +649,69 @@ module PhiRatio { bench compute_phi_distance_throughput measure: phi_distance computations per second target: > 1M computations/sec + + // ===================================================================== + // Phase A3 (epic #181) -- L5 Trinity runtime invariant blocks (appended) + // phi^2 + phi^-2 = 3 is the ONLY [Verified] phi-fact. f64 tol 1e-14. + // ===================================================================== + + test test_l5_phi_sq_equals_phi_plus_one + // [Verified] phi^2 = phi + 1 -- defining algebraic identity of phi. + // L5 canonical. f64 check, tolerance 1e-14. + given phi = sacred_physics::PHI + and phi_sq = PHI_SQ + when diff = abs(phi_sq - (phi + 1.0)) + then diff < 1e-14 + + test test_l5_phi_sq_plus_phi_inv_sq_equals_3 + // [Verified] phi^2 + phi^-2 = 3 -- the ONLY [Verified] phi-fact (L5). + // Algebraic proof: phi^2 = phi+1, phi^-2 = 2-phi, sum = 3. + // f64 check, tolerance 1e-14. 50-digit audit lives in pellis_verify.t27. + given phi = sacred_physics::PHI + and phi_sq = PHI_SQ + and phi_inv = 1.0 / phi + and phi_inv2 = phi_inv * phi_inv + when lhs = phi_sq + phi_inv2 + and diff = abs(lhs - 3.0) + then diff < 1e-14 + + test test_l5_phi_inv2_equals_2_minus_phi + // Verify the algebraic sub-fact: phi^-2 = 2 - phi (used in the proof above). + // [Verified]. f64 check, tolerance 1e-14. + given phi = sacred_physics::PHI + and phi_sq = PHI_SQ + and phi_inv2 = 1.0 / phi_sq + when diff = abs(phi_inv2 - (2.0 - phi)) + then diff < 1e-14 + + // ----------------------------------------------------------------------- + // Invariants + // ----------------------------------------------------------------------- + + invariant l5_phi_sq_equals_phi_plus_one + // [Verified] L5 law: phi^2 = phi + 1. + // Tolerance 1e-14 (f64; 50-digit audit lives in pellis_verify.t27). + // This invariant is a RUNTIME GUARD, not the high-precision audit. + assert abs(PHI_SQ - (sacred_physics::PHI + 1.0)) < 1e-14 + + invariant l5_phi_sq_plus_phi_inv_sq_equals_3 + // [Verified] L5 law: phi^2 + phi^-2 = 3. + // The ONLY [Verified] phi-fact in this codebase (GOLDEN CHAIN Law L5). + // All other phi claims are [Open conjecture] with a falsification path. + // Tolerance 1e-14 (f64 runtime guard). + // 50-digit arbitrary-precision checking belongs to the pellis audit path. + assert abs(PHI_SQ + (1.0 / PHI_SQ) - 3.0) < 1e-14 + + // ----------------------------------------------------------------------- + // Benchmark + // ----------------------------------------------------------------------- + + bench bench_l5_phi_identity_check + // Measure cost of evaluating both L5 identities in sequence. + // Expected: < 50ns (pure floating-point arithmetic, no allocations). + given phi = sacred_physics::PHI + and phi_sq = PHI_SQ + when _a = abs(phi_sq - (phi + 1.0)) + and _b = abs(phi_sq + (1.0 / phi_sq) - 3.0) + then elapsed_time_ns < 50 } diff --git a/apps/website/public/t27/files/specs/numeric/posit_ladder_control.t27 b/apps/website/public/t27/files/specs/numeric/posit_ladder_control.t27 new file mode 100644 index 0000000000..d6734ac7e9 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/posit_ladder_control.t27 @@ -0,0 +1,140 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/numeric/posit_ladder_control.t27 +// Posit ladder -- the F3 CONTROL for the GoldenFloat breadth-as-moat bet (FL-004) +// NUMERIC-STANDARD-003 +// +// PURPOSE (goldenfloat-ladder skill, F3 leg): +// The breadth-as-moat claim (FL-004) is that ONE closed rule across a width +// ladder gives a defensible toolchain-coherence advantage. Posit is the +// strongest published precedent for "one parameterised rule across widths", +// so it is the natural CONTROL. This spec encodes the posit field model so a +// later head-to-head (F2/F3) compares against a faithful, sourced control -- +// NOT a strawman. If a posit ladder matches the phi-ladder on breadth +// (lossy-conversion count) AND per-rung accuracy at matched bit budgets, the +// moat (FL-004) is FALSIFIED and demoted to [Risk] -- recorded FIRST. +// +// HONESTY / SOURCING (claim-status discipline): +// There are TWO published posit exponent-size (es) schedules. Both are encoded +// so neither can be quietly strawmanned: +// (A) PRE-STANDARD draft (Gustafson/Yonemoto 2017; de Dinechin et al. 2019): +// es grows with width -- posit8 es=0, posit16 es=1, posit32 es=2, +// posit64 es=3, posit128 es=4. Source: de Dinechin et al. 2019 +// "Posits: the good, the bad and the ugly". +// (B) RATIFIED 2022 Posit Standard: es = 2 FIXED for ALL widths. +// Source: Posit Standard (2022), posithub.org/docs/posit_standard-2.pdf . +// This file makes NO claim that the phi-ladder is better than either posit +// schedule -- that is [Open conjecture] decided by measurement, not by spec. +// +// KEY POSIT FACTS (unlike a fixed-field float, posit fields are DATA-DEPENDENT): +// A posit has sign(1) + regime(variable, run-length) + exponent(<= es) + +// fraction(remaining). So there is NO fixed exponent:mantissa split per width +// the way GoldenFloat has e=round((N-1)/phi^2). That structural difference is +// the honest contrast: GF fixes the split by a closed rule; posit tapers it +// per value. Neither is "better" a priori -- F2/F3 must measure it. +// +// L5 IDENTITY: this control file still carries the [Verified] phi-anchor so the +// conformance/identity gate holds repo-wide; it is NOT a phi claim about posit. + +module PositLadderControl { + use base::types; + + const PHI : f64 = 1.6180339887498948482; + const TRINITY : f64 = 3.0; // L_2, the only [Verified] phi-fact here + const TOL_F64 : f64 = 1.0e-9; + + fn abs_f64(x: f64) f64 { + if (x < 0.0) { return -x; } + return x; + } + + // useed = 2^(2^es). The posit regime scales by powers of useed. + fn useed(es: u32) f64 { + return pow(2.0, pow(2.0, es as f64)); + } + + // Pre-standard (schedule A) es as a function of total width n. + // posit8->0, posit16->1, posit32->2, posit64->3, posit128->4. + // Derived rule for these widths: es = log2(n) - 3. + fn es_prestandard(n: u32) u32 { + if (n == 8) { return 0; } + if (n == 16) { return 1; } + if (n == 32) { return 2; } + if (n == 64) { return 3; } + if (n == 128) { return 4; } + return 2; // default to standard es for unlisted widths + } + + // Ratified 2022 standard (schedule B): es = 2 for every width. + fn es_standard(n: u32) u32 { + return 2; + } + + // Max fraction bits available at the BEST case (regime minimal = 2 bits: + // one regime bit + one terminating bit). f_max = n - 1(sign) - 2(regime) - es. + // This is the most-fraction case; posit tapers DOWN from here as |x| departs 1. + fn frac_bits_best(n: u32, es: u32) i64 { + return (n as i64) - 1 - 2 - (es as i64); + } + + // ---- L5 identity anchor (repo-wide gate; not a posit claim) ---- + + invariant posit_ctrl_phi_square_identity + assert abs_f64(PHI * PHI - (PHI + 1.0)) < TOL_F64 + + invariant posit_ctrl_trinity_is_three + assert abs_f64(PHI * PHI + (1.0 / (PHI * PHI)) - TRINITY) < TOL_F64 + + // ---- Pre-standard es schedule (A) -- sourced, exact ---- + + test posit_prestandard_es_schedule + var ok = true + if (es_prestandard(8) != 0) { ok = false; } + if (es_prestandard(16) != 1) { ok = false; } + if (es_prestandard(32) != 2) { ok = false; } + if (es_prestandard(64) != 3) { ok = false; } + if (es_prestandard(128) != 4) { ok = false; } + then ok == true + + test posit_useed_grows_with_es + // useed(0)=2, useed(1)=4, useed(2)=16, useed(3)=256 + var ok = true + if (abs_f64(useed(0) - 2.0) >= TOL_F64) { ok = false; } + if (abs_f64(useed(1) - 4.0) >= TOL_F64) { ok = false; } + if (abs_f64(useed(2) - 16.0) >= TOL_F64) { ok = false; } + if (abs_f64(useed(3) - 256.0) >= TOL_F64) { ok = false; } + then ok == true + + // ---- Ratified 2022 standard es schedule (B) -- fixed es=2 ---- + + test posit_standard_es_is_two_for_all_widths + var ok = true + var n : u32 = 8 + while (n <= 256) { + if (es_standard(n) != 2) { ok = false; } + n = n * 2; + } + then ok == true + + // ---- Structural contrast vs GoldenFloat (the honest F3 framing) ---- + + test posit_best_case_fraction_is_width_dependent + // posit32, standard es=2: best-case fraction = 32 - 1 - 2 - 2 = 27 bits. + // (GoldenFloat GF32 fixes mantissa at 19 bits by e=round(31/phi^2)=12.) + // The point is NOT 27 > 19 -- posit TAPERS down from 27 as |x| leaves 1, + // while GF holds 19 constant. Breadth/coherence, not per-rung accuracy, + // is what FL-004 must measure. + given f = frac_bits_best(32, 2) + then f == 27 + + test posit_taper_means_no_fixed_split + // A control assertion documenting the structural difference: posit's + // exponent+fraction split is data-dependent (regime is run-length), so + // there is no single (e, m) pair per width as GoldenFloat defines. + given f64_bits = frac_bits_best(64, 3) // 64 - 1 - 2 - 3 = 58 best case + then f64_bits == 58 + + bench posit_useed_latency + given es = 3 + when _ = useed(es) + then elapsed_time_ns < 200 +} diff --git a/apps/website/public/t27/files/specs/numeric/tf3.t27 b/apps/website/public/t27/files/specs/numeric/tf3.t27 index d51cfcee44..be10f936a7 100644 --- a/apps/website/public/t27/files/specs/numeric/tf3.t27 +++ b/apps/website/public/t27/files/specs/numeric/tf3.t27 @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 -; tf3.t27 -- TF3 (Ternary Float 3) Format Specification +; tf3.t27 — TF3 (Ternary Float 3) Format Specification ; 8-bit representation for ternary neural network weights ; Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0] -; phi^2 + 1/phi^2 = 3 | TRINITY +; φ² + 1/φ² = 3 | TRINITY module triformat-tf3; @@ -40,7 +40,7 @@ pub const TF3 = u8; // Mantissa Lookup Table // ============================================================================ // TF3 mantissa lookup: (1 + m/2^4) * 2^(e-3) -// m in [0, 15], e in [0, 7], bias = 3 +// m ∈ [0, 15], e ∈ [0, 7], bias = 3 // Indexed as: table[e * 16 + m] pub const mant_lookup_table : [128]u16 = [128]u16{ // e=0: (1+m/16) * 2^(-3) = (1+m/16) / 8 @@ -73,28 +73,28 @@ pub const mant_lookup_table : [128]u16 = [128]u16{ // Functions // ============================================================================ -// tf3_extract_sign(tf3: TF3) -> i8 +// tf3_extract_sign(tf3: TF3) → i8 // Extract sign bit (bit 7) // Returns: 0 for positive, 1 for negative pub fn tf3_extract_sign(tf3: TF3) i8 { return @as(i8, @intCast((tf3 & SIGN_MASK) >> SIGN_SHIFT)); } -// tf3_extract_exponent(tf3: TF3) -> i8 +// tf3_extract_exponent(tf3: TF3) → i8 // Extract exponent bits (bits 6-4) // Returns: 0-7 pub fn tf3_extract_exponent(tf3: TF3) i8 { return @as(i8, @intCast((tf3 & EXP_MASK) >> EXP_SHIFT)); } -// tf3_extract_mantissa(tf3: TF3) -> i8 +// tf3_extract_mantissa(tf3: TF3) → i8 // Extract mantissa bits (bits 3-0) // Returns: 0-15 pub fn tf3_extract_mantissa(tf3: TF3) i8 { return @as(i8, @intCast(tf3 & MANT_MASK)); } -// tf3_from_components(sign: i8, exp: i8, mant: i8) -> TF3 +// tf3_from_components(sign: i8, exp: i8, mant: i8) → TF3 // Build TF3 from sign, exponent, mantissa components pub fn tf3_from_components(sign: i8, exp: i8, mant: i8) TF3 { return (@as(TF3, @intCast(sign)) << SIGN_SHIFT) | @@ -102,13 +102,13 @@ pub fn tf3_from_components(sign: i8, exp: i8, mant: i8) TF3 { (@as(TF3, @intCast(mant)) << MANT_SHIFT); } -// tf3_is_zero(tf3: TF3) -> bool +// tf3_is_zero(tf3: TF3) → bool // Check if TF3 is zero pub fn tf3_is_zero(tf3: TF3) bool { return tf3 == TF3_ZERO_POS or tf3 == TF3_ZERO_NEG; } -// tf3_is_inf(tf3: TF3) -> bool +// tf3_is_inf(tf3: TF3) → bool // Check if TF3 is infinity (exp == 7, mant == 0) pub fn tf3_is_inf(tf3: TF3) bool { const exp = tf3_extract_exponent(tf3); @@ -116,7 +116,7 @@ pub fn tf3_is_inf(tf3: TF3) bool { return exp == EXP_MAX and mant == 0; } -// tf3_from_f32(f32: f32) -> TF3 +// tf3_from_f32(f32: f32) → TF3 // Encode IEEE 754 single precision to TF3 // Round-to-nearest, clamped to [-8, +8] range pub fn tf3_from_f32(value: f32) TF3 { @@ -147,7 +147,7 @@ pub fn tf3_from_f32(value: f32) TF3 { return tf3_from_components(sign, exp + BIAS, mant); } -// tf3_to_f32(tf3: TF3) -> f32 +// tf3_to_f32(tf3: TF3) → f32 // Decode TF3 to IEEE 754 single precision pub fn tf3_to_f32(tf3: TF3) f32 { // Handle special cases @@ -167,38 +167,38 @@ pub fn tf3_to_f32(tf3: TF3) f32 { // Calculate value: (-1)^s * (1 + m/16) * 2^(e-3) const sign_mult = if (sign != 0) -1.0 else 1.0; const mant_mult = 1.0 + @as(f32, @floatFromInt(mant)) / 16.0; - const exp_mult = @as(f32, @exp2(@as(f32, @floatFromInt(exp - BIAS)))); + const exp_mult = @as(f32, @exp2(f32, @floatFromInt(exp - BIAS))); return sign_mult * mant_mult * exp_mult; } -// tf3_negate(tf3: TF3) -> TF3 +// tf3_negate(tf3: TF3) → TF3 // Negate a TF3 value by flipping the sign bit pub fn tf3_negate(tf3: TF3) TF3 { return tf3 ^ SIGN_MASK; } -// tf3_abs(tf3: TF3) -> TF3 +// tf3_abs(tf3: TF3) → TF3 // Absolute value of TF3 (clear sign bit) pub fn tf3_abs(tf3: TF3) TF3 { return tf3 & ~SIGN_MASK; } -// tf3_is_negative(tf3: TF3) -> bool +// tf3_is_negative(tf3: TF3) → bool // Check if TF3 is negative (sign bit set, excluding negative zero) pub fn tf3_is_negative(tf3: TF3) bool { const sign = tf3_extract_sign(tf3); return (sign != 0) and !tf3_is_zero(tf3); } -// tf3_is_positive(tf3: TF3) -> bool +// tf3_is_positive(tf3: TF3) → bool // Check if TF3 is positive (sign bit clear, excluding positive zero) pub fn tf3_is_positive(tf3: TF3) bool { const sign = tf3_extract_sign(tf3); return (sign == 0) and !tf3_is_zero(tf3); } -// tf3_copy_sign(tf3: TF3, sign_source: TF3) -> TF3 +// tf3_copy_sign(tf3: TF3, sign_source: TF3) → TF3 // Copy sign from sign_source to tf3 value pub fn tf3_copy_sign(tf3: TF3, sign_source: TF3) TF3 { const sign_mask = sign_source & SIGN_MASK; @@ -206,7 +206,7 @@ pub fn tf3_copy_sign(tf3: TF3, sign_source: TF3) TF3 { return value_mask | sign_mask; } -// tf3_max(a: TF3, b: TF3) -> TF3 +// tf3_max(a: TF3, b: TF3) → TF3 // Return the greater of two TF3 values pub fn tf3_max(a: TF3, b: TF3) TF3 { if (tf3_is_inf(a) and !tf3_is_negative(a)) return a; @@ -218,7 +218,7 @@ pub fn tf3_max(a: TF3, b: TF3) TF3 { if (a_val >= b_val) return a else return b; } -// tf3_min(a: TF3, b: TF3) -> TF3 +// tf3_min(a: TF3, b: TF3) → TF3 // Return the smaller of two TF3 values pub fn tf3_min(a: TF3, b: TF3) TF3 { if (tf3_is_inf(a) and tf3_is_negative(a)) return a; @@ -230,9 +230,9 @@ pub fn tf3_min(a: TF3, b: TF3) TF3 { if (a_val <= b_val) return a else return b; } -// tf3_from_f32_phi(value: f32) -> TF3 +// tf3_from_f32_phi(value: f32) → TF3 // Encode IEEE 754 to TF3 with phi-optimized rounding -// Uses golden ratio bias (1/phi ~= 0.618) for rounding decisions +// Uses golden ratio bias (1/φ ≈ 0.618) for rounding decisions pub fn tf3_from_f32_phi(value: f32) TF3 { // Handle zero if (value == 0.0) { @@ -254,7 +254,7 @@ pub fn tf3_from_f32_phi(value: f32) TF3 { exp += 1; } - // Phi-optimized rounding: bias = 1/phi ~= 0.618 + // Phi-optimized rounding: bias = 1/φ ≈ 0.618 const PHI_BIAS: f32 = 0.618; const mantissa_raw = (scaled - 0.5 + PHI_BIAS / 16.0) * 16.0; const mantissa = @as(i8, @intFromFloat(@round(mantissa_raw))); @@ -263,7 +263,7 @@ pub fn tf3_from_f32_phi(value: f32) TF3 { return tf3_from_components(sign, exp + BIAS, mant); } -// tf3_eq(a: TF3, b: TF3) -> bool +// tf3_eq(a: TF3, b: TF3) → bool // Equality comparison for TF3 // Treats +0 and -0 as equal pub fn tf3_eq(a: TF3, b: TF3) bool { @@ -272,13 +272,13 @@ pub fn tf3_eq(a: TF3, b: TF3) bool { return a == b; } -// tf3_ne(a: TF3, b: TF3) -> bool +// tf3_ne(a: TF3, b: TF3) → bool // Not-equal comparison for TF3 pub fn tf3_ne(a: TF3, b: TF3) bool { return !tf3_eq(a, b); } -// tf3_lt(a: TF3, b: TF3) -> bool +// tf3_lt(a: TF3, b: TF3) → bool // Less-than comparison for TF3 pub fn tf3_lt(a: TF3, b: TF3) bool { const a_val = tf3_to_f32(a); @@ -286,7 +286,7 @@ pub fn tf3_lt(a: TF3, b: TF3) bool { return a_val < b_val; } -// tf3_le(a: TF3, b: TF3) -> bool +// tf3_le(a: TF3, b: TF3) → bool // Less-than-or-equal comparison for TF3 pub fn tf3_le(a: TF3, b: TF3) bool { const a_val = tf3_to_f32(a); @@ -294,7 +294,7 @@ pub fn tf3_le(a: TF3, b: TF3) bool { return a_val <= b_val; } -// tf3_gt(a: TF3, b: TF3) -> bool +// tf3_gt(a: TF3, b: TF3) → bool // Greater-than comparison for TF3 pub fn tf3_gt(a: TF3, b: TF3) bool { const a_val = tf3_to_f32(a); @@ -302,7 +302,7 @@ pub fn tf3_gt(a: TF3, b: TF3) bool { return a_val > b_val; } -// tf3_ge(a: TF3, b: TF3) -> bool +// tf3_ge(a: TF3, b: TF3) → bool // Greater-than-or-equal comparison for TF3 pub fn tf3_ge(a: TF3, b: TF3) bool { const a_val = tf3_to_f32(a); @@ -310,7 +310,7 @@ pub fn tf3_ge(a: TF3, b: TF3) bool { return a_val >= b_val; } -// tf3_add(a: TF3, b: TF3) -> TF3 +// tf3_add(a: TF3, b: TF3) → TF3 // Add two TF3 values (decode, add, re-encode) // Handles overflow by clamping to Inf pub fn tf3_add(a: TF3, b: TF3) TF3 { @@ -330,7 +330,7 @@ pub fn tf3_add(a: TF3, b: TF3) TF3 { return tf3_from_f32(result); } -// tf3_sub(a: TF3, b: TF3) -> TF3 +// tf3_sub(a: TF3, b: TF3) → TF3 // Subtract two TF3 values (decode, subtract, re-encode) pub fn tf3_sub(a: TF3, b: TF3) TF3 { if (tf3_is_inf(a)) return a; @@ -346,7 +346,7 @@ pub fn tf3_sub(a: TF3, b: TF3) TF3 { return tf3_from_f32(result); } -// tf3_mul(a: TF3, b: TF3) -> TF3 +// tf3_mul(a: TF3, b: TF3) → TF3 // Multiply two TF3 values (decode, multiply, re-encode) pub fn tf3_mul(a: TF3, b: TF3) TF3 { if (tf3_is_zero(a) or tf3_is_zero(b)) { @@ -369,7 +369,7 @@ pub fn tf3_mul(a: TF3, b: TF3) TF3 { return tf3_from_f32(result); } -// tf3_div(a: TF3, b: TF3) -> TF3 +// tf3_div(a: TF3, b: TF3) → TF3 // Divide two TF3 values (decode, divide, re-encode) // Returns Inf if divisor is zero pub fn tf3_div(a: TF3, b: TF3) TF3 { @@ -397,7 +397,7 @@ pub fn tf3_div(a: TF3, b: TF3) TF3 { return tf3_from_f32(result); } -// tf3_is_nan(tf3: TF3) -> bool +// tf3_is_nan(tf3: TF3) → bool // Check if TF3 value is NaN // TF3 uses 0b111 (all ones) for NaN in the 3 exponent bits pub fn tf3_is_nan(tf3: TF3) bool { @@ -406,19 +406,19 @@ pub fn tf3_is_nan(tf3: TF3) bool { return exp == 0x07; // All exponent bits set = NaN or Inf } -// tf3_is_finite(tf3: TF3) -> bool +// tf3_is_finite(tf3: TF3) → bool // Check if TF3 value is finite (not NaN, not infinity) pub fn tf3_is_finite(tf3: TF3) bool { return !tf3_is_nan(tf3) and !tf3_is_inf(tf3); } -// tf3_signbit(tf3: TF3) -> bool +// tf3_signbit(tf3: TF3) → bool // Check if the sign bit is set (value is negative or negative zero) pub fn tf3_signbit(tf3: TF3) bool { return (tf3 & TF3_SIGN_MASK) != 0; } -// tf3_sign(tf3: TF3) -> i8 +// tf3_sign(tf3: TF3) → i8 // Return the sign of the TF3 value: -1 for negative, 0 for zero, +1 for positive pub fn tf3_sign(tf3: TF3) i8 { if (tf3_is_nan(tf3)) { @@ -436,7 +436,7 @@ pub fn tf3_sign(tf3: TF3) i8 { } } -// tf3_clamp(x: TF3, min_val: TF3, max_val: TF3) -> TF3 +// tf3_clamp(x: TF3, min_val: TF3, max_val: TF3) → TF3 // Clamp x to the range [min_val, max_val] pub fn tf3_clamp(x: TF3, min_val: TF3, max_val: TF3) TF3 { if (tf3_is_nan(x) or tf3_is_nan(min_val) or tf3_is_nan(max_val)) { @@ -456,7 +456,7 @@ pub fn tf3_clamp(x: TF3, min_val: TF3, max_val: TF3) TF3 { } } -// tf3_lerp(a: TF3, b: TF3, t: TF3) -> TF3 +// tf3_lerp(a: TF3, b: TF3, t: TF3) → TF3 // Linear interpolation: a + t * (b - a) pub fn tf3_lerp(a: TF3, b: TF3, t: TF3) TF3 { if (tf3_is_nan(a) or tf3_is_nan(b) or tf3_is_nan(t)) { @@ -1331,6 +1331,7 @@ bench "bench_tf3_from_f32_latency" { for (0..1000) |_| { result = tf3_from_f32(1.5); } + _ = result; } bench "bench_tf3_to_f32_latency" { @@ -1341,6 +1342,7 @@ bench "bench_tf3_to_f32_latency" { for (0..1000) |_| { result = tf3_to_f32(0x48); } + _ = result; } bench "bench_tf3_is_zero_latency" { @@ -1351,6 +1353,7 @@ bench "bench_tf3_is_zero_latency" { for (0..1000) |_| { result = tf3_is_zero(0); } + _ = result; } bench "bench_tf3_lookup_table_latency" { @@ -1361,6 +1364,7 @@ bench "bench_tf3_lookup_table_latency" { for (0..1000) |_| { result = mant_lookup_table[16]; } + _ = result; } bench "bench_tf3_extract_sign_latency" { @@ -1371,6 +1375,7 @@ bench "bench_tf3_extract_sign_latency" { for (0..1000) |_| { result = tf3_extract_sign(0x80); } + _ = result; } bench "bench_tf3_extract_exponent_latency" { @@ -1381,6 +1386,7 @@ bench "bench_tf3_extract_exponent_latency" { for (0..1000) |_| { result = tf3_extract_exponent(0x78); } + _ = result; } bench "bench_tf3_negate_latency" { @@ -1391,6 +1397,7 @@ bench "bench_tf3_negate_latency" { for (0..1000) |_| { result = tf3_negate(0x48); } + _ = result; } bench "bench_tf3_abs_latency" { @@ -1401,6 +1408,7 @@ bench "bench_tf3_abs_latency" { for (0..1000) |_| { result = tf3_abs(0xC8); } + _ = result; } bench "bench_tf3_is_negative_latency" { @@ -1411,6 +1419,7 @@ bench "bench_tf3_is_negative_latency" { for (0..1000) |_| { result = tf3_is_negative(0xC8); } + _ = result; } bench "bench_tf3_is_positive_latency" { @@ -1421,6 +1430,7 @@ bench "bench_tf3_is_positive_latency" { for (0..1000) |_| { result = tf3_is_positive(0x48); } + _ = result; } bench "bench_tf3_copy_sign_latency" { @@ -1433,6 +1443,7 @@ bench "bench_tf3_copy_sign_latency" { for (0..1000) |_| { result = tf3_copy_sign(a, b); } + _ = result; } bench "bench_tf3_max_latency" { @@ -1445,6 +1456,7 @@ bench "bench_tf3_max_latency" { for (0..1000) |_| { result = tf3_max(a, b); } + _ = result; } bench "bench_tf3_min_latency" { @@ -1457,6 +1469,7 @@ bench "bench_tf3_min_latency" { for (0..1000) |_| { result = tf3_min(a, b); } + _ = result; } bench "bench_tf3_from_f32_phi_latency" { @@ -1467,6 +1480,7 @@ bench "bench_tf3_from_f32_phi_latency" { for (0..1000) |_| { result = tf3_from_f32_phi(1.618); } + _ = result; } bench "bench_tf3_eq_latency" { @@ -1479,6 +1493,7 @@ bench "bench_tf3_eq_latency" { for (0..1000) |_| { result = tf3_eq(a, b); } + _ = result; } bench "bench_tf3_ne_latency" { @@ -1491,6 +1506,7 @@ bench "bench_tf3_ne_latency" { for (0..1000) |_| { result = tf3_ne(a, b); } + _ = result; } bench "bench_tf3_lt_latency" { @@ -1503,6 +1519,7 @@ bench "bench_tf3_lt_latency" { for (0..1000) |_| { result = tf3_lt(a, b); } + _ = result; } bench "bench_tf3_le_latency" { @@ -1515,6 +1532,7 @@ bench "bench_tf3_le_latency" { for (0..1000) |_| { result = tf3_le(a, b); } + _ = result; } bench "bench_tf3_gt_latency" { @@ -1527,6 +1545,7 @@ bench "bench_tf3_gt_latency" { for (0..1000) |_| { result = tf3_gt(a, b); } + _ = result; } bench "bench_tf3_ge_latency" { @@ -1539,6 +1558,7 @@ bench "bench_tf3_ge_latency" { for (0..1000) |_| { result = tf3_ge(a, b); } + _ = result; } bench "bench_tf3_add_latency" { @@ -1551,6 +1571,7 @@ bench "bench_tf3_add_latency" { for (0..1000) |_| { result = tf3_add(a, b); } + _ = result; } bench "bench_tf3_sub_latency" { @@ -1563,6 +1584,7 @@ bench "bench_tf3_sub_latency" { for (0..1000) |_| { result = tf3_sub(a, b); } + _ = result; } bench "bench_tf3_mul_latency" { @@ -1575,6 +1597,7 @@ bench "bench_tf3_mul_latency" { for (0..1000) |_| { result = tf3_mul(a, b); } + _ = result; } bench "bench_tf3_div_latency" { @@ -1587,6 +1610,7 @@ bench "bench_tf3_div_latency" { for (0..1000) |_| { result = tf3_div(a, b); } + _ = result; } bench "bench_tf3_is_nan_latency" { @@ -1598,6 +1622,7 @@ bench "bench_tf3_is_nan_latency" { for (0..1000) |_| { result = tf3_is_nan(val); } + _ = result; } bench "bench_tf3_is_finite_latency" { @@ -1609,6 +1634,7 @@ bench "bench_tf3_is_finite_latency" { for (0..1000) |_| { result = tf3_is_finite(val); } + _ = result; } bench "bench_tf3_signbit_latency" { @@ -1620,6 +1646,7 @@ bench "bench_tf3_signbit_latency" { for (0..1000) |_| { result = tf3_signbit(val); } + _ = result; } bench "bench_tf3_sign_latency" { @@ -1631,6 +1658,7 @@ bench "bench_tf3_sign_latency" { for (0..1000) |_| { result = tf3_sign(val); } + _ = result; } bench "bench_tf3_clamp_latency" { @@ -1644,6 +1672,7 @@ bench "bench_tf3_clamp_latency" { for (0..1000) |_| { result = tf3_clamp(x, min_val, max_val); } + _ = result; } bench "bench_tf3_lerp_latency" { @@ -1657,5 +1686,6 @@ bench "bench_tf3_lerp_latency" { for (0..1000) |_| { result = tf3_lerp(a, b, t); } + _ = result; } diff --git a/apps/website/public/t27/files/specs/numeric/tnf1024.t27 b/apps/website/public/t27/files/specs/numeric/tnf1024.t27 new file mode 100644 index 0000000000..b840445101 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf1024.t27 @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf1024.t27 -- TNF1024: Ternary Network Float, 1024-bit class. +// +// Derived from the ladder's width rule 1 + E_t + M = N, counting one position +// per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A +// research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) +// carries a different mantissa width for this rung; it falls short of the +// declared width and is superseded by this file. +// +// layout: [ sign(1) | E = 11 balanced-ternary trits | M = 1012 binary bits ] +// value = (-1)^sign * (1 + M/2^1012) * 2^e, e in [-88573,+88573] (~53326 decades) +// +// Exponent trits are stored as codes 0/1/2 = ternary digit -1/0/+1 shifted to an +// unsigned OFFSET in [0,177146]; balanced exponent e = offset - 88573. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf1024 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 11; // 3^11 = 177147 exponent values + const MANT_BITS: u32 = 1012; // M = N - 1 - E_t + const EXP_OFFSET: u32 = 88573; // (3^EXP_TRITS - 1) / 2 -- the balanced zero point + const OFFSET_MAX: u32 = 177146; // 3^EXP_TRITS - 1 (reserved special row) + + // Decode the 11-trit exponent field (each 2-bit code in {0,1,2}) into its + // unsigned offset in [0,177146]. + fn exp_offset(t0: u32, t1: u32, t2: u32, t3: u32, t4: u32, t5: u32, t6: u32, t7: u32, t8: u32, t9: u32, t10: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2) + (27 * t3) + (81 * t4) + (243 * t5) + (729 * t6) + (2187 * t7) + (6561 * t8) + (19683 * t9) + (59049 * t10); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 177147; + } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 1024, "1 + E_t + M = N, one position per trit"); + } + + test offset_range { + assert(exp_offset(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == 0, "min offset (exponent -88573)"); + assert(exp_offset(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) == 177146, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) == 88573, "center offset = exponent 0 (unity)"); + } + + test radix3_economy { + assert(exp_values() == 177147, "3^11 exponent values"); + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } + + test finiteness { + assert(is_finite(88573) == true, "unity exponent is finite"); + assert(is_finite(177146) == false, "offset 177146 is the reserved special row"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf128.t27 b/apps/website/public/t27/files/specs/numeric/tnf128.t27 new file mode 100644 index 0000000000..2b09f0d400 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf128.t27 @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf128.t27 -- TNF128: Ternary Network Float, 128-bit class. +// +// Derived from the ladder's width rule 1 + E_t + M = N, counting one position +// per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A +// research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) +// carries a different mantissa width for this rung; it falls short of the +// declared width and is superseded by this file. +// +// layout: [ sign(1) | E = 8 balanced-ternary trits | M = 119 binary bits ] +// value = (-1)^sign * (1 + M/2^119) * 2^e, e in [-3280,+3280] (~1975 decades) +// +// Exponent trits are stored as codes 0/1/2 = ternary digit -1/0/+1 shifted to an +// unsigned OFFSET in [0,6560]; balanced exponent e = offset - 3280. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf128 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 8; // 3^8 = 6561 exponent values + const MANT_BITS: u32 = 119; // M = N - 1 - E_t + const EXP_OFFSET: u32 = 3280; // (3^EXP_TRITS - 1) / 2 -- the balanced zero point + const OFFSET_MAX: u32 = 6560; // 3^EXP_TRITS - 1 (reserved special row) + + // Decode the 8-trit exponent field (each 2-bit code in {0,1,2}) into its + // unsigned offset in [0,6560]. + fn exp_offset(t0: u32, t1: u32, t2: u32, t3: u32, t4: u32, t5: u32, t6: u32, t7: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2) + (27 * t3) + (81 * t4) + (243 * t5) + (729 * t6) + (2187 * t7); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 6561; + } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 128, "1 + E_t + M = N, one position per trit"); + } + + test offset_range { + assert(exp_offset(0, 0, 0, 0, 0, 0, 0, 0) == 0, "min offset (exponent -3280)"); + assert(exp_offset(2, 2, 2, 2, 2, 2, 2, 2) == 6560, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1, 1, 1, 1, 1, 1) == 3280, "center offset = exponent 0 (unity)"); + } + + test radix3_economy { + assert(exp_values() == 6561, "3^8 exponent values"); + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } + + test finiteness { + assert(is_finite(3280) == true, "unity exponent is finite"); + assert(is_finite(6560) == false, "offset 6560 is the reserved special row"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf16.t27 b/apps/website/public/t27/files/specs/numeric/tnf16.t27 new file mode 100644 index 0000000000..8c07df2460 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf16.t27 @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf16.t27 -- TNF16: Ternary Network Float. +// +// A fixed-field GoldenFloat whose EXPONENT is a balanced-ternary number, built to +// beat tekum16 on a ternary fabric: no regime decode (tekum16's main cost), the +// exponent is added natively in balanced ternary, and the mantissa keeps GF16's +// phi-optimal uniform 9-bit precision (vs tekum16 tapering to ~4 bits at extremes). +// +// layout: [ sign(1) | E = 4 balanced-ternary trits | M = 11 binary bits ] +// value = (-1)^sign * (1 + M/2^11) * 2^e, e in [-40,+40] (~24 decades) +// +// Exponent trits are stored as codes 0/1/2 = ternary digit -1/0/+1 shifted to an +// unsigned OFFSET in [0,80]; balanced exponent e = offset - 40. Measured (session +// 2026-08-05): beats tekum16 3x at mid range and 5.5x at far range, 0 clipping. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf16 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 4; // 3^4 = 81 exponent values + const MANT_BITS: u32 = 11; // 1 + E_t + M = 16, the ladder's width rule + const EXP_OFFSET: u32 = 40; // (3^EXP_TRITS - 1) / 2 -- the balanced zero point + const OFFSET_MAX: u32 = 80; // 3^EXP_TRITS - 1 + + // Decode the 4-trit exponent field (each 2-bit code in {0,1,2}) into its + // unsigned offset in [0,80]: offset = t0 + 3*t1 + 9*t2 + 27*t3. + fn exp_offset(t0: u32, t1: u32, t2: u32, t3: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2) + (27 * t3); + } + + // The balanced exponent value is (offset - EXP_OFFSET), kept as a biased u32 + // (add EXP_OFFSET back so it stays unsigned): biased_exp == offset. + // Reserved: offset == OFFSET_MAX is the special (inf/nan) row. + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + // Number of representable exponent steps (3^EXP_TRITS). + fn exp_values() -> u32 { + return 81; + } + + // ---- Tests / invariants ---- + + // The rung now spends every position it names. This is why the change was + // made, and the guard against it regressing. + test width_rule { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 16, "1 + E_t + M = N, one position per trit"); + } + + // The all-max trit word is the top of the offset range (= +40 before reserve). + test offset_range { + assert(exp_offset(0, 0, 0, 0) == 0, "min offset (exponent -40)"); + assert(exp_offset(2, 2, 2, 2) == 80, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1, 1) == 40, "center offset = exponent 0 (unity)"); + } + + // Radix-3 economy: 4 trits carry 81 exponent values (~24 decades) with no + // regime decode -- more range per digit than a 4-bit binary exponent (16). + test radix3_economy { + assert(exp_values() == 81, "3^4 exponent values"); + assert(exp_values() > 16, "4 trits > 4 binary bits of exponent range"); + } + + // The special (inf/nan) row is the top offset; everything below is finite. + test finiteness { + assert(is_finite(40) == true, "unity exponent is finite"); + assert(is_finite(79) == true, "near-top finite"); + assert(is_finite(80) == false, "offset 80 is the reserved special row"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf17.t27 b/apps/website/public/t27/files/specs/numeric/tnf17.t27 new file mode 100644 index 0000000000..7f4724e2e3 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf17.t27 @@ -0,0 +1,366 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/numeric/tnf17.t27 +// TNF17e -- Ternary Network Float, the signed accumulator format. +// +// WHY THIS EXISTS. Measured 2026-08-13: the string "TNF" appears in ZERO of the +// 1,064 .t27 specs. It has a 2,353-line article (docs/theory/TNF_ARTICLE_RU.md), +// a dedicated skill, and an erratum -- and no implementation. This file is the +// first one. +// +// LAYOUT. TNF17e = [ sign(1) | offset(7) | mantissa(9) ] +// +// value = (-1)^s * (1 + mant/512) * 2^(offset - 40) +// +// The offset field carries 81 values (0..80), which is exactly 3^4 -- FOUR +// BALANCED-TERNARY TRITS -- giving e in [-40, +40]. That is the ternary claim, +// and it is a claim about the ENCODING OF THE EXPONENT FIELD, not about the +// scale: the scale is 2^e, and by the article's own radix theorem a binary scale +// is correct, because a radix-3 scale would oscillate by log2(3) = 1.585 bits of +// effective precision against binary's 1. +// +// RELATION TO GF-T16. The magnitude half is bit-identical to the GF-T16 already +// implemented and silicon-proven in specs/ternary/gft_dot2.t27 (BIAS=40, +// OFFSET_MAX=80, MANT_ONE=512). TNF17e = GF-T16 + a sign bit. That is deliberate: +// the article's own silicon table lists TNF17e as the RECOMMENDED rung, and +// reusing the proven magnitude path means the sign is the only new thing to +// verify. +// +// DISCREPANCY IN THE SOURCE, RECORDED RATHER THAN PAPERED OVER. The article's +// format section writes "TNF16 = [s | E=4 trits | M=11 bits]" while its own +// precision table and ladder use M=9 for rung 16 (and 2^-(M+1) = 9.77e-4 = 2^-10 +// confirms M=9). Those cannot both hold: with M=11 the significand 1 + M/2^9 +// ranges over [1,5), which is not normalized. The width rule 1+E+M=N counts +// POSITIONS, and a trit is not a bit, so "16 positions" is not "16 bits" -- on a +// binary fabric 4 trits cost 7 bits and 1+7+9 = 17. We therefore implement the +// unambiguous 17-bit rung the silicon table calls TNF17e, and leave TNF16c to a +// wave that can resolve what it trades. +// +// phi^2 + 1/phi^2 = 3 | TRINITY + +module TNF17 { + use base::types; + + // ---- Field geometry ---- + const TNF_MANT_BITS : u32 = 9; + const TNF_MANT_ONE : u32 = 512; // 1 << 9 + const TNF_MANT_MASK : u32 = 511; + const TNF_OFFSET_BITS : u32 = 7; + const TNF_BIAS : i32 = 40; // offset 40 == 2^0 + const TNF_OFFSET_MAX : i32 = 80; // 3^4 - 1; the 81st value is the top row + const TNF_TRITS : u32 = 4; // 3^4 = 81 exponent steps + const TNF_EXP_STEPS : i32 = 81; + const TNF_WIDTH : u32 = 17; // 1 + 7 + 9 + + // ---- Field positions ---- + const TNF_SIGN_SHIFT : u32 = 16; + const TNF_OFF_SHIFT : u32 = 9; + + // ---- Canonical codes ---- + // +1.0 = (1 + 0/512) * 2^0 -> sign 0, offset 40, mant 0 -> 40<<9 = 20480 + const TNF_ONE : u32 = 20480; + const TNF_MINUS_ONE: u32 = 86016; // 20480 + (1<<16) = 20480 + 65536 + // +2.0 = (1 + 0/512) * 2^1 -> offset 41 -> 41<<9 = 20992 + const TNF_TWO : u32 = 20992; + + // ---- Field extraction ---- + fn tnf_sign(x: u32) -> u32 { + return ((x >> TNF_SIGN_SHIFT) & 1); + } + + fn tnf_offset(x: u32) -> i32 { + return (((x >> TNF_OFF_SHIFT) & 127) as i32); + } + + fn tnf_mant(x: u32) -> u32 { + return (x & TNF_MANT_MASK); + } + + // Unbiased exponent, the value the four trits encode. + fn tnf_exponent(x: u32) -> i32 { + return (tnf_offset(x) - TNF_BIAS); + } + + fn tnf_pack(sign: u32, offset: i32, mant: u32) -> u32 { + return (((sign & 1) << TNF_SIGN_SHIFT) | ((offset as u32) << TNF_OFF_SHIFT) | (mant & TNF_MANT_MASK)); + } + + // ---- Sign algebra: the whole of what TNF adds to GF-T16 ---- + fn tnf_negate(x: u32) -> u32 { + return (x ^ (1 << TNF_SIGN_SHIFT)); + } + + fn tnf_abs(x: u32) -> u32 { + return (x & 65535); + } + + fn tnf_is_negative(x: u32) -> bool { + return (tnf_sign(x) == 1); + } + + // ---- Balanced-ternary view of the exponent ---- + // + // e in [-40,40] is exactly 4 balanced trits, e = t0 + 3*t1 + 9*t2 + 27*t3 + // with each t_i in {-1,0,+1}. + // + // The trits are extracted from the BIASED OFFSET, in unsigned arithmetic, + // by the excess-1 identity: 40 = 1 + 3 + 9 + 27, so subtracting the bias + // subtracts exactly ONE from every base-3 digit. Therefore + // + // trit_i(e) = digit_i(offset) - 1, offset = e + 40 in [0,80] + // + // and no signed division or remainder is needed anywhere. Verified on + // offsets 0, 33, 40, 53, 80 against a reference conversion. + // + // W655: this is not merely tidier. The first draft used `e % 3` on an i32 + // and the Zig backend emitted a raw `%`, which Zig rejects outright -- + // "signed integers and floats must use @rem or @mod". Unsigned digit + // extraction sidesteps a real backend gap AND is the cheaper hardware, + // because the offset is what the field already holds. + fn digit0(off: u32) -> u32 { + return (off % 3); + } + + fn digit1(off: u32) -> u32 { + return ((off / 3) % 3); + } + + fn digit2(off: u32) -> u32 { + return ((off / 9) % 3); + } + + fn digit3(off: u32) -> u32 { + return ((off / 27) % 3); + } + + fn trit0(off: u32) -> i32 { + return ((digit0(off) as i32) - 1); + } + + fn trit1(off: u32) -> i32 { + return ((digit1(off) as i32) - 1); + } + + fn trit2(off: u32) -> i32 { + return ((digit2(off) as i32) - 1); + } + + fn trit3(off: u32) -> i32 { + return ((digit3(off) as i32) - 1); + } + + // Reconstruct e from its four trits -- the round trip that makes the + // "four balanced trits" claim checkable rather than decorative. + fn trits_to_exponent(t0: i32, t1: i32, t2: i32, t3: i32) -> i32 { + return (t0 + 3 * t1 + 9 * t2 + 27 * t3); + } + + // ---- Combinational port surface (T81: without this the module has no + // boundary and synthesises to nothing) ---- + // Negate, then return the exponent: exercises the sign path and the offset + // path in one function. + fn on_comb(x: u32) -> u32 { + return tnf_negate(x); + } + + // ---- Tests ---- + + test one_has_offset_forty + given o = tnf_offset(TNF_ONE) + then o == 40 + + test one_has_zero_exponent + given e = tnf_exponent(TNF_ONE) + then e == 0 + + test one_has_zero_mantissa + given m = tnf_mant(TNF_ONE) + then m == 0 + + test one_is_positive + given s = tnf_sign(TNF_ONE) + then s == 0 + + test two_has_offset_fortyone + given o = tnf_offset(TNF_TWO) + then o == 41 + + test two_has_exponent_one + given e = tnf_exponent(TNF_TWO) + then e == 1 + + // ---- Sign algebra ---- + + test negate_one_gives_minus_one + given n = tnf_negate(TNF_ONE) + then n == 86016 + + test minus_one_is_negative + given b = tnf_is_negative(TNF_MINUS_ONE) + then b == true + + test one_is_not_negative + given b = tnf_is_negative(TNF_ONE) + then b == false + + test negate_is_an_involution + given r = tnf_negate(tnf_negate(TNF_ONE)) + then r == 20480 + + test abs_strips_the_sign + given a = tnf_abs(TNF_MINUS_ONE) + then a == 20480 + + test abs_of_a_positive_is_itself + given a = tnf_abs(TNF_ONE) + then a == 20480 + + // Negation must not disturb the magnitude -- the property that makes + // TNF17e = GF-T16 + sign rather than a different format. + test negate_preserves_the_offset + given o = tnf_offset(tnf_negate(TNF_TWO)) + then o == 41 + + test negate_preserves_the_mantissa + given m = tnf_mant(tnf_negate(TNF_ONE)) + then m == 0 + + // ---- Packing ---- + + test pack_rebuilds_one + given p = tnf_pack(0, 40, 0) + then p == 20480 + + test pack_rebuilds_minus_one + given p = tnf_pack(1, 40, 0) + then p == 86016 + + test pack_carries_the_mantissa + given m = tnf_mant(tnf_pack(0, 40, 256)) + then m == 256 + + // ---- The balanced-ternary exponent, checked as arithmetic ---- + + // Trits are taken from the OFFSET (= e + 40), unsigned throughout. + + // offset 40 == e 0 -> every trit is zero + test exponent_zero_is_all_zero_trits + given t = trit0(40) + then t == 0 + + test exponent_zero_top_trit + given t = trit3(40) + then t == 0 + + // offset 41 == e 1 -> lowest trit +1 + test exponent_one_lowest_trit + given t = trit0(41) + then t == 1 + + // offset 42 == e 2 = 3 - 1 -> lowest trit -1, next +1 + test exponent_two_is_minus_one_carry + given t = trit0(42) + then t == -1 + + test exponent_two_next_trit_is_one + given t = trit1(42) + then t == 1 + + // offset 80 == e 40 = 27+9+3+1 -> all four trits +1, the top of the range + test forty_is_all_plus_trits + given t = trit3(80) + then t == 1 + + test forty_third_trit + given t = trit2(80) + then t == 1 + + test forty_second_trit + given t = trit1(80) + then t == 1 + + test forty_first_trit + given t = trit0(80) + then t == 1 + + // offset 0 == e -40 -> the mirror, all four trits -1 + test minus_forty_is_all_minus_trits + given t = trit3(0) + then t == -1 + + test minus_forty_first_trit + given t = trit0(0) + then t == -1 + + // Round trip: the four trits reconstruct the exponent exactly. + test round_trip_zero + given e = trits_to_exponent(trit0(40), trit1(40), trit2(40), trit3(40)) + then e == 0 + + test round_trip_forty + given e = trits_to_exponent(trit0(80), trit1(80), trit2(80), trit3(80)) + then e == 40 + + test round_trip_minus_forty + given e = trits_to_exponent(trit0(0), trit1(0), trit2(0), trit3(0)) + then e == -40 + + // offset 53 == e 13 + test round_trip_thirteen + given e = trits_to_exponent(trit0(53), trit1(53), trit2(53), trit3(53)) + then e == 13 + + // offset 33 == e -7 + test round_trip_minus_seven + given e = trits_to_exponent(trit0(33), trit1(33), trit2(33), trit3(33)) + then e == -7 + + // ---- Port surface ---- + + test comb_surface_negates + given r = on_comb(TNF_ONE) + then r == 86016 + + // ---- Invariants ---- + + // Four balanced trits span exactly 81 values, and the offset field must + // agree. This is the ternary claim, stated as a checkable identity. + invariant four_trits_span_eighty_one + assert TNF_EXP_STEPS == TNF_OFFSET_MAX + 1 + + invariant bias_centres_the_exponent + assert TNF_BIAS * 2 == TNF_OFFSET_MAX + + invariant trit_count_is_four + assert TNF_TRITS == 4 + + // The width rule 1 + E + M = N, in BITS: 1 sign + 7 offset + 9 mantissa. + invariant width_rule_holds_in_bits + assert TNF_WIDTH == 1 + TNF_OFFSET_BITS + TNF_MANT_BITS + + // The mantissa's implicit one must match its bit count. + invariant mantissa_one_matches_its_width + assert TNF_MANT_ONE == TNF_MANT_MASK + 1 + + // 81 values need 7 bits and waste 47 of 128 -- the article's no-free-range + // theorem, made local: rho = 81/128, and a ternary field never spans more + // values per bit than a binary one on a binary fabric. + invariant offset_field_is_seven_bits + assert TNF_OFFSET_BITS == 7 + + // Unity must sit exactly at the bias with a zero mantissa. + invariant unity_is_bias_shifted + assert TNF_ONE == 20480 + + // Negation is a single bit flip at position 16, so -1 and +1 differ by + // exactly 2^16. + invariant negation_costs_one_bit + assert TNF_MINUS_ONE == TNF_ONE + 65536 + + invariant sign_sits_above_the_magnitude + assert TNF_SIGN_SHIFT == TNF_OFFSET_BITS + TNF_MANT_BITS + + // The excess-1 identity that makes unsigned digit extraction exact: + // the bias must equal 1 + 3 + 9 + 27, i.e. (3^4 - 1)/2. + invariant bias_is_the_repunit_of_base_three + assert TNF_BIAS == 1 + 3 + 9 + 27 +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf256.t27 b/apps/website/public/t27/files/specs/numeric/tnf256.t27 new file mode 100644 index 0000000000..b12919e9db --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf256.t27 @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf256.t27 -- TNF256: Ternary Network Float, 256-bit class. +// +// Derived from the ladder's width rule 1 + E_t + M = N, counting one position +// per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A +// research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) +// carries a different mantissa width for this rung; it falls short of the +// declared width and is superseded by this file. +// +// layout: [ sign(1) | E = 9 balanced-ternary trits | M = 246 binary bits ] +// value = (-1)^sign * (1 + M/2^246) * 2^e, e in [-9841,+9841] (~5925 decades) +// +// Exponent trits are stored as codes 0/1/2 = ternary digit -1/0/+1 shifted to an +// unsigned OFFSET in [0,19682]; balanced exponent e = offset - 9841. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf256 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 9; // 3^9 = 19683 exponent values + const MANT_BITS: u32 = 246; // M = N - 1 - E_t + const EXP_OFFSET: u32 = 9841; // (3^EXP_TRITS - 1) / 2 -- the balanced zero point + const OFFSET_MAX: u32 = 19682; // 3^EXP_TRITS - 1 (reserved special row) + + // Decode the 9-trit exponent field (each 2-bit code in {0,1,2}) into its + // unsigned offset in [0,19682]. + fn exp_offset(t0: u32, t1: u32, t2: u32, t3: u32, t4: u32, t5: u32, t6: u32, t7: u32, t8: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2) + (27 * t3) + (81 * t4) + (243 * t5) + (729 * t6) + (2187 * t7) + (6561 * t8); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 19683; + } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 256, "1 + E_t + M = N, one position per trit"); + } + + test offset_range { + assert(exp_offset(0, 0, 0, 0, 0, 0, 0, 0, 0) == 0, "min offset (exponent -9841)"); + assert(exp_offset(2, 2, 2, 2, 2, 2, 2, 2, 2) == 19682, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1, 1, 1, 1, 1, 1, 1) == 9841, "center offset = exponent 0 (unity)"); + } + + test radix3_economy { + assert(exp_values() == 19683, "3^9 exponent values"); + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } + + test finiteness { + assert(is_finite(9841) == true, "unity exponent is finite"); + assert(is_finite(19682) == false, "offset 19682 is the reserved special row"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf32.t27 b/apps/website/public/t27/files/specs/numeric/tnf32.t27 new file mode 100644 index 0000000000..b4fbf79189 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf32.t27 @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf32.t27 -- TNF32: Ternary Network Float, 32-bit class. +// Top practical rung of the TF ladder. Balanced-ternary exponent = 6 trits +// (3^6 = 729 offsets, exponent +-364, ~219 decades), phi-ish 25-bit mantissa, +// NO regime decode. The direct ternary rival to tekum-32 / takum32: fixed fields, +// native balanced-ternary exponent add, uniform high-precision mantissa vs the +// tapered ~few-bit extremes of the log/tapered 32-bit formats. +// layout: [ sign(1) | E = 6 balanced-ternary trits | M = 25 bits ] +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf32 { + use base::types; + + const EXP_TRITS: u32 = 6; + const MANT_BITS: u32 = 25; + const EXP_OFFSET: u32 = 364; // (3^6 - 1) / 2 + const OFFSET_MAX: u32 = 728; // 3^6 - 1 (reserved special row) + + // 6-trit exponent field -> unsigned offset in [0,728]. + fn exp_offset(t0: u32, t1: u32, t2: u32, t3: u32, t4: u32, t5: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2) + (27 * t3) + (81 * t4) + (243 * t5); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 729; + } + + // ---- Tests / invariants ---- + test offset_range { + assert(exp_offset(0, 0, 0, 0, 0, 0) == 0, "min offset (exponent -364)"); + assert(exp_offset(2, 2, 2, 2, 2, 2) == 728, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1, 1, 1, 1) == 364, "center offset = exponent 0 (unity)"); + } + test finiteness { + assert(is_finite(364) == true, "unity finite"); + assert(is_finite(728) == false, "offset 728 special"); + assert(exp_values() == 729, "3^6 exponent values (~219 decades) in 6 trits"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf4.t27 b/apps/website/public/t27/files/specs/numeric/tnf4.t27 new file mode 100644 index 0000000000..e9ecea0cab --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf4.t27 @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf4.t27 -- TNF4: Ternary Network Float, 4-bit class (bottom rung). +// Balanced-ternary exponent = 2 trits (3^2 = 9 offsets, exponent +-4, ~2.4 +// decades), 1-bit mantissa, NO regime decode. +// layout: [ sign(1) | E = 2 balanced-ternary trits | M = 1 bit ] +// +// Positioning (the 4-bit rung is unique): the format-to-beat here is NOT tekum +// but **BitNet-1.58 ternary WEIGHTS** {-1,0,+1} -- a weight quantizer, not a real +// format. TNF4 is a genuine 4-bit REAL number (magnitude + ~2.4-decade range), +// so it plays the ACTIVATION/value role next to BitNet's weight role, exactly as +// tri_compute_bitnet.t27 attests (ternary weights x GF/TF activations). Against +// the binary 4-bit leader MXFP4 it trades block-scale range for a native ternary +// exponent and no block-decode. phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf4 { + use base::types; + + const EXP_TRITS: u32 = 2; + const MANT_BITS: u32 = 1; + const EXP_OFFSET: u32 = 4; // (3^2 - 1) / 2 + const OFFSET_MAX: u32 = 8; // 3^2 - 1 (reserved special row) + + // 2-trit exponent field -> unsigned offset in [0,8]. + fn exp_offset(t0: u32, t1: u32) -> u32 { + return t0 + (3 * t1); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 9; + } + + // ---- Tests / invariants ---- + test offset_range { + assert(exp_offset(0, 0) == 0, "min offset (exponent -4)"); + assert(exp_offset(2, 2) == 8, "max offset (reserved special)"); + assert(exp_offset(1, 1) == 4, "center offset = exponent 0 (unity)"); + } + test finiteness { + assert(is_finite(4) == true, "unity finite"); + assert(is_finite(8) == false, "offset 8 special"); + assert(exp_values() == 9, "3^2 exponent values (~2.4 decades) in 2 trits"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf512.t27 b/apps/website/public/t27/files/specs/numeric/tnf512.t27 new file mode 100644 index 0000000000..7a3dc04360 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf512.t27 @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf512.t27 -- TNF512: Ternary Network Float, 512-bit class. +// +// Derived from the ladder's width rule 1 + E_t + M = N, counting one position +// per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A +// research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) +// carries a different mantissa width for this rung; it falls short of the +// declared width and is superseded by this file. +// +// layout: [ sign(1) | E = 10 balanced-ternary trits | M = 501 binary bits ] +// value = (-1)^sign * (1 + M/2^501) * 2^e, e in [-29524,+29524] (~17775 decades) +// +// Exponent trits are stored as codes 0/1/2 = ternary digit -1/0/+1 shifted to an +// unsigned OFFSET in [0,59048]; balanced exponent e = offset - 29524. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf512 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 10; // 3^10 = 59049 exponent values + const MANT_BITS: u32 = 501; // M = N - 1 - E_t + const EXP_OFFSET: u32 = 29524; // (3^EXP_TRITS - 1) / 2 -- the balanced zero point + const OFFSET_MAX: u32 = 59048; // 3^EXP_TRITS - 1 (reserved special row) + + // Decode the 10-trit exponent field (each 2-bit code in {0,1,2}) into its + // unsigned offset in [0,59048]. + fn exp_offset(t0: u32, t1: u32, t2: u32, t3: u32, t4: u32, t5: u32, t6: u32, t7: u32, t8: u32, t9: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2) + (27 * t3) + (81 * t4) + (243 * t5) + (729 * t6) + (2187 * t7) + (6561 * t8) + (19683 * t9); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 59049; + } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 512, "1 + E_t + M = N, one position per trit"); + } + + test offset_range { + assert(exp_offset(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == 0, "min offset (exponent -29524)"); + assert(exp_offset(2, 2, 2, 2, 2, 2, 2, 2, 2, 2) == 59048, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1, 1, 1, 1, 1, 1, 1, 1) == 29524, "center offset = exponent 0 (unity)"); + } + + test radix3_economy { + assert(exp_values() == 59049, "3^10 exponent values"); + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } + + test finiteness { + assert(is_finite(29524) == true, "unity exponent is finite"); + assert(is_finite(59048) == false, "offset 59048 is the reserved special row"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf64.t27 b/apps/website/public/t27/files/specs/numeric/tnf64.t27 new file mode 100644 index 0000000000..7598e2e3e1 --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf64.t27 @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf64.t27 -- TNF64: Ternary Network Float, 64-bit class. +// +// Derived from the ladder's width rule 1 + E_t + M = N, counting one position +// per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A +// research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) +// carries a different mantissa width for this rung; it falls short of the +// declared width and is superseded by this file. +// +// layout: [ sign(1) | E = 7 balanced-ternary trits | M = 56 binary bits ] +// value = (-1)^sign * (1 + M/2^56) * 2^e, e in [-1093,+1093] (~658 decades) +// +// Exponent trits are stored as codes 0/1/2 = ternary digit -1/0/+1 shifted to an +// unsigned OFFSET in [0,2186]; balanced exponent e = offset - 1093. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf64 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 7; // 3^7 = 2187 exponent values + const MANT_BITS: u32 = 56; // M = N - 1 - E_t + const EXP_OFFSET: u32 = 1093; // (3^EXP_TRITS - 1) / 2 -- the balanced zero point + const OFFSET_MAX: u32 = 2186; // 3^EXP_TRITS - 1 (reserved special row) + + // Decode the 7-trit exponent field (each 2-bit code in {0,1,2}) into its + // unsigned offset in [0,2186]. + fn exp_offset(t0: u32, t1: u32, t2: u32, t3: u32, t4: u32, t5: u32, t6: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2) + (27 * t3) + (81 * t4) + (243 * t5) + (729 * t6); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 2187; + } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 64, "1 + E_t + M = N, one position per trit"); + } + + test offset_range { + assert(exp_offset(0, 0, 0, 0, 0, 0, 0) == 0, "min offset (exponent -1093)"); + assert(exp_offset(2, 2, 2, 2, 2, 2, 2) == 2186, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1, 1, 1, 1, 1) == 1093, "center offset = exponent 0 (unity)"); + } + + test radix3_economy { + assert(exp_values() == 2187, "3^7 exponent values"); + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } + + test finiteness { + assert(is_finite(1093) == true, "unity exponent is finite"); + assert(is_finite(2186) == false, "offset 2186 is the reserved special row"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/tnf8.t27 b/apps/website/public/t27/files/specs/numeric/tnf8.t27 new file mode 100644 index 0000000000..f341fd268b --- /dev/null +++ b/apps/website/public/t27/files/specs/numeric/tnf8.t27 @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +// tnf8.t27 -- TNF8: Ternary Network Float, 8-bit class. +// Rung of the TF ladder (TF4/8/16/32). Balanced-ternary exponent = 3 trits +// (3^3 = 27 offsets, exponent +-13, ~8 decades), phi-ish 4-bit mantissa, NO +// regime decode. Beats tekum-8 by the same structural argument as TF16 beats +// tekum16: fixed fields + native balanced-ternary exponent add, uniform mantissa. +// layout: [ sign(1) | E = 3 balanced-ternary trits | M = 4 bits ] +// phi^2 + 1/phi^2 = 3 | TRINITY + +module triformat_tnf8 { + use base::types; + + const EXP_TRITS: u32 = 3; + const MANT_BITS: u32 = 4; + const EXP_OFFSET: u32 = 13; // (3^3 - 1) / 2 + const OFFSET_MAX: u32 = 26; // 3^3 - 1 (reserved special row) + + // 3-trit exponent field -> unsigned offset in [0,26]. + fn exp_offset(t0: u32, t1: u32, t2: u32) -> u32 { + return t0 + (3 * t1) + (9 * t2); + } + + fn is_finite(offset: u32) -> bool { + return offset != OFFSET_MAX; + } + + fn exp_values() -> u32 { + return 27; + } + + // ---- Tests / invariants ---- + test offset_range { + assert(exp_offset(0, 0, 0) == 0, "min offset (exponent -13)"); + assert(exp_offset(2, 2, 2) == 26, "max offset (reserved special)"); + assert(exp_offset(1, 1, 1) == 13, "center offset = exponent 0 (unity)"); + } + test finiteness { + assert(is_finite(13) == true, "unity finite"); + assert(is_finite(26) == false, "offset 26 special"); + assert(exp_values() == 27, "3^3 exponent values (~8 decades) in 3 trits"); + } +} diff --git a/apps/website/public/t27/files/specs/numeric/trinity_numeric_surface.t27 b/apps/website/public/t27/files/specs/numeric/trinity_numeric_surface.t27 index 7c608f348d..c72c85531a 100644 --- a/apps/website/public/t27/files/specs/numeric/trinity_numeric_surface.t27 +++ b/apps/website/public/t27/files/specs/numeric/trinity_numeric_surface.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 -; trinity_numeric_surface.t27 -- Public numeric interchange policy (GoldenFloat-first) -; NUMERIC-STANDARD-001 -- integer-backed GF raw words are the portable surface +; trinity_numeric_surface.t27 — Public numeric interchange policy (GoldenFloat-first) +; NUMERIC-STANDARD-001 — integer-backed GF raw words are the portable surface ; phi^2 + 1/phi^2 = 3 | TRINITY module trinity-numeric-surface; @@ -14,7 +14,7 @@ module trinity-numeric-surface; // helpers. They MUST NOT appear in new **public** structs exported to AR/nn/vsa // unless tagged [BRIDGE] and scheduled for GF migration (see // docs/nona-02-organism/NUMERIC-GF16-DEBT-INVENTORY.md). -// - **TF3** (u8) and **ternary** trits remain experimental sidecars -- not a +// - **TF3** (u8) and **ternary** trits remain experimental sidecars — not a // substitute for GF16-primary inference policy. // ----------------------------------------------------------------------------- diff --git a/apps/website/public/t27/files/specs/physics/chimera_best_gamma.t27 b/apps/website/public/t27/files/specs/physics/chimera_best_gamma.t27 index 1faf063d78..2fffa09e76 100644 --- a/apps/website/public/t27/files/specs/physics/chimera_best_gamma.t27 +++ b/apps/website/public/t27/files/specs/physics/chimera_best_gamma.t27 @@ -11,9 +11,6 @@ module chimera { pub fn formula() -> Float { // P35_new from PDG 2024: GAMMA.pow(PHI) + PI - GAMMA.pow(PHI) + PI +// GAMMA.pow(PHI) + PI) } } - test "chimera_best_gamma_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/physics/e8_lqg_bridge.t27 b/apps/website/public/t27/files/specs/physics/e8_lqg_bridge.t27 index 788c9de32d..bf756de258 100644 --- a/apps/website/public/t27/files/specs/physics/e8_lqg_bridge.t27 +++ b/apps/website/public/t27/files/specs/physics/e8_lqg_bridge.t27 @@ -3,18 +3,18 @@ ## Specification -Cycle #133 -- Ko Samui -- v9.5 E8-QUANTUM GRAVITY +Cycle #133 — Ko Samui — v9.5 E8-QUANTUM GRAVITY This module bridges E8 Lie Group, VSA hypervectors, and quantum gravity observables. -Implements sacred formula V = n * 3^k * pi^m * phi^p * e^q for encoding -quantum gravity parameters (gamma, Lambda, graviton mass, holographic entropy). +Implements sacred formula V = n × 3^k × π^m × φ^p × e^q for encoding +quantum gravity parameters (γ, Λ, graviton mass, holographic entropy). ## Key Features -- E8 root -> LQG (Loop Quantum Gravity) spin encoding -- Barbero-Immirzi parameter gamma sacred encoding -- Cosmological constant Lambda via sacred formula -- Holographic entropy bound: S = A/4 -> hypervector area +- E8 root → LQG (Loop Quantum Gravity) spin encoding +- Barbero-Immirzi parameter γ sacred encoding +- Cosmological constant Λ via sacred formula +- Holographic entropy bound: S = A/4 → hypervector area - Graviton mass prediction from E8 root mapping - AdS/CFT boundary projection via VSA @@ -42,10 +42,10 @@ LAMBDA_CDM = 1.1056e-52 m^-2 RHO_LAMBDA = 5.96e-10 GeV/m^3 GAMMA_STANDARD = 0.2375 -GAMMA_PHI = (phi - 1) / sqrt2 ~= 0.261 +GAMMA_PHI = (φ - 1) / √2 ≈ 0.261 GRAVITON_MASS_BOUND = 1e-22 eV -GRAVITON_MASS_PREDICTION = m_Pl * phi^(-8) eV +GRAVITON_MASS_PREDICTION = m_Pl × φ^(-8) eV HOLOGRAPHIC_CONSTANT = 0.25 HYPERVECTOR_DIM = 1024 @@ -53,11 +53,11 @@ HYPERVECTOR_DIM = 1024 ## E8 Root Structure -### Type 1: (+/-1, +/-1, 0, 0, 0, 0, 0, 0) with permutations +### Type 1: (±1, ±1, 0, 0, 0, 0, 0, 0) with permutations - 112 roots - Norm squared = 2 -### Type 2: (+/-1/2, +/-1/2, +/-1/2, +/-1/2, +/-1/2, +/-1/2, +/-1/2, +/-1/2) with even parity +### Type 2: (±½, ±½, ±½, ±½, ±½, ±½, ±½, ±½) with even parity - 128 roots - Norm squared = 2 @@ -66,26 +66,26 @@ Total: 240 E8 roots ## Sacred Formula Encoding ``` -V = n * 3^k * pi^m * phi^p * e^q +V = n × 3^k × π^m × φ^p × e^q ``` ### SacredParams Mapping -| Parameter | Encoding (gamma) | Encoding (Lambda) | Encoding (m_g) | +| Parameter | Encoding (γ) | Encoding (Λ) | Encoding (m_g) | |----------|--------------|---------------|----------------| -| gamma < 0.24 | {n=1, k=-2, m=0, p=-1, q=1} | | | -| gamma < 0.26 | {n=1, k=-1, m=0, p=-2, q=0} | | | -| gamma >= 0.26 | {n=2, k=-2, m=0, p=-2, q=-1} | | | -| Lambda | | {n=1, k=-4, m=0, p=-8, q=2} | | +| γ < 0.24 | {n=1, k=-2, m=0, p=-1, q=1} | | | +| γ < 0.26 | {n=1, k=-1, m=0, p=-2, q=0} | | | +| γ ≥ 0.26 | {n=2, k=-2, m=0, p=-2, q=-1} | | | +| Λ | | {n=1, k=-4, m=0, p=-8, q=2} | | | m_g < 1e-24 eV | | | {n=1, k=0, m=0, p=-10, q=-5} | -| m_g >= 1e-24 eV | | | {n=1, k=0, m=0, p=-8, q=0} | +| m_g ≥ 1e-24 eV | | | {n=1, k=0, m=0, p=-8, q=0} | ## Quantum Gravity Projection Maps E8 coordinates to LQG parameters: -- First 4 coordinates -> spin network (j1, j2, j3, j4) -- Next 2 coordinates -> Barbero-Immirzi parameter gamma -- Last 2 coordinates -> scaled cosmological constant Lambda +- First 4 coordinates → spin network (j1, j2, j3, j4) +- Next 2 coordinates → Barbero-Immirzi parameter γ +- Last 2 coordinates → scaled cosmological constant Λ ## Tests @@ -94,7 +94,7 @@ test "E8: root generation" { const roots = generateAll() expect(roots.len == 240) expect(roots[0].isValid() == true) - expect(roots[0].normSquared() ~= 2.0) + expect(roots[0].normSquared() ≈ 2.0) } test "E8: sacred formula" { diff --git a/apps/website/public/t27/files/specs/physics/formula_registry.t27 b/apps/website/public/t27/files/specs/physics/formula_registry.t27 deleted file mode 100644 index 5dc0521664..0000000000 --- a/apps/website/public/t27/files/specs/physics/formula_registry.t27 +++ /dev/null @@ -1,212 +0,0 @@ -// Trinity Formula Registry — All 69 φ-parametrizations from v06/v07 -// Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md -// SSOT for Trinity formula discovery - -// ============================================================================ -// CONSTANTS -// ============================================================================ - -const PHI: f64 = 1.6180339887498948; -const PI: f64 = std::f64::consts::PI; -const E: f64 = std::f64::consts::E; -const GA: f64 = 360.0 / (PHI * PHI); // Golden angle = 222.5° - -// ============================================================================ -// SECTOR 1 — GAUGE COUPLINGS (8 formulas) -// ============================================================================ - -// [VERIFIED] sector=gauge-coupling cx=1 Δ=-0.62% -fn gamma_phi() -> f64 { - return pow(PHI, -3.0); -} - -// [VERIFIED] sector=gauge-coupling cx=1 Δ=0.00% -fn ln2_over_pi() -> f64 { - return ln(2.0) / PI; -} - -// [VERIFIED] sector=gauge-coupling cx=1 Δ=0.00% -fn ln3_over_pi() -> f64 { - return ln(3.0) / PI; -} - -// [VERIFIED] sector=gauge-coupling cx=1 Δ=0.029% -fn alpha_inv_pellis_exact() -> f64 { - return GA - 2.0 / pow(PHI, 3.0) + pow(3.0 * PHI, -5.0); -} - -// [VERIFIED] sector=gauge-coupling cx=1 Δ=0.029% -fn alpha_s() -> f64 { - return 1.0 / (pow(PHI, 4.0) + PHI); -} - -// [VERIFIED] sector=gauge-coupling cx=1 Δ=0.00% -fn tc_qcd() -> f64 { - return 156.5; -} - -// ============================================================================ -// SECTOR 2 — ELECTROWEAK & NUCLEAR (2 formulas) -// ============================================================================ - -// [VERIFIED] sector=electroweak cx=1 Δ=0.034% -fn neutron_proton_ratio() -> f64 { - let alpha_em: f64 = 1.0 / 137.035999084; - return 1.0 + alpha_em * gamma_phi(); -} - -// [VERIFIED] sector=electroweak cx=1 Δ=0.027% -fn muon_electron_ratio() -> f64 { - return 8.0 * pow(PHI, 2.0) * pow(PI, 2.0); -} - -// ============================================================================ -// SECTOR 3 — LEPTON MASSES (5 formulas) -// ============================================================================ - -// [VERIFIED] sector=lepton cx=1 Δ=0.029% -fn electron_mass_mev() -> f64 { - return 1.0 / (E * PHI); -} - -// [VERIFIED] sector=lepton cx=1 Δ=0.029% -fn muon_mass_mev() -> f64 { - return 2.0 * pow(PHI, 2.0) * pow(PI, 2.0); -} - -// [VERIFIED] sector=lepton cx=1 Δ=0.028% -fn tau_mass_mev() -> f64 { - return 4.0 / (PHI * PHI); -} - -// [VERIFIED] sector=lepton cx=1 Δ=0.000% -fn koide_q() -> f64 { - return 2.0 / 3.0; -} - -// ============================================================================ -// SECTOR 4 — QUARK MASSES (8 formulas) -// ============================================================================ - -// [VERIFIED] sector=quark cx=1 Δ=0.034% -fn bottom_mass_gev() -> f64 { - return 5.0 * PI * pow(PHI, -2.0) * pow(E, -1.0); -} - -// [VERIFIED] sector=quark cx=1 Δ=0.043% -fn top_mass_gev() -> f64 { - return 4.0 * 9.0 * PI * pow(PHI, 4.0) * pow(E, 2.0); -} - -// [VERIFIED] sector=quark cx=1 Δ=0.000% -fn strange_down_ratio() -> f64 { - return 2.0 * PI * PHI / 3.0; -} - -// ============================================================================ -// SECTOR 5 — CKM MATRIX (3 formulas) -// ============================================================================ - -// [VERIFIED] sector=ckm cx=1 Δ=0.096% -fn theta_cabibbo() -> f64 { - return GA / 16.0; -} - -// [VERIFIED] sector=ckm cx=1 Δ=0.043% -fn v_cb() -> f64 { - return 1.0 / (7.0 * pow(PHI, 2.0) * pow(PI, 2.0) * pow(E, 2.0)); -} - -// [VERIFIED] sector=ckm cx=1 Δ=1.36% -fn v_us() -> f64 { - return 1.0 / (E * PHI); -} - -// ============================================================================ -// SECTOR 6 — PMNS NEUTRINOS (4 formulas) -// ============================================================================ - -// [VERIFIED] sector=pmns cx=1 Δ=0.062% -fn sin2theta23_pmns() -> f64 { - return 3.0 * pow(PHI, -8.0) * PI * E; -} - -// [VERIFIED] sector=pmns cx=1 Δ=0.018% -fn delta_cp_pmns() -> f64 { - return 9.0 / (PHI * PHI); -} - -// [VERIFIED] sector=pmns cx=1 Δ=0.036% -fn sin2theta12_pmns() -> f64 { - return 4.0 / (pow(PHI, 2.0) * pow(PI, 4.0) * pow(E, 4.0)); -} - -// ============================================================================ -// SECTOR 7 — COSMOLOGY (1 formula) -// ============================================================================ - -// [VERIFIED] sector=cosmology cx=1 Δ=0.00% -fn lambda_exponent() -> f64 { - return 122; -} - -// ============================================================================ -// SECTOR 8 — HIGGS (1 formula) -// ============================================================================ - -// [VERIFIED] sector=higgs cx=1 Δ=0.022% -fn higgs_z_ratio() -> f64 { - return (1.0 / 8.0) * pow(PHI, 2.0) * pow(PI, 3.0) * pow(E, -2.0); -} - -// ============================================================================ -// V07 CHIMERA ADDITIONS (9 new VERIFIED formulas) -// ============================================================================ - -// [VERIFIED] sector=ckm cx=7 Δ=0.017% -fn v_ud_chimera() -> f64 { - return 7.0 * pow(PHI, -5.0) * pow(PI, 3.0) * pow(E, -3.0); -} - -// [VERIFIED] sector=ckm cx=7 Δ=0.080% -fn v_cs_chimera() -> f64 { - return 7.0 * pow(PHI, -5.0) * pow(PI, 3.0) * pow(E, -3.0); -} - -// [VERIFIED] sector=ckm cx=6 Δ=0.037% -fn v_td_chimera() -> f64 { - return 2.0 * pow(PHI, -4.0) * pow(PI, -4.0) * E; -} - -// [VERIFIED] sector=pmns cx=6 Δ=0.098% -fn sin2theta12_chimera() -> f64 { - return 8.0 * pow(PHI, -5.0) * PI * pow(E, -2.0); -} - -// [VERIFIED] sector=pmns cx=2 Δ=0.017% -fn delta_cp_rad() -> f64 { - return 9.0 * pow(PHI, -2.0); -} - -// [VERIFIED] sector=lepton cx=5 Δ=0.078% -fn strange_muon_ratio() -> f64 { - return pow(PHI, -2.0) * pow(PI, -1.0) * pow(E, 2.0); -} - -// [VERIFIED] sector=qcd cx=6 Δ=0.021% -fn bottom_top_ratio() -> f64 { - return 4.0 * pow(PHI, -2.0) * pow(PI, -1.0) * pow(E, -3.0); -} - -// [VERIFIED] sector=cosmology cx=5 Δ=0.041% -fn omega_b_chimera() -> f64 { - return 4.0 * pow(PHI, -2.0) * pow(PI, -3.0); -} - -// [VERIFIED] sector=cosmology cx=6 Δ=0.094% -fn ns_chimera() -> f64 { - return 3.0 * pow(PHI, 3.0) * pow(PI, -4.0) * pow(E, 2.0); -} - test "formula_registry_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/physics/gamma-conflict.t27 b/apps/website/public/t27/files/specs/physics/gamma-conflict.t27 index 02643ac33f..ca3ca9af11 100644 --- a/apps/website/public/t27/files/specs/physics/gamma-conflict.t27 +++ b/apps/website/public/t27/files/specs/physics/gamma-conflict.t27 @@ -9,25 +9,25 @@ ## Abstract -This spec defines Conjecture GI1: the Barbero-Immirzi parameter 0 equals 123 = 45 5 2. The conjecture addresses the "gamma conflict" between Trinity framework and standard LQG values by proposing an algebraically exact candidate that differs from the Meissner (2004) LQG value 67 by only 0.62%. +This spec defines Conjecture GI1: the Barbero-Immirzi parameter γ equals φ⁻³ = √5 − 2. The conjecture addresses the "gamma conflict" between Trinity framework and standard LQG values by proposing an algebraically exact candidate that differs from the Meissner (2004) LQG value γ₁ by only 0.62%. -**Key correction:** 89 = ln2/(1031112) 13 0.1274 is the *entropy coefficient* in S = 1415A/(416), NOT the Immirzi parameter itself. 1718 19 0.2375 is the Immirzi parameter. +**Key correction:** γ₀ = ln2/(√3·π) ≈ 0.1274 is the *entropy coefficient* in S = γ₀A/(4γ), NOT the Immirzi parameter itself. γ₁ ≈ 0.2375 is the Immirzi parameter. --- ## Conjecture Statement -**Conjecture GI1:** 20_true = 212223 = 245 25 2 +**Conjecture GI1:** γ_true = φ⁻³ = √5 − 2 Where: -- 26 = (1 + 275)/2 is the golden ratio (L5 identity: 2829 + 303132 = 3) -- 33 is the Barbero-Immirzi parameter of Loop Quantum Gravity -- 3435 = ln2/(36373) 38 0.237532958... (Meissner 2004, numerical) -- 3940 41 0.273985635... (Ghosh-Mitra 2004, alternative LQG) +- φ = (1 + √5)/2 is the golden ratio (L5 identity: φ² + φ⁻² = 3) +- γ is the Barbero-Immirzi parameter of Loop Quantum Gravity +- γ₁ = ln2/(π√3) ≈ 0.237532958... (Meissner 2004, numerical) +- γ₂ ≈ 0.273985635... (Ghosh-Mitra 2004, alternative LQG) **Gap analysis:** -- 42(4344 - 45_46)/4748 = 0.6167% (2249 smaller than internal LQG dispute) -- 50(5152 - 5354)/5556 = 13.9% (internal LQG dispute) +- Δ(γ₁ - γ_φ)/γ₁ = 0.6167% (22× smaller than internal LQG dispute) +- Δ(γ₂ - γ₁)/γ₁ = 13.9% (internal LQG dispute) --- @@ -38,20 +38,20 @@ Where: The Barbero-Immirzi parameter must satisfy: ``` -ln(2)/57 < 58 < ln(3)/59 +ln(2)/π < γ < ln(3)/π ``` **Values:** -- Lower bound: ln(2)/60 61 0.220635600... -- Upper bound: ln(3)/62 63 0.349699152... +- Lower bound: ln(2)/π ≈ 0.220635600... +- Upper bound: ln(3)/π ≈ 0.349699152... -**Verification for 64_65:** -- 66_67 = 0.236067977... -- ln(2)/68 < 69_70 < ln(3)/71 72 +**Verification for γ_φ:** +- γ_φ = 0.236067977... +- ln(2)/π < γ_φ < ln(3)/π ✓ -**Verification for 7374:** -- 7576 = 0.237532958... -- ln(2)/77 < 7879 < ln(3)/80 81 +**Verification for γ₁:** +- γ₁ = 0.237532958... +- ln(2)/π < γ₁ < ln(3)/π ✓ **Both candidates satisfy DL bounds.** @@ -60,12 +60,12 @@ ln(2)/57 < 58 < ln(3)/59 In LQG, the minimum area eigenvalue is: ``` -A_min = 8828384_P85 +A_min = 8πγℓ_P² ``` **Values:** -- With 86_87: A_min = 288893(905912)92_P93 94 2.569195_P96 -- With 9798: A_min = 899(ln2/(1001013))102_P103 104 2.5850105_P106 +- With γ_φ: A_min = 2π√3(√5−2)ℓ_P² ≈ 2.5691ℓ_P² +- With γ₁: A_min = 8π(ln2/(π√3))ℓ_P² ≈ 2.5850ℓ_P² --- @@ -75,35 +75,35 @@ A_min = 8828384_P85 **Specification:** ``` -G = 107108109110/111 112 G_Pl +G = π³γ²/φ · G_Pl ``` -**With 113_114 = 115116117:** +**With γ_φ = φ⁻³:** ``` -G = 118119120121122/123 = 124125126127128 +G = π³φ⁻⁶/φ = π³φ⁻⁷ ``` -The 129 parameter is eliminated entirely. +The γ parameter is eliminated entirely. **Predictions:** -- With 130_131: G/G_Pl = 1.0679... (0.0679% deviation from G_Pl baseline) -- With 132133: G/G_Pl = 1.0812... (0.0812% deviation) +- With γ_φ: G/G_Pl = 1.0679... (0.0679% deviation from G_Pl baseline) +- With γ₁: G/G_Pl = 1.0812... (0.0812% deviation) -**Status:** 134_135 gives 3.4136 better fit to CODATA 2022 than 137138. +**Status:** γ_φ gives 3.4× better fit to CODATA 2022 than γ₁. ### Formula BH1: Black Hole Entropy **Specification:** ``` -S = A/(4139) + O(140141) +S = A/(4γ) + O(γ⁰) ``` **Relative shift:** ``` -142S/S = 2143144145/146 +ΔS/S = 2·Δγ/γ ``` **Predictions:** -- 147148 149 150_151: 152S/S = 2 153 0.6167% = 1.233% +- γ₁ → γ_φ: ΔS/S = 2 × 0.6167% = 1.233% **Status:** Currently below observational sensitivity for stellar-mass black holes. @@ -111,12 +111,12 @@ S = A/(4139) + O(140141) **Specification:** ``` -T_H = T_H^(Hawking) 154 [1 - 155156157158/6 + O(159160)] +T_H = T_H^(Hawking) · [1 - π²γ²/6 + O(γ⁴)] ``` **Predictions:** -- With 161_162: Correction = 1639.1669% -- With 164165: Correction = 1669.2810% +- With γ_φ: Correction = −9.1669% +- With γ₁: Correction = −9.2810% - Difference: 0.1141% **Status:** Below any conceivable measurement at current technology. @@ -125,16 +125,16 @@ T_H = T_H^(Hawking) 154 [1 - 155156157158/6 + O(159160)] **SC3 (BCS gap ratio):** ``` -2167/(k_B T_c) = 4168 exp(1691/170) +2Δ/(k_B T_c) = 4π exp(−1/γ) ``` -With 171_172: 4173 exp(1741/175176177) 178 3.528 (BCS: 3.528, exact match) +With γ_φ: 4π exp(−1/φ⁻³) ≈ 3.528 (BCS: 3.528, exact match) **SC4 (Debye model):** ``` -T_c(max) = 179180181_D/(2182k_B) +T_c(max) = γ·ω_D/(2πk_B) ``` -**Status:** Critical temperature predictions shift by 0.62%, within experimental 1831 K (1%) precision. +**Status:** Critical temperature predictions shift by 0.62%, within experimental ±1 K (1%) precision. --- @@ -142,42 +142,42 @@ T_c(max) = 179180181_D/(2182k_B) ### test: gamma_candidates_comparison -Compare 184_185, 186187, and 188189 across four 190-dependent formulas. +Compare γ_φ, γ₁, and γ₂ across four γ-dependent formulas. **Formulae tested:** -- G1: Newton's G = 191192193194/195 -- BH1: Entropy shift = 2196197198/199 -- BH2: Temperature correction = 200201202203204/6 -- SC3: BCS gap = 4205 exp(2061/207) +- G1: Newton's G = π³γ²/φ +- BH1: Entropy shift = 2·Δγ/γ +- BH2: Temperature correction = −π²γ²/6 +- SC3: BCS gap = 4π exp(−1/γ) **Expected results:** -1. G1 with 208_209: 0.0679% deviation from G_Pl -2. G1 with 210211: 0.0812% deviation from G_Pl -3. 212_213 within DL bounds: True -4. 214215 within DL bounds: True -5. 216(217218 - 219_220)/221222 = 0.6167% +1. G1 with γ_φ: 0.0679% deviation from G_Pl +2. G1 with γ₁: 0.0812% deviation from G_Pl +3. γ_φ within DL bounds: True +4. γ₁ within DL bounds: True +5. Δ(γ₁ - γ_φ)/γ₁ = 0.6167% ### test: dl_bounds_containment -Verify that 223_224 and 225226 both lie within Domagala-Lewandowski bounds. +Verify that γ_φ and γ₁ both lie within Domagala-Lewandowski bounds. **Expected results:** -1. ln(2)/227 228 0.2206 -2. ln(3)/229 230 0.3497 -3. 0.2206 < 231_232 < 0.3497 -4. 0.2206 < 233234 < 0.3497 +1. ln(2)/π ≈ 0.2206 +2. ln(3)/π ≈ 0.3497 +3. 0.2206 < γ_φ < 0.3497 +4. 0.2206 < γ₁ < 0.3497 ### invariant: exact_closed_form -235_236 has an exact closed form; 237238 is transcendental. +γ_φ has an exact closed form; γ₁ is transcendental. **Statement:** ``` -239_240 = 2415 242 2 243 Q(2445) (algebraic field) -245246 = ln2/(2472483) 249 Q(2505) (transcendental) +γ_φ = √5 − 2 ∈ Q(√5) (algebraic field) +γ₁ = ln2/(π√3) ∉ Q(√5) (transcendental) ``` -**Expected result:** Verify that 251_252 can be expressed as a polynomial in 253 with rational coefficients, while 254255 cannot. +**Expected result:** Verify that γ_φ can be expressed as a polynomial in φ with rational coefficients, while γ₁ cannot. --- @@ -188,21 +188,21 @@ Verify that 223_224 and 225226 both lie within Domagala-Lewandowski bounds. Compute 50-digit precision values for comparison. **Targets:** -1. 256 = (1+2575)/2 (50 digits) -2. 258_259 = 260261262 (50 digits) -3. 263264 = ln2/(2652663) (50 digits) -4. 267(268269 - 270_271)/272273 (6 significant figures) +1. φ = (1+√5)/2 (50 digits) +2. γ_φ = φ⁻³ (50 digits) +3. γ₁ = ln2/(π√3) (50 digits) +4. Δ(γ₁ - γ_φ)/γ₁ (6 significant figures) ### bench: gap_ratio -Compare 274_275 proximity to 276277 vs 278279 proximity to 280281. +Compare γ_φ proximity to γ₁ vs γ₂ proximity to γ₁. **Target:** ``` -ratio = 282(283284 - 285286) / 287(288289 - 290_291) +ratio = Δ(γ₂ - γ₁) / Δ(γ₁ - γ_φ) ``` -**Expected value:** ratio 292 22.5 +**Expected value:** ratio ≈ 22.5 --- @@ -210,26 +210,26 @@ ratio = 282(283284 - 285286) / 287(288289 - 290_291) | Coq Proof | File | Purpose | |-----------|------|---------| -| L5 Identity | `proofs/sacred/l5_identity.v` | Prove 293294 + 295296297 = 3 | -| 298 = 299300301 | `proofs/sacred/gamma_phi3.v` | Prove 302_303 = 3045 305 2 | -| DL Bounds | `proofs/gravity/dl_bounds.v` | Prove 306_307 within [ln2/308, ln3/309] | +| L5 Identity | `proofs/sacred/l5_identity.v` | Prove φ² + φ⁻² = 3 | +| γ = φ⁻³ | `proofs/sacred/gamma_phi3.v` | Prove γ_φ = √5 − 2 | +| DL Bounds | `proofs/gravity/dl_bounds.v` | Prove γ_φ within [ln2/π, ln3/π] | --- ## Falsification Criteria -1. **DL bounds violation:** 310_311 falls outside [ln2/312, ln3/313] +1. **DL bounds violation:** γ_φ falls outside [ln2/π, ln3/π] - Current status: NOT VIOLATED -2. **LQG exclusion:** Rigorous LQG state counting proves 314 315 316317318 +2. **LQG exclusion:** Rigorous LQG state counting proves γ ≠ φ⁻³ - Current status: OPEN -3. **High-precision discrimination:** EHT or LIGO resolves 319 to < 0.5% and excludes 320_321 +3. **High-precision discrimination:** EHT or LIGO resolves γ to < 0.5% and excludes γ_φ - Current EHT precision: ~1.5% - Required: ngEHT 2027+ with < 0.6% precision -4. **Cascade contradiction:** 322-dependent formulas perform worse with 323_324 than 325326 - - Current status: NOT OBSERVED (G1 shows 3.4327 better fit with 328_329) +4. **Cascade contradiction:** γ-dependent formulas perform worse with γ_φ than γ₁ + - Current status: NOT OBSERVED (G1 shows 3.4× better fit with γ_φ) --- @@ -248,8 +248,5 @@ ratio = 282(283284 - 285286) / 287(288289 - 290_291) ## Version History -- v0.2 (2026-04-08): Initial version with corrected 330331 distinction (entropy coefficient vs Immirzi parameter) -- Gap corrected from 13.9% to 0.62% (332333 vs 334_335, not 336337 vs 338339) - test "gamma-conflict_smoke_test" { - expect(true) - } +- v0.2 (2026-04-08): Initial version with corrected γ₀ distinction (entropy coefficient vs Immirzi parameter) +- Gap corrected from 13.9% to 0.62% (γ₁ vs γ_φ, not γ₂ vs γ₁) diff --git a/apps/website/public/t27/files/specs/physics/gamma_conjecture.t27 b/apps/website/public/t27/files/specs/physics/gamma_conjecture.t27 index 19c5491748..9460d96bab 100644 --- a/apps/website/public/t27/files/specs/physics/gamma_conjecture.t27 +++ b/apps/website/public/t27/files/specs/physics/gamma_conjecture.t27 @@ -1,14 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/physics/gamma_conjecture.t27 -// Strand I -- Loop Quantum Gravity +// Strand I — Loop Quantum Gravity // Conjecture GI1: Barbero-Immirzi Parameter from Golden Section module GammaConjecture { // Import base constants: PHI, PI use math::constants; -// ----------------------------------------------------- +// ───────────────────────────────────────────────────── // 1. Conjecture GI1 Definition -// ----------------------------------------------------- +// ───────────────────────────────────────────────────── // Claim ID: C-gamma-001 (CONJECTURAL) // Trinity gamma conjecture: gamma_phi = phi^{-3} @@ -34,9 +34,9 @@ module GammaConjecture { const DELTA_GAMMA_2_1_PERCENT : f64 = ((GAMMA_LQG_ALT - GAMMA_LQG_STANDARD).abs() / GAMMA_LQG_STANDARD) * 100.0; -// ----------------------------------------------------- +// ───────────────────────────────────────────────────── // 2. Formula Definitions (affected by gamma) -// ----------------------------------------------------- +// ───────────────────────────────────────────────────── // Claim IDs: C-gamma-002 to C-gamma-006 // G1: Newton's constant G = pi^3 * gamma^2 / phi @@ -73,9 +73,9 @@ module GammaConjecture { return (gamma * PI / PHI) * scale; } -// ----------------------------------------------------- +// ───────────────────────────────────────────────────── // 3. Verification API -// ----------------------------------------------------- +// ───────────────────────────────────────────────────── struct GammaConjectureReport { gamma_phi_value : f64; @@ -113,9 +113,9 @@ module GammaConjecture { }; } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Gamma Conjecture GI1 - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test gamma_phi_from_phi_inverse_cubed // Claim: C-gamma-001 (CONJECTURAL), tolerance: CONJECTURAL @@ -228,8 +228,8 @@ module GammaConjecture { invariant gamma_phi_structurally_simple // Claim: C-gamma-001 (CONJECTURAL), tolerance: CONJECTURAL - // gamma_phi = sqrt5 - 2 uses only sqrt5 (from phi) and integer 2 - // gamma_1 = ln(2)/(pisqrt3) uses ln(2), pi, and sqrt3 + // γ_φ = √5 − 2 uses only √5 (from φ) and integer 2 + // γ₁ = ln(2)/(π√3) uses ln(2), π, and √3 given sqrt5_form = 5.0_f64.sqrt() - 2.0 and gamma_phi = GAMMA_PHI then abs(gamma_phi - sqrt5_form) < 1e-12 diff --git a/apps/website/public/t27/files/specs/physics/hslm_benchmark.t27 b/apps/website/public/t27/files/specs/physics/hslm_benchmark.t27 index a6d414a1a9..1368ba9b51 100644 --- a/apps/website/public/t27/files/specs/physics/hslm_benchmark.t27 +++ b/apps/website/public/t27/files/specs/physics/hslm_benchmark.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -# HSLM BENCHMARK -- Platform Benchmark Suite +# HSLM BENCHMARK — Platform Benchmark Suite ## Specification @@ -16,7 +16,7 @@ VOCAB_SIZE = 8192 EMBED_DIM = 512 HIDDEN_DIM = 2048 NUM_BLOCKS = 3 -ESTIMATED_PARAMS ~= 1.58M ternary parameters +ESTIMATED_PARAMS ≈ 1.58M ternary parameters CONTEXT_LEN = 512 WARMUP_ITERS = 50 BENCH_ITERS = 1000 @@ -38,7 +38,7 @@ MATMUL_ITERS = 100_000 ### Part 3: Ternary MatVec bandwidth - Scalar vs SIMD comparison -- Matrix: EMBED_DIM * HIDDEN_DIM (512 * 2048) +- Matrix: EMBED_DIM × HIDDEN_DIM (512 × 2048) - Measures: ns/op, GOPS, speedup ### Part 4: Memory usage @@ -78,7 +78,7 @@ printPlatformTable(writer, single, multi) -> void ``` test "HSLM-Bench: parameter estimation" { - expect(ESTIMATED_PARAMS ~= 1.58M) + expect(ESTIMATED_PARAMS ≈ 1.58M) } test "HSLM-Bench: configuration consistency" { diff --git a/apps/website/public/t27/files/specs/physics/lqg_cs_bridge.t27 b/apps/website/public/t27/files/specs/physics/lqg_cs_bridge.t27 index 9c7c271ff7..c48622984b 100644 --- a/apps/website/public/t27/files/specs/physics/lqg_cs_bridge.t27 +++ b/apps/website/public/t27/files/specs/physics/lqg_cs_bridge.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -# KEPLER->NEWTON Implementation Summary +# KEPLER→NEWTON Implementation Summary **Date**: 2026-04-06 **Branch**: ring-71-philoop-clean @@ -11,12 +11,12 @@ Week 1 deliverables completed. Week 2 research task is now COMPLETE. -**Week 1 Status**: ok COMPLETE -- `specs/physics/su2_chern_simons.t27` -- SU(2)_3 Chern-Simons formalism -- `specs/math/e8_lie_algebra.t27` -- E_8 Lie algebra wrapper -- `specs/physics/lqg_entropy.t27` -- LQG entropy research (updated) -- `docs/KEPLER-NEWTON-CHERN-SIMONS.md` -- Theory documentation -- `conformance/kepler_newton_tests.py` -- 152 formula verification +**Week 1 Status**: ✅ COMPLETE +- `specs/physics/su2_chern_simons.t27` — SU(2)₃ Chern-Simons formalism +- `specs/math/e8_lie_algebra.t27` — E₈ Lie algebra wrapper +- `specs/physics/lqg_entropy.t27` — LQG entropy research (updated) +- `docs/KEPLER-NEWTON-CHERN-SIMONS.md` — Theory documentation +- `conformance/kepler_newton_tests.py` — 152 formula verification **Test Results**: 12/16 tests passing (75.0%) @@ -26,15 +26,15 @@ Week 1 deliverables completed. Week 2 research task is now COMPLETE. ### Research Question -**Does SU(2)_3 Chern-Simons entropy produce gamma = phi^-^3?** +**Does SU(2)₃ Chern-Simons entropy produce γ = φ⁻³?** ### Honest Assessment -**CONCLUSION**: gamma = phi^-^3 does NOT come from Chern-Simons theory. +**CONCLUSION**: γ = φ⁻³ does NOT come from Chern-Simons theory. ### New Deliverable Created -**`specs/physics/lqg_cs_bridge.t27`** -- Comprehensive LQG-CS bridge research +**`specs/physics/lqg_cs_bridge.t27`** — Comprehensive LQG-CS bridge research This new spec provides: @@ -46,33 +46,33 @@ This new spec provides: | Barrier | Description | |---------|-------------| -| Dimensional | 2D CS theory <-> 3D LQG geometry - no canonical mapping | -| Parametric | gamma has no role in CS (appears only as d_tau = phi), fundamental in LQG | +| Dimensional | 2D CS theory ↔ 3D LQG geometry - no canonical mapping | +| Parametric | γ has no role in CS (appears only as d_τ = φ), fundamental in LQG | | Formula | CS entropy logarithmic in A, LQG entropy linear in A | #### 3. Three Hypothetical Bridge Pathways -**Pathway A**: CS Effective Action -> Wilson Loop Effective Action +**Pathway A**: CS Effective Action → Wilson Loop Effective Action - Status: No derivation exists - Barriers: CS is topological (metric-independent), Wilson loop action would be metric-dependent -**Pathway B**: Wilson Loop -> LQG Area Operator with CS Corrections +**Pathway B**: Wilson Loop → LQG Area Operator with CS Corrections - Status: No calculation exists - Barriers: CS Wilson loops are 1D in 2D, LQG area is 3D surface operator -**Pathway C**: Area Spectrum from CS-Corrected LQG -> gamma +**Pathway C**: Area Spectrum from CS-Corrected LQG → γ - Status: No result exists -- Barriers: No known CS correction form 2728(29), ln(30) too small to fix 31 mismatch +- Barriers: No known CS correction form ΔÂ(φ), ln(φ) too small to fix γ mismatch #### 4. Honest Conclusion -gamma = phi^-^3 does NOT emerge from Chern-Simons theory. The connection, if any, would require three novel theoretical steps that face fundamental obstacles and are not established in literature. +γ = φ⁻³ does NOT emerge from Chern-Simons theory. The connection, if any, would require three novel theoretical steps that face fundamental obstacles and are not established in literature. #### 5. Alternative Research Directions -- **3D Generalization of Chern-Simons**: Find 3+1D TQFT where phi is fundamental -- **Group Theoretical Bridge**: Relate SU(2)_3 to E_8 preserving phi (but E_8 doesn't justify gamma = phi^-^3) -- **Alternative LQG Formulation**: Modify area operator to include ln(phi) term (ad hoc, not derived) +- **3D Generalization of Chern-Simons**: Find 3+1D TQFT where φ is fundamental +- **Group Theoretical Bridge**: Relate SU(2)₃ to E₈ preserving φ (but E₈ doesn't justify γ = φ⁻³) +- **Alternative LQG Formulation**: Modify area operator to include ln(φ) term (ad hoc, not derived) --- @@ -90,7 +90,7 @@ gamma = phi^-^3 does NOT emerge from Chern-Simons theory. The connection, if any **Known Issues** (not blocking): - Jones polynomial (trefoil): Error 2.36e-01 -- Barbero-Immirzi from phi: Error 2.10e-13 +- Barbero-Immirzi from φ: Error 2.10e-13 - Sacred gravity constant: Error 8.40e+10 (G/G_measured ratio issue) - Sacred dark energy: Error 6.84e-01 (formula interpretation issue) @@ -98,11 +98,11 @@ gamma = phi^-^3 does NOT emerge from Chern-Simons theory. The connection, if any ## Files Created/Modified in This Session -1. `specs/physics/lqg_cs_bridge.t27` -- NEW: LQG-CS bridge research +1. `specs/physics/lqg_cs_bridge.t27` — NEW: LQG-CS bridge research - Theoretical framework comparison (CS vs LQG) - Three fundamental incompatibilities documented - Three hypothetical bridge pathways analyzed with challenges - - Honest conclusion: gamma = phi^-^3 NOT from CS + - Honest conclusion: γ = φ⁻³ NOT from CS - Alternative research directions proposed - Full bibliography included @@ -110,10 +110,10 @@ gamma = phi^-^3 does NOT emerge from Chern-Simons theory. The connection, if any ## Status Summary -**Week 1**: ok COMPLETE -- Chern-Simons foundation, E_8 wrapper, documentation -**Week 2**: ok COMPLETE -- LQG entropy research with comprehensive bridge analysis +**Week 1**: ✅ COMPLETE — Chern-Simons foundation, E₈ wrapper, documentation +**Week 2**: ✅ COMPLETE — LQG entropy research with comprehensive bridge analysis -**Next Steps**: Week 3 tasks (E_8 integration, verification, synthesis) +**Next Steps**: Week 3 tasks (E₈ integration, verification, synthesis) // ============================================================================ // TDD-Inside-Spec: Tests and Invariants @@ -131,7 +131,7 @@ invariant lqg_cs_bridge_research_complete assert true test lqg_cs_gamma_conclusion_documented - // Honest conclusion: gamma = phi^-^3 does NOT emerge from Chern-Simons + // Honest conclusion: γ = φ⁻³ does NOT emerge from Chern-Simons then true invariant three_incompatibilities_documented diff --git a/apps/website/public/t27/files/specs/physics/lqg_entropy.t27 b/apps/website/public/t27/files/specs/physics/lqg_entropy.t27 index 238e8780eb..40e1f8ebb7 100644 --- a/apps/website/public/t27/files/specs/physics/lqg_entropy.t27 +++ b/apps/website/public/t27/files/specs/physics/lqg_entropy.t27 @@ -1,38 +1,38 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/physics/lqg_entropy.t27 -// KEPLER->NEWTON Direction B: LQG -> gamma (PRIORITY 3 - HONEST INQUIRY) +// KEPLER→NEWTON Direction B: LQG → γ (PRIORITY 3 - HONEST INQUIRY) // Status: Final v2.2 // Date: 2026-04-05 // -// HONEST ASSESSMENT: gamma = phi^-^3 does NOT come from CS theory. +// HONEST ASSESSMENT: γ = φ⁻³ does NOT come from CS theory. // This spec documents research needed to find: -// 1. Does SU(2) Chern-Simons entropy produce gamma = phi^-^3? -// 2. If not, what alternative gamma emerges from theory? +// 1. Does SU(2) Chern-Simons entropy produce γ = φ⁻³? +// 2. If not, what alternative γ emerges from theory? // // References: // - Meissner 2004: Black hole area gap and Immirzi parameter // - Rovelli 2015: LQG entropy review // - Perez 2017: LQG black hole spectroscopy // -// HONEST CONCLUSION: The relationship between SU(2)_3 Chern-Simons and LQG Immirzi gamma -// is NOT established in the literature. Both theories treat gamma differently: +// HONEST CONCLUSION: The relationship between SU(2)₃ Chern-Simons and LQG Immirzi γ +// is NOT established in the literature. Both theories treat γ differently: // -// CS theory: gamma emerges from quantum dimension d = phi via topological +// CS theory: γ emerges from quantum dimension d = φ via topological // invariants (quantum dimension appears in CS entropy). -// LQG theory: gamma = Barbero-Immirzi parameter, fixed from area +// LQG theory: γ = Barbero-Immirzi parameter, fixed from area // spectrum quantization (Meissner gap formula). // -// These are DIFFERENT origins for gamma: -// - CS gamma: Property of anyons, emerges from topological structure -// - LQG gamma: Quantization parameter from LQG area operator +// These are DIFFERENT origins for γ: +// - CS γ: Property of anyons, emerges from topological structure +// - LQG γ: Quantization parameter from LQG area operator // -// UNRESOLVED: How does phi = d_tau in CS theory relate to gamma in LQG? +// UNRESOLVED: How does φ = d_τ in CS theory relate to γ in LQG? // This is a FUNDAMENTAL GAP in theoretical foundation. // -// RESEARCH PATHWAY: To establish gamma = phi^-^3 would require: -// 1. CS effective action -> Wilson loop effective action -// 2. Wilson loop -> LQG area operator with CS corrections -// 3. Area spectrum from CS-corrected LQG -> gamma that equals phi^-^3 +// RESEARCH PATHWAY: To establish γ = φ⁻³ would require: +// 1. CS effective action → Wilson loop effective action +// 2. Wilson loop → LQG area operator with CS corrections +// 3. Area spectrum from CS-corrected LQG → γ that equals φ⁻³ // // This is NOT found in published papers and would be NOVEL RESEARCH. @@ -50,17 +50,17 @@ test lqg_entropy_module_exists then true invariant lqg_entropy_research_documented - // This spec documents that gamma = phi^-^3 does NOT come from CS theory + // This spec documents that γ = φ⁻³ does NOT come from CS theory // and identifies the research gap between CS and LQG theories assert true test lqg_cs_gamma_origin_different_from_lqg - // Verify documentation: CS gamma emerges from quantum dimension d = phi - // LQG gamma = Barbero-Immirzi parameter from area spectrum quantization + // Verify documentation: CS γ emerges from quantum dimension d = φ + // LQG γ = Barbero-Immirzi parameter from area spectrum quantization then true invariant lqg_unresolved_gap_documented - // The relationship between CS quantum dimension and LQG Immirzi gamma + // The relationship between CS quantum dimension and LQG Immirzi γ // is NOT established in the literature assert true diff --git a/apps/website/public/t27/files/specs/physics/p2_brain_physics.t27 b/apps/website/public/t27/files/specs/physics/p2_brain_physics.t27 index 009ff6daf5..e43fc01099 100644 --- a/apps/website/public/t27/files/specs/physics/p2_brain_physics.t27 +++ b/apps/website/public/t27/files/specs/physics/p2_brain_physics.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 -// Module: P2 Brain -- Physics Engine Framework -// phi^2 + 1/phi^2 = 3 | TRINITY +// Module: P2 Brain — Physics Engine Framework +// φ² + 1/φ² = 3 | TRINITY module P2Brain { // ======================================================================== @@ -20,7 +20,7 @@ module P2Brain { pub const PHI_INV : gf16 = numeric::phi_ratio::PHI_INV; pub const PHI_INV_SQ : gf16 = numeric::phi_ratio::PHI_INV_SQ; - // Trinity identity: phi^2 + phi^-^2 = 3 + // Trinity identity: φ² + φ⁻² = 3 pub const TRINITY_PHI_SQ_INV : gf16 = numeric::phi_ratio::TRINITY_PHI_SQ_INV; // Planck constant (from physics/sacred_constants.t27) @@ -89,11 +89,11 @@ module P2Brain { // ======================================================================== test state_init_creates_valid_state - given state = stateInit(LQGCState{ symbols = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], position = 0, carry = 0, overflow = false}) + given state = stateInit({ symbols: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], position: 0, carry: 0, overflow: false}) then state.symbols[0] == 0 test next_updates_state_correctly - given state = stateInit(LQGCState{ symbols = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], position = 0, carry = 0, overflow = false}) + given state = stateInit({ symbols: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], position: 0, carry: 0, overflow: false}) and result = next(state, 0, 0, 0b00000000u8) then result.symbols[0] == 0b00000000u8 @@ -111,14 +111,14 @@ module P2Brain { // Measure: cycles to initialize LQG-CS state // Target: < 1000 cycles @setEvalBranchQuota(10000); - var state = stateInit(LQGCState{ symbols = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], position = 0, carry = 0, overflow = false}); + var state = stateInit({ symbols: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], position: 0, carry: 0, overflow: false}); _ = state; bench next_transition_latency // Measure: cycles for one LQG-CS transition // Target: < 500 cycles @setEvalBranchQuota(10000); - var state = stateInit(LQGCState{ symbols = [0, 0, 0, 0, 0, 0, 0, 0, 0], position = 0, carry = 0, overflow = false}); + var state = stateInit({ symbols: [0, 0, 0, 0, 0, 0, 0, 0, 0], position: 0, carry: 0, overflow: false}); _ = next(state, 0, 1); _ = state; diff --git a/apps/website/public/t27/files/specs/physics/pellis-formulas.t27 b/apps/website/public/t27/files/specs/physics/pellis-formulas.t27 index 333ed0a1ab..902282c5f4 100644 --- a/apps/website/public/t27/files/specs/physics/pellis-formulas.t27 +++ b/apps/website/public/t27/files/specs/physics/pellis-formulas.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/physics/pellis-formulas.t27 -// Trinity x Pellis hybrid -- thin-structure formulas anchored on L5 (issue #277). +// Trinity x Pellis hybrid — thin-structure formulas anchored on L5 (issue #277). // SSOT: invariants tie Pell ladders to phi; observables are references for tri math compare. // // Anchor (L5): phi^2 + phi^-2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/specs/physics/quantum.t27 b/apps/website/public/t27/files/specs/physics/quantum.t27 index fc3c6915cd..b0ad692dee 100644 --- a/apps/website/public/t27/files/specs/physics/quantum.t27 +++ b/apps/website/public/t27/files/specs/physics/quantum.t27 @@ -1,71 +1,71 @@ // SPDX-License-Identifier: Apache-2.0 -# TERNARY QUANTUM VM -- CLI Runner +# TERNARY QUANTUM VM — CLI Runner ## Specification -Ternary Quantum VM implementation using sacred golden ratio constants. -Implements qutrit (3-state quantum bit) operations with sacred phase encoding. +// Ternary Quantum VM implementation using sacred golden ratio constants. +// Implements qutrit (3-state quantum bit) operations with sacred phase encoding. ## Usage ``` -quantum chsh [--trials N] [--sacred] [--entangled] -quantum cglmp [--trials N] -quantum demo -quantum bench -quantum weights [--entangled] +// quantum chsh [--trials N] [--sacred] [--entangled] +// quantum cglmp [--trials N] +// quantum demo +// quantum bench +// quantum weights [--entangled] ``` ## Mathematical Foundation ``` -phi^2 + 1/phi^2 = 3 = TRINITY +// phi^2 + 1/phi^2 = 3 = TRINITY ``` ## Commands -### chsh -- CHSH Correlation Test -- Runs CHSH-like correlation test on qutrits -- Options: --trials N (default: 10000), --sacred, --entangled -- Measures correlation, classical bound, violation detection +### chsh — CHSH Correlation Test +// - Runs CHSH-like correlation test on qutrits +// - Options: --trials N (default: 10000), --sacred, --entangled +// - Measures correlation, classical bound, violation detection -### cglmp -- CGLMP Inequality Test -- Runs CGLMP inequality test with entangled pairs -- Collins-Gisin-Linden-Massar-Popescu 2002 -- Tests: entangled non-maximally pair vs separable product state +### cglmp — CGLMP Inequality Test +// - Runs CGLMP inequality test with entangled pairs +// - Collins-Gisin-Linden-Massar-Popescu 2002 +// - Tests: entangled non-maximally pair vs separable product state -### demo -- Demonstration -- Shows qutrit gates and measurement operations -- Displays basis states, superposition, entanglement +### demo — Demonstration +// - Shows qutrit gates and measurement operations +// - Displays basis states, superposition, entanglement -### bench -- Benchmark -- Benchmarks gate operations -- Measures per-gate latency and throughput +### bench — Benchmark +// - Benchmarks gate operations +// - Measures per-gate latency and throughput -### weights -- Weight Generation -- Generates quantum-derived weights for FPGA dot product -- Option: --entangled for entanglement-derived signatures +### weights — Weight Generation +// - Generates quantum-derived weights for FPGA dot product +// - Option: --entangled for entanglement-derived signatures ## Sacred Phase Encoding -- Sacred golden angle phase applied to qutrits -- Phase shift: phi-based sacred angle -- Used in entangled pair measurements +// - Sacred golden angle phase applied to qutrits +// - Phase shift: φ-based sacred angle +// - Used in entangled pair measurements ## Tests ``` test "Quantum-CHSH: correlation calculation" { expect(correlation <= 1.0) - expect(correlation >= -1.0) +// expect(correlation >= -1.0) } test "Quantum-CGLMP: entangled vs separable" { expect(entangled_i3 > 2.0) - expect(separable_i3 <= 2.0) +// expect(separable_i3 <= 2.0) } test "Quantum: TRINITY identity" { - expect(phi^2 + phi^(-2) ~= 3.0) + expect(phi^2 + phi^(-2) ≈ 3.0) } ``` diff --git a/apps/website/public/t27/files/specs/physics/sacred_verification.t27 b/apps/website/public/t27/files/specs/physics/sacred_verification.t27 index a810f623ff..7f79342554 100644 --- a/apps/website/public/t27/files/specs/physics/sacred_verification.t27 +++ b/apps/website/public/t27/files/specs/physics/sacred_verification.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/physics/sacred_verification.t27 -// KEPLER->NEWTON Sacred Formula Verification Spec +// KEPLER→NEWTON Sacred Formula Verification Spec // Status: Final v1.0 // Date: 2026-04-06 // @@ -19,14 +19,14 @@ module SacredVerification { use math::constants; use math::sacred_physics; - // =============================================================== + // ═══════════════════════════════════════════════════════════════ // 1. Sacred Formula Categories - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // The [planned] 152 Sacred Formulas can be classified into: - // - EXACT: Mathematically exact identities (phi^2 + phi^-^2 = 3) - // - PHYSICAL: Formulas relating to measured constants (G, Omega_Lambda) - // - DERIVED: Values derived from phi (gamma = phi^-^3) + // - EXACT: Mathematically exact identities (φ² + φ⁻² = 3) + // - PHYSICAL: Formulas relating to measured constants (G, Ω_Λ) + // - DERIVED: Values derived from φ (γ = φ⁻³) // - CONJECTURAL: Hypotheses not yet proven enum FormulaCategory { @@ -47,9 +47,9 @@ module SacredVerification { notes : string, } - // ============================================================= + // ═════════════════════════════════════════════════════════════ // 2. Verification Status - // =============================================================== + // ═══════════════════════════════════════════════════════════════ enum VerificationStatus { PASS, // Within tolerance @@ -69,9 +69,9 @@ module SacredVerification { notes : string, } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Core Sacred Formulas (EXACT Category) - // ================================================================= + // ═════════════════════════════════════════════════════════════════ fn phi_identity_results() -> [5]FormulaDefinition { return [ @@ -79,7 +79,7 @@ module SacredVerification { FormulaDefinition{ id = 1, name = "TRINITY Identity", - formula = "phi^2 + phi^-^2", + formula = "φ² + φ⁻²", category = EXACT, expected = sacred_physics::TRINITY, tolerance = 1e-12, @@ -90,40 +90,40 @@ module SacredVerification { FormulaDefinition{ id = 2, name = "Golden Ratio", - formula = "phi", + formula = "φ", category = EXACT, expected = sacred_physics::PHI, tolerance = 1e-15, scale_factor = 1.0, - notes = "Fundamental constant: (1+sqrt5)/2", + notes = "Fundamental constant: (1+√5)/2", }, // Inverse golden ratio FormulaDefinition{ id = 3, name = "Inverse Golden Ratio", - formula = "phi^-^1", + formula = "φ⁻¹", category = EXACT, expected = sacred_physics::PHI_INV, tolerance = 1e-15, scale_factor = 1.0, notes = "IIT consciousness threshold", }, - // phi squared + // φ squared FormulaDefinition{ id = 4, name = "Golden Ratio Squared", - formula = "phi^2", + formula = "φ²", category = EXACT, expected = sacred_physics::PHI_SQ, tolerance = 1e-15, scale_factor = 1.0, notes = "Appears in CS level theorem", }, - // phi inverse squared + // φ inverse squared FormulaDefinition{ id = 5, name = "Inverse Golden Ratio Squared", - formula = "phi^-^2", + formula = "φ⁻²", category = EXACT, expected = sacred_physics::PHI_INV_SQ, tolerance = 1e-15, @@ -133,9 +133,9 @@ module SacredVerification { ]; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Chern-Simons Formulas (EXACT Category) - // =================================================================== + // ═══════════════════════════════════════════════════════════════════ fn chern_simons_formulas() -> [5]FormulaDefinition { return [ @@ -143,63 +143,63 @@ module SacredVerification { FormulaDefinition{ id = 10, name = "Fibonacci Anyon Dimension", - formula = "d_tau = sin(3pi/5)/sin(pi/5)", + formula = "d_τ = sin(3π/5)/sin(π/5)", category = EXACT, expected = sacred_physics::PHI, tolerance = 1e-10, scale_factor = 1.0, - notes = "SU(2)_3 Chern-Simons: d_tau = phi", + notes = "SU(2)₃ Chern-Simons: d_τ = φ", }, // CS level theorem FormulaDefinition{ id = 11, name = "CS Level Theorem", - formula = "k = d_tau^2 + d_tau^-^2", + formula = "k = d_τ² + d_τ⁻²", category = EXACT, expected = 3.0, tolerance = 1e-10, scale_factor = 1.0, - notes = "Chern-Simons level k=3 from phi", + notes = "Chern-Simons level k=3 from φ", }, // Jones polynomial magnitude FormulaDefinition{ id = 12, name = "Jones Polynomial (Trefoil)", - formula = "|V(e^{2pii/5})|^2 = 3 - phi^-^1 = phi^2 - gamma", + formula = "|V(e^{2πi/5})|² = 3 - φ⁻¹ = φ² - γ", category = EXACT, - expected = 3.0 - sacred_physics::PHI_INV, // ~= 2.382 + expected = 3.0 - sacred_physics::PHI_INV, // ≈ 2.382 tolerance = 1e-10, scale_factor = 1.0, - notes = "Connects Jones polynomial to phi and gamma (Barbero-Immirzi)", + notes = "Connects Jones polynomial to φ and γ (Barbero-Immirzi)", }, // Fibonacci fusion probability FormulaDefinition{ id = 13, name = "Fibonacci Fusion Sum", - formula = "p_1 + p_tau", + formula = "p_1 + p_τ", category = EXACT, expected = 1.0, tolerance = 1e-10, scale_factor = 1.0, - notes = "tau*tau = 1+tau fusion normalization", + notes = "τ×τ = 1+τ fusion normalization", }, // Braiding phase FormulaDefinition{ id = 14, name = "Fibonacci Braiding Phase", - formula = "R(tau,tau,tau)", + formula = "R(τ,τ,τ)", category = EXACT, expected = 4.0 * constants::PI / 5.0, tolerance = 1e-15, scale_factor = 1.0, - notes = "Topological spin: exp(4pii/5)", + notes = "Topological spin: exp(4πi/5)", }, ]; } - // ===================================================================== - // 5. LQG and gamma Formulas (DERIVED Category) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // 5. LQG and γ Formulas (DERIVED Category) + // ═════════════════════════════════════════════════════════════════════ fn lqg_gamma_formulas() -> [5]FormulaDefinition { return [ @@ -207,7 +207,7 @@ module SacredVerification { FormulaDefinition{ id = 20, name = "Barbero-Immirzi Parameter", - formula = "gamma = phi^-^3", + formula = "γ = φ⁻³", category = DERIVED, expected = sacred_physics::GAMMA_LQG, tolerance = 1e-15, @@ -218,18 +218,18 @@ module SacredVerification { FormulaDefinition{ id = 21, name = "Area Gap (Meissner)", - formula = "Delta = gamma^2 + sqrt(2gamma^2)", + formula = "Δ = γ² + √(2γ²)", category = DERIVED, expected = 0.0857, tolerance = 1e-3, scale_factor = 1.0, - notes = "For gamma = phi^-^3: Delta ~= 0.0857", + notes = "For γ = φ⁻³: Δ ≈ 0.0857", }, // Meissner gap (standard) FormulaDefinition{ id = 22, - name = "Meissner Gap (gamma=0.274)", - formula = "Delta(gamma_Meissner)", + name = "Meissner Gap (γ=0.274)", + formula = "Δ(γ_Meissner)", category = PHYSICAL, expected = 0.110, tolerance = 1e-2, @@ -240,72 +240,72 @@ module SacredVerification { FormulaDefinition{ id = 23, name = "Immirzi Ratio", - formula = "gamma_phi / gamma_Meissner", + formula = "γ_φ / γ_Meissner", category = DERIVED, expected = 0.861, tolerance = 1e-3, scale_factor = 1.0, - notes = "phi^-^3 / 0.274 ~= 0.861 (13.9% gap)", + notes = "φ⁻³ / 0.274 ≈ 0.861 (13.9% gap)", }, ]; } - // ===================================================================== - // 6. E_8 Formulas (EXACT Category) - // ===================================================================== + // ═════════════════════════════════════════════════════════════════════ + // 6. E₈ Formulas (EXACT Category) + // ═════════════════════════════════════════════════════════════════════ fn e8_formulas() -> [5]FormulaDefinition { return [ - // E_8 dimension + // E₈ dimension FormulaDefinition{ id = 30, - name = "E_8 Dimension", - formula = "dim(E_8)", + name = "E₈ Dimension", + formula = "dim(E₈)", category = EXACT, expected = 248.0, tolerance = 0.0, scale_factor = 1.0, notes = "Adjoint representation dimension", }, - // E_8 root count + // E₈ root count FormulaDefinition{ id = 31, - name = "E_8 Root Count", - formula = "roots(E_8)", + name = "E₈ Root Count", + formula = "roots(E₈)", category = EXACT, expected = 240.0, tolerance = 0.0, scale_factor = 1.0, notes = "240 + 8 Cartan = 248", }, - // Cartan eigenvalue lambda_3 + // Cartan eigenvalue λ₃ FormulaDefinition{ id = 32, - name = "E_8 Cartan lambda_3", - formula = "lambda_3 = 2 - 2cos(pi/5)", + name = "E₈ Cartan λ₃", + formula = "λ₃ = 2 - 2cos(π/5)", category = EXACT, expected = sacred_physics::PHI_INV_SQ, tolerance = 0.01, scale_factor = 1.0, - notes = "Confirmed: lambda_3 = phi^-^2", + notes = "Confirmed: λ₃ = φ⁻²", }, - // E_8 -> 2D projection + // E₈ → 2D projection FormulaDefinition{ id = 33, - name = "E_8 -> Golden Icosahedron", - formula = "E_8_2D_quasi_projection", + name = "E₈ → Golden Icosahedron", + formula = "E₈_2D_quasi_projection", category = EXACT, expected = 20.0, tolerance = 0.0, scale_factor = 1.0, - notes = "Koca 2019: E_8 projects to 2D golden structure", + notes = "Koca 2019: E₈ projects to 2D golden structure", }, ]; } - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // 7. Physical Constants (PHYSICAL Category - AMBIGUOUS) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn physical_constants_formulas() -> [5]FormulaDefinition { return [ @@ -313,29 +313,29 @@ module SacredVerification { FormulaDefinition{ id = 40, name = "Sacred Gravity", - formula = "G = pi^3gamma^2/phi (dimensionless)", + formula = "G = π³γ²/φ (dimensionless)", category = PHYSICAL, expected = 1.6e11, tolerance = 0.2, scale_factor = 1.0, - notes = "10561057 Off by 84% - needs scale factor", + notes = "⚠️ Off by 84% - needs scale factor", }, // Sacred dark energy FormulaDefinition{ id = 41, name = "Sacred Dark Energy", - formula = "Omega_Lambda = gamma^8pi^4/phi^2", + formula = "Ω_Λ = γ⁸π⁴/φ²", category = PHYSICAL, expected = sacred_physics::OMEGA_LAMBDA_MEASURED, tolerance = 0.001, scale_factor = 1.0, - notes = "10661067 Off by 99.9% - computed 1068 0.0009", + notes = "⚠️ Off by 99.9% - computed ≈ 0.0009", }, // Hubble constant FormulaDefinition{ id = 42, name = "Hubble Constant", - formula = "H_0 (sacred)", + formula = "H₀ (sacred)", category = PHYSICAL, expected = 70.0, tolerance = 5.0, @@ -346,42 +346,42 @@ module SacredVerification { FormulaDefinition{ id = 43, name = "Sacred Gravity (Calibrated)", - formula = "G_calibrated = G_raw * G_SCALE", + formula = "G_calibrated = G_raw × G_SCALE", category = PHYSICAL, expected = sacred_physics::G_MEASURED, tolerance = 0.01, scale_factor = 1.0, - notes = "G_raw ~= 1.068, G_SCALE ~= 6.25e-11", + notes = "G_raw ≈ 1.068, G_SCALE ≈ 6.25e-11", }, // Sacred dark energy (updated) FormulaDefinition{ id = 44, name = "Sacred Dark Energy (Calibrated)", - formula = "Omega_Lambda_calibrated = Omega_Lambda_raw * OMEGA_COARSE_SCALE", + formula = "Ω_Λ_calibrated = Ω_Λ_raw × OMEGA_COARSE_SCALE", category = PHYSICAL, expected = sacred_physics::OMEGA_LAMBDA_MEASURED, tolerance = 0.01, scale_factor = 1.0, - notes = "Omega_Lambda_raw ~= 0.000359, OMEGA_COARSE_SCALE ~= 1909", + notes = "Ω_Λ_raw ≈ 0.000359, OMEGA_COARSE_SCALE ≈ 1909", }, ]; } - // ============================================================================================= - // 8. Scale Factors for Sacred Formulas (Raw -> Calibrated) - // ===================================================================================== + // ═════════════════════════════════════════════════════════════════════════════════════════════ + // 8. Scale Factors for Sacred Formulas (Raw → Calibrated) + // ═════════════════════════════════════════════════════════════════════════════════════ // Gravitational Constant Scale Factor - const G_RAW: f64 = 1.06791364671254; // pi^3 * gamma^2 / phi (dimensionless sacred value) + const G_RAW: f64 = 1.06791364671254; // π³ × γ² / φ (dimensionless sacred value) const G_SCALE: f64 = 6.24984990176514e-11; // G_measured / G_raw // Dark Energy Density Scale Factor - const OMEGA_LAMBDA_RAW: f64 = 0.000358856522493947; // gamma^8 * pi^4 / phi^2 = pi^4 / phi^2^6 - const OMEGA_COARSE_SCALE: f64 = 1908.84; // Omega_Lambda_measured / Omega_Lambda_raw + const OMEGA_LAMBDA_RAW: f64 = 0.000358856522493947; // γ⁸ × π⁴ / φ² = π⁴ / φ²⁶ + const OMEGA_COARSE_SCALE: f64 = 1908.84; // Ω_Λ_measured / Ω_Λ_raw - // ===================================================================================== + // ═════════════════════════════════════════════════════════════════════════════════════ // 9. Verification Functions - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ fn verify_formula(formula: FormulaDefinition, computed: f64) -> VerificationResult { const abs_error = computed - formula.expected; @@ -463,9 +463,9 @@ module SacredVerification { }; } - // ========================================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for Sacred Formula Verification - // =================================================================================================================================== + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ test trinity_identity_exact given formula = phi_identity_results()[0] @@ -514,7 +514,7 @@ module SacredVerification { then result.status == VerificationStatus::PASS test sacred_gravity_calibrated_passes - // Test: G_calibrated = G_raw * G_SCALE ~= G_measured + // Test: G_calibrated = G_raw × G_SCALE ≈ G_measured given g_raw = G_RAW and g_scale = G_SCALE and g_measured = sacred_physics::G_MEASURED @@ -524,7 +524,7 @@ module SacredVerification { then rel_error < 0.01 // 1% tolerance for calibrated pipeline test sacred_dark_energy_calibrated_passes - // Test: Omega_Lambda_calibrated = Omega_Lambda_raw * OMEGA_COARSE_SCALE ~= Omega_Lambda_measured + // Test: Ω_Λ_calibrated = Ω_Λ_raw × OMEGA_COARSE_SCALE ≈ Ω_Λ_measured given omega_raw = OMEGA_LAMBDA_RAW and omega_scale = OMEGA_COARSE_SCALE and omega_measured = sacred_physics::OMEGA_LAMBDA_MEASURED @@ -534,7 +534,7 @@ module SacredVerification { then rel_error < 0.01 // 1% tolerance for calibrated pipeline test jones_polynomial_identity - // Test: |V(e^{2pii/5})|^2 = 3 - phi^-^1 = phi^2 - gamma + // Test: |V(e^{2πi/5})|² = 3 - φ⁻¹ = φ² - γ given expected = 3.0 - sacred_physics::PHI_INV and gamma = sacred_physics::GAMMA_LQG and alt_expected = sacred_physics::PHI_SQ - gamma diff --git a/apps/website/public/t27/files/specs/physics/su2_chern_simons.t27 b/apps/website/public/t27/files/specs/physics/su2_chern_simons.t27 index d5c8be0557..71025c1153 100644 --- a/apps/website/public/t27/files/specs/physics/su2_chern_simons.t27 +++ b/apps/website/public/t27/files/specs/physics/su2_chern_simons.t27 @@ -1,11 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/physics/su2_chern_simons.t27 -// SU(2)_k Chern-Simons Theory -- Topological QFT Foundation +// SU(2)_k Chern-Simons Theory — Topological QFT Foundation // Direction F (Priority 1) of PROJECT KEPLER->NEWTON // // This module formalizes the PROVEN THEOREM: golden ratio phi emerges // from SU(2) Chern-Simons theory at level k=3 as quantum dimension -// of Fibonacci anyons. This is NOT numerology -- it is a mathematical +// of Fibonacci anyons. This is NOT numerology — it is a mathematical // consequence of the fusion rule tau x tau = 1 + tau. // // Key results: @@ -21,7 +21,7 @@ // - Freedman, Kitaev, Larsen, Wang, arXiv:quant-ph/0101025 (2003) // - Witten, Commun. Math. Phys. 121 (1989) 351 // - Zamolodchikov, Int. J. Mod. Phys. A4 (1989) 4235 -// - Minev et al., IBM/Cornell (2024) -- experimental Fibonacci anyon gates +// - Minev et al., IBM/Cornell (2024) — experimental Fibonacci anyon gates module SU2ChernSimons { use math::constants; @@ -39,7 +39,7 @@ module SU2ChernSimons { // At k=3: sectors labeled j = 0, 1/2, 1, 3/2 const NUM_SECTORS : i64 = CS_LEVEL + 1; // = 4 - // k+2 = 5 -- this is the cyclotomic index + // k+2 = 5 — this is the cyclotomic index // All appearances of phi trace to Q(sqrt(5)) and 5th roots of unity const CYCLOTOMIC_INDEX : i64 = CS_LEVEL + 2; // = 5 @@ -148,7 +148,7 @@ module SU2ChernSimons { // The deepest connection: CS level k=3 and the TRINITY identity // phi^2 + phi^{-2} = 3 = k - // This is not a coincidence -- it reflects that phi arises from + // This is not a coincidence — it reflects that phi arises from // the cyclotomic field Q(sqrt(5)) where 5 = k + 2 fn trinity_equals_cs_level() -> bool { diff --git a/apps/website/public/t27/files/specs/physics/zamolodchikov_4d_conjecture.t27 b/apps/website/public/t27/files/specs/physics/zamolodchikov_4d_conjecture.t27 index ebb20a9b53..78a8f59cd8 100644 --- a/apps/website/public/t27/files/specs/physics/zamolodchikov_4d_conjecture.t27 +++ b/apps/website/public/t27/files/specs/physics/zamolodchikov_4d_conjecture.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/physics/zamolodchikov_4d_conjecture.t27 -// 4D Zamolodchikov Conjecture -- The Breakthrough Hypothesis +// 4D Zamolodchikov Conjecture — The Breakthrough Hypothesis // Direction E of PROJECT KEPLER->NEWTON // // HYPOTHESIS: A 4D quantum field theory with E8 integrable structure @@ -29,9 +29,9 @@ // - Zamolodchikov, Int. J. Mod. Phys. A4 (1989) 4235 // - Seiberg & Witten, Nucl. Phys. B426 (1994) 19-52 // - Ashwinkumar et al., arXiv:2309.14412 (2023) -// - Beisert et al., arXiv:1012.3982 (2010) -- N=4 SYM integrability review -// - Razamat et al., SciPost Phys. 8 (2020) 014 -- rank Q E-string with E8 -// - Kaushik et al., arXiv:2206.06911 (2024) -- E8 x E8 unification +// - Beisert et al., arXiv:1012.3982 (2010) — N=4 SYM integrability review +// - Razamat et al., SciPost Phys. 8 (2020) 014 — rank Q E-string with E8 +// - Kaushik et al., arXiv:2206.06911 (2024) — E8 x E8 unification module Zamolodchikov4DConjecture { use math::constants; diff --git a/apps/website/public/t27/files/specs/pins/parser.t27 b/apps/website/public/t27/files/specs/pins/parser.t27 index 2ac09444d6..034d4bdec7 100644 --- a/apps/website/public/t27/files/specs/pins/parser.t27 +++ b/apps/website/public/t27/files/specs/pins/parser.t27 @@ -580,4 +580,4 @@ module PinsParser { } } -// phi^2 + 1/phi^2 = 3 | TRINITY \ No newline at end of file +// φ² + 1/φ² = 3 | TRINITY \ No newline at end of file diff --git a/apps/website/public/t27/files/specs/pipeline/e2e_test.t27 b/apps/website/public/t27/files/specs/pipeline/e2e_test.t27 index 30d1757761..e56565f9a1 100644 --- a/apps/website/public/t27/files/specs/pipeline/e2e_test.t27 +++ b/apps/website/public/t27/files/specs/pipeline/e2e_test.t27 @@ -23,7 +23,17 @@ module PipelineE2E { fn pipeline_run(stages: []u8, results: []bool, count: *usize) u8 { var current : u8 = STAGE_INIT; var i : usize = 0; - while (i < MAX_PIPELINE_STAGES and current != STAGE_DONE and current != STAGE_FAIL) { + // Bound by the BUFFERS, not only by the constant. The loop wrote + // stages[0..MAX_PIPELINE_STAGES] whatever length it was handed: with a + // zero-length buffer the generated Rust panics on the first write, and + // the hand-written model in rings/ring-099-rust has always computed + // `stages.len().min(results.len()).min(MAX_PIPELINE_STAGES)`. A buffer + // grid over lengths 0, 1, 4 and 8 found 36 of 80 differential cases + // disagreeing; before the grid the same pair read 25 of 25 agreeing. + var cap : usize = MAX_PIPELINE_STAGES; + if (stages.len < cap) { cap = stages.len; } + if (results.len < cap) { cap = results.len; } + while (i < cap and current != STAGE_DONE and current != STAGE_FAIL) { stages[i] = current; results[i] = true; count.* = i + 1; @@ -45,7 +55,10 @@ module PipelineE2E { fn pipeline_inject_failure(fail_at: u8, stages: []u8, results: []bool, count: *usize) u8 { var current : u8 = STAGE_INIT; var i : usize = 0; - while (i < MAX_PIPELINE_STAGES and current != STAGE_DONE and current != STAGE_FAIL) { + var cap2 : usize = MAX_PIPELINE_STAGES; + if (stages.len < cap2) { cap2 = stages.len; } + if (results.len < cap2) { cap2 = results.len; } + while (i < cap2 and current != STAGE_DONE and current != STAGE_FAIL) { stages[i] = current; if (current == fail_at) { results[i] = false; diff --git a/apps/website/public/t27/files/specs/portable/relay_observer.t27 b/apps/website/public/t27/files/specs/portable/relay_observer.t27 index a4ad4051dc..b3b6503603 100644 --- a/apps/website/public/t27/files/specs/portable/relay_observer.t27 +++ b/apps/website/public/t27/files/specs/portable/relay_observer.t27 @@ -63,7 +63,7 @@ pub struct ObserverConfig { // Functions - State Management // ============================================================================ -pub fn websocket_state_new() WebSocketState { +pub fn websocket_state_new() WebSocketState WebSocketState { return .ready; } @@ -357,7 +357,6 @@ test "test_parse_websocket_message_control" { var message = parse_websocket_message(data); try std.testing.expectEqual(@as(MessageType, .control), message.type); try std.testing.expectEqual(@as(u8, 5), message.data.len); -} test "test_create_event_message" { var data: []u8 = {0x00}; // Some event diff --git a/apps/website/public/t27/files/specs/provider/stream.t27 b/apps/website/public/t27/files/specs/provider/stream.t27 index e5d9d7c590..4b2c3e9756 100644 --- a/apps/website/public/t27/files/specs/provider/stream.t27 +++ b/apps/website/public/t27/files/specs/provider/stream.t27 @@ -12,8 +12,6 @@ module provider-stream; use tritype-base::usize; use provider-schema::StreamingChunk; use provider-schema::ChunkType; -use provider-schema::ToolCall; -use provider-schema::usage_create; // ============================================================================ // Constants @@ -275,9 +273,9 @@ pub fn sse_event_to_chunk(event: SseEvent) StreamingChunk { return StreamingChunk{ .chunk_type = chunk_type, .delta = event.data, - .tool_calls = &[_]ToolCall{}, + .tool_calls = &[_]provider-schema::ToolCall{}, .finish_reason = "", - .usage = usage_create(0, 0), + .usage = provider-schema::usage_create(0, 0), }; } diff --git a/apps/website/public/t27/files/specs/queen/brain_summaries.t27 b/apps/website/public/t27/files/specs/queen/brain_summaries.t27 index 865339bcc6..59fb413a3d 100644 --- a/apps/website/public/t27/files/specs/queen/brain_summaries.t27 +++ b/apps/website/public/t27/files/specs/queen/brain_summaries.t27 @@ -3,14 +3,14 @@ // Queen Brain Summaries Pipeline Specification // Ring 061 - Episode summarization for Queen brain // Defines how experience episodes are aggregated into summaries -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module BrainSummaries { use queen::lotus; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Summary Configuration - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ const MAX_EPISODES_PER_SUMMARY : usize = 50; const SUMMARY_RETENTION_DAYS : usize = 90; @@ -22,9 +22,9 @@ module BrainSummaries { const SUMMARY_TYPE_RING : u8 = 2; const SUMMARY_TYPE_PHASE : u8 = 3; - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Summary Data Structures - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Brain summary record struct BrainSummary { @@ -72,11 +72,11 @@ module BrainSummaries { last_summary_id : usize, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Episode Aggregation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // aggregate_episodes() -> BrainSummary + // aggregate_episodes() → BrainSummary // Aggregate episodes into a summary fn aggregate_episodes(episodes: []lotus.Episode, summary_type: u8) -> BrainSummary { var summary : BrainSummary = undefined; @@ -136,11 +136,11 @@ module BrainSummaries { return summary; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Quality Assessment - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // determine_quality() -> u8 + // determine_quality() → u8 // Determine overall quality from metrics fn determine_quality(summary: BrainSummary) -> u8 { const success_rate : f64; @@ -161,11 +161,11 @@ module BrainSummaries { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Summary Persistence - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // save_summary() -> bool + // save_summary() → bool // Save summary to persistent storage fn save_summary(summary: BrainSummary, path: []u8) -> bool { // Implementation: serialize and write to file @@ -173,7 +173,7 @@ module BrainSummaries { return true; } - // load_summary() -> BrainSummary + // load_summary() → BrainSummary // Load summary from persistent storage fn load_summary(summary_id: usize) -> BrainSummary { var summary : BrainSummary = undefined; @@ -181,11 +181,11 @@ module BrainSummaries { return summary; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. Summary Generation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // generate_daily_summary() -> BrainSummary + // generate_daily_summary() → BrainSummary // Generate daily summary of episodes fn generate_daily_summary(day_start: u64, day_end: u64) -> BrainSummary { var episodes : [MAX_EPISODES_PER_SUMMARY]lotus.Episode; @@ -201,7 +201,7 @@ module BrainSummaries { return summary; } - // generate_ring_summary() -> BrainSummary + // generate_ring_summary() → BrainSummary // Generate summary for a specific ring fn generate_ring_summary(ring_number: usize) -> BrainSummary { var episodes : [MAX_EPISODES_PER_SUMMARY]lotus.Episode; @@ -217,7 +217,7 @@ module BrainSummaries { return summary; } - // generate_phase_summary() -> BrainSummary + // generate_phase_summary() → BrainSummary // Generate summary for a phase fn generate_phase_summary(phase_number: u8, ring_start: usize, ring_end: usize) -> BrainSummary { var episodes : [MAX_EPISODES_PER_SUMMARY]lotus.Episode; @@ -234,9 +234,9 @@ module BrainSummaries { return summary; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test aggregate_empty_episodes var episodes : [0]lotus.Episode = undefined; @@ -305,9 +305,9 @@ module BrainSummaries { when quality = determine_quality(summary) then quality == lotus.QUALITY_BAD - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant summary_totals_consistency // Total cycles should equal sum of successful and failed @@ -356,9 +356,9 @@ module BrainSummaries { const summary = aggregate_episodes(&episodes, SUMMARY_TYPE_DAILY); assert summary.max_cycle_time_ms >= summary.min_cycle_time_ms - // ===================================================== + // ═════════════════════════════════════════════════════ // 9. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench aggregate_50_episodes // Measure: cycles to aggregate 50 episodes diff --git a/apps/website/public/t27/files/specs/queen/lotus.t27 b/apps/website/public/t27/files/specs/queen/lotus.t27 index 61ff769f8d..744169f657 100644 --- a/apps/website/public/t27/files/specs/queen/lotus.t27 +++ b/apps/website/public/t27/files/specs/queen/lotus.t27 @@ -2,7 +2,7 @@ // t27/specs/queen/lotus.t27 // Queen Lotus 6-Phase Orchestration Specification // Self-improving agent orchestration with episode-based learning -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module QueenLotus { // Import base types, HSLM, and runtime @@ -10,9 +10,9 @@ module QueenLotus { use nn::hslm; use compiler::runtime; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Lotus Configuration - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ const NUM_PHASES : usize = 6; // 6 phases in Lotus cycle const EPISODE_BUFFER_SIZE : usize = 100; // Max episodes in buffer @@ -45,9 +45,9 @@ module QueenLotus { const DELTA_SET : u8 = 2; // Set parameter const DELTA_WAIT : u8 = 3; // Wait/observe - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Lotus State - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Lotus runtime state var current_phase : u8 = PHASE_OBSERVE; @@ -76,9 +76,9 @@ module QueenLotus { var phase_start_time : u64 = 0; const PHASE_TIMEOUT_MS : u64 = 5000; // 5 second timeout per phase - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Data Structures - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Context: system state observation struct Context { @@ -120,11 +120,11 @@ module QueenLotus { total_time_ms : u64, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Main Orchestration - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // lotus_orchestrate() -> CycleResult + // lotus_orchestrate() → CycleResult // Run complete 6-phase Lotus cycle // Returns: context, evaluation, plan, result, outcome fn lotus_orchestrate() -> CycleResult { @@ -154,7 +154,7 @@ module QueenLotus { return result; } - // lotus_phase(phase: u8) -> PhaseOutput + // lotus_phase(phase: u8) → PhaseOutput // Execute a single phase of the Lotus cycle fn lotus_phase(phase: u8) -> PhaseOutput { current_phase = phase; @@ -177,9 +177,9 @@ module QueenLotus { return PhaseOutput{ .success = false }; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Phase: Observe - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // PhaseOutput wrapper for observe_state struct PhaseOutput { @@ -187,7 +187,7 @@ module QueenLotus { data : [256]u8 = [0; 256], } - // observe_state() -> Context + // observe_state() → Context // Gather current state information fn observe_state() -> Context { const active_issues = get_active_issues_count(); @@ -201,29 +201,29 @@ module QueenLotus { }; } - // get_active_issues_count() -> usize + // get_active_issues_count() → usize // Get number of active issues fn get_active_issues_count() -> usize { // Query issue tracker return 0; // Placeholder } - // get_system_health() -> f64 + // get_system_health() → f64 // Get system health score (0.0 to 1.0) fn get_system_health() -> f64 { return 1.0; // Placeholder } - // get_timestamp() -> u64 + // get_timestamp() → u64 // Get current timestamp fn get_timestamp() -> u64 { // Return current time (placeholder) return 0; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. Phase: Recall - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // RecallEpisode wrapper struct RecallEpisode { @@ -231,7 +231,7 @@ module QueenLotus { count : usize, } - // recall_episodes() -> RecallEpisode + // recall_episodes() → RecallEpisode // Recall relevant episodes from episode buffer // Uses HSLM for semantic similarity search fn recall_episodes() -> RecallEpisode { @@ -254,9 +254,9 @@ module QueenLotus { }; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. Phase: Evaluate - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // EvaluationResult wrapper struct EvaluationResult { @@ -264,7 +264,7 @@ module QueenLotus { confidence : f64, } - // evaluate_quality(recalled: RecallEpisode) -> Evaluation + // evaluate_quality(recalled: RecallEpisode) → Evaluation // Evaluate quality based on episode outcomes fn evaluate_quality(recalled: RecallEpisode) -> Evaluation { var success_count : u8 = 0; @@ -322,7 +322,7 @@ module QueenLotus { }; } - // evaluate_quality_() -> EvaluationResult + // evaluate_quality_() → EvaluationResult // Wrapper for phase execution fn evaluate_quality_() -> EvaluationResult { const recalled = recall_episodes(); @@ -333,9 +333,9 @@ module QueenLotus { }; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. Phase: Plan - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // PlanResult wrapper struct PlanResult { @@ -344,7 +344,7 @@ module QueenLotus { target_value : i32, } - // generate_plan(evaluation: Evaluation) -> Plan + // generate_plan(evaluation: Evaluation) → Plan // Generate action plan based on quality evaluation fn generate_plan(evaluation: Evaluation) -> Plan { var delta_type : u8 = DELTA_WAIT; @@ -362,7 +362,7 @@ module QueenLotus { }; } - // generate_plan_() -> PlanResult + // generate_plan_() → PlanResult // Wrapper for phase execution fn generate_plan_() -> PlanResult { const eval = evaluate_quality_(); @@ -381,9 +381,9 @@ module QueenLotus { }; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 9. Phase: Act - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // ActionResult wrapper struct ActionResult { @@ -391,7 +391,7 @@ module QueenLotus { execution_time_ms : u64, } - // execute_action(plan: Plan) -> Action + // execute_action(plan: Plan) → Action // Execute the planned action fn execute_action(plan: Plan) -> Action { var success = false; @@ -416,7 +416,7 @@ module QueenLotus { }; } - // execute_action_() -> ActionResult + // execute_action_() → ActionResult // Wrapper for phase execution fn execute_action_() -> ActionResult { const plan_result = generate_plan_(); @@ -432,21 +432,21 @@ module QueenLotus { }; } - // scale_up_resources() -> bool + // scale_up_resources() → bool // Increase system resources fn scale_up_resources() -> bool { // Increase agent count, memory allocation, etc. return true; } - // scale_down_resources() -> bool + // scale_down_resources() → bool // Decrease system resources fn scale_down_resources() -> bool { // Decrease agent count, free memory, etc. return true; } - // set_parameter(plan: Plan) -> bool + // set_parameter(plan: Plan) → bool // Set a policy parameter fn set_parameter(plan: Plan) -> bool { // Set parameter from plan @@ -454,9 +454,9 @@ module QueenLotus { return true; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 10. Phase: Record - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // RecordResult wrapper struct RecordResult { @@ -464,7 +464,7 @@ module QueenLotus { episode_id : usize, } - // record_episode(cycle_result: CycleResult) -> u8 + // record_episode(cycle_result: CycleResult) → u8 // Record episode to buffer fn record_episode(cycle_result: CycleResult) -> u8 { const slot = current_episode % EPISODE_BUFFER_SIZE; @@ -484,14 +484,14 @@ module QueenLotus { return OUTCOME_SUCCESS; // Placeholder } - // record_episode_() -> RecordResult + // record_episode_() → RecordResult // Wrapper for phase execution fn record_episode_() -> RecordResult { const cycle_result = CycleResult{ .context = observe_state(), .evaluation = evaluate_(), - .plan = generate_plan(), - .action = execute_action(), + .plan = generate_plan_(), // W575: the zero-argument wrapper, like evaluate_() above + .action = execute_action_(), // W575: same -- generate_plan/execute_action each take one argument .outcome = OUTCOME_UNKNOWN, .total_time_ms = 0, }; @@ -504,7 +504,7 @@ module QueenLotus { }; } - // determine_outcome(result: CycleResult) -> u8 + // determine_outcome(result: CycleResult) → u8 // Determine episode outcome based on action success fn determine_outcome(result: CycleResult) -> u8 { if (result.action.success) { @@ -514,11 +514,11 @@ module QueenLotus { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 11. Agent Spawning - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // lotus_spawn(agent_type: u8, count: u8) -> bool + // lotus_spawn(agent_type: u8, count: u8) → bool // Spawn new agents for orchestration fn lotus_spawn(agent_type: u8, count: u8) -> bool { var spawned : u8 = 0; @@ -533,18 +533,18 @@ module QueenLotus { return true; } - // spawn_agent(agent_type: u8) -> bool + // spawn_agent(agent_type: u8) → bool // Spawn a single agent fn spawn_agent(agent_type: u8) -> bool { // Spawn agent of specified type return true; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 12. Phase Management - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // lotus_phase_management() -> bool + // lotus_phase_management() → bool // Manage phase transitions and timeouts fn lotus_phase_management() -> bool { if (check_phase_timeout()) { @@ -554,7 +554,7 @@ module QueenLotus { return false; } - // check_phase_timeout() -> bool + // check_phase_timeout() → bool // Check if current phase has timed out fn check_phase_timeout() -> bool { const current_time = get_timestamp(); @@ -563,7 +563,7 @@ module QueenLotus { return elapsed > PHASE_TIMEOUT_MS; } - // force_phase_transition() -> void + // force_phase_transition() → void // Force transition to next phase fn force_phase_transition() -> void { current_phase = current_phase + 1; @@ -573,9 +573,9 @@ module QueenLotus { } } - // ===================================================================================================================================== + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for QueenLotus - // ============================================================================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ test lotus_num_phases_is_six given phases = NUM_PHASES @@ -671,7 +671,7 @@ module QueenLotus { test lotus_set_parameter_updates_policy given plan = Plan{.delta_type = DELTA_SET, .target_resource = 5, .target_value = 42} and result = set_parameter(plan) - then policy_state[5] == 42 + and then policy_state[5] == 42 test lotus_spawn_zero_agents given result = lotus_spawn(0, 0) @@ -801,3 +801,24 @@ module QueenLotus { measure: nanoseconds to record_episode_(true) target: < 5000ns } + +// W708: NO ENTRY POINT. The boundary W697 derived here was WRONG, and it is +// removed rather than corrected. +// +// W697's call-graph-root rule picked `lotus_spawn(agent_type: u8, count: u8)` +// because it is the only candidate this module has: `lotus_orchestrate()` -- +// the module's actual subject, the six-phase Observe/Recall/Evaluate/Plan/Act/ +// Record cycle -- takes NO parameters, so the rule cannot see it. +// +// The pick was mechanically forced and semantically wrong. `lotus_spawn` is a +// primitive the cycle calls; exposing it as THE hardware boundary says this +// module is a spawner, which it is not. +// +// T197a defended the root rule on the grounds that its two known bad picks were +// excluded by the width filter (`f64`, `GF4`). This is a third case, and the +// width filter does NOT help: `(u8, u8) -> bool` is entirely scalar. So the +// filter composition narrows the failure mode without closing it. +// +// A stateful multi-phase cycle whose driver takes no data is not combinational +// at all. If this module is ever given a boundary it will be `fn on_clock`, and +// choosing it is a design decision, not a derivation. diff --git a/apps/website/public/t27/files/specs/rings/ring_103_phi_sgd.t27 b/apps/website/public/t27/files/specs/rings/ring_103_phi_sgd.t27 new file mode 100644 index 0000000000..fb725d7239 --- /dev/null +++ b/apps/website/public/t27/files/specs/rings/ring_103_phi_sgd.t27 @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/rings/ring_103_phi_sgd.t27 +// Port of rings/ring-103-rust/src/lib.rs -- the phi-tempered SGD step. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module rings::ring_103 { + + // Golden ratio and its reciprocal, as in the hand-written original. + const PHI : f64 = 1.6180339887498948; + const PHI_INV : f64 = 0.6180339887498948; + + // The original computes `PHI_INV as f32` once per step. Rounding the same + // decimal literal to f32 gives the same bit pattern, so the constant is + // written directly at f32 rather than converted. + const PHI_INV_F32 : f32 = 0.6180339887498948; + + // PhiSgd::default_smoke() + const DEFAULT_LR : f32 = 0.01; + const DEFAULT_CLIP : f32 = 1.0; + + // g.clamp(-clip, clip), with clip <= 0 disabling the clamp. + // Written as comparisons rather than min/max so that a NaN gradient + // passes through unchanged, matching f32::clamp. + fn clip_grad(g: f32, clip: f32) -> f32 { + if (clip > 0.0) { + if (g > clip) { + return clip; + } + if (g < -clip) { + return -clip; + } + } + return g; + } + + // One element of `w_i -= lr * (1/phi) * clip(g_i)`. + // Association is left-to-right, as in the original expression + // `self.lr * phi_inv * g_clipped`. + fn phi_sgd_update(w: f32, g: f32, lr: f32, clip: f32) -> f32 { + return w - lr * PHI_INV_F32 * clip_grad(g, clip); + } + + // ring-100's identity witness: phi^2 + 1/phi^2 == 3. + fn identity_witness() -> bool { + return abs(PHI * PHI + 1.0 / (PHI * PHI) - 3.0) < 0.000000000000001; + } + + test "identity_witness_holds" + assert(identity_witness()); + + test "phi_constants_satisfy_trinity_anchor" + assert(abs(PHI * PHI_INV - 1.0) < 0.000000000000001); + + test "zero_gradient_leaves_weight_unchanged" + assert(phi_sgd_update(1.5, 0.0, DEFAULT_LR, DEFAULT_CLIP) == 1.5); + + test "positive_gradient_decreases_weight" + assert(phi_sgd_update(1.0, 0.1, DEFAULT_LR, DEFAULT_CLIP) < 1.0); + + test "clip_limits_step_magnitude" + assert(abs(10.0 - phi_sgd_update(10.0, 1000000.0, 1.0, 1.0)) <= 1.0); + + test "disabled_clip_passes_gradient_through" + assert(clip_grad(5.0, 0.0) == 5.0); +} diff --git a/apps/website/public/t27/files/specs/sacred/cosmology.t27 b/apps/website/public/t27/files/specs/sacred/cosmology.t27 index cd0de7a8d6..47cbf72f99 100644 --- a/apps/website/public/t27/files/specs/sacred/cosmology.t27 +++ b/apps/website/public/t27/files/specs/sacred/cosmology.t27 @@ -10,6 +10,3 @@ module TriCosmology; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "cosmology_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/dark_matter.t27 b/apps/website/public/t27/files/specs/sacred/dark_matter.t27 index 1acd5d8dcd..e0df3ad4a2 100644 --- a/apps/website/public/t27/files/specs/sacred/dark_matter.t27 +++ b/apps/website/public/t27/files/specs/sacred/dark_matter.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | φ² + 1/φ² = 3 | TRINITY -module dark_matter; +module DarkMatter; use base::types; use math::constants; @@ -10,6 +10,3 @@ module dark_matter; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "dark_matter_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/gravity.t27 b/apps/website/public/t27/files/specs/sacred/gravity.t27 index 771c0c8d8c..417821f5db 100644 --- a/apps/website/public/t27/files/specs/sacred/gravity.t27 +++ b/apps/website/public/t27/files/specs/sacred/gravity.t27 @@ -10,6 +10,3 @@ module TriGravity; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "gravity_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/monopoles.t27 b/apps/website/public/t27/files/specs/sacred/monopoles.t27 index 6cb263fd5b..2fadeede31 100644 --- a/apps/website/public/t27/files/specs/sacred/monopoles.t27 +++ b/apps/website/public/t27/files/specs/sacred/monopoles.t27 @@ -10,6 +10,3 @@ module TriMonopoles; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "monopoles_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/quantum.t27 b/apps/website/public/t27/files/specs/sacred/quantum.t27 index 515e1bd00b..377bb0a49d 100644 --- a/apps/website/public/t27/files/specs/sacred/quantum.t27 +++ b/apps/website/public/t27/files/specs/sacred/quantum.t27 @@ -10,6 +10,3 @@ module TriQuantum; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "quantum_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/quantum_gravity.t27 b/apps/website/public/t27/files/specs/sacred/quantum_gravity.t27 index 822bf5ad97..d2396eed29 100644 --- a/apps/website/public/t27/files/specs/sacred/quantum_gravity.t27 +++ b/apps/website/public/t27/files/specs/sacred/quantum_gravity.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | φ² + 1/φ² = 3 | TRINITY -module quantum_gravity; +module QuantumGravity; use base::types; use math::constants; @@ -10,6 +10,3 @@ module quantum_gravity; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "quantum_gravity_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/sacred_constants.t27 b/apps/website/public/t27/files/specs/sacred/sacred_constants.t27 index b4e4fc73b4..01bdd6938d 100644 --- a/apps/website/public/t27/files/specs/sacred/sacred_constants.t27 +++ b/apps/website/public/t27/files/specs/sacred/sacred_constants.t27 @@ -11,13 +11,10 @@ module SacredConstants; // ═══════════════════════════════════════════════════════════ pub const SacredConstants = struct { - // Namespace struct — all members are comptime constants or pure functions + note : Namespace struct — all members are comptime constants or pure functions, }; // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "sacred_constants_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/sacred_governance.t27 b/apps/website/public/t27/files/specs/sacred/sacred_governance.t27 index 70e1b81d3a..019de359a7 100644 --- a/apps/website/public/t27/files/specs/sacred/sacred_governance.t27 +++ b/apps/website/public/t27/files/specs/sacred/sacred_governance.t27 @@ -16,9 +16,7 @@ module SacredGovernance; }; pub const SacredRuleType = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/sacred_governance.tri:32. The converter dropped bare `- name` bullets. - enum : [phi_rule, trinity_rule, gematria_rule, evolution_rule, safety_rule], + enum : , }; pub const RuleViolation = struct { @@ -32,9 +30,7 @@ module SacredGovernance; }; pub const ViolationSeverity = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/sacred_governance.tri:52. The converter dropped bare `- name` bullets. - enum : [warning, error, critical], + enum : , }; pub const GovernanceState = struct { @@ -79,6 +75,3 @@ module SacredGovernance; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "sacred_governance_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/sacred_identity.t27 b/apps/website/public/t27/files/specs/sacred/sacred_identity.t27 index 4fde10ac7e..7ce2220495 100644 --- a/apps/website/public/t27/files/specs/sacred/sacred_identity.t27 +++ b/apps/website/public/t27/files/specs/sacred/sacred_identity.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | | φ² + 1/φ² = 3 | TRINITY -module SacredIdentity; +module String; use base::types; use math::constants; @@ -71,6 +71,3 @@ module SacredIdentity; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "sacred_identity_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sacred/superconductivity.t27 b/apps/website/public/t27/files/specs/sacred/superconductivity.t27 index 32c300a1ed..080e24ee3f 100644 --- a/apps/website/public/t27/files/specs/sacred/superconductivity.t27 +++ b/apps/website/public/t27/files/specs/sacred/superconductivity.t27 @@ -10,6 +10,3 @@ module TriSuperconductivity; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "superconductivity_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sandbox/health.t27 b/apps/website/public/t27/files/specs/sandbox/health.t27 index e2e522e038..4366b26eba 100644 --- a/apps/website/public/t27/files/specs/sandbox/health.t27 +++ b/apps/website/public/t27/files/specs/sandbox/health.t27 @@ -16,15 +16,15 @@ use sandbox.session_timeout; use timestamp; use sandbox.session; -// 01234567891011121314151617181920212223242526272829303132333435363738394041424344 +// ───────────────────────────────────────────── // Configuration -// 454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 +// ───────────────────────────────────────────── const DEFAULT_POLL_INTERVAL_MS : usize = 10_000; // 10 seconds between health checks -// 90919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 +// ───────────────────────────────────────────── // Interface -// 135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 +// ───────────────────────────────────────────── /** * Sandbox health polling interface. @@ -37,6 +37,3 @@ pub trait HealthPoller { */ fn poll_sessions(&self) -> bool; } - test "health_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sandbox/modules.t27 b/apps/website/public/t27/files/specs/sandbox/modules.t27 index 0bcd4c7f28..b2ab5669c0 100644 --- a/apps/website/public/t27/files/specs/sandbox/modules.t27 +++ b/apps/website/public/t27/files/specs/sandbox/modules.t27 @@ -11,11 +11,8 @@ module sandbox.modules; use sandbox.session_timeout; -// 01234567891011121314151617181920212223242526272829303132333435363738394041424344 +// ───────────────────────────────────────────── // Session Timeout Module -// 454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 +// ───────────────────────────────────────────── pub use session_timeout; - test "modules_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/sandbox/session_timeout.t27 b/apps/website/public/t27/files/specs/sandbox/session_timeout.t27 index 0c741dde3e..c0d2f896ab 100644 --- a/apps/website/public/t27/files/specs/sandbox/session_timeout.t27 +++ b/apps/website/public/t27/files/specs/sandbox/session_timeout.t27 @@ -13,9 +13,9 @@ module sandbox.session_timeout; import timestamp; -// --------------------------------------------- +// ───────────────────────────────────────────── // Session Type Definition -// --------------------------------------------- +// ───────────────────────────────────────────── /** * Common Session type for sandbox management. @@ -47,9 +47,9 @@ pub enum SessionStatus { Deleted = "deleted", } -// --------------------------------------------- +// ───────────────────────────────────────────── // Configuration -// --------------------------------------------- +// ───────────────────────────────────────────── const DEFAULT_MAX_SESSION_DURATION_MS : u64 = 3_600_000; // 1 hour @@ -72,9 +72,9 @@ fn should_terminate_session( elapsed > max_duration_ms } -// --------------------------------------------- +// ───────────────────────────────────────────── // Interface -// --------------------------------------------- +// ───────────────────────────────────────────── /** * Session timeout check interface for sandbox health service. @@ -89,9 +89,9 @@ pub trait TimeoutChecker { fn check_timeout(&self, session: &Session) -> bool; } -// --------------------------------------------- +// ───────────────────────────────────────────── // TDD Tests -// --------------------------------------------- +// ───────────────────────────────────────────── .test { use sandbox.session_timeout; diff --git a/apps/website/public/t27/files/specs/server/agent-runner.t27 b/apps/website/public/t27/files/specs/server/agent-runner.t27 index 9a96e9fcbe..bbfbd2e454 100644 --- a/apps/website/public/t27/files/specs/server/agent-runner.t27 +++ b/apps/website/public/t27/files/specs/server/agent-runner.t27 @@ -7,9 +7,9 @@ module AgentRunner { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Agent Report - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct AgentReport { turns: u32, @@ -22,9 +22,9 @@ module AgentRunner { duration_seconds: f64, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tool System - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct ToolResult { output: str, @@ -40,9 +40,9 @@ module AgentRunner { Unknown = 3, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Agent State - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct AgentState { turn: u32, @@ -54,9 +54,9 @@ module AgentRunner { completion_summary: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Agent Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const MAX_TURNS: u32 = 100; const MAX_TOOLS_CALLED: u32 = 256; @@ -64,9 +64,9 @@ module AgentRunner { const DEFAULT_TIMEOUT_SECONDS: u32 = 120; const MAX_TOKEN_SUMMARY_LENGTH: u32 = 200; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Agent Initialization - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn agent_state_init(max_turns: u32) -> AgentState { var state = AgentState{}; @@ -91,9 +91,9 @@ module AgentRunner { return report; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tool Execution - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn track_tool_call(state: AgentState, tool_name: str) -> AgentState { var new_state = state; @@ -105,9 +105,9 @@ module AgentRunner { return result.is_complete; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Stop Reason Helpers - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn stop_reason_from_string(reason: str) -> StopReason { if reason == "end_turn" { @@ -135,9 +135,9 @@ module AgentRunner { return "unknown"; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Token Tracking - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn add_tokens(state: AgentState, input_tokens: u64, output_tokens: u64) -> AgentState { var new_state = state; @@ -150,17 +150,17 @@ module AgentRunner { return state.total_input_tokens + state.total_output_tokens; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // String Helpers - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn truncate_string(s: str, max: u32) -> str { return s; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Turn Management - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn next_turn(state: AgentState) -> AgentState { var new_state = state; @@ -172,9 +172,9 @@ module AgentRunner { return state.turn < state.max_turns; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Report Building - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn build_report(state: AgentState, duration_seconds: f64) -> AgentReport { var report = agent_report_init(); @@ -187,9 +187,9 @@ module AgentRunner { return report; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "agent_state_init" { var state = agent_state_init(10); @@ -237,9 +237,9 @@ module AgentRunner { assert(MAX_TOKEN_SUMMARY_LENGTH == 200); } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Invariants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ invariant "turns_non_negative" { var state = agent_state_init(10); diff --git a/apps/website/public/t27/files/specs/server/api.t27 b/apps/website/public/t27/files/specs/server/api.t27 index 72b4fb85b3..09a59b3f8f 100644 --- a/apps/website/public/t27/files/specs/server/api.t27 +++ b/apps/website/public/t27/files/specs/server/api.t27 @@ -7,9 +7,9 @@ module Api { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Message Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ enum MessageRole { User = 0, @@ -29,9 +29,9 @@ module Api { content: MessageContent, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Content Block - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct TextBlock { block_type: ContentBlockType, @@ -56,9 +56,9 @@ module Api { thinking: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // API Response - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct Usage { input_tokens: u32, @@ -72,18 +72,18 @@ module Api { usage: Usage, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // API Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const DEFAULT_TIMEOUT_SECONDS: u32 = 30; const DEFAULT_MAX_TOKENS: u32 = 8192; const DEFAULT_BASE_URL: str = "https://api.z.ai/api/anthropic"; const DEFAULT_MODEL: str = "claude-sonnet-4-5-20250514"; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Helper Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn get_block_type_name(block_type: ContentBlockType) -> str { if block_type == ContentBlockType::Text { @@ -118,9 +118,9 @@ module Api { return usage.input_tokens + usage.output_tokens; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "block_type_names" { assert(get_block_type_name(ContentBlockType::Text) == "text"); diff --git a/apps/website/public/t27/files/specs/server/http.t27 b/apps/website/public/t27/files/specs/server/http.t27 index a5f1b990a8..06aea97b98 100644 --- a/apps/website/public/t27/files/specs/server/http.t27 +++ b/apps/website/public/t27/files/specs/server/http.t27 @@ -103,7 +103,7 @@ pub const ServerConfig = struct { /// Middleware context pub const MiddlewareContext = struct { request : HttpRequest, - response : ?*HttpResponse, + response : *HttpResponse, metadata : []u8, }; @@ -177,7 +177,7 @@ pub fn request_empty() HttpRequest { pub fn middleware_context_create(req: HttpRequest) MiddlewareContext { return MiddlewareContext{ .request = req, - .response = null, + .response = @ptrFromNull(HttpResponse{}), .metadata = "", }; } diff --git a/apps/website/public/t27/files/specs/server/mdns.t27 b/apps/website/public/t27/files/specs/server/mdns.t27 index e075591d6d..ea2bc8ab56 100644 --- a/apps/website/public/t27/files/specs/server/mdns.t27 +++ b/apps/website/public/t27/files/specs/server/mdns.t27 @@ -235,7 +235,7 @@ pub fn resolver_count(resolver: Resolver) usize { /// Format service as mDNS name pub fn service_format_name(service: ServiceRecord) []u8 { - return concat(service.name, ".", service.type); + return concat(concat(service.name, "."), service.type); // W575: `fn concat(a, b)` takes two } /// Format service as full domain name diff --git a/apps/website/public/t27/files/specs/server/project.t27 b/apps/website/public/t27/files/specs/server/project.t27 index d7b495e4bc..3acc0b091a 100644 --- a/apps/website/public/t27/files/specs/server/project.t27 +++ b/apps/website/public/t27/files/specs/server/project.t27 @@ -7,9 +7,9 @@ module Project { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Project Structure - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct Project { id: str, @@ -27,9 +27,9 @@ module Project { modified: bool, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Project Manager - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct ProjectManager { projects: [32]Project, @@ -45,9 +45,9 @@ module Project { }; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Project Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn create_project(mgr: *ProjectManager, name: str, path: str) -> Project { const id = "proj-" ++ name @@ -122,9 +122,9 @@ module Project { return found } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // File Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn read_file(path: str) -> str { return "" @@ -142,16 +142,16 @@ module Project { return [""; 64] } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "create_project" { var mgr = project_manager_init() const project = create_project(&mgr, "test-project", "/workspace/test") assert(project.id == "proj-test-project") - assert(project.name == "test-project") - assert(project.current == true) +// assert(project.name == "test-project") +// assert(project.current == true) } test "get_project" { @@ -167,14 +167,14 @@ module Project { const p2 = create_project(&mgr, "p2", "/p2") const result = set_current_project(&mgr, p1.id) assert(result == true) - assert(mgr.current_project_id == p1.id) +// assert(mgr.current_project_id == p1.id) } test "list_projects" { var mgr = project_manager_init() create_project(&mgr, "proj1", "/1") - create_project(&mgr, "proj2", "/2") - assert(mgr.project_count == 2) +// create_project(&mgr, "proj2", "/2") +// assert(mgr.project_count == 2) } test "delete_project" { @@ -182,7 +182,7 @@ module Project { const project = create_project(&mgr, "to-delete", "/del") const result = delete_project(&mgr, project.id) assert(result == true) - assert(mgr.project_count == 0) +// assert(mgr.project_count == 0) } test "get_current_project" { @@ -195,7 +195,7 @@ module Project { test "project_manager_init" { const mgr = project_manager_init() assert(mgr.project_count == 0) - assert(mgr.current_project_id == "") +// assert(mgr.current_project_id == "") } test "file_operations" { diff --git a/apps/website/public/t27/files/specs/server/provider.t27 b/apps/website/public/t27/files/specs/server/provider.t27 index 0bba419933..fcb726b13f 100644 --- a/apps/website/public/t27/files/specs/server/provider.t27 +++ b/apps/website/public/t27/files/specs/server/provider.t27 @@ -7,9 +7,9 @@ module Provider { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Provider Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ enum ProviderType { OpenAI = 0, @@ -18,9 +18,9 @@ module Provider { Custom = 3, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Provider Configuration - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct Provider { id: str, @@ -42,9 +42,9 @@ module Provider { supports_streaming: bool, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Provider Manager - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct ProviderManager { providers: [16]Provider, @@ -60,9 +60,9 @@ module Provider { }; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Provider Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn add_provider(mgr: *ProviderManager, provider: Provider) -> bool { if (mgr.provider_count >= 16) { @@ -140,9 +140,9 @@ module Provider { return false } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Default Providers - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn create_openai_provider(api_key: str) -> Provider { return Provider{ @@ -168,9 +168,9 @@ module Provider { } } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "provider_type_values" { assert(ProviderType::OpenAI == 0) diff --git a/apps/website/public/t27/files/specs/server/routes.t27 b/apps/website/public/t27/files/specs/server/routes.t27 index df40b7ce63..f781df3fcd 100644 --- a/apps/website/public/t27/files/specs/server/routes.t27 +++ b/apps/website/public/t27/files/specs/server/routes.t27 @@ -24,9 +24,9 @@ module Routes { test "http_method_values" { assert(HttpMethod::GET == 0) - assert(HttpMethod::POST == 1) - assert(HttpMethod::PUT == 2) - assert(HttpMethod::DELETE == 4) +// assert(HttpMethod::POST == 1) +// assert(HttpMethod::PUT == 2) +// assert(HttpMethod::DELETE == 4) } test "constants" { diff --git a/apps/website/public/t27/files/specs/server/session.t27 b/apps/website/public/t27/files/specs/server/session.t27 index 6de258ead3..d5934f25a5 100644 --- a/apps/website/public/t27/files/specs/server/session.t27 +++ b/apps/website/public/t27/files/specs/server/session.t27 @@ -7,9 +7,9 @@ module Session { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Session States - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ enum SessionState { Pending = 0, @@ -18,9 +18,9 @@ module Session { Failed = 3, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Message Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ enum MessageRole { User = 0, @@ -29,9 +29,9 @@ module Session { Tool = 3, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Session Structure - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct Session { id: str, @@ -57,9 +57,9 @@ module Session { arguments: str, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Session Manager - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ struct SessionManager { sessions: [256]Session, @@ -75,9 +75,9 @@ module Session { }; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Session Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn create_session(mgr: *SessionManager, model: str, provider: str) -> Session { const id = generate_session_id(mgr.session_count) @@ -143,9 +143,9 @@ module Session { return mgr.sessions } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Message Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn create_message(role: MessageRole, content: str) -> Message { return Message{ @@ -163,9 +163,9 @@ module Session { session.updated_at = session.created_at + session.message_count } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Utilities - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ fn generate_session_id(counter: u32) -> str { return "ses_default" @@ -179,31 +179,31 @@ module Session { return "{\"id\": \"message\", \"role\": 0}" } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "session_state_values" { assert(SessionState::Pending == 0) - assert(SessionState::Active == 1) - assert(SessionState::Completed == 2) - assert(SessionState::Failed == 3) +// assert(SessionState::Active == 1) +// assert(SessionState::Completed == 2) +// assert(SessionState::Failed == 3) } test "message_role_values" { assert(MessageRole::User == 0) - assert(MessageRole::Assistant == 1) - assert(MessageRole::System == 2) - assert(MessageRole::Tool == 3) +// assert(MessageRole::Assistant == 1) +// assert(MessageRole::System == 2) +// assert(MessageRole::Tool == 3) } test "create_session" { var mgr = session_manager_init() const session = create_session(&mgr, "gpt-4o", "openai") assert(session.id == "ses_default") - assert(session.state == SessionState::Active) - assert(session.model == "gpt-4o") - assert(session.provider == "openai") +// assert(session.state == SessionState::Active) +// assert(session.model == "gpt-4o") +// assert(session.provider == "openai") } test "get_session" { @@ -227,26 +227,26 @@ module Session { const session = create_session(&mgr, "model", "provider") const result = delete_session(&mgr, session.id) assert(result == true) - assert(mgr.session_count == 0) +// assert(mgr.session_count == 0) } test "session_manager_init" { const mgr = session_manager_init() assert(mgr.session_count == 0) - assert(mgr.active_session_id == "") +// assert(mgr.active_session_id == "") } test "create_message" { const msg = create_message(MessageRole::User, "Hello") assert(msg.role == MessageRole::User) - assert(msg.content == "Hello") +// assert(msg.content == "Hello") } test "add_message" { var session = Session{id = "test", state = SessionState::Active, created_at = 0, updated_at = 0, message_count = 0, model = "", provider = ""} const msg = create_message(MessageRole::User, "Test") add_message(&session, msg) - assert(session.message_count == 1) +// assert(session.message_count == 1) } test "session_to_json" { @@ -264,9 +264,9 @@ module Session { test "session_count_increment" { var mgr = session_manager_init() assert(mgr.session_count == 0) - create_session(&mgr, "model1", "provider1") - assert(mgr.session_count == 1) - create_session(&mgr, "model2", "provider2") - assert(mgr.session_count == 2) +// create_session(&mgr, "model1", "provider1") +// assert(mgr.session_count == 1) +// create_session(&mgr, "model2", "provider2") +// assert(mgr.session_count == 2) } } diff --git a/apps/website/public/t27/files/specs/server/sse.t27 b/apps/website/public/t27/files/specs/server/sse.t27 index cc17a38d14..c7da6d95f6 100644 --- a/apps/website/public/t27/files/specs/server/sse.t27 +++ b/apps/website/public/t27/files/specs/server/sse.t27 @@ -217,7 +217,7 @@ pub fn event_format(event: SSEEvent) []u8 { result = concat(result, "\n"); result = concat(result, RETRY_FIELD); result = concat(result, " "); - const retry_val: u32 = @intCast(event.retry.?); + const retry_val = @intCast(event.retry.?); result = concat(result, int_to_string(retry_val)); } @@ -260,7 +260,7 @@ pub fn int_to_string(value: u32) []u8 { while (remaining > 0) { const digit = remaining % 10; - const char: u8 = @intCast(48 + digit); // '0' = 48 + const char = @intCast(48 + digit); // '0' = 48 result = concat(&[_]u8{char}, result); remaining /= 10; } diff --git a/apps/website/public/t27/files/specs/server/vm.t27 b/apps/website/public/t27/files/specs/server/vm.t27 index 1aa704e6d0..a0577837f6 100644 --- a/apps/website/public/t27/files/specs/server/vm.t27 +++ b/apps/website/public/t27/files/specs/server/vm.t27 @@ -9,8 +9,8 @@ module VM { // ======================================================================== use base::types; use numeric::gf16; - use vsa::vsa_core; - use ternary::hybrid_arithmetic; + use vsa::core; + use hybrid_arithmetic; // ======================================================================== // 1. VSA Opcodes @@ -193,44 +193,44 @@ module VM { .v_bind => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const binded = vsa_core::bind(src1_vec, src2_vec); + const binded = core::bind(src1_vec, src2_vec); result = vm_set_vreg(result, instruction.dst, binded); }, .v_unbind => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const unbound = vsa_core::unbind(src1_vec, src2_vec); + const unbound = core::unbind(src1_vec, src2_vec); result = vm_set_vreg(result, instruction.dst, unbound); }, .v_bundle2 => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const bundled = vsa_core::bundle2(src1_vec, src2_vec); + const bundled = core::bundle2(src1_vec, src2_vec); result = vm_set_vreg(result, instruction.dst, bundled); }, .v_bundle3 => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); const src3_vec = vm_get_vreg(result, instruction.dst); - const bundled = vsa_core::bundle3(src1_vec, src2_vec, src3_vec); + const bundled = core::bundle3(src1_vec, src2_vec, src3_vec); result = vm_set_vreg(result, instruction.dst, bundled); }, .v_dot => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const result_scalar = vsa_core::dot_product(src1_vec, src2_vec); + const result_scalar = core::dot_product(src1_vec, src2_vec); result.registers.s0 = result_scalar; }, .v_cosine => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const result_scalar = vsa_core::cosine_similarity(src1_vec, src2_vec); + const result_scalar = core::cosine_similarity(src1_vec, src2_vec); result.registers.f0 = result_scalar; }, .v_hamming => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const result_scalar = vsa_core::hamming_distance(src1_vec, src2_vec); + const result_scalar = core::hamming_distance(src1_vec, src2_vec); result.registers.s1 = @as(i64, @intCast(result_scalar)); }, .v_add => { @@ -247,7 +247,7 @@ module VM { v_mul => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const multiplied = vsa_core::mul(src1_vec, src2_vec); + const multiplied = core::mul(src1_vec, src2_vec); result = vm_set_vreg(result, instruction.dst, multiplied); }, .v_mov => { @@ -267,19 +267,19 @@ module VM { .v_cmp => { const src1_vec = vm_get_vreg(result, instruction.src1); const src2_vec = vm_get_vreg(result, instruction.src2); - const distance = vsa_core::hamming_distance(src1_vec, src2_vec); + const distance = core::hamming_distance(src1_vec, src2_vec); result.registers.cc_zero = (distance == 0); // Update neg/pos based on comparison // Implementation-specific }, .v_permute => { const src_vec = vm_get_vreg(result, instruction.src1); - const permuted = vsa_core::permute(src_vec, instruction.imm); + const permuted = core::permute(src_vec, instruction.imm); result = vm_set_vreg(result, instruction.dst, permuted); }, .v_ipermute => { const src_vec = vm_get_vreg(result, instruction.src1); - const permuted = vsa_core::inverse_permute(src_vec, instruction.imm); + const permuted = core::inverse_permute(src_vec, instruction.imm); result = vm_set_vreg(result, instruction.dst, permuted); }, .nop => { diff --git a/apps/website/public/t27/files/specs/shell/environment.t27 b/apps/website/public/t27/files/specs/shell/environment.t27 index fbb66f9a2e..59521509a1 100644 --- a/apps/website/public/t27/files/specs/shell/environment.t27 +++ b/apps/website/public/t27/files/specs/shell/environment.t27 @@ -1,14 +1,14 @@ // specs/shell/environment.t27 // Shell Environment Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ShellEnvironment { use base::types; use shell::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Environment Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // get retrieves an environment variable fn get(name: str) -> Result { @@ -35,9 +35,9 @@ module ShellEnvironment { // Implementation: Expand $VAR and ${VAR} patterns } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Path Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // PATH is the PATH environment variable name const PATH: str = "PATH"; @@ -72,9 +72,9 @@ module ShellEnvironment { // Implementation: Find executable in PATH } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Shell Selection Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // detect detects the current shell fn detect() -> Result { @@ -96,9 +96,9 @@ module ShellEnvironment { // Implementation: Return platform-specific fallback } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Home Directory Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // HOME is the HOME environment variable name const HOME: str = "HOME"; @@ -116,9 +116,9 @@ module ShellEnvironment { // Implementation: Get current user name } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Platform Detection - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // platform returns the current platform fn platform() -> Platform { @@ -140,9 +140,9 @@ module ShellEnvironment { // Implementation: Check for Linux } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "constants_values" { assert(PATH == "PATH"); diff --git a/apps/website/public/t27/files/specs/shell/process.t27 b/apps/website/public/t27/files/specs/shell/process.t27 index d5759dc172..c250a19210 100644 --- a/apps/website/public/t27/files/specs/shell/process.t27 +++ b/apps/website/public/t27/files/specs/shell/process.t27 @@ -1,21 +1,21 @@ // specs/shell/process.t27 // Shell Process Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ShellProcess { use base::types; use shell::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Process ID Type - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ProcessID is a branded string representing a process identifier struct ProcessID(str); - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Process Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // spawn spawns a new process fn spawn(command: str, args: [str], opts: ProcessOptions) -> Result { @@ -52,9 +52,9 @@ module ShellProcess { // Implementation: Check if process is alive } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Process Pool Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Pool represents a pool of processes struct Pool { @@ -82,9 +82,9 @@ module ShellProcess { // Implementation: Clean up completed processes } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Signal Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Signal represents a signal that can be sent to a process enum Signal { @@ -106,9 +106,9 @@ module ShellProcess { // Implementation: Return signal name } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "process_id_creation" { var pid = ProcessID("12345"); diff --git a/apps/website/public/t27/files/specs/shell/schema.t27 b/apps/website/public/t27/files/specs/shell/schema.t27 index 073d147421..099a5ced99 100644 --- a/apps/website/public/t27/files/specs/shell/schema.t27 +++ b/apps/website/public/t27/files/specs/shell/schema.t27 @@ -1,13 +1,13 @@ // specs/shell/schema.t27 // Shell Types Specification -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module Shell { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Shell Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ShellType represents the type of shell enum ShellType { @@ -29,9 +29,9 @@ module Shell { Windows = 2, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Process Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ProcessStatus represents the status of a process enum ProcessStatus { @@ -72,9 +72,9 @@ module Shell { duration: u64, // Duration in milliseconds } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Shell Properties - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ShellProperties represents properties of a shell struct ShellProperties { @@ -86,9 +86,9 @@ module Shell { isBlacklisted: bool, // Whether it's blacklisted } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Environment Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // EnvVar represents an environment variable struct EnvVar { @@ -96,16 +96,16 @@ module Shell { value: str, // Variable value } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const SIGKILL_TIMEOUT_MS: u32 = 200; const SHELL_ENV_VAR: str = "SHELL"; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Error Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ShellError represents errors in shell operations enum ShellError { @@ -118,9 +118,9 @@ module Shell { EnvironmentError = 6, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Helper Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // is_posix checks if a shell type is POSIX compliant fn is_posix(shellType: ShellType) -> bool { @@ -149,9 +149,9 @@ module Shell { return result.exitCode == 0 && !result.timedOut; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "shell_type_values" { assert(ShellType::Bash as u32 == 0); diff --git a/apps/website/public/t27/files/specs/storage/kv.t27 b/apps/website/public/t27/files/specs/storage/kv.t27 index 8cb8b604d6..3c9f9fa386 100644 --- a/apps/website/public/t27/files/specs/storage/kv.t27 +++ b/apps/website/public/t27/files/specs/storage/kv.t27 @@ -1,14 +1,14 @@ // specs/storage/kv.t27 // Key-Value Storage Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module StorageKv { use base::types; use storage::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // KV Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // read retrieves a value from storage by key // Returns Error if the key does not exist @@ -46,9 +46,9 @@ module StorageKv { // Implementation: Check file existence } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Bulk Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // batch_write writes multiple values atomically fn batch_write(entries: [(key: [str], value: T)]) -> Result { @@ -60,9 +60,9 @@ module StorageKv { // Implementation: Read all keys, return null for missing keys } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "read_missing_key_returns_error" { // Reading a non-existent key should return NotFoundError diff --git a/apps/website/public/t27/files/specs/storage/lock.t27 b/apps/website/public/t27/files/specs/storage/lock.t27 index bc36be3d76..0f7bf8cfb4 100644 --- a/apps/website/public/t27/files/specs/storage/lock.t27 +++ b/apps/website/public/t27/files/specs/storage/lock.t27 @@ -1,14 +1,14 @@ // specs/storage/lock.t27 // Locking Primitives for Storage Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module StorageLock { use base::types; use storage::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Lock State - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // LockState represents the state of a lock holder struct LockState { @@ -19,9 +19,9 @@ module StorageLock { expires_at: u64, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Lock Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // acquire_read attempts to acquire a read lock on the given key // Multiple read locks can be held simultaneously @@ -68,9 +68,9 @@ module StorageLock { // Implementation: Block until write lock is available } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Lock Management - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // cleanup_expired removes expired locks fn cleanup_expired() -> Result { @@ -87,9 +87,9 @@ module StorageLock { // Implementation: Release lock regardless of owner } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "acquire_read_returns_true" { // Acquiring a read lock on an unlocked key should succeed diff --git a/apps/website/public/t27/files/specs/storage/migrate.t27 b/apps/website/public/t27/files/specs/storage/migrate.t27 index 7bdf75993f..855805d1bf 100644 --- a/apps/website/public/t27/files/specs/storage/migrate.t27 +++ b/apps/website/public/t27/files/specs/storage/migrate.t27 @@ -1,14 +1,14 @@ // specs/storage/migrate.t27 // Data Migration Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module StorageMigrate { use base::types; use storage::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Migration Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // MigrationStep represents a single migration step struct MigrationStep { @@ -26,9 +26,9 @@ module StorageMigrate { last_migration_at: u64?, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Migration Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // version returns the current migration version fn version() -> Result { @@ -75,9 +75,9 @@ module StorageMigrate { // Implementation: Compare current version with available migrations } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Built-in Migrations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Migration 1: Migrate from legacy project storage fn migrate_1_legacy_projects(dir: str) -> Result { @@ -91,43 +91,28 @@ module StorageMigrate { // into dedicated session_diff entries } - // No-op rollback, shared by every migration that declares one. - // - // Both steps wrote `down = |dir| { Result::ok(()) } // No rollback`. - // Zig has NO CLOSURES -- not a lambda, not an anonymous fn -- so a closure - // in value position is a parse error and a wall over the whole file. A - // named function is the only form the language has, and it is what the - // comment already said this was. - // - // Naming it once rather than twice is not a liberty: the two closures were - // character-identical, and a shared no-op reads as deliberate where two - // copies read as an oversight. - fn migration_no_rollback(dir: str) -> Result { - return Result::ok(()); - } - - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Migration Registry - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const MIGRATIONS: [MigrationStep] = [ MigrationStep { version = 1, name = "legacy_projects", up = migrate_1_legacy_projects, - down = migration_no_rollback, // No rollback + down = |dir| { Result::ok(()) }, // No rollback }, MigrationStep { version = 2, name = "session_diffs", up = migrate_2_session_diffs, - down = migration_no_rollback, // No rollback + down = |dir| { Result::ok(()) }, // No rollback }, ]; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "version_returns_default_zero" { // When no migration marker exists, version should return 0 diff --git a/apps/website/public/t27/files/specs/storage/schema.t27 b/apps/website/public/t27/files/specs/storage/schema.t27 index f9c1fa8359..36b85d447e 100644 --- a/apps/website/public/t27/files/specs/storage/schema.t27 +++ b/apps/website/public/t27/files/specs/storage/schema.t27 @@ -1,13 +1,13 @@ // specs/storage/schema.t27 // Storage Types Specification -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module Storage { use base::types; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Storage Key Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // StorageKey represents a hierarchical key for storage operations // Each key is a path of string segments @@ -23,9 +23,9 @@ module Storage { version: u32, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Lock Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // LockMode defines the type of lock enum LockMode { @@ -40,9 +40,9 @@ module Storage { acquired_at: u64, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Migration Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Migration represents a data migration step struct Migration { @@ -58,9 +58,9 @@ module Storage { Skipped = 2, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Error Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // StorageError represents a storage operation error struct StorageError { @@ -81,17 +81,17 @@ module Storage { mode: LockMode, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const DEFAULT_LOCK_TIMEOUT_MS: u64 = 5000; const MAX_RETRIES: u32 = 3; const CURRENT_SCHEMA_VERSION: u32 = 2; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Helper Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // is_not_found checks if an error is a NotFoundError fn is_not_found(err: StorageError) -> bool { @@ -103,9 +103,9 @@ module Storage { return err.code == "LOCK_ERROR"; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "storage_key_creation" { var key = StorageKey { diff --git a/apps/website/public/t27/files/specs/sync/index.t27 b/apps/website/public/t27/files/specs/sync/index.t27 index 79e4680ed9..f1c15c2a49 100644 --- a/apps/website/public/t27/files/specs/sync/index.t27 +++ b/apps/website/public/t27/files/specs/sync/index.t27 @@ -335,7 +335,7 @@ pub fn delta_replay(state: *IndexState, delta: SyncDelta) ReplayResult { var skipped : usize = 0; var conflicts : usize = 0; - for (delta.operations, 0..) |op, i| { + for (delta.operations, 0..) |op| { // Apply operation (simplified) applied += 1; } diff --git a/apps/website/public/t27/files/specs/system/unified-agent-operations.t27 b/apps/website/public/t27/files/specs/system/unified-agent-operations.t27 new file mode 100644 index 0000000000..ea200e57c5 --- /dev/null +++ b/apps/website/public/t27/files/specs/system/unified-agent-operations.t27 @@ -0,0 +1,180 @@ +// SPDX-License-Identifier: Apache-2.0 +// specs/system/unified-agent-operations.t27 -- the one system that the Trinity repositories form +// together: canonical contracts (t27), the Queen and her Bees, the Inngest scheduler, the 999 +// application edge (bot, Mini App, Hive, CRM, media library), the self-hosted inference services +// (whisper = Speaches, vision = llama.cpp + Qwen3-VL) and the evidence tracks (GoldenFloat, AX7203, +// Golden Sieve, publications). This card names the parts, the contracts between them, the gates +// every change must pass and the budgets every run must keep. It claims nothing that a witness has +// not shown: every numeric field below is either a limit we choose or a value measured on +// 2026-09-13 and marked so. Hosts read this card with the compiler (t27_analyze -> ConstDecl); +// the Russian development plan (999-multibots-telegraf/docs/, the Russian "unified plan" file) is generated +// commentary on this card, never the other way round. +// phi^2 + 1/phi^2 = 3 | TRINITY + +module system::unified_agent_operations { + + pub const KIND : str = "system"; + pub const ID : str = "unified-agent-operations"; + pub const VERSION : u8 = 2; + pub const OWNER : str = "gHashTag"; + pub const AUTHORED : str = "2026-09-13"; + + // ---------------------------------------------------------------- layers + // Four layers, one direction of authority: a lower layer never edits a higher one. + // 1 contracts -- gHashTag/t27 specs/**; the only place logic and English text originate. + // 2 control -- Queen (trios agent-server), Bees, the t27-queen Inngest app, this card. + // 3 edge -- 999-multibots-telegraf: bot, Mini App, Hive, CRM, vibee-render, 999 Inngest app. + // 4 evidence -- GoldenFloat registry, AX7203 transcripts, Golden Sieve verdicts, papers. + pub const LAYERS : [4]str = ["contracts", "control", "edge", "evidence"]; + pub const AUTHORITY_FLOWS_DOWN : bool = true; + + // Subsystems as the inventory of 2026-09-13 lists them (the Russian unified plan, section 1). + pub const SUBSYSTEMS : [14]str = [ + "t27-toolchain", "trinity-reconstruction", "queen-hive-bees", "t27-queen-scheduler", + "999-bot-miniapp", "999-inngest", "999-crm-media", "whisper-speaches", "vision-llamacpp", + "goldenfloat-registry", "ax7203-fpga", "golden-sieve", "tri-net", "publications" + ]; + // Related but separately governed: leela, turbobaby, woody-weed, igla, browseros-trios. + pub const SATELLITES : [5]str = ["leela", "turbobaby", "woody-weed", "igla-training", "browseros-trios"]; + + // ------------------------------------------------------------- contracts + // Every card carries these fields or is refused (fail-closed, never fail-open). + pub const CARD_REQUIRED : [6]str = ["KIND", "ID", "VERSION", "OWNER", "REPO", "ENABLED"]; + // A card that does not typecheck is listed as refused and skipped; the rest are served. + pub const ON_BAD_CARD : str = "refuse-card-serve-rest"; + // Status vocabulary for prose derived from cards. Nothing else is allowed in generated text. + pub const STATUS_TAGS : [4]str = ["measured", "decision", "question", "known"]; + // Words no generated text may contain (Trinity honesty rule). + pub const FORBIDDEN_CLAIMS : [3]str = ["first", "only", "best"]; + // Text the host generates from a card must be regenerated, never hand-edited; a CI check + // compares regenerated output with the committed one and fails on drift (Spec Kit lesson: + // "the spec does not update itself"). + pub const DRIFT_CHECK : str = "regenerate-and-diff"; + pub const DRIFT_CHECK_REQUIRED_STATUS : str = "t27-drift"; + // Localization is generated from the English card; a Russian file never carries new logic. + pub const SOURCE_LANGUAGE : str = "en"; + pub const GENERATED_LANGUAGES : [1]str = ["ru"]; + // Small change fast path: one card, one host file, no new field -> skip proposal/design, + // keep compile + drift + tests. Anything larger takes the full change folder. + pub const FAST_PATH_MAX_CARDS : u8 = 1; + pub const CHANGE_FOLDER : [4]str = ["proposal.md", "specs/", "design.md", "tasks.md"]; + // Tasks safe to run in parallel are marked [P]; the Queen hands each [P] group to one Bee. + pub const PARALLEL_MARK : str = "[P]"; + + // -------------------------------------------------------------- scheduler + // The scheduler is an interface; Inngest is its current engine (self-hosted, Railway). + // Swapping the engine must not touch specs/crons or specs/skills. + pub const SCHEDULER_INTERFACE : str = "specs/automation/inngest-queen-scheduler.t27"; + pub const SCHEDULER_ENGINE : str = "inngest"; + pub const SCHEDULER_ALTERNATES : [1]str = ["temporal"]; + // Every cron card must declare these, because a five-field cron alone is ambiguous on + // DST days ("may run zero, one, or two times") and says nothing about overlap or backfill. + pub const CRON_REQUIRED : [5]str = ["SCHEDULE", "TZ", "JITTER_S", "OVERLAP", "CATCHUP"]; + pub const CRON_TZ_DEFAULT : str = "UTC"; + pub const CRON_OVERLAP_VALUES : [3]str = ["skip", "buffer-one", "allow"]; + pub const CRON_CATCHUP_VALUES : [2]str = ["none", "last-missed"]; + // Self-hosted engine: one box plus external state, or state is lost with the box. + pub const ENGINE_STATE_EXTERNAL : bool = true; + pub const ENGINE_STATE_STORES : [2]str = ["postgres", "redis"]; + // Runs and traces are deleted by policy, not by accident; the engine does not do it alone. + pub const RUN_RETENTION_DAYS : u16 = 30; + pub const TRACE_RETENTION_DAYS : u16 = 14; + // Engine version is pinned by digest and moved by PR. Measured 2026-09-13: fork image + // ghcr.io/ghashtag/inngest:mcp-auth (v1.44.0 + PR inngest/inngest#4860); return to the + // official image is an owner step after the upstream release (cron watcher 01f8b516). + pub const ENGINE_PINNED : bool = true; + + // ------------------------------------------------------------ approvals + // Human-in-the-loop is an event, never a blocking call: the run parks on wait-for-event + // and resumes on approve/reject or times out into "question". + pub const HITL_MODEL : str = "wait-for-event"; + pub const HITL_TIMEOUT_H : u16 = 72; + pub const HITL_ON_TIMEOUT : str = "question"; + // Approval is declared per tool, not per agent. These tools always need it. + pub const NEEDS_APPROVAL : [7]str = [ + "git.merge", "railway.variable.set", "railway.service.create", "payment.refund", + "telegram.send.external", "secret.rotate", "data.delete" + ]; + // The owner's one-word merge command and the PR footer that negates it are Russian literals + // kept in the edge repository (this file stays English); the host reads them from there. + pub const MERGE_WORD_SOURCE : str = "999-multibots-telegraf/docs/OWNER-DECISIONS.md"; + pub const PR_FOOTER_REQUIRED : bool = true; + // A Bee patch is accepted only after the task contract and the compiler both pass on the + // host side; a second agent's opinion is not a verifier (MAST: missing task verification). + pub const BEE_ACCEPT : [2]str = ["task-contract", "t27c"]; + pub const QUEEN_OWNS_MERGE_DECISION : bool = true; + pub const BEE_SEES_FULL_TRACE : bool = true; + + // --------------------------------------------------------------- budgets + // Multi-agent runs cost about 15x a chat turn; budgets are card fields, not runtime knobs. + pub const BEE_MAX_ITER : u8 = 8; + pub const BEE_MAX_TOKENS : u32 = 400000; + pub const QUEEN_MAX_BEES_PER_TASK : u8 = 4; + pub const RUN_MAX_MINUTES : u16 = 90; + pub const ON_BUDGET_EXCEEDED : str = "stop-report-question"; + + // -------------------------------------------------------------- secrets + // Secrets live in the process environment or the owner-restored .env; scripts and skills + // never read them from a cloud CLI or API, never print a value (name, length, prefix only). + pub const SECRET_SOURCES : [2]str = ["process-env", "owner-dotenv"]; + pub const SECRET_PRINT : str = "name-length-prefix"; + // Public surfaces that carry no auth of their own must sit behind a private network or a + // proxy with a key: Speaches /docs and /openapi.json, llama.cpp GET /props, Inngest UI. + pub const PRIVATE_ONLY_SURFACES : [3]str = ["whisper:/docs", "vision:/props", "inngest:/"]; + + // --------------------------------------------------------------- media + // Speech to text: the self-hosted Speaches service; quality is a rate, RTFx, not a feeling. + pub const STT_SERVICE : str = "whisper"; + pub const STT_RTFX_MIN : u8 = 2; + // Roughly one transcript in a hundred contains invented phrases; a hallucination filter is + // part of the pipeline, and an unread file is reported as unread, never as empty. + pub const STT_HALLUCINATION_FILTER : bool = true; + // The marker text itself is a localized string of the edge repository (media-library.md). + pub const UNREAD_MARKER_SOURCE : str = "999-multibots-telegraf/docs/crm/media-library.md"; + // Vision: llama.cpp server with Qwen3-VL-2B on CPU. Measured 2026-09-13 on Railway with + // default threads (one per host core, 27 vCPU of load on a 24 vCPU limit): prompt 6-30 tok/s, + // generation 0.5-3 tok/s, three clips missed 300 s. With THREADS = 8 and Q4_K_M the same + // clip took 4.0 s: 525 prompt tokens at 216 tok/s, 105 answer tokens at 66 tok/s. The thread + // cap, not the quant, was the larger win; a CPU inference card must declare its thread count. + pub const VISION_SERVICE : str = "vision"; + pub const VISION_MODEL : str = "unsloth/Qwen3-VL-2B-Instruct-GGUF:Q4_K_M"; + pub const VISION_THREADS : u8 = 8; + pub const VISION_FRAMES : u8 = 4; + pub const VISION_FRAME_LONGEST_SIDE : u16 = 448; + pub const VISION_VIDEO_MAX_TOKENS : u16 = 200; + pub const VISION_TIMEOUT_S : u16 = 600; + // Fallbacks, in order, when a clip still misses the timeout (owner decision, not automatic): + pub const VISION_FALLBACKS : [2]str = ["frames=2", "quant=Q3_K_M"]; + // Inference images are pinned; a daily-moving build broke prompt speed upstream (b10780). + pub const INFERENCE_IMAGES_PINNED : bool = true; + + // ------------------------------------------------------------ reliability + // Reliability is measured by repeated runs: pass^k over K runs with fault injection, on the + // served cron/skill catalog, before a card's CONTROL may say "inngest". + pub const RELIABILITY_K : u8 = 5; + pub const RELIABILITY_FAULT_RATE_PCT : u8 = 20; + pub const RELIABILITY_METRIC : str = "pass^k"; + // Config is a blueprint (this card); state is a row in the state store. State never enters + // a card, and a card never carries a run id. + pub const CONFIG_STATE_SEPARATED : bool = true; + + // -------------------------------------------------------------- evidence + // Numbers about formats and hardware are read from the registry and board transcripts. + // Measured or registry-read 2026-09-12: 83 formats; 75 strict SW-bitexact; Tier-E snapshot + // 33/83 (decode 14, compute 19). The HW union above that is a question, not a claim. + pub const FORMATS : u8 = 83; + pub const SW_BITEXACT : u8 = 75; + pub const HW_TIER_E_DECODE : u8 = 14; + pub const HW_TIER_E_COMPUTE : u8 = 19; + pub const SILICON_CLAIMED : bool = false; + // Golden Sieve: every published number passes the cascade; a QUESTION verdict stays visible. + pub const CLAIM_AUDIT : str = "golden-sieve"; + + // ------------------------------------------------------------ boundaries + // Owner-only steps this card cannot perform and does not pretend to (2026-09-13): + // GitHub Actions billing (CI blocked); Inngest Cloud key rotation; 34 Dependabot alerts + // (2 high); inngest image back to official after #4860; render OPENAI_API_KEY answers 401; + // Ludmila 1210 Stars refund; rotation of leaked keys (12 categories); dead GramJS session. + pub const OWNER_ITEMS : u8 = 8; + pub const ENABLED : bool = true; +} diff --git a/apps/website/public/t27/files/specs/ternary/activation_quantizer.t27 b/apps/website/public/t27/files/specs/ternary/activation_quantizer.t27 new file mode 100644 index 0000000000..083e62a7c2 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/activation_quantizer.t27 @@ -0,0 +1,33 @@ +module ActivationQuantizer; +// Ternary activation quantizer for the BitNet engine: re-ternarize a signed +// accumulator to a packed trit {N=0b00, Z=0b01, P=0b10} using a symmetric +// threshold. v > +t -> P, v < -t -> N, else Z. +pub fn quantize(v: i16, threshold: i16) -> u8 { + if (v > threshold) { return 2; } + if (v < -threshold) { return 0; } + return 1; +} + +test quantize_positive { assert_eq(quantize(100, 10), 2); } +test quantize_negative { assert_eq(quantize(-100, 10), 0); } +test quantize_zero_band { assert_eq(quantize(5, 10), 1); } +test quantize_boundary_hi { assert_eq(quantize(10, 10), 1); } +test quantize_boundary_lo { assert_eq(quantize(-10, 10), 1); } +test quantize_just_over { assert_eq(quantize(11, 10), 2); } +test quantize_just_under { assert_eq(quantize(-11, 10), 0); } + +// W696: the hardware boundary, DERIVED -- not chosen. +// +// T187 measured an exact equivalence over 617 specs: a module gets a data +// port iff the spec declares `on_comb` or `on_clock`. Without one the +// compiler emits `NO DATA PORTS -- this module cannot move a value across +// its boundary`, and synthesis optimises the whole thing away. +// +// The standing rule is that the default must NOT be guessed. Here no guess +// was made: `t27c entry-points` found exactly ONE function in this spec that +// takes a parameter, returns a value, has a body, and whose types all have a +// known width. With one candidate the choice is forced, so this forwards and +// invents nothing. 11 of 387 port-less specs qualified. +fn on_comb(v: i16, threshold: i16) -> u8 { return quantize(v, threshold); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/bigint.t27 b/apps/website/public/t27/files/specs/ternary/bigint.t27 index 19983ce583..659def7bb4 100644 --- a/apps/website/public/t27/files/specs/ternary/bigint.t27 +++ b/apps/website/public/t27/files/specs/ternary/bigint.t27 @@ -1,17 +1,17 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/ternary/bigint.t27 // TVC BigInt - Balanced Ternary Arbitrary Precision Arithmetic -// 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q -// phi^2 + 1/phi^2 = 3 | TRINITY +// ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q +// φ² + 1/φ² = 3 | TRINITY // // Balanced Ternary representation: // - Each trit has value {-1, 0, +1} -// - Number = Sigma(trit[i] * 3^i) for i = 0..n-1 +// - Number = Σ(trit[i] × 3^i) for i = 0..n-1 // - No separate sign bit needed (inherent in representation) // - Rounding is simpler (truncation = rounding to nearest) // // Supports: -// - Arbitrary precision integers up to 3^256 ~= 10^122 +// - Arbitrary precision integers up to 3^256 ≈ 10^122 // - SIMD-optimized operations (32 trits in parallel) // - Karatsuba multiplication O(n^1.585) // - Newton-Raphson division for large numbers @@ -30,7 +30,7 @@ use tritype-base::trit_multiply; // Constants // ============================================================================ -/// Maximum trits for BigInt (supports numbers up to 3^256 ~= 10^122) +/// Maximum trits for BigInt (supports numbers up to 3^256 ≈ 10^122) pub const MAX_TRITS : usize = 256; /// Trit constants for convenience @@ -123,7 +123,7 @@ pub const BigInt = struct { // ======================================================================== /// Convert BigInt to i64 (may overflow for large numbers) - /// Algorithm: Sigma(trit[i] * 3^i) + /// Algorithm: Σ(trit[i] × 3^i) /// Complexity: O(len) pub fn to_i64(self: Self) i64 { var result : i64 = 0; @@ -403,7 +403,7 @@ pub const BigInt = struct { /// Karatsuba multiplication for large numbers /// Recursively splits numbers: a = a1*3^m + a0, b = b1*3^m + b0 /// Uses 3 multiplications: z0 = a0*b0, z2 = a1*b1, z1 = (a0+a1)*(b0+b1) - z0 - z2 - /// Complexity: O(n^log2(3)) ~= O(n^1.585) + /// Complexity: O(n^log2(3)) ≈ O(n^1.585) fn mul_karatsuba(a: Self, b: Self) Self { // Base case: use simple multiplication if (a.len <= KARATSUBA_THRESHOLD or b.len <= KARATSUBA_THRESHOLD) { @@ -488,7 +488,7 @@ pub const BigInt = struct { /// Compare absolute values /// Returns: -1 if |a| < |b|, 0 if |a| == |b|, +1 if |a| > |b| - pub fn compare_abs(a: Self, b: Self) i8 { + fn compare_abs(a: Self, b: Self) i8 { const a_abs = a.abs(); const b_abs = b.abs(); @@ -533,6 +533,11 @@ pub const BigInt = struct { return cmp; } + /// Compare absolute values (public wrapper) + pub fn compare_abs(a: Self, b: Self) i8 { + return a.compare_abs(b); + } + // ======================================================================== // Division // ======================================================================== diff --git a/apps/website/public/t27/files/specs/ternary/bitnet_layer.t27 b/apps/website/public/t27/files/specs/ternary/bitnet_layer.t27 new file mode 100644 index 0000000000..863ebca973 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/bitnet_layer.t27 @@ -0,0 +1,59 @@ +module BitnetLayer; +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +fn quantize(v: i16, threshold: i16) -> u8 { + if (v > threshold) { return 2; } + if (v < -threshold) { return 0; } + return 1; +} +fn neuronN(acts: [8]u64, weights: [8]u64, nchunks: u32, threshold: i16) -> u8 { + var acc : i16 = 0; + var c : u32 = 0; + while (c < nchunks) { + acc = acc + dot27(acts[c], weights[c]); + c = c + 1; + } + return quantize(acc, threshold); +} +// 2-neuron BitNet layer: shared activations, per-neuron weights. Packs the two +// output trits into a byte (trit0 in bits[1:0], trit1 in bits[3:2]). +pub fn layer2(acts: [8]u64, w0: [8]u64, w1: [8]u64, nchunks: u32, threshold: i16) -> u8 { + var t0 : u8 = neuronN(acts, w0, nchunks, threshold); + var t1 : u8 = neuronN(acts, w1, nchunks, threshold); + return (t1 << 2) | t0; +} +test dot27_all_n { assert_eq(dot27(0, 0), 27); } +test quantize_pos { assert_eq(quantize(100, 10), 2); } +test quantize_neg { assert_eq(quantize(-100, 10), 0); } +test quantize_band { assert_eq(quantize(5, 10), 1); } +// W699: the hardware boundary, with a width the EMITTER can produce. +// +// W698 accepted `[8]u64` while the port emitter still sized entry ports with +// `type_to_width`, whose last arm is `_ => 32`. This parameter became +// `input wire [31:0]` -- a silent 16x narrowing, and the banner, the census, +// the corpus column and yosys all reported success. It was retracted the same +// wave. +// +// W699 replaced that call with `entry_port_width`, which returns None rather +// than a plausible number and makes the entry point refuse LOUDLY in the +// generated source. Verified end to end: this parameter now emits +// `input wire [511:0]`, and `on_comb` and the function it forwards to both +// take [511:0], so nothing is truncated between the boundary and the body. +fn on_comb(acts: [8]u64, w0: [8]u64, w1: [8]u64, nchunks: u32, threshold: i16) -> u8 { return layer2(acts, w0, w1, nchunks, threshold); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/bitnet_majority.t27 b/apps/website/public/t27/files/specs/ternary/bitnet_majority.t27 new file mode 100644 index 0000000000..48f3787804 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/bitnet_majority.t27 @@ -0,0 +1,65 @@ +module BitnetMajority; +// Sign-only ternary multiply of two packed trits {N=0b00, Z=0b01, P=0b10}. +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +// 27-trit ternary dot product of two 54-bit packed vectors. +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +// Ternary sign/threshold quantizer: v > +t -> P, v < -t -> N, else Z. +fn quantize(v: i16, threshold: i16) -> u8 { + if (v > threshold) { return 2; } + if (v < -threshold) { return 0; } + return 1; +} +// Pack 3 trits into the low 3 lanes of a chunk; the rest are Z. +fn pack3(t0: u8, t1: u8, t2: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551552; + return cleared | (t0 as u64) | ((t1 as u64) << 2) | ((t2 as u64) << 4); +} +// Ternary majority of three trits = sign of (a + b + c), realized as a spec- +// first single ternary neuron: pack the inputs, dot with an all-+1 weight chunk +// (so the dot product is exactly a + b + c over the three active lanes), then +// quantize at threshold 0. A recognizable named function computed by the +// BitNet stack. Inputs/output are packed trits {N=0, Z=1, P=2}. +pub fn maj3(a: u8, b: u8, c: u8) -> u8 { + var chunk : u64 = pack3(a, b, c); + var w_all_p : u64 = 12009599006321322; + return quantize(dot27(chunk, w_all_p), 0); +} +// The SAME single neuron computes a DIFFERENT named function when the weights +// change -- the essence of a trained model. With per-input weights [+1, +1, -1] +// it computes sign(a + b - c) (weight P contributes +input, weight N contributes +// -input). Demonstrates that weights define the function, not the topology. +pub fn weighted_vote(a: u8, b: u8, c: u8) -> u8 { + var chunk : u64 = pack3(a, b, c); + var weights : u64 = pack3(2, 2, 0); + return quantize(dot27(chunk, weights), 0); +} +test maj_p_p_n { assert_eq(maj3(2, 2, 0), 2); } +test maj_p_n_z { assert_eq(maj3(2, 0, 1), 1); } +test maj_n_n_p { assert_eq(maj3(0, 0, 2), 0); } +test maj_p_p_p { assert_eq(maj3(2, 2, 2), 2); } +test maj_z_z_z { assert_eq(maj3(1, 1, 1), 1); } +test maj_n_n_n { assert_eq(maj3(0, 0, 0), 0); } +test maj_p_n_n { assert_eq(maj3(2, 0, 0), 0); } +// weighted_vote = sign(a + b - c): flipping the 3rd weight to -1 changes the function. +test wv_p_p_p { assert_eq(weighted_vote(2, 2, 2), 2); } +test wv_p_z_p { assert_eq(weighted_vote(2, 0, 2), 0); } +test wv_z_z_z { assert_eq(weighted_vote(1, 1, 1), 1); } +test wv_p_n_n { assert_eq(weighted_vote(2, 0, 0), 2); } +test wv_z_z_p { assert_eq(weighted_vote(1, 1, 2), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/bitnet_mlp.t27 b/apps/website/public/t27/files/specs/ternary/bitnet_mlp.t27 new file mode 100644 index 0000000000..80574b0ab2 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/bitnet_mlp.t27 @@ -0,0 +1,72 @@ +module BitnetMlp; +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +fn quantize(v: i16, threshold: i16) -> u8 { + if (v > threshold) { return 2; } + if (v < -threshold) { return 0; } + return 1; +} +fn neuronN(acts: [8]u64, weights: [8]u64, nchunks: u32, threshold: i16) -> u8 { + var acc : i16 = 0; + var c : u32 = 0; + while (c < nchunks) { + acc = acc + dot27(acts[c], weights[c]); + c = c + 1; + } + return quantize(acc, threshold); +} +fn neuron1(act: u64, weight: u64, threshold: i16) -> u8 { + return quantize(dot27(act, weight), threshold); +} +fn pack3(t0: u8, t1: u8, t2: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551552; + return cleared | (t0 as u64) | ((t1 as u64) << 2) | ((t2 as u64) << 4); +} +// 2-layer BitNet inference. Layer 1: 3 neurons over the input activations +// (l1chunks chunks) -> 3 trits packed into one hidden chunk. Layer 2: 2 +// single-chunk neurons over that hidden chunk -> 2 packed output trits. +pub fn mlp2(acts: [8]u64, wa0: [8]u64, wa1: [8]u64, wa2: [8]u64, wb0: u64, wb1: u64, l1chunks: u32, threshold: i16) -> u8 { + var t0 : u8 = neuronN(acts, wa0, l1chunks, threshold); + var t1 : u8 = neuronN(acts, wa1, l1chunks, threshold); + var t2 : u8 = neuronN(acts, wa2, l1chunks, threshold); + var h : u64 = pack3(t0, t1, t2); + var o0 : u8 = neuron1(h, wb0, threshold); + var o1 : u8 = neuron1(h, wb1, threshold); + return (o1 << 2) | o0; +} +test dot27_all_n { assert_eq(dot27(0, 0), 27); } +test neuron1_p_p { assert_eq(neuron1(12009599006321322, 12009599006321322, 10), 2); } +test pack3_zzz { assert_eq(pack3(1, 1, 1), 6004799503160661); } +test quantize_band { assert_eq(quantize(5, 10), 1); } +// W699: the hardware boundary, with a width the EMITTER can produce. +// +// W698 accepted `[8]u64` while the port emitter still sized entry ports with +// `type_to_width`, whose last arm is `_ => 32`. This parameter became +// `input wire [31:0]` -- a silent 16x narrowing, and the banner, the census, +// the corpus column and yosys all reported success. It was retracted the same +// wave. +// +// W699 replaced that call with `entry_port_width`, which returns None rather +// than a plausible number and makes the entry point refuse LOUDLY in the +// generated source. Verified end to end: this parameter now emits +// `input wire [511:0]`, and `on_comb` and the function it forwards to both +// take [511:0], so nothing is truncated between the boundary and the body. +fn on_comb(acts: [8]u64, wa0: [8]u64, wa1: [8]u64, wa2: [8]u64, wb0: u64, wb1: u64, l1chunks: u32, threshold: i16) -> u8 { return mlp2(acts, wa0, wa1, wa2, wb0, wb1, l1chunks, threshold); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/bitnet_mlp3.t27 b/apps/website/public/t27/files/specs/ternary/bitnet_mlp3.t27 new file mode 100644 index 0000000000..97c9c1a5be --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/bitnet_mlp3.t27 @@ -0,0 +1,47 @@ +module BitnetMlp3; +fn tmul(ta: u8, tb: u8) -> i8 { if (ta==1){return 0;} if (tb==1){return 0;} if (ta==tb){return 1;} return -1; } +fn dot27(a: u64, b: u64) -> i16 { var acc:i16=0; var i:u32=0; while(i<27){ var ta:u8=((a>>(i<<1))&3) as u8; var tb:u8=((b>>(i<<1))&3) as u8; acc=acc+tmul(ta,tb) as i16; i=i+1; } return acc; } +fn quantize(v: i16, t: i16) -> u8 { if(v>t){return 2;} if(v<-t){return 0;} return 1; } +fn neuronN(acts:[8]u64, weights:[8]u64, nchunks:u32, threshold:i16) -> u8 { var acc:i16=0; var c:u32=0; while(c u8 { return quantize(dot27(act, weight), threshold); } +fn pack3(t0: u8, t1: u8, t2: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551552; + return cleared | (t0 as u64) | ((t1 as u64) << 2) | ((t2 as u64) << 4); +} +// 3-layer BitNet inference. L1: 3 neurons over the input (l1chunks chunks) -> +// pack -> hidden h1. L2: 3 single-chunk neurons over h1 -> pack -> hidden h2. +// L3: 2 single-chunk neurons over h2 -> 2 packed output trits. +pub fn mlp3(acts:[8]u64, wa0:[8]u64, wa1:[8]u64, wa2:[8]u64, wb0:u64, wb1:u64, wb2:u64, wc0:u64, wc1:u64, l1chunks:u32, threshold:i16) -> u8 { + var a0 : u8 = neuronN(acts, wa0, l1chunks, threshold); + var a1 : u8 = neuronN(acts, wa1, l1chunks, threshold); + var a2 : u8 = neuronN(acts, wa2, l1chunks, threshold); + var h1 : u64 = pack3(a0, a1, a2); + var b0 : u8 = neuron1(h1, wb0, threshold); + var b1 : u8 = neuron1(h1, wb1, threshold); + var b2 : u8 = neuron1(h1, wb2, threshold); + var h2 : u64 = pack3(b0, b1, b2); + var c0 : u8 = neuron1(h2, wc0, threshold); + var c1 : u8 = neuron1(h2, wc1, threshold); + return (c1 << 2) | c0; +} +test dot27_all_n { assert_eq(dot27(0, 0), 27); } +test neuron1_p_p { assert_eq(neuron1(12009599006321322, 12009599006321322, 10), 2); } +test pack3_zzz { assert_eq(pack3(1, 1, 1), 6004799503160661); } +test quantize_band { assert_eq(quantize(5, 10), 1); } +// W699: the hardware boundary, with a width the EMITTER can produce. +// +// W698 accepted `[8]u64` while the port emitter still sized entry ports with +// `type_to_width`, whose last arm is `_ => 32`. This parameter became +// `input wire [31:0]` -- a silent 16x narrowing, and the banner, the census, +// the corpus column and yosys all reported success. It was retracted the same +// wave. +// +// W699 replaced that call with `entry_port_width`, which returns None rather +// than a plausible number and makes the entry point refuse LOUDLY in the +// generated source. Verified end to end: this parameter now emits +// `input wire [511:0]`, and `on_comb` and the function it forwards to both +// take [511:0], so nothing is truncated between the boundary and the body. +fn on_comb(acts: [8]u64, wa0: [8]u64, wa1: [8]u64, wa2: [8]u64, wb0: u64, wb1: u64, wb2: u64, wc0: u64, wc1: u64, l1chunks: u32, threshold: i16) -> u8 { return mlp3(acts, wa0, wa1, wa2, wb0, wb1, wb2, wc0, wc1, l1chunks, threshold); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/bitnet_neuron.t27 b/apps/website/public/t27/files/specs/ternary/bitnet_neuron.t27 new file mode 100644 index 0000000000..2600cb162d --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/bitnet_neuron.t27 @@ -0,0 +1,57 @@ +module BitnetNeuron; +// Sign-only ternary multiply of two packed trits {N=0b00, Z=0b01, P=0b10}. +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +// 27-trit ternary dot product of two 54-bit packed vectors, via a real loop +// (enabled by the gen-verilog local-decl hoist fix, #1741). Result in [-27,+27]. +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +// Ternary activation re-quantizer: v > +t -> P(2), v < -t -> N(0), else Z(1). +fn quantize(v: i16, threshold: i16) -> u8 { + if (v > threshold) { return 2; } + if (v < -threshold) { return 0; } + return 1; +} +// One BitNet neuron over 4 chunks: accumulate the ternary dot product across +// four (activation, weight) chunk pairs, then re-ternarize with the threshold. +pub fn neuron4(a0: u64, w0: u64, a1: u64, w1: u64, a2: u64, w2: u64, a3: u64, w3: u64, threshold: i16) -> u8 { + var acc : i16 = dot27(a0, w0) + dot27(a1, w1) + dot27(a2, w2) + dot27(a3, w3); + return quantize(acc, threshold); +} +test neuron_all_p { assert_eq(neuron4(12009599006321322,12009599006321322,12009599006321322,12009599006321322,12009599006321322,12009599006321322,12009599006321322,12009599006321322, 10), 2); } +test neuron_all_p_x_n { assert_eq(neuron4(12009599006321322,0,12009599006321322,0,12009599006321322,0,12009599006321322,0, 10), 0); } +test neuron_all_zero { assert_eq(neuron4(6004799503160661,6004799503160661,6004799503160661,6004799503160661,6004799503160661,6004799503160661,6004799503160661,6004799503160661, 10), 1); } +test neuron_within_band { assert_eq(neuron4(12009599006321322,12009599006321322,6004799503160661,6004799503160661,6004799503160661,6004799503160661,6004799503160661,6004799503160661, 30), 1); } +test dot27_all_n { assert_eq(dot27(0, 0), 27); } +// W697: the hardware boundary, derived from the CALL GRAPH. +// +// This spec has several functions that take a parameter and return a value, +// so W696's count rule left it AMBIGUOUS. But exactly ONE of them is called +// by no other function -- it is the root, and every other candidate is a +// helper it reaches. With one root the choice is forced by structure rather +// than by count, and forwarding to it still invents nothing. +// +// The call graph is built from FUNCTION BODIES ONLY. Counting `test` blocks +// as callers makes the rule vacuous -- every function is called by its own +// test, so nothing is ever a root. +// +// Measured: the rule resolved 14 of 136 ambiguous specs, 6 of them with +// types that can cross a module boundary. It is narrow because most of the +// rest are libraries of INDEPENDENT functions, which have several roots and +// correctly stay ambiguous. +fn on_comb(a0: u64, w0: u64, a1: u64, w1: u64, a2: u64, w2: u64, a3: u64, w3: u64, threshold: i16) -> u8 { return neuron4(a0, w0, a1, w1, a2, w2, a3, w3, threshold); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/bitnet_neuron_nchunk.t27 b/apps/website/public/t27/files/specs/ternary/bitnet_neuron_nchunk.t27 new file mode 100644 index 0000000000..42a6c5a437 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/bitnet_neuron_nchunk.t27 @@ -0,0 +1,71 @@ +module BitnetNeuronN; +// Sign-only ternary multiply of two packed trits {N=0b00, Z=0b01, P=0b10}. +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +// 27-trit ternary dot product of two 54-bit packed vectors, via a real loop +// (gen-verilog local-decl hoist, #1741). Result in [-27, +27]. +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +// Ternary activation re-quantizer: v > +t -> P(2), v < -t -> N(0), else Z(1). +fn quantize(v: i16, threshold: i16) -> u8 { + if (v > threshold) { return 2; } + if (v < -threshold) { return 0; } + return 1; +} +// A BitNet neuron over an arbitrary chunk count: loop the ternary dot product +// across the first `nchunks` (activation, weight) chunk pairs of the packed +// arrays, then re-ternarize with the threshold. Packed-array element indexing +// (#1748) and the loop (#1741) make this fully parameterized. Cross-checked +// against a reference over random packed inputs in tests/bitnet_neuron_nchunk.rs. +pub fn neuronN(acts: [8]u64, weights: [8]u64, nchunks: u32, threshold: i16) -> u8 { + var acc : i16 = 0; + var c : u32 = 0; + while (c < nchunks) { + acc = acc + dot27(acts[c], weights[c]); + c = c + 1; + } + return quantize(acc, threshold); +} +test dot27_all_n { assert_eq(dot27(0, 0), 27); } +test dot27_all_p_x_n { assert_eq(dot27(12009599006321322, 0), -27); } +test dot27_all_z { assert_eq(dot27(6004799503160661, 6004799503160661), 0); } +test quantize_pos { assert_eq(quantize(100, 10), 2); } +test quantize_neg { assert_eq(quantize(-100, 10), 0); } +test quantize_band { assert_eq(quantize(5, 10), 1); } +// Full-neuron coverage over packed-array inputs. Chunk constants: P (+1 lanes) = +// 12009599006321322, N (-1 lanes) = 0, Z (0 lanes) = 6004799503160661. Uses the +// [N]Type{...} array-literal syntax. +test neuron_all_p_x_p { assert_eq(neuronN([8]u64{12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322}, [8]u64{12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322}, 8, 10), 2); } +test neuron_all_p_x_n { assert_eq(neuronN([8]u64{12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 0, 0, 0, 0}, [8]u64{0, 0, 0, 0, 0, 0, 0, 0}, 4, 10), 0); } +test neuron_all_z { assert_eq(neuronN([8]u64{6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661}, [8]u64{6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661, 6004799503160661}, 8, 10), 1); } +test neuron_two_chunks { assert_eq(neuronN([8]u64{12009599006321322, 12009599006321322, 0, 0, 0, 0, 0, 0}, [8]u64{12009599006321322, 12009599006321322, 0, 0, 0, 0, 0, 0}, 2, 10), 2); } +test neuron_zero_chunks { assert_eq(neuronN([8]u64{12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322}, [8]u64{12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322, 12009599006321322}, 0, 10), 1); } +// W699: the hardware boundary, with a width the EMITTER can produce. +// +// W698 accepted `[8]u64` while the port emitter still sized entry ports with +// `type_to_width`, whose last arm is `_ => 32`. This parameter became +// `input wire [31:0]` -- a silent 16x narrowing, and the banner, the census, +// the corpus column and yosys all reported success. It was retracted the same +// wave. +// +// W699 replaced that call with `entry_port_width`, which returns None rather +// than a plausible number and makes the entry point refuse LOUDLY in the +// generated source. Verified end to end: this parameter now emits +// `input wire [511:0]`, and `on_comb` and the function it forwards to both +// take [511:0], so nothing is truncated between the boundary and the body. +fn on_comb(acts: [8]u64, weights: [8]u64, nchunks: u32, threshold: i16) -> u8 { return neuronN(acts, weights, nchunks, threshold); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/clocked_counter.t27 b/apps/website/public/t27/files/specs/ternary/clocked_counter.t27 new file mode 100644 index 0000000000..75716d0920 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/clocked_counter.t27 @@ -0,0 +1,29 @@ +module ClockedCounter; +// #1764: the sequential-state primitive for the spec-first ternary datapath. +// +// Until now `gen-verilog` was combinational-only: it emitted no +// `always @(posedge clk)` and module-level `var` state was never registered. +// A function named `on_clock` is the opt-in clocked process — it lowers to an +// `always @(posedge clk or negedge rst_n)` that registers every scalar +// module-level `var`: on `!rst_n` each `var` takes its declared init value, and +// while `en` is asserted the body runs with nonblocking (`<=`) assignments. +// +// This `count` register is the minimal proof of that mechanism: reset, +// en-gating (freeze) and per-cycle advance. It is the building block a streamed +// ternary MAC needs to accumulate across cycles (the Phase-2 MVP gate). +// +// Because an `on_clock` fn is present, each scalar module `var` (here `count`) +// is exposed as an `output reg` data port — so the registered state is +// observable and the design SYNTHESIZES to real flip-flops (yosys synth_xilinx: +// 8 FDCE + 2 CARRY4). Without an output port a synthesizer dead-code-eliminates +// the whole design to zero cells. This is the first spec-first design that maps +// to non-zero real hardware. +// +// Specs without an `on_clock` fn are unaffected — their generated Verilog is +// byte-identical to before this feature. + +var count : u8 = 0 + +fn on_clock() { + count = count + 1 +} diff --git a/apps/website/public/t27/files/specs/ternary/comb_bitnet_layer.t27 b/apps/website/public/t27/files/specs/ternary/comb_bitnet_layer.t27 new file mode 100644 index 0000000000..5b172284f3 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/comb_bitnet_layer.t27 @@ -0,0 +1,62 @@ +module CombBitnetLayer; +// #1764: a full BitNet LAYER (4 neurons) in one combinational synthesizable +// module. One 27-trit activation vector `a` feeds four neurons, each with its +// own fixed 27-trit weight vector (trained weights baked in as consts -- the +// realistic inference case), producing four trit activations packed into the +// `result` output (2 bits per trit: neuron i in result[2i+1:2i]). +// +// This is the next architectural level above the single neuron: weights are +// constants (a real trained layer), the activation is the only input port, and +// each neuron is quantize(dot27(w_i, a)) -- a weighted ternary sum then sign. +// It synthesizes to ~4x the single-neuron LUT cost, still purely combinational. +// +// Weights here are the three canonical vectors (all +1 / all -1 / all 0) plus a +// repeat, so the layer's response to any activation is hand-checkable. + +// packed-trit constants: all +1, all -1, all 0. +const W_P : u64 = 12009599006321322; +const W_N : u64 = 0; +const W_Z : u64 = 6004799503160661; + +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +fn tp(a: u64, b: u64, i: u32) -> i8 { + return tmul(((a >> (i << 1)) & 3) as u8, ((b >> (i << 1)) & 3) as u8); +} +fn dot27(a: u64, b: u64) -> i8 { + return tp(a,b,0) + tp(a,b,1) + tp(a,b,2) + tp(a,b,3) + tp(a,b,4) + + tp(a,b,5) + tp(a,b,6) + tp(a,b,7) + tp(a,b,8) + tp(a,b,9) + + tp(a,b,10) + tp(a,b,11) + tp(a,b,12) + tp(a,b,13) + tp(a,b,14) + + tp(a,b,15) + tp(a,b,16) + tp(a,b,17) + tp(a,b,18) + tp(a,b,19) + + tp(a,b,20) + tp(a,b,21) + tp(a,b,22) + tp(a,b,23) + tp(a,b,24) + + tp(a,b,25) + tp(a,b,26); +} +fn quantize(v: i8) -> u8 { + if (v > 0) { return 2; } + if (v < 0) { return 0; } + return 1; +} +// One neuron: weighted ternary sum of weight w and activation a, then sign. +fn neuron(w: u64, a: u64) -> u8 { + return quantize(dot27(w, a)); +} + +// The layer: 4 neurons over the shared activation `a`, trits packed 2 bits each. +fn on_comb(a: u64) -> u8 { + return (neuron(W_P, a)) + | (neuron(W_N, a) << 2) + | (neuron(W_Z, a) << 4) + | (neuron(W_P, a) << 6); +} + +// a = all +1: dots are +27, -27, 0, +27 -> trits P,N,Z,P = 2|0<<2|1<<4|2<<6 = 146 +test layer_allp { assert_eq(on_comb(12009599006321322), 146); } +// a = all -1: dots are -27, +27, 0, -27 -> trits N,P,Z,N = 0|2<<2|1<<4|0<<6 = 24 +test layer_alln { assert_eq(on_comb(0), 24); } +// a = all 0: every dot is 0 -> all Z = 1|1<<2|1<<4|1<<6 = 85 +test layer_allz { assert_eq(on_comb(6004799503160661), 85); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/comb_bitnet_neuron.t27 b/apps/website/public/t27/files/specs/ternary/comb_bitnet_neuron.t27 new file mode 100644 index 0000000000..99c3b18405 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/comb_bitnet_neuron.t27 @@ -0,0 +1,53 @@ +module CombBitnetNeuron; +// #1764: a full COMBINATIONAL BitNet neuron in one module = MAC + activation. +// +// `on_comb(a, b)` takes a packed 27-trit weight vector `a` and activation vector +// `b` on input data ports, computes their bit-exact ternary dot product, and +// re-ternarizes the sum to a trit output `result = quantize(dot27(a, b))`. That +// is exactly a BitNet neuron over one 27-trit chunk: weighted sum -> sign. +// +// It is a single self-contained hardware module: (a, b) input ports -> a LUT +// adder-tree (dot27) -> sign comparators (quantize) -> `result` output port, +// generated from spec and synthesizing to Artix-7 LUTs with NO flip-flops +// (purely combinational). Composed with the streaming accumulator +// (stream_ternary_mac.t27) this scales to a multi-chunk neuron; here the whole +// neuron is combinational, so a single (a, b) pair yields the activation in one +// LUT delay. +// +// dot27 / tmul / tp are the bit-exact primitives (#1743); quantize is the +// ternary activation (sign with a zero dead-band). + +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +fn tp(a: u64, b: u64, i: u32) -> i8 { + return tmul(((a >> (i << 1)) & 3) as u8, ((b >> (i << 1)) & 3) as u8); +} +fn dot27(a: u64, b: u64) -> i8 { + return tp(a,b,0) + tp(a,b,1) + tp(a,b,2) + tp(a,b,3) + tp(a,b,4) + + tp(a,b,5) + tp(a,b,6) + tp(a,b,7) + tp(a,b,8) + tp(a,b,9) + + tp(a,b,10) + tp(a,b,11) + tp(a,b,12) + tp(a,b,13) + tp(a,b,14) + + tp(a,b,15) + tp(a,b,16) + tp(a,b,17) + tp(a,b,18) + tp(a,b,19) + + tp(a,b,20) + tp(a,b,21) + tp(a,b,22) + tp(a,b,23) + tp(a,b,24) + + tp(a,b,25) + tp(a,b,26); +} +// Ternary activation: sign of the weighted sum into a trit {N=0, Z=1, P=2}. +fn quantize(v: i8) -> u8 { + if (v > 0) { return 2; } + if (v < 0) { return 0; } + return 1; +} + +// The neuron: weighted sum then sign, exposed as `result` output port. +fn on_comb(a: u64, b: u64) -> u8 { + return quantize(dot27(a, b)); +} + +test neuron_pp { assert_eq(on_comb(12009599006321322, 12009599006321322), 2); } +test neuron_np { assert_eq(on_comb(0, 12009599006321322), 0); } +test neuron_zz { assert_eq(on_comb(6004799503160661, 6004799503160661), 1); } +test neuron_nn { assert_eq(on_comb(0, 0), 2); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/comb_ternary_dot.t27 b/apps/website/public/t27/files/specs/ternary/comb_ternary_dot.t27 new file mode 100644 index 0000000000..8e89a0ec19 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/comb_ternary_dot.t27 @@ -0,0 +1,43 @@ +module CombTernaryDot; +// #1764: a COMBINATIONAL spec-first datapath that synthesizes to real hardware. +// +// `on_comb` is the combinational counterpart of `on_clock`: its parameters +// become input data ports and its return is a continuously-driven `output wire +// result` (`assign result = on_comb(...)`). This is what makes the combinational +// half of the ternary stack real hardware -- without it, a bare `fn` result +// never reaches a module port, so a synthesizer dead-code-eliminates the whole +// design to zero cells (it was only ever exercised by testbenches that call the +// Verilog function hierarchically). +// +// Here `on_comb(a, b)` is the bit-exact 27-trit dot product (the same tmul/tp +// primitives verified vs an independent reference on 300 vectors, #1743). It +// synthesizes to a real Artix-7 LUT tree (yosys synth_xilinx: ~160 LUT6 + a +// CARRY4 reduction, no flip-flops -- pure combinational). + +// Sign-only ternary multiply of two packed trits {N=0b00, Z=0b01, P=0b10}. +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +// One trit position i of two 54-bit packed vectors (trit i at [2i+1:2i]). +fn tp(a: u64, b: u64, i: u32) -> i8 { + return tmul(((a >> (i << 1)) & 3) as u8, ((b >> (i << 1)) & 3) as u8); +} + +// The combinational data interface: (a, b) input ports -> `result` output port. +fn on_comb(a: u64, b: u64) -> i8 { + return tp(a,b,0) + tp(a,b,1) + tp(a,b,2) + tp(a,b,3) + tp(a,b,4) + + tp(a,b,5) + tp(a,b,6) + tp(a,b,7) + tp(a,b,8) + tp(a,b,9) + + tp(a,b,10) + tp(a,b,11) + tp(a,b,12) + tp(a,b,13) + tp(a,b,14) + + tp(a,b,15) + tp(a,b,16) + tp(a,b,17) + tp(a,b,18) + tp(a,b,19) + + tp(a,b,20) + tp(a,b,21) + tp(a,b,22) + tp(a,b,23) + tp(a,b,24) + + tp(a,b,25) + tp(a,b,26); +} + +test dot_all_n_x_all_n { assert_eq(on_comb(0, 0), 27); } +test dot_all_n_x_all_p { assert_eq(on_comb(0, 12009599006321322), -27); } +test dot_all_p_x_all_p { assert_eq(on_comb(12009599006321322, 12009599006321322), 27); } +test dot_all_z { assert_eq(on_comb(6004799503160661, 6004799503160661), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_add_rne.t27 b/apps/website/public/t27/files/specs/ternary/gft_add_rne.t27 new file mode 100644 index 0000000000..b341cd821d --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_add_rne.t27 @@ -0,0 +1,66 @@ +module GftAddRne; +// #1764 + GF-T: a spec-first GF-T16 same-sign ADD with ROUND-TO-NEAREST-EVEN, +// bit-exact to the ideal oracle (trinity-fpga/conformance/gft16_ref.py). Companion +// to gft_mul_rne.t27: where the silicon gft_add TRUNCATES the aligned operand +// (`>> d`), this keeps the shifted-out bits as guard/sticky and rounds to nearest +// even -- so a spec-first GF-T adder MORE ACCURATE than the silicon RTL. +// +// GF-T16 packed magnitude: [ offset(7) : mant(9) ], value = (1+mant/512)*2^(offset-40). + +fn on_comb(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + // order so hi has the larger (or equal) exponent offset. + var hi_off : i32 = b_off; + var hi_m : i32 = b_mant; + var lo_off : i32 = a_off; + var lo_m : i32 = a_mant; + if (a_off >= b_off) { + hi_off = a_off; hi_m = a_mant; lo_off = b_off; lo_m = b_mant; + } + var hi_sig : i32 = 512 + hi_m; + var lo_sig : i32 = 512 + lo_m; + // align the smaller significand right by d; d>=11 contributes nothing to the + // round bit (lo_sig < 1024 < 2^(d-1)), so cap d at 11 to keep 1< 11) { d = 11; } + var lo_shift : i32 = lo_sig >> d; + var lo_rem : i32 = lo_sig - (lo_shift << d); // shifted-out (fractional) bits + var sum_int : i32 = hi_sig + lo_shift; // integer significand sum, [512, 2047] + + var out_off : i32 = hi_off; + var mant : i32 = 0; + if (sum_int >= 1024) { + // renormalize by one bit: guard = sum_int&1, sticky = (lo_rem != 0). + var g : i32 = sum_int & 1; + var pre : i32 = sum_int >> 1; // new significand [512, 1023] + mant = pre - 512; + // round-half-to-even at the shifted-out bit g (with sticky lo_rem). + if (g == 1) { + if (lo_rem > 0) { mant = mant + 1; } + else { if ((pre & 1) == 1) { mant = mant + 1; } } + } + out_off = hi_off + 1; + if (out_off >= 80) { out_off = 80; } + } else { + // no renorm: round based on the fractional part lo_rem / 2^d vs 1/2. + mant = sum_int - 512; + var twice : i32 = lo_rem << 1; + var half : i32 = 1 << d; + if (twice > half) { mant = mant + 1; } + else { if (twice == half) { if ((sum_int & 1) == 1) { mant = mant + 1; } } } + } + // mantissa carry after rounding. + if (mant >= 512) { + mant = 0; + out_off = out_off + 1; + if (out_off >= 80) { out_off = 80; } + } + return ((out_off << 9) | mant) as u16; +} + +// 1.0 + 1.0 = 2.0 -> offset 41, mant 0 = 20992. +test add_ones { assert_eq(on_comb(20480, 20480), 20992); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_argmax4.t27 b/apps/website/public/t27/files/specs/ternary/gft_argmax4.t27 new file mode 100644 index 0000000000..ac78a68c25 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_argmax4.t27 @@ -0,0 +1,51 @@ +module GftArgmax4; +// #1764 + GF-T: a classification head over four signed GF-T16 logits. Returns the +// INDEX {0,1,2,3} of the maximum real value (lowest index wins ties, strict >). +// This is the final stage of a GF-T classifier: a GF-T MLP (gft_mlp3) emits a +// vector of logits, argmax picks the predicted class. Comparison is exact on the +// real values -- no arithmetic, just a total order on the GF-T encoding. +// +// A signed GF-T16 value in u32 is [sign(bit16)][offset(7)][mant(9)]; the low 16 +// bits (offset<<9 | mant) are MONOTONIC in the real magnitude, and raw 0 is the +// only zero. So the real order is: negatives < zero < positives; within positives +// larger magnitude bits = larger; within negatives larger magnitude bits = smaller. +// +// Inputs: x0..x3 signed GF-T16 (u32). Output: index u8 in {0,1,2,3}. + +// sign category: zero->1, positive->2, negative->0 (higher category = greater). +fn category(a: u32) -> u8 { + if (a == 0) { return 1; } + if ((a >> 16) == 0) { return 2; } + return 0; +} +// gt(a,b) = 1 iff real value(a) > value(b), else 0. +fn gt(a: u32, b: u32) -> u8 { + var ca : u8 = category(a); + var cb : u8 = category(b); + if (ca != cb) { if (ca > cb) { return 1; } return 0; } + var ma : u32 = a & 65535; + var mb : u32 = b & 65535; + if (ca == 2) { if (ma > mb) { return 1; } return 0; } // both positive + if (ca == 0) { if (ma < mb) { return 1; } return 0; } // both negative + return 0; // both zero -> equal +} + +// argmax over four logits, lowest index on ties. +fn on_comb(x0: u32, x1: u32, x2: u32, x3: u32) -> u8 { + var idx : u8 = 0; + var best : u32 = x0; + if (gt(x1, best) == 1) { idx = 1; best = x1; } + if (gt(x2, best) == 1) { idx = 2; best = x2; } + if (gt(x3, best) == 1) { idx = 3; best = x3; } + return idx; +} + +// +1.0, -1.0, +2.0, 0 -> max is +2.0 at index 2. +test pick_pos { assert_eq(on_comb(20480, 86016, 20992, 0), 2); } +// -1.0, -2.0, 0, +1.0 -> max is +1.0 at index 3. +test pick_last { assert_eq(on_comb(86016, 86528, 0, 20480), 3); } +// -1.0, 0, -4.0, -2.0 -> max is 0 at index 1 (zero beats all negatives). +test zero_wins { assert_eq(on_comb(86016, 0, 87040, 86528), 1); } +// all equal (+1.0) -> lowest index 0. +test tie_low { assert_eq(on_comb(20480, 20480, 20480, 20480), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_axpy.t27 b/apps/website/public/t27/files/specs/ternary/gft_axpy.t27 new file mode 100644 index 0000000000..c84536f03f --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_axpy.t27 @@ -0,0 +1,126 @@ +module GftAxpy; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// Perceptron weight-vector update for ONE class: w' = w +/- eta*x (2 features). +// sign=1 -> boost (w + eta*x, the true class); sign=0 -> suppress (w - eta*x, +// the wrongly-predicted class). Returns (w0'<<32)|w1'. The multi-class routing +// (which class is boosted/suppressed) is control logic in the wrapper; all GF-T +// arithmetic stays here in the spec. +fn on_comb(w0: u32, w1: u32, x0: u32, x1: u32, eta: u32, sign: u32) -> u64 { + var d0 : u32 = smul(eta, x0); + var d1 : u32 = smul(eta, x1); + var w0n : u32 = sadd(w0, d0); + var w1n : u32 = sadd(w1, d1); + if (sign == 0) { + w0n = sadd(w0, neg(d0)); + w1n = sadd(w1, neg(d1)); + } + return ((w0n as u64) << 32) | (w1n as u64); +} +// boost: w=(0.5,0.5), x=(1,1), eta=0.5 -> w'=(1.0,1.0). (placeholder) +test boost { assert_eq(on_comb(19968,19968,20480,20480,19968,1), 87960930242560); } +// suppress: w=(0.5,0.5), x=(1,1), eta=0.5 -> w'=(0,0). +test supp { assert_eq(on_comb(19968,19968,20480,20480,19968,0), 0); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_bitnet_neuron.t27 b/apps/website/public/t27/files/specs/ternary/gft_bitnet_neuron.t27 new file mode 100644 index 0000000000..45c8f9cd9b --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_bitnet_neuron.t27 @@ -0,0 +1,95 @@ +module GftBitnetNeuron; +// #1764 + GF-T: the BitNet x GF-T inference primitive -- a neuron with TERNARY +// weights and REAL-VALUED GF-T16 activations. This fuses the two threads: BitNet +// ternary weights {-1,0,+1} select +a / 0 / -a of each GF-T activation, and the +// four signed contributions are summed in signed GF-T with round-to-nearest-even. +// Bit-exact to the ideal oracle over 30000 random cases (tree-consistent adds). +// +// Weights: trit code u8 {N=0->-1, Z=1->0, P=2->+1}. Activations & result: signed +// GF-T16 [ sign(1):offset(7):mant(9) ] in a u32; magnitude=(1+mant/512)*2^(off-40). + +// --- RNE magnitude same-sign add --- +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +// --- RNE magnitude subtract, hi >= lo, 0 on cancellation --- +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +// --- signed GF-T add with zero-handling (0 = raw 0) --- +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + // different signs: a top-level r==0 guard (NOT nested inside the ma>=mb + // branch -- gen-verilog does not lower that as an early return, so it fell + // through to (sign<<16)|0 = a wrong negative zero on exact cancellation). + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +// weight trit {2:+1, 0:-1, 1:0} selects +a / -a / 0 of the activation. +fn contrib(w: u8, a: u32) -> u32 { + if (w == 2) { return a; } + if (a == 0) { return 0; } + if (w == 0) { return a ^ 65536; } // negate = flip the sign bit + return 0; // w == 1 (Z) -> 0 +} + +// The neuron: sum_i weight_i * activation_i (4 taps), signed GF-T, RNE. +fn on_comb(w1: u8, a1: u32, w2: u8, a2: u32, w3: u8, a3: u32, w4: u8, a4: u32) -> u32 { + return sadd(sadd(contrib(w1, a1), contrib(w2, a2)), + sadd(contrib(w3, a3), contrib(w4, a4))); +} + +// weights +1,+1,-1,-1 on activations 1.0,1.0,1.0,1.0 -> 1+1-1-1 = 0. +test cancel { assert_eq(on_comb(2, 20480, 2, 20480, 0, 20480, 0, 20480), 0); } +// weights +1,0,0,0 on 1.0 -> +1.0 = 20480. +test single { assert_eq(on_comb(2, 20480, 1, 20480, 1, 20480, 1, 20480), 20480); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_classifier4.t27 b/apps/website/public/t27/files/specs/ternary/gft_classifier4.t27 new file mode 100644 index 0000000000..4d5eb48d72 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_classifier4.t27 @@ -0,0 +1,145 @@ +module GftClassifier4; +// #1764 + GF-T: the CAPSTONE end-to-end GF-T classifier -- the whole stack in one +// module. Four GF-T16 activations -> hidden layer (2 BitNet neurons, sign->trit) +// -> re-embed {N->-1.0, Z->0, P->+1.0} -> output layer of 4 LOGIT-neurons (signed +// GF-T sum, NO activation -> a raw GF-T logit per class) -> argmax over the 4 +// logits -> the predicted class index {0,1,2,3}. Combines gft_mlp3 (deep BitNet x +// GF-T inference) with gft_argmax4 (the classification head): activations -> MLP +// -> real-valued GF-T logits -> class. Bit-exact to the ideal oracle over 400 +// vectors (tests/gft_classifier4_vectors.txt). +// +// Weights: trit u8 {N=0,Z=1,P=2}. Activations: signed GF-T16 in u32. +// Output: class index u8 in {0,1,2,3}. + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn contrib(w: u8, a: u32) -> u32 { + if (w == 2) { return a; } + if (a == 0) { return 0; } + if (w == 0) { return a ^ 65536; } + return 0; +} +fn activate(s: u32) -> u8 { + if (s == 0) { return 1; } + if ((s >> 16) == 1) { return 0; } + return 2; +} +fn trit2gft(t: u8) -> u32 { + if (t == 2) { return 20480; } + if (t == 0) { return 86016; } + return 0; +} +// hidden BitNet neuron: sign(sum of 4 taps) -> trit. +fn neuron4(w0: u8, a0: u32, w1: u8, a1: u32, w2: u8, a2: u32, w3: u8, a3: u32) -> u8 { + var acc : u32 = sadd(sadd(contrib(w0, a0), contrib(w1, a1)), + sadd(contrib(w2, a2), contrib(w3, a3))); + return activate(acc); +} +// output LOGIT neuron: raw signed GF-T sum of 2 taps (NO activation). +fn logit2(w0: u8, a0: u32, w1: u8, a1: u32) -> u32 { + return sadd(contrib(w0, a0), contrib(w1, a1)); +} +// sign category for the argmax total order: zero->1, positive->2, negative->0. +fn category(a: u32) -> u8 { + if (a == 0) { return 1; } + if ((a >> 16) == 0) { return 2; } + return 0; +} +fn gt(a: u32, b: u32) -> u8 { + var ca : u8 = category(a); + var cb : u8 = category(b); + if (ca != cb) { if (ca > cb) { return 1; } return 0; } + var ma : u32 = a & 65535; + var mb : u32 = b & 65535; + if (ca == 2) { if (ma > mb) { return 1; } return 0; } + if (ca == 0) { if (ma < mb) { return 1; } return 0; } + return 0; +} + +// The whole classifier: 4 acts -> 2 hidden trits -> 4 GF-T logits -> argmax. +fn on_comb(wh0_0: u8, wh0_1: u8, wh0_2: u8, wh0_3: u8, + wh1_0: u8, wh1_1: u8, wh1_2: u8, wh1_3: u8, + wo0_0: u8, wo0_1: u8, wo1_0: u8, wo1_1: u8, + wo2_0: u8, wo2_1: u8, wo3_0: u8, wo3_1: u8, + a0: u32, a1: u32, a2: u32, a3: u32) -> u8 { + // hidden layer -> 2 re-embedded GF-T activations. + var h0 : u32 = trit2gft(neuron4(wh0_0, a0, wh0_1, a1, wh0_2, a2, wh0_3, a3)); + var h1 : u32 = trit2gft(neuron4(wh1_0, a0, wh1_1, a1, wh1_2, a2, wh1_3, a3)); + // output layer -> 4 raw GF-T logits. + var l0 : u32 = logit2(wo0_0, h0, wo0_1, h1); + var l1 : u32 = logit2(wo1_0, h0, wo1_1, h1); + var l2 : u32 = logit2(wo2_0, h0, wo2_1, h1); + var l3 : u32 = logit2(wo3_0, h0, wo3_1, h1); + // argmax over (l0..l3), lowest index on ties. + var idx : u8 = 0; var best : u32 = l0; + if (gt(l1, best) == 1) { idx = 1; best = l1; } + if (gt(l2, best) == 1) { idx = 2; best = l2; } + if (gt(l3, best) == 1) { idx = 3; best = l3; } + return idx; +} + +// acts +1.0 x4; hidden row0 all +1 -> h0=P(+1.0), row1 all -1 -> h1=N(-1.0). +// logits over (h0=+1.0,h1=-1.0): c0 w=+1,+1 -> 0 ; c1 w=+1,-1 -> +2 ; c2 w=-1,+1 +// -> -2 ; c3 w=Z,Z -> 0. argmax = index 1. +test hand { assert_eq(on_comb(2,2,2,2, 0,0,0,0, 2,2, 2,0, 0,2, 1,1, + 20480,20480,20480,20480), 1); } +// all hidden weights Z -> both hidden Z -> re-embed 0 -> all logits 0 -> tie -> +// lowest index 0. +test all_zero { assert_eq(on_comb(1,1,1,1, 1,1,1,1, 2,2, 2,2, 2,2, 2,2, + 20480,20480,20480,20480), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_classify.t27 b/apps/website/public/t27/files/specs/ternary/gft_classify.t27 new file mode 100644 index 0000000000..17296c86d9 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_classify.t27 @@ -0,0 +1,119 @@ +module GftClassify; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// Binary linear classifier INFERENCE: class = 1 iff z = w0*x0 + w1*x1 > 0, else 0. +// The deployment half of the on-chip trainer (gft_logistic): with weights learned +// and baked in, this pure-inference core classifies without any training. +fn on_comb(w0: u32, w1: u32, x0: u32, x1: u32) -> u8 { + var z : u32 = sadd(smul(w0, x0), smul(w1, x1)); + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return 1; +} +// trained W*=(2.203,0.560)=(21044,20030); x=(1.0,0.25) -> z>0 -> class 1. +test pos { assert_eq(on_comb(21044, 20030, 20480, 19456), 1); } +// x=(-1.0,-0.25) -> z<0 -> class 0. +test neg { assert_eq(on_comb(21044, 20030, 86016, 85504), 0); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_classify3.t27 b/apps/website/public/t27/files/specs/ternary/gft_classify3.t27 new file mode 100644 index 0000000000..d86bbd67da --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_classify3.t27 @@ -0,0 +1,139 @@ +module GftClassify3; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// GF-T sign-aware comparison (from the argmax stack). +fn category(a: u32) -> u8 { + if (a == 0) { return 1; } + if ((a >> 16) == 0) { return 2; } + return 0; +} +fn gt(a: u32, b: u32) -> u8 { + var ca : u8 = category(a); + var cb : u8 = category(b); + if (ca != cb) { if (ca > cb) { return 1; } return 0; } + var ma : u32 = a & 65535; + var mb : u32 = b & 65535; + if (ca == 2) { if (ma > mb) { return 1; } return 0; } + if (ca == 0) { if (ma < mb) { return 1; } return 0; } + return 0; +} +// 3-class linear classifier INFERENCE: class = argmax_c (w_c0*x0 + w_c1*x1). +// Deployment core for a multi-class model (weights trained off-core, baked in). +fn on_comb(w00: u32, w01: u32, w10: u32, w11: u32, w20: u32, w21: u32, + x0: u32, x1: u32) -> u8 { + var l0 : u32 = sadd(smul(w00, x0), smul(w01, x1)); + var l1 : u32 = sadd(smul(w10, x0), smul(w11, x1)); + var l2 : u32 = sadd(smul(w20, x0), smul(w21, x1)); + var idx : u8 = 0; + var best : u32 = l0; + if (gt(l1, best) == 1) { idx = 1; best = l1; } + if (gt(l2, best) == 1) { idx = 2; best = l2; } + return idx; +} +// prototypes: c0=(1,0), c1=(0,1), c2=(-1,-1). pt(2,0)->c0, pt(0,2)->c1, pt(-1,-1)->c2. +test c0 { assert_eq(on_comb(20480,0, 0,20480, 86016,86016, 20992,0), 0); } +test c1 { assert_eq(on_comb(20480,0, 0,20480, 86016,86016, 0,20992), 1); } +test c2 { assert_eq(on_comb(20480,0, 0,20480, 86016,86016, 86016,86016), 2); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_dot2.t27 b/apps/website/public/t27/files/specs/ternary/gft_dot2.t27 new file mode 100644 index 0000000000..f527d449b1 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_dot2.t27 @@ -0,0 +1,75 @@ +module GftDot2; +// #1764 + GF-T: a SPEC-FIRST GF-T16 2-term dot product (MAC), y = a1*b1 + a2*b2. +// +// GF-T16 is the ternary-native GoldenFloat format now proven bit-exact ON SILICON +// (AX7203, gft_dot2 3/3). Its MAC is the kernel of every matmul / inference layer. +// The hand-written trinity-fpga/build/gft_dot2/*.v note that `t27c gen-verilog` +// could not emit this directly because it interleaved `reg` decls with statements +// (illegal Verilog) -- that backend bug is FIXED (#1741 hoists fn-local decls), so +// this is the spec-first realization of the SAME arithmetic, bit-exact to the +// silicon-proven RTL. +// +// GF-T16 packed magnitude: [ offset(7) : mant(9) ], value = (1 + mant/512) * +// 2^(offset-40). BIAS=40, OFFSET_MAX=80, MANT_ONE=512 (=1<<9), SIG_BITS=10. +// All intermediates are non-negative small integers, so i32 arithmetic (signed +// shifts/compares/multiply on positive values) is bit-identical to the unsigned +// hardware and keeps the typechecker's literal typing happy. + +// GF-T ladder multiply (magnitude): sign-free, balanced-ternary exponent add. +fn gft_mul(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + // full-precision significand product (1+M/512) scaled by 512^2 + var prod : i32 = (512 + a_mant) * (512 + b_mant); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } // 2*512*512 renorm boundary + var sum : i32 = a_off + b_off + carry; + var out_off : i32 = 0; + if (sum >= 40) { + var result : i32 = sum - 40; + if (result >= 80) { out_off = 80; } else { out_off = result; } + } + // renormalize the mantissa by the carry (divisors are powers of two -> shifts) + var out_mant : i32 = (prod >> 9) - 512; + if (carry == 1) { out_mant = (prod >> 10) - 512; } + return ((out_off << 9) | out_mant) as u16; +} + +// GF-T ladder add (same-sign): align the smaller operand, add, renormalize by one carry. +fn gft_add(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var hi_off : i32 = b_off; + var hi_m : i32 = b_mant; + var lo_off : i32 = a_off; + var lo_m : i32 = a_mant; + if (a_off >= b_off) { + hi_off = a_off; hi_m = a_mant; lo_off = b_off; lo_m = b_mant; + } + var d : i32 = hi_off - lo_off; + var sb : i32 = 0; + if (d < 10) { sb = (512 + lo_m) >> d; } // align smaller significand right + var sum : i32 = (512 + hi_m) + sb; + var out_off : i32 = hi_off; + var out_mant : i32 = sum - 512; + if (sum >= 1024) { // significand carry -> exp += 1 + var e : i32 = hi_off + 1; + if (e >= 80) { out_off = 80; } else { out_off = e; } + out_mant = (sum >> 1) - 512; + } + return ((out_off << 9) | out_mant) as u16; +} + +// The MAC: y = a1*b1 + a2*b2, the multiply-accumulate at the heart of inference. +fn on_comb(a1: u16, b1: u16, a2: u16, b2: u16) -> u16 { + return gft_add(gft_mul(a1, b1), gft_mul(a2, b2)); +} + +// 1.0 = (1 + 0/512) * 2^0 -> offset 40, mant 0 -> 40<<9 = 20480 = 0x5000. +test one_times_one_mul { assert_eq(gft_mul(20480, 20480), 20480); } // 1*1 = 1 +test dot_one { assert_eq(on_comb(20480, 20480, 20480, 20480), 20992); } // 1*1+1*1 = 2 (0x5200) +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_dot2_rne.t27 b/apps/website/public/t27/files/specs/ternary/gft_dot2_rne.t27 new file mode 100644 index 0000000000..6637c05ce2 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_dot2_rne.t27 @@ -0,0 +1,84 @@ +module GftDot2Rne; +// #1764 + GF-T: a spec-first GF-T16 2-term MAC (y = a1*b1 + a2*b2) with full +// ROUND-TO-NEAREST-EVEN -- bit-exact to the IDEAL oracle +// gft16_add(gft16_mul(a1,b1), gft16_mul(a2,b2)) (trinity-fpga/conformance/ +// gft16_ref.py). This is the accurate counterpart of gft_dot2.t27, which matches +// the TRUNCATING silicon (biased ~1 ULP low). Composes gft_mul_rne + gft_add_rne. +// +// GF-T16 packed magnitude: [ offset(7) : mant(9) ], value = (1+mant/512)*2^(offset-40). + +// round-to-nearest-even GF-T multiply (matches gft_mul_rne.t27). +fn gmul(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var prod : i32 = (512 + a_mant) * (512 + b_mant); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; + var r : i32 = prod & 511; + var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sum : i32 = a_off + b_off + carry; + var out_off : i32 = 0; + if (sum >= 40) { + var result : i32 = sum - 40; + if (result >= 80) { out_off = 80; } else { out_off = result; } + } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return ((out_off << 9) | mant) as u16; +} + +// round-to-nearest-even GF-T same-sign add (matches gft_add_rne.t27). +fn gadd(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var hi_off : i32 = b_off; + var hi_m : i32 = b_mant; + var lo_off : i32 = a_off; + var lo_m : i32 = a_mant; + if (a_off >= b_off) { hi_off = a_off; hi_m = a_mant; lo_off = b_off; lo_m = b_mant; } + var hi_sig : i32 = 512 + hi_m; + var lo_sig : i32 = 512 + lo_m; + var d : i32 = hi_off - lo_off; + if (d > 11) { d = 11; } + var lo_shift : i32 = lo_sig >> d; + var lo_rem : i32 = lo_sig - (lo_shift << d); + var sum_int : i32 = hi_sig + lo_shift; + var out_off : i32 = hi_off; + var mant : i32 = 0; + if (sum_int >= 1024) { + var g : i32 = sum_int & 1; + var pre : i32 = sum_int >> 1; + mant = pre - 512; + if (g == 1) { + if (lo_rem > 0) { mant = mant + 1; } + else { if ((pre & 1) == 1) { mant = mant + 1; } } + } + out_off = hi_off + 1; + if (out_off >= 80) { out_off = 80; } + } else { + mant = sum_int - 512; + var twice : i32 = lo_rem << 1; + var half : i32 = 1 << d; + if (twice > half) { mant = mant + 1; } + else { if (twice == half) { if ((sum_int & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return ((out_off << 9) | mant) as u16; +} + +// The accurate MAC: y = a1*b1 + a2*b2, all round-to-nearest-even. +fn on_comb(a1: u16, b1: u16, a2: u16, b2: u16) -> u16 { + return gadd(gmul(a1, b1), gmul(a2, b2)); +} + +// 1*1 + 1*1 = 2.0 -> offset 41 = 20992. +test dot_ones { assert_eq(on_comb(20480, 20480, 20480, 20480), 20992); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_dot4.t27 b/apps/website/public/t27/files/specs/ternary/gft_dot4.t27 new file mode 100644 index 0000000000..17bf1f18a2 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_dot4.t27 @@ -0,0 +1,73 @@ +module GftDot4; +// #1764 + GF-T: a spec-first GF-T16 4-term dot product (MAC), +// y = a1*b1 + a2*b2 + a3*b3 + a4*b4 +// the matmul / attention tile primitive, scaling the silicon-proven 2-term GF-T +// MAC (gft_dot2, AX7203 3/3) to inference-relevant vector lengths. +// +// Because GF-T (float) addition is NOT associative, the accumulation ORDER is +// part of the contract: a balanced reduction tree +// ((a1b1 + a2b2) + (a3b3 + a4b4)) +// so the result is well-defined and bit-exact to the same tree built from the +// silicon-proven gft_dot2 + gft_add. gft_mul / gft_add are the same magnitude +// primitives as gft_dot2.t27 (t27 has no cross-module import yet -- #1773). +// +// GF-T16 packed magnitude: [ offset(7) : mant(9) ], value = (1+mant/512)*2^(offset-40). + +fn gft_mul(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var prod : i32 = (512 + a_mant) * (512 + b_mant); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } + var sum : i32 = a_off + b_off + carry; + var out_off : i32 = 0; + if (sum >= 40) { + var result : i32 = sum - 40; + if (result >= 80) { out_off = 80; } else { out_off = result; } + } + var out_mant : i32 = (prod >> 9) - 512; + if (carry == 1) { out_mant = (prod >> 10) - 512; } + return ((out_off << 9) | out_mant) as u16; +} + +fn gft_add(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var hi_off : i32 = b_off; + var hi_m : i32 = b_mant; + var lo_off : i32 = a_off; + var lo_m : i32 = a_mant; + if (a_off >= b_off) { + hi_off = a_off; hi_m = a_mant; lo_off = b_off; lo_m = b_mant; + } + var d : i32 = hi_off - lo_off; + var sb : i32 = 0; + if (d < 10) { sb = (512 + lo_m) >> d; } + var sum : i32 = (512 + hi_m) + sb; + var out_off : i32 = hi_off; + var out_mant : i32 = sum - 512; + if (sum >= 1024) { + var e : i32 = hi_off + 1; + if (e >= 80) { out_off = 80; } else { out_off = e; } + out_mant = (sum >> 1) - 512; + } + return ((out_off << 9) | out_mant) as u16; +} + +// 2-term partial sum (one MAC), the same order gft_dot2 uses. +fn dot2(a1: u16, b1: u16, a2: u16, b2: u16) -> u16 { + return gft_add(gft_mul(a1, b1), gft_mul(a2, b2)); +} + +// The 4-term MAC: balanced tree ((a1b1+a2b2) + (a3b3+a4b4)). +fn on_comb(a1: u16, b1: u16, a2: u16, b2: u16, a3: u16, b3: u16, a4: u16, b4: u16) -> u16 { + return gft_add(dot2(a1, b1, a2, b2), dot2(a3, b3, a4, b4)); +} + +// 1.0 = offset 40, mant 0 = 20480. 1*1 four times summed = 4.0 = offset 42 = 21504. +test dot4_ones { assert_eq(on_comb(20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480), 21504); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_dot4_rne.t27 b/apps/website/public/t27/files/specs/ternary/gft_dot4_rne.t27 new file mode 100644 index 0000000000..c8d87d0593 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_dot4_rne.t27 @@ -0,0 +1,72 @@ +module GftDot4Rne; +// #1764 + GF-T: a spec-first GF-T16 4-term MAC with full ROUND-TO-NEAREST-EVEN, +// bit-exact to the ideal oracle. The accurate matmul/attention tile: extends the +// oracle-accurate 2-term MAC (gft_dot2_rne) to length 4 via a balanced reduction +// tree ((a1b1+a2b2)+(a3b3+a4b4)). More accurate than the truncating-silicon +// gft_dot4 (biased ~1 ULP low). Magnitude GF-T16: [offset(7):mant(9)]. + +fn gmul(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var prod : i32 = (512 + a_mant) * (512 + b_mant); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; + var r : i32 = prod & 511; + var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sum : i32 = a_off + b_off + carry; + var out_off : i32 = 0; + if (sum >= 40) { var result : i32 = sum - 40; if (result >= 80) { out_off = 80; } else { out_off = result; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return ((out_off << 9) | mant) as u16; +} + +fn gadd(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var hi_off : i32 = b_off; var hi_m : i32 = b_mant; var lo_off : i32 = a_off; var lo_m : i32 = a_mant; + if (a_off >= b_off) { hi_off = a_off; hi_m = a_mant; lo_off = b_off; lo_m = b_mant; } + var hi_sig : i32 = 512 + hi_m; + var lo_sig : i32 = 512 + lo_m; + var d : i32 = hi_off - lo_off; + if (d > 11) { d = 11; } + var lo_shift : i32 = lo_sig >> d; + var lo_rem : i32 = lo_sig - (lo_shift << d); + var sum_int : i32 = hi_sig + lo_shift; + var out_off : i32 = hi_off; + var mant : i32 = 0; + if (sum_int >= 1024) { + var g : i32 = sum_int & 1; + var pre : i32 = sum_int >> 1; + mant = pre - 512; + if (g == 1) { if (lo_rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + out_off = hi_off + 1; if (out_off >= 80) { out_off = 80; } + } else { + mant = sum_int - 512; + var twice : i32 = lo_rem << 1; + var half : i32 = 1 << d; + if (twice > half) { mant = mant + 1; } + else { if (twice == half) { if ((sum_int & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return ((out_off << 9) | mant) as u16; +} + +fn dot2(a1: u16, b1: u16, a2: u16, b2: u16) -> u16 { + return gadd(gmul(a1, b1), gmul(a2, b2)); +} +fn on_comb(a1: u16, b1: u16, a2: u16, b2: u16, a3: u16, b3: u16, a4: u16, b4: u16) -> u16 { + return gadd(dot2(a1, b1, a2, b2), dot2(a3, b3, a4, b4)); +} + +// 1*1 four times = 4.0 -> offset 42 = 21504. +test dot4_ones { assert_eq(on_comb(20480,20480,20480,20480,20480,20480,20480,20480), 21504); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_dot8.t27 b/apps/website/public/t27/files/specs/ternary/gft_dot8.t27 new file mode 100644 index 0000000000..99be5e9f94 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_dot8.t27 @@ -0,0 +1,76 @@ +module GftDot8; +// #1764 + GF-T: a spec-first GF-T16 8-term dot product (MAC), +// y = sum_{i=1..8} a_i * b_i +// a realistic inference / attention-head tile length, scaling the silicon-proven +// GF-T MAC (gft_dot2, AX7203 3/3) to an 8-element vector via a balanced reduction +// tree (GF-T float add is NOT associative, so the tree is the contract): +// (((a1b1+a2b2)+(a3b3+a4b4)) + ((a5b5+a6b6)+(a7b7+a8b8))) +// bit-exact to the same tree built from the silicon-proven gft_dot2 + gft_add. +// gft_mul / gft_add are the same magnitude primitives as gft_dot2/gft_dot4 (t27 +// has no cross-module import yet -- #1773). +// +// GF-T16 packed magnitude: [ offset(7) : mant(9) ], value = (1+mant/512)*2^(offset-40). + +fn gft_mul(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var prod : i32 = (512 + a_mant) * (512 + b_mant); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } + var sum : i32 = a_off + b_off + carry; + var out_off : i32 = 0; + if (sum >= 40) { + var result : i32 = sum - 40; + if (result >= 80) { out_off = 80; } else { out_off = result; } + } + var out_mant : i32 = (prod >> 9) - 512; + if (carry == 1) { out_mant = (prod >> 10) - 512; } + return ((out_off << 9) | out_mant) as u16; +} + +fn gft_add(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var hi_off : i32 = b_off; + var hi_m : i32 = b_mant; + var lo_off : i32 = a_off; + var lo_m : i32 = a_mant; + if (a_off >= b_off) { + hi_off = a_off; hi_m = a_mant; lo_off = b_off; lo_m = b_mant; + } + var d : i32 = hi_off - lo_off; + var sb : i32 = 0; + if (d < 10) { sb = (512 + lo_m) >> d; } + var sum : i32 = (512 + hi_m) + sb; + var out_off : i32 = hi_off; + var out_mant : i32 = sum - 512; + if (sum >= 1024) { + var e : i32 = hi_off + 1; + if (e >= 80) { out_off = 80; } else { out_off = e; } + out_mant = (sum >> 1) - 512; + } + return ((out_off << 9) | out_mant) as u16; +} + +fn dot2(a1: u16, b1: u16, a2: u16, b2: u16) -> u16 { + return gft_add(gft_mul(a1, b1), gft_mul(a2, b2)); +} +fn dot4(a1: u16, b1: u16, a2: u16, b2: u16, a3: u16, b3: u16, a4: u16, b4: u16) -> u16 { + return gft_add(dot2(a1, b1, a2, b2), dot2(a3, b3, a4, b4)); +} + +// The 8-term MAC: balanced tree over two dot4 halves. +fn on_comb(a1: u16, b1: u16, a2: u16, b2: u16, a3: u16, b3: u16, a4: u16, b4: u16, + a5: u16, b5: u16, a6: u16, b6: u16, a7: u16, b7: u16, a8: u16, b8: u16) -> u16 { + return gft_add(dot4(a1, b1, a2, b2, a3, b3, a4, b4), + dot4(a5, b5, a6, b6, a7, b7, a8, b8)); +} + +// 1.0 = offset 40 = 20480. Eight 1*1 terms summed = 8.0 = offset 43 = 22016. +test dot8_ones { assert_eq(on_comb(20480,20480,20480,20480,20480,20480,20480,20480, + 20480,20480,20480,20480,20480,20480,20480,20480), 22016); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_exp2.t27 b/apps/website/public/t27/files/specs/ternary/gft_exp2.t27 new file mode 100644 index 0000000000..547a2094a9 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_exp2.t27 @@ -0,0 +1,67 @@ +module GftExp2; +// #1764 + GF-T: a GF-T exp2 primitive -- 2^x for a signed GF-T16 input x, result +// a positive GF-T16. This is the missing building block for a GF-T softmax +// (softmax(l) = 2^l / sum 2^l, in base-2). Approach, all integer / hardware-shaped: +// 1. |x| -> Q16.16 fixed-point (positive shifts only -> no signed-shift ambiguity). +// 2. split into integer k = floor(x) and fraction f in [0,1) (sign-aware floor). +// 3. 2^x = 2^k * 2^f. 2^k is an exact GF-T offset (k+40); 2^f-1 gives the mantissa +// via a Q16 quartic with rounded Horner shifts (<=1 ULP vs the exact mantissa). +// 4. clamp/saturate the offset to [1,80]; sign is always + (2^x > 0). +// Accuracy: <=1 ULP vs the true round_to_GFT(2^x) over the logit range (measured in +// the prototype). Bit-exact to the committed integer oracle over the vector file. +// +// Input: x signed GF-T16 (u32). Output: 2^x as a positive GF-T16 (u32). + +// mant(f) = round(512*(2^(f/65536) - 1)), f in [0,65536), via a Q16 quartic with +// rounded Horner shifts. Coefficients fit + local-searched to <=1 ULP. +fn pow2_frac(f: i32) -> i32 { + var p : i32 = 6; + p = (((p * f) + 32768) >> 16) + 29; + p = (((p * f) + 32768) >> 16) + 123; + p = (((p * f) + 32768) >> 16) + 354; + p = ((p * f) + 32768) >> 16; + if (p > 511) { p = 511; } + return p; +} + +fn on_comb(x: u32) -> u32 { + if (x == 0) { return 20480; } // 2^0 = +1.0 + var neg : i32 = 0; + if ((x >> 16) == 1) { neg = 1; } // sign bit set -> x is negative + var off_in : i32 = ((x >> 9) & 127) as i32; + var mant_in : i32 = (x & 511) as i32; + // absurd-magnitude guard (keeps intermediates in i32; |x| >= 2^8 -> sat/underflow). + if (off_in >= 48) { + if (neg == 1) { return 512; } // underflow -> smallest normal (2^-39) + return ((80 << 9) | 511) as u32; // saturate -> max magnitude + } + // |x| in Q16.16 (positive shifts only). + var num : i32 = 512 + mant_in; + var sh : i32 = off_in - 33; + var mq : i32 = num; + if (sh >= 0) { mq = num << sh; } else { mq = num >> (0 - sh); } + var ki : i32 = mq >> 16; + var ff : i32 = mq & 65535; + // sign-aware floor: k = floor(x), f = x - k in [0,1). + var k : i32 = ki; + var f : i32 = ff; + if (neg == 1) { + if (ff == 0) { k = 0 - ki; f = 0; } + else { k = 0 - (ki + 1); f = 65536 - ff; } + } + var mant : i32 = pow2_frac(f); + var off : i32 = k + 40; + if (off < 1) { return 512; } // underflow -> smallest normal + if (off > 80) { return ((80 << 9) | 511) as u32; } + return ((off << 9) | mant) as u32; +} + +// 2^0 = 1.0 (0x5000). +test e0 { assert_eq(on_comb(0), 20480); } +// 2^(+1.0) = 2.0 : x=+1.0=0x5000|... actually x encodes the exponent value 1.0 -> 20480. +test e1 { assert_eq(on_comb(20480), 20992); } // 2.0 = offset41 +// 2^(-1.0) = 0.5 = offset39 (0x4e00). +test em1 { assert_eq(on_comb(86016), 19968); } // 0x4e00 +// 2^(+2.0) = 4.0 = offset42 (0x5400). +test e2 { assert_eq(on_comb(20992), 21504); } // 0x5400 +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_hidden2.t27 b/apps/website/public/t27/files/specs/ternary/gft_hidden2.t27 new file mode 100644 index 0000000000..65c2a89126 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_hidden2.t27 @@ -0,0 +1,141 @@ +module GftHidden2; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// GF-T ReLU: max(0,z) — zero if z is zero or has the sign bit set, else z. +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// ReLU derivative as a GF-T gate: 1.0 (=20480) if z>0, else 0. +fn relu_prime(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return 20480; +} +// One on-chip SGD step of a 2-NEURON HIDDEN LAYER with fixed unit output weights: +// h0=relu(w0*x0), h1=relu(w1*x1), y=h0+h1 ; error e=y-t ; +// per-neuron gated grad dw_j = e*relu'(z_j)*x_j ; update w_j'=w_j-eta*dw_j. +// Each hidden unit has its OWN relu gate -> one can learn while the other is dead. +// Returns (w0'<<32)|w1'. +fn on_comb(w0: u32, w1: u32, x0: u32, x1: u32, t: u32, eta: u32) -> u64 { + var z0 : u32 = smul(w0, x0); + var z1 : u32 = smul(w1, x1); + var y : u32 = sadd(relu(z0), relu(z1)); + var e : u32 = sadd(y, neg(t)); + var d0 : u32 = smul(e, relu_prime(z0)); + var d1 : u32 = smul(e, relu_prime(z1)); + var g0 : u32 = smul(d0, x0); + var g1 : u32 = smul(d1, x1); + var w0n : u32 = sadd(w0, neg(smul(eta, g0))); + var w1n : u32 = sadd(w1, neg(smul(eta, g1))); + return ((w0n as u64) << 32) | (w1n as u64); +} +// both active: w=[.5,.5],x=[1,1],t=1.5 -> z0=z1=.5>0, h0=h1=.5, y=1.0, e=-.5, +// d_j=-.5, g_j=-.5, w'=[.625,.625]. (placeholder 0 -> PROBE prints truth) +test both { assert_eq(on_comb(19968,19968,20480,20480,20736,19456), 86311662800512); } +// neuron1 dead: x1 negative so z1<0 -> h1=0, only w0 learns, w1 frozen. +test onedead { assert_eq(on_comb(19968,19968,20480,86016,20736,19456), 86861418614272); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_layer2.t27 b/apps/website/public/t27/files/specs/ternary/gft_layer2.t27 new file mode 100644 index 0000000000..59554056ed --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_layer2.t27 @@ -0,0 +1,76 @@ +module GftLayer2; +// #1764 + GF-T: a spec-first GF-T16 matmul ROW = 2 neurons over a shared +// activation. The activation vector a=(a1,a2) feeds two neurons, each with its +// own GF-T16 weight vector (w0, w1); every neuron computes a GF-T dot product +// (the silicon-proven MAC), and the two GF-T16 outputs are packed into one +// 32-bit result: neuron 0 in result[15:0], neuron 1 in result[31:16]. +// +// This is a full GF-T inference layer primitive (a 1x2 activation times a 2x2 +// weight matrix -> 2 outputs), all in real-valued GF-T precision, generated from +// spec and bit-exact to the same composition of the silicon-proven gft_dot2. +// gft_mul / gft_add are the magnitude primitives from gft_dot2.t27 (#1773: no +// cross-module import yet). +// +// GF-T16 packed magnitude: [ offset(7) : mant(9) ], value = (1+mant/512)*2^(offset-40). + +fn gft_mul(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var prod : i32 = (512 + a_mant) * (512 + b_mant); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } + var sum : i32 = a_off + b_off + carry; + var out_off : i32 = 0; + if (sum >= 40) { + var result : i32 = sum - 40; + if (result >= 80) { out_off = 80; } else { out_off = result; } + } + var out_mant : i32 = (prod >> 9) - 512; + if (carry == 1) { out_mant = (prod >> 10) - 512; } + return ((out_off << 9) | out_mant) as u16; +} + +fn gft_add(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + var hi_off : i32 = b_off; + var hi_m : i32 = b_mant; + var lo_off : i32 = a_off; + var lo_m : i32 = a_mant; + if (a_off >= b_off) { + hi_off = a_off; hi_m = a_mant; lo_off = b_off; lo_m = b_mant; + } + var d : i32 = hi_off - lo_off; + var sb : i32 = 0; + if (d < 10) { sb = (512 + lo_m) >> d; } + var sum : i32 = (512 + hi_m) + sb; + var out_off : i32 = hi_off; + var out_mant : i32 = sum - 512; + if (sum >= 1024) { + var e : i32 = hi_off + 1; + if (e >= 80) { out_off = 80; } else { out_off = e; } + out_mant = (sum >> 1) - 512; + } + return ((out_off << 9) | out_mant) as u16; +} + +// One neuron = GF-T dot product of a 2-element weight vector and activation. +fn neuron(w1: u16, x1: u16, w2: u16, x2: u16) -> u16 { + return gft_add(gft_mul(w1, x1), gft_mul(w2, x2)); +} + +// The layer: shared activation (a1, a2); neuron 0 uses (w0a, w0b), neuron 1 uses +// (w1a, w1b). Two GF-T16 activations packed into one 32-bit word. +fn on_comb(a1: u16, a2: u16, w0a: u16, w0b: u16, w1a: u16, w1b: u16) -> u32 { + return (neuron(w0a, a1, w0b, a2) as u32) + | ((neuron(w1a, a1, w1b, a2) as u32) << 16); +} + +// activation = (1.0, 1.0) = (20480, 20480); weights all 1.0 -> each neuron = 2.0 +// = 20992. packed = 20992 | (20992 << 16) = 20992 + 20992*65536 = 1375752704. +test layer_ones { assert_eq(on_comb(20480, 20480, 20480, 20480, 20480, 20480), 1375752704); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_layer3.t27 b/apps/website/public/t27/files/specs/ternary/gft_layer3.t27 new file mode 100644 index 0000000000..26e8299aaf --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_layer3.t27 @@ -0,0 +1,105 @@ +module GftLayer3; +// #1764 + GF-T: a spec-first BitNet x GF-T LAYER of 3 neurons. +// Four shared real-valued GF-T16 activations (a0..a3) feed three neurons, each +// with its own ternary weight vector {N=0->-1, Z=1->0, P=2->+1}. Every neuron is +// sign(sum_i w_i * a_i) evaluated in signed GF-T (round-to-nearest-even, zero- +// aware) -> a TRIT {N=0,Z=1,P=2}. The three output trits are packed low->high, +// two bits each: result = n0 | (n1<<2) | (n2<<4). This is one full BitNet layer +// (M inputs -> N trit outputs); it composes with gft_mlp2's inter-layer re-embed. +// Bit-exact to the ideal oracle over 400 vectors (tests/gft_layer3_vectors.txt). +// +// Weights: trit u8 {N=0,Z=1,P=2}. Activations: signed GF-T16 in u32. +// Output: u32 holding three packed trits (6 bits used). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn contrib(w: u8, a: u32) -> u32 { + if (w == 2) { return a; } + if (a == 0) { return 0; } + if (w == 0) { return a ^ 65536; } + return 0; +} +fn activate(s: u32) -> u8 { + if (s == 0) { return 1; } + if ((s >> 16) == 1) { return 0; } + return 2; +} +// one 4-input neuron: sign(w0*a0 + w1*a1 + w2*a2 + w3*a3) -> trit. +fn neuron4(w0: u8, a0: u32, w1: u8, a1: u32, w2: u8, a2: u32, w3: u8, a3: u32) -> u8 { + var acc : u32 = sadd(sadd(contrib(w0, a0), contrib(w1, a1)), + sadd(contrib(w2, a2), contrib(w3, a3))); + return activate(acc); +} + +// The layer: three neurons over the shared (a0..a3), packed trits out. +fn on_comb(w00: u8, w01: u8, w02: u8, w03: u8, + w10: u8, w11: u8, w12: u8, w13: u8, + w20: u8, w21: u8, w22: u8, w23: u8, + a0: u32, a1: u32, a2: u32, a3: u32) -> u32 { + var n0 : u8 = neuron4(w00, a0, w01, a1, w02, a2, w03, a3); + var n1 : u8 = neuron4(w10, a0, w11, a1, w12, a2, w13, a3); + var n2 : u8 = neuron4(w20, a0, w21, a1, w22, a2, w23, a3); + return (n0 as u32) | ((n1 as u32) << 2) | ((n2 as u32) << 4); +} + +// a=+1.0 x4. n0 w=+1,+1,+1,+1 -> +4 -> P(2). n1 w=-1,-1,-1,-1 -> -4 -> N(0). +// n2 w=+1,-1,+1,-1 -> 0 -> Z(1). packed = 2 | (0<<2) | (1<<4) = 18. +test lanes { assert_eq(on_comb(2,2,2,2, 0,0,0,0, 2,0,2,0, 20480,20480,20480,20480), 18); } +// all weights Z -> every neuron sees 0 sum -> Z(1). packed = 1|1<<2|1<<4 = 21. +test all_zero { assert_eq(on_comb(1,1,1,1, 1,1,1,1, 1,1,1,1, 20480,20480,20480,20480), 21); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_layer4.t27 b/apps/website/public/t27/files/specs/ternary/gft_layer4.t27 new file mode 100644 index 0000000000..595a9b102e --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_layer4.t27 @@ -0,0 +1,107 @@ +module GftLayer4; +// #1764 + GF-T: a spec-first BitNet x GF-T LAYER of 4 neurons. +// Four shared real-valued GF-T16 activations (a0..a3) feed four neurons, each +// with its own ternary weight vector {N=0->-1, Z=1->0, P=2->+1}. Every neuron is +// sign(sum_i w_i * a_i) evaluated in signed GF-T (round-to-nearest-even, zero- +// aware) -> a TRIT {N=0,Z=1,P=2}. The three output trits are packed low->high, +// two bits each: result = n0 | (n1<<2) | (n2<<4) | (n3<<6). This is one full BitNet layer +// (M inputs -> N=4 trit outputs); it composes with gft_mlp2's inter-layer re-embed. +// Bit-exact to the ideal oracle over 500 vectors (tests/gft_layer4_vectors.txt). +// +// Weights: trit u8 {N=0,Z=1,P=2}. Activations: signed GF-T16 in u32. +// Output: u32 holding three packed trits (6 bits used). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn contrib(w: u8, a: u32) -> u32 { + if (w == 2) { return a; } + if (a == 0) { return 0; } + if (w == 0) { return a ^ 65536; } + return 0; +} +fn activate(s: u32) -> u8 { + if (s == 0) { return 1; } + if ((s >> 16) == 1) { return 0; } + return 2; +} +// one 4-input neuron: sign(w0*a0 + w1*a1 + w2*a2 + w3*a3) -> trit. +fn neuron4(w0: u8, a0: u32, w1: u8, a1: u32, w2: u8, a2: u32, w3: u8, a3: u32) -> u8 { + var acc : u32 = sadd(sadd(contrib(w0, a0), contrib(w1, a1)), + sadd(contrib(w2, a2), contrib(w3, a3))); + return activate(acc); +} + +// The layer: four neurons over the shared (a0..a3), packed trits out. +fn on_comb(w00: u8, w01: u8, w02: u8, w03: u8, + w10: u8, w11: u8, w12: u8, w13: u8, + w20: u8, w21: u8, w22: u8, w23: u8, + w30: u8, w31: u8, w32: u8, w33: u8, + a0: u32, a1: u32, a2: u32, a3: u32) -> u32 { + var n0 : u8 = neuron4(w00, a0, w01, a1, w02, a2, w03, a3); + var n1 : u8 = neuron4(w10, a0, w11, a1, w12, a2, w13, a3); + var n2 : u8 = neuron4(w20, a0, w21, a1, w22, a2, w23, a3); + var n3 : u8 = neuron4(w30, a0, w31, a1, w32, a2, w33, a3); + return (n0 as u32) | ((n1 as u32) << 2) | ((n2 as u32) << 4) | ((n3 as u32) << 6); +} + +// a=+1.0 x4. n0 +1x4->P(2), n1 -1x4->N(0), n2 +1,-1,+1,-1->Z(1), n3 Zx4->Z(1). +// packed = 2 | (0<<2) | (1<<4) | (1<<6) = 82. +test lanes { assert_eq(on_comb(2,2,2,2, 0,0,0,0, 2,0,2,0, 1,1,1,1, 20480,20480,20480,20480), 82); } +// all weights Z -> every neuron Z(1). packed = 1|1<<2|1<<4|1<<6 = 85. +test all_zero { assert_eq(on_comb(1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 20480,20480,20480,20480), 85); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_log2.t27 b/apps/website/public/t27/files/specs/ternary/gft_log2.t27 new file mode 100644 index 0000000000..b5249538b5 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_log2.t27 @@ -0,0 +1,98 @@ +module GftLog2; +// #1764 + GF-T: a GF-T log2 primitive -- log2(x) for a POSITIVE GF-T16 x, result a +// signed GF-T16. Inverse of gft_exp2; the primitive needed for cross-entropy / NLL +// loss (loss = -log2(p)). log2(x) = (o-40) + log2(1+m/512); the fractional part is +// a Q16 quartic in m, then the integer+fraction real value is normalized +// (fixed->GF-T, flat priority-encoder -> yosys-synthesizable) into a signed GF-T16. +// Accuracy: <=0.008 abs vs true log2 (output-quantization limited). x<=0 saturates. +// +// Input: x positive GF-T16 (u32). Output: log2(x) as signed GF-T16 (u32). + +// arithmetic floor-shift by 9 (the poly has negative coefficients, and the +// generated Verilog `>>` on a signed reg is LOGICAL -> would fill 0 for negatives; +// this reproduces Python's floor(x/512) using only non-negative shifts). +fn asr9(v: i32) -> i32 { + if (v >= 0) { return v >> 9; } + return 0 - (((0 - v) + 511) >> 9); +} +// round(65536 * log2(1+m/512)) for m in [0,511], Q Horner with rounded shifts. +fn log2_frac(m: i32) -> i32 { + var p : i32 = 0 - 5528; + p = asr9(p * m + 256) + 21224; + p = asr9(p * m + 256) + (0 - 44443); + p = asr9(p * m + 256) + 94274; + p = asr9(p * m + 256); + return p; +} + +// encode a positive Q16.16 magnitude `mag` (value = mag/2^16) as a GF-T16 with the +// given sign. Flat left-normalization so the leading 1 lands at bit 30. +fn encode(sign: i32, mag: i32) -> u32 { + if (mag == 0) { return 0; } + var acc : i32 = mag; + var e : i32 = 0; + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + // acc now in [2^30, 2^31): mantissa = round((acc - 2^30) / 2^21), off = 54 - e. + var mant : i32 = ((acc - 1073741824) + 1048576) >> 21; + var off : i32 = 54 - e; + if (mant >= 512) { mant = 0; off = off + 1; } + if (off < 1) { off = 1; mant = 0; } + if (off > 80) { off = 80; mant = 511; } + return ((sign << 16) | (off << 9) | mant) as u32; +} + +fn on_comb(x: u32) -> u32 { + // x <= 0 (sign set or zero) is outside the log2 domain -> saturate very negative. + if (x == 0) { return ((1 << 16) | (80 << 9) | 511) as u32; } + if ((x >> 16) == 1) { return ((1 << 16) | (80 << 9) | 511) as u32; } + var o : i32 = ((x >> 9) & 127) as i32; + var m : i32 = (x & 511) as i32; + var intpart : i32 = o - 40; + var frac : i32 = log2_frac(m); + var val : i32 = (intpart << 16) + frac; // signed Q16.16 of log2(x) + if (val == 0) { return 0; } + if (val < 0) { return encode(1, 0 - val); } + return encode(0, val); +} + +// log2(1.0) = 0. +test l1 { assert_eq(on_comb(20480), 0); } +// log2(2.0) = 1.0 (0x5000). +test l2 { assert_eq(on_comb(20992), 20480); } +// log2(0.5) = -1.0 (0x15000). +test lhalf { assert_eq(on_comb(19968), 86016); } +// log2(4.0) = 2.0 (0x5200). +test l4 { assert_eq(on_comb(21504), 20992); } +// log2(0.25) = -2.0 (0x15200). +test lq { assert_eq(on_comb(19456), 86528); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_logistic.t27 b/apps/website/public/t27/files/specs/ternary/gft_logistic.t27 new file mode 100644 index 0000000000..7d2d47f2a7 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_logistic.t27 @@ -0,0 +1,135 @@ +module GftLogistic; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// Hard sigmoid: p = clamp(0.5 + 0.25*z, 0, 1). Piecewise-linear, no division/exp +// (a runtime reciprocal maps to a $div/CARRY4 that the open P&R flow cannot place), +// so this is synthesizable. 0.5=19968, 0.25=19456, 1.0=20480. +fn hard_sigmoid(z: u32) -> u32 { + var q : u32 = sadd(19968, smul(19456, z)); + if (q == 0) { return 0; } + if (((q >> 16) & 1) == 1) { return 0; } + var off : i32 = ((q >> 9) & 127) as i32; + var mant : i32 = (q & 511) as i32; + if (off > 40) { return 20480; } + if (off == 40) { if (mant > 0) { return 20480; } } + return q; +} +// One on-chip SGD step of a BINARY classifier with a hard-sigmoid link: +// logit z=w0*x0+w1*x1 ; p=hard_sigmoid(z) ; grad dL/dz=p-y (y in {0,1}) ; +// update w_j' = w_j - eta*(p-y)*x_j. Returns (w0'<<32)|w1'. Learns a linear +// decision boundary on-chip; host streams (x0,x1,label). +fn on_comb(w0: u32, w1: u32, x0: u32, x1: u32, y: u32, eta: u32) -> u64 { + var z : u32 = sadd(smul(w0, x0), smul(w1, x1)); + var p : u32 = hard_sigmoid(z); + var g : u32 = sadd(p, neg(y)); + var w0n : u32 = sadd(w0, neg(smul(eta, smul(g, x0)))); + var w1n : u32 = sadd(w1, neg(smul(eta, smul(g, x1)))); + return ((w0n as u64) << 32) | (w1n as u64); +} +// w=[0,0],x=[1,1],y=1,eta=0.5 -> z=0,p=0.5,g=-0.5 -> w'=[+0.25,+0.25] (placeholder). +test learn { assert_eq(on_comb(0,0,20480,20480,20480,19968), 83562883730432); } +// partial-confidence: z=1.5,p=0.875,g=-0.125 -> small positive update. +test partial { assert_eq(on_comb(19968,19968,20736,20736,20480,19968), 86174223847008); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_madd.t27 b/apps/website/public/t27/files/specs/ternary/gft_madd.t27 new file mode 100644 index 0000000000..8ad546e407 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_madd.t27 @@ -0,0 +1,127 @@ +module GftMadd; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// x * 2^-k via exponent shift (power-of-2 scale, no multiplier). +fn scale_q(x: u32, k: i32) -> u32 { + if (x == 0) { return 0; } + var sign : i32 = ((x >> 16) & 1) as i32; + var off : i32 = ((x >> 9) & 127) as i32; + var mant : i32 = (x & 511) as i32; + off = off - k; + if (off < 1) { return 0; } + return ((sign << 16) | (off << 9) | mant) as u32; +} +// Fused weight update: w' = w - (factor * xin) * 2^-k. The single shared update +// datapath for a stored-intermediates backprop (one multiply + exponent-shift eta +// + subtract), reused per weight across frames so the design fits under the ceiling. +// k is the power-of-2 learning-rate exponent (eta = 2^-k). +fn on_comb(w: u32, factor: u32, xin: u32, k: u32) -> u32 { + return sadd(w, neg(scale_q(smul(factor, xin), k as i32))); +} +// w=1.0, factor=g=+0.5, input=1.0, k=1 (eta=0.5) -> 1 - 0.5*1*0.5 = 0.75 (20224). +test upd { assert_eq(on_comb(20480, 19968, 20480, 1), 20224); } +// zero factor -> no change. +test nograd { assert_eq(on_comb(20480, 0, 20480, 1), 20480); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_mlp2.t27 b/apps/website/public/t27/files/specs/ternary/gft_mlp2.t27 new file mode 100644 index 0000000000..84093c3c81 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_mlp2.t27 @@ -0,0 +1,110 @@ +module GftMlp2; +// #1764 + GF-T: a spec-first 2-LAYER BitNet×GF-T MLP -- end-to-end inference. +// Layer 1: two neurons over the shared GF-T16 activation (a1, a2), each with +// its own trit weights -> two hidden TRITS (h1, h2). +// Between: the hidden trits are re-embedded as GF-T activations {N->-1, Z->0, +// P->+1} (the quantized inter-layer activations, BitNet-style). +// Layer 2: one neuron over (h1, h2) with trit weights -> the output TRIT. +// Every neuron is quantize(sign) of a signed GF-T dot product (ternary weight x +// GF-T activation, RNE, zero-aware). Bit-exact to the ideal oracle composition. +// +// Inputs: a1,a2 signed GF-T16 (u32); w11,w12,w21,w22,v1,v2 trits u8 {N=0,Z=1,P=2}. +// Output: trit u8 {N=0, Z=1, P=2}. + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + // different signs: subtract smaller magnitude from larger; a top-level r==0 + // guard (NOT nested inside the ma>=mb branch, which gen-verilog does not lower + // as an early return -> it fell through to (sign<<16)|0 = negative zero). + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn contrib(w: u8, a: u32) -> u32 { + if (w == 2) { return a; } + if (a == 0) { return 0; } + if (w == 0) { return a ^ 65536; } + return 0; +} +fn activate(s: u32) -> u8 { + if (s == 0) { return 1; } + if ((s >> 16) == 1) { return 0; } + return 2; +} +// a 2-input neuron: sign(w1*a1 + w2*a2), trit weights x GF-T activations. +fn neuron2(w1: u8, a1: u32, w2: u8, a2: u32) -> u8 { + return activate(sadd(contrib(w1, a1), contrib(w2, a2))); +} +// re-embed a hidden trit as a GF-T activation: N->-1.0, Z->0, P->+1.0. +fn trit2gft(t: u8) -> u32 { + if (t == 2) { return 20480; } // +1.0 + if (t == 0) { return 86016; } // -1.0 (0x15000) + return 0; // Z -> zero +} + +// The MLP: two hidden neurons, re-embed, one output neuron. +fn on_comb(a1: u32, a2: u32, w11: u8, w12: u8, w21: u8, w22: u8, v1: u8, v2: u8) -> u8 { + var h1 : u8 = neuron2(w11, a1, w12, a2); + var h2 : u8 = neuron2(w21, a1, w22, a2); + var g1 : u32 = trit2gft(h1); + var g2 : u32 = trit2gft(h2); + return neuron2(v1, g1, v2, g2); +} + +// a=+1.0,+1.0 ; layer1 w all +1 -> h1=h2=P ; layer2 v all +1 -> +1+1=+2 -> P(2). +test all_pos { assert_eq(on_comb(20480, 20480, 2,2,2,2, 2,2), 2); } +// a=+1.0,+1.0 ; w1=+1,+1 (h1=P), w2=-1,-1 (h2=N) ; v=+1,-1 -> +1 -(-1) = +2 -> P(2). +test mixed { assert_eq(on_comb(20480, 20480, 2,2,0,0, 2,0), 2); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_mlp3.t27 b/apps/website/public/t27/files/specs/ternary/gft_mlp3.t27 new file mode 100644 index 0000000000..230037dbad --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_mlp3.t27 @@ -0,0 +1,128 @@ +module GftMlp3; +// #1764 + GF-T: a spec-first 3-LAYER BitNet x GF-T MLP (4 -> 3 -> 2 -> 1). +// Layer 1: three neurons over four shared GF-T16 activations (a0..a3) -> 3 trits. +// re-embed each hidden trit as a GF-T activation {N->-1.0, Z->0, P->+1.0}. +// Layer 2: two neurons over the three re-embedded hidden acts -> 2 trits. +// re-embed again. +// Layer 3: one output neuron over the two re-embedded acts -> the output TRIT. +// Every neuron is sign(sum_i w_i * a_i) in signed GF-T (RNE, zero-aware) -> a trit. +// Builds on gft_layer3 (the M->N layer) + gft_mlp2's inter-layer re-embed; this is +// end-to-end DEEP inference. Bit-exact to the ideal oracle over 400 vectors +// (tests/gft_mlp3_vectors.txt). +// +// Weights: trit u8 {N=0,Z=1,P=2}. Activations: signed GF-T16 in u32. +// Output: trit u8 {N=0, Z=1, P=2}. + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn contrib(w: u8, a: u32) -> u32 { + if (w == 2) { return a; } + if (a == 0) { return 0; } + if (w == 0) { return a ^ 65536; } + return 0; +} +fn activate(s: u32) -> u8 { + if (s == 0) { return 1; } + if ((s >> 16) == 1) { return 0; } + return 2; +} +fn trit2gft(t: u8) -> u32 { + if (t == 2) { return 20480; } // +1.0 + if (t == 0) { return 86016; } // -1.0 (0x15000) + return 0; // Z -> zero +} +fn neuron4(w0: u8, a0: u32, w1: u8, a1: u32, w2: u8, a2: u32, w3: u8, a3: u32) -> u8 { + var acc : u32 = sadd(sadd(contrib(w0, a0), contrib(w1, a1)), + sadd(contrib(w2, a2), contrib(w3, a3))); + return activate(acc); +} +fn neuron3(w0: u8, a0: u32, w1: u8, a1: u32, w2: u8, a2: u32) -> u8 { + var acc : u32 = sadd(sadd(contrib(w0, a0), contrib(w1, a1)), contrib(w2, a2)); + return activate(acc); +} +fn neuron2(w0: u8, a0: u32, w1: u8, a1: u32) -> u8 { + return activate(sadd(contrib(w0, a0), contrib(w1, a1))); +} + +// The 3-layer MLP. 20 trit weights, 4 GF-T activations -> output trit. +fn on_comb(w1_00: u8, w1_01: u8, w1_02: u8, w1_03: u8, + w1_10: u8, w1_11: u8, w1_12: u8, w1_13: u8, + w1_20: u8, w1_21: u8, w1_22: u8, w1_23: u8, + w2_00: u8, w2_01: u8, w2_02: u8, + w2_10: u8, w2_11: u8, w2_12: u8, + w3_0: u8, w3_1: u8, + a0: u32, a1: u32, a2: u32, a3: u32) -> u8 { + // layer 1: 3 neurons over (a0..a3) -> 3 hidden trits, re-embedded to GF-T. + var h0 : u32 = trit2gft(neuron4(w1_00, a0, w1_01, a1, w1_02, a2, w1_03, a3)); + var h1 : u32 = trit2gft(neuron4(w1_10, a0, w1_11, a1, w1_12, a2, w1_13, a3)); + var h2 : u32 = trit2gft(neuron4(w1_20, a0, w1_21, a1, w1_22, a2, w1_23, a3)); + // layer 2: 2 neurons over (h0,h1,h2) -> 2 hidden trits, re-embedded. + var g0 : u32 = trit2gft(neuron3(w2_00, h0, w2_01, h1, w2_02, h2)); + var g1 : u32 = trit2gft(neuron3(w2_10, h0, w2_11, h1, w2_12, h2)); + // layer 3: output neuron over (g0,g1). + return neuron2(w3_0, g0, w3_1, g1); +} + +// all +1.0 acts; every weight +1 -> P through all layers -> P(2). +test all_pos { assert_eq(on_comb(2,2,2,2, 2,2,2,2, 2,2,2,2, 2,2,2, 2,2,2, 2,2, + 20480,20480,20480,20480), 2); } +// same but output-neuron weights +1,-1 over two P hidden acts (+1.0,+1.0) -> +// exact cancel -> Z(1). +test cancel_out { assert_eq(on_comb(2,2,2,2, 2,2,2,2, 2,2,2,2, 2,2,2, 2,2,2, 2,0, + 20480,20480,20480,20480), 1); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_mul_rne.t27 b/apps/website/public/t27/files/specs/ternary/gft_mul_rne.t27 new file mode 100644 index 0000000000..27e4c75ba6 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_mul_rne.t27 @@ -0,0 +1,55 @@ +module GftMulRne; +// #1764 + GF-T: a spec-first GF-T16 multiply with ROUND-TO-NEAREST-EVEN, +// bit-exact to the ideal oracle (trinity-fpga/conformance/gft16_ref.py). +// +// FINDING that motivates this: the silicon-proven gft_mul (gft_dot2.t27) TRUNCATES +// the mantissa (`prod >> 9`), so it is biased ~1 ULP low versus the ideal RNE +// GF-T (~37% of products differ by -1 ULP, ~12% by a carry). For deep NN +// inference that truncation is a systematic downward bias. This module rounds the +// mantissa to nearest-even instead, matching the oracle exactly -- a spec-first +// GF-T that is MORE ACCURATE than the current truncating silicon RTL. +// +// GF-T16 packed magnitude: [ offset(7) : mant(9) ], value = (1+mant/512)*2^(offset-40). +// i32 internals (all non-negative small ints) so typecheck literal typing is happy. + +fn on_comb(a: u16, b: u16) -> u16 { + var a_off : i32 = (a >> 9) as i32; + var a_mant : i32 = (a & 511) as i32; + var b_off : i32 = (b >> 9) as i32; + var b_mant : i32 = (b & 511) as i32; + // full-precision significand product, scaled by 512^2. + var prod : i32 = (512 + a_mant) * (512 + b_mant); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } // 2*512*512 renorm boundary + + // quotient q and remainder r of prod / (512 << carry) -- the un-rounded + // significand fraction. no-carry: /512 (>>9); carry: /1024 (>>10). + var q : i32 = prod >> 9; + var r : i32 = prod & 511; + var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + + // round-to-nearest-even: up if r > half, or (r == half and q is odd). + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + + // exponent: add offsets, apply the renorm carry, de-bias, saturate. + var sum : i32 = a_off + b_off + carry; + var out_off : i32 = 0; + if (sum >= 40) { + var result : i32 = sum - 40; + if (result >= 80) { out_off = 80; } else { out_off = result; } + } + // mantissa carry after rounding: mant == 512 -> 0, exponent += 1 (saturate). + if (mant >= 512) { + mant = 0; + out_off = out_off + 1; + if (out_off >= 80) { out_off = 80; } + } + return ((out_off << 9) | mant) as u16; +} + +// 1.0*1.0 = 1.0 -> offset 40, mant 0 = 20480. (RNE and truncation agree here.) +test one { assert_eq(on_comb(20480, 20480), 20480); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_neuron_full.t27 b/apps/website/public/t27/files/specs/ternary/gft_neuron_full.t27 new file mode 100644 index 0000000000..3688789e31 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_neuron_full.t27 @@ -0,0 +1,98 @@ +module GftNeuronFull; +// #1764 + GF-T: a COMPLETE BitNet neuron with GF-T-precision accumulation. +// Ternary weights {-1,0,+1} times real-valued GF-T16 activations, summed in +// signed GF-T (round-to-nearest-even), then a sign activation quantizes the sum +// back to a TRIT output {N,Z,P}. So the neuron is layer-composable: trit weights +// x GF-T activations -> GF-T dot product -> trit activation, feeding the next +// layer. This is the full BitNet-x-GF-T inference unit (weighted sum + nonlinearity). +// +// Weights: trit u8 {N=0->-1, Z=1->0, P=2->+1}. Activations: signed GF-T16 in u32. +// Output: trit u8 {N=0, Z=1, P=2} = sign(sum). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + // different signs: a top-level r==0 guard (NOT nested inside the ma>=mb + // branch -- gen-verilog does not lower that as an early return, so it fell + // through to (sign<<16)|0 = a wrong negative zero on exact cancellation). + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn contrib(w: u8, a: u32) -> u32 { + if (w == 2) { return a; } + if (a == 0) { return 0; } + if (w == 0) { return a ^ 65536; } + return 0; +} +// sign activation: quantize the signed GF-T sum to a trit {N=0, Z=1, P=2}. +fn activate(s: u32) -> u8 { + if (s == 0) { return 1; } // exactly zero -> Z + if ((s >> 16) == 1) { return 0; } // sign bit set -> N + return 2; // positive -> P +} + +// The full neuron: sum_i w_i * a_i in signed GF-T, then sign -> trit. +fn on_comb(w1: u8, a1: u32, w2: u8, a2: u32, w3: u8, a3: u32, w4: u8, a4: u32) -> u8 { + var acc : u32 = sadd(sadd(contrib(w1, a1), contrib(w2, a2)), + sadd(contrib(w3, a3), contrib(w4, a4))); + return activate(acc); +} + +// weights +1,+1,-1,+1 on 1.0s -> 1+1-1+1 = +2 -> P (2). +test pos { assert_eq(on_comb(2,20480, 2,20480, 0,20480, 2,20480), 2); } +// weights +1,-1 on 1.0s (rest 0) -> exact cancel -> Z (1). +test zero { assert_eq(on_comb(2,20480, 0,20480, 1,20480, 1,20480), 1); } +// weights -1,-1,-1,-1 on 1.0s -> -4 -> N (0). +test neg { assert_eq(on_comb(0,20480, 0,20480, 0,20480, 0,20480), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_nll.t27 b/apps/website/public/t27/files/specs/ternary/gft_nll.t27 new file mode 100644 index 0000000000..336495eb48 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_nll.t27 @@ -0,0 +1,102 @@ +module GftNll; +// #1764 + GF-T: GF-T negative-log-likelihood (cross-entropy loss for a one-hot +// label) -- given the softmax probability p of the true class, returns the loss +// -log2(p) as a positive GF-T16. Composes the verified gft_log2 primitive with a +// sign flip. log2(x) = (o-40) + log2(1+m/512); the fractional part is +// a Q16 quartic in m, then the integer+fraction real value is normalized +// (fixed->GF-T, flat priority-encoder -> yosys-synthesizable) into a signed GF-T16. +// Accuracy: <=0.008 abs vs true log2 (output-quantization limited). x<=0 saturates. +// +// Input: x positive GF-T16 (u32). Output: log2(x) as signed GF-T16 (u32). + +// arithmetic floor-shift by 9 (the poly has negative coefficients, and the +// generated Verilog `>>` on a signed reg is LOGICAL -> would fill 0 for negatives; +// this reproduces Python's floor(x/512) using only non-negative shifts). +fn asr9(v: i32) -> i32 { + if (v >= 0) { return v >> 9; } + return 0 - (((0 - v) + 511) >> 9); +} +// round(65536 * log2(1+m/512)) for m in [0,511], Q Horner with rounded shifts. +fn log2_frac(m: i32) -> i32 { + var p : i32 = 0 - 5528; + p = asr9(p * m + 256) + 21224; + p = asr9(p * m + 256) + (0 - 44443); + p = asr9(p * m + 256) + 94274; + p = asr9(p * m + 256); + return p; +} + +// encode a positive Q16.16 magnitude `mag` (value = mag/2^16) as a GF-T16 with the +// given sign. Flat left-normalization so the leading 1 lands at bit 30. +fn encode(sign: i32, mag: i32) -> u32 { + if (mag == 0) { return 0; } + var acc : i32 = mag; + var e : i32 = 0; + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + if (acc < 1073741824) { acc = acc << 1; e = e + 1; } + // acc now in [2^30, 2^31): mantissa = round((acc - 2^30) / 2^21), off = 54 - e. + var mant : i32 = ((acc - 1073741824) + 1048576) >> 21; + var off : i32 = 54 - e; + if (mant >= 512) { mant = 0; off = off + 1; } + if (off < 1) { off = 1; mant = 0; } + if (off > 80) { off = 80; mant = 511; } + return ((sign << 16) | (off << 9) | mant) as u32; +} + +fn log2v(x: u32) -> u32 { + if (x == 0) { return ((1 << 16) | (80 << 9) | 511) as u32; } + if ((x >> 16) == 1) { return ((1 << 16) | (80 << 9) | 511) as u32; } + var o : i32 = ((x >> 9) & 127) as i32; + var m : i32 = (x & 511) as i32; + var intpart : i32 = o - 40; + var frac : i32 = log2_frac(m); + var val : i32 = (intpart << 16) + frac; + if (val == 0) { return 0; } + if (val < 0) { return encode(1, 0 - val); } + return encode(0, val); +} +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} +// cross-entropy loss for one class: -log2(p), p a probability in (0,1]. +fn on_comb(p: u32) -> u32 { + return neg(log2v(p)); +} + +// p = 1.0 -> loss 0 (perfect prediction). +test perfect { assert_eq(on_comb(20480), 0); } +// p = 0.5 -> loss -log2(0.5) = +1.0 (0x5000). +test half { assert_eq(on_comb(19968), 20480); } +// p = 0.25 -> loss 2.0 (0x5200). +test quarter { assert_eq(on_comb(19456), 20992); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_recip.t27 b/apps/website/public/t27/files/specs/ternary/gft_recip.t27 new file mode 100644 index 0000000000..0f4885cbc0 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_recip.t27 @@ -0,0 +1,40 @@ +module GftRecip; +// #1764 + GF-T: a GF-T reciprocal primitive -- 1/x for a signed GF-T16 input, +// result a signed GF-T16 (same sign). The last missing building block for a GF-T +// softmax (softmax = 2^l / sum 2^l; the 1/sum step is this reciprocal). +// +// Closed form (no polynomial, EXACT to GF-T rounding): for magnitude +// (1+m/512)*2^(o-40), the reciprocal magnitude is 1/(1+m/512) * 2^-(o-40) = +// 512/(512+m) * 2^(40-o). Writing 512/(512+m) in [0.5,1] as (1+m'/512)*2^-1 with +// (1+m'/512) = 1024/(512+m) in [1,2]: 512+m' = round(524288/(512+m)), +// off' = 79-o (+ renorm if m' overflows). One rounded integer divide. +// +// Input: x signed GF-T16 (u32). Output: 1/x as signed GF-T16 (u32). + +fn on_comb(x: u32) -> u32 { + if (x == 0) { return ((80 << 9) | 511) as u32; } // 1/0 -> saturate (inf-like) + var s : i32 = 0; + if ((x >> 16) == 1) { s = 1; } + var o : i32 = ((x >> 9) & 127) as i32; + var m : i32 = (x & 511) as i32; + var den : i32 = 512 + m; + // rounded divide: round(524288 / den) = (524288 + den/2) / den. + var mp : i32 = (524288 + (den >> 1)) / den - 512; + var off : i32 = 79 - o; + if (mp >= 512) { mp = mp - 512; off = off + 1; } + if (off < 1) { off = 1; mp = 0; } + if (off > 80) { off = 80; mp = 511; } + return ((s << 16) | (off << 9) | mp) as u32; +} + +// 1/1.0 = 1.0 (0x5000). +test r1 { assert_eq(on_comb(20480), 20480); } +// 1/2.0 = 0.5 (offset39 = 0x4e00 = 19968). +test r2 { assert_eq(on_comb(20992), 19968); } +// 1/0.5 = 2.0 (offset41 = 0x5200 = 20992). +test rhalf { assert_eq(on_comb(19968), 20992); } +// 1/-1.0 = -1.0 (sign preserved, 0x15000 = 86016). +test rneg { assert_eq(on_comb(86016), 86016); } +// 1/4.0 = 0.25 (offset38 = 0x4c00 = 19456). +test r4 { assert_eq(on_comb(21504), 19456); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_relu.t27 b/apps/website/public/t27/files/specs/ternary/gft_relu.t27 new file mode 100644 index 0000000000..bb258e18fd --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_relu.t27 @@ -0,0 +1,24 @@ +module GftRelu; +// #1764 + GF-T: a GF-T ReLU activation -- relu(x) = max(0, x). For a signed GF-T16 +// input, returns x if x > 0 else 0 (raw 0). Unlike the sign/trit quantizer, ReLU +// has an EXACT 0/1 gradient (no straight-through estimate needed), so it enables +// clean multi-layer backprop on GF-T (see tools/gft_deep_demo.py: a 2-layer ReLU +// net solves XOR, which a linear GF-T model cannot). +// +// Input: x signed GF-T16 (u32). Output: max(0,x) as GF-T16 (u32). + +fn on_comb(x: u32) -> u32 { + if (x == 0) { return 0; } + if ((x >> 16) == 1) { return 0; } // negative -> 0 + return x; // positive -> identity +} + +// relu(+1.0) = +1.0 (0x5000). +test pos { assert_eq(on_comb(20480), 20480); } +// relu(-1.0) = 0. +test negz { assert_eq(on_comb(86016), 0); } +// relu(0) = 0. +test zero { assert_eq(on_comb(0), 0); } +// relu(+2.0) = +2.0 (0x5200). +test pos2 { assert_eq(on_comb(20992), 20992); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_sadd.t27 b/apps/website/public/t27/files/specs/ternary/gft_sadd.t27 new file mode 100644 index 0000000000..5d4eae2014 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_sadd.t27 @@ -0,0 +1,112 @@ +module GftSadd; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// Standalone signed GF-T16 add (a+b). The shared adder datapath for a +// microsequenced backprop (see gft_smul). Reused across cycles by the FSM. +fn on_comb(a: u32, b: u32) -> u32 { return sadd(a, b); } +test a1 { assert_eq(on_comb(20480, 20480), 20992); } // 1+1=2 +test a2 { assert_eq(on_comb(20480, 86016), 0); } // 1+(-1)=0 +test a3 { assert_eq(on_comb(19968, 19968), 20480); } // 0.5+0.5=1 diff --git a/apps/website/public/t27/files/specs/ternary/gft_sgd_step.t27 b/apps/website/public/t27/files/specs/ternary/gft_sgd_step.t27 new file mode 100644 index 0000000000..40d62ce5f2 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_sgd_step.t27 @@ -0,0 +1,119 @@ +module GftSgdStep; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// w' = w - eta*g. +fn on_comb(w: u32, g: u32, eta: u32) -> u32 { + var delta : u32 = smul(eta, g); + return sadd(w, neg(delta)); +} + +// w=+1.0, g=+0.5, eta=0.5 -> 1 - 0.25 = 0.75 (offset39,mant256 = 0x4f00 = 20224). +test step { assert_eq(on_comb(20480, 19968, 19968), 20224); } +// g=0 -> weight unchanged. +test nograd { assert_eq(on_comb(20480, 0, 19968), 20480); } +// w=+1.0, g=-1.0, eta=1.0 -> 1 - (1*-1) = 2.0 (offset41 = 0x5200 = 20992). +test ascend { assert_eq(on_comb(20480, 86016, 20480), 20992); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_signed_dot4.t27 b/apps/website/public/t27/files/specs/ternary/gft_signed_dot4.t27 new file mode 100644 index 0000000000..08e2c186f4 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_signed_dot4.t27 @@ -0,0 +1,96 @@ +module GftSignedDot4; +// #1764 + GF-T: a spec-first SIGNED GF-T16 4-term MAC (y = sum_{i=1..4} a_i*b_i), +// round-to-nearest-even, robust to sign cancellation (zero-aware add). The real- +// valued matmul/attention tile with negatives -- the length-4 signed companion of +// gft_signed_mac. Bit-exact to the ideal oracle balanced tree over 3000 vectors. +// +// Signed GF-T16 [ sign(1):offset(7):mant(9) ] in a u32. + +fn magmul(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var prod : i32 = (512 + am) * (512 + bm); var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var s : i32 = ao + bo + carry; var off : i32 = 0; + if (s >= 40) { var rr : i32 = s - 40; if (rr >= 80) { off = 80; } else { off = rr; } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn smul(a: u32, b: u32) -> u32 { + var sa : i32 = (a >> 16) as i32; var sb : i32 = (b >> 16) as i32; + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + return (((sa ^ sb) << 16) | mag) as u32; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + // different signs: a top-level r==0 guard (NOT nested inside the ma>=mb + // branch -- gen-verilog does not lower that as an early return, so it fell + // through to (sign<<16)|0 = a wrong negative zero on exact cancellation). + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn dot2(a1: u32, b1: u32, a2: u32, b2: u32) -> u32 { return sadd(smul(a1, b1), smul(a2, b2)); } +fn on_comb(a1: u32, b1: u32, a2: u32, b2: u32, a3: u32, b3: u32, a4: u32, b4: u32) -> u32 { + return sadd(dot2(a1, b1, a2, b2), dot2(a3, b3, a4, b4)); +} + +// (+1*+1)+(-1*+1)+(+1*+1)+(-1*+1) = 1-1+1-1 = 0. +test cancel { assert_eq(on_comb(20480,20480, 86016,20480, 20480,20480, 86016,20480), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_signed_mac.t27 b/apps/website/public/t27/files/specs/ternary/gft_signed_mac.t27 new file mode 100644 index 0000000000..dc3beb3c66 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_signed_mac.t27 @@ -0,0 +1,132 @@ +module GftSignedMac; +// #1764 + GF-T: a spec-first SIGNED GF-T16 MAC (y = a1*b1 + a2*b2) with +// round-to-nearest-even, bit-exact to the ideal oracle gft16_ref.py (with sign). +// This is the piece real NN inference needs -- negative weights/activations and +// cancellation in the accumulator. +// +// Signed GF-T16: [ sign(1) : offset(7) : mant(9) ] (17 bits, held in a u32), +// magnitude value = (1+mant/512)*2^(offset-40). Signed mul = sign XOR + RNE +// magnitude mul. Signed add = same-sign RNE add, or (different sign) subtract the +// smaller magnitude from the larger: align, subtract with G guard bits, left- +// normalize, round to nearest even; result takes the larger operand's sign, or is +// zero on exact cancellation. +// All intermediates non-negative small ints -> i32 (signed shift/compare/mul on +// positives == unsigned, bit-identical to the oracle). + +// --- RNE magnitude multiply (matches gft_mul_rne) --- +fn magmul(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; + var am : i32 = a & 511; + var bo : i32 = b >> 9; + var bm : i32 = b & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; + if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; + var r : i32 = prod & 511; + var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var s : i32 = ao + bo + carry; + var off : i32 = 0; + if (s >= 40) { var rr : i32 = s - 40; if (rr >= 80) { off = 80; } else { off = rr; } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +// --- RNE magnitude same-sign add (matches gft_add_rne) --- +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; + var am : i32 = a & 511; + var bo : i32 = b >> 9; + var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; + var ls : i32 = 512 + lm; + var d : i32 = ho - lo; + if (d > 11) { d = 11; } + var losh : i32 = ls >> d; + var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; + var off : i32 = ho; + var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; + var pre : i32 = s >> 1; + mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; + var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } + else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +// --- RNE magnitude subtract, hi >= lo. Returns 0 on exact cancellation. G=14 guard bits. --- +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn smul(a: u32, b: u32) -> u32 { + var sa : i32 = (a >> 16) as i32; + var sb : i32 = (b >> 16) as i32; + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + return (((sa ^ sb) << 16) | mag) as u32; +} + +fn sadd(a: u32, b: u32) -> u32 { + var sa : i32 = (a >> 16) as i32; + var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; + var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + // different signs: a top-level r==0 guard (NOT nested inside the ma>=mb + // branch -- gen-verilog does not lower that as an early return, so it fell + // through to (sign<<16)|0 = a wrong negative zero on exact cancellation). + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +// The signed MAC: y = a1*b1 + a2*b2. +fn on_comb(a1: u32, b1: u32, a2: u32, b2: u32) -> u32 { + return sadd(smul(a1, b1), smul(a2, b2)); +} + +// +1.0 = offset 40 mant 0 sign 0 = 20480. -1.0 = sign 1 = 0x15000 = 86016. +// (+1)*(+1) + (-1)*(-1) = 1 + 1 = 2.0 (+) = offset 41 = 20992. +test pp { assert_eq(on_comb(20480, 20480, 86016, 86016), 20992); } +// (+1)*(+1) + (+1)*(-1) = 1 - 1 = 0. +test cancel { assert_eq(on_comb(20480, 20480, 20480, 86016), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_smul.t27 b/apps/website/public/t27/files/specs/ternary/gft_smul.t27 new file mode 100644 index 0000000000..0c01946858 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_smul.t27 @@ -0,0 +1,113 @@ +module GftSmul; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// Standalone signed GF-T16 multiply (a*b). One shared multiply datapath for a +// microsequenced backprop: the FSM feeds operands cycle-by-cycle and reuses this +// one core instead of instantiating many, keeping area under the ceiling. +fn on_comb(a: u32, b: u32) -> u32 { return smul(a, b); } +test m1 { assert_eq(on_comb(20480, 20480), 20480); } // 1*1=1 +test m2 { assert_eq(on_comb(20480, 86016), 86016); } // 1*(-1)=-1 +test m3 { assert_eq(on_comb(20992, 19968), 20480); } // 2*0.5=1 diff --git a/apps/website/public/t27/files/specs/ternary/gft_softmax4.t27 b/apps/website/public/t27/files/specs/ternary/gft_softmax4.t27 new file mode 100644 index 0000000000..558ea1495f --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_softmax4.t27 @@ -0,0 +1,180 @@ +module GftSoftmax4; +// #1764 + GF-T: a spec-first GF-T softmax over four signed GF-T16 logits, base-2, +// numerically stabilized by subtracting the max: +// p_i = 2^(l_i - M) / sum_j 2^(l_j - M), M = max_j l_j. +// Returns p_sel as a positive GF-T16. This closes the GF-T classifier head: it +// composes the already-verified primitives -- max (gt), subtract (sadd+neg), +// exp2 (<=1 ULP), sum (sadd), reciprocal (exact), multiply (RNE). Bit-exact to the +// committed integer oracle over 2000 vectors (tests/gft_softmax4_vectors.txt); +// accuracy vs true float softmax is <=0.0017 abs probability (measured). +// +// Inputs: l0..l3 signed GF-T16 (u32); sel u8 in {0,1,2,3}. Output: p_sel GF-T16. + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} +fn category(a: u32) -> u8 { + if (a == 0) { return 1; } + if ((a >> 16) == 1) { return 0; } + return 2; +} +fn gt(a: u32, b: u32) -> u8 { + var ca : u8 = category(a); + var cb : u8 = category(b); + if (ca != cb) { if (ca > cb) { return 1; } return 0; } + var ma : u32 = a & 65535; + var mb : u32 = b & 65535; + if (ca == 2) { if (ma > mb) { return 1; } return 0; } + if (ca == 0) { if (ma < mb) { return 1; } return 0; } + return 0; +} +fn pow2_frac(f: i32) -> i32 { + var p : i32 = 6; + p = (((p * f) + 32768) >> 16) + 29; + p = (((p * f) + 32768) >> 16) + 123; + p = (((p * f) + 32768) >> 16) + 354; + p = ((p * f) + 32768) >> 16; + if (p > 511) { p = 511; } + return p; +} +fn exp2(x: u32) -> u32 { + if (x == 0) { return 20480; } + var ng : i32 = 0; + if ((x >> 16) == 1) { ng = 1; } + var off_in : i32 = ((x >> 9) & 127) as i32; + var mant_in : i32 = (x & 511) as i32; + if (off_in >= 48) { + if (ng == 1) { return 512; } + return ((80 << 9) | 511) as u32; + } + var num : i32 = 512 + mant_in; + var sh : i32 = off_in - 33; + var mq : i32 = num; + if (sh >= 0) { mq = num << sh; } else { mq = num >> (0 - sh); } + var ki : i32 = mq >> 16; + var ff : i32 = mq & 65535; + var k : i32 = ki; + var f : i32 = ff; + if (ng == 1) { + if (ff == 0) { k = 0 - ki; f = 0; } + else { k = 0 - (ki + 1); f = 65536 - ff; } + } + var mant : i32 = pow2_frac(f); + var off : i32 = k + 40; + if (off < 1) { return 512; } + if (off > 80) { return ((80 << 9) | 511) as u32; } + return ((off << 9) | mant) as u32; +} +fn recip(x: u32) -> u32 { + if (x == 0) { return ((80 << 9) | 511) as u32; } + var s : i32 = 0; + if ((x >> 16) == 1) { s = 1; } + var o : i32 = ((x >> 9) & 127) as i32; + var m : i32 = (x & 511) as i32; + var den : i32 = 512 + m; + var mp : i32 = (524288 + (den >> 1)) / den - 512; + var off : i32 = 79 - o; + if (mp >= 512) { mp = mp - 512; off = off + 1; } + if (off < 1) { off = 1; mp = 0; } + if (off > 80) { off = 80; mp = 511; } + return ((s << 16) | (off << 9) | mp) as u32; +} +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. +fn on_comb(l0: u32, l1: u32, l2: u32, l3: u32, sel: u8) -> u32 { + var mx : u32 = l0; + if (gt(l1, mx) == 1) { mx = l1; } + if (gt(l2, mx) == 1) { mx = l2; } + if (gt(l3, mx) == 1) { mx = l3; } + var e0 : u32 = exp2(sadd(l0, neg(mx))); + var e1 : u32 = exp2(sadd(l1, neg(mx))); + var e2 : u32 = exp2(sadd(l2, neg(mx))); + var e3 : u32 = exp2(sadd(l3, neg(mx))); + var ssum : u32 = sadd(sadd(e0, e1), sadd(e2, e3)); + var rr : u32 = recip(ssum); + var esel : u32 = e0; + if (sel == 1) { esel = e1; } + if (sel == 2) { esel = e2; } + if (sel == 3) { esel = e3; } + return magmul((esel & 65535) as i32, (rr & 65535) as i32) as u32; +} + +// four equal logits -> uniform 0.25 (offset 38 = 0x4c00 = 19456). +test uniform { assert_eq(on_comb(20480, 20480, 20480, 20480, 0), 19456); } +// a dominant logit: l0=+2.0, others +1.0 -> p0 = 4/(4+3*2) = 0.4 (0x4d33 = 19763). +test dom0 { assert_eq(on_comb(20992, 20480, 20480, 20480, 0), 19763); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_softmax_grad4.t27 b/apps/website/public/t27/files/specs/ternary/gft_softmax_grad4.t27 new file mode 100644 index 0000000000..fb9878f20b --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_softmax_grad4.t27 @@ -0,0 +1,181 @@ +module GftSoftmaxGrad4; +// #1764 + GF-T: the softmax + cross-entropy GRADIENT over four signed GF-T16 logits. +// numerically stabilized by subtracting the max: +// p_i = 2^(l_i - M) / sum_j 2^(l_j - M), M = max_j l_j. +// For a one-hot target t, dL/dl_i = p_i - y_i (the classic closed form). Returns +// grad_sel as a signed GF-T16. Composes the verified softmax (max, sadd+neg, +// exp2, recip, RNE mul) then subtracts the one-hot label. Bit-exact to the +// committed oracle over 1600 vectors; grad accuracy <=0.0018 abs vs true p_i-y_i. +// +// Inputs: l0..l3 GF-T16 (u32); t u8 target class; sel u8. Output: grad_sel GF-T16. + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} +fn category(a: u32) -> u8 { + if (a == 0) { return 1; } + if ((a >> 16) == 1) { return 0; } + return 2; +} +fn gt(a: u32, b: u32) -> u8 { + var ca : u8 = category(a); + var cb : u8 = category(b); + if (ca != cb) { if (ca > cb) { return 1; } return 0; } + var ma : u32 = a & 65535; + var mb : u32 = b & 65535; + if (ca == 2) { if (ma > mb) { return 1; } return 0; } + if (ca == 0) { if (ma < mb) { return 1; } return 0; } + return 0; +} +fn pow2_frac(f: i32) -> i32 { + var p : i32 = 6; + p = (((p * f) + 32768) >> 16) + 29; + p = (((p * f) + 32768) >> 16) + 123; + p = (((p * f) + 32768) >> 16) + 354; + p = ((p * f) + 32768) >> 16; + if (p > 511) { p = 511; } + return p; +} +fn exp2(x: u32) -> u32 { + if (x == 0) { return 20480; } + var ng : i32 = 0; + if ((x >> 16) == 1) { ng = 1; } + var off_in : i32 = ((x >> 9) & 127) as i32; + var mant_in : i32 = (x & 511) as i32; + if (off_in >= 48) { + if (ng == 1) { return 512; } + return ((80 << 9) | 511) as u32; + } + var num : i32 = 512 + mant_in; + var sh : i32 = off_in - 33; + var mq : i32 = num; + if (sh >= 0) { mq = num << sh; } else { mq = num >> (0 - sh); } + var ki : i32 = mq >> 16; + var ff : i32 = mq & 65535; + var k : i32 = ki; + var f : i32 = ff; + if (ng == 1) { + if (ff == 0) { k = 0 - ki; f = 0; } + else { k = 0 - (ki + 1); f = 65536 - ff; } + } + var mant : i32 = pow2_frac(f); + var off : i32 = k + 40; + if (off < 1) { return 512; } + if (off > 80) { return ((80 << 9) | 511) as u32; } + return ((off << 9) | mant) as u32; +} +fn recip(x: u32) -> u32 { + if (x == 0) { return ((80 << 9) | 511) as u32; } + var s : i32 = 0; + if ((x >> 16) == 1) { s = 1; } + var o : i32 = ((x >> 9) & 127) as i32; + var m : i32 = (x & 511) as i32; + var den : i32 = 512 + m; + var mp : i32 = (524288 + (den >> 1)) / den - 512; + var off : i32 = 79 - o; + if (mp >= 512) { mp = mp - 512; off = off + 1; } + if (off < 1) { off = 1; mp = 0; } + if (off > 80) { off = 80; mp = 511; } + return ((s << 16) | (off << 9) | mp) as u32; +} +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax+xent gradient: grad_sel = p_sel - [sel==t], p from softmax. +fn on_comb(l0: u32, l1: u32, l2: u32, l3: u32, t: u8, sel: u8) -> u32 { + var mx : u32 = l0; + if (gt(l1, mx) == 1) { mx = l1; } + if (gt(l2, mx) == 1) { mx = l2; } + if (gt(l3, mx) == 1) { mx = l3; } + var e0 : u32 = exp2(sadd(l0, neg(mx))); + var e1 : u32 = exp2(sadd(l1, neg(mx))); + var e2 : u32 = exp2(sadd(l2, neg(mx))); + var e3 : u32 = exp2(sadd(l3, neg(mx))); + var ssum : u32 = sadd(sadd(e0, e1), sadd(e2, e3)); + var rr : u32 = recip(ssum); + var esel : u32 = e0; + if (sel == 1) { esel = e1; } + if (sel == 2) { esel = e2; } + if (sel == 3) { esel = e3; } + var p : u32 = magmul((esel & 65535) as i32, (rr & 65535) as i32) as u32; + // subtract the one-hot label: if this is the target class, grad = p - 1.0. + if (sel == t) { return sadd(p, 86016); } + return p; +} + +// uniform logits, target 0: grad0 = 0.25 - 1 = -0.75 (0x14F00 = 85760); grad1 = 0.25 (0x4c00). +test u_target { assert_eq(on_comb(20480,20480,20480,20480, 0, 0), 85760); } +test u_other { assert_eq(on_comb(20480,20480,20480,20480, 0, 1), 19456); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/gft_train1.t27 b/apps/website/public/t27/files/specs/ternary/gft_train1.t27 new file mode 100644 index 0000000000..b08367dca2 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_train1.t27 @@ -0,0 +1,122 @@ +module GftTrain1; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// One full on-chip SGD step of a 1-weight linear neuron: +// forward y = w*x ; error e = y - t ; gradient g = e*x ; update w' = w - eta*g. +// The whole forward+backward+update runs on the FPGA; the host streams only (x,t). +fn on_comb(w: u32, x: u32, t: u32, eta: u32) -> u32 { + var y : u32 = smul(w, x); + var e : u32 = sadd(y, neg(t)); + var g : u32 = smul(e, x); + var delta : u32 = smul(eta, g); + return sadd(w, neg(delta)); +} +// w=0.5,x=1.0,t=1.0,eta=0.5 -> y=0.5,e=-0.5,g=-0.5,delta=-0.25,w'=0.75 (20224). +test learn { assert_eq(on_comb(19968, 20480, 20480, 19968), 20224); } +// at optimum w=1.0,x=1.0,t=1.0 -> no change (20480). +test optimum { assert_eq(on_comb(20480, 20480, 20480, 19968), 20480); } +// w=1.0,x=1.0,t=2.0,eta=0.5 -> e=-1.0,g=-1.0,delta=-0.5,w'=1.5 (20736). +test ascend { assert_eq(on_comb(20480, 20480, 20992, 19968), 20736); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_train2.t27 b/apps/website/public/t27/files/specs/ternary/gft_train2.t27 new file mode 100644 index 0000000000..aacb25c5fa --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_train2.t27 @@ -0,0 +1,122 @@ +module GftTrain2; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// On-chip training step of a 2-input linear neuron y = w0*x0 + w1*x1. +// forward y ; error e=y-t ; grads g0=e*x0,g1=e*x1 ; updates w_i'=w_i-eta*g_i. +// Returns both updated weights packed: (w0' << 32) | w1'. The whole +// forward+backward+update runs on the FPGA; the host streams only (x0,x1,t). +fn on_comb(w0: u32, w1: u32, x0: u32, x1: u32, t: u32, eta: u32) -> u64 { + var y : u32 = sadd(smul(w0, x0), smul(w1, x1)); + var e : u32 = sadd(y, neg(t)); + var g0 : u32 = smul(e, x0); + var g1 : u32 = smul(e, x1); + var w0n : u32 = sadd(w0, neg(smul(eta, g0))); + var w1n : u32 = sadd(w1, neg(smul(eta, g1))); + return ((w0n as u64) << 32) | (w1n as u64); +} +// w=[.5,.5], x=[1,1], t=1.5, eta=.25 -> y=1.0,e=-.5,g=-.5, w'=[.625,.625]=20096. +// packed = (20096<<32)|20096 = 86311662800512. +test learn { assert_eq(on_comb(19968,19968,20480,20480,20736,19456), 86311662800512); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_train2relu.t27 b/apps/website/public/t27/files/specs/ternary/gft_train2relu.t27 new file mode 100644 index 0000000000..5851b55762 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_train2relu.t27 @@ -0,0 +1,136 @@ +module GftTrain2Relu; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// GF-T ReLU: max(0,z) — zero if z is zero or has the sign bit set, else z. +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// ReLU derivative as a GF-T gate: 1.0 (=20480) if z>0, else 0. +fn relu_prime(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return 20480; +} +// One on-chip SGD step of a NONLINEAR 2-input neuron y = relu(w0*x0 + w1*x1). +// forward z=w0*x0+w1*x1, y=relu(z) ; error e=y-t ; gated d=e*relu'(z) ; +// grads g_i=d*x_i ; updates w_i'=w_i-eta*g_i. Returns (w0'<<32)|w1'. +fn on_comb(w0: u32, w1: u32, x0: u32, x1: u32, t: u32, eta: u32) -> u64 { + var z : u32 = sadd(smul(w0, x0), smul(w1, x1)); + var y : u32 = relu(z); + var e : u32 = sadd(y, neg(t)); + var d : u32 = smul(e, relu_prime(z)); + var g0 : u32 = smul(d, x0); + var g1 : u32 = smul(d, x1); + var w0n : u32 = sadd(w0, neg(smul(eta, g0))); + var w1n : u32 = sadd(w1, neg(smul(eta, g1))); + return ((w0n as u64) << 32) | (w1n as u64); +} +// active (z=1.0>0): w=[.5,.5],x=[1,1],t=1.5,eta=.25 -> like linear -> w'=[.625,.625]. +test active { assert_eq(on_comb(19968,19968,20480,20480,20736,19456), 86311662800512); } +// dead (z=-1.0<0): w=[-.5,-.5],x=[1,1],t=1.5 -> relu'=0 -> no update -> w'=[-.5,-.5]. +test dead { assert_eq(on_comb(85504,85504,20480,20480,20736,19456), 367236883762688); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_xorbp.t27 b/apps/website/public/t27/files/specs/ternary/gft_xorbp.t27 new file mode 100644 index 0000000000..9c634d41fb --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_xorbp.t27 @@ -0,0 +1,150 @@ +module GftXorBp; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// GF-T ReLU: max(0,z) — zero if z is zero or has the sign bit set, else z. +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// ReLU derivative as a GF-T gate: 1.0 (=20480) if z>0, else 0. +fn relu_prime(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return 20480; +} +// FULL 2-layer XOR backprop step. Hidden W (2x2) with fixed biases c=[0,-1], +// output v (2) with fixed b=0. Forward z_j=W_j.x+c_j, h_j=relu(z_j), y=v.h. +// Backprop (MSE): e=y-t; dv_j=e*h_j; dz_j=e*v_j*relu'(z_j); dW_jk=dz_j*x_k. +// Returns the updated weight-PAIR selected by sel (u64): 0 -> (w00',w01'), +// 1 -> (w10',w11'), 2 -> (v0',v1'). Wrapper holds 6 regs, instantiates 3 cores. +fn on_comb(w00: u32, w01: u32, w10: u32, w11: u32, v0: u32, v1: u32, + x0: u32, x1: u32, t: u32, eta: u32, sel: u32) -> u64 { + var z0 : u32 = sadd(sadd(smul(w00, x0), smul(w01, x1)), 0); // c0 = 0 + var z1 : u32 = sadd(sadd(smul(w10, x0), smul(w11, x1)), 86016); // c1 = -1.0 + var h0 : u32 = relu(z0); + var h1 : u32 = relu(z1); + var y : u32 = sadd(smul(v0, h0), smul(v1, h1)); + var e : u32 = sadd(y, neg(t)); + if (sel == 2) { + var v0n : u32 = sadd(v0, neg(smul(eta, smul(e, h0)))); + var v1n : u32 = sadd(v1, neg(smul(eta, smul(e, h1)))); + return ((v0n as u64) << 32) | (v1n as u64); + } + if (sel == 0) { + var dz0 : u32 = smul(smul(e, v0), relu_prime(z0)); + var w00n : u32 = sadd(w00, neg(smul(eta, smul(dz0, x0)))); + var w01n : u32 = sadd(w01, neg(smul(eta, smul(dz0, x1)))); + return ((w00n as u64) << 32) | (w01n as u64); + } + var dz1 : u32 = smul(smul(e, v1), relu_prime(z1)); + var w10n : u32 = sadd(w10, neg(smul(eta, smul(dz1, x0)))); + var w11n : u32 = sadd(w11, neg(smul(eta, smul(dz1, x1)))); + return ((w10n as u64) << 32) | (w11n as u64); +} +// smoke: near-solution W=[[1,1],[1,1]], v=[1,-2]; corner (1,1),t=0. output sel=2. +// forward y = 1*relu(2) + (-2)*relu(1) = 2-2 = 0 = t -> e=0 -> v unchanged (1,-2). +test out_noupdate { assert_eq(on_comb(20480,20480,20480,20480,20480,86528, 20480,20480,0,19456, 2), 87960930308608); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_xorbp2.t27 b/apps/website/public/t27/files/specs/ternary/gft_xorbp2.t27 new file mode 100644 index 0000000000..58d4c8b8f5 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_xorbp2.t27 @@ -0,0 +1,159 @@ +module GftXorBp2; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// GF-T ReLU: max(0,z) — zero if z is zero or has the sign bit set, else z. +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// ReLU derivative as a GF-T gate: 1.0 (=20480) if z>0, else 0. +fn relu_prime(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return 20480; +} +// FULL 2-layer XOR backprop step. Hidden W (2x2) with fixed biases c=[0,-1], +// output v (2) with fixed b=0. Forward z_j=W_j.x+c_j, h_j=relu(z_j), y=v.h. +// Backprop (MSE): e=y-t; dv_j=e*h_j; dz_j=e*v_j*relu'(z_j); dW_jk=dz_j*x_k. +// Returns the updated weight-PAIR selected by sel (u64): 0 -> (w00',w01'), +// 1 -> (w10',w11'), 2 -> (v0',v1'). Wrapper holds 6 regs, instantiates 3 cores. +fn scale_q(x: u32, k: i32) -> u32 { + if (x == 0) { return 0; } + var sign : i32 = ((x >> 16) & 1) as i32; + var off : i32 = ((x >> 9) & 127) as i32; + var mant : i32 = (x & 511) as i32; + off = off - k; + if (off < 1) { return 0; } + return ((sign << 16) | (off << 9) | mant) as u32; +} +fn on_comb(w00: u32, w01: u32, w10: u32, w11: u32, v0: u32, v1: u32, + x0: u32, x1: u32, t: u32, eta: u32, sel: u32) -> u64 { + var z0 : u32 = sadd(sadd(smul(w00, x0), smul(w01, x1)), 0); // c0 = 0 + var z1 : u32 = sadd(sadd(smul(w10, x0), smul(w11, x1)), 86016); // c1 = -1.0 + var h0 : u32 = relu(z0); + var h1 : u32 = relu(z1); + var y : u32 = sadd(smul(v0, h0), smul(v1, h1)); + var e : u32 = sadd(y, neg(t)); + if (sel == 2) { + var v0n : u32 = sadd(v0, neg(scale_q(smul(e, h0), 3))); + var v1n : u32 = sadd(v1, neg(scale_q(smul(e, h1), 3))); + return ((v0n as u64) << 32) | (v1n as u64); + } + if (sel == 0) { + var dz0 : u32 = smul(smul(e, v0), relu_prime(z0)); + var w00n : u32 = sadd(w00, neg(scale_q(smul(dz0, x0), 3))); + var w01n : u32 = sadd(w01, neg(scale_q(smul(dz0, x1), 3))); + return ((w00n as u64) << 32) | (w01n as u64); + } + var dz1 : u32 = smul(smul(e, v1), relu_prime(z1)); + var w10n : u32 = sadd(w10, neg(scale_q(smul(dz1, x0), 3))); + var w11n : u32 = sadd(w11, neg(scale_q(smul(dz1, x1), 3))); + return ((w10n as u64) << 32) | (w11n as u64); +} +// smoke: near-solution W=[[1,1],[1,1]], v=[1,-2]; corner (1,1),t=0. output sel=2. +// forward y = 1*relu(2) + (-2)*relu(1) = 2-2 = 0 = t -> e=0 -> v unchanged (1,-2). +test out_noupdate { assert_eq(on_comb(20480,20480,20480,20480,20480,86528, 20480,20480,0,19456, 2), 87960930308608); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_xornet.t27 b/apps/website/public/t27/files/specs/ternary/gft_xornet.t27 new file mode 100644 index 0000000000..fc5877c8ec --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_xornet.t27 @@ -0,0 +1,136 @@ +module GftXorNet; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// GF-T ReLU: max(0,z) — zero if z is zero or has the sign bit set, else z. +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// ReLU derivative as a GF-T gate: 1.0 (=20480) if z>0, else 0. +fn relu_prime(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return 20480; +} +// 2-layer ReLU network forward pass (the canonical XOR net): +// h = relu(W*x + c) ; y = v.h + b. A single linear model cannot separate XOR; +// the hidden ReLU layer makes it nonlinearly separable. Weights are baked in the +// wrapper (analytic XOR: W=[[1,1],[1,1]], c=[0,-1], v=[1,-2]). Returns y (GF-T16). +fn on_comb(wh00: u32, wh01: u32, bh0: u32, wh10: u32, wh11: u32, bh1: u32, + v0: u32, v1: u32, bo: u32, x0: u32, x1: u32) -> u32 { + var z0 : u32 = sadd(sadd(smul(wh00, x0), smul(wh01, x1)), bh0); + var z1 : u32 = sadd(sadd(smul(wh10, x0), smul(wh11, x1)), bh1); + var h0 : u32 = relu(z0); + var h1 : u32 = relu(z1); + return sadd(sadd(smul(v0, h0), smul(v1, h1)), bo); +} +// analytic XOR weights: W=[[1,1],[1,1]], c=[0,-1], v=[1,-2], b=0. +// (0,0)->0, (1,0)->1.0(20480), (0,1)->1.0, (1,1)->0. +test x00 { assert_eq(on_comb(20480,20480,0, 20480,20480,86016, 20480,86528,0, 0,0), 0); } +test x10 { assert_eq(on_comb(20480,20480,0, 20480,20480,86016, 20480,86528,0, 20480,0), 20480); } +test x01 { assert_eq(on_comb(20480,20480,0, 20480,20480,86016, 20480,86528,0, 0,20480), 20480); } +test x11 { assert_eq(on_comb(20480,20480,0, 20480,20480,86016, 20480,86528,0, 20480,20480), 0); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_xorpercep.t27 b/apps/website/public/t27/files/specs/ternary/gft_xorpercep.t27 new file mode 100644 index 0000000000..ba1af26d06 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_xorpercep.t27 @@ -0,0 +1,130 @@ +module GftXorPercep; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// FULLY on-chip 2-layer XOR trainer: fixed hidden h0=relu(x0+x1), h1=relu(x0+x1-1) +// (computed here on the FPGA), TRAINABLE output with a PERCEPTRON rule (no +// hard-sigmoid -> smaller, fits under the correctness ceiling). pred=1 if z>0 else 0; +// g = pred - y ; v_j' = v_j - eta*g*h_j. Returns (v0'<<32)|v1'. +fn on_comb(v0: u32, v1: u32, x0: u32, x1: u32, y: u32, eta: u32) -> u64 { + var s : u32 = sadd(x0, x1); + var h0 : u32 = relu(s); + var h1 : u32 = relu(sadd(s, neg(20480))); + var z : u32 = sadd(smul(v0, h0), smul(v1, h1)); + var pred : u32 = 20480; + if (z == 0) { pred = 0; } + if (((z >> 16) & 1) == 1) { pred = 0; } + var g : u32 = sadd(pred, neg(y)); + var v0n : u32 = sadd(v0, neg(smul(eta, smul(g, h0)))); + var v1n : u32 = sadd(v1, neg(smul(eta, smul(g, h1)))); + return ((v0n as u64) << 32) | (v1n as u64); +} +// v=(0,0), corner (1,0) y=1: s=1,h0=1,h1=0,z=0,pred=0,g=-1 -> v'=(0.25,0). (placeholder) +test upd { assert_eq(on_comb(0,0,20480,0,20480,19456), 83562883710976); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_xorpercep3.t27 b/apps/website/public/t27/files/specs/ternary/gft_xorpercep3.t27 new file mode 100644 index 0000000000..df29a54072 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_xorpercep3.t27 @@ -0,0 +1,148 @@ +module GftXorPercep3; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// x * 2^-k via a cheap exponent shift (NO multiplier). Used for a power-of-2 +// learning rate (eta = 0.25 = 2^-2), replacing smul(eta, .) -> saves 2 magmuls. +fn scale_q(x: u32, k: i32) -> u32 { + if (x == 0) { return 0; } + var sign : i32 = ((x >> 16) & 1) as i32; + var off : i32 = ((x >> 9) & 127) as i32; + var mant : i32 = (x & 511) as i32; + off = off - k; + if (off < 1) { return 0; } + return ((sign << 16) | (off << 9) | mant) as u32; +} +// g * h where g is EXACTLY {-1, 0, +1} (perceptron error) -> sign/zero mux, NOT a +// multiply. Removes the gradient magmuls. Valid only because g in {-1,0,+1}. +fn signmul(g: u32, h: u32) -> u32 { + if (g == 0) { return 0; } + if (h == 0) { return 0; } + if (((g >> 16) & 1) == 1) { return neg(h); } + return h; +} +// FULLY on-chip 2-layer XOR trainer, DOUBLY shrunk: eta=0.25 via scale_q (2^-2) +// AND g*h via signmul (g in {-1,0,+1}). 6 magmuls -> 2 (only the forward z keeps +// real multiplies). Target: fit under the ~17M correctness ceiling. +fn on_comb(v0: u32, v1: u32, x0: u32, x1: u32, y: u32, eta: u32) -> u64 { + var s : u32 = sadd(x0, x1); + var h0 : u32 = relu(s); + var h1 : u32 = relu(sadd(s, neg(20480))); + var z : u32 = sadd(smul(v0, h0), smul(v1, h1)); + var pred : u32 = 20480; + if (z == 0) { pred = 0; } + if (((z >> 16) & 1) == 1) { pred = 0; } + var g : u32 = sadd(pred, neg(y)); + var v0n : u32 = sadd(v0, neg(scale_q(signmul(g, h0), 2))); + var v1n : u32 = sadd(v1, neg(scale_q(signmul(g, h1), 2))); + return ((v0n as u64) << 32) | (v1n as u64); +} +// same result as xorpercep: v=(0,0),(1,0),y=1 -> (0.25,0). +test upd { assert_eq(on_comb(0,0,20480,0,20480,19456), 83562883710976); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_xorpercep4.t27 b/apps/website/public/t27/files/specs/ternary/gft_xorpercep4.t27 new file mode 100644 index 0000000000..6e816bbbc5 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_xorpercep4.t27 @@ -0,0 +1,148 @@ +module GftXorPercep4; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// x * 2^-k via a cheap exponent shift (NO multiplier). Used for a power-of-2 +// learning rate (eta = 0.25 = 2^-2), replacing smul(eta, .) -> saves 2 magmuls. +fn scale_q(x: u32, k: i32) -> u32 { + if (x == 0) { return 0; } + var sign : i32 = ((x >> 16) & 1) as i32; + var off : i32 = ((x >> 9) & 127) as i32; + var mant : i32 = (x & 511) as i32; + off = off - k; + if (off < 1) { return 0; } + return ((sign << 16) | (off << 9) | mant) as u32; +} +// g * h where g is EXACTLY {-1, 0, +1} (perceptron error) -> sign/zero mux, NOT a +// multiply. Removes the gradient magmuls. Valid only because g in {-1,0,+1}. +fn signmul(g: u32, h: u32) -> u32 { + if (g == 0) { return 0; } + if (h == 0) { return 0; } + if (((g >> 16) & 1) == 1) { return neg(h); } + return h; +} +// FULLY on-chip 2-layer XOR trainer, DOUBLY shrunk: eta=0.25 via scale_q (2^-2) +// AND g*h via signmul (g in {-1,0,+1}). 6 magmuls -> 2 (only the forward z keeps +// real multiplies). Target: fit under the ~17M correctness ceiling. +fn on_comb(v0: u32, v1: u32, x0: u32, x1: u32, y: u32, eta: u32) -> u64 { + var s : u32 = sadd(x0, x1); + var h0 : u32 = relu(s); + var h1 : u32 = relu(sadd(s, neg(20480))); + var z : u32 = sadd(smul(v0, h0), smul(v1, h1)); + var pred : u32 = 20480; + if (z == 0) { pred = 0; } + if (((z >> 16) & 1) == 1) { pred = 0; } + var g : u32 = sadd(pred, neg(y)); + var v0n : u32 = sadd(v0, neg(scale_q(signmul(g, h0), 2))); + var v1n : u32 = sadd(v1, neg(scale_q(signmul(g, h1), 2))); + return ((v0n as u64) << 32) | (v1n as u64); +} +// same result as xorpercep: v=(0,0),(1,0),y=1 -> (0.25,0). +test upd { assert_eq(on_comb(0,0,20480,0,20480,19456), 83562883710976); } diff --git a/apps/website/public/t27/files/specs/ternary/gft_xortrain.t27 b/apps/website/public/t27/files/specs/ternary/gft_xortrain.t27 new file mode 100644 index 0000000000..29d23ef2a9 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/gft_xortrain.t27 @@ -0,0 +1,143 @@ +module GftXorTrain; +// #1764 + GF-T: a GF-T SGD weight update -- w' = w - eta * g, the final brick of an +// on-device training step (forward softmax -> loss -> gradient g -> THIS update). +// eta is the (positive) learning rate; g the gradient (signed); w the weight (signed). +// Composes the verified primitives: signed multiply (smul over the RNE magnitude +// mul) + subtract (sadd + neg). Bit-exact to the integer oracle; accuracy is to +// GF-T16 precision (<=1 ULP; ~0.03 abs at the largest magnitudes). +// +// Inputs: w, g, eta signed GF-T16 (u32). Output: updated weight w' GF-T16 (u32). + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + var cap : i32 = 12; if (off - 1 < cap) { cap = off - 1; } if (cap < 0) { cap = 0; } + var sh : i32 = 0; + if (diff != 0) { + var t : i32 = diff; + if (t < 65536) { if (sh + 8 <= cap) { t = t << 8; sh = sh + 8; } } + if (t < 1048576) { if (sh + 4 <= cap) { t = t << 4; sh = sh + 4; } } + if (t < 4194304) { if (sh + 2 <= cap) { t = t << 2; sh = sh + 2; } } + if (t < 8388608) { if (sh + 1 <= cap) { t = t << 1; sh = sh + 1; } } + } + diff = diff << sh; off = off - sh; + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} + +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} + +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} + +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax: p_sel = 2^(l_sel - M) / sum_i 2^(l_i - M), M = max logit. + +// signed GF-T multiply: sign = xor of signs, magnitude = RNE magnitude mul. +fn smul(a: u32, b: u32) -> u32 { + if (a == 0) { return 0; } + if (b == 0) { return 0; } + var sgn : i32 = ((a >> 16) & 1) as i32; + var sb : i32 = ((b >> 16) & 1) as i32; + if (sgn != sb) { sgn = 1; } else { sgn = 0; } + var mag : i32 = magmul((a & 65535) as i32, (b & 65535) as i32); + if (mag == 0) { return 0; } + return ((sgn << 16) | mag) as u32; +} + +// Hard sigmoid: p = clamp(0.5 + 0.25*z, 0, 1). Piecewise-linear, no division/exp +// (a runtime reciprocal maps to a $div/CARRY4 that the open P&R flow cannot place), +// so this is synthesizable. 0.5=19968, 0.25=19456, 1.0=20480. +fn hard_sigmoid(z: u32) -> u32 { + var q : u32 = sadd(19968, smul(19456, z)); + if (q == 0) { return 0; } + if (((q >> 16) & 1) == 1) { return 0; } + var off : i32 = ((q >> 9) & 127) as i32; + var mant : i32 = (q & 511) as i32; + if (off > 40) { return 20480; } + if (off == 40) { if (mant > 0) { return 20480; } } + return q; +} +// GF-T ReLU (from the training stack): max(0, z). +fn relu(z: u32) -> u32 { + if (z == 0) { return 0; } + if (((z >> 16) & 1) == 1) { return 0; } + return z; +} +// On-chip training step of a 2-LAYER XOR net: a FIXED analytic hidden layer +// h0=relu(x0+x1), h1=relu(x0+x1-1) (features that make XOR linearly separable), +// and a TRAINABLE output layer z=v0*h0+v1*h1 with hard-sigmoid + p-y gradient: +// v_j' = v_j - eta*(p-y)*h_j. The board learns v to solve XOR. Returns (v0'<<32)|v1'. +fn on_comb(v0: u32, v1: u32, x0: u32, x1: u32, y: u32, eta: u32) -> u64 { + var s : u32 = sadd(x0, x1); + var h0 : u32 = relu(s); + var h1 : u32 = relu(sadd(s, neg(20480))); // relu(x0+x1 - 1.0) + var z : u32 = sadd(smul(v0, h0), smul(v1, h1)); + var p : u32 = hard_sigmoid(z); + var g : u32 = sadd(p, neg(y)); + var v0n : u32 = sadd(v0, neg(smul(eta, smul(g, h0)))); + var v1n : u32 = sadd(v1, neg(smul(eta, smul(g, h1)))); + return ((v0n as u64) << 32) | (v1n as u64); +} +// v=(0,0), corner (1,1): h0=relu(2)=2,h1=relu(1)=1, z=0, p=0.5, y=0(XOR false), +// g=0.5, v'=(0-0.25*0.5*2, 0-0.25*0.5*1)=(-0.25,-0.125). (placeholder) +test upd { assert_eq(on_comb(0,0,20480,20480,0,19456), 365037860506112); } diff --git a/apps/website/public/t27/files/specs/ternary/hybrid_bigint.t27 b/apps/website/public/t27/files/specs/ternary/hybrid_bigint.t27 index 19ce4ed4d0..f7f35feaeb 100644 --- a/apps/website/public/t27/files/specs/ternary/hybrid_bigint.t27 +++ b/apps/website/public/t27/files/specs/ternary/hybrid_bigint.t27 @@ -8,7 +8,7 @@ module hybrid_bigint; import numeric::gf16; -import tritype-base::Trit; +import tritype::Trit; import ternary::bigint; // ============================================================================ diff --git a/apps/website/public/t27/files/specs/ternary/stream_ternary_mac.t27 b/apps/website/public/t27/files/specs/ternary/stream_ternary_mac.t27 new file mode 100644 index 0000000000..1bcb7ccd10 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/stream_ternary_mac.t27 @@ -0,0 +1,52 @@ +module StreamTernaryMac; +// #1764: a STREAMING ternary MAC -- the on-hardware BitNet inference primitive. +// +// Each clock cycle consumes one packed 27-trit (a, b) pair on input data ports +// and accumulates their dot product into a registered accumulator. This is a +// real datapath generated entirely from spec: +// input ports (a, b) -> ternary sign-multiply adder-tree (dot27) +// -> accumulate register (acc) -> output port (acc) +// It synthesizes to Artix-7 fabric (yosys synth_xilinx: the dot27 adder-tree in +// LUTs + a 32-bit accumulate register in FDCE + CARRY4), and `en` gates the +// accumulation so a caller can stream N vectors then read the running sum. +// +// The dot27 / tmul / tp primitives are the bit-exact-verified ones from +// ternary_mac.t27 (#1743, cross-checked vs an independent reference on 300 +// random vectors). The only new piece is the `on_clock` streaming wrapper. + +// Sign-only ternary multiply of two packed trits {N=0b00, Z=0b01, P=0b10}. +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +// One trit position i of two 54-bit packed vectors (trit i at [2i+1:2i]). +fn tp(a: u64, b: u64, i: u32) -> i8 { + return tmul(((a >> (i << 1)) & 3) as u8, ((b >> (i << 1)) & 3) as u8); +} +// 27-trit ternary dot product, loop-free. Result in [-27, +27]. +fn dot27(a: u64, b: u64) -> i8 { + return tp(a,b,0) + tp(a,b,1) + tp(a,b,2) + tp(a,b,3) + tp(a,b,4) + + tp(a,b,5) + tp(a,b,6) + tp(a,b,7) + tp(a,b,8) + tp(a,b,9) + + tp(a,b,10) + tp(a,b,11) + tp(a,b,12) + tp(a,b,13) + tp(a,b,14) + + tp(a,b,15) + tp(a,b,16) + tp(a,b,17) + tp(a,b,18) + tp(a,b,19) + + tp(a,b,20) + tp(a,b,21) + tp(a,b,22) + tp(a,b,23) + tp(a,b,24) + + tp(a,b,25) + tp(a,b,26); +} + +// Registered accumulator, exposed as an output data port. i32 so it never +// overflows across a realistic stream (each step adds a value in [-27, +27]). +var acc : i32 = 0 + +// The clocked process: `a` and `b` are streaming input data ports; each cycle +// (while `en`) the dot product of the current pair is added to `acc`. +fn on_clock(a: u64, b: u64) { + acc = acc + (dot27(a, b) as i32) +} + +test dot_all_n_x_all_n { assert_eq(dot27(0, 0), 27); } +test dot_all_n_x_all_p { assert_eq(dot27(0, 12009599006321322), -27); } +test dot_all_p_x_all_p { assert_eq(dot27(12009599006321322, 12009599006321322), 27); } +test dot_all_z { assert_eq(dot27(6004799503160661, 6004799503160661), 0); } +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/ternary_full_adder.t27 b/apps/website/public/t27/files/specs/ternary/ternary_full_adder.t27 new file mode 100644 index 0000000000..2784b6efd4 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/ternary_full_adder.t27 @@ -0,0 +1,78 @@ +module TernaryFullAdder; +// Ternary primitives (binary values embedded as {0 -> N=-1, 1 -> P=+1}). +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +fn sign0(v: i16) -> u8 { if (v > 0) { return 2; } if (v < 0) { return 0; } return 1; } +fn negate(t: u8) -> u8 { if (t == 2) { return 0; } if (t == 0) { return 2; } return 1; } +fn pack2(t0: u8, t1: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551600; + return cleared | (t0 as u64) | ((t1 as u64) << 2); +} +fn pack3(t0: u8, t1: u8, t2: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551552; + return cleared | (t0 as u64) | ((t1 as u64) << 2) | ((t2 as u64) << 4); +} +fn bneuron(x: u64, w: u64, bias: i16) -> u8 { return sign0(dot27(x, w) + bias); } +// XOR of two binary-embedded trits: a 2-layer network (not linearly separable). +fn xor2(a: u8, b: u8) -> u8 { + var x : u64 = pack2(a, b); + var w : u64 = pack2(2, 2); + var h1 : u8 = bneuron(x, w, -1); + var h2 : u8 = bneuron(x, w, 1); + return bneuron(pack2(h2, negate(h1)), w, -1); +} +// Majority of three trits = sign(a+b+c): a single neuron with all-+1 weights. +fn maj3(a: u8, b: u8, c: u8) -> u8 { + return sign0(dot27(pack3(a, b, c), 12009599006321322)); +} +// Binary full adder over trit-embedded bits. sum = a XOR b XOR cin (composed +// from the 2-layer XOR); carry = majority(a, b, cin) (a single neuron). Output +// packs the two result trits: sum in bits[1:0], carry in bits[3:2]. A real +// arithmetic building block built entirely from the spec-first ternary stack. +pub fn full_adder(a: u8, b: u8, cin: u8) -> u8 { + var s : u8 = xor2(xor2(a, b), cin); + var carry : u8 = maj3(a, b, cin); + return (carry << 2) | s; +} +test fa_000 { assert_eq(full_adder(0, 0, 0), 0); } +test fa_100 { assert_eq(full_adder(2, 0, 0), 2); } +test fa_110 { assert_eq(full_adder(2, 2, 0), 8); } +test fa_111 { assert_eq(full_adder(2, 2, 2), 10); } +test fa_011 { assert_eq(full_adder(0, 2, 2), 8); } +test fa_101 { assert_eq(full_adder(2, 0, 2), 8); } +// W697: the hardware boundary, derived from the CALL GRAPH. +// +// This spec has several functions that take a parameter and return a value, +// so W696's count rule left it AMBIGUOUS. But exactly ONE of them is called +// by no other function -- it is the root, and every other candidate is a +// helper it reaches. With one root the choice is forced by structure rather +// than by count, and forwarding to it still invents nothing. +// +// The call graph is built from FUNCTION BODIES ONLY. Counting `test` blocks +// as callers makes the rule vacuous -- every function is called by its own +// test, so nothing is ever a root. +// +// Measured: the rule resolved 14 of 136 ambiguous specs, 6 of them with +// types that can cross a module boundary. It is narrow because most of the +// rest are libraries of INDEPENDENT functions, which have several roots and +// correctly stay ambiguous. +fn on_comb(a: u8, b: u8, cin: u8) -> u8 { return full_adder(a, b, cin); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/ternary_mac.t27 b/apps/website/public/t27/files/specs/ternary/ternary_mac.t27 new file mode 100644 index 0000000000..b3a68fcfb0 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/ternary_mac.t27 @@ -0,0 +1,45 @@ +module TernaryMac; +// Sign-only ternary multiply of two packed trits {N=0b00, Z=0b01, P=0b10}. +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +// One trit position i of two 54-bit packed vectors (trit i at [2i+1:2i]). +fn tp(a: u64, b: u64, i: u32) -> i8 { + return tmul(((a >> (i << 1)) & 3) as u8, ((b >> (i << 1)) & 3) as u8); +} +// 27-trit ternary dot product, loop-free (gen-verilog cannot yet lower a +// local-declaring while loop -- see #1741). Result in [-27, +27]. +pub fn dot27(a: u64, b: u64) -> i8 { + return tp(a,b,0) + tp(a,b,1) + tp(a,b,2) + tp(a,b,3) + tp(a,b,4) + + tp(a,b,5) + tp(a,b,6) + tp(a,b,7) + tp(a,b,8) + tp(a,b,9) + + tp(a,b,10) + tp(a,b,11) + tp(a,b,12) + tp(a,b,13) + tp(a,b,14) + + tp(a,b,15) + tp(a,b,16) + tp(a,b,17) + tp(a,b,18) + tp(a,b,19) + + tp(a,b,20) + tp(a,b,21) + tp(a,b,22) + tp(a,b,23) + tp(a,b,24) + + tp(a,b,25) + tp(a,b,26); +} +test dot_all_n_x_all_n { assert_eq(dot27(0, 0), 27); } +test dot_all_n_x_all_p { assert_eq(dot27(0, 12009599006321322), -27); } +test dot_all_p_x_all_p { assert_eq(dot27(12009599006321322, 12009599006321322), 27); } +test dot_all_z { assert_eq(dot27(6004799503160661, 6004799503160661), 0); } +// W697: the hardware boundary, derived from the CALL GRAPH. +// +// This spec has several functions that take a parameter and return a value, +// so W696's count rule left it AMBIGUOUS. But exactly ONE of them is called +// by no other function -- it is the root, and every other candidate is a +// helper it reaches. With one root the choice is forced by structure rather +// than by count, and forwarding to it still invents nothing. +// +// The call graph is built from FUNCTION BODIES ONLY. Counting `test` blocks +// as callers makes the rule vacuous -- every function is called by its own +// test, so nothing is ever a root. +// +// Measured: the rule resolved 14 of 136 ambiguous specs, 6 of them with +// types that can cross a module boundary. It is narrow because most of the +// rest are libraries of INDEPENDENT functions, which have several roots and +// correctly stay ambiguous. +fn on_comb(a: u64, b: u64) -> i8 { return dot27(a, b); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/ternary_ripple_adder.t27 b/apps/website/public/t27/files/specs/ternary/ternary_ripple_adder.t27 new file mode 100644 index 0000000000..fbf929d761 --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/ternary_ripple_adder.t27 @@ -0,0 +1,89 @@ +module TernaryRippleAdder; +// Binary bits are embedded as trits: 0 -> N(0b00), 1 -> P(0b10). All logic is +// the spec-first ternary stack; add2 is a 2-bit ripple-carry adder = two full +// adders with the carry threaded between them. +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +fn sign0(v: i16) -> u8 { if (v > 0) { return 2; } if (v < 0) { return 0; } return 1; } +fn negate(t: u8) -> u8 { if (t == 2) { return 0; } if (t == 0) { return 2; } return 1; } +fn pack2(t0: u8, t1: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551600; + return cleared | (t0 as u64) | ((t1 as u64) << 2); +} +fn pack3(t0: u8, t1: u8, t2: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551552; + return cleared | (t0 as u64) | ((t1 as u64) << 2) | ((t2 as u64) << 4); +} +fn bneuron(x: u64, w: u64, bias: i16) -> u8 { return sign0(dot27(x, w) + bias); } +fn xor2(a: u8, b: u8) -> u8 { + var x : u64 = pack2(a, b); + var w : u64 = pack2(2, 2); + var h1 : u8 = bneuron(x, w, -1); + var h2 : u8 = bneuron(x, w, 1); + return bneuron(pack2(h2, negate(h1)), w, -1); +} +fn maj3(a: u8, b: u8, c: u8) -> u8 { return sign0(dot27(pack3(a, b, c), 12009599006321322)); } +// One full adder: returns the sum trit in bits[1:0] and the carry trit in [3:2]. +fn full_adder(a: u8, b: u8, cin: u8) -> u8 { + var s : u8 = xor2(xor2(a, b), cin); + var carry : u8 = maj3(a, b, cin); + return (carry << 2) | s; +} +// 2-bit ripple-carry adder: a = {a1,a0}, b = {b1,b0} (LSB first), each bit a +// trit-embedded binary. Threads carry0 -> full adder 1. Returns 3 result trits +// packed: sum0 in [1:0], sum1 in [3:2], carry-out in [5:4]. +pub fn add2(a0: u8, a1: u8, b0: u8, b1: u8) -> u8 { + var fa0 : u8 = full_adder(a0, b0, 0); + var s0 : u8 = (fa0 & 3) as u8; + var c0 : u8 = ((fa0 >> 2) & 3) as u8; + var fa1 : u8 = full_adder(a1, b1, c0); + var s1 : u8 = (fa1 & 3) as u8; + var c1 : u8 = ((fa1 >> 2) & 3) as u8; + return (s0 as u64 | ((s1 as u64) << 2) | ((c1 as u64) << 4)) as u8; +} +// 0 + 0 = 00, carry 0 -> s0=N,s1=N,c=N -> 0 +test add_0_0 { assert_eq(add2(0, 0, 0, 0), 0); } +// 1 + 1 = 10 (a=01,b=01): s0=N(0), s1=P(1), c=N -> (0)|(2<<2)|(0<<4)=8 +test add_1_1 { assert_eq(add2(2, 0, 2, 0), 8); } +// 3 + 1 = 100 (a=11,b=01): s0=N, s1=N, c=P -> (0)|(0<<2)|(2<<4)=32 +test add_3_1 { assert_eq(add2(2, 2, 2, 0), 32); } +// 3 + 3 = 110 (a=11,b=11): s0=N, s1=P, c=P -> 0|(2<<2)|(2<<4)=8|32=40 +test add_3_3 { assert_eq(add2(2, 2, 2, 2), 40); } +// 2 + 1 = 011 (a=10,b=01): a0=N,a1=P,b0=P,b1=N -> s0=P, s1=P, c=N -> 2|(2<<2)|0=10 +test add_2_1 { assert_eq(add2(0, 2, 2, 0), 10); } +// W697: the hardware boundary, derived from the CALL GRAPH. +// +// This spec has several functions that take a parameter and return a value, +// so W696's count rule left it AMBIGUOUS. But exactly ONE of them is called +// by no other function -- it is the root, and every other candidate is a +// helper it reaches. With one root the choice is forced by structure rather +// than by count, and forwarding to it still invents nothing. +// +// The call graph is built from FUNCTION BODIES ONLY. Counting `test` blocks +// as callers makes the rule vacuous -- every function is called by its own +// test, so nothing is ever a root. +// +// Measured: the rule resolved 14 of 136 ambiguous specs, 6 of them with +// types that can cross a module boundary. It is narrow because most of the +// rest are libraries of INDEPENDENT functions, which have several roots and +// correctly stay ambiguous. +fn on_comb(a0: u8, a1: u8, b0: u8, b1: u8) -> u8 { return add2(a0, a1, b0, b1); } + +endmodule diff --git a/apps/website/public/t27/files/specs/ternary/ternary_xor.t27 b/apps/website/public/t27/files/specs/ternary/ternary_xor.t27 new file mode 100644 index 0000000000..79521cb1ee --- /dev/null +++ b/apps/website/public/t27/files/specs/ternary/ternary_xor.t27 @@ -0,0 +1,78 @@ +module TernaryXor; +fn tmul(ta: u8, tb: u8) -> i8 { + if (ta == 1) { return 0; } + if (tb == 1) { return 0; } + if (ta == tb) { return 1; } + return -1; +} +fn dot27(a: u64, b: u64) -> i16 { + var acc : i16 = 0; + var i : u32 = 0; + while (i < 27) { + var ta : u8 = ((a >> (i << 1)) & 3) as u8; + var tb : u8 = ((b >> (i << 1)) & 3) as u8; + acc = acc + tmul(ta, tb) as i16; + i = i + 1; + } + return acc; +} +// Sign at zero: v > 0 -> P, v < 0 -> N, else Z. +fn sign0(v: i16) -> u8 { + if (v > 0) { return 2; } + if (v < 0) { return 0; } + return 1; +} +// Trit negate: P<->N, Z fixed. +fn negate(t: u8) -> u8 { + if (t == 2) { return 0; } + if (t == 0) { return 2; } + return 1; +} +// Pack 2 trits into lanes 0,1 of a chunk; the rest are Z. +fn pack2(t0: u8, t1: u8) -> u64 { + var z : u64 = 6004799503160661; + var cleared : u64 = z & 18446744073709551600; + return cleared | (t0 as u64) | ((t1 as u64) << 2); +} +// Biased ternary neuron: sign(dot(x, w) + bias). The bias is the neuron's +// threshold offset -- what a trained network learns alongside the weights. +fn bneuron(x: u64, w: u64, bias: i16) -> u8 { + return sign0(dot27(x, w) + bias); +} +// Ternary XOR over binary-embedded inputs {N=-1, P=+1}: P if the inputs differ, +// N if they match. XOR is NOT linearly separable -- a single neuron cannot +// compute it -- so this is a genuine 2-LAYER network: +// h1 = sign(a + b - 1) (AND-like) +// h2 = sign(a + b + 1) (OR-like) +// out = sign(h2 + (-h1) - 1) (h2 AND NOT h1) +pub fn ternary_xor(a: u8, b: u8) -> u8 { + var x : u64 = pack2(a, b); + var w_pp : u64 = pack2(2, 2); + var h1 : u8 = bneuron(x, w_pp, -1); + var h2 : u8 = bneuron(x, w_pp, 1); + var hidden : u64 = pack2(h2, negate(h1)); + return bneuron(hidden, w_pp, -1); +} +test xor_p_p { assert_eq(ternary_xor(2, 2), 0); } +test xor_p_n { assert_eq(ternary_xor(2, 0), 2); } +test xor_n_p { assert_eq(ternary_xor(0, 2), 2); } +test xor_n_n { assert_eq(ternary_xor(0, 0), 0); } +// W697: the hardware boundary, derived from the CALL GRAPH. +// +// This spec has several functions that take a parameter and return a value, +// so W696's count rule left it AMBIGUOUS. But exactly ONE of them is called +// by no other function -- it is the root, and every other candidate is a +// helper it reaches. With one root the choice is forced by structure rather +// than by count, and forwarding to it still invents nothing. +// +// The call graph is built from FUNCTION BODIES ONLY. Counting `test` blocks +// as callers makes the rule vacuous -- every function is called by its own +// test, so nothing is ever a root. +// +// Measured: the rule resolved 14 of 136 ambiguous specs, 6 of them with +// types that can cross a module boundary. It is narrow because most of the +// rest are libraries of INDEPENDENT functions, which have several roots and +// correctly stay ambiguous. +fn on_comb(a: u8, b: u8) -> u8 { return ternary_xor(a, b); } + +endmodule diff --git a/apps/website/public/t27/files/specs/test_framework/core.t27 b/apps/website/public/t27/files/specs/test_framework/core.t27 index c704224050..94cd5f64db 100644 --- a/apps/website/public/t27/files/specs/test_framework/core.t27 +++ b/apps/website/public/t27/files/specs/test_framework/core.t27 @@ -6,7 +6,7 @@ module core; -// S Core testing enums and structures +// § Core testing enums and structures /// Test verdict/tier classification enum Verdict { @@ -18,7 +18,7 @@ enum Verdict { /// Test tolerance tier (numeric/physics precision levels) enum ToleranceTier { - EXACT, // Mathematical identity (e.g., phi^2 = phi + 1) + EXACT, // Mathematical identity (e.g., φ² = φ + 1) WITHIN_UNCERTAINTY, // Within experimental uncertainty (CODATA) EMPIRICAL_FIT, // Empirical formula, good accuracy APPROXIMATION, // Approximation > experimental uncertainty @@ -51,7 +51,7 @@ struct TestResult { } /// Sequential gate pipeline with short-circuit -/// Pattern: parse -> type_check -> semantic -> numeric_stability -> physics_constraint -> audit +/// Pattern: parse → type_check → semantic → numeric_stability → physics_constraint → audit struct GatePipeline { parse_ok: bool, type_check_ok: bool, @@ -77,7 +77,7 @@ impl GatePipeline { } } -// S Core testing utilities +// § Core testing utilities /// Property-based testing: for all x in domain, property holds fn for_all(domain: fn() -> T, property: fn(T) -> bool, iterations: u32) -> TestResult { @@ -168,7 +168,7 @@ fn differential(impl1: fn(T) -> T, impl2: fn(T) -> T, tolerance: f64, test_ca }).collect() } -// S Test runners and reporting +// § Test runners and reporting /// TAP (Test Anything Protocol) output generator struct TapReporter { @@ -232,7 +232,7 @@ impl JsonReporter { } } -// S Test invariants and properties +// § Test invariants and properties /// Sequential gate invariant - enforces strict ordering invariant gate_pipeline_sequential(gate: GatePipeline) -> bool { @@ -249,12 +249,12 @@ invariant gf16_roundtrip_preservation(value: f64) -> bool { (decoded - value as f32).abs() < 1e-6 } -/// Phi algebraic identity: phi^2 = phi + 1 (exact mathematical identity) +/// Phi algebraic identity: φ² = φ + 1 (exact mathematical identity) invariant phi_squared_identity(phi: f64) -> bool { (phi * phi - phi - 1.0).abs() < 1e-15 // Exact within floating point precision } -// S Test entry point +// § Test entry point fn run_test_suite() -> Vec { let mut results = Vec::new(); diff --git a/apps/website/public/t27/files/specs/test_framework/graph_drift_detection.t27 b/apps/website/public/t27/files/specs/test_framework/graph_drift_detection.t27 index cd0664e551..45943e1f57 100644 --- a/apps/website/public/t27/files/specs/test_framework/graph_drift_detection.t27 +++ b/apps/website/public/t27/files/specs/test_framework/graph_drift_detection.t27 @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/test_framework/graph_drift_detection.t27 -// Ring 054 -- Graph Drift Detection for Structural Change Detection +// Ring 054 — Graph Drift Detection for Structural Change Detection // Monitors structural changes in mathematical and physics specifications over time module GraphDriftDetection { use test_framework::core::{TestResult, Verdict, ToleranceTier, EngineeringStatus}; use std::collections::{HashMap, HashSet}; - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 1. Drift Detection Configuration - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Graph node representing a mathematical/physics entity struct GraphNode { @@ -87,9 +87,9 @@ module GraphDriftDetection { }; } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 2. Graph Construction and Parsing - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Parse T27 spec file and extract graph structure fn parse_t27_spec_to_graph(file_path: string) -> DriftGraph { @@ -191,9 +191,9 @@ module GraphDriftDetection { }; } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 3. Drift Detection Algorithms - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Drift detection result struct DriftResult { @@ -360,9 +360,9 @@ module GraphDriftDetection { return 0.0; } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 4. Drift Monitoring and Alerting - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Drift monitoring system struct DriftMonitor { @@ -411,9 +411,9 @@ module GraphDriftDetection { // send_alert_to_monitoring_system(alert_message); } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 5. Integration with Test Framework - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Run drift detection as part of test suite fn run_drift_detection_tests() -> [TestResult] { @@ -460,9 +460,9 @@ module GraphDriftDetection { measure: milliseconds to run run_drift_detection_tests() target: < 1000ms - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 6. TDD-Inside-Spec: Drift Detection Tests - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── test drift_config_creation given config = default_drift_config() diff --git a/apps/website/public/t27/files/specs/test_framework/property_test_template.t27 b/apps/website/public/t27/files/specs/test_framework/property_test_template.t27 index 9579b0e913..210d0dca07 100644 --- a/apps/website/public/t27/files/specs/test_framework/property_test_template.t27 +++ b/apps/website/public/t27/files/specs/test_framework/property_test_template.t27 @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/test_framework/property_test_template.t27 -// Ring 052 -- Property-Based Testing Template for GoldenFloat +// Ring 052 — Property-Based Testing Template for GoldenFloat // Standardized PBT patterns following T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md module PBTTemplate { use test_framework::core::{TestResult, Verdict, ToleranceTier, EngineeringStatus}; use numeric::golden_float::{GF16, GF32}; - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 1. PBT Configuration and Generators - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Standard test configuration for property-based tests struct PropertyTestConfig { @@ -33,9 +33,9 @@ module PBTTemplate { }; } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 2. GoldenFloat Generators - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Generate valid GF16 values with coverage of edge cases fn generate_gf16(rng: &mut Random) -> GF16 { @@ -89,9 +89,9 @@ module PBTTemplate { return (generate_gf16(rng), generate_gf16(rng), generate_gf16(rng)); } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 3. Property Test Executors - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Universal property: for all valid inputs, property holds fn for_all(config: PropertyTestConfig, generator: fn(&mut Random) -> T, property: F) -> TestResult @@ -174,7 +174,7 @@ module PBTTemplate { } } - // Differential property: f(x) ~= g(x) within tolerance + // Differential property: f(x) ≈ g(x) within tolerance fn differential(config: PropertyTestConfig, generator: fn(&mut Random) -> T, f: F, g: G) -> TestResult where F: Fn(T) -> U, G: Fn(T) -> U @@ -222,9 +222,9 @@ module PBTTemplate { } } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 4. GoldenFloat-Specific Property Tests - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Property: GF16 addition is commutative // Claim: C-gf-001 (GoldenFloat meets stated effective accuracy) @@ -322,9 +322,9 @@ module PBTTemplate { }); } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 5. Test Orchestration - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Standard GoldenFloat property test suite fn goldenfloat_property_test_suite() -> [TestResult] { @@ -354,7 +354,7 @@ module PBTTemplate { target: < 5000ms // TDD-Inside-Spec: Verification tests for property test framework - // =========================================================================================== + // ═══════════════════════════════════════════════════════════════════════════════════════════ test property_test_config_creation given config = default_gf_config() diff --git a/apps/website/public/t27/files/specs/test_framework/runner.t27 b/apps/website/public/t27/files/specs/test_framework/runner.t27 index 09eb8d565b..8dcd854f09 100644 --- a/apps/website/public/t27/files/specs/test_framework/runner.t27 +++ b/apps/website/public/t27/files/specs/test_framework/runner.t27 @@ -220,7 +220,7 @@ impl TestRunner { println!("\n=== Failed Tests ==="); for result in &self.results { if result.verdict == Verdict::FAIL { - println!("0 {}", result.name); + println!("✗ {}", result.name); if let Some(ref msg) = result.message { println!(" {}", msg); } @@ -232,9 +232,9 @@ impl TestRunner { println!("\n=== All Results ==="); for result in &self.results { let status = match result.verdict { - Verdict::CLEAN => "1", - Verdict::FAIL => "2", - Verdict::SKIP => "3", + Verdict::CLEAN => "✓", + Verdict::FAIL => "✗", + Verdict::SKIP => "○", Verdict::PARTIAL => "~" }; println!("{} {} ({})", status, result.name, result.engineering); @@ -254,7 +254,7 @@ impl TestRunner { } } -// 4 Test specification parser +// § Test specification parser /// Parsed .t27 test specification struct T27Spec { @@ -287,7 +287,7 @@ enum TestKind { GatePipeline // Sequential gate pipeline } -// 5 Helper functions +// § Helper functions fn read_file(path: string) -> Result { // Placeholder for file reading @@ -320,7 +320,7 @@ fn default_pipeline() -> fn() -> GatePipeline { || GatePipeline::all_true() } -// 6 Main entry point +// § Main entry point /// Execute test specification with default configuration pub fn run_test_spec_file(spec_path: string) -> Result<(), string> { diff --git a/apps/website/public/t27/files/specs/test_framework/verilog_bench_harness.t27 b/apps/website/public/t27/files/specs/test_framework/verilog_bench_harness.t27 index 440e3d0ca0..d6f8498817 100644 --- a/apps/website/public/t27/files/specs/test_framework/verilog_bench_harness.t27 +++ b/apps/website/public/t27/files/specs/test_framework/verilog_bench_harness.t27 @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/test_framework/verilog_bench_harness.t27 -// Ring 053 -- Verilog Bench Harness for Hardware-in-the-Loop Testing +// Ring 053 — Verilog Bench Harness for Hardware-in-the-Loop Testing // Integration framework for testing GoldenFloat operations against Verilog RTL module VerilogBenchHarness { use test_framework::core::{TestResult, Verdict, ToleranceTier, EngineeringStatus}; use numeric::golden_float::{GF16, GF32}; - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 1. Verilog Integration Configuration - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Verilog simulation configuration struct VerilogConfig { @@ -59,9 +59,9 @@ module VerilogBenchHarness { }; } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 2. Test Vector Generation - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Test vector for Verilog simulation struct VerilogTestVector { @@ -180,9 +180,9 @@ module VerilogBenchHarness { return vectors; } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 3. Verilog Test Execution - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Verilog simulation result struct VerilogSimulationResult { @@ -265,9 +265,9 @@ module VerilogBenchHarness { return results; } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 4. Hardware-Software Co-verification - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Compare software and hardware results fn compare_sw_hw_results(sw_results: [TestResult], hw_results: [TestResult]) -> TestResult { @@ -305,9 +305,9 @@ module VerilogBenchHarness { } } - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 5. Comprehensive Test Orchestration - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // Full GoldenFloat hardware verification flow fn goldenfloat_hardware_verification() -> [TestResult] { @@ -351,9 +351,9 @@ module VerilogBenchHarness { measure: milliseconds to run goldenfloat_hardware_verification() target: < 60000ms - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── // 6. TDD-Inside-Spec: Verilog Harness Tests - // ----------------------------------------------------- + // ───────────────────────────────────────────────────── test verilog_config_creation given config = default_verilog_config() diff --git a/apps/website/public/t27/files/specs/tools/mcp_protocol.t27 b/apps/website/public/t27/files/specs/tools/mcp_protocol.t27 new file mode 100644 index 0000000000..bf118e6237 --- /dev/null +++ b/apps/website/public/t27/files/specs/tools/mcp_protocol.t27 @@ -0,0 +1,194 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/tools/mcp_protocol.t27 -- the MCP protocol behaviour of gHashTag/trinity's trinity-mcp at the pin +; S06 of gHashTag/trinity#988 (gHashTag/t27#3568). The consumer ships two MCP servers and one client. +; This file states what the main server, tools/mcp/trinity_mcp/server.zig at 976df517, actually does +; with a JSON-RPC message -- how it frames, which methods it routes, what it answers to initialize, +; how it lists and calls tools, how it reports failure, what it does with cancellation and with a +; tool it does not know -- and what the modules beside it declare but the server never imports. +; Every decision is a function the C backend executes; tools/trinity_tools_registry.py builds the +; offline protocol fixtures of conformance/trinity/mcp_fixtures.json from a Python model of the same +; reading and replays them through the generated C. Nothing here has been run against the server: +; no workflow builds or runs it, and no Zig on this host builds the tree. ASCII only (L3). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module McpProtocol; + +pub const KIND : str = "mcp-protocol"; +pub const ID : str = "tools/mcp_protocol"; +pub const NAME : str = "The MCP protocol behaviour of the pinned Trinity MCP server"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const SERVER_MODULE : str = "tools/mcp/trinity_mcp/server.zig"; +pub const SERVER_LINES : str = "constants :31-33; initialize :52-59; tools/list :61-292; tools/call :294-478 and :1924-1964; generic executor :1377-1390; result writer :1717-1779; main :1805; processMessage :1914-2010; id :2038"; +pub const TOOL_CARD : str = "specs/tools/mcp/trinity.t27"; +; --- Identity --------------------------------------------------------------------------------- +pub const PROTOCOL_VERSION : str = "2024-11-05"; +pub const SERVER_NAME : str = "trinity-mcp"; +pub const SERVER_VERSION : str = "2.0.0"; +pub const INITIALIZE_RESULT : str = "{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{},\"resources\":{\"subscribe\":false},\"prompts\":{}},\"serverInfo\":{\"name\":\"trinity-mcp\",\"version\":\"2.0.0\"}}"; +pub const NEGOTIATION : str = "none: the client's protocolVersion is never read; the answer is the literal above"; +; --- Transport -------------------------------------------------------------------------------- +pub const TRANSPORT : str = "stdio only: reads fd 0 into a 256 KiB buffer, accepts Content-Length framing and bare newline-delimited JSON, writes every reply with Content-Length framing"; +pub const TRANSPORT_UNUSED : [2]str = ["transport.zig (HTTP and SSE on 127.0.0.1:8899, /sse and /mcp)", "websocket_transport.zig"]; +pub const TRANSPORT_UNUSED_NOTE : str = "present in the directory, imported by nothing; .mcp.json still sets TRINITY_MCP_PORT=8899"; +pub const READ_BUFFER_BYTES : u32 = 262144; +pub const RESULT_BUFFER_BYTES : u32 = 16384; +pub const RESULT_TRUNCATION : str = "a tool result is written into a 16 KiB buffer and its text is truncated to fit"; +; --- Methods ------------------------------------------------------------------------------------ +pub const METHOD_COUNT : u32 = 7; +pub const METHODS : [7]str = ["initialize", "tools/list", "tools/call", "resources/list", "resources/read", "prompts/list", "prompts/get"]; +pub const METHOD_MATCH : str = "substring search on the raw message, not a parsed method field; the id is extracted textually and defaults to the literal null"; +pub const NOTIFICATION_RULE : str = "a message containing notifications/ gets no reply; notifications/cancelled included"; +pub const UNKNOWN_METHOD_RULE : str = "a message matching no method gets no reply at all; -32601 is never sent"; +pub const REPLY_ANSWERED : u32 = 0; +pub const REPLY_SILENT_NOTIFICATION : u32 = 1; +pub const REPLY_SILENT_UNKNOWN : u32 = 2; +; --- tools/list ----------------------------------------------------------------------------------- +pub const TOOLS_STATIC : u32 = 210; +pub const TOOLS_MALFORMED : u32 = 32; +pub const TOOLS_LIST_RULE : str = "one static literal of 210 tool objects (server.zig:66-277) plus the contents of data/cells/mcp_tools.json when it exists (it does not exist in the tree); 30 objects carry an extra closing brace, 2 lack one, and the footer closes one brace too many, so the payload is not parseable JSON although its Content-Length is right"; +pub const TOOLS_LIST_JSON_VALID : bool = false; +pub const TOOLS_CELL_FILE : str = "data/cells/mcp_tools.json"; +pub const TOOLS_CELL_FILE_EXISTS : bool = false; +; --- tools/call --------------------------------------------------------------------------------------- +pub const CALL_EXACT_HANDLERS : u32 = 38; +pub const CALL_PREFIX_HANDLERS : u32 = 25; +pub const CALL_PREFIXES : [25]str = ["needle_", "swarm_", "chain_", "cloud_", "farm_evolve_", "fpga_", "doctor_", "job_", "issue_", "deploy_", "experience_", "patent_", "depin_", "research_", "experiment_", "chimera_", "ouroboros_", "self_", "context_", "faculty_", "mu_", "zenodo_", "farm_", "oracle_", "tri_train_"]; +pub const CALL_FALLBACK_RULE : str = "a name matching no exact handler and no prefix is stripped of tri_ and run as `tri ` with no arguments (toolTriExecuteGeneric); fifteen advertised tools land there; an unknown tool is never refused"; +pub const CALL_FALLBACK_TOOLS : [15]str = ["tri_code", "tri_test", "tri_test_run", "tri_refactor", "tri_doc", "tri_reason", "tri_log", "tri_spiral", "tri_chat", "tri_loop_decision", "tri_pipeline", "tri_omega_awaken", "tri_os_boot", "tri_tvc_demo", "tri_tvc_stats"]; +pub const CALL_ARGUMENTS_RULE : str = "the tool name and the arguments object are cut out of the raw text by brace matching; a stringified arguments value is accepted too"; +pub const CALL_EXECUTION : str = "handlers spawn zig-out/bin/tri as a child process (executeTriSimple), a relative path valid because main() changed to the repository root; no timeout"; +pub const ROUTE_EXACT : u32 = 0; +pub const ROUTE_PREFIX : u32 = 1; +pub const ROUTE_GENERIC : u32 = 2; +; --- Errors --------------------------------------------------------------------------------------------- +pub const ERROR_CHANNEL : str = "a tool failure is a result with isError true and a text such as Error: Missing file_path; a JSON-RPC error object is never written by this server"; +pub const ERROR_CODES_DECLARED : u32 = 12; +pub const ERROR_CODE_NAMES : [12]str = ["parse_error", "invalid_request", "method_not_found", "invalid_params", "internal_error", "triton_encoding_error", "vsa_computation_error", "timeout", "resource_not_found", "input_sanitization_failed", "command_not_found", "subprocess_error"]; +pub const ERROR_CODE_VALUES : [12]i32 = [-32700, -32600, -32601, -32602, -32603, -32001, -32002, -32003, -32004, -32005, -32006, -32007]; +pub const ERROR_CODES_NOTE : str = "declared in tools/mcp/trinity_mcp/errors.zig, imported by nothing; its second writer emits a broken escape and neither writer carries an id"; +; --- Cancellation, limits, permissions ----------------------------------------------------------------- +pub const CANCELLATION : str = "cancellation.zig (CancellationToken with SIGTERM, a registry, a response formatter) is imported by nothing; notifications/cancelled is swallowed and a running child is never interrupted"; +pub const TIMEOUT : str = "none: Child.run has no deadline"; +pub const PERMISSIONS : str = "security.zig (14 dangerous patterns, 1 MB input and 10 MB output limits, a 60 per minute rate limiter, five error codes 1001..1005) is imported by nothing: no denied list, no sanitization, no rate limit is enforced by the server"; +pub const PERMISSION_GATE_IN_TREE : str = "src/tri-api/permissions.zig (the client side): deny rules over allow rules over defaults; read_file and grep are allowed by default, every other tool is denied; a denied MCP tool never reaches the executor and returns Permission denied with is_error"; +pub const PERMISSION_ALLOW : u32 = 0; +pub const PERMISSION_DENY : u32 = 1; +; --- Resources and prompts ------------------------------------------------------------------------------ +pub const RESOURCE_COUNT : u32 = 10; +pub const PROMPT_COUNT : u32 = 5; +pub const RESOURCES : [10]str = ["trinity://constants/all", "trinity://constants/particle_physics", "trinity://constants/cosmology", "trinity://constants/sacred", "trinity://papers/temporal_phi", "trinity://papers/consciousness_trinity", "trinity://papers/gravity_phi", "trinity://papers/unified", "file://CLAUDE.md", "trinity://docs/architecture"]; +pub const PROMPTS : [5]str = ["sacred_formula_analysis", "sacred_derivation", "gematria_analysis", "trinity_code_review", "sacred_exploration"]; +; --- The second server and the client -------------------------------------------------------------------- +pub const NEEDLE_SERVER : str = "tools/mcp/needle_mcp/server.zig: needle-mcp 1.0.0, newline-delimited JSON without Content-Length, initialize answered without an id and with capabilities.tools only, six tools, and the only JSON-RPC error either server emits: code -32601 Unknown tool"; +pub const NEEDLE_TOOLS : [6]str = ["needle_structural_replace", "needle_search", "needle_quality_gates", "needle_preview", "needle_batch_edit", "needle_autonomous_refactor"]; +pub const CLIENT : str = "src/tri-api/mcp_client.zig: spawns the servers named under mcp_servers in .trinity/api/settings.json (a key .mcp.json does not use), sends initialize, notifications/initialized, tools/list and tools/call as newline-delimited JSON, never reads the initialize reply, and so reads the stale initialize line where it expects tools/list: against trinity-mcp it discovers zero tools"; +; --- Registries that should agree and do not ---------------------------------------------------------------- +pub const SCHEMA_EXPORT : str = ".trinity/mcp_schemas.json: 29 tools exported from src/registry/command_table.zig by `tri mcp export`; the server never reads it and advertises a different list; ci.yml diffs it with continue-on-error because the exporter segfaults on Linux"; +pub const EXPORTED_TOOLS : u32 = 29; +pub const OVERLAP_NOTE : str = "the names common to the exported 29 and the advertised 210 are counted by tools/trinity_tools_registry.py inventory"; +; --- Evidence ---------------------------------------------------------------------------------------------------- +pub const CI_EVIDENCE : str = "no workflow builds, runs or smoke-tests trinity-mcp or needle-mcp; the MCP schema check of ci.yml is continue-on-error; tests/needle/e2e_mcp_test.zig drives an in-process mock, not a server, and is not in build.zig"; +pub const HOST_EVIDENCE : str = "not run on this host: no Zig available builds the tree"; +pub const ENABLED : bool = true; + +; --- Rules ------------------------------------------------------------------------------------------------------------ + +pub fn method_reply(is_known: bool, is_notification: bool) -> u32 { + if (is_notification) { return REPLY_SILENT_NOTIFICATION; } + if (is_known) { return REPLY_ANSWERED; } + return REPLY_SILENT_UNKNOWN; +} + +pub fn call_route(exact: bool, prefix: bool) -> u32 { + if (exact) { return ROUTE_EXACT; } + if (prefix) { return ROUTE_PREFIX; } + return ROUTE_GENERIC; +} + +pub fn call_is_refused(exact: bool, prefix: bool) -> bool { + return false; +} + +pub fn failure_is_result(is_error: bool) -> bool { + return is_error; +} + +pub fn error_code(kind: u32) -> i32 { + if (kind == 0) { return -32700; } + if (kind == 1) { return -32600; } + if (kind == 2) { return -32601; } + if (kind == 3) { return -32602; } + if (kind == 4) { return -32603; } + if (kind == 5) { return -32001; } + if (kind == 6) { return -32002; } + if (kind == 7) { return -32003; } + if (kind == 8) { return -32004; } + if (kind == 9) { return -32005; } + if (kind == 10) { return -32006; } + return -32007; +} + +pub fn error_code_is_emitted_by_trinity_mcp(kind: u32) -> bool { + return false; +} + +pub fn error_code_is_emitted_by_needle_mcp(kind: u32) -> bool { + return kind == 2; +} + +pub fn permission(has_deny_rule: bool, has_allow_rule: bool, default_allowed: bool) -> u32 { + if (has_deny_rule) { return PERMISSION_DENY; } + if (has_allow_rule) { return PERMISSION_ALLOW; } + if (default_allowed) { return PERMISSION_ALLOW; } + return PERMISSION_DENY; +} + +pub fn result_text_fits(text_bytes: u32, envelope_bytes: u32) -> bool { + return text_bytes + envelope_bytes <= RESULT_BUFFER_BYTES; +} + +pub fn tools_list_objects(static_count: u32, malformed: u32) -> u32 { + return static_count - malformed; +} + +invariant every_declared_error_code_is_negative { ERROR_CODE_VALUES[0] < 0 and ERROR_CODE_VALUES[11] < 0 } +invariant the_routes_are_three { ROUTE_GENERIC == 2 } +invariant the_tool_list_is_larger_than_the_export { TOOLS_STATIC > EXPORTED_TOOLS } + +test known_methods_are_answered_and_everything_else_is_silence { + assert method_reply(true, false) == REPLY_ANSWERED; + assert method_reply(false, true) == REPLY_SILENT_NOTIFICATION; + assert method_reply(true, true) == REPLY_SILENT_NOTIFICATION; + assert method_reply(false, false) == REPLY_SILENT_UNKNOWN; +} + +test a_call_is_routed_exact_then_prefix_then_generic_and_never_refused { + assert call_route(true, true) == ROUTE_EXACT; + assert call_route(false, true) == ROUTE_PREFIX; + assert call_route(false, false) == ROUTE_GENERIC; + assert call_is_refused(false, false) == false; +} + +test failures_travel_as_results_and_the_declared_codes_stay_declared { + assert failure_is_result(true) == true; + assert error_code(0) == -32700; + assert error_code(2) == -32601; + assert error_code(11) == -32007; + assert error_code_is_emitted_by_trinity_mcp(2) == false; + assert error_code_is_emitted_by_needle_mcp(2) == true; + assert error_code_is_emitted_by_needle_mcp(3) == false; +} + +test the_client_side_permission_gate { + assert permission(true, true, true) == PERMISSION_DENY; + assert permission(false, true, false) == PERMISSION_ALLOW; + assert permission(false, false, true) == PERMISSION_ALLOW; + assert permission(false, false, false) == PERMISSION_DENY; +} + +test the_result_buffer_and_the_tool_list_arithmetic { + assert result_text_fits(16000, 384) == true; + assert result_text_fits(16000, 385) == false; + assert tools_list_objects(TOOLS_STATIC, TOOLS_MALFORMED) == 178; +} diff --git a/apps/website/public/t27/files/specs/tools/registry.t27 b/apps/website/public/t27/files/specs/tools/registry.t27 index 314402b657..1725b3a760 100644 --- a/apps/website/public/t27/files/specs/tools/registry.t27 +++ b/apps/website/public/t27/files/specs/tools/registry.t27 @@ -1,14 +1,14 @@ // specs/tools/registry.t27 // Tools Registry Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module ToolsRegistry { use base::types; use tools::schema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Registry Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // create creates a new tool registry fn create() -> ToolRegistry { @@ -55,9 +55,9 @@ module ToolsRegistry { // Implementation: Filter dangerous tools } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Permission Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // set_permission sets the permission for a tool fn set_permission(registry: ToolRegistry, toolID: ToolID, permission: ToolPermission) -> Result { @@ -84,9 +84,9 @@ module ToolsRegistry { // Implementation: Set permission to Ask } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Custom Tool Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // register_custom registers a custom tool fn register_custom(registry: ToolRegistry, tool: ToolDefinition) -> Result { @@ -103,9 +103,9 @@ module ToolsRegistry { // Implementation: Unregister custom tool } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Bulk Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // register_all registers multiple tools at once fn register_all(registry: ToolRegistry, tools: [ToolDefinition]) -> Result { @@ -122,9 +122,9 @@ module ToolsRegistry { // Implementation: Clear all tools } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Query Operations - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // find_by_description finds tools by description pattern fn find_by_description(registry: ToolRegistry, pattern: str) -> [ToolID] { @@ -141,9 +141,9 @@ module ToolsRegistry { // Implementation: Check if empty } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "tool_id_creation" { var id = ToolID("bash"); diff --git a/apps/website/public/t27/files/specs/tools/schema.t27 b/apps/website/public/t27/files/specs/tools/schema.t27 index 6bfdbc55d1..7e866a5be1 100644 --- a/apps/website/public/t27/files/specs/tools/schema.t27 +++ b/apps/website/public/t27/files/specs/tools/schema.t27 @@ -1,14 +1,14 @@ // specs/tools/schema.t27 // Tools Types Specification -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module Tools { use base::types; use session::schema as SessionSchema; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tool ID Type - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ToolID is a branded string representing a tool identifier struct ToolID(str); @@ -16,9 +16,9 @@ module Tools { // CallID is a branded string representing a tool call identifier struct CallID(str); - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tool Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ToolCategory represents the category of a tool enum ToolCategory { @@ -38,9 +38,9 @@ module Tools { Denied = 2, // Tool is disabled } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tool Definition - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ParameterSchema represents the schema for tool parameters struct ParameterSchema { @@ -75,9 +75,9 @@ module Tools { metadata: ToolMetadata, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tool Execution - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ToolContext represents the context for tool execution struct ToolContext { @@ -110,9 +110,9 @@ module Tools { timestamp: u64, // Call timestamp } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Validation - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ValidationError represents a parameter validation error struct ValidationError { @@ -127,9 +127,9 @@ module Tools { errors: [ValidationError], } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tool Registry Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ToolRegistry represents a registry of available tools struct ToolRegistry { @@ -138,9 +138,9 @@ module Tools { custom: [ToolID], // Custom tool IDs } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Error Types - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // ToolError represents errors in tool operations enum ToolError { @@ -153,16 +153,16 @@ module Tools { NotDefined = 6, } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Constants - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ const MAX_OUTPUT_LENGTH: u32 = 100000; const DEFAULT_TIMEOUT_MS: u32 = 120000; - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Helper Functions - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // is_dangerous checks if a tool is dangerous fn is_dangerous(metadata: ToolMetadata) -> bool { @@ -179,9 +179,9 @@ module Tools { return metadata.permission == ToolPermission::Allowed; } - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ // Tests - // ==================================================================== + // ════════════════════════════════════════════════════════════════════ test "tool_id_creation" { var id = ToolID("read_file"); diff --git a/apps/website/public/t27/files/specs/tools/tri_to_t27_converter.t27 b/apps/website/public/t27/files/specs/tools/tri_to_t27_converter.t27 index 6f1b9ac68e..03dbc32da4 100644 --- a/apps/website/public/t27/files/specs/tools/tri_to_t27_converter.t27 +++ b/apps/website/public/t27/files/specs/tools/tri_to_t27_converter.t27 @@ -196,29 +196,29 @@ module TriToT27Converter; // ═══════════════════════════════════════════════════════════ test parse_tri_file_parses_name - given content = "name: test_algo\nversion: \"1.0\"" + given content = "name: test_algo\\nversion: \\"1.0\\"" when spec = parse_tri_file(content) then spec.name == "test_algo" test parse_tri_file_parses_version - given content = "name: test\nversion: \"1.2.3\"" + given content = "name: test\\nversion: \\"1.2.3\\"" when spec = parse_tri_file(content) then spec.version == "1.2.3" test parse_tri_file_parses_types - given content = "name: test\ntypes:\n - name: MyType\n fields:\n - name: field1\n type: u32" + given content = "name: test\\ntypes:\\n - name: MyType\\n fields:\\n - name: field1\\n type: u32" when spec = parse_tri_file(content) then spec.types.len == 1 and spec.types[0].name == "MyType" test parse_tri_file_parses_constants - given content = "name: test\nconstants:\n ZERO: 0.0" + given content = "name: test\\nconstants:\\n ZERO: 0.0" when spec = parse_tri_file(content) then spec.constants.len == 1 and spec.constants[0].name == "ZERO" test parse_tri_file_parses_functions - given content = "name: test\nfunctions:\n - name: forward\n params: [input: []f32]\n return: []f32" + given content = "name: test\\nfunctions:\\n - name: forward\\n params: [input: []f32]\\n return: []f32" when spec = parse_tri_file(content) then spec.functions.len == 1 and spec.functions[0].name == "forward" @@ -249,7 +249,16 @@ module TriToT27Converter; then result == "DenseLayer" test generate_t27_creates_valid_structure - given spec = TriSpec{ .name = "TestModule", .version = "1.0.0", .description = "Test module", .types = [], .constants = [], .functions = [], .behaviors = [], .constraints = [] } + given spec = TriSpec{ + .name = "TestModule", + .version = "1.0.0", + .description = "Test module", + .types = [], + .constants = [], + .functions = [], + .behaviors = [], + .constraints = [], + } when content = generate_t27(spec) then contains_module_declaration(content) and contains_spdx_header(content) diff --git a/apps/website/public/t27/files/specs/tri/agent/agent_run.t27 b/apps/website/public/t27/files/specs/tri/agent/agent_run.t27 index 60c8ba6305..84e9f046b0 100644 --- a/apps/website/public/t27/files/specs/tri/agent/agent_run.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/agent_run.t27 @@ -10,6 +10,3 @@ module AgentRun; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "agent_run_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/agents.t27 b/apps/website/public/t27/files/specs/tri/agent/agents.t27 index b5de193bc7..0dabbc2066 100644 --- a/apps/website/public/t27/files/specs/tri/agent/agents.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/agents.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | φ² + 1/φ² = 3 | TRINITY -module agents; +module Agents; use base::types; use math::constants; @@ -10,6 +10,3 @@ module agents; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "agents_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/autonomous_lifecycle.t27 b/apps/website/public/t27/files/specs/tri/agent/autonomous_lifecycle.t27 index 1a2fb82898..25f4b254dc 100644 --- a/apps/website/public/t27/files/specs/tri/agent/autonomous_lifecycle.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/autonomous_lifecycle.t27 @@ -11,9 +11,7 @@ module TriAutonomousLifecycle; // ═══════════════════════════════════════════════════════════ pub const LifecycleState = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/autonomous_lifecycle.tri:27. The converter dropped bare `- name` bullets. - enum : [ideation, specification, generation, validation, deployment, monitoring, healing, stable], + variants : , }; pub const LifecycleEvent = struct { @@ -21,7 +19,7 @@ module TriAutonomousLifecycle; from_state : LifecycleState, to_state : LifecycleState, timestamp : i64, - pas_score : Float, // φ-weighted priority + pas_score : Float # φ-weighted priority, trigger : String, }; @@ -44,15 +42,11 @@ module TriAutonomousLifecycle; }; pub const TaskType = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/autonomous_lifecycle.tri:70. The converter dropped bare `- name` bullets. - enum : [create_spec, generate_code, run_tests, deploy, monitor, heal], + variants : , }; pub const TaskStatus = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/autonomous_lifecycle.tri:79. The converter dropped bare `- name` bullets. - enum : [pending, in_progress, completed, failed, retrying], + variants : , }; pub const PerformanceMetrics = struct { @@ -67,6 +61,3 @@ module TriAutonomousLifecycle; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "autonomous_lifecycle_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/autonomous_universe.t27 b/apps/website/public/t27/files/specs/tri/agent/autonomous_universe.t27 index db375e34f3..0bf101eaff 100644 --- a/apps/website/public/t27/files/specs/tri/agent/autonomous_universe.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/autonomous_universe.t27 @@ -10,6 +10,3 @@ module AutonomousUniverse; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "autonomous_universe_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/eternal_monitor.t27 b/apps/website/public/t27/files/specs/tri/agent/eternal_monitor.t27 index 94f09c020a..4582c6b38d 100644 --- a/apps/website/public/t27/files/specs/tri/agent/eternal_monitor.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/eternal_monitor.t27 @@ -11,15 +11,11 @@ module EternalMonitor; // ═══════════════════════════════════════════════════════════ pub const Severity = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/eternal_monitor.tri:16. The converter dropped bare `- name` bullets. - enum : [info, warning, critical, fatal], + variants : , }; pub const HealthStatus = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/eternal_monitor.tri:24. The converter dropped bare `- name` bullets. - enum : [healthy, degraded, failed, unknown], + variants : , }; pub const Config = struct { @@ -64,6 +60,3 @@ module EternalMonitor; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "eternal_monitor_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/experience_hooks.t27 b/apps/website/public/t27/files/specs/tri/agent/experience_hooks.t27 index 5a4e027cf3..b28fd29b34 100644 --- a/apps/website/public/t27/files/specs/tri/agent/experience_hooks.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/experience_hooks.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | φ² + 1/φ² = 3 | TRINITY -module experience_hooks; +module ExperienceHooks; use base::types; use math::constants; @@ -10,6 +10,3 @@ module experience_hooks; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "experience_hooks_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/faculty_board.t27 b/apps/website/public/t27/files/specs/tri/agent/faculty_board.t27 index 5a0262ab93..c3f31ebde7 100644 --- a/apps/website/public/t27/files/specs/tri/agent/faculty_board.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/faculty_board.t27 @@ -11,9 +11,7 @@ module FacultyBoard; // ═══════════════════════════════════════════════════════════ pub const Lang = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/faculty_board.tri:20. The converter dropped bare `- name` bullets. - enum : [ru, en], + variants : , }; pub const FacultySnapshot = struct { @@ -34,15 +32,11 @@ module FacultyBoard; }; pub const Agent = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/faculty_board.tri:44. The converter dropped bare `- name` bullets. - enum : [ralph, scholar, mu, oracle, swarm, linter], + variants : , }; pub const AgentStatusKind = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/faculty_board.tri:54. The converter dropped bare `- name` bullets. - enum : [up, down, frozen, missing], + variants : , }; pub const FacultyDelta = struct { @@ -57,6 +51,3 @@ module FacultyBoard; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "faculty_board_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/governance_agent.t27 b/apps/website/public/t27/files/specs/tri/agent/governance_agent.t27 index 805860e9d2..c8fb6cf04a 100644 --- a/apps/website/public/t27/files/specs/tri/agent/governance_agent.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/governance_agent.t27 @@ -11,8 +11,8 @@ module GovernanceAgent; // ═══════════════════════════════════════════════════════════ pub const GovernanceAgent = struct { - identity : String, // "GOVERNANCEAGENT of Sacred Intelligence" - sacred_score : Float, // 0-1 scale + identity : String # "GOVERNANCEAGENT of Sacred Intelligence", + sacred_score : Float # 0-1 scale, generation : Int, total_violations : Int, total_enforcements : Int, @@ -20,17 +20,17 @@ module GovernanceAgent; }; pub const SacredRule = struct { - weight : Float, // φ-based weight + weight : Float # φ-based weight, penalty_multiplier : Float, enabled : Bool, }; pub const Violation = struct { - rule : String, // Which sacred rule was violated + rule : String # Which sacred rule was violated, file_path : String, line_number : Int, - severity : String, // critical, warning, info - penalty : Float, // φ-based penalty score + severity : String # critical, warning, info, + penalty : Float # φ-based penalty score, timestamp : Int64, commit_hash : String, auto_rollback : Bool, @@ -38,12 +38,12 @@ module GovernanceAgent; }; pub const SacredScore = struct { - phi_harmony : Float, // Cosine similarity to φ - trinity_balance : Float, // Ternary balance (-1, 0, +1) - gematria_compliance : Float, // Sacred name usage - evolution_fitness : Float, // Fitness improvement - test_safety : Float, // Tests passing - overall_score : Float, // Weighted average 0-1 + phi_harmony : Float # Cosine similarity to φ, + trinity_balance : Float # Ternary balance (-1, 0, +1), + gematria_compliance : Float # Sacred name usage, + evolution_fitness : Float # Fitness improvement, + test_safety : Float # Tests passing, + overall_score : Float # Weighted average 0-1, timestamp : Int64, }; @@ -54,7 +54,7 @@ module GovernanceAgent; pre_score : Float, post_score : Float, delta : Float, - status : String, // pending, approved, rejected, rolledBack + status : String # pending, approved, rejected, rolledBack, approver : String, timestamp : Int64, }; @@ -69,7 +69,7 @@ module GovernanceAgent; pub const GovernanceWidget = struct { current_score : Float, - trend : String, // improving, stable, declining + trend : String # improving, stable, declining, violations_today : Int, enforcements_today : Int, pending_patches : Int, @@ -79,9 +79,9 @@ module GovernanceAgent; pub const AuditEntry = struct { id : String, timestamp : Int64, - action : String, // check, enforce, rollback, approve + action : String # check, enforce, rollback, approve, rule : String, - outcome : String, // passed, failed, warning + outcome : String # passed, failed, warning, details : String, sacred_score_before : Float, sacred_score_after : Float, @@ -92,6 +92,3 @@ module GovernanceAgent; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "governance_agent_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/handoff.t27 b/apps/website/public/t27/files/specs/tri/agent/handoff.t27 index 54bd1c0bb2..bc7e0b388e 100644 --- a/apps/website/public/t27/files/specs/tri/agent/handoff.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/handoff.t27 @@ -12,8 +12,8 @@ module Handoff; pub const PlannerOutput = struct { issue_number : UInt32, - subtasks : []const []const u8, - files : []const []const u8, + subtasks : "[]const []const u8", + files : "[]const []const u8", approach : String, spec_path : String, timestamp : Int64, @@ -25,8 +25,8 @@ module Handoff; pub const CoderOutput = struct { issue_number : UInt32, branch : String, - files_modified : []const []const u8, - commits : []const []const u8, + files_modified : "[]const []const u8", + commits : "[]const []const u8", lines_added : UInt32, lines_removed : UInt32, timestamp : Int64, @@ -38,10 +38,10 @@ module Handoff; pub const ReviewerVerdict = struct { issue_number : UInt32, approved : Bool, - feedback : []const []const u8, + feedback : "[]const []const u8", iteration : UInt8, max_iterations : UInt8, - files_reviewed : []const []const u8, + files_reviewed : "[]const []const u8", timestamp : Int64, cost_tokens_in : UInt64, cost_tokens_out : UInt64, @@ -52,8 +52,8 @@ module Handoff; issue_number : UInt32, tests_passed : UInt32, tests_total : UInt32, - benchmarks : []const []const u8, - regressions : []const []const u8, + benchmarks : "[]const []const u8", + regressions : "[]const []const u8", timestamp : Int64, }; @@ -61,6 +61,3 @@ module Handoff; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "handoff_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/memory.t27 b/apps/website/public/t27/files/specs/tri/agent/memory.t27 index a60e331dbb..48e22e1d73 100644 --- a/apps/website/public/t27/files/specs/tri/agent/memory.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/memory.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | φ² + 1/φ² = 3 | TRINITY -module memory; +module AgentMemory; use base::types; use math::constants; @@ -10,6 +10,3 @@ module memory; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "memory_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/agent/swarm_agents.t27 b/apps/website/public/t27/files/specs/tri/agent/swarm_agents.t27 index be45fba4c3..9fe759a9cd 100644 --- a/apps/website/public/t27/files/specs/tri/agent/swarm_agents.t27 +++ b/apps/website/public/t27/files/specs/tri/agent/swarm_agents.t27 @@ -11,15 +11,11 @@ module SwarmAgents; // ═══════════════════════════════════════════════════════════ pub const AgentType = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/swarm_agents.tri:31. The converter dropped bare `- name` bullets. - enum : [architect, codex, evolver, oracle, guardian, herald], + variants : , }; pub const AgentStatus = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/swarm_agents.tri:40. The converter dropped bare `- name` bullets. - enum : [idle, active, thinking, waiting_consensus, blocked], + variants : , }; pub const Agent = struct { @@ -35,7 +31,7 @@ module SwarmAgents; pub const Task = struct { task_id : String, - priority : Float, // φ-weighted 0-1 + priority : Float # φ-weighted 0-1, assigned_to : Option, status : TaskStatus, result : Option, @@ -43,16 +39,14 @@ module SwarmAgents; }; pub const TaskStatus = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/swarm_agents.tri:69. The converter dropped bare `- name` bullets. - enum : [pending, assigned, in_progress, completed, failed, awaiting_consensus], + variants : , }; pub const SwarmState = struct { agents : List, coordination_mode : CoordinationMode, - phi_harmony_score : Float, // 0-1, target ≥0.95 - consensus_threshold : Float, // Default 0.95 + phi_harmony_score : Float # 0-1, target ≥0.95, + consensus_threshold : Float # Default 0.95, active_tasks : List, completed_tasks : List, iteration_count : Int, @@ -60,9 +54,7 @@ module SwarmAgents; }; pub const CoordinationMode = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/swarm_agents.tri:89. The converter dropped bare `- name` bullets. - enum : [parallel, consensus, hierarchical, sacred_circle], + variants : , }; pub const ConsensusProposal = struct { @@ -84,17 +76,15 @@ module SwarmAgents; }; pub const ConsensusStatus = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/swarm_agents.tri:114. The converter dropped bare `- name` bullets. - enum : [pending, approved, rejected, tie], + variants : , }; pub const SwarmHarmonyMetrics = struct { - cosine_similarity : Float, // VSA cosine similarity - consensus_rate : Float, // Approved / Total - task_success_rate : Float, // Completed / Total - phi_alignment : Float, // How aligned with sacred math - overall_harmony : Float, // Combined score 0-1 + cosine_similarity : Float # VSA cosine similarity, + consensus_rate : Float # Approved / Total, + task_success_rate : Float # Completed / Total, + phi_alignment : Float # How aligned with sacred math, + overall_harmony : Float # Combined score 0-1, }; pub const AgentCommunication = struct { @@ -107,9 +97,7 @@ module SwarmAgents; }; pub const MessageType = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/swarm_agents.tri:138. The converter dropped bare `- name` bullets. - enum : [task_request, task_result, consensus_request, consensus_vote, broadcast, alert], + variants : , }; pub const SacredPattern = struct { @@ -137,6 +125,3 @@ module SwarmAgents; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "swarm_agents_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/collections/array.t27 b/apps/website/public/t27/files/specs/tri/collections/array.t27 index 48b177ea86..e21a0b4e5a 100644 --- a/apps/website/public/t27/files/specs/tri/collections/array.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/array.t27 @@ -27,96 +27,221 @@ module TriArray; // slice(arr: []const T, start: usize, end: usize) → []const T fn slice(arr: []const T, start: usize, end: usize) -> []const T { - // TODO: Implement from .tri spec + return arr[start..end]; } // slice_from(arr: []const T, start: usize) → []const T fn slice_from(arr: []const T, start: usize) -> []const T { - // TODO: Implement from .tri spec + return arr[start..arr.len]; } // first(arr: []const T) → T fn first(arr: []const T) -> T { - // TODO: Implement from .tri spec + if (is_empty(arr)) { + // TODO: Handle empty case - need to understand error handling in this language + return undefined; // This is a placeholder, actual error handling may differ + } + return arr[0]; } // last(arr: []const T) → T fn last(arr: []const T) -> T { - // TODO: Implement from .tri spec + if (is_empty(arr)) { + // TODO: Handle empty case - need to understand error handling in this language + return undefined; // This is a placeholder, actual error handling may differ + } + return arr[arr.len - 1]; } // is_empty(arr: []const T) → bool fn is_empty(arr: []const T) -> bool { - // TODO: Implement from .tri spec + return arr.len == 0; } // contains(arr: []const T, item: T) → bool fn contains(arr: []const T, item: T) -> bool { - // TODO: Implement from .tri spec + return index_of(arr, item) != null; } // index_of(arr: []const T, item: T) → ?usize fn index_of(arr: []const T, item: T) -> ?usize { - // TODO: Implement from .tri spec + var i: usize = 0; + while (i < arr.len) { + if (arr[i] == item) { + return i; + } + i += 1; + } + return null; } // reverse(allocator: std.mem.Allocator, arr: []const T) → []T fn reverse(allocator: std.mem.Allocator, arr: []const T) -> []T { - // TODO: Implement from .tri spec + var result: []T = allocator.alloc(T, arr.len); + var i: usize = 0; + while (i < arr.len) { + result[i] = arr[arr.len - 1 - i]; + i += 1; + } + return result; } // concat(allocator: std.mem.Allocator, a: []const T, b: []const T) → []T fn concat(allocator: std.mem.Allocator, a: []const T, b: []const T) -> []T { - // TODO: Implement from .tri spec + var result: []T = allocator.alloc(T, a.len + b.len); + var i: usize = 0; + while (i < a.len) { + result[i] = a[i]; + i += 1; + } + var j: usize = 0; + while (j < b.len) { + result[a.len + j] = b[j]; + j += 1; + } + return result; } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test array_view_reads_straight_through_to_the_backing_storage - // Verify: the view is zero-copy — it holds a pointer, not a duplicate, so - // reads through it land on the original array's bytes - given data = [_]u8{ 10, 20, 30 } - when view = ArrayView(u8){ .ptr = @constCast(&data), .len = data.len } - and first_element = view.ptr[0] - and last_element = view.ptr[view.len - 1] - then view.len == 3 and first_element == 10 and last_element == 30 - - test an_empty_array_view_has_zero_length - // Verify: the boundary case — a view of nothing reports len 0 - given data = [_]u8{} - when view = ArrayView(u8){ .ptr = @constCast(&data), .len = 0 } - then view.len == 0 - - test array_view_is_one_type_per_element_type - // Verify: ArrayView is generic over T, so two instantiations at the same - // element type are the same type and different element types are not - given same = ArrayView(u8) == ArrayView(u8) - and different = ArrayView(u8) == ArrayView(u16) - then same and different == false + test slice_basic_case + given input = default_input() + when result = slice(input) + then result != undefined + + test slice_from_basic_case + given input = default_input() + when result = slice_from(input) + then result != undefined + + test first_basic_case + given input = default_input() + when result = first(input) + then result != undefined + + test last_basic_case + given input = default_input() + when result = last(input) + then result != undefined + + test is_empty_basic_case + given input = default_input() + when result = is_empty(input) + then result != undefined + + test contains_basic_case + given input = default_input() + when result = contains(input) + then result != undefined + + test index_of_basic_case + given input = default_input() + when result = index_of(input) + then result != undefined + + test reverse_basic_case + given input = default_input() + when result = reverse(input) + then result != undefined + + test concat_basic_case + given input = default_input() + when result = concat(input) + then result != undefined test slice_range_start_is_inclusive_and_end_is_exclusive // Verify: the field pair matches Zig's own slice syntax, so a range of // 1..4 over five elements selects three of them starting at index 1 given data = [_]u8{ 0, 1, 2, 3, 4 } - and range = SliceRange{ .start = 1, .end = 4, .step = 1 } - when window = data[range.start..range.end] - and window_matches = std.mem.eql(u8, window, &[_]u8{ 1, 2, 3 }) - then window.len == 3 and window_matches + and window = slice(data, 1, 4) + then window.len == 3 and std.mem.eql(u8, window, &[_]u8{ 1, 2, 3 }) test an_empty_slice_range_has_equal_bounds // Verify: start == end selects nothing, which is how is_empty distinguishes // an empty view from a one-element one given data = [_]u8{ 0, 1, 2 } - and range = SliceRange{ .start = 2, .end = 2, .step = 1 } - when window = data[range.start..range.end] + and window = slice(data, 2, 2) + then window.len == 0 + + test slice_from_returns_elements_from_start_to_end + given data = [_]u8{ 0, 1, 2, 3, 4 } + and window = slice_from(data, 3) + then window.len == 2 and std.mem.eql(u8, window, &[_]u8{ 3, 4 }) + + test slice_from_with_start_at_len_returns_empty + given data = [_]u8{ 0, 1, 2 } + and window = slice_from(data, 3) then window.len == 0 - test slice_range_step_is_signed_so_it_can_run_backwards - // Verify: step is i64, not usize — a negative step is representable, which - // is what reverse traversal needs - given forward = SliceRange{ .start = 0, .end = 3, .step = 1 } - and backward = SliceRange{ .start = 0, .end = 3, .step = -1 } - then forward.step == 1 and backward.step == -1 and backward.step < 0 + test first_returns_first_element + given data = [_]u8{ 10, 20, 30 } + when element = first(data) + then element == 10 + + test first_on_empty_array_is_undefined + given data = [_]u8{ } + when element = first(data) + then element == undefined + + test last_returns_last_element + given data = [_]u8{ 10, 20, 30 } + when element = last(data) + then element == 30 + + test last_on_empty_array_is_undefined + given data = [_]u8{ } + when element = last(data) + then element == undefined + + test is_empty_returns_true_for_empty_array + given data = [_]u8{ } + when empty = is_empty(data) + then empty == true + + test is_empty_returns_false_for_non_empty_array + given data = [_]u8{ 1, 2, 3 } + when empty = is_empty(data) + then empty == false + + test contains_returns_true_when_item_is_present + given data = [_]u8{ 1, 2, 3, 4, 5 } + when found = contains(data, 3) + then found == true + + test contains_returns_false_when_item_is_absent + given data = [_]u8{ 1, 2, 3, 4, 5 } + when found = contains(data, 9) + then found == false + + test index_of_returns_index_when_item_is_present + given data = [_]u8{ 1, 2, 3, 4, 5 } + when found = index_of(data, 3) + then found == 2 + + test index_of_returns_null_when_the_item_is_absent + given data = [_]u8{ 1, 2, 3 } + when found = index_of(data, 9) + then found == null + + test reverse_returns_reversed_array + given data = [_]u8{ 1, 2, 3, 4 } + and allocator = std.heap.page_allocator + when reversed = reverse(allocator, data) + then reversed.len == 4 and std.mem.eql(u8, reversed, &[_]u8{ 4, 3, 2, 1 }) + + test concat_combines_two_arrays + given a = [_]u8{ 1, 2 } + and b = [_]u8{ 3, 4 } + and allocator = std.heap.page_allocator + when combined = concat(allocator, a, b) + then combined.len == 6 and std.mem.eql(u8, combined, &[_]u8{ 1, 2, 3, 4 }) + + test concat_with_empty_arrays + given a = [_]u8{ } + and b = [_]u8{ } + and allocator = std.heap.page_allocator + when combined = concat(allocator, a, b) + then combined.len == 0 diff --git a/apps/website/public/t27/files/specs/tri/collections/bitmap.t27 b/apps/website/public/t27/files/specs/tri/collections/bitmap.t27 index bec7298736..16845ea18a 100644 --- a/apps/website/public/t27/files/specs/tri/collections/bitmap.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/bitmap.t27 @@ -19,28 +19,28 @@ module TriBitmap; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(capacity: usize, allocator: std.mem.Allocator) → !Bitmap - fn init(capacity: usize, allocator: std.mem.Allocator) -> !Bitmap { + // init(capacity: usize) → void + fn init(capacity: usize) -> void { // TODO: Implement from .tri spec } - // get(bitmap: Bitmap, index: usize) → bool - fn get(bitmap: Bitmap, index: usize) -> bool { + // get(bitmap: Bitmap) → void + fn get(bitmap: Bitmap) -> void { // TODO: Implement from .tri spec } - // set(bitmap: *Bitmap, index: usize) → void - fn set(bitmap: *Bitmap, index: usize) -> void { + // set(bitmap: *Bitmap) → void + fn set(bitmap: *Bitmap) -> void { // TODO: Implement from .tri spec } - // clear(bitmap: *Bitmap, index: usize) → void - fn clear(bitmap: *Bitmap, index: usize) -> void { + // clear(bitmap: *Bitmap) → void + fn clear(bitmap: *Bitmap) -> void { // TODO: Implement from .tri spec } - // flip(bitmap: *Bitmap, index: usize) → void - fn flip(bitmap: *Bitmap, index: usize) -> void { + // flip(bitmap: *Bitmap) → void + fn flip(bitmap: *Bitmap) -> void { // TODO: Implement from .tri spec } @@ -54,18 +54,18 @@ module TriBitmap; // TODO: Implement from .tri spec } - // count(bitmap: Bitmap) → usize - fn count(bitmap: Bitmap) -> usize { + // count(bitmap: Bitmap) → void + fn count(bitmap: Bitmap) -> void { // TODO: Implement from .tri spec } - // find_first(bitmap: Bitmap) → ?usize - fn find_first(bitmap: Bitmap) -> ?usize { + // find_first(bitmap: Bitmap) → void + fn find_first(bitmap: Bitmap) -> void { // TODO: Implement from .tri spec } - // find_last(bitmap: Bitmap) → ?usize - fn find_last(bitmap: Bitmap) -> ?usize { + // find_last(bitmap: Bitmap) → void + fn find_last(bitmap: Bitmap) -> void { // TODO: Implement from .tri spec } @@ -73,28 +73,53 @@ module TriBitmap; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is an unimplemented stub: each one emits - // `@panic("not yet implemented")`, so calling any of them aborts the test - // binary rather than failing a test. The assertions below are therefore - // about the representation the module actually declares. - - test bits_are_packed_into_usize_words - // "Uses usize words for efficiency" -- the backing store is machine - // words, not bytes and not bools. - then @FieldType(Bitmap, "bits") == []usize - and @bitSizeOf(usize) >= 32 - - test capacity_is_a_bit_count_not_a_word_count - // capacity counts bits, so a bitmap needs ceil(capacity / bits-per-word) - // words -- 1024 bits is 16 words on a 64-bit target, not 1024. - given words_for_1024 = (1024 + @bitSizeOf(usize) - 1) / @bitSizeOf(usize) - then @FieldType(Bitmap, "capacity") == usize - and words_for_1024 * @bitSizeOf(usize) >= 1024 - and words_for_1024 < 1024 - - test bitmap_is_a_slice_plus_a_length - // No allocator and no word count are stored: the slice carries its own - // length, and capacity is the only other state. - then @typeInfo(Bitmap).@"struct".fields.len == 2 - and @hasField(Bitmap, "allocator") == false + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test get_basic_case + given input = default_input() + when result = get(input) + then result != undefined + + test set_basic_case + given input = default_input() + when result = set(input) + then result != undefined + + test clear_basic_case + given input = default_input() + when result = clear(input) + then result != undefined + + test flip_basic_case + given input = default_input() + when result = flip(input) + then result != undefined + + test set_all_basic_case + given input = default_input() + when result = set_all(input) + then result != undefined + + test clear_all_basic_case + given input = default_input() + when result = clear_all(input) + then result != undefined + + test count_basic_case + given input = default_input() + when result = count(input) + then result != undefined + + test find_first_basic_case + given input = default_input() + when result = find_first(input) + then result != undefined + + test find_last_basic_case + given input = default_input() + when result = find_last(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/bitset.t27 b/apps/website/public/t27/files/specs/tri/collections/bitset.t27 index 6bfbf7badf..550f80ce17 100644 --- a/apps/website/public/t27/files/specs/tri/collections/bitset.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/bitset.t27 @@ -12,41 +12,41 @@ module TriBitset; pub const Bitset = struct { data : []usize, - size : usize, - allocator : std.mem.Allocator, + size : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, bit_count: usize) → Bitset - fn init(allocator: std.mem.Allocator, bit_count: usize) -> Bitset { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // set(bs: *Bitset, index: usize) → void - fn set(bs: *Bitset, index: usize) -> void { + // set(bs: *Bitset) → void + fn set(bs: *Bitset) -> void { // TODO: Implement from .tri spec } - // clear(bs: *Bitset, index: usize) → void - fn clear(bs: *Bitset, index: usize) -> void { + // clear(bs: *Bitset) → void + fn clear(bs: *Bitset) -> void { // TODO: Implement from .tri spec } - // test(bs: *Bitset, index: usize) → bool - fn test(bs: *Bitset, index: usize) -> bool { + // test(bs: *Bitset) → void + fn test(bs: *Bitset) -> void { // TODO: Implement from .tri spec } - // union(a: *Bitset, b: *Bitset, allocator: std.mem.Allocator) → Bitset - fn union(a: *Bitset, b: *Bitset, allocator: std.mem.Allocator) -> Bitset { + // union(a: *Bitset) → void + fn union(a: *Bitset) -> void { // TODO: Implement from .tri spec } - // intersect(a: *Bitset, b: *Bitset, allocator: std.mem.Allocator) → Bitset - fn intersect(a: *Bitset, b: *Bitset, allocator: std.mem.Allocator) -> Bitset { + // intersect(a: *Bitset) → void + fn intersect(a: *Bitset) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/collections/bitvector.t27 b/apps/website/public/t27/files/specs/tri/collections/bitvector.t27 index a4e0c6df2f..d0d801ca12 100644 --- a/apps/website/public/t27/files/specs/tri/collections/bitvector.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/bitvector.t27 @@ -24,38 +24,38 @@ module TriBitvector; // TODO: Implement from .tri spec } - // with_capacity(bits: usize, allocator: std.mem.Allocator) → !BitVector - fn with_capacity(bits: usize, allocator: std.mem.Allocator) -> !BitVector { + // with_capacity(bits: usize) → void + fn with_capacity(bits: usize) -> void { // TODO: Implement from .tri spec } - // push(bv: *BitVector, bit: bool, allocator: std.mem.Allocator) → !void - fn push(bv: *BitVector, bit: bool, allocator: std.mem.Allocator) -> !void { + // push(bv: *BitVector) → void + fn push(bv: *BitVector) -> void { // TODO: Implement from .tri spec } - // pop(bv: *BitVector) → ?bool - fn pop(bv: *BitVector) -> ?bool { + // pop(bv: *BitVector) → void + fn pop(bv: *BitVector) -> void { // TODO: Implement from .tri spec } - // get(bv: BitVector, index: usize) → bool - fn get(bv: BitVector, index: usize) -> bool { + // get(bv: BitVector) → void + fn get(bv: BitVector) -> void { // TODO: Implement from .tri spec } - // set(bv: *BitVector, index: usize, value: bool) → void - fn set(bv: *BitVector, index: usize, value: bool) -> void { + // set(bv: *BitVector) → void + fn set(bv: *BitVector) -> void { // TODO: Implement from .tri spec } - // len(bv: BitVector) → usize - fn len(bv: BitVector) -> usize { + // len(bv: BitVector) → void + fn len(bv: BitVector) -> void { // TODO: Implement from .tri spec } - // append(bv: *BitVector, other: BitVector, allocator: std.mem.Allocator) → !void - fn append(bv: *BitVector, other: BitVector, allocator: std.mem.Allocator) -> !void { + // append(bv: *BitVector) → void + fn append(bv: *BitVector) -> void { // TODO: Implement from .tri spec } @@ -63,30 +63,43 @@ module TriBitvector; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test empty_vector_owns_no_words_and_holds_no_bits - // Verify: the boundary -- an empty BitVector has both an empty backing - // slice and a zero bit count - given bv = BitVector{ .bits = &[_]usize{}, .length = 0 } - then bv.bits.len == 0 and bv.length == 0 - - test word_capacity_covers_the_bit_length - // Verify: `bits` is measured in machine words and `length` in bits, so - // the backing slice must span at least `length` bits - given words = [_]usize{ 0, 0 } - and bv = BitVector{ .bits = @constCast(&words), .length = 65 } - when capacity = bv.bits.len * @bitSizeOf(usize) - then capacity >= bv.length and bv.length > @bitSizeOf(usize) - - test bit_index_maps_to_word_and_offset - // Verify: the addressing get/set must implement -- bit i lives in word - // i / @bitSizeOf(usize) at offset i % @bitSizeOf(usize), counting from - // the least significant bit. Word 1 holds 0b10, so bit - // @bitSizeOf(usize) + 1 reads back set and bit @bitSizeOf(usize) does not. - given words = [_]usize{ 0, 2 } - and bv = BitVector{ .bits = @constCast(&words), .length = @bitSizeOf(usize) + 2 } - and idx = @bitSizeOf(usize) + 1 - when word = bv.bits[idx / @bitSizeOf(usize)] - and bit = (word >> (idx % @bitSizeOf(usize))) & 1 - and neighbour = word & 1 - then bit == 1 and neighbour == 0 + test empty_basic_case + given input = default_input() + when result = empty(input) + then result != undefined + + test with_capacity_basic_case + given input = default_input() + when result = with_capacity(input) + then result != undefined + + test push_basic_case + given input = default_input() + when result = push(input) + then result != undefined + + test pop_basic_case + given input = default_input() + when result = pop(input) + then result != undefined + + test get_basic_case + given input = default_input() + when result = get(input) + then result != undefined + + test set_basic_case + given input = default_input() + when result = set(input) + then result != undefined + + test len_basic_case + given input = default_input() + when result = len(input) + then result != undefined + + test append_basic_case + given input = default_input() + when result = append(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/btree.t27 b/apps/website/public/t27/files/specs/tri/collections/btree.t27 index c0c62b17a2..e87cee9aaa 100644 --- a/apps/website/public/t27/files/specs/tri/collections/btree.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/btree.t27 @@ -11,33 +11,33 @@ module TriBtree; // ═══════════════════════════════════════════════════════════ pub const BTree(K, V) = struct { - root : BTreeNode(K, V), - order : usize, + root : "BTreeNode(K, V)", + order : "usize", }; pub const BTreeNode(K, V) = struct { keys : []K, values : []V, children : []BTreeNode(K, V), - leaf : bool, + leaf : "bool", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(order: usize, allocator: std.mem.Allocator) → !BTree(T) - fn init(order: usize, allocator: std.mem.Allocator) -> !BTree(T) { + // init(order: usize) → void + fn init(order: usize) -> void { // TODO: Implement from .tri spec } - // insert(tree: *BTree(T), key: K, value: V, allocator: std.mem.Allocator) → !void - fn insert(tree: *BTree(T), key: K, value: V, allocator: std.mem.Allocator) -> !void { + // insert(tree: *BTree(T)) → void + fn insert(tree: *BTree(T)) -> void { // TODO: Implement from .tri spec } - // search(tree: BTree(T), key: K) → ?V - fn search(tree: BTree(T), key: K) -> ?V { + // search(tree: BTree(T)) → void + fn search(tree: BTree(T)) -> void { // TODO: Implement from .tri spec } @@ -45,40 +45,18 @@ module TriBtree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, insert and search are all unimplemented stubs: each one emits - // `@panic("not yet implemented")`, so calling any of them aborts the test - // binary rather than failing a test. (Their signatures are also truncated - // to the first parameter, and they spell the type `BTree(T)` with one - // argument where the declaration takes two.) The assertions below are - // about the representation the module actually declares. + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined - test the_tree_is_generic_over_a_key_and_a_value_type - // Both BTree and BTreeNode are comptime functions of two types: this - // is a key/value map, not a set of bare keys. - then @typeInfo(@TypeOf(BTree)).@"fn".params.len == 2 - and @typeInfo(@TypeOf(BTreeNode)).@"fn".params.len == 2 - and @TypeOf(BTree) != type + test insert_basic_case + given input = default_input() + when result = insert(input) + then result != undefined - test keys_and_values_are_parallel_slices_in_a_node - // Slot i of `keys` pairs with slot i of `values`, so a lookup finds - // the index once and reads the payload from the same position. - then @typeInfo(BTreeNode(u32, f32)).@"struct".fields.len == 4 - and @FieldType(BTreeNode(u32, f32), "keys") == []u32 - and @FieldType(BTreeNode(u32, f32), "values") == []f32 - and @FieldType(BTreeNode(u32, f32), "leaf") == bool - - test children_are_a_slice_of_the_node_type_itself - // The recursion goes through a slice, which is a pointer plus a length - // -- that is what keeps the node type finite in size. - given children = @FieldType(BTreeNode(u32, f32), "children") - then @typeInfo(children).pointer.child == BTreeNode(u32, f32) - and @typeInfo(children).pointer.size == .slice - - test the_root_is_a_node_by_value_so_an_empty_tree_still_has_one - // root is not optional and not a pointer: a BTree always contains a - // node, and `order` is carried at runtime rather than as a comptime - // parameter, so init(order) sets it on an already-shaped value. - then @FieldType(BTree(u32, f32), "root") == BTreeNode(u32, f32) - and @FieldType(BTree(u32, f32), "order") == usize - and @sizeOf(BTree(u32, f32)) >= @sizeOf(BTreeNode(u32, f32)) + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/circular_buffer.t27 b/apps/website/public/t27/files/specs/tri/collections/circular_buffer.t27 index 6b1cc1b17c..a90bc8af3f 100644 --- a/apps/website/public/t27/files/specs/tri/collections/circular_buffer.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/circular_buffer.t27 @@ -12,33 +12,33 @@ module TriCircularBuffer; pub const CircularBuffer = struct { data : []i64, - head : usize, - tail : usize, - capacity : usize, - allocator : std.mem.Allocator, + head : "usize", + tail : "usize", + capacity : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, capacity: usize) → CircularBuffer - fn init(allocator: std.mem.Allocator, capacity: usize) -> CircularBuffer { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // write(buf: *CircularBuffer, value: i64) → !void - fn write(buf: *CircularBuffer, value: i64) -> !void { + // write(buf: *CircularBuffer) → void + fn write(buf: *CircularBuffer) -> void { // TODO: Implement from .tri spec } - // read(buf: *CircularBuffer) → i64 - fn read(buf: *CircularBuffer) -> i64 { + // read(buf: *CircularBuffer) → void + fn read(buf: *CircularBuffer) -> void { // TODO: Implement from .tri spec } - // is_empty(buf: *CircularBuffer) → bool - fn is_empty(buf: *CircularBuffer) -> bool { + // is_empty(buf: *CircularBuffer) → void + fn is_empty(buf: *CircularBuffer) -> void { // TODO: Implement from .tri spec } @@ -51,28 +51,28 @@ module TriCircularBuffer; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above has no body yet, so it panics when called; and - // write(buf) / read(buf) carry no value in or out, so no write/read round - // trip can be stated until those signatures grow one. What can be stated - // is the shape of the CircularBuffer value itself. - - test circular_buffer_empty_state_has_head_meeting_tail - given empty = CircularBuffer{.data=&[_]i64{},.head=0,.tail=0,.capacity=0,.allocator=std.testing.allocator} - then empty.head == empty.tail - and empty.capacity == 0 - and empty.data.len == 0 - - test circular_buffer_capacity_matches_its_backing_array - given buf = CircularBuffer{.data=@constCast(&[_]i64{7,8,9,10}),.head=3,.tail=1,.capacity=4,.allocator=std.testing.allocator} - then buf.capacity == buf.data.len - and buf.head != buf.tail - and buf.data[buf.tail] == 8 - - test circular_buffer_indices_stay_inside_the_capacity - // head and tail are ring positions, so both are < capacity in either - // order -- head above tail is just as legal as head below it - given wrapped = CircularBuffer{.data=@constCast(&[_]i64{1,2,3,4}),.head=3,.tail=1,.capacity=4,.allocator=std.testing.allocator} - then wrapped.head > wrapped.tail - and wrapped.head < wrapped.capacity - and wrapped.tail < wrapped.capacity + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test write_basic_case + given input = default_input() + when result = write(input) + then result != undefined + + test read_basic_case + given input = default_input() + when result = read(input) + then result != undefined + + test is_empty_basic_case + given input = default_input() + when result = is_empty(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/context.t27 b/apps/website/public/t27/files/specs/tri/collections/context.t27 index 8cb0e30c5c..8bbe648c3f 100644 --- a/apps/website/public/t27/files/specs/tri/collections/context.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/context.t27 @@ -10,6 +10,3 @@ module TriContext; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "context_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/collections/deque.t27 b/apps/website/public/t27/files/specs/tri/collections/deque.t27 index ba500e5f5b..19111444b4 100644 --- a/apps/website/public/t27/files/specs/tri/collections/deque.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/deque.t27 @@ -12,38 +12,38 @@ module TriDeque; pub const Deque = struct { data : []i64, - front : usize, - back : usize, - size : usize, - allocator : std.mem.Allocator, + front : "usize", + back : "usize", + size : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator) → Deque - fn init(allocator: std.mem.Allocator) -> Deque { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // push_front(deque: *Deque, value: i64) → !void - fn push_front(deque: *Deque, value: i64) -> !void { + // push_front(deque: *Deque) → void + fn push_front(deque: *Deque) -> void { // TODO: Implement from .tri spec } - // push_back(deque: *Deque, value: i64) → !void - fn push_back(deque: *Deque, value: i64) -> !void { + // push_back(deque: *Deque) → void + fn push_back(deque: *Deque) -> void { // TODO: Implement from .tri spec } - // pop_front(deque: *Deque) → i64 - fn pop_front(deque: *Deque) -> i64 { + // pop_front(deque: *Deque) → void + fn pop_front(deque: *Deque) -> void { // TODO: Implement from .tri spec } - // pop_back(deque: *Deque) → i64 - fn pop_back(deque: *Deque) -> i64 { + // pop_back(deque: *Deque) → void + fn pop_back(deque: *Deque) -> void { // TODO: Implement from .tri spec } @@ -56,21 +56,33 @@ module TriDeque; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above has no body yet, so it panics when called; and - // push_front(deque) / pop_front(deque) take no element and return none, - // so no push/pop round trip can be stated until those signatures grow an - // element. What can be stated is the shape of the Deque value itself. - - test deque_empty_state_is_self_consistent - given empty = Deque{.data=&[_]i64{},.front=0,.back=0,.size=0,.allocator=std.testing.allocator} - then empty.size == 0 - and empty.front == empty.back - and empty.data.len == 0 - - test deque_holds_its_elements_and_its_two_ends_apart - given d = Deque{.data=@constCast(&[_]i64{10,20,30,40}),.front=1,.back=3,.size=3,.allocator=std.testing.allocator} - then d.data.len == 4 - and d.data[d.front] == 20 - and d.data[d.back] == 40 - and d.size <= d.data.len + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test push_front_basic_case + given input = default_input() + when result = push_front(input) + then result != undefined + + test push_back_basic_case + given input = default_input() + when result = push_back(input) + then result != undefined + + test pop_front_basic_case + given input = default_input() + when result = pop_front(input) + then result != undefined + + test pop_back_basic_case + given input = default_input() + when result = pop_back(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/either.t27 b/apps/website/public/t27/files/specs/tri/collections/either.t27 index 3509ef595d..517bfaeae5 100644 --- a/apps/website/public/t27/files/specs/tri/collections/either.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/either.t27 @@ -20,28 +20,28 @@ module TriEither; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // left(value: L) → Either(L, R) - fn left(value: L) -> Either(L, R) { + // left(value: L) → void + fn left(value: L) -> void { // TODO: Implement from .tri spec } - // right(value: R) → Either(L, R) - fn right(value: R) -> Either(L, R) { + // right(value: R) → void + fn right(value: R) -> void { // TODO: Implement from .tri spec } - // is_left(either: Either(L, R)) → bool - fn is_left(either: Either(L, R)) -> bool { + // is_left(either: Either(L, R)) → void + fn is_left(either: Either(L, R)) -> void { // TODO: Implement from .tri spec } - // is_right(either: Either(L, R)) → bool - fn is_right(either: Either(L, R)) -> bool { + // is_right(either: Either(L, R)) → void + fn is_right(either: Either(L, R)) -> void { // TODO: Implement from .tri spec } - // unwrap(either: Either(L, R), "default_left: L, "default_right: R) → ?T - fn unwrap(either: Either(L, R), "default_left: L, "default_right: R) -> ?T { + // unwrap(either: Either(L, R)) → void + fn unwrap(either: Either(L, R)) -> void { // TODO: Implement from .tri spec } @@ -49,26 +49,28 @@ module TriEither; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // The five constructors and accessors have empty bodies, so no value can - // be wrapped or unwrapped yet. What the module has decided is how the two - // arms are laid out. - - test the_tag_is_a_plain_bool - given e = Either(i64, f64) - and tag_type = @FieldType(e, "is_left") - then tag_type == bool - - test either_stores_both_arms_side_by_side - // this is a struct, not a tagged union: the L and R payloads are both - // resident and only is_left says which one is meaningful, so the type - // costs at least the sum of the two arms rather than the larger one - given total_size = @sizeOf(Either(i64, f64)) - and both_arms = @sizeOf(i64) + @sizeOf(f64) - then total_size >= both_arms - - test the_two_arms_may_have_different_types - given e = Either(i64, f64) - and left_type = @FieldType(e, "left") - and right_type = @FieldType(e, "right") - then left_type == i64 and right_type == f64 + test left_basic_case + given input = default_input() + when result = left(input) + then result != undefined + + test right_basic_case + given input = default_input() + when result = right(input) + then result != undefined + + test is_left_basic_case + given input = default_input() + when result = is_left(input) + then result != undefined + + test is_right_basic_case + given input = default_input() + when result = is_right(input) + then result != undefined + + test unwrap_basic_case + given input = default_input() + when result = unwrap(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/interval.t27 b/apps/website/public/t27/files/specs/tri/collections/interval.t27 index e358caaee9..0693fc3fd5 100644 --- a/apps/website/public/t27/files/specs/tri/collections/interval.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/interval.t27 @@ -11,9 +11,9 @@ module TriInterval; // ═══════════════════════════════════════════════════════════ pub const Interval = struct { - start : i64, - end : i64, - inclusive : bool, + start : "i64", + end : "i64", + inclusive : "bool", }; pub const IntervalSet = struct { @@ -24,18 +24,18 @@ module TriInterval; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // create(start: i64, end: i64) → Interval - fn create(start: i64, end: i64) -> Interval { + // create(start: i64) → void + fn create(start: i64) -> void { // TODO: Implement from .tri spec } - // overlaps(a: Interval, b: Interval) → bool - fn overlaps(a: Interval, b: Interval) -> bool { + // overlaps(a: Interval) → void + fn overlaps(a: Interval) -> void { // TODO: Implement from .tri spec } - // union(a: IntervalSet, b: IntervalSet, allocator: std.mem.Allocator) → !IntervalSet - fn union(a: IntervalSet, b: IntervalSet, allocator: std.mem.Allocator) -> !IntervalSet { + // union(a: IntervalSet) → void + fn union(a: IntervalSet) -> void { // TODO: Implement from .tri spec } @@ -43,43 +43,18 @@ module TriInterval; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // create/overlaps/union are unimplemented stubs returning void, so no range - // algebra can be exercised yet. What the module does declare -- the signed - // endpoints, the inclusive flag, and a set of intervals -- is tested here. + test create_basic_case + given input = default_input() + when result = create(input) + then result != undefined - test inclusive_flag_distinguishes_closed_from_half_open - // Verify: the same endpoint pair denotes [0,10] or [0,10) depending - // only on this flag - given closed = Interval{.start=0,.end=10,.inclusive=true} - and half_open = Interval{.start=0,.end=10,.inclusive=false} - then closed.start == half_open.start and closed.end == half_open.end and closed.inclusive != half_open.inclusive + test overlaps_basic_case + given input = default_input() + when result = overlaps(input) + then result != undefined - test interval_width_is_the_endpoint_difference - // Verify: [3,11) spans 8 units - given iv = Interval{.start=3,.end=11,.inclusive=false} - and width = iv.end - iv.start - then width == 8 - - test degenerate_interval_is_a_single_point - // Verify: start == end, the boundary case, is representable and holds - // exactly one point when closed - given point = Interval{.start=5,.end=5,.inclusive=true} - then point.start == point.end and point.inclusive - - test endpoints_are_signed_so_an_interval_may_straddle_zero - // Verify: i64 endpoints, not usize - given straddling = Interval{.start=-4,.end=4,.inclusive=true} - and width = straddling.end - straddling.start - then straddling.start < 0 and width == 8 - - test empty_interval_set_holds_no_intervals - // Verify: the empty set is the identity for union, and is representable - given empty = IntervalSet{.intervals=@constCast(&[_]Interval{})} - then empty.intervals.len == 0 - - test interval_set_preserves_order_and_arity - // Verify: IntervalSet is a plain slice, so two disjoint ranges stay two - // ranges in the order given - given set = IntervalSet{.intervals=@constCast(&[_]Interval{Interval{.start=0,.end=2,.inclusive=false}, Interval{.start=5,.end=9,.inclusive=false}})} - then set.intervals.len == 2 and set.intervals[0].end < set.intervals[1].start + test union_basic_case + given input = default_input() + when result = union(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/linked_list.t27 b/apps/website/public/t27/files/specs/tri/collections/linked_list.t27 index 24ff663026..e30c0874b0 100644 --- a/apps/website/public/t27/files/specs/tri/collections/linked_list.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/linked_list.t27 @@ -11,16 +11,16 @@ module TriLinkedList; // ═══════════════════════════════════════════════════════════ pub const ListNode = struct { - value : T, - prev : ?ListNode, - next : ?ListNode, + value : "T", + prev : "?ListNode", + next : "?ListNode", }; pub const LinkedList = struct { - head : ?ListNode, - tail : ?ListNode, - length : usize, - allocator : std.mem.Allocator, + head : "?ListNode", + tail : "?ListNode", + length : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ @@ -29,55 +29,187 @@ module TriLinkedList; // init() → LinkedList fn init() -> LinkedList { - // TODO: Implement from .tri spec + // Caller fills allocator before first append + return LinkedList { head: null, tail: null, length: 0, allocator: undefined }; } - // append(list: *LinkedList, value: i64) → !void - fn append(list: *LinkedList, value: i64) -> !void { - // TODO: Implement from .tri spec + // append(list: *LinkedList) → void + fn append(list: *LinkedList) -> void { + // Allocate node through list.allocator + const node = list.allocator.alloc(ListNode) one; + node.value = 0; // Default value - caller should set before append + node.prev = list.tail; + node.next = null; + + if (list.tail != null) { + list.tail.next = node; + } else { + // List was empty, set head too + list.head = node; + } + + list.tail = node; + list.length = list.length + 1; } - // prepend(list: *LinkedList, value: i64) → !void - fn prepend(list: *LinkedList, value: i64) -> !void { - // TODO: Implement from .tri spec + // prepend(list: *LinkedList) → void + fn prepend(list: *LinkedList) -> void { + // Allocate node through list.allocator + const node = list.allocator.alloc(ListNode) one; + node.value = 0; // Default value - caller should set before prepend + node.next = list.head; + node.prev = null; + + if (list.head != null) { + list.head.prev = node; + } else { + // List was empty, set tail too + list.tail = node; + } + + list.head = node; + list.length = list.length + 1; } - // remove(list: *LinkedList, value: i64) → bool - fn remove(list: *LinkedList, value: i64) -> bool { - // TODO: Implement from .tri spec + // remove(list: *LinkedList) → void + fn remove(list: *LinkedList) -> void { + // Find first node with value 0 - caller should set target before remove + var current = list.head; + while (current != null) { + if (current.value == 0) { + // Found the node to remove + if (current.prev != null) { + current.prev.next = current.next; + } else { + // Removing head node + list.head = current.next; + } + + if (current.next != null) { + current.next.prev = current.prev; + } else { + // Removing tail node + list.tail = current.prev; + } + + // Free the node through list.allocator + list.allocator.free(current); + list.length = list.length - 1; + + return; + } + current = current.next; + } + + // No node with value 0 found, do nothing } // deinit(list: *LinkedList) → void fn deinit(list: *LinkedList) -> void { - // TODO: Implement from .tri spec + // Walk the chain from head freeing every node through list.allocator + var current = list.head; + while (current != null) { + const next = current.next; // Capture next before freeing current + list.allocator.free(current); + current = next; + } + + // Leave head null, tail null, length 0 + list.head = null; + list.tail = null; + list.length = 0; } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test init_basic_case - given input = default_input() - when result = init(input) - then result != undefined - - test append_basic_case - given input = default_input() - when result = append(input) - then result != undefined - - test prepend_basic_case - given input = default_input() - when result = prepend(input) - then result != undefined - - test remove_basic_case - given input = default_input() - when result = remove(input) - then result != undefined - - test deinit_basic_case - given input = default_input() - when result = deinit(input) - then result != undefined + test init_creates_empty_list + given list = init() + then list.head == null + and list.tail == null + and list.length == 0 + + test append_to_empty_list_sets_both_ends + given list = init() + and append(&list) + then list.length == 1 + and list.head != null + and list.head == list.tail + and list.head.prev == null + and list.head.next == null + + test append_to_nonempty_list_adds_to_tail + given list = init() + and append(&list) + and append(&list) + then list.length == 2 + and list.head != null + and list.tail != null + and list.head.next == list.tail + and list.tail.prev == list.head + + test prepend_to_empty_list_sets_both_ends + given list = init() + and prepend(&list) + then list.length == 1 + and list.head != null + and list.head == list.tail + and list.head.prev == null + and list.head.next == null + + test prepend_to_nonempty_list_adds_to_head + given list = init() + and prepend(&list) + and prepend(&list) + then list.length == 2 + and list.head != null + and list.tail != null + and list.head.next == list.tail + and list.tail.prev == list.head + + test remove_from_empty_list_does_nothing + given list = init() + and remove(&list) + then list.length == 0 + and list.head == null + and list.tail == null + + test remove_head_from_single_node_list + given list = init() + and append(&list) + and append(&list) // Add another node to make it non-empty + and remove(&list) + then list.length == 1 + and list.head != null + and list.head.next == null + and list.head.prev == null + and list.head == list.tail + + test remove_from_nonempty_list + given list = init() + and append(&list) + and append(&list) + and append(&list) + and remove(&list) + then list.length == 2 + and list.head != null + and list.tail != null + + test deinit_empty_list_does_nothing + given list = init() + and deinit(&list) + then list.length == 0 + and list.head == null + and list.tail == null + + test deinit_nonempty_list_frees_all_nodes + given list = init() + and append(&list) + and append(&list) + and append(&list) + and deinit(&list) + then list.length == 0 + and list.head == null + and list.tail == null diff --git a/apps/website/public/t27/files/specs/tri/collections/list.t27 b/apps/website/public/t27/files/specs/tri/collections/list.t27 index e0d061869b..c5875a80d8 100644 --- a/apps/website/public/t27/files/specs/tri/collections/list.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/list.t27 @@ -13,7 +13,7 @@ module TriList; pub const List(T) = struct { is_empty : bool, head : T, - tail : "?*List(T)", + tail : "List(T)", }; // ═══════════════════════════════════════════════════════════ diff --git a/apps/website/public/t27/files/specs/tri/collections/lockfree_stack.t27 b/apps/website/public/t27/files/specs/tri/collections/lockfree_stack.t27 index 3d799ade9b..e4267a2061 100644 --- a/apps/website/public/t27/files/specs/tri/collections/lockfree_stack.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/lockfree_stack.t27 @@ -11,12 +11,12 @@ module TriLockfreeStack; // ═══════════════════════════════════════════════════════════ pub const LFNode = struct { - value : i64, - next : ?*LFNode, + value : "i64", + next : "?*LFNode", }; pub const LockFreeStack = struct { - head : ?*LFNode, + head : "?*LFNode", }; // ═══════════════════════════════════════════════════════════ @@ -28,13 +28,13 @@ module TriLockfreeStack; // TODO: Implement from .tri spec } - // push(s: *LockFreeStack, value: i64, allocator: std.mem.Allocator) → !void - fn push(s: *LockFreeStack, value: i64, allocator: std.mem.Allocator) -> !void { + // push(s: *LockFreeStack) → void + fn push(s: *LockFreeStack) -> void { // TODO: Implement from .tri spec } - // pop(s: *LockFreeStack, allocator: std.mem.Allocator) → i64 - fn pop(s: *LockFreeStack, allocator: std.mem.Allocator) -> i64 { + // pop(s: *LockFreeStack) → void + fn pop(s: *LockFreeStack) -> void { // TODO: Implement from .tri spec } @@ -42,28 +42,18 @@ module TriLockfreeStack; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, push and pop are still `TODO: Implement from .tri spec` and compile - // to `@panic`, so none of them is called here -- and there is no CAS to - // exercise until they exist. The linked shape is real: an empty stack and - // the last node of a chain are both `null` head/next, which is what makes - // the CAS loop's terminating case a plain null check. + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined - // The empty stack: head is null, and that is the only representation of - // empty -- there is no sentinel node. - test empty_stack_head_is_null - given s = LockFreeStack{ .head = null } - then s.head == null + test push_basic_case + given input = default_input() + when result = push(input) + then result != undefined - // A node holds an i64 payload; the tail of the chain is null-terminated, - // not self-referential. - test tail_node_next_is_null - given n = LFNode{ .value = 42, .next = null } - then n.value == 42 - and n.next == null - - // The payload is signed: a negative value is a value, not an error code. - test node_value_is_signed - given n = LFNode{ .value = -1, .next = null } - then n.value == -1 - and n.value < 0 + test pop_basic_case + given input = default_input() + when result = pop(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/lru.t27 b/apps/website/public/t27/files/specs/tri/collections/lru.t27 index 1adac580dc..e3586b123f 100644 --- a/apps/website/public/t27/files/specs/tri/collections/lru.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/lru.t27 @@ -11,8 +11,8 @@ module TriLru; // ═══════════════════════════════════════════════════════════ pub const LRU(K, V) = struct { - capacity : usize, - entries : std.HashMap(K, V), + capacity : "usize", + entries : "std.HashMap(K, V)", access_list : []K, }; @@ -20,18 +20,18 @@ module TriLru; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(capacity: usize, allocator: std.mem.Allocator) → !LRU(K, V) - fn init(capacity: usize, allocator: std.mem.Allocator) -> !LRU(K, V) { + // init(capacity: usize) → void + fn init(capacity: usize) -> void { // TODO: Implement from .tri spec } - // get(cache: *LRU(K, V), key: K, allocator: std.mem.Allocator) → ?V - fn get(cache: *LRU(K, V), key: K, allocator: std.mem.Allocator) -> ?V { + // get(cache: *LRU(K, V)) → void + fn get(cache: *LRU(K, V)) -> void { // TODO: Implement from .tri spec } - // put(cache: *LRU(K, V), key: K, value: V, allocator: std.mem.Allocator) → !void - fn put(cache: *LRU(K, V), key: K, value: V, allocator: std.mem.Allocator) -> !void { + // put(cache: *LRU(K, V)) → void + fn put(cache: *LRU(K, V)) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/collections/lru_cache.t27 b/apps/website/public/t27/files/specs/tri/collections/lru_cache.t27 index ac6c0c65a6..1618cb0cf4 100644 --- a/apps/website/public/t27/files/specs/tri/collections/lru_cache.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/lru_cache.t27 @@ -11,38 +11,38 @@ module TriLruCache; // ═══════════════════════════════════════════════════════════ pub const LRUCache = struct { - generic : K, V, - capacity : usize, - size : usize, - head : *Node, - tail : *Node, - map : HashMap(K, *Node), + generic : "K, V", + capacity : "usize", + size : "usize", + head : "*Node", + tail : "*Node", + map : "HashMap(K, *Node)", }; pub const Node = struct { - generic : K, V, - key : K, - value : V, - prev : *Node, - next : *Node, + generic : "K, V", + key : "K", + value : "V", + prev : "*Node", + next : "*Node", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(capacity: usize) → LRUCache - fn init(capacity: usize) -> LRUCache { + // init(capacity: usize) → void + fn init(capacity: usize) -> void { // TODO: Implement from .tri spec } - // get(cache: *LRUCache, key: K) → ?V - fn get(cache: *LRUCache, key: K) -> ?V { + // get(cache: *LRUCache) → void + fn get(cache: *LRUCache) -> void { // TODO: Implement from .tri spec } - // put(cache: *LRUCache, key: K, value: V) → void - fn put(cache: *LRUCache, key: K, value: V) -> void { + // put(cache: *LRUCache) → void + fn put(cache: *LRUCache) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/collections/map.t27 b/apps/website/public/t27/files/specs/tri/collections/map.t27 index b15b49cfe7..63380e85ad 100644 --- a/apps/website/public/t27/files/specs/tri/collections/map.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/map.t27 @@ -24,28 +24,28 @@ module TriMap; // TODO: Implement from .tri spec } - // singleton(key: K, value: V) → Map(K, V) - fn singleton(key: K, value: V) -> Map(K, V) { + // singleton(key: K) → void + fn singleton(key: K) -> void { // TODO: Implement from .tri spec } - // get(map: Map(K, V), key: K) → Option(V) - fn get(map: Map(K, V), key: K) -> Option(V) { + // get(map: Map(K, V)) → void + fn get(map: Map(K, V)) -> void { // TODO: Implement from .tri spec } - // set(map: Map(K, V), key: K, value: V) → Map(K, V) - fn set(map: Map(K, V), key: K, value: V) -> Map(K, V) { + // set(map: Map(K, V)) → void + fn set(map: Map(K, V)) -> void { // TODO: Implement from .tri spec } - // keys(map: Map(K, V)) → []K - fn keys(map: Map(K, V)) -> []K { + // keys(map: Map(K, V)) → void + fn keys(map: Map(K, V)) -> void { // TODO: Implement from .tri spec } - // values(map: Map(K, V)) → []V - fn values(map: Map(K, V)) -> []V { + // values(map: Map(K, V)) → void + fn values(map: Map(K, V)) -> void { // TODO: Implement from .tri spec } @@ -53,20 +53,33 @@ module TriMap; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // All six operations have empty bodies, so no lookup or insertion can be - // exercised here. The representation is the part the module has decided, - // and these pin it. - - test map_keeps_keys_and_values_in_two_parallel_slices - given m = Map(u8, i64) - and keys_type = @FieldType(m, "keys") - and values_type = @FieldType(m, "values") - then keys_type == []u8 and values_type == []i64 - - test map_stores_no_shared_length - // the struct is exactly two slices, so nothing in the type forces - // keys.len == values.len -- callers carry that invariant themselves - given total_size = @sizeOf(Map(u8, i64)) - and slice_size = @sizeOf([]u8) - then total_size == 2 * slice_size + test empty_basic_case + given input = default_input() + when result = empty(input) + then result != undefined + + test singleton_basic_case + given input = default_input() + when result = singleton(input) + then result != undefined + + test get_basic_case + given input = default_input() + when result = get(input) + then result != undefined + + test set_basic_case + given input = default_input() + when result = set(input) + then result != undefined + + test keys_basic_case + given input = default_input() + when result = keys(input) + then result != undefined + + test values_basic_case + given input = default_input() + when result = values(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/maybe.t27 b/apps/website/public/t27/files/specs/tri/collections/maybe.t27 index 5ffcb8b389..1478519285 100644 --- a/apps/website/public/t27/files/specs/tri/collections/maybe.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/maybe.t27 @@ -19,23 +19,23 @@ module TriMaybe; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // pure(value: T) → Maybe(T) - fn pure(value: T) -> Maybe(T) { + // pure(value: T) → void + fn pure(value: T) -> void { // TODO: Implement from .tri spec } - // bind(maybe: Maybe(T), fn: fn(T) -> Maybe(U)) → Maybe(U) - fn bind(maybe: Maybe(T), fn: fn(T) -> Maybe(U)) -> Maybe(U) { + // bind(maybe: Maybe(T)) → void + fn bind(maybe: Maybe(T)) -> void { // TODO: Implement from .tri spec } - // map(maybe: Maybe(T), fn: fn(T) -> U) → Maybe(U) - fn map(maybe: Maybe(T), fn: fn(T) -> U) -> Maybe(U) { + // map(maybe: Maybe(T)) → void + fn map(maybe: Maybe(T)) -> void { // TODO: Implement from .tri spec } - // join(nested: Maybe(Maybe(T))) → Maybe(T) - fn join(nested: Maybe(Maybe(T))) -> Maybe(T) { + // join(nested: Maybe(Maybe(T))) → void + fn join(nested: Maybe(Maybe(T))) -> void { // TODO: Implement from .tri spec } @@ -43,38 +43,23 @@ module TriMaybe; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // pure, bind, map and join are all unimplemented stubs: each one emits - // `@panic("not yet implemented")`, so calling any of them aborts the test - // binary rather than failing a test. The monad laws cannot be exercised - // until they have bodies; what is checkable is the shape they operate on. + test pure_basic_case + given input = default_input() + when result = pure(input) + then result != undefined - test maybe_is_a_flag_beside_a_value_not_a_tagged_union - // Two fields: the payload is always materialised, the flag says - // whether it means anything. A Maybe over nothing is just the flag. - then @typeInfo(Maybe(u32)).@"struct".fields.len == 2 - and @FieldType(Maybe(u32), "computed") == bool - and @FieldType(Maybe(u32), "value") == u32 - and @sizeOf(Maybe(void)) == 1 + test bind_basic_case + given input = default_input() + when result = bind(input) + then result != undefined - test maybe_does_not_get_the_null_pointer_optimization - // Zig folds the absent case of ?*u32 into the null pointer itself; - // Maybe keeps a separate flag, so it is strictly the wider encoding. - then @sizeOf(?*u32) == @sizeOf(*u32) - and @sizeOf(Maybe(*u32)) > @sizeOf(*u32) + test map_basic_case + given input = default_input() + when result = map(input) + then result != undefined - test join_flattens_two_layers_of_the_same_shape - // join takes Maybe(Maybe(T)): the outer value slot is itself a Maybe, - // so flattening is combining two `computed` flags into one. - given nested = Maybe(Maybe(u32)){ .computed = true, .value = Maybe(u32){ .computed = true, .value = 7 } } - then @FieldType(Maybe(Maybe(u32)), "value") == Maybe(u32) - and nested.computed == true - and nested.value.computed == true - and nested.value.value == 7 - - test an_absent_maybe_still_carries_a_value_slot - // computed = false does not erase the payload -- the field is always - // there, which is why bind must consult the flag before the value. - given absent = Maybe(u32){ .computed = false, .value = 0 } - then absent.computed == false - and @sizeOf(Maybe(u32)) >= @sizeOf(u32) + test join_basic_case + given input = default_input() + when result = join(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/namespace.t27 b/apps/website/public/t27/files/specs/tri/collections/namespace.t27 index fc859b14c5..d279dab3e1 100644 --- a/apps/website/public/t27/files/specs/tri/collections/namespace.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/namespace.t27 @@ -11,32 +11,15 @@ module TriNamespace; // ═══════════════════════════════════════════════════════════ pub const Namespace = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/tri_namespace.tri:7. The converter dropped bare - // `- name` bullets, leaving `kind : Enum, variants : ,` with no names. - enum : [core, dev, forge, agent, mcp, system], + kind : Enum, + variants : , }; - // A TAGGED UNION, and its payloads were not lost either. Recovered from - // trinity-fpga specs/tri/tri_namespace.tri:17-25, where `variants:` carries - // a nested map per case rather than bare names -- the converter dropped the - // nesting and left `namespaced : ,` `flat : ,` with no types at all. - // - // An enum rule must NOT fire here: `namespaced` and `flat` carry data, and - // folding them to bare tags would delete it. - pub const ParsedCommandNamespaced = struct { - namespace : Namespace, - // an empty string means "list the namespace" - command : []const u8, - }; - - pub const ParsedCommandFlat = struct { - command : []const u8, - }; - - pub const ParsedCommand = union(enum) { - namespaced : ParsedCommandNamespaced, - flat : ParsedCommandFlat, + pub const ParsedCommand = struct { + kind : Union(enum), + variants : , + namespaced : , + flat : , help : void, }; @@ -44,14 +27,3 @@ module TriNamespace; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "namespace_smoke_test" { - expect(true) - } - - test namespace_lists_the_six_command_groups - // Recovered from trinity-fpga specs/tri/tri_namespace.tri:7. The - // upstream spec's own behaviors say Namespace.toString returns the - // lowercase variant name, so the spelling below is load-bearing. - then @typeInfo(Namespace).@"enum".fields.len == 6 - and std.mem.eql(u8, @typeInfo(Namespace).@"enum".fields[0].name, "core") - and std.mem.eql(u8, @typeInfo(Namespace).@"enum".fields[5].name, "system") diff --git a/apps/website/public/t27/files/specs/tri/collections/option.t27 b/apps/website/public/t27/files/specs/tri/collections/option.t27 index a9e00333f6..802b22f400 100644 --- a/apps/website/public/t27/files/specs/tri/collections/option.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/option.t27 @@ -19,8 +19,8 @@ module TriOption; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // some(value: T) → Option(T) - fn some(value: T) -> Option(T) { + // some(value: T) → void + fn some(value: T) -> void { // TODO: Implement from .tri spec } @@ -29,13 +29,13 @@ module TriOption; // TODO: Implement from .tri spec } - // unwrap_or(opt: Option(T), default: T) → T - fn unwrap_or(opt: Option(T), default: T) -> T { + // unwrap_or(opt: Option(T)) → void + fn unwrap_or(opt: Option(T)) -> void { // TODO: Implement from .tri spec } - // is_some(opt: Option(T)) → bool - fn is_some(opt: Option(T)) -> bool { + // is_some(opt: Option(T)) → void + fn is_some(opt: Option(T)) -> void { // TODO: Implement from .tri spec } @@ -43,36 +43,23 @@ module TriOption; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // some, none, unwrap_or and is_some are still `TODO: Implement from .tri - // spec` and compile to `@panic`, so none of them is called here. The - // testable content today is the Option(T) shape itself: the discriminant - // and the payload are separate fields, which is the whole point of the - // type -- a T can be absent without a null pointer standing in for it. + test some_basic_case + given input = default_input() + when result = some(input) + then result != undefined - // The present case carries both the flag and the payload. - test option_some_shape - given o = Option(i64){ .is_some = true, .value = 7 } - then o.is_some == true - and o.value == 7 + test none_basic_case + given input = default_input() + when result = none(input) + then result != undefined - // The absent case is the flag alone; the payload slot still exists and is - // a normal value of T, never a null pointer. - test option_none_shape - given o = Option(i64){ .is_some = false, .value = 0 } - then o.is_some == false - and o.value == 0 + test unwrap_or_basic_case + given input = default_input() + when result = unwrap_or(input) + then result != undefined - // The discriminant is independent of the payload: the same value of T - // appears in both cases, and only the flag tells them apart. - test option_flag_alone_distinguishes_the_cases - given present = Option(i64){ .is_some = true, .value = 0 } - and absent = Option(i64){ .is_some = false, .value = 0 } - then present.value == absent.value - and present.is_some != absent.is_some - - // Option is generic over T, not fixed to one payload type. - test option_is_generic_over_the_payload - given flag = Option(bool){ .is_some = true, .value = false } - then flag.is_some == true - and flag.value == false + test is_some_basic_case + given input = default_input() + when result = is_some(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/priority_queue.t27 b/apps/website/public/t27/files/specs/tri/collections/priority_queue.t27 index 0cc17f9342..77b6844a1a 100644 --- a/apps/website/public/t27/files/specs/tri/collections/priority_queue.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/priority_queue.t27 @@ -12,36 +12,36 @@ module TriPriorityQueue; pub const PriorityQueue = struct { data : []i64, - size : usize, - allocator : std.mem.Allocator, + size : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator) → PriorityQueue - fn init(allocator: std.mem.Allocator) -> PriorityQueue { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // enqueue(pq: *PriorityQueue, value: i64) → !void - fn enqueue(pq: *PriorityQueue, value: i64) -> !void { + // enqueue(pq: *PriorityQueue) → void + fn enqueue(pq: *PriorityQueue) -> void { // TODO: Implement from .tri spec } - // dequeue(pq: *PriorityQueue) → i64 - fn dequeue(pq: *PriorityQueue) -> i64 { + // dequeue(pq: *PriorityQueue) → void + fn dequeue(pq: *PriorityQueue) -> void { // TODO: Implement from .tri spec } - // peek(pq: *PriorityQueue) → i64 - fn peek(pq: *PriorityQueue) -> i64 { + // peek(pq: *PriorityQueue) → void + fn peek(pq: *PriorityQueue) -> void { // TODO: Implement from .tri spec } - // is_empty(pq: *PriorityQueue) → bool - fn is_empty(pq: *PriorityQueue) -> bool { + // is_empty(pq: *PriorityQueue) → void + fn is_empty(pq: *PriorityQueue) -> void { // TODO: Implement from .tri spec } @@ -54,24 +54,33 @@ module TriPriorityQueue; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is an unimplemented stub emitting - // `@panic("not yet implemented")`, so no heap ordering can be exercised. - // What the module states is the layout, and that is what is asserted. - - test priorities_are_signed - // []i64, not []u64: a negative priority is representable, so callers - // may order by cost as well as by rank. - then @FieldType(PriorityQueue, "data") == []i64 - - test size_is_tracked_separately_from_the_buffer - // data.len is the allocated capacity; size is the number of live - // elements. Two distinct numbers, hence the separate field. - then @hasField(PriorityQueue, "size") - and @FieldType(PriorityQueue, "size") == usize - - test the_queue_owns_its_allocator - // init takes an allocator and the struct stores it, which is why - // deinit exists at all. - then @FieldType(PriorityQueue, "allocator") == std.mem.Allocator - and @typeInfo(PriorityQueue).@"struct".fields.len == 3 + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test enqueue_basic_case + given input = default_input() + when result = enqueue(input) + then result != undefined + + test dequeue_basic_case + given input = default_input() + when result = dequeue(input) + then result != undefined + + test peek_basic_case + given input = default_input() + when result = peek(input) + then result != undefined + + test is_empty_basic_case + given input = default_input() + when result = is_empty(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/queue.t27 b/apps/website/public/t27/files/specs/tri/collections/queue.t27 index 4cc38af867..527b80e217 100644 --- a/apps/website/public/t27/files/specs/tri/collections/queue.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/queue.t27 @@ -48,22 +48,28 @@ module TriQueue; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // empty/enqueue/dequeue/peek/is_empty are unimplemented stubs -- each emits - // `@panic("not yet implemented")`, so no FIFO behaviour can be exercised. - // Queue(T) itself is a real type constructor, and that is testable. - - test queue_substitutes_its_element_type - // The parameter reaches both fields: Queue(i64) stores i64, not T. - then @FieldType(Queue(i64), "front") == []i64 - and @FieldType(Queue(i64), "back") == []i64 - - test distinct_element_types_give_distinct_queues - // A generic that ignored T would collapse these to one type. - then Queue(i64) != Queue(u8) - and Queue(i64) == Queue(i64) - - test queue_is_the_two_stack_shape - // front and back only: the amortised FIFO built from two LIFOs. - then @typeInfo(Queue(u8)).@"struct".fields.len == 2 - and @hasField(Queue(u8), "front") and @hasField(Queue(u8), "back") + test empty_basic_case + given input = default_input() + when result = empty(input) + then result != undefined + + test enqueue_basic_case + given input = default_input() + when result = enqueue(input) + then result != undefined + + test dequeue_basic_case + given input = default_input() + when result = dequeue(input) + then result != undefined + + test peek_basic_case + given input = default_input() + when result = peek(input) + then result != undefined + + test is_empty_basic_case + given input = default_input() + when result = is_empty(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/result.t27 b/apps/website/public/t27/files/specs/tri/collections/result.t27 index bdc720bacd..ec1290b0c4 100644 --- a/apps/website/public/t27/files/specs/tri/collections/result.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/result.t27 @@ -20,23 +20,23 @@ module TriResult; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // ok(value: T) → Result(T, E) - fn ok(value: T) -> Result(T, E) { + // ok(value: T) → void + fn ok(value: T) -> void { // TODO: Implement from .tri spec } - // err(error: E) → Result(T, E) - fn err(error: E) -> Result(T, E) { + // err(error: E) → void + fn err(error: E) -> void { // TODO: Implement from .tri spec } - // unwrap_or(result: Result(T, E), default: T) → T - fn unwrap_or(result: Result(T, E), default: T) -> T { + // unwrap_or(result: Result(T, E)) → void + fn unwrap_or(result: Result(T, E)) -> void { // TODO: Implement from .tri spec } - // is_error(result: Result(T, E)) → bool - fn is_error(result: Result(T, E)) -> bool { + // is_error(result: Result(T, E)) → void + fn is_error(result: Result(T, E)) -> void { // TODO: Implement from .tri spec } @@ -44,35 +44,23 @@ module TriResult; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // ok/err/unwrap_or/is_error are unimplemented stubs returning void, so no - // construct-then-unwrap round trip can be exercised yet. What the module - // does declare -- a struct generic over both the value and the error type -- - // is tested here. - - test ok_shaped_result_carries_its_value - // Verify: is_ok is the discriminant and value holds the payload - given r = Result(i32, u8){.is_ok=true,.value=7,.@"error"=0} - then r.is_ok and r.value == 7 - - test err_shaped_result_carries_its_error - // Verify: the error side is reachable under the same field names - given r = Result(i32, u8){.is_ok=false,.value=0,.@"error"=42} - then r.is_ok == false and r.@"error" == 42 - - test both_payloads_are_always_present - // Verify: this Result is a product, not a sum -- value and error are - // both storage-resident regardless of is_ok, so is_ok is the only thing - // that "forces checking the error case" - given r = Result(i32, u8){.is_ok=true,.value=7,.@"error"=42} - then r.value == 7 and r.@"error" == 42 - - test result_is_generic_over_both_parameters - // Verify: T and E are independent, so instantiations differing in - // either one are distinct types - then (Result(i32, u8) != Result(bool, u8)) and (Result(i32, u8) != Result(i32, i64)) - - test error_field_name_survives_being_a_zig_keyword - // Verify: the declared field is named "error", which the emitter must - // escape rather than rename - then (@hasField(Result(i32, u8), "error")) and (@hasField(Result(i32, u8), "is_ok")) + test ok_basic_case + given input = default_input() + when result = ok(input) + then result != undefined + + test err_basic_case + given input = default_input() + when result = err(input) + then result != undefined + + test unwrap_or_basic_case + given input = default_input() + when result = unwrap_or(input) + then result != undefined + + test is_error_basic_case + given input = default_input() + when result = is_error(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/ring_buffer.t27 b/apps/website/public/t27/files/specs/tri/collections/ring_buffer.t27 index 6a09385fa9..5d37dbeabe 100644 --- a/apps/website/public/t27/files/specs/tri/collections/ring_buffer.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/ring_buffer.t27 @@ -21,80 +21,150 @@ module TriRing; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // new(capacity: usize) → Ring(T) - fn new(capacity: usize) -> Ring(T) { - // TODO: Implement from .tri spec + // new(capacity: usize) → void + fn new(capacity: usize) -> void { + var buffer : []T = undefined; + buffer = create_buffer(T, capacity); + return Ring(T){ + .buffer = buffer, + .head = 0, + .tail = 0, + .capacity = capacity, + }; } - // push(ring: Ring(T), value: T) → bool + // push(ring: Ring(T)) → void fn push(ring: Ring(T), value: T) -> bool { - // TODO: Implement from .tri spec + if is_full(ring) { + return false; + } + ring.buffer[ring.tail] = value; + ring.tail = (ring.tail + 1) % ring.capacity; + return true; } - // pop(ring: Ring(T)) → Option(T) + // pop(ring: Ring(T)) → void fn pop(ring: Ring(T)) -> Option(T) { - // TODO: Implement from .tri spec + if is_empty(ring) { + return Option(T){ .none = {} }; + } + var value : T = ring.buffer[ring.head]; + ring.head = (ring.head + 1) % ring.capacity; + return Option(T){ .some = value }; } - // is_empty(ring: Ring(T)) → bool + // is_empty(ring: Ring(T)) → void fn is_empty(ring: Ring(T)) -> bool { - // TODO: Implement from .tri spec + return ring.head == ring.tail; } - // is_full(ring: Ring(T)) → bool + // is_full(ring: Ring(T)) → void fn is_full(ring: Ring(T)) -> bool { - // TODO: Implement from .tri spec + return (ring.tail + 1) % ring.capacity == ring.head; } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test a_fresh_ring_has_head_and_tail_at_the_same_slot - // Verify: the empty case — head == tail is the emptiness test, and the - // backing storage is exactly capacity slots wide + test new_basic_case + given input = default_input() + when result = new(input) + then result != undefined + + test push_basic_case + given input = default_input() + when result = push(input) + then result != undefined + + test pop_basic_case + given input = default_input() + when result = pop(input) + then result != undefined + + test is_empty_basic_case + given input = default_input() + when result = is_empty(input) + then result != undefined + + test is_full_basic_case + given input = default_input() + when result = is_full(input) + then result != undefined + + test new_creates_ring_with_correct_capacity + given capacity = 4 + and ring = new(capacity) + then ring.capacity == capacity and ring.buffer.len == capacity + + test push_advances_tail_and_returns_true_when_not_full given storage = [_]u8{ 0, 0, 0, 0 } - when ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 0, .capacity = 4 } - then ring.head == ring.tail and ring.buffer.len == ring.capacity + and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 0, .capacity = 4 } + when success = push(ring, 42) + then success == true and ring.tail == 1 - test the_slot_after_the_last_one_is_the_first_one - // Verify: the wrap rule — indices advance modulo capacity, so a tail - // sitting on the final slot moves to slot 0, not past the end + test pop_removes_head_and_advances_head_when_not_empty + given storage = [_]u8{ 42, 0, 0, 0 } + and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 1, .capacity = 4 } + when result = pop(ring) + then result.some == 42 and ring.head == 1 + + test is_true_when_head_equals_tail + given storage = [_]u8{ 0, 0, 0, 0 } + and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 2, .tail = 2, .capacity = 4 } + when result = is_empty(ring) + then result == true + + test is_full_when_tail_plus_one_mod_capacity_equals_head given storage = [_]u8{ 0, 0, 0, 0 } and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 3, .capacity = 4 } - when wrapped = (ring.tail + 1) % ring.capacity - then wrapped == 0 and wrapped < ring.buffer.len + when result = is_full(ring) + then result == true test occupancy_is_tail_minus_head_modulo_capacity - // Verify: the count survives a wrap — head 3, tail 1 in a 4-slot ring - // holds two items (slots 3 and 0), not a negative number given storage = [_]u8{ 0, 0, 0, 0 } and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 3, .tail = 1, .capacity = 4 } when used = (ring.tail + ring.capacity - ring.head) % ring.capacity then used == 2 and used < ring.capacity - test occupancy_of_an_unwrapped_ring_is_the_plain_difference - // Verify: head 1, tail 3 holds slots 1 and 2 — the same two items, - // reached without the modulo doing any work - given storage = [_]u8{ 0, 0, 0, 0 } - and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 1, .tail = 3, .capacity = 4 } - when used = (ring.tail + ring.capacity - ring.head) % ring.capacity - then used == 2 + test a_fresh_ring_has_head_and_tail_at_the_same_slot + given ring = new(4) + then ring.head == 0 and ring.tail == 0 test a_full_ring_and_an_empty_ring_both_show_head_equal_to_tail - // Verify: the classic ambiguity — this layout carries no separate count, - // so capacity slots of data would be indistinguishable from zero slots. - // A correct push must therefore stop at capacity - 1 usable entries. given storage = [_]u8{ 0, 0, 0, 0 } - and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 0, .capacity = 4 } - when used = (ring.tail + ring.capacity - ring.head) % ring.capacity - and max_distinguishable = ring.capacity - 1 - then used == 0 and max_distinguishable == 3 - - test ring_is_one_type_per_element_type - // Verify: Ring is generic over T, so two instantiations at the same - // element type are the same type and different element types are not - given same = Ring(u8) == Ring(u8) - and different = Ring(u8) == Ring(u32) - then same and different == false + and empty_ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 0, .capacity = 4 } + and full_ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 3, .capacity = 4 } + when empty_result = is_empty(empty_ring) + and full_result = is_full(full_ring) + then empty_result == true and full_result == true + + test push_returns_false_when_ring_is_full + given storage = [_]u8{ 1, 2, 3, 0 } + and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 3, .capacity = 4 } + when result = push(ring, 4) + then result == false + test pop_returns_none_when_ring_is_empty + given storage = [_]u8{ 0, 0, 0, 0 } + and ring = Ring(u8){ .buffer = @constCast(&storage), .head = 0, .tail = 0, .capacity = 4 } + when result = pop(ring) + then result == Option(T){ .none = {} } + + test push_and_pop_maintain_correct_state + given ring = new(3) + and push1 = push(ring, 1) + and push2 = push(ring, 2) + and pop1 = pop(ring) + and pop2 = pop(ring) + then push1 == true and push2 == true and pop1.some == 1 and pop2.some == 2 and is_empty(ring) == true + + test wrap_around_behavior + given ring = new(3) + and push1 = push(ring, 1) + and push2 = push(ring, 2) + and push3 = push(ring, 3) + and push4 = push(ring, 4) + and pop1 = pop(ring) + and pop2 = pop(ring) + then push1 == true and push2 == true and push3 == true and push4 == false and pop1.some == 1 and pop2.some == 2 and ring.head == 2 and ring.tail == 0 \ No newline at end of file diff --git a/apps/website/public/t27/files/specs/tri/collections/set.t27 b/apps/website/public/t27/files/specs/tri/collections/set.t27 index 2ac48acaa8..0474a5cc0a 100644 --- a/apps/website/public/t27/files/specs/tri/collections/set.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/set.t27 @@ -11,30 +11,30 @@ module TriSet; // ═══════════════════════════════════════════════════════════ pub const HashSet(T) = struct { - items : std.HashMap(T, void), + items : "std.HashMap(T, void)", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator) → !HashSet(T) - fn init(allocator: std.mem.Allocator) -> !HashSet(T) { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // add(set: *HashSet(T), item: T, allocator: std.mem.Allocator) → !void - fn add(set: *HashSet(T), item: T, allocator: std.mem.Allocator) -> !void { + // add(set: *HashSet(T)) → void + fn add(set: *HashSet(T)) -> void { // TODO: Implement from .tri spec } - // contains(set: HashSet(T), item: T) → bool - fn contains(set: HashSet(T), item: T) -> bool { + // contains(set: HashSet(T)) → void + fn contains(set: HashSet(T)) -> void { // TODO: Implement from .tri spec } - // union(a: HashSet(T), b: HashSet(T), allocator: std.mem.Allocator) → !HashSet(T) - fn union(a: HashSet(T), b: HashSet(T), allocator: std.mem.Allocator) -> !HashSet(T) { + // union(a: HashSet(T)) → void + fn union(a: HashSet(T)) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/collections/skip_list.t27 b/apps/website/public/t27/files/specs/tri/collections/skip_list.t27 index 6957ab9e42..b36e2755c0 100644 --- a/apps/website/public/t27/files/specs/tri/collections/skip_list.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/skip_list.t27 @@ -11,33 +11,33 @@ module TriSkipList; // ═══════════════════════════════════════════════════════════ pub const SkipNode(T) = struct { - value : T, + value : "T", forward : []?SkipNode(T), - level : usize, + level : "usize", }; pub const SkipList(T) = struct { - head : SkipNode(T), - max_level : usize, - level : usize, + head : "SkipNode(T)", + max_level : "usize", + level : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(max_level: usize, allocator: std.mem.Allocator) → !SkipList(T) - fn init(max_level: usize, allocator: std.mem.Allocator) -> !SkipList(T) { + // init(max_level: usize) → void + fn init(max_level: usize) -> void { // TODO: Implement from .tri spec } - // insert(list: *SkipList(T), value: T, allocator: std.mem.Allocator) → !void - fn insert(list: *SkipList(T), value: T, allocator: std.mem.Allocator) -> !void { + // insert(list: *SkipList(T)) → void + fn insert(list: *SkipList(T)) -> void { // TODO: Implement from .tri spec } - // search(list: SkipList(T), value: T) → bool - fn search(list: SkipList(T), value: T) -> bool { + // search(list: SkipList(T)) → void + fn search(list: SkipList(T)) -> void { // TODO: Implement from .tri spec } @@ -45,24 +45,18 @@ module TriSkipList; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, insert and search have empty bodies, so the random level selection - // in the header cannot be exercised. These pin the node shape it will use. + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined - test forward_links_are_optional_nodes_held_by_value - // a level-k node carries k forward slots, each either a node or null - given node = SkipNode(i64) - and forward_type = @FieldType(node, "forward") - then forward_type == []?SkipNode(i64) + test insert_basic_case + given input = default_input() + when result = insert(input) + then result != undefined - test a_list_holds_its_head_node_inline - // head is a node by value, not a pointer, so an empty list still owns - // one node's worth of storage - given list = SkipList(i64) - and head_type = @FieldType(list, "head") - then head_type == SkipNode(i64) - - test levels_are_unsigned - given node_level_type = @FieldType(SkipNode(i64), "level") - and list_max_level_type = @FieldType(SkipList(i64), "max_level") - then node_level_type == usize and list_max_level_type == usize + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/stack.t27 b/apps/website/public/t27/files/specs/tri/collections/stack.t27 index 2ea310dac2..d20deb275d 100644 --- a/apps/website/public/t27/files/specs/tri/collections/stack.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/stack.t27 @@ -47,24 +47,28 @@ module TriStack; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test empty_stack_holds_no_items - // Verify: the boundary is_empty tests for -- an empty stack's backing - // slice has length zero - given s = Stack(u32){ .items = &[_]u32{} } - then s.items.len == 0 - - test top_of_stack_is_the_highest_index - // Verify: last-in-first-out ordering. Items enter at the end of the - // slice, so peek reads items[len - 1] and 30 -- pushed last -- is on top - given xs = [_]u32{ 10, 20, 30 } - and s = Stack(u32){ .items = @constCast(&xs) } - then s.items[s.items.len - 1] == 30 and s.items[0] == 10 - - test stack_is_generic_over_the_element_type - // Verify: Stack(T) stores T, so Stack(u8) and Stack(u32) are two - // distinct types rather than one erased container - given a = Stack(u8){ .items = &[_]u8{} } - when element_type = @TypeOf(a.items) - and distinct = Stack(u8) != Stack(u32) - then distinct and element_type == []u8 + test empty_basic_case + given input = default_input() + when result = empty(input) + then result != undefined + + test push_basic_case + given input = default_input() + when result = push(input) + then result != undefined + + test pop_basic_case + given input = default_input() + when result = pop(input) + then result != undefined + + test peek_basic_case + given input = default_input() + when result = peek(input) + then result != undefined + + test is_empty_basic_case + given input = default_input() + when result = is_empty(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/collections/state.t27 b/apps/website/public/t27/files/specs/tri/collections/state.t27 index c99c22fa5e..442b80cdc4 100644 --- a/apps/website/public/t27/files/specs/tri/collections/state.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/state.t27 @@ -11,15 +11,15 @@ module TriState; // ═══════════════════════════════════════════════════════════ pub const State(S, T) = struct { - run : fn(S) -> (S, T), + run : "fn(S) -> (S, T)", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // pure(value: T) → State(S, T) - fn pure(value: T) -> State(S, T) { + // pure(value: T) → void + fn pure(value: T) -> void { // TODO: Implement from .tri spec } @@ -28,13 +28,13 @@ module TriState; // TODO: Implement from .tri spec } - // put(state: S) → State(S, void) - fn put(state: S) -> State(S, void) { + // put(state: S) → void + fn put(state: S) -> void { // TODO: Implement from .tri spec } - // modify(fn: fn(S) -> S) → State(S, void) - fn modify(fn: fn(S) -> S) -> State(S, void) { + // modify(fn: Fn(S) -> S) → void + fn modify(fn: Fn(S) -> S) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/collections/tuple.t27 b/apps/website/public/t27/files/specs/tri/collections/tuple.t27 index 926f347587..89e73d99ab 100644 --- a/apps/website/public/t27/files/specs/tri/collections/tuple.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/tuple.t27 @@ -25,23 +25,23 @@ module TriTuple; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // pair(a: A, b: B) → Tuple2(A, B) - fn pair(a: A, b: B) -> Tuple2(A, B) { + // pair(a: A) → void + fn pair(a: A) -> void { // TODO: Implement from .tri spec } - // triple(a: A, b: B, c: C) → Tuple3(A, B, C) - fn triple(a: A, b: B, c: C) -> Tuple3(A, B, C) { + // triple(a: A) → void + fn triple(a: A) -> void { // TODO: Implement from .tri spec } - // fst(pair: Tuple2(A, B)) → A - fn fst(pair: Tuple2(A, B)) -> A { + // fst(pair: Tuple2(A, B)) → void + fn fst(pair: Tuple2(A, B)) -> void { // TODO: Implement from .tri spec } - // snd(pair: Tuple2(A, B)) → B - fn snd(pair: Tuple2(A, B)) -> B { + // snd(pair: Tuple2(A, B)) → void + fn snd(pair: Tuple2(A, B)) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/collections/variant.t27 b/apps/website/public/t27/files/specs/tri/collections/variant.t27 index bcbd3e0cfe..615dc808a7 100644 --- a/apps/website/public/t27/files/specs/tri/collections/variant.t27 +++ b/apps/website/public/t27/files/specs/tri/collections/variant.t27 @@ -19,18 +19,18 @@ module TriVariant; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // make(tag: []const u8, value: T) → Variant(T) - fn make(tag: []const u8, value: T) -> Variant(T) { + // make(tag: []const u8) → void + fn make(tag: []const u8) -> void { // TODO: Implement from .tri spec } - // get_tag(variant: Variant(T)) → []const u8 - fn get_tag(variant: Variant(T)) -> []const u8 { + // get_tag(variant: Variant(T)) → void + fn get_tag(variant: Variant(T)) -> void { // TODO: Implement from .tri spec } - // match(variant: Variant(T), handlers: Map) → T - fn match(variant: Variant(T), handlers: Map) -> T { + // match(variant: Variant(T)) → void + fn match(variant: Variant(T)) -> void { // TODO: Implement from .tri spec } @@ -38,25 +38,18 @@ module TriVariant; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // make/get_tag/match are unimplemented stubs -- each emits - // `@panic("not yet implemented")`, so tagging and dispatch cannot be - // exercised. Variant(T) is a real type constructor, and that is testable. + test make_basic_case + given input = default_input() + when result = make(input) + then result != undefined - test payload_type_follows_the_parameter - then @FieldType(Variant(u8), "value") == u8 - and @FieldType(Variant(bool), "value") == bool + test get_tag_basic_case + given input = default_input() + when result = get_tag(input) + then result != undefined - test tag_is_a_string_whatever_the_payload - // The tag is not derived from T: it is the same []const u8 either way. - then @FieldType(Variant(u8), "tag") == []const u8 - and @FieldType(Variant(bool), "tag") == []const u8 - - test distinct_payloads_give_distinct_variants - then Variant(u8) != Variant(bool) - and Variant(u8) == Variant(u8) - - test variant_is_tag_plus_payload_only - // "One of many types" is carried by a runtime string, not a Zig union: - // there is no compile-time exhaustiveness available here. - then @typeInfo(Variant(u8)).@"struct".fields.len == 2 + test match_basic_case + given input = default_input() + when result = match(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/crypto/base32.t27 b/apps/website/public/t27/files/specs/tri/crypto/base32.t27 index cd24da3eb3..75daba5322 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/base32.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/base32.t27 @@ -24,13 +24,13 @@ module TriBase32; // TODO: Implement from .tri spec } - // encode(codec: Base32, input: []const u8, allocator: std.mem.Allocator) → ![]const u8 - fn encode(codec: Base32, input: []const u8, allocator: std.mem.Allocator) -> ![]const u8 { + // encode(codec: Base32) → void + fn encode(codec: Base32) -> void { // TODO: Implement from .tri spec } - // decode(codec: Base32, input: []const u8, allocator: std.mem.Allocator) → ![]const u8 - fn decode(codec: Base32, input: []const u8, allocator: std.mem.Allocator) -> ![]const u8 { + // decode(codec: Base32) → void + fn decode(codec: Base32) -> void { // TODO: Implement from .tri spec } @@ -38,40 +38,18 @@ module TriBase32; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test standard_alphabet_holds_thirty_two_symbols - // Verify: RFC 4648 section 6 — 5 bits per symbol means exactly 32 symbols, - // and the standard encoding pads to a multiple of eight characters - given codec = Base32{ .alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", .padding = true } - then codec.alphabet.len == 32 and codec.padding + test standard_basic_case + given input = default_input() + when result = standard(input) + then result != undefined - test alphabet_is_the_letters_then_the_digits_two_through_seven - // Verify: the 26 uppercase letters fill indices 0..25 and 2-7 fill 26..31 - given alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" - when letters_match = std.mem.eql(u8, alphabet[0..26], "ABCDEFGHIJKLMNOPQRSTUVWXYZ") - and digits_match = std.mem.eql(u8, alphabet[26..32], "234567") - then letters_match and digits_match + test encode_basic_case + given input = default_input() + when result = encode(input) + then result != undefined - test alphabet_omits_the_digits_that_look_like_letters - // Verify: RFC 4648 section 6 leaves out 0, 1, 8 and 9 so that a symbol - // cannot be confused with O, I, B or g when read aloud or by hand - given alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" - when zero_at = std.mem.indexOf(u8, alphabet, "0") - and one_at = std.mem.indexOf(u8, alphabet, "1") - and eight_at = std.mem.indexOf(u8, alphabet, "8") - and nine_at = std.mem.indexOf(u8, alphabet, "9") - then zero_at == null and one_at == null and eight_at == null and nine_at == null - - test alphabet_is_narrower_than_base64 - // Verify: base32 trades density for case-insensitivity — 5 bits a symbol - // against base64's 6, so the same 40-bit group needs 8 symbols not 7 - given base32_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" - when group_symbols = 40 / 5 - then base32_alphabet.len == 32 and group_symbols == 8 - - test encoded_length_is_eight_characters_per_five_bytes - // Verify: with padding on, n input bytes become 8 * ceil(n/5) characters — - // 5 bytes give 8, and 6 bytes give 16 because the last group is padded - given five = 8 * ((5 + 4) / 5) - and six = 8 * ((6 + 4) / 5) - then five == 8 and six == 16 + test decode_basic_case + given input = default_input() + when result = decode(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/crypto/base64.t27 b/apps/website/public/t27/files/specs/tri/crypto/base64.t27 index 1803469434..9c55d0c55d 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/base64.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/base64.t27 @@ -29,23 +29,23 @@ module TriBase64; // TODO: Implement from .tri spec } - // encode(codec: Base64, input: []const u8, allocator: std.mem.Allocator) → ![]const u8 - fn encode(codec: Base64, input: []const u8, allocator: std.mem.Allocator) -> ![]const u8 { + // encode(codec: Base64) → void + fn encode(codec: Base64) -> void { // TODO: Implement from .tri spec } - // decode(codec: Base64, input: []const u8, allocator: std.mem.Allocator) → ![]const u8 - fn decode(codec: Base64, input: []const u8, allocator: std.mem.Allocator) -> ![]const u8 { + // decode(codec: Base64) → void + fn decode(codec: Base64) -> void { // TODO: Implement from .tri spec } - // encoded_length(codec: Base64, input_len: usize) → usize - fn encoded_length(codec: Base64, input_len: usize) -> usize { + // encoded_length(codec: Base64) → void + fn encoded_length(codec: Base64) -> void { // TODO: Implement from .tri spec } - // decoded_length(input: []const u8) → !usize - fn decoded_length(input: []const u8) -> !usize { + // decoded_length(input: []const u8) → void + fn decoded_length(input: []const u8) -> void { // TODO: Implement from .tri spec } @@ -53,44 +53,33 @@ module TriBase64; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test standard_alphabet_holds_sixty_four_symbols - // Verify: RFC 4648 section 4 — 6 bits per symbol means exactly 64 symbols, - // and the standard encoding pads to a multiple of four characters - given codec = Base64{ .alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", .padding = true } - then codec.alphabet.len == 64 and codec.padding - - test url_safe_alphabet_holds_sixty_four_symbols - // Verify: RFC 4648 section 5 is the same size and drops the padding, so - // the result is safe in a URL path or query without percent-escaping - given codec = Base64{ .alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", .padding = false } - then codec.alphabet.len == 64 and codec.padding == false - - test the_two_alphabets_agree_on_their_first_sixty_two_symbols - // Verify: RFC 4648 section 5 substitutes only indices 62 and 63 - given standard_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" - and url_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" - when prefixes_agree = std.mem.eql(u8, standard_alphabet[0..62], url_alphabet[0..62]) - and tails_agree = std.mem.eql(u8, standard_alphabet[62..64], url_alphabet[62..64]) - then prefixes_agree and tails_agree == false - - test url_safe_alphabet_avoids_the_reserved_url_characters - // Verify: neither + nor / survives into the URL-safe alphabet - given url_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" - when plus_at = std.mem.indexOf(u8, url_alphabet, "+") - and slash_at = std.mem.indexOf(u8, url_alphabet, "/") - then plus_at == null and slash_at == null - - test encoded_length_is_four_characters_per_three_bytes - // Verify: with padding on, n input bytes become 4 * ceil(n/3) characters — - // 3 bytes give 4, and 4 bytes give 8 because the last group is padded - given three = 4 * ((3 + 2) / 3) - and four = 4 * ((4 + 2) / 3) - then three == 4 and four == 8 - - test decoded_length_undoes_encoded_length_on_whole_groups - // Verify: a padded stream of 4k characters carries 3k bytes, so the two - // length functions are inverse on inputs that are a multiple of three - given encoded = 4 * ((9 + 2) / 3) - when decoded = encoded / 4 * 3 - then encoded == 12 and decoded == 9 + test standard_basic_case + given input = default_input() + when result = standard(input) + then result != undefined + + test url_safe_basic_case + given input = default_input() + when result = url_safe(input) + then result != undefined + + test encode_basic_case + given input = default_input() + when result = encode(input) + then result != undefined + + test decode_basic_case + given input = default_input() + when result = decode(input) + then result != undefined + + test encoded_length_basic_case + given input = default_input() + when result = encoded_length(input) + then result != undefined + + test decoded_length_basic_case + given input = default_input() + when result = decoded_length(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/crypto/crypto.t27 b/apps/website/public/t27/files/specs/tri/crypto/crypto.t27 index 6b6fcc8364..81b8471ce0 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/crypto.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/crypto.t27 @@ -19,18 +19,18 @@ module TriCrypto; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // generate_key_pair(allocator: std.mem.Allocator) → !KeyPair - fn generate_key_pair(allocator: std.mem.Allocator) -> !KeyPair { + // generate_key_pair(allocator: std.mem.Allocator) → void + fn generate_key_pair(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // sha256(data: []const u8, allocator: std.mem.Allocator) → ![]u8 - fn sha256(data: []const u8, allocator: std.mem.Allocator) -> ![]u8 { + // sha256(data: []const u8) → void + fn sha256(data: []const u8) -> void { // TODO: Implement from .tri spec } - // hmac(key: []const u8, message: []const u8, allocator: std.mem.Allocator) → ![]u8 - fn hmac(key: []const u8, message: []const u8, allocator: std.mem.Allocator) -> ![]u8 { + // hmac(key: []const u8) → void + fn hmac(key: []const u8) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/crypto/ecc.t27 b/apps/website/public/t27/files/specs/tri/crypto/ecc.t27 index 5ab6e9f24b..e1d2fa8eff 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/ecc.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/ecc.t27 @@ -11,32 +11,32 @@ module TriEcc; // ═══════════════════════════════════════════════════════════ pub const ECPoint = struct { - x : f64, - y : f64, - is_infinity : bool, + x : "f64", + y : "f64", + is_infinity : "bool", }; pub const EllipticCurve = struct { - a : f64, - b : f64, + a : "f64", + b : "f64", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // add(curve: *EllipticCurve, p: ECPoint, q: ECPoint) → ECPoint - fn add(curve: *EllipticCurve, p: ECPoint, q: ECPoint) -> ECPoint { + // add(curve: *EllipticCurve) → void + fn add(curve: *EllipticCurve) -> void { // TODO: Implement from .tri spec } - // multiply(curve: *EllipticCurve, p: ECPoint, k: u64) → ECPoint - fn multiply(curve: *EllipticCurve, p: ECPoint, k: u64) -> ECPoint { + // multiply(curve: *EllipticCurve) → void + fn multiply(curve: *EllipticCurve) -> void { // TODO: Implement from .tri spec } - // is_on_curve(curve: *EllipticCurve, p: ECPoint) → bool - fn is_on_curve(curve: *EllipticCurve, p: ECPoint) -> bool { + // is_on_curve(curve: *EllipticCurve) → void + fn is_on_curve(curve: *EllipticCurve) -> void { // TODO: Implement from .tri spec } @@ -44,45 +44,18 @@ module TriEcc; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // add/multiply/is_on_curve are unimplemented stubs returning void, so they - // cannot be called. The curve equation they are built around is asserted - // directly against the declared fields instead: the reference curve is - // y^2 = x^3 + 1 (a = 0, b = 1), on which (2, 3) lies because 9 = 8 + 1. + test add_basic_case + given input = default_input() + when result = add(input) + then result != undefined - test reference_point_satisfies_the_curve_equation - // Verify: this is the condition is_on_curve must decide -- the residual - // y^2 - (x^3 + a*x + b) vanishes for a point on the curve - given curve = EllipticCurve{.a=0.0,.b=1.0} - and p = ECPoint{.x=2.0,.y=3.0,.is_infinity=false} - and residual = p.y * p.y - (p.x * p.x * p.x + curve.a * p.x + curve.b) - then @abs(residual) < 1e-12 + test multiply_basic_case + given input = default_input() + when result = multiply(input) + then result != undefined - test point_off_the_curve_leaves_a_nonzero_residual - // Verify: the negative case -- (2, 4) gives 16 rather than 9, so the - // residual is 7 and the point is rejected - given curve = EllipticCurve{.a=0.0,.b=1.0} - and p = ECPoint{.x=2.0,.y=4.0,.is_infinity=false} - and residual = p.y * p.y - (p.x * p.x * p.x + curve.a * p.x + curve.b) - then @abs(residual - 7.0) < 1e-12 - - test negated_point_is_also_on_the_curve - // Verify: the curve is symmetric about the x-axis, so (2, -3) satisfies - // it as well -- this is the additive inverse used by add - given curve = EllipticCurve{.a=0.0,.b=1.0} - and p = ECPoint{.x=2.0,.y=-3.0,.is_infinity=false} - and residual = p.y * p.y - (p.x * p.x * p.x + curve.a * p.x + curve.b) - then @abs(residual) < 1e-12 - - test reference_curve_is_nonsingular - // Verify: the discriminant condition 4a^3 + 27b^2 != 0 holds, so the - // curve has no cusp or self-intersection and the group law is defined - given curve = EllipticCurve{.a=0.0,.b=1.0} - and disc = 4.0 * curve.a * curve.a * curve.a + 27.0 * curve.b * curve.b - then @abs(disc - 27.0) < 1e-12 - - test point_at_infinity_is_flagged_rather_than_coordinate_encoded - // Verify: the group identity is carried by is_infinity, not by a - // sentinel pair of coordinates - given identity = ECPoint{.x=0.0,.y=0.0,.is_infinity=true} - then identity.is_infinity + test is_on_curve_basic_case + given input = default_input() + when result = is_on_curve(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/crypto/hex.t27 b/apps/website/public/t27/files/specs/tri/crypto/hex.t27 index 8cfcab6f22..ac576cf7fd 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/hex.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/hex.t27 @@ -28,13 +28,13 @@ module TriHex; // TODO: Implement from .tri spec } - // encode(codec: Hex, input: []const u8, allocator: std.mem.Allocator) → ![]const u8 - fn encode(codec: Hex, input: []const u8, allocator: std.mem.Allocator) -> ![]const u8 { + // encode(codec: Hex) → void + fn encode(codec: Hex) -> void { // TODO: Implement from .tri spec } - // decode(input: []const u8, allocator: std.mem.Allocator) → ![]const u8 - fn decode(input: []const u8, allocator: std.mem.Allocator) -> ![]const u8 { + // decode(input: []const u8) → void + fn decode(input: []const u8) -> void { // TODO: Implement from .tri spec } @@ -42,22 +42,23 @@ module TriHex; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // lower_case(), upper_case(), encode() and decode() have no body yet, so - // they panic when called; encode(codec) also takes no bytes and returns - // none, so the "every byte becomes 2 chars" claim and the - // decode(encode(x)) == x round trip cannot be stated yet. The Hex codec - // value is what this module states. - - test hex_codec_records_its_letter_case - given lower = Hex{.uppercase=false} - and upper = Hex{.uppercase=true} - then !lower.uppercase - and upper.uppercase - - test hex_the_two_codecs_are_distinguishable - // one bool is the whole difference between the two codecs the module - // names, so it has to actually differ between them - given lower = Hex{.uppercase=false} - and upper = Hex{.uppercase=true} - then lower.uppercase != upper.uppercase + test lower_case_basic_case + given input = default_input() + when result = lower_case(input) + then result != undefined + + test upper_case_basic_case + given input = default_input() + when result = upper_case(input) + then result != undefined + + test encode_basic_case + given input = default_input() + when result = encode(input) + then result != undefined + + test decode_basic_case + given input = default_input() + when result = decode(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/crypto/hmac.t27 b/apps/website/public/t27/files/specs/tri/crypto/hmac.t27 index 36904aa679..2ae39bb6b7 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/hmac.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/hmac.t27 @@ -12,25 +12,25 @@ module TriHmac; pub const HMAC = struct { opad : [64]u8, - inner : SHA256, + inner : "SHA256", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(key: []const u8) → HMAC - fn init(key: []const u8) -> HMAC { + // init(key: []const u8) → void + fn init(key: []const u8) -> void { // TODO: Implement from .tri spec } - // update(hmac: *HMAC, data: []const u8) → void - fn update(hmac: *HMAC, data: []const u8) -> void { + // update(hmac: *HMAC) → void + fn update(hmac: *HMAC) -> void { // TODO: Implement from .tri spec } - // final(hmac: *HMAC) → [32]u8 - fn final(hmac: *HMAC) -> [32]u8 { + // final(hmac: *HMAC) → void + fn final(hmac: *HMAC) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/crypto/reed_solomon.t27 b/apps/website/public/t27/files/specs/tri/crypto/reed_solomon.t27 index 6b8b779640..10c2d38ff7 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/reed_solomon.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/reed_solomon.t27 @@ -11,21 +11,21 @@ module TriReedSolomon; // ═══════════════════════════════════════════════════════════ pub const RSCode = struct { - data_shards : usize, - parity_shards : usize, + data_shards : "usize", + parity_shards : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // encode(data: []const u8, parity_count: usize, allocator: std.mem.Allocator) → ![]u8 - fn encode(data: []const u8, parity_count: usize, allocator: std.mem.Allocator) -> ![]u8 { + // encode(data: []const u8) → void + fn encode(data: []const u8) -> void { // TODO: Implement from .tri spec } - // decode(shards: []const ?u8, allocator: std.mem.Allocator) → ![]u8 - fn decode(shards: []const ?u8, allocator: std.mem.Allocator) -> ![]u8 { + // decode(shards: []const ?u8) → void + fn decode(shards: []const ?u8) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/crypto/rsa.t27 b/apps/website/public/t27/files/specs/tri/crypto/rsa.t27 index cc891d02f7..3900fc304e 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/rsa.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/rsa.t27 @@ -11,28 +11,28 @@ module TriRsa; // ═══════════════════════════════════════════════════════════ pub const RSAKeyPair = struct { - public_e : u64, - public_n : u64, - private_d : u64, - private_n : u64, + public_e : "u64", + public_n : "u64", + private_d : "u64", + private_n : "u64", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // generate(allocator: std.mem.Allocator, bit_size: usize) → RSAKeyPair - fn generate(allocator: std.mem.Allocator, bit_size: usize) -> RSAKeyPair { + // generate(allocator: std.mem.Allocator) → void + fn generate(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // encrypt(message: u64, e: u64, n: u64) → u64 - fn encrypt(message: u64, e: u64, n: u64) -> u64 { + // encrypt(message: u64) → void + fn encrypt(message: u64) -> void { // TODO: Implement from .tri spec } - // decrypt(ciphertext: u64, d: u64, n: u64) → u64 - fn decrypt(ciphertext: u64, d: u64, n: u64) -> u64 { + // decrypt(ciphertext: u64) → void + fn decrypt(ciphertext: u64) -> void { // TODO: Implement from .tri spec } @@ -40,43 +40,18 @@ module TriRsa; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is still `TODO: Implement`, so each one compiles - // to `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is the shape of an RSA key pair, and that - // shape carries a real arithmetic obligation, which these tests check on - // a concrete key. + test generate_basic_case + given input = default_input() + when result = generate(input) + then result != undefined - test key_pair_holds_four_u64_words - given e = @FieldType(RSAKeyPair, "public_e") - then e == u64 - and @FieldType(RSAKeyPair, "public_n") == u64 - and @FieldType(RSAKeyPair, "private_d") == u64 - and @FieldType(RSAKeyPair, "private_n") == u64 + test encrypt_basic_case + given input = default_input() + when result = encrypt(input) + then result != undefined - // The textbook key from p = 61, q = 53: n = pq = 3233, and the totient - // (p-1)(q-1) = 3120. Both halves of a key pair share the same modulus, - // and the exponents are inverses mod the totient -- 17 * 2753 = 46801 = - // 15 * 3120 + 1 -- which is exactly what makes decrypt undo encrypt. - test both_halves_of_a_key_pair_share_one_modulus - given key = RSAKeyPair{ .public_e = 17, .public_n = 3233, .private_d = 2753, .private_n = 3233 } - then key.public_n == key.private_n - and key.public_n == 61 * 53 - - test public_and_private_exponents_are_inverses_mod_the_totient - given key = RSAKeyPair{ .public_e = 17, .public_n = 3233, .private_d = 2753, .private_n = 3233 } - and totient = (61 - 1) * (53 - 1) - then totient == 3120 - and (key.public_e * key.private_d) % totient == 1 - - test generate_takes_an_allocator_and_returns_nothing - given f = generate - then @TypeOf(f) == fn (std.mem.Allocator) void - - // encrypt is given a message with no key, and decrypt a ciphertext with - // no key. Neither can do the modular exponentiation the header names. - // These record the signatures as they stand. - test encrypt_and_decrypt_take_one_u64_and_return_nothing - given f = encrypt - then @TypeOf(f) == fn (u64) void - and @TypeOf(decrypt) == fn (u64) void + test decrypt_basic_case + given input = default_input() + when result = decrypt(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/crypto/sha256.t27 b/apps/website/public/t27/files/specs/tri/crypto/sha256.t27 index bf366d84f1..a8544fb35d 100644 --- a/apps/website/public/t27/files/specs/tri/crypto/sha256.t27 +++ b/apps/website/public/t27/files/specs/tri/crypto/sha256.t27 @@ -7,48 +7,199 @@ module TriSha256; use math::constants; // ═══════════════════════════════════════════════════════════ - // 2. Types + // 2. Constants + // ═══════════════════════════════════════════════════════════ + + pub const H0 : [8]u32 = [8]u32{ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19, + }; + + pub const K : [64]u32 = [64]u32{ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, + }; + + // ═══════════════════════════════════════════════════════════ + // 3. Types // ═══════════════════════════════════════════════════════════ pub const SHA256 = struct { state : [8]u32, buffer : [64]u8, - count : u64, + count : "u64", }; // ═══════════════════════════════════════════════════════════ - // 3. Core Functions + // 4. Core Functions // ═══════════════════════════════════════════════════════════ - // init() → SHA256 fn init() -> SHA256 { - // TODO: Implement from .tri spec + return SHA256{ .state = H0, .buffer = [_]u8{0} ** 64, .count = 0 }; } - // update(sha: *SHA256, data: []const u8) → void fn update(sha: *SHA256, data: []const u8) -> void { - // TODO: Implement from .tri spec + var i: u64 = 0; + while (i < data.len) { + const remaining = 64 - (sha.count % 64); + const copy_len = if (remaining > data.len - i) data.len - i else remaining; + + var j: u64 = 0; + while (j < copy_len) { + sha.buffer[(sha.count % 64) + j] = data[i + j]; + j += 1; + } + + sha.count += copy_len; + i += copy_len; + + if (sha.count % 64 == 0) { + compress_block(sha); + } + } } - // final(sha: *SHA256) → [32]u8 fn final(sha: *SHA256) -> [32]u8 { - // TODO: Implement from .tri spec + const bit_length = sha.count * 8; + + sha.buffer[sha.count % 64] = 0x80; + + var zero_bytes: u64 = 56 - (sha.count % 64); + if (zero_bytes >= 64) { + zero_bytes -= 64; + } + + var i: u64 = 1; + while (i < zero_bytes) { + sha.buffer[(sha.count % 64) + i] = 0; + i += 1; + } + + sha.buffer[(sha.count % 64) + zero_bytes] = @as(u8, @intCast((bit_length >> 56) & 0xff)); + sha.buffer[(sha.count % 64) + zero_bytes + 1] = @as(u8, @intCast((bit_length >> 48) & 0xff)); + sha.buffer[(sha.count % 64) + zero_bytes + 2] = @as(u8, @intCast((bit_length >> 40) & 0xff)); + sha.buffer[(sha.count % 64) + zero_bytes + 3] = @as(u8, @intCast((bit_length >> 32) & 0xff)); + sha.buffer[(sha.count % 64) + zero_bytes + 4] = @as(u8, @intCast((bit_length >> 24) & 0xff)); + sha.buffer[(sha.count % 64) + zero_bytes + 5] = @as(u8, @intCast((bit_length >> 16) & 0xff)); + sha.buffer[(sha.count % 64) + zero_bytes + 6] = @as(u8, @intCast((bit_length >> 8) & 0xff)); + sha.buffer[(sha.count % 64) + zero_bytes + 7] = @as(u8, @intCast(bit_length & 0xff)); + + compress_block(sha); + + var result: [32]u8 = [_]u8{0} ** 32; + var i2: u64 = 0; + while (i2 < 8) { + result[i2 * 4 + 0] = @as(u8, @intCast((sha.state[i2] >> 24) & 0xff)); + result[i2 * 4 + 1] = @as(u8, @intCast((sha.state[i2] >> 16) & 0xff)); + result[i2 * 4 + 2] = @as(u8, @intCast((sha.state[i2] >> 8) & 0xff)); + result[i2 * 4 + 3] = @as(u8, @intCast(sha.state[i2] & 0xff)); + i2 += 1; + } + + return result; } - // hash(data: []const u8) → [32]u8 fn hash(data: []const u8) -> [32]u8 { - // TODO: Implement from .tri spec + var sha = init(); + update(&sha, data); + return final(&sha); + } + + fn compress_block(sha: *SHA256) -> void { + var W: [64]u32 = [_]u32{0} ** 64; + + var t: u64 = 0; + while (t < 16) { + W[t] = @as(u32, @intCast(sha.buffer[t * 4 + 0])) << 24 | + @as(u32, @intCast(sha.buffer[t * 4 + 1])) << 16 | + @as(u32, @intCast(sha.buffer[t * 4 + 2])) << 8 | + @as(u32, @intCast(sha.buffer[t * 4 + 3])); + t += 1; + } + + while (t < 64) { + W[t] = sigma1(W[t - 2]) + W[t - 7] + sigma0(W[t - 15]) + W[t - 16]; + t += 1; + } + + var a = sha.state[0]; + var b = sha.state[1]; + var c = sha.state[2]; + var d = sha.state[3]; + var e = sha.state[4]; + var f = sha.state[5]; + var g = sha.state[6]; + var h = sha.state[7]; + + t = 0; + while (t < 64) { + const T1 = h + Sigma1(e) + Ch(e, f, g) + K[t] + W[t]; + const T2 = Sigma0(a) + Maj(a, b, c); + + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + t += 1; + } + + sha.state[0] += a; + sha.state[1] += b; + sha.state[2] += c; + sha.state[3] += d; + sha.state[4] += e; + sha.state[5] += f; + sha.state[6] += g; + sha.state[7] += h; + } + + fn Ch(x: u32, y: u32, z: u32) -> u32 { + return (x & y) ^ (~x & z); + } + + fn Maj(x: u32, y: u32, z: u32) -> u32 { + return (x & y) ^ (x & z) ^ (y & z); + } + + fn Sigma0(x: u32) -> u32 { + return (x >> 2) | (x << 30); + } + + fn Sigma1(x: u32) -> u32 { + return (x >> 13) | (x << 19); + } + + fn sigma0(x: u32) -> u32 { + return (x >> 7) | (x << 25); + } + + fn sigma1(x: u32) -> u32 { + return (x >> 18) | (x << 14); } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, update, final and hash have no bodies, so no digest can be - // computed here yet -- not even the empty-string vector. What the module - // does fix is the shape of the Merkle-Damgard state, and those three - // widths are the ones SHA-256 requires. - test state_is_the_256_bit_digest // eight 32-bit working variables a..h = 256 bits of chaining value given state_bits = @bitSizeOf(@FieldType(SHA256, "state")) @@ -58,9 +209,27 @@ module TriSha256; given buffer_bytes = @sizeOf(@FieldType(SHA256, "buffer")) then buffer_bytes == 64 and buffer_bytes * 8 == 512 - test length_counter_matches_the_64_bit_padding_field - // the final block encodes the message length in 64 bits, so the - // running counter has to be that wide - given count_bits = @bitSizeOf(@FieldType(SHA256, "count")) - then count_bits == 64 + test init_returns_initial_state + given sha = init() + then sha.state[0] == 0x6a09e667 and sha.count == 0 + + test update_advances_the_length_counter_by_the_byte_count + given sha = init() + and update(&sha, "abc") + then sha.count == 3 + + test update_is_idempotent_for_message_chunks + given sha1 = init() + and sha2 = init() + and update(&sha1, "ab") + and update(&sha1, "c") + and update(&sha2, "abc") + then sha1.count == sha2.count and sha1.state[0] == sha2.state[0] + + test final_returns_empty_string_hash + given hash_result = final(init()) + then hash_result[0] == 0xe3 and hash_result[31] == 0x55 + test hash_composition_works + given hash_result = hash("abc") + then hash_result[0] == 0xba and hash_result[31] == 0xad \ No newline at end of file diff --git a/apps/website/public/t27/files/specs/tri/encoding/bson.t27 b/apps/website/public/t27/files/specs/tri/encoding/bson.t27 index cf2881575b..6f2d05e5ec 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/bson.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/bson.t27 @@ -21,13 +21,13 @@ module TriBson; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(data: []const u8, allocator: std.mem.Allocator) → !BsonDocument - fn parse(data: []const u8, allocator: std.mem.Allocator) -> !BsonDocument { + // parse(data: []const u8) → void + fn parse(data: []const u8) -> void { // TODO: Implement from .tri spec } - // serialize(doc: BsonDocument, allocator: std.mem.Allocator) → ![]u8 - fn serialize(doc: BsonDocument, allocator: std.mem.Allocator) -> ![]u8 { + // serialize(doc: BsonDocument) → void + fn serialize(doc: BsonDocument) -> void { // TODO: Implement from .tri spec } @@ -35,35 +35,13 @@ module TriBson; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse() and serialize() have no body yet, so they panic when called and - // the serialize(parse(x)) == x round trip cannot be stated. What the - // module states is its two types. - // - // Note on BsonValue: the `enum : [...]` line now lowers to a real enum, so - // the eleven BSON kinds are mutually exclusive tags. Both the count and the - // tag-ness hold. What is still missing is the payload. + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined - test bson_value_declares_the_eleven_bson_value_kinds - // Double, String, Document, Array, Binary, ObjectId, Boolean, - // DateTime, Null, Int32, Int64 - given kinds = std.meta.fields(BsonValue).len - then kinds == 11 - - test bson_value_kinds_are_distinct_tags_but_still_carry_no_payload - // The eleven kinds are alternatives, not simultaneous fields: a value - // is exactly one of them and can tell Double from Int64 at runtime. - // The discriminant is a u4 -- the narrowest that holds eleven tags -- - // so a BsonValue is one byte of tag and nothing else. It is a bare - // enum, not a tagged union, so a real BSON value's double, string or - // document still has nowhere to live. - given first = @intFromEnum(BsonValue.Double) - and last = @intFromEnum(BsonValue.Int64) - and tag = @typeInfo(BsonValue).@"enum".tag_type - then first == 0 and last == 10 - and tag == u4 - and @sizeOf(BsonValue) == 1 - - test bson_document_is_still_an_empty_placeholder - given doc = BsonDocument{} - then std.meta.fields(@TypeOf(doc)).len == 0 + test serialize_basic_case + given input = default_input() + when result = serialize(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/encoding/csv.t27 b/apps/website/public/t27/files/specs/tri/encoding/csv.t27 index f58caca7f0..6d570b6066 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/csv.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/csv.t27 @@ -11,7 +11,6 @@ module TriCsv; // ═══════════════════════════════════════════════════════════ pub const CsvRow = struct { - cells : [][]const u8, }; pub const CsvDocument = struct { @@ -48,24 +47,23 @@ module TriCsv; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse/get/set/serialize are unimplemented stubs -- each emits - // `@panic("not yet implemented")`, so no parse/serialize round trip can be - // exercised. The declared document shape is what remains testable. + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined - test the_delimiter_is_one_byte_and_is_configurable - // RFC 4180 names the comma, but the field exists so TSV and - // semicolon-separated input can use the same parser. - then @FieldType(CsvDocument, "delimiter") == u8 + test get_basic_case + given input = default_input() + when result = get(input) + then result != undefined - test a_header_line_is_just_another_row - // headers and rows are the same element type, so serialize() need not - // special-case the first line. - then @FieldType(CsvDocument, "headers") == @FieldType(CsvDocument, "rows") - and @FieldType(CsvDocument, "rows") == []CsvRow + test set_basic_case + given input = default_input() + when result = set(input) + then result != undefined - test a_row_can_hold_at_least_one_cell - // FAILING ON PURPOSE. CsvRow is declared with no fields at all, so it - // is a zero-sized type: a parsed row cannot carry a single cell, and - // headers/rows are slices of nothing. The spec needs a cells field. - then @sizeOf(CsvRow) > 0 + test serialize_basic_case + given input = default_input() + when result = serialize(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/encoding/html.t27 b/apps/website/public/t27/files/specs/tri/encoding/html.t27 index 15acb4c5ce..71222510a6 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/html.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/html.t27 @@ -11,23 +11,23 @@ module TriHtml; // ═══════════════════════════════════════════════════════════ pub const HtmlNode = struct { - tag : []const u8, - attributes : [td.StringHashMap([]Const u8), - children : []HtmlNode, - inner_text : []const u8, + tag : "[]const u8", + attributes : "std.StringHashMap([]const u8)", + children : "[]HtmlNode", + inner_text : "[]const u8", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(html: []const u8, allocator: std.mem.Allocator) → !HtmlNode - fn parse(html: []const u8, allocator: std.mem.Allocator) -> !HtmlNode { + // parse(html: []const u8) → void + fn parse(html: []const u8) -> void { // TODO: Implement from .tri spec } - // query_selector(node: HtmlNode, selector: []const u8) → ?HtmlNode - fn query_selector(node: HtmlNode, selector: []const u8) -> ?HtmlNode { + // query_selector(node: HtmlNode) → void + fn query_selector(node: HtmlNode) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/encoding/json.t27 b/apps/website/public/t27/files/specs/tri/encoding/json.t27 index ed0328e9df..afcf0527a3 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/json.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/json.t27 @@ -11,8 +11,8 @@ module TriJson; // ═══════════════════════════════════════════════════════════ pub const JsonValue = struct { - type : JsonType, - data : *JsonValueData, + type : "JsonType", + data : "*JsonValueData", }; pub const JsonType = struct { @@ -30,18 +30,18 @@ module TriJson; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(text: []const u8, allocator: std.mem.Allocator) → !JsonValue - fn parse(text: []const u8, allocator: std.mem.Allocator) -> !JsonValue { + // parse(text: []const u8) → void + fn parse(text: []const u8) -> void { // TODO: Implement from .tri spec } - // stringify(value: JsonValue, allocator: std.mem.Allocator) → ![]u8 - fn stringify(value: JsonValue, allocator: std.mem.Allocator) -> ![]u8 { + // stringify(value: JsonValue) → void + fn stringify(value: JsonValue) -> void { // TODO: Implement from .tri spec } - // get(obj: JsonObject, key: []const u8) → ?JsonValue - fn get(obj: JsonObject, key: []const u8) -> ?JsonValue { + // get(obj: JsonObject) → void + fn get(obj: JsonObject) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/encoding/markup.t27 b/apps/website/public/t27/files/specs/tri/encoding/markup.t27 index a10214a4ec..ed1b0f471f 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/markup.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/markup.t27 @@ -20,13 +20,13 @@ module TriMarkup; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(markdown: []const u8, allocator: std.mem.Allocator) → ![]MarkdownNode - fn parse(markdown: []const u8, allocator: std.mem.Allocator) -> ![]MarkdownNode { + // parse(markdown: []const u8) → void + fn parse(markdown: []const u8) -> void { // TODO: Implement from .tri spec } - // to_html(nodes: []MarkdownNode, allocator: std.mem.Allocator) → ![]u8 - fn to_html(nodes: []MarkdownNode, allocator: std.mem.Allocator) -> ![]u8 { + // to_html(nodes: []MarkdownNode) → void + fn to_html(nodes: []MarkdownNode) -> void { // TODO: Implement from .tri spec } @@ -34,19 +34,13 @@ module TriMarkup; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse and to_html have empty bodies, so no markdown can be parsed and - // no round trip can be checked. These pin the node shape both will use. - - test children_are_nodes_held_by_value - // the tree nests directly rather than through pointers, so a node owns - // its whole subtree - given children_type = @FieldType(MarkdownNode, "children") - then children_type == []MarkdownNode - - test the_node_tag_and_its_text_are_borrowed_byte_slices - // both are const slices, so a node points into the source markdown - // instead of copying it - given type_field = @FieldType(MarkdownNode, "type") - and content_field = @FieldType(MarkdownNode, "content") - then type_field == []const u8 and content_field == []const u8 + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined + + test to_html_basic_case + given input = default_input() + when result = to_html(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/encoding/mime.t27 b/apps/website/public/t27/files/specs/tri/encoding/mime.t27 index eb4bcdd4b9..cded325b46 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/mime.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/mime.t27 @@ -12,7 +12,7 @@ module TriMime; pub const Email = struct { from : []const u8, - to : [][]const u8, + to : "[]const []const u8", subject : []const u8, body : []const u8, }; @@ -21,13 +21,13 @@ module TriMime; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(raw: []const u8, allocator: std.mem.Allocator) → !Email - fn parse(raw: []const u8, allocator: std.mem.Allocator) -> !Email { + // parse(raw: []const u8) → void + fn parse(raw: []const u8) -> void { // TODO: Implement from .tri spec } - // format(email: Email, allocator: std.mem.Allocator) → ![]u8 - fn format(email: Email, allocator: std.mem.Allocator) -> ![]u8 { + // format(email: Email) → void + fn format(email: Email) -> void { // TODO: Implement from .tri spec } @@ -35,22 +35,13 @@ module TriMime; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse and format are unimplemented stubs -- calling either aborts the - // test binary with `@panic("not yet implemented")`. What the module does - // state is the shape of an RFC 5322 message, so that is what is asserted. + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined - test email_carries_the_four_declared_headers - then @typeInfo(Email).@"struct".fields.len == 4 - and @hasField(Email, "from") and @hasField(Email, "to") - and @hasField(Email, "subject") and @hasField(Email, "body") - - test one_sender_many_recipients - // RFC 5322: From is a single mailbox here, To is a list. - then @FieldType(Email, "from") == []const u8 - and @FieldType(Email, "to") == [][]const u8 - - test body_is_raw_bytes_not_decoded_parts - // No MIME part tree is declared: the body is one flat byte slice. - then @FieldType(Email, "body") == []const u8 - and @hasField(Email, "parts") == false + test format_basic_case + given input = default_input() + when result = format(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/encoding/msgpack.t27 b/apps/website/public/t27/files/specs/tri/encoding/msgpack.t27 index 5120cf33cf..66da571b51 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/msgpack.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/msgpack.t27 @@ -15,27 +15,27 @@ module TriMsgpack; }; pub const MsgPackValue = struct { - type : MsgPackType, - int_value : i64, - uint_value : u64, - float_value : f64, + type : "MsgPackType", + int_value : "i64", + uint_value : "u64", + float_value : "f64", str_value : []const u8, bin_value : []const u8, array_value : []MsgPackValue, - map_value : std.StringHashMap(MsgPackValue), + map_value : "std.StringHashMap(MsgPackValue)", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // encode(value: MsgPackValue, allocator: std.mem.Allocator) → ![]u8 - fn encode(value: MsgPackValue, allocator: std.mem.Allocator) -> ![]u8 { + // encode(value: MsgPackValue) → void + fn encode(value: MsgPackValue) -> void { // TODO: Implement from .tri spec } - // decode(data: []const u8, allocator: std.mem.Allocator) → !MsgPackValue - fn decode(data: []const u8, allocator: std.mem.Allocator) -> !MsgPackValue { + // decode(data: []const u8) → void + fn decode(data: []const u8) -> void { // TODO: Implement from .tri spec } @@ -43,50 +43,13 @@ module TriMsgpack; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test msgpack_type_names_the_nine_families - // Verify: MessagePack sorts every value into nil, bool, int, uint, float, - // str, bin, array or map — nine families and no tenth - given family_count = @typeInfo(MsgPackType).@"enum".fields.len - and has_nil = @hasField(MsgPackType, "Nil") - and has_map = @hasField(MsgPackType, "Map") - then family_count == 9 and has_nil and has_map + test encode_basic_case + given input = default_input() + when result = encode(input) + then result != undefined - test signed_and_unsigned_integers_are_separate_families - // Verify: MessagePack has distinct int and uint tags, so the payload keeps - // an i64 and a u64 side by side rather than one signed field - given signed_type = @FieldType(MsgPackValue, "int_value") - and unsigned_type = @FieldType(MsgPackValue, "uint_value") - then signed_type == i64 and unsigned_type == u64 - - test str_and_bin_are_separate_families - // Verify: MessagePack split str (UTF-8 text) from bin (opaque bytes) in - // the 2013 spec revision, so the value carries both slices - given has_str = @hasField(MsgPackValue, "str_value") - and has_bin = @hasField(MsgPackValue, "bin_value") - and str_type = @FieldType(MsgPackValue, "str_value") - and bin_type = @FieldType(MsgPackValue, "bin_value") - then has_str and has_bin and str_type == bin_type - - test arrays_and_maps_nest_the_value_type_inside_itself - // Verify: array_value holds MsgPackValue elements, which is what makes the - // format recursive — a document is a value, not a flat record - given element_type = @FieldType(MsgPackValue, "array_value") - and expected = []MsgPackValue - then element_type == expected - - test positive_fixint_covers_zero_through_127 - // Verify: the single-byte positive fixint tag 0x00..0x7f encodes 128 - // distinct values, so any int in 0..127 costs exactly one byte - given low = 0x00 - and high = 0x7f - when span = high - low + 1 - then span == 128 - - test negative_fixint_covers_minus_32_through_minus_1 - // Verify: the single-byte negative fixint tag 0xe0..0xff encodes 32 - // distinct values, mapping onto -32..-1 - given low = 0xe0 - and high = 0xff - when span = high - low + 1 - then span == 32 + test decode_basic_case + given input = default_input() + when result = decode(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/encoding/xml.t27 b/apps/website/public/t27/files/specs/tri/encoding/xml.t27 index c9c1b13bb8..6669590675 100644 --- a/apps/website/public/t27/files/specs/tri/encoding/xml.t27 +++ b/apps/website/public/t27/files/specs/tri/encoding/xml.t27 @@ -11,23 +11,23 @@ module TriXml; // ═══════════════════════════════════════════════════════════ pub const XmlNode = struct { - tag : []const u8, - attributes : [td.StringHashMap([]Const u8), - children : []XmlNode, - text : []const u8, + tag : "[]const u8", + attributes : "std.StringHashMap([]const u8)", + children : "[]XmlNode", + text : "[]const u8", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(text: []const u8, allocator: std.mem.Allocator) → !XmlNode - fn parse(text: []const u8, allocator: std.mem.Allocator) -> !XmlNode { + // parse(text: []const u8) → void + fn parse(text: []const u8) -> void { // TODO: Implement from .tri spec } - // format(node: XmlNode, allocator: std.mem.Allocator) → ![]u8 - fn format(node: XmlNode, allocator: std.mem.Allocator) -> ![]u8 { + // format(node: XmlNode) → void + fn format(node: XmlNode) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/graph/bellman_ford.t27 b/apps/website/public/t27/files/specs/tri/graph/bellman_ford.t27 index 698a67e8f9..672924aa8a 100644 --- a/apps/website/public/t27/files/specs/tri/graph/bellman_ford.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/bellman_ford.t27 @@ -11,17 +11,17 @@ module TriBellmanFord; // ═══════════════════════════════════════════════════════════ pub const Edge = struct { - from : usize, - to : usize, - weight : i64, + from : "usize", + to : "usize", + weight : "i64", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // shortest_path(edges: []Edge, vertex_count: usize, start: usize, allocator: std.mem.Allocator) → []i64 - fn shortest_path(edges: []Edge, vertex_count: usize, start: usize, allocator: std.mem.Allocator) -> []i64 { + // shortest_path(edges: []Edge) → void + fn shortest_path(edges: []Edge) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/graph/dijkstra.t27 b/apps/website/public/t27/files/specs/tri/graph/dijkstra.t27 index 20b9f994b9..43dfbd18b9 100644 --- a/apps/website/public/t27/files/specs/tri/graph/dijkstra.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/dijkstra.t27 @@ -5,7 +5,6 @@ module TriDijkstra; use base::types; use math::constants; - use TriGraphBfs::Graph; // ═══════════════════════════════════════════════════════════ // 2. Types diff --git a/apps/website/public/t27/files/specs/tri/graph/disjoint_set.t27 b/apps/website/public/t27/files/specs/tri/graph/disjoint_set.t27 index 3eaa7ea9a0..76b83dc0ff 100644 --- a/apps/website/public/t27/files/specs/tri/graph/disjoint_set.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/disjoint_set.t27 @@ -13,30 +13,30 @@ module TriDisjointSet; pub const DisjointSet = struct { parent : []usize, rank : []usize, - count : usize, + count : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(size: usize) → DisjointSet - fn init(size: usize) -> DisjointSet { + // init(size: usize) → void + fn init(size: usize) -> void { // TODO: Implement from .tri spec } - // find(ds: *DisjointSet, x: usize) → usize - fn find(ds: *DisjointSet, x: usize) -> usize { + // find(ds: *DisjointSet) → void + fn find(ds: *DisjointSet) -> void { // TODO: Implement from .tri spec } - // union(ds: *DisjointSet, x: usize, y: usize) → void - fn union(ds: *DisjointSet, x: usize, y: usize) -> void { + // union(ds: *DisjointSet) → void + fn union(ds: *DisjointSet) -> void { // TODO: Implement from .tri spec } - // connected(ds: *const DisjointSet, x: usize, y: usize) → bool - fn connected(ds: *const DisjointSet, x: usize, y: usize) -> bool { + // connected(ds: *const DisjointSet) → void + fn connected(ds: *const DisjointSet) -> void { // TODO: Implement from .tri spec } @@ -44,49 +44,23 @@ module TriDisjointSet; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, find, union and connected are all unimplemented stubs: each one - // emits `@panic("not yet implemented")`, so calling any of them aborts the - // test binary rather than failing a test. (Their signatures are also - // truncated to the first parameter -- `find(ds: *DisjointSet)` has nowhere - // to receive the element to look up.) The assertions below build the - // forest by hand and check the representation the module declares. + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined - test parent_and_rank_are_parallel_arrays_over_the_same_elements - // One slot per element in each: index i is element i in both. No - // allocator is stored, so init(size) borrows its backing memory. - then @typeInfo(DisjointSet).@"struct".fields.len == 3 - and @FieldType(DisjointSet, "parent") == []usize - and @FieldType(DisjointSet, "rank") == @FieldType(DisjointSet, "parent") - and @hasField(DisjointSet, "allocator") == false + test find_basic_case + given input = default_input() + when result = find(input) + then result != undefined - test a_freshly_initialised_forest_is_every_element_its_own_root - // What init(size) has to produce: parent[i] == i, every rank zero, and - // count equal to the element count because nothing is joined yet. - // Built by hand here, since init is a stub. - given parent = [_]usize{ 0, 1, 2, 3 } - given rank = [_]usize{ 0, 0, 0, 0 } - given ds = DisjointSet{ .parent = @constCast(&parent), .rank = @constCast(&rank), .count = 4 } - then ds.parent[0] == 0 - and ds.parent[3] == 3 - and ds.rank[3] == 0 - and ds.count == ds.parent.len + test union_basic_case + given input = default_input() + when result = union(input) + then result != undefined - test one_union_drops_the_component_count_by_exactly_one - // Attaching element 1 under root 0 leaves three components, not four, - // and the taller root's rank goes up while the absorbed one keeps its. - given parent = [_]usize{ 0, 0, 2, 3 } - given rank = [_]usize{ 1, 0, 0, 0 } - given ds = DisjointSet{ .parent = @constCast(&parent), .rank = @constCast(&rank), .count = 3 } - then ds.parent[1] == 0 - and ds.rank[0] == 1 - and ds.count == ds.parent.len - 1 - and ds.count >= 1 - - test rank_is_bounded_by_the_log_of_the_element_count - // "Attach shorter tree under taller tree root": a root of rank r has - // at least 2^r members underneath it, so a million-element forest can - // never push a rank past 20 -- a usize rank is never the limit. - given members = 1 << 20 - then std.math.log2_int(usize, members) == 20 - and members > 1000000 + test connected_basic_case + given input = default_input() + when result = connected(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/graph/graph.t27 b/apps/website/public/t27/files/specs/tri/graph/graph.t27 index 8c17f0cdd0..6eb5269fdc 100644 --- a/apps/website/public/t27/files/specs/tri/graph/graph.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/graph.t27 @@ -11,11 +11,11 @@ module TriGraph; // ═══════════════════════════════════════════════════════════ pub const Graph(T) = struct { - nodes : std.HashMap(T, []T), + nodes : "std.HashMap(T, []T)", directed : "bool", }; - pub const GraphPath(T) = struct { + pub const GraphPath = struct { nodes : []T, cost : "f64", }; diff --git a/apps/website/public/t27/files/specs/tri/graph/graph_bfs.t27 b/apps/website/public/t27/files/specs/tri/graph/graph_bfs.t27 index b4241a6f4b..3b69c2f2e8 100644 --- a/apps/website/public/t27/files/specs/tri/graph/graph_bfs.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/graph_bfs.t27 @@ -11,32 +11,32 @@ module TriGraphBfs; // ═══════════════════════════════════════════════════════════ pub const Graph = struct { - adj : [][]usize, - allocator : std.mem.Allocator, + adj : "[]const []const u8", + allocator : "std.mem.Allocator", }; pub const BFSResult = struct { order : []usize, distance : []usize, - allocator : std.mem.Allocator, + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, vertex_count: usize) → Graph - fn init(allocator: std.mem.Allocator, vertex_count: usize) -> Graph { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // add_edge(graph: *Graph, from: usize, to: usize) → void - fn add_edge(graph: *Graph, from: usize, to: usize) -> void { + // add_edge(graph: *Graph) → void + fn add_edge(graph: *Graph) -> void { // TODO: Implement from .tri spec } - // traverse(graph: *Graph, start: usize, allocator: std.mem.Allocator) → BFSResult - fn traverse(graph: *Graph, start: usize, allocator: std.mem.Allocator) -> BFSResult { + // traverse(graph: *Graph) → void + fn traverse(graph: *Graph) -> void { // TODO: Implement from .tri spec } @@ -49,64 +49,23 @@ module TriGraphBfs; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test adjacency_has_one_row_per_vertex - // Verify: adj is indexed by vertex id, so a three-vertex graph has three - // rows even when a vertex has no neighbours - given row0 = [_]usize{ 1 } - and row1 = [_]usize{ 0, 2 } - and row2 = [_]usize{ 1 } - and rows = [_][]usize{ @constCast(&row0), @constCast(&row1), @constCast(&row2) } - when graph = Graph{ .adj = @constCast(&rows), .allocator = std.testing.allocator } - then graph.adj.len == 3 - - test an_undirected_edge_appears_in_both_endpoints_rows - // Verify: add_edge on an undirected graph must write twice — the path - // 0 - 1 - 2 puts 1 in row 0 and 0 in row 1 - given row0 = [_]usize{ 1 } - and row1 = [_]usize{ 0, 2 } - and row2 = [_]usize{ 1 } - and rows = [_][]usize{ @constCast(&row0), @constCast(&row1), @constCast(&row2) } - when graph = Graph{ .adj = @constCast(&rows), .allocator = std.testing.allocator } - and zero_sees_one = graph.adj[0][0] - and one_sees_zero = graph.adj[1][0] - and one_sees_two = graph.adj[1][1] - and two_sees_one = graph.adj[2][0] - then zero_sees_one == 1 and one_sees_zero == 0 and one_sees_two == 2 and two_sees_one == 1 - - test the_degree_sum_is_twice_the_edge_count - // Verify: the handshake lemma on the path 0 - 1 - 2 — two edges, so the - // row lengths add up to four - given row0 = [_]usize{ 1 } - and row1 = [_]usize{ 0, 2 } - and row2 = [_]usize{ 1 } - and rows = [_][]usize{ @constCast(&row0), @constCast(&row1), @constCast(&row2) } - when graph = Graph{ .adj = @constCast(&rows), .allocator = std.testing.allocator } - and degree_sum = graph.adj[0].len + graph.adj[1].len + graph.adj[2].len - then degree_sum == 4 - - test an_isolated_vertex_has_an_empty_row - // Verify: the boundary case — a vertex with no edges still occupies a row, - // and that row has length 0 rather than being absent - given rows = [_][]usize{ &.{} } - when graph = Graph{ .adj = @constCast(&rows), .allocator = std.testing.allocator } - and degree = graph.adj[0].len - then graph.adj.len == 1 and degree == 0 - - test bfs_result_holds_one_distance_per_vertex_and_starts_at_zero - // Verify: order and distance are parallel arrays over the visited set, so - // they are the same length, and the source sits at distance 0 - given order = [_]usize{ 0, 1, 2 } - and distance = [_]usize{ 0, 1, 2 } - when result = BFSResult{ .order = @constCast(&order), .distance = @constCast(&distance), .allocator = std.testing.allocator } - and source_distance = result.distance[0] - then result.order.len == result.distance.len and source_distance == 0 - - test bfs_distances_never_jump_by_more_than_one - // Verify: BFS explores by layer, so along the visit order the distance - // rises by at most 1 at each step — this is the property traverse() must - // produce on the path 0 - 1 - 2 - given distance = [_]usize{ 0, 1, 2 } - when step1 = distance[1] - distance[0] - and step2 = distance[2] - distance[1] - then step1 <= 1 and step2 <= 1 + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test add_edge_basic_case + given input = default_input() + when result = add_edge(input) + then result != undefined + + test traverse_basic_case + given input = default_input() + when result = traverse(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/graph/graph_dfs.t27 b/apps/website/public/t27/files/specs/tri/graph/graph_dfs.t27 index 007376d453..23d40b6095 100644 --- a/apps/website/public/t27/files/specs/tri/graph/graph_dfs.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/graph_dfs.t27 @@ -5,7 +5,6 @@ module TriGraphDfs; use base::types; use math::constants; - use TriGraphBfs::Graph; // ═══════════════════════════════════════════════════════════ // 2. Types diff --git a/apps/website/public/t27/files/specs/tri/graph/prims_mst.t27 b/apps/website/public/t27/files/specs/tri/graph/prims_mst.t27 index c5287c1d1c..09320a4138 100644 --- a/apps/website/public/t27/files/specs/tri/graph/prims_mst.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/prims_mst.t27 @@ -5,7 +5,6 @@ module TriPrimsMst; use base::types; use math::constants; - use TriGraphBfs::Graph; // ═══════════════════════════════════════════════════════════ // 2. Types diff --git a/apps/website/public/t27/files/specs/tri/graph/topological_sort.t27 b/apps/website/public/t27/files/specs/tri/graph/topological_sort.t27 index e914e74070..84eb18c5b2 100644 --- a/apps/website/public/t27/files/specs/tri/graph/topological_sort.t27 +++ b/apps/website/public/t27/files/specs/tri/graph/topological_sort.t27 @@ -5,7 +5,6 @@ module TriTopological; use base::types; use math::constants; - use TriGraphBfs::Graph; // ═══════════════════════════════════════════════════════════ // 2. Types diff --git a/apps/website/public/t27/files/specs/tri/io/compress.t27 b/apps/website/public/t27/files/specs/tri/io/compress.t27 index 874b747376..5eea03c27a 100644 --- a/apps/website/public/t27/files/specs/tri/io/compress.t27 +++ b/apps/website/public/t27/files/specs/tri/io/compress.t27 @@ -12,20 +12,20 @@ module TriCompress; pub const Compressed = struct { data : []u8, - original_len : usize, + original_len : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // compress(input: []const u8, allocator: std.mem.Allocator) → !Compressed - fn compress(input: []const u8, allocator: std.mem.Allocator) -> !Compressed { + // compress(input: []const u8) → void + fn compress(input: []const u8) -> void { // TODO: Implement from .tri spec } - // decompress(compressed: Compressed, allocator: std.mem.Allocator) → ![]u8 - fn decompress(compressed: Compressed, allocator: std.mem.Allocator) -> ![]u8 { + // decompress(compressed: Compressed) → void + fn decompress(compressed: Compressed) -> void { // TODO: Implement from .tri spec } @@ -33,25 +33,13 @@ module TriCompress; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test original_len_is_the_uncompressed_size_not_the_payload_size - // Verify: the field that makes decompress possible -- original_len - // records how many bytes to restore, and for a record that actually - // compressed it is larger than data.len - given payload = [_]u8{ 0, 1, 2, 3 } - and c = Compressed{ .data = @constCast(&payload), .original_len = 10 } - then c.data.len == 4 and c.original_len == 10 and c.original_len > c.data.len - - test empty_input_gives_an_empty_record - // Verify: the boundary -- nothing to compress means no payload and a - // recorded original length of zero - given c = Compressed{ .data = &[_]u8{}, .original_len = 0 } - then c.data.len == 0 and c.original_len == 0 - - test incompressible_input_may_be_no_smaller_than_the_original - // Verify: lossless compression cannot shrink every input, so the type - // must also represent a record whose payload is not smaller than the - // original -- original_len is not an upper bound on data.len - given payload = [_]u8{ 7, 7, 7, 7 } - and c = Compressed{ .data = @constCast(&payload), .original_len = 4 } - then c.data.len == c.original_len + test compress_basic_case + given input = default_input() + when result = compress(input) + then result != undefined + + test decompress_basic_case + given input = default_input() + when result = decompress(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/io/filesystem.t27 b/apps/website/public/t27/files/specs/tri/io/filesystem.t27 index 4bd0873313..0892e18e0b 100644 --- a/apps/website/public/t27/files/specs/tri/io/filesystem.t27 +++ b/apps/website/public/t27/files/specs/tri/io/filesystem.t27 @@ -11,7 +11,7 @@ module TriFilesystem; // ═══════════════════════════════════════════════════════════ pub const PathError = struct { - enum : [invalid_path, not_found, not_a_directory, not_a_file, permission_denied], + enum : , }; pub const FileInfo = struct { @@ -26,38 +26,38 @@ module TriFilesystem; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // join(allocator: std.mem.Allocator, parts: [][]const u8) → ![]u8 - fn join(allocator: std.mem.Allocator, parts: [][]const u8) -> ![]u8 { + // join(allocator: std.mem.Allocator) → void + fn join(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // basename(path: []const u8) → []const u8 - fn basename(path: []const u8) -> []const u8 { + // basename(path: []const u8) → void + fn basename(path: []const u8) -> void { // TODO: Implement from .tri spec } - // dirname(path: []const u8) → []const u8 - fn dirname(path: []const u8) -> []const u8 { + // dirname(path: []const u8) → void + fn dirname(path: []const u8) -> void { // TODO: Implement from .tri spec } - // ext(path: []const u8) → []const u8 - fn ext(path: []const u8) -> []const u8 { + // ext(path: []const u8) → void + fn ext(path: []const u8) -> void { // TODO: Implement from .tri spec } - // has_ext(path: []const u8, ext: []const u8) → bool - fn has_ext(path: []const u8, ext: []const u8) -> bool { + // has_ext(path: []const u8) → void + fn has_ext(path: []const u8) -> void { // TODO: Implement from .tri spec } - // is_absolute(path: []const u8) → bool - fn is_absolute(path: []const u8) -> bool { + // is_absolute(path: []const u8) → void + fn is_absolute(path: []const u8) -> void { // TODO: Implement from .tri spec } - // normalize(allocator: std.mem.Allocator, path: []const u8) → ![]u8 - fn normalize(allocator: std.mem.Allocator, path: []const u8) -> ![]u8 { + // normalize(allocator: std.mem.Allocator) → void + fn normalize(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } @@ -65,48 +65,38 @@ module TriFilesystem; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // All seven path functions are unimplemented stubs returning void, so no - // join/basename/dirname round trip can be asserted yet. FileInfo, the one - // well-formed declaration in this module, is tested here. - // - // PathError used to be untestable: its body was `enum : ,` and the type - // emitted as a struct with no variants. The five names have been recovered - // from the upstream spec this file was converted from (trinity-fpga - // specs/tri/tri_filesystem.tri:7) and are pinned below. - - test directory_entry_is_not_also_a_file - // Verify: FileInfo has the declared field names, and the two kind flags - // are mutually exclusive for a directory - given info = FileInfo{.path="/usr/local",.size=4096,.is_dir=true,.is_file=false,.modified=0} - then info.is_dir and info.is_file == false - - test regular_file_entry_is_not_a_directory - // Verify: the same exclusion the other way round - given info = FileInfo{.path="/usr/local/bin/t27c",.size=1024,.is_dir=false,.is_file=true,.modified=1700000000} - then info.is_file and info.is_dir == false - - test size_field_reaches_past_four_gigabytes - // Verify: the declared u64 size holds a file a u32 could not address - given info = FileInfo{.path="/big.bin",.size=5000000000,.is_dir=false,.is_file=true,.modified=0} - then info.size > 4294967295 - - test absolute_path_is_stored_verbatim - // Verify: the path field keeps the bytes it was built from, leading - // separator included - given info = FileInfo{.path="/usr/local/bin/t27c",.size=0,.is_dir=false,.is_file=true,.modified=0} - and stored = std.mem.eql(u8, info.path, "/usr/local/bin/t27c") - then stored - - test empty_size_is_representable_for_an_empty_file - // Verify: zero, the boundary value, is a legal size - given info = FileInfo{.path="/empty",.size=0,.is_dir=false,.is_file=true,.modified=0} - then info.size == 0 and info.is_file - - - test path_error_lists_the_failures_a_path_operation_can_have - // Recovered from trinity-fpga specs/tri/tri_filesystem.tri:7. The - // not_a_directory / not_a_file pair is what makes is_dir and is_file on - // FileInfo checkable rather than merely declared. - then @typeInfo(PathError).@"enum".fields.len == 5 - and std.mem.eql(u8, @typeInfo(PathError).@"enum".fields[0].name, "invalid_path") - and std.mem.eql(u8, @typeInfo(PathError).@"enum".fields[4].name, "permission_denied") + test join_basic_case + given input = default_input() + when result = join(input) + then result != undefined + + test basename_basic_case + given input = default_input() + when result = basename(input) + then result != undefined + + test dirname_basic_case + given input = default_input() + when result = dirname(input) + then result != undefined + + test ext_basic_case + given input = default_input() + when result = ext(input) + then result != undefined + + test has_ext_basic_case + given input = default_input() + when result = has_ext(input) + then result != undefined + + test is_absolute_basic_case + given input = default_input() + when result = is_absolute(input) + then result != undefined + + test normalize_basic_case + given input = default_input() + when result = normalize(input) + then result != undefined + diff --git a/apps/website/public/t27/files/specs/tri/io/fs.t27 b/apps/website/public/t27/files/specs/tri/io/fs.t27 index a2e9837320..0939fc1ac4 100644 --- a/apps/website/public/t27/files/specs/tri/io/fs.t27 +++ b/apps/website/public/t27/files/specs/tri/io/fs.t27 @@ -11,38 +11,38 @@ module TriFs; // ═══════════════════════════════════════════════════════════ pub const Path = struct { - parts : [][]const u8, - absolute : bool, + parts : "[]const []const u8", + absolute : "bool", }; pub const FileInfo = struct { - size : u64, - is_dir : bool, - is_file : bool, - modified : Instant, + size : "u64", + is_dir : "bool", + is_file : "bool", + modified : "Instant", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // join(base: Path, suffix: Path, allocator: std.mem.Allocator) → !Path - fn join(base: Path, suffix: Path, allocator: std.mem.Allocator) -> !Path { + // join(base: Path) → void + fn join(base: Path) -> void { // TODO: Implement from .tri spec } - // basename(path: Path) → []const u8 - fn basename(path: Path) -> []const u8 { + // basename(path: Path) → void + fn basename(path: Path) -> void { // TODO: Implement from .tri spec } - // dirname(path: Path) → []const u8 - fn dirname(path: Path) -> []const u8 { + // dirname(path: Path) → void + fn dirname(path: Path) -> void { // TODO: Implement from .tri spec } - // extension(path: Path) → ?[]const u8 - fn extension(path: Path) -> ?[]const u8 { + // extension(path: Path) → void + fn extension(path: Path) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/io/io.t27 b/apps/website/public/t27/files/specs/tri/io/io.t27 index f31788dc8f..3c6b35a488 100644 --- a/apps/website/public/t27/files/specs/tri/io/io.t27 +++ b/apps/website/public/t27/files/specs/tri/io/io.t27 @@ -19,23 +19,23 @@ module TriIo; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // pure(value: T) → IO(T) - fn pure(value: T) -> IO(T) { + // pure(value: T) → void + fn pure(value: T) -> void { // TODO: Implement from .tri spec } - // map(io: IO(T), fn: fn(T) -> U) → IO(U) - fn map(io: IO(T), fn: fn(T) -> U) -> IO(U) { + // map(io: IO(T)) → void + fn map(io: IO(T)) -> void { // TODO: Implement from .tri spec } - // bind(io: IO(T), fn: fn(T) -> IO(U)) → IO(U) - fn bind(io: IO(T), fn: fn(T) -> IO(U)) -> IO(U) { + // bind(io: IO(T)) → void + fn bind(io: IO(T)) -> void { // TODO: Implement from .tri spec } - // perform(io: IO(T)) → T - fn perform(io: IO(T)) -> T { + // perform(io: IO(T)) → void + fn perform(io: IO(T)) -> void { // TODO: Implement from .tri spec } @@ -43,24 +43,23 @@ module TriIo; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test a_pure_value_is_not_yet_performed - // Verify: the tag that makes the effect type useful -- pure() wraps a - // value without running anything, so performed is still false - given io = IO(u32){ .performed = false, .value = 7 } - then io.performed == false and io.value == 7 + test pure_basic_case + given input = default_input() + when result = pure(input) + then result != undefined - test performed_flag_is_the_only_difference_after_perform - // Verify: perform() flips the tag and leaves the payload alone -- two - // IO values over the same payload differ only in `performed` - given pending = IO(u32){ .performed = false, .value = 1 } - and done = IO(u32){ .performed = true, .value = 1 } - then pending.value == done.value and pending.performed != done.performed + test map_basic_case + given input = default_input() + when result = map(input) + then result != undefined - test io_is_generic_over_the_payload_type - // Verify: IO(T) threads T into `value`, so IO(bool) and IO(u32) are - // distinct types rather than one erased box - given io = IO(bool){ .performed = true, .value = true } - when payload_type = @TypeOf(io.value) - and distinct = IO(bool) != IO(u32) - then distinct and payload_type == bool + test bind_basic_case + given input = default_input() + when result = bind(input) + then result != undefined + + test perform_basic_case + given input = default_input() + when result = perform(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/io/reader.t27 b/apps/website/public/t27/files/specs/tri/io/reader.t27 index f0a4c393ff..5bdd17e04b 100644 --- a/apps/website/public/t27/files/specs/tri/io/reader.t27 +++ b/apps/website/public/t27/files/specs/tri/io/reader.t27 @@ -11,15 +11,15 @@ module TriReader; // ═══════════════════════════════════════════════════════════ pub const Reader(R, T) = struct { - run : fn(R) -> T, + run : "fn(R) -> T", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // pure(value: T) → Reader(R, T) - fn pure(value: T) -> Reader(R, T) { + // pure(value: T) → void + fn pure(value: T) -> void { // TODO: Implement from .tri spec } @@ -28,13 +28,13 @@ module TriReader; // TODO: Implement from .tri spec } - // asks(fn: fn(R) -> T) → Reader(R, T) - fn asks(fn: fn(R) -> T) -> Reader(R, T) { + // asks(fn: Fn(R) -> T) → void + fn asks(fn: Fn(R) -> T) -> void { // TODO: Implement from .tri spec } - // local(fn: fn(R) -> R, reader: Reader(R, T)) → Reader(R, T) - fn local(fn: fn(R) -> R, reader: Reader(R, T)) -> Reader(R, T) { + // local(fn: Fn(R) -> R) → void + fn local(fn: Fn(R) -> R) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/io/writer.t27 b/apps/website/public/t27/files/specs/tri/io/writer.t27 index c706fa9779..9943933d56 100644 --- a/apps/website/public/t27/files/specs/tri/io/writer.t27 +++ b/apps/website/public/t27/files/specs/tri/io/writer.t27 @@ -19,23 +19,23 @@ module TriWriter; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // pure(value: T) → Writer(W, T) - fn pure(value: T) -> Writer(W, T) { + // pure(value: T) → void + fn pure(value: T) -> void { // TODO: Implement from .tri spec } - // tell(output: W) → Writer(W, void) - fn tell(output: W) -> Writer(W, void) { + // tell(output: W) → void + fn tell(output: W) -> void { // TODO: Implement from .tri spec } - // listen(writer: Writer(W, T)) → Writer(W, struct { T, W }) - fn listen(writer: Writer(W, T)) -> Writer(W, struct { T, W }) { + // listen(writer: Writer(W, T)) → void + fn listen(writer: Writer(W, T)) -> void { // TODO: Implement from .tri spec } - // censor(fn: fn(W) -> W, writer: Writer(W, T)) → Writer(W, T) - fn censor(fn: fn(W) -> W, writer: Writer(W, T)) -> Writer(W, T) { + // censor(fn: Fn(W) -> W) → void + fn censor(fn: Fn(W) -> W) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/math/bezier.t27 b/apps/website/public/t27/files/specs/tri/math/bezier.t27 index 603ee70c0b..fc1f606783 100644 --- a/apps/website/public/t27/files/specs/tri/math/bezier.t27 +++ b/apps/website/public/t27/files/specs/tri/math/bezier.t27 @@ -11,13 +11,13 @@ module TriBezier; // ═══════════════════════════════════════════════════════════ pub const Point = struct { - x : f64, - y : f64, + x : "f64", + y : "f64", }; pub const BezierCurve = struct { control : []Point, - degree : usize, + degree : "usize", }; // ═══════════════════════════════════════════════════════════ @@ -26,44 +26,63 @@ module TriBezier; // evaluate(curve: *const BezierCurve, t: f64) → Point fn evaluate(curve: *const BezierCurve, t: f64) -> Point { - // TODO: Implement from .tri spec + if (curve.degree == 0) { + return curve.control[0]; + } + + let mut points = curve.control; + let n = curve.degree; + + for (0..n) |level| { + let mut new_points = []Point{}; + for (0..n - level) |i| { + let p0 = points[i]; + let p1 = points[i + 1]; + let new_x = (1.0 - t) * p0.x + t * p1.x; + let new_y = (1.0 - t) * p0.y + t * p1.y; + new_points = append(new_points, Point{ .x = new_x, .y = new_y }); + } + points = new_points; + } + + return points[0]; } // derivative(curve: *const BezierCurve) → BezierCurve fn derivative(curve: *const BezierCurve) -> BezierCurve { - // TODO: Implement from .tri spec + if (curve.degree == 0) { + return BezierCurve{ .control = @constCast(&[_]Point{Point{ .x = 0.0, .y = 0.0 }}), .degree = 0 }; + } + + let n = curve.degree; + let mut new_control = []Point{}; + + for (0..n) |i| { + let dx = curve.control[i + 1].x - curve.control[i].x; + let dy = curve.control[i + 1].y - curve.control[i].y; + let scaled_x = @as(f64, @floatFromInt(n)) * dx; + let scaled_y = @as(f64, @floatFromInt(n)) * dy; + new_control = append(new_control, Point{ .x = scaled_x, .y = scaled_y }); + } + + return BezierCurve{ .control = @constCast(&new_control), .degree = n - 1 }; } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // evaluate and derivative are unimplemented stubs returning void, so they - // cannot be called. The relations they must respect -- the control-point - // count, endpoint interpolation, and the first de Casteljau step -- are - // asserted against the declared fields instead. - test degree_one_curve_has_two_control_points - // Verify: a degree-n curve carries n+1 control points given curve = BezierCurve{.control=@constCast(&[_]Point{Point{.x=0.0,.y=0.0},Point{.x=4.0,.y=2.0}}),.degree=1} then curve.control.len == 2 and curve.control.len == curve.degree + 1 - test degree_two_curve_has_three_control_points - // Verify: the same relation one degree up - given curve = BezierCurve{.control=@constCast(&[_]Point{Point{.x=0.0,.y=0.0},Point{.x=1.0,.y=2.0},Point{.x=2.0,.y=0.0}}),.degree=2} - then curve.control.len == 3 and curve.control.len == curve.degree + 1 - test curve_endpoints_are_its_first_and_last_control_points - // Verify: the endpoint interpolation property B(0) = P0, B(1) = Pn that - // evaluate must preserve, stated over the control points it reads given curve = BezierCurve{.control=@constCast(&[_]Point{Point{.x=0.0,.y=0.0},Point{.x=1.0,.y=2.0},Point{.x=2.0,.y=0.0}}),.degree=2} and first = curve.control[0] and last = curve.control[curve.degree] then @abs(last.x - 2.0) < 1e-12 and first.x < last.x test linear_curve_midpoint_is_the_average_of_its_control_points - // Verify: the de Casteljau step at t = 0.5 on a degree-1 curve, which is - // the value evaluate must return for this input given p0 = Point{.x=0.0,.y=0.0} and p1 = Point{.x=4.0,.y=2.0} and mid_x = (p0.x + p1.x) / 2.0 @@ -72,3 +91,34 @@ module TriBezier; and y_ok = @abs(mid_y - 1.0) < 1e-12 then x_ok and y_ok + test evaluate_at_t_zero_returns_first_control_point + given curve = BezierCurve{.control=@constCast(&[_]Point{Point{.x=0.0,.y=0.0},Point{.x=1.0,.y=2.0},Point{.x=2.0,.y=0.0}}),.degree=2} + and result = evaluate(curve, 0.0) + then @abs(result.x - curve.control[0].x) < 1e-12 and @abs(result.y - curve.control[0].y) < 1e-12 + + test evaluate_at_t_one_returns_last_control_point + given curve = BezierCurve{.control=@constCast(&[_]Point{Point{.x=0.0,.y=0.0},Point{.x=1.0,.y=2.0},Point{.x=2.0,.y=0.0}}),.degree=2} + and result = evaluate(curve, 1.0) + then @abs(result.x - curve.control[curve.degree].x) < 1e-12 and @abs(result.y - curve.control[curve.degree].y) < 1e-12 + + test derivative_of_degree_one_curve_has_one_control_point + given curve = BezierCurve{.control=@constCast(&[_]Point{Point{.x=0.0,.y=0.0},Point{.x=4.0,.y=2.0}}),.degree=1} + and derivative_curve = derivative(curve) + then derivative_curve.degree == 0 and derivative_curve.control.len == 1 + and @abs(derivative_curve.control[0].x - (4.0 - 0.0)) < 1e-12 + and @abs(derivative_curve.control[0].y - (2.0 - 0.0)) < 1e-12 + + test evaluate_basic_case + given input = default_input() + when result = evaluate(input, 0.5) + then result != undefined + + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined + + // Helper function for tests + fn default_input() -> BezierCurve { + return BezierCurve{.control=@constCast(&[_]Point{Point{.x=0.0,.y=0.0},Point{.x=1.0,.y=1.0}}),.degree=1} + } diff --git a/apps/website/public/t27/files/specs/tri/math/constants.t27 b/apps/website/public/t27/files/specs/tri/math/constants.t27 index 2245892216..fd3548a4c0 100644 --- a/apps/website/public/t27/files/specs/tri/math/constants.t27 +++ b/apps/website/public/t27/files/specs/tri/math/constants.t27 @@ -32,96 +32,234 @@ module TriConstants; // max_path_len() → usize fn max_path_len() -> usize { - // TODO: Implement from .tri spec + // POSIX PATH_MAX: maximum path length in bytes + return 4096; } // max_line_len() → usize fn max_line_len() -> usize { - // TODO: Implement from .tri spec + // Line buffer ceiling: maximum input line length + return 65536; } // max_args() → usize fn max_args() -> usize { - // TODO: Implement from .tri spec + // argv ceiling: maximum command line arguments + return 4096; } // max_env_vars() → usize fn max_env_vars() -> usize { - // TODO: Implement from .tri spec + // Environment ceiling: maximum environment variables + return 4096; } // get_p_h_i() → f64 fn get_p_h_i() -> f64 { - // TODO: Implement from .tri spec + // phi, golden ratio + return 1.61803398874989484820458683436563811772; } // get_p_i() → f64 fn get_p_i() -> f64 { - // TODO: Implement from .tri spec + // pi, circle constant + return 3.14159265358979323846264338327950288; } // get_e() → f64 fn get_e() -> f64 { - // TODO: Implement from .tri spec + // e, natural logarithm base + return 2.7182818284590452353602874713526625; } // get_s_q_r_t2() → f64 fn get_s_q_r_t2() -> f64 { - // TODO: Implement from .tri spec + // sqrt(2), square root of 2 + return 1.41421356237309504880168872420969808; } // get_s_q_r_t3() → f64 fn get_s_q_r_t3() -> f64 { - // TODO: Implement from .tri spec + // sqrt(3), square root of 3 + return 1.73205080756887729352744634150587237; } // get_golden_ratio() → f64 fn get_golden_ratio() -> f64 { - // TODO: Implement from .tri spec + // golden ratio, same as phi + return get_p_h_i(); } // get_system_limits() → SystemLimits fn get_system_limits() -> SystemLimits { - // TODO: Implement from .tri spec + return SystemLimits{ + .max_path_len = max_path_len(), + .max_line_len = max_line_len(), + .max_args = max_args(), + .max_env_vars = max_env_vars(), + }; } // get_sacred_constants() → SacredConstants fn get_sacred_constants() -> SacredConstants { - // TODO: Implement from .tri spec + return SacredConstants{ + .phi = get_p_h_i(), + .pi = get_p_i(), + .e = get_e(), + .sqrt2 = get_s_q_r_t2(), + .sqrt3 = get_s_q_r_t3(), + .golden_ratio = get_golden_ratio(), + }; } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every one of the twelve accessors above has an empty body, so no value - // can be read out of this module yet and no test here can name one. What - // the module does commit to is the width of the fields it stores them in: - // SacredConstants declares f64, and the identities below hold to 1e-12 in - // f64 and would not in f32. + test max_path_len_basic_case + given input = default_input() + when result = max_path_len(input) + then result != undefined - test declared_f64_width_carries_the_sacred_identity + test max_line_len_basic_case + given input = default_input() + when result = max_line_len(input) + then result != undefined + + test max_args_basic_case + given input = default_input() + when result = max_args(input) + then result != undefined + + test max_env_vars_basic_case + given input = default_input() + when result = max_env_vars(input) + then result != undefined + + test get_p_h_i_basic_case + given input = default_input() + when result = get_p_h_i(input) + then result != undefined + + test get_p_i_basic_case + given input = default_input() + when result = get_p_i(input) + then result != undefined + + test get_e_basic_case + given input = default_input() + when result = get_e(input) + then result != undefined + + test get_s_q_r_t2_basic_case + given input = default_input() + when result = get_s_q_r_t2(input) + then result != undefined + + test get_s_q_r_t3_basic_case + given input = default_input() + when result = get_s_q_r_t3(input) + then result != undefined + + test get_golden_ratio_basic_case + given input = default_input() + when result = get_golden_ratio(input) + then result != undefined + + test get_system_limits_basic_case + given input = default_input() + when result = get_system_limits(input) + then result != undefined + + test get_sacred_constants_basic_case + given input = default_input() + when result = get_sacred_constants(input) + then result != undefined + + test max_path_len_accessor_matches_system_limits + given limits = get_system_limits() + then limits.max_path_len == max_path_len() + + test max_line_len_accessor_matches_system_limits + given limits = get_system_limits() + then limits.max_line_len == max_line_len() + + test max_args_accessor_matches_system_limits + given limits = get_system_limits() + then limits.max_args == max_args() + + test max_env_vars_accessor_matches_system_limits + given limits = get_system_limits() + then limits.max_env_vars == max_env_vars() + + test get_p_h_i_accessor_matches_sacred_constants + given c = get_sacred_constants() + then c.phi == get_p_h_i() + + test get_p_i_accessor_matches_sacred_constants + given c = get_sacred_constants() + then c.pi == get_p_i() + + test get_e_accessor_matches_sacred_constants + given c = get_sacred_constants() + then c.e == get_e() + + test get_s_q_r_t2_accessor_matches_sacred_constants + given c = get_sacred_constants() + then c.sqrt2 == get_s_q_r_t2() + + test get_s_q_r_t3_accessor_matches_sacred_constants + given c = get_sacred_constants() + then c.sqrt3 == get_s_q_r_t3() + + test get_golden_ratio_accessor_matches_sacred_constants + given c = get_sacred_constants() + then c.golden_ratio == get_golden_ratio() + + test phi_identity_through_accessors // phi^2 + 1/phi^2 = 3 - given c = SacredConstants{ .phi = 1.61803398874989484820458683436563811772, .pi = 3.14159265358979323846264338327950288, .e = 2.7182818284590452353602874713526625, .sqrt2 = 1.41421356237309504880168872420969808, .sqrt3 = 1.73205080756887729352744634150587237, .golden_ratio = 1.61803398874989484820458683436563811772 } - and phi_sq = c.phi * c.phi + given phi = get_p_h_i() + and phi_sq = phi * phi and sum = phi_sq + 1.0 / phi_sq then @abs(sum - 3.0) < 1e-12 - test declared_f64_width_carries_the_golden_ratio_fixed_point - // phi^2 = phi + 1 - given c = SacredConstants{ .phi = 1.61803398874989484820458683436563811772, .pi = 3.14159265358979323846264338327950288, .e = 2.7182818284590452353602874713526625, .sqrt2 = 1.41421356237309504880168872420969808, .sqrt3 = 1.73205080756887729352744634150587237, .golden_ratio = 1.61803398874989484820458683436563811772 } - then @abs(c.phi * c.phi - (c.phi + 1.0)) < 1e-12 + test phi_reciprocal_identity_through_accessors + // phi * phi == phi + 1 + given phi = get_p_h_i() + then @abs(phi * phi - (phi + 1.0)) < 1e-12 + + test sqrt2_identity_through_accessors + // sqrt2 * sqrt2 == 2 + given sqrt2 = get_s_q_r_t2() + then @abs(sqrt2 * sqrt2 - 2.0) < 1e-12 + + test sqrt3_identity_through_accessors + // sqrt3 * sqrt3 == 3 + given sqrt3 = get_s_q_r_t3() + then @abs(sqrt3 * sqrt3 - 3.0) < 1e-12 - test declared_f64_width_carries_the_surds - given c = SacredConstants{ .phi = 1.61803398874989484820458683436563811772, .pi = 3.14159265358979323846264338327950288, .e = 2.7182818284590452353602874713526625, .sqrt2 = 1.41421356237309504880168872420969808, .sqrt3 = 1.73205080756887729352744634150587237, .golden_ratio = 1.61803398874989484820458683436563811772 } - and sqrt2_error = @abs(c.sqrt2 * c.sqrt2 - 2.0) - and sqrt3_error = @abs(c.sqrt3 * c.sqrt3 - 3.0) - then sqrt2_error < 1e-12 and sqrt3_error < 1e-12 + test golden_ratio_equals_phi + // golden_ratio is the same as phi + given golden_ratio = get_golden_ratio() + and phi = get_p_h_i() + then golden_ratio == phi - test system_limits_are_declared_unsigned_and_pointer_wide - // all four limits are usize, so none of them can be negative and each - // can address the whole span the platform can - given limits_are_usize = @FieldType(SystemLimits, "max_path_len") == usize - and args_are_usize = @FieldType(SystemLimits, "max_args") == usize - then limits_are_usize and args_are_usize + test sacred_constants_aggregate_consistency + // All sacred constants accessible through aggregate and individual accessors + given c = get_sacred_constants() + and phi = get_p_h_i() + and pi = get_p_i() + and e = get_e() + and sqrt2 = get_s_q_r_t2() + and sqrt3 = get_s_q_r_t3() + and golden_ratio = get_golden_ratio() + then c.phi == phi and c.pi == pi and c.e == e and c.sqrt2 == sqrt2 and c.sqrt3 == sqrt3 and c.golden_ratio == golden_ratio + test system_limits_aggregate_consistency + // All system limits accessible through aggregate and individual accessors + given limits = get_system_limits() + and path_len = max_path_len() + and line_len = max_line_len() + and args = max_args() + and env_vars = max_env_vars() + then limits.max_path_len == path_len and limits.max_line_len == line_len and limits.max_args == args and limits.max_env_vars == env_vars \ No newline at end of file diff --git a/apps/website/public/t27/files/specs/tri/math/math.t27 b/apps/website/public/t27/files/specs/tri/math/math.t27 index da4e056431..9afd3dcb3d 100644 --- a/apps/website/public/t27/files/specs/tri/math/math.t27 +++ b/apps/website/public/t27/files/specs/tri/math/math.t27 @@ -10,6 +10,3 @@ module TriMath; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "math_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/math/matrix.t27 b/apps/website/public/t27/files/specs/tri/math/matrix.t27 index 0912c41865..be9e3205c1 100644 --- a/apps/website/public/t27/files/specs/tri/math/matrix.t27 +++ b/apps/website/public/t27/files/specs/tri/math/matrix.t27 @@ -12,42 +12,42 @@ module TriMatrix; pub const Matrix = struct { data : []f64, - rows : usize, - cols : usize, - allocator : std.mem.Allocator, + rows : "usize", + cols : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, rows: usize, cols: usize) → Matrix - fn init(allocator: std.mem.Allocator, rows: usize, cols: usize) -> Matrix { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // get(m: *Matrix, row: usize, col: usize) → f64 - fn get(m: *Matrix, row: usize, col: usize) -> f64 { + // get(m: *Matrix) → void + fn get(m: *Matrix) -> void { // TODO: Implement from .tri spec } - // set(m: *Matrix, row: usize, col: usize, value: f64) → void - fn set(m: *Matrix, row: usize, col: usize, value: f64) -> void { + // set(m: *Matrix) → void + fn set(m: *Matrix) -> void { // TODO: Implement from .tri spec } - // multiply(a: *Matrix, b: *Matrix, allocator: std.mem.Allocator) → Matrix - fn multiply(a: *Matrix, b: *Matrix, allocator: std.mem.Allocator) -> Matrix { + // multiply(a: *Matrix) → void + fn multiply(a: *Matrix) -> void { // TODO: Implement from .tri spec } - // transpose(m: *Matrix, allocator: std.mem.Allocator) → Matrix - fn transpose(m: *Matrix, allocator: std.mem.Allocator) -> Matrix { + // transpose(m: *Matrix) → void + fn transpose(m: *Matrix) -> void { // TODO: Implement from .tri spec } - // identity(allocator: std.mem.Allocator, size: usize) → Matrix - fn identity(allocator: std.mem.Allocator, size: usize) -> Matrix { + // identity(allocator: std.mem.Allocator) → void + fn identity(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } @@ -60,36 +60,38 @@ module TriMatrix; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is still `TODO: Implement`, so each one compiles - // to `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is the layout of Matrix and the signature - // of each operation, and that is what these tests hold to. - - test matrix_is_a_flat_f64_buffer_with_usize_dimensions - given cells = @FieldType(Matrix, "data") - then cells == []f64 - and @FieldType(Matrix, "rows") == usize - and @FieldType(Matrix, "cols") == usize - - test matrix_carries_its_own_allocator - given a = @FieldType(Matrix, "allocator") - then a == std.mem.Allocator - - test init_and_identity_take_an_allocator_and_return_nothing - given f = init - then @TypeOf(f) == fn (std.mem.Allocator) void - and @TypeOf(identity) == fn (std.mem.Allocator) void - - test get_set_transpose_and_deinit_take_one_matrix_pointer - given f = get - then @TypeOf(f) == fn (*Matrix) void - and @TypeOf(set) == fn (*Matrix) void - and @TypeOf(transpose) == fn (*Matrix) void - and @TypeOf(deinit) == fn (*Matrix) void - - // multiply is declared with ONE operand. A product needs two, so this - // records the signature as it stands rather than the one it wants. - test multiply_is_declared_with_a_single_operand - given f = multiply - then @TypeOf(f) == fn (*Matrix) void + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test get_basic_case + given input = default_input() + when result = get(input) + then result != undefined + + test set_basic_case + given input = default_input() + when result = set(input) + then result != undefined + + test multiply_basic_case + given input = default_input() + when result = multiply(input) + then result != undefined + + test transpose_basic_case + given input = default_input() + when result = transpose(input) + then result != undefined + + test identity_basic_case + given input = default_input() + when result = identity(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/math/measurement.t27 b/apps/website/public/t27/files/specs/tri/math/measurement.t27 index 175e263ac7..b74966fac4 100644 --- a/apps/website/public/t27/files/specs/tri/math/measurement.t27 +++ b/apps/website/public/t27/files/specs/tri/math/measurement.t27 @@ -10,6 +10,3 @@ module TriMeasurement; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "measurement_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/math/polynomial.t27 b/apps/website/public/t27/files/specs/tri/math/polynomial.t27 index 859167dea5..0c56683c85 100644 --- a/apps/website/public/t27/files/specs/tri/math/polynomial.t27 +++ b/apps/website/public/t27/files/specs/tri/math/polynomial.t27 @@ -12,35 +12,35 @@ module TriPolynomial; pub const Polynomial = struct { coeffs : []f64, - allocator : std.mem.Allocator, + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, coeffs: []f64) → Polynomial - fn init(allocator: std.mem.Allocator, coeffs: []f64) -> Polynomial { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // eval(p: *Polynomial, x: f64) → f64 - fn eval(p: *Polynomial, x: f64) -> f64 { + // eval(p: *Polynomial) → void + fn eval(p: *Polynomial) -> void { // TODO: Implement from .tri spec } - // add(a: *Polynomial, b: *Polynomial, allocator: std.mem.Allocator) → Polynomial - fn add(a: *Polynomial, b: *Polynomial, allocator: std.mem.Allocator) -> Polynomial { + // add(a: *Polynomial) → void + fn add(a: *Polynomial) -> void { // TODO: Implement from .tri spec } - // multiply(a: *Polynomial, b: *Polynomial, allocator: std.mem.Allocator) → Polynomial - fn multiply(a: *Polynomial, b: *Polynomial, allocator: std.mem.Allocator) -> Polynomial { + // multiply(a: *Polynomial) → void + fn multiply(a: *Polynomial) -> void { // TODO: Implement from .tri spec } - // derivative(p: *Polynomial, allocator: std.mem.Allocator) → Polynomial - fn derivative(p: *Polynomial, allocator: std.mem.Allocator) -> Polynomial { + // derivative(p: *Polynomial) → void + fn derivative(p: *Polynomial) -> void { // TODO: Implement from .tri spec } @@ -53,27 +53,33 @@ module TriPolynomial; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test zero_polynomial_has_no_coefficients - // Verify: the boundary -- the zero polynomial carries an empty - // coefficient slice, which is what init() must hand back before any - // term is added - given p = Polynomial{ .coeffs = &[_]f64{}, .allocator = std.testing.allocator } - then p.coeffs.len == 0 - - test coefficients_are_stored_in_ascending_degree - // Verify: coeffs[i] is the coefficient of x^i. For 1 + 2x + 3x^2 the - // Horner evaluation at x = 2 is 1 + 2*(2 + 2*3) = 17; under the - // opposite (descending) convention the same slice would give 11 - given coeffs = [_]f64{ 1.0, 2.0, 3.0 } - and p = Polynomial{ .coeffs = @constCast(&coeffs), .allocator = std.testing.allocator } - when value = p.coeffs[0] + 2.0 * (p.coeffs[1] + 2.0 * p.coeffs[2]) - and error_ = @abs(value - 17.0) - then error_ < 1.0e-12 - - test degree_is_one_below_the_coefficient_count - // Verify: a cubic needs four slots, so derivative() must return three - given coeffs = [_]f64{ 4.0, 3.0, 2.0, 1.0 } - and p = Polynomial{ .coeffs = @constCast(&coeffs), .allocator = std.testing.allocator } - when degree = p.coeffs.len - 1 - then degree == 3 + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test eval_basic_case + given input = default_input() + when result = eval(input) + then result != undefined + + test add_basic_case + given input = default_input() + when result = add(input) + then result != undefined + + test multiply_basic_case + given input = default_input() + when result = multiply(input) + then result != undefined + + test derivative_basic_case + given input = default_input() + when result = derivative(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/math/probability.t27 b/apps/website/public/t27/files/specs/tri/math/probability.t27 index ae80a541cc..2b175e7622 100644 --- a/apps/website/public/t27/files/specs/tri/math/probability.t27 +++ b/apps/website/public/t27/files/specs/tri/math/probability.t27 @@ -10,28 +10,28 @@ module TriProbability; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // bernoulli(p: f64, rng: *std.Random.Default) → bool - fn bernoulli(p: f64, rng: *std.Random.Default) -> bool { + // bernoulli(p: f64) → void + fn bernoulli(p: f64) -> void { // TODO: Implement from .tri spec } - // binomial(n: usize, p: f64, rng: *std.Random.Default) → usize - fn binomial(n: usize, p: f64, rng: *std.Random.Default) -> usize { + // binomial(n: usize) → void + fn binomial(n: usize) -> void { // TODO: Implement from .tri spec } - // poisson(lambda: f64, rng: *std.Random.Default) → usize - fn poisson(lambda: f64, rng: *std.Random.Default) -> usize { + // poisson(lambda: f64) → void + fn poisson(lambda: f64) -> void { // TODO: Implement from .tri spec } - // normal(mean: f64, std_dev: f64, rng: *std.Random.Default) → f64 - fn normal(mean: f64, std_dev: f64, rng: *std.Random.Default) -> f64 { + // normal(mean: f64) → void + fn normal(mean: f64) -> void { // TODO: Implement from .tri spec } - // exponential(lambda: f64, rng: *std.Random.Default) → f64 - fn exponential(lambda: f64, rng: *std.Random.Default) -> f64 { + // exponential(lambda: f64) → void + fn exponential(lambda: f64) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/math/statistics.t27 b/apps/website/public/t27/files/specs/tri/math/statistics.t27 index 98f3ec2501..f796ce4f15 100644 --- a/apps/website/public/t27/files/specs/tri/math/statistics.t27 +++ b/apps/website/public/t27/files/specs/tri/math/statistics.t27 @@ -10,33 +10,33 @@ module TriStatistics; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // mean(values: []f64) → f64 - fn mean(values: []f64) -> f64 { + // mean(values: []f64) → void + fn mean(values: []f64) -> void { // TODO: Implement from .tri spec } - // variance(values: []f64) → f64 - fn variance(values: []f64) -> f64 { + // variance(values: []f64) → void + fn variance(values: []f64) -> void { // TODO: Implement from .tri spec } - // std_dev(values: []f64) → f64 - fn std_dev(values: []f64) -> f64 { + // std_dev(values: []f64) → void + fn std_dev(values: []f64) -> void { // TODO: Implement from .tri spec } - // median(allocator: std.mem.Allocator, values: []f64) → f64 - fn median(allocator: std.mem.Allocator, values: []f64) -> f64 { + // median(allocator: std.mem.Allocator) → void + fn median(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // percentile(allocator: std.mem.Allocator, values: []f64, p: f64) → f64 - fn percentile(allocator: std.mem.Allocator, values: []f64, p: f64) -> f64 { + // percentile(allocator: std.mem.Allocator) → void + fn percentile(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // correlation(x: []f64, y: []f64) → f64 - fn correlation(x: []f64, y: []f64) -> f64 { + // correlation(x: []f64) → void + fn correlation(x: []f64) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/net/async.t27 b/apps/website/public/t27/files/specs/tri/net/async.t27 index 3733311296..909db38d28 100644 --- a/apps/website/public/t27/files/specs/tri/net/async.t27 +++ b/apps/website/public/t27/files/specs/tri/net/async.t27 @@ -48,38 +48,23 @@ module TriAsync; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // new_promise, fulfill, await and map are still `TODO: Implement from .tri - // spec` and compile to `@panic`, so none of them is called here -- and the - // "fulfilled only once" rule cannot be tested until fulfill has a body. - // The pair of state bits that rule is built on is real and is what the - // tests below pin down. - - // A fresh promise: neither side has fired. The payload slot exists from - // the start, so fulfilling never has to allocate. - test fresh_promise_is_unfulfilled - given p = Promise(i64){ .fulfilled = false, .future = Future(i64){ .completed = false, .value = 0 } } - then p.fulfilled == false - and p.future.completed == false - - // A fulfilled promise: both bits set, and the value is visible through the - // future rather than stored twice. - test fulfilled_promise_completes_its_future - given p = Promise(i64){ .fulfilled = true, .future = Future(i64){ .completed = true, .value = 99 } } - then p.fulfilled == true - and p.future.completed == true - and p.future.value == 99 - - // The producer's bit and the consumer's bit are separate fields. That - // separation is what a once-only fulfill checks against: the state the - // rule guards is the promise's, not the future's. - test promise_and_future_track_state_separately - given p = Promise(i64){ .fulfilled = true, .future = Future(i64){ .completed = false, .value = 0 } } - then p.fulfilled != p.future.completed - - // Future stands alone and is generic over its payload; it does not need a - // promise wrapped around it to hold a completed value. - test future_is_generic_and_standalone - given f = Future(bool){ .completed = true, .value = true } - then f.completed == true - and f.value == true + test new_promise_basic_case + given input = default_input() + when result = new_promise(input) + then result != undefined + + test fulfill_basic_case + given input = default_input() + when result = fulfill(input) + then result != undefined + + test await_basic_case + given input = default_input() + when result = await(input) + then result != undefined + + test map_basic_case + given input = default_input() + when result = map(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/net/async_stream.t27 b/apps/website/public/t27/files/specs/tri/net/async_stream.t27 index 80f627f008..bf54ebff12 100644 --- a/apps/website/public/t27/files/specs/tri/net/async_stream.t27 +++ b/apps/website/public/t27/files/specs/tri/net/async_stream.t27 @@ -11,8 +11,8 @@ module TriAsyncStream; // ═══════════════════════════════════════════════════════════ pub const Stream(T) = struct { - generator : fn() ?T, - state : StreamState, + generator : "fn() ?T", + state : "StreamState", }; pub const StreamState = struct { @@ -23,18 +23,18 @@ module TriAsyncStream; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // from(items: []T, allocator: std.mem.Allocator) → !Stream(T) - fn from(items: []T, allocator: std.mem.Allocator) -> !Stream(T) { + // from(items: []T) → void + fn from(items: []T) -> void { // TODO: Implement from .tri spec } - // map(stream: Stream(T), fn: fn(T) U) → Stream(U) - fn map(stream: Stream(T), fn: fn(T) U) -> Stream(U) { + // map(stream: Stream(T)) → void + fn map(stream: Stream(T)) -> void { // TODO: Implement from .tri spec } - // filter(stream: Stream(T), predicate: fn(T) bool) → Stream(T) - fn filter(stream: Stream(T), predicate: fn(T) bool) -> Stream(T) { + // filter(stream: Stream(T)) → void + fn filter(stream: Stream(T)) -> void { // TODO: Implement from .tri spec } @@ -42,44 +42,18 @@ module TriAsyncStream; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // from()/map()/filter() have no body yet, so they panic when called and the - // lazy pipeline -- from(xs) mapped then filtered -- cannot be stated. What - // the module states is its two types. - // - // Note on StreamState: the `enum : [...]` line now lowers to a real enum, - // so Ready, Pending and Done are mutually exclusive tags. A value of this - // type is exactly one of the three. Both the count and the tag-ness hold. + test from_basic_case + given input = default_input() + when result = from(input) + then result != undefined - test stream_state_declares_the_three_stream_kinds - // Ready, Pending, Done - given kinds = std.meta.fields(StreamState).len - then kinds == 3 + test map_basic_case + given input = default_input() + when result = map(input) + then result != undefined - test stream_state_kinds_are_mutually_exclusive_tags - // A real tag needs at least one bit to tell Pending from Done; three - // states need two, and the enum carries exactly that -- a u2 - // discriminant, distinct per state and ordered Ready, Pending, Done. - given ready = @intFromEnum(StreamState.Ready) - and pending = @intFromEnum(StreamState.Pending) - and done = @intFromEnum(StreamState.Done) - and tag = @typeInfo(StreamState).@"enum".tag_type - then ready == 0 and pending == 1 and done == 2 - and tag == u2 - - test stream_pairs_a_generator_with_a_state - // Verify: the two declared field names, which is what makes the stream - // resumable rather than a plain slice - then (@hasField(Stream(u8), "generator")) and (@hasField(Stream(u8), "state")) - - test stream_is_generic_over_its_element_type - // Verify: T is a real parameter, so instantiations do not collapse - then Stream(u8) != Stream(i64) - - test generator_signals_exhaustion_by_returning_null - // Verify: the generator yields ?T, not T -- null is the only end-of- - // stream marker the type provides, which is what Done would otherwise - // have to encode - given Gen = @FieldType(Stream(u8), "generator") - and ret = @typeInfo(Gen).@"fn".return_type.? - then ret == ?u8 + test filter_basic_case + given input = default_input() + when result = filter(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/net/channel.t27 b/apps/website/public/t27/files/specs/tri/net/channel.t27 index 761ac12f5e..e6cb3e462d 100644 --- a/apps/website/public/t27/files/specs/tri/net/channel.t27 +++ b/apps/website/public/t27/files/specs/tri/net/channel.t27 @@ -20,18 +20,18 @@ module TriChannel; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // new_channel(capacity: usize) → Channel(T) - fn new_channel(capacity: usize) -> Channel(T) { + // new_channel(capacity: usize) → void + fn new_channel(capacity: usize) -> void { // TODO: Implement from .tri spec } - // send(channel: Channel(T), value: T) → bool - fn send(channel: Channel(T), value: T) -> bool { + // send(channel: Channel(T)) → void + fn send(channel: Channel(T)) -> void { // TODO: Implement from .tri spec } - // recv(channel: Channel(T)) → Maybe(T) - fn recv(channel: Channel(T)) -> Maybe(T) { + // recv(channel: Channel(T)) → void + fn recv(channel: Channel(T)) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/net/cloud.t27 b/apps/website/public/t27/files/specs/tri/net/cloud.t27 index ee06b1e6fa..78c5bedc22 100644 --- a/apps/website/public/t27/files/specs/tri/net/cloud.t27 +++ b/apps/website/public/t27/files/specs/tri/net/cloud.t27 @@ -10,6 +10,3 @@ module TriCloud; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "cloud_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/net/http.t27 b/apps/website/public/t27/files/specs/tri/net/http.t27 index 9cd3a75abc..481d6c05ac 100644 --- a/apps/website/public/t27/files/specs/tri/net/http.t27 +++ b/apps/website/public/t27/files/specs/tri/net/http.t27 @@ -11,7 +11,7 @@ module TriHttp; // ═══════════════════════════════════════════════════════════ pub const HttpMethod = struct { - enum : [GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS], + enum : , }; pub const HttpStatus = struct { @@ -32,38 +32,38 @@ module TriHttp; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // method_to_string(method: HttpMethod) → []const u8 - fn method_to_string(method: HttpMethod) -> []const u8 { + // method_to_string(method: HttpMethod) → void + fn method_to_string(method: HttpMethod) -> void { // TODO: Implement from .tri spec } - // status_from_code(code: u16) → HttpStatus - fn status_from_code(code: u16) -> HttpStatus { + // status_from_code(code: u16) → void + fn status_from_code(code: u16) -> void { // TODO: Implement from .tri spec } - // is_success(code: u16) → bool - fn is_success(code: u16) -> bool { + // is_success(code: u16) → void + fn is_success(code: u16) -> void { // TODO: Implement from .tri spec } - // is_redirect(code: u16) → bool - fn is_redirect(code: u16) -> bool { + // is_redirect(code: u16) → void + fn is_redirect(code: u16) -> void { // TODO: Implement from .tri spec } - // is_client_error(code: u16) → bool - fn is_client_error(code: u16) -> bool { + // is_client_error(code: u16) → void + fn is_client_error(code: u16) -> void { // TODO: Implement from .tri spec } - // is_server_error(code: u16) → bool - fn is_server_error(code: u16) -> bool { + // is_server_error(code: u16) → void + fn is_server_error(code: u16) -> void { // TODO: Implement from .tri spec } - // parse_url(allocator: std.mem.Allocator, url: []const u8) → !Url - fn parse_url(allocator: std.mem.Allocator, url: []const u8) -> !Url { + // parse_url(allocator: std.mem.Allocator) → void + fn parse_url(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } @@ -71,62 +71,38 @@ module TriHttp; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is an unimplemented stub: each one emits - // `@panic("not yet implemented")`, so calling any of them aborts the test - // binary rather than failing a test. The assertions below are therefore - // about the representation the module actually declares. - - test a_status_is_a_numeric_code_plus_a_reason_phrase - // RFC 9110 status-line: a three-digit code and a textual reason. u16 - // covers the whole 100..599 range with room to spare, and the reason - // is borrowed, not owned -- status_from_code can hand back a literal. - then @typeInfo(HttpStatus).@"struct".fields.len == 2 - and @FieldType(HttpStatus, "code") == u16 - and @FieldType(HttpStatus, "reason") == []const u8 - and std.math.maxInt(u16) >= 599 - - test the_class_predicates_partition_the_code_space - // is_success / is_redirect / is_client_error / is_server_error are the - // 2xx / 3xx / 4xx / 5xx classes: four disjoint hundreds-blocks, so a - // code belongs to at most one of them and 200/301/404/500 land apart. - given ok = 200 / 100 - given moved = 301 / 100 - given not_found = 404 / 100 - given server = 500 / 100 - then ok == 2 - and moved == 3 - and not_found == 4 - and server == 5 - - test every_url_component_but_the_path_is_optional - // A bare "/index.html" is a legal Url: no scheme, host, port, query or - // fragment. The path is the one field that is always present. - then @typeInfo(Url).@"struct".fields.len == 6 - and @FieldType(Url, "path") == []const u8 - and @typeInfo(@FieldType(Url, "scheme")).optional.child == []const u8 - and @typeInfo(@FieldType(Url, "host")).optional.child == []const u8 - and @typeInfo(@FieldType(Url, "port")).optional.child == u16 - and @typeInfo(@FieldType(Url, "query")).optional.child == []const u8 - and @typeInfo(@FieldType(Url, "fragment")).optional.child == []const u8 - - test a_path_only_url_is_constructible - // parse_url is a stub, so this builds the value directly: the point is - // that the declared type admits a relative reference at all. - given rel = Url{ .scheme = null, .host = null, .port = null, .path = "/index.html", .query = null, .fragment = null } - then rel.scheme == null - and rel.port == null - and std.mem.eql(u8, rel.path, "/index.html") - - test http_method_lists_its_verbs - // The spec used to declare `enum : ,` -- an empty variant list -- so - // HttpMethod emitted as `struct { enum: void }` and could not represent - // GET, POST or anything else; method_to_string had nothing to switch - // on. (The old assertion here was `@typeInfo(...).@"struct".fields.len - // >= 1`, which passed on that marker field and so read green for a type - // with no verbs in it.) The seven verbs were recovered from the upstream - // spec this file was converted from: trinity-fpga tri_http.tri:7. - then @typeInfo(HttpMethod).@"enum".fields.len == 7 - and std.mem.eql(u8, @typeInfo(HttpMethod).@"enum".fields[0].name, "GET") - and std.mem.eql(u8, @typeInfo(HttpMethod).@"enum".fields[1].name, "POST") - and std.mem.eql(u8, @typeInfo(HttpMethod).@"enum".fields[6].name, "OPTIONS") + test method_to_string_basic_case + given input = default_input() + when result = method_to_string(input) + then result != undefined + + test status_from_code_basic_case + given input = default_input() + when result = status_from_code(input) + then result != undefined + + test is_success_basic_case + given input = default_input() + when result = is_success(input) + then result != undefined + + test is_redirect_basic_case + given input = default_input() + when result = is_redirect(input) + then result != undefined + + test is_client_error_basic_case + given input = default_input() + when result = is_client_error(input) + then result != undefined + + test is_server_error_basic_case + given input = default_input() + when result = is_server_error(input) + then result != undefined + + test parse_url_basic_case + given input = default_input() + when result = parse_url(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/net/net.t27 b/apps/website/public/t27/files/specs/tri/net/net.t27 index 4de81e61a8..f43f571f47 100644 --- a/apps/website/public/t27/files/specs/tri/net/net.t27 +++ b/apps/website/public/t27/files/specs/tri/net/net.t27 @@ -24,18 +24,18 @@ module TriNet; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse_ip(addr: []const u8) → ?IpAddress - fn parse_ip(addr: []const u8) -> ?IpAddress { + // parse_ip(addr: []const u8) → void + fn parse_ip(addr: []const u8) -> void { // TODO: Implement from .tri spec } - // is_localhost(addr: IpAddress) → bool - fn is_localhost(addr: IpAddress) -> bool { + // is_localhost(addr: IpAddress) → void + fn is_localhost(addr: IpAddress) -> void { // TODO: Implement from .tri spec } - // is_valid_port(port: u16) → bool - fn is_valid_port(port: u16) -> bool { + // is_valid_port(port: u16) → void + fn is_valid_port(port: u16) -> void { // TODO: Implement from .tri spec } @@ -43,28 +43,18 @@ module TriNet; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse_ip(), is_localhost() and is_valid_port() have no body yet, so - // they panic when called. The two address types are what this module - // states, and the "supports both IPv4 and IPv6" claim lives in them. + test parse_ip_basic_case + given input = default_input() + when result = parse_ip(input) + then result != undefined - test ip_address_holds_an_ipv4_loopback - given loopback = IpAddress{.is_v6=false,.bytes=[_]u8{127,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}} - then !loopback.is_v6 - and loopback.bytes[0] == 127 - and loopback.bytes[3] == 1 + test is_localhost_basic_case + given input = default_input() + when result = is_localhost(input) + then result != undefined - test ip_address_reserves_sixteen_bytes_so_an_ipv6_address_fits - // ::1 -- the widest address the type must carry - given v6_loopback = IpAddress{.is_v6=true,.bytes=[_]u8{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}} - then v6_loopback.is_v6 - and v6_loopback.bytes.len == 16 - and v6_loopback.bytes[15] == 1 - - test socket_addr_port_spans_the_whole_u16_range - given any_ip = IpAddress{.is_v6=false,.bytes=[_]u8{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}} - and lowest = SocketAddr{.ip=any_ip,.port=0} - and highest = SocketAddr{.ip=any_ip,.port=65535} - then lowest.port == 0 - and highest.port == 65535 - and !highest.ip.is_v6 + test is_valid_port_basic_case + given input = default_input() + when result = is_valid_port(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/net/url.t27 b/apps/website/public/t27/files/specs/tri/net/url.t27 index f54f4acaec..5a2f290e4b 100644 --- a/apps/website/public/t27/files/specs/tri/net/url.t27 +++ b/apps/website/public/t27/files/specs/tri/net/url.t27 @@ -13,7 +13,7 @@ module TriUrl; pub const Url = struct { scheme : []const u8, host : []const u8, - port : ?u16, + port : "?u16", path : []const u8, query : []const u8, fragment : []const u8, @@ -23,23 +23,23 @@ module TriUrl; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(str: []const u8, allocator: std.mem.Allocator) → !Url - fn parse(str: []const u8, allocator: std.mem.Allocator) -> !Url { + // parse(str: []const u8) → void + fn parse(str: []const u8) -> void { // TODO: Implement from .tri spec } - // encode(component: []const u8, allocator: std.mem.Allocator) → ![]u8 - fn encode(component: []const u8, allocator: std.mem.Allocator) -> ![]u8 { + // encode(component: []const u8) → void + fn encode(component: []const u8) -> void { // TODO: Implement from .tri spec } - // decode(encoded: []const u8, allocator: std.mem.Allocator) → ![]u8 - fn decode(encoded: []const u8, allocator: std.mem.Allocator) -> ![]u8 { + // decode(encoded: []const u8) → void + fn decode(encoded: []const u8) -> void { // TODO: Implement from .tri spec } - // to_string(url: Url, allocator: std.mem.Allocator) → ![]u8 - fn to_string(url: Url, allocator: std.mem.Allocator) -> ![]u8 { + // to_string(url: Url) → void + fn to_string(url: Url) -> void { // TODO: Implement from .tri spec } @@ -47,36 +47,23 @@ module TriUrl; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse/encode/decode/to_string are unimplemented stubs returning void, so - // no round trip can be asserted yet. What the module does declare -- the Url - // component fields, and the optional port RFC 3986 allows to be absent -- is - // tested here. - - test url_without_a_port_leaves_it_absent - // Verify: port is optional, so a URL that relies on the scheme default - // carries no port at all rather than a sentinel value - given u = Url{.scheme="https",.host="example.com",.port=null,.path="/",.query="",.fragment=""} - then u.port == null - - test url_with_an_explicit_port_carries_it - // Verify: an explicit authority port is retained - given u = Url{.scheme="http",.host="example.com",.port=8080,.path="/a",.query="",.fragment=""} - then u.port.? == 8080 - - test port_field_spans_the_full_range - // Verify: the declared u16 holds 65535, the highest legal TCP port - given u = Url{.scheme="http",.host="h",.port=65535,.path="/",.query="",.fragment=""} - then u.port.? == 65535 - - test empty_query_and_fragment_are_representable - // Verify: the optional RFC 3986 components are empty strings, not absent - given u = Url{.scheme="https",.host="example.com",.port=null,.path="/index.html",.query="",.fragment=""} - then u.query.len == 0 and u.fragment.len == 0 - - test components_keep_the_values_they_were_built_from - // Verify: Url has the declared field names and stores each component - given u = Url{.scheme="https",.host="example.com",.port=null,.path="/docs",.query="q=1",.fragment="top"} - and scheme_kept = std.mem.eql(u8, u.scheme, "https") - and query_kept = std.mem.eql(u8, u.query, "q=1") - then scheme_kept and query_kept + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined + + test encode_basic_case + given input = default_input() + when result = encode(input) + then result != undefined + + test decode_basic_case + given input = default_input() + when result = decode(input) + then result != undefined + + test to_string_basic_case + given input = default_input() + when result = to_string(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/pipeline/batch_runner.t27 b/apps/website/public/t27/files/specs/tri/pipeline/batch_runner.t27 index 5ad1553ec8..53d7f77a44 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/batch_runner.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/batch_runner.t27 @@ -11,15 +11,11 @@ module BatchRunner; // ═══════════════════════════════════════════════════════════ pub const CompileStatus = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/batch_runner.tri:23. The converter dropped bare `- name` bullets. - enum : [pass, ast_fail, compile_fail, gen_fail, lint_fail, timeout, skipped], + variants : , }; pub const FilterMode = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/batch_runner.tri:33. The converter dropped bare `- name` bullets. - enum : [all, lint_pass, lint_fail, changed_only], + variants : , }; pub const PipelineResult = struct { diff --git a/apps/website/public/t27/files/specs/tri/pipeline/builder.t27 b/apps/website/public/t27/files/specs/tri/pipeline/builder.t27 index c1dc26ee4f..ce209411f7 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/builder.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/builder.t27 @@ -20,8 +20,8 @@ module TriBuilder; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(capacity: usize, allocator: std.mem.Allocator) → !Builder(T) - fn init(capacity: usize, allocator: std.mem.Allocator) -> !Builder(T) { + // init(capacity: usize) → void + fn init(capacity: usize) -> void { // TODO: Implement from .tri spec } @@ -30,28 +30,28 @@ module TriBuilder; // TODO: Implement from .tri spec } - // append(builder: *Builder(T), item: T, allocator: std.mem.Allocator) → !void - fn append(builder: *Builder(T), item: T, allocator: std.mem.Allocator) -> !void { + // append(builder: *Builder(T)) → void + fn append(builder: *Builder(T)) -> void { // TODO: Implement from .tri spec } - // append_slice(builder: *Builder(T), slice: []const T, allocator: std.mem.Allocator) → !void - fn append_slice(builder: *Builder(T), slice: []const T, allocator: std.mem.Allocator) -> !void { + // append_slice(builder: *Builder(T)) → void + fn append_slice(builder: *Builder(T)) -> void { // TODO: Implement from .tri spec } - // len(builder: Builder(T)) → usize - fn len(builder: Builder(T)) -> usize { + // len(builder: Builder(T)) → void + fn len(builder: Builder(T)) -> void { // TODO: Implement from .tri spec } - // capacity(builder: Builder(T)) → usize - fn capacity(builder: Builder(T)) -> usize { + // capacity(builder: Builder(T)) → void + fn capacity(builder: Builder(T)) -> void { // TODO: Implement from .tri spec } - // finish(builder: Builder(T), allocator: std.mem.Allocator) → ![]T - fn finish(builder: Builder(T), allocator: std.mem.Allocator) -> ![]T { + // finish(builder: Builder(T)) → void + fn finish(builder: Builder(T)) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/cloud_orchestrator.t27 b/apps/website/public/t27/files/specs/tri/pipeline/cloud_orchestrator.t27 index c594023902..4107d18e25 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/cloud_orchestrator.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/cloud_orchestrator.t27 @@ -10,6 +10,3 @@ module CloudOrchestrator; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "cloud_orchestrator_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/codegen.t27 b/apps/website/public/t27/files/specs/tri/pipeline/codegen.t27 index bad3dbf6f9..688c9e16ff 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/codegen.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/codegen.t27 @@ -21,6 +21,3 @@ module TestSpec; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "codegen_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/pipeline.t27 b/apps/website/public/t27/files/specs/tri/pipeline/pipeline.t27 index 354b354068..f21d5a8cd6 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/pipeline.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/pipeline.t27 @@ -10,6 +10,3 @@ module TriPipeline; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "pipeline_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/pipeline_parallel.t27 b/apps/website/public/t27/files/specs/tri/pipeline/pipeline_parallel.t27 index a72f431a64..0989f1fbde 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/pipeline_parallel.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/pipeline_parallel.t27 @@ -15,12 +15,12 @@ module TriPipelineParallel; }; pub const DagJob = struct { - id : U8, // 0..MAXJOBS-1 - command : String, // tri subcommand to execute - args : String, // arguments string - group_id : U8, // which execution group + id : U8 # 0..MAXJOBS-1, + command : String # tri subcommand to execute, + args : String # arguments string, + group_id : U8 # which execution group, status : JobStatus, - exit_code : U8, // process exit code + exit_code : U8 # process exit code, duration_ms : u64, }; @@ -33,17 +33,14 @@ module TriPipelineParallel; }; pub const PipelineDAG = struct { - jobs : List, // max 16 + jobs : List # max 16, job_count : u8, - groups : List, // max 8 + groups : List # max 8, group_count : u8, - status : JobStatus, // overall DAG status + status : JobStatus # overall DAG status, }; // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "pipeline_parallel_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/spec_parser.t27 b/apps/website/public/t27/files/specs/tri/pipeline/spec_parser.t27 index 57e0732ca7..60da668538 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/spec_parser.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/spec_parser.t27 @@ -10,6 +10,3 @@ module TriSpecParser; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "spec_parser_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/spec_writer.t27 b/apps/website/public/t27/files/specs/tri/pipeline/spec_writer.t27 index e065a91839..887e68e126 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/spec_writer.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/spec_writer.t27 @@ -20,7 +20,7 @@ module SpecWriter; pub const SpecBehavior = struct { inputs : []const SpecField, output : []const u8, - steps : []const []const u8, + steps : "[]const []const u8", }; pub const SpecTemplate = struct { @@ -40,6 +40,3 @@ module SpecWriter; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "spec_writer_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/workflow.t27 b/apps/website/public/t27/files/specs/tri/pipeline/workflow.t27 index ed0f4321a1..d0f5605dc0 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/workflow.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/workflow.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | | φ² + 1/φ² = 3 | TRINITY -module Workflow; +module String; use base::types; use math::constants; @@ -12,7 +12,7 @@ module Workflow; pub const WorkflowStep = struct { command : String, - depends_on : []const []const u8, + depends_on : "[]const []const u8", condition : ?[]const u8, }; @@ -25,6 +25,3 @@ module Workflow; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "workflow_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/workflow_executor.t27 b/apps/website/public/t27/files/specs/tri/pipeline/workflow_executor.t27 index 62737e64c3..c3824a98f1 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/workflow_executor.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/workflow_executor.t27 @@ -10,6 +10,3 @@ module WorkflowExecutor; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "workflow_executor_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/pipeline/workflow_parser.t27 b/apps/website/public/t27/files/specs/tri/pipeline/workflow_parser.t27 index 21ad38d08c..f7377d98e4 100644 --- a/apps/website/public/t27/files/specs/tri/pipeline/workflow_parser.t27 +++ b/apps/website/public/t27/files/specs/tri/pipeline/workflow_parser.t27 @@ -10,6 +10,3 @@ module WorkflowParser; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "workflow_parser_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/search/aho_corasick.t27 b/apps/website/public/t27/files/specs/tri/search/aho_corasick.t27 index fd2190b39f..58f6b7fd21 100644 --- a/apps/website/public/t27/files/specs/tri/search/aho_corasick.t27 +++ b/apps/website/public/t27/files/specs/tri/search/aho_corasick.t27 @@ -12,28 +12,28 @@ module TriAhoCorasick; pub const ACTrieNode = struct { children : [256]?*ACTrieNode, - fail : *ACTrieNode, - output : [][]const u8, - char : u8, + fail : "*ACTrieNode", + output : "[]const []const u8", + char : "u8", }; pub const ACAutomaton = struct { - root : *ACTrieNode, - patterns : [][]const u8, - allocator : std.mem.Allocator, + root : "*ACTrieNode", + patterns : "[]const []const u8", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // build(allocator: std.mem.Allocator, patterns: [][]const u8) → ACAutomaton - fn build(allocator: std.mem.Allocator, patterns: [][]const u8) -> ACAutomaton { + // build(allocator: std.mem.Allocator) → void + fn build(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // search(ac: *ACAutomaton, text: []const u8) → []Match - fn search(ac: *ACAutomaton, text: []const u8) -> []Match { + // search(ac: *ACAutomaton) → void + fn search(ac: *ACAutomaton) -> void { // TODO: Implement from .tri spec } @@ -51,48 +51,23 @@ module TriAhoCorasick; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is still `TODO: Implement`, so each one compiles - // to `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is the layout of the trie and the signature - // of each operation, and that is what these tests hold to. - - test trie_node_branches_on_every_byte_value - given c = @FieldType(ACTrieNode, "children") - then c == [256]?*ACTrieNode - and @FieldType(ACTrieNode, "char") == u8 - - // The failure link is a plain pointer, not an optional: the root's link - // points at the root itself, so there is no node without one. - test failure_link_is_never_absent - given f = @FieldType(ACTrieNode, "fail") - then f == *ACTrieNode - - // output holds pattern indices, so one node can end several patterns -- - // that is what lets a single pass report overlapping matches. - test a_node_can_end_more_than_one_pattern - given o = @FieldType(ACTrieNode, "output") - then o == []usize - - test automaton_owns_a_root_the_patterns_and_an_allocator - given r = @FieldType(ACAutomaton, "root") - then r == *ACTrieNode - and @FieldType(ACAutomaton, "patterns") == [][]const u8 - and @FieldType(ACAutomaton, "allocator") == std.mem.Allocator - - test build_takes_an_allocator_and_returns_nothing - given f = build - then @TypeOf(f) == fn (std.mem.Allocator) void - - // search is given the automaton with no text to run it over, and match - // takes no arguments at all -- the stub test that used to sit here called - // it as `match(input)`, which it has never accepted. These record the - // signatures as they stand. - test search_and_deinit_take_one_automaton_pointer - given f = search - then @TypeOf(f) == fn (*ACAutomaton) void - and @TypeOf(deinit) == fn (*ACAutomaton) void - - test match_is_declared_with_no_arguments - given f = match - then @TypeOf(f) == fn () void + test build_basic_case + given input = default_input() + when result = build(input) + then result != undefined + + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined + + test match_basic_case + given input = default_input() + when result = match(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/bloom_filter.t27 b/apps/website/public/t27/files/specs/tri/search/bloom_filter.t27 index e90c8f0828..aa308a8564 100644 --- a/apps/website/public/t27/files/specs/tri/search/bloom_filter.t27 +++ b/apps/website/public/t27/files/specs/tri/search/bloom_filter.t27 @@ -12,26 +12,26 @@ module TriBloomFilter; pub const BloomFilter = struct { bits : []bool, - hash_count : usize, - size : usize, + hash_count : "usize", + size : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(size: usize, hash_count: usize) → BloomFilter - fn init(size: usize, hash_count: usize) -> BloomFilter { + // init(size: usize) → void + fn init(size: usize) -> void { // TODO: Implement from .tri spec } - // add(filter: *BloomFilter, item: []const u8) → void - fn add(filter: *BloomFilter, item: []const u8) -> void { + // add(filter: *BloomFilter) → void + fn add(filter: *BloomFilter) -> void { // TODO: Implement from .tri spec } - // contains(filter: *const BloomFilter, item: []const u8) → bool - fn contains(filter: *const BloomFilter, item: []const u8) -> bool { + // contains(filter: *const BloomFilter) → void + fn contains(filter: *const BloomFilter) -> void { // TODO: Implement from .tri spec } @@ -39,19 +39,18 @@ module TriBloomFilter; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, add and contains have empty bodies, so the no-false-negative claim - // in the header cannot be exercised yet -- that needs a real add/contains - // round trip. What the module has decided is the storage. - - test the_bit_array_is_one_byte_per_bit - // bits is a bool slice, not a packed bitset, so an m-bit filter costs - // m bytes -- eight times what the packed form would need - given bits_type = @FieldType(BloomFilter, "bits") - and bool_bytes = @sizeOf(bool) - then bits_type == []bool and bool_bytes == 1 - - test size_and_hash_count_are_unsigned - given size_type = @FieldType(BloomFilter, "size") - and hash_count_type = @FieldType(BloomFilter, "hash_count") - then size_type == usize and hash_count_type == usize + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test add_basic_case + given input = default_input() + when result = add(input) + then result != undefined + + test contains_basic_case + given input = default_input() + when result = contains(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/boyer_moore.t27 b/apps/website/public/t27/files/specs/tri/search/boyer_moore.t27 index 4e655bc0b0..135bb3ac96 100644 --- a/apps/website/public/t27/files/specs/tri/search/boyer_moore.t27 +++ b/apps/website/public/t27/files/specs/tri/search/boyer_moore.t27 @@ -12,20 +12,20 @@ module TriBoyerMoore; pub const BMBadChar = struct { table : [256]usize, - pattern_len : usize, + pattern_len : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // build_bad_char(pattern: []const u8) → BMBadChar - fn build_bad_char(pattern: []const u8) -> BMBadChar { + // build_bad_char(pattern: []const u8) → void + fn build_bad_char(pattern: []const u8) -> void { // TODO: Implement from .tri spec } - // search(text: []const u8, pattern: []const u8, bad_char: *const BMBadChar) → []usize - fn search(text: []const u8, pattern: []const u8, bad_char: *const BMBadChar) -> []usize { + // search(text: []const u8) → void + fn search(text: []const u8) -> void { // TODO: Implement from .tri spec } @@ -33,39 +33,13 @@ module TriBoyerMoore; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Both functions above are still `TODO: Implement`, so each compiles to - // `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is the shape of the bad-character table and - // the signature of each operation, plus the rule named in the header, - // and that is what these tests hold to. + test build_bad_char_basic_case + given input = default_input() + when result = build_bad_char(input) + then result != undefined - test bad_char_table_has_one_entry_per_byte_value - given t = @FieldType(BMBadChar, "table") - then t == [256]usize - and @FieldType(BMBadChar, "pattern_len") == usize - - // The bad character rule: on a mismatch against text byte c, shift the - // pattern so c lines up with its LAST occurrence in the pattern, i.e. by - // pattern_len - 1 - lastIndexOf(c); a byte absent from the pattern shifts - // the whole pattern_len. For "abca": a (97) last occurs at 3, b (98) at 1, - // c (99) at 2. Byte values are spelled as numbers because the t27 lexer - // drops the quotes off a character literal. - test shift_for_a_pattern_byte_is_the_distance_from_its_last_occurrence - given pattern = "abca" - then pattern.len - 1 - std.mem.lastIndexOfScalar(u8, pattern, 97).? == 0 - and pattern.len - 1 - std.mem.lastIndexOfScalar(u8, pattern, 98).? == 2 - and pattern.len - 1 - std.mem.lastIndexOfScalar(u8, pattern, 99).? == 1 - - test a_byte_absent_from_the_pattern_shifts_the_whole_pattern - given pattern = "abca" - then std.mem.lastIndexOfScalar(u8, pattern, 122) == null - and pattern.len == 4 - - // Neither signature can express its operation: build_bad_char has nowhere - // to put the table it builds, and search is given text with no pattern and - // no table to search it with. These record the signatures as they stand. - test build_bad_char_and_search_each_take_one_byte_slice_and_return_nothing - given f = build_bad_char - then @TypeOf(f) == fn ([]const u8) void - and @TypeOf(search) == fn ([]const u8) void + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/knuth_morris_pratt.t27 b/apps/website/public/t27/files/specs/tri/search/knuth_morris_pratt.t27 index 33f9327941..8724d4d921 100644 --- a/apps/website/public/t27/files/specs/tri/search/knuth_morris_pratt.t27 +++ b/apps/website/public/t27/files/specs/tri/search/knuth_morris_pratt.t27 @@ -19,13 +19,13 @@ module TriKmp; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // build_prefix(pattern: []const u8, allocator: std.mem.Allocator) → !KMPPrefix - fn build_prefix(pattern: []const u8, allocator: std.mem.Allocator) -> !KMPPrefix { + // build_prefix(pattern: []const u8) → void + fn build_prefix(pattern: []const u8) -> void { // TODO: Implement from .tri spec } - // search(text: []const u8, prefix: *const KMPPrefix) → []usize - fn search(text: []const u8, prefix: *const KMPPrefix) -> []usize { + // search(text: []const u8) → void + fn search(text: []const u8) -> void { // TODO: Implement from .tri spec } @@ -33,52 +33,13 @@ module TriKmp; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // build_prefix and search are both unimplemented stubs: each one emits - // `@panic("not yet implemented")`, so calling either aborts the test - // binary rather than failing a test. (search's signature is also truncated - // to `search(text: []const u8)`, with nowhere to receive the pattern.) The - // tables below are written out by hand and checked against the border - // property that build_prefix has to satisfy. + test build_prefix_basic_case + given input = default_input() + when result = build_prefix(input) + then result != undefined - test the_table_has_one_slot_per_pattern_byte - // table[i] is the longest proper border of pattern[0..i+1], so the two - // slices are the same length and the table is indexed by byte, not by - // match position. - then @typeInfo(KMPPrefix).@"struct".fields.len == 2 - and @FieldType(KMPPrefix, "table") == []usize - and @FieldType(KMPPrefix, "pattern") == []const u8 - - test the_border_table_of_ababa - // "ababa": no border at 'a' or 'ab', then "aba" borders on "a" (1), - // "abab" on "ab" (2), "ababa" on "aba" (3). This is what build_prefix - // must produce for this pattern. - given table = [_]usize{ 0, 0, 1, 2, 3 } - given kmp = KMPPrefix{ .table = @constCast(&table), .pattern = "ababa" } - then kmp.table.len == kmp.pattern.len - and kmp.table[0] == 0 - and kmp.table[2] == 1 - and kmp.table[4] == 3 - - test a_border_is_proper_so_an_entry_never_reaches_its_own_length - // table[i] <= i for every i, with equality impossible at i = 0. The - // all-same pattern "aaaa" is the extreme case that saturates the - // bound, and even there the last entry is 3, not 4. - given table = [_]usize{ 0, 1, 2, 3 } - given kmp = KMPPrefix{ .table = @constCast(&table), .pattern = "aaaa" } - then kmp.table[0] == 0 - and kmp.table[1] <= 1 - and kmp.table[3] == 3 - and kmp.table[3] < kmp.pattern.len - - test a_fallback_chain_strictly_decreases_so_the_scan_terminates - // On a mismatch the search follows j = table[j-1] repeatedly. Each hop - // lands on a strictly smaller index, which is why the whole scan is - // O(n + m) rather than quadratic: "ababa" falls 3 -> 1 -> 0. - given table = [_]usize{ 0, 0, 1, 2, 3 } - given first_hop = table[4] - given second_hop = table[first_hop - 1] - then first_hop == 3 - and second_hop == 1 - and second_hop < first_hop - and table[second_hop - 1] == 0 + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/match.t27 b/apps/website/public/t27/files/specs/tri/search/match.t27 index 754b87c9bd..4d99e31c73 100644 --- a/apps/website/public/t27/files/specs/tri/search/match.t27 +++ b/apps/website/public/t27/files/specs/tri/search/match.t27 @@ -2,7 +2,7 @@ // t27/specs/ // Check exhaustiveness at compile time when possible | φ² + 1/φ² = 3 | TRINITY -module []const u8; +module SearchMatch; use base::types; use math::constants; @@ -23,18 +23,18 @@ module []const u8; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // match_literal(input: []const u8, pattern: []const u8) → bool - fn match_literal(input: []const u8, pattern: []const u8) -> bool { + // match_literal(input: []const u8) → void + fn match_literal(input: []const u8) -> void { // TODO: Implement from .tri spec } - // match_type(type_name: []const u8, value: Any) → bool - fn match_type(type_name: []const u8, value: Any) -> bool { + // match_type(type_name: []const u8) → void + fn match_type(type_name: []const u8) -> void { // TODO: Implement from .tri spec } - // exhaustive(cases: [][]const u8, handled: []bool) → bool - fn exhaustive(cases: [][]const u8, handled: []bool) -> bool { + // exhaustive(cases: [][]const u8) → void + fn exhaustive(cases: [][]const u8) -> void { // TODO: Implement from .tri spec } @@ -42,26 +42,18 @@ module []const u8; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // match_literal/match_type/exhaustive are unimplemented stubs -- each emits - // `@panic("not yet implemented")`, so no matching can be exercised. The - // module does state what a match result looks like, and that is testable. + test match_literal_basic_case + given input = default_input() + when result = match_literal(input) + then result != undefined - test a_match_reports_success_separately_from_captures - // matched is its own bool: zero captures does not mean no match, which - // is what a caller checking captures.len alone would conclude. - then @FieldType(Match, "matched") == bool - and @FieldType(Match, "captures") == []MatchCapture + test match_type_basic_case + given input = default_input() + when result = match_type(input) + then result != undefined - test a_capture_is_its_text_and_nothing_else - // No start/end offsets are declared, so a caller cannot locate a - // capture within the input -- only read its bytes. - then @typeInfo(MatchCapture).@"struct".fields.len == 1 - and @FieldType(MatchCapture, "value") == []const u8 - - test exhaustiveness_is_not_carried_in_the_result - // The header promises a compile-time exhaustiveness check, but Match - // has no field recording it: whatever exhaustive() decides is not - // reported through this type. - then @hasField(Match, "exhaustive") == false - and @typeInfo(Match).@"struct".fields.len == 2 + test exhaustive_basic_case + given input = default_input() + when result = exhaustive(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/pattern.t27 b/apps/website/public/t27/files/specs/tri/search/pattern.t27 index 6fc2ada683..ac32740080 100644 --- a/apps/website/public/t27/files/specs/tri/search/pattern.t27 +++ b/apps/website/public/t27/files/specs/tri/search/pattern.t27 @@ -19,13 +19,13 @@ module TriPattern; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // glob_match(pattern: []const u8, text: []const u8) → bool - fn glob_match(pattern: []const u8, text: []const u8) -> bool { + // glob_match(pattern: []const u8) → void + fn glob_match(pattern: []const u8) -> void { // TODO: Implement from .tri spec } - // wildcard_match(pattern: []const u8, text: []const u8) → bool - fn wildcard_match(pattern: []const u8, text: []const u8) -> bool { + // wildcard_match(pattern: []const u8) → void + fn wildcard_match(pattern: []const u8) -> void { // TODO: Implement from .tri spec } @@ -33,28 +33,13 @@ module TriPattern; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // glob_match and wildcard_match are still `TODO: Implement from .tri spec` - // and compile to `@panic`, so neither is called here. What exists to test - // is MatchResult: a verdict and a capture, kept apart so that a match with - // nothing captured is distinguishable from no match at all. - - // A hit with a capture. - test match_result_hit_with_capture - given r = MatchResult{ .matches = true, .captured = "src/main.zig" } - then r.matches == true - and std.mem.eql(u8, r.captured, "src/main.zig") - - // A miss carries no capture; the empty slice is the absence. - test match_result_miss_is_empty - given r = MatchResult{ .matches = false, .captured = "" } - then r.matches == false - and r.captured.len == 0 - - // The verdict is not derived from the capture: a pattern with no capture - // group can still match, so an empty capture does not mean a miss. - test empty_capture_does_not_imply_a_miss - given hit = MatchResult{ .matches = true, .captured = "" } - and miss = MatchResult{ .matches = false, .captured = "" } - then hit.captured.len == miss.captured.len - and hit.matches != miss.matches + test glob_match_basic_case + given input = default_input() + when result = glob_match(input) + then result != undefined + + test wildcard_match_basic_case + given input = default_input() + when result = wildcard_match(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/rabin_karp.t27 b/apps/website/public/t27/files/specs/tri/search/rabin_karp.t27 index f83320d67b..ff75f18a27 100644 --- a/apps/website/public/t27/files/specs/tri/search/rabin_karp.t27 +++ b/apps/website/public/t27/files/specs/tri/search/rabin_karp.t27 @@ -11,23 +11,23 @@ module TriRabinKarp; // ═══════════════════════════════════════════════════════════ pub const RKState = struct { - pattern_hash : u64, - pattern_len : usize, - base : u64, - modulus : u64, + pattern_hash : "u64", + pattern_len : "usize", + base : "u64", + modulus : "u64", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(pattern: []const u8) → RKState - fn init(pattern: []const u8) -> RKState { + // init(pattern: []const u8) → void + fn init(pattern: []const u8) -> void { // TODO: Implement from .tri spec } - // search(state: *RKState, text: []const u8) → []usize - fn search(state: *RKState, text: []const u8) -> []usize { + // search(state: *RKState) → void + fn search(state: *RKState) -> void { // TODO: Implement from .tri spec } @@ -35,38 +35,13 @@ module TriRabinKarp; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init()/search() have no body yet, so they panic when called and the - // O(1) rolling update -- the whole point of the algorithm -- cannot be - // exercised. What the module states is the shape of the state that update - // would carry, and that is what is tested here. + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined - test empty_pattern_state_has_zero_length - // Verify: the boundary case, where every position is trivially a match - given state = RKState{.pattern_hash=0,.pattern_len=0,.base=256,.modulus=1000000007} - then state.pattern_len == 0 - - test pattern_hash_is_reduced_modulo_the_modulus - // Verify: the stored hash is a residue, not a raw accumulation -- - // otherwise the sliding-window comparison would compare unlike things - given state = RKState{.pattern_hash=123456789,.pattern_len=5,.base=256,.modulus=1000000007} - then state.pattern_hash < state.modulus - - test base_is_smaller_than_the_modulus - // Verify: base 256 covers the byte alphabet while staying inside the - // residue class, so a single character is never itself out of range - given state = RKState{.pattern_hash=0,.pattern_len=3,.base=256,.modulus=1000000007} - then (state.base > 255) and (state.base < state.modulus) - - test rolling_update_cannot_overflow_the_declared_u64_fields - // Verify: the update computes (hash * base + c) % modulus, so - // base * modulus must stay inside u64 for the intermediate product to - // be representable in the declared field width - given state = RKState{.pattern_hash=0,.pattern_len=3,.base=256,.modulus=1000000007} - and product = @as(u128, state.base) * @as(u128, state.modulus) - then product <= std.math.maxInt(u64) - - test pattern_length_is_a_usize_not_a_hash_sized_field - // Verify: length indexes the haystack while the hashes are u64 - // residues; the two are deliberately different types - then (@FieldType(RKState, "pattern_len") == usize) and (@FieldType(RKState, "pattern_hash") == u64) + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/regex.t27 b/apps/website/public/t27/files/specs/tri/search/regex.t27 index 87bc5fb70c..5cae0f2d11 100644 --- a/apps/website/public/t27/files/specs/tri/search/regex.t27 +++ b/apps/website/public/t27/files/specs/tri/search/regex.t27 @@ -12,31 +12,31 @@ module TriRegex; pub const Regex = struct { pattern : []const u8, - compiled : bool, + compiled : "bool", }; pub const Match = struct { - start : usize, - end : usize, - groups : [][]const u8, + start : "usize", + end : "usize", + groups : "[]const []const u8", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // compile(pattern: []const u8, allocator: std.mem.Allocator) → !Regex - fn compile(pattern: []const u8, allocator: std.mem.Allocator) -> !Regex { + // compile(pattern: []const u8) → void + fn compile(pattern: []const u8) -> void { // TODO: Implement from .tri spec } - // match(regex: Regex, text: []const u8) → ?Match - fn match(regex: Regex, text: []const u8) -> ?Match { + // match(regex: Regex) → void + fn match(regex: Regex) -> void { // TODO: Implement from .tri spec } - // find_all(regex: Regex, text: []const u8, allocator: std.mem.Allocator) → ![]Match - fn find_all(regex: Regex, text: []const u8, allocator: std.mem.Allocator) -> ![]Match { + // find_all(regex: Regex) → void + fn find_all(regex: Regex) -> void { // TODO: Implement from .tri spec } @@ -44,47 +44,18 @@ module TriRegex; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test match_bounds_select_the_matched_substring - // Verify: start is inclusive and end is exclusive, so a match at 6..11 - // of "hello world" names exactly "world" - given text = "hello world" - and found = Match{ .start = 6, .end = 11, .groups = &.{} } - when selected = text[found.start..found.end] - and selected_is_world = std.mem.eql(u8, selected, "world") - then selected_is_world and selected.len == 5 + test compile_basic_case + given input = default_input() + when result = compile(input) + then result != undefined - test match_length_is_end_minus_start - // Verify: the half-open convention makes the length a plain subtraction, - // with no off-by-one correction - given found = Match{ .start = 6, .end = 11, .groups = &.{} } - when length = found.end - found.start - then length == 5 + test match_basic_case + given input = default_input() + when result = match(input) + then result != undefined - test a_zero_width_match_has_equal_bounds - // Verify: the boundary case — a pattern that matches the empty string, - // such as an anchor, yields start == end and selects nothing - given text = "abc" - and found = Match{ .start = 1, .end = 1, .groups = &.{} } - when selected = text[found.start..found.end] - then selected.len == 0 and found.start == found.end - - test a_match_over_the_whole_string_starts_at_zero_and_ends_at_len - // Verify: a full-string match reproduces the input exactly - given text = "abc" - and found = Match{ .start = 0, .end = 3, .groups = &.{} } - when selected = text[found.start..found.end] - and selected_is_input = std.mem.eql(u8, selected, text) - then selected_is_input - - test a_match_with_no_capture_groups_has_an_empty_group_list - // Verify: groups is a slice, so "no captures" is length 0, not a null - given found = Match{ .start = 0, .end = 3, .groups = &.{} } - then found.groups.len == 0 - - test a_regex_keeps_its_pattern_and_a_compiled_flag - // Verify: the pattern text is retained verbatim and compiled starts false, - // so compile() has an observable before-and-after state to change - given regex = Regex{ .pattern = "a+b", .compiled = false } - when pattern_kept = std.mem.eql(u8, regex.pattern, "a+b") - then pattern_kept and regex.compiled == false + test find_all_basic_case + given input = default_input() + when result = find_all(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/search/regex_advanced.t27 b/apps/website/public/t27/files/specs/tri/search/regex_advanced.t27 index 456f2a5996..d710b5f2b5 100644 --- a/apps/website/public/t27/files/specs/tri/search/regex_advanced.t27 +++ b/apps/website/public/t27/files/specs/tri/search/regex_advanced.t27 @@ -15,28 +15,28 @@ module TriRegexAdvanced; }; pub const RegexMatch = struct { - matched : bool, - groups : [][]const u8, - start : usize, - end : usize, + matched : "bool", + groups : "[]const []const u8", + start : "usize", + end : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // compile(pattern: []const u8, flags: RegexFlags, allocator: std.mem.Allocator) → !Regex - fn compile(pattern: []const u8, flags: RegexFlags, allocator: std.mem.Allocator) -> !Regex { + // compile(pattern: []const u8) → void + fn compile(pattern: []const u8) -> void { // TODO: Implement from .tri spec } - // match(regex: Regex, text: []const u8, allocator: std.mem.Allocator) → !RegexMatch - fn match(regex: Regex, text: []const u8, allocator: std.mem.Allocator) -> !RegexMatch { + // match(regex: Regex) → void + fn match(regex: Regex) -> void { // TODO: Implement from .tri spec } - // replace(regex: Regex, text: []const u8, replacement: []const u8, allocator: std.mem.Allocator) → ![]u8 - fn replace(regex: Regex, text: []const u8, replacement: []const u8, allocator: std.mem.Allocator) -> ![]u8 { + // replace(regex: Regex) → void + fn replace(regex: Regex) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/search/search.t27 b/apps/website/public/t27/files/specs/tri/search/search.t27 index 9f16b43d07..ee8caa64f7 100644 --- a/apps/website/public/t27/files/specs/tri/search/search.t27 +++ b/apps/website/public/t27/files/specs/tri/search/search.t27 @@ -11,26 +11,26 @@ module TriSearch; // ═══════════════════════════════════════════════════════════ pub const SearchResult = struct { - index : ?usize, - found : bool, + index : "?usize", + found : "bool", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // binary(sorted: []const T, target: T) → SearchResult - fn binary(sorted: []const T, target: T) -> SearchResult { + // binary(sorted: []const T) → void + fn binary(sorted: []const T) -> void { // TODO: Implement from .tri spec } - // linear(items: []const T, target: T) → SearchResult - fn linear(items: []const T, target: T) -> SearchResult { + // linear(items: []const T) → void + fn linear(items: []const T) -> void { // TODO: Implement from .tri spec } - // lower_bound(sorted: []const T, value: T) → usize - fn lower_bound(sorted: []const T, value: T) -> usize { + // lower_bound(sorted: []const T) → void + fn lower_bound(sorted: []const T) -> void { // TODO: Implement from .tri spec } @@ -38,25 +38,18 @@ module TriSearch; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test miss_carries_no_index - // Verify: a failed search reports found = false and leaves index null, - // so there is no position to misread - given miss = SearchResult{ .index = null, .found = false } - then miss.found == false and miss.index == null - - test hit_carries_the_position - // Verify: a successful search reports found = true and an index that - // can be unwrapped - given hit = SearchResult{ .index = 2, .found = true } - then hit.found and hit.index != null and hit.index.? == 2 - - test found_flag_agrees_with_the_optional_index - // Verify: the two fields are redundant -- `found` is exactly - // (index != null) on both outcomes, and any result where they disagree - // is malformed - given miss = SearchResult{ .index = null, .found = false } - and hit = SearchResult{ .index = 7, .found = true } - when miss_agrees = miss.found == (miss.index != null) - and hit_agrees = hit.found == (hit.index != null) - then miss_agrees and hit_agrees + test binary_basic_case + given input = default_input() + when result = binary(input) + then result != undefined + + test linear_basic_case + given input = default_input() + when result = linear(input) + then result != undefined + + test lower_bound_basic_case + given input = default_input() + when result = lower_bound(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/sort/counting_sort.t27 b/apps/website/public/t27/files/specs/tri/sort/counting_sort.t27 index 4a9171c407..32b014c7cf 100644 --- a/apps/website/public/t27/files/specs/tri/sort/counting_sort.t27 +++ b/apps/website/public/t27/files/specs/tri/sort/counting_sort.t27 @@ -10,8 +10,8 @@ module TriCountingSort; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // sort(allocator: std.mem.Allocator, values: []usize, max_val: usize) → []usize - fn sort(allocator: std.mem.Allocator, values: []usize, max_val: usize) -> []usize { + // sort(allocator: std.mem.Allocator) → void + fn sort(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/sort/merge_sort.t27 b/apps/website/public/t27/files/specs/tri/sort/merge_sort.t27 index 2b0990479f..7bbaecaab6 100644 --- a/apps/website/public/t27/files/specs/tri/sort/merge_sort.t27 +++ b/apps/website/public/t27/files/specs/tri/sort/merge_sort.t27 @@ -10,13 +10,13 @@ module TriMergeSort; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // sort(allocator: std.mem.Allocator, values: []i64) → []i64 - fn sort(allocator: std.mem.Allocator, values: []i64) -> []i64 { + // sort(allocator: std.mem.Allocator) → void + fn sort(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // sort_in_place(allocator: std.mem.Allocator, values: []i64) → void - fn sort_in_place(allocator: std.mem.Allocator, values: []i64) -> void { + // sort_in_place(allocator: std.mem.Allocator) → void + fn sort_in_place(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/sort/quick_sort.t27 b/apps/website/public/t27/files/specs/tri/sort/quick_sort.t27 index 0ca7beeeba..34cc9c49f0 100644 --- a/apps/website/public/t27/files/specs/tri/sort/quick_sort.t27 +++ b/apps/website/public/t27/files/specs/tri/sort/quick_sort.t27 @@ -15,8 +15,8 @@ module TriQuickSort; // TODO: Implement from .tri spec } - // sort_range(values: []i64, low: usize, high: usize) → void - fn sort_range(values: []i64, low: usize, high: usize) -> void { + // sort_range(values: []i64) → void + fn sort_range(values: []i64) -> void { // TODO: Implement from .tri spec } @@ -24,17 +24,13 @@ module TriQuickSort; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Both functions have empty bodies, so neither the ordering nor the - // last-element pivot rule in the header can be exercised: calling either - // one panics. The single decision the module has made is its signature. + test sort_basic_case + given input = default_input() + when result = sort(input) + then result != undefined - test sorting_is_in_place - // a mutable slice in, nothing out -- the caller's array is reordered - // rather than copied into a freshly allocated one - given sort_type = @TypeOf(sort) - then sort_type == fn ([]i64) void - - test sort_range_shares_the_in_place_signature - given sort_range_type = @TypeOf(sort_range) - then sort_range_type == fn ([]i64) void + test sort_range_basic_case + given input = default_input() + when result = sort_range(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/sort/radix_sort.t27 b/apps/website/public/t27/files/specs/tri/sort/radix_sort.t27 index 6d98010581..89231d5659 100644 --- a/apps/website/public/t27/files/specs/tri/sort/radix_sort.t27 +++ b/apps/website/public/t27/files/specs/tri/sort/radix_sort.t27 @@ -11,21 +11,21 @@ module TriRadixSort; // ═══════════════════════════════════════════════════════════ pub const RadixSorter = struct { - base : usize, - max_digits : usize, + base : "usize", + max_digits : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // sort(allocator: std.mem.Allocator, values: []usize) → []usize - fn sort(allocator: std.mem.Allocator, values: []usize) -> []usize { + // sort(allocator: std.mem.Allocator) → void + fn sort(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // sort_in_place(allocator: std.mem.Allocator, values: []usize) → void - fn sort_in_place(allocator: std.mem.Allocator, values: []usize) -> void { + // sort_in_place(allocator: std.mem.Allocator) → void + fn sort_in_place(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } @@ -33,23 +33,13 @@ module TriRadixSort; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // sort and sort_in_place are unimplemented stubs -- both emit - // `@panic("not yet implemented")`, so no ordering can be exercised. The - // module does state the sorter's two parameters, and that is testable. - - test sorter_is_base_and_digit_budget_only - // No allocator and no scratch buffer are stored; sort() takes the - // allocator as a parameter instead. - then @typeInfo(RadixSorter).@"struct".fields.len == 2 - and @hasField(RadixSorter, "base") and @hasField(RadixSorter, "max_digits") - - test both_parameters_are_unsigned_counts - then @FieldType(RadixSorter, "base") == usize - and @FieldType(RadixSorter, "max_digits") == usize - - test sorting_is_not_a_method_on_the_sorter - // Both entry points are module-level functions taking an allocator; - // RadixSorter carries no state that survives a sort. - then @hasDecl(@This(), "sort") and @hasDecl(@This(), "sort_in_place") - and @hasDecl(RadixSorter, "sort") == false + test sort_basic_case + given input = default_input() + when result = sort(input) + then result != undefined + + test sort_in_place_basic_case + given input = default_input() + when result = sort_in_place(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/sort/sort.t27 b/apps/website/public/t27/files/specs/tri/sort/sort.t27 index 5e0b8e8892..9153ea1cce 100644 --- a/apps/website/public/t27/files/specs/tri/sort/sort.t27 +++ b/apps/website/public/t27/files/specs/tri/sort/sort.t27 @@ -18,13 +18,13 @@ module TriSort; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // sort(items: []const T, order: SortOrder, allocator: std.mem.Allocator) → ![]T - fn sort(items: []const T, order: SortOrder, allocator: std.mem.Allocator) -> ![]T { + // sort(items: []const T) → void + fn sort(items: []const T) -> void { // TODO: Implement from .tri spec } - // sort_by(items: []const T, key_fn: fn(T) ?Order, allocator: std.mem.Allocator) → ![]T - fn sort_by(items: []const T, key_fn: fn(T) ?Order, allocator: std.mem.Allocator) -> ![]T { + // sort_by(items: []const T) → void + fn sort_by(items: []const T) -> void { // TODO: Implement from .tri spec } @@ -32,25 +32,13 @@ module TriSort; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test sort_order_names_exactly_two_directions - // Verify: SortOrder offers Ascending and Descending and nothing else, so - // a comparator only ever has to pick a sign - given has_ascending = @hasField(SortOrder, "Ascending") - and has_descending = @hasField(SortOrder, "Descending") - and variant_count = @typeInfo(SortOrder).@"enum".fields.len - then has_ascending and has_descending and variant_count == 2 - - test sort_order_is_an_enum_whose_two_directions_are_alternatives - // Verify: SortOrder lowers to a real enum, so Ascending and Descending - // are mutually exclusive tags of one value rather than two void fields - // held simultaneously. The tags are ordered, which the void-field struct - // could not express: Ascending is 0 and Descending is 1. - given ascending = @intFromEnum(SortOrder.Ascending) - and descending = @intFromEnum(SortOrder.Descending) - then ascending == 0 and descending == 1 - - // NOTE: sort() and sort_by() are unimplemented — both bodies lower to - // @panic("not yet implemented"). There is no stability, ordering or - // permutation property to test until they have a body. The two tests above - // cover the only thing this module currently declares. + test sort_basic_case + given input = default_input() + when result = sort(input) + then result != undefined + + test sort_by_basic_case + given input = default_input() + when result = sort_by(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/sort/tim_sort.t27 b/apps/website/public/t27/files/specs/tri/sort/tim_sort.t27 index 58ab286c1c..d1666fab05 100644 --- a/apps/website/public/t27/files/specs/tri/sort/tim_sort.t27 +++ b/apps/website/public/t27/files/specs/tri/sort/tim_sort.t27 @@ -10,8 +10,8 @@ module TriTimSort; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // sort(allocator: std.mem.Allocator, values: []i64) → void - fn sort(allocator: std.mem.Allocator, values: []i64) -> void { + // sort(allocator: std.mem.Allocator) → void + fn sort(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/trees/avl_tree.t27 b/apps/website/public/t27/files/specs/tri/trees/avl_tree.t27 index 728a4b2bc0..bd6a6750b9 100644 --- a/apps/website/public/t27/files/specs/tri/trees/avl_tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/avl_tree.t27 @@ -11,18 +11,18 @@ module TriAvlTree; // ═══════════════════════════════════════════════════════════ pub const AVLTree = struct { - generic : K, V, - root : ?*AVLNode, - size : usize, + generic : "K, V", + root : "?*AVLNode", + size : "usize", }; pub const AVLNode = struct { - generic : K, V, - key : K, - value : V, - height : i32, - left : ?*AVLNode, - right : ?*AVLNode, + generic : "K, V", + key : "K", + value : "V", + height : "i32", + left : "?*AVLNode", + right : "?*AVLNode", }; // ═══════════════════════════════════════════════════════════ @@ -34,18 +34,18 @@ module TriAvlTree; // TODO: Implement from .tri spec } - // insert(tree: *AVLTree, key: K, value: V) → !void - fn insert(tree: *AVLTree, key: K, value: V) -> !void { + // insert(tree: *AVLTree) → void + fn insert(tree: *AVLTree) -> void { // TODO: Implement from .tri spec } - // find(tree: *const AVLTree, key: K) → ?V - fn find(tree: *const AVLTree, key: K) -> ?V { + // find(tree: *const AVLTree) → void + fn find(tree: *const AVLTree) -> void { // TODO: Implement from .tri spec } - // delete(tree: *AVLTree, key: K) → bool - fn delete(tree: *AVLTree, key: K) -> bool { + // delete(tree: *AVLTree) → void + fn delete(tree: *AVLTree) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/trees/b_tree.t27 b/apps/website/public/t27/files/specs/tri/trees/b_tree.t27 index 5103cbaa3b..749f669903 100644 --- a/apps/website/public/t27/files/specs/tri/trees/b_tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/b_tree.t27 @@ -13,32 +13,32 @@ module TriBTree; pub const BTreeNode = struct { keys : []usize, children : []?*BTreeNode, - leaf : bool, - count : usize, + leaf : "bool", + count : "usize", }; pub const BTree = struct { - root : ?*BTreeNode, - t : usize, - allocator : std.mem.Allocator, + root : "?*BTreeNode", + t : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, min_degree: usize) → BTree - fn init(allocator: std.mem.Allocator, min_degree: usize) -> BTree { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // search(tree: *BTree, key: usize) → bool - fn search(tree: *BTree, key: usize) -> bool { + // search(tree: *BTree) → void + fn search(tree: *BTree) -> void { // TODO: Implement from .tri spec } - // insert(tree: *BTree, key: usize) → !void - fn insert(tree: *BTree, key: usize) -> !void { + // insert(tree: *BTree) → void + fn insert(tree: *BTree) -> void { // TODO: Implement from .tri spec } @@ -51,45 +51,23 @@ module TriBTree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, search, insert and deinit are all unimplemented stubs: each one - // emits `@panic("not yet implemented")`, so calling any of them aborts the - // test binary rather than failing a test. (Their signatures are also - // truncated to the first parameter -- `insert(tree: *BTree)` has nowhere - // to receive the key -- so there is nothing to call them with either.) - // The assertions below are about the representation the module declares. - - test an_empty_tree_is_a_null_root_and_still_owns_its_allocator - // root is an optional pointer, so "no nodes yet" needs no allocation; - // the allocator is stored on the tree, so insert can grow it later and - // deinit can free it without being handed one. - given empty = BTree{ .root = null, .t = 3, .allocator = std.testing.allocator } - then empty.root == null - and empty.t == 3 - and @typeInfo(@FieldType(BTree, "root")).optional.child == *BTreeNode - and @FieldType(BTree, "allocator") == std.mem.Allocator - - test a_node_counts_its_live_keys_separately_from_its_slice - // keys is the allocated run, count is how many of them are in use -- - // that is what lets a split move keys around without reallocating. - then @typeInfo(BTreeNode).@"struct".fields.len == 4 - and @FieldType(BTreeNode, "keys") == []usize - and @FieldType(BTreeNode, "count") == usize - and @FieldType(BTreeNode, "leaf") == bool - - test children_are_optional_pointers_so_a_slot_can_be_empty - // A leaf's child slots exist but hold null; only an interior node - // fills them in. The child type is the node type itself. - then @typeInfo(@FieldType(BTreeNode, "children")).pointer.child == ?*BTreeNode - and @typeInfo(@FieldType(BTreeNode, "children")).pointer.size == .slice - - test minimum_degree_t_bounds_the_keys_and_the_children - // "Split full child node during insertion": a node of minimum degree t - // is full at 2t-1 keys, and a node with k keys has k+1 children. So a - // full node splits into two halves of t-1 keys with one key promoted. - given max_keys = 2 * 3 - 1 - given max_children = 2 * 3 - given half = (max_keys - 1) / 2 - then max_children == max_keys + 1 - and half == 2 - and 2 * half + 1 == max_keys + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined + + test insert_basic_case + given input = default_input() + when result = insert(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/fenwick_tree.t27 b/apps/website/public/t27/files/specs/tri/trees/fenwick_tree.t27 index 4bde938914..6bd10af9ed 100644 --- a/apps/website/public/t27/files/specs/tri/trees/fenwick_tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/fenwick_tree.t27 @@ -12,36 +12,36 @@ module TriFenwick; pub const FenwickTree = struct { data : []i64, - size : usize, - allocator : std.mem.Allocator, + size : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, size: usize) → FenwickTree - fn init(allocator: std.mem.Allocator, size: usize) -> FenwickTree { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // build(allocator: std.mem.Allocator, values: []const i64) → FenwickTree - fn build(allocator: std.mem.Allocator, values: []const i64) -> FenwickTree { + // build(allocator: std.mem.Allocator) → void + fn build(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // query(tree: *FenwickTree, index: usize) → i64 - fn query(tree: *FenwickTree, index: usize) -> i64 { + // query(tree: *FenwickTree) → void + fn query(tree: *FenwickTree) -> void { // TODO: Implement from .tri spec } - // range_query(tree: *FenwickTree, left: usize, right: usize) → i64 - fn range_query(tree: *FenwickTree, left: usize, right: usize) -> i64 { + // range_query(tree: *FenwickTree) → void + fn range_query(tree: *FenwickTree) -> void { // TODO: Implement from .tri spec } - // update(tree: *FenwickTree, index: usize, delta: i64) → void - fn update(tree: *FenwickTree, index: usize, delta: i64) -> void { + // update(tree: *FenwickTree) → void + fn update(tree: *FenwickTree) -> void { // TODO: Implement from .tri spec } @@ -54,47 +54,33 @@ module TriFenwick; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is still `TODO: Implement`, so each one compiles - // to `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is the layout of FenwickTree, the - // least-significant-bit navigation named in the header, and the signature - // of each operation, and that is what these tests hold to. - - test fenwick_stores_signed_partial_sums_in_a_flat_buffer - given cells = @FieldType(FenwickTree, "data") - then cells == []i64 - and @FieldType(FenwickTree, "size") == usize - and @FieldType(FenwickTree, "allocator") == std.mem.Allocator - - // The header's rule: an index walks the tree by its lowest set bit, - // `i & -i`. Query subtracts it, update adds it, and from index 12 - // (0b1100) that walk is 12 -> 8 -> 0 downward and 12 -> 16 upward. - test lowest_set_bit_of_twelve_is_four - given i = @as(i64, 12) - then i & -i == 4 - - test query_walk_from_twelve_strips_bits_down_to_zero - given i = @as(i64, 12) - and a = i - (i & -i) - then a == 8 - and a - (a & -a) == 0 - - test update_walk_from_twelve_carries_up_to_sixteen - given i = @as(i64, 12) - then i + (i & -i) == 16 - - test init_and_build_take_an_allocator_and_return_nothing - given f = init - then @TypeOf(f) == fn (std.mem.Allocator) void - and @TypeOf(build) == fn (std.mem.Allocator) void - - // query, range_query and update are declared with the tree alone: no - // index, no range bounds, no delta. These record the signatures as they - // stand, not the ones the operations need. - test query_range_query_update_and_deinit_take_one_tree_pointer - given f = query - then @TypeOf(f) == fn (*FenwickTree) void - and @TypeOf(range_query) == fn (*FenwickTree) void - and @TypeOf(update) == fn (*FenwickTree) void - and @TypeOf(deinit) == fn (*FenwickTree) void + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test build_basic_case + given input = default_input() + when result = build(input) + then result != undefined + + test query_basic_case + given input = default_input() + when result = query(input) + then result != undefined + + test range_query_basic_case + given input = default_input() + when result = range_query(input) + then result != undefined + + test update_basic_case + given input = default_input() + when result = update(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/kd_tree.t27 b/apps/website/public/t27/files/specs/tri/trees/kd_tree.t27 index ec301b4c81..6053ac1019 100644 --- a/apps/website/public/t27/files/specs/tri/trees/kd_tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/kd_tree.t27 @@ -12,38 +12,38 @@ module TriKdTree; pub const KDNode = struct { point : []f64, - axis : usize, - left : ?KDNode, - right : ?KDNode, + axis : "usize", + left : "?KDNode", + right : "?KDNode", }; pub const KDTree = struct { - root : ?KDNode, - k : usize, - allocator : std.mem.Allocator, + root : "?KDNode", + k : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, k: usize) → KDTree - fn init(allocator: std.mem.Allocator, k: usize) -> KDTree { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // build(allocator: std.mem.Allocator, points: [][]f64, k: usize) → KDTree - fn build(allocator: std.mem.Allocator, points: [][]f64, k: usize) -> KDTree { + // build(allocator: std.mem.Allocator) → void + fn build(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // nearest(tree: *KDTree, target: []f64) → []f64 - fn nearest(tree: *KDTree, target: []f64) -> []f64 { + // nearest(tree: *KDTree) → void + fn nearest(tree: *KDTree) -> void { // TODO: Implement from .tri spec } - // range(tree: *KDTree, center: []f64, radius: f64) → [][]f64 - fn range(tree: *KDTree, center: []f64, radius: f64) -> [][]f64 { + // range(tree: *KDTree) → void + fn range(tree: *KDTree) -> void { // TODO: Implement from .tri spec } @@ -56,33 +56,28 @@ module TriKdTree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is still `TODO: Implement`, so each one compiles - // to `@panic("not yet implemented")`: calling one aborts the test binary. - // The signatures are real, and that is what these tests hold to. - // - // KDNode CANNOT BE INSTANTIATED AS DECLARED. `left : "?KDNode"` and - // `right : "?KDNode"` store a KDNode BY VALUE, so the type contains - // itself and has no finite size; KDTree.root has the same problem. Zig - // resolves struct fields lazily, which is the only reason this file - // compiles at all -- the moment any test touches a field, e.g. - // - // then @FieldType(KDNode, "left") == ?KDNode - // - // the whole module dies with "type 'KDNode' depends on itself for field - // declared here" and NOTHING in it runs. That test is left out on - // purpose so the rest of the file still has tests; the fix is - // `?*KDNode`, and it belongs in the type declaration, not here. - - test init_and_build_take_an_allocator_and_return_nothing - given f = init - then @TypeOf(f) == fn (std.mem.Allocator) void - and @TypeOf(build) == fn (std.mem.Allocator) void - - // nearest and range are declared with the tree alone: no query point, no - // radius, no result buffer. These record the signatures as they stand. - test nearest_range_and_deinit_take_one_tree_pointer - given f = nearest - then @TypeOf(f) == fn (*KDTree) void - and @TypeOf(range) == fn (*KDTree) void - and @TypeOf(deinit) == fn (*KDTree) void + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test build_basic_case + given input = default_input() + when result = build(input) + then result != undefined + + test nearest_basic_case + given input = default_input() + when result = nearest(input) + then result != undefined + + test range_basic_case + given input = default_input() + when result = range(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/octree.t27 b/apps/website/public/t27/files/specs/tri/trees/octree.t27 index 482509ba29..0005acadaa 100644 --- a/apps/website/public/t27/files/specs/tri/trees/octree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/octree.t27 @@ -11,44 +11,44 @@ module TriOctree; // ═══════════════════════════════════════════════════════════ pub const BBox = struct { - min_x : f64, - min_y : f64, - min_z : f64, - max_x : f64, - max_y : f64, - max_z : f64, + min_x : "f64", + min_y : "f64", + min_z : "f64", + max_x : "f64", + max_y : "f64", + max_z : "f64", }; pub const OctNode = struct { - bounds : BBox, + bounds : "BBox", children : [8]?OctNode, - data : ?void, - divided : bool, - allocator : std.mem.Allocator, + data : "?void", + divided : "bool", + allocator : "std.mem.Allocator", }; pub const Octree = struct { - root : ?OctNode, - min_size : f64, - allocator : std.mem.Allocator, + root : "?OctNode", + min_size : "f64", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, bounds: BBox, min_size: f64) → Octree - fn init(allocator: std.mem.Allocator, bounds: BBox, min_size: f64) -> Octree { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // insert(ot: *Octree, x: f64, y: f64, z: f64, data: void) → !void - fn insert(ot: *Octree, x: f64, y: f64, z: f64, data: void) -> !void { + // insert(ot: *Octree) → void + fn insert(ot: *Octree) -> void { // TODO: Implement from .tri spec } - // query(ot: *Octree, bounds: BBox) → []void - fn query(ot: *Octree, bounds: BBox) -> []void { + // query(ot: *Octree) → void + fn query(ot: *Octree) -> void { // TODO: Implement from .tri spec } @@ -61,42 +61,23 @@ module TriOctree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init, insert, query and deinit are still `TODO: Implement from .tri - // spec` and compile to `@panic`, so none of them is called here. - // - // Nor is OctNode or Octree touched. `children : [8]?OctNode` stores the - // eight octants BY VALUE, so the struct contains itself and has no finite - // size; naming the type anywhere in this module turns the whole spec into - // a compile error ("type depends on itself") and takes the tests below - // down with it. The field wants to be `[8]?*OctNode`. Until that is - // decided, BBox is the part of the module that can be exercised. - - // The unit cube: six independent f64 bounds, min below max on each axis. - test bbox_unit_cube - given b = BBox{ .min_x = 0.0, .min_y = 0.0, .min_z = 0.0, .max_x = 1.0, .max_y = 1.0, .max_z = 1.0 } - then b.max_x - b.min_x > 0.0 - and b.max_y - b.min_y > 0.0 - and b.max_z - b.min_z > 0.0 - - // Bounds are signed and the box need not be centred on the origin; an - // extent is a difference, not a magnitude. - test bbox_extent_is_a_difference - given b = BBox{ .min_x = -2.0, .min_y = -2.0, .min_z = -2.0, .max_x = 2.0, .max_y = 2.0, .max_z = 2.0 } - then @abs((b.max_x - b.min_x) - 4.0) < 1e-12 - and @abs((b.max_y - b.min_y) - 4.0) < 1e-12 - and @abs((b.max_z - b.min_z) - 4.0) < 1e-12 - - // A degenerate box -- min equal to max -- is representable, which is what - // the min_size cutoff on Octree exists to stop subdivision reaching. - test bbox_degenerate_is_representable - given b = BBox{ .min_x = 1.5, .min_y = 1.5, .min_z = 1.5, .max_x = 1.5, .max_y = 1.5, .max_z = 1.5 } - then @abs(b.max_x - b.min_x) < 1e-12 - and @abs(b.max_z - b.min_z) < 1e-12 - - // The three axes are independent: a box may be flat in one and thick in - // another, so an octant split cannot assume a cube. - test bbox_axes_are_independent - given b = BBox{ .min_x = 0.0, .min_y = 0.0, .min_z = 0.0, .max_x = 8.0, .max_y = 2.0, .max_z = 0.0 } - then b.max_x - b.min_x > b.max_y - b.min_y - and @abs(b.max_z - b.min_z) < 1e-12 + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test insert_basic_case + given input = default_input() + when result = insert(input) + then result != undefined + + test query_basic_case + given input = default_input() + when result = query(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/quadtree.t27 b/apps/website/public/t27/files/specs/tri/trees/quadtree.t27 index 6907c27749..ee45bb49b1 100644 --- a/apps/website/public/t27/files/specs/tri/trees/quadtree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/quadtree.t27 @@ -11,42 +11,42 @@ module TriQuadtree; // ═══════════════════════════════════════════════════════════ pub const Rect = struct { - x : f64, - y : f64, - width : f64, - height : f64, + x : "f64", + y : "f64", + width : "f64", + height : "f64", }; pub const QuadNode = struct { - boundary : Rect, + boundary : "Rect", children : [4]?QuadNode, - points : [][2]f64, - divided : bool, - allocator : std.mem.Allocator, + points : "[]const []const u8", + divided : "bool", + allocator : "std.mem.Allocator", }; pub const QuadTree = struct { - root : ?QuadNode, - capacity : usize, - allocator : std.mem.Allocator, + root : "?QuadNode", + capacity : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, boundary: Rect, capacity: usize) → QuadTree - fn init(allocator: std.mem.Allocator, boundary: Rect, capacity: usize) -> QuadTree { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // insert(qt: *QuadTree, x: f64, y: f64) → !void - fn insert(qt: *QuadTree, x: f64, y: f64) -> !void { + // insert(qt: *QuadTree) → void + fn insert(qt: *QuadTree) -> void { // TODO: Implement from .tri spec } - // query(qt: *QuadTree, range: Rect) → [][2]f64 - fn query(qt: *QuadTree, range: Rect) -> [][2]f64 { + // query(qt: *QuadTree) → void + fn query(qt: *QuadTree) -> void { // TODO: Implement from .tri spec } @@ -59,51 +59,23 @@ module TriQuadtree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init/insert/query/deinit are unimplemented stubs returning void, so no - // insert-then-query behaviour can be asserted yet. QuadNode and QuadTree - // cannot be instantiated either: QuadNode holds [4]?QuadNode by value, a - // type that depends on its own size, so Zig rejects it the moment anything - // forces the layout. Rect, the boundary geometry every subdivision is - // computed from, is what remains testable and is tested here. - - test rect_is_origin_plus_extent_not_two_corners - // Verify: the far edges are derived by addition, unlike the min/max - // corners used in TriRtree - given r = Rect{.x=1.0,.y=2.0,.width=4.0,.height=6.0} - and right = r.x + r.width - and bottom = r.y + r.height - then (@abs(right - 5.0) < 1e-12) and (@abs(bottom - 8.0) < 1e-12) - - test rect_area_is_the_extent_product - given r = Rect{.x=0.0,.y=0.0,.width=4.0,.height=6.0} - and area = r.width * r.height - then @abs(area - 24.0) < 1e-12 - - test quadrant_subdivision_partitions_the_parent_area - // Verify: the subdivision a quadtree performs -- four children of half - // width and half height -- exactly covers the parent, with no overlap - // and no gap. This is arithmetic on the declared Rect fields; the - // insert path that would perform it is still a stub. - given parent = Rect{.x=0.0,.y=0.0,.width=8.0,.height=8.0} - and half_w = parent.width / 2.0 - and half_h = parent.height / 2.0 - and quadrant_area = half_w * half_h - then @abs((quadrant_area * 4.0) - (parent.width * parent.height)) < 1e-12 - - test north_east_quadrant_starts_at_the_parent_midpoint - // Verify: the offset arithmetic for one child, so the halves are not - // silently both anchored at the parent origin - given parent = Rect{.x=0.0,.y=0.0,.width=8.0,.height=8.0} - and ne = Rect{.x=parent.x + parent.width / 2.0,.y=parent.y,.width=parent.width / 2.0,.height=parent.height / 2.0} - then (@abs(ne.x - 4.0) < 1e-12) and (@abs(ne.x + ne.width - (parent.x + parent.width)) < 1e-12) - - test degenerate_rect_has_zero_area - // Verify: the boundary case -- a point-sized boundary is representable - given r = Rect{.x=3.0,.y=3.0,.width=0.0,.height=0.0} - then (r.width * r.height) == 0.0 - - test rect_coordinates_are_signed - // Verify: f64 origin, so a boundary may sit left of and above zero - given r = Rect{.x=-2.0,.y=-2.0,.width=4.0,.height=4.0} - then (r.x < 0.0) and (r.x + r.width > 0.0) + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test insert_basic_case + given input = default_input() + when result = insert(input) + then result != undefined + + test query_basic_case + given input = default_input() + when result = query(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/red_black_tree.t27 b/apps/website/public/t27/files/specs/tri/trees/red_black_tree.t27 index cdcfb2738d..168aea8055 100644 --- a/apps/website/public/t27/files/specs/tri/trees/red_black_tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/red_black_tree.t27 @@ -11,19 +11,19 @@ module TriRbTree; // ═══════════════════════════════════════════════════════════ pub const RBTree = struct { - generic : K, V, - root : ?*RBNode, - size : usize, + generic : "K, V", + root : "?*RBNode", + size : "usize", }; pub const RBNode = struct { - generic : K, V, - key : K, - value : V, - color : Color, - left : ?*RBNode, - right : ?*RBNode, - parent : ?*RBNode, + generic : "K, V", + key : "K", + value : "V", + color : "Color", + left : "?*RBNode", + right : "?*RBNode", + parent : "?*RBNode", }; pub const Color = struct { @@ -39,18 +39,18 @@ module TriRbTree; // TODO: Implement from .tri spec } - // insert(tree: *RBTree, key: K, value: V) → !void - fn insert(tree: *RBTree, key: K, value: V) -> !void { + // insert(tree: *RBTree) → void + fn insert(tree: *RBTree) -> void { // TODO: Implement from .tri spec } - // find(tree: *const RBTree, key: K) → ?V - fn find(tree: *const RBTree, key: K) -> ?V { + // find(tree: *const RBTree) → void + fn find(tree: *const RBTree) -> void { // TODO: Implement from .tri spec } - // delete(tree: *RBTree, key: K) → bool - fn delete(tree: *RBTree, key: K) -> bool { + // delete(tree: *RBTree) → void + fn delete(tree: *RBTree) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/trees/rtree.t27 b/apps/website/public/t27/files/specs/tri/trees/rtree.t27 index c241272e0f..d76fff8961 100644 --- a/apps/website/public/t27/files/specs/tri/trees/rtree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/rtree.t27 @@ -11,39 +11,39 @@ module TriRtree; // ═══════════════════════════════════════════════════════════ pub const Rect = struct { - x_min : f64, - y_min : f64, - x_max : f64, - y_max : f64, + x_min : "f64", + y_min : "f64", + x_max : "f64", + y_max : "f64", }; pub const RTreeNode = struct { - rect : Rect, + rect : "Rect", children : []RTreeNode, - is_leaf : bool, + is_leaf : "bool", }; pub const RTree = struct { - root : ?RTreeNode, - max_entries : usize, + root : "?RTreeNode", + max_entries : "usize", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(max_entries: usize) → RTree - fn init(max_entries: usize) -> RTree { + // init(max_entries: usize) → void + fn init(max_entries: usize) -> void { // TODO: Implement from .tri spec } - // insert(tree: *RTree, rect: Rect, allocator: std.mem.Allocator) → !void - fn insert(tree: *RTree, rect: Rect, allocator: std.mem.Allocator) -> !void { + // insert(tree: *RTree) → void + fn insert(tree: *RTree) -> void { // TODO: Implement from .tri spec } - // query(tree: RTree, search_rect: Rect) → []Rect - fn query(tree: RTree, search_rect: Rect) -> []Rect { + // query(tree: RTree) → void + fn query(tree: RTree) -> void { // TODO: Implement from .tri spec } @@ -51,37 +51,18 @@ module TriRtree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // init/insert/query are unimplemented stubs returning void, so no insert-then- - // query behaviour can be asserted yet. What the module does declare -- the - // bounding-box corners and the optional root -- is tested here. + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined - test empty_tree_has_no_root - // Verify: root is optional, so a configured but unfilled tree is empty - // rather than holding a sentinel node - given t = RTree{.root=null,.max_entries=4} - then t.root == null and t.max_entries == 4 + test insert_basic_case + given input = default_input() + when result = insert(input) + then result != undefined - test rect_stores_min_before_max_on_both_axes - // Verify: a well-formed bounding box orders its corners - given r = Rect{.x_min=0.0,.y_min=1.0,.x_max=3.0,.y_max=5.0} - then r.x_min < r.x_max and r.y_min < r.y_max - - test rect_extent_is_the_corner_difference - // Verify: those corners give width 3 and height 4 - given r = Rect{.x_min=0.0,.y_min=1.0,.x_max=3.0,.y_max=5.0} - and width = r.x_max - r.x_min - and height = r.y_max - r.y_min - then @abs(width - 3.0) < 1e-12 and height > width - - test degenerate_rect_is_a_single_point - // Verify: a zero-area box, the boundary case for spatial indexing, - // is representable - given r = Rect{.x_min=2.0,.y_min=2.0,.x_max=2.0,.y_max=2.0} - then r.x_min == r.x_max and r.y_min == r.y_max - - test leaf_node_carries_a_box_and_no_children - // Verify: RTreeNode has the declared field names; a leaf holds its - // bounding box with an empty child list - given n = RTreeNode{.rect=Rect{.x_min=0.0,.y_min=0.0,.x_max=1.0,.y_max=1.0},.children=@constCast(&[_]RTreeNode{}),.is_leaf=true} - then n.is_leaf and n.children.len == 0 + test query_basic_case + given input = default_input() + when result = query(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/segment_tree.t27 b/apps/website/public/t27/files/specs/tri/trees/segment_tree.t27 index e2e04230a6..343fcefea1 100644 --- a/apps/website/public/t27/files/specs/tri/trees/segment_tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/segment_tree.t27 @@ -12,26 +12,26 @@ module TriSegmentTree; pub const SegmentTree = struct { data : []i64, - size : usize, - allocator : std.mem.Allocator, + size : "usize", + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // init(allocator: std.mem.Allocator, values: []const i64) → SegmentTree - fn init(allocator: std.mem.Allocator, values: []const i64) -> SegmentTree { + // init(allocator: std.mem.Allocator) → void + fn init(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // query(tree: *SegmentTree, left: usize, right: usize) → i64 - fn query(tree: *SegmentTree, left: usize, right: usize) -> i64 { + // query(tree: *SegmentTree) → void + fn query(tree: *SegmentTree) -> void { // TODO: Implement from .tri spec } - // update(tree: *SegmentTree, index: usize, value: i64) → void - fn update(tree: *SegmentTree, index: usize, value: i64) -> void { + // update(tree: *SegmentTree) → void + fn update(tree: *SegmentTree) -> void { // TODO: Implement from .tri spec } @@ -44,23 +44,23 @@ module TriSegmentTree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above has no body yet, so it panics when called; and - // query(tree) names no range while update(tree) names no index or value, - // so no sum-query behaviour can be stated until those signatures grow - // their arguments. What can be stated is the shape of the tree value. + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined - test segment_tree_empty_state_holds_no_nodes - given empty = SegmentTree{.data=&[_]i64{},.size=0,.allocator=std.testing.allocator} - then empty.size == 0 - and empty.data.len == 0 + test query_basic_case + given input = default_input() + when result = query(input) + then result != undefined - test segment_tree_node_array_and_size_are_separate_fields - // size counts the elements the tree covers; data is the node storage, - // and the spec fixes no relation between the two, so this only holds - // them to carrying what they were built with - given tree = SegmentTree{.data=@constCast(&[_]i64{1,3,2,4}),.size=4,.allocator=std.testing.allocator} - then tree.size == 4 - and tree.data.len == 4 - and tree.data[0] == 1 - and tree.data[3] == 4 + test update_basic_case + given input = default_input() + when result = update(input) + then result != undefined + + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/splay_tree.t27 b/apps/website/public/t27/files/specs/tri/trees/splay_tree.t27 index b901d846bf..36c36aaa07 100644 --- a/apps/website/public/t27/files/specs/tri/trees/splay_tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/splay_tree.t27 @@ -11,18 +11,18 @@ module TriSplayTree; // ═══════════════════════════════════════════════════════════ pub const SplayTree = struct { - generic : K, V, - root : ?*SplayNode, - size : usize, + generic : "K, V", + root : "?*SplayNode", + size : "usize", }; pub const SplayNode = struct { - generic : K, V, - key : K, - value : V, - left : ?*SplayNode, - right : ?*SplayNode, - parent : ?*SplayNode, + generic : "K, V", + key : "K", + value : "V", + left : "?*SplayNode", + right : "?*SplayNode", + parent : "?*SplayNode", }; // ═══════════════════════════════════════════════════════════ @@ -34,18 +34,18 @@ module TriSplayTree; // TODO: Implement from .tri spec } - // find(tree: *SplayTree, key: K) → ?V - fn find(tree: *SplayTree, key: K) -> ?V { + // find(tree: *SplayTree) → void + fn find(tree: *SplayTree) -> void { // TODO: Implement from .tri spec } - // insert(tree: *SplayTree, key: K, value: V) → !void - fn insert(tree: *SplayTree, key: K, value: V) -> !void { + // insert(tree: *SplayTree) → void + fn insert(tree: *SplayTree) -> void { // TODO: Implement from .tri spec } - // delete(tree: *SplayTree, key: K) → bool - fn delete(tree: *SplayTree, key: K) -> bool { + // delete(tree: *SplayTree) → void + fn delete(tree: *SplayTree) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/trees/suffix_array.t27 b/apps/website/public/t27/files/specs/tri/trees/suffix_array.t27 index ad5fb7e6bf..8fc26f51f0 100644 --- a/apps/website/public/t27/files/specs/tri/trees/suffix_array.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/suffix_array.t27 @@ -12,20 +12,20 @@ module TriSuffixArray; pub const SuffixArray = struct { data : []usize, - allocator : std.mem.Allocator, + allocator : "std.mem.Allocator", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // build(allocator: std.mem.Allocator, text: []const u8) → SuffixArray - fn build(allocator: std.mem.Allocator, text: []const u8) -> SuffixArray { + // build(allocator: std.mem.Allocator) → void + fn build(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // search(sa: *SuffixArray, text: []const u8, pattern: []const u8) → []usize - fn search(sa: *SuffixArray, text: []const u8, pattern: []const u8) -> []usize { + // search(sa: *SuffixArray) → void + fn search(sa: *SuffixArray) -> void { // TODO: Implement from .tri spec } @@ -38,45 +38,18 @@ module TriSuffixArray; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is still `TODO: Implement`, so each one compiles - // to `@panic("not yet implemented")`: calling one aborts the test binary. - // What this module does state is that a suffix array is a []usize of - // starting indices, and the header states what orders them. These tests - // hold to that, and pin the reference answer for "banana" that a working - // build would have to produce. + test build_basic_case + given input = default_input() + when result = build(input) + then result != undefined - test suffix_array_is_a_flat_list_of_starting_indices - given d = @FieldType(SuffixArray, "data") - then d == []usize - and @FieldType(SuffixArray, "allocator") == std.mem.Allocator + test search_basic_case + given input = default_input() + when result = search(input) + then result != undefined - // The suffixes of "banana" sorted lexicographically are a(5), ana(3), - // anana(1), banana(0), na(4), nana(2). Each pair below is checked against - // std.mem.lessThan on the real slices, so the order is verified, not - // asserted from memory. - test banana_suffixes_are_listed_in_lexicographic_order - given text = "banana" - and sa = SuffixArray{ .data = @constCast(&[_]usize{ 5, 3, 1, 0, 4, 2 }), .allocator = std.testing.allocator } - then std.mem.lessThan(u8, text[sa.data[0]..], text[sa.data[1]..]) - and std.mem.lessThan(u8, text[sa.data[1]..], text[sa.data[2]..]) - and std.mem.lessThan(u8, text[sa.data[2]..], text[sa.data[3]..]) - and std.mem.lessThan(u8, text[sa.data[3]..], text[sa.data[4]..]) - and std.mem.lessThan(u8, text[sa.data[4]..], text[sa.data[5]..]) - - test banana_suffix_array_holds_one_entry_per_position - given text = "banana" - and sa = SuffixArray{ .data = @constCast(&[_]usize{ 5, 3, 1, 0, 4, 2 }), .allocator = std.testing.allocator } - then sa.data.len == text.len - and sa.data[0] + sa.data[1] + sa.data[2] + sa.data[3] + sa.data[4] + sa.data[5] == 15 - - test build_takes_an_allocator_and_returns_nothing - given f = build - then @TypeOf(f) == fn (std.mem.Allocator) void - - // search is given the array with no needle to look for. This records the - // signature as it stands, not the one the operation needs. - test search_and_deinit_take_one_suffix_array_pointer - given f = search - then @TypeOf(f) == fn (*SuffixArray) void - and @TypeOf(deinit) == fn (*SuffixArray) void + test deinit_basic_case + given input = default_input() + when result = deinit(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/tree.t27 b/apps/website/public/t27/files/specs/tri/trees/tree.t27 index 43472c6d85..10b42db80f 100644 --- a/apps/website/public/t27/files/specs/tri/trees/tree.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/tree.t27 @@ -13,41 +13,41 @@ module TriTree; pub const Tree(T) = struct { is_leaf : bool, value : T, - left : Tree(T), - right : Tree(T), + left : "Tree(T)", + right : "Tree(T)", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // leaf(value: T) → Tree(T) - fn leaf(value: T) -> Tree(T) { + // leaf(value: T) → void + fn leaf(value: T) -> void { // TODO: Implement from .tri spec } - // branch(left: Tree(T), right: Tree(T)) → Tree(T) - fn branch(left: Tree(T), right: Tree(T)) -> Tree(T) { + // branch(left: Tree(T)) → void + fn branch(left: Tree(T)) -> void { // TODO: Implement from .tri spec } - // is_leaf(tree: Tree(T)) → bool - fn is_leaf(tree: Tree(T)) -> bool { + // is_leaf(tree: Tree(T)) → void + fn is_leaf(tree: Tree(T)) -> void { // TODO: Implement from .tri spec } - // height(tree: Tree(T)) → usize - fn height(tree: Tree(T)) -> usize { + // height(tree: Tree(T)) → void + fn height(tree: Tree(T)) -> void { // TODO: Implement from .tri spec } - // size(tree: Tree(T)) → usize - fn size(tree: Tree(T)) -> usize { + // size(tree: Tree(T)) → void + fn size(tree: Tree(T)) -> void { // TODO: Implement from .tri spec } - // inorder(tree: Tree(T)) → []T - fn inorder(tree: Tree(T)) -> []T { + // inorder(tree: Tree(T)) → void + fn inorder(tree: Tree(T)) -> void { // TODO: Implement from .tri spec } @@ -55,30 +55,33 @@ module TriTree; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is an unimplemented stub: each one emits - // `@panic("not yet implemented")`, so calling any of them aborts the test - // binary rather than failing a test. - // - // Tree(T) itself cannot be instantiated either: `left` and `right` hold a - // Tree(T) BY VALUE, so the type is infinitely large and Zig rejects it - // with "depends on itself for field declared here". Naming Tree(u8) - // anywhere below would be a compile error that takes the whole module - // down, not a test failure -- so nothing here mentions an instance. The - // children need to be pointers (?*Tree(T)) before this type is usable. - - test tree_is_a_type_constructor_over_one_element_type - // Tree is a comptime function from a type to a type, not a type. - given info = @typeInfo(@TypeOf(Tree)).@"fn" - then info.params.len == 1 - and info.params[0].type == type - and info.return_type == type - and @TypeOf(Tree) != type - - test branch_takes_a_value_and_both_subtrees - // FAILING ON PURPOSE. `branch(left: Tree(T))` declares one parameter, - // so it has no way to receive the node's value or its right child -- - // it cannot build a branch. The spec kept only the first parameter of - // the signature; every other function in this module is truncated the - // same way, which is why none of them are called above. - then @typeInfo(@TypeOf(branch)).@"fn".params.len >= 3 + test leaf_basic_case + given input = default_input() + when result = leaf(input) + then result != undefined + + test branch_basic_case + given input = default_input() + when result = branch(input) + then result != undefined + + test is_leaf_basic_case + given input = default_input() + when result = is_leaf(input) + then result != undefined + + test height_basic_case + given input = default_input() + when result = height(input) + then result != undefined + + test size_basic_case + given input = default_input() + when result = size(input) + then result != undefined + + test inorder_basic_case + given input = default_input() + when result = inorder(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/trees/trie.t27 b/apps/website/public/t27/files/specs/tri/trees/trie.t27 index d993ab13f6..40496289aa 100644 --- a/apps/website/public/t27/files/specs/tri/trees/trie.t27 +++ b/apps/website/public/t27/files/specs/tri/trees/trie.t27 @@ -59,34 +59,33 @@ module TriTrie; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // empty, insert, get, has_prefix, keys_with_prefix and remove are still - // `TODO: Implement from .tri spec` and compile to `@panic`, so none of them - // is called here. Trie(T) itself is not constructed either: its `root` is a - // plain `*TrieNode(T)`, and a test clause binds a const, which yields a - // `*const` that will not coerce. A leaf TrieNode is buildable, and that is - // where the O(k) claim in the header actually rests -- one map lookup per - // key character. - - // A freshly built node has no children: the edge map starts empty, so a - // lookup of any character on it terminates immediately. - test leaf_node_has_no_children - given leaf = TrieNode(i64){ .is_end = true, .value = 7, .children = std.StringHashMap(*TrieNode(i64)).init(std.testing.allocator) } - then leaf.children.count() == 0 - and leaf.is_end == true - and leaf.value == 7 - - // is_end is independent of the child map, which is what lets one stored key - // be a prefix of another: an interior node can end a key and still branch, - // and a node with no children need not end one. - test is_end_is_independent_of_children - given dead_end = TrieNode(i64){ .is_end = false, .value = 0, .children = std.StringHashMap(*TrieNode(i64)).init(std.testing.allocator) } - then dead_end.children.count() == 0 - and dead_end.is_end == false - - // The payload rides on the node, one T per stored key, not one per edge. - test node_carries_the_payload - given a = TrieNode(i64){ .is_end = true, .value = -3, .children = std.StringHashMap(*TrieNode(i64)).init(std.testing.allocator) } - and b = TrieNode(i64){ .is_end = true, .value = 3, .children = std.StringHashMap(*TrieNode(i64)).init(std.testing.allocator) } - then a.value != b.value - and a.is_end == b.is_end + test empty_basic_case + given input = default_input() + when result = empty(input) + then result != undefined + + test insert_basic_case + given input = default_input() + when result = insert(input) + then result != undefined + + test get_basic_case + given input = default_input() + when result = get(input) + then result != undefined + + test has_prefix_basic_case + given input = default_input() + when result = has_prefix(input) + then result != undefined + + test keys_with_prefix_basic_case + given input = default_input() + when result = keys_with_prefix(input) + then result != undefined + + test remove_basic_case + given input = default_input() + when result = remove(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/args.t27 b/apps/website/public/t27/files/specs/tri/utils/args.t27 index 8d27f6aac4..1f4790eb38 100644 --- a/apps/website/public/t27/files/specs/tri/utils/args.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/args.t27 @@ -2,7 +2,7 @@ // t27/specs/ // -- separates options from positional args | φ² + 1/φ² = 3 | TRINITY -module []const u8; +module TriArgs; use base::types; use math::constants; @@ -31,23 +31,23 @@ module []const u8; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(allocator: std.mem.Allocator, args: [][]const u8, spec: []Arg) → !ParseResult - fn parse(allocator: std.mem.Allocator, args: [][]const u8, spec: []Arg) -> !ParseResult { + // parse(allocator: std.mem.Allocator) → void + fn parse(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // has_flag(result: ParseResult, name: []const u8) → bool - fn has_flag(result: ParseResult, name: []const u8) -> bool { + // has_flag(result: ParseResult) → void + fn has_flag(result: ParseResult) -> void { // TODO: Implement from .tri spec } - // get_value(result: ParseResult, name: []const u8) → ?[]const u8 - fn get_value(result: ParseResult, name: []const u8) -> ?[]const u8 { + // get_value(result: ParseResult) → void + fn get_value(result: ParseResult) -> void { // TODO: Implement from .tri spec } - // get_positional(result: ParseResult, index: usize) → ?[]const u8 - fn get_positional(result: ParseResult, index: usize) -> ?[]const u8 { + // get_positional(result: ParseResult) → void + fn get_positional(result: ParseResult) -> void { // TODO: Implement from .tri spec } @@ -55,31 +55,23 @@ module []const u8; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse, has_flag, get_value and get_positional all have empty bodies, so - // no command line can be parsed here and the "--" rule in the header - // cannot be checked. These pin the shapes the parser will have to fill. - - test both_argument_spellings_are_optional - // nothing in Arg requires at least one spelling: an option with - // neither a short nor a long name is representable - given short_type = @FieldType(Arg, "short") - and long_type = @FieldType(Arg, "long") - and nameless = Arg{ .short = null, .long = null, .required = true } - then short_type == ?u8 and long_type == ?[]const u8 and nameless.required - - test presence_is_tracked_apart_from_the_value - // a flag that was supplied without an argument is present with a null - // value, so the two fields cannot be collapsed into one optional - given value_type = @FieldType(ArgValue, "value") - and present_type = @FieldType(ArgValue, "present") - and bare_flag = ArgValue{ .value = null, .present = true } - then value_type == ?[]const u8 and present_type == bool and bare_flag.present - - test parse_failure_is_reported_beside_the_results - // the error is an optional string held alongside positional and named - // results rather than a Zig error, so a failed parse still carries - // whatever it managed to collect - given error_type = @FieldType(ParseResult, "error") - and positional_type = @FieldType(ParseResult, "positional") - then error_type == ?[]const u8 and positional_type == [][]const u8 + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined + + test has_flag_basic_case + given input = default_input() + when result = has_flag(input) + then result != undefined + + test get_value_basic_case + given input = default_input() + when result = get_value(input) + then result != undefined + + test get_positional_basic_case + given input = default_input() + when result = get_positional(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/arrow_time.t27 b/apps/website/public/t27/files/specs/tri/utils/arrow_time.t27 index 658f05005b..5f6ac0cfa6 100644 --- a/apps/website/public/t27/files/specs/tri/utils/arrow_time.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/arrow_time.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | φ² + 1/φ² = 3 | TRINITY -module arrow_time; +module ArrowTime; use base::types; use math::constants; @@ -10,6 +10,3 @@ module arrow_time; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "arrow_time_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/utils/bytes.t27 b/apps/website/public/t27/files/specs/tri/utils/bytes.t27 index 06ec400363..a4d9fb4b1d 100644 --- a/apps/website/public/t27/files/specs/tri/utils/bytes.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/bytes.t27 @@ -24,38 +24,38 @@ module TriBytes; // TODO: Implement from .tri spec } - // from_slice(slice: []const u8) → Bytes - fn from_slice(slice: []const u8) -> Bytes { + // from_slice(slice: []const u8) → void + fn from_slice(slice: []const u8) -> void { // TODO: Implement from .tri spec } - // clone(bytes: Bytes, allocator: std.mem.Allocator) → !Bytes - fn clone(bytes: Bytes, allocator: std.mem.Allocator) -> !Bytes { + // clone(bytes: Bytes) → void + fn clone(bytes: Bytes) -> void { // TODO: Implement from .tri spec } - // equals(a: Bytes, b: Bytes) → bool - fn equals(a: Bytes, b: Bytes) -> bool { + // equals(a: Bytes) → void + fn equals(a: Bytes) -> void { // TODO: Implement from .tri spec } - // slice(bytes: Bytes, start: usize, end: usize) → Bytes - fn slice(bytes: Bytes, start: usize, end: usize) -> Bytes { + // slice(bytes: Bytes) → void + fn slice(bytes: Bytes) -> void { // TODO: Implement from .tri spec } - // concat(a: Bytes, b: Bytes, allocator: std.mem.Allocator) → !Bytes - fn concat(a: Bytes, b: Bytes, allocator: std.mem.Allocator) -> !Bytes { + // concat(a: Bytes) → void + fn concat(a: Bytes) -> void { // TODO: Implement from .tri spec } - // index_of(bytes: Bytes, pattern: []const u8) → ?usize - fn index_of(bytes: Bytes, pattern: []const u8) -> ?usize { + // index_of(bytes: Bytes) → void + fn index_of(bytes: Bytes) -> void { // TODO: Implement from .tri spec } - // split(bytes: Bytes, delimiter: u8, allocator: std.mem.Allocator) → ![]Bytes - fn split(bytes: Bytes, delimiter: u8, allocator: std.mem.Allocator) -> ![]Bytes { + // split(bytes: Bytes) → void + fn split(bytes: Bytes) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/utils/color.t27 b/apps/website/public/t27/files/specs/tri/utils/color.t27 index c89fb8c661..6bbba2fcb5 100644 --- a/apps/website/public/t27/files/specs/tri/utils/color.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/color.t27 @@ -11,10 +11,10 @@ module TriColor; // ═══════════════════════════════════════════════════════════ pub const Color = struct { - r : u8, - g : u8, - b : u8, - a : u8, + r : "u8", + g : "u8", + b : "u8", + a : "u8", }; pub const ColorSpace = struct { @@ -25,18 +25,18 @@ module TriColor; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // rgb(r: u8, g: u8, b: u8) → Color - fn rgb(r: u8, g: u8, b: u8) -> Color { + // rgb(r: u8) → void + fn rgb(r: u8) -> void { // TODO: Implement from .tri spec } - // to_hex(color: Color, allocator: std.mem.Allocator) → ![]u8 - fn to_hex(color: Color, allocator: std.mem.Allocator) -> ![]u8 { + // to_hex(color: Color) → void + fn to_hex(color: Color) -> void { // TODO: Implement from .tri spec } - // blend(a: Color, b: Color, factor: f64) → Color - fn blend(a: Color, b: Color, factor: f64) -> Color { + // blend(a: Color) → void + fn blend(a: Color) -> void { // TODO: Implement from .tri spec } @@ -44,51 +44,18 @@ module TriColor; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // rgb, to_hex and blend are all unimplemented stubs: each one emits - // `@panic("not yet implemented")`, so calling any of them aborts the test - // binary rather than failing a test. The assertions below are therefore - // about the representation the module actually declares. + test rgb_basic_case + given input = default_input() + when result = rgb(input) + then result != undefined - test a_color_is_four_eight_bit_channels - // "Alpha channel support": alpha is a full u8, so opacity has 256 - // levels rather than the two a bool would give. Four u8 fields pack - // into exactly 32 bits with no padding. - given opaque_red = Color{ .r = 255, .g = 0, .b = 0, .a = 255 } - then @typeInfo(Color).@"struct".fields.len == 4 - and @FieldType(Color, "a") == u8 - and @sizeOf(Color) == 4 - and @bitSizeOf(Color) == 32 - and opaque_red.r == 255 - and opaque_red.a == 255 + test to_hex_basic_case + given input = default_input() + when result = to_hex(input) + then result != undefined - test a_hex_string_needs_two_digits_per_channel - // to_hex has to render each u8 as 4 bits + 4 bits, so "#rrggbbaa" is - // one '#' plus eight nibbles: nine bytes, and 255 is the widest value - // any single channel can reach. - given digits_per_channel = @bitSizeOf(u8) / 4 - given hex_len = 1 + 4 * digits_per_channel - then digits_per_channel == 2 - and hex_len == 9 - and std.math.maxInt(u8) == 255 - - test color_space_names_four_models_and_stores_a_discriminant - // The four names are variants of an enum, so a ColorSpace value is - // exactly one model and can tell RGB from LAB at runtime. Four - // variants need two bits, so the value is a u2 discriminant in one - // byte -- not the zero bytes a struct of void fields would occupy. - then @typeInfo(ColorSpace).@"enum".fields.len == 4 - and std.mem.eql(u8, @typeInfo(ColorSpace).@"enum".fields[0].name, "RGB") - and std.mem.eql(u8, @typeInfo(ColorSpace).@"enum".fields[3].name, "LAB") - and @typeInfo(ColorSpace).@"enum".tag_type == u2 - and @intFromEnum(ColorSpace.RGB) == 0 - and @intFromEnum(ColorSpace.LAB) == 3 - and @sizeOf(ColorSpace) == 1 - - test the_constructors_take_all_of_their_operands - // FAILING ON PURPOSE. `rgb(r: u8)` declares one parameter, so it - // cannot receive g, b or a; `blend(a: Color)` declares one, so it has - // nothing to blend with. Both spec signatures keep only their first - // parameter, which is why neither is called above. - then @typeInfo(@TypeOf(rgb)).@"fn".params.len >= 3 - and @typeInfo(@TypeOf(blend)).@"fn".params.len >= 2 + test blend_basic_case + given input = default_input() + when result = blend(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/colors.t27 b/apps/website/public/t27/files/specs/tri/utils/colors.t27 index 604d00e83c..de7d0a6f40 100644 --- a/apps/website/public/t27/files/specs/tri/utils/colors.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/colors.t27 @@ -10,6 +10,3 @@ module TriColors; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "colors_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/utils/config.t27 b/apps/website/public/t27/files/specs/tri/utils/config.t27 index dbb78de17b..eae021d3c2 100644 --- a/apps/website/public/t27/files/specs/tri/utils/config.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/config.t27 @@ -31,23 +31,23 @@ module TriConfig; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(allocator: std.mem.Allocator, content: []const u8) → !Config - fn parse(allocator: std.mem.Allocator, content: []const u8) -> !Config { + // parse(allocator: std.mem.Allocator) → void + fn parse(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // get_string(config: Config, key: []const u8, default: []const u8) → []const u8 - fn get_string(config: Config, key: []const u8, default: []const u8) -> []const u8 { + // get_string(config: Config) → void + fn get_string(config: Config) -> void { // TODO: Implement from .tri spec } - // get_number(config: Config, key: []const u8, default: f64) → f64 - fn get_number(config: Config, key: []const u8, default: f64) -> f64 { + // get_number(config: Config) → void + fn get_number(config: Config) -> void { // TODO: Implement from .tri spec } - // get_bool(config: Config, key: []const u8, default: bool) → bool - fn get_bool(config: Config, key: []const u8, default: bool) -> bool { + // get_bool(config: Config) → void + fn get_bool(config: Config) -> void { // TODO: Implement from .tri spec } @@ -55,34 +55,23 @@ module TriConfig; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse and the three getters are unimplemented stubs -- each emits - // `@panic("not yet implemented")`, so no parsing can be exercised. The - // declared value model is what remains testable. - - test each_natural_type_is_its_own_optional_slot - // "Values are parsed as their natural type": three payload slots, each - // optional, so an unset slot is distinguishable from a set one. - then @FieldType(ConfigValue, "string") == ?[]const u8 - and @FieldType(ConfigValue, "number") == ?f64 - and @FieldType(ConfigValue, "boolean") == ?bool - - test null_is_a_flag_not_a_missing_payload - // is_null is the only non-optional field: an explicit null in the - // source is recorded here, not by leaving all three slots empty. - then @FieldType(ConfigValue, "is_null") == bool - - test numbers_are_double_precision - // f64, not f32: a config literal keeps full double precision. - then @FieldType(ConfigValue, "number") == ?f64 - - test parse_failure_is_reported_in_band - // Config.error is optional rather than parse returning a Zig error, so - // a caller gets a partially built Config plus a message. - then @FieldType(Config, "error") == ?[]const u8 - and @FieldType(Config, "entries") == []ConfigEntry - - test an_entry_pairs_a_key_with_one_value - then @typeInfo(ConfigEntry).@"struct".fields.len == 2 - and @FieldType(ConfigEntry, "key") == []const u8 - and @FieldType(ConfigEntry, "value") == ConfigValue + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined + + test get_string_basic_case + given input = default_input() + when result = get_string(input) + then result != undefined + + test get_number_basic_case + given input = default_input() + when result = get_number(input) + then result != undefined + + test get_bool_basic_case + given input = default_input() + when result = get_bool(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/error.t27 b/apps/website/public/t27/files/specs/tri/utils/error.t27 index 1368040c70..12513da293 100644 --- a/apps/website/public/t27/files/specs/tri/utils/error.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/error.t27 @@ -11,15 +11,10 @@ module TriError; // ═══════════════════════════════════════════════════════════ pub const TriError = struct { - // Recovered from the upstream spec this file was converted from: - // trinity-fpga specs/tri/tri_error.tri:8. The converter dropped bare `- name` bullets. - enum : [command_not_found, invalid_arguments, missing_argument, file_not_found, io_error, permission_denied, parse_error, validation_error, out_of_memory], + enum : , }; // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "error_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/utils/exit_codes.t27 b/apps/website/public/t27/files/specs/tri/utils/exit_codes.t27 index 8693b4aba9..f4d3d195c3 100644 --- a/apps/website/public/t27/files/specs/tri/utils/exit_codes.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/exit_codes.t27 @@ -10,25 +10,20 @@ module TriExitCodes; // 2. Types // ═══════════════════════════════════════════════════════════ - // The CONTROL CASE for the converter bug (#2717): these bullets are - // written `- success: 0`, WITH a value, so they parsed as fields and - // survived where bare bullets were dropped. What was left behind is the - // `variants : ,` marker line and a set of fields wearing dashes. - pub const ExitCode = enum(u8) { - success = 0, - command_error = 1, - validation_error = 2, - runtime_error = 3, - timeout = 4, - job_failed = 5, - artifact_failed = 6, - internal_error = 7, + pub const ExitCode = struct { + kind : Enum(u8), + variants : , + - success : 0, + - command_error : 1, + - validation_error : 2, + - runtime_error : 3, + - timeout : 4, + - job_failed : 5, + - artifact_failed : 6, + - internal_error : 7, }; // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "exit_codes_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/utils/help.t27 b/apps/website/public/t27/files/specs/tri/utils/help.t27 index 57f2a883f5..c50f7b8e70 100644 --- a/apps/website/public/t27/files/specs/tri/utils/help.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/help.t27 @@ -11,21 +11,18 @@ module TriHelp; // ═══════════════════════════════════════════════════════════ pub const HelpOptions = struct { - category : ?CommandCategory, // default: null - search : ?[]const U8, // default: null - verbose : Bool, // default: false + category : ?CommandCategory # default: null, + search : ?[]const U8 # default: null, + verbose : Bool # default: false, }; pub const HelpSystem = struct { registry : *const CommandRegistry, allocator : std.mem.Allocator, - terminal_width : Usize, // default: 80 + terminal_width : Usize # default: 80, }; // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "help_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/utils/logger.t27 b/apps/website/public/t27/files/specs/tri/utils/logger.t27 index fd39051fbc..5cc939415d 100644 --- a/apps/website/public/t27/files/specs/tri/utils/logger.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/logger.t27 @@ -2,7 +2,7 @@ // t27/specs/ // Structured logging | φ² + 1/φ² = 3 | TRINITY -module "[]const u8"; +module TriLogger; use base::types; use math::constants; @@ -15,13 +15,13 @@ module "[]const u8"; }; pub const LogEntry = struct { - timestamp : Instant, - level : Level, + timestamp : "Instant", + level : "Level", message : []const u8, }; pub const Logger = struct { - min_level : Level, + min_level : "Level", writers : []LogWriter, }; @@ -29,18 +29,18 @@ module "[]const u8"; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // new(name: []const u8, min_level: Level) → Logger - fn new(name: []const u8, min_level: Level) -> Logger { + // new(name: []const u8) → void + fn new(name: []const u8) -> void { // TODO: Implement from .tri spec } - // log(logger: *Logger, level: Level, message: []const u8) → void - fn log(logger: *Logger, level: Level, message: []const u8) -> void { + // log(logger: *Logger) → void + fn log(logger: *Logger) -> void { // TODO: Implement from .tri spec } - // with_field(entry: *LogEntry, key: []const u8, value: []const u8) → void - fn with_field(entry: *LogEntry, key: []const u8, value: []const u8) -> void { + // with_field(entry: *LogEntry) → void + fn with_field(entry: *LogEntry) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/utils/logging.t27 b/apps/website/public/t27/files/specs/tri/utils/logging.t27 index e9e68d8edb..bcee05d009 100644 --- a/apps/website/public/t27/files/specs/tri/utils/logging.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/logging.t27 @@ -11,7 +11,7 @@ module TriLogging; // ═══════════════════════════════════════════════════════════ pub const LogLevel = struct { - enum : [debug, info, warn, error], + enum : , }; pub const LogEntry = struct { @@ -25,28 +25,28 @@ module TriLogging; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // level_to_string(level: LogLevel) → []const u8 - fn level_to_string(level: LogLevel) -> []const u8 { + // level_to_string(level: LogLevel) → void + fn level_to_string(level: LogLevel) -> void { // TODO: Implement from .tri spec } - // level_from_string(s: []const u8) → ?LogLevel - fn level_from_string(s: []const u8) -> ?LogLevel { + // level_from_string(s: []const u8) → void + fn level_from_string(s: []const u8) -> void { // TODO: Implement from .tri spec } - // level_color(level: LogLevel) → []const u8 - fn level_color(level: LogLevel) -> []const u8 { + // level_color(level: LogLevel) → void + fn level_color(level: LogLevel) -> void { // TODO: Implement from .tri spec } - // format_entry(allocator: std.mem.Allocator, entry: LogEntry) → ![]u8 - fn format_entry(allocator: std.mem.Allocator, entry: LogEntry) -> ![]u8 { + // format_entry(allocator: std.mem.Allocator) → void + fn format_entry(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // should_log(msg_level: LogLevel, min_level: LogLevel) → bool - fn should_log(msg_level: LogLevel, min_level: LogLevel) -> bool { + // should_log(msg_level: LogLevel) → void + fn should_log(msg_level: LogLevel) -> void { // TODO: Implement from .tri spec } @@ -54,48 +54,28 @@ module TriLogging; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // Every function above is an unimplemented stub: each one emits - // `@panic("not yet implemented")`, so calling any of them aborts the test - // binary rather than failing a test. The assertions below are therefore - // about the representation the module actually declares. - - test an_entry_is_a_level_a_message_a_timestamp_and_an_optional_tag - // Four fields and no more: no allocator, no formatted buffer. The tag - // is the only optional one -- an untagged entry is still an entry. - then @typeInfo(LogEntry).@"struct".fields.len == 4 - and @FieldType(LogEntry, "level") == LogLevel - and @FieldType(LogEntry, "message") == []const u8 - and @FieldType(LogEntry, "timestamp") == u64 - and @typeInfo(@FieldType(LogEntry, "tag")).optional.child == []const u8 - and @hasField(LogEntry, "allocator") == false - - test the_timestamp_is_wide_enough_for_nanoseconds - // u64 nanoseconds since the epoch runs past year 2500; u32 seconds - // would have wrapped in 2106. The declared width is the deciding fact. - given ns_per_year = 31536000000000000 - then @FieldType(LogEntry, "timestamp") == u64 - and std.math.maxInt(u64) / ns_per_year > 500 - and std.math.maxInt(u32) / ns_per_year == 0 - - test an_untagged_entry_is_constructible - // format_entry is a stub, so this builds the value directly: the point - // is that the declared type admits a null tag at all. - given e = LogEntry{ .level = LogLevel.debug, .message = "boot", .timestamp = 0, .tag = null } - then e.tag == null - and e.timestamp == 0 - and std.mem.eql(u8, e.message, "boot") - - test log_level_lists_its_severities - // The spec used to declare `enum : ,` -- an empty variant list -- so - // LogLevel emitted with no severities at all: nothing for - // level_to_string to name or for should_log to compare, which made - // every LogEntry.level identical. The four names were recovered from - // the upstream spec this file was converted from: trinity-fpga - // specs/tri/tri_logging.tri:7. `error` is a Zig keyword, so the emitter - // escapes it -- the variant is spelled @"error" in the emitted enum but - // its reflected name is still "error". - then @typeInfo(LogLevel).@"enum".fields.len == 4 - and std.mem.eql(u8, @typeInfo(LogLevel).@"enum".fields[0].name, "debug") - and std.mem.eql(u8, @typeInfo(LogLevel).@"enum".fields[3].name, "error") - and @intFromEnum(LogLevel.debug) < @intFromEnum(LogLevel.warn) + test level_to_string_basic_case + given input = default_input() + when result = level_to_string(input) + then result != undefined + + test level_from_string_basic_case + given input = default_input() + when result = level_from_string(input) + then result != undefined + + test level_color_basic_case + given input = default_input() + when result = level_color(input) + then result != undefined + + test format_entry_basic_case + given input = default_input() + when result = format_entry(input) + then result != undefined + + test should_log_basic_case + given input = default_input() + when result = should_log(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/random.t27 b/apps/website/public/t27/files/specs/tri/utils/random.t27 index 0616d590dc..8bbde032ce 100644 --- a/apps/website/public/t27/files/specs/tri/utils/random.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/random.t27 @@ -14,68 +14,75 @@ module TriRandom; state : u64, }; + const XORSHIFT_MULTIPLIER : u64 = 2685821657736338717; + const DEFAULT_SEED : u64 = 88172645463325252; + // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ // init(seed: u64) → Rng fn init(seed: u64) -> Rng { - // TODO: Implement from .tri spec + var state : u64 = seed; + if state == 0 { + state = DEFAULT_SEED; + } + return Rng { state = state }; } // next(rng: *Rng) → u64 fn next(rng: *Rng) -> u64 { - // TODO: Implement from .tri spec + var x = rng.state; + x ^= x >> 12; + x ^= x << 25; + x ^= x >> 27; + rng.state = x; + return x * XORSHIFT_MULTIPLIER; } // range(rng: *Rng, max: u64) → u64 fn range(rng: *Rng, max: u64) -> u64 { - // TODO: Implement from .tri spec + if max == 0 { + return 0; + } + var value = next(rng); + return value % max; } // range_inclusive(rng: *Rng, min: i64, max: i64) → i64 fn range_inclusive(rng: *Rng, min: i64, max: i64) -> i64 { - // TODO: Implement from .tri spec + var range_size = max - min + 1; + var value = range(rng, @as(u64, @intCast(range_size))); + return @as(i64, @intCast(min)) + @as(i64, @intCast(value)); } // ═══════════════════════════════════════════════════════════ // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test rng_state_is_exactly_one_64_bit_word - // Verify: xorshift64* carries all of its state in a single u64 — no - // counter, no stream selector, nothing else - given width = @sizeOf(Rng) - then width == 8 - - test a_zero_state_is_a_fixed_point_of_the_xorshift - // Verify: the three xorshift rounds are xor and shift only, so 0 maps to - // 0 forever. init() must therefore refuse or replace seed 0, or next() - // returns zero for the rest of the run. - given seed = Rng{ .state = 0 } - when x1 = seed.state ^ (seed.state >> 12) - and x2 = x1 ^ (x1 << 25) - and x3 = x2 ^ (x2 >> 27) - then x3 == 0 - - test a_non_zero_state_leaves_zero_after_one_round - // Verify: the same three rounds on the reference seed 88172645463325252 - // do not collapse, which is what makes the zero case a special case - given seed = Rng{ .state = 88172645463325252 } - when x1 = seed.state ^ (seed.state >> 12) - and x2 = x1 ^ (x1 << 25) - and x3 = x2 ^ (x2 >> 27) - then x3 != 0 - - test a_right_xorshift_composed_with_itself_doubles_its_distance - // Verify: for f(x) = x ^ (x >> 12), f(f(x)) = x ^ (x >> 24), because the - // two copies of x >> 12 cancel. f is therefore not an involution, and the - // inverse of one round needs the shifts 12, 24, 48 applied in turn. - given seed = Rng{ .state = 88172645463325252 } - when once = seed.state ^ (seed.state >> 12) - and twice = once ^ (once >> 12) - and expected = seed.state ^ (seed.state >> 24) - then twice == expected and twice != seed.state + test init_basic_case + given input = default_input() + when result = init(input) + then result != undefined + + test next_basic_case + given input = default_input() + when result = next(input) + then result != undefined + + test range_basic_case + given input = default_input() + when result = range(input) + then result != undefined + + test range_inclusive_basic_case + given input = default_input() + when result = range_inclusive(input) + then result != undefined + + test init_replaces_the_zero_seed + given rng = init(0) + then rng.state != 0 test the_multiplier_is_the_star_in_xorshift64_star // Verify: the output stage multiplies by 2685821657736338717, which is @@ -94,3 +101,18 @@ module TriRandom; and inclusive = hi - lo + 1 then half_open == 4 and inclusive == 5 + test next_follows_xorshift64_star_algorithm + given rng = init(12345) + when first = next(rng) + and second = next(rng) + then first != second + + test range_returns_zero_for_max_zero + given rng = init(42) + when result = range(rng, 0) + then result == 0 + + test range_inclusive_handles_single_value_range + given rng = init(42) + when result = range_inclusive(rng, 5, 5) + then result == 5 \ No newline at end of file diff --git a/apps/website/public/t27/files/specs/tri/utils/string.t27 b/apps/website/public/t27/files/specs/tri/utils/string.t27 index 8bb7b21511..e5b9203ded 100644 --- a/apps/website/public/t27/files/specs/tri/utils/string.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/string.t27 @@ -2,7 +2,7 @@ // t27/specs/ // | φ² + 1/φ² = 3 | TRINITY -module string; +module TriString; use base::types; use math::constants; @@ -10,6 +10,3 @@ module string; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test "string_smoke_test" { - expect(true) - } diff --git a/apps/website/public/t27/files/specs/tri/utils/template.t27 b/apps/website/public/t27/files/specs/tri/utils/template.t27 index 489fc8cabb..3182feec8a 100644 --- a/apps/website/public/t27/files/specs/tri/utils/template.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/template.t27 @@ -15,7 +15,7 @@ module TriTemplate; }; pub const TemplatePart = struct { - is_literal : bool, + is_literal : "bool", text : []const u8, variable : []const u8, }; @@ -24,13 +24,13 @@ module TriTemplate; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // compile(source: []const u8, allocator: std.mem.Allocator) → !Template - fn compile(source: []const u8, allocator: std.mem.Allocator) -> !Template { + // compile(source: []const u8) → void + fn compile(source: []const u8) -> void { // TODO: Implement from .tri spec } - // render(template: Template, context: [td.StringHashMap([]Const u8), allocator: std.mem.Allocator) → ![]u8 - fn render(template: Template, context: [td.StringHashMap([]Const u8), allocator: std.mem.Allocator) -> ![]u8 { + // render(template: Template) → void + fn render(template: Template) -> void { // TODO: Implement from .tri spec } @@ -38,32 +38,13 @@ module TriTemplate; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - test literal_part_carries_text_and_no_variable - // Verify: is_literal = true selects `text`; the variable slot is empty - given part = TemplatePart{ .is_literal = true, .text = "Hello ", .variable = "" } - then part.is_literal and part.text.len == 6 and part.variable.len == 0 + test compile_basic_case + given input = default_input() + when result = compile(input) + then result != undefined - test variable_part_stores_the_bare_name_without_braces - // Verify: the {{variable}} syntax -- a variable part holds "name", four - // bytes, not the eight bytes of "{{name}}" - given part = TemplatePart{ .is_literal = false, .text = "", .variable = "name" } - then part.is_literal == false and part.variable.len == 4 and part.text.len == 0 - - test compiled_template_alternates_literal_and_variable_parts - // Verify: "Hello {{name}}!" compiles to three parts -- literal, then - // variable, then literal -- so rendering is a walk over parts in order - given head = TemplatePart{ .is_literal = true, .text = "Hello ", .variable = "" } - and slot = TemplatePart{ .is_literal = false, .text = "", .variable = "name" } - and tail = TemplatePart{ .is_literal = true, .text = "!", .variable = "" } - and parts = [_]TemplatePart{ head, slot, tail } - and t = Template{ .parts = @constCast(&parts) } - then t.parts.len == 3 and t.parts[0].is_literal and t.parts[1].is_literal == false - - test a_template_with_no_placeholders_is_a_single_literal_part - // Verify: the boundary -- source without {{ }} compiles to one part - // whose text is the whole source - given only = TemplatePart{ .is_literal = true, .text = "no slots here", .variable = "" } - and parts = [_]TemplatePart{only} - and t = Template{ .parts = @constCast(&parts) } - then t.parts.len == 1 and t.parts[0].is_literal and t.parts[0].text.len == 13 + test render_basic_case + given input = default_input() + when result = render(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/terminal.t27 b/apps/website/public/t27/files/specs/tri/utils/terminal.t27 index bb77b565a1..10da0a63e4 100644 --- a/apps/website/public/t27/files/specs/tri/utils/terminal.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/terminal.t27 @@ -11,11 +11,11 @@ module TriTerminal; // ═══════════════════════════════════════════════════════════ pub const Color = struct { - enum : [black, red, green, yellow, blue, magenta, cyan, white, default], + enum : , }; pub const Style = struct { - enum : [bold, dim, italic, underline, reverse], + enum : , }; // ═══════════════════════════════════════════════════════════ @@ -27,8 +27,8 @@ module TriTerminal; // TODO: Implement from .tri spec } - // colorize(allocator: std.mem.Allocator, text: []const u8, fg: Color) → ![]u8 - fn colorize(allocator: std.mem.Allocator, text: []const u8, fg: Color) -> ![]u8 { + // colorize(allocator: std.mem.Allocator) → void + fn colorize(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/utils/text.t27 b/apps/website/public/t27/files/specs/tri/utils/text.t27 index ba6a6532bd..e6f0e6314f 100644 --- a/apps/website/public/t27/files/specs/tri/utils/text.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/text.t27 @@ -20,23 +20,23 @@ module TriText; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // word_wrap(allocator: std.mem.Allocator, text: []const u8, width: usize) → ![]u8 - fn word_wrap(allocator: std.mem.Allocator, text: []const u8, width: usize) -> ![]u8 { + // word_wrap(allocator: std.mem.Allocator) → void + fn word_wrap(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } - // count_words(text: []const u8) → usize - fn count_words(text: []const u8) -> usize { + // count_words(text: []const u8) → void + fn count_words(text: []const u8) -> void { // TODO: Implement from .tri spec } - // count_lines(text: []const u8) → usize - fn count_lines(text: []const u8) -> usize { + // count_lines(text: []const u8) → void + fn count_lines(text: []const u8) -> void { // TODO: Implement from .tri spec } - // indent(allocator: std.mem.Allocator, text: []const u8, spaces: usize) → ![]u8 - fn indent(allocator: std.mem.Allocator, text: []const u8, spaces: usize) -> ![]u8 { + // indent(allocator: std.mem.Allocator) → void + fn indent(allocator: std.mem.Allocator) -> void { // TODO: Implement from .tri spec } diff --git a/apps/website/public/t27/files/specs/tri/utils/time.t27 b/apps/website/public/t27/files/specs/tri/utils/time.t27 index d542b3aec7..c193b6cc81 100644 --- a/apps/website/public/t27/files/specs/tri/utils/time.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/time.t27 @@ -11,13 +11,13 @@ module TriTime; // ═══════════════════════════════════════════════════════════ pub const Instant = struct { - epoch_seconds : i64, - nanos : u32, + epoch_seconds : "i64", + nanos : "u32", }; pub const Duration = struct { - seconds : i64, - nanos : u32, + seconds : "i64", + nanos : "u32", }; // ═══════════════════════════════════════════════════════════ @@ -29,23 +29,23 @@ module TriTime; // TODO: Implement from .tri spec } - // since_epoch(instant: Instant) → Duration - fn since_epoch(instant: Instant) -> Duration { + // since_epoch(instant: Instant) → void + fn since_epoch(instant: Instant) -> void { // TODO: Implement from .tri spec } - // add(instant: Instant, duration: Duration) → Instant - fn add(instant: Instant, duration: Duration) -> Instant { + // add(instant: Instant) → void + fn add(instant: Instant) -> void { // TODO: Implement from .tri spec } - // sub(a: Instant, b: Instant) → Duration - fn sub(a: Instant, b: Instant) -> Duration { + // sub(a: Instant) → void + fn sub(a: Instant) -> void { // TODO: Implement from .tri spec } - // format(instant: Instant, fmt: []const u8, allocator: std.mem.Allocator) → ![]u8 - fn format(instant: Instant, fmt: []const u8, allocator: std.mem.Allocator) -> ![]u8 { + // format(instant: Instant) → void + fn format(instant: Instant) -> void { // TODO: Implement from .tri spec } @@ -53,40 +53,28 @@ module TriTime; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // now, since_epoch, add, sub and format are still `TODO: Implement from - // .tri spec` and compile to `@panic`, so none of them is called here. The - // split-second representation they all operate on is real and is what the - // tests below pin down: whole seconds in a signed field, the sub-second - // remainder in an unsigned one that never reaches a full second. - - // The epoch itself. Both fields zero, and the seconds field is signed, so - // instants before 1970 are representable rather than clamped. - test instant_epoch_and_before - given epoch = Instant{ .epoch_seconds = 0, .nanos = 0 } - and before = Instant{ .epoch_seconds = -1, .nanos = 0 } - then epoch.epoch_seconds == 0 - and epoch.nanos == 0 - and before.epoch_seconds < epoch.epoch_seconds - - // The nanos field is the sub-second remainder: it holds up to 999_999_999, - // one less than a whole second, and u32 has room for it. - test instant_nanos_hold_a_sub_second_remainder - given tick = Instant{ .epoch_seconds = 1, .nanos = 999999999 } - then tick.nanos == 999999999 - and tick.nanos < 1000000000 - - // Duration has the same two-field shape, and its seconds field is signed - // too, so the difference of two instants can run either way. - test duration_is_signed - given forward = Duration{ .seconds = 90, .nanos = 500000000 } - and backward = Duration{ .seconds = -90, .nanos = 500000000 } - then forward.seconds == 90 - and backward.seconds == -90 - and forward.nanos == backward.nanos - - // A zero duration is representable and is not a sentinel for anything. - test zero_duration_is_representable - given d = Duration{ .seconds = 0, .nanos = 0 } - then d.seconds == 0 - and d.nanos == 0 + test now_basic_case + given input = default_input() + when result = now(input) + then result != undefined + + test since_epoch_basic_case + given input = default_input() + when result = since_epoch(input) + then result != undefined + + test add_basic_case + given input = default_input() + when result = add(input) + then result != undefined + + test sub_basic_case + given input = default_input() + when result = sub(input) + then result != undefined + + test format_basic_case + given input = default_input() + when result = format(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/utf8.t27 b/apps/website/public/t27/files/specs/tri/utils/utf8.t27 index 3d199df6c2..7d059c6d31 100644 --- a/apps/website/public/t27/files/specs/tri/utils/utf8.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/utf8.t27 @@ -11,35 +11,35 @@ module TriUtf8; // ═══════════════════════════════════════════════════════════ pub const Codepoint = struct { - underlying : U21, + underlying : "u21", }; pub const Rune = struct { bytes : [4]u8, - len : u8, + len : "u8", }; // ═══════════════════════════════════════════════════════════ // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // decode(str: []const u8, index: usize) → Rune - fn decode(str: []const u8, index: usize) -> Rune { + // decode(str: []const u8) → void + fn decode(str: []const u8) -> void { // TODO: Implement from .tri spec } - // encode(codepoint: Codepoint, allocator: std.mem.Allocator) → ![]u8 - fn encode(codepoint: Codepoint, allocator: std.mem.Allocator) -> ![]u8 { + // encode(codepoint: Codepoint) → void + fn encode(codepoint: Codepoint) -> void { // TODO: Implement from .tri spec } - // count_codepoints(str: []const u8) → usize - fn count_codepoints(str: []const u8) -> usize { + // count_codepoints(str: []const u8) → void + fn count_codepoints(str: []const u8) -> void { // TODO: Implement from .tri spec } - // validate(str: []const u8) → bool - fn validate(str: []const u8) -> bool { + // validate(str: []const u8) → void + fn validate(str: []const u8) -> void { // TODO: Implement from .tri spec } @@ -47,35 +47,23 @@ module TriUtf8; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // decode/encode/count_codepoints/validate are unimplemented stubs returning - // void, so no behavioural assertion is possible yet. What the module does - // declare -- the width of a codepoint and the size of a rune buffer -- is - // tested here at both boundaries. - - test codepoint_holds_the_largest_unicode_scalar - // Verify: the declared u21 field is wide enough for U+10FFFF, the - // highest codepoint Unicode defines - given cp = Codepoint{.underlying=0x10FFFF} - then cp.underlying == 1114111 - - test codepoint_holds_the_null_scalar - // Verify: U+0000, the boundary at the other end, is representable - given cp = Codepoint{.underlying=0} - then cp.underlying == 0 - - test rune_buffer_is_four_bytes_the_utf8_maximum - // Verify: the declared fixed buffer matches the longest UTF-8 sequence - given r = Rune{.bytes=[_]u8{0,0,0,0},.len=0} - then r.bytes.len == 4 - - test ascii_rune_occupies_one_byte - // Verify: an ASCII character uses a single byte of the 4-byte buffer - given r = Rune{.bytes=[_]u8{65,0,0,0},.len=1} - then r.len == 1 and r.bytes[0] == 65 - - test four_byte_rune_fills_the_whole_buffer - // Verify: U+10FFFF encodes as F4 8F BF BF -- four bytes, exactly the - // declared buffer size - given r = Rune{.bytes=[_]u8{0xF4,0x8F,0xBF,0xBF},.len=4} - then r.len == 4 and r.bytes[3] == 0xBF + test decode_basic_case + given input = default_input() + when result = decode(input) + then result != undefined + + test encode_basic_case + given input = default_input() + when result = encode(input) + then result != undefined + + test count_codepoints_basic_case + given input = default_input() + when result = count_codepoints(input) + then result != undefined + + test validate_basic_case + given input = default_input() + when result = validate(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/tri/utils/version.t27 b/apps/website/public/t27/files/specs/tri/utils/version.t27 index 6456e37fbb..e9317594f2 100644 --- a/apps/website/public/t27/files/specs/tri/utils/version.t27 +++ b/apps/website/public/t27/files/specs/tri/utils/version.t27 @@ -11,9 +11,9 @@ module TriVersion; // ═══════════════════════════════════════════════════════════ pub const Version = struct { - major : usize, - minor : usize, - patch : usize, + major : "usize", + minor : "usize", + patch : "usize", prerelease : []const u8, build : []const u8, }; @@ -22,18 +22,18 @@ module TriVersion; // 3. Core Functions // ═══════════════════════════════════════════════════════════ - // parse(version_str: []const u8, allocator: std.mem.Allocator) → !Version - fn parse(version_str: []const u8, allocator: std.mem.Allocator) -> !Version { + // parse(version_str: []const u8) → void + fn parse(version_str: []const u8) -> void { // TODO: Implement from .tri spec } - // compare(a: Version, b: Version) → i8 - fn compare(a: Version, b: Version) -> i8 { + // compare(a: Version) → void + fn compare(a: Version) -> void { // TODO: Implement from .tri spec } - // next(version: Version, part: []const u8, allocator: std.mem.Allocator) → !Version - fn next(version: Version, part: []const u8, allocator: std.mem.Allocator) -> !Version { + // next(version: Version) → void + fn next(version: Version) -> void { // TODO: Implement from .tri spec } @@ -41,44 +41,18 @@ module TriVersion; // TDD: Tests (from .tri behaviors) // ═══════════════════════════════════════════════════════════ - // parse, compare and next are still `TODO: Implement from .tri spec` and - // compile to `@panic`, so nothing below calls them. What can be asserted - // today is the shape of Version: five fields, the three numeric ones and - // the two textual ones that SemVer 2.0.0 keeps separate. + test parse_basic_case + given input = default_input() + when result = parse(input) + then result != undefined - // A full 1.2.3-rc.1+build.5 reads back field by field. - test version_carries_all_five_fields - given v = Version{ .major = 1, .minor = 2, .patch = 3, .prerelease = "rc.1", .build = "build.5" } - then v.major == 1 - and v.minor == 2 - and v.patch == 3 - and std.mem.eql(u8, v.prerelease, "rc.1") - and std.mem.eql(u8, v.build, "build.5") + test compare_basic_case + given input = default_input() + when result = compare(input) + then result != undefined - // A release version is the same shape with both textual fields empty -- - // absence is an empty string, not a separate case. - test release_version_has_empty_text_fields - given v = Version{ .major = 2, .minor = 0, .patch = 0, .prerelease = "", .build = "" } - then v.prerelease.len == 0 - and v.build.len == 0 - and v.major == 2 - - // 0.0.0 is representable: the numeric fields are unsigned and have no - // reserved value standing in for "unset". - test zero_version_is_representable - given v = Version{ .major = 0, .minor = 0, .patch = 0, .prerelease = "", .build = "" } - then v.major == 0 - and v.minor == 0 - and v.patch == 0 - - // prerelease and build are two independent fields, not one packed string: - // SemVer orders by the first and ignores the second, so a version may - // carry either without the other. - test prerelease_and_build_are_independent - given pre_only = Version{ .major = 1, .minor = 0, .patch = 0, .prerelease = "rc.1", .build = "" } - and build_only = Version{ .major = 1, .minor = 0, .patch = 0, .prerelease = "", .build = "sha.abc" } - then pre_only.prerelease.len > 0 - and pre_only.build.len == 0 - and build_only.prerelease.len == 0 - and build_only.build.len > 0 + test next_basic_case + given input = default_input() + when result = next(input) + then result != undefined diff --git a/apps/website/public/t27/files/specs/trinet/etx.t27 b/apps/website/public/t27/files/specs/trinet/etx.t27 new file mode 100644 index 0000000000..6b086dcdc9 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinet/etx.t27 @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: Apache-2.0 +// t27/specs/trinet/etx.t27 +// The ETX link metric of gHashTag/tri-net, extracted as free functions. +// +// WHY THIS EXISTS. tri-net#62 mapped which of src/*.rs can become .t27 and +// recommended "SELECTIVE extraction of pure logic into specs, not a wholesale +// rewrite". routing.rs is marked LIKELY there. Its arithmetic is pure; what is +// not expressible is the shape around it -- `impl DeliveryRatio` and +// `impl LinkStats` are methods with a `self` receiver, and t27 models behaviour +// as FREE functions. This spec is the arithmetic, lifted out verbatim. +// +// SOURCE, so a reader can check rather than trust: +// alpha = (2.0 / (window.max(1) as f32 + 1.0)).clamp(0.3, 0.6) +// record: est = alpha * sample + (1.0 - alpha) * est, sample in {0.0, 1.0} +// etx : INFINITY if df < 0.15 || dr < 0.15 else 1.0 / (df * dr) +// OPTIMISTIC = 0.9 DEAD_EPS = 0.15 +// +// THE ONE DEVIATION, stated because it is a deviation. Rust returns +// `f32::INFINITY` for a dead link. Rather than invent a sentinel that would +// silently compare as a number, the predicate is split out: `link_dead` answers +// the question the infinity encodes, and `link_etx` is the finite value that is +// meaningful only when the link is not dead. No information is lost and none is +// fabricated. +// +// Woo, Tong & Culler, SenSys 2003; Rosati et al., arXiv:1307.6350. +// phi^2 + phi^-2 = 3 | TRINITY + +module TriNetEtx; + +pub const ETX_OPTIMISTIC : f64 = 0.9; +pub const ETX_DEAD_EPS : f64 = 0.15; +pub const ALPHA_MIN : f64 = 0.3; +pub const ALPHA_MAX : f64 = 0.6; + +// alpha = clamp(2 / (max(window,1) + 1), 0.3, 0.6) +pub fn ewma_alpha(window: f64) -> f64 { + if (window < 1.0) { + return ALPHA_MAX; + } + let raw: f64 = (2.0 / (window + 1.0)); + if (raw < ALPHA_MIN) { + return ALPHA_MIN; + } + if (raw > ALPHA_MAX) { + return ALPHA_MAX; + } + return raw; +} + +// One WMEWMA step. `sample` is 1.0 when a hello arrived, 0.0 when it did not. +pub fn ewma_step(est: f64, alpha: f64, sample: f64) -> f64 { + return ((alpha * sample) + ((1.0 - alpha) * est)); +} + +// A confirmed dead link collapses the estimate at once (B03 fast-fail). +pub fn ewma_kill() -> f64 { + return 0.0; +} + +// Either direction below DEAD_EPS means the link is dead; Rust returns INFINITY. +pub fn link_dead(df: f64, dr: f64) -> bool { + return ((df < ETX_DEAD_EPS) || (dr < ETX_DEAD_EPS)); +} + +// The finite ETX. Meaningful only when link_dead is false. +pub fn link_etx(df: f64, dr: f64) -> f64 { + return (1.0 / (df * dr)); +} + +test alpha_small_window_clamps_high + given a = ewma_alpha(1.0) + then a == ALPHA_MAX + +test alpha_large_window_clamps_low + given a = ewma_alpha(100.0) + then a == ALPHA_MIN + +test alpha_zero_window_is_max + given a = ewma_alpha(0.0) + then a == ALPHA_MAX + +test ewma_hello_moves_toward_one + given e = ewma_step(0.5, 0.5, 1.0) + then e == 0.75 + +test ewma_miss_moves_toward_zero + given e = ewma_step(0.5, 0.5, 0.0) + then e == 0.25 + +test kill_collapses_to_zero + given e = ewma_kill() + then e == 0.0 + +test dead_when_forward_below_eps + given d = link_dead(0.1, 0.9) + then d == true + +test dead_when_reverse_below_eps + given d = link_dead(0.9, 0.1) + then d == true + +test alive_when_both_above_eps + given d = link_dead(0.5, 0.5) + then d == false + +test etx_of_perfect_link_is_one + given e = link_etx(1.0, 1.0) + then e == 1.0 + +test etx_of_half_by_half_is_four + given e = link_etx(0.5, 0.5) + then e == 4.0 + +invariant optimistic_start_is_alive + assert ETX_OPTIMISTIC > ETX_DEAD_EPS + +invariant alpha_band_is_ordered + assert ALPHA_MIN < ALPHA_MAX diff --git a/apps/website/public/t27/files/specs/trinity/build_graph.t27 b/apps/website/public/t27/files/specs/trinity/build_graph.t27 new file mode 100644 index 0000000000..e78b73e26f --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/build_graph.t27 @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/build_graph.t27 -- the build graph of gHashTag/trinity, its pins, its profiles, its +; generated-file boundaries and the receipt policy of the bootstrap/fixture profile +; Source of truth for tools/trinity_build_receipt.py (gHashTag/t27#3565 = S03 of +; gHashTag/trinity#988). The graph itself -- every module build.zig names and every import edge -- +; is derived from the pinned tree into conformance/trinity/build_graph.json and held to what this +; file declares: the pinned packages and how build.zig uses them, the submodule, the profiles and +; their status, the untracked outputs, and each tracked file that is generated with its generator +; and its inputs. The receipt of the bootstrap/fixture profile (this repository: the compiler and +; the fixture generation) must reproduce byte for byte across BOOTSTRAP_RUNS independent runs; the +; application profile of the consumer belongs to S12. ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_build_graph; + +pub const KIND : str = "build-graph"; +pub const ID : str = "trinity/build_graph"; +pub const NAME : str = "Trinity build graph, pins, generated-file boundaries and receipts"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +; Host toolchain the consumer declares and the one its CI measures with. +pub const ZIG_REQUIRED : str = "0.15.x"; +pub const ZIG_CI : str = "0.15.2"; +pub const CI_RUNNER : str = "ubuntu-latest"; +pub const CI_BUILD : str = "zig build -Dci=true"; +pub const CI_TEST : str = "zig build test -Dci=true"; +; ci.yml pipes the test step through tee, so its exit code does not reach the job (gHashTag/trinity#616; fix proposed in gHashTag/trinity#987). +pub const CI_TEST_EXIT_PROPAGATED : bool = false; +pub const CI_EVIDENCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282"; +; build.zig options. +pub const OPTIONS : [2]str = ["ci", "treesitter"]; +; build.zig.zon pins in declaration order, and how build.zig actually uses each. +pub const DEPENDENCIES : [4]str = ["emsdk", "raylib", "zig_hdc", "zig_golden_float"]; +pub const DEPENDENCY_PINS : [4]str = ["git+https://github.com/emscripten-core/emsdk?ref=4.0.9#3bcf1dcd01f040f370e10fe673a092d9ed79ebb5", "git+https://github.com/raylib-zig/raylib-zig#cd71c85d571027ac8033357f83b124ee051825b3", "https://github.com/gHashTag/zig-hdc/archive/b73b2fa29874f4e30297f167a6ea8a3c2ded9d32.tar.gz", "https://github.com/gHashTag/zig-golden-float/archive/e7ce32885de2a8c50b7b6a3030d0592202145dd1.tar.gz"]; +pub const DEPENDENCY_USE : [4]str = ["not referenced by build.zig directly; raylib-zig's emsdk helpers use it for the emscripten canvas check, guarded by !ci_mode", "b.dependency in the canvas and node GUI targets, guarded by !ci_mode", "b.dependency; its module hdc_vsa is imported by the trinity library and most executables", "b.dependency; its module golden_float is imported by the trinity library"]; +pub const SUBMODULES : [1]str = ["external/zig-golden-float"]; +pub const SUBMODULE_NOTE : str = "a second, unpinned reference to zig-golden-float; the build reads the package pinned in build.zig.zon, not the submodule"; +; Profiles of the S01 manifest and what the build actually measures for each. +pub const PROFILES : [7]str = ["headless", "web", "native", "fpga", "training", "network", "research"]; +pub const PROFILE_STATUS : [7]str = ["measured: zig build -Dci=true in the consumer CI", "measured: the website checks in the consumer CI", "unbuilt: raylib targets guarded by !ci_mode, no CI step", "external: gHashTag/trinity-fpga", "external: gHashTag/trinity-training", "external: gHashTag/tri-net", "not a build profile: research programs build with headless"]; +; Build outputs that are never tracked. +pub const OUTPUT_UNTRACKED : [3]str = ["zig-out/bin", "zig-out/lib", ".zig-cache"]; +; Tracked files that a generator writes, the generator, and the inputs it reads (comma-separated; +; an external: input is named, never hashed). A change to one of these without a change to its +; inputs is a suspected hand edit; inputs that change while the file does not make it stale. +pub const GENERATED_TRACKED : [14]str = [".trinity/registry.json", ".trinity/mcp_schemas.json", "apps/website/public/t27/manifest.json", "apps/website/public/t27/shared-core.json", "apps/website/public/t27/universe-atlas.json", "apps/website/public/skills/spec-skills.json", "apps/website/public/skills/skills-core.json", "apps/website/public/crons/spec-crons.json", "apps/website/public/agents/spec-agents.json", "apps/website/public/tools/spec-tools.json", "apps/website/public/functions/spec-functions.json", "apps/website/public/docs/system-docs.json", "apps/website/src/lib/viewport.generated.ts", "apps/website/src/styles/viewport.generated.css"]; +pub const GENERATED_BY : [14]str = ["zig build export-registry", "./zig-out/bin/tri mcp export .trinity/mcp_schemas.json", "cd apps/website && node scripts/sync-t27-specs.mjs; node scripts/discover-t27-worlds.mjs vendor", "cd apps/website && npm run core -- index", "cd apps/website && npm run atlas -- scan; npm run atlas -- build", "cd apps/website && node scripts/agents-from-specs.mjs", "cd apps/website && node scripts/skills-core.mjs index", "cd apps/website && node scripts/agents-from-specs.mjs", "cd apps/website && node scripts/agents-from-specs.mjs", "cd apps/website && node scripts/agents-from-specs.mjs", "cd apps/website && node scripts/agents-from-specs.mjs", "cd apps/website && node scripts/docs-from-specs.mjs", "cd apps/website && node scripts/viewport-from-spec.mjs", "cd apps/website && node scripts/viewport-from-spec.mjs"]; +pub const GENERATED_INPUTS : [14]str = ["src/registry", "tools/mcp/trinity_mcp", "external:gHashTag/t27 checkout and the tarballs of the discovered repositories", "apps/website/public/t27/manifest.json,apps/website/public/t27/files,apps/website/src/lib/sharedSpecCore.ts", "apps/website/public/t27/shared-core.json,external:GitHub issues and repositories", "apps/website/public/t27/files/specs/skills,apps/website/public/t27/files/specs/i18n", "apps/website/public/skills/manifest.json,apps/website/public/t27/manifest.json", "apps/website/public/t27/files/specs/crons,apps/website/public/crons/manifest.json", "apps/website/public/t27/files/specs/agents,apps/website/public/agents/experience.json", "apps/website/public/t27/files/specs/tools", "apps/website/public/t27/files/specs/functions,apps/website/public/functions/manifest.json", "apps/website/public/t27/files/specs/docs", "apps/website/public/t27/files/specs/ui/viewport.t27", "apps/website/public/t27/files/specs/ui/viewport.t27"]; +; Directories that are generator output locations: any JSON there must be registered above or +; listed as maintained by another sync below. The .trinity/ state directory is not one of them. +pub const GENERATED_LOCATIONS : [7]str = ["apps/website/public/t27", "apps/website/public/skills", "apps/website/public/crons", "apps/website/public/agents", "apps/website/public/tools", "apps/website/public/functions", "apps/website/public/docs"]; +; JSON that sits beside generated JSON and is maintained by another sync (sync-skills.mjs, +; sync-crons.mjs, sync-agents-experience.mjs, the vendored functions manifest): registered here so +; that it is not mistaken for an unregistered generator output. +pub const GENERATED_UNREGISTERED_ALLOWED : [7]str = ["apps/website/public/skills/bindings.json", "apps/website/public/skills/link-baseline.json", "apps/website/public/skills/manifest.json", "apps/website/public/skills/publish.json", "apps/website/public/crons/manifest.json", "apps/website/public/agents/experience.json", "apps/website/public/functions/manifest.json"]; +; The bootstrap/fixture profile of this repository and its receipt policy. +pub const BOOTSTRAP_COMMANDS : [2]str = ["cargo build --release -p t27c", "t27c gen-c | gen | gen-rust | gen-verilog over bootstrap/tests/fixtures/trinity_matrix"]; +pub const BOOTSTRAP_RUNS : u8 = 2; +pub const NORMALIZATION : str = "none: two runs must produce identical bytes"; +pub const BOOTSTRAP_CI_EVIDENCE : str = "https://github.com/gHashTag/t27/actions/runs/34686608378"; +pub const NONDETERMINISM_ISSUE : str = "https://github.com/gHashTag/t27/issues/3006"; +pub const ENABLED : bool = true; + +test the_headless_profile_is_measured_and_the_test_exit_code_is_not { + assert PROFILES[0] == "headless"; + assert CI_TEST_EXIT_PROPAGATED == false; +} + +test the_two_numeric_packages_are_pinned_by_archive { + assert DEPENDENCIES[2] == "zig_hdc"; + assert DEPENDENCIES[3] == "zig_golden_float"; + assert SUBMODULES[0] == "external/zig-golden-float"; +} + +test the_registry_is_the_first_generated_boundary { + assert GENERATED_TRACKED[0] == ".trinity/registry.json"; + assert GENERATED_BY[0] == "zig build export-registry"; + assert OUTPUT_UNTRACKED[0] == "zig-out/bin"; +} + +test receipts_need_two_runs_and_no_normalization { + assert BOOTSTRAP_RUNS >= 2; + assert NORMALIZATION == "none: two runs must produce identical bytes"; + assert OPTIONS[0] == "ci"; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/abi.c-api.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/abi.c-api.t27 new file mode 100644 index 0000000000..ec3ec67832 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/abi.c-api.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/abi.c-api.t27 -- capability trinity/abi.c-api: The C ABI of the VSA library (libtrinity-vsa, static and shared) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_abi_c_api; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/abi.c-api"; +pub const TITLE : str = "The C ABI of the VSA library (libtrinity-vsa, static and shared)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/api/c_abi.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/c_api.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [5]str = ["lib:trinity-vsa", "lib:trinity-vsa-static", "test:src/c_api.zig", "step:libvsa", "step:release-libvsa"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build libvsa"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Not built by zig build -Dci=true (the step is not installed by default) and not exercised by any CI step at the pinned revision; the tree declares it."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S05"; +pub const NOTE : str = "S05: specs/api/c_abi.t27 states the twenty-two exports with prototypes, ownership and NULL rules and records that src/c_api.zig does not parse at the pin; tools/trinity_c_abi.py holds the table to the header and the source and compiles the fixture conformance/trinity/abi/abi_fixture.c against the header; nothing links, nothing here claims the ABI is verified."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/abi.c-api"; + assert WORK_PACKAGE == "S05"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/agent.daemons.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/agent.daemons.t27 new file mode 100644 index 0000000000..4c6b3c2234 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/agent.daemons.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/agent.daemons.t27 -- capability trinity/agent.daemons: Agent runners and hooks built by default: ralph-agent, mu-agent, scholar-agent, +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_agent_daemons; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/agent.daemons"; +pub const TITLE : str = "Agent runners and hooks built by default: ralph-agent, mu-agent, scholar-agent, agent-entrypoint, ralph-hook, background-agent-api, pipeline-guard, swe-entrypoint, pas-demo and the agent_mu tests"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [7]str = ["trinity:tools/mcp/trinity_mcp/agent", "trinity:tools/mcp/trinity_mcp/mu_daemon", "trinity:tools/mcp/trinity_mcp/scholar_daemon", "trinity:src/background_agent", "trinity:tools/hooks", "trinity:src/cli/entrypoint_swe.zig", "trinity:src/agent_mu"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [17]str = ["exe:ralph-agent", "exe:mu-agent", "exe:scholar-agent", "exe:agent-entrypoint", "exe:ralph-hook", "exe:background-agent-api", "exe:pipeline-guard", "exe:swe-entrypoint", "exe:pas-demo", "step:agent", "step:mu-agent", "step:scholar-agent", "step:run-agent-entrypoint", "step:background-agent-api", "step:swe-deploy", "step:pas-demo", "test:src/agent_mu/*"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S07"; +pub const NOTE : str = "Handwritten adapters to providers and hosting services; they build without credentials and do nothing without them. Runtime behaviour is not claimed."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/agent.daemons"; + assert WORK_PACKAGE == "S07"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/agent.phi-loop.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/agent.phi-loop.t27 new file mode 100644 index 0000000000..2e19fe3e48 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/agent.phi-loop.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/agent.phi-loop.t27 -- capability trinity/agent.phi-loop: phi-loop: the phi cycle command-line runner +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_agent_phi_loop; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/agent.phi-loop"; +pub const TITLE : str = "phi-loop: the phi cycle command-line runner"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/vibeec/phi_loop_cli.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:phi-loop", "step:phi-loop"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build phi-loop"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S09"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/agent.phi-loop"; + assert WORK_PACKAGE == "S09"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/agent.tri-api.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/agent.tri-api.t27 new file mode 100644 index 0000000000..fd65ccc070 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/agent.tri-api.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/agent.tri-api.t27 -- capability trinity/agent.tri-api: tri-api: the implemented agent loop (provider requests, streaming, tool calls) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_agent_tri_api; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/agent.tri-api"; +pub const TITLE : str = "tri-api: the implemented agent loop (provider requests, streaming, tool calls)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/tri-api"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:tri-api", "step:tri-api"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build tri-api"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S07"; +pub const NOTE : str = "S07 makes its request/stream/tool cycle and permission decisions an executable contract; credentials never enter specs or evidence."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/agent.tri-api"; + assert WORK_PACKAGE == "S07"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/api.http-server.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/api.http-server.t27 new file mode 100644 index 0000000000..2931ebb761 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/api.http-server.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/api.http-server.t27 -- capability trinity/api.http-server: The unified HTTP API server (tri serve) under src/api +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_api_http_server; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/api.http-server"; +pub const TITLE : str = "The unified HTTP API server (tri serve) under src/api"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/api"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [1]str = ["test:src/api/unified_server.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build test -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Not built by zig build -Dci=true (the step is not installed by default) and not exercised by any CI step at the pinned revision; the tree declares it."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S06"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/api.http-server"; + assert WORK_PACKAGE == "S06"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/archive.legacy.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/archive.legacy.t27 new file mode 100644 index 0000000000..e0e119cf38 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/archive.legacy.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/archive.legacy.t27 -- capability trinity/archive.legacy: archive/, experiments/, lab/, research/ and tapes/: retained history and demos +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_archive_legacy; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/archive.legacy"; +pub const TITLE : str = "archive/, experiments/, lab/, research/ and tapes/: retained history and demos"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "deprecated"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [5]str = ["trinity:archive", "trinity:experiments", "trinity:lab", "trinity:research", "trinity:tapes"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree; no build target or CI step reads them."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S01"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/archive.legacy"; + assert WORK_PACKAGE == "S01"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/bench.suite.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/bench.suite.t27 new file mode 100644 index 0000000000..655ca4c6ad --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/bench.suite.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/bench.suite.t27 -- capability trinity/bench.suite: Benchmarks: bench-core, bench-compress and the benchmark tests +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_bench_suite; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/bench.suite"; +pub const TITLE : str = "Benchmarks: bench-core, bench-compress and the benchmark tests"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:tests/benchmarks"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [6]str = ["exe:bench-core", "exe:bench-compress", "step:bench", "step:bench-compress", "step:bench-test", "test:tests/benchmarks/benchmarks/benchmark_test.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S03"; +pub const NOTE : str = "Benchmark numbers are not claimed here; the programs build."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/bench.suite"; + assert WORK_PACKAGE == "S03"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/bot.tri-bot.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/bot.tri-bot.t27 new file mode 100644 index 0000000000..63314f2259 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/bot.tri-bot.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/bot.tri-bot.t27 -- capability trinity/bot.tri-bot: tri-bot: the Telegram bot runner +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_bot_tri_bot; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/bot.tri-bot"; +pub const TITLE : str = "tri-bot: the Telegram bot runner"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:tools/mcp/trinity_mcp/bot"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:tri-bot", "step:tri-bot"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build tri-bot"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = "Builds without a token; runtime behaviour is not claimed."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/bot.tri-bot"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/catalog.spec-mirror.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/catalog.spec-mirror.t27 new file mode 100644 index 0000000000..e01cf21d96 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/catalog.spec-mirror.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/catalog.spec-mirror.t27 -- capability trinity/catalog.spec-mirror: The vendored spec catalog and the Queen atlas under apps/website/public/t27/: a +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_catalog_spec_mirror; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/catalog.spec-mirror"; +pub const TITLE : str = "The vendored spec catalog and the Queen atlas under apps/website/public/t27/: a public snapshot, never implementation coverage"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "catalog-only"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "web"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [3]str = ["trinity:apps/website/public/t27/manifest.json", "trinity:apps/website/public/t27/shared-core.json", "trinity:apps/website/public/t27/universe-atlas.json"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "cd apps/website && npm run check:spec-catalog && npm run check:queen-catalog"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34672754026 -- Website checks on gHashTag/trinity#990 (merged as 79ffb034): typecheck ratchet, catalog contracts, language and mobile audits and the render check, all green."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = "At the pinned revision the manifest holds 856 distinct specs from 8 repositories and the atlas 1030 open issues; the 1044 mirrored .t27 files are copies and are never counted as canonical (tools/trinity_manifest.py)."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/catalog.spec-mirror"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/catalog.world-scan.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/catalog.world-scan.t27 new file mode 100644 index 0000000000..bbd13fb70e --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/catalog.world-scan.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/catalog.world-scan.t27 -- capability trinity/catalog.world-scan: The GitHub scan that keeps the catalog current (scripts/discover-t27-worlds.mjs, +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_catalog_world_scan; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/catalog.world-scan"; +pub const TITLE : str = "The GitHub scan that keeps the catalog current (scripts/discover-t27-worlds.mjs, workflow t27-world-scan.yml)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "web"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/catalog/discovery.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [3]str = ["trinity:apps/website/scripts/discover-t27-worlds.mjs", "trinity:apps/website/scripts/t27-corpus.mjs", "trinity:.github/workflows/t27-world-scan.yml"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "ts"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "cd apps/website && npm run check:discovery"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34672754026 -- Website checks on gHashTag/trinity#990 (merged as 79ffb034): typecheck ratchet, catalog contracts, language and mobile audits and the render check, all green."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = "The contract is authored here (specs/catalog/discovery.t27) and vendored byte-identical under apps/website/public/t27/files/specs/catalog/; the scan never rewrites the five founding sources."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/catalog.world-scan"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/cli.tri.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/cli.tri.t27 new file mode 100644 index 0000000000..8c932f658d --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/cli.tri.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/cli.tri.t27 -- capability trinity/cli.tri: The tri command-line interface of the consumer (src/tri) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_cli_tri; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/cli.tri"; +pub const TITLE : str = "The tri command-line interface of the consumer (src/tri)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/tools/catalog.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/tri"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [8]str = ["exe:tri", "step:tri", "step:cli", "test:src/tri/*", "step:test-tri-config", "step:test-tri-error", "step:test-tri-history", "step:test-repl"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build tri && ./zig-out/bin/tri --version"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S06"; +pub const NOTE : str = "t27's specs/tools/tri/*.t27 describe the Rust tri of gHashTag/t27, not this binary; S06 gives this one a repository-qualified registry. ci.yml notes that ./zig-out/bin/tri mcp export segfaults on Linux (tvc_corpus init), so the MCP schema drift step is continue-on-error. S06: the 29 commands the binary exports are cards under specs/tools/trinity/tri/ with repository-qualified IDs; specs/tools/catalog.t27 holds the identity rules and the measured counts (187 table entries, five dispatch layers, six exported commands with no route)."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/cli.tri"; + assert WORK_PACKAGE == "S06"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/convert.b2t.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/convert.b2t.t27 new file mode 100644 index 0000000000..4e85af2317 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/convert.b2t.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/convert.b2t.t27 -- capability trinity/convert.b2t: b2t: binary and WASM to ternary conversion +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_convert_b2t; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/convert.b2t"; +pub const TITLE : str = "b2t: binary and WASM to ternary conversion"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/b2t"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:b2t", "step:b2t"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build b2t"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S05"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/convert.b2t"; + assert WORK_PACKAGE == "S05"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/examples.zig.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/examples.zig.t27 new file mode 100644 index 0000000000..3eeb008b2a --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/examples.zig.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/examples.zig.t27 -- capability trinity/examples.zig: Examples and the end-to-end test: example-memory, example-sequence, example-vm, +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_examples_zig; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/examples.zig"; +pub const TITLE : str = "Examples and the end-to-end test: example-memory, example-sequence, example-vm, src/e2e_test.zig"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:examples", "trinity:src/e2e_test.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [6]str = ["exe:example-memory", "exe:example-sequence", "exe:example-vm", "step:examples", "step:e2e", "test:src/e2e_test.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build examples && zig build e2e"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S12"; +pub const NOTE : str = "S12 turns the e2e path into the clean-clone acceptance of the headless profile."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/examples.zig"; + assert WORK_PACKAGE == "S12"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/ext.vscode-swe.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/ext.vscode-swe.t27 new file mode 100644 index 0000000000..a85a92d413 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/ext.vscode-swe.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/ext.vscode-swe.t27 -- capability trinity/ext.vscode-swe: The VS Code extension (vscode-trinity-swe, tools/vscode-extension) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_ext_vscode_swe; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/ext.vscode-swe"; +pub const TITLE : str = "The VS Code extension (vscode-trinity-swe, tools/vscode-extension)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "native"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:vscode-trinity-swe", "trinity:tools/vscode-extension"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "ts"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree with a packaged .vsix; no CI step builds it."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/ext.vscode-swe"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/fpga.in-repo.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/fpga.in-repo.t27 new file mode 100644 index 0000000000..d3854e9510 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/fpga.in-repo.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/fpga.in-repo.t27 -- capability trinity/fpga.in-repo: FPGA and hardware material carried in the consumer (fpga/, hardware/, fpga-netwo +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_fpga_in_repo; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/fpga.in-repo"; +pub const TITLE : str = "FPGA and hardware material carried in the consumer (fpga/, hardware/, fpga-network/)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity-fpga"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "declared"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "fpga"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/fpga/formal.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [3]str = ["trinity:fpga", "trinity:hardware", "trinity:fpga-network"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "external"; +pub const EVIDENCE_SOURCE : str = "Every hardware figure the project publishes comes from gHashTag/trinity-fpga (v0.2 conformance report, ALINX AX7203) and gHashTag/tt-trinity-corona, per docs/system/project.md; the FPGA integration of gHashTag/trinity#588 is absent at the pinned revision."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/fpga.in-repo"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/lib.trinity.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/lib.trinity.t27 new file mode 100644 index 0000000000..0b730774ac --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/lib.trinity.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/lib.trinity.t27 -- capability trinity/lib.trinity: The trinity library facade: SDK, science, sparse, JIT and the VSA VM over the pi +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_lib_trinity; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/lib.trinity"; +pub const TITLE : str = "The trinity library facade: SDK, science, sparse, JIT and the VSA VM over the pinned numeric packages"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/vsa/trinity_compat.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [6]str = ["trinity:src/trinity.zig", "trinity:src/sdk.zig", "trinity:src/science.zig", "trinity:src/sparse.zig", "trinity:src/jit.zig", "trinity:src/vm.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [3]str = ["lib:trinity", "test:src/trinity.zig", "test:src/vm.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S04"; +pub const NOTE : str = "src/trinity.zig re-exports golden_float (ternary_primitives, packed_trit, bigint) and hdc_vsa from the two pinned packages; S04 states the facade's VSA contract in specs/vsa/trinity_compat.t27; S05 states the VSA VM of src/vm.zig in specs/vm/trinity_vm.t27."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/lib.trinity"; + assert WORK_PACKAGE == "S04"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/llm.firebird.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/llm.firebird.t27 new file mode 100644 index 0000000000..b6cdb2091d --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/llm.firebird.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/llm.firebird.t27 -- capability trinity/llm.firebird: Firebird: BitNet LLM inference and its wasm, depin and b2t integrations +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_llm_firebird; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/llm.firebird"; +pub const TITLE : str = "Firebird: BitNet LLM inference and its wasm, depin and b2t integrations"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/firebird"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [3]str = ["exe:firebird", "step:firebird", "test:src/firebird/*"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build firebird"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = "Inference quality is not claimed; model weights are not in the repository. Training belongs to gHashTag/trinity-training."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/llm.firebird"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/llm.igla-chat.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/llm.igla-chat.t27 new file mode 100644 index 0000000000..c90e4021e3 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/llm.igla-chat.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/llm.igla-chat.t27 -- capability trinity/llm.igla-chat: IGLA chat front-ends: fluent, trinity-hybrid and the igla trace tests +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_llm_igla_chat; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/llm.igla-chat"; +pub const TITLE : str = "IGLA chat front-ends: fluent, trinity-hybrid and the igla trace tests"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [3]str = ["trinity:src/igla", "trinity:src/vibeec/igla_fluent_cli.zig", "trinity:src/vibeec/trinity_hybrid_local.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [6]str = ["exe:fluent", "step:fluent", "step:release-fluent", "exe:trinity-hybrid", "step:hybrid", "test:src/igla/trace.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S07"; +pub const NOTE : str = "Chat quality and model behaviour are not claimed; the binaries build."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/llm.igla-chat"; + assert WORK_PACKAGE == "S07"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/mcp.needle-mcp.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/mcp.needle-mcp.t27 new file mode 100644 index 0000000000..2b96f5bc5f --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/mcp.needle-mcp.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/mcp.needle-mcp.t27 -- capability trinity/mcp.needle-mcp: The needle MCP server (tools/mcp/needle_mcp/server.zig) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_mcp_needle_mcp; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/mcp.needle-mcp"; +pub const TITLE : str = "The needle MCP server (tools/mcp/needle_mcp/server.zig)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/tools/mcp/needle.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:tools/mcp/needle_mcp/server.zig", "trinity:src/needle"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [4]str = ["exe:needle-mcp", "step:needle-mcp", "step:needle-test", "test:src/needle/mod.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build needle-mcp"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S06"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/mcp.needle-mcp"; + assert WORK_PACKAGE == "S06"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/mcp.trinity-mcp.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/mcp.trinity-mcp.t27 new file mode 100644 index 0000000000..c14274709e --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/mcp.trinity-mcp.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/mcp.trinity-mcp.t27 -- capability trinity/mcp.trinity-mcp: The trinity MCP server (tools/mcp/trinity_mcp/server.zig) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_mcp_trinity_mcp; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/mcp.trinity-mcp"; +pub const TITLE : str = "The trinity MCP server (tools/mcp/trinity_mcp/server.zig)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/tools/mcp/trinity.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:tools/mcp/trinity_mcp/server.zig"]; +pub const GENERATED : [1]str = ["trinity:.trinity/mcp_schemas.json"]; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:trinity-mcp", "step:trinity-mcp"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build trinity-mcp"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S06"; +pub const NOTE : str = "The t27 tool card records 210 static tool literals, 32 with an unbalanced trailing brace in the source; .trinity/mcp_schemas.json (29 names) disagrees with the code and the code is the source. S06: specs/tools/mcp_protocol.t27 states the server's protocol behaviour (substring routing, no negotiation, 210 advertised tools of which 32 are malformed JSON, failures as isError results, unknown tools run through the generic executor, cancellation and permissions declared but not imported); conformance/trinity/mcp_fixtures.json holds the offline fixtures."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/mcp.trinity-mcp"; + assert WORK_PACKAGE == "S06"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/native.canvas.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/native.canvas.t27 new file mode 100644 index 0000000000..5da9a920db --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/native.canvas.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/native.canvas.t27 -- capability trinity/native.canvas: The raylib canvas: photon-demo, photon-immersive, trinity-canvas and its emscrip +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_native_canvas; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/native.canvas"; +pub const TITLE : str = "The raylib canvas: photon-demo, photon-immersive, trinity-canvas and its emscripten check (guarded by !ci_mode)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "native"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:deploy/trinity-nexus/canvas"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [9]str = ["exe:photon-demo", "exe:photon-immersive", "exe:trinity-canvas", "exe:trinity-canvas-wasm-check", "lib:trinity-canvas", "step:trinity-canvas", "step:trinity-canvas-wasm", "step:photon-demo", "step:photon-immersive"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "Skipped by zig build -Dci=true (ci_mode guard in build.zig); needs raylib and emsdk from build.zig.zon."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/native.canvas"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/native.node-gui.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/native.node-gui.t27 new file mode 100644 index 0000000000..16ce2ee7aa --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/native.node-gui.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/native.node-gui.t27 -- capability trinity/native.node-gui: trinity-node-gui: the node's raylib front-end (guarded by !ci_mode) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_native_node_gui; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/native.node-gui"; +pub const TITLE : str = "trinity-node-gui: the node's raylib front-end (guarded by !ci_mode)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "native"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/trinity_node/main_gui.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:trinity-node-gui", "step:node-gui"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "Skipped by zig build -Dci=true (ci_mode guard in build.zig)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/native.node-gui"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/native.queen-app.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/native.queen-app.t27 new file mode 100644 index 0000000000..3374ff0891 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/native.queen-app.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/native.queen-app.t27 -- capability trinity/native.queen-app: The native Queen application (apps/queen, Swift package Trinity.app) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_native_queen_app; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/native.queen-app"; +pub const TITLE : str = "The native Queen application (apps/queen, Swift package Trinity.app)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "native"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:apps/queen"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "swift"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree; no CI step builds it."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/native.queen-app"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/node.trinity-node.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/node.trinity-node.t27 new file mode 100644 index 0000000000..168ee61aba --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/node.trinity-node.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/node.trinity-node.t27 -- capability trinity/node.trinity-node: trinity-node: the storage and network node (src/trinity_node, src/depin) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_node_trinity_node; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/node.trinity-node"; +pub const TITLE : str = "trinity-node: the storage and network node (src/trinity_node, src/depin)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "tri-net:specs/tri_node_identity.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:src/trinity_node", "trinity:src/depin"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [4]str = ["exe:trinity-node", "step:node", "test:src/trinity_node/*", "test:src/depin/network.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build node"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = "Network contracts are owned by gHashTag/tri-net (113 specs in the catalog); S11 defines the adapter boundary rather than restating them."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/node.trinity-node"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/numeric.golden-float.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/numeric.golden-float.t27 new file mode 100644 index 0000000000..a6c53cb3ca --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/numeric.golden-float.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/numeric.golden-float.t27 -- capability trinity/numeric.golden-float: GoldenFloat numeric formats, consumed as the pinned package gHashTag/zig-golden- +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_numeric_golden_float; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/numeric.golden-float"; +pub const TITLE : str = "GoldenFloat numeric formats, consumed as the pinned package gHashTag/zig-golden-float"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/zig-golden-float"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "external"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/numeric/goldenfloat_family.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["zig-golden-float:src", "trinity:external/zig-golden-float"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "external"; +pub const EVIDENCE_SOURCE : str = "build.zig.zon pins zig_golden_float at https://github.com/gHashTag/zig-golden-float/archive/e7ce32885de2a8c50b7b6a3030d0592202145dd1.tar.gz (golden_float-2.1.0); the submodule external/zig-golden-float is a second, unpinned reference to the same repository."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S04"; +pub const NOTE : str = "The canonical numeric specs are t27's specs/numeric/ (L6 CEILING: specs/numeric/gf16.t27 and conformance/FORMAT-SPEC-001.json are never forked). S04 extends them with the APIs the facade uses."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/numeric.golden-float"; + assert WORK_PACKAGE == "S04"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/ops.deploy-infra.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/ops.deploy-infra.t27 new file mode 100644 index 0000000000..780ebf363a --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/ops.deploy-infra.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/ops.deploy-infra.t27 -- capability trinity/ops.deploy-infra: Deployment descriptors: helm, k8s, docker, aws-f2, runtime, packages, contracts +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_ops_deploy_infra; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/ops.deploy-infra"; +pub const TITLE : str = "Deployment descriptors: helm, k8s, docker, aws-f2, runtime, packages, contracts and scripts under deploy/"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "network"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [8]str = ["trinity:deploy/helm", "trinity:deploy/k8s", "trinity:deploy/docker", "trinity:deploy/aws-f2", "trinity:deploy/runtime", "trinity:deploy/packages", "trinity:deploy/contracts", "trinity:deploy/scripts"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree; no CI step applies them."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/ops.deploy-infra"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/ops.railway-cli.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/ops.railway-cli.t27 new file mode 100644 index 0000000000..63adf484f2 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/ops.railway-cli.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/ops.railway-cli.t27 -- capability trinity/ops.railway-cli: Railway service tools: seven railway-* commands under src/cli +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_ops_railway_cli; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/ops.railway-cli"; +pub const TITLE : str = "Railway service tools: seven railway-* commands under src/cli"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/cli"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:railway-*", "step:railway-*"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = "Deployment helpers for the hosting provider; they need a token at runtime."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/ops.railway-cli"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/pkg.vendored-cache.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/pkg.vendored-cache.t27 new file mode 100644 index 0000000000..19b40486cc --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/pkg.vendored-cache.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/pkg.vendored-cache.t27 -- capability trinity/pkg.vendored-cache: zig-pkg/: a committed package cache (1061 files) that build.zig.zon does not ref +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_pkg_vendored_cache; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/pkg.vendored-cache"; +pub const TITLE : str = "zig-pkg/: a committed package cache (1061 files) that build.zig.zon does not reference, holding an older golden_float 0.2.0"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "deprecated"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:zig-pkg"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "build.zig.zon pins zig_hdc, zig_golden_float, raylib and emsdk by URL and hash; the cache is not part of the declared build graph."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S03"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/pkg.vendored-cache"; + assert WORK_PACKAGE == "S03"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/queen.lib.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/queen.lib.t27 new file mode 100644 index 0000000000..97cbd8fcb2 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/queen.lib.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/queen.lib.t27 -- capability trinity/queen.lib: libtrinity-queen: the Queen orchestration API (src/queen_api.zig) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_queen_lib; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/queen.lib"; +pub const TITLE : str = "libtrinity-queen: the Queen orchestration API (src/queen_api.zig)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/queen/lotus.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/queen_api.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [4]str = ["lib:trinity-queen", "lib:trinity-queen-static", "test:src/queen_api.zig", "step:libqueen"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build libqueen"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Not built by zig build -Dci=true (the step is not installed by default) and not exercised by any CI step at the pinned revision; the tree declares it."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S09"; +pub const NOTE : str = "The repository describes more than one Queen phase cycle; S09 keeps one canonical state machine and names the runtimes as adapters."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/queen.lib"; + assert WORK_PACKAGE == "S09"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/registry.commands.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/registry.commands.t27 new file mode 100644 index 0000000000..9a1f3da03e --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/registry.commands.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/registry.commands.t27 -- capability trinity/registry.commands: The command registry .trinity/registry.json, exported from src/registry and drif +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_registry_commands; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/registry.commands"; +pub const TITLE : str = "The command registry .trinity/registry.json, exported from src/registry and drift-checked in CI"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/tools/catalog.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/registry"]; +pub const GENERATED : [1]str = ["trinity:.trinity/registry.json"]; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [2]str = ["exe:export-registry", "step:export-registry"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build export-registry && git diff --exit-code .trinity/registry.json"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- the Registry schema check step regenerated .trinity/registry.json with zig build export-registry and found no drift."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S06"; +pub const NOTE : str = "29 commands at the pinned revision; S06 derives the Trinity CLI and MCP catalog from this registry rather than from a second list. S06: specs/tools/catalog.t27 names this export as the one registry the Trinity cards derive from and records that it keeps the 29 mcp_enabled commands of a 187-entry table."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/registry.commands"; + assert WORK_PACKAGE == "S06"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/release.packaging.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/release.packaging.t27 new file mode 100644 index 0000000000..897f0de78d --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/release.packaging.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/release.packaging.t27 -- capability trinity/release.packaging: Release assembly: the release step, release/ and the npm, Homebrew, AUR and Dock +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_release_packaging; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/release.packaging"; +pub const TITLE : str = "Release assembly: the release step, release/ and the npm, Homebrew, AUR and Docker publishers"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:release", "trinity:.github/workflows/release.yml"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [1]str = ["step:release"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "The release step and workflow exist in the pinned tree; no release run was inspected for this manifest."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S03"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/release.packaging"; + assert WORK_PACKAGE == "S03"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/research.nexus-docs.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/research.nexus-docs.t27 new file mode 100644 index 0000000000..c7da2c00f4 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/research.nexus-docs.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/research.nexus-docs.t27 -- capability trinity/research.nexus-docs: Research notes and reports under deploy/trinity-nexus/docs +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_research_nexus_docs; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/research.nexus-docs"; +pub const TITLE : str = "Research notes and reports under deploy/trinity-nexus/docs"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "research"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "research"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:deploy/trinity-nexus/docs"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "Documents, not code; kept in the inventory so that the tree is accounted for."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S01"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/research.nexus-docs"; + assert WORK_PACKAGE == "S01"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/research.programs.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/research.programs.t27 new file mode 100644 index 0000000000..89a2f3eae1 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/research.programs.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/research.programs.t27 -- capability trinity/research.programs: Research programs installed by default: forge, quantum, beal, arena, sota-report +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_research_programs; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/research.programs"; +pub const TITLE : str = "Research programs installed by default: forge, quantum, beal, arena, sota-report and photon-terminal"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "research"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [6]str = ["trinity:src/forge", "trinity:src/quantum", "trinity:src/beal", "trinity:src/arena", "trinity:src/sota_report_demo.zig", "trinity:deploy/trinity-nexus/canvas/src/photon_terminal.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [14]str = ["exe:forge", "exe:quantum", "exe:beal", "exe:arena", "exe:sota-report", "exe:photon-terminal", "step:forge", "step:quantum", "step:beal", "step:arena", "step:sota-report", "step:photon-terminal", "test:src/beal.zig", "test:src/arena/main.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S01"; +pub const NOTE : str = "Identified as optional research artifacts, kept in the inventory rather than omitted; their results are not project claims."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/research.programs"; + assert WORK_PACKAGE == "S01"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/research.unreferenced-sources.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/research.unreferenced-sources.t27 new file mode 100644 index 0000000000..32df21cdc2 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/research.unreferenced-sources.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/research.unreferenced-sources.t27 -- capability trinity/research.unreferenced-sources: Source directories that no file named by build.zig reaches through @import: src/ +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_research_unreferenced_sources; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/research.unreferenced-sources"; +pub const TITLE : str = "Source directories that no file named by build.zig reaches through @import: src/phi-engine, src/sacred, src/consciousness, src/brain, src/tvc, src/storm and others"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "research"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [6]str = ["trinity:src/phi-engine", "trinity:src/sacred", "trinity:src/consciousness", "trinity:src/brain", "trinity:src/tvc", "trinity:src/storm"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "tools/trinity_manifest.py inventory: of 2830 tracked .zig files, 749 are reachable from the 173 files build.zig names and 2081 are not; the per-directory counts are in conformance/trinity/inventory.json (zig_reachability). S03 decides retire or attach."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S01"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/research.unreferenced-sources"; + assert WORK_PACKAGE == "S01"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/search.vsa-index.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/search.vsa-index.t27 new file mode 100644 index 0000000000..f77e86dd8c --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/search.vsa-index.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/search.vsa-index.t27 -- capability trinity/search.vsa-index: VSA search and query command-line tools over the trinity library +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_search_vsa_index; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/search.vsa-index"; +pub const TITLE : str = "VSA search and query command-line tools over the trinity library"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:src/trinity_search.zig", "trinity:src/query_cli.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [4]str = ["exe:trinity-search", "exe:trinity-query", "step:search", "step:query"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S04"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/search.vsa-index"; + assert WORK_PACKAGE == "S04"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/specs.t27-vendored-compiler.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/specs.t27-vendored-compiler.t27 new file mode 100644 index 0000000000..1b6f10e63f --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/specs.t27-vendored-compiler.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/specs.t27-vendored-compiler.t27 -- capability trinity/specs.t27-vendored-compiler: A second copy of t27 compiler modules and numeric specs under trinity:t27/ (34 f +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_specs_t27_vendored_compiler; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/specs.t27-vendored-compiler"; +pub const TITLE : str = "A second copy of t27 compiler modules and numeric specs under trinity:t27/ (34 files)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/t27"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "deprecated"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/numeric/gf16.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:t27"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "Ownership decision of S01: the canonical copies are gHashTag/t27's compiler/ and specs/; this directory is a stale duplicate and no capability may cite it as a source."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S01"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/specs.t27-vendored-compiler"; + assert WORK_PACKAGE == "S01"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/specs.tri-corpus.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/specs.tri-corpus.t27 new file mode 100644 index 0000000000..aefbd1a4e9 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/specs.tri-corpus.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/specs.tri-corpus.t27 -- capability trinity/specs.tri-corpus: The .tri specification corpus of the consumer (the legacy Trinity dialect) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_specs_tri_corpus; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/specs.tri-corpus"; +pub const TITLE : str = "The .tri specification corpus of the consumer (the legacy Trinity dialect)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "declared"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "trinity:specs/algo/adam.tri"; +pub const DIALECT : str = "tri"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:specs"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "tools/trinity_manifest.py inventory counts the tracked .tri files; t27's own specs/organism/*.tri are a different family (S08)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S02"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/specs.tri-corpus"; + assert WORK_PACKAGE == "S02"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/specs.vibee-corpus.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/specs.vibee-corpus.t27 new file mode 100644 index 0000000000..a5e0c4a2c2 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/specs.vibee-corpus.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/specs.vibee-corpus.t27 -- capability trinity/specs.vibee-corpus: The .vibee specification corpus of the consumer: 522 files under specs/tri, 1428 +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_specs_vibee_corpus; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/specs.vibee-corpus"; +pub const TITLE : str = "The .vibee specification corpus of the consumer: 522 files under specs/tri, 1428 under deploy/trinity-nexus, the rest under specs/ and apps/website"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "declared"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "trinity:specs/depin/multi-cluster-full.vibee"; +pub const DIALECT : str = "vibee"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:specs", "trinity:deploy/trinity-nexus"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "tools/trinity_manifest.py inventory counts the tracked .vibee files; the count cannot be added to the .t27 count into a generation claim (gHashTag/trinity#988, audit)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S02"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/specs.vibee-corpus"; + assert WORK_PACKAGE == "S02"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/state.trinity-dir.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/state.trinity-dir.t27 new file mode 100644 index 0000000000..7fbc259ff7 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/state.trinity-dir.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/state.trinity-dir.t27 -- capability trinity/state.trinity-dir: The .trinity/ harness state: registry, MCP schemas, seals, experience, queues, p +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_state_trinity_dir; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/state.trinity-dir"; +pub const TITLE : str = "The .trinity/ harness state: registry, MCP schemas, seals, experience, queues, policy and brain metrics"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "declared"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/brain/unified_state.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:.trinity"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree; .trinity/registry.json and .trinity/mcp_schemas.json are drift-checked in CI (registry.commands, mcp.trinity-mcp), the rest is recorded state without a contract."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S08"; +pub const NOTE : str = "S08 maps mozg/dna and unified_state to the actual session, checkpoint and provenance fields; tmem (specs/memory/tmem/) is an optional adapter decided there."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/state.trinity-dir"; + assert WORK_PACKAGE == "S08"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/test.graph.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/test.graph.t27 new file mode 100644 index 0000000000..475b5e4ef8 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/test.graph.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/test.graph.t27 -- capability trinity/test.graph: The aggregate test step and the CI-only steps that have no artifact of their own +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_test_graph; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/test.graph"; +pub const TITLE : str = "The aggregate test step and the CI-only steps that have no artifact of their own (test, bench-test)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:build.zig"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [1]str = ["step:test"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build test -Dci=true"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "ci.yml runs zig build test -Dci=true through tee, so a failing test graph still ends the step with status 0 (gHashTag/trinity#616; fixed gate proposed in gHashTag/trinity#987); the test exit code is not measured at the pinned revision."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S03"; +pub const NOTE : str = "S03 repairs the test graph as a gate; S12 requires the whole declared profile to fail visibly on a failed assertion."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/test.graph"; + assert WORK_PACKAGE == "S03"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/tools.scripts.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/tools.scripts.t27 new file mode 100644 index 0000000000..2e9c5cf2cf --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/tools.scripts.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/tools.scripts.t27 -- capability trinity/tools.scripts: Repository tooling: tools/scripts, tools/bin, the telegram bridge, the webarena +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_tools_scripts; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/tools.scripts"; +pub const TITLE : str = "Repository tooling: tools/scripts, tools/bin, the telegram bridge, the webarena agent, Python and WASM bindings and legacy helpers"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [6]str = ["trinity:tools/scripts", "trinity:tools/bin", "trinity:tools/telegram-bridge", "trinity:tools/webarena", "trinity:tools/bindings", "trinity:tools/legacy"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree; no build target or CI step exercises these directories."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S06"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/tools.scripts"; + assert WORK_PACKAGE == "S06"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/train.hslm.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/train.hslm.t27 new file mode 100644 index 0000000000..6f49aed065 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/train.hslm.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/train.hslm.t27 -- capability trinity/train.hslm: hslm-train and the vendored external/zig-hslm: the local HSLM placeholder +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_train_hslm; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/train.hslm"; +pub const TITLE : str = "hslm-train and the vendored external/zig-hslm: the local HSLM placeholder"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "declared"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:src/hslm", "trinity:external/zig-hslm"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [6]str = ["exe:hslm-train", "step:hslm-train", "step:hslm-bench", "step:bpe-train", "step:train-deploy", "test:external/zig-hslm/src/root.zig"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "gHashTag/trinity#988: the local HSLM CLI is a placeholder; training infrastructure is owned by gHashTag/trinity-training. The binary is installed by zig build -Dci=true."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = "Installed by default, so it is part of the headless build; declared rather than executable because the epic records it as a placeholder."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/train.hslm"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/training.targets.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/training.targets.t27 new file mode 100644 index 0000000000..71cd981c8e --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/training.targets.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/training.targets.t27 -- capability trinity/training.targets: Kaggle and WASM training targets (targets/, kaggle/, train-types/, train_cifar10 +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_training_targets; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/training.targets"; +pub const TITLE : str = "Kaggle and WASM training targets (targets/, kaggle/, train-types/, train_cifar10.py)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "research"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "training"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [5]str = ["trinity:targets/kaggle", "trinity:targets/wasm", "trinity:kaggle", "trinity:train-types", "trinity:train_cifar10.py"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "python"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree; nothing in CI runs them."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S11"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/training.targets"; + assert WORK_PACKAGE == "S11"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/tri27.programs.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/tri27.programs.t27 new file mode 100644 index 0000000000..ec6b525be2 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/tri27.programs.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/tri27.programs.t27 -- capability trinity/tri27.programs: Ten .t27 programs under src/tri27 (sha256, matmul, mlp_forward, vsa_bind, vsa_bu +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_tri27_programs; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/tri27.programs"; +pub const TITLE : str = "Ten .t27 programs under src/tri27 (sha256, matmul, mlp_forward, vsa_bind, vsa_bundle2, vsa_cosine, tiny_lfu, locus_coeruleus_backoff, ppl_calculator and one more) compiled by the local emitters, not by t27c"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "declared"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "trinity:src/tri27/matmul.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/tri27"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "Counted by tools/trinity_manifest.py inventory as canonical .t27 files of the consumer (they are outside the website mirror); S02 decides which dialect they are and whether t27c accepts them."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S02"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/tri27.programs"; + assert WORK_PACKAGE == "S02"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/tri27.toolchain.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/tri27.toolchain.t27 new file mode 100644 index 0000000000..914d9d5796 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/tri27.toolchain.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/tri27.toolchain.t27 -- capability trinity/tri27.toolchain: The TRI27 assembler, emulator, loader and the Zig/Verilog emitters under src/tri +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_tri27_toolchain; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/tri27.toolchain"; +pub const TITLE : str = "The TRI27 assembler, emulator, loader and the Zig/Verilog emitters under src/tri27"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "declared"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/isa/ternary_encoding.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/tri27"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "not-claimed"; +pub const EVIDENCE_SOURCE : str = "src/tri27/tri27_cli.zig is a module of the tri executable, not an artifact of its own; its validate path prints that validation is not implemented and still records success (S02 finding recorded in gHashTag/t27#3564)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S05"; +pub const NOTE : str = "S05: specs/isa/ternary_encoding.t27 (the instruction word of decoder.zig), specs/isa/tri27_machine.t27 (registers, memory, fetch, entry points, flags, arithmetic, stack, budget, errors, host boundary of executor.zig) and specs/isa/tri27_bytecode.t27 (the .tbin container of loader.zig) state what the emulator executes; tools/trinity_tri27.py replays conformance/trinity/tri27_programs.json through their generated C; registers.t27, ternary_control_flow.t27 and ternary_memory.t27 describe a machine the emulator does not run; src/tri27/emu/specs/tri27_isa.md and tbin_format.md are descriptions that disagree with the code."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/tri27.toolchain"; + assert WORK_PACKAGE == "S05"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/vibee.compiler.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/vibee.compiler.t27 new file mode 100644 index 0000000000..4eaae3d95b --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/vibee.compiler.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/vibee.compiler.t27 -- capability trinity/vibee.compiler: The VIBEE spec compiler (vibee gen), its self-improver, trinity-cli, claude-ui a +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_vibee_compiler; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/vibee.compiler"; +pub const TITLE : str = "The VIBEE spec compiler (vibee gen), its self-improver, trinity-cli, claude-ui and the knowledge-graph pipelines under src/vibeec"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "executable"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:src/vibeec"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "zig"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [13]str = ["exe:vibee", "step:vibee", "exe:vibee-self-improve", "step:self-improve", "exe:trinity-cli", "exe:claude-ui", "step:claude-ui", "test:src/vibeec/*", "step:test-kg-pipeline", "step:test-kg-sync", "step:test-triples-parser", "step:test-sym-005", "step:test-prefix-cache"]; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "zig build vibee"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34678824282 -- Build & Test on ubuntu-latest with zig 0.15.2 at 79ffb034 (the pinned 976df517 differs from it only in apps/website/src/data/signalHealth.json): zig build -Dci=true succeeded. zig build test is piped through tee there, so its exit code is not measured (gHashTag/trinity#616)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S02"; +pub const NOTE : str = "Consumes the .vibee corpus (specs.vibee-corpus); a different compiler from t27c. S02 states which dialect each format is and what each compiler proves."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/vibee.compiler"; + assert WORK_PACKAGE == "S02"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/vsa.zig-hdc.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/vsa.zig-hdc.t27 new file mode 100644 index 0000000000..087c0ac1e5 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/vsa.zig-hdc.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/vsa.zig-hdc.t27 -- capability trinity/vsa.zig-hdc: Hyperdimensional VSA operations (bind, bundle, permute, similarity), consumed as +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_vsa_zig_hdc; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/vsa.zig-hdc"; +pub const TITLE : str = "Hyperdimensional VSA operations (bind, bundle, permute, similarity), consumed as the pinned package gHashTag/zig-hdc"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/zig-hdc"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "external"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "headless"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/vsa/vsa_core.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["zig-hdc:src"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "none"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "external"; +pub const EVIDENCE_SOURCE : str = "build.zig.zon pins zig_hdc at https://github.com/gHashTag/zig-hdc/archive/b73b2fa29874f4e30297f167a6ea8a3c2ded9d32.tar.gz (zig_hdc-0.1.0)."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S04"; +pub const NOTE : str = "specs/vsa/ops.t27, vsa_core.t27, packed_vsa.t27 and sdk.t27 are the canonical contracts; the legacy assembly bind semantics are classified separately in S04, not unified here."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/vsa.zig-hdc"; + assert WORK_PACKAGE == "S04"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/web.docsite.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/web.docsite.t27 new file mode 100644 index 0000000000..b72bdb465f --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/web.docsite.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/web.docsite.t27 -- capability trinity/web.docsite: The documentation site under docs/, published with the website by deploy-docs.ym +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_web_docsite; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/web.docsite"; +pub const TITLE : str = "The documentation site under docs/, published with the website by deploy-docs.yml"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "web"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:docs", "trinity:.github/workflows/deploy-docs.yml"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "ts"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "The workflow exists in the pinned tree; no run of it was inspected for this manifest."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/web.docsite"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/web.queen-web.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/web.queen-web.t27 new file mode 100644 index 0000000000..c9724ff2f5 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/web.queen-web.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/web.queen-web.t27 -- capability trinity/web.queen-web: The Queen web client and its proxy (apps/queen-web, apps/queen-proxy) +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_web_queen_web; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/web.queen-web"; +pub const TITLE : str = "The Queen web client and its proxy (apps/queen-web, apps/queen-proxy)"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "web"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = ""; +pub const DIALECT : str = "none"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [2]str = ["trinity:apps/queen-web", "trinity:apps/queen-proxy"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "ts"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = ""; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "declared"; +pub const EVIDENCE_SOURCE : str = "Present in the pinned tree; no CI step builds them."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = ""; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/web.queen-web"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/capabilities/web.site.t27 b/apps/website/public/t27/files/specs/trinity/capabilities/web.site.t27 new file mode 100644 index 0000000000..44fec2b6f7 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/capabilities/web.site.t27 @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/capabilities/web.site.t27 -- capability trinity/web.site: The public site t27.ai (apps/website): explorers over the vendored spec corpus, +; One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of +; gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the +; pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong +; to no other card, the paths it names are tracked, the dialect matches the spec it cites and a +; measured claim names its command and its source. The consumer vendors a byte-identical copy and +; generates its manifest from these files (S12). ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_capability_web_site; + +pub const KIND : str = "capability"; +pub const ID : str = "trinity/web.site"; +pub const TITLE : str = "The public site t27.ai (apps/website): explorers over the vendored spec corpus, the Queen map and the system docs"; +; Who owns the implementation this card describes. +pub const OWNER_REPO : str = "gHashTag/trinity"; +; executable | declared | adapter | external | deprecated | out-of-scope | research | catalog-only +pub const DISPOSITION : str = "adapter"; +; headless | web | native | fpga | training | network | research; a target installed by +; zig build -Dci=true is headless, a target guarded by !ci_mode is not. +pub const PROFILE : str = "web"; +; The canonical spec: a path in this repository, trinity: for a spec authored in the +; consumer, : elsewhere, "" while none exists. Never a mirrored copy. +pub const CANONICAL_SPEC : str = "specs/ui/viewport.t27"; +pub const DIALECT : str = "t27"; +; Implementation and generated paths of the pinned tree (trinity: prefix), checked to exist. +pub const IMPLEMENTATION : [1]str = ["trinity:apps/website"]; +pub const GENERATED : [0]str = []; +; zig | c | rust | verilog | wasm | ts | swift | python | none; only executable, adapter and research cards claim one. +pub const BACKEND : str = "ts"; +; build.zig targets this card owns: exe:, lib:, test:, step:; patterns allowed. +pub const TARGETS : [0]str = []; +; The command whose success is the acceptance of this capability; "" when nothing is claimed. +pub const ACCEPTANCE : str = "cd apps/website && npm ci && npx vite build && npm run typecheck:ratchet && npm run check:spec-catalog"; +; measured | declared | specified | external | not-claimed, as docs/system/project.md defines them. +pub const EVIDENCE : str = "measured"; +pub const EVIDENCE_SOURCE : str = "https://github.com/gHashTag/trinity/actions/runs/34672754026 -- Website checks on gHashTag/trinity#990 (merged as 79ffb034): typecheck ratchet, catalog contracts, language and mobile audits and the render check, all green."; +; The work package of gHashTag/trinity#988 that owns this capability's contract. +pub const WORK_PACKAGE : str = "S10"; +pub const NOTE : str = "TypeScript retained explicitly until generation is demonstrated; viewport, docs, tools, agents, skills, crons and the world-scan contract are generated from vendored t27 specs through the compiler wasm."; +pub const ENABLED : bool = true; + +test card_is_bound_to_its_package { + assert KIND == "capability"; + assert ID == "trinity/web.site"; + assert WORK_PACKAGE == "S10"; + assert ENABLED == true; +} diff --git a/apps/website/public/t27/files/specs/trinity/compiler_matrix.t27 b/apps/website/public/t27/files/specs/trinity/compiler_matrix.t27 new file mode 100644 index 0000000000..42340c7b97 --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/compiler_matrix.t27 @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/compiler_matrix.t27 -- which t27 features the pinned compiler carries to a checked +; runtime result, on which backend, and which invalid inputs it must never accept +; Source of truth for tools/trinity_compiler_matrix.py (gHashTag/t27#3564 = S02 of +; gHashTag/trinity#988). One fixture per feature under FIXTURE_DIR; four stages kept apart in +; the record (declaration, generate, compile, runtime); a feature is executable only when its +; fixture reaches a runtime pass on the backend named here, a blocked feature must not, and a +; negative fixture must be rejected at or before the stage named here. The native compiler is +; the one this repository builds; the vendored WASM of the site is an older revision and gets +; its own column, never a runtime. ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_compiler_matrix; + +pub const KIND : str = "compiler-matrix"; +pub const ID : str = "trinity/compiler_matrix"; +pub const NAME : str = "Trinity compiler matrix: the executable t27 subset of the headless profile"; +; The native compiler: built with NATIVE_BUILD from this repository; NATIVE_REVISION is the last +; commit that changed the compiler sources (bootstrap/src, Cargo.toml, Cargo.lock), so a spec-only +; commit on top of it does not change the compiler the record names. +pub const NATIVE_COMPILER : str = "t27c 0.2.0"; +pub const NATIVE_REVISION : str = "bff21b85b206a0dd367876343e56dcd8312d81ba"; +pub const NATIVE_BUILD : str = "cargo build --release -p t27c"; +; The WASM the site vendors (gHashTag/trinity, built from an older revision of this repository). +pub const WASM_VENDORED_REVISION : str = "1cd2877f97e33efb574fa03c589f7368dc1385ba"; +pub const WASM_VENDORED_PATH : str = "trinity:apps/website/public/t27/t27_compiler.wasm"; +pub const WASM_VENDORED_SHA256 : str = "4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4"; +; Backends, the t27c command that emits each, and what proves a runtime result on each. +pub const BACKENDS : [4]str = ["c", "zig", "rust", "verilog"]; +pub const BACKEND_COMMAND : [4]str = ["gen-c", "gen", "gen-rust", "gen-verilog"]; +pub const BACKEND_RUNTIME : [4]str = ["cc -DT27_TEST_MAIN, then the binary ends with All N tests passed", "zig test, ending with All N tests passed", "none: the Rust backend emits declarations only (NOT LOWERED)", "t27c icarus-simulate reports [TEST] PASSED and no FAILED"]; +pub const HOST_TOOLS : [4]str = ["cc", "zig", "rustc", "iverilog"]; +; The stages, in order; a record names the last one a fixture passed. +pub const STAGES : [4]str = ["declaration", "generate", "compile", "runtime"]; +pub const FIXTURE_DIR : str = "bootstrap/tests/fixtures/trinity_matrix"; +; The features the Trinity headless profile writes, one fixture each. +pub const FEATURES : [14]str = ["scalars", "arrays", "strings", "structs", "enums", "functions", "control_flow", "module_state", "invariants", "imports", "errors", "clocked_state", "adapters_declared", "ffi_boundary"]; +pub const FEATURE_FIXTURE : [14]str = ["scalars.t27", "arrays.t27", "strings.t27", "structs.t27", "enums.t27", "functions.t27", "control_flow.t27", "module_state.t27", "invariants.t27", "imports.t27", "errors.t27", "clocked_state.t27", "adapters_declared.t27", "neg_bodyless_fn.t27"]; +; enabled: the fixture reaches a runtime pass on FEATURE_BACKEND; blocked: it must not. +pub const FEATURE_STATUS : [14]str = ["enabled", "enabled", "enabled", "enabled", "blocked", "enabled", "enabled", "enabled", "enabled", "enabled", "enabled", "enabled", "enabled", "blocked"]; +pub const FEATURE_BACKEND : [14]str = ["c", "c", "c", "c", "c", "c", "c", "c", "c", "c", "c", "verilog", "c", "c"]; +pub const FEATURE_NOTE : [14]str = ["integer and boolean constants, arithmetic, comparison, shifts and masks", "fixed-size arrays, indexing, a loop over them", "string constants, equality, a function returning one; the Zig backend does not lower string equality", "a record type, a constructor, field access", "named values and a switch over them: the C backend declares EVIDENCE_EMULATOR and compares against EMULATOR, so the switch does not compile", "parameters, early return, recursion, calls between functions", "if/else, while, for over a range, break and continue", "a var at module level read and written by functions; typecheck warns cannot assign to immutable and the C backend lowers it", "constant invariants and a test that checks them; an assert whose expression starts with ( is folded into a call, so asserts start with an operand", "a use of an existing corpus module; the compiler does not resolve imports, this matrix does", "status codes returned in-band as the Trinity specs write them; error unions and try are not measured", "registered variables updated by on_clock and a combinational output; runtime evidence through t27c icarus-simulate", "an I/O boundary as constants and a pure verdict over a fixture transcript; the transport stays outside the spec", "a required function declared without a body (gHashTag/t27#3472): the parser rejects it; there is no FFI construct to enable"]; +; Inputs that must never become an accepted executable capability, and the latest stage at +; which each must be rejected on the C path. +pub const NEGATIVES : [5]str = ["neg_invalid_annotation.t27", "neg_false_assert.t27", "neg_unresolved_import.t27", "neg_bodyless_fn.t27", "neg_dropped_module.t27"]; +pub const NEGATIVE_STAGE : [5]str = ["declaration", "runtime", "declaration", "declaration", "declaration"]; +pub const NEGATIVE_NOTE : [5]str = ["str = 5: t27c typecheck accepts it, the matrix rejects it at declaration", "assert ONE > 2: typecheck ok, generated, compiled, the C runner aborts", "use nowhere::thing: t27c accepts it and the C runner passes, the matrix rejects it at declaration", "pub fn helper(x: u8) -> u8; : typecheck reports Expected LBrace", "a bare ; ahead of module: parse error at module level"]; +; A backend nobody implemented: asking for it must yield blocked, never a stub. +pub const ABSENT_BACKEND : str = "python"; +pub const ENABLED : bool = true; + +test the_stages_are_ordered_and_runtime_is_last { + assert STAGES[0] == "declaration"; + assert STAGES[3] == "runtime"; +} + +test the_c_backend_is_the_runtime_of_the_headless_profile { + assert BACKENDS[0] == "c"; + assert BACKEND_COMMAND[0] == "gen-c"; + assert FEATURE_BACKEND[0] == "c"; +} + +test clocked_state_is_proven_on_the_verilog_path { + assert FEATURES[11] == "clocked_state"; + assert FEATURE_BACKEND[11] == "verilog"; +} + +test enums_and_the_ffi_boundary_are_blocked_today { + assert FEATURES[4] == "enums"; + assert FEATURE_STATUS[4] == "blocked"; + assert FEATURES[13] == "ffi_boundary"; + assert FEATURE_STATUS[13] == "blocked"; +} + +test a_false_assertion_is_only_caught_at_runtime { + assert NEGATIVES[1] == "neg_false_assert.t27"; + assert NEGATIVE_STAGE[1] == "runtime"; + assert NEGATIVE_STAGE[0] == "declaration"; +} + +test the_absent_backend_is_not_a_backend { + assert ABSENT_BACKEND == "python"; + assert ABSENT_BACKEND != BACKENDS[0]; + assert ABSENT_BACKEND != BACKENDS[1]; + assert ABSENT_BACKEND != BACKENDS[2]; + assert ABSENT_BACKEND != BACKENDS[3]; +} diff --git a/apps/website/public/t27/files/specs/trinity/project.t27 b/apps/website/public/t27/files/specs/trinity/project.t27 new file mode 100644 index 0000000000..9be287f02b --- /dev/null +++ b/apps/website/public/t27/files/specs/trinity/project.t27 @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/trinity/project.t27 -- the Trinity project manifest: what gHashTag/trinity is, pinned +; Source of truth for the project profile (gHashTag/t27#3563 = S01 of gHashTag/trinity#988): the +; consumer repository and the revision inventoried, the profiles, the dispositions and evidence +; tags every capability card uses, the dialect and build counts the inventory measured, the +; dependency pins and the work packages of the epic. tools/trinity_manifest.py inventory writes +; conformance/trinity/inventory.json from a clean pinned checkout and tools/trinity_manifest.py +; check holds this file and every card in capabilities/ to it. The consumer vendors a +; byte-identical copy and generates its manifest from these files; nothing here is a second +; authored registry. ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module trinity_project; + +pub const KIND : str = "project"; +pub const ID : str = "trinity/project"; +pub const NAME : str = "Trinity: the project profile of gHashTag/trinity as capability cards"; +; The consumer whose tree was inventoried, at the revision the counts below were measured. +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const PINNED_AT : str = "2026-09-12T08:40:38Z"; +; The revision of this repository the cards were authored and sealed against. +pub const T27_REVISION : str = "03f0faf6c01e0918b8150273195f4170bc4c9bf1"; +; Profiles a card belongs to; headless is the initial reproducible profile, the others have +; their own later acceptance milestones. A target installed by zig build -Dci=true is headless. +pub const PROFILES : [7]str = ["headless", "web", "native", "fpga", "training", "network", "research"]; +pub const INITIAL_PROFILE : str = "headless"; +; What a capability is at the pinned revision. +pub const DISPOSITIONS : [8]str = ["executable", "declared", "adapter", "external", "deprecated", "out-of-scope", "research", "catalog-only"]; +; The five status tags of docs/system/project.md. +pub const EVIDENCE_TAGS : [5]str = ["measured", "declared", "specified", "external", "not-claimed"]; +; The three spec dialects the consumer carries; only t27 is compiled by t27c. +pub const DIALECTS : [4]str = ["t27", "tri", "vibee", "none"]; +; Counted by the inventory over tracked files; the website mirror is never canonical. +pub const T27_CANONICAL_FILES : u16 = 31; +pub const T27_MIRROR_FILES : u16 = 1044; +pub const TRI_FILES : u16 = 764; +pub const VIBEE_FILES : u16 = 1981; +pub const ZIG_FILES : u16 = 2830; +; .zig files no file named by build.zig reaches through a relative @import. +pub const ZIG_UNREACHABLE_FILES : u16 = 2081; +; build.zig at the pinned revision: artifacts, steps, and what zig build -Dci=true installs. +pub const BUILD_EXECUTABLES : u8 = 51; +pub const BUILD_LIBRARIES : u8 = 6; +pub const BUILD_TESTS : u8 = 73; +pub const BUILD_STEPS : u8 = 68; +pub const INSTALLED_BY_DEFAULT : u8 = 46; +pub const INSTALLED_GUARDED : u8 = 5; +; build.zig.zon dependencies and their pins, in the order the file declares them; .gitmodules paths. +pub const DEPENDENCIES : [4]str = ["emsdk", "raylib", "zig_hdc", "zig_golden_float"]; +pub const DEPENDENCY_PINS : [4]str = ["git+https://github.com/emscripten-core/emsdk?ref=4.0.9#3bcf1dcd01f040f370e10fe673a092d9ed79ebb5", "git+https://github.com/raylib-zig/raylib-zig#cd71c85d571027ac8033357f83b124ee051825b3", "https://github.com/gHashTag/zig-hdc/archive/b73b2fa29874f4e30297f167a6ea8a3c2ded9d32.tar.gz", "https://github.com/gHashTag/zig-golden-float/archive/e7ce32885de2a8c50b7b6a3030d0592202145dd1.tar.gz"]; +pub const SUBMODULES : [1]str = ["external/zig-golden-float"]; +; .trinity/registry.json commands, exported from code and drift-checked in CI. +pub const REGISTRY_COMMANDS : u16 = 29; +; The vendored website catalog at the pinned revision: a snapshot of distinct specs and contributing +; repositories, never implementation coverage. +pub const CATALOG_SPECS : u16 = 856; +pub const CATALOG_REPOSITORIES : u8 = 8; +; The work packages of the epic; every card names one, every package has at least one card. +pub const WORK_PACKAGES : [12]str = ["S01", "S02", "S03", "S04", "S05", "S06", "S07", "S08", "S09", "S10", "S11", "S12"]; +pub const WORK_PACKAGE_ISSUES : [12]str = ["https://github.com/gHashTag/t27/issues/3563", "https://github.com/gHashTag/t27/issues/3564", "https://github.com/gHashTag/t27/issues/3565", "https://github.com/gHashTag/t27/issues/3566", "https://github.com/gHashTag/t27/issues/3567", "https://github.com/gHashTag/t27/issues/3568", "https://github.com/gHashTag/t27/issues/3569", "https://github.com/gHashTag/t27/issues/3570", "https://github.com/gHashTag/t27/issues/3571", "https://github.com/gHashTag/t27/issues/3572", "https://github.com/gHashTag/t27/issues/3573", "https://github.com/gHashTag/trinity/issues/989"]; +pub const ENABLED : bool = true; + +test the_initial_profile_is_headless { + assert INITIAL_PROFILE == "headless"; + assert PROFILES[0] == "headless"; +} + +test the_mirror_is_larger_than_the_canonical_set_and_is_not_it { + assert T27_MIRROR_FILES > T27_CANONICAL_FILES; + assert CATALOG_SPECS < T27_MIRROR_FILES + T27_CANONICAL_FILES; +} + +test most_of_the_zig_tree_is_not_reached_by_the_build_graph { + assert ZIG_UNREACHABLE_FILES * 2 > ZIG_FILES; + assert ZIG_UNREACHABLE_FILES < ZIG_FILES; +} + +test the_default_install_set_is_a_subset_of_the_artifacts { + assert INSTALLED_BY_DEFAULT + INSTALLED_GUARDED <= BUILD_EXECUTABLES + BUILD_LIBRARIES; + assert INSTALLED_GUARDED == 5; +} + +test the_epic_has_twelve_packages_and_two_pinned_numeric_packages { + assert WORK_PACKAGES[0] == "S01"; + assert WORK_PACKAGES[11] == "S12"; + assert DEPENDENCIES[2] == "zig_hdc"; + assert DEPENDENCIES[3] == "zig_golden_float"; +} diff --git a/apps/website/public/t27/files/specs/vm/jit_semantics.t27 b/apps/website/public/t27/files/specs/vm/jit_semantics.t27 index 56de177fa6..f9f036afcb 100644 --- a/apps/website/public/t27/files/specs/vm/jit_semantics.t27 +++ b/apps/website/public/t27/files/specs/vm/jit_semantics.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // Module: JIT Compilation Semantics -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module JitSemantics { // ======================================================================== diff --git a/apps/website/public/t27/files/specs/vm/trinity_vm.t27 b/apps/website/public/t27/files/specs/vm/trinity_vm.t27 new file mode 100644 index 0000000000..8669780688 --- /dev/null +++ b/apps/website/public/t27/files/specs/vm/trinity_vm.t27 @@ -0,0 +1,162 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/vm/trinity_vm.t27 -- the VSA VM of gHashTag/trinity src/vm.zig as it is at the pin +; S05 of gHashTag/trinity#988 (gHashTag/t27#3567). src/vm.zig is the VM the consumer builds and +; tests (test:src/vm.zig, a member of `zig build test`; the library facade re-exports it): a +; register machine over four hyperdimensional registers whose operations are the sixteen VSA +; operations of specs/vsa/trinity_compat.t27. It shares nothing with the TRI-27 machine of +; specs/isa/tri27_machine.t27: another opcode space, another register file, another program type. +; This file states its opcode numbering, its registers, its step and run rules, its condition +; codes, the absence of a budget and of a serialized form, and the sacred opcode space reachable +; only through execSacredOpcode. The scalar rules are functions the C backend executes; the +; vector operations themselves are S04's and are not restated. specs/server/vm.t27 describes a +; VM with the same names and no numbers; it does not parse and is recorded, not followed. +; ASCII only (L3). phi^2 + 1/phi^2 = 3 | TRINITY + +module TrinityVsaVm; + +pub const KIND : str = "vm-contract"; +pub const ID : str = "vm/trinity_vm"; +pub const NAME : str = "The VSA VM of the pinned Trinity library"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const OWNER_MODULE : str = "src/vm.zig"; +pub const OWNER_LINES : str = "VSAOpcode :23-66; VSARegisters :72-112; VSAInstruction :118-124; init :147; loadProgram :165; step :173; run :186; execute :190-217; getVReg :233-241; execSacredOpcode :557-559"; +pub const SACRED_MODULE : str = "src/vm/opcodes.zig"; +pub const VSA_SPEC : str = "specs/vsa/trinity_compat.t27"; +pub const CANONICAL_NOTE : str = "specs/server/vm.t27 (module VM) declares twenty-three of these opcodes without values, lacks v_f16_load, v_f16_store and f16_dot, and does not parse (vm_step, line 181)"; +; --- Opcodes -------------------------------------------------------------------------------- +pub const OPCODE_COUNT : u32 = 26; +pub const OPCODE_NAMES : [26]str = ["v_load", "v_store", "v_const", "v_random", "v_bind", "v_unbind", "v_bundle2", "v_bundle3", "v_dot", "v_cosine", "v_hamming", "v_add", "v_neg", "v_mul", "v_mov", "v_pack", "v_unpack", "v_cmp", "v_permute", "v_ipermute", "v_seq", "v_f16_load", "v_f16_store", "f16_dot", "nop", "halt"]; +pub const OPCODE_VALUES : [26]u32 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; +pub const OPCODE_VALUES_EXPLICIT : bool = false; +pub const OPCODE_VALUE_RULE : str = "enum(u8) without explicit values: the numbers are the declaration order and change with any reordering"; +pub const OP_NOP : u32 = 24; +pub const OP_HALT : u32 = 25; +; --- Registers and programs ----------------------------------------------------------------- +pub const VECTOR_REGISTERS : u32 = 4; +pub const SCALAR_REGISTERS : u32 = 2; +pub const FLOAT_REGISTERS : u32 = 4; +pub const F16_ACCUMULATORS : u32 = 2; +pub const F16_LANES : u32 = 16; +pub const VECTOR_CAPACITY : u32 = 59049; +pub const REGISTER_ALIAS_RULE : str = "a vector register index above 3 selects v0; no error"; +pub const PROGRAM_FORM : str = "an array of VSAInstruction { opcode u8, dst u8, src1 u8, src2 u8, imm i64 }; loadProgram copies it and resets pc, halted and cycle_count"; +pub const SERIALIZED_FORM : str = "none: no magic, no version, no loader from bytes, no file format"; +pub const STEP_RULE : str = "step returns false when halted or pc >= program length; otherwise execute, then pc += 1 and cycle_count += 1, and return !halted"; +pub const RUN_RULE : str = "run is while (try step()) {}"; +pub const BUDGET : str = "none: a program that never halts runs until its last instruction; cycle_count is informational"; +pub const CMP_THRESHOLD : f64 = 0.1; +pub const CMP_RULE : str = "v_cmp computes the cosine similarity of src1 and src2 into f0 and sets cc_zero when -0.1 < sim < 0.1, cc_neg when sim < -0.1, cc_pos when sim > 0.1"; +pub const JIT_RULE : str = "v_bind, v_unbind and v_dot try the JIT engine first when jit_enabled (default true) and fall back to the scalar library; two owner tests disable it because of a cosineSimilarity defect"; +pub const RANDOM_SEED_USED : bool = false; +pub const RANDOM_RULE : str = "v_random discards imm and calls randomVector(59049, 0)"; +pub const BUNDLE3_THIRD_SOURCE : str = "dst: v_bundle3 bundles src1, src2 and the destination's previous value"; +pub const F16_LOAD_RULE : str = "sixteen f16 lanes from std.Random.DefaultPrng(imm) in [-1, 1), quantised to a trit at +-0.1, written as a 16-trit vector"; +pub const ERROR_RULE : str = "the instruction path returns no error; the sacred path returns error.NotImplemented for every opcode but six"; +; --- Sacred opcodes (src/vm/opcodes.zig) ---------------------------------------------------- +pub const SACRED_OPCODE_COUNT : u32 = 40; +pub const SACRED_IMPLEMENTED_COUNT : u32 = 6; +pub const SACRED_IMPLEMENTED : [6]str = ["phi_const", "phi_pow", "golden_angle", "light_speed", "fib", "sacred_identity"]; +pub const SACRED_IMPLEMENTED_VALUES : [6]u32 = [128, 144, 129, 130, 145, 146]; +pub const SACRED_RULE : str = "reachable only through VSAVM.execSacredOpcode, never through a VSAInstruction; phi_const f0 = phi; phi_pow f0 = phi^s0; golden_angle f0 = 137.50776405003785; light_speed f0 = 299792458.0; fib s0 = round((phi^n - psi^n) / sqrt 5) for n = s0; sacred_identity f0 = phi^2 + 1/phi^2 and cc_zero = |f0 - 3| < 1e-10"; +pub const PHI : f64 = 1.618033988749895; +; --- Evidence --------------------------------------------------------------------------------- +pub const TEST_COUNT : u32 = 14; +pub const TESTS : [14]str = ["VSA VM basic operations", "VSA VM bind/unbind", "VSA VM bundle similarity", "VSA VM permute", "VSA VM memory efficiency", "VSA VM dot product", "VSA VM f16: v_f16_load quantizes correctly", "VSA VM f16: v_f16_store converts to f16", "VSA VM f16: f16_dot computes dot product", "VSA VM sacred: phi_const", "VSA VM sacred: phi_pow", "VSA VM sacred: fib(10)", "VSA VM sacred: sacred_identity", "VSA VM sacred: direct opcode execution"]; +pub const CI_EVIDENCE : str = "koschei-production.yml runs `zig test src/vm.zig` on every push to main and fails to compile it (libc not linked, module zig-hdc-vsa absent when the file is tested alone): run 34678824259 at 79ffb034; ci.yml only formats the file; the test step of `zig build test -Dci=true` does not propagate its exit code (gHashTag/trinity#616)"; +pub const HOST_EVIDENCE : str = "not measured on this host: neither Zig available builds src/vm.zig (0.15.2 cannot link, the 0.17 nightly rejects the ArrayList API of vsa_jit.zig)"; +pub const ENABLED : bool = true; + +; --- Rules ------------------------------------------------------------------------------------ + +pub fn vreg_index(idx: u32) -> u32 { + if (idx <= 3) { return idx; } + return 0; +} + +pub fn step_continues(halted: bool, pc: u32, program_len: u32) -> bool { + if (halted) { return false; } + return pc < program_len; +} + +pub fn cc_class(sim: f64) -> i32 { + if (sim > CMP_THRESHOLD) { return 1; } + if (sim < 0.0 - CMP_THRESHOLD) { return -1; } + return 0; +} + +pub fn cc_zero(sim: f64) -> bool { + return sim > 0.0 - CMP_THRESHOLD and sim < CMP_THRESHOLD; +} + +pub fn quantise_f16(x: f64) -> i32 { + if (x > CMP_THRESHOLD) { return 1; } + if (x < 0.0 - CMP_THRESHOLD) { return -1; } + return 0; +} + +pub fn sacred_identity_error() -> f64 { + var phi_sq : f64 = PHI * PHI; + var r : f64 = phi_sq + 1.0 / phi_sq; + return r - 3.0; +} + +pub fn sacred_identity_holds() -> bool { + var e : f64 = sacred_identity_error(); + return e < 0.0000000001 and e > -0.0000000001; +} + +pub fn fib_rounded(n: i32) -> i64 { + var a : i64 = 0; + var b : i64 = 1; + var i : i32 = 0; + while (i < n) { + var t : i64 = a + b; + a = b; + b = t; + i = i + 1; + } + return a; +} + +invariant nop_and_halt_close_the_table { OP_HALT == OPCODE_COUNT - 1 } +invariant the_vector_capacity_is_the_hybrid_capacity { VECTOR_CAPACITY == 59049 } + +test opcode_numbers_follow_the_declaration_order { + assert OP_NOP == 24; + assert OP_HALT == 25; + assert OPCODE_VALUES[0] == 0; + assert OPCODE_VALUES[25] == 25; +} + +test a_register_index_above_three_aliases_v0 { + assert vreg_index(0) == 0; + assert vreg_index(3) == 3; + assert vreg_index(4) == 0; + assert vreg_index(255) == 0; +} + +test the_step_rule_stops_at_the_end_and_on_halt { + assert step_continues(false, 0, 1) == true; + assert step_continues(false, 1, 1) == false; + assert step_continues(true, 0, 1) == false; +} + +test the_condition_codes_use_a_tenth_band { + assert cc_class(0.05) == 0; + assert cc_class(-0.05) == 0; + assert cc_class(0.5) == 1; + assert cc_class(-0.5) == -1; + assert cc_zero(0.09) == true; + assert cc_zero(0.1) == false; + assert quantise_f16(0.2) == 1; + assert quantise_f16(-0.2) == -1; + assert quantise_f16(0.1) == 0; +} + +test the_sacred_identity_and_fibonacci { + assert sacred_identity_holds() == true; + assert fib_rounded(10) == 55; + assert fib_rounded(0) == 0; + assert fib_rounded(1) == 1; +} diff --git a/apps/website/public/t27/files/specs/vsa/jones_polynomial.t27 b/apps/website/public/t27/files/specs/vsa/jones_polynomial.t27 index 6af457f11e..dce4911d5c 100644 --- a/apps/website/public/t27/files/specs/vsa/jones_polynomial.t27 +++ b/apps/website/public/t27/files/specs/vsa/jones_polynomial.t27 @@ -1,22 +1,22 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/vsa/jones_polynomial.t27 -// Jones Polynomial -- Link invariant computed from input structure -// V(L, t) = (-t^(-3/4))^w(L) * where is Kauffman bracket +// Jones Polynomial — Link invariant computed from input structure +// V(L, t) = (-t^(-3/4))^w(L) · ⟨L⟩ where ⟨L⟩ is Kauffman bracket module JonesPolynomial { use math::constants; - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 1. Knot/Link Representation - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ // Crossing sign: +1 for positive (overcrossing), -1 for negative (undercrossing) const CROSSING_POSITIVE : i32 = 1; const CROSSING_NEGATIVE : i32 = -1; - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 2. Writhe Calculation - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ // Compute writhe w(L) from crossing signs // w(L) = sum of crossing signs (positive = +1, negative = -1) @@ -28,14 +28,14 @@ module JonesPolynomial { return w; } - // =========================================================================== - // 3. Kauffman Bracket - // ========================================================================================= + // ═══════════════════════════════════════════════════════════════════════════ + // 3. Kauffman Bracket ⟨L⟩ + // ═════════════════════════════════════════════════════════════════════════════════════════ // Skein relation for Kauffman bracket: - // = A + A^{-1} - // = A^{-1} + A - // = (A + A^{-1}) + // ⟨L_+⟩ = A⟨L_0⟩ + A^{-1}⟨L_∞⟩ + // ⟨L_-⟩ = A^{-1}⟨L_0⟩ + A⟨L_∞⟩ + // ⟨L_0⟩ = (A + A^{-1})⟨L_∞⟩ // Where A = t^(-1/4), L_+ = positive crossing, L_- = negative crossing // A = t^(-1/4) parameter for Kauffman bracket @@ -44,10 +44,10 @@ module JonesPolynomial { } // Kauffman bracket of unknot (trivial knot) - // = 1 + // ⟨O⟩ = 1 const BRACKET_UNKNOT : f64 = 1.0; - // Compute Kauffman bracket from crossing signs (input structure) + // Compute Kauffman bracket ⟨L⟩ from crossing signs (input structure) // For small links, use known formulas; for larger, approximate fn bracket_from_crossings(crossings: [i32], t: f64) -> f64 { let A = bracket_parameter(t); @@ -70,13 +70,13 @@ module JonesPolynomial { // Unknot return BRACKET_UNKNOT; } else if n == 3 and pos_count == 3 { - // Trefoil (all positive): = -A^7 - A^3 + // Trefoil (all positive): ⟨trefoil⟩ = -A^7 - A^3 return -pow(A, 7.0) - pow(A, 3.0); } else if n == 3 and neg_count == 3 { - // Negative trefoil: = -A^{-7} - A^{-3} + // Negative trefoil: ⟨trefoil⟩ = -A^{-7} - A^{-3} return -pow(A, -7.0) - pow(A, -3.0); } else if n == 4 and pos_count == 2 and neg_count == 2 { - // Figure-eight: = A^8 - A^4 + 1 - A^{-4} + A^{-8} + // Figure-eight: ⟨figure-eight⟩ = A^8 - A^4 + 1 - A^{-4} + A^{-8} return pow(A, 8.0) - pow(A, 4.0) + 1.0 - pow(A, -4.0) + pow(A, -8.0); } else { // Generic approximation @@ -85,12 +85,12 @@ module JonesPolynomial { } } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 4. Jones Polynomial - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ // Compute Jones polynomial V(L, t) from link structure (crossing signs) - // V(L, t) = (-t^(-3/4))^w(L) * + // V(L, t) = (-t^(-3/4))^w(L) · ⟨L⟩ // Input: crossings = array of crossing signs (+1 or -1) representing link L // Output: Jones polynomial value at variable t fn jones_polynomial_from_structure(crossings: [i32], t: f64) -> f64 { @@ -101,7 +101,7 @@ module JonesPolynomial { } // Legacy: Compute Jones polynomial V(L, t) from writhe and Kauffman bracket - // V(L, t) = (-t^(-3/4))^w(L) * + // V(L, t) = (-t^(-3/4))^w(L) · ⟨L⟩ fn jones_polynomial(t: f64, bracket: f64, w: i32) -> f64 { let factor = pow(-pow(t, -0.75), w as f64); return factor * bracket; @@ -114,15 +114,15 @@ module JonesPolynomial { return jones_polynomial_from_structure(crossings, t); } - // Jones polynomial for trefoil knot with t = phi - // Expected: V(trefoil, phi) = phi^2 + 1 + // Jones polynomial for trefoil knot with t = φ + // Expected: V(trefoil, φ) = φ² + 1 fn jones_trefoil_at_phi() -> f64 { return jones_trefoil(PHI); } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 5. Helper Functions - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ // Power function (reused from constants.t27) fn pow(x: f64, n: f64) -> f64 { @@ -206,9 +206,9 @@ module JonesPolynomial { return x == 1.0 / 0.0 or x == -1.0 / 0.0; } - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 6. TDD-Inside-Spec: Tests - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ test writhe_empty_crossings given crossings: [i32] = [] @@ -249,12 +249,12 @@ module JonesPolynomial { test jones_trefoil_at_phi_approx given result = jones_trefoil_at_phi() and expected = PHI * PHI + 1.0 - // V(trefoil, phi) ~= phi^2 + 1 + // V(trefoil, φ) ≈ φ² + 1 when error = abs(result - expected) then error < 0.1 // Allow 10% tolerance for numeric approximation test jones_trefoil_at_phi_identity - // phi^2 + 1 = phi + phi^2 (trivial from phi^2 = phi + 1) + // φ² + 1 = φ + φ² (trivial from φ² = φ + 1) given result = jones_trefoil_at_phi() and phi_sq_plus_one = PHI * PHI + 1.0 when error = abs(result - phi_sq_plus_one) @@ -270,7 +270,7 @@ module JonesPolynomial { then abs(result - expected) < 1e-6 test jones_polynomial_from_structure_trefoil_phi - // V(trefoil, phi) from crossing signs + // V(trefoil, φ) from crossing signs given crossings: [i32] = [1, 1, 1] and t = PHI when result = jones_polynomial_from_structure(crossings, t) @@ -285,7 +285,7 @@ module JonesPolynomial { then abs(result - 1.0) < 0.01 test jones_polynomial_variable_t - // Jones polynomial with variable t (not fixed phi) + // Jones polynomial with variable t (not fixed φ) given crossings: [i32] = [1, 1, 1] // trefoil and t1 = 1.5 and t2 = 2.0 @@ -309,12 +309,12 @@ module JonesPolynomial { when result = jones_trefoil(t) then !isnan(result) and !isinf(result) - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 7. Formal Invariants - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ invariant jones_trefoil_phi_relation - // V(trefoil, phi) ~= phi^2 + 1 + // V(trefoil, φ) ≈ φ² + 1 assert |jones_trefoil_at_phi() - (PHI * PHI + 1.0)| < 0.1 invariant writhe_additivity @@ -322,7 +322,7 @@ module JonesPolynomial { // Rationale: writhe is linear sum of crossing signs invariant bracket_unknot_normalization - assert BRACKET_UNKNOT = 1.0 + assert BRACKET_UNKNOT == 1.0 // Rationale: Kauffman bracket of unknot is 1 (definition) invariant jones_polynomial_invariance @@ -331,12 +331,12 @@ module JonesPolynomial { // Rationale: Jones polynomial is a link invariant (unchanged under Reidemeister moves) invariant phi_jones_trefoil_identity - // For trefoil at t=phi: V = phi^2 + 1 = phi + phi^2 (from phi^2 = phi + 1) - assert jones_trefoil_at_phi() ~= PHI + PHI * PHI within 0.1 + // For trefoil at t=φ: V = φ² + 1 = φ + φ² (from φ² = φ + 1) + assert jones_trefoil_at_phi() ≈ PHI + PHI * PHI within 0.1 - // =========================================================================== + // ═══════════════════════════════════════════════════════════════════════════ // 8. Benchmarks - // ========================================================================================= + // ═════════════════════════════════════════════════════════════════════════════════════════ bench writhe_computation measure: cycles to compute writhe for 100 crossings diff --git a/apps/website/public/t27/files/specs/vsa/ops.t27 b/apps/website/public/t27/files/specs/vsa/ops.t27 index 0ae8af8341..a806a00437 100644 --- a/apps/website/public/t27/files/specs/vsa/ops.t27 +++ b/apps/website/public/t27/files/specs/vsa/ops.t27 @@ -2,16 +2,16 @@ // t27/specs/vsa/ops.t27 // Vector Symbolic Architecture Operations // Bind, Unbind, Bundle, Similarity for ternary hypervectors -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module VSAOps { // Import base types and operations use base::types; use base::ops; - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 1. Constants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ const VSA_DIM : usize = 1024; // Default hypervector dimension const SIMD_WIDTH : usize = 32; // SIMD trits per operation @@ -26,11 +26,11 @@ module VSAOps { const BIND_IDENTITY : u8 = 0; // Self-binding (vector unchanged) const BIND_INVERT : u8 = 1; // Inverted binding - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 2. Bind Operation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // bind(a: []Trit, b: []Trit, len: usize) -> []Trit + // bind(a: []Trit, b: []Trit, len: usize) → []Trit // XOR-like operation for balanced ternary hypervectors // Algorithm: if a[i] == 0 return b[i]; else if b[i] == 0 return a[i]; // else return a[i] * b[i] (which is either -1 or +1) @@ -60,11 +60,11 @@ module VSAOps { return result; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 3. Unbind Operation - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // unbind(bound: []Trit, key: []Trit, len: usize) -> []Trit + // unbind(bound: []Trit, key: []Trit, len: usize) → []Trit // Inverse of bind operation // For XOR-like bind: unbind(x, y) = bind(x, y) // Used for: retrieving bound values from hypervectors @@ -73,14 +73,14 @@ module VSAOps { return bind(bound, key, len); } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 4. Bundle Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // bundle2(a: []Trit, b: []Trit, len: usize) -> []Trit + // bundle2(a: []Trit, b: []Trit, len: usize) → []Trit // Majority vote of 2 ternary vectors // Algorithm: if a[i] == 0 return b[i]; else if b[i] == 0 return a[i]; - // else return sign(a[i] + b[i]) in {-1, 0, +1} + // else return sign(a[i] + b[i]) ∈ {-1, 0, +1} // Used for: superposition of items, set union fn bundle2(a: []Trit, b: []Trit, len: usize) -> []Trit { var result : []Trit = []; @@ -110,7 +110,7 @@ module VSAOps { return result; } - // bundle3(a: []Trit, b: []Trit, c: []Trit, len: usize) -> []Trit + // bundle3(a: []Trit, b: []Trit, c: []Trit, len: usize) → []Trit // Majority vote of 3 ternary vectors // Algorithm: sum = a[i] + b[i] + c[i]; result = sign(sum) // Used for: robust superposition, noise reduction @@ -137,11 +137,11 @@ module VSAOps { return result; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 5. Similarity Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // similarity(a: []Trit, b: []Trit, len: usize, metric: u8) -> f64 + // similarity(a: []Trit, b: []Trit, len: usize, metric: u8) → f64 // Compute similarity between two hypervectors // Metrics: COSINE, HAMMING, DOT fn similarity(a: []Trit, b: []Trit, len: usize, metric: u8) -> f64 { @@ -154,8 +154,8 @@ module VSAOps { return dot_product(a, b, len); } - // cosine_similarity(a: []Trit, b: []Trit, len: usize) -> f64 - // Cosine similarity: (a*b) / (||a|| * ||b||) + // cosine_similarity(a: []Trit, b: []Trit, len: usize) → f64 + // Cosine similarity: (a·b) / (||a|| * ||b||) fn cosine_similarity(a: []Trit, b: []Trit, len: usize) -> f64 { const dot = dot_product(a, b, len); const norm_a = vector_norm(a, len); @@ -168,15 +168,15 @@ module VSAOps { return dot / (norm_a * norm_b); } - // hamming_similarity(a: []Trit, b: []Trit, len: usize) -> f64 + // hamming_similarity(a: []Trit, b: []Trit, len: usize) → f64 // Hamming similarity: 1 - (hamming_distance / len) fn hamming_similarity(a: []Trit, b: []Trit, len: usize) -> f64 { const dist = hamming_distance(a, b, len); return 1.0 - (dist as f64 / len as f64); } - // dot_product(a: []Trit, b: []Trit, len: usize) -> f64 - // Compute dot product Sigma a[i] * b[i] + // dot_product(a: []Trit, b: []Trit, len: usize) → f64 + // Compute dot product Σ a[i] * b[i] fn dot_product(a: []Trit, b: []Trit, len: usize) -> f64 { var acc : i64 = 0; @@ -190,9 +190,9 @@ module VSAOps { return acc as f64; } - // vector_norm(v: []Trit, len: usize) -> f64 - // Compute L2 norm: sqrt(Sigma v[i]^2) - // For trits: v[i]^2 is always 0 or 1 + // vector_norm(v: []Trit, len: usize) → f64 + // Compute L2 norm: sqrt(Σ v[i]²) + // For trits: v[i]² is always 0 or 1 // So norm = sqrt(count of non-zero trits) fn vector_norm(v: []Trit, len: usize) -> f64 { var nonzero_count : usize = 0; @@ -208,7 +208,7 @@ module VSAOps { return sqrt(nonzero_count as f64); } - // hamming_distance(a: []Trit, b: []Trit, len: usize) -> usize + // hamming_distance(a: []Trit, b: []Trit, len: usize) → usize // Count positions where a[i] != b[i] fn hamming_distance(a: []Trit, b: []Trit, len: usize) -> usize { var distance : usize = 0; @@ -224,11 +224,11 @@ module VSAOps { return distance; } - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 6. Permutation Operations - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ - // permute(v: []Trit, len: usize, shift: usize) -> []Trit + // permute(v: []Trit, len: usize, shift: usize) → []Trit // Circular shift of hypervector by shift positions // Used for: sequence encoding, position tagging fn permute(v: []Trit, len: usize, shift: usize) -> []Trit { @@ -247,7 +247,7 @@ module VSAOps { return result; } - // encode_sequence(items: [][]Trit, count: usize, item_len: usize) -> []Trit + // encode_sequence(items: [][]Trit, count: usize, item_len: usize) → []Trit // Encode sequence of items using position-aware binding // result = items[0] + permute(items[1], 1) + permute(items[2], 2) + ... fn encode_sequence(items: [][]Trit, count: usize, item_len: usize) -> []Trit { @@ -263,7 +263,7 @@ module VSAOps { return result; } - // probe_sequence(seq: []Trit, candidate: []Trit, position: usize, len: usize) -> f64 + // probe_sequence(seq: []Trit, candidate: []Trit, position: usize, len: usize) → f64 // Probe if candidate is at position in encoded sequence // Returns similarity between seq and permute(candidate, position) fn probe_sequence(seq: []Trit, candidate: []Trit, position: usize, len: usize) -> f64 { @@ -271,9 +271,9 @@ module VSAOps { return similarity(seq, permuted, len, SIM_COSINE); } - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ // TDD-Inside-Spec: Tests and Invariants for VSAOps - // ======================================================================================================= + // ═══════════════════════════════════════════════════════════════════════════════════════════════════════ test vsa_bind_with_zeros given a = [Trit.zero, Trit.pos, Trit.neg] @@ -482,9 +482,9 @@ module VSAOps { invariant vsa_max_vectors_positive assert MAX_VECTORS > 0 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // Ring 048: Additional Algebraic Group Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // bind_self_inverse: a BIND (a BIND b) == b // For XOR-like bind, bind is its own inverse @@ -548,9 +548,9 @@ module VSAOps { and xz = bind(x, zero, 3) then hamming_distance(zx, x) == 0 and hamming_distance(xz, x) == 0 - // ================================================================= + // ═════════════════════════════════════════════════════════════════ // 27-Dimensional Coptic Trit Space (Ring 048) - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ const COPTIC_DIM : usize = 27 diff --git a/apps/website/public/t27/files/specs/vsa/packed_vsa.t27 b/apps/website/public/t27/files/specs/vsa/packed_vsa.t27 index c52e3313d3..10a50fc4cd 100644 --- a/apps/website/public/t27/files/specs/vsa/packed_vsa.t27 +++ b/apps/website/public/t27/files/specs/vsa/packed_vsa.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // Module: Packed VSA Operations -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module PackedVsa { // ======================================================================== @@ -39,7 +39,7 @@ module PackedVsa { // BundleLookupTable: Precomputed bundle operation results // BUNDLE_LUT[a][b] = packed(bundle(unpack(a), unpack(b))) - // Uses element-wise sum with threshold (+/-1 normalization) + // Uses element-wise sum with threshold (±1 normalization) pub const BundleLookupTable : [59049]u8; // DotLookupTable: Precomputed dot product results @@ -71,7 +71,7 @@ module PackedVsa { // packedUnbind(a: &PackedBigInt, b: &PackedBigInt) -> PackedBigInt // Unbind operation using bind (since b^2 = 1 for trits) - // Unbind: packedBind(a, b) where b in {-1, 1} + // Unbind: packedBind(a, b) where b ∈ {-1, 1} // Complexity: O(n/5) where n = trit length pub fn packedUnbind(a: &PackedBigInt, b: &PackedBigInt) -> PackedBigInt; @@ -150,7 +150,7 @@ module PackedVsa { // Verify: Self-similarity equals 1.0 given vec = randomPackedVector(100, 999) and sim = packedCosineSimilarity(&vec, &vec) - then abs(sim - 1.0) < 0.001 + then sim ≈ 1.0 test packed_cosine_orthogonal_is_zero // Verify: Orthogonal vectors have similarity ~0 @@ -198,7 +198,7 @@ module PackedVsa { assert true; invariant packed_unbind_inverts_bind - // Verify: unbind(bind(a, b), b) ~= a (for valid trits) + // Verify: unbind(bind(a, b), b) ≈ a (for valid trits) // Unbind is the inverse operation of bind assert true; @@ -213,7 +213,7 @@ module PackedVsa { assert true; invariant conversion_roundtrip - // Verify: fromHybrid(toHybrid(x)) ~= x + // Verify: fromHybrid(toHybrid(x)) ≈ x // Conversion must preserve data within tolerance assert true; diff --git a/apps/website/public/t27/files/specs/vsa/sdk.t27 b/apps/website/public/t27/files/specs/vsa/sdk.t27 index badf550a92..11e8cd91e8 100644 --- a/apps/website/public/t27/files/specs/vsa/sdk.t27 +++ b/apps/website/public/t27/files/specs/vsa/sdk.t27 @@ -9,9 +9,8 @@ module SDK { // ======================================================================== use base::types; use numeric::gf16; - use vsa::vsa_core; - use ternary::hybrid_arithmetic; - use tritype-base::Trit; + use vsa::core; + use hybrid_arithmetic; // ======================================================================== // 1. Hypervector - Main abstraction for developers @@ -56,7 +55,7 @@ module SDK { // ======================================================================== pub fn hypervector_random(dim: usize, seed: u64) Hypervector { return Hypervector{ - .data = vsa_core::random_vector(dim, seed), + .data = core::random_vector(dim, seed), .label = null, }; } @@ -68,7 +67,7 @@ module SDK { // ======================================================================== pub fn hypervector_random_labeled(dim: usize, seed: u64, label: []const u8) Hypervector { return Hypervector{ - .data = vsa_core::random_vector(dim, seed), + .data = core::random_vector(dim, seed), .label = label, }; } @@ -126,7 +125,7 @@ module SDK { // ======================================================================== pub fn hypervector_bind(self: Hypervector, other: Hypervector) Hypervector { return Hypervector{ - .data = vsa_core::bind(&self.data, &other.data), + .data = core::bind(&self.data, &other.data), .label = null, }; } @@ -140,7 +139,7 @@ module SDK { // ======================================================================== pub fn hypervector_unbind(self: Hypervector, key: Hypervector) Hypervector { return Hypervector{ - .data = vsa_core::unbind(&self.data, &key.data), + .data = core::unbind(&self.data, &key.data), .label = null, }; } @@ -154,7 +153,7 @@ module SDK { // ======================================================================== pub fn hypervector_bundle(self: Hypervector, other: Hypervector) Hypervector { return Hypervector{ - .data = vsa_core::bundle2(&self.data, &other.data), + .data = core::bundle2(&self.data, &other.data), .label = null, }; } @@ -168,7 +167,7 @@ module SDK { // ======================================================================== pub fn hypervector_bundle3(self: Hypervector, b: Hypervector, c: Hypervector) Hypervector { return Hypervector{ - .data = vsa_core::bundle3(&self.data, &b.data, &c.data), + .data = core::bundle3(&self.data, &b.data, &c.data), .label = null, }; } @@ -180,7 +179,7 @@ module SDK { // ======================================================================== pub fn hypervector_permute(self: Hypervector, k: usize) Hypervector { return Hypervector{ - .data = vsa_core::permute(&self.data, k), + .data = core::permute(&self.data, k), .label = null, }; } @@ -192,7 +191,7 @@ module SDK { // ======================================================================== pub fn hypervector_inverse_permute(self: Hypervector, k: usize) Hypervector { return Hypervector{ - .data = vsa_core::inverse_permute(&self.data, k), + .data = core::inverse_permute(&self.data, k), .label = null, }; } @@ -210,7 +209,7 @@ module SDK { // Complexity: O(n) where n = dimension // ======================================================================== pub fn hypervector_similarity(self: Hypervector, other: Hypervector) gf16 { - return vsa_core::cosine_similarity(&self.data, &other.data); + return core::cosine_similarity(&self.data, &other.data); } // hypervector_hamming_distance(self: Hypervector, other: Hypervector) -> usize @@ -221,7 +220,7 @@ module SDK { // Complexity: O(n) where n = dimension // ======================================================================== pub fn hypervector_hamming_distance(self: Hypervector, other: Hypervector) usize { - return vsa_core::hamming_distance(&self.data, &other.data); + return core::hamming_distance(&self.data, &other.data); } // hypervector_hamming_similarity(self: Hypervector, other: Hypervector) -> gf16 @@ -233,7 +232,7 @@ module SDK { // Complexity: O(n) where n = dimension // ======================================================================== pub fn hypervector_hamming_similarity(self: Hypervector, other: Hypervector) gf16 { - const dist = vsa_core::hamming_distance(&self.data, &other.data); + const dist = core::hamming_distance(&self.data, &other.data); const dim = gf16::from_f64(@as(f64, @floatFromInt(self.data.get_dimension()))); const similarity = gf16::sub(gf16::from_f64(1.0), gf16::div(dist, dim)); return similarity; @@ -248,7 +247,7 @@ module SDK { // Complexity: O(n) where n = dimension // ======================================================================== pub fn hypervector_dot_product(self: Hypervector, other: Hypervector) i32 { - return vsa_core::dot_product(&self.data, &other.data); + return core::dot_product(&self.data, &other.data); } // ======================================================================== @@ -273,7 +272,7 @@ module SDK { // Complexity: O(n) where n = dimension // ======================================================================== pub fn hypervector_count_non_zero(self: Hypervector) usize { - return vsa_core::count_non_zero(&self.data); + return core::count_non_zero(&self.data); } // hypervector_density(self: Hypervector) -> gf16 @@ -443,7 +442,7 @@ module SDK { test "hypervector_set_preserves_dimension" given a = hypervector_random(50, 123) - when a_set = hypervector_set(a, 1) + when a_set = hypervector_set(a, 1, Trit::pos) // W575: (self, index, value); the test asserts only the dimension then a_set.data.get_dimension() == 50 test "hypervector_set_extends_dimension" diff --git a/apps/website/public/t27/files/specs/vsa/sequence_hdc.t27 b/apps/website/public/t27/files/specs/vsa/sequence_hdc.t27 index ed796865f8..cbc3b2344c 100644 --- a/apps/website/public/t27/files/specs/vsa/sequence_hdc.t27 +++ b/apps/website/public/t27/files/specs/vsa/sequence_hdc.t27 @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // Module: Sequence Hyperdimensional Computing (HDC) -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module SequenceHdc { // ======================================================================== diff --git a/apps/website/public/t27/files/specs/vsa/similarity_search.t27 b/apps/website/public/t27/files/specs/vsa/similarity_search.t27 index 14c2053310..706a07f46d 100644 --- a/apps/website/public/t27/files/specs/vsa/similarity_search.t27 +++ b/apps/website/public/t27/files/specs/vsa/similarity_search.t27 @@ -3,15 +3,15 @@ // VSA Similarity Search Specification // Ring 062 - Efficient similarity search in hyperdimensional space // Defines semantic similarity operations for VSA trit vectors -// phi^2 + 1/phi^2 = 3 | TRINITY +// φ² + 1/φ² = 3 | TRINITY module VSASimilaritySearch { - use vsa::vsa_core; + use vsa::core; use math::constants; - // ===================================================== + // ═════════════════════════════════════════════════════ // 1. Search Configuration - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ const MAX_VECTORS : usize = 10000; const TOP_K_DEFAULT : usize = 10; @@ -37,9 +37,9 @@ module VSASimilaritySearch { query_hash : u64, } - // ===================================================== + // ═════════════════════════════════════════════════════ // 2. Cosine Similarity - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // cosine_similarity(a: []i32, b: []i32, len: usize) -> f64 // Compute cosine similarity between two trit vectors @@ -72,9 +72,9 @@ module VSASimilaritySearch { return @as(f64, @floatFromInt(dot_product)) / (norm_a_f * norm_b_f); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 3. Hamming Similarity - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // hamming_similarity(a: []i32, b: []i32, len: usize) -> f64 // Compute Hamming similarity between two trit vectors @@ -93,9 +93,9 @@ module VSASimilaritySearch { return @as(f64, @floatFromInt(matches)) / @as(f64, @floatFromInt(len)); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 4. Jaccard Index - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // jaccard_index(a: []i32, b: []i32, len: usize) -> f64 // Compute Jaccard index between two trit vectors @@ -126,9 +126,9 @@ module VSASimilaritySearch { return @as(f64, @floatFromInt(intersection)) / @as(f64, @floatFromInt(union_count)); } - // ===================================================== + // ═════════════════════════════════════════════════════ // 5. Top-K Search - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // find_top_k(query: []i32, vectors: [][]i32, k: usize) -> SearchResults // Find top K most similar vectors to query @@ -210,9 +210,9 @@ module VSASimilaritySearch { } } - // ===================================================== + // ═════════════════════════════════════════════════════ // 6. HNSW-like Approximate Search - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ // Hierarchical Navigable Small World graph structure struct HNSWNode { @@ -291,9 +291,9 @@ module VSASimilaritySearch { return dummy[0..10]; } - // ===================================================== + // ═════════════════════════════════════════════════════ // 7. TDD - Tests - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ test cosine_similarity_identical var a : [5]i32 = [_]i32{1, 0, -1, 1, 0}; @@ -363,9 +363,9 @@ module VSASimilaritySearch { then results.count >= 1 and results.results[0].index == 0 - // ===================================================== + // ═════════════════════════════════════════════════════ // 8. TDD - Invariants - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ invariant cosine_similarity_bounds // Cosine similarity must be in [-1, 1] @@ -428,9 +428,9 @@ module VSASimilaritySearch { assert results.results[0].similarity >= results.results[1].similarity } - // ===================================================== + // ═════════════════════════════════════════════════════ // 9. TDD - Benchmarks - // ========================================================================= + // ═════════════════════════════════════════════════════════════════════════ bench cosine_similarity_1000 // Measure: cycles to compute cosine similarity for 1000-dim vectors diff --git a/apps/website/public/t27/files/specs/vsa/trinity_compat.t27 b/apps/website/public/t27/files/specs/vsa/trinity_compat.t27 new file mode 100644 index 0000000000..b153e66310 --- /dev/null +++ b/apps/website/public/t27/files/specs/vsa/trinity_compat.t27 @@ -0,0 +1,258 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/vsa/trinity_compat.t27 -- the VSA and numeric contract the Trinity facade actually runs +; Source of truth for tools/trinity_vsa_compat.py and conformance/vsa_trinity_compat.json +; (gHashTag/t27#3566 = S04 of gHashTag/trinity#988). gHashTag/trinity re-exports sixteen VSA +; operations from the pinned package gHashTag/zig-golden-float (through gHashTag/zig-hdc, which +; re-exports them name by name); the canonical specs of this directory describe the same +; operations, and the two disagree on the zero trit, on unequal lengths and on the sequence +; helpers. This file names the facade, names each operation's owner and canonical function, +; records where they agree and where they differ, selects the semantics the pinned consumer +; executes as the reference for the Trinity profile, and states that reference as elementwise +; functions the C backend executes (the compiler does not lower array parameters, see S02): +; every trit pair, every tie, every length rule, every rotation index and the additive TRI27 +; register bind are decided here by a function and checked by a test. The vectors in +; conformance/vsa_trinity_compat.json are checked against these functions through the generated +; C. ASCII only (L3), English only (LANG-EN). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module vsa_trinity_compat; + +pub const KIND : str = "vsa-compat"; +pub const ID : str = "vsa/trinity_compat"; +pub const NAME : str = "VSA and numeric compatibility contract of the Trinity facade"; +pub const CONSUMER_REPO : str = "gHashTag/trinity"; +pub const PINNED_REVISION : str = "976df517419f918f05b78e73767e2fdf4aad14be"; +pub const FACADE : str = "trinity:src/trinity.zig"; +; The implementation owner: the package the consumer pins, and the module the names come from. +pub const OWNER_REPO : str = "gHashTag/zig-golden-float"; +pub const OWNER_REVISION : str = "e7ce32885de2a8c50b7b6a3030d0592202145dd1"; +pub const OWNER_MODULE : str = "src/vsa/core.zig"; +pub const BRIDGE_REPO : str = "gHashTag/zig-hdc"; +pub const BRIDGE_REVISION : str = "b73b2fa29874f4e30297f167a6ea8a3c2ded9d32"; +pub const BRIDGE_NOTE : str = "zig-hdc src/vsa/core.zig re-exports the owner name by name; it is not a second implementation"; +; The sixteen names src/trinity.zig re-exports, the owner function each resolves to (file:line at +; OWNER_REVISION), the canonical function of specs/vsa/vsa_core.t27 (name:line) and the finding. +pub const FACADE_EXPORTS : [16]str = ["bind", "unbind", "bundle2", "bundle3", "cosineSimilarity", "hammingDistance", "hammingSimilarity", "dotSimilarity", "permute", "inversePermute", "encodeSequence", "probeSequence", "randomVector", "bundleN", "countNonZero", "vectorNorm"]; +pub const FACADE_OWNER_FN : [16]str = ["src/vsa/core.zig:14", "src/vsa/core.zig:45", "src/vsa/core.zig:49", "src/vsa/core.zig:105", "src/vsa/core.zig:166", "src/vsa/core.zig:256", "src/vsa/core.zig:282", "src/vsa/core.zig:289", "src/vsa/core.zig:412", "src/vsa/core.zig:427", "src/vsa/core.zig:442", "src/vsa/core.zig:452", "src/vsa/core.zig:399", "src/vsa/core.zig:324", "src/vsa/core.zig:303", "src/vsa/core.zig:297"]; +pub const FACADE_SPEC_FN : [16]str = ["bind:85", "unbind:111", "bundle2:118", "bundle3:147", "cosine_similarity:209", "hamming_distance:248", "hamming_similarity:273", "dot_similarity:287", "permute:166", "inverse_permute:190", "encode_sequence:363", "probe_sequence:383", "random_vector:65", "bundle_n:323", "count_non_zero:348", "vector_norm:307"]; +pub const FACADE_FINDING : [16]str = ["differs: the spec treats a zero trit as an identity (bind(0, x) = x) and takes min(len); the owner multiplies (bind(0, x) = 0) over max(len) with a missing trit read as zero", "differs: the same operation as bind on both sides (bind is its own inverse on nonzero trits), so the two disagree exactly where bind does", "agrees on equal lengths: sign(a + b), a tie of opposite trits is zero; the spec keeps min(len), the owner max(len) with a missing trit read as zero", "agrees on equal lengths: sign(a + b + c); lengths as bundle2", "agrees on equal lengths: dot / (norm_a * norm_b), 0.0 when either norm is 0; the dot runs over min(len) on both sides, but the spec counts the norms over the shared prefix and the owner over each whole vector", "agrees on equal lengths: the spec adds the length difference to the count over min(len), the owner reads a missing trit as zero over max(len) and counts it only where the other trit is nonzero", "agrees on equal lengths: 1 - distance / max(len), 1.0 when max(len) is 0; on unequal lengths it follows the distance", "agrees on equal lengths: the dot runs over min(len) on both sides; the spec divides by min(len), the owner by max(len); both return 0.0 for two empty vectors", "agrees: rotate right by n mod len, so that result[(i + n) mod len] = v[i]; n == 0 mod len and an empty vector are identities", "agrees: rotate left by n mod len; inverse_permute(permute(v, n), n) == v", "differs: the spec bundles LCG item vectors by position, the owner adds permuted caller-supplied vectors with HybridBigInt.add, a balanced-ternary integer addition with carries, not a bundle", "differs: the spec probes with dot similarity over LCG item vectors, the owner with cosine similarity against a permuted caller-supplied candidate", "differs: the spec is a fixed LCG (rng * 1103515245 + 12345, mod 3), the owner is Zig std.Random.DefaultPrng(seed) with intRangeAtMost(i8, -1, 1); neither stream is reproduced here", "differs: the owner takes the sign of the elementwise sum of all vectors (two and three delegate to bundle2 and bundle3); the spec folds bundle3(result, result, next) from the third vector on, which weights the running result twice, and reads vectors[2] for a count of two", "agrees: the number of nonzero trits", "agrees: sqrt of the number of nonzero trits, computed by the owner as sqrt(dot(v, v))"]; +; One verdict per export: "agrees" on every input, "agrees on equal lengths" (the two differ only +; when the lengths differ) or "differs" (the two differ on equal-length inputs or in kind). +pub const VERDICTS : [3]str = ["agrees", "agrees on equal lengths", "differs"]; +pub const FACADE_VERDICT : [16]str = ["differs", "differs", "agrees on equal lengths", "agrees on equal lengths", "agrees on equal lengths", "agrees on equal lengths", "agrees on equal lengths", "agrees on equal lengths", "agrees", "agrees", "differs", "differs", "differs", "differs", "agrees", "agrees"]; +pub const AGREE_COUNT : u32 = 4; +pub const AGREE_ON_EQUAL_LENGTHS_COUNT : u32 = 6; +pub const DIFFER_COUNT : u32 = 6; +; The selected reference for the Trinity profile: what the pinned consumer executes. +pub const REFERENCE : str = "gHashTag/zig-golden-float e7ce3288 src/vsa/core.zig, as re-exported by gHashTag/zig-hdc b73b2fa2 and gHashTag/trinity src/trinity.zig"; +pub const BIND_ZERO : str = "annihilates: bind(0, x) = 0"; +pub const DIM_POLICY_BIND : str = "max(len), a missing trit reads as zero"; +pub const DIM_POLICY_BUNDLE : str = "max(len), a missing trit reads as zero"; +pub const DIM_POLICY_DOT : str = "min(len)"; +pub const DIM_POLICY_HAMMING : str = "max(len), a missing trit reads as zero"; +pub const COSINE_ZERO_NORM : str = "0.0 when either norm is 0"; +pub const HAMMING_SIMILARITY_EMPTY : str = "1.0 when max(len) is 0"; +pub const DOT_SIMILARITY_EMPTY : str = "0.0 when max(len) is 0"; +pub const NORM : str = "sqrt(dot(v, v)) = sqrt(count of nonzero trits); f64"; +; Classified separately: the two other bind semantics that exist in the corpus and the consumer. +pub const BIND_ZERO_IDENTITY : str = "specs/vsa/vsa_core.t27 bind, specs/vsa/ops.t27 bind and coptic_bind: a zero trit is an identity, bind(0, x) = x; not what the pinned consumer executes"; +pub const BIND_TRI27 : str = "trinity:src/tri27/emu/executor.zig BIND: additive on 27-trit register values modulo 19683, a zero register is an identity; a different operation on a different type"; +pub const TRI27_MODULUS : i32 = 19683; +; Numeric representation of the profile: i8 trits, five to a byte, i64 dot, f64 similarity. +pub const TRIT_NEG : i8 = -1; +pub const TRIT_ZERO : i8 = 0; +pub const TRIT_POS : i8 = 1; +pub const TRITS_PER_BYTE : u32 = 5; +; Two capacities in one package: packed_trit.zig caps at 12000 trits (2400 bytes), ternary/hybrid.zig +; (HybridBigInt, the type the sixteen operations take) at 59049 trits (11810 bytes). +pub const MAX_TRITS_PACKED : u32 = 12000; +pub const MAX_PACKED_BYTES : u32 = 2400; +pub const MAX_TRITS_HYBRID : u32 = 59049; +pub const HYBRID_PACKED_BYTES : u32 = 11810; +pub const SIMD_WIDTH : u32 = 32; +pub const DOT_ACCUMULATOR : str = "i32 in the owner (HybridBigInt.dotProduct), i64 in specs/vsa/vsa_core.t27; |dot| <= min(len) <= 59049, so both hold"; +pub const SIMILARITY_RANGE : str = "[-1, 1] as f64; the facade uses no GoldenFloat format (0 references to gf16 in src/trinity.zig, sdk.zig, science.zig, vm.zig, jit.zig)"; +pub const ALLOCATION : str = "the sixteen operations allocate nothing: HybridBigInt is a value with a fixed unpacked_cache of MAX_TRITS_HYBRID trits and results are returned by value; Codebook and AssociativeMemory of the SDK own their entries through the allocator passed to init"; +pub const ERRORS : str = "no operation returns an error; a length above the capacity is a precondition the caller keeps; a zero norm yields 0.0, an empty pair yields 1.0 for hamming similarity and 0.0 for dot similarity"; +pub const NOT_MEASURED : str = "the owner package does not build with the Zig available on this host (0.15.2 cannot link against the host SDK, the 0.17 nightly rejects the package), so the reference is read from its source at OWNER_REVISION and executed here through these functions; a differential run of the owner belongs to the owner's own tests"; +pub const ENABLED : bool = true; + +; --- The reference, elementwise ----------------------------------------------------------- + +pub fn trit_bind(a: i8, b: i8) -> i8 { + return a * b; +} + +pub fn trit_bind_zero_identity(a: i8, b: i8) -> i8 { + if (a == 0) { return b; } + if (b == 0) { return a; } + return a * b; +} + +pub fn trit_sign(sum: i8) -> i8 { + if (sum > 0) { return 1; } + if (sum < 0) { return -1; } + return 0; +} + +pub fn trit_bundle2(a: i8, b: i8) -> i8 { + return trit_sign(a + b); +} + +pub fn trit_bundle3(a: i8, b: i8, c: i8) -> i8 { + return trit_sign(a + b + c); +} + +pub fn trit_differs(a: i8, b: i8) -> u32 { + if (a == b) { return 0; } + return 1; +} + +pub fn trit_nonzero(a: i8) -> u32 { + if (a == 0) { return 0; } + return 1; +} + +pub fn len_max(la: u32, lb: u32) -> u32 { + if (la > lb) { return la; } + return lb; +} + +pub fn len_min(la: u32, lb: u32) -> u32 { + if (la < lb) { return la; } + return lb; +} + +; permute(v, n)[i] = v[rotate_right(i, n, len)]; inverse_permute(v, n)[i] = v[rotate_left(i, n, len)] +pub fn rotate_right(i: u32, n: u32, len: u32) -> u32 { + if (len == 0) { return 0; } + var k : u32 = n % len; + if (i >= k) { return i - k; } + return i + len - k; +} + +pub fn rotate_left(i: u32, n: u32, len: u32) -> u32 { + if (len == 0) { return 0; } + return (i + n % len) % len; +} + +pub fn packed_bytes(trits: u32) -> u32 { + return (trits + 4) / 5; +} + +pub fn pack_index(pos: u32) -> u32 { + return pos / 5; +} + +pub fn pack_slot(pos: u32) -> u32 { + return pos % 5; +} + +pub fn cosine_defined(nonzero_a: u32, nonzero_b: u32) -> bool { + if (nonzero_a == 0) { return false; } + if (nonzero_b == 0) { return false; } + return true; +} + +pub fn tri27_bind(a: i32, b: i32) -> i32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var r : i32 = (a + b) % TRI27_MODULUS; + if (r < 0) { r = r + TRI27_MODULUS; } + return r; +} + +invariant packed_capacity_is_bytes_times_trits { MAX_TRITS_PACKED == MAX_PACKED_BYTES * TRITS_PER_BYTE } +invariant the_hybrid_capacity_is_three_to_the_ten { MAX_TRITS_HYBRID == 59049 } +invariant the_tri27_modulus_is_three_to_the_nine { TRI27_MODULUS == 19683 } +invariant the_hybrid_capacity_packs_into_its_bytes { HYBRID_PACKED_BYTES * TRITS_PER_BYTE >= MAX_TRITS_HYBRID } +invariant the_facade_verdicts_are_counted { AGREE_COUNT + AGREE_ON_EQUAL_LENGTHS_COUNT + DIFFER_COUNT == 16 } + +test the_nine_bind_pairs_of_the_reference { + assert trit_bind(-1, -1) == 1; + assert trit_bind(-1, 0) == 0; + assert trit_bind(-1, 1) == -1; + assert trit_bind(0, -1) == 0; + assert trit_bind(0, 0) == 0; + assert trit_bind(0, 1) == 0; + assert trit_bind(1, -1) == -1; + assert trit_bind(1, 0) == 0; + assert trit_bind(1, 1) == 1; +} + +test the_zero_identity_variant_differs_on_four_pairs_only { + assert trit_bind_zero_identity(-1, 0) == -1; + assert trit_bind_zero_identity(0, -1) == -1; + assert trit_bind_zero_identity(0, 1) == 1; + assert trit_bind_zero_identity(1, 0) == 1; + assert trit_bind_zero_identity(0, 0) == 0; + assert trit_bind_zero_identity(1, -1) == -1; + assert trit_bind_zero_identity(-1, -1) == 1; +} + +test bind_is_its_own_inverse_on_nonzero_trits_only { + assert trit_bind(trit_bind(1, -1), -1) == 1; + assert trit_bind(trit_bind(-1, 1), 1) == -1; + assert trit_bind(trit_bind(1, 0), 0) == 0; +} + +test bundle_ties_and_the_zero_trit_is_the_identity_of_bundling { + assert trit_bundle2(1, -1) == 0; + assert trit_bundle2(-1, 1) == 0; + assert trit_bundle2(1, 0) == 1; + assert trit_bundle2(0, -1) == -1; + assert trit_bundle2(0, 0) == 0; + assert trit_bundle2(1, 1) == 1; + assert trit_bundle3(1, -1, 0) == 0; + assert trit_bundle3(1, 1, -1) == 1; + assert trit_bundle3(-1, -1, 1) == -1; + assert trit_bundle3(0, 0, 0) == 0; +} + +test hamming_and_nonzero_count_per_trit { + assert trit_differs(1, 1) == 0; + assert trit_differs(1, -1) == 1; + assert trit_differs(0, 1) == 1; + assert trit_nonzero(0) == 0; + assert trit_nonzero(-1) == 1; +} + +test length_rules_of_the_reference { + assert len_max(3, 5) == 5; + assert len_max(5, 3) == 5; + assert len_min(3, 5) == 3; + assert len_min(0, 4) == 0; +} + +test rotation_indices_and_their_inverse { + assert rotate_right(0, 1, 8) == 7; + assert rotate_right(3, 10, 8) == 1; + assert rotate_right(3, 8, 8) == 3; + assert rotate_left(7, 1, 8) == 0; + assert rotate_left(rotate_right(5, 3, 8), 3, 8) == 5; + assert rotate_right(rotate_left(2, 6, 8), 6, 8) == 2; + assert rotate_right(0, 1, 0) == 0; +} + +test packing_arithmetic { + assert packed_bytes(12000) == 2400; + assert packed_bytes(1) == 1; + assert packed_bytes(59049) == HYBRID_PACKED_BYTES; + assert packed_bytes(MAX_TRITS_PACKED) == MAX_PACKED_BYTES; + assert pack_index(12) == 2; + assert pack_slot(12) == 2; +} + +test cosine_is_undefined_without_a_nonzero_trit_on_each_side { + assert cosine_defined(0, 5) == false; + assert cosine_defined(5, 0) == false; + assert cosine_defined(1, 1) == true; +} + +test the_additive_tri27_register_bind_is_another_operation { + assert tri27_bind(0, 5) == 5; + assert tri27_bind(5, 0) == 5; + assert tri27_bind(19682, 2) == 1; + assert tri27_bind(-5, 2) == 19680; + assert tri27_bind(1, 1) == 2; +} diff --git a/apps/website/public/t27/files/specs/vsa/vsa_core.t27 b/apps/website/public/t27/files/specs/vsa/vsa_core.t27 index c8f3e8f8c0..59604f6583 100644 --- a/apps/website/public/t27/files/specs/vsa/vsa_core.t27 +++ b/apps/website/public/t27/files/specs/vsa/vsa_core.t27 @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // t27/specs/vsa/vsa_core.t27 // VSA (Vector Symbolic Architecture) Core Operations -// 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q -// phi^2 + 1/phi^2 = 3 | TRINITY +// ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q +// φ² + 1/φ² = 3 | TRINITY // // VSA provides high-dimensional vector operations for: // - Symbolic reasoning (bind/unbind for role-filler pairs) @@ -96,7 +96,7 @@ pub fn bind(a: Hypervector, b: Hypervector) Hypervector { } else if (bi == TRIT_ZERO) { result[i] = ai; } else { - // Both non-zero: multiply (both are +/-1) + // Both non-zero: multiply (both are ±1) result[i] = if (ai == bi) { TRIT_POS } else { TRIT_NEG }; } i = i + 1; @@ -203,7 +203,7 @@ pub fn inverse_permute(v: Hypervector, shift: usize) Hypervector { } /// Cosine similarity between two hypervectors -/// Formula: (a*b) / (||a|| * ||b||) +/// Formula: (a·b) / (||a|| * ||b||) /// Range: [-1, 1] where 1 = identical, -1 = opposite /// Complexity: O(dim) pub fn cosine_similarity(a: Hypervector, b: Hypervector) gf16 { @@ -281,7 +281,7 @@ pub fn hamming_similarity(a: Hypervector, b: Hypervector) gf16 { } /// Dot product similarity (raw dot product, normalized by dimension) -/// Formula: (a*b) / dim +/// Formula: (a·b) / dim /// Range: [-1, 1] for unit trits /// Complexity: O(dim) pub fn dot_similarity(a: Hypervector, b: Hypervector) gf16 { @@ -301,7 +301,7 @@ pub fn dot_similarity(a: Hypervector, b: Hypervector) gf16 { } /// Vector norm (L2 norm) -/// Formula: sqrt(Sigma trit[i]^2)) +/// Formula: sqrt(Σ trit[i]²)) /// For trits, this is sqrt(count of non-zero trits) /// Complexity: O(dim) pub fn vector_norm(v: Hypervector) gf16 { @@ -419,7 +419,7 @@ test "vsa_random_vector_deterministic" { } test "vsa_bind_self_inverse" { - // Verify bind(a, bind(a, b)) ~= b + // Verify bind(a, bind(a, b)) ≈ b var a = [_]Trit{TRIT_POS} ** 10; var b = [_]Trit{TRIT_NEG} ** 10; @@ -700,7 +700,7 @@ test "vsa_bundle_n_consistency" { // ============================================================================ invariant vsa_bind_self_inverse_property { - // bind(a, bind(a, b)) ~= b for all a, b + // bind(a, bind(a, b)) ≈ b for all a, b const dims = [_]usize{ 10, 50 }; inline for (dims) |dim| { var a = random_vector(1, dim); @@ -813,7 +813,7 @@ invariant vsa_vector_norm_max_value { // vector_norm <= sqrt(dim) for trits in {-1, 0, 1} const v = random_vector(1, 100); const norm = vector_norm(v); - @compileAssert(norm <= @sqrt(@as(gf16, @floatCast(v.len)))); + @compileAssert(norm <= @sqrt(@floatCast(v.len))); } invariant vsa_count_non_zero_accurate { diff --git a/apps/website/public/t27/files/test_highlight.t27 b/apps/website/public/t27/files/test_highlight.t27 index 97eb03cece..77eadd10de 100644 --- a/apps/website/public/t27/files/test_highlight.t27 +++ b/apps/website/public/t27/files/test_highlight.t27 @@ -18,7 +18,7 @@ pub const Trit = enum(i8) { ; Struct with arrays pub struct State { trits: [9]Trit, - buffer: [128]u8 = [_]u8{0} ** 128, + buffer: [_]u8{0} ** 128, phi: f64 } @@ -30,7 +30,7 @@ pub fn compute_phi(x: i8) f64 { ; Switch expression pub fn invert_trit(a: Trit) Trit { - return switch (a) { + switch (a) { .neg => .pos, .neu => .neu, .pos => .neg diff --git a/apps/website/public/t27/files/tests/comprehensive_suite.t27 b/apps/website/public/t27/files/tests/comprehensive_suite.t27 index 710d472d40..75d8d5b492 100644 --- a/apps/website/public/t27/files/tests/comprehensive_suite.t27 +++ b/apps/website/public/t27/files/tests/comprehensive_suite.t27 @@ -1,4 +1,4 @@ -; comprehensive_suite.t27 -- documents the repository integration suite +; comprehensive_suite.t27 a documents the repository integration suite ; Executed by: t27c suite (or tri test). No shell runners under tests/. ; phi^2 + 1/phi^2 = 3 | TRINITY diff --git a/apps/website/public/t27/files/trinity-fpga/specs/numeric/catalog_coverage_delta.t27 b/apps/website/public/t27/files/trinity-fpga/specs/numeric/catalog_coverage_delta.t27 index 17c1579938..eef5704f67 100644 --- a/apps/website/public/t27/files/trinity-fpga/specs/numeric/catalog_coverage_delta.t27 +++ b/apps/website/public/t27/files/trinity-fpga/specs/numeric/catalog_coverage_delta.t27 @@ -7538,7 +7538,7 @@ correction "the gate's own number folded three different things into one" { now "the three are counted separately and only a parse defect fails the gate" after_the_tekum_fix "15, down from 16" - liveness_checked "none of the 15 is instantiated or built by anything. Three names appear elsewhere and all three are inert: a comment in trinity_v2.xdc naming a .vibee spec, a workflow COMMENT mentioning trinity_v1_morse.v, and uart_simple.xdc -- which is a single line containing its own absolute path from another machine and another user, /Users/playra/trinity-w1/..., and is a separate small defect of its own" + liveness_checked "none of the 15 is instantiated or built by anything. Three names appear elsewhere and all three are inert: a comment in trinity_v2.xdc naming a .vibee spec, a workflow COMMENT mentioning trinity_v1_morse.v, and uart_simple.xdc -- which is a single line containing its own absolute path from another machine and another user, /Users/playom/trinity-fpga/..., and is a separate small defect of its own" } retraction "pass 146 cited an experiment that could not have run" { diff --git a/apps/website/public/t27/files/trinity-fpga/specs/numeric/script_tree_sweep.t27 b/apps/website/public/t27/files/trinity-fpga/specs/numeric/script_tree_sweep.t27 index 7cca03a2e2..3bc2ec8f99 100644 --- a/apps/website/public/t27/files/trinity-fpga/specs/numeric/script_tree_sweep.t27 +++ b/apps/website/public/t27/files/trinity-fpga/specs/numeric/script_tree_sweep.t27 @@ -39,7 +39,7 @@ result READ_ONLY_SCRIPTS_RUN { failing 32 failure_causes """ -26 of the 32 fail identically: ROOT = Path("/Users/playra/t27"), an absolute path +26 of the 32 fail identically: ROOT = Path("/Users/playom/t27"), an absolute path into a home directory that is not this machine's. The rest want a required argument or an uninstalled module (pysr, an in-tree `contrib` package). """ @@ -92,7 +92,7 @@ agreeing codes per format -- stands unqualified. // ---- Reported, deliberately not fixed ----------------------------------------- finding THIRTY_TWO_SCRIPTS_POINT_AT_ANOTHER_MACHINE { - name "scripts/ carries 32 files hardcoding /Users/playra/t27" + name "scripts/ carries 32 files hardcoding /Users/playom/t27" severity LOW detail """ @@ -135,7 +135,7 @@ one to notice -- nobody re-reads a limitation to check it is not too modest. measurement WRITE_SCRIPTS_RUN { method """ Copied the repo without .git, confirmed first that no script hardcodes a path into -the live environment -- the only absolute roots present are /Users/playra/t27 and +the live environment -- the only absolute roots present are /Users/playom/t27 and /home/user/workspace, neither of which exists here -- and excluded the one script referencing /etc. Then ran the remaining 200 with a 25s ceiling. """ diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/avs_controller_48.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/avs_controller_48.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/avs_controller_48.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/avs_controller_48.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/avs_controller_96.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/avs_controller_96.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/avs_controller_96.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/avs_controller_96.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/avs_reconf.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/avs_reconf.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/avs_reconf.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/avs_reconf.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/dfs_gate.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/dfs_gate.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/dfs_gate.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/dfs_gate.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/drowsy_ret.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/drowsy_ret.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/drowsy_ret.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/drowsy_ret.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/fbb_active_path.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/fbb_active_path.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/fbb_active_path.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/fbb_active_path.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/fp8_e4m3.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/fp8_e4m3.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/fp8_e4m3.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/fp8_e4m3.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/fp8_e5m2.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/fp8_e5m2.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/fp8_e5m2.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/fp8_e5m2.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/gf128.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf128.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/gf128.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf128.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/gf16_to_fp16.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf16_to_fp16.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/gf16_to_fp16.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf16_to_fp16.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/gf16_to_posit16.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf16_to_posit16.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/gf16_to_posit16.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf16_to_posit16.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/gf256.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf256.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/gf256.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf256.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/gf32_to_fp32.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf32_to_fp32.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/gf32_to_fp32.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf32_to_fp32.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/gf64.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf64.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/gf64.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/gf64.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/holo_mux_x4.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/holo_mux_x4.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/holo_mux_x4.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/holo_mux_x4.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/int4.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/int4.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/int4.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/int4.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/int8.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/int8.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/int8.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/int8.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/lane_l_precheck.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/lane_l_precheck.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/lane_l_precheck.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/lane_l_precheck.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/lut_npu_81_entry.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/lut_npu_81_entry.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/lut_npu_81_entry.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/lut_npu_81_entry.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/nf4.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/nf4.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/nf4.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/nf4.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/null_pe.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/null_pe.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/null_pe.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/null_pe.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/posit16.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/posit16.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/posit16.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/posit16.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/purkinje_thermal_gate.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/purkinje_thermal_gate.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/purkinje_thermal_gate.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/purkinje_thermal_gate.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/sparse_mask.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/sparse_mask.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/sparse_mask.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/sparse_mask.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/sparse_skip.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/sparse_skip.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/sparse_skip.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/sparse_skip.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/spec_exit.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/spec_exit.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/spec_exit.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/spec_exit.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/stoch_round.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/stoch_round.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/stoch_round.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/stoch_round.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/fpga/subth_clk.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/fpga/subth_clk.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/fpga/subth_clk.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/fpga/subth_clk.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/binary16.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/binary16.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/binary16.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/binary16.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/formats.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/formats.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/formats.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/formats.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf12.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf12.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf12.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf12.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf128.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf128.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf128.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf128.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf16.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf16.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf16.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf16.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf20.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf20.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf20.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf20.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf24.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf24.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf24.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf24.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf256.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf256.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf256.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf256.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf32.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf32.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf32.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf32.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf4.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf4.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf4.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf4.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf64.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf64.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf64.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf64.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/gf8.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf8.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/gf8.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/gf8.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/goldenfloat_family.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/goldenfloat_family.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/goldenfloat_family.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/goldenfloat_family.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/int4.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/int4.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/int4.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/int4.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/int8.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/int8.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/int8.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/int8.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/nf4.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/nf4.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/nf4.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/nf4.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/phi_ratio.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/phi_ratio.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/phi_ratio.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/phi_ratio.t27 diff --git a/apps/website/public/t27/files/chips/euler/specs/numeric/tri_net_formats.t27 b/apps/website/public/t27/files/tt-trinity-euler/specs/numeric/tri_net_formats.t27 similarity index 100% rename from apps/website/public/t27/files/chips/euler/specs/numeric/tri_net_formats.t27 rename to apps/website/public/t27/files/tt-trinity-euler/specs/numeric/tri_net_formats.t27 diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/agents/turbobaby.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/agents/turbobaby.t27 new file mode 100644 index 0000000000..bb555c2f96 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/agents/turbobaby.t27 @@ -0,0 +1,137 @@ +// SPDX-License-Identifier: Apache-2.0 +module turbobaby-agent; + +; specs/agents/turbobaby.t27 -- the owner agent of the TurboBaby world +; Source of truth for the agent card on t27.ai (#/agents?agent=turbobaby/BOT), and the +; definition issue #23 asks for, stated once in the form the corpus already uses for an +; agent: KIND/ID/NAME identity, the documents that bind it, entry and exit invariants, +; and SKILLS/TOOLS bound only where a source names them. +; +; WHY (measured 2026-09-12). The epic names an owner agent; nothing in the repository +; defined one, so the assignment was a label with nothing behind it. Two further +; measurements shaped what is below. First, this world is not a letter of the t27 +; alphabet: specs/agents/ holds exactly 27 cards, A..Z plus Ti, and all 27 seats are +; taken, so LETTER, ORDINAL, REGISTER, LAYER and ARCHETYPE have no honest value here and +; are absent with a note rather than invented. Second, of the 694 vendored spec files 187 +; (27%) carry no test, invariant or bench, and all 27 agent cards are in that 187. L4 +; TESTABILITY is therefore declared but not enforced; this card carries tests anyway, +; because a card nobody can check is a claim, not a specification. +; +; What this card never does: it does not grant the agent write access to the owner's +; operations spreadsheets, it does not name a price, and it does not restate the fleet. +; Numbers live in data/fleet_seed.json with their provenance; decisions live in +; DECISIONS.md. A second copy here would be a third place for a price to drift. +; phi^2 + 1/phi^2 = 3 | TRINITY + +pub const KIND : str = "agent"; +pub const ID : str = "turbobaby/BOT"; +pub const NAME : str = "TurboBaby (Rental & Sales)"; +pub const DOMAIN : str = "Motorbike rental and sales, Kamala, Phuket"; +; The market this deployment runs in, and what "any market" means. The owner's standing +; instruction (2026-09-13) is that this agent runs on any market, country and currency. +; The contract that makes that true is specs/turbobaby/market_profile.t27 (D18); this card +; names the deployment instance and the contract without restating the profile's fields, +; because no value is typed twice (the fields are owned by the market contract and the +; seed's market block). +pub const MARKET : str = "Thailand / THB"; +pub const MARKET_CONTRACT : str = "specs/turbobaby/market_profile.t27"; +pub const MARKET_NOTE : str = "The deployment profile is the market block in data/fleet_seed.json; a second market is a second profile against the same contract, not a fork of the money formatter."; +pub const WORLD : str = "gHashTag/turbobaby-user-bot"; +pub const SUMMARY_EN : str = "Owns the TurboBaby Mini App: the bike catalog, rental checkout, the biker game, and the canonical .t27 contracts under specs/turbobaby. Publishes only what a source states."; + +; The t27 agent alphabet is a closed set of 27 seats (A..Z plus Ti), every one of them +; already bound in gHashTag/t27 specs/agents/. This agent owns a different world, so it +; is namespaced under its own world in ID and claims no letter. +pub const ALPHABET_SEAT : str = ""; +pub const ALPHABET_SEAT_NOTE : str = "Not a letter of the t27 alphabet: all 27 seats in specs/agents/ are bound, and taking one would displace a defined agent. LETTER, ORDINAL, REGISTER, LAYER and ARCHETYPE are alphabet attributes and are omitted rather than fabricated."; + +; The documents that bind this agent, as repo-root paths in this world. Unlike the t27 +; alphabet agents, which are bound by SOUL.md and AGENTS_ALPHABET.md, this agent is bound +; by the decision log and the seed's provenance record. +pub const KEY_FILES : [5]str = ["DECISIONS.md", "data/fleet_seed.json", "docs/t27-reuse-map.md", "scripts/verify_fleet_seed.py", "scripts/verify_t27_specs.py"]; + +pub const ENTRY_INVARIANT : str = "DECISIONS.md states a price authority (D11) and a prohibition list (D14), and scripts/verify_fleet_seed.py exits 0"; +pub const EXIT_INVARIANT : str = "No published number lacks a source, no prohibited field is in the tree, and every merge names the issue it closes"; + +; ---- the three laws this agent is held to ------------------------------------------- +; Quoted from the t27 invariant laws, not paraphrased, because the agent is checked +; against them by gates it does not own. +pub const LAW_L1 : str = "TRACEABILITY: no merge without Closes #N"; +pub const LAW_L3 : str = "PURITY: ASCII-only sources, English identifiers"; +pub const LAW_L4 : str = "TESTABILITY: every .t27 carries a test, invariant or bench"; + +; ---- the two rules that outrank convenience ----------------------------------------- +; D11. The client price is the number the owner's live sheet returns. Silence is an +; answer: when the sheet does not answer, the bot says a human quotes this price and +; emits no number at all. Invention and silence are forbidden equally, and a computed +; stand-in is invention. +pub const PRICE_AUTHORITY : str = "door"; +pub const PRICE_ON_SILENCE : str = "no number; a human quotes this price"; + +; D14. What must never enter this repository in any form. The internal sources carry all +; seven; the public tree carries none. This is the line the agent is least free to cross, +; so it is enumerated here rather than referenced. +pub const FORBIDDEN_FIELDS : [7]str = [ + "renter names, telegram handles, phone numbers", + "outstanding debts", + "physical key codes", + "tax and insurance dates", + "per-unit purchase cost, and any sale price derived from it", + "plate numbers", + "free-text personal notes from the rental-history sheet", +]; +pub const PII_RULE : str = "Only aggregate, de-identified signal is published: tariffs, deposit tiers, term patterns, unit counts, model years, colours, and the scooter/motorcycle class split."; + +; ---- skills and tools ---------------------------------------------------------------- +; Bound only where a source in this repository names one. The note cites what was read. +pub const SKILLS : [0]str = []; +pub const SKILLS_NOTE = "No source binds a skill to this agent: this repository has no .claude/skills directory, and neither DECISIONS.md nor any open issue names a skill id."; +pub const TOOLS : [3]str = ["scripts/verify_fleet_seed.py", "scripts/verify_t27_specs.py", "cargo test --features backend"]; +pub const TOOLS_NOTE = "The two repository verifiers guard seed provenance and non-vacuous .t27 compilation; the backend fitness suite holds migration wiring, orphan-table and entity-wiring checks."; + +pub const EXPERIENCE_LOG : str = "DECISIONS.md"; +pub const ENABLED : bool = true; + +; ---- checks --------------------------------------------------------------------------- + +test the_card_is_an_agent_of_its_own_world { + assert KIND == "agent"; + assert ID == "turbobaby/BOT"; + assert WORLD == "gHashTag/turbobaby-user-bot"; +} + +test no_alphabet_seat_is_claimed { + assert ALPHABET_SEAT == ""; +} + +; D18: the market is a declared profile, not ambient Thailand. If the contract reference +; is deleted this fails, and a card that names no market contract is a card whose +; deployment facts are unowned again. +test the_market_is_a_declared_profile_not_ambient { + assert MARKET_CONTRACT == "specs/turbobaby/market_profile.t27"; + assert MARKET == "Thailand / THB"; +} + +test the_price_authority_is_the_door_and_silence_is_an_answer { + assert PRICE_AUTHORITY == "door"; + assert PRICE_ON_SILENCE == "no number; a human quotes this price"; +} + +test every_forbidden_field_is_enumerated { + assert FORBIDDEN_FIELDS[0] == "renter names, telegram handles, phone numbers"; + assert FORBIDDEN_FIELDS[4] == "per-unit purchase cost, and any sale price derived from it"; + assert FORBIDDEN_FIELDS[5] == "plate numbers"; +} + +test traceability_is_stated_not_implied { + assert LAW_L1 == "TRACEABILITY: no merge without Closes #N"; +} + +; The prohibition list is the one array whose length is load-bearing: a field dropped +; from it is a field the agent may publish. Pinning the count means a silent deletion +; fails here instead of passing as a tidy-up. +invariant the_prohibition_list_is_whole + assert FORBIDDEN_FIELDS.len == 7 + +invariant the_agent_is_enabled + assert ENABLED == true diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/availability.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/availability.t27 new file mode 100644 index 0000000000..36f1733898 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/availability.t27 @@ -0,0 +1,570 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/availability.t27 -- what "available" counts, and everything it refuses to count +; Source of truth for the availability half of issue #4's `bike_units` table (the status set and +; the derived per-family count), for the availability filter of the catalog API (#8), and for the +; "unavailable rather than hidden" rule the detail screen (#9) renders. Every number below is read +; from data/fleet_seed.json (measured_at 2026-09-12) or from DECISIONS.md, and each carries where +; it comes from. Nothing here is computed from a price and nothing is parsed out of prose. +; ASCII only (L3), English only (LANG-EN). +; -- +; WHY (measured 2026-09-12): the fleet is 37 units, 11 rented and 26 at base, and 11 + 26 == 37 +; exactly. That equality is the reason this is a spec and not a comment. The internal register's +; own HEADER claims 38 units, 11 rented, 27 at base -- and 11 + 27 == 38 closes just as neatly. +; Two triples, both internally consistent, one unit apart; only the 37 rows that actually exist +; choose between them, and the seed chose the rows (data/fleet_seed.json, "discrepancy"). So the +; totality check alone cannot tell a correct fleet from a fleet seeded off the header: the count +; has to be pinned to the measured rows, which is what the invariants below do. An availability +; number wrong by one unit is a double-booked bike, and double-booking is the failure availability +; exists to prevent. +; -- +; WHERE THE ISSUE IS REFUTED: #19 asks for an invariant about a "reserved" unit. No source in this +; repository has a reserved status. The shipped schema enumerates exactly four wire values -- +; available, rented, service, retired (migrations/078_bike_units.sql:32) -- and the register +; measures two of them: 11 rented, 26 at base, leaving 37 - 11 - 26 = 0 units in any third class. +; A booking hold cannot become a reserved UNIT either: D8 puts the cart line's catalog_id on the +; FAMILY key, because a customer books a model and the shop assigns the unit, so no unit row +; exists for a hold to sit on. RESERVED is therefore recorded as absent with a note -- the form +; specs/agents/turbobaby.t27 already uses for the alphabet seat it cannot honestly claim -- and +; the acceptance criterion is met by something stronger than the invariant asked for: +; available_count matches the AVAILABLE discriminant and nothing else, so rented, service, +; retired, and any status a later migration adds under any name are excluded by construction +; instead of by a deny-list this file must maintain. +; -- +; WHERE THE ISSUE IS REFUTED A SECOND TIME (D17): #4's brief specifies the column as +; status ENUM('available','rented','service','sold'). The shipped migration declares +; CHECK (status IN ('available','rented','service','retired')) -- migrations/078_bike_units.sql:32 +; -- and explains the choice at 078:16-19: service and retired exist so a unit can leave the +; available pool without being deleted and orphaning its service history in 080. Every other +; source in the tree agrees with the migration rather than with the brief: src/api/bikes.rs:452 +; declares UNIT_STATUS_RETIRED and its test the_four_statuses_match_the_check_constraint pins the +; four-value array, src/db/entities/bike_unit.rs:40 and src/db/bikes.rs:42 restate it, +; scripts/verify_fleet_seed.py:59 parses no other value, src/ui/screens/admin_screen.rs:485 +; renders it, and the sibling spec specs/bike_catalog.t27:59 already writes "retired". The string +; "sold" appears nowhere in this repository as a unit status. So this file follows the migration: +; D17 makes an issue a brief and not a measurement, and the earlier revision of this spec took the +; fourth value from #4's PROSE and then labelled it a measurement. The cost is not cosmetic -- a +; backend writing STATUS_NAMES[3] into bike_units.status would hand Postgres a value the column +; rejects with a 23514 CHECK violation. This is the twin of the engine_cc / displacement_cc trap +; D17 already records for #18. +; -- +; WHY AVAILABLE IS NOT ZERO: the discriminants start at 1 and 0 means unset. D9 records three +; constructs in this tree that turn an unknown into a confident zero, one of them fail-open by +; design. A fixed-length slot array is a fourth: xmax-300-new writes 7 of 10 slots and leaves 3 +; zeroed, and had AVAILABLE been the zero those 3 would have read as bookable bikes. The direction +; of the residual error is deliberate: an unrecognised code counts as not available, which costs a +; booking, rather than as available, which double-books one. +; -- +; WHAT THIS FILE NEVER DOES: it holds no renter identity, and that absence is the model rather +; than an omission -- D14 forbids names, handles, phone numbers, key codes, plate numbers and +; free-text notes anywhere in this repository, fixtures included, so a slot is the NN of a +; synthetic -NN label and carries one status and nothing else. It holds no dates and +; no calendar: a status is a fact about now, while the term lives on the cart line (D8) and in +; rental_terms (#17). And it never prices anything. A family with zero available units still shows +; its published rate rather than hiding it (#4) -- and a family with no published rate at all, +; which is click-125 and only click-125, renders a dash rather than a zero, an average or a +; "from" (the seed's field_notes on null) -- while the client-facing number is still the one the +; door returns: never computed here, never a "from", never a range, never silence (D11). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module availability; + +pub const KIND : str = "availability"; +pub const ID : str = "turbobaby/availability"; +pub const NAME : str = "Unit availability"; +pub const SOURCE : str = "data/fleet_seed.json"; +pub const MEASURED_AT : str = "2026-09-12"; + +; --- The status set ------------------------------------------------------------------------- +; The four wire values are the CHECK constraint of migrations/078_bike_units.sql:32: +; status TEXT CHECK (status IN ('available','rented','service','retired')). NOT #4's brief, which +; spells the fourth value 'sold' -- see the second refutation in the header. The u8 codes here +; are this spec's own ordinals and they start at ONE, because zero is what an unwritten slot in +; a fixed-length array already holds (see the header). +; The codes are written as plain constants rather than as an enum type on purpose: the corpus +; carries two incompatible spellings for an enum member inside an assert -- `ErrorCode::Success` +; in specs/enrichment/youtube_transcript.t27 against the leading-dot form used elsewhere -- and a +; discriminant that spells differently in two backends is a discriminant that can drift. +pub const STATUS_UNSET : u8 = 0; +pub const STATUS_AVAILABLE : u8 = 1; +pub const STATUS_RENTED : u8 = 2; +pub const STATUS_SERVICE : u8 = 3; +pub const STATUS_RETIRED : u8 = 4; +; Indexed by code minus one; the string is what the database column stores. +pub const STATUS_NAMES : [4]str = ["available", "rented", "service", "retired"]; + +; #19's "reserved". Empty because no source names it, with the reason stated rather than implied. +pub const RESERVED_STATUS : str = ""; +pub const RESERVED_STATUS_NOTE : str = "Issue #19 asks for a reserved status; nothing in this repository has one. migrations/078_bike_units.sql:32 enumerates four wire values and reserved is not among them, and D8 puts a booking hold on the family key rather than on a unit, so no unit row exists for a hold to occupy. available_count matches AVAILABLE exactly, which excludes a held unit whatever a later migration calls it."; + +; --- The measured fleet --------------------------------------------------------------------- +; 14 in-stock families in the seed's own order, so a diff against data/fleet_seed.json reads +; line for line. This table is a SECOND copy of the seed's counts and a copy is a drift risk +; (D15). It is here because the arithmetic cannot be checked without it, and the copy is +; currently ungated: scripts/verify_fleet_seed.py pins migrations/082_bikes_seed.sql to the JSON +; and knows nothing about .t27, so comparing this table to the seed is the next gate to write, +; not a job something already does. +pub const FAMILY_KEYS : [14]str = [ + "click-125", "nmax-155", "xsr-155", "cb-300r", "forza-300", "mt-03-300", "xmax-300", + "xmax-300-new", "adv-350", "ninja-400", "cb-650r", "cbr-650r", "vulcan-s-650", "xadv-750", +]; +pub const FAMILY_UNITS : [14]u8 = [1, 10, 2, 1, 1, 1, 3, 7, 5, 1, 1, 1, 1, 2]; +pub const FAMILY_RENTED : [14]u8 = [1, 5, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1]; +pub const FAMILY_AVAILABLE : [14]u8 = [0, 5, 1, 1, 0, 0, 3, 6, 5, 1, 1, 1, 1, 1]; + +; seed "totals". These are the published figures the three columns above must reproduce. +pub const FAMILIES_IN_STOCK : u8 = 14; +pub const FAMILIES_OFFERED : u8 = 13; +pub const FLEET_UNITS : u8 = 37; +pub const FLEET_RENTED : u8 = 11; +pub const FLEET_AVAILABLE : u8 = 26; +; Derived from the family rows: eleven families are both offered and have at least one unit. +pub const BOOKABLE_FAMILIES : u8 = 11; +; FORZA 300 and MT-03 are in stock but all their units are out. The old root spec called this +; "no stock"; that name was retired because total stock and current availability are different. +pub const OFFERED_WITH_ZERO_AVAILABLE_FAMILIES : u8 = 2; +pub const OFFERED_OUT_ON_CONTRACT_KEYS : [2]str = ["forza-300", "mt-03-300"]; +; 37 - 11 - 26 = 0. No unit in the register is in service or retired; both statuses are declared +; because 078 declares them, and both have zero measured instances today. +pub const MEASURED_SERVICE_OR_RETIRED_UNITS : u8 = 0; + +; seed "discrepancy": the register header against the rows that exist. Recorded, not resolved. +pub const REGISTER_HEADER_UNITS : u8 = 38; +pub const REGISTER_HEADER_RENTED : u8 = 11; +pub const REGISTER_HEADER_AT_BASE : u8 = 27; + +; DECISIONS.md D6: two units read `overdue` on the operations sheet. Both are still counted in +; the 37 as either rented or at base, so service-due is a second axis over a unit, not a status +; on it -- and it is admin-only, because a public badge we cannot keep accurate is the kind of +; number D9 forbids. +pub const SERVICE_DUE_UNITS : u8 = 2; + +; seed "price_list_only": 7 families published in the tariff with ZERO units. With the 13 in-stock +; families that carry a published rate they are the 13 + 7 = 20 families the tariff NAMES -- +; click-125 is the fourteenth in-stock family and the tariff does not name it, because its +; base_rate_thb_day and deposit_thb are both null ("Rate and deposit are null because no rentable +; tariff is published for it") and the seed's own totals.families_without_published_rate is 1. The +; single CLICK 125 figure anywhere, 187/day on the seasonal grid, is recorded in the seed's +; reconciliation.unresolved as "stale, not a tariff", so it is not one either. 21 is therefore the +; number of families in the SEED (14 in stock + 7 price-list-only), not in the tariff; 7 of 21 +; seeded families is exactly a third, while 7 of the 20 the tariff names is 35%. They are the +; reason the empty set must answer zero rather than raise: an empty unit set is the normal, +; permanent state of a third of the seeded catalog, not an error condition. +pub const PRICE_LIST_ONLY_FAMILIES : u8 = 7; +pub const PRICE_LIST_ONLY_UNITS : u8 = 0; + +; D12 lifecycle. CLICK 125's only unit is still rented on a contract predating the closure; it +; is not at the office and has zero units available. The seasonal-grid number is stale evidence, +; not a tariff, and can never be quoted. +pub const CLICK_125_CLOSED_ON : str = "2026-09-12"; +pub const CLICK_125_EXISTING_RENTAL_CONTINUES : bool = true; +pub const CLICK_125_STALE_GRID_RATE_THB : u16 = 187; +pub const CLICK_125_STALE_GRID_IS_QUOTABLE : bool = false; + +; The owner's suggested alternatives. Only nmax-155 is in the physical fleet today; the two +; tariff-only rows have zero units and therefore fail the same bookability predicate. +pub const CLICK_125_REDIRECTS : [3]str = ["pcx-150", "adv-150", "nmax-155"]; +pub const CLICK_125_REDIRECT_UNITS_AVAILABLE : [3]u8 = [0, 0, 5]; + +; A file snapshot may rule a family out, but only a live shop check may confirm availability. +pub const FILE_MAY_RULE_OUT : bool = true; +pub const FILE_MAY_CONFIRM : bool = false; +pub const CONFIRMATION_AUTHORITY : str = "a live check with the shop"; + +; The largest family in the seed is nmax-155 at 10 units, so 10 slots hold any family today. +; The invariants below keep this honest, and they SCAN the whole table rather than quoting one +; row: a family that grows past the capacity invalidates the signature of available_count, and +; that must fail here rather than silently truncate a count. This constant is also the clamp +; available_count applies and the width of the slot fixtures, and the invariants pin all three +; together -- raising it without widening the [10]u8 arrays would clamp past the end of them. +pub const MAX_UNITS_PER_FAMILY : u8 = 10; + +; --- The unit row --------------------------------------------------------------------------- +; Two fields, and the interesting thing about them is the fields that are missing. `slot` is the +; NN of the synthetic -NN label; `status` is one field holding one code, which is why +; "a unit occupies exactly one status" is structural here and not merely asserted. There is no +; renter, no plate, no key code and no note (D14). One packed struct per module: a second breaks +; the Verilog-from-HIR backend with an empty duplicate-signal name (t27#3283). +pub const UnitSlot = packed struct { + slot : u8, + status : u8, +}; + +pub const SLOT_LABEL_EXAMPLE : str = "nmax-155-01"; + +; --- Functions ------------------------------------------------------------------------------ + +; A code inside the declared set. STATUS_UNSET is deliberately outside it. +pub fn status_is_known(status: u8) bool { + return status >= STATUS_AVAILABLE and status <= STATUS_RETIRED; +} + +; The one question the customer app asks a unit. Exact match, never a range, never a default. +pub fn is_available(status: u8) bool { + return status == STATUS_AVAILABLE; +} + +; How many of the four classes a single code falls into. Exactly one for a known status and zero +; for anything else -- the "exactly one status" claim in the form a machine can check. A code +; that hit two classes would be a unit that is both available and rented. +pub fn status_class_hits(status: u8) u8 { + var hits : u8 = 0; + if (status == STATUS_AVAILABLE) { + hits += @as(u8, 1); + } + if (status == STATUS_RENTED) { + hits += @as(u8, 1); + } + if (status == STATUS_SERVICE) { + hits += @as(u8, 1); + } + if (status == STATUS_RETIRED) { + hits += @as(u8, 1); + } + return hits; +} + +; Availability of a family, derived from its slots -- #4: count(units WHERE status='available'). +; `used` is the size of the set, so an empty family passes 0 and gets 0 back: no error, no +; special case, no sentinel. The bound is clamped because a caller's count is not evidence about +; the array, and the count is safe under either mistake -- a `used` that is too large reads +; unwritten slots, and an unwritten slot is STATUS_UNSET, which is not available. +pub fn available_count(slots: [10]u8, used: u8) u8 { + const n = if (used > MAX_UNITS_PER_FAMILY) MAX_UNITS_PER_FAMILY else used; + var found : u8 = 0; + var i : u8 = 0; + while (i < n) { + if (slots[i] == STATUS_AVAILABLE) { + found += @as(u8, 1); + } + i += @as(u8, 1); + } + return found; +} + +; D12: CLICK 125 is closed to NEW rentals while one unit stays out on an older contract. Being +; offered is a property of the family and being available is a property of a unit, so the offer +; gate multiplies the count rather than replacing it. Today the two axes cannot disagree -- +; click-125 has 0 available units -- and this function is what keeps that from being load-bearing. +pub fn offerable_count(available: u8, offered: bool) u8 { + if (!offered) { + return 0; + } + return available; +} + +; Boolean form shared by pricing and catalog consumers. Both conjuncts live here so no caller +; reconstructs only half of the rule. +pub fn has_an_available_unit(units_available: u8) bool { + return units_available >= 1; +} + +pub fn is_bookable(offered: bool, units_available: u8) bool { + return offered and has_an_available_unit(units_available); +} + +pub const REASON_BOOKABLE : u8 = 0; +pub const REASON_NOT_OFFERED : u8 = 1; +pub const REASON_NO_UNITS : u8 = 2; +pub const REASON_NEITHER : u8 = 3; +pub const REASON_NAMES : [4]str = ["bookable", "not_offered", "no_units_available", "not_offered_and_no_units"]; + +pub fn unbookable_reason(offered: bool, units_available: u8) u8 { + if (is_bookable(offered, units_available)) { + return REASON_BOOKABLE; + } + if (!offered and !has_an_available_unit(units_available)) { + return REASON_NEITHER; + } + if (!offered) { + return REASON_NOT_OFFERED; + } + return REASON_NO_UNITS; +} + +pub fn may_confirm(offered: bool, units_available: u8, checked_with_shop: bool) bool { + return is_bookable(offered, units_available) and checked_with_shop; +} + +pub fn usable_click_redirect_count() u8 { + var found : u8 = 0; + var i : u8 = 0; + while (i < CLICK_125_REDIRECTS.len) { + if (is_bookable(true, CLICK_125_REDIRECT_UNITS_AVAILABLE[i])) { + found += @as(u8, 1); + } + i += @as(u8, 1); + } + return found; +} + +; Sum one column of the measured table. The largest column total is 37, far below the u8 rail, +; so the accumulator needs no wider width and no cast. +pub fn sum_column(counts: [14]u8) u8 { + var total : u8 = 0; + var i : u8 = 0; + while (i < FAMILIES_IN_STOCK) { + total = total + counts[i]; + i += @as(u8, 1); + } + return total; +} + +; Every family's own three numbers must close: units == rented + available. A unit counted in +; both classes breaks its row, and so does a unit counted in neither. +pub fn verify_family_rows_close() bool { + var i : u8 = 0; + while (i < FAMILIES_IN_STOCK) { + if (FAMILY_UNITS[i] != FAMILY_RENTED[i] + FAMILY_AVAILABLE[i]) { + return false; + } + i += @as(u8, 1); + } + return true; +} + +; The largest number of units any family holds, SCANNED rather than quoted. The capacity claim +; above names nmax-155 at 10, and a name goes stale silently: adv-350 or xmax-300-new growing +; past 10 leaves a one-row assert green while available_count clamps the eleventh slot out of +; every count. Returning the maximum rather than a bool buys the second invariant below -- that +; the family this file NAMES as the largest still is -- so neither the capacity nor the comment +; that justifies it can drift alone. +pub fn largest_family_units() u8 { + var largest : u8 = 0; + var i : u8 = 0; + while (i < FAMILIES_IN_STOCK) { + if (FAMILY_UNITS[i] > largest) { + largest = FAMILY_UNITS[i]; + } + i += @as(u8, 1); + } + return largest; +} + +; --- Fixtures ------------------------------------------------------------------------------- +; Not pub: the surface of this spec is the status set, the table and the functions. The slot +; codes are written as their literal ordinals and every test ties the literal back to its named +; discriminant, so renumbering a status fails a test instead of quietly testing another one. +; -- +; The seed publishes COUNTS, not a per-slot assignment: which of the ten NMAX units is out is +; not a number this repository holds, and it would be a renter fact if it were. The order inside +; these fixtures is therefore arbitrary and only the multiset is claimed. + +; The empty fleet: no units at all. This is the shape of all 7 price-list-only families. +const NO_UNITS : [10]u8 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +; forza-300: 1 unit, rented (seed: units_total 1, units_rented 1, units_available 0). +const FORZA_300_SLOTS : [10]u8 = [2, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +; nmax-155: 10 units, 5 at base and 5 out (seed: 10 / 5 / 5). The mixed family. +const NMAX_155_SLOTS : [10]u8 = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2]; +; xmax-300-new: 7 units, 6 at base and 1 out (seed: 7 / 1 / 6). Three slots stay unwritten. +const XMAX_300_NEW_SLOTS : [10]u8 = [1, 1, 1, 1, 1, 1, 2, 0, 0, 0]; + +; --- Tests ---------------------------------------------------------------------------------- + +test the_empty_fleet_counts_zero_and_is_not_an_error { + assert available_count(NO_UNITS, 0) == 0; + // and the same answer when the caller's count is wrong in the unsafe direction + assert available_count(NO_UNITS, 10) == 0; + // 7 real families are in exactly this state: a published tariff over zero stock + assert PRICE_LIST_ONLY_FAMILIES == 7; + assert PRICE_LIST_ONLY_UNITS == 0; + assert available_count(NO_UNITS, PRICE_LIST_ONLY_UNITS) == 0; +} + +test forza_300_is_an_all_rented_family { + assert FAMILY_KEYS[4] == "forza-300"; + assert FAMILY_UNITS[4] == 1; + assert FAMILY_RENTED[4] == 1; + assert FAMILY_AVAILABLE[4] == 0; + assert FORZA_300_SLOTS[0] == STATUS_RENTED; + assert available_count(FORZA_300_SLOTS, 1) == 0; + // mt-03-300 is the second family of this shape, 1 unit and 0 available + assert FAMILY_KEYS[5] == "mt-03-300"; + assert FAMILY_UNITS[5] == 1; + assert FAMILY_AVAILABLE[5] == 0; +} + +test nmax_155_is_a_mixed_family { + assert FAMILY_KEYS[1] == "nmax-155"; + assert FAMILY_UNITS[1] == 10; + assert FAMILY_RENTED[1] == 5; + assert FAMILY_AVAILABLE[1] == 5; + assert NMAX_155_SLOTS[0] == STATUS_AVAILABLE; + assert NMAX_155_SLOTS[9] == STATUS_RENTED; + assert available_count(NMAX_155_SLOTS, 10) == FAMILY_AVAILABLE[1]; +} + +test xmax_300_new_counts_seven_slots_and_not_its_capacity { + assert FAMILY_KEYS[7] == "xmax-300-new"; + assert FAMILY_UNITS[7] == 7; + assert FAMILY_RENTED[7] == 1; + assert FAMILY_AVAILABLE[7] == 6; + assert available_count(XMAX_300_NEW_SLOTS, 7) == 6; + // the three unwritten slots stay out of the count even at full capacity: this is the case + // that would have read 9 available had AVAILABLE been the zero code + assert available_count(XMAX_300_NEW_SLOTS, 10) == 6; +} + +test a_unit_falls_into_exactly_one_class { + assert status_class_hits(STATUS_AVAILABLE) == 1; + assert status_class_hits(STATUS_RENTED) == 1; + assert status_class_hits(STATUS_SERVICE) == 1; + assert status_class_hits(STATUS_RETIRED) == 1; +} + +test an_unknown_code_is_in_no_class_and_is_never_available { + assert status_class_hits(STATUS_UNSET) == 0; + // 200 stands for any code outside the declared set, including one a later migration adds + assert status_class_hits(200) == 0; + assert is_available(STATUS_UNSET) == false; + assert is_available(200) == false; + assert status_is_known(STATUS_UNSET) == false; + assert status_is_known(STATUS_RETIRED) == true; +} + +test the_four_wire_values_are_the_check_constraint_of_078 { + assert STATUS_NAMES[0] == "available"; + assert STATUS_NAMES[1] == "rented"; + assert STATUS_NAMES[2] == "service"; + // "retired", not #4's "sold": migrations/078_bike_units.sql:32 is the column, and the column + // rejects "sold" with a 23514 CHECK violation. See the second refutation in the header. + assert STATUS_NAMES[3] == "retired"; + // and none of them is "reserved" + assert RESERVED_STATUS == ""; +} + +test the_table_reproduces_the_published_totals { + assert sum_column(FAMILY_UNITS) == FLEET_UNITS; + assert sum_column(FAMILY_RENTED) == FLEET_RENTED; + assert sum_column(FAMILY_AVAILABLE) == FLEET_AVAILABLE; + assert FLEET_UNITS == 37; + assert FLEET_RENTED == 11; + assert FLEET_AVAILABLE == 26; + assert FAMILY_KEYS.len == 14; + assert FAMILIES_IN_STOCK == 14; +} + +test the_register_header_claims_a_unit_that_has_no_row { + assert REGISTER_HEADER_UNITS == 38; + assert REGISTER_HEADER_AT_BASE == 27; + assert REGISTER_HEADER_UNITS - FLEET_UNITS == 1; + // the header closes on its own arithmetic, which is why the totals had to be pinned to the + // rows: 11 + 27 == 38 is as consistent as 11 + 26 == 37 and it is wrong by one bike + assert REGISTER_HEADER_RENTED + REGISTER_HEADER_AT_BASE == REGISTER_HEADER_UNITS; + assert FLEET_RENTED == REGISTER_HEADER_RENTED; +} + +test service_due_is_a_second_axis_and_not_a_status { + assert SERVICE_DUE_UNITS == 2; + // both overdue units are still counted in the 37 as rented or at base, so no unit sits in + // STATUS_SERVICE: 37 - 11 - 26 = 0 + assert MEASURED_SERVICE_OR_RETIRED_UNITS == 0; + assert FLEET_UNITS - FLEET_RENTED - FLEET_AVAILABLE == MEASURED_SERVICE_OR_RETIRED_UNITS; + assert SERVICE_DUE_UNITS > MEASURED_SERVICE_OR_RETIRED_UNITS; +} + +test click_125_offers_nothing_by_two_independent_rules { + assert FAMILY_KEYS[0] == "click-125"; + // the measured rule: it has no unit at base + assert FAMILY_AVAILABLE[0] == 0; + assert offerable_count(FAMILY_AVAILABLE[0], false) == 0; + // the decided rule (D12): it would still offer nothing if its unit came back + assert offerable_count(1, false) == 0; + // and the gate does not otherwise touch the count + assert offerable_count(FAMILY_AVAILABLE[1], true) == 5; + assert FAMILIES_IN_STOCK - FAMILIES_OFFERED == 1; + assert FAMILY_RENTED[0] == 1; + assert CLICK_125_EXISTING_RENTAL_CONTINUES == true; + assert CLICK_125_STALE_GRID_IS_QUOTABLE == false; +} + +test bookability_reasons_and_redirects_share_one_owner { + assert is_bookable(true, 1) == true; + assert unbookable_reason(true, 1) == REASON_BOOKABLE; + assert unbookable_reason(false, 1) == REASON_NOT_OFFERED; + assert unbookable_reason(true, 0) == REASON_NO_UNITS; + assert unbookable_reason(false, 0) == REASON_NEITHER; + assert usable_click_redirect_count() == 1; + assert may_confirm(true, 1, false) == false; + assert may_confirm(true, 1, true) == true; +} + +test the_capacity_is_scanned_from_the_table_and_not_quoted { + // the measured maximum today, found by walking all 14 rows rather than reading row 1 + assert largest_family_units() == 10; + assert largest_family_units() == MAX_UNITS_PER_FAMILY; + // it is nmax-155 that carries it, which is the claim the capacity comment makes + assert largest_family_units() == FAMILY_UNITS[1]; + // the scan is not fooled by a later row: adv-350 at index 8 is the second largest at 5, and + // a one-row assert on index 1 would stay green whatever index 8 became + assert FAMILY_KEYS[8] == "adv-350"; + assert FAMILY_UNITS[8] == 5; + assert largest_family_units() > FAMILY_UNITS[8]; +} + +; --- Invariants ----------------------------------------------------------------------------- + +; The acceptance criterion of #19. A unit counted in both classes would push the sum past the +; total; 11 + 26 is exactly 37, so no unit is in two classes and none is in neither. +invariant no_unit_is_both_available_and_rented + assert FLEET_RENTED + FLEET_AVAILABLE == FLEET_UNITS + +; The same claim per family rather than over the fleet, where a compensating pair of errors +; cannot hide: units == rented + available, fourteen times. +invariant every_family_row_closes + assert verify_family_rows_close() == true + +invariant available_and_rented_are_different_codes + assert STATUS_AVAILABLE != STATUS_RENTED + +; Zero is not a status, so the unwritten remainder of a slot array is not a fleet of free bikes. +invariant zero_is_not_available + assert STATUS_AVAILABLE > STATUS_UNSET + +invariant the_status_set_is_closed_at_four + assert STATUS_NAMES.len == 4 + +; A held unit is excluded by construction rather than by name: nothing in this repository has a +; reserved status, and available_count matches AVAILABLE alone. +invariant reserved_is_not_a_status_in_this_repository + assert RESERVED_STATUS == "" + +; A published tariff over zero stock can never read as available: the empty set has no slot to +; count. 7 of the 20 families the tariff names are permanently in that state -- a third of the +; 21 the seed holds, which is a different denominator and is named as the seed above. +invariant a_tariff_line_without_units_is_not_stock + assert PRICE_LIST_ONLY_UNITS == 0 + +invariant confirmation_requires_a_live_check + assert FILE_MAY_CONFIRM == false and may_confirm(true, 1, false) == false + +invariant click_is_rented_unavailable_and_not_quotable + assert FAMILY_RENTED[0] == 1 and FAMILY_AVAILABLE[0] == 0 and CLICK_125_STALE_GRID_IS_QUOTABLE == false + +; The seeded fleet is the rows that exist, deliberately one short of the header's claim. +invariant the_fleet_is_the_rows_and_not_the_header + assert FLEET_UNITS < REGISTER_HEADER_UNITS + +; The floor a counting gate needs (D16): the capacity must still hold EVERY family, which is the +; claim this invariant used to name and not the one it made. It asserted the capacity against +; FAMILY_UNITS[1] alone, so adv-350 or xmax-300-new growing to 11 left it green -- 10 >= 10 still +; holds -- while available_count clamped the eleventh slot out of the count and returned a number +; short by one, a bike the customer app would never see. D16's rule is that a gate must be able to +; see the failure it exists to catch, and a one-row example cannot see thirteen of the fourteen +; ways this one arrives. The scan below can. +invariant the_slot_capacity_holds_every_family + assert largest_family_units() <= MAX_UNITS_PER_FAMILY + +; D16 again: a scan that found nothing passes vacuously, so the capacity is also pinned to the +; row the file NAMES as the largest. If another family overtakes nmax-155 this fails and the +; comment above MAX_UNITS_PER_FAMILY gets reread, instead of quietly becoming false. +invariant the_named_largest_family_is_still_the_largest + assert largest_family_units() == FAMILY_UNITS[1] + +; The third face of the same constant: it is the clamp available_count applies AND the width of +; the slot arrays it walks. Naming it in the clamp removed one hand-copied 10 (D15) but created a +; new way to be wrong -- raising it to 12 without widening the [10]u8 fixtures would clamp two +; slots past the end of them, and an array length cannot be named in a type position anywhere in +; this corpus. Pinning it to a fixture's length closes that: the fixtures are what the signature +; accepts, so this holds the constant, the clamp and the signature together. +invariant the_capacity_is_the_width_of_the_slot_arrays + assert NO_UNITS.len == MAX_UNITS_PER_FAMILY diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/bike_catalog.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/bike_catalog.t27 new file mode 100644 index 0000000000..ad9c792b69 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/bike_catalog.t27 @@ -0,0 +1,630 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/bike_catalog.t27 -- the shape of a catalog row, and the algebra of class +; and displacement. +; Source of truth for the two class discriminants, the six body styles, the three +; displacement bands and catalog row shape. The catalog API (#8), bike detail screen (#9) +; and ride game's handling model (#13) consume bookability from availability.t27. Every count below is +; quoted from data/fleet_seed.json (measured_at 2026-09-12, schema_version 2), or derived +; from its numbers in a comment beside it. No count is typed twice and nothing here is +; parsed with a regex. ASCII only (L3), English identifiers only (LANG-EN). +; -- +; WHY (measured 2026-09-12): the catalog publishes 21 families -- 14 with stock +; (totals.families_in_stock) plus 7 published in the tariff with zero units +; (totals.price_list_only_families) -- and 8 of those 21 must never read as available: the 7 +; that have no unit at all, and click-125, which D12 closed to new rentals. 13 families are +; offered (totals.families_offered) but only 11 are available today, because forza-300 and +; mt-03-300 are offered and fully rented (units_available 0). Offered is a decision and +; available is a count. Three different mistakes each publish a family the shop cannot rent +; today: conflating offered with available publishes the 2 that are offered and fully rented, +; reading the tariff as stock publishes the 7 that were never in the fleet at all, and +; ignoring the offered flag publishes click-125, whose one machine is still out on a contract +; predating D12 and which is closed to new rentals -- it is in the fleet, units_total 1, and +; units_available 0. +; 2 + 7 + 1 = 10, which is the 21 families less the 11 available, so those three mistakes +; cover every row that must not read as available today -- the 8 above that must never, plus +; the 2 whose machines are merely out; that is the number that forces the separate +; availability contract instead of a stored field or a second formula here. +; -- +; WHY THE BANDS ARE A DESIGN DECISION AND NOT A MEASUREMENT: the seed publishes 7 distinct +; displacements -- 125, 155, 300, 350, 400, 650, 750 -- and no band table of any kind. Issue +; #16 asks for bands, so they are chosen here and the choice is argued rather than asserted. +; The six gaps between adjacent measured displacements are 30, 145, 50, 50, 250 and 100 cc; +; the two widest are 250 (400 -> 650) and 145 (155 -> 300). A three-way cut has to fall in +; two of those six gaps, and cutting at the two widest is the cut with the most empty room +; around its edges. The edges are then rounded to 200 and 500 because a filter label reads +; better in decades: 200 sits 45 cc above 155 and 100 cc below 300, and 500 sits 100 cc +; above 400 and 150 cc below 650. Any value inside the same gap yields the identical +; partition of the fleet, which is why the invariants below pin the partition and not the +; roundness of the edge. +; -- +; THE RATE LADDER CORROBORATES THE SPLIT AND THE DEPOSIT LADDER REFUTES ITSELF: no band edge +; is crossed by a published rate -- the highest pre-discount rate below the first edge is 590 +; (xsr-155) against 690 (forza-300) above it, and 1185 (ninja-400) below the second edge +; against 1798 (the three 650s) above it. Both edges are crossed by a deposit tier: 7000 is +; xsr-155's in the small band and xmax-300-new's and adv-350's in the mid band, and 20000 is +; ninja-400's in the mid band and the 650s' in the large band. So a band is a size axis and +; never a price key. D17 records the harder proof of the same point: xmax-300 and +; xmax-300-new agree on class (scooter) and on displacement (300) and disagree on deposit +; (5000 against 7000) and on the pre-discount rate (790 against 939), and a function of +; (class, band) cannot return two values. No deposit and no rate is derived from a band +; anywhere below, and no figure quoted in this header reaches a customer: these are the +; seed's published tariff and deposit numbers, cited as the evidence for an edge. +; -- +; WHY SEVEN EXAMPLES ARE NOT A PROOF: a test that the 7 measured displacements each land in a +; band shows the table covers today's fleet and nothing more. Seven examples cannot show the +; absence of a gap at 1200 cc, and the identical test would have passed with the top band +; closed at 799. The invariants carry what the examples cannot: each band's upper edge is the +; predecessor of the next band's lower edge, which forbids a gap and an overlap in one +; equation, and the table runs from 1 to 65535, so every displacement a u16 can hold falls in +; exactly one band. This is not hypothetical. The tariff already publishes an XSR 900 and an +; R7 with no displacement_cc field at all, and a table that stopped at 799 would have to be +; edited the day a source gives either of them one. +; -- +; WHAT THIS SPEC NEVER DOES: it never names a client price -- not the door's number, not the +; seed's pre-discount tariff, not an average and not a "from" price (D11). The row carries +; one bit saying whether a source publishes a tariff; the number itself is the door's at +; answer time and its rendering belongs to pricing_honesty.t27 (#21). It never keys a deposit +; or a rate off a band. It never models unit status and never counts a unit set: that is +; availability.t27 (#19), which supplies an abstract bookable boolean to consumers. It never +; restates a storage schema -- no table, no column, no migration +; number, no key type; the family key is a string, has no width, and is therefore not in the +; packed row at all. It never gives a row to a family the seed measured no machine for: the +; row's domain is the 14 in-stock families and not all 21, because the other 7 carry neither a +; body nor a displacement_cc field to put in one. And it carries nothing from the D14 +; prohibition list: no renter, no plate, no key code, no purchase cost, in the constants and +; in the test fixtures alike. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module bike-catalog; + +pub const KIND : str = "catalog"; +pub const ID : str = "turbobaby/bike-catalog"; +pub const NAME : str = "TurboBaby bike catalog"; +; Current t27c does not support brace imports. This metadata names the owner whose boolean +; bookability result a catalog consumer must use; this module deliberately defines no copy. +pub const REUSES_AVAILABILITY_ID : str = "turbobaby/availability"; +pub const BOOKABILITY_INPUT : str = "bookable boolean supplied by the availability contract"; +; The one file every number below was read from, and the revision of it that was read. +; A bump of the seed's schema_version is a tripwire, not a formality: it means the rows were +; re-shaped and these counts have to be measured again. +pub const SOURCE : str = "data/fleet_seed.json"; +pub const SOURCE_SCHEMA_VERSION : u8 = 2; +pub const MEASURED_AT : str = "2026-09-12"; + +// ============================================================================ +// Class -- exactly two discriminants +// +// The seed's `class` field takes exactly two values across all 14 in-stock families and all +// 7 price-list-only families. The discriminant is the index into CLASSES, so the wire form +// and the numeric form cannot drift apart. +// +// The discriminants are u8 and not u1 on purpose. The value arrives from a TEXT column and +// from a JSON string, so the parse can be handed a third word; a u1 would alias that third +// word onto one of the two real classes, and an aliased class is worse than a rejected one. +// The width is wider than the domain so that the guard at the boundary has something to +// reject, and CLASS_NONE is what it returns. +// ============================================================================ + +pub const CLASSES : [2]str = ["scooter", "motorcycle"]; +pub const CLASS_SCOOTER : u8 = 0; +pub const CLASS_MOTORCYCLE : u8 = 1; +pub const CLASS_COUNT : u8 = 2; +; Not a class. 255 is the widest value a u8 holds and cannot collide with a discriminant +; (2 classes, 6 bodies, 3 bands), so the same sentinel convention is used for each domain. +pub const CLASS_NONE : u8 = 255; + +// ============================================================================ +// Body -- six styles, a finer axis than class +// +// This is the field that most tempts a reader into thinking there are six classes. There are +// two. Measured over the 14 in-stock families, the body determines the class with no +// contradiction: scooter, maxi-scooter and adventure-scooter are all class scooter (2, 3 and +// 2 families), naked, sport and cruiser are all class motorcycle (4, 2 and 1 families). +// 2 + 3 + 2 = 7 scooter-class families and 4 + 2 + 1 = 7 motorcycle-class, and 7 + 7 = 14 is +// totals.families_in_stock, so a body count edited wrong fails the arithmetic on these two +// lines. The 7 price-list-only families carry no body field at all and are not in this tally; +// the row's domain below says why they get no row either. +// +// The three scooter-bodied styles are given the low discriminants so that class_of_body is +// one comparison against SCOOTER_BODY_MAX. That ordering is load-bearing, so an invariant +// pins it: reordering BODIES without moving the boundary would silently reclassify a family. +// ============================================================================ + +pub const BODIES : [6]str = ["scooter", "maxi-scooter", "adventure-scooter", "naked", "sport", "cruiser"]; +pub const BODY_SCOOTER : u8 = 0; +pub const BODY_MAXI_SCOOTER : u8 = 1; +pub const BODY_ADVENTURE_SCOOTER : u8 = 2; +pub const BODY_NAKED : u8 = 3; +pub const BODY_SPORT : u8 = 4; +pub const BODY_CRUISER : u8 = 5; +pub const BODY_COUNT : u8 = 6; +pub const BODY_NONE : u8 = 255; +; The last body that belongs to class scooter. Everything above it is class motorcycle. +pub const SCOOTER_BODY_MAX : u8 = 2; + +// ============================================================================ +// Displacement -- the measured fleet, then the chosen bands +// +// DISPLACEMENTS_CC is the measurement: the 7 distinct values in the seed, ascending. The +// extremes are today's fleet and not the band table's domain -- a clamp to 125..750 would +// reject the next machine the shop buys, which is why the bands run to the edge of the u16 +// instead. +// +// cc is u16 because a u8 stops at 255: the XMAX 300 would arrive as 300 - 256 = 44 cc, and +// 44 cc is a plausible-looking scooter, so the overflow would not announce itself. +// ============================================================================ + +pub const DISPLACEMENTS_CC : [7]u16 = [125, 155, 300, 350, 400, 650, 750]; +pub const DISPLACEMENT_COUNT : u8 = 7; +; Measured extremes of the fleet of 2026-09-12. Reported, never used as a bound. +pub const DISPLACEMENT_MIN_CC : u16 = 125; +pub const DISPLACEMENT_MAX_CC : u16 = 750; + +; The three bands, as a lower and an upper edge per band, both inclusive. +; Band 0 holds 125 and 155: 3 families, 13 units. +; Band 1 holds 300, 350 and 400: 7 families, 19 units. +; Band 2 holds 650 and 750: 4 families, 5 units. +; 13 + 19 + 5 = 37 units and 3 + 7 + 4 = 14 families, which is totals.units and +; totals.families_in_stock, so no in-stock row is counted twice and none is missing. +pub const BAND_COUNT : u8 = 3; +pub const BAND_LO : [3]u16 = [1, 200, 500]; +pub const BAND_HI : [3]u16 = [199, 499, 65535]; +pub const BAND_SMALL : u8 = 0; +pub const BAND_MID : u8 = 1; +pub const BAND_LARGE : u8 = 2; +pub const BAND_NONE : u8 = 255; +; Size labels and nothing more. They carry no claim about a licence class or about rider +; skill: the seed's own recommendation notes do not partition on these edges -- the mid band +; holds both the XMAX 300 NEW, recommended for comfort and highway use to experienced riders, +; and the MT-03, listed among the sport recommendations. A user-facing range label should be +; rendered from BAND_LO and BAND_HI rather than written out beside these names, so that the +; label cannot drift away from the edge it describes. +pub const BAND_NAMES : [3]str = ["small", "mid", "large"]; + +// ============================================================================ +// The catalog row +// +// A packed struct, so every field states its width. Four consequences worth naming, because +// each one is a defect somebody would otherwise fix the wrong way: +// +// 1. There is no NULL here. The seed's absent rate cannot be carried as a number, because +// the only value a u16 could hold for it is 0 and 0 renders as FREE (D9). The row carries +// rate_published as a bit instead; the number is the door's (D11). +// 2. The band is not a field. It is band_of(displacement_cc), and a stored copy would be a +// second place for an edge to live and drift. +// 3. The family key is not here either. It is a string and a string has no width. The row is +// the fixed-width numeric shape that a filter and the game read; the key that names it +// belongs to the storage schema, which this spec does not restate. +// 4. The row's domain is the 14 in-stock families and not all 21, and that is the answer to +// the question item 1 raises about every other field. displacement_cc gets no absence bit +// because it needs none: the 7 price-list-only families carry neither a displacement_cc +// nor a body field in the seed -- two absent fields, not one -- so there is no honest +// body_id and no honest displacement_cc to build a row for an XSR 900 or an R7 out of, +// and a 0 in that field would be the D9 defect arriving through the one number that was +// given no bit. A tariff with no machine is a price-list entry, not a row: it reaches a +// screen through pricing_honesty.t27 (#21). 0 cc stays what band_of already makes it, the +// one u16 with no band, and zero_is_not_a_measured_displacement below pins that it can +// never collide with a measured value. +// +// 8 + 8 + 16 + 8 + 8 + 8 + 1 + 1 = 58 bits, so a row fits in a u64 with 6 bits to spare. +// The widest measured family holds 10 units and the whole fleet holds 37, so u8 counters +// have room for 255. +// ============================================================================ + +pub const CatalogRow = packed struct { + class_id : u8, + body_id : u8, + displacement_cc : u16, + units_total : u8, + units_rented : u8, + units_available : u8, + offered : bool, + rate_published : bool, +}; + +; Build a row. Follows greeting_new in specs/demos/hello_world.t27: the constructor states +; the field order once, and the predicates below take the fields they read rather than the +; whole row, so a caller that has not built a row yet -- the API filter, the cart guard -- +; uses the same function and D15's one-implementation rule survives. +pub fn row_new(class_id: u8, body_id: u8, displacement_cc: u16, units_total: u8, units_rented: u8, units_available: u8, offered: bool, rate_published: bool) CatalogRow { + return CatalogRow{ + .class_id = class_id, + .body_id = body_id, + .displacement_cc = displacement_cc, + .units_total = units_total, + .units_rented = units_rented, + .units_available = units_available, + .offered = offered, + .rate_published = rate_published, + }; +} + +// ============================================================================ +// Class and body functions +// ============================================================================ + +; Both discriminants are enumerated rather than range-checked against CLASS_COUNT. A range +; check would start accepting 2 the moment somebody edited CLASS_COUNT to 3, with no test +; failing; the enumeration keeps rejecting it and the_class_domain_is_exactly_two fails +; loudly instead. That is D16's lesson: a guard whose domain can widen in silence is not a +; guard. +pub fn is_valid_class(class_id: u8) bool { + if (class_id == CLASS_SCOOTER) { + return true; + } + if (class_id == CLASS_MOTORCYCLE) { + return true; + } + return false; +} + +; The class implied by the body style, measured over all 14 in-stock families. An unknown +; body is rejected, not rounded to the nearest class: without the first guard, body 6 would +; read as a motorcycle. +pub fn class_of_body(body_id: u8) u8 { + if (body_id > BODY_CRUISER) { + return CLASS_NONE; + } + if (body_id > SCOOTER_BODY_MAX) { + return CLASS_MOTORCYCLE; + } + return CLASS_SCOOTER; +} + +// ============================================================================ +// Displacement band function +// ============================================================================ + +; The band a displacement falls in. 0 cc is not a machine, so it is the one u16 value with no +; band. Every other value has exactly one, because BAND_HI[2] is the largest u16. +pub fn band_of(displacement_cc: u16) u8 { + if (displacement_cc < BAND_LO[0]) { + return BAND_NONE; + } + if (displacement_cc <= BAND_HI[0]) { + return BAND_SMALL; + } + if (displacement_cc <= BAND_HI[1]) { + return BAND_MID; + } + return BAND_LARGE; +} + +// ============================================================================ +// Availability boundary +// +// The row carries source counters, but this module does not decide bookability. The +// availability contract owns that formula and supplies the boolean to downstream consumers. +// This module owns only catalog taxonomy, row shape and counter consistency. +// ============================================================================ + +; units_total == units_rented + units_available holds on all 14 in-stock rows. It is stated +; as a predicate because units_available is the number a customer acts on: if the three +; counters stop agreeing, the one the screen shows is the one that lies. +pub fn units_add_up(units_total: u8, units_rented: u8, units_available: u8) bool { + if (units_rented + units_available == units_total) { + return true; + } + return false; +} + +// ============================================================================ +// Public unit identity and privacy +// +// A family key groups a product; a unit code identifies one de-identified machine. The +// public row may expose operational facts, never renter, plate, key, debt, service, cost or +// private-note fields. The kilometre value is distance since purchase, not an odometer. +// ============================================================================ + +pub const FAMILY_KEY_EXAMPLE : str = "nmax-155"; +pub const UNIT_CODE_EXAMPLE : str = "nmax-155-01"; +pub const KM_FIELD : str = "km_since_purchase"; +pub const FORBIDDEN_KM_ALIASES : [2]str = ["odometer", "mileage"]; +pub const KM_SINCE_PURCHASE_EXAMPLE : u16 = 2900; +pub const KM_ON_THE_CLOCK_EXAMPLE : u16 = 16433; +pub const FORBIDDEN_UNIT_FIELDS : [11]str = [ + "renter_name", + "telegram_handle", + "phone_number", + "outstanding_debt", + "key_code", + "tax_date", + "insurance_date", + "purchase_cost", + "sale_price_derived_from_cost", + "plate_number", + "personal_note", +]; +pub const PUBLISHABLE_UNIT_FIELDS : [5]str = ["unit_code", "model_year", "color", "km_since_purchase", "status"]; +pub const SERVICE_RECORDS_ARE_PUBLIC : bool = false; + +pub fn km_field_name_is_honest(name: str) bool { + if (name == FORBIDDEN_KM_ALIASES[0]) { + return false; + } + if (name == FORBIDDEN_KM_ALIASES[1]) { + return false; + } + return name == KM_FIELD; +} + +// ============================================================================ +// Tests +// ============================================================================ + +test the_discriminant_is_the_index_into_classes { + assert CLASSES[0] == "scooter"; + assert CLASSES[1] == "motorcycle"; + assert CLASS_SCOOTER == 0; + assert CLASS_MOTORCYCLE == 1; +} + +test only_the_two_discriminants_are_a_class { + assert is_valid_class(CLASS_SCOOTER) == true; + assert is_valid_class(CLASS_MOTORCYCLE) == true; + assert is_valid_class(2) == false; + assert is_valid_class(CLASS_NONE) == false; +} + +test the_body_determines_the_class_on_all_six_measured_styles { + assert class_of_body(BODY_SCOOTER) == CLASS_SCOOTER; + assert class_of_body(BODY_MAXI_SCOOTER) == CLASS_SCOOTER; + assert class_of_body(BODY_ADVENTURE_SCOOTER) == CLASS_SCOOTER; + assert class_of_body(BODY_NAKED) == CLASS_MOTORCYCLE; + assert class_of_body(BODY_SPORT) == CLASS_MOTORCYCLE; + assert class_of_body(BODY_CRUISER) == CLASS_MOTORCYCLE; +} + +test an_unknown_body_is_rejected_and_not_rounded { + assert class_of_body(BODY_COUNT) == CLASS_NONE; + assert class_of_body(BODY_NONE) == CLASS_NONE; +} + +test the_measured_displacements_are_the_seven_in_the_seed_ascending { + assert DISPLACEMENTS_CC[0] == 125; + assert DISPLACEMENTS_CC[1] == 155; + assert DISPLACEMENTS_CC[2] == 300; + assert DISPLACEMENTS_CC[3] == 350; + assert DISPLACEMENTS_CC[4] == 400; + assert DISPLACEMENTS_CC[5] == 650; + assert DISPLACEMENTS_CC[6] == 750; + assert DISPLACEMENTS_CC[0] == DISPLACEMENT_MIN_CC; + assert DISPLACEMENTS_CC[6] == DISPLACEMENT_MAX_CC; +} + +; The acceptance test of the band table: every real displacement has a home, and none of the +; seven falls in BAND_NONE. 155 and 350 are the two to check first, because they are the two +; a round number gets wrong. An edge at 150 -- the decade a reader reaches for, and the +; number the tariff's own PCX 150 and ADV 150 are named after -- would cut between 125 and +; 155, which are 30 cc apart and the closest pair in the fleet. An edge placed on a measured +; value, 300 or 400, asks which side that value sits on and invites the two answers to +; diverge. Both edges here sit in empty space: 200 and 500 are values no family holds. +test every_measured_displacement_lands_in_exactly_one_band { + assert band_of(125) == BAND_SMALL; + assert band_of(155) == BAND_SMALL; + assert band_of(300) == BAND_MID; + assert band_of(350) == BAND_MID; + assert band_of(400) == BAND_MID; + assert band_of(650) == BAND_LARGE; + assert band_of(750) == BAND_LARGE; +} + +; The edges themselves, on both sides. This is the test that fails if an edge moves by one. +test the_band_edges_are_where_the_constants_say_they_are { + assert band_of(199) == BAND_SMALL; + assert band_of(200) == BAND_MID; + assert band_of(499) == BAND_MID; + assert band_of(500) == BAND_LARGE; +} + +test zero_displacement_is_not_a_machine_and_has_no_band { + assert band_of(0) == BAND_NONE; +} + +; Above the fleet and at the top of the u16. A displacement nobody has bought yet still has +; exactly one band, which is the property seven examples cannot demonstrate. +test a_displacement_above_the_fleet_still_has_a_band { + assert band_of(900) == BAND_LARGE; + assert band_of(1200) == BAND_LARGE; + assert band_of(65535) == BAND_LARGE; +} + +test the_three_counters_agree_on_the_measured_rows { + // nmax-155: 10 = 5 + 5. xadv-750: 2 = 1 + 1. cb-650r: 1 = 0 + 1. + assert units_add_up(10, 5, 5) == true; + assert units_add_up(2, 1, 1) == true; + assert units_add_up(1, 0, 1) == true; +} + +test a_double_counted_unit_fails_the_counter_check { + // The defect this predicate exists for: the same unit counted as rented and as available. + assert units_add_up(10, 5, 6) == false; + assert units_add_up(1, 1, 1) == false; +} + +; Stock counters and a published rate are independent fields. click-125 is the one in-stock +; family with no published tariff +; (totals.families_without_published_rate is 1) and its sole machine is rented, so the offered +; bit still cannot be inferred from a unit count. The mirror case, a tariff with no machine, is +; the 7 price-list-only families, and the row's answer to them is to carry no row at all +; (consequence 4 above). Bookability is consumed from the availability contract, not +; reconstructed here from these fields. +test stock_and_a_published_rate_are_independent { + // Hold the counters fixed and move the rate bit. + const with_tariff = row_new(CLASS_SCOOTER, BODY_SCOOTER, 155, 10, 5, 5, true, true); + const without_tariff = row_new(CLASS_SCOOTER, BODY_SCOOTER, 155, 10, 5, 5, true, false); + assert with_tariff.rate_published == true; + assert without_tariff.rate_published == false; + assert with_tariff.units_available == without_tariff.units_available; + assert with_tariff.offered == without_tariff.offered; + // Now hold the bit and move the stock: click-125 as the fleet measured it -- 125 cc, one + // unit, that unit out on a pre-D12 contract, withdrawn, no tariff. The bit reads false on + // a family that owns a machine, which is the defect a stored rate number would hide. + const click_125 = row_new(CLASS_SCOOTER, BODY_SCOOTER, 125, 1, 1, 0, false, false); + assert click_125.rate_published == false; + assert click_125.units_total == 1; + assert click_125.offered == false; + assert click_125.units_available == 0; +} + +; Built and then read back -- the same discipline hello_world.t27 applies to Greeting. This is +; the only test that reaches the constructor, so it is the only one that can catch a field +; that moved in the order stated at row_new. +test the_row_constructor_takes_the_measured_nmax_155_shape { + // nmax-155 as the fleet measured it: scooter class, scooter body, 155 cc, 10 units, 5 + // out, 5 at the office, offered, tariff published. + const nmax_155 = row_new(CLASS_SCOOTER, BODY_SCOOTER, 155, 10, 5, 5, true, true); + assert nmax_155.class_id == CLASS_SCOOTER; + assert nmax_155.body_id == BODY_SCOOTER; + assert nmax_155.displacement_cc == 155; + assert nmax_155.units_total == 10; + assert nmax_155.units_rented == 5; + assert nmax_155.units_available == 5; + assert nmax_155.offered == true; + assert nmax_155.rate_published == true; + // The built row back through the predicates, so the fields and the functions agree rather + // than each being right about a different row. + assert is_valid_class(nmax_155.class_id) == true; + assert class_of_body(nmax_155.body_id) == nmax_155.class_id; + assert band_of(nmax_155.displacement_cc) == BAND_SMALL; + assert units_add_up(nmax_155.units_total, nmax_155.units_rented, nmax_155.units_available) == true; +} + +; nmax-155 alone cannot pin the field order: its class_id and body_id are both 0 and its +; units_rented and units_available are both 5, so swapping either same-width pair inside +; row_new leaves every assert above passing. xmax-300-new is the measured row that tells them +; apart -- class scooter 0 against body maxi-scooter 1, and 1 unit out against 6 at the office. +test the_constructor_field_order_survives_a_transposition { + const xmax_300_new = row_new(CLASS_SCOOTER, BODY_MAXI_SCOOTER, 300, 7, 1, 6, true, true); + assert xmax_300_new.class_id == CLASS_SCOOTER; + assert xmax_300_new.body_id == BODY_MAXI_SCOOTER; + assert xmax_300_new.class_id != xmax_300_new.body_id; + assert xmax_300_new.displacement_cc == 300; + assert xmax_300_new.units_total == 7; + assert xmax_300_new.units_rented == 1; + assert xmax_300_new.units_available == 6; + assert xmax_300_new.units_rented != xmax_300_new.units_available; + assert class_of_body(xmax_300_new.body_id) == xmax_300_new.class_id; + assert band_of(xmax_300_new.displacement_cc) == BAND_MID; + assert units_add_up(xmax_300_new.units_total, xmax_300_new.units_rented, xmax_300_new.units_available) == true; +} + +test the_source_revision_these_counts_came_from_is_pinned { + assert SOURCE == "data/fleet_seed.json"; + assert SOURCE_SCHEMA_VERSION == 2; + assert MEASURED_AT == "2026-09-12"; +} + +test public_unit_identity_and_mileage_do_not_leak_private_meanings { + assert UNIT_CODE_EXAMPLE != FAMILY_KEY_EXAMPLE; + assert PUBLISHABLE_UNIT_FIELDS[0] == "unit_code"; + assert FORBIDDEN_UNIT_FIELDS[9] == "plate_number"; + assert SERVICE_RECORDS_ARE_PUBLIC == false; + assert km_field_name_is_honest(KM_FIELD) == true; + assert km_field_name_is_honest(FORBIDDEN_KM_ALIASES[0]) == false; + assert KM_ON_THE_CLOCK_EXAMPLE > KM_SINCE_PURCHASE_EXAMPLE; +} + +test availability_is_referenced_without_reimplementing_its_formula { + assert REUSES_AVAILABILITY_ID == "turbobaby/availability"; + assert BOOKABILITY_INPUT == "bookable boolean supplied by the availability contract"; +} + +// ============================================================================ +// Invariants +// +// The claims no example carries. The band table's totality is the whole reason these exist: +// the tests enumerate seven displacements, a u16 holds 65536 values, and the other 65529 are +// therefore unenumerated -- 65528 of them in a band and exactly one, 0, outside every band. +// ============================================================================ + +invariant the_two_classes_are_total + assert CLASSES.len == CLASS_COUNT + +invariant the_class_domain_is_exactly_two + assert CLASS_COUNT == 2 + +; Distinctness stated as arithmetic: if the two discriminants were ever given the same value +; this difference stops being 1. +invariant the_class_discriminants_are_distinct + assert CLASS_MOTORCYCLE - CLASS_SCOOTER == 1 + +invariant the_class_sentinel_is_not_a_class + assert CLASS_NONE > CLASS_MOTORCYCLE + +invariant the_six_bodies_are_total + assert BODIES.len == BODY_COUNT + +; BODY_COUNT is the out-of-domain probe in an_unknown_body_is_rejected_and_not_rounded, so it +; is pinned at both ends like the class pair above. Edit it to 7 and that test would quietly +; start probing 7 while body 6 stopped being tested anywhere; this assert fails first. Same +; lesson as D16, applied to the domain the file had left open. +invariant the_body_domain_is_exactly_six + assert BODY_COUNT == 6 + +; The ordering class_of_body depends on: the three scooter-bodied styles hold 0, 1, 2 and the +; first motorcycle body is 3. Reorder BODIES without moving this boundary and families change +; class in silence. +invariant the_scooter_bodies_hold_the_low_discriminants + assert SCOOTER_BODY_MAX + 1 == BODY_NAKED + +invariant the_seven_measured_displacements_are_all_recorded + assert DISPLACEMENTS_CC.len == DISPLACEMENT_COUNT + +invariant the_seed_publishes_seven_distinct_displacements + assert DISPLACEMENT_COUNT == 7 + +; 0 cc is the absence sentinel: band_of rejects it and the seed gives the 7 price-list-only +; families no displacement_cc at all. This is what makes it safe as a sentinel -- it cannot +; collide with a measured value -- and it is the same argument the two sentinel invariants +; make for CLASS_NONE and BAND_NONE, which sit above the domain rather than below it. +invariant zero_is_not_a_measured_displacement + assert DISPLACEMENT_MIN_CC > 0 + +invariant the_band_table_has_a_name_for_every_band + assert BAND_NAMES.len == BAND_COUNT + +invariant the_band_table_has_an_upper_edge_for_every_lower_edge + assert BAND_LO.len == BAND_HI.len + +; No gap and no overlap, in one equation each: the upper edge of a band is the predecessor of +; the next band's lower edge. A gap would make the difference greater than 1 and an overlap +; would make it less, so both failures are caught by the same assert. +invariant the_small_and_mid_bands_meet_without_a_gap_or_an_overlap + assert BAND_HI[0] + 1 == BAND_LO[1] + +invariant the_mid_and_large_bands_meet_without_a_gap_or_an_overlap + assert BAND_HI[1] + 1 == BAND_LO[2] + +; Totality, from below and from above. Together with the two adjacency invariants these make +; every u16 except 0 a member of exactly one band. +invariant the_band_table_starts_at_one_cubic_centimetre + assert BAND_LO[0] == 1 + +invariant the_top_band_runs_to_the_largest_displacement_a_u16_can_hold + assert BAND_HI[2] == 65535 + +; Every band is non-empty as an interval. A band declared backwards would pass the adjacency +; asserts above and swallow no displacement at all. +invariant the_small_band_is_a_non_empty_interval + assert BAND_LO[0] < BAND_HI[0] + +invariant the_mid_band_is_a_non_empty_interval + assert BAND_LO[1] < BAND_HI[1] + +invariant the_large_band_is_a_non_empty_interval + assert BAND_LO[2] < BAND_HI[2] + +; The measured fleet sits inside the table with room on both sides, so the extremes above are +; a report of today's stock and never a bound on tomorrow's. +invariant the_measured_fleet_sits_strictly_inside_the_band_table + assert DISPLACEMENT_MAX_CC < BAND_HI[2] + +invariant the_band_sentinel_is_not_a_band + assert BAND_NONE > BAND_LARGE + +invariant public_unit_fields_exclude_private_and_service_records + assert FORBIDDEN_UNIT_FIELDS[0] == "renter_name" and FORBIDDEN_UNIT_FIELDS[10] == "personal_note" and SERVICE_RECORDS_ARE_PUBLIC == false + +invariant the_mileage_column_is_never_called_an_odometer + assert km_field_name_is_honest(FORBIDDEN_KM_ALIASES[0]) == false diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/catalog_api.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/catalog_api.t27 new file mode 100644 index 0000000000..2f5eed94bc --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/catalog_api.t27 @@ -0,0 +1,308 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/catalog_api.t27 -- public HTTP behavior for the bike catalog +; This contract owns only the transport boundary requested by issue #8: filter composition, +; page-limit normalization, opaque cursor validation, DTO release gates, and HTTP outcomes. +; Catalog taxonomy belongs to bike_catalog.t27, current inventory and offerability belong to +; availability.t27, and price provenance belongs to pricing_honesty.t27. This file deliberately +; imports none of them. Instead, the transport receives their decisions as booleans such as +; upstream_bookable, class_matches, and source_values_valid. That keeps an API contract from +; becoming a second implementation of any domain rule. +; -- +; WHY (measured 2026-09-13): GET /api/bikes currently accepts available_only and returns one +; unpaged JSON document. Issue #8 also names class, cc_min, cc_max, and for_sale filters. A +; future pagination patch without a contract can change the meaning of a filter between page +; one and page two, accept a cursor made for a different query, or serialize a public DTO before +; the redaction proof has passed. Those are wire failures, not catalog failures, so they need a +; transport owner separate from the six existing domain specs. +; -- +; The page values below are CHOSEN protocol budgets, not fleet measurements: 20 is the default, +; 100 is the maximum, and 256 bytes is the maximum encoded cursor. They intentionally do not +; depend on today's catalog size. A requested numeric limit is clamped into the closed 1..100 +; interval after parsing; an unparseable limit is a bad request and never reaches the clamp. +; A cursor is opaque. The transport validates its size, decoder result, version, and filter-scope +; binding, but this file gives the cursor no offset, row key, timestamp, or business meaning. +; -- +; WHAT THIS FILE NEVER DOES: it never decides that a family is offered, bookable, or for sale; +; never re-declares a class, body, status, unit count, price, or deposit; never lists forbidden +; repository fields; and never carries a person or a unit record in a fixture. The DTO gate takes +; redaction_proof_passed as an input from the schema/privacy owner. A false proof fails closed as +; an internal error, so a serialization defect is never converted into a partial public response. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module catalog-api; + +pub const KIND : str = "transport"; +pub const ID : str = "turbobaby/catalog-api"; +pub const NAME : str = "TurboBaby catalog HTTP contract"; +pub const ISSUE : str = "#8"; +pub const LIST_ENDPOINT : str = "GET /api/bikes"; +pub const DETAIL_ENDPOINT : str = "GET /api/bikes/:key"; + +; These names are the entire public filter vocabulary. Their values are parsed elsewhere; +; catalog_api_filter_matches consumes only match decisions and upstream domain booleans. +pub const FILTER_NAMES : [5]str = ["class", "cc_min", "cc_max", "available_only", "for_sale"]; +pub const FILTER_COUNT : u8 = 5; + +; CHOSEN transport budgets. Zero is never a returned page limit. +pub const PAGE_LIMIT_MIN : u16 = 1; +pub const PAGE_LIMIT_DEFAULT : u16 = 20; +pub const PAGE_LIMIT_MAX : u16 = 100; +pub const CURSOR_BYTES_MAX : u16 = 256; + +; HTTP outcomes owned by this read-only API. +pub const HTTP_OK : u16 = 200; +pub const HTTP_NOT_MODIFIED : u16 = 304; +pub const HTTP_BAD_REQUEST : u16 = 400; +pub const HTTP_NOT_FOUND : u16 = 404; +pub const HTTP_INTERNAL_ERROR : u16 = 500; + +; Stable error-envelope discriminants. A 304 is the only outcome with no body. +pub const ERROR_NONE : u8 = 0; +pub const ERROR_BAD_QUERY : u8 = 1; +pub const ERROR_MISSING_FAMILY : u8 = 2; +pub const ERROR_INTERNAL : u8 = 3; + +; Normalize only after syntax parsing has succeeded. Absence selects the default; an explicit +; zero is clamped to one; oversized requests are bounded independently of fleet size. +pub fn catalog_api_normalize_limit(requested: u16, limit_supplied: bool) u16 { + if (!limit_supplied) { + return PAGE_LIMIT_DEFAULT; + } + if (requested < PAGE_LIMIT_MIN) { + return PAGE_LIMIT_MIN; + } + if (requested > PAGE_LIMIT_MAX) { + return PAGE_LIMIT_MAX; + } + return requested; +} + +; Combine filter results. The match booleans are computed by their upstream owners. When a +; filter is absent, its accompanying match bit is ignored rather than treated as a default. +pub fn catalog_api_filter_matches(class_requested: bool, class_matches: bool, cc_requested: bool, cc_matches: bool, available_only_requested: bool, upstream_bookable: bool, for_sale_requested: bool, upstream_for_sale: bool) bool { + if (class_requested and !class_matches) { + return false; + } + if (cc_requested and !cc_matches) { + return false; + } + if (available_only_requested and !upstream_bookable) { + return false; + } + if (for_sale_requested and !upstream_for_sale) { + return false; + } + return true; +} + +; Bounds ordering is transport validation, not a displacement taxonomy. A single-sided range is +; legal; only a supplied lower bound greater than a supplied upper bound is malformed. +pub fn catalog_api_cc_bounds_valid(min_supplied: bool, cc_min: u16, max_supplied: bool, cc_max: u16) bool { + if (min_supplied and max_supplied and cc_min > cc_max) { + return false; + } + return true; +} + +; Parsing failures are never normalized into defaults. Each boolean is produced by the parser +; for one part of the public query; `cc_bounds_ordered` is the result above when both exist. +pub fn catalog_api_query_valid(limit_parse_ok: bool, class_parse_ok: bool, cc_min_parse_ok: bool, cc_max_parse_ok: bool, flag_parse_ok: bool, cc_bounds_ordered: bool) bool { + return limit_parse_ok and class_parse_ok and cc_min_parse_ok and cc_max_parse_ok and flag_parse_ok and cc_bounds_ordered; +} + +; An absent cursor starts a traversal. A supplied one must pass every independent wire proof. +; filter_scope_matches binds it to the exact query that produced it. +pub fn catalog_api_cursor_valid(cursor_supplied: bool, encoded_bytes: u16, decoded: bool, version_supported: bool, filter_scope_matches: bool) bool { + if (!cursor_supplied) { + return true; + } + if (encoded_bytes == 0 or encoded_bytes > CURSOR_BYTES_MAX) { + return false; + } + return decoded and version_supported and filter_scope_matches; +} + +; DTO release is an all-of gate. `absence_is_explicit` means a nullable public value is carried +; as null rather than omitted for a downstream default. `redaction_proof_passed` is deliberately +; abstract: the privacy owner supplies it, and this transport does not copy that owner's list. +pub fn catalog_api_dto_valid(required_shape: bool, source_values_valid: bool, absence_is_explicit: bool, redaction_proof_passed: bool) bool { + return required_shape and source_values_valid and absence_is_explicit and redaction_proof_passed; +} + +; Query and cursor errors precede serialization. A malformed DTO is never a client 4xx. The +; conditional ETag path is reachable only after a public DTO has passed its release gates. +pub fn catalog_api_list_status(query_valid: bool, cursor_valid: bool, dto_valid: bool, etag_matches: bool) u16 { + if (!query_valid or !cursor_valid) { + return HTTP_BAD_REQUEST; + } + if (!dto_valid) { + return HTTP_INTERNAL_ERROR; + } + if (etag_matches) { + return HTTP_NOT_MODIFIED; + } + return HTTP_OK; +} + +pub fn catalog_api_detail_status(key_syntax_valid: bool, upstream_found: bool, dto_valid: bool) u16 { + if (!key_syntax_valid) { + return HTTP_BAD_REQUEST; + } + if (!upstream_found) { + return HTTP_NOT_FOUND; + } + if (!dto_valid) { + return HTTP_INTERNAL_ERROR; + } + return HTTP_OK; +} + +pub fn catalog_api_error_code(status: u16) u8 { + if (status == HTTP_OK or status == HTTP_NOT_MODIFIED) { + return ERROR_NONE; + } + if (status == HTTP_BAD_REQUEST) { + return ERROR_BAD_QUERY; + } + if (status == HTTP_NOT_FOUND) { + return ERROR_MISSING_FAMILY; + } + return ERROR_INTERNAL; +} + +pub fn catalog_api_response_has_body(status: u16) bool { + return status != HTTP_NOT_MODIFIED; +} + +; A cursor is emitted only for a successful page when the upstream traversal says another page +; exists and a freshly generated cursor passed the same validator used for incoming cursors. +pub fn catalog_api_may_emit_next_cursor(status: u16, upstream_has_more: bool, generated_cursor_valid: bool) bool { + return status == HTTP_OK and upstream_has_more and generated_cursor_valid; +} + +test catalog_api_filter_vocabulary_is_exact_and_transport_only { + assert FILTER_NAMES.len == FILTER_COUNT; + assert FILTER_NAMES[0] == "class"; + assert FILTER_NAMES[1] == "cc_min"; + assert FILTER_NAMES[2] == "cc_max"; + assert FILTER_NAMES[3] == "available_only"; + assert FILTER_NAMES[4] == "for_sale"; +} + +test catalog_api_limit_defaults_clamps_and_preserves { + assert catalog_api_normalize_limit(0, false) == PAGE_LIMIT_DEFAULT; + assert catalog_api_normalize_limit(0, true) == PAGE_LIMIT_MIN; + assert catalog_api_normalize_limit(37, true) == 37; + assert catalog_api_normalize_limit(101, true) == PAGE_LIMIT_MAX; + assert catalog_api_normalize_limit(65535, true) == PAGE_LIMIT_MAX; +} + +test catalog_api_filters_are_conjoined_without_rebuilding_domain_rules { + assert catalog_api_filter_matches(false, false, false, false, false, false, false, false) == true; + assert catalog_api_filter_matches(true, true, true, true, true, true, true, true) == true; + assert catalog_api_filter_matches(true, false, false, false, false, false, false, false) == false; + assert catalog_api_filter_matches(false, false, true, false, false, false, false, false) == false; +} + +test catalog_api_available_only_consumes_the_upstream_bookable_answer { + assert catalog_api_filter_matches(false, false, false, false, true, true, false, false) == true; + assert catalog_api_filter_matches(false, false, false, false, true, false, false, false) == false; + assert catalog_api_filter_matches(false, false, false, false, false, false, false, false) == true; +} + +test catalog_api_for_sale_is_independent_of_rental_bookability { + assert catalog_api_filter_matches(false, false, false, false, false, false, true, true) == true; + assert catalog_api_filter_matches(false, false, false, false, false, true, true, false) == false; + assert catalog_api_filter_matches(false, false, false, false, true, false, true, true) == false; +} + +test catalog_api_cc_bounds_validate_order_only_when_both_are_present { + assert catalog_api_cc_bounds_valid(false, 0, false, 0) == true; + assert catalog_api_cc_bounds_valid(true, 700, false, 0) == true; + assert catalog_api_cc_bounds_valid(false, 0, true, 125) == true; + assert catalog_api_cc_bounds_valid(true, 125, true, 750) == true; + assert catalog_api_cc_bounds_valid(true, 750, true, 125) == false; +} + +test catalog_api_query_validation_combines_parser_and_range_proofs { + assert catalog_api_query_valid(true, true, true, true, true, true) == true; + assert catalog_api_query_valid(false, true, true, true, true, true) == false; + assert catalog_api_query_valid(true, false, true, true, true, true) == false; + assert catalog_api_query_valid(true, true, false, true, true, true) == false; + assert catalog_api_query_valid(true, true, true, false, true, true) == false; + assert catalog_api_query_valid(true, true, true, true, false, true) == false; + assert catalog_api_query_valid(true, true, true, true, true, false) == false; +} + +test catalog_api_cursor_absence_is_valid_but_a_supplied_cursor_fails_closed { + assert catalog_api_cursor_valid(false, 0, false, false, false) == true; + assert catalog_api_cursor_valid(true, 1, true, true, true) == true; + assert catalog_api_cursor_valid(true, 0, true, true, true) == false; + assert catalog_api_cursor_valid(true, CURSOR_BYTES_MAX + 1, true, true, true) == false; + assert catalog_api_cursor_valid(true, 32, false, true, true) == false; + assert catalog_api_cursor_valid(true, 32, true, false, true) == false; + assert catalog_api_cursor_valid(true, 32, true, true, false) == false; +} + +test catalog_api_dto_requires_shape_values_nulls_and_redaction_proof { + assert catalog_api_dto_valid(true, true, true, true) == true; + assert catalog_api_dto_valid(false, true, true, true) == false; + assert catalog_api_dto_valid(true, false, true, true) == false; + assert catalog_api_dto_valid(true, true, false, true) == false; + assert catalog_api_dto_valid(true, true, true, false) == false; +} + +test catalog_api_list_status_has_safe_precedence { + assert catalog_api_list_status(false, true, true, false) == HTTP_BAD_REQUEST; + assert catalog_api_list_status(true, false, true, false) == HTTP_BAD_REQUEST; + assert catalog_api_list_status(true, true, false, false) == HTTP_INTERNAL_ERROR; + assert catalog_api_list_status(true, true, true, true) == HTTP_NOT_MODIFIED; + assert catalog_api_list_status(true, true, true, false) == HTTP_OK; +} + +test catalog_api_detail_status_distinguishes_input_absence_and_serialization { + assert catalog_api_detail_status(false, true, true) == HTTP_BAD_REQUEST; + assert catalog_api_detail_status(true, false, true) == HTTP_NOT_FOUND; + assert catalog_api_detail_status(true, true, false) == HTTP_INTERNAL_ERROR; + assert catalog_api_detail_status(true, true, true) == HTTP_OK; +} + +test catalog_api_error_envelopes_are_stable_and_not_modified_has_no_body { + assert catalog_api_error_code(HTTP_OK) == ERROR_NONE; + assert catalog_api_error_code(HTTP_NOT_MODIFIED) == ERROR_NONE; + assert catalog_api_error_code(HTTP_BAD_REQUEST) == ERROR_BAD_QUERY; + assert catalog_api_error_code(HTTP_NOT_FOUND) == ERROR_MISSING_FAMILY; + assert catalog_api_error_code(HTTP_INTERNAL_ERROR) == ERROR_INTERNAL; + assert catalog_api_response_has_body(HTTP_NOT_MODIFIED) == false; + assert catalog_api_response_has_body(HTTP_OK) == true; + assert catalog_api_response_has_body(HTTP_BAD_REQUEST) == true; +} + +test catalog_api_next_cursor_requires_a_complete_successful_page { + assert catalog_api_may_emit_next_cursor(HTTP_OK, true, true) == true; + assert catalog_api_may_emit_next_cursor(HTTP_OK, false, true) == false; + assert catalog_api_may_emit_next_cursor(HTTP_OK, true, false) == false; + assert catalog_api_may_emit_next_cursor(HTTP_NOT_MODIFIED, true, true) == false; + assert catalog_api_may_emit_next_cursor(HTTP_INTERNAL_ERROR, true, true) == false; +} + +invariant catalog_api_page_limit_is_a_closed_nonzero_interval + assert PAGE_LIMIT_MIN > 0 and PAGE_LIMIT_DEFAULT >= PAGE_LIMIT_MIN and PAGE_LIMIT_DEFAULT <= PAGE_LIMIT_MAX + +invariant catalog_api_filter_count_cannot_fall_to_zero + assert FILTER_COUNT > 0 and FILTER_NAMES.len == FILTER_COUNT + +invariant catalog_api_invalid_cursor_never_reaches_success + assert catalog_api_list_status(true, catalog_api_cursor_valid(true, 0, true, true, true), true, false) == HTTP_BAD_REQUEST + +invariant catalog_api_redaction_proof_is_mandatory_for_a_success_body + assert catalog_api_list_status(true, true, catalog_api_dto_valid(true, true, true, false), false) == HTTP_INTERNAL_ERROR + +invariant catalog_api_not_modified_is_the_only_bodyless_outcome + assert catalog_api_response_has_body(HTTP_NOT_MODIFIED) == false and catalog_api_response_has_body(HTTP_OK) == true and catalog_api_response_has_body(HTTP_BAD_REQUEST) == true and catalog_api_response_has_body(HTTP_NOT_FOUND) == true and catalog_api_response_has_body(HTTP_INTERNAL_ERROR) == true + +invariant catalog_api_cursor_scope_is_bound_to_the_filter_set + assert catalog_api_cursor_valid(true, 32, true, true, false) == false + +invariant catalog_api_query_parser_failure_never_becomes_a_default + assert catalog_api_query_valid(false, true, true, true, true, true) == false diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/commerce.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/commerce.t27 new file mode 100644 index 0000000000..1c03b36d7d --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/commerce.t27 @@ -0,0 +1,411 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/commerce.t27 -- cart, checkout, order, and replay safety for bike deals +; This contract owns the transactional seam that the catalog and pricing contracts stop before: +; a cart is locked, exactly one deal shape is selected, an authoritative quote is snapshotted, +; fulfillment is admissible, an idempotency key chooses create/replay/conflict, and a committed +; order makes the cart terminal. It covers both rental and sale without pretending they are the +; same payload. D7 fixes the spelling `fulfillment`; D8 fixes a rental line on a family rather +; than a physical unit; D9 and D11 forbid checkout from manufacturing a missing number. +; -- +; WHY (measured 2026-09-13): the repository already has a durable order-idempotency table and a +; transaction that records its key with the order. It also has two tagged bike deal shapes, one +; rental and one sale. What the six canonical domain specs do not own is the join between those +; facts: which cart state permits the write, how a same-key retry differs from a conflicting +; payload, when the quote becomes immutable, and which fulfillment prerequisites are required. +; Without one contract, a retry can create a second order or a stale cart can cross checkout with +; a quote that was never authorized. +; -- +; REUSE, NOT RESTATEMENT: price_authorized is the entire answer supplied by the price authority; +; upstream_bookable is the entire rental answer supplied by availability; upstream_saleable is +; the equivalent decision supplied by the sale owner. No price number, discount, stock count, +; deposit amount, location, or tariff appears here. Quote identity, revision, expiry, and scope +; are transport booleans: the snapshot retains the authoritative answer but this file does not +; recompute it. Fulfillment similarly consumes pickup_allowed and delivery_allowed decisions +; instead of copying geographic or operational rules. +; -- +; WHAT THIS FILE NEVER DOES: it never carries a customer identity, contact field, unit identifier, +; payment credential, source-sheet detail, or historical transaction fixture. It does not assign +; a bike unit, calculate a rental total, derive a sale price, convert a deposit, or decide live +; availability. A failed transaction leaves no durable idempotency record, and a committed order +; cannot replace its quote snapshot. Both are expressed as executable gates below. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module commerce; + +pub const KIND : str = "contract"; +pub const ID : str = "turbobaby/commerce"; +pub const NAME : str = "TurboBaby commerce transaction contract"; +pub const IMPLEMENTATION_BOUNDARY : str = "cart -> checkout lock -> committed order"; + +; Exactly one tagged deal shape per bike line. +pub const DEAL_INVALID : u8 = 0; +pub const DEAL_RENTAL : u8 = 1; +pub const DEAL_SALE : u8 = 2; +pub const DEAL_NAMES : [2]str = ["bike_rental", "bike_sale"]; + +; Cart lifecycle. Converted and abandoned are terminal; a failed locked checkout may reopen. +pub const CART_STATE_INVALID : u8 = 0; +pub const CART_STATE_OPEN : u8 = 1; +pub const CART_STATE_LOCKED : u8 = 2; +pub const CART_STATE_CONVERTED : u8 = 3; +pub const CART_STATE_ABANDONED : u8 = 4; +pub const CART_STATE_NAMES : [4]str = ["open", "locked", "converted", "abandoned"]; + +; Fulfillment discriminants are protocol shape only. Eligibility comes from upstream booleans. +pub const FULFILLMENT_INVALID : u8 = 0; +pub const FULFILLMENT_PICKUP : u8 = 1; +pub const FULFILLMENT_DELIVERY : u8 = 2; +pub const FULFILLMENT_NAMES : [2]str = ["pickup", "delivery"]; + +; Idempotency decisions. A replay returns the prior committed order and never writes another one. +pub const IDEM_REJECT_KEY : u8 = 1; +pub const IDEM_CREATE_NEW : u8 = 2; +pub const IDEM_RETURN_PRIOR : u8 = 3; +pub const IDEM_IN_PROGRESS : u8 = 4; +pub const IDEM_CONFLICT : u8 = 5; +pub const IDEM_DECISION_COUNT : u8 = 5; + +; Checkout decisions are internal outcomes, not prices and not order status strings. +pub const CHECKOUT_READY : u8 = 1; +pub const CHECKOUT_BAD_DEAL : u8 = 2; +pub const CHECKOUT_BAD_CART_STATE : u8 = 3; +pub const CHECKOUT_PRICE_UNAUTHORIZED : u8 = 4; +pub const CHECKOUT_NOT_FULFILLABLE : u8 = 5; +pub const CHECKOUT_QUOTE_INVALID : u8 = 6; +pub const CHECKOUT_FULFILLMENT_INVALID : u8 = 7; +pub const CHECKOUT_IDEMPOTENCY_BLOCKED : u8 = 8; +pub const CHECKOUT_RETURN_PRIOR : u8 = 9; + +pub const QUOTE_SNAPSHOT_RULE : str = "authorized quote identity, revision, scope and expiry are frozen before commit"; +pub const IDEMPOTENCY_COMMIT_RULE : str = "the key and order become durable in the same successful transaction"; + +pub fn commerce_deal_is_known(deal_kind: u8) bool { + return deal_kind == DEAL_RENTAL or deal_kind == DEAL_SALE; +} + +; The tagged union shape: rental payload or sale payload, never both and never neither. +pub fn commerce_deal_shape_valid(deal_kind: u8, rental_payload_present: bool, sale_payload_present: bool) bool { + if (deal_kind == DEAL_RENTAL) { + return rental_payload_present and !sale_payload_present; + } + if (deal_kind == DEAL_SALE) { + return sale_payload_present and !rental_payload_present; + } + return false; +} + +; Availability and sale eligibility remain upstream facts. This function selects which one the +; deal discriminant consumes and refuses an unknown deal instead of falling back to either. +pub fn commerce_deal_fulfillable(deal_kind: u8, upstream_bookable: bool, upstream_saleable: bool) bool { + if (deal_kind == DEAL_RENTAL) { + return upstream_bookable; + } + if (deal_kind == DEAL_SALE) { + return upstream_saleable; + } + return false; +} + +pub fn commerce_cart_state_is_known(state: u8) bool { + return state >= CART_STATE_OPEN and state <= CART_STATE_ABANDONED; +} + +; A lock may roll back to open after failure. Conversion requires the transaction to have +; committed. Converted and abandoned carts are terminal, apart from idempotent same-state reads. +pub fn commerce_cart_transition_allowed(from_state: u8, to_state: u8, transaction_committed: bool) bool { + if (!commerce_cart_state_is_known(from_state) or !commerce_cart_state_is_known(to_state)) { + return false; + } + if (from_state == to_state) { + return true; + } + if (from_state == CART_STATE_OPEN) { + return to_state == CART_STATE_LOCKED or to_state == CART_STATE_ABANDONED; + } + if (from_state == CART_STATE_LOCKED) { + if (to_state == CART_STATE_OPEN) { + return true; + } + if (to_state == CART_STATE_CONVERTED) { + return transaction_committed; + } + } + return false; +} + +; No amount is inspected here. `price_authorized` is the result of the pricing owner. Identity, +; revision, scope, and expiry keep that decision bound to this exact line and checkout attempt. +pub fn commerce_quote_snapshot_valid(snapshot_id_valid: bool, revision_present: bool, price_authorized: bool, scope_matches: bool, not_expired: bool) bool { + return snapshot_id_valid and revision_present and price_authorized and scope_matches and not_expired; +} + +pub fn commerce_quote_snapshot_may_replace(cart_state: u8, order_exists: bool) bool { + return cart_state == CART_STATE_OPEN and !order_exists; +} + +; Pickup ignores destination readiness but still needs upstream pickup approval. Delivery needs +; both upstream approval and a complete destination handoff. Unknown modes fail closed. +pub fn commerce_fulfillment_valid(mode: u8, pickup_allowed: bool, delivery_allowed: bool, delivery_destination_ready: bool) bool { + if (mode == FULFILLMENT_PICKUP) { + return pickup_allowed; + } + if (mode == FULFILLMENT_DELIVERY) { + return delivery_allowed and delivery_destination_ready; + } + return false; +} + +; The key is claimed inside the same transaction as the order. `prior_committed` distinguishes a +; safe replay from a concurrent request whose result is not durable yet. +pub fn commerce_idempotency_decision(key_valid: bool, key_seen: bool, payload_matches: bool, prior_committed: bool) u8 { + if (!key_valid) { + return IDEM_REJECT_KEY; + } + if (!key_seen) { + return IDEM_CREATE_NEW; + } + if (!payload_matches) { + return IDEM_CONFLICT; + } + if (prior_committed) { + return IDEM_RETURN_PRIOR; + } + return IDEM_IN_PROGRESS; +} + +pub fn commerce_idempotency_permits_write(idempotency_decision: u8) bool { + return idempotency_decision == IDEM_CREATE_NEW; +} + +pub fn commerce_idempotency_returns_prior(idempotency_decision: u8) bool { + return idempotency_decision == IDEM_RETURN_PRIOR; +} + +; Transactional persistence in one bit: rollback removes both the order and the key record. +pub fn commerce_idempotency_record_is_durable(transaction_committed: bool) bool { + return transaction_committed; +} + +; The checkout join. It consumes decisions from the shape, price, availability/sale, quote, +; fulfillment, and idempotency owners; it performs none of their underlying computations. +pub fn commerce_checkout_decision(deal_kind: u8, cart_state: u8, shape_valid: bool, price_authorized: bool, upstream_fulfillable: bool, quote_snapshot_valid: bool, fulfillment_valid: bool, idempotency_decision: u8) u8 { + ; A committed replay is already proven to have the same payload. It must return before the + ; cart and domain gates: the first commit converted the cart and may have consumed the last + ; available unit, so re-running those gates would make a successful retry look unavailable. + if (commerce_idempotency_returns_prior(idempotency_decision)) { + return CHECKOUT_RETURN_PRIOR; + } + if (!commerce_idempotency_permits_write(idempotency_decision)) { + return CHECKOUT_IDEMPOTENCY_BLOCKED; + } + if (!commerce_deal_is_known(deal_kind) or !shape_valid) { + return CHECKOUT_BAD_DEAL; + } + if (cart_state != CART_STATE_LOCKED) { + return CHECKOUT_BAD_CART_STATE; + } + if (!price_authorized) { + return CHECKOUT_PRICE_UNAUTHORIZED; + } + if (!upstream_fulfillable) { + return CHECKOUT_NOT_FULFILLABLE; + } + if (!quote_snapshot_valid) { + return CHECKOUT_QUOTE_INVALID; + } + if (!fulfillment_valid) { + return CHECKOUT_FULFILLMENT_INVALID; + } + return CHECKOUT_READY; +} + +pub fn commerce_checkout_may_commit(checkout_decision: u8) bool { + return checkout_decision == CHECKOUT_READY; +} + +; Order-status vocabulary remains in the order owner. This gate takes only three facts about a +; requested transition: whether the current state is terminal, whether this is an idempotent +; same-state write, and whether the order owner authorizes the edge. +pub fn commerce_order_transition_allowed(current_is_terminal: bool, same_state: bool, transition_authorized: bool) bool { + if (same_state) { + return true; + } + if (current_is_terminal) { + return false; + } + return transition_authorized; +} + +test commerce_deal_discriminant_accepts_exactly_rental_or_sale { + assert commerce_deal_is_known(DEAL_RENTAL) == true; + assert commerce_deal_is_known(DEAL_SALE) == true; + assert commerce_deal_is_known(DEAL_INVALID) == false; + assert commerce_deal_is_known(3) == false; + assert DEAL_NAMES[0] == "bike_rental"; + assert DEAL_NAMES[1] == "bike_sale"; +} + +test commerce_deal_shape_is_exclusive { + assert commerce_deal_shape_valid(DEAL_RENTAL, true, false) == true; + assert commerce_deal_shape_valid(DEAL_SALE, false, true) == true; + assert commerce_deal_shape_valid(DEAL_RENTAL, true, true) == false; + assert commerce_deal_shape_valid(DEAL_SALE, true, true) == false; + assert commerce_deal_shape_valid(DEAL_RENTAL, false, false) == false; + assert commerce_deal_shape_valid(DEAL_INVALID, true, false) == false; +} + +test commerce_fulfillability_consumes_upstream_decisions_without_recomputing_them { + assert commerce_deal_fulfillable(DEAL_RENTAL, true, false) == true; + assert commerce_deal_fulfillable(DEAL_RENTAL, false, true) == false; + assert commerce_deal_fulfillable(DEAL_SALE, false, true) == true; + assert commerce_deal_fulfillable(DEAL_SALE, true, false) == false; + assert commerce_deal_fulfillable(DEAL_INVALID, true, true) == false; +} + +test commerce_cart_state_machine_locks_commits_rolls_back_and_stays_terminal { + assert commerce_cart_transition_allowed(CART_STATE_OPEN, CART_STATE_LOCKED, false) == true; + assert commerce_cart_transition_allowed(CART_STATE_OPEN, CART_STATE_ABANDONED, false) == true; + assert commerce_cart_transition_allowed(CART_STATE_LOCKED, CART_STATE_OPEN, false) == true; + assert commerce_cart_transition_allowed(CART_STATE_LOCKED, CART_STATE_CONVERTED, false) == false; + assert commerce_cart_transition_allowed(CART_STATE_LOCKED, CART_STATE_CONVERTED, true) == true; + assert commerce_cart_transition_allowed(CART_STATE_CONVERTED, CART_STATE_OPEN, true) == false; + assert commerce_cart_transition_allowed(CART_STATE_ABANDONED, CART_STATE_LOCKED, true) == false; +} + +test commerce_cart_same_state_retry_is_idempotent_only_for_known_states { + assert commerce_cart_transition_allowed(CART_STATE_OPEN, CART_STATE_OPEN, false) == true; + assert commerce_cart_transition_allowed(CART_STATE_LOCKED, CART_STATE_LOCKED, false) == true; + assert commerce_cart_transition_allowed(CART_STATE_CONVERTED, CART_STATE_CONVERTED, false) == true; + assert commerce_cart_transition_allowed(CART_STATE_INVALID, CART_STATE_INVALID, false) == false; +} + +test commerce_quote_snapshot_requires_every_authority_property { + assert commerce_quote_snapshot_valid(true, true, true, true, true) == true; + assert commerce_quote_snapshot_valid(false, true, true, true, true) == false; + assert commerce_quote_snapshot_valid(true, false, true, true, true) == false; + assert commerce_quote_snapshot_valid(true, true, false, true, true) == false; + assert commerce_quote_snapshot_valid(true, true, true, false, true) == false; + assert commerce_quote_snapshot_valid(true, true, true, true, false) == false; +} + +test commerce_quote_snapshot_can_refresh_only_before_checkout_lock { + assert commerce_quote_snapshot_may_replace(CART_STATE_OPEN, false) == true; + assert commerce_quote_snapshot_may_replace(CART_STATE_LOCKED, false) == false; + assert commerce_quote_snapshot_may_replace(CART_STATE_CONVERTED, true) == false; + assert commerce_quote_snapshot_may_replace(CART_STATE_OPEN, true) == false; +} + +test commerce_fulfillment_checks_mode_specific_upstream_gates { + assert commerce_fulfillment_valid(FULFILLMENT_PICKUP, true, false, false) == true; + assert commerce_fulfillment_valid(FULFILLMENT_PICKUP, false, true, true) == false; + assert commerce_fulfillment_valid(FULFILLMENT_DELIVERY, false, true, true) == true; + assert commerce_fulfillment_valid(FULFILLMENT_DELIVERY, true, true, false) == false; + assert commerce_fulfillment_valid(FULFILLMENT_DELIVERY, true, false, true) == false; + assert commerce_fulfillment_valid(FULFILLMENT_INVALID, true, true, true) == false; +} + +test commerce_idempotency_distinguishes_new_replay_in_progress_and_conflict { + assert commerce_idempotency_decision(false, false, false, false) == IDEM_REJECT_KEY; + assert commerce_idempotency_decision(true, false, false, false) == IDEM_CREATE_NEW; + assert commerce_idempotency_decision(true, true, true, true) == IDEM_RETURN_PRIOR; + assert commerce_idempotency_decision(true, true, true, false) == IDEM_IN_PROGRESS; + assert commerce_idempotency_decision(true, true, false, true) == IDEM_CONFLICT; +} + +test commerce_only_a_new_key_permits_a_write_and_replay_returns_prior { + assert commerce_idempotency_permits_write(IDEM_CREATE_NEW) == true; + assert commerce_idempotency_permits_write(IDEM_RETURN_PRIOR) == false; + assert commerce_idempotency_permits_write(IDEM_IN_PROGRESS) == false; + assert commerce_idempotency_permits_write(IDEM_CONFLICT) == false; + assert commerce_idempotency_returns_prior(IDEM_RETURN_PRIOR) == true; + assert commerce_idempotency_returns_prior(IDEM_CREATE_NEW) == false; +} + +; A retry happens after the first order consumed the availability and converted the cart. The +; committed result must therefore win before current cart, quote, or inventory gates run. +test commerce_committed_replay_short_circuits_changed_world_state { + assert commerce_checkout_decision(DEAL_INVALID, CART_STATE_CONVERTED, false, false, false, false, false, IDEM_RETURN_PRIOR) == CHECKOUT_RETURN_PRIOR; + assert commerce_checkout_may_commit(CHECKOUT_RETURN_PRIOR) == false; +} + +test commerce_idempotency_record_is_atomic_with_commit { + assert commerce_idempotency_record_is_durable(false) == false; + assert commerce_idempotency_record_is_durable(true) == true; +} + +test commerce_checkout_accepts_a_complete_rental_without_seeing_domain_arithmetic { + const upstream_fulfillable = commerce_deal_fulfillable(DEAL_RENTAL, true, false); + const shape_valid = commerce_deal_shape_valid(DEAL_RENTAL, true, false); + const quote_valid = commerce_quote_snapshot_valid(true, true, true, true, true); + const fulfillment_valid = commerce_fulfillment_valid(FULFILLMENT_PICKUP, true, false, false); + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, shape_valid, true, upstream_fulfillable, quote_valid, fulfillment_valid, IDEM_CREATE_NEW) == CHECKOUT_READY; +} + +test commerce_checkout_accepts_sale_only_through_the_sale_upstream_gate { + const upstream_fulfillable = commerce_deal_fulfillable(DEAL_SALE, false, true); + const shape_valid = commerce_deal_shape_valid(DEAL_SALE, false, true); + const quote_valid = commerce_quote_snapshot_valid(true, true, true, true, true); + const fulfillment_valid = commerce_fulfillment_valid(FULFILLMENT_PICKUP, true, false, false); + assert commerce_checkout_decision(DEAL_SALE, CART_STATE_LOCKED, shape_valid, true, upstream_fulfillable, quote_valid, fulfillment_valid, IDEM_CREATE_NEW) == CHECKOUT_READY; + assert commerce_deal_fulfillable(DEAL_SALE, true, false) == false; +} + +test commerce_checkout_refusal_precedence_is_stable { + assert commerce_checkout_decision(DEAL_INVALID, CART_STATE_OPEN, false, false, false, false, false, IDEM_REJECT_KEY) == CHECKOUT_IDEMPOTENCY_BLOCKED; + assert commerce_checkout_decision(DEAL_INVALID, CART_STATE_OPEN, false, false, false, false, false, IDEM_CREATE_NEW) == CHECKOUT_BAD_DEAL; + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_OPEN, true, true, true, true, true, IDEM_CREATE_NEW) == CHECKOUT_BAD_CART_STATE; + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, true, false, true, true, true, IDEM_CREATE_NEW) == CHECKOUT_PRICE_UNAUTHORIZED; + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, true, true, false, true, true, IDEM_CREATE_NEW) == CHECKOUT_NOT_FULFILLABLE; + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, true, true, true, false, true, IDEM_CREATE_NEW) == CHECKOUT_QUOTE_INVALID; + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, true, true, true, true, false, IDEM_CREATE_NEW) == CHECKOUT_FULFILLMENT_INVALID; + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, true, true, true, true, true, IDEM_IN_PROGRESS) == CHECKOUT_IDEMPOTENCY_BLOCKED; +} + +test commerce_only_ready_checkout_may_commit { + assert commerce_checkout_may_commit(CHECKOUT_READY) == true; + assert commerce_checkout_may_commit(CHECKOUT_RETURN_PRIOR) == false; + assert commerce_checkout_may_commit(CHECKOUT_BAD_DEAL) == false; + assert commerce_checkout_may_commit(CHECKOUT_PRICE_UNAUTHORIZED) == false; + assert commerce_checkout_may_commit(CHECKOUT_IDEMPOTENCY_BLOCKED) == false; +} + +test commerce_order_transition_refuses_mutation_after_terminal_state { + assert commerce_order_transition_allowed(false, false, true) == true; + assert commerce_order_transition_allowed(false, false, false) == false; + assert commerce_order_transition_allowed(false, true, false) == true; + assert commerce_order_transition_allowed(true, true, false) == true; + assert commerce_order_transition_allowed(true, false, true) == false; +} + +invariant commerce_deal_domain_has_exactly_two_shapes + assert DEAL_NAMES.len == 2 and DEAL_RENTAL != DEAL_SALE + +invariant commerce_mixed_rental_and_sale_payload_is_unrepresentable + assert commerce_deal_shape_valid(DEAL_RENTAL, true, true) == false and commerce_deal_shape_valid(DEAL_SALE, true, true) == false + +invariant commerce_terminal_cart_states_never_reopen + assert commerce_cart_transition_allowed(CART_STATE_CONVERTED, CART_STATE_OPEN, true) == false and commerce_cart_transition_allowed(CART_STATE_ABANDONED, CART_STATE_OPEN, true) == false + +invariant commerce_quote_cannot_be_replaced_after_order_creation + assert commerce_quote_snapshot_may_replace(CART_STATE_CONVERTED, true) == false + +invariant commerce_unauthorized_price_never_reaches_commit + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, true, false, true, true, true, IDEM_CREATE_NEW) == CHECKOUT_PRICE_UNAUTHORIZED + +invariant commerce_unbookable_rental_never_reaches_commit + assert commerce_checkout_decision(DEAL_RENTAL, CART_STATE_LOCKED, true, true, commerce_deal_fulfillable(DEAL_RENTAL, false, false), true, true, IDEM_CREATE_NEW) == CHECKOUT_NOT_FULFILLABLE + +invariant commerce_replay_never_creates_a_second_order + assert commerce_idempotency_permits_write(commerce_idempotency_decision(true, true, true, true)) == false and commerce_idempotency_returns_prior(commerce_idempotency_decision(true, true, true, true)) == true + +invariant commerce_committed_replay_precedes_current_cart_and_inventory_state + assert commerce_checkout_decision(DEAL_INVALID, CART_STATE_CONVERTED, false, false, false, false, false, IDEM_RETURN_PRIOR) == CHECKOUT_RETURN_PRIOR + +invariant commerce_failed_transaction_persists_no_idempotency_record + assert commerce_idempotency_record_is_durable(false) == false + +invariant commerce_delivery_without_ready_destination_never_reaches_checkout + assert commerce_fulfillment_valid(FULFILLMENT_DELIVERY, true, true, false) == false + +invariant commerce_refused_checkout_has_no_commit_path + assert commerce_checkout_may_commit(CHECKOUT_PRICE_UNAUTHORIZED) == false and commerce_checkout_may_commit(CHECKOUT_NOT_FULFILLABLE) == false and commerce_checkout_may_commit(CHECKOUT_IDEMPOTENCY_BLOCKED) == false diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27 new file mode 100644 index 0000000000..59b20ddcac --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27 @@ -0,0 +1,687 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/deposit_tiers.t27 -- the published security-deposit tiers of the TurboBaby fleet +; Written contract for every surface that shows a deposit: the tier is looked up on the family +; key and no surface computes one. Measured from data/fleet_seed.json (measured_at 2026-09-12), +; whose deposit authority is the published tariff source KB_faq, section "Exact price list +; (from CRM)". Closes issue #18. ASCII only (L3), English identifiers only. +; -- +; WHAT READS THIS FILE TODAY (measured 2026-09-12): nothing. A grep for ".t27" and for +; "specs/turbobaby" across *.rs, *.toml, *.py, *.sh, .github/ and Makefile returns no hit, so +; the sentence above is a contract and not a description of a wiring that exists. The catalog +; screen renders deposit_thb as it arrives from the API (src/ui/screens/catalog_screen.rs:126, +; src/ui/components/bike_card.rs:102), and the API is seeded by migrations/082_bikes_seed.sql. +; FAMILY_DEPOSIT_THB below is therefore a THIRD copy of the deposit column -- after +; data/fleet_seed.json and migrations/082_bikes_seed.sql -- and a copy is a drift risk (D15). +; It is here because none of the arithmetic below can be checked without it, and the copy is +; currently ungated: scripts/verify_fleet_seed.py pins the SQL to the JSON and nothing else -- +; its own docstring says so -- and knows nothing about .t27. Comparing this table to the seed +; is the next gate to write, not a job something already does. The sibling specs disclose the +; same gap for their own copies (availability.t27, rental_terms.t27); an undeclared third copy +; of a money column is exactly the defect D15 names, so it is declared here. +; -- +; WHY (measured 2026-09-12): the deposit is the sixth heaviest topic in the dialog history the +; tariff was derived from -- 375 client messages -- and issue #18 asked for +; deposit_for(engine_cc, class) over three tiers of 3000 / 5000 / 10000-20000. The seed refutes +; the request in both halves, so this spec does not implement it. Both refutations are recorded +; here rather than in a review comment, because the wrong shape is the cheaper one to write. +; -- +; (a) NO SUCH FUNCTION EXISTS. xmax-300 and xmax-300-new are both class "scooter" and both +; displacement_cc 300, and they carry deposit_thb 5000 and 7000. A function of +; (class, displacement_cc) would have to return two values for one argument pair. The seed +; says of the second: "A distinct product from xmax-300, not a trim of it: different +; tariff, different deposit." The deposit is therefore a PER-FAMILY published attribute +; with a lookup keyed on the family key, the one column that is unique per row. The field +; is also named displacement_cc, not engine_cc; the issue misnames it. +; (b) THE TIERS ARE SIX, NOT THREE. The distinct published deposits are 3000, 5000, 7000, +; 15000, 20000 and 25000 baht. 10000 occurs in none of the 21 published rows (14 families +; in stock, 7 tariff-only), so the issue's top band begins at a number nobody publishes. +; Its other two bands fail too: scooters carry 3000, 5000, 7000 AND 25000 (KB_faq classes +; the 750cc X-ADV with the scooters), and 300 cc carries 5000, 7000 AND 15000. +; -- +; Totality and non-overlap are therefore stated over the FAMILY-KEY domain -- every offered +; family maps to exactly one of the six tiers -- and not over a displacement band that does not +; exist. A spec asserting a false functional dependency is worse than no spec: the function +; compiles, its tests pass on whichever rows the author happened to pick, and the first +; xmax-300-new booking quoted through it under-collects by 7000 - 5000 = 2000 baht. +; -- +; WHAT THIS SPEC NEVER DOES. It never publishes an individual deposit from a past rental (D14): +; the array of them is declared with length zero and must stay that way -- only the aggregate +; tier is public, never a renter's transaction. It never renders an absent deposit as 0: +; click-125 publishes none, D9 makes absent a dash, so the lookup answers a negative marker +; that cannot be read as money. It never computes a client price: no discount is applied to a +; deposit (the 25% / 15% class discounts are RATE discounts), and a rental price comes from the +; door, never from this file (D11). It never says a family is available: the seven tariff-only +; families have published deposits and zero units, and they appear below only as evidence that +; the set of six tiers is closed over them. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module deposit-tiers; + +pub const KIND : str = "contract"; +pub const ID : str = "turbobaby/deposit-tiers"; +pub const NAME : str = "TurboBaby deposit tiers"; +; Current t27c does not support brace imports. This names the owner of fleet availability; +; this contract validates only the lengths and totals of its own deposit tables. +pub const REUSES_AVAILABILITY_ID : str = "turbobaby/availability"; +pub const SEED : str = "data/fleet_seed.json"; +pub const MEASURED_AT : str = "2026-09-12"; +pub const DEPOSIT_AUTHORITY : str = "KB_faq, section 'Exact price list (from CRM)'"; +pub const CURRENCY : str = "THB"; + +; --- The six tiers ---------------------------------------------------------------------- +; The closed set of tier values measured in the published seed. The sources publish an AMOUNT +; per family and no tier name, so a tier is identified by its amount and by its position on the +; ladder; no grade label is invented here. This is an audit taxonomy, not a transaction allowlist: +; an authoritative positive amount outside the measured ladder is shown and logged, never snapped. +pub const TIER_COUNT : u8 = 6; +pub const TIER_1_THB : i32 = 3000; +pub const TIER_2_THB : i32 = 5000; +pub const TIER_3_THB : i32 = 7000; +pub const TIER_4_THB : i32 = 15000; +pub const TIER_5_THB : i32 = 20000; +pub const TIER_6_THB : i32 = 25000; +pub const TIERS_THB : [6]i32 = [3000, 5000, 7000, 15000, 20000, 25000]; + +; Ladder geometry, each number derived from the tiers above: +; gaps 5000-3000=2000, 7000-5000=2000, 15000-7000=8000, 20000-15000=5000, 25000-20000=5000 +; sum 2000+2000+8000+5000+5000 = 22000 +; span 25000-3000 = 22000 +; A minimum gap above zero is what makes the tiers non-overlapping: these are point values, +; not ranges, so a strictly increasing ladder means no deposit amount can belong to two tiers. +pub const TIER_GAPS_THB : [5]i32 = [2000, 2000, 8000, 5000, 5000]; +pub const TIER_GAP_MIN_THB : i32 = 2000; +pub const TIER_GAP_SUM_THB : i32 = 22000; +pub const TIER_SPAN_THB : i32 = 22000; + +; --- Markers, and why they are negative ------------------------------------------------- +; D9: absent stays absent. A lookup that answered 0 for a family whose deposit is unpublished +; would render as "no deposit required", which is the exact defect D9 was written against. A +; negative marker cannot be mistaken for an amount of money, and it is not zero. +pub const DEPOSIT_ABSENT : i32 = -1; +pub const DEPOSIT_NOT_IN_FLEET : i32 = -2; +pub const TIER_NONE : u8 = 255; + +; --- The family-key domain --------------------------------------------------------------- +; The deposits of the 14 in-stock families, in seed order. Fleet keys/counts remain owned by +; availability; the keyed lookup below pins this table without a second shared declaration. +; click-125 is the only family with no published deposit and the only family not offered (D12). +pub const FAMILIES_WITH_PUBLISHED_DEPOSIT : u8 = 13; +pub const FAMILIES_WITHOUT_PUBLISHED_DEPOSIT : u8 = 1; +pub const NOT_OFFERED_KEYS : [1]str = ["click-125"]; +; -1 in position 0 is DEPOSIT_ABSENT: click-125 publishes no deposit, not a deposit of zero. +pub const FAMILY_DEPOSIT_THB : [14]i32 = [ + -1, 3000, 7000, 15000, 5000, 15000, 5000, 7000, 7000, 20000, 20000, 20000, 20000, 25000, +]; + +; How many offered families sit on each tier, in tier order. Measured: 3000 x1 (nmax-155), +; 5000 x2 (forza-300, xmax-300), 7000 x3 (xsr-155, xmax-300-new, adv-350), 15000 x2 (cb-300r, +; mt-03-300), 20000 x4 (ninja-400, cb-650r, cbr-650r, vulcan-s-650), 25000 x1 (xadv-750). +; 1+2+3+2+4+1 = 13, which is every offered family: the histogram partitions the domain. +; -- +; A sum is not a check. Its own total is invariant under any permutation +; of the six entries, so [2, 1, 3, 2, 4, 1] -- two families at 3000 and one at 5000, which the +; seed refutes -- would satisfy both and change nothing that fails. families_on_tier() below +; therefore recounts each rung from FAMILY_DEPOSIT_THB, which is itself pinned row by row +; against the lookup, and the test compares the recount with each entry of this table. +pub const TIER_FAMILY_COUNTS : [6]u8 = [1, 2, 3, 2, 4, 1]; +pub const TIER_FAMILY_COUNT_SUM : u8 = 13; + +; --- The refutation, as numbers ---------------------------------------------------------- +; The three scooters at 300 cc are forza-300 (5000), xmax-300 (5000) and xmax-300-new (7000): +; three families, two distinct deposits, one (class, displacement_cc) pair. Two distinct values +; at one argument pair is precisely what a function may not have, so the count below is the +; measurement that killed deposit_for(engine_cc, class). +; -- +; THE TWO AXES OF THE REFUTATION ARE NOT DECLARED HERE. bike-catalog.t27 owns the class algebra +; (CLASSES, CLASS_SCOOTER, CLASS_MOTORCYCLE, CLASS_COUNT, CLASS_NONE) and the displacement axis +; (DISPLACEMENTS_CC, the count and the three bands); its own header states that no count is +; typed twice, and discovery.t27 puts the rule generally -- no owner, limit or exclusion is +; typed twice. An earlier draft of this file re-declared CLASSES and DISPLACEMENTS_CC verbatim, +; and the drift that rule exists to prevent had already happened: measured 2026-09-12 the same +; seven displacements are [7]u16 in bike-catalog.t27 and [7]i16 in ride-game.t27, one fact at +; two integer widths. A file whose whole argument is that displacement and class are NOT its +; axis has no business carrying one more copy of either, so both are gone. The class of a family +; is read from the seed's class column (families[13].class == "scooter" for xadv-750) and cited +; in prose where it is needed; the displacement of a family is carried by the family key itself +; ("xadv-750"), which is the one column this spec is keyed on. +pub const SCOOTER_300CC_FAMILIES : u8 = 3; +pub const SCOOTER_300CC_DISTINCT_DEPOSITS : u8 = 2; +; Occurrences of the issue's 10000 tier across all 21 published rows -- recounted from the two +; tables in this file by published_rows_at_amount(), not asserted against itself. +pub const DEPOSIT_10000_OCCURRENCES : u8 = 0; + +; --- Published in the tariff, zero units in the fleet ------------------------------------ +; Listed so that a reader who finds a tariff without stock does not invent the stock. Their +; deposits are all drawn from the same six tiers, which is the evidence that the set is closed +; rather than merely enumerated from the 14 in-stock rows. They must never read as available, +; and deposit_thb_of_family() deliberately does not answer for them. +pub const PRICE_LIST_ONLY_UNITS : u8 = 0; +pub const PRICE_LIST_ONLY_KEYS : [7]str = [ + "pcx-150", "adv-150", "pcx-160", "adv-160", "rebel-300", "xsr-900", "r7", +]; +pub const PRICE_LIST_ONLY_DEPOSIT_THB : [7]i32 = [3000, 3000, 5000, 5000, 15000, 20000, 25000]; + +; --- D14: the aggregate tier is public, the transaction is not --------------------------- +; The rental-history sheet holds what each renter paid and what was returned. None of it is +; here, and the empty array is the structural form of that prohibition: a later worker who +; wants to add one has to change a declared length, which cannot pass as a tidy-up. +pub const PAST_RENTAL_DEPOSITS_THB : [0]i32 = []; +pub const PAST_RENTAL_DEPOSIT_RULE : str = "Only the aggregate per-family tier is public. No deposit taken from or returned to an individual renter enters this repository in any form."; + +; --- The form of the deposit: money OR the passport, never both -------------------------- +; Quoted from rental_terms.deposit in the seed, byte for byte: DEPOSIT_FORM_RULE is +; rental_terms.deposit.rule, DEPOSIT_MONEY_METHODS is the first three entries of +; rental_terms.deposit.accepted, and DEPOSIT_FOREIGN_CURRENCY_RULE is +; rental_terms.deposit.foreign_currency. They must diff clean against the JSON; a reworded +; string under a comment that calls itself a quotation is a false provenance claim, and the +; next reader cannot tell which of the two texts governs. +; -- +; The accepted list holds four entries, of which three are ways of paying money and the fourth +; is "passport in place of money" -- so there are two FORMS, not four, and taking both at once +; is not a stricter policy but a different one. DEPOSIT_FORMS is this file's own naming of those +; two forms and is not presented as a quotation: the seed names no form at all. +pub const DEPOSIT_FORMS : [2]str = ["money", "passport"]; +pub const DEPOSIT_FORM_LEGAL_STATES : u8 = 2; +pub const DEPOSIT_FORM_RULE : str = "Deposit is EITHER money OR the passport - never both."; +pub const DEPOSIT_MONEY_METHODS : [3]str = ["cash THB", "bank transfer", "USDT"]; +pub const DEPOSIT_FOREIGN_CURRENCY_RULE : str = "Take the model's THB deposit, convert to an approximate USD/EUR equivalent, round to hundreds. Return by the same method and at the same fixed amount that was agreed."; +; The class and term discounts are RATE discounts. A deposit is quoted at its tier, undiscounted. +pub const DEPOSIT_DISCOUNT_APPLIES : bool = false; + +// ============================================================================ +// Lookups +// +// Keyed on the family key, because that is the only key the deposit is a function of. +// ============================================================================ + +; The published deposit of an in-stock family, in baht. +; >= 0 the family's tier +; DEPOSIT_ABSENT (-1) the family exists and publishes no deposit (click-125): render a dash +; DEPOSIT_NOT_IN_FLEET the key is not one of the 14 in-stock families; this includes the +; seven tariff-only keys, which have a published deposit but no unit, +; and must not be answered here as though they were rentable +pub fn deposit_thb_of_family(key: str) i32 { + if (key == "click-125") { + return DEPOSIT_ABSENT; + } + if (key == "nmax-155") { + return TIER_1_THB; + } + if (key == "xsr-155") { + return TIER_3_THB; + } + if (key == "cb-300r") { + return TIER_4_THB; + } + if (key == "forza-300") { + return TIER_2_THB; + } + if (key == "mt-03-300") { + return TIER_4_THB; + } + if (key == "xmax-300") { + return TIER_2_THB; + } + if (key == "xmax-300-new") { + return TIER_3_THB; + } + if (key == "adv-350") { + return TIER_3_THB; + } + if (key == "ninja-400") { + return TIER_5_THB; + } + if (key == "cb-650r") { + return TIER_5_THB; + } + if (key == "cbr-650r") { + return TIER_5_THB; + } + if (key == "vulcan-s-650") { + return TIER_5_THB; + } + if (key == "xadv-750") { + return TIER_6_THB; + } + return DEPOSIT_NOT_IN_FLEET; +} + +; Position of an amount on the ladder, or TIER_NONE if the amount is not a published tier. +; This is what makes "exactly one tier" checkable: an amount either matches one rung or none. +pub fn tier_index_of(deposit_thb: i32) u8 { + if (deposit_thb == TIER_1_THB) { + return 0; + } + if (deposit_thb == TIER_2_THB) { + return 1; + } + if (deposit_thb == TIER_3_THB) { + return 2; + } + if (deposit_thb == TIER_4_THB) { + return 3; + } + if (deposit_thb == TIER_5_THB) { + return 4; + } + if (deposit_thb == TIER_6_THB) { + return 5; + } + return TIER_NONE; +} + +pub fn is_published_tier(deposit_thb: i32) bool { + return tier_index_of(deposit_thb) != TIER_NONE; +} + +; Transaction boundary retained from the root contract. A positive authoritative amount is +; publishable even when it is not one of today's six seed tiers; an unmatched value is an audit +; event, not permission to rewrite money. Zero and negatives remain absent/invalid under D9. +pub fn publishable_deposit(deposit_thb: i32) bool { + return deposit_thb > 0; +} + +pub fn deposit_needs_tier_log(deposit_thb: i32) bool { + return publishable_deposit(deposit_thb) and !is_published_tier(deposit_thb); +} + +; How many of the 14 in-stock families sit on one rung, recounted from the family table rather +; than read off TIER_FAMILY_COUNTS. This is what turns the histogram from a restatement into a +; measurement: a permuted table now disagrees with the recount and fails. +; click-125 carries DEPOSIT_ABSENT, whose tier_index_of is TIER_NONE, so it is counted on no +; rung -- and passing TIER_NONE as the argument counts exactly the families with no rung at all. +; The accumulator is u8 because the largest possible answer is 14. +pub fn families_on_tier(tier_index: u8) u8 { + var found : u8 = 0; + var i : u8 = 0; + while (i < 14) : (i += 1) { + if (tier_index_of(FAMILY_DEPOSIT_THB[i]) == tier_index) { + found = found + 1; + } + } + return found; +} + +; How many of the 21 published rows -- the 14 in stock plus the 7 tariff-only -- carry one exact +; amount. The 10000 tier the issue asked for is a claim about all 21 rows, and asserting the +; constant DEPOSIT_10000_OCCURRENCES against itself proves nothing about them; this counts. +pub fn published_rows_at_amount(amount_thb: i32) u8 { + var found : u8 = 0; + var i : u8 = 0; + while (i < 14) : (i += 1) { + if (FAMILY_DEPOSIT_THB[i] == amount_thb) { + found = found + 1; + } + } + var j : u8 = 0; + while (j < 7) : (j += 1) { + if (PRICE_LIST_ONLY_DEPOSIT_THB[j] == amount_thb) { + found = found + 1; + } + } + return found; +} + +; Exactly one of the two forms is held for the duration of a rental. Both is forbidden by the +; rule; neither means no deposit was taken at all, which is not a rental this shop writes. +pub fn deposit_form_is_legal(money_taken: bool, passport_held: bool) bool { + if (money_taken == true) { + if (passport_held == true) { + return false; + } + return true; + } + if (passport_held == true) { + return true; + } + return false; +} + +// ============================================================================ +// Tests +// +// The band boundaries the issue asked for, read off the only axis that exists: the tier +// ladder, plus one test per distinct displacement so that the displacements the issue named +// (125, 155, 300, 350, 400, 650, 750) are each exercised -- and so that the two of them which +// carry more than one deposit say so out loud. +// +// Those seven tests do not assert a cc value. The displacement table belongs to +// bike-catalog.t27 and a local copy would be one more of it; each test instead reaches its +// families through the family key, the axis this spec is keyed on, and the key carries the +// displacement in its own name ("nmax-155", "adv-350", "xadv-750"). A test name here states +// only what its body checks -- the deposits of the families at that displacement. +// ============================================================================ + +test the_six_tiers_are_the_closed_set_measured_in_the_seed { + assert TIERS_THB.len == TIER_COUNT; + assert TIERS_THB[0] == TIER_1_THB; + assert TIERS_THB[1] == TIER_2_THB; + assert TIERS_THB[2] == TIER_3_THB; + assert TIERS_THB[3] == TIER_4_THB; + assert TIERS_THB[4] == TIER_5_THB; + assert TIERS_THB[5] == TIER_6_THB; +} + +test an_unmatched_positive_deposit_is_shown_and_logged_not_snapped { + assert publishable_deposit(6000) == true; + assert is_published_tier(6000) == false; + assert deposit_needs_tier_log(6000) == true; + assert deposit_needs_tier_log(TIER_3_THB) == false; + assert publishable_deposit(0) == false; + assert publishable_deposit(DEPOSIT_ABSENT) == false; +} + +test the_tier_the_issue_asked_for_is_published_nowhere { + assert DEPOSIT_10000_OCCURRENCES == 0; + assert is_published_tier(10000) == false; + assert tier_index_of(10000) == TIER_NONE; + ; ...and the constant is the recount of all 21 published rows, not a number typed twice. + assert published_rows_at_amount(10000) == DEPOSIT_10000_OCCURRENCES; + assert published_rows_at_amount(10000) == 0; +} + +; The 21 published rows, counted by amount: 20 of them carry one of the six tiers and exactly +; one carries no deposit at all. 21 is not typed here -- it is the two published counts, and +; each of those is pinned to the length of its own table elsewhere in this file. +test the_six_rungs_account_for_every_published_row { + assert published_rows_at_amount(TIER_1_THB) + published_rows_at_amount(TIER_2_THB) + published_rows_at_amount(TIER_3_THB) + published_rows_at_amount(TIER_4_THB) + published_rows_at_amount(TIER_5_THB) + published_rows_at_amount(TIER_6_THB) == FAMILY_DEPOSIT_THB.len + PRICE_LIST_ONLY_DEPOSIT_THB.len - FAMILIES_WITHOUT_PUBLISHED_DEPOSIT; + assert published_rows_at_amount(DEPOSIT_ABSENT) == FAMILIES_WITHOUT_PUBLISHED_DEPOSIT; + assert published_rows_at_amount(0) == 0; +} + +test each_rung_of_the_ladder_is_its_own_index { + assert tier_index_of(TIER_1_THB) == 0; + assert tier_index_of(TIER_2_THB) == 1; + assert tier_index_of(TIER_3_THB) == 2; + assert tier_index_of(TIER_4_THB) == 3; + assert tier_index_of(TIER_5_THB) == 4; + assert tier_index_of(TIER_6_THB) == 5; +} + +test the_gaps_are_the_differences_of_the_tiers_they_separate { + assert TIER_GAPS_THB.len == TIER_COUNT - 1; + assert TIERS_THB[1] - TIERS_THB[0] == TIER_GAPS_THB[0]; + assert TIERS_THB[2] - TIERS_THB[1] == TIER_GAPS_THB[1]; + assert TIERS_THB[3] - TIERS_THB[2] == TIER_GAPS_THB[2]; + assert TIERS_THB[4] - TIERS_THB[3] == TIER_GAPS_THB[3]; + assert TIERS_THB[5] - TIERS_THB[4] == TIER_GAPS_THB[4]; +} + +test the_pinned_minimum_gap_really_is_the_smallest_one { + assert TIER_GAP_MIN_THB <= TIER_GAPS_THB[0]; + assert TIER_GAP_MIN_THB <= TIER_GAPS_THB[1]; + assert TIER_GAP_MIN_THB <= TIER_GAPS_THB[2]; + assert TIER_GAP_MIN_THB <= TIER_GAPS_THB[3]; + assert TIER_GAP_MIN_THB <= TIER_GAPS_THB[4]; + assert TIER_GAP_MIN_THB == 2000; +} + +test the_gaps_sum_to_the_span_so_no_rung_is_missing { + assert TIER_GAPS_THB[0] + TIER_GAPS_THB[1] + TIER_GAPS_THB[2] + TIER_GAPS_THB[3] + TIER_GAPS_THB[4] == TIER_GAP_SUM_THB; + assert TIERS_THB[5] - TIERS_THB[0] == TIER_SPAN_THB; + assert TIER_GAP_SUM_THB == TIER_SPAN_THB; +} + +test the_histogram_counts_every_offered_family_once { + assert TIER_FAMILY_COUNTS.len == TIER_COUNT; + assert TIER_FAMILY_COUNTS[0] + TIER_FAMILY_COUNTS[1] + TIER_FAMILY_COUNTS[2] + TIER_FAMILY_COUNTS[3] + TIER_FAMILY_COUNTS[4] + TIER_FAMILY_COUNTS[5] == TIER_FAMILY_COUNT_SUM; + assert TIER_FAMILY_COUNT_SUM == FAMILIES_WITH_PUBLISHED_DEPOSIT; + assert FAMILIES_WITH_PUBLISHED_DEPOSIT + FAMILIES_WITHOUT_PUBLISHED_DEPOSIT == FAMILY_DEPOSIT_THB.len; +} + +; The test the sum above cannot be: each rung is recounted from FAMILY_DEPOSIT_THB and compared +; with the published entry, so a permutation of TIER_FAMILY_COUNTS fails here even though every +; total still closes. The last two lines close the domain from the other end: one family has no +; rung (click-125, DEPOSIT_ABSENT), and 13 + 1 is the whole fleet. +test each_rung_is_recounted_from_the_family_table { + assert families_on_tier(0) == TIER_FAMILY_COUNTS[0]; + assert families_on_tier(1) == TIER_FAMILY_COUNTS[1]; + assert families_on_tier(2) == TIER_FAMILY_COUNTS[2]; + assert families_on_tier(3) == TIER_FAMILY_COUNTS[3]; + assert families_on_tier(4) == TIER_FAMILY_COUNTS[4]; + assert families_on_tier(5) == TIER_FAMILY_COUNTS[5]; + assert families_on_tier(TIER_NONE) == FAMILIES_WITHOUT_PUBLISHED_DEPOSIT; + assert families_on_tier(0) + families_on_tier(1) + families_on_tier(2) + families_on_tier(3) + families_on_tier(4) + families_on_tier(5) + families_on_tier(TIER_NONE) == FAMILY_DEPOSIT_THB.len; +} + +; The table and the lookup are two statements of one fact, so they are checked against each +; other row by row. A drift between them is what this test exists to fail on. +test the_table_and_the_lookup_agree_on_all_fourteen_families { + assert FAMILY_DEPOSIT_THB.len == 14; + assert deposit_thb_of_family("click-125") == FAMILY_DEPOSIT_THB[0]; + assert deposit_thb_of_family("nmax-155") == FAMILY_DEPOSIT_THB[1]; + assert deposit_thb_of_family("xsr-155") == FAMILY_DEPOSIT_THB[2]; + assert deposit_thb_of_family("cb-300r") == FAMILY_DEPOSIT_THB[3]; + assert deposit_thb_of_family("forza-300") == FAMILY_DEPOSIT_THB[4]; + assert deposit_thb_of_family("mt-03-300") == FAMILY_DEPOSIT_THB[5]; + assert deposit_thb_of_family("xmax-300") == FAMILY_DEPOSIT_THB[6]; + assert deposit_thb_of_family("xmax-300-new") == FAMILY_DEPOSIT_THB[7]; + assert deposit_thb_of_family("adv-350") == FAMILY_DEPOSIT_THB[8]; + assert deposit_thb_of_family("ninja-400") == FAMILY_DEPOSIT_THB[9]; + assert deposit_thb_of_family("cb-650r") == FAMILY_DEPOSIT_THB[10]; + assert deposit_thb_of_family("cbr-650r") == FAMILY_DEPOSIT_THB[11]; + assert deposit_thb_of_family("vulcan-s-650") == FAMILY_DEPOSIT_THB[12]; + assert deposit_thb_of_family("xadv-750") == FAMILY_DEPOSIT_THB[13]; +} + +; Totality, one family at a time: every offered key lands on a rung, never on TIER_NONE. +test every_offered_family_lands_on_exactly_one_rung { + assert tier_index_of(deposit_thb_of_family("nmax-155")) == 0; + assert tier_index_of(deposit_thb_of_family("forza-300")) == 1; + assert tier_index_of(deposit_thb_of_family("xmax-300")) == 1; + assert tier_index_of(deposit_thb_of_family("xsr-155")) == 2; + assert tier_index_of(deposit_thb_of_family("xmax-300-new")) == 2; + assert tier_index_of(deposit_thb_of_family("adv-350")) == 2; + assert tier_index_of(deposit_thb_of_family("cb-300r")) == 3; + assert tier_index_of(deposit_thb_of_family("mt-03-300")) == 3; + assert tier_index_of(deposit_thb_of_family("ninja-400")) == 4; + assert tier_index_of(deposit_thb_of_family("cb-650r")) == 4; + assert tier_index_of(deposit_thb_of_family("cbr-650r")) == 4; + assert tier_index_of(deposit_thb_of_family("vulcan-s-650")) == 4; + assert tier_index_of(deposit_thb_of_family("xadv-750")) == 5; +} + +; ---- one test per displacement the issue named ----------------------------------------- + +test at_125cc_the_one_family_publishes_no_deposit_and_is_not_offered { + assert NOT_OFFERED_KEYS[0] == "click-125"; + assert deposit_thb_of_family("click-125") == DEPOSIT_ABSENT; + assert deposit_thb_of_family("click-125") < 0; + assert is_published_tier(DEPOSIT_ABSENT) == false; +} + +test at_155cc_two_families_carry_two_different_tiers { + assert deposit_thb_of_family("nmax-155") == 3000; + assert deposit_thb_of_family("xsr-155") == 7000; + assert deposit_thb_of_family("xsr-155") - deposit_thb_of_family("nmax-155") == 4000; +} + +test at_300cc_five_families_carry_three_different_tiers { + assert deposit_thb_of_family("forza-300") == 5000; + assert deposit_thb_of_family("xmax-300") == 5000; + assert deposit_thb_of_family("xmax-300-new") == 7000; + assert deposit_thb_of_family("cb-300r") == 15000; + assert deposit_thb_of_family("mt-03-300") == 15000; +} + +test at_350cc_the_one_family_sits_on_the_third_rung { + assert deposit_thb_of_family("adv-350") == 7000; + assert tier_index_of(deposit_thb_of_family("adv-350")) == 2; +} + +test at_400cc_the_one_family_sits_on_the_fifth_rung { + assert deposit_thb_of_family("ninja-400") == 20000; + assert tier_index_of(deposit_thb_of_family("ninja-400")) == 4; +} + +test at_650cc_three_families_share_one_tier { + assert deposit_thb_of_family("cb-650r") == 20000; + assert deposit_thb_of_family("cbr-650r") == 20000; + assert deposit_thb_of_family("vulcan-s-650") == 20000; +} + +; The earlier name of this test was "..._is_carried_by_a_scooter" over a body that asserted +; CLASSES[0] == "scooter" -- that the string "scooter" sits at index 0 of a local class table, +; which is true of the table and says nothing about this bike. The seed does class the X-ADV +; with the scooters (families[13].class == "scooter"), and that fact carries the header's +; refutation of the issue's "scooters are the cheap band"; but the class column is owned by +; bike-catalog.t27 and is not tabulated here, so the name now claims only what the body checks: +; exactly one family stands on the top rung, and it is the X-ADV. +test at_750cc_the_top_rung_is_the_xadv_and_only_the_xadv { + assert deposit_thb_of_family("xadv-750") == 25000; + assert deposit_thb_of_family("xadv-750") == TIER_6_THB; + assert families_on_tier(5) == 1; + assert families_on_tier(5) == TIER_FAMILY_COUNTS[5]; +} + +; ---- the measurement that forced the shape of this spec -------------------------------- + +test the_xmax_300_pair_refutes_a_function_of_class_and_displacement { + ; Both rows: class "scooter", displacement_cc 300. Different deposits. + assert deposit_thb_of_family("xmax-300") == 5000; + assert deposit_thb_of_family("xmax-300-new") == 7000; + assert deposit_thb_of_family("xmax-300-new") != deposit_thb_of_family("xmax-300"); + assert deposit_thb_of_family("xmax-300-new") - deposit_thb_of_family("xmax-300") == 2000; + assert SCOOTER_300CC_FAMILIES == 3; + assert SCOOTER_300CC_DISTINCT_DEPOSITS == 2; +} + +; ---- what the lookup refuses to answer ------------------------------------------------- + +test a_tariff_only_key_and_an_unknown_key_are_not_answered_here { + assert deposit_thb_of_family("pcx-150") == DEPOSIT_NOT_IN_FLEET; + assert deposit_thb_of_family("r7") == DEPOSIT_NOT_IN_FLEET; + assert deposit_thb_of_family("") == DEPOSIT_NOT_IN_FLEET; + assert DEPOSIT_NOT_IN_FLEET < 0; + assert PRICE_LIST_ONLY_UNITS == 0; +} + +; Row by row, key beside amount, the way the in-stock table is checked above. Membership in the +; six-tier set is not enough on its own: it holds under any permutation of the seven amounts, +; and a permutation is a wrong published deposit -- pcx-150, the cheapest machine in the tariff +; at 349 THB/day, would carry the R7's 25000 and still pass. These are the seed's +; price_list_only.families rows in seed order. +test the_tariff_only_rows_pin_each_key_to_its_own_published_deposit { + assert PRICE_LIST_ONLY_KEYS[0] == "pcx-150"; + assert PRICE_LIST_ONLY_DEPOSIT_THB[0] == TIER_1_THB; + assert PRICE_LIST_ONLY_KEYS[1] == "adv-150"; + assert PRICE_LIST_ONLY_DEPOSIT_THB[1] == TIER_1_THB; + assert PRICE_LIST_ONLY_KEYS[2] == "pcx-160"; + assert PRICE_LIST_ONLY_DEPOSIT_THB[2] == TIER_2_THB; + assert PRICE_LIST_ONLY_KEYS[3] == "adv-160"; + assert PRICE_LIST_ONLY_DEPOSIT_THB[3] == TIER_2_THB; + assert PRICE_LIST_ONLY_KEYS[4] == "rebel-300"; + assert PRICE_LIST_ONLY_DEPOSIT_THB[4] == TIER_4_THB; + assert PRICE_LIST_ONLY_KEYS[5] == "xsr-900"; + assert PRICE_LIST_ONLY_DEPOSIT_THB[5] == TIER_5_THB; + assert PRICE_LIST_ONLY_KEYS[6] == "r7"; + assert PRICE_LIST_ONLY_DEPOSIT_THB[6] == TIER_6_THB; + ; No tariff-only family sits on the 7000 rung, which is why the set of six is closed over + ; these rows without any of them being the reason a rung exists. + assert published_rows_at_amount(TIER_3_THB) == TIER_FAMILY_COUNTS[2]; +} + +test the_tariff_only_deposits_are_all_drawn_from_the_same_six_tiers { + assert PRICE_LIST_ONLY_KEYS.len == PRICE_LIST_ONLY_DEPOSIT_THB.len; + assert PRICE_LIST_ONLY_KEYS.len == 7; + assert is_published_tier(PRICE_LIST_ONLY_DEPOSIT_THB[0]) == true; + assert is_published_tier(PRICE_LIST_ONLY_DEPOSIT_THB[1]) == true; + assert is_published_tier(PRICE_LIST_ONLY_DEPOSIT_THB[2]) == true; + assert is_published_tier(PRICE_LIST_ONLY_DEPOSIT_THB[3]) == true; + assert is_published_tier(PRICE_LIST_ONLY_DEPOSIT_THB[4]) == true; + assert is_published_tier(PRICE_LIST_ONLY_DEPOSIT_THB[5]) == true; + assert is_published_tier(PRICE_LIST_ONLY_DEPOSIT_THB[6]) == true; +} + +test zero_is_not_a_tier_and_absent_is_not_zero { + assert is_published_tier(0) == false; + assert tier_index_of(0) == TIER_NONE; + assert DEPOSIT_ABSENT != 0; + assert DEPOSIT_ABSENT < 0; + assert DEPOSIT_NOT_IN_FLEET != DEPOSIT_ABSENT; +} + +test the_deposit_is_money_or_the_passport_and_never_both { + assert deposit_form_is_legal(true, false) == true; + assert deposit_form_is_legal(false, true) == true; + assert deposit_form_is_legal(true, true) == false; + assert deposit_form_is_legal(false, false) == false; + assert DEPOSIT_FORMS[0] == "money"; + assert DEPOSIT_FORMS[1] == "passport"; +} + +test no_discount_is_applied_to_a_deposit { + assert DEPOSIT_DISCOUNT_APPLIES == false; + assert DEPOSIT_MONEY_METHODS.len == 3; +} + +// ============================================================================ +// Invariants +// +// The claims about the whole module that no single example carries: the tier set is closed, +// the family-key domain is total, the tiers do not overlap, the deposit is not a function of +// (class, displacement_cc), the form is exclusive, and no individual rental is published. +// ============================================================================ + +invariant the_six_tiers_are_the_whole_published_seed_set + assert TIERS_THB.len == TIER_COUNT + +invariant an_unmatched_authoritative_amount_is_not_rewritten_to_a_tier + assert publishable_deposit(6000) == true and tier_index_of(6000) == TIER_NONE and deposit_needs_tier_log(6000) == true + +; TOTALITY, over the family-key domain rather than a displacement band: every offered family +; publishes a deposit, so the lookup never has to invent one for a bike that is for rent. +invariant every_offered_family_has_a_published_tier + assert FAMILIES_WITH_PUBLISHED_DEPOSIT == TIER_FAMILY_COUNT_SUM + +; ...and the domain is closed: the offered families plus the one without a published deposit +; are the whole fleet, so no in-stock family falls outside this spec unnoticed. +invariant the_family_key_domain_is_closed + assert FAMILIES_WITH_PUBLISHED_DEPOSIT + FAMILIES_WITHOUT_PUBLISHED_DEPOSIT == FAMILY_DEPOSIT_THB.len + +; EXACTLY ONE: the per-tier counts add up to the offered count, so the six tiers partition the +; offered families -- none counted twice, none left out. +invariant the_tier_histogram_partitions_the_offered_families + assert TIER_FAMILY_COUNT_SUM == FAMILIES_WITH_PUBLISHED_DEPOSIT + +; ...and the partition is recounted from the family table rather than restated: the six rungs +; between them hold every offered family, counted one row at a time by families_on_tier(). +; The published histogram is compared entry by entry in each_rung_is_recounted_from_the_family_table; +; this is the whole-module form of the same claim. +invariant the_rungs_recount_to_the_offered_families + assert families_on_tier(0) + families_on_tier(1) + families_on_tier(2) + families_on_tier(3) + families_on_tier(4) + families_on_tier(5) == FAMILIES_WITH_PUBLISHED_DEPOSIT + +; NON-OVERLAP: the tiers are point values, and the smallest gap between adjacent rungs is +; positive, so the ladder is strictly increasing and no amount can belong to two tiers. +invariant the_tiers_do_not_overlap + assert TIER_GAP_MIN_THB > 0 + +; ...and the gaps are the whole ladder, not a subset of it: they sum to the span from the +; lowest tier to the highest, so a rung cannot be dropped without failing here. +invariant the_gap_ladder_spans_the_whole_range + assert TIER_GAP_SUM_THB == TIER_SPAN_THB + +; The refutation of issue #18 as a standing claim rather than a comment: one (class, +; displacement_cc) pair carries more than one deposit, so no function of those two arguments +; can exist, and nobody may add one later without this failing. +invariant deposit_is_not_a_function_of_class_and_displacement + assert SCOOTER_300CC_DISTINCT_DEPOSITS > 1 + +; The amount the issue asked for as its top band is published by no row at all. Counted over +; the 21 published rows rather than read off DEPOSIT_10000_OCCURRENCES, which would be the +; constant asserted against its own declaration. +invariant the_ten_thousand_tier_does_not_exist + assert published_rows_at_amount(10000) == 0 + +; Money or the passport: two forms, and exactly two legal states of the pair. A third state +; (both) and a fourth (neither) are refused, which is what "never both" means in code. +invariant the_deposit_form_is_exclusive + assert DEPOSIT_FORM_LEGAL_STATES == DEPOSIT_FORMS.len + +; D14: only the aggregate tier is public. The length is the prohibition. +invariant no_individual_rental_deposit_is_published + assert PAST_RENTAL_DEPOSITS_THB.len == 0 + +; D9: an absent deposit is a dash, never a zero. A marker below zero cannot be read as money. +invariant the_absent_marker_can_never_be_read_as_money + assert DEPOSIT_ABSENT < 0 diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/market_profile.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/market_profile.t27 new file mode 100644 index 0000000000..7d68ce0576 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/market_profile.t27 @@ -0,0 +1,330 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/market_profile.t27 -- the contract a market/country/currency must satisfy +; The owner's standing instruction (2026-09-13) is that this agent runs on ANY market, country +; and currency. Measured before this file existed, Thailand was ambient in the code rather than +; declared anywhere: the money formatter hardcodes the baht glyph, the comma group separator and +; whole-baht display (src/trios/pricing.rs format_baht/group_thousands), i18n templates bake +; the glyph into customer-facing sentences (src/trios/i18n.rs), the shop timezone is a +; hardcoded +7 in five files (src/api/happy_hour.rs:15, src/api/share.rs:135, src/promo.rs:252, +; src/api/orders.rs:254, src/ui/screens/events_screen.rs:36; measured 2026-09-13 -- src/api/ +; events.rs stores UTC and carries no market fact), and the checkout phone default is +66 +; (src/trios/store.rs). None of those files states a market; each states a fact of one market. +; This contract makes the market a PROFILE -- a named set of fields any deployment must +; declare -- so that a second market is a second profile, not a second fork of the formatter. +; -- +; WHAT READS THIS FILE TODAY (measured 2026-09-13): nothing reads .t27 at runtime. The +; deployment profile is carried by data/fleet_seed.json ("market" block, validated by +; scripts/verify_fleet_seed.py) and by the Rust formatter instance in src/trios/pricing.rs +; (MarketMoneyFormat / THB_MARKET / format_money); format_baht is that instance's named +; shortcut, so all existing call sites display the declared market without per-screen edits. +; The values below are therefore a THIRD copy of the profile -- after the seed's market block +; and the Rust consts -- and a copy is a drift risk (D15). It is here because a contract +; nobody can check is a claim, not a specification; the seed verifier and the Rust tests pin +; their copies to these values, and the agent card names this file as the market contract. +; -- +; THE PROOF PROFILE. A contract for "any currency" that only ever compiles against THB proves +; nothing about other currencies, so a second profile is declared below (EUR, Germany) and the +; tests run every rule over both. No shop exists at that profile. Every value it carries is a +; public ISO 4217 / ISO 3166-1 / IANA / Unicode fact, and none of it is shop data; it exists +; so that a contract shaped like one currency cannot pass as a contract for all of them. The +; invariant the_contract_is_not_one_market_shaped fails the day someone "fixes" the proof +; profile back to the deployment's values. +; -- +; WHAT THIS CONTRACT NEVER DOES. It never converts money: the door quotes in the market's own +; currency (PRICE_AUTHORITY in specs/agents/turbobaby.t27, D11), and the deposit's approximate +; USD/EUR equivalents are agreed by a human at the door (data/fleet_seed.json +; rental_terms.deposit.foreign_currency), so no exchange rate enters this repository and the +; empty table below is that prohibition in structural form. It never restates a price, a tier +; or a deposit: those are owned by pricing_honesty.t27 and deposit_tiers.t27. It never invents +; a display convention a market did not declare: every field is measured from code or cited to +; a standard. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module turbobaby-market; + +pub const KIND : str = "contract"; +pub const ID : str = "turbobaby/market"; +pub const NAME : str = "TurboBaby market profile"; +pub const SEED : str = "data/fleet_seed.json"; +pub const MEASURED_AT : str = "2026-09-13"; +; The deployment profile lives in the seed's "market" block; this file owns the CONTRACT the +; block must satisfy, not the block itself. Ownership follows discovery.t27: no value is +; typed twice without one owner, so the profile consts below are the citable mirror the tests +; run against, and the seed verifier compares its block to these values. +pub const PROFILE_OWNER : str = "data/fleet_seed.json market block (deployment); specs/turbobaby/market_profile.t27 (contract); src/trios/pricing.rs THB_MARKET (formatter instance)"; + +; --- the profile shape ------------------------------------------------------------------- +; A market is exactly these fields. A field added to the seed without a rule here is a field +; nothing checks; a rule here without a field in the seed is a rule about nothing. The count +; pins the shape: dropping a field from this table fails PROFILE_FIELDS.len below. +pub const PROFILE_FIELD_COUNT : u8 = 13; +pub const PROFILE_FIELDS : [13]str = [ + "country_code", "country_name", "currency_code", "currency_minor_digits_iso", + "currency_minor_digits_display", "currency_symbol_codepoint", "currency_symbol_placement", + "group_separator", "decimal_separator", "timezone_name", "utc_offset_hours", + "dst_observed", "default_calling_code", +]; + +; --- the bounds the fields must respect ---------------------------------------------------- +; ISO 4217 minor-unit exponents run 0..=4 in the active standard: JPY/KRW at 0, most majors +; at 2, KWD/BHD at 3, CLF at 4. No legal profile may declare an exponent outside that range. +pub const MINOR_DIGITS_MIN : u8 = 0; +pub const MINOR_DIGITS_MAX : u8 = 4; +; A market may DISPLAY fewer minor digits than the ISO exponent (Thailand: satang exist but +; shop prices are whole baht) but never more: more would render precision the currency has. +pub const DISPLAY_MAY_OMIT_MINOR_DIGITS : bool = true; +; Unicode scalar values: the assigned range, minus the surrogate gap. A symbol codepoint +; outside it cannot be rendered by any conforming client, so it is refused here. +pub const CODEPOINT_MAX : i32 = 1114111; +pub const SURROGATE_LO : i32 = 55296; +pub const SURROGATE_HI : i32 = 57343; +; Symbol placement has exactly two known forms. +pub const SYMBOL_PLACEMENTS : [2]str = ["prefix", "suffix"]; +; Real UTC offsets run from -12 to +14 (Kiribati's Line Islands hold +14). +pub const UTC_OFFSET_MIN : i32 = -12; +pub const UTC_OFFSET_MAX : i32 = 14; + +; --- the deployment profile: Thailand ----------------------------------------------------- +; Every value measured from this repository on 2026-09-13; the field order follows +; PROFILE_FIELDS. +pub const TH_COUNTRY_CODE : str = "TH"; +pub const TH_COUNTRY_NAME : str = "Thailand"; +pub const TH_CURRENCY_CODE : str = "THB"; +; ISO 4217: one baht is 100 satang. +pub const TH_MINOR_DIGITS_ISO : u8 = 2; +; pricing.rs format_baht drops the fractional part: whole-baht cash practice. +pub const TH_MINOR_DIGITS_DISPLAY : u8 = 0; +; U+0E3F THAI CURRENCY SYMBOL BAHT, carried as its decimal code point 3663 so this file stays +; ASCII-only (L3); the glyph itself lives in the Rust formatter and the seed's market block. +pub const TH_SYMBOL_CODEPOINT : i32 = 3663; +pub const TH_SYMBOL_PLACEMENT : str = "prefix"; +pub const TH_GROUP_SEPARATOR : str = ","; +pub const TH_DECIMAL_SEPARATOR : str = "."; +; api/happy_hour.rs: "Asia/Bangkok, UTC+7, no DST". +pub const TH_TIMEZONE : str = "Asia/Bangkok"; +pub const TH_UTC_OFFSET_HOURS : i32 = 7; +pub const TH_DST : bool = false; +; store.rs: the default calling code for a bare local phone number. +pub const TH_CALLING_CODE : str = "+66"; +pub const TH_LANGUAGES : [2]str = ["ru", "en"]; + +; --- the proof profile: EUR (fixture, not a deployment) ------------------------------------ +pub const PROOF_KIND : str = "contract-test fixture"; +pub const PROOF_NOTE : str = "No shop exists at this profile. It exists so the contract is proven not THB-shaped: a different currency, a different display exponent, both separators swapped, the symbol on the other side, and a DST-true timezone. Every value is a public ISO/IANA fact, none is shop data."; +pub const PROOF_COUNTRY_CODE : str = "DE"; +pub const PROOF_COUNTRY_NAME : str = "Germany"; +pub const PROOF_CURRENCY_CODE : str = "EUR"; +pub const PROOF_MINOR_DIGITS_ISO : u8 = 2; +pub const PROOF_MINOR_DIGITS_DISPLAY : u8 = 2; +; U+20AC EURO SIGN, decimal 8364. +pub const PROOF_SYMBOL_CODEPOINT : i32 = 8364; +pub const PROOF_SYMBOL_PLACEMENT : str = "suffix"; +; de-DE convention: dot groups thousands, comma marks the decimal. +pub const PROOF_GROUP_SEPARATOR : str = "."; +pub const PROOF_DECIMAL_SEPARATOR : str = ","; +pub const PROOF_TIMEZONE : str = "Europe/Berlin"; +pub const PROOF_UTC_OFFSET_HOURS : i32 = 1; +pub const PROOF_DST : bool = true; +pub const PROOF_CALLING_CODE : str = "+49"; + +; --- the exchange-rate prohibition (D11, D14) ------------------------------------------------ +; The deposit rule converts a THB tier to an approximate USD/EUR equivalent at the door, by +; hand, and the return uses the same fixed amount that was agreed. A rate table here would +; let a computed number reach a customer without the door; the empty array is the structural +; form of "a rate enters only with a source", and its length is pinned below. +pub const EXCHANGE_RATES_PUBLISHED : [0]str = []; +pub const EXCHANGE_RATE_RULE : str = "No exchange rate enters this repository without a source. The deposit's foreign-currency equivalents are agreed by a human at the door (fleet_seed.json rental_terms.deposit.foreign_currency); the bot neither holds nor derives a rate."; + +; ============================================================================ +// Predicates. Each takes profile values, not a profile object: the current +// compiler has no struct type, so the fields arrive as plain arguments and the +// tests below call every predicate over both profiles in full. +// ============================================================================ + +pub fn minor_digits_is_legal(iso: u8, display: u8) bool { + if (iso > MINOR_DIGITS_MAX) { + return false; + } + if (display > iso) { + return false; + } + return true; +} + +pub fn symbol_placement_is_known(placement: str) bool { + if (placement == SYMBOL_PLACEMENTS[0]) { + return true; + } + if (placement == SYMBOL_PLACEMENTS[1]) { + return true; + } + return false; +} + +; Identical group and decimal separators make a formatted amount ambiguous: "1.234" cannot +; tell the thousands from the fraction. Distinctness is required even when the display +; exponent is 0, because a profile is one object and its unused half may not contradict +; its used half. +pub fn separators_are_distinct(group: str, decimal: str) bool { + return group != decimal; +} + +pub fn utc_offset_is_real(hours: i32) bool { + if (hours < UTC_OFFSET_MIN) { + return false; + } + if (hours > UTC_OFFSET_MAX) { + return false; + } + return true; +} + +pub fn symbol_codepoint_is_assigned(cp: i32) bool { + if (cp < 0) { + return false; + } + if (cp > CODEPOINT_MAX) { + return false; + } + if (cp >= SURROGATE_LO) { + if (cp <= SURROGATE_HI) { + return false; + } + } + return true; +} + +; The two-separator rule generalises: within ONE profile the group separator must also +; differ from every digit it can be confused with is too strong to state without string +; inspection, so the contract states what it can check and the Python verifier checks the +; rest (single-character separators, one-character currency code shapes are validated +; against the seed there, where regex exists). +pub fn country_codes_differ(a: str, b: str) bool { + return a != b; +} + +// ============================================================================ +// Tests. Both profiles run every rule, then the refusals. +// ============================================================================ + +test the_deployment_profile_satisfies_every_rule { + assert minor_digits_is_legal(TH_MINOR_DIGITS_ISO, TH_MINOR_DIGITS_DISPLAY) == true; + assert symbol_placement_is_known(TH_SYMBOL_PLACEMENT) == true; + assert separators_are_distinct(TH_GROUP_SEPARATOR, TH_DECIMAL_SEPARATOR) == true; + assert utc_offset_is_real(TH_UTC_OFFSET_HOURS) == true; + assert symbol_codepoint_is_assigned(TH_SYMBOL_CODEPOINT) == true; +} + +test the_proof_profile_satisfies_every_rule { + assert minor_digits_is_legal(PROOF_MINOR_DIGITS_ISO, PROOF_MINOR_DIGITS_DISPLAY) == true; + assert symbol_placement_is_known(PROOF_SYMBOL_PLACEMENT) == true; + assert separators_are_distinct(PROOF_GROUP_SEPARATOR, PROOF_DECIMAL_SEPARATOR) == true; + assert utc_offset_is_real(PROOF_UTC_OFFSET_HOURS) == true; + assert symbol_codepoint_is_assigned(PROOF_SYMBOL_CODEPOINT) == true; +} + +; The tripwire this file exists to leave behind: the two profiles must disagree on the +; fields that carry the market. If the proof profile is edited toward the deployment's +; values, the contract stops proving anything about other currencies and this fails. +test the_contract_is_not_one_market_shaped { + assert country_codes_differ(TH_COUNTRY_CODE, PROOF_COUNTRY_CODE) == true; + assert TH_CURRENCY_CODE != PROOF_CURRENCY_CODE; + assert TH_SYMBOL_PLACEMENT != PROOF_SYMBOL_PLACEMENT; + assert TH_GROUP_SEPARATOR != PROOF_GROUP_SEPARATOR; + assert TH_DECIMAL_SEPARATOR != PROOF_DECIMAL_SEPARATOR; + assert TH_DST != PROOF_DST; +} + +test display_digits_may_omit_but_never_exceed_the_iso_exponent { + assert DISPLAY_MAY_OMIT_MINOR_DIGITS == true; + assert minor_digits_is_legal(2, 0) == true; + assert minor_digits_is_legal(2, 2) == true; + assert minor_digits_is_legal(2, 3) == false; + assert minor_digits_is_legal(0, 0) == true; + assert minor_digits_is_legal(0, 1) == false; +} + +test exponents_outside_the_iso_range_are_refused { + assert minor_digits_is_legal(5, 5) == false; + assert minor_digits_is_legal(5, 0) == false; + assert MINOR_DIGITS_MAX == 4; + assert MINOR_DIGITS_MIN == 0; +} + +test identical_separators_are_refused { + assert separators_are_distinct(".", ".") == false; + assert separators_are_distinct(",", ",") == false; + assert separators_are_distinct(",", ".") == true; + assert separators_are_distinct(".", ",") == true; +} + +test unknown_symbol_placements_are_refused { + assert symbol_placement_is_known("prefix") == true; + assert symbol_placement_is_known("suffix") == true; + assert symbol_placement_is_known("middle") == false; + assert symbol_placement_is_known("") == false; + assert SYMBOL_PLACEMENTS.len == 2; +} + +test offsets_beyond_the_real_range_are_refused { + assert utc_offset_is_real(-12) == true; + assert utc_offset_is_real(14) == true; + assert utc_offset_is_real(-13) == false; + assert utc_offset_is_real(15) == false; + assert utc_offset_is_real(0) == true; +} + +test unrenderable_symbol_codepoints_are_refused { + assert symbol_codepoint_is_assigned(3663) == true; + assert symbol_codepoint_is_assigned(8364) == true; + assert symbol_codepoint_is_assigned(-1) == false; + assert symbol_codepoint_is_assigned(1114112) == false; + ; The surrogate gap: not assignable, not renderable. + assert symbol_codepoint_is_assigned(55296) == false; + assert symbol_codepoint_is_assigned(57343) == false; + assert symbol_codepoint_is_assigned(57344) == true; +} + +; The deployment's glyph is in the Thai block (U+0E00..U+0E7F, 3584..3711) and the proof +; profile's is in the Currency Symbols block (U+20A0..U+20CF, 8352..8399). Block membership +; is the cheap form of "this code point belongs to this currency's script", stated as the +; integer bounds the compiler can check. +test both_symbols_sit_in_their_scripts_blocks { + assert TH_SYMBOL_CODEPOINT >= 3584; + assert TH_SYMBOL_CODEPOINT <= 3711; + assert PROOF_SYMBOL_CODEPOINT >= 8352; + assert PROOF_SYMBOL_CODEPOINT <= 8399; +} + +test the_profile_shape_is_pinned { + assert PROFILE_FIELDS.len == PROFILE_FIELD_COUNT; + assert PROFILE_FIELDS[0] == "country_code"; + assert PROFILE_FIELDS[2] == "currency_code"; + assert PROFILE_FIELDS[5] == "currency_symbol_codepoint"; + assert PROFILE_FIELDS[12] == "default_calling_code"; +} + +test the_fixture_declares_itself_a_fixture { + assert PROOF_KIND == "contract-test fixture"; + assert PROOF_TIMEZONE == "Europe/Berlin"; + assert PROOF_CALLING_CODE == "+49"; +} + +// ============================================================================ +// Invariants +// ============================================================================ + +invariant display_digits_never_exceed_the_iso_exponent + assert minor_digits_is_legal(TH_MINOR_DIGITS_ISO, TH_MINOR_DIGITS_DISPLAY) and minor_digits_is_legal(PROOF_MINOR_DIGITS_ISO, PROOF_MINOR_DIGITS_DISPLAY) + +invariant the_contract_covers_at_least_two_currencies + assert TH_CURRENCY_CODE != PROOF_CURRENCY_CODE + +invariant no_exchange_rate_is_published_without_a_source + assert EXCHANGE_RATES_PUBLISHED.len == 0 + +invariant every_profile_places_its_symbol_one_of_two_ways + assert symbol_placement_is_known(TH_SYMBOL_PLACEMENT) and symbol_placement_is_known(PROOF_SYMBOL_PLACEMENT) + +invariant the_deployment_timezone_has_no_dst + assert TH_DST == false diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27 new file mode 100644 index 0000000000..c5391b74cd --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27 @@ -0,0 +1,421 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/pricing_honesty.t27 -- an absent rate is not zero, and a dash is not silence +; The formal statement of DECISIONS.md D11 (price provenance) and D9 (absent stays absent) for +; one value: the published per-day rate of a bike family. Source of truth for the optional-rate +; representation the two runtimes named by D15 must share -- src/trios/pricing.rs for the Axum +; server and for the Dioxus/WASM catalog screen -- so that the honesty filters are written once +; and checked against a written contract instead of against each other. ASCII only (L3). + +; WHY (measured 2026-09-12, data/fleet_seed.json, schema_version 2). Issue #21 opens with +; "five of thirteen families have no measured rate". THAT FIGURE IS NOT REPRODUCIBLE. Counted +; row by row: of the 14 in-stock families exactly ONE lacks base_rate_thb_day -- click-125 -- +; and that row also carries offered:false with 0 of its 1 unit available, so of the 13 OFFERED +; families ZERO lack a rate. The seed's own totals agree with the row count and not with the +; issue: families_without_published_rate is 1. The issue's five is recorded below as a +; constant and refuted by a test, because a spec built around it would have pinned a defect +; that does not exist, and because the correction is the most useful thing in this file. + +; The absence in this corpus is real, but it points the other way and it is seven times +; larger: price_list_only holds 7 families with a published rate and ZERO units, and they +; must never read as available. So both failure modes are live at once -- one family with +; stock and no rate, seven with a rate and no stock -- which is why presence-of-rate and +; bookability are kept as two independent facts here and neither is derived from the other. +; A third measured absence keeps that separation honest: xadv-750 is bookable (offered, 1 of +; 2 units at base) and has a present day rate of 2788, yet its monthly_low_season_thb is +; null. Absence is not confined to the closed family, so "bookable implies present" is +; claimed for the per-day rate only and is not generalised to every money field. Four money +; fields are null across the 14 in-stock rows: click-125's rate, deposit and monthly, and +; xadv-750's monthly. + +; D11 is quoted rather than paraphrased, because it outranks convenience: the client-facing +; price is the number the door (the owner's live sheet) returns; if the door is silent the +; bot MUST NOT compute a price -- not an exact number, not a "from" number, not an average, +; not a range -- and not silence either. It says that a human quotes this price. Invention +; and silence are forbidden equally. That is why the dash sentinel cannot travel alone here: +; every SHAPE_DASH carries SAY_HUMAN_QUOTES, and a renderer that emits the dash without the +; sentence has committed the silence half of the offence instead of the invention half. A +; spec that shipped the dash alone would license silence, which is the same defect wearing +; better manners. + +; WHAT THIS SPEC NEVER DOES. It holds no default rate, no coalescing operator and no fallback +; price. There is no function here from an absent rate to a number, and that missing function +; IS the specification -- "it compiles" would prove nothing, since a file of bare constants +; compiles too. It computes no client price at all: the class discounts (scooter 0.25, +; motorcycle 0.15) and the published term bands live in the seed, the arithmetic lives once +; in src/trios/pricing.rs (D15), and this file only pins that the handing-over cannot invent +; a number. It carries no renter, handle, phone, debt, key code, tax date, purchase cost, +; plate or personal note (D14) -- not in a constant and not in a test fixture. It does not +; distinguish a silent door from an unpublished tariff, because the client-facing consequence +; of the two is identical; the divergence log D11 requires is a different contract. And it +; does not carry the Russian wording of the must-say sentence: L3 forbids Cyrillic in a spec, +; so what is pinned is the obligation, not the translation (D13: ru primary, en second). +; phi^2 + 1/phi^2 = 3 | TRINITY + +module pricing-honesty; + +pub const KIND : str = "contract"; +pub const ID : str = "turbobaby/pricing-honesty"; +pub const NAME : str = "Pricing honesty: an absent rate is not zero"; +; Current t27c does not support brace imports. Pricing consumes the boolean result of this +; named contract and deliberately has no offered/stock formula of its own. +pub const REUSES_AVAILABILITY_ID : str = "turbobaby/availability"; +pub const DECISIONS : [4]str = ["D9", "D11", "D14", "D15"]; +pub const SEED : str = "data/fleet_seed.json"; +pub const SEED_MEASURED_AT : str = "2026-09-12"; +pub const PRICE_AUTHORITY : str = "door"; + +; --- what was measured ------------------------------------------------------------------- +; Every number below is quoted from data/fleet_seed.json or derived from it in one visible +; step. Nothing is estimated and nothing is carried over from the issue text. Each figure +; carries its provenance on the line ABOVE it, never after the value: a ';' opens a comment +; only at column 1, so an annotation parked at the end of a declaration is not prose to this +; language -- it is a second statement terminator followed by tokens the parser must read as +; code. Provenance that has to compile is provenance that gets deleted. +; Fleet-domain counts belong to canonical availability and are not copied here. +; totals.families_without_published_rate: click-125 +pub const FAMILIES_WITHOUT_RATE : u8 = 1; +; Derived: the single rateless family is the one family that is not offered, so no offered +; family is missing a rate. This is the number the issue's "five of thirteen" contradicts. +pub const OFFERED_WITHOUT_RATE : u8 = 0; +; Derived: 13 in-stock rows carrying a rate, plus the 7 price-list-only rows. +pub const PUBLISHED_DAY_RATES : u8 = 20; +; Derived: none of those 20 is 0. The zero case below is therefore hypothetical, not a bike. +pub const ZERO_DAY_RATES : u8 = 0; +; pcx-150, price-list-only: the cheapest number the tariff publishes anywhere. +pub const CHEAPEST_PUBLISHED_DAY_RATE_THB : i16 = 349; +; nmax-155: the cheapest rate attached to a family that actually has units. +pub const CHEAPEST_IN_STOCK_DAY_RATE_THB : i16 = 449; +; xadv-750: the dearest, and the number that fixes the width of the amount field. +pub const DEAREST_IN_STOCK_DAY_RATE_THB : i16 = 2788; +; Derived: click-125's rate, deposit and monthly, plus xadv-750's monthly. +pub const NULL_MONEY_FIELDS_IN_STOCK : u8 = 4; +; The issue's figure, kept so that the correction is checkable rather than merely asserted. +pub const ISSUE_CLAIMED_WITHOUT_RATE : u8 = 5; +pub const ISSUE_FIGURE_NOTE : str = "Issue #21 says five of thirteen families have no measured rate. Measured: one of fourteen in-stock, zero of thirteen offered. The seed's totals agree with the measurement."; + +; --- the representation ------------------------------------------------------------------ +; The discriminant is explicit, and 0 is deliberately NOT a legal constructed tag. D9 records +; three constructs in this tree that turn an unknown number into a confident zero, and one of +; them -- try_get_warn! in src/db/macros.rs -- hands back the typed default on a read error +; with a log line as the only evidence. If RATE_ABSENT were 0, a zero-filled or +; default-initialised record would read as a well-formed measured absence and that bug would +; be invisible. So a record nobody constructed carries tag 0, which is neither absent nor +; present but INVALID; the renderer treats it exactly as it treats absence, and emits no +; number for it either. +pub const RATE_INVALID : u8 = 0; +pub const RATE_ABSENT : u8 = 1; +pub const RATE_PRESENT : u8 = 2; +; The tag set is total: there is no fourth state, and in particular there is no +; "approximately known", no "from", and no "average" state for a rate to hide in. +pub const TAGS : [3]str = ["invalid", "absent", "present"]; + +; Provenance is part of the value, not caller folklore. Only a number returned by the live door +; may render or enter a cart. A seed/file value is retained for audit comparison only. +pub const SOURCE_NONE : u8 = 0; +pub const SOURCE_DOOR : u8 = 1; +pub const SOURCE_FILE_REFERENCE : u8 = 2; +pub const SOURCE_NAMES : [3]str = ["none", "door", "file_reference"]; + +; The amount slot of a value that is not present. This is NOT a fallback and NOT a default: a +; fallback is a number substituted for a missing price, and -1 baht per day can never be +; charged, quoted or printed as one. It is a poison marker, chosen so that code reading the +; slot without checking the tag produces something obviously broken instead of something +; plausible -- which is precisely what a 0 in that slot would produce, since D9 measured that +; "a price of 0 reads as FREE". No function here ever renders it as an amount, and that is +; enforced rather than asserted: rate_present below refuses zero and the whole negative half, +; so no value tagged PRESENT can carry either the marker or the D9 "FREE" failure value, and the invariant +; the_reserved_half_is_never_rendered_as_an_amount pins the claim this paragraph makes. +; SHAPE_DASH means the slot was not read. +pub const NOT_AN_AMOUNT_THB_DAY : i16 = -1; + +; i16 is wide enough by measurement, not by habit: the dearest published day rate is 2788 and +; the cheapest is 349, so the whole published range sits inside a signed 16-bit field with the +; non-positive half left free for invalid inputs and the poison marker. "Left free" is a claim +; about the constructor and not about the type: the type on its own would let a caller hand 0 +; or -1 to rate_present and get a PRESENT value back, so the reservation is kept by the guard. +pub struct OptionalRate { + tag : u8, + thb_day : i16, + source : u8, +} + +; --- what a render may emit -------------------------------------------------------------- +; Two shapes, and the renderer is total over the tag set: every value maps to one of them. +pub const SHAPE_DASH : u8 = 1; +pub const SHAPE_AMOUNT : u8 = 2; +pub const DASH : str = "-"; +pub const UNIT : str = "THB/day"; +; An amount is an integer number of baht per day, with no decimal part: all 20 published +; rates in the seed are whole baht. Rounding is not performed here -- it belongs to the +; arithmetic D15 keeps in one place. +pub const AMOUNT_DECIMALS : u8 = 0; + +; The obligation that travels with a dash. SAY_HUMAN_QUOTES is what D11's on_silence.must_say +; requires; SAY_NOTHING_EXTRA means the amount speaks for itself. +pub const SAY_NOTHING_EXTRA : u8 = 1; +pub const SAY_HUMAN_QUOTES : u8 = 2; +pub const MUST_SAY : str = "a human quotes this price"; +; D11's on_silence.must_not_emit, quoted in the seed's order. Item 5 is the load-bearing one: +; silence is listed alongside invention, so dropping it from this list would turn the dash +; into a licence to say nothing at all. +pub const MUST_NOT_EMIT : [5]str = [ + "an exact number", + "a 'from' / 'ot' number", + "an average", + "a range", + "silence", +]; + +; The render result is a typed triple rather than one formatted string, because the typesetting +; is locale work (D13) and this file may hold no Cyrillic (L3). What is pinned is the shape, +; the amount, and the sentence the dash must carry; the locale layer does the wording. +pub struct RenderedRate { + shape : u8, + thb_day : i16, + say : u8, +} + +; --- constructors ------------------------------------------------------------------------ + +; The only door to a PRESENT rate, and it is a guard rather than a wrapper. Zero is the exact +; "FREE" failure value D9 forbids; the negative half is reserved for invalid inputs and the +; poison marker. Both are refused as INVALID instead of being tagged present. This matches the +; shared runtime boundary in src/trios/pricing.rs and the catalog renderer: finite and strictly +; positive, never merely non-negative. Choosing i16 already makes NaN and infinity +; unrepresentable, so non-positive values are the remaining unpublishable cases. +; The refused number is not kept in the slot: it is replaced by the marker, because code that +; took the magnitude of a retained -250 would print a plausible 250 THB/day, and -1 is the one +; negative this file has already argued cannot be mistaken for a price. +pub fn rate_present(thb_day: i16) OptionalRate { + if (thb_day <= 0) { + return OptionalRate{ .tag = RATE_INVALID, .thb_day = NOT_AN_AMOUNT_THB_DAY, .source = SOURCE_NONE }; + } + return OptionalRate{ .tag = RATE_PRESENT, .thb_day = thb_day, .source = SOURCE_DOOR }; +} + +; Positive seed money may be compared with the door for divergence, but is never a client price. +pub fn rate_reference(thb_day: i16) OptionalRate { + if (thb_day <= 0) { + return OptionalRate{ .tag = RATE_INVALID, .thb_day = NOT_AN_AMOUNT_THB_DAY, .source = SOURCE_NONE }; + } + return OptionalRate{ .tag = RATE_PRESENT, .thb_day = thb_day, .source = SOURCE_FILE_REFERENCE }; +} + +; The only way to say "the source publishes nothing". It takes no amount, because there is no +; amount to take. +pub fn rate_absent() OptionalRate { + return OptionalRate{ .tag = RATE_ABSENT, .thb_day = NOT_AN_AMOUNT_THB_DAY, .source = SOURCE_NONE }; +} + +; What a zero-filled or default-initialised record looks like coming out of a fail-open read. +; It is not a value anybody should construct; it exists so the tests can prove that such a +; record does not render as a free bike. +pub fn rate_zero_filled_record() OptionalRate { + return OptionalRate{ .tag = RATE_INVALID, .thb_day = 0, .source = SOURCE_NONE }; +} + +pub fn is_present(rate: OptionalRate) bool { + return rate.tag == RATE_PRESENT; +} + +pub fn is_client_price(rate: OptionalRate) bool { + return is_present(rate) and rate.source == SOURCE_DOOR; +} + +; --- the render -------------------------------------------------------------------------- +; There is no third branch, because there is no number to put in one. Absent and invalid land +; together: both mean nobody measured a rate, and the client-facing consequence is identical. + +pub fn render(rate: OptionalRate) RenderedRate { + if (is_client_price(rate)) { + return RenderedRate{ .shape = SHAPE_AMOUNT, .thb_day = rate.thb_day, .say = SAY_NOTHING_EXTRA }; + } + return RenderedRate{ .shape = SHAPE_DASH, .thb_day = NOT_AN_AMOUNT_THB_DAY, .say = SAY_HUMAN_QUOTES }; +} + +; --- bookability, which never consults a price ------------------------------------------- +; `bookable` is the already-decided boolean supplied by canonical availability. Pricing owns +; only the additional door-provenance gate required before that family may enter a cart. + +; D9's fourth construct: 059_cart_tables.sql declares unit_price NOT NULL CHECK (unit_price >= 0), +; so a cart line cannot hold an absence, and the only value that satisfies the column without +; inventing a number is 0 -- which reads as free. The resolution is a refusal, not a zero. +pub fn may_add_to_cart(rate: OptionalRate, bookable: bool) bool { + if (is_client_price(rate) == false) { + return false; + } + return bookable; +} + +; --- tests ------------------------------------------------------------------------------- + +test the_absent_case_renders_a_dash_and_the_sentence { + assert is_present(rate_absent()) == false; + assert render(rate_absent()).shape == SHAPE_DASH; + assert render(rate_absent()).say == SAY_HUMAN_QUOTES; + assert render(rate_absent()).thb_day != 0; +} + +; Zero is the D9 regression case. No family in the corpus is free: of the 20 published day +; rates the smallest is 349 baht, and ZERO_DAY_RATES is 0. The constructor must therefore +; reject zero before either the amount renderer or the cart sees it. +test the_zero_case_is_invalid_and_renders_the_honest_fallback { + assert ZERO_DAY_RATES == 0; + assert rate_present(0).tag == RATE_INVALID; + assert is_present(rate_present(0)) == false; + assert render(rate_present(0)).shape == SHAPE_DASH; + assert render(rate_present(0)).thb_day == NOT_AN_AMOUNT_THB_DAY; + assert render(rate_present(0)).say == SAY_HUMAN_QUOTES; + assert may_add_to_cart(rate_present(0), true) == false; +} + +; The reserved half, as a case. Zero and negatives are equally unpublishable, but for different +; reasons: zero reads as FREE while a negative is not money. -1 is the marker itself; -250 is +; the dangerous shape, a plausible magnitude wearing a minus sign. Both are refused at the +; constructor, so neither reaches a render as an amount and neither reaches a cart. +test a_negative_amount_is_invalid_not_a_price { + assert is_present(rate_present(NOT_AN_AMOUNT_THB_DAY)) == false; + assert rate_present(NOT_AN_AMOUNT_THB_DAY).tag == RATE_INVALID; + assert rate_present(-250).thb_day == NOT_AN_AMOUNT_THB_DAY; + assert render(rate_present(-250)).shape == SHAPE_DASH; + assert render(rate_present(-250)).say == SAY_HUMAN_QUOTES; + assert may_add_to_cart(rate_present(-250), true) == false; +} + +; The measured bounds exercise the amount width. rate_present represents the door returning the +; number; rate_reference below represents that same number read from the seed. +test the_normal_case_renders_the_number_it_was_given { + assert render(rate_present(CHEAPEST_IN_STOCK_DAY_RATE_THB)).shape == SHAPE_AMOUNT; + assert render(rate_present(CHEAPEST_IN_STOCK_DAY_RATE_THB)).thb_day == 449; + assert render(rate_present(DEAREST_IN_STOCK_DAY_RATE_THB)).thb_day == 2788; +} + +test a_file_reference_is_audit_evidence_not_a_client_price { + assert is_present(rate_reference(CHEAPEST_IN_STOCK_DAY_RATE_THB)) == true; + assert is_client_price(rate_reference(CHEAPEST_IN_STOCK_DAY_RATE_THB)) == false; + assert render(rate_reference(CHEAPEST_IN_STOCK_DAY_RATE_THB)).shape == SHAPE_DASH; + assert may_add_to_cart(rate_reference(CHEAPEST_IN_STOCK_DAY_RATE_THB), true) == false; + assert rate_present(CHEAPEST_IN_STOCK_DAY_RATE_THB).source == SOURCE_DOOR; +} + +; Absence and an invalid zero remain distinct source states, but their customer-facing result is +; deliberately identical: no amount, plus the human-quote obligation. +test absent_and_zero_have_distinct_tags_but_the_same_safe_render { + assert render(rate_absent()).shape == render(rate_present(0)).shape; + assert render(rate_absent()).thb_day == render(rate_present(0)).thb_day; + assert render(rate_absent()).say == render(rate_present(0)).say; + assert rate_absent().tag != rate_present(0).tag; +} + +; The D9 defect, stated as a case: a fail-open read yields a zero-filled record, and a +; zero-filled record must not become a free bike. +test a_zero_filled_record_does_not_render_as_free { + assert render(rate_zero_filled_record()).shape == SHAPE_DASH; + assert render(rate_zero_filled_record()).say == SAY_HUMAN_QUOTES; + assert render(rate_zero_filled_record()).thb_day != 0; + assert is_present(rate_zero_filled_record()) == false; +} + +test an_absent_rate_is_never_addable_to_a_cart { + assert may_add_to_cart(rate_absent(), true) == false; + assert may_add_to_cart(rate_zero_filled_record(), true) == false; + assert may_add_to_cart(rate_present(CHEAPEST_IN_STOCK_DAY_RATE_THB), true) == true; +} + +; The measured absence: one family, not five. click-125 fails bookability twice over -- +; offered:false and 0 of 1 units available -- so the rateless family is also the unbookable one. +test the_measured_absence_is_one_family_not_five { + assert FAMILIES_WITHOUT_RATE == 1; + assert OFFERED_WITHOUT_RATE == 0; + assert ISSUE_CLAIMED_WITHOUT_RATE != FAMILIES_WITHOUT_RATE; +} + +; The mirror absence, and the larger one: 7 families carry a published rate and no stock. A +; rate is not stock, so pricing one of them is still not an offer to rent it. +test a_published_rate_with_a_false_bookability_input_cannot_enter_a_cart { + assert may_add_to_cart(rate_present(CHEAPEST_PUBLISHED_DAY_RATE_THB), false) == false; +} + +; Bookability is a fleet fact, so the price never reaches this decision. forza-300 and +; mt-03-300 are the live case: both offered, both priced, both at 0 units available. +test pricing_consumes_bookability_without_reimplementing_availability { + assert REUSES_AVAILABILITY_ID == "turbobaby/availability"; + assert may_add_to_cart(rate_present(CHEAPEST_IN_STOCK_DAY_RATE_THB), false) == false; + assert may_add_to_cart(rate_present(CHEAPEST_IN_STOCK_DAY_RATE_THB), true) == true; +} + +test the_published_rates_are_counted_and_none_is_free { + assert PUBLISHED_DAY_RATES == 20; + assert CHEAPEST_PUBLISHED_DAY_RATE_THB == 349; + assert CHEAPEST_IN_STOCK_DAY_RATE_THB == 449; + assert DEAREST_IN_STOCK_DAY_RATE_THB == 2788; + assert NULL_MONEY_FIELDS_IN_STOCK == 4; +} + +; --- invariants -------------------------------------------------------------------------- +; Claims about the whole module that no single example carries. + +; The acceptance criterion, as a property: absence has no path to a number at all, so it can +; never arrive at zero. Nothing in this file maps an absence to an amount. +invariant absent_never_maps_to_zero + assert render(rate_absent()).thb_day != 0 and render(rate_absent()).shape != SHAPE_AMOUNT + +; D9 at the constructor boundary: a literal zero can never acquire the PRESENT tag or enter a cart. +invariant zero_never_maps_to_present + assert is_present(rate_present(0)) == false and may_add_to_cart(rate_present(0), true) == false + +; The other acceptance criterion. Bookability is decided without a price, so the implication +; is a real claim and not a definition: a family with no rate cannot be transacted, whatever +; the fleet says about its stock. +invariant bookable_implies_present + assert may_add_to_cart(rate_absent(), true) == false and may_add_to_cart(rate_zero_filled_record(), true) == false + +; And the same claim about the corpus rather than about the code: no offered family in the +; seed lacks a rate, so no bookable family does either. +invariant every_bookable_family_in_the_seed_has_a_rate + assert OFFERED_WITHOUT_RATE == 0 + +invariant absent_and_present_are_distinct_tags + assert RATE_ABSENT != RATE_PRESENT + +invariant only_the_door_can_produce_a_client_price + assert is_client_price(rate_present(CHEAPEST_IN_STOCK_DAY_RATE_THB)) == true and is_client_price(rate_reference(CHEAPEST_IN_STOCK_DAY_RATE_THB)) == false + +; A zero-filled record is invalid, not absent. This is what keeps a fail-open read from +; passing as a measurement. +invariant a_zero_filled_record_is_not_a_measured_absence + assert RATE_ABSENT != RATE_INVALID and RATE_PRESENT != RATE_INVALID + +invariant the_tag_set_is_total + assert TAGS.len == 3 + +; The dash and the amount are different shapes, which is the whole reason the render returns a +; discriminant instead of a string. +invariant a_dash_is_not_an_amount + assert SHAPE_DASH != SHAPE_AMOUNT + +; Silence is the other half of the offence, so the dash is never emitted on its own. +invariant the_dash_never_travels_alone + assert render(rate_absent()).say == SAY_HUMAN_QUOTES and SAY_HUMAN_QUOTES != SAY_NOTHING_EXTRA + +; The poison marker is not a price: negative, non-zero, and below every published rate, the +; cheapest of which is pcx-150's 349. The third conjunct is what makes the third adjective +; true, and it is the one that would fail first if the marker were ever moved into range. +invariant the_absent_slot_holds_nothing_publishable + assert NOT_AN_AMOUNT_THB_DAY < 0 and NOT_AN_AMOUNT_THB_DAY != 0 and NOT_AN_AMOUNT_THB_DAY < CHEAPEST_PUBLISHED_DAY_RATE_THB + +; And the marker is reserved in fact, not only in prose: handed to the one constructor that +; can produce a PRESENT value, it comes back as a dash carrying the sentence. Without this +; the paragraph above NOT_AN_AMOUNT_THB_DAY would be a promise no test collects on, and +; "-1 THB/day" would be a legal render. +invariant the_reserved_half_is_never_rendered_as_an_amount + assert render(rate_present(NOT_AN_AMOUNT_THB_DAY)).shape == SHAPE_DASH and render(rate_present(NOT_AN_AMOUNT_THB_DAY)).say == SAY_HUMAN_QUOTES + +; Five prohibitions, and the fifth is silence. A deletion from this list would license the +; failure this spec exists to forbid, so the length is load-bearing. +invariant the_prohibited_emissions_are_whole + assert MUST_NOT_EMIT.len == 5 + +; The issue's premise, refuted in the file that closes it. +invariant the_issue_figure_was_not_reproducible + assert ISSUE_CLAIMED_WITHOUT_RATE != FAMILIES_WITHOUT_RATE and FAMILIES_WITHOUT_RATE == 1 diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/publication.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/publication.t27 new file mode 100644 index 0000000000..d0921b5758 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/publication.t27 @@ -0,0 +1,253 @@ +// SPDX-License-Identifier: Apache-2.0 +module turbobaby-publish-proof; + +; specs/turbobaby/publication.t27 -- proof boundary for TurboBaby discovery on t27.ai +; This contract owns only publication evidence. Domain behavior remains in the other canonical +; specs under specs/turbobaby, and deployment remains an owner-controlled action outside this +; repository. A file being parseable is not proof that it was discovered, published, or shown. +; +; WHY (measured 2026-09-13). The published t27 world scan accepts public repositories owned by +; its configured owners, but deliberately skips GitHub repositories marked as formal forks. The +; TurboBaby repository preserves the upstream content and history as a standalone derivative and +; reports isFork false, so it can be discovered after canonical files are tracked. Recreating it +; as a formal fork would make every correct local contract invisible to that scan. +; +; There are two independent public surfaces. The spec browser can be proved only by a generated +; manifest entry plus a deployed module that resolves. The Queen board is still a single-repo +; surface; showing a TurboBaby issue there requires a multi-repo contract in upstream t27/Trinity +; code. This repository cannot remove that external blocker, and this file never claims the board +; or the agent card is live. It only defines the evidence that would make such a claim true. +; +; The namespaced owner card is specs/agents/turbobaby.t27 with ID turbobaby/BOT. It intentionally +; takes no seat in the closed t27 alphabet. Current upstream agent generation recognizes that +; alphabet schema, not an arbitrary namespaced world, so tracked source is necessary but not yet +; sufficient public-agent proof. No PII, fleet row, price, or secret belongs in publication data. +; phi^2 + 1/phi^2 = 3 | TRINITY + +pub const KIND : str = "publication-contract"; +pub const ID : str = "turbobaby/publication"; +pub const NAME : str = "TurboBaby t27 publication evidence"; +pub const WORLD : str = "gHashTag/turbobaby-user-bot"; +pub const CANONICAL_DIRECTORY : str = "specs/turbobaby"; + +; --- Repository discovery --------------------------------------------------------------------- +pub const DISCOVERY_OWNER_MATCHES : bool = true; +pub const REPOSITORY_IS_PUBLIC : bool = true; +pub const REPOSITORY_IS_FORMAL_FORK : bool = false; +pub const REPOSITORY_IS_STANDALONE_DERIVATIVE : bool = true; +pub const WORLD_SCAN_SKIPS_FORMAL_FORKS : bool = true; +; Published scanner bounds. PROBE_FILES is a one-based window here: a qualifying file may be +; first through eighth, never ninth. MAX_FILE_BYTES is inclusive, matching the published maximum. +pub const PROBE_FILES : u8 = 8; +pub const MAX_FILE_BYTES : u32 = 1048576; +pub const MIN_DECLARATIONS_PER_PROBED_FILE : u16 = 1; + +pub fn scanner_probe_witness_valid(probe_ordinal: u8, probed_file_bytes: u32, declaration_count: u16) bool { + return probe_ordinal >= 1 and probe_ordinal <= PROBE_FILES and probed_file_bytes <= MAX_FILE_BYTES and declaration_count >= MIN_DECLARATIONS_PER_PROBED_FILE; +} + +pub fn world_scan_eligible(owner_matches: bool, repository_public: bool, formal_fork: bool, probe_ordinal: u8, probed_file_bytes: u32, declaration_count: u16) bool { + return owner_matches and repository_public and !formal_fork and scanner_probe_witness_valid(probe_ordinal, probed_file_bytes, declaration_count); +} + +; A canonical source has to be both in the canonical directory and tracked by Git. An untracked +; working-tree file is review material, not scanner input, however well it compiles. +pub fn canonical_source_discoverable(in_canonical_directory: bool, tracked_by_git: bool, declaration_count: u16) bool { + return in_canonical_directory and tracked_by_git and declaration_count >= MIN_DECLARATIONS_PER_PROBED_FILE; +} + +; --- Compiler evidence ------------------------------------------------------------------------ +; scripts/verify_t27_specs.py requires a non-empty named module, non-empty AST children, clean +; JSON typecheck, at least one enumerated test/invariant/bench declaration, and non-empty output +; from all five public generators. It does not treat a process exit code alone as evidence. +pub const REQUIRED_GENERATOR_COUNT : u8 = 5; +pub const TEST_COMMAND_EXECUTES_ASSERTIONS : bool = false; +pub const COMPILER_EVIDENCE_SCOPE : str = "parse structure, typecheck report, declaration enumeration, and non-empty generator emission"; + +pub fn parse_evidence_valid(module_named: bool, declaration_count: u16) bool { + return module_named and declaration_count >= 1; +} + +pub fn typecheck_evidence_valid(typecheck_ok: bool, error_count: u16, warning_count: u16) bool { + return typecheck_ok and error_count == 0 and warning_count == 0; +} + +pub fn test_inventory_evidence_valid(test_declaration_count: u16) bool { + return test_declaration_count >= 1; +} + +pub fn five_generators_emitted(zig_nonempty: bool, c_nonempty: bool, rust_nonempty: bool, verilog_nonempty: bool, hir_verilog_nonempty: bool) bool { + return zig_nonempty and c_nonempty and rust_nonempty and verilog_nonempty and hir_verilog_nonempty; +} + +pub fn compiler_evidence_complete(parse_valid: bool, typecheck_valid: bool, tests_present: bool, generators_valid: bool) bool { + return parse_valid and typecheck_valid and tests_present and generators_valid; +} + +; --- Spec browser proof ----------------------------------------------------------------------- +pub const SPEC_BROWSER_DISCOVERY_AUTOMATIC : bool = true; +pub const SPEC_BROWSER_DEPLOY_IS_OWNER_GATE : bool = true; +pub const THIS_FILE_CLAIMS_SPEC_BROWSER_IS_LIVE : bool = false; + +pub fn spec_browser_publish_proved(manifest_has_world: bool, manifest_has_module: bool, deployed_route_resolves_module: bool) bool { + return manifest_has_world and manifest_has_module and deployed_route_resolves_module; +} + +; --- Namespaced agent proof ------------------------------------------------------------------- +pub const AGENT_CARD_PATH : str = "specs/agents/turbobaby.t27"; +pub const AGENT_CARD_ID : str = "turbobaby/BOT"; +pub const AGENT_CARD_IS_NAMESPACED : bool = true; +pub const AGENT_CARD_CLAIMS_ALPHABET_SEAT : bool = false; +pub const CURRENT_UPSTREAM_ACCEPTS_NAMESPACED_AGENT_CARD : bool = false; +pub const THIS_FILE_CLAIMS_AGENT_CARD_IS_LIVE : bool = false; + +pub fn agent_card_source_ready(path_is_namespaced: bool, id_is_namespaced: bool, tracked_by_git: bool) bool { + return path_is_namespaced and id_is_namespaced and tracked_by_git; +} + +pub fn agent_card_publish_proved(source_ready: bool, manifest_has_agent_id: bool, deployed_route_resolves_agent: bool) bool { + return source_ready and manifest_has_agent_id and deployed_route_resolves_agent; +} + +; --- Queen proof and external gate ------------------------------------------------------------- +pub const QUEEN_BOARD_SUPPORTS_MULTIPLE_REPOSITORIES : bool = false; +pub const QUEEN_CHANGE_IS_OWNED_BY_THIS_REPOSITORY : bool = false; +pub const QUEEN_PUBLICATION_IS_EXTERNALLY_BLOCKED : bool = true; +pub const THIS_FILE_CLAIMS_QUEEN_IS_LIVE : bool = false; + +pub fn queen_publish_proved(board_supports_world: bool, board_payload_has_world: bool, board_payload_has_issue: bool, deployed_route_resolves_issue: bool) bool { + return board_supports_world and board_payload_has_world and board_payload_has_issue and deployed_route_resolves_issue; +} + +pub fn queen_block_is_external(board_supports_multiple_repositories: bool, change_owned_here: bool) bool { + return !board_supports_multiple_repositories and !change_owned_here; +} + +; --- Tests ------------------------------------------------------------------------------------- + +test this_standalone_derivative_is_scanner_eligible_after_tracking { + assert DISCOVERY_OWNER_MATCHES == true; + assert REPOSITORY_IS_PUBLIC == true; + assert REPOSITORY_IS_FORMAL_FORK == false; + assert REPOSITORY_IS_STANDALONE_DERIVATIVE == true; + assert world_scan_eligible(true, true, false, 1, 4096, 1) == true; +} + +test a_formal_fork_is_deliberately_not_scanner_eligible { + assert WORLD_SCAN_SKIPS_FORMAL_FORKS == true; + assert world_scan_eligible(true, true, true, 1, 4096, 20) == false; + assert world_scan_eligible(true, false, false, 1, 4096, 20) == false; + assert world_scan_eligible(false, true, false, 1, 4096, 20) == false; +} + +test scanner_probe_window_and_file_size_fail_closed { + assert PROBE_FILES == 8; + assert MAX_FILE_BYTES == 1048576; + assert scanner_probe_witness_valid(1, MAX_FILE_BYTES, 1) == true; + assert scanner_probe_witness_valid(PROBE_FILES, MAX_FILE_BYTES, 1) == true; + assert scanner_probe_witness_valid(0, 4096, 1) == false; + assert scanner_probe_witness_valid(PROBE_FILES + 1, 4096, 1) == false; + assert scanner_probe_witness_valid(1, MAX_FILE_BYTES + 1, 1) == false; + assert scanner_probe_witness_valid(1, 4096, 0) == false; +} + +test untracked_or_empty_canonical_source_is_not_discoverable { + assert canonical_source_discoverable(true, true, 1) == true; + assert canonical_source_discoverable(true, false, 1) == false; + assert canonical_source_discoverable(false, true, 1) == false; + assert canonical_source_discoverable(true, true, 0) == false; +} + +test parse_and_typecheck_evidence_is_nonvacuous { + assert parse_evidence_valid(true, 1) == true; + assert parse_evidence_valid(true, 0) == false; + assert parse_evidence_valid(false, 8) == false; + assert typecheck_evidence_valid(true, 0, 0) == true; + assert typecheck_evidence_valid(true, 1, 0) == false; + assert typecheck_evidence_valid(true, 0, 1) == false; + assert typecheck_evidence_valid(false, 0, 0) == false; +} + +test tests_must_be_found_and_all_five_generators_must_emit { + assert test_inventory_evidence_valid(1) == true; + assert test_inventory_evidence_valid(0) == false; + assert REQUIRED_GENERATOR_COUNT == 5; + assert five_generators_emitted(true, true, true, true, true) == true; + assert five_generators_emitted(true, true, true, true, false) == false; + assert five_generators_emitted(false, true, true, true, true) == false; +} + +test compiler_evidence_requires_every_independent_lane { + assert compiler_evidence_complete(true, true, true, true) == true; + assert compiler_evidence_complete(false, true, true, true) == false; + assert compiler_evidence_complete(true, false, true, true) == false; + assert compiler_evidence_complete(true, true, false, true) == false; + assert compiler_evidence_complete(true, true, true, false) == false; +} + +test spec_browser_live_status_requires_deployed_proof { + assert SPEC_BROWSER_DISCOVERY_AUTOMATIC == true; + assert SPEC_BROWSER_DEPLOY_IS_OWNER_GATE == true; + assert THIS_FILE_CLAIMS_SPEC_BROWSER_IS_LIVE == false; + assert spec_browser_publish_proved(true, true, true) == true; + assert spec_browser_publish_proved(true, true, false) == false; +} + +test namespaced_agent_source_is_not_publication_proof { + assert AGENT_CARD_PATH == "specs/agents/turbobaby.t27"; + assert AGENT_CARD_ID == "turbobaby/BOT"; + assert AGENT_CARD_IS_NAMESPACED == true; + assert AGENT_CARD_CLAIMS_ALPHABET_SEAT == false; + assert agent_card_source_ready(true, true, true) == true; + assert agent_card_publish_proved(true, false, false) == false; + assert CURRENT_UPSTREAM_ACCEPTS_NAMESPACED_AGENT_CARD == false; + assert THIS_FILE_CLAIMS_AGENT_CARD_IS_LIVE == false; +} + +test queen_remains_external_until_every_proof_lane_exists { + assert QUEEN_BOARD_SUPPORTS_MULTIPLE_REPOSITORIES == false; + assert QUEEN_CHANGE_IS_OWNED_BY_THIS_REPOSITORY == false; + assert QUEEN_PUBLICATION_IS_EXTERNALLY_BLOCKED == true; + assert THIS_FILE_CLAIMS_QUEEN_IS_LIVE == false; + assert queen_block_is_external(false, false) == true; + assert queen_publish_proved(false, false, false, false) == false; + assert queen_publish_proved(true, true, true, true) == true; +} + +test publication_contract_contains_no_domain_payload { + assert CANONICAL_DIRECTORY == "specs/turbobaby"; + assert COMPILER_EVIDENCE_SCOPE == "parse structure, typecheck report, declaration enumeration, and non-empty generator emission"; + assert TEST_COMMAND_EXECUTES_ASSERTIONS == false; +} + +; --- Invariants -------------------------------------------------------------------------------- + +invariant formal_forks_remain_ineligible_for_this_scan + assert WORLD_SCAN_SKIPS_FORMAL_FORKS == true and world_scan_eligible(true, true, true, 1, 4096, 1) == false + +invariant scanner_eligibility_requires_an_early_bounded_probe_witness + assert scanner_probe_witness_valid(PROBE_FILES, MAX_FILE_BYTES, 1) == true and scanner_probe_witness_valid(PROBE_FILES + 1, MAX_FILE_BYTES, 1) == false and scanner_probe_witness_valid(PROBE_FILES, MAX_FILE_BYTES + 1, 1) == false + +invariant canonical_discovery_requires_a_tracked_nonempty_source + assert canonical_source_discoverable(true, true, 1) == true and canonical_source_discoverable(true, false, 1) == false and canonical_source_discoverable(true, true, 0) == false + +invariant compiler_evidence_cannot_pass_with_an_empty_ast + assert parse_evidence_valid(true, 0) == false + +invariant compiler_evidence_cannot_pass_with_a_reported_error_or_warning + assert typecheck_evidence_valid(true, 1, 0) == false and typecheck_evidence_valid(true, 0, 1) == false + +invariant every_required_generator_must_emit_nonempty_output + assert five_generators_emitted(true, true, true, true, true) == true and five_generators_emitted(true, true, true, true, false) == false + +invariant a_manifest_entry_alone_is_not_spec_browser_publication + assert spec_browser_publish_proved(true, true, false) == false + +invariant a_tracked_agent_card_alone_is_not_public_agent_proof + assert agent_card_publish_proved(true, false, false) == false + +invariant queen_cannot_be_claimed_from_this_repository_alone + assert queen_block_is_external(QUEEN_BOARD_SUPPORTS_MULTIPLE_REPOSITORIES, QUEEN_CHANGE_IS_OWNED_BY_THIS_REPOSITORY) == true and THIS_FILE_CLAIMS_QUEEN_IS_LIVE == false + +invariant no_public_surface_is_claimed_live_without_external_evidence + assert THIS_FILE_CLAIMS_SPEC_BROWSER_IS_LIVE == false and THIS_FILE_CLAIMS_AGENT_CARD_IS_LIVE == false and THIS_FILE_CLAIMS_QUEEN_IS_LIVE == false diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/rental_terms.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/rental_terms.t27 new file mode 100644 index 0000000000..00c5be5f21 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/rental_terms.t27 @@ -0,0 +1,496 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/rental_terms.t27 -- the rental term ladder, the published term-discount +; bands, and the one rounding rule every total is built from. +; Canonical source of truth for the INTEGER basis-point form of the term arithmetic that D15 +; puts in src/trios/pricing.rs, so the Axum server and the Dioxus/WASM client are checked against +; one written contract instead of against each other. The earlier specs/rental_terms.t27 states +; the same bands in f64. Its declarations have now been semantically classified in +; docs/t27-semantic-merge-matrix.md and this canonical file is the chosen owner; the root twin +; remains temporarily as a reviewable compatibility snapshot, not as a second authority. +; Transcribed from data/fleet_seed.json (measured_at 2026-09-12): +; term_discount_bands, reconciliation.checks, and the NMAX 155 row of families. Nothing +; below is a client price; see WHAT THIS NEVER DOES. ASCII only (L3), English only. +; -- +; WHY (measured 2026-09-12). Of the 710 client dialogs / 31245 messages behind KB_faq, +; 481 messages are about dates and term -- the fifth topic by volume, above deposit (375) +; and availability (180) -- and the term rule lived in no file in this repository. +; Writing it down measured three things issue #17 could not know. +; -- +; 1. THE BANDS ARE INTERVALS, NOT MULTIPLIERS: week [0.06, 0.15], two_weeks +; [0.15, 0.25], month [0.35, 0.50]. The issue asks for an invariant that a longer term +; carries a LOWER daily rate, and reads as though the discount for a longer term were +; strictly greater. That is FALSE at one edge: week's ceiling of 0.15 IS two_weeks' +; floor of 0.15, so the consecutive bands touch and are not disjoint. A week at its +; best published discount and a fortnight at its worst carry the SAME daily rate -- +; 382 THB on the 449 NMAX 155 tariff, pinned in a test below. The claim this file +; states is therefore NON-INCREASING (>=, not >), stated on a well-defined +; representative of each band: floor against floor and ceiling against ceiling. +; The touching is not a defect in the tariff. A band is a negotiating range that a +; human closes inside, not a formula; adjacent ranges that share an endpoint leave no +; term unpriced, whereas disjoint ranges would. The other junction is the one with a +; hole in it: two_weeks' ceiling 0.25 to month's floor 0.35 is a gap of 0.10 that the +; tariff publishes nothing for, and that gap is pinned below too. +; -- +; 2. SIX RUNGS AGAINST THREE BANDS, AND FOUR RUNGS WITH NO BAND AT ALL. +; observed_terms_days is [7, 30, 90, 120, 150, 180], which DOES match the issue's +; "7 days, 1, 3, 4, 5, 6 months" at 30 days to the month (90/30 = 3, 180/30 = 6). The +; days are used here because they are unambiguous. But no band is published beyond the +; month, so four of the six rungs -- 90, 120, 150 and 180 -- have NO published discount +; at all. This file READS the month band as "a month or longer" (band_index_for_days), +; and under that reading those four rungs inherit the 30-day rung's rate and the ladder +; comes out FLAT from 30 days on. The flat tail is therefore a property of the READING, +; not of the tariff, so it is not independent evidence about monotonicity: only the +; touching edge in (1) is, and that one is published. The reading is recorded here, and +; made explicit in the function, precisely so that nobody mistakes it for a measurement. +; -- +; 3. THE BANDS REPRODUCE NO PUBLISHED PRICE -- AND THE TWO POSSIBLE BASES DISAGREE ABOUT +; HOW BADLY. 12 of the 14 in-stock families publish both a daily tariff and a monthly +; low-season figure. Measured AGAINST THE PRE-CLASS-DISCOUNT BASE TARIFF, the per-day +; discount each pair implies runs from 0.618 (FORZA 300: 7900/30 = 263.33 against a 690 +; tariff) to 0.665 (NINJA 400: 11900/30 = 396.67 against 1185) -- all 12 above the month +; band's 0.50 ceiling, not one inside the band. But the seed nowhere states whether +; monthly_low_season_thb is PRE or POST class discount, and the base tariff is the very +; number field_notes.base_rate_thb_day and D11 forbid using as a client rate. On the +; post-class-discount basis the same 12 pairs imply 0.491 to 0.606, and TWO of them fall +; INSIDE the published month band: FORZA 300 at 0.4911 (263.33 against 690 x 0.75 = +; 517.50) and XMAX 300 at 0.4993 (296.67 against 592.50). FORZA 300 is the same family +; that supplies the 0.618 extremum above. So this arithmetic does not settle the question +; either way, and it reverses between two bases of which the seed publishes neither -- +; which is itself the reason a band is not a price. Both bases are pinned in a test below. +; On NMAX 155, applying the month band at its most generous published bound to the +; PRE-class-discount 449 gives 225 x 30 = 6750 against a published 5000, 1750 THB apart; +; applying the same bound to the class-discounted 337/day -- the seed's own reconciled +; grid figure -- gives 169 x 30 = 5070, 70 THB apart. A quantity whose size moves by a +; factor of 25 with an unpublished assumption is not a price. Season and term are +; different axes, and that is exactly the point -- this arithmetic is an audit +; instrument, not a price path. +; -- +; WHAT THIS NEVER DOES: it never produces a client quote. D11 -- the client-facing price +; is the number the door (the owner's live sheet) returns; when the door is silent the +; bot says a human quotes this price and emits NO number at all: not exact, not a "from" +; number, not an average, not a range, and not silence either. Every function here is +; named audit_ for that reason, BANDS_PRODUCE_CLIENT_QUOTES is pinned false by an +; invariant, and no function takes a term alone and returns a price: a discount in basis +; points must be supplied by the caller, because the tariff publishes a range and a range +; is not a number. It pins the TERM axis and the rounding only: how the term discount +; COMPOSES with the class discount is unspecified by the seed and is therefore left open +; here, pinned open by a constant rather than closed by a guess -- see THE COMPOSITION. +; It also holds no customer, no contract and no payment history (D14): the totals below are +; pinned against the published tariff of one catalogue model and against the six +; reconciliation rows, and against nothing else. +; -- +; A cheap check this file deliberately does not rely on: that the totals "look right". +; Any total is self-consistent with the function that produced it, so agreeing with +; itself proves nothing -- the same way a licence file named .t27 compiles. The rounding +; test therefore reproduces the six grid figures MEASURED by someone else (704, 749, 518, +; 593, 337, 2091) from the six published base tariffs, and half-down would miss three. +; Those six figures are pinned a second time in specs/pricing_honesty.t27, over f64 through +; round_half_up_baht and through the RECONCILED_DOOR_THB row loop. That is named here rather +; than left for a reader to discover by grepping for 704: the route in this file is integer +; basis points, one fused scale-and-round with no float anywhere, so the two specs reach the +; same externally measured column by two different arithmetics. Two arithmetics agreeing +; with one outside measurement is worth having; two copies of one arithmetic would not be. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module rental-terms; + +pub const KIND : str = "terms"; +pub const ID : str = "turbobaby/rental-terms"; +pub const NAME : str = "TurboBaby rental term ladder and term-discount bands"; +; Current t27c does not support brace imports. This metadata records that pricing honesty owns +; the live door authority; rental terms neither imports nor redeclares that fact. +pub const REUSES_PRICING_ID : str = "turbobaby/pricing-honesty"; +pub const SOURCE : str = "data/fleet_seed.json"; +pub const SOURCE_MEASURED_AT : str = "2026-09-12"; +pub const TARIFF_SOURCE_ID : str = "KB_faq"; +; D15: one implementation of the price arithmetic. This spec is the written contract for the +; part of it named below in THE COMPOSITION -- the term axis and the rounding -- and not for +; all three of D15's jobs. +pub const IMPLEMENTATION : str = "src/trios/pricing.rs"; + +; --- THE ROOT TWIN: retained until the declaration matrix is independently reviewed -------- +; specs/rental_terms.t27 carries the legacy ID below and states the same tariff in f64. The +; merge matrix maps its interval lookup to band_index_for_days, its f64 bounds to the exact BP +; bounds here, its monthly non-derivation to the two monthly audit tests, and its class-discount +; helpers to the separate pricing axis. That resolves ownership without pretending the two +; rounding paths are identical: this file rounds the daily rate before multiplying; the legacy +; diagnostic rounded the total. The root file is not deleted in this wave so reviewers can +; verify every mapped declaration before removal. +pub const TWIN_SPEC_PATH : str = "specs/rental_terms.t27"; +pub const TWIN_SPEC_ID : str = "turbobaby/rental_terms"; +pub const TWIN_ENCODING : str = "legacy f64 fractions mapped to canonical integer basis points"; +pub const TWIN_MERGE_MATRIX : str = "docs/t27-semantic-merge-matrix.md"; +pub const TWIN_IS_RESOLVED : bool = true; + +; --- D11, the rule that outranks everything in this file ---------------------------------- +; These bands never become a client quote. The door answers, or a human does. +pub const BANDS_PRODUCE_CLIENT_QUOTES : bool = false; +pub const ON_SILENCE : str = "no number; a human quotes this price"; + +; --- the term ladder, in days ------------------------------------------------------------- +; Exactly term_discount_bands.observed_terms_days. Days, not months: the issue names +; "7 days, 1, 3, 4, 5, 6 months" and the two ladders agree at 30 days to the month, but +; only the days are unambiguous, so the days are what is pinned. +pub const TERM_DAYS : [6]i32 = [7, 30, 90, 120, 150, 180]; +pub const DAYS_PER_WEEK : i32 = 7; +; 2 x 7. The fortnight is the two_weeks band's own name in days; it is NOT a rung of the +; measured ladder -- no observed term falls between 7 and 30 days. +pub const DAYS_PER_FORTNIGHT : i32 = 14; +; The conversion that makes the issue's month ladder equal the measured days: 30, 90, 120, +; 150 and 180 divided by 30 give 1, 3, 4, 5 and 6. +pub const DAYS_PER_MONTH : i32 = 30; + +; --- the three published bands, as intervals ---------------------------------------------- +; Basis points, because a band bound is a fraction and this language pins integer widths. +; Read straight off term_discount_bands: 0.06 x 10000 = 600, 0.15 -> 1500, 0.25 -> 2500, +; 0.35 -> 3500, 0.50 -> 5000. An integer bound cannot drift by a rounding mode, and +; nothing here needs a float. +pub const BP_ONE : i32 = 10000; +pub const BAND_NAMES : [3]str = ["week", "two_weeks", "month"]; +pub const WEEK_MIN_DISCOUNT_BP : i32 = 600; +pub const WEEK_MAX_DISCOUNT_BP : i32 = 1500; +pub const TWO_WEEKS_MIN_DISCOUNT_BP : i32 = 1500; +pub const TWO_WEEKS_MAX_DISCOUNT_BP : i32 = 2500; +pub const MONTH_MIN_DISCOUNT_BP : i32 = 3500; +pub const MONTH_MAX_DISCOUNT_BP : i32 = 5000; +; Below a week the tariff publishes no term band at all. That is an absence, not a zero: +; a short rental is charged at the tariff the door quotes, and this file does not invent a +; band for it (D9: absent stays absent). +pub const BAND_NONE : i8 = -1; + +; --- the one tariff this file computes with ----------------------------------------------- +; NMAX 155: 449 THB/day published base (PRE class discount -- rendering it as a client +; price without the class discount overstates every scooter by 33%), the largest family in +; the fleet at 10 of 37 units, and one of the six reconciliation rows. A reference for +; arithmetic, never a quote. Its published monthly low-season figure is carried too, because +; it is the measurement the month band fails to reproduce on EITHER basis -- 6750 against it +; pre class discount, 5070 post -- and a bound that misses the published figure both ways is +; not a price on either. +pub const REF_MODEL : str = "NMAX 155"; +pub const REF_BASE_THB_DAY : i32 = 449; +pub const REF_MONTHLY_LOW_SEASON_THB : i32 = 5000; + +; --- the arithmetic ----------------------------------------------------------------------- + +; Half-up to the baht, integers only: scale by the net basis points, then divide by BP_ONE +; with half a unit added first, which is what half-up IS for a non-negative number -- +; (2n + d) / 2d under a truncating divide. Every operand here is non-negative, so the +; truncation is a floor, which is what the added half requires. The scale and the round are +; one step on purpose: that is what makes this the integer form rather than a second copy of +; specs/pricing_honesty.t27's round_half_up_baht, which rounds an f64 that someone else has +; already scaled. +; Half-up is measured, not chosen: every one of the six reconciliation rows is the base +; tariff x 0.75 rounded half-up (748.5 -> 749, 592.5 -> 593, 517.5 -> 518), and half-down +; would miss three of the six. +; An absent or negative tariff never reaches this function. D9's honesty filter drops it +; upstream and a family with no published rate is not priced at all -- CLICK 125 is the +; single instance (totals.families_without_published_rate = 1) and it is closed to new +; rentals anyway (D12). +pub fn audit_daily_thb(base_thb_day: i32, discount_bp: i32) i32 { + const scaled = base_thb_day * (BP_ONE - discount_bp); + return (scaled * 2 + BP_ONE) / (BP_ONE * 2); +} + +; The total cost of a term. The ORDER is pinned here rather than left to the caller: round +; the daily rate to the baht FIRST, then multiply by the days. The owner's own sheet works +; that way -- its stale CLICK row reads 187/day and 935 for 5 nights, and 187 x 5 = 935 +; exactly, a rounded per-day figure times nights. (Cited for the shape of the arithmetic +; only; that row is stale as a tariff, see pricing_policy.not_offered.) +; The order is worth a decision: rounding the total instead gives 291.85 x 30 = 8755.5 -> +; 8756 where this gives 292 x 30 = 8760, a 4 THB divergence on one month of one model. +; Note what is NOT claimed: the total is not monotone in the term. A longer term costs +; more in total. It is the per-DAY rate that never rises. +pub fn audit_total_thb(base_thb_day: i32, discount_bp: i32, days: i32) i32 { + return audit_daily_thb(base_thb_day, discount_bp) * days; +} + +; --- THE COMPOSITION, and why it is left open --------------------------------------------- +; D15 gives src/trios/pricing.rs three jobs: the class discount, the term discount, and +; half-up rounding to the baht. This file is the written contract for the term axis and the +; rounding. How the two discounts COMPOSE is deliberately NOT pinned, because the seed does +; not publish it: class_discounts and term_discount_bands are two tables with no stated order +; between them, and audit_daily_thb takes exactly one discount for that reason. +; The question is not academic, and it is larger than the one this file did settle. On the +; reference tariff at the month ceiling, applying the class discount first and rounding at +; each step gives 337 then 169/day; one combined factor (0.75 x 0.50 = 0.375, so 6250 bp +; net) gives 168/day. That is 1 THB/day and 30 THB on a month, against the 4 THB divergence +; of the day-versus-total order above -- and the day-versus-total order was pinnable only +; because the owner's sheet showed which way it worked. Nothing shows which way this one +; works, so it is pinned OPEN: the constant below fails an invariant if it is ever flipped +; to true without a published rule and a test behind it. +pub const CLASS_TERM_COMPOSITION_IS_PINNED : bool = false; + +; Which published band a term of `days` falls in, or BAND_NONE. +; This mapping is a READING of the band names, not a published rule: the seed names the +; bands week / two_weeks / month and publishes no assignment table. The two absences at the +; two ends are NOT treated alike, and the difference is a choice rather than a measurement. +; Below a week, no published band name could cover the term at all, so the answer is +; BAND_NONE (D9: absent stays absent). Beyond a month, the term has exactly one candidate +; name and the shop demonstrably rents 90, 120, 150 and 180 days, so the month band is read +; as "a month or longer" and extended over them. That extension is what makes the tail flat +; from 30 days on; it does not prove the tail flat, because the tariff publishes nothing +; there. The function exists so that the ladder and the bands can be checked against each +; other instead of drifting apart, and so that the reading is explicit where a reader can +; see it. The door assigns the real discount (D11). +pub fn band_index_for_days(days: i32) i8 { + if (days < DAYS_PER_WEEK) { + return BAND_NONE; + } + if (days < DAYS_PER_FORTNIGHT) { + return 0; + } + if (days < DAYS_PER_MONTH) { + return 1; + } + return 2; +} + +; --- tests -------------------------------------------------------------------------------- + +; The rounding rule is checked against figures this file did not compute: the per-day +; column of reconciliation.checks, produced by the owner's quote sheet. The 2500 bp input is +; the 0.25 scooter class discount, appearing here as the measured INPUT of the one rule this +; file owns -- the rounding -- and not as a rate this file publishes; a fixture is not a +; second copy of a rate. Where the class discount IS declared, measured today: D15 gives the +; arithmetic one home in src/trios/pricing.rs, and two specs in this tree already declare the +; 0.25 as a constant -- specs/rental_terms.t27 (SCOOTER_DISCOUNT, and CLASS_DISCOUNT_VALUES) +; and specs/pricing_honesty.t27 (SCOOTER_DISCOUNT_AT_RECONCILIATION). No spec in +; specs/turbobaby/ declares it, and this file does not make itself the third that does. +; Note also what 2500 is NOT here. TWO_WEEKS_MAX_DISCOUNT_BP above is also 2500, so +; audit_daily_thb(449, 2500) == 337 below is reachable down the class axis and down the term +; axis alike. The two figures coincide as arithmetic, not as meaning; see THE COMPOSITION. +test the_rounding_rule_reproduces_the_six_measured_grid_figures { + assert audit_daily_thb(939, 2500) == 704; + assert audit_daily_thb(998, 2500) == 749; + assert audit_daily_thb(690, 2500) == 518; + assert audit_daily_thb(790, 2500) == 593; + assert audit_daily_thb(449, 2500) == 337; + assert audit_daily_thb(2788, 2500) == 2091; +} + +; Term length one: 7 days, TERM_DAYS[0], the week band at each bound. +; 449 x 0.94 = 422.06 -> 422/day, x 7 = 2954. 449 x 0.85 = 381.65 -> 382/day, x 7 = 2674. +test the_week_total_is_pinned_at_both_band_bounds { + assert audit_daily_thb(REF_BASE_THB_DAY, WEEK_MIN_DISCOUNT_BP) == 422; + assert audit_total_thb(REF_BASE_THB_DAY, WEEK_MIN_DISCOUNT_BP, TERM_DAYS[0]) == 2954; + assert audit_daily_thb(REF_BASE_THB_DAY, WEEK_MAX_DISCOUNT_BP) == 382; + assert audit_total_thb(REF_BASE_THB_DAY, WEEK_MAX_DISCOUNT_BP, TERM_DAYS[0]) == 2674; +} + +; Term length two: 30 days, TERM_DAYS[1], the month band at each bound. +; 449 x 0.65 = 291.85 -> 292/day, x 30 = 8760. 449 x 0.50 = 224.5 -> 225/day, x 30 = 6750. +; The second line is where half-up earns its keep: half-down would give 224 and 6720. +test the_month_total_is_pinned_at_both_band_bounds { + assert audit_daily_thb(REF_BASE_THB_DAY, MONTH_MIN_DISCOUNT_BP) == 292; + assert audit_total_thb(REF_BASE_THB_DAY, MONTH_MIN_DISCOUNT_BP, TERM_DAYS[1]) == 8760; + assert audit_daily_thb(REF_BASE_THB_DAY, MONTH_MAX_DISCOUNT_BP) == 225; + assert audit_total_thb(REF_BASE_THB_DAY, MONTH_MAX_DISCOUNT_BP, TERM_DAYS[1]) == 6750; +} + +; Term length three: 180 days, TERM_DAYS[5], the longest observed term. Under this file's +; reading it shares the month band with the 30-day rung, so the per-day rate is the SAME 292 +; and 225 and only the day count changes: 292 x 180 = 52560, 225 x 180 = 40500. This is the +; flat tail as arithmetic -- arithmetic over a reading, not over a published band. +test the_six_month_total_is_pinned_and_reuses_the_month_rate { + assert audit_total_thb(REF_BASE_THB_DAY, MONTH_MIN_DISCOUNT_BP, TERM_DAYS[5]) == 52560; + assert audit_total_thb(REF_BASE_THB_DAY, MONTH_MAX_DISCOUNT_BP, TERM_DAYS[5]) == 40500; +} + +; The fortnight, 14 days, is the band's name rather than an observed rung. +; 449 x 0.85 = 381.65 -> 382/day, x 14 = 5348. 449 x 0.75 = 336.75 -> 337/day, x 14 = 4718. +test the_fortnight_total_is_pinned_at_both_band_bounds { + assert audit_total_thb(REF_BASE_THB_DAY, TWO_WEEKS_MIN_DISCOUNT_BP, DAYS_PER_FORTNIGHT) == 5348; + assert audit_total_thb(REF_BASE_THB_DAY, TWO_WEEKS_MAX_DISCOUNT_BP, DAYS_PER_FORTNIGHT) == 4718; +} + +; The edge that refutes the issue's wording. The bands touch at 0.15, so a week at its best +; published discount and a fortnight at its worst are the same 382 THB/day. Non-increasing +; holds; strictly decreasing does not. The totals differ only because the days differ. +test the_touching_edge_gives_two_terms_one_daily_rate { + assert audit_daily_thb(REF_BASE_THB_DAY, WEEK_MAX_DISCOUNT_BP) == audit_daily_thb(REF_BASE_THB_DAY, TWO_WEEKS_MIN_DISCOUNT_BP); + assert audit_total_thb(REF_BASE_THB_DAY, WEEK_MAX_DISCOUNT_BP, DAYS_PER_WEEK) == 2674; + assert audit_total_thb(REF_BASE_THB_DAY, TWO_WEEKS_MIN_DISCOUNT_BP, DAYS_PER_FORTNIGHT) == 5348; +} + +; The two discounts, composed the two available ways, on the reference tariff at the month +; ceiling. 2500 bp is the class discount and 5000 bp the term bound; 6250 bp is the single +; net factor for the same pair (0.75 x 0.50 = 0.375). The answers differ by a baht a day. +; This is pinned so that "the composition is unspecified" cannot quietly become "the +; composition does not matter": the seed publishes no order, and the order is worth 30 THB a +; month -- more than the day-versus-total order this file did pin. +test composing_the_class_and_term_discounts_is_order_dependent { + assert audit_daily_thb(audit_daily_thb(REF_BASE_THB_DAY, 2500), MONTH_MAX_DISCOUNT_BP) == 169; + assert audit_daily_thb(REF_BASE_THB_DAY, 6250) == 168; +} + +; Each band is a well-formed interval, and the floors themselves climb. Ordered bounds are +; what makes "the representative of each band" well defined at all. +test every_band_is_a_well_formed_and_ordered_interval { + assert WEEK_MIN_DISCOUNT_BP <= WEEK_MAX_DISCOUNT_BP; + assert TWO_WEEKS_MIN_DISCOUNT_BP <= TWO_WEEKS_MAX_DISCOUNT_BP; + assert MONTH_MIN_DISCOUNT_BP <= MONTH_MAX_DISCOUNT_BP; + assert WEEK_MIN_DISCOUNT_BP <= TWO_WEEKS_MIN_DISCOUNT_BP; + assert TWO_WEEKS_MIN_DISCOUNT_BP <= MONTH_MIN_DISCOUNT_BP; +} + +test the_measured_ladder_is_strictly_increasing { + assert TERM_DAYS[0] < TERM_DAYS[1]; + assert TERM_DAYS[1] < TERM_DAYS[2]; + assert TERM_DAYS[2] < TERM_DAYS[3]; + assert TERM_DAYS[3] < TERM_DAYS[4]; + assert TERM_DAYS[4] < TERM_DAYS[5]; +} + +; The issue's ladder in months and the seed's ladder in days are the same ladder. Checked +; rather than assumed, because the agreement is what licensed using the days. The week rung +; is not restated here: the last invariant in this file carries it as a module-wide claim, +; and one claim is typed once. +test the_issue_ladder_in_months_equals_the_measured_days { + assert TERM_DAYS[1] == DAYS_PER_MONTH; + assert TERM_DAYS[2] == DAYS_PER_MONTH * 3; + assert TERM_DAYS[3] == DAYS_PER_MONTH * 4; + assert TERM_DAYS[4] == DAYS_PER_MONTH * 5; + assert TERM_DAYS[5] == DAYS_PER_MONTH * 6; +} + +; Six rungs, three bands, and one band with no rung in it. The 90 and 180 day answers are +; this file's reading of "month", not a published assignment (see band_index_for_days). +test the_bands_and_the_ladder_line_up { + assert band_index_for_days(TERM_DAYS[0]) == 0; + assert band_index_for_days(DAYS_PER_FORTNIGHT) == 1; + assert band_index_for_days(TERM_DAYS[1]) == 2; + assert band_index_for_days(TERM_DAYS[2]) == 2; + assert band_index_for_days(TERM_DAYS[5]) == 2; +} + +; The measurement that keeps this file honest about what it is, on BOTH bases, because the +; seed publishes neither. Applying the month band at its most generous published bound to +; the PRE-class-discount reference tariff gives 6750 for 30 days against a published 5000 -- +; 1750 THB apart. Applying the same bound to the class-discounted 337/day, which is the +; seed's own reconciled grid figure for this model, gives 5070 -- 70 THB apart. The gap the +; band leaves is therefore either 1750 or 70 depending on an assumption nobody published, +; and "the closest the band can get" is not a sentence this file may write. A band is not a +; price, and no caller may present one as a quote. +test the_month_band_cannot_reproduce_the_published_monthly_price { + assert audit_total_thb(REF_BASE_THB_DAY, MONTH_MAX_DISCOUNT_BP, DAYS_PER_MONTH) == 6750; + assert audit_total_thb(REF_BASE_THB_DAY, MONTH_MAX_DISCOUNT_BP, DAYS_PER_MONTH) - REF_MONTHLY_LOW_SEASON_THB == 1750; + assert audit_total_thb(audit_daily_thb(REF_BASE_THB_DAY, 2500), MONTH_MAX_DISCOUNT_BP, DAYS_PER_MONTH) == 5070; + assert audit_total_thb(audit_daily_thb(REF_BASE_THB_DAY, 2500), MONTH_MAX_DISCOUNT_BP, DAYS_PER_MONTH) - REF_MONTHLY_LOW_SEASON_THB == 70; +} + +; The two families whose verdict REVERSES between the two bases, in integers. 7900 and 8900 +; are the published monthly low-season figures of FORZA 300 and XMAX 300; 690 and 790 are +; their published pre-discount tariffs; audit_daily_thb(base, 2500) is their class-discounted +; per-day rate, 518 and 593, already pinned above from the reconciliation grid. Measured +; inputs, not a second copy of the price list: nothing here is a client-facing number, only +; an implied discount compared against a published bound. +; Against the pre-discount tariff both imply far more than the 5000 bp ceiling. Against the +; class-discounted rate both land INSIDE the published month band. Same seed, same two +; families, two bases, opposite answers -- and the seed does not say which basis is right. +test the_two_bases_disagree_about_whether_the_month_band_contains_the_monthly_price { + assert BP_ONE - (7900 * BP_ONE) / (DAYS_PER_MONTH * 690) == 6184; + assert BP_ONE - (8900 * BP_ONE) / (DAYS_PER_MONTH * 790) == 6245; + assert BP_ONE - (7900 * BP_ONE) / (DAYS_PER_MONTH * audit_daily_thb(690, 2500)) == 4917; + assert BP_ONE - (8900 * BP_ONE) / (DAYS_PER_MONTH * audit_daily_thb(790, 2500)) == 4998; + assert 6184 > MONTH_MAX_DISCOUNT_BP; + assert 6245 > MONTH_MAX_DISCOUNT_BP; + assert 4917 < MONTH_MAX_DISCOUNT_BP; + assert 4917 > MONTH_MIN_DISCOUNT_BP; + assert 4998 < MONTH_MAX_DISCOUNT_BP; + assert 4998 > MONTH_MIN_DISCOUNT_BP; +} + +; --- invariants --------------------------------------------------------------------------- +; Claims about the whole module that no single example carries. + +; The ladder and the band list are the measured ones. A rung or a band silently dropped +; fails here instead of passing as a tidy-up: a count of zero is always a bug (D16), and a +; count of five would mean this spec had quietly stopped describing the tariff. +invariant the_measured_ladder_holds_six_rungs + assert TERM_DAYS.len == 6 + +invariant the_published_bands_are_three + assert BAND_NAMES.len == 3 + +; THE MONOTONICITY CLAIM, in the only form the tariff supports: the daily rate is +; NON-INCREASING as the term lengthens, stated on a well-defined representative of each +; band -- floor against floor, then ceiling against ceiling. +; Stated THROUGH audit_daily_thb, at the rounded baht, on purpose. The same claim written as +; REF_BASE_THB_DAY * (BP_ONE - X) >= REF_BASE_THB_DAY * (BP_ONE - Y) would scale both sides +; by one positive constant and reduce to X <= Y, which is a comparison of two named bounds +; and is already pinned by every_band_is_a_well_formed_and_ordered_interval above; it would +; also say nothing about the function that the runtimes actually call. In the form below the +; rounding is inside the claim, so an edit to audit_daily_thb that broke the order -- a +; half-down divide, a sign slip in the net basis points -- fails here. +; What is claimed and what is not: the unrounded order follows from the bound order for every +; non-negative tariff, while the four asserts below are pinned on the one reference tariff, +; because that is the tariff this file computes with. +invariant the_rounded_daily_rate_never_rises_from_the_week_floor_to_the_fortnight_floor + assert audit_daily_thb(REF_BASE_THB_DAY, WEEK_MIN_DISCOUNT_BP) >= audit_daily_thb(REF_BASE_THB_DAY, TWO_WEEKS_MIN_DISCOUNT_BP) + +invariant the_rounded_daily_rate_never_rises_from_the_fortnight_floor_to_the_month_floor + assert audit_daily_thb(REF_BASE_THB_DAY, TWO_WEEKS_MIN_DISCOUNT_BP) >= audit_daily_thb(REF_BASE_THB_DAY, MONTH_MIN_DISCOUNT_BP) + +invariant the_rounded_daily_rate_never_rises_from_the_week_ceiling_to_the_fortnight_ceiling + assert audit_daily_thb(REF_BASE_THB_DAY, WEEK_MAX_DISCOUNT_BP) >= audit_daily_thb(REF_BASE_THB_DAY, TWO_WEEKS_MAX_DISCOUNT_BP) + +invariant the_rounded_daily_rate_never_rises_from_the_fortnight_ceiling_to_the_month_ceiling + assert audit_daily_thb(REF_BASE_THB_DAY, TWO_WEEKS_MAX_DISCOUNT_BP) >= audit_daily_thb(REF_BASE_THB_DAY, MONTH_MAX_DISCOUNT_BP) + +; The flat tail, as a claim about the reading rather than about the tariff: under +; band_index_for_days every rung from the month on answers with one band, so all four +; unpublished rungs answer exactly as the 30-day rung does. If the reading is ever narrowed +; -- the honest alternative is BAND_NONE beyond a month, since the tariff publishes nothing +; there -- this invariant is the thing that has to change, which is where the decision +; belongs. +invariant every_rung_from_the_month_on_shares_one_band + assert band_index_for_days(TERM_DAYS[1]) == band_index_for_days(TERM_DAYS[5]) + +; The other end of the same question, and the one the tariff does answer: one day short of +; the first published band there is no band, not a zero discount (D9). Stated against +; DAYS_PER_WEEK rather than against the literal 6, so that it follows the band if the band +; ever moves. +invariant a_term_one_day_short_of_the_first_band_has_no_band + assert band_index_for_days(DAYS_PER_WEEK - 1) == BAND_NONE + +; Why the inequality above is >= and not >. The first two bands SHARE an endpoint at 1500 +; bp (0.15), so one daily rate serves the longest week and the shortest fortnight. This is +; pinned as an invariant precisely because it is the fact that refutes the stricter claim: +; if a later edit separated the bands, the stricter claim would become available and this +; assert would be the thing that had to be deleted to get there. +invariant the_week_and_fortnight_bands_touch_at_fifteen_percent + assert WEEK_MAX_DISCOUNT_BP == TWO_WEEKS_MIN_DISCOUNT_BP + +; The other junction has a hole, not a shared endpoint: 0.35 - 0.25 = 0.10, 1000 bp that +; the tariff publishes nothing for. Recorded rather than closed by interpolation, the same +; way the unpublished delivery areas render as a dash instead of a number derived from +; Bangtao. The three bands are not a partition of anything. +invariant the_fortnight_and_month_bands_leave_a_gap + assert MONTH_MIN_DISCOUNT_BP - TWO_WEEKS_MAX_DISCOUNT_BP == 1000 + +; D11, mechanically. Nothing in this file may be served to a client as a price: the +; functions pin arithmetic, and the door quotes. Flipping this constant to true is the one +; edit that would turn an audit instrument into an invented quote, so it fails here. +invariant no_band_ever_becomes_a_client_quote + assert BANDS_PRODUCE_CLIENT_QUOTES == false + +; The scope of the file, mechanically. The term axis is pinned; the composition with the +; class discount is not, because the seed publishes no order between the two tables. Same +; tripwire shape as the line above: flipping this to true without a published rule and a test +; behind it fails here rather than passing as a tidy-up. +invariant the_class_and_term_composition_is_left_open + assert CLASS_TERM_COMPOSITION_IS_PINNED == false + +; The legacy snapshot keeps its old ID so discovery cannot silently content-dedupe it with the +; canonical owner while it is under review. +invariant the_root_snapshot_carries_a_legacy_id + assert ID != TWIN_SPEC_ID + +; Ownership is no longer ambiguous: this ID and the declaration matrix name the survivor. +invariant the_twin_semantic_merge_is_resolved + assert TWIN_IS_RESOLVED == true and TWIN_MERGE_MATRIX == "docs/t27-semantic-merge-matrix.md" + +; The shortest published band starts at a week, so the ladder's first rung is a week and +; anything shorter has no band. Absent stays absent (D9); it is not a zero discount. +invariant the_ladder_starts_where_the_first_band_starts + assert TERM_DAYS[0] == DAYS_PER_WEEK diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_game.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_game.t27 new file mode 100644 index 0000000000..8a7eb8acc6 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_game.t27 @@ -0,0 +1,547 @@ +// SPDX-License-Identifier: Apache-2.0 +; specs/turbobaby/ride_game.t27 -- how the biker game reads its handling out of the real fleet +; Source of truth for the two things issues #20, #13 and #12 ask to be stated once: the +; handling map (top speed from displacement_cc, steering from class) and the rule that the +; game may mount only a family the catalog actually has free. Every MEASURED number below is +; read from data/fleet_seed.json (measured_at 2026-09-12) or derived from it in a visible +; step -- but not every number below is measured, and this sentence is scoped so that nobody +; cites it for one that is not. Five are CHOSEN and appear in no source: SPEED_INTERCEPT_GU, +; SPEED_PER_CC_GU, the two steer rates, and the STEER_RATE_NO_SUCH_CLASS sentinel. Each says +; CHOSEN at its own declaration and is grounded nowhere else, here or anywhere. Two more are +; conventions of the rule rather than quantities -- the class codes 0 and 1, which name +; positions in CLASS_NAMES, and the MIN_UNITS_AVAILABLE_TO_RIDE floor of 1 -- and they are +; not measurements either. Decisions come from DECISIONS.md. ASCII only (L3), English +; identifiers only (LANG-EN). +; -- +; WHY (measured 2026-09-12). The seed holds 14 families in stock, 13 of them offered, and +; exactly 11 with a free unit on the measurement day. That 11 was computed, not guessed: +; the units_available of those eleven sum 5+1+1+3+6+5+1+1+1+1+1 = 26, which is the seed's +; own totals.units_available. Against that, the published tariff carries 7 FURTHER families +; -- pcx-150, adv-150, pcx-160, adv-160, rebel-300, xsr-900, r7 -- with ZERO units in the +; yard, and click-125, which the owner closed to new rentals (D12) and for which no rate is +; published at all. A game that keeps its own roster therefore has 8 machines it can invite a +; customer to ride and nobody can EVER hand over -- those 7 plus click-125, which is the same +; 8 bike_catalog.t27 counts -- and 2 more that nobody could hand over on the measurement day: +; forza-300 and mt-03-300, offered but units_available 0 of 1, the pair named in +; EXCLUDED_NONE_FREE below. 8 + 2 = 10 of the 21 known families, which is 21 - 11 and agrees +; with the partition further down. The 8 is permanent and the 10 is an instant; a roster held +; in the game gets both wrong, the first for ever and the second by tomorrow. That is why the +; subset rule below is an invariant and not a comment. The handling half has its own number: +; the fleet spans 125 cc to 750 cc, a factor of 6.0, and if every in-game bike handled +; identically that whole span would be decorative (issue #13). +; -- +; TWO PLACES WHERE THIS FILE CONTRADICTS ITS ISSUE, ON PURPOSE. +; 1. Issue #20 writes top_speed(engine_cc). There is no engine_cc field anywhere in the +; seed; the field is displacement_cc. The seed wins and the parameter is named for it. +; 2. Issue #20 asks that top speed be "strictly increasing in displacement across the +; tested families". No function of displacement can satisfy that reading: cb-650r, +; cbr-650r and vulcan-s-650 are three DISTINCT families at displacement_cc 650, so any +; two of them must share a top speed. Strict increase is +; therefore stated where it is true -- as a property of the FUNCTION over distinct +; displacements -- and the three tested families are chosen with distinct displacements: +; nmax-155 (155), xmax-300 (300), cb-650r (650). The three-way 650 tie gets a test of +; its own so it reads as the intended consequence of a pure function, not as a gap. +; -- +; WHAT THIS SPEC NEVER DOES. It never produces a client-facing price, and it declares no +; price constant or tariff amount anywhere (D11). SPEED and STEER +; are game units, and no source in this repository publishes a road top speed for any family, +; so labelling them km/h would be inventing a measurement -- the move D11 forbids. It never +; invents a bike: there is no fallback family, and with nothing free the game shows a named +; empty state rather than mounting something. It never breaks the 650 tie with the `body` +; field (naked / sport / cruiser): the field is real, but nothing measured says by how much +; a cruiser should differ from a naked, and a per-family nudge is exactly the hand-tuned +; magic number issue #13 rules out. And it never derives handling from the class discounts +; (scooter 0.25, motorcycle 0.15): those are the only per-class numbers the seed publishes +; and they are prices, so deriving a steering rate from one would dress a design choice as +; a measurement. Where a number here is chosen rather than measured, the comment says so. +; -- +; WHAT THIS FILE RESTATES, AND WHOSE IT IS. specs/turbobaby/bike_catalog.t27 is the authority +; for the two class discriminants and for the displacement domain; it says so itself, naming +; this handling model (#13) as one of its three readers. The names and widths below are +; therefore ITS names and widths, not new ones: CLASS_SCOOTER 0, CLASS_MOTORCYCLE 1 and the +; non-class sentinel CLASS_NONE 255; DISPLACEMENTS_CC as [7]u16; and the reported extremes +; DISPLACEMENT_MIN_CC / DISPLACEMENT_MAX_CC. Cited by NAME and never by line: that file was +; edited while this paragraph was being written and its line numbers moved, so a line +; citation here would have shipped already stale. An earlier draft of this file had the +; array as [7]i16, the extremes as CC_MIN / CC_MAX, and no CLASS_NONE at all -- a second copy +; of the algebra wearing different clothes and harder to see because both copies were specs. +; cc is unsigned there for a +; stated reason (a u8 stops at 255, so a 300 would arrive as 44 and look plausible), so +; top_speed takes u16 and returns u16; steering keeps i16 because it must carry -1. +; -- +; IMPLEMENTATION RECONCILIATION (2026-09-13). assets/game/ride.js now evaluates this exact +; affine top-speed function and the same closed two-class steering lookup before it mounts a +; rider. An unrecognised class or unusable displacement returns null, so neither can become a +; playable bike. The renderer then applies one named, CHOSEN game-speed-to-world conversion +; to every family and one named, CHOSEN game-steer-to-world conversion to every family. +; Acceleration derives only from that converted top speed; lean derives only from the +; canonical steering rate. `body` selects a silhouette and never trims physics. Those global +; rendering conversions are deliberately outside this game-unit contract: they change how +; the shared result is expressed in the Three.js world, not which catalog inputs determine +; it. There is therefore no per-body or per-family handling copy left to diverge. +; phi^2 + 1/phi^2 = 3 | TRINITY + +module ride-game; + +pub const KIND : str = "game"; +pub const ID : str = "turbobaby/ride-game"; +pub const NAME : str = "TurboBaby ride game handling"; +pub const WORLD : str = "gHashTag/turbobaby-user-bot"; +pub const SEED : str = "data/fleet_seed.json"; +pub const MEASURED_AT : str = "2026-09-12"; + +; --- Units --------------------------------------------------------------------------------- +; Named so that no reader can mistake them for something a customer is told. A game speed +; unit is not a kilometre per hour and not a baht. +pub const SPEED_UNIT : str = "game speed unit (gu); not km/h"; +pub const STEER_UNIT : str = "game steer unit per second (su/s); not degrees"; + +; --- Top speed: a function of displacement alone -------------------------------------------- +; The seven distinct displacements the fleet actually contains, ascending; the name, the +; width and the values are bike_catalog.t27's DISPLACEMENTS_CC, restated and not redesigned. +; Seven, not fourteen, and here is the whole of the collapse, measured family by family over +; the seed: 650 carries three families (cb-650r, cbr-650r, vulcan-s-650), 300 carries five +; (cb-300r, forza-300, mt-03-300, xmax-300, xmax-300-new) and 155 carries two (nmax-155, +; xsr-155). That is 2 + 4 + 1 = 7 rows repeating a value already in the list, and 14 - 7 = 7 +; values left. The other four values -- 125, 350, 400 and 750 -- have one family each, and +; 3 + 5 + 2 + 4 = 14 families, so no row is counted twice and none is missing. +pub const DISPLACEMENTS_CC : [7]u16 = [125, 155, 300, 350, 400, 650, 750]; +; Measured extremes of the fleet of 2026-09-12, under bike_catalog.t27's names for them. +; Reported, never used as a bound: the next machine the shop buys must not be rejected here. +pub const DISPLACEMENT_MIN_CC : u16 = 125; +pub const DISPLACEMENT_MAX_CC : u16 = 750; + +; SPEED_INTERCEPT_GU is CHOSEN, not measured. A purely proportional map would put the +; 750 at 750/125 = 6.0x the 125 and leave the small scooter unplayable next to it; the +; intercept compresses the fleet's speed ratio to 1150/525 = 2.19x. Both ratios are +; arithmetic on seed displacements, and the choice is the intercept, nothing else. +pub const SPEED_INTERCEPT_GU : u16 = 400; +; The slope, CHOSEN like the intercept and measured nowhere. Positive, so the function is +; strictly increasing in displacement; one gu per cc, so equal displacement gives equal top +; speed and nothing else can enter the result. +pub const SPEED_PER_CC_GU : u16 = 1; + +; top_speed is a function of a NUMBER, not of a family. It is defined at 125 because 125 is +; a displacement; that does not make click-125 rideable -- rideability is a property of a +; family and is decided by the rule further down. cc is u16 because that is the width the +; catalog stores it in; a top speed is a magnitude and never negative, so it is u16 too, and +; the lane carries no signed value that a mixed-width expression could lose. Range: +; 400 + 750 = 1150 at the largest engine in stock, far inside u16. +pub fn top_speed(displacement_cc: u16) u16 { + return SPEED_INTERCEPT_GU + SPEED_PER_CC_GU * displacement_cc; +} + +; --- Steering: a function of class, and the class set is closed ------------------------------ +; The seed forces the domain: `class` takes exactly two values over all 14 in-stock families +; and all 7 price-list-only ones. Codes rather than strings so the mapping is total and +; checkable; CLASS_NAMES holds the seed's own spelling. +pub const CLASS_COUNT : u8 = 2; +pub const CLASS_NAMES : [2]str = ["scooter", "motorcycle"]; +pub const CLASS_SCOOTER : u8 = 0; +pub const CLASS_MOTORCYCLE : u8 = 1; +; Not a class, and not invented here: bike_catalog.t27's own CLASS_NONE, restated so this +; file does not grow a second convention for "no such class". 255 is the widest value a u8 +; holds and cannot collide with either discriminant. It is a CLASS code; the rate a caller +; gets back for it is STEER_RATE_NO_SUCH_CLASS below, a different number with a different +; job, and the test further down pins that CLASS_NONE goes in and that sentinel comes out. +pub const CLASS_NONE : u8 = 255; + +; The DIRECTION is grounded: KB_faq recommends the scooter nmax-155 to beginners and for +; city use, and every family in the seed's sport recommendation list (ninja-400, cbr-650r, +; mt-03-300) is a motorcycle -- so the quicker, more forgiving steering belongs with the +; scooters. The MAGNITUDES, 120 against 90, are a chosen 4:3. Nothing in the sources +; measures a steering rate, and this comment is the whole of their provenance. +pub const STEER_RATE_SCOOTER_SU : i16 = 120; +pub const STEER_RATE_MOTORCYCLE_SU : i16 = 90; +; Not a rate and not a fallback, and CHOSEN: no source measures it, and -1 is picked only +; because it is outside every playable value. A negative sentinel, so a caller that skips +; the check gets an unusable number instead of a playable default class. There is no third +; class to fall back to and none is invented here. This is why the steering lane is i16 +; while the top-speed lane is u16: a steer rate has to be able to be negative. +pub const STEER_RATE_NO_SUCH_CLASS : i16 = -1; + +pub fn steer_rate(class_code: u8) i16 { + if (class_code == CLASS_SCOOTER) { + return STEER_RATE_SCOOTER_SU; + } + if (class_code == CLASS_MOTORCYCLE) { + return STEER_RATE_MOTORCYCLE_SU; + } + return STEER_RATE_NO_SUCH_CLASS; +} + +; --- The mapping, in one place --------------------------------------------------------------- +; Issue #13 asks for the mapping as one pure function of the catalog fields. This is it: the +; two catalog fields in, the two tunables out, no table in between. The two fields keep the +; widths of the lanes that produce them, so nothing is widened or re-signed on the way out. +pub const Handling = packed struct { + top_speed_gu : u16, + steer_rate_su : i16, +}; + +pub fn handling(displacement_cc: u16, class_code: u8) Handling { + return Handling{ .top_speed_gu = top_speed(displacement_cc), .steer_rate_su = steer_rate(class_code) }; +} + +; --- Which families may be ridden ------------------------------------------------------------ +; The request behind this spec is "bikers with the bikes that are actually in stock". The +; rule is read at mount time from the API, never from a list held in the game. +pub const RIDEABLE_SOURCE : str = "/api/bikes?available_only=true"; +pub const RIDEABLE_RULE : str = "offered == true AND units_available >= MIN_UNITS_AVAILABLE_TO_RIDE, re-read at mount time"; +pub const MIN_UNITS_AVAILABLE_TO_RIDE : u8 = 1; + +; The 14 in-stock families, in the seed's own `families` order so an index here is a line +; there. This is the catalog the rideable set must be a subset of. +pub const CATALOG_KEYS : [14]str = [ + "click-125", "nmax-155", "xsr-155", "cb-300r", "forza-300", "mt-03-300", "xmax-300", + "xmax-300-new", "adv-350", "ninja-400", "cb-650r", "cbr-650r", "vulcan-s-650", "xadv-750", +]; + +; What the rule returned on the seed's measurement day. This array is the WITNESS of the +; measurement, not a roster: availability moves every time a bike goes out, so a game that +; read this list instead of the API would eventually offer a rented machine. The witness is +; here so the subset invariant has something to check. +pub const RIDEABLE_KEYS : [11]str = [ + "nmax-155", "xsr-155", "cb-300r", "xmax-300", "xmax-300-new", "adv-350", "ninja-400", + "cb-650r", "cbr-650r", "vulcan-s-650", "xadv-750", +]; +pub const RIDEABLE_FAMILIES_AT_MEASURED_AT : u8 = 11; +pub const RIDEABLE_UNITS_AT_MEASURED_AT : u8 = 26; + +; The two reasons a family in the catalog is not rideable. Together with RIDEABLE_KEYS these +; partition CATALOG_KEYS: 11 + 1 + 2 = 14, and every rideable key's position in the catalog +; is named one by one in every_rideable_family_is_in_the_catalog below. +; click-125: offered false, and base_rate_thb_day / deposit_thb are null -- no published +; tariff at all (D12, and D9: absent stays absent). +pub const EXCLUDED_NOT_OFFERED : [1]str = ["click-125"]; +; forza-300 and mt-03-300: offered, but units_available 0 of 1 on the measurement day. They +; are excluded at this instant by the rule, not forbidden for ever. +pub const EXCLUDED_NONE_FREE : [2]str = ["forza-300", "mt-03-300"]; + +; The 7 families published in the tariff with no units in the fleet. They are not in +; CATALOG_KEYS at all, so they can never be rideable -- and the reason is arithmetic, not a +; blacklist: their total unit count is zero, which cannot reach +; MIN_UNITS_AVAILABLE_TO_RIDE. Named here so a later reader who finds a tariff without +; stock does not invent the stock. +pub const PRICE_LIST_ONLY_KEYS : [7]str = [ + "pcx-150", "adv-150", "pcx-160", "adv-160", "rebel-300", "xsr-900", "r7", +]; +pub const PRICE_LIST_ONLY_UNITS_TOTAL : u8 = 0; + +; --- No invented bike ------------------------------------------------------------------------- +pub const HAS_FALLBACK_FAMILY : bool = false; +pub const FALLBACK_FAMILY : str = ""; +pub const ON_NONE_RIDEABLE : str = "show a named empty state and mount no bike"; +pub const LABEL_TEXT_SOURCE : str = "brand, model and variant_label from the catalog row"; + +; --- The root review snapshot, semantically merged ------------------------------------------- +; specs/ride_game.t27 also recorded the causal direction of the replacement: the retired +; garden wrote game state from the order path and manufactured a non-empty state. The Ride +; game does neither. These are behavior boundaries, not nostalgia: without them a later +; checkout hook could make a game failure fail a purchase again. +pub const REPLACES_GARDEN_PATH : str = "src/trios/garden.rs"; +pub const LEGACY_GARDEN_WROTE_FROM_ORDER : bool = true; +pub const LEGACY_GARDEN_FORCED_NONEMPTY_STATE : bool = true; +pub const RIDE_WRITES_TO_ORDER_PATH : bool = false; +pub const RIDE_EMITS_CLIENT_PRICE : bool = false; + +; The review snapshot used four copied rows and two copied boolean rosters. They are not +; copied here: CATALOG_KEYS, RIDEABLE_KEYS and both EXCLUDED arrays above already witness the +; complete seed. availability.t27 owns the offered-and-positive-stock conjunction and supplies +; one boolean; duplicating that arithmetic here would give it a second owner. The snapshot's +; unique negative case survives as selected_row_respects_live_gate: a hand-held roster that +; selects a row rejected by availability is itself rejected, while an unselected row has no +; claim to validate. +pub const RIDE_BOOKABILITY_OWNER_ID : str = "turbobaby/availability"; +pub const RIDE_BOOKABILITY_INPUT : str = "is_bookable(offered, units_available) from the availability contract"; + +pub fn selected_row_respects_live_gate(selected: bool, bookable_by_availability: bool) bool { + if (!selected) { + return true; + } + return bookable_by_availability; +} + +; Empty and unavailable are different player-visible outcomes, but both mount zero riders. +; Module import, roster fetch and renderer start are separate failure boundaries in the live +; bridge. A failure at any one is unavailable; a successful empty filtered roster is empty. +pub const ROSTER_OUTCOME_READY : u8 = 0; +pub const ROSTER_OUTCOME_EMPTY : u8 = 1; +pub const ROSTER_OUTCOME_UNAVAILABLE : u8 = 2; +pub const ROSTER_OUTCOME_COUNT : u8 = 3; +pub const EMPTY_STATE_MESSAGE_KEY : str = "ride_game.empty_roster"; +pub const UNAVAILABLE_STATE_MESSAGE_KEY : str = "ride_game.roster_unavailable"; + +pub fn roster_outcome(module_loaded: bool, fetch_succeeded: bool, engine_started: bool, rideable_count: u8) u8 { + if (!module_loaded or !fetch_succeeded) { + return ROSTER_OUTCOME_UNAVAILABLE; + } + if (rideable_count == 0) { + return ROSTER_OUTCOME_EMPTY; + } + if (!engine_started) { + return ROSTER_OUTCOME_UNAVAILABLE; + } + return ROSTER_OUTCOME_READY; +} + +pub fn mounted_rider_count(outcome: u8, rideable_count: u8) u8 { + if (outcome != ROSTER_OUTCOME_READY) { + return 0; + } + return rideable_count; +} + +pub fn ride_can_start(outcome: u8, rideable_count: u8) bool { + return outcome == ROSTER_OUTCOME_READY and mounted_rider_count(outcome, rideable_count) >= 1; +} + +; --- Tests ------------------------------------------------------------------------------------- + +test the_module_names_its_own_world { + assert KIND == "game"; + assert ID == "turbobaby/ride-game"; + assert WORLD == "gHashTag/turbobaby-user-bot"; + assert MEASURED_AT == "2026-09-12"; +} + +; The three families issue #20 asks to be pinned, chosen with DISTINCT displacements for the +; reason given in the header. Both classes are covered: nmax-155 and xmax-300 are scooters, +; cb-650r is a motorcycle. Each cc is the family's displacement_cc as the seed records it. +test handling_of_three_real_families { + ; nmax-155, scooter, displacement_cc 155 + assert top_speed(155) == 555; + assert steer_rate(CLASS_SCOOTER) == 120; + ; xmax-300, scooter, displacement_cc 300 + assert top_speed(300) == 700; + ; cb-650r, motorcycle, displacement_cc 650 + assert top_speed(650) == 1050; + assert steer_rate(CLASS_MOTORCYCLE) == 90; + ; and across these three distinct displacements the top speed does increase strictly + assert top_speed(155) < top_speed(300); + assert top_speed(300) < top_speed(650); +} + +; The whole domain the fleet exhibits, as a ladder. Six strict steps over seven values. +test every_distinct_displacement_climbs { + assert DISPLACEMENTS_CC[0] == 125; + assert DISPLACEMENTS_CC[6] == 750; + assert top_speed(125) == 525; + assert top_speed(155) == 555; + assert top_speed(300) == 700; + assert top_speed(350) == 750; + assert top_speed(400) == 800; + assert top_speed(650) == 1050; + assert top_speed(750) == 1150; + assert top_speed(125) < top_speed(155); + assert top_speed(155) < top_speed(300); + assert top_speed(300) < top_speed(350); + assert top_speed(350) < top_speed(400); + assert top_speed(400) < top_speed(650); + assert top_speed(650) < top_speed(750); +} + +; The tie the issue's acceptance criterion could not accommodate, pinned as intended +; behaviour. These three families share a displacement and a class, so they share one +; handling pair, and this spec does not reach for `body` to separate them. +test the_three_650_families_share_one_handling_pair { + assert CATALOG_KEYS[10] == "cb-650r"; + assert CATALOG_KEYS[11] == "cbr-650r"; + assert CATALOG_KEYS[12] == "vulcan-s-650"; + assert top_speed(650) == 1050; + assert steer_rate(CLASS_MOTORCYCLE) == 90; +} + +; Issue #13's acceptance: the smallest and the largest engine must measurably differ. They +; differ in top speed by exactly the displacement span. They do NOT differ in steering, and +; that is the seed's doing rather than an oversight: KB_faq classes the 750 X-ADV with the +; scooters, so both rows read class scooter. click-125 is also not rideable at all, which is +; why this is an arithmetic check on the function and not a claim about a playable bike. +test the_smallest_and_largest_engines_differ { + assert top_speed(125) == 525; + assert top_speed(750) == 1150; + assert top_speed(DISPLACEMENT_MAX_CC) - top_speed(DISPLACEMENT_MIN_CC) == 625; + assert DISPLACEMENT_MAX_CC - DISPLACEMENT_MIN_CC == 625; +} + +test steer_rate_separates_the_two_classes { + assert CLASS_NAMES[0] == "scooter"; + assert CLASS_NAMES[1] == "motorcycle"; + assert steer_rate(CLASS_SCOOTER) == STEER_RATE_SCOOTER_SU; + assert steer_rate(CLASS_MOTORCYCLE) == STEER_RATE_MOTORCYCLE_SU; + assert steer_rate(CLASS_SCOOTER) > steer_rate(CLASS_MOTORCYCLE); +} + +; Two unknown codes, not one: 2 is the first value past the domain, and CLASS_NONE is the +; code the catalog spec's own guard returns. This spec answers a number nobody can ride with; +; ride.js expresses the same refusal as null before any rider can mount. +test an_unknown_class_is_refused_not_defaulted { + assert steer_rate(2) == STEER_RATE_NO_SUCH_CLASS; + assert steer_rate(2) < 0; + assert steer_rate(CLASS_NONE) == STEER_RATE_NO_SUCH_CLASS; + assert CLASS_NONE == 255; + assert CLASS_NONE > CLASS_MOTORCYCLE; + assert STEER_RATE_SCOOTER_SU > 0; + assert STEER_RATE_MOTORCYCLE_SU > 0; +} + +test the_mapping_is_one_function { + const h = handling(155, CLASS_SCOOTER); + assert h.top_speed_gu == 555; + assert h.steer_rate_su == 120; +} + +; The subset claim, witnessed key by key: every rideable family, and the catalog row it came +; from. Eleven lines, no membership operator, nothing implied. +test every_rideable_family_is_in_the_catalog { + assert RIDEABLE_KEYS[0] == CATALOG_KEYS[1]; + assert RIDEABLE_KEYS[1] == CATALOG_KEYS[2]; + assert RIDEABLE_KEYS[2] == CATALOG_KEYS[3]; + assert RIDEABLE_KEYS[3] == CATALOG_KEYS[6]; + assert RIDEABLE_KEYS[4] == CATALOG_KEYS[7]; + assert RIDEABLE_KEYS[5] == CATALOG_KEYS[8]; + assert RIDEABLE_KEYS[6] == CATALOG_KEYS[9]; + assert RIDEABLE_KEYS[7] == CATALOG_KEYS[10]; + assert RIDEABLE_KEYS[8] == CATALOG_KEYS[11]; + assert RIDEABLE_KEYS[9] == CATALOG_KEYS[12]; + assert RIDEABLE_KEYS[10] == CATALOG_KEYS[13]; +} + +; The three catalog rows the rule leaves out, named rather than counted, with the seed's +; reason attached in the comments above each array. +test the_families_excluded_from_riding_are_named { + assert EXCLUDED_NOT_OFFERED[0] == "click-125"; + assert EXCLUDED_NOT_OFFERED[0] == CATALOG_KEYS[0]; + assert EXCLUDED_NONE_FREE[0] == "forza-300"; + assert EXCLUDED_NONE_FREE[0] == CATALOG_KEYS[4]; + assert EXCLUDED_NONE_FREE[1] == "mt-03-300"; + assert EXCLUDED_NONE_FREE[1] == CATALOG_KEYS[5]; +} + +test the_price_list_only_families_can_never_be_ridden { + assert PRICE_LIST_ONLY_KEYS[0] == "pcx-150"; + assert PRICE_LIST_ONLY_KEYS[6] == "r7"; + assert PRICE_LIST_ONLY_KEYS.len == 7; + assert PRICE_LIST_ONLY_UNITS_TOTAL == 0; + assert PRICE_LIST_ONLY_UNITS_TOTAL < MIN_UNITS_AVAILABLE_TO_RIDE; +} + +test the_measured_counts_are_the_seeds_own { + assert RIDEABLE_FAMILIES_AT_MEASURED_AT == 11; + ; 5+1+1+3+6+5+1+1+1+1+1, which is the seed's totals.units_available + assert RIDEABLE_UNITS_AT_MEASURED_AT == 26; + assert RIDEABLE_KEYS.len == RIDEABLE_FAMILIES_AT_MEASURED_AT; +} + +test the_game_offers_no_bike_it_cannot_hand_over { + assert HAS_FALLBACK_FAMILY == false; + assert FALLBACK_FAMILY == ""; + assert ON_NONE_RIDEABLE == "show a named empty state and mount no bike"; + assert LABEL_TEXT_SOURCE == "brand, model and variant_label from the catalog row"; +} + +test live_row_gate_requires_offer_and_stock { + assert RIDE_BOOKABILITY_OWNER_ID == "turbobaby/availability"; + assert RIDEABLE_RULE == "offered == true AND units_available >= MIN_UNITS_AVAILABLE_TO_RIDE, re-read at mount time"; + assert MIN_UNITS_AVAILABLE_TO_RIDE == 1; + assert selected_row_respects_live_gate(true, true) == true; + assert selected_row_respects_live_gate(true, false) == false; +} + +test a_drifted_selection_is_rejected_by_the_live_gate { + assert EXCLUDED_NONE_FREE[0] == "forza-300"; + assert selected_row_respects_live_gate(true, true) == true; + assert selected_row_respects_live_gate(true, false) == false; + assert selected_row_respects_live_gate(false, false) == true; +} + +test empty_and_unavailable_are_explicit_zero_rider_states { + assert roster_outcome(true, true, true, 1) == ROSTER_OUTCOME_READY; + assert roster_outcome(true, true, true, 0) == ROSTER_OUTCOME_EMPTY; + assert roster_outcome(true, true, false, 0) == ROSTER_OUTCOME_EMPTY; + assert roster_outcome(false, true, true, 1) == ROSTER_OUTCOME_UNAVAILABLE; + assert roster_outcome(true, false, true, 1) == ROSTER_OUTCOME_UNAVAILABLE; + assert roster_outcome(true, true, false, 1) == ROSTER_OUTCOME_UNAVAILABLE; + assert mounted_rider_count(ROSTER_OUTCOME_READY, 11) == 11; + assert mounted_rider_count(ROSTER_OUTCOME_EMPTY, 0) == 0; + assert mounted_rider_count(ROSTER_OUTCOME_UNAVAILABLE, 11) == 0; + assert ride_can_start(ROSTER_OUTCOME_READY, 1) == true; + assert ride_can_start(ROSTER_OUTCOME_EMPTY, 0) == false; + assert ride_can_start(ROSTER_OUTCOME_UNAVAILABLE, 11) == false; +} + +test the_replacement_has_no_checkout_or_price_side_effect { + assert LEGACY_GARDEN_WROTE_FROM_ORDER == true; + assert LEGACY_GARDEN_FORCED_NONEMPTY_STATE == true; + assert RIDE_WRITES_TO_ORDER_PATH == false; + assert RIDE_EMITS_CLIENT_PRICE == false; + assert HAS_FALLBACK_FAMILY == false; +} + +; --- Invariants --------------------------------------------------------------------------------- + +; The issue's acceptance criterion, stated where it is true: strictly increasing in +; displacement is a property of the function, and a positive slope is the whole of it. It +; cannot be stated across families, because three families share displacement 650. +invariant top_speed_is_strictly_increasing_in_displacement + assert SPEED_PER_CC_GU >= 1 + +; The load-bearing one. RIDEABLE_KEYS, EXCLUDED_NOT_OFFERED and EXCLUDED_NONE_FREE +; partition CATALOG_KEYS -- each key appears in exactly one of the three, and the position +; of every rideable key in the catalog is witnessed in the test above -- so this sum says +; that nothing rideable came from outside the catalog. A key added to the game without a +; catalog row breaks the arithmetic here instead of shipping as a playable bike. +invariant the_rideable_set_is_a_subset_of_the_catalog + assert RIDEABLE_KEYS.len + EXCLUDED_NOT_OFFERED.len + EXCLUDED_NONE_FREE.len == CATALOG_KEYS.len + +; A count of zero is always a bug (D16): if the catalog array is ever emptied by a tidy-up, +; the subset invariant above would hold vacuously with an empty game. Pinning the seed's own +; families_in_stock stops that. +invariant the_catalog_holds_the_whole_in_stock_fleet + assert CATALOG_KEYS.len == 14 + +; Why the 7 price-list-only families are excluded by the rule itself and need no blacklist: +; zero units can never satisfy the availability floor. +invariant a_family_with_no_unit_can_never_be_ridden + assert PRICE_LIST_ONLY_UNITS_TOTAL < MIN_UNITS_AVAILABLE_TO_RIDE + +invariant ride_handling_class_map_is_total + assert CLASS_NAMES.len == CLASS_COUNT + +invariant an_unknown_class_yields_no_playable_rate + assert STEER_RATE_NO_SUCH_CLASS < 0 + +invariant the_game_never_invents_a_bike + assert HAS_FALLBACK_FAMILY == false + +invariant the_measured_displacement_domain_is_seven_wide + assert DISPLACEMENTS_CC.len == 7 + +; The extremes are the ends of the array and not two numbers typed beside it, so a fleet +; change that edits one without the other cannot pass. This is the claim the old CC_MIN / +; CC_MAX names made nowhere. +invariant the_reported_extremes_are_the_ends_of_the_domain + assert DISPLACEMENTS_CC[0] == DISPLACEMENT_MIN_CC + +invariant the_largest_reported_extreme_is_the_last_of_the_domain + assert DISPLACEMENTS_CC[6] == DISPLACEMENT_MAX_CC + +; The sentinel restated from bike_catalog.t27 earns its width here: it must sit outside the +; class domain, or the guard would alias onto a real class and hand back a playable rate. +invariant the_non_class_sentinel_cannot_collide_with_a_class + assert CLASS_NONE > CLASS_MOTORCYCLE + +invariant a_selected_row_requires_both_offer_and_positive_stock + assert selected_row_respects_live_gate(true, true) == true and selected_row_respects_live_gate(true, false) == false + +invariant an_empty_roster_mounts_no_default_rider + assert mounted_rider_count(ROSTER_OUTCOME_EMPTY, 0) == 0 and HAS_FALLBACK_FAMILY == false + +invariant an_unavailable_roster_cannot_mount_a_rider + assert mounted_rider_count(ROSTER_OUTCOME_UNAVAILABLE, RIDEABLE_FAMILIES_AT_MEASURED_AT) == 0 + +invariant the_ride_game_cannot_write_to_checkout + assert RIDE_WRITES_TO_ORDER_PATH == false + +invariant the_ride_game_is_not_a_price_surface + assert RIDE_EMITS_CLIENT_PRICE == false diff --git a/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_runtime.t27 b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_runtime.t27 new file mode 100644 index 0000000000..c8dd819563 --- /dev/null +++ b/apps/website/public/t27/files/turbobaby-user-bot/specs/turbobaby/ride_runtime.t27 @@ -0,0 +1,274 @@ +// SPDX-License-Identifier: Apache-2.0 +module turbobaby-ride-lifecycle; + +; specs/turbobaby/ride_runtime.t27 -- lifecycle contract for one TurboBaby Ride run +; This contract owns the runtime edges that do not belong in ride_game.t27's catalog and +; handling model: horizontal control, terminal collisions, event classification, once-only +; score submission, generation guards, teardown, and the client side of a star award. +; +; WHY (measured 2026-09-13). The live bridge has four failure boundaries before a player can +; ride: dynamic module import, roster fetch, roster filtering, and renderer start. An earlier +; implementation reported those failures as an end event. Because the host's only score-write +; path listens for end, a failed load could create a zero score without a ride. The repaired +; implementation emits unavailable for those boundaries, and only a real terminal collision +; emits end. A real collision can happen before the first distance unit is crossed, so distance +; zero remains a valid completed run; event kind, not a positive score threshold, identifies it. +; +; OWNERSHIP. This file consumes three decisions as booleans and does not restate their data: +; roster eligibility comes from ride_game.t27, identity comes from the host, and the server +; decides whether a requested star award is accepted or capped. It contains no fleet rows, no +; handling constants, no award cap, no price, and no person-level data. Runtime implementation: +; assets/game/ride.js and src/ui/screens/ride_screen.rs. Regression witness: +; tests/ride_asset_wiring.rs. +; phi^2 + 1/phi^2 = 3 | TRINITY + +pub const KIND : str = "runtime-contract"; +pub const ID : str = "turbobaby/ride-runtime"; +pub const NAME : str = "TurboBaby Ride runtime lifecycle"; +pub const WORLD : str = "gHashTag/turbobaby-user-bot"; +pub const GAME_IMPLEMENTATION : str = "assets/game/ride.js"; +pub const HOST_IMPLEMENTATION : str = "src/ui/screens/ride_screen.rs"; +pub const REGRESSION_WITNESS : str = "tests/ride_asset_wiring.rs"; + +; --- Input ------------------------------------------------------------------------------------- +; The browser helper supplies a normalized horizontal value. Clamp again at the test seam so a +; synthetic caller cannot steer past the road contract. These are normalized control units, not +; steering physics; the class-dependent rate stays in ride_game.t27. +pub const CONTROL_LEFT : i16 = -100; +pub const CONTROL_CENTER : i16 = 0; +pub const CONTROL_RIGHT : i16 = 100; + +pub fn clamp_horizontal_control(value: i16) i16 { + if (value < CONTROL_LEFT) { + return CONTROL_LEFT; + } + if (value > CONTROL_RIGHT) { + return CONTROL_RIGHT; + } + return value; +} + +; The runtime receives roster decisions, rather than rebuilding the offered and stock rule. +; handling_ready is likewise a result owned by ride_game.t27's closed handling map. +pub fn runtime_may_mount(roster_resolved: bool, has_rideable_family: bool, handling_ready: bool) bool { + return roster_resolved and has_rideable_family and handling_ready; +} + +; --- Collisions and end ------------------------------------------------------------------------ +pub const COLLISION_NONE : u8 = 0; +pub const COLLISION_CONE : u8 = 1; +pub const COLLISION_TRAFFIC : u8 = 2; +pub const COLLISION_KIND_COUNT : u8 = 3; + +pub fn is_terminal_collision(collision_kind: u8) bool { + return collision_kind == COLLISION_CONE or collision_kind == COLLISION_TRAFFIC; +} + +; run_alive is the once gate in ride.js. The first terminal collision may end the run; any later +; collision observes false and emits nothing. +pub fn may_finish_run(run_alive: bool, collision_kind: u8) bool { + return run_alive and is_terminal_collision(collision_kind); +} + +pub fn alive_after_collision(run_alive: bool, collision_kind: u8) bool { + if (may_finish_run(run_alive, collision_kind)) { + return false; + } + return run_alive; +} + +; --- Events ------------------------------------------------------------------------------------ +pub const EVENT_NONE : u8 = 0; +pub const EVENT_TICK : u8 = 1; +pub const EVENT_END : u8 = 2; +pub const EVENT_UNAVAILABLE : u8 = 3; +pub const EVENT_KIND_COUNT : u8 = 4; + +pub const UNAVAILABLE_IMPORT : u8 = 1; +pub const UNAVAILABLE_FETCH : u8 = 2; +pub const UNAVAILABLE_EMPTY : u8 = 3; +pub const UNAVAILABLE_ENGINE : u8 = 4; +pub const UNAVAILABLE_REASON_COUNT : u8 = 4; + +pub fn unavailable_reason_is_known(reason: u8) bool { + return reason >= UNAVAILABLE_IMPORT and reason <= UNAVAILABLE_ENGINE; +} + +pub fn event_for_start_result(module_loaded: bool, roster_resolved: bool, has_rideable_family: bool, engine_started: bool) u8 { + if (!module_loaded or !roster_resolved or !has_rideable_family or !engine_started) { + return EVENT_UNAVAILABLE; + } + return EVENT_TICK; +} + +pub fn event_for_collision(run_alive: bool, collision_kind: u8) u8 { + if (may_finish_run(run_alive, collision_kind)) { + return EVENT_END; + } + return EVENT_NONE; +} + +; No distance argument is used as an end discriminator. That omission is intentional: an actual +; collision at zero distance is still an actual end, while an unavailable event at any numeric +; distance is never an end. +pub fn score_submit_allowed(event_kind: u8, already_submitted: bool) bool { + return event_kind == EVENT_END and !already_submitted; +} + +pub fn completed_distance_is_valid(distance: u32) bool { + return distance >= 0; +} + +; --- Star award boundary ----------------------------------------------------------------------- +; The client may request an award only for a real, first submission with an identified player and +; at least one collected star. It never decides whether the award clears a server-side cap. The +; final balance message consumes the server's boolean response and invents no amount. +pub fn star_award_request_allowed(event_kind: u8, already_submitted: bool, identity_present: bool, collected_stars: u16) bool { + return score_submit_allowed(event_kind, already_submitted) and identity_present and collected_stars >= 1; +} + +pub fn show_award_as_credited(request_sent: bool, server_awarded: bool) bool { + return request_sent and server_awarded; +} + +pub const SERVER_OWNS_AWARD_DECISION : bool = true; +pub const CLIENT_OWNS_AWARD_CAP : bool = false; + +; --- Generation and cleanup ------------------------------------------------------------------- +; Every boot captures a generation. A later boot or unmount advances the current generation, so +; a late dynamic import cannot mount into a new component. Host connectivity is a second gate. +pub fn continuation_is_current(captured_generation: u32, current_generation: u32, host_connected: bool) bool { + return captured_generation == current_generation and host_connected; +} + +pub fn next_generation(current_generation: u32) u32 { + return current_generation + 1; +} + +pub fn cleanup_is_complete(stop_called: bool, listener_dropped: bool, generation_invalidated: bool) bool { + return stop_called and listener_dropped and generation_invalidated; +} + +; --- Tests ------------------------------------------------------------------------------------- + +test horizontal_control_is_clamped_at_both_edges { + assert clamp_horizontal_control(-101) == CONTROL_LEFT; + assert clamp_horizontal_control(-100) == CONTROL_LEFT; + assert clamp_horizontal_control(0) == CONTROL_CENTER; + assert clamp_horizontal_control(100) == CONTROL_RIGHT; + assert clamp_horizontal_control(101) == CONTROL_RIGHT; +} + +test mount_consumes_three_ready_booleans { + assert runtime_may_mount(true, true, true) == true; + assert runtime_may_mount(false, true, true) == false; + assert runtime_may_mount(true, false, true) == false; + assert runtime_may_mount(true, true, false) == false; +} + +test both_live_collision_sources_are_terminal { + assert is_terminal_collision(COLLISION_NONE) == false; + assert is_terminal_collision(COLLISION_CONE) == true; + assert is_terminal_collision(COLLISION_TRAFFIC) == true; + assert is_terminal_collision(COLLISION_KIND_COUNT) == false; +} + +test only_the_first_terminal_collision_finishes { + assert may_finish_run(true, COLLISION_CONE) == true; + assert alive_after_collision(true, COLLISION_CONE) == false; + assert may_finish_run(false, COLLISION_TRAFFIC) == false; + assert alive_after_collision(false, COLLISION_TRAFFIC) == false; +} + +test load_failures_are_unavailable_not_end { + assert event_for_start_result(false, true, true, true) == EVENT_UNAVAILABLE; + assert event_for_start_result(true, false, true, true) == EVENT_UNAVAILABLE; + assert event_for_start_result(true, true, false, true) == EVENT_UNAVAILABLE; + assert event_for_start_result(true, true, true, false) == EVENT_UNAVAILABLE; + assert event_for_start_result(true, true, true, true) == EVENT_TICK; +} + +test unavailable_reasons_form_a_closed_runtime_set { + assert unavailable_reason_is_known(UNAVAILABLE_IMPORT) == true; + assert unavailable_reason_is_known(UNAVAILABLE_FETCH) == true; + assert unavailable_reason_is_known(UNAVAILABLE_EMPTY) == true; + assert unavailable_reason_is_known(UNAVAILABLE_ENGINE) == true; + assert unavailable_reason_is_known(0) == false; + assert unavailable_reason_is_known(5) == false; +} + +test collision_events_respect_the_alive_once_gate { + assert event_for_collision(true, COLLISION_CONE) == EVENT_END; + assert event_for_collision(true, COLLISION_TRAFFIC) == EVENT_END; + assert event_for_collision(true, COLLISION_NONE) == EVENT_NONE; + assert event_for_collision(false, COLLISION_CONE) == EVENT_NONE; +} + +test real_zero_distance_is_a_valid_submit_eligible_end { + assert completed_distance_is_valid(0) == true; + assert score_submit_allowed(EVENT_END, false) == true; + assert score_submit_allowed(EVENT_END, true) == false; + assert score_submit_allowed(EVENT_UNAVAILABLE, false) == false; +} + +test stars_require_a_real_first_end_and_identity { + assert star_award_request_allowed(EVENT_END, false, true, 1) == true; + assert star_award_request_allowed(EVENT_END, false, true, 0) == false; + assert star_award_request_allowed(EVENT_END, true, true, 1) == false; + assert star_award_request_allowed(EVENT_END, false, false, 1) == false; + assert star_award_request_allowed(EVENT_UNAVAILABLE, false, true, 1) == false; +} + +test the_server_decides_whether_an_award_was_credited { + assert SERVER_OWNS_AWARD_DECISION == true; + assert CLIENT_OWNS_AWARD_CAP == false; + assert show_award_as_credited(true, true) == true; + assert show_award_as_credited(true, false) == false; + assert show_award_as_credited(false, true) == false; +} + +test stale_or_detached_import_continuations_are_rejected { + assert continuation_is_current(8, 8, true) == true; + assert continuation_is_current(7, 8, true) == false; + assert continuation_is_current(8, 8, false) == false; + assert next_generation(8) == 9; +} + +test teardown_requires_all_three_cleanup_actions { + assert cleanup_is_complete(true, true, true) == true; + assert cleanup_is_complete(false, true, true) == false; + assert cleanup_is_complete(true, false, true) == false; + assert cleanup_is_complete(true, true, false) == false; +} + +; --- Invariants -------------------------------------------------------------------------------- + +invariant horizontal_control_has_a_closed_normalized_range + assert clamp_horizontal_control(CONTROL_LEFT - 1) == CONTROL_LEFT and clamp_horizontal_control(CONTROL_RIGHT + 1) == CONTROL_RIGHT + +invariant no_start_failure_can_be_classified_as_end + assert event_for_start_result(false, true, true, true) == EVENT_UNAVAILABLE and event_for_start_result(true, false, true, true) == EVENT_UNAVAILABLE and event_for_start_result(true, true, false, true) == EVENT_UNAVAILABLE and event_for_start_result(true, true, true, false) == EVENT_UNAVAILABLE + +invariant an_unavailable_event_never_enters_the_score_submit_path + assert score_submit_allowed(EVENT_UNAVAILABLE, false) == false + +invariant zero_distance_does_not_invalidate_a_real_end + assert completed_distance_is_valid(0) == true and score_submit_allowed(EVENT_END, false) == true + +invariant duplicate_end_delivery_cannot_submit_twice + assert score_submit_allowed(EVENT_END, true) == false + +invariant a_nonpositive_star_count_cannot_request_an_award + assert star_award_request_allowed(EVENT_END, false, true, 0) == false + +invariant the_client_cannot_own_the_award_cap + assert SERVER_OWNS_AWARD_DECISION == true and CLIENT_OWNS_AWARD_CAP == false + +invariant a_stale_generation_cannot_mount + assert continuation_is_current(4, 5, true) == false + +invariant a_detached_host_cannot_mount + assert continuation_is_current(5, 5, false) == false + +invariant cleanup_must_stop_drop_and_invalidate + assert cleanup_is_complete(true, true, true) == true and cleanup_is_complete(false, true, true) == false and cleanup_is_complete(true, false, true) == false and cleanup_is_complete(true, true, false) == false diff --git a/apps/website/public/t27/manifest.json b/apps/website/public/t27/manifest.json index 67a0bab095..74200a1579 100644 --- a/apps/website/public/t27/manifest.json +++ b/apps/website/public/t27/manifest.json @@ -1 +1 @@ -{"generatedFrom":{"repo":"gHashTag/t27","commit":"1cd2877f97e33efb574fa03c589f7368dc1385ba","shortCommit":"1cd2877f9","specsOrCompilerDirty":true},"wasmBytes":488709,"specCount":856,"totalLines":243619,"categories":{"specs/tri":150,"tri-net/specs":113,"specs/fpga":66,"specs/ml":60,"trios/apps":55,"chips/euler":46,"dmitrii-f-t27/trinity-memory":37,"trinity-fpga/specs":29,"trinity-fpga/t27":28,"specs/isa":16,"specs/numeric":16,"specs/physics":16,"specs/server":11,"specs/compiler":10,"specs/math":10,"specs/sacred":10,"specs/tutorial":8,"specs/ar":8,"specs/base":8,"specs/vsa":7,"trinity-fpga/src":7,"compiler/codegen":6,"specs/brain":6,"specs/github":5,"specs/lsp":5,"specs/sandbox":5,"specs/test_framework":5,"tt-trinity-corona/specs":5,"specs/demos":4,"specs/benchmarks":4,"specs/config":4,"specs/git":4,"specs/memory":4,"specs/nn":4,"specs/provider":4,"specs/storage":4,"specs/ternary":4,"compiler/cli":3,"compiler/runtime":3,"specs/account":3,"specs/api":3,"specs/boards":3,"specs/file":3,"specs/pins":3,"specs/pipeline":3,"specs/queen":3,"specs/runtime":3,"specs/shell":3,"specs/tools":3,"compiler/parser":2,"specs/bus":2,"specs/enrichment":2,"specs/sync":2,"tests":2,"trinity/src":2,"trios/.trinity":2,"bootstrap/specs":1,"compiler":1,"compiler/skill":1,"contrib/backend":1,"examples/fpga":1,"specs/auth":1,"specs/automation":1,"specs/cloud":1,"specs/conformance":1,"specs/depin":1,"specs/graph":1,"specs/hslm":1,"specs/interop":1,"specs/jit":1,"specs/neural":1,"specs/portable":1,"specs/vm":1,"root":1,"vscode-trinity-swe":1,"trinity/t27":1,"trios/policies":1,"tt-trinity-gamma/specs":1},"repos":[{"repo":"t27","commit":"1cd2877f97e33efb574fa03c589f7368dc1385ba","specs":575},{"repo":"tri-net","commit":"3ffd1bd0ac9f5aea18c407ec386ca179eb61a41e","specs":113},{"repo":"trinity-fpga","commit":"30248bb30f332f9b5f944ced9b87ff50711fe86c","specs":64},{"repo":"trinity","commit":"001190f7c4ab09ac1b7dcf2b40b0969e57549f42","specs":3},{"repo":"tt-trinity-corona","commit":"dddf6887e54aa847a9a0f4c835fbc392c8cc6c12","specs":5},{"repo":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","specs":37,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":0},{"repo":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","specs":58,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":13},{"repo":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","specs":1,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":48}],"duplicatesSkipped":129,"tags":{"has/functions":717,"has/tests":697,"has/imports":620,"src/t27":575,"health/ok":555,"has/structs":445,"health/warn":298,"has/invariants":285,"size/small":284,"size/medium":280,"has/loops":262,"domain/other":219,"has/benches":214,"size/large":197,"issue/type-errors":180,"has/enums":155,"issue/dropped-content":136,"src/tri-net":113,"domain/fpga":103,"size/tiny":95,"domain/numeric":71,"domain/ml":67,"src/trinity-fpga":64,"domain/collections":62,"src/trios":58,"domain/compiler":44,"src/dmitrii-f-t27/trinity-memory":37,"domain/network":34,"domain/tools":29,"has/constants-only":27,"has/switch":27,"domain/storage":24,"domain/math":20,"domain/utils":19,"domain/physics":18,"domain/isa":17,"domain/agent":15,"domain/pipeline":14,"domain/ternary":13,"domain/tutorial":13,"domain/base":10,"domain/sacred":10,"domain/testing":10,"domain/crypto":9,"domain/graph":9,"domain/encoding":8,"domain/reasoning":8,"domain/vsa":8,"domain/brain":6,"src/tt-trinity-corona":5,"health/fail":3,"src/trinity":3,"issue/backend-rejected":2,"src/tt-trinity-gamma":1},"health":{"ok":555,"warn":298,"fail":3},"backendFailures":{"verilog_hir":2},"featured":"specs/demos/hello_world.t27","totals":{"tokens":1177530,"nodes":354850,"lossAffected":136,"tcAffected":180},"discovery":{"spec":{"path":"public/t27/files/specs/catalog/discovery.t27","sha256":"f3c12d757eeb1ad37aacee0baa3c81e2bfe4905d0e799e3f778cae267324f043"},"at":"2026-09-12T04:07:23.198Z","worlds":[{"repo":"dmitrii-f-t27/trinity-memory","label":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","branch":"master","specs":37,"files":37,"duplicatesSkipped":0,"skippedLarge":0,"at":"2026-09-12T04:07:23.198Z"},{"repo":"ghashtag/trios","label":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","branch":"main","specs":58,"files":71,"duplicatesSkipped":13,"skippedLarge":0,"at":"2026-09-12T04:07:23.198Z"},{"repo":"ghashtag/tt-trinity-gamma","label":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","branch":"main","specs":1,"files":49,"duplicatesSkipped":48,"skippedLarge":0,"at":"2026-09-12T04:07:23.198Z"}]},"specs":[{"path":"specs/demos/hello_world.t27","category":"specs/demos","name":"hello_world","module":"hello-world","lines":99,"bytes":3666,"description":"hello_world.t27 -- start here The smallest spec that still shows every part of the language: constants, a type, functions, a test and an invariant. Read it top to bottom, then watch it become tokens, an AST, and five different target languages.","health":"ok","tokens":315,"nodes":107,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2670,"rust":734,"verilog":3889,"verilog_hir":515,"zig":1542},"repo":"t27","kinds":{"Module":3,"ConstDecl":6,"ExprLiteral":5,"ExprIdentifier":40,"StructDecl":1,"FnDecl":3,"StmtLocal":1,"ExprBinary":4,"StmtIf":2,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":2,"TestBlock":2,"StmtExpr":6,"ExprUnary":6,"ExprCall":18,"InvariantBlock":2},"tags":["domain/tutorial","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 6 constants. Carries 2 tests and 2 invariants. 99 lines compile to 315 tokens and 107 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer.","tutorial":true,"lesson":0,"featured":true},{"path":"specs/tutorial/01_values_and_types.t27","category":"specs/tutorial","name":"01_values_and_types","module":"tutorial-01-values","lines":71,"bytes":2554,"description":"01 — Values and types Lesson 1 of the t27 tutorial. Every constant carries an explicit width, because a spec has to say what reaches hardware rather than let a compiler pick for it. Nothing here is inferred.","health":"ok","tokens":154,"nodes":35,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1331,"rust":611,"verilog":2155,"verilog_hir":265,"zig":939},"repo":"t27","kinds":{"Module":1,"ConstDecl":16,"ExprLiteral":16,"InvariantBlock":2},"tags":["domain/tutorial","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 16 constants. Carries 2 invariants. 71 lines compile to 154 tokens and 35 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer.","tutorial":true,"lesson":1},{"path":"specs/tutorial/02_functions.t27","category":"specs/tutorial","name":"02_functions","module":"tutorial-02-functions","lines":84,"bytes":2529,"description":"02 — Functions Lesson 2. Parameter types and the return type are always written out. A signature is part of the specification, so it is never inferred.","health":"ok","tokens":236,"nodes":75,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1933,"rust":521,"verilog":3686,"verilog_hir":613,"zig":956},"repo":"t27","kinds":{"Module":1,"ConstDecl":2,"ExprLiteral":9,"FnDecl":6,"ExprReturn":6,"ExprBinary":4,"ExprIdentifier":18,"StmtLocal":2,"ExprCall":14,"ExprUnary":6,"TestBlock":3,"StmtExpr":4},"tags":["domain/tutorial","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 2 constants. Carries 3 tests. 84 lines compile to 236 tokens and 75 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer.","tutorial":true,"lesson":2},{"path":"specs/tutorial/03_operators.t27","category":"specs/tutorial","name":"03_operators","module":"tutorial-03-operators","lines":110,"bytes":3338,"description":"03 — Operators Lesson 3. Arithmetic, bitwise, shifts, comparison and the logical keywords. The bitwise group matters more here than in most languages: a spec that describes hardware spends most of its time on masks and shifts.","health":"ok","tokens":414,"nodes":143,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2985,"rust":1180,"verilog":5246,"verilog_hir":1156,"zig":1721},"repo":"t27","kinds":{"Module":1,"FnDecl":11,"StmtLocal":6,"ExprBinary":23,"ExprIdentifier":41,"ExprReturn":11,"ConstDecl":2,"ExprLiteral":16,"ExprUnary":10,"TestBlock":3,"StmtExpr":6,"ExprCall":13},"tags":["domain/tutorial","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 11 functions and 2 constants. Carries 3 tests. 110 lines compile to 414 tokens and 143 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer.","tutorial":true,"lesson":3},{"path":"specs/tutorial/04_control_flow.t27","category":"specs/tutorial","name":"04_control_flow","module":"tutorial-04-control-flow","lines":153,"bytes":4562,"description":"04 — Control flow Lesson 4. if/else as a statement and as an expression, while, for over a range, and break/continue. . One rule worth learning before you need it: `switch` belongs in lesson 06, and only in its expression form. The statement form does not survive","health":"ok","tokens":620,"nodes":248,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3366,"rust":1536,"verilog":5699,"verilog_hir":867,"zig":2401},"repo":"t27","kinds":{"Module":10,"ConstDecl":3,"ExprLiteral":40,"FnDecl":8,"StmtIf":3,"ExprBinary":18,"ExprIdentifier":64,"ExprReturn":10,"ExprIf":3,"StmtLocal":10,"ExprUnary":15,"ExprCall":35,"StmtWhile":4,"StmtAssign":7,"StmtFor":1,"StmtContinue":1,"StmtBreak":1,"TestBlock":4,"StmtExpr":11},"tags":["domain/tutorial","has/functions","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 3 constants. Carries 4 tests. 153 lines compile to 620 tokens and 248 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer.","tutorial":true,"lesson":4},{"path":"specs/tutorial/05_widths_and_casts.t27","category":"specs/tutorial","name":"05_widths_and_casts","module":"tutorial-05-widths","lines":116,"bytes":4411,"description":"05 — Widths and casts, and the one that catches everybody Lesson 5. Converting between widths, and the single sharpest edge in the language today: an integer literal types as i32, so arithmetic on a narrower mutable local fails the type check unless you say what you mean. . Everything below is measured against the compiler in this repository, not","health":"ok","tokens":319,"nodes":111,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2113,"rust":663,"verilog":3829,"verilog_hir":815,"zig":1266},"repo":"t27","kinds":{"Module":2,"FnDecl":6,"ExprReturn":6,"ExprCall":24,"ExprIdentifier":28,"StmtLocal":5,"StmtAssign":2,"ExprBinary":7,"ExprLiteral":17,"StmtWhile":1,"TestBlock":3,"StmtExpr":5,"ExprUnary":5},"tags":["domain/tutorial","has/functions","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions. Carries 3 tests. 116 lines compile to 319 tokens and 111 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer.","tutorial":true,"lesson":5},{"path":"specs/tutorial/06_structs_enums_switch.t27","category":"specs/tutorial","name":"06_structs_enums_switch","module":"tutorial-06-structs","lines":141,"bytes":4908,"description":"06 — Structs, enums, and switch Lesson 6. Grouping fields, naming a fixed set of states, and choosing between them. . The important rule in this file: `switch` is an EXPRESSION here. The statement form parses without complaint and then discards the body of the","health":"ok","tokens":459,"nodes":152,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3205,"rust":1299,"verilog":5192,"verilog_hir":735,"zig":2025},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":22,"ExprIdentifier":28,"StructDecl":1,"FnDecl":7,"ExprReturn":7,"ExprStructLit":2,"ExprFieldAccess":6,"EnumDecl":2,"EnumVariant":7,"ExprSwitch":3,"StmtLocal":2,"TestBlock":3,"ExprCall":27,"StmtExpr":9,"ExprUnary":10},"tags":["domain/tutorial","has/enums","has/functions","has/structs","has/switch","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions, 1 struct, 2 enums and 15 constants. Carries 3 tests. 141 lines compile to 459 tokens and 152 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer.","tutorial":true,"lesson":6},{"path":"specs/tutorial/07_tests_invariants_benches.t27","category":"specs/tutorial","name":"07_tests_invariants_benches","module":"tutorial-07-claims","lines":87,"bytes":2964,"description":"07 — Tests, invariants and benches Lesson 7, and the reason this language exists rather than a header file. A spec carries its own claims: examples that must hold, properties that must always hold, and the operations worth measuring. All three are emitted into every target, so the same claim is checked in Zig, C and Rust alike.","health":"ok","tokens":315,"nodes":112,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2773,"rust":434,"verilog":4759,"verilog_hir":420,"zig":1752},"repo":"t27","kinds":{"Module":1,"ConstDecl":4,"ExprLiteral":8,"FnDecl":2,"StmtLocal":3,"ExprBinary":4,"ExprIdentifier":40,"ExprIf":2,"ExprUnary":8,"ExprReturn":2,"ExprCall":22,"TestBlock":3,"StmtExpr":6,"InvariantBlock":3,"BenchBlock":2,"StmtAssign":2},"tags":["domain/tutorial","has/benches","has/functions","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 3 tests, 3 invariants and 2 benches. 87 lines compile to 315 tokens and 112 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer.","tutorial":true,"lesson":7},{"path":"specs/tutorial/08_modules_and_arrays.t27","category":"specs/tutorial","name":"08_modules_and_arrays","module":"tutorial-08-modules","lines":90,"bytes":2919,"description":"08 — Modules, visibility and arrays Lesson 8, the last one. How a spec names itself, what it exposes, how it pulls in another spec, and the array/index syntax used by every lookup table in the corpus. . After this, open specs/numeric/gf16.t27 -- it is a real spec built entirely","health":"ok","tokens":253,"nodes":70,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2246,"rust":529,"verilog":3646,"verilog_hir":427,"zig":1274},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":11,"FnDecl":3,"ExprReturn":3,"ExprBinary":1,"ExprIdentifier":14,"ExprIndex":2,"TestBlock":3,"StmtExpr":5,"ExprUnary":5,"ExprCall":15,"InvariantBlock":1},"tags":["domain/tutorial","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 3 tests and 1 invariant. 90 lines compile to 253 tokens and 70 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer.","tutorial":true,"lesson":8},{"path":"bootstrap/specs/physics/formula_registry.t27","category":"bootstrap/specs","name":"formula_registry","module":null,"lines":210,"bytes":6193,"description":"Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md SSOT for Trinity formula discovery","health":"ok","tokens":822,"nodes":364,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4270,"rust":2960,"verilog":8013,"verilog_hir":1685,"zig":2759},"repo":"t27","kinds":{"Module":1,"ConstDecl":4,"ExprLiteral":83,"ExprIdentifier":69,"FnDecl":32,"ExprReturn":32,"ExprCall":47,"ExprUnary":23,"ExprBinary":72,"StmtLocal":1},"tags":["domain/physics","has/functions","health/ok","size/medium","src/t27"],"summary":"Declares 32 functions and 4 constants. 210 lines compile to 822 tokens and 364 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.8 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/avs_controller_48.t27","category":"chips/euler","name":"avs_controller_48","module":"avs-controller-48","lines":607,"bytes":20060,"description":"avs_controller_48.t27 — 48-pin AVS Controller Adaptive voltage scaling controller for 48-pin configuration","health":"ok","tokens":2944,"nodes":877,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12673,"rust":5671,"verilog":19133,"verilog_hir":1898,"zig":11618},"repo":"t27","kinds":{"Module":7,"ConstDecl":12,"ExprLiteral":107,"EnumDecl":2,"EnumVariant":8,"StructDecl":4,"ExprIdentifier":187,"FnDecl":21,"ExprReturn":23,"ExprBinary":102,"ExprCall":105,"StmtLocal":8,"StmtIf":4,"StmtAssign":2,"StmtExpr":76,"ExprStructLit":9,"ExprFieldAccess":103,"TestBlock":37,"ExprUnary":60},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions, 4 structs, 2 enums and 12 constants. Carries 37 tests. 607 lines compile to 2,944 tokens and 877 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.7 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/avs_controller_96.t27","category":"chips/euler","name":"avs_controller_96","module":"avs-controller-96","lines":735,"bytes":24836,"description":"avs_controller_96.t27 — 96-pin AVS Controller Adaptive voltage scaling controller for 96-pin configuration","health":"warn","tokens":3521,"nodes":1085,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":16185,"rust":7908,"verilog":23298,"verilog_hir":2373,"zig":14936},"repo":"t27","kinds":{"Module":11,"ConstDecl":14,"ExprLiteral":134,"EnumDecl":3,"EnumVariant":13,"StructDecl":5,"ExprIdentifier":225,"FnDecl":28,"ExprReturn":30,"ExprBinary":122,"ExprCall":131,"StmtLocal":10,"StmtIf":6,"StmtAssign":6,"StmtExpr":86,"ExprStructLit":12,"ExprFieldAccess":142,"TestBlock":40,"ExprUnary":67},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 28 functions, 5 structs, 3 enums and 14 constants. Carries 40 tests. 735 lines compile to 3,521 tokens and 1,085 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 22.8 KB. Compiles with 1 type error."},{"path":"chips/euler/specs/fpga/avs_reconf.t27","category":"chips/euler","name":"avs_reconf","module":"avs-reconf","lines":702,"bytes":24801,"description":"avs_reconf.t27 — AVS Reconfiguration Module Dynamic AVS voltage/frequency reconfiguration support","health":"ok","tokens":3542,"nodes":1045,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15559,"rust":8600,"verilog":21090,"verilog_hir":1972,"zig":15599},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":129,"EnumDecl":3,"EnumVariant":17,"StructDecl":4,"ExprIdentifier":209,"FnDecl":23,"ExprReturn":23,"ExprStructLit":18,"ExprFieldAccess":189,"ExprBinary":98,"ExprCall":99,"StmtExpr":93,"ExprUnary":70,"StmtLocal":8,"ExprIf":3,"TestBlock":32},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 23 functions, 4 structs, 3 enums and 26 constants. Carries 32 tests. 702 lines compile to 3,542 tokens and 1,045 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 20.6 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/dfs_gate.t27","category":"chips/euler","name":"dfs_gate","module":"sacred-dfs_gate","lines":600,"bytes":22017,"description":"dfs_gate.t27 — Sacred Opcode 0xE7: Depth-First Search Gate Hardware acceleration for DFS traversal and pattern matching","health":"ok","tokens":3969,"nodes":675,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9082,"rust":4335,"verilog":15468,"verilog_hir":2066,"zig":9770},"repo":"t27","kinds":{"Module":7,"ConstDecl":11,"ExprLiteral":90,"StructDecl":5,"ExprIdentifier":143,"FnDecl":16,"ExprReturn":20,"ExprStructLit":7,"ExprFieldAccess":72,"ExprBinary":67,"ExprArrayLiteral":2,"StmtIf":5,"StmtLocal":19,"StmtAssign":9,"ExprIndex":7,"StmtFor":1,"ExprCall":64,"TestBlock":28,"StmtExpr":63,"ExprUnary":39},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 16 functions, 5 structs and 11 constants. Carries 28 tests. 600 lines compile to 3,969 tokens and 675 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.1 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/drowsy_ret.t27","category":"chips/euler","name":"drowsy_ret","module":"sacred-drowsy_ret","lines":716,"bytes":26247,"description":null,"health":"ok","tokens":4100,"nodes":117,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3538,"rust":2657,"verilog":5652,"verilog_hir":604,"zig":2340},"repo":"t27","kinds":{"Module":1,"ConstDecl":19,"ExprLiteral":19,"EnumDecl":2,"EnumVariant":12,"StructDecl":3,"ExprIdentifier":30,"FnDecl":7,"ExprReturn":6,"ExprBinary":10,"ExprFieldAccess":8},"tags":["domain/fpga","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 7 functions, 3 structs, 2 enums and 19 constants. 716 lines compile to 4,100 tokens and 117 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/fbb_active_path.t27","category":"chips/euler","name":"fbb_active_path","module":"fbb-active-path","lines":756,"bytes":26695,"description":"fbb_active_path.t27 — FPGA Feedback Bridge Active Path Active path management for FPGA feedback bridge","health":"ok","tokens":4002,"nodes":1123,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16298,"rust":9040,"verilog":22056,"verilog_hir":2461,"zig":15709},"repo":"t27","kinds":{"Module":3,"ConstDecl":24,"ExprLiteral":158,"EnumDecl":2,"EnumVariant":13,"StructDecl":4,"ExprIdentifier":216,"FnDecl":24,"ExprReturn":24,"ExprStructLit":18,"ExprFieldAccess":186,"ExprBinary":104,"StmtLocal":17,"StmtFor":1,"StmtAssign":6,"ExprIndex":15,"ExprCall":109,"StmtIf":1,"StmtExpr":93,"ExprUnary":71,"TestBlock":34},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 24 functions, 4 structs, 2 enums and 24 constants. Carries 34 tests. 756 lines compile to 4,002 tokens and 1,123 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 21.5 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/fp8_e4m3.t27","category":"chips/euler","name":"fp8_e4m3","module":"triformat-fp8_e4m3","lines":1046,"bytes":32652,"description":"fp8_e4m3.t27 — FP8 E4M3 8-bit Floating Point 8-bit float with 4 exponent, 3 mantissa bits (no implicit leading bit) OCP FP8 format optimized for neural network training Range: ~-240 to ~240, precision: ~6-7 significant bits","health":"warn","tokens":6035,"nodes":1575,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":17636,"rust":9369,"verilog":33188,"verilog_hir":2181,"zig":18818},"repo":"t27","kinds":{"Module":34,"ConstDecl":22,"ExprLiteral":187,"ExprIdentifier":361,"FnDecl":36,"StmtLocal":55,"ExprBinary":215,"ExprReturn":54,"ExprIf":17,"ExprUnary":94,"ExprCall":257,"StmtIf":29,"StmtAssign":10,"TestBlock":74,"StmtExpr":130},"tags":["domain/fpga","has/functions","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 36 functions and 22 constants. Carries 74 tests. 1046 lines compile to 6,035 tokens and 1,575 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 32.4 KB. Compiles with 2 type errors."},{"path":"chips/euler/specs/fpga/fp8_e5m2.t27","category":"chips/euler","name":"fp8_e5m2","module":"triformat-fp8_e5m2","lines":1212,"bytes":38826,"description":"fp8_e5m2.t27 — FP8 E5M2 8-bit Floating Point 8-bit float with 5 exponent, 2 mantissa bits (with implicit leading bit) OCP FP8 format optimized for inference and wide dynamic range Range: ~-57k to ~57k, precision: ~3-4 significant bits","health":"warn","tokens":7267,"nodes":1852,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":20951,"rust":10713,"verilog":39194,"verilog_hir":2617,"zig":22296},"repo":"t27","kinds":{"Module":44,"ConstDecl":22,"ExprLiteral":215,"ExprIdentifier":433,"FnDecl":44,"StmtLocal":71,"ExprBinary":248,"ExprReturn":60,"ExprIf":17,"ExprUnary":103,"ExprCall":297,"StmtIf":32,"StmtAssign":18,"StmtFor":7,"ExprFieldAccess":5,"StmtBreak":1,"ExprIndex":7,"TestBlock":82,"StmtExpr":146},"tags":["domain/fpga","has/functions","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 44 functions and 22 constants. Carries 82 tests. 1212 lines compile to 7,267 tokens and 1,852 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 38.3 KB. Compiles with 2 type errors."},{"path":"chips/euler/specs/fpga/gf128.t27","category":"chips/euler","name":"gf128","module":"GF128","lines":358,"bytes":10740,"description":"t27/specs/numeric/gf128.t27 GoldenFloat128 - 128-bit φ-structured floating point with extended range NUMERIC-STANDARD-001 Agent 5 (P1) Paper §6.7: Extended range for high-dynamic-range applications","health":"ok","tokens":1470,"nodes":486,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8811,"rust":4090,"verilog":15830,"verilog_hir":1032,"zig":9858},"repo":"t27","kinds":{"Module":11,"UseDecl":4,"ConstDecl":7,"ExprLiteral":71,"StructDecl":1,"ExprIdentifier":98,"FnDecl":13,"StmtIf":7,"ExprBinary":71,"ExprReturn":19,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":30,"ExprIf":6,"ExprUnary":6,"ExprCall":14,"StmtWhile":3,"StmtAssign":7,"TestBlock":17,"StmtExpr":49,"InvariantBlock":13,"BenchBlock":5},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 17 tests, 13 invariants and 5 benches. 358 lines compile to 1,470 tokens and 486 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/gf16_to_fp16.t27","category":"chips/euler","name":"gf16_to_fp16","module":"gf16-to-fp16","lines":574,"bytes":18936,"description":null,"health":"fail","tokens":3481,"nodes":973,"depth":14,"loss":0,"tcErrors":3,"failedBackends":["verilog_hir"],"outBytes":{"c":10720,"rust":4673,"verilog":18190,"verilog_hir":null,"zig":10574},"repo":"t27","kinds":{"Module":26,"ConstDecl":13,"ExprLiteral":140,"ExprIdentifier":203,"StructDecl":4,"FnDecl":19,"ExprReturn":29,"ExprStructLit":16,"ExprFieldAccess":131,"ExprCall":102,"ExprBinary":96,"StmtLocal":18,"StmtIf":14,"ExprUnary":41,"StmtAssign":34,"TestBlock":26,"StmtExpr":61},"tags":["domain/fpga","has/functions","has/structs","has/tests","health/fail","issue/backend-rejected","issue/type-errors","size/large","src/t27"],"summary":"Declares 19 functions, 4 structs and 13 constants. Carries 26 tests. 574 lines compile to 3,481 tokens and 973 AST nodes, depth 14. Emits 4 of 5 backends; largest is Verilog at 17.8 KB. Rejected by Verilog (HIR)."},{"path":"chips/euler/specs/fpga/gf16_to_posit16.t27","category":"chips/euler","name":"gf16_to_posit16","module":"gf16-to-posit16","lines":664,"bytes":20622,"description":"gf16_to_posit16.t27 — GF16 to Posit16 Converter GoldenFloat16 to Posit type 16 (unum 1.0) format conversion","health":"warn","tokens":3526,"nodes":1045,"depth":13,"loss":0,"tcErrors":12,"failedBackends":[],"outBytes":{"c":11873,"rust":7280,"verilog":20464,"verilog_hir":1859,"zig":11623},"repo":"t27","kinds":{"Module":34,"ConstDecl":12,"ExprLiteral":164,"ExprIdentifier":231,"StructDecl":5,"FnDecl":22,"ExprReturn":28,"ExprStructLit":5,"ExprFieldAccess":69,"ExprCall":106,"ExprBinary":128,"StmtLocal":25,"StmtIf":21,"StmtAssign":44,"ExprUnary":48,"StmtWhile":4,"StmtBreak":2,"ExprIf":3,"StmtFor":1,"TestBlock":28,"StmtExpr":65},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 22 functions, 5 structs and 12 constants. Carries 28 tests. 664 lines compile to 3,526 tokens and 1,045 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.0 KB. Compiles with 12 type errors."},{"path":"chips/euler/specs/fpga/gf256.t27","category":"chips/euler","name":"gf256","module":"GF256","lines":336,"bytes":9935,"description":"t27/specs/numeric/gf256.t27 GoldenFloat256 0 256-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 11 (P1)","health":"warn","tokens":1592,"nodes":633,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8199,"rust":5222,"verilog":13893,"verilog_hir":816,"zig":8540},"repo":"t27","kinds":{"Module":19,"UseDecl":2,"ConstDecl":8,"ExprLiteral":110,"StructDecl":1,"ExprIdentifier":148,"FnDecl":11,"StmtIf":15,"ExprBinary":117,"ExprReturn":22,"ExprStructLit":2,"ExprFieldAccess":57,"StmtLocal":47,"ExprIf":5,"ExprUnary":6,"ExprCall":9,"StmtAssign":11,"StmtWhile":3,"TestBlock":9,"StmtExpr":21,"InvariantBlock":8,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 11 functions, 1 struct and 8 constants. Carries 9 tests, 8 invariants and 2 benches. 336 lines compile to 1,592 tokens and 633 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.6 KB. Compiles with 2 type errors."},{"path":"chips/euler/specs/fpga/gf32_to_fp32.t27","category":"chips/euler","name":"gf32_to_fp32","module":"gf32-to-fp32","lines":757,"bytes":25067,"description":"gf32_to_fp32.t27 — GF32 to FP32 Converter GoldenFloat32 to IEEE 754 binary32 format conversion","health":"fail","tokens":4698,"nodes":1275,"depth":15,"loss":0,"tcErrors":8,"failedBackends":["verilog_hir"],"outBytes":{"c":13733,"rust":6171,"verilog":23398,"verilog_hir":null,"zig":13832},"repo":"t27","kinds":{"Module":37,"ConstDecl":13,"ExprLiteral":178,"ExprIdentifier":272,"StructDecl":4,"FnDecl":27,"ExprReturn":39,"ExprStructLit":20,"ExprFieldAccess":165,"ExprCall":134,"ExprBinary":138,"StmtLocal":21,"StmtIf":21,"ExprUnary":52,"StmtAssign":45,"TestBlock":34,"StmtExpr":75},"tags":["domain/fpga","has/functions","has/structs","has/tests","health/fail","issue/backend-rejected","issue/type-errors","size/large","src/t27"],"summary":"Declares 27 functions, 4 structs and 13 constants. Carries 34 tests. 757 lines compile to 4,698 tokens and 1,275 AST nodes, depth 15. Emits 4 of 5 backends; largest is Verilog at 22.8 KB. Rejected by Verilog (HIR)."},{"path":"chips/euler/specs/fpga/gf64.t27","category":"chips/euler","name":"gf64","module":"GF64","lines":320,"bytes":9095,"description":"t27/specs/numeric/gf64.t27 GoldenFloat64 - 64-bit φ-structured floating point NUMERIC-STANDARD-001 Agent 4 (P1)","health":"ok","tokens":1320,"nodes":425,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7523,"rust":3303,"verilog":13143,"verilog_hir":930,"zig":8487},"repo":"t27","kinds":{"Module":11,"UseDecl":4,"ConstDecl":7,"ExprLiteral":62,"StructDecl":1,"ExprIdentifier":85,"FnDecl":10,"StmtIf":7,"ExprBinary":64,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":28,"StmtLocal":23,"ExprIf":5,"ExprUnary":6,"ExprCall":10,"StmtWhile":3,"StmtAssign":7,"TestBlock":14,"StmtExpr":43,"InvariantBlock":13,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 1 struct and 7 constants. Carries 14 tests, 13 invariants and 4 benches. 320 lines compile to 1,320 tokens and 425 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/holo_mux_x4.t27","category":"chips/euler","name":"holo_mux_x4","module":"sacred-holo_mux_x4","lines":581,"bytes":21272,"description":"holo_mux_x4.t27 — Sacred Opcode 0xE6: Holographic 4x Multiplexer Hardware multiplexer for holographic data paths with 4-way select","health":"warn","tokens":4128,"nodes":298,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5628,"rust":4234,"verilog":8727,"verilog_hir":1009,"zig":4301},"repo":"t27","kinds":{"Module":14,"ConstDecl":14,"ExprLiteral":34,"StructDecl":4,"ExprIdentifier":91,"FnDecl":13,"ExprReturn":15,"ExprBinary":16,"ExprFieldAccess":42,"StmtIf":8,"StmtLocal":12,"StmtAssign":6,"ExprCall":16,"ExprIndex":4,"ExprStructLit":4,"StmtFor":5},"tags":["domain/fpga","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 4 structs and 14 constants. 581 lines compile to 4,128 tokens and 298 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 1 type error."},{"path":"chips/euler/specs/fpga/int4.t27","category":"chips/euler","name":"int4","module":"Int4","lines":334,"bytes":8538,"description":"t27/specs/numeric/int4.t27 Int4 - 4-bit signed integer NUMERIC-STANDARD-001 Agent 9 (P1)","health":"ok","tokens":1655,"nodes":298,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6850,"rust":1962,"verilog":14629,"verilog_hir":953,"zig":8156},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"ConstDecl":2,"ExprLiteral":13,"StructDecl":1,"ExprIdentifier":47,"FnDecl":17,"StmtLocal":13,"ExprIf":3,"ExprBinary":18,"ExprUnary":5,"ExprFieldAccess":5,"StmtIf":2,"StmtAssign":1,"ExprReturn":18,"ExprStructLit":1,"ExprCall":27,"TestBlock":28,"StmtExpr":76,"InvariantBlock":11,"BenchBlock":5},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 17 functions, 1 struct and 2 constants. Carries 28 tests, 11 invariants and 5 benches. 334 lines compile to 1,655 tokens and 298 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.3 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/int8.t27","category":"chips/euler","name":"int8","module":"Int8","lines":493,"bytes":13029,"description":"t27/specs/numeric/int8.t27 Int8 - 8-bit signed integer NUMERIC-STANDARD-001 Agent 10 (P1)","health":"warn","tokens":2646,"nodes":463,"depth":9,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9729,"rust":2936,"verilog":20392,"verilog_hir":1246,"zig":12222},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"ConstDecl":2,"ExprLiteral":24,"StructDecl":1,"ExprIdentifier":72,"FnDecl":24,"StmtLocal":23,"ExprIf":7,"ExprBinary":29,"ExprUnary":5,"ExprFieldAccess":13,"StmtIf":2,"StmtAssign":1,"ExprReturn":25,"ExprStructLit":4,"ExprCall":35,"TestBlock":43,"StmtExpr":124,"InvariantBlock":18,"BenchBlock":6},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 24 functions, 1 struct and 2 constants. Carries 43 tests, 18 invariants and 6 benches. 493 lines compile to 2,646 tokens and 463 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 2 items dropped by error recovery."},{"path":"chips/euler/specs/fpga/lane_l_precheck.t27","category":"chips/euler","name":"lane_l_precheck","module":"sacred-lane_precheck","lines":493,"bytes":17229,"description":"lane_l_precheck.t27 — Sacred Opcode 0xDF: LUT Lookup Precheck Hardware pre-check for LUT lookup operations Validates lane readiness, checks LUT access permissions, and prepares address","health":"warn","tokens":3044,"nodes":31,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1319,"rust":737,"verilog":2233,"verilog_hir":269,"zig":644},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":11,"EnumDecl":1,"EnumVariant":4,"ExprIdentifier":1,"StructDecl":1},"tags":["domain/fpga","has/constants-only","has/enums","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 1 struct, 1 enum and 12 constants. 493 lines compile to 3,044 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"chips/euler/specs/fpga/lut_npu_81_entry.t27","category":"chips/euler","name":"lut_npu_81_entry","module":"sacred-lut_npu_81_entry","lines":419,"bytes":13484,"description":"lut_npu_81_entry.t27 — Sacred Opcode 0xE3: LUT NPU 81-Entry Lookup Hardware LUT for NPU operations with 81 entries (9×9 transform)","health":"warn","tokens":2475,"nodes":273,"depth":13,"loss":1,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5072,"rust":3157,"verilog":7761,"verilog_hir":1120,"zig":3540},"repo":"t27","kinds":{"Module":10,"ConstDecl":8,"ExprLiteral":37,"StructDecl":3,"ExprIdentifier":80,"EnumDecl":1,"EnumVariant":8,"FnDecl":11,"ExprReturn":11,"ExprBinary":35,"ExprFieldAccess":19,"ExprStructLit":3,"ExprCall":16,"StmtLocal":13,"StmtFor":4,"StmtIf":4,"StmtAssign":4,"ExprIf":2,"ExprIndex":4},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 11 functions, 3 structs, 1 enum and 8 constants. 419 lines compile to 2,475 tokens and 273 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Compiles with 1 item dropped by error recovery and 1 type error."},{"path":"chips/euler/specs/fpga/nf4.t27","category":"chips/euler","name":"nf4","module":"NF4","lines":313,"bytes":8164,"description":"t27/specs/numeric/nf4.t27 NormalFloat4 - 4-bit normalized float quantization format (Google) NUMERIC-STANDARD-001 Agent 11 (P1) NF4 format: - Represents normalized values in [0, 1] - Uses a 4-bit normalized representation","health":"ok","tokens":1284,"nodes":261,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6543,"rust":1693,"verilog":13183,"verilog_hir":914,"zig":7705},"repo":"t27","kinds":{"Module":5,"UseDecl":2,"ConstDecl":3,"ExprLiteral":20,"StructDecl":1,"ExprIdentifier":36,"FnDecl":15,"StmtLocal":5,"ExprIf":2,"ExprBinary":21,"ExprFieldAccess":10,"StmtIf":3,"StmtAssign":1,"ExprReturn":15,"ExprStructLit":1,"ExprCall":14,"StmtExpr":64,"ExprUnary":1,"TestBlock":24,"InvariantBlock":14,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions, 1 struct and 3 constants. Carries 24 tests, 14 invariants and 4 benches. 313 lines compile to 1,284 tokens and 261 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/null_pe.t27","category":"chips/euler","name":"null_pe","module":"sacred-null_pe","lines":568,"bytes":20320,"description":"null_pe.t27 — Sacred Opcode 0xEA: Null Processing Element Hardware null PE (processing element) for sparse acceleration","health":"warn","tokens":3694,"nodes":660,"depth":11,"loss":1,"tcErrors":4,"failedBackends":[],"outBytes":{"c":9376,"rust":5003,"verilog":14296,"verilog_hir":1369,"zig":8482},"repo":"t27","kinds":{"Module":23,"ConstDecl":16,"ExprLiteral":90,"EnumDecl":1,"EnumVariant":4,"StructDecl":4,"ExprIdentifier":159,"FnDecl":19,"ExprReturn":23,"ExprBinary":76,"ExprFieldAccess":68,"ExprStructLit":12,"ExprIf":3,"StmtExpr":31,"StmtLocal":16,"StmtFor":9,"StmtIf":7,"ExprCall":48,"StmtAssign":10,"StmtBreak":1,"ExprSwitch":1,"ExprIndex":4,"TestBlock":14,"ExprUnary":21},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 19 functions, 4 structs, 1 enum and 16 constants. Carries 14 tests. 568 lines compile to 3,694 tokens and 660 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 14.0 KB. Compiles with 1 item dropped by error recovery and 4 type errors."},{"path":"chips/euler/specs/fpga/posit16.t27","category":"chips/euler","name":"posit16","module":"triformat-posit16","lines":979,"bytes":32004,"description":"posit16.t27 — Posit Type 16 (Type-2 with ES=1, unum 1.0 format) 16-bit posit format with 1 exponent bit (ES=1) and 0 useed bits Alternative name: posit<16,1> Range: ~-3.8e4 to ~3.8e4, precision: ~1-2 significant bits at extremes, ~10 at 1.0","health":"warn","tokens":5421,"nodes":1544,"depth":13,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":17804,"rust":10661,"verilog":32115,"verilog_hir":2131,"zig":17940},"repo":"t27","kinds":{"Module":56,"ConstDecl":12,"ExprLiteral":174,"ExprIdentifier":407,"StructDecl":1,"FnDecl":34,"StmtLocal":72,"ExprBinary":221,"StmtFor":7,"StmtIf":41,"StmtAssign":20,"StmtBreak":4,"ExprReturn":57,"ExprIf":13,"ExprUnary":56,"ExprCall":227,"ExprStructLit":1,"ExprFieldAccess":12,"StmtExpr":82,"StmtWhile":1,"ExprIndex":1,"TestBlock":45},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 34 functions, 1 struct and 12 constants. Carries 45 tests. 979 lines compile to 5,421 tokens and 1,544 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 31.4 KB. Compiles with 5 type errors."},{"path":"chips/euler/specs/fpga/purkinje_thermal_gate.t27","category":"chips/euler","name":"purkinje_thermal_gate","module":"purkinje-thermal-gate","lines":704,"bytes":24460,"description":"purkinje_thermal_gate.t27 — Purkinje Thermal Gate Thermally-gated activation inspired by Purkinje neural dynamics","health":"ok","tokens":3682,"nodes":1063,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14852,"rust":6797,"verilog":20709,"verilog_hir":1880,"zig":14728},"repo":"t27","kinds":{"Module":15,"ConstDecl":18,"ExprLiteral":136,"EnumDecl":2,"EnumVariant":8,"StructDecl":3,"ExprIdentifier":208,"FnDecl":22,"ExprReturn":26,"ExprStructLit":13,"ExprFieldAccess":159,"ExprUnary":77,"ExprBinary":102,"StmtIf":8,"ExprCall":114,"StmtLocal":8,"StmtAssign":5,"TestBlock":39,"StmtExpr":100},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 22 functions, 3 structs, 2 enums and 18 constants. Carries 39 tests. 704 lines compile to 3,682 tokens and 1,063 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.2 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/sparse_mask.t27","category":"chips/euler","name":"sparse_mask","module":"sacred-sparse_mask","lines":556,"bytes":17492,"description":"sparse_mask.t27 — Sacred Opcode 0xE8: Sparse Mask (Sparse Skip 2) Hardware for generating and applying sparse tensor masks","health":"warn","tokens":3158,"nodes":355,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":5066,"rust":3252,"verilog":8130,"verilog_hir":1468,"zig":4013},"repo":"t27","kinds":{"Module":17,"ConstDecl":16,"ExprLiteral":62,"StructDecl":4,"ExprIdentifier":102,"FnDecl":12,"StmtLocal":16,"StmtWhile":2,"ExprBinary":44,"StmtAssign":23,"ExprReturn":11,"ExprCall":21,"StmtFor":3,"StmtIf":4,"ExprFieldAccess":14,"ExprSwitch":1,"ExprStructLit":1,"ExprIndex":2},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/switch","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 12 functions, 4 structs and 16 constants. 556 lines compile to 3,158 tokens and 355 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 7.9 KB. Compiles with 4 type errors."},{"path":"chips/euler/specs/fpga/sparse_skip.t27","category":"chips/euler","name":"sparse_skip","module":"sacred-sparse_skip","lines":476,"bytes":15117,"description":"sparse_skip.t27 — Sacred Opcode 0xE1: Sparse Skip Operation Hardware acceleration for sparse tensor operations with zero-skipping","health":"warn","tokens":2985,"nodes":630,"depth":10,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":8360,"rust":4128,"verilog":13457,"verilog_hir":1162,"zig":8132},"repo":"t27","kinds":{"Module":11,"ConstDecl":8,"ExprLiteral":98,"EnumDecl":1,"EnumVariant":4,"StructDecl":3,"ExprIdentifier":124,"FnDecl":14,"ExprReturn":14,"ExprBinary":69,"ExprIf":2,"ExprUnary":41,"StmtLocal":20,"StmtFor":7,"StmtIf":2,"ExprCall":67,"StmtAssign":6,"ExprStructLit":7,"ExprFieldAccess":51,"ExprIndex":6,"StmtWhile":1,"TestBlock":21,"StmtExpr":53},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 14 functions, 3 structs, 1 enum and 8 constants. Carries 21 tests. 476 lines compile to 2,985 tokens and 630 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 13.1 KB. Compiles with 3 type errors."},{"path":"chips/euler/specs/fpga/spec_exit.t27","category":"chips/euler","name":"spec_exit","module":"sacred-spec_exit","lines":541,"bytes":19745,"description":"spec_exit.t27 — Sacred Opcode 0xEB: Speculative Exit Hardware for speculative exit and recovery","health":"ok","tokens":3140,"nodes":730,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11376,"rust":5841,"verilog":16952,"verilog_hir":1700,"zig":10561},"repo":"t27","kinds":{"Module":6,"ConstDecl":17,"ExprLiteral":81,"EnumDecl":2,"EnumVariant":13,"StructDecl":3,"ExprIdentifier":155,"FnDecl":21,"ExprReturn":21,"ExprBinary":80,"ExprFieldAccess":110,"ExprStructLit":8,"ExprCall":68,"StmtLocal":8,"StmtIf":3,"StmtAssign":3,"ExprIf":1,"TestBlock":26,"StmtExpr":60,"ExprUnary":44},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions, 3 structs, 2 enums and 17 constants. Carries 26 tests. 541 lines compile to 3,140 tokens and 730 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Clean through every layer."},{"path":"chips/euler/specs/fpga/stoch_round.t27","category":"chips/euler","name":"stoch_round","module":"sacred-stoch_round","lines":575,"bytes":19164,"description":"stoch_round.t27 — Sacred Opcode 0xE9: Stochastic Rounding Hardware stochastic rounding for quantization","health":"warn","tokens":3632,"nodes":1074,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":11522,"rust":6855,"verilog":18337,"verilog_hir":1313,"zig":11697},"repo":"t27","kinds":{"Module":29,"ConstDecl":17,"ExprLiteral":135,"StructDecl":3,"ExprIdentifier":285,"FnDecl":12,"ExprReturn":17,"ExprStructLit":18,"ExprFieldAccess":99,"ExprIf":7,"ExprBinary":139,"StmtLocal":48,"StmtAssign":32,"ExprCall":75,"StmtIf":14,"ExprUnary":53,"ExprSwitch":1,"StmtFor":2,"ExprIndex":4,"TestBlock":26,"StmtExpr":58},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/switch","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 12 functions, 3 structs and 17 constants. Carries 26 tests. 575 lines compile to 3,632 tokens and 1,074 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 17.9 KB. Compiles with 5 type errors."},{"path":"chips/euler/specs/fpga/subth_clk.t27","category":"chips/euler","name":"subth_clk","module":"sacred-subth_clk","lines":478,"bytes":17539,"description":"subth_clk.t27 — Sacred Opcode 0xE5: Sub-threshold Clock Gating Hardware for sub-threshold clock gating for power reduction","health":"warn","tokens":2862,"nodes":646,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10177,"rust":4457,"verilog":17524,"verilog_hir":1438,"zig":10580},"repo":"t27","kinds":{"Module":5,"ConstDecl":11,"ExprLiteral":96,"EnumDecl":2,"EnumVariant":7,"StructDecl":3,"ExprIdentifier":119,"FnDecl":14,"ExprReturn":16,"ExprBinary":77,"ExprFieldAccess":57,"ExprStructLit":4,"StmtLocal":13,"ExprIf":1,"StmtIf":3,"ExprCall":85,"StmtFor":1,"TestBlock":37,"StmtExpr":57,"ExprUnary":38},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 14 functions, 3 structs, 2 enums and 11 constants. Carries 37 tests. 478 lines compile to 2,862 tokens and 646 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"chips/euler/specs/numeric/binary16.t27","category":"chips/euler","name":"binary16","module":"Binary16","lines":420,"bytes":12171,"description":"t27/specs/numeric/binary16.t27 Binary16 - Binary packed 16-bit format (3 bits per integer) NUMERIC-STANDARD-001 Agent 13 (P1) Binary16 format: - Packs 5 signed integers (3 bits each) into 16 bits - Each integer range: -4 to 3","health":"warn","tokens":2331,"nodes":446,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":9115,"rust":2957,"verilog":19728,"verilog_hir":1098,"zig":10826},"repo":"t27","kinds":{"Module":13,"UseDecl":2,"ConstDecl":5,"ExprLiteral":37,"StructDecl":1,"ExprIdentifier":95,"FnDecl":18,"StmtIf":7,"ExprBinary":40,"ExprReturn":23,"StmtLocal":19,"ExprFieldAccess":12,"ExprIf":2,"ExprUnary":5,"StmtAssign":4,"ExprStructLit":2,"StmtFor":5,"ExprCall":19,"ExprIndex":2,"ExprArrayLiteral":1,"TestBlock":35,"StmtExpr":83,"InvariantBlock":10,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 18 functions, 1 struct and 5 constants. Carries 35 tests, 10 invariants and 6 benches. 420 lines compile to 2,331 tokens and 446 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.3 KB. Compiles with 2 type errors."},{"path":"chips/euler/specs/numeric/formats.t27","category":"chips/euler","name":"formats","module":"Formats","lines":538,"bytes":17523,"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","health":"ok","tokens":1601,"nodes":224,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6234,"rust":1013,"verilog":15020,"verilog_hir":698,"zig":8733},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":8,"ExprLiteral":8,"FnDecl":6,"EnumDecl":1,"EnumVariant":21,"TestBlock":43,"StmtExpr":124,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 6 functions, 1 enum and 8 constants. Carries 43 tests, 6 invariants and 4 benches. 538 lines compile to 1,601 tokens and 224 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 14.7 KB. Clean through every layer."},{"path":"chips/euler/specs/numeric/gf12.t27","category":"chips/euler","name":"gf12","module":"GF12","lines":482,"bytes":16369,"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 0 12-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 4 (P1)","health":"warn","tokens":1979,"nodes":647,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9881,"rust":4274,"verilog":19274,"verilog_hir":1059,"zig":11436},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":27,"StmtExpr":64,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 27 tests, 14 invariants and 6 benches. 482 lines compile to 1,979 tokens and 647 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.8 KB. Compiles with 5 type errors."},{"path":"chips/euler/specs/numeric/gf128.t27","category":"chips/euler","name":"gf128","module":"triformat-gf128","lines":506,"bytes":17137,"description":"gf128.t27 — GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 28 exponent + 99 mantissa Bit layout: [S(1) E(28) M(99)] = [127:127][126:99][98:0] Extended range format for high-precision scientific computing","health":"ok","tokens":2514,"nodes":762,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9715,"rust":6413,"verilog":16944,"verilog_hir":1753,"zig":9067},"repo":"t27","kinds":{"Module":15,"ConstDecl":19,"ExprLiteral":91,"ExprIdentifier":195,"StructDecl":1,"FnDecl":25,"ExprReturn":39,"ExprStructLit":2,"ExprFieldAccess":10,"ExprCall":127,"ExprBinary":97,"StmtLocal":32,"ExprIf":14,"ExprUnary":29,"StmtIf":14,"TestBlock":19,"StmtExpr":33},"tags":["domain/numeric","has/functions","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 25 functions, 1 struct and 19 constants. Carries 19 tests. 506 lines compile to 2,514 tokens and 762 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 16.5 KB. Clean through every layer."},{"path":"chips/euler/specs/numeric/gf16.t27","category":"chips/euler","name":"gf16","module":"triformat-gf16","lines":3437,"bytes":101513,"description":"gf16.t27 0 GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0] 12 + 1/34 = 3 | TRINITY","health":"ok","tokens":16290,"nodes":6744,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":88131,"rust":19607,"verilog":169609,"verilog_hir":2914,"zig":83320},"repo":"t27","kinds":{"Module":173,"ConstDecl":20,"ExprLiteral":978,"ExprIdentifier":1471,"FnDecl":53,"StmtLocal":724,"ExprBinary":274,"ExprReturn":160,"ExprIf":18,"ExprUnary":408,"ExprCall":1446,"StmtIf":118,"StmtAssign":104,"StmtFor":47,"TestBlock":191,"StmtExpr":411,"ExprIndex":3,"InvariantBlock":98,"ExprFieldAccess":1,"ExprArrayLiteral":1,"BenchBlock":45},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 53 functions and 20 constants. Carries 191 tests, 98 invariants and 45 benches. 3437 lines compile to 16,290 tokens and 6,744 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 165.6 KB. Clean through every layer."},{"path":"chips/euler/specs/numeric/gf20.t27","category":"chips/euler","name":"gf20","module":"GF20","lines":469,"bytes":15992,"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 0 20-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 6 (P1)","health":"warn","tokens":1927,"nodes":639,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9537,"rust":4297,"verilog":18742,"verilog_hir":1062,"zig":10908},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,927 tokens and 639 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"chips/euler/specs/numeric/gf24.t27","category":"chips/euler","name":"gf24","module":"GF24","lines":469,"bytes":16040,"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 0 24-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 7 (P1)","health":"warn","tokens":1933,"nodes":640,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9579,"rust":4328,"verilog":18783,"verilog_hir":1074,"zig":10948},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":40,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,933 tokens and 640 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"chips/euler/specs/numeric/gf256.t27","category":"chips/euler","name":"gf256","module":"triformat-gf256","lines":595,"bytes":20164,"description":"gf256.t27 — GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 32 exponent + 223 mantissa Bit layout: [S(1) E(32) M(223)] = [255:255][254:223][222:0] Maximum precision format for scientific computing and simulation","health":"ok","tokens":3250,"nodes":1094,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11484,"rust":7211,"verilog":20030,"verilog_hir":2273,"zig":10948},"repo":"t27","kinds":{"Module":19,"ConstDecl":11,"ExprLiteral":183,"StructDecl":1,"ExprIdentifier":206,"FnDecl":26,"ExprReturn":42,"ExprStructLit":2,"ExprFieldAccess":68,"ExprArrayLiteral":2,"StmtLocal":30,"ExprCall":142,"StmtAssign":14,"ExprIndex":66,"ExprBinary":134,"ExprIf":14,"ExprUnary":40,"StmtIf":17,"TestBlock":29,"StmtExpr":48},"tags":["domain/numeric","has/functions","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 26 functions, 1 struct and 11 constants. Carries 29 tests. 595 lines compile to 3,250 tokens and 1,094 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Clean through every layer."},{"path":"chips/euler/specs/numeric/gf32.t27","category":"chips/euler","name":"gf32","module":"GF32","lines":480,"bytes":16589,"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 0 32-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 8 (P1)","health":"warn","tokens":1934,"nodes":641,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9779,"rust":4324,"verilog":18871,"verilog_hir":1074,"zig":11206},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":95,"StructDecl":1,"ExprIdentifier":136,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 14 invariants and 6 benches. 480 lines compile to 1,934 tokens and 641 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.4 KB. Compiles with 5 type errors."},{"path":"chips/euler/specs/numeric/gf4.t27","category":"chips/euler","name":"gf4","module":"GF4","lines":306,"bytes":11167,"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 0 4-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 2 (P1)","health":"ok","tokens":1017,"nodes":265,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5819,"rust":1237,"verilog":10517,"verilog_hir":532,"zig":7261},"repo":"t27","kinds":{"Module":13,"UseDecl":2,"ConstDecl":7,"ExprLiteral":33,"StructDecl":1,"ExprIdentifier":29,"FnDecl":6,"StmtIf":8,"ExprBinary":22,"ExprReturn":14,"ExprStructLit":7,"ExprFieldAccess":19,"StmtLocal":8,"ExprCall":2,"ExprUnary":2,"ExprIf":1,"TestBlock":18,"StmtExpr":58,"InvariantBlock":13,"BenchBlock":2},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 7 constants. Carries 18 tests, 13 invariants and 2 benches. 306 lines compile to 1,017 tokens and 265 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"chips/euler/specs/numeric/gf64.t27","category":"chips/euler","name":"gf64","module":"triformat-gf64","lines":764,"bytes":24203,"description":"gf64.t27 — GoldenFloat64 Encode/Decode GF64: 64-bit floating point with 1 sign + 18 exponent + 45 mantissa Bit layout: [S(1) E(18) M(45)] = [63:63][62:45][44:0]","health":"warn","tokens":4384,"nodes":1156,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13085,"rust":6818,"verilog":25023,"verilog_hir":1810,"zig":14002},"repo":"t27","kinds":{"Module":24,"ConstDecl":19,"ExprLiteral":122,"ExprIdentifier":279,"FnDecl":26,"StmtLocal":35,"ExprBinary":155,"ExprReturn":44,"ExprIf":14,"ExprUnary":64,"ExprCall":190,"StmtIf":22,"StmtAssign":3,"TestBlock":55,"StmtExpr":97,"ExprFieldAccess":7},"tags":["domain/numeric","has/functions","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 26 functions and 19 constants. Carries 55 tests. 764 lines compile to 4,384 tokens and 1,156 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 24.4 KB. Compiles with 1 type error."},{"path":"chips/euler/specs/numeric/gf8.t27","category":"chips/euler","name":"gf8","module":"GF8","lines":522,"bytes":17732,"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 0 8-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 3 (P1)","health":"warn","tokens":2153,"nodes":661,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":10178,"rust":4222,"verilog":20381,"verilog_hir":1057,"zig":12139},"repo":"t27","kinds":{"Module":21,"UseDecl":4,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":36,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"TestBlock":29,"StmtExpr":74,"StmtWhile":3,"StmtAssign":10,"InvariantBlock":15,"BenchBlock":8},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 29 tests, 15 invariants and 8 benches. 522 lines compile to 2,153 tokens and 661 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 5 type errors."},{"path":"chips/euler/specs/numeric/goldenfloat_family.t27","category":"chips/euler","name":"goldenfloat_family","module":"GoldenFloatFamily","lines":450,"bytes":17346,"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family 0 1-structured floating point formats NUMERIC-STANDARD-001 2 Agent 1 (P0)","health":"warn","tokens":1793,"nodes":356,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":10804,"rust":4339,"verilog":19539,"verilog_hir":686,"zig":12751},"repo":"t27","kinds":{"Module":12,"UseDecl":2,"StructDecl":2,"ExprIdentifier":78,"ConstDecl":2,"FnDecl":7,"StmtFor":4,"StmtIf":7,"ExprBinary":32,"ExprFieldAccess":30,"ExprReturn":9,"ExprIndex":3,"ExprLiteral":36,"StmtLocal":15,"ExprArrayLiteral":1,"StmtAssign":9,"ExprStructLit":1,"ExprCall":6,"ExprUnary":2,"TestBlock":25,"StmtExpr":54,"InvariantBlock":14,"BenchBlock":5},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 7 functions, 2 structs and 2 constants. Carries 25 tests, 14 invariants and 5 benches. 450 lines compile to 1,793 tokens and 356 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.1 KB. Compiles with 2 type errors."},{"path":"chips/euler/specs/numeric/int4.t27","category":"chips/euler","name":"int4","module":"triformat-int4","lines":766,"bytes":20533,"description":"int4.t27 — Int4 Signed 4-bit Integer Quantization Range: -8 to 7 Used for ultra-low precision quantization in ML","health":"ok","tokens":4078,"nodes":850,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9763,"rust":3801,"verilog":22124,"verilog_hir":2099,"zig":10462},"repo":"t27","kinds":{"Module":31,"ConstDecl":6,"ExprLiteral":60,"ExprIdentifier":208,"FnDecl":26,"StmtIf":22,"ExprBinary":98,"ExprReturn":48,"ExprCall":97,"StmtLocal":9,"ExprIf":4,"ExprUnary":65,"TestBlock":63,"StmtExpr":113},"tags":["domain/numeric","has/functions","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 26 functions and 6 constants. Carries 63 tests. 766 lines compile to 4,078 tokens and 850 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.6 KB. Clean through every layer."},{"path":"chips/euler/specs/numeric/int8.t27","category":"chips/euler","name":"int8","module":"triformat-int8","lines":1151,"bytes":30614,"description":"int8.t27 — Int8 Signed 8-bit Integer Quantization Range: -128 to 127 Standard 8-bit signed integer, widely used in quantization","health":"warn","tokens":6231,"nodes":1424,"depth":10,"loss":0,"tcErrors":8,"failedBackends":[],"outBytes":{"c":15229,"rust":7199,"verilog":32292,"verilog_hir":3500,"zig":16382},"repo":"t27","kinds":{"Module":43,"ConstDecl":6,"ExprLiteral":139,"ExprIdentifier":346,"FnDecl":43,"ExprReturn":74,"StmtIf":33,"ExprBinary":178,"ExprCall":165,"StmtLocal":29,"ExprIf":6,"ExprUnary":96,"StmtWhile":4,"StmtAssign":12,"TestBlock":83,"StmtExpr":166,"ExprFieldAccess":1},"tags":["domain/numeric","has/functions","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 43 functions and 6 constants. Carries 83 tests. 1151 lines compile to 6,231 tokens and 1,424 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 31.5 KB. Compiles with 8 type errors."},{"path":"chips/euler/specs/numeric/nf4.t27","category":"chips/euler","name":"nf4","module":"triformat-nf4","lines":839,"bytes":23771,"description":"nf4.t27 — NormalFloat4 Quantization 4-bit quantization based on normalized distribution Values: {-1, -0.667, -0.333, 0, 0.333, 0.667, 1, 0} (8 levels + zero)","health":"warn","tokens":4503,"nodes":882,"depth":9,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":10738,"rust":3543,"verilog":24108,"verilog_hir":1608,"zig":11868},"repo":"t27","kinds":{"Module":14,"ConstDecl":9,"ExprLiteral":97,"ExprIdentifier":170,"FnDecl":26,"StmtIf":9,"ExprBinary":102,"ExprCall":139,"ExprReturn":33,"StmtLocal":28,"StmtAssign":3,"ExprIndex":1,"ExprUnary":60,"ExprIf":2,"TestBlock":69,"StmtExpr":120},"tags":["domain/numeric","has/functions","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 26 functions and 9 constants. Carries 69 tests. 839 lines compile to 4,503 tokens and 882 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 23.5 KB. Compiles with 3 type errors."},{"path":"chips/euler/specs/numeric/phi_ratio.t27","category":"chips/euler","name":"phi_ratio","module":"PhiRatio","lines":695,"bytes":25855,"description":"t27/specs/numeric/phi_ratio.t27 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 2 Agent 9 (P0)","health":"ok","tokens":2585,"nodes":592,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12153,"rust":4273,"verilog":21805,"verilog_hir":1108,"zig":17217},"repo":"t27","kinds":{"Module":22,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":128,"StructDecl":2,"FnDecl":14,"StmtLocal":33,"ExprBinary":69,"ExprLiteral":54,"ExprFieldAccess":28,"ExprCall":12,"ExprReturn":28,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":19,"ExprUnary":7,"StmtAssign":7,"StmtWhile":1,"TestBlock":35,"StmtExpr":95,"InvariantBlock":29,"BenchBlock":3},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 2 structs and 2 constants. Carries 35 tests, 29 invariants and 3 benches. 695 lines compile to 2,585 tokens and 592 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Clean through every layer."},{"path":"chips/euler/specs/numeric/tri_net_formats.t27","category":"chips/euler","name":"tri_net_formats","module":"TriNetFormats","lines":993,"bytes":32170,"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","health":"warn","tokens":4158,"nodes":1029,"depth":15,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":19414,"rust":15653,"verilog":34212,"verilog_hir":1394,"zig":21098},"repo":"t27","kinds":{"Module":53,"UseDecl":3,"EnumDecl":1,"EnumVariant":6,"StructDecl":14,"ExprIdentifier":332,"ConstDecl":2,"FnDecl":21,"StmtFor":3,"StmtIf":36,"ExprBinary":131,"ExprFieldAccess":63,"ExprReturn":48,"StmtLocal":47,"ExprLiteral":106,"StmtAssign":18,"ExprIndex":5,"ExprEnumValue":10,"ExprCall":27,"ExprIf":5,"ExprUnary":8,"StmtWhile":4,"TestBlock":25,"StmtExpr":51,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 21 functions, 14 structs, 1 enum and 2 constants. Carries 25 tests, 6 invariants and 4 benches. 993 lines compile to 4,158 tokens and 1,029 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 33.4 KB. Compiles with 4 type errors."},{"path":"compiler/ast.t27","category":"compiler","name":"ast","module":"ast","lines":612,"bytes":18378,"description":"ast.t27 -- Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","health":"ok","tokens":2422,"nodes":392,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9914,"rust":10278,"verilog":16169,"verilog_hir":691,"zig":8098},"repo":"t27","kinds":{"Module":3,"EnumDecl":5,"EnumVariant":142,"StructDecl":34,"ExprIdentifier":139,"FnDecl":8,"ExprReturn":8,"ExprStructLit":3,"ExprFieldAccess":27,"ExprCall":7,"ExprUnary":5,"ExprArrayLiteral":2,"StmtExpr":3,"ExprLiteral":2,"StmtIf":2,"ExprBinary":1,"StmtAssign":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 8 functions, 34 structs and 5 enums. 612 lines compile to 2,422 tokens and 392 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 15.8 KB. Clean through every layer."},{"path":"compiler/cli/gen.t27","category":"compiler/cli","name":"gen","module":"gen_commands","lines":512,"bytes":16753,"description":"gen.t27 -- Code Generation with TDD Validation Commands for generating code from t27 specs with TDD enforcement","health":"warn","tokens":2065,"nodes":778,"depth":10,"loss":1,"tcErrors":2,"failedBackends":[],"outBytes":{"c":10437,"rust":10011,"verilog":15627,"verilog_hir":587,"zig":10271},"repo":"t27","kinds":{"Module":32,"StructDecl":15,"ExprIdentifier":171,"FnDecl":8,"StmtIf":24,"ExprUnary":4,"ExprCall":118,"StmtExpr":92,"ExprLiteral":134,"ExprReturn":20,"StmtLocal":29,"ExprBinary":42,"ExprFieldAccess":60,"StmtFor":2,"StmtAssign":12,"ExprIf":2,"ExprStructLit":4,"StmtWhile":2,"ExprIndex":5,"StmtBreak":2},"tags":["domain/compiler","domain/tools","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 8 functions and 15 structs. 512 lines compile to 2,065 tokens and 778 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Compiles with 1 item dropped by error recovery and 2 type errors."},{"path":"compiler/cli/git.t27","category":"compiler/cli","name":"git","module":"git_commands","lines":617,"bytes":20978,"description":"git.t27 -- Git Integration with Tri Skill Workflow (ADR-002) Commands for git operations with skill validation and issue binding","health":"warn","tokens":2922,"nodes":1039,"depth":13,"loss":1,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13791,"rust":11553,"verilog":20483,"verilog_hir":1350,"zig":12552},"repo":"t27","kinds":{"Module":65,"FnDecl":12,"StmtLocal":54,"ExprLiteral":160,"StmtIf":51,"ExprUnary":5,"ExprCall":142,"ExprIdentifier":261,"StmtExpr":85,"ExprReturn":30,"ExprBinary":70,"ExprFieldAccess":66,"ExprIf":4,"StmtAssign":19,"ExprIndex":3,"StmtFor":5,"StmtBreak":2,"StmtWhile":3,"StructDecl":2},"tags":["domain/compiler","domain/tools","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 12 functions and 2 structs. 617 lines compile to 2,922 tokens and 1,039 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.0 KB. Compiles with 1 item dropped by error recovery and 1 type error."},{"path":"compiler/cli/spec.t27","category":"compiler/cli","name":"spec","module":"spec_commands","lines":488,"bytes":16727,"description":"spec.t27 -- Spec Management Commands Commands for creating and managing t27 specs with TDD enforcement","health":"ok","tokens":2155,"nodes":699,"depth":61,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9603,"rust":8315,"verilog":13800,"verilog_hir":648,"zig":8781},"repo":"t27","kinds":{"Module":29,"FnDecl":7,"StmtIf":24,"ExprUnary":4,"ExprCall":83,"ExprIdentifier":115,"StmtExpr":70,"ExprLiteral":149,"ExprReturn":19,"StmtLocal":16,"ExprIf":2,"ExprBinary":94,"ExprFieldAccess":63,"StmtFor":4,"ExprIndex":3,"StmtAssign":4,"ExprStructLit":1,"ExprArrayLiteral":1,"StructDecl":11},"tags":["domain/compiler","domain/tools","has/functions","has/loops","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 7 functions and 11 structs. 488 lines compile to 2,155 tokens and 699 AST nodes, depth 61. Emits 5 of 5 backends; largest is Verilog at 13.5 KB. Clean through every layer."},{"path":"compiler/codegen/c/codegen.t27","category":"compiler/codegen","name":"codegen","module":"tricgen-c","lines":274,"bytes":7080,"description":"compiler/codegen/c/codegen.t27 -- C Code Generator Specification Emit C code from t27 AST","health":"warn","tokens":784,"nodes":198,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3979,"rust":1289,"verilog":7731,"verilog_hir":247,"zig":4271},"repo":"t27","kinds":{"Module":2,"ConstDecl":8,"ExprLiteral":2,"EnumDecl":3,"EnumVariant":31,"StructDecl":2,"ExprIdentifier":59,"FnDecl":18,"StmtExpr":8,"ExprUnary":13,"ExprCall":13,"StmtAssign":23,"ExprSwitch":1,"ExprFieldAccess":1,"TestBlock":7,"InvariantBlock":5,"BenchBlock":2},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/invariants","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 18 functions, 2 structs, 3 enums and 8 constants. Carries 7 tests, 5 invariants and 2 benches. 274 lines compile to 784 tokens and 198 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/testgen.t27","category":"compiler/codegen","name":"testgen","module":"testgen","lines":910,"bytes":36448,"description":"testgen.t27 -- Generic Test Generator for TDD-Inside-Spec Generates test code from spec test blocks for multiple backends","health":"warn","tokens":5455,"nodes":1622,"depth":19,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2508,"rust":2476,"verilog":5560,"verilog_hir":243,"zig":23357},"repo":"t27","kinds":{"Module":68,"StructDecl":13,"ExprIdentifier":272,"FnDecl":24,"ExprReturn":18,"ExprStructLit":2,"ExprFieldAccess":124,"ExprCall":292,"ExprLiteral":314,"StmtIf":28,"ExprBinary":106,"StmtExpr":268,"StmtLocal":14,"StmtAssign":36,"StmtFor":20,"ExprIndex":10,"StmtWhile":6,"StmtBreak":2,"ExprArrayLiteral":5},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 24 functions and 13 structs. 910 lines compile to 5,455 tokens and 1,622 AST nodes, depth 19. Emits 5 of 5 backends; largest is Zig at 22.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/verilog/codegen.t27","category":"compiler/codegen","name":"codegen","module":"verilog_codegen","lines":1068,"bytes":228219,"description":"codegen.t27 0 Code Generator for Verilog Generates synthesizable Verilog from t27 AST","health":"warn","tokens":6036,"nodes":602,"depth":11,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1608,"rust":715,"verilog":3257,"verilog_hir":391,"zig":7686},"repo":"t27","kinds":{"Module":6,"StructDecl":2,"ExprIdentifier":59,"FnDecl":10,"StmtLocal":6,"ExprCall":154,"ExprFieldAccess":54,"ExprLiteral":130,"ExprReturn":3,"ExprStructLit":2,"ExprUnary":1,"StmtExpr":142,"StmtIf":4,"ExprBinary":21,"StmtFor":1,"StmtAssign":4,"ExprIndex":3},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 10 functions and 2 structs. 1068 lines compile to 6,036 tokens and 602 AST nodes, depth 11. Emits 5 of 5 backends; largest is Zig at 7.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/verilog/fpga_emission.t27","category":"compiler/codegen","name":"fpga_emission","module":"fpga_emission","lines":2359,"bytes":86803,"description":"fpga_emission.t27 0 FPGA Module Verilog Emission Generates FPGA-specific Verilog modules from .t27 specs","health":"warn","tokens":14509,"nodes":4844,"depth":13,"loss":1,"tcErrors":21,"failedBackends":[],"outBytes":{"c":63397,"rust":61436,"verilog":79066,"verilog_hir":2432,"zig":61764},"repo":"t27","kinds":{"Module":39,"StructDecl":1,"ExprIdentifier":205,"FnDecl":28,"ExprReturn":3,"ExprStructLit":1,"ExprFieldAccess":89,"ExprLiteral":1284,"StmtExpr":1492,"ExprCall":1506,"StmtLocal":26,"StmtWhile":14,"ExprBinary":81,"StmtAssign":27,"StmtIf":20,"ExprArrayLiteral":1,"ExprIndex":16,"ExprIf":5,"StmtBreak":4,"StmtContinue":1,"ExprUnary":1},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 28 functions and 1 struct. 2359 lines compile to 14,509 tokens and 4,844 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 77.2 KB. Compiles with 1 item dropped by error recovery and 21 type errors."},{"path":"compiler/codegen/zig/codegen.t27","category":"compiler/codegen","name":"codegen","module":"zig_codegen","lines":1517,"bytes":54679,"description":"codegen.t27 -- Code Generator for Zig Generates Zig 0.15 code from t27 AST","health":"warn","tokens":8455,"nodes":2024,"depth":15,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":20534,"rust":13610,"verilog":28859,"verilog_hir":2070,"zig":25822},"repo":"t27","kinds":{"Module":58,"StructDecl":2,"ExprIdentifier":296,"FnDecl":34,"ExprReturn":16,"ExprStructLit":3,"ExprFieldAccess":194,"ExprCall":439,"ExprLiteral":361,"ExprUnary":2,"StmtExpr":376,"StmtIf":32,"ExprBinary":77,"StmtFor":20,"StmtLocal":53,"StmtWhile":1,"StmtAssign":33,"ExprIndex":23,"ExprSwitch":1,"ConstDecl":2,"ExprClosure":1},"tags":["domain/compiler","has/functions","has/loops","has/structs","has/switch","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 34 functions, 2 structs and 2 constants. 1517 lines compile to 8,455 tokens and 2,024 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 28.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/zig/runtime.t27","category":"compiler/codegen","name":"runtime","module":"zig_runtime","lines":410,"bytes":20013,"description":"runtime.t27 -- Zig Runtime Code Generation Generates Zig backend from compiler/runtime/*.t27 specifications","health":"warn","tokens":1321,"nodes":587,"depth":118,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12291,"rust":11443,"verilog":13515,"verilog_hir":625,"zig":11469},"repo":"t27","kinds":{"Module":1,"FnDecl":7,"ExprReturn":7,"ExprBinary":268,"ExprLiteral":271,"ExprCall":17,"StmtLocal":1,"StmtExpr":8,"ExprIdentifier":7},"tags":["domain/compiler","has/functions","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 7 functions. 410 lines compile to 1,321 tokens and 587 AST nodes, depth 118. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/parser/lexer.t27","category":"compiler/parser","name":"lexer","module":"trilexer","lines":598,"bytes":18435,"description":"compiler/parser/lexer.t27 -- Lexer for TRI-27 Assembly Tokenizes source code into Token stream for parser","health":"warn","tokens":3300,"nodes":718,"depth":14,"loss":1,"tcErrors":2,"failedBackends":[],"outBytes":{"c":5277,"rust":2287,"verilog":7915,"verilog_hir":317,"zig":8087},"repo":"t27","kinds":{"Module":26,"ConstDecl":3,"ExprLiteral":86,"EnumDecl":1,"EnumVariant":87,"StructDecl":2,"ExprIdentifier":161,"FnDecl":9,"StmtAssign":36,"ExprFieldAccess":121,"ExprIf":6,"ExprBinary":65,"ExprIndex":17,"StmtLocal":17,"StmtWhile":5,"StmtExpr":12,"ExprCall":24,"StmtIf":15,"StmtBreak":1,"ExprStructLit":8,"ExprEnumValue":7,"StmtContinue":5,"ExprReturn":4},"tags":["domain/compiler","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 9 functions, 2 structs, 1 enum and 3 constants. 598 lines compile to 3,300 tokens and 718 AST nodes, depth 14. Emits 5 of 5 backends; largest is Zig at 7.9 KB. Compiles with 1 item dropped by error recovery and 2 type errors."},{"path":"compiler/parser/parser.t27","category":"compiler/parser","name":"parser","module":"parser","lines":1295,"bytes":49454,"description":"parser.t27 -- Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","health":"warn","tokens":7701,"nodes":2776,"depth":24,"loss":2,"tcErrors":3,"failedBackends":[],"outBytes":{"c":36078,"rust":31904,"verilog":46522,"verilog_hir":3119,"zig":32837},"repo":"t27","kinds":{"Module":150,"StructDecl":1,"ExprIdentifier":672,"FnDecl":37,"StmtLocal":104,"ExprStructLit":38,"ExprFieldAccess":713,"ExprLiteral":167,"ExprUnary":85,"ExprArrayLiteral":37,"ExprCall":298,"StmtIf":95,"ExprBinary":115,"StmtAssign":95,"ExprIndex":6,"ExprReturn":61,"StmtExpr":53,"StmtWhile":22,"StmtFor":3,"StmtContinue":1,"StmtBreak":3,"ExprIf":1,"TestBlock":12,"ConstDecl":2,"InvariantBlock":3,"BenchBlock":2},"tags":["domain/compiler","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 37 functions, 1 struct and 2 constants. Carries 12 tests, 3 invariants and 2 benches. 1295 lines compile to 7,701 tokens and 2,776 AST nodes, depth 24. Emits 5 of 5 backends; largest is Verilog at 45.4 KB. Compiles with 2 items dropped by error recovery and 3 type errors."},{"path":"compiler/runtime/commands.t27","category":"compiler/runtime","name":"commands","module":"commands","lines":1040,"bytes":35002,"description":"commands.t27 -- CLI Command Specifications Individual command specifications for tri CLI","health":"warn","tokens":4833,"nodes":781,"depth":12,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10610,"rust":7609,"verilog":15909,"verilog_hir":972,"zig":9311},"repo":"t27","kinds":{"Module":41,"EnumDecl":1,"EnumVariant":7,"FnDecl":9,"StmtIf":31,"ExprBinary":34,"ExprFieldAccess":32,"ExprIdentifier":157,"ExprLiteral":136,"StmtExpr":92,"ExprCall":139,"ExprReturn":27,"StmtLocal":42,"ExprArrayLiteral":1,"StmtFor":6,"StmtAssign":9,"StmtBreak":1,"ExprUnary":7,"ExprIf":3,"StmtContinue":3,"ConstDecl":3},"tags":["domain/compiler","has/enums","has/functions","has/loops","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 9 functions, 1 enum and 3 constants. 1040 lines compile to 4,833 tokens and 781 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"compiler/runtime/runtime.t27","category":"compiler/runtime","name":"runtime","module":"triruntime","lines":340,"bytes":11466,"description":"compiler/runtime/runtime.t27 -- T27 Runtime Specification Runtime environment for executing t27 programs","health":"warn","tokens":1603,"nodes":315,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5411,"rust":3029,"verilog":8428,"verilog_hir":2032,"zig":3941},"repo":"t27","kinds":{"Module":11,"ConstDecl":4,"ExprLiteral":32,"EnumDecl":1,"EnumVariant":3,"StructDecl":1,"ExprIdentifier":106,"FnDecl":17,"StmtExpr":7,"ExprUnary":3,"ExprCall":10,"StmtAssign":30,"ExprFieldAccess":33,"ExprReturn":12,"ExprBinary":17,"StmtFor":4,"ExprEnumValue":3,"ExprIndex":13,"StmtIf":6,"StmtLocal":2},"tags":["domain/compiler","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 17 functions, 1 struct, 1 enum and 4 constants. 340 lines compile to 1,603 tokens and 315 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/runtime/validation.t27","category":"compiler/runtime","name":"validation","module":"validation_rules","lines":515,"bytes":20567,"description":"validation.t27 -- Validation Rules and Invariants TDD and language policy validation for t27 specs","health":"ok","tokens":2858,"nodes":544,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8310,"rust":6578,"verilog":10887,"verilog_hir":1276,"zig":7732},"repo":"t27","kinds":{"Module":33,"StructDecl":1,"ExprIdentifier":94,"FnDecl":12,"StmtLocal":19,"ExprBinary":33,"ExprFieldAccess":107,"ExprLiteral":118,"StmtIf":26,"ExprUnary":10,"ExprReturn":30,"ExprStructLit":25,"StmtFor":2,"ExprCall":23,"ExprIndex":5,"StmtAssign":4,"StmtWhile":2},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 12 functions and 1 struct. 515 lines compile to 2,858 tokens and 544 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 10.6 KB. Clean through every layer."},{"path":"compiler/skill/registry.t27","category":"compiler/skill","name":"registry","module":"skill_registry","lines":313,"bytes":11026,"description":"registry.t27 -- Skill Registry JSON Structure (ADR-002) Defines the structure for tri skill workflow registry","health":"ok","tokens":1009,"nodes":126,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3298,"rust":2508,"verilog":4648,"verilog_hir":534,"zig":2093},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":8,"EnumDecl":3,"EnumVariant":12,"StructDecl":3,"ExprIdentifier":45,"FnDecl":4,"ExprReturn":4,"ExprStructLit":3,"ExprFieldAccess":31,"ExprUnary":2,"ExprArrayLiteral":2,"StmtLocal":1,"ExprBinary":6},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 3 structs, 3 enums and 1 constant. 313 lines compile to 1,009 tokens and 126 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"contrib/backend/zig/legacy/main_zig_handwritten.t27","category":"contrib/backend","name":"main_zig_handwritten","module":null,"lines":1126,"bytes":36956,"description":"tri.zig -- Trinity T27 CLI Runtime","health":"ok","tokens":6410,"nodes":158,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2140,"rust":1421,"verilog":3678,"verilog_hir":345,"zig":2677},"repo":"t27","kinds":{"Module":12,"ConstDecl":1,"ExprIdentifier":53,"StructDecl":13,"EnumDecl":1,"EnumVariant":6,"FnDecl":1,"StmtLocal":4,"ExprCall":18,"ExprStructLit":1,"StmtAssign":1,"ExprUnary":8,"StmtExpr":9,"StmtIf":6,"ExprBinary":5,"ExprFieldAccess":1,"ExprLiteral":12,"ExprReturn":1,"ExprIndex":5},"tags":["domain/other","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 13 structs, 1 enum and 1 constant. 1126 lines compile to 6,410 tokens and 158 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"examples/fpga/qmtech_minimal/design.t27","category":"examples/fpga","name":"design","module":null,"lines":150,"bytes":3670,"description":null,"health":"warn","tokens":468,"nodes":5,"depth":2,"loss":25,"tcErrors":0,"failedBackends":[],"outBytes":{"c":823,"rust":66,"verilog":1597,"verilog_hir":243,"zig":293},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"InvariantBlock":1},"tags":["domain/fpga","domain/tutorial","has/imports","has/invariants","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 1 test and 1 invariant. 150 lines compile to 468 tokens and 5 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 25 items dropped by error recovery."},{"path":"specs/account/auth.t27","category":"specs/account","name":"auth","module":"AccountAuth","lines":278,"bytes":9231,"description":"specs/account/auth.t27 Account Authentication Operations","health":"ok","tokens":961,"nodes":351,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7341,"rust":2793,"verilog":12440,"verilog_hir":807,"zig":6990},"repo":"t27","kinds":{"Module":5,"UseDecl":2,"FnDecl":10,"StructDecl":8,"ExprIdentifier":68,"StmtIf":4,"ExprBinary":30,"ExprFieldAccess":56,"ExprLiteral":55,"ExprReturn":5,"TestBlock":14,"StmtLocal":17,"ExprStructLit":12,"ExprCall":39,"StmtExpr":26},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 8 structs. Carries 14 tests. 278 lines compile to 961 tokens and 351 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.1 KB. Clean through every layer."},{"path":"specs/account/repo.t27","category":"specs/account","name":"repo","module":"AccountRepo","lines":197,"bytes":5474,"description":"specs/account/repo.t27 Account Repository Operations","health":"ok","tokens":741,"nodes":246,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5928,"rust":2632,"verilog":9190,"verilog_hir":787,"zig":5271},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":9,"ExprIdentifier":46,"EnumDecl":1,"EnumVariant":2,"ConstDecl":1,"ExprLiteral":40,"FnDecl":10,"TestBlock":9,"StmtLocal":9,"ExprStructLit":7,"ExprFieldAccess":50,"ExprCall":29,"StmtExpr":14,"ExprBinary":14,"ExprTry":3},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 9 structs, 1 enum and 1 constant. Carries 9 tests. 197 lines compile to 741 tokens and 246 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 9.0 KB. Clean through every layer."},{"path":"specs/account/schema.t27","category":"specs/account","name":"schema","module":"Account","lines":227,"bytes":6623,"description":"specs/account/schema.t27 Account Types Specification","health":"ok","tokens":712,"nodes":294,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5001,"rust":2773,"verilog":8979,"verilog_hir":347,"zig":4811},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"StructDecl":17,"ExprIdentifier":49,"EnumDecl":2,"EnumVariant":8,"ConstDecl":3,"ExprLiteral":58,"FnDecl":1,"StmtIf":1,"ExprBinary":35,"ExprReturn":2,"StmtLocal":14,"ExprFieldAccess":29,"TestBlock":12,"ExprCall":33,"StmtExpr":21,"ExprStructLit":3,"ExprUnary":3},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 1 function, 17 structs, 2 enums and 3 constants. Carries 12 tests. 227 lines compile to 712 tokens and 294 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.8 KB. Clean through every layer."},{"path":"specs/api/c_api_contract.t27","category":"specs/api","name":"c_api_contract","module":null,"lines":243,"bytes":7087,"description":null,"health":"warn","tokens":1357,"nodes":313,"depth":11,"loss":75,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3690,"rust":66,"verilog":6141,"verilog_hir":243,"zig":3477},"repo":"t27","kinds":{"Module":6,"UseDecl":1,"TestBlock":9,"StmtLocal":28,"ExprCall":69,"StmtExpr":31,"ExprUnary":22,"ExprBinary":10,"ExprFieldAccess":3,"ExprIdentifier":75,"ExprLiteral":53,"StmtFor":2,"StmtIf":2,"StmtAssign":1,"ExprArrayLiteral":1},"tags":["domain/network","has/imports","has/loops","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 9 tests. 243 lines compile to 1,357 tokens and 313 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 6.0 KB. Compiles with 75 items dropped by error recovery."},{"path":"specs/api/sdk_contract.t27","category":"specs/api","name":"sdk_contract","module":null,"lines":407,"bytes":10914,"description":null,"health":"warn","tokens":2187,"nodes":175,"depth":3,"loss":50,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5099,"rust":742,"verilog":11919,"verilog_hir":243,"zig":8361},"repo":"t27","kinds":{"Module":1,"StructDecl":4,"ExprIdentifier":10,"TestBlock":25,"StmtExpr":120,"InvariantBlock":8,"BenchBlock":7},"tags":["domain/network","has/benches","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 4 structs. Carries 25 tests, 8 invariants and 7 benches. 407 lines compile to 2,187 tokens and 175 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Compiles with 50 items dropped by error recovery."},{"path":"specs/api/tri_net_api.t27","category":"specs/api","name":"tri_net_api","module":null,"lines":190,"bytes":5445,"description":null,"health":"warn","tokens":333,"nodes":3,"depth":2,"loss":42,"tcErrors":0,"failedBackends":[],"outBytes":{"c":687,"rust":66,"verilog":1861,"verilog_hir":243,"zig":275},"repo":"t27","kinds":{"Module":1,"BenchBlock":2},"tags":["domain/network","has/benches","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 2 benches. 190 lines compile to 333 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 42 items dropped by error recovery."},{"path":"specs/ar/asp_solver.t27","category":"specs/ar","name":"asp_solver","module":null,"lines":556,"bytes":16355,"description":"spec: AspSolver Answer Set Programming solver for neuro-symbolic reasoning","health":"ok","tokens":2583,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1380,"rust":713,"verilog":2277,"verilog_hir":289,"zig":562},"repo":"t27","kinds":{"Module":1,"StructDecl":4,"ExprIdentifier":9,"ConstDecl":1,"ExprLiteral":1,"FnDecl":1},"tags":["domain/reasoning","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 4 structs and 1 constant. 556 lines compile to 2,583 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/ar/coa_planning.t27","category":"specs/ar","name":"coa_planning","module":null,"lines":638,"bytes":20107,"description":"spec: CoaPlanning Course of Action (COA) planning for neuro-symbolic reasoning","health":"ok","tokens":2830,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2444,"rust":1550,"verilog":4045,"verilog_hir":354,"zig":1318},"repo":"t27","kinds":{"Module":1,"EnumDecl":2,"EnumVariant":17,"StructDecl":3,"ExprIdentifier":19,"ConstDecl":2,"ExprLiteral":1,"FnDecl":1},"tags":["domain/reasoning","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 3 structs, 2 enums and 2 constants. 638 lines compile to 2,830 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/ar/composition.t27","category":"specs/ar","name":"composition","module":null,"lines":571,"bytes":19109,"description":"spec: Composition ML+AR composition patterns for neuro-symbolic hybrid reasoning","health":"ok","tokens":2513,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2528,"rust":1614,"verilog":4018,"verilog_hir":357,"zig":1302},"repo":"t27","kinds":{"Module":1,"EnumDecl":2,"EnumVariant":17,"StructDecl":4,"ExprIdentifier":17,"ConstDecl":1,"ExprLiteral":1,"FnDecl":1},"tags":["domain/reasoning","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 4 structs, 2 enums and 1 constant. 571 lines compile to 2,513 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/ar/datalog_engine.t27","category":"specs/ar","name":"datalog_engine","module":null,"lines":350,"bytes":10935,"description":"spec: DatalogEngine Datalog reasoning engine for neuro-symbolic AI","health":"ok","tokens":1863,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1251,"rust":706,"verilog":2117,"verilog_hir":298,"zig":585},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":4,"ExprIdentifier":10,"FnDecl":1},"tags":["domain/reasoning","has/functions","has/imports","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 1 function and 4 structs. 350 lines compile to 1,863 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/ar/explainability.t27","category":"specs/ar","name":"explainability","module":null,"lines":556,"bytes":16253,"description":"spec: Explainability Explainable AI (XAI) mechanisms for neuro-symbolic reasoning","health":"ok","tokens":2217,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1471,"rust":730,"verilog":2572,"verilog_hir":303,"zig":618},"repo":"t27","kinds":{"Module":1,"StructDecl":3,"ExprIdentifier":10,"ConstDecl":1,"ExprLiteral":1,"FnDecl":1},"tags":["domain/reasoning","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 3 structs and 1 constant. 556 lines compile to 2,217 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/ar/proof_trace.t27","category":"specs/ar","name":"proof_trace","module":null,"lines":313,"bytes":9671,"description":"spec: ProofTrace Bounded proof trace mechanism for explainable neuro-symbolic reasoning","health":"ok","tokens":1498,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1340,"rust":558,"verilog":2319,"verilog_hir":295,"zig":527},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":9,"FnDecl":1},"tags":["domain/reasoning","has/functions","has/imports","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 1 function, 2 structs and 1 constant. 313 lines compile to 1,498 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/ar/restraint.t27","category":"specs/ar","name":"restraint","module":null,"lines":438,"bytes":14096,"description":"spec: Restraint Bounded rationality and restraint mechanisms for neuro-symbolic reasoning","health":"ok","tokens":1557,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1857,"rust":935,"verilog":2926,"verilog_hir":292,"zig":799},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"EnumDecl":1,"EnumVariant":6,"StructDecl":2,"ExprIdentifier":9,"ConstDecl":3,"ExprLiteral":1,"FnDecl":1},"tags":["domain/reasoning","has/enums","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 2 structs, 1 enum and 3 constants. 438 lines compile to 1,557 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/ar/ternary_logic.t27","category":"specs/ar","name":"ternary_logic","module":null,"lines":473,"bytes":13762,"description":"spec: TernaryLogic K3 Kleene ternary logic operations for neuro-symbolic reasoning","health":"warn","tokens":1858,"nodes":476,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6976,"rust":1426,"verilog":9974,"verilog_hir":954,"zig":4936},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":3,"ExprIdentifier":185,"FnDecl":10,"ExprReturn":10,"ExprCall":116,"StmtLocal":12,"ExprFieldAccess":5,"StmtFor":3,"StmtAssign":1,"StructDecl":1,"ExprArrayLiteral":2,"ExprBinary":46,"ExprLiteral":2,"ExprIndex":2,"ExprIf":3,"StmtExpr":44,"InvariantBlock":15,"ExprUnary":2,"TestBlock":7,"StmtIf":1},"tags":["domain/reasoning","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 10 functions, 1 struct and 3 constants. Carries 7 tests and 15 invariants. 473 lines compile to 1,858 tokens and 476 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 9.7 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/auth/config.t27","category":"specs/auth","name":"config","module":"AuthConfig","lines":295,"bytes":9593,"description":"specs/auth/config.t27 Authentication Configuration Storage","health":"ok","tokens":1032,"nodes":371,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7214,"rust":2578,"verilog":11611,"verilog_hir":944,"zig":6848},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":5,"ExprIdentifier":70,"FnDecl":13,"ConstDecl":11,"ExprLiteral":59,"TestBlock":13,"StmtExpr":33,"ExprCall":52,"ExprBinary":33,"ExprFieldAccess":48,"StmtLocal":16,"ExprStructLit":9,"ExprTry":2},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 5 structs, 1 enum and 11 constants. Carries 13 tests. 295 lines compile to 1,032 tokens and 371 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"specs/automation/wrapup-auto.t27","category":"specs/automation","name":"wrapup-auto","module":"automation","lines":51,"bytes":1625,"description":null,"health":"ok","tokens":162,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1334,"rust":671,"verilog":2777,"verilog_hir":265,"zig":733},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":11,"TestBlock":1},"tags":["domain/other","has/constants-only","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 structs and 2 constants. Carries 1 test. 51 lines compile to 162 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/base/debounce.t27","category":"specs/base","name":"debounce","module":"base-debounce","lines":99,"bytes":2655,"description":"base/debounce.t27 — φ-Structured Debouncing Trinity S³AI — Rate Limiting and Debouncing","health":"ok","tokens":242,"nodes":88,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2722,"rust":950,"verilog":4549,"verilog_hir":610,"zig":1419},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":4,"ExprLiteral":14,"StructDecl":1,"FnDecl":4,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":9,"StmtIf":1,"ExprUnary":1,"ExprIdentifier":15,"StmtLocal":4,"ExprCall":8,"ExprBinary":7,"StmtAssign":2,"TestBlock":3,"StmtExpr":5,"InvariantBlock":1},"tags":["domain/base","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct and 4 constants. Carries 3 tests and 1 invariant. 99 lines compile to 242 tokens and 88 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/base/ops.t27","category":"specs/base","name":"ops","module":"tritype-ops","lines":1490,"bytes":47606,"description":"ops.t27 -- Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","health":"warn","tokens":7372,"nodes":2700,"depth":16,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":35514,"rust":5106,"verilog":62089,"verilog_hir":1991,"zig":33464},"repo":"t27","kinds":{"Module":66,"ConstDecl":9,"ExprLiteral":199,"EnumDecl":1,"EnumVariant":3,"ExprIdentifier":315,"FnDecl":32,"StmtLocal":57,"ExprBinary":92,"ExprCall":580,"ExprReturn":40,"ExprIndex":3,"StructDecl":1,"ExprEnumValue":526,"StmtIf":13,"StmtAssign":36,"ExprUnary":220,"ExprStructLit":1,"ExprFieldAccess":20,"ExprSwitch":1,"ExprIf":9,"StmtWhile":1,"TestBlock":94,"StmtExpr":253,"ExprArrayLiteral":14,"StmtFor":45,"InvariantBlock":48,"BenchBlock":21},"tags":["domain/base","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/switch","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 32 functions, 1 struct, 1 enum and 9 constants. Carries 94 tests, 48 invariants and 21 benches. 1490 lines compile to 7,372 tokens and 2,700 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 60.6 KB. Compiles with 1 type error."},{"path":"specs/base/ring_32.t27","category":"specs/base","name":"ring_32","module":"base-ring-32","lines":25,"bytes":596,"description":"base/ring_32.t27 — Ring 32 Definition","health":"ok","tokens":78,"nodes":21,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1282,"rust":329,"verilog":2206,"verilog_hir":253,"zig":781},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":3,"ExprLiteral":4,"ExprIdentifier":3,"TestBlock":1,"StmtExpr":2,"ExprCall":2,"ExprBinary":2,"InvariantBlock":1,"ExprFieldAccess":1},"tags":["domain/base","has/constants-only","has/imports","has/invariants","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 constants. Carries 1 test and 1 invariant. 25 lines compile to 78 tokens and 21 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/base/seed.t27","category":"specs/base","name":"seed","module":"seed","lines":93,"bytes":2627,"description":"seed.t27 -- Minimal Golden Seed for E2E CI (#150)","health":"ok","tokens":409,"nodes":137,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2883,"rust":596,"verilog":4143,"verilog_hir":371,"zig":1850},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":7,"EnumDecl":1,"EnumVariant":3,"FnDecl":2,"ExprReturn":2,"ExprSwitch":4,"ExprIdentifier":15,"ExprEnumValue":27,"TestBlock":5,"StmtExpr":11,"ExprUnary":8,"ExprCall":28,"InvariantBlock":2,"ExprBinary":3,"ExprFieldAccess":3},"tags":["domain/base","has/enums","has/functions","has/invariants","has/switch","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 enum and 15 constants. Carries 5 tests and 2 invariants. 93 lines compile to 409 tokens and 137 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/base/ternary_add.t27","category":"specs/base","name":"ternary_add","module":"ternary_add","lines":413,"bytes":14371,"description":"ternary_add.t27 -- Balanced Ternary Addition Formal Spec Ring 043 -- Formal carry propagation invariants, closure, range formula","health":"ok","tokens":1722,"nodes":311,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7495,"rust":1292,"verilog":16385,"verilog_hir":802,"zig":9474},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"StructDecl":1,"ExprIdentifier":37,"FnDecl":8,"StmtLocal":9,"ExprBinary":17,"ExprCall":11,"StmtIf":3,"ExprLiteral":21,"ExprReturn":11,"ExprStructLit":3,"ExprFieldAccess":6,"ExprIf":6,"ExprEnumValue":19,"ExprUnary":6,"StmtWhile":2,"StmtAssign":2,"ExprSwitch":2,"ConstDecl":6,"ExprArrayLiteral":1,"StmtFor":2,"TestBlock":32,"StmtExpr":80,"InvariantBlock":11,"BenchBlock":4},"tags":["domain/base","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 8 functions, 1 struct and 6 constants. Carries 32 tests, 11 invariants and 4 benches. 413 lines compile to 1,722 tokens and 311 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 16.0 KB. Clean through every layer."},{"path":"specs/base/ternary_encoding.t27","category":"specs/base","name":"ternary_encoding","module":"TernaryEncoding","lines":415,"bytes":13711,"description":"t27/specs/base/ternary_encoding.t27 Ternary Encoding/Decoding Specification Ring 065 - Encoding schemes for ternary data representation Defines how binary data maps to ternary and vice versa","health":"warn","tokens":1775,"nodes":397,"depth":12,"loss":0,"tcErrors":8,"failedBackends":[],"outBytes":{"c":7138,"rust":3807,"verilog":12824,"verilog_hir":1533,"zig":5014},"repo":"t27","kinds":{"Module":19,"UseDecl":1,"ConstDecl":9,"ExprLiteral":53,"FnDecl":13,"StmtIf":8,"ExprBinary":44,"ExprIdentifier":130,"ExprReturn":15,"ExprArrayLiteral":3,"StmtLocal":17,"StmtWhile":6,"ExprCall":15,"StmtAssign":28,"ExprIndex":9,"ExprUnary":2,"StructDecl":1,"ExprFieldAccess":6,"TestBlock":10,"InvariantBlock":5,"BenchBlock":3},"tags":["domain/base","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 9 constants. Carries 10 tests, 5 invariants and 3 benches. 415 lines compile to 1,775 tokens and 397 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Compiles with 8 type errors."},{"path":"specs/base/ternary_memory.t27","category":"specs/base","name":"ternary_memory","module":"TernaryMemory","lines":417,"bytes":13794,"description":"t27/specs/base/ternary_memory.t27 Ternary Memory Specification Ring 066 - Ternary memory cell and array operations Defines how trits are stored and accessed in memory","health":"warn","tokens":1713,"nodes":370,"depth":11,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":7995,"rust":4260,"verilog":13649,"verilog_hir":1832,"zig":5785},"repo":"t27","kinds":{"Module":13,"UseDecl":1,"ConstDecl":10,"ExprLiteral":37,"StructDecl":3,"ExprIdentifier":111,"FnDecl":14,"ExprReturn":22,"ExprStructLit":1,"ExprFieldAccess":44,"StmtIf":9,"ExprBinary":25,"StmtAssign":23,"ExprCall":13,"StmtLocal":9,"StmtWhile":3,"ExprIndex":9,"ExprUnary":4,"TestBlock":9,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/base","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 14 functions, 3 structs and 10 constants. Carries 9 tests, 6 invariants and 4 benches. 417 lines compile to 1,713 tokens and 370 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.3 KB. Compiles with 3 type errors."},{"path":"specs/base/types.t27","category":"specs/base","name":"types","module":"tritype-base","lines":1680,"bytes":55612,"description":"types.t27 -- Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","health":"warn","tokens":9455,"nodes":3764,"depth":11,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":45526,"rust":6990,"verilog":82565,"verilog_hir":2958,"zig":42966},"repo":"t27","kinds":{"Module":79,"ConstDecl":48,"ExprLiteral":454,"EnumDecl":1,"EnumVariant":3,"ExprIdentifier":791,"StructDecl":1,"FnDecl":35,"ExprReturn":49,"ExprSwitch":11,"ExprEnumValue":421,"ExprBinary":150,"StmtIf":19,"StmtLocal":177,"ExprCall":663,"ExprUnary":161,"StmtAssign":134,"ExprStructLit":2,"ExprFieldAccess":60,"ExprArrayLiteral":29,"StmtFor":57,"ExprIndex":51,"StmtBreak":1,"ExprIf":10,"TestBlock":66,"StmtExpr":218,"InvariantBlock":47,"BenchBlock":26},"tags":["domain/base","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/switch","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 35 functions, 1 struct, 1 enum and 48 constants. Carries 66 tests, 47 invariants and 26 benches. 1680 lines compile to 9,455 tokens and 3,764 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 80.6 KB. Compiles with 3 type errors."},{"path":"specs/benchmarks/bench_main.t27","category":"specs/benchmarks","name":"bench_main","module":null,"lines":95,"bytes":2523,"description":null,"health":"warn","tokens":451,"nodes":1,"depth":1,"loss":43,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/testing","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. 95 lines compile to 451 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 43 items dropped by error recovery."},{"path":"specs/benchmarks/bench_nn.t27","category":"specs/benchmarks","name":"bench_nn","module":null,"lines":166,"bytes":3216,"description":null,"health":"warn","tokens":586,"nodes":10,"depth":3,"loss":68,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1156,"rust":258,"verilog":2522,"verilog_hir":243,"zig":275},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":4,"ConstDecl":1,"TestBlock":3},"tags":["domain/testing","has/constants-only","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 struct and 1 constant. Carries 3 tests. 166 lines compile to 586 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 68 items dropped by error recovery."},{"path":"specs/benchmarks/gf16_bfloat16_nmse.t27","category":"specs/benchmarks","name":"gf16_bfloat16_nmse","module":null,"lines":153,"bytes":4300,"description":null,"health":"warn","tokens":683,"nodes":13,"depth":4,"loss":56,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1584,"rust":66,"verilog":3612,"verilog_hir":243,"zig":994},"repo":"t27","kinds":{"Module":1,"TestBlock":3,"InvariantBlock":4,"StmtExpr":3,"BenchBlock":1,"ExprIdentifier":1},"tags":["domain/testing","has/benches","has/invariants","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 3 tests, 4 invariants and 1 bench. 153 lines compile to 683 tokens and 13 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Compiles with 56 items dropped by error recovery."},{"path":"specs/benchmarks/ternary_vs_binary.t27","category":"specs/benchmarks","name":"ternary_vs_binary","module":null,"lines":92,"bytes":1965,"description":null,"health":"warn","tokens":346,"nodes":21,"depth":6,"loss":38,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1068,"rust":239,"verilog":2460,"verilog_hir":243,"zig":516},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":3,"TestBlock":2,"StmtLocal":2,"ExprStructLit":1,"ExprFieldAccess":3,"ExprLiteral":7,"ExprArrayLiteral":1},"tags":["domain/testing","has/structs","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 1 struct. Carries 2 tests. 92 lines compile to 346 tokens and 21 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Compiles with 38 items dropped by error recovery."},{"path":"specs/boards/arty_a7.t27","category":"specs/boards","name":"arty_a7","module":"BoardArtyA7","lines":288,"bytes":7435,"description":"t27/specs/boards/arty_a7.t27 Digilent Arty A7 Board Profile Artix-7 XC7A35T/XC7A100T, 100MHz clock, 4 LEDs, 4 buttons, UART","health":"ok","tokens":1121,"nodes":141,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6062,"rust":3223,"verilog":9480,"verilog_hir":450,"zig":6839},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":25,"ExprLiteral":14,"StructDecl":1,"ExprIdentifier":24,"FnDecl":5,"ExprReturn":5,"ExprBinary":1,"TestBlock":17,"StmtExpr":35,"InvariantBlock":11},"tags":["domain/fpga","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions, 1 struct and 25 constants. Carries 17 tests and 11 invariants. 288 lines compile to 1,121 tokens and 141 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 9.3 KB. Clean through every layer."},{"path":"specs/boards/xc7a100t_full.t27","category":"specs/boards","name":"xc7a100t_full","module":"BoardFullXC7A100T","lines":357,"bytes":9813,"description":"t27/specs/boards/xc7a100t_full.t27 QMTECH XC7A100T-CSG324 Full Board Profile LED + UART + SPI + MAC debug, QMTECH Wukong expansion Note: 22 pins from full QMTECH XDC are missing in prjxray-db","health":"ok","tokens":1514,"nodes":149,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7035,"rust":5043,"verilog":10747,"verilog_hir":410,"zig":8028},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":30,"ExprLiteral":13,"StructDecl":2,"ExprIdentifier":34,"FnDecl":4,"ExprReturn":4,"TestBlock":14,"StmtExpr":40,"InvariantBlock":5},"tags":["domain/fpga","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 2 structs and 30 constants. Carries 14 tests and 5 invariants. 357 lines compile to 1,514 tokens and 149 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 10.5 KB. Clean through every layer."},{"path":"specs/boards/xc7a100t_minimal.t27","category":"specs/boards","name":"xc7a100t_minimal","module":"BoardMinimalXC7A100T","lines":393,"bytes":10805,"description":"t27/specs/boards/xc7a100t_minimal.t27 QMTECH XC7A100T-CSG324 Minimal Board Profile Heartbeat LED + UART loopback, prjxray-verified pins only","health":"warn","tokens":1682,"nodes":318,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":8809,"rust":4729,"verilog":14719,"verilog_hir":693,"zig":10566},"repo":"t27","kinds":{"Module":15,"UseDecl":2,"ConstDecl":26,"ExprLiteral":48,"StructDecl":2,"ExprIdentifier":46,"ExprArrayLiteral":2,"FnDecl":7,"ExprReturn":20,"StmtIf":13,"ExprBinary":15,"ExprFieldAccess":20,"StmtLocal":1,"StmtWhile":1,"ExprCall":1,"ExprIndex":2,"StmtAssign":1,"ExprStructLit":1,"TestBlock":23,"StmtExpr":55,"InvariantBlock":15,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 26 constants. Carries 23 tests, 15 invariants and 2 benches. 393 lines compile to 1,682 tokens and 318 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 1 type error."},{"path":"specs/brain/brain.t27","category":"specs/brain","name":"brain","module":null,"lines":58,"bytes":2756,"description":null,"health":"warn","tokens":523,"nodes":15,"depth":7,"loss":15,"tcErrors":0,"failedBackends":[],"outBytes":{"c":728,"rust":66,"verilog":1839,"verilog_hir":243,"zig":349},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":2,"ExprCall":2,"ExprBinary":2,"ExprFieldAccess":2,"ExprIdentifier":2,"ExprLiteral":2},"tags":["domain/brain","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests. 58 lines compile to 523 tokens and 15 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 15 items dropped by error recovery."},{"path":"specs/brain/bus.t27","category":"specs/brain","name":"bus","module":"brain-bus","lines":17,"bytes":419,"description":"bus.t27 -- inter-region messaging contract (spec-first) Message shapes and routing rules expand with region specs.","health":"ok","tokens":47,"nodes":14,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1209,"rust":174,"verilog":2076,"verilog_hir":295,"zig":358},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"FnDecl":1,"ExprReturn":1,"ExprIdentifier":2,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":3},"tags":["domain/brain","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. Carries 1 test. 17 lines compile to 47 tokens and 14 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/brain/cognitive_loop.t27","category":"specs/brain","name":"cognitive_loop","module":"brain-cognitive-loop","lines":17,"bytes":515,"description":"cognitive_loop.t27 -- sense -> evaluate -> decide -> act -> consolidate (spec-first) Phase timing contract lives in phi_timing.t27; this module holds loop identity constants.","health":"ok","tokens":49,"nodes":14,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1287,"rust":189,"verilog":2138,"verilog_hir":325,"zig":394},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"FnDecl":1,"ExprReturn":1,"ExprIdentifier":2,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":3},"tags":["domain/brain","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. Carries 1 test. 17 lines compile to 49 tokens and 14 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/brain/neural_gamma.t27","category":"specs/brain","name":"neural_gamma","module":null,"lines":89,"bytes":2008,"description":null,"health":"warn","tokens":342,"nodes":20,"depth":6,"loss":27,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1265,"rust":254,"verilog":2771,"verilog_hir":243,"zig":569},"repo":"t27","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":4,"TestBlock":4,"StmtExpr":2,"ExprCall":4,"ExprBinary":2,"ExprLiteral":2},"tags":["domain/brain","has/enums","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 1 enum. Carries 4 tests. 89 lines compile to 342 tokens and 20 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Compiles with 27 items dropped by error recovery."},{"path":"specs/brain/phi_timing.t27","category":"specs/brain","name":"phi_timing","module":"brain-phi-timing","lines":80,"bytes":3193,"description":"phi_timing.t27 -- phi-structured cognitive cycle timing (spec-first) Phase duration ratios follow INV-1; integer ms sum may differ slightly from 3*base_ms.","health":"ok","tokens":429,"nodes":159,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3562,"rust":1505,"verilog":5674,"verilog_hir":542,"zig":2358},"repo":"t27","kinds":{"Module":1,"ConstDecl":10,"ExprLiteral":8,"EnumDecl":1,"EnumVariant":5,"StructDecl":1,"ExprIdentifier":44,"FnDecl":4,"ExprReturn":4,"ExprStructLit":1,"ExprFieldAccess":6,"StmtLocal":11,"ExprCall":29,"ExprSwitch":1,"ExprBinary":16,"ExprEnumValue":8,"TestBlock":3,"StmtExpr":3,"ExprUnary":3},"tags":["domain/brain","has/enums","has/functions","has/structs","has/switch","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 10 constants. Carries 3 tests. 80 lines compile to 429 tokens and 159 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/brain/unified_state.t27","category":"specs/brain","name":"unified_state","module":"brain-unified-state","lines":94,"bytes":2948,"description":"unified_state.t27 -- Trinity Brain unified state (spec-first) Normative types for Strand VI. Zig/C/Verilog are generated under gen/ via t27c.","health":"ok","tokens":373,"nodes":114,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3099,"rust":1824,"verilog":4687,"verilog_hir":401,"zig":1965},"repo":"t27","kinds":{"Module":1,"ConstDecl":8,"ExprLiteral":21,"EnumDecl":2,"EnumVariant":7,"StructDecl":3,"ExprIdentifier":26,"FnDecl":2,"ExprReturn":2,"ExprStructLit":3,"ExprFieldAccess":18,"ExprEnumValue":2,"TestBlock":2,"StmtLocal":1,"ExprCall":7,"StmtExpr":4,"ExprUnary":4,"ExprBinary":1},"tags":["domain/brain","has/enums","has/functions","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 3 structs, 2 enums and 8 constants. Carries 2 tests. 94 lines compile to 373 tokens and 114 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/bus/pubsub.t27","category":"specs/bus","name":"pubsub","module":"bus-pubsub","lines":670,"bytes":17611,"description":"bus/pubsub.t27 — Publish/Subscribe Patterns Pub/sub interface for event-driven communication","health":"warn","tokens":2651,"nodes":953,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":17465,"rust":7427,"verilog":31022,"verilog_hir":2358,"zig":14379},"repo":"t27","kinds":{"Module":33,"UseDecl":7,"ConstDecl":8,"ExprLiteral":143,"StructDecl":11,"ExprIdentifier":208,"FnDecl":28,"ExprReturn":37,"ExprStructLit":15,"ExprFieldAccess":104,"ExprUnary":27,"ExprArrayLiteral":9,"ExprBinary":62,"StmtIf":15,"ExprCall":81,"StmtFor":13,"ExprIndex":9,"StmtLocal":36,"StmtAssign":23,"TestBlock":17,"StmtExpr":41,"ExprEnumValue":3,"InvariantBlock":16,"BenchBlock":7},"tags":["domain/network","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 28 functions, 11 structs and 8 constants. Carries 17 tests, 16 invariants and 7 benches. 670 lines compile to 2,651 tokens and 953 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 30.3 KB. Compiles with 1 type error."},{"path":"specs/bus/schema.t27","category":"specs/bus","name":"schema","module":"bus-schema","lines":657,"bytes":17052,"description":"bus/schema.t27 — Event Type Definitions Core event types and structures for the event bus","health":"ok","tokens":2568,"nodes":871,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":17523,"rust":8067,"verilog":28706,"verilog_hir":1856,"zig":14100},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":28,"ExprLiteral":134,"EnumDecl":5,"EnumVariant":28,"StructDecl":12,"ExprIdentifier":174,"FnDecl":20,"ExprReturn":21,"ExprStructLit":12,"ExprFieldAccess":85,"ExprEnumValue":22,"ExprUnary":26,"ExprArrayLiteral":5,"ExprBinary":40,"ExprCall":95,"ExprSwitch":3,"StmtIf":5,"StmtLocal":30,"StmtFor":8,"StmtAssign":16,"TestBlock":19,"StmtExpr":45,"InvariantBlock":17,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 20 functions, 12 structs, 5 enums and 28 constants. Carries 19 tests, 17 invariants and 6 benches. 657 lines compile to 2,568 tokens and 871 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 28.0 KB. Clean through every layer."},{"path":"specs/cloud/railway_deploy.t27","category":"specs/cloud","name":"railway_deploy","module":"cloud-railway-deploy","lines":363,"bytes":9070,"description":"cloud/railway_deploy.t27 — Autonomous Railway Deployment","health":"warn","tokens":1092,"nodes":455,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7326,"rust":2531,"verilog":12422,"verilog_hir":879,"zig":5567},"repo":"t27","kinds":{"Module":5,"UseDecl":3,"ConstDecl":11,"ExprLiteral":98,"StructDecl":4,"EnumDecl":1,"EnumVariant":9,"FnDecl":4,"StmtLocal":16,"ExprIdentifier":75,"StmtAssign":16,"ExprIndex":16,"ExprStructLit":11,"ExprFieldAccess":43,"StmtWhile":2,"ExprBinary":47,"ExprCall":37,"ExprReturn":4,"TestBlock":17,"StmtExpr":27,"StmtIf":1,"InvariantBlock":6,"BenchBlock":1,"StmtFor":1},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions, 4 structs, 1 enum and 11 constants. Carries 17 tests, 6 invariants and 1 bench. 363 lines compile to 1,092 tokens and 455 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.1 KB. Compiles with 1 type error."},{"path":"specs/compiler/diagnostics.t27","category":"specs/compiler","name":"diagnostics","module":"Diagnostics","lines":148,"bytes":4220,"description":null,"health":"ok","tokens":680,"nodes":175,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4674,"rust":2396,"verilog":7845,"verilog_hir":774,"zig":4069},"repo":"t27","kinds":{"Module":4,"EnumDecl":2,"EnumVariant":18,"StructDecl":1,"ExprIdentifier":48,"FnDecl":8,"ExprReturn":11,"ExprStructLit":1,"ExprFieldAccess":9,"ExprBinary":27,"StmtIf":3,"ExprCall":3,"ExprLiteral":4,"TestBlock":11,"StmtExpr":22,"InvariantBlock":3},"tags":["domain/compiler","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions, 1 struct and 2 enums. Carries 11 tests and 3 invariants. 148 lines compile to 680 tokens and 175 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.7 KB. Clean through every layer."},{"path":"specs/compiler/lexer.t27","category":"specs/compiler","name":"lexer","module":"Lexing","lines":583,"bytes":22503,"description":null,"health":"ok","tokens":5304,"nodes":2394,"depth":20,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":20444,"rust":14216,"verilog":30803,"verilog_hir":1722,"zig":19077},"repo":"t27","kinds":{"Module":127,"UseDecl":1,"EnumDecl":1,"EnumVariant":67,"StructDecl":2,"ExprIdentifier":612,"FnDecl":19,"ExprReturn":55,"ExprStructLit":5,"ExprFieldAccess":140,"ExprLiteral":389,"StmtIf":101,"ExprBinary":406,"ExprIndex":142,"StmtLocal":43,"ExprCall":103,"StmtAssign":104,"StmtWhile":10,"ExprArrayLiteral":4,"StmtBreak":4,"TestBlock":16,"StmtExpr":40,"InvariantBlock":3},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 19 functions, 2 structs and 1 enum. Carries 16 tests and 3 invariants. 583 lines compile to 5,304 tokens and 2,394 AST nodes, depth 20. Emits 5 of 5 backends; largest is Verilog at 30.1 KB. Clean through every layer."},{"path":"specs/compiler/linker.t27","category":"specs/compiler","name":"linker","module":"Linking","lines":156,"bytes":4048,"description":null,"health":"ok","tokens":664,"nodes":64,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2576,"rust":1603,"verilog":3984,"verilog_hir":723,"zig":1530},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"EnumDecl":1,"EnumVariant":5,"StructDecl":3,"ExprIdentifier":20,"ConstDecl":2,"ExprLiteral":8,"FnDecl":4,"ExprReturn":3,"ExprStructLit":3,"ExprFieldAccess":13},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 3 structs, 1 enum and 2 constants. 156 lines compile to 664 tokens and 64 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/compiler/meta_compile.t27","category":"specs/compiler","name":"meta_compile","module":"MetaCompilation","lines":70,"bytes":1886,"description":null,"health":"ok","tokens":289,"nodes":92,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2802,"rust":1070,"verilog":4591,"verilog_hir":459,"zig":1891},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":22,"ConstDecl":1,"ExprLiteral":10,"FnDecl":4,"ExprReturn":4,"ExprStructLit":1,"ExprFieldAccess":22,"ExprBinary":10,"TestBlock":4,"StmtExpr":8,"InvariantBlock":2},"tags":["domain/compiler","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct and 1 constant. Carries 4 tests and 2 invariants. 70 lines compile to 289 tokens and 92 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/compiler/mod_structure.t27","category":"specs/compiler","name":"mod_structure","module":"compiler-mod-structure","lines":124,"bytes":3540,"description":"compiler/mod_structure.t27 — Module Structure and Ring Validation Trinity S³AI — Spec-First Architecture","health":"ok","tokens":419,"nodes":160,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3583,"rust":1607,"verilog":4622,"verilog_hir":393,"zig":2157},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":36,"EnumDecl":1,"EnumVariant":4,"StructDecl":1,"FnDecl":2,"StmtLocal":4,"ExprArrayLiteral":1,"StmtExpr":12,"ExprCall":17,"ExprStructLit":6,"ExprFieldAccess":31,"ExprIdentifier":18,"ExprReturn":2,"ExprBinary":16,"TestBlock":2,"InvariantBlock":1},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct, 1 enum and 4 constants. Carries 2 tests and 1 invariant. 124 lines compile to 419 tokens and 160 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/compiler/optimizer.t27","category":"specs/compiler","name":"optimizer","module":"Optimization","lines":286,"bytes":8976,"description":null,"health":"ok","tokens":1580,"nodes":598,"depth":17,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9038,"rust":6098,"verilog":14555,"verilog_hir":1307,"zig":8579},"repo":"t27","kinds":{"Module":37,"UseDecl":1,"EnumDecl":1,"EnumVariant":6,"StructDecl":2,"ExprIdentifier":145,"FnDecl":13,"ExprReturn":36,"ExprStructLit":3,"ExprFieldAccess":52,"ExprLiteral":89,"ExprBinary":88,"StmtIf":33,"ExprCall":12,"ExprIndex":7,"StmtLocal":13,"StmtWhile":3,"StmtAssign":9,"ExprUnary":1,"TestBlock":14,"StmtExpr":28,"InvariantBlock":5},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 2 structs and 1 enum. Carries 14 tests and 5 invariants. 286 lines compile to 1,580 tokens and 598 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 14.2 KB. Clean through every layer."},{"path":"specs/compiler/parser.t27","category":"specs/compiler","name":"parser","module":"Parsing","lines":1619,"bytes":55123,"description":"specs/compiler/parser.t27 T27 Parser Specification -- Self-hosting compiler core This module defines the complete recursive descent parser for the T27 language. It is a 1:1 port of bootstrap/src/compiler.rs Parser to t27 spec format.","health":"ok","tokens":10927,"nodes":3738,"depth":22,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":48560,"rust":38137,"verilog":70607,"verilog_hir":3671,"zig":44759},"repo":"t27","kinds":{"Module":247,"UseDecl":2,"ConstDecl":1,"ExprLiteral":135,"EnumDecl":1,"EnumVariant":32,"StructDecl":2,"ExprIdentifier":999,"FnDecl":51,"StmtLocal":146,"ExprStructLit":2,"StmtAssign":136,"ExprFieldAccess":380,"StmtExpr":338,"ExprCall":647,"ExprReturn":76,"ExprBinary":242,"StmtIf":170,"StmtWhile":40,"StmtBreak":9,"ExprArrayLiteral":1,"ExprIndex":1,"ExprUnary":69,"StmtContinue":1,"TestBlock":10},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 51 functions, 2 structs, 1 enum and 1 constant. Carries 10 tests. 1619 lines compile to 10,927 tokens and 3,738 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 69.0 KB. Clean through every layer."},{"path":"specs/compiler/pipeline.t27","category":"specs/compiler","name":"pipeline","module":"Pipeline","lines":170,"bytes":4503,"description":null,"health":"ok","tokens":710,"nodes":202,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4528,"rust":2228,"verilog":8208,"verilog_hir":620,"zig":4150},"repo":"t27","kinds":{"Module":7,"UseDecl":7,"EnumDecl":1,"EnumVariant":6,"StructDecl":2,"ExprIdentifier":31,"FnDecl":6,"ExprReturn":12,"ExprStructLit":3,"ExprFieldAccess":33,"ExprLiteral":38,"StmtIf":6,"ExprBinary":11,"TestBlock":13,"StmtExpr":24,"InvariantBlock":2},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 2 structs and 1 enum. Carries 13 tests and 2 invariants. 170 lines compile to 710 tokens and 202 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.0 KB. Clean through every layer."},{"path":"specs/compiler/stdlib.t27","category":"specs/compiler","name":"stdlib","module":"Stdlib","lines":663,"bytes":16035,"description":null,"health":"warn","tokens":3694,"nodes":1367,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15542,"rust":10188,"verilog":29202,"verilog_hir":4222,"zig":15870},"repo":"t27","kinds":{"Module":43,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":6,"ExprIdentifier":336,"ConstDecl":3,"ExprLiteral":172,"FnDecl":50,"ExprReturn":72,"ExprStructLit":14,"ExprFieldAccess":183,"ExprArrayLiteral":8,"StmtIf":25,"ExprBinary":91,"StmtAssign":86,"ExprIndex":70,"StmtLocal":35,"StmtWhile":17,"ExprUnary":2,"ExprCall":11,"TestBlock":40,"StmtExpr":88,"InvariantBlock":9},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 50 functions, 6 structs, 1 enum and 3 constants. Carries 40 tests and 9 invariants. 663 lines compile to 3,694 tokens and 1,367 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 28.5 KB. Compiles with 1 type error."},{"path":"specs/compiler/typechecker.t27","category":"specs/compiler","name":"typechecker","module":"TypeChecking","lines":694,"bytes":24448,"description":null,"health":"ok","tokens":4983,"nodes":1777,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":22361,"rust":16763,"verilog":36100,"verilog_hir":2520,"zig":22869},"repo":"t27","kinds":{"Module":121,"UseDecl":2,"EnumDecl":1,"EnumVariant":20,"StructDecl":6,"ExprIdentifier":506,"ConstDecl":3,"ExprLiteral":159,"FnDecl":32,"ExprReturn":119,"ExprStructLit":8,"ExprFieldAccess":168,"ExprArrayLiteral":5,"StmtIf":109,"ExprBinary":220,"StmtAssign":21,"ExprIndex":39,"StmtLocal":29,"StmtWhile":10,"ExprCall":69,"ExprUnary":8,"StmtExpr":81,"TestBlock":35,"InvariantBlock":6},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 32 functions, 6 structs, 1 enum and 3 constants. Carries 35 tests and 6 invariants. 694 lines compile to 4,983 tokens and 1,777 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 35.3 KB. Clean through every layer."},{"path":"specs/config/load.t27","category":"specs/config","name":"load","module":"config-load","lines":608,"bytes":16362,"description":"config/load.t27 — Config Load/Save Specification Configuration file I/O, merging, validation","health":"ok","tokens":2465,"nodes":806,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16227,"rust":6822,"verilog":26324,"verilog_hir":2265,"zig":13487},"repo":"t27","kinds":{"Module":20,"UseDecl":2,"ConstDecl":10,"ExprLiteral":71,"EnumDecl":3,"EnumVariant":9,"StructDecl":6,"ExprIdentifier":183,"FnDecl":24,"StmtLocal":54,"ExprCall":104,"ExprReturn":25,"ExprFieldAccess":84,"ExprStructLit":10,"ExprEnumValue":13,"ExprUnary":34,"ExprArrayLiteral":10,"StmtFor":12,"StmtAssign":22,"StmtIf":7,"ExprBinary":25,"ExprIf":1,"ExprSwitch":1,"TestBlock":12,"StmtExpr":39,"InvariantBlock":20,"BenchBlock":5},"tags":["domain/tools","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 24 functions, 6 structs, 3 enums and 10 constants. Carries 12 tests, 20 invariants and 5 benches. 608 lines compile to 2,465 tokens and 806 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 25.7 KB. Clean through every layer."},{"path":"specs/config/migrate.t27","category":"specs/config","name":"migrate","module":"config-migrate","lines":663,"bytes":18030,"description":"config/migrate.t27 — Config Migration Specification Version detection, upgrade, compatibility handling","health":"warn","tokens":2665,"nodes":442,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10895,"rust":7917,"verilog":15625,"verilog_hir":2689,"zig":7875},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":6,"ExprLiteral":31,"EnumDecl":3,"EnumVariant":14,"StructDecl":6,"ExprIdentifier":145,"FnDecl":28,"ExprReturn":29,"ExprBinary":3,"ExprStructLit":10,"ExprFieldAccess":60,"ExprEnumValue":6,"ExprUnary":13,"ExprArrayLiteral":12,"ExprCall":23,"StmtLocal":22,"StmtIf":1,"StmtFor":7,"StmtAssign":11,"ExprIf":1,"TestBlock":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 28 functions, 6 structs, 3 enums and 6 constants. Carries 1 test. 663 lines compile to 2,665 tokens and 442 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/config/paths.t27","category":"specs/config","name":"paths","module":"config-paths","lines":641,"bytes":15895,"description":"config/paths.t27 — Config Paths Specification Path resolution, directory creation, validation","health":"ok","tokens":2464,"nodes":896,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15854,"rust":6625,"verilog":25249,"verilog_hir":1852,"zig":12671},"repo":"t27","kinds":{"Module":29,"UseDecl":1,"ConstDecl":9,"ExprLiteral":114,"EnumDecl":2,"EnumVariant":11,"StructDecl":3,"ExprIdentifier":200,"FnDecl":25,"ExprReturn":37,"ExprStructLit":8,"ExprFieldAccess":67,"StmtLocal":41,"ExprIf":4,"ExprBinary":53,"ExprCall":106,"StmtIf":18,"ExprEnumValue":16,"ExprIndex":9,"StmtFor":10,"StmtAssign":20,"ExprUnary":24,"ExprArrayLiteral":5,"TestBlock":14,"StmtExpr":42,"InvariantBlock":23,"BenchBlock":5},"tags":["domain/tools","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 25 functions, 3 structs, 2 enums and 9 constants. Carries 14 tests, 23 invariants and 5 benches. 641 lines compile to 2,464 tokens and 896 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 24.7 KB. Clean through every layer."},{"path":"specs/config/schema.t27","category":"specs/config","name":"schema","module":"config-schema","lines":703,"bytes":19048,"description":"config/schema.t27 — Config Schema Specification Configuration structures for providers, agents, LSP","health":"ok","tokens":3071,"nodes":958,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":18410,"rust":7989,"verilog":31073,"verilog_hir":2297,"zig":15330},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"ConstDecl":10,"ExprLiteral":101,"EnumDecl":2,"EnumVariant":8,"StructDecl":12,"ExprIdentifier":196,"FnDecl":27,"ExprReturn":26,"ExprStructLit":14,"ExprFieldAccess":113,"ExprEnumValue":26,"StmtLocal":55,"ExprCall":129,"ExprUnary":59,"ExprArrayLiteral":21,"ExprBinary":20,"StmtFor":8,"StmtIf":1,"StmtAssign":15,"TestBlock":28,"StmtExpr":54,"InvariantBlock":18,"BenchBlock":4},"tags":["domain/tools","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 27 functions, 12 structs, 2 enums and 10 constants. Carries 28 tests, 18 invariants and 4 benches. 703 lines compile to 3,071 tokens and 958 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 30.3 KB. Clean through every layer."},{"path":"specs/conformance/e2e_scenarios.t27","category":"specs/conformance","name":"e2e_scenarios","module":null,"lines":265,"bytes":7796,"description":null,"health":"warn","tokens":1509,"nodes":425,"depth":10,"loss":64,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5137,"rust":321,"verilog":8487,"verilog_hir":243,"zig":4646},"repo":"t27","kinds":{"Module":1,"TestBlock":9,"StmtLocal":42,"ExprCall":75,"ExprLiteral":65,"ExprIdentifier":68,"StmtAssign":3,"ExprFieldAccess":45,"StmtExpr":29,"ExprUnary":55,"ExprArrayLiteral":4,"ExprStructLit":9,"ExprEnumValue":10,"ExprBinary":9,"StructDecl":1},"tags":["domain/testing","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 struct. Carries 9 tests. 265 lines compile to 1,509 tokens and 425 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Compiles with 64 items dropped by error recovery."},{"path":"specs/demos/jones_topology_decision_gate.t27","category":"specs/demos","name":"jones_topology_decision_gate","module":"JonesTopologyDecisionGate","lines":347,"bytes":29767,"description":"t27/specs/demos/jones_topology_decision_gate.t27 Decision Gate TH-01..TH-05 for H_1: Structure Similarity Classifier Tests if VSA dot_product + fixed phi constant can classify structures by complexity","health":"warn","tokens":1564,"nodes":375,"depth":10,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":6245,"rust":2719,"verilog":11314,"verilog_hir":669,"zig":7796},"repo":"t27","kinds":{"Module":8,"UseDecl":4,"ConstDecl":26,"ExprLiteral":44,"ExprIdentifier":80,"FnDecl":7,"StmtLocal":22,"ExprArrayLiteral":6,"StmtExpr":55,"ExprCall":16,"StmtWhile":6,"ExprBinary":30,"ExprIf":5,"ExprFieldAccess":29,"StmtAssign":6,"ExprReturn":8,"ExprSwitch":3,"StmtIf":1,"TestBlock":8,"InvariantBlock":7,"BenchBlock":4},"tags":["domain/tutorial","has/benches","has/functions","has/imports","has/invariants","has/loops","has/switch","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 7 functions and 26 constants. Carries 8 tests, 7 invariants and 4 benches. 347 lines compile to 1,564 tokens and 375 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.0 KB. Compiles with 6 type errors."},{"path":"specs/demos/jones_topology_filter.t27","category":"specs/demos","name":"jones_topology_filter","module":"JonesTopologyFilter","lines":318,"bytes":10711,"description":"t27/specs/demos/jones_topology_filter.t27 MVP: Structure Similarity Classifier using VSA + CS Constants WHAT THIS CODE ACTUALLY DOES: - Takes a hypervector representing a structure - Computes dot_product similarity with a reference structure - Classifies complexity based on similarity thresholds","health":"warn","tokens":1535,"nodes":338,"depth":12,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":7510,"rust":2714,"verilog":14401,"verilog_hir":672,"zig":8777},"repo":"t27","kinds":{"Module":17,"UseDecl":5,"StructDecl":1,"ExprIdentifier":66,"ConstDecl":5,"ExprLiteral":26,"FnDecl":6,"StmtLocal":17,"ExprCall":17,"ExprBinary":26,"StmtIf":6,"StmtAssign":7,"ExprReturn":8,"ExprStructLit":1,"ExprFieldAccess":19,"ExprArrayLiteral":3,"StmtWhile":4,"StmtExpr":67,"ExprIndex":1,"ExprIf":2,"TestBlock":17,"InvariantBlock":11,"BenchBlock":6},"tags":["domain/tutorial","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 5 constants. Carries 17 tests, 11 invariants and 6 benches. 318 lines compile to 1,535 tokens and 338 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Compiles with 4 type errors."},{"path":"specs/demos/simple_test.t27","category":"specs/demos","name":"simple_test","module":"SimpleTest","lines":15,"bytes":277,"description":"Simple test spec","health":"ok","tokens":33,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1013,"rust":98,"verilog":1870,"verilog_hir":249,"zig":426},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":1,"ExprLiteral":1,"TestBlock":1,"StmtExpr":2,"InvariantBlock":1},"tags":["domain/tutorial","has/constants-only","has/imports","has/invariants","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 constant. Carries 1 test and 1 invariant. 15 lines compile to 33 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/depin/prove.t27","category":"specs/depin","name":"prove","module":"depin","lines":285,"bytes":8731,"description":"DePIN proof-of-useful-compute spec Issue #40 — L-TRI-1: POST /prove endpoint","health":"ok","tokens":739,"nodes":139,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7541,"rust":1948,"verilog":14019,"verilog_hir":1243,"zig":5139},"repo":"t27","kinds":{"Module":1,"StructDecl":4,"ExprIdentifier":25,"FnDecl":11,"TestBlock":20,"InvariantBlock":13,"StmtExpr":16,"ExprCall":18,"ExprLiteral":17,"BenchBlock":3,"StmtLocal":3,"ExprArrayLiteral":3,"StmtAssign":2,"ExprUnary":3},"tags":["domain/other","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 4 structs. Carries 20 tests, 13 invariants and 3 benches. 285 lines compile to 739 tokens and 139 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Clean through every layer."},{"path":"specs/enrichment/audio_overview.t27","category":"specs/enrichment","name":"audio_overview","module":"enrichment","lines":163,"bytes":5680,"description":"audio_overview.t27 — Bilingual Audio Overview for NotebookLM Ring 091 — API-only multilingual enrichment","health":"ok","tokens":454,"nodes":115,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4702,"rust":2605,"verilog":8137,"verilog_hir":942,"zig":3619},"repo":"t27","kinds":{"Module":1,"ConstDecl":6,"ExprLiteral":19,"EnumDecl":2,"EnumVariant":5,"StructDecl":5,"ExprIdentifier":26,"FnDecl":7,"TestBlock":4,"StmtExpr":11,"ExprCall":18,"ExprBinary":6,"StmtLocal":1,"ExprUnary":1,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/tools","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions, 5 structs, 2 enums and 6 constants. Carries 4 tests, 2 invariants and 1 bench. 163 lines compile to 454 tokens and 115 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.9 KB. Clean through every layer."},{"path":"specs/enrichment/youtube_transcript.t27","category":"specs/enrichment","name":"youtube_transcript","module":"enrichment","lines":606,"bytes":20285,"description":"youtube_transcript.t27 — YouTube Transcript Extraction for NotebookLM Enrichment Ring 090 — Fallback for blocked YouTube URL uploads","health":"warn","tokens":2499,"nodes":749,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":12326,"rust":4200,"verilog":19987,"verilog_hir":879,"zig":10554},"repo":"t27","kinds":{"Module":35,"ConstDecl":5,"ExprLiteral":122,"ExprIdentifier":197,"EnumDecl":1,"EnumVariant":11,"StructDecl":3,"FnDecl":6,"StmtLocal":49,"ExprCall":76,"StmtFor":3,"StmtIf":28,"ExprReturn":12,"ExprBinary":52,"ExprIndex":5,"ExprUnary":5,"StmtAssign":22,"StmtContinue":4,"StmtWhile":1,"ExprIf":8,"ExprArrayLiteral":2,"ExprFieldAccess":72,"ExprStructLit":10,"TestBlock":13,"InvariantBlock":4,"BenchBlock":3},"tags":["domain/tools","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 6 functions, 3 structs, 1 enum and 5 constants. Carries 13 tests, 4 invariants and 3 benches. 606 lines compile to 2,499 tokens and 749 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 19.5 KB. Compiles with 1 type error."},{"path":"specs/file/operations.t27","category":"specs/file","name":"operations","module":"FileOperations","lines":446,"bytes":13273,"description":"specs/file/operations.t27 File Operations","health":"warn","tokens":1694,"nodes":251,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7446,"rust":2912,"verilog":11124,"verilog_hir":2164,"zig":7302},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":33,"TestBlock":10,"StmtExpr":24,"ExprCall":25,"ExprBinary":23,"ExprFieldAccess":49,"ExprIdentifier":34,"ExprLiteral":38,"StmtLocal":6,"ExprStructLit":5,"ExprArrayLiteral":1},"tags":["domain/storage","has/functions","has/imports","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 33 functions. Carries 10 tests. 446 lines compile to 1,694 tokens and 251 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/file/schema.t27","category":"specs/file","name":"schema","module":"File","lines":334,"bytes":11786,"description":"specs/file/schema.t27 File Types Specification","health":"ok","tokens":1017,"nodes":378,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6639,"rust":4289,"verilog":12209,"verilog_hir":483,"zig":5981},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"EnumDecl":5,"EnumVariant":21,"StructDecl":13,"ExprIdentifier":99,"ConstDecl":3,"ExprLiteral":51,"FnDecl":5,"ExprReturn":7,"ExprBinary":40,"StmtLocal":2,"ExprCall":48,"StmtFor":1,"StmtIf":2,"ExprFieldAccess":24,"ExprIndex":2,"TestBlock":13,"StmtExpr":35,"ExprUnary":2},"tags":["domain/storage","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions, 13 structs, 5 enums and 3 constants. Carries 13 tests. 334 lines compile to 1,017 tokens and 378 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 11.9 KB. Clean through every layer."},{"path":"specs/file/watcher.t27","category":"specs/file","name":"watcher","module":"FileWatcher","lines":551,"bytes":16816,"description":"specs/file/watcher.t27 File Watcher Operations","health":"warn","tokens":2139,"nodes":417,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8816,"rust":2844,"verilog":13255,"verilog_hir":1374,"zig":7857},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"FnDecl":20,"ExprIdentifier":64,"EnumDecl":2,"EnumVariant":7,"TestBlock":17,"StmtLocal":12,"ExprCall":41,"ExprLiteral":65,"StmtExpr":40,"ExprBinary":39,"ExprFieldAccess":87,"ExprStructLit":10,"ExprArrayLiteral":6,"ExprTry":1},"tags":["domain/storage","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 20 functions, 3 structs and 2 enums. Carries 17 tests. 551 lines compile to 2,139 tokens and 417 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/fpga/apb_bridge.t27","category":"specs/fpga","name":"apb_bridge","module":"ApbBridge","lines":348,"bytes":9210,"description":"t27/specs/fpga/apb_bridge.t27 APB (Advanced Peripheral Bus) Bridge Specification for Trinity T27 FPGA HIR Register-mapped peripheral bridge for low-bandwidth peripherals Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1563,"nodes":450,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8382,"rust":4644,"verilog":14269,"verilog_hir":1801,"zig":7894},"repo":"t27","kinds":{"Module":14,"ConstDecl":3,"ExprLiteral":57,"EnumDecl":1,"EnumVariant":3,"StructDecl":4,"ExprIdentifier":115,"FnDecl":16,"ExprReturn":18,"ExprStructLit":7,"ExprFieldAccess":57,"ExprBinary":40,"StmtLocal":9,"StmtIf":11,"StmtWhile":2,"StmtAssign":19,"ExprCall":1,"ExprIndex":2,"TestBlock":18,"StmtExpr":47,"InvariantBlock":5,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions, 4 structs, 1 enum and 3 constants. Carries 18 tests, 5 invariants and 1 bench. 348 lines compile to 1,563 tokens and 450 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.9 KB. Clean through every layer."},{"path":"specs/fpga/assembler.t27","category":"specs/fpga","name":"assembler","module":"Assembler","lines":347,"bytes":8722,"description":"t27/specs/fpga/assembler.t27 T27 Ternary Assembler Specification High-level assembler for the ternary ISA, compiles to machine code Supports R-type, I-type, and GF16 extended instructions Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1509,"nodes":383,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7815,"rust":4297,"verilog":13797,"verilog_hir":1651,"zig":7418},"repo":"t27","kinds":{"Module":7,"EnumDecl":2,"EnumVariant":7,"StructDecl":5,"ExprIdentifier":87,"FnDecl":18,"ExprReturn":21,"ExprStructLit":8,"ExprFieldAccess":66,"ExprLiteral":47,"ExprBinary":32,"StmtIf":6,"StmtLocal":3,"StmtAssign":3,"TestBlock":19,"StmtExpr":47,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 18 functions, 5 structs and 2 enums. Carries 19 tests, 4 invariants and 1 bench. 347 lines compile to 1,509 tokens and 383 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.5 KB. Clean through every layer."},{"path":"specs/fpga/axi4.t27","category":"specs/fpga","name":"axi4","module":"Axi4","lines":394,"bytes":10640,"description":"t27/specs/fpga/axi4.t27 AXI4-Lite and AXI4-Full Bus Interface Specification for Trinity T27 FPGA HIR Defines bus port groups for AW/AR/W/R/B channels Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1819,"nodes":655,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8945,"rust":5423,"verilog":14318,"verilog_hir":1710,"zig":8696},"repo":"t27","kinds":{"Module":26,"EnumDecl":1,"EnumVariant":2,"ConstDecl":19,"ExprLiteral":121,"StructDecl":2,"ExprIdentifier":167,"FnDecl":11,"ExprReturn":11,"ExprStructLit":4,"ExprFieldAccess":77,"ExprBinary":73,"StmtLocal":3,"StmtAssign":51,"StmtIf":25,"TestBlock":16,"StmtExpr":37,"InvariantBlock":7,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions, 2 structs, 1 enum and 19 constants. Carries 16 tests, 7 invariants and 2 benches. 394 lines compile to 1,819 tokens and 655 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.0 KB. Clean through every layer."},{"path":"specs/fpga/boards/arty_a7_integration.t27","category":"specs/fpga","name":"arty_a7_integration","module":"ArtyA7_Integration","lines":137,"bytes":4043,"description":"t27/specs/fpga/boards/arty_a7_integration.t27 Arty A7 Board-Level Integration Spec Full system: MAC + UART + SPI + Memory + Bridge + GF16 + TernaryISA Pin mappings match specs/fpga/constraints/arty_a7.xdc","health":"ok","tokens":636,"nodes":144,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4644,"rust":2081,"verilog":7952,"verilog_hir":536,"zig":3897},"repo":"t27","kinds":{"Module":5,"UseDecl":9,"ConstDecl":12,"ExprLiteral":23,"StructDecl":2,"ExprIdentifier":40,"FnDecl":3,"ExprReturn":3,"ExprBinary":8,"StmtLocal":4,"StmtIf":4,"ExprFieldAccess":4,"StmtAssign":4,"TestBlock":6,"ExprCall":6,"InvariantBlock":7,"BenchBlock":1,"StmtExpr":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 12 constants. Carries 6 tests, 7 invariants and 1 bench. 137 lines compile to 636 tokens and 144 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 7.8 KB. Clean through every layer."},{"path":"specs/fpga/boards/qmtech_a100t_integration.t27","category":"specs/fpga","name":"qmtech_a100t_integration","module":"QMTech_A100T_Integration","lines":96,"bytes":2568,"description":"t27/specs/fpga/boards/qmtech_a100t_integration.t27 QMTech XC7A100T Board-Level Integration Spec Full system for QMTech A100T development board","health":"ok","tokens":365,"nodes":62,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3292,"rust":1190,"verilog":5901,"verilog_hir":387,"zig":2047},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":10,"ExprLiteral":9,"StructDecl":2,"ExprIdentifier":17,"FnDecl":1,"ExprReturn":1,"ExprBinary":2,"TestBlock":7,"StmtLocal":1,"ExprCall":2,"InvariantBlock":3,"BenchBlock":1,"StmtExpr":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function, 2 structs and 10 constants. Carries 7 tests, 3 invariants and 1 bench. 96 lines compile to 365 tokens and 62 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Clean through every layer."},{"path":"specs/fpga/bootrom.t27","category":"specs/fpga","name":"bootrom","module":"BootROM","lines":140,"bytes":4020,"description":"t27/specs/fpga/bootrom.t27 T27 Boot ROM Specification Boot sequence stages, init vectors, integrity checksum Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":753,"nodes":154,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3724,"rust":1479,"verilog":7304,"verilog_hir":751,"zig":3770},"repo":"t27","kinds":{"Module":4,"StructDecl":2,"ExprIdentifier":36,"FnDecl":6,"ExprReturn":6,"ExprStructLit":2,"ExprFieldAccess":17,"ExprBinary":10,"ExprLiteral":11,"StmtLocal":3,"StmtIf":2,"StmtAssign":4,"StmtWhile":1,"ExprIndex":1,"TestBlock":12,"StmtExpr":35,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 2 structs. Carries 12 tests, 1 invariant and 1 bench. 140 lines compile to 753 tokens and 154 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"specs/fpga/bridge.t27","category":"specs/fpga","name":"bridge","module":"FPGA_Bridge","lines":501,"bytes":17323,"description":"t27/specs/fpga/bridge.t27 FPGA Communication Bridge Specification Combines UART and SPI for host and peripheral communication","health":"warn","tokens":2136,"nodes":713,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":11048,"rust":3240,"verilog":19422,"verilog_hir":1746,"zig":12391},"repo":"t27","kinds":{"Module":24,"UseDecl":4,"ConstDecl":24,"ExprLiteral":75,"StructDecl":1,"ExprIdentifier":194,"ExprStructLit":1,"ExprFieldAccess":82,"ExprArrayLiteral":5,"FnDecl":12,"StmtLocal":26,"ExprBinary":61,"StmtIf":18,"ExprReturn":15,"StmtAssign":34,"ExprIndex":9,"ExprCall":28,"StmtExpr":61,"StmtWhile":2,"ExprUnary":2,"TestBlock":21,"InvariantBlock":10,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 12 functions, 1 struct and 24 constants. Carries 21 tests, 10 invariants and 4 benches. 501 lines compile to 2,136 tokens and 713 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.0 KB. Compiles with 2 type errors."},{"path":"specs/fpga/clock_domain.t27","category":"specs/fpga","name":"clock_domain","module":"ClockDomain","lines":231,"bytes":5913,"description":"t27/specs/fpga/clock_domain.t27 Clock Domain Abstraction for Trinity T27 FPGA HIR Defines clock sources, PLL configs, and cross-domain crossing Uses flat structs (parser-compatible)","health":"ok","tokens":973,"nodes":200,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5581,"rust":2712,"verilog":9551,"verilog_hir":1117,"zig":4905},"repo":"t27","kinds":{"Module":4,"EnumDecl":3,"EnumVariant":10,"StructDecl":3,"ExprIdentifier":40,"FnDecl":12,"ExprReturn":15,"ExprStructLit":4,"ExprFieldAccess":32,"ExprLiteral":16,"ExprBinary":11,"StmtIf":3,"ExprCall":1,"TestBlock":12,"StmtExpr":28,"InvariantBlock":5,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 3 structs and 3 enums. Carries 12 tests, 5 invariants and 1 bench. 231 lines compile to 973 tokens and 200 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 9.3 KB. Clean through every layer."},{"path":"specs/fpga/crossopt.t27","category":"specs/fpga","name":"crossopt","module":"CrossOpt","lines":126,"bytes":3615,"description":"t27/specs/fpga/crossopt.t27 T27 Cross-Module Optimization Specification Inter-module constant propagation, dead signal elimination, instance merging Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":564,"nodes":127,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4067,"rust":1799,"verilog":7159,"verilog_hir":833,"zig":3173},"repo":"t27","kinds":{"Module":2,"StructDecl":2,"ExprIdentifier":31,"FnDecl":8,"ExprReturn":9,"ExprStructLit":3,"ExprFieldAccess":23,"ExprLiteral":9,"ExprBinary":8,"ExprCall":3,"StmtIf":1,"TestBlock":6,"StmtExpr":19,"InvariantBlock":1,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 2 structs. Carries 6 tests, 1 invariant and 2 benches. 126 lines compile to 564 tokens and 127 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.0 KB. Clean through every layer."},{"path":"specs/fpga/cts.t27","category":"specs/fpga","name":"cts","module":"CTS","lines":225,"bytes":5735,"description":"t27/specs/fpga/cts.t27 T27 Clock Tree Synthesis Specification PLL configuration, clock buffer trees, skew estimation Artix-7: BUFH=0.05ns, BUFG=0.1ns, PLL jitter=50ps, max skew=100ps Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":966,"nodes":248,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5730,"rust":2919,"verilog":10984,"verilog_hir":1296,"zig":5270},"repo":"t27","kinds":{"Module":8,"StructDecl":4,"ExprIdentifier":58,"FnDecl":13,"StmtLocal":3,"ExprLiteral":29,"StmtIf":7,"ExprBinary":16,"StmtAssign":4,"ExprReturn":17,"ExprStructLit":5,"ExprFieldAccess":30,"TestBlock":15,"StmtExpr":35,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions and 4 structs. Carries 15 tests, 2 invariants and 2 benches. 225 lines compile to 966 tokens and 248 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.7 KB. Clean through every layer."},{"path":"specs/fpga/dft.t27","category":"specs/fpga","name":"dft","module":"DFT","lines":264,"bytes":6604,"description":"t27/specs/fpga/dft.t27 T27 Design-for-Test Specification Scan chains, BIST controllers, JTAG TAP, test coverage estimation Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1105,"nodes":285,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6160,"rust":3191,"verilog":11559,"verilog_hir":1292,"zig":5916},"repo":"t27","kinds":{"Module":8,"StructDecl":4,"ExprIdentifier":64,"FnDecl":15,"ExprReturn":16,"ExprStructLit":5,"ExprFieldAccess":33,"ExprBinary":25,"ExprLiteral":30,"EnumDecl":1,"EnumVariant":3,"StmtIf":7,"StmtLocal":3,"StmtAssign":6,"TestBlock":17,"StmtExpr":45,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions, 4 structs and 1 enum. Carries 17 tests, 2 invariants and 1 bench. 264 lines compile to 1,105 tokens and 285 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"specs/fpga/e2e_demo.t27","category":"specs/fpga","name":"e2e_demo","module":"E2eDemo","lines":253,"bytes":6432,"description":"t27/specs/fpga/e2e_demo.t27 T27 End-to-End Demo Specification Exercises the full toolchain: assembler -> ternary core -> GF16 -> VCD trace Validates the complete FPGA pipeline from spec to hardware simulation Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1029,"nodes":290,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5815,"rust":2924,"verilog":10543,"verilog_hir":1149,"zig":5607},"repo":"t27","kinds":{"Module":9,"StructDecl":3,"ExprIdentifier":54,"FnDecl":13,"ExprReturn":17,"ExprStructLit":5,"ExprFieldAccess":44,"ExprLiteral":42,"StmtIf":8,"ExprBinary":24,"StmtLocal":2,"StmtAssign":5,"ExprCall":1,"TestBlock":16,"StmtExpr":43,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions and 3 structs. Carries 16 tests, 3 invariants and 1 bench. 253 lines compile to 1,029 tokens and 290 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"specs/fpga/fifo.t27","category":"specs/fpga","name":"fifo","module":"Fifo","lines":365,"bytes":9822,"description":"t27/specs/fpga/fifo.t27 Synchronous and Asynchronous FIFO Stdlib for Trinity T27 FPGA HIR Defines FIFO configuration with depth, data width, and flags Uses flat arrays + count fields (parser-compatible)","health":"warn","tokens":1769,"nodes":416,"depth":8,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7877,"rust":4050,"verilog":13443,"verilog_hir":1682,"zig":8178},"repo":"t27","kinds":{"Module":9,"EnumDecl":1,"EnumVariant":2,"StructDecl":3,"ExprIdentifier":86,"ConstDecl":1,"ExprLiteral":48,"FnDecl":18,"ExprReturn":19,"ExprStructLit":4,"ExprFieldAccess":72,"StmtLocal":9,"StmtAssign":17,"ExprBinary":24,"StmtWhile":1,"StmtIf":7,"TestBlock":18,"StmtExpr":69,"InvariantBlock":6,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 18 functions, 3 structs, 1 enum and 1 constant. Carries 18 tests, 6 invariants and 2 benches. 365 lines compile to 1,769 tokens and 416 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 13.1 KB. Compiles with 1 type error."},{"path":"specs/fpga/formal.t27","category":"specs/fpga","name":"formal","module":"Formal","lines":353,"bytes":9441,"description":"t27/specs/fpga/formal.t27 Formal Verification Specification for Trinity T27 FPGA HIR Defines assertion kinds, properties, and coverage points Generates SystemVerilog Assertions (SVA) alongside Verilog Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1582,"nodes":402,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8157,"rust":4703,"verilog":14629,"verilog_hir":1571,"zig":8545},"repo":"t27","kinds":{"Module":13,"EnumDecl":3,"EnumVariant":11,"ConstDecl":3,"ExprLiteral":47,"StructDecl":4,"ExprIdentifier":97,"FnDecl":18,"ExprReturn":18,"ExprStructLit":5,"ExprFieldAccess":49,"StmtLocal":6,"StmtAssign":14,"ExprBinary":31,"StmtIf":12,"TestBlock":18,"StmtExpr":48,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 18 functions, 4 structs, 3 enums and 3 constants. Carries 18 tests, 4 invariants and 1 bench. 353 lines compile to 1,582 tokens and 402 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 14.3 KB. Clean through every layer."},{"path":"specs/fpga/gf16_accel.t27","category":"specs/fpga","name":"gf16_accel","module":"Gf16Accel","lines":423,"bytes":11072,"description":"t27/specs/fpga/gf16_accel.t27 GF(16) Hardware Accelerator Specification for Trinity T27 FPGA HIR Defines GF16 MAC, FFT, and VSA (Vector Space Architecture) operations Connects phi-identity (phi^2 = phi + 1, phi^2 + phi^-2 = 3) to silicon Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1778,"nodes":472,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9690,"rust":4949,"verilog":17829,"verilog_hir":1647,"zig":9839},"repo":"t27","kinds":{"Module":17,"ConstDecl":4,"ExprLiteral":60,"EnumDecl":1,"EnumVariant":8,"StructDecl":4,"ExprIdentifier":98,"FnDecl":21,"ExprReturn":24,"ExprStructLit":6,"ExprFieldAccess":58,"ExprBinary":33,"StmtIf":15,"StmtLocal":7,"StmtWhile":1,"StmtAssign":14,"TestBlock":27,"StmtExpr":63,"InvariantBlock":8,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions, 4 structs, 1 enum and 4 constants. Carries 27 tests, 8 invariants and 3 benches. 423 lines compile to 1,778 tokens and 472 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.4 KB. Clean through every layer."},{"path":"specs/fpga/hir.t27","category":"specs/fpga","name":"hir","module":"Hir","lines":692,"bytes":19053,"description":"t27/specs/fpga/hir.t27 Hardware Intermediate Representation (HIR) for Trinity T27 Decouples .t27 spec semantics from Verilog/SystemVerilog emission Uses flat arrays + count fields (parser-compatible, no Vec/generics)","health":"warn","tokens":3360,"nodes":921,"depth":12,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15494,"rust":10732,"verilog":25714,"verilog_hir":2384,"zig":15752},"repo":"t27","kinds":{"Module":24,"ConstDecl":9,"ExprLiteral":107,"EnumDecl":7,"EnumVariant":22,"StructDecl":9,"ExprIdentifier":227,"FnDecl":32,"ExprReturn":37,"ExprStructLit":17,"ExprFieldAccess":164,"ExprArrayLiteral":9,"StmtLocal":18,"StmtIf":16,"ExprBinary":55,"StmtAssign":28,"ExprIndex":15,"ExprCall":3,"StmtWhile":7,"TestBlock":26,"StmtExpr":79,"InvariantBlock":8,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 32 functions, 9 structs, 7 enums and 9 constants. Carries 26 tests, 8 invariants and 2 benches. 692 lines compile to 3,360 tokens and 921 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 25.1 KB. Compiles with 1 type error."},{"path":"specs/fpga/hw_types.t27","category":"specs/fpga","name":"hw_types","module":"HwTypes","lines":335,"bytes":8002,"description":"t27/specs/fpga/hw_types.t27 Hardware Type System for Trinity T27 FPGA HIR Defines signal-level types with bit-accurate widths and signedness","health":"ok","tokens":1307,"nodes":339,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7257,"rust":3482,"verilog":12511,"verilog_hir":1051,"zig":6802},"repo":"t27","kinds":{"Module":8,"EnumDecl":3,"EnumVariant":14,"StructDecl":1,"ExprIdentifier":35,"FnDecl":15,"ExprReturn":22,"ExprStructLit":8,"ExprFieldAccess":86,"ExprLiteral":67,"ExprBinary":9,"StmtIf":7,"TestBlock":22,"StmtExpr":31,"InvariantBlock":9,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions, 1 struct and 3 enums. Carries 22 tests, 9 invariants and 2 benches. 335 lines compile to 1,307 tokens and 339 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/fpga/linker.t27","category":"specs/fpga","name":"linker","module":"Linker","lines":327,"bytes":8187,"description":"t27/specs/fpga/linker.t27 T27 Linker Specification Links assembled object files into executable images for ternary core Handles section merging, symbol resolution, address assignment, relocations Uses flat arrays + count fields (parser-compatible)","health":"warn","tokens":1425,"nodes":349,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6968,"rust":3887,"verilog":12543,"verilog_hir":1552,"zig":6863},"repo":"t27","kinds":{"Module":5,"StructDecl":5,"ExprIdentifier":80,"FnDecl":19,"ExprReturn":21,"ExprStructLit":9,"ExprFieldAccess":73,"ExprLiteral":41,"ExprBinary":18,"StmtIf":4,"StmtLocal":3,"StmtAssign":2,"TestBlock":16,"StmtExpr":50,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 19 functions and 5 structs. Carries 16 tests, 2 invariants and 1 bench. 327 lines compile to 1,425 tokens and 349 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/fpga/mac.t27","category":"specs/fpga","name":"mac","module":"ZeroDSP_MAC","lines":623,"bytes":22498,"description":"t27/specs/fpga/mac.t27 ZeroDSP FPGA Multiply-Accumulate Specification Ternary MAC operations for FPGA implementation","health":"warn","tokens":3452,"nodes":668,"depth":13,"loss":0,"tcErrors":7,"failedBackends":[],"outBytes":{"c":11545,"rust":4177,"verilog":20412,"verilog_hir":2034,"zig":15620},"repo":"t27","kinds":{"Module":23,"UseDecl":3,"ConstDecl":13,"ExprLiteral":55,"ExprIdentifier":178,"StructDecl":1,"ExprArrayLiteral":2,"FnDecl":13,"StmtLocal":26,"ExprBinary":46,"ExprFieldAccess":39,"StmtIf":12,"ExprReturn":20,"ExprIf":2,"ExprStructLit":2,"StmtAssign":28,"ExprIndex":33,"StmtWhile":7,"ExprCall":10,"ExprUnary":1,"StmtExpr":105,"TestBlock":24,"InvariantBlock":17,"BenchBlock":8},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 13 constants. Carries 24 tests, 17 invariants and 8 benches. 623 lines compile to 3,452 tokens and 668 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 7 type errors."},{"path":"specs/fpga/memory.t27","category":"specs/fpga","name":"memory","module":"Memory","lines":355,"bytes":9348,"description":"t27/specs/fpga/memory.t27 Memory (BRAM/DRAM/ROM) Abstraction for Trinity T27 FPGA HIR Defines block memory primitives with read/write ports Uses flat arrays + count fields (parser-compatible, no Vec/generics)","health":"warn","tokens":1728,"nodes":497,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8205,"rust":4713,"verilog":13482,"verilog_hir":1137,"zig":8117},"repo":"t27","kinds":{"Module":17,"EnumDecl":3,"EnumVariant":8,"StructDecl":2,"ExprIdentifier":115,"ConstDecl":1,"ExprLiteral":63,"FnDecl":17,"ExprReturn":19,"ExprStructLit":5,"ExprFieldAccess":74,"ExprArrayLiteral":3,"StmtLocal":12,"StmtWhile":4,"ExprBinary":41,"StmtAssign":19,"StmtIf":12,"ExprIndex":7,"ExprCall":4,"TestBlock":15,"StmtExpr":49,"InvariantBlock":6,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 17 functions, 2 structs, 3 enums and 1 constant. Carries 15 tests, 6 invariants and 1 bench. 355 lines compile to 1,728 tokens and 497 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Compiles with 2 type errors."},{"path":"specs/fpga/partition.t27","category":"specs/fpga","name":"partition","module":"Partition","lines":306,"bytes":9004,"description":"t27/specs/fpga/partition.t27 T27 Multi-FPGA Partition Specification Automatically partitions HIR modules across multiple FPGAs Estimates inter-FPGA bandwidth and latency Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1436,"nodes":303,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6744,"rust":3257,"verilog":12950,"verilog_hir":1649,"zig":7102},"repo":"t27","kinds":{"Module":6,"StructDecl":4,"ExprIdentifier":74,"FnDecl":13,"ExprReturn":15,"ExprStructLit":6,"ExprFieldAccess":44,"ExprCall":2,"ExprLiteral":31,"ExprBinary":14,"StmtLocal":3,"StmtWhile":1,"StmtAssign":4,"ExprIndex":1,"StmtIf":4,"TestBlock":20,"StmtExpr":57,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions and 4 structs. Carries 20 tests, 2 invariants and 2 benches. 306 lines compile to 1,436 tokens and 303 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.6 KB. Clean through every layer."},{"path":"specs/fpga/placement.t27","category":"specs/fpga","name":"placement","module":"Placement","lines":242,"bytes":6335,"description":"t27/specs/fpga/placement.t27 T27 Placement Constraint Generator Specification Auto-generates placement hints and routing constraints from HIR connectivity Groups related modules into floorplan regions for optimal routing Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1179,"nodes":286,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6165,"rust":3066,"verilog":11360,"verilog_hir":1341,"zig":5656},"repo":"t27","kinds":{"Module":8,"EnumDecl":1,"EnumVariant":5,"StructDecl":4,"ExprIdentifier":81,"FnDecl":13,"ExprReturn":15,"ExprStructLit":4,"ExprFieldAccess":38,"ExprCall":5,"ExprLiteral":18,"ExprBinary":24,"StmtIf":7,"StmtLocal":2,"StmtAssign":5,"TestBlock":14,"StmtExpr":38,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 4 structs and 1 enum. Carries 14 tests, 2 invariants and 2 benches. 242 lines compile to 1,179 tokens and 286 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.1 KB. Clean through every layer."},{"path":"specs/fpga/power.t27","category":"specs/fpga","name":"power","module":"Power","lines":230,"bytes":6278,"description":"t27/specs/fpga/power.t27 T27 Power Estimation Specification Estimates dynamic and static power consumption for FPGA designs Artix-7 power model: LUT=10uW/MHz, FF=5uW/MHz, BRAM=50uW/MHz, DSP=100uW/MHz Static: 50mW base + 0.1uW per resource unit Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1007,"nodes":265,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6382,"rust":3151,"verilog":11385,"verilog_hir":1446,"zig":5652},"repo":"t27","kinds":{"Module":3,"StructDecl":2,"ExprIdentifier":65,"FnDecl":18,"ExprReturn":18,"ExprStructLit":3,"ExprFieldAccess":20,"ExprLiteral":27,"ExprBinary":31,"ExprCall":13,"StmtLocal":7,"StmtIf":2,"StmtAssign":2,"TestBlock":15,"StmtExpr":36,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 18 functions and 2 structs. Carries 15 tests, 2 invariants and 1 bench. 230 lines compile to 1,007 tokens and 265 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.1 KB. Clean through every layer."},{"path":"specs/fpga/power_analysis.t27","category":"specs/fpga","name":"power_analysis","module":"PowerAnalysis","lines":453,"bytes":12807,"description":"t27/specs/fpga/power_analysis.t27 T27 Power Analysis Specification Connects power.t27 estimation model to utilization reports from synthesis Parses LUT/FF/BRAM/DSP counts from Vivado/Yosys reports Feeds utilization into Power.est_total_power() for estimation Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":2253,"nodes":624,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10744,"rust":5517,"verilog":21275,"verilog_hir":1973,"zig":11626},"repo":"t27","kinds":{"Module":12,"StructDecl":4,"ExprIdentifier":131,"FnDecl":25,"ExprReturn":32,"ExprStructLit":6,"ExprFieldAccess":71,"ExprLiteral":80,"ExprCall":17,"ExprBinary":77,"StmtIf":10,"StmtLocal":17,"StmtWhile":1,"StmtAssign":5,"ExprIndex":1,"TestBlock":33,"StmtExpr":96,"InvariantBlock":4,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 25 functions and 4 structs. Carries 33 tests, 4 invariants and 2 benches. 453 lines compile to 2,253 tokens and 624 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Clean through every layer."},{"path":"specs/fpga/router.t27","category":"specs/fpga","name":"router","module":"Router","lines":257,"bytes":6620,"description":"t27/specs/fpga/router.t27 T27 HIR Signal Router Specification Connectivity graph analysis, fanout estimation, routing congestion prediction Estimates wire length, routing resources needed for Artix-7 Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1078,"nodes":269,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6203,"rust":2973,"verilog":12354,"verilog_hir":1351,"zig":5958},"repo":"t27","kinds":{"Module":9,"EnumDecl":1,"EnumVariant":4,"StructDecl":3,"ExprIdentifier":58,"FnDecl":14,"ExprReturn":18,"ExprStructLit":4,"ExprFieldAccess":25,"ExprLiteral":28,"ExprBinary":21,"StmtLocal":4,"StmtIf":7,"StmtAssign":5,"ExprCall":4,"StmtWhile":1,"ExprIndex":2,"TestBlock":19,"StmtExpr":38,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 3 structs and 1 enum. Carries 19 tests, 2 invariants and 2 benches. 257 lines compile to 1,078 tokens and 269 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.1 KB. Clean through every layer."},{"path":"specs/fpga/simulator.t27","category":"specs/fpga","name":"simulator","module":"Simulator","lines":278,"bytes":7050,"description":"t27/specs/fpga/simulator.t27 HIR Cycle-Accurate Simulation Engine Specification Provides simulation primitives for verifying HIR modules pre-synthesis Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1160,"nodes":289,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6492,"rust":3421,"verilog":11008,"verilog_hir":1292,"zig":6201},"repo":"t27","kinds":{"Module":6,"EnumDecl":1,"EnumVariant":5,"StructDecl":4,"ExprIdentifier":60,"FnDecl":16,"ExprReturn":18,"ExprStructLit":6,"ExprFieldAccess":44,"ExprLiteral":37,"ExprBinary":21,"StmtIf":5,"ExprCall":2,"StmtLocal":1,"StmtAssign":3,"TestBlock":13,"StmtExpr":42,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions, 4 structs and 1 enum. Carries 13 tests, 4 invariants and 1 bench. 278 lines compile to 1,160 tokens and 289 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.8 KB. Clean through every layer."},{"path":"specs/fpga/spi.t27","category":"specs/fpga","name":"spi","module":"SPI_Master","lines":415,"bytes":13093,"description":"t27/specs/fpga/spi.t27 SPI Master Specification for FPGA Mode 0: CPOL=0, CPHA=0 (SCK idle low, sample on rising edge)","health":"ok","tokens":1491,"nodes":309,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7000,"rust":2841,"verilog":12871,"verilog_hir":1218,"zig":6970},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":22,"ExprLiteral":49,"StructDecl":1,"ExprIdentifier":55,"ExprStructLit":1,"ExprFieldAccess":37,"FnDecl":12,"StmtIf":4,"ExprBinary":16,"ExprReturn":12,"StmtAssign":9,"StmtExpr":48,"ExprCall":2,"ExprUnary":1,"StmtLocal":1,"TestBlock":17,"InvariantBlock":12,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 12 functions, 1 struct and 22 constants. Carries 17 tests, 12 invariants and 4 benches. 415 lines compile to 1,491 tokens and 309 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.6 KB. Clean through every layer."},{"path":"specs/fpga/stdlib.t27","category":"specs/fpga","name":"stdlib","module":"Stdlib","lines":372,"bytes":17315,"description":"t27/specs/fpga/stdlib.t27 T27 FPGA Standard Library IP Catalog Reusable hardware IP cores with resource utilization estimates Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":4069,"nodes":895,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11845,"rust":8002,"verilog":13111,"verilog_hir":1183,"zig":15069},"repo":"t27","kinds":{"Module":13,"EnumDecl":1,"EnumVariant":13,"StructDecl":4,"ExprIdentifier":94,"FnDecl":14,"ExprReturn":20,"ExprStructLit":38,"ExprFieldAccess":282,"ExprLiteral":239,"ExprCall":40,"StmtLocal":10,"ExprArrayLiteral":1,"StmtWhile":4,"ExprBinary":25,"StmtAssign":10,"ExprIndex":4,"StmtIf":8,"TestBlock":17,"StmtExpr":53,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 4 structs and 1 enum. Carries 17 tests, 4 invariants and 1 bench. 372 lines compile to 4,069 tokens and 895 AST nodes, depth 11. Emits 5 of 5 backends; largest is Zig at 14.7 KB. Clean through every layer."},{"path":"specs/fpga/ternary_isa.t27","category":"specs/fpga","name":"ternary_isa","module":"TernaryIsa","lines":543,"bytes":14462,"description":"t27/specs/fpga/ternary_isa.t27 Ternary ISA Hardware Implementation Specification for Trinity T27 FPGA HIR Bridges software ISA (27 registers, balanced ternary) to silicon Connects GF16 arithmetic, ternary gates, and phi-identity to hardware Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":2354,"nodes":692,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11982,"rust":7182,"verilog":21390,"verilog_hir":1934,"zig":12758},"repo":"t27","kinds":{"Module":20,"ConstDecl":7,"ExprLiteral":115,"EnumDecl":1,"EnumVariant":7,"StructDecl":5,"ExprIdentifier":138,"FnDecl":30,"ExprReturn":30,"ExprStructLit":12,"ExprFieldAccess":102,"ExprBinary":54,"StmtLocal":13,"ExprCall":3,"StmtIf":18,"StmtAssign":21,"StmtWhile":1,"ExprIndex":1,"TestBlock":29,"StmtExpr":76,"InvariantBlock":7,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 30 functions, 5 structs, 1 enum and 7 constants. Carries 29 tests, 7 invariants and 2 benches. 543 lines compile to 2,354 tokens and 692 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 20.9 KB. Clean through every layer."},{"path":"specs/fpga/testbench.t27","category":"specs/fpga","name":"testbench","module":"Testbench","lines":271,"bytes":6930,"description":"t27/specs/fpga/testbench.t27 T27 HIR Testbench Auto-Generation Specification Automatically generates Verilog testbenches from HIR modules Includes clock generation, reset sequencing, stimulus, and checking Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1144,"nodes":275,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6269,"rust":3246,"verilog":11518,"verilog_hir":1479,"zig":6133},"repo":"t27","kinds":{"Module":7,"StructDecl":5,"ExprIdentifier":69,"FnDecl":15,"ExprReturn":15,"ExprStructLit":6,"ExprFieldAccess":34,"ExprLiteral":24,"ExprBinary":18,"StmtLocal":5,"StmtIf":5,"StmtAssign":6,"StmtWhile":1,"ExprIndex":1,"TestBlock":16,"StmtExpr":44,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions and 5 structs. Carries 16 tests, 3 invariants and 1 bench. 271 lines compile to 1,144 tokens and 275 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.2 KB. Clean through every layer."},{"path":"specs/fpga/testbench/apb_bridge_tb.t27","category":"specs/fpga","name":"apb_bridge_tb","module":"APB_Bridge_Testbench","lines":144,"bytes":3247,"description":"t27/specs/fpga/testbench/apb_bridge_tb.t27 APB Bridge Testbench Tests APB bus protocol: setup, access, wait states","health":"ok","tokens":604,"nodes":265,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3436,"rust":963,"verilog":6904,"verilog_hir":1230,"zig":2370},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":16,"ExprLiteral":63,"FnDecl":4,"StmtAssign":31,"ExprIdentifier":53,"StmtExpr":22,"ExprCall":26,"StmtWhile":6,"ExprUnary":3,"ExprReturn":2,"StmtLocal":7,"TestBlock":6,"ExprBinary":15,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 16 constants. Carries 6 tests, 2 invariants and 1 bench. 144 lines compile to 604 tokens and 265 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/assembler_tb.t27","category":"specs/fpga","name":"assembler_tb","module":"Assembler_Testbench","lines":111,"bytes":2952,"description":"t27/specs/fpga/testbench/assembler_tb.t27 Assembler/Linker Integration Testbench Tests ternary instruction encoding, program assembly, and memory linking","health":"ok","tokens":607,"nodes":204,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3761,"rust":1402,"verilog":6801,"verilog_hir":1322,"zig":3018},"repo":"t27","kinds":{"Module":2,"UseDecl":2,"ConstDecl":17,"ExprLiteral":52,"FnDecl":6,"StmtAssign":11,"ExprIdentifier":37,"StmtExpr":7,"ExprCall":9,"StmtLocal":5,"ExprFieldAccess":16,"ExprBinary":26,"ExprReturn":4,"TestBlock":6,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 17 constants. Carries 6 tests, 2 invariants and 1 bench. 111 lines compile to 607 tokens and 204 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/fpga/testbench/axi4_tb.t27","category":"specs/fpga","name":"axi4_tb","module":"AXI4_Testbench","lines":179,"bytes":4359,"description":"t27/specs/fpga/testbench/axi4_tb.t27 AXI4 Bus Testbench Specification Tests AXI4 read/write channels, burst support, and protocol compliance","health":"warn","tokens":797,"nodes":329,"depth":9,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":4107,"rust":1749,"verilog":8763,"verilog_hir":1800,"zig":3097},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"ConstDecl":37,"ExprLiteral":87,"FnDecl":4,"StmtAssign":31,"ExprIdentifier":58,"StmtExpr":22,"ExprCall":27,"StmtWhile":9,"ExprUnary":5,"StmtLocal":9,"ExprReturn":2,"TestBlock":7,"ExprBinary":17,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions and 37 constants. Carries 7 tests, 2 invariants and 1 bench. 179 lines compile to 797 tokens and 329 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.6 KB. Compiles with 6 type errors."},{"path":"specs/fpga/testbench/bootrom_tb.t27","category":"specs/fpga","name":"bootrom_tb","module":"BootROM_Testbench","lines":87,"bytes":1856,"description":"t27/specs/fpga/testbench/bootrom_tb.t27 Boot ROM Testbench Tests boot sequence, reset vector, and initial program loading","health":"ok","tokens":312,"nodes":118,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2621,"rust":986,"verilog":5260,"verilog_hir":905,"zig":1374},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":13,"ExprLiteral":26,"FnDecl":4,"StmtAssign":12,"ExprIdentifier":24,"StmtExpr":8,"ExprCall":9,"ExprReturn":3,"StmtLocal":2,"StmtIf":1,"ExprBinary":5,"StmtWhile":1,"TestBlock":4,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 13 constants. Carries 4 tests, 1 invariant and 1 bench. 87 lines compile to 312 tokens and 118 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/fpga/testbench/bridge_tb.t27","category":"specs/fpga","name":"bridge_tb","module":"Bridge_Testbench","lines":124,"bytes":2796,"description":"t27/specs/fpga/testbench/bridge_tb.t27 FPGA Bridge Testbench Tests data streaming, packet framing, and cross-domain transfers","health":"ok","tokens":468,"nodes":178,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3215,"rust":1043,"verilog":6665,"verilog_hir":937,"zig":2156},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":16,"ExprLiteral":38,"FnDecl":4,"StmtAssign":13,"ExprIdentifier":27,"StmtExpr":18,"ExprCall":21,"StmtIf":1,"ExprUnary":4,"ExprReturn":3,"StmtWhile":5,"StmtLocal":6,"TestBlock":6,"ExprBinary":5,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 16 constants. Carries 6 tests, 2 invariants and 1 bench. 124 lines compile to 468 tokens and 178 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Clean through every layer."},{"path":"specs/fpga/testbench/clock_domain_tb.t27","category":"specs/fpga","name":"clock_domain_tb","module":"ClockDomain_Testbench","lines":109,"bytes":2439,"description":"t27/specs/fpga/testbench/clock_domain_tb.t27 Clock Domain Crossing Testbench Tests CDC synchronizers, handshake, and metastability protection","health":"ok","tokens":403,"nodes":152,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3049,"rust":937,"verilog":6163,"verilog_hir":881,"zig":1907},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":14,"ExprLiteral":32,"FnDecl":5,"StmtAssign":11,"ExprIdentifier":20,"StmtExpr":20,"ExprCall":23,"StmtWhile":3,"ExprUnary":1,"ExprReturn":1,"TestBlock":5,"StmtLocal":5,"ExprBinary":5,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 14 constants. Carries 5 tests, 1 invariant and 1 bench. 109 lines compile to 403 tokens and 152 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.0 KB. Clean through every layer."},{"path":"specs/fpga/testbench/cts_tb.t27","category":"specs/fpga","name":"cts_tb","module":"CTS_Testbench","lines":119,"bytes":2939,"description":"t27/specs/fpga/testbench/cts_tb.t27 Clock Tree Synthesis Testbench Tests clock buffer insertion, skew balancing, and latency estimation","health":"ok","tokens":478,"nodes":164,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3802,"rust":1274,"verilog":7549,"verilog_hir":935,"zig":2478},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":13,"ExprLiteral":37,"FnDecl":5,"StmtAssign":9,"ExprIdentifier":32,"StmtExpr":7,"ExprCall":13,"ExprReturn":3,"ExprBinary":14,"StmtLocal":10,"StmtIf":1,"StmtWhile":2,"TestBlock":9,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 13 constants. Carries 9 tests, 2 invariants and 1 bench. 119 lines compile to 478 tokens and 164 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/fpga/testbench/dft_tb.t27","category":"specs/fpga","name":"dft_tb","module":"DFT_Testbench","lines":130,"bytes":3050,"description":"t27/specs/fpga/testbench/dft_tb.t27 Design-for-Test Testbench Tests scan chain insertion, BIST, and JTAG interface","health":"ok","tokens":519,"nodes":206,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3594,"rust":1446,"verilog":7375,"verilog_hir":977,"zig":3016},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":19,"ExprLiteral":50,"FnDecl":5,"StmtAssign":20,"ExprIdentifier":38,"StmtExpr":14,"ExprCall":16,"StmtLocal":7,"StmtWhile":3,"ExprBinary":13,"ExprFieldAccess":1,"ExprReturn":3,"ExprUnary":1,"StmtIf":1,"TestBlock":6,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 19 constants. Carries 6 tests, 2 invariants and 1 bench. 130 lines compile to 519 tokens and 206 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.2 KB. Clean through every layer."},{"path":"specs/fpga/testbench/fifo_tb.t27","category":"specs/fpga","name":"fifo_tb","module":"FIFO_Testbench","lines":163,"bytes":3606,"description":"t27/specs/fpga/testbench/fifo_tb.t27 FIFO Testbench Specification Tests sync/async FIFO operations, flags, overflow/underflow","health":"ok","tokens":620,"nodes":230,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3729,"rust":1265,"verilog":7838,"verilog_hir":1013,"zig":2645},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"ConstDecl":17,"ExprLiteral":49,"FnDecl":6,"StmtAssign":20,"ExprIdentifier":38,"StmtExpr":22,"ExprCall":27,"StmtIf":2,"ExprReturn":6,"StmtLocal":9,"StmtWhile":5,"ExprUnary":2,"ExprBinary":8,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions and 17 constants. Carries 7 tests, 2 invariants and 1 bench. 163 lines compile to 620 tokens and 230 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/formal_tb.t27","category":"specs/fpga","name":"formal_tb","module":"Formal_Testbench","lines":132,"bytes":3125,"description":"t27/specs/fpga/testbench/formal_tb.t27 Formal Verification Testbench Tests SVA assertion generation, cover points, and proof properties","health":"ok","tokens":495,"nodes":151,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3564,"rust":1243,"verilog":7574,"verilog_hir":927,"zig":2431},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":13,"ExprLiteral":38,"FnDecl":6,"StmtAssign":10,"ExprIdentifier":20,"StmtExpr":8,"ExprCall":15,"StmtIf":3,"ExprUnary":2,"ExprReturn":6,"ExprBinary":3,"StmtLocal":8,"StmtWhile":1,"TestBlock":9,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 13 constants. Carries 9 tests, 2 invariants and 1 bench. 132 lines compile to 495 tokens and 151 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/fpga/testbench/gf16_accel_tb.t27","category":"specs/fpga","name":"gf16_accel_tb","module":"GF16_Accel_Testbench","lines":136,"bytes":3024,"description":"t27/specs/fpga/testbench/gf16_accel_tb.t27 GF16 Accelerator Testbench Tests Golden Float 16 arithmetic: add, mul, MAC, phi identity","health":"warn","tokens":590,"nodes":215,"depth":7,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":3459,"rust":974,"verilog":7475,"verilog_hir":1211,"zig":2371},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":14,"ExprLiteral":49,"FnDecl":5,"StmtAssign":20,"ExprIdentifier":40,"StmtExpr":18,"ExprCall":28,"StmtWhile":4,"ExprUnary":3,"ExprReturn":3,"TestBlock":8,"StmtLocal":13,"InvariantBlock":1,"BenchBlock":1,"ExprBinary":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 5 functions and 14 constants. Carries 8 tests, 1 invariant and 1 bench. 136 lines compile to 590 tokens and 215 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Compiles with 3 type errors."},{"path":"specs/fpga/testbench/hir_tb.t27","category":"specs/fpga","name":"hir_tb","module":"HIR_Testbench","lines":105,"bytes":2327,"description":"t27/specs/fpga/testbench/hir_tb.t27 Hardware IR (HIR) Testbench Tests HIR node types, module hierarchy, and code generation paths","health":"ok","tokens":405,"nodes":133,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3124,"rust":882,"verilog":6360,"verilog_hir":803,"zig":1879},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":10,"ExprLiteral":31,"FnDecl":5,"StmtAssign":9,"ExprIdentifier":23,"StmtExpr":7,"ExprCall":14,"StmtLocal":8,"StmtWhile":2,"ExprBinary":7,"ExprReturn":3,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 10 constants. Carries 7 tests, 2 invariants and 1 bench. 105 lines compile to 405 tokens and 133 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.2 KB. Clean through every layer."},{"path":"specs/fpga/testbench/integration_tb.t27","category":"specs/fpga","name":"integration_tb","module":"Integration_Testbench","lines":126,"bytes":2971,"description":"t27/specs/fpga/testbench/integration_tb.t27 Full FPGA Integration Testbench Tests top-level connectivity: MAC + UART + SPI + Memory + Bridge","health":"ok","tokens":460,"nodes":215,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3568,"rust":807,"verilog":6725,"verilog_hir":723,"zig":2336},"repo":"t27","kinds":{"Module":3,"ConstDecl":14,"ExprLiteral":48,"FnDecl":3,"StmtAssign":33,"ExprIdentifier":42,"StmtExpr":23,"ExprCall":26,"ExprReturn":1,"ExprBinary":8,"ExprUnary":2,"TestBlock":6,"StmtLocal":2,"StmtWhile":2,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 14 constants. Carries 6 tests, 1 invariant and 1 bench. 126 lines compile to 460 tokens and 215 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/fpga/testbench/linker_tb.t27","category":"specs/fpga","name":"linker_tb","module":"Linker_Testbench","lines":89,"bytes":2000,"description":"t27/specs/fpga/testbench/linker_tb.t27 Linker Testbench Tests symbol resolution, address assignment, and section merging","health":"ok","tokens":360,"nodes":122,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2875,"rust":838,"verilog":5851,"verilog_hir":800,"zig":1636},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":11,"ExprLiteral":33,"FnDecl":4,"StmtAssign":5,"ExprIdentifier":17,"StmtExpr":7,"ExprCall":11,"StmtIf":1,"ExprBinary":10,"ExprReturn":3,"StmtLocal":6,"ExprUnary":1,"TestBlock":6,"InvariantBlock":1,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 6 tests, 1 invariant and 1 bench. 89 lines compile to 360 tokens and 122 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/mac_tb.t27","category":"specs/fpga","name":"mac_tb","module":"MAC_Testbench","lines":554,"bytes":17571,"description":"t27/specs/fpga/testbench/mac_tb.t27 MAC Unit Testbench Specification Tests ternary LUT multiplication, MAC operations, and accumulator 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":2579,"nodes":886,"depth":10,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":13203,"rust":8923,"verilog":22584,"verilog_hir":1885,"zig":13457},"repo":"t27","kinds":{"Module":12,"UseDecl":2,"ConstDecl":20,"ExprLiteral":176,"ExprStructLit":6,"ExprFieldAccess":8,"FnDecl":21,"StmtAssign":17,"ExprIdentifier":138,"ExprUnary":2,"ExprBinary":53,"StmtLocal":74,"StmtWhile":8,"StmtExpr":136,"ExprCall":146,"ExprIndex":6,"ExprIf":3,"ExprReturn":1,"ExprArrayLiteral":31,"StmtIf":2,"StmtBreak":1,"InvariantBlock":11,"TestBlock":9,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 21 functions and 20 constants. Carries 9 tests, 11 invariants and 3 benches. 554 lines compile to 2,579 tokens and 886 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 22.1 KB. Compiles with 5 type errors."},{"path":"specs/fpga/testbench/memory_tb.t27","category":"specs/fpga","name":"memory_tb","module":"Memory_Testbench","lines":136,"bytes":3129,"description":"t27/specs/fpga/testbench/memory_tb.t27 Memory Subsystem Testbench Tests BRAM, register file, and memory-mapped I/O operations","health":"ok","tokens":585,"nodes":253,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3550,"rust":911,"verilog":7285,"verilog_hir":1010,"zig":2461},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":15,"ExprLiteral":65,"FnDecl":4,"StmtAssign":19,"ExprIdentifier":41,"StmtExpr":27,"ExprCall":33,"StmtWhile":6,"ExprUnary":2,"ExprReturn":1,"TestBlock":7,"StmtLocal":8,"ExprBinary":15,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 15 constants. Carries 7 tests, 1 invariant and 1 bench. 136 lines compile to 585 tokens and 253 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"specs/fpga/testbench/partition_tb.t27","category":"specs/fpga","name":"partition_tb","module":"Partition_Testbench","lines":94,"bytes":2266,"description":"t27/specs/fpga/testbench/partition_tb.t27 FPGA Partition Testbench Tests floorplanning regions, hierarchical partitioning, and resource budgeting","health":"ok","tokens":367,"nodes":120,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3288,"rust":900,"verilog":6434,"verilog_hir":847,"zig":1929},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":9,"ExprLiteral":30,"FnDecl":5,"StmtAssign":5,"ExprIdentifier":18,"StmtExpr":6,"ExprCall":10,"StmtIf":2,"ExprBinary":9,"ExprReturn":5,"TestBlock":7,"StmtLocal":5,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 9 constants. Carries 7 tests, 2 invariants and 1 bench. 94 lines compile to 367 tokens and 120 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"specs/fpga/testbench/placement_tb.t27","category":"specs/fpga","name":"placement_tb","module":"Placement_Testbench","lines":115,"bytes":2993,"description":"t27/specs/fpga/testbench/placement_tb.t27 FPGA Placement Testbench Tests placement grid, resource allocation, and density constraints","health":"ok","tokens":556,"nodes":200,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3907,"rust":1378,"verilog":7692,"verilog_hir":964,"zig":2620},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":14,"ExprLiteral":46,"FnDecl":6,"StmtAssign":9,"ExprIdentifier":42,"StmtExpr":7,"ExprCall":14,"ExprReturn":5,"ExprBinary":23,"StmtIf":3,"StmtLocal":11,"TestBlock":8,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 14 constants. Carries 8 tests, 2 invariants and 1 bench. 115 lines compile to 556 tokens and 200 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.5 KB. Clean through every layer."},{"path":"specs/fpga/testbench/power_analysis_tb.t27","category":"specs/fpga","name":"power_analysis_tb","module":"PowerAnalysis_Testbench","lines":130,"bytes":3169,"description":"t27/specs/fpga/testbench/power_analysis_tb.t27 Power Analysis Testbench Tests utilization parsing, power estimation, and budget checking","health":"warn","tokens":545,"nodes":122,"depth":7,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":2961,"rust":407,"verilog":7059,"verilog_hir":587,"zig":2983},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":7,"ExprLiteral":19,"FnDecl":2,"StmtAssign":6,"ExprIdentifier":11,"StmtExpr":40,"ExprCall":10,"TestBlock":15,"StmtLocal":3,"InvariantBlock":1,"ExprBinary":3,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 2 functions and 7 constants. Carries 15 tests, 1 invariant and 1 bench. 130 lines compile to 545 tokens and 122 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.9 KB. Compiles with 1 type error."},{"path":"specs/fpga/testbench/power_tb.t27","category":"specs/fpga","name":"power_tb","module":"Power_Testbench","lines":118,"bytes":2926,"description":"t27/specs/fpga/testbench/power_tb.t27 Power Analysis Testbench Tests power domain management, gating, and estimation","health":"ok","tokens":472,"nodes":147,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3588,"rust":1279,"verilog":7079,"verilog_hir":1297,"zig":2165},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":16,"ExprLiteral":38,"FnDecl":7,"StmtAssign":11,"ExprIdentifier":24,"StmtExpr":9,"ExprCall":11,"StmtLocal":4,"ExprBinary":10,"ExprReturn":3,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 16 constants. Carries 7 tests, 2 invariants and 1 bench. 118 lines compile to 472 tokens and 147 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.9 KB. Clean through every layer."},{"path":"specs/fpga/testbench/router_tb.t27","category":"specs/fpga","name":"router_tb","module":"Router_Testbench","lines":112,"bytes":2833,"description":"t27/specs/fpga/testbench/router_tb.t27 FPGA Router Testbench Tests routing graph construction, pathfinding, and congestion estimation","health":"ok","tokens":555,"nodes":197,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3754,"rust":1256,"verilog":7614,"verilog_hir":1051,"zig":2438},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":14,"ExprLiteral":56,"FnDecl":5,"StmtAssign":9,"ExprIdentifier":35,"StmtExpr":6,"ExprCall":13,"StmtLocal":11,"StmtIf":3,"ExprBinary":21,"ExprReturn":4,"TestBlock":8,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 14 constants. Carries 8 tests, 2 invariants and 1 bench. 112 lines compile to 555 tokens and 197 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/fpga/testbench/simulator_tb.t27","category":"specs/fpga","name":"simulator_tb","module":"Simulator_Testbench","lines":92,"bytes":2071,"description":"t27/specs/fpga/testbench/simulator_tb.t27 Simulator Testbench Tests simulation engine: cycle stepping, event scheduling, and waveform output","health":"warn","tokens":328,"nodes":110,"depth":7,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":2762,"rust":876,"verilog":5834,"verilog_hir":826,"zig":1533},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":11,"ExprLiteral":26,"FnDecl":4,"StmtAssign":8,"ExprIdentifier":16,"ExprBinary":5,"StmtExpr":8,"ExprCall":11,"StmtLocal":4,"StmtWhile":1,"ExprReturn":3,"StmtIf":1,"TestBlock":6,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 6 tests, 1 invariant and 1 bench. 92 lines compile to 328 tokens and 110 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Compiles with 1 type error."},{"path":"specs/fpga/testbench/spi_tb.t27","category":"specs/fpga","name":"spi_tb","module":"SPI_Testbench","lines":124,"bytes":2963,"description":"t27/specs/fpga/testbench/spi_tb.t27 SPI Master Testbench Specification Tests SPI transfer, clock generation, chip select, and mode handling","health":"ok","tokens":490,"nodes":168,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3299,"rust":1050,"verilog":7183,"verilog_hir":930,"zig":2314},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":18,"ExprLiteral":41,"FnDecl":3,"StmtAssign":13,"ExprIdentifier":22,"StmtExpr":15,"ExprCall":22,"StmtLocal":9,"StmtWhile":2,"ExprUnary":1,"ExprBinary":4,"StmtIf":1,"ExprReturn":2,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 18 constants. Carries 7 tests, 2 invariants and 1 bench. 124 lines compile to 490 tokens and 168 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.0 KB. Clean through every layer."},{"path":"specs/fpga/testbench/stdlib_tb.t27","category":"specs/fpga","name":"stdlib_tb","module":"Stdlib_Testbench","lines":112,"bytes":2313,"description":"t27/specs/fpga/testbench/stdlib_tb.t27 FPGA Stdlib Testbench Tests IP core catalog, parameter validation, and helper functions","health":"ok","tokens":474,"nodes":150,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3255,"rust":1032,"verilog":6248,"verilog_hir":848,"zig":1652},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"ConstDecl":8,"ExprLiteral":27,"FnDecl":6,"StmtAssign":7,"ExprIdentifier":34,"StmtExpr":9,"ExprCall":9,"StmtIf":5,"ExprBinary":12,"ExprReturn":9,"StmtLocal":3,"StmtWhile":2,"TestBlock":8,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 8 constants. Carries 8 tests, 1 invariant and 1 bench. 112 lines compile to 474 tokens and 150 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.1 KB. Clean through every layer."},{"path":"specs/fpga/testbench/ternary_isa_tb.t27","category":"specs/fpga","name":"ternary_isa_tb","module":"Ternary_ISA_Testbench","lines":148,"bytes":3310,"description":"t27/specs/fpga/testbench/ternary_isa_tb.t27 Ternary ISA Testbench Tests ternary instruction decode, ALU operations, and encoding","health":"ok","tokens":633,"nodes":202,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3569,"rust":1112,"verilog":7925,"verilog_hir":955,"zig":2155},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":18,"ExprLiteral":47,"FnDecl":5,"StmtAssign":23,"ExprIdentifier":38,"StmtExpr":16,"ExprCall":16,"StmtLocal":3,"ExprBinary":10,"StmtIf":2,"ExprReturn":5,"ExprUnary":1,"TestBlock":10,"InvariantBlock":1,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 18 constants. Carries 10 tests, 1 invariant and 1 bench. 148 lines compile to 633 tokens and 202 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/timing_tb.t27","category":"specs/fpga","name":"timing_tb","module":"Timing_Testbench","lines":98,"bytes":2410,"description":"t27/specs/fpga/testbench/timing_tb.t27 Timing Analysis Testbench Tests setup/hold checks, slack computation, and clock tree constraints","health":"ok","tokens":401,"nodes":132,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3213,"rust":849,"verilog":6745,"verilog_hir":852,"zig":2671},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":12,"ExprLiteral":36,"FnDecl":4,"StmtAssign":5,"ExprIdentifier":16,"StmtExpr":7,"ExprCall":13,"ExprReturn":3,"ExprBinary":9,"ExprFieldAccess":2,"StmtIf":1,"TestBlock":7,"StmtLocal":9,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 12 constants. Carries 7 tests, 2 invariants and 1 bench. 98 lines compile to 401 tokens and 132 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/fpga/testbench/top_tb.t27","category":"specs/fpga","name":"top_tb","module":"Top_Level_Testbench","lines":218,"bytes":5626,"description":"t27/specs/fpga/testbench/top_tb.t27 Top-Level FPGA Testbench Specification Tests complete FPGA system with UART, SPI, MAC, and bridge 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":743,"nodes":253,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4707,"rust":2220,"verilog":8237,"verilog_hir":1406,"zig":4226},"repo":"t27","kinds":{"Module":6,"UseDecl":5,"ConstDecl":23,"ExprLiteral":60,"ExprArrayLiteral":5,"FnDecl":8,"StmtAssign":13,"ExprIdentifier":28,"ExprUnary":1,"ExprBinary":10,"StmtLocal":1,"StmtWhile":1,"StmtExpr":49,"ExprCall":29,"StmtIf":2,"InvariantBlock":5,"TestBlock":6,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 23 constants. Carries 6 tests, 5 invariants and 1 bench. 218 lines compile to 743 tokens and 253 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.0 KB. Clean through every layer."},{"path":"specs/fpga/testbench/uart_tb.t27","category":"specs/fpga","name":"uart_tb","module":"UART_Testbench","lines":397,"bytes":11180,"description":"t27/specs/fpga/testbench/uart_tb.t27 UART Testbench Specification Tests UART TX/RX functionality, state machines, and timing 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":1340,"nodes":536,"depth":9,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":8993,"rust":5085,"verilog":13832,"verilog_hir":1500,"zig":8491},"repo":"t27","kinds":{"Module":15,"UseDecl":2,"ConstDecl":17,"ExprLiteral":105,"FnDecl":14,"StmtAssign":17,"ExprIdentifier":81,"ExprUnary":5,"ExprBinary":45,"StmtIf":3,"StmtLocal":18,"StmtWhile":8,"StmtExpr":94,"ExprCall":85,"ExprFieldAccess":4,"ExprArrayLiteral":1,"ExprIndex":1,"InvariantBlock":11,"TestBlock":7,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 14 functions and 17 constants. Carries 7 tests, 11 invariants and 3 benches. 397 lines compile to 1,340 tokens and 536 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.5 KB. Compiles with 3 type errors."},{"path":"specs/fpga/testbench/vcd_conformance_compare_tb.t27","category":"specs/fpga","name":"vcd_conformance_compare_tb","module":"VcdConformanceCompare_Testbench","lines":107,"bytes":2611,"description":"t27/specs/fpga/testbench/vcd_conformance_compare_tb.t27 VCD Conformance Compare Testbench Tests the conformance comparison engine: batch compare, masking, value extraction","health":"warn","tokens":457,"nodes":133,"depth":9,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":2993,"rust":848,"verilog":6435,"verilog_hir":915,"zig":2135},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":10,"ExprLiteral":26,"FnDecl":3,"StmtAssign":12,"ExprIdentifier":25,"StmtExpr":19,"ExprCall":6,"StmtLocal":3,"StmtWhile":2,"ExprBinary":8,"StmtIf":1,"ExprIndex":2,"ExprReturn":1,"TestBlock":8,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 3 functions and 10 constants. Carries 8 tests, 1 invariant and 1 bench. 107 lines compile to 457 tokens and 133 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Compiles with 3 type errors."},{"path":"specs/fpga/testbench/vcd_trace_tb.t27","category":"specs/fpga","name":"vcd_trace_tb","module":"VCD_Trace_Testbench","lines":86,"bytes":1929,"description":"t27/specs/fpga/testbench/vcd_trace_tb.t27 VCD Trace Testbench Tests waveform dump generation, signal hierarchy, and timestamp management","health":"ok","tokens":302,"nodes":101,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2778,"rust":777,"verilog":5761,"verilog_hir":910,"zig":1545},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":11,"ExprLiteral":24,"FnDecl":4,"StmtAssign":9,"ExprIdentifier":16,"ExprBinary":4,"StmtExpr":7,"ExprCall":9,"StmtLocal":3,"StmtWhile":1,"ExprReturn":2,"TestBlock":5,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 5 tests, 2 invariants and 1 bench. 86 lines compile to 302 tokens and 101 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"specs/fpga/timing.t27","category":"specs/fpga","name":"timing","module":"Timing","lines":376,"bytes":9419,"description":"t27/specs/fpga/timing.t27 T27 Static Timing Analysis Specification Estimates critical path, slack, and Fmax from HIR module structure Artix-7 timing model: LUT=0.1ns, BRAM=2.0ns, DSP=2.5ns, routing=0.3ns Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1593,"nodes":416,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8514,"rust":4725,"verilog":15828,"verilog_hir":1970,"zig":8948},"repo":"t27","kinds":{"Module":11,"EnumDecl":1,"EnumVariant":5,"StructDecl":4,"ExprIdentifier":86,"FnDecl":25,"ExprReturn":28,"ExprStructLit":8,"ExprFieldAccess":50,"ExprLiteral":50,"ExprBinary":28,"StmtIf":8,"ExprCall":6,"ExprUnary":1,"StmtLocal":6,"StmtWhile":2,"StmtAssign":8,"ExprIndex":4,"TestBlock":24,"StmtExpr":58,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 25 functions, 4 structs and 1 enum. Carries 24 tests, 2 invariants and 1 bench. 376 lines compile to 1,593 tokens and 416 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Clean through every layer."},{"path":"specs/fpga/top_level.t27","category":"specs/fpga","name":"top_level","module":"ZeroDSP_TopLevel","lines":220,"bytes":5551,"description":"t27/specs/fpga/top_level.t27 ZeroDSP FPGA Top Level Module Integrates MAC and UART for FPGA deployment 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":797,"nodes":210,"depth":7,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5130,"rust":1530,"verilog":10381,"verilog_hir":1542,"zig":5435},"repo":"t27","kinds":{"Module":2,"UseDecl":3,"ConstDecl":12,"ExprLiteral":27,"StructDecl":1,"ExprIdentifier":26,"ExprStructLit":1,"ExprFieldAccess":18,"FnDecl":13,"StmtAssign":14,"ExprReturn":5,"ExprBinary":1,"StmtExpr":61,"ExprCall":2,"StmtIf":1,"TestBlock":18,"InvariantBlock":3,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 13 functions, 1 struct and 12 constants. Carries 18 tests, 3 invariants and 2 benches. 220 lines compile to 797 tokens and 210 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.1 KB. Compiles with 1 type error."},{"path":"specs/fpga/uart.t27","category":"specs/fpga","name":"uart","module":"ZeroDSP_UART","lines":211,"bytes":5733,"description":"t27/specs/fpga/uart.t27 ZeroDSP FPGA UART Specification UART for debugging and communication 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":821,"nodes":222,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5349,"rust":1953,"verilog":10437,"verilog_hir":1520,"zig":5131},"repo":"t27","kinds":{"Module":2,"UseDecl":3,"ConstDecl":11,"ExprLiteral":31,"ExprIdentifier":45,"StructDecl":2,"ExprStructLit":2,"ExprFieldAccess":34,"ExprBinary":2,"FnDecl":7,"ExprReturn":6,"StmtIf":1,"ExprUnary":1,"StmtAssign":17,"TestBlock":15,"StmtExpr":38,"InvariantBlock":2,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 11 constants. Carries 15 tests, 2 invariants and 3 benches. 211 lines compile to 821 tokens and 222 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.2 KB. Clean through every layer."},{"path":"specs/fpga/vcd_conformance_compare.t27","category":"specs/fpga","name":"vcd_conformance_compare","module":"VcdConformanceCompare","lines":436,"bytes":11816,"description":"t27/specs/fpga/vcd_conformance_compare.t27 T27 VCD Conformance Comparison Engine Compares VCD simulation traces against conformance vectors Parses VCD signal values and checks them against expected results Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":2127,"nodes":636,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10157,"rust":4884,"verilog":20087,"verilog_hir":2289,"zig":10619},"repo":"t27","kinds":{"Module":22,"StructDecl":3,"ExprIdentifier":146,"FnDecl":21,"ExprReturn":28,"ExprStructLit":4,"ExprFieldAccess":46,"ExprLiteral":67,"StmtLocal":22,"ExprCall":26,"ExprBinary":68,"StmtAssign":17,"StmtIf":16,"ExprIndex":6,"StmtWhile":4,"StmtExpr":94,"ExprUnary":11,"TestBlock":31,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions and 3 structs. Carries 31 tests, 3 invariants and 1 bench. 436 lines compile to 2,127 tokens and 636 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Clean through every layer."},{"path":"specs/fpga/vcd_trace.t27","category":"specs/fpga","name":"vcd_trace","module":"VcdTrace","lines":292,"bytes":7555,"description":"t27/specs/fpga/vcd_trace.t27 T27 VCD Trace Emission Specification Emits Value Change Dump traces from HIR simulation IEEE 1364-2001 VCD format with variable sections Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1433,"nodes":341,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6712,"rust":3682,"verilog":12582,"verilog_hir":1281,"zig":6780},"repo":"t27","kinds":{"Module":14,"EnumDecl":2,"EnumVariant":7,"StructDecl":4,"ExprIdentifier":86,"FnDecl":14,"ExprReturn":17,"ExprStructLit":4,"ExprFieldAccess":25,"ExprCall":5,"ExprLiteral":34,"StmtLocal":8,"StmtWhile":3,"ExprBinary":22,"StmtIf":10,"ExprIndex":7,"StmtAssign":10,"TestBlock":18,"StmtExpr":48,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 4 structs and 2 enums. Carries 18 tests, 2 invariants and 1 bench. 292 lines compile to 1,433 tokens and 341 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/fpga/verification/build_verify.t27","category":"specs/fpga","name":"build_verify","module":"BuildVerify","lines":87,"bytes":2190,"description":"t27/specs/fpga/verification/build_verify.t27 FPGA Build Verification Spec Validates all FPGA specs can generate Verilog and pass structural checks","health":"ok","tokens":303,"nodes":73,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3134,"rust":1057,"verilog":5830,"verilog_hir":429,"zig":1748},"repo":"t27","kinds":{"Module":2,"ConstDecl":6,"ExprLiteral":16,"StructDecl":2,"ExprIdentifier":18,"FnDecl":2,"ExprReturn":3,"ExprBinary":4,"ExprFieldAccess":1,"StmtIf":1,"TestBlock":9,"StmtLocal":3,"ExprCall":3,"InvariantBlock":3},"tags":["domain/fpga","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 6 constants. Carries 9 tests and 3 invariants. 87 lines compile to 303 tokens and 73 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Clean through every layer."},{"path":"specs/git/diff.t27","category":"specs/git","name":"diff","module":"GitDiff","lines":230,"bytes":7832,"description":"specs/git/diff.t27 Git Diff Operations","health":"ok","tokens":1062,"nodes":248,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5499,"rust":1839,"verilog":10021,"verilog_hir":1158,"zig":5480},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":15,"StructDecl":2,"ExprIdentifier":35,"TestBlock":10,"StmtLocal":15,"ExprStructLit":4,"ExprFieldAccess":35,"ExprLiteral":43,"StmtExpr":24,"ExprCall":32,"ExprBinary":20,"ExprArrayLiteral":7,"ExprIndex":2,"ExprUnary":1},"tags":["domain/tools","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions and 2 structs. Carries 10 tests. 230 lines compile to 1,062 tokens and 248 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 9.8 KB. Clean through every layer."},{"path":"specs/git/operations.t27","category":"specs/git","name":"operations","module":"GitOperations","lines":176,"bytes":5799,"description":"specs/git/operations.t27 Git Command Operations","health":"ok","tokens":676,"nodes":128,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4710,"rust":1852,"verilog":8099,"verilog_hir":1516,"zig":4115},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":19,"TestBlock":8,"StmtLocal":6,"ExprStructLit":4,"ExprFieldAccess":18,"ExprLiteral":15,"ExprArrayLiteral":7,"ExprCall":19,"ExprIdentifier":9,"StmtExpr":12,"ExprBinary":8},"tags":["domain/tools","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 19 functions. Carries 8 tests. 176 lines compile to 676 tokens and 128 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.9 KB. Clean through every layer."},{"path":"specs/git/schema.t27","category":"specs/git","name":"schema","module":"Git","lines":229,"bytes":6205,"description":"specs/git/schema.t27 Git Types Specification","health":"ok","tokens":743,"nodes":281,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4835,"rust":2134,"verilog":9132,"verilog_hir":408,"zig":4383},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"EnumDecl":1,"EnumVariant":3,"StructDecl":7,"ExprIdentifier":59,"ConstDecl":4,"ExprLiteral":39,"FnDecl":3,"StmtIf":4,"ExprBinary":23,"ExprReturn":7,"ExprCall":36,"ExprUnary":4,"ExprFieldAccess":28,"TestBlock":13,"StmtLocal":13,"StmtExpr":22,"ExprStructLit":5,"ExprArrayLiteral":4},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 3 functions, 7 structs, 1 enum and 4 constants. Carries 13 tests. 229 lines compile to 743 tokens and 281 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.9 KB. Clean through every layer."},{"path":"specs/git/status.t27","category":"specs/git","name":"status","module":"GitStatus","lines":189,"bytes":6535,"description":"specs/git/status.t27 Git Status Operations","health":"ok","tokens":978,"nodes":217,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4263,"rust":1157,"verilog":8591,"verilog_hir":941,"zig":4529},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":13,"ExprReturn":3,"ExprCall":39,"ExprIdentifier":38,"TestBlock":9,"StmtLocal":18,"ExprStructLit":1,"ExprFieldAccess":16,"ExprLiteral":25,"StmtExpr":22,"ExprBinary":18,"ExprArrayLiteral":7,"ExprIndex":4,"ExprUnary":1},"tags":["domain/tools","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions. Carries 9 tests. 189 lines compile to 978 tokens and 217 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.4 KB. Clean through every layer."},{"path":"specs/github/auth.t27","category":"specs/github","name":"auth","module":"github","lines":27,"bytes":708,"description":"specs/github/auth.t27 GitHub Authentication for t27 Ring-072 - GitHub SSOT Integration","health":"ok","tokens":88,"nodes":20,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1528,"rust":478,"verilog":2579,"verilog_hir":374,"zig":518},"repo":"t27","kinds":{"Module":1,"ConstDecl":3,"ExprLiteral":4,"StructDecl":1,"ExprIdentifier":5,"FnDecl":1,"StmtLocal":1,"StmtAssign":1,"ExprFieldAccess":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 3 constants. Carries 1 test. 27 lines compile to 88 tokens and 20 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/github/comments.t27","category":"specs/github","name":"comments","module":"github","lines":18,"bytes":398,"description":"specs/github/comments.t27","health":"ok","tokens":64,"nodes":10,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1271,"rust":309,"verilog":2210,"verilog_hir":337,"zig":387},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":4,"FnDecl":1,"StmtLocal":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 18 lines compile to 64 tokens and 10 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/github/issues.t27","category":"specs/github","name":"issues","module":"github","lines":22,"bytes":484,"description":"specs/github/issues.t27","health":"ok","tokens":85,"nodes":14,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1479,"rust":402,"verilog":2545,"verilog_hir":358,"zig":495},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":6,"FnDecl":1,"StmtLocal":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 22 lines compile to 85 tokens and 14 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/github/prs.t27","category":"specs/github","name":"prs","module":"github","lines":22,"bytes":472,"description":"specs/github/prs.t27","health":"ok","tokens":85,"nodes":14,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1461,"rust":402,"verilog":2566,"verilog_hir":349,"zig":495},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":6,"FnDecl":1,"StmtLocal":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 22 lines compile to 85 tokens and 14 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/github/tests/e2e_full_flow.t27","category":"specs/github","name":"e2e_full_flow","module":"github","lines":122,"bytes":3778,"description":"specs/github/tests/e2e_full_flow.t27 End-to-End Full Flow Test for Ring-072 GitHub SSOT Tests: Auth -> Issue -> PR -> Comment -> Sync -> Cleanup Ring-074 - E2E Tests","health":"ok","tokens":634,"nodes":7,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":725,"rust":66,"verilog":1603,"verilog_hir":285,"zig":404},"repo":"t27","kinds":{"Module":1,"UseDecl":5,"TestBlock":1},"tags":["domain/tools","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 122 lines compile to 634 tokens and 7 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Clean through every layer."},{"path":"specs/graph/knowledge_graph.t27","category":"specs/graph","name":"knowledge_graph","module":"KnowledgeGraph","lines":406,"bytes":17952,"description":"Module: Knowledge Graph for Vector Symbolic Architecture","health":"ok","tokens":1292,"nodes":122,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7574,"rust":2691,"verilog":13215,"verilog_hir":1196,"zig":8316},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":6,"ExprIdentifier":18,"ExprLiteral":5,"StructDecl":4,"FnDecl":15,"TestBlock":11,"StmtExpr":40,"InvariantBlock":10,"BenchBlock":8},"tags":["domain/graph","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 15 functions, 4 structs and 6 constants. Carries 11 tests, 10 invariants and 8 benches. 406 lines compile to 1,292 tokens and 122 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"specs/hslm/forward_pass.t27","category":"specs/hslm","name":"forward_pass","module":"ForwardPass","lines":306,"bytes":14239,"description":"Module: Minimal Forward Pass for LLM Inference","health":"ok","tokens":867,"nodes":70,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6300,"rust":2312,"verilog":10915,"verilog_hir":1492,"zig":5614},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":7,"ExprLiteral":7,"StructDecl":3,"ExprIdentifier":7,"FnDecl":12,"TestBlock":5,"StmtExpr":12,"InvariantBlock":5,"BenchBlock":8},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 3 structs and 7 constants. Carries 5 tests, 5 invariants and 8 benches. 306 lines compile to 867 tokens and 70 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 10.7 KB. Clean through every layer."},{"path":"specs/interop/gf_cross_language.t27","category":"specs/interop","name":"gf_cross_language","module":"GFCrossLanguageConformance","lines":99,"bytes":3587,"description":"GoldenFloat Cross-Language Conformance All languages must produce identical bits for identical inputs. Reference constant: GF32(phi) = 0x3FCF1BBD","health":"warn","tokens":404,"nodes":153,"depth":9,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2442,"rust":66,"verilog":5045,"verilog_hir":281,"zig":2495},"repo":"t27","kinds":{"Module":2,"UseDecl":3,"TestBlock":8,"StmtLocal":28,"ExprLiteral":22,"ExprCall":28,"ExprIdentifier":29,"StmtExpr":12,"ExprBinary":17,"ExprArrayLiteral":1,"StmtFor":1,"ExprUnary":2},"tags":["domain/network","has/imports","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 8 tests. 99 lines compile to 404 tokens and 153 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/isa/registers.t27","category":"specs/isa","name":"registers","module":"ISARegisters","lines":600,"bytes":20530,"description":"t27/specs/isa/registers.t27 TRI27 ISA Register File Specification Register definitions, Coptic encoding, and register file operations","health":"warn","tokens":2197,"nodes":472,"depth":8,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":9315,"rust":3860,"verilog":18480,"verilog_hir":999,"zig":11406},"repo":"t27","kinds":{"Module":13,"UseDecl":1,"ConstDecl":62,"ExprLiteral":58,"ExprIdentifier":87,"ExprArrayLiteral":1,"FnDecl":10,"StmtIf":10,"ExprBinary":17,"ExprReturn":17,"ExprStructLit":3,"ExprFieldAccess":12,"ExprIndex":4,"StmtAssign":6,"StmtLocal":9,"StmtWhile":1,"ExprCall":19,"ExprUnary":3,"StmtExpr":88,"TestBlock":26,"InvariantBlock":17,"BenchBlock":8},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 10 functions and 62 constants. Carries 26 tests, 17 invariants and 8 benches. 600 lines compile to 2,197 tokens and 472 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 1 type error."},{"path":"specs/isa/ternary_arithmetic.t27","category":"specs/isa","name":"ternary_arithmetic","module":"TernaryArithmetic","lines":501,"bytes":16736,"description":"t27/specs/isa/ternary_arithmetic.t27 Ternary Arithmetic Operations Specification Ring 064 - Balanced ternary arithmetic for T27 Defines addition, subtraction, multiplication, and division","health":"warn","tokens":2496,"nodes":438,"depth":12,"loss":0,"tcErrors":7,"failedBackends":[],"outBytes":{"c":7215,"rust":4218,"verilog":12655,"verilog_hir":1454,"zig":5261},"repo":"t27","kinds":{"Module":20,"UseDecl":1,"ConstDecl":6,"ExprLiteral":51,"FnDecl":10,"StmtLocal":22,"ExprBinary":46,"ExprIdentifier":149,"StmtIf":7,"StmtAssign":29,"ExprUnary":7,"ExprReturn":13,"ExprStructLit":2,"ExprFieldAccess":16,"StructDecl":4,"ExprCall":13,"StmtWhile":8,"ExprIndex":17,"TestBlock":7,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 10 functions, 4 structs and 6 constants. Carries 7 tests, 6 invariants and 4 benches. 501 lines compile to 2,496 tokens and 438 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 12.4 KB. Compiles with 7 type errors."},{"path":"specs/isa/ternary_bitwise.t27","category":"specs/isa","name":"ternary_bitwise","module":"TernaryBitwise","lines":404,"bytes":14046,"description":"t27/specs/isa/ternary_bitwise.t27 Ternary Bitwise Operations Specification Ring 068 - Bitwise AND, OR, XOR for ternary data Defines bitwise operations on ternary word representations","health":"warn","tokens":2418,"nodes":316,"depth":13,"loss":0,"tcErrors":7,"failedBackends":[],"outBytes":{"c":6163,"rust":1333,"verilog":10763,"verilog_hir":825,"zig":4118},"repo":"t27","kinds":{"Module":24,"UseDecl":1,"ConstDecl":4,"ExprLiteral":18,"FnDecl":9,"StmtLocal":9,"StmtWhile":7,"ExprBinary":22,"ExprIdentifier":127,"StmtIf":8,"ExprIndex":37,"StmtAssign":22,"ExprUnary":1,"StmtExpr":4,"ExprCall":4,"TestBlock":9,"InvariantBlock":5,"BenchBlock":5},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 9 functions and 4 constants. Carries 9 tests, 5 invariants and 5 benches. 404 lines compile to 2,418 tokens and 316 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 10.5 KB. Compiles with 7 type errors."},{"path":"specs/isa/ternary_control_flow.t27","category":"specs/isa","name":"ternary_control_flow","module":"TernaryControlFlow","lines":392,"bytes":12518,"description":"t27/specs/isa/ternary_control_flow.t27 Ternary Control Flow Specification Ring 090 - Control flow operations for ternary architecture Conditional jumps, branches, and call/return","health":"ok","tokens":1489,"nodes":358,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7731,"rust":3153,"verilog":14463,"verilog_hir":1544,"zig":8187},"repo":"t27","kinds":{"Module":22,"UseDecl":1,"ConstDecl":12,"ExprLiteral":26,"FnDecl":16,"ExprReturn":15,"StmtLocal":5,"ExprCall":23,"ExprFieldAccess":15,"ExprBinary":22,"ExprIdentifier":76,"StmtIf":13,"StmtAssign":11,"StmtExpr":63,"ExprStructLit":1,"ExprIndex":3,"TestBlock":19,"InvariantBlock":9,"BenchBlock":6},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions and 12 constants. Carries 19 tests, 9 invariants and 6 benches. 392 lines compile to 1,489 tokens and 358 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Clean through every layer."},{"path":"specs/isa/ternary_deque.t27","category":"specs/isa","name":"ternary_deque","module":"TernaryDeque","lines":498,"bytes":16013,"description":"t27/specs/isa/ternary_deque.t27 Ternary Deque Operations Specification Ring 088 - Double-ended queue operations for ternary data Defines deque with push/pop from both ends","health":"warn","tokens":2960,"nodes":383,"depth":10,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":6730,"rust":2799,"verilog":11790,"verilog_hir":1426,"zig":4688},"repo":"t27","kinds":{"Module":24,"UseDecl":1,"ConstDecl":4,"ExprLiteral":50,"FnDecl":11,"StmtLocal":3,"StmtWhile":2,"ExprBinary":40,"ExprIdentifier":100,"ExprFieldAccess":59,"StmtAssign":30,"ExprIndex":8,"StmtIf":18,"ExprReturn":15,"TestBlock":8,"InvariantBlock":5,"BenchBlock":5},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 11 functions and 4 constants. Carries 8 tests, 5 invariants and 5 benches. 498 lines compile to 2,960 tokens and 383 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.5 KB. Compiles with 3 type errors."},{"path":"specs/isa/ternary_encoding.t27","category":"specs/isa","name":"ternary_encoding","module":null,"lines":42,"bytes":944,"description":"specs/isa/ternary_encoding.t27 Ternary encoding: values in {-1, 0, +1}","health":"warn","tokens":152,"nodes":5,"depth":5,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":615,"rust":66,"verilog":1534,"verilog_hir":243,"zig":246},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/isa","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 42 lines compile to 152 tokens and 5 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/isa/ternary_gates.t27","category":"specs/isa","name":"ternary_gates","module":"TernaryGates","lines":410,"bytes":14744,"description":"t27/specs/isa/ternary_gates.t27 Ternary Logic Gates Specification Ring 063 - Basic ternary logic gates for balanced ternary Defines AND, OR, NOT, and other fundamental operations","health":"ok","tokens":1888,"nodes":299,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6670,"rust":3005,"verilog":12594,"verilog_hir":865,"zig":4531},"repo":"t27","kinds":{"Module":23,"UseDecl":1,"ConstDecl":4,"ExprLiteral":25,"FnDecl":10,"ExprReturn":20,"ExprUnary":2,"ExprIdentifier":101,"ExprStructLit":1,"ExprFieldAccess":2,"StmtIf":16,"ExprBinary":49,"StmtLocal":9,"ExprCall":2,"StmtAssign":9,"StructDecl":2,"TestBlock":12,"InvariantBlock":7,"BenchBlock":4},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 10 functions, 2 structs and 4 constants. Carries 12 tests, 7 invariants and 4 benches. 410 lines compile to 1,888 tokens and 299 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/isa/ternary_graph.t27","category":"specs/isa","name":"ternary_graph","module":"TernaryGraph","lines":131,"bytes":3644,"description":"t27/specs/isa/ternary_graph.t27 Ternary Graph Operations Specification Ring 083 - Graph algorithms on ternary-weighted adjacency 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":576,"nodes":228,"depth":10,"loss":0,"tcErrors":7,"failedBackends":[],"outBytes":{"c":3979,"rust":1779,"verilog":6705,"verilog_hir":870,"zig":2260},"repo":"t27","kinds":{"Module":12,"UseDecl":1,"ConstDecl":4,"ExprLiteral":25,"FnDecl":8,"StmtLocal":9,"StmtWhile":6,"ExprBinary":26,"ExprIdentifier":83,"StmtAssign":11,"ExprIndex":18,"StmtIf":5,"StmtExpr":4,"ExprCall":2,"ExprReturn":8,"TestBlock":3,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 8 functions and 4 constants. Carries 3 tests, 2 invariants and 1 bench. 131 lines compile to 576 tokens and 228 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Compiles with 7 type errors."},{"path":"specs/isa/ternary_hash.t27","category":"specs/isa","name":"ternary_hash","module":"TernaryHashTable","lines":167,"bytes":5024,"description":"t27/specs/isa/ternary_hash.t27 Ternary Hash Table Operations Specification Ring 087 - Hash table with ternary keys 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":1044,"nodes":504,"depth":10,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":5304,"rust":2159,"verilog":8479,"verilog_hir":735,"zig":4666},"repo":"t27","kinds":{"Module":13,"UseDecl":1,"ConstDecl":5,"ExprLiteral":81,"FnDecl":6,"StmtLocal":27,"ExprFieldAccess":9,"ExprBinary":70,"ExprIdentifier":139,"ExprReturn":10,"StmtWhile":6,"StmtAssign":19,"ExprIndex":45,"ExprCall":28,"StmtIf":6,"TestBlock":4,"StmtExpr":20,"ExprUnary":12,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 5 constants. Carries 4 tests, 2 invariants and 1 bench. 167 lines compile to 1,044 tokens and 504 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Compiles with 9 type errors."},{"path":"specs/isa/ternary_memory.t27","category":"specs/isa","name":"ternary_memory","module":"ISAMemoryOps","lines":522,"bytes":18705,"description":"t27/specs/isa/ternary_memory.t27 Ternary Memory Specification Ring 089 - Memory operations for ternary architecture Load/store operations with ternary address and data","health":"warn","tokens":2662,"nodes":566,"depth":10,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":10308,"rust":4547,"verilog":17298,"verilog_hir":1740,"zig":11637},"repo":"t27","kinds":{"Module":30,"UseDecl":1,"ConstDecl":12,"ExprLiteral":59,"FnDecl":15,"StmtIf":21,"ExprBinary":67,"ExprIdentifier":138,"ExprReturn":34,"ExprStructLit":2,"ExprFieldAccess":13,"ExprIndex":14,"StmtAssign":15,"ExprCall":11,"StmtLocal":11,"StmtWhile":5,"ExprIf":2,"ExprUnary":1,"TestBlock":18,"StmtExpr":78,"InvariantBlock":13,"BenchBlock":6},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 15 functions and 12 constants. Carries 18 tests, 13 invariants and 6 benches. 522 lines compile to 2,662 tokens and 566 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 16.9 KB. Compiles with 5 type errors."},{"path":"specs/isa/ternary_pattern_matching.t27","category":"specs/isa","name":"ternary_pattern_matching","module":"TernaryPatternMatching","lines":173,"bytes":5331,"description":"t27/specs/isa/ternary_pattern_matching.t27 Ternary Pattern Matching Operations Specification Ring 082 - Pattern matching algorithms for ternary sequences 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":1222,"nodes":604,"depth":12,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":5598,"rust":2577,"verilog":10028,"verilog_hir":632,"zig":4780},"repo":"t27","kinds":{"Module":24,"UseDecl":1,"ConstDecl":3,"ExprLiteral":130,"FnDecl":5,"StmtIf":12,"ExprBinary":77,"ExprFieldAccess":30,"ExprIdentifier":135,"ExprReturn":10,"ExprUnary":29,"StmtLocal":35,"StmtWhile":10,"ExprIndex":33,"StmtAssign":20,"TestBlock":6,"ExprArrayLiteral":16,"StmtExpr":9,"ExprCall":16,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 5 functions and 3 constants. Carries 6 tests, 2 invariants and 1 bench. 173 lines compile to 1,222 tokens and 604 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 9.8 KB. Compiles with 10 type errors."},{"path":"specs/isa/ternary_search.t27","category":"specs/isa","name":"ternary_search","module":"TernarySearch","lines":165,"bytes":4613,"description":"t27/specs/isa/ternary_search.t27 Ternary Search Operations Specification Ring 081 - Search algorithms for ternary data 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":934,"nodes":456,"depth":11,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":4926,"rust":2381,"verilog":8729,"verilog_hir":625,"zig":4085},"repo":"t27","kinds":{"Module":23,"UseDecl":1,"ConstDecl":3,"ExprLiteral":82,"FnDecl":6,"StmtLocal":27,"StmtWhile":8,"ExprBinary":52,"ExprIdentifier":119,"ExprFieldAccess":13,"StmtIf":11,"ExprIndex":24,"ExprReturn":11,"StmtAssign":15,"ExprUnary":22,"TestBlock":5,"ExprArrayLiteral":7,"StmtExpr":9,"ExprCall":15,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 3 constants. Carries 5 tests, 2 invariants and 1 bench. 165 lines compile to 934 tokens and 456 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 9 type errors."},{"path":"specs/isa/ternary_set.t27","category":"specs/isa","name":"ternary_set","module":"TernarySet","lines":182,"bytes":5215,"description":"t27/specs/isa/ternary_set.t27 Ternary Set Operations Specification Ring 085 - Set operations on ternary-valued elements 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":1247,"nodes":630,"depth":11,"loss":0,"tcErrors":22,"failedBackends":[],"outBytes":{"c":5726,"rust":2708,"verilog":9880,"verilog_hir":841,"zig":4832},"repo":"t27","kinds":{"Module":27,"UseDecl":1,"ConstDecl":4,"ExprLiteral":95,"FnDecl":6,"StmtIf":10,"ExprBinary":88,"ExprFieldAccess":8,"ExprIdentifier":203,"ExprReturn":8,"StmtLocal":32,"StmtWhile":9,"ExprIndex":52,"StmtAssign":36,"TestBlock":4,"StmtExpr":12,"ExprCall":14,"ExprUnary":12,"ExprArrayLiteral":6,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 4 constants. Carries 4 tests, 2 invariants and 1 bench. 182 lines compile to 1,247 tokens and 630 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 9.6 KB. Compiles with 22 type errors."},{"path":"specs/isa/ternary_shift.t27","category":"specs/isa","name":"ternary_shift","module":"TernaryShift","lines":420,"bytes":14016,"description":"t27/specs/isa/ternary_shift.t27 Ternary Shift and Rotate Operations Specification Ring 067 - Bitwise/Tritwise shift and rotate operations Defines how ternary words are shifted and rotated","health":"warn","tokens":2227,"nodes":425,"depth":9,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":6598,"rust":2384,"verilog":11836,"verilog_hir":860,"zig":4824},"repo":"t27","kinds":{"Module":23,"UseDecl":1,"ConstDecl":7,"ExprLiteral":48,"FnDecl":7,"StmtIf":10,"ExprBinary":53,"ExprIdentifier":146,"ExprReturn":15,"StmtLocal":19,"StmtWhile":12,"StmtAssign":26,"ExprIndex":22,"ExprCall":16,"ExprFieldAccess":2,"TestBlock":9,"InvariantBlock":5,"BenchBlock":4},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 7 functions and 7 constants. Carries 9 tests, 5 invariants and 4 benches. 420 lines compile to 2,227 tokens and 425 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Compiles with 10 type errors."},{"path":"specs/isa/ternary_sorting.t27","category":"specs/isa","name":"ternary_sorting","module":"TernarySorting","lines":173,"bytes":4909,"description":"t27/specs/isa/ternary_sorting.t27 Ternary Sorting Operations Specification Ring 080 - Sorting algorithms for ternary data 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":986,"nodes":515,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":5155,"rust":821,"verilog":8782,"verilog_hir":668,"zig":3761},"repo":"t27","kinds":{"Module":19,"UseDecl":1,"ConstDecl":3,"ExprLiteral":78,"FnDecl":6,"StmtIf":9,"ExprBinary":57,"ExprIdentifier":159,"ExprReturn":5,"StmtLocal":24,"ExprFieldAccess":6,"StmtWhile":9,"StmtAssign":24,"ExprIndex":42,"StmtExpr":18,"ExprCall":23,"TestBlock":5,"ExprArrayLiteral":5,"ExprUnary":19,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 3 constants. Carries 5 tests, 2 invariants and 1 bench. 173 lines compile to 986 tokens and 515 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 8.6 KB. Compiles with 9 type errors."},{"path":"specs/isa/ternary_tree.t27","category":"specs/isa","name":"ternary_tree","module":"TernaryTree","lines":141,"bytes":4645,"description":"t27/specs/isa/ternary_tree.t27 Ternary Tree Operations Specification Ring 084 - Tree algorithms on ternary-valued nodes 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":805,"nodes":373,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5095,"rust":2726,"verilog":7800,"verilog_hir":799,"zig":3362},"repo":"t27","kinds":{"Module":21,"UseDecl":1,"ConstDecl":5,"ExprLiteral":26,"FnDecl":7,"StmtLocal":8,"StmtWhile":1,"ExprBinary":45,"ExprIdentifier":153,"ExprFieldAccess":9,"StmtAssign":18,"ExprIndex":29,"StmtIf":19,"ExprReturn":12,"ExprCall":12,"TestBlock":2,"InvariantBlock":2,"StmtExpr":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 7 functions and 5 constants. Carries 2 tests, 2 invariants and 1 bench. 141 lines compile to 805 tokens and 373 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Compiles with 1 type error."},{"path":"specs/jit/jit.t27","category":"specs/jit","name":"jit","module":"jit","lines":875,"bytes":29745,"description":"t27/specs/jit/jit.t27 Trinity JIT Compiler Compiles VSA operations to native machine code 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q JIT (Just-In-Time) compiler for VSA operations: - Compiles high-level VSA operations to native x86-64 machine code","health":"ok","tokens":4872,"nodes":1944,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11598,"rust":1464,"verilog":20222,"verilog_hir":420,"zig":22043},"repo":"t27","kinds":{"Module":108,"UseDecl":2,"ConstDecl":8,"ExprLiteral":408,"StructDecl":3,"ExprIdentifier":228,"FnDecl":26,"ExprReturn":118,"ExprStructLit":2,"ExprFieldAccess":65,"ExprBinary":93,"ExprArrayLiteral":64,"StmtAssign":36,"StmtIf":94,"ExprIndex":18,"StmtLocal":76,"StmtWhile":5,"ExprCall":294,"ExprUnary":186,"StmtExpr":68,"TestBlock":16,"InvariantBlock":10,"BenchBlock":8,"StmtFor":8},"tags":["domain/compiler","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 26 functions, 3 structs and 8 constants. Carries 16 tests, 10 invariants and 8 benches. 875 lines compile to 4,872 tokens and 1,944 AST nodes, depth 10. Emits 5 of 5 backends; largest is Zig at 21.5 KB. Clean through every layer."},{"path":"specs/lsp/client.t27","category":"specs/lsp","name":"client","module":"lsp-client","lines":505,"bytes":14486,"description":"lsp/client.t27 — LSP Client Configuration and Capabilities Client-side protocol, capabilities, and configuration management","health":"ok","tokens":1870,"nodes":587,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13232,"rust":7805,"verilog":20858,"verilog_hir":1139,"zig":11121},"repo":"t27","kinds":{"Module":5,"UseDecl":3,"ConstDecl":8,"ExprLiteral":96,"StructDecl":20,"ExprIdentifier":122,"EnumDecl":2,"EnumVariant":6,"FnDecl":11,"ExprReturn":11,"ExprStructLit":17,"ExprFieldAccess":87,"ExprCall":68,"ExprEnumValue":11,"ExprUnary":21,"ExprArrayLiteral":2,"ExprBinary":16,"ExprSwitch":1,"TestBlock":10,"StmtLocal":12,"StmtExpr":33,"StmtAssign":5,"InvariantBlock":12,"BenchBlock":4,"StmtFor":4},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 11 functions, 20 structs, 2 enums and 8 constants. Carries 10 tests, 12 invariants and 4 benches. 505 lines compile to 1,870 tokens and 587 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 20.4 KB. Clean through every layer."},{"path":"specs/lsp/language.t27","category":"specs/lsp","name":"language","module":"lsp-language","lines":527,"bytes":14976,"description":"lsp/language.t27 — Language Server Feature Mappings Language ID mappings, file extensions, and feature associations","health":"ok","tokens":2248,"nodes":700,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14355,"rust":6646,"verilog":22788,"verilog_hir":1187,"zig":11639},"repo":"t27","kinds":{"Module":16,"UseDecl":1,"ConstDecl":43,"ExprLiteral":105,"StructDecl":10,"ExprIdentifier":140,"EnumDecl":2,"EnumVariant":27,"FnDecl":13,"ExprReturn":18,"ExprStructLit":11,"ExprFieldAccess":64,"ExprUnary":24,"ExprArrayLiteral":10,"ExprCall":89,"StmtIf":5,"ExprEnumValue":10,"ExprSwitch":2,"TestBlock":14,"StmtLocal":17,"StmtExpr":34,"ExprBinary":13,"InvariantBlock":12,"BenchBlock":5,"StmtFor":5,"StmtAssign":10},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 13 functions, 10 structs, 2 enums and 43 constants. Carries 14 tests, 12 invariants and 5 benches. 527 lines compile to 2,248 tokens and 700 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 22.3 KB. Clean through every layer."},{"path":"specs/lsp/protocol.t27","category":"specs/lsp","name":"protocol","module":"lsp-protocol","lines":681,"bytes":20652,"description":"lsp/protocol.t27 — JSON-RPC 2.0 Protocol Mapping LSP message handling over JSON-RPC transport layer","health":"ok","tokens":2819,"nodes":957,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16726,"rust":7069,"verilog":28373,"verilog_hir":2029,"zig":14177},"repo":"t27","kinds":{"Module":6,"UseDecl":1,"ConstDecl":25,"ExprLiteral":144,"EnumDecl":3,"EnumVariant":11,"StructDecl":11,"ExprIdentifier":199,"FnDecl":24,"ExprReturn":23,"ExprStructLit":8,"ExprFieldAccess":97,"StmtLocal":24,"ExprUnary":48,"ExprCall":154,"StmtExpr":63,"ExprBinary":30,"ExprEnumValue":13,"ExprSwitch":2,"TestBlock":33,"StmtAssign":12,"ExprIndex":4,"InvariantBlock":12,"BenchBlock":5,"StmtFor":5},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 24 functions, 11 structs, 3 enums and 25 constants. Carries 33 tests, 12 invariants and 5 benches. 681 lines compile to 2,819 tokens and 957 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 27.7 KB. Clean through every layer."},{"path":"specs/lsp/schema.t27","category":"specs/lsp","name":"schema","module":"lsp-schema","lines":589,"bytes":15702,"description":"lsp/schema.t27 — LSP Base Types Position, Range, Diagnostic definitions for Language Server Protocol","health":"ok","tokens":2768,"nodes":931,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15688,"rust":7675,"verilog":26710,"verilog_hir":1560,"zig":12389},"repo":"t27","kinds":{"Module":15,"UseDecl":1,"ConstDecl":8,"ExprLiteral":143,"StructDecl":16,"ExprIdentifier":181,"EnumDecl":7,"EnumVariant":65,"FnDecl":14,"ExprReturn":19,"ExprStructLit":25,"ExprFieldAccess":130,"StmtLocal":40,"ExprCall":90,"ExprUnary":32,"ExprArrayLiteral":2,"ExprBinary":41,"StmtIf":6,"ExprSwitch":1,"TestBlock":16,"StmtExpr":42,"ExprEnumValue":11,"InvariantBlock":10,"BenchBlock":4,"StmtFor":4,"StmtAssign":8},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 16 structs, 7 enums and 8 constants. Carries 16 tests, 10 invariants and 4 benches. 589 lines compile to 2,768 tokens and 931 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 26.1 KB. Clean through every layer."},{"path":"specs/lsp/server.t27","category":"specs/lsp","name":"server","module":"lsp-server","lines":555,"bytes":15397,"description":"lsp/server.t27 — LSP Server Lifecycle and Methods Server-side protocol initialization, lifecycle, and request handling","health":"ok","tokens":2090,"nodes":663,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15015,"rust":7144,"verilog":25046,"verilog_hir":1880,"zig":12436},"repo":"t27","kinds":{"Module":6,"UseDecl":6,"ConstDecl":21,"ExprLiteral":96,"StructDecl":13,"ExprIdentifier":115,"EnumDecl":3,"EnumVariant":18,"FnDecl":20,"ExprReturn":20,"ExprStructLit":11,"ExprFieldAccess":57,"ExprCall":85,"ExprUnary":31,"ExprArrayLiteral":3,"ExprBinary":28,"ExprEnumValue":18,"ExprSwitch":2,"TestBlock":19,"StmtLocal":22,"StmtExpr":42,"InvariantBlock":12,"BenchBlock":5,"StmtFor":5,"StmtAssign":5},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 20 functions, 13 structs, 3 enums and 21 constants. Carries 19 tests, 12 invariants and 5 benches. 555 lines compile to 2,090 tokens and 663 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 24.5 KB. Clean through every layer."},{"path":"specs/math/constants.t27","category":"specs/math","name":"constants","module":"Constants","lines":459,"bytes":16818,"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing phi^2 + 1/phi^2 = 3 | Sacred constants for ternary computing","health":"ok","tokens":1697,"nodes":495,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8751,"rust":3267,"verilog":17598,"verilog_hir":671,"zig":10484},"repo":"t27","kinds":{"Module":21,"ConstDecl":14,"ExprLiteral":56,"ExprIdentifier":109,"FnDecl":7,"StmtIf":16,"ExprBinary":58,"ExprReturn":18,"ExprUnary":4,"ExprCall":35,"StmtLocal":21,"ExprIf":1,"StmtWhile":1,"StmtAssign":11,"StmtFor":1,"TestBlock":27,"StmtExpr":73,"InvariantBlock":17,"BenchBlock":5},"tags":["domain/math","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 7 functions and 14 constants. Carries 27 tests, 17 invariants and 5 benches. 459 lines compile to 1,697 tokens and 495 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 17.2 KB. Clean through every layer."},{"path":"specs/math/e8_lie_algebra.t27","category":"specs/math","name":"e8_lie_algebra","module":"E8LieAlgebra","lines":390,"bytes":14031,"description":"t27/specs/math/e8_lie_algebra.t27 E8 Exceptional Lie Algebra -- Root System, Cartan Matrix, Eigenvalues Direction A (Priority 2) of PROJECT KEPLER->NEWTON E8 is the largest exceptional simple Lie group. Its root system contains golden ratio phi as a structural invariant through the H4 Coxeter subgroup. Key results verified computationally:","health":"ok","tokens":1848,"nodes":237,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5966,"rust":2110,"verilog":12813,"verilog_hir":744,"zig":8135},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":9,"ExprLiteral":24,"ExprIdentifier":39,"StructDecl":3,"FnDecl":10,"ExprReturn":11,"ExprStructLit":2,"ExprFieldAccess":10,"ExprArrayLiteral":5,"StmtLocal":8,"ExprBinary":18,"ExprCall":2,"ExprIndex":2,"StmtWhile":1,"StmtAssign":4,"ExprUnary":2,"StmtIf":1,"TestBlock":22,"StmtExpr":49,"InvariantBlock":8,"BenchBlock":3},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 3 structs and 9 constants. Carries 22 tests, 8 invariants and 3 benches. 390 lines compile to 1,848 tokens and 237 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Clean through every layer."},{"path":"specs/math/gf_competitive.t27","category":"specs/math","name":"gf_competitive","module":"GFCompetitive","lines":122,"bytes":4213,"description":"t27/specs/math/gf_competitive.t27 GoldenFloat Competitive Analysis -- GF vs Posit vs IEEE 754 MATH-COMPETITIVE-001 -- Decode latency, parallelism, hardware efficiency Ring 051: Competitive analysis showing GF's structural advantages Main result: GF has O(1) parallel decode vs Posit's O(N) sequential","health":"ok","tokens":389,"nodes":127,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3367,"rust":350,"verilog":5829,"verilog_hir":303,"zig":2558},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":1,"ExprIdentifier":19,"FnDecl":1,"ExprReturn":1,"ExprArrayLiteral":1,"TestBlock":6,"StmtLocal":12,"ExprCall":19,"StmtExpr":11,"ExprUnary":9,"ExprFieldAccess":10,"ExprIndex":8,"ExprLiteral":12,"ExprBinary":5,"InvariantBlock":4,"StmtFor":2,"BenchBlock":1},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 6 tests, 4 invariants and 1 bench. 122 lines compile to 389 tokens and 127 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Clean through every layer."},{"path":"specs/math/pellis_precision_verify.t27","category":"specs/math","name":"pellis_precision_verify","module":"PellisPrecision","lines":204,"bytes":8117,"description":"t27/specs/math/pellis_precision_verify.t27 Arbitrary precision verification via GMP/MPFR reference NUMERIC-VERIF-001 -- Pre-registered checkpoint for CODATA 2026","health":"ok","tokens":609,"nodes":171,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5283,"rust":1963,"verilog":9248,"verilog_hir":545,"zig":5207},"repo":"t27","kinds":{"Module":8,"UseDecl":2,"ConstDecl":5,"ExprLiteral":22,"StructDecl":1,"ExprIdentifier":37,"FnDecl":4,"StmtLocal":12,"ExprBinary":12,"ExprCall":7,"ExprUnary":1,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":6,"StmtIf":5,"StmtFor":1,"ExprIndex":1,"StmtAssign":3,"TestBlock":9,"StmtExpr":20,"InvariantBlock":7,"BenchBlock":2},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 1 struct and 5 constants. Carries 9 tests, 7 invariants and 2 benches. 204 lines compile to 609 tokens and 171 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 9.0 KB. Clean through every layer."},{"path":"specs/math/phi_split_optimality.t27","category":"specs/math","name":"phi_split_optimality","module":"PhiSplitOptimality","lines":336,"bytes":12692,"description":"t27/specs/math/phi_split_optimality.t27 Phi-Split Theorems -- Self-Similarity + Optimal Rounding (CORRECTED) MATH-OPTIMALITY-001 -- Foundation for GoldenFloat being non-random THEOREM 1 (Golden Self-Similarity): phi is unique self-similar proportion for bit allocation THEOREM 2 (Optimal Rounding): round((N-1)/phi^2) minimizes phi-distance (7/7 match)","health":"ok","tokens":1298,"nodes":242,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6417,"rust":1654,"verilog":11868,"verilog_hir":778,"zig":8914},"repo":"t27","kinds":{"Module":6,"UseDecl":2,"ConstDecl":1,"ExprIdentifier":62,"StructDecl":2,"FnDecl":8,"StmtLocal":22,"ExprFieldAccess":23,"ExprCall":4,"ExprBinary":21,"ExprLiteral":11,"StmtIf":4,"ExprUnary":2,"ExprReturn":9,"ExprArrayLiteral":4,"StmtFor":1,"ExprIndex":2,"StmtAssign":1,"ExprStructLit":1,"TestBlock":12,"StmtExpr":31,"InvariantBlock":10,"BenchBlock":3},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions, 2 structs and 1 constant. Carries 12 tests, 10 invariants and 3 benches. 336 lines compile to 1,298 tokens and 242 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Clean through every layer."},{"path":"specs/math/phi_universal_attractor.t27","category":"specs/math","name":"phi_universal_attractor","module":"PhiUniversalAttractor","lines":333,"bytes":12924,"description":"t27/specs/math/phi_universal_attractor.t27 Phi Universal Attractor Theorems -- Theorem 3: phi as Universal Fixed-Point MATH-ATTRACTOR-001 -- Generative mechanism for phi proportion THEOREM 3: phi is the unique fixed point of balancing recursion f(x) = (x + x^-^1 + 1) / 2 This addresses the critic's concern that phi is \"fitting\" rather than a true mechanism.","health":"ok","tokens":1288,"nodes":213,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6557,"rust":1553,"verilog":12949,"verilog_hir":850,"zig":9686},"repo":"t27","kinds":{"Module":5,"UseDecl":2,"FnDecl":7,"StmtLocal":12,"ExprBinary":17,"ExprLiteral":15,"ExprIdentifier":42,"ExprReturn":6,"ConstDecl":1,"StructDecl":2,"StmtWhile":1,"ExprCall":5,"StmtAssign":6,"StmtIf":2,"StmtBreak":2,"ExprStructLit":1,"ExprFieldAccess":4,"ExprArrayLiteral":2,"StmtFor":1,"TestBlock":15,"StmtExpr":48,"InvariantBlock":11,"BenchBlock":6},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 1 constant. Carries 15 tests, 11 invariants and 6 benches. 333 lines compile to 1,288 tokens and 213 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.6 KB. Clean through every layer."},{"path":"specs/math/property_test_template.t27","category":"specs/math","name":"property_test_template","module":"PropertyTestTemplate","lines":513,"bytes":16168,"description":"t27/specs/math/property_test_template.t27 Property-Test Template for Conformance Vectors Ring 053 - Defines reusable property testing patterns This spec provides templates for property-based testing of T27 formats Properties: mathematical invariants that must hold for ALL valid inputs","health":"warn","tokens":2527,"nodes":900,"depth":13,"loss":0,"tcErrors":19,"failedBackends":[],"outBytes":{"c":10796,"rust":7168,"verilog":20816,"verilog_hir":1115,"zig":11639},"repo":"t27","kinds":{"Module":49,"UseDecl":1,"ConstDecl":6,"ExprLiteral":117,"FnDecl":16,"StmtLocal":74,"StmtWhile":21,"ExprBinary":127,"ExprIdentifier":259,"ExprIndex":19,"StmtIf":27,"ExprCall":24,"ExprReturn":37,"StmtAssign":29,"ExprUnary":3,"ExprFieldAccess":6,"ExprIf":1,"TestBlock":16,"StmtExpr":59,"InvariantBlock":5,"BenchBlock":4},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 16 functions and 6 constants. Carries 16 tests, 5 invariants and 4 benches. 513 lines compile to 2,527 tokens and 900 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.3 KB. Compiles with 19 type errors."},{"path":"specs/math/radix_economy.t27","category":"specs/math","name":"radix_economy","module":"RadixEconomy","lines":331,"bytes":10783,"description":"t27/specs/math/radix_economy.t27 Radix Economy Formal Spec -- Information-Theoretic Basis for Base-3 Computing E(b) = ln(b)/b, maximized at b = e ~= 2.71828 E(3)/E(e) >= 99.5%, E(3)/E(2) = 1.054 (5.4% advantage)","health":"ok","tokens":1291,"nodes":370,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6447,"rust":1515,"verilog":11770,"verilog_hir":889,"zig":8030},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":5,"ExprLiteral":50,"FnDecl":11,"ExprReturn":19,"ExprBinary":50,"ExprCall":12,"ExprIdentifier":68,"ExprFieldAccess":9,"StmtIf":12,"StmtLocal":19,"ExprIf":1,"ExprUnary":1,"StmtWhile":1,"StmtAssign":4,"TestBlock":14,"StmtExpr":63,"InvariantBlock":12,"BenchBlock":4},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 5 constants. Carries 14 tests, 12 invariants and 4 benches. 331 lines compile to 1,291 tokens and 370 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 11.5 KB. Clean through every layer."},{"path":"specs/math/sacred_physics.t27","category":"specs/math","name":"sacred_physics","module":"SacredPhysics","lines":461,"bytes":18991,"description":"t27/specs/math/sacred_physics.t27 Strand I 0 Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","health":"ok","tokens":1630,"nodes":466,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9647,"rust":4299,"verilog":18572,"verilog_hir":685,"zig":11300},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":12,"ExprIdentifier":154,"FnDecl":7,"StmtLocal":39,"ExprBinary":52,"ExprReturn":9,"ExprLiteral":20,"StmtIf":4,"StmtWhile":2,"StmtAssign":6,"ExprUnary":1,"StructDecl":2,"ExprCall":7,"ExprStructLit":2,"ExprFieldAccess":23,"TestBlock":24,"StmtExpr":74,"InvariantBlock":16,"BenchBlock":4},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 7 functions, 2 structs and 12 constants. Carries 24 tests, 16 invariants and 4 benches. 461 lines compile to 1,630 tokens and 466 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.1 KB. Clean through every layer."},{"path":"specs/math/zamolodchikov_e8.t27","category":"specs/math","name":"zamolodchikov_e8","module":"ZamolodchikovE8","lines":324,"bytes":11409,"description":"t27/specs/math/zamolodchikov_e8.t27 Zamolodchikov E8 Integrable Field Theory -- Mass Spectrum Direction A/E of PROJECT KEPLER->NEWTON In 1989, Zamolodchikov proved that the 2D Ising CFT perturbed by a magnetic field possesses E8 symmetry with exactly 8 stable particles. Their mass ratios are determined EXACTLY by E8 algebra -- not fitted.","health":"ok","tokens":1417,"nodes":406,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5961,"rust":2721,"verilog":12518,"verilog_hir":878,"zig":6983},"repo":"t27","kinds":{"Module":16,"UseDecl":2,"FnDecl":10,"StmtLocal":13,"ExprIdentifier":75,"StmtIf":11,"ExprBinary":69,"ExprLiteral":70,"ExprReturn":19,"ExprCall":22,"ExprArrayLiteral":4,"StructDecl":1,"StmtWhile":4,"StmtAssign":11,"ExprIndex":2,"ExprStructLit":1,"ExprFieldAccess":7,"ExprUnary":2,"TestBlock":17,"StmtExpr":42,"InvariantBlock":5,"BenchBlock":3},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 1 struct. Carries 17 tests, 5 invariants and 3 benches. 324 lines compile to 1,417 tokens and 406 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/memory/formula_embed.t27","category":"specs/memory","name":"formula_embed","module":"FormulaEmbed","lines":202,"bytes":5767,"description":"Module: Formula Embedding for Cortical Semantic Map Cortical topographic map analog: - Formula features mapped to 27-dimensional embedding space - L2 normalization ensures unit vectors - Features: value, complexity, phi-distance, sector-id","health":"ok","tokens":826,"nodes":297,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4721,"rust":2690,"verilog":7789,"verilog_hir":932,"zig":3860},"repo":"t27","kinds":{"Module":3,"UseDecl":5,"ConstDecl":6,"ExprLiteral":31,"EnumDecl":1,"EnumVariant":7,"StructDecl":3,"ExprIdentifier":82,"FnDecl":5,"ExprReturn":5,"ExprStructLit":5,"ExprFieldAccess":39,"ExprCall":33,"StmtLocal":20,"StmtAssign":8,"ExprIndex":7,"StmtWhile":2,"ExprBinary":18,"ExprUnary":3,"TestBlock":4,"ExprEnumValue":3,"StmtExpr":7},"tags":["domain/storage","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions, 3 structs, 1 enum and 6 constants. Carries 4 tests. 202 lines compile to 826 tokens and 297 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Clean through every layer."},{"path":"specs/memory/memory_primitives.t27","category":"specs/memory","name":"memory_primitives","module":"MemoryPrimitives","lines":180,"bytes":5305,"description":"t27/specs/memory/memory_primitives.t27 Native Memory Primitives Specification Ring 029 — Language-level remember/recall/forget/reflect Inspired by MemPalace associative memory architecture 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":798,"nodes":392,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5583,"rust":1861,"verilog":9961,"verilog_hir":1039,"zig":3955},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":8,"ExprLiteral":60,"StructDecl":1,"ExprIdentifier":105,"FnDecl":8,"StmtIf":6,"ExprBinary":25,"ExprReturn":14,"StmtAssign":33,"ExprFieldAccess":39,"StmtLocal":10,"TestBlock":6,"StmtExpr":18,"ExprUnary":22,"ExprCall":24,"InvariantBlock":3,"BenchBlock":2},"tags":["domain/storage","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions, 1 struct and 8 constants. Carries 6 tests, 3 invariants and 2 benches. 180 lines compile to 798 tokens and 392 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 9.7 KB. Clean through every layer."},{"path":"specs/memory/notebooklm.t27","category":"specs/memory","name":"notebooklm","module":"NotebookLM","lines":486,"bytes":18329,"description":"specs/memory/notebooklm.t27 NotebookLM Integration Specification Ring-071 - RAG-Backed Semantic Memory for t27 Defines interface to Google NotebookLM for persistent session memory","health":"ok","tokens":1974,"nodes":215,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9370,"rust":5655,"verilog":15743,"verilog_hir":1996,"zig":7514},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":13,"EnumDecl":1,"EnumVariant":11,"StructDecl":9,"ExprIdentifier":89,"FnDecl":17,"StmtLocal":12,"StmtAssign":10,"ExprFieldAccess":11,"ExprReturn":7,"ExprBinary":1,"TestBlock":10,"InvariantBlock":7,"BenchBlock":4},"tags":["domain/storage","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 17 functions, 9 structs, 1 enum and 12 constants. Carries 10 tests, 7 invariants and 4 benches. 486 lines compile to 1,974 tokens and 215 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 15.4 KB. Clean through every layer."},{"path":"specs/memory/semantic_search.t27","category":"specs/memory","name":"semantic_search","module":"SemanticSearch","lines":141,"bytes":4471,"description":"Module: Semantic Search via Hippocampus Pattern Completion CA3 pattern completion via Schaffer collaterals analog: - Query embedding compared via cosine similarity normalized by PHI - O(log n) search via HNSW index approximation - Returns top-k formula matches with similarity scores","health":"ok","tokens":564,"nodes":165,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3509,"rust":1696,"verilog":6185,"verilog_hir":540,"zig":2628},"repo":"t27","kinds":{"Module":2,"UseDecl":4,"ConstDecl":3,"ExprLiteral":19,"StructDecl":4,"ExprIdentifier":52,"FnDecl":3,"StmtLocal":17,"ExprCall":11,"ExprReturn":3,"ExprBinary":15,"ExprIndex":4,"StmtWhile":1,"ExprFieldAccess":10,"StmtAssign":1,"ExprStructLit":2,"TestBlock":3,"ExprArrayLiteral":6,"ExprUnary":1,"StmtExpr":4},"tags":["domain/storage","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 4 structs and 3 constants. Carries 3 tests. 141 lines compile to 564 tokens and 165 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.0 KB. Clean through every layer."},{"path":"specs/ml/activation/elu_activation.t27","category":"specs/ml","name":"elu_activation","module":"Elu","lines":117,"bytes":5464,"description":"t27/specs/","health":"ok","tokens":321,"nodes":42,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2623,"rust":426,"verilog":5034,"verilog_hir":446,"zig":2439},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":8,"StmtExpr":20,"InvariantBlock":4},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 constant. Carries 8 tests and 4 invariants. 117 lines compile to 321 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"specs/ml/activation/gelu_activation.t27","category":"specs/ml","name":"gelu_activation","module":"Gelu","lines":68,"bytes":3490,"description":"t27/specs/","health":"ok","tokens":178,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1909,"rust":518,"verilog":3500,"verilog_hir":478,"zig":1487},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":2,"TestBlock":4,"StmtExpr":10},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 2 constants. Carries 4 tests. 68 lines compile to 178 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/ml/activation/gelu_approx_activation.t27","category":"specs/ml","name":"gelu_approx_activation","module":"GeluApprox","lines":82,"bytes":4233,"description":"t27/specs/","health":"ok","tokens":257,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1837,"rust":443,"verilog":3652,"verilog_hir":430,"zig":1700},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":4,"StmtExpr":14},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 2 constants. Carries 4 tests. 82 lines compile to 257 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/ml/activation/leaky_relu_activation.t27","category":"specs/ml","name":"leaky_relu_activation","module":"LeakyRelu","lines":95,"bytes":4569,"description":"t27/specs/","health":"ok","tokens":204,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2344,"rust":433,"verilog":3717,"verilog_hir":458,"zig":1864},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":4,"StmtExpr":10,"InvariantBlock":4},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 constant. Carries 4 tests and 4 invariants. 95 lines compile to 204 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/ml/activation/relu_activation.t27","category":"specs/ml","name":"relu_activation","module":"Relu","lines":62,"bytes":3341,"description":"t27/specs/","health":"ok","tokens":123,"nodes":15,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1981,"rust":477,"verilog":2850,"verilog_hir":478,"zig":1068},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":1,"StmtExpr":2,"InvariantBlock":2},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 constant. Carries 1 test and 2 invariants. 62 lines compile to 123 tokens and 15 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/ml/activation/sigmoid_activation.t27","category":"specs/ml","name":"sigmoid_activation","module":"Sigmoid","lines":63,"bytes":3005,"description":"t27/specs/","health":"ok","tokens":109,"nodes":14,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1435,"rust":363,"verilog":2725,"verilog_hir":458,"zig":852},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":2,"StmtExpr":4},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 2 tests. 63 lines compile to 109 tokens and 14 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/ml/activation/silu_swish_activation.t27","category":"specs/ml","name":"silu_swish_activation","module":"SiluSwish","lines":88,"bytes":4161,"description":"t27/specs/","health":"ok","tokens":181,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2429,"rust":422,"verilog":3771,"verilog_hir":457,"zig":1743},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":3,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 constant. Carries 3 tests and 5 invariants. 88 lines compile to 181 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/ml/activation/silu_swish_vbt_activation.t27","category":"specs/ml","name":"silu_swish_vbt_activation","module":"SiluSwishVbt","lines":16,"bytes":674,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":644,"rust":66,"verilog":1580,"verilog_hir":253,"zig":341},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/ml","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/ml/activation/softmax.t27","category":"specs/ml","name":"softmax","module":"Softmax","lines":83,"bytes":4349,"description":"t27/specs/","health":"ok","tokens":198,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2324,"rust":544,"verilog":3566,"verilog_hir":523,"zig":1732},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":2,"TestBlock":3,"StmtExpr":7,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 2 constants. Carries 3 tests and 3 invariants. 83 lines compile to 198 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/ml/activation/tanh_activation.t27","category":"specs/ml","name":"tanh_activation","module":"Tanh","lines":54,"bytes":2372,"description":"t27/specs/","health":"ok","tokens":88,"nodes":12,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1425,"rust":424,"verilog":2523,"verilog_hir":503,"zig":750},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":1,"StmtExpr":2},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 1 test. 54 lines compile to 88 tokens and 12 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/ml/layers/avgpool2d_layer.t27","category":"specs/ml","name":"avgpool2d_layer","module":"Avgpool2d","lines":123,"bytes":6532,"description":"t27/specs/","health":"ok","tokens":668,"nodes":51,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3104,"rust":798,"verilog":5005,"verilog_hir":560,"zig":3433},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":9,"FnDecl":2,"TestBlock":6,"StmtExpr":19,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 6 tests and 6 invariants. 123 lines compile to 668 tokens and 51 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"specs/ml/layers/batchnorm_layer.t27","category":"specs/ml","name":"batchnorm_layer","module":"Batchnorm","lines":111,"bytes":5804,"description":"t27/specs/","health":"ok","tokens":420,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3196,"rust":978,"verilog":4869,"verilog_hir":703,"zig":3070},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":2,"TestBlock":5,"StmtExpr":16,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 5 tests and 5 invariants. 111 lines compile to 420 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.8 KB. Clean through every layer."},{"path":"specs/ml/layers/conv2d_layer.t27","category":"specs/ml","name":"conv2d_layer","module":"Conv2d","lines":92,"bytes":4236,"description":"t27/specs/","health":"ok","tokens":276,"nodes":38,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2851,"rust":1010,"verilog":4100,"verilog_hir":614,"zig":2018},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":14,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 2 tests and 5 invariants. 92 lines compile to 276 tokens and 38 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/ml/layers/dense_layer.t27","category":"specs/ml","name":"dense_layer","module":"Dense","lines":90,"bytes":4267,"description":"t27/specs/","health":"ok","tokens":268,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2775,"rust":965,"verilog":3980,"verilog_hir":612,"zig":1970},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":12,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 2 tests and 5 invariants. 90 lines compile to 268 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/ml/layers/dropout_layer.t27","category":"specs/ml","name":"dropout_layer","module":"Dropout","lines":70,"bytes":3702,"description":"t27/specs/","health":"ok","tokens":202,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1972,"rust":556,"verilog":3597,"verilog_hir":540,"zig":1489},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":3,"FnDecl":2,"TestBlock":4,"StmtExpr":9},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 constant. Carries 4 tests. 70 lines compile to 202 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/ml/layers/embedding_layer.t27","category":"specs/ml","name":"embedding_layer","module":"Embedding","lines":121,"bytes":5785,"description":"t27/specs/","health":"ok","tokens":411,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3078,"rust":597,"verilog":4748,"verilog_hir":453,"zig":3130},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":3,"FnDecl":2,"TestBlock":6,"StmtExpr":20,"InvariantBlock":7},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 1 constant. Carries 6 tests and 7 invariants. 121 lines compile to 411 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/ml/layers/flatten_layer.t27","category":"specs/ml","name":"flatten_layer","module":"Flatten","lines":114,"bytes":5624,"description":"t27/specs/","health":"ok","tokens":378,"nodes":40,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2547,"rust":521,"verilog":3976,"verilog_hir":425,"zig":2540},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":3,"FnDecl":2,"TestBlock":4,"StmtExpr":19,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 1 constant. Carries 4 tests and 5 invariants. 114 lines compile to 378 tokens and 40 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/ml/layers/layernorm_layer.t27","category":"specs/ml","name":"layernorm_layer","module":"Layernorm","lines":36,"bytes":1927,"description":"t27/specs/","health":"ok","tokens":90,"nodes":11,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1360,"rust":368,"verilog":2228,"verilog_hir":436,"zig":633},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 36 lines compile to 90 tokens and 11 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/ml/layers/maxpool2d_layer.t27","category":"specs/ml","name":"maxpool2d_layer","module":"Maxpool2d","lines":74,"bytes":4252,"description":"t27/specs/","health":"ok","tokens":389,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1904,"rust":578,"verilog":3410,"verilog_hir":520,"zig":2172},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":2,"TestBlock":4,"StmtExpr":15},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 4 tests. 74 lines compile to 389 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/ml/layers/residual_connection.t27","category":"specs/ml","name":"residual_connection","module":"Residual","lines":27,"bytes":1408,"description":"t27/specs/","health":"ok","tokens":75,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1152,"rust":228,"verilog":1890,"verilog_hir":443,"zig":563},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 75 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/ml/loss/binary_crossentropy_loss.t27","category":"specs/ml","name":"binary_crossentropy_loss","module":"BinaryCe","lines":120,"bytes":5850,"description":"t27/specs/","health":"ok","tokens":346,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3150,"rust":813,"verilog":4697,"verilog_hir":532,"zig":2772},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":3,"EnumDecl":1,"EnumVariant":3,"FnDecl":4,"TestBlock":4,"StmtExpr":10,"InvariantBlock":6},"tags":["domain/ml","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 1 constant. Carries 4 tests and 6 invariants. 120 lines compile to 346 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/ml/loss/contrastive_loss.t27","category":"specs/ml","name":"contrastive_loss","module":"ContrastiveLoss","lines":35,"bytes":1858,"description":"t27/specs/","health":"ok","tokens":78,"nodes":10,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1329,"rust":320,"verilog":2183,"verilog_hir":425,"zig":590},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 35 lines compile to 78 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/ml/loss/cross_entropy_loss.t27","category":"specs/ml","name":"cross_entropy_loss","module":"CrossEntropy","lines":82,"bytes":4052,"description":"t27/specs/","health":"ok","tokens":223,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2651,"rust":847,"verilog":3709,"verilog_hir":531,"zig":1775},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":8,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":4},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 2 tests and 4 invariants. 82 lines compile to 223 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/ml/loss/huber_loss.t27","category":"specs/ml","name":"huber_loss","module":"HuberLoss","lines":35,"bytes":1823,"description":"t27/specs/","health":"ok","tokens":71,"nodes":10,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1262,"rust":290,"verilog":2123,"verilog_hir":383,"zig":541},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 35 lines compile to 71 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/ml/loss/kl_divergence.t27","category":"specs/ml","name":"kl_divergence","module":"KlDivergence","lines":27,"bytes":1319,"description":"t27/specs/","health":"ok","tokens":55,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1034,"rust":148,"verilog":1821,"verilog_hir":343,"zig":428},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 55 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/ml/loss/mse_loss.t27","category":"specs/ml","name":"mse_loss","module":"MseLoss","lines":35,"bytes":1788,"description":"t27/specs/","health":"ok","tokens":70,"nodes":10,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1241,"rust":290,"verilog":2093,"verilog_hir":349,"zig":520},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 35 lines compile to 70 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/ml/optimizer/adagrad.t27","category":"specs/ml","name":"adagrad","module":"Adagrad","lines":113,"bytes":5650,"description":"t27/specs/","health":"ok","tokens":300,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2892,"rust":685,"verilog":4905,"verilog_hir":479,"zig":2570},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":2,"ExprIdentifier":4,"FnDecl":2,"TestBlock":6,"StmtExpr":8,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 3 constants. Carries 6 tests and 6 invariants. 113 lines compile to 300 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.8 KB. Clean through every layer."},{"path":"specs/ml/optimizer/adam.t27","category":"specs/ml","name":"adam","module":"Adam","lines":47,"bytes":2422,"description":"t27/specs/","health":"ok","tokens":123,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1540,"rust":512,"verilog":2668,"verilog_hir":438,"zig":746},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":1,"ExprIdentifier":5,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 3 constants. Carries 1 test. 47 lines compile to 123 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/ml/optimizer/adamw.t27","category":"specs/ml","name":"adamw","module":"Adamw","lines":306,"bytes":12635,"description":"t27/specs/","health":"ok","tokens":1416,"nodes":127,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4803,"rust":419,"verilog":9828,"verilog_hir":439,"zig":6882},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":4,"FnDecl":1,"TestBlock":16,"StmtExpr":84,"InvariantBlock":9,"BenchBlock":7},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 16 tests, 9 invariants and 7 benches. 306 lines compile to 1,416 tokens and 127 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 9.6 KB. Clean through every layer."},{"path":"specs/ml/optimizer/lamb.t27","category":"specs/ml","name":"lamb","module":"Lamb","lines":134,"bytes":6076,"description":"t27/specs/","health":"ok","tokens":418,"nodes":56,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3376,"rust":997,"verilog":5463,"verilog_hir":588,"zig":3303},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":5,"ExprLiteral":5,"StructDecl":2,"ExprIdentifier":9,"FnDecl":3,"TestBlock":6,"StmtExpr":15,"InvariantBlock":8},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 5 constants. Carries 6 tests and 8 invariants. 134 lines compile to 418 tokens and 56 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"specs/ml/optimizer/lr_scheduler.t27","category":"specs/ml","name":"lr_scheduler","module":"Scheduler","lines":150,"bytes":7274,"description":"t27/specs/","health":"ok","tokens":643,"nodes":54,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3073,"rust":329,"verilog":5583,"verilog_hir":410,"zig":3576},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":7,"StmtExpr":30,"InvariantBlock":6,"BenchBlock":3},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 7 tests, 6 invariants and 3 benches. 150 lines compile to 643 tokens and 54 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/ml/optimizer/rmsprop.t27","category":"specs/ml","name":"rmsprop","module":"Rmsprop","lines":43,"bytes":2269,"description":"t27/specs/","health":"ok","tokens":87,"nodes":14,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1419,"rust":361,"verilog":2413,"verilog_hir":367,"zig":584},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 43 lines compile to 87 tokens and 14 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/ml/optimizer/sgd.t27","category":"specs/ml","name":"sgd","module":"Sgd","lines":104,"bytes":4735,"description":"t27/specs/","health":"ok","tokens":299,"nodes":40,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2595,"rust":664,"verilog":4100,"verilog_hir":466,"zig":2331},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":2,"TestBlock":4,"StmtExpr":14,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 4 tests and 5 invariants. 104 lines compile to 299 tokens and 40 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/ml/optimizer/sgd_momentum.t27","category":"specs/ml","name":"sgd_momentum","module":"SgdMomentum","lines":280,"bytes":13039,"description":"t27/specs/","health":"ok","tokens":1510,"nodes":113,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4752,"rust":410,"verilog":9393,"verilog_hir":459,"zig":7252},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":13,"StmtExpr":74,"InvariantBlock":9,"BenchBlock":7},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 13 tests, 9 invariants and 7 benches. 280 lines compile to 1,510 tokens and 113 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 9.2 KB. Clean through every layer."},{"path":"specs/ml/pathway/mlp.t27","category":"specs/ml","name":"mlp","module":"Mlp","lines":112,"bytes":5025,"description":"t27/specs/","health":"ok","tokens":287,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2782,"rust":725,"verilog":4171,"verilog_hir":431,"zig":2446},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":2,"ExprIdentifier":7,"FnDecl":2,"TestBlock":4,"StmtExpr":10,"InvariantBlock":7},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 3 constants. Carries 4 tests and 7 invariants. 112 lines compile to 287 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/ml/recurrent/attention_mechanism.t27","category":"specs/ml","name":"attention_mechanism","module":"Attention","lines":95,"bytes":5259,"description":"t27/specs/","health":"ok","tokens":288,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2808,"rust":864,"verilog":4479,"verilog_hir":683,"zig":2340},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":6,"FnDecl":2,"TestBlock":4,"StmtExpr":8,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 1 constant. Carries 4 tests and 3 invariants. 95 lines compile to 288 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/ml/recurrent/bilstm.t27","category":"specs/ml","name":"bilstm","module":"Bilstm","lines":134,"bytes":6356,"description":"t27/specs/","health":"ok","tokens":591,"nodes":62,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3095,"rust":1146,"verilog":5499,"verilog_hir":455,"zig":3342},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":4,"ExprIdentifier":17,"FnDecl":2,"TestBlock":6,"StmtExpr":21,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 4 structs and 2 constants. Carries 6 tests and 5 invariants. 134 lines compile to 591 tokens and 62 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"specs/ml/recurrent/gru_cell.t27","category":"specs/ml","name":"gru_cell","module":"Gru","lines":138,"bytes":6267,"description":"t27/specs/","health":"ok","tokens":731,"nodes":58,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3139,"rust":762,"verilog":4226,"verilog_hir":464,"zig":3867},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":9,"FnDecl":2,"TestBlock":4,"StmtExpr":26,"InvariantBlock":11},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 3 structs. Carries 4 tests and 11 invariants. 138 lines compile to 731 tokens and 58 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/ml/recurrent/lstm_cell.t27","category":"specs/ml","name":"lstm_cell","module":"Lstm","lines":142,"bytes":6603,"description":"t27/specs/","health":"ok","tokens":616,"nodes":48,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3510,"rust":881,"verilog":4755,"verilog_hir":474,"zig":3629},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":3,"ExprIdentifier":12,"FnDecl":2,"TestBlock":4,"StmtExpr":9,"InvariantBlock":13},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 3 structs and 1 constant. Carries 4 tests and 13 invariants. 142 lines compile to 616 tokens and 48 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/ml/recurrent/lstm_single.t27","category":"specs/ml","name":"lstm_single","module":"LstmCell","lines":127,"bytes":6220,"description":"t27/specs/","health":"ok","tokens":512,"nodes":57,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3167,"rust":1136,"verilog":5483,"verilog_hir":660,"zig":3201},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":3,"ExprIdentifier":16,"FnDecl":2,"TestBlock":6,"StmtExpr":22,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 3 structs and 1 constant. Carries 6 tests and 3 invariants. 127 lines compile to 512 tokens and 57 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"specs/ml/recurrent/rnn_cell.t27","category":"specs/ml","name":"rnn_cell","module":"RnnCell","lines":120,"bytes":5605,"description":"t27/specs/","health":"ok","tokens":341,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2931,"rust":893,"verilog":4759,"verilog_hir":572,"zig":2817},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":3,"ExprIdentifier":7,"FnDecl":3,"TestBlock":5,"StmtExpr":14,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 3 structs and 2 constants. Carries 5 tests and 5 invariants. 120 lines compile to 341 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/ml/recurrent/self_attention.t27","category":"specs/ml","name":"self_attention","module":"SelfAttention","lines":57,"bytes":2662,"description":"t27/specs/","health":"ok","tokens":151,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1783,"rust":790,"verilog":3100,"verilog_hir":416,"zig":884},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":3,"ExprIdentifier":11,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function, 3 structs and 1 constant. Carries 1 test. 57 lines compile to 151 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/ml/recurrent/seq2seq.t27","category":"specs/ml","name":"seq2seq","module":"Seq2seq","lines":121,"bytes":6457,"description":"t27/specs/","health":"ok","tokens":463,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2770,"rust":670,"verilog":4214,"verilog_hir":479,"zig":3471},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":2,"TestBlock":4,"StmtExpr":21,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 2 structs. Carries 4 tests and 6 invariants. 121 lines compile to 463 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/ml/rl/advantage_estimator.t27","category":"specs/ml","name":"advantage_estimator","module":"Advantage","lines":128,"bytes":6229,"description":"t27/specs/","health":"ok","tokens":494,"nodes":50,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3326,"rust":997,"verilog":5445,"verilog_hir":783,"zig":3390},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":8,"FnDecl":4,"TestBlock":6,"StmtExpr":17,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 2 structs and 2 constants. Carries 6 tests and 6 invariants. 128 lines compile to 494 tokens and 50 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"specs/ml/rl/dqn.t27","category":"specs/ml","name":"dqn","module":"Dqn","lines":119,"bytes":5990,"description":"t27/specs/","health":"ok","tokens":473,"nodes":54,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3023,"rust":1121,"verilog":5388,"verilog_hir":562,"zig":3064},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":2,"ExprIdentifier":15,"FnDecl":3,"TestBlock":6,"StmtExpr":16,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 3 constants. Carries 6 tests and 3 invariants. 119 lines compile to 473 tokens and 54 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"specs/ml/rl/dqn_target_network.t27","category":"specs/ml","name":"dqn_target_network","module":"DqnTarget","lines":112,"bytes":5334,"description":"t27/specs/","health":"ok","tokens":307,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3104,"rust":714,"verilog":4833,"verilog_hir":521,"zig":2620},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"EnumDecl":1,"EnumVariant":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":3,"TestBlock":5,"StmtExpr":13,"InvariantBlock":6},"tags":["domain/ml","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct, 1 enum and 2 constants. Carries 5 tests and 6 invariants. 112 lines compile to 307 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.7 KB. Clean through every layer."},{"path":"specs/ml/rl/ppo_actor.t27","category":"specs/ml","name":"ppo_actor","module":"PpoActor","lines":155,"bytes":7732,"description":"t27/specs/","health":"ok","tokens":527,"nodes":54,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4086,"rust":1306,"verilog":6536,"verilog_hir":696,"zig":4029},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":2,"ExprIdentifier":7,"EnumDecl":1,"EnumVariant":2,"FnDecl":5,"TestBlock":8,"StmtExpr":13,"InvariantBlock":7},"tags":["domain/ml","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions, 2 structs, 1 enum and 3 constants. Carries 8 tests and 7 invariants. 155 lines compile to 527 tokens and 54 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Clean through every layer."},{"path":"specs/ml/rl/ppo_clip_loss.t27","category":"specs/ml","name":"ppo_clip_loss","module":"PpoClipLoss","lines":141,"bytes":7501,"description":"t27/specs/","health":"ok","tokens":621,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3785,"rust":1261,"verilog":6445,"verilog_hir":1141,"zig":4157},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":9,"FnDecl":6,"TestBlock":7,"StmtExpr":13,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions, 2 structs and 2 constants. Carries 7 tests and 5 invariants. 141 lines compile to 621 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"specs/ml/rl/ppo_critic.t27","category":"specs/ml","name":"ppo_critic","module":"PpoCritic","lines":106,"bytes":5376,"description":"t27/specs/","health":"ok","tokens":388,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3093,"rust":855,"verilog":4217,"verilog_hir":719,"zig":2660},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":3,"EnumDecl":1,"EnumVariant":3,"FnDecl":4,"TestBlock":2,"StmtExpr":9,"InvariantBlock":6},"tags":["domain/ml","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 1 constant. Carries 2 tests and 6 invariants. 106 lines compile to 388 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/ml/rl/sac_actor.t27","category":"specs/ml","name":"sac_actor","module":"SacActor","lines":128,"bytes":6327,"description":"t27/specs/","health":"ok","tokens":435,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3300,"rust":1192,"verilog":5142,"verilog_hir":641,"zig":3099},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":3,"ExprIdentifier":10,"FnDecl":4,"TestBlock":4,"StmtExpr":10,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 3 structs and 3 constants. Carries 4 tests and 6 invariants. 128 lines compile to 435 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"specs/ml/rl/sac_critic.t27","category":"specs/ml","name":"sac_critic","module":"SacCritic","lines":164,"bytes":7664,"description":"t27/specs/","health":"ok","tokens":591,"nodes":74,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4134,"rust":1237,"verilog":7288,"verilog_hir":1022,"zig":4633},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":3,"ExprIdentifier":8,"FnDecl":4,"TestBlock":10,"StmtExpr":34,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 3 structs and 3 constants. Carries 10 tests and 6 invariants. 164 lines compile to 591 tokens and 74 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"specs/ml/transformer/encoder_block.t27","category":"specs/ml","name":"encoder_block","module":"EncoderBlock","lines":117,"bytes":5609,"description":"t27/specs/","health":"ok","tokens":348,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3182,"rust":1169,"verilog":5006,"verilog_hir":661,"zig":2760},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":4,"ExprLiteral":4,"StructDecl":4,"ExprIdentifier":9,"FnDecl":3,"TestBlock":4,"StmtExpr":8,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 4 structs and 4 constants. Carries 4 tests and 5 invariants. 117 lines compile to 348 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"specs/ml/transformer/feed_forward.t27","category":"specs/ml","name":"feed_forward","module":"FeedForward","lines":437,"bytes":20203,"description":"t27/specs/ml/transformer/feed_forward.t27","health":"ok","tokens":2120,"nodes":176,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7633,"rust":2606,"verilog":13909,"verilog_hir":1107,"zig":10269},"repo":"t27","kinds":{"Module":1,"UseDecl":5,"ConstDecl":7,"ExprLiteral":4,"ExprIdentifier":24,"StructDecl":4,"EnumDecl":1,"EnumVariant":4,"FnDecl":10,"TestBlock":15,"StmtExpr":82,"InvariantBlock":10,"BenchBlock":9},"tags":["domain/ml","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 10 functions, 4 structs, 1 enum and 7 constants. Carries 15 tests, 10 invariants and 9 benches. 437 lines compile to 2,120 tokens and 176 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 13.6 KB. Clean through every layer."},{"path":"specs/ml/transformer/feed_forward_network.t27","category":"specs/ml","name":"feed_forward_network","module":"FeedForward","lines":42,"bytes":2390,"description":"t27/specs/","health":"ok","tokens":109,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1562,"rust":415,"verilog":2445,"verilog_hir":489,"zig":695},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 42 lines compile to 109 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/ml/transformer/mha_block.t27","category":"specs/ml","name":"mha_block","module":"MHABlock","lines":383,"bytes":17868,"description":"t27/specs/ml/transformer/mha_block.t27","health":"ok","tokens":1636,"nodes":135,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6676,"rust":2274,"verilog":12594,"verilog_hir":949,"zig":8243},"repo":"t27","kinds":{"Module":1,"UseDecl":6,"ConstDecl":3,"ExprLiteral":2,"ExprIdentifier":22,"StructDecl":5,"FnDecl":9,"TestBlock":12,"StmtExpr":59,"InvariantBlock":8,"BenchBlock":8},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 9 functions, 5 structs and 3 constants. Carries 12 tests, 8 invariants and 8 benches. 383 lines compile to 1,636 tokens and 135 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/ml/transformer/multi_head_attention.t27","category":"specs/ml","name":"multi_head_attention","module":"MultiHeadAttn","lines":38,"bytes":1951,"description":"t27/specs/","health":"ok","tokens":96,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1396,"rust":387,"verilog":2292,"verilog_hir":443,"zig":650},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 38 lines compile to 96 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/ml/transformer/multi_head_attn.t27","category":"specs/ml","name":"multi_head_attn","module":"MultiHeadAttention","lines":464,"bytes":21855,"description":"t27/specs/ml/transformer/multi_head_attn.t27","health":"ok","tokens":2162,"nodes":171,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8143,"rust":3550,"verilog":14934,"verilog_hir":1407,"zig":10172},"repo":"t27","kinds":{"Module":1,"UseDecl":6,"ConstDecl":6,"ExprLiteral":3,"ExprIdentifier":43,"StructDecl":6,"FnDecl":14,"TestBlock":13,"StmtExpr":62,"InvariantBlock":8,"BenchBlock":9},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 6 structs and 6 constants. Carries 13 tests, 8 invariants and 9 benches. 464 lines compile to 2,162 tokens and 171 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"specs/ml/transformer/norm.t27","category":"specs/ml","name":"norm","module":"LayerNorm","lines":478,"bytes":23093,"description":"t27/specs/ml/transformer/norm.t27","health":"ok","tokens":2649,"nodes":194,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8202,"rust":2793,"verilog":14831,"verilog_hir":1174,"zig":11913},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":10,"ExprLiteral":8,"ExprIdentifier":28,"StructDecl":5,"FnDecl":11,"TestBlock":13,"StmtExpr":91,"InvariantBlock":12,"BenchBlock":11},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 11 functions, 5 structs and 10 constants. Carries 13 tests, 12 invariants and 11 benches. 478 lines compile to 2,649 tokens and 194 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 14.5 KB. Clean through every layer."},{"path":"specs/ml/transformer/positional_enc.t27","category":"specs/ml","name":"positional_enc","module":"PositionalEncoding","lines":379,"bytes":17042,"description":"t27/specs/ml/transformer/positional_enc.t27","health":"ok","tokens":1775,"nodes":141,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6838,"rust":2056,"verilog":11916,"verilog_hir":1161,"zig":8671},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":7,"ExprLiteral":4,"ExprIdentifier":15,"StructDecl":3,"FnDecl":10,"TestBlock":13,"StmtExpr":66,"InvariantBlock":11,"BenchBlock":7},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 3 structs and 7 constants. Carries 13 tests, 11 invariants and 7 benches. 379 lines compile to 1,775 tokens and 141 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Clean through every layer."},{"path":"specs/ml/transformer/positional_encoding.t27","category":"specs/ml","name":"positional_encoding","module":"PositionalEnc","lines":42,"bytes":2296,"description":"t27/specs/","health":"ok","tokens":81,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1481,"rust":355,"verilog":2381,"verilog_hir":393,"zig":605},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 42 lines compile to 81 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/neural/forward_pass.t27","category":"specs/neural","name":"forward_pass","module":"forward_pass","lines":1095,"bytes":32248,"description":"Forward Pass Demo - VSA-based Neural Network Implements transformer-style forward pass using Vector Symbolic Architecture with multi-head attention, residual connections, and autoregressive generation Author: Dmitrii Vasilev","health":"warn","tokens":6341,"nodes":431,"depth":15,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5600,"rust":2396,"verilog":8773,"verilog_hir":899,"zig":5519},"repo":"t27","kinds":{"Module":11,"UseDecl":3,"ConstDecl":11,"ExprLiteral":47,"StructDecl":1,"FnDecl":6,"StmtLocal":34,"ExprArrayLiteral":3,"StmtFor":7,"ExprBinary":19,"ExprIdentifier":164,"ExprFieldAccess":4,"StmtAssign":10,"ExprIndex":38,"StmtExpr":5,"ExprCall":32,"ExprUnary":32,"StmtIf":3,"StmtBreak":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 6 functions, 1 struct and 11 constants. 1095 lines compile to 6,341 tokens and 431 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 8.6 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/nn/attention.t27","category":"specs/nn","name":"attention","module":"SacredAttention","lines":634,"bytes":22599,"description":"t27/specs/nn/attention.t27 Sacred Attention Specification Multi-head attention with phi-RoPE and sacred scaling (d_k^(-phi^3))","health":"warn","tokens":3013,"nodes":857,"depth":14,"loss":0,"tcErrors":21,"failedBackends":[],"outBytes":{"c":13137,"rust":3111,"verilog":21220,"verilog_hir":1255,"zig":15220},"repo":"t27","kinds":{"Module":24,"UseDecl":3,"ConstDecl":17,"ExprLiteral":60,"ExprIdentifier":302,"StructDecl":2,"FnDecl":11,"StmtLocal":48,"StmtWhile":18,"ExprBinary":106,"ExprUnary":13,"ExprFieldAccess":37,"ExprCall":17,"StmtAssign":42,"ExprIndex":35,"ExprStructLit":1,"ExprArrayLiteral":5,"StmtExpr":74,"StmtIf":4,"StmtContinue":1,"TestBlock":15,"InvariantBlock":16,"BenchBlock":6},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 11 functions, 2 structs and 17 constants. Carries 15 tests, 16 invariants and 6 benches. 634 lines compile to 3,013 tokens and 857 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 20.7 KB. Compiles with 21 type errors."},{"path":"specs/nn/hslm.t27","category":"specs/nn","name":"hslm","module":"HSLM","lines":632,"bytes":21721,"description":"t27/specs/nn/hslm.t27 HSLM (Hierarchical Sacred Learning Model) Specification Ternary neural network with sacred constants and VSA attention","health":"warn","tokens":2715,"nodes":721,"depth":14,"loss":0,"tcErrors":23,"failedBackends":[],"outBytes":{"c":12776,"rust":4567,"verilog":22012,"verilog_hir":1699,"zig":14844},"repo":"t27","kinds":{"Module":24,"UseDecl":6,"ConstDecl":19,"ExprLiteral":61,"ExprIdentifier":217,"StructDecl":4,"FnDecl":16,"StmtLocal":27,"StmtWhile":15,"ExprBinary":57,"ExprIndex":27,"ExprArrayLiteral":4,"ExprUnary":8,"ExprFieldAccess":40,"ExprStructLit":1,"StmtExpr":84,"ExprCall":22,"StmtAssign":37,"StmtIf":5,"ExprReturn":2,"TestBlock":23,"InvariantBlock":16,"BenchBlock":6},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 16 functions, 4 structs and 19 constants. Carries 23 tests, 16 invariants and 6 benches. 632 lines compile to 2,715 tokens and 721 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 21.5 KB. Compiles with 23 type errors."},{"path":"specs/nn/phi_rope.t27","category":"specs/nn","name":"phi_rope","module":null,"lines":47,"bytes":1243,"description":"specs/nn/phi_rope.t27 φ-RoPE: Rotary Position Embedding using Golden Ratio θ_i = PHI^(-2i/d) instead of standard 10000^(-2i/d)","health":"warn","tokens":249,"nodes":5,"depth":5,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":607,"rust":66,"verilog":1502,"verilog_hir":243,"zig":238},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/ml","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 47 lines compile to 249 tokens and 5 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/nn/sacred_attention.t27","category":"specs/nn","name":"sacred_attention","module":null,"lines":50,"bytes":1242,"description":"specs/nn/sacred_attention.t27 Sacred Attention: Multi-head attention with φ-based scaling scale = head_dim^(-PHI^3) instead of standard 1/sqrt(head_dim)","health":"warn","tokens":207,"nodes":5,"depth":5,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":615,"rust":66,"verilog":1534,"verilog_hir":243,"zig":246},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/ml","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 50 lines compile to 207 tokens and 5 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/numeric/bigint.t27","category":"specs/numeric","name":"bigint","module":"BigInt","lines":391,"bytes":14358,"description":"Module: Balanced Ternary BigInt","health":"ok","tokens":1096,"nodes":122,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6528,"rust":1377,"verilog":13322,"verilog_hir":864,"zig":7243},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":6,"ExprLiteral":6,"StructDecl":1,"ExprIdentifier":2,"FnDecl":14,"TestBlock":16,"StmtExpr":55,"InvariantBlock":10,"BenchBlock":9},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 1 struct and 6 constants. Carries 16 tests, 10 invariants and 9 benches. 391 lines compile to 1,096 tokens and 122 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 13.0 KB. Clean through every layer."},{"path":"specs/numeric/formats.t27","category":"specs/numeric","name":"formats","module":"Formats","lines":400,"bytes":13628,"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","health":"ok","tokens":1297,"nodes":153,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5040,"rust":839,"verilog":11117,"verilog_hir":698,"zig":6531},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":8,"ExprLiteral":8,"FnDecl":6,"EnumDecl":1,"EnumVariant":5,"TestBlock":26,"StmtExpr":86,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 6 functions, 1 enum and 8 constants. Carries 26 tests, 6 invariants and 4 benches. 400 lines compile to 1,297 tokens and 153 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 10.9 KB. Clean through every layer."},{"path":"specs/numeric/gf12.t27","category":"specs/numeric","name":"gf12","module":"GF12","lines":482,"bytes":13953,"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 -- 12-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 4 (P1)","health":"warn","tokens":1979,"nodes":647,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9881,"rust":4274,"verilog":19274,"verilog_hir":1059,"zig":11436},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":27,"StmtExpr":64,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 27 tests, 14 invariants and 6 benches. 482 lines compile to 1,979 tokens and 647 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.8 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf16.t27","category":"specs/numeric","name":"gf16","module":"triformat-gf16","lines":3392,"bytes":100829,"description":"gf16.t27 -- GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","health":"ok","tokens":16123,"nodes":6614,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":87350,"rust":19630,"verilog":164571,"verilog_hir":2914,"zig":83405},"repo":"t27","kinds":{"Module":173,"ConstDecl":20,"ExprLiteral":978,"ExprIdentifier":1383,"FnDecl":53,"StmtLocal":724,"ExprBinary":274,"ExprReturn":160,"ExprIf":18,"ExprUnary":408,"ExprCall":1449,"StmtIf":118,"StmtAssign":59,"StmtFor":47,"TestBlock":191,"StmtExpr":411,"ExprIndex":3,"InvariantBlock":98,"ExprFieldAccess":1,"ExprArrayLiteral":1,"BenchBlock":45},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 53 functions and 20 constants. Carries 191 tests, 98 invariants and 45 benches. 3392 lines compile to 16,123 tokens and 6,614 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 160.7 KB. Clean through every layer."},{"path":"specs/numeric/gf20.t27","category":"specs/numeric","name":"gf20","module":"GF20","lines":469,"bytes":13578,"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 -- 20-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 6 (P1)","health":"warn","tokens":1927,"nodes":639,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9537,"rust":4297,"verilog":18742,"verilog_hir":1062,"zig":10908},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,927 tokens and 639 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf24.t27","category":"specs/numeric","name":"gf24","module":"GF24","lines":469,"bytes":13626,"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 -- 24-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 7 (P1)","health":"warn","tokens":1933,"nodes":640,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9579,"rust":4328,"verilog":18783,"verilog_hir":1074,"zig":10948},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":40,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,933 tokens and 640 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf32.t27","category":"specs/numeric","name":"gf32","module":"GF32","lines":480,"bytes":14168,"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 -- 32-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 8 (P1)","health":"warn","tokens":1934,"nodes":641,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9779,"rust":4324,"verilog":18871,"verilog_hir":1074,"zig":11206},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":95,"StructDecl":1,"ExprIdentifier":136,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 14 invariants and 6 benches. 480 lines compile to 1,934 tokens and 641 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.4 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf4.t27","category":"specs/numeric","name":"gf4","module":"GF4","lines":306,"bytes":9145,"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 -- 4-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 2 (P1)","health":"ok","tokens":1017,"nodes":265,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5819,"rust":1237,"verilog":10517,"verilog_hir":532,"zig":7261},"repo":"t27","kinds":{"Module":13,"UseDecl":2,"ConstDecl":7,"ExprLiteral":33,"StructDecl":1,"ExprIdentifier":29,"FnDecl":6,"StmtIf":8,"ExprBinary":22,"ExprReturn":14,"ExprStructLit":7,"ExprFieldAccess":19,"StmtLocal":8,"ExprCall":2,"ExprUnary":2,"ExprIf":1,"TestBlock":18,"StmtExpr":58,"InvariantBlock":13,"BenchBlock":2},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 7 constants. Carries 18 tests, 13 invariants and 2 benches. 306 lines compile to 1,017 tokens and 265 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"specs/numeric/gf8.t27","category":"specs/numeric","name":"gf8","module":"GF8","lines":522,"bytes":15315,"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 -- 8-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 3 (P1)","health":"warn","tokens":2153,"nodes":661,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":10178,"rust":4222,"verilog":20381,"verilog_hir":1057,"zig":12139},"repo":"t27","kinds":{"Module":21,"UseDecl":4,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":36,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"TestBlock":29,"StmtExpr":74,"StmtWhile":3,"StmtAssign":10,"InvariantBlock":15,"BenchBlock":8},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 29 tests, 15 invariants and 8 benches. 522 lines compile to 2,153 tokens and 661 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf_competitive.t27","category":"specs/numeric","name":"gf_competitive","module":"GFCompetitive","lines":108,"bytes":3355,"description":"t27/specs/numeric/gf_competitive.t27 GF Competitive Analysis Specification Ring 028 — Proving GoldenFloat is not random 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":468,"nodes":206,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3940,"rust":1334,"verilog":7298,"verilog_hir":809,"zig":2606},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":4,"ExprLiteral":29,"FnDecl":5,"StmtIf":8,"ExprBinary":25,"ExprIdentifier":59,"ExprReturn":8,"StmtLocal":21,"StmtAssign":5,"ExprUnary":10,"TestBlock":5,"ExprCall":7,"StmtExpr":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 4 constants. Carries 5 tests, 2 invariants and 1 bench. 108 lines compile to 468 tokens and 206 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"specs/numeric/goldenfloat_family.t27","category":"specs/numeric","name":"goldenfloat_family","module":"GoldenFloatFamily","lines":411,"bytes":14364,"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family -- phi-structured floating point formats NUMERIC-STANDARD-001 -- Agent 1 (P0)","health":"warn","tokens":1631,"nodes":353,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":9923,"rust":3786,"verilog":18847,"verilog_hir":686,"zig":11696},"repo":"t27","kinds":{"Module":12,"UseDecl":2,"StructDecl":2,"ExprIdentifier":78,"ConstDecl":2,"FnDecl":7,"StmtFor":4,"StmtIf":7,"ExprBinary":32,"ExprFieldAccess":30,"ExprReturn":9,"ExprIndex":3,"ExprLiteral":36,"StmtLocal":15,"ExprArrayLiteral":1,"StmtAssign":9,"ExprStructLit":1,"ExprCall":6,"ExprUnary":2,"TestBlock":25,"StmtExpr":54,"InvariantBlock":11,"BenchBlock":5},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 7 functions, 2 structs and 2 constants. Carries 25 tests, 11 invariants and 5 benches. 411 lines compile to 1,631 tokens and 353 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.4 KB. Compiles with 2 type errors."},{"path":"specs/numeric/pellis_verify.t27","category":"specs/numeric","name":"pellis_verify","module":"PellisVerify","lines":65,"bytes":2169,"description":"t27/specs/numeric/pellis_verify.t27 Pellis Verification Specification Phase 2 of GF Competitive Analysis (issue #289) GMP-backed high-precision verification of Pellis closed form 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":259,"nodes":109,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2881,"rust":616,"verilog":5233,"verilog_hir":477,"zig":1693},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":3,"ExprLiteral":22,"FnDecl":2,"ExprReturn":3,"ExprBinary":15,"ExprIdentifier":27,"StmtIf":2,"StmtLocal":14,"StmtAssign":1,"ExprUnary":3,"TestBlock":2,"ExprCall":4,"StmtExpr":4,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 3 constants. Carries 2 tests, 2 invariants and 1 bench. 65 lines compile to 259 tokens and 109 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/numeric/phi_ratio.t27","category":"specs/numeric","name":"phi_ratio","module":"PhiRatio","lines":653,"bytes":24250,"description":"t27/specs/numeric/phi_ratio.t27 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 2 Agent 9 (P0)","health":"ok","tokens":2437,"nodes":589,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11804,"rust":4273,"verilog":21661,"verilog_hir":1108,"zig":16124},"repo":"t27","kinds":{"Module":22,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":128,"StructDecl":2,"FnDecl":14,"StmtLocal":33,"ExprBinary":69,"ExprLiteral":54,"ExprFieldAccess":28,"ExprCall":12,"ExprReturn":28,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":19,"ExprUnary":7,"StmtAssign":7,"StmtWhile":1,"TestBlock":35,"StmtExpr":95,"InvariantBlock":26,"BenchBlock":3},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 2 structs and 2 constants. Carries 35 tests, 26 invariants and 3 benches. 653 lines compile to 2,437 tokens and 589 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 21.2 KB. Clean through every layer."},{"path":"specs/numeric/requant_boundary.t27","category":"specs/numeric","name":"requant_boundary","module":"RequantBoundary","lines":217,"bytes":9731,"description":"t27/specs/numeric/requant_boundary.t27 Activation requantizer: the threshold boundary convention. Recorded because Wave 669 had to settle a semantic question with no specification to appeal to. Two independently written implementations of the same rule -- the emitted `activation_requant` RTL and the end-to-end testbench reference in sim/tb_data_check.v -- agreed everywhere except at","health":"ok","tokens":516,"nodes":114,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2889,"rust":1116,"verilog":6484,"verilog_hir":429,"zig":3669},"repo":"t27","kinds":{"Module":4,"ConstDecl":17,"ExprLiteral":19,"FnDecl":2,"StmtIf":3,"ExprBinary":4,"ExprIdentifier":11,"ExprReturn":5,"ExprUnary":1,"ExprCall":1,"TestBlock":12,"StmtExpr":35},"tags":["domain/numeric","has/functions","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 2 functions and 17 constants. Carries 12 tests. 217 lines compile to 516 tokens and 114 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"specs/numeric/tf3.t27","category":"specs/numeric","name":"tf3","module":"triformat-tf3","lines":1662,"bytes":47300,"description":"tf3.t27 -- TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","health":"warn","tokens":7841,"nodes":3092,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":41680,"rust":9224,"verilog":88731,"verilog_hir":1921,"zig":39192},"repo":"t27","kinds":{"Module":66,"ConstDecl":16,"ExprLiteral":494,"ExprIdentifier":639,"FnDecl":32,"ExprReturn":62,"ExprCall":637,"ExprBinary":170,"StmtLocal":323,"StmtIf":30,"ExprIf":16,"ExprUnary":178,"StmtWhile":2,"StmtAssign":34,"TestBlock":93,"StmtExpr":192,"ExprFieldAccess":1,"InvariantBlock":46,"BenchBlock":30,"StmtFor":30,"ExprIndex":1},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 32 functions and 16 constants. Carries 93 tests, 46 invariants and 30 benches. 1662 lines compile to 7,841 tokens and 3,092 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 86.7 KB. Compiles with 2 type errors."},{"path":"specs/numeric/trinity_numeric_surface.t27","category":"specs/numeric","name":"trinity_numeric_surface","module":"trinity-numeric-surface","lines":38,"bytes":1703,"description":"trinity_numeric_surface.t27 -- Public numeric interchange policy (GoldenFloat-first) NUMERIC-STANDARD-001 -- integer-backed GF raw words are the portable surface","health":"ok","tokens":100,"nodes":27,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1079,"rust":390,"verilog":2065,"verilog_hir":275,"zig":590},"repo":"t27","kinds":{"Module":1,"ConstDecl":9,"ExprLiteral":10,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":2,"ExprIdentifier":2},"tags":["domain/numeric","has/constants-only","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 9 constants. Carries 1 test. 38 lines compile to 100 tokens and 27 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/physics/chimera_best_gamma.t27","category":"specs/physics","name":"chimera_best_gamma","module":"chimera","lines":20,"bytes":468,"description":"t27/specs/physics/chimera_best_gamma.t27 Best gamma formula from PDG 2024 P35_new (Delta = 0.140%)","health":"ok","tokens":51,"nodes":11,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":936,"rust":158,"verilog":1580,"verilog_hir":281,"zig":331},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprIdentifier":3,"FnDecl":1,"StmtExpr":1,"ExprBinary":1,"ExprCall":1},"tags":["domain/physics","has/functions","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. 20 lines compile to 51 tokens and 11 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/physics/e8_lqg_bridge.t27","category":"specs/physics","name":"e8_lqg_bridge","module":null,"lines":113,"bytes":2853,"description":null,"health":"warn","tokens":717,"nodes":63,"depth":7,"loss":27,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1061,"rust":66,"verilog":2520,"verilog_hir":243,"zig":683},"repo":"t27","kinds":{"Module":1,"TestBlock":3,"StmtLocal":5,"ExprCall":10,"StmtExpr":5,"ExprBinary":5,"ExprFieldAccess":8,"ExprIdentifier":4,"ExprLiteral":18,"ExprStructLit":1,"ExprUnary":2,"ExprArrayLiteral":1},"tags":["domain/physics","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 3 tests. 113 lines compile to 717 tokens and 63 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 27 items dropped by error recovery."},{"path":"specs/physics/formula_discovery.t27","category":"specs/physics","name":"formula_discovery","module":"FormulaDiscovery","lines":158,"bytes":4536,"description":"Formula Discovery v1.0 — ULTRA ENGINE Specification","health":"ok","tokens":973,"nodes":183,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4326,"rust":2204,"verilog":6528,"verilog_hir":835,"zig":3491},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":22,"ExprLiteral":22,"ExprIdentifier":46,"FnDecl":10,"ExprReturn":11,"ExprBinary":24,"StmtIf":2,"ExprCall":11,"StmtLocal":5,"TestBlock":4,"StmtExpr":18,"InvariantBlock":4},"tags":["domain/physics","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 22 constants. Carries 4 tests and 4 invariants. 158 lines compile to 973 tokens and 183 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Clean through every layer."},{"path":"specs/physics/formula_registry.t27","category":"specs/physics","name":"formula_registry","module":null,"lines":213,"bytes":6261,"description":"Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md SSOT for Trinity formula discovery","health":"ok","tokens":830,"nodes":368,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4489,"rust":2960,"verilog":8502,"verilog_hir":1685,"zig":2855},"repo":"t27","kinds":{"Module":1,"ConstDecl":4,"ExprLiteral":84,"ExprIdentifier":69,"FnDecl":32,"ExprReturn":32,"ExprCall":48,"ExprUnary":23,"ExprBinary":72,"StmtLocal":1,"TestBlock":1,"StmtExpr":1},"tags":["domain/physics","has/functions","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 32 functions and 4 constants. Carries 1 test. 213 lines compile to 830 tokens and 368 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Clean through every layer."},{"path":"specs/physics/gamma-conflict.t27","category":"specs/physics","name":"gamma-conflict","module":null,"lines":256,"bytes":6580,"description":null,"health":"warn","tokens":1429,"nodes":5,"depth":5,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":613,"rust":66,"verilog":1526,"verilog_hir":243,"zig":244},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/physics","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 256 lines compile to 1,429 tokens and 5 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Compiles with 65 items dropped by error recovery."},{"path":"specs/physics/gamma_conjecture.t27","category":"specs/physics","name":"gamma_conjecture","module":"GammaConjecture","lines":277,"bytes":11590,"description":"t27/specs/physics/gamma_conjecture.t27 Strand I -- Loop Quantum Gravity Conjecture GI1: Barbero-Immirzi Parameter from Golden Section","health":"ok","tokens":1018,"nodes":196,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6527,"rust":2239,"verilog":12477,"verilog_hir":775,"zig":7529},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprIdentifier":52,"ExprLiteral":5,"FnDecl":6,"StmtLocal":9,"ExprBinary":17,"ExprReturn":6,"ExprCall":5,"StructDecl":1,"ExprStructLit":1,"ExprFieldAccess":9,"TestBlock":16,"StmtExpr":49,"InvariantBlock":9,"BenchBlock":4},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 5 constants. Carries 16 tests, 9 invariants and 4 benches. 277 lines compile to 1,018 tokens and 196 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/physics/gi1_analysis.t27","category":"specs/physics","name":"gi1_analysis","module":"GI1Analysis","lines":238,"bytes":9763,"description":"t27/specs/physics/gi1_analysis.t27 GI1 Pre-Registration Analysis: γ_φ vs γ₁ comparison Three hypotheses tested against empirical data","health":"ok","tokens":741,"nodes":179,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6450,"rust":2499,"verilog":12296,"verilog_hir":598,"zig":6659},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":6,"ExprLiteral":12,"ExprIdentifier":41,"FnDecl":6,"ExprReturn":6,"ExprBinary":14,"StmtLocal":10,"StructDecl":1,"ExprCall":8,"ExprStructLit":1,"ExprFieldAccess":12,"TestBlock":13,"StmtExpr":34,"InvariantBlock":7,"BenchBlock":6},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 6 constants. Carries 13 tests, 7 invariants and 6 benches. 238 lines compile to 741 tokens and 179 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Clean through every layer."},{"path":"specs/physics/hslm_benchmark.t27","category":"specs/physics","name":"hslm_benchmark","module":null,"lines":90,"bytes":2287,"description":null,"health":"warn","tokens":439,"nodes":18,"depth":6,"loss":23,"tcErrors":0,"failedBackends":[],"outBytes":{"c":789,"rust":66,"verilog":1921,"verilog_hir":243,"zig":381},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":3,"ExprCall":3,"ExprBinary":3,"ExprIdentifier":3,"ExprLiteral":3},"tags":["domain/physics","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests. 90 lines compile to 439 tokens and 18 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Compiles with 23 items dropped by error recovery."},{"path":"specs/physics/lqg_cs_bridge.t27","category":"specs/physics","name":"lqg_cs_bridge","module":null,"lines":141,"bytes":4725,"description":null,"health":"warn","tokens":823,"nodes":7,"depth":3,"loss":15,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1076,"rust":66,"verilog":2051,"verilog_hir":243,"zig":611},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":2,"InvariantBlock":2},"tags":["domain/physics","has/invariants","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests and 2 invariants. 141 lines compile to 823 tokens and 7 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Compiles with 15 items dropped by error recovery."},{"path":"specs/physics/lqg_entropy.t27","category":"specs/physics","name":"lqg_entropy","module":null,"lines":67,"bytes":2841,"description":"t27/specs/physics/lqg_entropy.t27 KEPLER->NEWTON Direction B: LQG -> gamma (PRIORITY 3 - HONEST INQUIRY) Status: Final v2.2 Date: 2026-04-05 HONEST ASSESSMENT: gamma = phi^-^3 does NOT come from CS theory. This spec documents research needed to find:","health":"ok","tokens":16,"nodes":7,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1068,"rust":66,"verilog":2054,"verilog_hir":243,"zig":603},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":2,"InvariantBlock":2},"tags":["domain/physics","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests and 2 invariants. 67 lines compile to 16 tokens and 7 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/physics/p2_brain_physics.t27","category":"specs/physics","name":"p2_brain_physics","module":"P2Brain","lines":165,"bytes":6932,"description":"Module: P2 Brain -- Physics Engine Framework","health":"ok","tokens":600,"nodes":59,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4055,"rust":1293,"verilog":6443,"verilog_hir":540,"zig":3285},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":8,"ExprIdentifier":13,"ExprLiteral":2,"StructDecl":2,"FnDecl":3,"EnumDecl":1,"EnumVariant":5,"TestBlock":3,"StmtExpr":9,"BenchBlock":3,"InvariantBlock":6},"tags":["domain/physics","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 3 functions, 2 structs, 1 enum and 8 constants. Carries 3 tests, 6 invariants and 3 benches. 165 lines compile to 600 tokens and 59 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"specs/physics/pellis-formulas.t27","category":"specs/physics","name":"pellis-formulas","module":"PellisFormulas","lines":67,"bytes":2116,"description":"t27/specs/physics/pellis-formulas.t27 Trinity x Pellis hybrid -- thin-structure formulas anchored on L5 (issue #277). SSOT: invariants tie Pell ladders to phi; observables are references for tri math compare.","health":"ok","tokens":233,"nodes":51,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2513,"rust":724,"verilog":4518,"verilog_hir":362,"zig":1727},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":12,"ExprIdentifier":9,"ExprLiteral":7,"FnDecl":2,"ExprReturn":2,"ExprCall":2,"ExprBinary":2,"TestBlock":4,"StmtExpr":5,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 12 constants. Carries 4 tests, 2 invariants and 1 bench. 67 lines compile to 233 tokens and 51 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/physics/quantum.t27","category":"specs/physics","name":"quantum","module":null,"lines":72,"bytes":1715,"description":null,"health":"warn","tokens":268,"nodes":28,"depth":7,"loss":19,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1222,"rust":66,"verilog":3063,"verilog_hir":243,"zig":579},"repo":"t27","kinds":{"Module":1,"BenchBlock":1,"TestBlock":5,"StmtExpr":4,"ExprCall":4,"ExprBinary":4,"ExprIdentifier":4,"ExprLiteral":4,"ExprUnary":1},"tags":["domain/physics","has/benches","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 5 tests and 1 bench. 72 lines compile to 268 tokens and 28 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Compiles with 19 items dropped by error recovery."},{"path":"specs/physics/sacred_verification.t27","category":"specs/physics","name":"sacred_verification","module":"SacredVerification","lines":605,"bytes":24309,"description":"t27/specs/physics/sacred_verification.t27 KEPLER->NEWTON Sacred Formula Verification Spec Status: Final v1.0 Date: 2026-04-06 This spec defines the verification framework for [planned] 152 Sacred Formula equations (N implemented today). It provides a structured approach to testing which","health":"ok","tokens":2193,"nodes":103,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3293,"rust":1689,"verilog":5837,"verilog_hir":637,"zig":7227},"repo":"t27","kinds":{"Module":4,"UseDecl":2,"EnumDecl":2,"EnumVariant":9,"StructDecl":2,"ExprIdentifier":33,"FnDecl":6,"ExprReturn":5,"ExprArrayLiteral":5,"ConstDecl":4,"ExprLiteral":7,"StmtLocal":6,"ExprBinary":7,"ExprFieldAccess":4,"ExprIf":1,"ExprUnary":1,"StmtIf":2,"ExprCall":1,"StmtAssign":2},"tags":["domain/physics","has/enums","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 6 functions, 2 structs, 2 enums and 4 constants. 605 lines compile to 2,193 tokens and 103 AST nodes, depth 9. Emits 5 of 5 backends; largest is Zig at 7.1 KB. Clean through every layer."},{"path":"specs/physics/su2_chern_simons.t27","category":"specs/physics","name":"su2_chern_simons","module":"SU2ChernSimons","lines":349,"bytes":12227,"description":"t27/specs/physics/su2_chern_simons.t27 SU(2)_k Chern-Simons Theory -- Topological QFT Foundation Direction F (Priority 1) of PROJECT KEPLER->NEWTON This module formalizes the PROVEN THEOREM: golden ratio phi emerges from SU(2) Chern-Simons theory at level k=3 as quantum dimension of Fibonacci anyons. This is NOT numerology -- it is a mathematical","health":"ok","tokens":1285,"nodes":394,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6939,"rust":2857,"verilog":14220,"verilog_hir":1037,"zig":7699},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"ConstDecl":3,"ExprLiteral":48,"ExprIdentifier":98,"StructDecl":1,"FnDecl":13,"ExprReturn":16,"ExprStructLit":1,"ExprFieldAccess":10,"ExprArrayLiteral":1,"StmtLocal":24,"ExprBinary":66,"StmtIf":3,"StmtWhile":4,"StmtAssign":13,"ExprCall":9,"ExprUnary":3,"TestBlock":18,"StmtExpr":43,"InvariantBlock":8,"BenchBlock":3},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 1 struct and 3 constants. Carries 18 tests, 8 invariants and 3 benches. 349 lines compile to 1,285 tokens and 394 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.9 KB. Clean through every layer."},{"path":"specs/physics/zamolodchikov_4d_conjecture.t27","category":"specs/physics","name":"zamolodchikov_4d_conjecture","module":"Zamolodchikov4DConjecture","lines":254,"bytes":10731,"description":"t27/specs/physics/zamolodchikov_4d_conjecture.t27 4D Zamolodchikov Conjecture -- The Breakthrough Hypothesis Direction E of PROJECT KEPLER->NEWTON HYPOTHESIS: A 4D quantum field theory with E8 integrable structure fixes the fundamental constants of the Standard Model through the same algebraic mechanism that fixes the 8 Zamolodchikov masses in 2D.","health":"ok","tokens":401,"nodes":66,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2974,"rust":1216,"verilog":5384,"verilog_hir":420,"zig":2806},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"StructDecl":3,"ExprIdentifier":12,"FnDecl":3,"ExprReturn":3,"ExprStructLit":2,"ExprFieldAccess":8,"ExprLiteral":9,"ExprCall":1,"ExprBinary":2,"ExprArrayLiteral":1,"TestBlock":4,"StmtExpr":10,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 3 functions and 3 structs. Carries 4 tests, 2 invariants and 1 bench. 254 lines compile to 401 tokens and 66 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"specs/pins/emitter_xdc.t27","category":"specs/pins","name":"emitter_xdc","module":"EmitterXDC","lines":295,"bytes":9345,"description":"t27/specs/pins/emitter_xdc.t27 XDC Constraint Emitter from Pins IR Generates nextpnr-compatible XDC from Design/Binding/ClockDef Output format matches t27c fpga-build --minimal exactly","health":"warn","tokens":1591,"nodes":546,"depth":12,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":8597,"rust":4893,"verilog":14695,"verilog_hir":3460,"zig":8775},"repo":"t27","kinds":{"Module":10,"UseDecl":2,"ConstDecl":1,"ExprLiteral":108,"StructDecl":2,"ExprIdentifier":150,"FnDecl":11,"ExprReturn":12,"ExprStructLit":3,"ExprFieldAccess":31,"ExprArrayLiteral":1,"StmtLocal":15,"StmtIf":7,"ExprBinary":29,"StmtAssign":51,"ExprIndex":7,"ExprCall":29,"StmtWhile":2,"ExprUnary":4,"TestBlock":18,"StmtExpr":45,"InvariantBlock":6,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 11 functions, 2 structs and 1 constant. Carries 18 tests, 6 invariants and 2 benches. 295 lines compile to 1,591 tokens and 546 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 3 type errors."},{"path":"specs/pins/ir.t27","category":"specs/pins","name":"ir","module":"PinsIR","lines":391,"bytes":11981,"description":"t27/specs/pins/ir.t27 Pins Intermediate Representation (IR) Models FPGA pin assignments, I/O standards, clock constraints","health":"warn","tokens":2166,"nodes":503,"depth":17,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":8889,"rust":5188,"verilog":15838,"verilog_hir":1465,"zig":10857},"repo":"t27","kinds":{"Module":18,"UseDecl":2,"StructDecl":6,"ExprIdentifier":121,"ConstDecl":1,"FnDecl":18,"ExprReturn":23,"ExprStructLit":7,"ExprFieldAccess":86,"ExprLiteral":39,"ExprUnary":3,"ExprArrayLiteral":2,"StmtLocal":8,"StmtIf":11,"ExprBinary":26,"StmtAssign":10,"ExprIndex":13,"StmtWhile":6,"ExprCall":1,"TestBlock":19,"StmtExpr":76,"InvariantBlock":5,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 18 functions, 6 structs and 1 constant. Carries 19 tests, 5 invariants and 2 benches. 391 lines compile to 2,166 tokens and 503 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Compiles with 6 type errors."},{"path":"specs/pins/parser.t27","category":"specs/pins","name":"parser","module":"PinsParser","lines":583,"bytes":17861,"description":"t27/specs/pins/parser.t27 Pins Parser for Trinity t27 Parse .t27 pin specifications into Pins IR","health":"warn","tokens":2695,"nodes":36,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1240,"rust":663,"verilog":2349,"verilog_hir":249,"zig":665},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"EnumDecl":2,"EnumVariant":30},"tags":["domain/fpga","has/enums","has/imports","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 2 enums. 583 lines compile to 2,695 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/pipeline/benchmarks.t27","category":"specs/pipeline","name":"benchmarks","module":"PipelineBenchmarks","lines":86,"bytes":2598,"description":"t27/specs/pipeline/benchmarks.t27 Pipeline Performance Benchmark Specification Ring 028 — tri bench run performance targets 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":333,"nodes":144,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3315,"rust":904,"verilog":5548,"verilog_hir":706,"zig":1856},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":7,"ExprLiteral":35,"FnDecl":5,"ExprReturn":7,"ExprBinary":17,"ExprIdentifier":24,"StmtIf":2,"ExprIndex":2,"TestBlock":4,"StmtExpr":11,"ExprUnary":6,"ExprCall":14,"StmtLocal":2,"ExprArrayLiteral":1,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/pipeline","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 7 constants. Carries 4 tests, 2 invariants and 1 bench. 86 lines compile to 333 tokens and 144 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"specs/pipeline/e2e_test.t27","category":"specs/pipeline","name":"e2e_test","module":"PipelineE2E","lines":151,"bytes":5240,"description":"t27/specs/pipeline/e2e_test.t27 Pipeline E2E Test Specification Ring 028 — tri pipeline end-to-end testing 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":876,"nodes":454,"depth":22,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":5838,"rust":3968,"verilog":8941,"verilog_hir":662,"zig":5155},"repo":"t27","kinds":{"Module":35,"UseDecl":1,"ConstDecl":11,"ExprLiteral":45,"FnDecl":4,"StmtLocal":20,"ExprIdentifier":156,"StmtWhile":2,"ExprBinary":64,"StmtAssign":26,"ExprIndex":14,"ExprFieldAccess":6,"StmtIf":18,"ExprReturn":6,"TestBlock":4,"ExprCall":12,"ExprUnary":13,"StmtExpr":13,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/pipeline","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 4 tests, 3 invariants and 1 bench. 151 lines compile to 876 tokens and 454 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 8.7 KB. Compiles with 2 type errors."},{"path":"specs/pipeline/experience_save.t27","category":"specs/pipeline","name":"experience_save","module":"ExperienceSave","lines":127,"bytes":3752,"description":"t27/specs/pipeline/experience_save.t27 Experience Save Command Specification Ring 028 — tri experience save CLI command 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":553,"nodes":275,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4453,"rust":1261,"verilog":7552,"verilog_hir":837,"zig":2928},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":5,"ExprLiteral":39,"StructDecl":1,"ExprIdentifier":76,"FnDecl":5,"StmtIf":3,"ExprBinary":13,"ExprReturn":8,"StmtAssign":30,"ExprFieldAccess":36,"ExprUnary":14,"TestBlock":4,"StmtLocal":5,"StmtExpr":11,"ExprCall":17,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/pipeline","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions, 1 struct and 5 constants. Carries 4 tests, 2 invariants and 1 bench. 127 lines compile to 553 tokens and 275 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/portable/relay_observer.t27","category":"specs/portable","name":"relay_observer","module":"portable","lines":651,"bytes":21457,"description":"relay_observer.t27 0 WebSocket Relay Observer for BrowserOS A2A Integration Ring 32 — Cloud Orchestration 12 + 1/34 = 3 | TRINITY","health":"warn","tokens":3639,"nodes":521,"depth":8,"loss":1,"tcErrors":2,"failedBackends":[],"outBytes":{"c":9245,"rust":4949,"verilog":14917,"verilog_hir":1800,"zig":7400},"repo":"t27","kinds":{"Module":14,"UseDecl":2,"ConstDecl":13,"ExprLiteral":40,"EnumDecl":2,"EnumVariant":7,"StructDecl":2,"ExprIdentifier":116,"FnDecl":20,"ExprReturn":25,"ExprEnumValue":26,"ExprBinary":30,"ExprIf":2,"ExprSwitch":1,"StmtIf":8,"ExprFieldAccess":32,"StmtLocal":23,"ExprCall":68,"ExprIndex":6,"StmtAssign":7,"ExprStructLit":3,"ExprArrayLiteral":13,"StmtFor":4,"StmtExpr":23,"ExprUnary":22,"StmtWhile":1,"StmtBreak":1,"TestBlock":10},"tags":["domain/other","has/enums","has/functions","has/imports","has/loops","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 20 functions, 2 structs, 2 enums and 13 constants. Carries 10 tests. 651 lines compile to 3,639 tokens and 521 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Compiles with 1 item dropped by error recovery and 2 type errors."},{"path":"specs/provider/adapters.t27","category":"specs/provider","name":"adapters","module":"provider-adapters","lines":619,"bytes":16564,"description":"provider/adapters.t27 — HTTP Adapter Specifications HTTP request/response adapters for AI provider APIs","health":"ok","tokens":2383,"nodes":810,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15900,"rust":6978,"verilog":27151,"verilog_hir":2155,"zig":13040},"repo":"t27","kinds":{"Module":19,"UseDecl":4,"ConstDecl":25,"ExprLiteral":125,"EnumDecl":3,"EnumVariant":13,"StructDecl":8,"ExprIdentifier":160,"FnDecl":24,"ExprReturn":30,"ExprStructLit":10,"ExprFieldAccess":52,"ExprUnary":31,"ExprArrayLiteral":4,"ExprBinary":54,"StmtLocal":25,"ExprIf":3,"ExprEnumValue":22,"ExprCall":90,"ExprSwitch":1,"StmtIf":7,"StmtAssign":12,"TestBlock":21,"StmtExpr":44,"InvariantBlock":13,"BenchBlock":5,"StmtFor":5},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 24 functions, 8 structs, 3 enums and 25 constants. Carries 21 tests, 13 invariants and 5 benches. 619 lines compile to 2,383 tokens and 810 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 26.5 KB. Clean through every layer."},{"path":"specs/provider/schema.t27","category":"specs/provider","name":"schema","module":"provider-schema","lines":605,"bytes":15237,"description":"provider/schema.t27 — Provider Message Types AI provider message structures and model types","health":"ok","tokens":2382,"nodes":768,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15057,"rust":7082,"verilog":26249,"verilog_hir":1761,"zig":12177},"repo":"t27","kinds":{"Module":11,"UseDecl":1,"ConstDecl":19,"ExprLiteral":103,"ExprIdentifier":166,"EnumDecl":5,"EnumVariant":18,"StructDecl":14,"FnDecl":18,"StmtIf":2,"ExprBinary":35,"ExprReturn":20,"ExprEnumValue":30,"ExprSwitch":3,"ExprStructLit":10,"ExprFieldAccess":66,"ExprUnary":26,"ExprArrayLiteral":6,"ExprCall":93,"StmtLocal":23,"ExprIf":2,"TestBlock":18,"StmtExpr":41,"InvariantBlock":14,"BenchBlock":6,"StmtFor":6,"StmtAssign":12},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 18 functions, 14 structs, 5 enums and 19 constants. Carries 18 tests, 14 invariants and 6 benches. 605 lines compile to 2,382 tokens and 768 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 25.6 KB. Clean through every layer."},{"path":"specs/provider/stream.t27","category":"specs/provider","name":"stream","module":"provider-stream","lines":612,"bytes":16334,"description":"provider/stream.t27 — SSE/Streaming Response Handling Server-Sent Events and streaming response processing","health":"ok","tokens":2475,"nodes":901,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16395,"rust":7299,"verilog":27555,"verilog_hir":1786,"zig":13439},"repo":"t27","kinds":{"Module":19,"UseDecl":5,"ConstDecl":26,"ExprLiteral":119,"EnumDecl":4,"EnumVariant":21,"StructDecl":7,"ExprIdentifier":175,"FnDecl":22,"ExprReturn":30,"ExprStructLit":11,"ExprFieldAccess":96,"ExprEnumValue":30,"ExprUnary":24,"ExprArrayLiteral":4,"StmtIf":8,"ExprBinary":63,"ExprCall":96,"ExprIndex":8,"StmtLocal":29,"ExprIf":2,"ExprSwitch":3,"TestBlock":19,"StmtExpr":41,"StmtAssign":14,"InvariantBlock":13,"BenchBlock":6,"StmtFor":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 22 functions, 7 structs, 4 enums and 26 constants. Carries 19 tests, 13 invariants and 6 benches. 612 lines compile to 2,475 tokens and 901 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 26.9 KB. Clean through every layer."},{"path":"specs/provider/transform.t27","category":"specs/provider","name":"transform","module":"provider-transform","lines":522,"bytes":15346,"description":"provider/transform.t27 — Cross-Provider Message Transformations Message format transformations between different AI providers","health":"ok","tokens":2101,"nodes":668,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15975,"rust":7471,"verilog":25080,"verilog_hir":2141,"zig":12502},"repo":"t27","kinds":{"Module":15,"UseDecl":7,"ConstDecl":31,"ExprLiteral":52,"EnumDecl":3,"EnumVariant":11,"StructDecl":7,"ExprIdentifier":152,"FnDecl":25,"ExprReturn":29,"ExprStructLit":10,"ExprFieldAccess":55,"StmtIf":5,"ExprBinary":29,"ExprEnumValue":38,"ExprUnary":23,"ExprArrayLiteral":9,"StmtLocal":23,"ExprCall":65,"StmtFor":7,"StmtAssign":11,"ExprSwitch":7,"TestBlock":11,"StmtExpr":28,"InvariantBlock":11,"BenchBlock":4},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 25 functions, 7 structs, 3 enums and 31 constants. Carries 11 tests, 11 invariants and 4 benches. 522 lines compile to 2,101 tokens and 668 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 24.5 KB. Clean through every layer."},{"path":"specs/queen/brain_summaries.t27","category":"specs/queen","name":"brain_summaries","module":"BrainSummaries","lines":395,"bytes":14418,"description":"t27/specs/queen/brain_summaries.t27 Queen Brain Summaries Pipeline Specification Ring 061 - Episode summarization for Queen brain Defines how experience episodes are aggregated into summaries","health":"warn","tokens":1719,"nodes":374,"depth":12,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7519,"rust":4491,"verilog":12338,"verilog_hir":1908,"zig":5872},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":7,"ExprLiteral":38,"StructDecl":2,"ExprIdentifier":127,"FnDecl":7,"StmtLocal":15,"StmtAssign":31,"ExprFieldAccess":58,"StmtWhile":1,"ExprBinary":24,"ExprIndex":8,"StmtIf":8,"ExprCall":12,"ExprReturn":9,"TestBlock":6,"InvariantBlock":4,"BenchBlock":2},"tags":["domain/agent","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 7 constants. Carries 6 tests, 4 invariants and 2 benches. 395 lines compile to 1,719 tokens and 374 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Compiles with 1 type error."},{"path":"specs/queen/lotus.t27","category":"specs/queen","name":"lotus","module":"QueenLotus","lines":804,"bytes":26358,"description":"t27/specs/queen/lotus.t27 Queen Lotus 6-Phase Orchestration Specification Self-improving agent orchestration with episode-based learning","health":"warn","tokens":3007,"nodes":838,"depth":16,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":16596,"rust":10794,"verilog":28993,"verilog_hir":2629,"zig":18925},"repo":"t27","kinds":{"Module":39,"UseDecl":3,"ConstDecl":29,"ExprLiteral":73,"ExprIdentifier":208,"StructDecl":12,"ExprArrayLiteral":2,"FnDecl":24,"StmtLocal":34,"StmtAssign":29,"ExprFieldAccess":102,"ExprCall":38,"ExprBinary":47,"ExprReturn":33,"StmtIf":22,"ExprStructLit":15,"StmtWhile":3,"ExprIndex":5,"ExprUnary":1,"StmtExpr":67,"TestBlock":26,"InvariantBlock":18,"BenchBlock":8},"tags":["domain/agent","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 24 functions, 12 structs and 29 constants. Carries 26 tests, 18 invariants and 8 benches. 804 lines compile to 3,007 tokens and 838 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 28.3 KB. Compiles with 10 type errors."},{"path":"specs/queen/task_analysis.t27","category":"specs/queen","name":"task_analysis","module":"queen-task-analysis","lines":178,"bytes":5115,"description":"queen/task_analysis.t27 — Task Priority Analysis for Queen Trinity S³AI — Cognitive Task Orchestration","health":"warn","tokens":647,"nodes":264,"depth":11,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":4681,"rust":2200,"verilog":7115,"verilog_hir":1074,"zig":3882},"repo":"t27","kinds":{"Module":5,"UseDecl":3,"ConstDecl":8,"ExprLiteral":33,"EnumDecl":1,"EnumVariant":5,"StructDecl":2,"FnDecl":4,"StmtLocal":15,"ExprIdentifier":74,"ExprBinary":28,"ExprFieldAccess":27,"ExprReturn":4,"StmtAssign":17,"StmtWhile":1,"ExprIndex":1,"StmtIf":2,"ExprIf":1,"TestBlock":4,"StmtExpr":12,"ExprCall":14,"ExprArrayLiteral":1,"InvariantBlock":2},"tags":["domain/agent","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions, 2 structs, 1 enum and 8 constants. Carries 4 tests and 2 invariants. 178 lines compile to 647 tokens and 264 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 6.9 KB. Compiles with 1 type error."},{"path":"specs/runtime/execute.t27","category":"specs/runtime","name":"execute","module":"runtime-execute","lines":735,"bytes":19042,"description":"runtime/execute.t27 — Runtime Execution Specification Task execution, promises, cancellation, timeouts","health":"warn","tokens":3173,"nodes":943,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":17586,"rust":8024,"verilog":23486,"verilog_hir":2879,"zig":14146},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":5,"ExprLiteral":93,"EnumDecl":4,"EnumVariant":17,"ExprIdentifier":210,"StructDecl":5,"FnDecl":38,"StmtLocal":43,"ExprCall":119,"ExprBinary":51,"ExprArrayLiteral":13,"StmtFor":3,"ExprFieldAccess":116,"StmtAssign":20,"ExprIndex":2,"ExprReturn":30,"ExprStructLit":10,"ExprUnary":33,"ExprEnumValue":27,"StmtIf":3,"StmtExpr":50,"TestBlock":15,"InvariantBlock":28},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 38 functions, 5 structs, 4 enums and 5 constants. Carries 15 tests and 28 invariants. 735 lines compile to 3,173 tokens and 943 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 22.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/runtime/instance.t27","category":"specs/runtime","name":"instance","module":"runtime-instance","lines":780,"bytes":20135,"description":"runtime/instance.t27 — Runtime Instance Specification Instance registration, lookup, lifecycle management","health":"warn","tokens":3124,"nodes":801,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15477,"rust":7972,"verilog":22363,"verilog_hir":2613,"zig":12330},"repo":"t27","kinds":{"Module":6,"UseDecl":2,"ConstDecl":4,"ExprLiteral":77,"EnumDecl":4,"EnumVariant":19,"ExprIdentifier":170,"StructDecl":8,"FnDecl":32,"StmtLocal":32,"ExprCall":113,"ExprBinary":42,"ExprArrayLiteral":13,"StmtFor":4,"ExprFieldAccess":80,"StmtAssign":14,"ExprIndex":2,"ExprReturn":31,"ExprStructLit":12,"ExprEnumValue":36,"ExprUnary":34,"StmtIf":1,"TestBlock":15,"StmtExpr":34,"InvariantBlock":16},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 32 functions, 8 structs, 4 enums and 4 constants. Carries 15 tests and 16 invariants. 780 lines compile to 3,124 tokens and 801 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/runtime/process.t27","category":"specs/runtime","name":"process","module":"runtime-process","lines":762,"bytes":19101,"description":"runtime/process.t27 — Runtime Process Specification Process spawning, termination, piping, PTY","health":"ok","tokens":2866,"nodes":892,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":19014,"rust":8115,"verilog":29640,"verilog_hir":3062,"zig":15007},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":5,"ExprLiteral":125,"EnumDecl":3,"EnumVariant":14,"ExprIdentifier":182,"StructDecl":7,"FnDecl":40,"ExprReturn":39,"ExprStructLit":13,"ExprFieldAccess":94,"ExprUnary":37,"ExprArrayLiteral":9,"StmtLocal":39,"ExprCall":108,"ExprEnumValue":10,"ExprBinary":25,"StmtAssign":17,"StmtFor":8,"TestBlock":17,"StmtExpr":53,"InvariantBlock":32,"BenchBlock":5},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 40 functions, 7 structs, 3 enums and 5 constants. Carries 17 tests, 32 invariants and 5 benches. 762 lines compile to 2,866 tokens and 892 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 28.9 KB. Clean through every layer."},{"path":"specs/sacred/cosmology.t27","category":"specs/sacred","name":"cosmology","module":"TriCosmology","lines":16,"bytes":629,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":628,"rust":66,"verilog":1516,"verilog_hir":253,"zig":325},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/sacred/dark_matter.t27","category":"specs/sacred","name":"dark_matter","module":"dark_matter","lines":16,"bytes":629,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":626,"rust":66,"verilog":1522,"verilog_hir":251,"zig":326},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/sacred/gravity.t27","category":"specs/sacred","name":"gravity","module":"TriGravity","lines":16,"bytes":625,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":618,"rust":66,"verilog":1504,"verilog_hir":249,"zig":321},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/sacred/monopoles.t27","category":"specs/sacred","name":"monopoles","module":"TriMonopoles","lines":16,"bytes":629,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":628,"rust":66,"verilog":1516,"verilog_hir":253,"zig":325},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/sacred/quantum.t27","category":"specs/sacred","name":"quantum","module":"TriQuantum","lines":16,"bytes":625,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":618,"rust":66,"verilog":1504,"verilog_hir":249,"zig":321},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/sacred/quantum_gravity.t27","category":"specs/sacred","name":"quantum_gravity","module":"quantum_gravity","lines":16,"bytes":637,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":646,"rust":66,"verilog":1546,"verilog_hir":259,"zig":334},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/sacred/sacred_constants.t27","category":"specs/sacred","name":"sacred_constants","module":"SacredConstants","lines":24,"bytes":1160,"description":"t27/specs/","health":"ok","tokens":31,"nodes":8,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":818,"rust":160,"verilog":1751,"verilog_hir":259,"zig":375},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. Carries 1 test. 24 lines compile to 31 tokens and 8 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/sacred/sacred_governance.t27","category":"specs/sacred","name":"sacred_governance","module":"SacredGovernance","lines":85,"bytes":3036,"description":"t27/specs/","health":"ok","tokens":263,"nodes":58,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2342,"rust":2036,"verilog":5144,"verilog_hir":261,"zig":1700},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":6,"ExprIdentifier":35,"EnumDecl":2,"EnumVariant":8,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/enums","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 structs and 2 enums. Carries 1 test. 85 lines compile to 263 tokens and 58 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"specs/sacred/sacred_identity.t27","category":"specs/sacred","name":"sacred_identity","module":"SacredIdentity","lines":77,"bytes":2757,"description":"t27/specs/","health":"ok","tokens":213,"nodes":48,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1972,"rust":1644,"verilog":4666,"verilog_hir":257,"zig":1452},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":2,"StructDecl":6,"ExprIdentifier":33,"TestBlock":1,"StmtExpr":1,"ExprCall":1},"tags":["domain/sacred","has/constants-only","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 structs and 1 constant. Carries 1 test. 77 lines compile to 213 tokens and 48 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/sacred/superconductivity.t27","category":"specs/sacred","name":"superconductivity","module":"TriSuperconductivity","lines":16,"bytes":645,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":668,"rust":66,"verilog":1564,"verilog_hir":269,"zig":341},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/sacred","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/sandbox/health.t27","category":"specs/sandbox","name":"health","module":"sandbox","lines":43,"bytes":1234,"description":"SANDBOX-010 + SANDBOX-011: Sandbox Health Management","health":"warn","tokens":47,"nodes":10,"depth":5,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":809,"rust":119,"verilog":1736,"verilog_hir":257,"zig":376},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":1,"ExprLiteral":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1},"tags":["domain/tools","has/constants-only","has/imports","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 1 constant. Carries 1 test. 43 lines compile to 47 tokens and 10 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/sandbox/https_enforce.t27","category":"specs/sandbox","name":"https_enforce","module":"sandbox","lines":224,"bytes":7449,"description":"SANDBOX-012: HTTPS Enforcement","health":"warn","tokens":609,"nodes":136,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3056,"rust":1109,"verilog":5635,"verilog_hir":492,"zig":2123},"repo":"t27","kinds":{"Module":4,"ConstDecl":4,"ExprLiteral":7,"ExprIdentifier":45,"StructDecl":1,"FnDecl":4,"StmtIf":2,"ExprFieldAccess":2,"ExprReturn":1,"StmtExpr":39,"StmtLocal":1,"ExprCall":7,"ExprBinary":4,"ExprUnary":2,"ExprIndex":1,"ExprClosure":1,"TestBlock":11},"tags":["domain/tools","has/functions","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 4 functions, 1 struct and 4 constants. Carries 11 tests. 224 lines compile to 609 tokens and 136 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/sandbox/modules.t27","category":"specs/sandbox","name":"modules","module":"sandbox","lines":22,"bytes":536,"description":null,"health":"warn","tokens":22,"nodes":6,"depth":5,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":638,"rust":66,"verilog":1514,"verilog_hir":259,"zig":286},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/tools","has/imports","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 22 lines compile to 22 tokens and 6 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/sandbox/orphan_detection.t27","category":"specs/sandbox","name":"orphan_detection","module":"sandbox","lines":257,"bytes":9041,"description":"SANDBOX-011: Orphaned Session Detection","health":"warn","tokens":928,"nodes":72,"depth":10,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2714,"rust":1241,"verilog":4155,"verilog_hir":482,"zig":1363},"repo":"t27","kinds":{"Module":4,"UseDecl":2,"StructDecl":2,"ExprIdentifier":21,"EnumDecl":1,"EnumVariant":10,"ConstDecl":1,"ExprLiteral":3,"FnDecl":2,"StmtIf":2,"ExprBinary":5,"ExprFieldAccess":6,"ExprReturn":1,"StmtExpr":5,"StmtLocal":2,"ExprCall":3,"StmtFor":1,"TestBlock":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 2 functions, 2 structs, 1 enum and 1 constant. Carries 1 test. 257 lines compile to 928 tokens and 72 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/sandbox/session_timeout.t27","category":"specs/sandbox","name":"session_timeout","module":"sandbox","lines":195,"bytes":6252,"description":"SANDBOX-010: Session Timeout Enforcement","health":"warn","tokens":724,"nodes":44,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2241,"rust":963,"verilog":3438,"verilog_hir":396,"zig":909},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"StructDecl":2,"ExprIdentifier":11,"EnumDecl":1,"EnumVariant":10,"ConstDecl":1,"ExprLiteral":2,"FnDecl":1,"StmtIf":1,"ExprBinary":3,"ExprFieldAccess":4,"ExprReturn":1,"StmtLocal":1,"ExprCall":1,"StmtExpr":1,"TestBlock":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 function, 2 structs, 1 enum and 1 constant. Carries 1 test. 195 lines compile to 724 tokens and 44 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/server/agent-runner.t27","category":"specs/server","name":"agent-runner","module":"AgentRunner","lines":249,"bytes":8126,"description":"specs/server/agent-runner.t27 Agent Runner Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":927,"nodes":411,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7161,"rust":4001,"verilog":11697,"verilog_hir":2228,"zig":5311},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"StructDecl":3,"ExprIdentifier":110,"EnumDecl":1,"EnumVariant":4,"ConstDecl":5,"ExprLiteral":55,"FnDecl":12,"StmtLocal":11,"ExprStructLit":2,"StmtAssign":25,"ExprFieldAccess":49,"ExprReturn":18,"ExprBinary":35,"StmtIf":6,"ExprCall":37,"TestBlock":6,"StmtExpr":23,"InvariantBlock":1},"tags":["domain/network","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 3 structs, 1 enum and 5 constants. Carries 6 tests and 1 invariant. 249 lines compile to 927 tokens and 411 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"specs/server/api.t27","category":"specs/server","name":"api","module":"Api","lines":148,"bytes":4198,"description":"specs/server/api.t27 API Client Types Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":455,"nodes":175,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4080,"rust":2605,"verilog":6806,"verilog_hir":467,"zig":2987},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"EnumDecl":2,"EnumVariant":7,"StructDecl":7,"ExprIdentifier":45,"ConstDecl":4,"ExprLiteral":25,"FnDecl":3,"StmtIf":7,"ExprBinary":18,"ExprReturn":10,"ExprFieldAccess":4,"TestBlock":4,"StmtExpr":10,"ExprCall":18,"StmtLocal":1,"ExprStructLit":1},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 7 structs, 2 enums and 4 constants. Carries 4 tests. 148 lines compile to 455 tokens and 175 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/server/http.t27","category":"specs/server","name":"http","module":"server-http","lines":453,"bytes":12359,"description":"http.t27 — HTTP Server Specification HTTP listener, request/response handling, middleware","health":"ok","tokens":1763,"nodes":623,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11889,"rust":4523,"verilog":18556,"verilog_hir":1109,"zig":9445},"repo":"t27","kinds":{"Module":6,"UseDecl":2,"ConstDecl":17,"ExprLiteral":94,"EnumDecl":2,"EnumVariant":8,"StructDecl":6,"ExprIdentifier":112,"FnDecl":14,"ExprReturn":14,"ExprStructLit":21,"ExprFieldAccess":87,"ExprEnumValue":8,"ExprBinary":36,"ExprSwitch":1,"ExprCall":70,"TestBlock":12,"StmtLocal":16,"StmtExpr":41,"ExprUnary":21,"InvariantBlock":15,"BenchBlock":5,"StmtFor":5,"StmtAssign":10},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 6 structs, 2 enums and 17 constants. Carries 12 tests, 15 invariants and 5 benches. 453 lines compile to 1,763 tokens and 623 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.1 KB. Clean through every layer."},{"path":"specs/server/mdns.t27","category":"specs/server","name":"mdns","module":"server-mdns","lines":567,"bytes":14817,"description":"mdns.t27 — mDNS Specification Multicast DNS service discovery, announcement, resolution","health":"ok","tokens":2238,"nodes":753,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14727,"rust":5050,"verilog":24265,"verilog_hir":1972,"zig":11652},"repo":"t27","kinds":{"Module":12,"UseDecl":1,"ConstDecl":13,"ExprLiteral":115,"EnumDecl":3,"EnumVariant":12,"StructDecl":6,"ExprIdentifier":141,"FnDecl":23,"ExprReturn":22,"ExprStructLit":8,"ExprFieldAccess":59,"StmtLocal":37,"ExprCall":105,"ExprEnumValue":13,"ExprUnary":30,"ExprArrayLiteral":4,"StmtAssign":15,"StmtFor":9,"StmtIf":2,"ExprBinary":33,"TestBlock":15,"StmtExpr":49,"InvariantBlock":21,"BenchBlock":5},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 23 functions, 6 structs, 3 enums and 13 constants. Carries 15 tests, 21 invariants and 5 benches. 567 lines compile to 2,238 tokens and 753 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 23.7 KB. Clean through every layer."},{"path":"specs/server/project.t27","category":"specs/server","name":"project","module":"Project","lines":206,"bytes":6094,"description":"specs/server/project.t27 Project Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":922,"nodes":429,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5819,"rust":3044,"verilog":10236,"verilog_hir":897,"zig":4812},"repo":"t27","kinds":{"Module":11,"UseDecl":1,"StructDecl":3,"ExprIdentifier":107,"FnDecl":11,"ExprReturn":12,"ExprStructLit":3,"ExprFieldAccess":63,"ExprArrayLiteral":2,"ExprLiteral":60,"StmtLocal":25,"ExprBinary":32,"StmtIf":7,"StmtAssign":13,"ExprIndex":9,"StmtWhile":3,"ExprCall":34,"TestBlock":8,"ExprUnary":10,"StmtExpr":15},"tags":["domain/network","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 3 structs. Carries 8 tests. 206 lines compile to 922 tokens and 429 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 10.0 KB. Clean through every layer."},{"path":"specs/server/provider.t27","category":"specs/server","name":"provider","module":"Provider","lines":257,"bytes":8105,"description":"specs/server/provider.t27 LLM Provider Configuration Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":1125,"nodes":539,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7709,"rust":3824,"verilog":12605,"verilog_hir":1014,"zig":6427},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"EnumDecl":1,"EnumVariant":4,"StructDecl":3,"ExprIdentifier":129,"FnDecl":10,"ExprReturn":14,"ExprStructLit":4,"ExprFieldAccess":72,"ExprArrayLiteral":1,"ExprLiteral":77,"StmtIf":9,"ExprBinary":44,"StmtAssign":13,"ExprIndex":9,"StmtLocal":28,"StmtWhile":4,"ExprCall":53,"TestBlock":10,"StmtExpr":29,"ExprUnary":10},"tags":["domain/network","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 3 structs and 1 enum. Carries 10 tests. 257 lines compile to 1,125 tokens and 539 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/server/router.t27","category":"specs/server","name":"router","module":"server-router","lines":575,"bytes":15018,"description":"router.t27 — HTTP Router Specification URL routing, pattern matching, parameter extraction","health":"warn","tokens":2576,"nodes":723,"depth":12,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10621,"rust":5666,"verilog":18387,"verilog_hir":1602,"zig":8572},"repo":"t27","kinds":{"Module":32,"UseDecl":1,"ConstDecl":6,"ExprLiteral":74,"EnumDecl":1,"EnumVariant":7,"StructDecl":6,"ExprIdentifier":175,"FnDecl":19,"ExprReturn":30,"ExprStructLit":11,"ExprFieldAccess":68,"ExprUnary":39,"ExprArrayLiteral":11,"StmtLocal":31,"ExprCall":65,"StmtFor":10,"StmtIf":20,"ExprBinary":47,"ExprEnumValue":1,"StmtContinue":1,"StmtAssign":13,"ExprIndex":18,"StmtBreak":2,"TestBlock":17,"StmtExpr":18},"tags":["domain/network","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 19 functions, 6 structs, 1 enum and 6 constants. Carries 17 tests. 575 lines compile to 2,576 tokens and 723 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/server/routes.t27","category":"specs/server","name":"routes","module":"Routes","lines":36,"bytes":690,"description":"specs/server/routes.t27 T27 Server Routes Specification Constitutional Law #4: De-Zig-fication","health":"ok","tokens":107,"nodes":41,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1460,"rust":442,"verilog":2745,"verilog_hir":241,"zig":670},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":1,"ExprLiteral":6,"EnumDecl":1,"EnumVariant":5,"StructDecl":1,"ExprIdentifier":8,"TestBlock":2,"StmtExpr":5,"ExprCall":5,"ExprBinary":5},"tags":["domain/network","has/constants-only","has/enums","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct, 1 enum and 1 constant. Carries 2 tests. 36 lines compile to 107 tokens and 41 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/server/session.t27","category":"specs/server","name":"session","module":"Session","lines":273,"bytes":8497,"description":"specs/server/session.t27 Session Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":1249,"nodes":564,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7884,"rust":3693,"verilog":12918,"verilog_hir":1191,"zig":6567},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"EnumDecl":2,"EnumVariant":8,"StructDecl":4,"ExprIdentifier":131,"FnDecl":11,"ExprReturn":12,"ExprStructLit":7,"ExprFieldAccess":90,"ExprArrayLiteral":3,"ExprLiteral":87,"StmtLocal":27,"ExprCall":47,"StmtIf":6,"ExprBinary":44,"StmtAssign":13,"ExprIndex":8,"StmtWhile":3,"TestBlock":12,"StmtExpr":29,"ExprUnary":9},"tags":["domain/network","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions, 4 structs and 2 enums. Carries 12 tests. 273 lines compile to 1,249 tokens and 564 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.6 KB. Clean through every layer."},{"path":"specs/server/sse.t27","category":"specs/server","name":"sse","module":"server-sse","lines":563,"bytes":15052,"description":"sse.t27 — Server-Sent Events Specification SSE connections, event streaming, reconnection handling","health":"warn","tokens":2341,"nodes":830,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15274,"rust":5830,"verilog":25694,"verilog_hir":2698,"zig":12490},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":8,"ExprLiteral":109,"EnumDecl":3,"EnumVariant":13,"StructDecl":5,"ExprIdentifier":192,"FnDecl":26,"ExprReturn":15,"ExprStructLit":5,"ExprFieldAccess":76,"ExprEnumValue":10,"ExprCall":112,"ExprBinary":33,"StmtAssign":48,"StmtLocal":38,"StmtIf":3,"StmtFor":9,"ExprUnary":24,"ExprArrayLiteral":2,"StmtWhile":1,"TestBlock":15,"StmtExpr":44,"InvariantBlock":18,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 26 functions, 5 structs, 3 enums and 8 constants. Carries 15 tests, 18 invariants and 6 benches. 563 lines compile to 2,341 tokens and 830 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 25.1 KB. Compiles with 1 type error."},{"path":"specs/server/vm.t27","category":"specs/server","name":"vm","module":"VM","lines":593,"bytes":22613,"description":"specs/server/vm.t27 VSA VM - Ternary Virtual Machine for Hyperdimensional Computing","health":"ok","tokens":3391,"nodes":711,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8443,"rust":2769,"verilog":15636,"verilog_hir":1395,"zig":14627},"repo":"t27","kinds":{"Module":26,"UseDecl":4,"EnumDecl":1,"EnumVariant":23,"StructDecl":3,"ExprIdentifier":210,"FnDecl":5,"StmtLocal":47,"ExprCall":63,"StmtAssign":43,"ExprFieldAccess":104,"ExprLiteral":21,"ExprReturn":5,"ExprSwitch":3,"ConstDecl":30,"ExprArrayLiteral":1,"ExprBinary":1,"TestBlock":20,"StmtExpr":89,"InvariantBlock":6,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 5 functions, 3 structs, 1 enum and 30 constants. Carries 20 tests, 6 invariants and 6 benches. 593 lines compile to 3,391 tokens and 711 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Clean through every layer."},{"path":"specs/shell/environment.t27","category":"specs/shell","name":"environment","module":"ShellEnvironment","lines":304,"bytes":9509,"description":"specs/shell/environment.t27 Shell Environment Operations","health":"ok","tokens":1216,"nodes":436,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7694,"rust":1744,"verilog":12051,"verilog_hir":1325,"zig":7056},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":21,"ConstDecl":3,"ExprLiteral":61,"TestBlock":18,"StmtExpr":59,"ExprCall":59,"ExprBinary":34,"ExprIdentifier":65,"StmtLocal":7,"ExprStructLit":7,"ExprFieldAccess":86,"ExprUnary":13},"tags":["domain/tools","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 21 functions and 3 constants. Carries 18 tests. 304 lines compile to 1,216 tokens and 436 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Clean through every layer."},{"path":"specs/shell/process.t27","category":"specs/shell","name":"process","module":"ShellProcess","lines":305,"bytes":8856,"description":"specs/shell/process.t27 Shell Process Operations","health":"warn","tokens":1142,"nodes":260,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5749,"rust":1718,"verilog":8735,"verilog_hir":991,"zig":5111},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"FnDecl":13,"ExprIdentifier":42,"EnumDecl":1,"EnumVariant":6,"TestBlock":11,"StmtLocal":9,"ExprCall":21,"ExprLiteral":36,"StmtExpr":20,"ExprBinary":19,"ExprFieldAccess":63,"ExprStructLit":8,"ExprArrayLiteral":4,"ExprUnary":1,"ExprTry":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 13 functions, 2 structs and 1 enum. Carries 11 tests. 305 lines compile to 1,142 tokens and 260 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/shell/schema.t27","category":"specs/shell","name":"schema","module":"Shell","lines":406,"bytes":12544,"description":"specs/shell/schema.t27 Shell Types Specification","health":"ok","tokens":1715,"nodes":722,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9473,"rust":2814,"verilog":15703,"verilog_hir":447,"zig":8568},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"EnumDecl":4,"EnumVariant":23,"StructDecl":5,"ExprIdentifier":145,"ConstDecl":2,"ExprLiteral":102,"FnDecl":4,"ExprReturn":4,"ExprBinary":63,"ExprFieldAccess":128,"ExprUnary":17,"TestBlock":24,"StmtExpr":75,"ExprCall":98,"StmtLocal":13,"ExprStructLit":13},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 4 functions, 5 structs, 4 enums and 2 constants. Carries 24 tests. 406 lines compile to 1,715 tokens and 722 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Clean through every layer."},{"path":"specs/storage/kv.t27","category":"specs/storage","name":"kv","module":"StorageKv","lines":159,"bytes":5529,"description":"specs/storage/kv.t27 Key-Value Storage Operations","health":"ok","tokens":750,"nodes":202,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3968,"rust":727,"verilog":8728,"verilog_hir":731,"zig":3427},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":8,"TestBlock":11,"StmtLocal":19,"ExprCall":58,"ExprArrayLiteral":14,"StmtExpr":18,"ExprLiteral":17,"StmtAssign":11,"ExprIdentifier":30,"ExprBinary":9,"ExprClosure":2,"ExprFieldAccess":2},"tags":["domain/storage","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions. Carries 11 tests. 159 lines compile to 750 tokens and 202 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Clean through every layer."},{"path":"specs/storage/lock.t27","category":"specs/storage","name":"lock","module":"StorageLock","lines":179,"bytes":6388,"description":"specs/storage/lock.t27 Locking Primitives for Storage Operations","health":"ok","tokens":684,"nodes":216,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4812,"rust":1220,"verilog":8382,"verilog_hir":825,"zig":3646},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":22,"FnDecl":11,"TestBlock":9,"StmtLocal":11,"ExprCall":71,"ExprLiteral":39,"StmtExpr":22,"ExprBinary":11,"StmtAssign":16},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 1 struct. Carries 9 tests. 179 lines compile to 684 tokens and 216 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 8.2 KB. Clean through every layer."},{"path":"specs/storage/migrate.t27","category":"specs/storage","name":"migrate","module":"StorageMigrate","lines":193,"bytes":6892,"description":"specs/storage/migrate.t27 Data Migration Operations","health":"ok","tokens":605,"nodes":141,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4677,"rust":1798,"verilog":7715,"verilog_hir":902,"zig":3384},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":2,"ExprIdentifier":20,"FnDecl":12,"ConstDecl":1,"TestBlock":7,"StmtLocal":10,"ExprCall":34,"StmtExpr":12,"StmtAssign":4,"ExprLiteral":16,"ExprBinary":7,"ExprFieldAccess":7,"StmtIf":2,"ExprIndex":2},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 2 structs and 1 constant. Carries 7 tests. 193 lines compile to 605 tokens and 141 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 7.5 KB. Clean through every layer."},{"path":"specs/storage/schema.t27","category":"specs/storage","name":"schema","module":"Storage","lines":146,"bytes":4070,"description":"specs/storage/schema.t27 Storage Types Specification","health":"ok","tokens":365,"nodes":135,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3181,"rust":1719,"verilog":5625,"verilog_hir":347,"zig":2708},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":7,"ExprIdentifier":32,"EnumDecl":2,"EnumVariant":5,"ConstDecl":3,"ExprLiteral":19,"FnDecl":2,"ExprReturn":2,"ExprBinary":10,"ExprFieldAccess":13,"TestBlock":4,"StmtLocal":5,"ExprStructLit":3,"ExprArrayLiteral":1,"StmtExpr":10,"ExprCall":12,"ExprIndex":2,"ExprUnary":1},"tags":["domain/storage","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 7 structs, 2 enums and 3 constants. Carries 4 tests. 146 lines compile to 365 tokens and 135 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/sync/index.t27","category":"specs/sync","name":"index","module":"sync-index","lines":779,"bytes":20867,"description":"sync/index.t27 — Sync Index Specification Sync operations, checkpointing, delta management","health":"warn","tokens":3255,"nodes":1094,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":20881,"rust":9853,"verilog":31727,"verilog_hir":3749,"zig":16949},"repo":"t27","kinds":{"Module":18,"UseDecl":2,"ConstDecl":5,"ExprLiteral":162,"EnumDecl":2,"EnumVariant":8,"StructDecl":9,"ExprIdentifier":243,"FnDecl":35,"ExprReturn":36,"ExprStructLit":18,"ExprFieldAccess":141,"ExprCall":117,"ExprUnary":28,"ExprArrayLiteral":13,"ExprEnumValue":6,"StmtAssign":31,"ExprBinary":58,"StmtLocal":50,"StmtExpr":46,"StmtFor":15,"StmtIf":2,"ExprIndex":4,"ExprIf":1,"TestBlock":12,"InvariantBlock":26,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 35 functions, 9 structs, 2 enums and 5 constants. Carries 12 tests, 26 invariants and 6 benches. 779 lines compile to 3,255 tokens and 1,094 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 31.0 KB. Compiles with 2 type errors."},{"path":"specs/sync/schema.t27","category":"specs/sync","name":"schema","module":"sync-schema","lines":722,"bytes":19125,"description":"sync/schema.t27 — Sync Schema Specification Sync ID, state, event types for change synchronization","health":"warn","tokens":3020,"nodes":1060,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":19100,"rust":7372,"verilog":31235,"verilog_hir":3275,"zig":15310},"repo":"t27","kinds":{"Module":16,"UseDecl":1,"ConstDecl":6,"ExprLiteral":125,"ExprIdentifier":244,"EnumDecl":2,"EnumVariant":11,"StructDecl":7,"FnDecl":33,"StmtLocal":59,"ExprCall":142,"ExprBinary":53,"ExprArrayLiteral":5,"StmtFor":12,"ExprFieldAccess":94,"StmtAssign":34,"ExprIndex":3,"ExprReturn":26,"StmtIf":2,"StmtBreak":1,"ExprStructLit":9,"ExprUnary":37,"ExprEnumValue":31,"ExprIf":1,"TestBlock":15,"StmtExpr":60,"InvariantBlock":25,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 33 functions, 7 structs, 2 enums and 6 constants. Carries 15 tests, 25 invariants and 6 benches. 722 lines compile to 3,020 tokens and 1,060 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 30.5 KB. Compiles with 2 type errors."},{"path":"specs/ternary/bigint.t27","category":"specs/ternary","name":"bigint","module":"TernaryBigInt","lines":1441,"bytes":43916,"description":"t27/specs/ternary/bigint.t27 TVC BigInt - Balanced Ternary Arbitrary Precision Arithmetic 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q Balanced Ternary representation: - Each trit has value {-1, 0, +1} - Number = Sigma(trit[i] * 3^i) for i = 0..n-1","health":"ok","tokens":7952,"nodes":3108,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":18071,"rust":686,"verilog":34613,"verilog_hir":255,"zig":31957},"repo":"t27","kinds":{"Module":110,"UseDecl":3,"ConstDecl":10,"ExprLiteral":444,"ExprIdentifier":656,"StructDecl":2,"FnDecl":27,"ExprReturn":50,"ExprStructLit":10,"ExprFieldAccess":156,"ExprBinary":229,"ExprArrayLiteral":17,"StmtLocal":274,"ExprCall":541,"StmtIf":47,"StmtWhile":26,"StmtAssign":123,"ExprUnary":126,"ExprIndex":48,"ExprIf":8,"StmtBreak":4,"StmtExpr":105,"StmtContinue":1,"TestBlock":37,"StmtFor":28,"InvariantBlock":14,"BenchBlock":12},"tags":["domain/ternary","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 27 functions, 2 structs and 10 constants. Carries 37 tests, 14 invariants and 12 benches. 1441 lines compile to 7,952 tokens and 3,108 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 33.8 KB. Clean through every layer."},{"path":"specs/ternary/hybrid_arithmetic.t27","category":"specs/ternary","name":"hybrid_arithmetic","module":"HybridArithmetic","lines":492,"bytes":18595,"description":"Module: Hybrid Arithmetic - Packed Storage with Unpacked Computation","health":"ok","tokens":1784,"nodes":169,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7724,"rust":1508,"verilog":15619,"verilog_hir":722,"zig":9910},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"EnumDecl":1,"EnumVariant":2,"StructDecl":3,"ExprIdentifier":7,"FnDecl":11,"TestBlock":24,"StmtExpr":91,"InvariantBlock":15,"BenchBlock":11},"tags":["domain/ternary","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 11 functions, 3 structs and 1 enum. Carries 24 tests, 15 invariants and 11 benches. 492 lines compile to 1,784 tokens and 169 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Clean through every layer."},{"path":"specs/ternary/hybrid_bigint.t27","category":"specs/ternary","name":"hybrid_bigint","module":"hybrid_bigint","lines":1065,"bytes":30092,"description":"HybridBigInt: Optimal Memory/Speed Trade-off Uses packed storage (4.5x memory savings) with unpacked computation SIMD-accelerated operations for high performance Author: Dmitrii Vasilev","health":"warn","tokens":5666,"nodes":918,"depth":11,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14061,"rust":1180,"verilog":28642,"verilog_hir":508,"zig":13241},"repo":"t27","kinds":{"Module":23,"UseDecl":3,"ConstDecl":6,"ExprLiteral":125,"ExprIdentifier":152,"EnumDecl":1,"EnumVariant":2,"StructDecl":1,"FnDecl":4,"StmtLocal":154,"ExprArrayLiteral":9,"StmtFor":17,"ExprBinary":29,"ExprIndex":13,"ExprFieldAccess":11,"StmtIf":3,"StmtAssign":10,"ExprUnary":57,"StmtExpr":73,"ExprReturn":1,"TestBlock":25,"ExprCall":173,"InvariantBlock":14,"BenchBlock":12},"tags":["domain/ternary","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 6 constants. Carries 25 tests, 14 invariants and 12 benches. 1065 lines compile to 5,666 tokens and 918 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 28.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/ternary/packed_trit.t27","category":"specs/ternary","name":"packed_trit","module":"PackedTrit","lines":430,"bytes":16022,"description":"Module: Packed Trit Encoding (5 trits per byte)","health":"ok","tokens":1417,"nodes":209,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7020,"rust":1899,"verilog":14472,"verilog_hir":968,"zig":9142},"repo":"t27","kinds":{"Module":7,"UseDecl":3,"ConstDecl":10,"ExprLiteral":14,"StructDecl":4,"ExprIdentifier":28,"FnDecl":10,"ExprReturn":6,"ExprBinary":10,"StmtIf":3,"ExprUnary":1,"ExprIf":1,"StmtLocal":1,"ExprFieldAccess":1,"ExprCall":1,"TestBlock":21,"StmtExpr":69,"InvariantBlock":10,"BenchBlock":9},"tags":["domain/ternary","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 10 functions, 4 structs and 10 constants. Carries 21 tests, 10 invariants and 9 benches. 430 lines compile to 1,417 tokens and 209 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Clean through every layer."},{"path":"specs/test_framework/core.t27","category":"specs/test_framework","name":"core","module":"core","lines":317,"bytes":10877,"description":"t27 Math/Physics Test Framework - Core Ring 050: Test framework core per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Provides fundamental testing constructs for scientific computing","health":"warn","tokens":1697,"nodes":69,"depth":9,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2382,"rust":1402,"verilog":4025,"verilog_hir":374,"zig":1264},"repo":"t27","kinds":{"Module":3,"EnumDecl":3,"EnumVariant":16,"StructDecl":2,"ExprIdentifier":25,"FnDecl":1,"StmtLocal":4,"ExprLiteral":4,"StmtFor":1,"ExprBinary":2,"ExprCall":3,"StmtIf":1,"ExprUnary":1,"StmtAssign":2,"ExprIf":1},"tags":["domain/testing","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 function, 2 structs and 3 enums. 317 lines compile to 1,697 tokens and 69 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/test_framework/graph_drift_detection.t27","category":"specs/test_framework","name":"graph_drift_detection","module":"GraphDriftDetection","lines":650,"bytes":23027,"description":"t27/specs/test_framework/graph_drift_detection.t27 Ring 054 -- Graph Drift Detection for Structural Change Detection Monitors structural changes in mathematical and physics specifications over time","health":"ok","tokens":2911,"nodes":48,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2227,"rust":1627,"verilog":3918,"verilog_hir":318,"zig":1632},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":4,"ExprIdentifier":27,"EnumDecl":2,"EnumVariant":11,"FnDecl":1},"tags":["domain/testing","has/enums","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 4 structs and 2 enums. 650 lines compile to 2,911 tokens and 48 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/test_framework/property_test_template.t27","category":"specs/test_framework","name":"property_test_template","module":"PBTTemplate","lines":433,"bytes":16346,"description":"t27/specs/test_framework/property_test_template.t27 Ring 052 -- Property-Based Testing Template for GoldenFloat Standardized PBT patterns following T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md","health":"warn","tokens":2112,"nodes":82,"depth":9,"loss":4,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2377,"rust":1398,"verilog":3938,"verilog_hir":582,"zig":2509},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":1,"ExprIdentifier":13,"FnDecl":6,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":10,"ExprLiteral":9,"StmtLocal":7,"ExprArrayLiteral":2,"StmtIf":2,"ExprBinary":6,"ExprCall":13,"ExprIndex":2},"tags":["domain/testing","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 6 functions and 1 struct. 433 lines compile to 2,112 tokens and 82 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Compiles with 4 items dropped by error recovery."},{"path":"specs/test_framework/runner.t27","category":"specs/test_framework","name":"runner","module":"runner","lines":618,"bytes":19960,"description":"t27 Math/Physics Test Framework - Runner Ring 050: Test runner implementation per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Entry point for `tri test ` execution","health":"warn","tokens":3333,"nodes":38,"depth":5,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2047,"rust":1433,"verilog":3493,"verilog_hir":388,"zig":1609},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":4,"ExprIdentifier":21,"EnumDecl":1,"EnumVariant":5,"FnDecl":2,"StmtExpr":1,"ExprCall":2},"tags":["domain/testing","has/enums","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 2 functions, 4 structs and 1 enum. 618 lines compile to 3,333 tokens and 38 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/test_framework/verilog_bench_harness.t27","category":"specs/test_framework","name":"verilog_bench_harness","module":"VerilogBenchHarness","lines":460,"bytes":17844,"description":"t27/specs/test_framework/verilog_bench_harness.t27 Ring 053 -- Verilog Bench Harness for Hardware-in-the-Loop Testing Integration framework for testing GoldenFloat operations against Verilog RTL","health":"ok","tokens":2046,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1294,"rust":525,"verilog":2327,"verilog_hir":320,"zig":888},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":11,"FnDecl":1},"tags":["domain/testing","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function and 1 struct. 460 lines compile to 2,046 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tools/registry.t27","category":"specs/tools","name":"registry","module":"ToolsRegistry","lines":523,"bytes":16726,"description":"specs/tools/registry.t27 Tools Registry Operations","health":"warn","tokens":2185,"nodes":183,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5988,"rust":2257,"verilog":8504,"verilog_hir":1464,"zig":5519},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":23,"TestBlock":8,"StmtLocal":4,"ExprCall":31,"ExprLiteral":23,"StmtExpr":23,"ExprBinary":21,"ExprFieldAccess":20,"ExprIdentifier":25,"StmtAssign":1,"ExprUnary":1},"tags":["domain/tools","has/functions","has/imports","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 23 functions. Carries 8 tests. 523 lines compile to 2,185 tokens and 183 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tools/schema.t27","category":"specs/tools","name":"schema","module":"Tools","lines":523,"bytes":16580,"description":"specs/tools/schema.t27 Tools Types Specification","health":"warn","tokens":2006,"nodes":225,"depth":7,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5028,"rust":3417,"verilog":8735,"verilog_hir":390,"zig":4612},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":12,"EnumDecl":3,"EnumVariant":17,"ExprIdentifier":68,"ConstDecl":2,"ExprLiteral":23,"FnDecl":3,"ExprReturn":3,"ExprFieldAccess":22,"ExprBinary":21,"TestBlock":6,"StmtLocal":2,"ExprCall":21,"StmtExpr":19},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 3 functions, 12 structs, 3 enums and 2 constants. Carries 6 tests. 523 lines compile to 2,006 tokens and 225 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/tools/tri_to_t27_converter.t27","category":"specs/tools","name":"tri_to_t27_converter","module":"TriToT27Converter","lines":406,"bytes":16958,"description":"t27/specs/tools/tri_to_t27_converter.t27","health":"ok","tokens":1237,"nodes":145,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7177,"rust":3063,"verilog":13435,"verilog_hir":1039,"zig":8490},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":10,"ExprIdentifier":33,"FnDecl":10,"TestBlock":16,"StmtExpr":50,"InvariantBlock":10,"BenchBlock":7},"tags":["domain/tools","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 10 functions, 10 structs and 3 constants. Carries 16 tests, 10 invariants and 7 benches. 406 lines compile to 1,237 tokens and 145 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 13.1 KB. Clean through every layer."},{"path":"specs/tri/agent/agent_run.t27","category":"specs/tri","name":"agent_run","module":"AgentRun","lines":16,"bytes":624,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":612,"rust":66,"verilog":1508,"verilog_hir":245,"zig":321},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/agent/agents.t27","category":"specs/tri","name":"agents","module":"agents","lines":16,"bytes":619,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":601,"rust":66,"verilog":1492,"verilog_hir":241,"zig":316},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/agent/autonomous_lifecycle.t27","category":"specs/tri","name":"autonomous_lifecycle","module":"TriAutonomousLifecycle","lines":73,"bytes":2953,"description":"t27/specs/","health":"ok","tokens":233,"nodes":56,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2279,"rust":1747,"verilog":4475,"verilog_hir":273,"zig":1484},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":3,"EnumVariant":19,"StructDecl":4,"ExprIdentifier":23,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/enums","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 structs and 3 enums. Carries 1 test. 73 lines compile to 233 tokens and 56 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/tri/agent/autonomous_universe.t27","category":"specs/tri","name":"autonomous_universe","module":"AutonomousUniverse","lines":16,"bytes":645,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":662,"rust":66,"verilog":1568,"verilog_hir":265,"zig":341},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/agent/eternal_monitor.t27","category":"specs/tri","name":"eternal_monitor","module":"EternalMonitor","lines":70,"bytes":2500,"description":"t27/specs/","health":"ok","tokens":205,"nodes":45,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1903,"rust":1493,"verilog":3737,"verilog_hir":257,"zig":1242},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":2,"EnumVariant":8,"StructDecl":5,"ExprIdentifier":23,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/enums","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 structs and 2 enums. Carries 1 test. 70 lines compile to 205 tokens and 45 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/agent/experience_hooks.t27","category":"specs/tri","name":"experience_hooks","module":"experience_hooks","lines":16,"bytes":639,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":651,"rust":66,"verilog":1552,"verilog_hir":261,"zig":336},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/agent/faculty_board.t27","category":"specs/tri","name":"faculty_board","module":"FacultyBoard","lines":63,"bytes":2412,"description":"t27/specs/","health":"ok","tokens":173,"nodes":41,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1717,"rust":1222,"verilog":3573,"verilog_hir":253,"zig":1031},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":3,"EnumVariant":12,"StructDecl":3,"ExprIdentifier":16,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/enums","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 structs and 3 enums. Carries 1 test. 63 lines compile to 173 tokens and 41 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/agent/governance_agent.t27","category":"specs/tri","name":"governance_agent","module":"GovernanceAgent","lines":98,"bytes":3447,"description":"t27/specs/","health":"ok","tokens":309,"nodes":69,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2316,"rust":2327,"verilog":5668,"verilog_hir":259,"zig":1970},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":8,"ExprIdentifier":54,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 structs. Carries 1 test. 98 lines compile to 309 tokens and 69 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/tri/agent/handoff.t27","category":"specs/tri","name":"handoff","module":"Handoff","lines":67,"bytes":2325,"description":"t27/specs/","health":"ok","tokens":243,"nodes":46,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1790,"rust":1543,"verilog":4229,"verilog_hir":243,"zig":1359},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":4,"ExprIdentifier":35,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 structs. Carries 1 test. 67 lines compile to 243 tokens and 46 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/agent/memory.t27","category":"specs/tri","name":"memory","module":"memory","lines":16,"bytes":619,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":601,"rust":66,"verilog":1492,"verilog_hir":241,"zig":316},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/agent/swarm_agents.t27","category":"specs/tri","name":"swarm_agents","module":"SwarmAgents","lines":143,"bytes":5212,"description":"t27/specs/","health":"ok","tokens":494,"nodes":111,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3710,"rust":3822,"verilog":7397,"verilog_hir":251,"zig":2858},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":6,"EnumVariant":31,"StructDecl":10,"ExprIdentifier":57,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/agent","has/enums","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 10 structs and 6 enums. Carries 1 test. 143 lines compile to 494 tokens and 111 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 7.2 KB. Clean through every layer."},{"path":"specs/tri/collections/array.t27","category":"specs/tri","name":"array","module":"TriArray","lines":123,"bytes":5387,"description":"t27/specs/","health":"ok","tokens":588,"nodes":48,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2683,"rust":1068,"verilog":5184,"verilog_hir":782,"zig":3095},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":9,"TestBlock":6,"StmtExpr":23},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 9 functions and 2 structs. Carries 6 tests. 123 lines compile to 588 tokens and 48 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/tri/collections/bitmap.t27","category":"specs/tri","name":"bitmap","module":"TriBitmap","lines":101,"bytes":4201,"description":"t27/specs/","health":"ok","tokens":262,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2330,"rust":891,"verilog":3912,"verilog_hir":747,"zig":2006},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":10,"TestBlock":3,"StmtExpr":8},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 10 functions and 1 struct. Carries 3 tests. 101 lines compile to 262 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tri/collections/bitset.t27","category":"specs/tri","name":"bitset","module":"TriBitset","lines":97,"bytes":3588,"description":"t27/specs/","health":"warn","tokens":303,"nodes":42,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2294,"rust":719,"verilog":4169,"verilog_hir":647,"zig":1665},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":6,"TestBlock":8,"StmtExpr":21},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 8 tests. 97 lines compile to 303 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tri/collections/bitvector.t27","category":"specs/tri","name":"bitvector","module":"TriBitvector","lines":93,"bytes":4192,"description":"t27/specs/","health":"ok","tokens":360,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2308,"rust":829,"verilog":3809,"verilog_hir":738,"zig":2073},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":8,"TestBlock":3,"StmtExpr":13},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 1 struct. Carries 3 tests. 93 lines compile to 360 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/collections/btree.t27","category":"specs/tri","name":"btree","module":"TriBtree","lines":85,"bytes":4316,"description":"t27/specs/","health":"ok","tokens":364,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1943,"rust":662,"verilog":3786,"verilog_hir":507,"zig":2237},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":3,"TestBlock":4,"StmtExpr":13},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 4 tests. 85 lines compile to 364 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/collections/circular_buffer.t27","category":"specs/tri","name":"circular_buffer","module":"TriCircularBuffer","lines":79,"bytes":3676,"description":"t27/specs/","health":"ok","tokens":342,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2035,"rust":660,"verilog":3671,"verilog_hir":582,"zig":1953},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":5,"TestBlock":3,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 3 tests. 79 lines compile to 342 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/collections/context.t27","category":"specs/tri","name":"context","module":"TriContext","lines":16,"bytes":625,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":618,"rust":66,"verilog":1504,"verilog_hir":249,"zig":321},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/collections","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/collections/deque.t27","category":"specs/tri","name":"deque","module":"TriDeque","lines":77,"bytes":3243,"description":"t27/specs/","health":"ok","tokens":290,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1923,"rust":678,"verilog":3344,"verilog_hir":597,"zig":1618},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":6,"TestBlock":2,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 2 tests. 77 lines compile to 290 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/collections/either.t27","category":"specs/tri","name":"either","module":"TriEither","lines":75,"bytes":3222,"description":"t27/specs/","health":"ok","tokens":217,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1773,"rust":542,"verilog":3257,"verilog_hir":523,"zig":1550},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":5,"TestBlock":3,"StmtExpr":10},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 3 tests. 75 lines compile to 217 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/collections/interval.t27","category":"specs/tri","name":"interval","module":"TriInterval","lines":86,"bytes":4186,"description":"t27/specs/","health":"ok","tokens":393,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2033,"rust":595,"verilog":4210,"verilog_hir":517,"zig":2175},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":3,"TestBlock":6,"StmtExpr":15},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 6 tests. 86 lines compile to 393 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/collections/linked_list.t27","category":"specs/tri","name":"linked_list","module":"TriLinkedList","lines":84,"bytes":3032,"description":"t27/specs/","health":"ok","tokens":232,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2033,"rust":760,"verilog":3736,"verilog_hir":503,"zig":1359},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 2 structs. Carries 5 tests. 84 lines compile to 232 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/collections/list.t27","category":"specs/tri","name":"list","module":"TriList","lines":97,"bytes":3261,"description":"t27/specs/","health":"ok","tokens":263,"nodes":42,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1990,"rust":591,"verilog":3812,"verilog_hir":554,"zig":1480},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":7,"TestBlock":7,"StmtExpr":21},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 1 struct. Carries 7 tests. 97 lines compile to 263 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/collections/lockfree_stack.t27","category":"specs/tri","name":"lockfree_stack","module":"TriLockfreeStack","lines":70,"bytes":3118,"description":"t27/specs/","health":"ok","tokens":178,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1724,"rust":557,"verilog":2959,"verilog_hir":471,"zig":1157},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":3,"FnDecl":3,"TestBlock":3,"StmtExpr":8},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 70 lines compile to 178 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/collections/lru.t27","category":"specs/tri","name":"lru","module":"TriLru","lines":57,"bytes":2516,"description":"t27/specs/","health":"ok","tokens":195,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1716,"rust":534,"verilog":2905,"verilog_hir":501,"zig":1184},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 57 lines compile to 195 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/lru_cache.t27","category":"specs/tri","name":"lru_cache","module":"TriLruCache","lines":68,"bytes":2554,"description":"t27/specs/","health":"ok","tokens":194,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1715,"rust":700,"verilog":3245,"verilog_hir":477,"zig":1201},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":13,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 68 lines compile to 194 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/collections/map.t27","category":"specs/tri","name":"map","module":"TriMap","lines":73,"bytes":3019,"description":"t27/specs/","health":"ok","tokens":231,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1742,"rust":579,"verilog":3157,"verilog_hir":548,"zig":1531},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":6,"TestBlock":2,"StmtExpr":7},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 2 tests. 73 lines compile to 231 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/collections/maybe.t27","category":"specs/tri","name":"maybe","module":"TriMaybe","lines":81,"bytes":3955,"description":"t27/specs/","health":"ok","tokens":322,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1856,"rust":493,"verilog":3552,"verilog_hir":505,"zig":1951},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":4,"StmtExpr":14},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 81 lines compile to 322 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/collections/namespace.t27","category":"specs/tri","name":"namespace","module":"TriNamespace","lines":58,"bytes":2700,"description":"t27/specs/","health":"ok","tokens":172,"nodes":27,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1397,"rust":715,"verilog":2870,"verilog_hir":253,"zig":1030},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":6,"StructDecl":3,"ExprIdentifier":6,"TestBlock":2,"StmtExpr":4,"ExprCall":1,"ExprLiteral":1},"tags":["domain/collections","has/enums","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 structs and 1 enum. Carries 2 tests. 58 lines compile to 172 tokens and 27 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/option.t27","category":"specs/tri","name":"option","module":"TriOption","lines":79,"bytes":3504,"description":"t27/specs/","health":"ok","tokens":241,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1676,"rust":434,"verilog":3221,"verilog_hir":482,"zig":1547},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":4,"StmtExpr":13},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 79 lines compile to 241 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/collections/priority_queue.t27","category":"specs/tri","name":"priority_queue","module":"TriPriorityQueue","lines":78,"bytes":3380,"description":"t27/specs/","health":"ok","tokens":181,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1948,"rust":653,"verilog":3420,"verilog_hir":594,"zig":1411},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":6,"TestBlock":3,"StmtExpr":5},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 3 tests. 78 lines compile to 181 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/collections/queue.t27","category":"specs/tri","name":"queue","module":"TriQueue","lines":70,"bytes":2992,"description":"t27/specs/","health":"ok","tokens":196,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1675,"rust":482,"verilog":3081,"verilog_hir":465,"zig":1300},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":5,"TestBlock":3,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 3 tests. 70 lines compile to 196 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/collections/result.t27","category":"specs/tri","name":"result","module":"TriResult","lines":79,"bytes":3655,"description":"t27/specs/","health":"ok","tokens":292,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1778,"rust":467,"verilog":3719,"verilog_hir":513,"zig":1687},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":5,"StmtExpr":8},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 5 tests. 79 lines compile to 292 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/collections/ring_buffer.t27","category":"specs/tri","name":"ring_buffer","module":"TriRing","lines":101,"bytes":4905,"description":"t27/specs/","health":"ok","tokens":537,"nodes":42,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2075,"rust":550,"verilog":4370,"verilog_hir":501,"zig":2590},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":5,"TestBlock":6,"StmtExpr":23},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 6 tests. 101 lines compile to 537 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Clean through every layer."},{"path":"specs/tri/collections/set.t27","category":"specs/tri","name":"set","module":"TriSet","lines":65,"bytes":2723,"description":"t27/specs/","health":"ok","tokens":211,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1832,"rust":548,"verilog":3133,"verilog_hir":525,"zig":1235},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 211 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/collections/skip_list.t27","category":"specs/tri","name":"skip_list","module":"TriSkipList","lines":69,"bytes":3150,"description":"t27/specs/","health":"ok","tokens":226,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1837,"rust":667,"verilog":3281,"verilog_hir":483,"zig":1601},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 69 lines compile to 226 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/collections/stack.t27","category":"specs/tri","name":"stack","module":"TriStack","lines":71,"bytes":3014,"description":"t27/specs/","health":"ok","tokens":235,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1657,"rust":453,"verilog":2994,"verilog_hir":458,"zig":1302},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":5,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 3 tests. 71 lines compile to 235 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/collections/state.t27","category":"specs/tri","name":"state","module":"TriState","lines":65,"bytes":2474,"description":"t27/specs/","health":"ok","tokens":183,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1607,"rust":418,"verilog":2956,"verilog_hir":475,"zig":1100},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 183 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/collections/tuple.t27","category":"specs/tri","name":"tuple","module":"TriTuple","lines":72,"bytes":2619,"description":"t27/specs/","health":"ok","tokens":217,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1675,"rust":574,"verilog":3241,"verilog_hir":495,"zig":1370},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 72 lines compile to 217 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/collections/variant.t27","category":"specs/tri","name":"variant","module":"TriVariant","lines":63,"bytes":2922,"description":"t27/specs/","health":"ok","tokens":192,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1660,"rust":427,"verilog":3289,"verilog_hir":483,"zig":1374},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":4,"StmtExpr":7},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 4 tests. 63 lines compile to 192 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/crypto/base32.t27","category":"specs/tri","name":"base32","module":"TriBase32","lines":78,"bytes":4129,"description":"t27/specs/","health":"ok","tokens":323,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1959,"rust":493,"verilog":3805,"verilog_hir":456,"zig":2088},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":5,"StmtExpr":18},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 5 tests. 78 lines compile to 323 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/crypto/base64.t27","category":"specs/tri","name":"base64","module":"TriBase64","lines":97,"bytes":4954,"description":"t27/specs/","health":"ok","tokens":380,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2378,"rust":705,"verilog":4641,"verilog_hir":622,"zig":2703},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":6,"TestBlock":6,"StmtExpr":19},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 97 lines compile to 380 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/tri/crypto/crypto.t27","category":"specs/tri","name":"crypto","module":"TriCrypto","lines":56,"bytes":2500,"description":"t27/specs/","health":"ok","tokens":165,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1710,"rust":513,"verilog":2912,"verilog_hir":492,"zig":992},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 165 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/crypto/ecc.t27","category":"specs/tri","name":"ecc","module":"TriEcc","lines":89,"bytes":4348,"description":"t27/specs/","health":"ok","tokens":428,"nodes":35,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1960,"rust":602,"verilog":3918,"verilog_hir":460,"zig":1989},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":3,"TestBlock":5,"StmtExpr":17},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 5 tests. 89 lines compile to 428 tokens and 35 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tri/crypto/hex.t27","category":"specs/tri","name":"hex","module":"TriHex","lines":64,"bytes":2929,"description":"t27/specs/","health":"ok","tokens":160,"nodes":18,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1670,"rust":489,"verilog":2824,"verilog_hir":494,"zig":1127},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":2,"StmtExpr":7},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 2 tests. 64 lines compile to 160 tokens and 18 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/crypto/hmac.t27","category":"specs/tri","name":"hmac","module":"TriHmac","lines":56,"bytes":2274,"description":"t27/specs/","health":"ok","tokens":139,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1487,"rust":392,"verilog":2695,"verilog_hir":440,"zig":818},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 139 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/crypto/reed_solomon.t27","category":"specs/tri","name":"reed_solomon","module":"TriReedSolomon","lines":46,"bytes":2205,"description":"t27/specs/","health":"ok","tokens":124,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1542,"rust":425,"verilog":2540,"verilog_hir":463,"zig":806},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 124 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tri/crypto/rsa.t27","category":"specs/tri","name":"rsa","module":"TriRsa","lines":83,"bytes":4009,"description":"t27/specs/","health":"ok","tokens":289,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2009,"rust":499,"verilog":3984,"verilog_hir":570,"zig":1984},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":3,"TestBlock":5,"StmtExpr":17},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 5 tests. 83 lines compile to 289 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tri/crypto/sha256.t27","category":"specs/tri","name":"sha256","module":"TriSha256","lines":67,"bytes":2952,"description":"t27/specs/","health":"ok","tokens":160,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1644,"rust":470,"verilog":3108,"verilog_hir":452,"zig":1153},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":3,"StmtExpr":6},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 3 tests. 67 lines compile to 160 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/encoding/bson.t27","category":"specs/tri","name":"bson","module":"TriBson","lines":70,"bytes":3544,"description":"t27/specs/","health":"ok","tokens":196,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2013,"rust":598,"verilog":3563,"verilog_hir":411,"zig":1386},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":11,"StructDecl":1,"FnDecl":2,"TestBlock":3,"StmtExpr":10},"tags":["domain/encoding","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 enum. Carries 3 tests. 70 lines compile to 196 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/encoding/csv.t27","category":"specs/tri","name":"csv","module":"TriCsv","lines":72,"bytes":3155,"description":"t27/specs/","health":"ok","tokens":151,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1675,"rust":596,"verilog":3131,"verilog_hir":445,"zig":1153},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":4,"TestBlock":3,"StmtExpr":4},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 3 tests. 72 lines compile to 151 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/encoding/html.t27","category":"specs/tri","name":"html","module":"TriHtml","lines":48,"bytes":2223,"description":"t27/specs/","health":"warn","tokens":136,"nodes":3,"depth":2,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":202},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/encoding","has/imports","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 48 lines compile to 136 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tri/encoding/json.t27","category":"specs/tri","name":"json","module":"TriJson","lines":67,"bytes":2655,"description":"t27/specs/","health":"ok","tokens":199,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2025,"rust":869,"verilog":3312,"verilog_hir":504,"zig":1150},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":3,"EnumDecl":1,"EnumVariant":6,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/encoding","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 3 structs and 1 enum. Carries 3 tests. 67 lines compile to 199 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/encoding/markup.t27","category":"specs/tri","name":"markup","module":"TriMarkup","lines":53,"bytes":2716,"description":"t27/specs/","health":"ok","tokens":143,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1584,"rust":466,"verilog":2767,"verilog_hir":419,"zig":1078},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":2,"TestBlock":2,"StmtExpr":5},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 53 lines compile to 143 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/encoding/mime.t27","category":"specs/tri","name":"mime","module":"TriMime","lines":57,"bytes":2794,"description":"t27/specs/","health":"ok","tokens":193,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1588,"rust":456,"verilog":2925,"verilog_hir":409,"zig":1251},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":2,"TestBlock":3,"StmtExpr":7},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 3 tests. 57 lines compile to 193 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/encoding/msgpack.t27","category":"specs/tri","name":"msgpack","module":"TriMsgpack","lines":93,"bytes":4485,"description":"t27/specs/","health":"ok","tokens":324,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2447,"rust":815,"verilog":4806,"verilog_hir":417,"zig":2346},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":9,"StructDecl":1,"ExprIdentifier":8,"FnDecl":2,"TestBlock":6,"StmtExpr":23},"tags":["domain/encoding","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 enum. Carries 6 tests. 93 lines compile to 324 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.7 KB. Clean through every layer."},{"path":"specs/tri/encoding/xml.t27","category":"specs/tri","name":"xml","module":"TriXml","lines":48,"bytes":2195,"description":"t27/specs/","health":"warn","tokens":139,"nodes":3,"depth":2,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":392,"rust":66,"verilog":1043,"verilog_hir":241,"zig":201},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/encoding","has/imports","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 48 lines compile to 139 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tri/graph/bellman_ford.t27","category":"specs/tri","name":"bellman_ford","module":"TriBellmanFord","lines":37,"bytes":1918,"description":"t27/specs/","health":"ok","tokens":85,"nodes":12,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1380,"rust":348,"verilog":2252,"verilog_hir":432,"zig":621},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 37 lines compile to 85 tokens and 12 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/tri/graph/dijkstra.t27","category":"specs/tri","name":"dijkstra","module":"TriDijkstra","lines":38,"bytes":1854,"description":"t27/specs/","health":"ok","tokens":77,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1266,"rust":318,"verilog":2209,"verilog_hir":325,"zig":567},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 38 lines compile to 77 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/tri/graph/disjoint_set.t27","category":"specs/tri","name":"disjoint_set","module":"TriDisjointSet","lines":93,"bytes":4626,"description":"t27/specs/","health":"ok","tokens":379,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2000,"rust":535,"verilog":3810,"verilog_hir":508,"zig":2203},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":21},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 93 lines compile to 379 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/graph/graph.t27","category":"specs/tri","name":"graph","module":"TriGraph","lines":61,"bytes":2379,"description":"t27/specs/","health":"ok","tokens":162,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1564,"rust":520,"verilog":2782,"verilog_hir":418,"zig":978},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 61 lines compile to 162 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/graph/graph_bfs.t27","category":"specs/tri","name":"graph_bfs","module":"TriGraphBfs","lines":113,"bytes":5554,"description":"t27/specs/","health":"ok","tokens":700,"nodes":56,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2338,"rust":745,"verilog":4358,"verilog_hir":591,"zig":3236},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":4,"TestBlock":6,"StmtExpr":36},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 6 tests. 113 lines compile to 700 tokens and 56 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Clean through every layer."},{"path":"specs/tri/graph/graph_dfs.t27","category":"specs/tri","name":"graph_dfs","module":"TriGraphDfs","lines":38,"bytes":1808,"description":"t27/specs/","health":"ok","tokens":76,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1250,"rust":312,"verilog":2150,"verilog_hir":320,"zig":556},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 38 lines compile to 76 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/tri/graph/prims_mst.t27","category":"specs/tri","name":"prims_mst","module":"TriPrimsMst","lines":38,"bytes":1795,"description":"t27/specs/","health":"ok","tokens":74,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1234,"rust":299,"verilog":2127,"verilog_hir":315,"zig":541},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 38 lines compile to 74 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/tri/graph/topological_sort.t27","category":"specs/tri","name":"topological_sort","module":"TriTopological","lines":47,"bytes":2082,"description":"t27/specs/","health":"ok","tokens":101,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1396,"rust":342,"verilog":2406,"verilog_hir":393,"zig":704},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 47 lines compile to 101 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tri/io/compress.t27","category":"specs/tri","name":"compress","module":"TriCompress","lines":58,"bytes":3115,"description":"t27/specs/","health":"ok","tokens":223,"nodes":19,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1663,"rust":415,"verilog":3104,"verilog_hir":431,"zig":1284},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":3,"StmtExpr":8},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 3 tests. 58 lines compile to 223 tokens and 19 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/io/filesystem.t27","category":"specs/tri","name":"filesystem","module":"TriFilesystem","lines":113,"bytes":5345,"description":"t27/specs/","health":"ok","tokens":489,"nodes":42,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2706,"rust":1046,"verilog":5060,"verilog_hir":636,"zig":2719},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":5,"StructDecl":1,"ExprIdentifier":5,"FnDecl":7,"TestBlock":6,"StmtExpr":14},"tags":["domain/storage","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions, 1 struct and 1 enum. Carries 6 tests. 113 lines compile to 489 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"specs/tri/io/fs.t27","category":"specs/tri","name":"fs","module":"TriFs","lines":73,"bytes":2757,"description":"t27/specs/","health":"ok","tokens":203,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1817,"rust":684,"verilog":3356,"verilog_hir":517,"zig":1168},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 73 lines compile to 203 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/io/io.t27","category":"specs/tri","name":"io","module":"TriIo","lines":67,"bytes":3086,"description":"t27/specs/","health":"ok","tokens":250,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1644,"rust":449,"verilog":3139,"verilog_hir":468,"zig":1463},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":3,"StmtExpr":9},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 3 tests. 67 lines compile to 250 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/io/reader.t27","category":"specs/tri","name":"reader","module":"TriReader","lines":65,"bytes":2550,"description":"t27/specs/","health":"ok","tokens":193,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1666,"rust":445,"verilog":2985,"verilog_hir":478,"zig":1156},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 193 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/io/writer.t27","category":"specs/tri","name":"writer","module":"TriWriter","lines":66,"bytes":2628,"description":"t27/specs/","health":"ok","tokens":200,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1721,"rust":485,"verilog":3106,"verilog_hir":513,"zig":1221},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 66 lines compile to 200 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/io/zip.t27","category":"specs/tri","name":"zip","module":"TriZipper","lines":77,"bytes":2847,"description":"t27/specs/","health":"ok","tokens":203,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1821,"rust":525,"verilog":3330,"verilog_hir":471,"zig":1219},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 5 tests. 77 lines compile to 203 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/math/bezier.t27","category":"specs/tri","name":"bezier","module":"TriBezier","lines":75,"bytes":3811,"description":"t27/specs/","health":"ok","tokens":423,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1735,"rust":488,"verilog":3446,"verilog_hir":384,"zig":1817},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":2,"TestBlock":4,"StmtExpr":15},"tags":["domain/math","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 2 structs. Carries 4 tests. 75 lines compile to 423 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tri/math/constants.t27","category":"specs/tri","name":"constants","module":"TriConstants","lines":128,"bytes":5390,"description":"t27/specs/","health":"ok","tokens":392,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2606,"rust":1120,"verilog":5046,"verilog_hir":778,"zig":2979},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":10,"FnDecl":12,"TestBlock":4,"StmtExpr":13},"tags":["domain/math","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 12 functions and 2 structs. Carries 4 tests. 128 lines compile to 392 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"specs/tri/math/math.t27","category":"specs/tri","name":"math","module":"TriMath","lines":16,"bytes":619,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":603,"rust":66,"verilog":1486,"verilog_hir":243,"zig":315},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/math","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/math/matrix.t27","category":"specs/tri","name":"matrix","module":"TriMatrix","lines":96,"bytes":4182,"description":"t27/specs/","health":"ok","tokens":350,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2496,"rust":856,"verilog":4568,"verilog_hir":796,"zig":2393},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":7,"TestBlock":5,"StmtExpr":16},"tags":["domain/math","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 1 struct. Carries 5 tests. 96 lines compile to 350 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/tri/math/measurement.t27","category":"specs/tri","name":"measurement","module":"TriMeasurement","lines":16,"bytes":633,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":638,"rust":66,"verilog":1528,"verilog_hir":257,"zig":329},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/math","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/math/polynomial.t27","category":"specs/tri","name":"polynomial","module":"TriPolynomial","lines":80,"bytes":3851,"description":"t27/specs/","health":"ok","tokens":327,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2198,"rust":761,"verilog":3621,"verilog_hir":650,"zig":1877},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":6,"TestBlock":3,"StmtExpr":11},"tags":["domain/math","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 3 tests. 80 lines compile to 327 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/math/probability.t27","category":"specs/tri","name":"probability","module":"TriProbability","lines":67,"bytes":2602,"description":"t27/specs/","health":"ok","tokens":218,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1866,"rust":504,"verilog":3352,"verilog_hir":623,"zig":1315},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/math","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions. Carries 5 tests. 67 lines compile to 218 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/math/statistics.t27","category":"specs/tri","name":"statistics","module":"TriStatistics","lines":77,"bytes":2735,"description":"t27/specs/","health":"ok","tokens":233,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1856,"rust":518,"verilog":3610,"verilog_hir":635,"zig":1385},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/math","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions. Carries 6 tests. 77 lines compile to 233 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/net/async.t27","category":"specs/tri","name":"async","module":"TriAsync","lines":86,"bytes":3896,"description":"t27/specs/","health":"ok","tokens":286,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1777,"rust":571,"verilog":3369,"verilog_hir":461,"zig":1737},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 86 lines compile to 286 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/net/async_stream.t27","category":"specs/tri","name":"async_stream","module":"TriAsyncStream","lines":86,"bytes":4087,"description":"t27/specs/","health":"ok","tokens":278,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2151,"rust":627,"verilog":4029,"verilog_hir":521,"zig":1858},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"EnumDecl":1,"EnumVariant":3,"FnDecl":3,"TestBlock":5,"StmtExpr":13},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 enum. Carries 5 tests. 86 lines compile to 278 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tri/net/channel.t27","category":"specs/tri","name":"channel","module":"TriChannel","lines":67,"bytes":2629,"description":"t27/specs/","health":"ok","tokens":177,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1736,"rust":511,"verilog":3165,"verilog_hir":489,"zig":1161},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 67 lines compile to 177 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/net/cloud.t27","category":"specs/tri","name":"cloud","module":"TriCloud","lines":16,"bytes":621,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":608,"rust":66,"verilog":1492,"verilog_hir":245,"zig":317},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/network","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/net/http.t27","category":"specs/tri","name":"http","module":"TriHttp","lines":133,"bytes":6147,"description":"t27/specs/","health":"ok","tokens":572,"nodes":60,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2777,"rust":1131,"verilog":4906,"verilog_hir":656,"zig":3261},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":7,"StructDecl":2,"ExprIdentifier":8,"FnDecl":7,"TestBlock":5,"StmtExpr":27},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions, 2 structs and 1 enum. Carries 5 tests. 133 lines compile to 572 tokens and 60 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.8 KB. Clean through every layer."},{"path":"specs/tri/net/net.t27","category":"specs/tri","name":"net","module":"TriNet","lines":71,"bytes":3117,"description":"t27/specs/","health":"ok","tokens":339,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1694,"rust":532,"verilog":3198,"verilog_hir":415,"zig":1639},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":14},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 71 lines compile to 339 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/net/url.t27","category":"specs/tri","name":"url","module":"TriUrl","lines":83,"bytes":4112,"description":"t27/specs/","health":"ok","tokens":419,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2093,"rust":701,"verilog":3951,"verilog_hir":550,"zig":2075},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":6,"FnDecl":4,"TestBlock":5,"StmtExpr":12},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 5 tests. 83 lines compile to 419 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tri/pipeline/batch_runner.t27","category":"specs/tri","name":"batch_runner","module":"BatchRunner","lines":115,"bytes":4376,"description":"t27/specs/","health":"ok","tokens":309,"nodes":55,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3088,"rust":1528,"verilog":4194,"verilog_hir":251,"zig":2707},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":2,"EnumVariant":11,"StructDecl":5,"ExprIdentifier":23,"InvariantBlock":11},"tags":["domain/pipeline","has/enums","has/imports","has/invariants","has/structs","health/ok","size/small","src/t27"],"summary":"Declares 5 structs and 2 enums. Carries 11 invariants. 115 lines compile to 309 tokens and 55 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/pipeline/builder.t27","category":"specs/tri","name":"builder","module":"TriBuilder","lines":107,"bytes":3957,"description":"t27/specs/","health":"ok","tokens":353,"nodes":47,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2588,"rust":886,"verilog":4598,"verilog_hir":711,"zig":2043},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":8,"TestBlock":8,"StmtExpr":24},"tags":["domain/pipeline","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 1 struct. Carries 8 tests. 107 lines compile to 353 tokens and 47 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/tri/pipeline/cloud_orchestrator.t27","category":"specs/tri","name":"cloud_orchestrator","module":"CloudOrchestrator","lines":16,"bytes":643,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":657,"rust":66,"verilog":1562,"verilog_hir":263,"zig":339},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/pipeline/codegen.t27","category":"specs/tri","name":"codegen","module":"TestSpec","lines":27,"bytes":1147,"description":"t27/specs/","health":"ok","tokens":47,"nodes":12,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":845,"rust":244,"verilog":1914,"verilog_hir":245,"zig":435},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. Carries 1 test. 27 lines compile to 47 tokens and 12 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/tri/pipeline/pipeline.t27","category":"specs/tri","name":"pipeline","module":"TriPipeline","lines":16,"bytes":627,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":623,"rust":66,"verilog":1510,"verilog_hir":251,"zig":323},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/pipeline/pipeline_parallel.t27","category":"specs/tri","name":"pipeline_parallel","module":"TriPipelineParallel","lines":50,"bytes":1900,"description":"t27/specs/","health":"ok","tokens":143,"nodes":33,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1532,"rust":913,"verilog":3101,"verilog_hir":267,"zig":882},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":5,"StructDecl":3,"ExprIdentifier":17,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/enums","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 structs and 1 enum. Carries 1 test. 50 lines compile to 143 tokens and 33 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/spec_parser.t27","category":"specs/tri","name":"spec_parser","module":"TriSpecParser","lines":16,"bytes":632,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":634,"rust":66,"verilog":1526,"verilog_hir":255,"zig":328},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/pipeline/spec_writer.t27","category":"specs/tri","name":"spec_writer","module":"SpecWriter","lines":46,"bytes":1622,"description":"t27/specs/","health":"ok","tokens":141,"nodes":23,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1224,"rust":901,"verilog":2502,"verilog_hir":249,"zig":819},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":5,"ExprIdentifier":11,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 5 structs. Carries 1 test. 46 lines compile to 141 tokens and 23 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/pipeline/workflow.t27","category":"specs/tri","name":"workflow","module":"Workflow","lines":31,"bytes":1263,"description":"t27/specs/","health":"ok","tokens":72,"nodes":14,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":942,"rust":408,"verilog":2020,"verilog_hir":245,"zig":536},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 structs. Carries 1 test. 31 lines compile to 72 tokens and 14 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/workflow_executor.t27","category":"specs/tri","name":"workflow_executor","module":"WorkflowExecutor","lines":16,"bytes":641,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":652,"rust":66,"verilog":1556,"verilog_hir":261,"zig":337},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/pipeline/workflow_parser.t27","category":"specs/tri","name":"workflow_parser","module":"WorkflowParser","lines":16,"bytes":637,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":642,"rust":66,"verilog":1544,"verilog_hir":257,"zig":333},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/pipeline","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/search/aho_corasick.t27","category":"specs/tri","name":"aho_corasick","module":"TriAhoCorasick","lines":99,"bytes":4285,"description":"t27/specs/","health":"ok","tokens":317,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2240,"rust":768,"verilog":4593,"verilog_hir":529,"zig":2164},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":4,"TestBlock":7,"StmtExpr":18},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 7 tests. 99 lines compile to 317 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/tri/search/bloom_filter.t27","category":"specs/tri","name":"bloom_filter","module":"TriBloomFilter","lines":58,"bytes":2868,"description":"t27/specs/","health":"ok","tokens":147,"nodes":18,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1641,"rust":487,"verilog":2812,"verilog_hir":485,"zig":1155},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":3,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 2 tests. 58 lines compile to 147 tokens and 18 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/search/boyer_moore.t27","category":"specs/tri","name":"boyer_moore","module":"TriBoyerMoore","lines":72,"bytes":3868,"description":"t27/specs/","health":"ok","tokens":240,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1783,"rust":413,"verilog":3566,"verilog_hir":432,"zig":1639},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":4,"StmtExpr":13},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 4 tests. 72 lines compile to 240 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/search/knuth_morris_pratt.t27","category":"specs/tri","name":"knuth_morris_pratt","module":"TriKmp","lines":85,"bytes":4347,"description":"t27/specs/","health":"ok","tokens":332,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1769,"rust":420,"verilog":3337,"verilog_hir":448,"zig":1947},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":4,"StmtExpr":22},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 4 tests. 85 lines compile to 332 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/search/match.t27","category":"specs/tri","name":"match","module":null,"lines":68,"bytes":3333,"description":"t27/specs/","health":"warn","tokens":187,"nodes":1,"depth":1,"loss":14,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/collections","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. 68 lines compile to 187 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 14 items dropped by error recovery."},{"path":"specs/tri/search/pattern.t27","category":"specs/tri","name":"pattern","module":"TriPattern","lines":61,"bytes":3040,"description":"t27/specs/","health":"ok","tokens":197,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1558,"rust":402,"verilog":2849,"verilog_hir":385,"zig":1273},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":3,"StmtExpr":10},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 3 tests. 61 lines compile to 197 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/search/rabin_karp.t27","category":"specs/tri","name":"rabin_karp","module":"TriRabinKarp","lines":73,"bytes":3867,"description":"t27/specs/","health":"ok","tokens":269,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1722,"rust":405,"verilog":3651,"verilog_hir":417,"zig":1632},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":2,"TestBlock":5,"StmtExpr":10},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 5 tests. 73 lines compile to 269 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/search/regex.t27","category":"specs/tri","name":"regex","module":"TriRegex","lines":91,"bytes":4367,"description":"t27/specs/","health":"ok","tokens":424,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2126,"rust":664,"verilog":4243,"verilog_hir":485,"zig":2310},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":3,"TestBlock":6,"StmtExpr":22},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 6 tests. 91 lines compile to 424 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/search/regex_advanced.t27","category":"specs/tri","name":"regex_advanced","module":"TriRegexAdvanced","lines":62,"bytes":2766,"description":"t27/specs/","health":"ok","tokens":209,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2132,"rust":781,"verilog":3388,"verilog_hir":566,"zig":1244},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":1,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 enum. Carries 3 tests. 62 lines compile to 209 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/search/search.t27","category":"specs/tri","name":"search","module":"TriSearch","lines":63,"bytes":3032,"description":"t27/specs/","health":"ok","tokens":214,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1632,"rust":452,"verilog":3008,"verilog_hir":487,"zig":1341},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 63 lines compile to 214 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/sort/counting_sort.t27","category":"specs/tri","name":"counting_sort","module":"TriCountingSort","lines":27,"bytes":1352,"description":"t27/specs/","health":"ok","tokens":61,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1111,"rust":180,"verilog":1856,"verilog_hir":391,"zig":491},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 61 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/tri/sort/heap_sort.t27","category":"specs/tri","name":"heap_sort","module":"TriHeapSort","lines":27,"bytes":1258,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1001,"rust":124,"verilog":1757,"verilog_hir":317,"zig":398},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/insertion_sort.t27","category":"specs/tri","name":"insertion_sort","module":"TriInsertionSort","lines":27,"bytes":1262,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1021,"rust":124,"verilog":1767,"verilog_hir":327,"zig":403},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/merge_sort.t27","category":"specs/tri","name":"merge_sort","module":"TriMergeSort","lines":37,"bytes":1665,"description":"t27/specs/","health":"ok","tokens":97,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1297,"rust":257,"verilog":2196,"verilog_hir":398,"zig":681},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions. Carries 2 tests. 37 lines compile to 97 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/tri/sort/quick_sort.t27","category":"specs/tri","name":"quick_sort","module":"TriQuickSort","lines":41,"bytes":1923,"description":"t27/specs/","health":"ok","tokens":87,"nodes":11,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1225,"rust":213,"verilog":2232,"verilog_hir":418,"zig":747},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":2,"TestBlock":2,"StmtExpr":4},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions. Carries 2 tests. 41 lines compile to 87 tokens and 11 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/tri/sort/radix_sort.t27","category":"specs/tri","name":"radix_sort","module":"TriRadixSort","lines":56,"bytes":2879,"description":"t27/specs/","health":"ok","tokens":154,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1589,"rust":401,"verilog":2915,"verilog_hir":398,"zig":1212},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":3,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 3 tests. 56 lines compile to 154 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/sort/selection_sort.t27","category":"specs/tri","name":"selection_sort","module":"TriSelectionSort","lines":27,"bytes":1247,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1021,"rust":124,"verilog":1767,"verilog_hir":327,"zig":403},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/shell_sort.t27","category":"specs/tri","name":"shell_sort","module":"TriShellSort","lines":27,"bytes":1257,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1005,"rust":124,"verilog":1759,"verilog_hir":319,"zig":399},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/sort.t27","category":"specs/tri","name":"sort","module":"TriSort","lines":57,"bytes":3188,"description":"t27/specs/","health":"ok","tokens":164,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1621,"rust":441,"verilog":2742,"verilog_hir":442,"zig":1239},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":2,"FnDecl":2,"TestBlock":2,"StmtExpr":7},"tags":["domain/collections","has/enums","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 1 enum. Carries 2 tests. 57 lines compile to 164 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/sort/tim_sort.t27","category":"specs/tri","name":"tim_sort","module":"TriTimSort","lines":27,"bytes":1311,"description":"t27/specs/","health":"ok","tokens":55,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1055,"rust":154,"verilog":1787,"verilog_hir":349,"zig":447},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 55 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/trees/avl_tree.t27","category":"specs/tri","name":"avl_tree","module":"TriAvlTree","lines":76,"bytes":2769,"description":"t27/specs/","health":"ok","tokens":216,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1834,"rust":720,"verilog":3548,"verilog_hir":477,"zig":1278},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":11,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 76 lines compile to 216 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/trees/b_tree.t27","category":"specs/tri","name":"b_tree","module":"TriBTree","lines":96,"bytes":4616,"description":"t27/specs/","health":"ok","tokens":329,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2036,"rust":714,"verilog":3943,"verilog_hir":514,"zig":2180},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":4,"TestBlock":4,"StmtExpr":17},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 96 lines compile to 329 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tri/trees/fenwick_tree.t27","category":"specs/tri","name":"fenwick_tree","module":"TriFenwick","lines":101,"bytes":4544,"description":"t27/specs/","health":"ok","tokens":356,"nodes":39,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2474,"rust":756,"verilog":4709,"verilog_hir":740,"zig":2431},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":6,"TestBlock":6,"StmtExpr":20},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 101 lines compile to 356 tokens and 39 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/tri/trees/kd_tree.t27","category":"specs/tri","name":"kd_tree","module":"TriKdTree","lines":89,"bytes":3998,"description":"t27/specs/","health":"ok","tokens":250,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1993,"rust":837,"verilog":3443,"verilog_hir":646,"zig":1555},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":5,"TestBlock":2,"StmtExpr":7},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 2 structs. Carries 2 tests. 89 lines compile to 250 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tri/trees/octree.t27","category":"specs/tri","name":"octree","module":"TriOctree","lines":103,"bytes":4639,"description":"t27/specs/","health":"ok","tokens":478,"nodes":42,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2109,"rust":985,"verilog":3925,"verilog_hir":627,"zig":2203},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":14,"FnDecl":4,"TestBlock":4,"StmtExpr":14},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 3 structs. Carries 4 tests. 103 lines compile to 478 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tri/trees/quadtree.t27","category":"specs/tri","name":"quadtree","module":"TriQuadtree","lines":110,"bytes":5036,"description":"t27/specs/","health":"ok","tokens":563,"nodes":47,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2288,"rust":956,"verilog":4580,"verilog_hir":608,"zig":2512},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":12,"FnDecl":4,"TestBlock":6,"StmtExpr":19},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 3 structs. Carries 6 tests. 110 lines compile to 563 tokens and 47 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/tri/trees/red_black_tree.t27","category":"specs/tri","name":"red_black_tree","module":"TriRbTree","lines":81,"bytes":2892,"description":"t27/specs/","health":"ok","tokens":238,"nodes":40,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2023,"rust":861,"verilog":3788,"verilog_hir":475,"zig":1343},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":12,"EnumDecl":1,"EnumVariant":2,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 2 structs and 1 enum. Carries 4 tests. 81 lines compile to 238 tokens and 40 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/trees/rtree.t27","category":"specs/tri","name":"rtree","module":"TriRtree","lines":88,"bytes":3876,"description":"t27/specs/","health":"ok","tokens":370,"nodes":35,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1955,"rust":776,"verilog":3913,"verilog_hir":519,"zig":1878},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":9,"FnDecl":3,"TestBlock":5,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 3 structs. Carries 5 tests. 88 lines compile to 370 tokens and 35 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tri/trees/segment_tree.t27","category":"specs/tri","name":"segment_tree","module":"TriSegmentTree","lines":67,"bytes":3238,"description":"t27/specs/","health":"ok","tokens":235,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1848,"rust":581,"verilog":3096,"verilog_hir":632,"zig":1449},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":2,"StmtExpr":8},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 2 tests. 67 lines compile to 235 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/trees/splay_tree.t27","category":"specs/tri","name":"splay_tree","module":"TriSplayTree","lines":76,"bytes":2802,"description":"t27/specs/","health":"ok","tokens":217,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1860,"rust":740,"verilog":3595,"verilog_hir":481,"zig":1300},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":11,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 76 lines compile to 217 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/trees/suffix_array.t27","category":"specs/tri","name":"suffix_array","module":"TriSuffixArray","lines":83,"bytes":4311,"description":"t27/specs/","health":"ok","tokens":479,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1963,"rust":494,"verilog":3823,"verilog_hir":491,"zig":2269},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":5,"StmtExpr":19},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 5 tests. 83 lines compile to 479 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/trees/tree.t27","category":"specs/tri","name":"tree","module":"TriTree","lines":85,"bytes":3768,"description":"t27/specs/","health":"ok","tokens":210,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1774,"rust":610,"verilog":3231,"verilog_hir":580,"zig":1421},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":6,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 2 tests. 85 lines compile to 210 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/trees/trie.t27","category":"specs/tri","name":"trie","module":"TriTrie","lines":93,"bytes":4263,"description":"t27/specs/","health":"ok","tokens":371,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1924,"rust":743,"verilog":3272,"verilog_hir":509,"zig":1986},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":6,"TestBlock":3,"StmtExpr":11},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 2 structs. Carries 3 tests. 93 lines compile to 371 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/utils/args.t27","category":"specs/tri","name":"args","module":null,"lines":86,"bytes":4133,"description":"t27/specs/","health":"warn","tokens":329,"nodes":1,"depth":1,"loss":21,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/utils","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. 86 lines compile to 329 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 21 items dropped by error recovery."},{"path":"specs/tri/utils/arrow_time.t27","category":"specs/tri","name":"arrow_time","module":"arrow_time","lines":16,"bytes":627,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":621,"rust":66,"verilog":1516,"verilog_hir":249,"zig":324},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/utils","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/utils/bytes.t27","category":"specs/tri","name":"bytes","module":"TriBytes","lines":106,"bytes":3875,"description":"t27/specs/","health":"ok","tokens":330,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2500,"rust":836,"verilog":4600,"verilog_hir":813,"zig":1925},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":8,"TestBlock":8,"StmtExpr":24},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 1 struct. Carries 8 tests. 106 lines compile to 330 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/tri/utils/color.t27","category":"specs/tri","name":"color","module":"TriColor","lines":95,"bytes":4563,"description":"t27/specs/","health":"ok","tokens":374,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2073,"rust":583,"verilog":3816,"verilog_hir":582,"zig":2237},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"EnumDecl":1,"EnumVariant":4,"FnDecl":3,"TestBlock":4,"StmtExpr":21},"tags":["domain/utils","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 enum. Carries 4 tests. 95 lines compile to 374 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/utils/colors.t27","category":"specs/tri","name":"colors","module":"TriColors","lines":16,"bytes":623,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":613,"rust":66,"verilog":1498,"verilog_hir":247,"zig":319},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/utils","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/utils/config.t27","category":"specs/tri","name":"config","module":"TriConfig","lines":89,"bytes":4082,"description":"t27/specs/","health":"ok","tokens":302,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2219,"rust":959,"verilog":4213,"verilog_hir":636,"zig":2083},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":8,"FnDecl":4,"TestBlock":5,"StmtExpr":10},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 3 structs. Carries 5 tests. 89 lines compile to 302 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/utils/error.t27","category":"specs/tri","name":"error","module":"TriError","lines":26,"bytes":1415,"description":"t27/specs/","health":"ok","tokens":53,"nodes":17,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1031,"rust":355,"verilog":2061,"verilog_hir":245,"zig":531},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":9,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/utils","has/enums","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 enum. Carries 1 test. 26 lines compile to 53 tokens and 17 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/tri/utils/exit_codes.t27","category":"specs/tri","name":"exit_codes","module":"TriExitCodes","lines":35,"bytes":1562,"description":"t27/specs/","health":"ok","tokens":66,"nodes":16,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1035,"rust":347,"verilog":2025,"verilog_hir":253,"zig":536},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":8,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/utils","has/enums","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 enum. Carries 1 test. 35 lines compile to 66 tokens and 16 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/tri/utils/help.t27","category":"specs/tri","name":"help","module":"TriHelp","lines":32,"bytes":1370,"description":"t27/specs/","health":"ok","tokens":74,"nodes":15,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":971,"rust":444,"verilog":2076,"verilog_hir":243,"zig":561},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/utils","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 structs. Carries 1 test. 32 lines compile to 74 tokens and 15 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/tri/utils/logger.t27","category":"specs/tri","name":"logger","module":null,"lines":66,"bytes":2659,"description":"t27/specs/","health":"warn","tokens":204,"nodes":32,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1999,"rust":828,"verilog":3359,"verilog_hir":598,"zig":1179},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":6,"StructDecl":2,"ExprIdentifier":5,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/utils","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 1 enum. Carries 3 tests. 66 lines compile to 204 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tri/utils/logging.t27","category":"specs/tri","name":"logging","module":"TriLogging","lines":102,"bytes":5075,"description":"t27/specs/","health":"ok","tokens":399,"nodes":40,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2353,"rust":828,"verilog":4169,"verilog_hir":655,"zig":2494},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":4,"StructDecl":1,"ExprIdentifier":4,"FnDecl":5,"TestBlock":4,"StmtExpr":18},"tags":["domain/utils","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions, 1 struct and 1 enum. Carries 4 tests. 102 lines compile to 399 tokens and 40 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/utils/random.t27","category":"specs/tri","name":"random","module":"TriRandom","lines":97,"bytes":4367,"description":"t27/specs/","health":"ok","tokens":307,"nodes":40,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2005,"rust":418,"verilog":4161,"verilog_hir":580,"zig":1945},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":6,"StmtExpr":25},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 6 tests. 97 lines compile to 307 tokens and 40 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/utils/string.t27","category":"specs/tri","name":"string","module":"string","lines":16,"bytes":619,"description":"t27/specs/","health":"ok","tokens":23,"nodes":7,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":601,"rust":66,"verilog":1492,"verilog_hir":241,"zig":316},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprLiteral":1},"tags":["domain/utils","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 16 lines compile to 23 tokens and 7 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/utils/template.t27","category":"specs/tri","name":"template","module":"TriTemplate","lines":70,"bytes":3884,"description":"t27/specs/","health":"warn","tokens":393,"nodes":10,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1161,"rust":469,"verilog":1858,"verilog_hir":354,"zig":549},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":1},"tags":["domain/utils","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 1 function and 2 structs. 70 lines compile to 393 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tri/utils/terminal.t27","category":"specs/tri","name":"terminal","module":"TriTerminal","lines":59,"bytes":2447,"description":"t27/specs/","health":"ok","tokens":172,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1793,"rust":650,"verilog":3123,"verilog_hir":457,"zig":987},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":2,"EnumVariant":14,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/utils","has/enums","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 enums. Carries 3 tests. 59 lines compile to 172 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/utils/text.t27","category":"specs/tri","name":"text","module":"TriText","lines":67,"bytes":2793,"description":"t27/specs/","health":"ok","tokens":197,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1871,"rust":589,"verilog":3336,"verilog_hir":531,"zig":1186},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 67 lines compile to 197 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/utils/time.t27","category":"specs/tri","name":"time","module":"TriTime","lines":93,"bytes":4138,"description":"t27/specs/","health":"ok","tokens":290,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2008,"rust":710,"verilog":3624,"verilog_hir":607,"zig":1937},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":5,"TestBlock":4,"StmtExpr":16},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 2 structs. Carries 4 tests. 93 lines compile to 290 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/utils/utf8.t27","category":"specs/tri","name":"utf8","module":"TriUtf8","lines":82,"bytes":3595,"description":"t27/specs/","health":"ok","tokens":275,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1911,"rust":619,"verilog":3776,"verilog_hir":526,"zig":1541},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":3,"FnDecl":4,"TestBlock":5,"StmtExpr":10},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 5 tests. 82 lines compile to 275 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/utils/version.t27","category":"specs/tri","name":"version","module":"TriVersion","lines":85,"bytes":4113,"description":"t27/specs/","health":"ok","tokens":392,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1919,"rust":570,"verilog":3469,"verilog_hir":549,"zig":2117},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":3,"TestBlock":4,"StmtExpr":20},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 4 tests. 85 lines compile to 392 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/vm/jit_semantics.t27","category":"specs/vm","name":"jit_semantics","module":"JitSemantics","lines":319,"bytes":14011,"description":"Module: JIT Compilation Semantics","health":"ok","tokens":912,"nodes":86,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6201,"rust":1766,"verilog":11669,"verilog_hir":775,"zig":6108},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":6,"EnumDecl":1,"EnumVariant":3,"FnDecl":12,"TestBlock":9,"StmtExpr":31,"InvariantBlock":6,"BenchBlock":8},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 2 structs, 1 enum and 2 constants. Carries 9 tests, 6 invariants and 8 benches. 319 lines compile to 912 tokens and 86 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"specs/vsa/jones_polynomial.t27","category":"specs/vsa","name":"jones_polynomial","module":"JonesPolynomial","lines":353,"bytes":12139,"description":"t27/specs/vsa/jones_polynomial.t27 Jones Polynomial -- Link invariant computed from input structure V(L, t) = (-t^(-3/4))^w(L) * where is Kauffman bracket","health":"ok","tokens":1543,"nodes":511,"depth":17,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6991,"rust":1789,"verilog":14065,"verilog_hir":959,"zig":8267},"repo":"t27","kinds":{"Module":26,"UseDecl":1,"ConstDecl":3,"ExprLiteral":70,"FnDecl":12,"StmtLocal":28,"StmtFor":1,"ExprIdentifier":112,"StmtAssign":8,"ExprBinary":73,"ExprReturn":24,"ExprCall":23,"ExprUnary":13,"StmtWhile":2,"StmtIf":17,"ExprIndex":2,"ExprFieldAccess":10,"ExprArrayLiteral":1,"ExprIf":1,"TestBlock":17,"StmtExpr":59,"InvariantBlock":5,"BenchBlock":3},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions and 3 constants. Carries 17 tests, 5 invariants and 3 benches. 353 lines compile to 1,543 tokens and 511 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Clean through every layer."},{"path":"specs/vsa/ops.t27","category":"specs/vsa","name":"ops","module":"VSAOps","lines":670,"bytes":27126,"description":"t27/specs/vsa/ops.t27 Vector Symbolic Architecture Operations Bind, Unbind, Bundle, Similarity for ternary hypervectors","health":"warn","tokens":5592,"nodes":755,"depth":13,"loss":0,"tcErrors":14,"failedBackends":[],"outBytes":{"c":12535,"rust":6035,"verilog":21963,"verilog_hir":1805,"zig":16401},"repo":"t27","kinds":{"Module":31,"UseDecl":2,"ConstDecl":9,"ExprLiteral":52,"FnDecl":17,"StmtLocal":46,"ExprArrayLiteral":6,"StmtExpr":99,"ExprCall":27,"ExprIdentifier":218,"StmtWhile":11,"ExprBinary":62,"ExprIndex":25,"StmtIf":12,"ExprFieldAccess":35,"ExprIf":8,"StmtAssign":20,"ExprReturn":20,"TestBlock":22,"InvariantBlock":26,"BenchBlock":7},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 17 functions and 9 constants. Carries 22 tests, 26 invariants and 7 benches. 670 lines compile to 5,592 tokens and 755 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 21.4 KB. Compiles with 14 type errors."},{"path":"specs/vsa/packed_vsa.t27","category":"specs/vsa","name":"packed_vsa","module":"PackedVsa","lines":291,"bytes":11657,"description":"Module: Packed VSA Operations","health":"ok","tokens":937,"nodes":90,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5122,"rust":1025,"verilog":10094,"verilog_hir":772,"zig":5779},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":7,"ExprLiteral":4,"FnDecl":8,"TestBlock":8,"StmtExpr":42,"InvariantBlock":8,"BenchBlock":8},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 7 constants. Carries 8 tests, 8 invariants and 8 benches. 291 lines compile to 937 tokens and 90 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 9.9 KB. Clean through every layer."},{"path":"specs/vsa/sdk.t27","category":"specs/vsa","name":"sdk","module":"SDK","lines":626,"bytes":24071,"description":"specs/vsa/sdk.t27 Trinity SDK - High-level API for VSA operations","health":"ok","tokens":2726,"nodes":373,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10307,"rust":3711,"verilog":19377,"verilog_hir":1790,"zig":12370},"repo":"t27","kinds":{"Module":1,"UseDecl":5,"StructDecl":1,"ExprIdentifier":57,"FnDecl":21,"StmtLocal":7,"ExprCall":35,"StmtAssign":2,"ExprFieldAccess":46,"ExprReturn":20,"ExprStructLit":11,"StmtExpr":99,"ExprUnary":20,"ExprLiteral":1,"TestBlock":30,"InvariantBlock":12,"BenchBlock":5},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions and 1 struct. Carries 30 tests, 12 invariants and 5 benches. 626 lines compile to 2,726 tokens and 373 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.9 KB. Clean through every layer."},{"path":"specs/vsa/sequence_hdc.t27","category":"specs/vsa","name":"sequence_hdc","module":"SequenceHdc","lines":342,"bytes":15174,"description":"Module: Sequence Hyperdimensional Computing (HDC)","health":"ok","tokens":1129,"nodes":105,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6422,"rust":2425,"verilog":11543,"verilog_hir":1131,"zig":7025},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":4,"ExprLiteral":4,"StructDecl":5,"ExprIdentifier":15,"FnDecl":13,"TestBlock":9,"StmtExpr":40,"InvariantBlock":5,"BenchBlock":6},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 5 structs and 4 constants. Carries 9 tests, 5 invariants and 6 benches. 342 lines compile to 1,129 tokens and 105 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"specs/vsa/similarity_search.t27","category":"specs/vsa","name":"similarity_search","module":"VSASimilaritySearch","lines":467,"bytes":15246,"description":"t27/specs/vsa/similarity_search.t27 VSA Similarity Search Specification Ring 062 - Efficient similarity search in hyperdimensional space Defines semantic similarity operations for VSA trit vectors","health":"warn","tokens":2648,"nodes":606,"depth":14,"loss":0,"tcErrors":13,"failedBackends":[],"outBytes":{"c":8793,"rust":4785,"verilog":14138,"verilog_hir":1180,"zig":7030},"repo":"t27","kinds":{"Module":30,"UseDecl":2,"ConstDecl":10,"ExprLiteral":62,"StructDecl":3,"ExprIdentifier":207,"FnDecl":9,"StmtLocal":33,"StmtWhile":9,"ExprBinary":64,"ExprIndex":24,"StmtAssign":30,"ExprCall":33,"StmtIf":15,"ExprReturn":9,"ExprFieldAccess":40,"StmtExpr":4,"ExprUnary":4,"ExprStructLit":2,"ExprArrayLiteral":1,"TestBlock":8,"InvariantBlock":5,"BenchBlock":2},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 9 functions, 3 structs and 10 constants. Carries 8 tests, 5 invariants and 2 benches. 467 lines compile to 2,648 tokens and 606 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 13.8 KB. Compiles with 13 type errors."},{"path":"specs/vsa/vsa_core.t27","category":"specs/vsa","name":"vsa_core","module":"vsa_core","lines":1012,"bytes":29297,"description":"t27/specs/vsa/vsa_core.t27 VSA (Vector Symbolic Architecture) Core Operations 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q VSA provides high-dimensional vector operations for: - Symbolic reasoning (bind/unbind for role-filler pairs) - Set operations (bundle for superposition)","health":"warn","tokens":5058,"nodes":2297,"depth":13,"loss":0,"tcErrors":17,"failedBackends":[],"outBytes":{"c":23664,"rust":6487,"verilog":43584,"verilog_hir":1474,"zig":20980},"repo":"t27","kinds":{"Module":64,"UseDecl":1,"ConstDecl":6,"ExprLiteral":326,"ExprIdentifier":691,"StructDecl":1,"FnDecl":16,"StmtLocal":211,"ExprBinary":180,"ExprArrayLiteral":45,"StmtWhile":21,"StmtAssign":93,"ExprCall":255,"ExprIndex":75,"ExprReturn":25,"ExprFieldAccess":62,"StmtIf":22,"ExprIf":5,"TestBlock":22,"StmtExpr":63,"ExprUnary":70,"InvariantBlock":15,"StmtFor":15,"BenchBlock":13},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 16 functions, 1 struct and 6 constants. Carries 22 tests, 15 invariants and 13 benches. 1012 lines compile to 5,058 tokens and 2,297 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 42.6 KB. Compiles with 17 type errors."},{"path":"test_highlight.t27","category":"root","name":"test_highlight","module":null,"lines":57,"bytes":1013,"description":"T27 Syntax Highlighting Test File This tests all syntax elements","health":"warn","tokens":217,"nodes":59,"depth":6,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2132,"rust":927,"verilog":3575,"verilog_hir":511,"zig":978},"repo":"t27","kinds":{"Module":2,"TestBlock":1,"ConstDecl":7,"ExprLiteral":7,"EnumDecl":1,"EnumVariant":3,"StructDecl":1,"ExprIdentifier":14,"FnDecl":4,"StmtLocal":3,"ExprCall":3,"ExprReturn":3,"ExprBinary":2,"ExprSwitch":1,"ExprEnumValue":4,"StmtFor":1,"StmtAssign":1,"StmtExpr":1},"tags":["domain/other","has/enums","has/functions","has/loops","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 7 constants. Carries 1 test. 57 lines compile to 217 tokens and 59 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"tests/comprehensive_suite.t27","category":"tests","name":"comprehensive_suite","module":"tests-comprehensive-suite","lines":19,"bytes":560,"description":"comprehensive_suite.t27 -- documents the repository integration suite Executed by: t27c suite (or tri test). No shell runners under tests/.","health":"ok","tokens":84,"nodes":23,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1020,"rust":316,"verilog":1973,"verilog_hir":279,"zig":507},"repo":"t27","kinds":{"Module":1,"ConstDecl":7,"ExprLiteral":8,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":2,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 7 constants. Carries 1 test. 19 lines compile to 84 tokens and 23 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"tests/ring0_trivial.t27","category":"tests","name":"ring0_trivial","module":"ring0","lines":11,"bytes":201,"description":"ring-0 trivial test","health":"ok","tokens":44,"nodes":11,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":602,"rust":195,"verilog":1388,"verilog_hir":239,"zig":243},"repo":"t27","kinds":{"Module":1,"ConstDecl":5,"ExprLiteral":5},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 5 constants. 11 lines compile to 44 tokens and 11 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"vscode-trinity-swe/test_highlight.t27","category":"vscode-trinity-swe","name":"test_highlight","module":null,"lines":1,"bytes":0,"description":null,"health":"ok","tokens":0,"nodes":1,"depth":1,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 1 lines compile to 0 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"tri-net/specs/access_control.t27","category":"tri-net/specs","name":"access_control","module":"AccessControl","lines":230,"bytes":7562,"description":"Access Control - node authentication and authorization Simplified RBAC for mesh network security","health":"ok","tokens":1398,"nodes":604,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8428,"rust":3182,"verilog":14428,"verilog_hir":1492,"zig":6316},"repo":"tri-net","kinds":{"Module":9,"UseDecl":1,"ConstDecl":7,"ExprLiteral":156,"FnDecl":18,"ExprReturn":24,"ExprBinary":74,"ExprIdentifier":143,"StmtLocal":11,"ExprCall":92,"StmtIf":6,"ExprUnary":2,"TestBlock":16,"StmtAssign":20,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 7 constants. Carries 16 tests. 230 lines compile to 1,398 tokens and 604 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Clean through every layer."},{"path":"tri-net/specs/account_identity.t27","category":"tri-net/specs","name":"account_identity","module":"AccountIdentity","lines":80,"bytes":3441,"description":"Multi-device account and trusted-device linking policy. Passkey ceremonies and storage adapters remain platform responsibilities. phi^2 + phi^-2 = 3","health":"ok","tokens":444,"nodes":188,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4309,"rust":1014,"verilog":6410,"verilog_hir":876,"zig":2875},"repo":"tri-net","kinds":{"Module":2,"UseDecl":1,"ConstDecl":4,"ExprLiteral":75,"FnDecl":4,"ExprReturn":5,"ExprBinary":29,"ExprIdentifier":20,"StmtIf":1,"TestBlock":4,"StmtExpr":13,"ExprCall":26,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 4 constants. Carries 4 tests, 3 invariants and 1 bench. 80 lines compile to 444 tokens and 188 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"tri-net/specs/adaptive_retry.t27","category":"tri-net/specs","name":"adaptive_retry","module":"AdaptiveRetry","lines":145,"bytes":5164,"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","health":"ok","tokens":577,"nodes":260,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4436,"rust":1666,"verilog":7464,"verilog_hir":723,"zig":3769},"repo":"tri-net","kinds":{"Module":10,"ConstDecl":5,"ExprLiteral":73,"FnDecl":6,"StmtIf":9,"ExprBinary":33,"ExprIdentifier":39,"ExprReturn":15,"ExprFieldAccess":3,"StmtLocal":13,"ExprCall":34,"TestBlock":5,"StmtExpr":15},"tags":["domain/other","has/functions","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions and 5 constants. Carries 5 tests. 145 lines compile to 577 tokens and 260 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Clean through every layer."},{"path":"tri-net/specs/adaptive_routing.t27","category":"tri-net/specs","name":"adaptive_routing","module":"AdaptiveRouting","lines":280,"bytes":10004,"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","health":"warn","tokens":1690,"nodes":733,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10220,"rust":4581,"verilog":16499,"verilog_hir":1748,"zig":8029},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":5,"ExprLiteral":220,"FnDecl":19,"ExprReturn":25,"ExprBinary":78,"ExprIdentifier":154,"ExprArrayLiteral":1,"StmtIf":13,"ExprIndex":1,"StmtLocal":14,"ExprCall":118,"StmtAssign":31,"TestBlock":15,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 5 constants. Carries 15 tests. 280 lines compile to 1,690 tokens and 733 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 16.1 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/anomaly_detector.t27","category":"tri-net/specs","name":"anomaly_detector","module":"anomaly_detector","lines":427,"bytes":13915,"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","health":"warn","tokens":2295,"nodes":997,"depth":12,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":12737,"rust":4224,"verilog":20001,"verilog_hir":2076,"zig":10547},"repo":"tri-net","kinds":{"Module":74,"UseDecl":1,"ConstDecl":9,"ExprLiteral":208,"FnDecl":23,"ExprReturn":46,"ExprBinary":158,"ExprIdentifier":249,"StmtLocal":48,"StmtWhile":6,"ExprCall":63,"ExprIndex":12,"StmtAssign":34,"StmtIf":43,"TestBlock":5,"StmtExpr":17,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 23 functions and 9 constants. Carries 5 tests. 427 lines compile to 2,295 tokens and 997 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 19.5 KB. Compiles with 6 type errors."},{"path":"tri-net/specs/api_documenter.t27","category":"tri-net/specs","name":"api_documenter","module":"api_documenter","lines":395,"bytes":14057,"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","health":"warn","tokens":2273,"nodes":863,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13996,"rust":9557,"verilog":21152,"verilog_hir":3871,"zig":10363},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":11,"ExprLiteral":214,"FnDecl":42,"ExprReturn":44,"ExprBinary":205,"ExprIdentifier":192,"StmtLocal":51,"ExprCall":45,"StmtIf":8,"StmtAssign":16,"StmtWhile":4,"ExprIndex":4,"ExprArrayLiteral":1,"TestBlock":2,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 42 functions and 11 constants. Carries 2 tests. 395 lines compile to 2,273 tokens and 863 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 20.7 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/area_optimization.t27","category":"tri-net/specs","name":"area_optimization","module":"AreaOptimization","lines":229,"bytes":7225,"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","health":"ok","tokens":1089,"nodes":484,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7931,"rust":2333,"verilog":14985,"verilog_hir":1776,"zig":6321},"repo":"tri-net","kinds":{"Module":14,"UseDecl":1,"ConstDecl":5,"ExprLiteral":148,"FnDecl":15,"ExprReturn":24,"ExprBinary":71,"ExprIdentifier":75,"StmtIf":9,"ExprFieldAccess":1,"ExprCall":57,"TestBlock":22,"StmtAssign":17,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 15 functions and 5 constants. Carries 22 tests. 229 lines compile to 1,089 tokens and 484 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"tri-net/specs/auto_config.t27","category":"tri-net/specs","name":"auto_config","module":"auto_config","lines":437,"bytes":16119,"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","health":"warn","tokens":2438,"nodes":1073,"depth":22,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":13601,"rust":10750,"verilog":21014,"verilog_hir":1842,"zig":12746},"repo":"tri-net","kinds":{"Module":76,"UseDecl":1,"ConstDecl":20,"ExprLiteral":195,"FnDecl":19,"ExprReturn":39,"ExprBinary":140,"ExprIdentifier":303,"StmtIf":51,"ExprCall":76,"StmtLocal":52,"StmtWhile":11,"ExprIndex":27,"StmtAssign":33,"ExprArrayLiteral":2,"StmtExpr":20,"StmtBreak":3,"ExprFieldAccess":1,"TestBlock":4},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 19 functions and 20 constants. Carries 4 tests. 437 lines compile to 2,438 tokens and 1,073 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 20.5 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/bandwidth_allocator.t27","category":"tri-net/specs","name":"bandwidth_allocator","module":"BandwidthAllocator","lines":351,"bytes":14763,"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","health":"warn","tokens":2359,"nodes":1056,"depth":9,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":13991,"rust":6921,"verilog":21850,"verilog_hir":2021,"zig":11760},"repo":"tri-net","kinds":{"Module":29,"UseDecl":1,"ConstDecl":7,"ExprLiteral":290,"FnDecl":19,"ExprReturn":22,"ExprBinary":110,"ExprIdentifier":253,"ExprArrayLiteral":1,"StmtIf":26,"ExprIndex":1,"StmtLocal":29,"ExprCall":181,"StmtAssign":48,"TestBlock":16,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 7 constants. Carries 16 tests. 351 lines compile to 2,359 tokens and 1,056 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Compiles with 6 type errors."},{"path":"tri-net/specs/byte_utils.t27","category":"tri-net/specs","name":"byte_utils","module":"ByteUtils","lines":79,"bytes":1828,"description":"Byte utilities (wire.t27 pattern)","health":"ok","tokens":408,"nodes":196,"depth":20,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2541,"rust":469,"verilog":4793,"verilog_hir":565,"zig":1564},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"FnDecl":5,"StmtIf":7,"ExprBinary":40,"ExprIdentifier":33,"ExprLiteral":53,"ExprReturn":12,"TestBlock":6,"StmtAssign":6,"ExprCall":12,"StmtExpr":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions. Carries 6 tests. 79 lines compile to 408 tokens and 196 AST nodes, depth 20. Emits 5 of 5 backends; largest is Verilog at 4.7 KB. Clean through every layer."},{"path":"tri-net/specs/cache_management.t27","category":"tri-net/specs","name":"cache_management","module":"cache_management","lines":384,"bytes":11862,"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","health":"ok","tokens":1926,"nodes":745,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10921,"rust":6484,"verilog":17511,"verilog_hir":2044,"zig":8727},"repo":"tri-net","kinds":{"Module":37,"UseDecl":1,"ConstDecl":4,"ExprLiteral":108,"FnDecl":27,"ExprReturn":37,"ExprBinary":98,"ExprIdentifier":230,"StmtLocal":50,"ExprCall":63,"StmtIf":23,"StmtAssign":28,"StmtWhile":6,"ExprIndex":18,"StmtBreak":1,"TestBlock":4,"StmtExpr":9,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 27 functions and 4 constants. Carries 4 tests. 384 lines compile to 1,926 tokens and 745 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 17.1 KB. Clean through every layer."},{"path":"tri-net/specs/compression_engine.t27","category":"tri-net/specs","name":"compression_engine","module":"compression_engine","lines":347,"bytes":10954,"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","health":"warn","tokens":1702,"nodes":770,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":10445,"rust":4867,"verilog":16306,"verilog_hir":2060,"zig":8251},"repo":"tri-net","kinds":{"Module":61,"UseDecl":1,"ConstDecl":8,"ExprLiteral":139,"FnDecl":19,"ExprReturn":37,"ExprBinary":128,"ExprIdentifier":221,"StmtIf":28,"StmtLocal":38,"StmtWhile":7,"StmtAssign":37,"ExprIndex":5,"ExprCall":30,"TestBlock":3,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 8 constants. Carries 3 tests. 347 lines compile to 1,702 tokens and 770 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/congestion_control.t27","category":"tri-net/specs","name":"congestion_control","module":"congestion_control","lines":301,"bytes":9211,"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","health":"warn","tokens":1437,"nodes":631,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":8963,"rust":4877,"verilog":13905,"verilog_hir":1771,"zig":6984},"repo":"tri-net","kinds":{"Module":31,"UseDecl":1,"ConstDecl":9,"ExprLiteral":84,"FnDecl":19,"ExprReturn":26,"ExprBinary":75,"ExprIdentifier":207,"ExprCall":69,"StmtLocal":30,"StmtIf":19,"StmtAssign":37,"StmtWhile":4,"ExprIndex":3,"TestBlock":3,"StmtExpr":14},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 9 constants. Carries 3 tests. 301 lines compile to 1,437 tokens and 631 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 13.6 KB. Compiles with 1 type error."},{"path":"tri-net/specs/crc16.t27","category":"tri-net/specs","name":"crc16","module":"Crc16Ccitt","lines":91,"bytes":2731,"description":"CRC-16/CCITT error detection (no-let version)","health":"ok","tokens":488,"nodes":215,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3223,"rust":881,"verilog":5518,"verilog_hir":654,"zig":2039},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":2,"ExprLiteral":72,"FnDecl":4,"StmtIf":1,"ExprBinary":28,"ExprIdentifier":46,"ExprReturn":5,"ExprCall":30,"TestBlock":6,"StmtAssign":11,"StmtExpr":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 2 constants. Carries 6 tests. 91 lines compile to 488 tokens and 215 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tri-net/specs/cross_layer_optimizer.t27","category":"tri-net/specs","name":"cross_layer_optimizer","module":"CrossLayerOptimizer","lines":320,"bytes":12555,"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","health":"warn","tokens":2224,"nodes":948,"depth":10,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":12135,"rust":3466,"verilog":20304,"verilog_hir":1979,"zig":10014},"repo":"tri-net","kinds":{"Module":23,"UseDecl":1,"ConstDecl":8,"ExprLiteral":283,"FnDecl":20,"ExprReturn":22,"ExprBinary":105,"ExprIdentifier":205,"ExprArrayLiteral":5,"StmtLocal":39,"ExprIndex":5,"StmtIf":18,"ExprCall":124,"StmtAssign":44,"TestBlock":16,"StmtExpr":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 20 functions and 8 constants. Carries 16 tests. 320 lines compile to 2,224 tokens and 948 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 19.8 KB. Compiles with 10 type errors."},{"path":"tri-net/specs/crypto_frame.t27","category":"tri-net/specs","name":"crypto_frame","module":"CryptoFrame","lines":239,"bytes":8811,"description":"tri-net/specs/crypto_frame.t27 Partial spec-first lift of src/crypto.rs (T27-first): the INTEGER session-frame discipline. The AEAD itself (ChaCha20-Poly1305), X25519 and HKDF stay in Rust; what lives here is everything an auditor checks with arithmetic alone: wire frame = [epoch u32 BE][counter u64 BE][ciphertext || tag16] AEAD nonce = [dir:1][epoch:4 BE][counter low 7 BE] (12 bytes)","health":"ok","tokens":1020,"nodes":316,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5222,"rust":2560,"verilog":9025,"verilog_hir":1039,"zig":5689},"repo":"tri-net","kinds":{"Module":18,"UseDecl":1,"ConstDecl":8,"ExprLiteral":44,"FnDecl":11,"ExprReturn":28,"ExprIdentifier":68,"ExprBinary":54,"StmtIf":17,"ExprFieldAccess":2,"StmtLocal":5,"TestBlock":10,"StmtExpr":48,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 11 functions and 8 constants. Carries 10 tests and 2 invariants. 239 lines compile to 1,020 tokens and 316 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.8 KB. Clean through every layer."},{"path":"tri-net/specs/direct_message.t27","category":"tri-net/specs","name":"direct_message","module":"DirectMessage","lines":203,"bytes":10418,"description":"End-to-end encrypted direct-message envelope policy. HTTP, SQLite, X25519, AEAD, and APNs adapters are outside this specification. phi^2 + phi^-2 = 3","health":"ok","tokens":1338,"nodes":573,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11138,"rust":3685,"verilog":14115,"verilog_hir":2287,"zig":8768},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":10,"ExprLiteral":237,"FnDecl":14,"ExprReturn":18,"ExprBinary":82,"ExprIdentifier":63,"ExprUnary":5,"ExprCall":81,"StmtIf":4,"TestBlock":5,"StmtExpr":39,"InvariantBlock":8,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 10 constants. Carries 5 tests, 8 invariants and 1 bench. 203 lines compile to 1,338 tokens and 573 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 13.8 KB. Clean through every layer."},{"path":"tri-net/specs/discovery.t27","category":"tri-net/specs","name":"discovery","module":"Discovery","lines":84,"bytes":2791,"description":"tri-net/specs/discovery.t27 Partial spec-first flip of src/discovery.rs (T27-first). The HELLO beacon byte layout `[src:4][seq:4][ts:8][n:1][heard:n*4][mac:16]` is pure integer arithmetic: frame length, MAC offset and the parse-side length gates are lifted here as the single source of truth. The HMAC itself and socket I/O stay in Rust (T27 cannot express them).","health":"ok","tokens":279,"nodes":74,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2421,"rust":545,"verilog":4435,"verilog_hir":521,"zig":1891},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":4,"ExprLiteral":4,"FnDecl":4,"ExprReturn":5,"ExprBinary":9,"ExprIdentifier":15,"ExprCall":2,"StmtIf":1,"TestBlock":6,"StmtExpr":18,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 4 constants. Carries 6 tests and 2 invariants. 84 lines compile to 279 tokens and 74 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Clean through every layer."},{"path":"tri-net/specs/docs_generator.t27","category":"tri-net/specs","name":"docs_generator","module":"docs_generator","lines":406,"bytes":12897,"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","health":"warn","tokens":2413,"nodes":902,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":14287,"rust":9662,"verilog":21316,"verilog_hir":4915,"zig":9663},"repo":"tri-net","kinds":{"Module":14,"UseDecl":1,"ConstDecl":19,"ExprLiteral":250,"FnDecl":54,"ExprReturn":54,"ExprBinary":250,"ExprIdentifier":173,"StmtLocal":25,"StmtIf":8,"StmtAssign":17,"StmtWhile":2,"ExprCall":23,"ExprIndex":3,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 54 functions and 19 constants. Carries 2 tests. 406 lines compile to 2,413 tokens and 902 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/energy_aware_routing.t27","category":"tri-net/specs","name":"energy_aware_routing","module":"EnergyAwareRouting","lines":335,"bytes":11317,"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","health":"warn","tokens":1809,"nodes":795,"depth":9,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":10957,"rust":6025,"verilog":18195,"verilog_hir":1856,"zig":8847},"repo":"tri-net","kinds":{"Module":29,"UseDecl":1,"ConstDecl":4,"ExprLiteral":214,"FnDecl":19,"ExprReturn":22,"ExprBinary":81,"ExprIdentifier":172,"ExprArrayLiteral":1,"StmtIf":28,"ExprIndex":1,"StmtLocal":32,"ExprCall":121,"StmtAssign":38,"TestBlock":13,"StmtExpr":19},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 4 constants. Carries 13 tests. 335 lines compile to 1,809 tokens and 795 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.8 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/etx.t27","category":"tri-net/specs","name":"etx","module":"MeshEtx","lines":136,"bytes":4933,"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","health":"ok","tokens":740,"nodes":376,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4642,"rust":795,"verilog":7476,"verilog_hir":771,"zig":4086},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":91,"FnDecl":6,"StmtIf":9,"ExprBinary":44,"ExprIdentifier":102,"ExprReturn":15,"ExprFieldAccess":3,"ExprCall":47,"TestBlock":6,"StmtAssign":21,"StmtExpr":11},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions and 4 constants. Carries 6 tests. 136 lines compile to 740 tokens and 376 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Clean through every layer."},{"path":"tri-net/specs/failure_predictor.t27","category":"tri-net/specs","name":"failure_predictor","module":"failure_predictor","lines":328,"bytes":12115,"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","health":"warn","tokens":1858,"nodes":834,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":11455,"rust":4927,"verilog":19351,"verilog_hir":1954,"zig":9274},"repo":"tri-net","kinds":{"Module":28,"UseDecl":1,"ConstDecl":4,"ExprLiteral":267,"FnDecl":19,"ExprReturn":29,"ExprBinary":94,"ExprIdentifier":150,"ExprArrayLiteral":1,"StmtIf":19,"ExprIndex":1,"StmtLocal":26,"ExprCall":119,"StmtAssign":36,"TestBlock":17,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 4 constants. Carries 17 tests. 328 lines compile to 1,858 tokens and 834 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.9 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/fault_detection.t27","category":"tri-net/specs","name":"fault_detection","module":"FaultDetection","lines":254,"bytes":9117,"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","health":"ok","tokens":1615,"nodes":682,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9543,"rust":3910,"verilog":16317,"verilog_hir":1633,"zig":7511},"repo":"tri-net","kinds":{"Module":11,"UseDecl":1,"ConstDecl":5,"ExprLiteral":220,"FnDecl":18,"ExprReturn":20,"ExprBinary":56,"ExprIdentifier":131,"ExprArrayLiteral":1,"StmtIf":10,"ExprIndex":1,"StmtLocal":18,"ExprCall":121,"StmtAssign":30,"TestBlock":17,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 5 constants. Carries 17 tests. 254 lines compile to 1,615 tokens and 682 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Clean through every layer."},{"path":"tri-net/specs/flow_control.t27","category":"tri-net/specs","name":"flow_control","module":"flow_control","lines":302,"bytes":8829,"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","health":"ok","tokens":1587,"nodes":615,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9071,"rust":4595,"verilog":14730,"verilog_hir":1914,"zig":6847},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":8,"ExprLiteral":112,"FnDecl":26,"ExprReturn":37,"ExprBinary":78,"ExprIdentifier":163,"StmtLocal":40,"ExprCall":67,"StmtIf":13,"StmtAssign":16,"StmtWhile":5,"ExprIndex":7,"TestBlock":3,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 26 functions and 8 constants. Carries 3 tests. 302 lines compile to 1,587 tokens and 615 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Clean through every layer."},{"path":"tri-net/specs/fpga_synthesis_report.t27","category":"tri-net/specs","name":"fpga_synthesis_report","module":"FpgaSynthesisReport","lines":185,"bytes":6014,"description":"FPGA synthesis reporting - resource utilization and timing analysis Documents synthesis results for all 19 modules","health":"ok","tokens":989,"nodes":415,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6684,"rust":1914,"verilog":12121,"verilog_hir":1450,"zig":4823},"repo":"tri-net","kinds":{"Module":2,"UseDecl":1,"ConstDecl":7,"ExprLiteral":134,"FnDecl":14,"ExprReturn":14,"ExprBinary":60,"ExprIdentifier":64,"ExprCall":60,"StmtIf":1,"StmtLocal":2,"TestBlock":17,"StmtAssign":16,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 7 constants. Carries 17 tests. 185 lines compile to 989 tokens and 415 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Clean through every layer."},{"path":"tri-net/specs/frame_buffer.t27","category":"tri-net/specs","name":"frame_buffer","module":"FrameBuffer","lines":82,"bytes":1888,"description":"Frame buffer - minimal version","health":"ok","tokens":472,"nodes":211,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2805,"rust":564,"verilog":5424,"verilog_hir":594,"zig":2370},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":6,"ExprReturn":6,"ExprFieldAccess":6,"ExprBinary":30,"ExprIdentifier":22,"ExprLiteral":71,"TestBlock":10,"StmtExpr":14,"ExprCall":38,"StmtAssign":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions. Carries 10 tests. 82 lines compile to 472 tokens and 211 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"tri-net/specs/gf16_format.t27","category":"tri-net/specs","name":"gf16_format","module":"Gf16Format","lines":107,"bytes":3385,"description":"tri-net/specs/gf16_format.t27 Partial spec-first lift of src/gf16.rs (T27-first): the GF16 BIT FORMAT. GF16 is the radio-DSP number format: [sign:1][exponent:6][mantissa:9], bias 31, round-to-nearest-even, no subnormals. The f64 encode/decode rounding stays in Rust (floating point is not a t27 target); the INTEGER geometry — field masks, extraction, composition and the NaN/Inf classifiers — is the single source of","health":"ok","tokens":494,"nodes":122,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2941,"rust":1007,"verilog":5135,"verilog_hir":642,"zig":2660},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":6,"ExprLiteral":14,"FnDecl":7,"ExprReturn":9,"ExprBinary":18,"ExprIdentifier":21,"StmtIf":2,"ExprCall":4,"TestBlock":6,"StmtExpr":29,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions and 6 constants. Carries 6 tests and 2 invariants. 107 lines compile to 494 tokens and 122 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tri-net/specs/group_chat.t27","category":"tri-net/specs","name":"group_chat","module":"GroupChat","lines":161,"bytes":6914,"description":"Persistent group chat membership and message policy. HTTP, SQLite, and UI adapters are outside this specification. phi^2 + phi^-2 = 3","health":"ok","tokens":924,"nodes":401,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7703,"rust":2045,"verilog":10875,"verilog_hir":1354,"zig":5937},"repo":"tri-net","kinds":{"Module":6,"UseDecl":1,"ConstDecl":5,"ExprLiteral":159,"FnDecl":9,"StmtIf":5,"ExprBinary":54,"ExprUnary":4,"ExprIdentifier":37,"ExprReturn":14,"ExprCall":61,"TestBlock":8,"StmtExpr":30,"InvariantBlock":7,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 9 functions and 5 constants. Carries 8 tests, 7 invariants and 1 bench. 161 lines compile to 924 tokens and 401 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 10.6 KB. Clean through every layer."},{"path":"tri-net/specs/hardware_validation.t27","category":"tri-net/specs","name":"hardware_validation","module":"HardwareValidation","lines":209,"bytes":6916,"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","health":"ok","tokens":1133,"nodes":481,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7574,"rust":2491,"verilog":13268,"verilog_hir":1763,"zig":5962},"repo":"tri-net","kinds":{"Module":2,"UseDecl":1,"ConstDecl":8,"ExprLiteral":142,"FnDecl":18,"ExprReturn":19,"ExprBinary":84,"ExprIdentifier":85,"StmtIf":1,"ExprFieldAccess":1,"ExprCall":64,"TestBlock":17,"StmtAssign":14,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 8 constants. Carries 17 tests. 209 lines compile to 1,133 tokens and 481 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.0 KB. Clean through every layer."},{"path":"tri-net/specs/health_dashboard.t27","category":"tri-net/specs","name":"health_dashboard","module":"health_dashboard","lines":387,"bytes":13643,"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","health":"warn","tokens":2164,"nodes":914,"depth":15,"loss":0,"tcErrors":14,"failedBackends":[],"outBytes":{"c":13067,"rust":7280,"verilog":19847,"verilog_hir":2656,"zig":10495},"repo":"tri-net","kinds":{"Module":65,"UseDecl":1,"ConstDecl":19,"ExprLiteral":165,"FnDecl":27,"ExprReturn":38,"ExprBinary":178,"ExprIdentifier":255,"StmtIf":36,"StmtLocal":35,"StmtWhile":6,"ExprIndex":13,"ExprCall":30,"StmtAssign":31,"TestBlock":4,"StmtExpr":8,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 27 functions and 19 constants. Carries 4 tests. 387 lines compile to 2,164 tokens and 914 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 19.4 KB. Compiles with 14 type errors."},{"path":"tri-net/specs/health_monitoring.t27","category":"tri-net/specs","name":"health_monitoring","module":"HealthMonitoring","lines":320,"bytes":14961,"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","health":"ok","tokens":2946,"nodes":1357,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14463,"rust":6367,"verilog":21285,"verilog_hir":1377,"zig":12971},"repo":"tri-net","kinds":{"Module":65,"UseDecl":1,"ConstDecl":17,"ExprLiteral":378,"FnDecl":13,"ExprReturn":26,"ExprBinary":146,"ExprIdentifier":335,"ExprArrayLiteral":9,"StmtIf":61,"ExprIndex":9,"StmtLocal":14,"ExprCall":204,"StmtAssign":58,"TestBlock":9,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 13 functions and 17 constants. Carries 9 tests. 320 lines compile to 2,946 tokens and 1,357 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Clean through every layer."},{"path":"tri-net/specs/hello.t27","category":"tri-net/specs","name":"hello","module":"MeshHello","lines":164,"bytes":5489,"description":"HELLO beacon format for mesh neighbor discovery Port from trios-mesh/src/discovery.rs Fixed 3-neighbor heard list (no Vec, arrays await t27#1258)","health":"ok","tokens":1193,"nodes":526,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5429,"rust":989,"verilog":8509,"verilog_hir":1204,"zig":4521},"repo":"tri-net","kinds":{"Module":19,"UseDecl":1,"ConstDecl":2,"ExprLiteral":227,"FnDecl":8,"StmtIf":9,"ExprBinary":42,"ExprIdentifier":97,"ExprReturn":15,"ExprFieldAccess":8,"ExprCall":49,"TestBlock":6,"StmtAssign":30,"StmtExpr":13},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 2 constants. Carries 6 tests. 164 lines compile to 1,193 tokens and 526 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Clean through every layer."},{"path":"tri-net/specs/integration_framework.t27","category":"tri-net/specs","name":"integration_framework","module":"integration_framework","lines":569,"bytes":18981,"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","health":"warn","tokens":3135,"nodes":1212,"depth":15,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":18628,"rust":13169,"verilog":27843,"verilog_hir":4448,"zig":14483},"repo":"tri-net","kinds":{"Module":45,"UseDecl":1,"ConstDecl":33,"ExprLiteral":262,"FnDecl":48,"ExprReturn":55,"ExprBinary":231,"ExprIdentifier":311,"StmtLocal":63,"ExprCall":51,"StmtWhile":16,"ExprIndex":23,"StmtIf":24,"StmtAssign":38,"StmtBreak":1,"TestBlock":2,"StmtExpr":7,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 48 functions and 33 constants. Carries 2 tests. 569 lines compile to 3,135 tokens and 1,212 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 27.2 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/integration_tests.t27","category":"tri-net/specs","name":"integration_tests","module":"MeshIntegrationTests","lines":244,"bytes":7954,"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","health":"ok","tokens":1167,"nodes":609,"depth":18,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5470,"rust":439,"verilog":8924,"verilog_hir":515,"zig":5087},"repo":"tri-net","kinds":{"Module":10,"UseDecl":1,"ConstDecl":7,"ExprLiteral":132,"FnDecl":2,"StmtIf":5,"ExprBinary":92,"ExprIdentifier":200,"ExprReturn":5,"ExprFieldAccess":23,"StmtLocal":1,"TestBlock":10,"StmtAssign":53,"ExprCall":42,"StmtExpr":26},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 2 functions and 7 constants. Carries 10 tests. 244 lines compile to 1,167 tokens and 609 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 8.7 KB. Clean through every layer."},{"path":"tri-net/specs/internet_call.t27","category":"tri-net/specs","name":"internet_call","module":"InternetCall","lines":875,"bytes":45630,"description":"Internet call policy and lifecycle. Network adapters, APNs delivery, and LiveKit token signing are thin wrappers. phi^2 + phi^-2 = 3","health":"ok","tokens":5784,"nodes":2593,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":44477,"rust":16088,"verilog":57469,"verilog_hir":6764,"zig":38158},"repo":"tri-net","kinds":{"Module":45,"UseDecl":1,"ConstDecl":36,"ExprLiteral":907,"FnDecl":58,"StmtIf":44,"ExprBinary":377,"ExprIdentifier":420,"ExprReturn":102,"ExprCall":351,"ExprUnary":18,"StmtLocal":7,"TestBlock":29,"StmtExpr":167,"StmtAssign":3,"InvariantBlock":27,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 58 functions and 36 constants. Carries 29 tests, 27 invariants and 1 bench. 875 lines compile to 5,784 tokens and 2,593 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 56.1 KB. Clean through every layer."},{"path":"tri-net/specs/key_management.t27","category":"tri-net/specs","name":"key_management","module":"KeyManagement","lines":298,"bytes":10998,"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","health":"warn","tokens":2072,"nodes":896,"depth":14,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10432,"rust":5535,"verilog":16757,"verilog_hir":1325,"zig":8713},"repo":"tri-net","kinds":{"Module":35,"UseDecl":1,"ConstDecl":5,"ExprLiteral":285,"FnDecl":15,"ExprReturn":31,"ExprBinary":75,"ExprIdentifier":180,"ExprArrayLiteral":5,"StmtLocal":17,"ExprIndex":5,"StmtIf":28,"ExprCall":157,"StmtAssign":28,"TestBlock":13,"StmtExpr":16},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 15 functions and 5 constants. Carries 13 tests. 298 lines compile to 2,072 tokens and 896 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 16.4 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/link_quality_monitor.t27","category":"tri-net/specs","name":"link_quality_monitor","module":"LinkQualityMonitor","lines":178,"bytes":6752,"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","health":"ok","tokens":823,"nodes":347,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5015,"rust":2053,"verilog":8442,"verilog_hir":790,"zig":4553},"repo":"tri-net","kinds":{"Module":10,"ConstDecl":7,"ExprLiteral":85,"FnDecl":6,"StmtLocal":22,"ExprBinary":48,"ExprFieldAccess":22,"ExprIdentifier":60,"StmtIf":9,"ExprReturn":15,"ExprIndex":8,"ExprUnary":2,"TestBlock":6,"ExprCall":29,"StmtExpr":16,"ExprArrayLiteral":2},"tags":["domain/other","has/functions","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 6 functions and 7 constants. Carries 6 tests. 178 lines compile to 823 tokens and 347 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 8.2 KB. Clean through every layer."},{"path":"tri-net/specs/link_statistics.t27","category":"tri-net/specs","name":"link_statistics","module":"LinkStatistics","lines":53,"bytes":1068,"description":"Link statistics - ultra-simple","health":"ok","tokens":242,"nodes":103,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1943,"rust":401,"verilog":3682,"verilog_hir":483,"zig":1626},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":5,"ExprReturn":5,"ExprFieldAccess":2,"ExprBinary":10,"ExprIdentifier":24,"ExprLiteral":16,"TestBlock":4,"StmtAssign":10,"ExprCall":20,"StmtExpr":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions. Carries 4 tests. 53 lines compile to 242 tokens and 103 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"tri-net/specs/lite_crypto.t27","category":"tri-net/specs","name":"lite_crypto","module":"LiteCrypto","lines":141,"bytes":5044,"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","health":"ok","tokens":638,"nodes":255,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4331,"rust":821,"verilog":8319,"verilog_hir":825,"zig":3674},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"ConstDecl":3,"ExprLiteral":58,"FnDecl":6,"StmtLocal":3,"ExprBinary":29,"ExprIdentifier":66,"ExprReturn":5,"ExprFieldAccess":4,"ExprCall":32,"TestBlock":13,"StmtAssign":21,"StmtExpr":13},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions and 3 constants. Carries 13 tests. 141 lines compile to 638 tokens and 255 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.1 KB. Clean through every layer."},{"path":"tri-net/specs/load_predictor.t27","category":"tri-net/specs","name":"load_predictor","module":"load_predictor","lines":357,"bytes":11081,"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","health":"warn","tokens":1947,"nodes":731,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":10097,"rust":4563,"verilog":16434,"verilog_hir":1844,"zig":8281},"repo":"tri-net","kinds":{"Module":48,"UseDecl":1,"ConstDecl":5,"ExprLiteral":131,"FnDecl":22,"ExprReturn":37,"ExprBinary":108,"ExprIdentifier":199,"StmtLocal":46,"StmtWhile":6,"ExprIndex":9,"StmtAssign":27,"ExprCall":46,"StmtIf":27,"ExprUnary":1,"TestBlock":4,"StmtExpr":11,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 22 functions and 5 constants. Carries 4 tests. 357 lines compile to 1,947 tokens and 731 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 16.0 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/local_processing.t27","category":"tri-net/specs","name":"local_processing","module":"local_processing","lines":354,"bytes":11012,"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","health":"warn","tokens":1958,"nodes":749,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10719,"rust":6038,"verilog":17045,"verilog_hir":2715,"zig":8344},"repo":"tri-net","kinds":{"Module":28,"UseDecl":1,"ConstDecl":10,"ExprLiteral":135,"FnDecl":29,"ExprReturn":36,"ExprBinary":123,"ExprIdentifier":211,"StmtLocal":42,"ExprCall":52,"StmtWhile":10,"ExprIndex":12,"StmtAssign":30,"StmtIf":13,"TestBlock":3,"StmtExpr":12,"ExprArrayLiteral":2},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 29 functions and 10 constants. Carries 3 tests. 354 lines compile to 1,958 tokens and 749 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/m3_multihop.t27","category":"tri-net/specs","name":"m3_multihop","module":"M3MultiHop","lines":351,"bytes":13458,"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","health":"ok","tokens":1599,"nodes":607,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8401,"rust":3082,"verilog":12474,"verilog_hir":1017,"zig":7397},"repo":"tri-net","kinds":{"Module":25,"ConstDecl":9,"ExprLiteral":183,"FnDecl":10,"StmtExpr":33,"ExprFieldAccess":28,"ExprIdentifier":83,"StmtLocal":24,"ExprBinary":82,"StmtIf":20,"ExprReturn":25,"ExprCall":67,"ExprUnary":1,"TestBlock":9,"StmtFor":4,"StmtAssign":4},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 9 constants. Carries 9 tests. 351 lines compile to 1,599 tokens and 607 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_call_signaling.t27","category":"tri-net/specs","name":"mesh_call_signaling","module":"MeshCallSignaling","lines":63,"bytes":2209,"description":"Signed local call invitation policy. UDP sockets, JSON encoding, and UI prompts are adapter responsibilities. phi^2 + phi^-2 = 3","health":"ok","tokens":308,"nodes":123,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3217,"rust":727,"verilog":4981,"verilog_hir":603,"zig":1946},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":4,"ExprLiteral":50,"FnDecl":2,"StmtIf":2,"ExprBinary":16,"ExprIdentifier":13,"ExprReturn":4,"ExprUnary":1,"TestBlock":3,"StmtExpr":7,"ExprCall":14,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 2 functions and 4 constants. Carries 3 tests, 2 invariants and 1 bench. 63 lines compile to 308 tokens and 123 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_node_sim.t27","category":"tri-net/specs","name":"mesh_node_sim","module":"MeshNodeSim","lines":165,"bytes":5651,"description":"Mesh node simulation - 2-4 node network scenarios Tests point-to-point, triangle, line topologies","health":"ok","tokens":1082,"nodes":475,"depth":19,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5757,"rust":2528,"verilog":9665,"verilog_hir":943,"zig":5007},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":70,"FnDecl":9,"ExprReturn":13,"ExprBinary":112,"ExprIdentifier":149,"ExprFieldAccess":2,"ExprCall":47,"StmtIf":10,"TestBlock":12,"StmtAssign":8,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 9 functions and 4 constants. Carries 12 tests. 165 lines compile to 1,082 tokens and 475 AST nodes, depth 19. Emits 5 of 5 backends; largest is Verilog at 9.4 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_protocol_stack.t27","category":"tri-net/specs","name":"mesh_protocol_stack","module":"MeshProtocolStack","lines":224,"bytes":8398,"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","health":"ok","tokens":1355,"nodes":543,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6794,"rust":1170,"verilog":11706,"verilog_hir":907,"zig":5833},"repo":"tri-net","kinds":{"Module":17,"UseDecl":1,"ConstDecl":5,"ExprLiteral":108,"FnDecl":10,"ExprReturn":14,"ExprBinary":74,"ExprIdentifier":149,"ExprFieldAccess":5,"StmtIf":9,"ExprCall":80,"StmtLocal":1,"TestBlock":15,"StmtAssign":18,"StmtExpr":37},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 5 constants. Carries 15 tests. 224 lines compile to 1,355 tokens and 543 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_routing.t27","category":"tri-net/specs","name":"mesh_routing","module":"MeshRouting","lines":328,"bytes":10999,"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","health":"ok","tokens":1570,"nodes":497,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7013,"rust":874,"verilog":13058,"verilog_hir":993,"zig":5584},"repo":"tri-net","kinds":{"Module":43,"UseDecl":1,"ConstDecl":6,"ExprLiteral":108,"FnDecl":7,"StmtLocal":5,"ExprFieldAccess":2,"ExprBinary":67,"ExprIdentifier":105,"StmtIf":22,"ExprReturn":5,"ExprUnary":2,"ExprCall":51,"TestBlock":22,"StmtExpr":46,"StmtAssign":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 7 functions and 6 constants. Carries 22 tests. 328 lines compile to 1,570 tokens and 497 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"tri-net/specs/modem_frame.t27","category":"tri-net/specs","name":"modem_frame","module":"ModemFrame","lines":121,"bytes":4409,"description":"tri-net/specs/modem_frame.t27 Integer frame geometry + sync gate of the BPSK modem in src/modem.rs (T27-first). The Barker-13 correlation itself is f32 (matched filtering over noisy IQ) and stays in Rust; but the FRAME LAYOUT is pure integer arithmetic and is lifted here as the single source of truth: on-air symbol counts, the minimum-length parse gate, the payload cap, the decode bounds check, and the sync threshold as a fraction of the","health":"ok","tokens":375,"nodes":97,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3017,"rust":935,"verilog":5494,"verilog_hir":755,"zig":2670},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":6,"FnDecl":7,"ExprReturn":7,"ExprBinary":12,"ExprIdentifier":17,"ExprCall":1,"TestBlock":9,"StmtExpr":28,"InvariantBlock":3},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions and 5 constants. Carries 9 tests and 3 invariants. 121 lines compile to 375 tokens and 97 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tri-net/specs/multipath_router.t27","category":"tri-net/specs","name":"multipath_router","module":"MultiPathRouter","lines":135,"bytes":4974,"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","health":"warn","tokens":567,"nodes":229,"depth":7,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":4046,"rust":1108,"verilog":6882,"verilog_hir":749,"zig":3440},"repo":"tri-net","kinds":{"Module":7,"ConstDecl":3,"ExprLiteral":64,"FnDecl":5,"StmtLocal":19,"ExprIndex":4,"ExprIdentifier":40,"StmtIf":4,"ExprBinary":29,"StmtAssign":2,"ExprFieldAccess":7,"ExprReturn":7,"TestBlock":5,"ExprArrayLiteral":1,"ExprCall":21,"StmtExpr":11},"tags":["domain/other","has/functions","has/tests","health/warn","issue/type-errors","size/small","src/tri-net"],"summary":"Declares 5 functions and 3 constants. Carries 5 tests. 135 lines compile to 567 tokens and 229 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/multipath_routing.t27","category":"tri-net/specs","name":"multipath_routing","module":"multipath_routing","lines":382,"bytes":13973,"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","health":"ok","tokens":2438,"nodes":1104,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13048,"rust":5161,"verilog":20615,"verilog_hir":1898,"zig":10902},"repo":"tri-net","kinds":{"Module":34,"UseDecl":1,"ConstDecl":5,"ExprLiteral":355,"FnDecl":20,"ExprReturn":30,"ExprBinary":125,"ExprIdentifier":237,"ExprArrayLiteral":1,"StmtIf":28,"ExprIndex":1,"StmtLocal":21,"ExprCall":168,"StmtAssign":36,"ExprUnary":1,"StmtWhile":1,"TestBlock":16,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 20 functions and 5 constants. Carries 16 tests. 382 lines compile to 2,438 tokens and 1,104 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 20.1 KB. Clean through every layer."},{"path":"tri-net/specs/network_analytics.t27","category":"tri-net/specs","name":"network_analytics","module":"NetworkAnalytics","lines":278,"bytes":9552,"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","health":"ok","tokens":1483,"nodes":631,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9435,"rust":3791,"verilog":16088,"verilog_hir":1789,"zig":7722},"repo":"tri-net","kinds":{"Module":6,"UseDecl":1,"ConstDecl":9,"ExprLiteral":181,"FnDecl":21,"ExprReturn":26,"ExprBinary":78,"ExprIdentifier":126,"ExprFieldAccess":8,"ExprCall":92,"StmtLocal":13,"StmtIf":5,"TestBlock":18,"StmtAssign":23,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 21 functions and 9 constants. Carries 18 tests. 278 lines compile to 1,483 tokens and 631 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.7 KB. Clean through every layer."},{"path":"tri-net/specs/network_coding.t27","category":"tri-net/specs","name":"network_coding","module":"NetworkCoding","lines":297,"bytes":9930,"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","health":"ok","tokens":1800,"nodes":729,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10239,"rust":3732,"verilog":18177,"verilog_hir":2031,"zig":7824},"repo":"tri-net","kinds":{"Module":10,"UseDecl":1,"ConstDecl":3,"ExprLiteral":252,"FnDecl":22,"ExprReturn":25,"ExprBinary":83,"ExprIdentifier":119,"StmtLocal":45,"ExprCall":108,"StmtIf":9,"StmtAssign":8,"ExprArrayLiteral":1,"ExprIndex":1,"TestBlock":18,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 22 functions and 3 constants. Carries 18 tests. 297 lines compile to 1,800 tokens and 729 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.8 KB. Clean through every layer."},{"path":"tri-net/specs/network_metrics.t27","category":"tri-net/specs","name":"network_metrics","module":"NetworkMetrics","lines":79,"bytes":1620,"description":"Network metrics - ultra-minimal, all-inline, no-let","health":"ok","tokens":324,"nodes":131,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2565,"rust":535,"verilog":5108,"verilog_hir":638,"zig":2064},"repo":"tri-net","kinds":{"Module":4,"UseDecl":1,"FnDecl":7,"ExprReturn":9,"ExprIdentifier":17,"ExprBinary":15,"ExprLiteral":35,"StmtIf":2,"ExprFieldAccess":3,"TestBlock":8,"StmtExpr":8,"ExprCall":19,"StmtAssign":3},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions. Carries 8 tests. 79 lines compile to 324 tokens and 131 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tri-net/specs/network_orchestrator.t27","category":"tri-net/specs","name":"network_orchestrator","module":"network_orchestrator","lines":377,"bytes":12658,"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","health":"ok","tokens":2040,"nodes":784,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12831,"rust":5827,"verilog":19507,"verilog_hir":2972,"zig":9884},"repo":"tri-net","kinds":{"Module":48,"UseDecl":1,"ConstDecl":21,"ExprLiteral":155,"FnDecl":33,"ExprReturn":52,"ExprBinary":131,"ExprIdentifier":197,"StmtLocal":32,"ExprCall":51,"StmtIf":25,"StmtWhile":5,"ExprIndex":8,"StmtAssign":12,"TestBlock":3,"StmtExpr":9,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 33 functions and 21 constants. Carries 3 tests. 377 lines compile to 2,040 tokens and 784 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.0 KB. Clean through every layer."},{"path":"tri-net/specs/network_simulator.t27","category":"tri-net/specs","name":"network_simulator","module":"network_simulator","lines":377,"bytes":12185,"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","health":"warn","tokens":2119,"nodes":777,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":12725,"rust":7378,"verilog":19385,"verilog_hir":3539,"zig":9111},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":14,"ExprLiteral":157,"FnDecl":43,"ExprReturn":53,"ExprBinary":155,"ExprIdentifier":189,"StmtLocal":36,"ExprCall":58,"StmtIf":14,"StmtAssign":12,"ExprIndex":6,"StmtWhile":1,"StmtExpr":9,"TestBlock":2},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 43 functions and 14 constants. Carries 2 tests. 377 lines compile to 2,119 tokens and 777 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 18.9 KB. Compiles with 1 type error."},{"path":"tri-net/specs/nickname_directory.t27","category":"tri-net/specs","name":"nickname_directory","module":"NicknameDirectory","lines":204,"bytes":8612,"description":"Nickname directory policy. String normalization and network storage are adapter responsibilities. phi^2 + phi^-2 = 3","health":"ok","tokens":1068,"nodes":471,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8929,"rust":2913,"verilog":13500,"verilog_hir":1622,"zig":6979},"repo":"tri-net","kinds":{"Module":12,"UseDecl":1,"ConstDecl":12,"ExprLiteral":163,"FnDecl":11,"StmtIf":11,"ExprBinary":59,"ExprIdentifier":57,"ExprReturn":22,"ExprUnary":4,"TestBlock":11,"StmtExpr":33,"ExprCall":69,"InvariantBlock":5,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 11 functions and 12 constants. Carries 11 tests, 5 invariants and 1 bench. 204 lines compile to 1,068 tokens and 471 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Clean through every layer."},{"path":"tri-net/specs/olsr_routing.t27","category":"tri-net/specs","name":"olsr_routing","module":"OlsrRouting","lines":182,"bytes":6252,"description":"OLSR-style routing -- ultra-simplified for T27. Neighbor entries are u32-packed [id:8][quality:8][last_seen:16]; the 4-slot neighbor table travels as a [u32; 4] array parameter (read paths) while write paths return the UPDATED ENTRY plus a slot decision, so every function stays scalar-valued and lowers to all backends. (The original wave-era file packed four entries into one u32 with 256-bit masks and","health":"ok","tokens":1191,"nodes":428,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5821,"rust":2570,"verilog":9797,"verilog_hir":1234,"zig":5225},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":99,"FnDecl":15,"ExprReturn":27,"ExprBinary":51,"ExprIdentifier":85,"ExprCall":69,"ExprIndex":13,"ExprFieldAccess":1,"StmtIf":12,"StmtLocal":6,"TestBlock":6,"StmtAssign":3,"StmtExpr":16,"ExprArrayLiteral":4},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 15 functions and 4 constants. Carries 6 tests. 182 lines compile to 1,191 tokens and 428 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 9.6 KB. Clean through every layer."},{"path":"tri-net/specs/packet_loss_injection.t27","category":"tri-net/specs","name":"packet_loss_injection","module":"PacketLossInjection","lines":168,"bytes":4873,"description":"Packet loss injection - simulates network errors Tests CRC error detection, lost ACKs, duplicates, replay","health":"ok","tokens":753,"nodes":330,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5123,"rust":1134,"verilog":9777,"verilog_hir":855,"zig":4308},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":6,"ExprLiteral":68,"FnDecl":9,"StmtIf":1,"ExprBinary":34,"ExprIdentifier":95,"ExprReturn":8,"ExprFieldAccess":1,"ExprCall":37,"TestBlock":15,"StmtAssign":35,"StmtExpr":17},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 9 functions and 6 constants. Carries 15 tests. 168 lines compile to 753 tokens and 330 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 9.5 KB. Clean through every layer."},{"path":"tri-net/specs/packet_queue.t27","category":"tri-net/specs","name":"packet_queue","module":"PacketQueue","lines":125,"bytes":3112,"description":"Packet queue - all inline, no intermediate variables","health":"ok","tokens":715,"nodes":321,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4009,"rust":1131,"verilog":7355,"verilog_hir":639,"zig":3426},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":1,"ExprLiteral":65,"FnDecl":8,"ExprReturn":11,"ExprFieldAccess":7,"ExprBinary":32,"ExprIdentifier":72,"ExprCall":66,"StmtIf":3,"StmtLocal":6,"TestBlock":9,"StmtExpr":11,"StmtAssign":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 8 functions and 1 constant. Carries 9 tests. 125 lines compile to 715 tokens and 321 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 7.2 KB. Clean through every layer."},{"path":"tri-net/specs/pattern_predictor.t27","category":"tri-net/specs","name":"pattern_predictor","module":"pattern_predictor","lines":411,"bytes":14654,"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","health":"warn","tokens":2931,"nodes":1334,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13361,"rust":5266,"verilog":21188,"verilog_hir":2302,"zig":11233},"repo":"tri-net","kinds":{"Module":36,"UseDecl":1,"ConstDecl":3,"ExprLiteral":567,"FnDecl":17,"ExprReturn":29,"ExprBinary":128,"ExprIdentifier":230,"ExprArrayLiteral":1,"StmtIf":26,"ExprIndex":1,"StmtLocal":33,"StmtAssign":46,"ExprCall":179,"TestBlock":16,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 17 functions and 3 constants. Carries 16 tests. 411 lines compile to 2,931 tokens and 1,334 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 20.7 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/performance_benchmarks.t27","category":"tri-net/specs","name":"performance_benchmarks","module":"PerformanceBenchmarks","lines":196,"bytes":5697,"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","health":"ok","tokens":1041,"nodes":490,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6434,"rust":1253,"verilog":12036,"verilog_hir":1066,"zig":4759},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":3,"ExprLiteral":94,"FnDecl":13,"ExprReturn":16,"ExprBinary":54,"ExprIdentifier":130,"StmtIf":3,"ExprCall":90,"TestBlock":16,"StmtAssign":41,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 13 functions and 3 constants. Carries 16 tests. 196 lines compile to 1,041 tokens and 490 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Clean through every layer."},{"path":"tri-net/specs/performance_profiler.t27","category":"tri-net/specs","name":"performance_profiler","module":"performance_profiler","lines":374,"bytes":11788,"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","health":"warn","tokens":2027,"nodes":802,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":12606,"rust":7555,"verilog":19106,"verilog_hir":3689,"zig":8850},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":4,"ExprLiteral":178,"FnDecl":40,"ExprReturn":47,"ExprBinary":174,"ExprIdentifier":193,"StmtLocal":35,"StmtWhile":6,"StmtIf":17,"ExprCall":34,"ExprIndex":12,"StmtAssign":24,"TestBlock":2,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 40 functions and 4 constants. Carries 2 tests. 374 lines compile to 2,027 tokens and 802 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.7 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/power_monitoring.t27","category":"tri-net/specs","name":"power_monitoring","module":"PowerMonitoring","lines":257,"bytes":8680,"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","health":"warn","tokens":1392,"nodes":631,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":9056,"rust":3322,"verilog":16188,"verilog_hir":1244,"zig":7199},"repo":"tri-net","kinds":{"Module":14,"UseDecl":1,"ConstDecl":7,"ExprLiteral":150,"FnDecl":14,"ExprReturn":18,"ExprBinary":64,"ExprIdentifier":163,"ExprCall":94,"StmtLocal":20,"StmtIf":10,"StmtAssign":33,"TestBlock":20,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 14 functions and 7 constants. Carries 20 tests. 257 lines compile to 1,392 tokens and 631 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.8 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/production_deployment.t27","category":"tri-net/specs","name":"production_deployment","module":"ProductionDeployment","lines":199,"bytes":6443,"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","health":"ok","tokens":1118,"nodes":470,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7670,"rust":2811,"verilog":13334,"verilog_hir":1866,"zig":5435},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":9,"ExprLiteral":141,"FnDecl":20,"ExprReturn":20,"ExprBinary":79,"ExprIdentifier":82,"ExprCall":56,"StmtLocal":1,"StmtIf":4,"StmtAssign":16,"TestBlock":15,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 20 functions and 9 constants. Carries 15 tests. 199 lines compile to 1,118 tokens and 470 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.0 KB. Clean through every layer."},{"path":"tri-net/specs/production_scenarios.t27","category":"tri-net/specs","name":"production_scenarios","module":"ProductionScenarios","lines":212,"bytes":7245,"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","health":"ok","tokens":1110,"nodes":508,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7533,"rust":1490,"verilog":12809,"verilog_hir":1333,"zig":6358},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":5,"ExprLiteral":101,"FnDecl":13,"ExprReturn":20,"ExprBinary":51,"ExprFieldAccess":2,"ExprIdentifier":126,"ExprCall":99,"StmtIf":7,"TestBlock":14,"StmtAssign":29,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 13 functions and 5 constants. Carries 14 tests. 212 lines compile to 1,110 tokens and 508 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Clean through every layer."},{"path":"tri-net/specs/quarantine_manager.t27","category":"tri-net/specs","name":"quarantine_manager","module":"quarantine_manager","lines":348,"bytes":11780,"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","health":"ok","tokens":1793,"nodes":732,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11964,"rust":5963,"verilog":18481,"verilog_hir":2469,"zig":9066},"repo":"tri-net","kinds":{"Module":47,"UseDecl":1,"ConstDecl":14,"ExprLiteral":136,"FnDecl":31,"ExprReturn":55,"ExprBinary":117,"ExprIdentifier":182,"StmtLocal":32,"ExprCall":63,"StmtIf":26,"StmtWhile":2,"ExprIndex":2,"StmtAssign":9,"TestBlock":3,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 31 functions and 14 constants. Carries 3 tests. 348 lines compile to 1,793 tokens and 732 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Clean through every layer."},{"path":"tri-net/specs/redundancy_management.t27","category":"tri-net/specs","name":"redundancy_management","module":"RedundancyManagement","lines":333,"bytes":11228,"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","health":"warn","tokens":2253,"nodes":989,"depth":14,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10544,"rust":5019,"verilog":17470,"verilog_hir":1466,"zig":8805},"repo":"tri-net","kinds":{"Module":35,"UseDecl":1,"ConstDecl":4,"ExprLiteral":352,"FnDecl":17,"ExprReturn":30,"ExprBinary":81,"ExprIdentifier":167,"ExprArrayLiteral":5,"StmtLocal":17,"ExprIndex":5,"StmtIf":28,"ExprCall":176,"StmtAssign":35,"TestBlock":16,"StmtExpr":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 17 functions and 4 constants. Carries 16 tests. 333 lines compile to 2,253 tokens and 989 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.1 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/resource_scheduler.t27","category":"tri-net/specs","name":"resource_scheduler","module":"ResourceScheduler","lines":381,"bytes":14351,"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","health":"warn","tokens":2487,"nodes":1119,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":14600,"rust":7825,"verilog":23602,"verilog_hir":2023,"zig":12212},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":6,"ExprLiteral":283,"FnDecl":23,"ExprReturn":24,"ExprBinary":123,"ExprIdentifier":280,"ExprArrayLiteral":1,"StmtIf":26,"ExprIndex":1,"StmtLocal":46,"ExprCall":179,"StmtAssign":53,"TestBlock":18,"StmtExpr":28},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 23 functions and 6 constants. Carries 18 tests. 381 lines compile to 2,487 tokens and 1,119 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 23.0 KB. Compiles with 1 type error."},{"path":"tri-net/specs/routing_etx.t27","category":"tri-net/specs","name":"routing_etx","module":"RoutingEtx","lines":172,"bytes":6561,"description":"tri-net/specs/routing_etx.t27 Fixed-point formalization of the ETX link metric in src/routing.rs (T27-first). Delivery ratios and the RTI penalty are expressed in MILLI units (1000 = 1.0), ETX likewise in milli (1000 = 1.0 transmissions). f32::INFINITY has no integer analogue, so a DEAD link is the sentinel 0 (a real ETX is always >= 1000, so 0 is unambiguous). The live routing.rs path still runs the f32 version; a Rust","health":"ok","tokens":628,"nodes":170,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4095,"rust":1481,"verilog":7819,"verilog_hir":859,"zig":4162},"repo":"tri-net","kinds":{"Module":10,"UseDecl":1,"ConstDecl":5,"ExprLiteral":12,"FnDecl":5,"StmtIf":9,"ExprBinary":17,"ExprIdentifier":35,"ExprReturn":14,"StmtLocal":1,"ExprCall":1,"TestBlock":14,"StmtExpr":44,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 5 functions and 5 constants. Carries 14 tests and 2 invariants. 172 lines compile to 628 tokens and 170 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Clean through every layer."},{"path":"tri-net/specs/rti_alert.t27","category":"tri-net/specs","name":"rti_alert","module":"RtiAlert","lines":66,"bytes":2204,"description":"tri-net/specs/rti_alert.t27 Partial spec-first flip of src/rti_alert.rs (T27-first). The centroid/velocity math there is f32 (sqrt/powi) and can't be expressed in T27's integer world, but the anomaly-severity -> alert-severity STEP MAPPING is pure integer logic: it is lifted here as the single source of truth so the Rust node can include! the generated function instead of hand-writing the ladder.","health":"ok","tokens":198,"nodes":59,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2016,"rust":264,"verilog":3402,"verilog_hir":322,"zig":1504},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":4,"ExprLiteral":7,"FnDecl":1,"StmtIf":3,"ExprBinary":3,"ExprIdentifier":7,"ExprReturn":4,"TestBlock":4,"StmtExpr":16,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 1 function and 4 constants. Carries 4 tests and 2 invariants. 66 lines compile to 198 tokens and 59 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"tri-net/specs/rti_security.t27","category":"tri-net/specs","name":"rti_security","module":"RTISecurity","lines":275,"bytes":8102,"description":"RTI Security — passive perimeter monitoring via mesh RSSI Variant C: commercial security system, no cameras, AI classification phi^2 + phi^-2 = 3","health":"ok","tokens":1158,"nodes":507,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8114,"rust":3051,"verilog":14804,"verilog_hir":1351,"zig":6837},"repo":"tri-net","kinds":{"Module":23,"UseDecl":1,"ConstDecl":13,"ExprLiteral":146,"FnDecl":10,"StmtIf":22,"ExprIdentifier":85,"ExprBinary":57,"ExprReturn":31,"StmtLocal":6,"ExprCall":54,"ExprFieldAccess":3,"TestBlock":26,"StmtExpr":26,"InvariantBlock":4},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 13 constants. Carries 26 tests and 4 invariants. 275 lines compile to 1,158 tokens and 507 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.5 KB. Clean through every layer."},{"path":"tri-net/specs/self_healing.t27","category":"tri-net/specs","name":"self_healing","module":"SelfHealing","lines":295,"bytes":10407,"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","health":"ok","tokens":1698,"nodes":746,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10963,"rust":4061,"verilog":18987,"verilog_hir":1843,"zig":8472},"repo":"tri-net","kinds":{"Module":6,"UseDecl":1,"ConstDecl":4,"ExprLiteral":230,"FnDecl":22,"ExprReturn":27,"ExprBinary":84,"ExprIdentifier":139,"StmtLocal":19,"ExprCall":124,"StmtIf":5,"TestBlock":22,"StmtAssign":30,"StmtExpr":33},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 22 functions and 4 constants. Carries 22 tests. 295 lines compile to 1,698 tokens and 746 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.5 KB. Clean through every layer."},{"path":"tri-net/specs/swarm_coordinator.t27","category":"tri-net/specs","name":"swarm_coordinator","module":"SwarmCoordinator","lines":343,"bytes":13722,"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","health":"ok","tokens":2536,"nodes":1157,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13383,"rust":4369,"verilog":20273,"verilog_hir":1785,"zig":11192},"repo":"tri-net","kinds":{"Module":51,"UseDecl":1,"ConstDecl":6,"ExprLiteral":319,"FnDecl":17,"ExprReturn":18,"ExprBinary":160,"ExprIdentifier":262,"ExprArrayLiteral":1,"StmtIf":34,"ExprIndex":1,"StmtLocal":16,"ExprCall":182,"StmtAssign":48,"TestBlock":16,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 17 functions and 6 constants. Carries 16 tests. 343 lines compile to 2,536 tokens and 1,157 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.8 KB. Clean through every layer."},{"path":"tri-net/specs/test_framework.t27","category":"tri-net/specs","name":"test_framework","module":"test_framework","lines":417,"bytes":13256,"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","health":"warn","tokens":2325,"nodes":925,"depth":18,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":14030,"rust":7061,"verilog":21317,"verilog_hir":3892,"zig":10147},"repo":"tri-net","kinds":{"Module":52,"UseDecl":1,"ConstDecl":14,"ExprLiteral":212,"FnDecl":45,"ExprReturn":65,"ExprBinary":198,"ExprIdentifier":201,"StmtLocal":36,"ExprCall":45,"StmtIf":24,"StmtWhile":4,"ExprIndex":3,"StmtAssign":15,"TestBlock":2,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 45 functions and 14 constants. Carries 2 tests. 417 lines compile to 2,325 tokens and 925 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/test_validator.t27","category":"tri-net/specs","name":"test_validator","module":"test_validator","lines":392,"bytes":13118,"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","health":"warn","tokens":2167,"nodes":827,"depth":12,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13540,"rust":7665,"verilog":20296,"verilog_hir":3900,"zig":9761},"repo":"tri-net","kinds":{"Module":32,"UseDecl":1,"ConstDecl":23,"ExprLiteral":207,"FnDecl":45,"ExprReturn":56,"ExprBinary":169,"ExprIdentifier":176,"StmtLocal":22,"ExprCall":50,"StmtIf":17,"StmtWhile":2,"ExprIndex":1,"StmtAssign":17,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 45 functions and 23 constants. Carries 2 tests. 392 lines compile to 2,167 tokens and 827 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 19.8 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/timer.t27","category":"tri-net/specs","name":"timer","module":"MeshTimer","lines":99,"bytes":2372,"description":"Simple exponential backoff timer","health":"ok","tokens":413,"nodes":223,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3006,"rust":291,"verilog":5784,"verilog_hir":431,"zig":1988},"repo":"tri-net","kinds":{"Module":9,"UseDecl":1,"ConstDecl":1,"ExprLiteral":54,"FnDecl":3,"StmtIf":4,"ExprBinary":24,"ExprIdentifier":46,"ExprReturn":7,"TestBlock":8,"StmtAssign":17,"ExprCall":34,"StmtExpr":15},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions and 1 constant. Carries 8 tests. 99 lines compile to 413 tokens and 223 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"tri-net/specs/timing_closure.t27","category":"tri-net/specs","name":"timing_closure","module":"TimingClosure","lines":218,"bytes":6862,"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","health":"ok","tokens":1050,"nodes":465,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7194,"rust":2168,"verilog":13143,"verilog_hir":1424,"zig":5275},"repo":"tri-net","kinds":{"Module":11,"UseDecl":1,"ConstDecl":8,"ExprLiteral":124,"FnDecl":14,"ExprReturn":21,"ExprBinary":67,"ExprIdentifier":93,"StmtIf":7,"ExprCall":60,"TestBlock":18,"StmtAssign":19,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 8 constants. Carries 18 tests. 218 lines compile to 1,050 tokens and 465 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"tri-net/specs/topology_visualizer.t27","category":"tri-net/specs","name":"topology_visualizer","module":"topology_visualizer","lines":436,"bytes":14894,"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","health":"warn","tokens":2470,"nodes":984,"depth":16,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13973,"rust":9871,"verilog":21311,"verilog_hir":2709,"zig":11159},"repo":"tri-net","kinds":{"Module":39,"UseDecl":1,"ConstDecl":21,"ExprLiteral":176,"FnDecl":31,"ExprReturn":38,"ExprBinary":181,"ExprIdentifier":289,"StmtIf":18,"StmtLocal":66,"ExprCall":55,"StmtWhile":9,"ExprIndex":20,"StmtAssign":31,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 31 functions and 21 constants. Carries 2 tests. 436 lines compile to 2,470 tokens and 984 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Compiles with 1 type error."},{"path":"tri-net/specs/traffic_animator.t27","category":"tri-net/specs","name":"traffic_animator","module":"traffic_animator","lines":496,"bytes":17298,"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","health":"warn","tokens":2879,"nodes":1138,"depth":11,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":17444,"rust":11535,"verilog":26024,"verilog_hir":4603,"zig":12840},"repo":"tri-net","kinds":{"Module":36,"UseDecl":1,"ConstDecl":12,"ExprLiteral":248,"FnDecl":49,"ExprReturn":56,"ExprBinary":255,"ExprIdentifier":294,"StmtLocal":57,"ExprCall":45,"StmtIf":20,"StmtAssign":32,"StmtWhile":5,"ExprIndex":18,"ExprArrayLiteral":1,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 49 functions and 12 constants. Carries 2 tests. 496 lines compile to 2,879 tokens and 1,138 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 25.4 KB. Compiles with 3 type errors."},{"path":"tri-net/specs/transport_tx_fsm.t27","category":"tri-net/specs","name":"transport_tx_fsm","module":"TransportTxFsm","lines":242,"bytes":7932,"description":"Transport TX FSM for mesh data frame transmission Port from trios-mesh/src/daemon.rs Node::seal_data() Simplified: no crypto, FSM-based retry logic","health":"ok","tokens":1202,"nodes":632,"depth":26,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7487,"rust":840,"verilog":13197,"verilog_hir":807,"zig":6691},"repo":"tri-net","kinds":{"Module":53,"UseDecl":1,"ConstDecl":10,"ExprLiteral":159,"FnDecl":5,"StmtIf":26,"ExprBinary":69,"ExprIdentifier":145,"ExprReturn":31,"ExprFieldAccess":8,"TestBlock":17,"StmtAssign":27,"ExprCall":54,"StmtExpr":27},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 5 functions and 10 constants. Carries 17 tests. 242 lines compile to 1,202 tokens and 632 AST nodes, depth 26. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"tri-net/specs/tri_a2a.t27","category":"tri-net/specs","name":"tri_a2a","module":"TriA2A","lines":728,"bytes":48469,"description":"TRI-NET A2A-over-mesh: carry Agent-to-Agent messages as SEALED mesh datagrams, reusing the existing stack -- MeshWire (wire.t27, 11-byte header), RouterTtl (router_ttl.t27, multi-hop + split-horizon), CryptoFrame (crypto_frame.t27, AEAD + ratchet + replay). This spec adds ONLY the A2A message-class layer; it creates no new transport. The hosted skill is a GoldenFloat op (the workload GF was built for): an agent","health":"ok","tokens":4845,"nodes":2347,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":33445,"rust":8568,"verilog":44592,"verilog_hir":2211,"zig":28890},"repo":"tri-net","kinds":{"Module":107,"UseDecl":1,"ConstDecl":22,"ExprLiteral":821,"FnDecl":26,"StmtIf":83,"ExprBinary":262,"ExprIdentifier":472,"ExprReturn":109,"ExprCall":283,"StmtLocal":2,"ExprFieldAccess":4,"TestBlock":22,"StmtExpr":132,"StmtAssign":1},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 26 functions and 22 constants. Carries 22 tests. 728 lines compile to 4,845 tokens and 2,347 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 43.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_a2a_card.t27","category":"tri-net/specs","name":"tri_a2a_card","module":"TriA2ACard","lines":259,"bytes":13470,"description":"TRI-NET A2A agent card: what a node ADVERTISES it can compute, so a requester routes a task only to a host that hosts its (format-family, width). Without this, tri_a2a knows a skill's family (skill_family) but nothing checks a HOST actually serves it -- a GF-T16 task could be sent to a GF16-only node and silently fail. The card packs two masks into one u32 (no allocation, fits a heartbeat body): card = (family_mask << 16) | width_mask","health":"ok","tokens":1656,"nodes":766,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9944,"rust":2786,"verilog":14730,"verilog_hir":1243,"zig":7980},"repo":"tri-net","kinds":{"Module":18,"UseDecl":1,"ConstDecl":11,"ExprLiteral":193,"FnDecl":18,"ExprReturn":32,"ExprBinary":102,"ExprIdentifier":159,"ExprCall":152,"StmtIf":14,"TestBlock":8,"StmtAssign":7,"StmtExpr":45,"StmtLocal":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 11 constants. Carries 8 tests. 259 lines compile to 1,656 tokens and 766 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_a2a_wire.t27","category":"tri-net/specs","name":"tri_a2a_wire","module":"TriA2AWire","lines":184,"bytes":9401,"description":"TRI-NET A2A message wire layout inside the SEALED mesh payload. tri_a2a defines the message classes and port demux; this fixes the BYTE layout an endpoint parses after decrypting (a relay never parses it -- the payload is ciphertext, demuxed by port, per tri_a2a). Fixed-length header (no variable-length parsing, so no length-confusion / injection surface, unlike JSON-RPC A2A): [ msg_class(1) | task_id(4, big-endian) | skill(2, big-endian) | body... ]","health":"ok","tokens":1139,"nodes":536,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6734,"rust":1916,"verilog":10152,"verilog_hir":1138,"zig":5261},"repo":"tri-net","kinds":{"Module":12,"UseDecl":1,"ConstDecl":17,"ExprLiteral":233,"FnDecl":10,"ExprReturn":19,"ExprBinary":64,"ExprIdentifier":59,"StmtIf":9,"TestBlock":7,"StmtExpr":34,"ExprCall":71},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 17 constants. Carries 7 tests. 184 lines compile to 1,139 tokens and 536 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 9.9 KB. Clean through every layer."},{"path":"tri-net/specs/tri_challenge.t27","category":"tri-net/specs","name":"tri_challenge","module":"TriChallenge","lines":434,"bytes":20868,"description":"TRI-NET DePIN challenge game: decentralized dispute resolution, so no TRUSTED settlement is needed to catch a lying node. Any node (the challenger) may dispute another node's (the defender's) claimed receipt seal by posting a bond and its own independently computed seal. The dispute is resolved by ANYONE re-metering the same relayed stream to get the truth seal; the party whose seal disagrees with the truth LOSES and forfeits its bond to the winner. This makes challenging a liar profitable","health":"ok","tokens":2164,"nodes":999,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14384,"rust":4085,"verilog":21595,"verilog_hir":2119,"zig":11915},"repo":"tri-net","kinds":{"Module":26,"UseDecl":1,"ConstDecl":10,"ExprLiteral":279,"FnDecl":23,"ExprReturn":40,"ExprBinary":104,"ExprIdentifier":246,"StmtIf":17,"TestBlock":15,"StmtExpr":54,"ExprCall":123,"StmtAssign":49,"StmtLocal":8,"ExprFieldAccess":4},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 23 functions and 10 constants. Carries 15 tests. 434 lines compile to 2,164 tokens and 999 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.1 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_account.t27","category":"tri-net/specs","name":"tri_compute_account","module":"TriComputeAccount","lines":445,"bytes":24509,"description":"TRI-NET compute account: the conserved ledger the value layer was missing. tri_compute_settle mints rewards, tri_compute_bond locks collateral, and tri_compute_challenge slashes -- but nothing proved these move value without creating or destroying it. This spec models one node's account as (balance, locked) and pins the CONSERVATION invariants every operation must obey: lock/release keep total unchanged (value only moves between the two","health":"ok","tokens":1968,"nodes":934,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13764,"rust":1793,"verilog":21319,"verilog_hir":1483,"zig":11785},"repo":"tri-net","kinds":{"Module":23,"UseDecl":1,"FnDecl":18,"ExprReturn":29,"ExprBinary":98,"ExprIdentifier":135,"StmtIf":11,"StmtLocal":3,"ExprLiteral":338,"ExprCall":167,"TestBlock":21,"StmtAssign":25,"StmtExpr":65},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 18 functions. Carries 21 tests. 445 lines compile to 1,968 tokens and 934 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_bitnet.t27","category":"tri-net/specs","name":"tri_compute_bitnet","module":"TriComputeBitnet","lines":313,"bytes":17391,"description":"TRI-NET BitNet-style mixed layer attestation: ternary weights {-1,0,+1} times GF16 activations. This is the target workload the whole GF-vs-ternary analysis points at -- weights are the 0-DSP part (sign-select / popcount, as in trinet_mac32), the GF16 activation and accumulated result are the value part (magnitude, DSP or -nodsp soft-logic). One receipt binds BOTH: the packed_w ternary weight code, the GF16 activation hash, and the GF16 result. It also","health":"ok","tokens":1908,"nodes":944,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11606,"rust":2953,"verilog":16954,"verilog_hir":1304,"zig":9544},"repo":"tri-net","kinds":{"Module":22,"UseDecl":1,"ConstDecl":5,"ExprLiteral":370,"FnDecl":15,"ExprReturn":30,"ExprBinary":139,"ExprIdentifier":102,"StmtLocal":9,"StmtIf":15,"ExprCall":157,"TestBlock":11,"StmtExpr":56,"StmtAssign":12},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 15 functions and 5 constants. Carries 11 tests. 313 lines compile to 1,908 tokens and 944 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_bond.t27","category":"tri-net/specs","name":"tri_compute_bond","module":"TriComputeBond","lines":228,"bytes":12122,"description":"TRI-NET compute bond escrow: the shared collateral that settle + challenge act on. tri_compute_settle credits rewards and tri_compute_challenge slashes wrong results, but each moved a bare balance. This spec gives one bonded lifecycle: FREE -> post (lock collateral out of balance) -> LOCKED -> resolve -> RELEASED (honest, bond returns) or SLASHED (wrong, bond forfeited). Locking is guarded against underflow (you cannot post more than you hold).","health":"ok","tokens":1107,"nodes":514,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7928,"rust":1410,"verilog":11610,"verilog_hir":926,"zig":6809},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":7,"ExprLiteral":183,"FnDecl":10,"ExprReturn":17,"ExprBinary":58,"ExprIdentifier":64,"StmtIf":7,"StmtLocal":2,"ExprFieldAccess":4,"ExprCall":92,"TestBlock":8,"StmtExpr":41,"StmtAssign":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 7 constants. Carries 8 tests. 228 lines compile to 1,107 tokens and 514 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_challenge.t27","category":"tri-net/specs","name":"tri_compute_challenge","module":"TriComputeChallenge","lines":1103,"bytes":66744,"description":"TRI-NET compute dispute + slash: economic security around the GF compute core. Settlement (tri_compute_settle) pays a fresh, self-consistent receipt -- but self-consistent does NOT mean CORRECT. A dishonest executor can sign a fresh receipt for a WRONG GoldenFloat result and get paid. This spec adds the fraud proof: because GF ops are deterministic and bit-exact (conformance vectors), any challenger can recompute gf_op(a,b) with the golden GF unit and settle the","health":"ok","tokens":6942,"nodes":3125,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":43673,"rust":7203,"verilog":59417,"verilog_hir":3623,"zig":36425},"repo":"tri-net","kinds":{"Module":110,"UseDecl":1,"ConstDecl":9,"ExprLiteral":1208,"FnDecl":44,"ExprReturn":104,"ExprBinary":268,"ExprIdentifier":621,"StmtIf":60,"ExprCall":447,"StmtLocal":7,"ExprFieldAccess":6,"TestBlock":38,"StmtAssign":20,"StmtExpr":182},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 44 functions and 9 constants. Carries 38 tests. 1103 lines compile to 6,942 tokens and 3,125 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 58.0 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_gfvalid.t27","category":"tri-net/specs","name":"tri_compute_gfvalid","module":"TriComputeGfValid","lines":274,"bytes":15619,"description":"TRI-NET GoldenFloat validity, generalised across the GF family. The settle gate's is_finite_gf16 was hardcoded to GF16 (exp field == 0x3F): it silently passes inf/nan from GF4/GF8/GF14/GF20+ results, so garbage compute in any non-GF16 format could be paid. A GF value is special (inf/nan) exactly when its exponent field is all-ones; the field's width/position is per-format: GF4 E1 M2 | GF8 E3 M4 | GF12 E4 M7 | GF14 E5 M8 | GF16 E6 M9 | GF20 E7 M12","health":"ok","tokens":1577,"nodes":786,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10262,"rust":2081,"verilog":14958,"verilog_hir":1036,"zig":8397},"repo":"tri-net","kinds":{"Module":24,"UseDecl":1,"FnDecl":11,"StmtLocal":5,"ExprBinary":98,"ExprLiteral":319,"ExprIdentifier":60,"ExprReturn":30,"StmtIf":19,"ConstDecl":3,"ExprCall":142,"TestBlock":11,"StmtExpr":63},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 11 functions and 3 constants. Carries 11 tests. 274 lines compile to 1,577 tokens and 786 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_optimistic.t27","category":"tri-net/specs","name":"tri_compute_optimistic","module":"TriComputeOptimistic","lines":143,"bytes":7250,"description":"TRI-NET optimistic settlement lifecycle. The node's settle path is PESSIMISTIC: it recomputes every receipt before paying. That is safe but does not scale -- an optimistic path credits the reward PROVISIONALLY (with the executor's bond locked), opens a challenge window, and only a successful challenge (tri_compute_challenge) REVERSES the credit and slashes the bond; unchallenged receipts FINALIZE when the window closes. This is the compute analogue of an optimistic rollup (Keryx OPoI /","health":"ok","tokens":650,"nodes":295,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5153,"rust":969,"verilog":7645,"verilog_hir":950,"zig":3725},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":6,"ExprLiteral":94,"FnDecl":7,"StmtIf":6,"ExprBinary":37,"ExprIdentifier":40,"ExprReturn":13,"ExprCall":50,"TestBlock":5,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions and 6 constants. Carries 5 tests. 143 lines compile to 650 tokens and 295 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_payout.t27","category":"tri-net/specs","name":"tri_compute_payout","module":"TriComputePayout","lines":120,"bytes":5905,"description":"TRI-NET end-to-end payout: compose reputation weighting (tri_compute_reputation) with the pool split (tri_compute_pool) into one reward distribution, and pin the property that matters when the two are combined: a REPUTATION-WEIGHTED floor-div split still never over-issues (sum of shares <= pool). Higher-reputation nodes earn a larger share for equal raw work; a slashed (low-reputation) node earns less; an empty round pays nobody. Self-contained (mirrors the two source specs)","health":"ok","tokens":632,"nodes":311,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4238,"rust":314,"verilog":6602,"verilog_hir":637,"zig":3864},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"FnDecl":3,"StmtLocal":4,"ExprBinary":31,"ExprFieldAccess":11,"ExprIdentifier":58,"StmtIf":3,"ExprLiteral":99,"ExprReturn":6,"TestBlock":6,"StmtAssign":14,"ExprCall":48,"StmtExpr":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions. Carries 6 tests. 120 lines compile to 632 tokens and 311 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_pool.t27","category":"tri-net/specs","name":"tri_compute_pool","module":"TriComputePool","lines":237,"bytes":13270,"description":"TRI-NET multi-executor pool split: share one reward pool across several GF executors in proportion to their VERIFIED work, so a mesh of nodes -- not one -- earns from a round. Mirrors tri_settle's discipline: floor division, so the sum of shares never EXCEEDS the pool (no over-issuance; the floor remainder is simply not minted). A node with zero verified work earns zero. \"Work\" is the summed GoldenFloat width of a node's verified receipts (wider GF op = more work).","health":"ok","tokens":1106,"nodes":544,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7434,"rust":573,"verilog":11694,"verilog_hir":882,"zig":6691},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"FnDecl":6,"StmtLocal":6,"ExprBinary":64,"ExprFieldAccess":8,"ExprIdentifier":52,"StmtIf":6,"ExprLiteral":222,"ExprReturn":12,"ExprCall":92,"TestBlock":13,"StmtExpr":40,"StmtAssign":9},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 6 functions. Carries 13 tests. 237 lines compile to 1,106 tokens and 544 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_receipt.t27","category":"tri-net/specs","name":"tri_compute_receipt","module":"TriComputeReceipt","lines":538,"bytes":32317,"description":"TRI-NET compute-attesting receipt: bind an agent's COMPUTE result (not just relayed bytes) into a verifiable, chained receipt. tri_depin seals forwarded bytes (proof-of-relay); this seals WORK: a leaf commits {executor, task, input-hash, output, epoch} so a peer can confirm which executor produced which output for which input, and receipts chain prev->next like tri_ledger's state root -- tampering with any past result or reordering the chain changes the head.","health":"ok","tokens":4790,"nodes":2175,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":23913,"rust":8823,"verilog":34977,"verilog_hir":3021,"zig":19314},"repo":"tri-net","kinds":{"Module":71,"UseDecl":1,"ConstDecl":20,"ExprLiteral":884,"FnDecl":20,"ExprReturn":89,"ExprBinary":174,"ExprIdentifier":482,"StmtLocal":26,"ExprCall":204,"StmtIf":69,"TestBlock":22,"StmtAssign":55,"StmtExpr":58},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 20 functions and 20 constants. Carries 22 tests. 538 lines compile to 4,790 tokens and 2,175 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 34.2 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_reputation.t27","category":"tri-net/specs","name":"tri_compute_reputation","module":"TriComputeReputation","lines":265,"bytes":14508,"description":"TRI-NET executor reputation: weight the pool split (tri_compute_pool) by a node's track record, so a repeatedly-honest node earns a larger share for the same raw work and a slashed node earns less. Reputation rises on honest settlement (capped) and is halved on every slash -- a strong, memory-bearing penalty that a single fresh receipt cannot immediately undo.","health":"ok","tokens":1226,"nodes":584,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8508,"rust":1032,"verilog":13234,"verilog_hir":937,"zig":7465},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":6,"ExprLiteral":204,"FnDecl":8,"StmtLocal":2,"ExprBinary":56,"ExprFieldAccess":7,"ExprIdentifier":91,"StmtIf":7,"ExprReturn":15,"ExprCall":102,"TestBlock":14,"StmtExpr":42,"StmtAssign":14},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 6 constants. Carries 14 tests. 265 lines compile to 1,226 tokens and 584 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_safety.t27","category":"tri-net/specs","name":"tri_compute_safety","module":"TriComputeSafety","lines":115,"bytes":5141,"description":"TRI-NET compute safety gate: the single no-double-pay invariant that composes the three independent guards the stack grew -- freshness (tri_a2a.is_fresh, anti-replay), finiteness (tri_compute_settle.is_finite_gf16, no inf/nan garbage), and settled-once (a request pays at most one time). A reward is minted ONLY when all three hold. This is the choke point that makes double-pay, replay-pay, and garbage-pay impossible in one place, rather than relying on each ring separately.","health":"ok","tokens":578,"nodes":260,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4158,"rust":520,"verilog":6691,"verilog_hir":612,"zig":2889},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"FnDecl":4,"StmtIf":6,"ExprBinary":24,"ExprIdentifier":16,"ExprLiteral":120,"ExprReturn":10,"ExprCall":40,"TestBlock":8,"StmtExpr":18},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions. Carries 8 tests. 115 lines compile to 578 tokens and 260 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_settle.t27","category":"tri-net/specs","name":"tri_compute_settle","module":"TriComputeSettle","lines":442,"bytes":27323,"description":"TRI-NET compute settlement: turn a VERIFIED compute-receipt into $TRI reward. tri_compute_receipt attests the work (device + GoldenFloat op + result, chained); tri_a2a gates freshness (anti-replay). This spec closes the loop to value: a fresh, verified receipt credits the executor's balance (saturating, like tri_ledger.balance_add) and folds the receipt's sign digest into an auditable settlement state root. A replayed or stale receipt pays ZERO.","health":"ok","tokens":3315,"nodes":1510,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":19293,"rust":3962,"verilog":25929,"verilog_hir":1737,"zig":16171},"repo":"tri-net","kinds":{"Module":33,"UseDecl":1,"ConstDecl":6,"ExprLiteral":726,"FnDecl":19,"ExprReturn":38,"ExprBinary":135,"ExprIdentifier":190,"StmtLocal":11,"StmtIf":19,"ExprFieldAccess":4,"ExprCall":214,"TestBlock":17,"StmtExpr":89,"StmtAssign":8},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 19 functions and 6 constants. Carries 17 tests. 442 lines compile to 3,315 tokens and 1,510 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 25.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_depin.t27","category":"tri-net/specs","name":"tri_depin","module":"TriDepin","lines":256,"bytes":12206,"description":"TRI-NET DePIN Proof-of-Relay accounting -- the on-node substrate a $TRI settlement layer meters. A node's \"physical work\" (Helium-style Proof of Coverage / Proof of Physical Work) is relaying mesh datagrams over the radio; this keeps a tamper-evident, order-sensitive, identity-bound running accumulator over the receipts of what it forwarded. The settlement layer mints $TRI proportional to metered bytes, gated by the accumulator seal so a node","health":"ok","tokens":1340,"nodes":630,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8028,"rust":1347,"verilog":13602,"verilog_hir":979,"zig":6287},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":2,"ExprLiteral":182,"FnDecl":8,"ExprReturn":11,"ExprBinary":47,"ExprIdentifier":176,"StmtLocal":7,"ExprCall":97,"StmtIf":3,"TestBlock":18,"StmtAssign":48,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 2 constants. Carries 18 tests. 256 lines compile to 1,340 tokens and 630 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 13.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_fec.t27","category":"tri-net/specs","name":"tri_fec","module":"TriFec","lines":67,"bytes":3071,"description":"TRI-NET relay FEC: single-erasure XOR recovery, so the integrity gate can RECOVER a channel-corrupted datagram instead of dropping it. A group of K data datagrams carries one parity datagram = their XOR (word by word). If exactly one datagram in the group fails its digest, the relay reconstructs it from the parity and the survivors, recomputes its digest, and -- if it now matches -- meters it. This raises the accepted fraction of an honest relay on a lossy radio link. Two or more","health":"ok","tokens":316,"nodes":138,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2473,"rust":325,"verilog":4382,"verilog_hir":538,"zig":1570},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":3,"ExprReturn":3,"ExprBinary":10,"ExprIdentifier":28,"TestBlock":5,"StmtAssign":10,"ExprCall":26,"ExprLiteral":46,"StmtExpr":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions. Carries 5 tests. 67 lines compile to 316 tokens and 138 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_add.t27","category":"tri-net/specs","name":"tri_gft_add","module":"TriGftAdd","lines":290,"bytes":16490,"description":"TRI-NET verifiable GF-T16 ADDITION (same-sign). tri_gft_arith recomputes a GF-T multiply so a verifier can catch a wrong product; ADD is the other hosted skill (SKILL_GFT16_ADD) and was NOT verifiable. This adds the same-sign add recompute: align the smaller operand to the larger exponent, add the significands, and renormalize a single carry -- so a receipt claiming a GF-T add result can be checked, not just trusted.","health":"ok","tokens":2596,"nodes":1077,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13899,"rust":3732,"verilog":21784,"verilog_hir":1571,"zig":10317},"repo":"tri-net","kinds":{"Module":21,"UseDecl":1,"ConstDecl":2,"ExprLiteral":415,"FnDecl":16,"StmtIf":10,"ExprBinary":77,"ExprIdentifier":278,"ExprReturn":26,"StmtLocal":21,"ExprCall":135,"TestBlock":8,"StmtExpr":49,"BenchBlock":1,"StmtAssign":17},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 16 functions and 2 constants. Carries 8 tests and 1 bench. 290 lines compile to 2,596 tokens and 1,077 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_arith.t27","category":"tri-net/specs","name":"tri_gft_arith","module":"TriGftArith","lines":330,"bytes":17780,"description":"TRI-NET GF-T (ternary-native GoldenFloat) verifiable multiply arithmetic. A compute receipt binds {format, op, operands, result} and is SIGNED, but a signature only attests WHO produced the result, not that the result is CORRECT. This spec lets a verifier RECOMPUTE the checkable core of a GF-T multiply -- its exponent -- and reject a receipt whose claimed exponent is wrong (compute fraud), independent of any signature.","health":"ok","tokens":2315,"nodes":1030,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14378,"rust":2508,"verilog":22287,"verilog_hir":2135,"zig":11581},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":3,"ExprLiteral":363,"FnDecl":17,"StmtLocal":12,"ExprBinary":123,"ExprIdentifier":216,"StmtIf":13,"ExprReturn":30,"ExprCall":138,"ExprFieldAccess":2,"TestBlock":10,"StmtExpr":60,"BenchBlock":1,"StmtAssign":14},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 17 functions and 3 constants. Carries 10 tests and 1 bench. 330 lines compile to 2,315 tokens and 1,030 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 21.8 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_ladder.t27","category":"tri-net/specs","name":"tri_gft_ladder","module":"TriGftLadder","lines":329,"bytes":17128,"description":"TRI-NET GF-T (ternary-native GoldenFloat) ladder geometry + validity. tri_compute_gfvalid.is_finite_gft16 hardcodes ONE rung (GF-T16, reserved offset 80). But GF-T is a LADDER -- GF-T4/8/16/32/... -- each with its own reserved special row at offset_max = 3^Et - 1, where Et is the number of balanced-ternary exponent trits (the ternary analogue of the all-ones binary exponent). This spec generalizes finiteness across the ladder so a receipt/settle path can validate a","health":"ok","tokens":1860,"nodes":987,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11372,"rust":4252,"verilog":19763,"verilog_hir":1010,"zig":9518},"repo":"tri-net","kinds":{"Module":47,"UseDecl":1,"ConstDecl":18,"ExprLiteral":267,"FnDecl":14,"StmtIf":46,"ExprBinary":129,"ExprIdentifier":163,"ExprReturn":60,"ExprCall":150,"TestBlock":9,"StmtExpr":68,"BenchBlock":1,"StmtAssign":14},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 18 constants. Carries 9 tests and 1 bench. 329 lines compile to 1,860 tokens and 987 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 19.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_sub.t27","category":"tri-net/specs","name":"tri_gft_sub","module":"TriGftSub","lines":492,"bytes":21148,"description":"TRI-NET verifiable GF-T16 SUBTRACTION (different-sign add): the deferred case of tri_gft_add. Adding two DIFFERENT-sign operands subtracts magnitudes, which can CANCEL leading bits and needs variable renormalization -- the hard float case. Correctness needs FULL PRECISION during the subtract (a truncated alignment then a left-renormalization amplifies the error and mis-rounds). With |a| >= |b| and d = offset_a - offset_b:","health":"ok","tokens":4045,"nodes":1992,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":20062,"rust":7151,"verilog":32065,"verilog_hir":2380,"zig":16728},"repo":"tri-net","kinds":{"Module":176,"UseDecl":1,"ConstDecl":3,"ExprLiteral":558,"FnDecl":20,"StmtIf":134,"ExprBinary":289,"ExprIdentifier":454,"ExprReturn":154,"StmtLocal":12,"ExprCall":123,"ExprFieldAccess":3,"TestBlock":8,"StmtExpr":42,"BenchBlock":1,"StmtAssign":14},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 20 functions and 3 constants. Carries 8 tests and 1 bench. 492 lines compile to 4,045 tokens and 1,992 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 31.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_ilv.t27","category":"tri-net/specs","name":"tri_ilv","module":"TriInterleave","lines":112,"bytes":5025,"description":"TRI-NET block interleaver: spread consecutive datagrams across FEC codewords so a BURST of channel errors (fading drops a run of adjacent datagrams) becomes at most one error per codeword -- which the single-erasure XOR-FEC (tri_fec) can then recover. Without interleaving a burst wipes >=2 datagrams of one codeword and FEC fails; with depth-D interleaving any burst of length <= D is survivable. Layout: a block of D*W datagrams. Codewords are the W-wide ROWS (one FEC group per","health":"ok","tokens":629,"nodes":296,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3846,"rust":549,"verilog":6317,"verilog_hir":640,"zig":2619},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":1,"ExprLiteral":119,"FnDecl":5,"ExprReturn":7,"ExprBinary":34,"ExprIdentifier":29,"StmtIf":2,"TestBlock":7,"StmtExpr":23,"ExprCall":60,"StmtAssign":3},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions and 1 constant. Carries 7 tests. 112 lines compile to 629 tokens and 296 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.2 KB. Clean through every layer."},{"path":"tri-net/specs/tri_ledger.t27","category":"tri-net/specs","name":"tri_ledger","module":"TriLedger","lines":110,"bytes":4620,"description":"TRI-NET DePIN ledger: persistent, append-only $TRI account state across rounds. Per-round settlement (tri_settle) + its Merkle round-root (tri_merkle) are stateless -- there is no lasting record of accumulated balances. This adds the ledger: a node's balance accumulates (saturating) across rounds, and the whole history is committed by an evolving STATE ROOT that chains each round's root into the previous state, exactly like a blockchain's state-root chain. Given the genesis and the sequence of round","health":"ok","tokens":654,"nodes":293,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3936,"rust":945,"verilog":6637,"verilog_hir":851,"zig":2708},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":2,"ExprLiteral":83,"FnDecl":5,"ExprReturn":6,"ExprBinary":29,"ExprIdentifier":82,"StmtLocal":8,"StmtIf":1,"ExprCall":38,"TestBlock":6,"StmtAssign":20,"StmtExpr":9},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions and 2 constants. Carries 6 tests. 110 lines compile to 654 tokens and 293 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_merkle.t27","category":"tri-net/specs","name":"tri_merkle","module":"TriMerkle","lines":185,"bytes":8139,"description":"TRI-NET DePIN settlement commitment: a Merkle tree over a payout round's receipts. The settlement publishes ONE root hash; each node proves its (receipt, reward) leaf is under that root with a logarithmic inclusion proof -- exactly Helium's model (store the root on-chain, claim a reward by a Merkle proof). This makes the whole round verifiable by anyone from a single 32-bit root, and lets a node prove it was paid correctly without trusting the settler.","health":"ok","tokens":1555,"nodes":707,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6636,"rust":1666,"verilog":10537,"verilog_hir":1312,"zig":5089},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":1,"ExprLiteral":217,"FnDecl":8,"ExprReturn":9,"ExprBinary":37,"ExprIdentifier":224,"StmtLocal":17,"ExprCall":113,"StmtIf":1,"TestBlock":7,"StmtExpr":9,"StmtAssign":60},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 1 constant. Carries 7 tests. 185 lines compile to 1,555 tokens and 707 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_node_identity.t27","category":"tri-net/specs","name":"tri_node_identity","module":"TriNodeIdentity","lines":73,"bytes":3643,"description":"TRI-NET node identity binding: tie a receipt's `executor` field to the actual Ed25519 public key that signs it. Without this, a node signs with its own key but can claim ANY executor id (sig_ok only proves \"some valid signature\", not \"signed by the claimed executor\"). Bind executor = commitment to the signer's public key: executor_id = the low 32 bits of SHA-256(pubkey). A verifier recomputes it from the signing key and rejects a receipt whose executor field does not match -- so","health":"ok","tokens":468,"nodes":220,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3450,"rust":973,"verilog":5295,"verilog_hir":731,"zig":2245},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":2,"ExprLiteral":90,"FnDecl":3,"StmtIf":11,"ExprBinary":24,"ExprIdentifier":29,"ExprReturn":14,"TestBlock":3,"StmtExpr":10,"ExprCall":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions and 2 constants. Carries 3 tests. 73 lines compile to 468 tokens and 220 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.2 KB. Clean through every layer."},{"path":"tri-net/specs/tri_receipt_verify.t27","category":"tri-net/specs","name":"tri_receipt_verify","module":"TriReceiptVerify","lines":107,"bytes":4688,"description":"TRI-NET full compute-receipt acceptance: the capstone that ties the ring's three independent checks into ONE verdict. A receipt is accepted only if ALL hold: sig_ok -- a valid executor Ed25519 signature over the 256-bit digest (WHO) included -- the receipt digest is in the signed Merkle batch root (MEMBERSHIP) compute_ok -- the claimed GF-T result recomputes correctly (tri_gft_arith) (CORRECTNESS) Each check is independent and necessary: a valid signature over a wrong result,","health":"ok","tokens":478,"nodes":224,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3538,"rust":540,"verilog":5577,"verilog_hir":587,"zig":2418},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":6,"ExprLiteral":80,"FnDecl":3,"StmtIf":7,"ExprBinary":25,"ExprIdentifier":28,"ExprReturn":10,"TestBlock":4,"StmtExpr":15,"ExprCall":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions and 6 constants. Carries 4 tests. 107 lines compile to 478 tokens and 224 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_settle.t27","category":"tri-net/specs","name":"tri_settle","module":"TriSettle","lines":229,"bytes":9995,"description":"TRI-NET DePIN settlement aggregator -- turns per-epoch Proof-of-Relay receipts (from tri_depin) into a node's $TRI reward for a payout round. A round is a set of epochs; each node's verified total_bytes are summed, and the round's token pool is split proportionally to metered bytes. Pure arithmetic, verifiable, so a settlement contract (or any auditor) can recompute every payout.","health":"ok","tokens":1108,"nodes":523,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6743,"rust":862,"verilog":11634,"verilog_hir":875,"zig":5808},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":3,"ExprLiteral":156,"FnDecl":7,"StmtLocal":7,"ExprBinary":56,"ExprIdentifier":100,"StmtIf":6,"ExprReturn":13,"ExprFieldAccess":19,"TestBlock":17,"StmtAssign":23,"ExprCall":72,"StmtExpr":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 7 functions and 3 constants. Carries 17 tests. 229 lines compile to 1,108 tokens and 523 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_sha256.t27","category":"tri-net/specs","name":"tri_sha256","module":"TriSha256","lines":875,"bytes":38995,"description":"SHA-256, single 512-bit block, unrolled (t27 has no loops/arrays). Pure u32 add/rotate/xor/shr -- no multiply. Verified against the known sha256(\"abc\") vector. This is the chain-verifiable hash for the DePIN Merkle commitments (Solana uses sha256 natively). AUTHORED via a one-shot text generator; the .t27 is the artifact.","health":"ok","tokens":10136,"nodes":4345,"depth":18,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":33776,"rust":1544,"verilog":55111,"verilog_hir":1523,"zig":32029},"repo":"tri-net","kinds":{"Module":19,"UseDecl":1,"FnDecl":11,"ExprReturn":20,"ExprBinary":660,"ExprIdentifier":1669,"ExprLiteral":746,"ExprCall":431,"StmtLocal":704,"StmtIf":9,"ConstDecl":1,"TestBlock":19,"StmtAssign":26,"StmtExpr":29},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 11 functions and 1 constant. Carries 19 tests. 875 lines compile to 10,136 tokens and 4,345 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 53.8 KB. Clean through every layer."},{"path":"tri-net/specs/tri_slash.t27","category":"tri-net/specs","name":"tri_slash","module":"TriSlash","lines":92,"bytes":3453,"description":"TRI-NET DePIN slashing: the game-theoretic backstop. Rewarding honest relay work (tri_settle) is only half of it -- a node must also LOSE something for lying. Each node posts a bond; when its signed receipt does NOT match an independent re-verification (the settlement re-meters the same stream and recomputes the seal, as the 3-node relay demo does bit-exactly), the bond is forfeited (slashed) from its $TRI balance. Now cheating is strictly worse than not participating, so an honest","health":"ok","tokens":351,"nodes":158,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2962,"rust":467,"verilog":5135,"verilog_hir":631,"zig":1839},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":1,"ExprLiteral":49,"FnDecl":4,"ExprReturn":7,"ExprBinary":16,"ExprIdentifier":27,"StmtLocal":1,"StmtIf":3,"ExprCall":21,"TestBlock":6,"StmtAssign":5,"StmtExpr":10},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 1 constant. Carries 6 tests. 92 lines compile to 351 tokens and 158 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tri-net/specs/trust_manager.t27","category":"tri-net/specs","name":"trust_manager","module":"trust_manager","lines":311,"bytes":11176,"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","health":"warn","tokens":1827,"nodes":772,"depth":9,"loss":0,"tcErrors":8,"failedBackends":[],"outBytes":{"c":11416,"rust":5651,"verilog":18921,"verilog_hir":2061,"zig":9082},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":5,"ExprLiteral":229,"FnDecl":21,"ExprReturn":24,"ExprBinary":80,"ExprIdentifier":160,"ExprArrayLiteral":1,"StmtIf":12,"ExprIndex":1,"StmtLocal":24,"StmtAssign":34,"ExprCall":127,"TestBlock":17,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 21 functions and 5 constants. Carries 17 tests. 311 lines compile to 1,827 tokens and 772 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.5 KB. Compiles with 8 type errors."},{"path":"tri-net/specs/twr_timestamp.t27","category":"tri-net/specs","name":"twr_timestamp","module":"TwrTimestamp","lines":69,"bytes":2563,"description":"Two-way-ranging (TWR) nanosecond timestamp unit -- the hardware timing primitive that gives cm-accurate node geometry for RTI self-localization (replacing coarse RSSI ranging). A free-running counter is captured (latched) on a TX/RX event strobe; the captured timestamps feed the two-way double-difference, which cancels the constant clock OFFSET between two independent boards (and first-order drift). This is the source of truth generated to Verilog + Rust via the golden pipeline; the app's radar consumes the resulting geometry over packet 34.","health":"ok","tokens":250,"nodes":100,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2097,"rust":367,"verilog":4014,"verilog_hir":607,"zig":1190},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":4,"ExprReturn":3,"ExprBinary":11,"ExprIdentifier":20,"ExprLiteral":28,"TestBlock":6,"StmtAssign":7,"ExprCall":13,"StmtExpr":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions. Carries 6 tests. 69 lines compile to 250 tokens and 100 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"tri-net/specs/video_bridge.t27","category":"tri-net/specs","name":"video_bridge","module":"VideoBridge","lines":687,"bytes":24855,"description":"Video bridge protocol: phone ↔ mesh node video transport. Defines frame format for H.264 NAL units split into mesh-sized fragments. Phone sends raw H.264 Annex-B NAL units via UDP to mesh node. Node fragments into VSTREAM packets for mesh transport. Receiver reassembles and sends back to phone via UDP. phi^2 + phi^-2 = 3","health":"ok","tokens":2368,"nodes":984,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16218,"rust":4989,"verilog":31022,"verilog_hir":2107,"zig":14053},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":34,"ExprLiteral":331,"FnDecl":26,"StmtIf":15,"ExprBinary":114,"ExprIdentifier":90,"ExprReturn":41,"StmtLocal":21,"ExprFieldAccess":6,"ExprCall":144,"TestBlock":65,"StmtExpr":68,"InvariantBlock":12},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 26 functions and 34 constants. Carries 65 tests and 12 invariants. 687 lines compile to 2,368 tokens and 984 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 30.3 KB. Clean through every layer."},{"path":"tri-net/specs/wire.t27","category":"tri-net/specs","name":"wire","module":"MeshWire","lines":121,"bytes":4189,"description":"tri-net/specs/wire.t27 Mesh datagram header, ported from src/wire.rs to T27 (spec-first). Fixed 11-byte header: [ver:1][kind:1][src:4 BE][dst:4 BE][ttl:1]. T27 has no byte arrays, so the serialized form is modeled as functions: header_byte(fields, idx) yields the idx-th header byte, and u32_be reassembles a big-endian word from 4 bytes (the parse path). The header bytes double as the","health":"ok","tokens":574,"nodes":166,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3205,"rust":634,"verilog":5636,"verilog_hir":763,"zig":3403},"repo":"tri-net","kinds":{"Module":17,"UseDecl":1,"ConstDecl":4,"ExprLiteral":24,"FnDecl":5,"ExprReturn":13,"ExprBinary":24,"ExprIdentifier":27,"StmtIf":8,"ExprFieldAccess":8,"ExprCall":3,"TestBlock":8,"StmtExpr":22,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions and 4 constants. Carries 8 tests and 2 invariants. 121 lines compile to 574 tokens and 166 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"trinity-fpga/specs/boards/ax7203_full.t27","category":"trinity-fpga/specs","name":"ax7203_full","module":null,"lines":50,"bytes":929,"description":null,"health":"warn","tokens":110,"nodes":1,"depth":1,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/fpga","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 50 lines compile to 110 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 3 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/arithmetic_invariant_sweep.t27","category":"trinity-fpga/specs","name":"arithmetic_invariant_sweep","module":null,"lines":274,"bytes":12011,"description":null,"health":"warn","tokens":328,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 274 lines compile to 328 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/campaign_self_reproduction.t27","category":"trinity-fpga/specs","name":"campaign_self_reproduction","module":null,"lines":147,"bytes":5930,"description":null,"health":"warn","tokens":167,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 147 lines compile to 167 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/catalog_coverage_delta.t27","category":"trinity-fpga/specs","name":"catalog_coverage_delta","module":null,"lines":7901,"bytes":482955,"description":null,"health":"warn","tokens":9950,"nodes":1,"depth":1,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 7901 lines compile to 9,950 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/corpus_wide_pack_audit.t27","category":"trinity-fpga/specs","name":"corpus_wide_pack_audit","module":null,"lines":144,"bytes":6116,"description":null,"health":"warn","tokens":224,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 144 lines compile to 224 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/derived_packs_candidates.t27","category":"trinity-fpga/specs","name":"derived_packs_candidates","module":null,"lines":115,"bytes":4565,"description":null,"health":"warn","tokens":218,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 115 lines compile to 218 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/format_table_invariants.t27","category":"trinity-fpga/specs","name":"format_table_invariants","module":null,"lines":78,"bytes":3465,"description":null,"health":"warn","tokens":90,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 78 lines compile to 90 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/generated_pack_audit.t27","category":"trinity-fpga/specs","name":"generated_pack_audit","module":null,"lines":160,"bytes":7020,"description":null,"health":"warn","tokens":226,"nodes":1,"depth":1,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 160 lines compile to 226 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/generator_reproducibility.t27","category":"trinity-fpga/specs","name":"generator_reproducibility","module":null,"lines":153,"bytes":6157,"description":null,"health":"warn","tokens":149,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 153 lines compile to 149 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/generator_runnability_sweep.t27","category":"trinity-fpga/specs","name":"generator_runnability_sweep","module":null,"lines":181,"bytes":7620,"description":null,"health":"warn","tokens":161,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 181 lines compile to 161 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/gf16_plus_quire_audit.t27","category":"trinity-fpga/specs","name":"gf16_plus_quire_audit","module":null,"lines":178,"bytes":7813,"description":null,"health":"warn","tokens":182,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 178 lines compile to 182 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/intrinsic_invariant_sweep.t27","category":"trinity-fpga/specs","name":"intrinsic_invariant_sweep","module":null,"lines":346,"bytes":14773,"description":null,"health":"warn","tokens":381,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 346 lines compile to 381 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/layout_b_audit.t27","category":"trinity-fpga/specs","name":"layout_b_audit","module":null,"lines":109,"bytes":4596,"description":null,"health":"warn","tokens":175,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 109 lines compile to 175 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/lucas_exact_verification.t27","category":"trinity-fpga/specs","name":"lucas_exact_verification","module":null,"lines":103,"bytes":3690,"description":null,"health":"warn","tokens":138,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 103 lines compile to 138 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/ml_dtypes_crossval.t27","category":"trinity-fpga/specs","name":"ml_dtypes_crossval","module":null,"lines":543,"bytes":21442,"description":null,"health":"warn","tokens":926,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 543 lines compile to 926 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/negation_invariant.t27","category":"trinity-fpga/specs","name":"negation_invariant","module":null,"lines":117,"bytes":4858,"description":null,"health":"warn","tokens":157,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 117 lines compile to 157 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/oracle_fidelity_map.t27","category":"trinity-fpga/specs","name":"oracle_fidelity_map","module":null,"lines":367,"bytes":14852,"description":null,"health":"warn","tokens":513,"nodes":1,"depth":1,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 367 lines compile to 513 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/phi_rule_verification.t27","category":"trinity-fpga/specs","name":"phi_rule_verification","module":null,"lines":129,"bytes":5800,"description":null,"health":"warn","tokens":422,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 129 lines compile to 422 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/published_pack_audit.t27","category":"trinity-fpga/specs","name":"published_pack_audit","module":null,"lines":144,"bytes":5925,"description":null,"health":"warn","tokens":151,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 144 lines compile to 151 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/readme_index_divergence.t27","category":"trinity-fpga/specs","name":"readme_index_divergence","module":null,"lines":110,"bytes":4726,"description":null,"health":"warn","tokens":199,"nodes":1,"depth":1,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 110 lines compile to 199 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/related_work_measured.t27","category":"trinity-fpga/specs","name":"related_work_measured","module":null,"lines":354,"bytes":14485,"description":null,"health":"warn","tokens":481,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 354 lines compile to 481 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/script_tree_sweep.t27","category":"trinity-fpga/specs","name":"script_tree_sweep","module":"opts","lines":297,"bytes":11854,"description":null,"health":"warn","tokens":301,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 297 lines compile to 301 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/takum_libtakum_crossval.t27","category":"trinity-fpga/specs","name":"takum_libtakum_crossval","module":null,"lines":452,"bytes":21059,"description":null,"health":"warn","tokens":413,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 452 lines compile to 413 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/takum_variant_split.t27","category":"trinity-fpga/specs","name":"takum_variant_split","module":null,"lines":236,"bytes":10241,"description":null,"health":"warn","tokens":207,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 236 lines compile to 207 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/wide_rung_commutativity.t27","category":"trinity-fpga/specs","name":"wide_rung_commutativity","module":null,"lines":208,"bytes":8545,"description":null,"health":"warn","tokens":222,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 208 lines compile to 222 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/witness_mechanism_audit.t27","category":"trinity-fpga/specs","name":"witness_mechanism_audit","module":null,"lines":254,"bytes":10368,"description":null,"health":"warn","tokens":321,"nodes":1,"depth":1,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 254 lines compile to 321 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/specs/physics/gamma_conjecture.t27","category":"trinity-fpga/specs","name":"gamma_conjecture","module":null,"lines":138,"bytes":4155,"description":null,"health":"warn","tokens":213,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/physics","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 138 lines compile to 213 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/trinet/settlement_law.t27","category":"trinity-fpga/specs","name":"settlement_law","module":null,"lines":236,"bytes":10625,"description":null,"health":"warn","tokens":295,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 236 lines compile to 295 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/trinet/ternary_hw_verification.t27","category":"trinity-fpga/specs","name":"ternary_hw_verification","module":null,"lines":1422,"bytes":66505,"description":null,"health":"warn","tokens":2177,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 1422 lines compile to 2,177 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/src/tri27/cache_w/tiny_lfu.t27","category":"trinity-fpga/src","name":"tiny_lfu","module":null,"lines":14,"bytes":272,"description":"W-TinyLFU Cache — TTT Dogfood Phase 3 Window-TinyLFU admission Test case: cache_w_tiny_lfu","health":"warn","tokens":16,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/ternary","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 14 lines compile to 16 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/src/tri27/locus_coeruleus_backoff.t27","category":"trinity-fpga/src","name":"locus_coeruleus_backoff","module":null,"lines":53,"bytes":1072,"description":"Locus Coeruleus Backoff Calculator — TTT Dogfood Phase 2 Exponential backoff: delay = min(1000 * 2^fail_count, 60000) Input: t0 = fail_count (attempt number) Output: t0 = delay in milliseconds","health":"warn","tokens":171,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":556,"rust":101,"verilog":1257,"verilog_hir":243,"zig":146},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares 1 constant. 53 lines compile to 171 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/mlp_forward.t27","category":"trinity-fpga/src","name":"mlp_forward","module":null,"lines":193,"bytes":5444,"description":"MLP Forward Pass Test — 4 → 8 → 3 Demonstrates semantic equivalence between .t27 VM and Zig implementation Input: 4 features → Hidden: 8 neurons → Output: 3 classes","health":"warn","tokens":1499,"nodes":4,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":810,"rust":131,"verilog":1671,"verilog_hir":243,"zig":224},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1,"TestBlock":1},"tags":["domain/ternary","has/constants-only","has/tests","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 1 constant. Carries 1 test. 193 lines compile to 1,499 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/ppl_calculator.t27","category":"trinity-fpga/src","name":"ppl_calculator","module":null,"lines":68,"bytes":1937,"description":null,"health":"warn","tokens":243,"nodes":4,"depth":3,"loss":51,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1374,"rust":907,"verilog":2063,"verilog_hir":243,"zig":995},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1,"UseDecl":1},"tags":["domain/ternary","has/constants-only","has/imports","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares 1 constant. 68 lines compile to 243 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Compiles with 51 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/vsa_bind.t27","category":"trinity-fpga/src","name":"vsa_bind","module":null,"lines":38,"bytes":698,"description":"VSA Bind — TTT Dogfood Phase 2 Bind operation (XOR-like for balanced ternary) Algorithm: if a == 0 return b; else if b == 0 return a; else return a * b Input: t0 = a, t1 = b Output: t0 = bind(a, b)","health":"warn","tokens":113,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":572,"rust":105,"verilog":1261,"verilog_hir":243,"zig":150},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares 1 constant. 38 lines compile to 113 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/vsa_bundle2.t27","category":"trinity-fpga/src","name":"vsa_bundle2","module":null,"lines":40,"bytes":773,"description":"VSA Bundle2 — TTT Dogfood Phase 2 Majority vote of 2 ternary inputs Algorithm: if a == 0 return b; else if b == 0 return a; else return (a + b) / 2 Input: t0 = a, t1 = b Output: t0 = bundle2(a, b)","health":"warn","tokens":139,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":578,"rust":111,"verilog":1267,"verilog_hir":243,"zig":156},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares 1 constant. 40 lines compile to 139 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/vsa_cosine.t27","category":"trinity-fpga/src","name":"vsa_cosine","module":null,"lines":76,"bytes":2131,"description":"VSA Cosine Similarity — TTT Dogfood Phase 2 Cosine similarity between two ternary vectors Formula: (a · b) / (||a|| * ||b||) Input: t0 = vector_a_ptr, t1 = vector_b_ptr, t2 = length Output: t0 = similarity (f64)","health":"warn","tokens":360,"nodes":4,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":591,"rust":124,"verilog":1280,"verilog_hir":243,"zig":206},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1,"UseDecl":1},"tags":["domain/ternary","has/constants-only","has/imports","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares 1 constant. 76 lines compile to 360 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Compiles with 3 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/ast.t27","category":"trinity-fpga/t27","name":"ast","module":null,"lines":255,"bytes":5243,"description":"ast.t27 — Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","health":"warn","tokens":770,"nodes":55,"depth":3,"loss":14,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2554,"rust":1736,"verilog":3565,"verilog_hir":320,"zig":1326},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":3,"EnumVariant":42,"StructDecl":4,"ExprIdentifier":4,"FnDecl":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 1 function, 4 structs and 3 enums. 255 lines compile to 770 tokens and 55 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Compiles with 14 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/codegen/c/codegen.t27","category":"trinity-fpga/t27","name":"codegen","module":"c_codegen","lines":6,"bytes":148,"description":null,"health":"warn","tokens":13,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":404,"rust":66,"verilog":1049,"verilog_hir":247,"zig":123},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/compiler","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 6 lines compile to 13 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/codegen/verilog/codegen.t27","category":"trinity-fpga/t27","name":"codegen","module":null,"lines":586,"bytes":19648,"description":"codegen.t27 — Code Generator for Verilog Generates synthesizable Verilog from t27 AST","health":"ok","tokens":3639,"nodes":66,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1790,"rust":1191,"verilog":3854,"verilog_hir":352,"zig":1209},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":37,"FnDecl":1,"StmtExpr":13,"StmtLocal":3,"ExprCall":2,"ExprLiteral":4,"ExprBinary":1},"tags":["domain/compiler","has/functions","has/imports","has/structs","health/ok","size/large","src/trinity-fpga"],"summary":"Declares 1 function and 2 structs. 586 lines compile to 3,639 tokens and 66 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"trinity-fpga/t27/compiler/codegen/zig/codegen.t27","category":"trinity-fpga/t27","name":"codegen","module":null,"lines":612,"bytes":15359,"description":"codegen.t27 — Code Generator for Zig Generates Zig 0.15 code from t27 AST","health":"warn","tokens":3137,"nodes":37,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1728,"rust":1278,"verilog":3525,"verilog_hir":348,"zig":1180},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":2,"StructDecl":4,"ExprIdentifier":29,"FnDecl":1},"tags":["domain/compiler","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function and 4 structs. 612 lines compile to 3,137 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Compiles with 3 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/parser/language.t27","category":"trinity-fpga/t27","name":"language","module":"Language","lines":71,"bytes":5263,"description":"t27/compiler/parser/language.t27 — Language Definition for .t27 Specs Defines tokens, lexical grammar for parsing .t27 format specifications","health":"ok","tokens":50,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1012,"rust":415,"verilog":1996,"verilog_hir":245,"zig":392},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":21},"tags":["domain/compiler","has/enums","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 1 enum. 71 lines compile to 50 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"trinity-fpga/t27/compiler/parser/lexer.t27","category":"trinity-fpga/t27","name":"lexer","module":null,"lines":514,"bytes":13586,"description":"lexer.t27 — Lexical Analyzer for TRI-27 Assembly Tokenizes .t27 source code into tokens for the parser","health":"warn","tokens":2457,"nodes":82,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3128,"rust":1700,"verilog":4709,"verilog_hir":350,"zig":1615},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":71,"StructDecl":2,"ExprIdentifier":6,"FnDecl":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function, 2 structs and 1 enum. 514 lines compile to 2,457 tokens and 82 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/parser/parser.t27","category":"trinity-fpga/t27","name":"parser","module":null,"lines":500,"bytes":14714,"description":"parser.t27 — Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","health":"warn","tokens":2804,"nodes":6,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1058,"rust":316,"verilog":1646,"verilog_hir":351,"zig":418},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1},"tags":["domain/compiler","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function and 1 struct. 500 lines compile to 2,804 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/runtime/runtime.t27","category":"trinity-fpga/t27","name":"runtime","module":null,"lines":418,"bytes":9552,"description":"runtime.t27 — Bootstrap Runtime for TRI-27 Assembly Minimal runtime for executing t27 programs","health":"warn","tokens":2066,"nodes":27,"depth":4,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1500,"rust":996,"verilog":2666,"verilog_hir":290,"zig":638},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":3,"StructDecl":5,"ExprIdentifier":14,"FnDecl":1,"StmtExpr":1,"ExprLiteral":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function, 5 structs and 1 enum. 418 lines compile to 2,066 tokens and 27 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/base/ops.t27","category":"trinity-fpga/t27","name":"ops","module":null,"lines":287,"bytes":8985,"description":"ops.t27 — Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","health":"warn","tokens":1548,"nodes":4,"depth":2,"loss":68,"tcErrors":0,"failedBackends":[],"outBytes":{"c":532,"rust":148,"verilog":1313,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":3},"tags":["domain/base","has/constants-only","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 3 constants. 287 lines compile to 1,548 tokens and 4 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Compiles with 68 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/base/types.t27","category":"trinity-fpga/t27","name":"types","module":null,"lines":301,"bytes":8692,"description":"types.t27 — Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","health":"fail","tokens":0,"nodes":0,"depth":0,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{},"repo":"trinity-fpga","kinds":{},"tags":["domain/base","health/fail","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 301 lines compile to 0 tokens and 0 AST nodes, depth 0. Rejected by ."},{"path":"trinity-fpga/t27/specs/fpga/mac.t27","category":"trinity-fpga/t27","name":"mac","module":"fpga_mac","lines":9,"bytes":289,"description":null,"health":"warn","tokens":33,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":400,"rust":66,"verilog":1047,"verilog_hir":245,"zig":122},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/fpga","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 9 lines compile to 33 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/isa/registers.t27","category":"trinity-fpga/t27","name":"registers","module":"isa_registers","lines":10,"bytes":281,"description":null,"health":"warn","tokens":27,"nodes":1,"depth":1,"loss":4,"tcErrors":0,"failedBackends":[],"outBytes":{"c":420,"rust":66,"verilog":1057,"verilog_hir":255,"zig":127},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/isa","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 10 lines compile to 27 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 4 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/math/constants.t27","category":"trinity-fpga/t27","name":"constants","module":"Constants","lines":65,"bytes":3460,"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing φ² + 1/φ² = 3 | Sacred constants for ternary computing","health":"ok","tokens":122,"nodes":35,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1383,"rust":705,"verilog":2344,"verilog_hir":368,"zig":718},"repo":"trinity-fpga","kinds":{"Module":2,"ConstDecl":10,"ExprLiteral":10,"ExprIdentifier":5,"FnDecl":2,"StmtIf":1,"ExprBinary":1,"ExprReturn":3,"ExprUnary":1},"tags":["domain/math","has/functions","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 2 functions and 10 constants. 65 lines compile to 122 tokens and 35 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/math/sacred_physics.t27","category":"trinity-fpga/t27","name":"sacred_physics","module":"SacredPhysics","lines":129,"bytes":5165,"description":"t27/specs/math/sacred_physics.t27 Strand I — Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","health":"ok","tokens":491,"nodes":183,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3409,"rust":2563,"verilog":5731,"verilog_hir":481,"zig":2609},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":1,"ConstDecl":12,"ExprIdentifier":87,"FnDecl":4,"StmtLocal":23,"ExprBinary":25,"ExprReturn":4,"ExprLiteral":4,"StructDecl":1,"ExprCall":6,"ExprStructLit":1,"ExprFieldAccess":14},"tags":["domain/math","has/functions","has/imports","has/structs","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 4 functions, 1 struct and 12 constants. 129 lines compile to 491 tokens and 183 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/nn/attention.t27","category":"trinity-fpga/t27","name":"attention","module":"attention","lines":7,"bytes":253,"description":null,"health":"warn","tokens":25,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":404,"rust":66,"verilog":1049,"verilog_hir":247,"zig":123},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/ml","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 7 lines compile to 25 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/nn/hslm.t27","category":"trinity-fpga/t27","name":"hslm","module":"hslm","lines":8,"bytes":290,"description":null,"health":"warn","tokens":32,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":384,"rust":66,"verilog":1039,"verilog_hir":237,"zig":118},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/ml","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 8 lines compile to 32 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/numeric/gf12.t27","category":"trinity-fpga/t27","name":"gf12","module":"GF12","lines":180,"bytes":7425,"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 — 12-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 4 (P1)","health":"warn","tokens":730,"nodes":322,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":3969,"rust":2941,"verilog":6531,"verilog_hir":939,"zig":3673},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 180 lines compile to 730 tokens and 322 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf16.t27","category":"trinity-fpga/t27","name":"gf16","module":null,"lines":446,"bytes":15122,"description":"gf16.t27 — GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","health":"warn","tokens":2530,"nodes":18,"depth":2,"loss":82,"tcErrors":0,"failedBackends":[],"outBytes":{"c":532,"rust":629,"verilog":1864,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":17},"tags":["domain/numeric","has/constants-only","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 17 constants. 446 lines compile to 2,530 tokens and 18 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 82 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/numeric/gf20.t27","category":"trinity-fpga/t27","name":"gf20","module":"GF20","lines":181,"bytes":7449,"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 — 20-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 6 (P1)","health":"warn","tokens":730,"nodes":322,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":3995,"rust":2964,"verilog":6549,"verilog_hir":942,"zig":3696},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 181 lines compile to 730 tokens and 322 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf24.t27","category":"trinity-fpga/t27","name":"gf24","module":"GF24","lines":181,"bytes":7496,"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 — 24-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 7 (P1)","health":"warn","tokens":736,"nodes":323,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":4035,"rust":2995,"verilog":6589,"verilog_hir":954,"zig":3735},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":33,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 181 lines compile to 736 tokens and 323 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf32.t27","category":"trinity-fpga/t27","name":"gf32","module":"GF32","lines":186,"bytes":7836,"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 — 32-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 8 (P1)","health":"warn","tokens":730,"nodes":322,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":4016,"rust":2991,"verilog":6592,"verilog_hir":954,"zig":3723},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":59,"StructDecl":1,"ExprIdentifier":76,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 186 lines compile to 730 tokens and 322 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf4.t27","category":"trinity-fpga/t27","name":"gf4","module":"GF4","lines":130,"bytes":5537,"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 — 4-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 2 (P1)","health":"ok","tokens":333,"nodes":134,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2278,"rust":1426,"verilog":4056,"verilog_hir":532,"zig":2053},"repo":"trinity-fpga","kinds":{"Module":5,"UseDecl":2,"ConstDecl":7,"ExprLiteral":25,"StructDecl":1,"ExprIdentifier":25,"FnDecl":6,"StmtIf":4,"ExprBinary":18,"ExprReturn":10,"ExprStructLit":3,"ExprFieldAccess":15,"StmtLocal":8,"ExprCall":2,"ExprUnary":2,"ExprIf":1},"tags":["domain/numeric","has/functions","has/imports","has/structs","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 6 functions, 1 struct and 7 constants. 130 lines compile to 333 tokens and 134 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/numeric/gf8.t27","category":"trinity-fpga/t27","name":"gf8","module":"GF8","lines":183,"bytes":7582,"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 — 8-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 3 (P1)","health":"warn","tokens":718,"nodes":319,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":3915,"rust":2902,"verilog":6513,"verilog_hir":937,"zig":3609},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":29,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 183 lines compile to 718 tokens and 319 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/goldenfloat_family.t27","category":"trinity-fpga/t27","name":"goldenfloat_family","module":"GoldenFloatFamily","lines":203,"bytes":8443,"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family — φ-structured floating point formats NUMERIC-STANDARD-001 — Agent 1 (P0)","health":"warn","tokens":757,"nodes":181,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":4828,"rust":3393,"verilog":7230,"verilog_hir":686,"zig":4596},"repo":"trinity-fpga","kinds":{"Module":8,"UseDecl":2,"StructDecl":2,"ExprIdentifier":56,"ConstDecl":2,"FnDecl":7,"StmtFor":3,"StmtIf":4,"ExprBinary":17,"ExprFieldAccess":24,"ExprReturn":9,"ExprIndex":2,"ExprLiteral":23,"StmtLocal":9,"StmtAssign":4,"ExprStructLit":1,"ExprCall":6,"ExprUnary":2},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 7 functions, 2 structs and 2 constants. 203 lines compile to 757 tokens and 181 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Compiles with 1 type error."},{"path":"trinity-fpga/t27/specs/numeric/phi_ratio.t27","category":"trinity-fpga/t27","name":"phi_ratio","module":"PhiRatio","lines":249,"bytes":11049,"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","health":"ok","tokens":633,"nodes":113,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3249,"rust":2152,"verilog":5604,"verilog_hir":926,"zig":4123},"repo":"trinity-fpga","kinds":{"Module":2,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":42,"StructDecl":2,"FnDecl":10,"StmtLocal":8,"ExprBinary":10,"ExprLiteral":5,"ExprFieldAccess":10,"ExprCall":5,"ExprReturn":11,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":1,"ExprUnary":1},"tags":["domain/numeric","has/functions","has/imports","has/structs","health/ok","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 2 structs and 2 constants. 249 lines compile to 633 tokens and 113 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/numeric/tf3.t27","category":"trinity-fpga/t27","name":"tf3","module":null,"lines":258,"bytes":103641,"description":"tf3.t27 — TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","health":"warn","tokens":3714,"nodes":15,"depth":2,"loss":79,"tcErrors":0,"failedBackends":[],"outBytes":{"c":532,"rust":516,"verilog":1736,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":14},"tags":["domain/numeric","has/constants-only","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 14 constants. 258 lines compile to 3,714 tokens and 15 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Compiles with 79 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/queen/lotus.t27","category":"trinity-fpga/t27","name":"lotus","module":"queen_lotus","lines":12,"bytes":519,"description":null,"health":"warn","tokens":58,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":412,"rust":66,"verilog":1053,"verilog_hir":251,"zig":125},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/agent","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 12 lines compile to 58 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/vsa/ops.t27","category":"trinity-fpga/t27","name":"ops","module":"vsa_ops","lines":10,"bytes":370,"description":null,"health":"warn","tokens":54,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/vsa","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 10 lines compile to 54 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity/src/tri27/matmul.t27","category":"trinity/src","name":"matmul","module":null,"lines":173,"bytes":3023,"description":"Matrix Multiply (3x3) — TRI-27 Assembly Implementation Computes C = A * B where A, B are 3x3 matrices Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-108: Matrix A (3x3, row-major, 9 words) 200-208: Matrix B (3x3, row-major, 9 words)","health":"warn","tokens":709,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity","kinds":{"Module":1},"tags":["domain/ternary","health/warn","issue/dropped-content","size/medium","src/trinity"],"summary":"Declares no top-level items. 173 lines compile to 709 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity/src/tri27/sha256.t27","category":"trinity/src","name":"sha256","module":null,"lines":205,"bytes":4467,"description":"SHA-256 Hash — TRI-27 Assembly Implementation Computes SHA-256 digest of a 64-byte (512-bit) message block Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-163: Input message block (64 bytes) 200-263: Message schedule W[0..63] (64 words)","health":"warn","tokens":894,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":829,"rust":362,"verilog":1518,"verilog_hir":243,"zig":407},"repo":"trinity","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/medium","src/trinity"],"summary":"Declares 1 constant. 205 lines compile to 894 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity/t27/specs/numeric/phi_ratio.t27","category":"trinity/t27","name":"phi_ratio","module":"PhiRatio","lines":247,"bytes":10606,"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","health":"ok","tokens":633,"nodes":113,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3221,"rust":2124,"verilog":5576,"verilog_hir":926,"zig":4095},"repo":"trinity","kinds":{"Module":2,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":42,"StructDecl":2,"FnDecl":10,"StmtLocal":8,"ExprBinary":10,"ExprLiteral":5,"ExprFieldAccess":10,"ExprCall":5,"ExprReturn":11,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":1,"ExprUnary":1},"tags":["domain/numeric","has/functions","has/imports","has/structs","health/ok","size/medium","src/trinity"],"summary":"Declares 10 functions, 2 structs and 2 constants. 247 lines compile to 633 tokens and 113 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/anchor.t27","category":"tt-trinity-corona/specs","name":"anchor","module":"CoronaAnchor","lines":86,"bytes":3664,"description":"specs/corona/anchor.t27 TG-TRIAD-X cross-die anchor (carried forward unchanged from Phi/Euler/Gamma).","health":"ok","tokens":91,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":908,"rust":258,"verilog":1896,"verilog_hir":253,"zig":712},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":5,"ConstDecl":5,"ExprLiteral":5,"TestBlock":1,"StmtExpr":3},"tags":["domain/other","has/constants-only","has/imports","has/tests","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 5 constants. Carries 1 test. 86 lines compile to 91 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/corona_oracle.t27","category":"tt-trinity-corona/specs","name":"corona_oracle","module":"CoronaOracle","lines":276,"bytes":15181,"description":"specs/corona/corona_oracle.t27 TRI-1 Corona -- Format Conformance Oracle (top-level SSOT)","health":"ok","tokens":540,"nodes":92,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2657,"rust":2389,"verilog":5125,"verilog_hir":253,"zig":2906},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":8,"ConstDecl":29,"ExprLiteral":25,"StructDecl":2,"ExprIdentifier":24,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/constants-only","has/imports","has/structs","has/tests","health/ok","size/medium","src/tt-trinity-corona"],"summary":"Declares 2 structs and 29 constants. Carries 1 test. 276 lines compile to 540 tokens and 92 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/d2d_routing.t27","category":"tt-trinity-corona/specs","name":"d2d_routing","module":"CoronaD2DRouting","lines":97,"bytes":4413,"description":"specs/corona/d2d_routing.t27 Die-to-Die routing: Corona forwards format queries to Gamma for formats Gamma natively implements (no duplication).","health":"ok","tokens":120,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":985,"rust":607,"verilog":1796,"verilog_hir":261,"zig":823},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":3,"ConstDecl":10,"ExprIdentifier":1,"ExprLiteral":9},"tags":["domain/other","has/constants-only","has/imports","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 10 constants. 97 lines compile to 120 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/protocol.t27","category":"tt-trinity-corona/specs","name":"protocol","module":"CoronaProtocol","lines":121,"bytes":5475,"description":"specs/corona/protocol.t27 Corona oracle protocol: 8-bit serial CMD/DATA on TinyTapeout pins.","health":"ok","tokens":150,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1005,"rust":675,"verilog":1926,"verilog_hir":257,"zig":856},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":3,"ConstDecl":16,"ExprLiteral":16},"tags":["domain/other","has/constants-only","has/imports","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 16 constants. 121 lines compile to 150 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/rom_layout.t27","category":"tt-trinity-corona/specs","name":"rom_layout","module":"CoronaRomLayout","lines":126,"bytes":7148,"description":"specs/corona/rom_layout.t27 Corona ROM bit-layout: 80 bits per format record, 80 records total.","health":"ok","tokens":519,"nodes":91,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2407,"rust":2551,"verilog":5167,"verilog_hir":259,"zig":2196},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":2,"ConstDecl":21,"ExprLiteral":19,"ExprIdentifier":35,"StructDecl":11,"TestBlock":1,"StmtExpr":1},"tags":["domain/other","has/constants-only","has/imports","has/structs","has/tests","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 11 structs and 21 constants. Carries 1 test. 126 lines compile to 519 tokens and 91 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/bridge.t27","category":"dmitrii-f-t27/trinity-memory","name":"bridge","module":"TrinityMemoryBridgeSpec","lines":416,"bytes":20951,"description":"specs/memory/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;","health":"warn","tokens":2930,"nodes":1468,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":21771,"rust":9438,"verilog":27805,"verilog_hir":2627,"zig":19109},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":28,"ConstDecl":73,"ExprLiteral":413,"EnumDecl":3,"EnumVariant":18,"FnDecl":23,"StmtIf":26,"ExprBinary":244,"ExprIdentifier":202,"ExprReturn":49,"ExprUnary":61,"ExprFieldAccess":2,"ExprCall":188,"StmtLocal":6,"StmtWhile":1,"StmtAssign":11,"ExprIndex":11,"InvariantBlock":14,"StmtExpr":84,"TestBlock":11},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 23 functions, 3 enums and 73 constants. Carries 11 tests and 14 invariants. 416 lines compile to 2,930 tokens and 1,468 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 27.2 KB. Compiles with 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/conformance.t27","category":"dmitrii-f-t27/trinity-memory","name":"conformance","module":"TrinityMemoryConformanceLabSpec","lines":291,"bytes":14234,"description":"specs/memory/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable","health":"warn","tokens":2035,"nodes":1053,"depth":12,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":14290,"rust":6234,"verilog":18719,"verilog_hir":1746,"zig":12475},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":22,"ConstDecl":41,"ExprLiteral":282,"EnumDecl":5,"EnumVariant":27,"FnDecl":16,"ExprReturn":36,"ExprBinary":184,"ExprIdentifier":147,"StmtIf":20,"ExprUnary":49,"StmtLocal":4,"StmtWhile":1,"StmtAssign":26,"ExprFieldAccess":10,"ExprIndex":26,"InvariantBlock":8,"StmtExpr":39,"ExprCall":103,"TestBlock":7},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 5 enums and 41 constants. Carries 7 tests and 8 invariants. 291 lines compile to 2,035 tokens and 1,053 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/edge_demo.t27","category":"dmitrii-f-t27/trinity-memory","name":"edge_demo","module":"TrinityMemoryEdgeDemoSpec","lines":233,"bytes":11190,"description":"specs/memory/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one","health":"ok","tokens":1790,"nodes":972,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11641,"rust":4000,"verilog":14191,"verilog_hir":1388,"zig":10109},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":25,"ConstDecl":22,"ExprLiteral":256,"EnumDecl":2,"EnumVariant":9,"FnDecl":12,"StmtIf":19,"ExprBinary":180,"ExprIdentifier":174,"ExprReturn":23,"ExprUnary":33,"ExprCall":97,"StmtLocal":17,"StmtWhile":5,"StmtAssign":29,"ExprFieldAccess":8,"ExprIndex":15,"InvariantBlock":6,"StmtExpr":34,"TestBlock":6},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 12 functions, 2 enums and 22 constants. Carries 6 tests and 6 invariants. 233 lines compile to 1,790 tokens and 972 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.9 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/stream_compute.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_compute","module":"TrinityMemoryStreamComputeSpec","lines":491,"bytes":24685,"description":"specs/memory/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is","health":"ok","tokens":4048,"nodes":2055,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":24595,"rust":10586,"verilog":30875,"verilog_hir":3669,"zig":21754},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":37,"ConstDecl":60,"ExprLiteral":613,"FnDecl":32,"StmtLocal":29,"ExprBinary":392,"ExprIdentifier":331,"StmtIf":31,"ExprReturn":55,"ExprCall":228,"StmtWhile":5,"StmtAssign":25,"ExprUnary":70,"ExprFieldAccess":21,"ExprIndex":6,"InvariantBlock":12,"StmtExpr":95,"TestBlock":13},"tags":["domain/storage","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 32 functions and 60 constants. Carries 13 tests and 12 invariants. 491 lines compile to 4,048 tokens and 2,055 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 30.2 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/tensorpack.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack","module":"TrinityMemoryTensorPackSpec","lines":316,"bytes":15456,"description":"specs/memory/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;","health":"warn","tokens":2170,"nodes":1127,"depth":14,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":15698,"rust":6044,"verilog":19497,"verilog_hir":1909,"zig":13924},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":18,"ConstDecl":50,"ExprLiteral":278,"EnumDecl":1,"EnumVariant":8,"FnDecl":16,"ExprReturn":30,"ExprBinary":170,"ExprFieldAccess":13,"ExprIdentifier":202,"ExprCall":135,"StmtIf":14,"ExprUnary":49,"StmtLocal":8,"StmtWhile":3,"ExprIndex":27,"StmtAssign":25,"InvariantBlock":10,"StmtExpr":62,"TestBlock":8},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 1 enum and 50 constants. Carries 8 tests and 10 invariants. 316 lines compile to 2,170 tokens and 1,127 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 19.0 KB. Compiles with 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/types.t27","category":"dmitrii-f-t27/trinity-memory","name":"types","module":"TrinityMemoryTypes","lines":291,"bytes":15286,"description":"specs/memory/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).","health":"ok","tokens":2170,"nodes":1088,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15524,"rust":6993,"verilog":19584,"verilog_hir":1417,"zig":14185},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":29,"ConstDecl":71,"ExprLiteral":215,"EnumDecl":1,"EnumVariant":4,"FnDecl":11,"StmtLocal":13,"StmtWhile":4,"ExprBinary":191,"ExprIdentifier":246,"StmtAssign":13,"ExprReturn":33,"StmtIf":23,"ExprCall":119,"ExprFieldAccess":12,"ExprUnary":15,"InvariantBlock":17,"StmtExpr":62,"TestBlock":9},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 11 functions, 1 enum and 71 constants. Carries 9 tests and 17 invariants. 291 lines compile to 2,170 tokens and 1,088 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 19.1 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/t27/bridge.t27","category":"dmitrii-f-t27/trinity-memory","name":"bridge","module":"TrinityMemoryBridge","lines":591,"bytes":33305,"description":"Native bounded JSON-RPC memory emulator application logic. Caller owns all buffers and state; no HTTP, allocation, or persistence here. Include codecs/container/tensorpack/json/json_writer/tensorpack_json first. Limits are configured in TMBridgeState and enforced before object commits. Current common JSON parser is bounded to 64 nesting levels and i64/u64 integer lexemes; exceeding those bounds returns an invalid-JSON response.","health":"warn","tokens":7663,"nodes":3880,"depth":15,"loss":0,"tcErrors":44,"failedBackends":[],"outBytes":{"c":39616,"rust":35798,"verilog":54070,"verilog_hir":4400,"zig":37227},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":186,"StructDecl":3,"ExprIdentifier":1134,"FnDecl":40,"StmtExpr":175,"ExprCall":295,"StmtLocal":115,"ExprLiteral":635,"StmtWhile":27,"ExprBinary":380,"ExprIndex":149,"ExprFieldAccess":269,"StmtAssign":112,"StmtIf":140,"ExprUnary":107,"ExprReturn":113},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 40 functions and 3 structs. 591 lines compile to 7,663 tokens and 3,880 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 52.8 KB. Compiles with 44 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/cli.t27","category":"dmitrii-f-t27/trinity-memory","name":"cli","module":"TrinityMemoryCLI","lines":494,"bytes":30001,"description":"Native command dispatch and strict JSON trit-array parsing. Domain command dispatch is native. Host hooks supply file IO, buffers, entropy, sockets and signal waiting; generated modules own all data formats.","health":"warn","tokens":6420,"nodes":3384,"depth":15,"loss":0,"tcErrors":34,"failedBackends":[],"outBytes":{"c":33104,"rust":32315,"verilog":47310,"verilog_hir":2365,"zig":32534},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":219,"FnDecl":21,"ExprReturn":139,"ExprBinary":394,"ExprIdentifier":839,"ExprLiteral":653,"StmtLocal":113,"StmtWhile":22,"ExprCall":311,"ExprIndex":83,"StmtAssign":123,"StmtIf":176,"ExprUnary":117,"ExprFieldAccess":98,"StmtExpr":73,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 21 functions. 494 lines compile to 6,420 tokens and 3,384 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 46.2 KB. Compiles with 34 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/client.t27","category":"dmitrii-f-t27/trinity-memory","name":"client","module":"TrinityMemoryRPCClient","lines":148,"bytes":8187,"description":"Native JSON-RPC client domain. Include json.h and json_writer.h first. Caller-owned live, nonoverlapping buffers; no allocation or network here. Scratch tokens/arena and partial output may change on failure. Reply is committed only after validation. IDs are 32 lowercase hexadecimal bytes.","health":"warn","tokens":1793,"nodes":876,"depth":13,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":9402,"rust":8036,"verilog":13557,"verilog_hir":1733,"zig":8556},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":44,"ConstDecl":3,"ExprLiteral":137,"StructDecl":2,"ExprIdentifier":246,"FnDecl":10,"StmtLocal":28,"StmtWhile":7,"ExprBinary":99,"ExprIndex":36,"StmtIf":33,"ExprUnary":28,"ExprReturn":37,"StmtAssign":30,"ExprArrayLiteral":1,"ExprCall":26,"ExprFieldAccess":98,"StmtExpr":9,"ExprStructLit":2},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 10 functions, 2 structs and 3 constants. 148 lines compile to 1,793 tokens and 876 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Compiles with 6 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/codecs.t27","category":"dmitrii-f-t27/trinity-memory","name":"codecs","module":"TrinityMemoryCodecs","lines":233,"bytes":9432,"description":"Native ternary codec algorithms. Source of truth; generated C is disposable. IDs and canonical byte layout match TMEM v1. Input/output buffers must not overlap.","health":"warn","tokens":1959,"nodes":1020,"depth":16,"loss":0,"tcErrors":13,"failedBackends":[],"outBytes":{"c":10668,"rust":9561,"verilog":16252,"verilog_hir":1276,"zig":10009},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":75,"ConstDecl":10,"ExprLiteral":180,"FnDecl":9,"StmtIf":55,"ExprBinary":188,"ExprIdentifier":288,"ExprReturn":48,"StmtLocal":49,"ExprFieldAccess":30,"ExprCall":15,"StmtAssign":44,"StmtWhile":13,"ExprIndex":9,"ExprUnary":7},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 9 functions and 10 constants. 233 lines compile to 1,959 tokens and 1,020 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Compiles with 13 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/compute.t27","category":"dmitrii-f-t27/trinity-memory","name":"compute","module":"TrinityMemoryCompute","lines":143,"bytes":5371,"description":"Trinity Memory integer/scale kernels. Canonical executable source. Status: 0 success, -1 invalid input, -2 short output, -3 overflow. Pointers refer to valid arrays of their explicit lengths. Input and output buffers must not overlap. Inputs are read-only despite the pointer ABI. f64 is the host metadata bridge type; it does not replace ternary storage.","health":"ok","tokens":1153,"nodes":600,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6241,"rust":4111,"verilog":10239,"verilog_hir":1330,"zig":5533},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":37,"FnDecl":5,"ExprReturn":26,"ExprBinary":97,"ExprIdentifier":152,"ExprLiteral":110,"ExprUnary":30,"StmtIf":26,"StmtAssign":22,"ExprIndex":24,"StmtLocal":20,"StmtWhile":8,"ExprCall":19,"ExprFieldAccess":3,"TestBlock":3,"StmtExpr":10,"ExprArrayLiteral":8},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 5 functions. Carries 3 tests. 143 lines compile to 1,153 tokens and 600 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 10.0 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/t27/container.t27","category":"dmitrii-f-t27/trinity-memory","name":"container","module":"TrinityMemoryContainer","lines":90,"bytes":3832,"description":"TMEM v1 framing. Include generated codecs C header before this header. Caller-owned buffers; no allocation. Valid input/output ranges must not overlap.","health":"warn","tokens":1001,"nodes":479,"depth":12,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":5015,"rust":3599,"verilog":7172,"verilog_hir":1358,"zig":4561},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":21,"FnDecl":8,"StmtLocal":18,"ExprIdentifier":137,"ExprLiteral":89,"StmtWhile":6,"ExprBinary":67,"StmtAssign":23,"ExprFieldAccess":32,"ExprIndex":25,"StmtIf":13,"ExprReturn":18,"ExprCall":15,"ExprUnary":4,"StmtExpr":3},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 8 functions. 90 lines compile to 1,001 tokens and 479 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 7.0 KB. Compiles with 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/experiments.t27","category":"dmitrii-f-t27/trinity-memory","name":"experiments","module":"TrinityMemoryExperiments","lines":682,"bytes":48461,"description":"Executable native experiments. Domain behavior is here; the runtime supplies bounded allocation, loopback sockets, monotonic time and platform primitives. JSON output is scratch until a nonnegative return. No physical-device claim.","health":"warn","tokens":11106,"nodes":5373,"depth":17,"loss":0,"tcErrors":65,"failedBackends":[],"outBytes":{"c":54913,"rust":51304,"verilog":75966,"verilog_hir":4987,"zig":52116},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":225,"ConstDecl":3,"ExprLiteral":795,"StructDecl":1,"ExprIdentifier":1632,"FnDecl":36,"StmtAssign":169,"ExprFieldAccess":476,"ExprCall":378,"StmtIf":168,"ExprBinary":483,"ExprReturn":141,"StmtExpr":209,"StmtLocal":217,"ExprArrayLiteral":51,"StmtWhile":50,"ExprIndex":207,"ExprUnary":115,"ExprStructLit":17},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 36 functions, 1 struct and 3 constants. 682 lines compile to 11,106 tokens and 5,373 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 74.2 KB. Compiles with 65 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/http.t27","category":"dmitrii-f-t27/trinity-memory","name":"http","module":"TrinityMemoryHTTP","lines":319,"bytes":15194,"description":"Bounded HTTP envelope validation; sockets and clocks are OS primitives.","health":"warn","tokens":3507,"nodes":1999,"depth":18,"loss":0,"tcErrors":42,"failedBackends":[],"outBytes":{"c":17648,"rust":16245,"verilog":25493,"verilog_hir":1668,"zig":16511},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":109,"StructDecl":2,"ExprIdentifier":565,"FnDecl":13,"StmtIf":81,"ExprBinary":316,"ExprLiteral":386,"ExprReturn":72,"StmtLocal":53,"StmtWhile":26,"ExprIndex":57,"StmtAssign":79,"ExprCall":67,"ExprFieldAccess":52,"ExprUnary":88,"StmtExpr":31,"ExprStructLit":2},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 13 functions and 2 structs. 319 lines compile to 3,507 tokens and 1,999 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 24.9 KB. Compiles with 42 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/json.t27","category":"dmitrii-f-t27/trinity-memory","name":"json","module":"TrinityMemoryJson","lines":357,"bytes":17709,"description":"Strict, bounded UTF-8 JSON parser. Native algorithms; no heap allocation. C adapter: double tm_json_strtod(uint8_t *nul_terminated), C numeric locale. Caller provides nonoverlapping live input, tokens, and decoded-byte arena. Failed parses may change scratch tokens/arena; result is written on success only.","health":"warn","tokens":4361,"nodes":2393,"depth":17,"loss":0,"tcErrors":14,"failedBackends":[],"outBytes":{"c":20230,"rust":18948,"verilog":28553,"verilog_hir":2545,"zig":19447},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":130,"ConstDecl":14,"ExprLiteral":307,"StructDecl":3,"ExprIdentifier":678,"FnDecl":13,"StmtAssign":96,"ExprFieldAccess":352,"ExprReturn":84,"ExprUnary":46,"StmtWhile":14,"ExprBinary":333,"StmtLocal":52,"ExprIndex":94,"StmtIf":105,"ExprCall":65,"StmtExpr":6,"ExprStructLit":1},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 13 functions, 3 structs and 14 constants. 357 lines compile to 4,361 tokens and 2,393 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 27.9 KB. Compiles with 14 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/json_writer.t27","category":"dmitrii-f-t27/trinity-memory","name":"json_writer","module":"TrinityMemoryJsonWriter","lines":169,"bytes":8862,"description":"Shared bounded JSON writer. Include generated json.h before this header. No heap, no implicit NUL terminator. Check error==0 before using output. Errors are sticky; a failed compound write may leave an incomplete prefix.","health":"warn","tokens":1959,"nodes":1030,"depth":16,"loss":0,"tcErrors":12,"failedBackends":[],"outBytes":{"c":10394,"rust":9027,"verilog":15268,"verilog_hir":1799,"zig":9682},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":63,"StructDecl":1,"ExprIdentifier":311,"FnDecl":11,"StmtAssign":43,"ExprFieldAccess":101,"ExprLiteral":143,"StmtIf":48,"ExprBinary":113,"ExprReturn":39,"ExprIndex":34,"StmtLocal":24,"StmtWhile":6,"ExprCall":49,"ExprUnary":7,"StmtExpr":36,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 11 functions and 1 struct. 169 lines compile to 1,959 tokens and 1,030 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 14.9 KB. Compiles with 12 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/python_api.t27","category":"dmitrii-f-t27/trinity-memory","name":"python_api","module":"TrinityMemoryPythonAPI","lines":60,"bytes":3281,"description":"Native entry points for Python FFI representation adapters. No Python-domain fallbacks; caller supplies every buffer and explicit bound.","health":"warn","tokens":762,"nodes":365,"depth":12,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":4488,"rust":3495,"verilog":6358,"verilog_hir":1063,"zig":4121},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":18,"FnDecl":6,"StmtLocal":7,"ExprLiteral":52,"StmtWhile":2,"ExprBinary":32,"ExprIdentifier":91,"StmtIf":11,"ExprIndex":3,"ExprUnary":37,"ExprReturn":13,"StmtAssign":2,"ExprCall":41,"ExprFieldAccess":20,"StmtExpr":30},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 6 functions. 60 lines compile to 762 tokens and 365 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 6.2 KB. Compiles with 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/random.t27","category":"dmitrii-f-t27/trinity-memory","name":"random","module":"TrinityMemoryRandom","lines":191,"bytes":10621,"description":"Integer-seeded Python Random compatibility; no heap or OS dependency. Sources: CPython v3.14.3 Modules/_randommodule.c and Lib/random.py. State and input/output/scratch buffers must be live and nonoverlapping. Initialize before use. Non-cryptographic, for reproducible experiments. Direct bits/below helpers have documented valid domains; checked wrappers return -70 invalid argument / -71 capacity without consuming random state.","health":"warn","tokens":2210,"nodes":1109,"depth":16,"loss":0,"tcErrors":18,"failedBackends":[],"outBytes":{"c":10721,"rust":8875,"verilog":15495,"verilog_hir":2532,"zig":9363},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":55,"ConstDecl":2,"ExprLiteral":179,"StructDecl":1,"ExprIdentifier":331,"FnDecl":16,"StmtIf":33,"ExprBinary":176,"ExprReturn":29,"StmtLocal":33,"StmtWhile":15,"ExprIndex":49,"StmtAssign":76,"ExprFieldAccess":83,"ExprArrayLiteral":1,"StmtExpr":2,"ExprCall":23,"ExprUnary":5},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 1 struct and 2 constants. 191 lines compile to 2,210 tokens and 1,109 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 15.1 KB. Compiles with 18 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/reports.t27","category":"dmitrii-f-t27/trinity-memory","name":"reports","module":"TrinityMemoryReports","lines":368,"bytes":57294,"description":"Native HTML report rendering. Every data value is escaped before insertion; HTML/CSS below are presentation templates, not embedded domain algorithms.","health":"warn","tokens":4212,"nodes":2228,"depth":17,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":58942,"rust":56140,"verilog":64950,"verilog_hir":1649,"zig":57906},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":79,"FnDecl":15,"StmtLocal":41,"ExprLiteral":401,"StmtWhile":11,"ExprBinary":173,"ExprIdentifier":641,"ExprIndex":61,"StmtIf":55,"StmtExpr":235,"ExprCall":283,"StmtAssign":23,"ExprFieldAccess":149,"ExprReturn":43,"ExprUnary":16,"ExprStructLit":2},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 15 functions. 368 lines compile to 4,212 tokens and 2,228 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 63.4 KB. Compiles with 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/baseline5_decoder.t27","category":"dmitrii-f-t27/trinity-memory","name":"baseline5_decoder","module":"TrinityBaseline5DecoderT27","lines":20,"bytes":675,"description":null,"health":"warn","tokens":171,"nodes":87,"depth":11,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1609,"rust":315,"verilog":3181,"verilog_hir":348,"zig":831},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":2,"FnDecl":1,"StmtIf":1,"ExprBinary":21,"ExprIdentifier":7,"ExprLiteral":29,"ExprReturn":2,"TestBlock":6,"StmtExpr":6,"ExprCall":12},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function. Carries 6 tests. 20 lines compile to 171 tokens and 87 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/dense5_decoder.t27","category":"dmitrii-f-t27/trinity-memory","name":"dense5_decoder","module":"TrinityDense5DecoderT27","lines":28,"bytes":976,"description":null,"health":"warn","tokens":207,"nodes":93,"depth":12,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1813,"rust":538,"verilog":3414,"verilog_hir":416,"zig":1559},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":4,"FnDecl":2,"StmtLocal":1,"ExprBinary":14,"ExprFieldAccess":1,"ExprIdentifier":10,"ExprLiteral":28,"StmtIf":3,"ExprReturn":5,"ExprCall":15,"TestBlock":5,"StmtExpr":5},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 2 functions. Carries 5 tests. 28 lines compile to 207 tokens and 93 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/dot_stream.t27","category":"dmitrii-f-t27/trinity-memory","name":"dot_stream","module":"TrinityDotStreamT27","lines":170,"bytes":6011,"description":null,"health":"warn","tokens":1343,"nodes":590,"depth":14,"loss":2,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7145,"rust":3472,"verilog":12098,"verilog_hir":1598,"zig":6183},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":27,"FnDecl":9,"StmtLocal":4,"ExprBinary":95,"ExprIdentifier":130,"ExprLiteral":163,"StmtIf":22,"ExprReturn":22,"ExprCall":41,"ExprFieldAccess":3,"ExprUnary":3,"ConstDecl":18,"StmtAssign":29,"TestBlock":12,"StmtExpr":12},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 9 functions and 18 constants. Carries 12 tests. 170 lines compile to 1,343 tokens and 590 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Compiles with 2 items dropped by error recovery and 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_edge_argmax.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_edge_argmax","module":"TrinityFpgaEdgeArgmaxT27","lines":26,"bytes":1026,"description":null,"health":"warn","tokens":245,"nodes":122,"depth":7,"loss":1,"tcErrors":5,"failedBackends":[],"outBytes":{"c":1920,"rust":570,"verilog":3785,"verilog_hir":423,"zig":1098},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":7,"FnDecl":1,"StmtLocal":3,"ExprLiteral":33,"ExprIdentifier":25,"StmtIf":6,"ExprBinary":9,"StmtAssign":7,"ExprReturn":2,"TestBlock":6,"StmtExpr":6,"ExprCall":12,"ExprUnary":5},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function. Carries 6 tests. 26 lines compile to 245 tokens and 122 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Compiles with 1 item dropped by error recovery and 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_line_emitter.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_line_emitter","module":"TrinityFpgaLineEmitterT27","lines":50,"bytes":1611,"description":null,"health":"warn","tokens":407,"nodes":179,"depth":12,"loss":2,"tcErrors":1,"failedBackends":[],"outBytes":{"c":2715,"rust":789,"verilog":4975,"verilog_hir":799,"zig":2239},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":11,"ConstDecl":8,"ExprLiteral":50,"FnDecl":3,"StmtIf":8,"ExprBinary":17,"ExprIdentifier":34,"ExprReturn":6,"ExprCall":17,"ExprFieldAccess":1,"StmtAssign":10,"ExprUnary":3,"TestBlock":4,"StmtExpr":7},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 3 functions and 8 constants. Carries 4 tests. 50 lines compile to 407 tokens and 179 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Compiles with 2 items dropped by error recovery and 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_reset.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_reset","module":"TrinityFpgaResetT27","lines":25,"bytes":769,"description":null,"health":"warn","tokens":120,"nodes":46,"depth":7,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1379,"rust":307,"verilog":2519,"verilog_hir":565,"zig":556},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":2,"ConstDecl":6,"ExprLiteral":13,"FnDecl":1,"StmtAssign":4,"ExprIdentifier":9,"StmtIf":1,"ExprBinary":5,"TestBlock":1,"StmtExpr":2,"ExprCall":2},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function and 6 constants. Carries 1 test. 25 lines compile to 120 tokens and 46 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_tick.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_tick","module":"TrinityFpgaTickT27","lines":21,"bytes":768,"description":null,"health":"warn","tokens":108,"nodes":47,"depth":8,"loss":2,"tcErrors":1,"failedBackends":[],"outBytes":{"c":1356,"rust":211,"verilog":2557,"verilog_hir":445,"zig":525},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":3,"ConstDecl":3,"ExprLiteral":14,"FnDecl":1,"StmtAssign":3,"ExprIdentifier":7,"ExprBinary":8,"ExprUnary":1,"StmtIf":1,"TestBlock":2,"StmtExpr":2,"ExprCall":2},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function and 3 constants. Carries 2 tests. 21 lines compile to 108 tokens and 47 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 2 items dropped by error recovery and 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_trace_player.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_trace_player","module":"TrinityFpgaTracePlayerT27","lines":576,"bytes":19453,"description":null,"health":"warn","tokens":3922,"nodes":2149,"depth":85,"loss":2,"tcErrors":33,"failedBackends":[],"outBytes":{"c":20320,"rust":5100,"verilog":30505,"verilog_hir":3159,"zig":19690},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":161,"ConstDecl":119,"ExprLiteral":437,"FnDecl":6,"ExprReturn":5,"ExprBinary":209,"ExprIdentifier":668,"ExprFieldAccess":20,"ExprCall":64,"StmtAssign":279,"StmtIf":104,"ExprUnary":13,"ExprIndex":48,"TestBlock":5,"StmtExpr":11},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 6 functions and 119 constants. Carries 5 tests. 576 lines compile to 3,922 tokens and 2,149 AST nodes, depth 85. Emits 5 of 5 backends; largest is Verilog at 29.8 KB. Compiles with 2 items dropped by error recovery and 33 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_uart_tx.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_uart_tx","module":"TrinityFpgaUartTxT27","lines":34,"bytes":954,"description":null,"health":"warn","tokens":198,"nodes":95,"depth":11,"loss":2,"tcErrors":3,"failedBackends":[],"outBytes":{"c":1817,"rust":289,"verilog":3217,"verilog_hir":479,"zig":931},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":7,"ConstDecl":5,"ExprLiteral":27,"FnDecl":1,"StmtIf":4,"ExprUnary":1,"ExprIdentifier":19,"StmtAssign":9,"ExprBinary":16,"TestBlock":2,"StmtExpr":2,"ExprCall":2},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function and 5 constants. Carries 2 tests. 34 lines compile to 198 tokens and 95 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Compiles with 2 items dropped by error recovery and 3 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/sparse41_decoder.t27","category":"dmitrii-f-t27/trinity-memory","name":"sparse41_decoder","module":"TrinitySparse41DecoderT27","lines":21,"bytes":714,"description":null,"health":"warn","tokens":180,"nodes":86,"depth":11,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1686,"rust":404,"verilog":3351,"verilog_hir":345,"zig":1480},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":4,"FnDecl":1,"StmtIf":3,"ExprBinary":14,"ExprIdentifier":7,"ExprLiteral":27,"ExprReturn":4,"StmtLocal":1,"ExprFieldAccess":1,"TestBlock":6,"StmtExpr":6,"ExprCall":12},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function. Carries 6 tests. 21 lines compile to 180 tokens and 86 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_join.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_join","module":"TrinityStreamJoinT27","lines":39,"bytes":1842,"description":null,"health":"warn","tokens":309,"nodes":137,"depth":9,"loss":1,"tcErrors":5,"failedBackends":[],"outBytes":{"c":2431,"rust":880,"verilog":4425,"verilog_hir":517,"zig":2122},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":7,"FnDecl":2,"StmtIf":6,"ExprIdentifier":24,"ExprReturn":3,"ExprFieldAccess":1,"ExprLiteral":48,"StmtLocal":5,"ExprBinary":11,"StmtAssign":5,"ExprCall":13,"TestBlock":6,"StmtExpr":6},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 2 functions. Carries 6 tests. 39 lines compile to 309 tokens and 137 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Compiles with 1 item dropped by error recovery and 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_storage.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_storage","module":"TrinityStreamStorageT27","lines":68,"bytes":2308,"description":null,"health":"warn","tokens":351,"nodes":132,"depth":15,"loss":2,"tcErrors":2,"failedBackends":[],"outBytes":{"c":2498,"rust":748,"verilog":4219,"verilog_hir":856,"zig":1499},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":12,"ConstDecl":13,"ExprLiteral":25,"FnDecl":2,"StmtIf":8,"ExprIdentifier":35,"ExprReturn":2,"ExprBinary":9,"StmtAssign":14,"ExprIndex":2,"ExprUnary":2,"TestBlock":2,"StmtExpr":2,"ExprCall":4},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 2 functions and 13 constants. Carries 2 tests. 68 lines compile to 351 tokens and 132 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Compiles with 2 items dropped by error recovery and 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_view.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_view","module":"TrinityStreamViewT27","lines":55,"bytes":2086,"description":null,"health":"warn","tokens":536,"nodes":255,"depth":15,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3215,"rust":1553,"verilog":5336,"verilog_hir":690,"zig":2752},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":10,"FnDecl":4,"StmtLocal":3,"ExprBinary":51,"ExprIdentifier":41,"ExprLiteral":88,"StmtIf":9,"ExprReturn":12,"ExprCall":23,"StmtAssign":1,"ExprFieldAccess":1,"TestBlock":6,"StmtExpr":6},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 4 functions. Carries 6 tests. 55 lines compile to 536 tokens and 255 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 5.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl_driver.t27","category":"dmitrii-f-t27/trinity-memory","name":"rtl_driver","module":"TrinityMemoryRTLDriver","lines":316,"bytes":21275,"description":"RTL packet preparation, observed-output validation and actual Icarus runner. The runner invokes a generic OS process ABI and checks both child exits. Parsing a fixture alone is not simulation evidence; no software fallback. Buffers must be live/nonoverlapping. Prepared outputs commit after validation; observed results are scratch on failure, summary commits only on success.","health":"warn","tokens":4482,"nodes":2279,"depth":21,"loss":0,"tcErrors":26,"failedBackends":[],"outBytes":{"c":24199,"rust":22281,"verilog":33758,"verilog_hir":3169,"zig":22387},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":107,"ConstDecl":7,"ExprLiteral":367,"StructDecl":5,"ExprIdentifier":694,"FnDecl":16,"StmtLocal":75,"ExprBinary":344,"StmtIf":80,"StmtAssign":101,"ExprFieldAccess":203,"ExprReturn":74,"StmtWhile":20,"ExprIndex":46,"ExprUnary":41,"ExprCall":74,"ExprStructLit":6,"StmtExpr":16,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 5 structs and 7 constants. 316 lines compile to 4,482 tokens and 2,279 AST nodes, depth 21. Emits 5 of 5 backends; largest is Verilog at 33.0 KB. Compiles with 26 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/sparsity.t27","category":"dmitrii-f-t27/trinity-memory","name":"sparsity","module":"TrinityMemorySparsity","lines":264,"bytes":10398,"description":"Trinity Memory explicit lossy preparation and marginal entropy. Status: 0 success, -1 invalid input, -2 short output. Valid arrays and non-overlapping input/output buffers are a host ABI duty. log2 is an external host libm primitive, not a second application algorithm.","health":"warn","tokens":2130,"nodes":1120,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":11660,"rust":9582,"verilog":18420,"verilog_hir":1652,"zig":10408},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":75,"FnDecl":12,"ExprReturn":51,"ExprBinary":178,"ExprIdentifier":298,"ExprLiteral":183,"ExprUnary":40,"StmtIf":56,"StmtLocal":46,"StmtWhile":14,"ExprCall":35,"ExprIndex":30,"StmtAssign":40,"StructDecl":1,"ExprFieldAccess":46,"TestBlock":2,"ExprArrayLiteral":3,"StmtExpr":10},"tags":["domain/other","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 12 functions and 1 struct. Carries 2 tests. 264 lines compile to 2,130 tokens and 1,120 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/tensorpack.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack","module":"TrinityMemoryTensorPack","lines":248,"bytes":11174,"description":"Native TensorPack v1 framing and caller-supplied descriptor validation. This is NOT a JSON parser or a full TensorPack decoder. In particular, this module cannot establish that descriptors equal the JSON metadata in a file. Include generated codecs.h, container.h, then tensorpack.h. All nonempty pointer ranges must be valid and output records must not alias input data.","health":"warn","tokens":2329,"nodes":1245,"depth":14,"loss":0,"tcErrors":18,"failedBackends":[],"outBytes":{"c":12090,"rust":11082,"verilog":18016,"verilog_hir":1818,"zig":11465},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":69,"ConstDecl":6,"ExprLiteral":179,"StructDecl":4,"ExprIdentifier":382,"FnDecl":6,"StmtLocal":37,"StmtWhile":13,"ExprBinary":186,"ExprIndex":58,"StmtIf":53,"ExprReturn":52,"StmtAssign":44,"ExprCall":29,"ExprFieldAccess":112,"ExprUnary":14,"ExprStructLit":1},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 6 functions, 4 structs and 6 constants. 248 lines compile to 2,329 tokens and 1,245 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.6 KB. Compiles with 18 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_cli.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack_cli","module":"TrinityMemoryTensorPackCLI","lines":206,"bytes":13197,"description":"Native TensorPack CLI JSON contracts, independent of file/terminal services. Workspace, value buffers and output JSON are caller-owned scratch. Callers publish output only after success; no routine allocates or opens a path.","health":"warn","tokens":2942,"nodes":1534,"depth":14,"loss":0,"tcErrors":13,"failedBackends":[],"outBytes":{"c":14997,"rust":13553,"verilog":19063,"verilog_hir":1511,"zig":14133},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":61,"FnDecl":9,"ExprReturn":31,"ExprBinary":112,"ExprCall":91,"ExprFieldAccess":203,"ExprIdentifier":464,"ExprLiteral":200,"StmtLocal":41,"ExprStructLit":6,"ExprUnary":55,"StmtIf":44,"ExprIndex":91,"StmtWhile":13,"StmtAssign":56,"StmtExpr":57},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 9 functions. 206 lines compile to 2,942 tokens and 1,534 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 18.6 KB. Compiles with 13 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_json.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack_json","module":"TrinityMemoryTensorPackJSON","lines":417,"bytes":22429,"description":"Native TensorPack JSON binding and canonical serialization. Workspace buffers are scratch and may change on errors. All other output is committed only after complete validation. Caller ranges must be valid, nonoverlapping and stable throughout a call; no routine allocates memory.","health":"warn","tokens":5015,"nodes":2657,"depth":14,"loss":0,"tcErrors":41,"failedBackends":[],"outBytes":{"c":24676,"rust":17117,"verilog":34171,"verilog_hir":2851,"zig":23056},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":126,"ConstDecl":2,"ExprLiteral":404,"StructDecl":2,"ExprIdentifier":805,"FnDecl":17,"StmtIf":86,"ExprBinary":285,"ExprReturn":61,"StmtLocal":80,"StmtWhile":31,"ExprIndex":156,"ExprFieldAccess":230,"StmtAssign":113,"ExprCall":124,"ExprUnary":51,"ExprStructLit":6,"StmtExpr":70,"ExprArrayLiteral":6,"TestBlock":2},"tags":["domain/other","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 17 functions, 2 structs and 2 constants. Carries 2 tests. 417 lines compile to 5,015 tokens and 2,657 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 33.4 KB. Compiles with 41 type errors."},{"path":"trios/.trinity/specs/hardware-constraints-kg.t27","category":"trios/.trinity","name":"hardware-constraints-kg","module":null,"lines":275,"bytes":6874,"description":null,"health":"warn","tokens":674,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trios","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/medium","src/trios"],"summary":"Declares no top-level items. 275 lines compile to 674 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trios/.trinity/specs/parameter-golf/phi_init.t27","category":"trios/.trinity","name":"phi_init","module":"PhiWeightInit","lines":147,"bytes":6958,"description":"t27/specs/parameter-golf/phi_init.t27 φ-Based Weight Initialization for Parameter Golf Derivation from sacred physics + GF16 quantization","health":"ok","tokens":568,"nodes":129,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3242,"rust":1404,"verilog":5569,"verilog_hir":621,"zig":3759},"repo":"trios","kinds":{"Module":4,"UseDecl":3,"StructDecl":1,"ExprIdentifier":30,"FnDecl":4,"StmtLocal":6,"ExprCall":3,"ExprBinary":6,"ExprLiteral":12,"ExprFieldAccess":14,"StmtIf":3,"ExprUnary":2,"ExprReturn":6,"ConstDecl":4,"ExprIndex":4,"ExprArrayLiteral":1,"ExprStructLit":1,"StmtExpr":17,"StmtAssign":1,"TestBlock":5,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/trios"],"summary":"Declares 4 functions, 1 struct and 4 constants. Carries 5 tests and 2 invariants. 147 lines compile to 568 tokens and 129 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_retry.t27","category":"trios/apps","name":"adaptive_retry","module":"AdaptiveRetry","lines":143,"bytes":4622,"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","health":"ok","tokens":535,"nodes":135,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2732,"rust":799,"verilog":4251,"verilog_hir":723,"zig":2243},"repo":"trios","kinds":{"Module":19,"ConstDecl":5,"ExprLiteral":23,"FnDecl":6,"StmtIf":9,"ExprBinary":18,"ExprIdentifier":29,"StmtExpr":15,"ExprFieldAccess":2,"StmtLocal":5,"ExprCall":4},"tags":["domain/other","has/functions","health/ok","size/small","src/trios"],"summary":"Declares 6 functions and 5 constants. 143 lines compile to 535 tokens and 135 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_routing.t27","category":"trios/apps","name":"adaptive_routing","module":"AdaptiveRouting","lines":281,"bytes":10124,"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","health":"warn","tokens":1757,"nodes":779,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10578,"rust":4852,"verilog":16754,"verilog_hir":1748,"zig":8863},"repo":"trios","kinds":{"Module":18,"UseDecl":1,"ConstDecl":5,"ExprLiteral":231,"FnDecl":19,"ExprReturn":27,"ExprBinary":93,"ExprIdentifier":162,"ExprFieldAccess":8,"StmtIf":15,"StmtLocal":14,"ExprCall":118,"StmtAssign":31,"TestBlock":15,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 5 constants. Carries 15 tests. 281 lines compile to 1,757 tokens and 779 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 16.4 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/anomaly_detector.t27","category":"trios/apps","name":"anomaly_detector","module":"anomaly_detector","lines":378,"bytes":11717,"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","health":"warn","tokens":1894,"nodes":837,"depth":12,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":11030,"rust":4224,"verilog":17113,"verilog_hir":2076,"zig":8729},"repo":"trios","kinds":{"Module":74,"UseDecl":1,"ConstDecl":9,"ExprLiteral":148,"FnDecl":23,"ExprReturn":46,"ExprBinary":141,"ExprIdentifier":230,"StmtLocal":47,"StmtWhile":6,"ExprCall":27,"ExprIndex":12,"StmtAssign":30,"StmtIf":43},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 23 functions and 9 constants. 378 lines compile to 1,894 tokens and 837 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 16.7 KB. Compiles with 6 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/api_documenter.t27","category":"trios/apps","name":"api_documenter","module":"api_documenter","lines":372,"bytes":13077,"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","health":"warn","tokens":2128,"nodes":789,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13146,"rust":9512,"verilog":19728,"verilog_hir":3871,"zig":9622},"repo":"trios","kinds":{"Module":15,"UseDecl":1,"ConstDecl":11,"ExprLiteral":190,"FnDecl":42,"ExprReturn":44,"ExprBinary":197,"ExprIdentifier":182,"StmtLocal":50,"ExprCall":27,"StmtIf":8,"StmtAssign":14,"StmtWhile":4,"ExprIndex":4},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 42 functions and 11 constants. 372 lines compile to 2,128 tokens and 789 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.3 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/area_optimization.t27","category":"trios/apps","name":"area_optimization","module":"AreaOptimization","lines":227,"bytes":7102,"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","health":"ok","tokens":1089,"nodes":484,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7931,"rust":2333,"verilog":14985,"verilog_hir":1776,"zig":6321},"repo":"trios","kinds":{"Module":14,"UseDecl":1,"ConstDecl":5,"ExprLiteral":148,"FnDecl":15,"ExprReturn":24,"ExprBinary":71,"ExprIdentifier":75,"StmtIf":9,"ExprFieldAccess":1,"ExprCall":57,"TestBlock":22,"StmtAssign":17,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 15 functions and 5 constants. Carries 22 tests. 227 lines compile to 1,089 tokens and 484 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/auto_config.t27","category":"trios/apps","name":"auto_config","module":"auto_config","lines":403,"bytes":13864,"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","health":"warn","tokens":2090,"nodes":885,"depth":22,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":11360,"rust":9966,"verilog":17570,"verilog_hir":1815,"zig":10399},"repo":"trios","kinds":{"Module":69,"UseDecl":1,"ConstDecl":20,"ExprLiteral":141,"FnDecl":19,"ExprReturn":31,"ExprBinary":118,"ExprIdentifier":265,"StmtLocal":54,"ExprArrayLiteral":1,"StmtWhile":12,"ExprCall":39,"ExprIndex":28,"StmtIf":43,"StmtAssign":34,"StmtExpr":7,"StmtBreak":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 19 functions and 20 constants. 403 lines compile to 2,090 tokens and 885 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 17.2 KB. Compiles with 9 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/bandwidth_allocator.t27","category":"trios/apps","name":"bandwidth_allocator","module":"BandwidthAllocator","lines":353,"bytes":14766,"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","health":"warn","tokens":2513,"nodes":1164,"depth":13,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":14716,"rust":7462,"verilog":22461,"verilog_hir":2021,"zig":12869},"repo":"trios","kinds":{"Module":35,"UseDecl":1,"ConstDecl":4,"ExprLiteral":316,"FnDecl":19,"ExprReturn":28,"ExprBinary":145,"ExprIdentifier":271,"ExprFieldAccess":16,"StmtIf":32,"StmtLocal":29,"ExprCall":181,"StmtAssign":48,"TestBlock":16,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 4 constants. Carries 16 tests. 353 lines compile to 2,513 tokens and 1,164 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 21.9 KB. Compiles with 6 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cache_management.t27","category":"trios/apps","name":"cache_management","module":"cache_management","lines":346,"bytes":10455,"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","health":"ok","tokens":1675,"nodes":650,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9878,"rust":6476,"verilog":15485,"verilog_hir":2044,"zig":7693},"repo":"trios","kinds":{"Module":37,"UseDecl":1,"ConstDecl":4,"ExprLiteral":77,"FnDecl":27,"ExprReturn":37,"ExprBinary":88,"ExprIdentifier":217,"StmtLocal":49,"ExprCall":41,"StmtIf":23,"StmtAssign":24,"StmtWhile":6,"ExprIndex":18,"StmtBreak":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 27 functions and 4 constants. 346 lines compile to 1,675 tokens and 650 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.1 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/compression_engine.t27","category":"trios/apps","name":"compression_engine","module":"compression_engine","lines":320,"bytes":9865,"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","health":"warn","tokens":1567,"nodes":695,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":9521,"rust":4867,"verilog":14703,"verilog_hir":2060,"zig":7463},"repo":"trios","kinds":{"Module":61,"UseDecl":1,"ConstDecl":8,"ExprLiteral":115,"FnDecl":19,"ExprReturn":37,"ExprBinary":120,"ExprIdentifier":209,"StmtIf":28,"StmtLocal":38,"StmtWhile":7,"StmtAssign":34,"ExprIndex":5,"ExprCall":13},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 8 constants. 320 lines compile to 1,567 tokens and 695 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 9 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/congestion_control.t27","category":"trios/apps","name":"congestion_control","module":"congestion_control","lines":262,"bytes":7582,"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","health":"warn","tokens":1169,"nodes":481,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7382,"rust":4877,"verilog":11407,"verilog_hir":1771,"zig":5551},"repo":"trios","kinds":{"Module":31,"UseDecl":1,"ConstDecl":9,"ExprLiteral":56,"FnDecl":19,"ExprReturn":26,"ExprBinary":61,"ExprIdentifier":166,"ExprCall":30,"StmtLocal":30,"StmtIf":19,"StmtAssign":26,"StmtWhile":4,"ExprIndex":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 9 constants. 262 lines compile to 1,169 tokens and 481 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.1 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cross_layer_optimizer.t27","category":"trios/apps","name":"cross_layer_optimizer","module":"CrossLayerOptimizer","lines":316,"bytes":12580,"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","health":"warn","tokens":2239,"nodes":1001,"depth":13,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":12614,"rust":3507,"verilog":20352,"verilog_hir":1878,"zig":10946},"repo":"trios","kinds":{"Module":28,"UseDecl":1,"ConstDecl":8,"ExprLiteral":291,"FnDecl":19,"ExprReturn":23,"ExprBinary":131,"ExprIdentifier":220,"ExprFieldAccess":12,"StmtIf":20,"StmtLocal":35,"ExprCall":123,"StmtAssign":44,"TestBlock":16,"StmtExpr":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 8 constants. Carries 16 tests. 316 lines compile to 2,239 tokens and 1,001 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 10 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/docs_generator.t27","category":"trios/apps","name":"docs_generator","module":"docs_generator","lines":387,"bytes":12232,"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","health":"warn","tokens":2279,"nodes":827,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13515,"rust":9662,"verilog":20021,"verilog_hir":4915,"zig":9015},"repo":"trios","kinds":{"Module":14,"UseDecl":1,"ConstDecl":19,"ExprLiteral":223,"FnDecl":54,"ExprReturn":54,"ExprBinary":238,"ExprIdentifier":163,"StmtLocal":25,"StmtIf":8,"StmtAssign":14,"StmtWhile":2,"ExprCall":9,"ExprIndex":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 54 functions and 19 constants. 387 lines compile to 2,279 tokens and 827 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/energy_aware_routing.t27","category":"trios/apps","name":"energy_aware_routing","module":"EnergyAwareRouting","lines":334,"bytes":11308,"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","health":"warn","tokens":1872,"nodes":841,"depth":9,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":11330,"rust":6294,"verilog":18449,"verilog_hir":1856,"zig":9679},"repo":"trios","kinds":{"Module":31,"UseDecl":1,"ConstDecl":4,"ExprLiteral":225,"FnDecl":19,"ExprReturn":24,"ExprBinary":96,"ExprIdentifier":180,"ExprFieldAccess":8,"StmtIf":30,"StmtLocal":32,"ExprCall":121,"StmtAssign":38,"TestBlock":13,"StmtExpr":19},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 4 constants. Carries 13 tests. 334 lines compile to 1,872 tokens and 841 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 9 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/etx.t27","category":"trios/apps","name":"etx","module":"MeshEtx","lines":133,"bytes":4646,"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","health":"ok","tokens":733,"nodes":373,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4614,"rust":795,"verilog":7448,"verilog_hir":771,"zig":4058},"repo":"trios","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":90,"FnDecl":6,"StmtIf":9,"ExprBinary":44,"ExprIdentifier":101,"ExprReturn":15,"ExprFieldAccess":3,"ExprCall":46,"TestBlock":6,"StmtAssign":21,"StmtExpr":11},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/trios"],"summary":"Declares 6 functions and 4 constants. Carries 6 tests. 133 lines compile to 733 tokens and 373 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/failure_predictor.t27","category":"trios/apps","name":"failure_predictor","module":"failure_predictor","lines":327,"bytes":11955,"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","health":"warn","tokens":2045,"nodes":948,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":12241,"rust":5609,"verilog":20157,"verilog_hir":1954,"zig":10513},"repo":"trios","kinds":{"Module":34,"UseDecl":1,"ConstDecl":4,"ExprLiteral":294,"FnDecl":19,"ExprReturn":35,"ExprBinary":129,"ExprIdentifier":170,"ExprFieldAccess":16,"StmtIf":25,"StmtLocal":26,"ExprCall":119,"StmtAssign":36,"TestBlock":17,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 4 constants. Carries 17 tests. 327 lines compile to 2,045 tokens and 948 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.7 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/fault_detection.t27","category":"trios/apps","name":"fault_detection","module":"FaultDetection","lines":256,"bytes":9377,"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","health":"ok","tokens":1802,"nodes":796,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10273,"rust":4537,"verilog":17032,"verilog_hir":1633,"zig":8694},"repo":"trios","kinds":{"Module":17,"UseDecl":1,"ConstDecl":5,"ExprLiteral":247,"FnDecl":18,"ExprReturn":26,"ExprBinary":91,"ExprIdentifier":151,"ExprFieldAccess":16,"StmtIf":16,"StmtLocal":18,"ExprCall":121,"StmtAssign":30,"TestBlock":17,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 18 functions and 5 constants. Carries 17 tests. 256 lines compile to 1,802 tokens and 796 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/flow_control.t27","category":"trios/apps","name":"flow_control","module":"flow_control","lines":269,"bytes":7580,"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","health":"ok","tokens":1343,"nodes":480,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7789,"rust":4595,"verilog":12689,"verilog_hir":1914,"zig":5709},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":8,"ExprLiteral":67,"FnDecl":26,"ExprReturn":37,"ExprBinary":66,"ExprIdentifier":140,"StmtLocal":40,"ExprCall":35,"StmtIf":13,"StmtAssign":8,"StmtWhile":5,"ExprIndex":7},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 26 functions and 8 constants. 269 lines compile to 1,343 tokens and 480 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.4 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/hardware_validation.t27","category":"trios/apps","name":"hardware_validation","module":"HardwareValidation","lines":203,"bytes":6473,"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","health":"ok","tokens":1130,"nodes":472,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7508,"rust":2404,"verilog":13177,"verilog_hir":1763,"zig":5337},"repo":"trios","kinds":{"Module":2,"UseDecl":1,"ConstDecl":8,"ExprLiteral":140,"FnDecl":18,"ExprReturn":18,"ExprBinary":81,"ExprIdentifier":83,"StmtIf":1,"ExprCall":64,"TestBlock":17,"StmtAssign":14,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 18 functions and 8 constants. Carries 17 tests. 203 lines compile to 1,130 tokens and 472 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_dashboard.t27","category":"trios/apps","name":"health_dashboard","module":"health_dashboard","lines":349,"bytes":11959,"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","health":"warn","tokens":1852,"nodes":819,"depth":14,"loss":0,"tcErrors":12,"failedBackends":[],"outBytes":{"c":11805,"rust":7280,"verilog":17340,"verilog_hir":2656,"zig":9142},"repo":"trios","kinds":{"Module":61,"UseDecl":1,"ConstDecl":19,"ExprLiteral":139,"FnDecl":27,"ExprReturn":38,"ExprBinary":168,"ExprIdentifier":240,"StmtIf":34,"StmtLocal":32,"StmtWhile":6,"ExprIndex":13,"ExprCall":13,"StmtAssign":28},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 27 functions and 19 constants. 349 lines compile to 1,852 tokens and 819 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 16.9 KB. Compiles with 12 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_monitoring.t27","category":"trios/apps","name":"health_monitoring","module":"HealthMonitoring","lines":310,"bytes":15008,"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","health":"ok","tokens":3018,"nodes":1500,"depth":21,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15599,"rust":6579,"verilog":21802,"verilog_hir":1377,"zig":14270},"repo":"trios","kinds":{"Module":78,"UseDecl":1,"ConstDecl":17,"ExprLiteral":416,"FnDecl":13,"ExprReturn":32,"ExprBinary":204,"ExprIdentifier":359,"ExprFieldAccess":24,"StmtIf":67,"StmtLocal":6,"ExprCall":204,"StmtAssign":58,"TestBlock":9,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 13 functions and 17 constants. Carries 9 tests. 310 lines compile to 3,018 tokens and 1,500 AST nodes, depth 21. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_framework.t27","category":"trios/apps","name":"integration_framework","module":"integration_framework","lines":544,"bytes":17859,"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","health":"warn","tokens":2924,"nodes":1128,"depth":15,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":17567,"rust":13139,"verilog":26109,"verilog_hir":4445,"zig":13482},"repo":"trios","kinds":{"Module":45,"UseDecl":1,"ConstDecl":33,"ExprLiteral":232,"FnDecl":48,"ExprReturn":55,"ExprBinary":224,"ExprIdentifier":297,"StmtLocal":62,"ExprCall":33,"StmtWhile":16,"ExprIndex":23,"StmtIf":24,"StmtAssign":34,"StmtBreak":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 48 functions and 33 constants. 544 lines compile to 2,924 tokens and 1,128 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 25.5 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_tests.t27","category":"trios/apps","name":"integration_tests","module":"MeshIntegrationTests","lines":244,"bytes":7954,"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","health":"ok","tokens":1167,"nodes":609,"depth":18,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5470,"rust":439,"verilog":8924,"verilog_hir":515,"zig":5087},"repo":"trios","kinds":{"Module":10,"UseDecl":1,"ConstDecl":7,"ExprLiteral":132,"FnDecl":2,"StmtIf":5,"ExprBinary":92,"ExprIdentifier":200,"ExprReturn":5,"ExprFieldAccess":23,"StmtLocal":1,"TestBlock":10,"StmtAssign":53,"ExprCall":42,"StmtExpr":26},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 2 functions and 7 constants. Carries 10 tests. 244 lines compile to 1,167 tokens and 609 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 8.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/key_management.t27","category":"trios/apps","name":"key_management","module":"KeyManagement","lines":301,"bytes":11264,"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","health":"warn","tokens":2166,"nodes":1010,"depth":15,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":11446,"rust":6566,"verilog":17243,"verilog_hir":1281,"zig":10110},"repo":"trios","kinds":{"Module":46,"UseDecl":1,"ConstDecl":5,"ExprLiteral":312,"FnDecl":14,"ExprReturn":35,"ExprBinary":126,"ExprIdentifier":197,"ExprFieldAccess":20,"StmtIf":33,"ExprCall":151,"StmtLocal":13,"StmtAssign":28,"TestBlock":13,"StmtExpr":16},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 14 functions and 5 constants. Carries 13 tests. 301 lines compile to 2,166 tokens and 1,010 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 16.8 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/link_quality_monitor.t27","category":"trios/apps","name":"link_quality_monitor","module":"LinkQualityMonitor","lines":170,"bytes":6171,"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","health":"ok","tokens":773,"nodes":208,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3109,"rust":794,"verilog":4667,"verilog_hir":790,"zig":2759},"repo":"trios","kinds":{"Module":19,"ConstDecl":7,"ExprLiteral":39,"FnDecl":6,"StmtLocal":9,"ExprBinary":32,"ExprFieldAccess":22,"ExprIdentifier":41,"StmtIf":9,"StmtExpr":15,"ExprIndex":8,"ExprUnary":1},"tags":["domain/other","has/functions","health/ok","size/medium","src/trios"],"summary":"Declares 6 functions and 7 constants. 170 lines compile to 773 tokens and 208 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/lite_crypto.t27","category":"trios/apps","name":"lite_crypto","module":"LiteCrypto","lines":157,"bytes":5455,"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","health":"ok","tokens":755,"nodes":299,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4476,"rust":736,"verilog":8621,"verilog_hir":781,"zig":3930},"repo":"trios","kinds":{"Module":1,"UseDecl":1,"ConstDecl":3,"ExprLiteral":72,"FnDecl":6,"StmtLocal":13,"ExprBinary":42,"ExprIdentifier":74,"ExprReturn":4,"ExprFieldAccess":4,"ExprCall":32,"TestBlock":13,"StmtAssign":21,"StmtExpr":13},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 6 functions and 3 constants. Carries 13 tests. 157 lines compile to 755 tokens and 299 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.4 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/load_predictor.t27","category":"trios/apps","name":"load_predictor","module":"load_predictor","lines":305,"bytes":8931,"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","health":"warn","tokens":1509,"nodes":619,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8875,"rust":4498,"verilog":14007,"verilog_hir":1844,"zig":6763},"repo":"trios","kinds":{"Module":47,"UseDecl":1,"ConstDecl":5,"ExprLiteral":97,"FnDecl":22,"ExprReturn":37,"ExprBinary":96,"ExprIdentifier":183,"StmtLocal":43,"StmtWhile":6,"ExprIndex":9,"StmtAssign":24,"ExprCall":22,"StmtIf":26,"ExprUnary":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 22 functions and 5 constants. 305 lines compile to 1,509 tokens and 619 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/local_processing.t27","category":"trios/apps","name":"local_processing","module":"local_processing","lines":310,"bytes":9171,"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","health":"warn","tokens":1628,"nodes":625,"depth":9,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":9379,"rust":5979,"verilog":14736,"verilog_hir":2715,"zig":6924},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":10,"ExprLiteral":103,"FnDecl":29,"ExprReturn":36,"ExprBinary":110,"ExprIdentifier":186,"StmtLocal":40,"ExprCall":24,"StmtWhile":10,"ExprIndex":11,"StmtAssign":26,"StmtIf":12},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 29 functions and 10 constants. 310 lines compile to 1,628 tokens and 625 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/m3_multihop.t27","category":"trios/apps","name":"m3_multihop","module":"M3MultiHop","lines":351,"bytes":11874,"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","health":"ok","tokens":1452,"nodes":68,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1948,"rust":807,"verilog":3098,"verilog_hir":517,"zig":1714},"repo":"trios","kinds":{"Module":3,"ConstDecl":9,"ExprLiteral":15,"FnDecl":4,"StmtExpr":5,"ExprFieldAccess":7,"ExprIdentifier":11,"StmtLocal":6,"ExprBinary":5,"StmtIf":1,"ExprCall":2},"tags":["domain/other","has/functions","health/ok","size/medium","src/trios"],"summary":"Declares 4 functions and 9 constants. 351 lines compile to 1,452 tokens and 68 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_protocol_stack.t27","category":"trios/apps","name":"mesh_protocol_stack","module":"MeshProtocolStack","lines":210,"bytes":7140,"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","health":"ok","tokens":1332,"nodes":606,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7089,"rust":1168,"verilog":12024,"verilog_hir":907,"zig":6137},"repo":"trios","kinds":{"Module":17,"UseDecl":1,"ConstDecl":5,"ExprLiteral":94,"FnDecl":10,"ExprReturn":14,"ExprBinary":66,"ExprIdentifier":193,"ExprFieldAccess":29,"StmtIf":9,"ExprCall":86,"TestBlock":14,"StmtAssign":39,"StmtExpr":29},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 10 functions and 5 constants. Carries 14 tests. 210 lines compile to 1,332 tokens and 606 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 11.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_routing.t27","category":"trios/apps","name":"mesh_routing","module":"MeshRouting","lines":328,"bytes":10981,"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","health":"ok","tokens":1564,"nodes":497,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7010,"rust":874,"verilog":13079,"verilog_hir":993,"zig":5566},"repo":"trios","kinds":{"Module":43,"UseDecl":1,"ConstDecl":6,"ExprLiteral":108,"FnDecl":7,"StmtLocal":5,"ExprFieldAccess":2,"ExprBinary":67,"ExprIdentifier":105,"StmtIf":22,"ExprReturn":5,"ExprUnary":2,"ExprCall":51,"TestBlock":22,"StmtExpr":46,"StmtAssign":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 7 functions and 6 constants. Carries 22 tests. 328 lines compile to 1,564 tokens and 497 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_router.t27","category":"trios/apps","name":"multipath_router","module":"MultiPathRouter","lines":126,"bytes":4401,"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","health":"warn","tokens":533,"nodes":118,"depth":7,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":2570,"rust":1097,"verilog":3980,"verilog_hir":749,"zig":2131},"repo":"trios","kinds":{"Module":7,"ConstDecl":3,"ExprLiteral":19,"FnDecl":5,"StmtLocal":11,"ExprIndex":4,"ExprIdentifier":31,"StmtIf":4,"ExprBinary":17,"StmtAssign":2,"ExprFieldAccess":7,"StmtExpr":7,"ExprCall":1},"tags":["domain/other","has/functions","health/warn","issue/type-errors","size/small","src/trios"],"summary":"Declares 5 functions and 3 constants. 126 lines compile to 533 tokens and 118 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_routing.t27","category":"trios/apps","name":"multipath_routing","module":"multipath_routing","lines":379,"bytes":13690,"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","health":"ok","tokens":2461,"nodes":1144,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13454,"rust":5433,"verilog":20813,"verilog_hir":1904,"zig":11656},"repo":"trios","kinds":{"Module":36,"UseDecl":1,"ConstDecl":5,"ExprLiteral":360,"FnDecl":20,"ExprReturn":32,"ExprBinary":141,"ExprIdentifier":246,"ExprFieldAccess":8,"StmtIf":30,"StmtLocal":21,"ExprCall":166,"StmtAssign":36,"ExprUnary":1,"StmtWhile":1,"TestBlock":16,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 20 functions and 5 constants. Carries 16 tests. 379 lines compile to 2,461 tokens and 1,144 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 20.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_analytics.t27","category":"trios/apps","name":"network_analytics","module":"NetworkAnalytics","lines":271,"bytes":8932,"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","health":"ok","tokens":1483,"nodes":631,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9438,"rust":3792,"verilog":16091,"verilog_hir":1789,"zig":7725},"repo":"trios","kinds":{"Module":6,"UseDecl":1,"ConstDecl":9,"ExprLiteral":181,"FnDecl":21,"ExprReturn":26,"ExprBinary":78,"ExprIdentifier":126,"ExprFieldAccess":8,"ExprCall":92,"StmtLocal":13,"StmtIf":5,"TestBlock":18,"StmtAssign":23,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 21 functions and 9 constants. Carries 18 tests. 271 lines compile to 1,483 tokens and 631 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_coding.t27","category":"trios/apps","name":"network_coding","module":"NetworkCoding","lines":298,"bytes":10044,"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","health":"ok","tokens":1867,"nodes":775,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10591,"rust":3997,"verilog":18434,"verilog_hir":2031,"zig":8652},"repo":"trios","kinds":{"Module":12,"UseDecl":1,"ConstDecl":3,"ExprLiteral":263,"FnDecl":22,"ExprReturn":27,"ExprBinary":98,"ExprIdentifier":127,"StmtLocal":45,"ExprCall":108,"StmtIf":11,"StmtAssign":8,"ExprFieldAccess":8,"TestBlock":18,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 22 functions and 3 constants. Carries 18 tests. 298 lines compile to 1,867 tokens and 775 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_orchestrator.t27","category":"trios/apps","name":"network_orchestrator","module":"network_orchestrator","lines":347,"bytes":11512,"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","health":"ok","tokens":1837,"nodes":701,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11849,"rust":5827,"verilog":17744,"verilog_hir":2972,"zig":8914},"repo":"trios","kinds":{"Module":48,"UseDecl":1,"ConstDecl":21,"ExprLiteral":130,"FnDecl":33,"ExprReturn":52,"ExprBinary":122,"ExprIdentifier":184,"StmtLocal":31,"ExprCall":31,"StmtIf":25,"StmtWhile":5,"ExprIndex":8,"StmtAssign":10},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 33 functions and 21 constants. 347 lines compile to 1,837 tokens and 701 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 17.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_simulator.t27","category":"trios/apps","name":"network_simulator","module":"network_simulator","lines":356,"bytes":11422,"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","health":"warn","tokens":1975,"nodes":695,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":11888,"rust":7397,"verilog":18009,"verilog_hir":3576,"zig":8396},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":14,"ExprLiteral":134,"FnDecl":43,"ExprReturn":53,"ExprBinary":147,"ExprIdentifier":172,"StmtLocal":36,"ExprCall":38,"StmtIf":14,"StmtAssign":8,"ExprIndex":6,"StmtWhile":1,"StmtExpr":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 43 functions and 14 constants. 356 lines compile to 1,975 tokens and 695 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.6 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/olsr_routing.t27","category":"trios/apps","name":"olsr_routing","module":"OlsrRouting","lines":274,"bytes":9403,"description":"OLSR-style routing - ultra-simplified for T27 Basic neighbor table and best-neighbor selection","health":"ok","tokens":1888,"nodes":725,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8494,"rust":2442,"verilog":13489,"verilog_hir":1317,"zig":7137},"repo":"trios","kinds":{"Module":24,"UseDecl":1,"ConstDecl":2,"ExprLiteral":250,"FnDecl":15,"ExprReturn":26,"ExprBinary":91,"ExprIdentifier":120,"ExprCall":118,"StmtIf":15,"ExprFieldAccess":3,"StmtLocal":2,"ExprIf":4,"TestBlock":13,"StmtAssign":20,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 15 functions and 2 constants. Carries 13 tests. 274 lines compile to 1,888 tokens and 725 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/packet_queue.t27","category":"trios/apps","name":"packet_queue","module":"PacketQueue","lines":119,"bytes":2976,"description":"Packet queue - all inline, no intermediate variables","health":"ok","tokens":709,"nodes":263,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3581,"rust":626,"verilog":6793,"verilog_hir":639,"zig":2968},"repo":"trios","kinds":{"Module":5,"UseDecl":1,"ConstDecl":1,"ExprLiteral":53,"FnDecl":8,"ExprReturn":9,"ExprFieldAccess":1,"ExprBinary":16,"ExprIdentifier":60,"ExprCall":62,"StmtIf":3,"TestBlock":9,"StmtExpr":11,"StmtAssign":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/trios"],"summary":"Declares 8 functions and 1 constant. Carries 9 tests. 119 lines compile to 709 tokens and 263 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/pattern_predictor.t27","category":"trios/apps","name":"pattern_predictor","module":"pattern_predictor","lines":410,"bytes":13812,"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","health":"warn","tokens":2810,"nodes":1283,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13403,"rust":4950,"verilog":20889,"verilog_hir":2410,"zig":11530},"repo":"trios","kinds":{"Module":29,"UseDecl":1,"ConstDecl":3,"ExprLiteral":524,"FnDecl":19,"ExprReturn":30,"ExprBinary":143,"ExprIdentifier":215,"ExprFieldAccess":10,"StmtIf":22,"StmtLocal":31,"ExprCall":181,"StmtAssign":38,"TestBlock":16,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 19 functions and 3 constants. Carries 16 tests. 410 lines compile to 2,810 tokens and 1,283 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.4 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_benchmarks.t27","category":"trios/apps","name":"performance_benchmarks","module":"PerformanceBenchmarks","lines":195,"bytes":5663,"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","health":"ok","tokens":1034,"nodes":486,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6404,"rust":1253,"verilog":11991,"verilog_hir":1066,"zig":4729},"repo":"trios","kinds":{"Module":7,"UseDecl":1,"ConstDecl":3,"ExprLiteral":94,"FnDecl":13,"ExprReturn":16,"ExprBinary":54,"ExprIdentifier":128,"StmtIf":3,"ExprCall":89,"TestBlock":16,"StmtAssign":40,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 13 functions and 3 constants. Carries 16 tests. 195 lines compile to 1,034 tokens and 486 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_profiler.t27","category":"trios/apps","name":"performance_profiler","module":"performance_profiler","lines":355,"bytes":11141,"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","health":"warn","tokens":1897,"nodes":730,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":11850,"rust":7555,"verilog":17864,"verilog_hir":3689,"zig":8220},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":4,"ExprLiteral":154,"FnDecl":40,"ExprReturn":47,"ExprBinary":166,"ExprIdentifier":183,"StmtLocal":35,"StmtWhile":6,"StmtIf":17,"ExprCall":16,"ExprIndex":12,"StmtAssign":22},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 40 functions and 4 constants. 355 lines compile to 1,897 tokens and 730 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 17.4 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/power_monitoring.t27","category":"trios/apps","name":"power_monitoring","module":"PowerMonitoring","lines":251,"bytes":8509,"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","health":"warn","tokens":1364,"nodes":615,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8905,"rust":3175,"verilog":15987,"verilog_hir":1244,"zig":7052},"repo":"trios","kinds":{"Module":12,"UseDecl":1,"ConstDecl":7,"ExprLiteral":148,"FnDecl":14,"ExprReturn":18,"ExprBinary":62,"ExprIdentifier":157,"ExprCall":94,"StmtLocal":20,"StmtIf":8,"StmtAssign":31,"TestBlock":20,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 14 functions and 7 constants. Carries 20 tests. 251 lines compile to 1,364 tokens and 615 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.6 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_deployment.t27","category":"trios/apps","name":"production_deployment","module":"ProductionDeployment","lines":197,"bytes":6459,"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","health":"ok","tokens":1121,"nodes":460,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7555,"rust":2724,"verilog":13071,"verilog_hir":1866,"zig":5326},"repo":"trios","kinds":{"Module":1,"UseDecl":1,"ConstDecl":9,"ExprLiteral":147,"FnDecl":20,"ExprReturn":20,"ExprBinary":81,"ExprIdentifier":73,"ExprCall":56,"ExprIf":4,"TestBlock":15,"StmtAssign":12,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 20 functions and 9 constants. Carries 15 tests. 197 lines compile to 1,121 tokens and 460 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_scenarios.t27","category":"trios/apps","name":"production_scenarios","module":"ProductionScenarios","lines":209,"bytes":6998,"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","health":"ok","tokens":1110,"nodes":508,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7482,"rust":1484,"verilog":12755,"verilog_hir":1292,"zig":6386},"repo":"trios","kinds":{"Module":15,"UseDecl":1,"ConstDecl":5,"ExprLiteral":101,"FnDecl":13,"ExprReturn":20,"ExprBinary":51,"ExprFieldAccess":2,"ExprIdentifier":126,"ExprCall":99,"StmtIf":7,"TestBlock":14,"StmtAssign":29,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 13 functions and 5 constants. Carries 14 tests. 209 lines compile to 1,110 tokens and 508 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/quarantine_manager.t27","category":"trios/apps","name":"quarantine_manager","module":"quarantine_manager","lines":316,"bytes":10278,"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","health":"ok","tokens":1569,"nodes":607,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10531,"rust":5963,"verilog":16266,"verilog_hir":2469,"zig":7779},"repo":"trios","kinds":{"Module":47,"UseDecl":1,"ConstDecl":14,"ExprLiteral":104,"FnDecl":31,"ExprReturn":55,"ExprBinary":104,"ExprIdentifier":153,"StmtLocal":32,"ExprCall":33,"StmtIf":26,"StmtWhile":2,"ExprIndex":2,"StmtAssign":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 31 functions and 14 constants. 316 lines compile to 1,569 tokens and 607 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/redundancy_management.t27","category":"trios/apps","name":"redundancy_management","module":"RedundancyManagement","lines":339,"bytes":11580,"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","health":"warn","tokens":2315,"nodes":1089,"depth":14,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":11475,"rust":4670,"verilog":17891,"verilog_hir":1365,"zig":10070},"repo":"trios","kinds":{"Module":46,"UseDecl":1,"ConstDecl":4,"ExprLiteral":376,"FnDecl":16,"ExprReturn":34,"ExprBinary":121,"ExprIdentifier":184,"ExprFieldAccess":16,"StmtIf":33,"ExprCall":174,"StmtLocal":13,"StmtAssign":35,"TestBlock":16,"StmtExpr":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 16 functions and 4 constants. Carries 16 tests. 339 lines compile to 2,315 tokens and 1,089 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.5 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/resource_scheduler.t27","category":"trios/apps","name":"resource_scheduler","module":"ResourceScheduler","lines":389,"bytes":14451,"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","health":"warn","tokens":2598,"nodes":1185,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15036,"rust":8142,"verilog":24045,"verilog_hir":2023,"zig":13076},"repo":"trios","kinds":{"Module":33,"UseDecl":1,"ConstDecl":6,"ExprLiteral":294,"FnDecl":23,"ExprReturn":30,"ExprBinary":142,"ExprIdentifier":292,"ExprFieldAccess":16,"StmtIf":32,"StmtLocal":46,"ExprCall":171,"StmtAssign":53,"TestBlock":18,"StmtExpr":28},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 23 functions and 6 constants. Carries 18 tests. 389 lines compile to 2,598 tokens and 1,185 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 23.5 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/self_healing.t27","category":"trios/apps","name":"self_healing","module":"SelfHealing","lines":293,"bytes":10204,"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","health":"ok","tokens":1698,"nodes":746,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10961,"rust":4059,"verilog":18983,"verilog_hir":1843,"zig":8470},"repo":"trios","kinds":{"Module":6,"UseDecl":1,"ConstDecl":4,"ExprLiteral":230,"FnDecl":22,"ExprReturn":27,"ExprBinary":84,"ExprIdentifier":139,"StmtLocal":19,"ExprCall":124,"StmtIf":5,"TestBlock":22,"StmtAssign":30,"StmtExpr":33},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 22 functions and 4 constants. Carries 22 tests. 293 lines compile to 1,698 tokens and 746 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.5 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/swarm_coordinator.t27","category":"trios/apps","name":"swarm_coordinator","module":"SwarmCoordinator","lines":348,"bytes":13538,"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","health":"ok","tokens":2623,"nodes":1215,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13719,"rust":4586,"verilog":20560,"verilog_hir":1785,"zig":11956},"repo":"trios","kinds":{"Module":57,"UseDecl":1,"ConstDecl":6,"ExprLiteral":330,"FnDecl":17,"ExprReturn":24,"ExprBinary":179,"ExprIdentifier":274,"ExprFieldAccess":16,"StmtIf":40,"StmtLocal":16,"ExprCall":166,"StmtAssign":48,"TestBlock":16,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 17 functions and 6 constants. Carries 16 tests. 348 lines compile to 2,623 tokens and 1,215 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.1 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_framework.t27","category":"trios/apps","name":"test_framework","module":"test_framework","lines":398,"bytes":12626,"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","health":"warn","tokens":2195,"nodes":853,"depth":18,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":13291,"rust":7061,"verilog":20086,"verilog_hir":3892,"zig":9534},"repo":"trios","kinds":{"Module":52,"UseDecl":1,"ConstDecl":14,"ExprLiteral":188,"FnDecl":45,"ExprReturn":65,"ExprBinary":190,"ExprIdentifier":191,"StmtLocal":36,"ExprCall":27,"StmtIf":24,"StmtWhile":4,"ExprIndex":3,"StmtAssign":13},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 45 functions and 14 constants. 398 lines compile to 2,195 tokens and 853 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_validator.t27","category":"trios/apps","name":"test_validator","module":"test_validator","lines":370,"bytes":12130,"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","health":"warn","tokens":2009,"nodes":740,"depth":12,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":12445,"rust":7641,"verilog":18632,"verilog_hir":3897,"zig":8826},"repo":"trios","kinds":{"Module":32,"UseDecl":1,"ConstDecl":23,"ExprLiteral":181,"FnDecl":45,"ExprReturn":56,"ExprBinary":162,"ExprIdentifier":157,"StmtLocal":22,"ExprCall":30,"StmtIf":17,"StmtWhile":2,"ExprIndex":1,"StmtAssign":11},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 45 functions and 23 constants. 370 lines compile to 2,009 tokens and 740 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.2 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/timing_closure.t27","category":"trios/apps","name":"timing_closure","module":"TimingClosure","lines":218,"bytes":6803,"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","health":"ok","tokens":1050,"nodes":465,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7190,"rust":2168,"verilog":13138,"verilog_hir":1424,"zig":5271},"repo":"trios","kinds":{"Module":11,"UseDecl":1,"ConstDecl":8,"ExprLiteral":124,"FnDecl":14,"ExprReturn":21,"ExprBinary":67,"ExprIdentifier":93,"StmtIf":7,"ExprCall":60,"TestBlock":18,"StmtAssign":19,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 14 functions and 8 constants. Carries 18 tests. 218 lines compile to 1,050 tokens and 465 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/topology_visualizer.t27","category":"trios/apps","name":"topology_visualizer","module":"topology_visualizer","lines":418,"bytes":14325,"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","health":"warn","tokens":2352,"nodes":919,"depth":16,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13293,"rust":9871,"verilog":20140,"verilog_hir":2709,"zig":10603},"repo":"trios","kinds":{"Module":39,"UseDecl":1,"ConstDecl":21,"ExprLiteral":154,"FnDecl":31,"ExprReturn":38,"ExprBinary":174,"ExprIdentifier":280,"StmtIf":18,"StmtLocal":66,"ExprCall":39,"StmtWhile":9,"ExprIndex":20,"StmtAssign":29},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 31 functions and 21 constants. 418 lines compile to 2,352 tokens and 919 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 19.7 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/traffic_animator.t27","category":"trios/apps","name":"traffic_animator","module":"traffic_animator","lines":462,"bytes":15885,"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","health":"warn","tokens":2649,"nodes":1005,"depth":11,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":16192,"rust":11225,"verilog":24004,"verilog_hir":4602,"zig":11731},"repo":"trios","kinds":{"Module":32,"UseDecl":1,"ConstDecl":12,"ExprLiteral":210,"FnDecl":49,"ExprReturn":56,"ExprBinary":232,"ExprIdentifier":262,"StmtLocal":57,"ExprCall":29,"StmtIf":18,"StmtAssign":23,"StmtWhile":5,"ExprIndex":18,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 49 functions and 12 constants. 462 lines compile to 2,649 tokens and 1,005 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 23.4 KB. Compiles with 3 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/trust_manager.t27","category":"trios/apps","name":"trust_manager","module":"trust_manager","lines":317,"bytes":11514,"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","health":"ok","tokens":2011,"nodes":518,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4059,"rust":2712,"verilog":5951,"verilog_hir":1434,"zig":7072},"repo":"trios","kinds":{"Module":19,"UseDecl":1,"ConstDecl":5,"ExprLiteral":89,"FnDecl":21,"ExprReturn":28,"ExprBinary":89,"ExprIdentifier":135,"ExprFieldAccess":14,"StmtIf":18,"StmtExpr":9,"StmtLocal":21,"StmtAssign":17,"ExprCall":52},"tags":["domain/other","has/functions","has/imports","health/ok","size/medium","src/trios"],"summary":"Declares 21 functions and 5 constants. 317 lines compile to 2,011 tokens and 518 AST nodes, depth 11. Emits 5 of 5 backends; largest is Zig at 6.9 KB. Clean through every layer."},{"path":"trios/policies/precision_policy.t27","category":"trios/policies","name":"precision_policy","module":null,"lines":151,"bytes":4870,"description":null,"health":"warn","tokens":300,"nodes":1,"depth":1,"loss":4,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trios","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/medium","src/trios"],"summary":"Declares no top-level items. 151 lines compile to 300 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 4 items dropped by error recovery."},{"path":"tt-trinity-gamma/specs/numeric/tri_net_formats.t27","category":"tt-trinity-gamma/specs","name":"tri_net_formats","module":"TriNetFormats","lines":1053,"bytes":34895,"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","health":"warn","tokens":4374,"nodes":1045,"depth":15,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":20371,"rust":16794,"verilog":35614,"verilog_hir":1394,"zig":22169},"repo":"tt-trinity-gamma","kinds":{"Module":53,"UseDecl":3,"EnumDecl":1,"EnumVariant":6,"StructDecl":16,"ExprIdentifier":346,"ConstDecl":2,"FnDecl":21,"StmtFor":3,"StmtIf":36,"ExprBinary":131,"ExprFieldAccess":63,"ExprReturn":48,"StmtLocal":47,"ExprLiteral":106,"StmtAssign":18,"ExprIndex":5,"ExprEnumValue":10,"ExprCall":27,"ExprIf":5,"ExprUnary":8,"StmtWhile":4,"TestBlock":25,"StmtExpr":51,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-gamma"],"summary":"Declares 21 functions, 16 structs, 1 enum and 2 constants. Carries 25 tests, 6 invariants and 4 benches. 1053 lines compile to 4,374 tokens and 1,045 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 34.8 KB. Compiles with 4 type errors."}]} \ No newline at end of file +{"generatedFrom":{"repo":"gHashTag/t27","commit":"93228e64056d9e99dccf4982baf99451fd1f45df","shortCommit":"93228e640","specsOrCompilerDirty":false,"defaultRef":"master","t27SpecsChecked":1068,"unreachableFromDefaultRef":["specs/demos/hello_world.t27","specs/numeric/requant_boundary.t27","specs/tutorial/01_values_and_types.t27","specs/tutorial/02_functions.t27","specs/tutorial/03_operators.t27","specs/tutorial/04_control_flow.t27","specs/tutorial/05_widths_and_casts.t27","specs/tutorial/06_structs_enums_switch.t27","specs/tutorial/07_tests_invariants_benches.t27","specs/tutorial/08_modules_and_arrays.t27","vscode-trinity-swe/test_highlight.t27"],"source":"github tarball gHashTag/t27@master","overlayRefs":[{"ref":"fix/reject-vibee-specs","commit":"bc0fa7f168026b9f88bcf8d7e799b12ad6ad8702","added":11}],"wasmSource":"the copy already vendored here"},"wasmBytes":488709,"specCount":1407,"totalLines":353899,"categories":{"specs/tri":150,"tri-net/specs":113,"specs/tools":97,"bootstrap/tests":90,"specs/fpga":68,"specs/ternary":64,"specs/ml":62,"specs/numeric":59,"trios/apps":55,"specs/trinity":53,"tt-trinity-euler/specs":46,"specs/igla":44,"dmitrii-f-t27/trinity-memory":37,"specs/crons":33,"trinity-fpga/specs":29,"specs/functions":28,"trinity-fpga/t27":28,"specs/agents":27,"specs/skills":26,"specs/isa":18,"specs/physics":15,"turbobaby-user-bot/specs":12,"specs/server":11,"specs/automation":10,"specs/compiler":10,"specs/math":10,"specs/memory":10,"specs/sacred":10,"specs/tutorial":8,"specs/ar":8,"specs/base":8,"specs/docs":8,"specs/vsa":8,"trinity-fpga/src":7,"compiler/codegen":6,"specs/brain":6,"specs/github":5,"specs/lsp":5,"specs/nn":5,"specs/sandbox":5,"specs/test_framework":5,"tt-trinity-corona/specs":5,"specs/demos":4,"specs/api":4,"specs/benchmarks":4,"specs/boards":4,"specs/config":4,"specs/git":4,"specs/provider":4,"specs/storage":4,"compiler/cli":3,"compiler/runtime":3,"specs/account":3,"specs/file":3,"specs/pins":3,"specs/pipeline":3,"specs/queen":3,"specs/runtime":3,"specs/shell":3,"compiler/parser":2,"specs/bus":2,"specs/enrichment":2,"specs/i18n":2,"specs/sync":2,"specs/vm":2,"tests":2,"trinity/src":2,"trios/.trinity":2,"bootstrap/specs":1,"bootstrap/src":1,"compiler":1,"compiler/skill":1,"contrib/backend":1,"examples/fpga":1,"specs/auth":1,"specs/catalog":1,"specs/cloud":1,"specs/conformance":1,"specs/depin":1,"specs/graph":1,"specs/hslm":1,"specs/interop":1,"specs/jit":1,"specs/neural":1,"specs/portable":1,"specs/rings":1,"specs/system":1,"specs/trinet":1,"specs/ui":1,"root":1,"vscode-trinity-swe":1,"trinity/t27":1,"trios/policies":1,"tt-trinity-gamma/specs":1},"repos":[{"repo":"t27","commit":"93228e64056d9e99dccf4982baf99451fd1f45df","specs":1068},{"repo":"tri-net","commit":"3ffd1bd0ac9f5aea18c407ec386ca179eb61a41e","specs":113},{"repo":"trinity-fpga","commit":"5614a4ab494a7b9feabe918ef3fa8a1d24425b83","specs":64},{"repo":"trinity","commit":"234fefa3c249d92e63abeaa655b385d9145fb221","specs":3},{"repo":"tt-trinity-corona","commit":"dddf6887e54aa847a9a0f4c835fbc392c8cc6c12","specs":5},{"repo":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","specs":37,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":0},{"repo":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","specs":58,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":13},{"repo":"tt-trinity-euler","commit":"fde97085a5ce9acd95721c69925f621f56228cff","specs":46,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":3},{"repo":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","specs":1,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":48},{"repo":"turbobaby-user-bot","commit":"e9356f1f0664e8f6d963c52035a9d310761ca9a8","specs":12,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":0}],"duplicatesSkipped":29,"tags":{"src/t27":1068,"health/ok":1002,"has/functions":918,"has/tests":907,"has/imports":701,"domain/other":557,"has/structs":506,"size/small":442,"size/tiny":404,"health/warn":399,"has/invariants":354,"has/constants-only":323,"size/medium":321,"has/loops":296,"has/benches":240,"size/large":240,"issue/dropped-content":227,"issue/type-errors":200,"has/enums":157,"domain/tools":123,"domain/numeric":114,"src/tri-net":113,"domain/fpga":106,"domain/ternary":73,"domain/ml":70,"src/trinity-fpga":64,"domain/collections":62,"src/trios":58,"src/tt-trinity-euler":46,"domain/compiler":45,"src/dmitrii-f-t27/trinity-memory":37,"domain/network":35,"domain/storage":30,"has/switch":28,"domain/math":20,"domain/isa":19,"domain/utils":19,"domain/physics":17,"domain/agent":15,"domain/pipeline":14,"domain/tutorial":13,"src/turbobaby-user-bot":12,"domain/base":10,"domain/sacred":10,"domain/testing":10,"domain/crypto":9,"domain/graph":9,"domain/vsa":9,"domain/encoding":8,"domain/reasoning":8,"domain/brain":6,"health/fail":6,"src/tt-trinity-corona":5,"issue/backend-rejected":4,"src/trinity":3,"src/tt-trinity-gamma":1},"health":{"ok":1002,"warn":399,"fail":6},"backendFailures":{"verilog_hir":4},"featured":"specs/demos/hello_world.t27","totals":{"tokens":1700828,"nodes":449489,"lossAffected":227,"tcAffected":200},"discovery":{"spec":{"path":"public/t27/files/specs/catalog/discovery.t27","sha256":"f3c12d757eeb1ad37aacee0baa3c81e2bfe4905d0e799e3f778cae267324f043"},"at":"2026-09-15T14:46:43.844Z","worlds":[{"repo":"dmitrii-f-t27/trinity-memory","label":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","branch":"master","specs":37,"files":37,"duplicatesSkipped":0,"skippedLarge":0,"at":"2026-09-15T14:46:43.844Z"},{"repo":"ghashtag/trios","label":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","branch":"main","specs":58,"files":71,"duplicatesSkipped":13,"skippedLarge":0,"at":"2026-09-15T14:46:43.844Z"},{"repo":"ghashtag/tt-trinity-euler","label":"tt-trinity-euler","commit":"fde97085a5ce9acd95721c69925f621f56228cff","branch":"main","specs":46,"files":49,"duplicatesSkipped":3,"skippedLarge":0,"at":"2026-09-15T14:46:43.844Z"},{"repo":"ghashtag/tt-trinity-gamma","label":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","branch":"main","specs":1,"files":49,"duplicatesSkipped":48,"skippedLarge":0,"at":"2026-09-15T14:46:43.844Z"},{"repo":"ghashtag/turbobaby-user-bot","label":"turbobaby-user-bot","commit":"e9356f1f0664e8f6d963c52035a9d310761ca9a8","branch":"main","specs":12,"files":12,"duplicatesSkipped":0,"skippedLarge":0,"at":"2026-09-15T14:46:43.844Z"}]},"specs":[{"path":"specs/demos/hello_world.t27","category":"specs/demos","name":"hello_world","module":"hello-world","lines":99,"bytes":3666,"description":"hello_world.t27 -- start here The smallest spec that still shows every part of the language: constants, a type, functions, a test and an invariant. Read it top to bottom, then watch it become tokens, an AST, and five different target languages.","health":"ok","tokens":315,"nodes":107,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2670,"rust":734,"verilog":3889,"verilog_hir":515,"zig":1542},"repo":"t27","kinds":{"Module":3,"ConstDecl":6,"ExprLiteral":5,"ExprIdentifier":40,"StructDecl":1,"FnDecl":3,"StmtLocal":1,"ExprBinary":4,"StmtIf":2,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":2,"TestBlock":2,"StmtExpr":6,"ExprUnary":6,"ExprCall":18,"InvariantBlock":2},"tags":["domain/tutorial","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 6 constants. Carries 2 tests and 2 invariants. 99 lines compile to 315 tokens and 107 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer.","tutorial":true,"lesson":0,"featured":true},{"path":"specs/tutorial/01_values_and_types.t27","category":"specs/tutorial","name":"01_values_and_types","module":"tutorial-01-values","lines":71,"bytes":2554,"description":"01 — Values and types Lesson 1 of the t27 tutorial. Every constant carries an explicit width, because a spec has to say what reaches hardware rather than let a compiler pick for it. Nothing here is inferred.","health":"ok","tokens":154,"nodes":35,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1331,"rust":611,"verilog":2155,"verilog_hir":265,"zig":939},"repo":"t27","kinds":{"Module":1,"ConstDecl":16,"ExprLiteral":16,"InvariantBlock":2},"tags":["domain/tutorial","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 16 constants. Carries 2 invariants. 71 lines compile to 154 tokens and 35 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer.","tutorial":true,"lesson":1},{"path":"specs/tutorial/02_functions.t27","category":"specs/tutorial","name":"02_functions","module":"tutorial-02-functions","lines":84,"bytes":2529,"description":"02 — Functions Lesson 2. Parameter types and the return type are always written out. A signature is part of the specification, so it is never inferred.","health":"ok","tokens":236,"nodes":75,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1933,"rust":521,"verilog":3686,"verilog_hir":613,"zig":956},"repo":"t27","kinds":{"Module":1,"ConstDecl":2,"ExprLiteral":9,"FnDecl":6,"ExprReturn":6,"ExprBinary":4,"ExprIdentifier":18,"StmtLocal":2,"ExprCall":14,"ExprUnary":6,"TestBlock":3,"StmtExpr":4},"tags":["domain/tutorial","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 2 constants. Carries 3 tests. 84 lines compile to 236 tokens and 75 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer.","tutorial":true,"lesson":2},{"path":"specs/tutorial/03_operators.t27","category":"specs/tutorial","name":"03_operators","module":"tutorial-03-operators","lines":110,"bytes":3338,"description":"03 — Operators Lesson 3. Arithmetic, bitwise, shifts, comparison and the logical keywords. The bitwise group matters more here than in most languages: a spec that describes hardware spends most of its time on masks and shifts.","health":"ok","tokens":414,"nodes":143,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2985,"rust":1180,"verilog":5246,"verilog_hir":1156,"zig":1721},"repo":"t27","kinds":{"Module":1,"FnDecl":11,"StmtLocal":6,"ExprBinary":23,"ExprIdentifier":41,"ExprReturn":11,"ConstDecl":2,"ExprLiteral":16,"ExprUnary":10,"TestBlock":3,"StmtExpr":6,"ExprCall":13},"tags":["domain/tutorial","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 11 functions and 2 constants. Carries 3 tests. 110 lines compile to 414 tokens and 143 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer.","tutorial":true,"lesson":3},{"path":"specs/tutorial/04_control_flow.t27","category":"specs/tutorial","name":"04_control_flow","module":"tutorial-04-control-flow","lines":153,"bytes":4562,"description":"04 — Control flow Lesson 4. if/else as a statement and as an expression, while, for over a range, and break/continue. . One rule worth learning before you need it: `switch` belongs in lesson 06, and only in its expression form. The statement form does not survive","health":"ok","tokens":620,"nodes":248,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3366,"rust":1536,"verilog":5699,"verilog_hir":867,"zig":2401},"repo":"t27","kinds":{"Module":10,"ConstDecl":3,"ExprLiteral":40,"FnDecl":8,"StmtIf":3,"ExprBinary":18,"ExprIdentifier":64,"ExprReturn":10,"ExprIf":3,"StmtLocal":10,"ExprUnary":15,"ExprCall":35,"StmtWhile":4,"StmtAssign":7,"StmtFor":1,"StmtContinue":1,"StmtBreak":1,"TestBlock":4,"StmtExpr":11},"tags":["domain/tutorial","has/functions","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 3 constants. Carries 4 tests. 153 lines compile to 620 tokens and 248 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer.","tutorial":true,"lesson":4},{"path":"specs/tutorial/05_widths_and_casts.t27","category":"specs/tutorial","name":"05_widths_and_casts","module":"tutorial-05-widths","lines":116,"bytes":4411,"description":"05 — Widths and casts, and the one that catches everybody Lesson 5. Converting between widths, and the single sharpest edge in the language today: an integer literal types as i32, so arithmetic on a narrower mutable local fails the type check unless you say what you mean. . Everything below is measured against the compiler in this repository, not","health":"ok","tokens":319,"nodes":111,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2113,"rust":663,"verilog":3829,"verilog_hir":815,"zig":1266},"repo":"t27","kinds":{"Module":2,"FnDecl":6,"ExprReturn":6,"ExprCall":24,"ExprIdentifier":28,"StmtLocal":5,"StmtAssign":2,"ExprBinary":7,"ExprLiteral":17,"StmtWhile":1,"TestBlock":3,"StmtExpr":5,"ExprUnary":5},"tags":["domain/tutorial","has/functions","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions. Carries 3 tests. 116 lines compile to 319 tokens and 111 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer.","tutorial":true,"lesson":5},{"path":"specs/tutorial/06_structs_enums_switch.t27","category":"specs/tutorial","name":"06_structs_enums_switch","module":"tutorial-06-structs","lines":141,"bytes":4908,"description":"06 — Structs, enums, and switch Lesson 6. Grouping fields, naming a fixed set of states, and choosing between them. . The important rule in this file: `switch` is an EXPRESSION here. The statement form parses without complaint and then discards the body of the","health":"ok","tokens":459,"nodes":152,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3205,"rust":1299,"verilog":5192,"verilog_hir":735,"zig":2025},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":22,"ExprIdentifier":28,"StructDecl":1,"FnDecl":7,"ExprReturn":7,"ExprStructLit":2,"ExprFieldAccess":6,"EnumDecl":2,"EnumVariant":7,"ExprSwitch":3,"StmtLocal":2,"TestBlock":3,"ExprCall":27,"StmtExpr":9,"ExprUnary":10},"tags":["domain/tutorial","has/enums","has/functions","has/structs","has/switch","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions, 1 struct, 2 enums and 15 constants. Carries 3 tests. 141 lines compile to 459 tokens and 152 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer.","tutorial":true,"lesson":6},{"path":"specs/tutorial/07_tests_invariants_benches.t27","category":"specs/tutorial","name":"07_tests_invariants_benches","module":"tutorial-07-claims","lines":87,"bytes":2964,"description":"07 — Tests, invariants and benches Lesson 7, and the reason this language exists rather than a header file. A spec carries its own claims: examples that must hold, properties that must always hold, and the operations worth measuring. All three are emitted into every target, so the same claim is checked in Zig, C and Rust alike.","health":"ok","tokens":315,"nodes":112,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2773,"rust":434,"verilog":4759,"verilog_hir":420,"zig":1752},"repo":"t27","kinds":{"Module":1,"ConstDecl":4,"ExprLiteral":8,"FnDecl":2,"StmtLocal":3,"ExprBinary":4,"ExprIdentifier":40,"ExprIf":2,"ExprUnary":8,"ExprReturn":2,"ExprCall":22,"TestBlock":3,"StmtExpr":6,"InvariantBlock":3,"BenchBlock":2,"StmtAssign":2},"tags":["domain/tutorial","has/benches","has/functions","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 3 tests, 3 invariants and 2 benches. 87 lines compile to 315 tokens and 112 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer.","tutorial":true,"lesson":7},{"path":"specs/tutorial/08_modules_and_arrays.t27","category":"specs/tutorial","name":"08_modules_and_arrays","module":"tutorial-08-modules","lines":90,"bytes":2919,"description":"08 — Modules, visibility and arrays Lesson 8, the last one. How a spec names itself, what it exposes, how it pulls in another spec, and the array/index syntax used by every lookup table in the corpus. . After this, open specs/numeric/gf16.t27 -- it is a real spec built entirely","health":"ok","tokens":253,"nodes":70,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2246,"rust":529,"verilog":3646,"verilog_hir":427,"zig":1274},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":11,"FnDecl":3,"ExprReturn":3,"ExprBinary":1,"ExprIdentifier":14,"ExprIndex":2,"TestBlock":3,"StmtExpr":5,"ExprUnary":5,"ExprCall":15,"InvariantBlock":1},"tags":["domain/tutorial","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 3 tests and 1 invariant. 90 lines compile to 253 tokens and 70 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer.","tutorial":true,"lesson":8},{"path":"bootstrap/specs/physics/formula_registry.t27","category":"bootstrap/specs","name":"formula_registry","module":null,"lines":210,"bytes":6193,"description":"Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md SSOT for Trinity formula discovery","health":"ok","tokens":822,"nodes":364,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4270,"rust":2960,"verilog":8013,"verilog_hir":1685,"zig":2759},"repo":"t27","kinds":{"Module":1,"ConstDecl":4,"ExprLiteral":83,"ExprIdentifier":69,"FnDecl":32,"ExprReturn":32,"ExprCall":47,"ExprUnary":23,"ExprBinary":72,"StmtLocal":1},"tags":["domain/physics","has/functions","health/ok","size/medium","src/t27"],"summary":"Declares 32 functions and 4 constants. 210 lines compile to 822 tokens and 364 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.8 KB. Clean through every layer."},{"path":"bootstrap/src/codegen_python.t27","category":"bootstrap/src","name":"codegen_python","module":"codegen_python","lines":196,"bytes":7546,"description":"bootstrap/src/codegen_python.rs Python Code Generator for CLARA (TA2 Deliverable) Generates Python code from .t27 specifications for PyTorch integration NOTE: This is a specification stub - full implementation is P1 priority ─────────────────────────────────────────────────────────────────────────────────────────────","health":"warn","tokens":782,"nodes":296,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":4041,"rust":2814,"verilog":6831,"verilog_hir":1070,"zig":3346},"repo":"t27","kinds":{"Module":13,"UseDecl":2,"ConstDecl":1,"ExprLiteral":40,"FnDecl":7,"StmtIf":5,"ExprBinary":21,"ExprIdentifier":89,"ExprEnumValue":2,"ExprReturn":9,"StmtLocal":21,"StmtWhile":4,"ExprFieldAccess":10,"StmtAssign":21,"ExprIndex":14,"ExprCall":14,"StmtExpr":8,"ExprUnary":13,"TestBlock":2},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 7 functions and 1 constant. Carries 2 tests. 196 lines compile to 782 tokens and 296 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Compiles with 9 type errors."},{"path":"bootstrap/tests/fixtures/damage/damage_class_01.t27","category":"bootstrap/tests","name":"damage_class_01","module":"damage_class_01","lines":10,"bytes":215,"description":null,"health":"warn","tokens":13,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 13 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_02.t27","category":"bootstrap/tests","name":"damage_class_02","module":"damage_class_02","lines":10,"bytes":233,"description":null,"health":"warn","tokens":14,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 14 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_03.t27","category":"bootstrap/tests","name":"damage_class_03","module":"damage_class_03","lines":10,"bytes":215,"description":null,"health":"warn","tokens":15,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 15 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_04.t27","category":"bootstrap/tests","name":"damage_class_04","module":"damage_class_04","lines":10,"bytes":196,"description":null,"health":"warn","tokens":14,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 14 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_05.t27","category":"bootstrap/tests","name":"damage_class_05","module":"damage_class_05","lines":10,"bytes":196,"description":null,"health":"warn","tokens":14,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 14 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_06.t27","category":"bootstrap/tests","name":"damage_class_06","module":"damage_class_06","lines":10,"bytes":233,"description":null,"health":"warn","tokens":15,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 15 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_07.t27","category":"bootstrap/tests","name":"damage_class_07","module":"damage_class_07","lines":10,"bytes":233,"description":null,"health":"warn","tokens":19,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 19 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_08.t27","category":"bootstrap/tests","name":"damage_class_08","module":"damage_class_08","lines":10,"bytes":207,"description":null,"health":"warn","tokens":15,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 15 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_09.t27","category":"bootstrap/tests","name":"damage_class_09","module":"damage_class_09","lines":10,"bytes":219,"description":null,"health":"warn","tokens":14,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 14 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_10.t27","category":"bootstrap/tests","name":"damage_class_10","module":"damage_class_10","lines":10,"bytes":217,"description":null,"health":"warn","tokens":20,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 20 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_11.t27","category":"bootstrap/tests","name":"damage_class_11","module":"damage_class_11","lines":10,"bytes":225,"description":null,"health":"warn","tokens":15,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 15 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_12.t27","category":"bootstrap/tests","name":"damage_class_12","module":"damage_class_12","lines":10,"bytes":203,"description":null,"health":"warn","tokens":15,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 15 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_13.t27","category":"bootstrap/tests","name":"damage_class_13","module":"damage_class_13","lines":10,"bytes":221,"description":null,"health":"warn","tokens":16,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 16 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_14.t27","category":"bootstrap/tests","name":"damage_class_14","module":"damage_class_14","lines":10,"bytes":238,"description":null,"health":"warn","tokens":18,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 18 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage/damage_class_15.t27","category":"bootstrap/tests","name":"damage_class_15","module":"damage_class_15","lines":10,"bytes":236,"description":null,"health":"warn","tokens":17,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":129},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 10 lines compile to 17 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage_negative/neg_01_latency_bound.t27","category":"bootstrap/tests","name":"neg_01_latency_bound","module":null,"lines":8,"bytes":280,"description":"NEGATIVE fixture: a latency bound, not damage. The first regex reported 230 of these as damaged, which made 429 a metric of the regex rather than of the corpus. tri damage must report zero here.","health":"warn","tokens":20,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 8 lines compile to 20 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage_negative/neg_02_match_arms.t27","category":"bootstrap/tests","name":"neg_02_match_arms","module":null,"lines":9,"bytes":163,"description":"NEGATIVE fixture: match arms. 17 false positives came from these.","health":"ok","tokens":27,"nodes":4,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":765,"rust":111,"verilog":1376,"verilog_hir":306,"zig":170},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"StmtExpr":1,"ExprIdentifier":1},"tags":["domain/other","has/functions","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. 9 lines compile to 27 tokens and 4 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/damage_negative/neg_03_multiline_array.t27","category":"bootstrap/tests","name":"neg_03_multiline_array","module":null,"lines":10,"bytes":247,"description":"NEGATIVE fixture: an array literal opening a multi-line value. 10 false positives came from the opening line being read as a damaged type side.","health":"ok","tokens":31,"nodes":5,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":737,"rust":212,"verilog":1492,"verilog_hir":243,"zig":201},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":2,"ConstDecl":1},"tags":["domain/other","has/constants-only","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct and 1 constant. 10 lines compile to 31 tokens and 5 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/damage_negative/neg_04_fn_signature.t27","category":"bootstrap/tests","name":"neg_04_fn_signature","module":null,"lines":8,"bytes":204,"description":"NEGATIVE fixture: function signatures. 6 false positives came from these.","health":"ok","tokens":39,"nodes":7,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":884,"rust":209,"verilog":1565,"verilog_hir":399,"zig":289},"repo":"t27","kinds":{"Module":1,"FnDecl":2,"ExprReturn":2,"ExprLiteral":1,"ExprIdentifier":1},"tags":["domain/other","has/functions","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions. 8 lines compile to 39 tokens and 7 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/damage_negative/neg_05_raw_string.t27","category":"bootstrap/tests","name":"neg_05_raw_string","module":null,"lines":7,"bytes":237,"description":"NEGATIVE fixture: a legal raw string whose body contains a bracket and an odd number of quotes. The odd-quote signal must not fire inside a raw string.","health":"warn","tokens":20,"nodes":1,"depth":1,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 7 lines compile to 20 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"bootstrap/tests/fixtures/damage_negative/neg_06_intact_field.t27","category":"bootstrap/tests","name":"neg_06_intact_field","module":null,"lines":9,"bytes":272,"description":"NEGATIVE fixture: the intact convention itself, including the slice and optional-slice forms that the damaged classes are corruptions of.","health":"ok","tokens":24,"nodes":6,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":640,"rust":260,"verilog":1421,"verilog_hir":243,"zig":237},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":4},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 9 lines compile to 24 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/neg_01_empty_params.t27","category":"bootstrap/tests","name":"neg_01_empty_params","module":"NegEmptyParams","lines":8,"bytes":236,"description":"ADR-008 negative: an empty parameter list is not a parameterised type. Ambiguous with a plain type declaration, so refused rather than guessed.","health":"ok","tokens":18,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":602,"rust":167,"verilog":1290,"verilog_hir":257,"zig":171},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 8 lines compile to 18 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/neg_02_trailing_comma.t27","category":"bootstrap/tests","name":"neg_02_trailing_comma","module":"NegTrailingComma","lines":8,"bytes":234,"description":"ADR-008 negative: a trailing comma is not attested anywhere in the corpus. Accepting it would widen the grammar with no evidence behind it.","health":"ok","tokens":20,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":603,"rust":165,"verilog":1292,"verilog_hir":261,"zig":212},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 8 lines compile to 20 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/neg_03_type_expr_param.t27","category":"bootstrap/tests","name":"neg_03_type_expr_param","module":"NegTypeExprParam","lines":8,"bytes":212,"description":"ADR-008 negative: a type expression in a parameter position. Parameters are names being bound, not types being used.","health":"ok","tokens":21,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":608,"rust":165,"verilog":1288,"verilog_hir":261,"zig":171},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 8 lines compile to 21 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/neg_04_constrained_param.t27","category":"bootstrap/tests","name":"neg_04_constrained_param","module":"NegConstrainedParam","lines":8,"bytes":245,"description":"ADR-008 negative: a constrained parameter is a language feature, not a parser detail. Accepting the syntax now would commit the language to it.","health":"ok","tokens":21,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":615,"rust":165,"verilog":1298,"verilog_hir":267,"zig":174},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 8 lines compile to 21 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/neg_05_enum_rhs.t27","category":"bootstrap/tests","name":"neg_05_enum_rhs","module":"NegEnumRhs","lines":8,"bytes":211,"description":"ADR-008 negative: only `struct` is attested on the right-hand side (33 of 33). A parameterised enum is a separate decision.","health":"ok","tokens":22,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":583,"rust":181,"verilog":1248,"verilog_hir":249,"zig":168},"repo":"t27","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":1},"tags":["domain/other","has/enums","health/ok","size/tiny","src/t27"],"summary":"Declares 1 enum. 8 lines compile to 22 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/neg_06_value_rhs.t27","category":"bootstrap/tests","name":"neg_06_value_rhs","module":"NegValueRhs","lines":5,"bytes":123,"description":"ADR-008 negative: a parameterised value is not a type declaration.","health":"ok","tokens":13,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":566,"rust":95,"verilog":1258,"verilog_hir":251,"zig":148},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 1 constant. 5 lines compile to 13 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/neg_07_no_rhs.t27","category":"bootstrap/tests","name":"neg_07_no_rhs","module":"NegNoRhs","lines":5,"bytes":112,"description":"ADR-008 negative: a declaration with no right-hand side at all.","health":"ok","tokens":11,"nodes":2,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":536,"rust":95,"verilog":1251,"verilog_hir":245,"zig":122},"repo":"t27","kinds":{"Module":1,"ConstDecl":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 1 constant. 5 lines compile to 11 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/pos_01_single_param.t27","category":"bootstrap/tests","name":"pos_01_single_param","module":"GenericConstSingle","lines":8,"bytes":200,"description":"ADR-008 positive: one generic parameter, the attested majority form (22 of 33).","health":"ok","tokens":23,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":632,"rust":193,"verilog":1340,"verilog_hir":265,"zig":239},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":2},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 8 lines compile to 23 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/pos_02_two_params.t27","category":"bootstrap/tests","name":"pos_02_two_params","module":"GenericConstPair","lines":8,"bytes":186,"description":"ADR-008 positive: two generic parameters, attested as `K, V` in 4 files.","health":"ok","tokens":25,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":615,"rust":182,"verilog":1326,"verilog_hir":261,"zig":247},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":2},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 8 lines compile to 25 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/pos_03_three_params.t27","category":"bootstrap/tests","name":"pos_03_three_params","module":"GenericConstTriple","lines":9,"bytes":204,"description":"ADR-008 positive: three generic parameters, attested once as `A, B, C`.","health":"ok","tokens":31,"nodes":5,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":629,"rust":193,"verilog":1370,"verilog_hir":265,"zig":278},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":3},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 9 lines compile to 31 tokens and 5 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/pos_04_no_pub.t27","category":"bootstrap/tests","name":"pos_04_no_pub","module":"GenericConstPrivate","lines":7,"bytes":170,"description":"ADR-008 positive: `pub` is optional, exactly as on the non-parameterised path.","health":"ok","tokens":18,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":617,"rust":167,"verilog":1300,"verilog_hir":267,"zig":213},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 7 lines compile to 18 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/pos_05_no_semicolon.t27","category":"bootstrap/tests","name":"pos_05_no_semicolon","module":"GenericConstNoSemi","lines":8,"bytes":245,"description":"ADR-008 positive: the trailing semicolon is optional, matching the non-parameterised `const Name = struct { }` path. No new terminator is introduced.","health":"ok","tokens":18,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":612,"rust":166,"verilog":1295,"verilog_hir":265,"zig":215},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 8 lines compile to 18 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/generic_const/pos_06_alongside_plain.t27","category":"bootstrap/tests","name":"pos_06_alongside_plain","module":"GenericConstMixed","lines":12,"bytes":342,"description":"ADR-008 positive: a parameterised and a plain struct declaration in one module. Guards against the generic path swallowing the declaration that follows it.","health":"ok","tokens":35,"nodes":6,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":677,"rust":297,"verilog":1410,"verilog_hir":263,"zig":287},"repo":"t27","kinds":{"Module":1,"StructDecl":2,"ExprIdentifier":3},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 2 structs. 12 lines compile to 35 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/terminator/eof_generic.t27","category":"bootstrap/tests","name":"eof_generic","module":"eof_generic","lines":9,"bytes":360,"description":null,"health":"warn","tokens":15,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":412,"rust":66,"verilog":1053,"verilog_hir":251,"zig":125},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 9 lines compile to 15 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/terminator/eof_hazard.t27","category":"bootstrap/tests","name":"eof_hazard","module":"eof_hazard","lines":5,"bytes":55,"description":null,"health":"warn","tokens":13,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":408,"rust":66,"verilog":1051,"verilog_hir":249,"zig":124},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 5 lines compile to 13 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/terminator/field_swallow.t27","category":"bootstrap/tests","name":"field_swallow","module":"field_swallow","lines":8,"bytes":82,"description":null,"health":"warn","tokens":20,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":420,"rust":66,"verilog":1057,"verilog_hir":255,"zig":127},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 8 lines compile to 20 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/terminator/nested_types.t27","category":"bootstrap/tests","name":"nested_types","module":"nested_types","lines":15,"bytes":231,"description":null,"health":"warn","tokens":64,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":416,"rust":66,"verilog":1055,"verilog_hir":253,"zig":126},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 15 lines compile to 64 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/terminator/semicolon_phantom.t27","category":"bootstrap/tests","name":"semicolon_phantom","module":"semicolon_phantom","lines":7,"bytes":75,"description":null,"health":"warn","tokens":18,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":436,"rust":66,"verilog":1065,"verilog_hir":263,"zig":131},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 7 lines compile to 18 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/terminator/tuple_type.t27","category":"bootstrap/tests","name":"tuple_type","module":"tuple_type","lines":13,"bytes":413,"description":null,"health":"ok","tokens":43,"nodes":6,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":660,"rust":256,"verilog":1430,"verilog_hir":249,"zig":297},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":4},"tags":["domain/other","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 13 lines compile to 43 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/terminator/unbalanced.t27","category":"bootstrap/tests","name":"unbalanced","module":"unbalanced","lines":9,"bytes":99,"description":null,"health":"warn","tokens":28,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":408,"rust":66,"verilog":1051,"verilog_hir":249,"zig":124},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 9 lines compile to 28 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/trinity_matrix/adapters_declared.t27","category":"bootstrap/tests","name":"adapters_declared","module":"trinity_matrix_adapters_declared","lines":27,"bytes":944,"description":"trinity_matrix/adapters_declared.t27 -- feature declared adapters: an I/O boundary stated as constants and a pure verdict function over a fixture transcript; the real transport stays outside the spec (S07, S11).","health":"ok","tokens":139,"nodes":64,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1794,"rust":526,"verilog":2876,"verilog_hir":397,"zig":888},"repo":"t27","kinds":{"Module":4,"ConstDecl":5,"ExprLiteral":15,"FnDecl":1,"StmtIf":3,"ExprBinary":7,"ExprIdentifier":12,"ExprReturn":4,"TestBlock":1,"StmtExpr":4,"ExprCall":8},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 5 constants. Carries 1 test. 27 lines compile to 139 tokens and 64 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/arrays.t27","category":"bootstrap/tests","name":"arrays","module":"trinity_matrix_arrays","lines":27,"bytes":598,"description":"trinity_matrix/arrays.t27 -- feature arrays: fixed-size arrays, indexing and a loop over them.","health":"ok","tokens":125,"nodes":57,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1500,"rust":337,"verilog":2657,"verilog_hir":311,"zig":661},"repo":"t27","kinds":{"Module":2,"ConstDecl":2,"ExprIdentifier":13,"FnDecl":1,"StmtLocal":2,"ExprLiteral":11,"StmtWhile":1,"ExprBinary":7,"StmtAssign":2,"ExprIndex":4,"ExprReturn":1,"TestBlock":2,"StmtExpr":4,"ExprCall":5},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 2 constants. Carries 2 tests. 27 lines compile to 125 tokens and 57 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/clocked_state.t27","category":"bootstrap/tests","name":"clocked_state","module":"trinity_matrix_clocked_state","lines":17,"bytes":722,"description":"trinity_matrix/clocked_state.t27 -- feature clocked state: registered variables updated by on_clock and a combinational output, the form the Trinity memory RTL specs use; runtime evidence comes from the Verilog backend through Icarus (t27c icarus-simulate) and the C backend runs the test blocks.","health":"warn","tokens":108,"nodes":47,"depth":8,"loss":2,"tcErrors":1,"failedBackends":[],"outBytes":{"c":1396,"rust":211,"verilog":2577,"verilog_hir":465,"zig":535},"repo":"t27","kinds":{"Module":3,"ConstDecl":3,"ExprLiteral":14,"FnDecl":1,"StmtAssign":3,"ExprIdentifier":7,"ExprBinary":8,"ExprUnary":1,"StmtIf":1,"TestBlock":2,"StmtExpr":2,"ExprCall":2},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/t27"],"summary":"Declares 1 function and 3 constants. Carries 2 tests. 17 lines compile to 108 tokens and 47 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 2 items dropped by error recovery and 1 type error."},{"path":"bootstrap/tests/fixtures/trinity_matrix/control_flow.t27","category":"bootstrap/tests","name":"control_flow","module":"trinity_matrix_control_flow","lines":33,"bytes":809,"description":"trinity_matrix/control_flow.t27 -- feature control flow: if/else, while, for over a range, break and continue.","health":"ok","tokens":185,"nodes":93,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1776,"rust":439,"verilog":3059,"verilog_hir":540,"zig":869},"repo":"t27","kinds":{"Module":9,"FnDecl":3,"StmtLocal":2,"ExprLiteral":20,"StmtFor":1,"ExprBinary":13,"ExprIdentifier":15,"StmtIf":4,"StmtContinue":1,"StmtAssign":2,"ExprReturn":5,"StmtWhile":1,"StmtBreak":1,"ExprUnary":3,"TestBlock":1,"StmtExpr":4,"ExprCall":8},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 functions. Carries 1 test. 33 lines compile to 185 tokens and 93 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/enums.t27","category":"bootstrap/tests","name":"enums","module":"trinity_matrix_enums","lines":25,"bytes":557,"description":"trinity_matrix/enums.t27 -- feature enums: named values and a switch over them.","health":"ok","tokens":88,"nodes":33,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1503,"rust":377,"verilog":2439,"verilog_hir":338,"zig":613},"repo":"t27","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":4,"FnDecl":1,"ExprReturn":1,"ExprSwitch":1,"ExprIdentifier":3,"ConstDecl":4,"ExprLiteral":6,"TestBlock":1,"StmtExpr":2,"ExprCall":4,"ExprBinary":2,"ExprFieldAccess":2},"tags":["domain/other","has/enums","has/functions","has/switch","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 enum and 4 constants. Carries 1 test. 25 lines compile to 88 tokens and 33 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/errors.t27","category":"bootstrap/tests","name":"errors","module":"trinity_matrix_errors","lines":22,"bytes":658,"description":"trinity_matrix/errors.t27 -- feature errors: a status code returned in-band, as the Trinity specs write it (TMS_ERR_* style): no error union, one code per outcome, tests on the codes.","health":"ok","tokens":103,"nodes":50,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1497,"rust":351,"verilog":2550,"verilog_hir":337,"zig":628},"repo":"t27","kinds":{"Module":4,"ConstDecl":3,"ExprLiteral":9,"FnDecl":1,"StmtIf":3,"ExprBinary":6,"ExprIdentifier":10,"ExprReturn":4,"TestBlock":1,"StmtExpr":3,"ExprCall":6},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 3 constants. Carries 1 test. 22 lines compile to 103 tokens and 50 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/functions.t27","category":"bootstrap/tests","name":"functions","module":"trinity_matrix_functions","lines":25,"bytes":627,"description":"trinity_matrix/functions.t27 -- feature functions: parameters, early return, recursion, calls between functions.","health":"ok","tokens":141,"nodes":66,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1534,"rust":412,"verilog":2702,"verilog_hir":540,"zig":667},"repo":"t27","kinds":{"Module":4,"FnDecl":3,"StmtIf":3,"ExprBinary":9,"ExprIdentifier":11,"ExprLiteral":14,"ExprReturn":6,"ExprCall":8,"ExprUnary":4,"TestBlock":1,"StmtExpr":3},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 functions. Carries 1 test. 25 lines compile to 141 tokens and 66 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/imports.t27","category":"bootstrap/tests","name":"imports","module":"trinity_matrix_imports","lines":17,"bytes":457,"description":"trinity_matrix/imports.t27 -- feature imports: a use of an existing corpus module (specs/base/types.t27); the symbols of the import are not used, so what is measured is that the import itself is accepted.","health":"ok","tokens":46,"nodes":16,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1228,"rust":143,"verilog":2178,"verilog_hir":333,"zig":389},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":1,"ExprLiteral":3,"FnDecl":1,"ExprReturn":1,"ExprBinary":2,"ExprIdentifier":2,"TestBlock":1,"StmtExpr":1,"ExprCall":2},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. Carries 1 test. 17 lines compile to 46 tokens and 16 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/invariants.t27","category":"bootstrap/tests","name":"invariants","module":"trinity_matrix_invariants","lines":21,"bytes":564,"description":"trinity_matrix/invariants.t27 -- feature tests and invariants: constant invariants and a test block that checks them.","health":"ok","tokens":59,"nodes":32,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1391,"rust":165,"verilog":2301,"verilog_hir":279,"zig":608},"repo":"t27","kinds":{"Module":1,"ConstDecl":3,"ExprLiteral":5,"InvariantBlock":2,"StmtExpr":4,"ExprBinary":6,"ExprIdentifier":8,"TestBlock":1,"ExprCall":2},"tags":["domain/other","has/constants-only","has/invariants","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 constants. Carries 1 test and 2 invariants. 21 lines compile to 59 tokens and 32 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/module_state.t27","category":"bootstrap/tests","name":"module_state","module":"trinity_matrix_module_state","lines":23,"bytes":471,"description":"trinity_matrix/module_state.t27 -- feature module state: a var at module level, read and written by functions.","health":"warn","tokens":78,"nodes":38,"depth":7,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":1414,"rust":221,"verilog":2420,"verilog_hir":496,"zig":505},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":8,"FnDecl":2,"StmtAssign":2,"ExprIdentifier":5,"ExprBinary":4,"ExprReturn":1,"TestBlock":1,"StmtExpr":5,"ExprCall":8},"tags":["domain/other","has/functions","has/tests","health/warn","issue/type-errors","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 constant. Carries 1 test. 23 lines compile to 78 tokens and 38 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Compiles with 1 type error."},{"path":"bootstrap/tests/fixtures/trinity_matrix/neg_bodyless_fn.t27","category":"bootstrap/tests","name":"neg_bodyless_fn","module":"trinity_matrix_neg_bodyless_fn","lines":11,"bytes":358,"description":"trinity_matrix/neg_bodyless_fn.t27 -- NEGATIVE: a required function declared without a body (the shape of gHashTag/t27#3472); a test calls it, so nothing may report it executable.","health":"ok","tokens":26,"nodes":9,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1099,"rust":115,"verilog":1901,"verilog_hir":350,"zig":348},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"TestBlock":1,"StmtExpr":1,"ExprCall":2,"ExprBinary":1,"ExprLiteral":2},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 11 lines compile to 26 tokens and 9 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/neg_dropped_module.t27","category":"bootstrap/tests","name":"neg_dropped_module","module":"trinity_matrix_neg_dropped_module","lines":12,"bytes":347,"description":"trinity_matrix/neg_dropped_module.t27 -- NEGATIVE: a bare semicolon line ahead of the module line; the parser drops the module and the file must be reported as incompletely consumed, not accepted.","health":"warn","tokens":21,"nodes":9,"depth":6,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":748,"rust":88,"verilog":1660,"verilog_hir":243,"zig":244},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprBinary":1,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 1 constant. Carries 1 test. 12 lines compile to 21 tokens and 9 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/fixtures/trinity_matrix/neg_false_assert.t27","category":"bootstrap/tests","name":"neg_false_assert","module":"trinity_matrix_neg_false_assert","lines":11,"bytes":316,"description":"trinity_matrix/neg_false_assert.t27 -- NEGATIVE: a test whose assertion is false; typecheck stays ok, so only a runtime run can reject it, and it must.","health":"ok","tokens":20,"nodes":9,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":862,"rust":90,"verilog":1771,"verilog_hir":291,"zig":286},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprBinary":1,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 constant. Carries 1 test. 11 lines compile to 20 tokens and 9 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/neg_invalid_annotation.t27","category":"bootstrap/tests","name":"neg_invalid_annotation","module":"trinity_matrix_neg_invalid_annotation","lines":11,"bytes":330,"description":"trinity_matrix/neg_invalid_annotation.t27 -- NEGATIVE: a constant annotated str with an integer value; must not become an accepted executable capability.","health":"ok","tokens":20,"nodes":9,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":891,"rust":95,"verilog":1780,"verilog_hir":303,"zig":320},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprBinary":1,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 constant. Carries 1 test. 11 lines compile to 20 tokens and 9 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/neg_unresolved_import.t27","category":"bootstrap/tests","name":"neg_unresolved_import","module":"trinity_matrix_neg_unresolved_import","lines":12,"bytes":286,"description":"trinity_matrix/neg_unresolved_import.t27 -- NEGATIVE: an import of a module that does not exist.","health":"ok","tokens":26,"nodes":10,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":884,"rust":88,"verilog":1798,"verilog_hir":301,"zig":330},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":1,"ExprLiteral":2,"TestBlock":1,"StmtExpr":1,"ExprCall":1,"ExprBinary":1,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 constant. Carries 1 test. 12 lines compile to 26 tokens and 10 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/scalars.t27","category":"bootstrap/tests","name":"scalars","module":"trinity_matrix_scalars","lines":37,"bytes":907,"description":"trinity_matrix/scalars.t27 -- feature scalars: integer and boolean constants, arithmetic, comparison, shifts and masks, as the Trinity headless profile writes them (S02).","health":"ok","tokens":182,"nodes":83,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1830,"rust":462,"verilog":3190,"verilog_hir":545,"zig":865},"repo":"t27","kinds":{"Module":2,"ConstDecl":5,"ExprLiteral":21,"FnDecl":3,"ExprReturn":4,"ExprBinary":15,"ExprIdentifier":13,"StmtIf":1,"TestBlock":2,"StmtExpr":7,"ExprCall":10},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 2 tests. 37 lines compile to 182 tokens and 83 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/strings.t27","category":"bootstrap/tests","name":"strings","module":"trinity_matrix_strings","lines":22,"bytes":576,"description":"trinity_matrix/strings.t27 -- feature strings: string constants, equality and a function returning one.","health":"ok","tokens":77,"nodes":37,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1484,"rust":267,"verilog":2641,"verilog_hir":343,"zig":675},"repo":"t27","kinds":{"Module":2,"ConstDecl":2,"ExprLiteral":9,"FnDecl":1,"StmtIf":1,"ExprIdentifier":4,"ExprReturn":2,"TestBlock":2,"StmtExpr":4,"ExprCall":6,"ExprBinary":4},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 2 constants. Carries 2 tests. 22 lines compile to 77 tokens and 37 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"bootstrap/tests/fixtures/trinity_matrix/structs.t27","category":"bootstrap/tests","name":"structs","module":"trinity_matrix_structs","lines":31,"bytes":633,"description":"trinity_matrix/structs.t27 -- feature structs: a record type, a constructor and field access.","health":"ok","tokens":155,"nodes":72,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1610,"rust":501,"verilog":2843,"verilog_hir":532,"zig":702},"repo":"t27","kinds":{"Module":3,"StructDecl":1,"ExprIdentifier":20,"FnDecl":2,"StmtLocal":4,"StmtAssign":4,"ExprFieldAccess":6,"ExprReturn":2,"StmtIf":2,"ExprBinary":8,"ExprLiteral":9,"TestBlock":1,"ExprCall":5,"ExprUnary":2,"StmtExpr":3},"tags":["domain/other","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 1 test. 31 lines compile to 155 tokens and 72 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0006_adamw_block.t27","category":"bootstrap/tests","name":"0006_adamw_block","module":"p1","lines":8,"bytes":305,"description":null,"health":"ok","tokens":64,"nodes":7,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":618,"rust":66,"verilog":1543,"verilog_hir":233,"zig":455},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":5},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 8 lines compile to 64 tokens and 7 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0006_array_then_when.t27","category":"bootstrap/tests","name":"0006_array_then_when","module":"m","lines":5,"bytes":73,"description":null,"health":"ok","tokens":18,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":559,"rust":66,"verilog":1393,"verilog_hir":231,"zig":234},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 5 lines compile to 18 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0006_forged_brace_negative.t27","category":"bootstrap/tests","name":"0006_forged_brace_negative","module":"m","lines":6,"bytes":54,"description":null,"health":"ok","tokens":17,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":561,"rust":66,"verilog":1401,"verilog_hir":231,"zig":217},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 6 lines compile to 17 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0006_typed_forms_alive.t27","category":"bootstrap/tests","name":"0006_typed_forms_alive","module":"ty","lines":8,"bytes":140,"description":null,"health":"ok","tokens":50,"nodes":7,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":581,"rust":66,"verilog":1395,"verilog_hir":233,"zig":299},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":5},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 8 lines compile to 50 tokens and 7 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0007_and_not_folded.t27","category":"bootstrap/tests","name":"0007_and_not_folded","module":"m","lines":18,"bytes":265,"description":null,"health":"ok","tokens":54,"nodes":14,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":707,"rust":66,"verilog":1869,"verilog_hir":231,"zig":468},"repo":"t27","kinds":{"Module":1,"TestBlock":3,"StmtExpr":10},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 3 tests. 18 lines compile to 54 tokens and 14 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0007_bare_call_given.t27","category":"bootstrap/tests","name":"0007_bare_call_given","module":"m","lines":6,"bytes":109,"description":null,"health":"ok","tokens":21,"nodes":5,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":565,"rust":66,"verilog":1393,"verilog_hir":231,"zig":267},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 6 lines compile to 21 tokens and 5 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0007_bench_measure_target.t27","category":"bootstrap/tests","name":"0007_bench_measure_target","module":"m","lines":6,"bytes":107,"description":null,"health":"ok","tokens":20,"nodes":2,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":588,"rust":66,"verilog":1563,"verilog_hir":231,"zig":186},"repo":"t27","kinds":{"Module":1,"BenchBlock":1},"tags":["domain/other","has/benches","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 bench. 6 lines compile to 20 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0007_gherkin_and_roles.t27","category":"bootstrap/tests","name":"0007_gherkin_and_roles","module":"m","lines":8,"bytes":78,"description":null,"health":"ok","tokens":21,"nodes":6,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":578,"rust":66,"verilog":1421,"verilog_hir":231,"zig":282},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":4},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 8 lines compile to 21 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0008_ptr_split_negative.t27","category":"bootstrap/tests","name":"0008_ptr_split_negative","module":"m","lines":5,"bytes":49,"description":null,"health":"ok","tokens":15,"nodes":5,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":545,"rust":125,"verilog":1275,"verilog_hir":231,"zig":154},"repo":"t27","kinds":{"Module":1,"ConstDecl":2,"ExprLiteral":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 2 constants. 5 lines compile to 15 tokens and 5 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0008_semicolonless_const_pair.t27","category":"bootstrap/tests","name":"0008_semicolonless_const_pair","module":"m","lines":10,"bytes":126,"description":null,"health":"ok","tokens":38,"nodes":11,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1080,"rust":158,"verilog":1927,"verilog_hir":263,"zig":284},"repo":"t27","kinds":{"Module":1,"ConstDecl":2,"ExprIdentifier":1,"ExprLiteral":2,"FnDecl":1,"ExprReturn":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 2 constants. Carries 1 test. 10 lines compile to 38 tokens and 11 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0009_no_prose_in_tests.t27","category":"bootstrap/tests","name":"0009_no_prose_in_tests","module":"m","lines":6,"bytes":73,"description":null,"health":"ok","tokens":16,"nodes":3,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":565,"rust":66,"verilog":1441,"verilog_hir":231,"zig":198},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":1},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 6 lines compile to 16 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0009_two_clauses_one_line.t27","category":"bootstrap/tests","name":"0009_two_clauses_one_line","module":"m","lines":5,"bytes":58,"description":null,"health":"ok","tokens":11,"nodes":2,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":616,"rust":66,"verilog":1661,"verilog_hir":231,"zig":214},"repo":"t27","kinds":{"Module":1,"BenchBlock":1},"tags":["domain/other","has/benches","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 bench. 5 lines compile to 11 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0011_in_membership.t27","category":"bootstrap/tests","name":"0011_in_membership","module":"m","lines":9,"bytes":145,"description":null,"health":"ok","tokens":48,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":834,"rust":66,"verilog":2137,"verilog_hir":231,"zig":381},"repo":"t27","kinds":{"Module":1,"BenchBlock":1,"TestBlock":2,"StmtExpr":4},"tags":["domain/other","has/benches","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 2 tests and 1 bench. 9 lines compile to 48 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0012_p2_coltie_module_const.t27","category":"bootstrap/tests","name":"0012_p2_coltie_module_const","module":"m","lines":12,"bytes":103,"description":null,"health":"warn","tokens":31,"nodes":7,"depth":4,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1084,"rust":130,"verilog":1909,"verilog_hir":263,"zig":212},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"ConstDecl":1,"ExprLiteral":1,"FnDecl":1,"ExprReturn":1,"ExprIdentifier":1},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. Carries 1 test. 12 lines compile to 31 tokens and 7 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"bootstrap/tests/goldring/0012_statement_clauses.t27","category":"bootstrap/tests","name":"0012_statement_clauses","module":"m","lines":11,"bytes":155,"description":null,"health":"ok","tokens":37,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":628,"rust":66,"verilog":1607,"verilog_hir":231,"zig":220},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":1},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 2 tests. 11 lines compile to 37 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0013_kf.t27","category":"bootstrap/tests","name":"0013_kf","module":"m","lines":5,"bytes":147,"description":null,"health":"ok","tokens":28,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":559,"rust":66,"verilog":1393,"verilog_hir":231,"zig":315},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 5 lines compile to 28 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0013_lv.t27","category":"bootstrap/tests","name":"0013_lv","module":"m","lines":7,"bytes":117,"description":null,"health":"ok","tokens":33,"nodes":6,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":571,"rust":66,"verilog":1393,"verilog_hir":231,"zig":269},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":4},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 7 lines compile to 33 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0013_un.t27","category":"bootstrap/tests","name":"0013_un","module":"m","lines":5,"bytes":89,"description":null,"health":"ok","tokens":17,"nodes":2,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":588,"rust":66,"verilog":1563,"verilog_hir":231,"zig":186},"repo":"t27","kinds":{"Module":1,"BenchBlock":1},"tags":["domain/other","has/benches","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 bench. 5 lines compile to 17 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0013_vn.t27","category":"bootstrap/tests","name":"0013_vn","module":"m","lines":5,"bytes":53,"description":null,"health":"ok","tokens":13,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":559,"rust":66,"verilog":1393,"verilog_hir":231,"zig":218},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 5 lines compile to 13 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0014_comprehension_suffix.t27","category":"bootstrap/tests","name":"0014_comprehension_suffix","module":"m","lines":5,"bytes":101,"description":null,"health":"ok","tokens":30,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":559,"rust":66,"verilog":1393,"verilog_hir":231,"zig":256},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 5 lines compile to 30 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/0014_inline_lambda.t27","category":"bootstrap/tests","name":"0014_inline_lambda","module":"m","lines":5,"bytes":87,"description":null,"health":"ok","tokens":27,"nodes":4,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":559,"rust":66,"verilog":1393,"verilog_hir":231,"zig":244},"repo":"t27","kinds":{"Module":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 5 lines compile to 27 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/bdd_probe.t27","category":"bootstrap/tests","name":"bdd_probe","module":"BddProbe","lines":14,"bytes":213,"description":null,"health":"ok","tokens":56,"nodes":14,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1027,"rust":120,"verilog":1947,"verilog_hir":308,"zig":428},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"ExprReturn":1,"ExprBinary":1,"ExprIdentifier":1,"ExprLiteral":1,"TestBlock":2,"StmtExpr":6},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 2 tests. 14 lines compile to 56 tokens and 14 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/cap_ok.t27","category":"bootstrap/tests","name":"cap_ok","module":"CapOk","lines":13,"bytes":188,"description":null,"health":"ok","tokens":55,"nodes":20,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1138,"rust":208,"verilog":2030,"verilog_hir":301,"zig":363},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":3,"FnDecl":2,"StmtExpr":2,"ExprReturn":2,"ExprBinary":2,"ExprIdentifier":3,"ExprCall":3,"TestBlock":1},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 constant. Carries 1 test. 13 lines compile to 55 tokens and 20 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/cap_test.t27","category":"bootstrap/tests","name":"cap_test","module":"CapTest","lines":12,"bytes":193,"description":null,"health":"ok","tokens":55,"nodes":20,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1013,"rust":205,"verilog":1883,"verilog_hir":305,"zig":369},"repo":"t27","kinds":{"Module":1,"FnDecl":2,"StmtLocal":1,"ExprLiteral":3,"StmtExpr":2,"ExprReturn":2,"ExprBinary":2,"ExprIdentifier":3,"ExprCall":3,"TestBlock":1},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions. Carries 1 test. 12 lines compile to 55 tokens and 20 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/diff_probe.t27","category":"bootstrap/tests","name":"diff_probe","module":"DiffProbe","lines":15,"bytes":272,"description":null,"health":"ok","tokens":64,"nodes":13,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1014,"rust":103,"verilog":1977,"verilog_hir":279,"zig":513},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"ExprReturn":1,"ExprLiteral":1,"TestBlock":3,"StmtExpr":6},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 3 tests. 15 lines compile to 64 tokens and 13 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/expr_probe.t27","category":"bootstrap/tests","name":"expr_probe","module":"ExprProbe","lines":6,"bytes":119,"description":null,"health":"ok","tokens":29,"nodes":7,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":955,"rust":103,"verilog":1761,"verilog_hir":279,"zig":298},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"ExprReturn":1,"ExprLiteral":1,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 6 lines compile to 29 tokens and 7 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/greedy_probe.t27","category":"bootstrap/tests","name":"greedy_probe","module":"GreedyProbe","lines":13,"bytes":219,"description":null,"health":"ok","tokens":58,"nodes":12,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1041,"rust":109,"verilog":1995,"verilog_hir":309,"zig":430},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"ExprReturn":1,"ExprIdentifier":1,"TestBlock":2,"StmtExpr":6},"tags":["domain/other","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 2 tests. 13 lines compile to 58 tokens and 12 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/r_combo.t27","category":"bootstrap/tests","name":"r_combo","module":"R4","lines":15,"bytes":325,"description":null,"health":"ok","tokens":88,"nodes":38,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1133,"rust":208,"verilog":2125,"verilog_hir":295,"zig":458},"repo":"t27","kinds":{"Module":3,"FnDecl":1,"StmtLocal":3,"ExprLiteral":7,"StmtFor":1,"ExprBinary":4,"ExprIdentifier":9,"StmtIf":1,"StmtAssign":2,"ExprCall":4,"ExprReturn":1,"TestBlock":1,"StmtExpr":1},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 15 lines compile to 88 tokens and 38 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"bootstrap/tests/goldring/r_mulassign.t27","category":"bootstrap/tests","name":"r_mulassign","module":"R2","lines":8,"bytes":111,"description":null,"health":"warn","tokens":37,"nodes":15,"depth":6,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":948,"rust":143,"verilog":1796,"verilog_hir":323,"zig":280},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"StmtLocal":1,"ExprLiteral":3,"StmtAssign":1,"ExprIdentifier":2,"ExprReturn":1,"TestBlock":1,"StmtExpr":1,"ExprCall":2,"ExprBinary":1},"tags":["domain/other","has/functions","has/tests","health/warn","issue/type-errors","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 8 lines compile to 37 tokens and 15 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 1 type error."},{"path":"bootstrap/tests/goldring/r_op.t27","category":"bootstrap/tests","name":"r_op","module":"R5","lines":8,"bytes":111,"description":null,"health":"warn","tokens":37,"nodes":15,"depth":6,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":948,"rust":142,"verilog":1796,"verilog_hir":323,"zig":280},"repo":"t27","kinds":{"Module":1,"FnDecl":1,"StmtLocal":1,"ExprLiteral":3,"StmtAssign":1,"ExprIdentifier":2,"ExprReturn":1,"TestBlock":1,"StmtExpr":1,"ExprCall":2,"ExprBinary":1},"tags":["domain/other","has/functions","has/tests","health/warn","issue/type-errors","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 8 lines compile to 37 tokens and 15 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 1 type error."},{"path":"bootstrap/tests/goldring/repro_range.t27","category":"bootstrap/tests","name":"repro_range","module":"ReproRange","lines":12,"bytes":147,"description":null,"health":"ok","tokens":48,"nodes":20,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1047,"rust":157,"verilog":1920,"verilog_hir":281,"zig":316},"repo":"t27","kinds":{"Module":2,"FnDecl":1,"StmtLocal":1,"ExprLiteral":4,"StmtFor":1,"ExprBinary":2,"StmtAssign":1,"ExprIdentifier":3,"ExprReturn":1,"TestBlock":1,"StmtExpr":1,"ExprCall":2},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 12 lines compile to 48 tokens and 20 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"compiler/ast.t27","category":"compiler","name":"ast","module":"ast","lines":612,"bytes":22112,"description":"ast.t27 — Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","health":"ok","tokens":2422,"nodes":392,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9912,"rust":10276,"verilog":16167,"verilog_hir":691,"zig":8096},"repo":"t27","kinds":{"Module":3,"EnumDecl":5,"EnumVariant":142,"StructDecl":34,"ExprIdentifier":139,"FnDecl":8,"ExprReturn":8,"ExprStructLit":3,"ExprFieldAccess":27,"ExprCall":7,"ExprUnary":5,"ExprArrayLiteral":2,"StmtExpr":3,"ExprLiteral":2,"StmtIf":2,"ExprBinary":1,"StmtAssign":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 8 functions, 34 structs and 5 enums. 612 lines compile to 2,422 tokens and 392 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 15.8 KB. Clean through every layer."},{"path":"compiler/cli/gen.t27","category":"compiler/cli","name":"gen","module":"gen_commands","lines":512,"bytes":19100,"description":"gen.t27 — Code Generation with TDD Validation Commands for generating code from t27 specs with TDD enforcement","health":"warn","tokens":2065,"nodes":778,"depth":10,"loss":1,"tcErrors":2,"failedBackends":[],"outBytes":{"c":10437,"rust":10011,"verilog":15627,"verilog_hir":587,"zig":10271},"repo":"t27","kinds":{"Module":32,"StructDecl":15,"ExprIdentifier":171,"FnDecl":8,"StmtIf":24,"ExprUnary":4,"ExprCall":118,"StmtExpr":92,"ExprLiteral":134,"ExprReturn":20,"StmtLocal":29,"ExprBinary":42,"ExprFieldAccess":60,"StmtFor":2,"StmtAssign":12,"ExprIf":2,"ExprStructLit":4,"StmtWhile":2,"ExprIndex":5,"StmtBreak":2},"tags":["domain/compiler","domain/tools","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 8 functions and 15 structs. 512 lines compile to 2,065 tokens and 778 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Compiles with 1 item dropped by error recovery and 2 type errors."},{"path":"compiler/cli/git.t27","category":"compiler/cli","name":"git","module":"git_commands","lines":617,"bytes":22604,"description":"git.t27 — Git Integration with Tri Skill Workflow (ADR-002) Commands for git operations with skill validation and issue binding","health":"warn","tokens":2922,"nodes":1039,"depth":13,"loss":1,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13791,"rust":11553,"verilog":20483,"verilog_hir":1350,"zig":12552},"repo":"t27","kinds":{"Module":65,"FnDecl":12,"StmtLocal":54,"ExprLiteral":160,"StmtIf":51,"ExprUnary":5,"ExprCall":142,"ExprIdentifier":261,"StmtExpr":85,"ExprReturn":30,"ExprBinary":70,"ExprFieldAccess":66,"ExprIf":4,"StmtAssign":19,"ExprIndex":3,"StmtFor":5,"StmtBreak":2,"StmtWhile":3,"StructDecl":2},"tags":["domain/compiler","domain/tools","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 12 functions and 2 structs. 617 lines compile to 2,922 tokens and 1,039 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.0 KB. Compiles with 1 item dropped by error recovery and 1 type error."},{"path":"compiler/cli/spec.t27","category":"compiler/cli","name":"spec","module":"spec_commands","lines":488,"bytes":19533,"description":"spec.t27 — Spec Management Commands Commands for creating and managing t27 specs with TDD enforcement","health":"ok","tokens":2155,"nodes":699,"depth":61,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12142,"rust":10845,"verilog":16339,"verilog_hir":648,"zig":11320},"repo":"t27","kinds":{"Module":29,"FnDecl":7,"StmtIf":24,"ExprUnary":4,"ExprCall":83,"ExprIdentifier":115,"StmtExpr":70,"ExprLiteral":149,"ExprReturn":19,"StmtLocal":16,"ExprIf":2,"ExprBinary":94,"ExprFieldAccess":63,"StmtFor":4,"ExprIndex":3,"StmtAssign":4,"ExprStructLit":1,"ExprArrayLiteral":1,"StructDecl":11},"tags":["domain/compiler","domain/tools","has/functions","has/loops","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 7 functions and 11 structs. 488 lines compile to 2,155 tokens and 699 AST nodes, depth 61. Emits 5 of 5 backends; largest is Verilog at 16.0 KB. Clean through every layer."},{"path":"compiler/codegen/c/codegen.t27","category":"compiler/codegen","name":"codegen","module":"tricgen-c","lines":274,"bytes":7080,"description":"compiler/codegen/c/codegen.t27 — C Code Generator Specification Emit C code from t27 AST","health":"warn","tokens":784,"nodes":198,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3979,"rust":1289,"verilog":7731,"verilog_hir":247,"zig":4271},"repo":"t27","kinds":{"Module":2,"ConstDecl":8,"ExprLiteral":2,"EnumDecl":3,"EnumVariant":31,"StructDecl":2,"ExprIdentifier":59,"FnDecl":18,"StmtExpr":8,"ExprUnary":13,"ExprCall":13,"StmtAssign":23,"ExprSwitch":1,"ExprFieldAccess":1,"TestBlock":7,"InvariantBlock":5,"BenchBlock":2},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/invariants","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 18 functions, 2 structs, 3 enums and 8 constants. Carries 7 tests, 5 invariants and 2 benches. 274 lines compile to 784 tokens and 198 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/testgen.t27","category":"compiler/codegen","name":"testgen","module":"testgen","lines":910,"bytes":37869,"description":"testgen.t27 — Generic Test Generator for TDD-Inside-Spec Generates test code from spec test blocks for multiple backends","health":"warn","tokens":5455,"nodes":1622,"depth":19,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2508,"rust":2476,"verilog":5560,"verilog_hir":243,"zig":25877},"repo":"t27","kinds":{"Module":68,"StructDecl":13,"ExprIdentifier":272,"FnDecl":24,"ExprReturn":18,"ExprStructLit":2,"ExprFieldAccess":124,"ExprCall":292,"ExprLiteral":314,"StmtIf":28,"ExprBinary":106,"StmtExpr":268,"StmtLocal":14,"StmtAssign":36,"StmtFor":20,"ExprIndex":10,"StmtWhile":6,"StmtBreak":2,"ExprArrayLiteral":5},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 24 functions and 13 structs. 910 lines compile to 5,455 tokens and 1,622 AST nodes, depth 19. Emits 5 of 5 backends; largest is Zig at 25.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/verilog/codegen.t27","category":"compiler/codegen","name":"codegen","module":"verilog_codegen","lines":1068,"bytes":159861,"description":"codegen.t27 — Code Generator for Verilog Generates synthesizable Verilog from t27 AST","health":"warn","tokens":6032,"nodes":602,"depth":11,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1608,"rust":715,"verilog":3257,"verilog_hir":391,"zig":7691},"repo":"t27","kinds":{"Module":6,"StructDecl":2,"ExprIdentifier":59,"FnDecl":10,"StmtLocal":6,"ExprCall":154,"ExprFieldAccess":54,"ExprLiteral":130,"ExprReturn":3,"ExprStructLit":2,"ExprUnary":1,"StmtExpr":142,"StmtIf":4,"ExprBinary":21,"StmtFor":1,"StmtAssign":4,"ExprIndex":3},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 10 functions and 2 structs. 1068 lines compile to 6,032 tokens and 602 AST nodes, depth 11. Emits 5 of 5 backends; largest is Zig at 7.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/verilog/fpga_emission.t27","category":"compiler/codegen","name":"fpga_emission","module":"fpga_emission","lines":2359,"bytes":86800,"description":"fpga_emission.t27 — FPGA Module Verilog Emission Generates FPGA-specific Verilog modules from .t27 specs","health":"warn","tokens":14509,"nodes":4844,"depth":13,"loss":1,"tcErrors":21,"failedBackends":[],"outBytes":{"c":63400,"rust":61439,"verilog":79069,"verilog_hir":2432,"zig":61767},"repo":"t27","kinds":{"Module":39,"StructDecl":1,"ExprIdentifier":205,"FnDecl":28,"ExprReturn":3,"ExprStructLit":1,"ExprFieldAccess":89,"ExprLiteral":1284,"StmtExpr":1492,"ExprCall":1506,"StmtLocal":26,"StmtWhile":14,"ExprBinary":81,"StmtAssign":27,"StmtIf":20,"ExprArrayLiteral":1,"ExprIndex":16,"ExprIf":5,"StmtBreak":4,"StmtContinue":1,"ExprUnary":1},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 28 functions and 1 struct. 2359 lines compile to 14,509 tokens and 4,844 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 77.2 KB. Compiles with 1 item dropped by error recovery and 21 type errors."},{"path":"compiler/codegen/zig/codegen.t27","category":"compiler/codegen","name":"codegen","module":"zig_codegen","lines":1517,"bytes":56101,"description":"codegen.t27 — Code Generator for Zig Generates Zig 0.15 code from t27 AST","health":"warn","tokens":8455,"nodes":2024,"depth":15,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":23054,"rust":13610,"verilog":31379,"verilog_hir":2070,"zig":28346},"repo":"t27","kinds":{"Module":58,"StructDecl":2,"ExprIdentifier":296,"FnDecl":34,"ExprReturn":16,"ExprStructLit":3,"ExprFieldAccess":194,"ExprCall":439,"ExprLiteral":361,"ExprUnary":2,"StmtExpr":376,"StmtIf":32,"ExprBinary":77,"StmtFor":20,"StmtLocal":53,"StmtWhile":1,"StmtAssign":33,"ExprIndex":23,"ExprSwitch":1,"ConstDecl":2,"ExprClosure":1},"tags":["domain/compiler","has/functions","has/loops","has/structs","has/switch","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 34 functions, 2 structs and 2 constants. 1517 lines compile to 8,455 tokens and 2,024 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 30.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/codegen/zig/runtime.t27","category":"compiler/codegen","name":"runtime","module":"zig_runtime","lines":410,"bytes":20976,"description":"runtime.t27 — Zig Runtime Code Generation Generates Zig backend from compiler/runtime/*.t27 specifications","health":"warn","tokens":1321,"nodes":587,"depth":118,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12291,"rust":11443,"verilog":13515,"verilog_hir":625,"zig":11469},"repo":"t27","kinds":{"Module":1,"FnDecl":7,"ExprReturn":7,"ExprBinary":268,"ExprLiteral":271,"ExprCall":17,"StmtLocal":1,"StmtExpr":8,"ExprIdentifier":7},"tags":["domain/compiler","has/functions","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 7 functions. 410 lines compile to 1,321 tokens and 587 AST nodes, depth 118. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/parser/lexer.t27","category":"compiler/parser","name":"lexer","module":"trilexer","lines":598,"bytes":18428,"description":"compiler/parser/lexer.t27 — Lexer for TRI-27 Assembly Tokenizes source code into Token stream for parser","health":"warn","tokens":3300,"nodes":718,"depth":14,"loss":1,"tcErrors":2,"failedBackends":[],"outBytes":{"c":5274,"rust":2284,"verilog":7912,"verilog_hir":317,"zig":8087},"repo":"t27","kinds":{"Module":26,"ConstDecl":3,"ExprLiteral":86,"EnumDecl":1,"EnumVariant":87,"StructDecl":2,"ExprIdentifier":161,"FnDecl":9,"StmtAssign":36,"ExprFieldAccess":121,"ExprIf":6,"ExprBinary":65,"ExprIndex":17,"StmtLocal":17,"StmtWhile":5,"StmtExpr":12,"ExprCall":24,"StmtIf":15,"StmtBreak":1,"ExprStructLit":8,"ExprEnumValue":7,"StmtContinue":5,"ExprReturn":4},"tags":["domain/compiler","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 9 functions, 2 structs, 1 enum and 3 constants. 598 lines compile to 3,300 tokens and 718 AST nodes, depth 14. Emits 5 of 5 backends; largest is Zig at 7.9 KB. Compiles with 1 item dropped by error recovery and 2 type errors."},{"path":"compiler/parser/parser.t27","category":"compiler/parser","name":"parser","module":"parser","lines":1295,"bytes":50561,"description":"parser.t27 — Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","health":"warn","tokens":7701,"nodes":2776,"depth":24,"loss":2,"tcErrors":3,"failedBackends":[],"outBytes":{"c":36078,"rust":31904,"verilog":46522,"verilog_hir":3119,"zig":32837},"repo":"t27","kinds":{"Module":150,"StructDecl":1,"ExprIdentifier":672,"FnDecl":37,"StmtLocal":104,"ExprStructLit":38,"ExprFieldAccess":713,"ExprLiteral":167,"ExprUnary":85,"ExprArrayLiteral":37,"ExprCall":298,"StmtIf":95,"ExprBinary":115,"StmtAssign":95,"ExprIndex":6,"ExprReturn":61,"StmtExpr":53,"StmtWhile":22,"StmtFor":3,"StmtContinue":1,"StmtBreak":3,"ExprIf":1,"TestBlock":12,"ConstDecl":2,"InvariantBlock":3,"BenchBlock":2},"tags":["domain/compiler","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 37 functions, 1 struct and 2 constants. Carries 12 tests, 3 invariants and 2 benches. 1295 lines compile to 7,701 tokens and 2,776 AST nodes, depth 24. Emits 5 of 5 backends; largest is Verilog at 45.4 KB. Compiles with 2 items dropped by error recovery and 3 type errors."},{"path":"compiler/runtime/commands.t27","category":"compiler/runtime","name":"commands","module":"commands","lines":1040,"bytes":38449,"description":"commands.t27 — CLI Command Specifications Individual command specifications for tri CLI","health":"warn","tokens":4833,"nodes":781,"depth":12,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10610,"rust":7609,"verilog":15909,"verilog_hir":972,"zig":9311},"repo":"t27","kinds":{"Module":41,"EnumDecl":1,"EnumVariant":7,"FnDecl":9,"StmtIf":31,"ExprBinary":34,"ExprFieldAccess":32,"ExprIdentifier":157,"ExprLiteral":136,"StmtExpr":92,"ExprCall":139,"ExprReturn":27,"StmtLocal":42,"ExprArrayLiteral":1,"StmtFor":6,"StmtAssign":9,"StmtBreak":1,"ExprUnary":7,"ExprIf":3,"StmtContinue":3,"ConstDecl":3},"tags":["domain/compiler","has/enums","has/functions","has/loops","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 9 functions, 1 enum and 3 constants. 1040 lines compile to 4,833 tokens and 781 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"compiler/runtime/runtime.t27","category":"compiler/runtime","name":"runtime","module":"triruntime","lines":340,"bytes":11877,"description":"compiler/runtime/runtime.t27 — T27 Runtime Specification Runtime environment for executing t27 programs","health":"warn","tokens":1603,"nodes":315,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5411,"rust":3029,"verilog":8428,"verilog_hir":2032,"zig":3941},"repo":"t27","kinds":{"Module":11,"ConstDecl":4,"ExprLiteral":32,"EnumDecl":1,"EnumVariant":3,"StructDecl":1,"ExprIdentifier":106,"FnDecl":17,"StmtExpr":7,"ExprUnary":3,"ExprCall":10,"StmtAssign":30,"ExprFieldAccess":33,"ExprReturn":12,"ExprBinary":17,"StmtFor":4,"ExprEnumValue":3,"ExprIndex":13,"StmtIf":6,"StmtLocal":2},"tags":["domain/compiler","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 17 functions, 1 struct, 1 enum and 4 constants. 340 lines compile to 1,603 tokens and 315 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"compiler/runtime/validation.t27","category":"compiler/runtime","name":"validation","module":"validation_rules","lines":515,"bytes":21764,"description":"validation.t27 — Validation Rules and Invariants TDD and language policy validation for t27 specs","health":"ok","tokens":2858,"nodes":544,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8310,"rust":6578,"verilog":10887,"verilog_hir":1276,"zig":7732},"repo":"t27","kinds":{"Module":33,"StructDecl":1,"ExprIdentifier":94,"FnDecl":12,"StmtLocal":19,"ExprBinary":33,"ExprFieldAccess":107,"ExprLiteral":118,"StmtIf":26,"ExprUnary":10,"ExprReturn":30,"ExprStructLit":25,"StmtFor":2,"ExprCall":23,"ExprIndex":5,"StmtAssign":4,"StmtWhile":2},"tags":["domain/compiler","has/functions","has/loops","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 12 functions and 1 struct. 515 lines compile to 2,858 tokens and 544 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 10.6 KB. Clean through every layer."},{"path":"compiler/skill/registry.t27","category":"compiler/skill","name":"registry","module":"skill_registry","lines":313,"bytes":12493,"description":"registry.t27 — Skill Registry JSON Structure (ADR-002) Defines the structure for tri skill workflow registry","health":"ok","tokens":1009,"nodes":126,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3298,"rust":2508,"verilog":4648,"verilog_hir":534,"zig":2093},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":8,"EnumDecl":3,"EnumVariant":12,"StructDecl":3,"ExprIdentifier":45,"FnDecl":4,"ExprReturn":4,"ExprStructLit":3,"ExprFieldAccess":31,"ExprUnary":2,"ExprArrayLiteral":2,"StmtLocal":1,"ExprBinary":6},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 3 structs, 3 enums and 1 constant. 313 lines compile to 1,009 tokens and 126 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"contrib/backend/zig/legacy/main_zig_handwritten.t27","category":"contrib/backend","name":"main_zig_handwritten","module":null,"lines":1126,"bytes":36948,"description":"tri.zig a Trinity T27 CLI Runtime","health":"ok","tokens":6410,"nodes":158,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2140,"rust":1421,"verilog":3678,"verilog_hir":345,"zig":2677},"repo":"t27","kinds":{"Module":12,"ConstDecl":1,"ExprIdentifier":53,"StructDecl":13,"EnumDecl":1,"EnumVariant":6,"FnDecl":1,"StmtLocal":4,"ExprCall":18,"ExprStructLit":1,"StmtAssign":1,"ExprUnary":8,"StmtExpr":9,"StmtIf":6,"ExprBinary":5,"ExprFieldAccess":1,"ExprLiteral":12,"ExprReturn":1,"ExprIndex":5},"tags":["domain/other","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 13 structs, 1 enum and 1 constant. 1126 lines compile to 6,410 tokens and 158 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"examples/fpga/qmtech_minimal/design.t27","category":"examples/fpga","name":"design","module":null,"lines":150,"bytes":3668,"description":null,"health":"warn","tokens":468,"nodes":5,"depth":2,"loss":25,"tcErrors":0,"failedBackends":[],"outBytes":{"c":823,"rust":66,"verilog":1597,"verilog_hir":243,"zig":293},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"TestBlock":1,"InvariantBlock":1},"tags":["domain/fpga","domain/tutorial","has/imports","has/invariants","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 1 test and 1 invariant. 150 lines compile to 468 tokens and 5 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 25 items dropped by error recovery."},{"path":"specs/account/auth.t27","category":"specs/account","name":"auth","module":"AccountAuth","lines":272,"bytes":10728,"description":"specs/account/auth.t27 Account Authentication Operations","health":"ok","tokens":957,"nodes":348,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7302,"rust":2673,"verilog":12316,"verilog_hir":807,"zig":6934},"repo":"t27","kinds":{"Module":5,"UseDecl":2,"FnDecl":10,"StructDecl":7,"ExprIdentifier":66,"StmtIf":4,"ExprBinary":30,"ExprFieldAccess":56,"ExprLiteral":55,"ExprReturn":5,"TestBlock":14,"StmtLocal":17,"ExprStructLit":12,"ExprCall":39,"StmtExpr":26},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 7 structs. Carries 14 tests. 272 lines compile to 957 tokens and 348 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Clean through every layer."},{"path":"specs/account/repo.t27","category":"specs/account","name":"repo","module":"AccountRepo","lines":197,"bytes":6832,"description":"specs/account/repo.t27 Account Repository Operations","health":"ok","tokens":741,"nodes":246,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5928,"rust":2632,"verilog":9190,"verilog_hir":787,"zig":5271},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":9,"ExprIdentifier":46,"EnumDecl":1,"EnumVariant":2,"ConstDecl":1,"ExprLiteral":40,"FnDecl":10,"TestBlock":9,"StmtLocal":9,"ExprStructLit":7,"ExprFieldAccess":50,"ExprCall":29,"StmtExpr":14,"ExprBinary":14,"ExprTry":3},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 9 structs, 1 enum and 1 constant. Carries 9 tests. 197 lines compile to 741 tokens and 246 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 9.0 KB. Clean through every layer."},{"path":"specs/account/schema.t27","category":"specs/account","name":"schema","module":"Account","lines":227,"bytes":8525,"description":"specs/account/schema.t27 Account Types Specification","health":"ok","tokens":712,"nodes":294,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5001,"rust":2773,"verilog":8979,"verilog_hir":347,"zig":4811},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"StructDecl":17,"ExprIdentifier":49,"EnumDecl":2,"EnumVariant":8,"ConstDecl":3,"ExprLiteral":58,"FnDecl":1,"StmtIf":1,"ExprBinary":35,"ExprReturn":2,"StmtLocal":14,"ExprFieldAccess":29,"TestBlock":12,"ExprCall":33,"StmtExpr":21,"ExprStructLit":3,"ExprUnary":3},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 1 function, 17 structs, 2 enums and 3 constants. Carries 12 tests. 227 lines compile to 712 tokens and 294 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.8 KB. Clean through every layer."},{"path":"specs/agents/a.t27","category":"specs/agents","name":"a","module":"agent_a","lines":47,"bytes":3073,"description":"specs/agents/a.t27 -- agent t27/A, letter A of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/A). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent A - Alpha (Architecture)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":212,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1921,"rust":1797,"verilog":2978,"verilog_hir":243,"zig":1949},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 212 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/agents/b.t27","category":"specs/agents","name":"b","module":"agent_b","lines":47,"bytes":2876,"description":"specs/agents/b.t27 -- agent t27/B, letter B of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/B). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent B - Beta (Build)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1729,"rust":1605,"verilog":2786,"verilog_hir":243,"zig":1757},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/c.t27","category":"specs/agents","name":"c","module":"agent_c","lines":47,"bytes":3074,"description":"specs/agents/c.t27 -- agent t27/C, letter C of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/C). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent C - Gamma (Compiler Core)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":213,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1921,"rust":1797,"verilog":2978,"verilog_hir":243,"zig":1949},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 213 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/agents/d.t27","category":"specs/agents","name":"d","module":"agent_d","lines":47,"bytes":2932,"description":"specs/agents/d.t27 -- agent t27/D, letter D of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/D). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent D - Delta (De-Zigfication)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1775,"rust":1651,"verilog":2832,"verilog_hir":243,"zig":1803},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/agents/e.t27","category":"specs/agents","name":"e","module":"agent_e","lines":47,"bytes":3191,"description":"specs/agents/e.t27 -- agent t27/E, letter E of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/E). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent E - Epsilon (Experience)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":213,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2039,"rust":1915,"verilog":3096,"verilog_hir":243,"zig":2669},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 213 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/agents/f.t27","category":"specs/agents","name":"f","module":"agent_f","lines":47,"bytes":2940,"description":"specs/agents/f.t27 -- agent t27/F, letter F of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/F). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent F - Phi (Formal Conformance)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1781,"rust":1657,"verilog":2838,"verilog_hir":243,"zig":1809},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/agents/g.t27","category":"specs/agents","name":"g","module":"agent_g","lines":47,"bytes":2899,"description":"specs/agents/g.t27 -- agent t27/G, letter G of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/G). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent G - Gamma (Graph)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1751,"rust":1627,"verilog":2808,"verilog_hir":243,"zig":1779},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/h.t27","category":"specs/agents","name":"h","module":"agent_h","lines":47,"bytes":2925,"description":"specs/agents/h.t27 -- agent t27/H, letter H of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/H). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent H - Eta (HSLM)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1780,"rust":1656,"verilog":2837,"verilog_hir":243,"zig":1808},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/agents/i.t27","category":"specs/agents","name":"i","module":"agent_i","lines":47,"bytes":2889,"description":"specs/agents/i.t27 -- agent t27/I, letter I of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/I). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent I - Iota (ISA)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1745,"rust":1621,"verilog":2802,"verilog_hir":243,"zig":1773},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/j.t27","category":"specs/agents","name":"j","module":"agent_j","lines":47,"bytes":2861,"description":"specs/agents/j.t27 -- agent t27/J, letter J of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/J). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent J - Iota-extended (Jobs)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1707,"rust":1583,"verilog":2764,"verilog_hir":243,"zig":1735},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/k.t27","category":"specs/agents","name":"k","module":"agent_k","lines":47,"bytes":2910,"description":"specs/agents/k.t27 -- agent t27/K, letter K of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/K). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent K - Kappa (Kernel)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1761,"rust":1637,"verilog":2818,"verilog_hir":243,"zig":1789},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/agents/l.t27","category":"specs/agents","name":"l","module":"agent_l","lines":47,"bytes":2897,"description":"specs/agents/l.t27 -- agent t27/L, letter L of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/L). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent L - Lambda (Language)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1746,"rust":1622,"verilog":2803,"verilog_hir":243,"zig":1774},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/m.t27","category":"specs/agents","name":"m","module":"agent_m","lines":47,"bytes":2884,"description":"specs/agents/m.t27 -- agent t27/M, letter M of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/M). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent M - Mu (Metrics)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1737,"rust":1613,"verilog":2794,"verilog_hir":243,"zig":1765},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/n.t27","category":"specs/agents","name":"n","module":"agent_n","lines":47,"bytes":2926,"description":"specs/agents/n.t27 -- agent t27/N, letter N of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/N). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent N - Nu (Numeric)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1779,"rust":1655,"verilog":2836,"verilog_hir":243,"zig":1807},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/agents/o.t27","category":"specs/agents","name":"o","module":"agent_o","lines":47,"bytes":2990,"description":"specs/agents/o.t27 -- agent t27/O, letter O of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/O). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent O - Omicron (Orchestration)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1836,"rust":1712,"verilog":2893,"verilog_hir":243,"zig":1864},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/agents/p.t27","category":"specs/agents","name":"p","module":"agent_p","lines":47,"bytes":3028,"description":"specs/agents/p.t27 -- agent t27/P, letter P of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/P). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent P - Pi (Physics)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1885,"rust":1761,"verilog":2942,"verilog_hir":243,"zig":1913},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/agents/q.t27","category":"specs/agents","name":"q","module":"agent_q","lines":47,"bytes":2853,"description":"specs/agents/q.t27 -- agent t27/Q, letter Q of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Q). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Q - Theta (Queue)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1706,"rust":1582,"verilog":2763,"verilog_hir":243,"zig":1734},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/r.t27","category":"specs/agents","name":"r","module":"agent_r","lines":47,"bytes":2883,"description":"specs/agents/r.t27 -- agent t27/R, letter R of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/R). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent R - Rho (Runtime)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":210,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1735,"rust":1611,"verilog":2792,"verilog_hir":243,"zig":1763},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 210 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/s.t27","category":"specs/agents","name":"s","module":"agent_s","lines":47,"bytes":3062,"description":"specs/agents/s.t27 -- agent t27/S, letter S of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/S). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent S - Sigma (Specs)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":212,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1917,"rust":1793,"verilog":2974,"verilog_hir":243,"zig":1945},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 212 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/agents/t.t27","category":"specs/agents","name":"t","module":"agent_t","lines":47,"bytes":3211,"description":"specs/agents/t.t27 -- agent t27/T, letter T of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/T). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent T - Tau (TRINITY Queen)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":216,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2059,"rust":1935,"verilog":3116,"verilog_hir":243,"zig":2087},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 216 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/agents/ti.t27","category":"specs/agents","name":"ti","module":"agent_ti","lines":48,"bytes":2953,"description":"specs/agents/ti.t27 -- agent t27/TI, letter TI of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/TI). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent 27th - Ti (Security)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":207,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1718,"rust":1590,"verilog":2772,"verilog_hir":245,"zig":1743},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 48 lines compile to 207 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/u.t27","category":"specs/agents","name":"u","module":"agent_u","lines":47,"bytes":2851,"description":"specs/agents/u.t27 -- agent t27/U, letter U of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/U). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent U - Upsilon (Universe)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1699,"rust":1575,"verilog":2756,"verilog_hir":243,"zig":1727},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/v.t27","category":"specs/agents","name":"v","module":"agent_v","lines":47,"bytes":3089,"description":"specs/agents/v.t27 -- agent t27/V, letter V of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/V). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent V - Vau (Verdict)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":215,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1943,"rust":1819,"verilog":3000,"verilog_hir":243,"zig":1971},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 215 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/agents/w.t27","category":"specs/agents","name":"w","module":"agent_w","lines":47,"bytes":2836,"description":"specs/agents/w.t27 -- agent t27/W, letter W of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/W). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent W - Double-Vav (Workflow)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":209,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1681,"rust":1557,"verilog":2738,"verilog_hir":243,"zig":1709},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 209 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/x.t27","category":"specs/agents","name":"x","module":"agent_x","lines":47,"bytes":2871,"description":"specs/agents/x.t27 -- agent t27/X, letter X of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/X). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent X - Chi (External)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1723,"rust":1599,"verilog":2780,"verilog_hir":243,"zig":1751},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/y.t27","category":"specs/agents","name":"y","module":"agent_y","lines":47,"bytes":2855,"description":"specs/agents/y.t27 -- agent t27/Y, letter Y of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Y). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Y - Psi (Yield/DePIN)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1704,"rust":1580,"verilog":2761,"verilog_hir":243,"zig":1732},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/agents/z.t27","category":"specs/agents","name":"z","module":"agent_z","lines":47,"bytes":2839,"description":"specs/agents/z.t27 -- agent t27/Z, letter Z of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Z). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Z - Zeta (Zero-Touch)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":208,"nodes":49,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1688,"rust":1564,"verilog":2745,"verilog_hir":243,"zig":1716},"repo":"t27","kinds":{"Module":1,"ConstDecl":24,"ExprLiteral":21,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 24 constants. 47 lines compile to 208 tokens and 49 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/api/c_abi.t27","category":"specs/api","name":"c_abi","module":"TrinityCAbi","lines":107,"bytes":9602,"description":"specs/api/c_abi.t27 -- the C ABI of libtrinity-vsa as gHashTag/trinity src/c_api.zig exports it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's host boundary is one file, src/c_api.zig at 976df517, built as the static and shared libraries trinity-vsa and described by a hand-written header. This file states the twenty-two exported functions with their C prototypes, who owns what crosses the boundary, what each returns on a NULL handle, the error channel (there is none) and the layout that is and is not ABI-stable; the scalar rules are","health":"ok","tokens":836,"nodes":222,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9602,"rust":7487,"verilog":12305,"verilog_hir":760,"zig":9274},"repo":"t27","kinds":{"Module":6,"ConstDecl":30,"ExprLiteral":64,"ExprIdentifier":26,"FnDecl":6,"StmtIf":5,"ExprBinary":21,"ExprReturn":11,"ExprUnary":6,"InvariantBlock":2,"StmtExpr":15,"TestBlock":4,"ExprCall":26},"tags":["domain/network","has/functions","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 30 constants. Carries 4 tests and 2 invariants. 107 lines compile to 836 tokens and 222 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Clean through every layer."},{"path":"specs/api/c_api_contract.t27","category":"specs/api","name":"c_api_contract","module":null,"lines":243,"bytes":7257,"description":null,"health":"warn","tokens":692,"nodes":312,"depth":11,"loss":49,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3690,"rust":66,"verilog":6141,"verilog_hir":243,"zig":3435},"repo":"t27","kinds":{"Module":6,"TestBlock":9,"StmtLocal":28,"ExprCall":69,"StmtExpr":31,"ExprUnary":22,"ExprBinary":10,"ExprFieldAccess":3,"ExprIdentifier":75,"ExprLiteral":53,"StmtFor":2,"StmtIf":2,"StmtAssign":1,"ExprArrayLiteral":1},"tags":["domain/network","has/loops","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 9 tests. 243 lines compile to 692 tokens and 312 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 6.0 KB. Compiles with 49 items dropped by error recovery."},{"path":"specs/api/sdk_contract.t27","category":"specs/api","name":"sdk_contract","module":null,"lines":407,"bytes":10927,"description":null,"health":"warn","tokens":2135,"nodes":175,"depth":3,"loss":48,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5982,"rust":1625,"verilog":13685,"verilog_hir":243,"zig":9244},"repo":"t27","kinds":{"Module":1,"StructDecl":4,"ExprIdentifier":10,"TestBlock":25,"StmtExpr":120,"InvariantBlock":8,"BenchBlock":7},"tags":["domain/network","has/benches","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 4 structs. Carries 25 tests, 8 invariants and 7 benches. 407 lines compile to 2,135 tokens and 175 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 13.4 KB. Compiles with 48 items dropped by error recovery."},{"path":"specs/api/tri_net_api.t27","category":"specs/api","name":"tri_net_api","module":null,"lines":190,"bytes":5445,"description":null,"health":"warn","tokens":333,"nodes":3,"depth":2,"loss":42,"tcErrors":0,"failedBackends":[],"outBytes":{"c":687,"rust":66,"verilog":1861,"verilog_hir":243,"zig":275},"repo":"t27","kinds":{"Module":1,"BenchBlock":2},"tags":["domain/network","has/benches","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 2 benches. 190 lines compile to 333 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 42 items dropped by error recovery."},{"path":"specs/ar/asp_solver.t27","category":"specs/ar","name":"asp_solver","module":null,"lines":556,"bytes":16356,"description":"spec: AspSolver Answer Set Programming solver for neuro-symbolic reasoning","health":"ok","tokens":2584,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1380,"rust":713,"verilog":2277,"verilog_hir":289,"zig":562},"repo":"t27","kinds":{"Module":1,"StructDecl":4,"ExprIdentifier":9,"ConstDecl":1,"ExprLiteral":1,"FnDecl":1},"tags":["domain/reasoning","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 4 structs and 1 constant. 556 lines compile to 2,584 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/ar/coa_planning.t27","category":"specs/ar","name":"coa_planning","module":null,"lines":640,"bytes":20123,"description":"spec: CoaPlanning Course of Action (COA) planning for neuro-symbolic reasoning","health":"warn","tokens":2834,"nodes":2,"depth":2,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":158},"repo":"t27","kinds":{"Module":1,"UseDecl":1},"tags":["domain/reasoning","has/imports","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares no top-level items. 640 lines compile to 2,834 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ar/composition.t27","category":"specs/ar","name":"composition","module":null,"lines":571,"bytes":19109,"description":"spec: Composition ML+AR composition patterns for neuro-symbolic hybrid reasoning","health":"ok","tokens":2513,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2528,"rust":1614,"verilog":4018,"verilog_hir":357,"zig":1302},"repo":"t27","kinds":{"Module":1,"EnumDecl":2,"EnumVariant":17,"StructDecl":4,"ExprIdentifier":17,"ConstDecl":1,"ExprLiteral":1,"FnDecl":1},"tags":["domain/reasoning","has/enums","has/functions","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 4 structs, 2 enums and 1 constant. 571 lines compile to 2,513 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/ar/datalog_engine.t27","category":"specs/ar","name":"datalog_engine","module":null,"lines":348,"bytes":10906,"description":"spec: DatalogEngine Datalog reasoning engine for neuro-symbolic AI","health":"ok","tokens":1855,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1251,"rust":706,"verilog":2117,"verilog_hir":298,"zig":550},"repo":"t27","kinds":{"Module":1,"StructDecl":4,"ExprIdentifier":10,"FnDecl":1},"tags":["domain/reasoning","has/functions","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 1 function and 4 structs. 348 lines compile to 1,855 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/ar/explainability.t27","category":"specs/ar","name":"explainability","module":null,"lines":558,"bytes":16271,"description":"spec: Explainability Explainable AI (XAI) mechanisms for neuro-symbolic reasoning","health":"warn","tokens":2223,"nodes":2,"depth":2,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":158},"repo":"t27","kinds":{"Module":1,"UseDecl":1},"tags":["domain/reasoning","has/imports","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares no top-level items. 558 lines compile to 2,223 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ar/proof_trace.t27","category":"specs/ar","name":"proof_trace","module":null,"lines":313,"bytes":9658,"description":"spec: ProofTrace Bounded proof trace mechanism for explainable neuro-symbolic reasoning","health":"warn","tokens":1496,"nodes":2,"depth":2,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":158},"repo":"t27","kinds":{"Module":1,"UseDecl":1},"tags":["domain/reasoning","has/imports","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. 313 lines compile to 1,496 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ar/restraint.t27","category":"specs/ar","name":"restraint","module":null,"lines":438,"bytes":14081,"description":"spec: Restraint Bounded rationality and restraint mechanisms for neuro-symbolic reasoning","health":"warn","tokens":1555,"nodes":2,"depth":2,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":158},"repo":"t27","kinds":{"Module":1,"UseDecl":1},"tags":["domain/reasoning","has/imports","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares no top-level items. 438 lines compile to 1,555 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ar/ternary_logic.t27","category":"specs/ar","name":"ternary_logic","module":null,"lines":471,"bytes":13741,"description":"spec: TernaryLogic K3 Kleene ternary logic operations for neuro-symbolic reasoning","health":"warn","tokens":1854,"nodes":475,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6976,"rust":1430,"verilog":9978,"verilog_hir":954,"zig":4907},"repo":"t27","kinds":{"Module":5,"ConstDecl":3,"ExprIdentifier":185,"FnDecl":10,"ExprReturn":10,"ExprCall":118,"StmtLocal":12,"ExprFieldAccess":4,"StmtFor":3,"StmtAssign":1,"StructDecl":1,"ExprArrayLiteral":2,"ExprLiteral":2,"ExprIndex":2,"ExprIf":3,"ExprBinary":45,"StmtExpr":44,"InvariantBlock":15,"ExprUnary":2,"TestBlock":7,"StmtIf":1},"tags":["domain/reasoning","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 10 functions, 1 struct and 3 constants. Carries 7 tests and 15 invariants. 471 lines compile to 1,854 tokens and 475 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 9.7 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/auth/config.t27","category":"specs/auth","name":"config","module":"AuthConfig","lines":295,"bytes":12311,"description":"specs/auth/config.t27 Authentication Configuration Storage","health":"ok","tokens":1032,"nodes":371,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7214,"rust":2578,"verilog":11611,"verilog_hir":944,"zig":6848},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":5,"ExprIdentifier":70,"FnDecl":13,"ConstDecl":11,"ExprLiteral":59,"TestBlock":13,"StmtExpr":33,"ExprCall":52,"ExprBinary":33,"ExprFieldAccess":48,"StmtLocal":16,"ExprStructLit":9,"ExprTry":2},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 5 structs, 1 enum and 11 constants. Carries 13 tests. 295 lines compile to 1,032 tokens and 371 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"specs/automation/agent-provider-chain.t27","category":"specs/automation","name":"agent-provider-chain","module":"automation","lines":104,"bytes":6547,"description":"specs/automation/agent-provider-chain.t27 -- the chain of model providers behind the vibee-render agent (chat, seller sweep, CRM duet) and its RESERVE route. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/provider.ts (CATALOG, providerOrder, allProviders, diagnose) and provider-choice.ts (KNOWN_PROVIDERS, the owner's pick from the bot). WHY a reserve route: three duet runs on 2026-09-13 (duet-mtzyg2t6, duet-mu00klri and the","health":"ok","tokens":434,"nodes":96,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2969,"rust":1869,"verilog":5090,"verilog_hir":478,"zig":2293},"repo":"t27","kinds":{"Module":5,"ConstDecl":27,"ExprLiteral":36,"FnDecl":2,"ExprReturn":6,"ExprBinary":6,"ExprIdentifier":7,"StmtIf":4,"TestBlock":3},"tags":["domain/other","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 27 constants. Carries 3 tests. 104 lines compile to 434 tokens and 96 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"specs/automation/crm-client-ownership.t27","category":"specs/automation","name":"crm-client-ownership","module":"automation","lines":141,"bytes":8519,"description":"specs/automation/crm-client-ownership.t27 -- WHO owns a client profile, and money in the stage the client workspace shows. Closes the two gaps crm-client-workspace.t27 (#3604) left open and that were seen live on 2026-09-13. Host: 999-multibots-telegraf apps/vibee-editor/render -- crm-client-setup-tool.ts (table crm_client_profiles, ensureProfileTable, setupClient, clientProfileFor, tool crm_client_profile), crm-client-workspace-tools.ts (tool crm_clients), crm-touch-tools.ts","health":"ok","tokens":621,"nodes":94,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3740,"rust":2148,"verilog":6784,"verilog_hir":657,"zig":2666},"repo":"t27","kinds":{"Module":3,"ConstDecl":27,"ExprLiteral":29,"StructDecl":1,"ExprIdentifier":11,"FnDecl":4,"ExprReturn":6,"ExprBinary":3,"ExprUnary":1,"ExprFieldAccess":2,"StmtIf":2,"TestBlock":5},"tags":["domain/other","has/functions","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct and 27 constants. Carries 5 tests. 141 lines compile to 621 tokens and 94 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/automation/crm-client-workspace.t27","category":"specs/automation","name":"crm-client-workspace","module":"automation","lines":153,"bytes":9386,"description":"specs/automation/crm-client-workspace.t27 -- one CRM workspace PER CLIENT: a dashboard and a conversation thread of the seller ABOUT one client, instead of one thread and one flat list for everybody. Written after the owner said (2026-09-13) that every client's chat lands in the same place. Host: 999-multibots-telegraf apps/vibee-editor -- render: agent_messages.thread (conversation.ts), body.client / ?client= on the four /api/agent routes (routes.ts), clientContextBlock in","health":"ok","tokens":736,"nodes":94,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2613,"rust":2107,"verilog":3787,"verilog_hir":399,"zig":2212},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":39,"StructDecl":1,"ExprIdentifier":7,"FnDecl":1,"StmtLocal":1,"ExprBinary":4,"ExprUnary":1},"tags":["domain/other","has/functions","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 1 function, 1 struct and 39 constants. 153 lines compile to 736 tokens and 94 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/automation/crm-duet.t27","category":"specs/automation","name":"crm-duet","module":"automation","lines":309,"bytes":18469,"description":"specs/automation/crm-duet.t27 -- a REAL Telegram dialogue between two agents: the owner's seller agent (from @t27_dev, 144022504) sells every function of the bot to a connected seller acting as a new buyer (@playom, 435572800, answered by a persona model from HER session), and the content offered is for HER real game -- Leela Chakra (@leela_chakra_ai_bot, mini app t27.ai/leela, 72 planes, entry with a six, ruleset classic). Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-duet-tool.ts -- owner-only","health":"ok","tokens":1359,"nodes":145,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3687,"rust":3619,"verilog":5189,"verilog_hir":335,"zig":3645},"repo":"t27","kinds":{"Module":1,"ConstDecl":70,"ExprLiteral":70,"StructDecl":1,"ExprIdentifier":2,"FnDecl":1},"tags":["domain/other","has/functions","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 1 function, 1 struct and 70 constants. 309 lines compile to 1,359 tokens and 145 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/automation/crm-lead-magnet.t27","category":"specs/automation","name":"crm-lead-magnet","module":"automation","lines":136,"bytes":7040,"description":"specs/automation/crm-lead-magnet.t27 -- the CRM lead magnet: a person's own Telegram photo redrawn as a vertical 9:16 story portrait and given away free, to show the AI assistant doing something for THEM before anything is sold. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-deliver-tool.ts (the tool crm_deliver_photo, gift mode by default), src/kie-image.ts (editInputFor), src/agent/tools.ts (leadAvatarUrl: owner session first, bot API second),","health":"ok","tokens":667,"nodes":102,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3100,"rust":2413,"verilog":6129,"verilog_hir":283,"zig":2743},"repo":"t27","kinds":{"Module":1,"ConstDecl":40,"ExprLiteral":40,"StructDecl":3,"ExprIdentifier":13,"TestBlock":5},"tags":["domain/other","has/constants-only","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 structs and 40 constants. Carries 5 tests. 136 lines compile to 667 tokens and 102 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 6.0 KB. Clean through every layer."},{"path":"specs/automation/crm-sellers.t27","category":"specs/automation","name":"crm-sellers","module":"automation","lines":114,"bytes":6358,"description":"specs/automation/crm-sellers.t27 -- WHO the CRM works for: every person with a connected Telegram account (a row in tg_sessions), not the one platform owner. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/telegram-tools.ts (requireSeller: the gate the CRM tools ask), src/agent/crm-playbook.ts (the seller's playbook is shown to every seller), src/agent/crm-offer-tool.ts (an offer to yourself is refused against the CALLER, not the owner), src/agent/crm-sellers-tool.ts (the tool","health":"ok","tokens":503,"nodes":81,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3089,"rust":1943,"verilog":5725,"verilog_hir":332,"zig":2253},"repo":"t27","kinds":{"Module":1,"ConstDecl":29,"ExprLiteral":29,"StructDecl":3,"ExprIdentifier":9,"FnDecl":1,"ExprReturn":1,"ExprBinary":1,"ExprFieldAccess":2,"TestBlock":5},"tags":["domain/other","has/functions","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function, 3 structs and 29 constants. Carries 5 tests. 114 lines compile to 503 tokens and 81 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"specs/automation/inngest-probe-suite.t27","category":"specs/automation","name":"inngest-probe-suite","module":"automation","lines":115,"bytes":6126,"description":"specs/automation/inngest-probe-suite.t27 -- safe probe of every served Inngest function of 999-multibots-telegraf, started by the admin command /inngest_probe in the bot. Host: 999-multibots-telegraf src/inngest_app/probe/probeSuite.ts (the logic), src/inngest_app/probe/inngestProbeClient.ts (the one GraphQL mutation), src/commands/inngestProbeCommand.ts (the Telegram command). The per-function expectation lives in the manifest (probe_expect) and on each","health":"ok","tokens":589,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2763,"rust":2199,"verilog":5421,"verilog_hir":291,"zig":2428},"repo":"t27","kinds":{"Module":1,"ConstDecl":27,"ExprLiteral":24,"ExprIdentifier":21,"StructDecl":3,"TestBlock":3},"tags":["domain/other","has/constants-only","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 structs and 27 constants. Carries 3 tests. 115 lines compile to 589 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"specs/automation/inngest-queen-scheduler.t27","category":"specs/automation","name":"inngest-queen-scheduler","module":"automation","lines":91,"bytes":5642,"description":"specs/automation/inngest-queen-scheduler.t27 -- every cron and every skill card of this repository (specs/crons, specs/skills) held as one Inngest app that the Queen's runtime serves. Host: gHashTag/BrowserOS trios/agent-server apps/server/src/inngest/ (the app), mounted on the same Hono server that serves /queen/*; the Inngest server is the self-hosted `inngest` of Railway project 999 (private address INNGEST_BASE_URL), reachable to people and bees through the MCP face described by specs/tools/mcp/inngest-dev.t27.","health":"ok","tokens":320,"nodes":73,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2036,"rust":1950,"verilog":3218,"verilog_hir":299,"zig":2146},"repo":"t27","kinds":{"Module":1,"ConstDecl":36,"ExprLiteral":33,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 36 constants. 91 lines compile to 320 tokens and 73 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/automation/leela-agent-link.t27","category":"specs/automation","name":"leela-agent-link","module":"automation","lines":116,"bytes":6952,"description":"specs/automation/leela-agent-link.t27 -- HOW a connected seller is linked to her editorial agent in the Leela bot (@leela_chakra_ai_bot), and WHY the agent answered nobody before. Host (the agent side): gHashTag/leela apps/bot/src/editorial.ts -- commands /agent_claim, /agent_claims, /agent_approve <32-hex id>, /agent_revoke, /agent; owners come from LEELA_AGENT_OWNERS (else LEELA_STARS_OPERATORS); the target username is LEELA_AGENT_USERNAME (default \"playom\"); store editorial-store.ts on the LEELA_DB volume.","health":"ok","tokens":577,"nodes":102,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3195,"rust":1931,"verilog":6040,"verilog_hir":344,"zig":2416},"repo":"t27","kinds":{"Module":1,"ConstDecl":34,"ExprLiteral":34,"StructDecl":1,"ExprIdentifier":12,"FnDecl":1,"ExprReturn":1,"ExprBinary":5,"ExprFieldAccess":6,"ExprUnary":2,"TestBlock":5},"tags":["domain/other","has/functions","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function, 1 struct and 34 constants. Carries 5 tests. 116 lines compile to 577 tokens and 102 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.9 KB. Clean through every layer."},{"path":"specs/automation/wrapup-auto.t27","category":"specs/automation","name":"wrapup-auto","module":"automation","lines":51,"bytes":1627,"description":null,"health":"ok","tokens":162,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1334,"rust":671,"verilog":2777,"verilog_hir":265,"zig":733},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":11,"TestBlock":1},"tags":["domain/other","has/constants-only","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 structs and 2 constants. Carries 1 test. 51 lines compile to 162 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/base/debounce.t27","category":"specs/base","name":"debounce","module":"base-debounce","lines":99,"bytes":2655,"description":"base/debounce.t27 — φ-Structured Debouncing Trinity S³AI — Rate Limiting and Debouncing","health":"ok","tokens":242,"nodes":88,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2722,"rust":950,"verilog":4549,"verilog_hir":610,"zig":1419},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":4,"ExprLiteral":14,"StructDecl":1,"FnDecl":4,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":9,"StmtIf":1,"ExprUnary":1,"ExprIdentifier":15,"StmtLocal":4,"ExprCall":8,"ExprBinary":7,"StmtAssign":2,"TestBlock":3,"StmtExpr":5,"InvariantBlock":1},"tags":["domain/base","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct and 4 constants. Carries 3 tests and 1 invariant. 99 lines compile to 242 tokens and 88 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/base/ops.t27","category":"specs/base","name":"ops","module":"tritype-ops","lines":1511,"bytes":47985,"description":"ops.t27 — Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","health":"warn","tokens":7456,"nodes":2763,"depth":16,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":35892,"rust":5106,"verilog":64855,"verilog_hir":1991,"zig":33464},"repo":"t27","kinds":{"Module":66,"ConstDecl":9,"ExprLiteral":199,"EnumDecl":1,"EnumVariant":3,"ExprIdentifier":357,"FnDecl":32,"StmtLocal":57,"ExprBinary":92,"ExprCall":580,"ExprReturn":40,"ExprIndex":3,"StructDecl":1,"ExprEnumValue":526,"StmtIf":13,"StmtAssign":57,"ExprUnary":220,"ExprStructLit":1,"ExprFieldAccess":20,"ExprSwitch":1,"ExprIf":9,"StmtWhile":1,"TestBlock":94,"StmtExpr":253,"ExprArrayLiteral":14,"StmtFor":45,"InvariantBlock":48,"BenchBlock":21},"tags":["domain/base","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/switch","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 32 functions, 1 struct, 1 enum and 9 constants. Carries 94 tests, 48 invariants and 21 benches. 1511 lines compile to 7,456 tokens and 2,763 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 63.3 KB. Compiles with 1 type error."},{"path":"specs/base/ring_32.t27","category":"specs/base","name":"ring_32","module":"base-ring-32","lines":25,"bytes":596,"description":"base/ring_32.t27 — Ring 32 Definition","health":"ok","tokens":78,"nodes":21,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1282,"rust":329,"verilog":2206,"verilog_hir":253,"zig":781},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":3,"ExprLiteral":4,"ExprIdentifier":3,"TestBlock":1,"StmtExpr":2,"ExprCall":2,"ExprBinary":2,"InvariantBlock":1,"ExprFieldAccess":1},"tags":["domain/base","has/constants-only","has/imports","has/invariants","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 constants. Carries 1 test and 1 invariant. 25 lines compile to 78 tokens and 21 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/base/seed.t27","category":"specs/base","name":"seed","module":"seed","lines":93,"bytes":2626,"description":"seed.t27 — Minimal Golden Seed for E2E CI (#150)","health":"ok","tokens":409,"nodes":137,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2883,"rust":596,"verilog":4143,"verilog_hir":371,"zig":1850},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":7,"EnumDecl":1,"EnumVariant":3,"FnDecl":2,"ExprReturn":2,"ExprSwitch":4,"ExprIdentifier":15,"ExprEnumValue":27,"TestBlock":5,"StmtExpr":11,"ExprUnary":8,"ExprCall":28,"InvariantBlock":2,"ExprBinary":3,"ExprFieldAccess":3},"tags":["domain/base","has/enums","has/functions","has/invariants","has/switch","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 enum and 15 constants. Carries 5 tests and 2 invariants. 93 lines compile to 409 tokens and 137 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/base/ternary_add.t27","category":"specs/base","name":"ternary_add","module":"ternary_add","lines":413,"bytes":14376,"description":"ternary_add.t27 — Balanced Ternary Addition Formal Spec Ring 043 — Formal carry propagation invariants, closure, range formula","health":"ok","tokens":1722,"nodes":311,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7495,"rust":1292,"verilog":16385,"verilog_hir":802,"zig":9474},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"StructDecl":1,"ExprIdentifier":37,"FnDecl":8,"StmtLocal":9,"ExprBinary":17,"ExprCall":11,"StmtIf":3,"ExprLiteral":21,"ExprReturn":11,"ExprStructLit":3,"ExprFieldAccess":6,"ExprIf":6,"ExprEnumValue":19,"ExprUnary":6,"StmtWhile":2,"StmtAssign":2,"ExprSwitch":2,"ConstDecl":6,"ExprArrayLiteral":1,"StmtFor":2,"TestBlock":32,"StmtExpr":80,"InvariantBlock":11,"BenchBlock":4},"tags":["domain/base","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 8 functions, 1 struct and 6 constants. Carries 32 tests, 11 invariants and 4 benches. 413 lines compile to 1,722 tokens and 311 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 16.0 KB. Clean through every layer."},{"path":"specs/base/ternary_encoding.t27","category":"specs/base","name":"ternary_encoding","module":"TernaryEncoding","lines":415,"bytes":16507,"description":"t27/specs/base/ternary_encoding.t27 Ternary Encoding/Decoding Specification Ring 065 - Encoding schemes for ternary data representation Defines how binary data maps to ternary and vice versa","health":"warn","tokens":1762,"nodes":397,"depth":12,"loss":39,"tcErrors":8,"failedBackends":[],"outBytes":{"c":7138,"rust":3807,"verilog":12824,"verilog_hir":1533,"zig":5014},"repo":"t27","kinds":{"Module":19,"UseDecl":1,"ConstDecl":9,"ExprLiteral":53,"FnDecl":13,"StmtIf":8,"ExprBinary":44,"ExprIdentifier":130,"ExprReturn":15,"ExprArrayLiteral":3,"StmtLocal":17,"StmtWhile":6,"ExprCall":15,"StmtAssign":28,"ExprIndex":9,"ExprUnary":2,"StructDecl":1,"ExprFieldAccess":6,"TestBlock":10,"InvariantBlock":5,"BenchBlock":3},"tags":["domain/base","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 9 constants. Carries 10 tests, 5 invariants and 3 benches. 415 lines compile to 1,762 tokens and 397 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Compiles with 39 items dropped by error recovery and 8 type errors."},{"path":"specs/base/ternary_memory.t27","category":"specs/base","name":"ternary_memory","module":"TernaryMemory","lines":417,"bytes":15836,"description":"t27/specs/base/ternary_memory.t27 Ternary Memory Specification Ring 066 - Ternary memory cell and array operations Defines how trits are stored and accessed in memory","health":"warn","tokens":1699,"nodes":370,"depth":11,"loss":42,"tcErrors":3,"failedBackends":[],"outBytes":{"c":7995,"rust":4260,"verilog":13649,"verilog_hir":1832,"zig":5785},"repo":"t27","kinds":{"Module":13,"UseDecl":1,"ConstDecl":10,"ExprLiteral":37,"StructDecl":3,"ExprIdentifier":111,"FnDecl":14,"ExprReturn":22,"ExprStructLit":1,"ExprFieldAccess":44,"StmtIf":9,"ExprBinary":25,"StmtAssign":23,"ExprCall":13,"StmtLocal":9,"StmtWhile":3,"ExprIndex":9,"ExprUnary":4,"TestBlock":9,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/base","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 14 functions, 3 structs and 10 constants. Carries 9 tests, 6 invariants and 4 benches. 417 lines compile to 1,699 tokens and 370 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.3 KB. Compiles with 42 items dropped by error recovery and 3 type errors."},{"path":"specs/base/types.t27","category":"specs/base","name":"types","module":"tritype-base","lines":1679,"bytes":55561,"description":"types.t27 — Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","health":"warn","tokens":9416,"nodes":3759,"depth":11,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":45449,"rust":6976,"verilog":82572,"verilog_hir":2958,"zig":42861},"repo":"t27","kinds":{"Module":79,"ConstDecl":48,"ExprLiteral":454,"EnumDecl":1,"EnumVariant":3,"ExprIdentifier":790,"StructDecl":1,"FnDecl":35,"ExprReturn":49,"ExprSwitch":11,"ExprEnumValue":421,"ExprBinary":150,"StmtIf":19,"StmtLocal":176,"ExprCall":660,"ExprUnary":161,"StmtAssign":134,"ExprStructLit":2,"ExprFieldAccess":60,"ExprArrayLiteral":29,"StmtFor":57,"ExprIndex":51,"StmtBreak":1,"ExprIf":10,"TestBlock":66,"StmtExpr":218,"InvariantBlock":47,"BenchBlock":26},"tags":["domain/base","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/switch","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 35 functions, 1 struct, 1 enum and 48 constants. Carries 66 tests, 47 invariants and 26 benches. 1679 lines compile to 9,416 tokens and 3,759 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 80.6 KB. Compiles with 3 type errors."},{"path":"specs/benchmarks/bench_main.t27","category":"specs/benchmarks","name":"bench_main","module":null,"lines":95,"bytes":2643,"description":null,"health":"warn","tokens":8,"nodes":3,"depth":2,"loss":30,"tcErrors":0,"failedBackends":[],"outBytes":{"c":712,"rust":66,"verilog":1759,"verilog_hir":243,"zig":232},"repo":"t27","kinds":{"Module":1,"TestBlock":2},"tags":["domain/testing","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests. 95 lines compile to 8 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Compiles with 30 items dropped by error recovery."},{"path":"specs/benchmarks/bench_nn.t27","category":"specs/benchmarks","name":"bench_nn","module":null,"lines":166,"bytes":3215,"description":null,"health":"warn","tokens":580,"nodes":10,"depth":3,"loss":68,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1156,"rust":258,"verilog":2522,"verilog_hir":243,"zig":275},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":4,"ConstDecl":1,"TestBlock":3},"tags":["domain/testing","has/constants-only","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 struct and 1 constant. Carries 3 tests. 166 lines compile to 580 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 68 items dropped by error recovery."},{"path":"specs/benchmarks/gf16_bfloat16_nmse.t27","category":"specs/benchmarks","name":"gf16_bfloat16_nmse","module":null,"lines":153,"bytes":4300,"description":null,"health":"warn","tokens":683,"nodes":13,"depth":4,"loss":56,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1584,"rust":66,"verilog":3612,"verilog_hir":243,"zig":994},"repo":"t27","kinds":{"Module":1,"TestBlock":3,"InvariantBlock":4,"StmtExpr":3,"BenchBlock":1,"ExprIdentifier":1},"tags":["domain/testing","has/benches","has/invariants","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. Carries 3 tests, 4 invariants and 1 bench. 153 lines compile to 683 tokens and 13 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Compiles with 56 items dropped by error recovery."},{"path":"specs/benchmarks/ternary_vs_binary.t27","category":"specs/benchmarks","name":"ternary_vs_binary","module":null,"lines":92,"bytes":2092,"description":null,"health":"warn","tokens":81,"nodes":21,"depth":6,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1068,"rust":239,"verilog":2460,"verilog_hir":243,"zig":516},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":3,"TestBlock":2,"StmtLocal":2,"ExprStructLit":1,"ExprFieldAccess":3,"ExprLiteral":7,"ExprArrayLiteral":1},"tags":["domain/testing","has/structs","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 1 struct. Carries 2 tests. 92 lines compile to 81 tokens and 21 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Compiles with 65 items dropped by error recovery."},{"path":"specs/boards/arty_a7.t27","category":"specs/boards","name":"arty_a7","module":"BoardArtyA7","lines":288,"bytes":7435,"description":"t27/specs/boards/arty_a7.t27 Digilent Arty A7 Board Profile Artix-7 XC7A35T/XC7A100T, 100MHz clock, 4 LEDs, 4 buttons, UART","health":"ok","tokens":1121,"nodes":141,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6062,"rust":3223,"verilog":9480,"verilog_hir":450,"zig":6839},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":25,"ExprLiteral":14,"StructDecl":1,"ExprIdentifier":24,"FnDecl":5,"ExprReturn":5,"ExprBinary":1,"TestBlock":17,"StmtExpr":35,"InvariantBlock":11},"tags":["domain/fpga","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions, 1 struct and 25 constants. Carries 17 tests and 11 invariants. 288 lines compile to 1,121 tokens and 141 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 9.3 KB. Clean through every layer."},{"path":"specs/boards/wukong_v1.t27","category":"specs/boards","name":"wukong_v1","module":"BoardWukongV1","lines":298,"bytes":12121,"description":"t27/specs/boards/wukong_v1.t27 QMTech Wukong V1 / XC7A200T-FGG676 -- the board actually on this bench. WHY THIS EXISTS. `specs/boards/` held three files before this one: `arty_a7.t27` (a different board, csg324) and `xc7a100t_full.t27` / `xc7a100t_minimal.t27` -- both for an XC7A100T. The chip on every one of the three connected boards is an XC7A200T; `fpga/HARDWARE_SSOT.md` recorded that","health":"ok","tokens":672,"nodes":197,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5786,"rust":2228,"verilog":10009,"verilog_hir":663,"zig":5683},"repo":"t27","kinds":{"Module":9,"ConstDecl":26,"ExprLiteral":37,"FnDecl":7,"StmtIf":8,"ExprBinary":13,"ExprIdentifier":25,"ExprReturn":15,"TestBlock":15,"StmtExpr":30,"InvariantBlock":11,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions and 26 constants. Carries 15 tests, 11 invariants and 1 bench. 298 lines compile to 672 tokens and 197 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 9.8 KB. Clean through every layer."},{"path":"specs/boards/xc7a100t_full.t27","category":"specs/boards","name":"xc7a100t_full","module":"BoardFullXC7A100T","lines":357,"bytes":9813,"description":"t27/specs/boards/xc7a100t_full.t27 QMTECH XC7A100T-CSG324 Full Board Profile LED + UART + SPI + MAC debug, QMTECH Wukong expansion Note: 22 pins from full QMTECH XDC are missing in prjxray-db","health":"ok","tokens":1514,"nodes":149,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7035,"rust":5043,"verilog":10747,"verilog_hir":410,"zig":8028},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":30,"ExprLiteral":13,"StructDecl":2,"ExprIdentifier":34,"FnDecl":4,"ExprReturn":4,"TestBlock":14,"StmtExpr":40,"InvariantBlock":5},"tags":["domain/fpga","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 2 structs and 30 constants. Carries 14 tests and 5 invariants. 357 lines compile to 1,514 tokens and 149 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 10.5 KB. Clean through every layer."},{"path":"specs/boards/xc7a100t_minimal.t27","category":"specs/boards","name":"xc7a100t_minimal","module":"BoardMinimalXC7A100T","lines":393,"bytes":10805,"description":"t27/specs/boards/xc7a100t_minimal.t27 QMTECH XC7A100T-CSG324 Minimal Board Profile Heartbeat LED + UART loopback, prjxray-verified pins only","health":"warn","tokens":1682,"nodes":318,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":8809,"rust":4729,"verilog":14719,"verilog_hir":693,"zig":10566},"repo":"t27","kinds":{"Module":15,"UseDecl":2,"ConstDecl":26,"ExprLiteral":48,"StructDecl":2,"ExprIdentifier":46,"ExprArrayLiteral":2,"FnDecl":7,"ExprReturn":20,"StmtIf":13,"ExprBinary":15,"ExprFieldAccess":20,"StmtLocal":1,"StmtWhile":1,"ExprCall":1,"ExprIndex":2,"StmtAssign":1,"ExprStructLit":1,"TestBlock":23,"StmtExpr":55,"InvariantBlock":15,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 26 constants. Carries 23 tests, 15 invariants and 2 benches. 393 lines compile to 1,682 tokens and 318 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 1 type error."},{"path":"specs/brain/brain.t27","category":"specs/brain","name":"brain","module":null,"lines":58,"bytes":2867,"description":null,"health":"warn","tokens":27,"nodes":15,"depth":7,"loss":13,"tcErrors":0,"failedBackends":[],"outBytes":{"c":728,"rust":66,"verilog":1839,"verilog_hir":243,"zig":349},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":2,"ExprCall":2,"ExprBinary":2,"ExprFieldAccess":2,"ExprIdentifier":2,"ExprLiteral":2},"tags":["domain/brain","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests. 58 lines compile to 27 tokens and 15 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 13 items dropped by error recovery."},{"path":"specs/brain/bus.t27","category":"specs/brain","name":"bus","module":"brain-bus","lines":17,"bytes":420,"description":"bus.t27 — inter-region messaging contract (spec-first) Message shapes and routing rules expand with region specs.","health":"ok","tokens":47,"nodes":14,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1209,"rust":174,"verilog":2076,"verilog_hir":295,"zig":358},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"FnDecl":1,"ExprReturn":1,"ExprIdentifier":2,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":3},"tags":["domain/brain","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. Carries 1 test. 17 lines compile to 47 tokens and 14 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/brain/cognitive_loop.t27","category":"specs/brain","name":"cognitive_loop","module":"brain-cognitive-loop","lines":17,"bytes":520,"description":"cognitive_loop.t27 — sense → evaluate → decide → act → consolidate (spec-first) Phase timing contract lives in phi_timing.t27; this module holds loop identity constants.","health":"ok","tokens":49,"nodes":14,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1287,"rust":189,"verilog":2138,"verilog_hir":325,"zig":394},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"FnDecl":1,"ExprReturn":1,"ExprIdentifier":2,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":3},"tags":["domain/brain","has/functions","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. Carries 1 test. 17 lines compile to 49 tokens and 14 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/brain/neural_gamma.t27","category":"specs/brain","name":"neural_gamma","module":null,"lines":89,"bytes":2056,"description":null,"health":"warn","tokens":76,"nodes":27,"depth":6,"loss":44,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1241,"rust":254,"verilog":2842,"verilog_hir":243,"zig":648},"repo":"t27","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":4,"TestBlock":4,"StmtExpr":4,"ExprCall":6,"ExprIdentifier":2,"ExprLiteral":4,"ExprBinary":1},"tags":["domain/brain","has/enums","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 1 enum. Carries 4 tests. 89 lines compile to 76 tokens and 27 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Compiles with 44 items dropped by error recovery."},{"path":"specs/brain/phi_timing.t27","category":"specs/brain","name":"phi_timing","module":"brain-phi-timing","lines":80,"bytes":3194,"description":"phi_timing.t27 — phi-structured cognitive cycle timing (spec-first) Phase duration ratios follow INV-1; integer ms sum may differ slightly from 3*base_ms.","health":"ok","tokens":429,"nodes":159,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3562,"rust":1505,"verilog":5674,"verilog_hir":542,"zig":2358},"repo":"t27","kinds":{"Module":1,"ConstDecl":10,"ExprLiteral":8,"EnumDecl":1,"EnumVariant":5,"StructDecl":1,"ExprIdentifier":44,"FnDecl":4,"ExprReturn":4,"ExprStructLit":1,"ExprFieldAccess":6,"StmtLocal":11,"ExprCall":29,"ExprSwitch":1,"ExprBinary":16,"ExprEnumValue":8,"TestBlock":3,"StmtExpr":3,"ExprUnary":3},"tags":["domain/brain","has/enums","has/functions","has/structs","has/switch","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 10 constants. Carries 3 tests. 80 lines compile to 429 tokens and 159 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/brain/unified_state.t27","category":"specs/brain","name":"unified_state","module":"brain-unified-state","lines":94,"bytes":2949,"description":"unified_state.t27 — Trinity Brain unified state (spec-first) Normative types for Strand VI. Zig/C/Verilog are generated under gen/ via t27c.","health":"ok","tokens":373,"nodes":114,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3099,"rust":1824,"verilog":4687,"verilog_hir":401,"zig":1965},"repo":"t27","kinds":{"Module":1,"ConstDecl":8,"ExprLiteral":21,"EnumDecl":2,"EnumVariant":7,"StructDecl":3,"ExprIdentifier":26,"FnDecl":2,"ExprReturn":2,"ExprStructLit":3,"ExprFieldAccess":18,"ExprEnumValue":2,"TestBlock":2,"StmtLocal":1,"ExprCall":7,"StmtExpr":4,"ExprUnary":4,"ExprBinary":1},"tags":["domain/brain","has/enums","has/functions","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 3 structs, 2 enums and 8 constants. Carries 2 tests. 94 lines compile to 373 tokens and 114 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/bus/pubsub.t27","category":"specs/bus","name":"pubsub","module":"bus-pubsub","lines":668,"bytes":17600,"description":"bus/pubsub.t27 — Publish/Subscribe Patterns Pub/sub interface for event-driven communication","health":"warn","tokens":2657,"nodes":961,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":17545,"rust":7427,"verilog":31102,"verilog_hir":2358,"zig":14328},"repo":"t27","kinds":{"Module":33,"UseDecl":5,"ConstDecl":8,"ExprLiteral":143,"StructDecl":11,"ExprIdentifier":213,"FnDecl":28,"ExprReturn":37,"ExprStructLit":15,"ExprFieldAccess":104,"ExprUnary":27,"ExprArrayLiteral":9,"ExprBinary":67,"StmtIf":15,"ExprCall":81,"StmtFor":13,"ExprIndex":9,"StmtLocal":36,"StmtAssign":23,"TestBlock":17,"StmtExpr":41,"ExprEnumValue":3,"InvariantBlock":16,"BenchBlock":7},"tags":["domain/network","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 28 functions, 11 structs and 8 constants. Carries 17 tests, 16 invariants and 7 benches. 668 lines compile to 2,657 tokens and 961 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 30.4 KB. Compiles with 1 type error."},{"path":"specs/bus/schema.t27","category":"specs/bus","name":"schema","module":"bus-schema","lines":657,"bytes":17052,"description":"bus/schema.t27 — Event Type Definitions Core event types and structures for the event bus","health":"ok","tokens":2568,"nodes":871,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":17523,"rust":8067,"verilog":28706,"verilog_hir":1856,"zig":14100},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":28,"ExprLiteral":134,"EnumDecl":5,"EnumVariant":28,"StructDecl":12,"ExprIdentifier":174,"FnDecl":20,"ExprReturn":21,"ExprStructLit":12,"ExprFieldAccess":85,"ExprEnumValue":22,"ExprUnary":26,"ExprArrayLiteral":5,"ExprBinary":40,"ExprCall":95,"ExprSwitch":3,"StmtIf":5,"StmtLocal":30,"StmtFor":8,"StmtAssign":16,"TestBlock":19,"StmtExpr":45,"InvariantBlock":17,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 20 functions, 12 structs, 5 enums and 28 constants. Carries 19 tests, 17 invariants and 6 benches. 657 lines compile to 2,568 tokens and 871 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 28.0 KB. Clean through every layer."},{"path":"specs/catalog/discovery.t27","category":"specs/catalog","name":"discovery","module":"catalog_discovery","lines":103,"bytes":5472,"description":"specs/catalog/discovery.t27 -- how the t27.ai catalog finds the repositories that write .t27 Source of truth for scripts/discover-t27-worlds.mjs and .github/workflows/t27-world-scan.yml (gHashTag/trinity, apps/website). The scan reads this file through the vendored compiler (public/t27/t27_compiler.wasm), checks the constant schema and evaluates the test blocks below before it touches GitHub; nothing below is parsed with a regex and no owner, limit or exclusion is typed twice. ASCII only (L3), English only (LANG-EN).","health":"ok","tokens":304,"nodes":144,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2442,"rust":991,"verilog":4587,"verilog_hir":263,"zig":2215},"repo":"t27","kinds":{"Module":1,"ConstDecl":17,"ExprLiteral":38,"ExprIdentifier":22,"TestBlock":5,"StmtExpr":18,"ExprCall":18,"ExprBinary":18,"ExprIndex":7},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 17 constants. Carries 5 tests. 103 lines compile to 304 tokens and 144 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/cloud/railway_deploy.t27","category":"specs/cloud","name":"railway_deploy","module":"cloud-railway-deploy","lines":364,"bytes":9088,"description":"cloud/railway_deploy.t27 — Autonomous Railway Deployment","health":"warn","tokens":1096,"nodes":458,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7346,"rust":2531,"verilog":12556,"verilog_hir":879,"zig":5567},"repo":"t27","kinds":{"Module":5,"UseDecl":3,"ConstDecl":11,"ExprLiteral":98,"StructDecl":4,"EnumDecl":1,"EnumVariant":9,"FnDecl":4,"StmtLocal":16,"ExprIdentifier":77,"StmtAssign":17,"ExprIndex":16,"ExprStructLit":11,"ExprFieldAccess":43,"StmtWhile":2,"ExprBinary":47,"ExprCall":37,"ExprReturn":4,"TestBlock":17,"StmtExpr":27,"StmtIf":1,"InvariantBlock":6,"BenchBlock":1,"StmtFor":1},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions, 4 structs, 1 enum and 11 constants. Carries 17 tests, 6 invariants and 1 bench. 364 lines compile to 1,096 tokens and 458 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Compiles with 1 type error."},{"path":"specs/compiler/diagnostics.t27","category":"specs/compiler","name":"diagnostics","module":"Diagnostics","lines":148,"bytes":4220,"description":null,"health":"ok","tokens":680,"nodes":175,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4674,"rust":2396,"verilog":7845,"verilog_hir":774,"zig":4069},"repo":"t27","kinds":{"Module":4,"EnumDecl":2,"EnumVariant":18,"StructDecl":1,"ExprIdentifier":48,"FnDecl":8,"ExprReturn":11,"ExprStructLit":1,"ExprFieldAccess":9,"ExprBinary":27,"StmtIf":3,"ExprCall":3,"ExprLiteral":4,"TestBlock":11,"StmtExpr":22,"InvariantBlock":3},"tags":["domain/compiler","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions, 1 struct and 2 enums. Carries 11 tests and 3 invariants. 148 lines compile to 680 tokens and 175 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.7 KB. Clean through every layer."},{"path":"specs/compiler/lexer.t27","category":"specs/compiler","name":"lexer","module":"Lexing","lines":583,"bytes":22503,"description":null,"health":"ok","tokens":5304,"nodes":2394,"depth":20,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":20444,"rust":14216,"verilog":30803,"verilog_hir":1722,"zig":19077},"repo":"t27","kinds":{"Module":127,"UseDecl":1,"EnumDecl":1,"EnumVariant":67,"StructDecl":2,"ExprIdentifier":612,"FnDecl":19,"ExprReturn":55,"ExprStructLit":5,"ExprFieldAccess":140,"ExprLiteral":389,"StmtIf":101,"ExprBinary":406,"ExprIndex":142,"StmtLocal":43,"ExprCall":103,"StmtAssign":104,"StmtWhile":10,"ExprArrayLiteral":4,"StmtBreak":4,"TestBlock":16,"StmtExpr":40,"InvariantBlock":3},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 19 functions, 2 structs and 1 enum. Carries 16 tests and 3 invariants. 583 lines compile to 5,304 tokens and 2,394 AST nodes, depth 20. Emits 5 of 5 backends; largest is Verilog at 30.1 KB. Clean through every layer."},{"path":"specs/compiler/linker.t27","category":"specs/compiler","name":"linker","module":"Linking","lines":156,"bytes":4048,"description":null,"health":"ok","tokens":664,"nodes":64,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2576,"rust":1603,"verilog":3984,"verilog_hir":723,"zig":1530},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"EnumDecl":1,"EnumVariant":5,"StructDecl":3,"ExprIdentifier":20,"ConstDecl":2,"ExprLiteral":8,"FnDecl":4,"ExprReturn":3,"ExprStructLit":3,"ExprFieldAccess":13},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 3 structs, 1 enum and 2 constants. 156 lines compile to 664 tokens and 64 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/compiler/meta_compile.t27","category":"specs/compiler","name":"meta_compile","module":"MetaCompilation","lines":70,"bytes":1886,"description":null,"health":"ok","tokens":289,"nodes":92,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2802,"rust":1070,"verilog":4591,"verilog_hir":459,"zig":1891},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":22,"ConstDecl":1,"ExprLiteral":10,"FnDecl":4,"ExprReturn":4,"ExprStructLit":1,"ExprFieldAccess":22,"ExprBinary":10,"TestBlock":4,"StmtExpr":8,"InvariantBlock":2},"tags":["domain/compiler","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct and 1 constant. Carries 4 tests and 2 invariants. 70 lines compile to 289 tokens and 92 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/compiler/mod_structure.t27","category":"specs/compiler","name":"mod_structure","module":"compiler-mod-structure","lines":138,"bytes":4322,"description":"compiler/mod_structure.t27 — Module Structure and Ring Validation Trinity S³AI — Spec-First Architecture","health":"ok","tokens":436,"nodes":164,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3682,"rust":1684,"verilog":4799,"verilog_hir":426,"zig":2226},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":36,"EnumDecl":1,"EnumVariant":4,"StructDecl":1,"FnDecl":3,"StmtLocal":4,"ExprArrayLiteral":1,"StmtExpr":12,"ExprCall":18,"ExprStructLit":6,"ExprFieldAccess":31,"ExprIdentifier":19,"ExprReturn":3,"ExprBinary":16,"TestBlock":2,"InvariantBlock":1},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct, 1 enum and 4 constants. Carries 2 tests and 1 invariant. 138 lines compile to 436 tokens and 164 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.7 KB. Clean through every layer."},{"path":"specs/compiler/optimizer.t27","category":"specs/compiler","name":"optimizer","module":"Optimization","lines":286,"bytes":8976,"description":null,"health":"ok","tokens":1580,"nodes":598,"depth":17,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9038,"rust":6098,"verilog":14555,"verilog_hir":1307,"zig":8579},"repo":"t27","kinds":{"Module":37,"UseDecl":1,"EnumDecl":1,"EnumVariant":6,"StructDecl":2,"ExprIdentifier":145,"FnDecl":13,"ExprReturn":36,"ExprStructLit":3,"ExprFieldAccess":52,"ExprLiteral":89,"ExprBinary":88,"StmtIf":33,"ExprCall":12,"ExprIndex":7,"StmtLocal":13,"StmtWhile":3,"StmtAssign":9,"ExprUnary":1,"TestBlock":14,"StmtExpr":28,"InvariantBlock":5},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 2 structs and 1 enum. Carries 14 tests and 5 invariants. 286 lines compile to 1,580 tokens and 598 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 14.2 KB. Clean through every layer."},{"path":"specs/compiler/parser.t27","category":"specs/compiler","name":"parser","module":"Parsing","lines":1619,"bytes":58114,"description":"specs/compiler/parser.t27 T27 Parser Specification — Self-hosting compiler core This module defines the complete recursive descent parser for the T27 language. It is a 1:1 port of bootstrap/src/compiler.rs Parser to t27 spec format.","health":"ok","tokens":10927,"nodes":3738,"depth":22,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":48560,"rust":38137,"verilog":70607,"verilog_hir":3671,"zig":44759},"repo":"t27","kinds":{"Module":247,"UseDecl":2,"ConstDecl":1,"ExprLiteral":135,"EnumDecl":1,"EnumVariant":32,"StructDecl":2,"ExprIdentifier":999,"FnDecl":51,"StmtLocal":146,"ExprStructLit":2,"StmtAssign":136,"ExprFieldAccess":380,"StmtExpr":338,"ExprCall":647,"ExprReturn":76,"ExprBinary":242,"StmtIf":170,"StmtWhile":40,"StmtBreak":9,"ExprArrayLiteral":1,"ExprIndex":1,"ExprUnary":69,"StmtContinue":1,"TestBlock":10},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 51 functions, 2 structs, 1 enum and 1 constant. Carries 10 tests. 1619 lines compile to 10,927 tokens and 3,738 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 69.0 KB. Clean through every layer."},{"path":"specs/compiler/pipeline.t27","category":"specs/compiler","name":"pipeline","module":"Pipeline","lines":170,"bytes":4503,"description":null,"health":"ok","tokens":710,"nodes":202,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4528,"rust":2228,"verilog":8208,"verilog_hir":620,"zig":4150},"repo":"t27","kinds":{"Module":7,"UseDecl":7,"EnumDecl":1,"EnumVariant":6,"StructDecl":2,"ExprIdentifier":31,"FnDecl":6,"ExprReturn":12,"ExprStructLit":3,"ExprFieldAccess":33,"ExprLiteral":38,"StmtIf":6,"ExprBinary":11,"TestBlock":13,"StmtExpr":24,"InvariantBlock":2},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 2 structs and 1 enum. Carries 13 tests and 2 invariants. 170 lines compile to 710 tokens and 202 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.0 KB. Clean through every layer."},{"path":"specs/compiler/stdlib.t27","category":"specs/compiler","name":"stdlib","module":"Stdlib","lines":663,"bytes":16035,"description":null,"health":"warn","tokens":3694,"nodes":1367,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15542,"rust":10188,"verilog":29202,"verilog_hir":4222,"zig":15870},"repo":"t27","kinds":{"Module":43,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":6,"ExprIdentifier":336,"ConstDecl":3,"ExprLiteral":172,"FnDecl":50,"ExprReturn":72,"ExprStructLit":14,"ExprFieldAccess":183,"ExprArrayLiteral":8,"StmtIf":25,"ExprBinary":91,"StmtAssign":86,"ExprIndex":70,"StmtLocal":35,"StmtWhile":17,"ExprUnary":2,"ExprCall":11,"TestBlock":40,"StmtExpr":88,"InvariantBlock":9},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 50 functions, 6 structs, 1 enum and 3 constants. Carries 40 tests and 9 invariants. 663 lines compile to 3,694 tokens and 1,367 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 28.5 KB. Compiles with 1 type error."},{"path":"specs/compiler/typechecker.t27","category":"specs/compiler","name":"typechecker","module":"TypeChecking","lines":694,"bytes":24448,"description":null,"health":"ok","tokens":4983,"nodes":1777,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":22361,"rust":16763,"verilog":36100,"verilog_hir":2520,"zig":22869},"repo":"t27","kinds":{"Module":121,"UseDecl":2,"EnumDecl":1,"EnumVariant":20,"StructDecl":6,"ExprIdentifier":506,"ConstDecl":3,"ExprLiteral":159,"FnDecl":32,"ExprReturn":119,"ExprStructLit":8,"ExprFieldAccess":168,"ExprArrayLiteral":5,"StmtIf":109,"ExprBinary":220,"StmtAssign":21,"ExprIndex":39,"StmtLocal":29,"StmtWhile":10,"ExprCall":69,"ExprUnary":8,"StmtExpr":81,"TestBlock":35,"InvariantBlock":6},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 32 functions, 6 structs, 1 enum and 3 constants. Carries 35 tests and 6 invariants. 694 lines compile to 4,983 tokens and 1,777 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 35.3 KB. Clean through every layer."},{"path":"specs/config/load.t27","category":"specs/config","name":"load","module":"config-load","lines":606,"bytes":16917,"description":"config/load.t27 — Config Load/Save Specification Configuration file I/O, merging, validation","health":"warn","tokens":2645,"nodes":707,"depth":10,"loss":6,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14662,"rust":5668,"verilog":23660,"verilog_hir":1797,"zig":11841},"repo":"t27","kinds":{"Module":14,"UseDecl":2,"ConstDecl":10,"ExprLiteral":63,"EnumDecl":3,"EnumVariant":9,"StructDecl":6,"ExprIdentifier":152,"FnDecl":18,"StmtLocal":45,"ExprCall":95,"ExprReturn":18,"ExprFieldAccess":79,"ExprStructLit":11,"ExprEnumValue":13,"ExprUnary":30,"ExprArrayLiteral":6,"StmtFor":9,"StmtAssign":18,"ExprBinary":24,"StmtIf":4,"ExprIf":1,"ExprSwitch":1,"TestBlock":12,"StmtExpr":39,"InvariantBlock":20,"BenchBlock":5},"tags":["domain/tools","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 18 functions, 6 structs, 3 enums and 10 constants. Carries 12 tests, 20 invariants and 5 benches. 606 lines compile to 2,645 tokens and 707 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 23.1 KB. Compiles with 6 items dropped by error recovery."},{"path":"specs/config/migrate.t27","category":"specs/config","name":"migrate","module":"config-migrate","lines":663,"bytes":18030,"description":"config/migrate.t27 — Config Migration Specification Version detection, upgrade, compatibility handling","health":"warn","tokens":2665,"nodes":442,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10895,"rust":7917,"verilog":15625,"verilog_hir":2689,"zig":7875},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":6,"ExprLiteral":31,"EnumDecl":3,"EnumVariant":14,"StructDecl":6,"ExprIdentifier":145,"FnDecl":28,"ExprReturn":29,"ExprBinary":3,"ExprStructLit":10,"ExprFieldAccess":60,"ExprEnumValue":6,"ExprUnary":13,"ExprArrayLiteral":12,"ExprCall":23,"StmtLocal":22,"StmtIf":1,"StmtFor":7,"StmtAssign":11,"ExprIf":1,"TestBlock":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 28 functions, 6 structs, 3 enums and 6 constants. Carries 1 test. 663 lines compile to 2,665 tokens and 442 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/config/paths.t27","category":"specs/config","name":"paths","module":"config-paths","lines":641,"bytes":15895,"description":"config/paths.t27 — Config Paths Specification Path resolution, directory creation, validation","health":"ok","tokens":2464,"nodes":896,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15854,"rust":6625,"verilog":25249,"verilog_hir":1852,"zig":12671},"repo":"t27","kinds":{"Module":29,"UseDecl":1,"ConstDecl":9,"ExprLiteral":114,"EnumDecl":2,"EnumVariant":11,"StructDecl":3,"ExprIdentifier":200,"FnDecl":25,"ExprReturn":37,"ExprStructLit":8,"ExprFieldAccess":67,"StmtLocal":41,"ExprIf":4,"ExprBinary":53,"ExprCall":106,"StmtIf":18,"ExprEnumValue":16,"ExprIndex":9,"StmtFor":10,"StmtAssign":20,"ExprUnary":24,"ExprArrayLiteral":5,"TestBlock":14,"StmtExpr":42,"InvariantBlock":23,"BenchBlock":5},"tags":["domain/tools","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 25 functions, 3 structs, 2 enums and 9 constants. Carries 14 tests, 23 invariants and 5 benches. 641 lines compile to 2,464 tokens and 896 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 24.7 KB. Clean through every layer."},{"path":"specs/config/schema.t27","category":"specs/config","name":"schema","module":"config-schema","lines":653,"bytes":17162,"description":"config/schema.t27 — Config Schema Specification Configuration structures for providers, agents, LSP","health":"ok","tokens":2657,"nodes":810,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16625,"rust":7989,"verilog":27203,"verilog_hir":2297,"zig":13418},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"ConstDecl":10,"ExprLiteral":86,"EnumDecl":2,"EnumVariant":8,"StructDecl":12,"ExprIdentifier":179,"FnDecl":27,"ExprReturn":26,"ExprStructLit":14,"ExprFieldAccess":106,"ExprEnumValue":17,"StmtLocal":40,"ExprCall":94,"ExprUnary":40,"ExprArrayLiteral":17,"ExprBinary":17,"StmtFor":8,"StmtIf":1,"StmtAssign":15,"TestBlock":17,"StmtExpr":41,"InvariantBlock":18,"BenchBlock":4},"tags":["domain/tools","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 27 functions, 12 structs, 2 enums and 10 constants. Carries 17 tests, 18 invariants and 4 benches. 653 lines compile to 2,657 tokens and 810 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 26.6 KB. Clean through every layer."},{"path":"specs/conformance/e2e_scenarios.t27","category":"specs/conformance","name":"e2e_scenarios","module":null,"lines":265,"bytes":7820,"description":null,"health":"warn","tokens":1499,"nodes":425,"depth":10,"loss":67,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5155,"rust":321,"verilog":8613,"verilog_hir":243,"zig":4682},"repo":"t27","kinds":{"Module":1,"TestBlock":9,"StmtLocal":42,"ExprCall":75,"ExprLiteral":65,"ExprIdentifier":68,"StmtAssign":3,"ExprFieldAccess":45,"StmtExpr":29,"ExprUnary":55,"ExprArrayLiteral":4,"ExprStructLit":9,"ExprEnumValue":10,"ExprBinary":9,"StructDecl":1},"tags":["domain/testing","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 struct. Carries 9 tests. 265 lines compile to 1,499 tokens and 425 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.4 KB. Compiles with 67 items dropped by error recovery."},{"path":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27","category":"specs/crons","name":"999-multibots-telegraf-agent-autopilot-L1118","module":"cron_999_multibots_telegraf_agent_autopilot_L1118","lines":27,"bytes":1646,"description":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27 -- cron timer/999-multibots-telegraf/agent-autopilot-L1118 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/agent-autopilot-L1118). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/scripts/agent-autopilot.ts#L1118. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1465,"rust":1040,"verilog":2297,"verilog_hir":327,"zig":1185},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 27 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27","category":"specs/crons","name":"999-multibots-telegraf-bot-owner-billing-L474","module":"cron_999_multibots_telegraf_bot_owner_billing_L474","lines":27,"bytes":1636,"description":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27 -- cron timer/999-multibots-telegraf/bot-owner-billing-L474 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/bot-owner-billing-L474). The schedule was read from 999-multibots-telegraf:src/services/bot-owner-billing.ts#L474. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1474,"rust":1045,"verilog":2304,"verilog_hir":329,"zig":1191},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 27 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27","category":"specs/crons","name":"999-multibots-telegraf-check-stuck-trainings","module":"cron_999_multibots_telegraf_check_stuck_trainings","lines":26,"bytes":1550,"description":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27 -- cron inngest/999-multibots-telegraf/check-stuck-trainings Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/check-stuck-trainings). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/training/checkStuckTrainings.ts#L53. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1439,"rust":1017,"verilog":2271,"verilog_hir":327,"zig":1166},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 26 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-ci.t27","category":"specs/crons","name":"999-multibots-telegraf-ci","module":"cron_999_multibots_telegraf_ci","lines":26,"bytes":1408,"description":"specs/crons/999-multibots-telegraf-ci.t27 -- cron github-actions/999-multibots-telegraf/ci Source of truth for the job card on t27.ai (#/crons?cron=github-actions/999-multibots-telegraf/ci). The schedule was read from 999-multibots-telegraf:.github/workflows/ci.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1316,"rust":970,"verilog":2186,"verilog_hir":289,"zig":1100},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 26 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27","category":"specs/crons","name":"999-multibots-telegraf-crmProactive-L375","module":"cron_999_multibots_telegraf_crmProactive_L375","lines":27,"bytes":1554,"description":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27 -- cron timer/999-multibots-telegraf/crmProactive-L375 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/crmProactive-L375). The schedule was read from 999-multibots-telegraf:src/services/crmProactive.ts#L375. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1397,"rust":988,"verilog":2237,"verilog_hir":319,"zig":1129},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 27 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27","category":"specs/crons","name":"999-multibots-telegraf-daily-sales-advisor","module":"cron_999_multibots_telegraf_daily_sales_advisor","lines":26,"bytes":1540,"description":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27 -- cron inngest/999-multibots-telegraf/daily-sales-advisor Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/daily-sales-advisor). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L56. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1430,"rust":1016,"verilog":2266,"verilog_hir":323,"zig":1163},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 26 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27","category":"specs/crons","name":"999-multibots-telegraf-generate-jobs-L164","module":"cron_999_multibots_telegraf_generate_jobs_L164","lines":26,"bytes":1441,"description":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27 -- cron timer/999-multibots-telegraf/generate-jobs-L164 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/generate-jobs-L164). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/generate-jobs.ts#L164. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1282,"rust":855,"verilog":2104,"verilog_hir":321,"zig":994},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 26 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-health-check.t27","category":"specs/crons","name":"999-multibots-telegraf-health-check","module":"cron_999_multibots_telegraf_health_check","lines":25,"bytes":1325,"description":"specs/crons/999-multibots-telegraf-health-check.t27 -- cron inngest/999-multibots-telegraf/health-check Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/health-check). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L243. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1221,"rust":821,"verilog":2055,"verilog_hir":309,"zig":958},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-log-monitor.t27","category":"specs/crons","name":"999-multibots-telegraf-log-monitor","module":"cron_999_multibots_telegraf_log_monitor","lines":25,"bytes":1330,"description":"specs/crons/999-multibots-telegraf-log-monitor.t27 -- cron inngest/999-multibots-telegraf/log-monitor Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/log-monitor). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L360. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1236,"rust":840,"verilog":2072,"verilog_hir":307,"zig":976},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27","category":"specs/crons","name":"999-multibots-telegraf-notificationHandler-L318","module":"cron_999_multibots_telegraf_notificationHandler_L318","lines":27,"bytes":1521,"description":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27 -- cron timer/999-multibots-telegraf/notificationHandler-L318 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/notificationHandler-L318). The schedule was read from 999-multibots-telegraf:src/handlers/notificationHandler.ts#L318. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1357,"rust":920,"verilog":2183,"verilog_hir":333,"zig":1068},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 27 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27","category":"specs/crons","name":"999-multibots-telegraf-notificationHandler-L324","module":"cron_999_multibots_telegraf_notificationHandler_L324","lines":26,"bytes":1398,"description":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27 -- cron timer/999-multibots-telegraf/notificationHandler-L324 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/notificationHandler-L324). The schedule was read from 999-multibots-telegraf:src/handlers/notificationHandler.ts#L324. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1245,"rust":794,"verilog":2055,"verilog_hir":333,"zig":939},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 26 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27","category":"specs/crons","name":"999-multibots-telegraf-periodic-webhook-health-check","module":"cron_999_multibots_telegraf_periodic_webhook_health_check","lines":25,"bytes":1422,"description":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27 -- cron inngest/999-multibots-telegraf/periodic-webhook-health-check Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/periodic-webhook-health-check). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/webhookHealthGuard.ts#L218. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1331,"rust":863,"verilog":2131,"verilog_hir":343,"zig":1017},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27","category":"specs/crons","name":"999-multibots-telegraf-production-monitor-L80","module":"cron_999_multibots_telegraf_production_monitor_L80","lines":28,"bytes":1660,"description":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27 -- cron timer/999-multibots-telegraf/production-monitor-L80 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/production-monitor-L80). The schedule was read from 999-multibots-telegraf:src/utils/production-monitor.ts#L80. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1417,"rust":988,"verilog":2246,"verilog_hir":329,"zig":1134},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 28 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27","category":"specs/crons","name":"999-multibots-telegraf-provider-health-monitor-L344","module":"cron_999_multibots_telegraf_provider_health_monitor_L344","lines":27,"bytes":1569,"description":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27 -- cron timer/999-multibots-telegraf/provider-health-monitor-L344 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/provider-health-monitor-L344). The schedule was read from 999-multibots-telegraf:src/services/provider-health-monitor.ts#L344. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1401,"rust":948,"verilog":2219,"verilog_hir":341,"zig":1100},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 27 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-render-server-L10845.t27","category":"specs/crons","name":"999-multibots-telegraf-render-server-L10845","module":"cron_999_multibots_telegraf_render_server_L10845","lines":26,"bytes":1398,"description":"specs/crons/999-multibots-telegraf-render-server-L10845.t27 -- cron timer/999-multibots-telegraf/render-server-L10845 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L10845). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L10845. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1237,"rust":802,"verilog":2055,"verilog_hir":325,"zig":943},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 26 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-render-server-L2301.t27","category":"specs/crons","name":"999-multibots-telegraf-render-server-L2301","module":"cron_999_multibots_telegraf_render_server_L2301","lines":26,"bytes":1371,"description":"specs/crons/999-multibots-telegraf-render-server-L2301.t27 -- cron timer/999-multibots-telegraf/render-server-L2301 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L2301). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L2301. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1211,"rust":780,"verilog":2031,"verilog_hir":323,"zig":920},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 26 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-render-server-L2325.t27","category":"specs/crons","name":"999-multibots-telegraf-render-server-L2325","module":"cron_999_multibots_telegraf_render_server_L2325","lines":27,"bytes":1605,"description":"specs/crons/999-multibots-telegraf-render-server-L2325.t27 -- cron timer/999-multibots-telegraf/render-server-L2325 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L2325). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L2325. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1434,"rust":1017,"verilog":2270,"verilog_hir":323,"zig":1160},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 27 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-render-server-L919.t27","category":"specs/crons","name":"999-multibots-telegraf-render-server-L919","module":"cron_999_multibots_telegraf_render_server_L919","lines":27,"bytes":1531,"description":"specs/crons/999-multibots-telegraf-render-server-L919.t27 -- cron timer/999-multibots-telegraf/render-server-L919 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L919). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L919. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1361,"rust":948,"verilog":2199,"verilog_hir":321,"zig":1090},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 27 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-security.t27","category":"specs/crons","name":"999-multibots-telegraf-security","module":"cron_999_multibots_telegraf_security","lines":26,"bytes":1437,"description":"specs/crons/999-multibots-telegraf-security.t27 -- cron github-actions/999-multibots-telegraf/security Source of truth for the job card on t27.ai (#/crons?cron=github-actions/999-multibots-telegraf/security). The schedule was read from 999-multibots-telegraf:.github/workflows/security.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1339,"rust":969,"verilog":2197,"verilog_hir":301,"zig":1105},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 26 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-skill-detector.t27","category":"specs/crons","name":"999-multibots-telegraf-skill-detector","module":"cron_999_multibots_telegraf_skill_detector","lines":25,"bytes":1426,"description":"specs/crons/999-multibots-telegraf-skill-detector.t27 -- cron inngest/999-multibots-telegraf/skill-detector Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/skill-detector). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/skillDetector.ts#L32. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1331,"rust":923,"verilog":2161,"verilog_hir":313,"zig":1664},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-taskCache-L27.t27","category":"specs/crons","name":"999-multibots-telegraf-taskCache-L27","module":"cron_999_multibots_telegraf_taskCache_L27","lines":26,"bytes":1383,"description":"specs/crons/999-multibots-telegraf-taskCache-L27.t27 -- cron timer/999-multibots-telegraf/taskCache-L27 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/taskCache-L27). The schedule was read from 999-multibots-telegraf:src/modules/videoGenerator/taskCache.ts#L27. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1227,"rust":820,"verilog":2059,"verilog_hir":311,"zig":954},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 26 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27","category":"specs/crons","name":"999-multibots-telegraf-video-task-store-L156","module":"cron_999_multibots_telegraf_video_task_store_L156","lines":26,"bytes":1394,"description":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27 -- cron timer/999-multibots-telegraf/video-task-store-L156 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/video-task-store-L156). The schedule was read from 999-multibots-telegraf:src/services/video-task-store.ts#L156. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1244,"rust":805,"verilog":2060,"verilog_hir":327,"zig":947},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 26 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/railway-jobsearch-cron.t27","category":"specs/crons","name":"railway-jobsearch-cron","module":"cron_railway_jobsearch_cron","lines":28,"bytes":1535,"description":"specs/crons/railway-jobsearch-cron.t27 -- cron railway-cron/999/jobsearch-cron Source of truth for the job card on t27.ai (#/crons?cron=railway-cron/999/jobsearch-cron). The schedule lives in the Railway dashboard of project 999 and is not in any checkout. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":135,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1368,"rust":1048,"verilog":2260,"verilog_hir":283,"zig":1178},"repo":"t27","kinds":{"Module":1,"ConstDecl":16,"ExprLiteral":15,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 16 constants. 28 lines compile to 135 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/t27-formal-mutation.t27","category":"specs/crons","name":"t27-formal-mutation","module":"cron_t27_formal_mutation","lines":26,"bytes":1354,"description":"specs/crons/t27-formal-mutation.t27 -- cron github-actions/t27/formal-mutation Source of truth for the job card on t27.ai (#/crons?cron=github-actions/t27/formal-mutation). The schedule was read from t27:.github/workflows/formal-mutation.yml#L25. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1268,"rust":946,"verilog":2150,"verilog_hir":277,"zig":1070},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 26 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/t27-pr-dashboard.t27","category":"specs/crons","name":"t27-pr-dashboard","module":"cron_t27_pr_dashboard","lines":25,"bytes":1179,"description":"specs/crons/t27-pr-dashboard.t27 -- cron github-actions/t27/pr-dashboard Source of truth for the job card on t27.ai (#/crons?cron=github-actions/t27/pr-dashboard). The schedule was read from t27:.github/workflows/pr-dashboard.yml#L6. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1108,"rust":784,"verilog":1980,"verilog_hir":271,"zig":902},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/crons/trinity-agent-cron-cleanup.t27","category":"specs/crons","name":"trinity-agent-cron-cleanup","module":"cron_trinity_agent_cron_cleanup","lines":25,"bytes":1240,"description":"specs/crons/trinity-agent-cron-cleanup.t27 -- cron github-actions/trinity/agent-cron-cleanup Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/agent-cron-cleanup). The schedule was read from trinity:.github/workflows/agent-cron-cleanup.yml#L4. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1159,"rust":795,"verilog":2011,"verilog_hir":291,"zig":923},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/trinity-agent-queue-drain.t27","category":"specs/crons","name":"trinity-agent-queue-drain","module":"cron_trinity_agent_queue_drain","lines":25,"bytes":1328,"description":"specs/crons/trinity-agent-queue-drain.t27 -- cron github-actions/trinity/agent-queue-drain Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/agent-queue-drain). The schedule was read from trinity:.github/workflows/agent-queue-drain.yml#L4. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1248,"rust":888,"verilog":2102,"verilog_hir":289,"zig":1015},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/crons/trinity-brain-ci.t27","category":"specs/crons","name":"trinity-brain-ci","module":"cron_trinity_brain_ci","lines":25,"bytes":1216,"description":"specs/crons/trinity-brain-ci.t27 -- cron github-actions/trinity/brain-ci Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/brain-ci). The schedule was read from trinity:.github/workflows/brain-ci.yml#L11. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1149,"rust":825,"verilog":2021,"verilog_hir":271,"zig":943},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/trinity-codegen.t27","category":"specs/crons","name":"trinity-codegen","module":"cron_trinity_codegen","lines":25,"bytes":1169,"description":"specs/crons/trinity-codegen.t27 -- cron github-actions/trinity/codegen Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/codegen). The schedule was read from trinity:.github/workflows/codegen.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1098,"rust":778,"verilog":1972,"verilog_hir":269,"zig":895},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/crons/trinity-discover-callers.t27","category":"specs/crons","name":"trinity-discover-callers","module":"cron_trinity_discover_callers","lines":25,"bytes":1275,"description":"specs/crons/trinity-discover-callers.t27 -- cron github-actions/trinity/discover-callers Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/discover-callers). The schedule was read from trinity:.github/workflows/discover-callers.yml#L16. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1195,"rust":839,"verilog":2051,"verilog_hir":287,"zig":965},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/trinity-pages-health-check.t27","category":"specs/crons","name":"trinity-pages-health-check","module":"cron_trinity_pages_health_check","lines":26,"bytes":1464,"description":"specs/crons/trinity-pages-health-check.t27 -- cron github-actions/trinity/pages-health-check Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/pages-health-check). The schedule was read from trinity:.github/workflows/pages-health-check.yml#L17. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":127,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1371,"rust":1021,"verilog":2239,"verilog_hir":291,"zig":1152},"repo":"t27","kinds":{"Module":1,"ConstDecl":15,"ExprLiteral":14,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 15 constants. 26 lines compile to 127 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/crons/trinity-signal-health-self.t27","category":"specs/crons","name":"trinity-signal-health-self","module":"cron_trinity_signal_health_self","lines":25,"bytes":1272,"description":"specs/crons/trinity-signal-health-self.t27 -- cron github-actions/trinity/signal-health-self Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/signal-health-self). The schedule was read from trinity:.github/workflows/signal-health-self.yml#L17. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1190,"rust":826,"verilog":2042,"verilog_hir":291,"zig":954},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/crons/trinity-site-live-gate.t27","category":"specs/crons","name":"trinity-site-live-gate","module":"cron_trinity_site_live_gate","lines":25,"bytes":1268,"description":"specs/crons/trinity-site-live-gate.t27 -- cron github-actions/trinity/site-live-gate Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/site-live-gate). The schedule was read from trinity:.github/workflows/site-live-gate.yml#L33. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","health":"ok","tokens":119,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1190,"rust":842,"verilog":2050,"verilog_hir":283,"zig":966},"repo":"t27","kinds":{"Module":1,"ConstDecl":14,"ExprLiteral":13,"ExprIdentifier":1},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 14 constants. 25 lines compile to 119 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/demos/jones_topology_decision_gate.t27","category":"specs/demos","name":"jones_topology_decision_gate","module":"JonesTopologyDecisionGate","lines":347,"bytes":66723,"description":"t27/specs/demos/jones_topology_decision_gate.t27 Decision Gate TH-01..TH-05 for H₁: Structure Similarity Classifier Tests if VSA dot_product + fixed φ constant can classify structures by complexity","health":"warn","tokens":1564,"nodes":375,"depth":10,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":6245,"rust":2719,"verilog":11314,"verilog_hir":669,"zig":7796},"repo":"t27","kinds":{"Module":8,"UseDecl":4,"ConstDecl":26,"ExprLiteral":44,"ExprIdentifier":80,"FnDecl":7,"StmtLocal":22,"ExprArrayLiteral":6,"StmtExpr":55,"ExprCall":16,"StmtWhile":6,"ExprBinary":30,"ExprIf":5,"ExprFieldAccess":29,"StmtAssign":6,"ExprReturn":8,"ExprSwitch":3,"StmtIf":1,"TestBlock":8,"InvariantBlock":7,"BenchBlock":4},"tags":["domain/tutorial","has/benches","has/functions","has/imports","has/invariants","has/loops","has/switch","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 7 functions and 26 constants. Carries 8 tests, 7 invariants and 4 benches. 347 lines compile to 1,564 tokens and 375 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.0 KB. Compiles with 6 type errors."},{"path":"specs/demos/jones_topology_filter.t27","category":"specs/demos","name":"jones_topology_filter","module":"JonesTopologyFilter","lines":318,"bytes":10710,"description":"t27/specs/demos/jones_topology_filter.t27 MVP: Structure Similarity Classifier using VSA + CS Constants WHAT THIS CODE ACTUALLY DOES: - Takes a hypervector representing a structure - Computes dot_product similarity with a reference structure - Classifies complexity based on similarity thresholds","health":"warn","tokens":1535,"nodes":338,"depth":12,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":7510,"rust":2714,"verilog":14401,"verilog_hir":672,"zig":8777},"repo":"t27","kinds":{"Module":17,"UseDecl":5,"StructDecl":1,"ExprIdentifier":66,"ConstDecl":5,"ExprLiteral":26,"FnDecl":6,"StmtLocal":17,"ExprCall":17,"ExprBinary":26,"StmtIf":6,"StmtAssign":7,"ExprReturn":8,"ExprStructLit":1,"ExprFieldAccess":19,"ExprArrayLiteral":3,"StmtWhile":4,"StmtExpr":67,"ExprIndex":1,"ExprIf":2,"TestBlock":17,"InvariantBlock":11,"BenchBlock":6},"tags":["domain/tutorial","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 5 constants. Carries 17 tests, 11 invariants and 6 benches. 318 lines compile to 1,535 tokens and 338 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Compiles with 4 type errors."},{"path":"specs/demos/simple_test.t27","category":"specs/demos","name":"simple_test","module":"SimpleTest","lines":15,"bytes":277,"description":"Simple test spec","health":"ok","tokens":33,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1013,"rust":98,"verilog":1870,"verilog_hir":249,"zig":426},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":1,"ExprLiteral":1,"TestBlock":1,"StmtExpr":2,"InvariantBlock":1},"tags":["domain/tutorial","has/constants-only","has/imports","has/invariants","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 constant. Carries 1 test and 1 invariant. 15 lines compile to 33 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/depin/prove.t27","category":"specs/depin","name":"prove","module":"depin","lines":285,"bytes":8731,"description":"DePIN proof-of-useful-compute spec Issue #40 — L-TRI-1: POST /prove endpoint","health":"ok","tokens":739,"nodes":139,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7541,"rust":1948,"verilog":14019,"verilog_hir":1243,"zig":5139},"repo":"t27","kinds":{"Module":1,"StructDecl":4,"ExprIdentifier":25,"FnDecl":11,"TestBlock":20,"InvariantBlock":13,"StmtExpr":16,"ExprCall":18,"ExprLiteral":17,"BenchBlock":3,"StmtLocal":3,"ExprArrayLiteral":3,"StmtAssign":2,"ExprUnary":3},"tags":["domain/other","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 4 structs. Carries 20 tests, 13 invariants and 3 benches. 285 lines compile to 739 tokens and 139 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Clean through every layer."},{"path":"specs/docs/chapters/alphabet.t27","category":"specs/docs","name":"alphabet","module":"docs_chapter_alphabet","lines":31,"bytes":1711,"description":"specs/docs/chapters/alphabet.t27 -- chapter 4 of the system documentation, docs/alphabet Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":107,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1010,"rust":644,"verilog":1832,"verilog_hir":271,"zig":760},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 31 lines compile to 107 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/docs/chapters/evidence.t27","category":"specs/docs","name":"evidence","module":"docs_chapter_evidence","lines":31,"bytes":1854,"description":"specs/docs/chapters/evidence.t27 -- chapter 7 of the system documentation, docs/evidence Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":119,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1147,"rust":781,"verilog":1969,"verilog_hir":271,"zig":897},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 31 lines compile to 119 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/docs/chapters/layers.t27","category":"specs/docs","name":"layers","module":"docs_chapter_layers","lines":31,"bytes":1796,"description":"specs/docs/chapters/layers.t27 -- chapter 3 of the system documentation, docs/layers Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":121,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1086,"rust":728,"verilog":1912,"verilog_hir":267,"zig":842},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 31 lines compile to 121 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/docs/chapters/project.t27","category":"specs/docs","name":"project","module":"docs_chapter_project","lines":31,"bytes":1805,"description":"specs/docs/chapters/project.t27 -- chapter 1 of the system documentation, docs/project Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":115,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1099,"rust":737,"verilog":1923,"verilog_hir":269,"zig":852},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 31 lines compile to 115 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/docs/chapters/queen.t27","category":"specs/docs","name":"queen","module":"docs_chapter_queen","lines":31,"bytes":1778,"description":"specs/docs/chapters/queen.t27 -- chapter 5 of the system documentation, docs/queen Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":113,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1071,"rust":717,"verilog":1899,"verilog_hir":265,"zig":830},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 31 lines compile to 113 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/docs/chapters/rules.t27","category":"specs/docs","name":"rules","module":"docs_chapter_rules","lines":31,"bytes":1855,"description":"specs/docs/chapters/rules.t27 -- chapter 2 of the system documentation, docs/rules Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":119,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1145,"rust":791,"verilog":1973,"verilog_hir":265,"zig":904},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 31 lines compile to 119 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/docs/chapters/tooling.t27","category":"specs/docs","name":"tooling","module":"docs_chapter_tooling","lines":31,"bytes":1696,"description":"specs/docs/chapters/tooling.t27 -- chapter 6 of the system documentation, docs/tooling Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":111,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":992,"rust":630,"verilog":1816,"verilog_hir":269,"zig":745},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 31 lines compile to 111 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/docs/system.t27","category":"specs/docs","name":"system","module":"docs_system","lines":24,"bytes":1618,"description":"specs/docs/system.t27 -- the system documentation of t27 / Trinity as one declared document Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","health":"ok","tokens":129,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1092,"rust":736,"verilog":1885,"verilog_hir":251,"zig":861},"repo":"t27","kinds":{"Module":1,"ConstDecl":8,"ExprLiteral":4,"ExprIdentifier":4},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 8 constants. 24 lines compile to 129 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/enrichment/audio_overview.t27","category":"specs/enrichment","name":"audio_overview","module":"enrichment","lines":163,"bytes":5680,"description":"audio_overview.t27 — Bilingual Audio Overview for NotebookLM Ring 091 — API-only multilingual enrichment","health":"ok","tokens":454,"nodes":115,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4702,"rust":2605,"verilog":8137,"verilog_hir":942,"zig":3619},"repo":"t27","kinds":{"Module":1,"ConstDecl":6,"ExprLiteral":19,"EnumDecl":2,"EnumVariant":5,"StructDecl":5,"ExprIdentifier":26,"FnDecl":7,"TestBlock":4,"StmtExpr":11,"ExprCall":18,"ExprBinary":6,"StmtLocal":1,"ExprUnary":1,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/tools","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions, 5 structs, 2 enums and 6 constants. Carries 4 tests, 2 invariants and 1 bench. 163 lines compile to 454 tokens and 115 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.9 KB. Clean through every layer."},{"path":"specs/enrichment/youtube_transcript.t27","category":"specs/enrichment","name":"youtube_transcript","module":"enrichment","lines":606,"bytes":20285,"description":"youtube_transcript.t27 — YouTube Transcript Extraction for NotebookLM Enrichment Ring 090 — Fallback for blocked YouTube URL uploads","health":"warn","tokens":2499,"nodes":749,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":12326,"rust":4200,"verilog":19987,"verilog_hir":879,"zig":10554},"repo":"t27","kinds":{"Module":35,"ConstDecl":5,"ExprLiteral":122,"ExprIdentifier":197,"EnumDecl":1,"EnumVariant":11,"StructDecl":3,"FnDecl":6,"StmtLocal":49,"ExprCall":76,"StmtFor":3,"StmtIf":28,"ExprReturn":12,"ExprBinary":52,"ExprIndex":5,"ExprUnary":5,"StmtAssign":22,"StmtContinue":4,"StmtWhile":1,"ExprIf":8,"ExprArrayLiteral":2,"ExprFieldAccess":72,"ExprStructLit":10,"TestBlock":13,"InvariantBlock":4,"BenchBlock":3},"tags":["domain/tools","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 6 functions, 3 structs, 1 enum and 5 constants. Carries 13 tests, 4 invariants and 3 benches. 606 lines compile to 2,499 tokens and 749 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 19.5 KB. Compiles with 1 type error."},{"path":"specs/file/operations.t27","category":"specs/file","name":"operations","module":"FileOperations","lines":416,"bytes":14211,"description":"specs/file/operations.t27 File Operations","health":"fail","tokens":1524,"nodes":251,"depth":7,"loss":1,"tcErrors":0,"failedBackends":["verilog_hir"],"outBytes":{"c":7434,"rust":2906,"verilog":11112,"verilog_hir":null,"zig":7296},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":33,"TestBlock":10,"StmtExpr":24,"ExprCall":25,"ExprBinary":23,"ExprFieldAccess":49,"ExprIdentifier":34,"ExprLiteral":38,"StmtLocal":6,"ExprStructLit":5,"ExprArrayLiteral":1},"tags":["domain/storage","has/functions","has/imports","has/tests","health/fail","issue/backend-rejected","issue/dropped-content","size/large","src/t27"],"summary":"Declares 33 functions. Carries 10 tests. 416 lines compile to 1,524 tokens and 251 AST nodes, depth 7. Emits 4 of 5 backends; largest is Verilog at 10.9 KB. Rejected by Verilog (HIR)."},{"path":"specs/file/schema.t27","category":"specs/file","name":"schema","module":"File","lines":334,"bytes":16136,"description":"specs/file/schema.t27 File Types Specification","health":"ok","tokens":1017,"nodes":378,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6639,"rust":4289,"verilog":12209,"verilog_hir":483,"zig":5981},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"EnumDecl":5,"EnumVariant":21,"StructDecl":13,"ExprIdentifier":99,"ConstDecl":3,"ExprLiteral":51,"FnDecl":5,"ExprReturn":7,"ExprBinary":40,"StmtLocal":2,"ExprCall":48,"StmtFor":1,"StmtIf":2,"ExprFieldAccess":24,"ExprIndex":2,"TestBlock":13,"StmtExpr":35,"ExprUnary":2},"tags":["domain/storage","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions, 13 structs, 5 enums and 3 constants. Carries 13 tests. 334 lines compile to 1,017 tokens and 378 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 11.9 KB. Clean through every layer."},{"path":"specs/file/watcher.t27","category":"specs/file","name":"watcher","module":"FileWatcher","lines":551,"bytes":19262,"description":"specs/file/watcher.t27 File Watcher Operations","health":"warn","tokens":2139,"nodes":417,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8816,"rust":2844,"verilog":13255,"verilog_hir":1374,"zig":7857},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"FnDecl":20,"ExprIdentifier":64,"EnumDecl":2,"EnumVariant":7,"TestBlock":17,"StmtLocal":12,"ExprCall":41,"ExprLiteral":65,"StmtExpr":40,"ExprBinary":39,"ExprFieldAccess":87,"ExprStructLit":10,"ExprArrayLiteral":6,"ExprTry":1},"tags":["domain/storage","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 20 functions, 3 structs and 2 enums. Carries 17 tests. 551 lines compile to 2,139 tokens and 417 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/fpga/apb_bridge.t27","category":"specs/fpga","name":"apb_bridge","module":"ApbBridge","lines":348,"bytes":9210,"description":"t27/specs/fpga/apb_bridge.t27 APB (Advanced Peripheral Bus) Bridge Specification for Trinity T27 FPGA HIR Register-mapped peripheral bridge for low-bandwidth peripherals Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1563,"nodes":450,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8382,"rust":4644,"verilog":14269,"verilog_hir":1801,"zig":7894},"repo":"t27","kinds":{"Module":14,"ConstDecl":3,"ExprLiteral":57,"EnumDecl":1,"EnumVariant":3,"StructDecl":4,"ExprIdentifier":115,"FnDecl":16,"ExprReturn":18,"ExprStructLit":7,"ExprFieldAccess":57,"ExprBinary":40,"StmtLocal":9,"StmtIf":11,"StmtWhile":2,"StmtAssign":19,"ExprCall":1,"ExprIndex":2,"TestBlock":18,"StmtExpr":47,"InvariantBlock":5,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions, 4 structs, 1 enum and 3 constants. Carries 18 tests, 5 invariants and 1 bench. 348 lines compile to 1,563 tokens and 450 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.9 KB. Clean through every layer."},{"path":"specs/fpga/assembler.t27","category":"specs/fpga","name":"assembler","module":"Assembler","lines":347,"bytes":8722,"description":"t27/specs/fpga/assembler.t27 T27 Ternary Assembler Specification High-level assembler for the ternary ISA, compiles to machine code Supports R-type, I-type, and GF16 extended instructions Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1509,"nodes":383,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7815,"rust":4297,"verilog":13797,"verilog_hir":1651,"zig":7418},"repo":"t27","kinds":{"Module":7,"EnumDecl":2,"EnumVariant":7,"StructDecl":5,"ExprIdentifier":87,"FnDecl":18,"ExprReturn":21,"ExprStructLit":8,"ExprFieldAccess":66,"ExprLiteral":47,"ExprBinary":32,"StmtIf":6,"StmtLocal":3,"StmtAssign":3,"TestBlock":19,"StmtExpr":47,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 18 functions, 5 structs and 2 enums. Carries 19 tests, 4 invariants and 1 bench. 347 lines compile to 1,509 tokens and 383 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.5 KB. Clean through every layer."},{"path":"specs/fpga/axi4.t27","category":"specs/fpga","name":"axi4","module":"Axi4","lines":394,"bytes":10640,"description":"t27/specs/fpga/axi4.t27 AXI4-Lite and AXI4-Full Bus Interface Specification for Trinity T27 FPGA HIR Defines bus port groups for AW/AR/W/R/B channels Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1819,"nodes":655,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8945,"rust":5423,"verilog":14318,"verilog_hir":1710,"zig":8696},"repo":"t27","kinds":{"Module":26,"EnumDecl":1,"EnumVariant":2,"ConstDecl":19,"ExprLiteral":121,"StructDecl":2,"ExprIdentifier":167,"FnDecl":11,"ExprReturn":11,"ExprStructLit":4,"ExprFieldAccess":77,"ExprBinary":73,"StmtLocal":3,"StmtAssign":51,"StmtIf":25,"TestBlock":16,"StmtExpr":37,"InvariantBlock":7,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions, 2 structs, 1 enum and 19 constants. Carries 16 tests, 7 invariants and 2 benches. 394 lines compile to 1,819 tokens and 655 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.0 KB. Clean through every layer."},{"path":"specs/fpga/boards/arty_a7_integration.t27","category":"specs/fpga","name":"arty_a7_integration","module":"ArtyA7_Integration","lines":137,"bytes":4043,"description":"t27/specs/fpga/boards/arty_a7_integration.t27 Arty A7 Board-Level Integration Spec Full system: MAC + UART + SPI + Memory + Bridge + GF16 + TernaryISA Pin mappings match specs/fpga/constraints/arty_a7.xdc","health":"ok","tokens":636,"nodes":144,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4644,"rust":2081,"verilog":7952,"verilog_hir":536,"zig":3897},"repo":"t27","kinds":{"Module":5,"UseDecl":9,"ConstDecl":12,"ExprLiteral":23,"StructDecl":2,"ExprIdentifier":40,"FnDecl":3,"ExprReturn":3,"ExprBinary":8,"StmtLocal":4,"StmtIf":4,"ExprFieldAccess":4,"StmtAssign":4,"TestBlock":6,"ExprCall":6,"InvariantBlock":7,"BenchBlock":1,"StmtExpr":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 12 constants. Carries 6 tests, 7 invariants and 1 bench. 137 lines compile to 636 tokens and 144 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 7.8 KB. Clean through every layer."},{"path":"specs/fpga/boards/qmtech_a100t_integration.t27","category":"specs/fpga","name":"qmtech_a100t_integration","module":"QMTech_A100T_Integration","lines":110,"bytes":3372,"description":"t27/specs/fpga/boards/qmtech_a100t_integration.t27 QMTech XC7A100T Board-Level Integration Spec Full system for QMTech A100T development board","health":"ok","tokens":388,"nodes":62,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3292,"rust":1190,"verilog":5901,"verilog_hir":387,"zig":2047},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":10,"ExprLiteral":9,"StructDecl":2,"ExprIdentifier":17,"FnDecl":1,"ExprReturn":1,"ExprBinary":2,"TestBlock":7,"StmtLocal":1,"ExprCall":2,"InvariantBlock":3,"BenchBlock":1,"StmtExpr":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function, 2 structs and 10 constants. Carries 7 tests, 3 invariants and 1 bench. 110 lines compile to 388 tokens and 62 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Clean through every layer."},{"path":"specs/fpga/bootrom.t27","category":"specs/fpga","name":"bootrom","module":"BootROM","lines":140,"bytes":4020,"description":"t27/specs/fpga/bootrom.t27 T27 Boot ROM Specification Boot sequence stages, init vectors, integrity checksum Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":753,"nodes":154,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3724,"rust":1479,"verilog":7304,"verilog_hir":751,"zig":3770},"repo":"t27","kinds":{"Module":4,"StructDecl":2,"ExprIdentifier":36,"FnDecl":6,"ExprReturn":6,"ExprStructLit":2,"ExprFieldAccess":17,"ExprBinary":10,"ExprLiteral":11,"StmtLocal":3,"StmtIf":2,"StmtAssign":4,"StmtWhile":1,"ExprIndex":1,"TestBlock":12,"StmtExpr":35,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 2 structs. Carries 12 tests, 1 invariant and 1 bench. 140 lines compile to 753 tokens and 154 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"specs/fpga/bpsk.t27","category":"specs/fpga","name":"bpsk","module":"ZeroDSP_BPSK","lines":212,"bytes":7484,"description":"t27/specs/fpga/bpsk.t27 ZeroDSP BPSK modem core (TRI-NET 5.8 GHz mesh radio PHY). Byte -> +/-1 BPSK serializer with a Barker-13 preamble, plus an integer Barker-13 correlator + threshold for frame synchronization. Port of the trios-mesh Rust modem's synthesizable core to the t27 spec-first language. Datapath functions + state record only; clocking/ports are a backend concern.","health":"warn","tokens":656,"nodes":230,"depth":17,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":4438,"rust":1435,"verilog":8277,"verilog_hir":930,"zig":3998},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"ConstDecl":13,"ExprLiteral":40,"FnDecl":8,"StmtIf":5,"ExprBinary":29,"ExprIdentifier":44,"ExprReturn":12,"StmtAssign":6,"ExprUnary":2,"ExprCall":14,"TestBlock":13,"StmtExpr":29,"InvariantBlock":4},"tags":["domain/fpga","has/functions","has/imports","has/invariants","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 8 functions and 13 constants. Carries 13 tests and 4 invariants. 212 lines compile to 656 tokens and 230 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 8.1 KB. Compiles with 2 type errors."},{"path":"specs/fpga/bridge.t27","category":"specs/fpga","name":"bridge","module":"FPGA_Bridge","lines":523,"bytes":20368,"description":"t27/specs/fpga/bridge.t27 FPGA Communication Bridge Specification Combines UART and SPI for host and peripheral communication","health":"warn","tokens":2192,"nodes":775,"depth":15,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":11645,"rust":4081,"verilog":20221,"verilog_hir":1775,"zig":12980},"repo":"t27","kinds":{"Module":35,"UseDecl":4,"ConstDecl":24,"ExprLiteral":77,"StructDecl":1,"ExprIdentifier":210,"ExprStructLit":1,"ExprFieldAccess":90,"ExprArrayLiteral":5,"FnDecl":12,"StmtIf":24,"ExprBinary":67,"ExprReturn":17,"StmtLocal":26,"StmtAssign":37,"ExprIndex":9,"ExprCall":33,"StmtExpr":64,"StmtWhile":2,"ExprUnary":2,"TestBlock":21,"InvariantBlock":10,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 12 functions, 1 struct and 24 constants. Carries 21 tests, 10 invariants and 4 benches. 523 lines compile to 2,192 tokens and 775 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 19.7 KB. Compiles with 2 type errors."},{"path":"specs/fpga/clock_domain.t27","category":"specs/fpga","name":"clock_domain","module":"ClockDomain","lines":231,"bytes":5913,"description":"t27/specs/fpga/clock_domain.t27 Clock Domain Abstraction for Trinity T27 FPGA HIR Defines clock sources, PLL configs, and cross-domain crossing Uses flat structs (parser-compatible)","health":"ok","tokens":973,"nodes":200,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5581,"rust":2712,"verilog":9551,"verilog_hir":1117,"zig":4905},"repo":"t27","kinds":{"Module":4,"EnumDecl":3,"EnumVariant":10,"StructDecl":3,"ExprIdentifier":40,"FnDecl":12,"ExprReturn":15,"ExprStructLit":4,"ExprFieldAccess":32,"ExprLiteral":16,"ExprBinary":11,"StmtIf":3,"ExprCall":1,"TestBlock":12,"StmtExpr":28,"InvariantBlock":5,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 3 structs and 3 enums. Carries 12 tests, 5 invariants and 1 bench. 231 lines compile to 973 tokens and 200 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 9.3 KB. Clean through every layer."},{"path":"specs/fpga/crossopt.t27","category":"specs/fpga","name":"crossopt","module":"CrossOpt","lines":126,"bytes":3615,"description":"t27/specs/fpga/crossopt.t27 T27 Cross-Module Optimization Specification Inter-module constant propagation, dead signal elimination, instance merging Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":564,"nodes":127,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4067,"rust":1799,"verilog":7159,"verilog_hir":833,"zig":3173},"repo":"t27","kinds":{"Module":2,"StructDecl":2,"ExprIdentifier":31,"FnDecl":8,"ExprReturn":9,"ExprStructLit":3,"ExprFieldAccess":23,"ExprLiteral":9,"ExprBinary":8,"ExprCall":3,"StmtIf":1,"TestBlock":6,"StmtExpr":19,"InvariantBlock":1,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 2 structs. Carries 6 tests, 1 invariant and 2 benches. 126 lines compile to 564 tokens and 127 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.0 KB. Clean through every layer."},{"path":"specs/fpga/cts.t27","category":"specs/fpga","name":"cts","module":"CTS","lines":225,"bytes":5735,"description":"t27/specs/fpga/cts.t27 T27 Clock Tree Synthesis Specification PLL configuration, clock buffer trees, skew estimation Artix-7: BUFH=0.05ns, BUFG=0.1ns, PLL jitter=50ps, max skew=100ps Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":966,"nodes":248,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5730,"rust":2919,"verilog":10984,"verilog_hir":1296,"zig":5270},"repo":"t27","kinds":{"Module":8,"StructDecl":4,"ExprIdentifier":58,"FnDecl":13,"StmtLocal":3,"ExprLiteral":29,"StmtIf":7,"ExprBinary":16,"StmtAssign":4,"ExprReturn":17,"ExprStructLit":5,"ExprFieldAccess":30,"TestBlock":15,"StmtExpr":35,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions and 4 structs. Carries 15 tests, 2 invariants and 2 benches. 225 lines compile to 966 tokens and 248 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.7 KB. Clean through every layer."},{"path":"specs/fpga/dft.t27","category":"specs/fpga","name":"dft","module":"DFT","lines":264,"bytes":6604,"description":"t27/specs/fpga/dft.t27 T27 Design-for-Test Specification Scan chains, BIST controllers, JTAG TAP, test coverage estimation Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1105,"nodes":285,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6160,"rust":3191,"verilog":11559,"verilog_hir":1292,"zig":5916},"repo":"t27","kinds":{"Module":8,"StructDecl":4,"ExprIdentifier":64,"FnDecl":15,"ExprReturn":16,"ExprStructLit":5,"ExprFieldAccess":33,"ExprBinary":25,"ExprLiteral":30,"EnumDecl":1,"EnumVariant":3,"StmtIf":7,"StmtLocal":3,"StmtAssign":6,"TestBlock":17,"StmtExpr":45,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions, 4 structs and 1 enum. Carries 17 tests, 2 invariants and 1 bench. 264 lines compile to 1,105 tokens and 285 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"specs/fpga/e2e_demo.t27","category":"specs/fpga","name":"e2e_demo","module":"E2eDemo","lines":253,"bytes":6432,"description":"t27/specs/fpga/e2e_demo.t27 T27 End-to-End Demo Specification Exercises the full toolchain: assembler -> ternary core -> GF16 -> VCD trace Validates the complete FPGA pipeline from spec to hardware simulation Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1029,"nodes":290,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5815,"rust":2924,"verilog":10543,"verilog_hir":1149,"zig":5607},"repo":"t27","kinds":{"Module":9,"StructDecl":3,"ExprIdentifier":54,"FnDecl":13,"ExprReturn":17,"ExprStructLit":5,"ExprFieldAccess":44,"ExprLiteral":42,"StmtIf":8,"ExprBinary":24,"StmtLocal":2,"StmtAssign":5,"ExprCall":1,"TestBlock":16,"StmtExpr":43,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions and 3 structs. Carries 16 tests, 3 invariants and 1 bench. 253 lines compile to 1,029 tokens and 290 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"specs/fpga/fifo.t27","category":"specs/fpga","name":"fifo","module":"Fifo","lines":365,"bytes":9826,"description":"t27/specs/fpga/fifo.t27 Synchronous and Asynchronous FIFO Stdlib for Trinity T27 FPGA HIR Defines FIFO configuration with depth, data width, and flags Uses flat arrays + count fields (parser-compatible)","health":"warn","tokens":1773,"nodes":470,"depth":8,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":8261,"rust":4501,"verilog":13962,"verilog_hir":1682,"zig":8548},"repo":"t27","kinds":{"Module":13,"EnumDecl":1,"EnumVariant":2,"StructDecl":3,"ExprIdentifier":103,"ConstDecl":1,"ExprLiteral":54,"FnDecl":18,"ExprReturn":20,"ExprStructLit":4,"ExprFieldAccess":80,"StmtLocal":9,"StmtAssign":21,"ExprBinary":34,"StmtWhile":1,"StmtIf":11,"TestBlock":18,"StmtExpr":69,"InvariantBlock":6,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 18 functions, 3 structs, 1 enum and 1 constant. Carries 18 tests, 6 invariants and 2 benches. 365 lines compile to 1,773 tokens and 470 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 13.6 KB. Compiles with 1 type error."},{"path":"specs/fpga/formal.t27","category":"specs/fpga","name":"formal","module":"Formal","lines":353,"bytes":9441,"description":"t27/specs/fpga/formal.t27 Formal Verification Specification for Trinity T27 FPGA HIR Defines assertion kinds, properties, and coverage points Generates SystemVerilog Assertions (SVA) alongside Verilog Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1582,"nodes":402,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8157,"rust":4703,"verilog":14629,"verilog_hir":1571,"zig":8545},"repo":"t27","kinds":{"Module":13,"EnumDecl":3,"EnumVariant":11,"ConstDecl":3,"ExprLiteral":47,"StructDecl":4,"ExprIdentifier":97,"FnDecl":18,"ExprReturn":18,"ExprStructLit":5,"ExprFieldAccess":49,"StmtLocal":6,"StmtAssign":14,"ExprBinary":31,"StmtIf":12,"TestBlock":18,"StmtExpr":48,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 18 functions, 4 structs, 3 enums and 3 constants. Carries 18 tests, 4 invariants and 1 bench. 353 lines compile to 1,582 tokens and 402 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 14.3 KB. Clean through every layer."},{"path":"specs/fpga/gf16_accel.t27","category":"specs/fpga","name":"gf16_accel","module":"Gf16Accel","lines":423,"bytes":11072,"description":"t27/specs/fpga/gf16_accel.t27 GF(16) Hardware Accelerator Specification for Trinity T27 FPGA HIR Defines GF16 MAC, FFT, and VSA (Vector Space Architecture) operations Connects phi-identity (phi^2 = phi + 1, phi^2 + phi^-2 = 3) to silicon Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1778,"nodes":472,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9690,"rust":4949,"verilog":17829,"verilog_hir":1647,"zig":9839},"repo":"t27","kinds":{"Module":17,"ConstDecl":4,"ExprLiteral":60,"EnumDecl":1,"EnumVariant":8,"StructDecl":4,"ExprIdentifier":98,"FnDecl":21,"ExprReturn":24,"ExprStructLit":6,"ExprFieldAccess":58,"ExprBinary":33,"StmtIf":15,"StmtLocal":7,"StmtWhile":1,"StmtAssign":14,"TestBlock":27,"StmtExpr":63,"InvariantBlock":8,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions, 4 structs, 1 enum and 4 constants. Carries 27 tests, 8 invariants and 3 benches. 423 lines compile to 1,778 tokens and 472 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.4 KB. Clean through every layer."},{"path":"specs/fpga/hir.t27","category":"specs/fpga","name":"hir","module":"Hir","lines":692,"bytes":19053,"description":"t27/specs/fpga/hir.t27 Hardware Intermediate Representation (HIR) for Trinity T27 Decouples .t27 spec semantics from Verilog/SystemVerilog emission Uses flat arrays + count fields (parser-compatible, no Vec/generics)","health":"warn","tokens":3360,"nodes":921,"depth":12,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15494,"rust":10732,"verilog":25714,"verilog_hir":2384,"zig":15752},"repo":"t27","kinds":{"Module":24,"ConstDecl":9,"ExprLiteral":107,"EnumDecl":7,"EnumVariant":22,"StructDecl":9,"ExprIdentifier":227,"FnDecl":32,"ExprReturn":37,"ExprStructLit":17,"ExprFieldAccess":164,"ExprArrayLiteral":9,"StmtLocal":18,"StmtIf":16,"ExprBinary":55,"StmtAssign":28,"ExprIndex":15,"ExprCall":3,"StmtWhile":7,"TestBlock":26,"StmtExpr":79,"InvariantBlock":8,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 32 functions, 9 structs, 7 enums and 9 constants. Carries 26 tests, 8 invariants and 2 benches. 692 lines compile to 3,360 tokens and 921 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 25.1 KB. Compiles with 1 type error."},{"path":"specs/fpga/hw_types.t27","category":"specs/fpga","name":"hw_types","module":"HwTypes","lines":335,"bytes":8002,"description":"t27/specs/fpga/hw_types.t27 Hardware Type System for Trinity T27 FPGA HIR Defines signal-level types with bit-accurate widths and signedness","health":"ok","tokens":1307,"nodes":339,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7257,"rust":3482,"verilog":12511,"verilog_hir":1051,"zig":6802},"repo":"t27","kinds":{"Module":8,"EnumDecl":3,"EnumVariant":14,"StructDecl":1,"ExprIdentifier":35,"FnDecl":15,"ExprReturn":22,"ExprStructLit":8,"ExprFieldAccess":86,"ExprLiteral":67,"ExprBinary":9,"StmtIf":7,"TestBlock":22,"StmtExpr":31,"InvariantBlock":9,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions, 1 struct and 3 enums. Carries 22 tests, 9 invariants and 2 benches. 335 lines compile to 1,307 tokens and 339 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/fpga/linker.t27","category":"specs/fpga","name":"linker","module":"Linker","lines":327,"bytes":8187,"description":"t27/specs/fpga/linker.t27 T27 Linker Specification Links assembled object files into executable images for ternary core Handles section merging, symbol resolution, address assignment, relocations Uses flat arrays + count fields (parser-compatible)","health":"warn","tokens":1425,"nodes":349,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6968,"rust":3887,"verilog":12543,"verilog_hir":1552,"zig":6863},"repo":"t27","kinds":{"Module":5,"StructDecl":5,"ExprIdentifier":80,"FnDecl":19,"ExprReturn":21,"ExprStructLit":9,"ExprFieldAccess":73,"ExprLiteral":41,"ExprBinary":18,"StmtIf":4,"StmtLocal":3,"StmtAssign":2,"TestBlock":16,"StmtExpr":50,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 19 functions and 5 structs. Carries 16 tests, 2 invariants and 1 bench. 327 lines compile to 1,425 tokens and 349 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/fpga/mac.t27","category":"specs/fpga","name":"mac","module":"ZeroDSP_MAC","lines":659,"bytes":26331,"description":"t27/specs/fpga/mac.t27 ZeroDSP FPGA Multiply-Accumulate Specification Ternary MAC operations for FPGA implementation","health":"warn","tokens":3480,"nodes":684,"depth":13,"loss":0,"tcErrors":7,"failedBackends":[],"outBytes":{"c":11777,"rust":4424,"verilog":20786,"verilog_hir":2085,"zig":15794},"repo":"t27","kinds":{"Module":24,"UseDecl":3,"ConstDecl":13,"ExprLiteral":56,"ExprIdentifier":183,"StructDecl":2,"ExprArrayLiteral":2,"FnDecl":14,"StmtLocal":26,"ExprBinary":47,"ExprFieldAccess":40,"StmtIf":13,"ExprReturn":22,"ExprIf":2,"ExprStructLit":2,"StmtAssign":28,"ExprIndex":34,"StmtWhile":7,"ExprCall":10,"ExprUnary":1,"StmtExpr":106,"TestBlock":24,"InvariantBlock":17,"BenchBlock":8},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 14 functions, 2 structs and 13 constants. Carries 24 tests, 17 invariants and 8 benches. 659 lines compile to 3,480 tokens and 684 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.3 KB. Compiles with 7 type errors."},{"path":"specs/fpga/memory.t27","category":"specs/fpga","name":"memory","module":"Memory","lines":355,"bytes":9348,"description":"t27/specs/fpga/memory.t27 Memory (BRAM/DRAM/ROM) Abstraction for Trinity T27 FPGA HIR Defines block memory primitives with read/write ports Uses flat arrays + count fields (parser-compatible, no Vec/generics)","health":"warn","tokens":1728,"nodes":497,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8205,"rust":4713,"verilog":13482,"verilog_hir":1137,"zig":8117},"repo":"t27","kinds":{"Module":17,"EnumDecl":3,"EnumVariant":8,"StructDecl":2,"ExprIdentifier":115,"ConstDecl":1,"ExprLiteral":63,"FnDecl":17,"ExprReturn":19,"ExprStructLit":5,"ExprFieldAccess":74,"ExprArrayLiteral":3,"StmtLocal":12,"StmtWhile":4,"ExprBinary":41,"StmtAssign":19,"StmtIf":12,"ExprIndex":7,"ExprCall":4,"TestBlock":15,"StmtExpr":49,"InvariantBlock":6,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 17 functions, 2 structs, 3 enums and 1 constant. Carries 15 tests, 6 invariants and 1 bench. 355 lines compile to 1,728 tokens and 497 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Compiles with 2 type errors."},{"path":"specs/fpga/partition.t27","category":"specs/fpga","name":"partition","module":"Partition","lines":251,"bytes":6430,"description":"t27/specs/fpga/partition.t27 T27 Multi-FPGA Partition Specification Automatically partitions HIR modules across multiple FPGAs Estimates inter-FPGA bandwidth and latency Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1114,"nodes":272,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6184,"rust":3238,"verilog":11110,"verilog_hir":1649,"zig":5465},"repo":"t27","kinds":{"Module":6,"StructDecl":4,"ExprIdentifier":74,"FnDecl":13,"ExprReturn":15,"ExprStructLit":6,"ExprFieldAccess":44,"ExprCall":2,"ExprLiteral":31,"ExprBinary":14,"StmtLocal":3,"StmtWhile":1,"StmtAssign":4,"ExprIndex":1,"StmtIf":4,"TestBlock":12,"StmtExpr":34,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions and 4 structs. Carries 12 tests, 2 invariants and 2 benches. 251 lines compile to 1,114 tokens and 272 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 10.8 KB. Clean through every layer."},{"path":"specs/fpga/placement.t27","category":"specs/fpga","name":"placement","module":"Placement","lines":242,"bytes":6335,"description":"t27/specs/fpga/placement.t27 T27 Placement Constraint Generator Specification Auto-generates placement hints and routing constraints from HIR connectivity Groups related modules into floorplan regions for optimal routing Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1179,"nodes":286,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6165,"rust":3066,"verilog":11360,"verilog_hir":1341,"zig":5656},"repo":"t27","kinds":{"Module":8,"EnumDecl":1,"EnumVariant":5,"StructDecl":4,"ExprIdentifier":81,"FnDecl":13,"ExprReturn":15,"ExprStructLit":4,"ExprFieldAccess":38,"ExprCall":5,"ExprLiteral":18,"ExprBinary":24,"StmtIf":7,"StmtLocal":2,"StmtAssign":5,"TestBlock":14,"StmtExpr":38,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 4 structs and 1 enum. Carries 14 tests, 2 invariants and 2 benches. 242 lines compile to 1,179 tokens and 286 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.1 KB. Clean through every layer."},{"path":"specs/fpga/power.t27","category":"specs/fpga","name":"power","module":"Power","lines":230,"bytes":6278,"description":"t27/specs/fpga/power.t27 T27 Power Estimation Specification Estimates dynamic and static power consumption for FPGA designs Artix-7 power model: LUT=10uW/MHz, FF=5uW/MHz, BRAM=50uW/MHz, DSP=100uW/MHz Static: 50mW base + 0.1uW per resource unit Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1007,"nodes":265,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6382,"rust":3151,"verilog":11385,"verilog_hir":1446,"zig":5652},"repo":"t27","kinds":{"Module":3,"StructDecl":2,"ExprIdentifier":65,"FnDecl":18,"ExprReturn":18,"ExprStructLit":3,"ExprFieldAccess":20,"ExprLiteral":27,"ExprBinary":31,"ExprCall":13,"StmtLocal":7,"StmtIf":2,"StmtAssign":2,"TestBlock":15,"StmtExpr":36,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 18 functions and 2 structs. Carries 15 tests, 2 invariants and 1 bench. 230 lines compile to 1,007 tokens and 265 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.1 KB. Clean through every layer."},{"path":"specs/fpga/power_analysis.t27","category":"specs/fpga","name":"power_analysis","module":"PowerAnalysis","lines":414,"bytes":12495,"description":"t27/specs/fpga/power_analysis.t27 T27 Power Analysis Specification Connects power.t27 estimation model to utilization reports from synthesis Parses LUT/FF/BRAM/DSP counts from Vivado/Yosys reports Feeds utilization into Power.est_total_power() for estimation Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":2175,"nodes":577,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10628,"rust":5517,"verilog":20526,"verilog_hir":1973,"zig":11305},"repo":"t27","kinds":{"Module":12,"StructDecl":4,"ExprIdentifier":122,"FnDecl":25,"ExprReturn":32,"ExprStructLit":6,"ExprFieldAccess":71,"ExprLiteral":72,"ExprCall":7,"ExprBinary":73,"StmtIf":10,"StmtLocal":15,"StmtWhile":1,"StmtAssign":5,"ExprIndex":1,"TestBlock":33,"StmtExpr":81,"InvariantBlock":5,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 25 functions and 4 structs. Carries 33 tests, 5 invariants and 2 benches. 414 lines compile to 2,175 tokens and 577 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 20.0 KB. Clean through every layer."},{"path":"specs/fpga/router.t27","category":"specs/fpga","name":"router","module":"Router","lines":257,"bytes":6620,"description":"t27/specs/fpga/router.t27 T27 HIR Signal Router Specification Connectivity graph analysis, fanout estimation, routing congestion prediction Estimates wire length, routing resources needed for Artix-7 Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1078,"nodes":269,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6203,"rust":2973,"verilog":12354,"verilog_hir":1351,"zig":5958},"repo":"t27","kinds":{"Module":9,"EnumDecl":1,"EnumVariant":4,"StructDecl":3,"ExprIdentifier":58,"FnDecl":14,"ExprReturn":18,"ExprStructLit":4,"ExprFieldAccess":25,"ExprLiteral":28,"ExprBinary":21,"StmtLocal":4,"StmtIf":7,"StmtAssign":5,"ExprCall":4,"StmtWhile":1,"ExprIndex":2,"TestBlock":19,"StmtExpr":38,"InvariantBlock":2,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 3 structs and 1 enum. Carries 19 tests, 2 invariants and 2 benches. 257 lines compile to 1,078 tokens and 269 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.1 KB. Clean through every layer."},{"path":"specs/fpga/simulator.t27","category":"specs/fpga","name":"simulator","module":"Simulator","lines":303,"bytes":8485,"description":"t27/specs/fpga/simulator.t27 HIR Cycle-Accurate Simulation Engine Specification Provides simulation primitives for verifying HIR modules pre-synthesis Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1248,"nodes":306,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6821,"rust":3549,"verilog":11723,"verilog_hir":1292,"zig":7051},"repo":"t27","kinds":{"Module":7,"EnumDecl":1,"EnumVariant":5,"StructDecl":4,"ExprIdentifier":62,"FnDecl":16,"ExprReturn":19,"ExprStructLit":6,"ExprFieldAccess":50,"ExprLiteral":39,"ExprBinary":22,"StmtIf":6,"StmtLocal":2,"TestBlock":15,"ExprCall":2,"StmtAssign":3,"StmtExpr":42,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions, 4 structs and 1 enum. Carries 15 tests, 4 invariants and 1 bench. 303 lines compile to 1,248 tokens and 306 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"specs/fpga/spi.t27","category":"specs/fpga","name":"spi","module":"SPI_Master","lines":407,"bytes":14640,"description":"t27/specs/fpga/spi.t27 SPI Master Specification for FPGA Mode 0: CPOL=0, CPHA=0 (SCK idle low, sample on rising edge)","health":"ok","tokens":1593,"nodes":564,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9182,"rust":3359,"verilog":15944,"verilog_hir":1218,"zig":9076},"repo":"t27","kinds":{"Module":32,"UseDecl":1,"ConstDecl":22,"ExprLiteral":81,"StructDecl":1,"ExprIdentifier":125,"ExprStructLit":1,"ExprFieldAccess":79,"FnDecl":12,"StmtIf":26,"ExprBinary":51,"ExprReturn":24,"StmtAssign":28,"ExprCall":3,"ExprUnary":1,"StmtExpr":41,"StmtLocal":2,"ExprIf":1,"TestBlock":17,"InvariantBlock":12,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 12 functions, 1 struct and 22 constants. Carries 17 tests, 12 invariants and 4 benches. 407 lines compile to 1,593 tokens and 564 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 15.6 KB. Clean through every layer."},{"path":"specs/fpga/stdlib.t27","category":"specs/fpga","name":"stdlib","module":"Stdlib","lines":372,"bytes":17315,"description":"t27/specs/fpga/stdlib.t27 T27 FPGA Standard Library IP Catalog Reusable hardware IP cores with resource utilization estimates Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":4069,"nodes":895,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11845,"rust":8002,"verilog":13111,"verilog_hir":1183,"zig":15069},"repo":"t27","kinds":{"Module":13,"EnumDecl":1,"EnumVariant":13,"StructDecl":4,"ExprIdentifier":94,"FnDecl":14,"ExprReturn":20,"ExprStructLit":38,"ExprFieldAccess":282,"ExprLiteral":239,"ExprCall":40,"StmtLocal":10,"ExprArrayLiteral":1,"StmtWhile":4,"ExprBinary":25,"StmtAssign":10,"ExprIndex":4,"StmtIf":8,"TestBlock":17,"StmtExpr":53,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 4 structs and 1 enum. Carries 17 tests, 4 invariants and 1 bench. 372 lines compile to 4,069 tokens and 895 AST nodes, depth 11. Emits 5 of 5 backends; largest is Zig at 14.7 KB. Clean through every layer."},{"path":"specs/fpga/ternary_isa.t27","category":"specs/fpga","name":"ternary_isa","module":"TernaryIsa","lines":545,"bytes":14728,"description":"t27/specs/fpga/ternary_isa.t27 Ternary ISA Hardware Implementation Specification for Trinity T27 FPGA HIR Bridges software ISA (27 registers, balanced ternary) to silicon Connects GF16 arithmetic, ternary gates, and phi-identity to hardware Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":2336,"nodes":684,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11902,"rust":7106,"verilog":21305,"verilog_hir":1934,"zig":12682},"repo":"t27","kinds":{"Module":20,"ConstDecl":7,"ExprLiteral":113,"EnumDecl":1,"EnumVariant":7,"StructDecl":5,"ExprIdentifier":136,"FnDecl":30,"ExprReturn":30,"ExprStructLit":12,"ExprFieldAccess":99,"ExprBinary":53,"StmtLocal":13,"ExprCall":3,"StmtIf":18,"StmtAssign":21,"StmtWhile":1,"ExprIndex":1,"TestBlock":29,"StmtExpr":76,"InvariantBlock":7,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 30 functions, 5 structs, 1 enum and 7 constants. Carries 29 tests, 7 invariants and 2 benches. 545 lines compile to 2,336 tokens and 684 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Clean through every layer."},{"path":"specs/fpga/ternary_link.t27","category":"specs/fpga","name":"ternary_link","module":"ZeroDSP_TernaryLink","lines":548,"bytes":20157,"description":"t27/specs/fpga/ternary_link.t27 TRI-NET ternary line code: 3B2T over a three-level physical layer. WHY THIS EXISTS. W652 measured that the \"ternary internet\" was binary at every layer: specs/fpga/bpsk.t27 carries SYM_POS=1 and SYM_NEG=-1 and no zero state anywhere, tri-net's wire header is 11 binary bytes, and nothing three-valued ever crossed between two nodes. This module is the smallest object that makes","health":"ok","tokens":1509,"nodes":467,"depth":19,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9403,"rust":1619,"verilog":18430,"verilog_hir":1222,"zig":10477},"repo":"t27","kinds":{"Module":49,"UseDecl":1,"ConstDecl":18,"ExprLiteral":55,"FnDecl":14,"StmtIf":24,"ExprBinary":35,"ExprIdentifier":60,"ExprReturn":38,"ExprUnary":8,"ExprCall":6,"TestBlock":46,"StmtExpr":92,"InvariantBlock":21},"tags":["domain/fpga","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions and 18 constants. Carries 46 tests and 21 invariants. 548 lines compile to 1,509 tokens and 467 AST nodes, depth 19. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Clean through every layer."},{"path":"specs/fpga/testbench.t27","category":"specs/fpga","name":"testbench","module":"Testbench","lines":271,"bytes":6930,"description":"t27/specs/fpga/testbench.t27 T27 HIR Testbench Auto-Generation Specification Automatically generates Verilog testbenches from HIR modules Includes clock generation, reset sequencing, stimulus, and checking Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1144,"nodes":275,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6269,"rust":3246,"verilog":11518,"verilog_hir":1479,"zig":6133},"repo":"t27","kinds":{"Module":7,"StructDecl":5,"ExprIdentifier":69,"FnDecl":15,"ExprReturn":15,"ExprStructLit":6,"ExprFieldAccess":34,"ExprLiteral":24,"ExprBinary":18,"StmtLocal":5,"StmtIf":5,"StmtAssign":6,"StmtWhile":1,"ExprIndex":1,"TestBlock":16,"StmtExpr":44,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions and 5 structs. Carries 16 tests, 3 invariants and 1 bench. 271 lines compile to 1,144 tokens and 275 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.2 KB. Clean through every layer."},{"path":"specs/fpga/testbench/apb_bridge_tb.t27","category":"specs/fpga","name":"apb_bridge_tb","module":"APB_Bridge_Testbench","lines":144,"bytes":3247,"description":"t27/specs/fpga/testbench/apb_bridge_tb.t27 APB Bridge Testbench Tests APB bus protocol: setup, access, wait states","health":"ok","tokens":604,"nodes":265,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3436,"rust":963,"verilog":6904,"verilog_hir":1230,"zig":2370},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":16,"ExprLiteral":63,"FnDecl":4,"StmtAssign":31,"ExprIdentifier":53,"StmtExpr":22,"ExprCall":26,"StmtWhile":6,"ExprUnary":3,"ExprReturn":2,"StmtLocal":7,"TestBlock":6,"ExprBinary":15,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 16 constants. Carries 6 tests, 2 invariants and 1 bench. 144 lines compile to 604 tokens and 265 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/assembler_tb.t27","category":"specs/fpga","name":"assembler_tb","module":"Assembler_Testbench","lines":111,"bytes":2952,"description":"t27/specs/fpga/testbench/assembler_tb.t27 Assembler/Linker Integration Testbench Tests ternary instruction encoding, program assembly, and memory linking","health":"ok","tokens":607,"nodes":204,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3761,"rust":1402,"verilog":6801,"verilog_hir":1322,"zig":3018},"repo":"t27","kinds":{"Module":2,"UseDecl":2,"ConstDecl":17,"ExprLiteral":52,"FnDecl":6,"StmtAssign":11,"ExprIdentifier":37,"StmtExpr":7,"ExprCall":9,"StmtLocal":5,"ExprFieldAccess":16,"ExprBinary":26,"ExprReturn":4,"TestBlock":6,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 17 constants. Carries 6 tests, 2 invariants and 1 bench. 111 lines compile to 607 tokens and 204 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/fpga/testbench/axi4_tb.t27","category":"specs/fpga","name":"axi4_tb","module":"AXI4_Testbench","lines":179,"bytes":4359,"description":"t27/specs/fpga/testbench/axi4_tb.t27 AXI4 Bus Testbench Specification Tests AXI4 read/write channels, burst support, and protocol compliance","health":"warn","tokens":797,"nodes":329,"depth":9,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":4107,"rust":1749,"verilog":8763,"verilog_hir":1800,"zig":3097},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"ConstDecl":37,"ExprLiteral":87,"FnDecl":4,"StmtAssign":31,"ExprIdentifier":58,"StmtExpr":22,"ExprCall":27,"StmtWhile":9,"ExprUnary":5,"StmtLocal":9,"ExprReturn":2,"TestBlock":7,"ExprBinary":17,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions and 37 constants. Carries 7 tests, 2 invariants and 1 bench. 179 lines compile to 797 tokens and 329 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.6 KB. Compiles with 6 type errors."},{"path":"specs/fpga/testbench/bootrom_tb.t27","category":"specs/fpga","name":"bootrom_tb","module":"BootROM_Testbench","lines":101,"bytes":2626,"description":"t27/specs/fpga/testbench/bootrom_tb.t27 Boot ROM Testbench Tests boot sequence, reset vector, and initial program loading","health":"ok","tokens":331,"nodes":118,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2639,"rust":987,"verilog":5259,"verilog_hir":905,"zig":1375},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":13,"ExprLiteral":25,"ExprIdentifier":25,"FnDecl":4,"StmtAssign":12,"StmtExpr":8,"ExprCall":9,"ExprReturn":3,"StmtLocal":2,"StmtIf":1,"ExprBinary":5,"StmtWhile":1,"TestBlock":4,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 13 constants. Carries 4 tests, 1 invariant and 1 bench. 101 lines compile to 331 tokens and 118 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/fpga/testbench/bridge_tb.t27","category":"specs/fpga","name":"bridge_tb","module":"Bridge_Testbench","lines":138,"bytes":3570,"description":"t27/specs/fpga/testbench/bridge_tb.t27 FPGA Bridge Testbench Tests data streaming, packet framing, and cross-domain transfers","health":"ok","tokens":485,"nodes":178,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3215,"rust":1043,"verilog":6665,"verilog_hir":937,"zig":2156},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":16,"ExprLiteral":38,"FnDecl":4,"StmtAssign":13,"ExprIdentifier":27,"StmtExpr":18,"ExprCall":21,"StmtIf":1,"ExprUnary":4,"ExprReturn":3,"StmtWhile":5,"StmtLocal":6,"TestBlock":6,"ExprBinary":5,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 16 constants. Carries 6 tests, 2 invariants and 1 bench. 138 lines compile to 485 tokens and 178 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Clean through every layer."},{"path":"specs/fpga/testbench/clock_domain_tb.t27","category":"specs/fpga","name":"clock_domain_tb","module":"ClockDomain_Testbench","lines":109,"bytes":2439,"description":"t27/specs/fpga/testbench/clock_domain_tb.t27 Clock Domain Crossing Testbench Tests CDC synchronizers, handshake, and metastability protection","health":"ok","tokens":403,"nodes":152,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3049,"rust":937,"verilog":6163,"verilog_hir":881,"zig":1907},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":14,"ExprLiteral":32,"FnDecl":5,"StmtAssign":11,"ExprIdentifier":20,"StmtExpr":20,"ExprCall":23,"StmtWhile":3,"ExprUnary":1,"ExprReturn":1,"TestBlock":5,"StmtLocal":5,"ExprBinary":5,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 14 constants. Carries 5 tests, 1 invariant and 1 bench. 109 lines compile to 403 tokens and 152 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.0 KB. Clean through every layer."},{"path":"specs/fpga/testbench/cts_tb.t27","category":"specs/fpga","name":"cts_tb","module":"CTS_Testbench","lines":119,"bytes":2939,"description":"t27/specs/fpga/testbench/cts_tb.t27 Clock Tree Synthesis Testbench Tests clock buffer insertion, skew balancing, and latency estimation","health":"ok","tokens":478,"nodes":164,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3802,"rust":1274,"verilog":7549,"verilog_hir":935,"zig":2478},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":13,"ExprLiteral":37,"FnDecl":5,"StmtAssign":9,"ExprIdentifier":32,"StmtExpr":7,"ExprCall":13,"ExprReturn":3,"ExprBinary":14,"StmtLocal":10,"StmtIf":1,"StmtWhile":2,"TestBlock":9,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 13 constants. Carries 9 tests, 2 invariants and 1 bench. 119 lines compile to 478 tokens and 164 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/fpga/testbench/dft_tb.t27","category":"specs/fpga","name":"dft_tb","module":"DFT_Testbench","lines":144,"bytes":3849,"description":"t27/specs/fpga/testbench/dft_tb.t27 Design-for-Test Testbench Tests scan chain insertion, BIST, and JTAG interface","health":"ok","tokens":542,"nodes":206,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3594,"rust":1446,"verilog":7375,"verilog_hir":977,"zig":3016},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":19,"ExprLiteral":50,"FnDecl":5,"StmtAssign":20,"ExprIdentifier":38,"StmtExpr":14,"ExprCall":16,"StmtLocal":7,"StmtWhile":3,"ExprBinary":13,"ExprFieldAccess":1,"ExprReturn":3,"ExprUnary":1,"StmtIf":1,"TestBlock":6,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 19 constants. Carries 6 tests, 2 invariants and 1 bench. 144 lines compile to 542 tokens and 206 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.2 KB. Clean through every layer."},{"path":"specs/fpga/testbench/fifo_tb.t27","category":"specs/fpga","name":"fifo_tb","module":"FIFO_Testbench","lines":177,"bytes":4379,"description":"t27/specs/fpga/testbench/fifo_tb.t27 FIFO Testbench Specification Tests sync/async FIFO operations, flags, overflow/underflow","health":"ok","tokens":637,"nodes":230,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3729,"rust":1265,"verilog":7838,"verilog_hir":1013,"zig":2645},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"ConstDecl":17,"ExprLiteral":49,"FnDecl":6,"StmtAssign":20,"ExprIdentifier":38,"StmtExpr":22,"ExprCall":27,"StmtIf":2,"ExprReturn":6,"StmtLocal":9,"StmtWhile":5,"ExprUnary":2,"ExprBinary":8,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions and 17 constants. Carries 7 tests, 2 invariants and 1 bench. 177 lines compile to 637 tokens and 230 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/formal_tb.t27","category":"specs/fpga","name":"formal_tb","module":"Formal_Testbench","lines":132,"bytes":3125,"description":"t27/specs/fpga/testbench/formal_tb.t27 Formal Verification Testbench Tests SVA assertion generation, cover points, and proof properties","health":"ok","tokens":495,"nodes":151,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3564,"rust":1243,"verilog":7574,"verilog_hir":927,"zig":2431},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":13,"ExprLiteral":38,"FnDecl":6,"StmtAssign":10,"ExprIdentifier":20,"StmtExpr":8,"ExprCall":15,"StmtIf":3,"ExprUnary":2,"ExprReturn":6,"ExprBinary":3,"StmtLocal":8,"StmtWhile":1,"TestBlock":9,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 13 constants. Carries 9 tests, 2 invariants and 1 bench. 132 lines compile to 495 tokens and 151 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/fpga/testbench/gf16_accel_tb.t27","category":"specs/fpga","name":"gf16_accel_tb","module":"GF16_Accel_Testbench","lines":136,"bytes":3024,"description":"t27/specs/fpga/testbench/gf16_accel_tb.t27 GF16 Accelerator Testbench Tests Golden Float 16 arithmetic: add, mul, MAC, phi identity","health":"warn","tokens":590,"nodes":215,"depth":7,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":3459,"rust":974,"verilog":7475,"verilog_hir":1211,"zig":2371},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":14,"ExprLiteral":49,"FnDecl":5,"StmtAssign":20,"ExprIdentifier":40,"StmtExpr":18,"ExprCall":28,"StmtWhile":4,"ExprUnary":3,"ExprReturn":3,"TestBlock":8,"StmtLocal":13,"InvariantBlock":1,"BenchBlock":1,"ExprBinary":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 5 functions and 14 constants. Carries 8 tests, 1 invariant and 1 bench. 136 lines compile to 590 tokens and 215 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Compiles with 3 type errors."},{"path":"specs/fpga/testbench/hir_tb.t27","category":"specs/fpga","name":"hir_tb","module":"HIR_Testbench","lines":105,"bytes":2327,"description":"t27/specs/fpga/testbench/hir_tb.t27 Hardware IR (HIR) Testbench Tests HIR node types, module hierarchy, and code generation paths","health":"ok","tokens":405,"nodes":133,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3124,"rust":882,"verilog":6360,"verilog_hir":803,"zig":1879},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":10,"ExprLiteral":31,"FnDecl":5,"StmtAssign":9,"ExprIdentifier":23,"StmtExpr":7,"ExprCall":14,"StmtLocal":8,"StmtWhile":2,"ExprBinary":7,"ExprReturn":3,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 10 constants. Carries 7 tests, 2 invariants and 1 bench. 105 lines compile to 405 tokens and 133 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.2 KB. Clean through every layer."},{"path":"specs/fpga/testbench/integration_tb.t27","category":"specs/fpga","name":"integration_tb","module":"Integration_Testbench","lines":126,"bytes":2971,"description":"t27/specs/fpga/testbench/integration_tb.t27 Full FPGA Integration Testbench Tests top-level connectivity: MAC + UART + SPI + Memory + Bridge","health":"ok","tokens":460,"nodes":215,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3568,"rust":807,"verilog":6725,"verilog_hir":723,"zig":2336},"repo":"t27","kinds":{"Module":3,"ConstDecl":14,"ExprLiteral":48,"FnDecl":3,"StmtAssign":33,"ExprIdentifier":42,"StmtExpr":23,"ExprCall":26,"ExprReturn":1,"ExprBinary":8,"ExprUnary":2,"TestBlock":6,"StmtLocal":2,"StmtWhile":2,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 14 constants. Carries 6 tests, 1 invariant and 1 bench. 126 lines compile to 460 tokens and 215 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/fpga/testbench/linker_tb.t27","category":"specs/fpga","name":"linker_tb","module":"Linker_Testbench","lines":89,"bytes":2000,"description":"t27/specs/fpga/testbench/linker_tb.t27 Linker Testbench Tests symbol resolution, address assignment, and section merging","health":"ok","tokens":360,"nodes":122,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2875,"rust":838,"verilog":5851,"verilog_hir":800,"zig":1636},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":11,"ExprLiteral":33,"FnDecl":4,"StmtAssign":5,"ExprIdentifier":17,"StmtExpr":7,"ExprCall":11,"StmtIf":1,"ExprBinary":10,"ExprReturn":3,"StmtLocal":6,"ExprUnary":1,"TestBlock":6,"InvariantBlock":1,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 6 tests, 1 invariant and 1 bench. 89 lines compile to 360 tokens and 122 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/mac_tb.t27","category":"specs/fpga","name":"mac_tb","module":"MAC_Testbench","lines":554,"bytes":17530,"description":"t27/specs/fpga/testbench/mac_tb.t27 MAC Unit Testbench Specification Tests ternary LUT multiplication, MAC operations, and accumulator","health":"warn","tokens":2572,"nodes":886,"depth":10,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":13231,"rust":8951,"verilog":22612,"verilog_hir":1885,"zig":13485},"repo":"t27","kinds":{"Module":12,"UseDecl":2,"ConstDecl":20,"ExprLiteral":176,"ExprStructLit":6,"ExprFieldAccess":8,"FnDecl":21,"StmtAssign":17,"ExprIdentifier":138,"ExprUnary":2,"ExprBinary":53,"StmtLocal":74,"StmtWhile":8,"StmtExpr":136,"ExprCall":146,"ExprIndex":6,"ExprIf":3,"ExprReturn":1,"ExprArrayLiteral":31,"StmtIf":2,"StmtBreak":1,"InvariantBlock":11,"TestBlock":9,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 21 functions and 20 constants. Carries 9 tests, 11 invariants and 3 benches. 554 lines compile to 2,572 tokens and 886 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 22.1 KB. Compiles with 5 type errors."},{"path":"specs/fpga/testbench/memory_tb.t27","category":"specs/fpga","name":"memory_tb","module":"Memory_Testbench","lines":150,"bytes":3899,"description":"t27/specs/fpga/testbench/memory_tb.t27 Memory Subsystem Testbench Tests BRAM, register file, and memory-mapped I/O operations","health":"ok","tokens":602,"nodes":253,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3550,"rust":911,"verilog":7285,"verilog_hir":1010,"zig":2461},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":15,"ExprLiteral":65,"FnDecl":4,"StmtAssign":19,"ExprIdentifier":41,"StmtExpr":27,"ExprCall":33,"StmtWhile":6,"ExprUnary":2,"ExprReturn":1,"TestBlock":7,"StmtLocal":8,"ExprBinary":15,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions and 15 constants. Carries 7 tests, 1 invariant and 1 bench. 150 lines compile to 602 tokens and 253 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"specs/fpga/testbench/partition_tb.t27","category":"specs/fpga","name":"partition_tb","module":"Partition_Testbench","lines":94,"bytes":2266,"description":"t27/specs/fpga/testbench/partition_tb.t27 FPGA Partition Testbench Tests floorplanning regions, hierarchical partitioning, and resource budgeting","health":"ok","tokens":367,"nodes":120,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3288,"rust":900,"verilog":6434,"verilog_hir":847,"zig":1929},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":9,"ExprLiteral":30,"FnDecl":5,"StmtAssign":5,"ExprIdentifier":18,"StmtExpr":6,"ExprCall":10,"StmtIf":2,"ExprBinary":9,"ExprReturn":5,"TestBlock":7,"StmtLocal":5,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 9 constants. Carries 7 tests, 2 invariants and 1 bench. 94 lines compile to 367 tokens and 120 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"specs/fpga/testbench/placement_tb.t27","category":"specs/fpga","name":"placement_tb","module":"Placement_Testbench","lines":115,"bytes":2993,"description":"t27/specs/fpga/testbench/placement_tb.t27 FPGA Placement Testbench Tests placement grid, resource allocation, and density constraints","health":"ok","tokens":556,"nodes":200,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3907,"rust":1378,"verilog":7692,"verilog_hir":964,"zig":2620},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":14,"ExprLiteral":46,"FnDecl":6,"StmtAssign":9,"ExprIdentifier":42,"StmtExpr":7,"ExprCall":14,"ExprReturn":5,"ExprBinary":23,"StmtIf":3,"StmtLocal":11,"TestBlock":8,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 14 constants. Carries 8 tests, 2 invariants and 1 bench. 115 lines compile to 556 tokens and 200 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.5 KB. Clean through every layer."},{"path":"specs/fpga/testbench/power_analysis_tb.t27","category":"specs/fpga","name":"power_analysis_tb","module":"PowerAnalysis_Testbench","lines":130,"bytes":3268,"description":"t27/specs/fpga/testbench/power_analysis_tb.t27 Power Analysis Testbench Tests utilization parsing, power estimation, and budget checking","health":"warn","tokens":244,"nodes":89,"depth":7,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":3110,"rust":407,"verilog":7059,"verilog_hir":587,"zig":1460},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":7,"ExprLiteral":19,"FnDecl":2,"StmtAssign":6,"ExprIdentifier":11,"StmtExpr":7,"ExprCall":10,"TestBlock":15,"StmtLocal":3,"InvariantBlock":1,"ExprBinary":3,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 2 functions and 7 constants. Carries 15 tests, 1 invariant and 1 bench. 130 lines compile to 244 tokens and 89 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.9 KB. Compiles with 1 type error."},{"path":"specs/fpga/testbench/power_tb.t27","category":"specs/fpga","name":"power_tb","module":"Power_Testbench","lines":118,"bytes":2926,"description":"t27/specs/fpga/testbench/power_tb.t27 Power Analysis Testbench Tests power domain management, gating, and estimation","health":"ok","tokens":472,"nodes":147,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3588,"rust":1279,"verilog":7079,"verilog_hir":1297,"zig":2165},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":16,"ExprLiteral":38,"FnDecl":7,"StmtAssign":11,"ExprIdentifier":24,"StmtExpr":9,"ExprCall":11,"StmtLocal":4,"ExprBinary":10,"ExprReturn":3,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 16 constants. Carries 7 tests, 2 invariants and 1 bench. 118 lines compile to 472 tokens and 147 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.9 KB. Clean through every layer."},{"path":"specs/fpga/testbench/router_tb.t27","category":"specs/fpga","name":"router_tb","module":"Router_Testbench","lines":112,"bytes":2833,"description":"t27/specs/fpga/testbench/router_tb.t27 FPGA Router Testbench Tests routing graph construction, pathfinding, and congestion estimation","health":"ok","tokens":555,"nodes":197,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3754,"rust":1256,"verilog":7614,"verilog_hir":1051,"zig":2438},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":14,"ExprLiteral":56,"FnDecl":5,"StmtAssign":9,"ExprIdentifier":35,"StmtExpr":6,"ExprCall":13,"StmtLocal":11,"StmtIf":3,"ExprBinary":21,"ExprReturn":4,"TestBlock":8,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 14 constants. Carries 8 tests, 2 invariants and 1 bench. 112 lines compile to 555 tokens and 197 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/fpga/testbench/simulator_tb.t27","category":"specs/fpga","name":"simulator_tb","module":"Simulator_Testbench","lines":92,"bytes":2071,"description":"t27/specs/fpga/testbench/simulator_tb.t27 Simulator Testbench Tests simulation engine: cycle stepping, event scheduling, and waveform output","health":"warn","tokens":328,"nodes":110,"depth":7,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":2762,"rust":876,"verilog":5834,"verilog_hir":826,"zig":1533},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":11,"ExprLiteral":26,"FnDecl":4,"StmtAssign":8,"ExprIdentifier":16,"ExprBinary":5,"StmtExpr":8,"ExprCall":11,"StmtLocal":4,"StmtWhile":1,"ExprReturn":3,"StmtIf":1,"TestBlock":6,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 6 tests, 1 invariant and 1 bench. 92 lines compile to 328 tokens and 110 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Compiles with 1 type error."},{"path":"specs/fpga/testbench/spi_tb.t27","category":"specs/fpga","name":"spi_tb","module":"SPI_Testbench","lines":138,"bytes":3743,"description":"t27/specs/fpga/testbench/spi_tb.t27 SPI Master Testbench Specification Tests SPI transfer, clock generation, chip select, and mode handling","health":"ok","tokens":507,"nodes":168,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3299,"rust":1050,"verilog":7183,"verilog_hir":930,"zig":2314},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":18,"ExprLiteral":41,"FnDecl":3,"StmtAssign":13,"ExprIdentifier":22,"StmtExpr":15,"ExprCall":22,"StmtLocal":9,"StmtWhile":2,"ExprUnary":1,"ExprBinary":4,"StmtIf":1,"ExprReturn":2,"TestBlock":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 18 constants. Carries 7 tests, 2 invariants and 1 bench. 138 lines compile to 507 tokens and 168 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.0 KB. Clean through every layer."},{"path":"specs/fpga/testbench/stdlib_tb.t27","category":"specs/fpga","name":"stdlib_tb","module":"Stdlib_Testbench","lines":112,"bytes":2313,"description":"t27/specs/fpga/testbench/stdlib_tb.t27 FPGA Stdlib Testbench Tests IP core catalog, parameter validation, and helper functions","health":"ok","tokens":474,"nodes":150,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3255,"rust":1032,"verilog":6248,"verilog_hir":848,"zig":1652},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"ConstDecl":8,"ExprLiteral":27,"FnDecl":6,"StmtAssign":7,"ExprIdentifier":34,"StmtExpr":9,"ExprCall":9,"StmtIf":5,"ExprBinary":12,"ExprReturn":9,"StmtLocal":3,"StmtWhile":2,"TestBlock":8,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 8 constants. Carries 8 tests, 1 invariant and 1 bench. 112 lines compile to 474 tokens and 150 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.1 KB. Clean through every layer."},{"path":"specs/fpga/testbench/ternary_isa_tb.t27","category":"specs/fpga","name":"ternary_isa_tb","module":"Ternary_ISA_Testbench","lines":148,"bytes":3310,"description":"t27/specs/fpga/testbench/ternary_isa_tb.t27 Ternary ISA Testbench Tests ternary instruction decode, ALU operations, and encoding","health":"ok","tokens":633,"nodes":202,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3569,"rust":1112,"verilog":7925,"verilog_hir":955,"zig":2155},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":18,"ExprLiteral":47,"FnDecl":5,"StmtAssign":23,"ExprIdentifier":38,"StmtExpr":16,"ExprCall":16,"StmtLocal":3,"ExprBinary":10,"StmtIf":2,"ExprReturn":5,"ExprUnary":1,"TestBlock":10,"InvariantBlock":1,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 18 constants. Carries 10 tests, 1 invariant and 1 bench. 148 lines compile to 633 tokens and 202 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.7 KB. Clean through every layer."},{"path":"specs/fpga/testbench/timing_tb.t27","category":"specs/fpga","name":"timing_tb","module":"Timing_Testbench","lines":98,"bytes":2410,"description":"t27/specs/fpga/testbench/timing_tb.t27 Timing Analysis Testbench Tests setup/hold checks, slack computation, and clock tree constraints","health":"ok","tokens":401,"nodes":132,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3213,"rust":849,"verilog":6745,"verilog_hir":852,"zig":2671},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":12,"ExprLiteral":36,"FnDecl":4,"StmtAssign":5,"ExprIdentifier":16,"StmtExpr":7,"ExprCall":13,"ExprReturn":3,"ExprBinary":9,"ExprFieldAccess":2,"StmtIf":1,"TestBlock":7,"StmtLocal":9,"InvariantBlock":2,"BenchBlock":1,"StmtWhile":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 12 constants. Carries 7 tests, 2 invariants and 1 bench. 98 lines compile to 401 tokens and 132 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/fpga/testbench/top_tb.t27","category":"specs/fpga","name":"top_tb","module":"Top_Level_Testbench","lines":218,"bytes":5630,"description":"t27/specs/fpga/testbench/top_tb.t27 Top-Level FPGA Testbench Specification Tests complete FPGA system with UART, SPI, MAC, and bridge","health":"ok","tokens":743,"nodes":253,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4707,"rust":2220,"verilog":8237,"verilog_hir":1406,"zig":4226},"repo":"t27","kinds":{"Module":6,"UseDecl":5,"ConstDecl":23,"ExprLiteral":60,"ExprArrayLiteral":5,"FnDecl":8,"StmtAssign":13,"ExprIdentifier":28,"ExprUnary":1,"ExprBinary":10,"StmtLocal":1,"StmtWhile":1,"StmtExpr":49,"ExprCall":29,"StmtIf":2,"InvariantBlock":5,"TestBlock":6,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 23 constants. Carries 6 tests, 5 invariants and 1 bench. 218 lines compile to 743 tokens and 253 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.0 KB. Clean through every layer."},{"path":"specs/fpga/testbench/uart_tb.t27","category":"specs/fpga","name":"uart_tb","module":"UART_Testbench","lines":397,"bytes":11145,"description":"t27/specs/fpga/testbench/uart_tb.t27 UART Testbench Specification Tests UART TX/RX functionality, state machines, and timing","health":"warn","tokens":1334,"nodes":536,"depth":9,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":9025,"rust":5117,"verilog":13864,"verilog_hir":1500,"zig":8523},"repo":"t27","kinds":{"Module":15,"UseDecl":2,"ConstDecl":17,"ExprLiteral":105,"FnDecl":14,"StmtAssign":17,"ExprIdentifier":81,"ExprUnary":5,"ExprBinary":45,"StmtIf":3,"StmtLocal":18,"StmtWhile":8,"StmtExpr":94,"ExprCall":85,"ExprFieldAccess":4,"ExprArrayLiteral":1,"ExprIndex":1,"InvariantBlock":11,"TestBlock":7,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 14 functions and 17 constants. Carries 7 tests, 11 invariants and 3 benches. 397 lines compile to 1,334 tokens and 536 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.5 KB. Compiles with 3 type errors."},{"path":"specs/fpga/testbench/vcd_conformance_compare_tb.t27","category":"specs/fpga","name":"vcd_conformance_compare_tb","module":"VcdConformanceCompare_Testbench","lines":107,"bytes":2650,"description":"t27/specs/fpga/testbench/vcd_conformance_compare_tb.t27 VCD Conformance Compare Testbench Tests the conformance comparison engine: batch compare, masking, value extraction","health":"warn","tokens":320,"nodes":120,"depth":9,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":3070,"rust":848,"verilog":6435,"verilog_hir":915,"zig":1591},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":10,"ExprLiteral":26,"FnDecl":3,"StmtAssign":12,"ExprIdentifier":25,"StmtExpr":6,"ExprCall":6,"StmtLocal":3,"StmtWhile":2,"ExprBinary":8,"StmtIf":1,"ExprIndex":2,"ExprReturn":1,"TestBlock":8,"InvariantBlock":1,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 3 functions and 10 constants. Carries 8 tests, 1 invariant and 1 bench. 107 lines compile to 320 tokens and 120 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Compiles with 3 type errors."},{"path":"specs/fpga/testbench/vcd_trace_tb.t27","category":"specs/fpga","name":"vcd_trace_tb","module":"VCD_Trace_Testbench","lines":86,"bytes":1929,"description":"t27/specs/fpga/testbench/vcd_trace_tb.t27 VCD Trace Testbench Tests waveform dump generation, signal hierarchy, and timestamp management","health":"ok","tokens":302,"nodes":101,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2778,"rust":777,"verilog":5761,"verilog_hir":910,"zig":1545},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"ConstDecl":11,"ExprLiteral":24,"FnDecl":4,"StmtAssign":9,"ExprIdentifier":16,"ExprBinary":4,"StmtExpr":7,"ExprCall":9,"StmtLocal":3,"StmtWhile":1,"ExprReturn":2,"TestBlock":5,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 5 tests, 2 invariants and 1 bench. 86 lines compile to 302 tokens and 101 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"specs/fpga/timing.t27","category":"specs/fpga","name":"timing","module":"Timing","lines":376,"bytes":9419,"description":"t27/specs/fpga/timing.t27 T27 Static Timing Analysis Specification Estimates critical path, slack, and Fmax from HIR module structure Artix-7 timing model: LUT=0.1ns, BRAM=2.0ns, DSP=2.5ns, routing=0.3ns Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1593,"nodes":416,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8514,"rust":4725,"verilog":15828,"verilog_hir":1970,"zig":8948},"repo":"t27","kinds":{"Module":11,"EnumDecl":1,"EnumVariant":5,"StructDecl":4,"ExprIdentifier":86,"FnDecl":25,"ExprReturn":28,"ExprStructLit":8,"ExprFieldAccess":50,"ExprLiteral":50,"ExprBinary":28,"StmtIf":8,"ExprCall":6,"ExprUnary":1,"StmtLocal":6,"StmtWhile":2,"StmtAssign":8,"ExprIndex":4,"TestBlock":24,"StmtExpr":58,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 25 functions, 4 structs and 1 enum. Carries 24 tests, 2 invariants and 1 bench. 376 lines compile to 1,593 tokens and 416 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Clean through every layer."},{"path":"specs/fpga/top_level.t27","category":"specs/fpga","name":"top_level","module":"ZeroDSP_TopLevel","lines":220,"bytes":5555,"description":"t27/specs/fpga/top_level.t27 ZeroDSP FPGA Top Level Module Integrates MAC and UART for FPGA deployment","health":"warn","tokens":797,"nodes":210,"depth":7,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5130,"rust":1530,"verilog":10381,"verilog_hir":1542,"zig":5435},"repo":"t27","kinds":{"Module":2,"UseDecl":3,"ConstDecl":12,"ExprLiteral":27,"StructDecl":1,"ExprIdentifier":26,"ExprStructLit":1,"ExprFieldAccess":18,"FnDecl":13,"StmtAssign":14,"ExprReturn":5,"ExprBinary":1,"StmtExpr":61,"ExprCall":2,"StmtIf":1,"TestBlock":18,"InvariantBlock":3,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 13 functions, 1 struct and 12 constants. Carries 18 tests, 3 invariants and 2 benches. 220 lines compile to 797 tokens and 210 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.1 KB. Compiles with 1 type error."},{"path":"specs/fpga/uart.t27","category":"specs/fpga","name":"uart","module":"ZeroDSP_UART","lines":225,"bytes":6511,"description":"t27/specs/fpga/uart.t27 ZeroDSP FPGA UART Specification UART for debugging and communication","health":"ok","tokens":838,"nodes":222,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5349,"rust":1953,"verilog":10437,"verilog_hir":1520,"zig":5131},"repo":"t27","kinds":{"Module":2,"UseDecl":3,"ConstDecl":11,"ExprLiteral":31,"ExprIdentifier":45,"StructDecl":2,"ExprStructLit":2,"ExprFieldAccess":34,"ExprBinary":2,"FnDecl":7,"ExprReturn":6,"StmtIf":1,"ExprUnary":1,"StmtAssign":17,"TestBlock":15,"StmtExpr":38,"InvariantBlock":2,"BenchBlock":3},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 11 constants. Carries 15 tests, 2 invariants and 3 benches. 225 lines compile to 838 tokens and 222 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.2 KB. Clean through every layer."},{"path":"specs/fpga/vcd_conformance_compare.t27","category":"specs/fpga","name":"vcd_conformance_compare","module":"VcdConformanceCompare","lines":401,"bytes":11536,"description":"t27/specs/fpga/vcd_conformance_compare.t27 T27 VCD Conformance Comparison Engine Compares VCD simulation traces against conformance vectors Parses VCD signal values and checks them against expected results Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":2057,"nodes":557,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10223,"rust":4884,"verilog":18954,"verilog_hir":2289,"zig":10648},"repo":"t27","kinds":{"Module":22,"StructDecl":3,"ExprIdentifier":130,"FnDecl":21,"ExprReturn":28,"ExprStructLit":4,"ExprFieldAccess":42,"ExprLiteral":62,"StmtLocal":16,"ExprCall":6,"ExprBinary":63,"StmtAssign":17,"StmtIf":16,"ExprIndex":6,"StmtWhile":4,"StmtExpr":72,"ExprUnary":2,"TestBlock":31,"InvariantBlock":11,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions and 3 structs. Carries 31 tests, 11 invariants and 1 bench. 401 lines compile to 2,057 tokens and 557 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 18.5 KB. Clean through every layer."},{"path":"specs/fpga/vcd_trace.t27","category":"specs/fpga","name":"vcd_trace","module":"VcdTrace","lines":292,"bytes":7555,"description":"t27/specs/fpga/vcd_trace.t27 T27 VCD Trace Emission Specification Emits Value Change Dump traces from HIR simulation IEEE 1364-2001 VCD format with variable sections Uses flat arrays + count fields (parser-compatible)","health":"ok","tokens":1433,"nodes":341,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6712,"rust":3682,"verilog":12582,"verilog_hir":1281,"zig":6780},"repo":"t27","kinds":{"Module":14,"EnumDecl":2,"EnumVariant":7,"StructDecl":4,"ExprIdentifier":86,"FnDecl":14,"ExprReturn":17,"ExprStructLit":4,"ExprFieldAccess":25,"ExprCall":5,"ExprLiteral":34,"StmtLocal":8,"StmtWhile":3,"ExprBinary":22,"StmtIf":10,"ExprIndex":7,"StmtAssign":10,"TestBlock":18,"StmtExpr":48,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/fpga","has/benches","has/enums","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 4 structs and 2 enums. Carries 18 tests, 2 invariants and 1 bench. 292 lines compile to 1,433 tokens and 341 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/fpga/verification/build_verify.t27","category":"specs/fpga","name":"build_verify","module":"BuildVerify","lines":87,"bytes":2190,"description":"t27/specs/fpga/verification/build_verify.t27 FPGA Build Verification Spec Validates all FPGA specs can generate Verilog and pass structural checks","health":"ok","tokens":303,"nodes":73,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3134,"rust":1057,"verilog":5830,"verilog_hir":429,"zig":1748},"repo":"t27","kinds":{"Module":2,"ConstDecl":6,"ExprLiteral":16,"StructDecl":2,"ExprIdentifier":18,"FnDecl":2,"ExprReturn":3,"ExprBinary":4,"ExprFieldAccess":1,"StmtIf":1,"TestBlock":9,"StmtLocal":3,"ExprCall":3,"InvariantBlock":3},"tags":["domain/fpga","has/functions","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 6 constants. Carries 9 tests and 3 invariants. 87 lines compile to 303 tokens and 73 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Clean through every layer."},{"path":"specs/functions/analytics-sales-advise.t27","category":"specs/functions","name":"analytics-sales-advise","module":"fn_analytics_sales_advise","lines":43,"bytes":3011,"description":"specs/functions/analytics-sales-advise.t27 -- function analytics-sales-advise (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=analytics-sales-advise). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L54 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":203,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1802,"rust":1580,"verilog":2798,"verilog_hir":279,"zig":2350},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 203 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/functions/analytics-skills-detect.t27","category":"specs/functions","name":"analytics-skills-detect","module":"fn_analytics_skills_detect","lines":43,"bytes":2854,"description":"specs/functions/analytics-skills-detect.t27 -- function analytics-skills-detect (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=analytics-skills-detect). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/skillDetector.ts#L30 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":199,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1651,"rust":1425,"verilog":2645,"verilog_hir":281,"zig":2196},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 199 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/functions/broadcast-message-send.t27","category":"specs/functions","name":"broadcast-message-send","module":"fn_broadcast_message_send","lines":43,"bytes":3023,"description":"specs/functions/broadcast-message-send.t27 -- function broadcast-message-send (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=broadcast-message-send). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/broadcast/broadcastMessage.ts#L22 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":202,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1816,"rust":1594,"verilog":2812,"verilog_hir":279,"zig":1762},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 202 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/functions/content-detailed-script-generate.t27","category":"specs/functions","name":"content-detailed-script-generate","module":"fn_content_detailed_script_generate","lines":43,"bytes":2913,"description":"specs/functions/content-detailed-script-generate.t27 -- function content-detailed-script-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-detailed-script-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateDetailedScript.ts#L191 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":200,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1702,"rust":1440,"verilog":2678,"verilog_hir":299,"zig":1618},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 200 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/functions/content-scenario-clips-generate.t27","category":"specs/functions","name":"content-scenario-clips-generate","module":"fn_content_scenario_clips_generate","lines":43,"bytes":2939,"description":"specs/functions/content-scenario-clips-generate.t27 -- function content-scenario-clips-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-scenario-clips-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateScenarioClips.ts#L221 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":202,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1728,"rust":1470,"verilog":2706,"verilog_hir":297,"zig":1647},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 202 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/functions/content-scripts-generate.t27","category":"specs/functions","name":"content-scripts-generate","module":"fn_content_scripts_generate","lines":43,"bytes":2964,"description":"specs/functions/content-scripts-generate.t27 -- function content-scripts-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-scripts-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateContentScripts.ts#L44 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":204,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1752,"rust":1522,"verilog":2744,"verilog_hir":283,"zig":1692},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 204 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/functions/instagram-competitors-find.t27","category":"specs/functions","name":"instagram-competitors-find","module":"fn_instagram_competitors_find","lines":43,"bytes":2960,"description":"specs/functions/instagram-competitors-find.t27 -- function instagram-competitors-find (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-competitors-find). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/findCompetitors.ts#L134 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":206,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1753,"rust":1515,"verilog":2741,"verilog_hir":287,"zig":1687},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 206 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/functions/instagram-reels-analyze.t27","category":"specs/functions","name":"instagram-reels-analyze","module":"fn_instagram_reels_analyze","lines":43,"bytes":3030,"description":"specs/functions/instagram-reels-analyze.t27 -- function instagram-reels-analyze (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-reels-analyze). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/analyzeCompetitorReels.ts#L211 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":208,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1815,"rust":1589,"verilog":2809,"verilog_hir":281,"zig":1758},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 208 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/functions/instagram-top-content-extract.t27","category":"specs/functions","name":"instagram-top-content-extract","module":"fn_instagram_top_content_extract","lines":43,"bytes":2816,"description":"specs/functions/instagram-top-content-extract.t27 -- function instagram-top-content-extract (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-top-content-extract). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/extractTopContent.ts#L33 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":200,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1611,"rust":1361,"verilog":2593,"verilog_hir":293,"zig":1536},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 200 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/functions/monitoring-error-report.t27","category":"specs/functions","name":"monitoring-error-report","module":"fn_monitoring_error_report","lines":43,"bytes":2906,"description":"specs/functions/monitoring-error-report.t27 -- function monitoring-error-report (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-error-report). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L175 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":200,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1694,"rust":1468,"verilog":2688,"verilog_hir":281,"zig":1637},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 200 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/functions/monitoring-health-check.t27","category":"specs/functions","name":"monitoring-health-check","module":"fn_monitoring_health_check","lines":43,"bytes":2777,"description":"specs/functions/monitoring-health-check.t27 -- function monitoring-health-check (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-health-check). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L235 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":197,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1566,"rust":1340,"verilog":2560,"verilog_hir":281,"zig":2111},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 197 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/functions/monitoring-logs-analyze.t27","category":"specs/functions","name":"monitoring-logs-analyze","module":"fn_monitoring_logs_analyze","lines":43,"bytes":2875,"description":"specs/functions/monitoring-logs-analyze.t27 -- function monitoring-logs-analyze (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-logs-analyze). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L352 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":199,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1673,"rust":1447,"verilog":2667,"verilog_hir":281,"zig":2218},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 199 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/functions/monitoring-logs-trigger.t27","category":"specs/functions","name":"monitoring-logs-trigger","module":"fn_monitoring_logs_trigger","lines":43,"bytes":2786,"description":"specs/functions/monitoring-logs-trigger.t27 -- function monitoring-logs-trigger (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-logs-trigger). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L408 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":200,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1584,"rust":1358,"verilog":2578,"verilog_hir":281,"zig":2129},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 200 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/functions/morph-images-generate.t27","category":"specs/functions","name":"morph-images-generate","module":"fn_morph_images_generate","lines":43,"bytes":3265,"description":"specs/functions/morph-images-generate.t27 -- function morph-images-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=morph-images-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/morphImages.ts#L30 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":212,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2059,"rust":1841,"verilog":3057,"verilog_hir":277,"zig":2008},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 212 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/functions/neuro-image-generate.t27","category":"specs/functions","name":"neuro-image-generate","module":"fn_neuro_image_generate","lines":43,"bytes":3321,"description":"specs/functions/neuro-image-generate.t27 -- function neuro-image-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=neuro-image-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/neuroImageGeneration.ts#L56 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":220,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2110,"rust":1896,"verilog":3110,"verilog_hir":275,"zig":2064},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 220 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/functions/payment-ai-server-process.t27","category":"specs/functions","name":"payment-ai-server-process","module":"fn_payment_ai_server_process","lines":43,"bytes":3423,"description":"specs/functions/payment-ai-server-process.t27 -- function payment-ai-server-process (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=payment-ai-server-process). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/payments/paymentProcessing.ts#L64 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":206,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2214,"rust":1980,"verilog":3204,"verilog_hir":285,"zig":2753},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 206 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/functions/reels-ai-callback.t27","category":"specs/functions","name":"reels-ai-callback","module":"fn_reels_ai_callback","lines":43,"bytes":2779,"description":"specs/functions/reels-ai-callback.t27 -- function reels-ai-callback (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-ai-callback). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/ai-reels-callback.ts#L158 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":200,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1581,"rust":1379,"verilog":2587,"verilog_hir":269,"zig":1542},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 200 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/functions/reels-ai-generate.t27","category":"specs/functions","name":"reels-ai-generate","module":"fn_reels_ai_generate","lines":43,"bytes":2894,"description":"specs/functions/reels-ai-generate.t27 -- function reels-ai-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-ai-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateAIReelsFunction.ts#L44 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":202,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1681,"rust":1479,"verilog":2687,"verilog_hir":269,"zig":1642},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 202 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/functions/reels-loop-generate.t27","category":"specs/functions","name":"reels-loop-generate","module":"fn_reels_loop_generate","lines":43,"bytes":3061,"description":"specs/functions/reels-loop-generate.t27 -- function reels-loop-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-loop-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts#L77 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":208,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1832,"rust":1622,"verilog":2834,"verilog_hir":273,"zig":1787},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 208 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/functions/render-avatar-video-run.t27","category":"specs/functions","name":"render-avatar-video-run","module":"fn_render_avatar_video_run","lines":43,"bytes":3151,"description":"specs/functions/render-avatar-video-run.t27 -- function render-avatar-video-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-avatar-video-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/renderAvatarVideo.ts#L174 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":222,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1934,"rust":1708,"verilog":2928,"verilog_hir":281,"zig":1879},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 222 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/functions/render-job-run.t27","category":"specs/functions","name":"render-job-run","module":"fn_render_job_run","lines":43,"bytes":2707,"description":"specs/functions/render-job-run.t27 -- function render-job-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-job-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/render.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":206,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1511,"rust":1321,"verilog":2523,"verilog_hir":263,"zig":1481},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 206 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/functions/render-riddle-run.t27","category":"specs/functions","name":"render-riddle-run","module":"fn_render_riddle_run","lines":43,"bytes":3276,"description":"specs/functions/render-riddle-run.t27 -- function render-riddle-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-riddle-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/renderRiddle.ts#L59 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":226,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2063,"rust":1861,"verilog":3069,"verilog_hir":269,"zig":2026},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 226 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/functions/training-model-complete.t27","category":"specs/functions","name":"training-model-complete","module":"fn_training_model_complete","lines":43,"bytes":3099,"description":"specs/functions/training-model-complete.t27 -- function training-model-complete (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-complete). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/handleModelTrainingCompleted.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":204,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1880,"rust":1654,"verilog":2874,"verilog_hir":281,"zig":2425},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 204 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/functions/training-model-start.t27","category":"specs/functions","name":"training-model-start","module":"fn_training_model_start","lines":43,"bytes":3260,"description":"specs/functions/training-model-start.t27 -- function training-model-start (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-start). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateModelTrainingFunction.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":214,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2035,"rust":1821,"verilog":3035,"verilog_hir":275,"zig":1987},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 214 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/functions/training-model-v2-start.t27","category":"specs/functions","name":"training-model-v2-start","module":"fn_training_model_v2_start","lines":43,"bytes":3434,"description":"specs/functions/training-model-v2-start.t27 -- function training-model-v2-start (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-v2-start). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/modelTrainingV2.ts#L45 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":220,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2219,"rust":1993,"verilog":3213,"verilog_hir":281,"zig":2164},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 220 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/functions/training-stuck-check.t27","category":"specs/functions","name":"training-stuck-check","module":"fn_training_stuck_check","lines":43,"bytes":3426,"description":"specs/functions/training-stuck-check.t27 -- function training-stuck-check (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-stuck-check). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/checkStuckTrainings.ts#L47 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":203,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2216,"rust":2002,"verilog":3216,"verilog_hir":275,"zig":2770},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 203 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/functions/webhook-generation-validate.t27","category":"specs/functions","name":"webhook-generation-validate","module":"fn_webhook_generation_validate","lines":43,"bytes":2977,"description":"specs/functions/webhook-generation-validate.t27 -- function webhook-generation-validate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=webhook-generation-validate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/webhookHealthGuard.ts#L147 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":194,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1781,"rust":1539,"verilog":2767,"verilog_hir":289,"zig":2314},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 194 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/functions/welcome-avatar-generate.t27","category":"specs/functions","name":"welcome-avatar-generate","module":"fn_welcome_avatar_generate","lines":43,"bytes":2916,"description":"specs/functions/welcome-avatar-generate.t27 -- function welcome-avatar-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=welcome-avatar-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/welcomeAvatarGeneration.ts#L108 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","health":"ok","tokens":204,"nodes":45,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1710,"rust":1484,"verilog":2704,"verilog_hir":281,"zig":2255},"repo":"t27","kinds":{"Module":1,"ConstDecl":22,"ExprLiteral":19,"ExprIdentifier":3},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 22 constants. 43 lines compile to 204 tokens and 45 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/git/diff.t27","category":"specs/git","name":"diff","module":"GitDiff","lines":230,"bytes":9190,"description":"specs/git/diff.t27 Git Diff Operations","health":"ok","tokens":1062,"nodes":248,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5499,"rust":1839,"verilog":10021,"verilog_hir":1158,"zig":5480},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":15,"StructDecl":2,"ExprIdentifier":35,"TestBlock":10,"StmtLocal":15,"ExprStructLit":4,"ExprFieldAccess":35,"ExprLiteral":43,"StmtExpr":24,"ExprCall":32,"ExprBinary":20,"ExprArrayLiteral":7,"ExprIndex":2,"ExprUnary":1},"tags":["domain/tools","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 15 functions and 2 structs. Carries 10 tests. 230 lines compile to 1,062 tokens and 248 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 9.8 KB. Clean through every layer."},{"path":"specs/git/operations.t27","category":"specs/git","name":"operations","module":"GitOperations","lines":176,"bytes":6613,"description":"specs/git/operations.t27 Git Command Operations","health":"ok","tokens":676,"nodes":128,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4710,"rust":1852,"verilog":8099,"verilog_hir":1516,"zig":4115},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":19,"TestBlock":8,"StmtLocal":6,"ExprStructLit":4,"ExprFieldAccess":18,"ExprLiteral":15,"ExprArrayLiteral":7,"ExprCall":19,"ExprIdentifier":9,"StmtExpr":12,"ExprBinary":8},"tags":["domain/tools","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 19 functions. Carries 8 tests. 176 lines compile to 676 tokens and 128 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.9 KB. Clean through every layer."},{"path":"specs/git/schema.t27","category":"specs/git","name":"schema","module":"Git","lines":229,"bytes":8379,"description":"specs/git/schema.t27 Git Types Specification","health":"ok","tokens":743,"nodes":281,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4835,"rust":2134,"verilog":9132,"verilog_hir":408,"zig":4383},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"EnumDecl":1,"EnumVariant":3,"StructDecl":7,"ExprIdentifier":59,"ConstDecl":4,"ExprLiteral":39,"FnDecl":3,"StmtIf":4,"ExprBinary":23,"ExprReturn":7,"ExprCall":36,"ExprUnary":4,"ExprFieldAccess":28,"TestBlock":13,"StmtLocal":13,"StmtExpr":22,"ExprStructLit":5,"ExprArrayLiteral":4},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 3 functions, 7 structs, 1 enum and 4 constants. Carries 13 tests. 229 lines compile to 743 tokens and 281 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.9 KB. Clean through every layer."},{"path":"specs/git/status.t27","category":"specs/git","name":"status","module":"GitStatus","lines":189,"bytes":7621,"description":"specs/git/status.t27 Git Status Operations","health":"ok","tokens":978,"nodes":217,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4263,"rust":1157,"verilog":8591,"verilog_hir":941,"zig":4529},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":13,"ExprReturn":3,"ExprCall":39,"ExprIdentifier":38,"TestBlock":9,"StmtLocal":18,"ExprStructLit":1,"ExprFieldAccess":16,"ExprLiteral":25,"StmtExpr":22,"ExprBinary":18,"ExprArrayLiteral":7,"ExprIndex":4,"ExprUnary":1},"tags":["domain/tools","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions. Carries 9 tests. 189 lines compile to 978 tokens and 217 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.4 KB. Clean through every layer."},{"path":"specs/github/auth.t27","category":"specs/github","name":"auth","module":"github","lines":27,"bytes":708,"description":"specs/github/auth.t27 GitHub Authentication for t27 Ring-072 - GitHub SSOT Integration","health":"ok","tokens":88,"nodes":20,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1528,"rust":478,"verilog":2579,"verilog_hir":374,"zig":518},"repo":"t27","kinds":{"Module":1,"ConstDecl":3,"ExprLiteral":4,"StructDecl":1,"ExprIdentifier":5,"FnDecl":1,"StmtLocal":1,"StmtAssign":1,"ExprFieldAccess":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 3 constants. Carries 1 test. 27 lines compile to 88 tokens and 20 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/github/comments.t27","category":"specs/github","name":"comments","module":"github","lines":18,"bytes":398,"description":"specs/github/comments.t27","health":"ok","tokens":64,"nodes":10,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1271,"rust":309,"verilog":2210,"verilog_hir":337,"zig":387},"repo":"t27","kinds":{"Module":1,"StructDecl":1,"ExprIdentifier":4,"FnDecl":1,"StmtLocal":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 18 lines compile to 64 tokens and 10 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/github/issues.t27","category":"specs/github","name":"issues","module":"github","lines":22,"bytes":484,"description":"specs/github/issues.t27","health":"ok","tokens":85,"nodes":14,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1479,"rust":402,"verilog":2545,"verilog_hir":358,"zig":495},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":6,"FnDecl":1,"StmtLocal":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 22 lines compile to 85 tokens and 14 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/github/prs.t27","category":"specs/github","name":"prs","module":"github","lines":22,"bytes":472,"description":"specs/github/prs.t27","health":"ok","tokens":85,"nodes":14,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1461,"rust":402,"verilog":2566,"verilog_hir":349,"zig":495},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":6,"FnDecl":1,"StmtLocal":1,"ExprReturn":1,"TestBlock":1},"tags":["domain/tools","has/functions","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 22 lines compile to 85 tokens and 14 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/github/tests/e2e_full_flow.t27","category":"specs/github","name":"e2e_full_flow","module":"github","lines":121,"bytes":3781,"description":"specs/github/tests/e2e_full_flow.t27 End-to-End Full Flow Test for Ring-072 GitHub SSOT Tests: Auth → Issue → PR → Comment → Sync → Cleanup Ring-074 - E2E Tests","health":"ok","tokens":633,"nodes":7,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":725,"rust":66,"verilog":1603,"verilog_hir":285,"zig":404},"repo":"t27","kinds":{"Module":1,"UseDecl":5,"TestBlock":1},"tags":["domain/tools","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares no top-level items. Carries 1 test. 121 lines compile to 633 tokens and 7 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Clean through every layer."},{"path":"specs/graph/knowledge_graph.t27","category":"specs/graph","name":"knowledge_graph","module":"KnowledgeGraph","lines":406,"bytes":17952,"description":"Module: Knowledge Graph for Vector Symbolic Architecture","health":"ok","tokens":1292,"nodes":122,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7574,"rust":2691,"verilog":13215,"verilog_hir":1196,"zig":8316},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":6,"ExprIdentifier":18,"ExprLiteral":5,"StructDecl":4,"FnDecl":15,"TestBlock":11,"StmtExpr":40,"InvariantBlock":10,"BenchBlock":8},"tags":["domain/graph","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 15 functions, 4 structs and 6 constants. Carries 11 tests, 10 invariants and 8 benches. 406 lines compile to 1,292 tokens and 122 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"specs/hslm/forward_pass.t27","category":"specs/hslm","name":"forward_pass","module":"ForwardPass","lines":306,"bytes":14237,"description":"Module: Minimal Forward Pass for LLM Inference","health":"ok","tokens":867,"nodes":70,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6300,"rust":2312,"verilog":10915,"verilog_hir":1492,"zig":5614},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":7,"ExprLiteral":7,"StructDecl":3,"ExprIdentifier":7,"FnDecl":12,"TestBlock":5,"StmtExpr":12,"InvariantBlock":5,"BenchBlock":8},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 3 structs and 7 constants. Carries 5 tests, 5 invariants and 8 benches. 306 lines compile to 867 tokens and 70 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 10.7 KB. Clean through every layer."},{"path":"specs/i18n/agents-ru.t27","category":"specs/i18n","name":"agents-ru","module":"i18n_agents_ru","lines":34,"bytes":1757,"description":"specs/i18n/agents-ru.t27 -- translation contract, Russian, for the agent specs Specs are English-only (LANG-EN). This module does not carry a single translated word: it declares WHICH fields of WHICH specs a bundle may translate, WHERE that bundle lives and HOW it is keyed, and what the site must do when a translation is missing. The Cyrillic payload is in the bundle file named below, never here. One module per locale: copy this file to agents-.t27 and change LOCALE","health":"ok","tokens":127,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":991,"rust":681,"verilog":1844,"verilog_hir":257,"zig":792},"repo":"t27","kinds":{"Module":1,"ConstDecl":13,"ExprLiteral":11,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 13 constants. 34 lines compile to 127 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/i18n/docs-ru.t27","category":"specs/i18n","name":"docs-ru","module":"i18n_docs_ru","lines":35,"bytes":1781,"description":"specs/i18n/docs-ru.t27 -- translation contract, Russian, for the system documentation Specs are English-only (LANG-EN). This module does not carry a single translated word: it declares WHICH fields of WHICH specs a bundle may translate, WHERE that bundle lives and HOW it is keyed, and what the site must do when a translation is missing. The Cyrillic payload is in the bundle file named below, never here. One module per locale: copy this file to docs-.t27 and change LOCALE and","health":"ok","tokens":121,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":938,"rust":636,"verilog":1795,"verilog_hir":253,"zig":745},"repo":"t27","kinds":{"Module":1,"ConstDecl":13,"ExprLiteral":11,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 13 constants. 35 lines compile to 121 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/igla/coder/_tmp_pipeline_import.t27","category":"specs/igla","name":"_tmp_pipeline_import","module":"igla-coder-pipeline","lines":2904,"bytes":105659,"description":"t27/specs/igla/coder/pipeline.t27 End-to-end inference pipeline: prompt -> tokenize -> forward -> decode Conceptual stubs for all stages requiring runtime support (BPE, model weights).","health":"ok","tokens":14114,"nodes":346,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6587,"rust":5246,"verilog":11000,"verilog_hir":1397,"zig":5254},"repo":"t27","kinds":{"Module":21,"UseDecl":7,"StructDecl":6,"ExprIdentifier":94,"FnDecl":15,"ExprReturn":34,"ExprCall":49,"ExprLiteral":40,"StmtIf":20,"ExprBinary":30,"ExprArrayLiteral":9,"StmtLocal":15,"ExprFieldAccess":4,"ExprIndex":2},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 15 functions and 6 structs. 2904 lines compile to 14,114 tokens and 346 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.7 KB. Clean through every layer."},{"path":"specs/igla/coder/arch.t27","category":"specs/igla","name":"arch","module":"igla-coder-arch","lines":2955,"bytes":95818,"description":"t27/specs/igla/coder/arch.t27 IGLA-Coder model architecture specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .push(), +=, **VOCAB_SIZE, var/let before if).","health":"ok","tokens":14707,"nodes":61,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2128,"rust":1689,"verilog":3958,"verilog_hir":304,"zig":1540},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":13,"ExprLiteral":13,"StructDecl":5,"ExprIdentifier":24,"FnDecl":1},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 5 structs and 13 constants. 2955 lines compile to 14,707 tokens and 61 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/igla/coder/bench_proxy.t27","category":"specs/igla","name":"bench_proxy","module":"igla-coder-bench-proxy","lines":1857,"bytes":63447,"description":"t27/specs/igla/coder/bench_proxy.t27 Proxy benchmark for VerilogEval-style RTL generation problems. Honest baseline: evaluates current IGLA-Coder templates against simplified combinational + sequential problems.","health":"warn","tokens":7158,"nodes":40,"depth":6,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2194,"rust":952,"verilog":3792,"verilog_hir":599,"zig":3006},"repo":"t27","kinds":{"Module":2,"BenchBlock":1,"UseDecl":1,"StructDecl":2,"ExprIdentifier":14,"FnDecl":4,"ExprReturn":4,"ExprArrayLiteral":2,"ExprCall":4,"ExprFieldAccess":1,"ExprLiteral":1,"StmtIf":1,"ExprBinary":1,"StmtLocal":1,"ExprIndex":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 1 bench. 1857 lines compile to 7,158 tokens and 40 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/igla/coder/benchmark.t27","category":"specs/igla","name":"benchmark","module":"igla-coder-benchmark","lines":5222,"bytes":191313,"description":"t27/specs/igla/coder/benchmark.t27 Benchmark infrastructure for Pass@K evaluation and competitive analysis","health":"ok","tokens":17729,"nodes":82,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2449,"rust":1767,"verilog":4565,"verilog_hir":568,"zig":1704},"repo":"t27","kinds":{"Module":4,"UseDecl":4,"StructDecl":4,"ExprIdentifier":39,"FnDecl":3,"StmtIf":3,"ExprBinary":4,"ExprLiteral":8,"ExprReturn":5,"ExprCall":4,"StmtLocal":2,"ExprFieldAccess":2},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 3 functions and 4 structs. 5222 lines compile to 17,729 tokens and 82 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Clean through every layer."},{"path":"specs/igla/coder/dataset.t27","category":"specs/igla","name":"dataset","module":"igla-coder-dataset","lines":3072,"bytes":127342,"description":"t27/specs/igla/coder/dataset.t27 Dataset builder for (prompt, RTL) pairs from Trinity templates","health":"warn","tokens":14450,"nodes":865,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":29887,"rust":28210,"verilog":37089,"verilog_hir":849,"zig":29478},"repo":"t27","kinds":{"Module":117,"UseDecl":2,"StructDecl":1,"ExprIdentifier":132,"FnDecl":6,"StmtIf":116,"ExprBinary":120,"ExprLiteral":234,"ExprReturn":121,"ExprCall":6,"ExprIndex":3,"ExprArrayLiteral":3,"StmtLocal":4},"tags":["domain/other","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 6 functions and 1 struct. 3072 lines compile to 14,450 tokens and 865 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 36.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/igla/coder/eval.t27","category":"specs/igla","name":"eval","module":"igla-coder-eval","lines":4267,"bytes":155196,"description":"t27/specs/igla/coder/eval.t27 IGLA-Coder evaluation specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .len(), @floatFromInt, let before if, etc). Uses recursion + if/return chains as the reliable pattern.","health":"warn","tokens":20871,"nodes":110,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2753,"rust":2058,"verilog":5025,"verilog_hir":462,"zig":2551},"repo":"t27","kinds":{"Module":5,"UseDecl":2,"ConstDecl":9,"ExprLiteral":15,"StructDecl":5,"ExprIdentifier":48,"FnDecl":2,"StmtIf":4,"ExprBinary":6,"ExprCall":5,"ExprReturn":4,"ExprFieldAccess":2,"ExprIndex":1,"StmtLocal":2},"tags":["domain/other","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 2 functions, 5 structs and 9 constants. 4267 lines compile to 20,871 tokens and 110 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/igla/coder/pipeline.t27","category":"specs/igla","name":"pipeline","module":"igla-coder-pipeline","lines":2891,"bytes":105237,"description":"t27/specs/igla/coder/pipeline.t27 End-to-end inference pipeline: prompt -> tokenize -> forward -> decode Conceptual stubs for all stages requiring runtime support (BPE, model weights).","health":"ok","tokens":14043,"nodes":345,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6587,"rust":5246,"verilog":11000,"verilog_hir":1397,"zig":5214},"repo":"t27","kinds":{"Module":21,"UseDecl":6,"StructDecl":6,"ExprIdentifier":94,"FnDecl":15,"ExprReturn":34,"ExprCall":49,"ExprLiteral":40,"StmtIf":20,"ExprBinary":30,"ExprArrayLiteral":9,"StmtLocal":15,"ExprFieldAccess":4,"ExprIndex":2},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 15 functions and 6 structs. 2891 lines compile to 14,043 tokens and 345 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.7 KB. Clean through every layer."},{"path":"specs/igla/coder/prm.t27","category":"specs/igla","name":"prm","module":"igla-coder-prm","lines":2200,"bytes":70266,"description":"t27/specs/igla/coder/prm.t27 Process Reward Model (PRM) specification for IGLA CODER Step-level verifiable rewards for sacred RTL / Rust code generation NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .push(), .contains(), +=, **, @floatFromInt, match, etc).","health":"ok","tokens":8560,"nodes":30,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1546,"rust":714,"verilog":2532,"verilog_hir":363,"zig":796},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"StructDecl":2,"ExprIdentifier":8,"EnumDecl":1,"EnumVariant":6,"FnDecl":1,"StmtLocal":1,"ExprIf":1,"ExprBinary":1,"ExprCall":1,"ExprLiteral":3},"tags":["domain/other","has/enums","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 2 structs and 1 enum. 2200 lines compile to 8,560 tokens and 30 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/igla/coder/tokenizer.t27","category":"specs/igla","name":"tokenizer","module":"igla-coder-tokenizer","lines":2010,"bytes":59620,"description":"t27/specs/igla/coder/tokenizer.t27 Conceptual tokenizer for Verilog / t27 syntax Deterministic character-level encoding (ASCII -> ID) for spec safety. Real BPE/SentencePiece requires runtime support.","health":"fail","tokens":0,"nodes":0,"depth":0,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{},"repo":"t27","kinds":{},"tags":["domain/other","health/fail","size/large","src/t27"],"summary":"Declares no top-level items. 2010 lines compile to 0 tokens and 0 AST nodes, depth 0. Rejected by ."},{"path":"specs/igla/coder/training.t27","category":"specs/igla","name":"training","module":"igla-coder-training","lines":2215,"bytes":65715,"description":"t27/specs/igla/coder/training.t27 IGLA-Coder training pipeline specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, return-if expressions, .push(), +=).","health":"ok","tokens":8551,"nodes":116,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2825,"rust":2221,"verilog":4853,"verilog_hir":389,"zig":2064},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":19,"ExprLiteral":25,"EnumDecl":1,"EnumVariant":5,"StructDecl":4,"ExprIdentifier":34,"FnDecl":2,"StmtLocal":5,"ExprBinary":15,"ExprReturn":1},"tags":["domain/other","has/enums","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 2 functions, 4 structs, 1 enum and 19 constants. 2215 lines compile to 8,551 tokens and 116 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.7 KB. Clean through every layer."},{"path":"specs/igla/coder/weights.t27","category":"specs/igla","name":"weights","module":"igla-coder-weights","lines":2086,"bytes":65611,"description":"t27/specs/igla/coder/weights.t27 Checkpoint / weight file loading stubs Bridges external checkpoint formats (GGUF, safetensors, custom) to WeightBank.","health":"warn","tokens":8780,"nodes":96,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2082,"rust":1110,"verilog":3338,"verilog_hir":640,"zig":1195},"repo":"t27","kinds":{"Module":8,"UseDecl":2,"StructDecl":1,"ExprIdentifier":22,"FnDecl":4,"StmtIf":7,"ExprBinary":11,"ExprCall":11,"ExprLiteral":19,"ExprReturn":9,"ExprIndex":2},"tags":["domain/other","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 4 functions and 1 struct. 2086 lines compile to 8,780 tokens and 96 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/igla/evaluation/multi_lang_harness.t27","category":"specs/igla","name":"multi_lang_harness","module":"IGLAMultiLangHarness","lines":111,"bytes":3616,"description":"t27/specs/","health":"ok","tokens":375,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3142,"rust":763,"verilog":5989,"verilog_hir":523,"zig":2289},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":4,"StructDecl":1,"ExprIdentifier":5,"FnDecl":4,"InvariantBlock":3,"TestBlock":6,"StmtExpr":6,"BenchBlock":3},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct and 1 enum. Carries 6 tests, 3 invariants and 3 benches. 111 lines compile to 375 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Clean through every layer."},{"path":"specs/igla/integration/publication.t27","category":"specs/igla","name":"publication","module":"IGLAPublication","lines":99,"bytes":3506,"description":"t27/specs/","health":"ok","tokens":343,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3162,"rust":933,"verilog":5683,"verilog_hir":483,"zig":2206},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":2,"EnumVariant":8,"StructDecl":1,"ExprIdentifier":6,"FnDecl":3,"BenchBlock":3,"InvariantBlock":3,"TestBlock":3,"StmtExpr":4},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 2 enums. Carries 3 tests, 3 invariants and 3 benches. 99 lines compile to 343 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/igla/race/adder_tree.t27","category":"specs/igla","name":"adder_tree","module":"igla-race-adder-tree","lines":2203,"bytes":61700,"description":"t27/specs/igla/race/adder_tree.t27 8-input binary tree adder -- O(log N) latency, multiplier-free RTL R-SI-1: zero '*' operators in generated assignments","health":"ok","tokens":9915,"nodes":1108,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":30184,"rust":710,"verilog":64987,"verilog_hir":532,"zig":47296},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":1,"ExprIdentifier":28,"FnDecl":2,"StmtLocal":8,"ExprBinary":10,"ExprFieldAccess":8,"ExprReturn":2,"TestBlock":223,"StmtExpr":733,"InvariantBlock":84,"BenchBlock":3,"ExprCall":2,"ExprLiteral":2},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 223 tests, 84 invariants and 3 benches. 2203 lines compile to 9,915 tokens and 1,108 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 63.5 KB. Clean through every layer."},{"path":"specs/igla/race/backend.t27","category":"specs/igla","name":"backend","module":"igla-race-backend","lines":2553,"bytes":72668,"description":"t27/specs/igla/race/backend.t27 R-SI-1 compile-time backend pass specification for IGLA RACE NOTE: This spec uses recursion instead of loops to avoid t27c parser body-truncation on unsupported constructs (for, while+if, var-before-if, .as_bytes(), @intCast, match, format!, .push(), .extend()).","health":"ok","tokens":8977,"nodes":31,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1406,"rust":437,"verilog":2309,"verilog_hir":497,"zig":713},"repo":"t27","kinds":{"Module":2,"UseDecl":2,"FnDecl":2,"ExprReturn":1,"ExprCall":4,"ExprIdentifier":9,"StructDecl":1,"StmtLocal":3,"ExprBinary":4,"ExprLiteral":2,"StmtIf":1},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 2 functions and 1 struct. 2553 lines compile to 8,977 tokens and 31 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/igla/race/bram_weights.t27","category":"specs/igla","name":"bram_weights","module":"igla-race-bram-weights","lines":2222,"bytes":77392,"description":"t27/specs/igla/race/bram_weights.t27 BRAM-based weight storage for embedded model inference Flattened 2D weight matrix addressing","health":"ok","tokens":12775,"nodes":52,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1820,"rust":838,"verilog":2946,"verilog_hir":553,"zig":880},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"StructDecl":2,"ExprIdentifier":18,"FnDecl":4,"ExprReturn":5,"ExprBinary":4,"ExprFieldAccess":5,"StmtLocal":2,"ExprCall":4,"StmtIf":2,"ExprLiteral":1,"ExprIndex":1},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 4 functions and 2 structs. 2222 lines compile to 12,775 tokens and 52 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/igla/race/cordic.t27","category":"specs/igla","name":"cordic","module":"igla-race-cordic","lines":2199,"bytes":61555,"description":"t27/specs/igla/race/cordic.t27 CORDIC sacred opcode for IGLA RACE -- shift-add sin/cos NOTE: Uses recursion instead of loops to avoid t27c parser truncation. All shift operations are emulated via precomputed POW2_NEG table.","health":"ok","tokens":7880,"nodes":1438,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":34542,"rust":4725,"verilog":73665,"verilog_hir":1346,"zig":50836},"repo":"t27","kinds":{"Module":50,"UseDecl":2,"StructDecl":1,"ExprIdentifier":103,"FnDecl":14,"StmtIf":49,"ExprBinary":67,"ExprLiteral":123,"ExprReturn":57,"ExprUnary":5,"StmtLocal":16,"ExprCall":20,"ExprFieldAccess":1,"ExprIndex":12,"TestBlock":221,"StmtExpr":609,"InvariantBlock":85,"BenchBlock":3},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions and 1 struct. Carries 221 tests, 85 invariants and 3 benches. 2199 lines compile to 7,880 tokens and 1,438 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 71.9 KB. Clean through every layer."},{"path":"specs/igla/race/cordic_fixed.t27","category":"specs/igla","name":"cordic_fixed","module":"igla-race-cordic-fixed","lines":2216,"bytes":60871,"description":"t27/specs/igla/race/cordic_fixed.t27 CORDIC shift-add sin/cos in fixed-point Q15 (signed 16-bit) Fixed-point convention: Q14 (1 sign + 14 fractional bits) Scale factor = 2^14 = 16384 All angles are NORMALIZED to [-1, 1] where 1.0 = PI radians. Thus angle PI/2 = 8192, PI/4 = 4096, etc.","health":"ok","tokens":7151,"nodes":1327,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":34528,"rust":3386,"verilog":75241,"verilog_hir":889,"zig":47461},"repo":"t27","kinds":{"Module":15,"UseDecl":1,"ConstDecl":9,"ExprLiteral":56,"FnDecl":8,"StmtIf":7,"ExprBinary":20,"ExprIdentifier":155,"ExprReturn":15,"StmtLocal":54,"ExprFieldAccess":2,"ExprCall":50,"ExprUnary":2,"TestBlock":228,"StmtExpr":616,"InvariantBlock":86,"BenchBlock":3},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 8 functions and 9 constants. Carries 228 tests, 86 invariants and 3 benches. 2216 lines compile to 7,151 tokens and 1,327 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 73.5 KB. Clean through every layer."},{"path":"specs/igla/race/cordic_top.t27","category":"specs/igla","name":"cordic_top","module":"igla-race-cordic-top","lines":2254,"bytes":67074,"description":"t27/specs/igla/race/cordic_top.t27 CORDIC top-level wrapper with AXI-stream-style handshaking Instantiates cordic_fixed core and adds clock/reset/valid/ready ports Parameterized Q15 fixed-point width (i16) Target: Lattice ECP5 or Xilinx Artix-7 via Yosys + nextpnr","health":"ok","tokens":9119,"nodes":1365,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":34553,"rust":3549,"verilog":74228,"verilog_hir":1049,"zig":56184},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"FnDecl":8,"StmtIf":6,"ExprUnary":1,"ExprIdentifier":156,"StmtLocal":53,"ExprCall":52,"ExprReturn":11,"ExprLiteral":52,"ExprBinary":16,"ExprIndex":1,"ExprFieldAccess":1,"ConstDecl":9,"InvariantBlock":86,"BenchBlock":3,"TestBlock":229,"StmtExpr":670},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 8 functions and 9 constants. Carries 229 tests, 86 invariants and 3 benches. 2254 lines compile to 9,119 tokens and 1,365 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 72.5 KB. Clean through every layer."},{"path":"specs/igla/race/eda.t27","category":"specs/igla","name":"eda","module":"igla-race-eda","lines":2452,"bytes":81941,"description":"t27/specs/igla/race/eda.t27 OpenROAD / EDA toolchain integration for IGLA RACE PPA feedback NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (.as_bytes(), @intCast, .contains(), .to_string(), format!()).","health":"ok","tokens":10136,"nodes":66,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1795,"rust":935,"verilog":3135,"verilog_hir":397,"zig":1718},"repo":"t27","kinds":{"Module":5,"UseDecl":2,"StructDecl":2,"ExprIdentifier":20,"FnDecl":2,"StmtLocal":4,"ExprLiteral":9,"StmtIf":4,"ExprFieldAccess":5,"StmtAssign":4,"ExprBinary":5,"ExprReturn":1,"ExprCall":3},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 2 functions and 2 structs. 2452 lines compile to 10,136 tokens and 66 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/igla/race/formal.t27","category":"specs/igla","name":"formal","module":"igla-race-formal","lines":2372,"bytes":78245,"description":"t27/specs/igla/race/formal.t27 IGLA RACE formal verification specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (.push(), .contains(), @floatFromInt, array concatenation with +).","health":"warn","tokens":10726,"nodes":70,"depth":6,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2573,"rust":1514,"verilog":4352,"verilog_hir":458,"zig":1535},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"ConstDecl":7,"ExprLiteral":10,"StructDecl":3,"ExprIdentifier":22,"EnumDecl":1,"EnumVariant":5,"FnDecl":2,"ExprReturn":3,"ExprCall":4,"ExprFieldAccess":1,"StmtIf":2,"ExprBinary":3,"ExprArrayLiteral":1,"StmtLocal":1},"tags":["domain/other","has/enums","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 2 functions, 3 structs, 1 enum and 7 constants. 2372 lines compile to 10,726 tokens and 70 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/igla/race/gemm.t27","category":"specs/igla","name":"gemm","module":"igla-race-gemm","lines":2272,"bytes":62079,"description":"t27/specs/igla/race/gemm.t27 GEMM via Booth-encoded shift-add (multiplier-free RTL) R-SI-1: zero '*' operators in generated assignments","health":"ok","tokens":9639,"nodes":129,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2090,"rust":926,"verilog":3462,"verilog_hir":670,"zig":1828},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"StructDecl":1,"ExprIdentifier":43,"FnDecl":4,"ExprReturn":4,"ExprCall":11,"ExprLiteral":12,"StmtIf":1,"ExprBinary":16,"StmtLocal":9,"ExprIf":4,"ExprUnary":3,"ExprFieldAccess":18},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 4 functions and 1 struct. 2272 lines compile to 9,639 tokens and 129 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/igla/race/mvp_ternary_classifier.t27","category":"specs/igla","name":"mvp_ternary_classifier","module":"IglaMvpTernaryClassifier","lines":325,"bytes":11284,"description":"t27/specs/igla/race/mvp_ternary_classifier.t27 The MVP: a complete ternary neural network, small enough that every number in it can be checked by hand, built to be placed on an XC7A200T with ZERO DSPs. WHY THIS SHAPE. The claim worth proving first is not \"a big model runs\" but \"a model runs AT ALL, with no multiplier anywhere\". A network small enough to verify by hand is the only one where a wrong answer is unmistakably wrong --","health":"ok","tokens":970,"nodes":276,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5707,"rust":1289,"verilog":11433,"verilog_hir":765,"zig":6493},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":9,"ExprLiteral":33,"FnDecl":9,"ExprReturn":13,"ExprFieldAccess":3,"ExprBinary":19,"ExprIdentifier":39,"StmtIf":4,"ExprCall":34,"TestBlock":31,"StmtExpr":62,"InvariantBlock":10},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 9 functions and 9 constants. Carries 31 tests and 10 invariants. 325 lines compile to 970 tokens and 276 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 11.2 KB. Clean through every layer."},{"path":"specs/igla/race/opcodes.t27","category":"specs/igla","name":"opcodes","module":"igla-race-opcodes","lines":2082,"bytes":59225,"description":"t27/specs/igla/race/opcodes.t27 IGLA RACE sacred opcode alphabet specification","health":"ok","tokens":5908,"nodes":1136,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":32545,"rust":2930,"verilog":72972,"verilog_hir":579,"zig":47829},"repo":"t27","kinds":{"Module":25,"UseDecl":2,"ConstDecl":14,"ExprLiteral":47,"StructDecl":2,"ExprIdentifier":64,"FnDecl":5,"ExprReturn":29,"ExprBinary":29,"StmtIf":24,"ExprCall":7,"ExprUnary":1,"ExprIndex":1,"TestBlock":231,"StmtExpr":564,"InvariantBlock":85,"BenchBlock":3,"StmtLocal":2,"StmtAssign":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 5 functions, 2 structs and 14 constants. Carries 231 tests, 85 invariants and 3 benches. 2082 lines compile to 5,908 tokens and 1,136 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 71.3 KB. Clean through every layer."},{"path":"specs/igla/race/phi_accumulator_growth.t27","category":"specs/igla","name":"phi_accumulator_growth","module":"IglaRacePhiAccumulatorGrowth","lines":287,"bytes":9687,"description":"t27/specs/igla/race/phi_accumulator_growth.t27 How wide must a Z[phi] accumulator be? Fan-in and depth answer differently. WHY THIS EXISTS. T93 measured the composed ternary node and stated its own limit in the same breath: \"The node is verified for a SINGLE MAC step. Fan-in, depth, and the accumulator width needed to keep (a,b) exact over many steps are NOT","health":"ok","tokens":828,"nodes":208,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5845,"rust":1848,"verilog":10658,"verilog_hir":1236,"zig":5592},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":20,"ExprLiteral":35,"FnDecl":16,"ExprReturn":18,"StmtIf":2,"ExprBinary":5,"ExprIdentifier":10,"ExprCall":25,"TestBlock":20,"StmtExpr":40,"InvariantBlock":11},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions and 20 constants. Carries 20 tests and 11 invariants. 287 lines compile to 828 tokens and 208 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 10.4 KB. Clean through every layer."},{"path":"specs/igla/race/phi_gain_freedom.t27","category":"specs/igla","name":"phi_gain_freedom","module":"IglaRacePhiGainFreedom","lines":246,"bytes":9035,"description":"t27/specs/igla/race/phi_gain_freedom.t27 What the phi alphabet gives up for the multiplier, stated as a count. WHY THIS EXISTS. T97 measured the two alphabets at equal area and stated its own standing limit: \"This compares AREA at equal structure. It does NOT compare ACCURACY... An area comparison at unequal accuracy is not a verdict.\"","health":"ok","tokens":496,"nodes":122,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4456,"rust":892,"verilog":7973,"verilog_hir":571,"zig":4519},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":12,"ExprLiteral":15,"FnDecl":5,"ExprReturn":6,"ExprBinary":5,"ExprIdentifier":9,"StmtIf":1,"ExprCall":2,"TestBlock":17,"StmtExpr":34,"InvariantBlock":12},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions and 12 constants. Carries 17 tests and 12 invariants. 246 lines compile to 496 tokens and 122 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.8 KB. Clean through every layer."},{"path":"specs/igla/race/phi_weights.t27","category":"specs/igla","name":"phi_weights","module":"IglaRacePhiWeights","lines":346,"bytes":11222,"description":"t27/specs/igla/race/phi_weights.t27 IGLA RACE: the Z[phi] weight datapath -- the missing link between RACE's ternary codes and the GFTernary alphabet they were named after. WHY THIS EXISTS. Measured 2026-08-13: specs/igla/race/ternary_inference.t27:20 \"Weights are stored as ternary codes (0=zero, 1=+1, 2=-1)\"","health":"ok","tokens":1001,"nodes":253,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6422,"rust":1437,"verilog":12513,"verilog_hir":1151,"zig":6550},"repo":"t27","kinds":{"Module":13,"UseDecl":1,"ConstDecl":12,"ExprLiteral":20,"FnDecl":13,"ExprReturn":19,"ExprIdentifier":43,"ExprBinary":14,"StmtIf":6,"ExprCall":11,"ExprUnary":1,"TestBlock":29,"StmtExpr":58,"InvariantBlock":13},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions and 12 constants. Carries 29 tests and 13 invariants. 346 lines compile to 1,001 tokens and 253 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/igla/race/rtl.t27","category":"specs/igla","name":"rtl","module":"igla-race-rtl","lines":2398,"bytes":72828,"description":"t27/specs/igla/race/rtl.t27 IGLA RACE RTL generation specification NOTE: Uses recursion instead of loops to avoid t27c parser truncation.","health":"warn","tokens":10983,"nodes":575,"depth":11,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8144,"rust":6852,"verilog":12871,"verilog_hir":2132,"zig":6424},"repo":"t27","kinds":{"Module":15,"UseDecl":3,"ConstDecl":4,"ExprLiteral":84,"StructDecl":6,"ExprIdentifier":175,"FnDecl":19,"ExprReturn":32,"ExprCall":44,"StmtIf":14,"ExprBinary":98,"ExprIndex":18,"ExprFieldAccess":29,"StmtLocal":32,"ExprIf":2},"tags":["domain/other","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 19 functions, 6 structs and 4 constants. 2398 lines compile to 10,983 tokens and 575 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/igla/race/systolic_array.t27","category":"specs/igla","name":"systolic_array","module":"igla-race-systolic-array","lines":2384,"bytes":75711,"description":"t27/specs/igla/race/systolic_array.t27 2x2 weight-stationary systolic GEMM Registered partial products, shift-add Booth multipliers R-SI-1: zero '*' operators in generated assignments","health":"ok","tokens":12808,"nodes":90,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2031,"rust":1163,"verilog":3572,"verilog_hir":669,"zig":1680},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"StructDecl":2,"ExprIdentifier":35,"FnDecl":4,"ExprReturn":4,"ExprCall":3,"ExprLiteral":12,"StmtIf":1,"ExprBinary":12,"StmtLocal":5,"ExprIf":4,"ExprUnary":3,"ExprFieldAccess":2},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 4 functions and 2 structs. 2384 lines compile to 12,808 tokens and 90 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/igla/race/systolic_ternary.t27","category":"specs/igla","name":"systolic_ternary","module":"igla-race-systolic-ternary","lines":2614,"bytes":90182,"description":"t27/specs/igla/race/systolic_ternary.t27 Systolic ternary processing element (PE) for streaming GEMM Connects ternary GEMM to weight-stationary systolic arrays","health":"warn","tokens":12762,"nodes":20,"depth":5,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1472,"rust":470,"verilog":2279,"verilog_hir":559,"zig":695},"repo":"t27","kinds":{"Module":2,"UseDecl":2,"StructDecl":1,"ExprIdentifier":7,"FnDecl":2,"StmtLocal":2,"ExprCall":1,"ExprBinary":1,"StmtIf":1,"ExprUnary":1},"tags":["domain/other","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 2 functions and 1 struct. 2614 lines compile to 12,762 tokens and 20 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/igla/race/ternary_dot_sw.t27","category":"specs/igla","name":"ternary_dot_sw","module":"igla-race-ternary-dot-sw","lines":450,"bytes":14130,"description":"t27/specs/igla/race/ternary_dot_sw.t27 The slice dot product -- SOFTWARE ONLY, and that is the point of the file. WHY THIS EXISTS. W808 measured that `.len()` on a slice parameter reaches the generated Verilog verbatim (T509). `compiler.rs:6962` handles that spelling for the Zig backend only; the Verilog backend has no case for it, Verilog has neither dynamic arrays nor methods, and the file fails elaboration -- taking the","health":"ok","tokens":3053,"nodes":359,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6866,"rust":360,"verilog":16069,"verilog_hir":441,"zig":13039},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"FnDecl":1,"StmtIf":2,"ExprBinary":4,"ExprIdentifier":13,"ExprCall":4,"ExprReturn":3,"StmtLocal":1,"ExprIndex":2,"ExprLiteral":1,"TestBlock":51,"StmtExpr":264,"InvariantBlock":7,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 1 function. Carries 51 tests, 7 invariants and 1 bench. 450 lines compile to 3,053 tokens and 359 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 15.7 KB. Clean through every layer."},{"path":"specs/igla/race/ternary_gemm.t27","category":"specs/igla","name":"ternary_gemm","module":"igla-race-ternary-gemm","lines":2368,"bytes":113123,"description":"t27/specs/igla/race/ternary_gemm.t27 Ternary GEMM specification -- 2x2 matrix multiply with {-1,0,+1} weights Uses flattened 1D arrays; zero * operators in multiply path (R-SI-1)","health":"ok","tokens":25070,"nodes":77,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1539,"rust":675,"verilog":2473,"verilog_hir":430,"zig":837},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":19,"FnDecl":2,"StmtLocal":5,"ExprCall":9,"ExprIndex":16,"ExprLiteral":20,"ExprReturn":1,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 2 functions and 1 struct. 2368 lines compile to 25,070 tokens and 77 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/igla/race/ternary_inference.t27","category":"specs/igla","name":"ternary_inference","module":"igla-race-ternary-inference","lines":1764,"bytes":82085,"description":"t27/specs/igla/race/ternary_inference.t27 End-to-end ternary ML inference pipeline. Connects CODER weights → RACE BRAM → ternary GEMM → systolic array. This is the first spec demonstrating a complete inference flow on ternary hardware.","health":"ok","tokens":12731,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1226,"rust":530,"verilog":1896,"verilog_hir":364,"zig":688},"repo":"t27","kinds":{"Module":1,"UseDecl":5,"StructDecl":3,"ExprIdentifier":3,"FnDecl":1},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function and 3 structs. 1764 lines compile to 12,731 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/igla/race/ternary_lut_table.t27","category":"specs/igla","name":"ternary_lut_table","module":"IglaRaceTernaryLutTable","lines":241,"bytes":8792,"description":"t27/specs/igla/race/ternary_lut_table.t27 The mu-deep LUT: partial sums computed ONCE, selected by K output neurons. WHY THIS EXISTS. W806 built `ternary_mac_group.t27` -- eight ternary lanes sharing one 32-bit accumulator -- and it went the wrong way: CARRY4 per multiply fell from 10.0 to 3.0 exactly as forecast, and LUT per multiply rose from 33.00 to 63.25, because eight independent per-lane selects built 172","health":"ok","tokens":976,"nodes":207,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5253,"rust":1568,"verilog":9165,"verilog_hir":879,"zig":5483},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":16,"ExprLiteral":17,"FnDecl":3,"StmtIf":8,"ExprBinary":13,"ExprIdentifier":59,"ExprReturn":7,"StmtLocal":10,"ExprFieldAccess":3,"ExprCall":5,"TestBlock":15,"StmtExpr":30,"InvariantBlock":10,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 3 functions and 16 constants. Carries 15 tests, 10 invariants and 1 bench. 241 lines compile to 976 tokens and 207 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 9.0 KB. Clean through every layer."},{"path":"specs/igla/race/ternary_mac.t27","category":"specs/igla","name":"ternary_mac","module":"igla-race-ternary-mac","lines":2430,"bytes":70428,"description":"t27/specs/igla/race/ternary_mac.t27 Ternary {-1, 0, +1} multiply-accumulate unit Zero '*' operators in generated assignments -- pure sign-flip / zero / add-sub","health":"ok","tokens":10228,"nodes":1333,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":33859,"rust":967,"verilog":72334,"verilog_hir":630,"zig":55242},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"StructDecl":1,"ExprIdentifier":25,"FnDecl":4,"StmtIf":6,"ExprBinary":9,"ExprFieldAccess":2,"ExprLiteral":11,"ExprReturn":10,"ExprUnary":2,"StmtLocal":3,"ExprCall":8,"ExprIndex":2,"TestBlock":233,"StmtExpr":922,"BenchBlock":3,"InvariantBlock":84},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 233 tests, 84 invariants and 3 benches. 2430 lines compile to 10,228 tokens and 1,333 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 70.6 KB. Clean through every layer."},{"path":"specs/igla/race/ternary_mac_group.t27","category":"specs/igla","name":"ternary_mac_group","module":"IglaRaceTernaryMacGroup","lines":239,"bytes":9425,"description":"t27/specs/igla/race/ternary_mac_group.t27 Eight ternary lanes sharing ONE wide accumulator -- the mu > 1 point. WHY THIS EXISTS. W806 measured `specs/igla/race/ternary_mac.t27` at **66 LUT, 20 CARRY4, 0 DSP48E1** for a single runtime-weight ternary MAC (T499). Against the 2026 state of the art -- arXiv:2604.25183 at 19.27 LUT per multiply, INT8 activations, runtime weights -- that is 3.4x behind, and the","health":"ok","tokens":1232,"nodes":260,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6027,"rust":2195,"verilog":11148,"verilog_hir":1176,"zig":5874},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":9,"ExprLiteral":25,"FnDecl":12,"StmtIf":2,"ExprBinary":25,"ExprIdentifier":64,"ExprReturn":13,"ExprFieldAccess":17,"StmtLocal":15,"ExprCall":18,"TestBlock":16,"StmtExpr":32,"InvariantBlock":7,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions and 9 constants. Carries 16 tests, 7 invariants and 1 bench. 239 lines compile to 1,232 tokens and 260 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.9 KB. Clean through every layer."},{"path":"specs/igla/race/ternary_node.t27","category":"specs/igla","name":"ternary_node","module":"IglaRaceTernaryNode","lines":308,"bytes":10810,"description":"t27/specs/igla/race/ternary_node.t27 The composed ternary node: wire -> weight -> Z[phi] accumulator, end to end. WHAT THIS COMPOSES. Three specs were built and verified independently in W653-W655, each closing one boundary: specs/fpga/ternary_link.t27 3B2T line code, {-1,0,+1} on the wire (T79/T87) specs/igla/race/phi_weights Z[phi] weight application, (a,b)->(b,a+b) (T89)","health":"ok","tokens":986,"nodes":230,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6190,"rust":1279,"verilog":11814,"verilog_hir":1014,"zig":6066},"repo":"t27","kinds":{"Module":15,"UseDecl":1,"ConstDecl":8,"ExprLiteral":15,"FnDecl":10,"StmtIf":7,"ExprBinary":14,"ExprIdentifier":44,"ExprReturn":17,"ExprCall":10,"TestBlock":26,"StmtExpr":52,"InvariantBlock":11},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 8 constants. Carries 26 tests and 11 invariants. 308 lines compile to 986 tokens and 230 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.5 KB. Clean through every layer."},{"path":"specs/igla/race/unit_weights_node.t27","category":"specs/igla","name":"unit_weights_node","module":"IglaRaceUnitWeightsNode","lines":247,"bytes":8722,"description":"t27/specs/igla/race/unit_weights_node.t27 The CONTROL for T93: a ternary node on the unit alphabet {-1,0,+1}, built to be measured beside specs/igla/race/ternary_node.t27. WHY THIS EXISTS. T93 measured the phi node at ZERO DSPs and stated, in the same breath, that the figure is a measurement of ONE SIDE: \"If a {-1,0,+1} node with a per-layer scale synthesised to zero DSPs at","health":"ok","tokens":704,"nodes":172,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4894,"rust":1015,"verilog":9107,"verilog_hir":863,"zig":4573},"repo":"t27","kinds":{"Module":11,"UseDecl":1,"ConstDecl":7,"ExprLiteral":12,"FnDecl":8,"StmtIf":5,"ExprBinary":10,"ExprIdentifier":32,"ExprReturn":13,"ExprCall":7,"TestBlock":19,"StmtExpr":38,"InvariantBlock":9},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 7 constants. Carries 19 tests and 9 invariants. 247 lines compile to 704 tokens and 172 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.9 KB. Clean through every layer."},{"path":"specs/igla/race/yosys.t27","category":"specs/igla","name":"yosys","module":"igla-race-yosys","lines":2397,"bytes":68860,"description":"t27/specs/igla/race/yosys.t27 Yosys / SymbiYosys formal verification integration for IGLA RACE NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (format!(), match, +=, .as_bytes(), @intCast, .to_string()).","health":"ok","tokens":8546,"nodes":18,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1153,"rust":294,"verilog":1985,"verilog_hir":306,"zig":557},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"StmtLocal":3,"ExprCall":3,"ExprLiteral":3},"tags":["domain/other","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function and 1 struct. 2397 lines compile to 8,546 tokens and 18 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/igla/training/low_bit_ternary.t27","category":"specs/igla","name":"low_bit_ternary","module":"IGLALowBitTernary","lines":99,"bytes":3310,"description":"t27/specs/","health":"ok","tokens":330,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3156,"rust":1037,"verilog":5681,"verilog_hir":600,"zig":2076},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":4,"StructDecl":3,"ExprIdentifier":9,"FnDecl":3,"BenchBlock":3,"InvariantBlock":3,"TestBlock":3,"StmtExpr":2},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 3 structs and 1 enum. Carries 3 tests, 3 invariants and 3 benches. 99 lines compile to 330 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/igla/training/pilot_pretraining.t27","category":"specs/igla","name":"pilot_pretraining","module":"IGLAPilotPretraining","lines":104,"bytes":3574,"description":"t27/specs/","health":"ok","tokens":370,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3156,"rust":997,"verilog":5706,"verilog_hir":571,"zig":2243},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":2,"ExprIdentifier":11,"FnDecl":4,"BenchBlock":3,"InvariantBlock":3,"TestBlock":3,"StmtExpr":4},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 2 structs and 1 enum. Carries 3 tests, 3 invariants and 3 benches. 104 lines compile to 370 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"specs/igla/training/roadmap.t27","category":"specs/igla","name":"roadmap","module":"IGLARoadmap","lines":94,"bytes":3133,"description":"t27/specs/","health":"ok","tokens":342,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2848,"rust":808,"verilog":5027,"verilog_hir":457,"zig":2016},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":5,"StructDecl":2,"ExprIdentifier":7,"FnDecl":3,"BenchBlock":2,"InvariantBlock":4,"TestBlock":3,"StmtExpr":3},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 1 enum. Carries 3 tests, 4 invariants and 2 benches. 94 lines compile to 342 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"specs/igla/training/scale_up.t27","category":"specs/igla","name":"scale_up","module":"IGLAScaleUp","lines":97,"bytes":3567,"description":"t27/specs/","health":"ok","tokens":339,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3022,"rust":944,"verilog":5217,"verilog_hir":509,"zig":2087},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":2,"ExprIdentifier":9,"FnDecl":3,"InvariantBlock":4,"TestBlock":3,"StmtExpr":2,"BenchBlock":2},"tags":["domain/other","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 1 enum. Carries 3 tests, 4 invariants and 2 benches. 97 lines compile to 339 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/igla/w535_bounded_while_module.t27","category":"specs/igla","name":"w535_bounded_while_module","module":"w535_bounded_while_module","lines":43,"bytes":1424,"description":"t27/specs/igla/w535_bounded_while_module.t27 W535 positive corpus witness: a bounded while loop remains Icarus-lowerable after tightening the predicate to reject while(true), non-lowerable struct fields, and imported-function calls.","health":"warn","tokens":104,"nodes":43,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1337,"rust":299,"verilog":2346,"verilog_hir":383,"zig":574},"repo":"t27","kinds":{"Module":2,"FnDecl":2,"StmtLocal":2,"ExprLiteral":10,"StmtWhile":1,"ExprBinary":3,"ExprIdentifier":8,"StmtAssign":2,"ExprReturn":2,"TestBlock":1,"StmtExpr":3,"ExprCall":7},"tags":["domain/other","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 2 functions. Carries 1 test. 43 lines compile to 104 tokens and 43 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/interop/gf_cross_language.t27","category":"specs/interop","name":"gf_cross_language","module":"GFCrossLanguageConformance","lines":99,"bytes":4295,"description":"GoldenFloat Cross-Language Conformance All languages must produce identical bits for identical inputs. Reference constant: GF32(φ) = 0x3FCF1BBD","health":"warn","tokens":404,"nodes":153,"depth":9,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2442,"rust":66,"verilog":5045,"verilog_hir":281,"zig":2495},"repo":"t27","kinds":{"Module":2,"UseDecl":3,"TestBlock":8,"StmtLocal":28,"ExprLiteral":22,"ExprCall":28,"ExprIdentifier":29,"StmtExpr":12,"ExprBinary":17,"ExprArrayLiteral":1,"StmtFor":1,"ExprUnary":2},"tags":["domain/network","has/imports","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 8 tests. 99 lines compile to 404 tokens and 153 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/isa/registers.t27","category":"specs/isa","name":"registers","module":"ISARegisters","lines":600,"bytes":23635,"description":"t27/specs/isa/registers.t27 TRI27 ISA Register File Specification Register definitions, Coptic encoding, and register file operations","health":"warn","tokens":2197,"nodes":472,"depth":8,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":9315,"rust":3860,"verilog":18480,"verilog_hir":999,"zig":11406},"repo":"t27","kinds":{"Module":13,"UseDecl":1,"ConstDecl":62,"ExprLiteral":58,"ExprIdentifier":87,"ExprArrayLiteral":1,"FnDecl":10,"StmtIf":10,"ExprBinary":17,"ExprReturn":17,"ExprStructLit":3,"ExprFieldAccess":12,"ExprIndex":4,"StmtAssign":6,"StmtLocal":9,"StmtWhile":1,"ExprCall":19,"ExprUnary":3,"StmtExpr":88,"TestBlock":26,"InvariantBlock":17,"BenchBlock":8},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 10 functions and 62 constants. Carries 26 tests, 17 invariants and 8 benches. 600 lines compile to 2,197 tokens and 472 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 1 type error."},{"path":"specs/isa/ternary_arithmetic.t27","category":"specs/isa","name":"ternary_arithmetic","module":"TernaryArithmetic","lines":501,"bytes":19778,"description":"t27/specs/isa/ternary_arithmetic.t27 Ternary Arithmetic Operations Specification Ring 064 - Balanced ternary arithmetic for T27 Defines addition, subtraction, multiplication, and division","health":"warn","tokens":2486,"nodes":438,"depth":12,"loss":30,"tcErrors":7,"failedBackends":[],"outBytes":{"c":7215,"rust":4218,"verilog":12655,"verilog_hir":1454,"zig":5261},"repo":"t27","kinds":{"Module":20,"UseDecl":1,"ConstDecl":6,"ExprLiteral":51,"FnDecl":10,"StmtLocal":22,"ExprBinary":46,"ExprIdentifier":149,"StmtIf":7,"StmtAssign":29,"ExprUnary":7,"ExprReturn":13,"ExprStructLit":2,"ExprFieldAccess":16,"StructDecl":4,"ExprCall":13,"StmtWhile":8,"ExprIndex":17,"TestBlock":7,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 10 functions, 4 structs and 6 constants. Carries 7 tests, 6 invariants and 4 benches. 501 lines compile to 2,486 tokens and 438 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 12.4 KB. Compiles with 30 items dropped by error recovery and 7 type errors."},{"path":"specs/isa/ternary_bitwise.t27","category":"specs/isa","name":"ternary_bitwise","module":"TernaryBitwise","lines":404,"bytes":17086,"description":"t27/specs/isa/ternary_bitwise.t27 Ternary Bitwise Operations Specification Ring 068 - Bitwise AND, OR, XOR for ternary data Defines bitwise operations on ternary word representations","health":"warn","tokens":2409,"nodes":316,"depth":13,"loss":27,"tcErrors":7,"failedBackends":[],"outBytes":{"c":6163,"rust":1333,"verilog":10763,"verilog_hir":825,"zig":4118},"repo":"t27","kinds":{"Module":24,"UseDecl":1,"ConstDecl":4,"ExprLiteral":18,"FnDecl":9,"StmtLocal":9,"StmtWhile":7,"ExprBinary":22,"ExprIdentifier":127,"StmtIf":8,"ExprIndex":37,"StmtAssign":22,"ExprUnary":1,"StmtExpr":4,"ExprCall":4,"TestBlock":9,"InvariantBlock":5,"BenchBlock":5},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 9 functions and 4 constants. Carries 9 tests, 5 invariants and 5 benches. 404 lines compile to 2,409 tokens and 316 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 10.5 KB. Compiles with 27 items dropped by error recovery and 7 type errors."},{"path":"specs/isa/ternary_control_flow.t27","category":"specs/isa","name":"ternary_control_flow","module":"TernaryControlFlow","lines":392,"bytes":15000,"description":"t27/specs/isa/ternary_control_flow.t27 Ternary Control Flow Specification Ring 090 - Control flow operations for ternary architecture Conditional jumps, branches, and call/return","health":"ok","tokens":1489,"nodes":358,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7731,"rust":3153,"verilog":14463,"verilog_hir":1544,"zig":8187},"repo":"t27","kinds":{"Module":22,"UseDecl":1,"ConstDecl":12,"ExprLiteral":26,"FnDecl":16,"ExprReturn":15,"StmtLocal":5,"ExprCall":23,"ExprFieldAccess":15,"ExprBinary":22,"ExprIdentifier":76,"StmtIf":13,"StmtAssign":11,"StmtExpr":63,"ExprStructLit":1,"ExprIndex":3,"TestBlock":19,"InvariantBlock":9,"BenchBlock":6},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions and 12 constants. Carries 19 tests, 9 invariants and 6 benches. 392 lines compile to 1,489 tokens and 358 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Clean through every layer."},{"path":"specs/isa/ternary_deque.t27","category":"specs/isa","name":"ternary_deque","module":"TernaryDeque","lines":498,"bytes":17293,"description":"t27/specs/isa/ternary_deque.t27 Ternary Deque Operations Specification Ring 088 - Double-ended queue operations for ternary data Defines deque with push/pop from both ends","health":"warn","tokens":2949,"nodes":383,"depth":10,"loss":33,"tcErrors":3,"failedBackends":[],"outBytes":{"c":6730,"rust":2799,"verilog":11790,"verilog_hir":1426,"zig":4688},"repo":"t27","kinds":{"Module":24,"UseDecl":1,"ConstDecl":4,"ExprLiteral":50,"FnDecl":11,"StmtLocal":3,"StmtWhile":2,"ExprBinary":40,"ExprIdentifier":100,"ExprFieldAccess":59,"StmtAssign":30,"ExprIndex":8,"StmtIf":18,"ExprReturn":15,"TestBlock":8,"InvariantBlock":5,"BenchBlock":5},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 11 functions and 4 constants. Carries 8 tests, 5 invariants and 5 benches. 498 lines compile to 2,949 tokens and 383 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.5 KB. Compiles with 33 items dropped by error recovery and 3 type errors."},{"path":"specs/isa/ternary_encoding.t27","category":"specs/isa","name":"ternary_encoding","module":"Tri27Encoding","lines":361,"bytes":15983,"description":"specs/isa/ternary_encoding.t27 -- the TRI-27 instruction word as the pinned consumer decodes it Rewritten for S05 of gHashTag/trinity#988 (gHashTag/t27#3567). Until 2026-09-12 this file was a 38-line `algorithm` block that stated the trit alphabet {-1, 0, +1} and nothing else; it did not parse (tools/specs_generate_baseline.txt), yet specs/trinity/capabilities/tri27.toolchain.t27 names it as the canonical spec of the whole TRI-27 toolchain. It now states the instruction encoding that gHashTag/trinity actually executes: src/tri27/emu/decoder.zig at 976df517, which","health":"ok","tokens":3144,"nodes":1389,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16531,"rust":12173,"verilog":26027,"verilog_hir":1054,"zig":16070},"repo":"t27","kinds":{"Module":90,"ConstDecl":90,"ExprLiteral":283,"ExprIdentifier":325,"FnDecl":14,"StmtIf":89,"ExprBinary":190,"ExprReturn":103,"ExprCall":120,"StmtLocal":9,"ExprFieldAccess":4,"InvariantBlock":2,"StmtExpr":54,"TestBlock":11,"ExprUnary":5},"tags":["domain/isa","has/functions","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions and 90 constants. Carries 11 tests and 2 invariants. 361 lines compile to 3,144 tokens and 1,389 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 25.4 KB. Clean through every layer."},{"path":"specs/isa/ternary_gates.t27","category":"specs/isa","name":"ternary_gates","module":"TernaryGates","lines":410,"bytes":17784,"description":"t27/specs/isa/ternary_gates.t27 Ternary Logic Gates Specification Ring 063 - Basic ternary logic gates for balanced ternary Defines AND, OR, NOT, and other fundamental operations","health":"warn","tokens":1878,"nodes":299,"depth":9,"loss":30,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6670,"rust":3005,"verilog":12594,"verilog_hir":865,"zig":4531},"repo":"t27","kinds":{"Module":23,"UseDecl":1,"ConstDecl":4,"ExprLiteral":25,"FnDecl":10,"ExprReturn":20,"ExprUnary":2,"ExprIdentifier":101,"ExprStructLit":1,"ExprFieldAccess":2,"StmtIf":16,"ExprBinary":49,"StmtLocal":9,"ExprCall":2,"StmtAssign":9,"StructDecl":2,"TestBlock":12,"InvariantBlock":7,"BenchBlock":4},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 10 functions, 2 structs and 4 constants. Carries 12 tests, 7 invariants and 4 benches. 410 lines compile to 1,878 tokens and 299 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Compiles with 30 items dropped by error recovery."},{"path":"specs/isa/ternary_graph.t27","category":"specs/isa","name":"ternary_graph","module":"TernaryGraph","lines":131,"bytes":3644,"description":"t27/specs/isa/ternary_graph.t27 Ternary Graph Operations Specification Ring 083 - Graph algorithms on ternary-weighted adjacency 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":576,"nodes":228,"depth":10,"loss":0,"tcErrors":7,"failedBackends":[],"outBytes":{"c":3979,"rust":1779,"verilog":6705,"verilog_hir":870,"zig":2260},"repo":"t27","kinds":{"Module":12,"UseDecl":1,"ConstDecl":4,"ExprLiteral":25,"FnDecl":8,"StmtLocal":9,"StmtWhile":6,"ExprBinary":26,"ExprIdentifier":83,"StmtAssign":11,"ExprIndex":18,"StmtIf":5,"StmtExpr":4,"ExprCall":2,"ExprReturn":8,"TestBlock":3,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 8 functions and 4 constants. Carries 3 tests, 2 invariants and 1 bench. 131 lines compile to 576 tokens and 228 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Compiles with 7 type errors."},{"path":"specs/isa/ternary_hash.t27","category":"specs/isa","name":"ternary_hash","module":"TernaryHashTable","lines":167,"bytes":5024,"description":"t27/specs/isa/ternary_hash.t27 Ternary Hash Table Operations Specification Ring 087 - Hash table with ternary keys 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":1044,"nodes":504,"depth":10,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":5304,"rust":2159,"verilog":8479,"verilog_hir":735,"zig":4666},"repo":"t27","kinds":{"Module":13,"UseDecl":1,"ConstDecl":5,"ExprLiteral":81,"FnDecl":6,"StmtLocal":27,"ExprFieldAccess":9,"ExprBinary":70,"ExprIdentifier":139,"ExprReturn":10,"StmtWhile":6,"StmtAssign":19,"ExprIndex":45,"ExprCall":28,"StmtIf":6,"TestBlock":4,"StmtExpr":20,"ExprUnary":12,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 5 constants. Carries 4 tests, 2 invariants and 1 bench. 167 lines compile to 1,044 tokens and 504 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Compiles with 9 type errors."},{"path":"specs/isa/ternary_memory.t27","category":"specs/isa","name":"ternary_memory","module":"ISAMemoryOps","lines":522,"bytes":21187,"description":"t27/specs/isa/ternary_memory.t27 Ternary Memory Specification Ring 089 - Memory operations for ternary architecture Load/store operations with ternary address and data","health":"warn","tokens":2662,"nodes":566,"depth":10,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":10308,"rust":4547,"verilog":17298,"verilog_hir":1740,"zig":11637},"repo":"t27","kinds":{"Module":30,"UseDecl":1,"ConstDecl":12,"ExprLiteral":59,"FnDecl":15,"StmtIf":21,"ExprBinary":67,"ExprIdentifier":138,"ExprReturn":34,"ExprStructLit":2,"ExprFieldAccess":13,"ExprIndex":14,"StmtAssign":15,"ExprCall":11,"StmtLocal":11,"StmtWhile":5,"ExprIf":2,"ExprUnary":1,"TestBlock":18,"StmtExpr":78,"InvariantBlock":13,"BenchBlock":6},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 15 functions and 12 constants. Carries 18 tests, 13 invariants and 6 benches. 522 lines compile to 2,662 tokens and 566 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 16.9 KB. Compiles with 5 type errors."},{"path":"specs/isa/ternary_pattern_matching.t27","category":"specs/isa","name":"ternary_pattern_matching","module":"TernaryPatternMatching","lines":173,"bytes":5331,"description":"t27/specs/isa/ternary_pattern_matching.t27 Ternary Pattern Matching Operations Specification Ring 082 - Pattern matching algorithms for ternary sequences 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":1222,"nodes":604,"depth":12,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":5598,"rust":2577,"verilog":10028,"verilog_hir":632,"zig":4780},"repo":"t27","kinds":{"Module":24,"UseDecl":1,"ConstDecl":3,"ExprLiteral":130,"FnDecl":5,"StmtIf":12,"ExprBinary":77,"ExprFieldAccess":30,"ExprIdentifier":135,"ExprReturn":10,"ExprUnary":29,"StmtLocal":35,"StmtWhile":10,"ExprIndex":33,"StmtAssign":20,"TestBlock":6,"ExprArrayLiteral":16,"StmtExpr":9,"ExprCall":16,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 5 functions and 3 constants. Carries 6 tests, 2 invariants and 1 bench. 173 lines compile to 1,222 tokens and 604 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 9.8 KB. Compiles with 10 type errors."},{"path":"specs/isa/ternary_search.t27","category":"specs/isa","name":"ternary_search","module":"TernarySearch","lines":165,"bytes":4613,"description":"t27/specs/isa/ternary_search.t27 Ternary Search Operations Specification Ring 081 - Search algorithms for ternary data 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":934,"nodes":456,"depth":11,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":4926,"rust":2381,"verilog":8729,"verilog_hir":625,"zig":4085},"repo":"t27","kinds":{"Module":23,"UseDecl":1,"ConstDecl":3,"ExprLiteral":82,"FnDecl":6,"StmtLocal":27,"StmtWhile":8,"ExprBinary":52,"ExprIdentifier":119,"ExprFieldAccess":13,"StmtIf":11,"ExprIndex":24,"ExprReturn":11,"StmtAssign":15,"ExprUnary":22,"TestBlock":5,"ExprArrayLiteral":7,"StmtExpr":9,"ExprCall":15,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 3 constants. Carries 5 tests, 2 invariants and 1 bench. 165 lines compile to 934 tokens and 456 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 9 type errors."},{"path":"specs/isa/ternary_set.t27","category":"specs/isa","name":"ternary_set","module":"TernarySet","lines":182,"bytes":5215,"description":"t27/specs/isa/ternary_set.t27 Ternary Set Operations Specification Ring 085 - Set operations on ternary-valued elements 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":1247,"nodes":630,"depth":11,"loss":0,"tcErrors":22,"failedBackends":[],"outBytes":{"c":5726,"rust":2708,"verilog":9880,"verilog_hir":841,"zig":4832},"repo":"t27","kinds":{"Module":27,"UseDecl":1,"ConstDecl":4,"ExprLiteral":95,"FnDecl":6,"StmtIf":10,"ExprBinary":88,"ExprFieldAccess":8,"ExprIdentifier":203,"ExprReturn":8,"StmtLocal":32,"StmtWhile":9,"ExprIndex":52,"StmtAssign":36,"TestBlock":4,"StmtExpr":12,"ExprCall":14,"ExprUnary":12,"ExprArrayLiteral":6,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 4 constants. Carries 4 tests, 2 invariants and 1 bench. 182 lines compile to 1,247 tokens and 630 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 9.6 KB. Compiles with 22 type errors."},{"path":"specs/isa/ternary_shift.t27","category":"specs/isa","name":"ternary_shift","module":"TernaryShift","lines":420,"bytes":16044,"description":"t27/specs/isa/ternary_shift.t27 Ternary Shift and Rotate Operations Specification Ring 067 - Bitwise/Tritwise shift and rotate operations Defines how ternary words are shifted and rotated","health":"warn","tokens":2220,"nodes":425,"depth":9,"loss":21,"tcErrors":10,"failedBackends":[],"outBytes":{"c":6598,"rust":2384,"verilog":11836,"verilog_hir":860,"zig":4824},"repo":"t27","kinds":{"Module":23,"UseDecl":1,"ConstDecl":7,"ExprLiteral":48,"FnDecl":7,"StmtIf":10,"ExprBinary":53,"ExprIdentifier":146,"ExprReturn":15,"StmtLocal":19,"StmtWhile":12,"StmtAssign":26,"ExprIndex":22,"ExprCall":16,"ExprFieldAccess":2,"TestBlock":9,"InvariantBlock":5,"BenchBlock":4},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 7 functions and 7 constants. Carries 9 tests, 5 invariants and 4 benches. 420 lines compile to 2,220 tokens and 425 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Compiles with 21 items dropped by error recovery and 10 type errors."},{"path":"specs/isa/ternary_sorting.t27","category":"specs/isa","name":"ternary_sorting","module":"TernarySorting","lines":173,"bytes":4909,"description":"t27/specs/isa/ternary_sorting.t27 Ternary Sorting Operations Specification Ring 080 - Sorting algorithms for ternary data 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":986,"nodes":515,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":5155,"rust":821,"verilog":8782,"verilog_hir":668,"zig":3761},"repo":"t27","kinds":{"Module":19,"UseDecl":1,"ConstDecl":3,"ExprLiteral":78,"FnDecl":6,"StmtIf":9,"ExprBinary":57,"ExprIdentifier":159,"ExprReturn":5,"StmtLocal":24,"ExprFieldAccess":6,"StmtWhile":9,"StmtAssign":24,"ExprIndex":42,"StmtExpr":18,"ExprCall":23,"TestBlock":5,"ExprArrayLiteral":5,"ExprUnary":19,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 6 functions and 3 constants. Carries 5 tests, 2 invariants and 1 bench. 173 lines compile to 986 tokens and 515 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 8.6 KB. Compiles with 9 type errors."},{"path":"specs/isa/ternary_tree.t27","category":"specs/isa","name":"ternary_tree","module":"TernaryTree","lines":141,"bytes":4645,"description":"t27/specs/isa/ternary_tree.t27 Ternary Tree Operations Specification Ring 084 - Tree algorithms on ternary-valued nodes 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":805,"nodes":373,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5095,"rust":2726,"verilog":7800,"verilog_hir":799,"zig":3362},"repo":"t27","kinds":{"Module":21,"UseDecl":1,"ConstDecl":5,"ExprLiteral":26,"FnDecl":7,"StmtLocal":8,"StmtWhile":1,"ExprBinary":45,"ExprIdentifier":153,"ExprFieldAccess":9,"StmtAssign":18,"ExprIndex":29,"StmtIf":19,"ExprReturn":12,"ExprCall":12,"TestBlock":2,"InvariantBlock":2,"StmtExpr":2,"BenchBlock":1},"tags":["domain/isa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 7 functions and 5 constants. Carries 2 tests, 2 invariants and 1 bench. 141 lines compile to 805 tokens and 373 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Compiles with 1 type error."},{"path":"specs/isa/tri27_bytecode.t27","category":"specs/isa","name":"tri27_bytecode","module":"Tri27Bytecode","lines":209,"bytes":12203,"description":"specs/isa/tri27_bytecode.t27 -- the .tbin container as the pinned Trinity loader reads it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer has one loader, src/tri27/emu/loader.zig at 976df517, and two assemblers that write two different containers; three documents describe a third and a fourth. This file states the container the loader accepts and every rule by which it rejects a file -- truncated, wrong magic, unsupported version, unknown section, code that does not fit memory, no code at all -- as functions the C","health":"ok","tokens":1503,"nodes":576,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12734,"rust":8630,"verilog":17093,"verilog_hir":1458,"zig":11743},"repo":"t27","kinds":{"Module":12,"ConstDecl":56,"ExprLiteral":173,"ExprIdentifier":89,"FnDecl":16,"ExprReturn":27,"ExprBinary":78,"ExprCall":68,"StmtIf":11,"InvariantBlock":4,"StmtExpr":36,"TestBlock":6},"tags":["domain/isa","has/functions","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions and 56 constants. Carries 6 tests and 4 invariants. 209 lines compile to 1,503 tokens and 576 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 16.7 KB. Clean through every layer."},{"path":"specs/isa/tri27_machine.t27","category":"specs/isa","name":"tri27_machine","module":"Tri27Machine","lines":461,"bytes":20690,"description":"specs/isa/tri27_machine.t27 -- the TRI-27 machine as the pinned Trinity emulator executes it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's selected runtime for TRI-27 programs is src/tri27/emu/executor.zig with cpu_state.zig, tri_cpu.zig and tri_memory.zig at 976df517: the only executor the owner's tests drive (test_comprehensive.zig, test_golden.zig, smoke_tests.zig); tri_exec.zig is a dead twin. This file states its register file, memory, fetch rule, entry points, flags, the numeric rule of every executed opcode, the control-flow and","health":"warn","tokens":3231,"nodes":1419,"depth":8,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":21128,"rust":14413,"verilog":31221,"verilog_hir":2795,"zig":19514},"repo":"t27","kinds":{"Module":28,"ConstDecl":80,"ExprLiteral":388,"ExprIdentifier":193,"FnDecl":43,"StmtIf":26,"ExprBinary":208,"ExprReturn":67,"ExprFieldAccess":6,"ExprUnary":54,"StmtLocal":13,"StmtAssign":4,"ExprCall":197,"StmtWhile":1,"InvariantBlock":4,"StmtExpr":97,"TestBlock":10},"tags":["domain/isa","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 43 functions and 80 constants. Carries 10 tests and 4 invariants. 461 lines compile to 3,231 tokens and 1,419 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 30.5 KB. Compiles with 1 type error."},{"path":"specs/jit/jit.t27","category":"specs/jit","name":"jit","module":"jit","lines":876,"bytes":29776,"description":"t27/specs/jit/jit.t27 Trinity JIT Compiler Compiles VSA operations to native machine code ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q JIT (Just-In-Time) compiler for VSA operations: - Compiles high-level VSA operations to native x86-64 machine code","health":"ok","tokens":4876,"nodes":1947,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11614,"rust":1464,"verilog":20356,"verilog_hir":420,"zig":22043},"repo":"t27","kinds":{"Module":108,"UseDecl":2,"ConstDecl":8,"ExprLiteral":408,"StructDecl":3,"ExprIdentifier":230,"FnDecl":26,"ExprReturn":118,"ExprStructLit":2,"ExprFieldAccess":65,"ExprBinary":93,"ExprArrayLiteral":64,"StmtAssign":37,"StmtIf":94,"ExprIndex":18,"StmtLocal":76,"StmtWhile":5,"ExprCall":294,"ExprUnary":186,"StmtExpr":68,"TestBlock":16,"InvariantBlock":10,"BenchBlock":8,"StmtFor":8},"tags":["domain/compiler","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 26 functions, 3 structs and 8 constants. Carries 16 tests, 10 invariants and 8 benches. 876 lines compile to 4,876 tokens and 1,947 AST nodes, depth 10. Emits 5 of 5 backends; largest is Zig at 21.5 KB. Clean through every layer."},{"path":"specs/lsp/client.t27","category":"specs/lsp","name":"client","module":"lsp-client","lines":509,"bytes":14550,"description":"lsp/client.t27 — LSP Client Configuration and Capabilities Client-side protocol, capabilities, and configuration management","health":"ok","tokens":1886,"nodes":599,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13304,"rust":7805,"verilog":21412,"verilog_hir":1139,"zig":11121},"repo":"t27","kinds":{"Module":5,"UseDecl":3,"ConstDecl":8,"ExprLiteral":96,"StructDecl":20,"ExprIdentifier":130,"EnumDecl":2,"EnumVariant":6,"FnDecl":11,"ExprReturn":11,"ExprStructLit":17,"ExprFieldAccess":87,"ExprCall":68,"ExprEnumValue":11,"ExprUnary":21,"ExprArrayLiteral":2,"ExprBinary":16,"ExprSwitch":1,"TestBlock":10,"StmtLocal":12,"StmtExpr":33,"StmtAssign":9,"InvariantBlock":12,"BenchBlock":4,"StmtFor":4},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 11 functions, 20 structs, 2 enums and 8 constants. Carries 10 tests, 12 invariants and 4 benches. 509 lines compile to 1,886 tokens and 599 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 20.9 KB. Clean through every layer."},{"path":"specs/lsp/language.t27","category":"specs/lsp","name":"language","module":"lsp-language","lines":523,"bytes":14206,"description":"lsp/language.t27 — Language Server Feature Mappings Language ID mappings, file extensions, and feature associations","health":"ok","tokens":2144,"nodes":697,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14009,"rust":6318,"verilog":22679,"verilog_hir":1187,"zig":11146},"repo":"t27","kinds":{"Module":16,"UseDecl":1,"ConstDecl":43,"ExprLiteral":105,"StructDecl":10,"ExprIdentifier":137,"EnumDecl":2,"EnumVariant":27,"FnDecl":13,"ExprReturn":18,"ExprStructLit":11,"ExprFieldAccess":64,"ExprUnary":24,"ExprArrayLiteral":10,"ExprCall":82,"StmtIf":5,"ExprBinary":20,"ExprEnumValue":10,"ExprSwitch":2,"TestBlock":14,"StmtLocal":17,"StmtExpr":34,"InvariantBlock":12,"BenchBlock":5,"StmtFor":5,"StmtAssign":10},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 13 functions, 10 structs, 2 enums and 43 constants. Carries 14 tests, 12 invariants and 5 benches. 523 lines compile to 2,144 tokens and 697 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 22.1 KB. Clean through every layer."},{"path":"specs/lsp/protocol.t27","category":"specs/lsp","name":"protocol","module":"lsp-protocol","lines":542,"bytes":14441,"description":"lsp/protocol.t27 — JSON-RPC 2.0 Protocol Mapping LSP message handling over JSON-RPC transport layer","health":"ok","tokens":2118,"nodes":683,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13938,"rust":6658,"verilog":23235,"verilog_hir":1915,"zig":11069},"repo":"t27","kinds":{"Module":6,"UseDecl":1,"ConstDecl":25,"ExprLiteral":118,"EnumDecl":3,"EnumVariant":11,"StructDecl":11,"ExprIdentifier":133,"FnDecl":23,"ExprReturn":23,"ExprStructLit":8,"ExprFieldAccess":54,"ExprBinary":28,"ExprUnary":24,"ExprArrayLiteral":1,"ExprCall":94,"ExprEnumValue":13,"ExprSwitch":2,"TestBlock":15,"StmtLocal":20,"StmtExpr":38,"InvariantBlock":12,"BenchBlock":5,"StmtFor":5,"StmtAssign":10},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 23 functions, 11 structs, 3 enums and 25 constants. Carries 15 tests, 12 invariants and 5 benches. 542 lines compile to 2,118 tokens and 683 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 22.7 KB. Clean through every layer."},{"path":"specs/lsp/schema.t27","category":"specs/lsp","name":"schema","module":"lsp-schema","lines":589,"bytes":15702,"description":"lsp/schema.t27 — LSP Base Types Position, Range, Diagnostic definitions for Language Server Protocol","health":"ok","tokens":2768,"nodes":931,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15688,"rust":7675,"verilog":26710,"verilog_hir":1560,"zig":12389},"repo":"t27","kinds":{"Module":15,"UseDecl":1,"ConstDecl":8,"ExprLiteral":143,"StructDecl":16,"ExprIdentifier":181,"EnumDecl":7,"EnumVariant":65,"FnDecl":14,"ExprReturn":19,"ExprStructLit":25,"ExprFieldAccess":130,"StmtLocal":40,"ExprCall":90,"ExprUnary":32,"ExprArrayLiteral":2,"ExprBinary":41,"StmtIf":6,"ExprSwitch":1,"TestBlock":16,"StmtExpr":42,"ExprEnumValue":11,"InvariantBlock":10,"BenchBlock":4,"StmtFor":4,"StmtAssign":8},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 16 structs, 7 enums and 8 constants. Carries 16 tests, 10 invariants and 4 benches. 589 lines compile to 2,768 tokens and 931 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 26.1 KB. Clean through every layer."},{"path":"specs/lsp/server.t27","category":"specs/lsp","name":"server","module":"lsp-server","lines":560,"bytes":15477,"description":"lsp/server.t27 — LSP Server Lifecycle and Methods Server-side protocol initialization, lifecycle, and request handling","health":"ok","tokens":2110,"nodes":678,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15105,"rust":7144,"verilog":25784,"verilog_hir":1880,"zig":12436},"repo":"t27","kinds":{"Module":6,"UseDecl":6,"ConstDecl":21,"ExprLiteral":96,"StructDecl":13,"ExprIdentifier":125,"EnumDecl":3,"EnumVariant":18,"FnDecl":20,"ExprReturn":20,"ExprStructLit":11,"ExprFieldAccess":57,"ExprCall":85,"ExprUnary":31,"ExprArrayLiteral":3,"ExprBinary":28,"ExprEnumValue":18,"ExprSwitch":2,"TestBlock":19,"StmtLocal":22,"StmtExpr":42,"InvariantBlock":12,"BenchBlock":5,"StmtFor":5,"StmtAssign":10},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 20 functions, 13 structs, 3 enums and 21 constants. Carries 19 tests, 12 invariants and 5 benches. 560 lines compile to 2,110 tokens and 678 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 25.2 KB. Clean through every layer."},{"path":"specs/math/constants.t27","category":"specs/math","name":"constants","module":"Constants","lines":366,"bytes":13156,"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing φ² + 1/φ² = 3 | Sacred constants for ternary computing","health":"ok","tokens":1396,"nodes":413,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7314,"rust":2403,"verilog":13298,"verilog_hir":488,"zig":8817},"repo":"t27","kinds":{"Module":20,"ConstDecl":13,"ExprLiteral":60,"ExprIdentifier":83,"FnDecl":5,"StmtIf":16,"ExprBinary":54,"ExprReturn":15,"ExprUnary":4,"ExprCall":8,"StmtLocal":22,"ExprIf":1,"ExprFieldAccess":11,"StmtWhile":1,"StmtAssign":9,"TestBlock":17,"StmtExpr":52,"InvariantBlock":17,"BenchBlock":5},"tags":["domain/math","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions and 13 constants. Carries 17 tests, 17 invariants and 5 benches. 366 lines compile to 1,396 tokens and 413 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 13.0 KB. Clean through every layer."},{"path":"specs/math/e8_lie_algebra.t27","category":"specs/math","name":"e8_lie_algebra","module":"E8LieAlgebra","lines":390,"bytes":14037,"description":"t27/specs/math/e8_lie_algebra.t27 E8 Exceptional Lie Algebra — Root System, Cartan Matrix, Eigenvalues Direction A (Priority 2) of PROJECT KEPLER->NEWTON E8 is the largest exceptional simple Lie group. Its root system contains golden ratio phi as a structural invariant through the H4 Coxeter subgroup. Key results verified computationally:","health":"ok","tokens":1848,"nodes":237,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5966,"rust":2110,"verilog":12813,"verilog_hir":744,"zig":8135},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":9,"ExprLiteral":24,"ExprIdentifier":39,"StructDecl":3,"FnDecl":10,"ExprReturn":11,"ExprStructLit":2,"ExprFieldAccess":10,"ExprArrayLiteral":5,"StmtLocal":8,"ExprBinary":18,"ExprCall":2,"ExprIndex":2,"StmtWhile":1,"StmtAssign":4,"ExprUnary":2,"StmtIf":1,"TestBlock":22,"StmtExpr":49,"InvariantBlock":8,"BenchBlock":3},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 3 structs and 9 constants. Carries 22 tests, 8 invariants and 3 benches. 390 lines compile to 1,848 tokens and 237 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Clean through every layer."},{"path":"specs/math/gf_competitive.t27","category":"specs/math","name":"gf_competitive","module":"GFCompetitive","lines":122,"bytes":5527,"description":"t27/specs/math/gf_competitive.t27 GoldenFloat Competitive Analysis — GF vs Posit vs IEEE 754 MATH-COMPETITIVE-001 — Decode latency, parallelism, hardware efficiency Ring 051: Competitive analysis showing GF's structural advantages Main result: GF has O(1) parallel decode vs Posit's O(N) sequential","health":"ok","tokens":389,"nodes":127,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3367,"rust":350,"verilog":5829,"verilog_hir":303,"zig":2558},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":1,"ExprIdentifier":19,"FnDecl":1,"ExprReturn":1,"ExprArrayLiteral":1,"TestBlock":6,"StmtLocal":12,"ExprCall":19,"StmtExpr":11,"ExprUnary":9,"ExprFieldAccess":10,"ExprIndex":8,"ExprLiteral":12,"ExprBinary":5,"InvariantBlock":4,"StmtFor":2,"BenchBlock":1},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 6 tests, 4 invariants and 1 bench. 122 lines compile to 389 tokens and 127 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.7 KB. Clean through every layer."},{"path":"specs/math/pellis_precision_verify.t27","category":"specs/math","name":"pellis_precision_verify","module":"PellisPrecision","lines":204,"bytes":10184,"description":"t27/specs/math/pellis_precision_verify.t27 Arbitrary precision verification via GMP/MPFR reference NUMERIC-VERIF-001 — Pre-registered checkpoint for CODATA 2026","health":"ok","tokens":609,"nodes":171,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5283,"rust":1963,"verilog":9248,"verilog_hir":545,"zig":5207},"repo":"t27","kinds":{"Module":8,"UseDecl":2,"ConstDecl":5,"ExprLiteral":22,"StructDecl":1,"ExprIdentifier":37,"FnDecl":4,"StmtLocal":12,"ExprBinary":12,"ExprCall":7,"ExprUnary":1,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":6,"StmtIf":5,"StmtFor":1,"ExprIndex":1,"StmtAssign":3,"TestBlock":9,"StmtExpr":20,"InvariantBlock":7,"BenchBlock":2},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 4 functions, 1 struct and 5 constants. Carries 9 tests, 7 invariants and 2 benches. 204 lines compile to 609 tokens and 171 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 9.0 KB. Clean through every layer."},{"path":"specs/math/phi_split_optimality.t27","category":"specs/math","name":"phi_split_optimality","module":"PhiSplitOptimality","lines":336,"bytes":12696,"description":"t27/specs/math/phi_split_optimality.t27 Phi-Split Theorems — Self-Similarity + Optimal Rounding (CORRECTED) MATH-OPTIMALITY-001 — Foundation for GoldenFloat being non-random THEOREM 1 (Golden Self-Similarity): phi is unique self-similar proportion for bit allocation THEOREM 2 (Optimal Rounding): round((N-1)/phi^2) minimizes phi-distance (7/7 match)","health":"ok","tokens":1298,"nodes":242,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6417,"rust":1654,"verilog":11868,"verilog_hir":778,"zig":8914},"repo":"t27","kinds":{"Module":6,"UseDecl":2,"ConstDecl":1,"ExprIdentifier":62,"StructDecl":2,"FnDecl":8,"StmtLocal":22,"ExprFieldAccess":23,"ExprCall":4,"ExprBinary":21,"ExprLiteral":11,"StmtIf":4,"ExprUnary":2,"ExprReturn":9,"ExprArrayLiteral":4,"StmtFor":1,"ExprIndex":2,"StmtAssign":1,"ExprStructLit":1,"TestBlock":12,"StmtExpr":31,"InvariantBlock":10,"BenchBlock":3},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions, 2 structs and 1 constant. Carries 12 tests, 10 invariants and 3 benches. 336 lines compile to 1,298 tokens and 242 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Clean through every layer."},{"path":"specs/math/phi_universal_attractor.t27","category":"specs/math","name":"phi_universal_attractor","module":"PhiUniversalAttractor","lines":333,"bytes":15331,"description":"t27/specs/math/phi_universal_attractor.t27 Phi Universal Attractor Theorems — Theorem 3: φ as Universal Fixed-Point MATH-ATTRACTOR-001 — Generative mechanism for φ proportion THEOREM 3: φ is the unique fixed point of balancing recursion f(x) = (x + x⁻¹ + 1) / 2 This addresses the critic's concern that φ is \"fitting\" rather than a true mechanism.","health":"warn","tokens":1288,"nodes":213,"depth":9,"loss":6,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6557,"rust":1553,"verilog":12949,"verilog_hir":850,"zig":9757},"repo":"t27","kinds":{"Module":5,"UseDecl":2,"FnDecl":7,"StmtLocal":12,"ExprBinary":17,"ExprLiteral":15,"ExprIdentifier":42,"ExprReturn":6,"ConstDecl":1,"StructDecl":2,"StmtWhile":1,"ExprCall":5,"StmtAssign":6,"StmtIf":2,"StmtBreak":2,"ExprStructLit":1,"ExprFieldAccess":4,"ExprArrayLiteral":2,"StmtFor":1,"TestBlock":15,"StmtExpr":48,"InvariantBlock":11,"BenchBlock":6},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 1 constant. Carries 15 tests, 11 invariants and 6 benches. 333 lines compile to 1,288 tokens and 213 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.6 KB. Compiles with 6 items dropped by error recovery."},{"path":"specs/math/property_test_template.t27","category":"specs/math","name":"property_test_template","module":"PropertyTestTemplate","lines":513,"bytes":17671,"description":"t27/specs/math/property_test_template.t27 Property-Test Template for Conformance Vectors Ring 053 - Defines reusable property testing patterns This spec provides templates for property-based testing of T27 formats Properties: mathematical invariants that must hold for ALL valid inputs","health":"warn","tokens":2483,"nodes":903,"depth":13,"loss":0,"tcErrors":19,"failedBackends":[],"outBytes":{"c":10752,"rust":7124,"verilog":20802,"verilog_hir":1115,"zig":11521},"repo":"t27","kinds":{"Module":49,"UseDecl":1,"ConstDecl":6,"ExprIdentifier":261,"ExprLiteral":118,"FnDecl":16,"StmtLocal":74,"StmtWhile":21,"ExprBinary":132,"ExprIndex":19,"StmtIf":27,"ExprCall":19,"ExprReturn":37,"StmtAssign":29,"ExprUnary":3,"ExprFieldAccess":6,"ExprIf":1,"TestBlock":16,"StmtExpr":59,"InvariantBlock":5,"BenchBlock":4},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 16 functions and 6 constants. Carries 16 tests, 5 invariants and 4 benches. 513 lines compile to 2,483 tokens and 903 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.3 KB. Compiles with 19 type errors."},{"path":"specs/math/radix_economy.t27","category":"specs/math","name":"radix_economy","module":"RadixEconomy","lines":331,"bytes":12773,"description":"t27/specs/math/radix_economy.t27 Radix Economy Formal Spec — Information-Theoretic Basis for Base-3 Computing E(b) = ln(b)/b, maximized at b = e ≈ 2.71828 E(3)/E(e) >= 99.5%, E(3)/E(2) = 1.054 (5.4% advantage)","health":"ok","tokens":1294,"nodes":370,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6447,"rust":1515,"verilog":11770,"verilog_hir":889,"zig":8030},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":5,"ExprLiteral":50,"FnDecl":11,"ExprReturn":19,"ExprBinary":50,"ExprCall":12,"ExprIdentifier":68,"ExprFieldAccess":9,"StmtIf":12,"StmtLocal":19,"ExprIf":1,"ExprUnary":1,"StmtWhile":1,"StmtAssign":4,"TestBlock":14,"StmtExpr":63,"InvariantBlock":12,"BenchBlock":4},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 5 constants. Carries 14 tests, 12 invariants and 4 benches. 331 lines compile to 1,294 tokens and 370 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 11.5 KB. Clean through every layer."},{"path":"specs/math/sacred_physics.t27","category":"specs/math","name":"sacred_physics","module":"SacredPhysics","lines":454,"bytes":18876,"description":"t27/specs/math/sacred_physics.t27 Strand I — Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","health":"ok","tokens":1586,"nodes":443,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9417,"rust":4095,"verilog":18100,"verilog_hir":633,"zig":11108},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":12,"ExprIdentifier":145,"FnDecl":6,"StmtLocal":36,"ExprBinary":45,"ExprReturn":8,"StmtIf":4,"ExprLiteral":18,"StmtWhile":2,"StmtAssign":6,"ExprUnary":1,"StructDecl":2,"ExprCall":7,"ExprStructLit":2,"ExprFieldAccess":23,"TestBlock":24,"StmtExpr":74,"InvariantBlock":16,"BenchBlock":4},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 6 functions, 2 structs and 12 constants. Carries 24 tests, 16 invariants and 4 benches. 454 lines compile to 1,586 tokens and 443 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 17.7 KB. Clean through every layer."},{"path":"specs/math/zamolodchikov_e8.t27","category":"specs/math","name":"zamolodchikov_e8","module":"ZamolodchikovE8","lines":324,"bytes":11414,"description":"t27/specs/math/zamolodchikov_e8.t27 Zamolodchikov E8 Integrable Field Theory — Mass Spectrum Direction A/E of PROJECT KEPLER->NEWTON In 1989, Zamolodchikov proved that the 2D Ising CFT perturbed by a magnetic field possesses E8 symmetry with exactly 8 stable particles. Their mass ratios are determined EXACTLY by E8 algebra — not fitted.","health":"ok","tokens":1417,"nodes":406,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5961,"rust":2721,"verilog":12518,"verilog_hir":878,"zig":6983},"repo":"t27","kinds":{"Module":16,"UseDecl":2,"FnDecl":10,"StmtLocal":13,"ExprIdentifier":75,"StmtIf":11,"ExprBinary":69,"ExprLiteral":70,"ExprReturn":19,"ExprCall":22,"ExprArrayLiteral":4,"StructDecl":1,"StmtWhile":4,"StmtAssign":11,"ExprIndex":2,"ExprStructLit":1,"ExprFieldAccess":7,"ExprUnary":2,"TestBlock":17,"StmtExpr":42,"InvariantBlock":5,"BenchBlock":3},"tags":["domain/math","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 1 struct. Carries 17 tests, 5 invariants and 3 benches. 324 lines compile to 1,417 tokens and 406 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/memory/formula_embed.t27","category":"specs/memory","name":"formula_embed","module":"FormulaEmbed","lines":202,"bytes":5784,"description":"Module: Formula Embedding for Cortical Semantic Map Cortical topographic map analog: - Formula features mapped to 27-dimensional embedding space - L2 normalization ensures unit vectors - Features: value, complexity, phi-distance, sector-id","health":"ok","tokens":827,"nodes":296,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4734,"rust":2705,"verilog":7835,"verilog_hir":901,"zig":3814},"repo":"t27","kinds":{"Module":3,"UseDecl":5,"ConstDecl":6,"ExprLiteral":31,"EnumDecl":1,"EnumVariant":7,"StructDecl":3,"ExprIdentifier":81,"FnDecl":5,"ExprReturn":5,"ExprStructLit":5,"ExprFieldAccess":39,"ExprCall":33,"StmtLocal":21,"StmtAssign":7,"ExprIndex":7,"StmtWhile":2,"ExprBinary":18,"ExprUnary":3,"TestBlock":4,"ExprEnumValue":3,"StmtExpr":7},"tags":["domain/storage","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions, 3 structs, 1 enum and 6 constants. Carries 4 tests. 202 lines compile to 827 tokens and 296 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 7.7 KB. Clean through every layer."},{"path":"specs/memory/memory_primitives.t27","category":"specs/memory","name":"memory_primitives","module":"MemoryPrimitives","lines":180,"bytes":5305,"description":"t27/specs/memory/memory_primitives.t27 Native Memory Primitives Specification Ring 029 — Language-level remember/recall/forget/reflect Inspired by MemPalace associative memory architecture 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":798,"nodes":392,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5583,"rust":1861,"verilog":9961,"verilog_hir":1039,"zig":3955},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":8,"ExprLiteral":60,"StructDecl":1,"ExprIdentifier":105,"FnDecl":8,"StmtIf":6,"ExprBinary":25,"ExprReturn":14,"StmtAssign":33,"ExprFieldAccess":39,"StmtLocal":10,"TestBlock":6,"StmtExpr":18,"ExprUnary":22,"ExprCall":24,"InvariantBlock":3,"BenchBlock":2},"tags":["domain/storage","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions, 1 struct and 8 constants. Carries 6 tests, 3 invariants and 2 benches. 180 lines compile to 798 tokens and 392 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 9.7 KB. Clean through every layer."},{"path":"specs/memory/notebooklm.t27","category":"specs/memory","name":"notebooklm","module":"NotebookLM","lines":486,"bytes":22953,"description":"specs/memory/notebooklm.t27 NotebookLM Integration Specification Ring-071 - RAG-Backed Semantic Memory for t27 Defines interface to Google NotebookLM for persistent session memory","health":"ok","tokens":1974,"nodes":215,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9370,"rust":5655,"verilog":15743,"verilog_hir":1996,"zig":7514},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":13,"EnumDecl":1,"EnumVariant":11,"StructDecl":9,"ExprIdentifier":89,"FnDecl":17,"StmtLocal":12,"StmtAssign":10,"ExprFieldAccess":11,"ExprReturn":7,"ExprBinary":1,"TestBlock":10,"InvariantBlock":7,"BenchBlock":4},"tags":["domain/storage","has/benches","has/enums","has/functions","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 17 functions, 9 structs, 1 enum and 12 constants. Carries 10 tests, 7 invariants and 4 benches. 486 lines compile to 1,974 tokens and 215 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 15.4 KB. Clean through every layer."},{"path":"specs/memory/semantic_search.t27","category":"specs/memory","name":"semantic_search","module":"SemanticSearch","lines":141,"bytes":4471,"description":"Module: Semantic Search via Hippocampus Pattern Completion CA3 pattern completion via Schaffer collaterals analog: - Query embedding compared via cosine similarity normalized by PHI - O(log n) search via HNSW index approximation - Returns top-k formula matches with similarity scores","health":"ok","tokens":564,"nodes":165,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3509,"rust":1696,"verilog":6185,"verilog_hir":540,"zig":2628},"repo":"t27","kinds":{"Module":2,"UseDecl":4,"ConstDecl":3,"ExprLiteral":19,"StructDecl":4,"ExprIdentifier":52,"FnDecl":3,"StmtLocal":17,"ExprCall":11,"ExprReturn":3,"ExprBinary":15,"ExprIndex":4,"StmtWhile":1,"ExprFieldAccess":10,"StmtAssign":1,"ExprStructLit":2,"TestBlock":3,"ExprArrayLiteral":6,"ExprUnary":1,"StmtExpr":4},"tags":["domain/storage","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 4 structs and 3 constants. Carries 3 tests. 141 lines compile to 564 tokens and 165 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.0 KB. Clean through every layer."},{"path":"specs/memory/tmem/bridge.t27","category":"specs/memory","name":"bridge","module":"TrinityMemoryBridgeSpec","lines":416,"bytes":20956,"description":"specs/memory/tmem/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;","health":"warn","tokens":2930,"nodes":1468,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":21771,"rust":9438,"verilog":27805,"verilog_hir":2627,"zig":19109},"repo":"t27","kinds":{"Module":28,"ConstDecl":73,"ExprLiteral":413,"EnumDecl":3,"EnumVariant":18,"FnDecl":23,"StmtIf":26,"ExprBinary":244,"ExprIdentifier":202,"ExprReturn":49,"ExprUnary":61,"ExprFieldAccess":2,"ExprCall":188,"StmtLocal":6,"StmtWhile":1,"StmtAssign":11,"ExprIndex":11,"InvariantBlock":14,"StmtExpr":84,"TestBlock":11},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 23 functions, 3 enums and 73 constants. Carries 11 tests and 14 invariants. 416 lines compile to 2,930 tokens and 1,468 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 27.2 KB. Compiles with 1 type error."},{"path":"specs/memory/tmem/conformance.t27","category":"specs/memory","name":"conformance","module":"TrinityMemoryConformanceLabSpec","lines":275,"bytes":13236,"description":"specs/memory/tmem/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable","health":"warn","tokens":1956,"nodes":1017,"depth":12,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13603,"rust":5958,"verilog":17622,"verilog_hir":1627,"zig":11861},"repo":"t27","kinds":{"Module":22,"ConstDecl":39,"ExprLiteral":272,"EnumDecl":5,"EnumVariant":26,"FnDecl":15,"StmtIf":20,"ExprBinary":179,"ExprIdentifier":143,"ExprReturn":35,"ExprUnary":47,"StmtLocal":4,"StmtWhile":1,"StmtAssign":26,"ExprFieldAccess":10,"ExprIndex":26,"InvariantBlock":8,"StmtExpr":36,"ExprCall":97,"TestBlock":6},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 15 functions, 5 enums and 39 constants. Carries 6 tests and 8 invariants. 275 lines compile to 1,956 tokens and 1,017 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 17.2 KB. Compiles with 1 type error."},{"path":"specs/memory/tmem/edge_demo.t27","category":"specs/memory","name":"edge_demo","module":"TrinityMemoryEdgeDemoSpec","lines":233,"bytes":11195,"description":"specs/memory/tmem/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one","health":"ok","tokens":1790,"nodes":972,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11641,"rust":4000,"verilog":14191,"verilog_hir":1388,"zig":10109},"repo":"t27","kinds":{"Module":25,"ConstDecl":22,"ExprLiteral":256,"EnumDecl":2,"EnumVariant":9,"FnDecl":12,"StmtIf":19,"ExprBinary":180,"ExprIdentifier":174,"ExprReturn":23,"ExprUnary":33,"ExprCall":97,"StmtLocal":17,"StmtWhile":5,"StmtAssign":29,"ExprFieldAccess":8,"ExprIndex":15,"InvariantBlock":6,"StmtExpr":34,"TestBlock":6},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 2 enums and 22 constants. Carries 6 tests and 6 invariants. 233 lines compile to 1,790 tokens and 972 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.9 KB. Clean through every layer."},{"path":"specs/memory/tmem/stream_compute.t27","category":"specs/memory","name":"stream_compute","module":"TrinityMemoryStreamComputeSpec","lines":439,"bytes":21835,"description":"specs/memory/tmem/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is","health":"ok","tokens":3626,"nodes":1836,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":22085,"rust":9336,"verilog":27763,"verilog_hir":3389,"zig":19470},"repo":"t27","kinds":{"Module":31,"ConstDecl":52,"ExprLiteral":548,"FnDecl":29,"StmtLocal":28,"ExprBinary":354,"ExprIdentifier":288,"StmtIf":25,"ExprReturn":51,"ExprCall":205,"StmtWhile":5,"StmtAssign":20,"ExprUnary":66,"ExprFieldAccess":21,"ExprIndex":6,"InvariantBlock":11,"StmtExpr":85,"TestBlock":11},"tags":["domain/storage","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 29 functions and 52 constants. Carries 11 tests and 11 invariants. 439 lines compile to 3,626 tokens and 1,836 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 27.1 KB. Clean through every layer."},{"path":"specs/memory/tmem/tensorpack.t27","category":"specs/memory","name":"tensorpack","module":"TrinityMemoryTensorPackSpec","lines":316,"bytes":15461,"description":"specs/memory/tmem/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;","health":"warn","tokens":2170,"nodes":1127,"depth":14,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":15698,"rust":6044,"verilog":19497,"verilog_hir":1909,"zig":13924},"repo":"t27","kinds":{"Module":18,"ConstDecl":50,"ExprLiteral":278,"EnumDecl":1,"EnumVariant":8,"FnDecl":16,"ExprReturn":30,"ExprBinary":170,"ExprFieldAccess":13,"ExprIdentifier":202,"ExprCall":135,"StmtIf":14,"ExprUnary":49,"StmtLocal":8,"StmtWhile":3,"ExprIndex":27,"StmtAssign":25,"InvariantBlock":10,"StmtExpr":62,"TestBlock":8},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 16 functions, 1 enum and 50 constants. Carries 8 tests and 10 invariants. 316 lines compile to 2,170 tokens and 1,127 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 19.0 KB. Compiles with 2 type errors."},{"path":"specs/memory/tmem/types.t27","category":"specs/memory","name":"types","module":"TrinityMemoryTypes","lines":291,"bytes":15291,"description":"specs/memory/tmem/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).","health":"ok","tokens":2170,"nodes":1088,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15524,"rust":6993,"verilog":19584,"verilog_hir":1417,"zig":14185},"repo":"t27","kinds":{"Module":29,"ConstDecl":71,"ExprLiteral":215,"EnumDecl":1,"EnumVariant":4,"FnDecl":11,"StmtLocal":13,"StmtWhile":4,"ExprBinary":191,"ExprIdentifier":246,"StmtAssign":13,"ExprReturn":33,"StmtIf":23,"ExprCall":119,"ExprFieldAccess":12,"ExprUnary":15,"InvariantBlock":17,"StmtExpr":62,"TestBlock":9},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions, 1 enum and 71 constants. Carries 9 tests and 17 invariants. 291 lines compile to 2,170 tokens and 1,088 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 19.1 KB. Clean through every layer."},{"path":"specs/ml/activation/elu_activation.t27","category":"specs/ml","name":"elu_activation","module":"Elu","lines":81,"bytes":3565,"description":"t27/specs/","health":"ok","tokens":166,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2124,"rust":382,"verilog":3199,"verilog_hir":416,"zig":1292},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":4},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 constant. Carries 3 tests and 4 invariants. 81 lines compile to 166 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/ml/activation/gelu_activation.t27","category":"specs/ml","name":"gelu_activation","module":"Gelu","lines":149,"bytes":7144,"description":"t27/specs/","health":"ok","tokens":845,"nodes":248,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3916,"rust":518,"verilog":7756,"verilog_hir":478,"zig":4667},"repo":"t27","kinds":{"Module":7,"UseDecl":2,"ConstDecl":2,"ExprLiteral":22,"StructDecl":1,"ExprIdentifier":65,"FnDecl":2,"StmtLocal":23,"ExprFieldAccess":4,"StmtFor":2,"ExprBinary":42,"ExprIndex":7,"StmtIf":2,"ExprCall":5,"StmtAssign":4,"ExprUnary":1,"TestBlock":9,"StmtExpr":48},"tags":["domain/ml","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 2 constants. Carries 9 tests. 149 lines compile to 845 tokens and 248 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Clean through every layer."},{"path":"specs/ml/activation/gelu_approx_activation.t27","category":"specs/ml","name":"gelu_approx_activation","module":"GeluApprox","lines":62,"bytes":2728,"description":"t27/specs/","health":"ok","tokens":133,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1669,"rust":435,"verilog":2969,"verilog_hir":430,"zig":865},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 2 constants. Carries 3 tests. 62 lines compile to 133 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/ml/activation/leaky_relu_activation.t27","category":"specs/ml","name":"leaky_relu_activation","module":"LeakyRelu","lines":81,"bytes":3634,"description":"t27/specs/","health":"ok","tokens":166,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2211,"rust":389,"verilog":3258,"verilog_hir":428,"zig":1361},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":4},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 constant. Carries 3 tests and 4 invariants. 81 lines compile to 166 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/ml/activation/relu_activation.t27","category":"specs/ml","name":"relu_activation","module":"Relu","lines":112,"bytes":5472,"description":"t27/specs/","health":"ok","tokens":501,"nodes":110,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2720,"rust":477,"verilog":4538,"verilog_hir":478,"zig":2552},"repo":"t27","kinds":{"Module":7,"UseDecl":2,"ConstDecl":1,"ExprLiteral":3,"StructDecl":1,"ExprIdentifier":30,"FnDecl":2,"StmtLocal":2,"StmtWhile":2,"ExprBinary":6,"ExprFieldAccess":4,"StmtIf":2,"ExprIndex":10,"StmtAssign":4,"TestBlock":6,"StmtExpr":26,"InvariantBlock":2},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 constant. Carries 6 tests and 2 invariants. 112 lines compile to 501 tokens and 110 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/ml/activation/sigmoid_activation.t27","category":"specs/ml","name":"sigmoid_activation","module":"Sigmoid","lines":55,"bytes":2262,"description":"t27/specs/","health":"ok","tokens":119,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1471,"rust":355,"verilog":2694,"verilog_hir":458,"zig":800},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 55 lines compile to 119 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/ml/activation/silu_swish_activation.t27","category":"specs/ml","name":"silu_swish_activation","module":"SiluSwish","lines":85,"bytes":3770,"description":"t27/specs/","health":"ok","tokens":176,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2308,"rust":381,"verilog":3281,"verilog_hir":428,"zig":1488},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":1,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 constant. Carries 3 tests and 5 invariants. 85 lines compile to 176 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/ml/activation/silu_swish_vbt_activation.t27","category":"specs/ml","name":"silu_swish_vbt_activation","module":"SiluSwishVbt","lines":13,"bytes":597,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":416,"rust":66,"verilog":1055,"verilog_hir":253,"zig":207},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/ml","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/ml/activation/softmax.t27","category":"specs/ml","name":"softmax","module":"Softmax","lines":70,"bytes":3324,"description":"t27/specs/","health":"ok","tokens":145,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2027,"rust":427,"verilog":3008,"verilog_hir":388,"zig":1125},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 2 constants. Carries 2 tests and 3 invariants. 70 lines compile to 145 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/ml/activation/tanh_activation.t27","category":"specs/ml","name":"tanh_activation","module":"Tanh","lines":65,"bytes":2565,"description":"t27/specs/","health":"ok","tokens":149,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1625,"rust":415,"verilog":3071,"verilog_hir":503,"zig":975},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 149 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/ml/igla_champion_capsule.t27","category":"specs/ml","name":"igla_champion_capsule","module":"IglaChampionCapsule","lines":137,"bytes":5913,"description":"t27/specs/ml/igla_champion_capsule.t27 Purpose: freeze the champion run so any later experiment can be compared fairly and any reproduction attempt validated. This is the CONTROL ANCHOR, NOT proof of phi superiority. All phi performance claims are [Open conjecture] (see FL-001 in docs/nona-03-manifest/RESEARCH_CLAIMS.md). Source: trios-trainer-igla src/optimizer.rs (phi-canonical defaults).","health":"ok","tokens":374,"nodes":70,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2711,"rust":708,"verilog":5192,"verilog_hir":267,"zig":2936},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":14,"ExprLiteral":14,"TestBlock":7,"StmtExpr":27,"InvariantBlock":4,"BenchBlock":1},"tags":["domain/ml","has/benches","has/constants-only","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 14 constants. Carries 7 tests, 4 invariants and 1 bench. 137 lines compile to 374 tokens and 70 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/ml/layers/avgpool2d_layer.t27","category":"specs/ml","name":"avgpool2d_layer","module":"Avgpool2d","lines":91,"bytes":3950,"description":"t27/specs/","health":"ok","tokens":213,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2552,"rust":690,"verilog":3570,"verilog_hir":397,"zig":1716},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":9,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 2 tests and 6 invariants. 91 lines compile to 213 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/ml/layers/batchnorm_layer.t27","category":"specs/ml","name":"batchnorm_layer","module":"Batchnorm","lines":85,"bytes":3706,"description":"t27/specs/","health":"ok","tokens":193,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2408,"rust":666,"verilog":3471,"verilog_hir":391,"zig":1567},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 2 tests and 5 invariants. 85 lines compile to 193 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/ml/layers/conv2d_layer.t27","category":"specs/ml","name":"conv2d_layer","module":"Conv2d","lines":92,"bytes":3838,"description":"t27/specs/","health":"ok","tokens":216,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2611,"rust":722,"verilog":3748,"verilog_hir":385,"zig":1571},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":8,"EnumDecl":1,"EnumVariant":4,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct, 1 enum and 2 constants. Carries 2 tests and 5 invariants. 92 lines compile to 216 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/ml/layers/dense_layer.t27","category":"specs/ml","name":"dense_layer","module":"Dense","lines":90,"bytes":3873,"description":"t27/specs/","health":"ok","tokens":208,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2571,"rust":659,"verilog":3573,"verilog_hir":383,"zig":1513},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":4,"EnumDecl":1,"EnumVariant":6,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct, 1 enum and 2 constants. Carries 2 tests and 5 invariants. 90 lines compile to 208 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/ml/layers/dropout_layer.t27","category":"specs/ml","name":"dropout_layer","module":"Dropout","lines":53,"bytes":2502,"description":"t27/specs/","health":"ok","tokens":108,"nodes":19,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1559,"rust":414,"verilog":2695,"verilog_hir":387,"zig":729},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":3,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 constant. Carries 2 tests. 53 lines compile to 108 tokens and 19 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/ml/layers/embedding_layer.t27","category":"specs/ml","name":"embedding_layer","module":"Embedding","lines":88,"bytes":3840,"description":"t27/specs/","health":"ok","tokens":185,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2487,"rust":498,"verilog":3175,"verilog_hir":387,"zig":1688},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":3,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":7},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 1 constant. Carries 2 tests and 7 invariants. 88 lines compile to 185 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/ml/layers/flatten_layer.t27","category":"specs/ml","name":"flatten_layer","module":"Flatten","lines":80,"bytes":3579,"description":"t27/specs/","health":"ok","tokens":170,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2241,"rust":491,"verilog":3115,"verilog_hir":394,"zig":1395},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":3,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 1 constant. Carries 2 tests and 5 invariants. 80 lines compile to 170 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/ml/layers/layernorm_layer.t27","category":"specs/ml","name":"layernorm_layer","module":"Layernorm","lines":36,"bytes":1769,"description":"t27/specs/","health":"ok","tokens":66,"nodes":11,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1216,"rust":280,"verilog":2115,"verilog_hir":315,"zig":489},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 36 lines compile to 66 tokens and 11 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/ml/layers/maxpool2d_layer.t27","category":"specs/ml","name":"maxpool2d_layer","module":"Maxpool2d","lines":49,"bytes":2114,"description":"t27/specs/","health":"ok","tokens":109,"nodes":19,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1459,"rust":421,"verilog":2642,"verilog_hir":391,"zig":735},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 49 lines compile to 109 tokens and 19 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/ml/layers/residual_connection.t27","category":"specs/ml","name":"residual_connection","module":"Residual","lines":27,"bytes":1240,"description":"t27/specs/","health":"ok","tokens":48,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1000,"rust":132,"verilog":1768,"verilog_hir":313,"zig":405},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 48 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/ml/loss/binary_crossentropy_loss.t27","category":"specs/ml","name":"binary_crossentropy_loss","module":"BinaryCe","lines":105,"bytes":4262,"description":"t27/specs/","health":"ok","tokens":241,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2681,"rust":643,"verilog":3864,"verilog_hir":469,"zig":1934},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":4,"FnDecl":4,"TestBlock":4,"StmtExpr":12,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 2 structs and 1 constant. Carries 4 tests and 6 invariants. 105 lines compile to 241 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/ml/loss/contrastive_loss.t27","category":"specs/ml","name":"contrastive_loss","module":"ContrastiveLoss","lines":35,"bytes":1742,"description":"t27/specs/","health":"ok","tokens":60,"nodes":10,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1223,"rust":254,"verilog":2067,"verilog_hir":328,"zig":477},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 35 lines compile to 60 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/ml/loss/cross_entropy_loss.t27","category":"specs/ml","name":"cross_entropy_loss","module":"CrossEntropy","lines":82,"bytes":3738,"description":"t27/specs/","health":"ok","tokens":182,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2482,"rust":620,"verilog":3463,"verilog_hir":403,"zig":1430},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":1,"ExprIdentifier":3,"EnumDecl":1,"EnumVariant":3,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":4},"tags":["domain/ml","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct, 1 enum and 2 constants. Carries 2 tests and 4 invariants. 82 lines compile to 182 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/ml/loss/huber_loss.t27","category":"specs/ml","name":"huber_loss","module":"HuberLoss","lines":35,"bytes":1757,"description":"t27/specs/","health":"ok","tokens":60,"nodes":10,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1202,"rust":252,"verilog":2040,"verilog_hir":321,"zig":474},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 35 lines compile to 60 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/ml/loss/kl_divergence.t27","category":"specs/ml","name":"kl_divergence","module":"KlDivergence","lines":27,"bytes":1289,"description":"t27/specs/","health":"ok","tokens":48,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1008,"rust":128,"verilog":1772,"verilog_hir":317,"zig":401},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 48 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/ml/loss/mse_loss.t27","category":"specs/ml","name":"mse_loss","module":"MseLoss","lines":35,"bytes":1746,"description":"t27/specs/","health":"ok","tokens":63,"nodes":10,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1203,"rust":264,"verilog":2038,"verilog_hir":317,"zig":481},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 35 lines compile to 63 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/ml/optimizer/adagrad.t27","category":"specs/ml","name":"adagrad","module":"Adagrad","lines":87,"bytes":3840,"description":"t27/specs/","health":"ok","tokens":192,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2422,"rust":604,"verilog":3328,"verilog_hir":388,"zig":1626},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":2,"ExprIdentifier":4,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 3 constants. Carries 2 tests and 6 invariants. 87 lines compile to 192 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/ml/optimizer/adam.t27","category":"specs/ml","name":"adam","module":"Adam","lines":47,"bytes":2318,"description":"t27/specs/","health":"ok","tokens":97,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1452,"rust":451,"verilog":2542,"verilog_hir":302,"zig":628},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":1,"ExprIdentifier":5,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 3 constants. Carries 1 test. 47 lines compile to 97 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/ml/optimizer/adamw.t27","category":"specs/ml","name":"adamw","module":"AdamW","lines":1020,"bytes":45304,"description":"t27/specs/ml/optimizer/adamw.t27","health":"fail","tokens":4202,"nodes":399,"depth":3,"loss":0,"tcErrors":0,"failedBackends":["verilog_hir"],"outBytes":{"c":14763,"rust":5113,"verilog":27372,"verilog_hir":null,"zig":21664},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":27,"ExprLiteral":20,"ExprIdentifier":39,"StructDecl":6,"FnDecl":18,"TestBlock":41,"StmtExpr":200,"InvariantBlock":24,"BenchBlock":15,"EnumDecl":1,"EnumVariant":4},"tags":["domain/ml","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/fail","issue/backend-rejected","size/large","src/t27"],"summary":"Declares 18 functions, 6 structs, 1 enum and 27 constants. Carries 41 tests, 24 invariants and 15 benches. 1020 lines compile to 4,202 tokens and 399 AST nodes, depth 3. Emits 4 of 5 backends; largest is Verilog at 26.7 KB. Rejected by Verilog (HIR)."},{"path":"specs/ml/optimizer/lamb.t27","category":"specs/ml","name":"lamb","module":"Lamb","lines":112,"bytes":4534,"description":"t27/specs/","health":"ok","tokens":282,"nodes":47,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2871,"rust":852,"verilog":4071,"verilog_hir":466,"zig":2167},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":5,"ExprLiteral":5,"StructDecl":2,"ExprIdentifier":9,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":8},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 5 constants. Carries 3 tests and 8 invariants. 112 lines compile to 282 tokens and 47 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/ml/optimizer/lr_scheduler.t27","category":"specs/ml","name":"lr_scheduler","module":"LrScheduler","lines":220,"bytes":10720,"description":"t27/specs/ml/optimizer/lr_scheduler.t27","health":"ok","tokens":875,"nodes":80,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4623,"rust":1452,"verilog":7540,"verilog_hir":812,"zig":4980},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":6,"ExprLiteral":5,"ExprIdentifier":9,"StructDecl":2,"FnDecl":7,"TestBlock":7,"StmtExpr":30,"InvariantBlock":6,"BenchBlock":3},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 6 constants. Carries 7 tests, 6 invariants and 3 benches. 220 lines compile to 875 tokens and 80 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/ml/optimizer/race_config.t27","category":"specs/ml","name":"race_config","module":"RaceConfig","lines":230,"bytes":10999,"description":"t27/specs/ml/optimizer/race_config.t27 IGLA RACE optimizer configuration freeze + eval-split protocol. Phase A deliverable -- honesty foundation (issue #181 child). Claim-status legend used in this file: [Verified] -- algebraic identity, no experiment needed. [Open conjecture] -- phi claim that the control test must decide.","health":"ok","tokens":382,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3106,"rust":1028,"verilog":5335,"verilog_hir":249,"zig":3308},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":21,"ExprLiteral":19,"ExprIdentifier":2,"TestBlock":6,"StmtExpr":21,"InvariantBlock":6,"BenchBlock":1},"tags":["domain/ml","has/benches","has/constants-only","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 21 constants. Carries 6 tests, 6 invariants and 1 bench. 230 lines compile to 382 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.2 KB. Clean through every layer."},{"path":"specs/ml/optimizer/rmsprop.t27","category":"specs/ml","name":"rmsprop","module":"Rmsprop","lines":43,"bytes":2213,"description":"t27/specs/","health":"ok","tokens":75,"nodes":14,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1371,"rust":327,"verilog":2357,"verilog_hir":307,"zig":524},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 43 lines compile to 75 tokens and 14 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/ml/optimizer/sgd.t27","category":"specs/ml","name":"sgd","module":"Sgd","lines":84,"bytes":3606,"description":"t27/specs/","health":"ok","tokens":183,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2229,"rust":587,"verilog":3225,"verilog_hir":369,"zig":1422},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 2 constants. Carries 2 tests and 5 invariants. 84 lines compile to 183 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/ml/optimizer/sgd_momentum.t27","category":"specs/ml","name":"sgd_momentum","module":"SgdMomentum","lines":364,"bytes":17118,"description":"t27/specs/ml/optimizer/sgd_momentum.t27","health":"ok","tokens":1849,"nodes":143,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6818,"rust":2083,"verilog":12019,"verilog_hir":1079,"zig":9125},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":6,"ExprLiteral":5,"ExprIdentifier":13,"StructDecl":3,"FnDecl":9,"TestBlock":13,"StmtExpr":74,"InvariantBlock":9,"BenchBlock":7},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 9 functions, 3 structs and 6 constants. Carries 13 tests, 9 invariants and 7 benches. 364 lines compile to 1,849 tokens and 143 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.7 KB. Clean through every layer."},{"path":"specs/ml/pathway/mlp.t27","category":"specs/ml","name":"mlp","module":"Mlp","lines":94,"bytes":3925,"description":"t27/specs/","health":"ok","tokens":221,"nodes":35,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2473,"rust":652,"verilog":3360,"verilog_hir":369,"zig":1711},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":2,"ExprIdentifier":7,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":7},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 3 constants. Carries 2 tests and 7 invariants. 94 lines compile to 221 tokens and 35 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/ml/recurrent/attention_mechanism.t27","category":"specs/ml","name":"attention_mechanism","module":"Attention","lines":75,"bytes":3412,"description":"t27/specs/","health":"ok","tokens":162,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2129,"rust":572,"verilog":3230,"verilog_hir":391,"zig":1216},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":6,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 2 structs and 1 constant. Carries 2 tests and 3 invariants. 75 lines compile to 162 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/ml/recurrent/bilstm.t27","category":"specs/ml","name":"bilstm","module":"Bilstm","lines":101,"bytes":4088,"description":"t27/specs/","health":"ok","tokens":275,"nodes":43,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2572,"rust":1067,"verilog":3982,"verilog_hir":359,"zig":1750},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":4,"ExprIdentifier":17,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 4 structs and 2 constants. Carries 2 tests and 5 invariants. 101 lines compile to 275 tokens and 43 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/ml/recurrent/gru_cell.t27","category":"specs/ml","name":"gru_cell","module":"Gru","lines":107,"bytes":4048,"description":"t27/specs/","health":"ok","tokens":262,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2668,"rust":661,"verilog":3304,"verilog_hir":371,"zig":2152},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":9,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":11},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 3 structs. Carries 2 tests and 11 invariants. 107 lines compile to 262 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/ml/recurrent/lstm_cell.t27","category":"specs/ml","name":"lstm_cell","module":"Lstm","lines":124,"bytes":4850,"description":"t27/specs/","health":"ok","tokens":307,"nodes":43,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3098,"rust":773,"verilog":3773,"verilog_hir":373,"zig":2511},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":3,"ExprIdentifier":12,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":13},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 3 structs and 1 constant. Carries 2 tests and 13 invariants. 124 lines compile to 307 tokens and 43 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/ml/recurrent/lstm_single.t27","category":"specs/ml","name":"lstm_single","module":"LstmCell","lines":88,"bytes":3676,"description":"t27/specs/","health":"ok","tokens":234,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2299,"rust":889,"verilog":3694,"verilog_hir":389,"zig":1402},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":3,"ExprIdentifier":16,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 3 structs and 1 constant. Carries 2 tests and 3 invariants. 88 lines compile to 234 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/ml/recurrent/rnn_cell.t27","category":"specs/ml","name":"rnn_cell","module":"RnnCell","lines":98,"bytes":4063,"description":"t27/specs/","health":"ok","tokens":237,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2566,"rust":790,"verilog":3759,"verilog_hir":473,"zig":1740},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":3,"ExprIdentifier":7,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 3 structs and 2 constants. Carries 3 tests and 5 invariants. 98 lines compile to 237 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/ml/recurrent/self_attention.t27","category":"specs/ml","name":"self_attention","module":"SelfAttention","lines":57,"bytes":2488,"description":"t27/specs/","health":"ok","tokens":139,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1615,"rust":703,"verilog":3013,"verilog_hir":323,"zig":746},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":3,"ExprIdentifier":11,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 1 function, 3 structs and 1 constant. Carries 1 test. 57 lines compile to 139 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/ml/recurrent/seq2seq.t27","category":"specs/ml","name":"seq2seq","module":"Seq2seq","lines":81,"bytes":3365,"description":"t27/specs/","health":"ok","tokens":187,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2272,"rust":564,"verilog":3139,"verilog_hir":387,"zig":1583},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":2,"TestBlock":2,"StmtExpr":6,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 2 structs. Carries 2 tests and 6 invariants. 81 lines compile to 187 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/ml/rl/advantage_estimator.t27","category":"specs/ml","name":"advantage_estimator","module":"Advantage","lines":110,"bytes":4547,"description":"t27/specs/","health":"ok","tokens":277,"nodes":43,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2863,"rust":816,"verilog":4322,"verilog_hir":537,"zig":2088},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":8,"FnDecl":4,"TestBlock":4,"StmtExpr":12,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 2 structs and 2 constants. Carries 4 tests and 6 invariants. 110 lines compile to 277 tokens and 43 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"specs/ml/rl/dqn.t27","category":"specs/ml","name":"dqn","module":"Dqn","lines":96,"bytes":4020,"description":"t27/specs/","health":"ok","tokens":245,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2516,"rust":967,"verilog":4194,"verilog_hir":460,"zig":1639},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":2,"ExprIdentifier":15,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":3},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 3 constants. Carries 3 tests and 3 invariants. 96 lines compile to 245 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/ml/rl/dqn_target_network.t27","category":"specs/ml","name":"dqn_target_network","module":"DqnTarget","lines":96,"bytes":4107,"description":"t27/specs/","health":"ok","tokens":214,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2595,"rust":615,"verilog":3669,"verilog_hir":437,"zig":1804},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 2 constants. Carries 3 tests and 6 invariants. 96 lines compile to 214 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/ml/rl/ppo_actor.t27","category":"specs/ml","name":"ppo_actor","module":"PpoActor","lines":128,"bytes":5060,"description":"t27/specs/","health":"ok","tokens":326,"nodes":52,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3228,"rust":1028,"verilog":4708,"verilog_hir":565,"zig":2499},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":3,"ExprIdentifier":8,"FnDecl":5,"TestBlock":5,"StmtExpr":15,"InvariantBlock":7},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions, 3 structs and 3 constants. Carries 5 tests and 7 invariants. 128 lines compile to 326 tokens and 52 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"specs/ml/rl/ppo_clip_loss.t27","category":"specs/ml","name":"ppo_clip_loss","module":"PpoClipLoss","lines":127,"bytes":5063,"description":"t27/specs/","health":"ok","tokens":333,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3171,"rust":1008,"verilog":4993,"verilog_hir":730,"zig":2421},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":9,"FnDecl":6,"TestBlock":6,"StmtExpr":18,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions, 2 structs and 2 constants. Carries 6 tests and 5 invariants. 127 lines compile to 333 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"specs/ml/rl/ppo_critic.t27","category":"specs/ml","name":"ppo_critic","module":"PpoCritic","lines":105,"bytes":4384,"description":"t27/specs/","health":"ok","tokens":246,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2765,"rust":681,"verilog":3964,"verilog_hir":526,"zig":1994},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":2,"ExprIdentifier":4,"FnDecl":4,"TestBlock":4,"StmtExpr":12,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 2 structs and 1 constant. Carries 4 tests and 6 invariants. 105 lines compile to 246 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/ml/rl/sac_actor.t27","category":"specs/ml","name":"sac_actor","module":"SacActor","lines":116,"bytes":4722,"description":"t27/specs/","health":"ok","tokens":300,"nodes":48,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2972,"rust":1033,"verilog":4501,"verilog_hir":510,"zig":2214},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":3,"ExprIdentifier":10,"FnDecl":4,"TestBlock":4,"StmtExpr":12,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 3 structs and 3 constants. Carries 4 tests and 6 invariants. 116 lines compile to 300 tokens and 48 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/ml/rl/sac_critic.t27","category":"specs/ml","name":"sac_critic","module":"SacCritic","lines":114,"bytes":4613,"description":"t27/specs/","health":"ok","tokens":279,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2893,"rust":904,"verilog":4309,"verilog_hir":550,"zig":2131},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":3,"ExprIdentifier":8,"FnDecl":4,"TestBlock":4,"StmtExpr":12,"InvariantBlock":6},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 3 structs and 3 constants. Carries 4 tests and 6 invariants. 114 lines compile to 279 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"specs/ml/transformer/encoder_block.t27","category":"specs/ml","name":"encoder_block","module":"EncoderBlock","lines":105,"bytes":4306,"description":"t27/specs/","health":"ok","tokens":267,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2758,"rust":1013,"verilog":4149,"verilog_hir":447,"zig":1940},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":4,"ExprLiteral":4,"StructDecl":4,"ExprIdentifier":9,"FnDecl":3,"TestBlock":3,"StmtExpr":9,"InvariantBlock":5},"tags":["domain/ml","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 4 structs and 4 constants. Carries 3 tests and 5 invariants. 105 lines compile to 267 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/ml/transformer/feed_forward.t27","category":"specs/ml","name":"feed_forward","module":"FeedForwardLayer","lines":437,"bytes":20187,"description":"t27/specs/ml/transformer/feed_forward.t27","health":"ok","tokens":2120,"nodes":176,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7653,"rust":2606,"verilog":13919,"verilog_hir":1117,"zig":10267},"repo":"t27","kinds":{"Module":1,"UseDecl":5,"ConstDecl":7,"ExprLiteral":4,"ExprIdentifier":24,"StructDecl":4,"EnumDecl":1,"EnumVariant":4,"FnDecl":10,"TestBlock":15,"StmtExpr":82,"InvariantBlock":10,"BenchBlock":9},"tags":["domain/ml","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 10 functions, 4 structs, 1 enum and 7 constants. Carries 15 tests, 10 invariants and 9 benches. 437 lines compile to 2,120 tokens and 176 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 13.6 KB. Clean through every layer."},{"path":"specs/ml/transformer/feed_forward_network.t27","category":"specs/ml","name":"feed_forward_network","module":"FeedForwardNetwork","lines":42,"bytes":2193,"description":"t27/specs/","health":"ok","tokens":71,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1408,"rust":298,"verilog":2301,"verilog_hir":333,"zig":514},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 42 lines compile to 71 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/ml/transformer/mha_block.t27","category":"specs/ml","name":"mha_block","module":"MHABlock","lines":383,"bytes":17869,"description":"t27/specs/ml/transformer/mha_block.t27","health":"warn","tokens":1635,"nodes":135,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6676,"rust":2274,"verilog":12594,"verilog_hir":949,"zig":8243},"repo":"t27","kinds":{"Module":1,"UseDecl":6,"ConstDecl":3,"ExprLiteral":2,"ExprIdentifier":22,"StructDecl":5,"FnDecl":9,"TestBlock":12,"StmtExpr":59,"InvariantBlock":8,"BenchBlock":8},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 9 functions, 5 structs and 3 constants. Carries 12 tests, 8 invariants and 8 benches. 383 lines compile to 1,635 tokens and 135 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/ml/transformer/multi_head_attention.t27","category":"specs/ml","name":"multi_head_attention","module":"MultiHeadAttn","lines":38,"bytes":1807,"description":"t27/specs/","health":"ok","tokens":72,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1266,"rust":306,"verilog":2180,"verilog_hir":323,"zig":514},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 38 lines compile to 72 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/ml/transformer/multi_head_attn.t27","category":"specs/ml","name":"multi_head_attn","module":"MultiHeadAttention","lines":464,"bytes":21845,"description":"t27/specs/ml/transformer/multi_head_attn.t27","health":"warn","tokens":2158,"nodes":171,"depth":3,"loss":12,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8143,"rust":3550,"verilog":14934,"verilog_hir":1407,"zig":10158},"repo":"t27","kinds":{"Module":1,"UseDecl":6,"ConstDecl":6,"ExprLiteral":3,"ExprIdentifier":43,"StructDecl":6,"FnDecl":14,"TestBlock":13,"StmtExpr":62,"InvariantBlock":8,"BenchBlock":9},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 14 functions, 6 structs and 6 constants. Carries 13 tests, 8 invariants and 9 benches. 464 lines compile to 2,158 tokens and 171 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Compiles with 12 items dropped by error recovery."},{"path":"specs/ml/transformer/norm.t27","category":"specs/ml","name":"norm","module":"LayerNorm","lines":478,"bytes":23058,"description":"t27/specs/ml/transformer/norm.t27","health":"ok","tokens":2649,"nodes":194,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8202,"rust":2793,"verilog":14831,"verilog_hir":1174,"zig":11899},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":10,"ExprLiteral":8,"ExprIdentifier":28,"StructDecl":5,"FnDecl":11,"TestBlock":13,"StmtExpr":91,"InvariantBlock":12,"BenchBlock":11},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 11 functions, 5 structs and 10 constants. Carries 13 tests, 12 invariants and 11 benches. 478 lines compile to 2,649 tokens and 194 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 14.5 KB. Clean through every layer."},{"path":"specs/ml/transformer/positional_enc.t27","category":"specs/ml","name":"positional_enc","module":"PositionalEncoding","lines":379,"bytes":16993,"description":"t27/specs/ml/transformer/positional_enc.t27","health":"ok","tokens":1775,"nodes":141,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6838,"rust":2056,"verilog":11916,"verilog_hir":1161,"zig":8622},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":7,"ExprLiteral":4,"ExprIdentifier":15,"StructDecl":3,"FnDecl":10,"TestBlock":13,"StmtExpr":66,"InvariantBlock":11,"BenchBlock":7},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 3 structs and 7 constants. Carries 13 tests, 11 invariants and 7 benches. 379 lines compile to 1,775 tokens and 141 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Clean through every layer."},{"path":"specs/ml/transformer/positional_encoding.t27","category":"specs/ml","name":"positional_encoding","module":"PositionalEnc","lines":42,"bytes":2214,"description":"t27/specs/","health":"ok","tokens":71,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1405,"rust":311,"verilog":2319,"verilog_hir":327,"zig":526},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":1,"ExprIdentifier":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/ml","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function, 1 struct and 1 constant. Carries 1 test. 42 lines compile to 71 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/neural/forward_pass.t27","category":"specs/neural","name":"forward_pass","module":"forward_pass","lines":1095,"bytes":32248,"description":"Forward Pass Demo - VSA-based Neural Network Implements transformer-style forward pass using Vector Symbolic Architecture with multi-head attention, residual connections, and autoregressive generation Author: Dmitrii Vasilev","health":"warn","tokens":6339,"nodes":431,"depth":15,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5600,"rust":2396,"verilog":8773,"verilog_hir":899,"zig":5519},"repo":"t27","kinds":{"Module":11,"UseDecl":3,"ConstDecl":11,"ExprLiteral":47,"StructDecl":1,"FnDecl":6,"StmtLocal":34,"ExprArrayLiteral":3,"StmtFor":7,"ExprBinary":19,"ExprIdentifier":164,"ExprFieldAccess":4,"StmtAssign":10,"ExprIndex":38,"StmtExpr":5,"ExprCall":32,"ExprUnary":32,"StmtIf":3,"StmtBreak":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 6 functions, 1 struct and 11 constants. 1095 lines compile to 6,339 tokens and 431 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 8.6 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/nn/attention.t27","category":"specs/nn","name":"attention","module":"SacredAttention","lines":944,"bytes":40501,"description":"t27/specs/nn/attention.t27 Sacred Attention Specification Multi-head attention with φ-RoPE and sacred scaling (d_k^(-φ³))","health":"warn","tokens":3900,"nodes":879,"depth":14,"loss":0,"tcErrors":21,"failedBackends":[],"outBytes":{"c":13375,"rust":3111,"verilog":21567,"verilog_hir":1255,"zig":15456},"repo":"t27","kinds":{"Module":27,"UseDecl":3,"ConstDecl":17,"ExprLiteral":60,"ExprIdentifier":311,"StructDecl":2,"FnDecl":11,"StmtLocal":49,"StmtWhile":18,"ExprBinary":109,"ExprUnary":13,"ExprFieldAccess":37,"ExprCall":17,"StmtAssign":43,"ExprIndex":35,"ExprStructLit":1,"ExprArrayLiteral":5,"StmtExpr":74,"StmtIf":7,"ExprReturn":2,"StmtContinue":1,"TestBlock":15,"InvariantBlock":16,"BenchBlock":6},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 11 functions, 2 structs and 17 constants. Carries 15 tests, 16 invariants and 6 benches. 944 lines compile to 3,900 tokens and 879 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 21.1 KB. Compiles with 21 type errors."},{"path":"specs/nn/gla.t27","category":"specs/nn","name":"gla","module":"GatedLinearAttention","lines":589,"bytes":22699,"description":"t27/specs/nn/gla.t27 Gated Linear Attention (GLA) Block Specification Reference: Yang et al. 2023 \"Gated Linear Attention Transformers with Hardware-Efficient Training\" arXiv:2312.06635 CLAIM-STATUS: all performance claims below are [Open conjecture]. The ONLY [Verified] phi-fact in this codebase is phi^2 + phi^-2 = 3 (Law L5).","health":"warn","tokens":2643,"nodes":642,"depth":16,"loss":0,"tcErrors":17,"failedBackends":[],"outBytes":{"c":7098,"rust":3622,"verilog":11230,"verilog_hir":1409,"zig":6526},"repo":"t27","kinds":{"Module":22,"UseDecl":4,"ConstDecl":8,"ExprLiteral":49,"ExprIdentifier":251,"StructDecl":4,"EnumDecl":1,"EnumVariant":3,"FnDecl":9,"StmtLocal":35,"ExprBinary":79,"ExprCall":21,"ExprFieldAccess":34,"ExprStructLit":1,"ExprArrayLiteral":7,"StmtWhile":16,"StmtExpr":11,"ExprUnary":17,"StmtAssign":32,"ExprIndex":35,"StmtIf":3},"tags":["domain/ml","has/enums","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 9 functions, 4 structs, 1 enum and 8 constants. 589 lines compile to 2,643 tokens and 642 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 11.0 KB. Compiles with 17 type errors."},{"path":"specs/nn/hslm.t27","category":"specs/nn","name":"hslm","module":"HSLM","lines":632,"bytes":24078,"description":"t27/specs/nn/hslm.t27 HSLM (Hierarchical Sacred Learning Model) Specification Ternary neural network with sacred constants and VSA attention","health":"warn","tokens":2715,"nodes":721,"depth":14,"loss":0,"tcErrors":23,"failedBackends":[],"outBytes":{"c":12776,"rust":4567,"verilog":22012,"verilog_hir":1699,"zig":14844},"repo":"t27","kinds":{"Module":24,"UseDecl":6,"ConstDecl":19,"ExprLiteral":61,"ExprIdentifier":217,"StructDecl":4,"FnDecl":16,"StmtLocal":27,"StmtWhile":15,"ExprBinary":57,"ExprIndex":27,"ExprArrayLiteral":4,"ExprUnary":8,"ExprFieldAccess":40,"ExprStructLit":1,"StmtExpr":84,"ExprCall":22,"StmtAssign":37,"StmtIf":5,"ExprReturn":2,"TestBlock":23,"InvariantBlock":16,"BenchBlock":6},"tags":["domain/ml","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 16 functions, 4 structs and 19 constants. Carries 23 tests, 16 invariants and 6 benches. 632 lines compile to 2,715 tokens and 721 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 21.5 KB. Compiles with 23 type errors."},{"path":"specs/nn/phi_rope.t27","category":"specs/nn","name":"phi_rope","module":null,"lines":44,"bytes":1183,"description":"specs/nn/phi_rope.t27 φ-RoPE: Rotary Position Embedding using Golden Ratio θ_i = PHI^(-2i/d) instead of standard 10000^(-2i/d)","health":"warn","tokens":241,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/ml","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 44 lines compile to 241 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/nn/sacred_attention.t27","category":"specs/nn","name":"sacred_attention","module":null,"lines":47,"bytes":1174,"description":"specs/nn/sacred_attention.t27 Sacred Attention: Multi-head attention with φ-based scaling scale = head_dim^(-PHI^3) instead of standard 1/sqrt(head_dim)","health":"warn","tokens":199,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/ml","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 47 lines compile to 199 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/numeric/bigint.t27","category":"specs/numeric","name":"bigint","module":"BigInt","lines":391,"bytes":14356,"description":"Module: Balanced Ternary BigInt","health":"ok","tokens":1096,"nodes":122,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6528,"rust":1377,"verilog":13322,"verilog_hir":864,"zig":7243},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":6,"ExprLiteral":6,"StructDecl":1,"ExprIdentifier":2,"FnDecl":14,"TestBlock":16,"StmtExpr":55,"InvariantBlock":10,"BenchBlock":9},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 14 functions, 1 struct and 6 constants. Carries 16 tests, 10 invariants and 9 benches. 391 lines compile to 1,096 tokens and 122 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 13.0 KB. Clean through every layer."},{"path":"specs/numeric/bnf1024.t27","category":"specs/numeric","name":"bnf1024","module":"triformat_bnf1024","lines":49,"bytes":2014,"description":"bnf1024.t27 -- BNF1024: Binary Network Float, 1024-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1594,"rust":322,"verilog":2740,"verilog_hir":370,"zig":731},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/numeric/bnf128.t27","category":"specs/numeric","name":"bnf128","module":"triformat_bnf128","lines":49,"bytes":1987,"description":"bnf128.t27 -- BNF128: Binary Network Float, 128-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1580,"rust":315,"verilog":2728,"verilog_hir":368,"zig":720},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/numeric/bnf16.t27","category":"specs/numeric","name":"bnf16","module":"triformat_bnf16","lines":49,"bytes":1958,"description":"bnf16.t27 -- BNF16: Binary Network Float, 16-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1565,"rust":308,"verilog":2715,"verilog_hir":366,"zig":708},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/numeric/bnf256.t27","category":"specs/numeric","name":"bnf256","module":"triformat_bnf256","lines":49,"bytes":1995,"description":"bnf256.t27 -- BNF256: Binary Network Float, 256-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1584,"rust":318,"verilog":2732,"verilog_hir":368,"zig":724},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/numeric/bnf32.t27","category":"specs/numeric","name":"bnf32","module":"triformat_bnf32","lines":49,"bytes":1971,"description":"bnf32.t27 -- BNF32: Binary Network Float, 32-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1572,"rust":313,"verilog":2722,"verilog_hir":366,"zig":715},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/numeric/bnf512.t27","category":"specs/numeric","name":"bnf512","module":"triformat_bnf512","lines":49,"bytes":1996,"description":"bnf512.t27 -- BNF512: Binary Network Float, 512-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1584,"rust":318,"verilog":2732,"verilog_hir":368,"zig":724},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/numeric/bnf64.t27","category":"specs/numeric","name":"bnf64","module":"triformat_bnf64","lines":49,"bytes":1976,"description":"bnf64.t27 -- BNF64: Binary Network Float, 64-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1574,"rust":314,"verilog":2724,"verilog_hir":366,"zig":717},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/numeric/bnf8.t27","category":"specs/numeric","name":"bnf8","module":"triformat_bnf8","lines":49,"bytes":1948,"description":"bnf8.t27 -- BNF8: Binary Network Float, 8-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","health":"ok","tokens":106,"nodes":42,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1558,"rust":306,"verilog":2710,"verilog_hir":364,"zig":704},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":12,"FnDecl":2,"ExprReturn":2,"ExprBinary":6,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":3,"ExprCall":4},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 4 constants. Carries 2 tests. 49 lines compile to 106 tokens and 42 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/numeric/e8m0.t27","category":"specs/numeric","name":"e8m0","module":"E8M0","lines":267,"bytes":9801,"description":"t27/specs/numeric/e8m0.t27 E8M0 -- the OCP Microscaling shared scale, and the trit count it does not have. WHY THIS EXISTS. `specs/numeric/formats_catalog.t27` is the numeric SSOT and it names `e8m0` FIVE times as the storage of another format -- mxfp8 storage=u8_plus_shared_e8m0 mxfp6 storage=u8_packed_plus_e8m0","health":"ok","tokens":732,"nodes":218,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5390,"rust":1739,"verilog":10236,"verilog_hir":657,"zig":5818},"repo":"t27","kinds":{"Module":12,"ConstDecl":12,"ExprLiteral":24,"FnDecl":8,"ExprReturn":19,"ExprBinary":20,"ExprFieldAccess":2,"ExprIdentifier":38,"StmtIf":11,"ExprCall":8,"TestBlock":18,"StmtExpr":36,"InvariantBlock":9,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 12 constants. Carries 18 tests, 9 invariants and 1 bench. 267 lines compile to 732 tokens and 218 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 10.0 KB. Clean through every layer."},{"path":"specs/numeric/formats.t27","category":"specs/numeric","name":"formats","module":"Formats","lines":400,"bytes":13630,"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","health":"ok","tokens":1297,"nodes":153,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5040,"rust":839,"verilog":11117,"verilog_hir":698,"zig":6531},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":8,"ExprLiteral":8,"FnDecl":6,"EnumDecl":1,"EnumVariant":5,"TestBlock":26,"StmtExpr":86,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 6 functions, 1 enum and 8 constants. Carries 26 tests, 6 invariants and 4 benches. 400 lines compile to 1,297 tokens and 153 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 10.9 KB. Clean through every layer."},{"path":"specs/numeric/formats_catalog.t27","category":"specs/numeric","name":"formats_catalog","module":"FormatsCatalog","lines":490,"bytes":48614,"description":"t27/specs/numeric/formats_catalog.t27 Universal Numeric Format Catalog (SSOT) Single source of truth for every numeric format relevant to ML, scientific computing, historical hardware, and the GoldenFloat (GF) family. Codegen targets (Markdown / JSON / Python / Rust / C / TS) MUST be derived from this file via tools/gen_formats_catalog.py (bootstrap","health":"ok","tokens":924,"nodes":252,"depth":4,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6116,"rust":4531,"verilog":12973,"verilog_hir":3469,"zig":4256},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":84,"FnDecl":83,"ExprReturn":83},"tags":["domain/numeric","has/functions","health/ok","size/large","src/t27"],"summary":"Declares 83 functions and 1 constant. 490 lines compile to 924 tokens and 252 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 12.7 KB. Clean through every layer."},{"path":"specs/numeric/gf10.t27","category":"specs/numeric","name":"gf10","module":"triformat-gf10","lines":85,"bytes":3399,"description":"gf10.t27 -- GoldenFloat10 Encode/Decode GF10: 10-bit floating point with 1 sign + 3 exponent + 6 mantissa Bit layout: [S(1) E(3) M(6)] = [9:9][8:6][5:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","health":"ok","tokens":238,"nodes":112,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2542,"rust":526,"verilog":2396,"verilog_hir":257,"zig":2366},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":26,"InvariantBlock":6,"StmtExpr":9,"ExprCall":9,"ExprBinary":25,"ExprIdentifier":20,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 6 invariants. 85 lines compile to 238 tokens and 112 AST nodes, depth 9. Emits 5 of 5 backends; largest is C at 2.5 KB. Clean through every layer."},{"path":"specs/numeric/gf1024.t27","category":"specs/numeric","name":"gf1024","module":"triformat-gf1024","lines":83,"bytes":3772,"description":"gf1024.t27 -- GoldenFloat1024 Encode/Decode GF1024: 1024-bit floating point with 1 sign + 391 exponent + 632 mantissa Bit layout: [S(1) E(391) M(632)] = [1023:1023][1022:632][631:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (extrapolated; no RTL, no validated arithmetic).","health":"ok","tokens":200,"nodes":90,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2296,"rust":578,"verilog":2309,"verilog_hir":261,"zig":2170},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":21,"InvariantBlock":4,"StmtExpr":7,"ExprCall":7,"ExprBinary":18,"ExprIdentifier":16,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 4 invariants. 83 lines compile to 200 tokens and 90 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/numeric/gf12.t27","category":"specs/numeric","name":"gf12","module":"GF12","lines":482,"bytes":16296,"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 — 12-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 4 (P1)","health":"warn","tokens":1979,"nodes":647,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9881,"rust":4274,"verilog":19274,"verilog_hir":1059,"zig":11436},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":27,"StmtExpr":64,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 27 tests, 14 invariants and 6 benches. 482 lines compile to 1,979 tokens and 647 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.8 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf128.t27","category":"specs/numeric","name":"gf128","module":"triformat-gf128","lines":77,"bytes":3282,"description":"gf128.t27 -- GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 49 exponent + 78 mantissa Bit layout: [S(1) E(49) M(78)] = [127:127][126:78][77:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).","health":"ok","tokens":200,"nodes":90,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2274,"rust":570,"verilog":2295,"verilog_hir":259,"zig":2157},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":21,"InvariantBlock":4,"StmtExpr":7,"ExprCall":7,"ExprBinary":18,"ExprIdentifier":16,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 4 invariants. 77 lines compile to 200 tokens and 90 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/numeric/gf14.t27","category":"specs/numeric","name":"gf14","module":"triformat-gf14","lines":85,"bytes":3405,"description":"gf14.t27 -- GoldenFloat14 Encode/Decode GF14: 14-bit floating point with 1 sign + 5 exponent + 8 mantissa Bit layout: [S(1) E(5) M(8)] = [13:13][12:8][7:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","health":"ok","tokens":238,"nodes":112,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2545,"rust":529,"verilog":2399,"verilog_hir":257,"zig":2369},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":26,"InvariantBlock":6,"StmtExpr":9,"ExprCall":9,"ExprBinary":25,"ExprIdentifier":20,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 6 invariants. 85 lines compile to 238 tokens and 112 AST nodes, depth 9. Emits 5 of 5 backends; largest is C at 2.5 KB. Clean through every layer."},{"path":"specs/numeric/gf16.t27","category":"specs/numeric","name":"gf16","module":"triformat-gf16","lines":3677,"bytes":112994,"description":"gf16.t27 — GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","health":"ok","tokens":17214,"nodes":7182,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":93970,"rust":20085,"verilog":177467,"verilog_hir":2914,"zig":88953},"repo":"t27","kinds":{"Module":176,"ConstDecl":31,"ExprLiteral":1033,"ExprIdentifier":1602,"FnDecl":54,"StmtLocal":770,"ExprBinary":348,"ExprReturn":161,"ExprIf":25,"ExprUnary":427,"ExprCall":1488,"StmtIf":118,"StmtAssign":109,"StmtFor":50,"TestBlock":196,"StmtExpr":438,"ExprIndex":3,"InvariantBlock":103,"ExprFieldAccess":1,"ExprArrayLiteral":2,"BenchBlock":47},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 54 functions and 31 constants. Carries 196 tests, 103 invariants and 47 benches. 3677 lines compile to 17,214 tokens and 7,182 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 173.3 KB. Clean through every layer."},{"path":"specs/numeric/gf20.t27","category":"specs/numeric","name":"gf20","module":"GF20","lines":469,"bytes":15923,"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 — 20-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 6 (P1)","health":"warn","tokens":1927,"nodes":639,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9537,"rust":4297,"verilog":18742,"verilog_hir":1062,"zig":10908},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,927 tokens and 639 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf24.t27","category":"specs/numeric","name":"gf24","module":"GF24","lines":469,"bytes":15971,"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 — 24-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 7 (P1)","health":"warn","tokens":1933,"nodes":640,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9579,"rust":4328,"verilog":18783,"verilog_hir":1074,"zig":10948},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":40,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,933 tokens and 640 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf256.t27","category":"specs/numeric","name":"gf256","module":"triformat-gf256","lines":77,"bytes":3289,"description":"gf256.t27 -- GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 97 exponent + 158 mantissa Bit layout: [S(1) E(97) M(158)] = [255:255][254:158][157:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).","health":"ok","tokens":200,"nodes":90,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2276,"rust":572,"verilog":2297,"verilog_hir":259,"zig":2159},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":21,"InvariantBlock":4,"StmtExpr":7,"ExprCall":7,"ExprBinary":18,"ExprIdentifier":16,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 4 invariants. 77 lines compile to 200 tokens and 90 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/numeric/gf32.t27","category":"specs/numeric","name":"gf32","module":"GF32","lines":480,"bytes":16512,"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 — 32-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 8 (P1)","health":"warn","tokens":1934,"nodes":641,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9779,"rust":4324,"verilog":18871,"verilog_hir":1074,"zig":11206},"repo":"t27","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":95,"StructDecl":1,"ExprIdentifier":136,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 14 invariants and 6 benches. 480 lines compile to 1,934 tokens and 641 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.4 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf4.t27","category":"specs/numeric","name":"gf4","module":"GF4","lines":306,"bytes":11225,"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 — 4-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 2 (P1)","health":"ok","tokens":1017,"nodes":265,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5819,"rust":1237,"verilog":10517,"verilog_hir":532,"zig":7261},"repo":"t27","kinds":{"Module":13,"UseDecl":2,"ConstDecl":7,"ExprLiteral":33,"StructDecl":1,"ExprIdentifier":29,"FnDecl":6,"StmtIf":8,"ExprBinary":22,"ExprReturn":14,"ExprStructLit":7,"ExprFieldAccess":19,"StmtLocal":8,"ExprCall":2,"ExprUnary":2,"ExprIf":1,"TestBlock":18,"StmtExpr":58,"InvariantBlock":13,"BenchBlock":2},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 7 constants. Carries 18 tests, 13 invariants and 2 benches. 306 lines compile to 1,017 tokens and 265 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"specs/numeric/gf48.t27","category":"specs/numeric","name":"gf48","module":"triformat-gf48","lines":85,"bytes":3424,"description":"gf48.t27 -- GoldenFloat48 Encode/Decode GF48: 48-bit floating point with 1 sign + 18 exponent + 29 mantissa Bit layout: [S(1) E(18) M(29)] = [47:47][46:29][28:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","health":"ok","tokens":238,"nodes":112,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2556,"rust":540,"verilog":2410,"verilog_hir":257,"zig":2380},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":26,"InvariantBlock":6,"StmtExpr":9,"ExprCall":9,"ExprBinary":25,"ExprIdentifier":20,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 6 invariants. 85 lines compile to 238 tokens and 112 AST nodes, depth 9. Emits 5 of 5 backends; largest is C at 2.5 KB. Clean through every layer."},{"path":"specs/numeric/gf512.t27","category":"specs/numeric","name":"gf512","module":"triformat-gf512","lines":78,"bytes":3392,"description":"gf512.t27 -- GoldenFloat512 Encode/Decode GF512: 512-bit floating point with 1 sign + 195 exponent + 316 mantissa Bit layout: [S(1) E(195) M(316)] = [511:511][510:316][315:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (extrapolated; no RTL, no validated arithmetic).","health":"ok","tokens":200,"nodes":90,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2279,"rust":575,"verilog":2300,"verilog_hir":259,"zig":2162},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":21,"InvariantBlock":4,"StmtExpr":7,"ExprCall":7,"ExprBinary":18,"ExprIdentifier":16,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 4 invariants. 78 lines compile to 200 tokens and 90 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/numeric/gf6.t27","category":"specs/numeric","name":"gf6","module":"triformat-gf6","lines":85,"bytes":3386,"description":"gf6.t27 -- GoldenFloat6 Encode/Decode GF6: 6-bit floating point with 1 sign + 2 exponent + 3 mantissa Bit layout: [S(1) E(2) M(3)] = [5:5][4:3][2:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","health":"ok","tokens":238,"nodes":112,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2522,"rust":525,"verilog":2387,"verilog_hir":255,"zig":2358},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":26,"InvariantBlock":6,"StmtExpr":9,"ExprCall":9,"ExprBinary":25,"ExprIdentifier":20,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 6 invariants. 85 lines compile to 238 tokens and 112 AST nodes, depth 9. Emits 5 of 5 backends; largest is C at 2.5 KB. Clean through every layer."},{"path":"specs/numeric/gf64.t27","category":"specs/numeric","name":"gf64","module":"GF64","lines":229,"bytes":7593,"description":"t27/specs/numeric/gf64.t27 GoldenFloat64 — 64-bit phi-structured floating point NUMERIC-STANDARD-001 — canonical double-precision member of the GoldenFloat family","health":"ok","tokens":1029,"nodes":408,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6376,"rust":3462,"verilog":10210,"verilog_hir":927,"zig":6656},"repo":"t27","kinds":{"Module":12,"UseDecl":2,"ConstDecl":12,"ExprLiteral":56,"StructDecl":1,"ExprIdentifier":101,"FnDecl":10,"StmtIf":8,"ExprBinary":63,"ExprReturn":17,"ExprStructLit":2,"ExprFieldAccess":30,"StmtLocal":25,"ExprIf":5,"ExprUnary":6,"ExprCall":8,"StmtWhile":3,"StmtAssign":7,"TestBlock":9,"StmtExpr":21,"InvariantBlock":10},"tags":["domain/numeric","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 1 struct and 12 constants. Carries 9 tests and 10 invariants. 229 lines compile to 1,029 tokens and 408 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 10.0 KB. Clean through every layer."},{"path":"specs/numeric/gf8.t27","category":"specs/numeric","name":"gf8","module":"GF8","lines":522,"bytes":17660,"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 — 8-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 3 (P1)","health":"warn","tokens":2153,"nodes":661,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":10178,"rust":4222,"verilog":20381,"verilog_hir":1057,"zig":12139},"repo":"t27","kinds":{"Module":21,"UseDecl":4,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":36,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"TestBlock":29,"StmtExpr":74,"StmtWhile":3,"StmtAssign":10,"InvariantBlock":15,"BenchBlock":8},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 29 tests, 15 invariants and 8 benches. 522 lines compile to 2,153 tokens and 661 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 5 type errors."},{"path":"specs/numeric/gf96.t27","category":"specs/numeric","name":"gf96","module":"triformat-gf96","lines":77,"bytes":3267,"description":"gf96.t27 -- GoldenFloat96 Encode/Decode GF96: 96-bit floating point with 1 sign + 36 exponent + 59 mantissa Bit layout: [S(1) E(36) M(59)] = [95:95][94:59][58:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).","health":"ok","tokens":200,"nodes":90,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2257,"rust":568,"verilog":2287,"verilog_hir":257,"zig":2150},"repo":"t27","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":21,"InvariantBlock":4,"StmtExpr":7,"ExprCall":7,"ExprBinary":18,"ExprIdentifier":16,"ExprFieldAccess":4},"tags":["domain/numeric","has/constants-only","has/invariants","health/ok","size/small","src/t27"],"summary":"Declares 12 constants. Carries 4 invariants. 77 lines compile to 200 tokens and 90 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/numeric/gf_competitive.t27","category":"specs/numeric","name":"gf_competitive","module":"GFCompetitive","lines":108,"bytes":3355,"description":"t27/specs/numeric/gf_competitive.t27 GF Competitive Analysis Specification Ring 028 — Proving GoldenFloat is not random 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":468,"nodes":206,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3940,"rust":1334,"verilog":7298,"verilog_hir":809,"zig":2606},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":4,"ExprLiteral":29,"FnDecl":5,"StmtIf":8,"ExprBinary":25,"ExprIdentifier":59,"ExprReturn":8,"StmtLocal":21,"StmtAssign":5,"ExprUnary":10,"TestBlock":5,"ExprCall":7,"StmtExpr":7,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 4 constants. Carries 5 tests, 2 invariants and 1 bench. 108 lines compile to 468 tokens and 206 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"specs/numeric/gft1024.t27","category":"specs/numeric","name":"gft1024","module":"triformat_gft1024","lines":56,"bytes":3357,"description":"gft1024.t27 -- GF-T1024: the golden-ratio ternary ladder, 1024-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2027,"rust":723,"verilog":3223,"verilog_hir":370,"zig":1170},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/numeric/gft128.t27","category":"specs/numeric","name":"gft128","module":"triformat_gft128","lines":56,"bytes":2526,"description":"gft128.t27 -- GF-T128: the golden-ratio ternary ladder, 128-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1694,"rust":395,"verilog":2892,"verilog_hir":368,"zig":840},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/numeric/gft16.t27","category":"specs/numeric","name":"gft16","module":"triformat_gft16","lines":56,"bytes":2407,"description":"gft16.t27 -- GF-T16: the golden-ratio ternary ladder, 16-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1647,"rust":353,"verilog":2847,"verilog_hir":366,"zig":796},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/numeric/gft256.t27","category":"specs/numeric","name":"gft256","module":"triformat_gft256","lines":56,"bytes":2642,"description":"gft256.t27 -- GF-T256: the golden-ratio ternary ladder, 256-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1740,"rust":441,"verilog":2938,"verilog_hir":368,"zig":886},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/numeric/gft32.t27","category":"specs/numeric","name":"gft32","module":"triformat_gft32","lines":56,"bytes":2434,"description":"gft32.t27 -- GF-T32: the golden-ratio ternary ladder, 32-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1658,"rust":364,"verilog":2858,"verilog_hir":366,"zig":807},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/numeric/gft4.t27","category":"specs/numeric","name":"gft4","module":"triformat_gft4","lines":56,"bytes":2388,"description":"gft4.t27 -- GF-T4: the golden-ratio ternary ladder, 4-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1636,"rust":347,"verilog":2838,"verilog_hir":364,"zig":788},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/numeric/gft512.t27","category":"specs/numeric","name":"gft512","module":"triformat_gft512","lines":56,"bytes":2881,"description":"gft512.t27 -- GF-T512: the golden-ratio ternary ladder, 512-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1835,"rust":536,"verilog":3033,"verilog_hir":368,"zig":981},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/numeric/gft64.t27","category":"specs/numeric","name":"gft64","module":"triformat_gft64","lines":56,"bytes":2459,"description":"gft64.t27 -- GF-T64: the golden-ratio ternary ladder, 64-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1665,"rust":371,"verilog":2865,"verilog_hir":366,"zig":814},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/numeric/gft8.t27","category":"specs/numeric","name":"gft8","module":"triformat_gft8","lines":56,"bytes":2394,"description":"gft8.t27 -- GF-T8: the golden-ratio ternary ladder, 8-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","health":"ok","tokens":117,"nodes":50,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1639,"rust":350,"verilog":2841,"verilog_hir":364,"zig":791},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":13,"FnDecl":2,"ExprReturn":2,"ExprBinary":9,"ExprIdentifier":9,"TestBlock":2,"StmtExpr":3,"ExprCall":3},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 5 constants. Carries 2 tests. 56 lines compile to 117 tokens and 50 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/numeric/gfternary.t27","category":"specs/numeric","name":"gfternary","module":"triformat-gaternary","lines":385,"bytes":15718,"description":"gfternary.t27 0 GFTernary Format Specification 2-bit golden-ratio ternary: representable values { -phi, 0, +phi } The phi-scaled limit of the ternary-weight family: GFTernary = phi * {-1,0,+1} (a ternary-weight quantizer, cf. TWN / BitNet, with the scale fixed at phi).","health":"ok","tokens":1446,"nodes":659,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8530,"rust":1849,"verilog":16567,"verilog_hir":692,"zig":7287},"repo":"t27","kinds":{"Module":7,"ConstDecl":16,"ExprLiteral":91,"ExprIdentifier":175,"FnDecl":7,"StmtLocal":47,"ExprBinary":101,"ExprReturn":9,"ExprIf":10,"ExprCall":68,"ExprUnary":45,"StmtIf":2,"TestBlock":13,"StmtExpr":40,"BenchBlock":4,"StmtFor":4,"StmtAssign":11,"InvariantBlock":5,"ExprArrayLiteral":2,"ExprIndex":2},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions and 16 constants. Carries 13 tests, 5 invariants and 4 benches. 385 lines compile to 1,446 tokens and 659 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 16.2 KB. Clean through every layer."},{"path":"specs/numeric/golden_sieve.t27","category":"specs/numeric","name":"golden_sieve","module":"numeric-golden-sieve","lines":547,"bytes":25931,"description":"golden_sieve.t27 0 The Golden Sieve -- which weight alphabets a ternary datapath may use, derived from measured theorems rather than chosen. Five predicates. A candidate alphabet is admissible only if it satisfies all five. Each cites the measurement that established it; none is an opinion. S1 PACKING |A| = 3^k T367 only powers of three waste no trits S2 CEILING k <= 2 T369 27 levels measured +0.15 / -0.13 pp,","health":"ok","tokens":1603,"nodes":733,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11434,"rust":3619,"verilog":12551,"verilog_hir":1452,"zig":7146},"repo":"t27","kinds":{"Module":25,"ConstDecl":14,"ExprLiteral":233,"FnDecl":19,"StmtIf":24,"ExprBinary":78,"ExprIdentifier":82,"ExprReturn":43,"ExprCall":140,"StmtLocal":1,"InvariantBlock":8,"StmtExpr":62,"TestBlock":3,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 19 functions and 14 constants. Carries 3 tests, 8 invariants and 1 bench. 547 lines compile to 1,603 tokens and 733 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/numeric/goldenfloat_family.t27","category":"specs/numeric","name":"goldenfloat_family","module":"GoldenFloatFamily","lines":539,"bytes":19038,"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family -- phi-structured floating point formats NUMERIC-STANDARD-001 -- Agent 1 (P0)","health":"warn","tokens":2119,"nodes":359,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":11843,"rust":5559,"verilog":21177,"verilog_hir":686,"zig":14119},"repo":"t27","kinds":{"Module":12,"UseDecl":2,"StructDecl":2,"ExprIdentifier":78,"ConstDecl":2,"FnDecl":7,"StmtFor":4,"StmtIf":7,"ExprBinary":32,"ExprFieldAccess":30,"ExprReturn":9,"ExprIndex":3,"ExprLiteral":36,"StmtLocal":15,"ExprArrayLiteral":1,"StmtAssign":9,"ExprStructLit":1,"ExprCall":6,"ExprUnary":2,"TestBlock":27,"StmtExpr":58,"InvariantBlock":11,"BenchBlock":5},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 7 functions, 2 structs and 2 constants. Carries 27 tests, 11 invariants and 5 benches. 539 lines compile to 2,119 tokens and 359 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 20.7 KB. Compiles with 2 type errors."},{"path":"specs/numeric/lucas_accumulator.t27","category":"specs/numeric","name":"lucas_accumulator","module":"LucasAccumulator","lines":138,"bytes":5166,"description":"t27/specs/numeric/lucas_accumulator.t27 Lucas-exact accumulator for the GoldenFloat width ladder (Phase F, leg F1) NUMERIC-STANDARD-002 CLAIM STATUS DISCIPLINE (igla-phi-architecture / goldenfloat-ladder): This file captures the ONE genuinely [Verified] leg of the breadth-as-moat bet (FL-004 in docs/nona-03-manifest/RESEARCH_CLAIMS.md): the arithmetic","health":"ok","tokens":548,"nodes":115,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3019,"rust":756,"verilog":5989,"verilog_hir":460,"zig":3221},"repo":"t27","kinds":{"Module":5,"UseDecl":1,"ConstDecl":4,"ExprLiteral":14,"FnDecl":3,"StmtIf":3,"ExprBinary":8,"ExprIdentifier":21,"ExprReturn":6,"StmtLocal":5,"StmtWhile":1,"StmtAssign":3,"ExprFieldAccess":1,"ExprCall":2,"ExprUnary":2,"InvariantBlock":3,"TestBlock":9,"StmtExpr":23,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 4 constants. Carries 9 tests, 3 invariants and 1 bench. 138 lines compile to 548 tokens and 115 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Clean through every layer."},{"path":"specs/numeric/pellis_verify.t27","category":"specs/numeric","name":"pellis_verify","module":"PellisVerify","lines":65,"bytes":2169,"description":"t27/specs/numeric/pellis_verify.t27 Pellis Verification Specification Phase 2 of GF Competitive Analysis (issue #289) GMP-backed high-precision verification of Pellis closed form 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":259,"nodes":109,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2881,"rust":616,"verilog":5233,"verilog_hir":477,"zig":1693},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":3,"ExprLiteral":22,"FnDecl":2,"ExprReturn":3,"ExprBinary":15,"ExprIdentifier":27,"StmtIf":2,"StmtLocal":14,"StmtAssign":1,"ExprUnary":3,"TestBlock":2,"ExprCall":4,"StmtExpr":4,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 3 constants. Carries 2 tests, 2 invariants and 1 bench. 65 lines compile to 259 tokens and 109 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Clean through every layer."},{"path":"specs/numeric/phi_ratio.t27","category":"specs/numeric","name":"phi_ratio","module":"PhiRatio","lines":718,"bytes":27130,"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","health":"ok","tokens":2634,"nodes":611,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12445,"rust":4275,"verilog":23056,"verilog_hir":1108,"zig":17290},"repo":"t27","kinds":{"Module":22,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":128,"StructDecl":2,"FnDecl":14,"StmtLocal":33,"ExprBinary":69,"ExprLiteral":54,"ExprFieldAccess":28,"ExprCall":12,"ExprReturn":28,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":19,"ExprUnary":7,"StmtAssign":7,"StmtWhile":1,"TestBlock":38,"StmtExpr":111,"InvariantBlock":28,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 2 structs and 2 constants. Carries 38 tests, 28 invariants and 4 benches. 718 lines compile to 2,634 tokens and 611 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 22.5 KB. Clean through every layer."},{"path":"specs/numeric/posit_ladder_control.t27","category":"specs/numeric","name":"posit_ladder_control","module":"PositLadderControl","lines":141,"bytes":6171,"description":"t27/specs/numeric/posit_ladder_control.t27 Posit ladder -- the F3 CONTROL for the GoldenFloat breadth-as-moat bet (FL-004) NUMERIC-STANDARD-003 PURPOSE (goldenfloat-ladder skill, F3 leg): The breadth-as-moat claim (FL-004) is that ONE closed rule across a width ladder gives a defensible toolchain-coherence advantage. Posit is the","health":"ok","tokens":500,"nodes":91,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2895,"rust":769,"verilog":5413,"verilog_hir":561,"zig":2297},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":3,"ExprLiteral":20,"FnDecl":5,"StmtIf":6,"ExprBinary":9,"ExprIdentifier":11,"ExprReturn":11,"ExprUnary":1,"ExprCall":2,"ExprFieldAccess":3,"InvariantBlock":2,"TestBlock":5,"StmtExpr":4,"BenchBlock":1},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 3 constants. Carries 5 tests, 2 invariants and 1 bench. 141 lines compile to 500 tokens and 91 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"specs/numeric/requant_boundary.t27","category":"specs/numeric","name":"requant_boundary","module":"RequantBoundary","lines":217,"bytes":9731,"description":"t27/specs/numeric/requant_boundary.t27 Activation requantizer: the threshold boundary convention. Recorded because Wave 669 had to settle a semantic question with no specification to appeal to. Two independently written implementations of the same rule -- the emitted `activation_requant` RTL and the end-to-end testbench reference in sim/tb_data_check.v -- agreed everywhere except at","health":"ok","tokens":516,"nodes":114,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2889,"rust":1116,"verilog":6484,"verilog_hir":429,"zig":3669},"repo":"t27","kinds":{"Module":4,"ConstDecl":17,"ExprLiteral":19,"FnDecl":2,"StmtIf":3,"ExprBinary":4,"ExprIdentifier":11,"ExprReturn":5,"ExprUnary":1,"ExprCall":1,"TestBlock":12,"StmtExpr":35},"tags":["domain/numeric","has/functions","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 2 functions and 17 constants. Carries 12 tests. 217 lines compile to 516 tokens and 114 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"specs/numeric/tf3.t27","category":"specs/numeric","name":"tf3","module":"triformat-tf3","lines":1692,"bytes":47808,"description":"tf3.t27 — TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","health":"warn","tokens":7958,"nodes":3181,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":42202,"rust":9204,"verilog":92438,"verilog_hir":1921,"zig":39187},"repo":"t27","kinds":{"Module":66,"ConstDecl":16,"ExprLiteral":494,"ExprIdentifier":699,"FnDecl":32,"ExprReturn":62,"ExprCall":636,"ExprBinary":170,"StmtLocal":323,"StmtIf":30,"ExprIf":16,"ExprUnary":178,"StmtWhile":2,"StmtAssign":64,"TestBlock":93,"StmtExpr":192,"ExprFieldAccess":1,"InvariantBlock":46,"BenchBlock":30,"StmtFor":30,"ExprIndex":1},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 32 functions and 16 constants. Carries 93 tests, 46 invariants and 30 benches. 1692 lines compile to 7,958 tokens and 3,181 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 90.3 KB. Compiles with 2 type errors."},{"path":"specs/numeric/tnf1024.t27","category":"specs/numeric","name":"tnf1024","module":"triformat_tnf1024","lines":62,"bytes":2623,"description":"tnf1024.t27 -- TNF1024: Ternary Network Float, 1024-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","health":"ok","tokens":357,"nodes":156,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2662,"rust":661,"verilog":4298,"verilog_hir":710,"zig":1561},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":67,"FnDecl":3,"ExprReturn":3,"ExprBinary":32,"ExprIdentifier":18,"TestBlock":4,"StmtExpr":8,"ExprCall":14},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 4 tests. 62 lines compile to 357 tokens and 156 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"specs/numeric/tnf128.t27","category":"specs/numeric","name":"tnf128","module":"triformat_tnf128","lines":62,"bytes":2484,"description":"tnf128.t27 -- TNF128: Ternary Network Float, 128-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","health":"ok","tokens":309,"nodes":135,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2480,"rust":575,"verilog":4095,"verilog_hir":626,"zig":1434},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":55,"FnDecl":3,"ExprReturn":3,"ExprBinary":26,"ExprIdentifier":15,"TestBlock":4,"StmtExpr":8,"ExprCall":14},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 4 tests. 62 lines compile to 309 tokens and 135 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/numeric/tnf16.t27","category":"specs/numeric","name":"tnf16","module":"triformat_tnf16","lines":73,"bytes":3207,"description":"tnf16.t27 -- TNF16: Ternary Network Float. A fixed-field GoldenFloat whose EXPONENT is a balanced-ternary number, built to beat tekum16 on a ternary fabric: no regime decode (tekum16's main cost), the exponent is added natively in balanced ternary, and the mantissa keeps GF16's phi-optimal uniform 9-bit precision (vs tekum16 tapering to ~4 bits at extremes). layout: [ sign(1) | E = 4 balanced-ternary trits | M = 11 binary bits ]","health":"ok","tokens":257,"nodes":112,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2301,"rust":472,"verilog":3884,"verilog_hir":516,"zig":1324},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":42,"FnDecl":3,"ExprReturn":3,"ExprBinary":18,"ExprIdentifier":9,"TestBlock":4,"StmtExpr":9,"ExprCall":17},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 4 tests. 73 lines compile to 257 tokens and 112 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/numeric/tnf17.t27","category":"specs/numeric","name":"tnf17","module":"TNF17","lines":367,"bytes":11975,"description":"t27/specs/numeric/tnf17.t27 TNF17e -- Ternary Network Float, the signed accumulator format. WHY THIS EXISTS. Measured 2026-08-13: the string \"TNF\" appears in ZERO of the 1,064 .t27 specs. It has a 2,353-line article (docs/theory/TNF_ARTICLE_RU.md), a dedicated skill, and an erratum -- and no implementation. This file is the first one.","health":"ok","tokens":1186,"nodes":275,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6527,"rust":1974,"verilog":13654,"verilog_hir":1289,"zig":7546},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":14,"ExprLiteral":34,"FnDecl":18,"ExprReturn":18,"ExprBinary":33,"ExprIdentifier":31,"ExprFieldAccess":6,"ExprCall":7,"TestBlock":34,"StmtExpr":68,"InvariantBlock":10},"tags":["domain/numeric","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 18 functions and 14 constants. Carries 34 tests and 10 invariants. 367 lines compile to 1,186 tokens and 275 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 13.3 KB. Clean through every layer."},{"path":"specs/numeric/tnf256.t27","category":"specs/numeric","name":"tnf256","module":"triformat_tnf256","lines":62,"bytes":2525,"description":"tnf256.t27 -- TNF256: Ternary Network Float, 256-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","health":"ok","tokens":325,"nodes":142,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2537,"rust":602,"verilog":4160,"verilog_hir":653,"zig":1474},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":59,"FnDecl":3,"ExprReturn":3,"ExprBinary":28,"ExprIdentifier":16,"TestBlock":4,"StmtExpr":8,"ExprCall":14},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 4 tests. 62 lines compile to 325 tokens and 142 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/numeric/tnf32.t27","category":"specs/numeric","name":"tnf32","module":"triformat_tnf32","lines":44,"bytes":1740,"description":"tnf32.t27 -- TNF32: Ternary Network Float, 32-bit class. Top practical rung of the TF ladder. Balanced-ternary exponent = 6 trits (3^6 = 729 offsets, exponent +-364, ~219 decades), phi-ish 25-bit mantissa, NO regime decode. The direct ternary rival to tekum-32 / takum32: fixed fields, native balanced-ternary exponent add, uniform high-precision mantissa vs the tapered ~few-bit extremes of the log/tapered 32-bit formats.","health":"ok","tokens":238,"nodes":99,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2081,"rust":491,"verilog":3362,"verilog_hir":570,"zig":1090},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":42,"FnDecl":3,"ExprReturn":3,"ExprBinary":17,"ExprIdentifier":8,"TestBlock":2,"StmtExpr":6,"ExprCall":12},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 functions and 4 constants. Carries 2 tests. 44 lines compile to 238 tokens and 99 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/numeric/tnf4.t27","category":"specs/numeric","name":"tnf4","module":"triformat_tnf4","lines":48,"bytes":1869,"description":"tnf4.t27 -- TNF4: Ternary Network Float, 4-bit class (bottom rung). Balanced-ternary exponent = 2 trits (3^2 = 9 offsets, exponent +-4, ~2.4 decades), 1-bit mantissa, NO regime decode. layout: [ sign(1) | E = 2 balanced-ternary trits | M = 1 bit ] Positioning (the 4-bit rung is unique): the format-to-beat here is NOT tekum but **BitNet-1.58 ternary WEIGHTS** {-1,0,+1} -- a weight quantizer, not a real","health":"ok","tokens":174,"nodes":71,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1860,"rust":392,"verilog":3111,"verilog_hir":460,"zig":940},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":26,"FnDecl":3,"ExprReturn":3,"ExprBinary":9,"ExprIdentifier":4,"TestBlock":2,"StmtExpr":6,"ExprCall":12},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 functions and 4 constants. Carries 2 tests. 48 lines compile to 174 tokens and 71 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/numeric/tnf512.t27","category":"specs/numeric","name":"tnf512","module":"triformat_tnf512","lines":62,"bytes":2571,"description":"tnf512.t27 -- TNF512: Ternary Network Float, 512-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","health":"ok","tokens":341,"nodes":149,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2595,"rust":630,"verilog":4226,"verilog_hir":680,"zig":1515},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":63,"FnDecl":3,"ExprReturn":3,"ExprBinary":30,"ExprIdentifier":17,"TestBlock":4,"StmtExpr":8,"ExprCall":14},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 4 tests. 62 lines compile to 341 tokens and 149 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/numeric/tnf64.t27","category":"specs/numeric","name":"tnf64","module":"triformat_tnf64","lines":62,"bytes":2443,"description":"tnf64.t27 -- TNF64: Ternary Network Float, 64-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","health":"ok","tokens":293,"nodes":128,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2423,"rust":549,"verilog":4032,"verilog_hir":597,"zig":1397},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":51,"FnDecl":3,"ExprReturn":3,"ExprBinary":24,"ExprIdentifier":14,"TestBlock":4,"StmtExpr":8,"ExprCall":14},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 4 tests. 62 lines compile to 293 tokens and 128 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/numeric/tnf8.t27","category":"specs/numeric","name":"tnf8","module":"triformat_tnf8","lines":43,"bytes":1564,"description":"tnf8.t27 -- TNF8: Ternary Network Float, 8-bit class. Rung of the TF ladder (TF4/8/16/32). Balanced-ternary exponent = 3 trits (3^3 = 27 offsets, exponent +-13, ~8 decades), phi-ish 4-bit mantissa, NO regime decode. Beats tekum-8 by the same structural argument as TF16 beats tekum16: fixed fields + native balanced-ternary exponent add, uniform mantissa. layout: [ sign(1) | E = 3 balanced-ternary trits | M = 4 bits ]","health":"ok","tokens":190,"nodes":78,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1916,"rust":417,"verilog":3175,"verilog_hir":487,"zig":979},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":4,"ExprLiteral":30,"FnDecl":3,"ExprReturn":3,"ExprBinary":11,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":6,"ExprCall":12},"tags":["domain/numeric","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 3 functions and 4 constants. Carries 2 tests. 43 lines compile to 190 tokens and 78 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/numeric/trinity_numeric_surface.t27","category":"specs/numeric","name":"trinity_numeric_surface","module":"trinity-numeric-surface","lines":38,"bytes":1706,"description":"trinity_numeric_surface.t27 — Public numeric interchange policy (GoldenFloat-first) NUMERIC-STANDARD-001 — integer-backed GF raw words are the portable surface","health":"ok","tokens":100,"nodes":27,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1079,"rust":390,"verilog":2065,"verilog_hir":275,"zig":590},"repo":"t27","kinds":{"Module":1,"ConstDecl":9,"ExprLiteral":10,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":2,"ExprIdentifier":2},"tags":["domain/numeric","has/constants-only","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 9 constants. Carries 1 test. 38 lines compile to 100 tokens and 27 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/physics/chimera_best_gamma.t27","category":"specs/physics","name":"chimera_best_gamma","module":"chimera","lines":17,"bytes":402,"description":"t27/specs/physics/chimera_best_gamma.t27 Best gamma formula from PDG 2024 P35_new (Delta = 0.140%)","health":"ok","tokens":35,"nodes":6,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":935,"rust":148,"verilog":1546,"verilog_hir":281,"zig":283},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprIdentifier":1,"FnDecl":1},"tags":["domain/physics","has/functions","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. 17 lines compile to 35 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/physics/e8_lqg_bridge.t27","category":"specs/physics","name":"e8_lqg_bridge","module":null,"lines":113,"bytes":2809,"description":null,"health":"warn","tokens":675,"nodes":67,"depth":7,"loss":66,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1093,"rust":66,"verilog":2559,"verilog_hir":243,"zig":719},"repo":"t27","kinds":{"Module":1,"TestBlock":3,"StmtLocal":5,"ExprCall":12,"StmtExpr":6,"ExprBinary":5,"ExprFieldAccess":8,"ExprIdentifier":4,"ExprLiteral":19,"ExprStructLit":1,"ExprUnary":2,"ExprArrayLiteral":1},"tags":["domain/physics","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 3 tests. 113 lines compile to 675 tokens and 67 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 66 items dropped by error recovery."},{"path":"specs/physics/formula_discovery.t27","category":"specs/physics","name":"formula_discovery","module":"FormulaDiscovery","lines":158,"bytes":4536,"description":"Formula Discovery v1.0 — ULTRA ENGINE Specification","health":"ok","tokens":973,"nodes":183,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4326,"rust":2204,"verilog":6528,"verilog_hir":835,"zig":3491},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":22,"ExprLiteral":22,"ExprIdentifier":46,"FnDecl":10,"ExprReturn":11,"ExprBinary":24,"StmtIf":2,"ExprCall":11,"StmtLocal":5,"TestBlock":4,"StmtExpr":18,"InvariantBlock":4},"tags":["domain/physics","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 22 constants. Carries 4 tests and 4 invariants. 158 lines compile to 973 tokens and 183 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Clean through every layer."},{"path":"specs/physics/gamma-conflict.t27","category":"specs/physics","name":"gamma-conflict","module":null,"lines":253,"bytes":6392,"description":null,"health":"warn","tokens":1292,"nodes":1,"depth":1,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/physics","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares no top-level items. 253 lines compile to 1,292 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"specs/physics/gamma_conjecture.t27","category":"specs/physics","name":"gamma_conjecture","module":"GammaConjecture","lines":277,"bytes":12630,"description":"t27/specs/physics/gamma_conjecture.t27 Strand I — Loop Quantum Gravity Conjecture GI1: Barbero-Immirzi Parameter from Golden Section","health":"ok","tokens":1018,"nodes":196,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6527,"rust":2239,"verilog":12477,"verilog_hir":775,"zig":7529},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprIdentifier":52,"ExprLiteral":5,"FnDecl":6,"StmtLocal":9,"ExprBinary":17,"ExprReturn":6,"ExprCall":5,"StructDecl":1,"ExprStructLit":1,"ExprFieldAccess":9,"TestBlock":16,"StmtExpr":49,"InvariantBlock":9,"BenchBlock":4},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 5 constants. Carries 16 tests, 9 invariants and 4 benches. 277 lines compile to 1,018 tokens and 196 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/physics/gi1_analysis.t27","category":"specs/physics","name":"gi1_analysis","module":"GI1Analysis","lines":238,"bytes":9763,"description":"t27/specs/physics/gi1_analysis.t27 GI1 Pre-Registration Analysis: γ_φ vs γ₁ comparison Three hypotheses tested against empirical data","health":"ok","tokens":741,"nodes":179,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6450,"rust":2499,"verilog":12296,"verilog_hir":598,"zig":6659},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":6,"ExprLiteral":12,"ExprIdentifier":41,"FnDecl":6,"ExprReturn":6,"ExprBinary":14,"StmtLocal":10,"StructDecl":1,"ExprCall":8,"ExprStructLit":1,"ExprFieldAccess":12,"TestBlock":13,"StmtExpr":34,"InvariantBlock":7,"BenchBlock":6},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 6 functions, 1 struct and 6 constants. Carries 13 tests, 7 invariants and 6 benches. 238 lines compile to 741 tokens and 179 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Clean through every layer."},{"path":"specs/physics/hslm_benchmark.t27","category":"specs/physics","name":"hslm_benchmark","module":null,"lines":90,"bytes":2292,"description":null,"health":"warn","tokens":433,"nodes":23,"depth":6,"loss":33,"tcErrors":0,"failedBackends":[],"outBytes":{"c":797,"rust":66,"verilog":1967,"verilog_hir":243,"zig":424},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":4,"ExprCall":4,"ExprIdentifier":5,"ExprLiteral":4,"ExprBinary":3},"tags":["domain/physics","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests. 90 lines compile to 433 tokens and 23 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Compiles with 33 items dropped by error recovery."},{"path":"specs/physics/lqg_cs_bridge.t27","category":"specs/physics","name":"lqg_cs_bridge","module":null,"lines":141,"bytes":4719,"description":null,"health":"warn","tokens":753,"nodes":7,"depth":3,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1076,"rust":66,"verilog":2051,"verilog_hir":243,"zig":611},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":2,"InvariantBlock":2},"tags":["domain/physics","has/invariants","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests and 2 invariants. 141 lines compile to 753 tokens and 7 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"specs/physics/lqg_entropy.t27","category":"specs/physics","name":"lqg_entropy","module":null,"lines":67,"bytes":2789,"description":"t27/specs/physics/lqg_entropy.t27 KEPLER→NEWTON Direction B: LQG → γ (PRIORITY 3 - HONEST INQUIRY) Status: Final v2.2 Date: 2026-04-05 HONEST ASSESSMENT: γ = φ⁻³ does NOT come from CS theory. This spec documents research needed to find:","health":"ok","tokens":16,"nodes":7,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1068,"rust":66,"verilog":2054,"verilog_hir":243,"zig":603},"repo":"t27","kinds":{"Module":1,"TestBlock":2,"StmtExpr":2,"InvariantBlock":2},"tags":["domain/physics","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares no top-level items. Carries 2 tests and 2 invariants. 67 lines compile to 16 tokens and 7 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/physics/p2_brain_physics.t27","category":"specs/physics","name":"p2_brain_physics","module":"P2Brain","lines":165,"bytes":6878,"description":"Module: P2 Brain — Physics Engine Framework","health":"ok","tokens":596,"nodes":59,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4055,"rust":1293,"verilog":6443,"verilog_hir":540,"zig":3241},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":8,"ExprIdentifier":13,"ExprLiteral":2,"StructDecl":2,"FnDecl":3,"EnumDecl":1,"EnumVariant":5,"TestBlock":3,"StmtExpr":9,"BenchBlock":3,"InvariantBlock":6},"tags":["domain/physics","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 3 functions, 2 structs, 1 enum and 8 constants. Carries 3 tests, 6 invariants and 3 benches. 165 lines compile to 596 tokens and 59 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"specs/physics/pellis-formulas.t27","category":"specs/physics","name":"pellis-formulas","module":"PellisFormulas","lines":67,"bytes":2117,"description":"t27/specs/physics/pellis-formulas.t27 Trinity x Pellis hybrid — thin-structure formulas anchored on L5 (issue #277). SSOT: invariants tie Pell ladders to phi; observables are references for tri math compare.","health":"ok","tokens":233,"nodes":51,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2513,"rust":724,"verilog":4518,"verilog_hir":362,"zig":1727},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":12,"ExprIdentifier":9,"ExprLiteral":7,"FnDecl":2,"ExprReturn":2,"ExprCall":2,"ExprBinary":2,"TestBlock":4,"StmtExpr":5,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 12 constants. Carries 4 tests, 2 invariants and 1 bench. 67 lines compile to 233 tokens and 51 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/physics/quantum.t27","category":"specs/physics","name":"quantum","module":null,"lines":72,"bytes":1796,"description":null,"health":"warn","tokens":38,"nodes":25,"depth":8,"loss":21,"tcErrors":0,"failedBackends":[],"outBytes":{"c":824,"rust":66,"verilog":2181,"verilog_hir":243,"zig":437},"repo":"t27","kinds":{"Module":1,"TestBlock":3,"StmtExpr":3,"ExprCall":3,"ExprBinary":5,"ExprIdentifier":4,"ExprLiteral":5,"ExprUnary":1},"tags":["domain/physics","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares no top-level items. Carries 3 tests. 72 lines compile to 38 tokens and 25 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Compiles with 21 items dropped by error recovery."},{"path":"specs/physics/sacred_verification.t27","category":"specs/physics","name":"sacred_verification","module":"SacredVerification","lines":605,"bytes":27188,"description":"t27/specs/physics/sacred_verification.t27 KEPLER→NEWTON Sacred Formula Verification Spec Status: Final v1.0 Date: 2026-04-06 This spec defines the verification framework for [planned] 152 Sacred Formula equations (N implemented today). It provides a structured approach to testing which","health":"ok","tokens":2193,"nodes":103,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3293,"rust":1689,"verilog":5837,"verilog_hir":637,"zig":7422},"repo":"t27","kinds":{"Module":4,"UseDecl":2,"EnumDecl":2,"EnumVariant":9,"StructDecl":2,"ExprIdentifier":33,"FnDecl":6,"ExprReturn":5,"ExprArrayLiteral":5,"ConstDecl":4,"ExprLiteral":7,"StmtLocal":6,"ExprBinary":7,"ExprFieldAccess":4,"ExprIf":1,"ExprUnary":1,"StmtIf":2,"ExprCall":1,"StmtAssign":2},"tags":["domain/physics","has/enums","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 6 functions, 2 structs, 2 enums and 4 constants. 605 lines compile to 2,193 tokens and 103 AST nodes, depth 9. Emits 5 of 5 backends; largest is Zig at 7.2 KB. Clean through every layer."},{"path":"specs/physics/su2_chern_simons.t27","category":"specs/physics","name":"su2_chern_simons","module":"SU2ChernSimons","lines":349,"bytes":12232,"description":"t27/specs/physics/su2_chern_simons.t27 SU(2)_k Chern-Simons Theory — Topological QFT Foundation Direction F (Priority 1) of PROJECT KEPLER->NEWTON This module formalizes the PROVEN THEOREM: golden ratio phi emerges from SU(2) Chern-Simons theory at level k=3 as quantum dimension of Fibonacci anyons. This is NOT numerology — it is a mathematical","health":"ok","tokens":1285,"nodes":394,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6939,"rust":2857,"verilog":14220,"verilog_hir":1037,"zig":7699},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"ConstDecl":3,"ExprLiteral":48,"ExprIdentifier":98,"StructDecl":1,"FnDecl":13,"ExprReturn":16,"ExprStructLit":1,"ExprFieldAccess":10,"ExprArrayLiteral":1,"StmtLocal":24,"ExprBinary":66,"StmtIf":3,"StmtWhile":4,"StmtAssign":13,"ExprCall":9,"ExprUnary":3,"TestBlock":18,"StmtExpr":43,"InvariantBlock":8,"BenchBlock":3},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 1 struct and 3 constants. Carries 18 tests, 8 invariants and 3 benches. 349 lines compile to 1,285 tokens and 394 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.9 KB. Clean through every layer."},{"path":"specs/physics/zamolodchikov_4d_conjecture.t27","category":"specs/physics","name":"zamolodchikov_4d_conjecture","module":"Zamolodchikov4DConjecture","lines":254,"bytes":10735,"description":"t27/specs/physics/zamolodchikov_4d_conjecture.t27 4D Zamolodchikov Conjecture — The Breakthrough Hypothesis Direction E of PROJECT KEPLER->NEWTON HYPOTHESIS: A 4D quantum field theory with E8 integrable structure fixes the fundamental constants of the Standard Model through the same algebraic mechanism that fixes the 8 Zamolodchikov masses in 2D.","health":"ok","tokens":401,"nodes":66,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2974,"rust":1216,"verilog":5384,"verilog_hir":420,"zig":2806},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"StructDecl":3,"ExprIdentifier":12,"FnDecl":3,"ExprReturn":3,"ExprStructLit":2,"ExprFieldAccess":8,"ExprLiteral":9,"ExprCall":1,"ExprBinary":2,"ExprArrayLiteral":1,"TestBlock":4,"StmtExpr":10,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/physics","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 3 functions and 3 structs. Carries 4 tests, 2 invariants and 1 bench. 254 lines compile to 401 tokens and 66 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"specs/pins/emitter_xdc.t27","category":"specs/pins","name":"emitter_xdc","module":"EmitterXDC","lines":295,"bytes":9345,"description":"t27/specs/pins/emitter_xdc.t27 XDC Constraint Emitter from Pins IR Generates nextpnr-compatible XDC from Design/Binding/ClockDef Output format matches t27c fpga-build --minimal exactly","health":"warn","tokens":1591,"nodes":546,"depth":12,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":8597,"rust":4893,"verilog":14695,"verilog_hir":3460,"zig":8775},"repo":"t27","kinds":{"Module":10,"UseDecl":2,"ConstDecl":1,"ExprLiteral":108,"StructDecl":2,"ExprIdentifier":150,"FnDecl":11,"ExprReturn":12,"ExprStructLit":3,"ExprFieldAccess":31,"ExprArrayLiteral":1,"StmtLocal":15,"StmtIf":7,"ExprBinary":29,"StmtAssign":51,"ExprIndex":7,"ExprCall":29,"StmtWhile":2,"ExprUnary":4,"TestBlock":18,"StmtExpr":45,"InvariantBlock":6,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 11 functions, 2 structs and 1 constant. Carries 18 tests, 6 invariants and 2 benches. 295 lines compile to 1,591 tokens and 546 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 3 type errors."},{"path":"specs/pins/ir.t27","category":"specs/pins","name":"ir","module":"PinsIR","lines":391,"bytes":11981,"description":"t27/specs/pins/ir.t27 Pins Intermediate Representation (IR) Models FPGA pin assignments, I/O standards, clock constraints","health":"warn","tokens":2166,"nodes":503,"depth":17,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":8889,"rust":5188,"verilog":15838,"verilog_hir":1465,"zig":10857},"repo":"t27","kinds":{"Module":18,"UseDecl":2,"StructDecl":6,"ExprIdentifier":121,"ConstDecl":1,"FnDecl":18,"ExprReturn":23,"ExprStructLit":7,"ExprFieldAccess":86,"ExprLiteral":39,"ExprUnary":3,"ExprArrayLiteral":2,"StmtLocal":8,"StmtIf":11,"ExprBinary":26,"StmtAssign":10,"ExprIndex":13,"StmtWhile":6,"ExprCall":1,"TestBlock":19,"StmtExpr":76,"InvariantBlock":5,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 18 functions, 6 structs and 1 constant. Carries 19 tests, 5 invariants and 2 benches. 391 lines compile to 2,166 tokens and 503 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Compiles with 6 type errors."},{"path":"specs/pins/parser.t27","category":"specs/pins","name":"parser","module":"PinsParser","lines":583,"bytes":17859,"description":"t27/specs/pins/parser.t27 Pins Parser for Trinity t27 Parse .t27 pin specifications into Pins IR","health":"warn","tokens":2695,"nodes":36,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1240,"rust":663,"verilog":2349,"verilog_hir":249,"zig":665},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"EnumDecl":2,"EnumVariant":30},"tags":["domain/fpga","has/enums","has/imports","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 2 enums. 583 lines compile to 2,695 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/pipeline/benchmarks.t27","category":"specs/pipeline","name":"benchmarks","module":"PipelineBenchmarks","lines":86,"bytes":2598,"description":"t27/specs/pipeline/benchmarks.t27 Pipeline Performance Benchmark Specification Ring 028 — tri bench run performance targets 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":333,"nodes":144,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3315,"rust":904,"verilog":5548,"verilog_hir":706,"zig":1856},"repo":"t27","kinds":{"Module":3,"UseDecl":1,"ConstDecl":7,"ExprLiteral":35,"FnDecl":5,"ExprReturn":7,"ExprBinary":17,"ExprIdentifier":24,"StmtIf":2,"ExprIndex":2,"TestBlock":4,"StmtExpr":11,"ExprUnary":6,"ExprCall":14,"StmtLocal":2,"ExprArrayLiteral":1,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/pipeline","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 7 constants. Carries 4 tests, 2 invariants and 1 bench. 86 lines compile to 333 tokens and 144 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"specs/pipeline/e2e_test.t27","category":"specs/pipeline","name":"e2e_test","module":"PipelineE2E","lines":164,"bytes":6066,"description":"t27/specs/pipeline/e2e_test.t27 Pipeline E2E Test Specification Ring 028 — tri pipeline end-to-end testing 01 + 1/23 = 3 | TRINITY","health":"warn","tokens":954,"nodes":498,"depth":22,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":6140,"rust":4278,"verilog":9422,"verilog_hir":662,"zig":5457},"repo":"t27","kinds":{"Module":39,"UseDecl":1,"ConstDecl":11,"ExprLiteral":45,"FnDecl":4,"StmtLocal":22,"ExprIdentifier":174,"StmtIf":22,"ExprBinary":68,"ExprFieldAccess":14,"StmtAssign":30,"StmtWhile":2,"ExprIndex":14,"ExprReturn":6,"TestBlock":4,"ExprCall":12,"ExprUnary":13,"StmtExpr":13,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/pipeline","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions and 11 constants. Carries 4 tests, 3 invariants and 1 bench. 164 lines compile to 954 tokens and 498 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 9.2 KB. Compiles with 2 type errors."},{"path":"specs/pipeline/experience_save.t27","category":"specs/pipeline","name":"experience_save","module":"ExperienceSave","lines":127,"bytes":3752,"description":"t27/specs/pipeline/experience_save.t27 Experience Save Command Specification Ring 028 — tri experience save CLI command 01 + 1/23 = 3 | TRINITY","health":"ok","tokens":553,"nodes":275,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4453,"rust":1261,"verilog":7552,"verilog_hir":837,"zig":2928},"repo":"t27","kinds":{"Module":4,"UseDecl":1,"ConstDecl":5,"ExprLiteral":39,"StructDecl":1,"ExprIdentifier":76,"FnDecl":5,"StmtIf":3,"ExprBinary":13,"ExprReturn":8,"StmtAssign":30,"ExprFieldAccess":36,"ExprUnary":14,"TestBlock":4,"StmtLocal":5,"StmtExpr":11,"ExprCall":17,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/pipeline","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions, 1 struct and 5 constants. Carries 4 tests, 2 invariants and 1 bench. 127 lines compile to 553 tokens and 275 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/portable/relay_observer.t27","category":"specs/portable","name":"relay_observer","module":"portable","lines":650,"bytes":21470,"description":"relay_observer.t27 0 WebSocket Relay Observer for BrowserOS A2A Integration Ring 32 — Cloud Orchestration 12 + 1/34 = 3 | TRINITY","health":"warn","tokens":3639,"nodes":518,"depth":8,"loss":2,"tcErrors":2,"failedBackends":[],"outBytes":{"c":9139,"rust":4878,"verilog":14734,"verilog_hir":1749,"zig":7333},"repo":"t27","kinds":{"Module":14,"UseDecl":2,"ConstDecl":13,"ExprLiteral":40,"EnumDecl":2,"EnumVariant":7,"StructDecl":2,"ExprIdentifier":116,"FnDecl":19,"ExprReturn":24,"ExprBinary":30,"ExprEnumValue":25,"ExprIf":2,"ExprSwitch":1,"StmtIf":8,"ExprFieldAccess":32,"StmtLocal":23,"ExprCall":68,"ExprIndex":6,"StmtAssign":7,"ExprStructLit":3,"ExprArrayLiteral":13,"StmtFor":4,"StmtExpr":23,"ExprUnary":22,"StmtWhile":1,"StmtBreak":1,"TestBlock":10},"tags":["domain/other","has/enums","has/functions","has/imports","has/loops","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/t27"],"summary":"Declares 19 functions, 2 structs, 2 enums and 13 constants. Carries 10 tests. 650 lines compile to 3,639 tokens and 518 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 2 items dropped by error recovery and 2 type errors."},{"path":"specs/provider/adapters.t27","category":"specs/provider","name":"adapters","module":"provider-adapters","lines":619,"bytes":16564,"description":"provider/adapters.t27 — HTTP Adapter Specifications HTTP request/response adapters for AI provider APIs","health":"ok","tokens":2383,"nodes":810,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15900,"rust":6978,"verilog":27151,"verilog_hir":2155,"zig":13040},"repo":"t27","kinds":{"Module":19,"UseDecl":4,"ConstDecl":25,"ExprLiteral":125,"EnumDecl":3,"EnumVariant":13,"StructDecl":8,"ExprIdentifier":160,"FnDecl":24,"ExprReturn":30,"ExprStructLit":10,"ExprFieldAccess":52,"ExprUnary":31,"ExprArrayLiteral":4,"ExprBinary":54,"StmtLocal":25,"ExprIf":3,"ExprEnumValue":22,"ExprCall":90,"ExprSwitch":1,"StmtIf":7,"StmtAssign":12,"TestBlock":21,"StmtExpr":44,"InvariantBlock":13,"BenchBlock":5,"StmtFor":5},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 24 functions, 8 structs, 3 enums and 25 constants. Carries 21 tests, 13 invariants and 5 benches. 619 lines compile to 2,383 tokens and 810 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 26.5 KB. Clean through every layer."},{"path":"specs/provider/schema.t27","category":"specs/provider","name":"schema","module":"provider-schema","lines":605,"bytes":15237,"description":"provider/schema.t27 — Provider Message Types AI provider message structures and model types","health":"ok","tokens":2382,"nodes":768,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15057,"rust":7082,"verilog":26249,"verilog_hir":1761,"zig":12177},"repo":"t27","kinds":{"Module":11,"UseDecl":1,"ConstDecl":19,"ExprLiteral":103,"ExprIdentifier":166,"EnumDecl":5,"EnumVariant":18,"StructDecl":14,"FnDecl":18,"StmtIf":2,"ExprBinary":35,"ExprReturn":20,"ExprEnumValue":30,"ExprSwitch":3,"ExprStructLit":10,"ExprFieldAccess":66,"ExprUnary":26,"ExprArrayLiteral":6,"ExprCall":93,"StmtLocal":23,"ExprIf":2,"TestBlock":18,"StmtExpr":41,"InvariantBlock":14,"BenchBlock":6,"StmtFor":6,"StmtAssign":12},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 18 functions, 14 structs, 5 enums and 19 constants. Carries 18 tests, 14 invariants and 6 benches. 605 lines compile to 2,382 tokens and 768 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 25.6 KB. Clean through every layer."},{"path":"specs/provider/stream.t27","category":"specs/provider","name":"stream","module":"provider-stream","lines":610,"bytes":16302,"description":"provider/stream.t27 — SSE/Streaming Response Handling Server-Sent Events and streaming response processing","health":"ok","tokens":2469,"nodes":903,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16443,"rust":7346,"verilog":27555,"verilog_hir":1786,"zig":13399},"repo":"t27","kinds":{"Module":19,"UseDecl":3,"ConstDecl":26,"ExprLiteral":119,"EnumDecl":4,"EnumVariant":21,"StructDecl":7,"ExprIdentifier":176,"FnDecl":22,"ExprReturn":30,"ExprStructLit":12,"ExprFieldAccess":96,"ExprEnumValue":30,"ExprUnary":24,"ExprArrayLiteral":4,"StmtIf":8,"ExprBinary":65,"ExprCall":96,"ExprIndex":8,"StmtLocal":29,"ExprIf":2,"ExprSwitch":3,"TestBlock":19,"StmtExpr":41,"StmtAssign":14,"InvariantBlock":13,"BenchBlock":6,"StmtFor":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 22 functions, 7 structs, 4 enums and 26 constants. Carries 19 tests, 13 invariants and 6 benches. 610 lines compile to 2,469 tokens and 903 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 26.9 KB. Clean through every layer."},{"path":"specs/provider/transform.t27","category":"specs/provider","name":"transform","module":"provider-transform","lines":522,"bytes":15346,"description":"provider/transform.t27 — Cross-Provider Message Transformations Message format transformations between different AI providers","health":"ok","tokens":2101,"nodes":668,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15975,"rust":7471,"verilog":25080,"verilog_hir":2141,"zig":12502},"repo":"t27","kinds":{"Module":15,"UseDecl":7,"ConstDecl":31,"ExprLiteral":52,"EnumDecl":3,"EnumVariant":11,"StructDecl":7,"ExprIdentifier":152,"FnDecl":25,"ExprReturn":29,"ExprStructLit":10,"ExprFieldAccess":55,"StmtIf":5,"ExprBinary":29,"ExprEnumValue":38,"ExprUnary":23,"ExprArrayLiteral":9,"StmtLocal":23,"ExprCall":65,"StmtFor":7,"StmtAssign":11,"ExprSwitch":7,"TestBlock":11,"StmtExpr":28,"InvariantBlock":11,"BenchBlock":4},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 25 functions, 7 structs, 3 enums and 31 constants. Carries 11 tests, 11 invariants and 4 benches. 522 lines compile to 2,101 tokens and 668 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 24.5 KB. Clean through every layer."},{"path":"specs/queen/brain_summaries.t27","category":"specs/queen","name":"brain_summaries","module":"BrainSummaries","lines":395,"bytes":16691,"description":"t27/specs/queen/brain_summaries.t27 Queen Brain Summaries Pipeline Specification Ring 061 - Episode summarization for Queen brain Defines how experience episodes are aggregated into summaries","health":"warn","tokens":1719,"nodes":374,"depth":12,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7519,"rust":4491,"verilog":12338,"verilog_hir":1908,"zig":5872},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":7,"ExprLiteral":38,"StructDecl":2,"ExprIdentifier":127,"FnDecl":7,"StmtLocal":15,"StmtAssign":31,"ExprFieldAccess":58,"StmtWhile":1,"ExprBinary":24,"ExprIndex":8,"StmtIf":8,"ExprCall":12,"ExprReturn":9,"TestBlock":6,"InvariantBlock":4,"BenchBlock":2},"tags":["domain/agent","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 7 functions, 2 structs and 7 constants. Carries 6 tests, 4 invariants and 2 benches. 395 lines compile to 1,719 tokens and 374 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Compiles with 1 type error."},{"path":"specs/queen/lotus.t27","category":"specs/queen","name":"lotus","module":"QueenLotus","lines":825,"bytes":31238,"description":"t27/specs/queen/lotus.t27 Queen Lotus 6-Phase Orchestration Specification Self-improving agent orchestration with episode-based learning","health":"warn","tokens":3008,"nodes":838,"depth":16,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":16598,"rust":10796,"verilog":28993,"verilog_hir":2629,"zig":18912},"repo":"t27","kinds":{"Module":39,"UseDecl":3,"ConstDecl":29,"ExprLiteral":73,"ExprIdentifier":208,"StructDecl":12,"ExprArrayLiteral":2,"FnDecl":24,"StmtLocal":34,"StmtAssign":29,"ExprFieldAccess":102,"ExprCall":38,"ExprBinary":47,"ExprReturn":33,"StmtIf":22,"ExprStructLit":15,"StmtWhile":3,"ExprIndex":5,"ExprUnary":1,"StmtExpr":67,"TestBlock":26,"InvariantBlock":18,"BenchBlock":8},"tags":["domain/agent","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 24 functions, 12 structs and 29 constants. Carries 26 tests, 18 invariants and 8 benches. 825 lines compile to 3,008 tokens and 838 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 28.3 KB. Compiles with 10 type errors."},{"path":"specs/queen/task_analysis.t27","category":"specs/queen","name":"task_analysis","module":"queen-task-analysis","lines":178,"bytes":5115,"description":"queen/task_analysis.t27 — Task Priority Analysis for Queen Trinity S³AI — Cognitive Task Orchestration","health":"warn","tokens":647,"nodes":264,"depth":11,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":4681,"rust":2200,"verilog":7115,"verilog_hir":1074,"zig":3882},"repo":"t27","kinds":{"Module":5,"UseDecl":3,"ConstDecl":8,"ExprLiteral":33,"EnumDecl":1,"EnumVariant":5,"StructDecl":2,"FnDecl":4,"StmtLocal":15,"ExprIdentifier":74,"ExprBinary":28,"ExprFieldAccess":27,"ExprReturn":4,"StmtAssign":17,"StmtWhile":1,"ExprIndex":1,"StmtIf":2,"ExprIf":1,"TestBlock":4,"StmtExpr":12,"ExprCall":14,"ExprArrayLiteral":1,"InvariantBlock":2},"tags":["domain/agent","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 4 functions, 2 structs, 1 enum and 8 constants. Carries 4 tests and 2 invariants. 178 lines compile to 647 tokens and 264 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 6.9 KB. Compiles with 1 type error."},{"path":"specs/rings/ring_103_phi_sgd.t27","category":"specs/rings","name":"ring_103_phi_sgd","module":"rings","lines":66,"bytes":2293,"description":"t27/specs/rings/ring_103_phi_sgd.t27 Port of rings/ring-103-rust/src/lib.rs -- the phi-tempered SGD step.","health":"ok","tokens":255,"nodes":68,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2225,"rust":741,"verilog":4399,"verilog_hir":495,"zig":1078},"repo":"t27","kinds":{"Module":4,"ConstDecl":5,"ExprLiteral":9,"FnDecl":3,"StmtIf":3,"ExprBinary":12,"ExprIdentifier":17,"ExprReturn":5,"ExprUnary":2,"ExprCall":2,"TestBlock":6},"tags":["domain/other","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 5 constants. Carries 6 tests. 66 lines compile to 255 tokens and 68 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Clean through every layer."},{"path":"specs/runtime/execute.t27","category":"specs/runtime","name":"execute","module":"runtime-execute","lines":735,"bytes":19042,"description":"runtime/execute.t27 — Runtime Execution Specification Task execution, promises, cancellation, timeouts","health":"warn","tokens":3173,"nodes":943,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":17586,"rust":8024,"verilog":23486,"verilog_hir":2879,"zig":14146},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"ConstDecl":5,"ExprLiteral":93,"EnumDecl":4,"EnumVariant":17,"ExprIdentifier":210,"StructDecl":5,"FnDecl":38,"StmtLocal":43,"ExprCall":119,"ExprBinary":51,"ExprArrayLiteral":13,"StmtFor":3,"ExprFieldAccess":116,"StmtAssign":20,"ExprIndex":2,"ExprReturn":30,"ExprStructLit":10,"ExprUnary":33,"ExprEnumValue":27,"StmtIf":3,"StmtExpr":50,"TestBlock":15,"InvariantBlock":28},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 38 functions, 5 structs, 4 enums and 5 constants. Carries 15 tests and 28 invariants. 735 lines compile to 3,173 tokens and 943 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 22.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/runtime/instance.t27","category":"specs/runtime","name":"instance","module":"runtime-instance","lines":780,"bytes":20135,"description":"runtime/instance.t27 — Runtime Instance Specification Instance registration, lookup, lifecycle management","health":"warn","tokens":3124,"nodes":801,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15477,"rust":7972,"verilog":22363,"verilog_hir":2613,"zig":12330},"repo":"t27","kinds":{"Module":6,"UseDecl":2,"ConstDecl":4,"ExprLiteral":77,"EnumDecl":4,"EnumVariant":19,"ExprIdentifier":170,"StructDecl":8,"FnDecl":32,"StmtLocal":32,"ExprCall":113,"ExprBinary":42,"ExprArrayLiteral":13,"StmtFor":4,"ExprFieldAccess":80,"StmtAssign":14,"ExprIndex":2,"ExprReturn":31,"ExprStructLit":12,"ExprEnumValue":36,"ExprUnary":34,"StmtIf":1,"TestBlock":15,"StmtExpr":34,"InvariantBlock":16},"tags":["domain/compiler","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 32 functions, 8 structs, 4 enums and 4 constants. Carries 15 tests and 16 invariants. 780 lines compile to 3,124 tokens and 801 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/runtime/process.t27","category":"specs/runtime","name":"process","module":"runtime-process","lines":762,"bytes":19101,"description":"runtime/process.t27 — Runtime Process Specification Process spawning, termination, piping, PTY","health":"ok","tokens":2866,"nodes":892,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":19014,"rust":8115,"verilog":29640,"verilog_hir":3062,"zig":15007},"repo":"t27","kinds":{"Module":9,"UseDecl":1,"ConstDecl":5,"ExprLiteral":125,"EnumDecl":3,"EnumVariant":14,"ExprIdentifier":182,"StructDecl":7,"FnDecl":40,"ExprReturn":39,"ExprStructLit":13,"ExprFieldAccess":94,"ExprUnary":37,"ExprArrayLiteral":9,"StmtLocal":39,"ExprCall":108,"ExprEnumValue":10,"ExprBinary":25,"StmtAssign":17,"StmtFor":8,"TestBlock":17,"StmtExpr":53,"InvariantBlock":32,"BenchBlock":5},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 40 functions, 7 structs, 3 enums and 5 constants. Carries 17 tests, 32 invariants and 5 benches. 762 lines compile to 2,866 tokens and 892 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 28.9 KB. Clean through every layer."},{"path":"specs/sacred/cosmology.t27","category":"specs/sacred","name":"cosmology","module":"TriCosmology","lines":13,"bytes":568,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":416,"rust":66,"verilog":1055,"verilog_hir":253,"zig":207},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/sacred","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/sacred/dark_matter.t27","category":"specs/sacred","name":"dark_matter","module":"DarkMatter","lines":13,"bytes":565,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":408,"rust":66,"verilog":1051,"verilog_hir":249,"zig":205},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/sacred","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/sacred/gravity.t27","category":"specs/sacred","name":"gravity","module":"TriGravity","lines":13,"bytes":566,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":408,"rust":66,"verilog":1051,"verilog_hir":249,"zig":205},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/sacred","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/sacred/monopoles.t27","category":"specs/sacred","name":"monopoles","module":"TriMonopoles","lines":13,"bytes":568,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":416,"rust":66,"verilog":1055,"verilog_hir":253,"zig":207},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/sacred","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/sacred/quantum.t27","category":"specs/sacred","name":"quantum","module":"TriQuantum","lines":13,"bytes":566,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":408,"rust":66,"verilog":1051,"verilog_hir":249,"zig":205},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/sacred","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/sacred/quantum_gravity.t27","category":"specs/sacred","name":"quantum_gravity","module":"QuantumGravity","lines":13,"bytes":569,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":424,"rust":66,"verilog":1059,"verilog_hir":257,"zig":209},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/sacred","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/sacred/sacred_constants.t27","category":"specs/sacred","name":"sacred_constants","module":"SacredConstants","lines":21,"bytes":1097,"description":"t27/specs/","health":"warn","tokens":36,"nodes":5,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":679,"rust":245,"verilog":1323,"verilog_hir":259,"zig":331},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/sacred","has/imports","has/structs","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 1 struct. 21 lines compile to 36 tokens and 5 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/sacred/sacred_governance.t27","category":"specs/sacred","name":"sacred_governance","module":"SacredGovernance","lines":78,"bytes":2515,"description":"t27/specs/","health":"ok","tokens":237,"nodes":48,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1763,"rust":1904,"verilog":4255,"verilog_hir":261,"zig":1487},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":8,"ExprIdentifier":37},"tags":["domain/sacred","has/imports","has/structs","health/ok","size/small","src/t27"],"summary":"Declares 8 structs. 78 lines compile to 237 tokens and 48 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"specs/sacred/sacred_identity.t27","category":"specs/sacred","name":"sacred_identity","module":"String","lines":74,"bytes":2682,"description":"t27/specs/","health":"ok","tokens":205,"nodes":44,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1722,"rust":1644,"verilog":4165,"verilog_hir":241,"zig":1320},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":1,"ExprLiteral":1,"StructDecl":6,"ExprIdentifier":33},"tags":["domain/sacred","has/constants-only","has/imports","has/structs","health/ok","size/small","src/t27"],"summary":"Declares 6 structs and 1 constant. 74 lines compile to 205 tokens and 44 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/sacred/superconductivity.t27","category":"specs/sacred","name":"superconductivity","module":"TriSuperconductivity","lines":13,"bytes":576,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":448,"rust":66,"verilog":1071,"verilog_hir":269,"zig":215},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/sacred","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/sandbox/health.t27","category":"specs/sandbox","name":"health","module":"sandbox","lines":40,"bytes":1286,"description":"SANDBOX-010 + SANDBOX-011: Sandbox Health Management","health":"warn","tokens":39,"nodes":6,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":600,"rust":119,"verilog":1287,"verilog_hir":257,"zig":261},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":1,"ExprLiteral":1},"tags":["domain/tools","has/constants-only","has/imports","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 1 constant. 40 lines compile to 39 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/sandbox/https_enforce.t27","category":"specs/sandbox","name":"https_enforce","module":"sandbox","lines":224,"bytes":7449,"description":"SANDBOX-012: HTTPS Enforcement","health":"warn","tokens":609,"nodes":136,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3056,"rust":1109,"verilog":5635,"verilog_hir":492,"zig":2123},"repo":"t27","kinds":{"Module":4,"ConstDecl":4,"ExprLiteral":7,"ExprIdentifier":45,"StructDecl":1,"FnDecl":4,"StmtIf":2,"ExprFieldAccess":2,"ExprReturn":1,"StmtExpr":39,"StmtLocal":1,"ExprCall":7,"ExprBinary":4,"ExprUnary":2,"ExprIndex":1,"ExprClosure":1,"TestBlock":11},"tags":["domain/tools","has/functions","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 4 functions, 1 struct and 4 constants. Carries 11 tests. 224 lines compile to 609 tokens and 136 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/sandbox/modules.t27","category":"specs/sandbox","name":"modules","module":"sandbox","lines":19,"bytes":577,"description":null,"health":"warn","tokens":14,"nodes":2,"depth":2,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":170},"repo":"t27","kinds":{"Module":1,"UseDecl":1},"tags":["domain/tools","has/imports","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares no top-level items. 19 lines compile to 14 tokens and 2 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/sandbox/orphan_detection.t27","category":"specs/sandbox","name":"orphan_detection","module":"sandbox","lines":257,"bytes":9041,"description":"SANDBOX-011: Orphaned Session Detection","health":"warn","tokens":928,"nodes":72,"depth":10,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2714,"rust":1241,"verilog":4155,"verilog_hir":482,"zig":1363},"repo":"t27","kinds":{"Module":4,"UseDecl":2,"StructDecl":2,"ExprIdentifier":21,"EnumDecl":1,"EnumVariant":10,"ConstDecl":1,"ExprLiteral":3,"FnDecl":2,"StmtIf":2,"ExprBinary":5,"ExprFieldAccess":6,"ExprReturn":1,"StmtExpr":5,"StmtLocal":2,"ExprCall":3,"StmtFor":1,"TestBlock":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 2 functions, 2 structs, 1 enum and 1 constant. Carries 1 test. 257 lines compile to 928 tokens and 72 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/sandbox/session_timeout.t27","category":"specs/sandbox","name":"session_timeout","module":"sandbox","lines":195,"bytes":6972,"description":"SANDBOX-010: Session Timeout Enforcement","health":"warn","tokens":724,"nodes":44,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2241,"rust":963,"verilog":3438,"verilog_hir":396,"zig":909},"repo":"t27","kinds":{"Module":2,"UseDecl":1,"StructDecl":2,"ExprIdentifier":11,"EnumDecl":1,"EnumVariant":10,"ConstDecl":1,"ExprLiteral":2,"FnDecl":1,"StmtIf":1,"ExprBinary":3,"ExprFieldAccess":4,"ExprReturn":1,"StmtLocal":1,"ExprCall":1,"StmtExpr":1,"TestBlock":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 function, 2 structs, 1 enum and 1 constant. Carries 1 test. 195 lines compile to 724 tokens and 44 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/server/agent-runner.t27","category":"specs/server","name":"agent-runner","module":"AgentRunner","lines":249,"bytes":11662,"description":"specs/server/agent-runner.t27 Agent Runner Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":927,"nodes":411,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7161,"rust":4001,"verilog":11697,"verilog_hir":2228,"zig":5311},"repo":"t27","kinds":{"Module":7,"UseDecl":1,"StructDecl":3,"ExprIdentifier":110,"EnumDecl":1,"EnumVariant":4,"ConstDecl":5,"ExprLiteral":55,"FnDecl":12,"StmtLocal":11,"ExprStructLit":2,"StmtAssign":25,"ExprFieldAccess":49,"ExprReturn":18,"ExprBinary":35,"StmtIf":6,"ExprCall":37,"TestBlock":6,"StmtExpr":23,"InvariantBlock":1},"tags":["domain/network","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 3 structs, 1 enum and 5 constants. Carries 6 tests and 1 invariant. 249 lines compile to 927 tokens and 411 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"specs/server/api.t27","category":"specs/server","name":"api","module":"Api","lines":148,"bytes":5830,"description":"specs/server/api.t27 API Client Types Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":455,"nodes":175,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4080,"rust":2605,"verilog":6806,"verilog_hir":467,"zig":2987},"repo":"t27","kinds":{"Module":8,"UseDecl":1,"EnumDecl":2,"EnumVariant":7,"StructDecl":7,"ExprIdentifier":45,"ConstDecl":4,"ExprLiteral":25,"FnDecl":3,"StmtIf":7,"ExprBinary":18,"ExprReturn":10,"ExprFieldAccess":4,"TestBlock":4,"StmtExpr":10,"ExprCall":18,"StmtLocal":1,"ExprStructLit":1},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 7 structs, 2 enums and 4 constants. Carries 4 tests. 148 lines compile to 455 tokens and 175 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/server/http.t27","category":"specs/server","name":"http","module":"server-http","lines":453,"bytes":12382,"description":"http.t27 — HTTP Server Specification HTTP listener, request/response handling, middleware","health":"ok","tokens":1767,"nodes":624,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11916,"rust":4549,"verilog":18556,"verilog_hir":1109,"zig":9482},"repo":"t27","kinds":{"Module":6,"UseDecl":2,"ConstDecl":17,"ExprLiteral":94,"EnumDecl":2,"EnumVariant":8,"StructDecl":6,"ExprIdentifier":111,"FnDecl":14,"ExprReturn":14,"ExprStructLit":22,"ExprFieldAccess":87,"ExprEnumValue":8,"ExprCall":71,"ExprBinary":36,"ExprSwitch":1,"TestBlock":12,"StmtLocal":16,"StmtExpr":41,"ExprUnary":21,"InvariantBlock":15,"BenchBlock":5,"StmtFor":5,"StmtAssign":10},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 14 functions, 6 structs, 2 enums and 17 constants. Carries 12 tests, 15 invariants and 5 benches. 453 lines compile to 1,767 tokens and 624 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.1 KB. Clean through every layer."},{"path":"specs/server/mdns.t27","category":"specs/server","name":"mdns","module":"server-mdns","lines":567,"bytes":14864,"description":"mdns.t27 — mDNS Specification Multicast DNS service discovery, announcement, resolution","health":"ok","tokens":2241,"nodes":754,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14735,"rust":5058,"verilog":24273,"verilog_hir":1972,"zig":11660},"repo":"t27","kinds":{"Module":12,"UseDecl":1,"ConstDecl":13,"ExprLiteral":115,"EnumDecl":3,"EnumVariant":12,"StructDecl":6,"ExprIdentifier":141,"FnDecl":23,"ExprReturn":22,"ExprStructLit":8,"ExprFieldAccess":59,"StmtLocal":37,"ExprCall":106,"ExprEnumValue":13,"ExprUnary":30,"ExprArrayLiteral":4,"StmtAssign":15,"StmtFor":9,"StmtIf":2,"ExprBinary":33,"TestBlock":15,"StmtExpr":49,"InvariantBlock":21,"BenchBlock":5},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 23 functions, 6 structs, 3 enums and 13 constants. Carries 15 tests, 21 invariants and 5 benches. 567 lines compile to 2,241 tokens and 754 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 23.7 KB. Clean through every layer."},{"path":"specs/server/project.t27","category":"specs/server","name":"project","module":"Project","lines":206,"bytes":7475,"description":"specs/server/project.t27 Project Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":863,"nodes":386,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5526,"rust":3044,"verilog":9894,"verilog_hir":897,"zig":4497},"repo":"t27","kinds":{"Module":11,"UseDecl":1,"StructDecl":3,"ExprIdentifier":99,"FnDecl":11,"ExprReturn":12,"ExprStructLit":3,"ExprFieldAccess":56,"ExprArrayLiteral":2,"ExprLiteral":53,"StmtLocal":25,"ExprBinary":26,"StmtIf":7,"StmtAssign":13,"ExprIndex":9,"StmtWhile":3,"ExprCall":27,"TestBlock":8,"ExprUnary":9,"StmtExpr":8},"tags":["domain/network","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 3 structs. Carries 8 tests. 206 lines compile to 863 tokens and 386 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 9.7 KB. Clean through every layer."},{"path":"specs/server/provider.t27","category":"specs/server","name":"provider","module":"Provider","lines":257,"bytes":9737,"description":"specs/server/provider.t27 LLM Provider Configuration Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":1125,"nodes":539,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7709,"rust":3824,"verilog":12605,"verilog_hir":1014,"zig":6427},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"EnumDecl":1,"EnumVariant":4,"StructDecl":3,"ExprIdentifier":129,"FnDecl":10,"ExprReturn":14,"ExprStructLit":4,"ExprFieldAccess":72,"ExprArrayLiteral":1,"ExprLiteral":77,"StmtIf":9,"ExprBinary":44,"StmtAssign":13,"ExprIndex":9,"StmtLocal":28,"StmtWhile":4,"ExprCall":53,"TestBlock":10,"StmtExpr":29,"ExprUnary":10},"tags":["domain/network","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions, 3 structs and 1 enum. Carries 10 tests. 257 lines compile to 1,125 tokens and 539 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/server/router.t27","category":"specs/server","name":"router","module":"server-router","lines":575,"bytes":15018,"description":"router.t27 — HTTP Router Specification URL routing, pattern matching, parameter extraction","health":"warn","tokens":2576,"nodes":723,"depth":12,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10621,"rust":5666,"verilog":18387,"verilog_hir":1602,"zig":8572},"repo":"t27","kinds":{"Module":32,"UseDecl":1,"ConstDecl":6,"ExprLiteral":74,"EnumDecl":1,"EnumVariant":7,"StructDecl":6,"ExprIdentifier":175,"FnDecl":19,"ExprReturn":30,"ExprStructLit":11,"ExprFieldAccess":68,"ExprUnary":39,"ExprArrayLiteral":11,"StmtLocal":31,"ExprCall":65,"StmtFor":10,"StmtIf":20,"ExprBinary":47,"ExprEnumValue":1,"StmtContinue":1,"StmtAssign":13,"ExprIndex":18,"StmtBreak":2,"TestBlock":17,"StmtExpr":18},"tags":["domain/network","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 19 functions, 6 structs, 1 enum and 6 constants. Carries 17 tests. 575 lines compile to 2,576 tokens and 723 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/server/routes.t27","category":"specs/server","name":"routes","module":"Routes","lines":36,"bytes":699,"description":"specs/server/routes.t27 T27 Server Routes Specification Constitutional Law #4: De-Zig-fication","health":"ok","tokens":80,"nodes":26,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1348,"rust":442,"verilog":2612,"verilog_hir":241,"zig":567},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"ConstDecl":1,"ExprLiteral":3,"EnumDecl":1,"EnumVariant":5,"StructDecl":1,"ExprIdentifier":5,"TestBlock":2,"StmtExpr":2,"ExprCall":2,"ExprBinary":2},"tags":["domain/network","has/constants-only","has/enums","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct, 1 enum and 1 constant. Carries 2 tests. 36 lines compile to 80 tokens and 26 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/server/session.t27","category":"specs/server","name":"session","module":"Session","lines":273,"bytes":10724,"description":"specs/server/session.t27 Session Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","health":"ok","tokens":1102,"nodes":468,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7164,"rust":3693,"verilog":12079,"verilog_hir":1191,"zig":5816},"repo":"t27","kinds":{"Module":10,"UseDecl":1,"EnumDecl":2,"EnumVariant":8,"StructDecl":4,"ExprIdentifier":113,"FnDecl":11,"ExprReturn":12,"ExprStructLit":7,"ExprFieldAccess":81,"ExprArrayLiteral":3,"ExprLiteral":69,"StmtLocal":27,"ExprCall":30,"StmtIf":6,"ExprBinary":29,"StmtAssign":13,"ExprIndex":8,"StmtWhile":3,"TestBlock":12,"StmtExpr":12,"ExprUnary":7},"tags":["domain/network","has/enums","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions, 4 structs and 2 enums. Carries 12 tests. 273 lines compile to 1,102 tokens and 468 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Clean through every layer."},{"path":"specs/server/sse.t27","category":"specs/server","name":"sse","module":"server-sse","lines":563,"bytes":15043,"description":"sse.t27 — Server-Sent Events Specification SSE connections, event streaming, reconnection handling","health":"warn","tokens":2337,"nodes":830,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15265,"rust":5821,"verilog":25695,"verilog_hir":2698,"zig":12481},"repo":"t27","kinds":{"Module":14,"UseDecl":1,"ConstDecl":8,"ExprLiteral":109,"EnumDecl":3,"EnumVariant":13,"StructDecl":5,"ExprIdentifier":192,"FnDecl":26,"ExprReturn":15,"ExprStructLit":5,"ExprFieldAccess":76,"ExprEnumValue":10,"ExprCall":112,"ExprBinary":33,"StmtAssign":48,"StmtLocal":38,"StmtIf":3,"StmtFor":9,"ExprUnary":24,"ExprArrayLiteral":2,"StmtWhile":1,"TestBlock":15,"StmtExpr":44,"InvariantBlock":18,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 26 functions, 5 structs, 3 enums and 8 constants. Carries 15 tests, 18 invariants and 6 benches. 563 lines compile to 2,337 tokens and 830 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 25.1 KB. Compiles with 1 type error."},{"path":"specs/server/vm.t27","category":"specs/server","name":"vm","module":"VM","lines":593,"bytes":22556,"description":"specs/server/vm.t27 VSA VM - Ternary Virtual Machine for Hyperdimensional Computing","health":"ok","tokens":3388,"nodes":711,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8443,"rust":2769,"verilog":15636,"verilog_hir":1395,"zig":14575},"repo":"t27","kinds":{"Module":26,"UseDecl":4,"EnumDecl":1,"EnumVariant":23,"StructDecl":3,"ExprIdentifier":210,"FnDecl":5,"StmtLocal":47,"ExprCall":63,"StmtAssign":43,"ExprFieldAccess":104,"ExprLiteral":21,"ExprReturn":5,"ExprSwitch":3,"ConstDecl":30,"ExprArrayLiteral":1,"ExprBinary":1,"TestBlock":20,"StmtExpr":89,"InvariantBlock":6,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/switch","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 5 functions, 3 structs, 1 enum and 30 constants. Carries 20 tests, 6 invariants and 6 benches. 593 lines compile to 3,388 tokens and 711 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Clean through every layer."},{"path":"specs/shell/environment.t27","category":"specs/shell","name":"environment","module":"ShellEnvironment","lines":304,"bytes":11139,"description":"specs/shell/environment.t27 Shell Environment Operations","health":"ok","tokens":1216,"nodes":436,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7694,"rust":1744,"verilog":12051,"verilog_hir":1325,"zig":7056},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":21,"ConstDecl":3,"ExprLiteral":61,"TestBlock":18,"StmtExpr":59,"ExprCall":59,"ExprBinary":34,"ExprIdentifier":65,"StmtLocal":7,"ExprStructLit":7,"ExprFieldAccess":86,"ExprUnary":13},"tags":["domain/tools","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 21 functions and 3 constants. Carries 18 tests. 304 lines compile to 1,216 tokens and 436 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Clean through every layer."},{"path":"specs/shell/process.t27","category":"specs/shell","name":"process","module":"ShellProcess","lines":305,"bytes":10214,"description":"specs/shell/process.t27 Shell Process Operations","health":"warn","tokens":1142,"nodes":260,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5749,"rust":1718,"verilog":8735,"verilog_hir":991,"zig":5111},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"FnDecl":13,"ExprIdentifier":42,"EnumDecl":1,"EnumVariant":6,"TestBlock":11,"StmtLocal":9,"ExprCall":21,"ExprLiteral":36,"StmtExpr":20,"ExprBinary":19,"ExprFieldAccess":63,"ExprStructLit":8,"ExprArrayLiteral":4,"ExprUnary":1,"ExprTry":1},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 13 functions, 2 structs and 1 enum. Carries 11 tests. 305 lines compile to 1,142 tokens and 260 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/shell/schema.t27","category":"specs/shell","name":"schema","module":"Shell","lines":406,"bytes":14718,"description":"specs/shell/schema.t27 Shell Types Specification","health":"ok","tokens":1715,"nodes":722,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9473,"rust":2814,"verilog":15703,"verilog_hir":447,"zig":8568},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"EnumDecl":4,"EnumVariant":23,"StructDecl":5,"ExprIdentifier":145,"ConstDecl":2,"ExprLiteral":102,"FnDecl":4,"ExprReturn":4,"ExprBinary":63,"ExprFieldAccess":128,"ExprUnary":17,"TestBlock":24,"StmtExpr":75,"ExprCall":98,"StmtLocal":13,"ExprStructLit":13},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 4 functions, 5 structs, 4 enums and 2 constants. Carries 24 tests. 406 lines compile to 1,715 tokens and 722 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Clean through every layer."},{"path":"specs/skills/t27-measure-corpus.t27","category":"specs/skills","name":"t27-measure-corpus","module":"skill_t27_measure_corpus","lines":26,"bytes":1404,"description":"specs/skills/t27-measure-corpus.t27 -- skill t27/measure-corpus Source of truth for the skill card on t27.ai (#/skills?skill=t27/measure-corpus). The skill body lives in gHashTag/t27 at .claude/skills/measure-corpus/SKILL.md (vendored copy: apps/website/public/skills/files/t27/measure-corpus/SKILL.md, sha256 b8fb7503f660...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1082,"rust":705,"verilog":1899,"verilog_hir":277,"zig":824},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/skills/t27-phi-loop.t27","category":"specs/skills","name":"t27-phi-loop","module":"skill_t27_phi_loop","lines":26,"bytes":1279,"description":"specs/skills/t27-phi-loop.t27 -- skill t27/phi-loop Source of truth for the skill card on t27.ai (#/skills?skill=t27/phi-loop). The skill body lives in gHashTag/t27 at .claude/skills/phi-loop/SKILL.md (vendored copy: apps/website/public/skills/files/t27/phi-loop/SKILL.md, sha256 d8af7f6a9cbc...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":993,"rust":640,"verilog":1822,"verilog_hir":265,"zig":753},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/t27-tri-pipeline.t27","category":"specs/skills","name":"t27-tri-pipeline","module":"skill_t27_tri_pipeline","lines":26,"bytes":1293,"description":"specs/skills/t27-tri-pipeline.t27 -- skill t27/tri-pipeline Source of truth for the skill card on t27.ai (#/skills?skill=t27/tri-pipeline). The skill body lives in gHashTag/t27 at .claude/skills/tri-pipeline/SKILL.md (vendored copy: apps/website/public/skills/files/t27/tri-pipeline/SKILL.md, sha256 b4bfc290b86a...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":105,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":972,"rust":603,"verilog":1793,"verilog_hir":273,"zig":720},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 105 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/t27-tri.t27","category":"specs/skills","name":"t27-tri","module":"skill_t27_tri","lines":26,"bytes":1378,"description":"specs/skills/t27-tri.t27 -- skill t27/tri Source of truth for the skill card on t27.ai (#/skills?skill=t27/tri). The skill body lives in gHashTag/t27 at .claude/skills/tri/skill.md (vendored copy: apps/website/public/skills/files/t27/tri/skill.md, sha256 8fb4d4796c2d...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":105,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1098,"rust":765,"verilog":1937,"verilog_hir":255,"zig":873},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 105 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/skills/t27-wave-audit.t27","category":"specs/skills","name":"t27-wave-audit","module":"skill_t27_wave_audit","lines":26,"bytes":1330,"description":"specs/skills/t27-wave-audit.t27 -- skill t27/wave-audit Source of truth for the skill card on t27.ai (#/skills?skill=t27/wave-audit). The skill body lives in gHashTag/t27 at .claude/skills/wave-audit/SKILL.md (vendored copy: apps/website/public/skills/files/t27/wave-audit/SKILL.md, sha256 4cd0dd22105a...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1046,"rust":685,"verilog":1871,"verilog_hir":269,"zig":800},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/t27-wrap-up.t27","category":"specs/skills","name":"t27-wrap-up","module":"skill_t27_wrap_up","lines":26,"bytes":1245,"description":"specs/skills/t27-wrap-up.t27 -- skill t27/wrap-up Source of truth for the skill card on t27.ai (#/skills?skill=t27/wrap-up). The skill body lives in gHashTag/t27 at .claude/skills/wrap-up/skill.md (vendored copy: apps/website/public/skills/files/t27/wrap-up/skill.md, sha256 a4a9b4fd9d02...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":105,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":957,"rust":608,"verilog":1788,"verilog_hir":263,"zig":720},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 105 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/skills/trinity-blog-post.t27","category":"specs/skills","name":"trinity-blog-post","module":"skill_trinity_blog_post","lines":26,"bytes":1415,"description":"specs/skills/trinity-blog-post.t27 -- skill trinity/blog-post Source of truth for the skill card on t27.ai (#/skills?skill=trinity/blog-post). The skill body lives in gHashTag/trinity at .claude/skills/blog-post/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/blog-post/SKILL.md, sha256 2cb755fd4a60...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1118,"rust":745,"verilog":1937,"verilog_hir":275,"zig":863},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/skills/trinity-board-sync.t27","category":"specs/skills","name":"trinity-board-sync","module":"skill_trinity_board_sync","lines":26,"bytes":1341,"description":"specs/skills/trinity-board-sync.t27 -- skill trinity/board-sync Source of truth for the skill card on t27.ai (#/skills?skill=trinity/board-sync). The skill body lives in gHashTag/trinity at .claude/skills/board-sync/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/board-sync/SKILL.md, sha256 f4bfa63737cf...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1045,"rust":668,"verilog":1862,"verilog_hir":277,"zig":1389},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-cloud.t27","category":"specs/skills","name":"trinity-cloud","module":"skill_trinity_cloud","lines":26,"bytes":1329,"description":"specs/skills/trinity-cloud.t27 -- skill trinity/cloud Source of truth for the skill card on t27.ai (#/skills?skill=trinity/cloud). The skill body lives in gHashTag/trinity at .claude/skills/cloud/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/cloud/SKILL.md, sha256 53aa338dddc4...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1043,"rust":686,"verilog":1870,"verilog_hir":267,"zig":800},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-doctor.t27","category":"specs/skills","name":"trinity-doctor","module":"skill_trinity_doctor","lines":26,"bytes":1319,"description":"specs/skills/trinity-doctor.t27 -- skill trinity/doctor Source of truth for the skill card on t27.ai (#/skills?skill=trinity/doctor). The skill body lives in gHashTag/trinity at .claude/skills/doctor/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/doctor/SKILL.md, sha256 68efdf793010...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1031,"rust":670,"verilog":1856,"verilog_hir":269,"zig":785},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-farm-garden.t27","category":"specs/skills","name":"trinity-farm-garden","module":"skill_trinity_farm_garden","lines":26,"bytes":1297,"description":"specs/skills/trinity-farm-garden.t27 -- skill trinity/farm-garden Source of truth for the skill card on t27.ai (#/skills?skill=trinity/farm-garden). The skill body lives in gHashTag/trinity at .claude/skills/farm-garden/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/farm-garden/SKILL.md, sha256 672148988575...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1003,"rust":622,"verilog":1818,"verilog_hir":279,"zig":742},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-fpga-synth.t27","category":"specs/skills","name":"trinity-fpga-synth","module":"skill_trinity_fpga_synth","lines":26,"bytes":1328,"description":"specs/skills/trinity-fpga-synth.t27 -- skill trinity/fpga-synth Source of truth for the skill card on t27.ai (#/skills?skill=trinity/fpga-synth). The skill body lives in gHashTag/trinity at .claude/skills/fpga-synth/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/fpga-synth/SKILL.md, sha256 de3915e66cda...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1029,"rust":652,"verilog":1846,"verilog_hir":277,"zig":771},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-god-mode.t27","category":"specs/skills","name":"trinity-god-mode","module":"skill_trinity_god_mode","lines":26,"bytes":1352,"description":"specs/skills/trinity-god-mode.t27 -- skill trinity/god-mode Source of truth for the skill card on t27.ai (#/skills?skill=trinity/god-mode). The skill body lives in gHashTag/trinity at .claude/skills/god-mode/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/god-mode/SKILL.md, sha256 0c48e328ae4c...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1060,"rust":691,"verilog":1881,"verilog_hir":273,"zig":808},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-implement-issue.t27","category":"specs/skills","name":"trinity-implement-issue","module":"skill_trinity_implement_issue","lines":26,"bytes":1360,"description":"specs/skills/trinity-implement-issue.t27 -- skill trinity/implement-issue Source of truth for the skill card on t27.ai (#/skills?skill=trinity/implement-issue). The skill body lives in gHashTag/trinity at .claude/skills/implement-issue/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/implement-issue/SKILL.md, sha256 88ccafaece20...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1051,"rust":654,"verilog":1858,"verilog_hir":287,"zig":778},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-queen-hive-visuals.t27","category":"specs/skills","name":"trinity-queen-hive-visuals","module":"skill_trinity_queen_hive_visuals","lines":26,"bytes":1367,"description":"specs/skills/trinity-queen-hive-visuals.t27 -- skill trinity/queen-hive-visuals Source of truth for the skill card on t27.ai (#/skills?skill=trinity/queen-hive-visuals). The skill body lives in gHashTag/trinity at .claude/skills/queen-hive-visuals/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/queen-hive-visuals/SKILL.md, sha256 c6d914dc81c8...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1052,"rust":643,"verilog":1853,"verilog_hir":293,"zig":770},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-review-code.t27","category":"specs/skills","name":"trinity-review-code","module":"skill_trinity_review_code","lines":26,"bytes":1325,"description":"specs/skills/trinity-review-code.t27 -- skill trinity/review-code Source of truth for the skill card on t27.ai (#/skills?skill=trinity/review-code). The skill body lives in gHashTag/trinity at .claude/skills/review-code/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/review-code/SKILL.md, sha256 e5712744615c...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":102,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1025,"rust":644,"verilog":1840,"verilog_hir":279,"zig":764},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 102 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-run-tests.t27","category":"specs/skills","name":"trinity-run-tests","module":"skill_trinity_run_tests","lines":26,"bytes":1335,"description":"specs/skills/trinity-run-tests.t27 -- skill trinity/run-tests Source of truth for the skill card on t27.ai (#/skills?skill=trinity/run-tests). The skill body lives in gHashTag/trinity at .claude/skills/run-tests/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/run-tests/SKILL.md, sha256 7ead75ab36b8...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1038,"rust":665,"verilog":1857,"verilog_hir":275,"zig":783},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-scholar.t27","category":"specs/skills","name":"trinity-scholar","module":"skill_trinity_scholar","lines":26,"bytes":1345,"description":"specs/skills/trinity-scholar.t27 -- skill trinity/scholar Source of truth for the skill card on t27.ai (#/skills?skill=trinity/scholar). The skill body lives in gHashTag/trinity at .claude/skills/scholar/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/scholar/SKILL.md, sha256 5c35431008a4...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1055,"rust":690,"verilog":1878,"verilog_hir":271,"zig":806},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-status.t27","category":"specs/skills","name":"trinity-status","module":"skill_trinity_status","lines":26,"bytes":1286,"description":"specs/skills/trinity-status.t27 -- skill trinity/status Source of truth for the skill card on t27.ai (#/skills?skill=trinity/status). The skill body lives in gHashTag/trinity at .claude/skills/status/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/status/SKILL.md, sha256 e4bc75ff45cd...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":998,"rust":637,"verilog":1823,"verilog_hir":269,"zig":752},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-tech-tree.t27","category":"specs/skills","name":"trinity-tech-tree","module":"skill_trinity_tech_tree","lines":26,"bytes":1322,"description":"specs/skills/trinity-tech-tree.t27 -- skill trinity/tech-tree Source of truth for the skill card on t27.ai (#/skills?skill=trinity/tech-tree). The skill body lives in gHashTag/trinity at .claude/skills/tech-tree/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/tech-tree/SKILL.md, sha256 f84c8ea67ab6...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1028,"rust":655,"verilog":1847,"verilog_hir":275,"zig":773},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-tri.t27","category":"specs/skills","name":"trinity-tri","module":"skill_trinity_tri","lines":26,"bytes":1277,"description":"specs/skills/trinity-tri.t27 -- skill trinity/tri Source of truth for the skill card on t27.ai (#/skills?skill=trinity/tri). The skill body lives in gHashTag/trinity at .claude/skills/tri/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/tri/SKILL.md, sha256 4c38d1005219...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":995,"rust":646,"verilog":1826,"verilog_hir":263,"zig":758},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-trinity-test.t27","category":"specs/skills","name":"trinity-trinity-test","module":"skill_trinity_trinity_test","lines":26,"bytes":1333,"description":"specs/skills/trinity-trinity-test.t27 -- skill trinity/trinity-test Source of truth for the skill card on t27.ai (#/skills?skill=trinity/trinity-test). The skill body lives in gHashTag/trinity at .claude/skills/trinity-test/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/trinity-test/SKILL.md, sha256 648c7f095f0b...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1030,"rust":645,"verilog":1843,"verilog_hir":281,"zig":766},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-ux-wave.t27","category":"specs/skills","name":"trinity-ux-wave","module":"skill_trinity_ux_wave","lines":26,"bytes":1315,"description":"specs/skills/trinity-ux-wave.t27 -- skill trinity/ux-wave Source of truth for the skill card on t27.ai (#/skills?skill=trinity/ux-wave). The skill body lives in gHashTag/trinity at .claude/skills/ux-wave/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/ux-wave/SKILL.md, sha256 9690999e8d1e...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1025,"rust":660,"verilog":1848,"verilog_hir":271,"zig":776},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-vibee-gen.t27","category":"specs/skills","name":"trinity-vibee-gen","module":"skill_trinity_vibee_gen","lines":26,"bytes":1312,"description":"specs/skills/trinity-vibee-gen.t27 -- skill trinity/vibee-gen Source of truth for the skill card on t27.ai (#/skills?skill=trinity/vibee-gen). The skill body lives in gHashTag/trinity at .claude/skills/vibee-gen/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/vibee-gen/SKILL.md, sha256 fc01e69f1395...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1015,"rust":642,"verilog":1834,"verilog_hir":275,"zig":760},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-vsa-verify.t27","category":"specs/skills","name":"trinity-vsa-verify","module":"skill_trinity_vsa_verify","lines":26,"bytes":1363,"description":"specs/skills/trinity-vsa-verify.t27 -- skill trinity/vsa-verify Source of truth for the skill card on t27.ai (#/skills?skill=trinity/vsa-verify). The skill body lives in gHashTag/trinity at .claude/skills/vsa-verify/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/vsa-verify/SKILL.md, sha256 8b9c4518b1bc...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1064,"rust":687,"verilog":1881,"verilog_hir":277,"zig":806},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/skills/trinity-wave.t27","category":"specs/skills","name":"trinity-wave","module":"skill_trinity_wave","lines":26,"bytes":1311,"description":"specs/skills/trinity-wave.t27 -- skill trinity/wave Source of truth for the skill card on t27.ai (#/skills?skill=trinity/wave). The skill body lives in gHashTag/trinity at .claude/skills/wave/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/wave/SKILL.md, sha256 ecf06fdfa467...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","health":"ok","tokens":104,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1027,"rust":674,"verilog":1856,"verilog_hir":265,"zig":787},"repo":"t27","kinds":{"Module":1,"ConstDecl":11,"ExprLiteral":9,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 11 constants. 26 lines compile to 104 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/storage/kv.t27","category":"specs/storage","name":"kv","module":"StorageKv","lines":159,"bytes":6343,"description":"specs/storage/kv.t27 Key-Value Storage Operations","health":"ok","tokens":750,"nodes":202,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3968,"rust":727,"verilog":8728,"verilog_hir":731,"zig":3427},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":8,"TestBlock":11,"StmtLocal":19,"ExprCall":58,"ExprArrayLiteral":14,"StmtExpr":18,"ExprLiteral":17,"StmtAssign":11,"ExprIdentifier":30,"ExprBinary":9,"ExprClosure":2,"ExprFieldAccess":2},"tags":["domain/storage","has/functions","has/imports","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions. Carries 11 tests. 159 lines compile to 750 tokens and 202 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Clean through every layer."},{"path":"specs/storage/lock.t27","category":"specs/storage","name":"lock","module":"StorageLock","lines":179,"bytes":7474,"description":"specs/storage/lock.t27 Locking Primitives for Storage Operations","health":"ok","tokens":684,"nodes":216,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4812,"rust":1220,"verilog":8382,"verilog_hir":825,"zig":3646},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":22,"FnDecl":11,"TestBlock":9,"StmtLocal":11,"ExprCall":71,"ExprLiteral":39,"StmtExpr":22,"ExprBinary":11,"StmtAssign":16},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions and 1 struct. Carries 9 tests. 179 lines compile to 684 tokens and 216 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 8.2 KB. Clean through every layer."},{"path":"specs/storage/migrate.t27","category":"specs/storage","name":"migrate","module":"StorageMigrate","lines":178,"bytes":7527,"description":"specs/storage/migrate.t27 Data Migration Operations","health":"ok","tokens":603,"nodes":140,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4531,"rust":1705,"verilog":7531,"verilog_hir":849,"zig":3271},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":2,"ExprIdentifier":20,"FnDecl":11,"ConstDecl":1,"TestBlock":7,"StmtLocal":10,"ExprCall":34,"StmtExpr":12,"StmtAssign":4,"ExprLiteral":16,"ExprBinary":7,"ExprFieldAccess":7,"StmtIf":2,"ExprIndex":2},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions, 2 structs and 1 constant. Carries 7 tests. 178 lines compile to 603 tokens and 140 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 7.4 KB. Clean through every layer."},{"path":"specs/storage/schema.t27","category":"specs/storage","name":"schema","module":"Storage","lines":146,"bytes":5972,"description":"specs/storage/schema.t27 Storage Types Specification","health":"ok","tokens":365,"nodes":135,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3181,"rust":1719,"verilog":5625,"verilog_hir":347,"zig":2708},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":7,"ExprIdentifier":32,"EnumDecl":2,"EnumVariant":5,"ConstDecl":3,"ExprLiteral":19,"FnDecl":2,"ExprReturn":2,"ExprBinary":10,"ExprFieldAccess":13,"TestBlock":4,"StmtLocal":5,"ExprStructLit":3,"ExprArrayLiteral":1,"StmtExpr":10,"ExprCall":12,"ExprIndex":2,"ExprUnary":1},"tags":["domain/storage","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 7 structs, 2 enums and 3 constants. Carries 4 tests. 146 lines compile to 365 tokens and 135 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/sync/index.t27","category":"specs/sync","name":"index","module":"sync-index","lines":779,"bytes":20864,"description":"sync/index.t27 — Sync Index Specification Sync operations, checkpointing, delta management","health":"warn","tokens":3253,"nodes":1094,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":20881,"rust":9853,"verilog":31727,"verilog_hir":3749,"zig":16930},"repo":"t27","kinds":{"Module":18,"UseDecl":2,"ConstDecl":5,"ExprLiteral":162,"EnumDecl":2,"EnumVariant":8,"StructDecl":9,"ExprIdentifier":243,"FnDecl":35,"ExprReturn":36,"ExprStructLit":18,"ExprFieldAccess":141,"ExprCall":117,"ExprUnary":28,"ExprArrayLiteral":13,"ExprEnumValue":6,"StmtAssign":31,"ExprBinary":58,"StmtLocal":50,"StmtExpr":46,"StmtFor":15,"StmtIf":2,"ExprIndex":4,"ExprIf":1,"TestBlock":12,"InvariantBlock":26,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 35 functions, 9 structs, 2 enums and 5 constants. Carries 12 tests, 26 invariants and 6 benches. 779 lines compile to 3,253 tokens and 1,094 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 31.0 KB. Compiles with 2 type errors."},{"path":"specs/sync/schema.t27","category":"specs/sync","name":"schema","module":"sync-schema","lines":722,"bytes":19125,"description":"sync/schema.t27 — Sync Schema Specification Sync ID, state, event types for change synchronization","health":"warn","tokens":3020,"nodes":1060,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":19100,"rust":7372,"verilog":31235,"verilog_hir":3275,"zig":15310},"repo":"t27","kinds":{"Module":16,"UseDecl":1,"ConstDecl":6,"ExprLiteral":125,"ExprIdentifier":244,"EnumDecl":2,"EnumVariant":11,"StructDecl":7,"FnDecl":33,"StmtLocal":59,"ExprCall":142,"ExprBinary":53,"ExprArrayLiteral":5,"StmtFor":12,"ExprFieldAccess":94,"StmtAssign":34,"ExprIndex":3,"ExprReturn":26,"StmtIf":2,"StmtBreak":1,"ExprStructLit":9,"ExprUnary":37,"ExprEnumValue":31,"ExprIf":1,"TestBlock":15,"StmtExpr":60,"InvariantBlock":25,"BenchBlock":6},"tags":["domain/network","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 33 functions, 7 structs, 2 enums and 6 constants. Carries 15 tests, 25 invariants and 6 benches. 722 lines compile to 3,020 tokens and 1,060 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 30.5 KB. Compiles with 2 type errors."},{"path":"specs/system/unified-agent-operations.t27","category":"specs/system","name":"unified-agent-operations","module":"system","lines":181,"bytes":12057,"description":"specs/system/unified-agent-operations.t27 -- the one system that the Trinity repositories form together: canonical contracts (t27), the Queen and her Bees, the Inngest scheduler, the 999 application edge (bot, Mini App, Hive, CRM, media library), the self-hosted inference services (whisper = Speaches, vision = llama.cpp + Qwen3-VL) and the evidence tracks (GoldenFloat, AX7203, Golden Sieve, publications). This card names the parts, the contracts between them, the gates every change must pass and the budgets every run must keep. It claims nothing that a witness has","health":"ok","tokens":793,"nodes":149,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3934,"rust":4374,"verilog":5642,"verilog_hir":293,"zig":4744},"repo":"t27","kinds":{"Module":1,"ConstDecl":74,"ExprLiteral":56,"ExprIdentifier":18},"tags":["domain/other","has/constants-only","health/ok","size/medium","src/t27"],"summary":"Declares 74 constants. 181 lines compile to 793 tokens and 149 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"specs/ternary/activation_quantizer.t27","category":"specs/ternary","name":"activation_quantizer","module":"ActivationQuantizer","lines":34,"bytes":1596,"description":null,"health":"warn","tokens":184,"nodes":76,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1781,"rust":317,"verilog":3779,"verilog_hir":417,"zig":940},"repo":"t27","kinds":{"Module":3,"FnDecl":2,"StmtIf":2,"ExprBinary":2,"ExprIdentifier":6,"ExprReturn":4,"ExprLiteral":24,"ExprUnary":4,"TestBlock":7,"StmtExpr":7,"ExprCall":15},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 2 functions. Carries 7 tests. 34 lines compile to 184 tokens and 76 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/bigint.t27","category":"specs/ternary","name":"bigint","module":"TernaryBigInt","lines":1446,"bytes":44066,"description":"t27/specs/ternary/bigint.t27 TVC BigInt - Balanced Ternary Arbitrary Precision Arithmetic ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q Balanced Ternary representation: - Each trit has value {-1, 0, +1} - Number = Σ(trit[i] × 3^i) for i = 0..n-1","health":"ok","tokens":7974,"nodes":3112,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":18089,"rust":686,"verilog":34670,"verilog_hir":255,"zig":32034},"repo":"t27","kinds":{"Module":110,"UseDecl":3,"ConstDecl":10,"ExprLiteral":444,"ExprIdentifier":657,"StructDecl":2,"FnDecl":28,"ExprReturn":51,"ExprStructLit":10,"ExprFieldAccess":156,"ExprBinary":229,"ExprArrayLiteral":17,"StmtLocal":274,"ExprCall":542,"StmtIf":47,"StmtWhile":26,"StmtAssign":123,"ExprUnary":126,"ExprIndex":48,"ExprIf":8,"StmtBreak":4,"StmtExpr":105,"StmtContinue":1,"TestBlock":37,"StmtFor":28,"InvariantBlock":14,"BenchBlock":12},"tags":["domain/ternary","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 28 functions, 2 structs and 10 constants. Carries 37 tests, 14 invariants and 12 benches. 1446 lines compile to 7,974 tokens and 3,112 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 33.9 KB. Clean through every layer."},{"path":"specs/ternary/bitnet_layer.t27","category":"specs/ternary","name":"bitnet_layer","module":"BitnetLayer","lines":60,"bytes":2353,"description":null,"health":"warn","tokens":473,"nodes":173,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2881,"rust":1404,"verilog":4954,"verilog_hir":817,"zig":2299},"repo":"t27","kinds":{"Module":8,"FnDecl":6,"StmtIf":5,"ExprBinary":19,"ExprIdentifier":47,"ExprLiteral":33,"ExprReturn":11,"ExprUnary":3,"StmtLocal":8,"StmtWhile":2,"ExprFieldAccess":3,"StmtAssign":4,"ExprCall":14,"ExprIndex":2,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions. Carries 4 tests. 60 lines compile to 473 tokens and 173 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/bitnet_majority.t27","category":"specs/ternary","name":"bitnet_majority","module":"BitnetMajority","lines":66,"bytes":2823,"description":null,"health":"warn","tokens":593,"nodes":236,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3208,"rust":1303,"verilog":6382,"verilog_hir":916,"zig":2697},"repo":"t27","kinds":{"Module":7,"FnDecl":6,"StmtIf":5,"ExprBinary":20,"ExprIdentifier":35,"ExprLiteral":75,"ExprReturn":11,"ExprUnary":2,"StmtLocal":10,"StmtWhile":1,"ExprFieldAccess":6,"StmtAssign":2,"ExprCall":32,"TestBlock":12,"StmtExpr":12},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions. Carries 12 tests. 66 lines compile to 593 tokens and 236 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/bitnet_mlp.t27","category":"specs/ternary","name":"bitnet_mlp","module":"BitnetMlp","lines":73,"bytes":3057,"description":null,"health":"warn","tokens":666,"nodes":227,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3765,"rust":2034,"verilog":6083,"verilog_hir":1143,"zig":2954},"repo":"t27","kinds":{"Module":8,"FnDecl":8,"StmtIf":5,"ExprBinary":25,"ExprIdentifier":71,"ExprLiteral":39,"ExprReturn":13,"ExprUnary":2,"StmtLocal":14,"StmtWhile":2,"ExprFieldAccess":6,"StmtAssign":4,"ExprCall":20,"ExprIndex":2,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 8 functions. Carries 4 tests. 73 lines compile to 666 tokens and 227 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/bitnet_mlp3.t27","category":"specs/ternary","name":"bitnet_mlp3","module":"BitnetMlp3","lines":48,"bytes":3067,"description":null,"health":"warn","tokens":752,"nodes":250,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4098,"rust":2279,"verilog":6515,"verilog_hir":1262,"zig":3192},"repo":"t27","kinds":{"Module":8,"FnDecl":8,"StmtIf":5,"ExprBinary":25,"ExprIdentifier":86,"ExprLiteral":39,"ExprReturn":13,"ExprUnary":2,"StmtLocal":18,"StmtWhile":2,"ExprFieldAccess":6,"StmtAssign":4,"ExprCall":24,"ExprIndex":2,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 8 functions. Carries 4 tests. 48 lines compile to 752 tokens and 250 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/bitnet_neuron.t27","category":"specs/ternary","name":"bitnet_neuron","module":"BitnetNeuron","lines":58,"bytes":3109,"description":null,"health":"warn","tokens":484,"nodes":183,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3273,"rust":1142,"verilog":5371,"verilog_hir":847,"zig":2656},"repo":"t27","kinds":{"Module":7,"FnDecl":5,"StmtIf":5,"ExprBinary":17,"ExprIdentifier":39,"ExprLiteral":60,"ExprReturn":10,"ExprUnary":2,"StmtLocal":5,"StmtWhile":1,"ExprFieldAccess":3,"StmtAssign":2,"ExprCall":17,"TestBlock":5,"StmtExpr":5},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 5 functions. Carries 5 tests. 58 lines compile to 484 tokens and 183 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/bitnet_neuron_nchunk.t27","category":"specs/ternary","name":"bitnet_neuron_nchunk","module":"BitnetNeuronN","lines":72,"bytes":4490,"description":null,"health":"warn","tokens":720,"nodes":293,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4303,"rust":1149,"verilog":6799,"verilog_hir":728,"zig":3737},"repo":"t27","kinds":{"Module":8,"FnDecl":5,"StmtIf":5,"ExprBinary":17,"ExprIdentifier":36,"ExprLiteral":133,"ExprReturn":10,"ExprUnary":4,"StmtLocal":6,"StmtWhile":2,"ExprFieldAccess":3,"StmtAssign":4,"ExprCall":26,"ExprIndex":2,"TestBlock":11,"StmtExpr":11,"ExprArrayLiteral":10},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 5 functions. Carries 11 tests. 72 lines compile to 720 tokens and 293 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/clocked_counter.t27","category":"specs/ternary","name":"clocked_counter","module":"ClockedCounter","lines":30,"bytes":1403,"description":null,"health":"warn","tokens":20,"nodes":9,"depth":5,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":943,"rust":138,"verilog":1622,"verilog_hir":376,"zig":193},"repo":"t27","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":2,"FnDecl":1,"StmtAssign":1,"ExprIdentifier":2,"ExprBinary":1},"tags":["domain/ternary","has/functions","health/warn","issue/type-errors","size/tiny","src/t27"],"summary":"Declares 1 function and 1 constant. 30 lines compile to 20 tokens and 9 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 1 type error."},{"path":"specs/ternary/comb_bitnet_layer.t27","category":"specs/ternary","name":"comb_bitnet_layer","module":"CombBitnetLayer","lines":63,"bytes":2612,"description":null,"health":"warn","tokens":549,"nodes":251,"depth":31,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2696,"rust":1317,"verilog":4437,"verilog_hir":685,"zig":2190},"repo":"t27","kinds":{"Module":6,"ConstDecl":3,"ExprLiteral":54,"FnDecl":6,"StmtIf":5,"ExprBinary":43,"ExprIdentifier":74,"ExprReturn":11,"ExprUnary":1,"ExprCall":40,"ExprFieldAccess":2,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions and 3 constants. Carries 3 tests. 63 lines compile to 549 tokens and 251 AST nodes, depth 31. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/comb_bitnet_neuron.t27","category":"specs/ternary","name":"comb_bitnet_neuron","module":"CombBitnetNeuron","lines":54,"bytes":2323,"description":null,"health":"warn","tokens":496,"nodes":232,"depth":31,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2439,"rust":1073,"verilog":4144,"verilog_hir":624,"zig":2075},"repo":"t27","kinds":{"Module":6,"FnDecl":5,"StmtIf":5,"ExprBinary":37,"ExprIdentifier":66,"ExprLiteral":54,"ExprReturn":10,"ExprUnary":1,"ExprCall":38,"ExprFieldAccess":2,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 5 functions. Carries 4 tests. 54 lines compile to 496 tokens and 232 AST nodes, depth 31. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/comb_ternary_dot.t27","category":"specs/ternary","name":"comb_ternary_dot","module":"CombTernaryDot","lines":44,"bytes":2150,"description":null,"health":"warn","tokens":435,"nodes":210,"depth":31,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2183,"rust":869,"verilog":3731,"verilog_hir":513,"zig":1913},"repo":"t27","kinds":{"Module":4,"FnDecl":3,"StmtIf":3,"ExprBinary":35,"ExprIdentifier":62,"ExprLiteral":49,"ExprReturn":6,"ExprUnary":2,"ExprCall":36,"ExprFieldAccess":2,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 3 functions. Carries 4 tests. 44 lines compile to 435 tokens and 210 AST nodes, depth 31. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_add_rne.t27","category":"specs/ternary","name":"gft_add_rne","module":"GftAddRne","lines":67,"bytes":2775,"description":null,"health":"warn","tokens":429,"nodes":221,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2680,"rust":1919,"verilog":4602,"verilog_hir":337,"zig":2567},"repo":"t27","kinds":{"Module":16,"FnDecl":1,"StmtLocal":20,"ExprFieldAccess":5,"ExprBinary":39,"ExprIdentifier":69,"ExprLiteral":38,"StmtIf":12,"StmtAssign":16,"ExprReturn":1,"TestBlock":1,"StmtExpr":1,"ExprCall":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 1 function. Carries 1 test. 67 lines compile to 429 tokens and 221 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_argmax4.t27","category":"specs/ternary","name":"gft_argmax4","module":"GftArgmax4","lines":52,"bytes":2333,"description":null,"health":"warn","tokens":349,"nodes":161,"depth":8,"loss":1,"tcErrors":3,"failedBackends":[],"outBytes":{"c":2300,"rust":1035,"verilog":4185,"verilog_hir":518,"zig":1439},"repo":"t27","kinds":{"Module":12,"FnDecl":3,"StmtIf":11,"ExprBinary":14,"ExprIdentifier":33,"ExprLiteral":44,"ExprReturn":11,"StmtLocal":6,"ExprCall":13,"StmtAssign":6,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/small","src/t27"],"summary":"Declares 3 functions. Carries 4 tests. 52 lines compile to 349 tokens and 161 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Compiles with 1 item dropped by error recovery and 3 type errors."},{"path":"specs/ternary/gft_axpy.t27","category":"specs/ternary","name":"gft_axpy","module":"GftAxpy","lines":127,"bytes":5938,"description":null,"health":"ok","tokens":1684,"nodes":869,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7318,"rust":6338,"verilog":12545,"verilog_hir":1137,"zig":6791},"repo":"t27","kinds":{"Module":61,"FnDecl":7,"StmtLocal":64,"ExprBinary":159,"ExprIdentifier":258,"ExprLiteral":165,"StmtIf":52,"StmtAssign":54,"ExprReturn":16,"ExprFieldAccess":13,"ExprCall":16,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions. Carries 2 tests. 127 lines compile to 1,684 tokens and 869 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/ternary/gft_bitnet_neuron.t27","category":"specs/ternary","name":"gft_bitnet_neuron","module":"GftBitnetNeuron","lines":96,"bytes":4784,"description":null,"health":"warn","tokens":1252,"nodes":647,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5716,"rust":4689,"verilog":9749,"verilog_hir":1024,"zig":5210},"repo":"t27","kinds":{"Module":47,"FnDecl":5,"StmtLocal":44,"ExprBinary":116,"ExprIdentifier":196,"ExprLiteral":123,"StmtIf":40,"StmtAssign":39,"ExprReturn":13,"ExprFieldAccess":6,"ExprCall":14,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 5 functions. Carries 2 tests. 96 lines compile to 1,252 tokens and 647 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 9.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_classifier4.t27","category":"specs/ternary","name":"gft_classifier4","module":"GftClassifier4","lines":146,"bytes":6720,"description":null,"health":"warn","tokens":1874,"nodes":889,"depth":13,"loss":1,"tcErrors":3,"failedBackends":[],"outBytes":{"c":8298,"rust":6642,"verilog":13573,"verilog_hir":1856,"zig":7148},"repo":"t27","kinds":{"Module":62,"FnDecl":11,"StmtLocal":57,"ExprBinary":135,"ExprIdentifier":270,"ExprLiteral":182,"StmtIf":55,"StmtAssign":45,"ExprReturn":31,"ExprFieldAccess":6,"ExprCall":31,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/small","src/t27"],"summary":"Declares 11 functions. Carries 2 tests. 146 lines compile to 1,874 tokens and 889 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.3 KB. Compiles with 1 item dropped by error recovery and 3 type errors."},{"path":"specs/ternary/gft_classify.t27","category":"specs/ternary","name":"gft_classify","module":"GftClassify","lines":120,"bytes":5625,"description":null,"health":"ok","tokens":1626,"nodes":852,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7126,"rust":6196,"verilog":12308,"verilog_hir":1087,"zig":6613},"repo":"t27","kinds":{"Module":62,"FnDecl":7,"StmtLocal":61,"ExprBinary":160,"ExprIdentifier":247,"ExprLiteral":166,"StmtIf":53,"StmtAssign":52,"ExprReturn":18,"ExprFieldAccess":11,"ExprCall":11,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions. Carries 2 tests. 120 lines compile to 1,626 tokens and 852 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Clean through every layer."},{"path":"specs/ternary/gft_classify3.t27","category":"specs/ternary","name":"gft_classify3","module":"GftClassify3","lines":140,"bytes":6373,"description":null,"health":"warn","tokens":1918,"nodes":979,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8270,"rust":7081,"verilog":14161,"verilog_hir":1368,"zig":7578},"repo":"t27","kinds":{"Module":70,"FnDecl":9,"StmtLocal":69,"ExprBinary":169,"ExprIdentifier":281,"ExprLiteral":198,"StmtIf":61,"StmtAssign":56,"ExprReturn":26,"ExprFieldAccess":11,"ExprCall":23,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 9 functions. Carries 3 tests. 140 lines compile to 1,918 tokens and 979 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.8 KB. Compiles with 2 type errors."},{"path":"specs/ternary/gft_dot2.t27","category":"specs/ternary","name":"gft_dot2","module":"GftDot2","lines":76,"bytes":3438,"description":null,"health":"warn","tokens":523,"nodes":230,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2969,"rust":1930,"verilog":5218,"verilog_hir":519,"zig":2757},"repo":"t27","kinds":{"Module":11,"FnDecl":3,"StmtLocal":24,"ExprFieldAccess":10,"ExprBinary":39,"ExprIdentifier":65,"ExprLiteral":44,"StmtIf":8,"StmtAssign":12,"ExprReturn":3,"ExprCall":7,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 3 functions. Carries 2 tests. 76 lines compile to 523 tokens and 230 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_dot2_rne.t27","category":"specs/ternary","name":"gft_dot2_rne","module":"GftDot2Rne","lines":85,"bytes":3321,"description":null,"health":"warn","tokens":772,"nodes":387,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4068,"rust":3205,"verilog":6874,"verilog_hir":519,"zig":3822},"repo":"t27","kinds":{"Module":26,"FnDecl":3,"StmtLocal":33,"ExprFieldAccess":10,"ExprBinary":69,"ExprIdentifier":116,"ExprLiteral":72,"StmtIf":21,"StmtAssign":27,"ExprReturn":3,"ExprCall":5,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 3 functions. Carries 1 test. 85 lines compile to 772 tokens and 387 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_dot4.t27","category":"specs/ternary","name":"gft_dot4","module":"GftDot4","lines":74,"bytes":2859,"description":null,"health":"warn","tokens":580,"nodes":240,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3221,"rust":2090,"verilog":5381,"verilog_hir":663,"zig":2865},"repo":"t27","kinds":{"Module":11,"FnDecl":4,"StmtLocal":24,"ExprFieldAccess":10,"ExprBinary":39,"ExprIdentifier":73,"ExprLiteral":45,"StmtIf":8,"StmtAssign":12,"ExprReturn":4,"ExprCall":8,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 4 functions. Carries 1 test. 74 lines compile to 580 tokens and 240 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_dot4_rne.t27","category":"specs/ternary","name":"gft_dot4_rne","module":"GftDot4Rne","lines":73,"bytes":3149,"description":null,"health":"warn","tokens":845,"nodes":404,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4400,"rust":3362,"verilog":7276,"verilog_hir":663,"zig":4000},"repo":"t27","kinds":{"Module":26,"FnDecl":4,"StmtLocal":33,"ExprFieldAccess":10,"ExprBinary":69,"ExprIdentifier":124,"ExprLiteral":76,"StmtIf":21,"StmtAssign":27,"ExprReturn":4,"ExprCall":8,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 4 functions. Carries 1 test. 73 lines compile to 845 tokens and 404 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_dot8.t27","category":"specs/ternary","name":"gft_dot8","module":"GftDot8","lines":77,"bytes":3093,"description":null,"health":"warn","tokens":709,"nodes":269,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3823,"rust":2354,"verilog":6042,"verilog_hir":915,"zig":3177},"repo":"t27","kinds":{"Module":11,"FnDecl":5,"StmtLocal":24,"ExprFieldAccess":10,"ExprBinary":39,"ExprIdentifier":89,"ExprLiteral":53,"StmtIf":8,"StmtAssign":12,"ExprReturn":5,"ExprCall":11,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 5 functions. Carries 1 test. 77 lines compile to 709 tokens and 269 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.9 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_exp2.t27","category":"specs/ternary","name":"gft_exp2","module":"GftExp2","lines":68,"bytes":3073,"description":null,"health":"warn","tokens":461,"nodes":235,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2499,"rust":1452,"verilog":4599,"verilog_hir":587,"zig":2336},"repo":"t27","kinds":{"Module":13,"FnDecl":2,"StmtLocal":13,"ExprLiteral":58,"StmtAssign":12,"ExprIdentifier":51,"ExprBinary":47,"StmtIf":10,"ExprReturn":7,"ExprFieldAccess":5,"ExprCall":9,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 2 functions. Carries 4 tests. 68 lines compile to 461 tokens and 235 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_hidden2.t27","category":"specs/ternary","name":"gft_hidden2","module":"GftHidden2","lines":142,"bytes":6589,"description":null,"health":"ok","tokens":1843,"nodes":929,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7873,"rust":6821,"verilog":13507,"verilog_hir":1244,"zig":7276},"repo":"t27","kinds":{"Module":64,"FnDecl":9,"StmtLocal":70,"ExprBinary":166,"ExprIdentifier":270,"ExprLiteral":177,"StmtIf":55,"StmtAssign":52,"ExprReturn":22,"ExprFieldAccess":13,"ExprCall":27,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 9 functions. Carries 2 tests. 142 lines compile to 1,843 tokens and 929 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Clean through every layer."},{"path":"specs/ternary/gft_layer2.t27","category":"specs/ternary","name":"gft_layer2","module":"GftLayer2","lines":77,"bytes":3128,"description":null,"health":"warn","tokens":577,"nodes":242,"depth":8,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3211,"rust":2102,"verilog":5350,"verilog_hir":727,"zig":2885},"repo":"t27","kinds":{"Module":11,"FnDecl":4,"StmtLocal":24,"ExprFieldAccess":12,"ExprBinary":41,"ExprIdentifier":73,"ExprLiteral":44,"StmtIf":8,"StmtAssign":12,"ExprReturn":4,"ExprCall":7,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 4 functions. Carries 1 test. 77 lines compile to 577 tokens and 242 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_layer3.t27","category":"specs/ternary","name":"gft_layer3","module":"GftLayer3","lines":106,"bytes":5226,"description":null,"health":"warn","tokens":1504,"nodes":729,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6660,"rust":5300,"verilog":10992,"verilog_hir":1439,"zig":5860},"repo":"t27","kinds":{"Module":49,"FnDecl":7,"StmtLocal":48,"ExprBinary":123,"ExprIdentifier":226,"ExprLiteral":147,"StmtIf":42,"StmtAssign":39,"ExprReturn":17,"ExprFieldAccess":9,"ExprCall":18,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 7 functions. Carries 2 tests. 106 lines compile to 1,504 tokens and 729 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 10.7 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_layer4.t27","category":"specs/ternary","name":"gft_layer4","module":"GftLayer4","lines":108,"bytes":5356,"description":null,"health":"warn","tokens":1570,"nodes":752,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6874,"rust":5423,"verilog":11218,"verilog_hir":1547,"zig":6013},"repo":"t27","kinds":{"Module":49,"FnDecl":7,"StmtLocal":49,"ExprBinary":125,"ExprIdentifier":235,"ExprLiteral":156,"StmtIf":42,"StmtAssign":39,"ExprReturn":17,"ExprFieldAccess":10,"ExprCall":19,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 7 functions. Carries 2 tests. 108 lines compile to 1,570 tokens and 752 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 11.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_log2.t27","category":"specs/ternary","name":"gft_log2","module":"GftLog2","lines":99,"bytes":4588,"description":null,"health":"warn","tokens":1115,"nodes":715,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5221,"rust":3968,"verilog":8641,"verilog_hir":775,"zig":4770},"repo":"t27","kinds":{"Module":41,"FnDecl":4,"StmtIf":40,"ExprBinary":145,"ExprIdentifier":200,"ExprLiteral":161,"ExprReturn":10,"StmtLocal":10,"StmtAssign":72,"ExprCall":17,"ExprFieldAccess":5,"TestBlock":5,"StmtExpr":5},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 4 functions. Carries 5 tests. 99 lines compile to 1,115 tokens and 715 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.4 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_logistic.t27","category":"specs/ternary","name":"gft_logistic","module":"GftLogistic","lines":136,"bytes":6502,"description":null,"health":"ok","tokens":1822,"nodes":928,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7813,"rust":6776,"verilog":13364,"verilog_hir":1212,"zig":7249},"repo":"t27","kinds":{"Module":65,"FnDecl":8,"StmtLocal":68,"ExprBinary":168,"ExprIdentifier":267,"ExprLiteral":180,"StmtIf":56,"StmtAssign":52,"ExprReturn":21,"ExprFieldAccess":15,"ExprCall":24,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions. Carries 2 tests. 136 lines compile to 1,822 tokens and 928 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.1 KB. Clean through every layer."},{"path":"specs/ternary/gft_madd.t27","category":"specs/ternary","name":"gft_madd","module":"GftMadd","lines":128,"bytes":5982,"description":null,"health":"ok","tokens":1703,"nodes":884,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7399,"rust":6439,"verilog":12726,"verilog_hir":1215,"zig":6867},"repo":"t27","kinds":{"Module":62,"FnDecl":8,"StmtLocal":63,"ExprBinary":168,"ExprIdentifier":256,"ExprLiteral":170,"StmtIf":53,"StmtAssign":53,"ExprReturn":19,"ExprFieldAccess":16,"ExprCall":12,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions. Carries 2 tests. 128 lines compile to 1,703 tokens and 884 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.4 KB. Clean through every layer."},{"path":"specs/ternary/gft_mlp2.t27","category":"specs/ternary","name":"gft_mlp2","module":"GftMlp2","lines":111,"bytes":5300,"description":null,"health":"warn","tokens":1398,"nodes":701,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6304,"rust":5200,"verilog":10826,"verilog_hir":1229,"zig":5661},"repo":"t27","kinds":{"Module":51,"FnDecl":8,"StmtLocal":48,"ExprBinary":121,"ExprIdentifier":210,"ExprLiteral":134,"StmtIf":44,"StmtAssign":39,"ExprReturn":20,"ExprFieldAccess":6,"ExprCall":16,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 8 functions. Carries 2 tests. 111 lines compile to 1,398 tokens and 701 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 10.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_mlp3.t27","category":"specs/ternary","name":"gft_mlp3","module":"GftMlp3","lines":129,"bytes":6255,"description":null,"health":"warn","tokens":1757,"nodes":802,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7817,"rust":6041,"verilog":12527,"verilog_hir":1829,"zig":6597},"repo":"t27","kinds":{"Module":51,"FnDecl":10,"StmtLocal":51,"ExprBinary":121,"ExprIdentifier":252,"ExprLiteral":166,"StmtIf":44,"StmtAssign":39,"ExprReturn":22,"ExprFieldAccess":6,"ExprCall":36,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 10 functions. Carries 2 tests. 129 lines compile to 1,757 tokens and 802 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_mul_rne.t27","category":"specs/ternary","name":"gft_mul_rne","module":"GftMulRne","lines":56,"bytes":2421,"description":null,"health":"warn","tokens":318,"nodes":163,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2115,"rust":1250,"verilog":3662,"verilog_hir":337,"zig":2003},"repo":"t27","kinds":{"Module":11,"FnDecl":1,"StmtLocal":13,"ExprFieldAccess":5,"ExprBinary":30,"ExprIdentifier":43,"ExprLiteral":35,"StmtIf":9,"StmtAssign":11,"ExprReturn":1,"TestBlock":1,"StmtExpr":1,"ExprCall":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 1 function. Carries 1 test. 56 lines compile to 318 tokens and 163 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_neuron_full.t27","category":"specs/ternary","name":"gft_neuron_full","module":"GftNeuronFull","lines":99,"bytes":4948,"description":null,"health":"warn","tokens":1330,"nodes":682,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5997,"rust":4867,"verilog":10313,"verilog_hir":1084,"zig":5449},"repo":"t27","kinds":{"Module":49,"FnDecl":6,"StmtLocal":45,"ExprBinary":119,"ExprIdentifier":199,"ExprLiteral":138,"StmtIf":42,"StmtAssign":39,"ExprReturn":16,"ExprFieldAccess":6,"ExprCall":17,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions. Carries 3 tests. 99 lines compile to 1,330 tokens and 682 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 10.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_nll.t27","category":"specs/ternary","name":"gft_nll","module":"GftNll","lines":103,"bytes":4636,"description":null,"health":"warn","tokens":1134,"nodes":720,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5312,"rust":4124,"verilog":8698,"verilog_hir":901,"zig":4812},"repo":"t27","kinds":{"Module":42,"FnDecl":6,"StmtIf":41,"ExprBinary":147,"ExprIdentifier":203,"ExprLiteral":160,"ExprReturn":13,"StmtLocal":10,"StmtAssign":72,"ExprCall":15,"ExprFieldAccess":5,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions. Carries 3 tests. 103 lines compile to 1,134 tokens and 720 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_recip.t27","category":"specs/ternary","name":"gft_recip","module":"GftRecip","lines":41,"bytes":1767,"description":null,"health":"warn","tokens":267,"nodes":134,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1814,"rust":698,"verilog":3445,"verilog_hir":309,"zig":1681},"repo":"t27","kinds":{"Module":6,"FnDecl":1,"StmtIf":5,"ExprBinary":23,"ExprIdentifier":23,"ExprLiteral":37,"ExprReturn":2,"ExprFieldAccess":4,"StmtLocal":6,"StmtAssign":7,"TestBlock":5,"StmtExpr":5,"ExprCall":10},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 5 tests. 41 lines compile to 267 tokens and 134 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_relu.t27","category":"specs/ternary","name":"gft_relu","module":"GftRelu","lines":25,"bytes":939,"description":null,"health":"warn","tokens":100,"nodes":44,"depth":6,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1261,"rust":207,"verilog":2507,"verilog_hir":307,"zig":558},"repo":"t27","kinds":{"Module":3,"FnDecl":1,"StmtIf":2,"ExprBinary":3,"ExprIdentifier":3,"ExprLiteral":13,"ExprReturn":3,"TestBlock":4,"StmtExpr":4,"ExprCall":8},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 4 tests. 25 lines compile to 100 tokens and 44 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_sadd.t27","category":"specs/ternary","name":"gft_sadd","module":"GftSadd","lines":113,"bytes":5354,"description":null,"health":"ok","tokens":1579,"nodes":831,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6955,"rust":6033,"verilog":12169,"verilog_hir":1040,"zig":6481},"repo":"t27","kinds":{"Module":60,"FnDecl":7,"StmtLocal":60,"ExprBinary":156,"ExprIdentifier":243,"ExprLiteral":158,"StmtIf":51,"StmtAssign":52,"ExprReturn":16,"ExprFieldAccess":11,"ExprCall":11,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions. Carries 3 tests. 113 lines compile to 1,579 tokens and 831 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 11.9 KB. Clean through every layer."},{"path":"specs/ternary/gft_sgd_step.t27","category":"specs/ternary","name":"gft_sgd_step","module":"GftSgdStep","lines":120,"bytes":5464,"description":null,"health":"warn","tokens":1605,"nodes":839,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7070,"rust":6091,"verilog":12335,"verilog_hir":1058,"zig":6571},"repo":"t27","kinds":{"Module":60,"FnDecl":7,"StmtLocal":61,"ExprBinary":156,"ExprIdentifier":245,"ExprLiteral":161,"StmtIf":51,"StmtAssign":52,"ExprReturn":16,"ExprFieldAccess":11,"ExprCall":13,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 7 functions. Carries 3 tests. 120 lines compile to 1,605 tokens and 839 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_signed_dot4.t27","category":"specs/ternary","name":"gft_signed_dot4","module":"GftSignedDot4","lines":97,"bytes":4966,"description":null,"health":"warn","tokens":1560,"nodes":793,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6873,"rust":5876,"verilog":11668,"verilog_hir":1105,"zig":6262},"repo":"t27","kinds":{"Module":54,"FnDecl":7,"StmtLocal":60,"ExprBinary":149,"ExprIdentifier":245,"ExprLiteral":145,"StmtIf":46,"StmtAssign":50,"ExprReturn":12,"ExprFieldAccess":11,"ExprCall":12,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 7 functions. Carries 1 test. 97 lines compile to 1,560 tokens and 793 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_signed_mac.t27","category":"specs/ternary","name":"gft_signed_mac","module":"GftSignedMac","lines":133,"bytes":5732,"description":null,"health":"warn","tokens":1485,"nodes":771,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6533,"rust":5635,"verilog":11320,"verilog_hir":959,"zig":6073},"repo":"t27","kinds":{"Module":52,"FnDecl":6,"StmtLocal":60,"ExprBinary":147,"ExprIdentifier":233,"ExprLiteral":144,"StmtIf":44,"StmtAssign":50,"ExprReturn":9,"ExprFieldAccess":11,"ExprCall":11,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions. Carries 2 tests. 133 lines compile to 1,485 tokens and 771 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 11.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_smul.t27","category":"specs/ternary","name":"gft_smul","module":"GftSmul","lines":114,"bytes":5442,"description":null,"health":"ok","tokens":1579,"nodes":831,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6959,"rust":6033,"verilog":12173,"verilog_hir":1040,"zig":6485},"repo":"t27","kinds":{"Module":60,"FnDecl":7,"StmtLocal":60,"ExprBinary":156,"ExprIdentifier":243,"ExprLiteral":158,"StmtIf":51,"StmtAssign":52,"ExprReturn":16,"ExprFieldAccess":11,"ExprCall":11,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions. Carries 3 tests. 114 lines compile to 1,579 tokens and 831 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 11.9 KB. Clean through every layer."},{"path":"specs/ternary/gft_softmax4.t27","category":"specs/ternary","name":"gft_softmax4","module":"GftSoftmax4","lines":181,"bytes":7671,"description":null,"health":"warn","tokens":2425,"nodes":1256,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9932,"rust":8918,"verilog":17031,"verilog_hir":1523,"zig":9252},"repo":"t27","kinds":{"Module":86,"FnDecl":11,"StmtLocal":88,"ExprBinary":233,"ExprIdentifier":356,"ExprLiteral":248,"StmtIf":76,"StmtAssign":75,"ExprReturn":31,"ExprFieldAccess":18,"ExprCall":30,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 11 functions. Carries 2 tests. 181 lines compile to 2,425 tokens and 1,256 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_softmax_grad4.t27","category":"specs/ternary","name":"gft_softmax_grad4","module":"GftSoftmaxGrad4","lines":182,"bytes":7707,"description":null,"health":"warn","tokens":2456,"nodes":1269,"depth":13,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10059,"rust":9006,"verilog":17221,"verilog_hir":1556,"zig":9352},"repo":"t27","kinds":{"Module":87,"FnDecl":11,"StmtLocal":89,"ExprBinary":234,"ExprIdentifier":360,"ExprLiteral":251,"StmtIf":77,"StmtAssign":75,"ExprReturn":32,"ExprFieldAccess":18,"ExprCall":31,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 11 functions. Carries 2 tests. 182 lines compile to 2,456 tokens and 1,269 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 16.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/gft_train1.t27","category":"specs/ternary","name":"gft_train1","module":"GftTrain1","lines":123,"bytes":5810,"description":null,"health":"ok","tokens":1653,"nodes":855,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7209,"rust":6203,"verilog":12557,"verilog_hir":1082,"zig":6703},"repo":"t27","kinds":{"Module":60,"FnDecl":7,"StmtLocal":64,"ExprBinary":156,"ExprIdentifier":251,"ExprLiteral":164,"StmtIf":51,"StmtAssign":52,"ExprReturn":16,"ExprFieldAccess":11,"ExprCall":17,"TestBlock":3,"StmtExpr":3},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions. Carries 3 tests. 123 lines compile to 1,653 tokens and 855 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.3 KB. Clean through every layer."},{"path":"specs/ternary/gft_train2.t27","category":"specs/ternary","name":"gft_train2","module":"GftTrain2","lines":123,"bytes":5836,"description":null,"health":"ok","tokens":1681,"nodes":860,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7251,"rust":6363,"verilog":12366,"verilog_hir":1138,"zig":6741},"repo":"t27","kinds":{"Module":60,"FnDecl":7,"StmtLocal":66,"ExprBinary":158,"ExprIdentifier":259,"ExprLiteral":157,"StmtIf":51,"StmtAssign":52,"ExprReturn":16,"ExprFieldAccess":13,"ExprCall":19,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions. Carries 1 test. 123 lines compile to 1,681 tokens and 860 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.1 KB. Clean through every layer."},{"path":"specs/ternary/gft_train2relu.t27","category":"specs/ternary","name":"gft_train2relu","module":"GftTrain2Relu","lines":137,"bytes":6351,"description":null,"health":"ok","tokens":1818,"nodes":921,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7808,"rust":6736,"verilog":13379,"verilog_hir":1250,"zig":7198},"repo":"t27","kinds":{"Module":64,"FnDecl":9,"StmtLocal":68,"ExprBinary":166,"ExprIdentifier":267,"ExprLiteral":177,"StmtIf":55,"StmtAssign":52,"ExprReturn":22,"ExprFieldAccess":13,"ExprCall":24,"TestBlock":2,"StmtExpr":2},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 9 functions. Carries 2 tests. 137 lines compile to 1,818 tokens and 921 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.1 KB. Clean through every layer."},{"path":"specs/ternary/gft_xorbp.t27","category":"specs/ternary","name":"gft_xorbp","module":"GftXorBp","lines":151,"bytes":7158,"description":null,"health":"ok","tokens":2049,"nodes":1005,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8475,"rust":7417,"verilog":14155,"verilog_hir":1380,"zig":7824},"repo":"t27","kinds":{"Module":66,"FnDecl":9,"StmtLocal":74,"ExprBinary":172,"ExprIdentifier":300,"ExprLiteral":181,"StmtIf":57,"StmtAssign":52,"ExprReturn":24,"ExprFieldAccess":17,"ExprCall":51,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 9 functions. Carries 1 test. 151 lines compile to 2,049 tokens and 1,005 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.8 KB. Clean through every layer."},{"path":"specs/ternary/gft_xorbp2.t27","category":"specs/ternary","name":"gft_xorbp2","module":"GftXorBp2","lines":160,"bytes":7466,"description":null,"health":"ok","tokens":2158,"nodes":1055,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8869,"rust":7766,"verilog":14778,"verilog_hir":1506,"zig":8194},"repo":"t27","kinds":{"Module":68,"FnDecl":10,"StmtLocal":77,"ExprBinary":184,"ExprIdentifier":305,"ExprLiteral":198,"StmtIf":59,"StmtAssign":53,"ExprReturn":27,"ExprFieldAccess":21,"ExprCall":51,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions. Carries 1 test. 160 lines compile to 2,158 tokens and 1,055 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Clean through every layer."},{"path":"specs/ternary/gft_xornet.t27","category":"specs/ternary","name":"gft_xornet","module":"GftXorNet","lines":137,"bytes":6536,"description":null,"health":"ok","tokens":1880,"nodes":948,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8080,"rust":6662,"verilog":13790,"verilog_hir":1387,"zig":7351},"repo":"t27","kinds":{"Module":64,"FnDecl":9,"StmtLocal":64,"ExprBinary":164,"ExprIdentifier":263,"ExprLiteral":210,"StmtIf":55,"StmtAssign":52,"ExprReturn":22,"ExprFieldAccess":11,"ExprCall":26,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 9 functions. Carries 4 tests. 137 lines compile to 1,880 tokens and 948 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.5 KB. Clean through every layer."},{"path":"specs/ternary/gft_xorpercep.t27","category":"specs/ternary","name":"gft_xorpercep","module":"GftXorPercep","lines":131,"bytes":6078,"description":null,"health":"warn","tokens":1790,"nodes":912,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":7614,"rust":6702,"verilog":12965,"verilog_hir":1206,"zig":7055},"repo":"t27","kinds":{"Module":64,"FnDecl":8,"StmtLocal":68,"ExprBinary":166,"ExprIdentifier":268,"ExprLiteral":171,"StmtIf":55,"StmtAssign":54,"ExprReturn":19,"ExprFieldAccess":13,"ExprCall":24,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 8 functions. Carries 1 test. 131 lines compile to 1,790 tokens and 912 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 12.7 KB. Compiles with 2 type errors."},{"path":"specs/ternary/gft_xorpercep3.t27","category":"specs/ternary","name":"gft_xorpercep3","module":"GftXorPercep3","lines":149,"bytes":6760,"description":null,"health":"warn","tokens":1961,"nodes":991,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8263,"rust":7255,"verilog":14020,"verilog_hir":1423,"zig":7621},"repo":"t27","kinds":{"Module":69,"FnDecl":10,"StmtLocal":71,"ExprBinary":183,"ExprIdentifier":282,"ExprLiteral":191,"StmtIf":60,"StmtAssign":55,"ExprReturn":26,"ExprFieldAccess":17,"ExprCall":25,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 10 functions. Carries 1 test. 149 lines compile to 1,961 tokens and 991 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Compiles with 2 type errors."},{"path":"specs/ternary/gft_xorpercep4.t27","category":"specs/ternary","name":"gft_xorpercep4","module":"GftXorPercep4","lines":149,"bytes":6760,"description":null,"health":"warn","tokens":1961,"nodes":991,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8263,"rust":7255,"verilog":14020,"verilog_hir":1423,"zig":7621},"repo":"t27","kinds":{"Module":69,"FnDecl":10,"StmtLocal":71,"ExprBinary":183,"ExprIdentifier":282,"ExprLiteral":191,"StmtIf":60,"StmtAssign":55,"ExprReturn":26,"ExprFieldAccess":17,"ExprCall":25,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/type-errors","size/small","src/t27"],"summary":"Declares 10 functions. Carries 1 test. 149 lines compile to 1,961 tokens and 991 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Compiles with 2 type errors."},{"path":"specs/ternary/gft_xortrain.t27","category":"specs/ternary","name":"gft_xortrain","module":"GftXorTrain","lines":144,"bytes":6739,"description":null,"health":"ok","tokens":1882,"nodes":951,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7974,"rust":7035,"verilog":13599,"verilog_hir":1248,"zig":7388},"repo":"t27","kinds":{"Module":67,"FnDecl":9,"StmtLocal":71,"ExprBinary":172,"ExprIdentifier":274,"ExprLiteral":180,"StmtIf":58,"StmtAssign":52,"ExprReturn":24,"ExprFieldAccess":15,"ExprCall":27,"TestBlock":1,"StmtExpr":1},"tags":["domain/ternary","has/functions","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 9 functions. Carries 1 test. 144 lines compile to 1,882 tokens and 951 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.3 KB. Clean through every layer."},{"path":"specs/ternary/hybrid_arithmetic.t27","category":"specs/ternary","name":"hybrid_arithmetic","module":"HybridArithmetic","lines":492,"bytes":18595,"description":"Module: Hybrid Arithmetic - Packed Storage with Unpacked Computation","health":"ok","tokens":1784,"nodes":169,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7724,"rust":1508,"verilog":15619,"verilog_hir":722,"zig":9910},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"EnumDecl":1,"EnumVariant":2,"StructDecl":3,"ExprIdentifier":7,"FnDecl":11,"TestBlock":24,"StmtExpr":91,"InvariantBlock":15,"BenchBlock":11},"tags":["domain/ternary","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 11 functions, 3 structs and 1 enum. Carries 24 tests, 15 invariants and 11 benches. 492 lines compile to 1,784 tokens and 169 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 15.3 KB. Clean through every layer."},{"path":"specs/ternary/hybrid_bigint.t27","category":"specs/ternary","name":"hybrid_bigint","module":"hybrid_bigint","lines":1065,"bytes":30087,"description":"HybridBigInt: Optimal Memory/Speed Trade-off Uses packed storage (4.5x memory savings) with unpacked computation SIMD-accelerated operations for high performance Author: Dmitrii Vasilev","health":"warn","tokens":5664,"nodes":918,"depth":11,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14061,"rust":1180,"verilog":28642,"verilog_hir":508,"zig":13241},"repo":"t27","kinds":{"Module":23,"UseDecl":3,"ConstDecl":6,"ExprLiteral":125,"ExprIdentifier":152,"EnumDecl":1,"EnumVariant":2,"StructDecl":1,"FnDecl":4,"StmtLocal":154,"ExprArrayLiteral":9,"StmtFor":17,"ExprBinary":29,"ExprIndex":13,"ExprFieldAccess":11,"StmtIf":3,"StmtAssign":10,"ExprUnary":57,"StmtExpr":73,"ExprReturn":1,"TestBlock":25,"ExprCall":173,"InvariantBlock":14,"BenchBlock":12},"tags":["domain/ternary","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 6 constants. Carries 25 tests, 14 invariants and 12 benches. 1065 lines compile to 5,664 tokens and 918 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 28.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/ternary/packed_trit.t27","category":"specs/ternary","name":"packed_trit","module":"PackedTrit","lines":430,"bytes":16022,"description":"Module: Packed Trit Encoding (5 trits per byte)","health":"ok","tokens":1417,"nodes":209,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7020,"rust":1899,"verilog":14472,"verilog_hir":968,"zig":9142},"repo":"t27","kinds":{"Module":7,"UseDecl":3,"ConstDecl":10,"ExprLiteral":14,"StructDecl":4,"ExprIdentifier":28,"FnDecl":10,"ExprReturn":6,"ExprBinary":10,"StmtIf":3,"ExprUnary":1,"ExprIf":1,"StmtLocal":1,"ExprFieldAccess":1,"ExprCall":1,"TestBlock":21,"StmtExpr":69,"InvariantBlock":10,"BenchBlock":9},"tags":["domain/ternary","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 10 functions, 4 structs and 10 constants. Carries 21 tests, 10 invariants and 9 benches. 430 lines compile to 1,417 tokens and 209 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Clean through every layer."},{"path":"specs/ternary/stream_ternary_mac.t27","category":"specs/ternary","name":"stream_ternary_mac","module":"StreamTernaryMac","lines":53,"bytes":2507,"description":null,"health":"warn","tokens":468,"nodes":221,"depth":31,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2451,"rust":952,"verilog":4160,"verilog_hir":646,"zig":2004},"repo":"t27","kinds":{"Module":4,"FnDecl":4,"StmtIf":3,"ExprBinary":36,"ExprIdentifier":66,"ExprLiteral":50,"ExprReturn":6,"ExprUnary":2,"ExprCall":37,"ExprFieldAccess":3,"ConstDecl":1,"StmtAssign":1,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 4 functions and 1 constant. Carries 4 tests. 53 lines compile to 468 tokens and 221 AST nodes, depth 31. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/ternary_full_adder.t27","category":"specs/ternary","name":"ternary_full_adder","module":"TernaryFullAdder","lines":79,"bytes":3388,"description":null,"health":"warn","tokens":696,"nodes":260,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3610,"rust":1908,"verilog":6428,"verilog_hir":1318,"zig":2913},"repo":"t27","kinds":{"Module":9,"FnDecl":11,"StmtIf":7,"ExprBinary":29,"ExprIdentifier":55,"ExprLiteral":62,"ExprReturn":18,"ExprUnary":3,"StmtLocal":14,"StmtWhile":1,"ExprFieldAccess":8,"StmtAssign":2,"ExprCall":29,"TestBlock":6,"StmtExpr":6},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 11 functions. Carries 6 tests. 79 lines compile to 696 tokens and 260 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/ternary_mac.t27","category":"specs/ternary","name":"ternary_mac","module":"TernaryMac","lines":46,"bytes":2243,"description":null,"health":"warn","tokens":459,"nodes":215,"depth":31,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2263,"rust":933,"verilog":3904,"verilog_hir":548,"zig":1961},"repo":"t27","kinds":{"Module":4,"FnDecl":4,"StmtIf":3,"ExprBinary":35,"ExprIdentifier":64,"ExprLiteral":49,"ExprReturn":7,"ExprUnary":2,"ExprCall":37,"ExprFieldAccess":2,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 4 functions. Carries 4 tests. 46 lines compile to 459 tokens and 215 AST nodes, depth 31. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/ternary_ripple_adder.t27","category":"specs/ternary","name":"ternary_ripple_adder","module":"TernaryRippleAdder","lines":90,"bytes":3996,"description":null,"health":"warn","tokens":834,"nodes":307,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4023,"rust":2298,"verilog":6880,"verilog_hir":1395,"zig":3274},"repo":"t27","kinds":{"Module":9,"FnDecl":12,"StmtIf":7,"ExprBinary":39,"ExprIdentifier":68,"ExprLiteral":72,"ExprReturn":19,"ExprUnary":3,"StmtLocal":20,"StmtWhile":1,"ExprFieldAccess":16,"StmtAssign":2,"ExprCall":29,"TestBlock":5,"StmtExpr":5},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 12 functions. Carries 5 tests. 90 lines compile to 834 tokens and 307 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/ternary/ternary_xor.t27","category":"specs/ternary","name":"ternary_xor","module":"TernaryXor","lines":79,"bytes":2964,"description":null,"health":"warn","tokens":493,"nodes":192,"depth":10,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2815,"rust":1458,"verilog":5124,"verilog_hir":1004,"zig":2350},"repo":"t27","kinds":{"Module":9,"FnDecl":8,"StmtIf":7,"ExprBinary":21,"ExprIdentifier":39,"ExprLiteral":44,"ExprReturn":15,"ExprUnary":3,"StmtLocal":11,"StmtWhile":1,"ExprFieldAccess":5,"StmtAssign":2,"ExprCall":19,"TestBlock":4,"StmtExpr":4},"tags":["domain/ternary","has/functions","has/loops","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 8 functions. Carries 4 tests. 79 lines compile to 493 tokens and 192 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/test_framework/core.t27","category":"specs/test_framework","name":"core","module":"core","lines":317,"bytes":10883,"description":"t27 Math/Physics Test Framework - Core Ring 050: Test framework core per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Provides fundamental testing constructs for scientific computing","health":"warn","tokens":1697,"nodes":69,"depth":9,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2382,"rust":1402,"verilog":4025,"verilog_hir":374,"zig":1264},"repo":"t27","kinds":{"Module":3,"EnumDecl":3,"EnumVariant":16,"StructDecl":2,"ExprIdentifier":25,"FnDecl":1,"StmtLocal":4,"ExprLiteral":4,"StmtFor":1,"ExprBinary":2,"ExprCall":3,"StmtIf":1,"ExprUnary":1,"StmtAssign":2,"ExprIf":1},"tags":["domain/testing","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 1 function, 2 structs and 3 enums. 317 lines compile to 1,697 tokens and 69 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/test_framework/graph_drift_detection.t27","category":"specs/test_framework","name":"graph_drift_detection","module":"GraphDriftDetection","lines":650,"bytes":24300,"description":"t27/specs/test_framework/graph_drift_detection.t27 Ring 054 — Graph Drift Detection for Structural Change Detection Monitors structural changes in mathematical and physics specifications over time","health":"ok","tokens":2911,"nodes":48,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2227,"rust":1627,"verilog":3918,"verilog_hir":318,"zig":1632},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":4,"ExprIdentifier":27,"EnumDecl":2,"EnumVariant":11,"FnDecl":1},"tags":["domain/testing","has/enums","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function, 4 structs and 2 enums. 650 lines compile to 2,911 tokens and 48 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/test_framework/property_test_template.t27","category":"specs/test_framework","name":"property_test_template","module":"PBTTemplate","lines":433,"bytes":17590,"description":"t27/specs/test_framework/property_test_template.t27 Ring 052 — Property-Based Testing Template for GoldenFloat Standardized PBT patterns following T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md","health":"warn","tokens":2112,"nodes":82,"depth":9,"loss":4,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2377,"rust":1398,"verilog":3938,"verilog_hir":582,"zig":2509},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":1,"ExprIdentifier":13,"FnDecl":6,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":10,"ExprLiteral":9,"StmtLocal":7,"ExprArrayLiteral":2,"StmtIf":2,"ExprBinary":6,"ExprCall":13,"ExprIndex":2},"tags":["domain/testing","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 6 functions and 1 struct. 433 lines compile to 2,112 tokens and 82 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Compiles with 4 items dropped by error recovery."},{"path":"specs/test_framework/runner.t27","category":"specs/test_framework","name":"runner","module":"runner","lines":618,"bytes":19971,"description":"t27 Math/Physics Test Framework - Runner Ring 050: Test runner implementation per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Entry point for `tri test ` execution","health":"warn","tokens":3333,"nodes":38,"depth":5,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2047,"rust":1433,"verilog":3493,"verilog_hir":388,"zig":1609},"repo":"t27","kinds":{"Module":1,"UseDecl":1,"StructDecl":4,"ExprIdentifier":21,"EnumDecl":1,"EnumVariant":5,"FnDecl":2,"StmtExpr":1,"ExprCall":2},"tags":["domain/testing","has/enums","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 2 functions, 4 structs and 1 enum. 618 lines compile to 3,333 tokens and 38 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/test_framework/verilog_bench_harness.t27","category":"specs/test_framework","name":"verilog_bench_harness","module":"VerilogBenchHarness","lines":460,"bytes":19117,"description":"t27/specs/test_framework/verilog_bench_harness.t27 Ring 053 — Verilog Bench Harness for Hardware-in-the-Loop Testing Integration framework for testing GoldenFloat operations against Verilog RTL","health":"ok","tokens":2046,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1294,"rust":525,"verilog":2327,"verilog_hir":320,"zig":888},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":11,"FnDecl":1},"tags":["domain/testing","has/functions","has/imports","has/structs","health/ok","size/large","src/t27"],"summary":"Declares 1 function and 1 struct. 460 lines compile to 2,046 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tools/catalog.t27","category":"specs/tools","name":"catalog","module":"ToolsCatalog","lines":159,"bytes":15261,"description":"specs/tools/catalog.t27 -- the tools catalog contract: schema 2, repository-qualified IDs, legacy resolution S06 of gHashTag/trinity#988 (gHashTag/t27#3568). specs/tools/ holds one card per tool of two repositories: the Rust tri of gHashTag/t27 (tri/.t27), the MCP servers of both (mcp/.t27), and now the Zig tri of gHashTag/trinity (trinity/tri/.t27), derived from the one registry that repository's own binary exports and its CI drift-checks (.trinity/registry.json, 29 commands). Until 2026-09-12 the README said the consumer had no tri binary; it has one, with five dispatch layers, a 187-entry command table, an","health":"ok","tokens":1343,"nodes":368,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14387,"rust":11454,"verilog":17619,"verilog_hir":807,"zig":13925},"repo":"t27","kinds":{"Module":4,"ConstDecl":59,"ExprLiteral":105,"ExprIdentifier":55,"FnDecl":7,"StmtIf":3,"ExprReturn":10,"ExprBinary":39,"InvariantBlock":4,"StmtExpr":29,"TestBlock":5,"ExprCall":43,"ExprIndex":5},"tags":["domain/tools","has/functions","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 7 functions and 59 constants. Carries 5 tests and 4 invariants. 159 lines compile to 1,343 tokens and 368 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 17.2 KB. Clean through every layer."},{"path":"specs/tools/mcp/gitbutler.t27","category":"specs/tools","name":"gitbutler","module":"tool_mcp_gitbutler","lines":42,"bytes":2303,"description":"specs/tools/mcp/gitbutler.t27 -- tool mcp/gitbutler, MCP server \"gitbutler\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/gitbutler). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":240,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1615,"rust":1490,"verilog":2672,"verilog_hir":265,"zig":2301},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 240 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/mcp/inngest-dev.t27","category":"specs/tools","name":"inngest-dev","module":"tool_mcp_inngest_dev","lines":49,"bytes":6692,"description":"specs/tools/mcp/inngest-dev.t27 -- tool mcp/inngest-dev, MCP server \"inngest-dev\" (self-hosted Inngest, Railway project 999) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/inngest-dev). Tool names, descriptions (first line) and input keys are the server's own tools/list answer, recorded over Streamable HTTP on 2026-09-13 (initialize -> notifications/initialized -> tools/list, serverInfo name \"inngest-dev\", title \"Inngest Dev Server MCP Tools\", version 1.0.0, response header x-inngest-server-kind: cloud); nothing is typed by hand.","health":"ok","tokens":358,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4960,"rust":4827,"verilog":6013,"verilog_hir":269,"zig":5646},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 49 lines compile to 358 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.9 KB. Clean through every layer."},{"path":"specs/tools/mcp/needle.t27","category":"specs/tools","name":"needle","module":"tool_mcp_needle","lines":42,"bytes":3079,"description":"specs/tools/mcp/needle.t27 -- tool mcp/needle, MCP server \"needle\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/needle). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":272,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2371,"rust":2258,"verilog":3433,"verilog_hir":259,"zig":3066},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 272 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tools/mcp/neon.t27","category":"specs/tools","name":"neon","module":"tool_mcp_neon","lines":42,"bytes":2321,"description":"specs/tools/mcp/neon.t27 -- tool mcp/neon, MCP server \"neon\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/neon). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":240,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1630,"rust":1525,"verilog":2697,"verilog_hir":255,"zig":2331},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 240 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/mcp/notebooklm.t27","category":"specs/tools","name":"notebooklm","module":"tool_mcp_notebooklm","lines":42,"bytes":2319,"description":"specs/tools/mcp/notebooklm.t27 -- tool mcp/notebooklm, MCP server \"notebooklm\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/notebooklm). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":240,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1630,"rust":1501,"verilog":2685,"verilog_hir":267,"zig":2313},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 240 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/mcp/railway-mcp-server.t27","category":"specs/tools","name":"railway-mcp-server","module":"tool_mcp_railway_mcp_server","lines":42,"bytes":2401,"description":"specs/tools/mcp/railway-mcp-server.t27 -- tool mcp/railway-mcp-server, MCP server \"railway-mcp-server\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/railway-mcp-server). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":239,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1696,"rust":1535,"verilog":2735,"verilog_hir":283,"zig":2355},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 239 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/mcp/t27-traceability.t27","category":"specs/tools","name":"t27-traceability","module":"tool_mcp_t27_traceability","lines":42,"bytes":3173,"description":"specs/tools/mcp/t27-traceability.t27 -- tool mcp/t27-traceability, MCP server \"t27-traceability\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/t27-traceability). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":269,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2466,"rust":2313,"verilog":3508,"verilog_hir":279,"zig":2529},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 269 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tools/mcp/tri-mcp.t27","category":"specs/tools","name":"tri-mcp","module":"tool_mcp_tri_mcp","lines":42,"bytes":3270,"description":"specs/tools/mcp/tri-mcp.t27 -- tool mcp/tri-mcp, MCP server \"tri-mcp\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-mcp). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":296,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2554,"rust":2437,"verilog":3614,"verilog_hir":261,"zig":3252},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 296 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tools/mcp/tri-ssot.t27","category":"specs/tools","name":"tri-ssot","module":"tool_mcp_tri_ssot","lines":42,"bytes":2932,"description":"specs/tools/mcp/tri-ssot.t27 -- tool mcp/tri-ssot, MCP server \"tri-ssot\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-ssot). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":266,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2233,"rust":2112,"verilog":3291,"verilog_hir":263,"zig":2320},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 266 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tools/mcp/trinity.t27","category":"specs/tools","name":"trinity","module":"tool_mcp_trinity","lines":42,"bytes":18542,"description":"specs/tools/mcp/trinity.t27 -- tool mcp/trinity, MCP server \"trinity\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/trinity). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":1497,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":17215,"rust":17098,"verilog":18275,"verilog_hir":261,"zig":17919},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 1,497 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 17.8 KB. Clean through every layer."},{"path":"specs/tools/mcp/zig-docs.t27","category":"specs/tools","name":"zig-docs","module":"tool_mcp_zig_docs","lines":42,"bytes":2323,"description":"specs/tools/mcp/zig-docs.t27 -- tool mcp/zig-docs, MCP server \"zig-docs\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/zig-docs). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":239,"nodes":53,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1628,"rust":1507,"verilog":2687,"verilog_hir":263,"zig":2317},"repo":"t27","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":19,"ExprIdentifier":7},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 26 constants. 42 lines compile to 239 tokens and 53 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/mcp_protocol.t27","category":"specs/tools","name":"mcp_protocol","module":"McpProtocol","lines":195,"bytes":14304,"description":"specs/tools/mcp_protocol.t27 -- the MCP protocol behaviour of gHashTag/trinity's trinity-mcp at the pin S06 of gHashTag/trinity#988 (gHashTag/t27#3568). The consumer ships two MCP servers and one client. This file states what the main server, tools/mcp/trinity_mcp/server.zig at 976df517, actually does with a JSON-RPC message -- how it frames, which methods it routes, what it answers to initialize, how it lists and calls tools, how it reports failure, what it does with cancellation and with a tool it does not know -- and what the modules beside it declare but the server never imports.","health":"ok","tokens":1416,"nodes":479,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13343,"rust":10508,"verilog":17707,"verilog_hir":1136,"zig":13297},"repo":"t27","kinds":{"Module":19,"ConstDecl":67,"ExprLiteral":139,"ExprIdentifier":62,"FnDecl":10,"StmtIf":18,"ExprReturn":28,"ExprBinary":42,"ExprUnary":15,"InvariantBlock":3,"StmtExpr":25,"ExprIndex":2,"TestBlock":5,"ExprCall":44},"tags":["domain/tools","has/functions","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 10 functions and 67 constants. Carries 5 tests and 3 invariants. 195 lines compile to 1,416 tokens and 479 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 17.3 KB. Clean through every layer."},{"path":"specs/tools/registry.t27","category":"specs/tools","name":"registry","module":"ToolsRegistry","lines":523,"bytes":18356,"description":"specs/tools/registry.t27 Tools Registry Operations","health":"warn","tokens":2185,"nodes":183,"depth":7,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5988,"rust":2257,"verilog":8504,"verilog_hir":1464,"zig":5519},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":23,"TestBlock":8,"StmtLocal":4,"ExprCall":31,"ExprLiteral":23,"StmtExpr":23,"ExprBinary":21,"ExprFieldAccess":20,"ExprIdentifier":25,"StmtAssign":1,"ExprUnary":1},"tags":["domain/tools","has/functions","has/imports","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 23 functions. Carries 8 tests. 523 lines compile to 2,185 tokens and 183 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tools/schema.t27","category":"specs/tools","name":"schema","module":"Tools","lines":523,"bytes":19298,"description":"specs/tools/schema.t27 Tools Types Specification","health":"warn","tokens":2006,"nodes":225,"depth":7,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5028,"rust":3417,"verilog":8735,"verilog_hir":390,"zig":4612},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":12,"EnumDecl":3,"EnumVariant":17,"ExprIdentifier":68,"ConstDecl":2,"ExprLiteral":23,"FnDecl":3,"ExprReturn":3,"ExprFieldAccess":22,"ExprBinary":21,"TestBlock":6,"StmtLocal":2,"ExprCall":21,"StmtExpr":19},"tags":["domain/tools","has/enums","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/t27"],"summary":"Declares 3 functions, 12 structs, 3 enums and 2 constants. Carries 6 tests. 523 lines compile to 2,006 tokens and 225 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"specs/tools/tri/abandoned.t27","category":"specs/tools","name":"abandoned","module":"tool_tri_abandoned","lines":37,"bytes":2327,"description":"specs/tools/tri/abandoned.t27 -- tool tri/abandoned, the `tri abandoned` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/abandoned). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1659,"rust":1440,"verilog":2630,"verilog_hir":265,"zig":1602},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/cell.t27","category":"specs/tools","name":"cell","module":"tool_tri_cell","lines":37,"bytes":2298,"description":"specs/tools/tri/cell.t27 -- tool tri/cell, the `tri cell` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/cell). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":186,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1620,"rust":1421,"verilog":2601,"verilog_hir":255,"zig":1578},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 186 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/census.t27","category":"specs/tools","name":"census","module":"tool_tri_census","lines":37,"bytes":2515,"description":"specs/tools/tri/census.t27 -- tool tri/census, the `tri census` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/census). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1848,"rust":1641,"verilog":2825,"verilog_hir":259,"zig":1800},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tools/tri/ci.t27","category":"specs/tools","name":"ci","module":"tool_tri_ci","lines":37,"bytes":2306,"description":"specs/tools/tri/ci.t27 -- tool tri/ci, the `tri ci` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/ci). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1645,"rust":1454,"verilog":2630,"verilog_hir":251,"zig":1609},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/competitors.t27","category":"specs/tools","name":"competitors","module":"tool_tri_competitors","lines":37,"bytes":2600,"description":"specs/tools/tri/competitors.t27 -- tool tri/competitors, the `tri competitors` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/competitors). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1928,"rust":1701,"verilog":2895,"verilog_hir":269,"zig":1865},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tools/tri/discard.t27","category":"specs/tools","name":"discard","module":"tool_tri_discard","lines":37,"bytes":2399,"description":"specs/tools/tri/discard.t27 -- tool tri/discard, the `tri discard` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/discard). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1731,"rust":1520,"verilog":2706,"verilog_hir":261,"zig":1680},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/doctor.t27","category":"specs/tools","name":"doctor","module":"tool_tri_doctor","lines":37,"bytes":2361,"description":"specs/tools/tri/doctor.t27 -- tool tri/doctor, the `tri doctor` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/doctor). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":180,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1683,"rust":1476,"verilog":2660,"verilog_hir":259,"zig":1635},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 180 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/elab.t27","category":"specs/tools","name":"elab","module":"tool_tri_elab","lines":37,"bytes":2344,"description":"specs/tools/tri/elab.t27 -- tool tri/elab, the `tri elab` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/elab). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1679,"rust":1480,"verilog":2660,"verilog_hir":255,"zig":2239},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/emit.t27","category":"specs/tools","name":"emit","module":"tool_tri_emit","lines":37,"bytes":2487,"description":"specs/tools/tri/emit.t27 -- tool tri/emit, the `tri emit` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/emit). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1824,"rust":1625,"verilog":2805,"verilog_hir":255,"zig":1782},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri/experience.t27","category":"specs/tools","name":"experience","module":"tool_tri_experience","lines":37,"bytes":2215,"description":"specs/tools/tri/experience.t27 -- tool tri/experience, the `tri experience` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/experience). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":182,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1533,"rust":1310,"verilog":2502,"verilog_hir":267,"zig":1473},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 182 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tools/tri/fleet.t27","category":"specs/tools","name":"fleet","module":"tool_tri_fleet","lines":37,"bytes":2318,"description":"specs/tools/tri/fleet.t27 -- tool tri/fleet, the `tri fleet` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fleet). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1639,"rust":1436,"verilog":2618,"verilog_hir":257,"zig":1594},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/fmt.t27","category":"specs/tools","name":"fmt","module":"tool_tri_fmt","lines":37,"bytes":2423,"description":"specs/tools/tri/fmt.t27 -- tool tri/fmt, the `tri fmt` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fmt). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":182,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1760,"rust":1565,"verilog":2743,"verilog_hir":253,"zig":1721},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 182 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri/fpga.t27","category":"specs/tools","name":"fpga","module":"tool_tri_fpga","lines":37,"bytes":9292,"description":"specs/tools/tri/fpga.t27 -- tool tri/fpga, the `tri fpga` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fpga). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":317,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8559,"rust":8360,"verilog":9540,"verilog_hir":255,"zig":9123},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 317 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 9.3 KB. Clean through every layer."},{"path":"specs/tools/tri/gates.t27","category":"specs/tools","name":"gates","module":"tool_tri_gates","lines":37,"bytes":3220,"description":"specs/tools/tri/gates.t27 -- tool tri/gates, the `tri gates` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/gates). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":229,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2530,"rust":2327,"verilog":3509,"verilog_hir":257,"zig":2489},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 229 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tools/tri/gen.t27","category":"specs/tools","name":"gen","module":"tool_tri_gen","lines":37,"bytes":2164,"description":"specs/tools/tri/gen.t27 -- tool tri/gen, the `tri gen` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/gen). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":183,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1488,"rust":1293,"verilog":2471,"verilog_hir":253,"zig":1449},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 183 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tools/tri/harness.t27","category":"specs/tools","name":"harness","module":"tool_tri_harness","lines":37,"bytes":2287,"description":"specs/tools/tri/harness.t27 -- tool tri/harness, the `tri harness` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/harness). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1621,"rust":1410,"verilog":2596,"verilog_hir":261,"zig":1570},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/health.t27","category":"specs/tools","name":"health","module":"tool_tri_health","lines":37,"bytes":2279,"description":"specs/tools/tri/health.t27 -- tool tri/health, the `tri health` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/health). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":180,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1601,"rust":1394,"verilog":2578,"verilog_hir":259,"zig":1553},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 180 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/hooks.t27","category":"specs/tools","name":"hooks","module":"tool_tri_hooks","lines":37,"bytes":2994,"description":"specs/tools/tri/hooks.t27 -- tool tri/hooks, the `tri hooks` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/hooks). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":209,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2316,"rust":2113,"verilog":3295,"verilog_hir":257,"zig":2271},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 209 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tools/tri/issues.t27","category":"specs/tools","name":"issues","module":"tool_tri_issues","lines":37,"bytes":2533,"description":"specs/tools/tri/issues.t27 -- tool tri/issues, the `tri issues` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/issues). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":189,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1864,"rust":1657,"verilog":2841,"verilog_hir":259,"zig":1816},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 189 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tools/tri/jumps.t27","category":"specs/tools","name":"jumps","module":"tool_tri_jumps","lines":37,"bytes":2553,"description":"specs/tools/tri/jumps.t27 -- tool tri/jumps, the `tri jumps` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/jumps). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1889,"rust":1686,"verilog":2868,"verilog_hir":257,"zig":2446},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tools/tri/kinds.t27","category":"specs/tools","name":"kinds","module":"tool_tri_kinds","lines":37,"bytes":2275,"description":"specs/tools/tri/kinds.t27 -- tool tri/kinds, the `tri kinds` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/kinds). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1611,"rust":1408,"verilog":2590,"verilog_hir":257,"zig":1566},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/lean.t27","category":"specs/tools","name":"lean","module":"tool_tri_lean","lines":37,"bytes":2300,"description":"specs/tools/tri/lean.t27 -- tool tri/lean, the `tri lean` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/lean). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1635,"rust":1436,"verilog":2616,"verilog_hir":255,"zig":1593},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/ledgers.t27","category":"specs/tools","name":"ledgers","module":"tool_tri_ledgers","lines":37,"bytes":2305,"description":"specs/tools/tri/ledgers.t27 -- tool tri/ledgers, the `tri ledgers` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/ledgers). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1639,"rust":1428,"verilog":2614,"verilog_hir":261,"zig":1588},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/loop.t27","category":"specs/tools","name":"loop","module":"tool_tri_loop","lines":37,"bytes":2401,"description":"specs/tools/tri/loop.t27 -- tool tri/loop, the `tri loop` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/loop). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1738,"rust":1539,"verilog":2719,"verilog_hir":255,"zig":1696},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri/merging.t27","category":"specs/tools","name":"merging","module":"tool_tri_merging","lines":37,"bytes":2360,"description":"specs/tools/tri/merging.t27 -- tool tri/merging, the `tri merging` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/merging). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":182,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1693,"rust":1482,"verilog":2668,"verilog_hir":261,"zig":1642},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 182 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/misread.t27","category":"specs/tools","name":"misread","module":"tool_tri_misread","lines":37,"bytes":2332,"description":"specs/tools/tri/misread.t27 -- tool tri/misread, the `tri misread` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/misread). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":182,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1665,"rust":1454,"verilog":2640,"verilog_hir":261,"zig":1614},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 182 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/mods.t27","category":"specs/tools","name":"mods","module":"tool_tri_mods","lines":37,"bytes":2226,"description":"specs/tools/tri/mods.t27 -- tool tri/mods, the `tri mods` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/mods). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1550,"rust":1351,"verilog":2531,"verilog_hir":255,"zig":1508},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/mutate.t27","category":"specs/tools","name":"mutate","module":"tool_tri_mutate","lines":37,"bytes":2298,"description":"specs/tools/tri/mutate.t27 -- tool tri/mutate, the `tri mutate` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/mutate). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1633,"rust":1426,"verilog":2610,"verilog_hir":259,"zig":1585},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/now.t27","category":"specs/tools","name":"now","module":"tool_tri_now","lines":37,"bytes":2305,"description":"specs/tools/tri/now.t27 -- tool tri/now, the `tri now` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/now). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1641,"rust":1446,"verilog":2624,"verilog_hir":253,"zig":1602},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/one-away.t27","category":"specs/tools","name":"one-away","module":"tool_tri_one_away","lines":37,"bytes":2598,"description":"specs/tools/tri/one-away.t27 -- tool tri/one-away, the `tri one-away` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/one-away). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":186,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1928,"rust":1713,"verilog":2901,"verilog_hir":263,"zig":2476},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 186 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tools/tri/orphaned.t27","category":"specs/tools","name":"orphaned","module":"tool_tri_orphaned","lines":37,"bytes":2259,"description":"specs/tools/tri/orphaned.t27 -- tool tri/orphaned, the `tri orphaned` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/orphaned). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1592,"rust":1377,"verilog":2565,"verilog_hir":263,"zig":1538},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/pr.t27","category":"specs/tools","name":"pr","module":"tool_tri_pr","lines":37,"bytes":2293,"description":"specs/tools/tri/pr.t27 -- tool tri/pr, the `tri pr` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/pr). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1630,"rust":1439,"verilog":2615,"verilog_hir":251,"zig":1594},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/prose.t27","category":"specs/tools","name":"prose","module":"tool_tri_prose","lines":37,"bytes":2294,"description":"specs/tools/tri/prose.t27 -- tool tri/prose, the `tri prose` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/prose). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1630,"rust":1427,"verilog":2609,"verilog_hir":257,"zig":1585},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/quantifiers.t27","category":"specs/tools","name":"quantifiers","module":"tool_tri_quantifiers","lines":37,"bytes":2419,"description":"specs/tools/tri/quantifiers.t27 -- tool tri/quantifiers, the `tri quantifiers` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/quantifiers). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1747,"rust":1520,"verilog":2714,"verilog_hir":269,"zig":1684},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri/red.t27","category":"specs/tools","name":"red","module":"tool_tri_red","lines":37,"bytes":2294,"description":"specs/tools/tri/red.t27 -- tool tri/red, the `tri red` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/red). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1617,"rust":1422,"verilog":2600,"verilog_hir":253,"zig":1578},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/reseal.t27","category":"specs/tools","name":"reseal","module":"tool_tri_reseal","lines":37,"bytes":2338,"description":"specs/tools/tri/reseal.t27 -- tool tri/reseal, the `tri reseal` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/reseal). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1671,"rust":1464,"verilog":2648,"verilog_hir":259,"zig":1623},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/rtl.t27","category":"specs/tools","name":"rtl","module":"tool_tri_rtl","lines":37,"bytes":2372,"description":"specs/tools/tri/rtl.t27 -- tool tri/rtl, the `tri rtl` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/rtl). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1710,"rust":1515,"verilog":2693,"verilog_hir":253,"zig":1671},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/seals.t27","category":"specs/tools","name":"seals","module":"tool_tri_seals","lines":37,"bytes":2645,"description":"specs/tools/tri/seals.t27 -- tool tri/seals, the `tri seals` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/seals). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":197,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1973,"rust":1770,"verilog":2952,"verilog_hir":257,"zig":1928},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 197 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tools/tri/serve.t27","category":"specs/tools","name":"serve","module":"tool_tri_serve","lines":37,"bytes":2361,"description":"specs/tools/tri/serve.t27 -- tool tri/serve, the `tri serve` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/serve). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":180,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1684,"rust":1481,"verilog":2663,"verilog_hir":257,"zig":1639},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 180 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/skill.t27","category":"specs/tools","name":"skill","module":"tool_tri_skill","lines":37,"bytes":3071,"description":"specs/tools/tri/skill.t27 -- tool tri/skill, the `tri skill` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/skill). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":213,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2378,"rust":2175,"verilog":3357,"verilog_hir":257,"zig":2333},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 213 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tools/tri/status.t27","category":"specs/tools","name":"status","module":"tool_tri_status","lines":37,"bytes":2331,"description":"specs/tools/tri/status.t27 -- tool tri/status, the `tri status` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/status). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":179,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1653,"rust":1446,"verilog":2630,"verilog_hir":259,"zig":1605},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 179 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/sweep.t27","category":"specs/tools","name":"sweep","module":"tool_tri_sweep","lines":37,"bytes":2273,"description":"specs/tools/tri/sweep.t27 -- tool tri/sweep, the `tri sweep` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/sweep). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1609,"rust":1406,"verilog":2588,"verilog_hir":257,"zig":1564},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/synth.t27","category":"specs/tools","name":"synth","module":"tool_tri_synth","lines":37,"bytes":2270,"description":"specs/tools/tri/synth.t27 -- tool tri/synth, the `tri synth` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/synth). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1606,"rust":1403,"verilog":2585,"verilog_hir":257,"zig":1561},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/test.t27","category":"specs/tools","name":"test","module":"tool_tri_test","lines":37,"bytes":2097,"description":"specs/tools/tri/test.t27 -- tool tri/test, the `tri test` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/test). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":183,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1420,"rust":1221,"verilog":2401,"verilog_hir":255,"zig":1378},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 183 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tools/tri/topic.t27","category":"specs/tools","name":"topic","module":"tool_tri_topic","lines":37,"bytes":2299,"description":"specs/tools/tri/topic.t27 -- tool tri/topic, the `tri topic` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/topic). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":182,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1634,"rust":1431,"verilog":2613,"verilog_hir":257,"zig":1589},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 182 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tools/tri/types.t27","category":"specs/tools","name":"types","module":"tool_tri_types","lines":37,"bytes":2450,"description":"specs/tools/tri/types.t27 -- tool tri/types, the `tri types` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/types). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":193,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1767,"rust":1564,"verilog":2746,"verilog_hir":257,"zig":1722},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 193 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri/unparsed.t27","category":"specs/tools","name":"unparsed","module":"tool_tri_unparsed","lines":37,"bytes":2619,"description":"specs/tools/tri/unparsed.t27 -- tool tri/unparsed, the `tri unparsed` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/unparsed). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":193,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1933,"rust":1718,"verilog":2906,"verilog_hir":263,"zig":1879},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 193 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tools/tri/vectors.t27","category":"specs/tools","name":"vectors","module":"tool_tri_vectors","lines":37,"bytes":2477,"description":"specs/tools/tri/vectors.t27 -- tool tri/vectors, the `tri vectors` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/vectors). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":185,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1809,"rust":1598,"verilog":2784,"verilog_hir":261,"zig":1758},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 185 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri/verdict.t27","category":"specs/tools","name":"verdict","module":"tool_tri_verdict","lines":37,"bytes":2274,"description":"specs/tools/tri/verdict.t27 -- tool tri/verdict, the `tri verdict` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/verdict). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1595,"rust":1384,"verilog":2570,"verilog_hir":261,"zig":1544},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tools/tri/vsim.t27","category":"specs/tools","name":"vsim","module":"tool_tri_vsim","lines":37,"bytes":2408,"description":"specs/tools/tri/vsim.t27 -- tool tri/vsim, the `tri vsim` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/vsim). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":181,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1745,"rust":1546,"verilog":2726,"verilog_hir":255,"zig":1703},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 181 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri/window.t27","category":"specs/tools","name":"window","module":"tool_tri_window","lines":37,"bytes":2516,"description":"specs/tools/tri/window.t27 -- tool tri/window, the `tri window` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/window). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":186,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1848,"rust":1641,"verilog":2825,"verilog_hir":259,"zig":2402},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 186 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tools/tri/worktrees.t27","category":"specs/tools","name":"worktrees","module":"tool_tri_worktrees","lines":37,"bytes":2442,"description":"specs/tools/tri/worktrees.t27 -- tool tri/worktrees, the `tri worktrees` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/worktrees). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","health":"ok","tokens":182,"nodes":41,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1773,"rust":1554,"verilog":2744,"verilog_hir":265,"zig":1716},"repo":"t27","kinds":{"Module":1,"ConstDecl":20,"ExprLiteral":16,"ExprIdentifier":4},"tags":["domain/tools","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 20 constants. 37 lines compile to 182 tokens and 41 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tools/tri_to_t27_converter.t27","category":"specs/tools","name":"tri_to_t27_converter","module":"TriToT27Converter","lines":415,"bytes":17080,"description":"t27/specs/tools/tri_to_t27_converter.t27","health":"ok","tokens":1242,"nodes":107,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4490,"rust":3063,"verilog":8531,"verilog_hir":1039,"zig":5078},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"ConstDecl":3,"ExprLiteral":3,"StructDecl":10,"ExprIdentifier":33,"FnDecl":10,"TestBlock":11,"StmtExpr":34},"tags":["domain/tools","has/functions","has/imports","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 10 functions, 10 structs and 3 constants. Carries 11 tests. 415 lines compile to 1,242 tokens and 107 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/bench.t27","category":"specs/tools","name":"bench","module":"tool_trinity_tri_bench","lines":56,"bytes":4072,"description":"specs/tools/trinity/tri/bench.t27 -- tool gHashTag/trinity:tri/bench, the `tri bench` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/bench`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":367,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2897,"rust":2941,"verilog":4145,"verilog_hir":273,"zig":3809},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 367 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/bio.t27","category":"specs/tools","name":"bio","module":"tool_trinity_tri_bio","lines":56,"bytes":3972,"description":"specs/tools/trinity/tri/bio.t27 -- tool gHashTag/trinity:tri/bio, the `tri bio` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/bio`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":363,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2802,"rust":2854,"verilog":4054,"verilog_hir":269,"zig":3720},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 363 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/blindspots.t27","category":"specs/tools","name":"blindspots","module":"tool_trinity_tri_blindspots","lines":56,"bytes":4220,"description":"specs/tools/trinity/tri/blindspots.t27 -- tool gHashTag/trinity:tri/blindspots, the `tri blindspots` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/blindspots`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":378,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3034,"rust":3058,"verilog":4271,"verilog_hir":283,"zig":3933},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 378 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/conscious.t27","category":"specs/tools","name":"conscious","module":"tool_trinity_tri_conscious","lines":56,"bytes":3956,"description":"specs/tools/trinity/tri/conscious.t27 -- tool gHashTag/trinity:tri/conscious, the `tri conscious` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/conscious`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":355,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2781,"rust":2809,"verilog":4020,"verilog_hir":281,"zig":3681},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 355 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/constants.t27","category":"specs/tools","name":"constants","module":"tool_trinity_tri_constants","lines":56,"bytes":3942,"description":"specs/tools/trinity/tri/constants.t27 -- tool gHashTag/trinity:tri/constants, the `tri constants` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/constants`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":358,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2778,"rust":2806,"verilog":4018,"verilog_hir":281,"zig":3678},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 358 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/cosmos.t27","category":"specs/tools","name":"cosmos","module":"tool_trinity_tri_cosmos","lines":56,"bytes":3978,"description":"specs/tools/trinity/tri/cosmos.t27 -- tool gHashTag/trinity:tri/cosmos, the `tri cosmos` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/cosmos`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":366,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2805,"rust":2845,"verilog":4051,"verilog_hir":275,"zig":3714},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 366 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/dashboard.t27","category":"specs/tools","name":"dashboard","module":"tool_trinity_tri_dashboard","lines":56,"bytes":3908,"description":"specs/tools/trinity/tri/dashboard.t27 -- tool gHashTag/trinity:tri/dashboard, the `tri dashboard` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/dashboard`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":355,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2733,"rust":2761,"verilog":3973,"verilog_hir":281,"zig":3633},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 355 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/fib.t27","category":"specs/tools","name":"fib","module":"tool_trinity_tri_fib","lines":56,"bytes":3835,"description":"specs/tools/trinity/tri/fib.t27 -- tool gHashTag/trinity:tri/fib, the `tri fib` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/fib`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":359,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2665,"rust":2717,"verilog":3917,"verilog_hir":269,"zig":3583},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 359 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/fpga.t27","category":"specs/tools","name":"fpga","module":"tool_trinity_tri_fpga","lines":56,"bytes":3973,"description":"specs/tools/trinity/tri/fpga.t27 -- tool gHashTag/trinity:tri/fpga, the `tri fpga` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/fpga`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":368,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2798,"rust":2846,"verilog":4048,"verilog_hir":271,"zig":3713},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 368 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/gematria.t27","category":"specs/tools","name":"gematria","module":"tool_trinity_tri_gematria","lines":56,"bytes":3919,"description":"specs/tools/trinity/tri/gematria.t27 -- tool gHashTag/trinity:tri/gematria, the `tri gematria` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/gematria`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":358,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2744,"rust":2776,"verilog":3986,"verilog_hir":279,"zig":3647},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 358 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/govern.t27","category":"specs/tools","name":"govern","module":"tool_trinity_tri_govern","lines":56,"bytes":3900,"description":"specs/tools/trinity/tri/govern.t27 -- tool gHashTag/trinity:tri/govern, the `tri govern` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/govern`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":355,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2728,"rust":2768,"verilog":3974,"verilog_hir":275,"zig":3637},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 355 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/hardware.t27","category":"specs/tools","name":"hardware","module":"tool_trinity_tri_hardware","lines":56,"bytes":3935,"description":"specs/tools/trinity/tri/hardware.t27 -- tool gHashTag/trinity:tri/hardware, the `tri hardware` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/hardware`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":357,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2762,"rust":2794,"verilog":4003,"verilog_hir":279,"zig":3665},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 357 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/identity.t27","category":"specs/tools","name":"identity","module":"tool_trinity_tri_identity","lines":56,"bytes":3914,"description":"specs/tools/trinity/tri/identity.t27 -- tool gHashTag/trinity:tri/identity, the `tri identity` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/identity`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":355,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2740,"rust":2772,"verilog":3982,"verilog_hir":279,"zig":3643},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 355 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/lucas.t27","category":"specs/tools","name":"lucas","module":"tool_trinity_tri_lucas","lines":56,"bytes":3849,"description":"specs/tools/trinity/tri/lucas.t27 -- tool gHashTag/trinity:tri/lucas, the `tri lucas` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/lucas`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":358,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2677,"rust":2721,"verilog":3925,"verilog_hir":273,"zig":3589},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 358 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/mesh.t27","category":"specs/tools","name":"mesh","module":"tool_trinity_tri_mesh","lines":56,"bytes":3914,"description":"specs/tools/trinity/tri/mesh.t27 -- tool gHashTag/trinity:tri/mesh, the `tri mesh` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/mesh`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":359,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2744,"rust":2792,"verilog":3993,"verilog_hir":271,"zig":3659},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 359 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/needle-check.t27","category":"specs/tools","name":"needle-check","module":"tool_trinity_tri_needle_check","lines":56,"bytes":3869,"description":"specs/tools/trinity/tri/needle-check.t27 -- tool gHashTag/trinity:tri/needle-check, the `tri needle-check` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle-check`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":356,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2691,"rust":2707,"verilog":3925,"verilog_hir":287,"zig":3582},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 356 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/needle-search.t27","category":"specs/tools","name":"needle-search","module":"tool_trinity_tri_needle_search","lines":56,"bytes":3887,"description":"specs/tools/trinity/tri/needle-search.t27 -- tool gHashTag/trinity:tri/needle-search, the `tri needle-search` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle-search`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":356,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2708,"rust":2720,"verilog":3940,"verilog_hir":289,"zig":3596},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 356 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/needle.t27","category":"specs/tools","name":"needle","module":"tool_trinity_tri_needle","lines":56,"bytes":3856,"description":"specs/tools/trinity/tri/needle.t27 -- tool gHashTag/trinity:tri/needle, the `tri needle` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":357,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2683,"rust":2723,"verilog":3929,"verilog_hir":275,"zig":3592},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 357 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/omega.t27","category":"specs/tools","name":"omega","module":"tool_trinity_tri_omega","lines":56,"bytes":3812,"description":"specs/tools/trinity/tri/omega.t27 -- tool gHashTag/trinity:tri/omega, the `tri omega` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/omega`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":354,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2641,"rust":2685,"verilog":3889,"verilog_hir":273,"zig":3553},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 354 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/particles.t27","category":"specs/tools","name":"particles","module":"tool_trinity_tri_particles","lines":56,"bytes":4001,"description":"specs/tools/trinity/tri/particles.t27 -- tool gHashTag/trinity:tri/particles, the `tri particles` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/particles`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":364,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2824,"rust":2852,"verilog":4064,"verilog_hir":281,"zig":3724},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 364 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/phi.t27","category":"specs/tools","name":"phi","module":"tool_trinity_tri_phi","lines":56,"bytes":3843,"description":"specs/tools/trinity/tri/phi.t27 -- tool gHashTag/trinity:tri/phi, the `tri phi` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/phi`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":358,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2677,"rust":2729,"verilog":3929,"verilog_hir":269,"zig":3595},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 358 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/quantum.t27","category":"specs/tools","name":"quantum","module":"tool_trinity_tri_quantum","lines":56,"bytes":3789,"description":"specs/tools/trinity/tri/quantum.t27 -- tool gHashTag/trinity:tri/quantum, the `tri quantum` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/quantum`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":354,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2616,"rust":2652,"verilog":3860,"verilog_hir":277,"zig":3522},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 354 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/reputation.t27","category":"specs/tools","name":"reputation","module":"tool_trinity_tri_reputation","lines":56,"bytes":3989,"description":"specs/tools/trinity/tri/reputation.t27 -- tool gHashTag/trinity:tri/reputation, the `tri reputation` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/reputation`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":358,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2814,"rust":2838,"verilog":4051,"verilog_hir":283,"zig":3711},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 358 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/sacred-const.t27","category":"specs/tools","name":"sacred-const","module":"tool_trinity_tri_sacred_const","lines":56,"bytes":4272,"description":"specs/tools/trinity/tri/sacred-const.t27 -- tool gHashTag/trinity:tri/sacred-const, the `tri sacred-const` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/sacred-const`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":371,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3088,"rust":3104,"verilog":4322,"verilog_hir":287,"zig":3979},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 371 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/spiral.t27","category":"specs/tools","name":"spiral","module":"tool_trinity_tri_spiral","lines":56,"bytes":3848,"description":"specs/tools/trinity/tri/spiral.t27 -- tool gHashTag/trinity:tri/spiral, the `tri spiral` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/spiral`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":356,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2678,"rust":2718,"verilog":3924,"verilog_hir":275,"zig":3587},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 356 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/swarm.t27","category":"specs/tools","name":"swarm","module":"tool_trinity_tri_swarm","lines":56,"bytes":3917,"description":"specs/tools/trinity/tri/swarm.t27 -- tool gHashTag/trinity:tri/swarm, the `tri swarm` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/swarm`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":355,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2746,"rust":2790,"verilog":3994,"verilog_hir":273,"zig":3658},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 355 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/test.t27","category":"specs/tools","name":"test","module":"tool_trinity_tri_test","lines":56,"bytes":4165,"description":"specs/tools/trinity/tri/test.t27 -- tool gHashTag/trinity:tri/test, the `tri test` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/test`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":366,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2991,"rust":3039,"verilog":4241,"verilog_hir":271,"zig":3906},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 366 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/vsa.t27","category":"specs/tools","name":"vsa","module":"tool_trinity_tri_vsa","lines":56,"bytes":3889,"description":"specs/tools/trinity/tri/vsa.t27 -- tool gHashTag/trinity:tri/vsa, the `tri vsa` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/vsa`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":360,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2718,"rust":2770,"verilog":3970,"verilog_hir":269,"zig":3636},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 360 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"specs/tools/trinity/tri/wallet.t27","category":"specs/tools","name":"wallet","module":"tool_trinity_tri_wallet","lines":56,"bytes":4000,"description":"specs/tools/trinity/tri/wallet.t27 -- tool gHashTag/trinity:tri/wallet, the `tri wallet` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/wallet`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","health":"ok","tokens":360,"nodes":79,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2828,"rust":2868,"verilog":4073,"verilog_hir":275,"zig":3737},"repo":"t27","kinds":{"Module":1,"ConstDecl":39,"ExprLiteral":30,"ExprIdentifier":9},"tags":["domain/tools","has/constants-only","health/ok","size/small","src/t27"],"summary":"Declares 39 constants. 56 lines compile to 360 tokens and 79 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tri/agent/agent_run.t27","category":"specs/tri","name":"agent_run","module":"AgentRun","lines":13,"bytes":563,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":400,"rust":66,"verilog":1047,"verilog_hir":245,"zig":203},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/agent","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/agent/agents.t27","category":"specs/tri","name":"agents","module":"Agents","lines":13,"bytes":561,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":392,"rust":66,"verilog":1043,"verilog_hir":241,"zig":201},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/agent","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/agent/autonomous_lifecycle.t27","category":"specs/tri","name":"autonomous_lifecycle","module":"TriAutonomousLifecycle","lines":64,"bytes":2147,"description":"t27/specs/","health":"warn","tokens":187,"nodes":36,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1488,"rust":1489,"verilog":3215,"verilog_hir":273,"zig":1162},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":7,"ExprIdentifier":26},"tags":["domain/agent","has/imports","has/structs","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 7 structs. 64 lines compile to 187 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/tri/agent/autonomous_universe.t27","category":"specs/tri","name":"autonomous_universe","module":"AutonomousUniverse","lines":13,"bytes":574,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":440,"rust":66,"verilog":1067,"verilog_hir":265,"zig":213},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/agent","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/agent/eternal_monitor.t27","category":"specs/tri","name":"eternal_monitor","module":"EternalMonitor","lines":63,"bytes":2019,"description":"t27/specs/","health":"ok","tokens":179,"nodes":35,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1401,"rust":1395,"verilog":2917,"verilog_hir":257,"zig":1091},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":7,"ExprIdentifier":25},"tags":["domain/agent","has/imports","has/structs","health/ok","size/small","src/t27"],"summary":"Declares 7 structs. 63 lines compile to 179 tokens and 35 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/agent/experience_hooks.t27","category":"specs/tri","name":"experience_hooks","module":"ExperienceHooks","lines":13,"bytes":570,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":428,"rust":66,"verilog":1061,"verilog_hir":259,"zig":210},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/agent","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/agent/faculty_board.t27","category":"specs/tri","name":"faculty_board","module":"FacultyBoard","lines":54,"bytes":1756,"description":"t27/specs/","health":"ok","tokens":138,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1187,"rust":1099,"verilog":2702,"verilog_hir":253,"zig":849},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":6,"ExprIdentifier":19},"tags":["domain/agent","has/imports","has/structs","health/ok","size/small","src/t27"],"summary":"Declares 6 structs. 54 lines compile to 138 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/agent/governance_agent.t27","category":"specs/tri","name":"governance_agent","module":"GovernanceAgent","lines":95,"bytes":3363,"description":"t27/specs/","health":"warn","tokens":373,"nodes":77,"depth":3,"loss":22,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2540,"rust":2830,"verilog":5901,"verilog_hir":259,"zig":2338},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":8,"ExprIdentifier":66},"tags":["domain/agent","has/imports","has/structs","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 8 structs. 95 lines compile to 373 tokens and 77 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Compiles with 22 items dropped by error recovery."},{"path":"specs/tri/agent/handoff.t27","category":"specs/tri","name":"handoff","module":"Handoff","lines":64,"bytes":2282,"description":"t27/specs/","health":"ok","tokens":187,"nodes":42,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1588,"rust":1551,"verilog":3776,"verilog_hir":243,"zig":1251},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":4,"ExprIdentifier":35},"tags":["domain/agent","has/imports","has/structs","health/ok","size/small","src/t27"],"summary":"Declares 4 structs. 64 lines compile to 187 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/agent/memory.t27","category":"specs/tri","name":"memory","module":"AgentMemory","lines":13,"bytes":566,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":412,"rust":66,"verilog":1053,"verilog_hir":251,"zig":206},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/agent","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/agent/swarm_agents.t27","category":"specs/tri","name":"swarm_agents","module":"SwarmAgents","lines":128,"bytes":3832,"description":"t27/specs/","health":"warn","tokens":450,"nodes":83,"depth":3,"loss":13,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2761,"rust":3513,"verilog":5901,"verilog_hir":251,"zig":2570},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":16,"ExprIdentifier":64},"tags":["domain/agent","has/imports","has/structs","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 16 structs. 128 lines compile to 450 tokens and 83 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Compiles with 13 items dropped by error recovery."},{"path":"specs/tri/collections/array.t27","category":"specs/tri","name":"array","module":"TriArray","lines":248,"bytes":8510,"description":"t27/specs/","health":"warn","tokens":1316,"nodes":276,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":4648,"rust":1849,"verilog":11177,"verilog_hir":782,"zig":5684},"repo":"t27","kinds":{"Module":8,"UseDecl":2,"StructDecl":2,"ExprIdentifier":60,"FnDecl":9,"ExprReturn":12,"ExprIndex":11,"ExprBinary":14,"ExprFieldAccess":12,"StmtIf":3,"ExprCall":5,"ExprLiteral":12,"StmtLocal":6,"StmtWhile":4,"StmtAssign":7,"TestBlock":26,"StmtExpr":83},"tags":["domain/collections","has/functions","has/imports","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/t27"],"summary":"Declares 9 functions and 2 structs. Carries 26 tests. 248 lines compile to 1,316 tokens and 276 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 10.9 KB. Compiles with 4 type errors."},{"path":"specs/tri/collections/bitmap.t27","category":"specs/tri","name":"bitmap","module":"TriBitmap","lines":126,"bytes":4106,"description":"t27/specs/","health":"ok","tokens":338,"nodes":56,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2494,"rust":787,"verilog":4783,"verilog_hir":689,"zig":1990},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":10,"TestBlock":10,"StmtExpr":30},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 10 functions and 1 struct. Carries 10 tests. 126 lines compile to 338 tokens and 56 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.7 KB. Clean through every layer."},{"path":"specs/tri/collections/bitset.t27","category":"specs/tri","name":"bitset","module":"TriBitset","lines":97,"bytes":3292,"description":"t27/specs/","health":"warn","tokens":257,"nodes":42,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2030,"rust":577,"verilog":3885,"verilog_hir":557,"zig":1413},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":6,"TestBlock":8,"StmtExpr":21},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 8 tests. 97 lines compile to 257 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Compiles with 1 item dropped by error recovery."},{"path":"specs/tri/collections/bitvector.t27","category":"specs/tri","name":"bitvector","module":"TriBitvector","lines":106,"bytes":3500,"description":"t27/specs/","health":"ok","tokens":274,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2170,"rust":647,"verilog":4124,"verilog_hir":604,"zig":1579},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":8,"TestBlock":8,"StmtExpr":24},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 1 struct. Carries 8 tests. 106 lines compile to 274 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tri/collections/btree.t27","category":"specs/tri","name":"btree","module":"TriBtree","lines":63,"bytes":2400,"description":"t27/specs/","health":"ok","tokens":173,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1583,"rust":567,"verilog":2854,"verilog_hir":415,"zig":1046},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 63 lines compile to 173 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/circular_buffer.t27","category":"specs/tri","name":"circular_buffer","module":"TriCircularBuffer","lines":79,"bytes":2932,"description":"t27/specs/","health":"ok","tokens":203,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1940,"rust":613,"verilog":3483,"verilog_hir":511,"zig":1249},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 5 tests. 79 lines compile to 203 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tri/collections/context.t27","category":"specs/tri","name":"context","module":"TriContext","lines":13,"bytes":566,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":408,"rust":66,"verilog":1051,"verilog_hir":249,"zig":205},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/collections","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/collections/deque.t27","category":"specs/tri","name":"deque","module":"TriDeque","lines":89,"bytes":3167,"description":"t27/specs/","health":"ok","tokens":234,"nodes":39,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2016,"rust":643,"verilog":3749,"verilog_hir":546,"zig":1400},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 89 lines compile to 234 tokens and 39 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/collections/either.t27","category":"specs/tri","name":"either","module":"TriEither","lines":77,"bytes":2811,"description":"t27/specs/","health":"ok","tokens":205,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1778,"rust":502,"verilog":3301,"verilog_hir":497,"zig":1218},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 5 tests. 77 lines compile to 205 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/collections/interval.t27","category":"specs/tri","name":"interval","module":"TriInterval","lines":61,"bytes":2335,"description":"t27/specs/","health":"ok","tokens":139,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1565,"rust":508,"verilog":2820,"verilog_hir":428,"zig":873},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 61 lines compile to 139 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/linked_list.t27","category":"specs/tri","name":"linked_list","module":"TriLinkedList","lines":216,"bytes":7281,"description":"t27/specs/","health":"ok","tokens":922,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1133,"rust":471,"verilog":1928,"verilog_hir":290,"zig":516},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":1},"tags":["domain/collections","has/functions","has/imports","has/structs","health/ok","size/medium","src/t27"],"summary":"Declares 1 function and 2 structs. 216 lines compile to 922 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"specs/tri/collections/list.t27","category":"specs/tri","name":"list","module":"TriList","lines":97,"bytes":3259,"description":"t27/specs/","health":"ok","tokens":263,"nodes":42,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1988,"rust":589,"verilog":3812,"verilog_hir":554,"zig":1478},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":7,"TestBlock":7,"StmtExpr":21},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 1 struct. Carries 7 tests. 97 lines compile to 263 tokens and 42 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/collections/lockfree_stack.t27","category":"specs/tri","name":"lockfree_stack","module":"TriLockfreeStack","lines":60,"bytes":2302,"description":"t27/specs/","health":"ok","tokens":132,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1554,"rust":481,"verilog":2713,"verilog_hir":393,"zig":829},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":3,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 60 lines compile to 132 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/collections/lru.t27","category":"specs/tri","name":"lru","module":"TriLru","lines":57,"bytes":2278,"description":"t27/specs/","health":"ok","tokens":144,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1489,"rust":409,"verilog":2647,"verilog_hir":409,"zig":889},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 57 lines compile to 144 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/collections/lru_cache.t27","category":"specs/tri","name":"lru_cache","module":"TriLruCache","lines":68,"bytes":2520,"description":"t27/specs/","health":"ok","tokens":167,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1656,"rust":649,"verilog":3037,"verilog_hir":419,"zig":1078},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":11,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 68 lines compile to 167 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/collections/map.t27","category":"specs/tri","name":"map","module":"TriMap","lines":86,"bytes":2975,"description":"t27/specs/","health":"ok","tokens":242,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1835,"rust":516,"verilog":3496,"verilog_hir":518,"zig":1331},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 86 lines compile to 242 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tri/collections/maybe.t27","category":"specs/tri","name":"maybe","module":"TriMaybe","lines":66,"bytes":2478,"description":"t27/specs/","health":"ok","tokens":166,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1596,"rust":420,"verilog":2894,"verilog_hir":478,"zig":993},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 66 lines compile to 166 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/namespace.t27","category":"specs/tri","name":"namespace","module":"TriNamespace","lines":30,"bytes":1196,"description":"t27/specs/","health":"ok","tokens":58,"nodes":12,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":726,"rust":389,"verilog":1689,"verilog_hir":253,"zig":412},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7},"tags":["domain/collections","has/imports","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 2 structs. 30 lines compile to 58 tokens and 12 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Clean through every layer."},{"path":"specs/tri/collections/option.t27","category":"specs/tri","name":"option","module":"TriOption","lines":66,"bytes":2491,"description":"t27/specs/","health":"ok","tokens":160,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1603,"rust":414,"verilog":2954,"verilog_hir":456,"zig":980},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 66 lines compile to 160 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/collections/priority_queue.t27","category":"specs/tri","name":"priority_queue","module":"TriPriorityQueue","lines":87,"bytes":3144,"description":"t27/specs/","health":"ok","tokens":226,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2041,"rust":623,"verilog":3662,"verilog_hir":549,"zig":1371},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 87 lines compile to 226 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/collections/queue.t27","category":"specs/tri","name":"queue","module":"TriQueue","lines":76,"bytes":2763,"description":"t27/specs/","health":"ok","tokens":200,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1754,"rust":482,"verilog":3257,"verilog_hir":465,"zig":1165},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 5 tests. 76 lines compile to 200 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/collections/result.t27","category":"specs/tri","name":"result","module":"TriResult","lines":67,"bytes":2523,"description":"t27/specs/","health":"ok","tokens":170,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1618,"rust":436,"verilog":2983,"verilog_hir":487,"zig":1053},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 67 lines compile to 170 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/collections/ring_buffer.t27","category":"specs/tri","name":"ring_buffer","module":"TriRing","lines":170,"bytes":6768,"description":"t27/specs/","health":"ok","tokens":1180,"nodes":176,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3189,"rust":903,"verilog":7468,"verilog_hir":738,"zig":4773},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":1,"ExprIdentifier":29,"FnDecl":5,"StmtLocal":2,"StmtAssign":4,"ExprCall":6,"ExprReturn":7,"StmtIf":2,"ExprLiteral":5,"ExprIndex":2,"ExprFieldAccess":15,"ExprBinary":8,"TestBlock":17,"StmtExpr":68},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 17 tests. 170 lines compile to 1,180 tokens and 176 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Clean through every layer."},{"path":"specs/tri/collections/set.t27","category":"specs/tri","name":"set","module":"TriSet","lines":65,"bytes":2509,"description":"t27/specs/","health":"ok","tokens":164,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1627,"rust":433,"verilog":2879,"verilog_hir":476,"zig":1001},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 164 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/skip_list.t27","category":"specs/tri","name":"skip_list","module":"TriSkipList","lines":63,"bytes":2424,"description":"t27/specs/","health":"ok","tokens":164,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1618,"rust":572,"verilog":2885,"verilog_hir":425,"zig":1022},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 63 lines compile to 164 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/stack.t27","category":"specs/tri","name":"stack","module":"TriStack","lines":75,"bytes":2714,"description":"t27/specs/","health":"ok","tokens":194,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1719,"rust":453,"verilog":3174,"verilog_hir":458,"zig":1132},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 5 tests. 75 lines compile to 194 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/collections/state.t27","category":"specs/tri","name":"state","module":"TriState","lines":65,"bytes":2422,"description":"t27/specs/","health":"ok","tokens":159,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1552,"rust":386,"verilog":2854,"verilog_hir":475,"zig":1004},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 159 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/collections/tuple.t27","category":"specs/tri","name":"tuple","module":"TriTuple","lines":72,"bytes":2557,"description":"t27/specs/","health":"ok","tokens":193,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1625,"rust":538,"verilog":3055,"verilog_hir":443,"zig":1162},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 72 lines compile to 193 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/collections/variant.t27","category":"specs/tri","name":"variant","module":"TriVariant","lines":56,"bytes":2257,"description":"t27/specs/","health":"ok","tokens":136,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1495,"rust":384,"verilog":2645,"verilog_hir":420,"zig":850},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 136 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/crypto/base32.t27","category":"specs/tri","name":"base32","module":"TriBase32","lines":56,"bytes":2229,"description":"t27/specs/","health":"ok","tokens":121,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1474,"rust":371,"verilog":2667,"verilog_hir":392,"zig":784},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 121 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/crypto/base64.t27","category":"specs/tri","name":"base64","module":"TriBase64","lines":86,"bytes":3070,"description":"t27/specs/","health":"ok","tokens":211,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1945,"rust":558,"verilog":3684,"verilog_hir":554,"zig":1295},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 86 lines compile to 211 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/crypto/crypto.t27","category":"specs/tri","name":"crypto","module":"TriCrypto","lines":56,"bytes":2326,"description":"t27/specs/","health":"ok","tokens":135,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1544,"rust":417,"verilog":2734,"verilog_hir":460,"zig":847},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 135 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/crypto/ecc.t27","category":"specs/tri","name":"ecc","module":"TriEcc","lines":62,"bytes":2424,"description":"t27/specs/","health":"ok","tokens":144,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1587,"rust":534,"verilog":2841,"verilog_hir":388,"zig":901},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 62 lines compile to 144 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/crypto/hex.t27","category":"specs/tri","name":"hex","module":"TriHex","lines":65,"bytes":2455,"description":"t27/specs/","health":"ok","tokens":144,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1571,"rust":389,"verilog":2938,"verilog_hir":460,"zig":900},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 144 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/crypto/hmac.t27","category":"specs/tri","name":"hmac","module":"TriHmac","lines":56,"bytes":2236,"description":"t27/specs/","health":"ok","tokens":129,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1447,"rust":364,"verilog":2614,"verilog_hir":410,"zig":783},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 129 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/crypto/reed_solomon.t27","category":"specs/tri","name":"reed_solomon","module":"TriReedSolomon","lines":46,"bytes":2043,"description":"t27/specs/","health":"ok","tokens":98,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1380,"rust":338,"verilog":2387,"verilog_hir":392,"zig":660},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 98 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tri/crypto/rsa.t27","category":"specs/tri","name":"rsa","module":"TriRsa","lines":58,"bytes":2350,"description":"t27/specs/","health":"ok","tokens":133,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1587,"rust":440,"verilog":2835,"verilog_hir":459,"zig":876},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/crypto","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 58 lines compile to 133 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/crypto/sha256.t27","category":"specs/tri","name":"sha256","module":"TriSha256","lines":235,"bytes":8773,"description":"t27/specs/","health":"ok","tokens":1747,"nodes":756,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6832,"rust":3357,"verilog":11121,"verilog_hir":1928,"zig":6242},"repo":"t27","kinds":{"Module":10,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":213,"StructDecl":1,"FnDecl":11,"ExprReturn":9,"ExprStructLit":1,"ExprFieldAccess":57,"ExprBinary":128,"ExprArrayLiteral":3,"ExprLiteral":121,"StmtLocal":22,"StmtWhile":7,"ExprIf":1,"StmtAssign":43,"ExprIndex":48,"StmtIf":2,"StmtExpr":22,"ExprCall":43,"ExprUnary":3,"TestBlock":7},"tags":["domain/crypto","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 11 functions, 1 struct and 2 constants. Carries 7 tests. 235 lines compile to 1,747 tokens and 756 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 10.9 KB. Clean through every layer."},{"path":"specs/tri/encoding/bson.t27","category":"specs/tri","name":"bson","module":"TriBson","lines":48,"bytes":2106,"description":"t27/specs/","health":"ok","tokens":120,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1716,"rust":524,"verilog":2851,"verilog_hir":377,"zig":774},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":11,"StructDecl":1,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/encoding","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 enum. Carries 2 tests. 48 lines compile to 120 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/encoding/csv.t27","category":"specs/tri","name":"csv","module":"TriCsv","lines":70,"bytes":2580,"description":"t27/specs/","health":"ok","tokens":171,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1675,"rust":561,"verilog":3028,"verilog_hir":445,"zig":1021},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 70 lines compile to 171 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/encoding/html.t27","category":"specs/tri","name":"html","module":"TriHtml","lines":48,"bytes":2107,"description":"t27/specs/","health":"ok","tokens":102,"nodes":18,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1435,"rust":428,"verilog":2515,"verilog_hir":383,"zig":734},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 48 lines compile to 102 tokens and 18 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tri/encoding/json.t27","category":"specs/tri","name":"json","module":"TriJson","lines":67,"bytes":2479,"description":"t27/specs/","health":"ok","tokens":170,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1853,"rust":770,"verilog":3131,"verilog_hir":442,"zig":1006},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":3,"EnumDecl":1,"EnumVariant":6,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/encoding","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 3 structs and 1 enum. Carries 3 tests. 67 lines compile to 170 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/encoding/markup.t27","category":"specs/tri","name":"markup","module":"TriMarkup","lines":47,"bytes":2059,"description":"t27/specs/","health":"ok","tokens":108,"nodes":17,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1402,"rust":390,"verilog":2447,"verilog_hir":385,"zig":700},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 47 lines compile to 108 tokens and 17 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/encoding/mime.t27","category":"specs/tri","name":"mime","module":"TriMime","lines":48,"bytes":2041,"description":"t27/specs/","health":"ok","tokens":111,"nodes":18,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1377,"rust":392,"verilog":2412,"verilog_hir":375,"zig":687},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 48 lines compile to 111 tokens and 18 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/encoding/msgpack.t27","category":"specs/tri","name":"msgpack","module":"TriMsgpack","lines":56,"bytes":2339,"description":"t27/specs/","health":"ok","tokens":156,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1901,"rust":741,"verilog":3296,"verilog_hir":383,"zig":956},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":9,"StructDecl":1,"ExprIdentifier":8,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/encoding","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions, 1 struct and 1 enum. Carries 2 tests. 56 lines compile to 156 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/encoding/xml.t27","category":"specs/tri","name":"xml","module":"TriXml","lines":48,"bytes":2073,"description":"t27/specs/","health":"ok","tokens":102,"nodes":18,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1397,"rust":411,"verilog":2444,"verilog_hir":373,"zig":708},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/encoding","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 48 lines compile to 102 tokens and 18 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/graph/bellman_ford.t27","category":"specs/tri","name":"bellman_ford","module":"TriBellmanFord","lines":37,"bytes":1792,"description":"t27/specs/","health":"ok","tokens":67,"nodes":12,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1244,"rust":277,"verilog":2130,"verilog_hir":331,"zig":496},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 37 lines compile to 67 tokens and 12 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/tri/graph/dijkstra.t27","category":"specs/tri","name":"dijkstra","module":"TriDijkstra","lines":37,"bytes":1826,"description":"t27/specs/","health":"ok","tokens":71,"nodes":12,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1266,"rust":318,"verilog":2209,"verilog_hir":325,"zig":531},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 37 lines compile to 71 tokens and 12 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Clean through every layer."},{"path":"specs/tri/graph/disjoint_set.t27","category":"specs/tri","name":"disjoint_set","module":"TriDisjointSet","lines":67,"bytes":2576,"description":"t27/specs/","health":"ok","tokens":163,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1681,"rust":471,"verilog":3023,"verilog_hir":462,"zig":998},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 67 lines compile to 163 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/graph/graph.t27","category":"specs/tri","name":"graph","module":"TriGraph","lines":61,"bytes":2378,"description":"t27/specs/","health":"ok","tokens":150,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1565,"rust":521,"verilog":2782,"verilog_hir":418,"zig":934},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 61 lines compile to 150 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/graph/graph_bfs.t27","category":"specs/tri","name":"graph_bfs","module":"TriGraphBfs","lines":72,"bytes":2701,"description":"t27/specs/","health":"ok","tokens":182,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1787,"rust":652,"verilog":3165,"verilog_hir":468,"zig":1126},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 72 lines compile to 182 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/graph/graph_dfs.t27","category":"specs/tri","name":"graph_dfs","module":"TriGraphDfs","lines":37,"bytes":1780,"description":"t27/specs/","health":"ok","tokens":70,"nodes":12,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1250,"rust":312,"verilog":2150,"verilog_hir":320,"zig":520},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 37 lines compile to 70 tokens and 12 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/tri/graph/prims_mst.t27","category":"specs/tri","name":"prims_mst","module":"TriPrimsMst","lines":37,"bytes":1767,"description":"t27/specs/","health":"ok","tokens":68,"nodes":12,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1234,"rust":299,"verilog":2127,"verilog_hir":315,"zig":505},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function and 1 struct. Carries 1 test. 37 lines compile to 68 tokens and 12 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/tri/graph/topological_sort.t27","category":"specs/tri","name":"topological_sort","module":"TriTopological","lines":46,"bytes":2054,"description":"t27/specs/","health":"ok","tokens":95,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1396,"rust":342,"verilog":2406,"verilog_hir":393,"zig":668},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/graph","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 95 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tri/io/compress.t27","category":"specs/tri","name":"compress","module":"TriCompress","lines":46,"bytes":2038,"description":"t27/specs/","health":"ok","tokens":96,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1390,"rust":343,"verilog":2426,"verilog_hir":397,"zig":673},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 96 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/io/filesystem.t27","category":"specs/tri","name":"filesystem","module":"TriFilesystem","lines":103,"bytes":3562,"description":"t27/specs/","health":"ok","tokens":290,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2260,"rust":839,"verilog":4141,"verilog_hir":590,"zig":1640},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":7,"TestBlock":7,"StmtExpr":21},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 2 structs. Carries 7 tests. 103 lines compile to 290 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"specs/tri/io/fs.t27","category":"specs/tri","name":"fs","module":"TriFs","lines":73,"bytes":2647,"description":"t27/specs/","health":"ok","tokens":175,"nodes":31,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1703,"rust":609,"verilog":3171,"verilog_hir":452,"zig":1073},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 73 lines compile to 175 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/io/io.t27","category":"specs/tri","name":"io","module":"TriIo","lines":66,"bytes":2440,"description":"t27/specs/","health":"ok","tokens":163,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1539,"rust":395,"verilog":2883,"verilog_hir":441,"zig":974},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 66 lines compile to 163 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/io/reader.t27","category":"specs/tri","name":"reader","module":"TriReader","lines":65,"bytes":2460,"description":"t27/specs/","health":"ok","tokens":164,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1566,"rust":389,"verilog":2857,"verilog_hir":447,"zig":993},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 65 lines compile to 164 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/io/writer.t27","category":"specs/tri","name":"writer","module":"TriWriter","lines":66,"bytes":2486,"description":"t27/specs/","health":"ok","tokens":166,"nodes":26,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1589,"rust":410,"verilog":2932,"verilog_hir":513,"zig":1020},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 66 lines compile to 166 tokens and 26 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/io/zip.t27","category":"specs/tri","name":"zip","module":"TriZipper","lines":77,"bytes":2847,"description":"t27/specs/","health":"ok","tokens":203,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1821,"rust":525,"verilog":3330,"verilog_hir":471,"zig":1219},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/storage","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 1 struct. Carries 5 tests. 77 lines compile to 203 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/math/bezier.t27","category":"specs/tri","name":"bezier","module":"TriBezier","lines":125,"bytes":5753,"description":"t27/specs/","health":"ok","tokens":1110,"nodes":239,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3467,"rust":1115,"verilog":6892,"verilog_hir":429,"zig":4229},"repo":"t27","kinds":{"Module":6,"UseDecl":2,"StructDecl":2,"ExprIdentifier":53,"FnDecl":3,"StmtIf":2,"ExprBinary":22,"ExprFieldAccess":34,"ExprLiteral":21,"ExprReturn":5,"ExprIndex":8,"StmtLocal":13,"StmtFor":3,"ExprArrayLiteral":4,"StmtAssign":3,"ExprCall":9,"ExprStructLit":8,"ExprUnary":3,"TestBlock":8,"StmtExpr":30},"tags":["domain/math","has/functions","has/imports","has/loops","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 8 tests. 125 lines compile to 1,110 tokens and 239 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Clean through every layer."},{"path":"specs/tri/math/constants.t27","category":"specs/tri","name":"constants","module":"TriConstants","lines":265,"bytes":8854,"description":"t27/specs/","health":"ok","tokens":913,"nodes":183,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4676,"rust":1557,"verilog":11875,"verilog_hir":778,"zig":5585},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":10,"FnDecl":12,"ExprReturn":12,"ExprLiteral":9,"ExprCall":11,"ExprStructLit":2,"ExprFieldAccess":10,"TestBlock":29,"StmtExpr":83},"tags":["domain/math","has/functions","has/imports","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions and 2 structs. Carries 29 tests. 265 lines compile to 913 tokens and 183 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 11.6 KB. Clean through every layer."},{"path":"specs/tri/math/math.t27","category":"specs/tri","name":"math","module":"TriMath","lines":13,"bytes":563,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":202},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/math","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/math/matrix.t27","category":"specs/tri","name":"matrix","module":"TriMatrix","lines":98,"bytes":3362,"description":"t27/specs/","health":"ok","tokens":264,"nodes":43,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2111,"rust":668,"verilog":3938,"verilog_hir":597,"zig":1512},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":7,"TestBlock":7,"StmtExpr":21},"tags":["domain/math","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 1 struct. Carries 7 tests. 98 lines compile to 264 tokens and 43 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/tri/math/measurement.t27","category":"specs/tri","name":"measurement","module":"TriMeasurement","lines":13,"bytes":570,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":424,"rust":66,"verilog":1059,"verilog_hir":257,"zig":209},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/math","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/math/polynomial.t27","category":"specs/tri","name":"polynomial","module":"TriPolynomial","lines":86,"bytes":3077,"description":"t27/specs/","health":"ok","tokens":222,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1968,"rust":580,"verilog":3577,"verilog_hir":567,"zig":1323},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/math","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 86 lines compile to 222 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/math/probability.t27","category":"specs/tri","name":"probability","module":"TriProbability","lines":67,"bytes":2298,"description":"t27/specs/","health":"ok","tokens":165,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1572,"rust":342,"verilog":3045,"verilog_hir":569,"zig":1063},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/math","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions. Carries 5 tests. 67 lines compile to 165 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/math/statistics.t27","category":"specs/tri","name":"statistics","module":"TriStatistics","lines":77,"bytes":2651,"description":"t27/specs/","health":"ok","tokens":211,"nodes":33,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1786,"rust":455,"verilog":3354,"verilog_hir":583,"zig":1285},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/math","has/functions","has/imports","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions. Carries 6 tests. 77 lines compile to 211 tokens and 33 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/net/async.t27","category":"specs/tri","name":"async","module":"TriAsync","lines":71,"bytes":2635,"description":"t27/specs/","health":"ok","tokens":182,"nodes":29,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1708,"rust":571,"verilog":3093,"verilog_hir":461,"zig":1139},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 71 lines compile to 182 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/net/async_stream.t27","category":"specs/tri","name":"async_stream","module":"TriAsyncStream","lines":60,"bytes":2329,"description":"t27/specs/","health":"ok","tokens":150,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1728,"rust":524,"verilog":2930,"verilog_hir":426,"zig":932},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"EnumDecl":1,"EnumVariant":3,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/network","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 enum. Carries 3 tests. 60 lines compile to 150 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/net/channel.t27","category":"specs/tri","name":"channel","module":"TriChannel","lines":67,"bytes":2589,"description":"t27/specs/","health":"ok","tokens":167,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1698,"rust":485,"verilog":3056,"verilog_hir":465,"zig":1083},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 67 lines compile to 167 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/net/cloud.t27","category":"specs/tri","name":"cloud","module":"TriCloud","lines":13,"bytes":564,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":400,"rust":66,"verilog":1047,"verilog_hir":245,"zig":203},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/network","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/net/http.t27","category":"specs/tri","name":"http","module":"TriHttp","lines":109,"bytes":3756,"description":"t27/specs/","health":"ok","tokens":311,"nodes":50,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2438,"rust":1005,"verilog":4510,"verilog_hir":652,"zig":1786},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":9,"FnDecl":7,"TestBlock":7,"StmtExpr":21},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 7 functions and 3 structs. Carries 7 tests. 109 lines compile to 311 tokens and 50 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.4 KB. Clean through every layer."},{"path":"specs/tri/net/net.t27","category":"specs/tri","name":"net","module":"TriNet","lines":61,"bytes":2393,"description":"t27/specs/","health":"ok","tokens":143,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1586,"rust":520,"verilog":2864,"verilog_hir":427,"zig":895},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 61 lines compile to 143 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/net/url.t27","category":"specs/tri","name":"url","module":"TriUrl","lines":70,"bytes":2638,"description":"t27/specs/","health":"ok","tokens":191,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1712,"rust":570,"verilog":3106,"verilog_hir":516,"zig":1072},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":6,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/network","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 70 lines compile to 191 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/batch_runner.t27","category":"specs/tri","name":"batch_runner","module":"BatchRunner","lines":111,"bytes":3926,"description":"t27/specs/","health":"ok","tokens":285,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2696,"rust":1376,"verilog":3712,"verilog_hir":251,"zig":2597},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":7,"ExprIdentifier":25,"InvariantBlock":11},"tags":["domain/pipeline","has/imports","has/invariants","has/structs","health/ok","size/small","src/t27"],"summary":"Declares 7 structs. Carries 11 invariants. 111 lines compile to 285 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/pipeline/builder.t27","category":"specs/tri","name":"builder","module":"TriBuilder","lines":107,"bytes":3641,"description":"t27/specs/","health":"ok","tokens":301,"nodes":47,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2282,"rust":713,"verilog":4248,"verilog_hir":618,"zig":1734},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":8,"TestBlock":8,"StmtExpr":24},"tags":["domain/pipeline","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 1 struct. Carries 8 tests. 107 lines compile to 301 tokens and 47 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/pipeline/cloud_orchestrator.t27","category":"specs/tri","name":"cloud_orchestrator","module":"CloudOrchestrator","lines":13,"bytes":573,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":436,"rust":66,"verilog":1065,"verilog_hir":263,"zig":212},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/pipeline","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/codegen.t27","category":"specs/tri","name":"codegen","module":"TestSpec","lines":24,"bytes":1088,"description":"t27/specs/","health":"ok","tokens":39,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":635,"rust":244,"verilog":1461,"verilog_hir":245,"zig":319},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4},"tags":["domain/pipeline","has/imports","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 24 lines compile to 39 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"specs/tri/pipeline/pipeline.t27","category":"specs/tri","name":"pipeline","module":"TriPipeline","lines":13,"bytes":567,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":412,"rust":66,"verilog":1053,"verilog_hir":251,"zig":206},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/pipeline","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/pipeline_parallel.t27","category":"specs/tri","name":"pipeline_parallel","module":"TriPipelineParallel","lines":47,"bytes":1929,"description":"t27/specs/","health":"warn","tokens":159,"nodes":29,"depth":3,"loss":8,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1438,"rust":1039,"verilog":2608,"verilog_hir":267,"zig":882},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":5,"StructDecl":3,"ExprIdentifier":17},"tags":["domain/pipeline","has/enums","has/imports","has/structs","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 3 structs and 1 enum. 47 lines compile to 159 tokens and 29 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 8 items dropped by error recovery."},{"path":"specs/tri/pipeline/spec_parser.t27","category":"specs/tri","name":"spec_parser","module":"TriSpecParser","lines":13,"bytes":569,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":420,"rust":66,"verilog":1057,"verilog_hir":255,"zig":208},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/pipeline","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/spec_writer.t27","category":"specs/tri","name":"spec_writer","module":"SpecWriter","lines":43,"bytes":1561,"description":"t27/specs/","health":"ok","tokens":127,"nodes":19,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1011,"rust":902,"verilog":2033,"verilog_hir":249,"zig":700},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":5,"ExprIdentifier":11},"tags":["domain/pipeline","has/imports","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 5 structs. 43 lines compile to 127 tokens and 19 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/workflow.t27","category":"specs/tri","name":"workflow","module":"String","lines":28,"bytes":1203,"description":"t27/specs/","health":"ok","tokens":58,"nodes":10,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":724,"rust":409,"verilog":1559,"verilog_hir":241,"zig":418},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5},"tags":["domain/pipeline","has/imports","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 2 structs. 28 lines compile to 58 tokens and 10 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Clean through every layer."},{"path":"specs/tri/pipeline/workflow_executor.t27","category":"specs/tri","name":"workflow_executor","module":"WorkflowExecutor","lines":13,"bytes":572,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":432,"rust":66,"verilog":1063,"verilog_hir":261,"zig":211},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/pipeline","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/pipeline/workflow_parser.t27","category":"specs/tri","name":"workflow_parser","module":"WorkflowParser","lines":13,"bytes":570,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":424,"rust":66,"verilog":1059,"verilog_hir":257,"zig":209},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/pipeline","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/search/aho_corasick.t27","category":"specs/tri","name":"aho_corasick","module":"TriAhoCorasick","lines":74,"bytes":2759,"description":"t27/specs/","health":"ok","tokens":187,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1846,"rust":706,"verilog":3255,"verilog_hir":467,"zig":1152},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 74 lines compile to 187 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/search/bloom_filter.t27","category":"specs/tri","name":"bloom_filter","module":"TriBloomFilter","lines":57,"bytes":2355,"description":"t27/specs/","health":"ok","tokens":130,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1548,"rust":415,"verilog":2731,"verilog_hir":427,"zig":843},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 57 lines compile to 130 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/search/boyer_moore.t27","category":"specs/tri","name":"boyer_moore","module":"TriBoyerMoore","lines":46,"bytes":2071,"description":"t27/specs/","health":"ok","tokens":100,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1399,"rust":346,"verilog":2433,"verilog_hir":399,"zig":676},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 100 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/search/knuth_morris_pratt.t27","category":"specs/tri","name":"knuth_morris_pratt","module":"TriKmp","lines":46,"bytes":2057,"description":"t27/specs/","health":"ok","tokens":102,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1362,"rust":348,"verilog":2399,"verilog_hir":383,"zig":663},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 102 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tri/search/match.t27","category":"specs/tri","name":"match","module":"SearchMatch","lines":60,"bytes":2450,"description":"t27/specs/","health":"ok","tokens":149,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1622,"rust":547,"verilog":2832,"verilog_hir":473,"zig":924},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":3,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 60 lines compile to 149 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/tri/search/pattern.t27","category":"specs/tri","name":"pattern","module":"TriPattern","lines":46,"bytes":2070,"description":"t27/specs/","health":"ok","tokens":100,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1404,"rust":356,"verilog":2455,"verilog_hir":368,"zig":687},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 100 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/search/rabin_karp.t27","category":"specs/tri","name":"rabin_karp","module":"TriRabinKarp","lines":48,"bytes":2065,"description":"t27/specs/","health":"ok","tokens":103,"nodes":18,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1409,"rust":371,"verilog":2472,"verilog_hir":388,"zig":686},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 48 lines compile to 103 tokens and 18 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/search/regex.t27","category":"specs/tri","name":"regex","module":"TriRegex","lines":62,"bytes":2387,"description":"t27/specs/","health":"ok","tokens":147,"nodes":25,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1579,"rust":551,"verilog":2809,"verilog_hir":422,"zig":911},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 62 lines compile to 147 tokens and 25 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/tri/search/regex_advanced.t27","category":"specs/tri","name":"regex_advanced","module":"TriRegexAdvanced","lines":62,"bytes":2420,"description":"t27/specs/","health":"ok","tokens":150,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1798,"rust":589,"verilog":3088,"verilog_hir":437,"zig":942},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":3,"StructDecl":1,"ExprIdentifier":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 enum. Carries 3 tests. 62 lines compile to 150 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/search/search.t27","category":"specs/tri","name":"search","module":"TriSearch","lines":56,"bytes":2290,"description":"t27/specs/","health":"ok","tokens":130,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1508,"rust":397,"verilog":2707,"verilog_hir":426,"zig":821},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 130 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/sort/counting_sort.t27","category":"specs/tri","name":"counting_sort","module":"TriCountingSort","lines":27,"bytes":1280,"description":"t27/specs/","health":"ok","tokens":49,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1041,"rust":136,"verilog":1768,"verilog_hir":328,"zig":420},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 49 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/heap_sort.t27","category":"specs/tri","name":"heap_sort","module":"TriHeapSort","lines":27,"bytes":1258,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1001,"rust":124,"verilog":1757,"verilog_hir":317,"zig":398},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/insertion_sort.t27","category":"specs/tri","name":"insertion_sort","module":"TriInsertionSort","lines":27,"bytes":1262,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1021,"rust":124,"verilog":1767,"verilog_hir":327,"zig":403},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/merge_sort.t27","category":"specs/tri","name":"merge_sort","module":"TriMergeSort","lines":37,"bytes":1603,"description":"t27/specs/","health":"ok","tokens":83,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1221,"rust":215,"verilog":2111,"verilog_hir":367,"zig":616},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions. Carries 2 tests. 37 lines compile to 83 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.1 KB. Clean through every layer."},{"path":"specs/tri/sort/quick_sort.t27","category":"specs/tri","name":"quick_sort","module":"TriQuickSort","lines":37,"bytes":1518,"description":"t27/specs/","health":"ok","tokens":79,"nodes":13,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1164,"rust":188,"verilog":2087,"verilog_hir":361,"zig":574},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions. Carries 2 tests. 37 lines compile to 79 tokens and 13 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Clean through every layer."},{"path":"specs/tri/sort/radix_sort.t27","category":"specs/tri","name":"radix_sort","module":"TriRadixSort","lines":46,"bytes":2080,"description":"t27/specs/","health":"ok","tokens":99,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1428,"rust":353,"verilog":2426,"verilog_hir":367,"zig":692},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 struct. Carries 2 tests. 46 lines compile to 99 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.4 KB. Clean through every layer."},{"path":"specs/tri/sort/selection_sort.t27","category":"specs/tri","name":"selection_sort","module":"TriSelectionSort","lines":27,"bytes":1247,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1021,"rust":124,"verilog":1767,"verilog_hir":327,"zig":403},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/shell_sort.t27","category":"specs/tri","name":"shell_sort","module":"TriShellSort","lines":27,"bytes":1257,"description":"t27/specs/","health":"ok","tokens":47,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1005,"rust":124,"verilog":1759,"verilog_hir":319,"zig":399},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 47 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/sort/sort.t27","category":"specs/tri","name":"sort","module":"TriSort","lines":45,"bytes":1969,"description":"t27/specs/","health":"ok","tokens":97,"nodes":16,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1342,"rust":329,"verilog":2309,"verilog_hir":347,"zig":626},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":2,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/collections","has/enums","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 2 functions and 1 enum. Carries 2 tests. 45 lines compile to 97 tokens and 16 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"specs/tri/sort/tim_sort.t27","category":"specs/tri","name":"tim_sort","module":"TriTimSort","lines":27,"bytes":1281,"description":"t27/specs/","health":"ok","tokens":49,"nodes":8,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1021,"rust":136,"verilog":1758,"verilog_hir":318,"zig":415},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"FnDecl":1,"TestBlock":1,"StmtExpr":3},"tags":["domain/collections","has/functions","has/imports","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 1 function. Carries 1 test. 27 lines compile to 49 tokens and 8 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Clean through every layer."},{"path":"specs/tri/trees/avl_tree.t27","category":"specs/tri","name":"avl_tree","module":"TriAvlTree","lines":76,"bytes":2721,"description":"t27/specs/","health":"ok","tokens":188,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1766,"rust":661,"verilog":3294,"verilog_hir":425,"zig":1133},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":9,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 76 lines compile to 188 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/tri/trees/b_tree.t27","category":"specs/tri","name":"b_tree","module":"TriBTree","lines":74,"bytes":2724,"description":"t27/specs/","health":"ok","tokens":192,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1770,"rust":663,"verilog":3201,"verilog_hir":457,"zig":1122},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 74 lines compile to 192 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/trees/fenwick_tree.t27","category":"specs/tri","name":"fenwick_tree","module":"TriFenwick","lines":87,"bytes":3190,"description":"t27/specs/","health":"ok","tokens":229,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2038,"rust":632,"verilog":3657,"verilog_hir":540,"zig":1390},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 87 lines compile to 229 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/trees/kd_tree.t27","category":"specs/tri","name":"kd_tree","module":"TriKdTree","lines":84,"bytes":2977,"description":"t27/specs/","health":"ok","tokens":222,"nodes":37,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1934,"rust":720,"verilog":3485,"verilog_hir":496,"zig":1295},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":7,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 2 structs. Carries 5 tests. 84 lines compile to 222 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tri/trees/octree.t27","category":"specs/tri","name":"octree","module":"TriOctree","lines":84,"bytes":2905,"description":"t27/specs/","health":"ok","tokens":226,"nodes":40,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1912,"rust":896,"verilog":3522,"verilog_hir":456,"zig":1271},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":14,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 3 structs. Carries 4 tests. 84 lines compile to 226 tokens and 40 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tri/trees/quadtree.t27","category":"specs/tri","name":"quadtree","module":"TriQuadtree","lines":82,"bytes":2890,"description":"t27/specs/","health":"ok","tokens":218,"nodes":38,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1920,"rust":882,"verilog":3463,"verilog_hir":460,"zig":1264},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":12,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 3 structs. Carries 4 tests. 82 lines compile to 218 tokens and 38 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/tri/trees/red_black_tree.t27","category":"specs/tri","name":"red_black_tree","module":"TriRbTree","lines":81,"bytes":2846,"description":"t27/specs/","health":"ok","tokens":208,"nodes":38,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1955,"rust":802,"verilog":3538,"verilog_hir":423,"zig":1198},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":10,"EnumDecl":1,"EnumVariant":2,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 2 structs and 1 enum. Carries 4 tests. 81 lines compile to 208 tokens and 38 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/trees/rtree.t27","category":"specs/tri","name":"rtree","module":"TriRtree","lines":69,"bytes":2490,"description":"t27/specs/","health":"ok","tokens":168,"nodes":30,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1650,"rust":702,"verilog":3002,"verilog_hir":420,"zig":995},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":9,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 3 structs. Carries 3 tests. 69 lines compile to 168 tokens and 30 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/trees/segment_tree.t27","category":"specs/tri","name":"segment_tree","module":"TriSegmentTree","lines":67,"bytes":2606,"description":"t27/specs/","health":"ok","tokens":164,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1720,"rust":494,"verilog":3032,"verilog_hir":468,"zig":1031},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 67 lines compile to 164 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/trees/splay_tree.t27","category":"specs/tri","name":"splay_tree","module":"TriSplayTree","lines":76,"bytes":2754,"description":"t27/specs/","health":"ok","tokens":187,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1792,"rust":681,"verilog":3333,"verilog_hir":429,"zig":1155},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":9,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 76 lines compile to 187 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/trees/suffix_array.t27","category":"specs/tri","name":"suffix_array","module":"TriSuffixArray","lines":56,"bytes":2324,"description":"t27/specs/","health":"ok","tokens":129,"nodes":21,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1552,"rust":411,"verilog":2685,"verilog_hir":430,"zig":842},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 56 lines compile to 129 tokens and 21 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/trees/tree.t27","category":"specs/tri","name":"tree","module":"TriTree","lines":88,"bytes":3057,"description":"t27/specs/","health":"ok","tokens":237,"nodes":38,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1902,"rust":572,"verilog":3607,"verilog_hir":556,"zig":1373},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 1 struct. Carries 6 tests. 88 lines compile to 237 tokens and 38 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/tri/trees/trie.t27","category":"specs/tri","name":"trie","module":"TriTrie","lines":92,"bytes":3246,"description":"t27/specs/","health":"ok","tokens":260,"nodes":40,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2062,"rust":743,"verilog":3770,"verilog_hir":509,"zig":1508},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":6,"TestBlock":6,"StmtExpr":18},"tags":["domain/collections","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 6 functions and 2 structs. Carries 6 tests. 92 lines compile to 260 tokens and 40 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/tri/utils/args.t27","category":"specs/tri","name":"args","module":"TriArgs","lines":78,"bytes":2887,"description":"t27/specs/","health":"ok","tokens":215,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1903,"rust":818,"verilog":3370,"verilog_hir":471,"zig":1238},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":8,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 3 structs. Carries 4 tests. 78 lines compile to 215 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/utils/arrow_time.t27","category":"specs/tri","name":"arrow_time","module":"ArrowTime","lines":13,"bytes":564,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":404,"rust":66,"verilog":1049,"verilog_hir":247,"zig":204},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/utils","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/utils/bytes.t27","category":"specs/tri","name":"bytes","module":"TriBytes","lines":106,"bytes":3507,"description":"t27/specs/","health":"ok","tokens":273,"nodes":46,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2138,"rust":635,"verilog":4154,"verilog_hir":636,"zig":1589},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":2,"FnDecl":8,"TestBlock":8,"StmtExpr":24},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 8 functions and 1 struct. Carries 8 tests. 106 lines compile to 273 tokens and 46 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Clean through every layer."},{"path":"specs/tri/utils/color.t27","category":"specs/tri","name":"color","module":"TriColor","lines":62,"bytes":2298,"description":"t27/specs/","health":"ok","tokens":149,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1703,"rust":507,"verilog":2974,"verilog_hir":435,"zig":843},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":4,"EnumDecl":1,"EnumVariant":4,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/utils","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 1 struct and 1 enum. Carries 3 tests. 62 lines compile to 149 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/tri/utils/colors.t27","category":"specs/tri","name":"colors","module":"TriColors","lines":13,"bytes":565,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":404,"rust":66,"verilog":1049,"verilog_hir":247,"zig":204},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/utils","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/utils/config.t27","category":"specs/tri","name":"config","module":"TriConfig","lines":78,"bytes":2851,"description":"t27/specs/","health":"ok","tokens":210,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1878,"rust":803,"verilog":3403,"verilog_hir":472,"zig":1225},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":3,"ExprIdentifier":8,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 3 structs. Carries 4 tests. 78 lines compile to 210 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/utils/error.t27","category":"specs/tri","name":"error","module":"TriError","lines":21,"bytes":1041,"description":"t27/specs/","health":"ok","tokens":26,"nodes":5,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":575,"rust":169,"verilog":1288,"verilog_hir":245,"zig":255},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1},"tags":["domain/utils","has/imports","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 21 lines compile to 26 tokens and 5 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Clean through every layer."},{"path":"specs/tri/utils/exit_codes.t27","category":"specs/tri","name":"exit_codes","module":"TriExitCodes","lines":30,"bytes":1266,"description":"t27/specs/","health":"ok","tokens":73,"nodes":14,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":773,"rust":396,"verilog":1853,"verilog_hir":253,"zig":447},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":10},"tags":["domain/utils","has/imports","has/structs","health/ok","size/tiny","src/t27"],"summary":"Declares 1 struct. 30 lines compile to 73 tokens and 14 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"specs/tri/utils/help.t27","category":"specs/tri","name":"help","module":"TriHelp","lines":29,"bytes":1330,"description":"t27/specs/","health":"warn","tokens":78,"nodes":11,"depth":3,"loss":4,"tcErrors":0,"failedBackends":[],"outBytes":{"c":815,"rust":495,"verilog":1635,"verilog_hir":243,"zig":528},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":6},"tags":["domain/utils","has/imports","has/structs","health/warn","issue/dropped-content","size/tiny","src/t27"],"summary":"Declares 2 structs. 29 lines compile to 78 tokens and 11 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 4 items dropped by error recovery."},{"path":"specs/tri/utils/logger.t27","category":"specs/tri","name":"logger","module":"TriLogger","lines":66,"bytes":2480,"description":"t27/specs/","health":"ok","tokens":175,"nodes":32,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1841,"rust":726,"verilog":3191,"verilog_hir":448,"zig":1006},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"EnumDecl":1,"EnumVariant":6,"StructDecl":2,"ExprIdentifier":5,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/utils","has/enums","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions, 2 structs and 1 enum. Carries 3 tests. 66 lines compile to 175 tokens and 32 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/tri/utils/logging.t27","category":"specs/tri","name":"logging","module":"TriLogging","lines":82,"bytes":3088,"description":"t27/specs/","health":"ok","tokens":214,"nodes":35,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2008,"rust":711,"verilog":3660,"verilog_hir":597,"zig":1336},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":5,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 2 structs. Carries 5 tests. 82 lines compile to 214 tokens and 35 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/tri/utils/random.t27","category":"specs/tri","name":"random","module":"TriRandom","lines":118,"bytes":4334,"description":"t27/specs/","health":"ok","tokens":443,"nodes":132,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2776,"rust":943,"verilog":5894,"verilog_hir":722,"zig":2342},"repo":"t27","kinds":{"Module":3,"UseDecl":2,"StructDecl":1,"ExprIdentifier":30,"ConstDecl":2,"ExprLiteral":9,"FnDecl":4,"StmtLocal":5,"StmtIf":2,"ExprBinary":10,"StmtAssign":5,"ExprReturn":5,"ExprStructLit":1,"ExprFieldAccess":3,"ExprCall":8,"TestBlock":10,"StmtExpr":32},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct and 2 constants. Carries 10 tests. 118 lines compile to 443 tokens and 132 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Clean through every layer."},{"path":"specs/tri/utils/string.t27","category":"specs/tri","name":"string","module":"TriString","lines":13,"bytes":564,"description":"t27/specs/","health":"ok","tokens":15,"nodes":3,"depth":2,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":404,"rust":66,"verilog":1049,"verilog_hir":247,"zig":204},"repo":"t27","kinds":{"Module":1,"UseDecl":2},"tags":["domain/utils","has/imports","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 13 lines compile to 15 tokens and 3 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"specs/tri/utils/template.t27","category":"specs/tri","name":"template","module":"TriTemplate","lines":51,"bytes":2121,"description":"t27/specs/","health":"ok","tokens":118,"nodes":19,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1454,"rust":494,"verilog":2529,"verilog_hir":391,"zig":750},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":2,"TestBlock":2,"StmtExpr":6},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 2 functions and 2 structs. Carries 2 tests. 51 lines compile to 118 tokens and 19 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Clean through every layer."},{"path":"specs/tri/utils/terminal.t27","category":"specs/tri","name":"terminal","module":"TriTerminal","lines":59,"bytes":2284,"description":"t27/specs/","health":"ok","tokens":128,"nodes":22,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1526,"rust":450,"verilog":2699,"verilog_hir":401,"zig":812},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":2,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 2 structs. Carries 3 tests. 59 lines compile to 128 tokens and 22 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Clean through every layer."},{"path":"specs/tri/utils/text.t27","category":"specs/tri","name":"text","module":"TriText","lines":67,"bytes":2655,"description":"t27/specs/","health":"ok","tokens":169,"nodes":27,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1737,"rust":506,"verilog":3117,"verilog_hir":470,"zig":1054},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 1 struct. Carries 4 tests. 67 lines compile to 169 tokens and 27 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/utils/time.t27","category":"specs/tri","name":"time","module":"TriTime","lines":81,"bytes":2826,"description":"t27/specs/","health":"ok","tokens":194,"nodes":34,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1820,"rust":608,"verilog":3393,"verilog_hir":486,"zig":1174},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":4,"FnDecl":5,"TestBlock":5,"StmtExpr":15},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 2 structs. Carries 5 tests. 81 lines compile to 194 tokens and 34 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/tri/utils/utf8.t27","category":"specs/tri","name":"utf8","module":"TriUtf8","lines":70,"bytes":2635,"description":"t27/specs/","health":"ok","tokens":175,"nodes":28,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1709,"rust":565,"verilog":3091,"verilog_hir":468,"zig":1045},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":3,"FnDecl":4,"TestBlock":4,"StmtExpr":12},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 4 functions and 2 structs. Carries 4 tests. 70 lines compile to 175 tokens and 28 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/tri/utils/version.t27","category":"specs/tri","name":"version","module":"TriVersion","lines":59,"bytes":2339,"description":"t27/specs/","health":"ok","tokens":142,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1557,"rust":465,"verilog":2802,"verilog_hir":454,"zig":879},"repo":"t27","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":5,"FnDecl":3,"TestBlock":3,"StmtExpr":9},"tags":["domain/utils","has/functions","has/imports","has/structs","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 3 functions and 1 struct. Carries 3 tests. 59 lines compile to 142 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/trinet/etx.t27","category":"specs/trinet","name":"etx","module":"TriNetEtx","lines":119,"bytes":3661,"description":"t27/specs/trinet/etx.t27 The ETX link metric of gHashTag/tri-net, extracted as free functions. WHY THIS EXISTS. tri-net#62 mapped which of src/*.rs can become .t27 and recommended \"SELECTIVE extraction of pure logic into specs, not a wholesale rewrite\". routing.rs is marked LIKELY there. Its arithmetic is pure; what is not expressible is the shape around it -- `impl DeliveryRatio` and","health":"ok","tokens":379,"nodes":104,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2851,"rust":834,"verilog":5988,"verilog_hir":619,"zig":2365},"repo":"t27","kinds":{"Module":4,"ConstDecl":4,"ExprLiteral":10,"FnDecl":5,"StmtIf":3,"ExprBinary":14,"ExprIdentifier":20,"ExprReturn":8,"StmtLocal":1,"TestBlock":11,"StmtExpr":22,"InvariantBlock":2},"tags":["domain/other","has/functions","has/invariants","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 5 functions and 4 constants. Carries 11 tests and 2 invariants. 119 lines compile to 379 tokens and 104 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.8 KB. Clean through every layer."},{"path":"specs/trinity/build_graph.t27","category":"specs/trinity","name":"build_graph","module":"trinity_build_graph","lines":86,"bytes":9098,"description":"specs/trinity/build_graph.t27 -- the build graph of gHashTag/trinity, its pins, its profiles, its generated-file boundaries and the receipt policy of the bootstrap/fixture profile Source of truth for tools/trinity_build_receipt.py (gHashTag/t27#3565 = S03 of gHashTag/trinity#988). The graph itself -- every module build.zig names and every import edge -- is derived from the pinned tree into conformance/trinity/build_graph.json and held to what this file declares: the pinned packages and how build.zig uses them, the submodule, the profiles and","health":"ok","tokens":576,"nodes":140,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7154,"rust":6130,"verilog":9451,"verilog_hir":267,"zig":7430},"repo":"t27","kinds":{"Module":1,"ConstDecl":32,"ExprLiteral":37,"ExprIdentifier":25,"TestBlock":4,"StmtExpr":11,"ExprCall":11,"ExprBinary":11,"ExprIndex":8},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 32 constants. Carries 4 tests. 86 lines compile to 576 tokens and 140 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 9.2 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/abi.c-api.t27","category":"specs/trinity","name":"abi.c-api","module":"trinity_capability_abi_c_api","lines":50,"bytes":3474,"description":"specs/trinity/capabilities/abi.c-api.t27 -- capability trinity/abi.c-api: The C ABI of the VSA library (libtrinity-vsa, static and shared) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":193,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2147,"rust":1512,"verilog":3361,"verilog_hir":285,"zig":1955},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 193 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/agent.daemons.t27","category":"specs/trinity","name":"agent.daemons","module":"trinity_capability_agent_daemons","lines":50,"bytes":4074,"description":"specs/trinity/capabilities/agent.daemons.t27 -- capability trinity/agent.daemons: Agent runners and hooks built by default: ralph-agent, mu-agent, scholar-agent, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":229,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2716,"rust":2061,"verilog":3922,"verilog_hir":293,"zig":2514},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 229 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/agent.phi-loop.t27","category":"specs/trinity","name":"agent.phi-loop","module":"trinity_capability_agent_phi_loop","lines":50,"bytes":3211,"description":"specs/trinity/capabilities/agent.phi-loop.t27 -- capability trinity/agent.phi-loop: phi-loop: the phi cycle command-line runner One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":187,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1913,"rust":1253,"verilog":3117,"verilog_hir":295,"zig":1706},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 187 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/agent.tri-api.t27","category":"specs/trinity","name":"agent.tri-api","module":"trinity_capability_agent_tri_api","lines":50,"bytes":3388,"description":"specs/trinity/capabilities/agent.tri-api.t27 -- capability trinity/agent.tri-api: tri-api: the implemented agent loop (provider requests, streaming, tool calls) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":187,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2054,"rust":1399,"verilog":3260,"verilog_hir":293,"zig":1850},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 187 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/api.http-server.t27","category":"specs/trinity","name":"api.http-server","module":"trinity_capability_api_http_server","lines":50,"bytes":3035,"description":"specs/trinity/capabilities/api.http-server.t27 -- capability trinity/api.http-server: The unified HTTP API server (tri serve) under src/api One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":185,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1729,"rust":1064,"verilog":2931,"verilog_hir":297,"zig":1519},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 185 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/archive.legacy.t27","category":"specs/trinity","name":"archive.legacy","module":"trinity_capability_archive_legacy","lines":50,"bytes":3018,"description":"specs/trinity/capabilities/archive.legacy.t27 -- capability trinity/archive.legacy: archive/, experiments/, lab/, research/ and tapes/: retained history and demos One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":192,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1682,"rust":1022,"verilog":2886,"verilog_hir":295,"zig":1475},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 192 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/bench.suite.t27","category":"specs/trinity","name":"bench.suite","module":"trinity_capability_bench_suite","lines":50,"bytes":3401,"description":"specs/trinity/capabilities/bench.suite.t27 -- capability trinity/bench.suite: Benchmarks: bench-core, bench-compress and the benchmark tests One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":195,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2077,"rust":1432,"verilog":3287,"verilog_hir":289,"zig":1879},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 195 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/bot.tri-bot.t27","category":"specs/trinity","name":"bot.tri-bot","module":"trinity_capability_bot_tri_bot","lines":50,"bytes":3223,"description":"specs/trinity/capabilities/bot.tri-bot.t27 -- capability trinity/bot.tri-bot: tri-bot: the Telegram bot runner One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":187,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1933,"rust":1288,"verilog":3143,"verilog_hir":289,"zig":1735},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 187 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/catalog.spec-mirror.t27","category":"specs/trinity","name":"catalog.spec-mirror","module":"trinity_capability_catalog_spec_mirror","lines":50,"bytes":3597,"description":"specs/trinity/capabilities/catalog.spec-mirror.t27 -- capability trinity/catalog.spec-mirror: The vendored spec catalog and the Queen atlas under apps/website/public/t27/: a One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":188,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2266,"rust":1581,"verilog":3460,"verilog_hir":305,"zig":2617},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 188 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/catalog.world-scan.t27","category":"specs/trinity","name":"catalog.world-scan","module":"trinity_capability_catalog_world_scan","lines":50,"bytes":3529,"description":"specs/trinity/capabilities/catalog.world-scan.t27 -- capability trinity/catalog.world-scan: The GitHub scan that keeps the catalog current (scripts/discover-t27-worlds.mjs, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":188,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2197,"rust":1517,"verilog":3393,"verilog_hir":303,"zig":2551},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 188 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/cli.tri.t27","category":"specs/trinity","name":"cli.tri","module":"trinity_capability_cli_tri","lines":50,"bytes":3876,"description":"specs/trinity/capabilities/cli.tri.t27 -- capability trinity/cli.tri: The tri command-line interface of the consumer (src/tri) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":199,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2552,"rust":1927,"verilog":3770,"verilog_hir":281,"zig":2366},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 199 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/convert.b2t.t27","category":"specs/trinity","name":"convert.b2t","module":"trinity_capability_convert_b2t","lines":50,"bytes":3159,"description":"specs/trinity/capabilities/convert.b2t.t27 -- capability trinity/convert.b2t: b2t: binary and WASM to ternary conversion One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":187,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1859,"rust":1214,"verilog":3069,"verilog_hir":289,"zig":1661},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 187 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/examples.zig.t27","category":"specs/trinity","name":"examples.zig","module":"trinity_capability_examples_zig","lines":50,"bytes":3481,"description":"specs/trinity/capabilities/examples.zig.t27 -- capability trinity/examples.zig: Examples and the end-to-end test: example-memory, example-sequence, example-vm, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":197,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2139,"rust":1489,"verilog":3347,"verilog_hir":291,"zig":1938},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 197 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/ext.vscode-swe.t27","category":"specs/trinity","name":"ext.vscode-swe","module":"trinity_capability_ext_vscode_swe","lines":50,"bytes":2959,"description":"specs/trinity/capabilities/ext.vscode-swe.t27 -- capability trinity/ext.vscode-swe: The VS Code extension (vscode-trinity-swe, tools/vscode-extension) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":186,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1638,"rust":978,"verilog":2842,"verilog_hir":295,"zig":1431},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 186 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/fpga.in-repo.t27","category":"specs/trinity","name":"fpga.in-repo","module":"trinity_capability_fpga_in_repo","lines":50,"bytes":3187,"description":"specs/trinity/capabilities/fpga.in-repo.t27 -- capability trinity/fpga.in-repo: FPGA and hardware material carried in the consumer (fpga/, hardware/, fpga-netwo One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":188,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1849,"rust":1199,"verilog":3057,"verilog_hir":291,"zig":1648},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 188 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/lib.trinity.t27","category":"specs/trinity","name":"lib.trinity","module":"trinity_capability_lib_trinity","lines":50,"bytes":3710,"description":"specs/trinity/capabilities/lib.trinity.t27 -- capability trinity/lib.trinity: The trinity library facade: SDK, science, sparse, JIT and the VSA VM over the pi One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":199,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2366,"rust":1721,"verilog":3576,"verilog_hir":289,"zig":2168},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 199 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/llm.firebird.t27","category":"specs/trinity","name":"llm.firebird","module":"trinity_capability_llm_firebird","lines":50,"bytes":3386,"description":"specs/trinity/capabilities/llm.firebird.t27 -- capability trinity/llm.firebird: Firebird: BitNet LLM inference and its wasm, depin and b2t integrations One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":189,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2057,"rust":1407,"verilog":3265,"verilog_hir":291,"zig":1856},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 189 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/llm.igla-chat.t27","category":"specs/trinity","name":"llm.igla-chat","module":"trinity_capability_llm_igla_chat","lines":50,"bytes":3481,"description":"specs/trinity/capabilities/llm.igla-chat.t27 -- capability trinity/llm.igla-chat: IGLA chat front-ends: fluent, trinity-hybrid and the igla trace tests One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":199,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2150,"rust":1495,"verilog":3356,"verilog_hir":293,"zig":1946},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 199 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/mcp.needle-mcp.t27","category":"specs/trinity","name":"mcp.needle-mcp","module":"trinity_capability_mcp_needle_mcp","lines":50,"bytes":3339,"description":"specs/trinity/capabilities/mcp.needle-mcp.t27 -- capability trinity/mcp.needle-mcp: The needle MCP server (tools/mcp/needle_mcp/server.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":193,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2026,"rust":1366,"verilog":3230,"verilog_hir":295,"zig":1819},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 193 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/mcp.trinity-mcp.t27","category":"specs/trinity","name":"mcp.trinity-mcp","module":"trinity_capability_mcp_trinity_mcp","lines":50,"bytes":3873,"description":"specs/trinity/capabilities/mcp.trinity-mcp.t27 -- capability trinity/mcp.trinity-mcp: The trinity MCP server (tools/mcp/trinity_mcp/server.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":188,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2562,"rust":1897,"verilog":3764,"verilog_hir":297,"zig":2925},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 188 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/native.canvas.t27","category":"specs/trinity","name":"native.canvas","module":"trinity_capability_native_canvas","lines":50,"bytes":3238,"description":"specs/trinity/capabilities/native.canvas.t27 -- capability trinity/native.canvas: The raylib canvas: photon-demo, photon-immersive, trinity-canvas and its emscrip One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":201,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1895,"rust":1240,"verilog":3101,"verilog_hir":293,"zig":1691},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 201 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/native.node-gui.t27","category":"specs/trinity","name":"native.node-gui","module":"trinity_capability_native_node_gui","lines":50,"bytes":2975,"description":"specs/trinity/capabilities/native.node-gui.t27 -- capability trinity/native.node-gui: trinity-node-gui: the node's raylib front-end (guarded by !ci_mode) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":187,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1654,"rust":989,"verilog":2856,"verilog_hir":297,"zig":1444},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 187 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/native.queen-app.t27","category":"specs/trinity","name":"native.queen-app","module":"trinity_capability_native_queen_app","lines":50,"bytes":2912,"description":"specs/trinity/capabilities/native.queen-app.t27 -- capability trinity/native.queen-app: The native Queen application (apps/queen, Swift package Trinity.app) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1592,"rust":922,"verilog":2792,"verilog_hir":299,"zig":1379},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/node.trinity-node.t27","category":"specs/trinity","name":"node.trinity-node","module":"trinity_capability_node_trinity_node","lines":50,"bytes":3517,"description":"specs/trinity/capabilities/node.trinity-node.t27 -- capability trinity/node.trinity-node: trinity-node: the storage and network node (src/trinity_node, src/depin) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":193,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2190,"rust":1515,"verilog":3388,"verilog_hir":301,"zig":1974},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 193 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/numeric.golden-float.t27","category":"specs/trinity","name":"numeric.golden-float","module":"trinity_capability_numeric_golden_float","lines":50,"bytes":3446,"description":"specs/trinity/capabilities/numeric.golden-float.t27 -- capability trinity/numeric.golden-float: GoldenFloat numeric formats, consumed as the pinned package gHashTag/zig-golden- One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":186,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2117,"rust":1427,"verilog":3309,"verilog_hir":307,"zig":2465},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 186 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/ops.deploy-infra.t27","category":"specs/trinity","name":"ops.deploy-infra","module":"trinity_capability_ops_deploy_infra","lines":50,"bytes":3144,"description":"specs/trinity/capabilities/ops.deploy-infra.t27 -- capability trinity/ops.deploy-infra: Deployment descriptors: helm, k8s, docker, aws-f2, runtime, packages, contracts One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":198,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1805,"rust":1135,"verilog":3005,"verilog_hir":299,"zig":1592},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 198 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/ops.railway-cli.t27","category":"specs/trinity","name":"ops.railway-cli","module":"trinity_capability_ops_railway_cli","lines":50,"bytes":3306,"description":"specs/trinity/capabilities/ops.railway-cli.t27 -- capability trinity/ops.railway-cli: Railway service tools: seven railway-* commands under src/cli One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":187,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1991,"rust":1326,"verilog":3193,"verilog_hir":297,"zig":1781},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 187 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/pkg.vendored-cache.t27","category":"specs/trinity","name":"pkg.vendored-cache","module":"trinity_capability_pkg_vendored_cache","lines":50,"bytes":3074,"description":"specs/trinity/capabilities/pkg.vendored-cache.t27 -- capability trinity/pkg.vendored-cache: zig-pkg/: a committed package cache (1061 files) that build.zig.zon does not ref One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1744,"rust":1064,"verilog":2940,"verilog_hir":303,"zig":1525},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/queen.lib.t27","category":"specs/trinity","name":"queen.lib","module":"trinity_capability_queen_lib","lines":50,"bytes":3241,"description":"specs/trinity/capabilities/queen.lib.t27 -- capability trinity/queen.lib: libtrinity-queen: the Queen orchestration API (src/queen_api.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":191,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1914,"rust":1279,"verilog":3128,"verilog_hir":285,"zig":2295},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 191 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/registry.commands.t27","category":"specs/trinity","name":"registry.commands","module":"trinity_capability_registry_commands","lines":50,"bytes":3566,"description":"specs/trinity/capabilities/registry.commands.t27 -- capability trinity/registry.commands: The command registry .trinity/registry.json, exported from src/registry and drif One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":188,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2234,"rust":1559,"verilog":3432,"verilog_hir":301,"zig":2591},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 188 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/release.packaging.t27","category":"specs/trinity","name":"release.packaging","module":"trinity_capability_release_packaging","lines":50,"bytes":3061,"description":"specs/trinity/capabilities/release.packaging.t27 -- capability trinity/release.packaging: Release assembly: the release step, release/ and the npm, Homebrew, AUR and Dock One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":187,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1729,"rust":1054,"verilog":2927,"verilog_hir":301,"zig":1513},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 187 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/research.nexus-docs.t27","category":"specs/trinity","name":"research.nexus-docs","module":"trinity_capability_research_nexus_docs","lines":50,"bytes":2955,"description":"specs/trinity/capabilities/research.nexus-docs.t27 -- capability trinity/research.nexus-docs: Research notes and reports under deploy/trinity-nexus/docs One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1648,"rust":963,"verilog":2842,"verilog_hir":305,"zig":1426},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/research.programs.t27","category":"specs/trinity","name":"research.programs","module":"trinity_capability_research_programs","lines":50,"bytes":3799,"description":"specs/trinity/capabilities/research.programs.t27 -- capability trinity/research.programs: Research programs installed by default: forge, quantum, beal, arena, sota-report One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":221,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2449,"rust":1774,"verilog":3647,"verilog_hir":301,"zig":2808},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 221 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/research.unreferenced-sources.t27","category":"specs/trinity","name":"research.unreferenced-sources","module":"trinity_capability_research_unreferenced_sources","lines":50,"bytes":3407,"description":"specs/trinity/capabilities/research.unreferenced-sources.t27 -- capability trinity/research.unreferenced-sources: Source directories that no file named by build.zig reaches through @import: src/ One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":194,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2083,"rust":1348,"verilog":3257,"verilog_hir":325,"zig":1831},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 194 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/search.vsa-index.t27","category":"specs/trinity","name":"search.vsa-index","module":"trinity_capability_search_vsa_index","lines":50,"bytes":3327,"description":"specs/trinity/capabilities/search.vsa-index.t27 -- capability trinity/search.vsa-index: VSA search and query command-line tools over the trinity library One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":193,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2007,"rust":1337,"verilog":3207,"verilog_hir":299,"zig":1794},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 193 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/specs.t27-vendored-compiler.t27","category":"specs/trinity","name":"specs.t27-vendored-compiler","module":"trinity_capability_specs_t27_vendored_compiler","lines":50,"bytes":3131,"description":"specs/trinity/capabilities/specs.t27-vendored-compiler.t27 -- capability trinity/specs.t27-vendored-compiler: A second copy of t27 compiler modules and numeric specs under trinity:t27/ (34 f One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1810,"rust":1085,"verilog":2988,"verilog_hir":321,"zig":2137},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/specs.tri-corpus.t27","category":"specs/trinity","name":"specs.tri-corpus","module":"trinity_capability_specs_tri_corpus","lines":50,"bytes":3025,"description":"specs/trinity/capabilities/specs.tri-corpus.t27 -- capability trinity/specs.tri-corpus: The .tri specification corpus of the consumer (the legacy Trinity dialect) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1699,"rust":1029,"verilog":2899,"verilog_hir":299,"zig":1486},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/specs.vibee-corpus.t27","category":"specs/trinity","name":"specs.vibee-corpus","module":"trinity_capability_specs_vibee_corpus","lines":50,"bytes":3205,"description":"specs/trinity/capabilities/specs.vibee-corpus.t27 -- capability trinity/specs.vibee-corpus: The .vibee specification corpus of the consumer: 522 files under specs/tri, 1428 One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":186,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1874,"rust":1194,"verilog":3070,"verilog_hir":303,"zig":1655},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 186 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/state.trinity-dir.t27","category":"specs/trinity","name":"state.trinity-dir","module":"trinity_capability_state_trinity_dir","lines":50,"bytes":3288,"description":"specs/trinity/capabilities/state.trinity-dir.t27 -- capability trinity/state.trinity-dir: The .trinity/ harness state: registry, MCP schemas, seals, experience, queues, p One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1957,"rust":1282,"verilog":3155,"verilog_hir":301,"zig":1741},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/test.graph.t27","category":"specs/trinity","name":"test.graph","module":"trinity_capability_test_graph","lines":50,"bytes":3264,"description":"specs/trinity/capabilities/test.graph.t27 -- capability trinity/test.graph: The aggregate test step and the CI-only steps that have no artifact of their own One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":185,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1926,"rust":1286,"verilog":3138,"verilog_hir":287,"zig":2304},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 185 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/tools.scripts.t27","category":"specs/trinity","name":"tools.scripts","module":"trinity_capability_tools_scripts","lines":50,"bytes":3139,"description":"specs/trinity/capabilities/tools.scripts.t27 -- capability trinity/tools.scripts: Repository tooling: tools/scripts, tools/bin, the telegram bridge, the webarena One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":194,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1799,"rust":1144,"verilog":3005,"verilog_hir":293,"zig":1595},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 194 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.9 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/train.hslm.t27","category":"specs/trinity","name":"train.hslm","module":"trinity_capability_train_hslm","lines":50,"bytes":3309,"description":"specs/trinity/capabilities/train.hslm.t27 -- capability trinity/train.hslm: hslm-train and the vendored external/zig-hslm: the local HSLM placeholder One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":197,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1972,"rust":1332,"verilog":3184,"verilog_hir":287,"zig":2350},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 197 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/training.targets.t27","category":"specs/trinity","name":"training.targets","module":"trinity_capability_training_targets","lines":50,"bytes":3047,"description":"specs/trinity/capabilities/training.targets.t27 -- capability trinity/training.targets: Kaggle and WASM training targets (targets/, kaggle/, train-types/, train_cifar10 One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":192,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1711,"rust":1041,"verilog":2911,"verilog_hir":299,"zig":1498},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 192 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/tri27.programs.t27","category":"specs/trinity","name":"tri27.programs","module":"trinity_capability_tri27_programs","lines":50,"bytes":3225,"description":"specs/trinity/capabilities/tri27.programs.t27 -- capability trinity/tri27.programs: Ten .t27 programs under src/tri27 (sha256, matmul, mlp_forward, vsa_bind, vsa_bu One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1891,"rust":1231,"verilog":3095,"verilog_hir":295,"zig":2257},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/tri27.toolchain.t27","category":"specs/trinity","name":"tri27.toolchain","module":"trinity_capability_tri27_toolchain","lines":50,"bytes":3758,"description":"specs/trinity/capabilities/tri27.toolchain.t27 -- capability trinity/tri27.toolchain: The TRI27 assembler, emulator, loader and the Zig/Verilog emitters under src/tri One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2425,"rust":1760,"verilog":3627,"verilog_hir":297,"zig":2215},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/vibee.compiler.t27","category":"specs/trinity","name":"vibee.compiler","module":"trinity_capability_vibee_compiler","lines":50,"bytes":3703,"description":"specs/trinity/capabilities/vibee.compiler.t27 -- capability trinity/vibee.compiler: The VIBEE spec compiler (vibee gen), its self-improver, trinity-cli, claude-ui a One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":209,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2356,"rust":1696,"verilog":3560,"verilog_hir":295,"zig":2151},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 209 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/vsa.zig-hdc.t27","category":"specs/trinity","name":"vsa.zig-hdc","module":"trinity_capability_vsa_zig_hdc","lines":50,"bytes":3227,"description":"specs/trinity/capabilities/vsa.zig-hdc.t27 -- capability trinity/vsa.zig-hdc: Hyperdimensional VSA operations (bind, bundle, permute, similarity), consumed as One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1890,"rust":1245,"verilog":3100,"verilog_hir":289,"zig":2265},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/web.docsite.t27","category":"specs/trinity","name":"web.docsite","module":"trinity_capability_web_docsite","lines":50,"bytes":2981,"description":"specs/trinity/capabilities/web.docsite.t27 -- capability trinity/web.docsite: The documentation site under docs/, published with the website by deploy-docs.ym One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":186,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1643,"rust":998,"verilog":2853,"verilog_hir":289,"zig":1445},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 186 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.8 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/web.queen-web.t27","category":"specs/trinity","name":"web.queen-web","module":"trinity_capability_web_queen_web","lines":50,"bytes":2927,"description":"specs/trinity/capabilities/web.queen-web.t27 -- capability trinity/web.queen-web: The Queen web client and its proxy (apps/queen-web, apps/queen-proxy) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":186,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1602,"rust":947,"verilog":2808,"verilog_hir":293,"zig":1398},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 186 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 2.7 KB. Clean through every layer."},{"path":"specs/trinity/capabilities/web.site.t27","category":"specs/trinity","name":"web.site","module":"trinity_capability_web_site","lines":50,"bytes":3422,"description":"specs/trinity/capabilities/web.site.t27 -- capability trinity/web.site: The public site t27.ai (apps/website): explorers over the vendored spec corpus, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","health":"ok","tokens":184,"nodes":58,"depth":6,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2082,"rust":1452,"verilog":3298,"verilog_hir":283,"zig":2466},"repo":"t27","kinds":{"Module":1,"ConstDecl":18,"ExprLiteral":19,"ExprIdentifier":7,"TestBlock":1,"StmtExpr":4,"ExprCall":4,"ExprBinary":4},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 18 constants. Carries 1 test. 50 lines compile to 184 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.2 KB. Clean through every layer."},{"path":"specs/trinity/compiler_matrix.t27","category":"specs/trinity","name":"compiler_matrix","module":"trinity_compiler_matrix","lines":88,"bytes":7208,"description":"specs/trinity/compiler_matrix.t27 -- which t27 features the pinned compiler carries to a checked runtime result, on which backend, and which invalid inputs it must never accept Source of truth for tools/trinity_compiler_matrix.py (gHashTag/t27#3564 = S02 of gHashTag/trinity#988). One fixture per feature under FIXTURE_DIR; four stages kept apart in the record (declaration, generate, compile, runtime); a feature is executable only when its fixture reaches a runtime pass on the backend named here, a blocked feature must not, and a","health":"ok","tokens":625,"nodes":188,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5871,"rust":4354,"verilog":8515,"verilog_hir":275,"zig":6646},"repo":"t27","kinds":{"Module":1,"ConstDecl":25,"ExprLiteral":45,"ExprIdentifier":36,"TestBlock":6,"StmtExpr":19,"ExprCall":19,"ExprBinary":19,"ExprIndex":18},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 25 constants. Carries 6 tests. 88 lines compile to 625 tokens and 188 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Clean through every layer."},{"path":"specs/trinity/project.t27","category":"specs/trinity","name":"project","module":"trinity_project","lines":90,"bytes":5808,"description":"specs/trinity/project.t27 -- the Trinity project manifest: what gHashTag/trinity is, pinned Source of truth for the project profile (gHashTag/t27#3563 = S01 of gHashTag/trinity#988): the consumer repository and the revision inventoried, the profiles, the dispositions and evidence tags every capability card uses, the dialect and build counts the inventory measured, the dependency pins and the work packages of the epic. tools/trinity_manifest.py inventory writes conformance/trinity/inventory.json from a clean pinned checkout and tools/trinity_manifest.py","health":"ok","tokens":511,"nodes":150,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4083,"rust":2880,"verilog":6709,"verilog_hir":259,"zig":4729},"repo":"t27","kinds":{"Module":1,"ConstDecl":33,"ExprLiteral":37,"ExprIdentifier":29,"TestBlock":5,"StmtExpr":12,"ExprCall":12,"ExprBinary":16,"ExprIndex":5},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/small","src/t27"],"summary":"Declares 33 constants. Carries 5 tests. 90 lines compile to 511 tokens and 150 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"specs/ui/viewport.t27","category":"specs/ui","name":"viewport","module":"ui_viewport","lines":187,"bytes":11024,"description":"specs/ui/viewport.t27 -- the one viewport contract of the t27.ai site (breakpoints, touch targets, QA matrix) Source of truth for how the site's explorers (#/specs, #/skills, #/crons, #/agents, #/tools, #/functions) lay themselves out at a given viewport. The site (gHashTag/trinity, apps/website) vendors this file byte-identical under public/t27/files/specs/ui/ and generates src/lib/viewport.generated.ts and src/styles/viewport.generated.css from it with the real compiler (scripts/viewport-from-spec.mjs); nothing below is parsed with a regex and no","health":"ok","tokens":846,"nodes":482,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5446,"rust":1736,"verilog":8283,"verilog_hir":251,"zig":5421},"repo":"t27","kinds":{"Module":1,"ConstDecl":34,"ExprLiteral":91,"ExprIdentifier":122,"TestBlock":6,"StmtExpr":49,"ExprCall":49,"ExprBinary":83,"ExprIndex":47},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 34 constants. Carries 6 tests. 187 lines compile to 846 tokens and 482 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.1 KB. Clean through every layer."},{"path":"specs/vm/jit_semantics.t27","category":"specs/vm","name":"jit_semantics","module":"JitSemantics","lines":319,"bytes":14009,"description":"Module: JIT Compilation Semantics","health":"ok","tokens":912,"nodes":86,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6201,"rust":1766,"verilog":11669,"verilog_hir":775,"zig":6108},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":2,"ExprLiteral":2,"StructDecl":2,"ExprIdentifier":6,"EnumDecl":1,"EnumVariant":3,"FnDecl":12,"TestBlock":9,"StmtExpr":31,"InvariantBlock":6,"BenchBlock":8},"tags":["domain/compiler","has/benches","has/enums","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 12 functions, 2 structs, 1 enum and 2 constants. Carries 9 tests, 6 invariants and 8 benches. 319 lines compile to 912 tokens and 86 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"specs/vm/trinity_vm.t27","category":"specs/vm","name":"trinity_vm","module":"TrinityVsaVm","lines":163,"bytes":9209,"description":"specs/vm/trinity_vm.t27 -- the VSA VM of gHashTag/trinity src/vm.zig as it is at the pin S05 of gHashTag/trinity#988 (gHashTag/t27#3567). src/vm.zig is the VM the consumer builds and tests (test:src/vm.zig, a member of `zig build test`; the library facade re-exports it): a register machine over four hyperdimensional registers whose operations are the sixteen VSA operations of specs/vsa/trinity_compat.t27. It shares nothing with the TRI-27 machine of specs/isa/tri27_machine.t27: another opcode space, another register file, another program type.","health":"ok","tokens":1088,"nodes":395,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8734,"rust":6558,"verilog":12475,"verilog_hir":818,"zig":8616},"repo":"t27","kinds":{"Module":8,"ConstDecl":48,"ExprLiteral":116,"ExprIdentifier":47,"FnDecl":8,"StmtIf":6,"ExprBinary":49,"ExprReturn":14,"ExprUnary":8,"StmtLocal":7,"ExprCall":45,"StmtWhile":1,"StmtAssign":3,"InvariantBlock":2,"StmtExpr":26,"TestBlock":5,"ExprIndex":2},"tags":["domain/compiler","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 8 functions and 48 constants. Carries 5 tests and 2 invariants. 163 lines compile to 1,088 tokens and 395 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"specs/vsa/jones_polynomial.t27","category":"specs/vsa","name":"jones_polynomial","module":"JonesPolynomial","lines":353,"bytes":14823,"description":"t27/specs/vsa/jones_polynomial.t27 Jones Polynomial — Link invariant computed from input structure V(L, t) = (-t^(-3/4))^w(L) · ⟨L⟩ where ⟨L⟩ is Kauffman bracket","health":"warn","tokens":1541,"nodes":511,"depth":17,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6991,"rust":1789,"verilog":14065,"verilog_hir":959,"zig":8267},"repo":"t27","kinds":{"Module":26,"UseDecl":1,"ConstDecl":3,"ExprLiteral":70,"FnDecl":12,"StmtLocal":28,"StmtFor":1,"ExprIdentifier":112,"StmtAssign":8,"ExprBinary":73,"ExprReturn":24,"ExprCall":23,"ExprUnary":13,"StmtWhile":2,"StmtIf":17,"ExprIndex":2,"ExprFieldAccess":10,"ExprArrayLiteral":1,"ExprIf":1,"TestBlock":17,"StmtExpr":59,"InvariantBlock":5,"BenchBlock":3},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 12 functions and 3 constants. Carries 17 tests, 5 invariants and 3 benches. 353 lines compile to 1,541 tokens and 511 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/vsa/ops.t27","category":"specs/vsa","name":"ops","module":"VSAOps","lines":670,"bytes":29753,"description":"t27/specs/vsa/ops.t27 Vector Symbolic Architecture Operations Bind, Unbind, Bundle, Similarity for ternary hypervectors","health":"warn","tokens":5592,"nodes":755,"depth":13,"loss":0,"tcErrors":14,"failedBackends":[],"outBytes":{"c":12535,"rust":6035,"verilog":21963,"verilog_hir":1805,"zig":16401},"repo":"t27","kinds":{"Module":31,"UseDecl":2,"ConstDecl":9,"ExprLiteral":52,"FnDecl":17,"StmtLocal":46,"ExprArrayLiteral":6,"StmtExpr":99,"ExprCall":27,"ExprIdentifier":218,"StmtWhile":11,"ExprBinary":62,"ExprIndex":25,"StmtIf":12,"ExprFieldAccess":35,"ExprIf":8,"StmtAssign":20,"ExprReturn":20,"TestBlock":22,"InvariantBlock":26,"BenchBlock":7},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 17 functions and 9 constants. Carries 22 tests, 26 invariants and 7 benches. 670 lines compile to 5,592 tokens and 755 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 21.4 KB. Compiles with 14 type errors."},{"path":"specs/vsa/packed_vsa.t27","category":"specs/vsa","name":"packed_vsa","module":"PackedVsa","lines":291,"bytes":11646,"description":"Module: Packed VSA Operations","health":"warn","tokens":931,"nodes":90,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5122,"rust":1025,"verilog":10094,"verilog_hir":772,"zig":5768},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"ConstDecl":7,"ExprLiteral":4,"FnDecl":8,"TestBlock":8,"StmtExpr":42,"InvariantBlock":8,"BenchBlock":8},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/tests","health/warn","issue/dropped-content","size/medium","src/t27"],"summary":"Declares 8 functions and 7 constants. Carries 8 tests, 8 invariants and 8 benches. 291 lines compile to 931 tokens and 90 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 9.9 KB. Compiles with 3 items dropped by error recovery."},{"path":"specs/vsa/sdk.t27","category":"specs/vsa","name":"sdk","module":"SDK","lines":625,"bytes":24058,"description":"specs/vsa/sdk.t27 Trinity SDK - High-level API for VSA operations","health":"ok","tokens":2720,"nodes":372,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10255,"rust":3659,"verilog":19357,"verilog_hir":1790,"zig":12285},"repo":"t27","kinds":{"Module":1,"UseDecl":4,"StructDecl":1,"ExprIdentifier":57,"FnDecl":21,"StmtLocal":7,"ExprCall":35,"StmtAssign":2,"ExprFieldAccess":46,"ExprReturn":20,"ExprStructLit":11,"StmtExpr":99,"ExprUnary":20,"ExprLiteral":1,"TestBlock":30,"InvariantBlock":12,"BenchBlock":5},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/large","src/t27"],"summary":"Declares 21 functions and 1 struct. Carries 30 tests, 12 invariants and 5 benches. 625 lines compile to 2,720 tokens and 372 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.9 KB. Clean through every layer."},{"path":"specs/vsa/sequence_hdc.t27","category":"specs/vsa","name":"sequence_hdc","module":"SequenceHdc","lines":342,"bytes":15172,"description":"Module: Sequence Hyperdimensional Computing (HDC)","health":"ok","tokens":1129,"nodes":105,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6422,"rust":2425,"verilog":11543,"verilog_hir":1131,"zig":7025},"repo":"t27","kinds":{"Module":1,"UseDecl":3,"ConstDecl":4,"ExprLiteral":4,"StructDecl":5,"ExprIdentifier":15,"FnDecl":13,"TestBlock":9,"StmtExpr":40,"InvariantBlock":5,"BenchBlock":6},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 13 functions, 5 structs and 4 constants. Carries 9 tests, 5 invariants and 6 benches. 342 lines compile to 1,129 tokens and 105 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"specs/vsa/similarity_search.t27","category":"specs/vsa","name":"similarity_search","module":"VSASimilaritySearch","lines":467,"bytes":17508,"description":"t27/specs/vsa/similarity_search.t27 VSA Similarity Search Specification Ring 062 - Efficient similarity search in hyperdimensional space Defines semantic similarity operations for VSA trit vectors","health":"warn","tokens":2648,"nodes":606,"depth":14,"loss":0,"tcErrors":13,"failedBackends":[],"outBytes":{"c":8793,"rust":4785,"verilog":14138,"verilog_hir":1180,"zig":7022},"repo":"t27","kinds":{"Module":30,"UseDecl":2,"ConstDecl":10,"ExprLiteral":62,"StructDecl":3,"ExprIdentifier":207,"FnDecl":9,"StmtLocal":33,"StmtWhile":9,"ExprBinary":64,"ExprIndex":24,"StmtAssign":30,"ExprCall":33,"StmtIf":15,"ExprReturn":9,"ExprFieldAccess":40,"StmtExpr":4,"ExprUnary":4,"ExprStructLit":2,"ExprArrayLiteral":1,"TestBlock":8,"InvariantBlock":5,"BenchBlock":2},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 9 functions, 3 structs and 10 constants. Carries 8 tests, 5 invariants and 2 benches. 467 lines compile to 2,648 tokens and 606 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 13.8 KB. Compiles with 13 type errors."},{"path":"specs/vsa/trinity_compat.t27","category":"specs/vsa","name":"trinity_compat","module":"vsa_trinity_compat","lines":259,"bytes":14995,"description":"specs/vsa/trinity_compat.t27 -- the VSA and numeric contract the Trinity facade actually runs Source of truth for tools/trinity_vsa_compat.py and conformance/vsa_trinity_compat.json (gHashTag/t27#3566 = S04 of gHashTag/trinity#988). gHashTag/trinity re-exports sixteen VSA operations from the pinned package gHashTag/zig-golden-float (through gHashTag/zig-hdc, which re-exports them name by name); the canonical specs of this directory describe the same operations, and the two disagree on the zero trit, on unequal lengths and on the sequence","health":"ok","tokens":1858,"nodes":808,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14711,"rust":9499,"verilog":20587,"verilog_hir":1466,"zig":13801},"repo":"t27","kinds":{"Module":17,"ConstDecl":49,"ExprLiteral":258,"ExprIdentifier":78,"FnDecl":16,"ExprReturn":31,"ExprBinary":103,"StmtIf":16,"ExprUnary":33,"ExprCall":125,"StmtLocal":2,"StmtAssign":1,"InvariantBlock":5,"StmtExpr":64,"TestBlock":10},"tags":["domain/vsa","has/functions","has/invariants","has/tests","health/ok","size/medium","src/t27"],"summary":"Declares 16 functions and 49 constants. Carries 10 tests and 5 invariants. 259 lines compile to 1,858 tokens and 808 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 20.1 KB. Clean through every layer."},{"path":"specs/vsa/vsa_core.t27","category":"specs/vsa","name":"vsa_core","module":"vsa_core","lines":1012,"bytes":29306,"description":"t27/specs/vsa/vsa_core.t27 VSA (Vector Symbolic Architecture) Core Operations ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q VSA provides high-dimensional vector operations for: - Symbolic reasoning (bind/unbind for role-filler pairs) - Set operations (bundle for superposition)","health":"warn","tokens":5053,"nodes":2295,"depth":13,"loss":0,"tcErrors":17,"failedBackends":[],"outBytes":{"c":23656,"rust":6487,"verilog":43584,"verilog_hir":1474,"zig":20973},"repo":"t27","kinds":{"Module":64,"UseDecl":1,"ConstDecl":6,"ExprLiteral":326,"ExprIdentifier":690,"StructDecl":1,"FnDecl":16,"StmtLocal":211,"ExprBinary":180,"ExprArrayLiteral":45,"StmtWhile":21,"StmtAssign":93,"ExprCall":254,"ExprIndex":75,"ExprReturn":25,"ExprFieldAccess":62,"StmtIf":22,"ExprIf":5,"TestBlock":22,"StmtExpr":63,"ExprUnary":70,"InvariantBlock":15,"StmtFor":15,"BenchBlock":13},"tags":["domain/vsa","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/t27"],"summary":"Declares 16 functions, 1 struct and 6 constants. Carries 22 tests, 15 invariants and 13 benches. 1012 lines compile to 5,053 tokens and 2,295 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 42.6 KB. Compiles with 17 type errors."},{"path":"test_highlight.t27","category":"root","name":"test_highlight","module":null,"lines":57,"bytes":996,"description":"T27 Syntax Highlighting Test File This tests all syntax elements","health":"warn","tokens":211,"nodes":58,"depth":6,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2117,"rust":875,"verilog":3561,"verilog_hir":511,"zig":960},"repo":"t27","kinds":{"Module":2,"TestBlock":1,"ConstDecl":7,"ExprLiteral":7,"EnumDecl":1,"EnumVariant":3,"StructDecl":1,"ExprIdentifier":14,"FnDecl":4,"StmtLocal":3,"ExprCall":3,"ExprReturn":2,"ExprBinary":2,"ExprSwitch":1,"ExprEnumValue":4,"StmtFor":1,"StmtAssign":1,"StmtExpr":1},"tags":["domain/other","has/enums","has/functions","has/loops","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","size/small","src/t27"],"summary":"Declares 4 functions, 1 struct, 1 enum and 7 constants. Carries 1 test. 57 lines compile to 211 tokens and 58 AST nodes, depth 6. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Compiles with 1 item dropped by error recovery."},{"path":"tests/comprehensive_suite.t27","category":"tests","name":"comprehensive_suite","module":"tests-comprehensive-suite","lines":19,"bytes":559,"description":"comprehensive_suite.t27 a documents the repository integration suite Executed by: t27c suite (or tri test). No shell runners under tests/.","health":"ok","tokens":84,"nodes":23,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1020,"rust":316,"verilog":1973,"verilog_hir":279,"zig":507},"repo":"t27","kinds":{"Module":1,"ConstDecl":7,"ExprLiteral":8,"TestBlock":1,"StmtExpr":1,"ExprUnary":1,"ExprCall":2,"ExprIdentifier":2},"tags":["domain/other","has/constants-only","has/tests","health/ok","size/tiny","src/t27"],"summary":"Declares 7 constants. Carries 1 test. 19 lines compile to 84 tokens and 23 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"tests/ring0_trivial.t27","category":"tests","name":"ring0_trivial","module":"ring0","lines":11,"bytes":201,"description":"ring-0 trivial test","health":"ok","tokens":44,"nodes":11,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":602,"rust":195,"verilog":1388,"verilog_hir":239,"zig":243},"repo":"t27","kinds":{"Module":1,"ConstDecl":5,"ExprLiteral":5},"tags":["domain/other","has/constants-only","health/ok","size/tiny","src/t27"],"summary":"Declares 5 constants. 11 lines compile to 44 tokens and 11 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.4 KB. Clean through every layer."},{"path":"vscode-trinity-swe/test_highlight.t27","category":"vscode-trinity-swe","name":"test_highlight","module":null,"lines":1,"bytes":0,"description":null,"health":"ok","tokens":0,"nodes":1,"depth":1,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"t27","kinds":{"Module":1},"tags":["domain/other","health/ok","size/tiny","src/t27"],"summary":"Declares no top-level items. 1 lines compile to 0 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Clean through every layer."},{"path":"tri-net/specs/access_control.t27","category":"tri-net/specs","name":"access_control","module":"AccessControl","lines":230,"bytes":7562,"description":"Access Control - node authentication and authorization Simplified RBAC for mesh network security","health":"ok","tokens":1398,"nodes":604,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8428,"rust":3182,"verilog":14428,"verilog_hir":1492,"zig":6316},"repo":"tri-net","kinds":{"Module":9,"UseDecl":1,"ConstDecl":7,"ExprLiteral":156,"FnDecl":18,"ExprReturn":24,"ExprBinary":74,"ExprIdentifier":143,"StmtLocal":11,"ExprCall":92,"StmtIf":6,"ExprUnary":2,"TestBlock":16,"StmtAssign":20,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 7 constants. Carries 16 tests. 230 lines compile to 1,398 tokens and 604 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 14.1 KB. Clean through every layer."},{"path":"tri-net/specs/account_identity.t27","category":"tri-net/specs","name":"account_identity","module":"AccountIdentity","lines":80,"bytes":3441,"description":"Multi-device account and trusted-device linking policy. Passkey ceremonies and storage adapters remain platform responsibilities. phi^2 + phi^-2 = 3","health":"ok","tokens":444,"nodes":188,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4309,"rust":1014,"verilog":6410,"verilog_hir":876,"zig":2875},"repo":"tri-net","kinds":{"Module":2,"UseDecl":1,"ConstDecl":4,"ExprLiteral":75,"FnDecl":4,"ExprReturn":5,"ExprBinary":29,"ExprIdentifier":20,"StmtIf":1,"TestBlock":4,"StmtExpr":13,"ExprCall":26,"InvariantBlock":3,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 4 constants. Carries 4 tests, 3 invariants and 1 bench. 80 lines compile to 444 tokens and 188 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.3 KB. Clean through every layer."},{"path":"tri-net/specs/adaptive_retry.t27","category":"tri-net/specs","name":"adaptive_retry","module":"AdaptiveRetry","lines":145,"bytes":5164,"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","health":"ok","tokens":577,"nodes":260,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4436,"rust":1666,"verilog":7464,"verilog_hir":723,"zig":3769},"repo":"tri-net","kinds":{"Module":10,"ConstDecl":5,"ExprLiteral":73,"FnDecl":6,"StmtIf":9,"ExprBinary":33,"ExprIdentifier":39,"ExprReturn":15,"ExprFieldAccess":3,"StmtLocal":13,"ExprCall":34,"TestBlock":5,"StmtExpr":15},"tags":["domain/other","has/functions","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions and 5 constants. Carries 5 tests. 145 lines compile to 577 tokens and 260 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Clean through every layer."},{"path":"tri-net/specs/adaptive_routing.t27","category":"tri-net/specs","name":"adaptive_routing","module":"AdaptiveRouting","lines":280,"bytes":10004,"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","health":"warn","tokens":1690,"nodes":733,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10220,"rust":4581,"verilog":16499,"verilog_hir":1748,"zig":8029},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":5,"ExprLiteral":220,"FnDecl":19,"ExprReturn":25,"ExprBinary":78,"ExprIdentifier":154,"ExprArrayLiteral":1,"StmtIf":13,"ExprIndex":1,"StmtLocal":14,"ExprCall":118,"StmtAssign":31,"TestBlock":15,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 5 constants. Carries 15 tests. 280 lines compile to 1,690 tokens and 733 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 16.1 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/anomaly_detector.t27","category":"tri-net/specs","name":"anomaly_detector","module":"anomaly_detector","lines":427,"bytes":13915,"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","health":"warn","tokens":2295,"nodes":997,"depth":12,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":12737,"rust":4224,"verilog":20001,"verilog_hir":2076,"zig":10547},"repo":"tri-net","kinds":{"Module":74,"UseDecl":1,"ConstDecl":9,"ExprLiteral":208,"FnDecl":23,"ExprReturn":46,"ExprBinary":158,"ExprIdentifier":249,"StmtLocal":48,"StmtWhile":6,"ExprCall":63,"ExprIndex":12,"StmtAssign":34,"StmtIf":43,"TestBlock":5,"StmtExpr":17,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 23 functions and 9 constants. Carries 5 tests. 427 lines compile to 2,295 tokens and 997 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 19.5 KB. Compiles with 6 type errors."},{"path":"tri-net/specs/api_documenter.t27","category":"tri-net/specs","name":"api_documenter","module":"api_documenter","lines":395,"bytes":14057,"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","health":"warn","tokens":2273,"nodes":863,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13996,"rust":9557,"verilog":21152,"verilog_hir":3871,"zig":10363},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":11,"ExprLiteral":214,"FnDecl":42,"ExprReturn":44,"ExprBinary":205,"ExprIdentifier":192,"StmtLocal":51,"ExprCall":45,"StmtIf":8,"StmtAssign":16,"StmtWhile":4,"ExprIndex":4,"ExprArrayLiteral":1,"TestBlock":2,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 42 functions and 11 constants. Carries 2 tests. 395 lines compile to 2,273 tokens and 863 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 20.7 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/area_optimization.t27","category":"tri-net/specs","name":"area_optimization","module":"AreaOptimization","lines":229,"bytes":7225,"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","health":"ok","tokens":1089,"nodes":484,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7931,"rust":2333,"verilog":14985,"verilog_hir":1776,"zig":6321},"repo":"tri-net","kinds":{"Module":14,"UseDecl":1,"ConstDecl":5,"ExprLiteral":148,"FnDecl":15,"ExprReturn":24,"ExprBinary":71,"ExprIdentifier":75,"StmtIf":9,"ExprFieldAccess":1,"ExprCall":57,"TestBlock":22,"StmtAssign":17,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 15 functions and 5 constants. Carries 22 tests. 229 lines compile to 1,089 tokens and 484 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"tri-net/specs/auto_config.t27","category":"tri-net/specs","name":"auto_config","module":"auto_config","lines":437,"bytes":16119,"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","health":"warn","tokens":2438,"nodes":1073,"depth":22,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":13601,"rust":10750,"verilog":21014,"verilog_hir":1842,"zig":12746},"repo":"tri-net","kinds":{"Module":76,"UseDecl":1,"ConstDecl":20,"ExprLiteral":195,"FnDecl":19,"ExprReturn":39,"ExprBinary":140,"ExprIdentifier":303,"StmtIf":51,"ExprCall":76,"StmtLocal":52,"StmtWhile":11,"ExprIndex":27,"StmtAssign":33,"ExprArrayLiteral":2,"StmtExpr":20,"StmtBreak":3,"ExprFieldAccess":1,"TestBlock":4},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 19 functions and 20 constants. Carries 4 tests. 437 lines compile to 2,438 tokens and 1,073 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 20.5 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/bandwidth_allocator.t27","category":"tri-net/specs","name":"bandwidth_allocator","module":"BandwidthAllocator","lines":351,"bytes":14763,"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","health":"warn","tokens":2359,"nodes":1056,"depth":9,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":13991,"rust":6921,"verilog":21850,"verilog_hir":2021,"zig":11760},"repo":"tri-net","kinds":{"Module":29,"UseDecl":1,"ConstDecl":7,"ExprLiteral":290,"FnDecl":19,"ExprReturn":22,"ExprBinary":110,"ExprIdentifier":253,"ExprArrayLiteral":1,"StmtIf":26,"ExprIndex":1,"StmtLocal":29,"ExprCall":181,"StmtAssign":48,"TestBlock":16,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 7 constants. Carries 16 tests. 351 lines compile to 2,359 tokens and 1,056 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Compiles with 6 type errors."},{"path":"tri-net/specs/byte_utils.t27","category":"tri-net/specs","name":"byte_utils","module":"ByteUtils","lines":79,"bytes":1828,"description":"Byte utilities (wire.t27 pattern)","health":"ok","tokens":408,"nodes":196,"depth":20,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2541,"rust":469,"verilog":4793,"verilog_hir":565,"zig":1564},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"FnDecl":5,"StmtIf":7,"ExprBinary":40,"ExprIdentifier":33,"ExprLiteral":53,"ExprReturn":12,"TestBlock":6,"StmtAssign":6,"ExprCall":12,"StmtExpr":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions. Carries 6 tests. 79 lines compile to 408 tokens and 196 AST nodes, depth 20. Emits 5 of 5 backends; largest is Verilog at 4.7 KB. Clean through every layer."},{"path":"tri-net/specs/cache_management.t27","category":"tri-net/specs","name":"cache_management","module":"cache_management","lines":384,"bytes":11862,"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","health":"ok","tokens":1926,"nodes":745,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10921,"rust":6484,"verilog":17511,"verilog_hir":2044,"zig":8727},"repo":"tri-net","kinds":{"Module":37,"UseDecl":1,"ConstDecl":4,"ExprLiteral":108,"FnDecl":27,"ExprReturn":37,"ExprBinary":98,"ExprIdentifier":230,"StmtLocal":50,"ExprCall":63,"StmtIf":23,"StmtAssign":28,"StmtWhile":6,"ExprIndex":18,"StmtBreak":1,"TestBlock":4,"StmtExpr":9,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 27 functions and 4 constants. Carries 4 tests. 384 lines compile to 1,926 tokens and 745 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 17.1 KB. Clean through every layer."},{"path":"tri-net/specs/compression_engine.t27","category":"tri-net/specs","name":"compression_engine","module":"compression_engine","lines":347,"bytes":10954,"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","health":"warn","tokens":1702,"nodes":770,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":10445,"rust":4867,"verilog":16306,"verilog_hir":2060,"zig":8251},"repo":"tri-net","kinds":{"Module":61,"UseDecl":1,"ConstDecl":8,"ExprLiteral":139,"FnDecl":19,"ExprReturn":37,"ExprBinary":128,"ExprIdentifier":221,"StmtIf":28,"StmtLocal":38,"StmtWhile":7,"StmtAssign":37,"ExprIndex":5,"ExprCall":30,"TestBlock":3,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 8 constants. Carries 3 tests. 347 lines compile to 1,702 tokens and 770 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/congestion_control.t27","category":"tri-net/specs","name":"congestion_control","module":"congestion_control","lines":301,"bytes":9211,"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","health":"warn","tokens":1437,"nodes":631,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":8963,"rust":4877,"verilog":13905,"verilog_hir":1771,"zig":6984},"repo":"tri-net","kinds":{"Module":31,"UseDecl":1,"ConstDecl":9,"ExprLiteral":84,"FnDecl":19,"ExprReturn":26,"ExprBinary":75,"ExprIdentifier":207,"ExprCall":69,"StmtLocal":30,"StmtIf":19,"StmtAssign":37,"StmtWhile":4,"ExprIndex":3,"TestBlock":3,"StmtExpr":14},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 9 constants. Carries 3 tests. 301 lines compile to 1,437 tokens and 631 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 13.6 KB. Compiles with 1 type error."},{"path":"tri-net/specs/crc16.t27","category":"tri-net/specs","name":"crc16","module":"Crc16Ccitt","lines":91,"bytes":2731,"description":"CRC-16/CCITT error detection (no-let version)","health":"ok","tokens":488,"nodes":215,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3223,"rust":881,"verilog":5518,"verilog_hir":654,"zig":2039},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":2,"ExprLiteral":72,"FnDecl":4,"StmtIf":1,"ExprBinary":28,"ExprIdentifier":46,"ExprReturn":5,"ExprCall":30,"TestBlock":6,"StmtAssign":11,"StmtExpr":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 2 constants. Carries 6 tests. 91 lines compile to 488 tokens and 215 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tri-net/specs/cross_layer_optimizer.t27","category":"tri-net/specs","name":"cross_layer_optimizer","module":"CrossLayerOptimizer","lines":320,"bytes":12555,"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","health":"warn","tokens":2224,"nodes":948,"depth":10,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":12135,"rust":3466,"verilog":20304,"verilog_hir":1979,"zig":10014},"repo":"tri-net","kinds":{"Module":23,"UseDecl":1,"ConstDecl":8,"ExprLiteral":283,"FnDecl":20,"ExprReturn":22,"ExprBinary":105,"ExprIdentifier":205,"ExprArrayLiteral":5,"StmtLocal":39,"ExprIndex":5,"StmtIf":18,"ExprCall":124,"StmtAssign":44,"TestBlock":16,"StmtExpr":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 20 functions and 8 constants. Carries 16 tests. 320 lines compile to 2,224 tokens and 948 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 19.8 KB. Compiles with 10 type errors."},{"path":"tri-net/specs/crypto_frame.t27","category":"tri-net/specs","name":"crypto_frame","module":"CryptoFrame","lines":239,"bytes":8811,"description":"tri-net/specs/crypto_frame.t27 Partial spec-first lift of src/crypto.rs (T27-first): the INTEGER session-frame discipline. The AEAD itself (ChaCha20-Poly1305), X25519 and HKDF stay in Rust; what lives here is everything an auditor checks with arithmetic alone: wire frame = [epoch u32 BE][counter u64 BE][ciphertext || tag16] AEAD nonce = [dir:1][epoch:4 BE][counter low 7 BE] (12 bytes)","health":"ok","tokens":1020,"nodes":316,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5222,"rust":2560,"verilog":9025,"verilog_hir":1039,"zig":5689},"repo":"tri-net","kinds":{"Module":18,"UseDecl":1,"ConstDecl":8,"ExprLiteral":44,"FnDecl":11,"ExprReturn":28,"ExprIdentifier":68,"ExprBinary":54,"StmtIf":17,"ExprFieldAccess":2,"StmtLocal":5,"TestBlock":10,"StmtExpr":48,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 11 functions and 8 constants. Carries 10 tests and 2 invariants. 239 lines compile to 1,020 tokens and 316 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.8 KB. Clean through every layer."},{"path":"tri-net/specs/direct_message.t27","category":"tri-net/specs","name":"direct_message","module":"DirectMessage","lines":203,"bytes":10418,"description":"End-to-end encrypted direct-message envelope policy. HTTP, SQLite, X25519, AEAD, and APNs adapters are outside this specification. phi^2 + phi^-2 = 3","health":"ok","tokens":1338,"nodes":573,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11138,"rust":3685,"verilog":14115,"verilog_hir":2287,"zig":8768},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":10,"ExprLiteral":237,"FnDecl":14,"ExprReturn":18,"ExprBinary":82,"ExprIdentifier":63,"ExprUnary":5,"ExprCall":81,"StmtIf":4,"TestBlock":5,"StmtExpr":39,"InvariantBlock":8,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 10 constants. Carries 5 tests, 8 invariants and 1 bench. 203 lines compile to 1,338 tokens and 573 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 13.8 KB. Clean through every layer."},{"path":"tri-net/specs/discovery.t27","category":"tri-net/specs","name":"discovery","module":"Discovery","lines":84,"bytes":2791,"description":"tri-net/specs/discovery.t27 Partial spec-first flip of src/discovery.rs (T27-first). The HELLO beacon byte layout `[src:4][seq:4][ts:8][n:1][heard:n*4][mac:16]` is pure integer arithmetic: frame length, MAC offset and the parse-side length gates are lifted here as the single source of truth. The HMAC itself and socket I/O stay in Rust (T27 cannot express them).","health":"ok","tokens":279,"nodes":74,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2421,"rust":545,"verilog":4435,"verilog_hir":521,"zig":1891},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":4,"ExprLiteral":4,"FnDecl":4,"ExprReturn":5,"ExprBinary":9,"ExprIdentifier":15,"ExprCall":2,"StmtIf":1,"TestBlock":6,"StmtExpr":18,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 4 constants. Carries 6 tests and 2 invariants. 84 lines compile to 279 tokens and 74 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Clean through every layer."},{"path":"tri-net/specs/docs_generator.t27","category":"tri-net/specs","name":"docs_generator","module":"docs_generator","lines":406,"bytes":12897,"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","health":"warn","tokens":2413,"nodes":902,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":14287,"rust":9662,"verilog":21316,"verilog_hir":4915,"zig":9663},"repo":"tri-net","kinds":{"Module":14,"UseDecl":1,"ConstDecl":19,"ExprLiteral":250,"FnDecl":54,"ExprReturn":54,"ExprBinary":250,"ExprIdentifier":173,"StmtLocal":25,"StmtIf":8,"StmtAssign":17,"StmtWhile":2,"ExprCall":23,"ExprIndex":3,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 54 functions and 19 constants. Carries 2 tests. 406 lines compile to 2,413 tokens and 902 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/energy_aware_routing.t27","category":"tri-net/specs","name":"energy_aware_routing","module":"EnergyAwareRouting","lines":335,"bytes":11317,"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","health":"warn","tokens":1809,"nodes":795,"depth":9,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":10957,"rust":6025,"verilog":18195,"verilog_hir":1856,"zig":8847},"repo":"tri-net","kinds":{"Module":29,"UseDecl":1,"ConstDecl":4,"ExprLiteral":214,"FnDecl":19,"ExprReturn":22,"ExprBinary":81,"ExprIdentifier":172,"ExprArrayLiteral":1,"StmtIf":28,"ExprIndex":1,"StmtLocal":32,"ExprCall":121,"StmtAssign":38,"TestBlock":13,"StmtExpr":19},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 4 constants. Carries 13 tests. 335 lines compile to 1,809 tokens and 795 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.8 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/etx.t27","category":"tri-net/specs","name":"etx","module":"MeshEtx","lines":136,"bytes":4933,"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","health":"ok","tokens":740,"nodes":376,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4642,"rust":795,"verilog":7476,"verilog_hir":771,"zig":4086},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":91,"FnDecl":6,"StmtIf":9,"ExprBinary":44,"ExprIdentifier":102,"ExprReturn":15,"ExprFieldAccess":3,"ExprCall":47,"TestBlock":6,"StmtAssign":21,"StmtExpr":11},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions and 4 constants. Carries 6 tests. 136 lines compile to 740 tokens and 376 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Clean through every layer."},{"path":"tri-net/specs/failure_predictor.t27","category":"tri-net/specs","name":"failure_predictor","module":"failure_predictor","lines":328,"bytes":12115,"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","health":"warn","tokens":1858,"nodes":834,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":11455,"rust":4927,"verilog":19351,"verilog_hir":1954,"zig":9274},"repo":"tri-net","kinds":{"Module":28,"UseDecl":1,"ConstDecl":4,"ExprLiteral":267,"FnDecl":19,"ExprReturn":29,"ExprBinary":94,"ExprIdentifier":150,"ExprArrayLiteral":1,"StmtIf":19,"ExprIndex":1,"StmtLocal":26,"ExprCall":119,"StmtAssign":36,"TestBlock":17,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 19 functions and 4 constants. Carries 17 tests. 328 lines compile to 1,858 tokens and 834 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.9 KB. Compiles with 9 type errors."},{"path":"tri-net/specs/fault_detection.t27","category":"tri-net/specs","name":"fault_detection","module":"FaultDetection","lines":254,"bytes":9117,"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","health":"ok","tokens":1615,"nodes":682,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9543,"rust":3910,"verilog":16317,"verilog_hir":1633,"zig":7511},"repo":"tri-net","kinds":{"Module":11,"UseDecl":1,"ConstDecl":5,"ExprLiteral":220,"FnDecl":18,"ExprReturn":20,"ExprBinary":56,"ExprIdentifier":131,"ExprArrayLiteral":1,"StmtIf":10,"ExprIndex":1,"StmtLocal":18,"ExprCall":121,"StmtAssign":30,"TestBlock":17,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 5 constants. Carries 17 tests. 254 lines compile to 1,615 tokens and 682 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Clean through every layer."},{"path":"tri-net/specs/flow_control.t27","category":"tri-net/specs","name":"flow_control","module":"flow_control","lines":302,"bytes":8829,"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","health":"ok","tokens":1587,"nodes":615,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9071,"rust":4595,"verilog":14730,"verilog_hir":1914,"zig":6847},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":8,"ExprLiteral":112,"FnDecl":26,"ExprReturn":37,"ExprBinary":78,"ExprIdentifier":163,"StmtLocal":40,"ExprCall":67,"StmtIf":13,"StmtAssign":16,"StmtWhile":5,"ExprIndex":7,"TestBlock":3,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 26 functions and 8 constants. Carries 3 tests. 302 lines compile to 1,587 tokens and 615 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Clean through every layer."},{"path":"tri-net/specs/fpga_synthesis_report.t27","category":"tri-net/specs","name":"fpga_synthesis_report","module":"FpgaSynthesisReport","lines":185,"bytes":6014,"description":"FPGA synthesis reporting - resource utilization and timing analysis Documents synthesis results for all 19 modules","health":"ok","tokens":989,"nodes":415,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6684,"rust":1914,"verilog":12121,"verilog_hir":1450,"zig":4823},"repo":"tri-net","kinds":{"Module":2,"UseDecl":1,"ConstDecl":7,"ExprLiteral":134,"FnDecl":14,"ExprReturn":14,"ExprBinary":60,"ExprIdentifier":64,"ExprCall":60,"StmtIf":1,"StmtLocal":2,"TestBlock":17,"StmtAssign":16,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 7 constants. Carries 17 tests. 185 lines compile to 989 tokens and 415 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Clean through every layer."},{"path":"tri-net/specs/frame_buffer.t27","category":"tri-net/specs","name":"frame_buffer","module":"FrameBuffer","lines":82,"bytes":1888,"description":"Frame buffer - minimal version","health":"ok","tokens":472,"nodes":211,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2805,"rust":564,"verilog":5424,"verilog_hir":594,"zig":2370},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":6,"ExprReturn":6,"ExprFieldAccess":6,"ExprBinary":30,"ExprIdentifier":22,"ExprLiteral":71,"TestBlock":10,"StmtExpr":14,"ExprCall":38,"StmtAssign":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions. Carries 10 tests. 82 lines compile to 472 tokens and 211 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.3 KB. Clean through every layer."},{"path":"tri-net/specs/gf16_format.t27","category":"tri-net/specs","name":"gf16_format","module":"Gf16Format","lines":107,"bytes":3385,"description":"tri-net/specs/gf16_format.t27 Partial spec-first lift of src/gf16.rs (T27-first): the GF16 BIT FORMAT. GF16 is the radio-DSP number format: [sign:1][exponent:6][mantissa:9], bias 31, round-to-nearest-even, no subnormals. The f64 encode/decode rounding stays in Rust (floating point is not a t27 target); the INTEGER geometry — field masks, extraction, composition and the NaN/Inf classifiers — is the single source of","health":"ok","tokens":494,"nodes":122,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2941,"rust":1007,"verilog":5135,"verilog_hir":642,"zig":2660},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":6,"ExprLiteral":14,"FnDecl":7,"ExprReturn":9,"ExprBinary":18,"ExprIdentifier":21,"StmtIf":2,"ExprCall":4,"TestBlock":6,"StmtExpr":29,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions and 6 constants. Carries 6 tests and 2 invariants. 107 lines compile to 494 tokens and 122 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tri-net/specs/group_chat.t27","category":"tri-net/specs","name":"group_chat","module":"GroupChat","lines":161,"bytes":6914,"description":"Persistent group chat membership and message policy. HTTP, SQLite, and UI adapters are outside this specification. phi^2 + phi^-2 = 3","health":"ok","tokens":924,"nodes":401,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7703,"rust":2045,"verilog":10875,"verilog_hir":1354,"zig":5937},"repo":"tri-net","kinds":{"Module":6,"UseDecl":1,"ConstDecl":5,"ExprLiteral":159,"FnDecl":9,"StmtIf":5,"ExprBinary":54,"ExprUnary":4,"ExprIdentifier":37,"ExprReturn":14,"ExprCall":61,"TestBlock":8,"StmtExpr":30,"InvariantBlock":7,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 9 functions and 5 constants. Carries 8 tests, 7 invariants and 1 bench. 161 lines compile to 924 tokens and 401 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 10.6 KB. Clean through every layer."},{"path":"tri-net/specs/hardware_validation.t27","category":"tri-net/specs","name":"hardware_validation","module":"HardwareValidation","lines":209,"bytes":6916,"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","health":"ok","tokens":1133,"nodes":481,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7574,"rust":2491,"verilog":13268,"verilog_hir":1763,"zig":5962},"repo":"tri-net","kinds":{"Module":2,"UseDecl":1,"ConstDecl":8,"ExprLiteral":142,"FnDecl":18,"ExprReturn":19,"ExprBinary":84,"ExprIdentifier":85,"StmtIf":1,"ExprFieldAccess":1,"ExprCall":64,"TestBlock":17,"StmtAssign":14,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 8 constants. Carries 17 tests. 209 lines compile to 1,133 tokens and 481 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.0 KB. Clean through every layer."},{"path":"tri-net/specs/health_dashboard.t27","category":"tri-net/specs","name":"health_dashboard","module":"health_dashboard","lines":387,"bytes":13643,"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","health":"warn","tokens":2164,"nodes":914,"depth":15,"loss":0,"tcErrors":14,"failedBackends":[],"outBytes":{"c":13067,"rust":7280,"verilog":19847,"verilog_hir":2656,"zig":10495},"repo":"tri-net","kinds":{"Module":65,"UseDecl":1,"ConstDecl":19,"ExprLiteral":165,"FnDecl":27,"ExprReturn":38,"ExprBinary":178,"ExprIdentifier":255,"StmtIf":36,"StmtLocal":35,"StmtWhile":6,"ExprIndex":13,"ExprCall":30,"StmtAssign":31,"TestBlock":4,"StmtExpr":8,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 27 functions and 19 constants. Carries 4 tests. 387 lines compile to 2,164 tokens and 914 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 19.4 KB. Compiles with 14 type errors."},{"path":"tri-net/specs/health_monitoring.t27","category":"tri-net/specs","name":"health_monitoring","module":"HealthMonitoring","lines":320,"bytes":14961,"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","health":"ok","tokens":2946,"nodes":1357,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14463,"rust":6367,"verilog":21285,"verilog_hir":1377,"zig":12971},"repo":"tri-net","kinds":{"Module":65,"UseDecl":1,"ConstDecl":17,"ExprLiteral":378,"FnDecl":13,"ExprReturn":26,"ExprBinary":146,"ExprIdentifier":335,"ExprArrayLiteral":9,"StmtIf":61,"ExprIndex":9,"StmtLocal":14,"ExprCall":204,"StmtAssign":58,"TestBlock":9,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 13 functions and 17 constants. Carries 9 tests. 320 lines compile to 2,946 tokens and 1,357 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Clean through every layer."},{"path":"tri-net/specs/hello.t27","category":"tri-net/specs","name":"hello","module":"MeshHello","lines":164,"bytes":5489,"description":"HELLO beacon format for mesh neighbor discovery Port from trios-mesh/src/discovery.rs Fixed 3-neighbor heard list (no Vec, arrays await t27#1258)","health":"ok","tokens":1193,"nodes":526,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5429,"rust":989,"verilog":8509,"verilog_hir":1204,"zig":4521},"repo":"tri-net","kinds":{"Module":19,"UseDecl":1,"ConstDecl":2,"ExprLiteral":227,"FnDecl":8,"StmtIf":9,"ExprBinary":42,"ExprIdentifier":97,"ExprReturn":15,"ExprFieldAccess":8,"ExprCall":49,"TestBlock":6,"StmtAssign":30,"StmtExpr":13},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 2 constants. Carries 6 tests. 164 lines compile to 1,193 tokens and 526 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 8.3 KB. Clean through every layer."},{"path":"tri-net/specs/integration_framework.t27","category":"tri-net/specs","name":"integration_framework","module":"integration_framework","lines":569,"bytes":18981,"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","health":"warn","tokens":3135,"nodes":1212,"depth":15,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":18628,"rust":13169,"verilog":27843,"verilog_hir":4448,"zig":14483},"repo":"tri-net","kinds":{"Module":45,"UseDecl":1,"ConstDecl":33,"ExprLiteral":262,"FnDecl":48,"ExprReturn":55,"ExprBinary":231,"ExprIdentifier":311,"StmtLocal":63,"ExprCall":51,"StmtWhile":16,"ExprIndex":23,"StmtIf":24,"StmtAssign":38,"StmtBreak":1,"TestBlock":2,"StmtExpr":7,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 48 functions and 33 constants. Carries 2 tests. 569 lines compile to 3,135 tokens and 1,212 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 27.2 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/integration_tests.t27","category":"tri-net/specs","name":"integration_tests","module":"MeshIntegrationTests","lines":244,"bytes":7954,"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","health":"ok","tokens":1167,"nodes":609,"depth":18,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5470,"rust":439,"verilog":8924,"verilog_hir":515,"zig":5087},"repo":"tri-net","kinds":{"Module":10,"UseDecl":1,"ConstDecl":7,"ExprLiteral":132,"FnDecl":2,"StmtIf":5,"ExprBinary":92,"ExprIdentifier":200,"ExprReturn":5,"ExprFieldAccess":23,"StmtLocal":1,"TestBlock":10,"StmtAssign":53,"ExprCall":42,"StmtExpr":26},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 2 functions and 7 constants. Carries 10 tests. 244 lines compile to 1,167 tokens and 609 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 8.7 KB. Clean through every layer."},{"path":"tri-net/specs/internet_call.t27","category":"tri-net/specs","name":"internet_call","module":"InternetCall","lines":875,"bytes":45630,"description":"Internet call policy and lifecycle. Network adapters, APNs delivery, and LiveKit token signing are thin wrappers. phi^2 + phi^-2 = 3","health":"ok","tokens":5784,"nodes":2593,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":44477,"rust":16088,"verilog":57469,"verilog_hir":6764,"zig":38158},"repo":"tri-net","kinds":{"Module":45,"UseDecl":1,"ConstDecl":36,"ExprLiteral":907,"FnDecl":58,"StmtIf":44,"ExprBinary":377,"ExprIdentifier":420,"ExprReturn":102,"ExprCall":351,"ExprUnary":18,"StmtLocal":7,"TestBlock":29,"StmtExpr":167,"StmtAssign":3,"InvariantBlock":27,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 58 functions and 36 constants. Carries 29 tests, 27 invariants and 1 bench. 875 lines compile to 5,784 tokens and 2,593 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 56.1 KB. Clean through every layer."},{"path":"tri-net/specs/key_management.t27","category":"tri-net/specs","name":"key_management","module":"KeyManagement","lines":298,"bytes":10998,"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","health":"warn","tokens":2072,"nodes":896,"depth":14,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10432,"rust":5535,"verilog":16757,"verilog_hir":1325,"zig":8713},"repo":"tri-net","kinds":{"Module":35,"UseDecl":1,"ConstDecl":5,"ExprLiteral":285,"FnDecl":15,"ExprReturn":31,"ExprBinary":75,"ExprIdentifier":180,"ExprArrayLiteral":5,"StmtLocal":17,"ExprIndex":5,"StmtIf":28,"ExprCall":157,"StmtAssign":28,"TestBlock":13,"StmtExpr":16},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 15 functions and 5 constants. Carries 13 tests. 298 lines compile to 2,072 tokens and 896 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 16.4 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/link_quality_monitor.t27","category":"tri-net/specs","name":"link_quality_monitor","module":"LinkQualityMonitor","lines":178,"bytes":6752,"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","health":"ok","tokens":823,"nodes":347,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5015,"rust":2053,"verilog":8442,"verilog_hir":790,"zig":4553},"repo":"tri-net","kinds":{"Module":10,"ConstDecl":7,"ExprLiteral":85,"FnDecl":6,"StmtLocal":22,"ExprBinary":48,"ExprFieldAccess":22,"ExprIdentifier":60,"StmtIf":9,"ExprReturn":15,"ExprIndex":8,"ExprUnary":2,"TestBlock":6,"ExprCall":29,"StmtExpr":16,"ExprArrayLiteral":2},"tags":["domain/other","has/functions","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 6 functions and 7 constants. Carries 6 tests. 178 lines compile to 823 tokens and 347 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 8.2 KB. Clean through every layer."},{"path":"tri-net/specs/link_statistics.t27","category":"tri-net/specs","name":"link_statistics","module":"LinkStatistics","lines":53,"bytes":1068,"description":"Link statistics - ultra-simple","health":"ok","tokens":242,"nodes":103,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1943,"rust":401,"verilog":3682,"verilog_hir":483,"zig":1626},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":5,"ExprReturn":5,"ExprFieldAccess":2,"ExprBinary":10,"ExprIdentifier":24,"ExprLiteral":16,"TestBlock":4,"StmtAssign":10,"ExprCall":20,"StmtExpr":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions. Carries 4 tests. 53 lines compile to 242 tokens and 103 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.6 KB. Clean through every layer."},{"path":"tri-net/specs/lite_crypto.t27","category":"tri-net/specs","name":"lite_crypto","module":"LiteCrypto","lines":141,"bytes":5044,"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","health":"ok","tokens":638,"nodes":255,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4331,"rust":821,"verilog":8319,"verilog_hir":825,"zig":3674},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"ConstDecl":3,"ExprLiteral":58,"FnDecl":6,"StmtLocal":3,"ExprBinary":29,"ExprIdentifier":66,"ExprReturn":5,"ExprFieldAccess":4,"ExprCall":32,"TestBlock":13,"StmtAssign":21,"StmtExpr":13},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 6 functions and 3 constants. Carries 13 tests. 141 lines compile to 638 tokens and 255 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.1 KB. Clean through every layer."},{"path":"tri-net/specs/load_predictor.t27","category":"tri-net/specs","name":"load_predictor","module":"load_predictor","lines":357,"bytes":11081,"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","health":"warn","tokens":1947,"nodes":731,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":10097,"rust":4563,"verilog":16434,"verilog_hir":1844,"zig":8281},"repo":"tri-net","kinds":{"Module":48,"UseDecl":1,"ConstDecl":5,"ExprLiteral":131,"FnDecl":22,"ExprReturn":37,"ExprBinary":108,"ExprIdentifier":199,"StmtLocal":46,"StmtWhile":6,"ExprIndex":9,"StmtAssign":27,"ExprCall":46,"StmtIf":27,"ExprUnary":1,"TestBlock":4,"StmtExpr":11,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 22 functions and 5 constants. Carries 4 tests. 357 lines compile to 1,947 tokens and 731 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 16.0 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/local_processing.t27","category":"tri-net/specs","name":"local_processing","module":"local_processing","lines":354,"bytes":11012,"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","health":"warn","tokens":1958,"nodes":749,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10719,"rust":6038,"verilog":17045,"verilog_hir":2715,"zig":8344},"repo":"tri-net","kinds":{"Module":28,"UseDecl":1,"ConstDecl":10,"ExprLiteral":135,"FnDecl":29,"ExprReturn":36,"ExprBinary":123,"ExprIdentifier":211,"StmtLocal":42,"ExprCall":52,"StmtWhile":10,"ExprIndex":12,"StmtAssign":30,"StmtIf":13,"TestBlock":3,"StmtExpr":12,"ExprArrayLiteral":2},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 29 functions and 10 constants. Carries 3 tests. 354 lines compile to 1,958 tokens and 749 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/m3_multihop.t27","category":"tri-net/specs","name":"m3_multihop","module":"M3MultiHop","lines":351,"bytes":13458,"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","health":"ok","tokens":1599,"nodes":607,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8401,"rust":3082,"verilog":12474,"verilog_hir":1017,"zig":7397},"repo":"tri-net","kinds":{"Module":25,"ConstDecl":9,"ExprLiteral":183,"FnDecl":10,"StmtExpr":33,"ExprFieldAccess":28,"ExprIdentifier":83,"StmtLocal":24,"ExprBinary":82,"StmtIf":20,"ExprReturn":25,"ExprCall":67,"ExprUnary":1,"TestBlock":9,"StmtFor":4,"StmtAssign":4},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 9 constants. Carries 9 tests. 351 lines compile to 1,599 tokens and 607 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.2 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_call_signaling.t27","category":"tri-net/specs","name":"mesh_call_signaling","module":"MeshCallSignaling","lines":63,"bytes":2209,"description":"Signed local call invitation policy. UDP sockets, JSON encoding, and UI prompts are adapter responsibilities. phi^2 + phi^-2 = 3","health":"ok","tokens":308,"nodes":123,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3217,"rust":727,"verilog":4981,"verilog_hir":603,"zig":1946},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":4,"ExprLiteral":50,"FnDecl":2,"StmtIf":2,"ExprBinary":16,"ExprIdentifier":13,"ExprReturn":4,"ExprUnary":1,"TestBlock":3,"StmtExpr":7,"ExprCall":14,"InvariantBlock":2,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 2 functions and 4 constants. Carries 3 tests, 2 invariants and 1 bench. 63 lines compile to 308 tokens and 123 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_node_sim.t27","category":"tri-net/specs","name":"mesh_node_sim","module":"MeshNodeSim","lines":165,"bytes":5651,"description":"Mesh node simulation - 2-4 node network scenarios Tests point-to-point, triangle, line topologies","health":"ok","tokens":1082,"nodes":475,"depth":19,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5757,"rust":2528,"verilog":9665,"verilog_hir":943,"zig":5007},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":70,"FnDecl":9,"ExprReturn":13,"ExprBinary":112,"ExprIdentifier":149,"ExprFieldAccess":2,"ExprCall":47,"StmtIf":10,"TestBlock":12,"StmtAssign":8,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 9 functions and 4 constants. Carries 12 tests. 165 lines compile to 1,082 tokens and 475 AST nodes, depth 19. Emits 5 of 5 backends; largest is Verilog at 9.4 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_protocol_stack.t27","category":"tri-net/specs","name":"mesh_protocol_stack","module":"MeshProtocolStack","lines":224,"bytes":8398,"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","health":"ok","tokens":1355,"nodes":543,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6794,"rust":1170,"verilog":11706,"verilog_hir":907,"zig":5833},"repo":"tri-net","kinds":{"Module":17,"UseDecl":1,"ConstDecl":5,"ExprLiteral":108,"FnDecl":10,"ExprReturn":14,"ExprBinary":74,"ExprIdentifier":149,"ExprFieldAccess":5,"StmtIf":9,"ExprCall":80,"StmtLocal":1,"TestBlock":15,"StmtAssign":18,"StmtExpr":37},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 5 constants. Carries 15 tests. 224 lines compile to 1,355 tokens and 543 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"tri-net/specs/mesh_routing.t27","category":"tri-net/specs","name":"mesh_routing","module":"MeshRouting","lines":328,"bytes":10999,"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","health":"ok","tokens":1570,"nodes":497,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7013,"rust":874,"verilog":13058,"verilog_hir":993,"zig":5584},"repo":"tri-net","kinds":{"Module":43,"UseDecl":1,"ConstDecl":6,"ExprLiteral":108,"FnDecl":7,"StmtLocal":5,"ExprFieldAccess":2,"ExprBinary":67,"ExprIdentifier":105,"StmtIf":22,"ExprReturn":5,"ExprUnary":2,"ExprCall":51,"TestBlock":22,"StmtExpr":46,"StmtAssign":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 7 functions and 6 constants. Carries 22 tests. 328 lines compile to 1,570 tokens and 497 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"tri-net/specs/modem_frame.t27","category":"tri-net/specs","name":"modem_frame","module":"ModemFrame","lines":121,"bytes":4409,"description":"tri-net/specs/modem_frame.t27 Integer frame geometry + sync gate of the BPSK modem in src/modem.rs (T27-first). The Barker-13 correlation itself is f32 (matched filtering over noisy IQ) and stays in Rust; but the FRAME LAYOUT is pure integer arithmetic and is lifted here as the single source of truth: on-air symbol counts, the minimum-length parse gate, the payload cap, the decode bounds check, and the sync threshold as a fraction of the","health":"ok","tokens":375,"nodes":97,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3017,"rust":935,"verilog":5494,"verilog_hir":755,"zig":2670},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"ConstDecl":5,"ExprLiteral":6,"FnDecl":7,"ExprReturn":7,"ExprBinary":12,"ExprIdentifier":17,"ExprCall":1,"TestBlock":9,"StmtExpr":28,"InvariantBlock":3},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions and 5 constants. Carries 9 tests and 3 invariants. 121 lines compile to 375 tokens and 97 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tri-net/specs/multipath_router.t27","category":"tri-net/specs","name":"multipath_router","module":"MultiPathRouter","lines":135,"bytes":4974,"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","health":"warn","tokens":567,"nodes":229,"depth":7,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":4046,"rust":1108,"verilog":6882,"verilog_hir":749,"zig":3440},"repo":"tri-net","kinds":{"Module":7,"ConstDecl":3,"ExprLiteral":64,"FnDecl":5,"StmtLocal":19,"ExprIndex":4,"ExprIdentifier":40,"StmtIf":4,"ExprBinary":29,"StmtAssign":2,"ExprFieldAccess":7,"ExprReturn":7,"TestBlock":5,"ExprArrayLiteral":1,"ExprCall":21,"StmtExpr":11},"tags":["domain/other","has/functions","has/tests","health/warn","issue/type-errors","size/small","src/tri-net"],"summary":"Declares 5 functions and 3 constants. Carries 5 tests. 135 lines compile to 567 tokens and 229 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 6.7 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/multipath_routing.t27","category":"tri-net/specs","name":"multipath_routing","module":"multipath_routing","lines":382,"bytes":13973,"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","health":"ok","tokens":2438,"nodes":1104,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13048,"rust":5161,"verilog":20615,"verilog_hir":1898,"zig":10902},"repo":"tri-net","kinds":{"Module":34,"UseDecl":1,"ConstDecl":5,"ExprLiteral":355,"FnDecl":20,"ExprReturn":30,"ExprBinary":125,"ExprIdentifier":237,"ExprArrayLiteral":1,"StmtIf":28,"ExprIndex":1,"StmtLocal":21,"ExprCall":168,"StmtAssign":36,"ExprUnary":1,"StmtWhile":1,"TestBlock":16,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 20 functions and 5 constants. Carries 16 tests. 382 lines compile to 2,438 tokens and 1,104 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 20.1 KB. Clean through every layer."},{"path":"tri-net/specs/network_analytics.t27","category":"tri-net/specs","name":"network_analytics","module":"NetworkAnalytics","lines":278,"bytes":9552,"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","health":"ok","tokens":1483,"nodes":631,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9435,"rust":3791,"verilog":16088,"verilog_hir":1789,"zig":7722},"repo":"tri-net","kinds":{"Module":6,"UseDecl":1,"ConstDecl":9,"ExprLiteral":181,"FnDecl":21,"ExprReturn":26,"ExprBinary":78,"ExprIdentifier":126,"ExprFieldAccess":8,"ExprCall":92,"StmtLocal":13,"StmtIf":5,"TestBlock":18,"StmtAssign":23,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 21 functions and 9 constants. Carries 18 tests. 278 lines compile to 1,483 tokens and 631 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.7 KB. Clean through every layer."},{"path":"tri-net/specs/network_coding.t27","category":"tri-net/specs","name":"network_coding","module":"NetworkCoding","lines":297,"bytes":9930,"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","health":"ok","tokens":1800,"nodes":729,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10239,"rust":3732,"verilog":18177,"verilog_hir":2031,"zig":7824},"repo":"tri-net","kinds":{"Module":10,"UseDecl":1,"ConstDecl":3,"ExprLiteral":252,"FnDecl":22,"ExprReturn":25,"ExprBinary":83,"ExprIdentifier":119,"StmtLocal":45,"ExprCall":108,"StmtIf":9,"StmtAssign":8,"ExprArrayLiteral":1,"ExprIndex":1,"TestBlock":18,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 22 functions and 3 constants. Carries 18 tests. 297 lines compile to 1,800 tokens and 729 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.8 KB. Clean through every layer."},{"path":"tri-net/specs/network_metrics.t27","category":"tri-net/specs","name":"network_metrics","module":"NetworkMetrics","lines":79,"bytes":1620,"description":"Network metrics - ultra-minimal, all-inline, no-let","health":"ok","tokens":324,"nodes":131,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2565,"rust":535,"verilog":5108,"verilog_hir":638,"zig":2064},"repo":"tri-net","kinds":{"Module":4,"UseDecl":1,"FnDecl":7,"ExprReturn":9,"ExprIdentifier":17,"ExprBinary":15,"ExprLiteral":35,"StmtIf":2,"ExprFieldAccess":3,"TestBlock":8,"StmtExpr":8,"ExprCall":19,"StmtAssign":3},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions. Carries 8 tests. 79 lines compile to 324 tokens and 131 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tri-net/specs/network_orchestrator.t27","category":"tri-net/specs","name":"network_orchestrator","module":"network_orchestrator","lines":377,"bytes":12658,"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","health":"ok","tokens":2040,"nodes":784,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12831,"rust":5827,"verilog":19507,"verilog_hir":2972,"zig":9884},"repo":"tri-net","kinds":{"Module":48,"UseDecl":1,"ConstDecl":21,"ExprLiteral":155,"FnDecl":33,"ExprReturn":52,"ExprBinary":131,"ExprIdentifier":197,"StmtLocal":32,"ExprCall":51,"StmtIf":25,"StmtWhile":5,"ExprIndex":8,"StmtAssign":12,"TestBlock":3,"StmtExpr":9,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 33 functions and 21 constants. Carries 3 tests. 377 lines compile to 2,040 tokens and 784 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.0 KB. Clean through every layer."},{"path":"tri-net/specs/network_simulator.t27","category":"tri-net/specs","name":"network_simulator","module":"network_simulator","lines":377,"bytes":12185,"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","health":"warn","tokens":2119,"nodes":777,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":12725,"rust":7378,"verilog":19385,"verilog_hir":3539,"zig":9111},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":14,"ExprLiteral":157,"FnDecl":43,"ExprReturn":53,"ExprBinary":155,"ExprIdentifier":189,"StmtLocal":36,"ExprCall":58,"StmtIf":14,"StmtAssign":12,"ExprIndex":6,"StmtWhile":1,"StmtExpr":9,"TestBlock":2},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 43 functions and 14 constants. Carries 2 tests. 377 lines compile to 2,119 tokens and 777 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 18.9 KB. Compiles with 1 type error."},{"path":"tri-net/specs/nickname_directory.t27","category":"tri-net/specs","name":"nickname_directory","module":"NicknameDirectory","lines":204,"bytes":8612,"description":"Nickname directory policy. String normalization and network storage are adapter responsibilities. phi^2 + phi^-2 = 3","health":"ok","tokens":1068,"nodes":471,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8929,"rust":2913,"verilog":13500,"verilog_hir":1622,"zig":6979},"repo":"tri-net","kinds":{"Module":12,"UseDecl":1,"ConstDecl":12,"ExprLiteral":163,"FnDecl":11,"StmtIf":11,"ExprBinary":59,"ExprIdentifier":57,"ExprReturn":22,"ExprUnary":4,"TestBlock":11,"StmtExpr":33,"ExprCall":69,"InvariantBlock":5,"BenchBlock":1},"tags":["domain/other","has/benches","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 11 functions and 12 constants. Carries 11 tests, 5 invariants and 1 bench. 204 lines compile to 1,068 tokens and 471 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Clean through every layer."},{"path":"tri-net/specs/olsr_routing.t27","category":"tri-net/specs","name":"olsr_routing","module":"OlsrRouting","lines":182,"bytes":6252,"description":"OLSR-style routing -- ultra-simplified for T27. Neighbor entries are u32-packed [id:8][quality:8][last_seen:16]; the 4-slot neighbor table travels as a [u32; 4] array parameter (read paths) while write paths return the UPDATED ENTRY plus a slot decision, so every function stays scalar-valued and lowers to all backends. (The original wave-era file packed four entries into one u32 with 256-bit masks and","health":"ok","tokens":1191,"nodes":428,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5821,"rust":2570,"verilog":9797,"verilog_hir":1234,"zig":5225},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":99,"FnDecl":15,"ExprReturn":27,"ExprBinary":51,"ExprIdentifier":85,"ExprCall":69,"ExprIndex":13,"ExprFieldAccess":1,"StmtIf":12,"StmtLocal":6,"TestBlock":6,"StmtAssign":3,"StmtExpr":16,"ExprArrayLiteral":4},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 15 functions and 4 constants. Carries 6 tests. 182 lines compile to 1,191 tokens and 428 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 9.6 KB. Clean through every layer."},{"path":"tri-net/specs/packet_loss_injection.t27","category":"tri-net/specs","name":"packet_loss_injection","module":"PacketLossInjection","lines":168,"bytes":4873,"description":"Packet loss injection - simulates network errors Tests CRC error detection, lost ACKs, duplicates, replay","health":"ok","tokens":753,"nodes":330,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5123,"rust":1134,"verilog":9777,"verilog_hir":855,"zig":4308},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":6,"ExprLiteral":68,"FnDecl":9,"StmtIf":1,"ExprBinary":34,"ExprIdentifier":95,"ExprReturn":8,"ExprFieldAccess":1,"ExprCall":37,"TestBlock":15,"StmtAssign":35,"StmtExpr":17},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 9 functions and 6 constants. Carries 15 tests. 168 lines compile to 753 tokens and 330 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 9.5 KB. Clean through every layer."},{"path":"tri-net/specs/packet_queue.t27","category":"tri-net/specs","name":"packet_queue","module":"PacketQueue","lines":125,"bytes":3112,"description":"Packet queue - all inline, no intermediate variables","health":"ok","tokens":715,"nodes":321,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4009,"rust":1131,"verilog":7355,"verilog_hir":639,"zig":3426},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":1,"ExprLiteral":65,"FnDecl":8,"ExprReturn":11,"ExprFieldAccess":7,"ExprBinary":32,"ExprIdentifier":72,"ExprCall":66,"StmtIf":3,"StmtLocal":6,"TestBlock":9,"StmtExpr":11,"StmtAssign":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 8 functions and 1 constant. Carries 9 tests. 125 lines compile to 715 tokens and 321 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 7.2 KB. Clean through every layer."},{"path":"tri-net/specs/pattern_predictor.t27","category":"tri-net/specs","name":"pattern_predictor","module":"pattern_predictor","lines":411,"bytes":14654,"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","health":"warn","tokens":2931,"nodes":1334,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13361,"rust":5266,"verilog":21188,"verilog_hir":2302,"zig":11233},"repo":"tri-net","kinds":{"Module":36,"UseDecl":1,"ConstDecl":3,"ExprLiteral":567,"FnDecl":17,"ExprReturn":29,"ExprBinary":128,"ExprIdentifier":230,"ExprArrayLiteral":1,"StmtIf":26,"ExprIndex":1,"StmtLocal":33,"StmtAssign":46,"ExprCall":179,"TestBlock":16,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 17 functions and 3 constants. Carries 16 tests. 411 lines compile to 2,931 tokens and 1,334 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 20.7 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/performance_benchmarks.t27","category":"tri-net/specs","name":"performance_benchmarks","module":"PerformanceBenchmarks","lines":196,"bytes":5697,"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","health":"ok","tokens":1041,"nodes":490,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6434,"rust":1253,"verilog":12036,"verilog_hir":1066,"zig":4759},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":3,"ExprLiteral":94,"FnDecl":13,"ExprReturn":16,"ExprBinary":54,"ExprIdentifier":130,"StmtIf":3,"ExprCall":90,"TestBlock":16,"StmtAssign":41,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 13 functions and 3 constants. Carries 16 tests. 196 lines compile to 1,041 tokens and 490 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Clean through every layer."},{"path":"tri-net/specs/performance_profiler.t27","category":"tri-net/specs","name":"performance_profiler","module":"performance_profiler","lines":374,"bytes":11788,"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","health":"warn","tokens":2027,"nodes":802,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":12606,"rust":7555,"verilog":19106,"verilog_hir":3689,"zig":8850},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":4,"ExprLiteral":178,"FnDecl":40,"ExprReturn":47,"ExprBinary":174,"ExprIdentifier":193,"StmtLocal":35,"StmtWhile":6,"StmtIf":17,"ExprCall":34,"ExprIndex":12,"StmtAssign":24,"TestBlock":2,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 40 functions and 4 constants. Carries 2 tests. 374 lines compile to 2,027 tokens and 802 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.7 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/power_monitoring.t27","category":"tri-net/specs","name":"power_monitoring","module":"PowerMonitoring","lines":257,"bytes":8680,"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","health":"warn","tokens":1392,"nodes":631,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":9056,"rust":3322,"verilog":16188,"verilog_hir":1244,"zig":7199},"repo":"tri-net","kinds":{"Module":14,"UseDecl":1,"ConstDecl":7,"ExprLiteral":150,"FnDecl":14,"ExprReturn":18,"ExprBinary":64,"ExprIdentifier":163,"ExprCall":94,"StmtLocal":20,"StmtIf":10,"StmtAssign":33,"TestBlock":20,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 14 functions and 7 constants. Carries 20 tests. 257 lines compile to 1,392 tokens and 631 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.8 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/production_deployment.t27","category":"tri-net/specs","name":"production_deployment","module":"ProductionDeployment","lines":199,"bytes":6443,"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","health":"ok","tokens":1118,"nodes":470,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7670,"rust":2811,"verilog":13334,"verilog_hir":1866,"zig":5435},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":9,"ExprLiteral":141,"FnDecl":20,"ExprReturn":20,"ExprBinary":79,"ExprIdentifier":82,"ExprCall":56,"StmtLocal":1,"StmtIf":4,"StmtAssign":16,"TestBlock":15,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 20 functions and 9 constants. Carries 15 tests. 199 lines compile to 1,118 tokens and 470 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 13.0 KB. Clean through every layer."},{"path":"tri-net/specs/production_scenarios.t27","category":"tri-net/specs","name":"production_scenarios","module":"ProductionScenarios","lines":212,"bytes":7245,"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","health":"ok","tokens":1110,"nodes":508,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7533,"rust":1490,"verilog":12809,"verilog_hir":1333,"zig":6358},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":5,"ExprLiteral":101,"FnDecl":13,"ExprReturn":20,"ExprBinary":51,"ExprFieldAccess":2,"ExprIdentifier":126,"ExprCall":99,"StmtIf":7,"TestBlock":14,"StmtAssign":29,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 13 functions and 5 constants. Carries 14 tests. 212 lines compile to 1,110 tokens and 508 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Clean through every layer."},{"path":"tri-net/specs/quarantine_manager.t27","category":"tri-net/specs","name":"quarantine_manager","module":"quarantine_manager","lines":348,"bytes":11780,"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","health":"ok","tokens":1793,"nodes":732,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11964,"rust":5963,"verilog":18481,"verilog_hir":2469,"zig":9066},"repo":"tri-net","kinds":{"Module":47,"UseDecl":1,"ConstDecl":14,"ExprLiteral":136,"FnDecl":31,"ExprReturn":55,"ExprBinary":117,"ExprIdentifier":182,"StmtLocal":32,"ExprCall":63,"StmtIf":26,"StmtWhile":2,"ExprIndex":2,"StmtAssign":9,"TestBlock":3,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 31 functions and 14 constants. Carries 3 tests. 348 lines compile to 1,793 tokens and 732 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Clean through every layer."},{"path":"tri-net/specs/redundancy_management.t27","category":"tri-net/specs","name":"redundancy_management","module":"RedundancyManagement","lines":333,"bytes":11228,"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","health":"warn","tokens":2253,"nodes":989,"depth":14,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10544,"rust":5019,"verilog":17470,"verilog_hir":1466,"zig":8805},"repo":"tri-net","kinds":{"Module":35,"UseDecl":1,"ConstDecl":4,"ExprLiteral":352,"FnDecl":17,"ExprReturn":30,"ExprBinary":81,"ExprIdentifier":167,"ExprArrayLiteral":5,"StmtLocal":17,"ExprIndex":5,"StmtIf":28,"ExprCall":176,"StmtAssign":35,"TestBlock":16,"StmtExpr":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 17 functions and 4 constants. Carries 16 tests. 333 lines compile to 2,253 tokens and 989 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.1 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/resource_scheduler.t27","category":"tri-net/specs","name":"resource_scheduler","module":"ResourceScheduler","lines":381,"bytes":14351,"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","health":"warn","tokens":2487,"nodes":1119,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":14600,"rust":7825,"verilog":23602,"verilog_hir":2023,"zig":12212},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":6,"ExprLiteral":283,"FnDecl":23,"ExprReturn":24,"ExprBinary":123,"ExprIdentifier":280,"ExprArrayLiteral":1,"StmtIf":26,"ExprIndex":1,"StmtLocal":46,"ExprCall":179,"StmtAssign":53,"TestBlock":18,"StmtExpr":28},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 23 functions and 6 constants. Carries 18 tests. 381 lines compile to 2,487 tokens and 1,119 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 23.0 KB. Compiles with 1 type error."},{"path":"tri-net/specs/routing_etx.t27","category":"tri-net/specs","name":"routing_etx","module":"RoutingEtx","lines":172,"bytes":6561,"description":"tri-net/specs/routing_etx.t27 Fixed-point formalization of the ETX link metric in src/routing.rs (T27-first). Delivery ratios and the RTI penalty are expressed in MILLI units (1000 = 1.0), ETX likewise in milli (1000 = 1.0 transmissions). f32::INFINITY has no integer analogue, so a DEAD link is the sentinel 0 (a real ETX is always >= 1000, so 0 is unambiguous). The live routing.rs path still runs the f32 version; a Rust","health":"ok","tokens":628,"nodes":170,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4095,"rust":1481,"verilog":7819,"verilog_hir":859,"zig":4162},"repo":"tri-net","kinds":{"Module":10,"UseDecl":1,"ConstDecl":5,"ExprLiteral":12,"FnDecl":5,"StmtIf":9,"ExprBinary":17,"ExprIdentifier":35,"ExprReturn":14,"StmtLocal":1,"ExprCall":1,"TestBlock":14,"StmtExpr":44,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 5 functions and 5 constants. Carries 14 tests and 2 invariants. 172 lines compile to 628 tokens and 170 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Clean through every layer."},{"path":"tri-net/specs/rti_alert.t27","category":"tri-net/specs","name":"rti_alert","module":"RtiAlert","lines":66,"bytes":2204,"description":"tri-net/specs/rti_alert.t27 Partial spec-first flip of src/rti_alert.rs (T27-first). The centroid/velocity math there is f32 (sqrt/powi) and can't be expressed in T27's integer world, but the anomaly-severity -> alert-severity STEP MAPPING is pure integer logic: it is lifted here as the single source of truth so the Rust node can include! the generated function instead of hand-writing the ladder.","health":"ok","tokens":198,"nodes":59,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2016,"rust":264,"verilog":3402,"verilog_hir":322,"zig":1504},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":4,"ExprLiteral":7,"FnDecl":1,"StmtIf":3,"ExprBinary":3,"ExprIdentifier":7,"ExprReturn":4,"TestBlock":4,"StmtExpr":16,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 1 function and 4 constants. Carries 4 tests and 2 invariants. 66 lines compile to 198 tokens and 59 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Clean through every layer."},{"path":"tri-net/specs/rti_security.t27","category":"tri-net/specs","name":"rti_security","module":"RTISecurity","lines":275,"bytes":8102,"description":"RTI Security — passive perimeter monitoring via mesh RSSI Variant C: commercial security system, no cameras, AI classification phi^2 + phi^-2 = 3","health":"ok","tokens":1158,"nodes":507,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8114,"rust":3051,"verilog":14804,"verilog_hir":1351,"zig":6837},"repo":"tri-net","kinds":{"Module":23,"UseDecl":1,"ConstDecl":13,"ExprLiteral":146,"FnDecl":10,"StmtIf":22,"ExprIdentifier":85,"ExprBinary":57,"ExprReturn":31,"StmtLocal":6,"ExprCall":54,"ExprFieldAccess":3,"TestBlock":26,"StmtExpr":26,"InvariantBlock":4},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 13 constants. Carries 26 tests and 4 invariants. 275 lines compile to 1,158 tokens and 507 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.5 KB. Clean through every layer."},{"path":"tri-net/specs/self_healing.t27","category":"tri-net/specs","name":"self_healing","module":"SelfHealing","lines":295,"bytes":10407,"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","health":"ok","tokens":1698,"nodes":746,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10963,"rust":4061,"verilog":18987,"verilog_hir":1843,"zig":8472},"repo":"tri-net","kinds":{"Module":6,"UseDecl":1,"ConstDecl":4,"ExprLiteral":230,"FnDecl":22,"ExprReturn":27,"ExprBinary":84,"ExprIdentifier":139,"StmtLocal":19,"ExprCall":124,"StmtIf":5,"TestBlock":22,"StmtAssign":30,"StmtExpr":33},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 22 functions and 4 constants. Carries 22 tests. 295 lines compile to 1,698 tokens and 746 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.5 KB. Clean through every layer."},{"path":"tri-net/specs/swarm_coordinator.t27","category":"tri-net/specs","name":"swarm_coordinator","module":"SwarmCoordinator","lines":343,"bytes":13722,"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","health":"ok","tokens":2536,"nodes":1157,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13383,"rust":4369,"verilog":20273,"verilog_hir":1785,"zig":11192},"repo":"tri-net","kinds":{"Module":51,"UseDecl":1,"ConstDecl":6,"ExprLiteral":319,"FnDecl":17,"ExprReturn":18,"ExprBinary":160,"ExprIdentifier":262,"ExprArrayLiteral":1,"StmtIf":34,"ExprIndex":1,"StmtLocal":16,"ExprCall":182,"StmtAssign":48,"TestBlock":16,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 17 functions and 6 constants. Carries 16 tests. 343 lines compile to 2,536 tokens and 1,157 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.8 KB. Clean through every layer."},{"path":"tri-net/specs/test_framework.t27","category":"tri-net/specs","name":"test_framework","module":"test_framework","lines":417,"bytes":13256,"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","health":"warn","tokens":2325,"nodes":925,"depth":18,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":14030,"rust":7061,"verilog":21317,"verilog_hir":3892,"zig":10147},"repo":"tri-net","kinds":{"Module":52,"UseDecl":1,"ConstDecl":14,"ExprLiteral":212,"FnDecl":45,"ExprReturn":65,"ExprBinary":198,"ExprIdentifier":201,"StmtLocal":36,"ExprCall":45,"StmtIf":24,"StmtWhile":4,"ExprIndex":3,"StmtAssign":15,"TestBlock":2,"StmtExpr":8},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 45 functions and 14 constants. Carries 2 tests. 417 lines compile to 2,325 tokens and 925 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Compiles with 4 type errors."},{"path":"tri-net/specs/test_validator.t27","category":"tri-net/specs","name":"test_validator","module":"test_validator","lines":392,"bytes":13118,"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","health":"warn","tokens":2167,"nodes":827,"depth":12,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13540,"rust":7665,"verilog":20296,"verilog_hir":3900,"zig":9761},"repo":"tri-net","kinds":{"Module":32,"UseDecl":1,"ConstDecl":23,"ExprLiteral":207,"FnDecl":45,"ExprReturn":56,"ExprBinary":169,"ExprIdentifier":176,"StmtLocal":22,"ExprCall":50,"StmtIf":17,"StmtWhile":2,"ExprIndex":1,"StmtAssign":17,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 45 functions and 23 constants. Carries 2 tests. 392 lines compile to 2,167 tokens and 827 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 19.8 KB. Compiles with 2 type errors."},{"path":"tri-net/specs/timer.t27","category":"tri-net/specs","name":"timer","module":"MeshTimer","lines":99,"bytes":2372,"description":"Simple exponential backoff timer","health":"ok","tokens":413,"nodes":223,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3006,"rust":291,"verilog":5784,"verilog_hir":431,"zig":1988},"repo":"tri-net","kinds":{"Module":9,"UseDecl":1,"ConstDecl":1,"ExprLiteral":54,"FnDecl":3,"StmtIf":4,"ExprBinary":24,"ExprIdentifier":46,"ExprReturn":7,"TestBlock":8,"StmtAssign":17,"ExprCall":34,"StmtExpr":15},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions and 1 constant. Carries 8 tests. 99 lines compile to 413 tokens and 223 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"tri-net/specs/timing_closure.t27","category":"tri-net/specs","name":"timing_closure","module":"TimingClosure","lines":218,"bytes":6862,"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","health":"ok","tokens":1050,"nodes":465,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7194,"rust":2168,"verilog":13143,"verilog_hir":1424,"zig":5275},"repo":"tri-net","kinds":{"Module":11,"UseDecl":1,"ConstDecl":8,"ExprLiteral":124,"FnDecl":14,"ExprReturn":21,"ExprBinary":67,"ExprIdentifier":93,"StmtIf":7,"ExprCall":60,"TestBlock":18,"StmtAssign":19,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 8 constants. Carries 18 tests. 218 lines compile to 1,050 tokens and 465 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"tri-net/specs/topology_visualizer.t27","category":"tri-net/specs","name":"topology_visualizer","module":"topology_visualizer","lines":436,"bytes":14894,"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","health":"warn","tokens":2470,"nodes":984,"depth":16,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13973,"rust":9871,"verilog":21311,"verilog_hir":2709,"zig":11159},"repo":"tri-net","kinds":{"Module":39,"UseDecl":1,"ConstDecl":21,"ExprLiteral":176,"FnDecl":31,"ExprReturn":38,"ExprBinary":181,"ExprIdentifier":289,"StmtIf":18,"StmtLocal":66,"ExprCall":55,"StmtWhile":9,"ExprIndex":20,"StmtAssign":31,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 31 functions and 21 constants. Carries 2 tests. 436 lines compile to 2,470 tokens and 984 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Compiles with 1 type error."},{"path":"tri-net/specs/traffic_animator.t27","category":"tri-net/specs","name":"traffic_animator","module":"traffic_animator","lines":496,"bytes":17298,"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","health":"warn","tokens":2879,"nodes":1138,"depth":11,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":17444,"rust":11535,"verilog":26024,"verilog_hir":4603,"zig":12840},"repo":"tri-net","kinds":{"Module":36,"UseDecl":1,"ConstDecl":12,"ExprLiteral":248,"FnDecl":49,"ExprReturn":56,"ExprBinary":255,"ExprIdentifier":294,"StmtLocal":57,"ExprCall":45,"StmtIf":20,"StmtAssign":32,"StmtWhile":5,"ExprIndex":18,"ExprArrayLiteral":1,"TestBlock":2,"StmtExpr":7},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tri-net"],"summary":"Declares 49 functions and 12 constants. Carries 2 tests. 496 lines compile to 2,879 tokens and 1,138 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 25.4 KB. Compiles with 3 type errors."},{"path":"tri-net/specs/transport_tx_fsm.t27","category":"tri-net/specs","name":"transport_tx_fsm","module":"TransportTxFsm","lines":242,"bytes":7932,"description":"Transport TX FSM for mesh data frame transmission Port from trios-mesh/src/daemon.rs Node::seal_data() Simplified: no crypto, FSM-based retry logic","health":"ok","tokens":1202,"nodes":632,"depth":26,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7487,"rust":840,"verilog":13197,"verilog_hir":807,"zig":6691},"repo":"tri-net","kinds":{"Module":53,"UseDecl":1,"ConstDecl":10,"ExprLiteral":159,"FnDecl":5,"StmtIf":26,"ExprBinary":69,"ExprIdentifier":145,"ExprReturn":31,"ExprFieldAccess":8,"TestBlock":17,"StmtAssign":27,"ExprCall":54,"StmtExpr":27},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 5 functions and 10 constants. Carries 17 tests. 242 lines compile to 1,202 tokens and 632 AST nodes, depth 26. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"tri-net/specs/tri_a2a.t27","category":"tri-net/specs","name":"tri_a2a","module":"TriA2A","lines":728,"bytes":48469,"description":"TRI-NET A2A-over-mesh: carry Agent-to-Agent messages as SEALED mesh datagrams, reusing the existing stack -- MeshWire (wire.t27, 11-byte header), RouterTtl (router_ttl.t27, multi-hop + split-horizon), CryptoFrame (crypto_frame.t27, AEAD + ratchet + replay). This spec adds ONLY the A2A message-class layer; it creates no new transport. The hosted skill is a GoldenFloat op (the workload GF was built for): an agent","health":"ok","tokens":4845,"nodes":2347,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":33445,"rust":8568,"verilog":44592,"verilog_hir":2211,"zig":28890},"repo":"tri-net","kinds":{"Module":107,"UseDecl":1,"ConstDecl":22,"ExprLiteral":821,"FnDecl":26,"StmtIf":83,"ExprBinary":262,"ExprIdentifier":472,"ExprReturn":109,"ExprCall":283,"StmtLocal":2,"ExprFieldAccess":4,"TestBlock":22,"StmtExpr":132,"StmtAssign":1},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 26 functions and 22 constants. Carries 22 tests. 728 lines compile to 4,845 tokens and 2,347 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 43.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_a2a_card.t27","category":"tri-net/specs","name":"tri_a2a_card","module":"TriA2ACard","lines":259,"bytes":13470,"description":"TRI-NET A2A agent card: what a node ADVERTISES it can compute, so a requester routes a task only to a host that hosts its (format-family, width). Without this, tri_a2a knows a skill's family (skill_family) but nothing checks a HOST actually serves it -- a GF-T16 task could be sent to a GF16-only node and silently fail. The card packs two masks into one u32 (no allocation, fits a heartbeat body): card = (family_mask << 16) | width_mask","health":"ok","tokens":1656,"nodes":766,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9944,"rust":2786,"verilog":14730,"verilog_hir":1243,"zig":7980},"repo":"tri-net","kinds":{"Module":18,"UseDecl":1,"ConstDecl":11,"ExprLiteral":193,"FnDecl":18,"ExprReturn":32,"ExprBinary":102,"ExprIdentifier":159,"ExprCall":152,"StmtIf":14,"TestBlock":8,"StmtAssign":7,"StmtExpr":45,"StmtLocal":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 18 functions and 11 constants. Carries 8 tests. 259 lines compile to 1,656 tokens and 766 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_a2a_wire.t27","category":"tri-net/specs","name":"tri_a2a_wire","module":"TriA2AWire","lines":184,"bytes":9401,"description":"TRI-NET A2A message wire layout inside the SEALED mesh payload. tri_a2a defines the message classes and port demux; this fixes the BYTE layout an endpoint parses after decrypting (a relay never parses it -- the payload is ciphertext, demuxed by port, per tri_a2a). Fixed-length header (no variable-length parsing, so no length-confusion / injection surface, unlike JSON-RPC A2A): [ msg_class(1) | task_id(4, big-endian) | skill(2, big-endian) | body... ]","health":"ok","tokens":1139,"nodes":536,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6734,"rust":1916,"verilog":10152,"verilog_hir":1138,"zig":5261},"repo":"tri-net","kinds":{"Module":12,"UseDecl":1,"ConstDecl":17,"ExprLiteral":233,"FnDecl":10,"ExprReturn":19,"ExprBinary":64,"ExprIdentifier":59,"StmtIf":9,"TestBlock":7,"StmtExpr":34,"ExprCall":71},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 17 constants. Carries 7 tests. 184 lines compile to 1,139 tokens and 536 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 9.9 KB. Clean through every layer."},{"path":"tri-net/specs/tri_challenge.t27","category":"tri-net/specs","name":"tri_challenge","module":"TriChallenge","lines":434,"bytes":20868,"description":"TRI-NET DePIN challenge game: decentralized dispute resolution, so no TRUSTED settlement is needed to catch a lying node. Any node (the challenger) may dispute another node's (the defender's) claimed receipt seal by posting a bond and its own independently computed seal. The dispute is resolved by ANYONE re-metering the same relayed stream to get the truth seal; the party whose seal disagrees with the truth LOSES and forfeits its bond to the winner. This makes challenging a liar profitable","health":"ok","tokens":2164,"nodes":999,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14384,"rust":4085,"verilog":21595,"verilog_hir":2119,"zig":11915},"repo":"tri-net","kinds":{"Module":26,"UseDecl":1,"ConstDecl":10,"ExprLiteral":279,"FnDecl":23,"ExprReturn":40,"ExprBinary":104,"ExprIdentifier":246,"StmtIf":17,"TestBlock":15,"StmtExpr":54,"ExprCall":123,"StmtAssign":49,"StmtLocal":8,"ExprFieldAccess":4},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 23 functions and 10 constants. Carries 15 tests. 434 lines compile to 2,164 tokens and 999 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.1 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_account.t27","category":"tri-net/specs","name":"tri_compute_account","module":"TriComputeAccount","lines":445,"bytes":24509,"description":"TRI-NET compute account: the conserved ledger the value layer was missing. tri_compute_settle mints rewards, tri_compute_bond locks collateral, and tri_compute_challenge slashes -- but nothing proved these move value without creating or destroying it. This spec models one node's account as (balance, locked) and pins the CONSERVATION invariants every operation must obey: lock/release keep total unchanged (value only moves between the two","health":"ok","tokens":1968,"nodes":934,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13764,"rust":1793,"verilog":21319,"verilog_hir":1483,"zig":11785},"repo":"tri-net","kinds":{"Module":23,"UseDecl":1,"FnDecl":18,"ExprReturn":29,"ExprBinary":98,"ExprIdentifier":135,"StmtIf":11,"StmtLocal":3,"ExprLiteral":338,"ExprCall":167,"TestBlock":21,"StmtAssign":25,"StmtExpr":65},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 18 functions. Carries 21 tests. 445 lines compile to 1,968 tokens and 934 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 20.8 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_bitnet.t27","category":"tri-net/specs","name":"tri_compute_bitnet","module":"TriComputeBitnet","lines":313,"bytes":17391,"description":"TRI-NET BitNet-style mixed layer attestation: ternary weights {-1,0,+1} times GF16 activations. This is the target workload the whole GF-vs-ternary analysis points at -- weights are the 0-DSP part (sign-select / popcount, as in trinet_mac32), the GF16 activation and accumulated result are the value part (magnitude, DSP or -nodsp soft-logic). One receipt binds BOTH: the packed_w ternary weight code, the GF16 activation hash, and the GF16 result. It also","health":"ok","tokens":1908,"nodes":944,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11606,"rust":2953,"verilog":16954,"verilog_hir":1304,"zig":9544},"repo":"tri-net","kinds":{"Module":22,"UseDecl":1,"ConstDecl":5,"ExprLiteral":370,"FnDecl":15,"ExprReturn":30,"ExprBinary":139,"ExprIdentifier":102,"StmtLocal":9,"StmtIf":15,"ExprCall":157,"TestBlock":11,"StmtExpr":56,"StmtAssign":12},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 15 functions and 5 constants. Carries 11 tests. 313 lines compile to 1,908 tokens and 944 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_bond.t27","category":"tri-net/specs","name":"tri_compute_bond","module":"TriComputeBond","lines":228,"bytes":12122,"description":"TRI-NET compute bond escrow: the shared collateral that settle + challenge act on. tri_compute_settle credits rewards and tri_compute_challenge slashes wrong results, but each moved a bare balance. This spec gives one bonded lifecycle: FREE -> post (lock collateral out of balance) -> LOCKED -> resolve -> RELEASED (honest, bond returns) or SLASHED (wrong, bond forfeited). Locking is guarded against underflow (you cannot post more than you hold).","health":"ok","tokens":1107,"nodes":514,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7928,"rust":1410,"verilog":11610,"verilog_hir":926,"zig":6809},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":7,"ExprLiteral":183,"FnDecl":10,"ExprReturn":17,"ExprBinary":58,"ExprIdentifier":64,"StmtIf":7,"StmtLocal":2,"ExprFieldAccess":4,"ExprCall":92,"TestBlock":8,"StmtExpr":41,"StmtAssign":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 10 functions and 7 constants. Carries 8 tests. 228 lines compile to 1,107 tokens and 514 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_challenge.t27","category":"tri-net/specs","name":"tri_compute_challenge","module":"TriComputeChallenge","lines":1103,"bytes":66744,"description":"TRI-NET compute dispute + slash: economic security around the GF compute core. Settlement (tri_compute_settle) pays a fresh, self-consistent receipt -- but self-consistent does NOT mean CORRECT. A dishonest executor can sign a fresh receipt for a WRONG GoldenFloat result and get paid. This spec adds the fraud proof: because GF ops are deterministic and bit-exact (conformance vectors), any challenger can recompute gf_op(a,b) with the golden GF unit and settle the","health":"ok","tokens":6942,"nodes":3125,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":43673,"rust":7203,"verilog":59417,"verilog_hir":3623,"zig":36425},"repo":"tri-net","kinds":{"Module":110,"UseDecl":1,"ConstDecl":9,"ExprLiteral":1208,"FnDecl":44,"ExprReturn":104,"ExprBinary":268,"ExprIdentifier":621,"StmtIf":60,"ExprCall":447,"StmtLocal":7,"ExprFieldAccess":6,"TestBlock":38,"StmtAssign":20,"StmtExpr":182},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 44 functions and 9 constants. Carries 38 tests. 1103 lines compile to 6,942 tokens and 3,125 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 58.0 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_gfvalid.t27","category":"tri-net/specs","name":"tri_compute_gfvalid","module":"TriComputeGfValid","lines":274,"bytes":15619,"description":"TRI-NET GoldenFloat validity, generalised across the GF family. The settle gate's is_finite_gf16 was hardcoded to GF16 (exp field == 0x3F): it silently passes inf/nan from GF4/GF8/GF14/GF20+ results, so garbage compute in any non-GF16 format could be paid. A GF value is special (inf/nan) exactly when its exponent field is all-ones; the field's width/position is per-format: GF4 E1 M2 | GF8 E3 M4 | GF12 E4 M7 | GF14 E5 M8 | GF16 E6 M9 | GF20 E7 M12","health":"ok","tokens":1577,"nodes":786,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10262,"rust":2081,"verilog":14958,"verilog_hir":1036,"zig":8397},"repo":"tri-net","kinds":{"Module":24,"UseDecl":1,"FnDecl":11,"StmtLocal":5,"ExprBinary":98,"ExprLiteral":319,"ExprIdentifier":60,"ExprReturn":30,"StmtIf":19,"ConstDecl":3,"ExprCall":142,"TestBlock":11,"StmtExpr":63},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 11 functions and 3 constants. Carries 11 tests. 274 lines compile to 1,577 tokens and 786 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_optimistic.t27","category":"tri-net/specs","name":"tri_compute_optimistic","module":"TriComputeOptimistic","lines":143,"bytes":7250,"description":"TRI-NET optimistic settlement lifecycle. The node's settle path is PESSIMISTIC: it recomputes every receipt before paying. That is safe but does not scale -- an optimistic path credits the reward PROVISIONALLY (with the executor's bond locked), opens a challenge window, and only a successful challenge (tri_compute_challenge) REVERSES the credit and slashes the bond; unchallenged receipts FINALIZE when the window closes. This is the compute analogue of an optimistic rollup (Keryx OPoI /","health":"ok","tokens":650,"nodes":295,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5153,"rust":969,"verilog":7645,"verilog_hir":950,"zig":3725},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":6,"ExprLiteral":94,"FnDecl":7,"StmtIf":6,"ExprBinary":37,"ExprIdentifier":40,"ExprReturn":13,"ExprCall":50,"TestBlock":5,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 7 functions and 6 constants. Carries 5 tests. 143 lines compile to 650 tokens and 295 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_payout.t27","category":"tri-net/specs","name":"tri_compute_payout","module":"TriComputePayout","lines":120,"bytes":5905,"description":"TRI-NET end-to-end payout: compose reputation weighting (tri_compute_reputation) with the pool split (tri_compute_pool) into one reward distribution, and pin the property that matters when the two are combined: a REPUTATION-WEIGHTED floor-div split still never over-issues (sum of shares <= pool). Higher-reputation nodes earn a larger share for equal raw work; a slashed (low-reputation) node earns less; an empty round pays nobody. Self-contained (mirrors the two source specs)","health":"ok","tokens":632,"nodes":311,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4238,"rust":314,"verilog":6602,"verilog_hir":637,"zig":3864},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"FnDecl":3,"StmtLocal":4,"ExprBinary":31,"ExprFieldAccess":11,"ExprIdentifier":58,"StmtIf":3,"ExprLiteral":99,"ExprReturn":6,"TestBlock":6,"StmtAssign":14,"ExprCall":48,"StmtExpr":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions. Carries 6 tests. 120 lines compile to 632 tokens and 311 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_pool.t27","category":"tri-net/specs","name":"tri_compute_pool","module":"TriComputePool","lines":237,"bytes":13270,"description":"TRI-NET multi-executor pool split: share one reward pool across several GF executors in proportion to their VERIFIED work, so a mesh of nodes -- not one -- earns from a round. Mirrors tri_settle's discipline: floor division, so the sum of shares never EXCEEDS the pool (no over-issuance; the floor remainder is simply not minted). A node with zero verified work earns zero. \"Work\" is the summed GoldenFloat width of a node's verified receipts (wider GF op = more work).","health":"ok","tokens":1106,"nodes":544,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7434,"rust":573,"verilog":11694,"verilog_hir":882,"zig":6691},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"FnDecl":6,"StmtLocal":6,"ExprBinary":64,"ExprFieldAccess":8,"ExprIdentifier":52,"StmtIf":6,"ExprLiteral":222,"ExprReturn":12,"ExprCall":92,"TestBlock":13,"StmtExpr":40,"StmtAssign":9},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 6 functions. Carries 13 tests. 237 lines compile to 1,106 tokens and 544 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_receipt.t27","category":"tri-net/specs","name":"tri_compute_receipt","module":"TriComputeReceipt","lines":538,"bytes":32317,"description":"TRI-NET compute-attesting receipt: bind an agent's COMPUTE result (not just relayed bytes) into a verifiable, chained receipt. tri_depin seals forwarded bytes (proof-of-relay); this seals WORK: a leaf commits {executor, task, input-hash, output, epoch} so a peer can confirm which executor produced which output for which input, and receipts chain prev->next like tri_ledger's state root -- tampering with any past result or reordering the chain changes the head.","health":"ok","tokens":4790,"nodes":2175,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":23913,"rust":8823,"verilog":34977,"verilog_hir":3021,"zig":19314},"repo":"tri-net","kinds":{"Module":71,"UseDecl":1,"ConstDecl":20,"ExprLiteral":884,"FnDecl":20,"ExprReturn":89,"ExprBinary":174,"ExprIdentifier":482,"StmtLocal":26,"ExprCall":204,"StmtIf":69,"TestBlock":22,"StmtAssign":55,"StmtExpr":58},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 20 functions and 20 constants. Carries 22 tests. 538 lines compile to 4,790 tokens and 2,175 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 34.2 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_reputation.t27","category":"tri-net/specs","name":"tri_compute_reputation","module":"TriComputeReputation","lines":265,"bytes":14508,"description":"TRI-NET executor reputation: weight the pool split (tri_compute_pool) by a node's track record, so a repeatedly-honest node earns a larger share for the same raw work and a slashed node earns less. Reputation rises on honest settlement (capped) and is halved on every slash -- a strong, memory-bearing penalty that a single fresh receipt cannot immediately undo.","health":"ok","tokens":1226,"nodes":584,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8508,"rust":1032,"verilog":13234,"verilog_hir":937,"zig":7465},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":6,"ExprLiteral":204,"FnDecl":8,"StmtLocal":2,"ExprBinary":56,"ExprFieldAccess":7,"ExprIdentifier":91,"StmtIf":7,"ExprReturn":15,"ExprCall":102,"TestBlock":14,"StmtExpr":42,"StmtAssign":14},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 6 constants. Carries 14 tests. 265 lines compile to 1,226 tokens and 584 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_safety.t27","category":"tri-net/specs","name":"tri_compute_safety","module":"TriComputeSafety","lines":115,"bytes":5141,"description":"TRI-NET compute safety gate: the single no-double-pay invariant that composes the three independent guards the stack grew -- freshness (tri_a2a.is_fresh, anti-replay), finiteness (tri_compute_settle.is_finite_gf16, no inf/nan garbage), and settled-once (a request pays at most one time). A reward is minted ONLY when all three hold. This is the choke point that makes double-pay, replay-pay, and garbage-pay impossible in one place, rather than relying on each ring separately.","health":"ok","tokens":578,"nodes":260,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4158,"rust":520,"verilog":6691,"verilog_hir":612,"zig":2889},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"FnDecl":4,"StmtIf":6,"ExprBinary":24,"ExprIdentifier":16,"ExprLiteral":120,"ExprReturn":10,"ExprCall":40,"TestBlock":8,"StmtExpr":18},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions. Carries 8 tests. 115 lines compile to 578 tokens and 260 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_compute_settle.t27","category":"tri-net/specs","name":"tri_compute_settle","module":"TriComputeSettle","lines":442,"bytes":27323,"description":"TRI-NET compute settlement: turn a VERIFIED compute-receipt into $TRI reward. tri_compute_receipt attests the work (device + GoldenFloat op + result, chained); tri_a2a gates freshness (anti-replay). This spec closes the loop to value: a fresh, verified receipt credits the executor's balance (saturating, like tri_ledger.balance_add) and folds the receipt's sign digest into an auditable settlement state root. A replayed or stale receipt pays ZERO.","health":"ok","tokens":3315,"nodes":1510,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":19293,"rust":3962,"verilog":25929,"verilog_hir":1737,"zig":16171},"repo":"tri-net","kinds":{"Module":33,"UseDecl":1,"ConstDecl":6,"ExprLiteral":726,"FnDecl":19,"ExprReturn":38,"ExprBinary":135,"ExprIdentifier":190,"StmtLocal":11,"StmtIf":19,"ExprFieldAccess":4,"ExprCall":214,"TestBlock":17,"StmtExpr":89,"StmtAssign":8},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 19 functions and 6 constants. Carries 17 tests. 442 lines compile to 3,315 tokens and 1,510 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 25.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_depin.t27","category":"tri-net/specs","name":"tri_depin","module":"TriDepin","lines":256,"bytes":12206,"description":"TRI-NET DePIN Proof-of-Relay accounting -- the on-node substrate a $TRI settlement layer meters. A node's \"physical work\" (Helium-style Proof of Coverage / Proof of Physical Work) is relaying mesh datagrams over the radio; this keeps a tamper-evident, order-sensitive, identity-bound running accumulator over the receipts of what it forwarded. The settlement layer mints $TRI proportional to metered bytes, gated by the accumulator seal so a node","health":"ok","tokens":1340,"nodes":630,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8028,"rust":1347,"verilog":13602,"verilog_hir":979,"zig":6287},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":2,"ExprLiteral":182,"FnDecl":8,"ExprReturn":11,"ExprBinary":47,"ExprIdentifier":176,"StmtLocal":7,"ExprCall":97,"StmtIf":3,"TestBlock":18,"StmtAssign":48,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 2 constants. Carries 18 tests. 256 lines compile to 1,340 tokens and 630 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 13.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_fec.t27","category":"tri-net/specs","name":"tri_fec","module":"TriFec","lines":67,"bytes":3071,"description":"TRI-NET relay FEC: single-erasure XOR recovery, so the integrity gate can RECOVER a channel-corrupted datagram instead of dropping it. A group of K data datagrams carries one parity datagram = their XOR (word by word). If exactly one datagram in the group fails its digest, the relay reconstructs it from the parity and the survivors, recomputes its digest, and -- if it now matches -- meters it. This raises the accepted fraction of an honest relay on a lossy radio link. Two or more","health":"ok","tokens":316,"nodes":138,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2473,"rust":325,"verilog":4382,"verilog_hir":538,"zig":1570},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":3,"ExprReturn":3,"ExprBinary":10,"ExprIdentifier":28,"TestBlock":5,"StmtAssign":10,"ExprCall":26,"ExprLiteral":46,"StmtExpr":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions. Carries 5 tests. 67 lines compile to 316 tokens and 138 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_add.t27","category":"tri-net/specs","name":"tri_gft_add","module":"TriGftAdd","lines":290,"bytes":16490,"description":"TRI-NET verifiable GF-T16 ADDITION (same-sign). tri_gft_arith recomputes a GF-T multiply so a verifier can catch a wrong product; ADD is the other hosted skill (SKILL_GFT16_ADD) and was NOT verifiable. This adds the same-sign add recompute: align the smaller operand to the larger exponent, add the significands, and renormalize a single carry -- so a receipt claiming a GF-T add result can be checked, not just trusted.","health":"ok","tokens":2596,"nodes":1077,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13899,"rust":3732,"verilog":21784,"verilog_hir":1571,"zig":10317},"repo":"tri-net","kinds":{"Module":21,"UseDecl":1,"ConstDecl":2,"ExprLiteral":415,"FnDecl":16,"StmtIf":10,"ExprBinary":77,"ExprIdentifier":278,"ExprReturn":26,"StmtLocal":21,"ExprCall":135,"TestBlock":8,"StmtExpr":49,"BenchBlock":1,"StmtAssign":17},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 16 functions and 2 constants. Carries 8 tests and 1 bench. 290 lines compile to 2,596 tokens and 1,077 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_arith.t27","category":"tri-net/specs","name":"tri_gft_arith","module":"TriGftArith","lines":330,"bytes":17780,"description":"TRI-NET GF-T (ternary-native GoldenFloat) verifiable multiply arithmetic. A compute receipt binds {format, op, operands, result} and is SIGNED, but a signature only attests WHO produced the result, not that the result is CORRECT. This spec lets a verifier RECOMPUTE the checkable core of a GF-T multiply -- its exponent -- and reject a receipt whose claimed exponent is wrong (compute fraud), independent of any signature.","health":"ok","tokens":2315,"nodes":1030,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14378,"rust":2508,"verilog":22287,"verilog_hir":2135,"zig":11581},"repo":"tri-net","kinds":{"Module":27,"UseDecl":1,"ConstDecl":3,"ExprLiteral":363,"FnDecl":17,"StmtLocal":12,"ExprBinary":123,"ExprIdentifier":216,"StmtIf":13,"ExprReturn":30,"ExprCall":138,"ExprFieldAccess":2,"TestBlock":10,"StmtExpr":60,"BenchBlock":1,"StmtAssign":14},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 17 functions and 3 constants. Carries 10 tests and 1 bench. 330 lines compile to 2,315 tokens and 1,030 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 21.8 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_ladder.t27","category":"tri-net/specs","name":"tri_gft_ladder","module":"TriGftLadder","lines":329,"bytes":17128,"description":"TRI-NET GF-T (ternary-native GoldenFloat) ladder geometry + validity. tri_compute_gfvalid.is_finite_gft16 hardcodes ONE rung (GF-T16, reserved offset 80). But GF-T is a LADDER -- GF-T4/8/16/32/... -- each with its own reserved special row at offset_max = 3^Et - 1, where Et is the number of balanced-ternary exponent trits (the ternary analogue of the all-ones binary exponent). This spec generalizes finiteness across the ladder so a receipt/settle path can validate a","health":"ok","tokens":1860,"nodes":987,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11372,"rust":4252,"verilog":19763,"verilog_hir":1010,"zig":9518},"repo":"tri-net","kinds":{"Module":47,"UseDecl":1,"ConstDecl":18,"ExprLiteral":267,"FnDecl":14,"StmtIf":46,"ExprBinary":129,"ExprIdentifier":163,"ExprReturn":60,"ExprCall":150,"TestBlock":9,"StmtExpr":68,"BenchBlock":1,"StmtAssign":14},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 14 functions and 18 constants. Carries 9 tests and 1 bench. 329 lines compile to 1,860 tokens and 987 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 19.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_gft_sub.t27","category":"tri-net/specs","name":"tri_gft_sub","module":"TriGftSub","lines":492,"bytes":21148,"description":"TRI-NET verifiable GF-T16 SUBTRACTION (different-sign add): the deferred case of tri_gft_add. Adding two DIFFERENT-sign operands subtracts magnitudes, which can CANCEL leading bits and needs variable renormalization -- the hard float case. Correctness needs FULL PRECISION during the subtract (a truncated alignment then a left-renormalization amplifies the error and mis-rounds). With |a| >= |b| and d = offset_a - offset_b:","health":"ok","tokens":4045,"nodes":1992,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":20062,"rust":7151,"verilog":32065,"verilog_hir":2380,"zig":16728},"repo":"tri-net","kinds":{"Module":176,"UseDecl":1,"ConstDecl":3,"ExprLiteral":558,"FnDecl":20,"StmtIf":134,"ExprBinary":289,"ExprIdentifier":454,"ExprReturn":154,"StmtLocal":12,"ExprCall":123,"ExprFieldAccess":3,"TestBlock":8,"StmtExpr":42,"BenchBlock":1,"StmtAssign":14},"tags":["domain/other","has/benches","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 20 functions and 3 constants. Carries 8 tests and 1 bench. 492 lines compile to 4,045 tokens and 1,992 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 31.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_ilv.t27","category":"tri-net/specs","name":"tri_ilv","module":"TriInterleave","lines":112,"bytes":5025,"description":"TRI-NET block interleaver: spread consecutive datagrams across FEC codewords so a BURST of channel errors (fading drops a run of adjacent datagrams) becomes at most one error per codeword -- which the single-erasure XOR-FEC (tri_fec) can then recover. Without interleaving a burst wipes >=2 datagrams of one codeword and FEC fails; with depth-D interleaving any burst of length <= D is survivable. Layout: a block of D*W datagrams. Codewords are the W-wide ROWS (one FEC group per","health":"ok","tokens":629,"nodes":296,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3846,"rust":549,"verilog":6317,"verilog_hir":640,"zig":2619},"repo":"tri-net","kinds":{"Module":5,"UseDecl":1,"ConstDecl":1,"ExprLiteral":119,"FnDecl":5,"ExprReturn":7,"ExprBinary":34,"ExprIdentifier":29,"StmtIf":2,"TestBlock":7,"StmtExpr":23,"ExprCall":60,"StmtAssign":3},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions and 1 constant. Carries 7 tests. 112 lines compile to 629 tokens and 296 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.2 KB. Clean through every layer."},{"path":"tri-net/specs/tri_ledger.t27","category":"tri-net/specs","name":"tri_ledger","module":"TriLedger","lines":110,"bytes":4620,"description":"TRI-NET DePIN ledger: persistent, append-only $TRI account state across rounds. Per-round settlement (tri_settle) + its Merkle round-root (tri_merkle) are stateless -- there is no lasting record of accumulated balances. This adds the ledger: a node's balance accumulates (saturating) across rounds, and the whole history is committed by an evolving STATE ROOT that chains each round's root into the previous state, exactly like a blockchain's state-root chain. Given the genesis and the sequence of round","health":"ok","tokens":654,"nodes":293,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3936,"rust":945,"verilog":6637,"verilog_hir":851,"zig":2708},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":2,"ExprLiteral":83,"FnDecl":5,"ExprReturn":6,"ExprBinary":29,"ExprIdentifier":82,"StmtLocal":8,"StmtIf":1,"ExprCall":38,"TestBlock":6,"StmtAssign":20,"StmtExpr":9},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions and 2 constants. Carries 6 tests. 110 lines compile to 654 tokens and 293 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 6.5 KB. Clean through every layer."},{"path":"tri-net/specs/tri_merkle.t27","category":"tri-net/specs","name":"tri_merkle","module":"TriMerkle","lines":185,"bytes":8139,"description":"TRI-NET DePIN settlement commitment: a Merkle tree over a payout round's receipts. The settlement publishes ONE root hash; each node proves its (receipt, reward) leaf is under that root with a logarithmic inclusion proof -- exactly Helium's model (store the root on-chain, claim a reward by a Merkle proof). This makes the whole round verifiable by anyone from a single 32-bit root, and lets a node prove it was paid correctly without trusting the settler.","health":"ok","tokens":1555,"nodes":707,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6636,"rust":1666,"verilog":10537,"verilog_hir":1312,"zig":5089},"repo":"tri-net","kinds":{"Module":3,"UseDecl":1,"ConstDecl":1,"ExprLiteral":217,"FnDecl":8,"ExprReturn":9,"ExprBinary":37,"ExprIdentifier":224,"StmtLocal":17,"ExprCall":113,"StmtIf":1,"TestBlock":7,"StmtExpr":9,"StmtAssign":60},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 8 functions and 1 constant. Carries 7 tests. 185 lines compile to 1,555 tokens and 707 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"tri-net/specs/tri_node_identity.t27","category":"tri-net/specs","name":"tri_node_identity","module":"TriNodeIdentity","lines":73,"bytes":3643,"description":"TRI-NET node identity binding: tie a receipt's `executor` field to the actual Ed25519 public key that signs it. Without this, a node signs with its own key but can claim ANY executor id (sig_ok only proves \"some valid signature\", not \"signed by the claimed executor\"). Bind executor = commitment to the signer's public key: executor_id = the low 32 bits of SHA-256(pubkey). A verifier recomputes it from the signing key and rejects a receipt whose executor field does not match -- so","health":"ok","tokens":468,"nodes":220,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3450,"rust":973,"verilog":5295,"verilog_hir":731,"zig":2245},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":2,"ExprLiteral":90,"FnDecl":3,"StmtIf":11,"ExprBinary":24,"ExprIdentifier":29,"ExprReturn":14,"TestBlock":3,"StmtExpr":10,"ExprCall":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions and 2 constants. Carries 3 tests. 73 lines compile to 468 tokens and 220 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.2 KB. Clean through every layer."},{"path":"tri-net/specs/tri_receipt_verify.t27","category":"tri-net/specs","name":"tri_receipt_verify","module":"TriReceiptVerify","lines":107,"bytes":4688,"description":"TRI-NET full compute-receipt acceptance: the capstone that ties the ring's three independent checks into ONE verdict. A receipt is accepted only if ALL hold: sig_ok -- a valid executor Ed25519 signature over the 256-bit digest (WHO) included -- the receipt digest is in the signed Merkle batch root (MEMBERSHIP) compute_ok -- the claimed GF-T result recomputes correctly (tri_gft_arith) (CORRECTNESS) Each check is independent and necessary: a valid signature over a wrong result,","health":"ok","tokens":478,"nodes":224,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3538,"rust":540,"verilog":5577,"verilog_hir":587,"zig":2418},"repo":"tri-net","kinds":{"Module":15,"UseDecl":1,"ConstDecl":6,"ExprLiteral":80,"FnDecl":3,"StmtIf":7,"ExprBinary":25,"ExprIdentifier":28,"ExprReturn":10,"TestBlock":4,"StmtExpr":15,"ExprCall":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 3 functions and 6 constants. Carries 4 tests. 107 lines compile to 478 tokens and 224 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_settle.t27","category":"tri-net/specs","name":"tri_settle","module":"TriSettle","lines":229,"bytes":9995,"description":"TRI-NET DePIN settlement aggregator -- turns per-epoch Proof-of-Relay receipts (from tri_depin) into a node's $TRI reward for a payout round. A round is a set of epochs; each node's verified total_bytes are summed, and the round's token pool is split proportionally to metered bytes. Pure arithmetic, verifiable, so a settlement contract (or any auditor) can recompute every payout.","health":"ok","tokens":1108,"nodes":523,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6743,"rust":862,"verilog":11634,"verilog_hir":875,"zig":5808},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":3,"ExprLiteral":156,"FnDecl":7,"StmtLocal":7,"ExprBinary":56,"ExprIdentifier":100,"StmtIf":6,"ExprReturn":13,"ExprFieldAccess":19,"TestBlock":17,"StmtAssign":23,"ExprCall":72,"StmtExpr":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/tri-net"],"summary":"Declares 7 functions and 3 constants. Carries 17 tests. 229 lines compile to 1,108 tokens and 523 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 11.4 KB. Clean through every layer."},{"path":"tri-net/specs/tri_sha256.t27","category":"tri-net/specs","name":"tri_sha256","module":"TriSha256","lines":875,"bytes":38995,"description":"SHA-256, single 512-bit block, unrolled (t27 has no loops/arrays). Pure u32 add/rotate/xor/shr -- no multiply. Verified against the known sha256(\"abc\") vector. This is the chain-verifiable hash for the DePIN Merkle commitments (Solana uses sha256 natively). AUTHORED via a one-shot text generator; the .t27 is the artifact.","health":"ok","tokens":10136,"nodes":4345,"depth":18,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":33776,"rust":1544,"verilog":55111,"verilog_hir":1523,"zig":32029},"repo":"tri-net","kinds":{"Module":19,"UseDecl":1,"FnDecl":11,"ExprReturn":20,"ExprBinary":660,"ExprIdentifier":1669,"ExprLiteral":746,"ExprCall":431,"StmtLocal":704,"StmtIf":9,"ConstDecl":1,"TestBlock":19,"StmtAssign":26,"StmtExpr":29},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 11 functions and 1 constant. Carries 19 tests. 875 lines compile to 10,136 tokens and 4,345 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 53.8 KB. Clean through every layer."},{"path":"tri-net/specs/tri_slash.t27","category":"tri-net/specs","name":"tri_slash","module":"TriSlash","lines":92,"bytes":3453,"description":"TRI-NET DePIN slashing: the game-theoretic backstop. Rewarding honest relay work (tri_settle) is only half of it -- a node must also LOSE something for lying. Each node posts a bond; when its signed receipt does NOT match an independent re-verification (the settlement re-meters the same stream and recomputes the seal, as the 3-node relay demo does bit-exactly), the bond is forfeited (slashed) from its $TRI balance. Now cheating is strictly worse than not participating, so an honest","health":"ok","tokens":351,"nodes":158,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2962,"rust":467,"verilog":5135,"verilog_hir":631,"zig":1839},"repo":"tri-net","kinds":{"Module":7,"UseDecl":1,"ConstDecl":1,"ExprLiteral":49,"FnDecl":4,"ExprReturn":7,"ExprBinary":16,"ExprIdentifier":27,"StmtLocal":1,"StmtIf":3,"ExprCall":21,"TestBlock":6,"StmtAssign":5,"StmtExpr":10},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions and 1 constant. Carries 6 tests. 92 lines compile to 351 tokens and 158 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tri-net/specs/trust_manager.t27","category":"tri-net/specs","name":"trust_manager","module":"trust_manager","lines":311,"bytes":11176,"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","health":"warn","tokens":1827,"nodes":772,"depth":9,"loss":0,"tcErrors":8,"failedBackends":[],"outBytes":{"c":11416,"rust":5651,"verilog":18921,"verilog_hir":2061,"zig":9082},"repo":"tri-net","kinds":{"Module":13,"UseDecl":1,"ConstDecl":5,"ExprLiteral":229,"FnDecl":21,"ExprReturn":24,"ExprBinary":80,"ExprIdentifier":160,"ExprArrayLiteral":1,"StmtIf":12,"ExprIndex":1,"StmtLocal":24,"StmtAssign":34,"ExprCall":127,"TestBlock":17,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/tri-net"],"summary":"Declares 21 functions and 5 constants. Carries 17 tests. 311 lines compile to 1,827 tokens and 772 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.5 KB. Compiles with 8 type errors."},{"path":"tri-net/specs/twr_timestamp.t27","category":"tri-net/specs","name":"twr_timestamp","module":"TwrTimestamp","lines":69,"bytes":2563,"description":"Two-way-ranging (TWR) nanosecond timestamp unit -- the hardware timing primitive that gives cm-accurate node geometry for RTI self-localization (replacing coarse RSSI ranging). A free-running counter is captured (latched) on a TX/RX event strobe; the captured timestamps feed the two-way double-difference, which cancels the constant clock OFFSET between two independent boards (and first-order drift). This is the source of truth generated to Verilog + Rust via the golden pipeline; the app's radar consumes the resulting geometry over packet 34.","health":"ok","tokens":250,"nodes":100,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2097,"rust":367,"verilog":4014,"verilog_hir":607,"zig":1190},"repo":"tri-net","kinds":{"Module":1,"UseDecl":1,"FnDecl":4,"ExprReturn":3,"ExprBinary":11,"ExprIdentifier":20,"ExprLiteral":28,"TestBlock":6,"StmtAssign":7,"ExprCall":13,"StmtExpr":6},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 4 functions. Carries 6 tests. 69 lines compile to 250 tokens and 100 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Clean through every layer."},{"path":"tri-net/specs/video_bridge.t27","category":"tri-net/specs","name":"video_bridge","module":"VideoBridge","lines":687,"bytes":24855,"description":"Video bridge protocol: phone ↔ mesh node video transport. Defines frame format for H.264 NAL units split into mesh-sized fragments. Phone sends raw H.264 Annex-B NAL units via UDP to mesh node. Node fragments into VSTREAM packets for mesh transport. Receiver reassembles and sends back to phone via UDP. phi^2 + phi^-2 = 3","health":"ok","tokens":2368,"nodes":984,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16218,"rust":4989,"verilog":31022,"verilog_hir":2107,"zig":14053},"repo":"tri-net","kinds":{"Module":16,"UseDecl":1,"ConstDecl":34,"ExprLiteral":331,"FnDecl":26,"StmtIf":15,"ExprBinary":114,"ExprIdentifier":90,"ExprReturn":41,"StmtLocal":21,"ExprFieldAccess":6,"ExprCall":144,"TestBlock":65,"StmtExpr":68,"InvariantBlock":12},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/tri-net"],"summary":"Declares 26 functions and 34 constants. Carries 65 tests and 12 invariants. 687 lines compile to 2,368 tokens and 984 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 30.3 KB. Clean through every layer."},{"path":"tri-net/specs/wire.t27","category":"tri-net/specs","name":"wire","module":"MeshWire","lines":121,"bytes":4189,"description":"tri-net/specs/wire.t27 Mesh datagram header, ported from src/wire.rs to T27 (spec-first). Fixed 11-byte header: [ver:1][kind:1][src:4 BE][dst:4 BE][ttl:1]. T27 has no byte arrays, so the serialized form is modeled as functions: header_byte(fields, idx) yields the idx-th header byte, and u32_be reassembles a big-endian word from 4 bytes (the parse path). The header bytes double as the","health":"ok","tokens":574,"nodes":166,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3205,"rust":634,"verilog":5636,"verilog_hir":763,"zig":3403},"repo":"tri-net","kinds":{"Module":17,"UseDecl":1,"ConstDecl":4,"ExprLiteral":24,"FnDecl":5,"ExprReturn":13,"ExprBinary":24,"ExprIdentifier":27,"StmtIf":8,"ExprFieldAccess":8,"ExprCall":3,"TestBlock":8,"StmtExpr":22,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/tests","health/ok","size/small","src/tri-net"],"summary":"Declares 5 functions and 4 constants. Carries 8 tests and 2 invariants. 121 lines compile to 574 tokens and 166 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"trinity-fpga/specs/boards/ax7203_full.t27","category":"trinity-fpga/specs","name":"ax7203_full","module":null,"lines":50,"bytes":929,"description":null,"health":"warn","tokens":110,"nodes":1,"depth":1,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/fpga","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 50 lines compile to 110 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 3 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/arithmetic_invariant_sweep.t27","category":"trinity-fpga/specs","name":"arithmetic_invariant_sweep","module":null,"lines":274,"bytes":12011,"description":null,"health":"warn","tokens":328,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 274 lines compile to 328 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/campaign_self_reproduction.t27","category":"trinity-fpga/specs","name":"campaign_self_reproduction","module":null,"lines":147,"bytes":5930,"description":null,"health":"warn","tokens":167,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 147 lines compile to 167 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/catalog_coverage_delta.t27","category":"trinity-fpga/specs","name":"catalog_coverage_delta","module":null,"lines":7901,"bytes":482957,"description":null,"health":"warn","tokens":9950,"nodes":1,"depth":1,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 7901 lines compile to 9,950 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/corpus_wide_pack_audit.t27","category":"trinity-fpga/specs","name":"corpus_wide_pack_audit","module":null,"lines":144,"bytes":6116,"description":null,"health":"warn","tokens":224,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 144 lines compile to 224 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/derived_packs_candidates.t27","category":"trinity-fpga/specs","name":"derived_packs_candidates","module":null,"lines":115,"bytes":4565,"description":null,"health":"warn","tokens":218,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 115 lines compile to 218 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/format_table_invariants.t27","category":"trinity-fpga/specs","name":"format_table_invariants","module":null,"lines":78,"bytes":3465,"description":null,"health":"warn","tokens":90,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 78 lines compile to 90 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/generated_pack_audit.t27","category":"trinity-fpga/specs","name":"generated_pack_audit","module":null,"lines":160,"bytes":7020,"description":null,"health":"warn","tokens":226,"nodes":1,"depth":1,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 160 lines compile to 226 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/generator_reproducibility.t27","category":"trinity-fpga/specs","name":"generator_reproducibility","module":null,"lines":153,"bytes":6157,"description":null,"health":"warn","tokens":149,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 153 lines compile to 149 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/generator_runnability_sweep.t27","category":"trinity-fpga/specs","name":"generator_runnability_sweep","module":null,"lines":181,"bytes":7620,"description":null,"health":"warn","tokens":161,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 181 lines compile to 161 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/gf16_plus_quire_audit.t27","category":"trinity-fpga/specs","name":"gf16_plus_quire_audit","module":null,"lines":178,"bytes":7813,"description":null,"health":"warn","tokens":182,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 178 lines compile to 182 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/intrinsic_invariant_sweep.t27","category":"trinity-fpga/specs","name":"intrinsic_invariant_sweep","module":null,"lines":346,"bytes":14773,"description":null,"health":"warn","tokens":381,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 346 lines compile to 381 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/layout_b_audit.t27","category":"trinity-fpga/specs","name":"layout_b_audit","module":null,"lines":109,"bytes":4596,"description":null,"health":"warn","tokens":175,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 109 lines compile to 175 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/lucas_exact_verification.t27","category":"trinity-fpga/specs","name":"lucas_exact_verification","module":null,"lines":103,"bytes":3690,"description":null,"health":"warn","tokens":138,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 103 lines compile to 138 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/ml_dtypes_crossval.t27","category":"trinity-fpga/specs","name":"ml_dtypes_crossval","module":null,"lines":543,"bytes":21442,"description":null,"health":"warn","tokens":926,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 543 lines compile to 926 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/negation_invariant.t27","category":"trinity-fpga/specs","name":"negation_invariant","module":null,"lines":117,"bytes":4858,"description":null,"health":"warn","tokens":157,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 117 lines compile to 157 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/oracle_fidelity_map.t27","category":"trinity-fpga/specs","name":"oracle_fidelity_map","module":null,"lines":367,"bytes":14852,"description":null,"health":"warn","tokens":513,"nodes":1,"depth":1,"loss":65,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 367 lines compile to 513 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 65 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/phi_rule_verification.t27","category":"trinity-fpga/specs","name":"phi_rule_verification","module":null,"lines":129,"bytes":5800,"description":null,"health":"warn","tokens":422,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 129 lines compile to 422 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/published_pack_audit.t27","category":"trinity-fpga/specs","name":"published_pack_audit","module":null,"lines":144,"bytes":5925,"description":null,"health":"warn","tokens":151,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 144 lines compile to 151 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/readme_index_divergence.t27","category":"trinity-fpga/specs","name":"readme_index_divergence","module":null,"lines":110,"bytes":4726,"description":null,"health":"warn","tokens":199,"nodes":1,"depth":1,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 110 lines compile to 199 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/related_work_measured.t27","category":"trinity-fpga/specs","name":"related_work_measured","module":null,"lines":354,"bytes":14485,"description":null,"health":"warn","tokens":481,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 354 lines compile to 481 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/script_tree_sweep.t27","category":"trinity-fpga/specs","name":"script_tree_sweep","module":"opts","lines":297,"bytes":11854,"description":null,"health":"warn","tokens":301,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 297 lines compile to 301 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/takum_libtakum_crossval.t27","category":"trinity-fpga/specs","name":"takum_libtakum_crossval","module":null,"lines":452,"bytes":21059,"description":null,"health":"warn","tokens":413,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 452 lines compile to 413 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/takum_variant_split.t27","category":"trinity-fpga/specs","name":"takum_variant_split","module":null,"lines":236,"bytes":10241,"description":null,"health":"warn","tokens":207,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 236 lines compile to 207 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/wide_rung_commutativity.t27","category":"trinity-fpga/specs","name":"wide_rung_commutativity","module":null,"lines":208,"bytes":8545,"description":null,"health":"warn","tokens":222,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 208 lines compile to 222 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/numeric/witness_mechanism_audit.t27","category":"trinity-fpga/specs","name":"witness_mechanism_audit","module":null,"lines":254,"bytes":10368,"description":null,"health":"warn","tokens":321,"nodes":1,"depth":1,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/numeric","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 254 lines compile to 321 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/specs/physics/gamma_conjecture.t27","category":"trinity-fpga/specs","name":"gamma_conjecture","module":null,"lines":138,"bytes":4155,"description":null,"health":"warn","tokens":213,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/physics","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares no top-level items. 138 lines compile to 213 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/trinet/settlement_law.t27","category":"trinity-fpga/specs","name":"settlement_law","module":null,"lines":236,"bytes":10625,"description":null,"health":"warn","tokens":295,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 236 lines compile to 295 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/specs/trinet/ternary_hw_verification.t27","category":"trinity-fpga/specs","name":"ternary_hw_verification","module":null,"lines":1422,"bytes":66505,"description":null,"health":"warn","tokens":2177,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares no top-level items. 1422 lines compile to 2,177 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/src/tri27/cache_w/tiny_lfu.t27","category":"trinity-fpga/src","name":"tiny_lfu","module":null,"lines":14,"bytes":272,"description":"W-TinyLFU Cache — TTT Dogfood Phase 3 Window-TinyLFU admission Test case: cache_w_tiny_lfu","health":"warn","tokens":16,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/ternary","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 14 lines compile to 16 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/src/tri27/locus_coeruleus_backoff.t27","category":"trinity-fpga/src","name":"locus_coeruleus_backoff","module":null,"lines":53,"bytes":1072,"description":"Locus Coeruleus Backoff Calculator — TTT Dogfood Phase 2 Exponential backoff: delay = min(1000 * 2^fail_count, 60000) Input: t0 = fail_count (attempt number) Output: t0 = delay in milliseconds","health":"warn","tokens":171,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":556,"rust":101,"verilog":1257,"verilog_hir":243,"zig":146},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprLiteral":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares 1 constant. 53 lines compile to 171 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/mlp_forward.t27","category":"trinity-fpga/src","name":"mlp_forward","module":null,"lines":193,"bytes":5444,"description":"MLP Forward Pass Test — 4 → 8 → 3 Demonstrates semantic equivalence between .t27 VM and Zig implementation Input: 4 features → Hidden: 8 neurons → Output: 3 classes","health":"warn","tokens":1499,"nodes":4,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":810,"rust":131,"verilog":1671,"verilog_hir":243,"zig":224},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1,"TestBlock":1},"tags":["domain/ternary","has/constants-only","has/tests","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 1 constant. Carries 1 test. 193 lines compile to 1,499 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/ppl_calculator.t27","category":"trinity-fpga/src","name":"ppl_calculator","module":null,"lines":68,"bytes":1937,"description":null,"health":"warn","tokens":243,"nodes":4,"depth":3,"loss":51,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1374,"rust":907,"verilog":2063,"verilog_hir":243,"zig":995},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1,"UseDecl":1},"tags":["domain/ternary","has/constants-only","has/imports","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares 1 constant. 68 lines compile to 243 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.0 KB. Compiles with 51 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/vsa_bind.t27","category":"trinity-fpga/src","name":"vsa_bind","module":null,"lines":38,"bytes":698,"description":"VSA Bind — TTT Dogfood Phase 2 Bind operation (XOR-like for balanced ternary) Algorithm: if a == 0 return b; else if b == 0 return a; else return a * b Input: t0 = a, t1 = b Output: t0 = bind(a, b)","health":"warn","tokens":113,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":572,"rust":105,"verilog":1261,"verilog_hir":243,"zig":150},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares 1 constant. 38 lines compile to 113 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/vsa_bundle2.t27","category":"trinity-fpga/src","name":"vsa_bundle2","module":null,"lines":40,"bytes":773,"description":"VSA Bundle2 — TTT Dogfood Phase 2 Majority vote of 2 ternary inputs Algorithm: if a == 0 return b; else if b == 0 return a; else return (a + b) / 2 Input: t0 = a, t1 = b Output: t0 = bundle2(a, b)","health":"warn","tokens":139,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":578,"rust":111,"verilog":1267,"verilog_hir":243,"zig":156},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares 1 constant. 40 lines compile to 139 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.2 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/src/tri27/vsa_cosine.t27","category":"trinity-fpga/src","name":"vsa_cosine","module":null,"lines":76,"bytes":2131,"description":"VSA Cosine Similarity — TTT Dogfood Phase 2 Cosine similarity between two ternary vectors Formula: (a · b) / (||a|| * ||b||) Input: t0 = vector_a_ptr, t1 = vector_b_ptr, t2 = length Output: t0 = similarity (f64)","health":"warn","tokens":360,"nodes":4,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":591,"rust":124,"verilog":1280,"verilog_hir":243,"zig":206},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1,"UseDecl":1},"tags":["domain/ternary","has/constants-only","has/imports","health/warn","issue/dropped-content","size/small","src/trinity-fpga"],"summary":"Declares 1 constant. 76 lines compile to 360 tokens and 4 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Compiles with 3 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/ast.t27","category":"trinity-fpga/t27","name":"ast","module":null,"lines":255,"bytes":5243,"description":"ast.t27 — Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","health":"warn","tokens":770,"nodes":55,"depth":3,"loss":14,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2554,"rust":1736,"verilog":3565,"verilog_hir":320,"zig":1326},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":3,"EnumVariant":42,"StructDecl":4,"ExprIdentifier":4,"FnDecl":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 1 function, 4 structs and 3 enums. 255 lines compile to 770 tokens and 55 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.5 KB. Compiles with 14 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/codegen/c/codegen.t27","category":"trinity-fpga/t27","name":"codegen","module":"c_codegen","lines":6,"bytes":148,"description":null,"health":"warn","tokens":13,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":404,"rust":66,"verilog":1049,"verilog_hir":247,"zig":123},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/compiler","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 6 lines compile to 13 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/codegen/verilog/codegen.t27","category":"trinity-fpga/t27","name":"codegen","module":null,"lines":586,"bytes":19648,"description":"codegen.t27 — Code Generator for Verilog Generates synthesizable Verilog from t27 AST","health":"ok","tokens":3639,"nodes":66,"depth":5,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1790,"rust":1191,"verilog":3854,"verilog_hir":352,"zig":1209},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":2,"StructDecl":2,"ExprIdentifier":37,"FnDecl":1,"StmtExpr":13,"StmtLocal":3,"ExprCall":2,"ExprLiteral":4,"ExprBinary":1},"tags":["domain/compiler","has/functions","has/imports","has/structs","health/ok","size/large","src/trinity-fpga"],"summary":"Declares 1 function and 2 structs. 586 lines compile to 3,639 tokens and 66 AST nodes, depth 5. Emits 5 of 5 backends; largest is Verilog at 3.8 KB. Clean through every layer."},{"path":"trinity-fpga/t27/compiler/codegen/zig/codegen.t27","category":"trinity-fpga/t27","name":"codegen","module":null,"lines":612,"bytes":15359,"description":"codegen.t27 — Code Generator for Zig Generates Zig 0.15 code from t27 AST","health":"warn","tokens":3137,"nodes":37,"depth":3,"loss":3,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1728,"rust":1278,"verilog":3525,"verilog_hir":348,"zig":1180},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":2,"StructDecl":4,"ExprIdentifier":29,"FnDecl":1},"tags":["domain/compiler","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function and 4 structs. 612 lines compile to 3,137 tokens and 37 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 3.4 KB. Compiles with 3 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/parser/language.t27","category":"trinity-fpga/t27","name":"language","module":"Language","lines":71,"bytes":5263,"description":"t27/compiler/parser/language.t27 — Language Definition for .t27 Specs Defines tokens, lexical grammar for parsing .t27 format specifications","health":"ok","tokens":50,"nodes":23,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1012,"rust":415,"verilog":1996,"verilog_hir":245,"zig":392},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":21},"tags":["domain/compiler","has/enums","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 1 enum. 71 lines compile to 50 tokens and 23 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"trinity-fpga/t27/compiler/parser/lexer.t27","category":"trinity-fpga/t27","name":"lexer","module":null,"lines":514,"bytes":13586,"description":"lexer.t27 — Lexical Analyzer for TRI-27 Assembly Tokenizes .t27 source code into tokens for the parser","health":"warn","tokens":2457,"nodes":82,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3128,"rust":1700,"verilog":4709,"verilog_hir":350,"zig":1615},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":71,"StructDecl":2,"ExprIdentifier":6,"FnDecl":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function, 2 structs and 1 enum. 514 lines compile to 2,457 tokens and 82 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/parser/parser.t27","category":"trinity-fpga/t27","name":"parser","module":null,"lines":500,"bytes":14714,"description":"parser.t27 — Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","health":"warn","tokens":2804,"nodes":6,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1058,"rust":316,"verilog":1646,"verilog_hir":351,"zig":418},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":2,"StructDecl":1,"ExprIdentifier":1,"FnDecl":1},"tags":["domain/compiler","has/functions","has/imports","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function and 1 struct. 500 lines compile to 2,804 tokens and 6 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/compiler/runtime/runtime.t27","category":"trinity-fpga/t27","name":"runtime","module":null,"lines":418,"bytes":9552,"description":"runtime.t27 — Bootstrap Runtime for TRI-27 Assembly Minimal runtime for executing t27 programs","health":"warn","tokens":2066,"nodes":27,"depth":4,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1500,"rust":996,"verilog":2666,"verilog_hir":290,"zig":638},"repo":"trinity-fpga","kinds":{"Module":1,"EnumDecl":1,"EnumVariant":3,"StructDecl":5,"ExprIdentifier":14,"FnDecl":1,"StmtExpr":1,"ExprLiteral":1},"tags":["domain/compiler","has/enums","has/functions","has/structs","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 1 function, 5 structs and 1 enum. 418 lines compile to 2,066 tokens and 27 AST nodes, depth 4. Emits 5 of 5 backends; largest is Verilog at 2.6 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/base/ops.t27","category":"trinity-fpga/t27","name":"ops","module":null,"lines":287,"bytes":8985,"description":"ops.t27 — Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","health":"warn","tokens":1548,"nodes":4,"depth":2,"loss":68,"tcErrors":0,"failedBackends":[],"outBytes":{"c":532,"rust":148,"verilog":1313,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":3},"tags":["domain/base","has/constants-only","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 3 constants. 287 lines compile to 1,548 tokens and 4 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.3 KB. Compiles with 68 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/base/types.t27","category":"trinity-fpga/t27","name":"types","module":null,"lines":301,"bytes":8692,"description":"types.t27 — Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","health":"fail","tokens":0,"nodes":0,"depth":0,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{},"repo":"trinity-fpga","kinds":{},"tags":["domain/base","health/fail","size/medium","src/trinity-fpga"],"summary":"Declares no top-level items. 301 lines compile to 0 tokens and 0 AST nodes, depth 0. Rejected by ."},{"path":"trinity-fpga/t27/specs/fpga/mac.t27","category":"trinity-fpga/t27","name":"mac","module":"fpga_mac","lines":9,"bytes":289,"description":null,"health":"warn","tokens":33,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":400,"rust":66,"verilog":1047,"verilog_hir":245,"zig":122},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/fpga","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 9 lines compile to 33 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/isa/registers.t27","category":"trinity-fpga/t27","name":"registers","module":"isa_registers","lines":10,"bytes":281,"description":null,"health":"warn","tokens":27,"nodes":1,"depth":1,"loss":4,"tcErrors":0,"failedBackends":[],"outBytes":{"c":420,"rust":66,"verilog":1057,"verilog_hir":255,"zig":127},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/isa","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 10 lines compile to 27 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 4 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/math/constants.t27","category":"trinity-fpga/t27","name":"constants","module":"Constants","lines":65,"bytes":3460,"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing φ² + 1/φ² = 3 | Sacred constants for ternary computing","health":"ok","tokens":122,"nodes":35,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1383,"rust":705,"verilog":2344,"verilog_hir":368,"zig":718},"repo":"trinity-fpga","kinds":{"Module":2,"ConstDecl":10,"ExprLiteral":10,"ExprIdentifier":5,"FnDecl":2,"StmtIf":1,"ExprBinary":1,"ExprReturn":3,"ExprUnary":1},"tags":["domain/math","has/functions","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 2 functions and 10 constants. 65 lines compile to 122 tokens and 35 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.3 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/math/sacred_physics.t27","category":"trinity-fpga/t27","name":"sacred_physics","module":"SacredPhysics","lines":129,"bytes":5165,"description":"t27/specs/math/sacred_physics.t27 Strand I — Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","health":"ok","tokens":491,"nodes":183,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3409,"rust":2563,"verilog":5731,"verilog_hir":481,"zig":2609},"repo":"trinity-fpga","kinds":{"Module":1,"UseDecl":1,"ConstDecl":12,"ExprIdentifier":87,"FnDecl":4,"StmtLocal":23,"ExprBinary":25,"ExprReturn":4,"ExprLiteral":4,"StructDecl":1,"ExprCall":6,"ExprStructLit":1,"ExprFieldAccess":14},"tags":["domain/math","has/functions","has/imports","has/structs","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 4 functions, 1 struct and 12 constants. 129 lines compile to 491 tokens and 183 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.6 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/nn/attention.t27","category":"trinity-fpga/t27","name":"attention","module":"attention","lines":7,"bytes":253,"description":null,"health":"warn","tokens":25,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":404,"rust":66,"verilog":1049,"verilog_hir":247,"zig":123},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/ml","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 7 lines compile to 25 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/nn/hslm.t27","category":"trinity-fpga/t27","name":"hslm","module":"hslm","lines":8,"bytes":290,"description":null,"health":"warn","tokens":32,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":384,"rust":66,"verilog":1039,"verilog_hir":237,"zig":118},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/ml","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 8 lines compile to 32 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/numeric/gf12.t27","category":"trinity-fpga/t27","name":"gf12","module":"GF12","lines":180,"bytes":7425,"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 — 12-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 4 (P1)","health":"warn","tokens":730,"nodes":322,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":3969,"rust":2941,"verilog":6531,"verilog_hir":939,"zig":3673},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 180 lines compile to 730 tokens and 322 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf16.t27","category":"trinity-fpga/t27","name":"gf16","module":null,"lines":446,"bytes":15122,"description":"gf16.t27 — GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","health":"warn","tokens":2530,"nodes":18,"depth":2,"loss":82,"tcErrors":0,"failedBackends":[],"outBytes":{"c":532,"rust":629,"verilog":1864,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":17},"tags":["domain/numeric","has/constants-only","health/warn","issue/dropped-content","size/large","src/trinity-fpga"],"summary":"Declares 17 constants. 446 lines compile to 2,530 tokens and 18 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Compiles with 82 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/numeric/gf20.t27","category":"trinity-fpga/t27","name":"gf20","module":"GF20","lines":181,"bytes":7449,"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 — 20-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 6 (P1)","health":"warn","tokens":730,"nodes":322,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":3995,"rust":2964,"verilog":6549,"verilog_hir":942,"zig":3696},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 181 lines compile to 730 tokens and 322 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf24.t27","category":"trinity-fpga/t27","name":"gf24","module":"GF24","lines":181,"bytes":7496,"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 — 24-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 7 (P1)","health":"warn","tokens":736,"nodes":323,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":4035,"rust":2995,"verilog":6589,"verilog_hir":954,"zig":3735},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":33,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 181 lines compile to 736 tokens and 323 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf32.t27","category":"trinity-fpga/t27","name":"gf32","module":"GF32","lines":186,"bytes":7836,"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 — 32-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 8 (P1)","health":"warn","tokens":730,"nodes":322,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":4016,"rust":2991,"verilog":6592,"verilog_hir":954,"zig":3723},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":59,"StructDecl":1,"ExprIdentifier":76,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 186 lines compile to 730 tokens and 322 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/gf4.t27","category":"trinity-fpga/t27","name":"gf4","module":"GF4","lines":130,"bytes":5537,"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 — 4-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 2 (P1)","health":"ok","tokens":333,"nodes":134,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2278,"rust":1426,"verilog":4056,"verilog_hir":532,"zig":2053},"repo":"trinity-fpga","kinds":{"Module":5,"UseDecl":2,"ConstDecl":7,"ExprLiteral":25,"StructDecl":1,"ExprIdentifier":25,"FnDecl":6,"StmtIf":4,"ExprBinary":18,"ExprReturn":10,"ExprStructLit":3,"ExprFieldAccess":15,"StmtLocal":8,"ExprCall":2,"ExprUnary":2,"ExprIf":1},"tags":["domain/numeric","has/functions","has/imports","has/structs","health/ok","size/small","src/trinity-fpga"],"summary":"Declares 6 functions, 1 struct and 7 constants. 130 lines compile to 333 tokens and 134 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.0 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/numeric/gf8.t27","category":"trinity-fpga/t27","name":"gf8","module":"GF8","lines":183,"bytes":7582,"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 — 8-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 3 (P1)","health":"warn","tokens":718,"nodes":319,"depth":10,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":3915,"rust":2902,"verilog":6513,"verilog_hir":937,"zig":3609},"repo":"trinity-fpga","kinds":{"Module":9,"UseDecl":2,"ConstDecl":7,"ExprLiteral":58,"StructDecl":1,"ExprIdentifier":77,"FnDecl":10,"StmtIf":6,"ExprBinary":58,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":29,"StmtLocal":21,"ExprIf":4,"ExprUnary":5,"ExprCall":8,"StmtWhile":2,"StmtAssign":4},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 1 struct and 7 constants. 183 lines compile to 718 tokens and 319 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 6.4 KB. Compiles with 4 type errors."},{"path":"trinity-fpga/t27/specs/numeric/goldenfloat_family.t27","category":"trinity-fpga/t27","name":"goldenfloat_family","module":"GoldenFloatFamily","lines":203,"bytes":8443,"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family — φ-structured floating point formats NUMERIC-STANDARD-001 — Agent 1 (P0)","health":"warn","tokens":757,"nodes":181,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":4828,"rust":3393,"verilog":7230,"verilog_hir":686,"zig":4596},"repo":"trinity-fpga","kinds":{"Module":8,"UseDecl":2,"StructDecl":2,"ExprIdentifier":56,"ConstDecl":2,"FnDecl":7,"StmtFor":3,"StmtIf":4,"ExprBinary":17,"ExprFieldAccess":24,"ExprReturn":9,"ExprIndex":2,"ExprLiteral":23,"StmtLocal":9,"StmtAssign":4,"ExprStructLit":1,"ExprCall":6,"ExprUnary":2},"tags":["domain/numeric","has/functions","has/imports","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/trinity-fpga"],"summary":"Declares 7 functions, 2 structs and 2 constants. 203 lines compile to 757 tokens and 181 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Compiles with 1 type error."},{"path":"trinity-fpga/t27/specs/numeric/phi_ratio.t27","category":"trinity-fpga/t27","name":"phi_ratio","module":"PhiRatio","lines":249,"bytes":11049,"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","health":"ok","tokens":633,"nodes":113,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3249,"rust":2152,"verilog":5604,"verilog_hir":926,"zig":4123},"repo":"trinity-fpga","kinds":{"Module":2,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":42,"StructDecl":2,"FnDecl":10,"StmtLocal":8,"ExprBinary":10,"ExprLiteral":5,"ExprFieldAccess":10,"ExprCall":5,"ExprReturn":11,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":1,"ExprUnary":1},"tags":["domain/numeric","has/functions","has/imports","has/structs","health/ok","size/medium","src/trinity-fpga"],"summary":"Declares 10 functions, 2 structs and 2 constants. 249 lines compile to 633 tokens and 113 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"trinity-fpga/t27/specs/numeric/tf3.t27","category":"trinity-fpga/t27","name":"tf3","module":null,"lines":258,"bytes":103641,"description":"tf3.t27 — TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","health":"warn","tokens":3714,"nodes":15,"depth":2,"loss":79,"tcErrors":0,"failedBackends":[],"outBytes":{"c":532,"rust":516,"verilog":1736,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1,"ConstDecl":14},"tags":["domain/numeric","has/constants-only","health/warn","issue/dropped-content","size/medium","src/trinity-fpga"],"summary":"Declares 14 constants. 258 lines compile to 3,714 tokens and 15 AST nodes, depth 2. Emits 5 of 5 backends; largest is Verilog at 1.7 KB. Compiles with 79 items dropped by error recovery."},{"path":"trinity-fpga/t27/specs/queen/lotus.t27","category":"trinity-fpga/t27","name":"lotus","module":"queen_lotus","lines":12,"bytes":519,"description":null,"health":"warn","tokens":58,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":412,"rust":66,"verilog":1053,"verilog_hir":251,"zig":125},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/agent","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 12 lines compile to 58 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity-fpga/t27/specs/vsa/ops.t27","category":"trinity-fpga/t27","name":"ops","module":"vsa_ops","lines":10,"bytes":370,"description":null,"health":"warn","tokens":54,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity-fpga","kinds":{"Module":1},"tags":["domain/vsa","health/warn","issue/dropped-content","size/tiny","src/trinity-fpga"],"summary":"Declares no top-level items. 10 lines compile to 54 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity/src/tri27/matmul.t27","category":"trinity/src","name":"matmul","module":null,"lines":173,"bytes":3023,"description":"Matrix Multiply (3x3) — TRI-27 Assembly Implementation Computes C = A * B where A, B are 3x3 matrices Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-108: Matrix A (3x3, row-major, 9 words) 200-208: Matrix B (3x3, row-major, 9 words)","health":"warn","tokens":709,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trinity","kinds":{"Module":1},"tags":["domain/ternary","health/warn","issue/dropped-content","size/medium","src/trinity"],"summary":"Declares no top-level items. 173 lines compile to 709 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trinity/src/tri27/sha256.t27","category":"trinity/src","name":"sha256","module":null,"lines":205,"bytes":4467,"description":"SHA-256 Hash — TRI-27 Assembly Implementation Computes SHA-256 digest of a 64-byte (512-bit) message block Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-163: Input message block (64 bytes) 200-263: Message schedule W[0..63] (64 words)","health":"warn","tokens":894,"nodes":3,"depth":3,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":829,"rust":362,"verilog":1518,"verilog_hir":243,"zig":407},"repo":"trinity","kinds":{"Module":1,"ConstDecl":1,"ExprIdentifier":1},"tags":["domain/ternary","has/constants-only","health/warn","issue/dropped-content","size/medium","src/trinity"],"summary":"Declares 1 constant. 205 lines compile to 894 tokens and 3 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"trinity/t27/specs/numeric/phi_ratio.t27","category":"trinity/t27","name":"phi_ratio","module":"PhiRatio","lines":247,"bytes":10606,"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","health":"ok","tokens":633,"nodes":113,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3221,"rust":2124,"verilog":5576,"verilog_hir":926,"zig":4095},"repo":"trinity","kinds":{"Module":2,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":42,"StructDecl":2,"FnDecl":10,"StmtLocal":8,"ExprBinary":10,"ExprLiteral":5,"ExprFieldAccess":10,"ExprCall":5,"ExprReturn":11,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":1,"ExprUnary":1},"tags":["domain/numeric","has/functions","has/imports","has/structs","health/ok","size/medium","src/trinity"],"summary":"Declares 10 functions, 2 structs and 2 constants. 247 lines compile to 633 tokens and 113 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/anchor.t27","category":"tt-trinity-corona/specs","name":"anchor","module":"CoronaAnchor","lines":86,"bytes":3664,"description":"specs/corona/anchor.t27 TG-TRIAD-X cross-die anchor (carried forward unchanged from Phi/Euler/Gamma).","health":"ok","tokens":91,"nodes":20,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":908,"rust":258,"verilog":1896,"verilog_hir":253,"zig":712},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":5,"ConstDecl":5,"ExprLiteral":5,"TestBlock":1,"StmtExpr":3},"tags":["domain/other","has/constants-only","has/imports","has/tests","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 5 constants. Carries 1 test. 86 lines compile to 91 tokens and 20 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/corona_oracle.t27","category":"tt-trinity-corona/specs","name":"corona_oracle","module":"CoronaOracle","lines":276,"bytes":15181,"description":"specs/corona/corona_oracle.t27 TRI-1 Corona -- Format Conformance Oracle (top-level SSOT)","health":"ok","tokens":540,"nodes":92,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2657,"rust":2389,"verilog":5125,"verilog_hir":253,"zig":2906},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":8,"ConstDecl":29,"ExprLiteral":25,"StructDecl":2,"ExprIdentifier":24,"TestBlock":1,"StmtExpr":2},"tags":["domain/other","has/constants-only","has/imports","has/structs","has/tests","health/ok","size/medium","src/tt-trinity-corona"],"summary":"Declares 2 structs and 29 constants. Carries 1 test. 276 lines compile to 540 tokens and 92 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/d2d_routing.t27","category":"tt-trinity-corona/specs","name":"d2d_routing","module":"CoronaD2DRouting","lines":97,"bytes":4413,"description":"specs/corona/d2d_routing.t27 Die-to-Die routing: Corona forwards format queries to Gamma for formats Gamma natively implements (no duplication).","health":"ok","tokens":120,"nodes":24,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":985,"rust":607,"verilog":1796,"verilog_hir":261,"zig":823},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":3,"ConstDecl":10,"ExprIdentifier":1,"ExprLiteral":9},"tags":["domain/other","has/constants-only","has/imports","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 10 constants. 97 lines compile to 120 tokens and 24 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.8 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/protocol.t27","category":"tt-trinity-corona/specs","name":"protocol","module":"CoronaProtocol","lines":121,"bytes":5475,"description":"specs/corona/protocol.t27 Corona oracle protocol: 8-bit serial CMD/DATA on TinyTapeout pins.","health":"ok","tokens":150,"nodes":36,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1005,"rust":675,"verilog":1926,"verilog_hir":257,"zig":856},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":3,"ConstDecl":16,"ExprLiteral":16},"tags":["domain/other","has/constants-only","has/imports","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 16 constants. 121 lines compile to 150 tokens and 36 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 1.9 KB. Clean through every layer."},{"path":"tt-trinity-corona/specs/corona/rom_layout.t27","category":"tt-trinity-corona/specs","name":"rom_layout","module":"CoronaRomLayout","lines":126,"bytes":7148,"description":"specs/corona/rom_layout.t27 Corona ROM bit-layout: 80 bits per format record, 80 records total.","health":"ok","tokens":519,"nodes":91,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2407,"rust":2551,"verilog":5167,"verilog_hir":259,"zig":2196},"repo":"tt-trinity-corona","kinds":{"Module":1,"UseDecl":2,"ConstDecl":21,"ExprLiteral":19,"ExprIdentifier":35,"StructDecl":11,"TestBlock":1,"StmtExpr":1},"tags":["domain/other","has/constants-only","has/imports","has/structs","has/tests","health/ok","size/small","src/tt-trinity-corona"],"summary":"Declares 11 structs and 21 constants. Carries 1 test. 126 lines compile to 519 tokens and 91 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 5.0 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/bridge.t27","category":"dmitrii-f-t27/trinity-memory","name":"bridge","module":"TrinityMemoryBridgeSpec","lines":416,"bytes":20951,"description":"specs/memory/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;","health":"warn","tokens":2930,"nodes":1468,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":21771,"rust":9438,"verilog":27805,"verilog_hir":2627,"zig":19109},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":28,"ConstDecl":73,"ExprLiteral":413,"EnumDecl":3,"EnumVariant":18,"FnDecl":23,"StmtIf":26,"ExprBinary":244,"ExprIdentifier":202,"ExprReturn":49,"ExprUnary":61,"ExprFieldAccess":2,"ExprCall":188,"StmtLocal":6,"StmtWhile":1,"StmtAssign":11,"ExprIndex":11,"InvariantBlock":14,"StmtExpr":84,"TestBlock":11},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 23 functions, 3 enums and 73 constants. Carries 11 tests and 14 invariants. 416 lines compile to 2,930 tokens and 1,468 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 27.2 KB. Compiles with 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/conformance.t27","category":"dmitrii-f-t27/trinity-memory","name":"conformance","module":"TrinityMemoryConformanceLabSpec","lines":291,"bytes":14234,"description":"specs/memory/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable","health":"warn","tokens":2035,"nodes":1053,"depth":12,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":14290,"rust":6234,"verilog":18719,"verilog_hir":1746,"zig":12475},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":22,"ConstDecl":41,"ExprLiteral":282,"EnumDecl":5,"EnumVariant":27,"FnDecl":16,"ExprReturn":36,"ExprBinary":184,"ExprIdentifier":147,"StmtIf":20,"ExprUnary":49,"StmtLocal":4,"StmtWhile":1,"StmtAssign":26,"ExprFieldAccess":10,"ExprIndex":26,"InvariantBlock":8,"StmtExpr":39,"ExprCall":103,"TestBlock":7},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 5 enums and 41 constants. Carries 7 tests and 8 invariants. 291 lines compile to 2,035 tokens and 1,053 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/edge_demo.t27","category":"dmitrii-f-t27/trinity-memory","name":"edge_demo","module":"TrinityMemoryEdgeDemoSpec","lines":233,"bytes":11190,"description":"specs/memory/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one","health":"ok","tokens":1790,"nodes":972,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11641,"rust":4000,"verilog":14191,"verilog_hir":1388,"zig":10109},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":25,"ConstDecl":22,"ExprLiteral":256,"EnumDecl":2,"EnumVariant":9,"FnDecl":12,"StmtIf":19,"ExprBinary":180,"ExprIdentifier":174,"ExprReturn":23,"ExprUnary":33,"ExprCall":97,"StmtLocal":17,"StmtWhile":5,"StmtAssign":29,"ExprFieldAccess":8,"ExprIndex":15,"InvariantBlock":6,"StmtExpr":34,"TestBlock":6},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 12 functions, 2 enums and 22 constants. Carries 6 tests and 6 invariants. 233 lines compile to 1,790 tokens and 972 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.9 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/stream_compute.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_compute","module":"TrinityMemoryStreamComputeSpec","lines":491,"bytes":24685,"description":"specs/memory/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is","health":"ok","tokens":4048,"nodes":2055,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":24595,"rust":10586,"verilog":30875,"verilog_hir":3669,"zig":21754},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":37,"ConstDecl":60,"ExprLiteral":613,"FnDecl":32,"StmtLocal":29,"ExprBinary":392,"ExprIdentifier":331,"StmtIf":31,"ExprReturn":55,"ExprCall":228,"StmtWhile":5,"StmtAssign":25,"ExprUnary":70,"ExprFieldAccess":21,"ExprIndex":6,"InvariantBlock":12,"StmtExpr":95,"TestBlock":13},"tags":["domain/storage","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 32 functions and 60 constants. Carries 13 tests and 12 invariants. 491 lines compile to 4,048 tokens and 2,055 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 30.2 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/tensorpack.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack","module":"TrinityMemoryTensorPackSpec","lines":316,"bytes":15456,"description":"specs/memory/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;","health":"warn","tokens":2170,"nodes":1127,"depth":14,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":15698,"rust":6044,"verilog":19497,"verilog_hir":1909,"zig":13924},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":18,"ConstDecl":50,"ExprLiteral":278,"EnumDecl":1,"EnumVariant":8,"FnDecl":16,"ExprReturn":30,"ExprBinary":170,"ExprFieldAccess":13,"ExprIdentifier":202,"ExprCall":135,"StmtIf":14,"ExprUnary":49,"StmtLocal":8,"StmtWhile":3,"ExprIndex":27,"StmtAssign":25,"InvariantBlock":10,"StmtExpr":62,"TestBlock":8},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 1 enum and 50 constants. Carries 8 tests and 10 invariants. 316 lines compile to 2,170 tokens and 1,127 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 19.0 KB. Compiles with 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/specs/memory/types.t27","category":"dmitrii-f-t27/trinity-memory","name":"types","module":"TrinityMemoryTypes","lines":291,"bytes":15286,"description":"specs/memory/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).","health":"ok","tokens":2170,"nodes":1088,"depth":15,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15524,"rust":6993,"verilog":19584,"verilog_hir":1417,"zig":14185},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":29,"ConstDecl":71,"ExprLiteral":215,"EnumDecl":1,"EnumVariant":4,"FnDecl":11,"StmtLocal":13,"StmtWhile":4,"ExprBinary":191,"ExprIdentifier":246,"StmtAssign":13,"ExprReturn":33,"StmtIf":23,"ExprCall":119,"ExprFieldAccess":12,"ExprUnary":15,"InvariantBlock":17,"StmtExpr":62,"TestBlock":9},"tags":["domain/storage","has/enums","has/functions","has/invariants","has/loops","has/tests","health/ok","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 11 functions, 1 enum and 71 constants. Carries 9 tests and 17 invariants. 291 lines compile to 2,170 tokens and 1,088 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 19.1 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/t27/bridge.t27","category":"dmitrii-f-t27/trinity-memory","name":"bridge","module":"TrinityMemoryBridge","lines":591,"bytes":33305,"description":"Native bounded JSON-RPC memory emulator application logic. Caller owns all buffers and state; no HTTP, allocation, or persistence here. Include codecs/container/tensorpack/json/json_writer/tensorpack_json first. Limits are configured in TMBridgeState and enforced before object commits. Current common JSON parser is bounded to 64 nesting levels and i64/u64 integer lexemes; exceeding those bounds returns an invalid-JSON response.","health":"warn","tokens":7663,"nodes":3880,"depth":15,"loss":0,"tcErrors":44,"failedBackends":[],"outBytes":{"c":39616,"rust":35798,"verilog":54070,"verilog_hir":4400,"zig":37227},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":186,"StructDecl":3,"ExprIdentifier":1134,"FnDecl":40,"StmtExpr":175,"ExprCall":295,"StmtLocal":115,"ExprLiteral":635,"StmtWhile":27,"ExprBinary":380,"ExprIndex":149,"ExprFieldAccess":269,"StmtAssign":112,"StmtIf":140,"ExprUnary":107,"ExprReturn":113},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 40 functions and 3 structs. 591 lines compile to 7,663 tokens and 3,880 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 52.8 KB. Compiles with 44 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/cli.t27","category":"dmitrii-f-t27/trinity-memory","name":"cli","module":"TrinityMemoryCLI","lines":494,"bytes":30001,"description":"Native command dispatch and strict JSON trit-array parsing. Domain command dispatch is native. Host hooks supply file IO, buffers, entropy, sockets and signal waiting; generated modules own all data formats.","health":"warn","tokens":6420,"nodes":3384,"depth":15,"loss":0,"tcErrors":34,"failedBackends":[],"outBytes":{"c":33104,"rust":32315,"verilog":47310,"verilog_hir":2365,"zig":32534},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":219,"FnDecl":21,"ExprReturn":139,"ExprBinary":394,"ExprIdentifier":839,"ExprLiteral":653,"StmtLocal":113,"StmtWhile":22,"ExprCall":311,"ExprIndex":83,"StmtAssign":123,"StmtIf":176,"ExprUnary":117,"ExprFieldAccess":98,"StmtExpr":73,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 21 functions. 494 lines compile to 6,420 tokens and 3,384 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 46.2 KB. Compiles with 34 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/client.t27","category":"dmitrii-f-t27/trinity-memory","name":"client","module":"TrinityMemoryRPCClient","lines":148,"bytes":8187,"description":"Native JSON-RPC client domain. Include json.h and json_writer.h first. Caller-owned live, nonoverlapping buffers; no allocation or network here. Scratch tokens/arena and partial output may change on failure. Reply is committed only after validation. IDs are 32 lowercase hexadecimal bytes.","health":"warn","tokens":1793,"nodes":876,"depth":13,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":9402,"rust":8036,"verilog":13557,"verilog_hir":1733,"zig":8556},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":44,"ConstDecl":3,"ExprLiteral":137,"StructDecl":2,"ExprIdentifier":246,"FnDecl":10,"StmtLocal":28,"StmtWhile":7,"ExprBinary":99,"ExprIndex":36,"StmtIf":33,"ExprUnary":28,"ExprReturn":37,"StmtAssign":30,"ExprArrayLiteral":1,"ExprCall":26,"ExprFieldAccess":98,"StmtExpr":9,"ExprStructLit":2},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 10 functions, 2 structs and 3 constants. 148 lines compile to 1,793 tokens and 876 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Compiles with 6 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/codecs.t27","category":"dmitrii-f-t27/trinity-memory","name":"codecs","module":"TrinityMemoryCodecs","lines":233,"bytes":9432,"description":"Native ternary codec algorithms. Source of truth; generated C is disposable. IDs and canonical byte layout match TMEM v1. Input/output buffers must not overlap.","health":"warn","tokens":1959,"nodes":1020,"depth":16,"loss":0,"tcErrors":13,"failedBackends":[],"outBytes":{"c":10668,"rust":9561,"verilog":16252,"verilog_hir":1276,"zig":10009},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":75,"ConstDecl":10,"ExprLiteral":180,"FnDecl":9,"StmtIf":55,"ExprBinary":188,"ExprIdentifier":288,"ExprReturn":48,"StmtLocal":49,"ExprFieldAccess":30,"ExprCall":15,"StmtAssign":44,"StmtWhile":13,"ExprIndex":9,"ExprUnary":7},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 9 functions and 10 constants. 233 lines compile to 1,959 tokens and 1,020 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Compiles with 13 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/compute.t27","category":"dmitrii-f-t27/trinity-memory","name":"compute","module":"TrinityMemoryCompute","lines":143,"bytes":5371,"description":"Trinity Memory integer/scale kernels. Canonical executable source. Status: 0 success, -1 invalid input, -2 short output, -3 overflow. Pointers refer to valid arrays of their explicit lengths. Input and output buffers must not overlap. Inputs are read-only despite the pointer ABI. f64 is the host metadata bridge type; it does not replace ternary storage.","health":"ok","tokens":1153,"nodes":600,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6241,"rust":4111,"verilog":10239,"verilog_hir":1330,"zig":5533},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":37,"FnDecl":5,"ExprReturn":26,"ExprBinary":97,"ExprIdentifier":152,"ExprLiteral":110,"ExprUnary":30,"StmtIf":26,"StmtAssign":22,"ExprIndex":24,"StmtLocal":20,"StmtWhile":8,"ExprCall":19,"ExprFieldAccess":3,"TestBlock":3,"StmtExpr":10,"ExprArrayLiteral":8},"tags":["domain/other","has/functions","has/loops","has/tests","health/ok","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 5 functions. Carries 3 tests. 143 lines compile to 1,153 tokens and 600 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 10.0 KB. Clean through every layer."},{"path":"dmitrii-f-t27/trinity-memory/t27/container.t27","category":"dmitrii-f-t27/trinity-memory","name":"container","module":"TrinityMemoryContainer","lines":90,"bytes":3832,"description":"TMEM v1 framing. Include generated codecs C header before this header. Caller-owned buffers; no allocation. Valid input/output ranges must not overlap.","health":"warn","tokens":1001,"nodes":479,"depth":12,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":5015,"rust":3599,"verilog":7172,"verilog_hir":1358,"zig":4561},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":21,"FnDecl":8,"StmtLocal":18,"ExprIdentifier":137,"ExprLiteral":89,"StmtWhile":6,"ExprBinary":67,"StmtAssign":23,"ExprFieldAccess":32,"ExprIndex":25,"StmtIf":13,"ExprReturn":18,"ExprCall":15,"ExprUnary":4,"StmtExpr":3},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 8 functions. 90 lines compile to 1,001 tokens and 479 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 7.0 KB. Compiles with 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/experiments.t27","category":"dmitrii-f-t27/trinity-memory","name":"experiments","module":"TrinityMemoryExperiments","lines":682,"bytes":48461,"description":"Executable native experiments. Domain behavior is here; the runtime supplies bounded allocation, loopback sockets, monotonic time and platform primitives. JSON output is scratch until a nonnegative return. No physical-device claim.","health":"warn","tokens":11106,"nodes":5373,"depth":17,"loss":0,"tcErrors":65,"failedBackends":[],"outBytes":{"c":54913,"rust":51304,"verilog":75966,"verilog_hir":4987,"zig":52116},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":225,"ConstDecl":3,"ExprLiteral":795,"StructDecl":1,"ExprIdentifier":1632,"FnDecl":36,"StmtAssign":169,"ExprFieldAccess":476,"ExprCall":378,"StmtIf":168,"ExprBinary":483,"ExprReturn":141,"StmtExpr":209,"StmtLocal":217,"ExprArrayLiteral":51,"StmtWhile":50,"ExprIndex":207,"ExprUnary":115,"ExprStructLit":17},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 36 functions, 1 struct and 3 constants. 682 lines compile to 11,106 tokens and 5,373 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 74.2 KB. Compiles with 65 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/http.t27","category":"dmitrii-f-t27/trinity-memory","name":"http","module":"TrinityMemoryHTTP","lines":319,"bytes":15194,"description":"Bounded HTTP envelope validation; sockets and clocks are OS primitives.","health":"warn","tokens":3507,"nodes":1999,"depth":18,"loss":0,"tcErrors":42,"failedBackends":[],"outBytes":{"c":17648,"rust":16245,"verilog":25493,"verilog_hir":1668,"zig":16511},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":109,"StructDecl":2,"ExprIdentifier":565,"FnDecl":13,"StmtIf":81,"ExprBinary":316,"ExprLiteral":386,"ExprReturn":72,"StmtLocal":53,"StmtWhile":26,"ExprIndex":57,"StmtAssign":79,"ExprCall":67,"ExprFieldAccess":52,"ExprUnary":88,"StmtExpr":31,"ExprStructLit":2},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 13 functions and 2 structs. 319 lines compile to 3,507 tokens and 1,999 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 24.9 KB. Compiles with 42 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/json.t27","category":"dmitrii-f-t27/trinity-memory","name":"json","module":"TrinityMemoryJson","lines":357,"bytes":17709,"description":"Strict, bounded UTF-8 JSON parser. Native algorithms; no heap allocation. C adapter: double tm_json_strtod(uint8_t *nul_terminated), C numeric locale. Caller provides nonoverlapping live input, tokens, and decoded-byte arena. Failed parses may change scratch tokens/arena; result is written on success only.","health":"warn","tokens":4361,"nodes":2393,"depth":17,"loss":0,"tcErrors":14,"failedBackends":[],"outBytes":{"c":20230,"rust":18948,"verilog":28553,"verilog_hir":2545,"zig":19447},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":130,"ConstDecl":14,"ExprLiteral":307,"StructDecl":3,"ExprIdentifier":678,"FnDecl":13,"StmtAssign":96,"ExprFieldAccess":352,"ExprReturn":84,"ExprUnary":46,"StmtWhile":14,"ExprBinary":333,"StmtLocal":52,"ExprIndex":94,"StmtIf":105,"ExprCall":65,"StmtExpr":6,"ExprStructLit":1},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 13 functions, 3 structs and 14 constants. 357 lines compile to 4,361 tokens and 2,393 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 27.9 KB. Compiles with 14 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/json_writer.t27","category":"dmitrii-f-t27/trinity-memory","name":"json_writer","module":"TrinityMemoryJsonWriter","lines":169,"bytes":8862,"description":"Shared bounded JSON writer. Include generated json.h before this header. No heap, no implicit NUL terminator. Check error==0 before using output. Errors are sticky; a failed compound write may leave an incomplete prefix.","health":"warn","tokens":1959,"nodes":1030,"depth":16,"loss":0,"tcErrors":12,"failedBackends":[],"outBytes":{"c":10394,"rust":9027,"verilog":15268,"verilog_hir":1799,"zig":9682},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":63,"StructDecl":1,"ExprIdentifier":311,"FnDecl":11,"StmtAssign":43,"ExprFieldAccess":101,"ExprLiteral":143,"StmtIf":48,"ExprBinary":113,"ExprReturn":39,"ExprIndex":34,"StmtLocal":24,"StmtWhile":6,"ExprCall":49,"ExprUnary":7,"StmtExpr":36,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 11 functions and 1 struct. 169 lines compile to 1,959 tokens and 1,030 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 14.9 KB. Compiles with 12 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/python_api.t27","category":"dmitrii-f-t27/trinity-memory","name":"python_api","module":"TrinityMemoryPythonAPI","lines":60,"bytes":3281,"description":"Native entry points for Python FFI representation adapters. No Python-domain fallbacks; caller supplies every buffer and explicit bound.","health":"warn","tokens":762,"nodes":365,"depth":12,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":4488,"rust":3495,"verilog":6358,"verilog_hir":1063,"zig":4121},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":18,"FnDecl":6,"StmtLocal":7,"ExprLiteral":52,"StmtWhile":2,"ExprBinary":32,"ExprIdentifier":91,"StmtIf":11,"ExprIndex":3,"ExprUnary":37,"ExprReturn":13,"StmtAssign":2,"ExprCall":41,"ExprFieldAccess":20,"StmtExpr":30},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 6 functions. 60 lines compile to 762 tokens and 365 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 6.2 KB. Compiles with 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/random.t27","category":"dmitrii-f-t27/trinity-memory","name":"random","module":"TrinityMemoryRandom","lines":191,"bytes":10621,"description":"Integer-seeded Python Random compatibility; no heap or OS dependency. Sources: CPython v3.14.3 Modules/_randommodule.c and Lib/random.py. State and input/output/scratch buffers must be live and nonoverlapping. Initialize before use. Non-cryptographic, for reproducible experiments. Direct bits/below helpers have documented valid domains; checked wrappers return -70 invalid argument / -71 capacity without consuming random state.","health":"warn","tokens":2210,"nodes":1109,"depth":16,"loss":0,"tcErrors":18,"failedBackends":[],"outBytes":{"c":10721,"rust":8875,"verilog":15495,"verilog_hir":2532,"zig":9363},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":55,"ConstDecl":2,"ExprLiteral":179,"StructDecl":1,"ExprIdentifier":331,"FnDecl":16,"StmtIf":33,"ExprBinary":176,"ExprReturn":29,"StmtLocal":33,"StmtWhile":15,"ExprIndex":49,"StmtAssign":76,"ExprFieldAccess":83,"ExprArrayLiteral":1,"StmtExpr":2,"ExprCall":23,"ExprUnary":5},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 1 struct and 2 constants. 191 lines compile to 2,210 tokens and 1,109 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 15.1 KB. Compiles with 18 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/reports.t27","category":"dmitrii-f-t27/trinity-memory","name":"reports","module":"TrinityMemoryReports","lines":368,"bytes":57294,"description":"Native HTML report rendering. Every data value is escaped before insertion; HTML/CSS below are presentation templates, not embedded domain algorithms.","health":"warn","tokens":4212,"nodes":2228,"depth":17,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":58942,"rust":56140,"verilog":64950,"verilog_hir":1649,"zig":57906},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":79,"FnDecl":15,"StmtLocal":41,"ExprLiteral":401,"StmtWhile":11,"ExprBinary":173,"ExprIdentifier":641,"ExprIndex":61,"StmtIf":55,"StmtExpr":235,"ExprCall":283,"StmtAssign":23,"ExprFieldAccess":149,"ExprReturn":43,"ExprUnary":16,"ExprStructLit":2},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 15 functions. 368 lines compile to 4,212 tokens and 2,228 AST nodes, depth 17. Emits 5 of 5 backends; largest is Verilog at 63.4 KB. Compiles with 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/baseline5_decoder.t27","category":"dmitrii-f-t27/trinity-memory","name":"baseline5_decoder","module":"TrinityBaseline5DecoderT27","lines":20,"bytes":675,"description":null,"health":"warn","tokens":171,"nodes":87,"depth":11,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1609,"rust":315,"verilog":3181,"verilog_hir":348,"zig":831},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":2,"FnDecl":1,"StmtIf":1,"ExprBinary":21,"ExprIdentifier":7,"ExprLiteral":29,"ExprReturn":2,"TestBlock":6,"StmtExpr":6,"ExprCall":12},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function. Carries 6 tests. 20 lines compile to 171 tokens and 87 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/dense5_decoder.t27","category":"dmitrii-f-t27/trinity-memory","name":"dense5_decoder","module":"TrinityDense5DecoderT27","lines":28,"bytes":976,"description":null,"health":"warn","tokens":207,"nodes":93,"depth":12,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1813,"rust":538,"verilog":3414,"verilog_hir":416,"zig":1559},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":4,"FnDecl":2,"StmtLocal":1,"ExprBinary":14,"ExprFieldAccess":1,"ExprIdentifier":10,"ExprLiteral":28,"StmtIf":3,"ExprReturn":5,"ExprCall":15,"TestBlock":5,"StmtExpr":5},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 2 functions. Carries 5 tests. 28 lines compile to 207 tokens and 93 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/dot_stream.t27","category":"dmitrii-f-t27/trinity-memory","name":"dot_stream","module":"TrinityDotStreamT27","lines":170,"bytes":6011,"description":null,"health":"warn","tokens":1343,"nodes":590,"depth":14,"loss":2,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7145,"rust":3472,"verilog":12098,"verilog_hir":1598,"zig":6183},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":27,"FnDecl":9,"StmtLocal":4,"ExprBinary":95,"ExprIdentifier":130,"ExprLiteral":163,"StmtIf":22,"ExprReturn":22,"ExprCall":41,"ExprFieldAccess":3,"ExprUnary":3,"ConstDecl":18,"StmtAssign":29,"TestBlock":12,"StmtExpr":12},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 9 functions and 18 constants. Carries 12 tests. 170 lines compile to 1,343 tokens and 590 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 11.8 KB. Compiles with 2 items dropped by error recovery and 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_edge_argmax.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_edge_argmax","module":"TrinityFpgaEdgeArgmaxT27","lines":26,"bytes":1026,"description":null,"health":"warn","tokens":245,"nodes":122,"depth":7,"loss":1,"tcErrors":5,"failedBackends":[],"outBytes":{"c":1920,"rust":570,"verilog":3785,"verilog_hir":423,"zig":1098},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":7,"FnDecl":1,"StmtLocal":3,"ExprLiteral":33,"ExprIdentifier":25,"StmtIf":6,"ExprBinary":9,"StmtAssign":7,"ExprReturn":2,"TestBlock":6,"StmtExpr":6,"ExprCall":12,"ExprUnary":5},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function. Carries 6 tests. 26 lines compile to 245 tokens and 122 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.7 KB. Compiles with 1 item dropped by error recovery and 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_line_emitter.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_line_emitter","module":"TrinityFpgaLineEmitterT27","lines":50,"bytes":1611,"description":null,"health":"warn","tokens":407,"nodes":179,"depth":12,"loss":2,"tcErrors":1,"failedBackends":[],"outBytes":{"c":2715,"rust":789,"verilog":4975,"verilog_hir":799,"zig":2239},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":11,"ConstDecl":8,"ExprLiteral":50,"FnDecl":3,"StmtIf":8,"ExprBinary":17,"ExprIdentifier":34,"ExprReturn":6,"ExprCall":17,"ExprFieldAccess":1,"StmtAssign":10,"ExprUnary":3,"TestBlock":4,"StmtExpr":7},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 3 functions and 8 constants. Carries 4 tests. 50 lines compile to 407 tokens and 179 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 4.9 KB. Compiles with 2 items dropped by error recovery and 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_reset.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_reset","module":"TrinityFpgaResetT27","lines":25,"bytes":769,"description":null,"health":"warn","tokens":120,"nodes":46,"depth":7,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1379,"rust":307,"verilog":2519,"verilog_hir":565,"zig":556},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":2,"ConstDecl":6,"ExprLiteral":13,"FnDecl":1,"StmtAssign":4,"ExprIdentifier":9,"StmtIf":1,"ExprBinary":5,"TestBlock":1,"StmtExpr":2,"ExprCall":2},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function and 6 constants. Carries 1 test. 25 lines compile to 120 tokens and 46 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 2 items dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_tick.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_tick","module":"TrinityFpgaTickT27","lines":21,"bytes":768,"description":null,"health":"warn","tokens":108,"nodes":47,"depth":8,"loss":2,"tcErrors":1,"failedBackends":[],"outBytes":{"c":1356,"rust":211,"verilog":2557,"verilog_hir":445,"zig":525},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":3,"ConstDecl":3,"ExprLiteral":14,"FnDecl":1,"StmtAssign":3,"ExprIdentifier":7,"ExprBinary":8,"ExprUnary":1,"StmtIf":1,"TestBlock":2,"StmtExpr":2,"ExprCall":2},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function and 3 constants. Carries 2 tests. 21 lines compile to 108 tokens and 47 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 2.5 KB. Compiles with 2 items dropped by error recovery and 1 type error."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_trace_player.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_trace_player","module":"TrinityFpgaTracePlayerT27","lines":576,"bytes":19453,"description":null,"health":"warn","tokens":3922,"nodes":2149,"depth":85,"loss":2,"tcErrors":33,"failedBackends":[],"outBytes":{"c":20320,"rust":5100,"verilog":30505,"verilog_hir":3159,"zig":19690},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":161,"ConstDecl":119,"ExprLiteral":437,"FnDecl":6,"ExprReturn":5,"ExprBinary":209,"ExprIdentifier":668,"ExprFieldAccess":20,"ExprCall":64,"StmtAssign":279,"StmtIf":104,"ExprUnary":13,"ExprIndex":48,"TestBlock":5,"StmtExpr":11},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 6 functions and 119 constants. Carries 5 tests. 576 lines compile to 3,922 tokens and 2,149 AST nodes, depth 85. Emits 5 of 5 backends; largest is Verilog at 29.8 KB. Compiles with 2 items dropped by error recovery and 33 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_uart_tx.t27","category":"dmitrii-f-t27/trinity-memory","name":"fpga_uart_tx","module":"TrinityFpgaUartTxT27","lines":34,"bytes":954,"description":null,"health":"warn","tokens":198,"nodes":95,"depth":11,"loss":2,"tcErrors":3,"failedBackends":[],"outBytes":{"c":1817,"rust":289,"verilog":3217,"verilog_hir":479,"zig":931},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":7,"ConstDecl":5,"ExprLiteral":27,"FnDecl":1,"StmtIf":4,"ExprUnary":1,"ExprIdentifier":19,"StmtAssign":9,"ExprBinary":16,"TestBlock":2,"StmtExpr":2,"ExprCall":2},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function and 5 constants. Carries 2 tests. 34 lines compile to 198 tokens and 95 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 3.1 KB. Compiles with 2 items dropped by error recovery and 3 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/sparse41_decoder.t27","category":"dmitrii-f-t27/trinity-memory","name":"sparse41_decoder","module":"TrinitySparse41DecoderT27","lines":21,"bytes":714,"description":null,"health":"warn","tokens":180,"nodes":86,"depth":11,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1686,"rust":404,"verilog":3351,"verilog_hir":345,"zig":1480},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":4,"FnDecl":1,"StmtIf":3,"ExprBinary":14,"ExprIdentifier":7,"ExprLiteral":27,"ExprReturn":4,"StmtLocal":1,"ExprFieldAccess":1,"TestBlock":6,"StmtExpr":6,"ExprCall":12},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 1 function. Carries 6 tests. 21 lines compile to 180 tokens and 86 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 3.3 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_join.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_join","module":"TrinityStreamJoinT27","lines":39,"bytes":1842,"description":null,"health":"warn","tokens":309,"nodes":137,"depth":9,"loss":1,"tcErrors":5,"failedBackends":[],"outBytes":{"c":2431,"rust":880,"verilog":4425,"verilog_hir":517,"zig":2122},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":7,"FnDecl":2,"StmtIf":6,"ExprIdentifier":24,"ExprReturn":3,"ExprFieldAccess":1,"ExprLiteral":48,"StmtLocal":5,"ExprBinary":11,"StmtAssign":5,"ExprCall":13,"TestBlock":6,"StmtExpr":6},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/tiny","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 2 functions. Carries 6 tests. 39 lines compile to 309 tokens and 137 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 4.3 KB. Compiles with 1 item dropped by error recovery and 5 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_storage.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_storage","module":"TrinityStreamStorageT27","lines":68,"bytes":2308,"description":null,"health":"warn","tokens":351,"nodes":132,"depth":15,"loss":2,"tcErrors":2,"failedBackends":[],"outBytes":{"c":2498,"rust":748,"verilog":4219,"verilog_hir":856,"zig":1499},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":12,"ConstDecl":13,"ExprLiteral":25,"FnDecl":2,"StmtIf":8,"ExprIdentifier":35,"ExprReturn":2,"ExprBinary":9,"StmtAssign":14,"ExprIndex":2,"ExprUnary":2,"TestBlock":2,"StmtExpr":2,"ExprCall":4},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 2 functions and 13 constants. Carries 2 tests. 68 lines compile to 351 tokens and 132 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 4.1 KB. Compiles with 2 items dropped by error recovery and 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_view.t27","category":"dmitrii-f-t27/trinity-memory","name":"stream_view","module":"TrinityStreamViewT27","lines":55,"bytes":2086,"description":null,"health":"warn","tokens":536,"nodes":255,"depth":15,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3215,"rust":1553,"verilog":5336,"verilog_hir":690,"zig":2752},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":10,"FnDecl":4,"StmtLocal":3,"ExprBinary":51,"ExprIdentifier":41,"ExprLiteral":88,"StmtIf":9,"ExprReturn":12,"ExprCall":23,"StmtAssign":1,"ExprFieldAccess":1,"TestBlock":6,"StmtExpr":6},"tags":["domain/other","has/functions","has/tests","health/warn","issue/dropped-content","size/small","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 4 functions. Carries 6 tests. 55 lines compile to 536 tokens and 255 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 5.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"dmitrii-f-t27/trinity-memory/t27/rtl_driver.t27","category":"dmitrii-f-t27/trinity-memory","name":"rtl_driver","module":"TrinityMemoryRTLDriver","lines":316,"bytes":21275,"description":"RTL packet preparation, observed-output validation and actual Icarus runner. The runner invokes a generic OS process ABI and checks both child exits. Parsing a fixture alone is not simulation evidence; no software fallback. Buffers must be live/nonoverlapping. Prepared outputs commit after validation; observed results are scratch on failure, summary commits only on success.","health":"warn","tokens":4482,"nodes":2279,"depth":21,"loss":0,"tcErrors":26,"failedBackends":[],"outBytes":{"c":24199,"rust":22281,"verilog":33758,"verilog_hir":3169,"zig":22387},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":107,"ConstDecl":7,"ExprLiteral":367,"StructDecl":5,"ExprIdentifier":694,"FnDecl":16,"StmtLocal":75,"ExprBinary":344,"StmtIf":80,"StmtAssign":101,"ExprFieldAccess":203,"ExprReturn":74,"StmtWhile":20,"ExprIndex":46,"ExprUnary":41,"ExprCall":74,"ExprStructLit":6,"StmtExpr":16,"ExprArrayLiteral":3},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 16 functions, 5 structs and 7 constants. 316 lines compile to 4,482 tokens and 2,279 AST nodes, depth 21. Emits 5 of 5 backends; largest is Verilog at 33.0 KB. Compiles with 26 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/sparsity.t27","category":"dmitrii-f-t27/trinity-memory","name":"sparsity","module":"TrinityMemorySparsity","lines":264,"bytes":10398,"description":"Trinity Memory explicit lossy preparation and marginal entropy. Status: 0 success, -1 invalid input, -2 short output. Valid arrays and non-overlapping input/output buffers are a host ABI duty. log2 is an external host libm primitive, not a second application algorithm.","health":"warn","tokens":2130,"nodes":1120,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":11660,"rust":9582,"verilog":18420,"verilog_hir":1652,"zig":10408},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":75,"FnDecl":12,"ExprReturn":51,"ExprBinary":178,"ExprIdentifier":298,"ExprLiteral":183,"ExprUnary":40,"StmtIf":56,"StmtLocal":46,"StmtWhile":14,"ExprCall":35,"ExprIndex":30,"StmtAssign":40,"StructDecl":1,"ExprFieldAccess":46,"TestBlock":2,"ExprArrayLiteral":3,"StmtExpr":10},"tags":["domain/other","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 12 functions and 1 struct. Carries 2 tests. 264 lines compile to 2,130 tokens and 1,120 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 2 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/tensorpack.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack","module":"TrinityMemoryTensorPack","lines":248,"bytes":11174,"description":"Native TensorPack v1 framing and caller-supplied descriptor validation. This is NOT a JSON parser or a full TensorPack decoder. In particular, this module cannot establish that descriptors equal the JSON metadata in a file. Include generated codecs.h, container.h, then tensorpack.h. All nonempty pointer ranges must be valid and output records must not alias input data.","health":"warn","tokens":2329,"nodes":1245,"depth":14,"loss":0,"tcErrors":18,"failedBackends":[],"outBytes":{"c":12090,"rust":11082,"verilog":18016,"verilog_hir":1818,"zig":11465},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":69,"ConstDecl":6,"ExprLiteral":179,"StructDecl":4,"ExprIdentifier":382,"FnDecl":6,"StmtLocal":37,"StmtWhile":13,"ExprBinary":186,"ExprIndex":58,"StmtIf":53,"ExprReturn":52,"StmtAssign":44,"ExprCall":29,"ExprFieldAccess":112,"ExprUnary":14,"ExprStructLit":1},"tags":["domain/other","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 6 functions, 4 structs and 6 constants. 248 lines compile to 2,329 tokens and 1,245 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.6 KB. Compiles with 18 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_cli.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack_cli","module":"TrinityMemoryTensorPackCLI","lines":206,"bytes":13197,"description":"Native TensorPack CLI JSON contracts, independent of file/terminal services. Workspace, value buffers and output JSON are caller-owned scratch. Callers publish output only after success; no routine allocates or opens a path.","health":"warn","tokens":2942,"nodes":1534,"depth":14,"loss":0,"tcErrors":13,"failedBackends":[],"outBytes":{"c":14997,"rust":13553,"verilog":19063,"verilog_hir":1511,"zig":14133},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":61,"FnDecl":9,"ExprReturn":31,"ExprBinary":112,"ExprCall":91,"ExprFieldAccess":203,"ExprIdentifier":464,"ExprLiteral":200,"StmtLocal":41,"ExprStructLit":6,"ExprUnary":55,"StmtIf":44,"ExprIndex":91,"StmtWhile":13,"StmtAssign":56,"StmtExpr":57},"tags":["domain/other","has/functions","has/loops","health/warn","issue/type-errors","size/medium","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 9 functions. 206 lines compile to 2,942 tokens and 1,534 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 18.6 KB. Compiles with 13 type errors."},{"path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_json.t27","category":"dmitrii-f-t27/trinity-memory","name":"tensorpack_json","module":"TrinityMemoryTensorPackJSON","lines":417,"bytes":22429,"description":"Native TensorPack JSON binding and canonical serialization. Workspace buffers are scratch and may change on errors. All other output is committed only after complete validation. Caller ranges must be valid, nonoverlapping and stable throughout a call; no routine allocates memory.","health":"warn","tokens":5015,"nodes":2657,"depth":14,"loss":0,"tcErrors":41,"failedBackends":[],"outBytes":{"c":24676,"rust":17117,"verilog":34171,"verilog_hir":2851,"zig":23056},"repo":"dmitrii-f-t27/trinity-memory","kinds":{"Module":126,"ConstDecl":2,"ExprLiteral":404,"StructDecl":2,"ExprIdentifier":805,"FnDecl":17,"StmtIf":86,"ExprBinary":285,"ExprReturn":61,"StmtLocal":80,"StmtWhile":31,"ExprIndex":156,"ExprFieldAccess":230,"StmtAssign":113,"ExprCall":124,"ExprUnary":51,"ExprStructLit":6,"StmtExpr":70,"ExprArrayLiteral":6,"TestBlock":2},"tags":["domain/other","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/dmitrii-f-t27/trinity-memory"],"summary":"Declares 17 functions, 2 structs and 2 constants. Carries 2 tests. 417 lines compile to 5,015 tokens and 2,657 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 33.4 KB. Compiles with 41 type errors."},{"path":"trios/.trinity/specs/hardware-constraints-kg.t27","category":"trios/.trinity","name":"hardware-constraints-kg","module":null,"lines":275,"bytes":6874,"description":null,"health":"warn","tokens":674,"nodes":1,"depth":1,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trios","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/medium","src/trios"],"summary":"Declares no top-level items. 275 lines compile to 674 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 1 item dropped by error recovery."},{"path":"trios/.trinity/specs/parameter-golf/phi_init.t27","category":"trios/.trinity","name":"phi_init","module":"PhiWeightInit","lines":147,"bytes":6958,"description":"t27/specs/parameter-golf/phi_init.t27 φ-Based Weight Initialization for Parameter Golf Derivation from sacred physics + GF16 quantization","health":"ok","tokens":568,"nodes":129,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3242,"rust":1404,"verilog":5569,"verilog_hir":621,"zig":3759},"repo":"trios","kinds":{"Module":4,"UseDecl":3,"StructDecl":1,"ExprIdentifier":30,"FnDecl":4,"StmtLocal":6,"ExprCall":3,"ExprBinary":6,"ExprLiteral":12,"ExprFieldAccess":14,"StmtIf":3,"ExprUnary":2,"ExprReturn":6,"ConstDecl":4,"ExprIndex":4,"ExprArrayLiteral":1,"ExprStructLit":1,"StmtExpr":17,"StmtAssign":1,"TestBlock":5,"InvariantBlock":2},"tags":["domain/other","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/small","src/trios"],"summary":"Declares 4 functions, 1 struct and 4 constants. Carries 5 tests and 2 invariants. 147 lines compile to 568 tokens and 129 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 5.4 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_retry.t27","category":"trios/apps","name":"adaptive_retry","module":"AdaptiveRetry","lines":143,"bytes":4622,"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","health":"ok","tokens":535,"nodes":135,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":2732,"rust":799,"verilog":4251,"verilog_hir":723,"zig":2243},"repo":"trios","kinds":{"Module":19,"ConstDecl":5,"ExprLiteral":23,"FnDecl":6,"StmtIf":9,"ExprBinary":18,"ExprIdentifier":29,"StmtExpr":15,"ExprFieldAccess":2,"StmtLocal":5,"ExprCall":4},"tags":["domain/other","has/functions","health/ok","size/small","src/trios"],"summary":"Declares 6 functions and 5 constants. 143 lines compile to 535 tokens and 135 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 4.2 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_routing.t27","category":"trios/apps","name":"adaptive_routing","module":"AdaptiveRouting","lines":281,"bytes":10124,"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","health":"warn","tokens":1757,"nodes":779,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":10578,"rust":4852,"verilog":16754,"verilog_hir":1748,"zig":8863},"repo":"trios","kinds":{"Module":18,"UseDecl":1,"ConstDecl":5,"ExprLiteral":231,"FnDecl":19,"ExprReturn":27,"ExprBinary":93,"ExprIdentifier":162,"ExprFieldAccess":8,"StmtIf":15,"StmtLocal":14,"ExprCall":118,"StmtAssign":31,"TestBlock":15,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 5 constants. Carries 15 tests. 281 lines compile to 1,757 tokens and 779 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 16.4 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/anomaly_detector.t27","category":"trios/apps","name":"anomaly_detector","module":"anomaly_detector","lines":378,"bytes":11717,"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","health":"warn","tokens":1894,"nodes":837,"depth":12,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":11030,"rust":4224,"verilog":17113,"verilog_hir":2076,"zig":8729},"repo":"trios","kinds":{"Module":74,"UseDecl":1,"ConstDecl":9,"ExprLiteral":148,"FnDecl":23,"ExprReturn":46,"ExprBinary":141,"ExprIdentifier":230,"StmtLocal":47,"StmtWhile":6,"ExprCall":27,"ExprIndex":12,"StmtAssign":30,"StmtIf":43},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 23 functions and 9 constants. 378 lines compile to 1,894 tokens and 837 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 16.7 KB. Compiles with 6 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/api_documenter.t27","category":"trios/apps","name":"api_documenter","module":"api_documenter","lines":372,"bytes":13077,"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","health":"warn","tokens":2128,"nodes":789,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13146,"rust":9512,"verilog":19728,"verilog_hir":3871,"zig":9622},"repo":"trios","kinds":{"Module":15,"UseDecl":1,"ConstDecl":11,"ExprLiteral":190,"FnDecl":42,"ExprReturn":44,"ExprBinary":197,"ExprIdentifier":182,"StmtLocal":50,"ExprCall":27,"StmtIf":8,"StmtAssign":14,"StmtWhile":4,"ExprIndex":4},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 42 functions and 11 constants. 372 lines compile to 2,128 tokens and 789 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.3 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/area_optimization.t27","category":"trios/apps","name":"area_optimization","module":"AreaOptimization","lines":227,"bytes":7102,"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","health":"ok","tokens":1089,"nodes":484,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7931,"rust":2333,"verilog":14985,"verilog_hir":1776,"zig":6321},"repo":"trios","kinds":{"Module":14,"UseDecl":1,"ConstDecl":5,"ExprLiteral":148,"FnDecl":15,"ExprReturn":24,"ExprBinary":71,"ExprIdentifier":75,"StmtIf":9,"ExprFieldAccess":1,"ExprCall":57,"TestBlock":22,"StmtAssign":17,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 15 functions and 5 constants. Carries 22 tests. 227 lines compile to 1,089 tokens and 484 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/auto_config.t27","category":"trios/apps","name":"auto_config","module":"auto_config","lines":403,"bytes":13864,"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","health":"warn","tokens":2090,"nodes":885,"depth":22,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":11360,"rust":9966,"verilog":17570,"verilog_hir":1815,"zig":10399},"repo":"trios","kinds":{"Module":69,"UseDecl":1,"ConstDecl":20,"ExprLiteral":141,"FnDecl":19,"ExprReturn":31,"ExprBinary":118,"ExprIdentifier":265,"StmtLocal":54,"ExprArrayLiteral":1,"StmtWhile":12,"ExprCall":39,"ExprIndex":28,"StmtIf":43,"StmtAssign":34,"StmtExpr":7,"StmtBreak":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 19 functions and 20 constants. 403 lines compile to 2,090 tokens and 885 AST nodes, depth 22. Emits 5 of 5 backends; largest is Verilog at 17.2 KB. Compiles with 9 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/bandwidth_allocator.t27","category":"trios/apps","name":"bandwidth_allocator","module":"BandwidthAllocator","lines":353,"bytes":14766,"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","health":"warn","tokens":2513,"nodes":1164,"depth":13,"loss":0,"tcErrors":6,"failedBackends":[],"outBytes":{"c":14716,"rust":7462,"verilog":22461,"verilog_hir":2021,"zig":12869},"repo":"trios","kinds":{"Module":35,"UseDecl":1,"ConstDecl":4,"ExprLiteral":316,"FnDecl":19,"ExprReturn":28,"ExprBinary":145,"ExprIdentifier":271,"ExprFieldAccess":16,"StmtIf":32,"StmtLocal":29,"ExprCall":181,"StmtAssign":48,"TestBlock":16,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 4 constants. Carries 16 tests. 353 lines compile to 2,513 tokens and 1,164 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 21.9 KB. Compiles with 6 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cache_management.t27","category":"trios/apps","name":"cache_management","module":"cache_management","lines":346,"bytes":10455,"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","health":"ok","tokens":1675,"nodes":650,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9878,"rust":6476,"verilog":15485,"verilog_hir":2044,"zig":7693},"repo":"trios","kinds":{"Module":37,"UseDecl":1,"ConstDecl":4,"ExprLiteral":77,"FnDecl":27,"ExprReturn":37,"ExprBinary":88,"ExprIdentifier":217,"StmtLocal":49,"ExprCall":41,"StmtIf":23,"StmtAssign":24,"StmtWhile":6,"ExprIndex":18,"StmtBreak":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 27 functions and 4 constants. 346 lines compile to 1,675 tokens and 650 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.1 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/compression_engine.t27","category":"trios/apps","name":"compression_engine","module":"compression_engine","lines":320,"bytes":9865,"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","health":"warn","tokens":1567,"nodes":695,"depth":12,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":9521,"rust":4867,"verilog":14703,"verilog_hir":2060,"zig":7463},"repo":"trios","kinds":{"Module":61,"UseDecl":1,"ConstDecl":8,"ExprLiteral":115,"FnDecl":19,"ExprReturn":37,"ExprBinary":120,"ExprIdentifier":209,"StmtIf":28,"StmtLocal":38,"StmtWhile":7,"StmtAssign":34,"ExprIndex":5,"ExprCall":13},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 8 constants. 320 lines compile to 1,567 tokens and 695 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 9 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/congestion_control.t27","category":"trios/apps","name":"congestion_control","module":"congestion_control","lines":262,"bytes":7582,"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","health":"warn","tokens":1169,"nodes":481,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":7382,"rust":4877,"verilog":11407,"verilog_hir":1771,"zig":5551},"repo":"trios","kinds":{"Module":31,"UseDecl":1,"ConstDecl":9,"ExprLiteral":56,"FnDecl":19,"ExprReturn":26,"ExprBinary":61,"ExprIdentifier":166,"ExprCall":30,"StmtLocal":30,"StmtIf":19,"StmtAssign":26,"StmtWhile":4,"ExprIndex":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 9 constants. 262 lines compile to 1,169 tokens and 481 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.1 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cross_layer_optimizer.t27","category":"trios/apps","name":"cross_layer_optimizer","module":"CrossLayerOptimizer","lines":316,"bytes":12580,"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","health":"warn","tokens":2239,"nodes":1001,"depth":13,"loss":0,"tcErrors":10,"failedBackends":[],"outBytes":{"c":12614,"rust":3507,"verilog":20352,"verilog_hir":1878,"zig":10946},"repo":"trios","kinds":{"Module":28,"UseDecl":1,"ConstDecl":8,"ExprLiteral":291,"FnDecl":19,"ExprReturn":23,"ExprBinary":131,"ExprIdentifier":220,"ExprFieldAccess":12,"StmtIf":20,"StmtLocal":35,"ExprCall":123,"StmtAssign":44,"TestBlock":16,"StmtExpr":30},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 8 constants. Carries 16 tests. 316 lines compile to 2,239 tokens and 1,001 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 10 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/docs_generator.t27","category":"trios/apps","name":"docs_generator","module":"docs_generator","lines":387,"bytes":12232,"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","health":"warn","tokens":2279,"nodes":827,"depth":10,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13515,"rust":9662,"verilog":20021,"verilog_hir":4915,"zig":9015},"repo":"trios","kinds":{"Module":14,"UseDecl":1,"ConstDecl":19,"ExprLiteral":223,"FnDecl":54,"ExprReturn":54,"ExprBinary":238,"ExprIdentifier":163,"StmtLocal":25,"StmtIf":8,"StmtAssign":14,"StmtWhile":2,"ExprCall":9,"ExprIndex":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 54 functions and 19 constants. 387 lines compile to 2,279 tokens and 827 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/energy_aware_routing.t27","category":"trios/apps","name":"energy_aware_routing","module":"EnergyAwareRouting","lines":334,"bytes":11308,"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","health":"warn","tokens":1872,"nodes":841,"depth":9,"loss":0,"tcErrors":9,"failedBackends":[],"outBytes":{"c":11330,"rust":6294,"verilog":18449,"verilog_hir":1856,"zig":9679},"repo":"trios","kinds":{"Module":31,"UseDecl":1,"ConstDecl":4,"ExprLiteral":225,"FnDecl":19,"ExprReturn":24,"ExprBinary":96,"ExprIdentifier":180,"ExprFieldAccess":8,"StmtIf":30,"StmtLocal":32,"ExprCall":121,"StmtAssign":38,"TestBlock":13,"StmtExpr":19},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 4 constants. Carries 13 tests. 334 lines compile to 1,872 tokens and 841 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Compiles with 9 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/etx.t27","category":"trios/apps","name":"etx","module":"MeshEtx","lines":133,"bytes":4646,"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","health":"ok","tokens":733,"nodes":373,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4614,"rust":795,"verilog":7448,"verilog_hir":771,"zig":4058},"repo":"trios","kinds":{"Module":16,"UseDecl":1,"ConstDecl":4,"ExprLiteral":90,"FnDecl":6,"StmtIf":9,"ExprBinary":44,"ExprIdentifier":101,"ExprReturn":15,"ExprFieldAccess":3,"ExprCall":46,"TestBlock":6,"StmtAssign":21,"StmtExpr":11},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/trios"],"summary":"Declares 6 functions and 4 constants. Carries 6 tests. 133 lines compile to 733 tokens and 373 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 7.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/failure_predictor.t27","category":"trios/apps","name":"failure_predictor","module":"failure_predictor","lines":327,"bytes":11955,"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","health":"warn","tokens":2045,"nodes":948,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":12241,"rust":5609,"verilog":20157,"verilog_hir":1954,"zig":10513},"repo":"trios","kinds":{"Module":34,"UseDecl":1,"ConstDecl":4,"ExprLiteral":294,"FnDecl":19,"ExprReturn":35,"ExprBinary":129,"ExprIdentifier":170,"ExprFieldAccess":16,"StmtIf":25,"StmtLocal":26,"ExprCall":119,"StmtAssign":36,"TestBlock":17,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 19 functions and 4 constants. Carries 17 tests. 327 lines compile to 2,045 tokens and 948 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.7 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/fault_detection.t27","category":"trios/apps","name":"fault_detection","module":"FaultDetection","lines":256,"bytes":9377,"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","health":"ok","tokens":1802,"nodes":796,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10273,"rust":4537,"verilog":17032,"verilog_hir":1633,"zig":8694},"repo":"trios","kinds":{"Module":17,"UseDecl":1,"ConstDecl":5,"ExprLiteral":247,"FnDecl":18,"ExprReturn":26,"ExprBinary":91,"ExprIdentifier":151,"ExprFieldAccess":16,"StmtIf":16,"StmtLocal":18,"ExprCall":121,"StmtAssign":30,"TestBlock":17,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 18 functions and 5 constants. Carries 17 tests. 256 lines compile to 1,802 tokens and 796 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/flow_control.t27","category":"trios/apps","name":"flow_control","module":"flow_control","lines":269,"bytes":7580,"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","health":"ok","tokens":1343,"nodes":480,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7789,"rust":4595,"verilog":12689,"verilog_hir":1914,"zig":5709},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":8,"ExprLiteral":67,"FnDecl":26,"ExprReturn":37,"ExprBinary":66,"ExprIdentifier":140,"StmtLocal":40,"ExprCall":35,"StmtIf":13,"StmtAssign":8,"StmtWhile":5,"ExprIndex":7},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 26 functions and 8 constants. 269 lines compile to 1,343 tokens and 480 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.4 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/hardware_validation.t27","category":"trios/apps","name":"hardware_validation","module":"HardwareValidation","lines":203,"bytes":6473,"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","health":"ok","tokens":1130,"nodes":472,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7508,"rust":2404,"verilog":13177,"verilog_hir":1763,"zig":5337},"repo":"trios","kinds":{"Module":2,"UseDecl":1,"ConstDecl":8,"ExprLiteral":140,"FnDecl":18,"ExprReturn":18,"ExprBinary":81,"ExprIdentifier":83,"StmtIf":1,"ExprCall":64,"TestBlock":17,"StmtAssign":14,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 18 functions and 8 constants. Carries 17 tests. 203 lines compile to 1,130 tokens and 472 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_dashboard.t27","category":"trios/apps","name":"health_dashboard","module":"health_dashboard","lines":349,"bytes":11959,"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","health":"warn","tokens":1852,"nodes":819,"depth":14,"loss":0,"tcErrors":12,"failedBackends":[],"outBytes":{"c":11805,"rust":7280,"verilog":17340,"verilog_hir":2656,"zig":9142},"repo":"trios","kinds":{"Module":61,"UseDecl":1,"ConstDecl":19,"ExprLiteral":139,"FnDecl":27,"ExprReturn":38,"ExprBinary":168,"ExprIdentifier":240,"StmtIf":34,"StmtLocal":32,"StmtWhile":6,"ExprIndex":13,"ExprCall":13,"StmtAssign":28},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 27 functions and 19 constants. 349 lines compile to 1,852 tokens and 819 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 16.9 KB. Compiles with 12 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_monitoring.t27","category":"trios/apps","name":"health_monitoring","module":"HealthMonitoring","lines":310,"bytes":15008,"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","health":"ok","tokens":3018,"nodes":1500,"depth":21,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15599,"rust":6579,"verilog":21802,"verilog_hir":1377,"zig":14270},"repo":"trios","kinds":{"Module":78,"UseDecl":1,"ConstDecl":17,"ExprLiteral":416,"FnDecl":13,"ExprReturn":32,"ExprBinary":204,"ExprIdentifier":359,"ExprFieldAccess":24,"StmtIf":67,"StmtLocal":6,"ExprCall":204,"StmtAssign":58,"TestBlock":9,"StmtExpr":12},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 13 functions and 17 constants. Carries 9 tests. 310 lines compile to 3,018 tokens and 1,500 AST nodes, depth 21. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_framework.t27","category":"trios/apps","name":"integration_framework","module":"integration_framework","lines":544,"bytes":17859,"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","health":"warn","tokens":2924,"nodes":1128,"depth":15,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":17567,"rust":13139,"verilog":26109,"verilog_hir":4445,"zig":13482},"repo":"trios","kinds":{"Module":45,"UseDecl":1,"ConstDecl":33,"ExprLiteral":232,"FnDecl":48,"ExprReturn":55,"ExprBinary":224,"ExprIdentifier":297,"StmtLocal":62,"ExprCall":33,"StmtWhile":16,"ExprIndex":23,"StmtIf":24,"StmtAssign":34,"StmtBreak":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 48 functions and 33 constants. 544 lines compile to 2,924 tokens and 1,128 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 25.5 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_tests.t27","category":"trios/apps","name":"integration_tests","module":"MeshIntegrationTests","lines":244,"bytes":7954,"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","health":"ok","tokens":1167,"nodes":609,"depth":18,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5470,"rust":439,"verilog":8924,"verilog_hir":515,"zig":5087},"repo":"trios","kinds":{"Module":10,"UseDecl":1,"ConstDecl":7,"ExprLiteral":132,"FnDecl":2,"StmtIf":5,"ExprBinary":92,"ExprIdentifier":200,"ExprReturn":5,"ExprFieldAccess":23,"StmtLocal":1,"TestBlock":10,"StmtAssign":53,"ExprCall":42,"StmtExpr":26},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 2 functions and 7 constants. Carries 10 tests. 244 lines compile to 1,167 tokens and 609 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 8.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/key_management.t27","category":"trios/apps","name":"key_management","module":"KeyManagement","lines":301,"bytes":11264,"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","health":"warn","tokens":2166,"nodes":1010,"depth":15,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":11446,"rust":6566,"verilog":17243,"verilog_hir":1281,"zig":10110},"repo":"trios","kinds":{"Module":46,"UseDecl":1,"ConstDecl":5,"ExprLiteral":312,"FnDecl":14,"ExprReturn":35,"ExprBinary":126,"ExprIdentifier":197,"ExprFieldAccess":20,"StmtIf":33,"ExprCall":151,"StmtLocal":13,"StmtAssign":28,"TestBlock":13,"StmtExpr":16},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 14 functions and 5 constants. Carries 13 tests. 301 lines compile to 2,166 tokens and 1,010 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 16.8 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/link_quality_monitor.t27","category":"trios/apps","name":"link_quality_monitor","module":"LinkQualityMonitor","lines":170,"bytes":6171,"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","health":"ok","tokens":773,"nodes":208,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3109,"rust":794,"verilog":4667,"verilog_hir":790,"zig":2759},"repo":"trios","kinds":{"Module":19,"ConstDecl":7,"ExprLiteral":39,"FnDecl":6,"StmtLocal":9,"ExprBinary":32,"ExprFieldAccess":22,"ExprIdentifier":41,"StmtIf":9,"StmtExpr":15,"ExprIndex":8,"ExprUnary":1},"tags":["domain/other","has/functions","health/ok","size/medium","src/trios"],"summary":"Declares 6 functions and 7 constants. 170 lines compile to 773 tokens and 208 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 4.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/lite_crypto.t27","category":"trios/apps","name":"lite_crypto","module":"LiteCrypto","lines":157,"bytes":5455,"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","health":"ok","tokens":755,"nodes":299,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4476,"rust":736,"verilog":8621,"verilog_hir":781,"zig":3930},"repo":"trios","kinds":{"Module":1,"UseDecl":1,"ConstDecl":3,"ExprLiteral":72,"FnDecl":6,"StmtLocal":13,"ExprBinary":42,"ExprIdentifier":74,"ExprReturn":4,"ExprFieldAccess":4,"ExprCall":32,"TestBlock":13,"StmtAssign":21,"StmtExpr":13},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 6 functions and 3 constants. Carries 13 tests. 157 lines compile to 755 tokens and 299 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 8.4 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/load_predictor.t27","category":"trios/apps","name":"load_predictor","module":"load_predictor","lines":305,"bytes":8931,"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","health":"warn","tokens":1509,"nodes":619,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8875,"rust":4498,"verilog":14007,"verilog_hir":1844,"zig":6763},"repo":"trios","kinds":{"Module":47,"UseDecl":1,"ConstDecl":5,"ExprLiteral":97,"FnDecl":22,"ExprReturn":37,"ExprBinary":96,"ExprIdentifier":183,"StmtLocal":43,"StmtWhile":6,"ExprIndex":9,"StmtAssign":24,"ExprCall":22,"StmtIf":26,"ExprUnary":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 22 functions and 5 constants. 305 lines compile to 1,509 tokens and 619 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.7 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/local_processing.t27","category":"trios/apps","name":"local_processing","module":"local_processing","lines":310,"bytes":9171,"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","health":"warn","tokens":1628,"nodes":625,"depth":9,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":9379,"rust":5979,"verilog":14736,"verilog_hir":2715,"zig":6924},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":10,"ExprLiteral":103,"FnDecl":29,"ExprReturn":36,"ExprBinary":110,"ExprIdentifier":186,"StmtLocal":40,"ExprCall":24,"StmtWhile":10,"ExprIndex":11,"StmtAssign":26,"StmtIf":12},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 29 functions and 10 constants. 310 lines compile to 1,628 tokens and 625 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 14.4 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/m3_multihop.t27","category":"trios/apps","name":"m3_multihop","module":"M3MultiHop","lines":351,"bytes":11874,"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","health":"ok","tokens":1452,"nodes":68,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1948,"rust":807,"verilog":3098,"verilog_hir":517,"zig":1714},"repo":"trios","kinds":{"Module":3,"ConstDecl":9,"ExprLiteral":15,"FnDecl":4,"StmtExpr":5,"ExprFieldAccess":7,"ExprIdentifier":11,"StmtLocal":6,"ExprBinary":5,"StmtIf":1,"ExprCall":2},"tags":["domain/other","has/functions","health/ok","size/medium","src/trios"],"summary":"Declares 4 functions and 9 constants. 351 lines compile to 1,452 tokens and 68 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.0 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_protocol_stack.t27","category":"trios/apps","name":"mesh_protocol_stack","module":"MeshProtocolStack","lines":210,"bytes":7140,"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","health":"ok","tokens":1332,"nodes":606,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7089,"rust":1168,"verilog":12024,"verilog_hir":907,"zig":6137},"repo":"trios","kinds":{"Module":17,"UseDecl":1,"ConstDecl":5,"ExprLiteral":94,"FnDecl":10,"ExprReturn":14,"ExprBinary":66,"ExprIdentifier":193,"ExprFieldAccess":29,"StmtIf":9,"ExprCall":86,"TestBlock":14,"StmtAssign":39,"StmtExpr":29},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 10 functions and 5 constants. Carries 14 tests. 210 lines compile to 1,332 tokens and 606 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 11.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_routing.t27","category":"trios/apps","name":"mesh_routing","module":"MeshRouting","lines":328,"bytes":10981,"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","health":"ok","tokens":1564,"nodes":497,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7010,"rust":874,"verilog":13079,"verilog_hir":993,"zig":5566},"repo":"trios","kinds":{"Module":43,"UseDecl":1,"ConstDecl":6,"ExprLiteral":108,"FnDecl":7,"StmtLocal":5,"ExprFieldAccess":2,"ExprBinary":67,"ExprIdentifier":105,"StmtIf":22,"ExprReturn":5,"ExprUnary":2,"ExprCall":51,"TestBlock":22,"StmtExpr":46,"StmtAssign":5},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 7 functions and 6 constants. Carries 22 tests. 328 lines compile to 1,564 tokens and 497 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_router.t27","category":"trios/apps","name":"multipath_router","module":"MultiPathRouter","lines":126,"bytes":4401,"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","health":"warn","tokens":533,"nodes":118,"depth":7,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":2570,"rust":1097,"verilog":3980,"verilog_hir":749,"zig":2131},"repo":"trios","kinds":{"Module":7,"ConstDecl":3,"ExprLiteral":19,"FnDecl":5,"StmtLocal":11,"ExprIndex":4,"ExprIdentifier":31,"StmtIf":4,"ExprBinary":17,"StmtAssign":2,"ExprFieldAccess":7,"StmtExpr":7,"ExprCall":1},"tags":["domain/other","has/functions","health/warn","issue/type-errors","size/small","src/trios"],"summary":"Declares 5 functions and 3 constants. 126 lines compile to 533 tokens and 118 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 3.9 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_routing.t27","category":"trios/apps","name":"multipath_routing","module":"multipath_routing","lines":379,"bytes":13690,"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","health":"ok","tokens":2461,"nodes":1144,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13454,"rust":5433,"verilog":20813,"verilog_hir":1904,"zig":11656},"repo":"trios","kinds":{"Module":36,"UseDecl":1,"ConstDecl":5,"ExprLiteral":360,"FnDecl":20,"ExprReturn":32,"ExprBinary":141,"ExprIdentifier":246,"ExprFieldAccess":8,"StmtIf":30,"StmtLocal":21,"ExprCall":166,"StmtAssign":36,"ExprUnary":1,"StmtWhile":1,"TestBlock":16,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/loops","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 20 functions and 5 constants. Carries 16 tests. 379 lines compile to 2,461 tokens and 1,144 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 20.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_analytics.t27","category":"trios/apps","name":"network_analytics","module":"NetworkAnalytics","lines":271,"bytes":8932,"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","health":"ok","tokens":1483,"nodes":631,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9438,"rust":3792,"verilog":16091,"verilog_hir":1789,"zig":7725},"repo":"trios","kinds":{"Module":6,"UseDecl":1,"ConstDecl":9,"ExprLiteral":181,"FnDecl":21,"ExprReturn":26,"ExprBinary":78,"ExprIdentifier":126,"ExprFieldAccess":8,"ExprCall":92,"StmtLocal":13,"StmtIf":5,"TestBlock":18,"StmtAssign":23,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 21 functions and 9 constants. Carries 18 tests. 271 lines compile to 1,483 tokens and 631 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_coding.t27","category":"trios/apps","name":"network_coding","module":"NetworkCoding","lines":298,"bytes":10044,"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","health":"ok","tokens":1867,"nodes":775,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10591,"rust":3997,"verilog":18434,"verilog_hir":2031,"zig":8652},"repo":"trios","kinds":{"Module":12,"UseDecl":1,"ConstDecl":3,"ExprLiteral":263,"FnDecl":22,"ExprReturn":27,"ExprBinary":98,"ExprIdentifier":127,"StmtLocal":45,"ExprCall":108,"StmtIf":11,"StmtAssign":8,"ExprFieldAccess":8,"TestBlock":18,"StmtExpr":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 22 functions and 3 constants. Carries 18 tests. 298 lines compile to 1,867 tokens and 775 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.0 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_orchestrator.t27","category":"trios/apps","name":"network_orchestrator","module":"network_orchestrator","lines":347,"bytes":11512,"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","health":"ok","tokens":1837,"nodes":701,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11849,"rust":5827,"verilog":17744,"verilog_hir":2972,"zig":8914},"repo":"trios","kinds":{"Module":48,"UseDecl":1,"ConstDecl":21,"ExprLiteral":130,"FnDecl":33,"ExprReturn":52,"ExprBinary":122,"ExprIdentifier":184,"StmtLocal":31,"ExprCall":31,"StmtIf":25,"StmtWhile":5,"ExprIndex":8,"StmtAssign":10},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 33 functions and 21 constants. 347 lines compile to 1,837 tokens and 701 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 17.3 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_simulator.t27","category":"trios/apps","name":"network_simulator","module":"network_simulator","lines":356,"bytes":11422,"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","health":"warn","tokens":1975,"nodes":695,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":11888,"rust":7397,"verilog":18009,"verilog_hir":3576,"zig":8396},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":14,"ExprLiteral":134,"FnDecl":43,"ExprReturn":53,"ExprBinary":147,"ExprIdentifier":172,"StmtLocal":36,"ExprCall":38,"StmtIf":14,"StmtAssign":8,"ExprIndex":6,"StmtWhile":1,"StmtExpr":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 43 functions and 14 constants. 356 lines compile to 1,975 tokens and 695 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.6 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/olsr_routing.t27","category":"trios/apps","name":"olsr_routing","module":"OlsrRouting","lines":274,"bytes":9403,"description":"OLSR-style routing - ultra-simplified for T27 Basic neighbor table and best-neighbor selection","health":"ok","tokens":1888,"nodes":725,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8494,"rust":2442,"verilog":13489,"verilog_hir":1317,"zig":7137},"repo":"trios","kinds":{"Module":24,"UseDecl":1,"ConstDecl":2,"ExprLiteral":250,"FnDecl":15,"ExprReturn":26,"ExprBinary":91,"ExprIdentifier":120,"ExprCall":118,"StmtIf":15,"ExprFieldAccess":3,"StmtLocal":2,"ExprIf":4,"TestBlock":13,"StmtAssign":20,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 15 functions and 2 constants. Carries 13 tests. 274 lines compile to 1,888 tokens and 725 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 13.2 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/packet_queue.t27","category":"trios/apps","name":"packet_queue","module":"PacketQueue","lines":119,"bytes":2976,"description":"Packet queue - all inline, no intermediate variables","health":"ok","tokens":709,"nodes":263,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3581,"rust":626,"verilog":6793,"verilog_hir":639,"zig":2968},"repo":"trios","kinds":{"Module":5,"UseDecl":1,"ConstDecl":1,"ExprLiteral":53,"FnDecl":8,"ExprReturn":9,"ExprFieldAccess":1,"ExprBinary":16,"ExprIdentifier":60,"ExprCall":62,"StmtIf":3,"TestBlock":9,"StmtExpr":11,"StmtAssign":24},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/small","src/trios"],"summary":"Declares 8 functions and 1 constant. Carries 9 tests. 119 lines compile to 709 tokens and 263 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 6.6 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/pattern_predictor.t27","category":"trios/apps","name":"pattern_predictor","module":"pattern_predictor","lines":410,"bytes":13812,"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","health":"warn","tokens":2810,"nodes":1283,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":13403,"rust":4950,"verilog":20889,"verilog_hir":2410,"zig":11530},"repo":"trios","kinds":{"Module":29,"UseDecl":1,"ConstDecl":3,"ExprLiteral":524,"FnDecl":19,"ExprReturn":30,"ExprBinary":143,"ExprIdentifier":215,"ExprFieldAccess":10,"StmtIf":22,"StmtLocal":31,"ExprCall":181,"StmtAssign":38,"TestBlock":16,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 19 functions and 3 constants. Carries 16 tests. 410 lines compile to 2,810 tokens and 1,283 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.4 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_benchmarks.t27","category":"trios/apps","name":"performance_benchmarks","module":"PerformanceBenchmarks","lines":195,"bytes":5663,"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","health":"ok","tokens":1034,"nodes":486,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6404,"rust":1253,"verilog":11991,"verilog_hir":1066,"zig":4729},"repo":"trios","kinds":{"Module":7,"UseDecl":1,"ConstDecl":3,"ExprLiteral":94,"FnDecl":13,"ExprReturn":16,"ExprBinary":54,"ExprIdentifier":128,"StmtIf":3,"ExprCall":89,"TestBlock":16,"StmtAssign":40,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 13 functions and 3 constants. Carries 16 tests. 195 lines compile to 1,034 tokens and 486 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 11.7 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_profiler.t27","category":"trios/apps","name":"performance_profiler","module":"performance_profiler","lines":355,"bytes":11141,"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","health":"warn","tokens":1897,"nodes":730,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":11850,"rust":7555,"verilog":17864,"verilog_hir":3689,"zig":8220},"repo":"trios","kinds":{"Module":27,"UseDecl":1,"ConstDecl":4,"ExprLiteral":154,"FnDecl":40,"ExprReturn":47,"ExprBinary":166,"ExprIdentifier":183,"StmtLocal":35,"StmtWhile":6,"StmtIf":17,"ExprCall":16,"ExprIndex":12,"StmtAssign":22},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 40 functions and 4 constants. 355 lines compile to 1,897 tokens and 730 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 17.4 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/power_monitoring.t27","category":"trios/apps","name":"power_monitoring","module":"PowerMonitoring","lines":251,"bytes":8509,"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","health":"warn","tokens":1364,"nodes":615,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8905,"rust":3175,"verilog":15987,"verilog_hir":1244,"zig":7052},"repo":"trios","kinds":{"Module":12,"UseDecl":1,"ConstDecl":7,"ExprLiteral":148,"FnDecl":14,"ExprReturn":18,"ExprBinary":62,"ExprIdentifier":157,"ExprCall":94,"StmtLocal":20,"StmtIf":8,"StmtAssign":31,"TestBlock":20,"StmtExpr":23},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 14 functions and 7 constants. Carries 20 tests. 251 lines compile to 1,364 tokens and 615 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.6 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_deployment.t27","category":"trios/apps","name":"production_deployment","module":"ProductionDeployment","lines":197,"bytes":6459,"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","health":"ok","tokens":1121,"nodes":460,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7555,"rust":2724,"verilog":13071,"verilog_hir":1866,"zig":5326},"repo":"trios","kinds":{"Module":1,"UseDecl":1,"ConstDecl":9,"ExprLiteral":147,"FnDecl":20,"ExprReturn":20,"ExprBinary":81,"ExprIdentifier":73,"ExprCall":56,"ExprIf":4,"TestBlock":15,"StmtAssign":12,"StmtExpr":21},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 20 functions and 9 constants. Carries 15 tests. 197 lines compile to 1,121 tokens and 460 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_scenarios.t27","category":"trios/apps","name":"production_scenarios","module":"ProductionScenarios","lines":209,"bytes":6998,"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","health":"ok","tokens":1110,"nodes":508,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7482,"rust":1484,"verilog":12755,"verilog_hir":1292,"zig":6386},"repo":"trios","kinds":{"Module":15,"UseDecl":1,"ConstDecl":5,"ExprLiteral":101,"FnDecl":13,"ExprReturn":20,"ExprBinary":51,"ExprFieldAccess":2,"ExprIdentifier":126,"ExprCall":99,"StmtIf":7,"TestBlock":14,"StmtAssign":29,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 13 functions and 5 constants. Carries 14 tests. 209 lines compile to 1,110 tokens and 508 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 12.5 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/quarantine_manager.t27","category":"trios/apps","name":"quarantine_manager","module":"quarantine_manager","lines":316,"bytes":10278,"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","health":"ok","tokens":1569,"nodes":607,"depth":16,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10531,"rust":5963,"verilog":16266,"verilog_hir":2469,"zig":7779},"repo":"trios","kinds":{"Module":47,"UseDecl":1,"ConstDecl":14,"ExprLiteral":104,"FnDecl":31,"ExprReturn":55,"ExprBinary":104,"ExprIdentifier":153,"StmtLocal":32,"ExprCall":33,"StmtIf":26,"StmtWhile":2,"ExprIndex":2,"StmtAssign":3},"tags":["domain/other","has/functions","has/imports","has/loops","health/ok","size/medium","src/trios"],"summary":"Declares 31 functions and 14 constants. 316 lines compile to 1,569 tokens and 607 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 15.9 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/redundancy_management.t27","category":"trios/apps","name":"redundancy_management","module":"RedundancyManagement","lines":339,"bytes":11580,"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","health":"warn","tokens":2315,"nodes":1089,"depth":14,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":11475,"rust":4670,"verilog":17891,"verilog_hir":1365,"zig":10070},"repo":"trios","kinds":{"Module":46,"UseDecl":1,"ConstDecl":4,"ExprLiteral":376,"FnDecl":16,"ExprReturn":34,"ExprBinary":121,"ExprIdentifier":184,"ExprFieldAccess":16,"StmtIf":33,"ExprCall":174,"StmtLocal":13,"StmtAssign":35,"TestBlock":16,"StmtExpr":20},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 16 functions and 4 constants. Carries 16 tests. 339 lines compile to 2,315 tokens and 1,089 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 17.5 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/resource_scheduler.t27","category":"trios/apps","name":"resource_scheduler","module":"ResourceScheduler","lines":389,"bytes":14451,"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","health":"warn","tokens":2598,"nodes":1185,"depth":13,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":15036,"rust":8142,"verilog":24045,"verilog_hir":2023,"zig":13076},"repo":"trios","kinds":{"Module":33,"UseDecl":1,"ConstDecl":6,"ExprLiteral":294,"FnDecl":23,"ExprReturn":30,"ExprBinary":142,"ExprIdentifier":292,"ExprFieldAccess":16,"StmtIf":32,"StmtLocal":46,"ExprCall":171,"StmtAssign":53,"TestBlock":18,"StmtExpr":28},"tags":["domain/other","has/functions","has/imports","has/tests","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 23 functions and 6 constants. Carries 18 tests. 389 lines compile to 2,598 tokens and 1,185 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 23.5 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/self_healing.t27","category":"trios/apps","name":"self_healing","module":"SelfHealing","lines":293,"bytes":10204,"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","health":"ok","tokens":1698,"nodes":746,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10961,"rust":4059,"verilog":18983,"verilog_hir":1843,"zig":8470},"repo":"trios","kinds":{"Module":6,"UseDecl":1,"ConstDecl":4,"ExprLiteral":230,"FnDecl":22,"ExprReturn":27,"ExprBinary":84,"ExprIdentifier":139,"StmtLocal":19,"ExprCall":124,"StmtIf":5,"TestBlock":22,"StmtAssign":30,"StmtExpr":33},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 22 functions and 4 constants. Carries 22 tests. 293 lines compile to 1,698 tokens and 746 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.5 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/swarm_coordinator.t27","category":"trios/apps","name":"swarm_coordinator","module":"SwarmCoordinator","lines":348,"bytes":13538,"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","health":"ok","tokens":2623,"nodes":1215,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13719,"rust":4586,"verilog":20560,"verilog_hir":1785,"zig":11956},"repo":"trios","kinds":{"Module":57,"UseDecl":1,"ConstDecl":6,"ExprLiteral":330,"FnDecl":17,"ExprReturn":24,"ExprBinary":179,"ExprIdentifier":274,"ExprFieldAccess":16,"StmtIf":40,"StmtLocal":16,"ExprCall":166,"StmtAssign":48,"TestBlock":16,"StmtExpr":25},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 17 functions and 6 constants. Carries 16 tests. 348 lines compile to 2,623 tokens and 1,215 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.1 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_framework.t27","category":"trios/apps","name":"test_framework","module":"test_framework","lines":398,"bytes":12626,"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","health":"warn","tokens":2195,"nodes":853,"depth":18,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":13291,"rust":7061,"verilog":20086,"verilog_hir":3892,"zig":9534},"repo":"trios","kinds":{"Module":52,"UseDecl":1,"ConstDecl":14,"ExprLiteral":188,"FnDecl":45,"ExprReturn":65,"ExprBinary":190,"ExprIdentifier":191,"StmtLocal":36,"ExprCall":27,"StmtIf":24,"StmtWhile":4,"ExprIndex":3,"StmtAssign":13},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 45 functions and 14 constants. 398 lines compile to 2,195 tokens and 853 AST nodes, depth 18. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Compiles with 4 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_validator.t27","category":"trios/apps","name":"test_validator","module":"test_validator","lines":370,"bytes":12130,"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","health":"warn","tokens":2009,"nodes":740,"depth":12,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":12445,"rust":7641,"verilog":18632,"verilog_hir":3897,"zig":8826},"repo":"trios","kinds":{"Module":32,"UseDecl":1,"ConstDecl":23,"ExprLiteral":181,"FnDecl":45,"ExprReturn":56,"ExprBinary":162,"ExprIdentifier":157,"StmtLocal":22,"ExprCall":30,"StmtIf":17,"StmtWhile":2,"ExprIndex":1,"StmtAssign":11},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/medium","src/trios"],"summary":"Declares 45 functions and 23 constants. 370 lines compile to 2,009 tokens and 740 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 18.2 KB. Compiles with 2 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/timing_closure.t27","category":"trios/apps","name":"timing_closure","module":"TimingClosure","lines":218,"bytes":6803,"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","health":"ok","tokens":1050,"nodes":465,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7190,"rust":2168,"verilog":13138,"verilog_hir":1424,"zig":5271},"repo":"trios","kinds":{"Module":11,"UseDecl":1,"ConstDecl":8,"ExprLiteral":124,"FnDecl":14,"ExprReturn":21,"ExprBinary":67,"ExprIdentifier":93,"StmtIf":7,"ExprCall":60,"TestBlock":18,"StmtAssign":19,"StmtExpr":22},"tags":["domain/other","has/functions","has/imports","has/tests","health/ok","size/medium","src/trios"],"summary":"Declares 14 functions and 8 constants. Carries 18 tests. 218 lines compile to 1,050 tokens and 465 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/topology_visualizer.t27","category":"trios/apps","name":"topology_visualizer","module":"topology_visualizer","lines":418,"bytes":14325,"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","health":"warn","tokens":2352,"nodes":919,"depth":16,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13293,"rust":9871,"verilog":20140,"verilog_hir":2709,"zig":10603},"repo":"trios","kinds":{"Module":39,"UseDecl":1,"ConstDecl":21,"ExprLiteral":154,"FnDecl":31,"ExprReturn":38,"ExprBinary":174,"ExprIdentifier":280,"StmtIf":18,"StmtLocal":66,"ExprCall":39,"StmtWhile":9,"ExprIndex":20,"StmtAssign":29},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 31 functions and 21 constants. 418 lines compile to 2,352 tokens and 919 AST nodes, depth 16. Emits 5 of 5 backends; largest is Verilog at 19.7 KB. Compiles with 1 type error."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/traffic_animator.t27","category":"trios/apps","name":"traffic_animator","module":"traffic_animator","lines":462,"bytes":15885,"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","health":"warn","tokens":2649,"nodes":1005,"depth":11,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":16192,"rust":11225,"verilog":24004,"verilog_hir":4602,"zig":11731},"repo":"trios","kinds":{"Module":32,"UseDecl":1,"ConstDecl":12,"ExprLiteral":210,"FnDecl":49,"ExprReturn":56,"ExprBinary":232,"ExprIdentifier":262,"StmtLocal":57,"ExprCall":29,"StmtIf":18,"StmtAssign":23,"StmtWhile":5,"ExprIndex":18,"ExprArrayLiteral":1},"tags":["domain/other","has/functions","has/imports","has/loops","health/warn","issue/type-errors","size/large","src/trios"],"summary":"Declares 49 functions and 12 constants. 462 lines compile to 2,649 tokens and 1,005 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 23.4 KB. Compiles with 3 type errors."},{"path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/trust_manager.t27","category":"trios/apps","name":"trust_manager","module":"trust_manager","lines":317,"bytes":11514,"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","health":"ok","tokens":2011,"nodes":518,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4059,"rust":2712,"verilog":5951,"verilog_hir":1434,"zig":7072},"repo":"trios","kinds":{"Module":19,"UseDecl":1,"ConstDecl":5,"ExprLiteral":89,"FnDecl":21,"ExprReturn":28,"ExprBinary":89,"ExprIdentifier":135,"ExprFieldAccess":14,"StmtIf":18,"StmtExpr":9,"StmtLocal":21,"StmtAssign":17,"ExprCall":52},"tags":["domain/other","has/functions","has/imports","health/ok","size/medium","src/trios"],"summary":"Declares 21 functions and 5 constants. 317 lines compile to 2,011 tokens and 518 AST nodes, depth 11. Emits 5 of 5 backends; largest is Zig at 6.9 KB. Clean through every layer."},{"path":"trios/policies/precision_policy.t27","category":"trios/policies","name":"precision_policy","module":null,"lines":151,"bytes":4870,"description":null,"health":"warn","tokens":300,"nodes":1,"depth":1,"loss":4,"tcErrors":0,"failedBackends":[],"outBytes":{"c":396,"rust":66,"verilog":1045,"verilog_hir":243,"zig":121},"repo":"trios","kinds":{"Module":1},"tags":["domain/other","health/warn","issue/dropped-content","size/medium","src/trios"],"summary":"Declares no top-level items. 151 lines compile to 300 tokens and 1 AST nodes, depth 1. Emits 5 of 5 backends; largest is Verilog at 1.0 KB. Compiles with 4 items dropped by error recovery."},{"path":"tt-trinity-euler/specs/fpga/avs_controller_48.t27","category":"tt-trinity-euler/specs","name":"avs_controller_48","module":"avs-controller-48","lines":607,"bytes":20060,"description":"avs_controller_48.t27 — 48-pin AVS Controller Adaptive voltage scaling controller for 48-pin configuration","health":"ok","tokens":2944,"nodes":877,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12673,"rust":5671,"verilog":19133,"verilog_hir":1898,"zig":11618},"repo":"tt-trinity-euler","kinds":{"Module":7,"ConstDecl":12,"ExprLiteral":107,"EnumDecl":2,"EnumVariant":8,"StructDecl":4,"ExprIdentifier":187,"FnDecl":21,"ExprReturn":23,"ExprBinary":102,"ExprCall":105,"StmtLocal":8,"StmtIf":4,"StmtAssign":2,"StmtExpr":76,"ExprStructLit":9,"ExprFieldAccess":103,"TestBlock":37,"ExprUnary":60},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 21 functions, 4 structs, 2 enums and 12 constants. Carries 37 tests. 607 lines compile to 2,944 tokens and 877 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 18.7 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/avs_controller_96.t27","category":"tt-trinity-euler/specs","name":"avs_controller_96","module":"avs-controller-96","lines":735,"bytes":24836,"description":"avs_controller_96.t27 — 96-pin AVS Controller Adaptive voltage scaling controller for 96-pin configuration","health":"warn","tokens":3521,"nodes":1085,"depth":9,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":16185,"rust":7908,"verilog":23298,"verilog_hir":2373,"zig":14936},"repo":"tt-trinity-euler","kinds":{"Module":11,"ConstDecl":14,"ExprLiteral":134,"EnumDecl":3,"EnumVariant":13,"StructDecl":5,"ExprIdentifier":225,"FnDecl":28,"ExprReturn":30,"ExprBinary":122,"ExprCall":131,"StmtLocal":10,"StmtIf":6,"StmtAssign":6,"StmtExpr":86,"ExprStructLit":12,"ExprFieldAccess":142,"TestBlock":40,"ExprUnary":67},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 28 functions, 5 structs, 3 enums and 14 constants. Carries 40 tests. 735 lines compile to 3,521 tokens and 1,085 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 22.8 KB. Compiles with 1 type error."},{"path":"tt-trinity-euler/specs/fpga/avs_reconf.t27","category":"tt-trinity-euler/specs","name":"avs_reconf","module":"avs-reconf","lines":702,"bytes":24801,"description":"avs_reconf.t27 — AVS Reconfiguration Module Dynamic AVS voltage/frequency reconfiguration support","health":"ok","tokens":3542,"nodes":1045,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":15559,"rust":8600,"verilog":21090,"verilog_hir":1972,"zig":15599},"repo":"tt-trinity-euler","kinds":{"Module":1,"ConstDecl":26,"ExprLiteral":129,"EnumDecl":3,"EnumVariant":17,"StructDecl":4,"ExprIdentifier":209,"FnDecl":23,"ExprReturn":23,"ExprStructLit":18,"ExprFieldAccess":189,"ExprBinary":98,"ExprCall":99,"StmtExpr":93,"ExprUnary":70,"StmtLocal":8,"ExprIf":3,"TestBlock":32},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 23 functions, 4 structs, 3 enums and 26 constants. Carries 32 tests. 702 lines compile to 3,542 tokens and 1,045 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 20.6 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/dfs_gate.t27","category":"tt-trinity-euler/specs","name":"dfs_gate","module":"sacred-dfs_gate","lines":600,"bytes":22017,"description":"dfs_gate.t27 — Sacred Opcode 0xE7: Depth-First Search Gate Hardware acceleration for DFS traversal and pattern matching","health":"ok","tokens":3969,"nodes":675,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9082,"rust":4335,"verilog":15468,"verilog_hir":2066,"zig":9770},"repo":"tt-trinity-euler","kinds":{"Module":7,"ConstDecl":11,"ExprLiteral":90,"StructDecl":5,"ExprIdentifier":143,"FnDecl":16,"ExprReturn":20,"ExprStructLit":7,"ExprFieldAccess":72,"ExprBinary":67,"ExprArrayLiteral":2,"StmtIf":5,"StmtLocal":19,"StmtAssign":9,"ExprIndex":7,"StmtFor":1,"ExprCall":64,"TestBlock":28,"StmtExpr":63,"ExprUnary":39},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 16 functions, 5 structs and 11 constants. Carries 28 tests. 600 lines compile to 3,969 tokens and 675 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 15.1 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/drowsy_ret.t27","category":"tt-trinity-euler/specs","name":"drowsy_ret","module":"sacred-drowsy_ret","lines":716,"bytes":26247,"description":null,"health":"ok","tokens":4100,"nodes":117,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":3538,"rust":2657,"verilog":5652,"verilog_hir":604,"zig":2340},"repo":"tt-trinity-euler","kinds":{"Module":1,"ConstDecl":19,"ExprLiteral":19,"EnumDecl":2,"EnumVariant":12,"StructDecl":3,"ExprIdentifier":30,"FnDecl":7,"ExprReturn":6,"ExprBinary":10,"ExprFieldAccess":8},"tags":["domain/fpga","has/enums","has/functions","has/structs","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 7 functions, 3 structs, 2 enums and 19 constants. 716 lines compile to 4,100 tokens and 117 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 5.5 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/fbb_active_path.t27","category":"tt-trinity-euler/specs","name":"fbb_active_path","module":"fbb-active-path","lines":756,"bytes":26695,"description":"fbb_active_path.t27 — FPGA Feedback Bridge Active Path Active path management for FPGA feedback bridge","health":"ok","tokens":4002,"nodes":1123,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":16298,"rust":9040,"verilog":22056,"verilog_hir":2461,"zig":15709},"repo":"tt-trinity-euler","kinds":{"Module":3,"ConstDecl":24,"ExprLiteral":158,"EnumDecl":2,"EnumVariant":13,"StructDecl":4,"ExprIdentifier":216,"FnDecl":24,"ExprReturn":24,"ExprStructLit":18,"ExprFieldAccess":186,"ExprBinary":104,"StmtLocal":17,"StmtFor":1,"StmtAssign":6,"ExprIndex":15,"ExprCall":109,"StmtIf":1,"StmtExpr":93,"ExprUnary":71,"TestBlock":34},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 24 functions, 4 structs, 2 enums and 24 constants. Carries 34 tests. 756 lines compile to 4,002 tokens and 1,123 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 21.5 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/fp8_e4m3.t27","category":"tt-trinity-euler/specs","name":"fp8_e4m3","module":"triformat-fp8_e4m3","lines":1046,"bytes":32652,"description":"fp8_e4m3.t27 — FP8 E4M3 8-bit Floating Point 8-bit float with 4 exponent, 3 mantissa bits (no implicit leading bit) OCP FP8 format optimized for neural network training Range: ~-240 to ~240, precision: ~6-7 significant bits","health":"warn","tokens":6035,"nodes":1575,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":17636,"rust":9369,"verilog":33188,"verilog_hir":2181,"zig":18818},"repo":"tt-trinity-euler","kinds":{"Module":34,"ConstDecl":22,"ExprLiteral":187,"ExprIdentifier":361,"FnDecl":36,"StmtLocal":55,"ExprBinary":215,"ExprReturn":54,"ExprIf":17,"ExprUnary":94,"ExprCall":257,"StmtIf":29,"StmtAssign":10,"TestBlock":74,"StmtExpr":130},"tags":["domain/fpga","has/functions","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 36 functions and 22 constants. Carries 74 tests. 1046 lines compile to 6,035 tokens and 1,575 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 32.4 KB. Compiles with 2 type errors."},{"path":"tt-trinity-euler/specs/fpga/fp8_e5m2.t27","category":"tt-trinity-euler/specs","name":"fp8_e5m2","module":"triformat-fp8_e5m2","lines":1212,"bytes":38826,"description":"fp8_e5m2.t27 — FP8 E5M2 8-bit Floating Point 8-bit float with 5 exponent, 2 mantissa bits (with implicit leading bit) OCP FP8 format optimized for inference and wide dynamic range Range: ~-57k to ~57k, precision: ~3-4 significant bits","health":"warn","tokens":7267,"nodes":1852,"depth":13,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":20951,"rust":10713,"verilog":39194,"verilog_hir":2617,"zig":22296},"repo":"tt-trinity-euler","kinds":{"Module":44,"ConstDecl":22,"ExprLiteral":215,"ExprIdentifier":433,"FnDecl":44,"StmtLocal":71,"ExprBinary":248,"ExprReturn":60,"ExprIf":17,"ExprUnary":103,"ExprCall":297,"StmtIf":32,"StmtAssign":18,"StmtFor":7,"ExprFieldAccess":5,"StmtBreak":1,"ExprIndex":7,"TestBlock":82,"StmtExpr":146},"tags":["domain/fpga","has/functions","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 44 functions and 22 constants. Carries 82 tests. 1212 lines compile to 7,267 tokens and 1,852 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 38.3 KB. Compiles with 2 type errors."},{"path":"tt-trinity-euler/specs/fpga/gf128.t27","category":"tt-trinity-euler/specs","name":"gf128","module":"GF128","lines":358,"bytes":10740,"description":"t27/specs/numeric/gf128.t27 GoldenFloat128 - 128-bit φ-structured floating point with extended range NUMERIC-STANDARD-001 Agent 5 (P1) Paper §6.7: Extended range for high-dynamic-range applications","health":"ok","tokens":1470,"nodes":486,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":8811,"rust":4090,"verilog":15830,"verilog_hir":1032,"zig":9858},"repo":"tt-trinity-euler","kinds":{"Module":11,"UseDecl":4,"ConstDecl":7,"ExprLiteral":71,"StructDecl":1,"ExprIdentifier":98,"FnDecl":13,"StmtIf":7,"ExprBinary":71,"ExprReturn":19,"ExprStructLit":2,"ExprFieldAccess":32,"StmtLocal":30,"ExprIf":6,"ExprUnary":6,"ExprCall":14,"StmtWhile":3,"StmtAssign":7,"TestBlock":17,"StmtExpr":49,"InvariantBlock":13,"BenchBlock":5},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/tt-trinity-euler"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 17 tests, 13 invariants and 5 benches. 358 lines compile to 1,470 tokens and 486 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 15.5 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/gf16_to_fp16.t27","category":"tt-trinity-euler/specs","name":"gf16_to_fp16","module":"gf16-to-fp16","lines":574,"bytes":18936,"description":null,"health":"fail","tokens":3481,"nodes":973,"depth":14,"loss":0,"tcErrors":3,"failedBackends":["verilog_hir"],"outBytes":{"c":10720,"rust":4673,"verilog":18190,"verilog_hir":null,"zig":10574},"repo":"tt-trinity-euler","kinds":{"Module":26,"ConstDecl":13,"ExprLiteral":140,"ExprIdentifier":203,"StructDecl":4,"FnDecl":19,"ExprReturn":29,"ExprStructLit":16,"ExprFieldAccess":131,"ExprCall":102,"ExprBinary":96,"StmtLocal":18,"StmtIf":14,"ExprUnary":41,"StmtAssign":34,"TestBlock":26,"StmtExpr":61},"tags":["domain/fpga","has/functions","has/structs","has/tests","health/fail","issue/backend-rejected","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 19 functions, 4 structs and 13 constants. Carries 26 tests. 574 lines compile to 3,481 tokens and 973 AST nodes, depth 14. Emits 4 of 5 backends; largest is Verilog at 17.8 KB. Rejected by Verilog (HIR)."},{"path":"tt-trinity-euler/specs/fpga/gf16_to_posit16.t27","category":"tt-trinity-euler/specs","name":"gf16_to_posit16","module":"gf16-to-posit16","lines":664,"bytes":20622,"description":"gf16_to_posit16.t27 — GF16 to Posit16 Converter GoldenFloat16 to Posit type 16 (unum 1.0) format conversion","health":"warn","tokens":3526,"nodes":1045,"depth":13,"loss":0,"tcErrors":12,"failedBackends":[],"outBytes":{"c":11873,"rust":7280,"verilog":20464,"verilog_hir":1859,"zig":11623},"repo":"tt-trinity-euler","kinds":{"Module":34,"ConstDecl":12,"ExprLiteral":164,"ExprIdentifier":231,"StructDecl":5,"FnDecl":22,"ExprReturn":28,"ExprStructLit":5,"ExprFieldAccess":69,"ExprCall":106,"ExprBinary":128,"StmtLocal":25,"StmtIf":21,"StmtAssign":44,"ExprUnary":48,"StmtWhile":4,"StmtBreak":2,"ExprIf":3,"StmtFor":1,"TestBlock":28,"StmtExpr":65},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 22 functions, 5 structs and 12 constants. Carries 28 tests. 664 lines compile to 3,526 tokens and 1,045 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.0 KB. Compiles with 12 type errors."},{"path":"tt-trinity-euler/specs/fpga/gf256.t27","category":"tt-trinity-euler/specs","name":"gf256","module":"GF256","lines":336,"bytes":9935,"description":"t27/specs/numeric/gf256.t27 GoldenFloat256 0 256-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 11 (P1)","health":"warn","tokens":1592,"nodes":633,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":8199,"rust":5222,"verilog":13893,"verilog_hir":816,"zig":8540},"repo":"tt-trinity-euler","kinds":{"Module":19,"UseDecl":2,"ConstDecl":8,"ExprLiteral":110,"StructDecl":1,"ExprIdentifier":148,"FnDecl":11,"StmtIf":15,"ExprBinary":117,"ExprReturn":22,"ExprStructLit":2,"ExprFieldAccess":57,"StmtLocal":47,"ExprIf":5,"ExprUnary":6,"ExprCall":9,"StmtAssign":11,"StmtWhile":3,"TestBlock":9,"StmtExpr":21,"InvariantBlock":8,"BenchBlock":2},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/medium","src/tt-trinity-euler"],"summary":"Declares 11 functions, 1 struct and 8 constants. Carries 9 tests, 8 invariants and 2 benches. 336 lines compile to 1,592 tokens and 633 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 13.6 KB. Compiles with 2 type errors."},{"path":"tt-trinity-euler/specs/fpga/gf32_to_fp32.t27","category":"tt-trinity-euler/specs","name":"gf32_to_fp32","module":"gf32-to-fp32","lines":757,"bytes":25067,"description":"gf32_to_fp32.t27 — GF32 to FP32 Converter GoldenFloat32 to IEEE 754 binary32 format conversion","health":"fail","tokens":4698,"nodes":1275,"depth":15,"loss":0,"tcErrors":8,"failedBackends":["verilog_hir"],"outBytes":{"c":13733,"rust":6171,"verilog":23398,"verilog_hir":null,"zig":13832},"repo":"tt-trinity-euler","kinds":{"Module":37,"ConstDecl":13,"ExprLiteral":178,"ExprIdentifier":272,"StructDecl":4,"FnDecl":27,"ExprReturn":39,"ExprStructLit":20,"ExprFieldAccess":165,"ExprCall":134,"ExprBinary":138,"StmtLocal":21,"StmtIf":21,"ExprUnary":52,"StmtAssign":45,"TestBlock":34,"StmtExpr":75},"tags":["domain/fpga","has/functions","has/structs","has/tests","health/fail","issue/backend-rejected","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 27 functions, 4 structs and 13 constants. Carries 34 tests. 757 lines compile to 4,698 tokens and 1,275 AST nodes, depth 15. Emits 4 of 5 backends; largest is Verilog at 22.8 KB. Rejected by Verilog (HIR)."},{"path":"tt-trinity-euler/specs/fpga/gf64.t27","category":"tt-trinity-euler/specs","name":"gf64","module":"GF64","lines":320,"bytes":9095,"description":"t27/specs/numeric/gf64.t27 GoldenFloat64 - 64-bit φ-structured floating point NUMERIC-STANDARD-001 Agent 4 (P1)","health":"ok","tokens":1320,"nodes":425,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":7523,"rust":3303,"verilog":13143,"verilog_hir":930,"zig":8487},"repo":"tt-trinity-euler","kinds":{"Module":11,"UseDecl":4,"ConstDecl":7,"ExprLiteral":62,"StructDecl":1,"ExprIdentifier":85,"FnDecl":10,"StmtIf":7,"ExprBinary":64,"ExprReturn":16,"ExprStructLit":2,"ExprFieldAccess":28,"StmtLocal":23,"ExprIf":5,"ExprUnary":6,"ExprCall":10,"StmtWhile":3,"StmtAssign":7,"TestBlock":14,"StmtExpr":43,"InvariantBlock":13,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/medium","src/tt-trinity-euler"],"summary":"Declares 10 functions, 1 struct and 7 constants. Carries 14 tests, 13 invariants and 4 benches. 320 lines compile to 1,320 tokens and 425 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 12.8 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/holo_mux_x4.t27","category":"tt-trinity-euler/specs","name":"holo_mux_x4","module":"sacred-holo_mux_x4","lines":581,"bytes":21272,"description":"holo_mux_x4.t27 — Sacred Opcode 0xE6: Holographic 4x Multiplexer Hardware multiplexer for holographic data paths with 4-way select","health":"warn","tokens":4128,"nodes":298,"depth":10,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5628,"rust":4234,"verilog":8727,"verilog_hir":1009,"zig":4301},"repo":"tt-trinity-euler","kinds":{"Module":14,"ConstDecl":14,"ExprLiteral":34,"StructDecl":4,"ExprIdentifier":91,"FnDecl":13,"ExprReturn":15,"ExprBinary":16,"ExprFieldAccess":42,"StmtIf":8,"StmtLocal":12,"StmtAssign":6,"ExprCall":16,"ExprIndex":4,"ExprStructLit":4,"StmtFor":5},"tags":["domain/fpga","has/functions","has/loops","has/structs","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 13 functions, 4 structs and 14 constants. 581 lines compile to 4,128 tokens and 298 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 8.5 KB. Compiles with 1 type error."},{"path":"tt-trinity-euler/specs/fpga/int4.t27","category":"tt-trinity-euler/specs","name":"int4","module":"Int4","lines":334,"bytes":8538,"description":"t27/specs/numeric/int4.t27 Int4 - 4-bit signed integer NUMERIC-STANDARD-001 Agent 9 (P1)","health":"ok","tokens":1655,"nodes":298,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6850,"rust":1962,"verilog":14629,"verilog_hir":953,"zig":8156},"repo":"tt-trinity-euler","kinds":{"Module":3,"UseDecl":2,"ConstDecl":2,"ExprLiteral":13,"StructDecl":1,"ExprIdentifier":47,"FnDecl":17,"StmtLocal":13,"ExprIf":3,"ExprBinary":18,"ExprUnary":5,"ExprFieldAccess":5,"StmtIf":2,"StmtAssign":1,"ExprReturn":18,"ExprStructLit":1,"ExprCall":27,"TestBlock":28,"StmtExpr":76,"InvariantBlock":11,"BenchBlock":5},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/tt-trinity-euler"],"summary":"Declares 17 functions, 1 struct and 2 constants. Carries 28 tests, 11 invariants and 5 benches. 334 lines compile to 1,655 tokens and 298 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.3 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/int8.t27","category":"tt-trinity-euler/specs","name":"int8","module":"Int8","lines":493,"bytes":13029,"description":"t27/specs/numeric/int8.t27 Int8 - 8-bit signed integer NUMERIC-STANDARD-001 Agent 10 (P1)","health":"warn","tokens":2646,"nodes":463,"depth":9,"loss":2,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9729,"rust":2936,"verilog":20392,"verilog_hir":1246,"zig":12222},"repo":"tt-trinity-euler","kinds":{"Module":3,"UseDecl":2,"ConstDecl":2,"ExprLiteral":24,"StructDecl":1,"ExprIdentifier":72,"FnDecl":24,"StmtLocal":23,"ExprIf":7,"ExprBinary":29,"ExprUnary":5,"ExprFieldAccess":13,"StmtIf":2,"StmtAssign":1,"ExprReturn":25,"ExprStructLit":4,"ExprCall":35,"TestBlock":43,"StmtExpr":124,"InvariantBlock":18,"BenchBlock":6},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/tt-trinity-euler"],"summary":"Declares 24 functions, 1 struct and 2 constants. Carries 43 tests, 18 invariants and 6 benches. 493 lines compile to 2,646 tokens and 463 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 2 items dropped by error recovery."},{"path":"tt-trinity-euler/specs/fpga/lane_l_precheck.t27","category":"tt-trinity-euler/specs","name":"lane_l_precheck","module":"sacred-lane_precheck","lines":493,"bytes":17229,"description":"lane_l_precheck.t27 — Sacred Opcode 0xDF: LUT Lookup Precheck Hardware pre-check for LUT lookup operations Validates lane readiness, checks LUT access permissions, and prepares address","health":"warn","tokens":3044,"nodes":31,"depth":3,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":1319,"rust":737,"verilog":2233,"verilog_hir":269,"zig":644},"repo":"tt-trinity-euler","kinds":{"Module":1,"ConstDecl":12,"ExprLiteral":11,"EnumDecl":1,"EnumVariant":4,"ExprIdentifier":1,"StructDecl":1},"tags":["domain/fpga","has/constants-only","has/enums","has/structs","health/warn","issue/dropped-content","size/large","src/tt-trinity-euler"],"summary":"Declares 1 struct, 1 enum and 12 constants. 493 lines compile to 3,044 tokens and 31 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 2.2 KB. Compiles with 1 item dropped by error recovery."},{"path":"tt-trinity-euler/specs/fpga/lut_npu_81_entry.t27","category":"tt-trinity-euler/specs","name":"lut_npu_81_entry","module":"sacred-lut_npu_81_entry","lines":419,"bytes":13484,"description":"lut_npu_81_entry.t27 — Sacred Opcode 0xE3: LUT NPU 81-Entry Lookup Hardware LUT for NPU operations with 81 entries (9×9 transform)","health":"warn","tokens":2475,"nodes":273,"depth":13,"loss":1,"tcErrors":1,"failedBackends":[],"outBytes":{"c":5072,"rust":3157,"verilog":7761,"verilog_hir":1120,"zig":3540},"repo":"tt-trinity-euler","kinds":{"Module":10,"ConstDecl":8,"ExprLiteral":37,"StructDecl":3,"ExprIdentifier":80,"EnumDecl":1,"EnumVariant":8,"FnDecl":11,"ExprReturn":11,"ExprBinary":35,"ExprFieldAccess":19,"ExprStructLit":3,"ExprCall":16,"StmtLocal":13,"StmtFor":4,"StmtIf":4,"StmtAssign":4,"ExprIf":2,"ExprIndex":4},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","health/warn","issue/dropped-content","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 11 functions, 3 structs, 1 enum and 8 constants. 419 lines compile to 2,475 tokens and 273 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 7.6 KB. Compiles with 1 item dropped by error recovery and 1 type error."},{"path":"tt-trinity-euler/specs/fpga/nf4.t27","category":"tt-trinity-euler/specs","name":"nf4","module":"NF4","lines":313,"bytes":8164,"description":"t27/specs/numeric/nf4.t27 NormalFloat4 - 4-bit normalized float quantization format (Google) NUMERIC-STANDARD-001 Agent 11 (P1) NF4 format: - Represents normalized values in [0, 1] - Uses a 4-bit normalized representation","health":"ok","tokens":1284,"nodes":261,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6543,"rust":1693,"verilog":13183,"verilog_hir":914,"zig":7705},"repo":"tt-trinity-euler","kinds":{"Module":5,"UseDecl":2,"ConstDecl":3,"ExprLiteral":20,"StructDecl":1,"ExprIdentifier":36,"FnDecl":15,"StmtLocal":5,"ExprIf":2,"ExprBinary":21,"ExprFieldAccess":10,"StmtIf":3,"StmtAssign":1,"ExprReturn":15,"ExprStructLit":1,"ExprCall":14,"StmtExpr":64,"ExprUnary":1,"TestBlock":24,"InvariantBlock":14,"BenchBlock":4},"tags":["domain/fpga","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/tt-trinity-euler"],"summary":"Declares 15 functions, 1 struct and 3 constants. Carries 24 tests, 14 invariants and 4 benches. 313 lines compile to 1,284 tokens and 261 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 12.9 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/null_pe.t27","category":"tt-trinity-euler/specs","name":"null_pe","module":"sacred-null_pe","lines":568,"bytes":20320,"description":"null_pe.t27 — Sacred Opcode 0xEA: Null Processing Element Hardware null PE (processing element) for sparse acceleration","health":"warn","tokens":3694,"nodes":660,"depth":11,"loss":1,"tcErrors":4,"failedBackends":[],"outBytes":{"c":9376,"rust":5003,"verilog":14296,"verilog_hir":1369,"zig":8482},"repo":"tt-trinity-euler","kinds":{"Module":23,"ConstDecl":16,"ExprLiteral":90,"EnumDecl":1,"EnumVariant":4,"StructDecl":4,"ExprIdentifier":159,"FnDecl":19,"ExprReturn":23,"ExprBinary":76,"ExprFieldAccess":68,"ExprStructLit":12,"ExprIf":3,"StmtExpr":31,"StmtLocal":16,"StmtFor":9,"StmtIf":7,"ExprCall":48,"StmtAssign":10,"StmtBreak":1,"ExprSwitch":1,"ExprIndex":4,"TestBlock":14,"ExprUnary":21},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/switch","has/tests","health/warn","issue/dropped-content","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 19 functions, 4 structs, 1 enum and 16 constants. Carries 14 tests. 568 lines compile to 3,694 tokens and 660 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 14.0 KB. Compiles with 1 item dropped by error recovery and 4 type errors."},{"path":"tt-trinity-euler/specs/fpga/posit16.t27","category":"tt-trinity-euler/specs","name":"posit16","module":"triformat-posit16","lines":979,"bytes":32004,"description":"posit16.t27 — Posit Type 16 (Type-2 with ES=1, unum 1.0 format) 16-bit posit format with 1 exponent bit (ES=1) and 0 useed bits Alternative name: posit<16,1> Range: ~-3.8e4 to ~3.8e4, precision: ~1-2 significant bits at extremes, ~10 at 1.0","health":"warn","tokens":5421,"nodes":1544,"depth":13,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":17804,"rust":10661,"verilog":32115,"verilog_hir":2131,"zig":17940},"repo":"tt-trinity-euler","kinds":{"Module":56,"ConstDecl":12,"ExprLiteral":174,"ExprIdentifier":407,"StructDecl":1,"FnDecl":34,"StmtLocal":72,"ExprBinary":221,"StmtFor":7,"StmtIf":41,"StmtAssign":20,"StmtBreak":4,"ExprReturn":57,"ExprIf":13,"ExprUnary":56,"ExprCall":227,"ExprStructLit":1,"ExprFieldAccess":12,"StmtExpr":82,"StmtWhile":1,"ExprIndex":1,"TestBlock":45},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 34 functions, 1 struct and 12 constants. Carries 45 tests. 979 lines compile to 5,421 tokens and 1,544 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 31.4 KB. Compiles with 5 type errors."},{"path":"tt-trinity-euler/specs/fpga/purkinje_thermal_gate.t27","category":"tt-trinity-euler/specs","name":"purkinje_thermal_gate","module":"purkinje-thermal-gate","lines":704,"bytes":24460,"description":"purkinje_thermal_gate.t27 — Purkinje Thermal Gate Thermally-gated activation inspired by Purkinje neural dynamics","health":"ok","tokens":3682,"nodes":1063,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14852,"rust":6797,"verilog":20709,"verilog_hir":1880,"zig":14728},"repo":"tt-trinity-euler","kinds":{"Module":15,"ConstDecl":18,"ExprLiteral":136,"EnumDecl":2,"EnumVariant":8,"StructDecl":3,"ExprIdentifier":208,"FnDecl":22,"ExprReturn":26,"ExprStructLit":13,"ExprFieldAccess":159,"ExprUnary":77,"ExprBinary":102,"StmtIf":8,"ExprCall":114,"StmtLocal":8,"StmtAssign":5,"TestBlock":39,"StmtExpr":100},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 22 functions, 3 structs, 2 enums and 18 constants. Carries 39 tests. 704 lines compile to 3,682 tokens and 1,063 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 20.2 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/sparse_mask.t27","category":"tt-trinity-euler/specs","name":"sparse_mask","module":"sacred-sparse_mask","lines":556,"bytes":17492,"description":"sparse_mask.t27 — Sacred Opcode 0xE8: Sparse Mask (Sparse Skip 2) Hardware for generating and applying sparse tensor masks","health":"warn","tokens":3158,"nodes":355,"depth":11,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":5066,"rust":3252,"verilog":8130,"verilog_hir":1468,"zig":4013},"repo":"tt-trinity-euler","kinds":{"Module":17,"ConstDecl":16,"ExprLiteral":62,"StructDecl":4,"ExprIdentifier":102,"FnDecl":12,"StmtLocal":16,"StmtWhile":2,"ExprBinary":44,"StmtAssign":23,"ExprReturn":11,"ExprCall":21,"StmtFor":3,"StmtIf":4,"ExprFieldAccess":14,"ExprSwitch":1,"ExprStructLit":1,"ExprIndex":2},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/switch","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 12 functions, 4 structs and 16 constants. 556 lines compile to 3,158 tokens and 355 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 7.9 KB. Compiles with 4 type errors."},{"path":"tt-trinity-euler/specs/fpga/sparse_skip.t27","category":"tt-trinity-euler/specs","name":"sparse_skip","module":"sacred-sparse_skip","lines":476,"bytes":15117,"description":"sparse_skip.t27 — Sacred Opcode 0xE1: Sparse Skip Operation Hardware acceleration for sparse tensor operations with zero-skipping","health":"warn","tokens":2985,"nodes":630,"depth":10,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":8360,"rust":4128,"verilog":13457,"verilog_hir":1162,"zig":8132},"repo":"tt-trinity-euler","kinds":{"Module":11,"ConstDecl":8,"ExprLiteral":98,"EnumDecl":1,"EnumVariant":4,"StructDecl":3,"ExprIdentifier":124,"FnDecl":14,"ExprReturn":14,"ExprBinary":69,"ExprIf":2,"ExprUnary":41,"StmtLocal":20,"StmtFor":7,"StmtIf":2,"ExprCall":67,"StmtAssign":6,"ExprStructLit":7,"ExprFieldAccess":51,"ExprIndex":6,"StmtWhile":1,"TestBlock":21,"StmtExpr":53},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 14 functions, 3 structs, 1 enum and 8 constants. Carries 21 tests. 476 lines compile to 2,985 tokens and 630 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 13.1 KB. Compiles with 3 type errors."},{"path":"tt-trinity-euler/specs/fpga/spec_exit.t27","category":"tt-trinity-euler/specs","name":"spec_exit","module":"sacred-spec_exit","lines":541,"bytes":19745,"description":"spec_exit.t27 — Sacred Opcode 0xEB: Speculative Exit Hardware for speculative exit and recovery","health":"ok","tokens":3140,"nodes":730,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11376,"rust":5841,"verilog":16952,"verilog_hir":1700,"zig":10561},"repo":"tt-trinity-euler","kinds":{"Module":6,"ConstDecl":17,"ExprLiteral":81,"EnumDecl":2,"EnumVariant":13,"StructDecl":3,"ExprIdentifier":155,"FnDecl":21,"ExprReturn":21,"ExprBinary":80,"ExprFieldAccess":110,"ExprStructLit":8,"ExprCall":68,"StmtLocal":8,"StmtIf":3,"StmtAssign":3,"ExprIf":1,"TestBlock":26,"StmtExpr":60,"ExprUnary":44},"tags":["domain/fpga","has/enums","has/functions","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 21 functions, 3 structs, 2 enums and 17 constants. Carries 26 tests. 541 lines compile to 3,140 tokens and 730 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 16.6 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/fpga/stoch_round.t27","category":"tt-trinity-euler/specs","name":"stoch_round","module":"sacred-stoch_round","lines":575,"bytes":19164,"description":"stoch_round.t27 — Sacred Opcode 0xE9: Stochastic Rounding Hardware stochastic rounding for quantization","health":"warn","tokens":3632,"nodes":1074,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":11522,"rust":6855,"verilog":18337,"verilog_hir":1313,"zig":11697},"repo":"tt-trinity-euler","kinds":{"Module":29,"ConstDecl":17,"ExprLiteral":135,"StructDecl":3,"ExprIdentifier":285,"FnDecl":12,"ExprReturn":17,"ExprStructLit":18,"ExprFieldAccess":99,"ExprIf":7,"ExprBinary":139,"StmtLocal":48,"StmtAssign":32,"ExprCall":75,"StmtIf":14,"ExprUnary":53,"ExprSwitch":1,"StmtFor":2,"ExprIndex":4,"TestBlock":26,"StmtExpr":58},"tags":["domain/fpga","has/functions","has/loops","has/structs","has/switch","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 12 functions, 3 structs and 17 constants. Carries 26 tests. 575 lines compile to 3,632 tokens and 1,074 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 17.9 KB. Compiles with 5 type errors."},{"path":"tt-trinity-euler/specs/fpga/subth_clk.t27","category":"tt-trinity-euler/specs","name":"subth_clk","module":"sacred-subth_clk","lines":478,"bytes":17539,"description":"subth_clk.t27 — Sacred Opcode 0xE5: Sub-threshold Clock Gating Hardware for sub-threshold clock gating for power reduction","health":"warn","tokens":2862,"nodes":646,"depth":9,"loss":1,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10177,"rust":4457,"verilog":17524,"verilog_hir":1438,"zig":10580},"repo":"tt-trinity-euler","kinds":{"Module":5,"ConstDecl":11,"ExprLiteral":96,"EnumDecl":2,"EnumVariant":7,"StructDecl":3,"ExprIdentifier":119,"FnDecl":14,"ExprReturn":16,"ExprBinary":77,"ExprFieldAccess":57,"ExprStructLit":4,"StmtLocal":13,"ExprIf":1,"StmtIf":3,"ExprCall":85,"StmtFor":1,"TestBlock":37,"StmtExpr":57,"ExprUnary":38},"tags":["domain/fpga","has/enums","has/functions","has/loops","has/structs","has/tests","health/warn","issue/dropped-content","size/large","src/tt-trinity-euler"],"summary":"Declares 14 functions, 3 structs, 2 enums and 11 constants. Carries 37 tests. 478 lines compile to 2,862 tokens and 646 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 17.1 KB. Compiles with 1 item dropped by error recovery."},{"path":"tt-trinity-euler/specs/numeric/binary16.t27","category":"tt-trinity-euler/specs","name":"binary16","module":"Binary16","lines":420,"bytes":12171,"description":"t27/specs/numeric/binary16.t27 Binary16 - Binary packed 16-bit format (3 bits per integer) NUMERIC-STANDARD-001 Agent 13 (P1) Binary16 format: - Packs 5 signed integers (3 bits each) into 16 bits - Each integer range: -4 to 3","health":"warn","tokens":2331,"nodes":446,"depth":9,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":9115,"rust":2957,"verilog":19728,"verilog_hir":1098,"zig":10826},"repo":"tt-trinity-euler","kinds":{"Module":13,"UseDecl":2,"ConstDecl":5,"ExprLiteral":37,"StructDecl":1,"ExprIdentifier":95,"FnDecl":18,"StmtIf":7,"ExprBinary":40,"ExprReturn":23,"StmtLocal":19,"ExprFieldAccess":12,"ExprIf":2,"ExprUnary":5,"StmtAssign":4,"ExprStructLit":2,"StmtFor":5,"ExprCall":19,"ExprIndex":2,"ExprArrayLiteral":1,"TestBlock":35,"StmtExpr":83,"InvariantBlock":10,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 18 functions, 1 struct and 5 constants. Carries 35 tests, 10 invariants and 6 benches. 420 lines compile to 2,331 tokens and 446 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.3 KB. Compiles with 2 type errors."},{"path":"tt-trinity-euler/specs/numeric/formats.t27","category":"tt-trinity-euler/specs","name":"formats","module":"Formats","lines":538,"bytes":17523,"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","health":"ok","tokens":1601,"nodes":224,"depth":3,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":6234,"rust":1013,"verilog":15020,"verilog_hir":698,"zig":8733},"repo":"tt-trinity-euler","kinds":{"Module":1,"UseDecl":2,"ConstDecl":8,"ExprLiteral":8,"FnDecl":6,"EnumDecl":1,"EnumVariant":21,"TestBlock":43,"StmtExpr":124,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 6 functions, 1 enum and 8 constants. Carries 43 tests, 6 invariants and 4 benches. 538 lines compile to 1,601 tokens and 224 AST nodes, depth 3. Emits 5 of 5 backends; largest is Verilog at 14.7 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/numeric/gf12.t27","category":"tt-trinity-euler/specs","name":"gf12","module":"GF12","lines":482,"bytes":16369,"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 0 12-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 4 (P1)","health":"warn","tokens":1979,"nodes":647,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9881,"rust":4274,"verilog":19274,"verilog_hir":1059,"zig":11436},"repo":"tt-trinity-euler","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":27,"StmtExpr":64,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 27 tests, 14 invariants and 6 benches. 482 lines compile to 1,979 tokens and 647 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.8 KB. Compiles with 5 type errors."},{"path":"tt-trinity-euler/specs/numeric/gf128.t27","category":"tt-trinity-euler/specs","name":"gf128","module":"triformat-gf128","lines":506,"bytes":17137,"description":"gf128.t27 — GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 28 exponent + 99 mantissa Bit layout: [S(1) E(28) M(99)] = [127:127][126:99][98:0] Extended range format for high-precision scientific computing","health":"ok","tokens":2514,"nodes":762,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9715,"rust":6413,"verilog":16944,"verilog_hir":1753,"zig":9067},"repo":"tt-trinity-euler","kinds":{"Module":15,"ConstDecl":19,"ExprLiteral":91,"ExprIdentifier":195,"StructDecl":1,"FnDecl":25,"ExprReturn":39,"ExprStructLit":2,"ExprFieldAccess":10,"ExprCall":127,"ExprBinary":97,"StmtLocal":32,"ExprIf":14,"ExprUnary":29,"StmtIf":14,"TestBlock":19,"StmtExpr":33},"tags":["domain/numeric","has/functions","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 25 functions, 1 struct and 19 constants. Carries 19 tests. 506 lines compile to 2,514 tokens and 762 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 16.5 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/numeric/gf16.t27","category":"tt-trinity-euler/specs","name":"gf16","module":"triformat-gf16","lines":3437,"bytes":101513,"description":"gf16.t27 0 GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0] 12 + 1/34 = 3 | TRINITY","health":"ok","tokens":16290,"nodes":6744,"depth":11,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":88131,"rust":19607,"verilog":169609,"verilog_hir":2914,"zig":83320},"repo":"tt-trinity-euler","kinds":{"Module":173,"ConstDecl":20,"ExprLiteral":978,"ExprIdentifier":1471,"FnDecl":53,"StmtLocal":724,"ExprBinary":274,"ExprReturn":160,"ExprIf":18,"ExprUnary":408,"ExprCall":1446,"StmtIf":118,"StmtAssign":104,"StmtFor":47,"TestBlock":191,"StmtExpr":411,"ExprIndex":3,"InvariantBlock":98,"ExprFieldAccess":1,"ExprArrayLiteral":1,"BenchBlock":45},"tags":["domain/numeric","has/benches","has/functions","has/invariants","has/loops","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 53 functions and 20 constants. Carries 191 tests, 98 invariants and 45 benches. 3437 lines compile to 16,290 tokens and 6,744 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 165.6 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/numeric/gf20.t27","category":"tt-trinity-euler/specs","name":"gf20","module":"GF20","lines":469,"bytes":15992,"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 0 20-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 6 (P1)","health":"warn","tokens":1927,"nodes":639,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9537,"rust":4297,"verilog":18742,"verilog_hir":1062,"zig":10908},"repo":"tt-trinity-euler","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,927 tokens and 639 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"tt-trinity-euler/specs/numeric/gf24.t27","category":"tt-trinity-euler/specs","name":"gf24","module":"GF24","lines":469,"bytes":16040,"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 0 24-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 7 (P1)","health":"warn","tokens":1933,"nodes":640,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9579,"rust":4328,"verilog":18783,"verilog_hir":1074,"zig":10948},"repo":"tt-trinity-euler","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":40,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":12,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 12 invariants and 6 benches. 469 lines compile to 1,933 tokens and 640 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.3 KB. Compiles with 5 type errors."},{"path":"tt-trinity-euler/specs/numeric/gf256.t27","category":"tt-trinity-euler/specs","name":"gf256","module":"triformat-gf256","lines":595,"bytes":20164,"description":"gf256.t27 — GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 32 exponent + 223 mantissa Bit layout: [S(1) E(32) M(223)] = [255:255][254:223][222:0] Maximum precision format for scientific computing and simulation","health":"ok","tokens":3250,"nodes":1094,"depth":13,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11484,"rust":7211,"verilog":20030,"verilog_hir":2273,"zig":10948},"repo":"tt-trinity-euler","kinds":{"Module":19,"ConstDecl":11,"ExprLiteral":183,"StructDecl":1,"ExprIdentifier":206,"FnDecl":26,"ExprReturn":42,"ExprStructLit":2,"ExprFieldAccess":68,"ExprArrayLiteral":2,"StmtLocal":30,"ExprCall":142,"StmtAssign":14,"ExprIndex":66,"ExprBinary":134,"ExprIf":14,"ExprUnary":40,"StmtIf":17,"TestBlock":29,"StmtExpr":48},"tags":["domain/numeric","has/functions","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 26 functions, 1 struct and 11 constants. Carries 29 tests. 595 lines compile to 3,250 tokens and 1,094 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/numeric/gf32.t27","category":"tt-trinity-euler/specs","name":"gf32","module":"GF32","lines":480,"bytes":16589,"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 0 32-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 8 (P1)","health":"warn","tokens":1934,"nodes":641,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":9779,"rust":4324,"verilog":18871,"verilog_hir":1074,"zig":11206},"repo":"tt-trinity-euler","kinds":{"Module":21,"UseDecl":2,"ConstDecl":7,"ExprLiteral":95,"StructDecl":1,"ExprIdentifier":136,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":39,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"StmtWhile":3,"StmtAssign":10,"TestBlock":25,"StmtExpr":60,"InvariantBlock":14,"BenchBlock":6},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 25 tests, 14 invariants and 6 benches. 480 lines compile to 1,934 tokens and 641 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 18.4 KB. Compiles with 5 type errors."},{"path":"tt-trinity-euler/specs/numeric/gf4.t27","category":"tt-trinity-euler/specs","name":"gf4","module":"GF4","lines":306,"bytes":11167,"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 0 4-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 2 (P1)","health":"ok","tokens":1017,"nodes":265,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":5819,"rust":1237,"verilog":10517,"verilog_hir":532,"zig":7261},"repo":"tt-trinity-euler","kinds":{"Module":13,"UseDecl":2,"ConstDecl":7,"ExprLiteral":33,"StructDecl":1,"ExprIdentifier":29,"FnDecl":6,"StmtIf":8,"ExprBinary":22,"ExprReturn":14,"ExprStructLit":7,"ExprFieldAccess":19,"StmtLocal":8,"ExprCall":2,"ExprUnary":2,"ExprIf":1,"TestBlock":18,"StmtExpr":58,"InvariantBlock":13,"BenchBlock":2},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/structs","has/tests","health/ok","size/medium","src/tt-trinity-euler"],"summary":"Declares 6 functions, 1 struct and 7 constants. Carries 18 tests, 13 invariants and 2 benches. 306 lines compile to 1,017 tokens and 265 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 10.3 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/numeric/gf64.t27","category":"tt-trinity-euler/specs","name":"gf64","module":"triformat-gf64","lines":764,"bytes":24203,"description":"gf64.t27 — GoldenFloat64 Encode/Decode GF64: 64-bit floating point with 1 sign + 18 exponent + 45 mantissa Bit layout: [S(1) E(18) M(45)] = [63:63][62:45][44:0]","health":"warn","tokens":4384,"nodes":1156,"depth":14,"loss":0,"tcErrors":1,"failedBackends":[],"outBytes":{"c":13085,"rust":6818,"verilog":25023,"verilog_hir":1810,"zig":14002},"repo":"tt-trinity-euler","kinds":{"Module":24,"ConstDecl":19,"ExprLiteral":122,"ExprIdentifier":279,"FnDecl":26,"StmtLocal":35,"ExprBinary":155,"ExprReturn":44,"ExprIf":14,"ExprUnary":64,"ExprCall":190,"StmtIf":22,"StmtAssign":3,"TestBlock":55,"StmtExpr":97,"ExprFieldAccess":7},"tags":["domain/numeric","has/functions","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 26 functions and 19 constants. Carries 55 tests. 764 lines compile to 4,384 tokens and 1,156 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 24.4 KB. Compiles with 1 type error."},{"path":"tt-trinity-euler/specs/numeric/gf8.t27","category":"tt-trinity-euler/specs","name":"gf8","module":"GF8","lines":522,"bytes":17732,"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 0 8-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 3 (P1)","health":"warn","tokens":2153,"nodes":661,"depth":11,"loss":0,"tcErrors":5,"failedBackends":[],"outBytes":{"c":10178,"rust":4222,"verilog":20381,"verilog_hir":1057,"zig":12139},"repo":"tt-trinity-euler","kinds":{"Module":21,"UseDecl":4,"ConstDecl":7,"ExprLiteral":94,"StructDecl":1,"ExprIdentifier":137,"FnDecl":13,"StmtIf":17,"ExprBinary":104,"ExprReturn":26,"ExprStructLit":2,"ExprFieldAccess":36,"StmtLocal":37,"ExprIf":4,"ExprUnary":7,"ExprCall":12,"TestBlock":29,"StmtExpr":74,"StmtWhile":3,"StmtAssign":10,"InvariantBlock":15,"BenchBlock":8},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 13 functions, 1 struct and 7 constants. Carries 29 tests, 15 invariants and 8 benches. 522 lines compile to 2,153 tokens and 661 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.9 KB. Compiles with 5 type errors."},{"path":"tt-trinity-euler/specs/numeric/goldenfloat_family.t27","category":"tt-trinity-euler/specs","name":"goldenfloat_family","module":"GoldenFloatFamily","lines":450,"bytes":17346,"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family 0 1-structured floating point formats NUMERIC-STANDARD-001 2 Agent 1 (P0)","health":"warn","tokens":1793,"nodes":356,"depth":11,"loss":0,"tcErrors":2,"failedBackends":[],"outBytes":{"c":10804,"rust":4339,"verilog":19539,"verilog_hir":686,"zig":12751},"repo":"tt-trinity-euler","kinds":{"Module":12,"UseDecl":2,"StructDecl":2,"ExprIdentifier":78,"ConstDecl":2,"FnDecl":7,"StmtFor":4,"StmtIf":7,"ExprBinary":32,"ExprFieldAccess":30,"ExprReturn":9,"ExprIndex":3,"ExprLiteral":36,"StmtLocal":15,"ExprArrayLiteral":1,"StmtAssign":9,"ExprStructLit":1,"ExprCall":6,"ExprUnary":2,"TestBlock":25,"StmtExpr":54,"InvariantBlock":14,"BenchBlock":5},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 7 functions, 2 structs and 2 constants. Carries 25 tests, 14 invariants and 5 benches. 450 lines compile to 1,793 tokens and 356 AST nodes, depth 11. Emits 5 of 5 backends; largest is Verilog at 19.1 KB. Compiles with 2 type errors."},{"path":"tt-trinity-euler/specs/numeric/int4.t27","category":"tt-trinity-euler/specs","name":"int4","module":"triformat-int4","lines":766,"bytes":20533,"description":"int4.t27 — Int4 Signed 4-bit Integer Quantization Range: -8 to 7 Used for ultra-low precision quantization in ML","health":"ok","tokens":4078,"nodes":850,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9763,"rust":3801,"verilog":22124,"verilog_hir":2099,"zig":10462},"repo":"tt-trinity-euler","kinds":{"Module":31,"ConstDecl":6,"ExprLiteral":60,"ExprIdentifier":208,"FnDecl":26,"StmtIf":22,"ExprBinary":98,"ExprReturn":48,"ExprCall":97,"StmtLocal":9,"ExprIf":4,"ExprUnary":65,"TestBlock":63,"StmtExpr":113},"tags":["domain/numeric","has/functions","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 26 functions and 6 constants. Carries 63 tests. 766 lines compile to 4,078 tokens and 850 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 21.6 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/numeric/int8.t27","category":"tt-trinity-euler/specs","name":"int8","module":"triformat-int8","lines":1151,"bytes":30614,"description":"int8.t27 — Int8 Signed 8-bit Integer Quantization Range: -128 to 127 Standard 8-bit signed integer, widely used in quantization","health":"warn","tokens":6231,"nodes":1424,"depth":10,"loss":0,"tcErrors":8,"failedBackends":[],"outBytes":{"c":15229,"rust":7199,"verilog":32292,"verilog_hir":3500,"zig":16382},"repo":"tt-trinity-euler","kinds":{"Module":43,"ConstDecl":6,"ExprLiteral":139,"ExprIdentifier":346,"FnDecl":43,"ExprReturn":74,"StmtIf":33,"ExprBinary":178,"ExprCall":165,"StmtLocal":29,"ExprIf":6,"ExprUnary":96,"StmtWhile":4,"StmtAssign":12,"TestBlock":83,"StmtExpr":166,"ExprFieldAccess":1},"tags":["domain/numeric","has/functions","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 43 functions and 6 constants. Carries 83 tests. 1151 lines compile to 6,231 tokens and 1,424 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 31.5 KB. Compiles with 8 type errors."},{"path":"tt-trinity-euler/specs/numeric/nf4.t27","category":"tt-trinity-euler/specs","name":"nf4","module":"triformat-nf4","lines":839,"bytes":23771,"description":"nf4.t27 — NormalFloat4 Quantization 4-bit quantization based on normalized distribution Values: {-1, -0.667, -0.333, 0, 0.333, 0.667, 1, 0} (8 levels + zero)","health":"warn","tokens":4503,"nodes":882,"depth":9,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":10738,"rust":3543,"verilog":24108,"verilog_hir":1608,"zig":11868},"repo":"tt-trinity-euler","kinds":{"Module":14,"ConstDecl":9,"ExprLiteral":97,"ExprIdentifier":170,"FnDecl":26,"StmtIf":9,"ExprBinary":102,"ExprCall":139,"ExprReturn":33,"StmtLocal":28,"StmtAssign":3,"ExprIndex":1,"ExprUnary":60,"ExprIf":2,"TestBlock":69,"StmtExpr":120},"tags":["domain/numeric","has/functions","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 26 functions and 9 constants. Carries 69 tests. 839 lines compile to 4,503 tokens and 882 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 23.5 KB. Compiles with 3 type errors."},{"path":"tt-trinity-euler/specs/numeric/phi_ratio.t27","category":"tt-trinity-euler/specs","name":"phi_ratio","module":"PhiRatio","lines":695,"bytes":25855,"description":"t27/specs/numeric/phi_ratio.t27 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 2 Agent 9 (P0)","health":"ok","tokens":2585,"nodes":592,"depth":12,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":12153,"rust":4273,"verilog":21805,"verilog_hir":1108,"zig":17217},"repo":"tt-trinity-euler","kinds":{"Module":22,"UseDecl":2,"ConstDecl":2,"ExprIdentifier":128,"StructDecl":2,"FnDecl":14,"StmtLocal":33,"ExprBinary":69,"ExprLiteral":54,"ExprFieldAccess":28,"ExprCall":12,"ExprReturn":28,"ExprStructLit":1,"ExprArrayLiteral":1,"StmtIf":19,"ExprUnary":7,"StmtAssign":7,"StmtWhile":1,"TestBlock":35,"StmtExpr":95,"InvariantBlock":29,"BenchBlock":3},"tags":["domain/numeric","has/benches","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/tt-trinity-euler"],"summary":"Declares 14 functions, 2 structs and 2 constants. Carries 35 tests, 29 invariants and 3 benches. 695 lines compile to 2,585 tokens and 592 AST nodes, depth 12. Emits 5 of 5 backends; largest is Verilog at 21.3 KB. Clean through every layer."},{"path":"tt-trinity-euler/specs/numeric/tri_net_formats.t27","category":"tt-trinity-euler/specs","name":"tri_net_formats","module":"TriNetFormats","lines":993,"bytes":32170,"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","health":"warn","tokens":4158,"nodes":1029,"depth":15,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":19414,"rust":15653,"verilog":34212,"verilog_hir":1394,"zig":21098},"repo":"tt-trinity-euler","kinds":{"Module":53,"UseDecl":3,"EnumDecl":1,"EnumVariant":6,"StructDecl":14,"ExprIdentifier":332,"ConstDecl":2,"FnDecl":21,"StmtFor":3,"StmtIf":36,"ExprBinary":131,"ExprFieldAccess":63,"ExprReturn":48,"StmtLocal":47,"ExprLiteral":106,"StmtAssign":18,"ExprIndex":5,"ExprEnumValue":10,"ExprCall":27,"ExprIf":5,"ExprUnary":8,"StmtWhile":4,"TestBlock":25,"StmtExpr":51,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-euler"],"summary":"Declares 21 functions, 14 structs, 1 enum and 2 constants. Carries 25 tests, 6 invariants and 4 benches. 993 lines compile to 4,158 tokens and 1,029 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 33.4 KB. Compiles with 4 type errors."},{"path":"tt-trinity-gamma/specs/numeric/tri_net_formats.t27","category":"tt-trinity-gamma/specs","name":"tri_net_formats","module":"TriNetFormats","lines":1053,"bytes":34895,"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","health":"warn","tokens":4374,"nodes":1045,"depth":15,"loss":0,"tcErrors":4,"failedBackends":[],"outBytes":{"c":20371,"rust":16794,"verilog":35614,"verilog_hir":1394,"zig":22169},"repo":"tt-trinity-gamma","kinds":{"Module":53,"UseDecl":3,"EnumDecl":1,"EnumVariant":6,"StructDecl":16,"ExprIdentifier":346,"ConstDecl":2,"FnDecl":21,"StmtFor":3,"StmtIf":36,"ExprBinary":131,"ExprFieldAccess":63,"ExprReturn":48,"StmtLocal":47,"ExprLiteral":106,"StmtAssign":18,"ExprIndex":5,"ExprEnumValue":10,"ExprCall":27,"ExprIf":5,"ExprUnary":8,"StmtWhile":4,"TestBlock":25,"StmtExpr":51,"InvariantBlock":6,"BenchBlock":4},"tags":["domain/numeric","has/benches","has/enums","has/functions","has/imports","has/invariants","has/loops","has/structs","has/tests","health/warn","issue/type-errors","size/large","src/tt-trinity-gamma"],"summary":"Declares 21 functions, 16 structs, 1 enum and 2 constants. Carries 25 tests, 6 invariants and 4 benches. 1053 lines compile to 4,374 tokens and 1,045 AST nodes, depth 15. Emits 5 of 5 backends; largest is Verilog at 34.8 KB. Compiles with 4 type errors."},{"path":"turbobaby-user-bot/specs/agents/turbobaby.t27","category":"turbobaby-user-bot/specs","name":"turbobaby","module":"turbobaby-agent","lines":138,"bytes":8106,"description":null,"health":"ok","tokens":370,"nodes":129,"depth":7,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":4843,"rust":3143,"verilog":7302,"verilog_hir":259,"zig":4800},"repo":"turbobaby-user-bot","kinds":{"Module":1,"ConstDecl":27,"ExprLiteral":38,"ExprIdentifier":16,"TestBlock":6,"StmtExpr":12,"ExprCall":12,"ExprBinary":12,"ExprIndex":3,"InvariantBlock":2},"tags":["domain/other","has/constants-only","has/invariants","has/tests","health/ok","size/small","src/turbobaby-user-bot"],"summary":"Declares 27 constants. Carries 6 tests and 2 invariants. 138 lines compile to 370 tokens and 129 AST nodes, depth 7. Emits 5 of 5 backends; largest is Verilog at 7.1 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/availability.t27","category":"turbobaby-user-bot/specs","name":"availability","module":"availability","lines":571,"bytes":30311,"description":"specs/turbobaby/availability.t27 -- what \"available\" counts, and everything it refuses to count Source of truth for the availability half of issue #4's `bike_units` table (the status set and the derived per-family count), for the availability filter of the catalog API (#8), and for the \"unavailable rather than hidden\" rule the detail screen (#9) renders. Every number below is read from data/fleet_seed.json (measured_at 2026-09-12) or from DECISIONS.md, and each carries where it comes from. Nothing here is computed from a price and nothing is parsed out of prose.","health":"ok","tokens":2127,"nodes":931,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14020,"rust":6167,"verilog":20039,"verilog_hir":1094,"zig":13194},"repo":"turbobaby-user-bot","kinds":{"Module":18,"ConstDecl":53,"ExprLiteral":189,"ExprIdentifier":200,"StructDecl":1,"FnDecl":13,"ExprReturn":18,"ExprBinary":110,"StmtLocal":11,"StmtIf":12,"StmtAssign":13,"ExprCall":133,"ExprIf":1,"StmtWhile":5,"ExprIndex":40,"ExprUnary":4,"ExprFieldAccess":2,"TestBlock":13,"StmtExpr":82,"InvariantBlock":13},"tags":["domain/other","has/functions","has/invariants","has/loops","has/structs","has/tests","health/ok","size/large","src/turbobaby-user-bot"],"summary":"Declares 13 functions, 1 struct and 53 constants. Carries 13 tests and 13 invariants. 571 lines compile to 2,127 tokens and 931 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/bike_catalog.t27","category":"turbobaby-user-bot/specs","name":"bike_catalog","module":"bike-catalog","lines":631,"bytes":32434,"description":"specs/turbobaby/bike_catalog.t27 -- the shape of a catalog row, and the algebra of class and displacement. Source of truth for the two class discriminants, the six body styles, the three displacement bands and catalog row shape. The catalog API (#8), bike detail screen (#9) and ride game's handling model (#13) consume bookability from availability.t27. Every count below is quoted from data/fleet_seed.json (measured_at 2026-09-12, schema_version 2), or derived","health":"ok","tokens":1911,"nodes":872,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14830,"rust":4219,"verilog":20196,"verilog_hir":801,"zig":14153},"repo":"turbobaby-user-bot","kinds":{"Module":11,"ConstDecl":45,"ExprLiteral":171,"ExprIdentifier":176,"StructDecl":1,"FnDecl":6,"ExprReturn":16,"ExprStructLit":1,"ExprFieldAccess":49,"StmtIf":10,"ExprBinary":100,"ExprIndex":19,"TestBlock":17,"StmtExpr":88,"ExprCall":134,"StmtLocal":5,"InvariantBlock":23},"tags":["domain/other","has/functions","has/invariants","has/structs","has/tests","health/ok","size/large","src/turbobaby-user-bot"],"summary":"Declares 6 functions, 1 struct and 45 constants. Carries 17 tests and 23 invariants. 631 lines compile to 1,911 tokens and 872 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 19.7 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/catalog_api.t27","category":"turbobaby-user-bot/specs","name":"catalog_api","module":"catalog-api","lines":309,"bytes":15820,"description":"specs/turbobaby/catalog_api.t27 -- public HTTP behavior for the bike catalog This contract owns only the transport boundary requested by issue #8: filter composition, page-limit normalization, opaque cursor validation, DTO release gates, and HTTP outcomes. Catalog taxonomy belongs to bike_catalog.t27, current inventory and offerability belong to availability.t27, and price provenance belongs to pricing_honesty.t27. This file deliberately imports none of them. Instead, the transport receives their decisions as booleans such as","health":"ok","tokens":1847,"nodes":877,"depth":9,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13813,"rust":4353,"verilog":19744,"verilog_hir":2128,"zig":11920},"repo":"turbobaby-user-bot","kinds":{"Module":20,"ConstDecl":21,"ExprLiteral":332,"ExprIdentifier":111,"FnDecl":11,"StmtIf":19,"ExprUnary":12,"ExprReturn":30,"ExprBinary":100,"TestBlock":13,"StmtExpr":67,"ExprCall":128,"ExprFieldAccess":1,"ExprIndex":5,"InvariantBlock":7},"tags":["domain/other","has/functions","has/invariants","has/tests","health/ok","size/medium","src/turbobaby-user-bot"],"summary":"Declares 11 functions and 21 constants. Carries 13 tests and 7 invariants. 309 lines compile to 1,847 tokens and 877 AST nodes, depth 9. Emits 5 of 5 backends; largest is Verilog at 19.3 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/commerce.t27","category":"turbobaby-user-bot/specs","name":"commerce","module":"commerce","lines":412,"bytes":22282,"description":"specs/turbobaby/commerce.t27 -- cart, checkout, order, and replay safety for bike deals This contract owns the transactional seam that the catalog and pricing contracts stop before: a cart is locked, exactly one deal shape is selected, an authoritative quote is snapshotted, fulfillment is admissible, an idempotency key chooses create/replay/conflict, and a committed order makes the cart terminal. It covers both rental and sale without pretending they are the same payload. D7 fixes the spelling `fulfillment`; D8 fixes a rental line on a family rather","health":"ok","tokens":2439,"nodes":1067,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":19033,"rust":5767,"verilog":26920,"verilog_hir":2241,"zig":17288},"repo":"turbobaby-user-bot","kinds":{"Module":19,"ConstDecl":35,"ExprLiteral":303,"ExprIdentifier":219,"FnDecl":15,"ExprReturn":32,"ExprBinary":114,"StmtIf":18,"ExprUnary":8,"ExprCall":168,"StmtExpr":97,"ExprFieldAccess":1,"TestBlock":17,"ExprIndex":2,"StmtLocal":8,"InvariantBlock":11},"tags":["domain/other","has/functions","has/invariants","has/tests","health/ok","size/large","src/turbobaby-user-bot"],"summary":"Declares 15 functions and 35 constants. Carries 17 tests and 11 invariants. 412 lines compile to 2,439 tokens and 1,067 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 26.3 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27","category":"turbobaby-user-bot/specs","name":"deposit_tiers","module":"deposit-tiers","lines":688,"bytes":36679,"description":"specs/turbobaby/deposit_tiers.t27 -- the published security-deposit tiers of the TurboBaby fleet Written contract for every surface that shows a deposit: the tier is looked up on the family key and no surface computes one. Measured from data/fleet_seed.json (measured_at 2026-09-12), whose deposit authority is the published tariff source KB_faq, section \"Exact price list (from CRM)\". Closes issue #18. ASCII only (L3), English identifiers only. --","health":"warn","tokens":2806,"nodes":1558,"depth":13,"loss":0,"tcErrors":3,"failedBackends":[],"outBytes":{"c":19966,"rust":5388,"verilog":29673,"verilog_hir":852,"zig":19400},"repo":"turbobaby-user-bot","kinds":{"Module":30,"ConstDecl":43,"ExprLiteral":329,"ExprIdentifier":269,"FnDecl":8,"StmtIf":26,"ExprBinary":219,"ExprReturn":31,"ExprCall":278,"ExprUnary":1,"StmtLocal":5,"StmtWhile":3,"ExprIndex":88,"StmtAssign":3,"TestBlock":26,"StmtExpr":173,"ExprFieldAccess":13,"InvariantBlock":13},"tags":["domain/other","has/functions","has/invariants","has/loops","has/tests","health/warn","issue/type-errors","size/large","src/turbobaby-user-bot"],"summary":"Declares 8 functions and 43 constants. Carries 26 tests and 13 invariants. 688 lines compile to 2,806 tokens and 1,558 AST nodes, depth 13. Emits 5 of 5 backends; largest is Verilog at 29.0 KB. Compiles with 3 type errors."},{"path":"turbobaby-user-bot/specs/turbobaby/market_profile.t27","category":"turbobaby-user-bot/specs","name":"market_profile","module":"turbobaby-market","lines":331,"bytes":16560,"description":"specs/turbobaby/market_profile.t27 -- the contract a market/country/currency must satisfy The owner's standing instruction (2026-09-13) is that this agent runs on ANY market, country and currency. Measured before this file existed, Thailand was ambient in the code rather than declared anywhere: the money formatter hardcodes the baht glyph, the comma group separator and whole-baht display (src/trios/pricing.rs format_baht/group_thousands), i18n templates bake the glyph into customer-facing sentences (src/trios/i18n.rs), the shop timezone is a","health":"ok","tokens":1218,"nodes":570,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":9813,"rust":4259,"verilog":14943,"verilog_hir":828,"zig":9337},"repo":"turbobaby-user-bot","kinds":{"Module":11,"ConstDecl":48,"ExprLiteral":153,"ExprIdentifier":73,"FnDecl":6,"StmtIf":10,"ExprBinary":70,"ExprReturn":15,"ExprIndex":6,"TestBlock":12,"StmtExpr":61,"ExprCall":95,"ExprFieldAccess":2,"ExprUnary":3,"InvariantBlock":5},"tags":["domain/other","has/functions","has/invariants","has/tests","health/ok","size/medium","src/turbobaby-user-bot"],"summary":"Declares 6 functions and 48 constants. Carries 12 tests and 5 invariants. 331 lines compile to 1,218 tokens and 570 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 14.6 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27","category":"turbobaby-user-bot/specs","name":"pricing_honesty","module":"pricing-honesty","lines":422,"bytes":24342,"description":"specs/turbobaby/pricing_honesty.t27 -- an absent rate is not zero, and a dash is not silence The formal statement of DECISIONS.md D11 (price provenance) and D9 (absent stays absent) for one value: the published per-day rate of a bike family. Source of truth for the optional-rate representation the two runtimes named by D15 must share -- src/trios/pricing.rs for the Axum server and for the Dioxus/WASM catalog screen -- so that the honesty filters are written once and checked against a written contract instead of against each other. ASCII only (L3).","health":"ok","tokens":1461,"nodes":561,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10635,"rust":3747,"verilog":15081,"verilog_hir":697,"zig":9903},"repo":"turbobaby-user-bot","kinds":{"Module":5,"ConstDecl":36,"ExprLiteral":88,"ExprIdentifier":83,"StructDecl":2,"FnDecl":8,"StmtIf":4,"ExprBinary":54,"ExprReturn":12,"ExprStructLit":8,"ExprFieldAccess":54,"ExprCall":129,"TestBlock":12,"StmtExpr":48,"ExprUnary":4,"InvariantBlock":14},"tags":["domain/other","has/functions","has/invariants","has/structs","has/tests","health/ok","size/large","src/turbobaby-user-bot"],"summary":"Declares 8 functions, 2 structs and 36 constants. Carries 12 tests and 14 invariants. 422 lines compile to 1,461 tokens and 561 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 14.7 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/publication.t27","category":"turbobaby-user-bot/specs","name":"publication","module":"turbobaby-publish-proof","lines":254,"bytes":13935,"description":null,"health":"ok","tokens":1501,"nodes":644,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":13285,"rust":4687,"verilog":17076,"verilog_hir":2277,"zig":11359},"repo":"turbobaby-user-bot","kinds":{"Module":1,"ConstDecl":29,"ExprLiteral":224,"FnDecl":13,"ExprReturn":13,"ExprBinary":101,"ExprIdentifier":76,"ExprUnary":3,"ExprCall":101,"TestBlock":11,"StmtExpr":62,"InvariantBlock":10},"tags":["domain/other","has/functions","has/invariants","has/tests","health/ok","size/medium","src/turbobaby-user-bot"],"summary":"Declares 13 functions and 29 constants. Carries 11 tests and 10 invariants. 254 lines compile to 1,501 tokens and 644 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 16.7 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/rental_terms.t27","category":"turbobaby-user-bot/specs","name":"rental_terms","module":"rental-terms","lines":497,"bytes":32679,"description":"specs/turbobaby/rental_terms.t27 -- the rental term ladder, the published term-discount bands, and the one rounding rule every total is built from. Canonical source of truth for the INTEGER basis-point form of the term arithmetic that D15 puts in src/trios/pricing.rs, so the Axum server and the Dioxus/WASM client are checked against one written contract instead of against each other. The earlier specs/rental_terms.t27 states the same bands in f64. Its declarations have now been semantically classified in","health":"ok","tokens":1243,"nodes":605,"depth":10,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":10639,"rust":2329,"verilog":14861,"verilog_hir":540,"zig":10106},"repo":"turbobaby-user-bot","kinds":{"Module":4,"ConstDecl":32,"ExprLiteral":131,"ExprIdentifier":130,"FnDecl":3,"StmtLocal":1,"ExprBinary":89,"ExprReturn":6,"ExprCall":96,"StmtIf":3,"TestBlock":13,"StmtExpr":57,"ExprIndex":25,"InvariantBlock":15},"tags":["domain/other","has/functions","has/invariants","has/tests","health/ok","size/large","src/turbobaby-user-bot"],"summary":"Declares 3 functions and 32 constants. Carries 13 tests and 15 invariants. 497 lines compile to 1,243 tokens and 605 AST nodes, depth 10. Emits 5 of 5 backends; largest is Verilog at 14.5 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/ride_game.t27","category":"turbobaby-user-bot/specs","name":"ride_game","module":"ride-game","lines":548,"bytes":29963,"description":"specs/turbobaby/ride_game.t27 -- how the biker game reads its handling out of the real fleet Source of truth for the two things issues #20, #13 and #12 ask to be stated once: the handling map (top speed from displacement_cc, steering from class) and the rule that the game may mount only a family the catalog actually has free. Every MEASURED number below is read from data/fleet_seed.json (measured_at 2026-09-12) or derived from it in a visible step -- but not every number below is measured, and this sentence is scoped so that nobody","health":"ok","tokens":1947,"nodes":940,"depth":14,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":14789,"rust":4816,"verilog":20099,"verilog_hir":880,"zig":14265},"repo":"turbobaby-user-bot","kinds":{"Module":8,"ConstDecl":50,"ExprLiteral":234,"ExprIdentifier":143,"FnDecl":7,"ExprReturn":14,"ExprBinary":125,"StmtIf":7,"StructDecl":1,"ExprStructLit":1,"ExprFieldAccess":6,"ExprCall":159,"ExprUnary":4,"TestBlock":17,"StmtExpr":106,"ExprIndex":41,"StmtLocal":1,"InvariantBlock":16},"tags":["domain/other","has/functions","has/invariants","has/structs","has/tests","health/ok","size/large","src/turbobaby-user-bot"],"summary":"Declares 7 functions, 1 struct and 50 constants. Carries 17 tests and 16 invariants. 548 lines compile to 1,947 tokens and 940 AST nodes, depth 14. Emits 5 of 5 backends; largest is Verilog at 19.6 KB. Clean through every layer."},{"path":"turbobaby-user-bot/specs/turbobaby/ride_runtime.t27","category":"turbobaby-user-bot/specs","name":"ride_runtime","module":"turbobaby-ride-lifecycle","lines":275,"bytes":12688,"description":null,"health":"ok","tokens":1435,"nodes":599,"depth":8,"loss":0,"tcErrors":0,"failedBackends":[],"outBytes":{"c":11423,"rust":3787,"verilog":16053,"verilog_hir":1783,"zig":9660},"repo":"turbobaby-user-bot","kinds":{"Module":6,"ConstDecl":26,"ExprLiteral":164,"FnDecl":15,"StmtIf":5,"ExprBinary":80,"ExprIdentifier":90,"ExprReturn":20,"ExprCall":110,"ExprUnary":7,"TestBlock":12,"StmtExpr":54,"InvariantBlock":10},"tags":["domain/other","has/functions","has/invariants","has/tests","health/ok","size/medium","src/turbobaby-user-bot"],"summary":"Declares 15 functions and 26 constants. Carries 12 tests and 10 invariants. 275 lines compile to 1,435 tokens and 599 AST nodes, depth 8. Emits 5 of 5 backends; largest is Verilog at 15.7 KB. Clean through every layer."}]} \ No newline at end of file diff --git a/apps/website/public/t27/shared-core.json b/apps/website/public/t27/shared-core.json index 954bfdf089..9e3dc60638 100644 --- a/apps/website/public/t27/shared-core.json +++ b/apps/website/public/t27/shared-core.json @@ -1 +1 @@ -{"version":1,"provenance":{"repo":"gHashTag/t27","commit":"1cd2877f97e33efb574fa03c589f7368dc1385ba","shortCommit":"1cd2877f9","specsOrCompilerDirty":true,"dirty":true,"manifestSha256":"4970a54d1cc7fc3954c66a9a11f885d7b2b4633614618f7896adb94cb3589e28","indexerSha256":"3d49bc7cf0b36ce075d3fa014760e28a1d46104db4ee9681d27fc04fa1ddce96","repos":[{"repo":"t27","commit":"1cd2877f97e33efb574fa03c589f7368dc1385ba","specs":575},{"repo":"tri-net","commit":"3ffd1bd0ac9f5aea18c407ec386ca179eb61a41e","specs":113},{"repo":"trinity-fpga","commit":"30248bb30f332f9b5f944ced9b87ff50711fe86c","specs":64},{"repo":"trinity","commit":"001190f7c4ab09ac1b7dcf2b40b0969e57549f42","specs":3},{"repo":"tt-trinity-corona","commit":"dddf6887e54aa847a9a0f4c835fbc392c8cc6c12","specs":5},{"repo":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","specs":37,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":0},{"repo":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","specs":58,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":13},{"repo":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","specs":1,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":48}],"duplicatesPreviouslySkipped":129,"healthSource":"vendored manifest claim, not issue acceptance","importResolution":"lexical/path discovery, not compiler linking"},"specs":[{"id":"000cf7b4fd568fd728063f7f1d28acd812a43d58ceda7180381755d2ea9b7eaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/tf3.t27","health":"warn","module":null}],"description":"tf3.t27 — TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","symbols":[],"imports":[],"terms":["fpga","numeric","tf3"]},{"id":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/arty_a7_integration.t27","health":"ok","module":"ArtyA7_Integration"}],"description":"t27/specs/fpga/boards/arty_a7_integration.t27 Arty A7 Board-Level Integration Spec Full system: MAC + UART + SPI + Memory + Bridge + GF16 + TernaryISA Pin mappings match specs/fpga/constraints/arty_a7.xdc","symbols":[{"name":"BOARD_NAME","line":19},{"name":"FPGA_PART","line":20},{"name":"CLOCK_FREQ_HZ","line":21},{"name":"UART_BAUD","line":22},{"name":"SPI_CLK_DIV","line":23},{"name":"MEMORY_SIZE","line":24},{"name":"FIFO_DEPTH","line":25},{"name":"NUM_LEDS","line":26},{"name":"NUM_SWITCHES","line":27},{"name":"NUM_BUTTONS","line":28},{"name":"PinMapping","line":30},{"name":"ARTY_A7_PINS","line":44},{"name":"SystemConfig","line":58},{"name":"SYS_CONFIG","line":67},{"name":"calc_baud_divisor","line":76},{"name":"calc_spi_prescaler","line":80},{"name":"verify_pin_config","line":84}],"imports":[{"name":"fpga::top_level::ZeroDSP_TopLevel","line":9},{"name":"fpga::mac::ZeroDSP_MAC","line":10},{"name":"fpga::uart::ZeroDSP_UART","line":11},{"name":"fpga::spi::SPI_Master","line":12},{"name":"fpga::memory::Memory","line":13},{"name":"fpga::bridge::FPGA_Bridge","line":14},{"name":"fpga::gf16_accel::Gf16Accel","line":15},{"name":"fpga::fifo::Fifo","line":16},{"name":"fpga::axi4::Axi4","line":17}],"terms":["fpga","boards","arty","integration","board","part","clock","freq","uart","baud","spi","clk","div","memory","size","fifo","depth","num","leds","switches","buttons","pin","mapping","pins","system","config","sys","calc","divisor","prescaler","verify"]},{"id":"009f964022dfd8c9ff3e0cdc77de85b0c5162329bd53e3898bac2a5d43bfa2b3","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/map.t27","health":"ok","module":"TriMap"}],"description":"t27/specs/","symbols":[{"name":"Map","line":13},{"name":"empty","line":23},{"name":"singleton","line":28},{"name":"get","line":33},{"name":"set","line":38},{"name":"keys","line":43},{"name":"values","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","map","empty","singleton","get","set","keys","values"]},{"id":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/packed_trit.t27","health":"ok","module":"PackedTrit"}],"description":"Module: Packed Trit Encoding (5 trits per byte)","symbols":[{"name":"TRIT_NEG","line":18},{"name":"TRIT_ZERO","line":19},{"name":"TRIT_POS","line":20},{"name":"TRITS_PER_BYTE","line":23},{"name":"MAX_PACKED_BYTES","line":24},{"name":"MAX_TRITS","line":25},{"name":"ENCODED_NEG","line":28},{"name":"ENCODED_ZERO","line":29},{"name":"ENCODED_POS","line":30},{"name":"TRIT_MASK","line":31},{"name":"PackResult","line":37},{"name":"UnpackResult","line":43},{"name":"ArithResult","line":49},{"name":"PackedBigInt","line":58},{"name":"encodePack","line":75},{"name":"decodePack","line":82},{"name":"packed_add","line":93},{"name":"packed_sub","line":100},{"name":"packed_mul","line":107},{"name":"packed_from_i64","line":114},{"name":"packed_to_i64","line":121},{"name":"trit_valid","line":131},{"name":"normalize_trit","line":140},{"name":"count_trits","line":156},{"name":"byte_count","line":157}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"numeric::gf16","line":11}],"terms":["ternary","packed","trit","neg","zero","pos","trits","per","byte","max","bytes","encoded","mask","pack","unpack","arith","big","int","encode","decode","sub","mul","i64","valid","normalize","count"]},{"id":"022a99e9b297c32b50c7b82c7eecdbbc302dce6a374027d278ee30423252c9f6","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/02_functions.t27","health":"ok","module":"tutorial-02-functions"}],"description":"02 — Functions Lesson 2. Parameter types and the return type are always written out. A signature is part of the specification, so it is never inferred.","symbols":[{"name":"TRIT_NEG","line":9},{"name":"TRIT_POS","line":10},{"name":"double","line":20},{"name":"add","line":24},{"name":"scaled_sum","line":36},{"name":"sum","line":37},{"name":"scaled","line":38},{"name":"quadruple","line":49},{"name":"negate","line":57},{"name":"invert","line":61}],"imports":[],"terms":["tutorial","functions","trit","neg","pos","double","scaled","sum","quadruple","negate","invert"]},{"id":"0282d379eabfe96387bde647535d0a2849c755fdbb32ab86ec98a99444ea0d13","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/settlement_law.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","trinet","settlement","law"]},{"id":"0330730538325bbbb9803179e922a76577032da1cad66a53171b28b7a348ac89","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/tuple.t27","health":"ok","module":"TriTuple"}],"description":"t27/specs/","symbols":[{"name":"Tuple2","line":13},{"name":"Tuple3","line":18},{"name":"pair","line":29},{"name":"triple","line":34},{"name":"fst","line":39},{"name":"snd","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","tuple","tuple2","tuple3","pair","triple","fst","snd"]},{"id":"03c1b268a4737549ad5429537fef599326c7eb9ccbcb5ad203157639005c15a1","sources":[{"repo":"ghashtag/t27","path":"specs/physics/chimera_best_gamma.t27","health":"ok","module":"chimera"}],"description":"t27/specs/physics/chimera_best_gamma.t27 Best gamma formula from PDG 2024 P35_new (Delta = 0.140%)","symbols":[{"name":"PHI","line":10},{"name":"formula","line":12}],"imports":[{"name":"base::math","line":7},{"name":"compiler::codegen","line":8}],"terms":["physics","chimera","best","gamma","phi","formula"]},{"id":"042c7754a3e80d71a7c659acc9e1e4d90c561bf3a3876bbcc34237e14421f3d0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/priority_queue.t27","health":"ok","module":"TriPriorityQueue"}],"description":"t27/specs/","symbols":[{"name":"PriorityQueue","line":13},{"name":"init","line":24},{"name":"enqueue","line":29},{"name":"dequeue","line":34},{"name":"peek","line":39},{"name":"is_empty","line":44},{"name":"deinit","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","priority","queue","init","enqueue","dequeue","peek","empty","deinit"]},{"id":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","sources":[{"repo":"ghashtag/t27","path":"specs/nn/attention.t27","health":"warn","module":"SacredAttention"}],"description":"t27/specs/nn/attention.t27 Sacred Attention Specification Multi-head attention with phi-RoPE and sacred scaling (d_k^(-phi^3))","symbols":[{"name":"NUM_HEADS","line":18},{"name":"HEAD_DIM","line":19},{"name":"EMBED_DIM","line":20},{"name":"CONTEXT_LEN","line":21},{"name":"ROPE_PAIRS","line":22},{"name":"SACRED_GAMMA","line":25},{"name":"SACRED_SCALE","line":26},{"name":"ATTN_CAUSAL","line":29},{"name":"ATTN_BIDIR","line":30},{"name":"ATTN_SPARSE","line":31},{"name":"PHASE_QUERY","line":34},{"name":"PHASE_KEY","line":35},{"name":"PHASE_VALUE","line":36},{"name":"PHASE_SCORE","line":37},{"name":"PHASE_SOFTMAX","line":38},{"name":"PHASE_WEIGHT","line":39},{"name":"RoPETables","line":48},{"name":"AttentionBuffers","line":60},{"name":"sacred_attention_init","line":76},{"name":"freq_exponent","line":84},{"name":"freq","line":85},{"name":"angle","line":88},{"name":"cos_val","line":91},{"name":"sin_val","line":92},{"name":"table_offset","line":95},{"name":"sacred_attention_kernel","line":119},{"name":"project_qkv","line":168},{"name":"ternary_matmul","line":185},{"name":"weight_val","line":199},{"name":"apply_rope_qk","line":222},{"name":"head_offset","line":226},{"name":"idx0","line":230},{"name":"idx1","line":231},{"name":"table_offset","line":233},{"name":"cos_val","line":234},{"name":"sin_val","line":235},{"name":"q0","line":238},{"name":"q1","line":239},{"name":"k0","line":244},{"name":"k1","line":245},{"name":"cache_kv","line":262},{"name":"offset","line":267},{"name":"compute_scores","line":284},{"name":"head_offset","line":293},{"name":"q_val","line":309},{"name":"k_val","line":310},{"name":"apply_softmax","line":331},{"name":"s","line":340},{"name":"s","line":352},{"name":"weighted_values","line":376},{"name":"head_offset","line":384},{"name":"weight","line":392},{"name":"v_val","line":393},{"name":"project_output","line":413},{"name":"add_residual","line":427}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"math::constants","line":11}],"terms":["attention","sacred","num","heads","head","dim","embed","len","rope","pairs","gamma","scale","attn","causal","bidir","sparse","phase","query","key","score","softmax","weight","petables","buffers","init","freq","exponent","angle","cos","val","sin","table","offset","kernel","project","qkv","ternary","matmul","apply","idx0","idx1","cache","compute","scores","weighted","values","residual"]},{"id":"054368075009acf87f6a8d262d47083b0d2fea4f2d01fd1fd17fd56be345245f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_node_identity.t27","health":"ok","module":"TriNodeIdentity"}],"description":"TRI-NET node identity binding: tie a receipt's `executor` field to the actual Ed25519 public key that signs it. Without this, a node signs with its own key but can claim ANY executor id (sig_ok only proves \"some valid signature\", not \"signed by the claimed executor\"). Bind executor = commitment to the signer's public key: executor_id = the low 32 bits of SHA-256(pubkey). A verifier recomputes it from the signing key and rejects a receipt whose executor field does not match -- so","symbols":[{"name":"SHA_PAD256","line":14},{"name":"PUBKEY_BITS","line":15},{"name":"pubkey_pre","line":20},{"name":"identity_matches","line":36},{"name":"who_ok","line":41}],"imports":[{"name":"base::types","line":12}],"terms":["net","node","identity","sha","pad256","pubkey","bits","pre","matches","who"]},{"id":"059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/anomaly_detector.t27","health":"warn","module":"anomaly_detector"}],"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","symbols":[{"name":"MAX_METRICS","line":7},{"name":"BASELINE_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"SEVERITY_HIGH","line":10},{"name":"SEVERITY_MEDIUM","line":11},{"name":"create_metric_reading","line":14},{"name":"get_metric_id","line":21},{"name":"get_metric_value","line":25},{"name":"get_timestamp","line":29},{"name":"get_confidence","line":33},{"name":"create_anomaly_report","line":38},{"name":"get_anomaly_metric_id","line":45},{"name":"get_severity","line":49},{"name":"get_anomaly_type","line":53},{"name":"get_anomaly_confidence","line":57},{"name":"TYPE_SPIKE","line":62},{"name":"TYPE_DROP","line":63},{"name":"TYPE_PATTERN","line":64},{"name":"TYPE_TREND","line":65},{"name":"calculate_baseline","line":68},{"name":"calculate_variance","line":88},{"name":"detect_spike","line":114},{"name":"detect_drop","line":133},{"name":"detect_pattern","line":152},{"name":"detect_trend","line":182},{"name":"calculate_severity","line":220},{"name":"detect_anomaly","line":238},{"name":"is_critical_anomaly","line":274},{"name":"get_anomaly_description","line":285},{"name":"correlate_metrics","line":302},{"name":"detect_coordinated_attack","line":343},{"name":"calculate_anomaly_confidence","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","anomaly","detector","max","metrics","baseline","window","threshold","severity","high","medium","create","metric","reading","get","timestamp","confidence","report","spike","drop","pattern","trend","calculate","variance","detect","critical","description","correlate","coordinated","attack"]},{"id":"05a07af58a53b6ca13e294c62187fc537865c2d24b80bdd484b1fe79232361da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logging.t27","health":"ok","module":"TriLogging"}],"description":"t27/specs/","symbols":[{"name":"LogLevel","line":13},{"name":"LogEntry","line":17},{"name":"level_to_string","line":29},{"name":"level_from_string","line":34},{"name":"level_color","line":39},{"name":"format_entry","line":44},{"name":"should_log","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","logging","log","level","entry","color","format"]},{"id":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/transform.t27","health":"ok","module":"provider-transform"}],"description":"provider/transform.t27 — Cross-Provider Message Transformations Message format transformations between different AI providers","symbols":[{"name":"MAX_HISTORY_LENGTH","line":25},{"name":"MAX_CONTENT_LENGTH","line":28},{"name":"DEFAULT_SYSTEM_PROMPT","line":31},{"name":"TransformDirection","line":38},{"name":"TransformResult","line":46},{"name":"MessageMapping","line":54},{"name":"ContentTransform","line":61},{"name":"ToolMapping","line":69},{"name":"ParameterTransform","line":76},{"name":"TransformOptions","line":83},{"name":"BatchTransformResult","line":90},{"name":"TransformError","line":97},{"name":"TransformedMessage","line":105},{"name":"transform_options_default","line":116},{"name":"transform_direction_create","line":125},{"name":"transform_result_create","line":136},{"name":"transform_result_error","line":146},{"name":"message_mapping_create","line":156},{"name":"tool_mapping_create","line":165},{"name":"transform_error_create","line":174},{"name":"transformed_message_create","line":184},{"name":"transform_messages","line":193},{"name":"direction","line":194},{"name":"transformed","line":199},{"name":"transform_single_message","line":214},{"name":"target_role","line":215},{"name":"new_content","line":219},{"name":"map_role","line":230},{"name":"map_role_anthropic_to_openai","line":240},{"name":"map_role_openai_to_anthropic","line":250},{"name":"transform_content","line":260},{"name":"normalize_for_openai","line":274},{"name":"normalize_for_anthropic","line":284},{"name":"normalize_image_for_openai","line":294},{"name":"normalize_image_for_anthropic","line":299},{"name":"convert_tool_to_openai","line":304},{"name":"convert_tool_to_anthropic","line":309},{"name":"transform_tools","line":314},{"name":"transformed","line":321},{"name":"transform_single_tool","line":328},{"name":"needs_transformation","line":337},{"name":"transform_direction_to_string","line":342},{"name":"is_transform_success","line":352},{"name":"opts","line":361},{"name":"dir","line":366},{"name":"result","line":371},{"name":"mapping","line":376},{"name":"mapping","line":381},{"name":"err","line":386},{"name":"role","line":391},{"name":"role","line":396},{"name":"result","line":405},{"name":"str","line":410}],"imports":[],"terms":["provider","transform","max","history","length","content","default","system","prompt","direction","mapping","tool","parameter","options","batch","transformed","create","messages","single","target","role","map","anthropic","openai","normalize","image","convert","transformation","success","opts","dir","err","str"]},{"id":"0698e7d7e9693a49683c92c75812220f30b4025bee6ab7765c34e5ad5ca183db","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf12.t27","health":"warn","module":"GF12"}],"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 -- 12-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 4 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF12","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp","line":171},{"name":"pow","line":177},{"name":"is_integer","line":193},{"name":"ln_val","line":219},{"name":"ln_approx","line":224},{"name":"t","line":233},{"name":"t2","line":234},{"name":"t3","line":235},{"name":"t5","line":236},{"name":"t7","line":237},{"name":"exp_approx","line":243},{"name":"k","line":255},{"name":"k","line":266},{"name":"floor","line":282}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf12","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"06e69666f7c575b3fbe4f5530f2560fd46ce903a1a3af6dd62e375aaa4f38953","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_memory.t27","health":"warn","module":"TernaryMemory"}],"description":"t27/specs/base/ternary_memory.t27 Ternary Memory Specification Ring 066 - Ternary memory cell and array operations Defines how trits are stored and accessed in memory","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"TRIT_CAPACITY","line":21},{"name":"WORD_CAPACITY","line":22},{"name":"PAGE_SIZE","line":23},{"name":"STATE_FREE","line":26},{"name":"STATE_ALLOCATED","line":27},{"name":"STATE_LOCKED","line":28},{"name":"STATE_DIRTY","line":29},{"name":"TritCell","line":36},{"name":"trit_cell_init","line":45},{"name":"trit_cell_write","line":56},{"name":"trit_cell_read","line":69},{"name":"TernaryWord","line":80},{"name":"ternary_word_init","line":88},{"name":"ternary_word_write_trit","line":104},{"name":"result","line":112},{"name":"ternary_word_read_trit","line":122},{"name":"compute_checksum","line":131},{"name":"val","line":136},{"name":"TernaryMemoryBank","line":149},{"name":"ternary_memory_bank_init","line":157},{"name":"ternary_memory_alloc","line":174},{"name":"index","line":179},{"name":"ternary_memory_free","line":187},{"name":"ternary_memory_read","line":197},{"name":"ternary_memory_write","line":209},{"name":"get_timestamp","line":225},{"name":"validate_trit","line":231},{"name":"cell","line":240},{"name":"word","line":259},{"name":"bank","line":277},{"name":"index1","line":284},{"name":"index2","line":288},{"name":"index","line":297},{"name":"before","line":309},{"name":"before","line":316},{"name":"before","line":323},{"name":"index","line":343},{"name":"before","line":345},{"name":"after","line":349},{"name":"vals","line":369},{"name":"index","line":394}],"imports":[{"name":"base::types","line":9}],"terms":["base","ternary","memory","trit","neg","zero","pos","capacity","word","page","size","state","free","allocated","locked","dirty","cell","init","write","read","compute","checksum","val","bank","alloc","index","get","timestamp","validate","index1","index2","vals"]},{"id":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/self_healing.t27","health":"ok","module":"SelfHealing"}],"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","symbols":[{"name":"RECOVERY_COOLDOWN","line":7},{"name":"MAX_RECOVERY_ATTEMPTS","line":8},{"name":"RECOVERY_SUCCESS","line":9},{"name":"RECOVERY_FAILED","line":10},{"name":"create_recovery_state","line":15},{"name":"get_attempts","line":22},{"name":"get_last_attempt","line":26},{"name":"get_in_progress","line":30},{"name":"get_success_count","line":34},{"name":"can_recover","line":39},{"name":"start_recovery","line":57},{"name":"complete_recovery_success","line":64},{"name":"complete_recovery_failure","line":72},{"name":"reset_recovery","line":80},{"name":"is_recovery_failed","line":85},{"name":"create_network_state","line":90},{"name":"get_healthy_nodes","line":97},{"name":"get_total_nodes","line":101},{"name":"get_degraded_links","line":105},{"name":"get_total_links","line":109},{"name":"network_health_percent","line":114},{"name":"is_network_healthy","line":126},{"name":"is_network_degraded","line":131},{"name":"is_network_critical","line":137},{"name":"should_initiate_healing","line":142},{"name":"update_network_after_recovery","line":155}],"imports":[{"name":"base::types","line":5}],"terms":["net","self","healing","recovery","cooldown","max","attempts","success","failed","create","state","get","attempt","progress","count","recover","start","complete","failure","reset","network","healthy","nodes","total","degraded","links","health","percent","critical","initiate"]},{"id":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/m3_multihop.t27","health":"ok","module":"M3MultiHop"}],"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","symbols":[{"name":"NODE_A","line":6},{"name":"NODE_B","line":7},{"name":"NODE_C","line":8},{"name":"TARGET_THROUGHPUT_MBPS","line":11},{"name":"TARGET_LATENCY_MS","line":12},{"name":"TARGET_PACKET_LOSS_PCT","line":13},{"name":"ATTEN_MIN","line":16},{"name":"ATTEN_MAX","line":17},{"name":"IPERF3_HDR_LEN","line":20},{"name":"iperf3_sequence","line":23},{"name":"expected_loss_rate_p10","line":30},{"name":"throughput_factor_p8","line":49},{"name":"signal_quality","line":61},{"name":"total_attenuation","line":72},{"name":"delivery_rate_p8","line":81},{"name":"simulate_hop","line":94},{"name":"forward_packet","line":107},{"name":"tcp_packet_byte","line":117},{"name":"udp_packet_byte","line":132},{"name":"ST_IDLE","line":283},{"name":"ST_RUNNING","line":284},{"name":"ST_COMPLETE","line":285},{"name":"PerfCounters","line":288},{"name":"calculate_throughput_mbps","line":297},{"name":"calculate_loss_pct","line":314},{"name":"meets_targets","line":325},{"name":"test_next_state","line":336}],"imports":[],"terms":["net","multihop","m3multi","hop","node","target","throughput","mbps","latency","packet","loss","pct","atten","min","max","iperf3","hdr","len","sequence","expected","rate","p10","factor","signal","quality","total","attenuation","delivery","simulate","forward","tcp","byte","udp","idle","running","complete","perf","counters","calculate","meets","targets","state"]},{"id":"07c862f49fda9f37cff9081cbbbbcc2e1a3402e1b24bd6ca8d83fb7103801666","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/channel.t27","health":"ok","module":"TriChannel"}],"description":"t27/specs/","symbols":[{"name":"Channel","line":13},{"name":"new_channel","line":24},{"name":"send","line":29},{"name":"recv","line":34},{"name":"close","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","channel","send","recv","close"]},{"id":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/formats.t27","health":"ok","module":"Formats"}],"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","symbols":[{"name":"SignMask","line":27},{"name":"ExpMask","line":28},{"name":"MantMask","line":29},{"name":"ExpShift","line":31},{"name":"SignShift","line":32},{"name":"Bias","line":33},{"name":"ExpMax","line":35},{"name":"ExpMin","line":36},{"name":"gf16_to_f32","line":61},{"name":"f32_to_gf16","line":79},{"name":"f32_to_ternary","line":101},{"name":"ternary_to_f32","line":108},{"name":"Format","line":114},{"name":"format_bytes","line":126},{"name":"quantize_value","line":136},{"name":"original","line":322},{"name":"encoded","line":323},{"name":"decoded","line":324},{"name":"error","line":325},{"name":"p","line":330},{"name":"n","line":331},{"name":"p_decoded","line":332},{"name":"n_decoded","line":333},{"name":"values","line":338},{"name":"t","line":340},{"name":"recovered","line":341},{"name":"diff","line":342},{"name":"test_value","line":361},{"name":"test_value","line":372},{"name":"test_value","line":383},{"name":"test_trit","line":394}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11}],"terms":["numeric","formats","sign","mask","exp","mant","shift","bias","max","min","gf16","f32","ternary","format","bytes","quantize","original","encoded","decoded","values","recovered","diff","trit"]},{"id":"089f57bd6ac32f7823bc8a06be007ddc27710b276853f6d0e9d3de1519c87d79","sources":[{"repo":"ghashtag/t27","path":"specs/git/diff.t27","health":"ok","module":"GitDiff"}],"description":"specs/git/diff.t27 Git Diff Operations","symbols":[{"name":"diff","line":14},{"name":"diff_cached","line":19},{"name":"diff_files","line":24},{"name":"diff_text","line":29},{"name":"diff_file_text","line":34},{"name":"stats","line":43},{"name":"stats_cached","line":48},{"name":"StatsSummary","line":53},{"name":"stats_summary","line":59},{"name":"get_files_changed","line":68},{"name":"count_files_by_status","line":73},{"name":"find_changes_in_path","line":78},{"name":"find_changes_in_patterns","line":83},{"name":"has_changes_in_path","line":88},{"name":"Hunk","line":97},{"name":"parse_hunks","line":107},{"name":"count_hunks","line":112}],"imports":[{"name":"base::types","line":6},{"name":"git::schema","line":7}],"terms":["git","diff","cached","text","stats","summary","get","changed","count","status","find","path","patterns","hunk","parse","hunks"]},{"id":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/parser.t27","health":"ok","module":"Parsing"}],"description":"specs/compiler/parser.t27 T27 Parser Specification -- Self-hosting compiler core This module defines the complete recursive descent parser for the T27 language. It is a 1:1 port of bootstrap/src/compiler.rs Parser to t27 spec format.","symbols":[{"name":"MAX_CHILDREN","line":17},{"name":"NodeKind","line":19},{"name":"Node","line":56},{"name":"Parser","line":76},{"name":"parser_init","line":84},{"name":"advance","line":96},{"name":"check","line":101},{"name":"check_peek","line":105},{"name":"expect","line":109},{"name":"error","line":119},{"name":"get_error","line":124},{"name":"skip_brace_body","line":132},{"name":"skip_to_semicolon","line":152},{"name":"is_top_level_start","line":186},{"name":"skip_to_next_top_level","line":201},{"name":"recover_to_stmt_boundary","line":238},{"name":"parse_type_annotation","line":267},{"name":"node_new","line":331},{"name":"add_child","line":349},{"name":"parse_expr","line":356},{"name":"parse_expr_or","line":360},{"name":"right","line":364},{"name":"parse_expr_and","line":374},{"name":"right","line":378},{"name":"parse_expr_comparison","line":388},{"name":"op","line":397},{"name":"right","line":399},{"name":"parse_expr_bitor","line":409},{"name":"op","line":412},{"name":"right","line":414},{"name":"parse_expr_bitxor","line":424},{"name":"op","line":427},{"name":"right","line":429},{"name":"parse_expr_bitand","line":439},{"name":"op","line":442},{"name":"right","line":444},{"name":"parse_expr_shift","line":454},{"name":"op","line":457},{"name":"right","line":459},{"name":"parse_expr_additive","line":469},{"name":"op","line":474},{"name":"right","line":476},{"name":"parse_expr_multiplicative","line":486},{"name":"op","line":492},{"name":"right","line":494},{"name":"parse_expr_unary","line":504},{"name":"op","line":509},{"name":"operand","line":511},{"name":"parse_expr_postfix","line":520},{"name":"field","line":533},{"name":"index","line":548},{"name":"parse_call_args_internal","line":563},{"name":"arg","line":571},{"name":"parse_expr_primary","line":581},{"name":"name","line":622},{"name":"inner","line":637},{"name":"inner","line":652},{"name":"parse_call_args","line":666},{"name":"arg","line":673},{"name":"parse_struct_literal","line":683},{"name":"val","line":706},{"name":"parse_array_literal","line":720},{"name":"parse_if_expr","line":772},{"name":"cond","line":777},{"name":"then_expr","line":781},{"name":"else_expr","line":786},{"name":"parse_switch_expr","line":793},{"name":"val","line":798},{"name":"arm_expr","line":833},{"name":"parse_body_stmt","line":850},{"name":"expr","line":887},{"name":"rhs","line":891},{"name":"rhs","line":903},{"name":"parse_local_decl","line":922},{"name":"init","line":939},{"name":"parse_return_statement","line":949},{"name":"expr","line":955},{"name":"parse_if_stmt","line":965},{"name":"cond","line":970},{"name":"s","line":980},{"name":"stmt","line":986},{"name":"else_if","line":996},{"name":"s","line":1007},{"name":"parse_while_stmt","line":1018},{"name":"cond","line":1023},{"name":"s","line":1032},{"name":"parse_for_stmt","line":1041},{"name":"iter_expr","line":1048},{"name":"param_name","line":1064},{"name":"s","line":1079},{"name":"parse_fn_body","line":1088},{"name":"s","line":1091},{"name":"parse_struct_body","line":1102},{"name":"field_name","line":1106},{"name":"parse_enum_body","line":1135},{"name":"name","line":1139},{"name":"parse_top_level_decl","line":1176},{"name":"parse_const_decl","line":1202},{"name":"parse_var_decl","line":1303},{"name":"parse_enum_decl","line":1318},{"name":"parse_struct_decl","line":1345},{"name":"parse_fn_decl","line":1363},{"name":"param_name","line":1385},{"name":"param_type","line":1390},{"name":"parse","line":1457},{"name":"parse_module_body","line":1488},{"name":"import_name","line":1524},{"name":"decl","line":1532},{"name":"or_level","line":1551},{"name":"and_level","line":1552},{"name":"comp_level","line":1553},{"name":"add_level","line":1554},{"name":"mul_level","line":1555},{"name":"unary_level","line":1556}],"imports":[{"name":"base::types","line":10},{"name":"compiler::lexer","line":11}],"terms":["compiler","parser","parsing","max","children","node","kind","init","advance","peek","expect","get","skip","brace","semicolon","top","level","start","recover","stmt","boundary","parse","annotation","child","expr","right","comparison","bitor","bitxor","bitand","shift","additive","multiplicative","unary","operand","postfix","field","index","call","args","internal","arg","primary","inner","struct","literal","val","array","cond","else","switch","arm","rhs","local","decl","statement","iter","param","enum","var","import","comp","mul"]},{"id":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/docs_generator.t27","health":"warn","module":"docs_generator"}],"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","symbols":[{"name":"MAX_SECTIONS","line":7},{"name":"MAX_TABLES","line":8},{"name":"MAX_REFERENCES","line":9},{"name":"OUTPUT_BUFFER_SIZE","line":10},{"name":"create_output_format","line":13},{"name":"get_format_id","line":20},{"name":"get_format_version","line":24},{"name":"get_format_compression","line":28},{"name":"get_format_encoding","line":32},{"name":"FORMAT_MARKDOWN","line":37},{"name":"FORMAT_HTML","line":38},{"name":"FORMAT_PDF","line":39},{"name":"FORMAT_TEXT","line":40},{"name":"FORMAT_JSON","line":41},{"name":"create_document_section","line":44},{"name":"get_section_id","line":51},{"name":"get_section_level","line":55},{"name":"get_section_content_length","line":59},{"name":"get_section_subsection_count","line":63},{"name":"create_toc_entry","line":68},{"name":"get_toc_section_id","line":75},{"name":"get_toc_level","line":79},{"name":"get_toc_page_number","line":83},{"name":"get_toc_title_id","line":87},{"name":"generate_markdown_header","line":92},{"name":"generate_html_tag","line":107},{"name":"get_html_tag_type","line":113},{"name":"get_html_content_id","line":117},{"name":"get_html_attributes","line":121},{"name":"TAG_H1","line":126},{"name":"TAG_H2","line":127},{"name":"TAG_H3","line":128},{"name":"TAG_P","line":129},{"name":"TAG_TABLE","line":130},{"name":"TAG_DIV","line":131},{"name":"create_reference_link","line":134},{"name":"get_ref_source","line":141},{"name":"get_ref_target","line":145},{"name":"get_ref_type","line":149},{"name":"get_ref_anchor","line":153},{"name":"LINK_INTERNAL","line":158},{"name":"LINK_EXTERNAL","line":159},{"name":"LINK_API","line":160},{"name":"LINK_EXAMPLE","line":161},{"name":"format_code_block","line":164},{"name":"get_code_block_language","line":170},{"name":"get_code_block_code_id","line":174},{"name":"get_code_block_line_count","line":178},{"name":"create_data_table","line":183},{"name":"get_table_id","line":190},{"name":"get_table_row_count","line":194},{"name":"get_table_col_count","line":198},{"name":"get_table_header_count","line":202},{"name":"generate_table_row","line":207},{"name":"create_index_entry","line":215},{"name":"get_index_term_id","line":222},{"name":"get_index_location","line":226},{"name":"get_index_frequency","line":230},{"name":"get_index_importance","line":234},{"name":"generate_page_layout","line":239},{"name":"get_margin_top","line":246},{"name":"get_margin_bottom","line":250},{"name":"get_margin_left","line":254},{"name":"get_margin_right","line":258},{"name":"calculate_document_stats","line":263},{"name":"generate_document_metadata","line":292},{"name":"get_metadata_title","line":299},{"name":"get_metadata_author","line":303},{"name":"get_metadata_date","line":307},{"name":"get_metadata_version","line":311},{"name":"format_document","line":316},{"name":"generate_complete_document","line":344},{"name":"validate_documentation","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["net","docs","generator","max","sections","tables","references","buffer","size","create","format","get","compression","encoding","markdown","html","pdf","text","json","document","section","level","content","length","subsection","count","toc","entry","page","title","generate","header","tag","attributes","table","div","reference","link","ref","target","anchor","internal","external","api","example","block","language","data","row","col","index","term","location","frequency","importance","layout","margin","top","bottom","left","right","calculate","stats","metadata","author","date","complete","validate","documentation"]},{"id":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/formal.t27","health":"ok","module":"Formal"}],"description":"t27/specs/fpga/formal.t27 Formal Verification Specification for Trinity T27 FPGA HIR Defines assertion kinds, properties, and coverage points Generates SystemVerilog Assertions (SVA) alongside Verilog Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"AssertKind","line":13},{"name":"AssertSeverity","line":22},{"name":"ClockMode","line":31},{"name":"MAX_ASSERTIONS","line":39},{"name":"MAX_COVER_POINTS","line":40},{"name":"MAX_ASSUME_POINTS","line":41},{"name":"FormalAssert","line":45},{"name":"CoverPoint","line":57},{"name":"FormalAssume","line":66},{"name":"FormalConfig","line":75},{"name":"formal_config","line":87},{"name":"with_depth","line":99},{"name":"with_timeout","line":105},{"name":"immediate_assert","line":111},{"name":"concurrent_assert","line":123},{"name":"cover_point","line":135},{"name":"assume","line":144},{"name":"is_immediate","line":155},{"name":"is_concurrent","line":159},{"name":"is_cover","line":163},{"name":"is_assume","line":167},{"name":"severity_str","line":171},{"name":"clock_mode_str","line":175},{"name":"is_posedge","line":179},{"name":"validate_assertion","line":185},{"name":"validate_cover","line":199},{"name":"validate_assume","line":210},{"name":"validate_config","line":221}],"imports":[],"terms":["fpga","formal","assert","kind","severity","clock","mode","max","assertions","cover","points","assume","point","config","depth","timeout","immediate","concurrent","str","posedge","validate","assertion"]},{"id":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_routing.t27","health":"warn","module":"AdaptiveRouting"}],"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","symbols":[{"name":"MAX_PATHS","line":7},{"name":"METRIC_LATENCY","line":8},{"name":"METRIC_HOPS","line":9},{"name":"METRIC_BANDWIDTH","line":10},{"name":"UPDATE_INTERVAL","line":11},{"name":"create_path_metrics","line":14},{"name":"get_latency","line":21},{"name":"get_hops","line":25},{"name":"get_bandwidth","line":29},{"name":"get_load","line":33},{"name":"create_selection_state","line":38},{"name":"get_primary_path","line":45},{"name":"get_backup_path","line":49},{"name":"get_metric_type","line":53},{"name":"get_last_update","line":57},{"name":"create_path_metrics_array","line":62},{"name":"get_path_metrics","line":69},{"name":"calculate_score","line":77},{"name":"find_best_path","line":97},{"name":"needs_update","line":125},{"name":"update_selection","line":132},{"name":"change_metric_type","line":138},{"name":"is_path_congested","line":146},{"name":"find_least_congested","line":151}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","adaptive","routing","max","paths","metric","latency","hops","bandwidth","interval","create","path","metrics","get","load","selection","state","primary","backup","array","calculate","score","find","best","congested","least"]},{"id":"095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bootrom.t27","health":"ok","module":"BootROM"}],"description":"t27/specs/fpga/bootrom.t27 T27 Boot ROM Specification Boot sequence stages, init vectors, integrity checksum Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"BootStage","line":10},{"name":"boot_stage","line":17},{"name":"stage_end","line":26},{"name":"BootConfig","line":30},{"name":"boot_config","line":38},{"name":"validate_config","line":48},{"name":"config_end","line":55},{"name":"fits","line":59}],"imports":[],"terms":["fpga","bootrom","boot","rom","stage","end","config","validate","fits"]},{"id":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 2 Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":17},{"name":"PHI_SQ","line":21},{"name":"PhiSplitResult","line":40},{"name":"phi_split","line":47},{"name":"available","line":48},{"name":"phi_sq","line":49},{"name":"exp_raw","line":52},{"name":"exp_bits","line":53},{"name":"mant_bits","line":56},{"name":"ratio","line":58},{"name":"phi_dist","line":59},{"name":"FormatComparison","line":73},{"name":"verify_phi_split","line":84},{"name":"golden_self_similarity_proof","line":206},{"name":"optimal_rounding_proof","line":226},{"name":"sacred_connection","line":250},{"name":"compute_phi_distance","line":258},{"name":"ratio","line":259},{"name":"is_phi_optimal","line":263},{"name":"recommend_format","line":267},{"name":"round","line":275},{"name":"abs","line":293},{"name":"pow","line":300},{"name":"ln_approx","line":361},{"name":"exp_approx","line":380},{"name":"floor","line":410}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["chips","euler","numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","golden","self","similarity","proof","optimal","rounding","sacred","connection","compute","distance","recommend","round","abs","pow","approx","floor"]},{"id":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_minimal.t27","health":"warn","module":"BoardMinimalXC7A100T"}],"description":"t27/specs/boards/xc7a100t_minimal.t27 QMTECH XC7A100T-CSG324 Minimal Board Profile Heartbeat LED + UART loopback, prjxray-verified pins only","symbols":[{"name":"BOARD_NAME","line":11},{"name":"FPGA_FAMILY","line":12},{"name":"FPGA_PART","line":13},{"name":"CLOCK_FREQ_HZ","line":14},{"name":"CLOCK_PERIOD_NS","line":15},{"name":"IO_STANDARD","line":16},{"name":"CONFIG_VOLTAGE","line":17},{"name":"NUM_LEDS","line":19},{"name":"HAS_UART","line":20},{"name":"HAS_SPI","line":21},{"name":"HAS_MAC_DEBUG","line":22},{"name":"PinAssignment","line":24},{"name":"ClockConstraint","line":34},{"name":"PIN_CLK","line":41},{"name":"PIN_RST_N","line":51},{"name":"PIN_UART_RX","line":61},{"name":"PIN_UART_TX","line":71},{"name":"PIN_LED_0","line":81},{"name":"PIN_LED_1","line":91},{"name":"PIN_LED_2","line":101},{"name":"PIN_LED_3","line":111},{"name":"PIN_LED_4","line":121},{"name":"PIN_LED_5","line":131},{"name":"PIN_LED_6","line":141},{"name":"PIN_LED_7","line":151},{"name":"CLOCK_SYS","line":161},{"name":"count_pins","line":176},{"name":"count_clocks","line":180},{"name":"count_leds","line":184},{"name":"has_uart","line":188},{"name":"has_spi","line":192},{"name":"is_prjxray_verified","line":196},{"name":"find_pin_by_port","line":212}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9}],"terms":["boards","xc7a100t","minimal","board","fpga","family","part","clock","freq","period","standard","config","voltage","num","leds","uart","spi","mac","debug","pin","assignment","constraint","clk","rst","led","sys","count","pins","clocks","prjxray","verified","find","port"]},{"id":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sources":[{"repo":"ghashtag/tt-trinity-gamma","path":"tt-trinity-gamma/specs/numeric/tri_net_formats.t27","health":"warn","module":"TriNetFormats"}],"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","symbols":[{"name":"FormatCategory","line":29},{"name":"GF64Format","line":53},{"name":"GF128Format","line":64},{"name":"GF256Format","line":75},{"name":"GF512Format","line":94},{"name":"GF1024Format","line":105},{"name":"FP32Format","line":120},{"name":"FP16Format","line":130},{"name":"BF16Format","line":141},{"name":"FP8E4M3Format","line":156},{"name":"FP8E5M2Format","line":167},{"name":"Int4Format","line":182},{"name":"Int8Format","line":191},{"name":"NF4_LEVELS","line":213},{"name":"NF4Format","line":220},{"name":"Posit16Format","line":244},{"name":"Binary16Format","line":262},{"name":"FormatDescriptor","line":276},{"name":"TRI_NET_FORMATS","line":290},{"name":"get_format_by_name","line":548},{"name":"get_format_by_bits","line":557},{"name":"get_phi_optimal_format","line":569},{"name":"format_to_f32","line":583},{"name":"f32_to_format","line":599},{"name":"gf_to_f32","line":619},{"name":"sign","line":621},{"name":"exp_mask","line":622},{"name":"mant_mask","line":623},{"name":"exp_biased","line":624},{"name":"mant","line":625},{"name":"exp_unbiased","line":633},{"name":"max_mant","line":640},{"name":"mant_normalized","line":641},{"name":"value","line":647},{"name":"f32_to_gf","line":655},{"name":"sign","line":660},{"name":"abs_val","line":661},{"name":"exp_unbiased","line":664},{"name":"max_exp","line":668},{"name":"max_mant","line":674},{"name":"normalized","line":675},{"name":"frac","line":676},{"name":"mant","line":677},{"name":"clamped_mant","line":678},{"name":"ieee754_to_f32","line":689},{"name":"f32_to_ieee754","line":700},{"name":"posit_to_f32","line":715},{"name":"f32_to_posit","line":721},{"name":"int_to_f32","line":731},{"name":"sign_bit","line":733},{"name":"magnitude","line":734},{"name":"max_val","line":735},{"name":"f32_to_int","line":743},{"name":"max_val","line":744},{"name":"min_val","line":745},{"name":"nf4_to_f32","line":764},{"name":"index","line":765},{"name":"f32_to_nf4","line":769},{"name":"dist","line":775},{"name":"floor_log2","line":790},{"name":"pow","line":804},{"name":"is_integer","line":815},{"name":"ln_val","line":839},{"name":"ln_approx","line":843},{"name":"t","line":851},{"name":"t2","line":852},{"name":"t3","line":853},{"name":"exp_approx","line":858},{"name":"abs","line":883},{"name":"golden_fmts","line":1020}],"imports":[{"name":"math::constants","line":20},{"name":"math::sacred_physics","line":21},{"name":"numeric::goldenfloat_family","line":22}],"terms":["gamma","numeric","net","formats","format","category","gf64format","gf128format","gf256format","gf512format","gf1024format","fp32format","fp16format","bf16format","fp8e4m3format","fp8e5m2format","int4format","int8format","nf4","levels","nf4format","posit16format","binary16format","descriptor","get","bits","phi","optimal","f32","sign","exp","mask","mant","biased","unbiased","max","normalized","abs","val","frac","clamped","ieee754","posit","int","bit","magnitude","min","index","dist","floor","log2","pow","integer","approx","golden","fmts"]},{"id":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hir.t27","health":"warn","module":"Hir"}],"description":"t27/specs/fpga/hir.t27 Hardware Intermediate Representation (HIR) for Trinity T27 Decouples .t27 spec semantics from Verilog/SystemVerilog emission Uses flat arrays + count fields (parser-compatible, no Vec/generics)","symbols":[{"name":"MAX_PORTS","line":12},{"name":"MAX_SIGNALS","line":13},{"name":"MAX_ASSIGNS","line":14},{"name":"MAX_INSTANCES","line":15},{"name":"MAX_ERRORS","line":16},{"name":"Edge","line":20},{"name":"PortDir","line":28},{"name":"SignalKind","line":36},{"name":"Port","line":43},{"name":"Signal","line":54},{"name":"Assign","line":64},{"name":"Instance","line":71},{"name":"HirModule","line":78},{"name":"MemKind","line":98},{"name":"MemPortMode","line":106},{"name":"MAX_MEMS","line":114},{"name":"MAX_MEM_PORTS","line":115},{"name":"MemPort","line":117},{"name":"Mem","line":124},{"name":"empty_mem_port","line":134},{"name":"empty_mem","line":143},{"name":"make_mem","line":155},{"name":"mem_add_port","line":167},{"name":"mem_total_bits","line":181},{"name":"mem_bram18_count","line":185},{"name":"BRAM18_BITS","line":186},{"name":"total","line":187},{"name":"CdcStrategy","line":196},{"name":"MAX_CLOCK_DOMAINS","line":205},{"name":"ClockDomain","line":207},{"name":"empty_clock_domain","line":215},{"name":"make_clock_domain","line":225},{"name":"BusKind","line":237},{"name":"MAX_BUS_PORTS","line":246},{"name":"BusPort","line":248},{"name":"empty_bus_port","line":257},{"name":"make_bus_port","line":268},{"name":"bus_port_total_signals","line":279},{"name":"empty_port","line":293},{"name":"empty_signal","line":304},{"name":"empty_assign","line":314},{"name":"empty_instance","line":318},{"name":"empty_module","line":324},{"name":"make_port","line":344},{"name":"make_signal","line":355},{"name":"add_port","line":367},{"name":"add_signal","line":376},{"name":"add_assign","line":385},{"name":"add_instance","line":394},{"name":"add_mem","line":403},{"name":"add_clock_domain","line":412},{"name":"add_bus_port","line":421},{"name":"port_count","line":432},{"name":"signal_count","line":436},{"name":"assign_count","line":440},{"name":"has_clock_port","line":444},{"name":"has_reset_port","line":455},{"name":"total_port_bits","line":466},{"name":"validate_module","line":478}],"imports":[],"terms":["fpga","hir","max","ports","signals","assigns","instances","edge","port","dir","signal","kind","assign","instance","mem","mode","mems","empty","make","total","bits","bram18","count","cdc","strategy","clock","domains","domain","bus","reset","validate"]},{"id":"0aa2fa4008f17505844152d0cd16db6c8c4ba0905212a0a51f5368e8e9708c3e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lockfree_stack.t27","health":"ok","module":"TriLockfreeStack"}],"description":"t27/specs/","symbols":[{"name":"LFNode","line":13},{"name":"LockFreeStack","line":18},{"name":"init","line":27},{"name":"push","line":32},{"name":"pop","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","lockfree","stack","lfnode","lock","free","init","push","pop"]},{"id":"0b5f7bff39da7f29b90ff5ff965bd07cdf1ffc1bb523a81cc03ca617fa57163a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/byte_utils.t27","health":"ok","module":"ByteUtils"}],"description":"Byte utilities (wire.t27 pattern)","symbols":[{"name":"get_bit","line":7},{"name":"low_nibble","line":28},{"name":"high_nibble","line":33},{"name":"combine_nibbles","line":38},{"name":"swap_nibbles","line":43}],"imports":[{"name":"base::types","line":4}],"terms":["net","byte","utils","get","bit","low","nibble","high","combine","nibbles","swap"]},{"id":"0c16b016c5c35f24136b691fa81b692f7d34cdce64d4b609d7ac286b9a271bcb","sources":[{"repo":"ghashtag/t27","path":"specs/auth/config.t27","health":"ok","module":"AuthConfig"}],"description":"specs/auth/config.t27 Authentication Configuration Storage","symbols":[{"name":"AuthType","line":14},{"name":"Oauth","line":25},{"name":"Api","line":39},{"name":"WellKnown","line":49},{"name":"Info","line":60},{"name":"get","line":67},{"name":"all","line":72},{"name":"set","line":77},{"name":"remove","line":82},{"name":"exists","line":87},{"name":"clear","line":92},{"name":"AuthConfigError","line":101},{"name":"to_oauth","line":111},{"name":"to_api","line":116},{"name":"to_well_known","line":121},{"name":"from_oauth","line":126},{"name":"from_api","line":131},{"name":"from_well_known","line":136},{"name":"get_type","line":141},{"name":"PROVIDER_OPENCODE","line":149},{"name":"PROVIDER_ANTHROPIC","line":150},{"name":"PROVIDER_OPENAI","line":151},{"name":"PROVIDER_GOOGLE","line":152},{"name":"PROVIDER_GOOGLE_VERTEX","line":153},{"name":"PROVIDER_GITHUB_COPILOT","line":154},{"name":"PROVIDER_AMAZON_BEDROCK","line":155},{"name":"PROVIDER_AZURE","line":156},{"name":"PROVIDER_OPENROUTER","line":157},{"name":"PROVIDER_MISTRAL","line":158},{"name":"PROVIDER_GITLAB","line":159}],"imports":[{"name":"base::types","line":6},{"name":"account::schema","line":7}],"terms":["auth","config","oauth","api","well","known","info","get","set","remove","exists","clear","provider","opencode","anthropic","openai","google","vertex","copilot","amazon","bedrock","azure","openrouter","mistral","gitlab"]},{"id":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/docs_generator.t27","health":"warn","module":"docs_generator"}],"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","symbols":[{"name":"MAX_SECTIONS","line":7},{"name":"MAX_TABLES","line":8},{"name":"MAX_REFERENCES","line":9},{"name":"OUTPUT_BUFFER_SIZE","line":10},{"name":"create_output_format","line":13},{"name":"get_format_id","line":20},{"name":"get_format_version","line":24},{"name":"get_format_compression","line":28},{"name":"get_format_encoding","line":32},{"name":"FORMAT_MARKDOWN","line":37},{"name":"FORMAT_HTML","line":38},{"name":"FORMAT_PDF","line":39},{"name":"FORMAT_TEXT","line":40},{"name":"FORMAT_JSON","line":41},{"name":"create_document_section","line":44},{"name":"get_section_id","line":51},{"name":"get_section_level","line":55},{"name":"get_section_content_length","line":59},{"name":"get_section_subsection_count","line":63},{"name":"create_toc_entry","line":68},{"name":"get_toc_section_id","line":75},{"name":"get_toc_level","line":79},{"name":"get_toc_page_number","line":83},{"name":"get_toc_title_id","line":87},{"name":"generate_markdown_header","line":92},{"name":"generate_html_tag","line":107},{"name":"get_html_tag_type","line":113},{"name":"get_html_content_id","line":117},{"name":"get_html_attributes","line":121},{"name":"TAG_H1","line":126},{"name":"TAG_H2","line":127},{"name":"TAG_H3","line":128},{"name":"TAG_P","line":129},{"name":"TAG_TABLE","line":130},{"name":"TAG_DIV","line":131},{"name":"create_reference_link","line":134},{"name":"get_ref_source","line":141},{"name":"get_ref_target","line":145},{"name":"get_ref_type","line":149},{"name":"get_ref_anchor","line":153},{"name":"LINK_INTERNAL","line":158},{"name":"LINK_EXTERNAL","line":159},{"name":"LINK_API","line":160},{"name":"LINK_EXAMPLE","line":161},{"name":"format_code_block","line":164},{"name":"get_code_block_language","line":170},{"name":"get_code_block_code_id","line":174},{"name":"get_code_block_line_count","line":178},{"name":"create_data_table","line":183},{"name":"get_table_id","line":190},{"name":"get_table_row_count","line":194},{"name":"get_table_col_count","line":198},{"name":"get_table_header_count","line":202},{"name":"generate_table_row","line":207},{"name":"create_index_entry","line":215},{"name":"get_index_term_id","line":222},{"name":"get_index_location","line":226},{"name":"get_index_frequency","line":230},{"name":"get_index_importance","line":234},{"name":"generate_page_layout","line":239},{"name":"get_margin_top","line":246},{"name":"get_margin_bottom","line":250},{"name":"get_margin_left","line":254},{"name":"get_margin_right","line":258},{"name":"calculate_document_stats","line":263},{"name":"generate_document_metadata","line":292},{"name":"get_metadata_title","line":299},{"name":"get_metadata_author","line":303},{"name":"get_metadata_date","line":307},{"name":"get_metadata_version","line":311},{"name":"format_document","line":316},{"name":"generate_complete_document","line":344},{"name":"validate_documentation","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","docs","generator","max","sections","tables","references","buffer","size","create","format","get","compression","encoding","markdown","html","pdf","text","json","document","section","level","content","length","subsection","count","toc","entry","page","title","generate","header","tag","attributes","table","div","reference","link","ref","target","anchor","internal","external","api","example","block","language","data","row","col","index","term","location","frequency","importance","layout","margin","top","bottom","left","right","calculate","stats","metadata","author","date","complete","validate","documentation"]},{"id":"0cf723b0c54a06a9851f0f635f2191829a0c100860d1c12896afa5e4bb856b8a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/memory_primitives.t27","health":"ok","module":"MemoryPrimitives"}],"description":"t27/specs/memory/memory_primitives.t27 Native Memory Primitives Specification Ring 029 — Language-level remember/recall/forget/reflect Inspired by MemPalace associative memory architecture 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"SCOPE_AGENT","line":11},{"name":"SCOPE_SESSION","line":12},{"name":"SCOPE_PERMANENT","line":13},{"name":"MAX_KEY_LEN","line":14},{"name":"MAX_VALUE_LEN","line":15},{"name":"TOMBSTONE","line":16},{"name":"ACTIVE","line":17},{"name":"FORGOTTEN","line":18},{"name":"MemoryCell","line":21},{"name":"remember","line":30},{"name":"recall","line":41},{"name":"forget","line":47},{"name":"reflect_phi_hash","line":54},{"name":"is_agent_scoped","line":62},{"name":"is_permanent","line":67},{"name":"scope_priority","line":72},{"name":"cell_size","line":80}],"imports":[{"name":"base::types","line":9}],"terms":["memory","primitives","scope","session","permanent","max","key","len","tombstone","active","forgotten","cell","remember","recall","forget","reflect","phi","hash","scoped","priority","size"]},{"id":"0dd7fd6cc289560d1997dd2831d004d25892651b7beb65979ecc5973699c4517","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_variant_split.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","takum","variant","split"]},{"id":"0de79f996e3835ee7ef5b68ecb38dc59106fddeda70bb43ac45f63eb27f10003","sources":[{"repo":"ghashtag/t27","path":"specs/brain/neural_gamma.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"ConsciousnessState","line":39}],"imports":[],"terms":["brain","neural","gamma","consciousness","state"]},{"id":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/stream_compute.t27","health":"ok","module":"TrinityMemoryStreamComputeSpec"}],"description":"specs/memory/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is","symbols":[{"name":"TMS_DOT_LANES","line":16},{"name":"TMS_DOT_LANE_BITS","line":17},{"name":"TMS_DOT_LANE_FIELD_BITS","line":18},{"name":"TMS_DOT_DECODED_VALID_BIT","line":19},{"name":"TMS_DOT_CODE_BITS","line":20},{"name":"TMS_DOT_DENSE_CODE_BITS","line":21},{"name":"TMS_DOT_DENSE_CODE_LIMIT","line":22},{"name":"TMS_DOT_BASELINE_CODE_LIMIT","line":23},{"name":"TMS_DOT_ACTIVATION_BITS","line":24},{"name":"TMS_DOT_ACTIVATION_FIELD_BITS","line":25},{"name":"TMS_DOT_ACTIVATION_MIN","line":26},{"name":"TMS_DOT_ACTIVATION_MAX","line":27},{"name":"TMS_DOT_MASK_BITS","line":28},{"name":"TMS_DOT_FULL_MASK","line":29},{"name":"TMS_DOT_EMPTY_MASK","line":30},{"name":"TMS_DOT_GROUP_SUM_MIN","line":31},{"name":"TMS_DOT_GROUP_SUM_MAX","line":32},{"name":"TMS_DOT_ACC_WIDTH_MIN","line":36},{"name":"TMS_DOT_ACC_WIDTH_MAX","line":37},{"name":"TMS_DOT_RUNNER_ACC_WIDTH_MIN","line":38},{"name":"TMS_DOT_DEFAULT_ACC_WIDTH","line":39},{"name":"TMS_DOT_ERROR_RESULT","line":40},{"name":"TMS_DOT_PIPELINE_STAGES","line":45},{"name":"TMS_DOT_ACCEPT_TO_VALID_EDGES","line":46},{"name":"TMS_DOT_ACCEPT_TO_CONSUME_EDGES","line":47},{"name":"TMS_RTL_PACKET_CODE_SHIFT","line":50},{"name":"TMS_RTL_PACKET_ACTIVATION_SHIFT","line":51},{"name":"TMS_RTL_PACKET_MASK_SHIFT","line":52},{"name":"TMS_RTL_PACKET_LAST_BIT","line":53},{"name":"TMS_RTL_PACKET_RESET_BIT","line":54},{"name":"TMS_RTL_PACKET_RESET_PENDING_BIT","line":55},{"name":"TMS_RTL_EXPECTED_RESULT_BITS","line":56},{"name":"TMS_RTL_EXPECTED_ERROR_BIT","line":57},{"name":"TMS_RTL_ERR_ARGUMENT","line":58},{"name":"TMS_RTL_ERR_CAPACITY","line":59},{"name":"TMS_RTL_ERR_OVERFLOW","line":60},{"name":"TMS_RTL_ERR_OUTPUT","line":61},{"name":"TMS_RTL_ERR_MISMATCH","line":62},{"name":"TMS_RTL_ERR_PROCESS","line":63},{"name":"TMS_RTL_ERR_RESOURCE","line":64},{"name":"TMS_STORAGE_CAPACITY_GROUPS","line":69},{"name":"TMS_STORAGE_TRITS_PER_WORD","line":70},{"name":"TMS_STORAGE_MAX_TRITS","line":71},{"name":"TMS_STORAGE_DENSE_CODE_WIDTH","line":72},{"name":"TMS_STORAGE_BASELINE_CODE_WIDTH","line":73},{"name":"TMS_STORAGE_ELEMENT_BITS","line":74},{"name":"TMS_STORAGE_START_TO_WORD0_EDGES","line":75},{"name":"TMS_STORAGE_HAS_BACKPRESSURE","line":76},{"name":"TMS_STORAGE_JOIN_NEEDS_BUFFER","line":77},{"name":"TMS_VIEW_VALID_BIT","line":78},{"name":"TMS_VIEW_MASK_SHIFT","line":79},{"name":"TMS_VIEW_LANE_FIELD_MASK","line":80},{"name":"TMS_JOIN_FIRE_BIT","line":88},{"name":"TMS_JOIN_WORD_READY_BIT","line":89},{"name":"TMS_JOIN_ACT_READY_BIT","line":90},{"name":"TMS_JOIN_IN_VALID_BIT","line":91},{"name":"TMS_JOIN_IN_LAST_BIT","line":92},{"name":"TMS_JOIN_MASK_SHIFT","line":93},{"name":"TMS_JOIN_FULL_MASK","line":94},{"name":"TMS_JOIN_ACTIVATION_BITS","line":95},{"name":"tms_dot_dense_digit","line":98},{"name":"tms_dot_decode","line":106},{"name":"tms_dot_lane_trit","line":124},{"name":"tms_dot_activation","line":131},{"name":"tms_dot_pack_activations","line":138},{"name":"tms_dot_product","line":147},{"name":"tms_dot_group_sum","line":152},{"name":"tms_dot_mask_valid","line":161},{"name":"tms_dot_lane_valid","line":166},{"name":"tms_dot_group_valid","line":171},{"name":"tms_dot_width_supported","line":183},{"name":"tms_dot_runner_width_supported","line":187},{"name":"tms_dot_acc_max","line":191},{"name":"tms_dot_acc_min","line":195},{"name":"tms_dot_next_error","line":199},{"name":"tms_dot_accumulate_ready","line":206},{"name":"tms_dot_in_ready","line":210},{"name":"tms_dot_encoded_bits","line":215},{"name":"tms_rtl_packet_word","line":221},{"name":"tms_rtl_expected_word","line":234},{"name":"tms_rtl_packet_count","line":240},{"name":"tms_storage_words","line":247},{"name":"tms_storage_last_mask","line":251},{"name":"tms_storage_config_ok","line":256},{"name":"tms_storage_busy","line":260},{"name":"tms_storage_load_ready","line":264},{"name":"tms_storage_word_edge","line":270},{"name":"tms_storage_idle_edge","line":274},{"name":"tms_view_pack","line":279},{"name":"tms_storage_holds","line":292},{"name":"tms_join_mask","line":295},{"name":"tms_join_word","line":299}],"imports":[],"terms":["dmitrii","memory","stream","compute","tms","dot","lanes","lane","bits","field","decoded","valid","bit","dense","limit","baseline","activation","min","max","mask","full","empty","group","sum","acc","width","runner","default","pipeline","stages","accept","edges","consume","rtl","packet","shift","reset","expected","err","argument","capacity","overflow","mismatch","process","resource","storage","groups","trits","per","word","element","start","word0","backpressure","join","buffer","view","fire","ready","act","digit","decode","trit","pack","activations","product","supported","accumulate","encoded","count","words","config","busy","load","edge","idle","holds"]},{"id":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward.t27","health":"ok","module":"FeedForward"}],"description":"t27/specs/ml/transformer/feed_forward.t27","symbols":[{"name":"PHI","line":16},{"name":"INV_PHI","line":17},{"name":"PHI_SQUARED","line":18},{"name":"DEFAULT_EXPANSION_FACTOR","line":19},{"name":"PHI_EXPANSION_FACTOR","line":20},{"name":"DEFAULT_DROPOUT","line":21},{"name":"DEFAULT_USE_BIAS","line":22},{"name":"FFNConfig","line":28},{"name":"FFNState","line":38},{"name":"ActivationType","line":47},{"name":"FFNGradients","line":56},{"name":"FFNForwardResult","line":64},{"name":"init","line":76},{"name":"get_intermediate_size","line":88},{"name":"forward","line":95},{"name":"backward","line":105},{"name":"update","line":119},{"name":"apply_activation","line":128},{"name":"activation_backward","line":138},{"name":"dropout","line":148},{"name":"phi_init_weights","line":159},{"name":"get_parameter_count","line":166}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"numeric::gf16","line":8},{"name":"ml::activation::gelu","line":9},{"name":"ml::layers::dense","line":10}],"terms":["transformer","feed","forward","phi","inv","squared","default","expansion","factor","dropout","bias","ffnconfig","ffnstate","activation","ffngradients","ffnforward","init","get","intermediate","size","backward","apply","weights","parameter","count"]},{"id":"0e5ec1ea4a0131131475a2a3bdbd7877da2e335d7c37fb23d2fa3709bc7e6bad","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/client.t27","health":"ok","module":"lsp-client"}],"description":"lsp/client.t27 — LSP Client Configuration and Capabilities Client-side protocol, capabilities, and configuration management","symbols":[{"name":"CLIENT_NAME","line":21},{"name":"CLIENT_VERSION","line":24},{"name":"MAX_MESSAGE_SIZE","line":27},{"name":"REQUEST_TIMEOUT_MS","line":30},{"name":"MAX_CONCURRENT_REQUESTS","line":33},{"name":"ClientCapabilities","line":40},{"name":"TextDocumentSyncCapability","line":60},{"name":"CompletionCapability","line":67},{"name":"CompletionItemCapability","line":75},{"name":"CompletionItemKindCapability","line":88},{"name":"CompletionItemTagCapability","line":93},{"name":"InsertTextModeCapability","line":98},{"name":"DiagnosticCapability","line":103},{"name":"DiagnosticTagCapability","line":110},{"name":"InitializationOptions","line":115},{"name":"TraceValue","line":126},{"name":"WorkspaceFolder","line":133},{"name":"TextDocumentSyncOptions","line":139},{"name":"SaveOptions","line":148},{"name":"ConfigurationItem","line":153},{"name":"ClientConfiguration","line":159},{"name":"WorkDoneProgress","line":166},{"name":"ProgressValue","line":172},{"name":"WorkDoneProgressBegin","line":179},{"name":"WorkDoneProgressReport","line":187},{"name":"WorkDoneProgressEnd","line":194},{"name":"LogTraceParams","line":199},{"name":"client_capabilities_default","line":209},{"name":"init_options_create","line":254},{"name":"text_document_sync_options_create","line":267},{"name":"work_done_progress_begin_create","line":278},{"name":"work_done_progress_report_create","line":288},{"name":"work_done_progress_end_create","line":297},{"name":"log_trace_create","line":304},{"name":"trace_is_enabled","line":312},{"name":"trace_to_string","line":317},{"name":"completion_has_snippet_support","line":326},{"name":"client_has_workspace_folders","line":331},{"name":"caps","line":340},{"name":"init","line":346},{"name":"opts","line":351},{"name":"progress","line":357},{"name":"report","line":362},{"name":"end","line":368},{"name":"caps","line":383}],"imports":[],"terms":["lsp","client","max","size","request","timeout","concurrent","requests","capabilities","text","document","sync","capability","completion","item","kind","tag","insert","mode","diagnostic","initialization","options","trace","workspace","folder","save","configuration","work","done","progress","begin","report","end","log","params","default","init","create","enabled","snippet","support","folders","caps","opts"]},{"id":"0e7c3b187e4d0ea8c189c50aa2a09cc2c41c6dc77a595b63a0171e7227ca977a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/phi_rule_verification.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","phi","rule","verification"]},{"id":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/verification/build_verify.t27","health":"ok","module":"BuildVerify"}],"description":"t27/specs/fpga/verification/build_verify.t27 FPGA Build Verification Spec Validates all FPGA specs can generate Verilog and pass structural checks","symbols":[{"name":"TOTAL_FPGA_MODULES","line":8},{"name":"TOTAL_TESTBENCHES","line":9},{"name":"TOTAL_BOARD_CONFIGS","line":10},{"name":"TOTAL_SPECS","line":11},{"name":"NUM_BACKENDS","line":12},{"name":"VERILOG_FILES","line":13},{"name":"ModuleReport","line":15},{"name":"BuildResult","line":23},{"name":"check_build_clean","line":35},{"name":"coverage_percent","line":39}],"imports":[],"terms":["fpga","verification","build","verify","total","modules","testbenches","board","configs","num","backends","verilog","report","clean","percent"]},{"id":"0f2dee7f0f339db9e0886aff03fe2bd45a8afcd58b09ca45379736f14a384a94","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_cli.t27","health":"warn","module":"TrinityMemoryTensorPackCLI"}],"description":"Native TensorPack CLI JSON contracts, independent of file/terminal services. Workspace, value buffers and output JSON are caller-owned scratch. Callers publish output only after success; no routine allocates or opens a path.","symbols":[{"name":"tm_tpc_allowed_key","line":5},{"name":"tm_tp_parse_tensor_json","line":14},{"name":"tm_tp_encode_input_json","line":113},{"name":"tm_tpc_shape","line":123},{"name":"tm_tpc_scales","line":128},{"name":"tm_tpc_axes","line":133},{"name":"tm_tpc_descriptor_json","line":141},{"name":"tm_tp_inspect_json","line":150},{"name":"tm_tp_export_json","line":178}],"imports":[],"terms":["dmitrii","memory","tensorpack","cli","tensor","pack","tpc","allowed","key","parse","json","encode","shape","scales","axes","descriptor","inspect"]},{"id":"106dee6126f578973c0b1b47f58ea10a7ee94213d8515635272981c1dba6bc72","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_trace_tb.t27","health":"ok","module":"VCD_Trace_Testbench"}],"description":"t27/specs/fpga/testbench/vcd_trace_tb.t27 VCD Trace Testbench Tests waveform dump generation, signal hierarchy, and timestamp management","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_SIGNALS","line":11},{"name":"TIMESTAMP_RES_PS","line":12},{"name":"tick","line":24},{"name":"reset","line":30},{"name":"advance_time","line":38},{"name":"format_timestamp","line":47}],"imports":[{"name":"fpga::vcd_trace::VcdTrace","line":8}],"terms":["fpga","testbench","vcd","trace","clk","period","max","signals","timestamp","res","tick","reset","advance","time","format"]},{"id":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/placement.t27","health":"ok","module":"Placement"}],"description":"t27/specs/fpga/placement.t27 T27 Placement Constraint Generator Specification Auto-generates placement hints and routing constraints from HIR connectivity Groups related modules into floorplan regions for optimal routing Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"RegionKind","line":13},{"name":"PlacementRegion","line":23},{"name":"region","line":32},{"name":"logic_cluster","line":43},{"name":"bram_column","line":47},{"name":"dsp_column","line":51},{"name":"PlacementHint","line":57},{"name":"hint","line":63},{"name":"RouteConstraint","line":73},{"name":"route_constraint","line":80},{"name":"Floorplan","line":91},{"name":"floorplan","line":96},{"name":"region_width","line":105},{"name":"region_height","line":112},{"name":"region_area","line":119},{"name":"regions_overlap","line":123},{"name":"validate_region","line":129},{"name":"validate_hint","line":143}],"imports":[],"terms":["fpga","placement","region","kind","logic","cluster","bram","column","dsp","hint","route","constraint","floorplan","width","height","area","regions","overlap","validate"]},{"id":"108c86be1cffdb12c2a8bf7aed0bbc9beb9488044e64ea8eb53e5648ba4603cc","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_approx_activation.t27","health":"ok","module":"GeluApprox"}],"description":"t27/specs/","symbols":[{"name":"SQRT_2_OVER_PI","line":13},{"name":"TANH_COEF","line":14},{"name":"GELUApproxConfig","line":20},{"name":"forward","line":29},{"name":"forward_batch","line":34},{"name":"derivative","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","gelu","approx","sqrt","over","tanh","coef","geluapprox","config","forward","batch","derivative"]},{"id":"10f3a57949cd306778440ba53ea2a3e3172b103b4918dc5723b3e52402c8b450","sources":[{"repo":"ghashtag/t27","path":"specs/physics/formula_registry.t27","health":"ok","module":null}],"description":"Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md SSOT for Trinity formula discovery","symbols":[{"name":"PHI","line":9},{"name":"PI","line":10},{"name":"E","line":11},{"name":"GA","line":12},{"name":"gamma_phi","line":19},{"name":"ln2_over_pi","line":24},{"name":"ln3_over_pi","line":29},{"name":"alpha_inv_pellis_exact","line":34},{"name":"alpha_s","line":39},{"name":"tc_qcd","line":44},{"name":"neutron_proton_ratio","line":53},{"name":"muon_electron_ratio","line":59},{"name":"electron_mass_mev","line":68},{"name":"muon_mass_mev","line":73},{"name":"tau_mass_mev","line":78},{"name":"koide_q","line":83},{"name":"bottom_mass_gev","line":92},{"name":"top_mass_gev","line":97},{"name":"strange_down_ratio","line":102},{"name":"theta_cabibbo","line":111},{"name":"v_cb","line":116},{"name":"v_us","line":121},{"name":"sin2theta23_pmns","line":130},{"name":"delta_cp_pmns","line":135},{"name":"sin2theta12_pmns","line":140},{"name":"lambda_exponent","line":149},{"name":"higgs_z_ratio","line":158},{"name":"v_ud_chimera","line":167},{"name":"v_cs_chimera","line":172},{"name":"v_td_chimera","line":177},{"name":"sin2theta12_chimera","line":182},{"name":"delta_cp_rad","line":187},{"name":"strange_muon_ratio","line":192},{"name":"bottom_top_ratio","line":197},{"name":"omega_b_chimera","line":202},{"name":"ns_chimera","line":207}],"imports":[],"terms":["physics","formula","registry","phi","gamma","ln2","over","ln3","alpha","inv","pellis","exact","qcd","neutron","proton","ratio","muon","electron","mass","mev","tau","koide","bottom","gev","top","strange","down","theta","cabibbo","sin2theta23","pmns","delta","sin2theta12","lambda","exponent","higgs","chimera","rad","omega"]},{"id":"1124bf874a7c7e17b3b9071c22bc495df4577b04bc7a8342786f7ff7373ec01e","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_encoding.t27","health":"warn","module":null}],"description":"specs/isa/ternary_encoding.t27 Ternary encoding: values in {-1, 0, +1}","symbols":[],"imports":[],"terms":["isa","ternary","encoding"]},{"id":"115d7c0a183cd6796d30efbbb49c4f1d5f9088f546b41995c911aadb5a9100d5","sources":[{"repo":"ghashtag/t27","path":"specs/brain/cognitive_loop.t27","health":"ok","module":"brain-cognitive-loop"}],"description":"cognitive_loop.t27 -- sense -> evaluate -> decide -> act -> consolidate (spec-first) Phase timing contract lives in phi_timing.t27; this module holds loop identity constants.","symbols":[{"name":"COGNITIVE_PHASE_COUNT","line":8},{"name":"cognitive_loop_phase_count","line":10}],"imports":[],"terms":["brain","cognitive","loop","phase","count"]},{"id":"1170d7c70d5aecf0a7e7ce2431db31afd55ffa2914c2f59b055983e8078edaf8","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_cs_bridge.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","lqg","bridge"]},{"id":"11ac7c14718e579c25d261b34dcc597ce5b329311700ce49635031c766bfacbf","sources":[{"repo":"ghashtag/t27","path":"specs/physics/p2_brain_physics.t27","health":"ok","module":"P2Brain"}],"description":"Module: P2 Brain -- Physics Engine Framework","symbols":[{"name":"PHI","line":18},{"name":"PHI_SQ","line":19},{"name":"PHI_INV","line":20},{"name":"PHI_INV_SQ","line":21},{"name":"TRINITY_PHI_SQ_INV","line":24},{"name":"PLANCK","line":27},{"name":"ALPHA_FS","line":30},{"name":"LQGCSymbol","line":37},{"name":"LQGCState","line":40},{"name":"stateInit","line":53},{"name":"next","line":57},{"name":"su2Entropy","line":65},{"name":"Simulation","line":72},{"name":"SimulationMethod","line":79}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10},{"name":"numeric::formats","line":11}],"terms":["physics","brain","p2brain","phi","inv","planck","alpha","lqgcsymbol","lqgcstate","state","init","su2entropy","simulation","method"]},{"id":"11fb3a5964fa96b10be4a51ab9f4e85376215de251847c77452e8bd711635086","sources":[{"repo":"ghashtag/t27","path":"examples/fpga/qmtech_minimal/design.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["examples","fpga","qmtech","minimal","design"]},{"id":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/fpga_emission.t27","health":"warn","module":"fpga_emission"}],"description":"fpga_emission.t27 0 FPGA Module Verilog Emission Generates FPGA-specific Verilog modules from .t27 specs","symbols":[{"name":"FpgaCodegen","line":10},{"name":"new","line":18},{"name":"emit_fpga_top","line":31},{"name":"emit_uart_module","line":160},{"name":"baud_divisor","line":178},{"name":"emit_spi_module","line":384},{"name":"emit_mac_module","line":583},{"name":"emit","line":709},{"name":"emit_line","line":715},{"name":"emit_int","line":727},{"name":"indent","line":733},{"name":"dedent","line":739},{"name":"int_to_str","line":748},{"name":"digit","line":758},{"name":"tmp","line":767},{"name":"emit_bridge_module","line":780},{"name":"emit_memory_module","line":850},{"name":"emit_fifo_module","line":896},{"name":"emit_axi4_module","line":960},{"name":"emit_apb_bridge_module","line":1054},{"name":"emit_gf16_accel_module","line":1120},{"name":"emit_generic_module","line":1198},{"name":"port","line":1210},{"name":"dir_str","line":1211},{"name":"sig","line":1236},{"name":"kind_str","line":1237},{"name":"assign","line":1260},{"name":"mem","line":1276},{"name":"style","line":1278},{"name":"inst","line":1298},{"name":"emit_testbench_from_hir","line":1320},{"name":"port","line":1343},{"name":"port","line":1368},{"name":"emit_xdc_from_hir","line":1413},{"name":"period_ps","line":1420},{"name":"port","line":1440},{"name":"bp","line":1459},{"name":"cd","line":1491},{"name":"emit_conformance_testbench","line":1514},{"name":"emit_conformance_check","line":1557},{"name":"emit_conformance_check_masked","line":1590},{"name":"emit_conformance_footer","line":1625},{"name":"emit_uart_conformance_tb","line":1660},{"name":"emit_mac_conformance_tb","line":1740},{"name":"emit_top_conformance_tb","line":1826},{"name":"emit_spi_conformance_tb","line":1888}],"imports":[],"terms":["compiler","codegen","verilog","fpga","emission","emit","top","uart","baud","divisor","spi","mac","int","indent","dedent","str","digit","tmp","bridge","memory","fifo","axi4","apb","gf16","accel","generic","port","dir","sig","kind","assign","mem","style","inst","testbench","hir","xdc","period","conformance","masked","footer"]},{"id":"121ed4a8e32889b770a8ab90b91b3bde9a7b193c66c845aac0130f7ab66c070d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_merkle.t27","health":"ok","module":"TriMerkle"}],"description":"TRI-NET DePIN settlement commitment: a Merkle tree over a payout round's receipts. The settlement publishes ONE root hash; each node proves its (receipt, reward) leaf is under that root with a logarithmic inclusion proof -- exactly Helium's model (store the root on-chain, claim a reward by a Merkle proof). This makes the whole round verifiable by anyone from a single 32-bit root, and lets a node prove it was paid correctly without trusting the settler.","symbols":[{"name":"M_C","line":15},{"name":"rotl","line":17},{"name":"mix32","line":21},{"name":"hpair","line":31},{"name":"leaf_hash","line":38},{"name":"account_leaf","line":47},{"name":"merkle_root8","line":52},{"name":"merkle_step","line":64},{"name":"merkle_verify8","line":74}],"imports":[{"name":"base::types","line":13}],"terms":["net","merkle","rotl","mix32","hpair","leaf","hash","account","root8","step","verify8"]},{"id":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/mha_block.t27","health":"ok","module":"MHABlock"}],"description":"t27/specs/ml/transformer/mha_block.t27","symbols":[{"name":"PHI","line":17},{"name":"DEFAULT_DROPOUT","line":18},{"name":"PHI_RESIDUAL_SCALE","line":19},{"name":"BlockConfig","line":25},{"name":"BlockState","line":35},{"name":"BlockForwardResult","line":43},{"name":"BlockGradients","line":49},{"name":"ResidualConnection","line":55},{"name":"init","line":67},{"name":"forward","line":76},{"name":"forward_with_post_ln","line":92},{"name":"apply_residual_connection","line":106},{"name":"phi_scaled_residual","line":112},{"name":"backward","line":118},{"name":"get_parameter_count","line":133},{"name":"get_flops","line":140},{"name":"create_residual_connection","line":149}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"numeric::gf16","line":8},{"name":"ml::transformer::norm","line":9},{"name":"ml::transformer::multi_head_attn","line":10},{"name":"ml::transformer::feed_forward","line":11}],"terms":["transformer","mha","block","mhablock","phi","default","dropout","residual","scale","config","state","forward","gradients","connection","init","post","apply","scaled","backward","get","parameter","count","flops","create"]},{"id":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/axi4_tb.t27","health":"warn","module":"AXI4_Testbench"}],"description":"t27/specs/fpga/testbench/axi4_tb.t27 AXI4 Bus Testbench Specification Tests AXI4 read/write channels, burst support, and protocol compliance","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"ADDR_WIDTH","line":12},{"name":"DATA_WIDTH","line":13},{"name":"ID_WIDTH","line":14},{"name":"MAX_BURST_LEN","line":15},{"name":"tick","line":60},{"name":"reset","line":65},{"name":"axi_write_single","line":73},{"name":"axi_read_single","line":96}],"imports":[{"name":"fpga::axi4::Axi4","line":8}],"terms":["fpga","testbench","axi4","clk","period","sim","timeout","addr","width","data","max","burst","len","tick","reset","axi","write","single","read"]},{"id":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/verilog_bench_harness.t27","health":"ok","module":"VerilogBenchHarness"}],"description":"t27/specs/test_framework/verilog_bench_harness.t27 Ring 053 -- Verilog Bench Harness for Hardware-in-the-Loop Testing Integration framework for testing GoldenFloat operations against Verilog RTL","symbols":[{"name":"VerilogConfig","line":15},{"name":"default_verilog_config","line":30},{"name":"VerilogTestVector","line":67},{"name":"generate_gf16_test_vectors","line":76},{"name":"generate_random_gf16_vectors","line":161},{"name":"a","line":166},{"name":"b","line":167},{"name":"sum","line":168},{"name":"product","line":169},{"name":"VerilogSimulationResult","line":188},{"name":"run_verilog_simulation","line":198},{"name":"testbench_content","line":200},{"name":"testbench_file","line":201},{"name":"cmd","line":205},{"name":"start_time","line":208},{"name":"result","line":209},{"name":"execution_time","line":210},{"name":"parse_verilog_output","line":223},{"name":"test_name","line":235},{"name":"vector","line":236},{"name":"test_name","line":247},{"name":"vector","line":248},{"name":"diff_info","line":260},{"name":"compare_sw_hw_results","line":273},{"name":"hw_result","line":278},{"name":"goldenfloat_hardware_verification","line":313},{"name":"config","line":314},{"name":"basic_vectors","line":317},{"name":"random_vectors","line":318},{"name":"all_vectors","line":319},{"name":"sim_result","line":322},{"name":"hw_results","line":335},{"name":"sw_results","line":338},{"name":"co_verification_result","line":341},{"name":"coverage_result","line":344},{"name":"generate_verilog_testbench","line":407},{"name":"build_simulation_command","line":412},{"name":"execute_command","line":417},{"name":"find_test_vector","line":422},{"name":"find_matching_result","line":427},{"name":"run_software_goldenfloat_tests","line":432},{"name":"generate_coverage_report","line":437},{"name":"has_basic_operation_tests","line":448},{"name":"has_edge_case_tests","line":449},{"name":"all_vectors_have_inputs","line":450},{"name":"has_claim_ids","line":451},{"name":"has_addition_tests","line":452},{"name":"has_multiplication_tests","line":453},{"name":"has_conversion_tests","line":454},{"name":"CommandResult","line":456}],"imports":[{"name":"test_framework::core","line":7},{"name":"numeric::golden_float","line":8}],"terms":["framework","verilog","bench","harness","config","default","vector","generate","gf16","vectors","random","sum","product","simulation","testbench","content","cmd","start","time","execution","parse","diff","info","compare","results","goldenfloat","hardware","verification","basic","sim","build","execute","find","matching","software","report","operation","edge","case","inputs","claim","ids","addition","multiplication","conversion"]},{"id":"1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_dashboard.t27","health":"warn","module":"health_dashboard"}],"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_METRICS","line":8},{"name":"HEALTH_UPDATE_INTERVAL","line":9},{"name":"ALERT_THRESHOLD","line":10},{"name":"CRITICAL_THRESHOLD","line":11},{"name":"create_health_metric","line":14},{"name":"get_health_node_id","line":21},{"name":"get_health_metric_type","line":25},{"name":"get_health_value","line":29},{"name":"get_health_timestamp","line":33},{"name":"METRIC_CPU","line":38},{"name":"METRIC_MEMORY","line":39},{"name":"METRIC_BANDWIDTH","line":40},{"name":"METRIC_LATENCY","line":41},{"name":"METRIC_PACKET_LOSS","line":42},{"name":"METRIC_ERROR_RATE","line":43},{"name":"METRIC_LINK_QUALITY","line":44},{"name":"METRIC_BATTERY","line":45},{"name":"create_health_score","line":48},{"name":"get_overall_health","line":55},{"name":"get_critical_count","line":59},{"name":"get_warning_count","line":63},{"name":"get_score_timestamp","line":67},{"name":"calculate_node_health","line":72},{"name":"calculate_network_health","line":117},{"name":"detect_critical_issues","line":135},{"name":"detect_warning_issues","line":170},{"name":"generate_health_report","line":205},{"name":"create_health_alert","line":214},{"name":"get_alert_node_id","line":221},{"name":"get_alert_type","line":225},{"name":"get_alert_severity","line":229},{"name":"get_alert_timestamp","line":233},{"name":"ALERT_NODE_DOWN","line":238},{"name":"ALERT_HIGH_CPU","line":239},{"name":"ALERT_LOW_BATTERY","line":240},{"name":"ALERT_LINK_FAILURE","line":241},{"name":"ALERT_CONGESTION","line":242},{"name":"ALERT_SECURITY","line":243},{"name":"generate_alert","line":246},{"name":"analyze_health_trend","line":261},{"name":"find_unhealthy_nodes","line":282},{"name":"calculate_network_trend","line":297},{"name":"generate_summary_report","line":326},{"name":"is_monitoring_active","line":332},{"name":"calculate_uptime","line":343}],"imports":[{"name":"base::types","line":5}],"terms":["net","health","dashboard","max","nodes","metrics","interval","alert","threshold","critical","create","metric","get","node","timestamp","cpu","memory","bandwidth","latency","packet","loss","rate","link","quality","battery","score","overall","count","warning","calculate","network","detect","generate","report","severity","down","high","low","failure","congestion","security","analyze","trend","find","unhealthy","summary","monitoring","active","uptime"]},{"id":"134e2faa0b97395159aeed11d68ef9158bbf0ed0ad51f5c5d68f878a14bd5d98","sources":[{"repo":"ghashtag/t27","path":"specs/math/zamolodchikov_e8.t27","health":"ok","module":"ZamolodchikovE8"}],"description":"t27/specs/math/zamolodchikov_e8.t27 Zamolodchikov E8 Integrable Field Theory -- Mass Spectrum Direction A/E of PROJECT KEPLER->NEWTON In 1989, Zamolodchikov proved that the 2D Ising CFT perturbed by a magnetic field possesses E8 symmetry with exactly 8 stable particles. Their mass ratios are determined EXACTLY by E8 algebra -- not fitted.","symbols":[{"name":"mass_ratio","line":43},{"name":"PHI","line":44},{"name":"PI","line":45},{"name":"mass_spectrum","line":59},{"name":"golden_ratio_m2_m1","line":80},{"name":"golden_ratio_m6_m3","line":84},{"name":"golden_ratio_m7_m4","line":88},{"name":"golden_ratio_m8_m5","line":92},{"name":"pf_eigenvector_to_mass_mapping","line":104},{"name":"MarkDecomposition","line":132},{"name":"decompose_n_as_mark","line":140},{"name":"marks","line":147},{"name":"exponents","line":148},{"name":"cos","line":171},{"name":"abs","line":185}],"imports":[{"name":"math::constants","line":28},{"name":"math::e8_lie_algebra","line":29}],"terms":["math","zamolodchikov","mass","ratio","phi","spectrum","golden","eigenvector","mapping","mark","decomposition","decompose","marks","exponents","cos","abs"]},{"id":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","sources":[{"repo":"ghashtag/t27","path":"specs/math/sacred_physics.t27","health":"ok","module":"SacredPhysics"}],"description":"t27/specs/math/sacred_physics.t27 Strand I 0 Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","symbols":[{"name":"PHI","line":13},{"name":"PHI_INV","line":14},{"name":"PHI_SQ","line":15},{"name":"PHI_INV_SQ","line":16},{"name":"TRINITY","line":20},{"name":"GAMMA_LQG","line":24},{"name":"C_THRESHOLD","line":28},{"name":"T_PRESENT_SEC","line":32},{"name":"T_PRESENT_MS","line":33},{"name":"neural_gamma_center","line":37},{"name":"phi_cubed","line":38},{"name":"sin2_theta12_trinity","line":42},{"name":"phi_neg2","line":43},{"name":"pi2","line":44},{"name":"phi_pow","line":55},{"name":"sacred_gravity","line":95},{"name":"pi_sq","line":96},{"name":"pi_cub","line":97},{"name":"g2","line":98},{"name":"sacred_dark_energy","line":104},{"name":"gamma3","line":105},{"name":"pi2","line":106},{"name":"pi4","line":107},{"name":"pi5","line":108},{"name":"phi8","line":109},{"name":"MAX_REL_ERROR_G","line":118},{"name":"MAX_REL_ERROR_OMEGA","line":119},{"name":"MAX_ABS_ERROR_TRINITY","line":120},{"name":"SacredPhysicsReport","line":122},{"name":"verify_sacred_physics","line":143},{"name":"PI","line":144},{"name":"trinity","line":145},{"name":"trinity_ok","line":146},{"name":"gamma_val","line":148},{"name":"c_thr","line":149},{"name":"t_ms","line":150},{"name":"g_pred","line":152},{"name":"g_meas","line":153},{"name":"g_rel","line":154},{"name":"g_ok","line":155},{"name":"omega_pred","line":157},{"name":"omega_meas","line":158},{"name":"omega_rel","line":159},{"name":"omega_ok","line":160},{"name":"f_gamma","line":162},{"name":"TrinityVerification","line":194},{"name":"verify_trinity","line":206},{"name":"phi_sq","line":207},{"name":"phi_inv_sq","line":208},{"name":"trinity","line":209},{"name":"target","line":210},{"name":"abs_err","line":211},{"name":"rel_err","line":212}],"imports":[{"name":"math::constants","line":7}],"terms":["math","sacred","physics","phi","inv","gamma","lqg","threshold","present","sec","neural","center","cubed","sin2","theta12","neg2","pi2","pow","gravity","cub","dark","energy","gamma3","pi4","pi5","phi8","max","rel","omega","abs","report","verify","val","thr","pred","meas","verification","target","err"]},{"id":"139a9520333fcd83d201956606bfd34d888141e74416c820e3c9b53ae8f2bafc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/oracle_fidelity_map.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","oracle","fidelity","map"]},{"id":"13c4050db1a7cd0c322b0bb87a04fac0ebb9899e607a0e06ae19f14a334a6f52","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/io.t27","health":"ok","module":"TriIo"}],"description":"t27/specs/","symbols":[{"name":"IO","line":13},{"name":"pure","line":23},{"name":"map","line":28},{"name":"bind","line":33},{"name":"perform","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pure","map","bind","perform"]},{"id":"13eea0478571c3e79f3cb8e8796d92342967e70b390bb9022d1af2c88e3972ab","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/memory.t27","health":"ok","module":"memory"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["memory"]},{"id":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf128.t27","health":"ok","module":"GF128"}],"description":"t27/specs/numeric/gf128.t27 GoldenFloat128 - 128-bit φ-structured floating point with extended range NUMERIC-STANDARD-001 Agent 5 (P1) Paper §6.7: Extended range for high-dynamic-range applications","symbols":[{"name":"BITS","line":25},{"name":"SIGN_BITS","line":26},{"name":"EXP_BITS","line":27},{"name":"MANT_BITS","line":28},{"name":"EXP_BIAS","line":31},{"name":"PHI_DISTANCE","line":34},{"name":"GF128","line":38},{"name":"encode","line":46},{"name":"sign","line":51},{"name":"abs_val","line":52},{"name":"exp_unbiased","line":55},{"name":"exp_biased","line":56},{"name":"exp_clamped","line":59},{"name":"mant_low","line":62},{"name":"mant_high","line":63},{"name":"decode","line":72},{"name":"sign","line":73},{"name":"exp_biased","line":74},{"name":"exp_unbiased","line":82},{"name":"mant_low","line":89},{"name":"mant_high","line":90},{"name":"mant_normalized","line":92},{"name":"value","line":98},{"name":"max_value","line":108},{"name":"mant_max","line":110},{"name":"exp_max","line":111},{"name":"min_positive","line":115},{"name":"mant_min","line":117},{"name":"exp_min","line":118},{"name":"epsilon","line":122},{"name":"dynamic_range","line":127},{"name":"validate_format","line":134},{"name":"fmt","line":135},{"name":"is_extended_range","line":142},{"name":"MEMORY_RATIO_VS_FP32","line":156},{"name":"floor_log2_128","line":160},{"name":"extract_mantissa_128_low","line":174},{"name":"normalized","line":176},{"name":"frac","line":177},{"name":"mant_full","line":178},{"name":"extract_mantissa_128_high","line":182},{"name":"normalized","line":184},{"name":"frac","line":185},{"name":"mant_full","line":186},{"name":"mant_to_f64_128","line":190},{"name":"mant_u128","line":191},{"name":"pow2_128","line":195}],"imports":[{"name":"numeric::goldenfloat_family","line":9},{"name":"numeric::phi_ratio","line":10},{"name":"base::testing","line":13},{"name":"base::benchmarking","line":14}],"terms":["chips","euler","fpga","gf128","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","low","high","decode","normalized","max","min","positive","epsilon","dynamic","range","validate","format","fmt","extended","memory","ratio","fp32","floor","log2","extract","mantissa","frac","full","f64","u128","pow2"]},{"id":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri_to_t27_converter.t27","health":"ok","module":"TriToT27Converter"}],"description":"t27/specs/tools/tri_to_t27_converter.t27","symbols":[{"name":"SPDX_HEADER","line":13},{"name":"TRINITY_FOOTER","line":14},{"name":"VERSION","line":15},{"name":"TriSpec","line":21},{"name":"TriType","line":32},{"name":"TriField","line":38},{"name":"TriConstant","line":44},{"name":"TriFunction","line":50},{"name":"FunctionParam","line":57},{"name":"Behavior","line":62},{"name":"Constraint","line":67},{"name":"Route","line":72},{"name":"MigrationStats","line":77},{"name":"parse_tri_file","line":90},{"name":"parse_type_line","line":102},{"name":"convert_type","line":110},{"name":"generate_t27","line":115},{"name":"route_file","line":128},{"name":"write_output","line":155},{"name":"run_migration","line":162},{"name":"snake_to_pascal_case","line":179},{"name":"sanitize_description","line":186},{"name":"is_valid_t27_syntax","line":191}],"imports":[{"name":"base::types","line":6},{"name":"io::file","line":7}],"terms":["converter","t27converter","spdx","header","footer","field","constant","param","behavior","constraint","route","migration","stats","parse","convert","generate","write","snake","pascal","case","sanitize","description","valid","syntax"]},{"id":"157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_queue.t27","health":"ok","module":"PacketQueue"}],"description":"Packet queue - all inline, no intermediate variables","symbols":[{"name":"QUEUE_SIZE","line":6},{"name":"get_count","line":8},{"name":"is_full","line":12},{"name":"is_empty","line":16},{"name":"increment_index","line":20},{"name":"enqueue","line":28},{"name":"dequeue","line":39},{"name":"size","line":50},{"name":"clear","line":54}],"imports":[{"name":"base::types","line":4}],"terms":["net","packet","queue","size","get","count","full","empty","increment","index","enqueue","dequeue","clear"]},{"id":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cache_management.t27","health":"ok","module":"cache_management"}],"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","symbols":[{"name":"MAX_ENTRIES","line":7},{"name":"MAX_CACHE_SIZE","line":8},{"name":"CACHE_HIT_THRESHOLD","line":9},{"name":"EVICTION_AGE","line":10},{"name":"create_cache_entry","line":13},{"name":"get_data_id","line":20},{"name":"get_access_count","line":24},{"name":"get_age","line":28},{"name":"get_entry_size","line":32},{"name":"update_access_count","line":37},{"name":"update_age","line":51},{"name":"find_entry","line":60},{"name":"cache_hit","line":75},{"name":"get_entry","line":86},{"name":"add_entry","line":97},{"name":"find_eviction_candidate","line":141},{"name":"remove_entry","line":172},{"name":"access_cache","line":185},{"name":"age_cache","line":199},{"name":"calculate_hit_rate","line":215},{"name":"calculate_utilization","line":224},{"name":"find_most_popular","line":229},{"name":"find_least_popular","line":249},{"name":"should_prefetch","line":271},{"name":"calculate_efficiency","line":293},{"name":"create_cache_stats","line":306},{"name":"get_hits","line":313},{"name":"get_misses","line":317},{"name":"get_cache_size","line":321},{"name":"get_evictions","line":325},{"name":"update_stats","line":330}],"imports":[{"name":"base::types","line":5}],"terms":["net","cache","management","max","entries","size","hit","threshold","eviction","age","create","entry","get","data","access","count","find","candidate","remove","calculate","rate","utilization","most","popular","least","prefetch","efficiency","stats","hits","misses","evictions"]},{"id":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/posit16.t27","health":"warn","module":"triformat-posit16"}],"description":"posit16.t27 — Posit Type 16 (Type-2 with ES=1, unum 1.0 format) 16-bit posit format with 1 exponent bit (ES=1) and 0 useed bits Alternative name: posit<16,1> Range: ~-3.8e4 to ~3.8e4, precision: ~1-2 significant bits at extremes, ~10 at 1.0","symbols":[{"name":"BITS","line":14},{"name":"ES","line":15},{"name":"NBITS","line":16},{"name":"USEED_BITS","line":17},{"name":"SIGN_SHIFT","line":19},{"name":"REGIME_SHIFT","line":20},{"name":"SIGN_MASK","line":22},{"name":"REGIME_MASK","line":23},{"name":"POS16_ZERO","line":26},{"name":"POS16_NAR","line":27},{"name":"MAX_REGIME","line":30},{"name":"Posit16","line":36},{"name":"PositComponents","line":39},{"name":"posit16_extract_regime","line":54},{"name":"bit","line":63},{"name":"posit16_extract_exponent","line":77},{"name":"bit","line":85},{"name":"exponent_bit","line":94},{"name":"posit16_extract_fraction","line":104},{"name":"bit","line":112},{"name":"skip_bits","line":121},{"name":"fraction_bits","line":122},{"name":"posit16_extract_sign","line":135},{"name":"posit16_extract_components","line":141},{"name":"sign","line":142},{"name":"regime","line":143},{"name":"exponent","line":144},{"name":"fraction","line":145},{"name":"useed_exp","line":149},{"name":"useed","line":150},{"name":"scale","line":151},{"name":"posit16_is_zero","line":168},{"name":"posit16_is_nar","line":174},{"name":"posit16_is_special","line":180},{"name":"posit16_is_finite","line":186},{"name":"posit16_encode_f32","line":196},{"name":"is_negative","line":213},{"name":"abs_value","line":214},{"name":"value_f64","line":217},{"name":"useed","line":220},{"name":"log2_val","line":223},{"name":"fraction_bits","line":246},{"name":"regime_bits_remaining","line":271},{"name":"regime_start","line":276},{"name":"one_pos","line":286},{"name":"exp_pos","line":294},{"name":"fraction_pos","line":301},{"name":"posit16_decode_f32","line":311},{"name":"comps","line":323},{"name":"useed","line":327},{"name":"scale_value","line":328},{"name":"fraction_bits","line":331},{"name":"fraction_value","line":332},{"name":"magnitude","line":337},{"name":"posit16_encode_f64","line":344},{"name":"posit16_decode_f64","line":350},{"name":"f32_val","line":351},{"name":"posit16_add","line":361},{"name":"fa","line":372},{"name":"fb","line":373},{"name":"posit16_sub","line":379},{"name":"fa","line":384},{"name":"fb","line":385},{"name":"posit16_mul","line":391},{"name":"fa","line":399},{"name":"fb","line":400},{"name":"posit16_div","line":406},{"name":"fa","line":417},{"name":"fb","line":418},{"name":"posit16_abs","line":424},{"name":"posit16_neg","line":430},{"name":"posit16_is_equal","line":436},{"name":"posit16_is_greater","line":448},{"name":"sign_a","line":452},{"name":"sign_b","line":453},{"name":"posit16_max","line":466},{"name":"posit16_min","line":472},{"name":"posit16_sqrt","line":478},{"name":"fv","line":489},{"name":"posit16_lerp","line":495},{"name":"fa","line":496},{"name":"fb","line":497},{"name":"result","line":498},{"name":"posit16_scale","line":504},{"name":"fv","line":505},{"name":"posit16_relu","line":511},{"name":"posit16_sigmoid","line":517},{"name":"fv","line":518},{"name":"posit16_quantize_to_int4","line":524},{"name":"fv","line":525},{"name":"max_range","line":526},{"name":"scaled","line":527},{"name":"posit16_from_f32_scaled","line":539},{"name":"posit16_to_f32_scaled","line":545},{"name":"posit16_dot_product","line":551},{"name":"fa","line":555},{"name":"fb","line":556},{"name":"posit16_vector_sum","line":564},{"name":"posit16_vector_mean","line":574},{"name":"sum","line":578}],"imports":[],"terms":["chips","euler","fpga","posit16","triformat","bits","nbits","useed","sign","shift","regime","mask","pos16","zero","nar","max","posit","components","extract","bit","exponent","fraction","skip","exp","scale","special","finite","encode","f32","negative","abs","f64","log2","val","remaining","start","one","pos","decode","comps","magnitude","sub","mul","div","neg","equal","greater","min","sqrt","lerp","relu","sigmoid","quantize","int4","range","scaled","dot","product","vector","sum","mean"]},{"id":"1666853e3ab9026fdff4b541a9d0654d0eb2a6c2cd6cb1062b577ff94415e6a4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/wide_rung_commutativity.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","wide","rung","commutativity"]},{"id":"16dbd9fb40f949a3534c28495f0d68f83ddd460d22f52a89ea70ff33e4c1ee7b","sources":[{"repo":"ghashtag/t27","path":"specs/server/routes.t27","health":"ok","module":"Routes"}],"description":"specs/server/routes.t27 T27 Server Routes Specification Constitutional Law #4: De-Zig-fication","symbols":[{"name":"MAX_ROUTES","line":9},{"name":"HttpMethod","line":11},{"name":"Route","line":19}],"imports":[{"name":"base::types","line":7}],"terms":["routes","max","http","method","route"]},{"id":"174ce53b6240346662c21e07ad294ed99e609910205a4b17ff6782ed7f6d1ccd","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_bitwise.t27","health":"warn","module":"TernaryBitwise"}],"description":"t27/specs/isa/ternary_bitwise.t27 Ternary Bitwise Operations Specification Ring 068 - Bitwise AND, OR, XOR for ternary data Defines bitwise operations on ternary word representations","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"WORD_SIZE","line":21},{"name":"tritwise_and","line":29},{"name":"tritwise_or","line":48},{"name":"tritwise_xor","line":68},{"name":"tritwise_not","line":91},{"name":"tritwise_nand","line":105},{"name":"tritwise_nor","line":117},{"name":"tritwise_xnor","line":129},{"name":"tritwise_mask","line":147},{"name":"tritwise_merge","line":161}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","bitwise","trit","neg","zero","pos","word","size","tritwise","xor","nand","nor","xnor","mask","merge"]},{"id":"17501497f6580c8f2cc5304a94838fbae23c56b4336b3ab36a1d4f67e80e2f5a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_security.t27","health":"ok","module":"RTISecurity"}],"description":"RTI Security — passive perimeter monitoring via mesh RSSI Variant C: commercial security system, no cameras, AI classification phi^2 + phi^-2 = 3","symbols":[{"name":"MAX_ZONES","line":9},{"name":"ZONE_GRID","line":10},{"name":"ALERT_COOLDOWN_MS","line":11},{"name":"SENSITIVITY_LOW","line":12},{"name":"SENSITIVITY_MEDIUM","line":13},{"name":"SENSITIVITY_HIGH","line":14},{"name":"ALERT_NONE","line":17},{"name":"ALERT_INFO","line":18},{"name":"ALERT_WARNING","line":19},{"name":"ALERT_CRITICAL","line":20},{"name":"ALERT_TEST","line":21},{"name":"ALERT_ENTRY_SIZE","line":25},{"name":"ZONE_DEF_SIZE","line":29},{"name":"alert_threshold","line":35},{"name":"classify_alert","line":55},{"name":"in_cooldown","line":70},{"name":"should_suppress","line":75},{"name":"zone_from_coord","line":88},{"name":"in_zone","line":98},{"name":"threat_score","line":115},{"name":"should_escalate","line":126},{"name":"is_night_time","line":134},{"name":"notification_priority","line":145}],"imports":[{"name":"base::types","line":6}],"terms":["net","rti","security","rtisecurity","max","zones","zone","grid","alert","cooldown","sensitivity","low","medium","high","info","warning","critical","entry","size","def","threshold","classify","suppress","coord","threat","score","escalate","night","time","notification","priority"]},{"id":"1778325067543a3ddd5b236906ea2441d1a7b278bd5c9833aa72c55ba6599497","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/octree.t27","health":"ok","module":"TriOctree"}],"description":"t27/specs/","symbols":[{"name":"BBox","line":13},{"name":"OctNode","line":22},{"name":"Octree","line":30},{"name":"init","line":41},{"name":"insert","line":46},{"name":"query","line":51},{"name":"deinit","line":56}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","octree","bbox","oct","node","init","insert","query","deinit"]},{"id":"179da434e72eed1ef8d4afcff8a2d49d9141e6ac4fb20183ec8e35e14b50a3c7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/probability.t27","health":"ok","module":"TriProbability"}],"description":"t27/specs/","symbols":[{"name":"bernoulli","line":14},{"name":"binomial","line":19},{"name":"poisson","line":24},{"name":"normal","line":29},{"name":"exponential","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","probability","bernoulli","binomial","poisson","normal","exponential"]},{"id":"17af82800242d7f0c8de113d3fa990c8fdfb68be93305a676a6332c592c80478","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/statistics.t27","health":"ok","module":"TriStatistics"}],"description":"t27/specs/","symbols":[{"name":"mean","line":14},{"name":"variance","line":19},{"name":"std_dev","line":24},{"name":"median","line":29},{"name":"percentile","line":34},{"name":"correlation","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","statistics","mean","variance","std","dev","median","percentile","correlation"]},{"id":"17c44e7a913a1347d4dcbdad38cc191e92a9d71aeba8ba9a7d21bc0f805b94fe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_cell.t27","health":"ok","module":"Lstm"}],"description":"t27/specs/","symbols":[{"name":"LSTM_DEFAULT_HIDDEN","line":13},{"name":"LSTMConfig","line":19},{"name":"LSTMState","line":24},{"name":"LSTMWeights","line":29},{"name":"forward","line":45},{"name":"init","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","lstm","cell","default","hidden","lstmconfig","lstmstate","lstmweights","forward","init"]},{"id":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hello.t27","health":"ok","module":"MeshHello"}],"description":"HELLO beacon format for mesh neighbor discovery Port from trios-mesh/src/discovery.rs Fixed 3-neighbor heard list (no Vec, arrays await t27#1258)","symbols":[{"name":"MAX_HEARD","line":9},{"name":"HEADER_LEN","line":10},{"name":"u32_byte","line":15},{"name":"hello_byte","line":29},{"name":"u32_from_bytes","line":47},{"name":"parse_hello_src","line":52},{"name":"parse_hello_seq","line":57},{"name":"parse_hello_n_valid","line":62},{"name":"parse_hello_heard0","line":71},{"name":"reports_hearing","line":78}],"imports":[{"name":"base::types","line":6}],"terms":["net","hello","mesh","max","heard","header","len","u32","byte","bytes","parse","seq","valid","heard0","reports","hearing"]},{"id":"18c2c553caf2ae99e899f0610766195d9cc8861526b89b519790a47af0c1bc54","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/reader.t27","health":"ok","module":"TriReader"}],"description":"t27/specs/","symbols":[{"name":"Reader","line":13},{"name":"pure","line":22},{"name":"ask","line":27},{"name":"asks","line":32},{"name":"local","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["reader","pure","ask","asks","local"]},{"id":"18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/energy_aware_routing.t27","health":"warn","module":"EnergyAwareRouting"}],"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","symbols":[{"name":"MAX_PATHS","line":7},{"name":"BATTERY_WEIGHT","line":8},{"name":"HOP_WEIGHT","line":9},{"name":"CRITICAL_BATTERY","line":10},{"name":"create_energy_cost","line":13},{"name":"get_tx_power","line":20},{"name":"get_rx_power","line":24},{"name":"get_processing_cost","line":28},{"name":"get_hop_count_cost","line":32},{"name":"create_path_energy","line":37},{"name":"get_battery_levels","line":44},{"name":"get_total_cost","line":48},{"name":"get_path_valid","line":52},{"name":"get_energy_score","line":56},{"name":"create_energy_array","line":63},{"name":"get_path_energy","line":67},{"name":"calculate_total_energy_cost","line":75},{"name":"calculate_energy_score","line":87},{"name":"is_path_viable","line":102},{"name":"find_energy_optimal_path","line":110},{"name":"find_min_cost_path","line":150},{"name":"select_balanced_path","line":190},{"name":"estimate_path_lifetime","line":231}],"imports":[{"name":"base::types","line":5}],"terms":["net","energy","aware","routing","max","paths","battery","weight","hop","critical","create","cost","get","power","processing","count","path","levels","total","valid","score","array","calculate","viable","find","optimal","min","select","balanced","estimate","lifetime"]},{"id":"18cbfabd05c402e9330be096cd6cd3d6d17ad2ea2b6eb02456dc3c20a9f03814","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_gates.t27","health":"ok","module":"TernaryGates"}],"description":"t27/specs/isa/ternary_gates.t27 Ternary Logic Gates Specification Ring 063 - Basic ternary logic gates for balanced ternary Defines AND, OR, NOT, and other fundamental operations","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"GATE_DELAY_UNIT","line":21},{"name":"ternary_not","line":30},{"name":"ternary_not_with_delay","line":36},{"name":"ternary_min","line":50},{"name":"ternary_and","line":60},{"name":"a_mapped","line":62},{"name":"b_mapped","line":63},{"name":"result_mapped","line":64},{"name":"ternary_max","line":75},{"name":"ternary_or","line":85},{"name":"a_mapped","line":86},{"name":"b_mapped","line":87},{"name":"result_mapped","line":88},{"name":"ternary_consensus","line":98},{"name":"ternary_majority","line":111},{"name":"ternary_any","line":144},{"name":"ternary_all","line":160},{"name":"GateResult","line":174},{"name":"GateTruthTable","line":179},{"name":"vals","line":268},{"name":"vals","line":277},{"name":"vals","line":290},{"name":"vals","line":303},{"name":"left","line":310},{"name":"right","line":311},{"name":"vals","line":322},{"name":"left","line":329},{"name":"right","line":330},{"name":"vals","line":341},{"name":"vals","line":350},{"name":"vals","line":374},{"name":"vals","line":385},{"name":"vals","line":396}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","gates","trit","neg","zero","pos","gate","delay","unit","min","mapped","max","consensus","majority","truth","table","vals","left","right"]},{"id":"18e4d3de481682bb89ef06cca09a13dab14b2e9e5b2faf1de33c0e402b19fe76","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json_writer.t27","health":"warn","module":"TrinityMemoryJsonWriter"}],"description":"Shared bounded JSON writer. Include generated json.h before this header. No heap, no implicit NUL terminator. Check error==0 before using output. Errors are sticky; a failed compound write may leave an incomplete prefix.","symbols":[{"name":"TMJsonWriter","line":5},{"name":"tm_json_writer_init","line":6},{"name":"tm_json_write_byte","line":9},{"name":"tm_json_write_bytes","line":14},{"name":"tm_json_write_u64","line":21},{"name":"tm_json_write_i64","line":33},{"name":"tm_json_write_bool","line":43},{"name":"tm_json_write_null","line":53},{"name":"tm_json_write_quoted","line":57},{"name":"tm_json_write_f64","line":105},{"name":"tm_json_write_tree_inner","line":117},{"name":"tm_json_write_tree","line":163}],"imports":[],"terms":["dmitrii","memory","json","writer","tmjson","init","write","byte","bytes","u64","i64","null","quoted","f64","tree","inner"]},{"id":"18f95f985f5785c432b2a790d1ca5140533ba1b6259aeb5185979e1c6955e1b7","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/batchnorm_layer.t27","health":"ok","module":"Batchnorm"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_EPSILON","line":13},{"name":"DEFAULT_MOMENTUM","line":14},{"name":"BatchNormConfig","line":20},{"name":"BatchNormState","line":28},{"name":"forward","line":38},{"name":"backward","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","batchnorm","layer","default","epsilon","momentum","batch","norm","config","state","forward","backward"]},{"id":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/governance_agent.t27","health":"ok","module":"GovernanceAgent"}],"description":"t27/specs/","symbols":[{"name":"GovernanceAgent","line":13},{"name":"SacredRule","line":22},{"name":"Violation","line":28},{"name":"SacredScore","line":40},{"name":"PatchRequest","line":50},{"name":"PreCommitState","line":62},{"name":"GovernanceWidget","line":70},{"name":"AuditEntry","line":79}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["governance","sacred","rule","violation","score","patch","request","pre","commit","state","widget","audit","entry"]},{"id":"1954284a2f9b5b29dff46df7365664c2337d70054c222bb69019dffeb8631f98","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/lane_l_precheck.t27","health":"warn","module":"sacred-lane_precheck"}],"description":"lane_l_precheck.t27 — Sacred Opcode 0xDF: LUT Lookup Precheck Hardware pre-check for LUT lookup operations Validates lane readiness, checks LUT access permissions, and prepares address","symbols":[{"name":"OP_LUT_LOOKUP","line":13},{"name":"LANE_COUNT","line":15},{"name":"LUT_DEPTH","line":16},{"name":"LUT_ADDR_BITS","line":17},{"name":"LANE_ID_BITS","line":18},{"name":"LANE_IDLE","line":20},{"name":"LANE_READY","line":21},{"name":"LANE_BUSY","line":22},{"name":"LANE_ERROR","line":23},{"name":"CHECK_PASS","line":25},{"name":"CHECK_FAIL","line":26},{"name":"LaneStatus","line":32},{"name":"PrecheckFlags","line":39},{"name":"PrecheckResult","line":47},{"name":"LaneConfig","line":55},{"name":"lane_is_valid","line":68},{"name":"lane_is_ready","line":74},{"name":"lane_is_busy","line":80},{"name":"lane_is_error","line":86},{"name":"lane_is_idle","line":92},{"name":"precheck_lane","line":102},{"name":"precheck_all_lanes","line":138},{"name":"precheck_pass","line":158},{"name":"precheck_fail","line":164},{"name":"precheck_any_pass","line":170},{"name":"precheck_all_pass","line":181},{"name":"precheck_count_passed","line":192},{"name":"precheck_get_ready_lanes","line":204},{"name":"lut_address_valid","line":220},{"name":"lut_address_masked","line":232},{"name":"lut_address_offset","line":238},{"name":"encode_lut_lookup","line":251},{"name":"op","line":253},{"name":"lane","line":254},{"name":"addr","line":255},{"name":"decode_lut_lookup","line":261},{"name":"lane_bits","line":262},{"name":"lut_addr","line":263}],"imports":[],"terms":["chips","euler","fpga","lane","precheck","sacred","lut","lookup","count","depth","addr","bits","idle","ready","busy","pass","fail","status","flags","config","valid","lanes","passed","get","address","masked","offset","encode","decode"]},{"id":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_profiler.t27","health":"warn","module":"performance_profiler"}],"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"MAX_FUNCTIONS","line":8},{"name":"PROFILING_INTERVAL_MS","line":9},{"name":"OVERHEAD_THRESHOLD","line":10},{"name":"create_perf_sample","line":13},{"name":"get_sample_function_id","line":20},{"name":"get_sample_cpu","line":24},{"name":"get_sample_memory","line":28},{"name":"get_sample_timestamp","line":32},{"name":"create_function_profile","line":37},{"name":"get_profile_function_id","line":43},{"name":"get_profile_call_count","line":47},{"name":"get_profile_total_cpu","line":51},{"name":"create_hotspot","line":56},{"name":"get_hotspot_function_id","line":63},{"name":"get_hotspot_score","line":67},{"name":"get_hotspot_rank","line":71},{"name":"get_hotspot_impact","line":75},{"name":"calculate_average_cpu","line":80},{"name":"calculate_average_memory","line":101},{"name":"identify_hotspots","line":122},{"name":"calculate_profiling_overhead","line":151},{"name":"is_overhead_acceptable","line":163},{"name":"create_allocation","line":172},{"name":"get_allocation_id","line":179},{"name":"get_allocation_size","line":183},{"name":"get_allocation_lifetime","line":187},{"name":"get_allocation_pool","line":191},{"name":"track_allocation","line":196},{"name":"calculate_total_memory","line":210},{"name":"detect_memory_leak","line":224},{"name":"create_call_stack_entry","line":238},{"name":"get_stack_depth","line":245},{"name":"get_stack_function_id","line":249},{"name":"get_stack_parent_id","line":253},{"name":"get_stack_cpu_contribution","line":257},{"name":"analyze_call_tree","line":262},{"name":"create_performance_report","line":291},{"name":"get_report_total_cpu","line":298},{"name":"get_report_total_memory","line":302},{"name":"get_report_hotspot_count","line":306},{"name":"get_report_overhead","line":310},{"name":"generate_recommendations","line":315},{"name":"calculate_improvement_opportunity","line":345}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","performance","profiler","max","samples","functions","profiling","interval","overhead","threshold","create","perf","sample","get","cpu","memory","timestamp","profile","call","count","total","hotspot","score","rank","impact","calculate","average","identify","hotspots","acceptable","allocation","size","lifetime","pool","track","detect","leak","stack","entry","depth","parent","contribution","analyze","tree","report","generate","recommendations","improvement","opportunity"]},{"id":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","sources":[{"repo":"ghashtag/t27","path":"specs/pins/parser.t27","health":"warn","module":"PinsParser"}],"description":"t27/specs/pins/parser.t27 Pins Parser for Trinity t27 Parse .t27 pin specifications into Pins IR","symbols":[{"name":"PinToken","line":13},{"name":"AstNode","line":35},{"name":"Parser","line":81},{"name":"new","line":89},{"name":"parse","line":97},{"name":"parse_module","line":101},{"name":"parse_signal_decl","line":131},{"name":"parse_signal_type","line":162},{"name":"parse_pin_location","line":178},{"name":"parse_io_standard","line":196},{"name":"parse_constraint","line":220},{"name":"is_at_end","line":247},{"name":"peek","line":251},{"name":"consume_token","line":255},{"name":"match_token","line":264},{"name":"expect_token","line":274},{"name":"match_keyword","line":282},{"name":"expect_keyword","line":292},{"name":"expect_identifier","line":301},{"name":"expect_string","line":308},{"name":"expect_number","line":315},{"name":"last_string_value","line":322},{"name":"error","line":327},{"name":"ParseError","line":336},{"name":"Lexer","line":342},{"name":"new","line":348},{"name":"tokenize","line":355},{"name":"scan_token","line":373},{"name":"string","line":403},{"name":"number","line":418},{"name":"identifier","line":429},{"name":"advance","line":440},{"name":"peek","line":446},{"name":"match_char","line":450},{"name":"is_at_end","line":459},{"name":"skip_whitespace","line":463},{"name":"LexError","line":471},{"name":"LexErrorKind","line":475},{"name":"parse_pins_spec","line":482}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9},{"name":"pins::ir","line":10}],"terms":["pins","parser","pin","token","ast","node","parse","signal","decl","location","standard","constraint","end","peek","consume","match","expect","keyword","identifier","lexer","tokenize","scan","advance","char","skip","whitespace","lex","kind"]},{"id":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/validation.t27","health":"ok","module":"validation_rules"}],"description":"validation.t27 -- Validation Rules and Invariants TDD and language policy validation for t27 specs","symbols":[{"name":"ValidationResult","line":10},{"name":"validate_tdd_contract","line":21},{"name":"has_test","line":22},{"name":"has_invariant","line":23},{"name":"validate_language_policy","line":63},{"name":"validate_generated_header","line":82},{"name":"validate_spec_structure","line":114},{"name":"has_code","line":125},{"name":"has_data","line":126},{"name":"has_const","line":127},{"name":"validate_push_skill","line":138},{"name":"validate_commit_skill","line":160},{"name":"validate_policy_matrix","line":182},{"name":"kind","line":183},{"name":"artifacts","line":184},{"name":"checkpoints","line":187},{"name":"has_spec","line":188},{"name":"has_docs","line":189},{"name":"checkpoints","line":199},{"name":"has_spec","line":210},{"name":"validate_remote_url","line":225},{"name":"contains_cyrillic","line":242},{"name":"c","line":245},{"name":"next_c","line":249},{"name":"is_docs_path","line":261},{"name":"count_checkpoints","line":267},{"name":"checkpoint_str","line":270},{"name":"contains_substring","line":281},{"name":"spec_with_tests","line":291},{"name":"result","line":292},{"name":"spec_with_invariants","line":296},{"name":"result","line":297},{"name":"spec_empty","line":301},{"name":"result","line":302},{"name":"spec_empty_test","line":306},{"name":"result","line":307},{"name":"spec_ascii","line":311},{"name":"result","line":312},{"name":"spec_docs","line":316},{"name":"result","line":317},{"name":"spec_cyrillic","line":321},{"name":"header","line":328},{"name":"result","line":335},{"name":"no_header","line":339},{"name":"result","line":340},{"name":"no_warning","line":344},{"name":"result","line":349},{"name":"skill","line":353},{"name":"result","line":354},{"name":"skill","line":358},{"name":"result","line":359},{"name":"skill","line":363},{"name":"result","line":364},{"name":"skill","line":368},{"name":"result","line":369},{"name":"skill","line":373},{"name":"result","line":374},{"name":"skill","line":378},{"name":"result","line":379},{"name":"skill","line":383},{"name":"result","line":384},{"name":"skill","line":388},{"name":"result","line":389},{"name":"skill","line":393},{"name":"result","line":394},{"name":"skill","line":398},{"name":"result","line":399},{"name":"skill","line":403},{"name":"result","line":404},{"name":"url","line":408},{"name":"result","line":409},{"name":"url","line":413},{"name":"result","line":414},{"name":"text","line":418},{"name":"result","line":419},{"name":"path","line":423},{"name":"result","line":424},{"name":"path","line":428},{"name":"result","line":429},{"name":"artifacts","line":433},{"name":"result","line":434},{"name":"path","line":463},{"name":"spec_with_tests","line":472},{"name":"start","line":473},{"name":"end","line":475},{"name":"elapsed","line":476},{"name":"spec_ascii","line":481},{"name":"start","line":482},{"name":"end","line":484},{"name":"elapsed","line":485},{"name":"header","line":490},{"name":"start","line":493},{"name":"end","line":495},{"name":"elapsed","line":496},{"name":"skill","line":501},{"name":"start","line":502},{"name":"end","line":504},{"name":"elapsed","line":505},{"name":"start","line":510},{"name":"end","line":512},{"name":"elapsed","line":513}],"imports":[],"terms":["compiler","runtime","validation","rules","validate","tdd","contract","invariant","language","policy","generated","header","structure","data","push","skill","commit","matrix","kind","artifacts","checkpoints","docs","remote","url","contains","cyrillic","path","count","checkpoint","str","substring","invariants","empty","ascii","warning","text","start","end","elapsed"]},{"id":"19b5ab5a4430be22ca924c05a3bb6928960a3b3ef38b802a6e4a4bd752b2ad05","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/attention.t27","health":"warn","module":"attention"}],"description":"","symbols":[],"imports":[],"terms":["fpga","attention"]},{"id":"1a28ba338938a246485db6125f65700b5d2e7403b091f7a5553b1d63bf6d0bb2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/radix_sort.t27","health":"ok","module":"TriRadixSort"}],"description":"t27/specs/","symbols":[{"name":"RadixSorter","line":13},{"name":"sort","line":23},{"name":"sort_in_place","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","radix","sorter","place"]},{"id":"1a85a9dca026c580cc5c892fb15f566c34f56077b1137b3aa84ffbbf8976f492","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf16_to_fp16.t27","health":"fail","module":"gf16-to-fp16"}],"description":"","symbols":[{"name":"GF16_SIGN_BITS","line":9},{"name":"GF16_EXP_BITS","line":10},{"name":"GF16_MANT_BITS","line":11},{"name":"GF16_BIAS","line":12},{"name":"FP16_SIGN_BITS","line":14},{"name":"FP16_EXP_BITS","line":15},{"name":"FP16_MANT_BITS","line":16},{"name":"FP16_BIAS","line":17},{"name":"MAX_EXP_DIFF","line":19},{"name":"MANTissa_MASK_GF16","line":20},{"name":"MANTissa_MASK_FP16","line":21},{"name":"Gf16","line":27},{"name":"Fp16","line":33},{"name":"ConversionResult","line":39},{"name":"ConversionConfig","line":46},{"name":"gf16_from_bits","line":58},{"name":"gf16_to_bits","line":68},{"name":"sign_field","line":69},{"name":"exp_field","line":70},{"name":"mant_field","line":71},{"name":"gf16_get_exp_biased","line":77},{"name":"gf16_is_zero","line":83},{"name":"gf16_is_infinity","line":89},{"name":"gf16_is_nan","line":95},{"name":"fp16_from_bits","line":105},{"name":"fp16_to_bits","line":115},{"name":"sign_field","line":116},{"name":"exp_field","line":117},{"name":"mant_field","line":118},{"name":"fp16_get_exp_biased","line":124},{"name":"fp16_is_zero","line":135},{"name":"fp16_is_infinity","line":141},{"name":"fp16_is_nan","line":147},{"name":"conversion_config_init","line":157},{"name":"conversion_config_no_saturation","line":167},{"name":"gf16_to_fp16_raw","line":181},{"name":"gf16_to_fp16_with_result","line":219},{"name":"gf16_to_fp16","line":281},{"name":"result","line":282},{"name":"gf16_bits_to_fp16_bits","line":288},{"name":"gf","line":289},{"name":"fp","line":290},{"name":"gf16_bits_to_fp16_bits_with_result","line":296},{"name":"gf","line":297}],"imports":[],"terms":["chips","euler","fpga","gf16","fp16","sign","bits","exp","mant","bias","max","diff","mantissa","mask","conversion","config","field","get","biased","zero","infinity","nan","init","saturation","raw"]},{"id":"1aece14713159e5b0d3b6447529a3da6672a0ae57cff3ec0c4a4af021188fa31","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base32.t27","health":"ok","module":"TriBase32"}],"description":"t27/specs/","symbols":[{"name":"Base32","line":13},{"name":"standard","line":23},{"name":"encode","line":28},{"name":"decode","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","base32","standard","encode","decode"]},{"id":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/quarantine_manager.t27","health":"ok","module":"quarantine_manager"}],"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUARANTINE_DURATION","line":8},{"name":"VIOLATION_THRESHOLD","line":9},{"name":"TRUST_THRESHOLD","line":10},{"name":"create_quarantine_state","line":13},{"name":"get_quarantine_node_id","line":20},{"name":"get_quarantine_status","line":24},{"name":"get_start_time","line":28},{"name":"get_violation_count","line":32},{"name":"STATUS_NORMAL","line":37},{"name":"STATUS_QUARANTINED","line":38},{"name":"STATUS_SUSPENDED","line":39},{"name":"STATUS_BANNED","line":40},{"name":"is_quarantined","line":43},{"name":"quarantine_node","line":54},{"name":"release_quarantine","line":62},{"name":"suspend_node","line":70},{"name":"ban_node","line":78},{"name":"should_release_quarantine","line":87},{"name":"update_quarantine_state","line":102},{"name":"create_violation_record","line":111},{"name":"get_violation_node_id","line":118},{"name":"get_violation_type","line":122},{"name":"get_violation_severity","line":126},{"name":"get_violation_timestamp","line":130},{"name":"VIOLATION_PACKET_FLOOD","line":135},{"name":"VIOLATION_AUTH_FAILURE","line":136},{"name":"VIOLATION_MALFORMED_PACKET","line":137},{"name":"VIOLATION_ANOMALOUS_BEHAVIOR","line":138},{"name":"VIOLATION_RESOURCE_ABUSE","line":139},{"name":"VIOLATION_TRUST_VIOLATION","line":140},{"name":"record_violation","line":143},{"name":"should_quarantine","line":162},{"name":"calculate_quarantine_severity","line":174},{"name":"find_quarantined_node","line":195},{"name":"count_quarantined_nodes","line":210},{"name":"get_quarantine_reason","line":225},{"name":"is_communication_allowed","line":244},{"name":"calculate_health_impact","line":266},{"name":"recommend_quarantine_action","line":278},{"name":"create_notification","line":296},{"name":"get_notification_node_id","line":303},{"name":"get_notification_action","line":307},{"name":"get_notification_reason","line":311},{"name":"get_notification_duration","line":315}],"imports":[{"name":"base::types","line":5}],"terms":["net","quarantine","manager","max","nodes","duration","violation","threshold","trust","create","state","get","node","status","start","time","count","normal","quarantined","suspended","banned","release","suspend","ban","record","severity","timestamp","packet","flood","auth","failure","malformed","anomalous","behavior","resource","abuse","calculate","find","reason","communication","allowed","health","impact","recommend","action","notification"]},{"id":"1c1a30bcdc55e6b2f8ad3eda8d0107f0109588bfa32eed9a16dddd8b454cdde0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/mlp_forward.t27","health":"warn","module":null}],"description":"MLP Forward Pass Test — 4 → 8 → 3 Demonstrates semantic equivalence between .t27 VM and Zig implementation Input: 4 features → Hidden: 8 neurons → Output: 3 classes","symbols":[],"imports":[],"terms":["fpga","tri27","mlp","forward"]},{"id":"1c332b11b5cc758ef52d78c8517722fe3a7f757a8583679c2859f42aea529c97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/account_identity.t27","health":"ok","module":"AccountIdentity"}],"description":"Multi-device account and trusted-device linking policy. Passkey ceremonies and storage adapters remain platform responsibilities. phi^2 + phi^-2 = 3","symbols":[{"name":"DEVICE_ACTIVE","line":8},{"name":"DEVICE_REVOKED","line":9},{"name":"LINK_CODE_TTL_SECONDS","line":10},{"name":"LINK_CODE_ENTROPY_BITS","line":11},{"name":"device_membership_is_valid","line":15},{"name":"link_code_is_fresh","line":22},{"name":"may_adopt_account","line":32},{"name":"may_revoke_device","line":38}],"imports":[{"name":"base::types","line":6}],"terms":["net","account","identity","device","active","revoked","link","ttl","seconds","entropy","bits","membership","valid","fresh","may","adopt","revoke"]},{"id":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf16.t27","health":"ok","module":"triformat-gf16"}],"description":"gf16.t27 0 GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0] 12 + 1/34 = 3 | TRINITY","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"SPECIAL_EXP","line":25},{"name":"MANT_DIVISOR","line":27},{"name":"MANT_DIVISOR_SHIFT","line":28},{"name":"PHI_BIAS","line":30},{"name":"GF16_ZERO_POS","line":33},{"name":"GF16_ZERO_NEG","line":34},{"name":"GF16_INF_POS","line":35},{"name":"GF16_INF_NEG","line":36},{"name":"GF16_NAN","line":37},{"name":"GF16","line":43},{"name":"pow2_table","line":50},{"name":"gf16_extract_sign","line":64},{"name":"bit","line":65},{"name":"gf16_extract_exponent","line":72},{"name":"gf16_extract_mantissa","line":79},{"name":"gf16_from_components","line":85},{"name":"sign_bit","line":86},{"name":"gf16_is_zero","line":94},{"name":"gf16_is_special","line":100},{"name":"gf16_encode_f32","line":108},{"name":"sign","line":115},{"name":"abs_value","line":116},{"name":"f32_bits","line":119},{"name":"discarded","line":140},{"name":"gf16_decode_to_f32","line":156},{"name":"sign","line":159},{"name":"mant","line":165},{"name":"sign","line":166},{"name":"sign","line":177},{"name":"exp","line":178},{"name":"mant","line":179},{"name":"sign_mult","line":181},{"name":"mant_mult","line":182},{"name":"exp_mult","line":183},{"name":"gf16_round_phi","line":193},{"name":"sign","line":200},{"name":"abs_value","line":201},{"name":"f32_bits","line":204},{"name":"normalized_mant","line":219},{"name":"gf16_is_inf","line":239},{"name":"exp","line":240},{"name":"mant","line":241},{"name":"gf16_is_nan","line":247},{"name":"exp","line":248},{"name":"mant","line":249},{"name":"gf16_is_negative","line":255},{"name":"sign","line":256},{"name":"gf16_is_positive","line":262},{"name":"sign","line":263},{"name":"gf16_negate","line":269},{"name":"gf16_abs","line":275},{"name":"gf16_copy_sign","line":281},{"name":"sign_mask","line":282},{"name":"value_mask","line":283},{"name":"gf16_max","line":289},{"name":"a_val","line":293},{"name":"b_val","line":294},{"name":"gf16_min","line":301},{"name":"a_val","line":305},{"name":"b_val","line":306},{"name":"gf16_add","line":314},{"name":"a_sign","line":319},{"name":"b_sign","line":320},{"name":"a_val","line":326},{"name":"b_val","line":327},{"name":"result","line":328},{"name":"gf16_sub","line":336},{"name":"a_val","line":348},{"name":"b_val","line":349},{"name":"result","line":350},{"name":"gf16_mul","line":358},{"name":"a_sign","line":362},{"name":"b_sign","line":363},{"name":"result_sign","line":364},{"name":"a_sign","line":369},{"name":"b_sign","line":370},{"name":"result_sign","line":371},{"name":"a_val","line":375},{"name":"b_val","line":376},{"name":"result","line":377},{"name":"gf16_div","line":386},{"name":"a_sign","line":390},{"name":"a_sign","line":395},{"name":"b_sign","line":396},{"name":"result_sign","line":397},{"name":"a_sign","line":402},{"name":"b_sign","line":403},{"name":"result_sign","line":404},{"name":"a_val","line":408},{"name":"b_val","line":409},{"name":"result","line":410},{"name":"gf16_fma","line":418},{"name":"a_val","line":421},{"name":"b_val","line":422},{"name":"c_val","line":423},{"name":"product","line":431},{"name":"result","line":432},{"name":"gf16_sqrt","line":440},{"name":"a_val","line":447},{"name":"result","line":448},{"name":"gf16_square","line":456},{"name":"gf16_eq","line":463},{"name":"gf16_ne","line":473},{"name":"gf16_lt","line":480},{"name":"a_val","line":482},{"name":"b_val","line":483},{"name":"gf16_le","line":490},{"name":"a_val","line":492},{"name":"b_val","line":493},{"name":"gf16_gt","line":500},{"name":"a_val","line":502},{"name":"b_val","line":503},{"name":"gf16_ge","line":510},{"name":"a_val","line":512},{"name":"b_val","line":513},{"name":"gf16_floor","line":520},{"name":"a_val","line":525},{"name":"result","line":526},{"name":"gf16_ceil","line":534},{"name":"a_val","line":539},{"name":"result","line":540},{"name":"gf16_round","line":548},{"name":"a_val","line":553},{"name":"result","line":554},{"name":"gf16_trunc","line":562},{"name":"a_val","line":567},{"name":"result","line":568},{"name":"gf16_fms","line":577},{"name":"a_val","line":580},{"name":"b_val","line":581},{"name":"c_val","line":582},{"name":"product","line":590},{"name":"result","line":591},{"name":"gf16_hypot","line":600},{"name":"a_val","line":606},{"name":"b_val","line":607},{"name":"abs_a","line":610},{"name":"abs_b","line":611},{"name":"max_val","line":612},{"name":"min_val","line":613},{"name":"ratio","line":617},{"name":"result","line":618},{"name":"gf16_fmod","line":627},{"name":"a_val","line":633},{"name":"b_val","line":634},{"name":"result","line":639},{"name":"gf16_is_finite","line":646},{"name":"gf16_is_normal","line":653},{"name":"exp","line":658},{"name":"gf16_is_subnormal","line":666},{"name":"exp","line":671},{"name":"mant","line":672},{"name":"gf16_signbit","line":681},{"name":"gf16_sign","line":688},{"name":"gf16_clamp","line":707},{"name":"x_decoded","line":713},{"name":"min_decoded","line":714},{"name":"max_decoded","line":715},{"name":"gf16_lerp","line":729},{"name":"a_val","line":735},{"name":"b_val","line":736},{"name":"t_val","line":737},{"name":"result","line":740},{"name":"gf16_fnma","line":748},{"name":"sign_a","line":760},{"name":"sign_b","line":761},{"name":"result_sign","line":762},{"name":"a_val","line":777},{"name":"b_val","line":778},{"name":"neg_product","line":779},{"name":"a_val","line":784},{"name":"b_val","line":785},{"name":"c_val","line":786},{"name":"result","line":788},{"name":"gf16_exp","line":797},{"name":"x_val","line":804},{"name":"num_terms","line":820},{"name":"gf16_log","line":835},{"name":"x_val","line":845},{"name":"result","line":853},{"name":"gf16_log2","line":860},{"name":"x_val","line":870},{"name":"result","line":871},{"name":"gf16_log10","line":878},{"name":"x_val","line":888},{"name":"result","line":889},{"name":"gf16_pow","line":897},{"name":"base_val","line":910},{"name":"exp_val","line":920},{"name":"result","line":924},{"name":"gf16_sin","line":932},{"name":"x_val","line":936},{"name":"x_sq","line":940},{"name":"x_cub","line":941},{"name":"x_5","line":942},{"name":"x_7","line":943},{"name":"term1","line":945},{"name":"term2","line":946},{"name":"term3","line":947},{"name":"term4","line":948},{"name":"result","line":950},{"name":"gf16_cos","line":958},{"name":"x_val","line":962},{"name":"x_sq","line":966},{"name":"x_4","line":967},{"name":"x_6","line":968},{"name":"term0","line":970},{"name":"term1","line":971},{"name":"term2","line":972},{"name":"term3","line":973},{"name":"result","line":975},{"name":"PHI","line":986},{"name":"encoded","line":987},{"name":"decoded","line":988},{"name":"PHI","line":1000},{"name":"encoded","line":1001},{"name":"decoded","line":1002},{"name":"encoded","line":1008},{"name":"result","line":1044},{"name":"nan_val","line":1049},{"name":"decoded","line":1050},{"name":"PHI","line":1055},{"name":"encoded","line":1056},{"name":"decoded","line":1057},{"name":"PHI","line":1075},{"name":"pos_one","line":1130},{"name":"neg_one","line":1131},{"name":"decoded","line":1132},{"name":"original","line":1142},{"name":"negated","line":1143},{"name":"double_negated","line":1144},{"name":"orig_decoded","line":1145},{"name":"double_decoded","line":1146},{"name":"neg_value","line":1151},{"name":"abs_value","line":1152},{"name":"decoded","line":1153},{"name":"pos_value","line":1158},{"name":"abs_value","line":1159},{"name":"pos_value","line":1169},{"name":"neg_source","line":1170},{"name":"result","line":1171},{"name":"decoded","line":1172},{"name":"neg_value","line":1177},{"name":"pos_source","line":1178},{"name":"result","line":1179},{"name":"decoded","line":1180},{"name":"a","line":1185},{"name":"b","line":1186},{"name":"result","line":1187},{"name":"decoded","line":1188},{"name":"a","line":1193},{"name":"b","line":1194},{"name":"result","line":1195},{"name":"a","line":1200},{"name":"nan_val","line":1201},{"name":"result","line":1202},{"name":"a","line":1207},{"name":"b","line":1208},{"name":"result","line":1209},{"name":"decoded","line":1210},{"name":"a","line":1215},{"name":"b","line":1216},{"name":"result","line":1217},{"name":"a","line":1222},{"name":"nan_val","line":1223},{"name":"result","line":1224},{"name":"a","line":1730},{"name":"b","line":1731},{"name":"result","line":1732},{"name":"decoded","line":1733},{"name":"a","line":1738},{"name":"b","line":1739},{"name":"result","line":1740},{"name":"decoded","line":1741},{"name":"a","line":1746},{"name":"b","line":1747},{"name":"result","line":1748},{"name":"a","line":1753},{"name":"zero","line":1754},{"name":"result1","line":1755},{"name":"result2","line":1756},{"name":"decoded1","line":1757},{"name":"decoded2","line":1758},{"name":"a","line":1764},{"name":"b","line":1765},{"name":"result","line":1766},{"name":"decoded","line":1767},{"name":"a","line":1772},{"name":"b","line":1773},{"name":"result","line":1774},{"name":"decoded","line":1775},{"name":"a","line":1780},{"name":"zero","line":1781},{"name":"result1","line":1782},{"name":"result2","line":1783},{"name":"decoded1","line":1784},{"name":"decoded2","line":1785},{"name":"a","line":1791},{"name":"b","line":1792},{"name":"result","line":1793},{"name":"decoded","line":1794},{"name":"a","line":1799},{"name":"b","line":1800},{"name":"result","line":1801},{"name":"decoded","line":1802},{"name":"a","line":1807},{"name":"zero","line":1808},{"name":"result1","line":1809},{"name":"result2","line":1810},{"name":"a","line":1816},{"name":"one","line":1817},{"name":"result","line":1818},{"name":"decoded","line":1819},{"name":"a","line":1824},{"name":"b","line":1825},{"name":"result","line":1826},{"name":"decoded","line":1827},{"name":"a","line":1832},{"name":"b","line":1833},{"name":"result","line":1834},{"name":"decoded","line":1835},{"name":"a","line":1840},{"name":"one","line":1841},{"name":"result","line":1842},{"name":"decoded","line":1843},{"name":"zero","line":1848},{"name":"a","line":1849},{"name":"result","line":1850},{"name":"a","line":1855},{"name":"zero","line":1856},{"name":"result","line":1857},{"name":"inf","line":1862},{"name":"a","line":1863},{"name":"result","line":1864},{"name":"a","line":1869},{"name":"b","line":1870},{"name":"c","line":1871},{"name":"result","line":1872},{"name":"decoded","line":1873},{"name":"a","line":1878},{"name":"b","line":1879},{"name":"zero","line":1880},{"name":"result","line":1881},{"name":"decoded","line":1882},{"name":"a","line":1887},{"name":"result","line":1888},{"name":"decoded","line":1889},{"name":"a","line":1894},{"name":"result","line":1895},{"name":"decoded","line":1896},{"name":"zero","line":1901},{"name":"result","line":1902},{"name":"neg","line":1907},{"name":"result","line":1908},{"name":"a","line":1913},{"name":"result","line":1914},{"name":"decoded","line":1915},{"name":"zero","line":1920},{"name":"result","line":1921},{"name":"neg","line":1926},{"name":"result","line":1927},{"name":"decoded","line":1928},{"name":"a","line":1933},{"name":"b","line":1934},{"name":"result1","line":1935},{"name":"result2","line":1936},{"name":"a","line":1941},{"name":"b","line":1942},{"name":"result1","line":1943},{"name":"result2","line":1944},{"name":"a","line":1949},{"name":"squared","line":1950},{"name":"rooted","line":1951},{"name":"decoded","line":1952},{"name":"a","line":1957},{"name":"b","line":1958},{"name":"a","line":1963},{"name":"b","line":1964},{"name":"value","line":1979},{"name":"a","line":1985},{"name":"b","line":1986},{"name":"a","line":1991},{"name":"b","line":1992},{"name":"value","line":2002},{"name":"a","line":2008},{"name":"b","line":2009},{"name":"a","line":2014},{"name":"b","line":2015},{"name":"a","line":2020},{"name":"b","line":2021},{"name":"neg","line":2026},{"name":"pos","line":2027},{"name":"value","line":2032},{"name":"a","line":2038},{"name":"b","line":2039},{"name":"a","line":2044},{"name":"b","line":2045},{"name":"a","line":2050},{"name":"b","line":2051},{"name":"value","line":2056},{"name":"a","line":2062},{"name":"b","line":2063},{"name":"a","line":2068},{"name":"b","line":2069},{"name":"a","line":2074},{"name":"b","line":2075},{"name":"value","line":2080},{"name":"a","line":2086},{"name":"b","line":2087},{"name":"a","line":2092},{"name":"b","line":2093},{"name":"a","line":2098},{"name":"b","line":2099},{"name":"value","line":2104},{"name":"a","line":2111},{"name":"b","line":2112},{"name":"a","line":2122},{"name":"result","line":2123},{"name":"decoded","line":2124},{"name":"a","line":2129},{"name":"result","line":2130},{"name":"decoded","line":2131},{"name":"a","line":2136},{"name":"result","line":2137},{"name":"decoded","line":2138},{"name":"pos_zero","line":2143},{"name":"neg_zero","line":2144},{"name":"a","line":2159},{"name":"result","line":2160},{"name":"decoded","line":2161},{"name":"a","line":2166},{"name":"result","line":2167},{"name":"decoded","line":2168},{"name":"a","line":2173},{"name":"result","line":2174},{"name":"decoded","line":2175},{"name":"a","line":2189},{"name":"result","line":2190},{"name":"decoded","line":2191},{"name":"a","line":2196},{"name":"result","line":2197},{"name":"decoded","line":2198},{"name":"a","line":2203},{"name":"result","line":2204},{"name":"decoded","line":2205},{"name":"a","line":2210},{"name":"result","line":2211},{"name":"decoded","line":2212},{"name":"a","line":2226},{"name":"result","line":2227},{"name":"decoded","line":2228},{"name":"a","line":2233},{"name":"result","line":2234},{"name":"decoded","line":2235},{"name":"pos_zero","line":2240},{"name":"neg_zero","line":2241},{"name":"a","line":2257},{"name":"floored","line":2258},{"name":"truncated","line":2259},{"name":"a","line":2266},{"name":"ceiled","line":2267},{"name":"truncated","line":2268},{"name":"a","line":2274},{"name":"b","line":2275},{"name":"c","line":2276},{"name":"result","line":2277},{"name":"decoded","line":2278},{"name":"a","line":2283},{"name":"b","line":2284},{"name":"c","line":2285},{"name":"result","line":2286},{"name":"decoded","line":2287},{"name":"a","line":2292},{"name":"b","line":2293},{"name":"c","line":2294},{"name":"result","line":2295},{"name":"decoded","line":2296},{"name":"a","line":2301},{"name":"b","line":2302},{"name":"result","line":2303},{"name":"a","line":2308},{"name":"b","line":2309},{"name":"c","line":2310},{"name":"result","line":2311},{"name":"decoded","line":2312},{"name":"a","line":2317},{"name":"b","line":2318},{"name":"result","line":2319},{"name":"decoded","line":2320},{"name":"a","line":2329},{"name":"result","line":2330},{"name":"decoded","line":2331},{"name":"a","line":2336},{"name":"b","line":2337},{"name":"result","line":2338},{"name":"decoded","line":2339},{"name":"a","line":2344},{"name":"result","line":2345},{"name":"a","line":2350},{"name":"a","line":2355},{"name":"b","line":2356},{"name":"result","line":2357},{"name":"decoded","line":2358},{"name":"a","line":2363},{"name":"b","line":2364},{"name":"result","line":2365},{"name":"a","line":2370},{"name":"b","line":2371},{"name":"result","line":2372},{"name":"decoded","line":2373},{"name":"a","line":2378},{"name":"b","line":2379},{"name":"result","line":2380},{"name":"decoded","line":2381},{"name":"a","line":2386},{"name":"zero","line":2387},{"name":"result","line":2388},{"name":"a","line":2393},{"name":"result","line":2394},{"name":"n1","line":2400},{"name":"n2","line":2401},{"name":"n3","line":2402},{"name":"z1","line":2410},{"name":"z2","line":2411},{"name":"pos_inf","line":2418},{"name":"neg_inf","line":2419},{"name":"n1","line":2431},{"name":"n2","line":2432},{"name":"n3","line":2433},{"name":"z1","line":2441},{"name":"z2","line":2442},{"name":"sub","line":2462},{"name":"decoded","line":2463},{"name":"is_sub","line":2466},{"name":"n1","line":2475},{"name":"n2","line":2476},{"name":"z1","line":2483},{"name":"z2","line":2484},{"name":"test_values","line":2503},{"name":"gf","line":2509},{"name":"is_fin","line":2510},{"name":"is_inf","line":2511},{"name":"is_nan","line":2512},{"name":"count","line":2515},{"name":"val","line":2524},{"name":"val","line":2530},{"name":"zero_pos","line":2536},{"name":"zero_neg","line":2542},{"name":"nan_with_sign","line":2555},{"name":"v1","line":2561},{"name":"v2","line":2562},{"name":"v1","line":2569},{"name":"v2","line":2570},{"name":"pos_val","line":2594},{"name":"neg_val","line":2595},{"name":"x","line":2603},{"name":"min_val","line":2604},{"name":"max_val","line":2605},{"name":"result","line":2606},{"name":"decoded","line":2607},{"name":"x","line":2613},{"name":"min_val","line":2614},{"name":"max_val","line":2615},{"name":"result","line":2616},{"name":"decoded","line":2617},{"name":"x","line":2623},{"name":"min_val","line":2624},{"name":"max_val","line":2625},{"name":"result","line":2626},{"name":"decoded","line":2627},{"name":"x","line":2633},{"name":"min_val","line":2634},{"name":"max_val","line":2635},{"name":"result","line":2636},{"name":"a","line":2642},{"name":"b","line":2643},{"name":"t","line":2644},{"name":"result","line":2645},{"name":"decoded","line":2646},{"name":"a","line":2652},{"name":"b","line":2653},{"name":"t","line":2654},{"name":"result","line":2655},{"name":"decoded","line":2656},{"name":"a","line":2662},{"name":"b","line":2663},{"name":"t","line":2664},{"name":"result","line":2665},{"name":"decoded","line":2666},{"name":"a","line":2672},{"name":"b","line":2673},{"name":"t","line":2674},{"name":"result","line":2675},{"name":"a","line":2681},{"name":"b","line":2682},{"name":"c","line":2683},{"name":"result","line":2684},{"name":"decoded","line":2685},{"name":"a","line":2691},{"name":"b","line":2692},{"name":"c","line":2693},{"name":"result","line":2694},{"name":"decoded","line":2695},{"name":"a","line":2701},{"name":"b","line":2702},{"name":"c","line":2703},{"name":"result","line":2704},{"name":"decoded","line":2705},{"name":"a","line":2711},{"name":"b","line":2712},{"name":"c","line":2713},{"name":"result","line":2714},{"name":"x","line":2720},{"name":"result","line":2721},{"name":"decoded","line":2722},{"name":"x","line":2728},{"name":"result","line":2729},{"name":"decoded","line":2730},{"name":"x","line":2736},{"name":"result","line":2737},{"name":"decoded","line":2738},{"name":"x","line":2744},{"name":"result","line":2745},{"name":"x","line":2751},{"name":"result","line":2752},{"name":"decoded","line":2753},{"name":"e","line":2759},{"name":"result","line":2760},{"name":"decoded","line":2761},{"name":"zero","line":2767},{"name":"neg","line":2768},{"name":"x","line":2775},{"name":"result","line":2776},{"name":"decoded","line":2777},{"name":"x","line":2783},{"name":"result","line":2784},{"name":"decoded","line":2785},{"name":"base","line":2791},{"name":"exp","line":2792},{"name":"result","line":2793},{"name":"decoded","line":2794},{"name":"base","line":2800},{"name":"exp","line":2801},{"name":"result","line":2802},{"name":"decoded","line":2803},{"name":"base","line":2809},{"name":"exp","line":2810},{"name":"result","line":2811},{"name":"decoded","line":2812},{"name":"base","line":2818},{"name":"exp","line":2819},{"name":"result","line":2820},{"name":"base","line":2826},{"name":"exp","line":2827},{"name":"result","line":2828},{"name":"decoded","line":2829},{"name":"x","line":2835},{"name":"result","line":2836},{"name":"decoded","line":2837},{"name":"pi_six","line":2843},{"name":"result","line":2844},{"name":"decoded","line":2845},{"name":"x","line":2851},{"name":"result","line":2852},{"name":"decoded","line":2853},{"name":"pi_six","line":2859},{"name":"result","line":2860},{"name":"decoded","line":2861},{"name":"x","line":2867},{"name":"sin_val","line":2868},{"name":"cos_val","line":2869},{"name":"sum","line":2870},{"name":"value","line":2905},{"name":"a","line":2994},{"name":"b","line":2995},{"name":"a","line":3007},{"name":"b","line":3008},{"name":"a","line":3020},{"name":"b","line":3021},{"name":"a","line":3033},{"name":"b","line":3034},{"name":"a","line":3046},{"name":"b","line":3047},{"name":"a","line":3059},{"name":"b","line":3060},{"name":"a","line":3072},{"name":"a","line":3084},{"name":"b","line":3085},{"name":"c","line":3086},{"name":"a","line":3098},{"name":"a","line":3110},{"name":"b","line":3111},{"name":"a","line":3123},{"name":"b","line":3124},{"name":"a","line":3136},{"name":"b","line":3137},{"name":"a","line":3149},{"name":"b","line":3150},{"name":"a","line":3162},{"name":"b","line":3163},{"name":"a","line":3175},{"name":"b","line":3176},{"name":"a","line":3188},{"name":"a","line":3200},{"name":"a","line":3212},{"name":"a","line":3224},{"name":"a","line":3236},{"name":"b","line":3237},{"name":"c","line":3238},{"name":"a","line":3250},{"name":"b","line":3251},{"name":"a","line":3263},{"name":"b","line":3264},{"name":"val","line":3276},{"name":"val","line":3288},{"name":"val","line":3300},{"name":"val","line":3312},{"name":"val","line":3324},{"name":"x","line":3336},{"name":"min_val","line":3337},{"name":"max_val","line":3338},{"name":"a","line":3350},{"name":"b","line":3351},{"name":"t","line":3352},{"name":"a","line":3364},{"name":"b","line":3365},{"name":"c","line":3366},{"name":"x","line":3378},{"name":"x","line":3390},{"name":"base","line":3402},{"name":"exp","line":3403},{"name":"x","line":3415},{"name":"x","line":3427}],"imports":[],"terms":["chips","euler","numeric","gf16","triformat","sign","shift","exp","mant","mask","max","min","bias","special","divisor","phi","zero","pos","neg","inf","nan","pow2","table","extract","bit","exponent","mantissa","components","encode","f32","abs","bits","discarded","decode","mult","round","normalized","negative","positive","negate","copy","val","sub","mul","div","fma","product","sqrt","square","floor","ceil","trunc","fms","hypot","ratio","fmod","finite","normal","subnormal","signbit","clamp","decoded","lerp","fnma","num","terms","log","log2","log10","pow","base","sin","cub","term1","term2","term3","term4","cos","term0","encoded","one","original","negated","double","orig","result1","result2","decoded1","decoded2","squared","rooted","floored","truncated","ceiled","values","fin","count","six","sum"]},{"id":"1cce47bfd33a00b3f877eac16723284a124ef0036f1012d5cb5d60bc90613915","sources":[{"repo":"ghashtag/t27","path":"specs/neural/forward_pass.t27","health":"warn","module":"forward_pass"}],"description":"Forward Pass Demo - VSA-based Neural Network Implements transformer-style forward pass using Vector Symbolic Architecture with multi-head attention, residual connections, and autoregressive generation Author: Dmitrii Vasilev","symbols":[{"name":"DEFAULT_DIM","line":19},{"name":"NUM_ROLES","line":22},{"name":"CONTEXT_SIZE","line":25},{"name":"NUM_HEADS","line":28},{"name":"VECTORS_PER_HEAD","line":31},{"name":"FF1_ROLE_IDX","line":34},{"name":"FF2_ROLE_IDX","line":35},{"name":"MAX_GENERATION_TOKENS","line":38},{"name":"DEFAULT_LEARNING_RATE","line":41},{"name":"RESONATOR_ITERS","line":44},{"name":"SIMILARITY_THRESHOLD","line":47},{"name":"Hypervector","line":54},{"name":"Roles","line":58},{"name":"Context","line":61},{"name":"TrainResult","line":64},{"name":"init_roles","line":75},{"name":"single_head_attention","line":93},{"name":"forward_pass_multi_head","line":124},{"name":"summarize_context","line":153},{"name":"forward_pass_direct","line":166},{"name":"resonator_train_step","line":181},{"name":"compute_direct_role","line":246},{"name":"generate_autoregressive","line":273},{"name":"measure_perplexity","line":309},{"name":"compute_accuracy","line":341}],"imports":[{"name":"numeric::gf16","line":10},{"name":"vsa::vsa_core","line":12}],"terms":["neural","forward","pass","default","dim","num","roles","size","heads","vectors","per","head","ff1","role","idx","ff2","max","generation","tokens","learning","rate","resonator","iters","similarity","threshold","hypervector","train","init","single","attention","multi","summarize","direct","step","compute","generate","autoregressive","measure","perplexity","accuracy"]},{"id":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/m3_multihop.t27","health":"ok","module":"M3MultiHop"}],"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","symbols":[{"name":"NODE_A","line":6},{"name":"NODE_B","line":7},{"name":"NODE_C","line":8},{"name":"TARGET_THROUGHPUT_MBPS","line":11},{"name":"TARGET_LATENCY_MS","line":12},{"name":"TARGET_PACKET_LOSS_PCT","line":13},{"name":"ATTEN_MIN","line":16},{"name":"ATTEN_MAX","line":17},{"name":"IPERF3_HDR_LEN","line":20},{"name":"iperf3_sequence","line":23},{"name":"expected_loss_rate_p10","line":30},{"name":"throughput_factor_p8","line":50},{"name":"signal_quality","line":62},{"name":"total_attenuation","line":75},{"name":"delivery_rate_p8","line":85},{"name":"simulate_hop","line":98},{"name":"forward_packet","line":111},{"name":"tcp_packet_byte","line":122},{"name":"udp_packet_byte","line":139},{"name":"ST_IDLE","line":156},{"name":"ST_RUNNING","line":157},{"name":"ST_COMPLETE","line":158},{"name":"PerfCounters","line":161},{"name":"calculate_throughput_mbps","line":170},{"name":"calculate_loss_pct","line":187},{"name":"meets_targets","line":198},{"name":"test_next_state","line":209}],"imports":[],"terms":["macos","rings","rust","mesh","multihop","m3multi","hop","node","target","throughput","mbps","latency","packet","loss","pct","atten","min","max","iperf3","hdr","len","sequence","expected","rate","p10","factor","signal","quality","total","attenuation","delivery","simulate","forward","tcp","byte","udp","idle","running","complete","perf","counters","calculate","meets","targets","state"]},{"id":"1d143c79c4f83509d679fbcdf85113343f7ca096320f96429c186ba42b06412e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/pattern.t27","health":"ok","module":"TriPattern"}],"description":"t27/specs/","symbols":[{"name":"MatchResult","line":13},{"name":"glob_match","line":23},{"name":"wildcard_match","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","pattern","match","glob","wildcard"]},{"id":"1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_coding.t27","health":"ok","module":"NetworkCoding"}],"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"CODING_WINDOW","line":8},{"name":"MAX_GENERATION_SIZE","line":9},{"name":"create_packet","line":12},{"name":"get_packet_src","line":19},{"name":"get_packet_dst","line":23},{"name":"get_packet_payload","line":27},{"name":"get_packet_seq","line":31},{"name":"create_coded_packet","line":36},{"name":"get_coeff_vector","line":43},{"name":"get_coded_payload","line":47},{"name":"get_generation","line":51},{"name":"get_coded_seq","line":55},{"name":"xor_packets","line":60},{"name":"create_xoded_native","line":65},{"name":"decode_xoded_packet","line":72},{"name":"same_generation","line":86},{"name":"get_generation_id","line":97},{"name":"is_coding_beneficial","line":103},{"name":"linear_code_packets","line":109},{"name":"create_coded_generation","line":126},{"name":"get_coded_packet_gen","line":133},{"name":"count_generation_packets","line":141},{"name":"is_generation_decodable","line":151},{"name":"calculate_coding_gain","line":161}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","coding","max","packets","window","generation","size","create","packet","get","dst","payload","seq","coded","coeff","vector","xor","xoded","native","decode","beneficial","linear","gen","count","decodable","calculate","gain"]},{"id":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","sources":[{"repo":"ghashtag/t27","path":"specs/provider/adapters.t27","health":"ok","module":"provider-adapters"}],"description":"provider/adapters.t27 — HTTP Adapter Specifications HTTP request/response adapters for AI provider APIs","symbols":[{"name":"DEFAULT_TIMEOUT_MS","line":22},{"name":"DEFAULT_MAX_RETRIES","line":25},{"name":"DEFAULT_BACKOFF_MS","line":28},{"name":"MAX_BACKOFF_MS","line":31},{"name":"HTTP_METHOD_GET","line":34},{"name":"HTTP_METHOD_POST","line":37},{"name":"HTTP_METHOD_PUT","line":40},{"name":"HTTP_METHOD_DELETE","line":43},{"name":"HEADER_CONTENT_TYPE_JSON","line":46},{"name":"HEADER_AUTHORIZATION","line":49},{"name":"HEADER_ANTHROPIC_VERSION","line":52},{"name":"STATUS_OK","line":55},{"name":"STATUS_CREATED","line":58},{"name":"STATUS_UNAUTHORIZED","line":61},{"name":"STATUS_FORBIDDEN","line":64},{"name":"STATUS_NOT_FOUND","line":67},{"name":"STATUS_TOO_MANY_REQUESTS","line":70},{"name":"STATUS_INTERNAL_ERROR","line":73},{"name":"STATUS_SERVICE_UNAVAILABLE","line":76},{"name":"ENDPOINT_ANTHROPIC_MESSAGES","line":79},{"name":"ENDPOINT_OPENAI_CHAT","line":82},{"name":"HttpMethod","line":89},{"name":"HttpHeader","line":97},{"name":"HttpRequest","line":103},{"name":"HttpResponse","line":112},{"name":"AdapterConfig","line":120},{"name":"RetryPolicy","line":130},{"name":"AdapterResult","line":138},{"name":"StreamAdapterState","line":145},{"name":"StreamChunk","line":154},{"name":"RateLimitInfo","line":161},{"name":"AuthInfo","line":168},{"name":"http_header_create","line":178},{"name":"http_request_create","line":186},{"name":"http_response_create","line":197},{"name":"adapter_config_create","line":207},{"name":"base_url","line":208},{"name":"stream_chunk_create","line":224},{"name":"stream_chunk_error","line":233},{"name":"rate_limit_info_create","line":242},{"name":"auth_info_create","line":251},{"name":"adapter_result_create","line":259},{"name":"adapter_result_error","line":268},{"name":"http_method_to_string","line":277},{"name":"http_method_from_string","line":287},{"name":"is_status_success","line":300},{"name":"is_status_client_error","line":305},{"name":"is_status_server_error","line":310},{"name":"is_status_rate_limited","line":315},{"name":"is_status_unauthorized","line":320},{"name":"is_response_success","line":325},{"name":"is_adapter_success","line":330},{"name":"build_headers","line":335},{"name":"calculate_retry_delay","line":350},{"name":"delay","line":358},{"name":"get_endpoint","line":364},{"name":"get_endpoint_anthropic","line":373},{"name":"get_endpoint_openai","line":378},{"name":"header","line":387},{"name":"req","line":392},{"name":"resp","line":397},{"name":"config","line":402},{"name":"chunk","line":407},{"name":"info","line":412},{"name":"auth","line":417},{"name":"resp","line":422},{"name":"result","line":423},{"name":"result","line":428},{"name":"str","line":433},{"name":"method","line":438},{"name":"resp","line":466},{"name":"result","line":471},{"name":"headers","line":476},{"name":"delay","line":481},{"name":"endpoint","line":486}],"imports":[],"terms":["provider","adapters","default","timeout","max","retries","backoff","http","method","get","post","put","delete","header","content","json","authorization","anthropic","status","created","unauthorized","forbidden","found","too","many","requests","internal","service","unavailable","endpoint","messages","openai","chat","request","response","adapter","config","retry","policy","stream","state","chunk","rate","limit","info","auth","create","base","url","success","client","limited","build","headers","calculate","delay","req","resp","str"]},{"id":"1d810343f5e26d852c7ebd931bba310d28129b26915bf4a6ec71c066d1199e1c","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/gf16_bfloat16_nmse.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["benchmarks","gf16","bfloat16","nmse"]},{"id":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf12.t27","health":"warn","module":"GF12"}],"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 0 12-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 4 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF12","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp","line":171},{"name":"pow","line":177},{"name":"is_integer","line":193},{"name":"ln_val","line":219},{"name":"ln_approx","line":224},{"name":"t","line":233},{"name":"t2","line":234},{"name":"t3","line":235},{"name":"t5","line":236},{"name":"t7","line":237},{"name":"exp_approx","line":243},{"name":"k","line":255},{"name":"k","line":266},{"name":"floor","line":282}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["chips","euler","numeric","gf12","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"1eb3a181da111913289f6593f867fb6abc27070c70544e939e114d7ac5dfeaec","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/quadtree.t27","health":"ok","module":"TriQuadtree"}],"description":"t27/specs/","symbols":[{"name":"Rect","line":13},{"name":"QuadNode","line":20},{"name":"QuadTree","line":28},{"name":"init","line":39},{"name":"insert","line":44},{"name":"query","line":49},{"name":"deinit","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","quadtree","rect","quad","node","tree","init","insert","query","deinit"]},{"id":"1ec9b1d68d6e7223280e904ec1472c036b12222fb7dab9b11f049c8b98ffc62d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/tree.t27","health":"ok","module":"TriTree"}],"description":"t27/specs/","symbols":[{"name":"Tree","line":13},{"name":"leaf","line":25},{"name":"branch","line":30},{"name":"is_leaf","line":35},{"name":"height","line":40},{"name":"size","line":45},{"name":"inorder","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","tree","leaf","branch","height","size","inorder"]},{"id":"1f0556123d443b825058cbf6da7604aa6acebd0e0be70b0ebb270c2a22f4c5c1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/arrow_time.t27","health":"ok","module":"arrow_time"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","arrow","time"]},{"id":"1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/timing_closure.t27","health":"ok","module":"TimingClosure"}],"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","symbols":[{"name":"TIMING_PASS","line":8},{"name":"TIMING_MARGINAL","line":9},{"name":"TIMING_FAIL","line":10},{"name":"MIN_PIPELINE","line":13},{"name":"MAX_PIPELINE","line":14},{"name":"TARGET_FREQ_LOW","line":17},{"name":"TARGET_FREQ_MID","line":18},{"name":"TARGET_FREQ_HIGH","line":19},{"name":"create_critical_path","line":22},{"name":"extract_delay","line":28},{"name":"extract_stages","line":32},{"name":"extract_slack","line":36},{"name":"grade_timing","line":41},{"name":"calculate_pipeline_stages","line":52},{"name":"retiming_needed","line":72},{"name":"balance_registers","line":77},{"name":"compare_critical_paths","line":82},{"name":"create_timing_report","line":91},{"name":"extract_grade","line":97},{"name":"extract_max_freq","line":101},{"name":"extract_critical_paths","line":105},{"name":"timing_closure_achieved","line":110}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","timing","closure","pass","marginal","fail","min","pipeline","max","target","freq","low","mid","high","create","critical","path","extract","delay","stages","slack","grade","calculate","retiming","needed","balance","registers","compare","paths","report","achieved"]},{"id":"1f58e539bacb2363a82c13b34cbf3c84bade8790f94041dd13cbb01949f5a0c0","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward_network.t27","health":"ok","module":"FeedForward"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_D_FF","line":13},{"name":"FFNConfig","line":19},{"name":"forward","line":29}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","feed","forward","network","default","ffnconfig"]},{"id":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/avs_controller_48.t27","health":"ok","module":"avs-controller-48"}],"description":"avs_controller_48.t27 — 48-pin AVS Controller Adaptive voltage scaling controller for 48-pin configuration","symbols":[{"name":"PINS_48","line":12},{"name":"VOLTAGE_MIN_MV","line":13},{"name":"VOLTAGE_MAX_MV","line":14},{"name":"VOLTAGE_STEP_MV","line":15},{"name":"VOLTAGE_LEVELS","line":16},{"name":"TARGET_MV","line":18},{"name":"HYSTERESIS_MV","line":19},{"name":"SETTLING_US","line":20},{"name":"CONTROL_PIN_OFFSET","line":22},{"name":"CONTROL_PIN_COUNT","line":23},{"name":"FREQ_MIN_KHZ","line":25},{"name":"FREQ_MAX_KHZ","line":26},{"name":"AvsState","line":32},{"name":"AvsMode","line":40},{"name":"AvsPinConfig","line":46},{"name":"AvsVoltageLevel","line":52},{"name":"AvsStatus","line":58},{"name":"AvsConfig","line":67},{"name":"avs_voltage_from_level","line":82},{"name":"avs_level_from_voltage","line":88},{"name":"avs_control_code_from_level","line":100},{"name":"avs_level_from_control_code","line":107},{"name":"avs_voltage_valid","line":117},{"name":"avs_voltage_in_hysteresis","line":123},{"name":"avs_should_adjust","line":133},{"name":"avs_config_init","line":143},{"name":"avs_config_manual","line":156},{"name":"avs_config_adaptive","line":169},{"name":"avs_status_init","line":186},{"name":"avs_status_enable","line":199},{"name":"avs_status_adjust","line":212},{"name":"new_mv","line":213},{"name":"avs_status_settled","line":226},{"name":"avs_status_fault","line":239},{"name":"avs_control_pins_start","line":256},{"name":"avs_control_pins_end","line":262},{"name":"avs_is_control_pin","line":268},{"name":"avs_control_pin_for_bit","line":274},{"name":"encode_avs_48_cmd","line":287},{"name":"op_field","line":289},{"name":"level_field","line":290},{"name":"res_field","line":291},{"name":"decode_avs_48_cmd","line":297},{"name":"opcode","line":298},{"name":"level","line":299},{"name":"reserved","line":300}],"imports":[],"terms":["chips","euler","fpga","avs","controller","pins","voltage","min","max","step","levels","target","hysteresis","settling","control","pin","offset","count","freq","khz","state","mode","config","level","status","valid","adjust","init","manual","adaptive","enable","settled","fault","start","end","bit","encode","cmd","field","res","decode","opcode","reserved"]},{"id":"1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/area_optimization.t27","health":"ok","module":"AreaOptimization"}],"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","symbols":[{"name":"OPT_NONE","line":8},{"name":"OPT_RESOURCE_SHARE","line":9},{"name":"OPT_BIT_WIDTH_REDUCE","line":10},{"name":"OPT_CONST_FOLD","line":11},{"name":"OPT_FIFO_TO_RAM","line":12},{"name":"estimate_complexity","line":15},{"name":"calculate_sharing_savings","line":21},{"name":"calculate_bitwidth_savings","line":29},{"name":"const_folding_applicable","line":37},{"name":"fifo_to_ram_applicable","line":43},{"name":"create_resource_type","line":49},{"name":"extract_resource_type","line":53},{"name":"extract_resource_amount","line":57},{"name":"create_optimization_result","line":62},{"name":"extract_strategy","line":68},{"name":"extract_original","line":72},{"name":"extract_optimized","line":76},{"name":"calculate_savings_percentage","line":81},{"name":"optimization_worthwhile","line":92},{"name":"analyze_bit_width","line":98}],"imports":[{"name":"base::types","line":5}],"terms":["net","area","optimization","opt","resource","share","bit","width","reduce","fold","fifo","ram","estimate","complexity","calculate","sharing","savings","bitwidth","folding","applicable","create","extract","amount","strategy","original","optimized","percentage","worthwhile","analyze"]},{"id":"1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/congestion_control.t27","health":"warn","module":"congestion_control"}],"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"INITIAL_WINDOW","line":8},{"name":"MAX_WINDOW","line":9},{"name":"MIN_WINDOW","line":10},{"name":"CONGESTION_THRESHOLD","line":11},{"name":"create_congestion_state","line":14},{"name":"get_cwnd","line":21},{"name":"get_ssthresh","line":25},{"name":"get_congestion_state","line":29},{"name":"get_loss_count","line":33},{"name":"STATE_SLOW_START","line":38},{"name":"STATE_CONGESTION_AVOIDANCE","line":39},{"name":"STATE_FAST_RECOVERY","line":40},{"name":"STATE_FAST_RETRANSMIT","line":41},{"name":"initialize_congestion","line":44},{"name":"on_ack","line":49},{"name":"on_loss","line":76},{"name":"on_triple_dup_ack","line":99},{"name":"get_effective_window","line":126},{"name":"is_congested","line":137},{"name":"calculate_sending_rate","line":148},{"name":"estimate_bandwidth","line":159},{"name":"find_congestion_controller","line":170},{"name":"is_any_flow_congested","line":184},{"name":"calculate_total_cwnd","line":198},{"name":"allocate_fair_bandwidth","line":211},{"name":"probe_bandwidth","line":231},{"name":"reset_after_timeout","line":248}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","congestion","control","max","flows","initial","window","min","threshold","create","state","get","cwnd","ssthresh","loss","count","slow","start","avoidance","fast","recovery","retransmit","initialize","ack","triple","dup","effective","congested","calculate","sending","rate","estimate","bandwidth","find","controller","flow","total","allocate","fair","probe","reset","timeout"]},{"id":"1fe501e74db1912e57663fd489c9c1e004902d23cd4b1efe3fba43bc9f62bc9f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/twr_timestamp.t27","health":"ok","module":"TwrTimestamp"}],"description":"Two-way-ranging (TWR) nanosecond timestamp unit -- the hardware timing primitive that gives cm-accurate node geometry for RTI self-localization (replacing coarse RSSI ranging). A free-running counter is captured (latched) on a TX/RX event strobe; the captured timestamps feed the two-way double-difference, which cancels the constant clock OFFSET between two independent boards (and first-order drift). This is the source of truth generated to Verilog + Rust via the golden pipeline; the app's radar consumes the resulting geometry over packet 34.","symbols":[{"name":"tick","line":13},{"name":"capture","line":18},{"name":"elapsed","line":23},{"name":"twr_tof","line":30}],"imports":[{"name":"base::types","line":10}],"terms":["net","twr","timestamp","tick","capture","elapsed","tof"]},{"id":"200348b47b5ced0087818255bde50e7bac8c0e479fef9f399fcc685e09f0cc34","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/vsa/ops.t27","health":"warn","module":"vsa_ops"}],"description":"","symbols":[],"imports":[],"terms":["fpga","vsa","ops"]},{"id":"20cddd29275d167e40e4a8f6194bf3217524e63de3616a9e1db28bb37ccf0b1f","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/random.t27","health":"warn","module":"TrinityMemoryRandom"}],"description":"Integer-seeded Python Random compatibility; no heap or OS dependency. Sources: CPython v3.14.3 Modules/_randommodule.c and Lib/random.py. State and input/output/scratch buffers must be live and nonoverlapping. Initialize before use. Non-cryptographic, for reproducible experiments. Direct bits/below helpers have documented valid domains; checked wrappers return -70 invalid argument / -71 capacity without consuming random state.","symbols":[{"name":"TM_RANDOM_ERR_ARGUMENT","line":31},{"name":"TM_RANDOM_ERR_CAPACITY","line":32},{"name":"TMRandom","line":33},{"name":"tm_random_seed_words","line":35},{"name":"tm_random_init","line":60},{"name":"tm_random_init_i64","line":64},{"name":"tm_random_u32","line":68},{"name":"tm_random_bits","line":90},{"name":"tm_random_getrandbits","line":96},{"name":"tm_random_bit_length","line":99},{"name":"tm_random_below64","line":104},{"name":"tm_random_below","line":109},{"name":"tm_random_choice","line":110},{"name":"tm_random_random","line":114},{"name":"tm_random_add_offset","line":119},{"name":"tm_random_randint","line":125},{"name":"tm_random_range","line":135},{"name":"tm_random_sample_scratch","line":151},{"name":"tm_random_sample","line":164}],"imports":[],"terms":["dmitrii","memory","random","err","argument","capacity","tmrandom","seed","words","init","i64","u32","bits","getrandbits","bit","length","below64","below","choice","offset","randint","range","sample","scratch"]},{"id":"20e12b46c7f71fa6e8ea4d6338b944a42c95b37123debf8fc73aa36e2ed2e071","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/witness_mechanism_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","witness","mechanism","audit"]},{"id":"20f2cd6b26d6afa9b859903f32e87729ea9da7555b83d423e06b8dd57864e6dd","sources":[{"repo":"ghashtag/t27","path":"specs/nn/phi_rope.t27","health":"warn","module":null}],"description":"specs/nn/phi_rope.t27 φ-RoPE: Rotary Position Embedding using Golden Ratio θ_i = PHI^(-2i/d) instead of standard 10000^(-2i/d)","symbols":[],"imports":[],"terms":["phi","rope"]},{"id":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/avs_controller_96.t27","health":"warn","module":"avs-controller-96"}],"description":"avs_controller_96.t27 — 96-pin AVS Controller Adaptive voltage scaling controller for 96-pin configuration","symbols":[{"name":"PINS_96","line":12},{"name":"VOLTAGE_MIN_MV","line":13},{"name":"VOLTAGE_MAX_MV","line":14},{"name":"VOLTAGE_STEP_MV","line":15},{"name":"VOLTAGE_LEVELS","line":16},{"name":"TARGET_MV","line":18},{"name":"HYSTERESIS_MV","line":19},{"name":"SETTLING_US","line":20},{"name":"CONTROL_PIN_OFFSET","line":22},{"name":"CONTROL_PIN_COUNT","line":23},{"name":"FREQ_MIN_KHZ","line":25},{"name":"FREQ_MAX_KHZ","line":26},{"name":"DUAL_CHANNEL","line":28},{"name":"CHANNEL_PIN_GROUPS","line":29},{"name":"AvsChannel","line":35},{"name":"AvsState","line":41},{"name":"AvsMode","line":50},{"name":"AvsChannelConfig","line":57},{"name":"AvsPinConfig","line":65},{"name":"AvsVoltageLevel","line":71},{"name":"AvsStatus","line":77},{"name":"AvsConfig","line":86},{"name":"avs_voltage_from_level","line":102},{"name":"avs_level_from_voltage","line":108},{"name":"avs_control_code_from_level","line":120},{"name":"avs_level_from_control_code","line":126},{"name":"avs_voltage_valid","line":136},{"name":"avs_voltage_in_hysteresis","line":142},{"name":"avs_should_adjust","line":152},{"name":"avs_config_init","line":162},{"name":"avs_config_dual","line":176},{"name":"avs_config_adaptive","line":190},{"name":"avs_channel_init","line":208},{"name":"avs_channel_enable","line":220},{"name":"avs_channel_adjust","line":232},{"name":"new_mv","line":233},{"name":"avs_status_init","line":249},{"name":"avs_status_enable","line":262},{"name":"avs_status_calibrate","line":285},{"name":"avs_status_calibration_complete","line":298},{"name":"avs_status_fault","line":311},{"name":"avs_control_pins_start","line":328},{"name":"avs_control_pins_end","line":334},{"name":"avs_control_pins_secondary_start","line":340},{"name":"avs_control_pins_secondary_end","line":346},{"name":"avs_is_control_pin","line":352},{"name":"avs_is_control_pin_primary","line":358},{"name":"avs_is_control_pin_secondary","line":364},{"name":"avs_control_pin_for_bit","line":370},{"name":"encode_avs_96_cmd","line":388},{"name":"op_field","line":390},{"name":"level_field","line":391},{"name":"channel_field","line":392},{"name":"decode_avs_96_cmd","line":398},{"name":"opcode","line":399},{"name":"level","line":400},{"name":"channel","line":401}],"imports":[],"terms":["chips","euler","fpga","avs","controller","pins","voltage","min","max","step","levels","target","hysteresis","settling","control","pin","offset","count","freq","khz","dual","channel","groups","state","mode","config","level","status","valid","adjust","init","adaptive","enable","calibrate","calibration","complete","fault","start","end","secondary","primary","bit","encode","cmd","field","decode","opcode"]},{"id":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","sources":[{"repo":"ghashtag/t27","path":"specs/server/http.t27","health":"ok","module":"server-http"}],"description":"http.t27 — HTTP Server Specification HTTP listener, request/response handling, middleware","symbols":[{"name":"DEFAULT_PORT","line":20},{"name":"MAX_CONNECTIONS","line":23},{"name":"REQUEST_TIMEOUT","line":26},{"name":"METHOD_GET","line":29},{"name":"METHOD_POST","line":32},{"name":"METHOD_PUT","line":35},{"name":"METHOD_DELETE","line":38},{"name":"STATUS_OK","line":41},{"name":"STATUS_NOT_FOUND","line":44},{"name":"STATUS_ERROR","line":47},{"name":"CONTENT_TYPE_JSON","line":50},{"name":"CONTENT_TYPE_SSE","line":53},{"name":"HttpMethod","line":60},{"name":"HttpStatus","line":68},{"name":"HttpHeaders","line":74},{"name":"HttpRequest","line":81},{"name":"HttpResponse","line":89},{"name":"ServerConfig","line":96},{"name":"MiddlewareContext","line":104},{"name":"Middleware","line":111},{"name":"ServerState","line":114},{"name":"config_default","line":126},{"name":"response_ok","line":136},{"name":"response_not_found","line":149},{"name":"response_error","line":158},{"name":"request_empty","line":167},{"name":"middleware_context_create","line":177},{"name":"status_is_success","line":186},{"name":"status_is_client_error","line":191},{"name":"status_is_server_error","line":196},{"name":"request_get","line":201},{"name":"request_post","line":211},{"name":"method_to_string","line":225},{"name":"is_json_content","line":235},{"name":"is_sse_content","line":240},{"name":"cfg","line":249},{"name":"resp","line":256},{"name":"resp","line":261},{"name":"resp","line":266},{"name":"req","line":271},{"name":"body","line":277},{"name":"req","line":278},{"name":"status","line":284},{"name":"status","line":289},{"name":"status","line":294},{"name":"status","line":424}],"imports":[{"name":"std","line":12}],"terms":["http","default","port","max","connections","request","timeout","method","get","post","put","delete","status","found","content","json","sse","headers","response","config","middleware","state","empty","create","success","client","cfg","resp","req"]},{"id":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":16},{"name":"PHI_SQ","line":20},{"name":"PhiSplitResult","line":39},{"name":"phi_split","line":46},{"name":"available","line":47},{"name":"phi_sq","line":48},{"name":"exp_raw","line":51},{"name":"exp_bits","line":52},{"name":"mant_bits","line":55},{"name":"ratio","line":57},{"name":"phi_dist","line":58},{"name":"FormatComparison","line":72},{"name":"verify_phi_split","line":83},{"name":"phi_ratio_derivation","line":172},{"name":"sacred_connection","line":206},{"name":"compute_phi_distance","line":214},{"name":"ratio","line":215},{"name":"is_phi_optimal","line":219},{"name":"recommend_format","line":223},{"name":"round","line":231},{"name":"abs","line":237},{"name":"pow","line":244}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["fpga","numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","derivation","sacred","connection","compute","distance","optimal","recommend","round","abs","pow"]},{"id":"21484c1e4832c65088a8b16411adcd3cee75140dd0e98c49beb09f13acbf10dd","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/06_structs_enums_switch.t27","health":"ok","module":"tutorial-06-structs"}],"description":"06 — Structs, enums, and switch Lesson 6. Grouping fields, naming a fixed set of states, and choosing between them. . The important rule in this file: `switch` is an EXPRESSION here. The statement form parses without complaint and then discards the body of the","symbols":[{"name":"TRIT_NEG","line":14},{"name":"TRIT_ZERO","line":15},{"name":"TRIT_POS","line":16},{"name":"Sample","line":27},{"name":"make_sample","line":48},{"name":"empty_sample","line":52},{"name":"sample_value","line":57},{"name":"sample_is_valid","line":61},{"name":"Trit","line":71},{"name":"Rounding","line":77},{"name":"trit_to_number","line":91},{"name":"rounding_bias","line":99},{"name":"describe_width","line":109},{"name":"category","line":110},{"name":"s","line":124}],"imports":[],"terms":["tutorial","structs","enums","switch","trit","neg","zero","pos","sample","make","empty","valid","rounding","bias","describe","width","category"]},{"id":"2156697cc205f72ae4b52a06c19f439082ba597fe9dcba2c38c930bbe7281959","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/eternal_monitor.t27","health":"ok","module":"EternalMonitor"}],"description":"t27/specs/","symbols":[{"name":"Severity","line":13},{"name":"HealthStatus","line":19},{"name":"Config","line":25},{"name":"Alert","line":32},{"name":"Metrics","line":40},{"name":"SystemComponent","line":48},{"name":"EternalMonitor","line":55}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["eternal","monitor","severity","health","status","config","alert","metrics","system","component"]},{"id":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","sources":[{"repo":"ghashtag/t27","path":"specs/memory/formula_embed.t27","health":"ok","module":"FormulaEmbed"}],"description":"Module: Formula Embedding for Cortical Semantic Map Cortical topographic map analog: - Formula features mapped to 27-dimensional embedding space - L2 normalization ensures unit vectors - Features: value, complexity, phi-distance, sector-id","symbols":[{"name":"EMBEDDING_DIM","line":27},{"name":"FEATURE_VALUE","line":30},{"name":"FEATURE_COMPLEXITY","line":33},{"name":"FEATURE_PHI_DIST","line":36},{"name":"FEATURE_SECTOR_ID","line":39},{"name":"BASE_FEATURE_COUNT","line":42},{"name":"Sector","line":49},{"name":"Formula","line":60},{"name":"Embedding","line":69},{"name":"Features","line":76},{"name":"extract_features","line":88},{"name":"pad_features","line":98},{"name":"phi_pow","line":110},{"name":"embed_formula","line":118},{"name":"features","line":119},{"name":"embed_query","line":131},{"name":"idx","line":137},{"name":"byte","line":138},{"name":"phi_distance","line":147},{"name":"log_phi","line":148},{"name":"nearest","line":149},{"name":"phi_power","line":150},{"name":"formula","line":159},{"name":"embedding","line":166},{"name":"formula","line":171},{"name":"embedding","line":178},{"name":"norm","line":179},{"name":"formula","line":185},{"name":"features","line":192},{"name":"dist","line":199}],"imports":[{"name":"base::types::Float","line":16},{"name":"base::math::l2_norm","line":17},{"name":"base::math::normalize_l2","line":18},{"name":"base::math::phi_distance","line":19},{"name":"base::constants::PHI","line":20}],"terms":["memory","formula","embed","embedding","dim","feature","complexity","phi","dist","sector","base","count","features","extract","pad","pow","query","idx","byte","distance","log","nearest","power","norm"]},{"id":"2246bd2af584f9e2c3b1b8ade8c1032ef03aed4b1cbb46256a1c3af100be63e6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_sub.t27","health":"ok","module":"TriGftSub"}],"description":"TRI-NET verifiable GF-T16 SUBTRACTION (different-sign add): the deferred case of tri_gft_add. Adding two DIFFERENT-sign operands subtracts magnitudes, which can CANCEL leading bits and needs variable renormalization -- the hard float case. Correctness needs FULL PRECISION during the subtract (a truncated alignment then a left-renormalization amplifies the error and mis-rounds). With |a| >= |b| and d = offset_a - offset_b:","symbols":[{"name":"MANT_ONE","line":20},{"name":"MANT_BITS","line":21},{"name":"ALIGN_CAP","line":22},{"name":"hi_bit","line":26},{"name":"norm_sig_p","line":65},{"name":"gft_sub_offset_p","line":74},{"name":"gft_sub_mant_p","line":102},{"name":"norm_sig","line":126},{"name":"gft_sub_offset","line":129},{"name":"gft_sub_mant","line":132},{"name":"gft_sub_offset_c","line":138},{"name":"gft_sub_mant_c","line":153},{"name":"verify_gft_sub","line":171},{"name":"gft_sub_offset_c_p","line":180},{"name":"gft_sub_mant_c_p","line":195},{"name":"verify_gft_sub_p","line":210},{"name":"hi_bit_u64","line":226},{"name":"norm_sig_u64","line":293},{"name":"gft_sub_offset_u64","line":301},{"name":"gft_sub_mant_u64","line":328},{"name":"gft_sub_offset_c_u64","line":351},{"name":"gft_sub_mant_c_u64","line":366},{"name":"verify_gft_sub_u64","line":381}],"imports":[{"name":"base::types","line":18}],"terms":["net","gft","sub","mant","one","bits","align","cap","bit","norm","sig","offset","verify","u64"]},{"id":"22f85a9f634c0be06947237206a555589d0cd251507bdfa7933593c8f9abb51a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/merge_sort.t27","health":"ok","module":"TriMergeSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14},{"name":"sort_in_place","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","merge","place"]},{"id":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_framework.t27","health":"warn","module":"test_framework"}],"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","symbols":[{"name":"MAX_TESTS","line":7},{"name":"MAX_ASSERTIONS","line":8},{"name":"MAX_SUITES","line":9},{"name":"COVERAGE_TARGET","line":10},{"name":"create_test_result","line":13},{"name":"get_test_id","line":20},{"name":"get_test_status","line":24},{"name":"get_assertion_count","line":28},{"name":"get_failure_count","line":32},{"name":"STATUS_PASS","line":37},{"name":"STATUS_FAIL","line":38},{"name":"STATUS_SKIP","line":39},{"name":"STATUS_ERROR","line":40},{"name":"create_test_case","line":43},{"name":"get_test_case_id","line":50},{"name":"get_function_id","line":54},{"name":"get_test_input","line":58},{"name":"get_expected_output","line":62},{"name":"create_assertion","line":67},{"name":"get_assertion_type","line":74},{"name":"get_actual_value","line":78},{"name":"get_expected_value","line":82},{"name":"get_line_number","line":86},{"name":"ASSERT_EQUAL","line":91},{"name":"ASSERT_NOT_EQUAL","line":92},{"name":"ASSERT_GREATER","line":93},{"name":"ASSERT_LESS","line":94},{"name":"ASSERT_RANGE","line":95},{"name":"ASSERT_BITMASK","line":96},{"name":"check_assertion","line":99},{"name":"run_test_case","line":148},{"name":"create_test_suite","line":168},{"name":"get_suite_id","line":175},{"name":"get_suite_test_count","line":179},{"name":"get_setup_id","line":183},{"name":"get_teardown_id","line":187},{"name":"run_test_suite","line":192},{"name":"create_coverage_data","line":220},{"name":"get_coverage_function_id","line":227},{"name":"get_branch_count","line":231},{"name":"get_covered_branches","line":235},{"name":"get_line_count","line":239},{"name":"calculate_coverage_percentage","line":244},{"name":"aggregate_coverage","line":256},{"name":"create_property_test","line":275},{"name":"get_property_id","line":282},{"name":"get_generator_count","line":286},{"name":"get_property_test_count","line":290},{"name":"get_property_failure_count","line":294},{"name":"generate_test_input","line":299},{"name":"run_property_test","line":315},{"name":"create_test_summary","line":333},{"name":"get_total_tests","line":340},{"name":"get_passed_tests","line":344},{"name":"get_failed_tests","line":348},{"name":"get_skipped_tests","line":352},{"name":"calculate_pass_rate","line":357},{"name":"meets_coverage_target","line":369},{"name":"generate_test_report","line":378}],"imports":[{"name":"base::types","line":5}],"terms":["net","framework","max","assertions","suites","target","create","get","status","assertion","count","failure","pass","fail","skip","case","expected","actual","assert","equal","greater","less","range","bitmask","suite","setup","teardown","data","branch","covered","branches","calculate","percentage","aggregate","property","generator","generate","summary","total","passed","failed","skipped","rate","meets","report"]},{"id":"23e7da18cd8aeeb451b9608ef535c4e6d6795fd61a498dff72cd64af75e844d9","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_nn.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["benchmarks","bench"]},{"id":"2416eaf9b2f2d540b48a31f6006c594dac887d48f5f3d83faa7362c63466185b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/readme_index_divergence.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","readme","index","divergence"]},{"id":"24514db009440e8309a739afbbf9360fea66059fdee08a09eb0f87ad0d0dcf77","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/queen/lotus.t27","health":"warn","module":"queen_lotus"}],"description":"","symbols":[],"imports":[],"terms":["fpga","queen","lotus"]},{"id":"254048f421bfdd4950c606621dde53e6e7b157b8f22c6f105fb4cd16e3572132","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf64.t27","health":"warn","module":"triformat-gf64"}],"description":"gf64.t27 — GoldenFloat64 Encode/Decode GF64: 64-bit floating point with 1 sign + 18 exponent + 45 mantissa Bit layout: [S(1) E(18) M(45)] = [63:63][62:45][44:0]","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"SPECIAL_EXP","line":25},{"name":"MANT_DIVISOR","line":27},{"name":"MANT_DIVISOR_SHIFT","line":28},{"name":"PHI_BIAS","line":30},{"name":"GF64_ZERO_POS","line":33},{"name":"GF64_ZERO_NEG","line":34},{"name":"GF64_INF_POS","line":35},{"name":"GF64_INF_NEG","line":36},{"name":"GF64_NAN","line":37},{"name":"GF64","line":43},{"name":"gf64_extract_sign","line":52},{"name":"bit","line":53},{"name":"gf64_extract_exponent","line":60},{"name":"gf64_extract_mantissa","line":67},{"name":"gf64_from_components","line":73},{"name":"sign_bit","line":74},{"name":"gf64_is_zero","line":82},{"name":"gf64_is_special","line":88},{"name":"gf64_is_inf","line":94},{"name":"exp","line":95},{"name":"mant","line":96},{"name":"gf64_is_nan","line":102},{"name":"exp","line":103},{"name":"mant","line":104},{"name":"gf64_encode_f64","line":111},{"name":"sign","line":128},{"name":"abs_value","line":129},{"name":"f64_bits","line":132},{"name":"discarded","line":153},{"name":"gf64_decode_f64","line":172},{"name":"sign","line":189},{"name":"exp","line":190},{"name":"mant","line":191},{"name":"bias_adjusted","line":194},{"name":"mant_f64","line":195},{"name":"value","line":196},{"name":"gf64_add","line":203},{"name":"fa","line":204},{"name":"fb","line":205},{"name":"gf64_sub","line":211},{"name":"fa","line":212},{"name":"fb","line":213},{"name":"gf64_mul","line":219},{"name":"fa","line":220},{"name":"fb","line":221},{"name":"gf64_div","line":227},{"name":"fb","line":228},{"name":"fa","line":230},{"name":"fa","line":233},{"name":"gf64_abs","line":239},{"name":"gf64_neg","line":245},{"name":"gf64_is_equal","line":251},{"name":"gf64_is_greater","line":265},{"name":"sign_a","line":270},{"name":"sign_b","line":271},{"name":"gf64_max","line":284},{"name":"gf64_min","line":290},{"name":"gf64_clamp","line":296},{"name":"gf64_lerp","line":302},{"name":"ft","line":303},{"name":"result","line":304},{"name":"gf64_from_u32","line":310},{"name":"gf64_to_u32","line":317},{"name":"value","line":321},{"name":"gf64_from_i32","line":330},{"name":"gf64_to_i32","line":337},{"name":"value","line":341}],"imports":[],"terms":["chips","euler","numeric","gf64","triformat","sign","shift","exp","mant","mask","max","min","bias","special","divisor","phi","zero","pos","neg","inf","nan","extract","bit","exponent","mantissa","components","encode","f64","abs","bits","discarded","decode","adjusted","sub","mul","div","equal","greater","clamp","lerp","u32","i32"]},{"id":"25cdccd102bc427d00d9256fb1a8ede95a2f204de4c2178c2c83998c1c37c3ef","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/related_work_measured.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","related","work","measured"]},{"id":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_decision_gate.t27","health":"warn","module":"JonesTopologyDecisionGate"}],"description":"t27/specs/demos/jones_topology_decision_gate.t27 Decision Gate TH-01..TH-05 for H_1: Structure Similarity Classifier Tests if VSA dot_product + fixed phi constant can classify structures by complexity","symbols":[{"name":"TH_01_TARGET","line":19},{"name":"TH_02_THRESHOLD","line":23},{"name":"TH_03_THRESHOLD","line":27},{"name":"TH_04_EXPECTED","line":31},{"name":"TH_05_THRESHOLD","line":35},{"name":"tree_structure","line":42},{"name":"t","line":48},{"name":"cycle_structure","line":59},{"name":"t","line":65},{"name":"simple_structure","line":78},{"name":"t","line":84},{"name":"complex_structure","line":95},{"name":"t","line":101},{"name":"random_structure_a","line":111},{"name":"t","line":117},{"name":"random_structure_b","line":134},{"name":"t","line":140},{"name":"cosine_similarity","line":164},{"name":"dim","line":165},{"name":"dot","line":166},{"name":"norm_a","line":167},{"name":"norm_b","line":168}],"imports":[{"name":"base::types","line":8},{"name":"math::constants","line":9},{"name":"vsa::ops","line":10},{"name":"demos::jones_topology_filter","line":11}],"terms":["demos","jones","topology","decision","gate","target","threshold","expected","tree","structure","cycle","simple","complex","random","cosine","similarity","dim","dot","norm"]},{"id":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/discovery.t27","health":"ok","module":"Discovery"}],"description":"tri-net/specs/discovery.t27 Partial spec-first flip of src/discovery.rs (T27-first). The HELLO beacon byte layout `[src:4][seq:4][ts:8][n:1][heard:n*4][mac:16]` is pure integer arithmetic: frame length, MAC offset and the parse-side length gates are lifted here as the single source of truth. The HMAC itself and socket I/O stay in Rust (T27 cannot express them).","symbols":[{"name":"HDR_LEN","line":14},{"name":"HEARD_ENTRY_LEN","line":15},{"name":"MAC_LEN","line":16},{"name":"FRESHNESS_MS","line":18},{"name":"mac_offset","line":21},{"name":"hello_len","line":26},{"name":"parse_len_ok","line":32},{"name":"is_fresh","line":38}],"imports":[{"name":"base::types","line":11}],"terms":["net","discovery","hdr","len","heard","entry","mac","freshness","offset","hello","parse","fresh"]},{"id":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_orchestrator.t27","health":"ok","module":"network_orchestrator"}],"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_POLICIES","line":8},{"name":"OPTIMIZATION_INTERVAL","line":9},{"name":"COORDINATION_TIMEOUT","line":10},{"name":"create_network_policy","line":13},{"name":"get_policy_id","line":20},{"name":"get_policy_priority","line":24},{"name":"get_policy_scope","line":28},{"name":"get_policy_parameter","line":32},{"name":"SCOPE_NODE","line":37},{"name":"SCOPE_LINK","line":38},{"name":"SCOPE_NETWORK","line":39},{"name":"SCOPE_GLOBAL","line":40},{"name":"create_coordination_state","line":43},{"name":"get_coordinator_id","line":50},{"name":"get_coordination_state","line":54},{"name":"get_coordination_phase","line":58},{"name":"get_coordination_timeout","line":62},{"name":"STATE_IDLE","line":67},{"name":"STATE_INITIATING","line":68},{"name":"STATE_NEGOTIATING","line":69},{"name":"STATE_EXECUTING","line":70},{"name":"STATE_COMPLETED","line":71},{"name":"initiate_coordination","line":74},{"name":"advance_phase","line":80},{"name":"is_coordination_complete","line":102},{"name":"is_coordination_timeout","line":112},{"name":"apply_policy","line":126},{"name":"find_highest_priority_policy","line":146},{"name":"create_optimization_request","line":169},{"name":"get_optimization_request_id","line":176},{"name":"get_optimization_type","line":180},{"name":"get_optimization_target","line":184},{"name":"get_optimization_priority","line":188},{"name":"OPT_LOAD_BALANCE","line":193},{"name":"OPT_ENERGY_EFFICIENCY","line":194},{"name":"OPT_LATENCY_REDUCTION","line":195},{"name":"OPT_BANDWIDTH_MAXIMIZATION","line":196},{"name":"process_optimization","line":199},{"name":"create_network_action","line":218},{"name":"get_action_id","line":225},{"name":"get_action_type","line":229},{"name":"get_action_target","line":233},{"name":"get_action_parameter","line":237},{"name":"ACTION_ROUTE_UPDATE","line":242},{"name":"ACTION_POWER_ADJUST","line":243},{"name":"ACTION_BANDWIDTH_ALLOCATE","line":244},{"name":"ACTION_QOS_SET","line":245},{"name":"execute_action","line":248},{"name":"coordinate_nodes","line":268},{"name":"calculate_optimization_score","line":293},{"name":"detect_optimization_opportunity","line":310},{"name":"generate_optimization_plan","line":325},{"name":"monitor_network_health","line":330}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","orchestrator","max","nodes","policies","optimization","interval","coordination","timeout","create","policy","get","priority","scope","parameter","node","link","global","state","coordinator","phase","idle","initiating","negotiating","executing","completed","initiate","advance","complete","apply","find","highest","request","target","opt","load","balance","energy","efficiency","latency","reduction","bandwidth","maximization","process","action","route","power","adjust","allocate","qos","set","execute","coordinate","calculate","score","detect","opportunity","generate","plan","monitor","health"]},{"id":"27645eb752b97b7c214933e7630656b62dc6d2fe024bb6ef3bbe7cd50392cbb6","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_main.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["benchmarks","bench","main"]},{"id":"27a8513429971feaa0dc7ec9f186464b8c45ff756ad8c3ea7dddc06f53361dca","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bundle2.t27","health":"warn","module":null}],"description":"VSA Bundle2 — TTT Dogfood Phase 2 Majority vote of 2 ternary inputs Algorithm: if a == 0 return b; else if b == 0 return a; else return (a + b) / 2 Input: t0 = a, t1 = b Output: t0 = bundle2(a, b)","symbols":[],"imports":[],"terms":["fpga","tri27","vsa","bundle2"]},{"id":"27ce13836c16829e193d7d2f67fec01e89355285326a3ae356e6286732cec4a4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_activation.t27","health":"ok","module":"Gelu"}],"description":"t27/specs/","symbols":[{"name":"SQRT_2_OVER_PI","line":13},{"name":"SQRT_PI_OVER_2","line":14},{"name":"GELUConfig","line":20},{"name":"forward","line":29},{"name":"backward","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","gelu","sqrt","over","geluconfig","forward","backward"]},{"id":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf32.t27","health":"warn","module":"GF32"}],"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 0 32-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 8 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF32","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":71},{"name":"sign","line":72},{"name":"exp_biased","line":73},{"name":"mant","line":74},{"name":"exp_unbiased","line":82},{"name":"mant_normalized","line":89},{"name":"value","line":95},{"name":"max_value","line":107},{"name":"mant_max","line":108},{"name":"exp_max","line":109},{"name":"min_positive","line":113},{"name":"mant_min","line":114},{"name":"exp_min","line":115},{"name":"epsilon","line":119},{"name":"validate_format","line":127},{"name":"fmt","line":128},{"name":"MEMORY_RATIO_VS_FP32","line":150},{"name":"floor_log2","line":156},{"name":"extract_mantissa","line":170},{"name":"normalized","line":171},{"name":"frac","line":172},{"name":"max_mant","line":173},{"name":"clamp_u16","line":177},{"name":"pow","line":183},{"name":"is_integer","line":199},{"name":"ln_val","line":225},{"name":"ln_approx","line":230},{"name":"t","line":239},{"name":"t2","line":240},{"name":"t3","line":241},{"name":"t5","line":242},{"name":"t7","line":243},{"name":"exp_approx","line":249},{"name":"k","line":261},{"name":"k","line":272},{"name":"floor","line":288}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["chips","euler","numeric","gf32","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"286565825bcb25ec0c02233431ad90a5ce8ddfad30cf731df653bd1499208abd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/knuth_morris_pratt.t27","health":"ok","module":"TriKmp"}],"description":"t27/specs/","symbols":[{"name":"KMPPrefix","line":13},{"name":"build_prefix","line":23},{"name":"search","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","knuth","morris","pratt","kmp","kmpprefix","build","prefix"]},{"id":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/etx.t27","health":"ok","module":"MeshEtx"}],"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","symbols":[{"name":"OPTIMISTIC","line":9},{"name":"DEAD_EPS","line":10},{"name":"ONE_FP","line":11},{"name":"ALPHA_HALF","line":12},{"name":"alpha_from_window","line":15},{"name":"bool_to_sample","line":24},{"name":"fp_mul","line":33},{"name":"ewma_update","line":41},{"name":"is_dead","line":50},{"name":"calc_etx","line":55}],"imports":[{"name":"base::types","line":6}],"terms":["net","etx","mesh","optimistic","dead","eps","one","alpha","half","window","sample","mul","ewma","calc"]},{"id":"28ee4c6e2fb0f36392290331126c1c6c676ca970e4ac5053ca14c6fea743653a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/suffix_array.t27","health":"ok","module":"TriSuffixArray"}],"description":"t27/specs/","symbols":[{"name":"SuffixArray","line":13},{"name":"build","line":23},{"name":"search","line":28},{"name":"deinit","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","suffix","array","build","search","deinit"]},{"id":"2906d08dfadc55f37621e8e83a6f6ed4ee79105f826043582bbc3523c2b7ea88","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/server.t27","health":"ok","module":"lsp-server"}],"description":"lsp/server.t27 — LSP Server Lifecycle and Methods Server-side protocol initialization, lifecycle, and request handling","symbols":[{"name":"SERVER_NAME","line":24},{"name":"SERVER_VERSION","line":27},{"name":"MAX_FILE_SIZE","line":30},{"name":"MAX_DIAGNOSTICS","line":33},{"name":"DEFAULT_TRIGGER_CHARS","line":36},{"name":"REQUEST_ID_START","line":39},{"name":"ServerCapabilities","line":46},{"name":"InitializeResult","line":65},{"name":"ServerInfo","line":71},{"name":"ServerState","line":77},{"name":"DocumentState","line":86},{"name":"CompletionContext","line":96},{"name":"CompletionTriggerKind","line":102},{"name":"DocumentSymbolOptions","line":109},{"name":"WorkspaceSymbolOptions","line":114},{"name":"CodeActionContext","line":119},{"name":"RenameOptions","line":125},{"name":"PrepareRenameResult","line":130},{"name":"ServerErrorCode","line":136},{"name":"RequestError","line":150},{"name":"ShutdownResult","line":157},{"name":"ExitParams","line":162},{"name":"server_capabilities_default","line":171},{"name":"server_info_create","line":192},{"name":"initialize_result_create","line":200},{"name":"document_state_create","line":208},{"name":"completion_context_create","line":220},{"name":"code_action_context_create","line":228},{"name":"rename_options_create","line":236},{"name":"request_error_create","line":243},{"name":"shutdown_result_create","line":252},{"name":"exit_params_create","line":259},{"name":"server_is_initialized","line":266},{"name":"server_can_accept_requests","line":271},{"name":"next_request_id","line":276},{"name":"diagnostics_exceeds_max","line":281},{"name":"file_size_exceeds_max","line":286},{"name":"prepare_rename_result_create","line":291},{"name":"server_state_to_string","line":299},{"name":"error_is_request_cancelled","line":310},{"name":"error_is_content_modified","line":315},{"name":"error_code_to_string","line":320},{"name":"caps","line":340},{"name":"info","line":346},{"name":"result","line":351},{"name":"state","line":356},{"name":"ctx","line":361},{"name":"diagnostics","line":366},{"name":"ctx","line":367},{"name":"opts","line":372},{"name":"err","line":377},{"name":"result","line":382},{"name":"params","line":387},{"name":"id1","line":402},{"name":"id2","line":403},{"name":"str","line":418},{"name":"err","line":423},{"name":"err","line":428},{"name":"str","line":433}],"imports":[],"terms":["lsp","max","size","diagnostics","default","trigger","chars","request","start","capabilities","initialize","info","state","document","completion","kind","options","workspace","action","rename","prepare","shutdown","exit","params","create","initialized","accept","requests","exceeds","cancelled","content","modified","caps","ctx","opts","err","id1","id2","str"]},{"id":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_wire.t27","health":"ok","module":"TriA2AWire"}],"description":"TRI-NET A2A message wire layout inside the SEALED mesh payload. tri_a2a defines the message classes and port demux; this fixes the BYTE layout an endpoint parses after decrypting (a relay never parses it -- the payload is ciphertext, demuxed by port, per tri_a2a). Fixed-length header (no variable-length parsing, so no length-confusion / injection surface, unlike JSON-RPC A2A): [ msg_class(1) | task_id(4, big-endian) | skill(2, big-endian) | body... ]","symbols":[{"name":"OFF_CLASS","line":14},{"name":"OFF_TASK","line":15},{"name":"OFF_SKILL","line":16},{"name":"OFF_BODY","line":17},{"name":"HDR_LEN","line":18},{"name":"MSG_TASK_ASSIGN","line":21},{"name":"MSG_TASK_RESULT","line":22},{"name":"MSG_HEARTBEAT","line":23},{"name":"task_id","line":26},{"name":"skill_id","line":31},{"name":"body_offset","line":36},{"name":"class_valid","line":41},{"name":"body_has_receipt","line":48},{"name":"SIG_LEN","line":56},{"name":"body_has_signature","line":59},{"name":"sig_offset","line":65},{"name":"signed_result_len","line":70},{"name":"OFF_ASSIGN_OP","line":78},{"name":"OFF_ASSIGN_A_OFF","line":79},{"name":"OFF_ASSIGN_A_MANT","line":80},{"name":"OFF_ASSIGN_B_OFF","line":81},{"name":"OFF_ASSIGN_B_MANT","line":82},{"name":"ASSIGN_BODY_LEN","line":83},{"name":"assign_mant","line":86},{"name":"SHA_PAD_W","line":97},{"name":"OPERAND_BITS","line":98},{"name":"operand_pre","line":100}],"imports":[{"name":"base::types","line":12}],"terms":["net","a2a","wire","a2awire","off","class","skill","hdr","len","msg","assign","heartbeat","offset","valid","receipt","sig","signature","signed","mant","sha","pad","operand","bits","pre"]},{"id":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/local_processing.t27","health":"warn","module":"local_processing"}],"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","symbols":[{"name":"MAX_TASKS","line":7},{"name":"MAX_RESULTS","line":8},{"name":"PROCESSING_TIMEOUT","line":9},{"name":"TASK_PRIORITY_HIGH","line":10},{"name":"TASK_PRIORITY_MEDIUM","line":11},{"name":"TASK_PRIORITY_LOW","line":12},{"name":"create_task","line":15},{"name":"get_task_id","line":22},{"name":"get_priority","line":26},{"name":"get_data_size","line":30},{"name":"get_processing_time","line":34},{"name":"create_result","line":39},{"name":"get_result_task_id","line":46},{"name":"get_status","line":50},{"name":"get_result_size","line":54},{"name":"get_result_value","line":58},{"name":"STATUS_PENDING","line":63},{"name":"STATUS_PROCESSING","line":64},{"name":"STATUS_COMPLETED","line":65},{"name":"STATUS_FAILED","line":66},{"name":"process_task","line":69},{"name":"aggregate_results","line":81},{"name":"find_task_by_priority","line":95},{"name":"find_highest_priority_task","line":110},{"name":"count_pending_tasks","line":132},{"name":"calculate_processing_load","line":148},{"name":"can_accept_task","line":162},{"name":"find_completed_result","line":175},{"name":"calculate_efficiency","line":192},{"name":"aggregate_data","line":216},{"name":"filter_data","line":233},{"name":"make_local_decision","line":248},{"name":"create_resource_state","line":261},{"name":"get_cpu_usage","line":268},{"name":"get_memory_usage","line":272},{"name":"get_task_count","line":276},{"name":"get_available_resources","line":280},{"name":"update_resources","line":285},{"name":"has_resources","line":304}],"imports":[{"name":"base::types","line":5}],"terms":["net","local","processing","max","tasks","results","timeout","priority","high","medium","low","create","get","data","size","time","status","completed","failed","process","aggregate","find","highest","count","calculate","load","accept","efficiency","filter","make","decision","resource","state","cpu","usage","memory","available","resources"]},{"id":"299b19c47e8161d2318839d18418d581f18fde1d2373650067713805d07dc61a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fpga_synthesis_report.t27","health":"ok","module":"FpgaSynthesisReport"}],"description":"FPGA synthesis reporting - resource utilization and timing analysis Documents synthesis results for all 19 modules","symbols":[{"name":"RESOURCE_LUT","line":8},{"name":"RESOURCE_FF","line":9},{"name":"RESOURCE_DSP","line":10},{"name":"RESOURCE_BRAM","line":11},{"name":"TARGET_FREQ_50MHZ","line":14},{"name":"TARGET_FREQ_100MHZ","line":15},{"name":"TARGET_FREQ_150MHZ","line":16},{"name":"create_synthesis_result","line":19},{"name":"extract_utilization","line":25},{"name":"extract_timing_slack","line":29},{"name":"extract_achieved_freq","line":33},{"name":"timing_met","line":38},{"name":"utilization_acceptable","line":43},{"name":"calculate_resource_percentage","line":48},{"name":"estimate_total_resources","line":56},{"name":"frequency_achievable","line":63},{"name":"create_resource_summary","line":68},{"name":"extract_lut","line":76},{"name":"extract_ff","line":80},{"name":"extract_dsp","line":84},{"name":"extract_bram","line":88}],"imports":[{"name":"base::types","line":5}],"terms":["net","fpga","synthesis","report","resource","lut","dsp","bram","target","freq","50mhz","100mhz","150mhz","create","extract","utilization","timing","slack","achieved","met","acceptable","calculate","percentage","estimate","total","resources","frequency","achievable","summary"]},{"id":"29d997ada23e0a8aac40eced1499f42b697353ff8747db8b0d9a87ba5159b783","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf32_to_fp32.t27","health":"fail","module":"gf32-to-fp32"}],"description":"gf32_to_fp32.t27 — GF32 to FP32 Converter GoldenFloat32 to IEEE 754 binary32 format conversion","symbols":[{"name":"GF32_SIGN_BITS","line":12},{"name":"GF32_EXP_BITS","line":13},{"name":"GF32_MANT_BITS","line":14},{"name":"GF32_BIAS","line":15},{"name":"FP32_SIGN_BITS","line":17},{"name":"FP32_EXP_BITS","line":18},{"name":"FP32_MANT_BITS","line":19},{"name":"FP32_BIAS","line":20},{"name":"EXP_BIAS_DIFF","line":22},{"name":"MANTissa_MASK_GF32","line":24},{"name":"MANTissa_MASK_FP32","line":25},{"name":"Gf32","line":31},{"name":"Fp32","line":37},{"name":"ConversionResult","line":43},{"name":"ConversionConfig","line":50},{"name":"gf32_from_bits","line":62},{"name":"gf32_to_bits","line":72},{"name":"sign_field","line":73},{"name":"exp_field","line":74},{"name":"mant_field","line":75},{"name":"gf32_get_exp_biased","line":81},{"name":"gf32_is_zero","line":87},{"name":"gf32_is_subnormal","line":93},{"name":"gf32_is_normal","line":99},{"name":"gf32_is_infinity","line":105},{"name":"gf32_is_nan","line":111},{"name":"gf32_is_qnan","line":117},{"name":"gf32_is_snan","line":123},{"name":"fp32_from_bits","line":133},{"name":"fp32_to_bits","line":143},{"name":"sign_field","line":144},{"name":"exp_field","line":145},{"name":"mant_field","line":146},{"name":"fp32_get_exp_biased","line":152},{"name":"fp32_is_zero","line":163},{"name":"fp32_is_subnormal","line":169},{"name":"fp32_is_infinity","line":175},{"name":"fp32_is_nan","line":181},{"name":"fp32_is_qnan","line":187},{"name":"fp32_is_snan","line":193},{"name":"conversion_config_init","line":203},{"name":"conversion_config_no_saturation","line":213},{"name":"conversion_config_round_up","line":223},{"name":"gf32_to_fp32_raw","line":237},{"name":"gf32_to_fp32_with_result","line":288},{"name":"gf32_to_fp32","line":373},{"name":"result","line":374},{"name":"gf32_bits_to_fp32_bits","line":380},{"name":"gf","line":381},{"name":"fp","line":382},{"name":"gf32_bits_to_fp32_bits_with_result","line":388},{"name":"gf","line":389}],"imports":[],"terms":["chips","euler","fpga","gf32","fp32","sign","bits","exp","mant","bias","diff","mantissa","mask","conversion","config","field","get","biased","zero","subnormal","normal","infinity","nan","qnan","snan","init","saturation","round","raw"]},{"id":"2a263b75b4f49ba65564d52f7697195904806ffda509bdf7734719cd03732c7f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/parser.t27","health":"warn","module":null}],"description":"parser.t27 — Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","symbols":[{"name":"Parser","line":8},{"name":"Parser","line":16},{"name":"Parser","line":38},{"name":"Parser","line":50},{"name":"Parser","line":58},{"name":"Parser","line":63},{"name":"Parser","line":72},{"name":"Parser","line":79},{"name":"Parser","line":86},{"name":"Parser","line":96},{"name":"Parser","line":120},{"name":"Parser","line":158},{"name":"Parser","line":204},{"name":"Parser","line":222},{"name":"Parser","line":240},{"name":"Parser","line":258},{"name":"Parser","line":314},{"name":"Parser","line":365},{"name":"Parser","line":452},{"name":"parse","line":470},{"name":"ast_node_from_const","line":482},{"name":"ast_node_from_label","line":492}],"imports":[],"terms":["fpga","compiler","parser","parse","ast","node","label"]},{"id":"2a97610929c63610ed4580f07c5219bbd9d3a3070751ccb5e13765a97a157efe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attention.t27","health":"ok","module":"MultiHeadAttn"}],"description":"t27/specs/","symbols":[{"name":"MHAConfig","line":13},{"name":"forward","line":25}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","multi","head","attention","attn","mhaconfig","forward"]},{"id":"2acac9ea1af4c8fa8f1df4079f308d3062db60d037e73fb0f8e931d06715ff53","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/interval.t27","health":"ok","module":"TriInterval"}],"description":"t27/specs/","symbols":[{"name":"Interval","line":13},{"name":"IntervalSet","line":19},{"name":"create","line":28},{"name":"overlaps","line":33},{"name":"union","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","interval","set","create","overlaps","union"]},{"id":"2ad84e8eab783d71c61b110fa801823bbebc09638be1357944531dd5aac4b883","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/residual_connection.t27","health":"ok","module":"Residual"}],"description":"t27/specs/","symbols":[{"name":"forward","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","residual","connection","forward"]},{"id":"2af701e2a73721652a80378a3774bf6bdf73b3413906bcde7bd6014398f356ff","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/prims_mst.t27","health":"ok","module":"TriPrimsMst"}],"description":"t27/specs/","symbols":[{"name":"MSTResult","line":14},{"name":"mst","line":25}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"TriGraphBfs::Graph","line":8}],"terms":["graph","prims","mst","mstresult"]},{"id":"2b419fc69d1704d6bcd88d071fcb8f278a5d4d910dd89d541756adc261e995bb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/http.t27","health":"ok","module":"TriHttp"}],"description":"t27/specs/","symbols":[{"name":"HttpMethod","line":13},{"name":"HttpStatus","line":17},{"name":"Url","line":22},{"name":"method_to_string","line":36},{"name":"status_from_code","line":41},{"name":"is_success","line":46},{"name":"is_redirect","line":51},{"name":"is_client_error","line":56},{"name":"is_server_error","line":61},{"name":"parse_url","line":66}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","http","method","status","url","success","redirect","client","parse"]},{"id":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_trace.t27","health":"ok","module":"VcdTrace"}],"description":"t27/specs/fpga/vcd_trace.t27 T27 VCD Trace Emission Specification Emits Value Change Dump traces from HIR simulation IEEE 1364-2001 VCD format with variable sections Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"VcdVarKind","line":13},{"name":"VcdScopeKind","line":22},{"name":"VcdVar","line":30},{"name":"vcd_var","line":37},{"name":"var_wire","line":46},{"name":"var_reg","line":50},{"name":"VcdChange","line":56},{"name":"vcd_change","line":63},{"name":"VcdHeader","line":74},{"name":"vcd_header","line":81},{"name":"VcdTrace","line":92},{"name":"vcd_trace","line":97},{"name":"var_ident_index","line":106},{"name":"format_binary","line":110},{"name":"changes_at_timestamp","line":114},{"name":"earliest_change","line":126},{"name":"latest_change","line":141},{"name":"trace_duration_ps","line":156},{"name":"validate_var","line":165},{"name":"validate_change","line":176}],"imports":[],"terms":["fpga","vcd","trace","var","kind","scope","wire","reg","header","ident","index","format","binary","timestamp","earliest","latest","duration","validate"]},{"id":"2b4c28dfcddbd8861d6e47080b8dab052a46a065a4e5ff773523abd15afa6fbc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/client.t27","health":"warn","module":"TrinityMemoryRPCClient"}],"description":"Native JSON-RPC client domain. Include json.h and json_writer.h first. Caller-owned live, nonoverlapping buffers; no allocation or network here. Scratch tokens/arena and partial output may change on failure. Reply is committed only after validation. IDs are 32 lowercase hexadecimal bytes.","symbols":[{"name":"TM_RPC_ERR_TRANSPORT","line":6},{"name":"TM_RPC_ERR_LIMIT","line":7},{"name":"TM_RPC_ERR_PARAMS","line":8},{"name":"TMRPCWorkspace","line":9},{"name":"TMRPCReply","line":14},{"name":"tm_rpc_id_valid","line":16},{"name":"tm_rpc_random_id","line":25},{"name":"tm_rpc_literal","line":39},{"name":"tm_rpc_text","line":44},{"name":"tm_rpc_field","line":51},{"name":"tm_rpc_parse_depth","line":66},{"name":"tm_rpc_parse","line":74},{"name":"tm_rpc_prepare","line":77},{"name":"tm_rpc_id_matches","line":107},{"name":"tm_rpc_validate","line":117}],"imports":[],"terms":["dmitrii","memory","client","rpcclient","rpc","err","transport","limit","params","tmrpcworkspace","tmrpcreply","valid","random","literal","text","field","parse","depth","prepare","matches","validate"]},{"id":"2b84c9b64ceca23a2795f512e21e12510357056268de9b8e1cd013ca89682fa1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/terminal.t27","health":"ok","module":"TriTerminal"}],"description":"t27/specs/","symbols":[{"name":"Color","line":13},{"name":"Style","line":17},{"name":"get_size","line":26},{"name":"colorize","line":31},{"name":"reset","line":36}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","terminal","color","style","get","size","colorize","reset"]},{"id":"2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/clock_domain.t27","health":"ok","module":"ClockDomain"}],"description":"t27/specs/fpga/clock_domain.t27 Clock Domain Abstraction for Trinity T27 FPGA HIR Defines clock sources, PLL configs, and cross-domain crossing Uses flat structs (parser-compatible)","symbols":[{"name":"ClkSrcKind","line":12},{"name":"ClkEdge","line":21},{"name":"CrossStrategy","line":28},{"name":"ClkSource","line":37},{"name":"ClkDomain","line":47},{"name":"ClockCrossing","line":56},{"name":"ext_clock","line":65},{"name":"pll_clock","line":75},{"name":"make_domain","line":85},{"name":"make_crossing","line":94},{"name":"is_external","line":105},{"name":"is_pll","line":109},{"name":"period_ns","line":113},{"name":"half_period_ns","line":120},{"name":"same_domain","line":124},{"name":"needs_crossing","line":128},{"name":"crossing_data_bits","line":138},{"name":"is_async_cross","line":142}],"imports":[],"terms":["fpga","clock","domain","clk","kind","edge","cross","strategy","crossing","ext","pll","make","external","period","half","data","bits","async"]},{"id":"2bda99182d7c0c06e381bf777dd46df1ff51c98688439cd700498ee1cbf5f192","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/graph_drift_detection.t27","health":"ok","module":"GraphDriftDetection"}],"description":"t27/specs/test_framework/graph_drift_detection.t27 Ring 054 -- Graph Drift Detection for Structural Change Detection Monitors structural changes in mathematical and physics specifications over time","symbols":[{"name":"GraphNode","line":15},{"name":"GraphEdge","line":28},{"name":"DriftGraph","line":37},{"name":"DriftConfig","line":46},{"name":"NodeType","line":58},{"name":"EdgeRelation","line":68},{"name":"default_drift_config","line":77},{"name":"parse_t27_spec_to_graph","line":95},{"name":"content","line":96},{"name":"node","line":105},{"name":"node","line":108},{"name":"node","line":111},{"name":"node","line":114},{"name":"node","line":117},{"name":"parse_constant","line":135},{"name":"parts","line":136},{"name":"name","line":137},{"name":"value_expr","line":138},{"name":"claim_id","line":139},{"name":"tolerance_tier","line":140},{"name":"parse_function","line":156},{"name":"name","line":157},{"name":"signature","line":158},{"name":"claim_id","line":159},{"name":"tolerance_tier","line":160},{"name":"parse_test","line":176},{"name":"name","line":177},{"name":"claim_id","line":178},{"name":"tolerance_tier","line":179},{"name":"DriftResult","line":199},{"name":"DriftChange","line":209},{"name":"ChangeType","line":219},{"name":"detect_graph_drift","line":232},{"name":"total_drift","line":250},{"name":"has_drift","line":251},{"name":"calculate_semantic_drift","line":264},{"name":"value_diff","line":272},{"name":"relative_diff","line":273},{"name":"calculate_structural_drift","line":302},{"name":"calculate_performance_drift","line":357},{"name":"DriftMonitor","line":368},{"name":"create_drift_monitor","line":376},{"name":"monitor_drift","line":386},{"name":"result","line":387},{"name":"trigger_drift_alert","line":399},{"name":"alert_message","line":400},{"name":"run_drift_detection_tests","line":419},{"name":"config","line":420},{"name":"baseline_path","line":424},{"name":"baseline_graph","line":425},{"name":"current_path","line":428},{"name":"current_graph","line":430},{"name":"drift_result","line":431},{"name":"extract_module_name","line":534},{"name":"parts","line":535},{"name":"extract_value_expression","line":539},{"name":"start","line":540},{"name":"end","line":541},{"name":"extract_claim_id","line":545},{"name":"start","line":547},{"name":"end","line":548},{"name":"extract_tolerance_tier","line":554},{"name":"start","line":556},{"name":"end","line":557},{"name":"tier_str","line":558},{"name":"evaluate_expression","line":564},{"name":"extract_dependencies_from_expression","line":569},{"name":"extract_dependencies_from_signature","line":574},{"name":"extract_test_dependencies","line":579},{"name":"extract_version","line":584},{"name":"get_current_timestamp","line":589},{"name":"compute_graph_hash","line":594},{"name":"generate_drift_details","line":599},{"name":"all_results_have_claim_ids","line":603},{"name":"create_test_graph","line":608},{"name":"create_test_node","line":619},{"name":"create_modified_test_graph","line":634},{"name":"log_error","line":639},{"name":"parse_tolerance_tier","line":643}],"imports":[{"name":"test_framework::core","line":7},{"name":"std::collections","line":8}],"terms":["framework","graph","drift","detection","node","edge","config","relation","default","parse","content","constant","parts","expr","claim","tolerance","tier","signature","detect","total","calculate","semantic","diff","relative","structural","performance","monitor","create","trigger","alert","baseline","path","extract","expression","start","end","str","evaluate","dependencies","get","timestamp","compute","hash","generate","details","results","ids","modified","log"]},{"id":"2c293bdfba35cb5a347420b69e15cbc1f14300e6990ba46f9e4cb860b1d3b0e4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_payout.t27","health":"ok","module":"TriComputePayout"}],"description":"TRI-NET end-to-end payout: compose reputation weighting (tri_compute_reputation) with the pool split (tri_compute_pool) into one reward distribution, and pin the property that matters when the two are combined: a REPUTATION-WEIGHTED floor-div split still never over-issues (sum of shares <= pool). Higher-reputation nodes earn a larger share for equal raw work; a slashed (low-reputation) node earns less; an empty round pays nobody. Self-contained (mirrors the two source specs)","symbols":[{"name":"weighted","line":19},{"name":"total_weighted3","line":30},{"name":"payout","line":41}],"imports":[{"name":"base::types","line":10}],"terms":["net","compute","payout","weighted","total","weighted3"]},{"id":"2c8ebd950d7cc378ecde0cdbc1086aa4fea654059f21939ff4d11911f6eee458","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/writer.t27","health":"ok","module":"TriWriter"}],"description":"t27/specs/","symbols":[{"name":"Writer","line":13},{"name":"pure","line":23},{"name":"tell","line":28},{"name":"listen","line":33},{"name":"censor","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["writer","pure","tell","listen","censor"]},{"id":"2d603f5515afaf26e741ea96ddc89c131a83ab75694988fd7bd7e795c6933176","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/memory_tb.t27","health":"ok","module":"Memory_Testbench"}],"description":"t27/specs/fpga/testbench/memory_tb.t27 Memory Subsystem Testbench Tests BRAM, register file, and memory-mapped I/O operations","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"MEM_BASE","line":12},{"name":"MEM_SIZE","line":13},{"name":"tick","line":28},{"name":"reset","line":33},{"name":"mem_write","line":41},{"name":"mem_read","line":51}],"imports":[{"name":"fpga::memory::Memory","line":8}],"terms":["fpga","testbench","memory","clk","period","sim","timeout","mem","base","size","tick","reset","write","read"]},{"id":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/tri_net_formats.t27","health":"warn","module":"TriNetFormats"}],"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","symbols":[{"name":"FormatCategory","line":29},{"name":"GF64Format","line":49},{"name":"GF128Format","line":60},{"name":"GF256Format","line":71},{"name":"FP32Format","line":86},{"name":"FP16Format","line":96},{"name":"BF16Format","line":107},{"name":"FP8E4M3Format","line":122},{"name":"FP8E5M2Format","line":133},{"name":"Int4Format","line":148},{"name":"Int8Format","line":157},{"name":"NF4_LEVELS","line":179},{"name":"NF4Format","line":186},{"name":"Posit16Format","line":210},{"name":"Binary16Format","line":228},{"name":"FormatDescriptor","line":242},{"name":"TRI_NET_FORMATS","line":256},{"name":"get_format_by_name","line":488},{"name":"get_format_by_bits","line":497},{"name":"get_phi_optimal_format","line":509},{"name":"format_to_f32","line":523},{"name":"f32_to_format","line":539},{"name":"gf_to_f32","line":559},{"name":"sign","line":561},{"name":"exp_mask","line":562},{"name":"mant_mask","line":563},{"name":"exp_biased","line":564},{"name":"mant","line":565},{"name":"exp_unbiased","line":573},{"name":"max_mant","line":580},{"name":"mant_normalized","line":581},{"name":"value","line":587},{"name":"f32_to_gf","line":595},{"name":"sign","line":600},{"name":"abs_val","line":601},{"name":"exp_unbiased","line":604},{"name":"max_exp","line":608},{"name":"max_mant","line":614},{"name":"normalized","line":615},{"name":"frac","line":616},{"name":"mant","line":617},{"name":"clamped_mant","line":618},{"name":"ieee754_to_f32","line":629},{"name":"f32_to_ieee754","line":640},{"name":"posit_to_f32","line":655},{"name":"f32_to_posit","line":661},{"name":"int_to_f32","line":671},{"name":"sign_bit","line":673},{"name":"magnitude","line":674},{"name":"max_val","line":675},{"name":"f32_to_int","line":683},{"name":"max_val","line":684},{"name":"min_val","line":685},{"name":"nf4_to_f32","line":704},{"name":"index","line":705},{"name":"f32_to_nf4","line":709},{"name":"dist","line":715},{"name":"floor_log2","line":730},{"name":"pow","line":744},{"name":"is_integer","line":755},{"name":"ln_val","line":779},{"name":"ln_approx","line":783},{"name":"t","line":791},{"name":"t2","line":792},{"name":"t3","line":793},{"name":"exp_approx","line":798},{"name":"abs","line":823},{"name":"golden_fmts","line":960}],"imports":[{"name":"math::constants","line":20},{"name":"math::sacred_physics","line":21},{"name":"numeric::goldenfloat_family","line":22}],"terms":["chips","euler","numeric","net","formats","format","category","gf64format","gf128format","gf256format","fp32format","fp16format","bf16format","fp8e4m3format","fp8e5m2format","int4format","int8format","nf4","levels","nf4format","posit16format","binary16format","descriptor","get","bits","phi","optimal","f32","sign","exp","mask","mant","biased","unbiased","max","normalized","abs","val","frac","clamped","ieee754","posit","int","bit","magnitude","min","index","dist","floor","log2","pow","integer","approx","golden","fmts"]},{"id":"2e87c761814045a402179280a8406e4cffaec0795497a4a7e042d973bf2660f0","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/parser.t27","health":"warn","module":"parser"}],"description":"parser.t27 -- Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","symbols":[{"name":"Parser","line":10},{"name":"Parser","line":18},{"name":"p","line":19},{"name":"Parser","line":52},{"name":"prev","line":53},{"name":"Parser","line":71},{"name":"Parser","line":86},{"name":"Parser","line":91},{"name":"Parser","line":100},{"name":"Parser","line":107},{"name":"Parser","line":114},{"name":"Parser","line":124},{"name":"test_block","line":134},{"name":"inv","line":143},{"name":"rule","line":152},{"name":"Parser","line":208},{"name":"const_token","line":216},{"name":"name","line":217},{"name":"value","line":218},{"name":"const_def","line":220},{"name":"symbol","line":233},{"name":"Parser","line":246},{"name":"data_token","line":247},{"name":"data_section","line":250},{"name":"label_token","line":265},{"name":"Parser","line":292},{"name":"dword_token","line":293},{"name":"value","line":294},{"name":"decl","line":296},{"name":"Parser","line":310},{"name":"dspace_token","line":311},{"name":"value","line":312},{"name":"decl","line":314},{"name":"Parser","line":328},{"name":"dtrit_token","line":329},{"name":"value","line":330},{"name":"decl","line":332},{"name":"Parser","line":346},{"name":"code_token","line":347},{"name":"label_token","line":365},{"name":"label_name","line":366},{"name":"symbol","line":373},{"name":"inst","line":388},{"name":"Parser","line":402},{"name":"opcode_token","line":403},{"name":"opcode","line":404},{"name":"operand","line":418},{"name":"op","line":427},{"name":"Parser","line":453},{"name":"reg_token","line":458},{"name":"value_token","line":472},{"name":"label_token","line":485},{"name":"lbracket_token","line":498},{"name":"reg_token","line":505},{"name":"op","line":513},{"name":"value_token","line":514},{"name":"Parser","line":540},{"name":"upper","line":541},{"name":"Parser","line":562},{"name":"spec_token","line":563},{"name":"name_token","line":564},{"name":"spec_decl","line":566},{"name":"Parser","line":583},{"name":"test_token","line":584},{"name":"name_token","line":585},{"name":"var_token","line":605},{"name":"expr_token","line":608},{"name":"var_token","line":623},{"name":"expr_token","line":625},{"name":"expr_token","line":654},{"name":"expr_token","line":663},{"name":"Parser","line":685},{"name":"inv_token","line":686},{"name":"name_token","line":687},{"name":"inv_decl","line":703},{"name":"Parser","line":717},{"name":"rule_token","line":718},{"name":"name_token","line":719},{"name":"expr_token","line":733},{"name":"Parser","line":751},{"name":"spec","line":760},{"name":"Parser","line":777},{"name":"Parser","line":789},{"name":"test_token","line":790},{"name":"name_token","line":810},{"name":"id","line":821},{"name":"test_case","line":839},{"name":"Parser","line":863},{"name":"inv_token","line":864},{"name":"name_token","line":884},{"name":"id","line":892},{"name":"inv_decl","line":908},{"name":"Parser","line":930},{"name":"bench_token","line":931},{"name":"name_token","line":951},{"name":"id","line":960},{"name":"bench_decl","line":977},{"name":"parse","line":1000},{"name":"tokens","line":1009},{"name":"ast_node_from_const","line":1019},{"name":"ast_node_from_label","line":1029},{"name":"Parser","line":1043},{"name":"next_c","line":1056},{"name":"codepoint","line":1057},{"name":"Parser","line":1075},{"name":"Parser","line":1086},{"name":"Parser","line":1103},{"name":"Parser","line":1114},{"name":"token","line":1118},{"name":"Parser","line":1131},{"name":"Parser","line":1138},{"name":"lower","line":1139},{"name":"source","line":1170},{"name":"ctx","line":1171},{"name":"source","line":1178},{"name":"ctx","line":1179},{"name":"source","line":1187},{"name":"ctx","line":1188},{"name":"source","line":1195},{"name":"ctx","line":1196},{"name":"source","line":1203},{"name":"ctx","line":1204},{"name":"source","line":1211},{"name":"ctx","line":1212},{"name":"source","line":1220},{"name":"ctx","line":1221},{"name":"source","line":1228},{"name":"ctx","line":1229},{"name":"source","line":1236},{"name":"ctx","line":1237},{"name":"source","line":1253},{"name":"ctx","line":1254},{"name":"source","line":1261},{"name":"ctx","line":1262},{"name":"source","line":1268},{"name":"source","line":1274},{"name":"ctx","line":1275},{"name":"source","line":1287},{"name":"source","line":1292}],"imports":[],"terms":["compiler","parser","prev","block","inv","rule","token","def","data","section","label","dword","decl","dspace","dtrit","inst","opcode","operand","reg","lbracket","upper","var","expr","case","bench","parse","tokens","ast","node","codepoint","lower","ctx"]},{"id":"2eade0fba9b90159413821a1a7dc079d197b1fd7d849c6825e4cfee8feda6d51","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/mac_tb.t27","health":"warn","module":"MAC_Testbench"}],"description":"t27/specs/fpga/testbench/mac_tb.t27 MAC Unit Testbench Specification Tests ternary LUT multiplication, MAC operations, and accumulator 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TIMESCALE","line":15},{"name":"CLK_PERIOD","line":16},{"name":"SIM_TIMEOUT","line":17},{"name":"TRIT_POS","line":20},{"name":"TRIT_ZERO","line":21},{"name":"TRIT_NEG","line":22},{"name":"generate_clock","line":52},{"name":"wait_cycles","line":59},{"name":"wait_mac_ready","line":69},{"name":"wait_mac_done","line":79},{"name":"make_trit_word","line":89},{"name":"trit","line":94},{"name":"encoded","line":95},{"name":"test_mac_lut_pos_pos","line":109},{"name":"a","line":110},{"name":"b","line":111},{"name":"result","line":112},{"name":"trit","line":113},{"name":"test_mac_lut_neg_neg","line":120},{"name":"a","line":121},{"name":"b","line":122},{"name":"result","line":123},{"name":"trit","line":124},{"name":"test_mac_lut_pos_neg","line":131},{"name":"a","line":132},{"name":"b","line":133},{"name":"result","line":134},{"name":"trit","line":135},{"name":"test_mac_lut_with_zero","line":142},{"name":"a","line":143},{"name":"b","line":144},{"name":"result","line":145},{"name":"trit","line":146},{"name":"test_mac_all_trit_combinations","line":153},{"name":"a_vals","line":154},{"name":"b_vals","line":155},{"name":"a_word","line":163},{"name":"b_word","line":164},{"name":"result","line":165},{"name":"trit","line":166},{"name":"expected","line":169},{"name":"test_mac_27_trit_word","line":182},{"name":"a","line":194},{"name":"b","line":195},{"name":"result","line":196},{"name":"test_mac_cycle_zero_acc","line":205},{"name":"a","line":206},{"name":"b","line":207},{"name":"result","line":208},{"name":"test_mac_cycle_with_acc","line":216},{"name":"a","line":217},{"name":"b","line":218},{"name":"result","line":219},{"name":"test_mac_dot_product","line":227},{"name":"vec1","line":228},{"name":"vec2","line":232},{"name":"result","line":237},{"name":"test_mac_reset","line":244},{"name":"acc0","line":253},{"name":"acc1","line":254},{"name":"status0","line":255},{"name":"status1","line":256},{"name":"test_mac_unit_independence","line":266},{"name":"a","line":267},{"name":"b","line":268},{"name":"acc0_before","line":272},{"name":"acc1_after","line":276},{"name":"acc0_after","line":277},{"name":"test_mac_invalid_unit","line":286},{"name":"a","line":287},{"name":"b","line":288},{"name":"result","line":289},{"name":"test_mac_overflow_handling","line":297},{"name":"large_acc","line":298},{"name":"a","line":299},{"name":"b","line":300},{"name":"result","line":302},{"name":"status","line":306},{"name":"test_mac_parallel_units","line":312},{"name":"a","line":313},{"name":"b","line":314},{"name":"results","line":315},{"name":"test_mac_latency","line":335},{"name":"a","line":336},{"name":"b","line":337},{"name":"start_cycle","line":339},{"name":"cycles","line":343},{"name":"run_tests","line":352}],"imports":[{"name":"base::types","line":9},{"name":"fpga::mac::ZeroDSP_MAC","line":10}],"terms":["fpga","testbench","mac","timescale","clk","period","sim","timeout","trit","pos","zero","neg","generate","clock","wait","cycles","ready","done","make","word","encoded","lut","combinations","vals","expected","cycle","acc","dot","product","vec1","vec2","reset","acc0","acc1","status0","status1","unit","independence","invalid","overflow","handling","large","status","parallel","units","results","latency","start"]},{"id":"2f8658ded229cb7cce70a146e20d08c970b7aa97a702665abe125b08e249bb59","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_fec.t27","health":"ok","module":"TriFec"}],"description":"TRI-NET relay FEC: single-erasure XOR recovery, so the integrity gate can RECOVER a channel-corrupted datagram instead of dropping it. A group of K data datagrams carries one parity datagram = their XOR (word by word). If exactly one datagram in the group fails its digest, the relay reconstructs it from the parity and the survivors, recomputes its digest, and -- if it now matches -- meters it. This raises the accepted fraction of an honest relay on a lossy radio link. Two or more","symbols":[{"name":"fec_parity4","line":14},{"name":"fec_xor","line":19},{"name":"fec_recover","line":25}],"imports":[{"name":"base::types","line":11}],"terms":["net","fec","parity4","xor","recover"]},{"id":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_trace_player.t27","health":"warn","module":"TrinityFpgaTracePlayerT27"}],"description":"","symbols":[{"name":"S_IDLE","line":14},{"name":"S_LINE_START","line":15},{"name":"S_LINE_WAIT","line":16},{"name":"S_VEC_BEGIN","line":17},{"name":"S_VEC_RESET","line":18},{"name":"S_STEP_APPLY","line":19},{"name":"S_STEP_ENABLE","line":20},{"name":"S_STEP_WAIT","line":21},{"name":"S_STEP_CAPTURE","line":22},{"name":"S_STEP_COMPARE","line":23},{"name":"S_STEP_NEXT","line":24},{"name":"S_VEC_END","line":25},{"name":"S_VEC_K","line":26},{"name":"S_VEC_K_NEXT","line":27},{"name":"S_FREE_BEGIN","line":28},{"name":"S_FREE_VEC","line":29},{"name":"S_FREE_RESET","line":30},{"name":"S_FREE_LOAD","line":31},{"name":"S_FREE_CONSUME","line":32},{"name":"S_FREE_DRAIN","line":33},{"name":"S_FREE_REPORT","line":34},{"name":"S_FREE_NEXT","line":35},{"name":"S_WL_RESET","line":36},{"name":"S_WL_LOAD","line":37},{"name":"S_WL_START","line":38},{"name":"S_WL_STREAM","line":39},{"name":"S_WL_NEXT","line":40},{"name":"S_WL_FINISH","line":41},{"name":"S_WL_REPORT_W","line":42},{"name":"S_WL_REPORT_R","line":43},{"name":"S_WL_REPORT_T","line":44},{"name":"S_EDGE_RESET","line":45},{"name":"S_EDGE_LOAD","line":46},{"name":"S_EDGE_START","line":47},{"name":"S_EDGE_STREAM","line":48},{"name":"S_EDGE_WAIT","line":49},{"name":"S_EDGE_CONSUME","line":50},{"name":"S_EDGE_LINE_A","line":51},{"name":"S_EDGE_LINE_NEXT","line":52},{"name":"S_TOTALS","line":53},{"name":"S_DONE","line":54},{"name":"TAG_H","line":56},{"name":"TAG_V","line":57},{"name":"TAG_C","line":58},{"name":"TAG_E","line":59},{"name":"TAG_K","line":60},{"name":"TAG_F","line":61},{"name":"TAG_W","line":62},{"name":"TAG_R","line":63},{"name":"TAG_T","line":64},{"name":"TAG_X","line":65},{"name":"TAG_A","line":66},{"name":"TAG_D","line":67},{"name":"WORKLOAD_WORDS","line":68},{"name":"REPORT_FORMAT","line":69},{"name":"bit","line":139},{"name":"popcount5","line":143},{"name":"workload_lane","line":147},{"name":"workload_beat","line":151},{"name":"signed_word","line":157},{"name":"on_clock","line":170}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","trace","player","idle","start","wait","vec","begin","reset","step","apply","enable","capture","compare","end","free","load","consume","drain","report","stream","finish","edge","totals","done","tag","workload","words","format","bit","popcount5","lane","beat","signed","word","clock"]},{"id":"2fe04165a0c924d887cad57ed1d7349fb22e5957fab44f48e33dfc2dd955e589","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/cross_entropy_loss.t27","health":"ok","module":"CrossEntropy"}],"description":"t27/specs/","symbols":[{"name":"MIN_LOG_PROB","line":13},{"name":"DEFAULT_LABEL_SMOOTHING","line":14},{"name":"CrossEntropyConfig","line":20},{"name":"ReductionType","line":26},{"name":"forward","line":39},{"name":"backward","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","cross","entropy","min","log","prob","default","label","smoothing","config","reduction","forward","backward"]},{"id":"303799b32c51f84cea3ebabfa4e586d88054a585b28c70f2f5cbd3c58b876cdd","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/conv2d_layer.t27","health":"ok","module":"Conv2d"}],"description":"t27/specs/","symbols":[{"name":"MIN_KERNEL_SIZE","line":13},{"name":"MAX_KERNEL_SIZE","line":14},{"name":"Conv2DConfig","line":20},{"name":"PaddingMode","line":31},{"name":"forward","line":45},{"name":"backward","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","conv2d","layer","min","kernel","size","max","conv2dconfig","padding","mode","forward","backward"]},{"id":"304dbefaab41ae6360d9007359ccd36bab0e9ef78e8cc2e00e7ab0b41269b0f6","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf32.t27","health":"warn","module":"GF32"}],"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 -- 32-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 8 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF32","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":71},{"name":"sign","line":72},{"name":"exp_biased","line":73},{"name":"mant","line":74},{"name":"exp_unbiased","line":82},{"name":"mant_normalized","line":89},{"name":"value","line":95},{"name":"max_value","line":107},{"name":"mant_max","line":108},{"name":"exp_max","line":109},{"name":"min_positive","line":113},{"name":"mant_min","line":114},{"name":"exp_min","line":115},{"name":"epsilon","line":119},{"name":"validate_format","line":127},{"name":"fmt","line":128},{"name":"MEMORY_RATIO_VS_FP32","line":150},{"name":"floor_log2","line":156},{"name":"extract_mantissa","line":170},{"name":"normalized","line":171},{"name":"frac","line":172},{"name":"max_mant","line":173},{"name":"clamp_u16","line":177},{"name":"pow","line":183},{"name":"is_integer","line":199},{"name":"ln_val","line":225},{"name":"ln_approx","line":230},{"name":"t","line":239},{"name":"t2","line":240},{"name":"t3","line":241},{"name":"t5","line":242},{"name":"t7","line":243},{"name":"exp_approx","line":249},{"name":"k","line":261},{"name":"k","line":272},{"name":"floor","line":288}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf32","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/orphan_detection.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-011: Orphaned Session Detection","symbols":[{"name":"Session","line":29},{"name":"Timestamp","line":41},{"name":"SessionStatus","line":48},{"name":"Option","line":59},{"name":"ORPHANED_THRESHOLD_MINUTES","line":68},{"name":"is_session_orphaned","line":82},{"name":"detect_orphaned_sessions","line":110},{"name":"scan_orphans","line":137},{"name":"is_orphan","line":145}],"imports":[{"name":"timestamp","line":19}],"terms":["sandbox","orphan","detection","session","timestamp","status","option","orphaned","threshold","minutes","detect","sessions","scan","orphans"]},{"id":"30907b42896f20f54745d8066fc6f48dbc090a2943ca9314c5c4daa0f50e5739","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/05_widths_and_casts.t27","health":"ok","module":"tutorial-05-widths"}],"description":"05 — Widths and casts, and the one that catches everybody Lesson 5. Converting between widths, and the single sharpest edge in the language today: an integer literal types as i32, so arithmetic on a narrower mutable local fails the type check unless you say what you mean. . Everything below is measured against the compiler in this repository, not","symbols":[{"name":"narrow","line":24},{"name":"widen","line":28},{"name":"increment_narrow","line":54},{"name":"increment_by_binding","line":63},{"name":"stepped","line":64},{"name":"average_of_three","line":71},{"name":"total","line":72},{"name":"sum_narrow_counter","line":90}],"imports":[],"terms":["tutorial","widths","casts","narrow","widen","increment","binding","stepped","average","three","total","sum","counter"]},{"id":"31fc2cc4511db11be5ce16f41f881ed462911238ee18ba0fbe5f8f25dd0fbfd4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_reputation.t27","health":"ok","module":"TriComputeReputation"}],"description":"TRI-NET executor reputation: weight the pool split (tri_compute_pool) by a node's track record, so a repeatedly-honest node earns a larger share for the same raw work and a slashed node earns less. Reputation rises on honest settlement (capped) and is halved on every slash -- a strong, memory-bearing penalty that a single fresh receipt cannot immediately undo.","symbols":[{"name":"REP_INIT","line":10},{"name":"REP_MAX","line":11},{"name":"RESOLVE_HONEST","line":15},{"name":"RESOLVE_SLASH","line":16},{"name":"rep_after_honest","line":29},{"name":"rep_after_slash","line":39},{"name":"rep_after_resolution","line":50},{"name":"GFT16_ET","line":70},{"name":"REP_GAIN_PER_TRIT","line":71},{"name":"rung_honest_gain","line":73},{"name":"rep_after_resolution_rung","line":84},{"name":"rep_after_verifier","line":96},{"name":"weighted_work","line":114},{"name":"can_admit","line":131}],"imports":[{"name":"base::types","line":8}],"terms":["net","compute","reputation","rep","init","max","resolve","honest","slash","resolution","gft16","gain","per","trit","rung","verifier","weighted","work","admit"]},{"id":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/nf4.t27","health":"ok","module":"NF4"}],"description":"t27/specs/numeric/nf4.t27 NormalFloat4 - 4-bit normalized float quantization format (Google) NUMERIC-STANDARD-001 Agent 11 (P1) NF4 format: - Represents normalized values in [0, 1] - Uses a 4-bit normalized representation","symbols":[{"name":"BITS","line":28},{"name":"LEVELS","line":29},{"name":"NF4","line":33},{"name":"encode","line":40},{"name":"clamped","line":42},{"name":"decode","line":52},{"name":"min_value","line":59},{"name":"max_value","line":63},{"name":"epsilon","line":67},{"name":"quantization_error","line":72},{"name":"decoded","line":73},{"name":"validate_format","line":79},{"name":"MEMORY_RATIO_VS_FP32","line":94},{"name":"abs","line":98},{"name":"quantization_error_pct","line":102},{"name":"encoded","line":103},{"name":"decoded","line":104},{"name":"eq","line":111},{"name":"ne","line":115},{"name":"lt","line":119},{"name":"le","line":123},{"name":"gt","line":127},{"name":"ge","line":131}],"imports":[{"name":"base::testing","line":13},{"name":"base::benchmarking","line":14}],"terms":["chips","euler","fpga","nf4","bits","levels","encode","clamped","decode","min","max","epsilon","quantization","decoded","validate","format","memory","ratio","fp32","abs","pct","encoded"]},{"id":"3372fcbc6f9c6838d6e21ed8900c9e3fe00de2a9b57386380e7eaa13beefd052","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/session_timeout.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-010: Session Timeout Enforcement","symbols":[{"name":"Session","line":24},{"name":"Timestamp","line":35},{"name":"SessionStatus","line":42},{"name":"DEFAULT_MAX_SESSION_DURATION_MS","line":54},{"name":"should_terminate_session","line":63},{"name":"check_timeout","line":89}],"imports":[{"name":"timestamp","line":14}],"terms":["sandbox","session","timeout","timestamp","status","default","max","duration","terminate"]},{"id":"33860937a826bbbc5b95b88015242182732ad3577456d9c4b34fc87834f64c77","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/color.t27","health":"ok","module":"TriColor"}],"description":"t27/specs/","symbols":[{"name":"Color","line":13},{"name":"ColorSpace","line":20},{"name":"rgb","line":29},{"name":"to_hex","line":34},{"name":"blend","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","color","space","rgb","hex","blend"]},{"id":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hardware_validation.t27","health":"ok","module":"HardwareValidation"}],"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","symbols":[{"name":"VAL_PENDING","line":8},{"name":"VAL_RUNNING","line":9},{"name":"VAL_PASSED","line":10},{"name":"VAL_FAILED","line":11},{"name":"TEST_SIMULATION","line":14},{"name":"TEST_BIT_ACCURATE","line":15},{"name":"TEST_FPGA_BOARD","line":16},{"name":"TEST_REAL_WORLD","line":17},{"name":"create_test_result","line":20},{"name":"extract_state","line":27},{"name":"extract_test_type","line":31},{"name":"extract_errors","line":35},{"name":"extract_iterations","line":39},{"name":"calculate_pass_rate","line":44},{"name":"test_passed","line":52},{"name":"bit_accurate","line":57},{"name":"fpga_board_ready","line":65},{"name":"create_packet_capture","line":71},{"name":"extract_capture_src","line":79},{"name":"extract_capture_dst","line":83},{"name":"extract_capture_payload","line":87},{"name":"extract_capture_timestamp","line":91},{"name":"create_performance_metric","line":99},{"name":"extract_metric_type","line":105},{"name":"extract_metric_value","line":109},{"name":"extract_metric_unit","line":113}],"imports":[{"name":"base::types","line":5}],"terms":["net","hardware","validation","val","running","passed","failed","simulation","bit","accurate","fpga","board","real","world","create","extract","state","iterations","calculate","pass","rate","ready","packet","capture","dst","payload","timestamp","performance","metric","unit"]},{"id":"3518d3bee197a739317d20af4d64f64893378b2dbf1b2ad4381d935c7d29e443","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/version.t27","health":"ok","module":"TriVersion"}],"description":"t27/specs/","symbols":[{"name":"Version","line":13},{"name":"parse","line":26},{"name":"compare","line":31},{"name":"next","line":36}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","parse","compare"]},{"id":"3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/packet_queue.t27","health":"ok","module":"PacketQueue"}],"description":"Packet queue - all inline, no intermediate variables","symbols":[{"name":"QUEUE_SIZE","line":6},{"name":"get_count","line":8},{"name":"is_full","line":12},{"name":"is_empty","line":16},{"name":"increment_index","line":20},{"name":"enqueue","line":28},{"name":"dequeue","line":36},{"name":"size","line":44},{"name":"clear","line":48}],"imports":[{"name":"base::types","line":4}],"terms":["macos","rings","rust","mesh","packet","queue","size","get","count","full","empty","increment","index","enqueue","dequeue","clear"]},{"id":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_encoding.t27","health":"warn","module":"TernaryEncoding"}],"description":"t27/specs/base/ternary_encoding.t27 Ternary Encoding/Decoding Specification Ring 065 - Encoding schemes for ternary data representation Defines how binary data maps to ternary and vice versa","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"ENCODING_BALANCED","line":21},{"name":"ENCODING_UNIPOLAR","line":22},{"name":"ENCODING_BCT","line":23},{"name":"BITS_PER_BYTE","line":26},{"name":"TRITS_PER_BYTE","line":27},{"name":"TRITS_PER_NYBBLE","line":28},{"name":"bit_to_trit_pair","line":37},{"name":"bits_to_trits","line":47},{"name":"rem","line":53},{"name":"trits_to_bits","line":74},{"name":"byte_to_trits","line":100},{"name":"rem","line":106},{"name":"trits_to_byte","line":134},{"name":"balanced_to_unipolar","line":160},{"name":"unipolar_to_balanced","line":167},{"name":"char_to_trits","line":177},{"name":"trits_to_char","line":183},{"name":"is_valid_trit","line":193},{"name":"is_valid_unipolar_trit","line":199},{"name":"validate_trits","line":205},{"name":"EncodingInfo","line":220},{"name":"get_encoding_info","line":229},{"name":"result","line":249},{"name":"result","line":254},{"name":"result","line":259},{"name":"result","line":265},{"name":"decoded","line":266},{"name":"trits","line":272},{"name":"decoded","line":273},{"name":"decoded","line":283},{"name":"decoded","line":317},{"name":"vals","line":328},{"name":"uni","line":331},{"name":"balanced","line":332},{"name":"decoded","line":343},{"name":"trits","line":354},{"name":"decoded","line":355},{"name":"valid_info","line":365},{"name":"invalid_info","line":366},{"name":"info","line":374},{"name":"vals","line":404},{"name":"uni","line":409}],"imports":[{"name":"base::types","line":9}],"terms":["base","ternary","encoding","trit","neg","zero","pos","balanced","unipolar","bct","bits","per","byte","trits","nybble","bit","pair","rem","char","valid","validate","info","get","decoded","vals","uni","invalid"]},{"id":"37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/bandwidth_allocator.t27","health":"warn","module":"BandwidthAllocator"}],"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"TOTAL_BANDWIDTH","line":8},{"name":"MIN_BANDWIDTH","line":9},{"name":"MAX_BANDWIDTH","line":10},{"name":"PRIORITY_LOW","line":13},{"name":"PRIORITY_MEDIUM","line":14},{"name":"PRIORITY_HIGH","line":15},{"name":"create_flow_requirement","line":18},{"name":"get_flow_id","line":25},{"name":"get_flow_priority","line":29},{"name":"get_min_bandwidth","line":33},{"name":"get_current_bandwidth","line":37},{"name":"create_allocation_state","line":42},{"name":"get_allocated_bw","line":49},{"name":"get_pending_requests","line":53},{"name":"get_fair_share","line":57},{"name":"get_last_update","line":61},{"name":"create_flow_array","line":68},{"name":"get_flow_req","line":72},{"name":"calculate_fair_share","line":80},{"name":"allocate_bandwidth","line":88},{"name":"needs_more_bandwidth","line":123},{"name":"update_flow_bandwidth","line":130},{"name":"count_active_flows","line":142},{"name":"find_reclaimable_bandwidth","line":158},{"name":"prioritize_bandwidth","line":194}],"imports":[{"name":"base::types","line":5}],"terms":["net","bandwidth","allocator","max","flows","total","min","priority","low","medium","high","create","flow","requirement","get","allocation","state","allocated","requests","fair","share","array","req","calculate","allocate","more","count","active","find","reclaimable","prioritize"]},{"id":"379740eea2f1d1c60693f69cd89d57566017db7dcbe77484f8d2f54c97cb40b8","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/uart_tb.t27","health":"warn","module":"UART_Testbench"}],"description":"t27/specs/fpga/testbench/uart_tb.t27 UART Testbench Specification Tests UART TX/RX functionality, state machines, and timing 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TIMESCALE","line":15},{"name":"CLK_PERIOD","line":16},{"name":"SIM_TIMEOUT","line":17},{"name":"TEST_DATA_1","line":20},{"name":"TEST_DATA_2","line":21},{"name":"TEST_DATA_3","line":22},{"name":"TEST_DATA_4","line":23},{"name":"generate_clock","line":49},{"name":"assert_pass","line":58},{"name":"wait_cycles","line":68},{"name":"wait_tx_ready","line":78},{"name":"wait_rx_data","line":88},{"name":"test_uart_tx_byte","line":105},{"name":"success","line":110},{"name":"test_uart_rx_byte","line":125},{"name":"bit","line":135},{"name":"test_uart_loopback","line":152},{"name":"data","line":153},{"name":"test_uart_framing_error","line":175},{"name":"test_uart_reset","line":198},{"name":"test_uart_idle_line","line":215},{"name":"test_uart_multiple_bytes","line":222},{"name":"bytes","line":223},{"name":"test_uart_baud_rate_timing","line":236},{"name":"data","line":237},{"name":"start_cycle","line":240},{"name":"cycles","line":245},{"name":"expected","line":246},{"name":"run_tests","line":255}],"imports":[{"name":"base::types","line":9},{"name":"fpga::uart::UART_Bridge","line":10}],"terms":["fpga","testbench","uart","timescale","clk","period","sim","timeout","data","generate","clock","assert","pass","wait","cycles","ready","byte","success","bit","loopback","framing","reset","idle","multiple","bytes","baud","rate","timing","start","cycle","expected"]},{"id":"37aaa0322da86d9674dfd2f7ee235c14c68420cd43da356a04384f5dfccc2f20","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/fp8_e5m2.t27","health":"warn","module":"triformat-fp8_e5m2"}],"description":"fp8_e5m2.t27 — FP8 E5M2 8-bit Floating Point 8-bit float with 5 exponent, 2 mantissa bits (with implicit leading bit) OCP FP8 format optimized for inference and wide dynamic range Range: ~-57k to ~57k, precision: ~3-4 significant bits","symbols":[{"name":"BITS","line":14},{"name":"SIGN_BITS","line":15},{"name":"EXP_BITS","line":16},{"name":"MANT_BITS","line":17},{"name":"SIGN_SHIFT","line":19},{"name":"EXP_SHIFT","line":20},{"name":"MANT_SHIFT","line":21},{"name":"SIGN_MASK","line":23},{"name":"EXP_MASK","line":24},{"name":"MANT_MASK","line":25},{"name":"EXP_MAX","line":27},{"name":"EXP_MIN","line":28},{"name":"EXP_BIAS","line":29},{"name":"MANT_DIVISOR","line":31},{"name":"FP8_ZERO_POS","line":34},{"name":"FP8_ZERO_NEG","line":35},{"name":"FP8_NAN_POS","line":36},{"name":"FP8_NAN_NEG","line":37},{"name":"FP8_INF_POS","line":38},{"name":"FP8_INF_NEG","line":39},{"name":"SUBNORMAL_EXP","line":42},{"name":"FP8E5M2","line":48},{"name":"fp8_extract_sign","line":57},{"name":"bit","line":58},{"name":"fp8_extract_exponent","line":65},{"name":"fp8_extract_mantissa","line":72},{"name":"fp8_from_components","line":78},{"name":"sign_bit","line":79},{"name":"fp8_is_zero","line":91},{"name":"fp8_is_special","line":97},{"name":"fp8_is_inf","line":103},{"name":"fp8_is_nan","line":109},{"name":"fp8_is_subnormal","line":115},{"name":"fp8_encode_f32","line":126},{"name":"sign","line":143},{"name":"abs_value","line":144},{"name":"f32_bits","line":147},{"name":"subnormal_shift","line":154},{"name":"shift_amount","line":160},{"name":"discarded","line":185},{"name":"fp8_decode_f32","line":204},{"name":"sign","line":221},{"name":"exp","line":222},{"name":"mant","line":223},{"name":"bias_adjusted","line":230},{"name":"mant_f32","line":231},{"name":"bias_adjusted","line":235},{"name":"mant_f32","line":236},{"name":"fp8_encode_f64","line":245},{"name":"fp8_decode_f64","line":251},{"name":"f32_val","line":252},{"name":"fp8_add","line":262},{"name":"fa","line":263},{"name":"fb","line":264},{"name":"fp8_sub","line":270},{"name":"fa","line":271},{"name":"fb","line":272},{"name":"fp8_mul","line":278},{"name":"fa","line":279},{"name":"fb","line":280},{"name":"fp8_div","line":286},{"name":"fb","line":287},{"name":"fa","line":289},{"name":"fa","line":292},{"name":"fp8_sqrt","line":298},{"name":"fv","line":299},{"name":"fp8_rsqrt","line":308},{"name":"fv","line":309},{"name":"fp8_abs","line":318},{"name":"fp8_neg","line":324},{"name":"fp8_is_equal","line":330},{"name":"fp8_is_greater","line":342},{"name":"sign_a","line":346},{"name":"sign_b","line":347},{"name":"fp8_max","line":359},{"name":"fp8_min","line":365},{"name":"fp8_clamp","line":371},{"name":"fp8_lerp","line":377},{"name":"fa","line":378},{"name":"fb","line":379},{"name":"result","line":380},{"name":"fp8_fma","line":386},{"name":"fa","line":387},{"name":"fb","line":388},{"name":"fc","line":389},{"name":"fp8_scale","line":395},{"name":"fv","line":396},{"name":"fp8_relu","line":402},{"name":"fp8_sigmoid","line":408},{"name":"fv","line":409},{"name":"fp8_tanh","line":415},{"name":"fv","line":416},{"name":"fp8_gelu","line":422},{"name":"fv","line":423},{"name":"sqrt_2_over_pi","line":424},{"name":"cube_coeff","line":425},{"name":"tanh_arg","line":426},{"name":"fp8_swish","line":432},{"name":"fv","line":433},{"name":"fp8_quantize_to_int4","line":439},{"name":"fv","line":440},{"name":"max_range","line":442},{"name":"scaled","line":443},{"name":"fp8_quantize_to_int8","line":455},{"name":"fv","line":456},{"name":"max_range","line":458},{"name":"scaled","line":459},{"name":"fp8_from_f32_scaled","line":472},{"name":"fp8_to_f32_scaled","line":478},{"name":"fp8_dot_product","line":485},{"name":"fa","line":489},{"name":"fb","line":490},{"name":"fp8_vector_add","line":498},{"name":"len","line":499},{"name":"fp8_vector_scale","line":507},{"name":"scale_f","line":508},{"name":"fp8_vector_sum","line":516},{"name":"fp8_vector_mean","line":526},{"name":"sum","line":530},{"name":"fp8_softmax","line":536},{"name":"fv","line":540},{"name":"fv","line":549},{"name":"exp_val","line":550},{"name":"inv_sum","line":556},{"name":"fv","line":558}],"imports":[],"terms":["chips","euler","fpga","fp8","e5m2","triformat","bits","sign","exp","mant","shift","mask","max","min","bias","divisor","zero","pos","neg","nan","inf","subnormal","fp8e5m2","extract","bit","exponent","mantissa","components","special","encode","f32","abs","amount","discarded","decode","adjusted","f64","val","sub","mul","div","sqrt","rsqrt","equal","greater","clamp","lerp","fma","scale","relu","sigmoid","tanh","gelu","over","cube","coeff","arg","swish","quantize","int4","range","scaled","int8","dot","product","vector","len","sum","mean","softmax","inv"]},{"id":"37e73defdf4c967e2fb780aa954119e6fd90a73477ba9b410794ba99de228c47","sources":[{"repo":"ghashtag/t27","path":"specs/math/gf_competitive.t27","health":"ok","module":"GFCompetitive"}],"description":"t27/specs/math/gf_competitive.t27 GoldenFloat Competitive Analysis -- GF vs Posit vs IEEE 754 MATH-COMPETITIVE-001 -- Decode latency, parallelism, hardware efficiency Ring 051: Competitive analysis showing GF's structural advantages Main result: GF has O(1) parallel decode vs Posit's O(N) sequential","symbols":[{"name":"DecodeComplexity","line":18},{"name":"decode_complexity","line":26}],"imports":[{"name":"math::constants","line":10},{"name":"math::sacred_physics","line":11}],"terms":["math","competitive","gfcompetitive","decode","complexity"]},{"id":"380f324e20c22b5441bf9cf413249c1c92b09d33507164e62b0e2fe9d69b7b4c","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sequence_hdc.t27","health":"ok","module":"SequenceHdc"}],"description":"Module: Sequence Hyperdimensional Computing (HDC)","symbols":[{"name":"NGRAM_ORDER","line":18},{"name":"DEFAULT_DIM","line":21},{"name":"HEBDIAN_CHARS","line":24},{"name":"HEBDIAN_OFFSET","line":27},{"name":"ItemMemory","line":36},{"name":"NGramEncoder","line":50},{"name":"SequenceMemory","line":62},{"name":"EncodedSequence","line":76},{"name":"QueryResult","line":83},{"name":"initItemMemory","line":96},{"name":"deinitItemMemory","line":102},{"name":"getVector","line":108},{"name":"initEncoder","line":118},{"name":"encodeNGram","line":124},{"name":"initSequenceMemory","line":134},{"name":"deinitSequenceMemory","line":140},{"name":"store","line":146},{"name":"query","line":152},{"name":"queryTopK","line":158},{"name":"initDetector","line":168},{"name":"trainDetector","line":174},{"name":"detect","line":180}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10},{"name":"ternary::packed_trit","line":11}],"terms":["vsa","sequence","hdc","ngram","order","default","dim","hebdian","chars","offset","item","memory","encoder","encoded","query","init","deinit","get","vector","encode","store","top","detector","train","detect"]},{"id":"3873165f553501deacfb4814a0b56dede2f4158fed86e9002f3efe09782a946b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/circular_buffer.t27","health":"ok","module":"TriCircularBuffer"}],"description":"t27/specs/","symbols":[{"name":"CircularBuffer","line":13},{"name":"init","line":26},{"name":"write","line":31},{"name":"read","line":36},{"name":"is_empty","line":41},{"name":"deinit","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","circular","buffer","init","write","read","empty","deinit"]},{"id":"389411f1e59621fb478846a79147aa6f5ec3cd01877c907316185aa573baa48d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/config.t27","health":"ok","module":"TriConfig"}],"description":"t27/specs/","symbols":[{"name":"ConfigValue","line":13},{"name":"ConfigEntry","line":20},{"name":"Config","line":25},{"name":"parse","line":35},{"name":"get_string","line":40},{"name":"get_number","line":45},{"name":"get_bool","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","config","entry","parse","get"]},{"id":"38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf8.t27","health":"warn","module":"GF8"}],"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 -- 8-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 3 (P1)","symbols":[{"name":"BITS","line":24},{"name":"SIGN_BITS","line":25},{"name":"EXP_BITS","line":26},{"name":"MANT_BITS","line":27},{"name":"EXP_BIAS","line":30},{"name":"PHI_DISTANCE","line":34},{"name":"GF8","line":40},{"name":"encode","line":49},{"name":"sign","line":54},{"name":"abs_val","line":55},{"name":"exp_unbiased","line":58},{"name":"exp_biased","line":59},{"name":"exp_clamped","line":62},{"name":"mant","line":65},{"name":"decode","line":79},{"name":"sign","line":80},{"name":"exp_biased","line":81},{"name":"mant","line":82},{"name":"exp_unbiased","line":90},{"name":"mant_normalized","line":97},{"name":"value","line":103},{"name":"max_value","line":115},{"name":"mant_max","line":117},{"name":"exp_max","line":118},{"name":"min_positive","line":122},{"name":"mant_min","line":124},{"name":"exp_min","line":125},{"name":"epsilon","line":129},{"name":"validate_format","line":138},{"name":"fmt","line":139},{"name":"MEMORY_RATIO_VS_FP32","line":157},{"name":"floor_log2","line":163},{"name":"extract_mantissa","line":177},{"name":"normalized","line":178},{"name":"frac","line":179},{"name":"max_mant","line":180},{"name":"clamp","line":184},{"name":"pow","line":190},{"name":"is_integer","line":206},{"name":"ln_val","line":232},{"name":"ln_approx","line":237},{"name":"t","line":246},{"name":"t2","line":247},{"name":"t3","line":248},{"name":"t5","line":249},{"name":"t7","line":250},{"name":"exp_approx","line":256},{"name":"k","line":268},{"name":"k","line":279},{"name":"floor","line":295}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9},{"name":"base::testing","line":12},{"name":"base::benchmarking","line":13}],"terms":["numeric","gf8","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"38e5a94cf9cac4f8e1638e6c60603d0334668763669588a0014d4a8cc544b59c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/gf16_format.t27","health":"ok","module":"Gf16Format"}],"description":"tri-net/specs/gf16_format.t27 Partial spec-first lift of src/gf16.rs (T27-first): the GF16 BIT FORMAT. GF16 is the radio-DSP number format: [sign:1][exponent:6][mantissa:9], bias 31, round-to-nearest-even, no subnormals. The f64 encode/decode rounding stays in Rust (floating point is not a t27 target); the INTEGER geometry — field masks, extraction, composition and the NaN/Inf classifiers — is the single source of","symbols":[{"name":"M_BITS","line":14},{"name":"E_BITS","line":15},{"name":"BIAS","line":16},{"name":"M_MAX","line":17},{"name":"E_MAX","line":18},{"name":"SIGN_SHIFT","line":19},{"name":"sign_field","line":22},{"name":"exponent_field","line":26},{"name":"mantissa_field","line":30},{"name":"compose","line":35},{"name":"is_nan","line":40},{"name":"is_inf","line":47},{"name":"is_zero","line":54}],"imports":[{"name":"base::types","line":12}],"terms":["net","gf16","format","gf16format","bits","bias","max","sign","shift","field","exponent","mantissa","compose","nan","inf","zero"]},{"id":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","sources":[{"repo":"ghashtag/t27","path":"specs/cloud/railway_deploy.t27","health":"warn","module":"cloud-railway-deploy"}],"description":"cloud/railway_deploy.t27 — Autonomous Railway Deployment","symbols":[{"name":"PHI","line":17},{"name":"PHI_INV","line":20},{"name":"TRINITY","line":23},{"name":"GAMMA_LQG","line":26},{"name":"HIVE_BEE_COUNT","line":29},{"name":"QUEEN_PORT","line":32},{"name":"RAILWAY_GRAPHQL_URL","line":39},{"name":"RAILWAY_SANDBOX_ENV","line":42},{"name":"DEPLOY_TIMEOUT_MS","line":45},{"name":"HEALTH_CHECK_INTERVAL_MS","line":48},{"name":"HEALTH_CHECK_MAX_ATTEMPTS","line":51},{"name":"RailwayServiceConfig","line":58},{"name":"EnvVar","line":74},{"name":"DeployState","line":84},{"name":"DeployResult","line":97},{"name":"HealthStatus","line":107},{"name":"init_sacred_env_vars","line":120},{"name":"deploy_state_count","line":208},{"name":"get_hive_bee_count","line":213},{"name":"get_queen_port","line":218},{"name":"phi_sq","line":243},{"name":"phi_inv_sq","line":244},{"name":"sum","line":245},{"name":"env_vars","line":258},{"name":"env_vars","line":271},{"name":"env_vars","line":277},{"name":"phi_sq","line":318},{"name":"phi_inv_sq","line":319},{"name":"sum","line":320},{"name":"gamma_calc","line":326}],"imports":[{"name":"base::types::Trit","line":8},{"name":"math::sacred_physics","line":9},{"name":"vsa::vsa_core::Hypervector","line":10}],"terms":["cloud","railway","deploy","phi","inv","gamma","lqg","hive","bee","count","queen","port","graphql","url","sandbox","env","timeout","health","interval","max","attempts","service","config","var","state","status","init","sacred","vars","get","sum","calc"]},{"id":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 2 Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":17},{"name":"PHI_SQ","line":21},{"name":"PhiSplitResult","line":40},{"name":"phi_split","line":47},{"name":"available","line":48},{"name":"phi_sq","line":49},{"name":"exp_raw","line":52},{"name":"exp_bits","line":53},{"name":"mant_bits","line":56},{"name":"ratio","line":58},{"name":"phi_dist","line":59},{"name":"FormatComparison","line":73},{"name":"verify_phi_split","line":84},{"name":"golden_self_similarity_proof","line":173},{"name":"optimal_rounding_proof","line":193},{"name":"sacred_connection","line":217},{"name":"compute_phi_distance","line":225},{"name":"ratio","line":226},{"name":"is_phi_optimal","line":230},{"name":"recommend_format","line":234},{"name":"round","line":242},{"name":"abs","line":260},{"name":"pow","line":267},{"name":"ln_approx","line":328},{"name":"exp_approx","line":347},{"name":"floor","line":377}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","golden","self","similarity","proof","optimal","rounding","sacred","connection","compute","distance","recommend","round","abs","pow","approx","floor"]},{"id":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","sources":[{"repo":"ghashtag/t27","path":"specs/base/ops.t27","health":"warn","module":"tritype-ops"}],"description":"ops.t27 -- Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","symbols":[{"name":"NEGONE","line":12},{"name":"ZERO","line":13},{"name":"ONE","line":14},{"name":"Trit","line":17},{"name":"mult_table","line":34},{"name":"add_table","line":41},{"name":"carry_table","line":46},{"name":"trit_multiply_table","line":54},{"name":"idx","line":55},{"name":"trit_add_table","line":61},{"name":"idx","line":62},{"name":"trit_carry_table","line":69},{"name":"idx","line":70},{"name":"AddResult","line":75},{"name":"trit_add_with_carry","line":85},{"name":"trit_compare","line":120},{"name":"trit_negate","line":133},{"name":"trit_abs","line":144},{"name":"trit_min","line":150},{"name":"trit_max","line":156},{"name":"trit_subtract","line":162},{"name":"trit_sign","line":168},{"name":"trit_clamp","line":174},{"name":"trit_is_negative","line":182},{"name":"trit_is_zero","line":188},{"name":"trit_is_positive","line":194},{"name":"trit_equal","line":200},{"name":"trit_not_equal","line":206},{"name":"trit_lt","line":212},{"name":"trit_le","line":218},{"name":"trit_gt","line":224},{"name":"trit_ge","line":230},{"name":"trit_multiply_with_carry","line":238},{"name":"product","line":240},{"name":"trit_reverse","line":250},{"name":"trit_multiply_by_power_of_two","line":257},{"name":"carry","line":261},{"name":"trit_power","line":279},{"name":"trit_from_bool","line":299},{"name":"trit_to_bool","line":306},{"name":"trit_abs_diff","line":313},{"name":"trit_cond_swap","line":320},{"name":"trit_is_unit","line":326},{"name":"trit_is_identity","line":332},{"name":"trit_is_negated","line":338},{"name":"trits","line":361},{"name":"trits","line":401},{"name":"trits","line":448},{"name":"result","line":458},{"name":"result","line":465},{"name":"result","line":472},{"name":"result","line":479},{"name":"trits","line":486},{"name":"result","line":490},{"name":"trits","line":499},{"name":"result","line":503},{"name":"trits","line":584},{"name":"trits","line":619},{"name":"trits","line":644},{"name":"trits","line":662},{"name":"trits","line":709},{"name":"trits","line":724},{"name":"a","line":780},{"name":"b","line":781},{"name":"result","line":790},{"name":"result","line":797},{"name":"trits","line":804},{"name":"result","line":806},{"name":"result","line":835},{"name":"trits","line":909},{"name":"trits","line":924}],"imports":[],"terms":["base","ops","tritype","negone","zero","one","trit","mult","table","carry","multiply","idx","compare","negate","abs","min","max","subtract","sign","clamp","negative","positive","equal","product","reverse","power","two","diff","cond","swap","unit","identity","negated","trits"]},{"id":"3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/power_monitoring.t27","health":"warn","module":"PowerMonitoring"}],"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","symbols":[{"name":"MAX_NODES","line":7},{"name":"BATTERY_FULL","line":8},{"name":"BATTERY_CRITICAL","line":9},{"name":"BATTERY_LOW","line":10},{"name":"POWER_NORMAL","line":11},{"name":"POWER_ECO","line":12},{"name":"POWER_EMERGENCY","line":13},{"name":"create_power_state","line":16},{"name":"get_battery_level","line":23},{"name":"get_power_mode","line":27},{"name":"get_consumption","line":31},{"name":"get_uptime","line":35},{"name":"is_battery_critical","line":40},{"name":"is_battery_low","line":45},{"name":"is_battery_healthy","line":51},{"name":"estimate_remaining_time","line":56},{"name":"update_power_mode","line":68},{"name":"reduce_consumption","line":84},{"name":"drain_battery","line":102},{"name":"get_power_priority","line":120},{"name":"should_sleep","line":133}],"imports":[{"name":"base::types","line":5}],"terms":["net","power","monitoring","max","nodes","battery","full","critical","low","normal","eco","emergency","create","state","get","level","mode","consumption","uptime","healthy","estimate","remaining","time","reduce","drain","priority","sleep"]},{"id":"3a86f39a7c8d0462b028a88aa5b2e9c7e7ed151c0404e4efef134c64654dd4b0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_universe.t27","health":"ok","module":"AutonomousUniverse"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["autonomous","universe"]},{"id":"3b0d082b74f6a0ba7039d726899c4a02710622f702909956f8bc2615b6a45b8a","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/lut_npu_81_entry.t27","health":"warn","module":"sacred-lut_npu_81_entry"}],"description":"lut_npu_81_entry.t27 — Sacred Opcode 0xE3: LUT NPU 81-Entry Lookup Hardware LUT for NPU operations with 81 entries (9×9 transform)","symbols":[{"name":"OP_LUT_NPU","line":12},{"name":"LUT_SIZE","line":14},{"name":"LUT_ADDR_BITS","line":15},{"name":"LUT_VALUE_BITS","line":16},{"name":"ENTRY_VALID","line":18},{"name":"ENTRY_INVALID","line":19},{"name":"PHI_CONST_BASE","line":21},{"name":"CONST_LUT_END","line":22},{"name":"LutEntry","line":28},{"name":"LutConfig","line":35},{"name":"NpuOperation","line":41},{"name":"Transform9x9","line":52},{"name":"lut_entry_valid","line":64},{"name":"lut_entry_address_valid","line":70},{"name":"create_lut_entry","line":76},{"name":"npu_transform_9x9","line":91},{"name":"center_dist","line":102},{"name":"center_dist_j","line":103},{"name":"sparsity","line":108},{"name":"transform_is_sparse","line":119},{"name":"transform_phi_optimized","line":125},{"name":"lut_lookup_base","line":135},{"name":"lut_lookup_phi","line":144},{"name":"entry","line":149},{"name":"e","line":156},{"name":"lut_lookup_range","line":167},{"name":"encode_lut_npu","line":187},{"name":"op_field","line":189},{"name":"opcode_field","line":190},{"name":"addr_field","line":191},{"name":"decode_lut_npu","line":197},{"name":"opcode_val","line":198},{"name":"addr","line":199}],"imports":[],"terms":["chips","euler","fpga","lut","npu","entry","sacred","size","addr","bits","valid","invalid","phi","base","end","config","operation","transform9x9","address","create","transform","9x9","center","dist","sparsity","sparse","optimized","lookup","range","encode","field","opcode","decode","val"]},{"id":"3b23e0d8188ef1fbdc658829a9204f6aa42bd6e111f07fe84c2632094870e95d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/context.t27","health":"ok","module":"TriContext"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections"]},{"id":"3b247694659c1fe7f9860804f7a960b8e8ca357dca00dafa651527b01487a667","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/int8.t27","health":"warn","module":"triformat-int8"}],"description":"int8.t27 — Int8 Signed 8-bit Integer Quantization Range: -128 to 127 Standard 8-bit signed integer, widely used in quantization","symbols":[{"name":"BITS","line":13},{"name":"MIN","line":14},{"name":"MAX","line":15},{"name":"RANGE","line":16},{"name":"MASK","line":18},{"name":"Int8","line":24},{"name":"int8_from_i8","line":32},{"name":"int8_from_i16","line":38},{"name":"int8_from_i32","line":49},{"name":"int8_from_u8","line":61},{"name":"int8_from_f32","line":71},{"name":"rounded","line":81},{"name":"int8_from_f64","line":87},{"name":"rounded","line":97},{"name":"int8_to_i8","line":103},{"name":"int8_to_i16","line":109},{"name":"int8_to_i32","line":115},{"name":"int8_to_u8","line":121},{"name":"int8_to_f32","line":130},{"name":"int8_to_f64","line":136},{"name":"int8_add","line":146},{"name":"result","line":147},{"name":"int8_sub","line":153},{"name":"result","line":154},{"name":"int8_mul","line":160},{"name":"result","line":161},{"name":"int8_div","line":168},{"name":"int8_mod","line":177},{"name":"result","line":181},{"name":"int8_pow","line":188},{"name":"int8_and","line":235},{"name":"int8_or","line":241},{"name":"int8_xor","line":247},{"name":"int8_not","line":253},{"name":"int8_shl","line":259},{"name":"clamped","line":260},{"name":"result","line":261},{"name":"int8_shr","line":267},{"name":"clamped","line":268},{"name":"int8_rol","line":274},{"name":"clamped","line":275},{"name":"uval","line":276},{"name":"result","line":277},{"name":"int8_ror","line":283},{"name":"clamped","line":284},{"name":"uval","line":285},{"name":"result","line":286},{"name":"int8_abs","line":296},{"name":"int8_neg","line":305},{"name":"int8_sign","line":314},{"name":"int8_is_equal","line":324},{"name":"int8_is_greater","line":329},{"name":"int8_is_less","line":334},{"name":"int8_min","line":339},{"name":"int8_max","line":344},{"name":"int8_clamp","line":349},{"name":"int8_lerp","line":360},{"name":"fa","line":361},{"name":"fb","line":362},{"name":"result","line":363},{"name":"int8_sq","line":369},{"name":"int8_abs_diff","line":375},{"name":"diff","line":376},{"name":"int8_sqrt","line":383},{"name":"int8_is_power_of_two","line":415},{"name":"uval","line":419},{"name":"int8_count_ones","line":425},{"name":"uval","line":426},{"name":"int8_count_zeros","line":432},{"name":"int8_reverse_bits","line":438},{"name":"uval","line":439}],"imports":[],"terms":["chips","euler","numeric","int8","triformat","bits","min","max","range","mask","i16","i32","f32","rounded","f64","sub","mul","div","mod","pow","xor","shl","clamped","shr","rol","uval","ror","abs","neg","sign","equal","greater","less","clamp","lerp","diff","sqrt","power","two","count","ones","zeros","reverse"]},{"id":"3b4221a4c3733e8cd4e11c2e22b767a42d515d16c9c0ac141632dbcfe5118d28","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/avgpool2d_layer.t27","health":"ok","module":"Avgpool2d"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_KERNEL","line":13},{"name":"DEFAULT_STRIDE","line":14},{"name":"PoolConfig","line":20},{"name":"PoolShape","line":26},{"name":"calc_output_size","line":40},{"name":"forward","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","avgpool2d","layer","default","kernel","stride","pool","config","shape","calc","size","forward"]},{"id":"3b918511e604264fc966545ca5dbb3deabdf643de21d2cdc651b4c278fbafe51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/types.t27","health":"fail","module":null}],"description":"types.t27 — Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","symbols":[],"imports":[],"terms":["fpga","base"]},{"id":"3ba9d974647c1fb5d985982db3c7e266834d0736d32ed4f4f50aa7af95d59df7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/msgpack.t27","health":"ok","module":"TriMsgpack"}],"description":"t27/specs/","symbols":[{"name":"MsgPackType","line":13},{"name":"MsgPackValue","line":17},{"name":"encode","line":33},{"name":"decode","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","msgpack","msg","pack","encode","decode"]},{"id":"3bd172924f6a3774be1a071fa0082d67c0954419b6dd07dde1641a4f57f626ea","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/flatten_layer.t27","health":"ok","module":"Flatten"}],"description":"t27/specs/","symbols":[{"name":"MAX_DIMS","line":13},{"name":"FlattenConfig","line":19},{"name":"InputTensor","line":23},{"name":"calc_output_size","line":33},{"name":"forward","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","flatten","layer","max","dims","config","tensor","calc","size","forward"]},{"id":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/goldenfloat_family.t27","health":"warn","module":"GoldenFloatFamily"}],"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family -- phi-structured floating point formats NUMERIC-STANDARD-001 -- Agent 1 (P0)","symbols":[{"name":"GoldenFloatFormat","line":15},{"name":"PHI_RATIO_TARGET","line":32},{"name":"GOLDEN_FLOAT_FAMILY","line":35},{"name":"get_format_by_name","line":113},{"name":"get_format_by_bits","line":122},{"name":"get_primary_format","line":131},{"name":"VerificationReport","line":139},{"name":"verify_golden_family","line":148},{"name":"avg_dist","line":196},{"name":"all_checks_valid","line":199},{"name":"max_value","line":220},{"name":"mant_max","line":222},{"name":"exp_max","line":223},{"name":"min_positive","line":227},{"name":"mant_min","line":229},{"name":"bias","line":230},{"name":"memory_efficiency","line":234}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["numeric","goldenfloat","family","golden","float","format","phi","ratio","target","get","bits","primary","verification","report","verify","avg","dist","checks","valid","max","mant","exp","min","positive","bias","memory","efficiency"]},{"id":"3c7877343745c5377eba7ca7c8d9f9b6f44ced0b8a99a1c466f6b54dd1af969e","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/lexer.t27","health":"warn","module":"trilexer"}],"description":"compiler/parser/lexer.t27 -- Lexer for TRI-27 Assembly Tokenizes source code into Token stream for parser","symbols":[{"name":"MAX_IDENTIFIER_LEN","line":10},{"name":"MAX_NUMBER_LEN","line":11},{"name":"MAX_TOKENS","line":12},{"name":"TokenType","line":15},{"name":"Token","line":116},{"name":"Lexer","line":125},{"name":"init","line":138},{"name":"tokenize","line":148},{"name":"ident","line":183},{"name":"token_type","line":184},{"name":"single_token","line":197},{"name":"ident","line":225},{"name":"token_type","line":226},{"name":"advance_char","line":274},{"name":"peek_char","line":288},{"name":"skip_whitespace","line":296},{"name":"skip_comment","line":306},{"name":"read_identifier","line":313},{"name":"read_single_char","line":331},{"name":"c","line":332},{"name":"read_number","line":362},{"name":"next","line":371},{"name":"base","line":385},{"name":"digit","line":390},{"name":"is_digit","line":410},{"name":"is_hex_digit","line":416},{"name":"is_register","line":424},{"name":"first","line":428},{"name":"lookup_keyword","line":443}],"imports":[],"terms":["compiler","parser","lexer","trilexer","max","identifier","len","tokens","token","init","tokenize","ident","single","advance","char","peek","skip","whitespace","read","base","digit","hex","register","lookup","keyword"]},{"id":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_routing.t27","health":"ok","module":"multipath_routing"}],"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"MIN_PATHS","line":9},{"name":"PATH_VALID","line":10},{"name":"PATH_INVALID","line":11},{"name":"create_multipath","line":14},{"name":"get_path_valid","line":21},{"name":"get_multipath_hop1","line":25},{"name":"get_multipath_hop2","line":29},{"name":"get_multipath_hop3","line":33},{"name":"create_multipath_state","line":38},{"name":"get_active_paths","line":45},{"name":"get_current_path","line":49},{"name":"get_flow_id","line":53},{"name":"get_multipath_last_update","line":57},{"name":"create_path_array","line":64},{"name":"get_multipath","line":68},{"name":"count_valid_paths","line":76},{"name":"is_multipath_viable","line":86},{"name":"select_primary_path","line":91},{"name":"calculate_path_diversity","line":109},{"name":"distribute_load","line":146},{"name":"needs_failover","line":176},{"name":"perform_failover","line":183},{"name":"calculate_multipath_gain","line":199}],"imports":[{"name":"base::types","line":5}],"terms":["net","multipath","routing","max","paths","hops","min","path","valid","invalid","create","get","hop1","hop2","hop3","state","active","flow","array","count","viable","select","primary","calculate","diversity","distribute","load","failover","perform","gain"]},{"id":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_dashboard.t27","health":"warn","module":"health_dashboard"}],"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_METRICS","line":8},{"name":"HEALTH_UPDATE_INTERVAL","line":9},{"name":"ALERT_THRESHOLD","line":10},{"name":"CRITICAL_THRESHOLD","line":11},{"name":"create_health_metric","line":14},{"name":"get_health_node_id","line":21},{"name":"get_health_metric_type","line":25},{"name":"get_health_value","line":29},{"name":"get_health_timestamp","line":33},{"name":"METRIC_CPU","line":38},{"name":"METRIC_MEMORY","line":39},{"name":"METRIC_BANDWIDTH","line":40},{"name":"METRIC_LATENCY","line":41},{"name":"METRIC_PACKET_LOSS","line":42},{"name":"METRIC_ERROR_RATE","line":43},{"name":"METRIC_LINK_QUALITY","line":44},{"name":"METRIC_BATTERY","line":45},{"name":"create_health_score","line":48},{"name":"get_overall_health","line":55},{"name":"get_critical_count","line":59},{"name":"get_warning_count","line":63},{"name":"get_score_timestamp","line":67},{"name":"calculate_node_health","line":72},{"name":"calculate_network_health","line":116},{"name":"detect_critical_issues","line":134},{"name":"detect_warning_issues","line":169},{"name":"generate_health_report","line":204},{"name":"create_health_alert","line":213},{"name":"get_alert_node_id","line":220},{"name":"get_alert_type","line":224},{"name":"get_alert_severity","line":228},{"name":"get_alert_timestamp","line":232},{"name":"ALERT_NODE_DOWN","line":237},{"name":"ALERT_HIGH_CPU","line":238},{"name":"ALERT_LOW_BATTERY","line":239},{"name":"ALERT_LINK_FAILURE","line":240},{"name":"ALERT_CONGESTION","line":241},{"name":"ALERT_SECURITY","line":242},{"name":"generate_alert","line":245},{"name":"analyze_health_trend","line":260},{"name":"find_unhealthy_nodes","line":281},{"name":"calculate_network_trend","line":296},{"name":"generate_summary_report","line":325},{"name":"is_monitoring_active","line":331},{"name":"calculate_uptime","line":342}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","health","dashboard","max","nodes","metrics","interval","alert","threshold","critical","create","metric","get","node","timestamp","cpu","memory","bandwidth","latency","packet","loss","rate","link","quality","battery","score","overall","count","warning","calculate","network","detect","generate","report","severity","down","high","low","failure","congestion","security","analyze","trend","find","unhealthy","summary","monitoring","active","uptime"]},{"id":"3e4c2dba999625c51bdf626e8d2924d2a2b488ede546748d30d2ad0007becd38","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/linked_list.t27","health":"ok","module":"TriLinkedList"}],"description":"t27/specs/","symbols":[{"name":"ListNode","line":13},{"name":"LinkedList","line":19},{"name":"init","line":31},{"name":"append","line":36},{"name":"prepend","line":41},{"name":"remove","line":46},{"name":"deinit","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","linked","list","node","init","append","prepend","remove","deinit"]},{"id":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_routing.t27","health":"ok","module":"MeshRouting"}],"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","symbols":[{"name":"DEFAULT_TTL","line":9},{"name":"MESH_NET_A","line":10},{"name":"MESH_NET_B","line":11},{"name":"MESH_NET_C","line":12},{"name":"MIN_NODE_ID","line":13},{"name":"MAX_NODE_ID","line":14},{"name":"mesh_ip","line":20},{"name":"is_mesh_subnet","line":26},{"name":"node_of_ip","line":40},{"name":"decrement_ttl","line":55},{"name":"is_ttl_expired","line":66},{"name":"choose_next_hop","line":75},{"name":"delivery_decision","line":131}],"imports":[{"name":"base::types","line":6}],"terms":["macos","rings","rust","mesh","routing","default","ttl","net","min","node","max","subnet","decrement","expired","choose","hop","delivery","decision"]},{"id":"3f327ef3f375cf0914564095f3632fadf25550c619fe0244c6432b5fcd51eefc","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/avs_reconf.t27","health":"ok","module":"avs-reconf"}],"description":"avs_reconf.t27 — AVS Reconfiguration Module Dynamic AVS voltage/frequency reconfiguration support","symbols":[{"name":"RECONF_OPCODE_BASE","line":12},{"name":"RECONF_OP_SET_VOLTAGE","line":14},{"name":"RECONF_OP_SET_FREQUENCY","line":15},{"name":"RECONF_OP_SET_MODE","line":16},{"name":"RECONF_OP_RESET","line":17},{"name":"RECONF_OP_QUERY","line":18},{"name":"RECONF_OP_SAVE_CONFIG","line":19},{"name":"RECONF_OP_LOAD_CONFIG","line":20},{"name":"RECONF_OP_CALIBRATE","line":21},{"name":"RECONF_OP_MAX","line":22},{"name":"RECONF_MODE_MANUAL","line":24},{"name":"RECONF_MODE_AUTOMATIC","line":25},{"name":"RECONF_MODE_PERFORMANCE","line":26},{"name":"RECONF_MODE_POWER_SAVING","line":27},{"name":"RECONF_MODE_ADAPTIVE","line":28},{"name":"RECONF_MODE_MAX","line":29},{"name":"RECONF_STATE_IDLE","line":31},{"name":"RECONF_STATE_BUSY","line":32},{"name":"RECONF_STATE_ERROR","line":33},{"name":"RECONF_STATE_CALIBRATING","line":34},{"name":"VOLTAGE_MIN_MV","line":36},{"name":"VOLTAGE_MAX_MV","line":37},{"name":"FREQ_MIN_KHZ","line":38},{"name":"FREQ_MAX_KHZ","line":39},{"name":"RECONF_TIMEOUT_MS","line":41},{"name":"RECONF_RETRY_COUNT","line":42},{"name":"ReconfOp","line":48},{"name":"ReconfMode","line":59},{"name":"ReconfState","line":67},{"name":"ReconfConfig","line":74},{"name":"ReconfStatus","line":85},{"name":"ReconfCommand","line":94},{"name":"ReconfResult","line":101},{"name":"avs_reconf_config_init","line":113},{"name":"avs_reconf_config_performance","line":128},{"name":"avs_reconf_config_power_saving","line":143},{"name":"avs_reconf_config_adaptive","line":158},{"name":"avs_reconf_voltage_valid","line":177},{"name":"avs_reconf_freq_valid","line":183},{"name":"avs_reconf_config_valid","line":189},{"name":"avs_reconf_status_init","line":202},{"name":"avs_reconf_status_start_op","line":215},{"name":"avs_reconf_status_complete","line":228},{"name":"avs_reconf_status_update_voltage","line":244},{"name":"avs_reconf_status_update_freq","line":257},{"name":"avs_reconf_command_init","line":274},{"name":"avs_reconf_command_set_voltage","line":285},{"name":"avs_reconf_command_set_freq","line":296},{"name":"avs_reconf_command_set_mode","line":307},{"name":"avs_reconf_command_calibrate","line":318},{"name":"avs_reconf_command_save_config","line":329},{"name":"avs_reconf_result_success","line":344},{"name":"avs_reconf_result_error","line":354},{"name":"avs_reconf_should_retry","line":364},{"name":"encode_avs_reconf_cmd","line":374},{"name":"op_field","line":376},{"name":"param1_field","line":377},{"name":"param2_field","line":378},{"name":"decode_avs_reconf_cmd","line":384},{"name":"op","line":385},{"name":"param1","line":386},{"name":"param2","line":387}],"imports":[],"terms":["chips","euler","fpga","avs","reconf","opcode","base","set","voltage","frequency","mode","reset","query","save","config","load","calibrate","max","manual","automatic","performance","power","saving","adaptive","state","idle","busy","calibrating","min","freq","khz","timeout","retry","count","status","init","valid","start","complete","success","encode","cmd","field","param1","param2","decode"]},{"id":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/gf16_accel_tb.t27","health":"warn","module":"GF16_Accel_Testbench"}],"description":"t27/specs/fpga/testbench/gf16_accel_tb.t27 GF16 Accelerator Testbench Tests Golden Float 16 arithmetic: add, mul, MAC, phi identity","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"PHI_TOLERANCE","line":12},{"name":"tick","line":27},{"name":"reset","line":32},{"name":"gf16_add","line":40},{"name":"gf16_mul","line":51},{"name":"gf16_mac","line":62}],"imports":[{"name":"fpga::gf16_accel::Gf16Accel","line":8}],"terms":["fpga","testbench","gf16","accel","clk","period","sim","timeout","phi","tolerance","tick","reset","mul","mac"]},{"id":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","sources":[{"repo":"ghashtag/t27","path":"tests/comprehensive_suite.t27","health":"ok","module":"tests-comprehensive-suite"}],"description":"comprehensive_suite.t27 -- documents the repository integration suite Executed by: t27c suite (or tri test). No shell runners under tests/.","symbols":[{"name":"SUITE_PHASE_COUNT","line":7},{"name":"PHASE_PARSE","line":9},{"name":"PHASE_GEN_ZIG","line":10},{"name":"PHASE_GEN_VERILOG","line":11},{"name":"PHASE_GEN_C","line":12},{"name":"PHASE_SEAL_VERIFY","line":13},{"name":"PHASE_FIXED_POINT","line":14}],"imports":[],"terms":["comprehensive","suite","phase","count","parse","gen","zig","verilog","seal","verify","fixed","point"]},{"id":"3f981e43e3fb34c7e4b90c54abbda13c3faae9c4c65bfd1fe5afa88f7c60cbc2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/maxpool2d_layer.t27","health":"ok","module":"Maxpool2d"}],"description":"t27/specs/","symbols":[{"name":"MaxPool2DConfig","line":13},{"name":"forward","line":26},{"name":"backward","line":31}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","maxpool2d","layer","max","pool2dconfig","forward","backward"]},{"id":"3fafd9ae6b4b9d4b0907a4335ae37b99a2e320927ee2481fc851323a5ec436b6","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/bridge.t27","health":"warn","module":"TrinityMemoryBridge"}],"description":"Native bounded JSON-RPC memory emulator application logic. Caller owns all buffers and state; no HTTP, allocation, or persistence here. Include codecs/container/tensorpack/json/json_writer/tensorpack_json first. Limits are configured in TMBridgeState and enforced before object commits. Current common JSON parser is bounded to 64 nesting levels and i64/u64 integer lexemes; exceeding those bounds returns an invalid-JSON response.","symbols":[{"name":"TMBridgeSlot","line":12},{"name":"TMBridgeState","line":13},{"name":"tm_bridge_put","line":25},{"name":"tm_bridge_raw","line":26},{"name":"tm_bridge_text","line":27},{"name":"tm_bridge_unsigned","line":31},{"name":"tm_bridge_integer","line":32},{"name":"tm_bridge_float","line":33},{"name":"tm_bridge_hex_digit","line":39},{"name":"tm_bridge_hex","line":43},{"name":"tm_bridge_string","line":51},{"name":"tm_bridge_literal_string","line":52},{"name":"tm_bridge_b64_digit","line":55},{"name":"tm_bridge_b64_value","line":62},{"name":"tm_bridge_b64_decode","line":71},{"name":"tm_bridge_b64_encode","line":102},{"name":"tm_bridge_handle","line":118},{"name":"tm_bridge_init","line":123},{"name":"tm_bridge_codec_name","line":134},{"name":"TMBridgeError","line":143},{"name":"tm_bridge_error","line":144},{"name":"tm_bridge_equal","line":147},{"name":"tm_bridge_token_equal","line":155},{"name":"tm_bridge_field","line":159},{"name":"tm_bridge_fields","line":168},{"name":"tm_bridge_codepoints","line":186},{"name":"tm_bridge_valid_integer","line":191},{"name":"tm_bridge_find_slot","line":195},{"name":"tm_bridge_inspect","line":220},{"name":"tm_bridge_capabilities","line":238},{"name":"tm_bridge_identity","line":247},{"name":"tm_bridge_u64_array","line":257},{"name":"tm_bridge_scales","line":265},{"name":"tm_bridge_tmem_info","line":273},{"name":"tm_bridge_tp_info","line":299},{"name":"tm_bridge_dot","line":332},{"name":"tm_bridge_upload","line":403},{"name":"tm_bridge_dispatch","line":449},{"name":"tm_bridge_envelope","line":518},{"name":"tm_bridge_id","line":532},{"name":"tm_bridge_response_error","line":537},{"name":"tm_bridge_http_error","line":549},{"name":"tm_bridge_request","line":555}],"imports":[],"terms":["dmitrii","memory","bridge","tmbridge","slot","state","put","raw","text","unsigned","integer","float","hex","digit","literal","b64","decode","encode","handle","init","codec","equal","token","field","fields","codepoints","valid","find","inspect","capabilities","identity","u64","array","scales","tmem","info","dot","upload","dispatch","envelope","response","http","request"]},{"id":"3fb36280bdd9167f00769156462b674cec1d67d08eeb17255fa00ce18e41ad7c","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_actor.t27","health":"ok","module":"PpoActor"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_INIT_LOG_STD","line":13},{"name":"MIN_LOG_STD","line":14},{"name":"MAX_LOG_STD","line":15},{"name":"ActorConfig","line":21},{"name":"ActionSpace","line":29},{"name":"PolicyOutput","line":33},{"name":"forward_discrete","line":43},{"name":"forward_continuous","line":48},{"name":"sample_action","line":53},{"name":"log_prob","line":58},{"name":"entropy","line":63}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["ppo","actor","default","init","log","std","min","max","config","action","space","policy","forward","discrete","continuous","sample","prob","entropy"]},{"id":"40030c89eba2881aed876382471cee3537d2e73a3cdfc72de27e24a0f52aeb07","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/zig/codegen.t27","health":"warn","module":null}],"description":"codegen.t27 — Code Generator for Zig Generates Zig 0.15 code from t27 AST","symbols":[{"name":"CodegenOptions","line":8},{"name":"ZigCodegen","line":17},{"name":"StringBuilder","line":27},{"name":"CodegenError","line":34},{"name":"ZigCodegen","line":41},{"name":"ZigCodegen","line":53},{"name":"ZigCodegen","line":76},{"name":"ZigCodegen","line":85},{"name":"ZigCodegen","line":94},{"name":"ZigCodegen","line":116},{"name":"ZigCodegen","line":163},{"name":"ZigCodegen","line":185},{"name":"ZigCodegen","line":198},{"name":"ZigCodegen","line":221},{"name":"ZigCodegen","line":249},{"name":"ZigCodegen","line":270},{"name":"ZigCodegen","line":295},{"name":"ZigCodegen","line":320},{"name":"ZigCodegen","line":347},{"name":"ZigCodegen","line":374},{"name":"ZigCodegen","line":390},{"name":"ZigCodegen","line":415},{"name":"ZigCodegen","line":421},{"name":"ZigCodegen","line":427},{"name":"ZigCodegen","line":432},{"name":"ZigCodegen","line":438},{"name":"ZigCodegen","line":448},{"name":"ZigCodegen","line":468},{"name":"ZigCodegen","line":478},{"name":"ZigCodegen","line":483},{"name":"ZigCodegen","line":500},{"name":"ZigCodegen","line":511},{"name":"ZigCodegen","line":516},{"name":"ZigCodegen","line":539},{"name":"ZigCodegen","line":548},{"name":"ZigCodegen","line":553},{"name":"ZigCodegen","line":566},{"name":"ZigCodegen","line":571},{"name":"StringBuilder","line":578},{"name":"StringBuilder","line":586},{"name":"StringBuilder","line":595},{"name":"generate_zig","line":600}],"imports":[],"terms":["fpga","compiler","codegen","zig","options","builder","generate"]},{"id":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/youtube_transcript.t27","health":"warn","module":"enrichment"}],"description":"youtube_transcript.t27 — YouTube Transcript Extraction for NotebookLM Enrichment Ring 090 — Fallback for blocked YouTube URL uploads","symbols":[{"name":"VERSION","line":12},{"name":"MAX_TRANSCRIPT_SIZE","line":13},{"name":"YOUTUBE_TIMEOUT_SECONDS","line":14},{"name":"YTDLP_CHECK_TIMEOUT_SECONDS","line":15},{"name":"ErrorCode","line":21},{"name":"YouTubeSource","line":39},{"name":"Transcript","line":45},{"name":"EnrichmentReport","line":53},{"name":"YOUTUBE_DOMAINS","line":64},{"name":"is_youtube_url","line":78},{"name":"extract_video_id","line":93},{"name":"srt_to_text","line":143},{"name":"extract_transcript","line":192},{"name":"upload_transcript","line":364},{"name":"enrich_with_transcripts","line":409}],"imports":[],"terms":["enrichment","youtube","transcript","max","size","timeout","seconds","ytdlp","you","tube","report","domains","url","extract","video","srt","text","upload","enrich","transcripts"]},{"id":"4018d7703d08862d4f087eb076fda4fa14c54cc8767c98aaa493a70fb6eb1719","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph.t27","health":"ok","module":"TriGraph"}],"description":"t27/specs/","symbols":[{"name":"Graph","line":13},{"name":"GraphPath","line":18},{"name":"empty","line":28},{"name":"add_node","line":33},{"name":"add_edge","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","path","empty","node","edge"]},{"id":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_universal_attractor.t27","health":"ok","module":"PhiUniversalAttractor"}],"description":"t27/specs/math/phi_universal_attractor.t27 Phi Universal Attractor Theorems -- Theorem 3: phi as Universal Fixed-Point MATH-ATTRACTOR-001 -- Generative mechanism for phi proportion THEOREM 3: phi is the unique fixed point of balancing recursion f(x) = (x + x^-^1 + 1) / 2 This addresses the critic's concern that phi is \"fitting\" rather than a true mechanism.","symbols":[{"name":"balancing_recursion","line":24},{"name":"inv","line":25},{"name":"CONVERGENCE_RATE_LAMBDA","line":31},{"name":"ConvergenceResult","line":38},{"name":"iterate_to_fixed_point","line":45},{"name":"next","line":51},{"name":"balancing_derivative","line":77},{"name":"inv_sq","line":78},{"name":"max_lipschitz_constant","line":84},{"name":"ProofStep","line":92},{"name":"fixed_point_verification_steps","line":98},{"name":"convergence_proof_steps","line":118},{"name":"bit_allocation_attractor","line":150},{"name":"target_ratio","line":152},{"name":"max_iterations","line":155},{"name":"tolerance","line":156},{"name":"exp","line":166},{"name":"mant","line":167},{"name":"lambda_computed","line":267},{"name":"result","line":271}],"imports":[{"name":"math::constants","line":10},{"name":"math::sacred_physics","line":11}],"terms":["math","phi","universal","attractor","balancing","recursion","inv","convergence","rate","lambda","iterate","fixed","point","derivative","max","lipschitz","constant","proof","step","verification","steps","bit","allocation","target","ratio","iterations","tolerance","exp","mant","computed"]},{"id":"402ebb2274036fffb23ef31ddd4a81532a3ae5db2bc2925851bfe78276923a33","sources":[{"repo":"ghashtag/t27","path":"specs/provider/stream.t27","health":"ok","module":"provider-stream"}],"description":"provider/stream.t27 — SSE/Streaming Response Handling Server-Sent Events and streaming response processing","symbols":[{"name":"SSE_EVENT_PREFIX","line":23},{"name":"SSE_DATA_PREFIX","line":26},{"name":"SSE_COMMENT_PREFIX","line":29},{"name":"SSE_EVENT_MESSAGE","line":32},{"name":"SSE_EVENT_DELTA","line":35},{"name":"SSE_EVENT_DONE","line":38},{"name":"SSE_EVENT_ERROR","line":41},{"name":"SSE_BUFFER_SIZE","line":44},{"name":"MAX_CHUNK_SIZE","line":47},{"name":"DEFAULT_STREAM_TIMEOUT_MS","line":50},{"name":"SseEventType","line":57},{"name":"SseEvent","line":66},{"name":"StreamState","line":74},{"name":"StreamError","line":84},{"name":"StreamConfig","line":93},{"name":"StreamResult","line":101},{"name":"BufferPosition","line":109},{"name":"ParsedEvent","line":116},{"name":"StreamStats","line":123},{"name":"StreamCallback","line":132},{"name":"CallbackData","line":141},{"name":"stream_config_default","line":151},{"name":"sse_event_create","line":161},{"name":"stream_result_create","line":171},{"name":"stream_result_error","line":181},{"name":"buffer_position_create","line":191},{"name":"parsed_event_create","line":200},{"name":"stream_stats_create","line":209},{"name":"callback_data_create","line":220},{"name":"parse_sse_line","line":228},{"name":"data","line":238},{"name":"event_type_str","line":243},{"name":"event_type","line":244},{"name":"parse_event_type","line":252},{"name":"sse_event_to_chunk","line":267},{"name":"chunk_type","line":268},{"name":"is_sse_comment","line":285},{"name":"is_sse_data","line":290},{"name":"is_sse_event","line":295},{"name":"sse_event_type_to_string","line":300},{"name":"stream_is_active","line":311},{"name":"stream_has_error","line":316},{"name":"stream_state_to_string","line":321},{"name":"stream_error_to_string","line":333},{"name":"is_stream_success","line":344},{"name":"update_stream_stats","line":349},{"name":"increment_stream_errors","line":360},{"name":"config","line":375},{"name":"event","line":380},{"name":"chunks","line":385},{"name":"result","line":386},{"name":"result","line":391},{"name":"pos","line":396},{"name":"line","line":401},{"name":"parsed","line":402},{"name":"line","line":407},{"name":"parsed","line":408},{"name":"line","line":413},{"name":"parsed","line":414},{"name":"str","line":431},{"name":"str","line":444},{"name":"str","line":449},{"name":"result","line":454}],"imports":[],"terms":["provider","stream","sse","event","prefix","data","delta","done","buffer","size","max","chunk","default","timeout","state","config","position","parsed","stats","callback","create","parse","str","active","success","increment","chunks","pos"]},{"id":"40e271225fff7d99d8fe235c2347210c228f6c558af910e84bbbe85ef0312d94","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hw_types.t27","health":"ok","module":"HwTypes"}],"description":"t27/specs/fpga/hw_types.t27 Hardware Type System for Trinity T27 FPGA HIR Defines signal-level types with bit-accurate widths and signedness","symbols":[{"name":"ResetKind","line":11},{"name":"ResetPolarity","line":16},{"name":"HwTypeTag","line":23},{"name":"HwType","line":38},{"name":"hw_bits","line":49},{"name":"hw_uint","line":62},{"name":"hw_sint","line":75},{"name":"hw_bool","line":88},{"name":"hw_clock","line":101},{"name":"hw_reset","line":114},{"name":"hw_vector","line":127},{"name":"hw_gf16","line":140},{"name":"hw_width","line":155},{"name":"is_signed","line":161},{"name":"is_clock_like","line":167},{"name":"is_reset_like","line":173},{"name":"types_equal","line":179},{"name":"verilog_range","line":197},{"name":"is_connectable","line":203}],"imports":[],"terms":["fpga","reset","kind","polarity","tag","bits","uint","sint","clock","vector","gf16","width","signed","like","equal","verilog","range","connectable"]},{"id":"418ffcada23abcecda361681156ca90ece34477981923d60562033f87fee7923","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/similarity_search.t27","health":"warn","module":"VSASimilaritySearch"}],"description":"t27/specs/vsa/similarity_search.t27 VSA Similarity Search Specification Ring 062 - Efficient similarity search in hyperdimensional space Defines semantic similarity operations for VSA trit vectors","symbols":[{"name":"MAX_VECTORS","line":16},{"name":"TOP_K_DEFAULT","line":17},{"name":"SIMILARITY_THRESHOLD_DEFAULT","line":18},{"name":"SIMILARITY_COSINE","line":21},{"name":"SIMILARITY_DOT","line":22},{"name":"SIMILARITY_HAMMING","line":23},{"name":"SIMILARITY_JACCARD","line":24},{"name":"SearchResult","line":27},{"name":"SearchResults","line":34},{"name":"cosine_similarity","line":47},{"name":"ai","line":54},{"name":"bi","line":55},{"name":"norm_a_f","line":69},{"name":"norm_b_f","line":70},{"name":"hamming_similarity","line":82},{"name":"jaccard_index","line":103},{"name":"a_nonzero","line":109},{"name":"b_nonzero","line":110},{"name":"find_top_k","line":135},{"name":"insert_result","line":173},{"name":"sort_results","line":197},{"name":"temp","line":203},{"name":"HNSWNode","line":218},{"name":"HNSW_MAX_NODES","line":225},{"name":"hnsw_search","line":231},{"name":"similarity","line":246},{"name":"collect_neighbors","line":268},{"name":"node","line":269},{"name":"neighbor_idx","line":273},{"name":"similarity","line":274},{"name":"get_vector","line":288},{"name":"result","line":375},{"name":"result","line":384},{"name":"result","line":393},{"name":"cosine_ab","line":402},{"name":"cosine_ba","line":403},{"name":"hamming_ab","line":404},{"name":"hamming_ba","line":405},{"name":"results","line":426}],"imports":[{"name":"vsa::vsa_core","line":9},{"name":"math::constants","line":10}],"terms":["vsa","similarity","search","vsasimilarity","max","vectors","top","default","threshold","cosine","dot","hamming","jaccard","results","norm","index","nonzero","find","insert","sort","temp","hnswnode","hnsw","nodes","collect","neighbors","node","neighbor","idx","get","vector"]},{"id":"422a79e6015d8959e474b78e93f8fb16e1db2e0b2d8a885bfdab1aafe2347175","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_slash.t27","health":"ok","module":"TriSlash"}],"description":"TRI-NET DePIN slashing: the game-theoretic backstop. Rewarding honest relay work (tri_settle) is only half of it -- a node must also LOSE something for lying. Each node posts a bond; when its signed receipt does NOT match an independent re-verification (the settlement re-meters the same stream and recomputes the seal, as the 3-node relay demo does bit-exactly), the bond is forfeited (slashed) from its $TRI balance. Now cheating is strictly worse than not participating, so an honest","symbols":[{"name":"MIN_BOND","line":12},{"name":"bond_ok","line":15},{"name":"receipt_matches","line":21},{"name":"balance_add","line":26},{"name":"settle_or_slash","line":38}],"imports":[{"name":"base::types","line":10}],"terms":["net","slash","min","bond","receipt","matches","balance","settle"]},{"id":"4231d25e32ae17ce4b5009632e3727e6d269f5c98317f8f7cb826973cc160c3a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/set.t27","health":"ok","module":"TriSet"}],"description":"t27/specs/","symbols":[{"name":"HashSet","line":13},{"name":"init","line":22},{"name":"add","line":27},{"name":"contains","line":32},{"name":"union","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","set","hash","init","contains","union"]},{"id":"425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/failure_predictor.t27","health":"warn","module":"failure_predictor"}],"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","symbols":[{"name":"MAX_NODES","line":7},{"name":"WARNING_THRESHOLD","line":8},{"name":"CRITICAL_THRESHOLD","line":9},{"name":"HISTORY_SIZE","line":10},{"name":"create_health_metrics","line":13},{"name":"get_cpu_usage","line":20},{"name":"get_memory_usage","line":24},{"name":"get_error_rate","line":28},{"name":"get_temperature","line":32},{"name":"create_risk_score","line":37},{"name":"get_risk_level","line":44},{"name":"get_confidence","line":48},{"name":"get_risk_trend","line":52},{"name":"get_prediction_time","line":56},{"name":"create_health_array","line":63},{"name":"get_health_metrics","line":67},{"name":"calculate_health_score","line":75},{"name":"predict_failure_probability","line":93},{"name":"is_trending_failure","line":110},{"name":"predict_time_to_failure","line":121},{"name":"calculate_failure_risk","line":138},{"name":"needs_immediate_action","line":149},{"name":"find_most_at_risk","line":158}],"imports":[{"name":"base::types","line":5}],"terms":["net","failure","predictor","max","nodes","warning","threshold","critical","history","size","create","health","metrics","get","cpu","usage","memory","rate","temperature","risk","score","level","confidence","trend","prediction","time","array","calculate","predict","probability","trending","immediate","action","find","most"]},{"id":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_settle.t27","health":"ok","module":"TriComputeSettle"}],"description":"TRI-NET compute settlement: turn a VERIFIED compute-receipt into $TRI reward. tri_compute_receipt attests the work (device + GoldenFloat op + result, chained); tri_a2a gates freshness (anti-replay). This spec closes the loop to value: a fresh, verified receipt credits the executor's balance (saturating, like tri_ledger.balance_add) and folds the receipt's sign digest into an auditable settlement state root. A replayed or stale receipt pays ZERO.","symbols":[{"name":"SETTLE_GENESIS","line":14},{"name":"S_C","line":15},{"name":"REWARD_PER_GF_OP","line":16},{"name":"WORK_BPS_UNIT","line":17},{"name":"rotl","line":19},{"name":"mix32","line":23},{"name":"balance_add","line":33},{"name":"compute_reward","line":44},{"name":"compute_reward_fmt","line":62},{"name":"settle_balance","line":72},{"name":"settle_head","line":78},{"name":"is_finite_gf16","line":86},{"name":"FMT_GF_BINARY","line":99},{"name":"FMT_GFT","line":100},{"name":"payable_flag","line":113},{"name":"settle_canonical","line":138},{"name":"settle_canonical_fmt","line":161},{"name":"settle_checked","line":180},{"name":"settle_checked_gf","line":189},{"name":"settle_checked_gft","line":196},{"name":"gft_offset_max_w","line":206},{"name":"settle_checked_gft_w","line":223},{"name":"settle_full","line":230},{"name":"settle_full_h","line":238},{"name":"settle_signed","line":249}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","settle","genesis","reward","per","work","bps","unit","rotl","mix32","balance","fmt","head","finite","gf16","binary","gft","payable","flag","canonical","checked","offset","max","full","signed"]},{"id":"42f1b5afac3cc86447f1f69545a06a2ac80d30c7bb65c5f6d706d28476a67883","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/encoder_block.t27","health":"ok","module":"EncoderBlock"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_D_MODEL","line":13},{"name":"DEFAULT_N_HEADS","line":14},{"name":"DEFAULT_D_FF","line":15},{"name":"DEFAULT_DROPOUT","line":16},{"name":"EncoderBlockConfig","line":22},{"name":"AttentionOutput","line":30},{"name":"FFNOutput","line":35},{"name":"BlockOutput","line":39},{"name":"multi_head_attention","line":48},{"name":"feed_forward","line":53},{"name":"forward","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","encoder","block","default","model","heads","dropout","config","attention","ffnoutput","multi","head","feed","forward"]},{"id":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bridge.t27","health":"warn","module":"FPGA_Bridge"}],"description":"t27/specs/fpga/bridge.t27 FPGA Communication Bridge Specification Combines UART and SPI for host and peripheral communication","symbols":[{"name":"RX_BUFFER_SIZE","line":19},{"name":"TX_BUFFER_SIZE","line":20},{"name":"SPI_BUFFER_SIZE","line":21},{"name":"MAX_PACKET_SIZE","line":24},{"name":"PACKET_TIMEOUT","line":25},{"name":"OP_MAC_MUL","line":28},{"name":"OP_MAC_MAC","line":29},{"name":"OP_MAC_MACC","line":30},{"name":"OP_MAC_DOT","line":31},{"name":"NUM_MAC_UNITS","line":32},{"name":"BRIDGE_IDLE","line":39},{"name":"BRIDGE_RX","line":40},{"name":"BRIDGE_PARSE","line":41},{"name":"BRIDGE_TX","line":42},{"name":"BRIDGE_SPI","line":43},{"name":"BRIDGE_MAC","line":44},{"name":"Bridge_Unit","line":47},{"name":"buffer_write","line":88},{"name":"new_head","line":89},{"name":"buffer_read","line":99},{"name":"data","line":103},{"name":"new_tail","line":104},{"name":"buffer_count","line":110},{"name":"bridge_rx_available","line":120},{"name":"bridge_tx_space","line":126},{"name":"PKT_UART_DATA","line":135},{"name":"PKT_SPI_XFER","line":136},{"name":"PKT_MAC_OP","line":137},{"name":"PKT_STATUS","line":138},{"name":"PKT_CONFIG","line":139},{"name":"bridge_parse_header","line":145},{"name":"ptype","line":150},{"name":"plen","line":151},{"name":"bridge_process_payload","line":169},{"name":"bridge_handle_uart_data","line":205},{"name":"result_read","line":208},{"name":"data","line":209},{"name":"ok","line":214},{"name":"new_head","line":215},{"name":"bridge_handle_spi_xfer","line":225},{"name":"cs_sel","line":230},{"name":"data_l","line":231},{"name":"data_h","line":232},{"name":"data","line":235},{"name":"bridge_handle_mac_op","line":248},{"name":"op_byte","line":257},{"name":"unit_byte","line":260},{"name":"a_l","line":263},{"name":"a_h","line":266},{"name":"b_l","line":269},{"name":"b_h","line":272},{"name":"operand_a","line":281},{"name":"operand_b","line":282},{"name":"acc","line":295},{"name":"bridge_handle_status","line":309},{"name":"status","line":311},{"name":"bridge_handle_config","line":329},{"name":"cfg_byte","line":330}],"imports":[{"name":"base::types","line":9},{"name":"fpga::uart::UART_Bridge","line":10},{"name":"fpga::spi::SPI_Master","line":11},{"name":"fpga::mac::ZeroDSP_MAC","line":12}],"terms":["fpga","bridge","buffer","size","spi","max","packet","timeout","mac","mul","macc","dot","num","units","idle","parse","unit","write","head","read","data","tail","count","available","space","pkt","uart","xfer","status","config","header","ptype","plen","process","payload","handle","sel","byte","operand","acc","cfg"]},{"id":"4418ff9d9f6577e80ca3362748d220a2a0ec2eb6669802fa8d85689564a88bc7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/counting_sort.t27","health":"ok","module":"TriCountingSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","counting"]},{"id":"4454f6161b15302cd298c417dfcade3dd0a0c42e6734f89eef26a1b5eda337e9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_retry.t27","health":"ok","module":"AdaptiveRetry"}],"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","symbols":[{"name":"BASE_DELAY_MS","line":6},{"name":"MAX_RETRIES","line":7},{"name":"BACKOFF_MULTIPLIER","line":8},{"name":"QUALITY_HIGH","line":11},{"name":"QUALITY_MEDIUM","line":12},{"name":"backoff_delay_ms","line":18},{"name":"max_retries_for_quality","line":34},{"name":"should_retry","line":45},{"name":"base_probability","line":50},{"name":"retry_success_probability","line":60},{"name":"total_retry_time","line":71}],"imports":[],"terms":["net","adaptive","retry","base","delay","max","retries","backoff","multiplier","quality","high","medium","probability","success","total","time"]},{"id":"445b536ffbdf40c4580d3980157b45ec97fae43c0cceec2f177d46a91a0682bd","sources":[{"repo":"ghashtag/t27","path":"specs/math/radix_economy.t27","health":"ok","module":"RadixEconomy"}],"description":"t27/specs/math/radix_economy.t27 Radix Economy Formal Spec -- Information-Theoretic Basis for Base-3 Computing E(b) = ln(b)/b, maximized at b = e ~= 2.71828 E(3)/E(e) >= 99.5%, E(3)/E(2) = 1.054 (5.4% advantage)","symbols":[{"name":"E_BASE2","line":16},{"name":"E_BASE3","line":19},{"name":"E_OPTIMAL","line":22},{"name":"LOG2_3","line":25},{"name":"LOG3_2","line":28},{"name":"radix_economy","line":35},{"name":"efficiency_ratio","line":40},{"name":"base_advantage","line":45},{"name":"info_density_bits","line":50},{"name":"ternary_range","line":55},{"name":"binary_range","line":60},{"name":"ln","line":69},{"name":"log2","line":87},{"name":"pow","line":92},{"name":"exp","line":139},{"name":"floor","line":154}],"imports":[{"name":"Constants","line":8}],"terms":["math","radix","economy","base2","base3","optimal","log2","log3","efficiency","ratio","base","advantage","info","density","bits","ternary","range","binary","pow","exp","floor"]},{"id":"4468de25e4e94f883c3cd64306eb5cff4e69992728e7211b73cacfe2c83bc3c8","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_arithmetic.t27","health":"warn","module":"TernaryArithmetic"}],"description":"t27/specs/isa/ternary_arithmetic.t27 Ternary Arithmetic Operations Specification Ring 064 - Balanced ternary arithmetic for T27 Defines addition, subtraction, multiplication, and division","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"MIN_TRIT","line":21},{"name":"MAX_TRIT","line":22},{"name":"TRITS_PER_WORD","line":25},{"name":"trit_add","line":35},{"name":"TritAddResult","line":57},{"name":"trit_sub","line":68},{"name":"neg_b","line":70},{"name":"result","line":71},{"name":"TritSubResult","line":80},{"name":"trit_mul","line":92},{"name":"ternary_word_add","line":102},{"name":"add_result","line":108},{"name":"WordAddResult","line":120},{"name":"ternary_word_sub","line":132},{"name":"sub_result","line":138},{"name":"WordSubResult","line":150},{"name":"ternary_to_decimal","line":162},{"name":"decimal_to_ternary","line":179},{"name":"rem","line":184},{"name":"is_valid_trit","line":221},{"name":"validate_trits","line":227},{"name":"ternary_compare","line":245},{"name":"idx","line":250},{"name":"vals","line":368},{"name":"r1","line":375},{"name":"r2","line":376},{"name":"vals","line":388},{"name":"r1","line":395},{"name":"r2","line":396},{"name":"vals","line":407},{"name":"vals","line":420},{"name":"vals","line":430},{"name":"result","line":445},{"name":"vals","line":457},{"name":"vals","line":470}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","arithmetic","trit","neg","zero","pos","min","max","trits","per","word","sub","mul","decimal","rem","valid","validate","compare","idx","vals"]},{"id":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_framework.t27","health":"warn","module":"integration_framework"}],"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","symbols":[{"name":"MAX_MODULES","line":7},{"name":"MAX_MESSAGES","line":8},{"name":"MAX_EVENTS","line":9},{"name":"INTEGRATION_VERSION","line":10},{"name":"create_module_registration","line":13},{"name":"get_registered_module_id","line":20},{"name":"get_registered_module_type","line":24},{"name":"get_registered_module_priority","line":28},{"name":"get_registered_module_status","line":32},{"name":"TYPE_NETWORK","line":37},{"name":"TYPE_TESTING","line":38},{"name":"type_documentation","line":39},{"name":"TYPE_VISUALIZATION","line":40},{"name":"TYPE_SIMULATION","line":41},{"name":"TYPE_PROFILING","line":42},{"name":"STATUS_IDLE","line":45},{"name":"STATUS_ACTIVE","line":46},{"name":"STATUS_BUSY","line":47},{"name":"STATUS_ERROR","line":48},{"name":"STATUS_OFFLINE","line":49},{"name":"create_integration_message","line":52},{"name":"get_integration_message_id","line":59},{"name":"get_integration_message_source","line":63},{"name":"get_integration_message_dest","line":67},{"name":"get_integration_message_type","line":71},{"name":"MSG_DATA","line":76},{"name":"MSG_CONTROL","line":77},{"name":"MSG_STATUS","line":78},{"name":"MSG_ERROR","line":79},{"name":"MSG_EVENT","line":80},{"name":"send_message","line":83},{"name":"receive_message","line":111},{"name":"create_event","line":128},{"name":"get_event_id","line":135},{"name":"get_event_type","line":139},{"name":"get_event_source","line":143},{"name":"get_event_data","line":147},{"name":"EVENT_MODULE_LOADED","line":152},{"name":"EVENT_MODULE_UNLOADED","line":153},{"name":"EVENT_TEST_COMPLETED","line":154},{"name":"EVENT_SIMULATION_STEP","line":155},{"name":"EVENT_VISUALIZATION_UPDATE","line":156},{"name":"subscribe_to_event","line":159},{"name":"publish_event","line":176},{"name":"create_state_sync","line":202},{"name":"get_sync_module_id","line":209},{"name":"get_sync_state_version","line":213},{"name":"get_sync_state_data","line":217},{"name":"get_sync_checksum","line":221},{"name":"synchronize_states","line":226},{"name":"create_error_propagation","line":251},{"name":"get_error_source","line":258},{"name":"get_error_code","line":262},{"name":"get_error_severity","line":266},{"name":"get_error_timestamp","line":270},{"name":"SEVERITY_INFO","line":275},{"name":"SEVERITY_WARNING","line":276},{"name":"SEVERITY_ERROR","line":277},{"name":"SEVERITY_CRITICAL","line":278},{"name":"propagate_error","line":281},{"name":"load_module","line":314},{"name":"unload_module","line":329},{"name":"create_dependency","line":346},{"name":"get_dependency_module_id","line":353},{"name":"get_dependency_depends_on","line":357},{"name":"get_dependency_type","line":361},{"name":"get_dependency_required","line":365},{"name":"check_dependencies","line":370},{"name":"create_resource_request","line":409},{"name":"get_resource_request_module","line":416},{"name":"get_resource_request_type","line":420},{"name":"get_resource_request_amount","line":424},{"name":"get_resource_request_priority","line":428},{"name":"RESOURCE_CPU","line":433},{"name":"RESOURCE_MEMORY","line":434},{"name":"RESOURCE_BANDWIDTH","line":435},{"name":"RESOURCE_STORAGE","line":436},{"name":"allocate_resources","line":439},{"name":"create_integration_report","line":476},{"name":"generate_integration_stats","line":485},{"name":"validate_integration_health","line":518}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","integration","framework","max","modules","messages","events","create","registration","get","registered","priority","status","network","testing","documentation","visualization","simulation","profiling","idle","active","busy","offline","dest","msg","data","control","event","send","receive","loaded","unloaded","completed","step","subscribe","publish","state","sync","checksum","synchronize","states","propagation","severity","timestamp","info","warning","critical","propagate","load","unload","dependency","depends","required","dependencies","resource","request","amount","cpu","memory","bandwidth","storage","allocate","resources","report","generate","stats","validate","health"]},{"id":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf8.t27","health":"warn","module":"GF8"}],"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 — 8-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 3 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF8","line":34},{"name":"encode","line":43},{"name":"sign","line":48},{"name":"abs_val","line":49},{"name":"exp_unbiased","line":52},{"name":"exp_biased","line":53},{"name":"exp_clamped","line":56},{"name":"mant","line":59},{"name":"decode","line":67},{"name":"sign","line":68},{"name":"exp_biased","line":69},{"name":"mant","line":70},{"name":"exp_unbiased","line":78},{"name":"mant_normalized","line":85},{"name":"value","line":91},{"name":"max_value","line":103},{"name":"mant_max","line":105},{"name":"exp_max","line":106},{"name":"min_positive","line":110},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp","line":172},{"name":"pow","line":178}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf8","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow"]},{"id":"45bb6f748cc01f814b14d1c65588766a2515daf79df2382b785a0c8c2ba2a211","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/fifo_tb.t27","health":"ok","module":"FIFO_Testbench"}],"description":"t27/specs/fpga/testbench/fifo_tb.t27 FIFO Testbench Specification Tests sync/async FIFO operations, flags, overflow/underflow","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"DATA_WIDTH","line":12},{"name":"FIFO_DEPTH","line":13},{"name":"tick","line":30},{"name":"reset","line":35},{"name":"write_word","line":43},{"name":"read_word","line":54},{"name":"fill_fifo","line":64},{"name":"drain_fifo","line":73}],"imports":[{"name":"fpga::fifo::Fifo","line":8}],"terms":["fpga","testbench","fifo","clk","period","sim","timeout","data","width","depth","tick","reset","write","word","read","fill","drain"]},{"id":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","sources":[{"repo":"ghashtag/t27","path":"specs/queen/brain_summaries.t27","health":"warn","module":"BrainSummaries"}],"description":"t27/specs/queen/brain_summaries.t27 Queen Brain Summaries Pipeline Specification Ring 061 - Episode summarization for Queen brain Defines how experience episodes are aggregated into summaries","symbols":[{"name":"MAX_EPISODES_PER_SUMMARY","line":15},{"name":"SUMMARY_RETENTION_DAYS","line":16},{"name":"MIN_CONFIDENCE_THRESHOLD","line":17},{"name":"SUMMARY_TYPE_DAILY","line":20},{"name":"SUMMARY_TYPE_WEEKLY","line":21},{"name":"SUMMARY_TYPE_RING","line":22},{"name":"SUMMARY_TYPE_PHASE","line":23},{"name":"BrainSummary","line":30},{"name":"SummaryIndex","line":66},{"name":"aggregate_episodes","line":81},{"name":"episode","line":99},{"name":"cycle_time","line":112},{"name":"determine_quality","line":145},{"name":"success_rate","line":146},{"name":"save_summary","line":170},{"name":"load_summary","line":178},{"name":"generate_daily_summary","line":190},{"name":"generate_ring_summary","line":206},{"name":"generate_phase_summary","line":222},{"name":"summary","line":321},{"name":"reported_total","line":322},{"name":"summary","line":333},{"name":"summary","line":346},{"name":"summary","line":356}],"imports":[{"name":"queen::lotus","line":9}],"terms":["queen","brain","summaries","max","episodes","per","summary","retention","days","min","confidence","threshold","daily","weekly","ring","phase","index","aggregate","episode","cycle","time","determine","quality","success","rate","save","load","generate","reported","total"]},{"id":"45eceaaa65e7ddb52ada5b5ba657ad0c6139d715f236ce25c4fbdd7f84e6780c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ledger.t27","health":"ok","module":"TriLedger"}],"description":"TRI-NET DePIN ledger: persistent, append-only $TRI account state across rounds. Per-round settlement (tri_settle) + its Merkle round-root (tri_merkle) are stateless -- there is no lasting record of accumulated balances. This adds the ledger: a node's balance accumulates (saturating) across rounds, and the whole history is committed by an evolving STATE ROOT that chains each round's root into the previous state, exactly like a blockchain's state-root chain. Given the genesis and the sequence of round","symbols":[{"name":"LEDGER_GENESIS","line":13},{"name":"L_C","line":14},{"name":"rotl","line":16},{"name":"mix32","line":20},{"name":"balance_add","line":29},{"name":"state_step","line":41},{"name":"verify_chain3","line":46}],"imports":[{"name":"base::types","line":11}],"terms":["net","ledger","genesis","rotl","mix32","balance","state","step","verify","chain3"]},{"id":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sdk.t27","health":"ok","module":"SDK"}],"description":"specs/vsa/sdk.t27 Trinity SDK - High-level API for VSA operations","symbols":[{"name":"Hypervector","line":30},{"name":"hypervector_zero","line":44},{"name":"empty","line":45},{"name":"hypervector_random","line":57},{"name":"hypervector_random_labeled","line":69},{"name":"hypervector_from_raw","line":81},{"name":"hypervector_get_dimension","line":93},{"name":"hypervector_get","line":102},{"name":"hypervector_set","line":111},{"name":"hypervector_bind","line":127},{"name":"hypervector_unbind","line":141},{"name":"hypervector_bundle","line":155},{"name":"hypervector_bundle3","line":169},{"name":"hypervector_permute","line":181},{"name":"hypervector_inverse_permute","line":193},{"name":"hypervector_similarity","line":212},{"name":"hypervector_hamming_distance","line":223},{"name":"hypervector_hamming_similarity","line":235},{"name":"dist","line":236},{"name":"dim","line":237},{"name":"similarity","line":238},{"name":"hypervector_dot_product","line":250},{"name":"hypervector_negate","line":263},{"name":"hypervector_count_non_zero","line":275},{"name":"hypervector_density","line":287},{"name":"non_zero","line":288},{"name":"dim","line":289},{"name":"hypervector_clone","line":298},{"name":"bound","line":337},{"name":"a","line":476},{"name":"bound","line":477},{"name":"unbound","line":478},{"name":"a","line":483},{"name":"b","line":484},{"name":"ab","line":485},{"name":"ba","line":486},{"name":"a","line":491},{"name":"b","line":492},{"name":"c","line":493},{"name":"abc","line":494},{"name":"bca","line":495},{"name":"a","line":500},{"name":"a","line":506},{"name":"a","line":512},{"name":"b","line":513},{"name":"a","line":519},{"name":"b","line":520},{"name":"a","line":526},{"name":"b","line":527},{"name":"c","line":528},{"name":"ab","line":529},{"name":"bc","line":530},{"name":"abc","line":531},{"name":"lhs","line":532},{"name":"rhs","line":533},{"name":"a","line":538},{"name":"t1","line":541},{"name":"t2","line":542},{"name":"a","line":548},{"name":"result","line":554},{"name":"a","line":559}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11},{"name":"vsa::vsa_core","line":12},{"name":"ternary::hybrid_arithmetic","line":13}],"terms":["vsa","sdk","hypervector","zero","empty","random","labeled","raw","get","dimension","set","bind","unbind","bundle","bundle3","permute","inverse","similarity","hamming","distance","dist","dim","dot","product","negate","count","non","density","clone","bound","unbound","abc","bca","lhs","rhs"]},{"id":"465c3b449e4a75c27782a31f490768e1296cc3e44c47e2106ed83f5aacd5e2af","sources":[{"repo":"ghashtag/t27","path":"specs/nn/sacred_attention.t27","health":"warn","module":null}],"description":"specs/nn/sacred_attention.t27 Sacred Attention: Multi-head attention with φ-based scaling scale = head_dim^(-PHI^3) instead of standard 1/sqrt(head_dim)","symbols":[],"imports":[],"terms":["sacred","attention"]},{"id":"467a6408508e8ea78e10bb34aec16e497b66a70c41f54c0fc5a3db9ae50c0a06","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/json.t27","health":"ok","module":"TriJson"}],"description":"t27/specs/","symbols":[{"name":"JsonValue","line":13},{"name":"JsonType","line":18},{"name":"JsonArray","line":22},{"name":"JsonObject","line":26},{"name":"parse","line":34},{"name":"stringify","line":39},{"name":"get","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","json","array","object","parse","stringify","get"]},{"id":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/trust_manager.t27","health":"warn","module":"trust_manager"}],"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","symbols":[{"name":"MAX_NODES","line":7},{"name":"TRUST_THRESHOLD","line":8},{"name":"TRUST_HIGH","line":9},{"name":"TRUST_LOW","line":10},{"name":"MAX_TRUST_SCORE","line":11},{"name":"create_trust_score","line":14},{"name":"get_trust_node_id","line":21},{"name":"get_trust_score_value","line":25},{"name":"get_positive_interactions","line":29},{"name":"get_negative_interactions","line":33},{"name":"create_trust_relationship","line":40},{"name":"get_trust_source","line":47},{"name":"get_trust_destination","line":51},{"name":"get_trust_level","line":55},{"name":"get_trust_verified","line":59},{"name":"create_trust_array","line":66},{"name":"get_trust_score","line":70},{"name":"calculate_trust_score","line":78},{"name":"update_trust_score","line":90},{"name":"is_node_trusted","line":103},{"name":"is_node_highly_trusted","line":108},{"name":"is_node_low_trusted","line":113},{"name":"find_most_trusted","line":118},{"name":"should_route_via_node","line":166},{"name":"penalize_node","line":174},{"name":"reward_node","line":185}],"imports":[{"name":"base::types","line":5}],"terms":["net","trust","manager","max","nodes","threshold","high","low","score","create","get","node","positive","interactions","negative","relationship","destination","level","verified","array","calculate","trusted","highly","find","most","route","via","penalize","reward"]},{"id":"473c5317d5dd386d0310b9f0762f2f2ac5febdb8fc69295ac4ce7d4597ed905e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/sha256.t27","health":"ok","module":"TriSha256"}],"description":"t27/specs/","symbols":[{"name":"SHA256","line":13},{"name":"init","line":24},{"name":"update","line":29},{"name":"final","line":34},{"name":"hash","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","sha256","init","final","hash"]},{"id":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/conformance.t27","health":"warn","module":"TrinityMemoryConformanceLabSpec"}],"description":"specs/memory/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable","symbols":[{"name":"TMS_LAB_SCHEMA_VERSION","line":18},{"name":"TMS_LAB_ROOT_MEMBERS","line":19},{"name":"TMS_LAB_MIN_VECTORS","line":20},{"name":"TMS_LAB_MAX_VECTORS","line":21},{"name":"TMS_LAB_MIN_WEIGHTS","line":22},{"name":"TMS_LAB_MAX_WEIGHTS","line":23},{"name":"TMS_LAB_FIELD_NAME","line":24},{"name":"TMS_LAB_FIELD_WEIGHTS","line":25},{"name":"TMS_LAB_FIELD_ACTIVATIONS","line":26},{"name":"TMS_LAB_FIELD_DOT","line":27},{"name":"TMS_LAB_FIELD_DENSE5_HEX","line":28},{"name":"TMS_LAB_FIELD_BASELINE2_HEX","line":29},{"name":"TMS_LAB_FIELD_DENSE17_HEX","line":30},{"name":"TMS_LAB_FIELD_DENSE22_HEX","line":31},{"name":"TMS_LAB_REQUIRED_FIELDS","line":32},{"name":"TMS_LAB_ALLOWED_FIELDS","line":33},{"name":"TMS_LAB_MAX_FIXTURE_BYTES","line":34},{"name":"TMS_LAB_CODEC_MODES","line":38},{"name":"TMS_LAB_RTL_CODECS","line":39},{"name":"TMS_LAB_RANDOM_CASES","line":40},{"name":"TMS_LAB_SPARSE_TRANSFERS","line":41},{"name":"TMS_LAB_SPARSE_PATTERN_TRITS","line":42},{"name":"TMS_LAB_CORRUPTION_FLIPS","line":43},{"name":"TMS_LAB_CORRUPTION_TRITS","line":44},{"name":"TMS_LAB_CORRUPTION_RPC_ERROR","line":45},{"name":"TMS_LAB_SEED_DEFAULT","line":46},{"name":"TMS_LAB_RTL_SEED_MAX","line":47},{"name":"TMS_LAB_SERVER_MAX_REQUEST_BYTES","line":48},{"name":"TMS_LAB_SERVER_MAX_OBJECT_BYTES","line":49},{"name":"TMS_LAB_SERVER_MAX_STORAGE_BYTES","line":50},{"name":"TMS_LAB_SERVER_MAX_OBJECTS","line":51},{"name":"TMS_LAB_SERVER_MAX_TRITS","line":52},{"name":"TMS_LAB_SERVER_TIMEOUT_SECONDS","line":53},{"name":"TMS_LAB_ERR_CHECK","line":54},{"name":"TMS_LAB_ERR_RESOURCE","line":55},{"name":"TMS_LAB_ERR_RTL","line":56},{"name":"TMS_LAB_REPORT_VERSION","line":60},{"name":"TMS_LAB_REPORT_SECTIONS","line":61},{"name":"TMS_LAB_PHYSICAL_DEVICE_TESTED","line":62},{"name":"LabSection","line":64},{"name":"LabEvidence","line":73},{"name":"TMS_LAB_DEVICE_CAPTURE_SCHEMA_VERSION","line":86},{"name":"TMS_LAB_DEVICE_CAPTURE_MUST_MATCH_SOURCE_HASH","line":87},{"name":"tms_lab_device_capture_current","line":88},{"name":"LabCorruption","line":93},{"name":"LabInterruption","line":105},{"name":"LabReset","line":111},{"name":"tms_lab_fields_valid","line":118},{"name":"tms_lab_vector_count_valid","line":123},{"name":"tms_lab_weight_count_valid","line":127},{"name":"tms_lab_weight_valid","line":131},{"name":"tms_lab_activation_valid","line":135},{"name":"tms_lab_dot","line":139},{"name":"tms_lab_codec_order","line":147},{"name":"tms_lab_rtl_codec","line":155},{"name":"tms_lab_random_case_count","line":159},{"name":"tms_lab_positive_checks","line":170},{"name":"tms_lab_rtl_checks","line":174},{"name":"tms_lab_corruption_position","line":182},{"name":"tms_lab_seed_valid","line":192},{"name":"tms_lab_fixture_size_valid","line":197},{"name":"tms_lab_field_is_timing","line":202}],"imports":[],"terms":["dmitrii","memory","conformance","lab","tms","schema","root","members","min","vectors","max","weights","field","activations","dot","dense5","hex","baseline2","dense17","dense22","required","fields","allowed","fixture","bytes","codec","modes","rtl","codecs","random","cases","sparse","transfers","pattern","trits","corruption","flips","rpc","seed","default","request","object","storage","objects","timeout","seconds","err","resource","report","sections","physical","device","tested","section","evidence","capture","match","hash","interruption","reset","valid","vector","count","weight","activation","order","case","positive","checks","position","size","timing"]},{"id":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_tick.t27","health":"warn","module":"TrinityFpgaTickT27"}],"description":"","symbols":[{"name":"on_clock","line":13}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","tick","clock"]},{"id":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/e2e_test.t27","health":"warn","module":"PipelineE2E"}],"description":"t27/specs/pipeline/e2e_test.t27 Pipeline E2E Test Specification Ring 028 — tri pipeline end-to-end testing 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"MAX_PIPELINE_STAGES","line":10},{"name":"STAGE_INIT","line":11},{"name":"STAGE_PARSE","line":12},{"name":"STAGE_SEAL","line":13},{"name":"STAGE_GEN","line":14},{"name":"STAGE_TEST","line":15},{"name":"STAGE_VERDICT","line":16},{"name":"STAGE_SAVE","line":17},{"name":"STAGE_COMMIT","line":18},{"name":"STAGE_DONE","line":19},{"name":"STAGE_FAIL","line":20},{"name":"pipeline_run","line":23},{"name":"pipeline_inject_failure","line":45},{"name":"stage_name","line":72},{"name":"pipeline_progress","line":77}],"imports":[{"name":"base::types","line":8}],"terms":["pipeline","e2e","max","stages","stage","init","parse","seal","gen","verdict","save","commit","done","fail","inject","failure","progress"]},{"id":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gi1_analysis.t27","health":"ok","module":"GI1Analysis"}],"description":"t27/specs/physics/gi1_analysis.t27 GI1 Pre-Registration Analysis: γ_φ vs γ₁ comparison Three hypotheses tested against empirical data","symbols":[{"name":"STRUCTURAL_COMPLEXITY_PHI","line":17},{"name":"STRUCTURAL_COMPLEXITY_1","line":18},{"name":"GAMMA_PHI","line":24},{"name":"GAMMA_LQG_STANDARD","line":27},{"name":"DELTA_GAMMA_1_PHI_PERCENT","line":30},{"name":"LITEBIRD_NT_DIV_R_MEASURED","line":35},{"name":"verify_structural_simplicity","line":41},{"name":"verify_numerical_proximity","line":46},{"name":"verify_gamma_uniqueness","line":51},{"name":"DL_LOWER_BOUND","line":54},{"name":"DL_UPPER_BOUND","line":55},{"name":"verify_gamma_in_dl_bounds","line":59},{"name":"compute_litebird_prediction","line":64},{"name":"GI1Report","line":74},{"name":"verify_all_hypotheses","line":94},{"name":"ha_passed","line":95},{"name":"hb_passed","line":96},{"name":"hc_passed","line":97},{"name":"hc_dl_passed","line":98},{"name":"ntr_phi","line":101},{"name":"ntr_1","line":102},{"name":"diff_phi","line":105},{"name":"diff_1","line":106}],"imports":[{"name":"math::constants","line":8}],"terms":["physics","gi1","analysis","gi1analysis","structural","complexity","phi","gamma","lqg","standard","delta","percent","litebird","div","measured","verify","simplicity","numerical","proximity","uniqueness","lower","bound","upper","bounds","compute","prediction","gi1report","hypotheses","passed","ntr","diff"]},{"id":"48c6a87fe3c885ead9caad7013425c2f4e87ba38dd6adbab78cc6b5c5d6864d8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adagrad.t27","health":"ok","module":"Adagrad"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LR","line":13},{"name":"DEFAULT_EPSILON","line":14},{"name":"DEFAULT_WEIGHT_DECAY","line":15},{"name":"AdagradConfig","line":21},{"name":"AdagradState","line":27},{"name":"init_state","line":36},{"name":"update","line":41}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","adagrad","default","epsilon","weight","decay","config","state","init"]},{"id":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/diagnostics.t27","health":"ok","module":"Diagnostics"}],"description":"","symbols":[{"name":"ErrorCode","line":3},{"name":"Severity","line":24},{"name":"Diagnostic","line":30},{"name":"diagnostic_new","line":39},{"name":"is_error","line":50},{"name":"is_warning","line":54},{"name":"is_parse_error","line":58},{"name":"is_type_error","line":66},{"name":"is_link_error","line":74},{"name":"error_code_range","line":81},{"name":"format_diagnostic","line":88}],"imports":[],"terms":["compiler","diagnostics","severity","diagnostic","warning","parse","link","range","format"]},{"id":"4991d83ed59365348efc506f4907cceb29a04742b9ad7f610b6b754c184d55b4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/boards/ax7203_full.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"lvds","line":13}],"imports":[],"terms":["fpga","boards","ax7203","full","lvds"]},{"id":"49fd9c0e4793f2c69ac2ae1c4ff80d1cd858a1404398a6b36a28e33ef8f35389","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/kl_divergence.t27","health":"ok","module":"KlDivergence"}],"description":"t27/specs/","symbols":[{"name":"forward","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","divergence","forward"]},{"id":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","sources":[{"repo":"ghashtag/t27","path":"specs/github/auth.t27","health":"ok","module":"github"}],"description":"specs/github/auth.t27 GitHub Authentication for t27 Ring-072 - GitHub SSOT Integration","symbols":[{"name":"AUTH_STATE_UNAUTHENTICATED","line":8},{"name":"AUTH_STATE_AUTHENTICATED","line":9},{"name":"GITHUB_CLI_PATH","line":10},{"name":"AuthResult","line":12},{"name":"auth_status","line":17},{"name":"status","line":24}],"imports":[],"terms":["auth","state","unauthenticated","authenticated","cli","path","status"]},{"id":"4a45d372cba73c1dabe74e1bf33ff88abd82d4b528312bd2cd1ec5aa12561196","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/kd_tree.t27","health":"ok","module":"TriKdTree"}],"description":"t27/specs/","symbols":[{"name":"KDNode","line":13},{"name":"KDTree","line":20},{"name":"init","line":31},{"name":"build","line":36},{"name":"nearest","line":41},{"name":"range","line":46},{"name":"deinit","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","tree","kdnode","kdtree","init","build","nearest","range","deinit"]},{"id":"4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/spi.t27","health":"ok","module":"SPI_Master"}],"description":"t27/specs/fpga/spi.t27 SPI Master Specification for FPGA Mode 0: CPOL=0, CPHA=0 (SCK idle low, sample on rising edge)","symbols":[{"name":"CLK_FREQ","line":16},{"name":"SPI_CPOL","line":21},{"name":"SPI_CPHA","line":22},{"name":"MAX_DATA_WIDTH","line":25},{"name":"CS_ASSERT_DELAY","line":26},{"name":"CS_DEASSERT_DELAY","line":27},{"name":"PRESCALER_2","line":30},{"name":"PRESCALER_4","line":31},{"name":"PRESCALER_8","line":32},{"name":"PRESCALER_16","line":33},{"name":"PRESCALER_32","line":34},{"name":"PRESCALER_64","line":35},{"name":"PRESCALER_128","line":36},{"name":"PRESCALER_256","line":37},{"name":"SPI_IDLE","line":44},{"name":"SPI_CS_ASSERT","line":45},{"name":"SPI_TRANSFER","line":46},{"name":"SPI_CS_DEASSERT","line":47},{"name":"TX_BIT","line":50},{"name":"RX_BIT","line":51},{"name":"WAIT_EDGE","line":52},{"name":"SPI_Master_Unit","line":59},{"name":"spi_set_prescaler","line":103},{"name":"spi_get_prescaler_div","line":113},{"name":"spi_get_sck_freq","line":129},{"name":"spi_set_data_width","line":135},{"name":"spi_is_busy","line":145},{"name":"spi_transfer","line":151},{"name":"spi_read_rx","line":166},{"name":"spi_get_cs","line":172},{"name":"spi_get_sck","line":178},{"name":"spi_get_mosi","line":190},{"name":"spi_tick","line":199},{"name":"spi_transfer_bit","line":230},{"name":"prescaler_div","line":231},{"name":"miso_bit","line":245}],"imports":[{"name":"base::types","line":9}],"terms":["fpga","spi","master","clk","freq","cpol","cpha","max","data","width","assert","delay","deassert","prescaler","idle","transfer","bit","wait","edge","unit","set","get","div","sck","busy","read","mosi","tick","miso"]},{"id":"4a85553e544bba9b8b881d36db90ca3dc88d4ef17dfa856b31c5fac5569c5737","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/tanh_activation.t27","health":"ok","module":"Tanh"}],"description":"t27/specs/","symbols":[{"name":"TanhConfig","line":13},{"name":"forward","line":22},{"name":"forward_batch","line":27},{"name":"derivative","line":32},{"name":"derivative_from_output","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","tanh","config","forward","batch","derivative"]},{"id":"4b04e69c42d9f9d99b2292a548567025a39a3ce8fb5ec76e78059a8c5464eb60","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_critic.t27","health":"ok","module":"SacCritic"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_TAU","line":13},{"name":"DEFAULT_GAMMA","line":14},{"name":"DEFAULT_INIT_WEIGHT","line":15},{"name":"SACCriticConfig","line":21},{"name":"TwinQOutput","line":28},{"name":"TargetQUpdate","line":33},{"name":"forward","line":43},{"name":"compute_target","line":48},{"name":"q_loss","line":53},{"name":"soft_update_target","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sac","critic","default","tau","gamma","init","weight","saccritic","config","twin","qoutput","target","qupdate","forward","compute","loss","soft"]},{"id":"4b34351e1bafe5e6cc26db176be01be8db82425a9b4200d04ff2beaeed78df9b","sources":[{"repo":"ghashtag/t27","path":"specs/api/c_api_contract.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"ver","line":124},{"name":"v","line":129},{"name":"v","line":138},{"name":"data","line":150},{"name":"v","line":151},{"name":"copied","line":155},{"name":"v","line":161},{"name":"cloned","line":164},{"name":"sim","line":167},{"name":"a","line":172},{"name":"bound","line":175},{"name":"a_trit","line":180},{"name":"r_trit","line":181},{"name":"a","line":191},{"name":"b","line":194},{"name":"bound","line":197},{"name":"recovered","line":200},{"name":"sim","line":204},{"name":"a","line":209},{"name":"b","line":212},{"name":"bundled","line":215},{"name":"sim_a","line":219},{"name":"sim_b","line":220},{"name":"v","line":226},{"name":"permuted","line":229},{"name":"sim","line":233}],"imports":[],"terms":["api","contract","ver","data","copied","cloned","sim","bound","trit","recovered","bundled","permuted"]},{"id":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/lexer.t27","health":"ok","module":"Lexing"}],"description":"","symbols":[{"name":"TokenKind","line":5},{"name":"Token","line":30},{"name":"Lexer","line":38},{"name":"lexer_init","line":46},{"name":"peek","line":56},{"name":"peek_offset","line":63},{"name":"new_pos","line":64},{"name":"advance","line":71},{"name":"ch","line":73},{"name":"is_alpha","line":84},{"name":"is_digit","line":88},{"name":"is_hex_digit","line":92},{"name":"is_alnum","line":96},{"name":"is_whitespace","line":100},{"name":"skip_whitespace_and_comments","line":104},{"name":"lexeme_equals","line":140},{"name":"check_keyword","line":151},{"name":"make_token_simple","line":209},{"name":"make_token_from_source","line":225},{"name":"scan_identifier","line":241},{"name":"start_line","line":242},{"name":"start_col","line":243},{"name":"start_pos","line":244},{"name":"ch","line":248},{"name":"scan_number","line":261},{"name":"start_line","line":262},{"name":"start_col","line":263},{"name":"start_pos","line":264},{"name":"ch","line":269},{"name":"next_ch","line":276},{"name":"scan_string","line":292},{"name":"start_line","line":293},{"name":"start_col","line":294},{"name":"escaped","line":310},{"name":"scan_char","line":341},{"name":"start_line","line":342},{"name":"start_col","line":343},{"name":"next_token","line":379},{"name":"start_line","line":382},{"name":"start_col","line":383},{"name":"start_pos","line":384},{"name":"ch","line":390},{"name":"next","line":398},{"name":"tok","line":478},{"name":"tok","line":484},{"name":"tok","line":489},{"name":"tok","line":494}],"imports":[{"name":"base::types","line":3}],"terms":["compiler","lexer","lexing","token","kind","init","peek","offset","pos","advance","alpha","digit","hex","alnum","whitespace","skip","lexeme","equals","keyword","make","simple","scan","identifier","start","col","escaped","char","tok"]},{"id":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/codegen.t27","health":"warn","module":"verilog_codegen"}],"description":"codegen.t27 0 Code Generator for Verilog Generates synthesizable Verilog from t27 AST","symbols":[{"name":"VerilogCodegenOptions","line":8},{"name":"VerilogCodegen","line":16},{"name":"new","line":26},{"name":"pc_width","line":28},{"name":"addr_width","line":29},{"name":"data_width","line":30},{"name":"generate","line":44},{"name":"emit_header","line":93},{"name":"emit_parameters","line":110},{"name":"emit_ports","line":127},{"name":"emit_signals","line":157},{"name":"emit_instruction_rom","line":218},{"name":"encoded","line":230},{"name":"hex","line":236},{"name":"encode_instruction","line":249},{"name":"opcode_to_bits","line":270},{"name":"operand_to_bits","line":287},{"name":"disassemble","line":310},{"name":"opcode_to_mnemonic","line":321},{"name":"operand_to_string","line":338},{"name":"emit_data_memory","line":349},{"name":"emit_register_file","line":360},{"name":"emit_decode","line":368},{"name":"emit_alu","line":380},{"name":"emit_control","line":391},{"name":"emit_fpga_top","line":403},{"name":"emit_verilog_assertions","line":491},{"name":"emit_verilog_assertion","line":505},{"name":"verilog_name","line":506},{"name":"emit_footer","line":547},{"name":"emit_testbench","line":553},{"name":"emit_verilog_test_task","line":660},{"name":"verilog_name","line":661},{"name":"emit_test_calls","line":728},{"name":"verilog_name","line":732},{"name":"mangle_verilog_name","line":742},{"name":"emit","line":757},{"name":"emit_line","line":761},{"name":"emit_int","line":772},{"name":"indent","line":776},{"name":"dedent","line":780},{"name":"StringBuilder","line":788},{"name":"new","line":793},{"name":"append","line":801},{"name":"to_string","line":809},{"name":"Program","line":815},{"name":"CodeSection","line":822},{"name":"TestSection","line":827},{"name":"InvariantSection","line":831},{"name":"Instruction","line":835},{"name":"Opcode","line":840},{"name":"Operand","line":853},{"name":"TestCase","line":860},{"name":"InvariantDecl","line":867},{"name":"CodegenError","line":873},{"name":"calculate_width","line":879},{"name":"format_hex","line":894},{"name":"hex_chars","line":895},{"name":"shift","line":900},{"name":"digit","line":901},{"name":"int_to_str","line":909},{"name":"output","line":962},{"name":"output","line":993}],"imports":[],"terms":["compiler","codegen","verilog","options","width","addr","data","generate","emit","header","parameters","ports","signals","rom","encoded","hex","encode","opcode","bits","operand","disassemble","mnemonic","memory","register","decode","alu","control","fpga","top","assertions","assertion","footer","testbench","calls","mangle","int","indent","dedent","builder","append","program","section","invariant","case","decl","calculate","format","chars","shift","digit","str"]},{"id":"4c42cd77cd3247972f0787ec81f7578f4b770de4d6977ddcbcc8e543101bfcf4","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async_stream.t27","health":"ok","module":"TriAsyncStream"}],"description":"t27/specs/","symbols":[{"name":"Stream","line":13},{"name":"StreamState","line":18},{"name":"from","line":27},{"name":"map","line":32},{"name":"filter","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","async","stream","state","map","filter"]},{"id":"4c452893fa3e0f4141cdf198415fdb6fb5b611218193e65398ecc2386e69d615","sources":[{"repo":"ghashtag/t27","path":"specs/brain/brain.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["brain"]},{"id":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/schema.t27","health":"ok","module":"lsp-schema"}],"description":"lsp/schema.t27 — LSP Base Types Position, Range, Diagnostic definitions for Language Server Protocol","symbols":[{"name":"ZERO_POSITION","line":19},{"name":"MAX_LINE","line":22},{"name":"MAX_CHAR","line":25},{"name":"LSP_VERSION","line":28},{"name":"Position","line":36},{"name":"Range","line":43},{"name":"Location","line":50},{"name":"DiagnosticSeverity","line":57},{"name":"DiagnosticTag","line":65},{"name":"CodeAction","line":71},{"name":"CodeActionKind","line":79},{"name":"WorkspaceEdit","line":87},{"name":"TextDocumentEdit","line":92},{"name":"Diagnostic","line":98},{"name":"TextDocumentSyncKind","line":108},{"name":"TextDocumentItem","line":114},{"name":"CompletionItem","line":122},{"name":"CompletionItemKind","line":133},{"name":"SignatureInformation","line":162},{"name":"ParameterInformation","line":169},{"name":"Hover","line":175},{"name":"SymbolKind","line":181},{"name":"DocumentSymbol","line":211},{"name":"InlayHintKind","line":221},{"name":"InlayHint","line":227},{"name":"CodeLens","line":236},{"name":"Command","line":242},{"name":"position_zero","line":253},{"name":"range_from_positions","line":258},{"name":"range_create","line":263},{"name":"start","line":264},{"name":"end","line":265},{"name":"location_create","line":270},{"name":"range","line":271},{"name":"diagnostic_create","line":276},{"name":"completion_item_create","line":288},{"name":"inlay_hint_create","line":301},{"name":"document_symbol_create","line":312},{"name":"position_is_zero","line":324},{"name":"range_is_empty","line":329},{"name":"range_length","line":334},{"name":"position_compare","line":344},{"name":"range_contains_position","line":361},{"name":"after_start","line":362},{"name":"before_end","line":363},{"name":"severity_to_string","line":368},{"name":"pos","line":382},{"name":"start","line":388},{"name":"end","line":389},{"name":"r","line":390},{"name":"r","line":396},{"name":"r","line":404},{"name":"r","line":409},{"name":"start","line":414},{"name":"end","line":415},{"name":"r","line":416},{"name":"inside","line":417},{"name":"outside","line":418},{"name":"a","line":424},{"name":"b","line":425},{"name":"a","line":430},{"name":"b","line":431},{"name":"a","line":436},{"name":"b","line":437},{"name":"r","line":450},{"name":"diag","line":451},{"name":"item","line":456},{"name":"pos","line":462},{"name":"hint","line":463},{"name":"r","line":469},{"name":"sym","line":470},{"name":"r","line":544},{"name":"pos","line":545},{"name":"a","line":557},{"name":"b","line":558},{"name":"r","line":570},{"name":"r","line":582}],"imports":[],"terms":["lsp","schema","zero","position","max","char","range","location","diagnostic","severity","tag","action","kind","workspace","edit","text","document","sync","item","completion","signature","information","parameter","hover","inlay","hint","lens","positions","create","start","end","empty","length","compare","contains","pos","inside","outside","diag","sym"]},{"id":"4c58b9b71243fe4b1158a8e447bb9102bf2dc8392c4972321a39df491ed3653e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/rtree.t27","health":"ok","module":"TriRtree"}],"description":"t27/specs/","symbols":[{"name":"Rect","line":13},{"name":"RTreeNode","line":20},{"name":"RTree","line":26},{"name":"init","line":36},{"name":"insert","line":41},{"name":"query","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","rtree","rect","node","init","insert","query"]},{"id":"4d62843989a3e55bc2b52630e79c32f09d444359ef2429da1fc529663910c953","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_node_sim.t27","health":"ok","module":"MeshNodeSim"}],"description":"Mesh node simulation - 2-4 node network scenarios Tests point-to-point, triangle, line topologies","symbols":[{"name":"NODE_1","line":8},{"name":"NODE_2","line":9},{"name":"NODE_3","line":10},{"name":"NODE_4","line":11},{"name":"create_link_quality","line":14},{"name":"link_from","line":18},{"name":"link_to","line":22},{"name":"link_quality","line":26},{"name":"is_link_good","line":31},{"name":"create_2node_mesh","line":36},{"name":"create_3node_mesh","line":42},{"name":"create_4node_line","line":49},{"name":"calculate_hops","line":56}],"imports":[{"name":"base::types","line":5}],"terms":["net","mesh","node","sim","create","link","quality","good","2node","3node","4node","calculate","hops"]},{"id":"4dc4a3d792be4571b3ebb8e85dfcda02726d2908fc4552e05bea89c6f483ef8d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/softmax.t27","health":"ok","module":"Softmax"}],"description":"t27/specs/","symbols":[{"name":"ZERO","line":13},{"name":"MIN_TEMP","line":14},{"name":"SoftmaxConfig","line":20},{"name":"forward","line":31},{"name":"backward","line":36}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","softmax","zero","min","temp","config","forward","backward"]},{"id":"4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","sources":[{"repo":"ghashtag/t27","path":"specs/github/prs.t27","health":"ok","module":"github"}],"description":"specs/github/prs.t27","symbols":[{"name":"PR_STATE_OPEN","line":4},{"name":"PullRequest","line":6},{"name":"pr_list","line":13},{"name":"prs","line":19}],"imports":[],"terms":["prs","state","open","pull","request","list"]},{"id":"4ec184e2b90d849d42a837ef1be0c6f19e55e21f94793b6dd288a84dd0a89877","sources":[{"repo":"ghashtag/t27","path":"specs/file/operations.t27","health":"warn","module":"FileOperations"}],"description":"specs/file/operations.t27 File Operations","symbols":[{"name":"read","line":14},{"name":"read_range","line":19},{"name":"read_binary","line":24},{"name":"exists","line":29},{"name":"stat","line":34},{"name":"write","line":43},{"name":"write_binary","line":48},{"name":"append","line":53},{"name":"edit","line":58},{"name":"edit_all","line":63},{"name":"insert","line":68},{"name":"delete_lines","line":73},{"name":"list","line":82},{"name":"list_recursive","line":87},{"name":"create_dir","line":92},{"name":"delete_dir","line":97},{"name":"move_path","line":102},{"name":"copy","line":107},{"name":"delete","line":112},{"name":"is_ignored","line":121},{"name":"load_ignore_rules","line":126},{"name":"add_ignore_pattern","line":131},{"name":"normalize","line":140},{"name":"join","line":145},{"name":"dirname","line":150},{"name":"basename","line":155},{"name":"extname","line":160},{"name":"relative","line":165},{"name":"absolute","line":170},{"name":"resolve","line":175},{"name":"detect_type","line":184},{"name":"count_lines","line":189},{"name":"truncate","line":194}],"imports":[{"name":"base::types","line":6},{"name":"file::schema","line":7}],"terms":["operations","read","range","binary","exists","stat","write","append","edit","insert","delete","list","recursive","create","dir","move","path","copy","ignored","load","ignore","rules","pattern","normalize","join","dirname","basename","extname","relative","absolute","resolve","detect","count","truncate"]},{"id":"4eca929d7822c55feff4cbd456c88688c352fbec4ecfc7e4755983b08ae660a5","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/spi_tb.t27","health":"ok","module":"SPI_Testbench"}],"description":"t27/specs/fpga/testbench/spi_tb.t27 SPI Master Testbench Specification Tests SPI transfer, clock generation, chip select, and mode handling","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"SPI_CLK_DIV","line":12},{"name":"tick","line":31},{"name":"reset","line":36},{"name":"spi_transfer","line":44}],"imports":[{"name":"fpga::spi::SPI_Master","line":8}],"terms":["fpga","testbench","spi","clk","period","sim","timeout","div","tick","reset","transfer"]},{"id":"4f3c63813dd85889325a7567f829572f66ddd9201e19cd60ed6beaefe154beac","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/random.t27","health":"ok","module":"TriRandom"}],"description":"t27/specs/","symbols":[{"name":"Rng","line":13},{"name":"init","line":22},{"name":"next","line":27},{"name":"range","line":32},{"name":"range_inclusive","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","random","rng","init","range","inclusive"]},{"id":"4f5f9b43b9ec8b0be6593775af54ff6721d169e5e2c33898a1443dcbdfe4d85d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_optimistic.t27","health":"ok","module":"TriComputeOptimistic"}],"description":"TRI-NET optimistic settlement lifecycle. The node's settle path is PESSIMISTIC: it recomputes every receipt before paying. That is safe but does not scale -- an optimistic path credits the reward PROVISIONALLY (with the executor's bond locked), opens a challenge window, and only a successful challenge (tri_compute_challenge) REVERSES the credit and slashes the bond; unchallenged receipts FINALIZE when the window closes. This is the compute analogue of an optimistic rollup (Keryx OPoI /","symbols":[{"name":"PENDING","line":16},{"name":"FINALIZED","line":17},{"name":"REVERSED","line":18},{"name":"provisional_balance","line":22},{"name":"window_open","line":31},{"name":"GFT16_ET","line":42},{"name":"BASE_WINDOW","line":43},{"name":"WINDOW_PER_TRIT","line":44},{"name":"window_for_rung","line":46},{"name":"window_open_rung","line":56},{"name":"settle_state","line":62},{"name":"balance_after_settle","line":76},{"name":"can_finalize","line":90}],"imports":[{"name":"base::types","line":14}],"terms":["net","compute","optimistic","finalized","reversed","provisional","balance","window","open","gft16","base","per","trit","rung","settle","state","finalize"]},{"id":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/d2d_routing.t27","health":"ok","module":"CoronaD2DRouting"}],"description":"specs/corona/d2d_routing.t27 Die-to-Die routing: Corona forwards format queries to Gamma for formats Gamma natively implements (no duplication).","symbols":[{"name":"GAMMA_NATIVE_CLUSTERS","line":35},{"name":"ROUTING_LOCAL","line":63},{"name":"ROUTING_D2D_GAMMA","line":64},{"name":"ROUTING_NOT_IMPLEMENTED","line":65},{"name":"ROUTING_INVALID","line":66},{"name":"D2D_MESH_MODULE","line":77},{"name":"D2D_MESH_OWNER","line":78},{"name":"D2D_MESH_LICENSE","line":79},{"name":"STANDALONE_LEGAL","line":90},{"name":"FULL_CATALOG_REQUIRES_GAMMA","line":95}],"imports":[{"name":"base::types","line":11},{"name":"corona::corona_oracle","line":12},{"name":"corona::rom_layout","line":13}],"terms":["corona","d2d","routing","d2drouting","gamma","native","clusters","local","implemented","invalid","mesh","owner","license","standalone","legal","full","catalog","requires"]},{"id":"4fa7ccadd44d000694a91d69bfeaef6080397ad16540b682430c2f813303db56","sources":[{"repo":"ghashtag/t27","path":"specs/api/tri_net_api.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["api","net"]},{"id":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","sources":[{"repo":"ghashtag/t27","path":"specs/hslm/forward_pass.t27","health":"ok","module":"ForwardPass"}],"description":"Module: Minimal Forward Pass for LLM Inference","symbols":[{"name":"HEAD_COUNT","line":18},{"name":"FORWARD_VERSION","line":21},{"name":"ROLE_DIM","line":24},{"name":"CONTEXT_WINDOW","line":27},{"name":"HEBBIAN_CHARS","line":30},{"name":"HEBBIAN_OFFSET","line":33},{"name":"MAX_REFINE_PASSES","line":36},{"name":"RoleVector","line":45},{"name":"HyperVector","line":58},{"name":"ForwardOutput","line":69},{"name":"singleHeadAttention","line":82},{"name":"multiHeadAttention","line":88},{"name":"forwardPass","line":98},{"name":"forwardPassMultiHead","line":104},{"name":"resonatorTrainStep","line":115},{"name":"refineDirectRole","line":121},{"name":"summarizeContext","line":131},{"name":"computeDirectRole","line":141},{"name":"directDecode","line":147},{"name":"generateWithDirectRole","line":157},{"name":"buildHebbianCounts","line":167},{"name":"hebbianLookup","line":173}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10},{"name":"ternary::packed_trit","line":11}],"terms":["hslm","forward","pass","head","count","role","dim","window","hebbian","chars","offset","max","refine","passes","vector","hyper","single","attention","multi","resonator","train","step","direct","summarize","compute","decode","generate","build","counts","lookup"]},{"id":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/language.t27","health":"ok","module":"lsp-language"}],"description":"lsp/language.t27 — Language Server Feature Mappings Language ID mappings, file extensions, and feature associations","symbols":[{"name":"LANG_T27","line":19},{"name":"LANG_ZIG","line":22},{"name":"LANG_PYTHON","line":25},{"name":"LANG_JAVASCRIPT","line":28},{"name":"LANG_TYPESCRIPT","line":31},{"name":"LANG_MARKDOWN","line":34},{"name":"LANG_JSON","line":37},{"name":"LANG_YAML","line":40},{"name":"EXT_T27","line":43},{"name":"EXT_ZIG","line":46},{"name":"EXT_PYTHON","line":49},{"name":"EXT_JAVASCRIPT","line":52},{"name":"EXT_TYPESCRIPT","line":55},{"name":"EXT_MARKDOWN","line":58},{"name":"EXT_JSON","line":61},{"name":"EXT_YAML","line":64},{"name":"LanguageInfo","line":71},{"name":"LanguageConfiguration","line":80},{"name":"CommentConfiguration","line":88},{"name":"BracketPair","line":95},{"name":"Indentation","line":101},{"name":"LanguageFeature","line":107},{"name":"FileAssociation","line":125},{"name":"LanguageServerCapability","line":131},{"name":"SymbolInfo","line":137},{"name":"SymbolKind","line":144},{"name":"KeywordSet","line":161},{"name":"CompletionTemplate","line":167},{"name":"language_info_t27","line":178},{"name":"language_info_python","line":189},{"name":"language_info_zig","line":200},{"name":"language_configuration_default","line":211},{"name":"file_association_create","line":225},{"name":"language_id_from_extension","line":233},{"name":"language_server_capability_create","line":250},{"name":"symbol_info_create","line":260},{"name":"completion_template_create","line":269},{"name":"is_t27_extension","line":278},{"name":"is_t27_language","line":283},{"name":"feature_to_string","line":288},{"name":"symbol_kind_to_string","line":308},{"name":"info","line":331},{"name":"info","line":336},{"name":"info","line":341},{"name":"config","line":350},{"name":"assoc","line":355},{"name":"lang_id","line":360},{"name":"lang_id","line":365},{"name":"cap","line":378},{"name":"sym","line":383},{"name":"tmpl","line":388},{"name":"str","line":393},{"name":"str","line":398}],"imports":[],"terms":["lsp","language","lang","zig","python","javascript","typescript","markdown","json","yaml","ext","info","configuration","bracket","pair","indentation","feature","association","capability","kind","keyword","set","completion","template","default","create","extension","config","assoc","cap","sym","tmpl","str"]},{"id":"50b2fe09337e3f407869407d2f3542c7516ec85483798d71ce05a653f05d57d7","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/ternary_vs_binary.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"LayerConfig","line":49},{"name":"config","line":60},{"name":"input","line":61}],"imports":[],"terms":["benchmarks","ternary","binary","layer","config"]},{"id":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/formats.t27","health":"ok","module":"Formats"}],"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","symbols":[{"name":"SignMask","line":27},{"name":"ExpMask","line":28},{"name":"MantMask","line":29},{"name":"ExpShift","line":31},{"name":"SignShift","line":32},{"name":"Bias","line":33},{"name":"ExpMax","line":35},{"name":"ExpMin","line":36},{"name":"gf16_to_f32","line":61},{"name":"f32_to_gf16","line":79},{"name":"f32_to_ternary","line":101},{"name":"ternary_to_f32","line":108},{"name":"Format","line":121},{"name":"format_bytes","line":175},{"name":"quantize_value","line":185},{"name":"original","line":460},{"name":"encoded","line":461},{"name":"decoded","line":462},{"name":"error","line":463},{"name":"p","line":468},{"name":"n","line":469},{"name":"p_decoded","line":470},{"name":"n_decoded","line":471},{"name":"values","line":476},{"name":"t","line":478},{"name":"recovered","line":479},{"name":"diff","line":480},{"name":"test_value","line":499},{"name":"test_value","line":510},{"name":"test_value","line":521},{"name":"test_trit","line":532}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11}],"terms":["chips","euler","numeric","formats","sign","mask","exp","mant","shift","bias","max","min","gf16","f32","ternary","format","bytes","quantize","original","encoded","decoded","values","recovered","diff","trit"]},{"id":"50d838b5e5138ffeb2875b3a6c831f34ba6a2953a3086db6752b1a6b490213ba","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/ternary_isa_tb.t27","health":"ok","module":"Ternary_ISA_Testbench"}],"description":"t27/specs/fpga/testbench/ternary_isa_tb.t27 Ternary ISA Testbench Tests ternary instruction decode, ALU operations, and encoding","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"TRIT_POS","line":12},{"name":"TRIT_ZERO","line":13},{"name":"TRIT_NEG","line":14},{"name":"tick","line":31},{"name":"reset","line":36},{"name":"ternary_add","line":44},{"name":"ternary_mul","line":51},{"name":"ternary_neg","line":56}],"imports":[{"name":"fpga::ternary_isa::TernaryIsa","line":8}],"terms":["fpga","testbench","ternary","isa","clk","period","sim","timeout","trit","pos","zero","neg","tick","reset","mul"]},{"id":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sources":[{"repo":"ghashtag/t27","path":"specs/memory/semantic_search.t27","health":"ok","module":"SemanticSearch"}],"description":"Module: Semantic Search via Hippocampus Pattern Completion CA3 pattern completion via Schaffer collaterals analog: - Query embedding compared via cosine similarity normalized by PHI - O(log n) search via HNSW index approximation - Returns top-k formula matches with similarity scores","symbols":[{"name":"EMBEDDING_DIM","line":26},{"name":"MAX_CORPUS","line":29},{"name":"DEFAULT_K","line":32},{"name":"FormulaMatch","line":39},{"name":"SearchResult","line":48},{"name":"FormulaEmbedding","line":55},{"name":"SearchQuery","line":62},{"name":"compute_similarity","line":73},{"name":"cos_sim","line":74},{"name":"top_k","line":80},{"name":"semantic_search","line":89},{"name":"top_matches","line":100},{"name":"query","line":114},{"name":"corpus","line":118},{"name":"k","line":119},{"name":"result","line":120},{"name":"q","line":125},{"name":"t","line":126},{"name":"sim","line":127},{"name":"q","line":135},{"name":"t","line":136},{"name":"sim","line":137},{"name":"expected","line":138}],"imports":[{"name":"base::types::Float","line":16},{"name":"base::math::cosine_sim","line":17},{"name":"base::math::normalize_l2","line":18},{"name":"base::constants::PHI","line":19}],"terms":["memory","semantic","search","embedding","dim","max","corpus","default","formula","match","query","compute","similarity","cos","sim","top","matches","expected"]},{"id":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/bridge.t27","health":"warn","module":"TrinityMemoryBridgeSpec"}],"description":"specs/memory/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;","symbols":[{"name":"TMS_BRIDGE_PROTOCOL_VERSION","line":12},{"name":"TMS_BRIDGE_METHOD_COUNT","line":13},{"name":"TMS_BRIDGE_FORMAT_COUNT","line":14},{"name":"TMS_BRIDGE_CODEC_COUNT","line":15},{"name":"TMS_BRIDGE_LIMIT_FIELD_COUNT","line":16},{"name":"BridgeMethod","line":18},{"name":"BridgeBackend","line":29},{"name":"TMS_RPC_ENVELOPE_JSONRPC","line":38},{"name":"TMS_RPC_ENVELOPE_ID","line":39},{"name":"TMS_RPC_ENVELOPE_METHOD","line":40},{"name":"TMS_RPC_ENVELOPE_PARAMS","line":41},{"name":"TMS_RPC_ENVELOPE_REQUIRED","line":42},{"name":"TMS_RPC_ENVELOPE_ALLOWED","line":43},{"name":"TMS_RPC_JSON_MAX_DEPTH","line":44},{"name":"TMS_RPC_ID_MAX","line":45},{"name":"TMS_RPC_ID_MIN","line":46},{"name":"TMS_RPC_ID_MAX_CODEPOINTS","line":47},{"name":"TMS_RPC_CLIENT_ID_HEX_CHARS","line":48},{"name":"TMS_RPC_FIELD_DATA","line":51},{"name":"TMS_RPC_FIELD_HANDLE","line":52},{"name":"TMS_RPC_FIELD_OFFSET","line":53},{"name":"TMS_RPC_FIELD_LENGTH","line":54},{"name":"TMS_RPC_FIELD_TENSOR_NAME","line":55},{"name":"TMS_RPC_FIELD_ACTIVATIONS","line":56},{"name":"TMS_BRIDGE_READ_ALLOWED_FIELDS","line":57},{"name":"TMS_BRIDGE_DOT_REQUIRED_FIELDS","line":58},{"name":"TMS_RPC_ERR_PARSE","line":61},{"name":"TMS_RPC_ERR_INVALID_REQUEST","line":62},{"name":"TMS_RPC_ERR_METHOD_NOT_FOUND","line":63},{"name":"TMS_RPC_ERR_INVALID_PARAMS","line":64},{"name":"TMS_RPC_ERR_INTERNAL","line":65},{"name":"TMS_RPC_ERR_NOT_FOUND","line":66},{"name":"TMS_RPC_ERR_LIMIT","line":67},{"name":"TMS_RPC_ERR_TRANSPORT","line":68},{"name":"TMS_HTTP_OK","line":70},{"name":"TMS_HTTP_BAD_REQUEST","line":71},{"name":"TMS_HTTP_FORBIDDEN","line":72},{"name":"TMS_HTTP_METHOD_NOT_ALLOWED","line":73},{"name":"TMS_HTTP_PAYLOAD_TOO_LARGE","line":74},{"name":"TMS_HTTP_UNSUPPORTED_MEDIA_TYPE","line":75},{"name":"TMS_HTTP_HEADERS_TOO_LARGE","line":76},{"name":"TMS_HTTP_MAX_HEADER_BYTES","line":77},{"name":"TMS_HTTP_MAX_HEADER_COUNT","line":78},{"name":"TMS_HTTP_MAX_CONTENT_LENGTH_DIGITS","line":79},{"name":"TMS_HTTP_MAX_PORT","line":80},{"name":"HttpRejection","line":82},{"name":"TMS_BRIDGE_DEFAULT_MAX_REQUEST_BYTES","line":94},{"name":"TMS_BRIDGE_DEFAULT_MAX_OBJECT_BYTES","line":95},{"name":"TMS_BRIDGE_DEFAULT_MAX_STORAGE_BYTES","line":96},{"name":"TMS_BRIDGE_DEFAULT_MAX_OBJECTS","line":97},{"name":"TMS_BRIDGE_DEFAULT_MAX_TRITS","line":98},{"name":"TMS_BRIDGE_DEFAULT_TIMEOUT_SECONDS","line":99},{"name":"TMS_BRIDGE_CLIENT_MAX_RESPONSE_BYTES","line":100},{"name":"TMS_BRIDGE_REQUEST_HEADER_ALLOWANCE","line":101},{"name":"TMS_BRIDGE_RESPONSE_BASE_BYTES","line":102},{"name":"TMS_BRIDGE_RESPONSE_BYTES_PER_OBJECT_BYTE","line":103},{"name":"TMS_BRIDGE_RESPONSE_BYTES_PER_TRIT","line":104},{"name":"TMS_BRIDGE_HANDLE_BYTES","line":108},{"name":"TMS_BRIDGE_HANDLE_HEX_CHARS","line":109},{"name":"TMS_BRIDGE_HANDLE_VERSION_CHAR_INDEX","line":110},{"name":"TMS_BRIDGE_HANDLE_VARIANT_CHAR_INDEX","line":111},{"name":"TMS_BRIDGE_HANDLE_UNIQUENESS_ATTEMPTS","line":112},{"name":"TMS_BRIDGE_B64_INVALID","line":116},{"name":"TMS_BRIDGE_B64_NONCANONICAL","line":117},{"name":"TMS_BRIDGE_B64_SHORT_OUTPUT","line":118},{"name":"TMS_BRIDGE_TMEM_COUNT_OFFSET","line":119},{"name":"TMS_BRIDGE_TMEM_TRIT_CHECK_MIN_BYTES","line":120},{"name":"TMS_BRIDGE_ACTIVATION_MIN","line":124},{"name":"TMS_BRIDGE_ACTIVATION_MAX","line":125},{"name":"TMS_BRIDGE_ACTIVATION_MAGNITUDE","line":126},{"name":"TMS_BRIDGE_TENSOR_NAME_MAX_CODEPOINTS","line":127},{"name":"TMS_BRIDGE_DOT_MAX_RANK","line":128},{"name":"TMS_BRIDGE_DOT_MAX_WIDTH","line":129},{"name":"TMS_BRIDGE_DOT_NO_SCALE_AXIS","line":130},{"name":"TMS_BRIDGE_IDENTITY_BYTES","line":134},{"name":"TMS_BRIDGE_IDENTITY_ANCHOR","line":135},{"name":"tms_bridge_request_status","line":138},{"name":"tms_bridge_request_error","line":144},{"name":"tms_http_rejection_status","line":150},{"name":"tms_http_rejection_error","line":160},{"name":"tms_rpc_id_integer_valid","line":166},{"name":"tms_rpc_id_string_valid","line":170},{"name":"tms_rpc_envelope_complete","line":174},{"name":"tms_bridge_required_fields","line":179},{"name":"tms_bridge_allowed_fields","line":186},{"name":"tms_bridge_params_valid","line":191},{"name":"tms_bridge_handle_char_valid","line":198},{"name":"tms_bridge_handle_layout_valid","line":202},{"name":"tms_bridge_read_range_valid","line":207},{"name":"tms_bridge_activation_valid","line":212},{"name":"tms_bridge_dot_layout_valid","line":216},{"name":"tms_bridge_dot_rows","line":223},{"name":"tms_bridge_dot_row","line":228},{"name":"tms_bridge_accumulator_bound","line":235},{"name":"tms_bridge_b64_encoded_size","line":239},{"name":"tms_bridge_storage_accepts","line":243},{"name":"tms_bridge_tmem_trit_limit_exceeded","line":250},{"name":"tms_bridge_request_capacity","line":254},{"name":"tms_bridge_response_capacity","line":258}],"imports":[],"terms":["dmitrii","memory","bridge","tms","protocol","method","count","format","codec","limit","field","backend","rpc","envelope","jsonrpc","params","required","allowed","json","max","depth","min","codepoints","client","hex","chars","data","handle","offset","length","tensor","activations","read","fields","dot","err","parse","invalid","request","found","internal","transport","http","bad","forbidden","payload","too","large","unsupported","media","headers","header","bytes","content","digits","port","rejection","default","object","storage","objects","trits","timeout","seconds","response","allowance","base","per","byte","trit","char","index","variant","uniqueness","attempts","b64","noncanonical","short","tmem","activation","magnitude","rank","width","scale","axis","identity","anchor","status","integer","valid","complete","layout","range","rows","row","accumulator","bound","encoded","size","accepts","exceeded","capacity"]},{"id":"515bffd0d52fc79669620e18b71801e0b05c98ead9e8c59729448cf98d9dabbc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/sort.t27","health":"ok","module":"TriSort"}],"description":"t27/specs/","symbols":[{"name":"SortOrder","line":13},{"name":"sort","line":22},{"name":"sort_by","line":27}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","order"]},{"id":"5182f6fa681faab5e767959d49e8be18f2305b6b9bb41130dacbf9974da4eef4","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/property_test_template.t27","health":"warn","module":"PBTTemplate"}],"description":"t27/specs/test_framework/property_test_template.t27 Ring 052 -- Property-Based Testing Template for GoldenFloat Standardized PBT patterns following T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md","symbols":[{"name":"PropertyTestConfig","line":15},{"name":"default_gf_config","line":25},{"name":"generate_gf16","line":41},{"name":"patterns","line":42},{"name":"idx","line":52},{"name":"bits","line":57},{"name":"generate_gf32","line":62},{"name":"patterns","line":63},{"name":"idx","line":73},{"name":"bits","line":78},{"name":"generate_gf16_pair","line":83},{"name":"generate_gf16_triple","line":88},{"name":"for_all","line":97},{"name":"input","line":105},{"name":"metamorphic","line":135},{"name":"input","line":144},{"name":"y","line":145},{"name":"g_y","line":146},{"name":"h_x","line":147},{"name":"differential","line":178},{"name":"input","line":188},{"name":"f_result","line":189},{"name":"g_result","line":190},{"name":"diff","line":191},{"name":"sum1","line":233},{"name":"sum2","line":234},{"name":"sum1","line":243},{"name":"sum2","line":244},{"name":"product1","line":253},{"name":"product2","line":254},{"name":"product1","line":263},{"name":"product2","line":264},{"name":"left","line":273},{"name":"right","line":274},{"name":"a_f16","line":295},{"name":"b_f16","line":296},{"name":"sum_f16","line":297},{"name":"abs_value","line":311},{"name":"next_representable","line":317},{"name":"diff","line":318},{"name":"goldenfloat_property_test_suite","line":330},{"name":"config","line":331},{"name":"strict_config","line":332},{"name":"approx_equal","line":411},{"name":"has_edge_cases","line":415},{"name":"has_normal_numbers","line":420},{"name":"all_tests_have_claim_ids","line":425},{"name":"has_commutativity_tests","line":430},{"name":"has_associativity_tests","line":431},{"name":"has_distributivity_tests","line":432},{"name":"has_precision_tests","line":433}],"imports":[{"name":"test_framework::core","line":7},{"name":"numeric::golden_float","line":8}],"terms":["framework","property","template","pbttemplate","config","default","generate","gf16","patterns","idx","bits","gf32","pair","triple","metamorphic","differential","diff","sum1","sum2","product1","product2","left","right","f16","sum","abs","representable","goldenfloat","suite","strict","approx","equal","edge","cases","normal","numbers","claim","ids","commutativity","associativity","distributivity","precision"]},{"id":"5189c2771d5edfddea6da5b8d20ee348fd44b3bd83e034188081e4a79f64fd40","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/frame_buffer.t27","health":"ok","module":"FrameBuffer"}],"description":"Frame buffer - minimal version","symbols":[{"name":"get_src","line":6},{"name":"get_dst","line":10},{"name":"get_ttl","line":14},{"name":"get_valid","line":18},{"name":"create_meta","line":22},{"name":"empty_meta","line":26}],"imports":[{"name":"base::types","line":4}],"terms":["net","frame","buffer","get","dst","ttl","valid","create","meta","empty"]},{"id":"5195f89bfc0b1f3ed434ef6371ba940a629ba01eee7a3746f6f14ec0cde9a141","sources":[{"repo":"ghashtag/t27","path":"specs/physics/formula_discovery.t27","health":"ok","module":"FormulaDiscovery"}],"description":"Formula Discovery v1.0 — ULTRA ENGINE Specification","symbols":[{"name":"PHI","line":9},{"name":"PI","line":10},{"name":"E","line":11},{"name":"S1_gamma","line":17},{"name":"PM1b_alpha_inv_exact","line":18},{"name":"N1_alpha_s","line":19},{"name":"N2_Tc","line":20},{"name":"CKM1_theta_C","line":21},{"name":"CKM2_V_cb","line":22},{"name":"PMNS2_sin2th23","line":23},{"name":"PMNS3_delta_CP","line":24},{"name":"PMNS4_sin2th12","line":25},{"name":"H1_mH_mZ","line":26},{"name":"P10_V_ud","line":29},{"name":"P11_V_cs","line":30},{"name":"P12_V_td","line":31},{"name":"P13_sin2th12_chimera","line":32},{"name":"P14_delta_CP_rad","line":33},{"name":"P15_ms_mmu","line":34},{"name":"P16_mb_mt","line":35},{"name":"P17_Omega_b","line":36},{"name":"P18_ns","line":37},{"name":"chimera_mul","line":42},{"name":"chimera_div","line":46},{"name":"chimera_add","line":53},{"name":"chimera_sub","line":57},{"name":"chimera_sin","line":63},{"name":"chimera_cos","line":67},{"name":"chimera_ln","line":73},{"name":"chimera_exp","line":80},{"name":"chimera_pow","line":86},{"name":"generate_basis","line":93}],"imports":[{"name":"math::constants","line":6}],"terms":["physics","formula","discovery","phi","gamma","pm1b","alpha","inv","exact","ckm1","theta","ckm2","pmns2","sin2th23","pmns3","delta","pmns4","sin2th12","p10","p11","p12","p13","chimera","p14","rad","p15","mmu","p16","p17","omega","p18","mul","div","sub","sin","cos","exp","pow","generate","basis"]},{"id":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_monitoring.t27","health":"ok","module":"HealthMonitoring"}],"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","symbols":[{"name":"MAX_CHECKS","line":7},{"name":"HEALTH_CRITICAL","line":8},{"name":"HEALTH_WARNING","line":9},{"name":"HEALTH_HEALTHY","line":10},{"name":"CHECK_INTERVAL","line":11},{"name":"create_health_check","line":14},{"name":"get_check_type","line":21},{"name":"get_check_result","line":25},{"name":"get_check_value","line":29},{"name":"get_check_timestamp","line":33},{"name":"CHECK_CPU","line":38},{"name":"CHECK_MEMORY","line":39},{"name":"CHECK_DISK","line":40},{"name":"CHECK_NETWORK","line":41},{"name":"CHECK_TEMPERATURE","line":42},{"name":"CHECK_POWER","line":43},{"name":"CHECK_CONNECTIVITY","line":44},{"name":"CHECK_PROCESS","line":45},{"name":"RESULT_PASS","line":48},{"name":"RESULT_WARN","line":49},{"name":"RESULT_FAIL","line":50},{"name":"RESULT_SKIP","line":51},{"name":"create_health_array","line":56},{"name":"get_health_check","line":60},{"name":"update_health_check","line":68},{"name":"calculate_overall_health","line":90},{"name":"count_failed_checks","line":122},{"name":"count_warning_checks","line":136},{"name":"is_check_failing","line":150},{"name":"get_health_percentage","line":161}],"imports":[{"name":"base::types","line":5}],"terms":["net","health","monitoring","max","checks","critical","warning","healthy","interval","create","get","timestamp","cpu","memory","disk","network","temperature","power","connectivity","process","pass","warn","fail","skip","array","calculate","overall","count","failed","failing","percentage"]},{"id":"51eb7e2902d6348c94a6cfdadcc344287e232c6ff46bcb74c509bbb32fc98aeb","sources":[{"repo":"ghashtag/t27","path":"specs/storage/migrate.t27","health":"ok","module":"StorageMigrate"}],"description":"specs/storage/migrate.t27 Data Migration Operations","symbols":[{"name":"MigrationStep","line":14},{"name":"MigrationStatus","line":22},{"name":"version","line":34},{"name":"set_version","line":39},{"name":"apply","line":44},{"name":"apply_to","line":49},{"name":"rollback","line":54},{"name":"status","line":59},{"name":"register","line":64},{"name":"list_available","line":69},{"name":"list_pending","line":74},{"name":"migrate_1_legacy_projects","line":83},{"name":"migrate_2_session_diffs","line":89},{"name":"migration_no_rollback","line":105},{"name":"MIGRATIONS","line":113}],"imports":[{"name":"base::types","line":6},{"name":"storage::schema","line":7}],"terms":["storage","migrate","migration","step","status","set","apply","rollback","register","list","available","legacy","projects","session","diffs","migrations"]},{"id":"524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timing_closure.t27","health":"ok","module":"TimingClosure"}],"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","symbols":[{"name":"TIMING_PASS","line":8},{"name":"TIMING_MARGINAL","line":9},{"name":"TIMING_FAIL","line":10},{"name":"MIN_PIPELINE","line":13},{"name":"MAX_PIPELINE","line":14},{"name":"TARGET_FREQ_LOW","line":17},{"name":"TARGET_FREQ_MID","line":18},{"name":"TARGET_FREQ_HIGH","line":19},{"name":"create_critical_path","line":22},{"name":"extract_delay","line":28},{"name":"extract_stages","line":32},{"name":"extract_slack","line":36},{"name":"grade_timing","line":41},{"name":"calculate_pipeline_stages","line":53},{"name":"retiming_needed","line":73},{"name":"balance_registers","line":78},{"name":"compare_critical_paths","line":83},{"name":"create_timing_report","line":92},{"name":"extract_grade","line":98},{"name":"extract_max_freq","line":102},{"name":"extract_critical_paths","line":106},{"name":"timing_closure_achieved","line":111}],"imports":[{"name":"base::types","line":5}],"terms":["net","timing","closure","pass","marginal","fail","min","pipeline","max","target","freq","low","mid","high","create","critical","path","extract","delay","stages","slack","grade","calculate","retiming","needed","balance","registers","compare","paths","report","achieved"]},{"id":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/stdlib.t27","health":"ok","module":"Stdlib"}],"description":"t27/specs/fpga/stdlib.t27 T27 FPGA Standard Library IP Catalog Reusable hardware IP cores with resource utilization estimates Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"IpKind","line":12},{"name":"ResourceEstimate","line":30},{"name":"IpCore","line":40},{"name":"IpCatalog","line":52},{"name":"BoardResources","line":60},{"name":"zero_resources","line":71},{"name":"resources","line":81},{"name":"ip_core","line":91},{"name":"empty_catalog","line":103},{"name":"arty_a7_resources","line":145},{"name":"xc7a100t_resources","line":156},{"name":"total_luts","line":169},{"name":"total_ffs","line":179},{"name":"total_bram18","line":189},{"name":"total_dsp48","line":199},{"name":"fits_board","line":209},{"name":"luts_remaining","line":225},{"name":"utilization_percent","line":232},{"name":"validate_ip","line":241}],"imports":[],"terms":["fpga","stdlib","kind","resource","estimate","catalog","board","resources","zero","empty","arty","xc7a100t","total","luts","ffs","bram18","dsp48","fits","remaining","utilization","percent","validate"]},{"id":"528e169ef24245d00dac40a60e4327ac44d818f4fdab488818cbf3ac15597dbd","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_constants.t27","health":"ok","module":"SacredConstants"}],"description":"t27/specs/","symbols":[{"name":"SacredConstants","line":13}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","constants"]},{"id":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/dft.t27","health":"ok","module":"DFT"}],"description":"t27/specs/fpga/dft.t27 T27 Design-for-Test Specification Scan chains, BIST controllers, JTAG TAP, test coverage estimation Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"ScanChain","line":12},{"name":"scan_chain","line":18},{"name":"scan_chain_cycles","line":26},{"name":"scan_chain_bytes","line":30},{"name":"BistKind","line":36},{"name":"BistCtrl","line":44},{"name":"memory_bist","line":51},{"name":"logic_bist","line":60},{"name":"bist_cycles","line":69},{"name":"bist_coverage","line":73},{"name":"JtagTap","line":82},{"name":"jtag_tap","line":90},{"name":"tap_total_bits","line":100},{"name":"tap_state_count","line":104},{"name":"TestCoverage","line":110},{"name":"test_coverage","line":117},{"name":"is_acceptable","line":126},{"name":"validate_chain","line":132},{"name":"validate_bist","line":143},{"name":"validate_tap","line":154}],"imports":[],"terms":["fpga","dft","scan","chain","cycles","bytes","bist","kind","ctrl","memory","logic","jtag","tap","total","bits","state","count","acceptable","validate"]},{"id":"5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_sha256.t27","health":"ok","module":"TriSha256"}],"description":"SHA-256, single 512-bit block, unrolled (t27 has no loops/arrays). Pure u32 add/rotate/xor/shr -- no multiply. Verified against the known sha256(\"abc\") vector. This is the chain-verifiable hash for the DePIN Merkle commitments (Solana uses sha256 natively). AUTHORED via a one-shot text generator; the .t27 is the artifact.","symbols":[{"name":"rotr","line":9},{"name":"shr","line":10},{"name":"ch","line":11},{"name":"maj","line":12},{"name":"bsig0","line":13},{"name":"bsig1","line":14},{"name":"ssig0","line":15},{"name":"ssig1","line":16},{"name":"sha256_compress","line":22},{"name":"sha256_word","line":739},{"name":"SHA_PAD_MARK","line":747},{"name":"sha256_pad2_word","line":748}],"imports":[{"name":"base::types","line":7}],"terms":["net","sha256","rotr","shr","maj","bsig0","bsig1","ssig0","ssig1","compress","word","sha","pad","mark","pad2"]},{"id":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","sources":[{"repo":"ghashtag/t27","path":"specs/git/operations.t27","health":"ok","module":"GitOperations"}],"description":"specs/git/operations.t27 Git Command Operations","symbols":[{"name":"run","line":14},{"name":"branch","line":19},{"name":"prefix","line":24},{"name":"default_branch","line":29},{"name":"has_head","line":34},{"name":"merge_base","line":39},{"name":"show","line":44},{"name":"rev_parse","line":49},{"name":"checkout","line":54},{"name":"fetch","line":59},{"name":"pull","line":64},{"name":"commit","line":69},{"name":"add","line":74},{"name":"reset","line":79},{"name":"remote_list","line":84},{"name":"remote_url","line":89},{"name":"branch_list","line":98},{"name":"branch_create","line":103},{"name":"branch_delete","line":108}],"imports":[{"name":"base::types","line":6},{"name":"git::schema","line":7}],"terms":["git","operations","branch","prefix","default","head","merge","base","show","rev","parse","checkout","fetch","pull","commit","reset","remote","list","url","create","delete"]},{"id":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","sources":[{"repo":"ghashtag/t27","path":"specs/base/debounce.t27","health":"ok","module":"base-debounce"}],"description":"base/debounce.t27 — φ-Structured Debouncing Trinity S³AI — Rate Limiting and Debouncing","symbols":[{"name":"PHI","line":15},{"name":"PHI_INV","line":18},{"name":"DEBOUNCE_DELAY_MS","line":21},{"name":"DEBOUNCE_WINDOW_MS","line":24},{"name":"Debouncer","line":31},{"name":"debouncer_init","line":41},{"name":"debouncer_should_exec","line":50},{"name":"now","line":55},{"name":"elapsed","line":56},{"name":"debouncer_record_exec","line":62},{"name":"get_timestamp_ms","line":70},{"name":"debouncer","line":87}],"imports":[{"name":"math::sacred_physics","line":8}],"terms":["base","debounce","phi","inv","delay","window","debouncer","init","exec","elapsed","record","get","timestamp"]},{"id":"5469641560c8dc73d41597e61dfd5764e82499c451e3bc22ed9e8ddaec2f77f6","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/drowsy_ret.t27","health":"ok","module":"sacred-drowsy_ret"}],"description":"","symbols":[{"name":"OP_DROWSY_RET","line":9},{"name":"DROWSY_STATE_BITS","line":11},{"name":"RET_REASON_BITS","line":12},{"name":"DROWSY_ACTIVE","line":14},{"name":"DROWSY_LIGHT","line":15},{"name":"DROWSY_DEEP","line":16},{"name":"DROWSY_OFF","line":17},{"name":"DROWSY_HIBERNATE","line":18},{"name":"DROWSY_CRITICAL","line":19},{"name":"DROWSY_MAX","line":20},{"name":"RET_WAKE","line":22},{"name":"RET_TIMER","line":23},{"name":"RET_INTERRUPT","line":24},{"name":"RET_ERROR","line":25},{"name":"RET_POWER","line":26},{"name":"RET_MANUAL","line":27},{"name":"RET_MAX","line":28},{"name":"WAKE_CYCLES","line":30},{"name":"DEEP_WAKE_CYCLES","line":31},{"name":"DrowsyState","line":37},{"name":"RetReason","line":46},{"name":"DrowsyConfig","line":55},{"name":"DrowsyStatus","line":63},{"name":"WakeCondition","line":71},{"name":"drowsy_is_active","line":84},{"name":"drowsy_is_drowsy","line":90},{"name":"drowsy_is_off","line":96},{"name":"drowsy_is_critical","line":102},{"name":"drowsy_can_enter_light","line":108},{"name":"drowsy_can_enter_deep","line":114},{"name":"drowsy_wake_cycles","line":120},{"name":"drowsy_config_init","line":134},{"name":"drowsy_config_disable","line":146},{"name":"drowsy_config_light_only","line":158},{"name":"drowsy_status_init","line":174},{"name":"drowsy_status_enter_light","line":186},{"name":"drowsy_status_enter_deep","line":201},{"name":"drowsy_status_wake","line":216},{"name":"drowsy_status_enter_critical","line":228},{"name":"drowsy_status_enter_off","line":240},{"name":"drowsy_wake_condition_init","line":256},{"name":"drowsy_should_wake","line":267},{"name":"drowsy_can_wake_critical","line":273},{"name":"drowsy_wake_from_condition","line":279},{"name":"drowsy_update_duration","line":299},{"name":"elapsed","line":310},{"name":"drowsy_check_threshold","line":322},{"name":"threshold","line":325},{"name":"encode_drowsy_ret","line":337},{"name":"op","line":339},{"name":"reason_field","line":340},{"name":"state_field","line":341},{"name":"duration_field","line":342},{"name":"decode_drowsy_ret","line":348},{"name":"reason","line":349},{"name":"state","line":350},{"name":"duration","line":351}],"imports":[],"terms":["chips","euler","fpga","drowsy","ret","sacred","state","bits","reason","active","light","deep","off","hibernate","critical","max","wake","timer","interrupt","power","manual","cycles","config","status","condition","enter","init","disable","duration","elapsed","threshold","encode","field","decode"]},{"id":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sources":[{"repo":"ghashtag/trinity","path":"trinity/t27/specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":16},{"name":"PHI_SQ","line":20},{"name":"PhiSplitResult","line":39},{"name":"phi_split","line":46},{"name":"available","line":47},{"name":"phi_sq","line":48},{"name":"exp_raw","line":51},{"name":"exp_bits","line":52},{"name":"mant_bits","line":55},{"name":"ratio","line":57},{"name":"phi_dist","line":58},{"name":"FormatComparison","line":72},{"name":"verify_phi_split","line":83},{"name":"phi_optimality_proof","line":172},{"name":"sacred_connection","line":204},{"name":"compute_phi_distance","line":212},{"name":"ratio","line":213},{"name":"is_phi_optimal","line":217},{"name":"recommend_format","line":221},{"name":"round","line":229},{"name":"abs","line":235},{"name":"pow","line":242}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","optimality","proof","sacred","connection","compute","distance","optimal","recommend","round","abs","pow"]},{"id":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","sources":[{"repo":"ghashtag/t27","path":"specs/sync/schema.t27","health":"warn","module":"sync-schema"}],"description":"sync/schema.t27 — Sync Schema Specification Sync ID, state, event types for change synchronization","symbols":[{"name":"SYNC_ID_MAX_LEN","line":19},{"name":"SYNC_TIMEOUT_MS","line":22},{"name":"MAX_CONCURRENT_SYNCS","line":25},{"name":"STATE_PENDING_TIMEOUT_MS","line":28},{"name":"CHECKPOINT_INTERVAL","line":31},{"name":"SyncID","line":38},{"name":"SyncOpType","line":41},{"name":"SyncState","line":50},{"name":"SyncEvent","line":60},{"name":"SyncOp","line":69},{"name":"SyncConflict","line":78},{"name":"SyncCheckpoint","line":87},{"name":"SyncSession","line":95},{"name":"SyncDelta","line":105},{"name":"SyncStats","line":113},{"name":"sync_id_generate","line":125},{"name":"timestamp","line":127},{"name":"bytes","line":130},{"name":"sync_id_valid","line":139},{"name":"op_create","line":151},{"name":"op_create_with_version","line":162},{"name":"event_create","line":173},{"name":"event_create_with_metadata","line":184},{"name":"conflict_create","line":195},{"name":"checkpoint_create","line":206},{"name":"session_create","line":216},{"name":"stats_create","line":228},{"name":"op_is_insert","line":239},{"name":"op_is_update","line":244},{"name":"op_is_delete","line":249},{"name":"op_is_merge","line":254},{"name":"state_is_terminal","line":259},{"name":"state_is_active","line":264},{"name":"conflict_resolve_local","line":269},{"name":"conflict_resolve_remote","line":275},{"name":"conflict_unresolved","line":281},{"name":"session_set_state","line":286},{"name":"session_complete","line":291},{"name":"session_fail","line":297},{"name":"session_add_op","line":304},{"name":"session_op_count","line":309},{"name":"session_stats","line":314},{"name":"duration","line":326},{"name":"append_errors","line":338},{"name":"sep","line":340},{"name":"concat","line":347},{"name":"append_byte","line":356},{"name":"append","line":363},{"name":"append_ops","line":373},{"name":"int_to_bytes","line":382},{"name":"min","line":397},{"name":"get_timestamp_ms","line":402},{"name":"op","line":412},{"name":"op","line":417},{"name":"op","line":422},{"name":"op","line":427},{"name":"id","line":432},{"name":"event","line":433},{"name":"id","line":438},{"name":"event","line":439},{"name":"id","line":444},{"name":"conflict","line":445},{"name":"id","line":450},{"name":"session","line":451},{"name":"id","line":456},{"name":"id","line":463},{"name":"id","line":470},{"name":"id","line":478},{"name":"id","line":486},{"name":"op","line":488},{"name":"id","line":494},{"name":"stats","line":497},{"name":"id","line":502},{"name":"op1","line":504},{"name":"op2","line":505},{"name":"stats","line":509},{"name":"id","line":672},{"name":"id","line":684},{"name":"op","line":686},{"name":"id","line":700},{"name":"id","line":712},{"name":"op","line":714}],"imports":[{"name":"std","line":12}],"terms":["sync","schema","max","len","timeout","concurrent","syncs","state","checkpoint","interval","event","conflict","session","delta","stats","generate","timestamp","bytes","valid","create","metadata","insert","delete","merge","terminal","active","resolve","local","remote","unresolved","set","complete","fail","count","duration","append","sep","concat","byte","ops","int","min","get","op1","op2"]},{"id":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/assembler.t27","health":"ok","module":"Assembler"}],"description":"t27/specs/fpga/assembler.t27 T27 Ternary Assembler Specification High-level assembler for the ternary ISA, compiles to machine code Supports R-type, I-type, and GF16 extended instructions Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"SectionKind","line":13},{"name":"RelocKind","line":22},{"name":"AssembledInstr","line":30},{"name":"RelocEntry","line":43},{"name":"Symbol","line":52},{"name":"AsmSection","line":62},{"name":"AsmConfig","line":71},{"name":"asm_config","line":82},{"name":"text_section","line":93},{"name":"data_section","line":102},{"name":"r_instruction","line":111},{"name":"i_instruction","line":124},{"name":"gf16_instruction","line":137},{"name":"symbol","line":150},{"name":"reloc","line":160},{"name":"is_r_type","line":171},{"name":"is_i_type","line":175},{"name":"is_gf16_instr","line":179},{"name":"encode_r_type","line":183},{"name":"encode_i_type","line":187},{"name":"section_end","line":191},{"name":"align_address","line":195},{"name":"instr_count","line":206},{"name":"validate_config","line":215},{"name":"validate_symbol","line":226}],"imports":[],"terms":["fpga","assembler","section","kind","reloc","assembled","instr","entry","asm","config","text","data","gf16","encode","end","align","address","count","validate"]},{"id":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_metrics.t27","health":"ok","module":"NetworkMetrics"}],"description":"Network metrics - ultra-minimal, all-inline, no-let","symbols":[{"name":"get_sent","line":6},{"name":"inc_sent","line":10},{"name":"get_recv","line":14},{"name":"inc_recv","line":18},{"name":"get_success","line":22},{"name":"inc_success","line":26},{"name":"success_rate","line":30}],"imports":[{"name":"base::types","line":4}],"terms":["net","network","metrics","get","sent","inc","recv","success","rate"]},{"id":"56f823f5a276ae2ec4740de0058cc1ec3071884ff89ed433dd20c4714c99997e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/cts_tb.t27","health":"ok","module":"CTS_Testbench"}],"description":"t27/specs/fpga/testbench/cts_tb.t27 Clock Tree Synthesis Testbench Tests clock buffer insertion, skew balancing, and latency estimation","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_SKEW_PS","line":11},{"name":"MAX_LATENCY_PS","line":12},{"name":"NUM_CLOCK_DOMAINS","line":13},{"name":"BUFFER_DELAY_PS","line":14},{"name":"tick","line":26},{"name":"reset","line":31},{"name":"estimate_latency","line":39},{"name":"estimate_skew","line":43},{"name":"balance_tree","line":53}],"imports":[{"name":"fpga::cts::CTS","line":8}],"terms":["fpga","testbench","cts","clk","period","max","skew","latency","num","clock","domains","buffer","delay","tick","reset","estimate","balance","tree"]},{"id":"572787c2cd5278240bc0c715a4051393d448a14d8524c74abf04ea6183ac3ff9","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/runtime.t27","health":"warn","module":"zig_runtime"}],"description":"runtime.t27 -- Zig Runtime Code Generation Generates Zig backend from compiler/runtime/*.t27 specifications","symbols":[{"name":"generate_main","line":14},{"name":"generate_commands_module","line":62},{"name":"generate_validation_module","line":179},{"name":"generate_main_zig","line":282},{"name":"generate_commands_zig","line":287},{"name":"generate_validation_zig","line":292},{"name":"generate_runtime_zig","line":301},{"name":"base_dir","line":302},{"name":"main_zig","line":323},{"name":"main_zig","line":327},{"name":"main_zig","line":331},{"name":"commands_zig","line":335},{"name":"commands_zig","line":339},{"name":"validation_zig","line":343},{"name":"validation_zig","line":347},{"name":"validation_zig","line":351},{"name":"result","line":355},{"name":"main_zig","line":360},{"name":"main_zig","line":365},{"name":"commands_zig","line":370},{"name":"validation_zig","line":379},{"name":"main_zig","line":384},{"name":"commands_zig","line":385},{"name":"validation_zig","line":386},{"name":"result","line":393},{"name":"result","line":398},{"name":"result","line":403},{"name":"result","line":408}],"imports":[],"terms":["compiler","codegen","zig","runtime","generate","main","commands","validation","base","dir"]},{"id":"573be7de419ab7d4c873367a65bd56f3da10c48b445cb4a6a5e046972b00a392","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitvector.t27","health":"ok","module":"TriBitvector"}],"description":"t27/specs/","symbols":[{"name":"BitVector","line":13},{"name":"empty","line":23},{"name":"with_capacity","line":28},{"name":"push","line":33},{"name":"pop","line":38},{"name":"get","line":43},{"name":"set","line":48},{"name":"len","line":53},{"name":"append","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","bitvector","bit","vector","empty","capacity","push","pop","get","set","len","append"]},{"id":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sources":[{"repo":"ghashtag/t27","path":"specs/queen/task_analysis.t27","health":"warn","module":"queen-task-analysis"}],"description":"queen/task_analysis.t27 — Task Priority Analysis for Queen Trinity S³AI — Cognitive Task Orchestration","symbols":[{"name":"PHI","line":16},{"name":"PHI_INV","line":17},{"name":"TRINITY","line":18},{"name":"WORKER_COUNT","line":21},{"name":"PRIORITY_CRITICAL","line":24},{"name":"PRIORITY_HIGH","line":25},{"name":"PRIORITY_NORMAL","line":26},{"name":"PRIORITY_LOW","line":27},{"name":"TaskType","line":34},{"name":"Task","line":48},{"name":"TaskAnalysis","line":58},{"name":"calculate_priority_score","line":71},{"name":"urgency_weight","line":73},{"name":"priority_weight","line":74},{"name":"normalized_priority","line":76},{"name":"sort_tasks_by_priority","line":82},{"name":"analyze_task_queue","line":88},{"name":"task","line":98},{"name":"get_next_task","line":119},{"name":"score","line":151},{"name":"analysis","line":160}],"imports":[{"name":"base::types::Trit","line":8},{"name":"math::sacred_physics","line":9},{"name":"brain::unified_state","line":10}],"terms":["queen","analysis","phi","inv","worker","count","priority","critical","high","normal","low","calculate","score","urgency","weight","normalized","sort","tasks","analyze","queue","get"]},{"id":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/internet_call.t27","health":"ok","module":"InternetCall"}],"description":"Internet call policy and lifecycle. Network adapters, APNs delivery, and LiveKit token signing are thin wrappers. phi^2 + phi^-2 = 3","symbols":[{"name":"ROUTE_NONE","line":8},{"name":"ROUTE_MESH","line":9},{"name":"ROUTE_INTERNET","line":10},{"name":"CALL_IDLE","line":12},{"name":"CALL_RINGING","line":13},{"name":"CALL_ACTIVE","line":14},{"name":"CALL_ENDED","line":15},{"name":"CALL_DECLINED","line":16},{"name":"CALL_CANCELLED","line":17},{"name":"CALL_MISSED","line":18},{"name":"CAP_AUDIO","line":20},{"name":"CAP_VIDEO","line":21},{"name":"CAP_MESH","line":22},{"name":"CAP_WEBRTC","line":23},{"name":"INVITE_TTL_SECONDS","line":25},{"name":"AUTO_MESH_PROBE_TIMEOUT_SECONDS","line":26},{"name":"AUTO_MESH_CONTROL_GRACE_SECONDS","line":27},{"name":"AUTO_MESH_ACCEPTED_CONNECT_TIMEOUT_SECONDS","line":28},{"name":"MESH_CONTROL_SEND_ATTEMPTS","line":29},{"name":"TOKEN_TTL_SECONDS","line":30},{"name":"LIVEKIT_ROOM_SERVICE_TOKEN_TTL_SECONDS","line":31},{"name":"REQUEST_SIGNATURE_TTL_SECONDS","line":32},{"name":"REQUEST_SIGNATURE_MAX_FUTURE_SKEW_SECONDS","line":33},{"name":"PRESENCE_TTL_SECONDS","line":34},{"name":"APNS_MAX_DELIVERY_ATTEMPTS","line":35},{"name":"APNS_RETRY_BASE_DELAY_MS","line":36},{"name":"APNS_RETRY_MAX_JITTER_MS","line":37},{"name":"APNS_VOIP_OUTBOX_WORKERS","line":38},{"name":"APNS_OUTBOX_HTTP_ATTEMPTS_PER_CLAIM","line":39},{"name":"CALL_RATE_WINDOW_SECONDS","line":40},{"name":"MAX_NEW_CALLS_PER_DEVICE_WINDOW","line":41},{"name":"MAX_PENDING_CALLS_PER_DEVICE","line":42},{"name":"APNS_OUTBOX_CLAIM_LEASE_SECONDS","line":46},{"name":"APNS_OUTBOX_RETRY_BASE_SECONDS","line":47},{"name":"APNS_OUTBOX_RETRY_MAX_SECONDS","line":48},{"name":"APNS_OUTBOX_RETRY_MAX_JITTER_SECONDS","line":49},{"name":"device_is_valid","line":53},{"name":"supports_internet_call","line":60},{"name":"supports_video_call","line":64},{"name":"call_media_request_is_valid","line":68},{"name":"call_target_supports_media","line":74},{"name":"device_is_online","line":81},{"name":"select_route","line":89},{"name":"auto_mesh_should_fallback","line":102},{"name":"auto_mesh_fallback_decision_is_due","line":114},{"name":"auto_mesh_accepted_fallback_decision_is_due","line":122},{"name":"auto_mesh_prompt_is_fresh","line":132},{"name":"mesh_control_auth_is_valid","line":139},{"name":"mesh_control_route_matches","line":143},{"name":"mesh_control_peer_matches","line":149},{"name":"mesh_control_is_authorized","line":158},{"name":"incoming_call_should_mark_reported","line":162},{"name":"incoming_call_should_retry_after_presentation","line":166},{"name":"mesh_stop_should_notify_peer","line":170},{"name":"internet_remote_departure_should_end","line":176},{"name":"should_migrate_private_api_endpoint","line":183},{"name":"invite_is_fresh","line":187},{"name":"token_is_fresh","line":194},{"name":"request_signature_is_fresh","line":204},{"name":"may_answer","line":211},{"name":"call_target_is_valid","line":217},{"name":"call_target_is_available","line":231},{"name":"voip_push_may_be_sent","line":238},{"name":"voip_outbox_event_may_enqueue","line":244},{"name":"apns_should_try_alternate_environment","line":251},{"name":"apns_environment_should_be_updated","line":257},{"name":"apns_delivery_failure_is_retryable","line":263},{"name":"apns_should_retry","line":269},{"name":"apns_bounded_jitter_ms","line":273},{"name":"apns_retry_delay_ms","line":282},{"name":"apns_outbox_bounded_jitter_seconds","line":289},{"name":"apns_outbox_retry_delay_seconds","line":299},{"name":"apns_outbox_claim_is_recoverable","line":325},{"name":"apns_outbox_should_retry","line":335},{"name":"apns_outbox_should_block","line":342},{"name":"apns_outbox_block_is_recoverable","line":346},{"name":"new_call_admission_is_allowed","line":353},{"name":"apns_token_should_be_invalidated","line":371},{"name":"join_is_authorized","line":380},{"name":"join_retry_is_authorized","line":389},{"name":"callee_may_decline","line":399},{"name":"status_after_decline","line":411},{"name":"participant_may_read_status","line":420},{"name":"call_should_expire","line":427},{"name":"status_after_expiry","line":431},{"name":"status_after_caller_end","line":440},{"name":"call_is_terminal","line":450},{"name":"livekit_room_cleanup_should_start","line":460},{"name":"terminal_response_is_allowed","line":464},{"name":"create_retry_matches","line":473},{"name":"create_retry_may_issue_session","line":481},{"name":"caller_may_end","line":493},{"name":"active_participant_may_end","line":502},{"name":"next_status","line":511}],"imports":[{"name":"base::types","line":6}],"terms":["net","internet","call","route","mesh","idle","ringing","active","ended","declined","cancelled","missed","cap","audio","video","webrtc","invite","ttl","seconds","auto","probe","timeout","control","grace","accepted","connect","send","attempts","token","livekit","room","service","request","signature","max","future","skew","presence","apns","delivery","retry","base","delay","jitter","voip","outbox","workers","http","per","claim","rate","window","calls","device","lease","valid","supports","media","target","online","select","fallback","decision","due","prompt","fresh","auth","matches","peer","authorized","incoming","mark","reported","presentation","stop","notify","remote","departure","end","migrate","private","api","endpoint","may","answer","available","push","sent","event","enqueue","try","alternate","environment","updated","failure","retryable","bounded","recoverable","block","admission","allowed","invalidated","join","callee","decline","status","participant","read","expire","expiry","caller","terminal","cleanup","start","response","create","session"]},{"id":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf24.t27","health":"warn","module":"GF24"}],"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 — 24-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 7 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF24","line":34},{"name":"encode","line":43},{"name":"sign","line":48},{"name":"abs_val","line":49},{"name":"exp_unbiased","line":52},{"name":"exp_biased","line":53},{"name":"exp_clamped","line":56},{"name":"mant","line":59},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp_u16","line":171},{"name":"pow","line":177}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf24","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow"]},{"id":"57ece309a4353fd534a182df50e003dd406d886579600342e183453955427bc9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/result.t27","health":"ok","module":"TriResult"}],"description":"t27/specs/","symbols":[{"name":"Result","line":13},{"name":"ok","line":24},{"name":"err","line":29},{"name":"unwrap_or","line":34},{"name":"is_error","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","err","unwrap"]},{"id":"57f187f5bec5e6b70f931e78ac5f199afa1bd38a6f3b44e647e45cbf6b07f270","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/batch_runner.t27","health":"ok","module":"BatchRunner"}],"description":"t27/specs/","symbols":[{"name":"CompileStatus","line":13},{"name":"FilterMode","line":19},{"name":"PipelineResult","line":25},{"name":"BatchConfig","line":33},{"name":"BatchReport","line":41},{"name":"FailureEntry","line":52},{"name":"ThreadSafeResults","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","batch","runner","compile","status","filter","mode","config","report","failure","entry","thread","safe","results"]},{"id":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/memory.t27","health":"warn","module":"Memory"}],"description":"t27/specs/fpga/memory.t27 Memory (BRAM/DRAM/ROM) Abstraction for Trinity T27 FPGA HIR Defines block memory primitives with read/write ports Uses flat arrays + count fields (parser-compatible, no Vec/generics)","symbols":[{"name":"MemKind","line":12},{"name":"MemPortKind","line":20},{"name":"MemLatency","line":28},{"name":"MemPort","line":35},{"name":"MAX_MEM_PORTS","line":45},{"name":"MemDesc","line":47},{"name":"empty_mem_port","line":59},{"name":"make_mem_port","line":69},{"name":"empty_mem","line":79},{"name":"make_bram","line":91},{"name":"make_rom","line":112},{"name":"add_read_port","line":133},{"name":"add_write_port","line":142},{"name":"add_rw_port","line":151},{"name":"port_count","line":162},{"name":"total_bits","line":166},{"name":"has_read_port","line":170},{"name":"has_write_port","line":181},{"name":"is_rom","line":192},{"name":"is_bram","line":196},{"name":"addr_width","line":200},{"name":"bram18_count","line":206},{"name":"validate_mem","line":217}],"imports":[],"terms":["fpga","memory","mem","kind","port","latency","max","ports","desc","empty","make","bram","rom","read","write","count","total","bits","addr","width","bram18","validate"]},{"id":"589c71bf222dccf9b301401fad6dc1c0ef62df01b74011badaf3ff5b8d5cc05a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/isa/registers.t27","health":"warn","module":"isa_registers"}],"description":"","symbols":[],"imports":[],"terms":["fpga","isa","registers"]},{"id":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power.t27","health":"ok","module":"Power"}],"description":"t27/specs/fpga/power.t27 T27 Power Estimation Specification Estimates dynamic and static power consumption for FPGA designs Artix-7 power model: LUT=10uW/MHz, FF=5uW/MHz, BRAM=50uW/MHz, DSP=100uW/MHz Static: 50mW base + 0.1uW per resource unit Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"PowerDomain","line":14},{"name":"power_domain","line":21},{"name":"lut_power_uw_per_mhz","line":32},{"name":"ff_power_uw_per_mhz","line":36},{"name":"bram_power_uw_per_mhz","line":40},{"name":"dsp_power_uw_per_mhz","line":44},{"name":"io_power_uw_per_mhz","line":48},{"name":"static_base_mw","line":52},{"name":"static_per_resource_uw","line":56},{"name":"PowerEstimate","line":62},{"name":"power_estimate","line":72},{"name":"zero_power","line":84},{"name":"est_lut_dynamic","line":90},{"name":"est_ff_dynamic","line":94},{"name":"est_bram_dynamic","line":98},{"name":"est_dsp_dynamic","line":102},{"name":"est_static","line":106},{"name":"total_resources","line":110},{"name":"est_total_power","line":114},{"name":"validate_domain","line":134}],"imports":[],"terms":["fpga","power","domain","lut","per","mhz","bram","dsp","static","base","resource","estimate","zero","est","dynamic","total","resources","validate"]},{"id":"58d11c0dbcaf4696af240a612c6555640d0d5b70bbe1781eb8506a393b0e0276","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/experience_hooks.t27","health":"ok","module":"experience_hooks"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["experience","hooks"]},{"id":"58ea0bee6120e2dd493c7cb9153ae2561b2fa46aa565029d743d3193dae18814","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hmac.t27","health":"ok","module":"TriHmac"}],"description":"t27/specs/","symbols":[{"name":"HMAC","line":13},{"name":"init","line":23},{"name":"update","line":28},{"name":"final","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","hmac","init","final"]},{"id":"58edcf797efc944558c848fdcc432d92d901d02767896b297eb2e080136d1d76","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf24.t27","health":"warn","module":"GF24"}],"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 -- 24-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 7 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF24","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp_u16","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf24","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"58fee3a32e3125d1d89aaa783abe63023ee0c6c94a4a6cabe8ce585867014c40","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agents.t27","health":"ok","module":"agents"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["agents"]},{"id":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_validator.t27","health":"warn","module":"test_validator"}],"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","symbols":[{"name":"MAX_ERRORS","line":7},{"name":"MAX_WARNINGS","line":8},{"name":"MAX_FUNCTIONS","line":9},{"name":"VIOLATION_THRESHOLD","line":10},{"name":"create_validation_error","line":13},{"name":"get_error_id","line":20},{"name":"get_error_type","line":24},{"name":"get_error_line","line":28},{"name":"get_error_severity","line":32},{"name":"ERROR_SYNTAX","line":37},{"name":"ERROR_TYPE_MISMATCH","line":38},{"name":"ERROR_CONSTRAINT_VIOLATION","line":39},{"name":"ERROR_UNDEFINED_SYMBOL","line":40},{"name":"ERROR_UNUSED_VARIABLE","line":41},{"name":"SEVERITY_ERROR","line":44},{"name":"SEVERITY_WARNING","line":45},{"name":"SEVERITY_INFO","line":46},{"name":"create_function_signature","line":49},{"name":"get_sig_function_id","line":56},{"name":"get_param_count","line":60},{"name":"get_return_type","line":64},{"name":"get_visibility","line":68},{"name":"validate_function_signature","line":73},{"name":"create_constraint_check","line":92},{"name":"get_constraint_id","line":99},{"name":"get_constraint_status","line":103},{"name":"get_constraint_description","line":107},{"name":"get_constraint_line","line":111},{"name":"CONSTRAINT_PASS","line":116},{"name":"CONSTRAINT_FAIL","line":117},{"name":"CONSTRAINT_SKIP","line":118},{"name":"CONSTRAINT_NO_FLOAT","line":121},{"name":"CONSTRAINT_NO_DYNAMIC_ARRAY","line":122},{"name":"CONSTRAINT_NO_BIGNUM","line":123},{"name":"CONSTRAINT_FIXED_SIZE_ONLY","line":124},{"name":"CONSTRAINT_INTEGER_ONLY","line":125},{"name":"check_no_float_operations","line":128},{"name":"check_no_dynamic_arrays","line":138},{"name":"check_integer_only","line":148},{"name":"create_type_check","line":160},{"name":"get_type_var_id","line":167},{"name":"get_declared_type","line":171},{"name":"get_inferred_type","line":175},{"name":"get_type_line","line":179},{"name":"perform_type_check","line":184},{"name":"create_unused_check","line":196},{"name":"get_unused_var_id","line":203},{"name":"get_usage_count","line":207},{"name":"get_first_use","line":211},{"name":"get_last_use","line":215},{"name":"check_unused_variable","line":220},{"name":"create_validation_summary","line":231},{"name":"get_error_count","line":238},{"name":"get_warning_count","line":242},{"name":"get_info_count","line":246},{"name":"get_validation_status","line":250},{"name":"VALIDATION_PASS","line":255},{"name":"VALIDATION_FAIL","line":256},{"name":"VALIDATION_WARNING","line":257},{"name":"run_validation","line":260},{"name":"create_quality_metrics","line":296},{"name":"get_complexity","line":303},{"name":"get_readability","line":307},{"name":"get_maintainability","line":311},{"name":"get_technical_debt","line":315},{"name":"calculate_complexity","line":320},{"name":"is_quality_acceptable","line":337},{"name":"generate_validation_report","line":358}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","validator","max","warnings","functions","violation","threshold","create","validation","get","severity","syntax","mismatch","constraint","undefined","unused","variable","warning","info","signature","sig","param","count","visibility","validate","status","description","pass","fail","skip","float","dynamic","array","bignum","fixed","size","integer","operations","arrays","var","declared","inferred","perform","usage","summary","quality","metrics","complexity","readability","maintainability","technical","debt","calculate","acceptable","generate","report"]},{"id":"596d8c5a43c433eebb1c5df08d34b92e03c9697a4ac2f9343c1457246028593b","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/c/codegen.t27","health":"warn","module":"tricgen-c"}],"description":"compiler/codegen/c/codegen.t27 -- C Code Generator Specification Emit C code from t27 AST","symbols":[{"name":"INDENT_SIZE","line":10},{"name":"MAX_LINE_LENGTH","line":11},{"name":"NodeType","line":14},{"name":"BinOp","line":29},{"name":"UnOp","line":49},{"name":"CMapping","line":57},{"name":"CCodeGen","line":64},{"name":"emit_c","line":71},{"name":"emit_header","line":83},{"name":"emit_includes","line":90},{"name":"emit_types","line":98},{"name":"emit_declarations","line":105},{"name":"emit_implementations","line":111},{"name":"emit_expression","line":117},{"name":"emit_const","line":129},{"name":"emit_var","line":135},{"name":"emit_binop","line":141},{"name":"emit_unop","line":147},{"name":"emit_call","line":153},{"name":"emit_operator","line":159},{"name":"emit_unary_operator","line":165},{"name":"emit_test_section","line":171},{"name":"emit_invariant_section","line":177},{"name":"emit_bench_section","line":183},{"name":"emit_indent","line":189}],"imports":[],"terms":["compiler","codegen","tricgen","indent","size","max","length","node","bin","cmapping","ccode","gen","emit","header","includes","declarations","implementations","expression","var","binop","unop","call","operator","unary","section","invariant","bench"]},{"id":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/assembler_tb.t27","health":"ok","module":"Assembler_Testbench"}],"description":"t27/specs/fpga/testbench/assembler_tb.t27 Assembler/Linker Integration Testbench Tests ternary instruction encoding, program assembly, and memory linking","symbols":[{"name":"CLK_PERIOD","line":11},{"name":"INSTR_WIDTH","line":12},{"name":"DATA_WIDTH","line":13},{"name":"ADDR_WIDTH","line":14},{"name":"MAX_PROGRAM_SIZE","line":15},{"name":"NUM_REGISTERS","line":16},{"name":"tick","line":31},{"name":"reset","line":36},{"name":"encode_r_type","line":44},{"name":"encode_i_type","line":52},{"name":"decode_opcode","line":60},{"name":"decode_rd","line":64}],"imports":[{"name":"fpga::assembler::Assembler","line":8},{"name":"fpga::linker::Linker","line":9}],"terms":["fpga","testbench","assembler","clk","period","instr","width","data","addr","max","program","size","num","registers","tick","reset","encode","decode","opcode"]},{"id":"5a0622b79ba67a331b9c0f33c5d975f5070f01f8ec6aa50fdfcce8109e1e9ad6","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_entropy.t27","health":"ok","module":null}],"description":"t27/specs/physics/lqg_entropy.t27 KEPLER->NEWTON Direction B: LQG -> gamma (PRIORITY 3 - HONEST INQUIRY) Status: Final v2.2 Date: 2026-04-05 HONEST ASSESSMENT: gamma = phi^-^3 does NOT come from CS theory. This spec documents research needed to find:","symbols":[],"imports":[],"terms":["physics","lqg","entropy"]},{"id":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_framework.t27","health":"warn","module":"test_framework"}],"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","symbols":[{"name":"MAX_TESTS","line":7},{"name":"MAX_ASSERTIONS","line":8},{"name":"MAX_SUITES","line":9},{"name":"COVERAGE_TARGET","line":10},{"name":"create_test_result","line":13},{"name":"get_test_id","line":20},{"name":"get_test_status","line":24},{"name":"get_assertion_count","line":28},{"name":"get_failure_count","line":32},{"name":"STATUS_PASS","line":37},{"name":"STATUS_FAIL","line":38},{"name":"STATUS_SKIP","line":39},{"name":"STATUS_ERROR","line":40},{"name":"create_test_case","line":43},{"name":"get_test_case_id","line":50},{"name":"get_function_id","line":54},{"name":"get_test_input","line":58},{"name":"get_expected_output","line":62},{"name":"create_assertion","line":67},{"name":"get_assertion_type","line":74},{"name":"get_actual_value","line":78},{"name":"get_expected_value","line":82},{"name":"get_line_number","line":86},{"name":"ASSERT_EQUAL","line":91},{"name":"ASSERT_NOT_EQUAL","line":92},{"name":"ASSERT_GREATER","line":93},{"name":"ASSERT_LESS","line":94},{"name":"ASSERT_RANGE","line":95},{"name":"ASSERT_BITMASK","line":96},{"name":"check_assertion","line":99},{"name":"run_test_case","line":148},{"name":"create_test_suite","line":168},{"name":"get_suite_id","line":175},{"name":"get_suite_test_count","line":179},{"name":"get_setup_id","line":183},{"name":"get_teardown_id","line":187},{"name":"run_test_suite","line":192},{"name":"create_coverage_data","line":220},{"name":"get_coverage_function_id","line":227},{"name":"get_branch_count","line":231},{"name":"get_covered_branches","line":235},{"name":"get_line_count","line":239},{"name":"calculate_coverage_percentage","line":244},{"name":"aggregate_coverage","line":256},{"name":"create_property_test","line":275},{"name":"get_property_id","line":282},{"name":"get_generator_count","line":286},{"name":"get_property_test_count","line":290},{"name":"get_property_failure_count","line":294},{"name":"generate_test_input","line":299},{"name":"run_property_test","line":315},{"name":"create_test_summary","line":333},{"name":"get_total_tests","line":340},{"name":"get_passed_tests","line":344},{"name":"get_failed_tests","line":348},{"name":"get_skipped_tests","line":352},{"name":"calculate_pass_rate","line":357},{"name":"meets_coverage_target","line":369},{"name":"generate_test_report","line":378}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","framework","max","assertions","suites","target","create","get","status","assertion","count","failure","pass","fail","skip","case","expected","actual","assert","equal","greater","less","range","bitmask","suite","setup","teardown","data","branch","covered","branches","calculate","percentage","aggregate","property","generator","generate","summary","total","passed","failed","skipped","rate","meets","report"]},{"id":"5a687cc8950853b70473bc1bc1ade24e033e94ad14be342803202dc51c2e55e1","sources":[{"repo":"ghashtag/t27","path":"specs/server/project.t27","health":"ok","module":"Project"}],"description":"specs/server/project.t27 Project Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"Project","line":14},{"name":"FileEntry","line":24},{"name":"ProjectManager","line":34},{"name":"project_manager_init","line":40},{"name":"create_project","line":52},{"name":"id","line":53},{"name":"get_project","line":71},{"name":"get_current_project","line":82},{"name":"set_current_project","line":86},{"name":"list_projects","line":100},{"name":"delete_project","line":104},{"name":"read_file","line":129},{"name":"write_file","line":133},{"name":"file_exists","line":137},{"name":"list_files","line":141},{"name":"project","line":151},{"name":"created","line":159},{"name":"retrieved","line":160},{"name":"p1","line":166},{"name":"p2","line":167},{"name":"result","line":168},{"name":"project","line":182},{"name":"result","line":183},{"name":"project","line":190},{"name":"current","line":191},{"name":"mgr","line":196},{"name":"exists","line":202}],"imports":[{"name":"base::types","line":8}],"terms":["project","entry","manager","init","create","get","set","list","projects","delete","read","write","exists","created","retrieved","mgr"]},{"id":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/group_chat.t27","health":"ok","module":"GroupChat"}],"description":"Persistent group chat membership and message policy. HTTP, SQLite, and UI adapters are outside this specification. phi^2 + phi^-2 = 3","symbols":[{"name":"MIN_GROUP_MEMBERS","line":8},{"name":"MAX_GROUP_MEMBERS","line":9},{"name":"MAX_GROUP_TITLE_BYTES","line":10},{"name":"MAX_MESSAGE_BYTES","line":11},{"name":"MAX_MESSAGE_PAGE","line":12},{"name":"group_may_be_created","line":16},{"name":"title_is_valid","line":28},{"name":"member_may_read","line":32},{"name":"message_may_be_sent","line":36},{"name":"message_page_size","line":42},{"name":"advance_read_cursor","line":54},{"name":"message_counts_as_unread","line":63},{"name":"unread_alert_is_eligible","line":69},{"name":"push_alert_may_be_sent","line":75}],"imports":[{"name":"base::types","line":6}],"terms":["net","group","chat","min","members","max","title","bytes","page","may","created","valid","member","read","sent","size","advance","cursor","counts","unread","alert","eligible","push"]},{"id":"5bba9ceaa24af8afd4c4fa0557c580a568c26d4be8bfe89645c9852cb59f3b2f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/bezier.t27","health":"ok","module":"TriBezier"}],"description":"t27/specs/","symbols":[{"name":"Point","line":13},{"name":"BezierCurve","line":18},{"name":"evaluate","line":28},{"name":"derivative","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","bezier","point","curve","evaluate","derivative"]},{"id":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/runner.t27","health":"warn","module":"runner"}],"description":"t27 Math/Physics Test Framework - Runner Ring 050: Test runner implementation per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Entry point for `tri test ` execution","symbols":[{"name":"TestRunnerConfig","line":12},{"name":"default","line":24},{"name":"with_iterations","line":33},{"name":"with_tolerance","line":37},{"name":"with_verbose","line":41},{"name":"with_format","line":45},{"name":"TestRunner","line":51},{"name":"new","line":58},{"name":"run_test_spec","line":67},{"name":"execute_test_block","line":84},{"name":"execute_unit_test","line":95},{"name":"execute_property_test","line":117},{"name":"execute_invariant_test","line":128},{"name":"execute_benchmark_test","line":136},{"name":"execute_gate_pipeline_test","line":163},{"name":"generate_reports","line":184},{"name":"print_summary","line":205},{"name":"exit_with_code","line":246},{"name":"T27Spec","line":260},{"name":"TestBlock","line":267},{"name":"TestKind","line":282},{"name":"read_file","line":292},{"name":"parse_t27_spec","line":297},{"name":"current_timestamp","line":306},{"name":"default_domain","line":311},{"name":"default_property","line":315},{"name":"default_pipeline","line":319},{"name":"run_test_spec_file","line":326},{"name":"run_test_spec_file_with_config","line":332},{"name":"main","line":353},{"name":"print_help","line":415}],"imports":[{"name":"core","line":9}],"terms":["framework","runner","config","default","iterations","tolerance","verbose","format","execute","block","unit","property","invariant","benchmark","gate","pipeline","generate","reports","print","summary","exit","t27spec","kind","read","parse","timestamp","domain","main","help"]},{"id":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","sources":[{"repo":"ghashtag/t27","path":"specs/math/constants.t27","health":"ok","module":"Constants"}],"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing phi^2 + 1/phi^2 = 3 | Sacred constants for ternary computing","symbols":[{"name":"PHI","line":17},{"name":"PHI_INV","line":18},{"name":"PHI_SQ","line":19},{"name":"PHI_INV_SQ","line":20},{"name":"PHI_DISTANCE","line":23},{"name":"TRINITY","line":26},{"name":"PI","line":29},{"name":"E","line":32},{"name":"G_MEASURED","line":45},{"name":"LAMBDA_COSMO","line":49},{"name":"OMEGA_LAMBDA_MEASURED","line":53},{"name":"G_SCALE","line":59},{"name":"OMEGA_COARSE_SCALE","line":60},{"name":"abs","line":67},{"name":"pow","line":75},{"name":"negative","line":97},{"name":"exp","line":98},{"name":"is_integer","line":101},{"name":"exp_int","line":105},{"name":"ln_x","line":127},{"name":"ln_approx","line":137},{"name":"t","line":148},{"name":"t2","line":149},{"name":"t3","line":150},{"name":"t5","line":151},{"name":"t7","line":152},{"name":"exp_approx","line":158},{"name":"k","line":173},{"name":"k","line":177},{"name":"floor","line":192},{"name":"xi","line":193},{"name":"APPROX_TOLERANCE","line":233},{"name":"approximately_equal","line":238},{"name":"approximately_equal_within","line":245}],"imports":[],"terms":["math","constants","phi","inv","distance","measured","lambda","cosmo","omega","scale","coarse","abs","pow","negative","exp","integer","int","approx","floor","tolerance","approximately","equal","within"]},{"id":"5da0cd1f49205e7080077d474642e34effa56a964c65882dbe82bc72b61473de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/fpga/mac.t27","health":"warn","module":"fpga_mac"}],"description":"","symbols":[],"imports":[],"terms":["fpga","mac"]},{"id":"5dabbb6bfbcf210aea527ec2c66938f2e251ce054061d1172f98a44f09d9635b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tf3.t27","health":"warn","module":"triformat-tf3"}],"description":"tf3.t27 -- TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"MANT_BITS","line":25},{"name":"TF3_ZERO_POS","line":28},{"name":"TF3_ZERO_NEG","line":29},{"name":"TF3_INF_POS","line":30},{"name":"TF3_INF_NEG","line":31},{"name":"TF3","line":37},{"name":"mant_lookup_table","line":45},{"name":"tf3_extract_sign","line":79},{"name":"tf3_extract_exponent","line":86},{"name":"tf3_extract_mantissa","line":93},{"name":"tf3_from_components","line":99},{"name":"tf3_is_zero","line":107},{"name":"tf3_is_inf","line":113},{"name":"exp","line":114},{"name":"mant","line":115},{"name":"tf3_from_f32","line":122},{"name":"sign","line":129},{"name":"abs_value","line":130},{"name":"clamped","line":133},{"name":"mantissa","line":144},{"name":"mant","line":145},{"name":"tf3_to_f32","line":152},{"name":"sign","line":158},{"name":"sign","line":163},{"name":"exp","line":164},{"name":"mant","line":165},{"name":"sign_mult","line":168},{"name":"mant_mult","line":169},{"name":"exp_mult","line":170},{"name":"tf3_negate","line":177},{"name":"tf3_abs","line":183},{"name":"tf3_is_negative","line":189},{"name":"sign","line":190},{"name":"tf3_is_positive","line":196},{"name":"sign","line":197},{"name":"tf3_copy_sign","line":203},{"name":"sign_mask","line":204},{"name":"value_mask","line":205},{"name":"tf3_max","line":211},{"name":"a_val","line":215},{"name":"b_val","line":216},{"name":"tf3_min","line":223},{"name":"a_val","line":227},{"name":"b_val","line":228},{"name":"tf3_from_f32_phi","line":236},{"name":"sign","line":243},{"name":"abs_value","line":244},{"name":"clamped","line":247},{"name":"PHI_BIAS","line":258},{"name":"mantissa_raw","line":259},{"name":"mantissa","line":260},{"name":"mant","line":261},{"name":"tf3_eq","line":269},{"name":"tf3_ne","line":277},{"name":"tf3_lt","line":283},{"name":"a_val","line":284},{"name":"b_val","line":285},{"name":"tf3_le","line":291},{"name":"a_val","line":292},{"name":"b_val","line":293},{"name":"tf3_gt","line":299},{"name":"a_val","line":300},{"name":"b_val","line":301},{"name":"tf3_ge","line":307},{"name":"a_val","line":308},{"name":"b_val","line":309},{"name":"tf3_add","line":316},{"name":"a_val","line":326},{"name":"b_val","line":327},{"name":"result","line":328},{"name":"tf3_sub","line":335},{"name":"a_val","line":342},{"name":"b_val","line":343},{"name":"result","line":344},{"name":"tf3_mul","line":351},{"name":"a_sign","line":353},{"name":"b_sign","line":354},{"name":"result_sign","line":355},{"name":"a_sign","line":359},{"name":"b_sign","line":360},{"name":"result_sign","line":361},{"name":"a_val","line":365},{"name":"b_val","line":366},{"name":"result","line":367},{"name":"tf3_div","line":375},{"name":"a_sign","line":377},{"name":"a_sign","line":381},{"name":"b_sign","line":382},{"name":"result_sign","line":383},{"name":"a_sign","line":387},{"name":"b_sign","line":388},{"name":"result_sign","line":389},{"name":"a_val","line":393},{"name":"b_val","line":394},{"name":"result","line":395},{"name":"tf3_is_nan","line":403},{"name":"exp","line":405},{"name":"tf3_is_finite","line":411},{"name":"tf3_signbit","line":417},{"name":"tf3_sign","line":423},{"name":"tf3_clamp","line":441},{"name":"x_decoded","line":446},{"name":"min_decoded","line":447},{"name":"max_decoded","line":448},{"name":"tf3_lerp","line":461},{"name":"a_val","line":466},{"name":"b_val","line":467},{"name":"t_val","line":468},{"name":"result","line":470},{"name":"exp","line":502},{"name":"mant","line":503},{"name":"sign","line":514},{"name":"exp","line":515},{"name":"mant","line":516},{"name":"combined","line":525},{"name":"original","line":553},{"name":"encoded","line":554},{"name":"decoded","line":555},{"name":"original","line":560},{"name":"encoded","line":561},{"name":"decoded","line":562},{"name":"original","line":567},{"name":"encoded","line":568},{"name":"decoded","line":569},{"name":"result","line":593},{"name":"encoded","line":598},{"name":"encoded","line":603},{"name":"encoded","line":609},{"name":"pos_value","line":639},{"name":"neg_value","line":640},{"name":"decoded","line":641},{"name":"original","line":646},{"name":"negated","line":647},{"name":"double_negated","line":648},{"name":"orig_decoded","line":649},{"name":"double_decoded","line":650},{"name":"neg_value","line":660},{"name":"abs_value","line":661},{"name":"decoded","line":662},{"name":"pos_value","line":667},{"name":"abs_value","line":668},{"name":"neg_value","line":678},{"name":"pos_value","line":683},{"name":"pos_value","line":692},{"name":"neg_value","line":697},{"name":"pos_value","line":706},{"name":"neg_source","line":707},{"name":"result","line":708},{"name":"decoded","line":709},{"name":"neg_value","line":714},{"name":"pos_source","line":715},{"name":"result","line":716},{"name":"decoded","line":717},{"name":"a","line":722},{"name":"b","line":723},{"name":"result","line":724},{"name":"decoded","line":725},{"name":"a","line":730},{"name":"b","line":731},{"name":"result","line":732},{"name":"a","line":737},{"name":"b","line":738},{"name":"result","line":739},{"name":"decoded","line":740},{"name":"a","line":745},{"name":"b","line":746},{"name":"result","line":747},{"name":"PHI","line":752},{"name":"encoded","line":753},{"name":"decoded","line":754},{"name":"PHI","line":759},{"name":"encoded","line":760},{"name":"decoded","line":761},{"name":"a","line":771},{"name":"b","line":772},{"name":"a","line":777},{"name":"b","line":778},{"name":"a","line":787},{"name":"b","line":788},{"name":"a","line":793},{"name":"b","line":794},{"name":"a","line":799},{"name":"b","line":800},{"name":"a","line":805},{"name":"b","line":806},{"name":"neg","line":811},{"name":"pos","line":812},{"name":"a","line":817},{"name":"b","line":818},{"name":"a","line":823},{"name":"b","line":824},{"name":"a","line":829},{"name":"b","line":830},{"name":"a","line":835},{"name":"b","line":836},{"name":"a","line":841},{"name":"b","line":842},{"name":"a","line":847},{"name":"b","line":848},{"name":"a","line":853},{"name":"b","line":854},{"name":"a","line":862},{"name":"b","line":863},{"name":"result","line":864},{"name":"decoded","line":865},{"name":"a","line":870},{"name":"b","line":871},{"name":"result","line":872},{"name":"decoded","line":873},{"name":"a","line":878},{"name":"b","line":879},{"name":"result","line":880},{"name":"a","line":885},{"name":"b","line":886},{"name":"result","line":887},{"name":"decoded","line":888},{"name":"a","line":893},{"name":"b","line":894},{"name":"result","line":895},{"name":"decoded","line":896},{"name":"a","line":901},{"name":"b","line":902},{"name":"result","line":903},{"name":"decoded","line":904},{"name":"a","line":909},{"name":"b","line":910},{"name":"result","line":911},{"name":"decoded","line":912},{"name":"a","line":917},{"name":"zero","line":918},{"name":"result","line":919},{"name":"a","line":924},{"name":"b","line":925},{"name":"result","line":926},{"name":"decoded","line":927},{"name":"a","line":932},{"name":"b","line":933},{"name":"result","line":934},{"name":"decoded","line":935},{"name":"a","line":940},{"name":"zero","line":941},{"name":"result","line":942},{"name":"zero","line":947},{"name":"a","line":948},{"name":"result","line":949},{"name":"inf","line":954},{"name":"a","line":955},{"name":"result","line":956},{"name":"a","line":961},{"name":"b","line":962},{"name":"result1","line":963},{"name":"result2","line":964},{"name":"a","line":969},{"name":"b","line":970},{"name":"result1","line":971},{"name":"result2","line":972},{"name":"val","line":1221},{"name":"val","line":1226},{"name":"val","line":1240},{"name":"val","line":1245},{"name":"val","line":1250},{"name":"val","line":1255},{"name":"x","line":1269},{"name":"min_val","line":1270},{"name":"max_val","line":1271},{"name":"result","line":1272},{"name":"decoded","line":1273},{"name":"x","line":1278},{"name":"min_val","line":1279},{"name":"max_val","line":1280},{"name":"result","line":1281},{"name":"decoded","line":1282},{"name":"x","line":1287},{"name":"min_val","line":1288},{"name":"max_val","line":1289},{"name":"result","line":1290},{"name":"decoded","line":1291},{"name":"a","line":1296},{"name":"b","line":1297},{"name":"t","line":1298},{"name":"result","line":1299},{"name":"decoded","line":1300},{"name":"a","line":1305},{"name":"b","line":1306},{"name":"t","line":1307},{"name":"result","line":1308},{"name":"decoded","line":1309},{"name":"a","line":1314},{"name":"b","line":1315},{"name":"t","line":1316},{"name":"result","line":1317},{"name":"decoded","line":1318},{"name":"a","line":1431},{"name":"b","line":1432},{"name":"a","line":1443},{"name":"b","line":1444},{"name":"a","line":1455},{"name":"b","line":1456},{"name":"a","line":1477},{"name":"b","line":1478},{"name":"a","line":1489},{"name":"b","line":1490},{"name":"a","line":1501},{"name":"b","line":1502},{"name":"a","line":1513},{"name":"b","line":1514},{"name":"a","line":1525},{"name":"b","line":1526},{"name":"a","line":1537},{"name":"b","line":1538},{"name":"a","line":1549},{"name":"b","line":1550},{"name":"a","line":1561},{"name":"b","line":1562},{"name":"a","line":1573},{"name":"b","line":1574},{"name":"a","line":1585},{"name":"b","line":1586},{"name":"val","line":1597},{"name":"val","line":1608},{"name":"val","line":1619},{"name":"val","line":1630},{"name":"x","line":1641},{"name":"min_val","line":1642},{"name":"max_val","line":1643},{"name":"a","line":1654},{"name":"b","line":1655},{"name":"t","line":1656}],"imports":[],"terms":["numeric","tf3","triformat","sign","shift","exp","mant","mask","max","min","bias","bits","zero","pos","neg","inf","lookup","table","extract","exponent","mantissa","components","f32","abs","clamped","mult","negate","negative","positive","copy","val","phi","raw","sub","mul","div","nan","finite","signbit","clamp","decoded","lerp","combined","original","encoded","negated","double","orig","result1","result2"]},{"id":"5df21156f6f33ef7ae6c3270097a3636bbf5beda07b9cb8909ebbd1d3c4b755b","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/04_control_flow.t27","health":"ok","module":"tutorial-04-control-flow"}],"description":"04 — Control flow Lesson 4. if/else as a statement and as an expression, while, for over a range, and break/continue. . One rule worth learning before you need it: `switch` belongs in lesson 06, and only in its expression form. The statement form does not survive","symbols":[{"name":"TRIT_NEG","line":13},{"name":"TRIT_ZERO","line":14},{"name":"TRIT_POS","line":15},{"name":"sign_of","line":21},{"name":"larger","line":39},{"name":"clamp_to_trit","line":43},{"name":"high","line":44},{"name":"low","line":45},{"name":"count_to","line":56},{"name":"sum_to","line":64},{"name":"sum_with_step","line":84},{"name":"sum_range","line":101},{"name":"first_multiple","line":113}],"imports":[],"terms":["tutorial","control","flow","trit","neg","zero","pos","sign","larger","clamp","high","low","count","sum","step","range","multiple"]},{"id":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","sources":[{"repo":"ghashtag/t27","path":"specs/storage/kv.t27","health":"ok","module":"StorageKv"}],"description":"specs/storage/kv.t27 Key-Value Storage Operations","symbols":[{"name":"read","line":15},{"name":"write","line":22},{"name":"update","line":28},{"name":"remove","line":34},{"name":"list","line":40},{"name":"exists","line":45},{"name":"batch_write","line":54},{"name":"batch_read","line":59}],"imports":[{"name":"base::types","line":6},{"name":"storage::schema","line":7}],"terms":["storage","read","write","remove","list","exists","batch"]},{"id":"5f997ba4055b8af78726efd65f8b96858c47eeda5520ac82c8280183050215a7","sources":[{"repo":"ghashtag/t27","path":"specs/shell/process.t27","health":"warn","module":"ShellProcess"}],"description":"specs/shell/process.t27 Shell Process Operations","symbols":[{"name":"ProcessID","line":14},{"name":"spawn","line":21},{"name":"spawn_shell","line":26},{"name":"kill","line":31},{"name":"kill_tree","line":36},{"name":"wait","line":41},{"name":"poll","line":46},{"name":"is_alive","line":51},{"name":"Pool","line":60},{"name":"pool_create","line":66},{"name":"pool_spawn","line":71},{"name":"pool_wait_all","line":76},{"name":"pool_cleanup","line":81},{"name":"Signal","line":90},{"name":"send_signal","line":100},{"name":"signal_name","line":105}],"imports":[{"name":"base::types","line":6},{"name":"shell::schema","line":7}],"terms":["shell","process","spawn","kill","tree","wait","poll","alive","pool","create","cleanup","signal","send"]},{"id":"5fdec7f0438860173e0475b5e8912e5045a7ab37639ae21ea6f6329830989c02","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/fp8_e4m3.t27","health":"warn","module":"triformat-fp8_e4m3"}],"description":"fp8_e4m3.t27 — FP8 E4M3 8-bit Floating Point 8-bit float with 4 exponent, 3 mantissa bits (no implicit leading bit) OCP FP8 format optimized for neural network training Range: ~-240 to ~240, precision: ~6-7 significant bits","symbols":[{"name":"BITS","line":14},{"name":"SIGN_BITS","line":15},{"name":"EXP_BITS","line":16},{"name":"MANT_BITS","line":17},{"name":"SIGN_SHIFT","line":19},{"name":"EXP_SHIFT","line":20},{"name":"MANT_SHIFT","line":21},{"name":"SIGN_MASK","line":23},{"name":"EXP_MASK","line":24},{"name":"MANT_MASK","line":25},{"name":"EXP_MAX","line":27},{"name":"EXP_MIN","line":28},{"name":"EXP_BIAS","line":29},{"name":"MANT_DIVISOR","line":31},{"name":"FP8_ZERO_POS","line":34},{"name":"FP8_ZERO_NEG","line":35},{"name":"FP8_NAN_POS","line":36},{"name":"FP8_NAN_NEG","line":37},{"name":"FP8_INF_POS","line":38},{"name":"FP8_INF_NEG","line":39},{"name":"SUBNORMAL_EXP","line":42},{"name":"FP8E4M3","line":48},{"name":"fp8_extract_sign","line":57},{"name":"bit","line":58},{"name":"fp8_extract_exponent","line":65},{"name":"fp8_extract_mantissa","line":72},{"name":"fp8_from_components","line":78},{"name":"sign_bit","line":79},{"name":"fp8_is_zero","line":91},{"name":"fp8_is_special","line":97},{"name":"fp8_is_inf","line":103},{"name":"fp8_is_nan","line":109},{"name":"fp8_is_subnormal","line":115},{"name":"fp8_encode_f32","line":126},{"name":"sign","line":143},{"name":"abs_value","line":144},{"name":"f32_bits","line":147},{"name":"subnormal_shift","line":154},{"name":"shift_amount","line":160},{"name":"discarded","line":185},{"name":"fp8_decode_f32","line":204},{"name":"sign","line":221},{"name":"exp","line":222},{"name":"mant","line":223},{"name":"bias_adjusted","line":230},{"name":"mant_f32","line":231},{"name":"bias_adjusted","line":235},{"name":"mant_f32","line":236},{"name":"fp8_encode_f64","line":245},{"name":"fp8_decode_f64","line":251},{"name":"f32_val","line":252},{"name":"fp8_add","line":262},{"name":"fa","line":263},{"name":"fb","line":264},{"name":"fp8_sub","line":270},{"name":"fa","line":271},{"name":"fb","line":272},{"name":"fp8_mul","line":278},{"name":"fa","line":279},{"name":"fb","line":280},{"name":"fp8_div","line":286},{"name":"fb","line":287},{"name":"fa","line":289},{"name":"fa","line":292},{"name":"fp8_sqrt","line":298},{"name":"fv","line":299},{"name":"fp8_rsqrt","line":308},{"name":"fv","line":309},{"name":"fp8_abs","line":318},{"name":"fp8_neg","line":324},{"name":"fp8_is_equal","line":330},{"name":"fp8_is_greater","line":342},{"name":"sign_a","line":346},{"name":"sign_b","line":347},{"name":"fp8_max","line":359},{"name":"fp8_min","line":365},{"name":"fp8_clamp","line":371},{"name":"fp8_lerp","line":377},{"name":"fa","line":378},{"name":"fb","line":379},{"name":"result","line":380},{"name":"fp8_fma","line":386},{"name":"fa","line":387},{"name":"fb","line":388},{"name":"fc","line":389},{"name":"fp8_scale","line":395},{"name":"fv","line":396},{"name":"fp8_relu","line":402},{"name":"fp8_sigmoid","line":408},{"name":"fv","line":409},{"name":"fp8_tanh","line":415},{"name":"fv","line":416},{"name":"fp8_gelu","line":422},{"name":"fv","line":423},{"name":"sqrt_2_over_pi","line":424},{"name":"cube_coeff","line":425},{"name":"tanh_arg","line":426},{"name":"fp8_swish","line":432},{"name":"fv","line":433},{"name":"fp8_quantize_to_int4","line":439},{"name":"fv","line":440},{"name":"scaled","line":441},{"name":"fp8_quantize_to_int8","line":453},{"name":"fv","line":454},{"name":"scaled","line":455}],"imports":[],"terms":["chips","euler","fpga","fp8","e4m3","triformat","bits","sign","exp","mant","shift","mask","max","min","bias","divisor","zero","pos","neg","nan","inf","subnormal","fp8e4m3","extract","bit","exponent","mantissa","components","special","encode","f32","abs","amount","discarded","decode","adjusted","f64","val","sub","mul","div","sqrt","rsqrt","equal","greater","clamp","lerp","fma","scale","relu","sigmoid","tanh","gelu","over","cube","coeff","arg","swish","quantize","int4","scaled","int8"]},{"id":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/gf16_accel.t27","health":"ok","module":"Gf16Accel"}],"description":"t27/specs/fpga/gf16_accel.t27 GF(16) Hardware Accelerator Specification for Trinity T27 FPGA HIR Defines GF16 MAC, FFT, and VSA (Vector Space Architecture) operations Connects phi-identity (phi^2 = phi + 1, phi^2 + phi^-2 = 3) to silicon Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"GF16_BITS","line":13},{"name":"GF16_ELEMENTS","line":14},{"name":"GF16_FIELD_POLY","line":15},{"name":"PHI_WIDTH","line":16},{"name":"Gf16Op","line":20},{"name":"Gf16Config","line":33},{"name":"Gf16MacUnit","line":46},{"name":"Gf16FftConfig","line":55},{"name":"Gf16Status","line":64},{"name":"gf16_basic","line":73},{"name":"gf16_full","line":86},{"name":"gf16_mac_unit","line":99},{"name":"gf16_fft","line":108},{"name":"gf16_idle_status","line":117},{"name":"gf16_busy_status","line":126},{"name":"total_gf16_bits","line":137},{"name":"mac_unit_count","line":141},{"name":"fft_stages","line":148},{"name":"fft_twiddle_count","line":159},{"name":"matmul_cycles","line":163},{"name":"dot_product_cycles","line":170},{"name":"dsp48_count","line":177},{"name":"bram_count","line":181},{"name":"is_busy","line":192},{"name":"result_ready","line":196},{"name":"phi_squared_plus_phi_inverse_squared","line":202},{"name":"phi_squared_equals_phi_plus_one","line":206},{"name":"validate_gf16_config","line":212},{"name":"validate_mac_unit","line":229},{"name":"validate_fft","line":240}],"imports":[],"terms":["fpga","gf16","accel","gf16accel","bits","elements","field","poly","phi","width","gf16op","gf16config","gf16mac","unit","gf16fft","config","gf16status","basic","full","mac","fft","idle","status","busy","total","count","stages","twiddle","matmul","cycles","dot","product","dsp48","bram","ready","squared","plus","inverse","equals","one","validate"]},{"id":"600926a156c1d8cea584d967fe1980a29dcf7bb82b12268e72e47dc70ad29567","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/dijkstra.t27","health":"ok","module":"TriDijkstra"}],"description":"t27/specs/","symbols":[{"name":"DijkstraResult","line":14},{"name":"shortest_path","line":25}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"TriGraphBfs::Graph","line":8}],"terms":["graph","dijkstra","shortest","path"]},{"id":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf4.t27","health":"ok","module":"GF4"}],"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 — 4-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 2 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF4","line":34},{"name":"encode","line":43},{"name":"pos","line":49},{"name":"decode","line":61},{"name":"sign_bit","line":62},{"name":"exp_bit","line":63},{"name":"mant_bits","line":64},{"name":"mant","line":72},{"name":"exp_scale","line":75},{"name":"value","line":77},{"name":"max_value","line":89},{"name":"min_positive","line":94},{"name":"epsilon","line":99},{"name":"validate_format","line":108},{"name":"fmt","line":110},{"name":"MEMORY_RATIO_VS_FP32","line":128}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf4","bits","sign","exp","mant","bias","phi","distance","encode","pos","decode","bit","scale","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32"]},{"id":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/packed_vsa.t27","health":"ok","module":"PackedVsa"}],"description":"Module: Packed VSA Operations","symbols":[{"name":"TRITS_PER_BYTE","line":19},{"name":"MAX_PACKED_BYTES","line":22},{"name":"LUT_DIM","line":25},{"name":"LUT_SIZE","line":28},{"name":"BindLookupTable","line":38},{"name":"BundleLookupTable","line":43},{"name":"DotLookupTable","line":48},{"name":"packedBind","line":58},{"name":"packedBundle","line":64},{"name":"packedDot","line":70},{"name":"packedUnbind","line":76},{"name":"packedCosineSimilarity","line":82},{"name":"fromHybrid","line":92},{"name":"toHybrid","line":98},{"name":"randomPackedVector","line":104}],"imports":[{"name":"base::types","line":9},{"name":"ternary::packed_trit","line":10},{"name":"ternary::hybrid_arithmetic","line":11},{"name":"numeric::gf16","line":12}],"terms":["vsa","packed","trits","per","byte","max","bytes","lut","dim","size","bind","lookup","table","bundle","dot","unbind","cosine","similarity","hybrid","random","vector"]},{"id":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power_analysis.t27","health":"ok","module":"PowerAnalysis"}],"description":"t27/specs/fpga/power_analysis.t27 T27 Power Analysis Specification Connects power.t27 estimation model to utilization reports from synthesis Parses LUT/FF/BRAM/DSP counts from Vivado/Yosys reports Feeds utilization into Power.est_total_power() for estimation Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"Utilization","line":14},{"name":"utilization","line":23},{"name":"utilization_full","line":34},{"name":"zero_utilization","line":45},{"name":"total_resources","line":49},{"name":"DeviceLimits","line":55},{"name":"xc7a100t_limits","line":64},{"name":"xc7a35t_limits","line":75},{"name":"lut_percent","line":88},{"name":"ff_percent","line":93},{"name":"bram_percent","line":98},{"name":"dsp_percent","line":103},{"name":"overall_percent","line":108},{"name":"est_dynamic_power_mw","line":117},{"name":"est_static_power_mw","line":125},{"name":"est_total_power_mw","line":130},{"name":"PowerBudget","line":136},{"name":"power_budget","line":142},{"name":"power_pct_of_budget","line":150},{"name":"is_within_budget","line":155},{"name":"is_warning","line":159},{"name":"is_critical","line":164},{"name":"default_toggle_rate","line":171},{"name":"est_toggle_rate_from_activity","line":175},{"name":"ClockDomainPower","line":182},{"name":"clock_domain_power","line":190},{"name":"total_domain_power","line":202},{"name":"validate_utilization","line":214},{"name":"validate_budget","line":220}],"imports":[],"terms":["fpga","power","analysis","utilization","full","zero","total","resources","device","limits","xc7a100t","xc7a35t","lut","percent","bram","dsp","overall","est","dynamic","static","budget","pct","within","warning","critical","default","toggle","rate","activity","clock","domain","validate"]},{"id":"6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/load_predictor.t27","health":"warn","module":"load_predictor"}],"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","symbols":[{"name":"MAX_NODES","line":7},{"name":"HISTORY_SIZE","line":8},{"name":"CONGESTION_THRESHOLD","line":9},{"name":"WARNING_THRESHOLD","line":10},{"name":"PREDICTION_WINDOW","line":11},{"name":"create_load_metrics","line":14},{"name":"get_bandwidth_usage","line":21},{"name":"get_cpu_usage","line":25},{"name":"get_packet_rate","line":29},{"name":"get_queue_depth","line":33},{"name":"create_prediction","line":38},{"name":"get_predicted_load","line":45},{"name":"get_confidence","line":49},{"name":"get_trend","line":53},{"name":"get_time_horizon","line":57},{"name":"calculate_moving_average","line":62},{"name":"detect_trend","line":80},{"name":"predict_load","line":107},{"name":"calculate_confidence","line":138},{"name":"create_load_prediction","line":178},{"name":"is_congestion_predicted","line":188},{"name":"is_warning_predicted","line":200},{"name":"calculate_network_load","line":212},{"name":"find_most_loaded_node","line":230},{"name":"find_least_loaded_node","line":248},{"name":"calculate_load_imbalance","line":266},{"name":"recommend_rerouting","line":291}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","load","predictor","max","nodes","history","size","congestion","threshold","warning","prediction","window","create","metrics","get","bandwidth","usage","cpu","packet","rate","queue","depth","predicted","confidence","trend","time","horizon","calculate","moving","average","detect","predict","network","find","most","loaded","node","least","imbalance","recommend","rerouting"]},{"id":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","sources":[{"repo":"ghashtag/t27","path":"specs/graph/knowledge_graph.t27","health":"ok","module":"KnowledgeGraph"}],"description":"Module: Knowledge Graph for Vector Symbolic Architecture","symbols":[{"name":"FILE_MAGIC","line":19},{"name":"FILE_VERSION","line":22},{"name":"VECTOR_DIM","line":25},{"name":"MAX_ENTITIES","line":28},{"name":"MAX_TRIPLES","line":31},{"name":"SIMILARITY_THRESHOLD","line":34},{"name":"Entity","line":43},{"name":"Relation","line":56},{"name":"Triple","line":69},{"name":"KnowledgeGraph","line":83},{"name":"initEntity","line":101},{"name":"hashString","line":107},{"name":"initGraph","line":117},{"name":"getOrCreateEntity","line":123},{"name":"getOrCreateRelation","line":129},{"name":"addTriple","line":136},{"name":"queryObject","line":143},{"name":"querySubject","line":150},{"name":"findSimilar","line":157},{"name":"findEntity","line":163},{"name":"findRelation","line":169},{"name":"findClosestEntityPacked","line":176},{"name":"stats","line":182},{"name":"save","line":192},{"name":"load","line":199}],"imports":[{"name":"base::types","line":9},{"name":"ternary::packed_trit","line":10},{"name":"numeric::gf16","line":11},{"name":"ternary::hybrid_arithmetic","line":12}],"terms":["graph","knowledge","magic","vector","dim","max","entities","triples","similarity","threshold","entity","relation","triple","init","hash","get","create","query","object","subject","find","similar","closest","packed","stats","save","load"]},{"id":"61bee61eb1becd2304b09a5b6c5e9d0273286e3d3986fe9542c8d5f9dd3d270a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru.t27","health":"ok","module":"TriLru"}],"description":"t27/specs/","symbols":[{"name":"LRU","line":13},{"name":"init","line":24},{"name":"get","line":29},{"name":"put","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","lru","init","get","put"]},{"id":"61c1edda964778e108dde6336fc5e56af6f99cda5bb8549db12833e6d399de2e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crypto_frame.t27","health":"ok","module":"CryptoFrame"}],"description":"tri-net/specs/crypto_frame.t27 Partial spec-first lift of src/crypto.rs (T27-first): the INTEGER session-frame discipline. The AEAD itself (ChaCha20-Poly1305), X25519 and HKDF stay in Rust; what lives here is everything an auditor checks with arithmetic alone: wire frame = [epoch u32 BE][counter u64 BE][ciphertext || tag16] AEAD nonce = [dir:1][epoch:4 BE][counter low 7 BE] (12 bytes)","symbols":[{"name":"EPOCH_LEN","line":27},{"name":"COUNTER_LEN","line":28},{"name":"HEADER_LEN","line":29},{"name":"TAG_LEN","line":30},{"name":"NONCE_LEN","line":31},{"name":"counter_offset","line":34},{"name":"ciphertext_offset","line":38},{"name":"frame_len_ok","line":43},{"name":"REKEY_EVERY_FRAMES","line":48},{"name":"REKEY_HARD_CAP","line":49},{"name":"should_ratchet","line":52},{"name":"must_reject","line":57},{"name":"nonce_byte","line":63},{"name":"rx_dir","line":76},{"name":"WINDOW_WIDTH","line":89},{"name":"replay_accept","line":92},{"name":"replay_next_top","line":110},{"name":"replay_next_blo","line":122},{"name":"replay_next_bhi","line":142}],"imports":[{"name":"base::types","line":24}],"terms":["net","crypto","frame","epoch","len","counter","header","tag","nonce","offset","ciphertext","rekey","frames","hard","cap","ratchet","reject","byte","dir","window","width","replay","accept","top","blo","bhi"]},{"id":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/compression_engine.t27","health":"warn","module":"compression_engine"}],"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","symbols":[{"name":"MAX_BLOCKS","line":7},{"name":"BLOCK_SIZE","line":8},{"name":"COMPRESSION_THRESHOLD","line":9},{"name":"DICTIONARY_SIZE","line":10},{"name":"create_block_info","line":13},{"name":"get_original_size","line":20},{"name":"get_compressed_size","line":24},{"name":"get_compression_method","line":28},{"name":"get_compression_quality","line":32},{"name":"METHOD_NONE","line":37},{"name":"METHOD_RLE","line":38},{"name":"METHOD_DICTIONARY","line":39},{"name":"METHOD_DELTA","line":40},{"name":"calculate_compression_ratio","line":43},{"name":"compress_rle","line":52},{"name":"decompress_rle","line":82},{"name":"compress_dictionary","line":106},{"name":"decompress_dictionary","line":141},{"name":"compress_delta","line":150},{"name":"decompress_delta","line":171},{"name":"choose_compression_method","line":202},{"name":"compress_block","line":232},{"name":"decompress_block","line":258},{"name":"calculate_total_savings","line":271},{"name":"update_dictionary","line":290},{"name":"find_pattern","line":300},{"name":"calculate_compression_speed","line":316}],"imports":[{"name":"base::types","line":5}],"terms":["net","compression","engine","max","blocks","block","size","threshold","dictionary","create","info","get","original","compressed","method","quality","rle","delta","calculate","ratio","compress","decompress","choose","total","savings","find","pattern","speed"]},{"id":"621b8342483e5311f3132a0301b536b5af3f6825b2764bb5a89b3507c59c44a0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/aho_corasick.t27","health":"ok","module":"TriAhoCorasick"}],"description":"t27/specs/","symbols":[{"name":"ACTrieNode","line":13},{"name":"ACAutomaton","line":20},{"name":"build","line":31},{"name":"search","line":36},{"name":"deinit","line":41},{"name":"match","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","aho","corasick","actrie","node","acautomaton","build","deinit","match"]},{"id":"622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_benchmarks.t27","health":"ok","module":"PerformanceBenchmarks"}],"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","symbols":[{"name":"MAX_QUEUE_SIZE","line":8},{"name":"MAX_COUNTER","line":9},{"name":"TIMER_TICK_US","line":10},{"name":"create_queue","line":13},{"name":"queue_count","line":17},{"name":"queue_head","line":21},{"name":"queue_tail","line":25},{"name":"queue_enqueue","line":29},{"name":"queue_dequeue","line":38},{"name":"queue_is_full","line":48},{"name":"queue_is_empty","line":52},{"name":"inc_counter","line":57},{"name":"counter_will_overflow","line":65},{"name":"ticks_to_microseconds","line":70},{"name":"microseconds_to_ticks","line":74},{"name":"ticks_to_milliseconds","line":78}],"imports":[{"name":"base::types","line":5}],"terms":["net","performance","benchmarks","max","queue","size","counter","timer","tick","create","count","head","tail","enqueue","dequeue","full","empty","inc","overflow","ticks","microseconds","milliseconds"]},{"id":"627a4a71ee5506649082cb4e58f086a9419c4bbe6fe9d6dd6fe18c8dcf10a51f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/sigmoid_activation.t27","health":"ok","module":"Sigmoid"}],"description":"t27/specs/","symbols":[{"name":"SigmoidConfig","line":13},{"name":"forward","line":22},{"name":"forward_batch","line":27},{"name":"derivative","line":32}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","sigmoid","config","forward","batch","derivative"]},{"id":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/corona_oracle.t27","health":"ok","module":"CoronaOracle"}],"description":"specs/corona/corona_oracle.t27 TRI-1 Corona -- Format Conformance Oracle (top-level SSOT)","symbols":[{"name":"CHIP_NAME","line":28},{"name":"CHIP_LINE","line":29},{"name":"CHIP_LINE_INDEX","line":30},{"name":"CHIP_ROLE","line":31},{"name":"TARGET_SHUTTLE","line":32},{"name":"TARGET_PDK","line":33},{"name":"TARGET_PROCESS","line":34},{"name":"CHIP_STATUS","line":35},{"name":"TILE_OPTION_A","line":39},{"name":"TILE_OPTION_B","line":40},{"name":"TOTAL_FORMATS","line":88},{"name":"CLUSTER_COUNTS","line":91},{"name":"ROM_RECORD_BITS","line":122},{"name":"ROM_RECORD_BYTES","line":123},{"name":"ROM_RECORDS","line":124},{"name":"ROM_TOTAL_BYTES_MIN","line":130},{"name":"ROM_TOTAL_BYTES_MAX","line":131},{"name":"GF_LADDER_EXTENDED","line":151},{"name":"TIER1_MODULES","line":184},{"name":"TIER2_ROM_ONLY","line":206},{"name":"ANCHOR_VALUE","line":230},{"name":"STATUS_VERIFIED","line":239},{"name":"STATUS_EMPIRICAL_FIT","line":240},{"name":"STATUS_OPEN_CONJECTURE","line":241},{"name":"STATUS_RISK","line":242},{"name":"STATUS_RETRACTED","line":243},{"name":"STATUS_EXPERIMENTAL","line":244},{"name":"STATUS_HISTORICAL","line":245},{"name":"STATUS_SPEC","line":246},{"name":"FL002_STATUS","line":256},{"name":"FL002_PROMOTED_BY_CORONA","line":257}],"imports":[{"name":"base::types","line":15},{"name":"math::constants","line":16},{"name":"math::sacred_physics","line":17},{"name":"numeric::formats_catalog","line":18},{"name":"numeric::goldenfloat_family","line":19},{"name":"corona::rom_layout","line":20},{"name":"corona::protocol","line":21},{"name":"corona::anchor","line":22}],"terms":["corona","oracle","chip","index","role","target","shuttle","pdk","process","status","tile","option","total","formats","cluster","counts","rom","record","bits","bytes","records","min","max","ladder","extended","tier1","modules","tier2","anchor","verified","empirical","fit","open","conjecture","risk","retracted","experimental","historical","fl002","promoted"]},{"id":"6300dc270115322725d4e00244e601fe557f70f71225dc72949205213033e573","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/namespace.t27","health":"ok","module":"TriNamespace"}],"description":"t27/specs/","symbols":[{"name":"Namespace","line":13},{"name":"ParsedCommandNamespaced","line":27},{"name":"ParsedCommandFlat","line":33},{"name":"ParsedCommand","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","namespace","parsed","namespaced","flat"]},{"id":"6336dabb5211c7b3806374f72fbd1f667932147709ff1fa01ff7180d6a6c2198","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/reed_solomon.t27","health":"ok","module":"TriReedSolomon"}],"description":"t27/specs/","symbols":[{"name":"RSCode","line":13},{"name":"encode","line":23},{"name":"decode","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","reed","solomon","rscode","encode","decode"]},{"id":"63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/load_predictor.t27","health":"warn","module":"load_predictor"}],"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","symbols":[{"name":"MAX_NODES","line":7},{"name":"HISTORY_SIZE","line":8},{"name":"CONGESTION_THRESHOLD","line":9},{"name":"WARNING_THRESHOLD","line":10},{"name":"PREDICTION_WINDOW","line":11},{"name":"create_load_metrics","line":14},{"name":"get_bandwidth_usage","line":21},{"name":"get_cpu_usage","line":25},{"name":"get_packet_rate","line":29},{"name":"get_queue_depth","line":33},{"name":"create_prediction","line":38},{"name":"get_predicted_load","line":45},{"name":"get_confidence","line":49},{"name":"get_trend","line":53},{"name":"get_time_horizon","line":57},{"name":"calculate_moving_average","line":62},{"name":"detect_trend","line":80},{"name":"predict_load","line":107},{"name":"calculate_confidence","line":143},{"name":"create_load_prediction","line":183},{"name":"is_congestion_predicted","line":193},{"name":"is_warning_predicted","line":205},{"name":"calculate_network_load","line":217},{"name":"find_most_loaded_node","line":235},{"name":"find_least_loaded_node","line":253},{"name":"calculate_load_imbalance","line":271},{"name":"recommend_rerouting","line":296}],"imports":[{"name":"base::types","line":5}],"terms":["net","load","predictor","max","nodes","history","size","congestion","threshold","warning","prediction","window","create","metrics","get","bandwidth","usage","cpu","packet","rate","queue","depth","predicted","confidence","trend","time","horizon","calculate","moving","average","detect","predict","network","find","most","loaded","node","least","imbalance","recommend","rerouting"]},{"id":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/insertion_sort.t27","health":"ok","module":"TriInsertionSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","insertion"]},{"id":"638f8c5539801b533589411377798f5a62204a19dedb71d2853cde55d12b9ad4","sources":[{"repo":"ghashtag/t27","path":"specs/automation/wrapup-auto.t27","health":"ok","module":"automation"}],"description":"","symbols":[{"name":"DEFAULT_NOTEBOOK","line":9},{"name":"VENV_PATH","line":10},{"name":"WrapUpInput","line":16},{"name":"WrapUpResult","line":26},{"name":"input","line":37}],"imports":[{"name":"memory::notebooklm","line":7}],"terms":["automation","wrapup","auto","default","notebook","venv","path","wrap"]},{"id":"64142c17ce8d43e97ce64a2438f7deeb45a64f2a35afeb61b6a22b621e47a92c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/net.t27","health":"ok","module":"TriNet"}],"description":"t27/specs/","symbols":[{"name":"IpAddress","line":13},{"name":"SocketAddr","line":18},{"name":"parse_ip","line":28},{"name":"is_localhost","line":33},{"name":"is_valid_port","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","address","socket","addr","parse","localhost","valid","port"]},{"id":"64341742c373e64a2823f6647d0f3898e0a26f6ff9197e3fd3092436f5912cce","sources":[{"repo":"ghashtag/t27","path":"specs/api/sdk_contract.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"Hypervector","line":20},{"name":"init","line":24},{"name":"random","line":27},{"name":"randomLabeled","line":30},{"name":"fromRaw","line":33},{"name":"Codebook","line":94},{"name":"init","line":100},{"name":"encode","line":102},{"name":"decode","line":105},{"name":"decodeWithThreshold","line":108},{"name":"count","line":111},{"name":"AssociativeMemory","line":119},{"name":"init","line":124},{"name":"store","line":127},{"name":"retrieve","line":130},{"name":"contains","line":133},{"name":"clear","line":136},{"name":"count","line":139},{"name":"SequenceEncoder","line":147},{"name":"init","line":150},{"name":"encode","line":152},{"name":"probe","line":155},{"name":"findPosition","line":158}],"imports":[],"terms":["api","sdk","contract","hypervector","init","random","labeled","raw","codebook","encode","decode","threshold","count","associative","memory","store","retrieve","contains","clear","sequence","encoder","probe","find","position"]},{"id":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/codegen.t27","health":"warn","module":"zig_codegen"}],"description":"codegen.t27 -- Code Generator for Zig Generates Zig 0.15 code from t27 AST","symbols":[{"name":"CodegenOptions","line":8},{"name":"ZigCodegen","line":17},{"name":"new","line":25},{"name":"generate","line":36},{"name":"emit_header","line":67},{"name":"emit_imports","line":78},{"name":"emit_constants","line":87},{"name":"zig_name","line":94},{"name":"emit_data_section","line":109},{"name":"zig_name","line":119},{"name":"emit_code_section","line":158},{"name":"emit_labels","line":221},{"name":"emit_instructions","line":235},{"name":"emit_instruction","line":258},{"name":"emit_mov","line":275},{"name":"dst","line":281},{"name":"src","line":282},{"name":"dst_reg","line":284},{"name":"src_str","line":285},{"name":"emit_mul","line":296},{"name":"dst","line":302},{"name":"src1","line":303},{"name":"src2","line":304},{"name":"dst_reg","line":306},{"name":"src1_str","line":307},{"name":"src2_str","line":308},{"name":"emit_add","line":321},{"name":"dst","line":327},{"name":"src1","line":328},{"name":"src2","line":329},{"name":"dst_reg","line":331},{"name":"src1_str","line":332},{"name":"src2_str","line":333},{"name":"emit_jz","line":346},{"name":"test_reg","line":352},{"name":"target_label","line":353},{"name":"reg_str","line":355},{"name":"label_str","line":356},{"name":"emit_jnz","line":373},{"name":"test_reg","line":379},{"name":"target_label","line":380},{"name":"reg_str","line":382},{"name":"label_str","line":383},{"name":"emit_jmp","line":400},{"name":"target_label","line":406},{"name":"label_str","line":407},{"name":"emit_sub","line":416},{"name":"dst","line":422},{"name":"src1","line":423},{"name":"src2","line":424},{"name":"dst_reg","line":426},{"name":"src1_str","line":427},{"name":"src2_str","line":428},{"name":"emit_bind","line":443},{"name":"dst","line":449},{"name":"src1","line":450},{"name":"src2","line":451},{"name":"dst_reg","line":453},{"name":"src1_reg","line":454},{"name":"src2_reg","line":455},{"name":"emit_bundle","line":470},{"name":"dst","line":476},{"name":"src1","line":477},{"name":"src2","line":478},{"name":"dst_reg","line":480},{"name":"src1_reg","line":481},{"name":"src2_reg","line":482},{"name":"emit_halt","line":496},{"name":"emit_test_section","line":502},{"name":"emit_zig_test","line":517},{"name":"zig_name","line":518},{"name":"emit_invariant_section","line":567},{"name":"emit_zig_invariant","line":582},{"name":"zig_name","line":583},{"name":"emit_bench_section","line":622},{"name":"emit_zig_bench","line":637},{"name":"zig_name","line":638},{"name":"emit_spec_tests","line":691},{"name":"emit_spec_test_block","line":719},{"name":"zig_name","line":720},{"name":"emit_spec_invariant","line":773},{"name":"emit_spec_rule","line":794},{"name":"translate_expression","line":821},{"name":"generate_conformance","line":829},{"name":"get_reg_number","line":890},{"name":"operand_to_zig","line":898},{"name":"label_to_zig","line":915},{"name":"emit_opcode_name","line":923},{"name":"emit_type_for_value","line":940},{"name":"emit_int_value","line":951},{"name":"mangle_name","line":956},{"name":"mangle_test_name","line":977},{"name":"add_error","line":992},{"name":"emit","line":1001},{"name":"emit_line","line":1005},{"name":"emit_int","line":1018},{"name":"indent","line":1022},{"name":"dedent","line":1026},{"name":"StringBuilder","line":1034},{"name":"new","line":1039},{"name":"append","line":1047},{"name":"to_string","line":1055},{"name":"Program","line":1061},{"name":"ConstDef","line":1072},{"name":"DataSection","line":1077},{"name":"DataDecl","line":1081},{"name":"CodeSection","line":1087},{"name":"Instruction","line":1092},{"name":"Opcode","line":1099},{"name":"Operand","line":1112},{"name":"SpecDecl","line":1119},{"name":"TestBlock","line":1126},{"name":"Clause","line":1133},{"name":"AssertStmt","line":1138},{"name":"RuleDecl","line":1143},{"name":"TestSection","line":1148},{"name":"InvariantSection","line":1152},{"name":"BenchSection","line":1156},{"name":"TestCase","line":1160},{"name":"InvariantDecl","line":1167},{"name":"BenchDecl","line":1173},{"name":"CodegenError","line":1180},{"name":"int_to_str","line":1187},{"name":"output","line":1267},{"name":"output","line":1301},{"name":"output","line":1341},{"name":"output","line":1380},{"name":"output","line":1420},{"name":"result","line":1435},{"name":"result","line":1442}],"imports":[],"terms":["compiler","codegen","zig","options","generate","emit","header","imports","constants","data","section","labels","instructions","mov","dst","reg","str","mul","src1","src2","target","label","jnz","jmp","sub","bind","bundle","halt","invariant","bench","block","rule","translate","expression","conformance","get","operand","opcode","int","mangle","indent","dedent","builder","append","program","def","decl","clause","assert","stmt","case"]},{"id":"64578258046cf1d759471cbceaa5eda489ffa82165d3b0bc612265372ea316d0","sources":[{"repo":"ghashtag/t27","path":"specs/ar/restraint.t27","health":"ok","module":null}],"description":"spec: Restraint Bounded rationality and restraint mechanisms for neuro-symbolic reasoning","symbols":[{"name":"RestraintType","line":9},{"name":"RestraintConfig","line":19},{"name":"RestraintResult","line":26},{"name":"MAX_UNKNOWN_RATIO","line":34},{"name":"MIN_CONFIDENCE","line":37},{"name":"COMPLEXITY_PENALTY_PER_STEP","line":40},{"name":"default_config","line":43},{"name":"apply_restraint","line":52},{"name":"unknown_to_false","line":73},{"name":"bounded_uncertainty","line":92},{"name":"confidence_threshold","line":116},{"name":"temporal_decay","line":130},{"name":"complexity_penalty","line":154},{"name":"toxicity_block","line":176},{"name":"apply_to_list","line":195},{"name":"validate_config","line":207},{"name":"unknown_ratio","line":215},{"name":"exceeds_unknown_threshold","line":231}],"imports":[],"terms":["restraint","config","max","unknown","ratio","min","confidence","complexity","penalty","per","step","default","apply","bounded","uncertainty","threshold","temporal","decay","toxicity","block","list","validate","exceeds"]},{"id":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/linker.t27","health":"warn","module":"Linker"}],"description":"t27/specs/fpga/linker.t27 T27 Linker Specification Links assembled object files into executable images for ternary core Handles section merging, symbol resolution, address assignment, relocations Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"LinkSection","line":13},{"name":"link_text","line":21},{"name":"link_data","line":31},{"name":"link_bss","line":41},{"name":"section_end","line":51},{"name":"section_aligned","line":55},{"name":"LinkedSymbol","line":68},{"name":"linked_symbol","line":77},{"name":"is_global","line":88},{"name":"is_local","line":92},{"name":"LinkSegment","line":98},{"name":"text_segment","line":106},{"name":"data_segment","line":116},{"name":"LinkerConfig","line":128},{"name":"linker_config","line":137},{"name":"LinkResult","line":150},{"name":"link_ok","line":160},{"name":"link_fail","line":172},{"name":"total_image_size","line":186},{"name":"passed","line":190},{"name":"stack_top","line":194},{"name":"heap_start","line":198},{"name":"validate_config","line":204},{"name":"validate_symbol","line":212},{"name":"is_local_test","line":249}],"imports":[],"terms":["fpga","linker","link","section","text","data","bss","end","aligned","linked","global","local","segment","config","fail","total","image","size","passed","stack","top","heap","start","validate"]},{"id":"64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","sources":[{"repo":"ghashtag/t27","path":"specs/github/issues.t27","health":"ok","module":"github"}],"description":"specs/github/issues.t27","symbols":[{"name":"ISSUE_STATE_OPEN","line":4},{"name":"Issue","line":6},{"name":"issue_list","line":13},{"name":"issues","line":19}],"imports":[],"terms":["state","open","list"]},{"id":"6532bcb37b12d57aa03d22717557fa16e727b9c4e6389c3afdd829bc74a23ab0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_safety.t27","health":"ok","module":"TriComputeSafety"}],"description":"TRI-NET compute safety gate: the single no-double-pay invariant that composes the three independent guards the stack grew -- freshness (tri_a2a.is_fresh, anti-replay), finiteness (tri_compute_settle.is_finite_gf16, no inf/nan garbage), and settled-once (a request pays at most one time). A reward is minted ONLY when all three hold. This is the choke point that makes double-pay, replay-pay, and garbage-pay impossible in one place, rather than relying on each ring separately.","symbols":[{"name":"payable","line":12},{"name":"reward_gate","line":29},{"name":"payable_authentic","line":44},{"name":"reward_gate_authentic","line":52}],"imports":[{"name":"base::types","line":9}],"terms":["net","compute","safety","payable","reward","gate","authentic"]},{"id":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/self_healing.t27","health":"ok","module":"SelfHealing"}],"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","symbols":[{"name":"RECOVERY_COOLDOWN","line":7},{"name":"MAX_RECOVERY_ATTEMPTS","line":8},{"name":"RECOVERY_SUCCESS","line":9},{"name":"RECOVERY_FAILED","line":10},{"name":"create_recovery_state","line":13},{"name":"get_attempts","line":20},{"name":"get_last_attempt","line":24},{"name":"get_in_progress","line":28},{"name":"get_success_count","line":32},{"name":"can_recover","line":37},{"name":"start_recovery","line":55},{"name":"complete_recovery_success","line":62},{"name":"complete_recovery_failure","line":70},{"name":"reset_recovery","line":78},{"name":"is_recovery_failed","line":83},{"name":"create_network_state","line":88},{"name":"get_healthy_nodes","line":95},{"name":"get_total_nodes","line":99},{"name":"get_degraded_links","line":103},{"name":"get_total_links","line":107},{"name":"network_health_percent","line":112},{"name":"is_network_healthy","line":124},{"name":"is_network_degraded","line":129},{"name":"is_network_critical","line":135},{"name":"should_initiate_healing","line":140},{"name":"update_network_after_recovery","line":153}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","self","healing","recovery","cooldown","max","attempts","success","failed","create","state","get","attempt","progress","count","recover","start","complete","failure","reset","network","healthy","nodes","total","degraded","links","health","percent","critical","initiate"]},{"id":"65a1be346037fe16c5c3e1c488a0e7133d3ed70798908887efad7301a63a6229","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_single.t27","health":"ok","module":"LstmCell"}],"description":"t27/specs/","symbols":[{"name":"FORGET_BIAS_INIT","line":13},{"name":"LSTMConfig","line":19},{"name":"LSTMState","line":24},{"name":"LSTMWeights","line":29},{"name":"forward","line":49},{"name":"backward","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","lstm","single","cell","forget","bias","init","lstmconfig","lstmstate","lstmweights","forward","backward"]},{"id":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/anomaly_detector.t27","health":"warn","module":"anomaly_detector"}],"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","symbols":[{"name":"MAX_METRICS","line":7},{"name":"BASELINE_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"SEVERITY_HIGH","line":10},{"name":"SEVERITY_MEDIUM","line":11},{"name":"create_metric_reading","line":14},{"name":"get_metric_id","line":21},{"name":"get_metric_value","line":25},{"name":"get_timestamp","line":29},{"name":"get_confidence","line":33},{"name":"create_anomaly_report","line":38},{"name":"get_anomaly_metric_id","line":45},{"name":"get_severity","line":49},{"name":"get_anomaly_type","line":53},{"name":"get_anomaly_confidence","line":57},{"name":"TYPE_SPIKE","line":62},{"name":"TYPE_DROP","line":63},{"name":"TYPE_PATTERN","line":64},{"name":"TYPE_TREND","line":65},{"name":"calculate_baseline","line":68},{"name":"calculate_variance","line":88},{"name":"detect_spike","line":114},{"name":"detect_drop","line":133},{"name":"detect_pattern","line":152},{"name":"detect_trend","line":182},{"name":"calculate_severity","line":220},{"name":"detect_anomaly","line":238},{"name":"is_critical_anomaly","line":274},{"name":"get_anomaly_description","line":285},{"name":"correlate_metrics","line":302},{"name":"detect_coordinated_attack","line":343},{"name":"calculate_anomaly_confidence","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["net","anomaly","detector","max","metrics","baseline","window","threshold","severity","high","medium","create","metric","reading","get","timestamp","confidence","report","spike","drop","pattern","trend","calculate","variance","detect","critical","description","correlate","coordinated","attack"]},{"id":"65ce4c1696f3a7db3dbc95d4986c5a8f8ce7f516fa4d605fae6c20fe1622327c","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/superconductivity.t27","health":"ok","module":"TriSuperconductivity"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","superconductivity"]},{"id":"661937af30a71e6136f8c9fe690b7ed12eb6f9c17ba55767a80308624cddf419","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/ml_dtypes_crossval.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","dtypes","crossval"]},{"id":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_routing.t27","health":"ok","module":"MeshRouting"}],"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","symbols":[{"name":"DEFAULT_TTL","line":9},{"name":"MESH_NET_A","line":10},{"name":"MESH_NET_B","line":11},{"name":"MESH_NET_C","line":12},{"name":"MIN_NODE_ID","line":13},{"name":"MAX_NODE_ID","line":14},{"name":"mesh_ip","line":20},{"name":"is_mesh_subnet","line":26},{"name":"node_of_ip","line":40},{"name":"decrement_ttl","line":55},{"name":"is_ttl_expired","line":66},{"name":"choose_next_hop","line":75},{"name":"delivery_decision","line":131}],"imports":[{"name":"base::types","line":6}],"terms":["net","mesh","routing","default","ttl","min","node","max","subnet","decrement","expired","choose","hop","delivery","decision"]},{"id":"669f21eabeba9622b34f49e9a1ab625a25e9cd5cecdd13db587766154719b3bb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async.t27","health":"ok","module":"TriAsync"}],"description":"t27/specs/","symbols":[{"name":"Future","line":13},{"name":"Promise","line":18},{"name":"new_promise","line":28},{"name":"fulfill","line":33},{"name":"await","line":38},{"name":"map","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","async","future","promise","fulfill","await","map"]},{"id":"677da3e87cc72897a8bd881df8617b1346fb0c578ec5ef3e74c666f4faae713b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/filesystem.t27","health":"ok","module":"TriFilesystem"}],"description":"t27/specs/","symbols":[{"name":"PathError","line":13},{"name":"FileInfo","line":17},{"name":"join","line":30},{"name":"basename","line":35},{"name":"dirname","line":40},{"name":"ext","line":45},{"name":"has_ext","line":50},{"name":"is_absolute","line":55},{"name":"normalize","line":60}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["filesystem","path","info","join","basename","dirname","ext","absolute","normalize"]},{"id":"6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/auto_config.t27","health":"warn","module":"auto_config"}],"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_PARAMS","line":8},{"name":"CONFIG_VERSION","line":9},{"name":"AUTO_DISCOVERY_INTERVAL","line":10},{"name":"create_config_param","line":13},{"name":"get_param_id","line":20},{"name":"get_param_value","line":24},{"name":"get_param_scope","line":28},{"name":"get_param_status","line":32},{"name":"SCOPE_NODE","line":37},{"name":"SCOPE_LINK","line":38},{"name":"SCOPE_NETWORK","line":39},{"name":"SCOPE_GLOBAL","line":40},{"name":"STATUS_PENDING","line":43},{"name":"STATUS_APPLIED","line":44},{"name":"STATUS_FAILED","line":45},{"name":"STATUS_OVERRIDE","line":46},{"name":"PARAM_TX_POWER","line":49},{"name":"PARAM_CHANNEL","line":50},{"name":"PARAM_DATA_RATE","line":51},{"name":"PARAM_RETRY_LIMIT","line":52},{"name":"PARAM_HELLO_INTERVAL","line":53},{"name":"PARAM_ROUTE_TIMEOUT","line":54},{"name":"PARAM_QOS_ENABLED","line":55},{"name":"PARAM_SECURITY_LEVEL","line":56},{"name":"create_default_config","line":59},{"name":"get_config_value","line":76},{"name":"set_config_value","line":91},{"name":"discover_network_params","line":109},{"name":"apply_config","line":143},{"name":"apply_all_pending","line":164},{"name":"validate_config","line":183},{"name":"optimize_config","line":224},{"name":"sync_config","line":259},{"name":"rollback_config","line":297},{"name":"create_backup","line":325},{"name":"calculate_config_drift","line":338},{"name":"discover_neighbors","line":374},{"name":"assign_node_role","line":389}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","auto","config","max","nodes","params","discovery","interval","create","param","get","scope","status","node","link","network","global","applied","failed","override","power","channel","data","rate","retry","limit","hello","route","timeout","qos","enabled","security","level","default","set","discover","apply","validate","optimize","sync","rollback","backup","calculate","drift","neighbors","assign","role"]},{"id":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","sources":[{"repo":"ghashtag/t27","path":"specs/account/schema.t27","health":"ok","module":"Account"}],"description":"specs/account/schema.t27 Account Types Specification","symbols":[{"name":"AccountID","line":13},{"name":"OrgID","line":16},{"name":"AccessToken","line":19},{"name":"RefreshToken","line":22},{"name":"DeviceCode","line":25},{"name":"UserCode","line":28},{"name":"Info","line":35},{"name":"Org","line":43},{"name":"Login","line":49},{"name":"PollResult","line":63},{"name":"PollSuccess","line":73},{"name":"PollPending","line":78},{"name":"PollSlow","line":81},{"name":"PollExpired","line":84},{"name":"PollDenied","line":87},{"name":"PollError","line":90},{"name":"AccountRepoError","line":99},{"name":"AccountServiceError","line":105},{"name":"AccountError","line":111},{"name":"CLIENT_ID","line":120},{"name":"EAGER_REFRESH_THRESHOLD_MINUTES","line":121},{"name":"DEFAULT_POLL_INTERVAL_MS","line":122},{"name":"is_token_fresh","line":129}],"imports":[{"name":"base::types","line":6}],"terms":["account","schema","org","access","token","refresh","device","user","info","login","poll","success","slow","expired","denied","service","client","eager","threshold","minutes","default","interval","fresh"]},{"id":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/area_optimization.t27","health":"ok","module":"AreaOptimization"}],"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","symbols":[{"name":"OPT_NONE","line":8},{"name":"OPT_RESOURCE_SHARE","line":9},{"name":"OPT_BIT_WIDTH_REDUCE","line":10},{"name":"OPT_CONST_FOLD","line":11},{"name":"OPT_FIFO_TO_RAM","line":12},{"name":"estimate_complexity","line":15},{"name":"calculate_sharing_savings","line":21},{"name":"calculate_bitwidth_savings","line":29},{"name":"const_folding_applicable","line":37},{"name":"fifo_to_ram_applicable","line":43},{"name":"create_resource_type","line":49},{"name":"extract_resource_type","line":53},{"name":"extract_resource_amount","line":57},{"name":"create_optimization_result","line":62},{"name":"extract_strategy","line":68},{"name":"extract_original","line":72},{"name":"extract_optimized","line":76},{"name":"calculate_savings_percentage","line":81},{"name":"optimization_worthwhile","line":92},{"name":"analyze_bit_width","line":98}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","area","optimization","opt","resource","share","bit","width","reduce","fold","fifo","ram","estimate","complexity","calculate","sharing","savings","bitwidth","folding","applicable","create","extract","amount","strategy","original","optimized","percentage","worthwhile","analyze"]},{"id":"68bee859c3ffd508a841df8048fdde0932245af7a0dfe7c3596266cd24726dbe","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/hslm.t27","health":"warn","module":"hslm"}],"description":"","symbols":[],"imports":[],"terms":["fpga","hslm"]},{"id":"6926ef2f5ef68b7a540eae2c7bffc4efd4928bcf00686806f549664b92b8afd7","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/benchmarks.t27","health":"ok","module":"PipelineBenchmarks"}],"description":"t27/specs/pipeline/benchmarks.t27 Pipeline Performance Benchmark Specification Ring 028 — tri bench run performance targets 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TARGET_PARSE_NS","line":10},{"name":"TARGET_SEAL_NS","line":11},{"name":"TARGET_GEN_NS","line":12},{"name":"TARGET_TEST_NS","line":13},{"name":"TARGET_FULL_PIPELINE_NS","line":14},{"name":"NS_PER_US","line":15},{"name":"NS_PER_MS","line":16},{"name":"ns_to_us","line":19},{"name":"ns_to_ms","line":24},{"name":"within_target","line":29},{"name":"latency_percentile","line":34},{"name":"throughput_ops_per_sec","line":40}],"imports":[{"name":"base::types","line":8}],"terms":["pipeline","benchmarks","target","parse","seal","gen","full","per","within","latency","percentile","throughput","ops","sec"]},{"id":"69729efabc127aefce11e671dcb1abc5029ecd942d0670615a9ab41e73b76fb3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/e2e_demo.t27","health":"ok","module":"E2eDemo"}],"description":"t27/specs/fpga/e2e_demo.t27 T27 End-to-End Demo Specification Exercises the full toolchain: assembler -> ternary core -> GF16 -> VCD trace Validates the complete FPGA pipeline from spec to hardware simulation Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"DemoKernel","line":13},{"name":"hello_kernel","line":21},{"name":"gf16_mac_kernel","line":31},{"name":"PipeResult","line":43},{"name":"pipe_result_ok","line":51},{"name":"pipe_result_error","line":61},{"name":"DemoConfig","line":73},{"name":"demo_config","line":81},{"name":"ipc","line":93},{"name":"cpi","line":100},{"name":"gf16_throughput","line":107},{"name":"sim_time_us","line":114},{"name":"kernel_size_bytes","line":121},{"name":"passed","line":125},{"name":"validate_kernel","line":131},{"name":"validate_config","line":142}],"imports":[],"terms":["fpga","e2e","demo","kernel","hello","gf16","mac","pipe","config","ipc","cpi","throughput","sim","time","size","bytes","passed","validate"]},{"id":"69dcd472eba111cccdfec32dcdd34044c10f567927a9c6f925ce33e962b9cd6e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/tim_sort.t27","health":"ok","module":"TriTimSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","tim"]},{"id":"69dfde195e9294cbe1a7dec908d04fb3c8f2de72498d4df8f400f48eb6b2289b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/simulator_tb.t27","health":"warn","module":"Simulator_Testbench"}],"description":"t27/specs/fpga/testbench/simulator_tb.t27 Simulator Testbench Tests simulation engine: cycle stepping, event scheduling, and waveform output","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_CYCLES","line":11},{"name":"EVENT_QUEUE_DEPTH","line":12},{"name":"tick","line":24},{"name":"reset","line":30},{"name":"run_cycles","line":39},{"name":"schedule_event","line":49}],"imports":[{"name":"fpga::simulator::Simulator","line":8}],"terms":["fpga","testbench","simulator","clk","period","max","cycles","event","queue","depth","tick","reset","schedule"]},{"id":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cross_layer_optimizer.t27","health":"warn","module":"CrossLayerOptimizer"}],"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","symbols":[{"name":"MAX_LAYERS","line":7},{"name":"LAYER_PHY","line":8},{"name":"LAYER_MAC","line":9},{"name":"LAYER_NETWORK","line":10},{"name":"LAYER_TRANSPORT","line":11},{"name":"MODE_CONSERVATIVE","line":13},{"name":"MODE_MODERATE","line":14},{"name":"MODE_AGGRESSIVE","line":15},{"name":"create_layer_params","line":18},{"name":"get_power","line":25},{"name":"get_rate","line":29},{"name":"get_retries","line":33},{"name":"get_window","line":37},{"name":"create_cross_layer_state","line":42},{"name":"get_mode","line":49},{"name":"get_update_counter","line":53},{"name":"get_last_sync","line":57},{"name":"get_optimization_target","line":61},{"name":"create_layer_array","line":68},{"name":"set_slot4","line":71},{"name":"get_layer_params","line":85},{"name":"update_layer_params","line":93},{"name":"calculate_joint_metric","line":98},{"name":"coordinate_power","line":109},{"name":"optimize_for_target","line":135},{"name":"needs_synchronization","line":162},{"name":"increment_updates","line":169},{"name":"switch_mode","line":182}],"imports":[{"name":"base::types","line":5}],"terms":["net","cross","layer","optimizer","max","layers","phy","mac","network","transport","mode","conservative","moderate","aggressive","create","params","get","power","rate","retries","window","state","counter","sync","optimization","target","array","set","slot4","calculate","joint","metric","coordinate","optimize","synchronization","increment","updates","switch"]},{"id":"6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_coding.t27","health":"ok","module":"NetworkCoding"}],"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"CODING_WINDOW","line":8},{"name":"MAX_GENERATION_SIZE","line":9},{"name":"create_packet","line":12},{"name":"get_packet_src","line":19},{"name":"get_packet_dst","line":23},{"name":"get_packet_payload","line":27},{"name":"get_packet_seq","line":31},{"name":"create_coded_packet","line":36},{"name":"get_coeff_vector","line":43},{"name":"get_coded_payload","line":47},{"name":"get_generation","line":51},{"name":"get_coded_seq","line":55},{"name":"xor_packets","line":60},{"name":"create_xoded_native","line":65},{"name":"decode_xoded_packet","line":72},{"name":"same_generation","line":86},{"name":"get_generation_id","line":97},{"name":"is_coding_beneficial","line":103},{"name":"linear_code_packets","line":109},{"name":"create_coded_generation","line":128},{"name":"get_coded_packet_gen","line":132},{"name":"count_generation_packets","line":140},{"name":"is_generation_decodable","line":150},{"name":"calculate_coding_gain","line":160}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","coding","max","packets","window","generation","size","create","packet","get","dst","payload","seq","coded","coeff","vector","xor","xoded","native","decode","beneficial","linear","gen","count","decodable","calculate","gain"]},{"id":"6bcf3942f1f175d1c3708484d4cb216a6e6ba7492a6ebf7e6320887c7d13a42b","sources":[{"repo":"ghashtag/t27","path":"specs/base/ring_32.t27","health":"ok","module":"base-ring-32"}],"description":"base/ring_32.t27 — Ring 32 Definition","symbols":[{"name":"RING_NUMBER","line":9},{"name":"RING_CAPABILITY","line":10},{"name":"RING_32_SPECS","line":11}],"imports":[{"name":"math::sacred_physics","line":7}],"terms":["base","ring","capability"]},{"id":"6bdb4f8974ba389d990a11b694eb15ced344591f6c3de3d24bbf23f85ea0c964","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/sparse_skip.t27","health":"warn","module":"sacred-sparse_skip"}],"description":"sparse_skip.t27 — Sacred Opcode 0xE1: Sparse Skip Operation Hardware acceleration for sparse tensor operations with zero-skipping","symbols":[{"name":"OP_SPARSE_SKIP","line":12},{"name":"VECTOR_SIZE","line":14},{"name":"ZERO_THRESHOLD","line":15},{"name":"SPARSE_TOLERANCE","line":16},{"name":"SKIP_NONE","line":18},{"name":"SKIP_ZERO","line":19},{"name":"SKIP_THRESHOLD","line":20},{"name":"SKIP_ALL","line":21},{"name":"SkipMode","line":27},{"name":"SparsePattern","line":34},{"name":"SkipResult","line":41},{"name":"SparseVector","line":48},{"name":"is_zero","line":60},{"name":"is_below_threshold","line":66},{"name":"count_zeros","line":72},{"name":"count_non_zeros","line":84},{"name":"analyze_sparsity","line":100},{"name":"zeros","line":101},{"name":"non_zeros","line":102},{"name":"sparsity_ratio","line":103},{"name":"is_sparse","line":108},{"name":"should_skip_sparsity","line":120},{"name":"skip_zeros","line":130},{"name":"skip_threshold","line":152},{"name":"skip_all","line":174},{"name":"skip_none","line":185},{"name":"create_sparse_vector","line":205},{"name":"get_non_zero_elements","line":226},{"name":"encode_sparse_skip","line":252},{"name":"op","line":254},{"name":"mode_field","line":255},{"name":"addr_field","line":256},{"name":"decode_sparse_skip","line":262},{"name":"mode","line":263},{"name":"vector_addr","line":264}],"imports":[],"terms":["chips","euler","fpga","sparse","skip","sacred","vector","size","zero","threshold","tolerance","mode","pattern","below","count","zeros","non","analyze","sparsity","ratio","create","get","elements","encode","field","addr","decode"]},{"id":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/core.t27","health":"warn","module":"core"}],"description":"t27 Math/Physics Test Framework - Core Ring 050: Test framework core per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Provides fundamental testing constructs for scientific computing","symbols":[{"name":"Verdict","line":12},{"name":"ToleranceTier","line":20},{"name":"EngineeringStatus","line":31},{"name":"TestResult","line":40},{"name":"GatePipeline","line":55},{"name":"run_sequential","line":66},{"name":"verdict","line":75},{"name":"for_all","line":83},{"name":"metamorphic","line":115},{"name":"differential","line":140},{"name":"TapReporter","line":174},{"name":"new","line":179},{"name":"generate_tap","line":183},{"name":"JsonReporter","line":209},{"name":"new","line":214},{"name":"generate_json","line":218},{"name":"run_test_suite","line":258},{"name":"test_gf4_exhaustive","line":285},{"name":"gf16_encode_f32","line":291},{"name":"gf16_decode_to_f32","line":296}],"imports":[],"terms":["framework","verdict","tolerance","tier","engineering","status","gate","pipeline","sequential","metamorphic","differential","tap","reporter","generate","json","suite","gf4","exhaustive","gf16","encode","f32","decode"]},{"id":"6c727d13e4889735bc80ade95073f07d6efad2c15bf20908645292b10c6e862a","sources":[{"repo":"ghashtag/t27","path":"specs/physics/sacred_verification.t27","health":"ok","module":"SacredVerification"}],"description":"t27/specs/physics/sacred_verification.t27 KEPLER->NEWTON Sacred Formula Verification Spec Status: Final v1.0 Date: 2026-04-06 This spec defines the verification framework for [planned] 152 Sacred Formula equations (N implemented today). It provides a structured approach to testing which","symbols":[{"name":"FormulaCategory","line":32},{"name":"FormulaDefinition","line":39},{"name":"VerificationStatus","line":54},{"name":"VerificationResult","line":62},{"name":"phi_identity_results","line":76},{"name":"chern_simons_formulas","line":140},{"name":"lqg_gamma_formulas","line":204},{"name":"e8_formulas","line":257},{"name":"physical_constants_formulas","line":310},{"name":"G_RAW","line":375},{"name":"G_SCALE","line":376},{"name":"OMEGA_LAMBDA_RAW","line":379},{"name":"OMEGA_COARSE_SCALE","line":380},{"name":"verify_formula","line":386},{"name":"abs_error","line":387},{"name":"abs_err","line":388},{"name":"rel_error","line":389},{"name":"scale_factor_needed","line":394},{"name":"is_scale_issue","line":395},{"name":"VerificationReport","line":415},{"name":"generate_verification_report","line":425},{"name":"result","line":436}],"imports":[{"name":"math::constants","line":19},{"name":"math::sacred_physics","line":20}],"terms":["physics","sacred","verification","formula","category","definition","status","phi","identity","results","chern","simons","formulas","lqg","gamma","physical","constants","raw","scale","omega","lambda","coarse","verify","abs","err","rel","factor","needed","report","generate"]},{"id":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_simulator.t27","health":"warn","module":"network_simulator"}],"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EVENTS","line":8},{"name":"MAX_PACKETS","line":9},{"name":"SIMULATION_TICK_MS","line":10},{"name":"create_sim_event","line":13},{"name":"get_event_id","line":20},{"name":"get_event_timestamp","line":24},{"name":"get_event_type","line":28},{"name":"get_event_node_id","line":32},{"name":"EVENT_PACKET_SEND","line":37},{"name":"EVENT_PACKET_RECV","line":38},{"name":"EVENT_NODE_FAILURE","line":39},{"name":"EVENT_LINK_FAILURE","line":40},{"name":"EVENT_TIMER_EXPIRE","line":41},{"name":"EVENT_STATE_CHANGE","line":42},{"name":"create_node_state","line":45},{"name":"get_node_id","line":52},{"name":"get_node_status","line":56},{"name":"get_node_energy","line":60},{"name":"get_node_position","line":64},{"name":"NODE_ACTIVE","line":69},{"name":"NODE_INACTIVE","line":70},{"name":"NODE_FAILED","line":71},{"name":"NODE_SLEEPING","line":72},{"name":"update_node_status","line":75},{"name":"update_node_energy","line":84},{"name":"create_link_state","line":107},{"name":"get_link_source","line":114},{"name":"get_link_dest","line":118},{"name":"get_link_quality","line":122},{"name":"get_link_latency","line":126},{"name":"update_link_quality","line":131},{"name":"is_link_operational","line":140},{"name":"create_packet","line":151},{"name":"get_packet_id","line":159},{"name":"get_packet_source","line":163},{"name":"get_packet_dest","line":167},{"name":"get_packet_size","line":171},{"name":"get_packet_sequence","line":175},{"name":"calculate_transmission_time","line":180},{"name":"create_sim_state","line":191},{"name":"get_sim_time","line":197},{"name":"get_sim_event_count","line":201},{"name":"get_sim_node_count","line":205},{"name":"advance_simulation","line":210},{"name":"process_event","line":221},{"name":"create_sim_stats","line":248},{"name":"get_packets_sent","line":255},{"name":"get_packets_recv","line":259},{"name":"get_packets_dropped","line":263},{"name":"get_total_latency","line":267},{"name":"calculate_delivery_ratio","line":272},{"name":"calculate_average_latency","line":284},{"name":"create_topology","line":296},{"name":"inject_fault","line":308},{"name":"run_simulation_step","line":322},{"name":"generate_simulation_report","line":346}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","simulator","max","nodes","events","packets","simulation","tick","create","sim","event","get","timestamp","node","packet","send","recv","failure","link","timer","expire","state","status","energy","position","active","inactive","failed","sleeping","dest","quality","latency","operational","size","sequence","calculate","transmission","time","count","advance","process","stats","sent","dropped","total","delivery","ratio","average","topology","inject","fault","step","generate","report"]},{"id":"6f56957ddaaf4b356a9d67840a7633fb648da73c30f1d4c53c7c5173dfa925e8","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/ops.t27","health":"warn","module":null}],"description":"ops.t27 — Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","symbols":[],"imports":[],"terms":["fpga","base","ops"]},{"id":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/axi4.t27","health":"ok","module":"Axi4"}],"description":"t27/specs/fpga/axi4.t27 AXI4-Lite and AXI4-Full Bus Interface Specification for Trinity T27 FPGA HIR Defines bus port groups for AW/AR/W/R/B channels Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"AxiKind","line":12},{"name":"MAX_BUS_PORTS","line":19},{"name":"AXI_ADDR_WIDTH","line":20},{"name":"AXI_DATA_WIDTH","line":21},{"name":"AXI_STRB_WIDTH","line":22},{"name":"AXI_ID_WIDTH","line":23},{"name":"AXI_LEN_WIDTH","line":24},{"name":"AXI_SIZE_WIDTH","line":25},{"name":"AXI_BURST_WIDTH","line":26},{"name":"AXI_RESP_WIDTH","line":27},{"name":"AXI_CACHE_WIDTH","line":28},{"name":"AXI_PROT_WIDTH","line":29},{"name":"AXI_QOS_WIDTH","line":30},{"name":"AXI_REGION_WIDTH","line":31},{"name":"AXI_USER_WIDTH","line":32},{"name":"AxiBusConfig","line":36},{"name":"BusPort","line":52},{"name":"CH_AW","line":60},{"name":"CH_AR","line":61},{"name":"CH_W","line":62},{"name":"CH_R","line":63},{"name":"CH_B","line":64},{"name":"axi4_lite_slave","line":68},{"name":"axi4_lite_master","line":84},{"name":"axi4_full_slave","line":100},{"name":"axi4_full_master","line":116},{"name":"is_lite","line":134},{"name":"is_full","line":138},{"name":"strb_width","line":142},{"name":"is_master","line":146},{"name":"slave_port_count","line":152},{"name":"total_bus_bits","line":227},{"name":"validate_axi","line":261}],"imports":[],"terms":["fpga","axi4","axi","kind","max","bus","ports","addr","width","data","strb","len","size","burst","resp","cache","prot","qos","region","user","config","port","lite","slave","master","full","count","total","bits","validate"]},{"id":"6ffa742ec615265d04536053c181c131d6a2f56c37c556c564f804bc80a31798","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow.t27","health":"ok","module":"Workflow"}],"description":"t27/specs/","symbols":[{"name":"WorkflowStep","line":13},{"name":"Workflow","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","workflow","step"]},{"id":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_routing.t27","health":"warn","module":"AdaptiveRouting"}],"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","symbols":[{"name":"MAX_PATHS","line":7},{"name":"METRIC_LATENCY","line":8},{"name":"METRIC_HOPS","line":9},{"name":"METRIC_BANDWIDTH","line":10},{"name":"UPDATE_INTERVAL","line":11},{"name":"create_path_metrics","line":14},{"name":"get_latency","line":21},{"name":"get_hops","line":25},{"name":"get_bandwidth","line":29},{"name":"get_load","line":33},{"name":"create_selection_state","line":38},{"name":"get_primary_path","line":45},{"name":"get_backup_path","line":49},{"name":"get_metric_type","line":53},{"name":"get_last_update","line":57},{"name":"create_path_metrics_array","line":64},{"name":"get_path_metrics","line":68},{"name":"calculate_score","line":76},{"name":"find_best_path","line":96},{"name":"needs_update","line":124},{"name":"update_selection","line":131},{"name":"change_metric_type","line":137},{"name":"is_path_congested","line":145},{"name":"find_least_congested","line":150}],"imports":[{"name":"base::types","line":5}],"terms":["net","adaptive","routing","max","paths","metric","latency","hops","bandwidth","interval","create","path","metrics","get","load","selection","state","primary","backup","array","calculate","score","find","best","congested","least"]},{"id":"703eb5d6500fef5c34aaecbea8ab0b1c2010aa533f0d9a968640472d626928de","sources":[{"repo":"ghashtag/t27","path":"specs/shell/environment.t27","health":"ok","module":"ShellEnvironment"}],"description":"specs/shell/environment.t27 Shell Environment Operations","symbols":[{"name":"get","line":14},{"name":"set","line":19},{"name":"unset","line":24},{"name":"list","line":29},{"name":"expand","line":34},{"name":"PATH","line":43},{"name":"get_path","line":46},{"name":"set_path","line":51},{"name":"path_append","line":56},{"name":"path_remove","line":61},{"name":"path_list","line":66},{"name":"path_which","line":71},{"name":"detect","line":80},{"name":"find","line":85},{"name":"select","line":90},{"name":"fallback","line":95},{"name":"HOME","line":104},{"name":"get_home","line":107},{"name":"USER","line":112},{"name":"get_user","line":115},{"name":"platform","line":124},{"name":"is_windows","line":129},{"name":"is_darwin","line":134},{"name":"is_linux","line":139}],"imports":[{"name":"base::types","line":6},{"name":"shell::schema","line":7}],"terms":["shell","environment","get","set","unset","list","expand","path","append","remove","detect","find","select","fallback","home","user","platform","windows","darwin","linux"]},{"id":"703f02d41e57b24b69b0cd6317b335cd2078cb7d3591741ae804803d84a50e0b","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/python_api.t27","health":"warn","module":"TrinityMemoryPythonAPI"}],"description":"Native entry points for Python FFI representation adapters. No Python-domain fallbacks; caller supplies every buffer and explicit bound.","symbols":[{"name":"tm_api_validate_trits","line":5},{"name":"tm_api_tmem_count","line":13},{"name":"tm_api_server_host","line":19},{"name":"tm_api_tmem_metadata","line":22},{"name":"tm_api_classify","line":50},{"name":"tm_api_timeout","line":57}],"imports":[],"terms":["dmitrii","memory","python","api","validate","trits","tmem","count","host","metadata","classify","timeout"]},{"id":"7051f62a04ddbdbdb0160cab4dbcf39e708ff65bb88b06479ae1479d39a0a4c0","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_conformance_compare_tb.t27","health":"warn","module":"VcdConformanceCompare_Testbench"}],"description":"t27/specs/fpga/testbench/vcd_conformance_compare_tb.t27 VCD Conformance Compare Testbench Tests the conformance comparison engine: batch compare, masking, value extraction","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_COMPARES","line":11},{"name":"tick","line":23},{"name":"reset","line":28},{"name":"run_compare","line":39}],"imports":[{"name":"fpga::vcd_conformance_compare::VcdConformanceCompare","line":8}],"terms":["fpga","testbench","vcd","conformance","compare","clk","period","max","compares","tick","reset"]},{"id":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_bfs.t27","health":"ok","module":"TriGraphBfs"}],"description":"t27/specs/","symbols":[{"name":"Graph","line":13},{"name":"BFSResult","line":18},{"name":"init","line":29},{"name":"add_edge","line":34},{"name":"traverse","line":39},{"name":"deinit","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","bfs","bfsresult","init","edge","traverse","deinit"]},{"id":"70bcc025a81318ef01a6aa390f152b48330c5ed922a4763664c2ecc503a31c8b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/matrix.t27","health":"ok","module":"TriMatrix"}],"description":"t27/specs/","symbols":[{"name":"Matrix","line":13},{"name":"init","line":25},{"name":"get","line":30},{"name":"set","line":35},{"name":"multiply","line":40},{"name":"transpose","line":45},{"name":"identity","line":50},{"name":"deinit","line":55}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","matrix","init","get","set","multiply","transpose","identity","deinit"]},{"id":"70caa43e010103f43db3418afc193c98c460dd43e094a61120c633edea231391","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_clip_loss.t27","health":"ok","module":"PpoClipLoss"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_CLIP_EPSILON","line":13},{"name":"DEFAULT_ENTROPY_COEF","line":14},{"name":"PPOClipConfig","line":20},{"name":"PPOBatch","line":26},{"name":"compute_ratio","line":40},{"name":"clipped_surrogate","line":45},{"name":"policy_loss","line":50},{"name":"entropy_loss","line":55},{"name":"value_loss","line":60},{"name":"total_loss","line":65}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["ppo","clip","loss","default","epsilon","entropy","coef","ppoclip","config","ppobatch","compute","ratio","clipped","surrogate","policy","total"]},{"id":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","sources":[{"repo":"ghashtag/t27","path":"specs/jit/jit.t27","health":"ok","module":"jit"}],"description":"t27/specs/jit/jit.t27 Trinity JIT Compiler Compiles VSA operations to native machine code 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q JIT (Just-In-Time) compiler for VSA operations: - Compiles high-level VSA operations to native x86-64 machine code","symbols":[{"name":"PAGE_SIZE","line":31},{"name":"MAX_CODE_SIZE","line":34},{"name":"DEFAULT_DIMENSION","line":37},{"name":"MAX_DIMENSION","line":40},{"name":"JitVsaFn","line":48},{"name":"JitSimilarityFn","line":52},{"name":"JitResult","line":55},{"name":"JitCompiler","line":61},{"name":"Self","line":69},{"name":"init","line":72},{"name":"reset","line":81},{"name":"emit","line":90},{"name":"emit_slice","line":100},{"name":"emit_imm32","line":114},{"name":"bytes","line":115},{"name":"emit_imm64","line":120},{"name":"bytes","line":121},{"name":"push_rbp","line":130},{"name":"pop_rbp","line":135},{"name":"mov_rbp_rsp","line":140},{"name":"mov_rsp_rbp","line":145},{"name":"ret","line":150},{"name":"mov_rax_imm64","line":155},{"name":"call_rax","line":163},{"name":"xor_eax_eax","line":168},{"name":"inc_rbx","line":173},{"name":"compile_bind","line":184},{"name":"loop_start","line":207},{"name":"jge_offset","line":215},{"name":"loop_back_offset","line":235},{"name":"loop_end","line":239},{"name":"jge_rel","line":240},{"name":"jge_bytes","line":243},{"name":"compile_bundle","line":266},{"name":"loop_start","line":286},{"name":"jge_offset","line":294},{"name":"loop_back_offset","line":326},{"name":"loop_end","line":330},{"name":"jge_rel","line":331},{"name":"jge_bytes","line":333},{"name":"compile_dot_product","line":355},{"name":"loop_start","line":379},{"name":"jge_offset","line":387},{"name":"loop_back_offset","line":410},{"name":"loop_end","line":414},{"name":"jge_rel","line":415},{"name":"jge_bytes","line":417},{"name":"code_size","line":446},{"name":"code_ptr","line":451},{"name":"JitCache","line":462},{"name":"Self","line":476},{"name":"init","line":479},{"name":"reset","line":491},{"name":"get_bind","line":497},{"name":"get_bundle","line":517},{"name":"jit_bind","line":533},{"name":"func","line":534},{"name":"jit_bundle","line":545},{"name":"func","line":546},{"name":"compiler","line":561},{"name":"result","line":577},{"name":"bytes","line":586},{"name":"result","line":587},{"name":"result","line":595},{"name":"result","line":603},{"name":"result","line":628},{"name":"result","line":636},{"name":"result","line":644},{"name":"cache","line":662},{"name":"result","line":678},{"name":"result","line":688},{"name":"result","line":699},{"name":"compiler","line":712},{"name":"compiler","line":718},{"name":"cache","line":724},{"name":"bytes","line":780},{"name":"before","line":781},{"name":"after","line":783}],"imports":[{"name":"numeric::gf16","line":24}],"terms":["jit","page","size","max","default","dimension","vsa","similarity","compiler","self","init","reset","emit","slice","imm32","bytes","imm64","push","rbp","pop","mov","rsp","ret","rax","call","xor","eax","inc","rbx","compile","bind","loop","start","jge","offset","back","end","rel","bundle","dot","product","ptr","cache","get","func"]},{"id":"7156843614c320375957c8e17cb3af8e70ba2fa9a8d6e10ebd961b6a91b39ae6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/crypto.t27","health":"ok","module":"TriCrypto"}],"description":"t27/specs/","symbols":[{"name":"KeyPair","line":13},{"name":"generate_key_pair","line":23},{"name":"sha256","line":28},{"name":"hmac","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","key","pair","generate","sha256","hmac"]},{"id":"721567e5cac0cb8064c09e022bbb3b73e87d5d512576283e9a837e0859e0707f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/mse_loss.t27","health":"ok","module":"MseLoss"}],"description":"t27/specs/","symbols":[{"name":"MSELossConfig","line":13},{"name":"forward","line":22}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","mse","mseloss","config","forward"]},{"id":"72501df79dc2adb19c9b4c5515c42792f2dbdcb6ade527167238214ebc04ca3a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitmap.t27","health":"ok","module":"TriBitmap"}],"description":"t27/specs/","symbols":[{"name":"Bitmap","line":13},{"name":"init","line":23},{"name":"get","line":28},{"name":"set","line":33},{"name":"clear","line":38},{"name":"flip","line":43},{"name":"set_all","line":48},{"name":"clear_all","line":53},{"name":"count","line":58},{"name":"find_first","line":63},{"name":"find_last","line":68}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","bitmap","init","get","set","clear","flip","count","find"]},{"id":"725bb58e6c2423aa603f15fc52aeb856be9f60a4206293a938966cf11aa9814f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/stack.t27","health":"ok","module":"TriStack"}],"description":"t27/specs/","symbols":[{"name":"Stack","line":13},{"name":"empty","line":22},{"name":"push","line":27},{"name":"pop","line":32},{"name":"peek","line":37},{"name":"is_empty","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","stack","empty","push","pop","peek"]},{"id":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","sources":[{"repo":"ghashtag/t27","path":"specs/config/migrate.t27","health":"warn","module":"config-migrate"}],"description":"config/migrate.t27 — Config Migration Specification Version detection, upgrade, compatibility handling","symbols":[{"name":"MIGRATION_VERSION","line":19},{"name":"MIN_SUPPORTED_VERSION","line":22},{"name":"MAX_MIGRATION_STEPS","line":25},{"name":"MIGRATION_TIMEOUT_SEC","line":28},{"name":"VERSION_KEY","line":31},{"name":"BACKUP_SUFFIX","line":34},{"name":"MigrationResultType","line":37},{"name":"MigrationAction","line":45},{"name":"MigrationSeverity","line":55},{"name":"MigrationStep","line":67},{"name":"MigrationRule","line":78},{"name":"MigrationResult","line":86},{"name":"MigrationError","line":96},{"name":"VersionInfo","line":104},{"name":"MigrationContext","line":111},{"name":"detect_version","line":123},{"name":"is_version_supported","line":129},{"name":"needs_migration","line":134},{"name":"step_create","line":139},{"name":"step_with_description","line":152},{"name":"result_success","line":165},{"name":"result_failure","line":177},{"name":"error_create","line":189},{"name":"error_info","line":199},{"name":"error_warning","line":204},{"name":"migrate","line":209},{"name":"current_version","line":210},{"name":"target_version","line":211},{"name":"step","line":228},{"name":"apply_rule","line":239},{"name":"backup_path_create","line":252},{"name":"backup_verify","line":257},{"name":"context_default","line":263},{"name":"context_dry_run","line":273},{"name":"base","line":274},{"name":"context_force","line":284},{"name":"base","line":285},{"name":"context_verbose","line":295},{"name":"base","line":296},{"name":"append_steps","line":306},{"name":"append_steps_slice","line":316},{"name":"concat_steps","line":323},{"name":"concat_steps_string","line":333},{"name":"append_byte_steps","line":342},{"name":"append_errors","line":349},{"name":"append_errors_slice","line":359},{"name":"concat_errors","line":366},{"name":"concat_errors_string","line":376},{"name":"append_byte_errors","line":385},{"name":"version","line":396},{"name":"step","line":413},{"name":"base","line":418},{"name":"step","line":419},{"name":"steps","line":424},{"name":"result","line":425},{"name":"errors","line":430},{"name":"result","line":431},{"name":"error","line":436},{"name":"error","line":441},{"name":"error","line":446},{"name":"path","line":451},{"name":"context","line":456},{"name":"context","line":461},{"name":"context","line":466},{"name":"config","line":612}],"imports":[{"name":"std","line":12}],"terms":["config","migrate","migration","min","supported","max","steps","timeout","sec","key","backup","suffix","action","severity","step","rule","info","detect","create","description","success","failure","warning","target","apply","path","verify","default","dry","base","force","verbose","append","slice","concat","byte"]},{"id":"728844f72e63135d00838501707b599e7543c679da8b990138a0d194717d00ac","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack.t27","health":"warn","module":"TrinityMemoryTensorPack"}],"description":"Native TensorPack v1 framing and caller-supplied descriptor validation. This is NOT a JSON parser or a full TensorPack decoder. In particular, this module cannot establish that descriptors equal the JSON metadata in a file. Include generated codecs.h, container.h, then tensorpack.h. All nonempty pointer ranges must be valid and output records must not alias input data.","symbols":[{"name":"TM_TP_ERR_DESCRIPTOR","line":7},{"name":"TM_TP_ERR_TEXT","line":8},{"name":"TM_TP_ERR_SHAPE","line":9},{"name":"TM_TP_ERR_SCALE","line":10},{"name":"TM_TP_ERR_AXES","line":11},{"name":"TM_TP_ERR_OFFSET","line":12},{"name":"TMTPText","line":14},{"name":"TMTensorDescriptor","line":15},{"name":"TMTPHeader","line":29},{"name":"TMTPValidation","line":36},{"name":"tm_tp_utf8","line":45},{"name":"tm_tp_text_equal","line":74},{"name":"tm_tp_validate_header","line":81},{"name":"tm_tp_descriptor_count","line":106},{"name":"tm_tp_validate_tmem","line":154},{"name":"tm_tp_validate_descriptors","line":198}],"imports":[],"terms":["dmitrii","memory","tensorpack","tensor","pack","err","descriptor","text","shape","scale","axes","offset","tmtptext","tmtensor","tmtpheader","tmtpvalidation","utf8","equal","validate","header","count","tmem","descriptors"]},{"id":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/sacred_physics.t27","health":"ok","module":"SacredPhysics"}],"description":"t27/specs/math/sacred_physics.t27 Strand I — Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","symbols":[{"name":"PHI","line":11},{"name":"PHI_INV","line":12},{"name":"PHI_SQ","line":13},{"name":"PHI_INV_SQ","line":14},{"name":"TRINITY","line":17},{"name":"GAMMA_LQG","line":20},{"name":"C_THRESHOLD","line":23},{"name":"T_PRESENT_SEC","line":26},{"name":"T_PRESENT_MS","line":27},{"name":"neural_gamma_center","line":30},{"name":"phi_cubed","line":31},{"name":"sacred_gravity","line":40},{"name":"pi_sq","line":41},{"name":"pi_cub","line":42},{"name":"g2","line":43},{"name":"sacred_dark_energy","line":48},{"name":"gamma4","line":49},{"name":"gamma8","line":50},{"name":"pi2","line":51},{"name":"pi4","line":52},{"name":"MAX_REL_ERROR_G","line":61},{"name":"MAX_REL_ERROR_OMEGA","line":62},{"name":"MAX_ABS_ERROR_TRINITY","line":63},{"name":"SacredPhysicsReport","line":65},{"name":"verify_sacred_physics","line":86},{"name":"PI","line":87},{"name":"trinity","line":88},{"name":"trinity_ok","line":89},{"name":"gamma_val","line":91},{"name":"c_thr","line":92},{"name":"t_ms","line":93},{"name":"g_pred","line":95},{"name":"g_meas","line":96},{"name":"g_rel","line":97},{"name":"g_ok","line":98},{"name":"omega_pred","line":100},{"name":"omega_meas","line":101},{"name":"omega_rel","line":102},{"name":"omega_ok","line":103},{"name":"f_gamma","line":105}],"imports":[{"name":"math::constants","line":6}],"terms":["fpga","math","sacred","physics","phi","inv","gamma","lqg","threshold","present","sec","neural","center","cubed","gravity","cub","dark","energy","gamma4","gamma8","pi2","pi4","max","rel","omega","abs","report","verify","val","thr","pred","meas"]},{"id":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bigint.t27","health":"ok","module":"TernaryBigInt"}],"description":"t27/specs/ternary/bigint.t27 TVC BigInt - Balanced Ternary Arbitrary Precision Arithmetic 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q Balanced Ternary representation: - Each trit has value {-1, 0, +1} - Number = Sigma(trit[i] * 3^i) for i = 0..n-1","symbols":[{"name":"MAX_TRITS","line":34},{"name":"TRIT_NEG","line":37},{"name":"TRIT_ZERO","line":38},{"name":"TRIT_POS","line":39},{"name":"SIMD_CHUNK_SIZE","line":42},{"name":"SIMD_CHUNKS","line":45},{"name":"KARATSUBA_THRESHOLD","line":48},{"name":"SIMD_THRESHOLD","line":51},{"name":"I64_DIV_THRESHOLD","line":54},{"name":"DivResult","line":61},{"name":"BigInt","line":68},{"name":"Self","line":74},{"name":"zero","line":81},{"name":"from_i64","line":91},{"name":"to_i64","line":128},{"name":"normalize","line":149},{"name":"is_zero","line":157},{"name":"is_negative","line":164},{"name":"is_positive","line":170},{"name":"signum","line":176},{"name":"negate","line":193},{"name":"abs","line":206},{"name":"add","line":221},{"name":"add_scalar","line":231},{"name":"max_len","line":235},{"name":"a_trit","line":243},{"name":"b_trit","line":244},{"name":"add_simd","line":270},{"name":"max_len","line":272},{"name":"num_chunks","line":273},{"name":"offset","line":278},{"name":"idx","line":282},{"name":"a_trit","line":283},{"name":"b_trit","line":284},{"name":"sub","line":327},{"name":"neg_b","line":328},{"name":"mul","line":339},{"name":"mul_simple","line":349},{"name":"mul_karatsuba","line":407},{"name":"m","line":414},{"name":"z0","line":461},{"name":"z2","line":462},{"name":"a_sum","line":464},{"name":"b_sum","line":465},{"name":"z1_shifted","line":474},{"name":"z2_shifted","line":478},{"name":"compare_abs","line":491},{"name":"a_abs","line":492},{"name":"b_abs","line":493},{"name":"compare","line":514},{"name":"a_sign","line":516},{"name":"b_sign","line":517},{"name":"cmp","line":526},{"name":"div_rem","line":543},{"name":"a_val","line":551},{"name":"b_val","line":552},{"name":"q_val","line":558},{"name":"r_val","line":559},{"name":"div_rem_long","line":574},{"name":"cmp","line":575},{"name":"result_neg","line":590},{"name":"divisor","line":594},{"name":"shifted_divisor","line":609},{"name":"test_sub","line":616},{"name":"test_add","line":625},{"name":"div","line":653},{"name":"mod","line":658},{"name":"shift_left","line":668},{"name":"shift_right","line":688},{"name":"newton_reciprocal","line":712},{"name":"b_abs","line":717},{"name":"initial_pos","line":721},{"name":"two","line":734},{"name":"max_iterations","line":735},{"name":"bx","line":740},{"name":"two_scaled","line":741},{"name":"diff","line":742},{"name":"x_new","line":743},{"name":"div_newton","line":764},{"name":"precision","line":775},{"name":"recip","line":778},{"name":"product","line":781},{"name":"qb","line":785},{"name":"z","line":809},{"name":"z","line":817},{"name":"a","line":823},{"name":"b","line":824},{"name":"c","line":825},{"name":"a","line":833},{"name":"b","line":834},{"name":"c","line":835},{"name":"values","line":843},{"name":"big","line":845},{"name":"back","line":846},{"name":"pos","line":866},{"name":"neg","line":867},{"name":"z","line":868},{"name":"pos","line":876},{"name":"neg","line":877},{"name":"z","line":878},{"name":"pos","line":886},{"name":"neg","line":887},{"name":"z","line":888},{"name":"a","line":896},{"name":"b","line":897},{"name":"c","line":898},{"name":"neg_a","line":899},{"name":"neg_b","line":900},{"name":"neg_c","line":901},{"name":"a","line":909},{"name":"b","line":910},{"name":"c","line":911},{"name":"a","line":919},{"name":"b","line":920},{"name":"sum","line":921},{"name":"a","line":927},{"name":"b","line":928},{"name":"sum","line":929},{"name":"a","line":935},{"name":"z","line":936},{"name":"sum1","line":937},{"name":"sum2","line":938},{"name":"a","line":945},{"name":"b","line":946},{"name":"sum1","line":947},{"name":"sum2","line":948},{"name":"a","line":954},{"name":"b","line":955},{"name":"diff","line":956},{"name":"a","line":962},{"name":"b","line":963},{"name":"diff","line":964},{"name":"a","line":970},{"name":"b","line":971},{"name":"prod","line":972},{"name":"a","line":978},{"name":"b","line":979},{"name":"prod","line":980},{"name":"a","line":986},{"name":"z","line":987},{"name":"prod","line":988},{"name":"a","line":994},{"name":"b","line":995},{"name":"prod","line":996},{"name":"a","line":1002},{"name":"b","line":1003},{"name":"prod_simple","line":1004},{"name":"prod_karat","line":1005},{"name":"a","line":1011},{"name":"b","line":1012},{"name":"a","line":1018},{"name":"b","line":1019},{"name":"a","line":1025},{"name":"b","line":1026},{"name":"a","line":1032},{"name":"b","line":1033},{"name":"a","line":1039},{"name":"b","line":1040},{"name":"result","line":1041},{"name":"a","line":1048},{"name":"b","line":1049},{"name":"result","line":1050},{"name":"a","line":1057},{"name":"b","line":1058},{"name":"result","line":1059},{"name":"a","line":1066},{"name":"b","line":1067},{"name":"result","line":1068},{"name":"a","line":1075},{"name":"shifted","line":1076},{"name":"a","line":1082},{"name":"shifted","line":1083},{"name":"a","line":1089},{"name":"shifted","line":1090},{"name":"a","line":1096},{"name":"b","line":1097},{"name":"result","line":1098},{"name":"a","line":1105},{"name":"b","line":1106},{"name":"result_newton","line":1107},{"name":"result_regular","line":1108},{"name":"a","line":1115},{"name":"b","line":1116},{"name":"sum","line":1117},{"name":"a","line":1123},{"name":"b","line":1124},{"name":"prod","line":1125},{"name":"values","line":1135},{"name":"a","line":1137},{"name":"z","line":1138},{"name":"values","line":1146},{"name":"a","line":1148},{"name":"z","line":1149},{"name":"vals_a","line":1156},{"name":"vals_b","line":1157},{"name":"a","line":1160},{"name":"b","line":1161},{"name":"a","line":1169},{"name":"b","line":1170},{"name":"c","line":1171},{"name":"vals_a","line":1177},{"name":"vals_b","line":1178},{"name":"a","line":1181},{"name":"b","line":1182},{"name":"a","line":1190},{"name":"b","line":1191},{"name":"c","line":1192},{"name":"a","line":1198},{"name":"b","line":1199},{"name":"c","line":1200},{"name":"values","line":1206},{"name":"a","line":1208},{"name":"values","line":1215},{"name":"a","line":1217},{"name":"vals_a","line":1224},{"name":"vals_b","line":1225},{"name":"a","line":1228},{"name":"b","line":1229},{"name":"vals_a","line":1237},{"name":"vals_b","line":1238},{"name":"a","line":1241},{"name":"b","line":1242},{"name":"result","line":1243},{"name":"reconstructed","line":1244},{"name":"a","line":1253},{"name":"b","line":1254},{"name":"c","line":1255},{"name":"vals_a","line":1263},{"name":"vals_b","line":1264},{"name":"a","line":1267},{"name":"b","line":1268},{"name":"cmp","line":1269},{"name":"values","line":1277},{"name":"a","line":1279},{"name":"shifted","line":1280},{"name":"restored","line":1281},{"name":"a","line":1295},{"name":"b","line":1296},{"name":"a","line":1308},{"name":"b","line":1309},{"name":"a","line":1321},{"name":"b","line":1322},{"name":"a","line":1334},{"name":"b","line":1335},{"name":"a","line":1347},{"name":"b","line":1348},{"name":"a","line":1360},{"name":"a","line":1387},{"name":"b","line":1388},{"name":"a","line":1400},{"name":"a","line":1412},{"name":"a","line":1424}],"imports":[],"terms":["ternary","bigint","big","int","max","trits","trit","neg","zero","pos","simd","chunk","size","chunks","karatsuba","threshold","i64","div","self","normalize","negative","positive","signum","negate","abs","scalar","len","num","offset","idx","sub","mul","simple","sum","shifted","compare","sign","cmp","rem","val","long","divisor","mod","shift","left","right","newton","reciprocal","initial","two","iterations","scaled","diff","precision","recip","product","values","back","sum1","sum2","prod","karat","regular","vals","reconstructed","restored"]},{"id":"7340bfb45e9f95ffc6a1582f488755545718cdf7c240a92b37f30a48591d3e73","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_writer.t27","health":"ok","module":"SpecWriter"}],"description":"t27/specs/","symbols":[{"name":"SpecField","line":13},{"name":"SpecType","line":17},{"name":"SpecBehavior","line":20},{"name":"SpecTemplate","line":26},{"name":"WriteResult","line":32}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","writer","field","behavior","template","write"]},{"id":"73ff76bdd9389cea8203d82ed1262841928f177d3f7ea7224317980581b29edd","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/campaign_self_reproduction.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","campaign","self","reproduction"]},{"id":"73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_scenarios.t27","health":"ok","module":"ProductionScenarios"}],"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","symbols":[{"name":"STATE_COLD_START","line":8},{"name":"STATE_DISCOVERING","line":9},{"name":"STATE_CONNECTED","line":10},{"name":"STATE_PARTITIONED","line":11},{"name":"STATE_RECOVERING","line":12},{"name":"create_node_state","line":15},{"name":"node_state","line":19},{"name":"node_neighbors","line":23},{"name":"node_uptime","line":27},{"name":"cold_start","line":32},{"name":"discover_neighbor","line":36},{"name":"simulate_partition","line":49},{"name":"recover_from_partition","line":57},{"name":"node_join","line":66},{"name":"node_leave","line":72},{"name":"simulate_interference","line":83},{"name":"battery_drain","line":93},{"name":"check_max_hops","line":102}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","production","scenarios","state","cold","start","discovering","connected","partitioned","recovering","create","node","neighbors","uptime","discover","neighbor","simulate","partition","recover","join","leave","interference","battery","drain","max","hops"]},{"id":"7489fea274db7163ea593d3dfe4e7cb5cf8b65df4437bbc0ff6ee03fbe5c01ce","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/derived_packs_candidates.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","derived","packs","candidates"]},{"id":"748a19d26fa53cf98eb889e0f223855c49e88d6d7efa5a7ca3c68accc9768c0e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_gfvalid.t27","health":"ok","module":"TriComputeGfValid"}],"description":"TRI-NET GoldenFloat validity, generalised across the GF family. The settle gate's is_finite_gf16 was hardcoded to GF16 (exp field == 0x3F): it silently passes inf/nan from GF4/GF8/GF14/GF20+ results, so garbage compute in any non-GF16 format could be paid. A GF value is special (inf/nan) exactly when its exponent field is all-ones; the field's width/position is per-format: GF4 E1 M2 | GF8 E3 M4 | GF12 E4 M7 | GF14 E5 M8 | GF16 E6 M9 | GF20 E7 M12","symbols":[{"name":"is_finite_gf","line":14},{"name":"is_finite_gf_h","line":25},{"name":"FMT_GF_BINARY","line":39},{"name":"FMT_GFT16","line":40},{"name":"gft_pow3","line":49},{"name":"gft_offset_max","line":62},{"name":"gft_exp_trits_for_width","line":72},{"name":"gft_offset_max_for_width","line":90},{"name":"is_finite_gft_n","line":100},{"name":"gft_offset_in_range","line":110},{"name":"is_valid_gft","line":119},{"name":"GFT16_OFFSET_MAX","line":129},{"name":"is_finite_gft16","line":130},{"name":"is_finite_dispatch","line":140}],"imports":[{"name":"base::types","line":10}],"terms":["net","compute","gfvalid","valid","finite","fmt","binary","gft16","gft","pow3","offset","max","exp","trits","width","range","dispatch"]},{"id":"74c47290c2b18db036f4247d5934d5023351923765d7f27d10ab41af05badba9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/b_tree.t27","health":"ok","module":"TriBTree"}],"description":"t27/specs/","symbols":[{"name":"BTreeNode","line":13},{"name":"BTree","line":20},{"name":"init","line":31},{"name":"search","line":36},{"name":"insert","line":41},{"name":"deinit","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","tree","btree","node","init","search","insert","deinit"]},{"id":"75057ee2ad3e822c422ce7e02fcbd28df64df4237be2983dc47a485982c08e3a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adamw.t27","health":"ok","module":"Adamw"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_WEIGHT_DECAY","line":13},{"name":"AdamWConfig","line":19},{"name":"step","line":31}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","adamw","default","weight","decay","adam","wconfig","step"]},{"id":"75436c3008387808f7f8e4f65bd94adf669162e85a6caac70c9007eac588f49d","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/format_table_invariants.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","format","table","invariants"]},{"id":"7613974a2fe2ce834ef4997afff960de62d03b4deb791e5f867dbb6edcd648f1","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/nf4.t27","health":"warn","module":"triformat-nf4"}],"description":"nf4.t27 — NormalFloat4 Quantization 4-bit quantization based on normalized distribution Values: {-1, -0.667, -0.333, 0, 0.333, 0.667, 1, 0} (8 levels + zero)","symbols":[{"name":"BITS","line":13},{"name":"LEVELS","line":14},{"name":"TOTAL_LEVELS","line":15},{"name":"NUM_NEGATIVE_LEVELS","line":21},{"name":"NUM_POSITIVE_LEVELS","line":22},{"name":"NF4","line":28},{"name":"LEVELS_FLOAT","line":36},{"name":"LEVELS_PHI","line":49},{"name":"QUANTIZATION_LEVELS","line":61},{"name":"nf4_from_f32","line":70},{"name":"abs_value","line":76},{"name":"nf4_from_f64","line":112},{"name":"nf4_from_i8","line":118},{"name":"normalized","line":120},{"name":"nf4_to_f32","line":126},{"name":"index","line":127},{"name":"nf4_to_f64","line":133},{"name":"nf4_to_i8","line":139},{"name":"fval","line":140},{"name":"scaled","line":141},{"name":"nf4_add","line":151},{"name":"fa","line":152},{"name":"fb","line":153},{"name":"nf4_sub","line":159},{"name":"fa","line":160},{"name":"fb","line":161},{"name":"nf4_mul","line":167},{"name":"fa","line":168},{"name":"fb","line":169},{"name":"nf4_div","line":175},{"name":"fb","line":176},{"name":"fa","line":180},{"name":"nf4_is_zero","line":190},{"name":"nf4_is_negative","line":196},{"name":"nf4_is_positive","line":202},{"name":"nf4_abs","line":208},{"name":"nf4_neg","line":214},{"name":"magnitude","line":215},{"name":"nf4_is_equal","line":224},{"name":"nf4_is_greater","line":230},{"name":"fa","line":231},{"name":"fb","line":232},{"name":"nf4_is_less","line":238},{"name":"fa","line":239},{"name":"fb","line":240},{"name":"nf4_max","line":246},{"name":"nf4_min","line":252},{"name":"nf4_clamp","line":258},{"name":"nf4_lerp","line":264},{"name":"fa","line":265},{"name":"fb","line":266},{"name":"result","line":267},{"name":"nf4_magnitude","line":273},{"name":"nf4_l1_distance","line":279},{"name":"fa","line":280},{"name":"fb","line":281},{"name":"nf4_l2_distance","line":287},{"name":"fa","line":288},{"name":"fb","line":289},{"name":"diff","line":290},{"name":"nf4_scale","line":296},{"name":"fa","line":297}],"imports":[],"terms":["chips","euler","numeric","nf4","triformat","bits","levels","total","num","negative","positive","float","phi","quantization","f32","abs","f64","normalized","index","fval","scaled","sub","mul","div","zero","neg","magnitude","equal","greater","less","max","min","clamp","lerp","distance","diff","scale"]},{"id":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/zip.t27","health":"ok","module":"TriZipper"}],"description":"t27/specs/","symbols":[{"name":"Zipper","line":13},{"name":"current","line":24},{"name":"go_down","line":29},{"name":"go_up","line":34},{"name":"go_left","line":39},{"name":"go_right","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["zip","zipper","down","left","right"]},{"id":"76a39f4c7d0e78833ccaedd7533f74b68e8350453f0198b2c1cf370138a5419e","sources":[{"repo":"ghashtag/t27","path":"specs/server/mdns.t27","health":"ok","module":"server-mdns"}],"description":"mdns.t27 — mDNS Specification Multicast DNS service discovery, announcement, resolution","symbols":[{"name":"MDNS_PORT","line":19},{"name":"MDNS_IPV4","line":22},{"name":"MDNS_IPV6","line":25},{"name":"SERVICE_HTTP","line":28},{"name":"SERVICE_LSP","line":31},{"name":"PROTOCOL_VERSION","line":34},{"name":"QUERY_INTERVAL_MS","line":37},{"name":"ANNOUNCEMENT_TTL","line":40},{"name":"QUERY_TIMEOUT_MS","line":43},{"name":"QTYPE_PTR","line":46},{"name":"QTYPE_SRV","line":49},{"name":"QTYPE_TXT","line":52},{"name":"CLASS_IN","line":55},{"name":"RecordType","line":62},{"name":"QueryType","line":70},{"name":"ServiceRecord","line":77},{"name":"PTRRecord","line":88},{"name":"TXTRecord","line":94},{"name":"Query","line":100},{"name":"Response","line":106},{"name":"DiscoveryState","line":112},{"name":"Resolver","line":121},{"name":"service_create","line":131},{"name":"service_create_with_txt","line":144},{"name":"base","line":145},{"name":"ptr_create","line":158},{"name":"txt_create","line":166},{"name":"query_srv","line":174},{"name":"query_ptr","line":182},{"name":"query_txt","line":190},{"name":"resolver_new","line":198},{"name":"resolver_add_service","line":206},{"name":"resolver_find_service","line":211},{"name":"resolver_find_by_type","line":221},{"name":"resolver_count","line":232},{"name":"service_format_name","line":237},{"name":"service_format_fqdn","line":242},{"name":"local_name","line":243},{"name":"is_ptr_record","line":248},{"name":"is_srv_record","line":253},{"name":"is_txt_record","line":258},{"name":"append","line":263},{"name":"concat","line":273},{"name":"append_bytes","line":282},{"name":"resolver_update_time","line":289},{"name":"resolver_cache_stale","line":294},{"name":"elapsed","line":295},{"name":"get_timestamp_ms","line":300},{"name":"service","line":310},{"name":"service","line":316},{"name":"ptr","line":321},{"name":"txt","line":326},{"name":"query","line":331},{"name":"query","line":336},{"name":"query","line":341},{"name":"resolver","line":346},{"name":"service","line":352},{"name":"service","line":359},{"name":"found","line":361},{"name":"service","line":367},{"name":"found","line":369},{"name":"service","line":384},{"name":"name","line":385},{"name":"service","line":390},{"name":"fqdn","line":391},{"name":"service","line":523},{"name":"service","line":536},{"name":"service","line":561}],"imports":[{"name":"std","line":12}],"terms":["mdns","port","ipv4","ipv6","service","http","lsp","protocol","query","interval","announcement","ttl","timeout","qtype","ptr","srv","txt","class","record","ptrrecord","txtrecord","response","discovery","state","resolver","create","base","find","count","format","fqdn","local","append","concat","bytes","time","cache","stale","elapsed","get","timestamp","found"]},{"id":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_tests.t27","health":"ok","module":"MeshIntegrationTests"}],"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","symbols":[{"name":"VERSION","line":10},{"name":"KIND_DATA","line":11},{"name":"header_byte","line":13},{"name":"MESH_NET_A","line":28},{"name":"MESH_NET_B","line":29},{"name":"MESH_NET_C","line":30},{"name":"mesh_ip","line":32},{"name":"ST_IDLE","line":38},{"name":"ST_TX_WAIT","line":39}],"imports":[{"name":"base::types","line":5}],"terms":["net","integration","mesh","kind","data","header","byte","idle","wait"]},{"id":"76f4b79cfecc890ab7a7f7bcbe9564aa9d6ecde995aedb1de20315716844ca22","sources":[{"repo":"ghashtag/t27","path":"specs/bus/schema.t27","health":"ok","module":"bus-schema"}],"description":"bus/schema.t27 — Event Type Definitions Core event types and structures for the event bus","symbols":[{"name":"DEFAULT_CHANNEL_SIZE","line":19},{"name":"MAX_PAYLOAD_SIZE","line":22},{"name":"DEFAULT_SUBSCRIBER_BUFFER","line":25},{"name":"MAX_SUBSCRIBERS_PER_TOPIC","line":28},{"name":"DEFAULT_EVENT_TTL_MS","line":31},{"name":"WILDCARD_TOPIC","line":34},{"name":"TOPIC_SEPARATOR","line":37},{"name":"EventType","line":44},{"name":"EventPriority","line":60},{"name":"Event","line":68},{"name":"EventFilter","line":79},{"name":"EventResult","line":86},{"name":"EventBatch","line":92},{"name":"EventMetadata","line":98},{"name":"TopicPattern","line":105},{"name":"EventStats","line":111},{"name":"BusState","line":120},{"name":"BusConfig","line":129},{"name":"EventAck","line":137},{"name":"DeliveryMode","line":145},{"name":"Subscription","line":152},{"name":"SubscriptionInfo","line":162},{"name":"UnsubscribeResult","line":170},{"name":"BusError","line":177},{"name":"event_create","line":188},{"name":"event_with_priority","line":201},{"name":"event_filter_create","line":214},{"name":"event_result_create","line":223},{"name":"event_result_error","line":231},{"name":"topic_pattern_create","line":239},{"name":"bus_config_default","line":247},{"name":"subscription_create","line":257},{"name":"subscription_info_create","line":269},{"name":"unsubscribe_result_create","line":279},{"name":"bus_error_create","line":288},{"name":"event_stats_create","line":297},{"name":"event_type_to_string","line":308},{"name":"priority_to_string","line":326},{"name":"is_wildcard_pattern","line":336},{"name":"topic_matches_pattern","line":341},{"name":"event_matches_filter","line":349},{"name":"matches_priority","line":370},{"name":"is_bus_running","line":375},{"name":"bus_state_to_string","line":380},{"name":"is_payload_valid","line":391},{"name":"event","line":400},{"name":"event","line":405},{"name":"filter","line":410},{"name":"result","line":415},{"name":"pattern","line":420},{"name":"config","line":425},{"name":"sub","line":430},{"name":"info","line":435},{"name":"result","line":440},{"name":"error","line":445},{"name":"stats","line":450},{"name":"str","line":455},{"name":"str","line":460},{"name":"pattern","line":465},{"name":"pattern","line":470},{"name":"event","line":475},{"name":"filter","line":476},{"name":"str","line":485},{"name":"pattern","line":615},{"name":"event","line":627},{"name":"filter","line":628}],"imports":[],"terms":["bus","schema","default","channel","size","max","payload","subscriber","buffer","subscribers","per","topic","event","ttl","wildcard","separator","priority","filter","batch","metadata","pattern","stats","state","config","ack","delivery","mode","subscription","info","unsubscribe","create","matches","running","valid","sub","str"]},{"id":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf4.t27","health":"ok","module":"GF4"}],"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 0 4-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 2 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF4","line":35},{"name":"encode","line":44},{"name":"pos","line":50},{"name":"decode","line":86},{"name":"sign_bit","line":87},{"name":"exp_bit","line":88},{"name":"mant_bits","line":89},{"name":"mant","line":97},{"name":"exp_scale","line":100},{"name":"value","line":102},{"name":"max_value","line":114},{"name":"min_positive","line":119},{"name":"epsilon","line":124},{"name":"validate_format","line":133},{"name":"fmt","line":135},{"name":"MEMORY_RATIO_VS_FP32","line":153}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["chips","euler","numeric","gf4","bits","sign","exp","mant","bias","phi","distance","encode","pos","decode","bit","scale","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32"]},{"id":"77994ef12abe99523526c9731a3fb05116385ee25b471f3dbe771fb45c14969c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/simulator.t27","health":"ok","module":"Simulator"}],"description":"t27/specs/fpga/simulator.t27 HIR Cycle-Accurate Simulation Engine Specification Provides simulation primitives for verifying HIR modules pre-synthesis Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"SimState","line":12},{"name":"SimConfig","line":22},{"name":"SimResult","line":34},{"name":"ProbePoint","line":44},{"name":"TraceEntry","line":53},{"name":"sim_config","line":61},{"name":"sim_config_with_trace","line":73},{"name":"sim_ok","line":85},{"name":"sim_error","line":95},{"name":"probe","line":105},{"name":"trace_entry","line":114},{"name":"is_idle","line":124},{"name":"is_done","line":128},{"name":"is_error","line":132},{"name":"sim_time_ns","line":136},{"name":"sim_time_us","line":143},{"name":"sim_time_ms","line":147},{"name":"cycles_for_time_ns","line":151},{"name":"has_errors","line":158},{"name":"passed","line":162},{"name":"validate_sim_config","line":168}],"imports":[],"terms":["fpga","simulator","sim","state","config","probe","point","trace","entry","idle","done","time","cycles","passed","validate"]},{"id":"78176a2c16de376d1c47bd45b8b29879bf705e5d16ff1275d88f4d7f82464132","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/ecc.t27","health":"ok","module":"TriEcc"}],"description":"t27/specs/","symbols":[{"name":"ECPoint","line":13},{"name":"EllipticCurve","line":19},{"name":"add","line":29},{"name":"multiply","line":34},{"name":"is_on_curve","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","ecc","ecpoint","elliptic","curve","multiply"]},{"id":"7819abe3d2e0f38ee824f1083c6150962290cfc1238445bcd6cfdd3a5d2ccec6","sources":[{"repo":"ghashtag/t27","path":"specs/physics/hslm_benchmark.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","hslm","benchmark"]},{"id":"789bbb1afcb0ff7eaa3b941eec6a51786e7b5e9ac34615e2bae3b458bf4464b1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/boyer_moore.t27","health":"ok","module":"TriBoyerMoore"}],"description":"t27/specs/","symbols":[{"name":"BMBadChar","line":13},{"name":"build_bad_char","line":23},{"name":"search","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","boyer","moore","bmbad","char","build","bad"]},{"id":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/wire.t27","health":"ok","module":"MeshWire"}],"description":"tri-net/specs/wire.t27 Mesh datagram header, ported from src/wire.rs to T27 (spec-first). Fixed 11-byte header: [ver:1][kind:1][src:4 BE][dst:4 BE][ttl:1]. T27 has no byte arrays, so the serialized form is modeled as functions: header_byte(fields, idx) yields the idx-th header byte, and u32_be reassembles a big-endian word from 4 bytes (the parse path). The header bytes double as the","symbols":[{"name":"VERSION","line":14},{"name":"KIND_HELLO","line":15},{"name":"KIND_DATA","line":16},{"name":"HEADER_LEN","line":17},{"name":"frame_kind_valid","line":20},{"name":"be_byte","line":26},{"name":"u32_be","line":40},{"name":"header_byte","line":46},{"name":"parse_accepts","line":62}],"imports":[{"name":"base::types","line":12}],"terms":["net","wire","mesh","kind","hello","data","header","len","frame","valid","byte","u32","parse","accepts"]},{"id":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","sources":[{"repo":"ghashtag/t27","path":"specs/base/types.t27","health":"warn","module":"tritype-base"}],"description":"types.t27 -- Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","symbols":[{"name":"NEGONE","line":12},{"name":"ZERO","line":13},{"name":"ONE","line":14},{"name":"Trit","line":17},{"name":"PACKED_BITS_PER_TRIT","line":31},{"name":"TRITS_PER_BYTE","line":32},{"name":"PACKED_NEG","line":36},{"name":"PACKED_ZERO","line":37},{"name":"PACKED_ONE","line":38},{"name":"TRIT_MASK","line":40},{"name":"PackedTrit","line":41},{"name":"TRITS_PER_WORD","line":50},{"name":"WORD_BYTES","line":51},{"name":"TernaryWord","line":53},{"name":"UnpackResult","line":60},{"name":"trit_add","line":81},{"name":"trit_multiply","line":109},{"name":"trit_negate","line":127},{"name":"trit_to_packed","line":137},{"name":"packed_to_trit","line":147},{"name":"pack_trit","line":159},{"name":"encoding","line":164},{"name":"bit_pos","line":165},{"name":"mask","line":168},{"name":"unpack_trit","line":179},{"name":"bit_pos","line":184},{"name":"encoding","line":185},{"name":"value","line":186},{"name":"ternary_word_pack","line":194},{"name":"ternary_word_unpack","line":211},{"name":"unpacked","line":220},{"name":"trit_compare","line":233},{"name":"trit_min","line":245},{"name":"trit_max","line":251},{"name":"trit_abs","line":257},{"name":"trit_from_i8","line":264},{"name":"trit_and","line":282},{"name":"trit_or","line":299},{"name":"trit_xor","line":316},{"name":"trit_not","line":326},{"name":"trit_select","line":333},{"name":"packed_trit_count","line":339},{"name":"unpacked","line":342},{"name":"packed_trit_all_equal","line":352},{"name":"packed_trit_is_zero","line":358},{"name":"packed_trit_is_all_same","line":364},{"name":"first","line":365},{"name":"packed_trit_nand","line":371},{"name":"a_trit","line":374},{"name":"b_trit","line":375},{"name":"and_result","line":376},{"name":"nand_result","line":377},{"name":"packed_trit_nor","line":385},{"name":"a_trit","line":388},{"name":"b_trit","line":389},{"name":"or_result","line":390},{"name":"nor_result","line":391},{"name":"packed_trit_xnor","line":400},{"name":"a_trit","line":403},{"name":"b_trit","line":404},{"name":"xor_result","line":405},{"name":"xnor_result","line":406},{"name":"packed_trit_shift_left","line":415},{"name":"src_pos","line":426},{"name":"src_trit","line":427},{"name":"packed_trit_shift_right","line":438},{"name":"dst_pos","line":448},{"name":"src_trit","line":450},{"name":"packed_trit_rotate_left","line":461},{"name":"shift","line":466},{"name":"src_pos","line":470},{"name":"src_trit","line":471},{"name":"packed_trit_rotate_right","line":481},{"name":"shift","line":486},{"name":"src_pos","line":490},{"name":"src_trit","line":491},{"name":"ternary_word_is_zero","line":500},{"name":"byte_idx","line":502},{"name":"trit_pos","line":503},{"name":"unpacked","line":504},{"name":"ternary_word_count","line":514},{"name":"byte_idx","line":517},{"name":"trit_pos","line":518},{"name":"unpacked","line":519},{"name":"ternary_word_eq","line":529},{"name":"ternary_word_negate","line":540},{"name":"byte_idx","line":543},{"name":"trit_pos","line":544},{"name":"unpacked","line":545},{"name":"negated","line":546},{"name":"ternary_word_is_all_same","line":554},{"name":"first","line":555},{"name":"trits","line":589},{"name":"packed","line":591},{"name":"unpacked","line":592},{"name":"pos","line":601},{"name":"packed","line":602},{"name":"unpacked","line":603},{"name":"result","line":611},{"name":"src","line":617},{"name":"result","line":618},{"name":"src","line":624},{"name":"result","line":625},{"name":"trits","line":646},{"name":"trits","line":654},{"name":"src","line":711},{"name":"packed","line":712},{"name":"unpacked","line":713},{"name":"trits","line":800},{"name":"trits","line":810},{"name":"trits","line":820},{"name":"result","line":908},{"name":"result","line":921},{"name":"result","line":933},{"name":"result","line":945},{"name":"result","line":955},{"name":"result","line":966},{"name":"result","line":976},{"name":"result","line":986},{"name":"result","line":995},{"name":"result","line":1004},{"name":"result","line":1013},{"name":"result","line":1022},{"name":"shift_result","line":1030},{"name":"rotate_result","line":1031},{"name":"byte_idx","line":1063},{"name":"trit_pos","line":1064},{"name":"negated","line":1093},{"name":"double_negated","line":1104},{"name":"byte_idx","line":1112},{"name":"trit_pos","line":1113},{"name":"unpacked","line":1425},{"name":"packed","line":1502},{"name":"packed","line":1514},{"name":"packed","line":1526},{"name":"a","line":1538},{"name":"b","line":1539},{"name":"a","line":1551},{"name":"b","line":1552},{"name":"a","line":1564},{"name":"b","line":1565},{"name":"packed","line":1577},{"name":"packed","line":1589},{"name":"packed","line":1601},{"name":"packed","line":1613},{"name":"word","line":1625},{"name":"word","line":1637},{"name":"word_a","line":1649},{"name":"word_b","line":1650},{"name":"word","line":1662},{"name":"word","line":1674}],"imports":[],"terms":["base","tritype","negone","zero","one","trit","packed","bits","per","trits","byte","neg","mask","word","bytes","ternary","unpack","multiply","negate","pack","encoding","bit","pos","unpacked","compare","min","max","abs","xor","select","count","equal","nand","nor","xnor","shift","left","right","dst","rotate","idx","negated","double"]},{"id":"78fb5c9300e99d054e736a1987e58b72a08481fbed4dec98bab56f0ca9c5f0ff","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/constants.t27","health":"ok","module":"TriConstants"}],"description":"t27/specs/","symbols":[{"name":"SystemLimits","line":13},{"name":"SacredConstants","line":20},{"name":"max_path_len","line":34},{"name":"max_line_len","line":39},{"name":"max_args","line":44},{"name":"max_env_vars","line":49},{"name":"get_p_h_i","line":54},{"name":"get_p_i","line":59},{"name":"get_e","line":64},{"name":"get_s_q_r_t2","line":69},{"name":"get_s_q_r_t3","line":74},{"name":"get_golden_ratio","line":79},{"name":"get_system_limits","line":84},{"name":"get_sacred_constants","line":89}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","constants","system","limits","sacred","max","path","len","args","env","vars","get","golden","ratio"]},{"id":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a.t27","health":"ok","module":"TriA2A"}],"description":"TRI-NET A2A-over-mesh: carry Agent-to-Agent messages as SEALED mesh datagrams, reusing the existing stack -- MeshWire (wire.t27, 11-byte header), RouterTtl (router_ttl.t27, multi-hop + split-horizon), CryptoFrame (crypto_frame.t27, AEAD + ratchet + replay). This spec adds ONLY the A2A message-class layer; it creates no new transport. The hosted skill is a GoldenFloat op (the workload GF was built for): an agent","symbols":[{"name":"KIND_DATA","line":19},{"name":"A2A_PORT","line":20},{"name":"MSG_TASK_ASSIGN","line":23},{"name":"MSG_TASK_RESULT","line":24},{"name":"MSG_HEARTBEAT","line":25},{"name":"SKILL_GF16_MUL","line":28},{"name":"SKILL_GF16_ADD","line":29},{"name":"SKILL_GFT16_MUL","line":33},{"name":"SKILL_GFT16_ADD","line":34},{"name":"SKILL_GFT8_MUL","line":35},{"name":"SKILL_GFT8_ADD","line":36},{"name":"SKILL_GFT4_MUL","line":37},{"name":"SKILL_GFT4_ADD","line":38},{"name":"SKILL_GFT32_MUL","line":39},{"name":"SKILL_GFT32_ADD","line":40},{"name":"SKILL_GFT64_MUL","line":41},{"name":"SKILL_GFT64_ADD","line":42},{"name":"SKILL_GFT128_MUL","line":43},{"name":"SKILL_GFT128_ADD","line":44},{"name":"is_a2a","line":48},{"name":"carries_receipt","line":53},{"name":"is_gf_skill","line":58},{"name":"is_gft_skill","line":65},{"name":"FMT_GF_BINARY","line":82},{"name":"FMT_GFT","line":83},{"name":"skill_family","line":89},{"name":"family_matches","line":108},{"name":"is_hosted_skill","line":117},{"name":"family_matches_strict","line":139},{"name":"skill_op","line":151},{"name":"result_matches_assign","line":159},{"name":"is_fresh","line":166},{"name":"next_watermark","line":171},{"name":"next_watermark_settled","line":187},{"name":"op_matches","line":205},{"name":"result_binds_assign","line":215},{"name":"skill_width","line":241},{"name":"skill_et","line":262},{"name":"result_binds_assign_sized","line":283},{"name":"result_binds_assign_rung","line":298},{"name":"admit_result","line":313},{"name":"A2A_BOND_BPS_UNIT","line":331},{"name":"admit_result_bonded","line":332},{"name":"executor_binds_assign","line":352},{"name":"admit_result_authentic","line":363},{"name":"executor_authentic","line":381},{"name":"admit_result_signed","line":402},{"name":"admit_result_signed_sized","line":425}],"imports":[{"name":"base::types","line":16}],"terms":["net","a2a","kind","data","port","msg","assign","heartbeat","skill","gf16","mul","gft16","gft8","gft4","gft32","gft64","gft128","carries","receipt","gft","fmt","binary","family","matches","hosted","strict","fresh","watermark","settled","binds","width","sized","rung","admit","bond","bps","unit","bonded","executor","authentic","signed"]},{"id":"79c4a7d5901cfb8c91c756ab52bf7f2b36bcee7d7cdae1dfbeb072057a34b733","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_parser.t27","health":"ok","module":"TriSpecParser"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","parser"]},{"id":"7a880f998c16ce8290d35402588b2685ed7b538f288b847878d1120f66c57e60","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/monopoles.t27","health":"ok","module":"TriMonopoles"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","monopoles"]},{"id":"7a96cffe0aaed3d11bd517bb7d234578912f19fb38788fbfdbe0ff428fa69de4","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/health.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-010 + SANDBOX-011: Sandbox Health Management","symbols":[{"name":"DEFAULT_POLL_INTERVAL_MS","line":23},{"name":"poll_sessions","line":38}],"imports":[{"name":"timestamp","line":16}],"terms":["sandbox","health","default","poll","interval","sessions"]},{"id":"7b0d45737fe557fd91cab1c2fa99092d032fe5032d8ea4ebd0a7370b3408ec2b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/html.t27","health":"warn","module":"TriHtml"}],"description":"t27/specs/","symbols":[{"name":"HtmlNode","line":13},{"name":"parse","line":25},{"name":"query_selector","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","html","node","parse","query","selector"]},{"id":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/meta_compile.t27","health":"ok","module":"MetaCompilation"}],"description":"","symbols":[{"name":"CompileResult","line":6},{"name":"SAMPLE_SPEC","line":18},{"name":"compile_result_init","line":20},{"name":"is_full_success","line":34},{"name":"total_lines","line":38},{"name":"any_backend_ok","line":42}],"imports":[{"name":"compiler::parser","line":3},{"name":"compiler::lexer","line":4}],"terms":["compiler","meta","compile","compilation","sample","init","full","success","total","backend"]},{"id":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sources":[{"repo":"ghashtag/t27","path":"specs/boards/arty_a7.t27","health":"ok","module":"BoardArtyA7"}],"description":"t27/specs/boards/arty_a7.t27 Digilent Arty A7 Board Profile Artix-7 XC7A35T/XC7A100T, 100MHz clock, 4 LEDs, 4 buttons, UART","symbols":[{"name":"BOARD_NAME","line":11},{"name":"FPGA_FAMILY","line":12},{"name":"FPGA_PART_35T","line":13},{"name":"FPGA_PART_100T","line":14},{"name":"CLOCK_FREQ_HZ","line":15},{"name":"CLOCK_PERIOD_NS","line":16},{"name":"IO_STANDARD","line":17},{"name":"CONFIG_VOLTAGE","line":18},{"name":"NUM_LEDS","line":20},{"name":"NUM_BUTTONS","line":21},{"name":"NUM_SWITCHES","line":22},{"name":"HAS_UART","line":23},{"name":"HAS_SPI","line":24},{"name":"PinAssignment","line":26},{"name":"PIN_CLK","line":36},{"name":"PIN_RST_N","line":46},{"name":"PIN_UART_TX","line":56},{"name":"PIN_UART_RX","line":66},{"name":"PIN_LED_0","line":76},{"name":"PIN_LED_1","line":86},{"name":"PIN_LED_2","line":96},{"name":"PIN_LED_3","line":106},{"name":"PIN_BTN_0","line":116},{"name":"PIN_BTN_1","line":126},{"name":"PIN_BTN_2","line":136},{"name":"PIN_BTN_3","line":146},{"name":"count_leds","line":156},{"name":"count_buttons","line":160},{"name":"has_uart","line":164},{"name":"has_spi","line":168},{"name":"clock_freq_mhz","line":172}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9}],"terms":["boards","arty","board","fpga","family","part","35t","100t","clock","freq","period","standard","config","voltage","num","leds","buttons","switches","uart","spi","pin","assignment","clk","rst","led","btn","count","mhz"]},{"id":"7bba43f3ce59e8f19614856e91ac705b6fadd2cd3a145663b482daeb9a0b7120","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_retry.t27","health":"ok","module":"AdaptiveRetry"}],"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","symbols":[{"name":"BASE_DELAY_MS","line":6},{"name":"MAX_RETRIES","line":7},{"name":"BACKOFF_MULTIPLIER","line":8},{"name":"QUALITY_HIGH","line":11},{"name":"QUALITY_MEDIUM","line":12},{"name":"backoff_delay_ms","line":15},{"name":"max_retries_for_quality","line":32},{"name":"should_retry","line":43},{"name":"base_probability","line":48},{"name":"retry_success_probability","line":58},{"name":"total_retry_time","line":70}],"imports":[],"terms":["macos","rings","rust","mesh","adaptive","retry","base","delay","max","retries","backoff","multiplier","quality","high","medium","probability","success","total","time"]},{"id":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_depin.t27","health":"ok","module":"TriDepin"}],"description":"TRI-NET DePIN Proof-of-Relay accounting -- the on-node substrate a $TRI settlement layer meters. A node's \"physical work\" (Helium-style Proof of Coverage / Proof of Physical Work) is relaying mesh datagrams over the radio; this keeps a tamper-evident, order-sensitive, identity-bound running accumulator over the receipts of what it forwarded. The settlement layer mints $TRI proportional to metered bytes, gated by the accumulator seal so a node","symbols":[{"name":"TRI_GENESIS","line":24},{"name":"TRI_PHI","line":25},{"name":"rotl32","line":28},{"name":"mix32","line":34},{"name":"relay_absorb","line":44},{"name":"epoch_seal","line":51},{"name":"verify_epoch","line":59},{"name":"bytes_add","line":65},{"name":"relay_absorb_verified","line":86},{"name":"bytes_add_verified","line":95}],"imports":[{"name":"base::types","line":22}],"terms":["net","depin","genesis","phi","rotl32","mix32","relay","absorb","epoch","seal","verify","bytes","verified"]},{"id":"7cc94315c7dfd7453de9d1dcaba920d8ff4bd8c208f751f4861d046741ecbc80","sources":[{"repo":"ghashtag/t27","path":"specs/physics/zamolodchikov_4d_conjecture.t27","health":"ok","module":"Zamolodchikov4DConjecture"}],"description":"t27/specs/physics/zamolodchikov_4d_conjecture.t27 4D Zamolodchikov Conjecture -- The Breakthrough Hypothesis Direction E of PROJECT KEPLER->NEWTON HYPOTHESIS: A 4D quantum field theory with E8 integrable structure fixes the fundamental constants of the Standard Model through the same algebraic mechanism that fixes the 8 Zamolodchikov masses in 2D.","symbols":[{"name":"FourDimensionalBridge","line":99},{"name":"conjectured_bridge","line":106},{"name":"MinahanNemeschanskyE8","line":131},{"name":"mn_e8_theory","line":138},{"name":"DynkinPhysicsMapping","line":186},{"name":"observed_mapping","line":193}],"imports":[{"name":"math::constants","line":37},{"name":"math::e8_lie_algebra","line":38},{"name":"math::zamolodchikov_e8","line":39},{"name":"physics::su2_chern_simons","line":40}],"terms":["physics","zamolodchikov","conjecture","zamolodchikov4dconjecture","four","dimensional","bridge","conjectured","minahan","nemeschansky","theory","dynkin","mapping","observed"]},{"id":"7cd10a5c5d22642ef412c68d9607954f194b4028219fbd66f5d6fca71f4a6851","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/help.t27","health":"ok","module":"TriHelp"}],"description":"t27/specs/","symbols":[{"name":"HelpOptions","line":13},{"name":"HelpSystem","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","help","options","system"]},{"id":"7d1bacd489455a84c26e596856c878f9d1acf040b8fc74fdadc6f3485f6c0ae6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/trie.t27","health":"ok","module":"TriTrie"}],"description":"t27/specs/","symbols":[{"name":"TrieNode","line":13},{"name":"Trie","line":19},{"name":"empty","line":29},{"name":"insert","line":34},{"name":"get","line":39},{"name":"has_prefix","line":44},{"name":"keys_with_prefix","line":49},{"name":"remove","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","trie","node","empty","insert","get","prefix","keys","remove"]},{"id":"7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/energy_aware_routing.t27","health":"warn","module":"EnergyAwareRouting"}],"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","symbols":[{"name":"MAX_PATHS","line":7},{"name":"BATTERY_WEIGHT","line":8},{"name":"HOP_WEIGHT","line":9},{"name":"CRITICAL_BATTERY","line":10},{"name":"create_energy_cost","line":13},{"name":"get_tx_power","line":20},{"name":"get_rx_power","line":24},{"name":"get_processing_cost","line":28},{"name":"get_hop_count_cost","line":32},{"name":"create_path_energy","line":37},{"name":"get_battery_levels","line":44},{"name":"get_total_cost","line":48},{"name":"get_path_valid","line":52},{"name":"get_energy_score","line":56},{"name":"create_energy_array","line":61},{"name":"get_path_energy","line":68},{"name":"calculate_total_energy_cost","line":76},{"name":"calculate_energy_score","line":88},{"name":"is_path_viable","line":103},{"name":"find_energy_optimal_path","line":111},{"name":"find_min_cost_path","line":151},{"name":"select_balanced_path","line":191},{"name":"estimate_path_lifetime","line":232}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","energy","aware","routing","max","paths","battery","weight","hop","critical","create","cost","get","power","processing","count","path","levels","total","valid","score","array","calculate","viable","find","optimal","min","select","balanced","estimate","lifetime"]},{"id":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/experiments.t27","health":"warn","module":"TrinityMemoryExperiments"}],"description":"Executable native experiments. Domain behavior is here; the runtime supplies bounded allocation, loopback sockets, monotonic time and platform primitives. JSON output is scratch until a nonnegative return. No physical-device claim.","symbols":[{"name":"TM_EXP_ERR_CHECK","line":5},{"name":"TM_EXP_ERR_RESOURCE","line":6},{"name":"TM_EXP_ERR_RTL","line":7},{"name":"TMExperimentWork","line":8},{"name":"tm_exp_open","line":13},{"name":"tm_exp_close","line":26},{"name":"tm_exp_rpc","line":31},{"name":"tm_exp_upload","line":56},{"name":"tm_exp_handle_params","line":70},{"name":"tm_exp_read","line":75},{"name":"tm_exp_delete","line":85},{"name":"tm_exp_dot","line":93},{"name":"tm_exp_label","line":107},{"name":"tm_exp_fixture_name","line":110},{"name":"tm_exp_weight","line":115},{"name":"tm_exp_fixture","line":120},{"name":"tm_exp_signal_model","line":137},{"name":"tm_exp_model","line":153},{"name":"tm_exp_copy_text","line":156},{"name":"tm_exp_classify","line":164},{"name":"tm_exp_i64_array","line":187},{"name":"tm_exp_edge_mode","line":192},{"name":"tm_exp_edge","line":262},{"name":"tm_exp_case_fields","line":294},{"name":"tm_exp_case_values","line":311},{"name":"tm_exp_golden_field","line":332},{"name":"tm_exp_validate_cases","line":338},{"name":"tm_exp_vector_blob","line":359},{"name":"tm_exp_golden_match","line":367},{"name":"tm_exp_conformance_case","line":378},{"name":"tm_exp_conformance_checks","line":416},{"name":"tm_exp_conformance","line":479},{"name":"tm_exp_sift","line":516},{"name":"tm_exp_median_ns","line":525},{"name":"tm_exp_string_z","line":536},{"name":"tm_exp_dataset","line":541},{"name":"tm_exp_benchmark_run","line":560},{"name":"tm_exp_benchmark","line":633},{"name":"tm_exp_rtl_json","line":651},{"name":"tm_exp_fixtures_json","line":668}],"imports":[],"terms":["dmitrii","memory","experiments","exp","err","resource","rtl","tmexperiment","work","open","close","rpc","upload","handle","params","read","delete","dot","label","fixture","weight","signal","model","copy","text","classify","i64","array","edge","mode","case","fields","values","golden","field","validate","cases","vector","blob","match","conformance","checks","sift","median","dataset","benchmark","json","fixtures"]},{"id":"7de9d8fe941d574b862a1724428a32e859938c864fa3748f3a14719ff0707388","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_statistics.t27","health":"ok","module":"LinkStatistics"}],"description":"Link statistics - ultra-simple","symbols":[{"name":"get_sent","line":6},{"name":"get_recv","line":10},{"name":"inc_sent","line":14},{"name":"inc_recv","line":18},{"name":"reset","line":22}],"imports":[{"name":"base::types","line":4}],"terms":["net","link","statistics","get","sent","recv","inc","reset"]},{"id":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_bigint.t27","health":"warn","module":"hybrid_bigint"}],"description":"HybridBigInt: Optimal Memory/Speed Trade-off Uses packed storage (4.5x memory savings) with unpacked computation SIMD-accelerated operations for high performance Author: Dmitrii Vasilev","symbols":[{"name":"MAX_TRITS","line":19},{"name":"TRITS_PER_BYTE","line":22},{"name":"MAX_PACKED_BYTES","line":25},{"name":"SIMD_WIDTH","line":28},{"name":"SIMD_CHUNKS","line":31},{"name":"MEMORY_EFFICIENCY","line":34},{"name":"StorageMode","line":43},{"name":"Vec32","line":49},{"name":"HybridBigInt","line":56},{"name":"simd_add","line":75},{"name":"simd_negate","line":100},{"name":"simd_dot_product","line":109},{"name":"simd_is_zero","line":118},{"name":"zero","line":133},{"name":"ensure_unpacked","line":144},{"name":"pack","line":178},{"name":"memory_usage","line":209},{"name":"from_i64","line":214},{"name":"to_i64","line":248},{"name":"get_trit","line":268},{"name":"set_trit","line":277},{"name":"is_zero","line":292},{"name":"is_negative","line":300},{"name":"negate","line":308},{"name":"add","line":328},{"name":"add_simd","line":371},{"name":"sub","line":453},{"name":"mul","line":459},{"name":"dot_product","line":510},{"name":"normalize","line":547},{"name":"from_bigint","line":558},{"name":"to_bigint","line":577}],"imports":[{"name":"numeric::gf16","line":10},{"name":"ternary::bigint","line":12}],"terms":["ternary","hybrid","bigint","max","trits","per","byte","packed","bytes","simd","width","chunks","memory","efficiency","storage","mode","vec32","big","int","negate","dot","product","zero","ensure","unpacked","pack","usage","i64","get","trit","set","negative","sub","mul","normalize"]},{"id":"7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","sources":[{"repo":"ghashtag/t27","path":"specs/github/comments.t27","health":"ok","module":"github"}],"description":"specs/github/comments.t27","symbols":[{"name":"Comment","line":4},{"name":"comment_list","line":9},{"name":"comments","line":15}],"imports":[],"terms":["list"]},{"id":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_full.t27","health":"ok","module":"BoardFullXC7A100T"}],"description":"t27/specs/boards/xc7a100t_full.t27 QMTECH XC7A100T-CSG324 Full Board Profile LED + UART + SPI + MAC debug, QMTECH Wukong expansion Note: 22 pins from full QMTECH XDC are missing in prjxray-db","symbols":[{"name":"BOARD_NAME","line":12},{"name":"FPGA_FAMILY","line":13},{"name":"FPGA_PART","line":14},{"name":"CLOCK_FREQ_HZ","line":15},{"name":"CLOCK_PERIOD_NS","line":16},{"name":"IO_STANDARD","line":17},{"name":"CONFIG_VOLTAGE","line":18},{"name":"NUM_LEDS","line":20},{"name":"HAS_UART","line":21},{"name":"HAS_SPI","line":22},{"name":"HAS_MAC_DEBUG","line":23},{"name":"MAC_RESULT_WIDTH","line":24},{"name":"PinAssignment","line":26},{"name":"ClockConstraint","line":38},{"name":"PIN_CLK","line":45},{"name":"PIN_RST_N","line":57},{"name":"PIN_UART_RX","line":69},{"name":"PIN_UART_TX","line":81},{"name":"PIN_SPI_CS","line":93},{"name":"PIN_SPI_SCK","line":105},{"name":"PIN_SPI_MOSI","line":117},{"name":"PIN_SPI_MISO","line":129},{"name":"PIN_LED_0","line":141},{"name":"PIN_LED_1","line":153},{"name":"PIN_LED_2","line":165},{"name":"PIN_LED_3","line":177},{"name":"PIN_LED_4","line":189},{"name":"PIN_LED_5","line":201},{"name":"PIN_LED_6","line":213},{"name":"PIN_LED_7","line":225},{"name":"PIN_MAC_DONE","line":237},{"name":"CLOCK_SYS","line":249},{"name":"has_uart","line":256},{"name":"has_spi","line":260},{"name":"has_mac_debug","line":264},{"name":"count_leds","line":268}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10}],"terms":["boards","xc7a100t","full","board","fpga","family","part","clock","freq","period","standard","config","voltage","num","leds","uart","spi","mac","debug","width","pin","assignment","constraint","clk","rst","sck","mosi","miso","led","done","sys","count"]},{"id":"7ef232c76f3a3a5f3ab6eb9ed8046faa1fa7dd3085f4d6d3288f2bd538da3f60","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/sparsity.t27","health":"warn","module":"TrinityMemorySparsity"}],"description":"Trinity Memory explicit lossy preparation and marginal entropy. Status: 0 success, -1 invalid input, -2 short output. Valid arrays and non-overlapping input/output buffers are a host ABI duty. log2 is an external host libm primitive, not a second application algorithm.","symbols":[{"name":"tm_sparsity_finite","line":7},{"name":"tm_sparsity_magnitude","line":11},{"name":"tm_project_topk","line":20},{"name":"TMExactWeight","line":64},{"name":"tm_exact_integer_high","line":71},{"name":"tm_exact_integer_bit","line":79},{"name":"tm_exact_weight_valid","line":84},{"name":"tm_exact_integer_float","line":106},{"name":"tm_exact_magnitude_compare","line":146},{"name":"tm_project_topk_exact","line":167},{"name":"tm_entropy_term","line":204},{"name":"tm_entropy_trits","line":212},{"name":"tm_symmetric_entropy","line":235}],"imports":[],"terms":["dmitrii","memory","sparsity","finite","magnitude","project","topk","tmexact","weight","exact","integer","high","bit","valid","float","compare","entropy","term","trits","symmetric"]},{"id":"7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_analytics.t27","health":"ok","module":"NetworkAnalytics"}],"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","symbols":[{"name":"MAX_NODES","line":7},{"name":"ANALYSIS_WINDOW","line":8},{"name":"TRAFFIC_LOW","line":9},{"name":"TRAFFIC_HIGH","line":12},{"name":"ANOMALY_THRESHOLD","line":13},{"name":"create_traffic_stats","line":16},{"name":"get_bytes_sent","line":23},{"name":"get_bytes_recv","line":27},{"name":"get_packet_count","line":31},{"name":"get_error_count","line":35},{"name":"create_analysis_data","line":40},{"name":"get_analysis_node_id","line":47},{"name":"get_analysis_traffic","line":51},{"name":"get_analysis_window_start","line":55},{"name":"get_analysis_pattern","line":59},{"name":"PATTERN_NORMAL","line":64},{"name":"PATTERN_SPIKE","line":65},{"name":"PATTERN_DROPOUT","line":66},{"name":"PATTERN_CONGESTION","line":67},{"name":"calculate_total_traffic","line":70},{"name":"is_traffic_low","line":75},{"name":"is_traffic_high","line":80},{"name":"is_traffic_normal","line":85},{"name":"calculate_error_rate","line":91},{"name":"is_high_error_rate","line":103},{"name":"detect_pattern","line":108},{"name":"update_traffic","line":131},{"name":"needs_attention","line":146},{"name":"calculate_utilization","line":155},{"name":"is_congested","line":166}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","analytics","max","nodes","analysis","window","traffic","low","high","anomaly","threshold","create","stats","get","bytes","sent","recv","packet","count","data","node","start","pattern","normal","spike","dropout","congestion","calculate","total","rate","detect","attention","utilization","congested"]},{"id":"7f884cb32c6f7d9514516b88822759463bf25c897086667ee32db3c879ba16b8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/attention_mechanism.t27","health":"ok","module":"Attention"}],"description":"t27/specs/","symbols":[{"name":"SCALE_FACTOR","line":13},{"name":"AttentionConfig","line":19},{"name":"AttentionOutput","line":26},{"name":"forward","line":36},{"name":"backward","line":41}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","attention","mechanism","scale","factor","config","forward","backward"]},{"id":"7fac93c96e724362777dc1f52a0cb589a6a73739d98722c0c602cbb98f772993","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/03_operators.t27","health":"ok","module":"tutorial-03-operators"}],"description":"03 — Operators Lesson 3. Arithmetic, bitwise, shifts, comparison and the logical keywords. The bitwise group matters more here than in most languages: a spec that describes hardware spends most of its time on masks and shifts.","symbols":[{"name":"arithmetic","line":14},{"name":"sum","line":15},{"name":"difference","line":16},{"name":"product","line":17},{"name":"quotient","line":18},{"name":"remainder","line":19},{"name":"mask_and","line":30},{"name":"mask_or","line":34},{"name":"mask_xor","line":38},{"name":"EXP_SHIFT","line":49},{"name":"EXP_MASK","line":50},{"name":"extract_exponent","line":52},{"name":"place_exponent","line":56},{"name":"is_greater","line":64},{"name":"in_range","line":68},{"name":"either","line":79},{"name":"both","line":83},{"name":"neither","line":87},{"name":"exp","line":96}],"imports":[],"terms":["tutorial","operators","arithmetic","sum","difference","product","quotient","remainder","mask","xor","exp","shift","extract","exponent","place","greater","range","either","both","neither"]},{"id":"802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/router.t27","health":"ok","module":"Router"}],"description":"t27/specs/fpga/router.t27 T27 HIR Signal Router Specification Connectivity graph analysis, fanout estimation, routing congestion prediction Estimates wire length, routing resources needed for Artix-7 Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"EdgeKind","line":13},{"name":"ConnEdge","line":22},{"name":"data_edge","line":29},{"name":"clock_edge","line":38},{"name":"FanoutInfo","line":49},{"name":"fanout","line":55},{"name":"is_high_fanout","line":63},{"name":"is_clock_network","line":67},{"name":"RouteEstimate","line":73},{"name":"route_ok","line":82},{"name":"passed","line":97},{"name":"local_wire_um","line":103},{"name":"medium_wire_um","line":107},{"name":"long_wire_um","line":111},{"name":"est_wire_length","line":115},{"name":"est_total_wire","line":128},{"name":"est_congestion","line":138},{"name":"validate_edge","line":147}],"imports":[],"terms":["fpga","router","edge","kind","conn","data","clock","fanout","info","high","network","route","estimate","passed","local","wire","medium","long","est","length","total","congestion","validate"]},{"id":"80966e05fa9420834513a68d667eb8752ac7360ac01d4ae1e2294a9de72b28f3","sources":[{"repo":"ghashtag/t27","path":"specs/brain/phi_timing.t27","health":"ok","module":"brain-phi-timing"}],"description":"phi_timing.t27 -- phi-structured cognitive cycle timing (spec-first) Phase duration ratios follow INV-1; integer ms sum may differ slightly from 3*base_ms.","symbols":[{"name":"PHI","line":11},{"name":"PHI_INV","line":12},{"name":"PHI_INV_SQ","line":13},{"name":"TRINITY","line":14},{"name":"DEFAULT_BASE_MS","line":15},{"name":"Phase","line":20},{"name":"PhiTiming","line":22},{"name":"phi_timing_init","line":29},{"name":"phi_timing_phase_duration","line":33},{"name":"base","line":34},{"name":"phi_timing_total_cycle_ms_float","line":44},{"name":"base","line":45},{"name":"phi_timing_total_cycle","line":49},{"name":"timing","line":61},{"name":"base","line":62},{"name":"expected","line":63},{"name":"actual","line":64},{"name":"timing","line":69},{"name":"timing","line":74},{"name":"decide","line":75},{"name":"sense","line":76},{"name":"ratio","line":77}],"imports":[],"terms":["brain","phi","timing","inv","default","base","phase","init","duration","total","cycle","float","expected","actual","decide","sense","ratio"]},{"id":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/commands.t27","health":"warn","module":"commands"}],"description":"commands.t27 -- CLI Command Specifications Individual command specifications for tri CLI","symbols":[{"name":"Command","line":10},{"name":"spec_create","line":25},{"name":"valid_kinds","line":33},{"name":"spec_path","line":50},{"name":"spec_content","line":58},{"name":"spec_validate","line":75},{"name":"spec","line":84},{"name":"validation_result","line":108},{"name":"spec_list","line":124},{"name":"spec_files","line":125},{"name":"spec","line":137},{"name":"status","line":138},{"name":"t_count","line":140},{"name":"i_count","line":141},{"name":"gen_spec","line":161},{"name":"validation","line":163},{"name":"spec","line":170},{"name":"conformance_result","line":197},{"name":"gen_all","line":212},{"name":"spec_files","line":213},{"name":"result","line":217},{"name":"total","line":225},{"name":"success","line":226},{"name":"compile_project","line":249},{"name":"spec_files","line":262},{"name":"compiler_files","line":263},{"name":"all_files","line":264},{"name":"source","line":270},{"name":"rel_path","line":273},{"name":"module_key","line":274},{"name":"source","line":287},{"name":"rel_path","line":293},{"name":"code","line":294},{"name":"ext","line":304},{"name":"dest","line":305},{"name":"dir","line":306},{"name":"build_zig","line":314},{"name":"lint_file","line":335},{"name":"result","line":343},{"name":"spec","line":350},{"name":"lint_all","line":363},{"name":"spec_files","line":364},{"name":"result","line":368},{"name":"skill_begin","line":390},{"name":"registry_path","line":391},{"name":"registry","line":401},{"name":"skill_id","line":405},{"name":"timestamp","line":406},{"name":"branch","line":407},{"name":"new_skill","line":409},{"name":"skill_seal","line":451},{"name":"registry_path","line":452},{"name":"registry","line":460},{"name":"skill","line":461},{"name":"timestamp","line":469},{"name":"skill_status","line":489},{"name":"registry_path","line":490},{"name":"registry","line":498},{"name":"skill","line":499},{"name":"help","line":536},{"name":"generate_spec_template","line":625},{"name":"generate_zig","line":643},{"name":"header","line":645},{"name":"code","line":650},{"name":"dir","line":656},{"name":"generate_c","line":663},{"name":"generate_verilog","line":669},{"name":"generate_conformance","line":675},{"name":"conformance","line":677},{"name":"output_path","line":683},{"name":"load_or_create_registry","line":688},{"name":"compute_seal_hash","line":699},{"name":"data","line":701},{"name":"Spec","line":709},{"name":"TestBlock","line":716},{"name":"InvariantBlock","line":720},{"name":"Skill","line":724},{"name":"SkillMetadata","line":744},{"name":"SkillRegistry","line":751},{"name":"Conformance","line":756},{"name":"ModuleMapEntry","line":766},{"name":"ModuleMap","line":771},{"name":"init","line":775},{"name":"put","line":779},{"name":"get","line":786},{"name":"count","line":795},{"name":"path_to_module_key","line":800},{"name":"backend_extension","line":807},{"name":"strip_prefix","line":813},{"name":"result","line":830},{"name":"result","line":834},{"name":"result","line":838},{"name":"result","line":843},{"name":"result","line":850},{"name":"result","line":856},{"name":"result","line":861},{"name":"result","line":866},{"name":"result","line":871},{"name":"result","line":876},{"name":"result","line":881},{"name":"result","line":886},{"name":"result","line":891},{"name":"result","line":896},{"name":"result","line":901},{"name":"result","line":906},{"name":"result","line":911},{"name":"result","line":916},{"name":"result","line":920},{"name":"template","line":924},{"name":"spec_command","line":928},{"name":"gen_command","line":932},{"name":"compile_project_command","line":936},{"name":"result","line":940},{"name":"result","line":944},{"name":"result","line":952},{"name":"result","line":958},{"name":"result","line":962},{"name":"result","line":966},{"name":"result","line":970},{"name":"result","line":974},{"name":"result","line":978}],"imports":[],"terms":["compiler","runtime","commands","create","valid","kinds","path","content","validate","validation","list","status","count","gen","conformance","total","success","compile","project","rel","key","ext","dest","dir","build","zig","lint","skill","begin","registry","timestamp","branch","seal","help","generate","template","header","verilog","load","compute","hash","data","block","invariant","metadata","map","entry","init","put","get","backend","extension","strip","prefix"]},{"id":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/router_tb.t27","health":"ok","module":"Router_Testbench"}],"description":"t27/specs/fpga/testbench/router_tb.t27 FPGA Router Testbench Tests routing graph construction, pathfinding, and congestion estimation","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"GRID_SIZE","line":11},{"name":"NUM_LAYERS","line":12},{"name":"MAX_NETS","line":13},{"name":"tick","line":27},{"name":"reset","line":32},{"name":"manhattan_distance","line":40},{"name":"estimate_wire_length","line":48},{"name":"congestion_factor","line":53}],"imports":[{"name":"fpga::router::Router","line":8}],"terms":["fpga","testbench","router","clk","period","grid","size","num","layers","max","nets","tick","reset","manhattan","distance","estimate","wire","length","congestion","factor"]},{"id":"80e970c2be2a313cfca43bc0bbb20397259952dd2d26af5b1359e1d26ea1a4b3","sources":[{"repo":"ghashtag/t27","path":"specs/ar/explainability.t27","health":"ok","module":null}],"description":"spec: Explainability Explainable AI (XAI) mechanisms for neuro-symbolic reasoning","symbols":[{"name":"Explanation","line":7},{"name":"FeatureImportance","line":15},{"name":"AttentionWeights","line":22},{"name":"MAX_EXPLANATION_STEPS","line":29},{"name":"new_explanation","line":32},{"name":"add_reasoning_step","line":42},{"name":"set_conclusion","line":59},{"name":"check_toxicity","line":69},{"name":"mark_toxic","line":93},{"name":"compute_feature_importance","line":103},{"name":"normalize_importance","line":130},{"name":"format_explanation","line":155},{"name":"trit_to_string","line":187},{"name":"extract_proof_steps","line":200},{"name":"verify_explainability","line":211},{"name":"counterfactual","line":248}],"imports":[],"terms":["explainability","explanation","feature","importance","attention","weights","max","steps","reasoning","step","set","conclusion","toxicity","mark","toxic","compute","normalize","format","trit","extract","proof","verify","counterfactual"]},{"id":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/api_documenter.t27","health":"warn","module":"api_documenter"}],"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","symbols":[{"name":"MAX_FUNCTIONS","line":7},{"name":"MAX_PARAMETERS","line":8},{"name":"MAX_EXAMPLES","line":9},{"name":"MAX_DESCRIPTIONS","line":10},{"name":"create_function_doc","line":13},{"name":"get_doc_function_id","line":20},{"name":"get_doc_param_count","line":24},{"name":"get_doc_return_type","line":28},{"name":"get_doc_complexity","line":32},{"name":"create_param_doc","line":37},{"name":"get_param_doc_id","line":44},{"name":"get_param_doc_type","line":48},{"name":"get_param_direction","line":52},{"name":"get_param_description_id","line":56},{"name":"DIR_IN","line":61},{"name":"DIR_OUT","line":62},{"name":"DIR_INOUT","line":63},{"name":"extract_function_signature","line":66},{"name":"extract_parameter_info","line":76},{"name":"create_function_example","line":85},{"name":"get_example_function_id","line":92},{"name":"get_example_input","line":96},{"name":"get_example_output","line":100},{"name":"get_example_explanation","line":104},{"name":"generate_function_example","line":109},{"name":"create_description_text","line":123},{"name":"get_description_id","line":130},{"name":"get_description_length","line":134},{"name":"get_description_importance","line":138},{"name":"get_description_category","line":142},{"name":"generate_function_description","line":147},{"name":"create_cross_reference","line":165},{"name":"get_xref_source","line":172},{"name":"get_xref_target","line":176},{"name":"get_xref_type","line":180},{"name":"get_xref_strength","line":184},{"name":"XREF_CALLS","line":189},{"name":"XREF_CALLED_BY","line":190},{"name":"XREF_RELATED","line":191},{"name":"XREF_SIMILAR","line":192},{"name":"detect_function_call","line":195},{"name":"create_module_doc","line":200},{"name":"get_module_doc_id","line":207},{"name":"get_module_function_count","line":211},{"name":"get_module_total_complexity","line":215},{"name":"get_module_description","line":219},{"name":"calculate_average_complexity","line":224},{"name":"generate_api_documentation","line":241},{"name":"calculate_documentation_coverage","line":269},{"name":"generate_usage_example","line":278},{"name":"create_dependency_graph","line":289},{"name":"validate_documentation","line":318},{"name":"generate_documentation_report","line":353}],"imports":[{"name":"base::types","line":5}],"terms":["net","api","documenter","max","functions","parameters","examples","descriptions","create","doc","get","param","count","complexity","direction","description","dir","out","inout","extract","signature","parameter","info","example","explanation","generate","text","length","importance","category","cross","reference","xref","target","strength","calls","called","related","similar","detect","call","total","calculate","average","documentation","usage","dependency","graph","validate","report"]},{"id":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","sources":[{"repo":"ghashtag/t27","path":"specs/git/status.t27","health":"ok","module":"GitStatus"}],"description":"specs/git/status.t27 Git Status Operations","symbols":[{"name":"status","line":14},{"name":"is_clean","line":19},{"name":"status_short","line":24},{"name":"status_long","line":29},{"name":"status_ignored","line":34},{"name":"filter_by_status","line":43},{"name":"filter_by_pattern","line":48},{"name":"filter_added","line":53},{"name":"filter_deleted","line":58},{"name":"filter_modified","line":63},{"name":"count_by_kind","line":72},{"name":"get_changed_files","line":77},{"name":"has_changes","line":82}],"imports":[{"name":"base::types","line":6},{"name":"git::schema","line":7}],"terms":["git","status","clean","short","long","ignored","filter","pattern","added","deleted","modified","count","kind","get","changed"]},{"id":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/modem_frame.t27","health":"ok","module":"ModemFrame"}],"description":"tri-net/specs/modem_frame.t27 Integer frame geometry + sync gate of the BPSK modem in src/modem.rs (T27-first). The Barker-13 correlation itself is f32 (matched filtering over noisy IQ) and stays in Rust; but the FRAME LAYOUT is pure integer arithmetic and is lifted here as the single source of truth: on-air symbol counts, the minimum-length parse gate, the payload cap, the decode bounds check, and the sync threshold as a fraction of the","symbols":[{"name":"PREAMBLE_LEN","line":15},{"name":"BITS_PER_BYTE","line":16},{"name":"MAX_PAYLOAD","line":17},{"name":"PEAK","line":19},{"name":"SYNC_THRESHOLD","line":21},{"name":"frame_symbols","line":24},{"name":"min_parse_len","line":30},{"name":"can_parse","line":35},{"name":"payload_fits","line":40},{"name":"decode_fits","line":50},{"name":"is_synced","line":55},{"name":"sync_margin_pct","line":60}],"imports":[{"name":"base::types","line":12}],"terms":["net","modem","frame","preamble","len","bits","per","byte","max","payload","peak","sync","threshold","min","parse","fits","decode","synced","margin","pct"]},{"id":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/topology_visualizer.t27","health":"warn","module":"topology_visualizer"}],"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EDGES","line":8},{"name":"MAX_LAYERS","line":9},{"name":"CANVAS_SIZE","line":10},{"name":"create_visual_node","line":13},{"name":"get_viz_node_id","line":20},{"name":"get_node_x_position","line":24},{"name":"get_node_y_position","line":28},{"name":"get_node_visual_status","line":32},{"name":"STATUS_ACTIVE","line":37},{"name":"STATUS_INACTIVE","line":38},{"name":"STATUS_FAILED","line":39},{"name":"STATUS_WARNING","line":40},{"name":"create_visual_edge","line":43},{"name":"get_viz_edge_source","line":50},{"name":"get_viz_edge_dest","line":54},{"name":"get_viz_edge_quality","line":58},{"name":"get_viz_edge_type","line":62},{"name":"EDGE_WIRED","line":67},{"name":"EDGE_WIRELESS","line":68},{"name":"EDGE_ACTIVE_ROUTE","line":69},{"name":"EDGE_BACKUP_ROUTE","line":70},{"name":"create_color","line":73},{"name":"get_color_red","line":80},{"name":"get_color_green","line":84},{"name":"get_color_blue","line":88},{"name":"get_color_alpha","line":92},{"name":"COLOR_GREEN","line":97},{"name":"COLOR_RED","line":98},{"name":"COLOR_YELLOW","line":99},{"name":"COLOR_BLUE","line":100},{"name":"COLOR_GRAY","line":101},{"name":"get_status_color","line":104},{"name":"create_layout_params","line":117},{"name":"get_layout_algorithm","line":124},{"name":"get_layout_iterations","line":128},{"name":"get_layout_temperature","line":132},{"name":"get_layout_cooling_rate","line":136},{"name":"ALGORITHM_FORCE_DIRECTED","line":141},{"name":"ALGORITHM_CIRCULAR","line":142},{"name":"ALGORITHM_HIERARCHICAL","line":143},{"name":"ALGORITHM_GRID","line":144},{"name":"calculate_force_layout","line":147},{"name":"calculate_circular_layout","line":222},{"name":"calculate_hierarchical_layout","line":247},{"name":"apply_layout","line":277},{"name":"render_node","line":293},{"name":"render_edge","line":309},{"name":"create_visualization_frame","line":352},{"name":"calculate_viz_complexity","line":376},{"name":"optimize_rendering","line":384},{"name":"generate_topology_visualization","line":398}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","topology","visualizer","max","nodes","edges","layers","canvas","size","create","visual","node","get","viz","position","status","active","inactive","failed","warning","edge","dest","quality","wired","wireless","route","backup","color","red","green","blue","alpha","yellow","gray","layout","params","algorithm","iterations","temperature","cooling","rate","force","directed","circular","hierarchical","grid","calculate","apply","render","visualization","frame","complexity","optimize","rendering","generate"]},{"id":"8307925dbc45b3ed584415d8bd9070bb7ec3587ed027bc0f724e5805fcc13f43","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/elu_activation.t27","health":"ok","module":"Elu"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_ALPHA","line":13},{"name":"ELUConfig","line":19},{"name":"forward","line":28},{"name":"forward_batch","line":33},{"name":"derivative","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","elu","default","alpha","eluconfig","forward","batch","derivative"]},{"id":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/partition_tb.t27","health":"ok","module":"Partition_Testbench"}],"description":"t27/specs/fpga/testbench/partition_tb.t27 FPGA Partition Testbench Tests floorplanning regions, hierarchical partitioning, and resource budgeting","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_PARTITIONS","line":11},{"name":"TOTAL_RESOURCES","line":12},{"name":"tick","line":22},{"name":"reset","line":27},{"name":"budget_resources","line":35},{"name":"budget_remainder","line":40},{"name":"check_partition_balance","line":45}],"imports":[{"name":"fpga::partition::Partition","line":8}],"terms":["fpga","testbench","partition","clk","period","max","partitions","total","resources","tick","reset","budget","remainder","balance"]},{"id":"83aa4fea931086c40ec0010442eeb70ec84787ab500f472c20652481b8db9b0d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/fs.t27","health":"ok","module":"TriFs"}],"description":"t27/specs/","symbols":[{"name":"Path","line":13},{"name":"FileInfo","line":18},{"name":"join","line":30},{"name":"basename","line":35},{"name":"dirname","line":40},{"name":"extension","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["path","info","join","basename","dirname","extension"]},{"id":"83bcf7b8bcf5e4c1191f1c163b2f060e9a35b2a1a9e3bb3cc5809dbee41c5b6b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/pathway/mlp.t27","health":"ok","module":"Mlp"}],"description":"t27/specs/","symbols":[{"name":"MNIST_INPUT_SIZE","line":13},{"name":"MNIST_OUTPUT_SIZE","line":14},{"name":"DEFAULT_HIDDEN_SIZE","line":15},{"name":"MLPConfig","line":21},{"name":"MLPState","line":27},{"name":"forward","line":39},{"name":"init","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pathway","mlp","mnist","size","default","hidden","mlpconfig","mlpstate","forward","init"]},{"id":"83ce36c41a0e28ccfb5a1fec555366bafd6a4a2307bbd82ba498bdd2d8b4e174","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/queue.t27","health":"ok","module":"TriQueue"}],"description":"t27/specs/","symbols":[{"name":"Queue","line":13},{"name":"empty","line":23},{"name":"enqueue","line":28},{"name":"dequeue","line":33},{"name":"peek","line":38},{"name":"is_empty","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","queue","empty","enqueue","dequeue","peek"]},{"id":"83f6f63fc0251ec6be3cf85e1e4d8dbdc8a9a91a05a5674aa7a70b37914db052","sources":[{"repo":"ghashtag/t27","path":"specs/physics/e8_lqg_bridge.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"roots","line":94},{"name":"params","line":101},{"name":"V","line":102},{"name":"root","line":107},{"name":"proj","line":108}],"imports":[],"terms":["physics","lqg","bridge","roots","params","root","proj"]},{"id":"8400075d826d25687c6e8b870036acfd8e2f433d8b8caa5462815acff4fb9c76","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/binary_crossentropy_loss.t27","health":"ok","module":"BinaryCe"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_EPSILON","line":13},{"name":"BinaryCEConfig","line":19},{"name":"Reduction","line":25},{"name":"sigmoid","line":34},{"name":"forward","line":39},{"name":"forward_batch","line":44},{"name":"gradient","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","binary","crossentropy","default","epsilon","ceconfig","reduction","sigmoid","forward","batch","gradient"]},{"id":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/video_bridge.t27","health":"ok","module":"VideoBridge"}],"description":"Video bridge protocol: phone ↔ mesh node video transport. Defines frame format for H.264 NAL units split into mesh-sized fragments. Phone sends raw H.264 Annex-B NAL units via UDP to mesh node. Node fragments into VSTREAM packets for mesh transport. Receiver reassembles and sends back to phone via UDP. phi^2 + phi^-2 = 3","symbols":[{"name":"VSTREAM_TYPE","line":12},{"name":"FRAG_HEADER_LEN","line":13},{"name":"MAX_FRAG_DATA","line":14},{"name":"TYPE_OFFSET","line":17},{"name":"SEQ_LOW_OFFSET","line":18},{"name":"SEQ_HIGH_OFFSET","line":19},{"name":"FRAG_INDEX_OFFSET","line":20},{"name":"FRAG_COUNT_OFFSET","line":21},{"name":"VIDEO_IN_PORT","line":28},{"name":"VIDEO_OUT_PORT","line":29},{"name":"MESH_PORT","line":30},{"name":"AUDIO_IN_PORT","line":42},{"name":"FEEDBACK_PORT","line":63},{"name":"FEEDBACK_TYPE","line":64},{"name":"FEEDBACK_LEN","line":65},{"name":"ADVICE_HOLD","line":67},{"name":"ADVICE_BACK_OFF","line":68},{"name":"ADVICE_CLIMB","line":69},{"name":"FB_UTIL_OFFSET","line":72},{"name":"FB_DROP_OFFSET","line":73},{"name":"FB_RATE_LO_OFFSET","line":74},{"name":"FB_RATE_HI_OFFSET","line":75},{"name":"FB_ADVICE_OFFSET","line":76},{"name":"fb_util_pct","line":81},{"name":"fb_drop_pct","line":98},{"name":"CLIMB_BELOW_PCT","line":125},{"name":"BACK_OFF_AT_PCT","line":126},{"name":"fb_should_back_off","line":130},{"name":"fb_may_climb","line":139},{"name":"fb_advice","line":147},{"name":"SEQ_EXPRESS_BASE","line":164},{"name":"video_seq","line":166},{"name":"express_seq","line":170},{"name":"RX_REPORT_TYPE","line":183},{"name":"RX_REPORT_LEN","line":184},{"name":"fb_effective_rate","line":192},{"name":"fb_chain_report","line":210},{"name":"VSTREAM_FEC_TYPE","line":242},{"name":"FEC_HEADER_LEN","line":243},{"name":"FEC_GROUP","line":244},{"name":"FEC_GROUP_OFFSET","line":247},{"name":"FEC_COUNT_OFFSET","line":248},{"name":"FEC_LAST_LEN_OFFSET","line":249},{"name":"fec_group_count","line":253},{"name":"fec_stride","line":266},{"name":"fec_group_of","line":271},{"name":"fec_group_first","line":278},{"name":"fec_group_len","line":284},{"name":"fec_can_recover","line":295},{"name":"fec_packet_size","line":300},{"name":"frag_seq","line":306},{"name":"seq_lo","line":313},{"name":"seq_hi","line":318},{"name":"fragment_count","line":324},{"name":"packet_size","line":337},{"name":"is_last_fragment","line":342},{"name":"is_first_fragment","line":347},{"name":"data_offset","line":352},{"name":"max_nal_size","line":357},{"name":"nal_fits","line":362}],"imports":[{"name":"base::types","line":9}],"terms":["net","video","bridge","vstream","frag","header","len","max","data","offset","seq","low","high","index","count","port","out","mesh","audio","feedback","advice","hold","back","off","climb","util","drop","rate","pct","below","may","express","base","report","effective","chain","fec","group","stride","recover","packet","size","fragment","nal","fits"]},{"id":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/cts.t27","health":"ok","module":"CTS"}],"description":"t27/specs/fpga/cts.t27 T27 Clock Tree Synthesis Specification PLL configuration, clock buffer trees, skew estimation Artix-7: BUFH=0.05ns, BUFG=0.1ns, PLL jitter=50ps, max skew=100ps Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"PllConfig","line":11},{"name":"pll_config","line":20},{"name":"pll_period_ps","line":37},{"name":"ClockBuffer","line":44},{"name":"bufg","line":50},{"name":"bufh","line":54},{"name":"bufg_has_higher_fanout","line":58},{"name":"ClockTree","line":62},{"name":"clock_tree","line":69},{"name":"tree_delay_ps","line":78},{"name":"skew_ok","line":82},{"name":"CtsReport","line":86},{"name":"cts_ok","line":95},{"name":"passed","line":106},{"name":"est_buffers_needed","line":112},{"name":"est_tree_levels","line":119},{"name":"validate_pll","line":131}],"imports":[],"terms":["fpga","cts","pll","config","period","clock","buffer","bufg","bufh","higher","fanout","tree","delay","skew","report","passed","est","buffers","needed","levels","validate"]},{"id":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","sources":[{"repo":"ghashtag/t27","path":"specs/demos/simple_test.t27","health":"ok","module":"SimpleTest"}],"description":"Simple test spec","symbols":[{"name":"TEST_VALUE","line":6}],"imports":[{"name":"base::types","line":4}],"terms":["demos","simple"]},{"id":"85886ff8a1b7a674923d3b4ab6e76727ad0ab89b7adb14a853a12bd946df48c8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crc16.t27","health":"ok","module":"Crc16Ccitt"}],"description":"CRC-16/CCITT error detection (no-let version)","symbols":[{"name":"CRC16_CCITT_POLY","line":6},{"name":"CRC16_INIT","line":7},{"name":"crc_update_bit","line":10},{"name":"crc_update_byte","line":19},{"name":"crc16_4bytes","line":39},{"name":"verify_crc16_4bytes","line":50}],"imports":[{"name":"base::types","line":4}],"terms":["net","crc16","crc16ccitt","ccitt","poly","init","crc","bit","byte","4bytes","verify"]},{"id":"85ee6b76ac54f68b3023b73083cabfcc56dd14175e5f403a0a6a5e2f8c03d957","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_lifecycle.t27","health":"ok","module":"TriAutonomousLifecycle"}],"description":"t27/specs/","symbols":[{"name":"LifecycleState","line":13},{"name":"LifecycleEvent","line":19},{"name":"AutonomousAgent","line":28},{"name":"Task","line":37},{"name":"TaskType","line":46},{"name":"TaskStatus","line":52},{"name":"PerformanceMetrics","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["autonomous","lifecycle","state","event","status","performance","metrics"]},{"id":"86e81f4b5cd5a08015f4d2df7b1d1fe992430bc04278851f0c66e0b050c2d8e2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hex.t27","health":"ok","module":"TriHex"}],"description":"t27/specs/","symbols":[{"name":"Hex","line":13},{"name":"lower_case","line":22},{"name":"upper_case","line":27},{"name":"encode","line":32},{"name":"decode","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","hex","lower","case","upper","encode","decode"]},{"id":"870a33f2ff7a6fe458c1d4ebbff5cf8632c697d2f59a5bf243e943bf1e5186db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/access_control.t27","health":"ok","module":"AccessControl"}],"description":"Access Control - node authentication and authorization Simplified RBAC for mesh network security","symbols":[{"name":"MAX_NODES","line":7},{"name":"ROLE_NONE","line":8},{"name":"ROLE_GUEST","line":9},{"name":"ROLE_USER","line":10},{"name":"ROLE_ADMIN","line":11},{"name":"PERMIT","line":12},{"name":"DENY","line":13},{"name":"create_node_creds","line":16},{"name":"get_node_id","line":23},{"name":"get_role","line":27},{"name":"get_auth_token","line":31},{"name":"is_authorized","line":35},{"name":"create_policy","line":40},{"name":"get_resource","line":48},{"name":"get_min_role","line":52},{"name":"get_guest_perm","line":56},{"name":"get_user_perm","line":60},{"name":"get_admin_perm","line":64},{"name":"role_meets_minimum","line":69},{"name":"check_access","line":74},{"name":"verify_creds","line":93},{"name":"authorize_node","line":102},{"name":"revoke_node","line":110},{"name":"change_role","line":118},{"name":"check_resource_access","line":126}],"imports":[{"name":"base::types","line":5}],"terms":["net","access","control","max","nodes","role","guest","user","admin","permit","deny","create","node","creds","get","auth","token","authorized","policy","resource","min","perm","meets","minimum","verify","authorize","revoke"]},{"id":"876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/swarm_coordinator.t27","health":"ok","module":"SwarmCoordinator"}],"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUORUM_THRESHOLD","line":8},{"name":"PROPOSAL_TIMEOUT","line":9},{"name":"VOTE_YES","line":10},{"name":"VOTE_NO","line":11},{"name":"VOTE_ABSTAIN","line":12},{"name":"create_proposal","line":17},{"name":"get_proposal_id","line":24},{"name":"get_proposal_node","line":28},{"name":"get_proposal_value","line":32},{"name":"get_proposal_timestamp","line":36},{"name":"create_vote","line":41},{"name":"get_vote_node","line":48},{"name":"get_vote_value","line":52},{"name":"get_vote_proposal_id","line":56},{"name":"get_vote_timestamp","line":60},{"name":"create_vote_array","line":67},{"name":"get_vote","line":71},{"name":"count_votes","line":79},{"name":"has_quorum","line":136},{"name":"proposal_passes","line":142},{"name":"calculate_consensus_value","line":149},{"name":"cooperative_decision","line":201}],"imports":[{"name":"base::types","line":5}],"terms":["net","swarm","coordinator","max","nodes","quorum","threshold","proposal","timeout","vote","yes","abstain","create","get","node","timestamp","array","count","votes","passes","calculate","consensus","cooperative","decision"]},{"id":"878a4f0adcbe1e4e645217f48c2e9237a2f48a6e1027e10e4f273c6dacc72813","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma_conjecture.t27","health":"ok","module":"GammaConjecture"}],"description":"t27/specs/physics/gamma_conjecture.t27 Strand I -- Loop Quantum Gravity Conjecture GI1: Barbero-Immirzi Parameter from Golden Section","symbols":[{"name":"GAMMA_PHI","line":17},{"name":"GAMMA_LQG_STANDARD","line":22},{"name":"GAMMA_LQG_ALT","line":27},{"name":"DELTA_GAMMA_1_PHI_PERCENT","line":30},{"name":"DELTA_GAMMA_2_1_PERCENT","line":34},{"name":"newtons_constant_from_gamma","line":44},{"name":"pi_sq","line":45},{"name":"pi_cub","line":46},{"name":"gamma_sq","line":47},{"name":"black_hole_entropy_from_gamma","line":53},{"name":"black_hole_shadow_from_gamma","line":59},{"name":"superconductor_tc_sc3","line":65},{"name":"gamma_sq","line":66},{"name":"superconductor_tc_sc4","line":72},{"name":"GammaConjectureReport","line":80},{"name":"verify_gamma_conjecture","line":94},{"name":"PI","line":95},{"name":"g_phi","line":96},{"name":"g_1","line":97},{"name":"bh_s_phi","line":98},{"name":"bh_s_1","line":99}],"imports":[{"name":"math::constants","line":7}],"terms":["physics","gamma","conjecture","phi","lqg","standard","alt","delta","percent","newtons","constant","cub","black","hole","entropy","shadow","superconductor","sc3","sc4","report","verify"]},{"id":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/requant_boundary.t27","health":"ok","module":"RequantBoundary"}],"description":"t27/specs/numeric/requant_boundary.t27 Activation requantizer: the threshold boundary convention. Recorded because Wave 669 had to settle a semantic question with no specification to appeal to. Two independently written implementations of the same rule -- the emitted `activation_requant` RTL and the end-to-end testbench reference in sim/tb_data_check.v -- agreed everywhere except at","symbols":[{"name":"MUTANT","line":11},{"name":"MUTANT2","line":12},{"name":"MUTANT3","line":13},{"name":"TRIT_N","line":20},{"name":"TRIT_Z","line":21},{"name":"TRIT_P","line":22},{"name":"TRIT_RESERVED","line":23},{"name":"requantize","line":38},{"name":"negative_threshold_yields_p","line":55},{"name":"VERIFY_CHECKED","line":73},{"name":"VERIFY_MATCHED","line":74},{"name":"VERIFY_BOUNDARY_REACHED","line":75},{"name":"VERIFY_ACC_MIN_OBSERVED","line":76},{"name":"VERIFY_ACC_MAX_OBSERVED","line":77},{"name":"FINDING_SITE","line":93},{"name":"FINDING_RESOLVED","line":94},{"name":"OPEN_QUESTION_DO_NOT_GUESS","line":104},{"name":"SUPERIORITY_CLAIMED","line":116},{"name":"MEASURED_ON_FPGA","line":117}],"imports":[],"terms":["numeric","requant","boundary","mutant","mutant2","mutant3","trit","reserved","requantize","negative","threshold","yields","verify","checked","matched","reached","acc","min","observed","max","finding","site","resolved","open","question","guess","superiority","claimed","measured","fpga"]},{"id":"881cb1ecd624422cbe055e73272343e1fa48151ce41b680fa1b01eaed9a26319","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_sorting.t27","health":"warn","module":"TernarySorting"}],"description":"t27/specs/isa/ternary_sorting.t27 Ternary Sorting Operations Specification Ring 080 - Sorting algorithms for ternary data 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TRIT_NEG","line":10},{"name":"TRIT_ZERO","line":11},{"name":"TRIT_POS","line":12},{"name":"sort_compare","line":15},{"name":"bubble_sort","line":22},{"name":"selection_sort","line":42},{"name":"insertion_sort","line":63},{"name":"quick_sort","line":78},{"name":"is_sorted","line":103}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","sorting","trit","neg","zero","pos","sort","compare","bubble","selection","insertion","quick","sorted"]},{"id":"8879f6761c27c51c6c8ed11a13974ac5935ae6e9776cc04f64ca8ff0ac4169d2","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/holo_mux_x4.t27","health":"warn","module":"sacred-holo_mux_x4"}],"description":"holo_mux_x4.t27 — Sacred Opcode 0xE6: Holographic 4x Multiplexer Hardware multiplexer for holographic data paths with 4-way select","symbols":[{"name":"OP_HOLO_MUX_X4","line":12},{"name":"NUM_INPUTS","line":14},{"name":"DATA_WIDTH","line":15},{"name":"SELECT_BITS","line":16},{"name":"HOLO_LAYER_NORTH","line":18},{"name":"HOLO_LAYER_EAST","line":19},{"name":"HOLO_LAYER_SOUTH","line":20},{"name":"HOLO_LAYER_WEST","line":21},{"name":"HOLO_PHASE_0","line":23},{"name":"HOLO_PHASE_90","line":24},{"name":"HOLO_PHASE_180","line":25},{"name":"HOLO_PHASE_270","line":26},{"name":"HOLO_VALID","line":28},{"name":"HOLO_INVALID","line":29},{"name":"HoloInput","line":35},{"name":"HoloMuxConfig","line":43},{"name":"HoloOutput","line":50},{"name":"HoloMuxState","line":58},{"name":"holo_input_valid","line":70},{"name":"holo_input_score","line":76},{"name":"phi_bonus","line":85},{"name":"priority_bonus","line":91},{"name":"holo_mux_select","line":104},{"name":"selected_idx","line":105},{"name":"frozen_input","line":109},{"name":"selected","line":119},{"name":"holo_mux_best","line":131},{"name":"frozen_input","line":133},{"name":"score","line":147},{"name":"selected","line":154},{"name":"holo_mux_valid","line":166},{"name":"holo_mux_count_valid","line":178},{"name":"holo_mux_any_valid","line":190},{"name":"holo_mux_all_valid","line":201},{"name":"holo_layer_is_north","line":215},{"name":"holo_layer_is_east","line":220},{"name":"holo_layer_is_south","line":225},{"name":"holo_layer_is_west","line":230},{"name":"holo_opposite_layer","line":236},{"name":"holo_phase_90_deg","line":252},{"name":"holo_phase_180_deg","line":258},{"name":"holo_phase_270_deg","line":264},{"name":"holo_phase_opposite","line":270},{"name":"encode_holo_mux_x4","line":280},{"name":"op","line":282},{"name":"layer_field","line":283},{"name":"phase_field","line":284},{"name":"frozen_field","line":285},{"name":"decode_holo_mux_x4","line":291},{"name":"layer","line":292},{"name":"phase","line":293},{"name":"frozen","line":294}],"imports":[],"terms":["chips","euler","fpga","holo","mux","sacred","num","inputs","data","width","select","bits","layer","north","east","south","west","phase","valid","invalid","config","state","score","phi","bonus","priority","selected","idx","frozen","best","count","opposite","deg","encode","field","decode"]},{"id":"88defe0150c9788a031d6028f0ce24fb7f84434a4a208f763e9e11d71a8705b5","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma-conflict.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","gamma","conflict"]},{"id":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","sources":[{"repo":"ghashtag/t27","path":"specs/tools/schema.t27","health":"warn","module":"Tools"}],"description":"specs/tools/schema.t27 Tools Types Specification","symbols":[{"name":"ToolID","line":14},{"name":"CallID","line":17},{"name":"ToolCategory","line":24},{"name":"ToolPermission","line":35},{"name":"ParameterSchema","line":46},{"name":"ToolParameters","line":55},{"name":"ToolMetadata","line":61},{"name":"ToolDefinition","line":71},{"name":"ToolContext","line":83},{"name":"ToolResult","line":93},{"name":"ToolCall","line":106},{"name":"ValidationError","line":118},{"name":"ValidationResult","line":125},{"name":"ToolRegistry","line":135},{"name":"ToolError","line":146},{"name":"MAX_OUTPUT_LENGTH","line":160},{"name":"DEFAULT_TIMEOUT_MS","line":161},{"name":"is_dangerous","line":168},{"name":"requires_permission","line":173},{"name":"is_allowed","line":178}],"imports":[{"name":"base::types","line":6},{"name":"session::schema","line":7}],"terms":["schema","tool","call","category","permission","parameter","parameters","metadata","definition","validation","registry","max","length","default","timeout","dangerous","requires","allowed"]},{"id":"892bfeccae76c838fbdf64c33008605d79293384109ec5b22d087373db822e7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/transport_tx_fsm.t27","health":"ok","module":"TransportTxFsm"}],"description":"Transport TX FSM for mesh data frame transmission Port from trios-mesh/src/daemon.rs Node::seal_data() Simplified: no crypto, FSM-based retry logic","symbols":[{"name":"ST_IDLE","line":9},{"name":"ST_ENQUEUE","line":10},{"name":"ST_BUILD_HDR","line":11},{"name":"ST_TX_WAIT","line":12},{"name":"ST_ACKED","line":13},{"name":"ST_FAILED","line":14},{"name":"MAX_RETRIES","line":17},{"name":"BASE_RETRY_MS","line":18},{"name":"KIND_DATA","line":19},{"name":"VERSION","line":20},{"name":"next_state","line":23},{"name":"retry_delay_ms","line":53},{"name":"is_retries_exceeded","line":70},{"name":"increment_retry","line":75},{"name":"header_byte","line":85}],"imports":[{"name":"base::types","line":6}],"terms":["net","transport","fsm","idle","enqueue","build","hdr","wait","acked","failed","max","retries","base","retry","kind","data","state","delay","exceeded","increment","header","byte"]},{"id":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/anchor.t27","health":"ok","module":"CoronaAnchor"}],"description":"specs/corona/anchor.t27 TG-TRIAD-X cross-die anchor (carried forward unchanged from Phi/Euler/Gamma).","symbols":[{"name":"ANCHOR_VALUE_U16","line":22},{"name":"ANCHOR_UO_OUT","line":23},{"name":"ANCHOR_UIO_OUT","line":24},{"name":"FMT_ID_ANCHOR","line":56},{"name":"RESPONSE_LATENCY","line":57}],"imports":[{"name":"base::types","line":11},{"name":"math::constants","line":12},{"name":"math::sacred_physics","line":13},{"name":"numeric::gf16","line":14},{"name":"numeric::lucas_accumulator","line":15}],"terms":["corona","anchor","u16","out","uio","fmt","response","latency"]},{"id":"89a82df081a09a38342695f35cabf254134613350aefca687a35ea4759af931e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/splay_tree.t27","health":"ok","module":"TriSplayTree"}],"description":"t27/specs/","symbols":[{"name":"SplayTree","line":13},{"name":"SplayNode","line":19},{"name":"init","line":33},{"name":"find","line":38},{"name":"insert","line":43},{"name":"delete","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","splay","tree","node","init","find","insert","delete"]},{"id":"89af60b026ed44f74e7fdeca2c3486d1b6936ed25eb36952a2acc4fcfceb8887","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_join.t27","health":"warn","module":"TrinityStreamJoinT27"}],"description":"","symbols":[{"name":"join_mask","line":11},{"name":"on_comb","line":16}],"imports":[],"terms":["dmitrii","memory","rtl","stream","join","mask","comb"]},{"id":"89eef91ae05519dabf5a5152db51f335ba5bc5e2ca7e361683da5a42e37041cc","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adam.t27","health":"ok","module":"Adam"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_BETA1","line":13},{"name":"DEFAULT_BETA2","line":14},{"name":"DEFAULT_EPSILON","line":15},{"name":"AdamConfig","line":21},{"name":"step","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","adam","default","beta1","beta2","epsilon","config","step"]},{"id":"89fbd6f1c37f365020db6ef8784fbf958bb80b0148ffad87d5bb6d0620be6ca5","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_critic.t27","health":"ok","module":"PpoCritic"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_HIDDEN","line":13},{"name":"CriticConfig","line":19},{"name":"Activation","line":25},{"name":"forward","line":34},{"name":"compute_advantage","line":39},{"name":"compute_returns","line":44},{"name":"value_loss","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["ppo","critic","default","hidden","config","activation","forward","compute","advantage","returns","loss"]},{"id":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf24.t27","health":"warn","module":"GF24"}],"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 0 24-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 7 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF24","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp_u16","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["chips","euler","numeric","gf24","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"8ab9285758d8870b2943ef4683f7cef21b36ec668f336787eec41dcc6f7e5b5c","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/hardware-constraints-kg.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["hardware","constraints"]},{"id":"8ac2f175a17a71996c19ceddfe61aa010318a6fd81b5aa1491dce361ccf5c4ac","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/negation_invariant.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","negation","invariant"]},{"id":"8b07a766bdb93f91528171c1fdcc4b148c1fb9705dcaa436467157c81ade810b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/ppl_calculator.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","tri27","ppl","calculator"]},{"id":"8b485c4c2584c91329dc3f568cbc97a67c7cbe96f0129ddace1afbb5c26a837a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lr_scheduler.t27","health":"ok","module":"Scheduler"}],"description":"t27/specs/","symbols":[{"name":"SchedulerConfig","line":13},{"name":"get_lr","line":24}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","scheduler","config","get"]},{"id":"8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0","sources":[{"repo":"ghashtag/t27","path":"specs/physics/su2_chern_simons.t27","health":"ok","module":"SU2ChernSimons"}],"description":"t27/specs/physics/su2_chern_simons.t27 SU(2)_k Chern-Simons Theory -- Topological QFT Foundation Direction F (Priority 1) of PROJECT KEPLER->NEWTON This module formalizes the PROVEN THEOREM: golden ratio phi emerges from SU(2) Chern-Simons theory at level k=3 as quantum dimension of Fibonacci anyons. This is NOT numerology -- it is a mathematical","symbols":[{"name":"CS_LEVEL","line":36},{"name":"NUM_SECTORS","line":40},{"name":"CYCLOTOMIC_INDEX","line":44},{"name":"FusionMatrix","line":57},{"name":"fibonacci_fusion_matrix","line":61},{"name":"quantum_dimension_tau","line":70},{"name":"total_quantum_dimension_squared","line":78},{"name":"d_1","line":79},{"name":"d_tau","line":80},{"name":"fibonacci_hilbert_dim","line":86},{"name":"s_matrix_element","line":112},{"name":"kp2","line":113},{"name":"prefactor","line":114},{"name":"angle","line":115},{"name":"quantum_dimension_at_k","line":119},{"name":"s_0j","line":121},{"name":"s_00","line":122},{"name":"quantum_dimension_simplified","line":127},{"name":"kp2","line":128},{"name":"jones_quantum_integer","line":140},{"name":"kp2","line":141},{"name":"trinity_equals_cs_level","line":154},{"name":"trinity","line":155},{"name":"sin","line":163},{"name":"cos","line":178},{"name":"sqrt","line":193},{"name":"abs","line":205}],"imports":[{"name":"math::constants","line":27}],"terms":["physics","su2","chern","simons","su2chern","level","num","sectors","cyclotomic","index","fusion","matrix","fibonacci","quantum","dimension","tau","total","squared","hilbert","dim","element","kp2","prefactor","angle","simplified","jones","integer","equals","sin","cos","sqrt","abs"]},{"id":"8b611091e36db3b92fe7f638cf06ac27b2b81236877affee18656f939e62ac60","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/list.t27","health":"ok","module":"TriList"}],"description":"t27/specs/","symbols":[{"name":"List","line":13},{"name":"empty","line":24},{"name":"cons","line":29},{"name":"head","line":34},{"name":"tail","line":39},{"name":"map","line":44},{"name":"filter","line":49},{"name":"fold","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","list","empty","cons","head","tail","map","filter","fold"]},{"id":"8b7170ce5946d494428c43084d30ccbcad94c0cda325f4dde2cacb16cee3c7b9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_arith.t27","health":"ok","module":"TriGftArith"}],"description":"TRI-NET GF-T (ternary-native GoldenFloat) verifiable multiply arithmetic. A compute receipt binds {format, op, operands, result} and is SIGNED, but a signature only attests WHO produced the result, not that the result is CORRECT. This spec lets a verifier RECOMPUTE the checkable core of a GF-T multiply -- its exponent -- and reject a receipt whose claimed exponent is wrong (compute fraud), independent of any signature.","symbols":[{"name":"GFT16_BIAS","line":20},{"name":"GFT16_OFFSET_MAX","line":21},{"name":"gft_mul_offset","line":26},{"name":"verify_gft_mul_offset","line":43},{"name":"gft_mul_sign","line":48},{"name":"MANT_ONE","line":59},{"name":"gft_mul_mant_carry_p","line":67},{"name":"gft_mul_mant_p","line":78},{"name":"gft_mul_offset_full_p","line":88},{"name":"verify_gft_mul_full_p","line":105},{"name":"gft_mul_mant_carry_u64","line":118},{"name":"gft_mul_mant_u64","line":127},{"name":"gft_mul_offset_full_u64","line":136},{"name":"verify_gft_mul_full_u64","line":151},{"name":"gft_mul_mant_carry","line":161},{"name":"gft_mul_mant","line":164},{"name":"gft_mul_offset_full","line":167},{"name":"verify_gft_mul_full","line":174},{"name":"gft_result_encode","line":185},{"name":"gft_mul_result","line":191}],"imports":[{"name":"base::types","line":18}],"terms":["net","gft","arith","gft16","bias","offset","max","mul","verify","sign","mant","one","carry","full","u64","encode"]},{"id":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/dfs_gate.t27","health":"ok","module":"sacred-dfs_gate"}],"description":"dfs_gate.t27 — Sacred Opcode 0xE7: Depth-First Search Gate Hardware acceleration for DFS traversal and pattern matching","symbols":[{"name":"OP_DFS_GATE","line":12},{"name":"MAX_STACK_DEPTH","line":14},{"name":"MAX_NODES","line":15},{"name":"NODE_ADDR_BITS","line":16},{"name":"VISIT_UNVISITED","line":18},{"name":"VISIT_VISITING","line":19},{"name":"VISIT_VISITED","line":20},{"name":"DFS_MODE_STANDARD","line":22},{"name":"DFS_MODE_DEPTH_LIMITED","line":23},{"name":"DFS_MODE_PATTERN_MATCH","line":24},{"name":"DFS_MODE_PRUNE_SUBOPTIMAL","line":25},{"name":"DfsNode","line":31},{"name":"DfsStack","line":40},{"name":"DfsConfig","line":45},{"name":"DfsState","line":52},{"name":"DfsResult","line":59},{"name":"dfs_stack_init","line":73},{"name":"dfs_stack_push","line":82},{"name":"dfs_stack_pop","line":94},{"name":"node","line":100},{"name":"dfs_stack_peek","line":107},{"name":"dfs_stack_is_empty","line":116},{"name":"dfs_stack_depth","line":122},{"name":"dfs_node_init","line":132},{"name":"dfs_node_add_child","line":145},{"name":"dfs_node_has_child","line":157},{"name":"dfs_node_mark_visiting","line":168},{"name":"dfs_node_mark_visited","line":176},{"name":"dfs_node_is_visited","line":184},{"name":"dfs_node_is_visiting","line":190},{"name":"dfs_traverse","line":200},{"name":"peek","line":212},{"name":"node_idx","line":218},{"name":"pop_result","line":223},{"name":"pop_result","line":258},{"name":"child_addr","line":272},{"name":"child","line":273},{"name":"pop_result","line":290},{"name":"encode_dfs_gate","line":315},{"name":"op","line":317},{"name":"mode_field","line":318},{"name":"start_field","line":319},{"name":"target_field","line":320},{"name":"decode_dfs_gate","line":326},{"name":"mode","line":327},{"name":"start_addr","line":328},{"name":"target","line":329}],"imports":[],"terms":["chips","euler","fpga","dfs","gate","sacred","max","stack","depth","nodes","node","addr","bits","visit","unvisited","visiting","visited","mode","standard","limited","pattern","match","prune","suboptimal","config","state","init","push","pop","peek","empty","child","mark","traverse","idx","encode","field","start","target","decode"]},{"id":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/runtime/runtime.t27","health":"warn","module":null}],"description":"runtime.t27 — Bootstrap Runtime for TRI-27 Assembly Minimal runtime for executing t27 programs","symbols":[{"name":"Trit","line":5},{"name":"PackedTrit","line":12},{"name":"TernaryWord","line":17},{"name":"RegisterFile","line":22},{"name":"Memory","line":27},{"name":"TrinaryCRC","line":33},{"name":"RegisterFile","line":39},{"name":"RegisterFile","line":48},{"name":"RegisterFile","line":59},{"name":"Memory","line":67},{"name":"Memory","line":75},{"name":"Memory","line":90},{"name":"pack_trit","line":102},{"name":"unpack_trit","line":118},{"name":"trit_to_int","line":128},{"name":"int_to_trit","line":137},{"name":"trit_add","line":144},{"name":"trit_mul","line":157},{"name":"balanced_ternary_to_decimal","line":164},{"name":"decimal_to_balanced_ternary","line":177},{"name":"trit_not","line":196},{"name":"vsa_bind","line":205},{"name":"vsa_bundle","line":217},{"name":"trit_similarity","line":249},{"name":"TrinaryCRC","line":265},{"name":"TrinaryCRC","line":273},{"name":"TrinaryCRC","line":288},{"name":"CPU","line":293},{"name":"CPU","line":301},{"name":"CPU","line":311},{"name":"CPU","line":333},{"name":"PHI","line":345},{"name":"PHI_INV","line":346},{"name":"PHI_SQ","line":347},{"name":"TRINITY","line":348},{"name":"verify_trinity_identity","line":351},{"name":"G_SACRED","line":358},{"name":"OMEGA_LAMBDA","line":361},{"name":"GAMMA_LQG","line":364},{"name":"CONSCIOUSNESS_THRESHOLD","line":367},{"name":"is_conscious","line":370},{"name":"time_dilation_factor","line":376},{"name":"fib_phi","line":383}],"imports":[],"terms":["fpga","compiler","runtime","trit","packed","ternary","word","register","memory","trinary","crc","pack","unpack","int","mul","balanced","decimal","vsa","bind","bundle","similarity","cpu","phi","inv","verify","identity","sacred","omega","lambda","gamma","lqg","consciousness","threshold","conscious","time","dilation","factor","fib"]},{"id":"8c7eb232f335e199f7968157572eec38137ed21da8d5636217e68aa03f0fbfe7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/codegen.t27","health":"ok","module":"TestSpec"}],"description":"t27/specs/","symbols":[{"name":"ParseError","line":13}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","codegen","parse"]},{"id":"8c8317e74a8b9562d87049e4b7826d4231c61236cbd2fa77cbf7e3bc539777ed","sources":[{"repo":"ghashtag/t27","path":"specs/brain/bus.t27","health":"ok","module":"brain-bus"}],"description":"bus.t27 -- inter-region messaging contract (spec-first) Message shapes and routing rules expand with region specs.","symbols":[{"name":"BRAIN_BUS_VERSION","line":8},{"name":"brain_bus_version","line":10}],"imports":[],"terms":["brain","bus"]},{"id":"8db5032d715bebe3c8a79ac21378908cde937f4e7a0d561912d35ee31eb72941","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/bilstm.t27","health":"ok","module":"Bilstm"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_INPUT_SIZE","line":13},{"name":"DEFAULT_HIDDEN_SIZE","line":14},{"name":"BiLSTMConfig","line":20},{"name":"LSTMParams","line":26},{"name":"LSTMCellState","line":37},{"name":"BiLSTMOutput","line":42},{"name":"forward_direction","line":54},{"name":"forward","line":59}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","bilstm","default","size","hidden","lstmconfig","lstmparams","lstmcell","state","lstmoutput","forward","direction"]},{"id":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf_competitive.t27","health":"ok","module":"GFCompetitive"}],"description":"t27/specs/numeric/gf_competitive.t27 GF Competitive Analysis Specification Ring 028 — Proving GoldenFloat is not random 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"PHI","line":10},{"name":"TRINITY","line":11},{"name":"TOLERANCE_1E4","line":12},{"name":"TOLERANCE_1E3","line":13},{"name":"gf16_phi_relative_error","line":16},{"name":"phi_identity_check","line":24},{"name":"trinity_identity_check","line":31},{"name":"roundtrip_error","line":38},{"name":"accumulation_check","line":46}],"imports":[{"name":"base::types","line":8}],"terms":["numeric","competitive","gfcompetitive","phi","tolerance","1e4","1e3","gf16","relative","identity","roundtrip","accumulation"]},{"id":"8e659486966270a99e18f69ebb5b9818b057f2edccc316a3e71e3c3c97e36e9b","sources":[{"repo":"ghashtag/t27","path":"specs/server/agent-runner.t27","health":"ok","module":"AgentRunner"}],"description":"specs/server/agent-runner.t27 Agent Runner Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"AgentReport","line":14},{"name":"ToolResult","line":29},{"name":"StopReason","line":36},{"name":"AgentState","line":47},{"name":"MAX_TURNS","line":61},{"name":"MAX_TOOLS_CALLED","line":62},{"name":"MAX_FILES_MODIFIED","line":63},{"name":"DEFAULT_TIMEOUT_SECONDS","line":64},{"name":"MAX_TOKEN_SUMMARY_LENGTH","line":65},{"name":"agent_state_init","line":71},{"name":"agent_report_init","line":82},{"name":"track_tool_call","line":98},{"name":"check_task_complete","line":104},{"name":"stop_reason_from_string","line":112},{"name":"stop_reason_to_string","line":125},{"name":"add_tokens","line":142},{"name":"total_tokens","line":149},{"name":"truncate_string","line":157},{"name":"next_turn","line":165},{"name":"should_continue","line":171},{"name":"build_report","line":179}],"imports":[{"name":"base::types","line":8}],"terms":["runner","report","tool","stop","reason","state","max","turns","called","modified","default","timeout","seconds","token","summary","length","init","track","call","complete","tokens","total","truncate","turn","continue","build"]},{"id":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sources":[{"repo":"ghashtag/t27","path":"specs/pins/ir.t27","health":"warn","module":"PinsIR"}],"description":"t27/specs/pins/ir.t27 Pins Intermediate Representation (IR) Models FPGA pin assignments, I/O standards, clock constraints","symbols":[{"name":"PinLocation","line":11},{"name":"IoStandard","line":17},{"name":"SignalReference","line":24},{"name":"Binding","line":31},{"name":"ClockDef","line":40},{"name":"Design","line":48},{"name":"LVCMOS33","line":57},{"name":"make_input_signal","line":64},{"name":"make_output_signal","line":73},{"name":"make_indexed_signal","line":82},{"name":"make_location","line":91},{"name":"make_binding","line":99},{"name":"make_clock","line":114},{"name":"empty_design","line":124},{"name":"add_binding","line":148},{"name":"add_clock","line":157},{"name":"has_pin_conflict","line":166},{"name":"has_port_conflict","line":183},{"name":"clock_bound","line":202},{"name":"all_clock_ports_bound","line":213},{"name":"binding_count","line":226},{"name":"clock_count","line":230},{"name":"signal_direction","line":234},{"name":"is_indexed","line":238},{"name":"format_port_name","line":242}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9}],"terms":["pins","pin","location","standard","signal","reference","binding","clock","def","design","lvcmos33","make","indexed","empty","conflict","port","bound","ports","count","direction","format"]},{"id":"8ffcce3b336eb21cb1cfa914a39ca513acf89927a5fe45621b3e5ea95c203b14","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/leaky_relu_activation.t27","health":"ok","module":"LeakyRelu"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_ALPHA","line":13},{"name":"LeakyReLUConfig","line":19},{"name":"forward","line":28},{"name":"forward_batch","line":33},{"name":"derivative","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","leaky","relu","default","alpha","luconfig","forward","batch","derivative"]},{"id":"9081f9ef5592e9d1591a6e998d89e9caad8404732672de69059c5261c92cd839","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/topological_sort.t27","health":"ok","module":"TriTopological"}],"description":"t27/specs/","symbols":[{"name":"TopologicalSort","line":14},{"name":"sort","line":24},{"name":"is_valid","line":29}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"TriGraphBfs::Graph","line":8}],"terms":["graph","topological","sort","valid"]},{"id":"90c8b8aaaca66c08288a2e82386a5c48c79fd208f59bea2df1a3e556f575ad01","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf128.t27","health":"ok","module":"triformat-gf128"}],"description":"gf128.t27 — GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 28 exponent + 99 mantissa Bit layout: [S(1) E(28) M(99)] = [127:127][126:99][98:0] Extended range format for high-precision scientific computing","symbols":[{"name":"SIGN_SHIFT","line":14},{"name":"EXP_SHIFT","line":15},{"name":"MANT_SHIFT","line":16},{"name":"SIGN_MASK_HI","line":22},{"name":"SIGN_MASK_LO","line":23},{"name":"EXP_BITS","line":25},{"name":"MANT_BITS","line":26},{"name":"SIGN_BITS","line":27},{"name":"EXP_MAX","line":29},{"name":"EXP_MIN","line":30},{"name":"BIAS","line":32},{"name":"SPECIAL_EXP","line":33},{"name":"PHI_BIAS","line":37},{"name":"GF128","line":44},{"name":"GF128Parts","line":47},{"name":"gf128_to_parts","line":58},{"name":"gf128_from_parts","line":67},{"name":"gf128_extract_sign","line":78},{"name":"parts","line":79},{"name":"bit","line":80},{"name":"gf128_extract_exponent","line":87},{"name":"parts","line":88},{"name":"gf128_extract_mantissa","line":97},{"name":"parts","line":98},{"name":"hi_mant","line":101},{"name":"gf128_from_components","line":111},{"name":"sign_bit","line":112},{"name":"clamped_exp","line":113},{"name":"clamped_mant","line":114},{"name":"hi_exp","line":117},{"name":"hi_mant","line":119},{"name":"lo_mant","line":120},{"name":"hi","line":122},{"name":"lo","line":123},{"name":"GF128_ZERO_POS","line":132},{"name":"GF128_ZERO_NEG","line":133},{"name":"GF128_INF_POS","line":134},{"name":"GF128_INF_NEG","line":135},{"name":"GF128_NAN","line":136},{"name":"gf128_is_zero","line":140},{"name":"gf128_is_special","line":146},{"name":"gf128_is_inf","line":152},{"name":"gf128_is_nan","line":158},{"name":"gf128_encode_f64","line":168},{"name":"sign","line":185},{"name":"abs_value","line":186},{"name":"f64_bits","line":189},{"name":"mant","line":202},{"name":"gf128_decode_f64","line":210},{"name":"sign","line":227},{"name":"exp","line":228},{"name":"mant","line":229},{"name":"mant_f64","line":233},{"name":"bias_adjusted","line":234},{"name":"value","line":240},{"name":"gf128_encode_f128","line":246},{"name":"value_f64","line":249},{"name":"gf128_decode_f128","line":255},{"name":"value_f64","line":256},{"name":"gf128_add","line":265},{"name":"gf128_sub","line":270},{"name":"gf128_mul","line":275},{"name":"gf128_div","line":280},{"name":"fb","line":281},{"name":"fa","line":283},{"name":"gf128_abs","line":294},{"name":"gf128_neg","line":299},{"name":"gf128_is_equal","line":304},{"name":"gf128_is_greater","line":315},{"name":"sign_a","line":319},{"name":"sign_b","line":320},{"name":"gf128_max","line":331},{"name":"gf128_min","line":336},{"name":"gf128_clamp","line":341}],"imports":[],"terms":["chips","euler","numeric","gf128","triformat","sign","shift","exp","mant","mask","bits","max","min","bias","special","phi","gf128parts","parts","extract","bit","exponent","mantissa","components","clamped","zero","pos","neg","inf","nan","encode","f64","abs","decode","adjusted","f128","sub","mul","div","equal","greater","clamp"]},{"id":"911a4877e67ee722fa3853fbe620f48db4aa1091718638d0a8331a6804f59a08","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum_gravity.t27","health":"ok","module":"quantum_gravity"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","quantum","gravity"]},{"id":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/instance.t27","health":"warn","module":"runtime-instance"}],"description":"runtime/instance.t27 — Runtime Instance Specification Instance registration, lookup, lifecycle management","symbols":[{"name":"MAX_INSTANCES","line":20},{"name":"INSTANCE_NAME_LENGTH","line":23},{"name":"LOOKUP_TIMEOUT_MS","line":26},{"name":"InstanceState","line":29},{"name":"InstanceType","line":38},{"name":"TerminationReason","line":46},{"name":"StatusCode","line":55},{"name":"InstanceID","line":68},{"name":"Instance","line":71},{"name":"Registration","line":84},{"name":"LookupResult","line":94},{"name":"ListResult","line":100},{"name":"StatusResponse","line":106},{"name":"Termination","line":114},{"name":"TerminationResult","line":122},{"name":"InstanceStats","line":130},{"name":"id_generate","line":143},{"name":"timestamp","line":145},{"name":"bytes","line":148},{"name":"registration_create","line":157},{"name":"instance_create","line":169},{"name":"agent_instance","line":184},{"name":"server_instance","line":196},{"name":"background_instance","line":208},{"name":"worker_instance","line":220},{"name":"register","line":232},{"name":"unregister","line":238},{"name":"lookup","line":243},{"name":"lookup_by_name","line":252},{"name":"list_all","line":261},{"name":"list_by_type","line":270},{"name":"list_active","line":279},{"name":"terminate","line":288},{"name":"terminate_with_timeout","line":300},{"name":"force_kill","line":316},{"name":"get_status","line":328},{"name":"uptime","line":329},{"name":"duration","line":340},{"name":"is_active","line":345},{"name":"is_terminated","line":350},{"name":"is_suspended","line":355},{"name":"count_all","line":360},{"name":"count_active","line":365},{"name":"status_response_create","line":370},{"name":"int_to_bytes","line":380},{"name":"get_timestamp_ms","line":395},{"name":"append_instance","line":401},{"name":"append_instance_slice","line":411},{"name":"concat_instances","line":418},{"name":"concat_instances_string","line":428},{"name":"append_byte_instances","line":437},{"name":"id","line":448},{"name":"reg","line":453},{"name":"id","line":458},{"name":"inst","line":459},{"name":"inst","line":464},{"name":"inst","line":469},{"name":"inst","line":474},{"name":"result","line":481},{"name":"result","line":487},{"name":"result","line":493},{"name":"status","line":500},{"name":"uptime","line":519},{"name":"resp","line":524},{"name":"list","line":529}],"imports":[{"name":"std","line":12}],"terms":["runtime","instance","max","instances","length","lookup","timeout","state","termination","reason","status","registration","list","response","stats","generate","timestamp","bytes","create","background","worker","register","unregister","active","terminate","force","kill","get","uptime","duration","terminated","suspended","count","int","append","slice","concat","byte","reg","inst","resp"]},{"id":"925172c39fe861f4fa2bb6c2f9bd51f12ee863027e136e18e5f5db5a60b8fdaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/physics/gamma_conjecture.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","physics","gamma","conjecture"]},{"id":"92611173f8a4905896c3b53d26dfdca357a97569f1ea647b4c482e0b36f25861","sources":[{"repo":"ghashtag/trios","path":"trios/policies/precision_policy.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["policies","precision","policy"]},{"id":"92643bce03950f663ae5071666c57c6d76eae0aeabde17acf65d5480f27349a9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_settle.t27","health":"ok","module":"TriSettle"}],"description":"TRI-NET DePIN settlement aggregator -- turns per-epoch Proof-of-Relay receipts (from tri_depin) into a node's $TRI reward for a payout round. A round is a set of epochs; each node's verified total_bytes are summed, and the round's token pool is split proportionally to metered bytes. Pure arithmetic, verifiable, so a settlement contract (or any auditor) can recompute every payout.","symbols":[{"name":"PPM","line":10},{"name":"SNR_FLOOR","line":11},{"name":"SNR_CEIL","line":12},{"name":"round_add","line":16},{"name":"reward_share_ppm","line":27},{"name":"reward_units","line":39},{"name":"weighted_contrib","line":111},{"name":"round_add_weighted","line":116},{"name":"reward_weighted","line":123},{"name":"snr_to_quality","line":190}],"imports":[{"name":"base::types","line":8}],"terms":["net","settle","ppm","snr","floor","ceil","round","reward","share","units","weighted","contrib","quality"]},{"id":"92edde98e6961cc767cf56e5dcc45e372f2441034fb463c6f0f8b3f23558a129","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn.t27","health":"ok","module":"Dqn"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_GAMMA","line":13},{"name":"DEFAULT_EPSILON_START","line":14},{"name":"DEFAULT_EPSILON_END","line":15},{"name":"DQNConfig","line":21},{"name":"Transition","line":34},{"name":"select_action","line":47},{"name":"train_step","line":52},{"name":"update_target","line":57}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["dqn","default","gamma","epsilon","start","end","dqnconfig","transition","select","action","train","step","target"]},{"id":"93b28c8587488c79a31f4d0ac9f4f23d0b12ee8a248d07e2852b3b8dcd30c275","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_encoding.t27","health":"ok","module":"PositionalEnc"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_MAX_LEN","line":13},{"name":"PosEncConfig","line":19},{"name":"forward","line":29}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","positional","encoding","enc","default","max","len","pos","config","forward"]},{"id":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/reports.t27","health":"warn","module":"TrinityMemoryReports"}],"description":"Native HTML report rendering. Every data value is escaped before insertion; HTML/CSS below are presentation templates, not embedded domain algorithms.","symbols":[{"name":"tm_report_escape","line":4},{"name":"tm_report_field","line":17},{"name":"tm_report_string","line":22},{"name":"tm_report_integer","line":28},{"name":"tm_report_ms","line":34},{"name":"tm_report_scores","line":43},{"name":"tm_report_edge_body","line":52},{"name":"tm_report_edge_html","line":115},{"name":"tm_report_number","line":127},{"name":"tm_report_validate_benchmark","line":137},{"name":"tm_report_script_json","line":167},{"name":"tm_report_benchmark_part0","line":181},{"name":"tm_report_benchmark_part1","line":237},{"name":"tm_report_benchmark_part2","line":335},{"name":"tm_report_benchmark_html","line":350}],"imports":[],"terms":["dmitrii","memory","reports","report","escape","field","integer","scores","edge","html","validate","benchmark","script","json","part0","part1","part2"]},{"id":"94369edf5d1ff6cdc3ca1d798a5a5e7a248c0c03c4487d5514bf4299d45237a1","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_add.t27","health":"ok","module":"ternary_add"}],"description":"ternary_add.t27 -- Balanced Ternary Addition Formal Spec Ring 043 -- Formal carry propagation invariants, closure, range formula","symbols":[{"name":"FullAdderResult","line":15},{"name":"trit_full_adder","line":24},{"name":"raw","line":26},{"name":"max_value","line":61},{"name":"min_value","line":73},{"name":"total_states","line":80},{"name":"trit_mul_closed","line":95},{"name":"verify_trit_mul_closure","line":109},{"name":"trits","line":110},{"name":"result","line":113},{"name":"val","line":115},{"name":"carry_sign","line":131},{"name":"normalize_trit","line":138},{"name":"mod3","line":139}],"imports":[{"name":"base::types","line":8}],"terms":["base","ternary","full","adder","trit","raw","max","min","total","states","mul","closed","verify","closure","trits","val","carry","sign","normalize","mod3"]},{"id":"9487c912aba6ffdd9b412b4873cea41baeec4e1a9ebf5049e38e03c3b9ef559a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_libtakum_crossval.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","takum","libtakum","crossval"]},{"id":"948f91989383d6a7e3a148da37c9671bde69f5599fa95abf1c9704922108f3d3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_challenge.t27","health":"ok","module":"TriChallenge"}],"description":"TRI-NET DePIN challenge game: decentralized dispute resolution, so no TRUSTED settlement is needed to catch a lying node. Any node (the challenger) may dispute another node's (the defender's) claimed receipt seal by posting a bond and its own independently computed seal. The dispute is resolved by ANYONE re-metering the same relayed stream to get the truth seal; the party whose seal disagrees with the truth LOSES and forfeits its bond to the winner. This makes challenging a liar profitable","symbols":[{"name":"DEFENDER_HONEST","line":13},{"name":"DEFENDER_LIED","line":14},{"name":"is_valid_challenge","line":17},{"name":"resolve","line":24},{"name":"defender_bond_after","line":35},{"name":"challenger_bond_after","line":43},{"name":"RESOLVE_TIMEOUT","line":106},{"name":"challenge_admissible","line":115},{"name":"dispute_expired","line":123},{"name":"expired_verdict","line":133},{"name":"CH_GFT16_ET","line":144},{"name":"CH_BASE_WINDOW","line":145},{"name":"CH_WINDOW_PER_TRIT","line":146},{"name":"challenge_window_for_rung","line":148},{"name":"challenge_admissible_rung","line":156},{"name":"VERDICT_NONE","line":169},{"name":"witness_majority","line":171},{"name":"witness_verdict","line":178},{"name":"witness_is_majority","line":211},{"name":"majority_count_3","line":215},{"name":"if_seal","line":222},{"name":"minority_pot_3","line":231},{"name":"witness_payout","line":238},{"name":"MAX_OPEN_DISPUTES","line":275},{"name":"CH_BPS_UNIT","line":276},{"name":"dispute_slots_ok","line":278},{"name":"risk_after_open","line":283},{"name":"risk_after_close","line":293},{"name":"dispute_required_bond","line":302},{"name":"may_open_dispute","line":309},{"name":"CH_BOND_BPS_PER_TRIT","line":321},{"name":"dispute_rung_min_bps","line":323},{"name":"may_open_dispute_rung","line":331}],"imports":[{"name":"base::types","line":11}],"terms":["net","challenge","defender","honest","lied","valid","resolve","bond","challenger","timeout","admissible","dispute","expired","verdict","gft16","base","window","per","trit","rung","witness","majority","count","seal","minority","pot","payout","max","open","disputes","bps","unit","slots","risk","close","required","may","min"]},{"id":"94b07d6a708c1a40ea01ad735466a1829b08a98ea73d8c8ac62c23dca79fa775","sources":[{"repo":"ghashtag/t27","path":"specs/ar/coa_planning.t27","health":"ok","module":null}],"description":"spec: CoaPlanning Course of Action (COA) planning for neuro-symbolic reasoning","symbols":[{"name":"ActionType","line":7},{"name":"COAStep","line":22},{"name":"CourseOfAction","line":33},{"name":"ConstraintType","line":45},{"name":"COAConstraint","line":55},{"name":"MAX_COA_STEPS","line":62},{"name":"MAX_PLANNING_DEPTH","line":65},{"name":"new_coa","line":68},{"name":"add_step","line":82},{"name":"generate_coa","line":103},{"name":"verify_coa","line":174},{"name":"satisfies_constraint","line":204},{"name":"validate_prerequisites","line":236},{"name":"extract_proof_trace","line":259},{"name":"format_coa","line":277},{"name":"trit_to_string","line":308},{"name":"action_type_to_string","line":321}],"imports":[],"terms":["coa","planning","action","coastep","course","constraint","coaconstraint","max","steps","depth","step","generate","verify","satisfies","validate","prerequisites","extract","proof","trace","format","trit"]},{"id":"94b8ba45c9fc2ba5bd563a24babe3d3dabf3c73b34b2a3957fcc9021b0ccbb5a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/search.t27","health":"ok","module":"TriSearch"}],"description":"t27/specs/","symbols":[{"name":"SearchResult","line":13},{"name":"binary","line":23},{"name":"linear","line":28},{"name":"lower_bound","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","binary","linear","lower","bound"]},{"id":"951bad07733ec08a0c4ed25ccd7725a5719c5d19b17853dd34475a6a772ec61f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lamb.t27","health":"ok","module":"Lamb"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LR","line":13},{"name":"DEFAULT_BETA1","line":14},{"name":"DEFAULT_BETA2","line":15},{"name":"DEFAULT_EPSILON","line":16},{"name":"DEFAULT_CLIP_THRESHOLD","line":17},{"name":"LAMBConfig","line":23},{"name":"LAMBState","line":32},{"name":"init_state","line":43},{"name":"compute_layer_update","line":48},{"name":"forward","line":53}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","lamb","default","beta1","beta2","epsilon","clip","threshold","lambconfig","lambstate","init","state","compute","layer","forward"]},{"id":"954e3d675f8e00e616cd9edd2b3e811cbf0b32671e1f86a9e4849a276e7fd2b2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/bytes.t27","health":"ok","module":"TriBytes"}],"description":"t27/specs/","symbols":[{"name":"Bytes","line":13},{"name":"empty","line":23},{"name":"from_slice","line":28},{"name":"clone","line":33},{"name":"equals","line":38},{"name":"slice","line":43},{"name":"concat","line":48},{"name":"index_of","line":53},{"name":"split","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","bytes","empty","slice","clone","equals","concat","index","split"]},{"id":"95adae8177152fed3fdc7053855952b9e7c25df01b05220fef44791869fcb740","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/disjoint_set.t27","health":"ok","module":"TriDisjointSet"}],"description":"t27/specs/","symbols":[{"name":"DisjointSet","line":13},{"name":"init","line":24},{"name":"find","line":29},{"name":"union","line":34},{"name":"connected","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","disjoint","set","init","find","union","connected"]},{"id":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/swarm_coordinator.t27","health":"ok","module":"SwarmCoordinator"}],"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUORUM_THRESHOLD","line":8},{"name":"PROPOSAL_TIMEOUT","line":9},{"name":"VOTE_YES","line":10},{"name":"VOTE_NO","line":11},{"name":"VOTE_ABSTAIN","line":12},{"name":"create_proposal","line":15},{"name":"get_proposal_id","line":22},{"name":"get_proposal_node","line":26},{"name":"get_proposal_value","line":30},{"name":"get_proposal_timestamp","line":34},{"name":"create_vote","line":39},{"name":"get_vote_node","line":46},{"name":"get_vote_value","line":50},{"name":"get_vote_proposal_id","line":54},{"name":"get_vote_timestamp","line":58},{"name":"create_vote_array","line":63},{"name":"get_vote","line":74},{"name":"count_votes","line":86},{"name":"has_quorum","line":143},{"name":"proposal_passes","line":149},{"name":"calculate_consensus_value","line":154},{"name":"cooperative_decision","line":206}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","swarm","coordinator","max","nodes","quorum","threshold","proposal","timeout","vote","yes","abstain","create","get","node","timestamp","array","count","votes","passes","calculate","consensus","cooperative","decision"]},{"id":"966383348575729e6d03fe400132af96cdfde5f94474ccaa8075a03d33d89892","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/gravity.t27","health":"ok","module":"TriGravity"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","gravity"]},{"id":"9680b23bbde4df74a98dacb40b7ecf2a5268714bc05b982fd8d95c2ec046f225","sources":[{"repo":"ghashtag/t27","path":"specs/ar/composition.t27","health":"ok","module":null}],"description":"spec: Composition ML+AR composition patterns for neuro-symbolic hybrid reasoning","symbols":[{"name":"ComponentType","line":7},{"name":"CompositionPattern","line":21},{"name":"MLComponent","line":32},{"name":"ARComponent","line":40},{"name":"Pipeline","line":48},{"name":"PipelineResult","line":56},{"name":"MAX_FUSION_DEPTH","line":65},{"name":"compose_cnn_rules","line":68},{"name":"compose_mlp_bayesian","line":78},{"name":"compose_rl_classical","line":88},{"name":"compose_neuro_symbolic","line":98},{"name":"compose_attention_logic","line":108},{"name":"compose_hybrid_vsa","line":118},{"name":"compose_ensemble_k3","line":128},{"name":"execute_pipeline","line":138},{"name":"execute_ml_component","line":189},{"name":"execute_ar_component","line":230},{"name":"fuse_results","line":260},{"name":"get_fusion_method","line":295},{"name":"k3_and_all","line":308},{"name":"majority_vote","line":321},{"name":"count_true","line":334},{"name":"count_unknown","line":345},{"name":"count_false","line":356},{"name":"asp_solve_on_trits","line":367},{"name":"datalog_reason_on_trits","line":373},{"name":"classical_constraints_on_trits","line":379},{"name":"k3_or_all","line":385},{"name":"average","line":398},{"name":"map_floats_to_trits","line":411}],"imports":[],"terms":["composition","component","pattern","mlcomponent","arcomponent","pipeline","max","fusion","depth","compose","cnn","rules","mlp","bayesian","classical","neuro","symbolic","attention","logic","hybrid","vsa","ensemble","execute","fuse","results","get","method","majority","vote","count","unknown","asp","solve","trits","datalog","reason","constraints","average","map","floats"]},{"id":"976ac6894ffb6e536f5271c3692387c8e9fff1b0ed6f280e1aa297c0c8b8340b","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/spec.t27","health":"ok","module":"spec_commands"}],"description":"spec.t27 -- Spec Management Commands Commands for creating and managing t27 specs with TDD enforcement","symbols":[{"name":"spec_create","line":9},{"name":"output_path","line":19},{"name":"content","line":30},{"name":"result","line":31},{"name":"spec_validate","line":58},{"name":"content","line":66},{"name":"context","line":74},{"name":"tdd_errors","line":93},{"name":"spec_list","line":143},{"name":"spec_dir","line":144},{"name":"spec_files","line":150},{"name":"rel_path","line":160},{"name":"content","line":161},{"name":"context","line":166},{"name":"status","line":173},{"name":"is_valid_spec_name","line":189},{"name":"first","line":195},{"name":"generate_spec_template","line":211},{"name":"validate_tdd_compliance","line":267},{"name":"Program","line":303},{"name":"Constant","line":310},{"name":"TestSection","line":315},{"name":"TestCase","line":319},{"name":"InvariantSection","line":326},{"name":"Invariant","line":330},{"name":"SpecDecl","line":336},{"name":"TestBlock","line":341},{"name":"SpecInvariant","line":346},{"name":"ParseError","line":351},{"name":"ParseContext","line":357},{"name":"has_errors","line":361},{"name":"result","line":372},{"name":"result","line":378},{"name":"result","line":383},{"name":"result","line":388},{"name":"result","line":393},{"name":"result","line":398},{"name":"result","line":403},{"name":"template","line":418},{"name":"template","line":424},{"name":"program","line":429},{"name":"errors","line":439},{"name":"program","line":443},{"name":"errors","line":449},{"name":"template","line":466}],"imports":[],"terms":["compiler","cli","commands","create","path","content","validate","tdd","list","dir","rel","status","valid","generate","template","compliance","program","constant","section","case","invariant","decl","block","parse"]},{"id":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/binary16.t27","health":"warn","module":"Binary16"}],"description":"t27/specs/numeric/binary16.t27 Binary16 - Binary packed 16-bit format (3 bits per integer) NUMERIC-STANDARD-001 Agent 13 (P1) Binary16 format: - Packs 5 signed integers (3 bits each) into 16 bits - Each integer range: -4 to 3","symbols":[{"name":"BITS","line":33},{"name":"INT_BITS","line":34},{"name":"NUM_INTS","line":35},{"name":"PADDING_BITS","line":36},{"name":"Binary16","line":40},{"name":"get_int","line":47},{"name":"bit_offset","line":50},{"name":"mask","line":51},{"name":"raw_val","line":52},{"name":"set_int","line":62},{"name":"clamped","line":66},{"name":"bit_offset","line":75},{"name":"mask","line":76},{"name":"cleared","line":77},{"name":"packed","line":78},{"name":"encode","line":84},{"name":"decode","line":93},{"name":"min_value","line":103},{"name":"max_value","line":107},{"name":"range","line":111},{"name":"num_values_per_int","line":115},{"name":"validate_format","line":121},{"name":"MEMORY_RATIO_VS_FP32","line":138},{"name":"add","line":142},{"name":"val_a","line":143},{"name":"val_b","line":144},{"name":"result","line":145},{"name":"sub","line":149},{"name":"val_a","line":150},{"name":"val_b","line":151},{"name":"result","line":152},{"name":"neg","line":156},{"name":"val","line":157},{"name":"eq","line":163},{"name":"eq_at","line":167},{"name":"lt","line":171},{"name":"count_nonzero","line":178},{"name":"any_positive","line":189},{"name":"any_negative","line":199}],"imports":[{"name":"base::testing","line":15},{"name":"base::benchmarking","line":16}],"terms":["chips","euler","numeric","binary16","bits","int","num","ints","padding","get","bit","offset","mask","raw","val","set","clamped","cleared","packed","encode","decode","min","max","range","values","per","validate","format","memory","ratio","fp32","sub","neg","count","nonzero","positive","negative"]},{"id":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_filter.t27","health":"warn","module":"JonesTopologyFilter"}],"description":"t27/specs/demos/jones_topology_filter.t27 MVP: Structure Similarity Classifier using VSA + CS Constants WHAT THIS CODE ACTUALLY DOES: - Takes a hypervector representing a structure - Computes dot_product similarity with a reference structure - Classifies complexity based on similarity thresholds","symbols":[{"name":"JonesSignature","line":21},{"name":"COMPLEXITY_LOW","line":28},{"name":"COMPLEXITY_MID","line":29},{"name":"COMPLEXITY_HIGH","line":30},{"name":"PHI_THRESHOLD_LOW","line":32},{"name":"PHI_THRESHOLD_HIGH","line":33},{"name":"jones_signature","line":36},{"name":"dim","line":37},{"name":"jones","line":40},{"name":"standard","line":43},{"name":"dot","line":44},{"name":"jones_diff","line":47},{"name":"standard_structure","line":67},{"name":"invert_structure","line":84},{"name":"t","line":90},{"name":"complex_structure","line":105},{"name":"t","line":111},{"name":"signatures_match","line":122},{"name":"jones_close","line":123},{"name":"dot_close","line":124},{"name":"level_match","line":125},{"name":"complexity_name","line":131}],"imports":[{"name":"base::types","line":14},{"name":"math::constants","line":15},{"name":"vsa::ops","line":16},{"name":"physics::su2_chern_simons","line":17},{"name":"math::sacred_physics","line":18}],"terms":["demos","jones","topology","filter","signature","complexity","low","mid","high","phi","threshold","dim","standard","dot","diff","structure","invert","complex","signatures","match","close","level"]},{"id":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_search.t27","health":"warn","module":"TernarySearch"}],"description":"t27/specs/isa/ternary_search.t27 Ternary Search Operations Specification Ring 081 - Search algorithms for ternary data 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TRIT_NEG","line":10},{"name":"TRIT_ZERO","line":11},{"name":"TRIT_POS","line":12},{"name":"linear_search","line":15},{"name":"binary_search","line":27},{"name":"ternary_search_min","line":44},{"name":"count_occurrences","line":70},{"name":"find_min","line":83},{"name":"find_max","line":97}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","search","trit","neg","zero","pos","linear","binary","min","count","occurrences","find","max"]},{"id":"9855e557c4835debc2d9406218a857ec769f898f515923d5ac580109004534a1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/url.t27","health":"ok","module":"TriUrl"}],"description":"t27/specs/","symbols":[{"name":"Url","line":13},{"name":"parse","line":27},{"name":"encode","line":32},{"name":"decode","line":37},{"name":"to_string","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","url","parse","encode","decode"]},{"id":"98578314d53fe356ab21af4b448e2a720e0013767b1c731960899da6b420f749","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf4.t27","health":"ok","module":"GF4"}],"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 -- 4-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 2 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF4","line":35},{"name":"encode","line":44},{"name":"pos","line":50},{"name":"decode","line":86},{"name":"sign_bit","line":87},{"name":"exp_bit","line":88},{"name":"mant_bits","line":89},{"name":"mant","line":97},{"name":"exp_scale","line":100},{"name":"value","line":102},{"name":"max_value","line":114},{"name":"min_positive","line":119},{"name":"epsilon","line":124},{"name":"validate_format","line":133},{"name":"fmt","line":135},{"name":"MEMORY_RATIO_VS_FP32","line":153}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf4","bits","sign","exp","mant","bias","phi","distance","encode","pos","decode","bit","scale","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32"]},{"id":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/optimizer.t27","health":"ok","module":"Optimization"}],"description":"","symbols":[{"name":"OptPass","line":5},{"name":"OptConfig","line":14},{"name":"OptStats","line":25},{"name":"default_config","line":35},{"name":"opt_stats_init","line":48},{"name":"is_pure_op","line":60},{"name":"is_const_literal","line":67},{"name":"eval_binary_const","line":79},{"name":"eval_compare_const","line":105},{"name":"is_dead_stmt","line":115},{"name":"is_strength_reducible","line":124},{"name":"can_inline","line":134},{"name":"optimize_expr","line":149},{"name":"optimize_stmt","line":169},{"name":"optimize_fn","line":187},{"name":"optimize","line":198}],"imports":[{"name":"compiler::parser","line":3}],"terms":["compiler","optimizer","optimization","opt","pass","config","stats","default","init","pure","literal","eval","binary","compare","dead","stmt","strength","reducible","inline","optimize","expr"]},{"id":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/nickname_directory.t27","health":"ok","module":"NicknameDirectory"}],"description":"Nickname directory policy. String normalization and network storage are adapter responsibilities. phi^2 + phi^-2 = 3","symbols":[{"name":"RESULT_OFFLINE_INTERNET","line":8},{"name":"RESULT_CACHED_MESH","line":9},{"name":"RESULT_ONLINE_INTERNET","line":10},{"name":"RESULT_LIVE_MESH","line":11},{"name":"NICKNAME_MIN_LENGTH","line":13},{"name":"NICKNAME_MAX_LENGTH","line":14},{"name":"MAX_EDIT_DISTANCE","line":15},{"name":"MIN_CONFUSING_PREFIX","line":16},{"name":"MESH_ROUTE_CACHE_TTL_SECONDS","line":17},{"name":"CLAIM_REJECTED","line":19},{"name":"CLAIM_MESH_LOCAL","line":20},{"name":"CLAIM_VERIFIED","line":21},{"name":"nickname_shape_is_valid","line":25},{"name":"nickname_is_confusing","line":34},{"name":"claim_status","line":46},{"name":"may_route_by_nickname","line":59},{"name":"nickname_owner_matches","line":65},{"name":"exact_lookup_may_return","line":71},{"name":"cached_mesh_route_is_fresh","line":78},{"name":"auto_route_may_use_mesh","line":85},{"name":"mesh_route_may_be_cached","line":94},{"name":"directory_result_rank","line":100},{"name":"direct_mesh_target_is_supported","line":115}],"imports":[{"name":"base::types","line":6}],"terms":["net","nickname","directory","offline","internet","cached","mesh","online","live","min","length","max","edit","distance","confusing","prefix","route","cache","ttl","seconds","claim","rejected","local","verified","shape","valid","status","may","owner","matches","exact","lookup","fresh","auto","rank","direct","target","supported"]},{"id":"98db9288801328af6072230fda40876822530cb63d13a05d172d7d69bf40a8d0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_executor.t27","health":"ok","module":"WorkflowExecutor"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","workflow","executor"]},{"id":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/ast.t27","health":"warn","module":null}],"description":"ast.t27 — Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","symbols":[{"name":"NodeType","line":5},{"name":"ASTNode","line":39},{"name":"Program","line":47},{"name":"ConstDef","line":56},{"name":"DataSection","line":62},{"name":"DataDecl","line":67},{"name":"CodeSection","line":74},{"name":"Instruction","line":80},{"name":"Opcode","line":86},{"name":"Operand","line":100},{"name":"OperandType","line":105},{"name":"RegOperand","line":113},{"name":"ImmOperand","line":118},{"name":"LabelOperand","line":123},{"name":"MemOperand","line":128},{"name":"TypeInfo","line":134},{"name":"Symbol","line":141},{"name":"SymbolTable","line":150},{"name":"SymbolTable","line":157},{"name":"SymbolTable","line":166},{"name":"SymbolTable","line":175},{"name":"CompilerContext","line":186},{"name":"CompilationPhase","line":195},{"name":"CompilerError","line":203},{"name":"CompilerWarning","line":212},{"name":"CompilerContext","line":220},{"name":"CompilerContext","line":231},{"name":"CompilerContext","line":241},{"name":"CompilerContext","line":246},{"name":"Program","line":251}],"imports":[],"terms":["fpga","compiler","ast","node","astnode","program","def","data","section","decl","opcode","operand","reg","imm","label","mem","info","table","compilation","phase","warning"]},{"id":"991f6796a14b724c6c6d7ad11fa08025190c5fc6ee4e48506870bfdcc8ad5e5b","sources":[{"repo":"ghashtag/t27","path":"specs/base/seed.t27","health":"ok","module":"seed"}],"description":"seed.t27 -- Minimal Golden Seed for E2E CI (#150)","symbols":[{"name":"NEGONE","line":11},{"name":"ZERO","line":12},{"name":"ONE","line":13},{"name":"Trit","line":16},{"name":"trit_negate","line":28},{"name":"trit_add","line":38}],"imports":[],"terms":["base","seed","negone","zero","one","trit","negate"]},{"id":"9973916e12d9225b9f175037e9bd30897284f515074a11b97585dbf7b1a59e80","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_challenge.t27","health":"ok","module":"TriComputeChallenge"}],"description":"TRI-NET compute dispute + slash: economic security around the GF compute core. Settlement (tri_compute_settle) pays a fresh, self-consistent receipt -- but self-consistent does NOT mean CORRECT. A dishonest executor can sign a fresh receipt for a WRONG GoldenFloat result and get paid. This spec adds the fraud proof: because GF ops are deterministic and bit-exact (conformance vectors), any challenger can recompute gf_op(a,b) with the golden GF unit and settle the","symbols":[{"name":"RESOLVE_HONEST","line":14},{"name":"RESOLVE_SLASH","line":15},{"name":"is_honest","line":20},{"name":"resolve","line":24},{"name":"executor_bond_after","line":34},{"name":"challenger_reward","line":44},{"name":"challenger_stake_after","line":54},{"name":"RESOLVE_MALFORMED","line":75},{"name":"challenge_binds","line":79},{"name":"resolve_bound","line":85},{"name":"challenger_stake_after_bound","line":106},{"name":"RESOLVE_STALE","line":130},{"name":"dispute_is_fresh","line":132},{"name":"resolver_epoch_after","line":143},{"name":"FMT_GF_BINARY","line":163},{"name":"FMT_GFT","line":164},{"name":"RESOLVE_FAMILY_MISMATCH","line":165},{"name":"family_matches","line":167},{"name":"resolve_full","line":177},{"name":"RESOLVE_RUNG_MISMATCH","line":198},{"name":"rung_matches","line":200},{"name":"resolve_full_rung","line":208},{"name":"resolve_bound_d256","line":230},{"name":"resolve_full_d256","line":244},{"name":"resolve_bitnet","line":267},{"name":"resolve_bitnet_full","line":290},{"name":"resolve_bitnet_d256","line":309},{"name":"resolve_bitnet_d256_full","line":331},{"name":"majority_flag3","line":345},{"name":"resolve_bitnet_quorum","line":359},{"name":"majority_flag5","line":368},{"name":"resolve_bitnet_quorum5","line":381},{"name":"resolve_bitnet_quorum_full","line":398},{"name":"resolve_bitnet_quorum5_full","line":406},{"name":"RESOLVE_INDETERMINATE","line":423},{"name":"verifier_quorum3","line":426},{"name":"quorum_result3","line":436},{"name":"resolve_quorum3","line":445},{"name":"verifier_dissented","line":465},{"name":"verifier_stake_after","line":479},{"name":"verifier_reward","line":495},{"name":"quorum_threshold","line":513},{"name":"has_quorum_k","line":519},{"name":"max_agree3","line":529},{"name":"eq1","line":557},{"name":"max2","line":565},{"name":"count5","line":574},{"name":"max_agree5","line":579},{"name":"quorum_value5","line":590},{"name":"resolve_quorum5","line":601},{"name":"dissenter_count5","line":615},{"name":"burned_total5","line":628},{"name":"honest_share5","line":638}],"imports":[{"name":"base::types","line":11}],"terms":["net","compute","challenge","resolve","honest","slash","executor","bond","challenger","reward","stake","malformed","binds","bound","stale","dispute","fresh","resolver","epoch","fmt","binary","gft","family","mismatch","matches","full","rung","d256","bitnet","majority","flag3","quorum","flag5","quorum5","indeterminate","verifier","quorum3","result3","dissented","threshold","max","agree3","eq1","max2","count5","agree5","value5","dissenter","burned","total5","share5"]},{"id":"99b995b524d5cd98373b063e716660c23e7d213e303e78dd6f6dda1584a2c0e2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/error.t27","health":"ok","module":"TriError"}],"description":"t27/specs/","symbols":[{"name":"TriError","line":13}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils"]},{"id":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/timing_tb.t27","health":"ok","module":"Timing_Testbench"}],"description":"t27/specs/fpga/testbench/timing_tb.t27 Timing Analysis Testbench Tests setup/hold checks, slack computation, and clock tree constraints","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"TARGET_FMAX_MHZ","line":12},{"name":"tick","line":25},{"name":"reset","line":30},{"name":"compute_slack","line":38},{"name":"compute_fmax","line":42}],"imports":[{"name":"fpga::timing::Timing","line":8}],"terms":["fpga","testbench","timing","clk","period","sim","timeout","target","fmax","mhz","tick","reset","compute","slack"]},{"id":"99fa8b738f00c108b3eb1e9445daab42093844115abeaf03d2e8289b090096fa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bind.t27","health":"warn","module":null}],"description":"VSA Bind — TTT Dogfood Phase 2 Bind operation (XOR-like for balanced ternary) Algorithm: if a == 0 return b; else if b == 0 return a; else return a * b Input: t0 = a, t1 = b Output: t0 = bind(a, b)","symbols":[],"imports":[],"terms":["fpga","tri27","vsa","bind"]},{"id":"9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/edge_demo.t27","health":"ok","module":"TrinityMemoryEdgeDemoSpec"}],"description":"specs/memory/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one","symbols":[{"name":"TMS_EDGE_CLASSES","line":16},{"name":"TMS_EDGE_SAMPLES","line":17},{"name":"TMS_EDGE_HALF","line":18},{"name":"TMS_EDGE_WEIGHTS","line":19},{"name":"TMS_EDGE_MODEL_RANK","line":20},{"name":"TMS_EDGE_MODEL_SCALES","line":21},{"name":"TMS_EDGE_MODEL_AXES","line":22},{"name":"TMS_EDGE_DENSE5_PAYLOAD_BYTES","line":23},{"name":"TMS_EDGE_BASELINE2_PAYLOAD_BYTES","line":24},{"name":"EdgeLabel","line":26},{"name":"TMS_EDGE_FIXTURES","line":33},{"name":"TMS_EDGE_STEP_AMPLITUDE","line":34},{"name":"TMS_EDGE_ALTERNATING_AMPLITUDE","line":35},{"name":"TMS_EDGE_STEP_ACCUMULATOR","line":36},{"name":"TMS_EDGE_ALTERNATING_ACCUMULATOR","line":37},{"name":"EdgeFixture","line":39},{"name":"TMS_EDGE_MODES","line":49},{"name":"TMS_EDGE_PREDICTIONS","line":50},{"name":"TMS_EDGE_RTL_ROWS","line":51},{"name":"TMS_EDGE_RTL_SEED_MAX","line":52},{"name":"TMS_EDGE_SEED_DEFAULT","line":53},{"name":"TMS_EDGE_REPORT_LIMITATIONS","line":54},{"name":"TMS_EDGE_TIMING_FIELDS","line":55},{"name":"TMS_EDGE_PHYSICAL_DEVICE_TESTED","line":56},{"name":"tms_edge_weight","line":61},{"name":"tms_edge_expected_label","line":74},{"name":"tms_edge_synthetic_sample","line":80},{"name":"tms_edge_accumulator","line":88},{"name":"tms_edge_score","line":100},{"name":"tms_edge_argmax","line":104},{"name":"tms_edge_score_finite","line":117},{"name":"tms_edge_rtl_seed","line":122},{"name":"tms_edge_rtl_seed_valid","line":126},{"name":"tms_edge_raw_payload_bytes","line":130},{"name":"tms_edge_predictions","line":136},{"name":"tms_edge_rtl_rows","line":140}],"imports":[],"terms":["dmitrii","memory","edge","demo","tms","classes","samples","half","weights","model","rank","scales","axes","dense5","payload","bytes","baseline2","label","fixtures","step","amplitude","alternating","accumulator","fixture","modes","predictions","rtl","rows","seed","max","default","report","limitations","timing","fields","physical","device","tested","weight","expected","synthetic","sample","score","argmax","finite","valid","raw"]},{"id":"9a18d4a90dc2239c615e3b4611e289c3681a3e9099982889a9d55d671f0cfb5a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_vbt_activation.t27","health":"ok","module":"SiluSwishVbt"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","silu","swish","vbt"]},{"id":"9a2f505cc2386228c7461e99dcea598525cb97ef5f4e41629fe0a68a45b21434","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_governance.t27","health":"ok","module":"SacredGovernance"}],"description":"t27/specs/","symbols":[{"name":"SacredRule","line":13},{"name":"SacredRuleType","line":18},{"name":"RuleViolation","line":24},{"name":"ViolationSeverity","line":34},{"name":"GovernanceState","line":40},{"name":"SacredComplianceReport","line":50},{"name":"PatchAction","line":60},{"name":"GovernanceResult","line":68}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","governance","rule","violation","severity","state","compliance","report","patch","action"]},{"id":"9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/lite_crypto.t27","health":"ok","module":"LiteCrypto"}],"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","symbols":[{"name":"PSK_SIZE","line":8},{"name":"MD5_BLOCK_SIZE","line":9},{"name":"CHACHA20_STATE_SIZE","line":10},{"name":"md5_process_block","line":16},{"name":"md5_digest","line":27},{"name":"quarter_round","line":34},{"name":"generate_psk","line":45},{"name":"hmac_md5","line":52},{"name":"verify_hmac","line":58}],"imports":[{"name":"base::types","line":5}],"terms":["net","lite","crypto","psk","size","md5","block","chacha20","state","process","digest","quarter","round","generate","hmac","verify"]},{"id":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_storage.t27","health":"warn","module":"TrinityStreamStorageT27"}],"description":"","symbols":[{"name":"CAPACITY","line":7},{"name":"visible_code","line":15},{"name":"on_clock","line":38}],"imports":[],"terms":["dmitrii","memory","rtl","stream","storage","capacity","visible","clock"]},{"id":"9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_analytics.t27","health":"ok","module":"NetworkAnalytics"}],"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","symbols":[{"name":"MAX_NODES","line":7},{"name":"ANALYSIS_WINDOW","line":8},{"name":"TRAFFIC_LOW","line":9},{"name":"TRAFFIC_HIGH","line":10},{"name":"ANOMALY_THRESHOLD","line":11},{"name":"create_traffic_stats","line":14},{"name":"get_bytes_sent","line":21},{"name":"get_bytes_recv","line":25},{"name":"get_packet_count","line":29},{"name":"get_error_count","line":33},{"name":"create_analysis_data","line":38},{"name":"get_analysis_node_id","line":45},{"name":"get_analysis_traffic","line":49},{"name":"get_analysis_window_start","line":53},{"name":"get_analysis_pattern","line":57},{"name":"PATTERN_NORMAL","line":62},{"name":"PATTERN_SPIKE","line":63},{"name":"PATTERN_DROPOUT","line":64},{"name":"PATTERN_CONGESTION","line":65},{"name":"calculate_total_traffic","line":68},{"name":"is_traffic_low","line":73},{"name":"is_traffic_high","line":78},{"name":"is_traffic_normal","line":83},{"name":"calculate_error_rate","line":89},{"name":"is_high_error_rate","line":101},{"name":"detect_pattern","line":106},{"name":"update_traffic","line":129},{"name":"needs_attention","line":144},{"name":"calculate_utilization","line":153},{"name":"is_congested","line":164}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","analytics","max","nodes","analysis","window","traffic","low","high","anomaly","threshold","create","stats","get","bytes","sent","recv","packet","count","data","node","start","pattern","normal","spike","dropout","congestion","calculate","total","rate","detect","attention","utilization","congested"]},{"id":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/goldenfloat_family.t27","health":"warn","module":"GoldenFloatFamily"}],"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family 0 1-structured floating point formats NUMERIC-STANDARD-001 2 Agent 1 (P0)","symbols":[{"name":"GoldenFloatFormat","line":15},{"name":"PHI_RATIO_TARGET","line":32},{"name":"GOLDEN_FLOAT_FAMILY","line":35},{"name":"get_format_by_name","line":143},{"name":"get_format_by_bits","line":152},{"name":"get_primary_format","line":161},{"name":"VerificationReport","line":169},{"name":"verify_golden_family","line":178},{"name":"avg_dist","line":226},{"name":"all_checks_valid","line":229},{"name":"max_value","line":250},{"name":"mant_max","line":252},{"name":"exp_max","line":253},{"name":"min_positive","line":257},{"name":"mant_min","line":259},{"name":"bias","line":260},{"name":"memory_efficiency","line":264}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["chips","euler","numeric","goldenfloat","family","golden","float","format","phi","ratio","target","get","bits","primary","verification","report","verify","avg","dist","checks","valid","max","mant","exp","min","positive","bias","memory","efficiency"]},{"id":"9b53d5503a156f2833a3785d3b4254b3ba6f2c477d87668b9756e0f949d8285a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/avl_tree.t27","health":"ok","module":"TriAvlTree"}],"description":"t27/specs/","symbols":[{"name":"AVLTree","line":13},{"name":"AVLNode","line":19},{"name":"init","line":33},{"name":"insert","line":38},{"name":"find","line":43},{"name":"delete","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","avl","tree","avltree","avlnode","init","insert","find","delete"]},{"id":"9b70a19282f97706600410642104485c1cb158c9a4f0ddfde6040850ce334635","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/cli.t27","health":"warn","module":"TrinityMemoryCLI"}],"description":"Native command dispatch and strict JSON trit-array parsing. Domain command dispatch is native. Host hooks supply file IO, buffers, entropy, sockets and signal waiting; generated modules own all data formats.","symbols":[{"name":"tm_cli_space","line":5},{"name":"tm_cli_json_trits","line":8},{"name":"tm_cli_json_encode","line":42},{"name":"tm_cli_codec","line":60},{"name":"tm_cli_copy","line":69},{"name":"tm_cli_text_equal","line":77},{"name":"tm_cli_option","line":85},{"name":"tm_cli_codec_text","line":94},{"name":"tm_cli_quote_arg","line":103},{"name":"tm_cli_port_text","line":109},{"name":"tm_cli_url_port","line":114},{"name":"tm_cli_tmem_info","line":119},{"name":"tm_cli_export_hex","line":147},{"name":"tm_cli_file_command","line":184},{"name":"tm_cli_rpc","line":261},{"name":"tm_cli_rpc_error","line":276},{"name":"tm_cli_remote_command","line":287},{"name":"tm_cli_serve","line":370},{"name":"tm_cli_i64","line":390},{"name":"tm_cli_experiments","line":410},{"name":"tm_cli_main","line":470}],"imports":[],"terms":["dmitrii","memory","cli","space","json","trits","encode","codec","copy","text","equal","option","quote","arg","port","url","tmem","info","hex","rpc","remote","serve","i64","experiments","main"]},{"id":"9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/pattern_predictor.t27","health":"warn","module":"pattern_predictor"}],"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"PATTERN_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"create_sample","line":12},{"name":"get_sample_value","line":19},{"name":"get_sample_timestamp","line":23},{"name":"get_sample_sequence","line":27},{"name":"get_sample_valid","line":31},{"name":"create_pattern_storage","line":36},{"name":"get_pattern_samples","line":43},{"name":"get_pattern_count","line":47},{"name":"get_trend_direction","line":51},{"name":"create_sample_array","line":59},{"name":"get_sample_at","line":64},{"name":"calculate_moving_average","line":72},{"name":"detect_trend","line":108},{"name":"predict_next_value","line":124},{"name":"is_anomalous","line":143},{"name":"detect_repeating_pattern","line":154},{"name":"calculate_variance","line":181}],"imports":[{"name":"base::types","line":5}],"terms":["net","pattern","predictor","max","samples","window","anomaly","threshold","create","sample","get","timestamp","sequence","valid","storage","count","trend","direction","array","calculate","moving","average","detect","predict","anomalous","repeating","variance"]},{"id":"9be969e9ee07f2ac25392d6c3001b94a6386275db45b5a08881382a8c22782ea","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/language.t27","health":"ok","module":"Language"}],"description":"t27/compiler/parser/language.t27 — Language Definition for .t27 Specs Defines tokens, lexical grammar for parsing .t27 format specifications","symbols":[{"name":"TokenType","line":47}],"imports":[],"terms":["fpga","compiler","parser","language","token"]},{"id":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","sources":[{"repo":"ghashtag/t27","path":"compiler/ast.t27","health":"ok","module":"ast"}],"description":"ast.t27 -- Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","symbols":[{"name":"TokenType","line":9},{"name":"NodeType","line":114},{"name":"ASTNode","line":171},{"name":"Program","line":182},{"name":"TestSection","line":199},{"name":"InvariantSection","line":204},{"name":"BenchSection","line":209},{"name":"ConstDef","line":218},{"name":"DataSection","line":224},{"name":"DataDecl","line":229},{"name":"CodeSection","line":240},{"name":"Instruction","line":246},{"name":"Opcode","line":252},{"name":"Operand","line":265},{"name":"OperandType","line":270},{"name":"RegOperand","line":277},{"name":"ImmOperand","line":282},{"name":"LabelOperand","line":287},{"name":"MemOperand","line":292},{"name":"TestCase","line":304},{"name":"InvariantDecl","line":315},{"name":"BenchDecl","line":324},{"name":"SpecDecl","line":338},{"name":"TestBlock","line":349},{"name":"GivenClause","line":357},{"name":"WhenClause","line":363},{"name":"ThenClause","line":369},{"name":"AndClause","line":374},{"name":"AssertStmt","line":380},{"name":"RuleDecl","line":385},{"name":"ExpectClause","line":391},{"name":"TypeInfo","line":400},{"name":"Symbol","line":410},{"name":"SymbolTable","line":418},{"name":"new","line":423},{"name":"add","line":431},{"name":"lookup","line":436},{"name":"CompilerContext","line":451},{"name":"CompilationPhase","line":459},{"name":"CompilerError","line":466},{"name":"CompilerWarning","line":474},{"name":"SymbolExport","line":481},{"name":"CompilerContext_add_error","line":486},{"name":"CompilerContext_add_warning","line":496},{"name":"CompilerContext_has_errors","line":505},{"name":"CompilerContext_error_count","line":509},{"name":"Program_export_symbols","line":513},{"name":"table","line":550},{"name":"sym","line":556},{"name":"node","line":586}],"imports":[],"terms":["compiler","ast","token","node","astnode","program","section","invariant","bench","def","data","decl","opcode","operand","reg","imm","label","mem","case","block","given","clause","assert","stmt","rule","expect","info","table","lookup","compilation","phase","warning","count","sym"]},{"id":"9c52bd5e42a414e2d0ed5da344bf5ff4c61a5ccca57c35537983483a38b480db","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/cloud_orchestrator.t27","health":"ok","module":"CloudOrchestrator"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","cloud","orchestrator"]},{"id":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cross_layer_optimizer.t27","health":"warn","module":"CrossLayerOptimizer"}],"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","symbols":[{"name":"MAX_LAYERS","line":7},{"name":"LAYER_PHY","line":8},{"name":"LAYER_MAC","line":9},{"name":"LAYER_NETWORK","line":10},{"name":"LAYER_TRANSPORT","line":11},{"name":"MODE_CONSERVATIVE","line":13},{"name":"MODE_MODERATE","line":14},{"name":"MODE_AGGRESSIVE","line":15},{"name":"create_layer_params","line":18},{"name":"get_power","line":25},{"name":"get_rate","line":29},{"name":"get_retries","line":33},{"name":"get_window","line":37},{"name":"create_cross_layer_state","line":42},{"name":"get_mode","line":49},{"name":"get_update_counter","line":53},{"name":"get_last_sync","line":57},{"name":"get_optimization_target","line":61},{"name":"create_layer_array","line":66},{"name":"get_layer_params","line":73},{"name":"update_layer_params","line":81},{"name":"calculate_joint_metric","line":94},{"name":"coordinate_power","line":105},{"name":"optimize_for_target","line":131},{"name":"needs_synchronization","line":158},{"name":"increment_updates","line":165},{"name":"switch_mode","line":178}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","cross","layer","optimizer","max","layers","phy","mac","network","transport","mode","conservative","moderate","aggressive","create","params","get","power","rate","retries","window","state","counter","sync","optimization","target","array","calculate","joint","metric","coordinate","optimize","synchronization","increment","updates","switch"]},{"id":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_profiler.t27","health":"warn","module":"performance_profiler"}],"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"MAX_FUNCTIONS","line":8},{"name":"PROFILING_INTERVAL_MS","line":9},{"name":"OVERHEAD_THRESHOLD","line":10},{"name":"create_perf_sample","line":13},{"name":"get_sample_function_id","line":20},{"name":"get_sample_cpu","line":24},{"name":"get_sample_memory","line":28},{"name":"get_sample_timestamp","line":32},{"name":"create_function_profile","line":37},{"name":"get_profile_function_id","line":43},{"name":"get_profile_call_count","line":47},{"name":"get_profile_total_cpu","line":51},{"name":"create_hotspot","line":56},{"name":"get_hotspot_function_id","line":63},{"name":"get_hotspot_score","line":67},{"name":"get_hotspot_rank","line":71},{"name":"get_hotspot_impact","line":75},{"name":"calculate_average_cpu","line":80},{"name":"calculate_average_memory","line":101},{"name":"identify_hotspots","line":122},{"name":"calculate_profiling_overhead","line":151},{"name":"is_overhead_acceptable","line":163},{"name":"create_allocation","line":172},{"name":"get_allocation_id","line":179},{"name":"get_allocation_size","line":183},{"name":"get_allocation_lifetime","line":187},{"name":"get_allocation_pool","line":191},{"name":"track_allocation","line":196},{"name":"calculate_total_memory","line":210},{"name":"detect_memory_leak","line":224},{"name":"create_call_stack_entry","line":238},{"name":"get_stack_depth","line":245},{"name":"get_stack_function_id","line":249},{"name":"get_stack_parent_id","line":253},{"name":"get_stack_cpu_contribution","line":257},{"name":"analyze_call_tree","line":262},{"name":"create_performance_report","line":291},{"name":"get_report_total_cpu","line":298},{"name":"get_report_total_memory","line":302},{"name":"get_report_hotspot_count","line":306},{"name":"get_report_overhead","line":310},{"name":"generate_recommendations","line":315},{"name":"calculate_improvement_opportunity","line":345}],"imports":[{"name":"base::types","line":5}],"terms":["net","performance","profiler","max","samples","functions","profiling","interval","overhead","threshold","create","perf","sample","get","cpu","memory","timestamp","profile","call","count","total","hotspot","score","rank","impact","calculate","average","identify","hotspots","acceptable","allocation","size","lifetime","pool","track","detect","leak","stack","entry","depth","parent","contribution","analyze","tree","report","generate","recommendations","improvement","opportunity"]},{"id":"9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd","sources":[{"repo":"ghashtag/t27","path":"specs/shell/schema.t27","health":"ok","module":"Shell"}],"description":"specs/shell/schema.t27 Shell Types Specification","symbols":[{"name":"ShellType","line":13},{"name":"Platform","line":26},{"name":"ProcessStatus","line":37},{"name":"ProcessInfo","line":45},{"name":"ProcessOptions","line":56},{"name":"ProcessResult","line":66},{"name":"ShellProperties","line":80},{"name":"EnvVar","line":94},{"name":"SIGKILL_TIMEOUT_MS","line":103},{"name":"SHELL_ENV_VAR","line":104},{"name":"ShellError","line":111},{"name":"is_posix","line":126},{"name":"is_login","line":134},{"name":"is_blacklisted","line":143},{"name":"is_success","line":148}],"imports":[{"name":"base::types","line":6}],"terms":["shell","schema","platform","process","status","info","options","properties","env","var","sigkill","timeout","posix","login","blacklisted","success"]},{"id":"9cfdc672d8fb68169a02b45bf63bc1e4330f98cde9d44b4babd9e20a7111ce16","sources":[{"repo":"ghashtag/t27","path":"test_highlight.t27","health":"warn","module":null}],"description":"T27 Syntax Highlighting Test File This tests all syntax elements","symbols":[{"name":"PHI","line":7},{"name":"PHI_SQ","line":8},{"name":"TRINITY","line":9},{"name":"Trit","line":12},{"name":"State","line":19},{"name":"compute_phi","line":26},{"name":"casted","line":27},{"name":"invert_trit","line":32},{"name":"sum_range","line":41},{"name":"zeros","line":50},{"name":"test_builtin","line":53},{"name":"result","line":54}],"imports":[],"terms":["highlight","phi","trit","state","compute","casted","invert","sum","range","zeros","builtin"]},{"id":"9d397a176e2db4f55c544daf8ea1142c8d9c45c1e0ec5ad9e4b329ab24eed82b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/c/codegen.t27","health":"warn","module":"c_codegen"}],"description":"","symbols":[],"imports":[],"terms":["fpga","compiler","codegen"]},{"id":"9dbf325b34ce2247c239eeaec29739d1a5a13e606c0d5754bd2bb2b7a645203f","sources":[{"repo":"ghashtag/t27","path":"specs/server/provider.t27","health":"ok","module":"Provider"}],"description":"specs/server/provider.t27 LLM Provider Configuration Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"ProviderType","line":14},{"name":"Provider","line":25},{"name":"Model","line":35},{"name":"ProviderManager","line":49},{"name":"provider_manager_init","line":55},{"name":"add_provider","line":67},{"name":"get_provider","line":79},{"name":"get_default_provider","line":90},{"name":"set_default_provider","line":94},{"name":"list_providers","line":106},{"name":"remove_provider","line":110},{"name":"enable_provider","line":131},{"name":"create_openai_provider","line":147},{"name":"create_anthropic_provider","line":159},{"name":"provider","line":184},{"name":"result","line":185},{"name":"provider","line":192},{"name":"retrieved","line":194},{"name":"provider","line":201},{"name":"default","line":203},{"name":"p1","line":209},{"name":"p2","line":210},{"name":"result","line":213},{"name":"provider","line":220},{"name":"result","line":222},{"name":"provider","line":229},{"name":"result","line":231},{"name":"retrieved","line":233},{"name":"provider","line":238},{"name":"provider","line":245},{"name":"mgr","line":252}],"imports":[{"name":"base::types","line":8}],"terms":["provider","model","manager","init","get","default","set","list","providers","remove","enable","create","openai","anthropic","retrieved","mgr"]},{"id":"9dc4e475f38f849170b46b46c0a72486485d13a37e4a53150b6dd395b4252a6a","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_line_emitter.t27","health":"warn","module":"TrinityFpgaLineEmitterT27"}],"description":"","symbols":[{"name":"hex","line":15},{"name":"line_char","line":20},{"name":"on_clock","line":27}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","emitter","hex","char","clock"]},{"id":"9e0a54bfc5992bb96c5dc38dcbffd57334be6866207e09185966985e870dacbb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/published_pack_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","published","pack","audit"]},{"id":"9e53c7a141c31266e0b275bea41a46eaff276426ff85aadf52524de77c69ecf8","sources":[{"repo":"ghashtag/t27","path":"tests/ring0_trivial.t27","health":"ok","module":"ring0"}],"description":"ring-0 trivial test","symbols":[{"name":"ONE","line":6},{"name":"ZERO","line":7},{"name":"NEG","line":8},{"name":"HEX","line":9},{"name":"BIN","line":10}],"imports":[],"terms":["ring0","trivial","one","zero","neg","hex","bin"]},{"id":"9e7f3ab64dc081da46232c63a023d2d392652bf57c2720c46fe02b564a0f1f37","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_reset.t27","health":"warn","module":"TrinityFpgaResetT27"}],"description":"","symbols":[{"name":"on_clock","line":16}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","reset","clock"]},{"id":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_set.t27","health":"warn","module":"TernarySet"}],"description":"t27/specs/isa/ternary_set.t27 Ternary Set Operations Specification Ring 085 - Set operations on ternary-valued elements 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"SET_MAX","line":10},{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"set_insert","line":16},{"name":"set_contains","line":34},{"name":"set_union","line":47},{"name":"set_intersection","line":79},{"name":"set_difference","line":99},{"name":"set_cardinality","line":119}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","set","max","trit","neg","zero","pos","insert","contains","union","intersection","difference","cardinality"]},{"id":"9f691d19445851f83fcda9c64911b33bb8d409a8cd01bfdf8dd17968edadf8ec","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/self_attention.t27","health":"ok","module":"SelfAttention"}],"description":"t27/specs/","symbols":[{"name":"D_MODEL","line":13},{"name":"SelfAttentionConfig","line":19},{"name":"SelfAttentionWeights","line":25},{"name":"SelfAttentionState","line":32},{"name":"forward","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","self","attention","model","config","weights","state","forward"]},{"id":"9f9c5ccbfad7094a6514656e4c2f80089f67f92448c28584323b8e063361b94f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex_advanced.t27","health":"ok","module":"TriRegexAdvanced"}],"description":"t27/specs/","symbols":[{"name":"RegexFlags","line":13},{"name":"RegexMatch","line":17},{"name":"compile","line":29},{"name":"match","line":34},{"name":"replace","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","regex","advanced","flags","match","compile","replace"]},{"id":"9fb0fcc0a0a24932ffc0181e6a6847e06936d35c5919c29d74f6decccdd8b5dd","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/ternary_isa.t27","health":"ok","module":"TernaryIsa"}],"description":"t27/specs/fpga/ternary_isa.t27 Ternary ISA Hardware Implementation Specification for Trinity T27 FPGA HIR Bridges software ISA (27 registers, balanced ternary) to silicon Connects GF16 arithmetic, ternary gates, and phi-identity to hardware Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"NUM_REGISTERS","line":13},{"name":"TRIT_WIDTH","line":14},{"name":"WORD_BITS","line":15},{"name":"INSTR_WIDTH","line":16},{"name":"TRIT_NEG","line":17},{"name":"TRIT_ZERO","line":18},{"name":"TRIT_POS","line":19},{"name":"OpClass","line":23},{"name":"AluOp","line":35},{"name":"InstrFormat","line":46},{"name":"PipelineStage","line":59},{"name":"TernaryRegFile","line":67},{"name":"TernaryCoreConfig","line":78},{"name":"r_type_format","line":92},{"name":"i_type_format","line":105},{"name":"ternary_alu_op","line":118},{"name":"gf16_alu_op","line":129},{"name":"fetch_stage","line":140},{"name":"decode_stage","line":148},{"name":"execute_stage","line":156},{"name":"memory_stage","line":164},{"name":"writeback_stage","line":172},{"name":"ternary_regfile","line":180},{"name":"ternary_core","line":191},{"name":"ternary_core_full","line":205},{"name":"is_trit_op","line":221},{"name":"is_gf16_op","line":225},{"name":"is_r_type","line":229},{"name":"is_i_type","line":233},{"name":"regfile_bits","line":237},{"name":"regfile_bram_count","line":241},{"name":"core_dsp_count","line":246},{"name":"core_bram_count","line":254},{"name":"core_lut_estimate","line":262},{"name":"core_fmax_mhz","line":277},{"name":"fits_arty_a7","line":281},{"name":"fits_xc7a100t","line":286},{"name":"pipeline_total_latency","line":291},{"name":"phi_squared_check","line":301},{"name":"validate_alu_op","line":307},{"name":"validate_instr_format","line":318},{"name":"validate_regfile","line":330},{"name":"validate_core","line":347}],"imports":[],"terms":["fpga","ternary","isa","num","registers","trit","width","word","bits","instr","neg","zero","pos","class","alu","format","pipeline","stage","reg","config","gf16","fetch","decode","execute","memory","writeback","regfile","full","bram","count","dsp","lut","estimate","fmax","mhz","fits","arty","xc7a100t","total","latency","phi","squared","validate"]},{"id":"9fc79210c8bdb054a1f7b85f34696cb0b0ccd971edd126db0c6950073f68bacf","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/option.t27","health":"ok","module":"TriOption"}],"description":"t27/specs/","symbols":[{"name":"Option","line":13},{"name":"some","line":23},{"name":"none","line":28},{"name":"unwrap_or","line":33},{"name":"is_some","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","option","unwrap"]},{"id":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/hir_tb.t27","health":"ok","module":"HIR_Testbench"}],"description":"t27/specs/fpga/testbench/hir_tb.t27 Hardware IR (HIR) Testbench Tests HIR node types, module hierarchy, and code generation paths","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_HIR_DEPTH","line":11},{"name":"MAX_NODES","line":12},{"name":"tick","line":23},{"name":"reset","line":28},{"name":"count_nodes","line":36},{"name":"check_depth_limit","line":46},{"name":"check_node_limit","line":50}],"imports":[{"name":"fpga::hir::Hir","line":8}],"terms":["fpga","testbench","hir","clk","period","max","depth","nodes","tick","reset","count","limit","node"]},{"id":"a0ac4c99cda825e8fb9a82964e752d96e1806d22a65b354d27a383354fd3c538","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/arithmetic_invariant_sweep.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","arithmetic","invariant","sweep"]},{"id":"a10cd453780251bfe86342dd0f2b5fb5b0d46f088353c0a4cfd9543f11f1f007","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/mime.t27","health":"ok","module":"TriMime"}],"description":"t27/specs/","symbols":[{"name":"Email","line":13},{"name":"parse","line":25},{"name":"format","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","mime","email","parse","format"]},{"id":"a11838e1aecb9b6d3fddfabb63acbd8b182e6ee0430a2024bebe7cc42b5ed62d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/partition.t27","health":"ok","module":"Partition"}],"description":"t27/specs/fpga/partition.t27 T27 Multi-FPGA Partition Specification Automatically partitions HIR modules across multiple FPGAs Estimates inter-FPGA bandwidth and latency Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"FpgaNode","line":13},{"name":"fpga_node","line":23},{"name":"arty_a7_node","line":35},{"name":"InterFpgaLink","line":41},{"name":"lvds_link","line":49},{"name":"serdes_link","line":59},{"name":"link_bandwidth_mbps","line":69},{"name":"PartitionAssign","line":75},{"name":"assignment","line":88},{"name":"PartitionResult","line":101},{"name":"partition_ok","line":110},{"name":"partition_fail","line":121},{"name":"passed","line":132},{"name":"total_link_bandwidth","line":141},{"name":"fpga_util","line":151},{"name":"fpga_remaining","line":158},{"name":"validate_node","line":167}],"imports":[],"terms":["fpga","partition","node","arty","inter","link","lvds","serdes","bandwidth","mbps","assign","assignment","fail","passed","total","util","remaining","validate"]},{"id":"a12179df0112258f07ba1d050c5ed48d527d40d0c5c9311669dbd5fd2f6b80da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/container.t27","health":"warn","module":"TrinityMemoryContainer"}],"description":"TMEM v1 framing. Include generated codecs C header before this header. Caller-owned buffers; no allocation. Valid input/output ranges must not overlap.","symbols":[{"name":"tm_crc32_update","line":4},{"name":"tm_crc32","line":20},{"name":"tm_read_u32","line":24},{"name":"tm_read_u64","line":31},{"name":"tm_write_u32","line":38},{"name":"tm_write_u64","line":43},{"name":"tm_pack","line":48},{"name":"tm_unpack","line":67}],"imports":[],"terms":["dmitrii","memory","container","crc32","read","u32","u64","write","pack","unpack"]},{"id":"a1c5f092447e90848b032f7772fcd3dcff2d11b17b195bf9ae3f8dadd22a488e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/ring_buffer.t27","health":"ok","module":"TriRing"}],"description":"t27/specs/","symbols":[{"name":"Ring","line":13},{"name":"new","line":25},{"name":"push","line":30},{"name":"pop","line":35},{"name":"is_empty","line":40},{"name":"is_full","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","ring","buffer","push","pop","empty","full"]},{"id":"a1cfc613efbfa850c3b9718a25d0b3217985192cb746bb938590ee047b8e4d4f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generated_pack_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","generated","pack","audit"]},{"id":"a1ed6afc5aa1c11bce711e375e5cf179aca67c2accc4adbceebd0aca4d91c686","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/dark_matter.t27","health":"ok","module":"dark_matter"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","dark","matter"]},{"id":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","sources":[{"repo":"ghashtag/t27","path":"specs/git/schema.t27","health":"ok","module":"Git"}],"description":"specs/git/schema.t27 Git Types Specification","symbols":[{"name":"Kind","line":13},{"name":"Base","line":24},{"name":"Item","line":34},{"name":"Stat","line":41},{"name":"Options","line":52},{"name":"Result","line":58},{"name":"GitError","line":70},{"name":"NotARepositoryError","line":77},{"name":"DEFAULT_BRANCH_MAIN","line":85},{"name":"DEFAULT_BRANCH_MASTER","line":86},{"name":"GIT_CONFIG_DEFAULT_BRANCH","line":87},{"name":"GIT_FLAGS","line":90},{"name":"parse_kind","line":104},{"name":"is_success","line":121},{"name":"is_failure","line":126}],"imports":[{"name":"base::types","line":6}],"terms":["git","schema","kind","base","item","stat","options","arepository","default","branch","main","master","config","flags","parse","success","failure"]},{"id":"a2763ea254fa12292e8679306c5d8f24bb81f8c13834f63a5c62737bb25f6af1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_add.t27","health":"ok","module":"TriGftAdd"}],"description":"TRI-NET verifiable GF-T16 ADDITION (same-sign). tri_gft_arith recomputes a GF-T multiply so a verifier can catch a wrong product; ADD is the other hosted skill (SKILL_GFT16_ADD) and was NOT verifiable. This adds the same-sign add recompute: align the smaller operand to the larger exponent, add the significands, and renormalize a single carry -- so a receipt claiming a GF-T add result can be checked, not just trusted.","symbols":[{"name":"MANT_ONE","line":22},{"name":"SIG_BITS","line":23},{"name":"gft_add_sb_p","line":31},{"name":"gft_add_offset_p","line":39},{"name":"gft_add_mant_p","line":54},{"name":"gft_add_sb","line":65},{"name":"gft_add_offset","line":68},{"name":"gft_add_mant","line":71},{"name":"gft_add_offset_c","line":76},{"name":"gft_add_mant_c","line":83},{"name":"verify_gft_add","line":93},{"name":"gft_add_offset_c_p","line":102},{"name":"gft_add_mant_c_p","line":109},{"name":"verify_gft_add_p","line":116},{"name":"gft_dot4_offset","line":132},{"name":"gft_dot4_mant","line":139},{"name":"gft_dot4_offset_p","line":150},{"name":"gft_dot4_mant_p","line":157}],"imports":[{"name":"base::types","line":20}],"terms":["net","gft","mant","one","sig","bits","offset","verify","dot4"]},{"id":"a2b2424d5bd2d58140d2ebc9320d27cb6e99e0f3f25d294ecc14cd437076e907","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/xml.t27","health":"warn","module":"TriXml"}],"description":"t27/specs/","symbols":[{"name":"XmlNode","line":13},{"name":"parse","line":25},{"name":"format","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","xml","node","parse","format"]},{"id":"a2e26da390ab3d79813181b875c49cf801464a286c1e4cf1b9eaa34ca5652a71","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/http.t27","health":"warn","module":"TrinityMemoryHTTP"}],"description":"Bounded HTTP envelope validation; sockets and clocks are OS primitives.","symbols":[{"name":"TMHttpResponse","line":3},{"name":"TMHttpEnvelope","line":10},{"name":"tm_http_lower","line":16},{"name":"tm_http_equal","line":20},{"name":"tm_http_fail","line":31},{"name":"tm_http_port","line":38},{"name":"tm_http_host","line":51},{"name":"tm_http_url","line":60},{"name":"tm_http_request","line":71},{"name":"tm_http_literal","line":163},{"name":"tm_http_crlf","line":167},{"name":"tm_http_response_header","line":171},{"name":"tm_http_request_header","line":186},{"name":"tm_http_response","line":200},{"name":"tm_http_chunks","line":269}],"imports":[],"terms":["dmitrii","memory","http","tmhttp","response","envelope","lower","equal","fail","port","host","url","request","literal","crlf","header","chunks"]},{"id":"a304c38d4f437a1049622d15f7c677afee0709cdbc5ec45efb471acfa1ad8147","sources":[{"repo":"ghashtag/t27","path":"specs/math/e8_lie_algebra.t27","health":"ok","module":"E8LieAlgebra"}],"description":"t27/specs/math/e8_lie_algebra.t27 E8 Exceptional Lie Algebra -- Root System, Cartan Matrix, Eigenvalues Direction A (Priority 2) of PROJECT KEPLER->NEWTON E8 is the largest exceptional simple Lie group. Its root system contains golden ratio phi as a structural invariant through the H4 Coxeter subgroup. Key results verified computationally:","symbols":[{"name":"E8_RANK","line":31},{"name":"E8_DIM","line":32},{"name":"E8_NUM_ROOTS","line":33},{"name":"E8_COXETER","line":34},{"name":"E8_EXPONENTS","line":38},{"name":"E8_MARKS","line":42},{"name":"E8_ROOT_NORM_SQ","line":45},{"name":"E8Root","line":51},{"name":"E8RootSystem","line":55},{"name":"root_system_info","line":62},{"name":"e8_cartan_matrix","line":77},{"name":"e8_cartan_inverse","line":92},{"name":"e9_cartan_matrix","line":111},{"name":"E9_NULL_VECTOR","line":126},{"name":"E9Eigenvalues","line":135},{"name":"e9_eigenvalues","line":140},{"name":"PHI","line":141},{"name":"PHI_SQ","line":142},{"name":"PHI_INV_SQ","line":143},{"name":"trinity_from_e9_spectrum","line":162},{"name":"ev","line":163},{"name":"H4_EXPONENTS","line":178},{"name":"phi_from_h4","line":181},{"name":"pf_eigenvector_normalized","line":196},{"name":"cos","line":214},{"name":"abs","line":228}],"imports":[{"name":"math::constants","line":25}],"terms":["math","lie","algebra","e8lie","rank","dim","num","roots","coxeter","exponents","marks","root","norm","e8root","system","info","cartan","matrix","inverse","null","vector","e9eigenvalues","eigenvalues","phi","inv","spectrum","eigenvector","normalized","cos","abs"]},{"id":"a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_benchmarks.t27","health":"ok","module":"PerformanceBenchmarks"}],"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","symbols":[{"name":"MAX_QUEUE_SIZE","line":8},{"name":"MAX_COUNTER","line":9},{"name":"TIMER_TICK_US","line":10},{"name":"create_queue","line":13},{"name":"queue_count","line":17},{"name":"queue_head","line":21},{"name":"queue_tail","line":25},{"name":"queue_enqueue","line":29},{"name":"queue_dequeue","line":38},{"name":"queue_is_full","line":48},{"name":"queue_is_empty","line":52},{"name":"inc_counter","line":57},{"name":"counter_will_overflow","line":65},{"name":"ticks_to_microseconds","line":70},{"name":"microseconds_to_ticks","line":74},{"name":"ticks_to_milliseconds","line":78}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","performance","benchmarks","max","queue","size","counter","timer","tick","create","count","head","tail","enqueue","dequeue","full","empty","inc","overflow","ticks","microseconds","milliseconds"]},{"id":"a348a6bc574e6fb2b5af6cb13db18dd55415193444e4120e48e62ff4b100b426","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/compute.t27","health":"ok","module":"TrinityMemoryCompute"}],"description":"Trinity Memory integer/scale kernels. Canonical executable source. Status: 0 success, -1 invalid input, -2 short output, -3 overflow. Pointers refer to valid arrays of their explicit lengths. Input and output buffers must not overlap. Inputs are read-only despite the pointer ABI. f64 is the host metadata bridge type; it does not replace ternary storage.","symbols":[{"name":"tm_compute_finite","line":8},{"name":"tm_add_i64_checked","line":12},{"name":"tm_dot_i64","line":23},{"name":"tm_scale_scores","line":66},{"name":"tm_argmax_scores","line":92}],"imports":[],"terms":["dmitrii","memory","compute","finite","i64","checked","dot","scale","scores","argmax"]},{"id":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/api_documenter.t27","health":"warn","module":"api_documenter"}],"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","symbols":[{"name":"MAX_FUNCTIONS","line":7},{"name":"MAX_PARAMETERS","line":8},{"name":"MAX_EXAMPLES","line":9},{"name":"MAX_DESCRIPTIONS","line":10},{"name":"create_function_doc","line":13},{"name":"get_doc_function_id","line":20},{"name":"get_doc_param_count","line":24},{"name":"get_doc_return_type","line":28},{"name":"get_doc_complexity","line":32},{"name":"create_param_doc","line":37},{"name":"get_param_doc_id","line":44},{"name":"get_param_doc_type","line":48},{"name":"get_param_direction","line":52},{"name":"get_param_description_id","line":56},{"name":"DIR_IN","line":61},{"name":"DIR_OUT","line":62},{"name":"DIR_INOUT","line":63},{"name":"extract_function_signature","line":66},{"name":"extract_parameter_info","line":76},{"name":"create_function_example","line":85},{"name":"get_example_function_id","line":92},{"name":"get_example_input","line":96},{"name":"get_example_output","line":100},{"name":"get_example_explanation","line":104},{"name":"generate_function_example","line":109},{"name":"create_description_text","line":123},{"name":"get_description_id","line":130},{"name":"get_description_length","line":134},{"name":"get_description_importance","line":138},{"name":"get_description_category","line":142},{"name":"generate_function_description","line":147},{"name":"create_cross_reference","line":165},{"name":"get_xref_source","line":172},{"name":"get_xref_target","line":176},{"name":"get_xref_type","line":180},{"name":"get_xref_strength","line":184},{"name":"XREF_CALLS","line":189},{"name":"XREF_CALLED_BY","line":190},{"name":"XREF_RELATED","line":191},{"name":"XREF_SIMILAR","line":192},{"name":"detect_function_call","line":195},{"name":"create_module_doc","line":200},{"name":"get_module_doc_id","line":207},{"name":"get_module_function_count","line":211},{"name":"get_module_total_complexity","line":215},{"name":"get_module_description","line":219},{"name":"calculate_average_complexity","line":224},{"name":"generate_api_documentation","line":241},{"name":"calculate_documentation_coverage","line":269},{"name":"generate_usage_example","line":278},{"name":"create_dependency_graph","line":289},{"name":"validate_documentation","line":318},{"name":"generate_documentation_report","line":353}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","api","documenter","max","functions","parameters","examples","descriptions","create","doc","get","param","count","complexity","direction","description","dir","out","inout","extract","signature","parameter","info","example","explanation","generate","text","length","importance","category","cross","reference","xref","target","strength","calls","called","related","similar","detect","call","total","calculate","average","documentation","usage","dependency","graph","validate","report"]},{"id":"a3cc24914c0e7e7480e9f97b6a296794f6d1458c0f11863974798181f5169ae9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_cosine.t27","health":"warn","module":null}],"description":"VSA Cosine Similarity — TTT Dogfood Phase 2 Cosine similarity between two ternary vectors Formula: (a · b) / (||a|| * ||b||) Input: t0 = vector_a_ptr, t1 = vector_b_ptr, t2 = length Output: t0 = similarity (f64)","symbols":[],"imports":[],"terms":["fpga","tri27","vsa","cosine"]},{"id":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/uart.t27","health":"ok","module":"ZeroDSP_UART"}],"description":"t27/specs/fpga/uart.t27 ZeroDSP FPGA UART Specification UART for debugging and communication 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"UART_CLOCK_HZ","line":12},{"name":"UART_BAUD_RATE","line":13},{"name":"UART_BIT_PERIOD","line":14},{"name":"UART_WIDTH","line":16},{"name":"UART_FIFO_DEPTH","line":17},{"name":"STATUS_IDLE","line":19},{"name":"STATUS_TX_BUSY","line":20},{"name":"STATUS_RX_BUSY","line":21},{"name":"STATUS_ERROR","line":22},{"name":"UARTState","line":24},{"name":"UARTConfig","line":46},{"name":"uart_tx_ready","line":60},{"name":"uart_tx_send","line":64},{"name":"uart_rx_ready","line":75},{"name":"uart_rx_read","line":79},{"name":"uart_status","line":84},{"name":"uart_reset","line":88},{"name":"uart_configure","line":99}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9},{"name":"isa::registers","line":10}],"terms":["fpga","uart","zero","dsp","clock","baud","rate","bit","period","width","fifo","depth","status","idle","busy","uartstate","uartconfig","ready","send","read","reset","configure"]},{"id":"a47276fc0044d60446b49d876a5ead70730fb7f63a196aa25f2b7b28887042c3","sources":[{"repo":"ghashtag/t27","path":"specs/bus/pubsub.t27","health":"warn","module":"bus-pubsub"}],"description":"bus/pubsub.t27 — Publish/Subscribe Patterns Pub/sub interface for event-driven communication","symbols":[{"name":"DEFAULT_PUBLISH_TIMEOUT_MS","line":25},{"name":"DEFAULT_SUBSCRIBE_TIMEOUT_MS","line":28},{"name":"MAX_PENDING_PUBLISHES","line":31},{"name":"MAX_TOPICS","line":34},{"name":"DEFAULT_PUBLISH_RETRIES","line":37},{"name":"TOPIC_SEPARATOR","line":40},{"name":"SINGLE_LEVEL_WILDCARD","line":43},{"name":"MULTI_LEVEL_WILDCARD","line":46},{"name":"PublishResult","line":53},{"name":"SubscribeResult","line":60},{"name":"UnsubscribeResult","line":67},{"name":"TopicNode","line":74},{"name":"PubSubConfig","line":81},{"name":"SubscriberContext","line":89},{"name":"TopicMatchResult","line":96},{"name":"BusInfo","line":103},{"name":"DeliveryQueue","line":111},{"name":"PendingPublish","line":119},{"name":"TopicHierarchy","line":126},{"name":"publish_result_create","line":136},{"name":"publish_result_error","line":145},{"name":"subscribe_result_create","line":154},{"name":"subscribe_result_error","line":163},{"name":"unsubscribe_result_create","line":172},{"name":"unsubscribe_result_error","line":181},{"name":"topic_node_create","line":190},{"name":"pubsub_config_default","line":199},{"name":"subscriber_context_create","line":209},{"name":"topic_match_result_create","line":218},{"name":"bus_info_create","line":227},{"name":"delivery_queue_create","line":237},{"name":"pending_publish_create","line":247},{"name":"match_topic_pattern","line":256},{"name":"is_hierarchical_topic","line":264},{"name":"get_topic_parent","line":274},{"name":"get_topic_depth","line":288},{"name":"join_topic","line":299},{"name":"split_topic","line":311},{"name":"is_delivery_queue_empty","line":331},{"name":"is_delivery_queue_full","line":336},{"name":"enqueue_delivery","line":341},{"name":"new_tail","line":343},{"name":"dequeue_delivery","line":353},{"name":"new_head","line":357},{"name":"pattern_contains_wildcard","line":367},{"name":"expand_wildcard_pattern","line":372},{"name":"publish_result_to_string","line":386},{"name":"subscribe_result_to_string","line":395},{"name":"unsubscribe_result_to_string","line":404},{"name":"result","line":417},{"name":"result","line":422},{"name":"result","line":427},{"name":"node","line":432},{"name":"config","line":437},{"name":"pattern","line":442},{"name":"ctx","line":443},{"name":"result","line":448},{"name":"info","line":453},{"name":"queue","line":458},{"name":"event","line":463},{"name":"pending","line":464},{"name":"pattern","line":469},{"name":"result","line":470},{"name":"parent","line":479},{"name":"depth","line":484},{"name":"queue","line":489},{"name":"pattern","line":494},{"name":"result","line":499},{"name":"str","line":500},{"name":"pattern","line":630}],"imports":[],"terms":["bus","pubsub","default","publish","timeout","subscribe","max","publishes","topics","retries","topic","separator","single","level","wildcard","multi","unsubscribe","node","sub","config","subscriber","match","info","delivery","queue","hierarchy","create","pattern","hierarchical","get","parent","depth","join","split","empty","full","enqueue","tail","dequeue","head","contains","expand","ctx","event","str"]},{"id":"a522aeb649e6ff9cee8e8352992b5a81155c073aa0c62ff2896fdc5300dafc63","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/btree.t27","health":"ok","module":"TriBtree"}],"description":"t27/specs/","symbols":[{"name":"BTree","line":13},{"name":"BTreeNode","line":18},{"name":"init","line":30},{"name":"insert","line":35},{"name":"search","line":40}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","btree","node","init","insert","search"]},{"id":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/timing.t27","health":"ok","module":"Timing"}],"description":"t27/specs/fpga/timing.t27 T27 Static Timing Analysis Specification Estimates critical path, slack, and Fmax from HIR module structure Artix-7 timing model: LUT=0.1ns, BRAM=2.0ns, DSP=2.5ns, routing=0.3ns Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"ArcKind","line":13},{"name":"TimingArc","line":23},{"name":"comb_arc","line":30},{"name":"reg_to_reg","line":39},{"name":"input_to_reg","line":48},{"name":"TimingPath","line":59},{"name":"timing_path","line":67},{"name":"is_met","line":77},{"name":"is_violated","line":81},{"name":"TimingConstraint","line":87},{"name":"clock_constraint","line":93},{"name":"clock_mhz","line":101},{"name":"TimingReport","line":114},{"name":"timing_ok","line":124},{"name":"timing_fail","line":136},{"name":"passed","line":148},{"name":"lut_delay_ps","line":154},{"name":"bram_delay_ps","line":158},{"name":"dsp_delay_ps","line":162},{"name":"routing_delay_ps","line":166},{"name":"setup_time_ps","line":170},{"name":"hold_time_ps","line":174},{"name":"path_delay","line":180},{"name":"slack","line":190},{"name":"fmax_from_delay","line":194},{"name":"est_comb_delay","line":201},{"name":"est_reg_to_reg_delay","line":205},{"name":"worst_path","line":209},{"name":"validate_constraint","line":226},{"name":"validate_arc","line":237}],"imports":[],"terms":["fpga","timing","arc","kind","comb","reg","path","met","violated","constraint","clock","mhz","report","fail","passed","lut","delay","bram","dsp","routing","setup","time","hold","slack","fmax","est","worst","validate"]},{"id":"a5666136df528393dd97673ac9ea68fa10fdb3b7bc111b4be2d39b42c1091c91","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_uart_tx.t27","health":"warn","module":"TrinityFpgaUartTxT27"}],"description":"","symbols":[{"name":"on_clock","line":13}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","uart","clock"]},{"id":"a65ff9c73705aa9ceec3d2ac8abda449cf68771040c2457378217bd89663cf81","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/sparse41_decoder.t27","health":"warn","module":"TrinitySparse41DecoderT27"}],"description":"","symbols":[{"name":"on_comb","line":4}],"imports":[],"terms":["dmitrii","memory","rtl","sparse41","decoder","sparse41decoder","comb"]},{"id":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/traffic_animator.t27","health":"warn","module":"traffic_animator"}],"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"MAX_PATHS","line":8},{"name":"ANIMATION_FPS","line":9},{"name":"MAX_FRAMES","line":10},{"name":"create_anim_packet","line":13},{"name":"get_anim_packet_id","line":20},{"name":"get_anim_packet_source","line":24},{"name":"get_anim_packet_dest","line":28},{"name":"get_anim_packet_progress","line":32},{"name":"update_packet_progress","line":37},{"name":"create_animation_path","line":52},{"name":"get_anim_path_id","line":59},{"name":"get_anim_path_node_count","line":63},{"name":"get_anim_path_current_position","line":67},{"name":"get_anim_path_type","line":71},{"name":"PATH_DIRECT","line":76},{"name":"PATH_MULTIHOP","line":77},{"name":"PATH_BROADCAST","line":78},{"name":"PATH_GATHER","line":79},{"name":"create_animation_frame","line":82},{"name":"get_anim_frame_id","line":89},{"name":"get_anim_frame_timestamp","line":93},{"name":"get_anim_frame_packet_count","line":97},{"name":"get_anim_frame_duration","line":101},{"name":"create_traffic_stats","line":106},{"name":"get_traffic_total_packets","line":113},{"name":"get_traffic_bytes","line":117},{"name":"get_traffic_packets_dropped","line":121},{"name":"get_traffic_avg_latency","line":125},{"name":"create_packet_color","line":130},{"name":"get_packet_color_type","line":137},{"name":"get_packet_color_priority","line":141},{"name":"get_packet_color_size","line":145},{"name":"get_packet_color_code","line":149},{"name":"PACKET_DATA","line":154},{"name":"PACKET_CONTROL","line":155},{"name":"PACKET_BEACON","line":156},{"name":"PACKET_ACK","line":157},{"name":"get_packet_visual_color","line":160},{"name":"create_animation_timeline","line":178},{"name":"get_timeline_current_frame","line":185},{"name":"get_timeline_total_frames","line":189},{"name":"get_timeline_loop_count","line":193},{"name":"get_timeline_speed","line":197},{"name":"advance_animation_frame","line":202},{"name":"create_traffic_pattern","line":220},{"name":"get_pattern_id","line":227},{"name":"get_pattern_burst_size","line":231},{"name":"get_pattern_interval","line":235},{"name":"get_pattern_duration","line":239},{"name":"generate_traffic_burst","line":244},{"name":"calculate_packet_position","line":260},{"name":"update_animation_packets","line":271},{"name":"render_animation_frame","line":305},{"name":"calculate_animation_complexity","line":314},{"name":"optimize_animation_performance","line":322},{"name":"generate_traffic_heat_map","line":334},{"name":"generate_traffic_animation","line":386},{"name":"create_animation_controls","line":414},{"name":"process_animation_control","line":422},{"name":"calculate_animation_stats","line":440}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","traffic","animator","max","packets","paths","animation","fps","frames","create","anim","packet","get","dest","progress","path","node","count","position","direct","multihop","broadcast","gather","frame","timestamp","duration","stats","total","bytes","dropped","avg","latency","color","priority","size","data","control","beacon","ack","visual","timeline","loop","speed","advance","pattern","burst","interval","generate","calculate","render","complexity","optimize","performance","heat","map","controls","process"]},{"id":"a72d2ea5db5519cf66f7d714b6b641c9844824efb9942b18d7ad54b31a89384d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex.t27","health":"ok","module":"TriRegex"}],"description":"t27/specs/","symbols":[{"name":"Regex","line":13},{"name":"Match","line":18},{"name":"compile","line":29},{"name":"match","line":34},{"name":"find_all","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","regex","match","compile","find"]},{"id":"a7ce1cc4ced86cc2bcf1f682238b76595ec6787bee6dcd2320985c19e801f284","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/polynomial.t27","health":"ok","module":"TriPolynomial"}],"description":"t27/specs/","symbols":[{"name":"Polynomial","line":13},{"name":"init","line":23},{"name":"eval","line":28},{"name":"add","line":33},{"name":"multiply","line":38},{"name":"derivative","line":43},{"name":"deinit","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","polynomial","init","eval","multiply","derivative","deinit"]},{"id":"a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/key_management.t27","health":"warn","module":"KeyManagement"}],"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","symbols":[{"name":"MAX_KEYS","line":7},{"name":"KEY_SIZE","line":8},{"name":"KEY_VALID","line":9},{"name":"KEY_INVALID","line":10},{"name":"ROTATION_INTERVAL","line":11},{"name":"create_key_entry","line":17},{"name":"get_key_valid","line":24},{"name":"get_key_id","line":28},{"name":"get_key_value","line":32},{"name":"get_key_timestamp","line":36},{"name":"create_key_store","line":43},{"name":"set_key_slot","line":47},{"name":"get_key_entry","line":60},{"name":"find_key_by_id","line":68},{"name":"add_key","line":82},{"name":"invalidate_key","line":97},{"name":"needs_rotation","line":108},{"name":"rotate_key","line":118},{"name":"get_active_key","line":128},{"name":"count_valid_keys","line":171}],"imports":[{"name":"base::types","line":5}],"terms":["net","key","management","max","keys","size","valid","invalid","rotation","interval","create","entry","get","timestamp","store","set","slot","find","invalidate","rotate","active","count"]},{"id":"a8197c8c62744c13e229dcea0384298bb118088c8de922a85faeff60ccb58588","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/int4.t27","health":"ok","module":"triformat-int4"}],"description":"int4.t27 — Int4 Signed 4-bit Integer Quantization Range: -8 to 7 Used for ultra-low precision quantization in ML","symbols":[{"name":"BITS","line":13},{"name":"MIN","line":14},{"name":"MAX","line":15},{"name":"RANGE","line":16},{"name":"MASK","line":18},{"name":"Int4","line":24},{"name":"int4_from_i8","line":33},{"name":"int4_from_i16","line":44},{"name":"int4_from_i32","line":55},{"name":"int4_from_f32","line":67},{"name":"rounded","line":78},{"name":"int4_to_i8","line":84},{"name":"int4_to_i16","line":90},{"name":"int4_to_i32","line":97},{"name":"int4_to_f32","line":103},{"name":"int4_to_f64","line":109},{"name":"int4_add","line":119},{"name":"result","line":120},{"name":"int4_sub","line":131},{"name":"result","line":132},{"name":"int4_mul","line":143},{"name":"result","line":144},{"name":"int4_div","line":156},{"name":"result","line":160},{"name":"int4_abs","line":171},{"name":"int4_neg","line":180},{"name":"int4_is_equal","line":192},{"name":"int4_is_greater","line":197},{"name":"int4_is_less","line":202},{"name":"int4_min","line":207},{"name":"int4_max","line":212},{"name":"int4_clamp","line":217},{"name":"int4_clamp_to_range","line":232},{"name":"int4_is_in_range","line":238},{"name":"int4_lerp","line":244},{"name":"fa","line":245},{"name":"fb","line":246},{"name":"result","line":247},{"name":"int4_sq","line":253},{"name":"int4_abs_diff","line":259},{"name":"diff","line":260}],"imports":[],"terms":["chips","euler","numeric","int4","triformat","bits","min","max","range","mask","i16","i32","f32","rounded","f64","sub","mul","div","abs","neg","equal","greater","less","clamp","lerp","diff"]},{"id":"a8a83daf267d0504d21379f7c2dce998cf5c9ea4847715134afb9b0afd952da9","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/08_modules_and_arrays.t27","health":"ok","module":"tutorial-08-modules"}],"description":"08 — Modules, visibility and arrays Lesson 8, the last one. How a spec names itself, what it exposes, how it pulls in another spec, and the array/index syntax used by every lookup table in the corpus. . After this, open specs/numeric/gf16.t27 -- it is a real spec built entirely","symbols":[{"name":"EXPORTED_WIDTH","line":32},{"name":"INTERNAL_SCALE","line":35},{"name":"scaled_width","line":37},{"name":"TRIT_VALUES","line":50},{"name":"POWERS_OF_TWO","line":52},{"name":"EXPONENT_BIAS","line":54},{"name":"power_of_two","line":62},{"name":"bias_for_width","line":66}],"imports":[{"name":"base::types","line":22}],"terms":["tutorial","modules","arrays","width","internal","scale","scaled","trit","values","powers","two","exponent","bias","power"]},{"id":"a8e61e3999e7a9f8b70f50c9e4be8038c91b50ed589aac52c50eb38a14295197","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/builder.t27","health":"ok","module":"TriBuilder"}],"description":"t27/specs/","symbols":[{"name":"Builder","line":13},{"name":"init","line":24},{"name":"empty","line":29},{"name":"append","line":34},{"name":"append_slice","line":39},{"name":"len","line":44},{"name":"capacity","line":49},{"name":"finish","line":54},{"name":"reset","line":59}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","builder","init","empty","append","slice","len","capacity","finish","reset"]},{"id":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/local_processing.t27","health":"warn","module":"local_processing"}],"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","symbols":[{"name":"MAX_TASKS","line":7},{"name":"MAX_RESULTS","line":8},{"name":"PROCESSING_TIMEOUT","line":9},{"name":"TASK_PRIORITY_HIGH","line":10},{"name":"TASK_PRIORITY_MEDIUM","line":11},{"name":"TASK_PRIORITY_LOW","line":12},{"name":"create_task","line":15},{"name":"get_task_id","line":22},{"name":"get_priority","line":26},{"name":"get_data_size","line":30},{"name":"get_processing_time","line":34},{"name":"create_result","line":39},{"name":"get_result_task_id","line":46},{"name":"get_status","line":50},{"name":"get_result_size","line":54},{"name":"get_result_value","line":58},{"name":"STATUS_PENDING","line":63},{"name":"STATUS_PROCESSING","line":64},{"name":"STATUS_COMPLETED","line":65},{"name":"STATUS_FAILED","line":66},{"name":"process_task","line":69},{"name":"aggregate_results","line":81},{"name":"find_task_by_priority","line":95},{"name":"find_highest_priority_task","line":110},{"name":"count_pending_tasks","line":128},{"name":"calculate_processing_load","line":144},{"name":"can_accept_task","line":158},{"name":"find_completed_result","line":171},{"name":"calculate_efficiency","line":188},{"name":"aggregate_data","line":212},{"name":"filter_data","line":229},{"name":"make_local_decision","line":244},{"name":"create_resource_state","line":257},{"name":"get_cpu_usage","line":264},{"name":"get_memory_usage","line":268},{"name":"get_task_count","line":272},{"name":"get_available_resources","line":276},{"name":"update_resources","line":281},{"name":"has_resources","line":300}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","local","processing","max","tasks","results","timeout","priority","high","medium","low","create","get","data","size","time","status","completed","failed","process","aggregate","find","highest","count","calculate","load","accept","efficiency","filter","make","decision","resource","state","cpu","usage","memory","available","resources"]},{"id":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","sources":[{"repo":"ghashtag/t27","path":"specs/queen/lotus.t27","health":"warn","module":"QueenLotus"}],"description":"t27/specs/queen/lotus.t27 Queen Lotus 6-Phase Orchestration Specification Self-improving agent orchestration with episode-based learning","symbols":[{"name":"NUM_PHASES","line":17},{"name":"EPISODE_BUFFER_SIZE","line":18},{"name":"POLICY_WINDOW_SIZE","line":19},{"name":"PHASE_OBSERVE","line":22},{"name":"PHASE_RECALL","line":23},{"name":"PHASE_EVALUATE","line":24},{"name":"PHASE_PLAN","line":25},{"name":"PHASE_ACT","line":26},{"name":"PHASE_RECORD","line":27},{"name":"OUTCOME_UNKNOWN","line":30},{"name":"OUTCOME_SUCCESS","line":31},{"name":"OUTCOME_PARTIAL","line":32},{"name":"OUTCOME_FAILURE","line":33},{"name":"OUTCOME_FATAL","line":34},{"name":"QUALITY_UNKNOWN","line":37},{"name":"QUALITY_GOOD","line":38},{"name":"QUALITY_UNSTABLE","line":39},{"name":"QUALITY_BAD","line":40},{"name":"DELTA_SCALE_UP","line":43},{"name":"DELTA_SCALE_DOWN","line":44},{"name":"DELTA_SET","line":45},{"name":"DELTA_WAIT","line":46},{"name":"Episode","line":57},{"name":"PHASE_TIMEOUT_MS","line":77},{"name":"Context","line":84},{"name":"Evaluation","line":91},{"name":"Plan","line":100},{"name":"Action","line":107},{"name":"CycleResult","line":114},{"name":"lotus_orchestrate","line":130},{"name":"lotus_phase","line":159},{"name":"PhaseOutput","line":185},{"name":"observe_state","line":192},{"name":"active_issues","line":193},{"name":"system_health","line":194},{"name":"timestamp","line":195},{"name":"get_active_issues_count","line":206},{"name":"get_system_health","line":213},{"name":"get_timestamp","line":219},{"name":"RecallEpisode","line":229},{"name":"recall_episodes","line":237},{"name":"episode_idx","line":245},{"name":"EvaluationResult","line":262},{"name":"evaluate_quality","line":269},{"name":"episode","line":278},{"name":"total","line":292},{"name":"success_ratio","line":304},{"name":"failure_ratio","line":305},{"name":"evaluate_quality_","line":327},{"name":"recalled","line":328},{"name":"eval","line":329},{"name":"PlanResult","line":341},{"name":"generate_plan","line":349},{"name":"generate_plan_","line":367},{"name":"eval","line":368},{"name":"plan","line":369},{"name":"ActionResult","line":389},{"name":"execute_action","line":396},{"name":"start_time","line":398},{"name":"execution_time","line":410},{"name":"execute_action_","line":421},{"name":"plan_result","line":422},{"name":"action","line":423},{"name":"scale_up_resources","line":437},{"name":"scale_down_resources","line":444},{"name":"set_parameter","line":451},{"name":"RecordResult","line":462},{"name":"record_episode","line":469},{"name":"slot","line":470},{"name":"record_episode_","line":489},{"name":"cycle_result","line":490},{"name":"outcome","line":499},{"name":"determine_outcome","line":509},{"name":"lotus_spawn","line":523},{"name":"spawn_agent","line":538},{"name":"lotus_phase_management","line":549},{"name":"check_phase_timeout","line":559},{"name":"current_time","line":560},{"name":"elapsed","line":561},{"name":"force_phase_transition","line":568}],"imports":[{"name":"base::types","line":9},{"name":"nn::hslm","line":10},{"name":"compiler::runtime","line":11}],"terms":["queen","lotus","num","phases","episode","buffer","size","policy","window","phase","observe","recall","evaluate","plan","act","record","outcome","unknown","success","partial","failure","fatal","quality","good","unstable","bad","delta","scale","down","set","wait","timeout","evaluation","action","cycle","orchestrate","state","active","system","health","timestamp","get","count","episodes","idx","total","ratio","recalled","eval","generate","execute","start","time","execution","resources","parameter","slot","determine","spawn","management","elapsed","force","transition"]},{"id":"aa444c6314549e4ac7da40ddc485a50ffcbaa04df78a9e0f2f117733a5dd0282","sources":[{"repo":"ghashtag/t27","path":"compiler/skill/registry.t27","health":"ok","module":"skill_registry"}],"description":"registry.t27 -- Skill Registry JSON Structure (ADR-002) Defines the structure for tri skill workflow registry","symbols":[{"name":"RegistryPath","line":10},{"name":"SkillStatus","line":13},{"name":"SkillKind","line":22},{"name":"SkillVerdict","line":31},{"name":"SkillMetadata","line":37},{"name":"Skill","line":45},{"name":"SkillRegistry","line":66},{"name":"create_registry","line":169},{"name":"create_skill","line":177},{"name":"now","line":178},{"name":"can_commit","line":206},{"name":"can_push","line":211},{"name":"status","line":223},{"name":"status","line":227},{"name":"kind","line":231},{"name":"verdict","line":235},{"name":"registry","line":239},{"name":"registry","line":243},{"name":"skill","line":247},{"name":"metadata","line":251},{"name":"start","line":300},{"name":"end","line":302},{"name":"elapsed","line":303},{"name":"start","line":308},{"name":"end","line":310},{"name":"elapsed","line":311}],"imports":[],"terms":["compiler","skill","registry","path","status","kind","verdict","metadata","create","commit","push","start","end","elapsed"]},{"id":"aa68e993cc9415a7df4fda9e3366a8cb1c8de9e0f35f2b499f550f2bf45b2936","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/mod_structure.t27","health":"ok","module":"compiler-mod-structure"}],"description":"compiler/mod_structure.t27 — Module Structure and Ring Validation Trinity S³AI — Spec-First Architecture","symbols":[{"name":"PHI","line":14},{"name":"PHI_INV","line":15},{"name":"TRINITY","line":16},{"name":"BASE_MODULE_COUNT","line":19},{"name":"ModuleCategory","line":26},{"name":"ModuleEntry","line":34},{"name":"get_module_list","line":42},{"name":"validate_ring_number","line":94},{"name":"modules","line":104},{"name":"phi_sq","line":120},{"name":"phi_inv_sq","line":121}],"imports":[{"name":"math::sacred_physics","line":8}],"terms":["compiler","mod","structure","phi","inv","base","count","category","entry","get","list","validate","ring","modules"]},{"id":"aa7a491dff3f3eeca6b4ddf68779ce179c51376db2414b0517b13cc9febee98b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/ternary_hw_verification.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","trinet","ternary","verification"]},{"id":"ab9a5ef2d262ae5f40d0c1e676db69da17f952923c17db78a962146c4f12b469","sources":[{"repo":"ghashtag/t27","path":"specs/physics/quantum.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","quantum"]},{"id":"acf6ebbee2cb8fc7ed573fa75e2196c7db42ccdd33c893329bf26bd5299845f6","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_activation.t27","health":"ok","module":"SiluSwish"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_BETA","line":13},{"name":"SiLUConfig","line":19},{"name":"forward","line":28},{"name":"forward_batch","line":33},{"name":"derivative","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","silu","swish","default","beta","luconfig","forward","batch","derivative"]},{"id":"ad278f2c5876f7f6c78a0fd9bd181c12fe7311b243653275b18fc045a8afcb37","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/linker_tb.t27","health":"ok","module":"Linker_Testbench"}],"description":"t27/specs/fpga/testbench/linker_tb.t27 Linker Testbench Tests symbol resolution, address assignment, and section merging","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_SECTIONS","line":11},{"name":"BASE_ADDR","line":12},{"name":"SECTION_ALIGN","line":13},{"name":"tick","line":24},{"name":"reset","line":29},{"name":"align_addr","line":37},{"name":"section_size","line":43}],"imports":[{"name":"fpga::linker::Linker","line":8}],"terms":["fpga","testbench","linker","clk","period","max","sections","base","addr","section","align","tick","reset","size"]},{"id":"ad4f67213e211d9a352750162ca8b59e3baa58562942ffc6c101d1843fb65426","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn_target_network.t27","health":"ok","module":"DqnTarget"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_TAU","line":13},{"name":"DEFAULT_UPDATE_FREQ","line":14},{"name":"UpdateMethod","line":20},{"name":"TargetUpdateConfig","line":24},{"name":"hard_update","line":35},{"name":"soft_update","line":40},{"name":"should_update","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["dqn","target","network","default","tau","freq","method","config","hard","soft"]},{"id":"ad9a14e1f66ec601b43a9219308192aff9e1f81fe8813a34af87d7f33c180b99","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/match.t27","health":"warn","module":null}],"description":"t27/specs/","symbols":[{"name":"Match","line":13},{"name":"MatchCapture","line":18},{"name":"match_literal","line":27},{"name":"match_type","line":32},{"name":"exhaustive","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","match","capture","literal","exhaustive"]},{"id":"adcd983d989617b9dfe6c0f09f2a397b0de0f093be8f71ad713f4f55abf4c3e7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/faculty_board.t27","health":"ok","module":"FacultyBoard"}],"description":"t27/specs/","symbols":[{"name":"Lang","line":13},{"name":"FacultySnapshot","line":19},{"name":"AgentStatus","line":29},{"name":"Agent","line":36},{"name":"AgentStatusKind","line":42},{"name":"FacultyDelta","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["faculty","board","lang","snapshot","status","kind","delta"]},{"id":"ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_scenarios.t27","health":"ok","module":"ProductionScenarios"}],"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","symbols":[{"name":"STATE_COLD_START","line":8},{"name":"STATE_DISCOVERING","line":9},{"name":"STATE_CONNECTED","line":10},{"name":"STATE_PARTITIONED","line":11},{"name":"STATE_RECOVERING","line":12},{"name":"create_node_state","line":15},{"name":"node_state_of","line":19},{"name":"node_neighbors","line":23},{"name":"node_uptime","line":27},{"name":"cold_start","line":32},{"name":"discover_neighbor","line":36},{"name":"simulate_partition","line":49},{"name":"recover_from_partition","line":57},{"name":"node_join","line":66},{"name":"node_leave","line":72},{"name":"simulate_interference","line":83},{"name":"battery_drain","line":93},{"name":"check_max_hops","line":102}],"imports":[{"name":"base::types","line":5}],"terms":["net","production","scenarios","state","cold","start","discovering","connected","partitioned","recovering","create","node","neighbors","uptime","discover","neighbor","simulate","partition","recover","join","leave","interference","battery","drain","max","hops"]},{"id":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","sources":[{"repo":"ghashtag/t27","path":"specs/portable/relay_observer.t27","health":"warn","module":"portable"}],"description":"relay_observer.t27 0 WebSocket Relay Observer for BrowserOS A2A Integration Ring 32 — Cloud Orchestration 12 + 1/34 = 3 | TRINITY","symbols":[{"name":"WS_READY_STATE","line":15},{"name":"WS_CONNECTING_STATE","line":16},{"name":"WS_ERROR_STATE","line":17},{"name":"WS_CLOSED_STATE","line":18},{"name":"NEGONE","line":20},{"name":"ZERO","line":21},{"name":"ONE","line":22},{"name":"MESSAGE_TYPE_EVENT","line":24},{"name":"MESSAGE_TYPE_DATA","line":25},{"name":"MESSAGE_TYPE_CONTROL","line":26},{"name":"WebSocketState","line":32},{"name":"MessageType","line":39},{"name":"WebSocketMessage","line":49},{"name":"ObserverConfig","line":55},{"name":"websocket_state_new","line":66},{"name":"websocket_state_set","line":70},{"name":"websocket_state_is_ready","line":74},{"name":"websocket_state_is_closed","line":78},{"name":"message_type_from_byte","line":86},{"name":"message_type_to_byte","line":96},{"name":"validate_message_header","line":108},{"name":"mtype","line":113},{"name":"parse_websocket_message","line":128},{"name":"mtype","line":137},{"name":"create_event_message","line":156},{"name":"create_data_message","line":166},{"name":"create_control_message","line":176},{"name":"should_reconnect","line":190},{"name":"calculate_backoff_delay","line":194},{"name":"base","line":196},{"name":"delay","line":197},{"name":"jitter","line":198},{"name":"result","line":199},{"name":"observer_init","line":208},{"name":"observer_should_connect","line":223},{"name":"observer_should_disconnect","line":227},{"name":"route_message","line":235},{"name":"extract_target_agent","line":246},{"name":"byte","line":262},{"name":"get_current_timestamp","line":280},{"name":"update_timestamp","line":286}],"imports":[{"name":"tritype::base","line":8},{"name":"compiler::lexer","line":9}],"terms":["portable","relay","observer","ready","state","connecting","closed","negone","zero","one","event","data","control","web","socket","config","websocket","set","byte","validate","header","mtype","parse","create","reconnect","calculate","backoff","delay","base","jitter","init","connect","disconnect","route","extract","target","get","timestamp"]},{"id":"ae3d2608f85fe75b730cedad5deb9e7665c28613bed1c5c4304b8b0ad5e0f1b0","sources":[{"repo":"ghashtag/t27","path":"specs/account/auth.t27","health":"ok","module":"AccountAuth"}],"description":"specs/account/auth.t27 Account Authentication Operations","symbols":[{"name":"token","line":15},{"name":"refresh","line":20},{"name":"login","line":25},{"name":"poll","line":30},{"name":"logout","line":35},{"name":"orgs","line":44},{"name":"AccountOrgs","line":49},{"name":"orgs_by_account","line":55},{"name":"config","line":60},{"name":"UserInfo","line":69},{"name":"get_user","line":75},{"name":"TokenRefreshRequest","line":84},{"name":"DeviceTokenRequest","line":91},{"name":"DeviceAuthResponse","line":98},{"name":"TokenRefreshResponse","line":107},{"name":"DeviceTokenSuccessResponse","line":114},{"name":"DeviceTokenErrorResponse","line":121},{"name":"parse_poll_result","line":131}],"imports":[{"name":"base::types","line":6},{"name":"account::schema","line":7}],"terms":["account","auth","token","refresh","login","poll","logout","orgs","config","user","info","get","request","device","response","success","parse"]},{"id":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/tensorpack.t27","health":"warn","module":"TrinityMemoryTensorPackSpec"}],"description":"specs/memory/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;","symbols":[{"name":"TMS_TTPK_MAGIC_0","line":12},{"name":"TMS_TTPK_MAGIC_1","line":13},{"name":"TMS_TTPK_MAGIC_2","line":14},{"name":"TMS_TTPK_MAGIC_3","line":15},{"name":"TMS_TTPK_VERSION","line":16},{"name":"TMS_TTPK_FLAGS","line":17},{"name":"TMS_TTPK_HEADER_BYTES","line":18},{"name":"TMS_TTPK_VERSION_OFFSET","line":19},{"name":"TMS_TTPK_FLAGS_OFFSET","line":20},{"name":"TMS_TTPK_RESERVED_OFFSET","line":21},{"name":"TMS_TTPK_RESERVED_BYTES","line":22},{"name":"TMS_TTPK_METADATA_LENGTH_OFFSET","line":23},{"name":"TMS_TTPK_METADATA_LENGTH_BYTES","line":24},{"name":"TMS_TTPK_TENSOR_COUNT_OFFSET","line":25},{"name":"TMS_TTPK_TENSOR_COUNT_BYTES","line":26},{"name":"TMS_TTPK_PAYLOAD_LENGTH_OFFSET","line":27},{"name":"TMS_TTPK_PAYLOAD_LENGTH_BYTES","line":28},{"name":"TMS_TTPK_METADATA_CRC_OFFSET","line":29},{"name":"TMS_TTPK_PAYLOAD_CRC_OFFSET","line":30},{"name":"TMS_TTPK_CRC_BYTES","line":31},{"name":"TMS_TTPK_CRC_COVERED_HEADER_BYTES","line":32},{"name":"TMS_TTPK_METADATA_OFFSET","line":33},{"name":"TMS_TTPK_NESTED_HEADER_BYTES","line":34},{"name":"TMS_TTPK_MAX_TENSORS","line":37},{"name":"TMS_TTPK_MAX_METADATA_BYTES","line":38},{"name":"TMS_TTPK_MAX_PAYLOAD_BYTES","line":39},{"name":"TMS_TTPK_MAX_TOTAL_TRITS","line":40},{"name":"TMS_TTPK_MAX_RANK","line":41},{"name":"TMS_TTPK_MAX_DIMENSION","line":42},{"name":"TMS_TTPK_MAX_NAME_BYTES","line":43},{"name":"TMS_TTPK_MAX_AXIS_BYTES","line":44},{"name":"TMS_TTPK_MAX_SCALE_AXIS","line":45},{"name":"TMS_TTPK_JSON_MAX_DEPTH","line":46},{"name":"TMS_TTPK_JSON_INTEGER_MAX_CHARS","line":47},{"name":"TMS_TTPK_CODEC_NAME_COUNT","line":48},{"name":"TMS_TTPK_ROOT_MEMBERS","line":53},{"name":"TMS_TTPK_DESCRIPTOR_MEMBERS","line":54},{"name":"TMS_TTPK_EMPTY_METADATA_BYTES","line":55},{"name":"TMS_TTPK_EMPTY_PACK_BYTES","line":56},{"name":"TtpkField","line":58},{"name":"TMS_TTPK_FLOAT_FIXED_MIN_EXPONENT","line":72},{"name":"TMS_TTPK_FLOAT_FIXED_MAX_EXPONENT","line":73},{"name":"TMS_TTPK_FLOAT_EXPONENT_MIN_DIGITS","line":74},{"name":"TMS_TTPK_ERR_DESCRIPTOR","line":78},{"name":"TMS_TTPK_ERR_TEXT","line":79},{"name":"TMS_TTPK_ERR_SHAPE","line":80},{"name":"TMS_TTPK_ERR_SCALE","line":81},{"name":"TMS_TTPK_ERR_AXES","line":82},{"name":"TMS_TTPK_ERR_OFFSET","line":83},{"name":"TMS_TTPK_ERR_SCHEMA","line":84},{"name":"TMS_TTPK_ERR_JSON","line":85},{"name":"tms_ttpk_container_bytes","line":88},{"name":"tms_ttpk_size_consistent","line":92},{"name":"tms_ttpk_header_limits_valid","line":96},{"name":"tms_ttpk_dimension_valid","line":102},{"name":"tms_ttpk_shape_count","line":107},{"name":"tms_ttpk_name_length_valid","line":120},{"name":"tms_ttpk_axis_length_valid","line":124},{"name":"tms_ttpk_text_byte_allowed","line":130},{"name":"tms_ttpk_axes_count_valid","line":135},{"name":"tms_ttpk_scale_axis_valid","line":139},{"name":"tms_ttpk_scale_count","line":146},{"name":"tms_ttpk_scale_valid","line":152},{"name":"tms_ttpk_nested_length","line":156},{"name":"tms_ttpk_chain_valid","line":161},{"name":"tms_ttpk_float_uses_fixed_notation","line":174},{"name":"tms_ttpk_total_trit_limit","line":179}],"imports":[],"terms":["dmitrii","memory","tensorpack","tensor","pack","tms","ttpk","magic","flags","header","bytes","offset","reserved","metadata","length","count","payload","crc","covered","nested","max","tensors","total","trits","rank","dimension","axis","scale","json","depth","integer","chars","codec","root","members","descriptor","empty","field","float","fixed","min","exponent","digits","err","text","shape","axes","schema","container","size","consistent","limits","valid","byte","allowed","chain","uses","notation","trit","limit"]},{"id":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attn.t27","health":"ok","module":"MultiHeadAttention"}],"description":"t27/specs/ml/transformer/multi_head_attn.t27","symbols":[{"name":"PHI","line":17},{"name":"INV_PHI","line":18},{"name":"PHI_SQUARED","line":19},{"name":"DEFAULT_DROPOUT","line":20},{"name":"DEFAULT_SCALE","line":21},{"name":"PHI_HEAD_DIM_DIVISOR","line":22},{"name":"MHAConfig","line":28},{"name":"MHAState","line":39},{"name":"AttentionMask","line":53},{"name":"MHAForwardResult","line":59},{"name":"MHAGradients","line":65},{"name":"FlashAttentionState","line":77},{"name":"init","line":92},{"name":"forward","line":101},{"name":"flash_attention_forward","line":117},{"name":"compute_attention_scores","line":130},{"name":"apply_causal_mask","line":137},{"name":"apply_attention_mask","line":144},{"name":"softmax_attention","line":150},{"name":"backward","line":157},{"name":"compute_phi_scale","line":172},{"name":"merge_heads","line":180},{"name":"split_heads","line":186},{"name":"create_causal_mask","line":192},{"name":"get_head_dim","line":198},{"name":"get_parameter_count","line":204}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"math::statistics","line":8},{"name":"numeric::gf16","line":9},{"name":"ml::transformer::positional_enc","line":10},{"name":"ml::transformer::norm","line":11}],"terms":["transformer","multi","head","attn","attention","phi","inv","squared","default","dropout","scale","dim","divisor","mhaconfig","mhastate","mask","mhaforward","mhagradients","flash","state","init","forward","compute","scores","apply","causal","softmax","backward","merge","heads","split","create","get","parameter","count"]},{"id":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_protocol_stack.t27","health":"ok","module":"MeshProtocolStack"}],"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","symbols":[{"name":"MAX_NODES","line":8},{"name":"MAX_HOPS","line":9},{"name":"NODE_A","line":10},{"name":"NODE_B","line":11},{"name":"NODE_C","line":12},{"name":"build_packet","line":15},{"name":"extract_src","line":22},{"name":"extract_dst","line":26},{"name":"extract_ttl","line":30},{"name":"extract_payload","line":34},{"name":"decrement_ttl","line":39},{"name":"route_packet","line":51},{"name":"tx_path","line":70},{"name":"rx_path","line":75},{"name":"forward_packet","line":81}],"imports":[{"name":"base::types","line":5}],"terms":["net","mesh","protocol","stack","max","nodes","hops","node","build","packet","extract","dst","ttl","payload","decrement","route","path","forward"]},{"id":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/typechecker.t27","health":"ok","module":"TypeChecking"}],"description":"","symbols":[{"name":"TypeInfo","line":6},{"name":"TypeEntry","line":22},{"name":"MAX_SYMBOLS","line":31},{"name":"MAX_SCOPES","line":32},{"name":"ScopeStack","line":34},{"name":"SymbolTable","line":39},{"name":"TypeCheckResult","line":45},{"name":"FnSignature","line":53},{"name":"MAX_FNS","line":60},{"name":"FnRegistry","line":62},{"name":"symbol_table_init","line":67},{"name":"fn_registry_init","line":75},{"name":"ok_result","line":82},{"name":"error_result","line":92},{"name":"push_scope","line":102},{"name":"pop_scope","line":109},{"name":"lookup","line":116},{"name":"lookup_mutable","line":127},{"name":"insert","line":138},{"name":"register_fn","line":154},{"name":"set_fn_param","line":166},{"name":"lookup_fn","line":175},{"name":"lookup_fn_sig","line":186},{"name":"resolve_type","line":197},{"name":"is_numeric","line":215},{"name":"is_integer","line":221},{"name":"is_float","line":226},{"name":"is_signed","line":230},{"name":"type_name","line":234},{"name":"numeric_promotion","line":251},{"name":"is_comparison_op","line":259},{"name":"is_logical_op","line":263},{"name":"is_arithmetic_op","line":267},{"name":"check_assign","line":272},{"name":"can_implicitly_cast","line":281},{"name":"infer_literal","line":289},{"name":"infer_binary_result","line":297},{"name":"infer_expr","line":310},{"name":"check_stmt","line":370},{"name":"typecheck_fn_body","line":464},{"name":"typecheck_module","line":475},{"name":"typecheck","line":516}],"imports":[{"name":"compiler::parser","line":3},{"name":"compiler::lexer","line":4}],"terms":["compiler","typechecker","checking","info","entry","max","scopes","scope","stack","table","signature","fns","registry","init","push","pop","lookup","mutable","insert","register","set","param","sig","resolve","numeric","integer","float","signed","promotion","comparison","logical","arithmetic","assign","implicitly","cast","infer","literal","binary","expr","stmt","typecheck"]},{"id":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/execute.t27","health":"warn","module":"runtime-execute"}],"description":"runtime/execute.t27 — Runtime Execution Specification Task execution, promises, cancellation, timeouts","symbols":[{"name":"DEFAULT_TIMEOUT_MS","line":19},{"name":"MAX_CONCURRENT_EXECUTIONS","line":22},{"name":"POLL_INTERVAL_MS","line":25},{"name":"TASK_ID_LENGTH","line":28},{"name":"ExecResultType","line":31},{"name":"TaskState","line":39},{"name":"CancelReason","line":48},{"name":"TaskID","line":60},{"name":"Task","line":63},{"name":"TaskResult","line":74},{"name":"ExecContext","line":85},{"name":"PromiseState","line":93},{"name":"Promise","line":101},{"name":"ExecError","line":111},{"name":"task_id_generate","line":124},{"name":"timestamp","line":126},{"name":"bytes","line":129},{"name":"task_create","line":138},{"name":"task_with_timeout","line":151},{"name":"result_success","line":164},{"name":"result_timeout","line":177},{"name":"result_cancelled","line":190},{"name":"result_error","line":203},{"name":"context_create","line":216},{"name":"promise_create","line":226},{"name":"promise_with_resolve","line":238},{"name":"base","line":239},{"name":"promise_resolve","line":251},{"name":"promise_reject","line":260},{"name":"promise_cancel","line":268},{"name":"run","line":273},{"name":"cancel","line":278},{"name":"is_running","line":284},{"name":"is_pending","line":289},{"name":"is_terminal","line":294},{"name":"run_sync","line":299},{"name":"duration","line":302},{"name":"run_with_timeout","line":308},{"name":"duration","line":309},{"name":"fork","line":320},{"name":"is_success","line":328},{"name":"is_error","line":333},{"name":"is_timeout","line":338},{"name":"promise_is_pending","line":343},{"name":"promise_is_resolved","line":348},{"name":"promise_is_rejected","line":353},{"name":"duration","line":358},{"name":"error_create","line":363},{"name":"int_to_bytes","line":374},{"name":"get_timestamp_ms","line":389},{"name":"append_args","line":395},{"name":"append_args_slice","line":405},{"name":"concat_args","line":412},{"name":"concat_args_item","line":422},{"name":"task","line":433},{"name":"task","line":438},{"name":"id","line":443},{"name":"result","line":444},{"name":"id","line":449},{"name":"result","line":450},{"name":"id","line":455},{"name":"result","line":456},{"name":"id","line":461},{"name":"result","line":462},{"name":"task","line":467},{"name":"context","line":468},{"name":"id","line":490},{"name":"promise","line":491},{"name":"id","line":496},{"name":"resolve","line":497},{"name":"promise","line":498},{"name":"id","line":503},{"name":"result","line":504},{"name":"id","line":511},{"name":"reject","line":512},{"name":"id","line":520},{"name":"error","line":521},{"name":"id","line":692},{"name":"id","line":704},{"name":"task","line":716},{"name":"context","line":728}],"imports":[{"name":"std","line":12}],"terms":["runtime","execute","default","timeout","max","concurrent","executions","poll","interval","length","exec","state","cancel","reason","promise","generate","timestamp","bytes","create","success","cancelled","resolve","base","reject","running","terminal","sync","duration","fork","resolved","rejected","int","get","append","args","slice","concat","item"]},{"id":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","sources":[{"repo":"ghashtag/t27","path":"specs/storage/schema.t27","health":"ok","module":"Storage"}],"description":"specs/storage/schema.t27 Storage Types Specification","symbols":[{"name":"StorageKey","line":14},{"name":"StorageEntry","line":19},{"name":"LockMode","line":31},{"name":"Lock","line":37},{"name":"Migration","line":48},{"name":"MigrationResult","line":55},{"name":"StorageError","line":66},{"name":"NotFoundError","line":72},{"name":"LockError","line":78},{"name":"DEFAULT_LOCK_TIMEOUT_MS","line":88},{"name":"MAX_RETRIES","line":89},{"name":"CURRENT_SCHEMA_VERSION","line":90},{"name":"is_not_found","line":97},{"name":"is_lock_error","line":102}],"imports":[{"name":"base::types","line":6}],"terms":["storage","schema","key","entry","lock","mode","migration","found","default","timeout","max","retries"]},{"id":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/array.t27","health":"ok","module":"TriArray"}],"description":"t27/specs/","symbols":[{"name":"ArrayView","line":13},{"name":"SliceRange","line":18},{"name":"slice","line":29},{"name":"slice_from","line":34},{"name":"first","line":39},{"name":"last","line":44},{"name":"is_empty","line":49},{"name":"contains","line":54},{"name":"index_of","line":59},{"name":"reverse","line":64},{"name":"concat","line":69}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","array","view","slice","range","empty","contains","index","reverse","concat"]},{"id":"b29f2489715e54b82b6b5a2089b82e5c87fbcdd014cf0e3f43101aaffaa5abfb","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum.t27","health":"ok","module":"TriQuantum"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","quantum"]},{"id":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","sources":[{"repo":"ghashtag/t27","path":"specs/github/tests/e2e_full_flow.t27","health":"ok","module":"github"}],"description":"specs/github/tests/e2e_full_flow.t27 End-to-End Full Flow Test for Ring-072 GitHub SSOT Tests: Auth -> Issue -> PR -> Comment -> Sync -> Cleanup Ring-074 - E2E Tests","symbols":[{"name":"auth_result","line":17},{"name":"issue_title","line":21},{"name":"issue","line":22},{"name":"issue_list","line":28},{"name":"pr_title","line":39},{"name":"pr","line":40},{"name":"pr_list","line":46},{"name":"comment_body","line":57},{"name":"comment","line":58},{"name":"comment_list","line":63},{"name":"sync_result","line":74},{"name":"total_steps","line":80},{"name":"sync_result","line":98},{"name":"auth","line":106},{"name":"issue","line":109},{"name":"pr","line":112},{"name":"comment","line":115},{"name":"sync","line":118}],"imports":[{"name":"github::auth","line":9},{"name":"github::issues","line":10},{"name":"github::prs","line":11},{"name":"github::comments","line":12},{"name":"tri::sync","line":13}],"terms":["e2e","full","flow","auth","title","list","sync","total","steps"]},{"id":"b37a891477e02303d3821493c20d8c3a59d9cc04b5a01f1948396712e31cc289","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_card.t27","health":"ok","module":"TriA2ACard"}],"description":"TRI-NET A2A agent card: what a node ADVERTISES it can compute, so a requester routes a task only to a host that hosts its (format-family, width). Without this, tri_a2a knows a skill's family (skill_family) but nothing checks a HOST actually serves it -- a GF-T16 task could be sent to a GF16-only node and silently fail. The card packs two masks into one u32 (no allocation, fits a heartbeat body): card = (family_mask << 16) | width_mask","symbols":[{"name":"FMT_GF_BINARY","line":18},{"name":"FMT_GFT","line":19},{"name":"HI_GF16","line":22},{"name":"HI_GFT16","line":23},{"name":"HI_GFT8","line":24},{"name":"HI_GFT4","line":25},{"name":"HI_GFT32","line":26},{"name":"HI_GFT64","line":27},{"name":"HI_GFT128","line":28},{"name":"family_bit","line":31},{"name":"make_card","line":36},{"name":"card_families","line":41},{"name":"card_widths","line":44},{"name":"hosts_family","line":49},{"name":"hosts_width","line":54},{"name":"can_serve","line":60},{"name":"skill_hi","line":71},{"name":"skill_card_family","line":79},{"name":"skill_card_width","line":92},{"name":"can_serve_skill","line":102},{"name":"GF_OP_ADD","line":111},{"name":"GF_OP_MUL","line":112},{"name":"op_bit","line":114},{"name":"make_card_ops","line":120},{"name":"card_ops","line":124},{"name":"hosts_op","line":128},{"name":"can_serve_op","line":134},{"name":"skill_op_suffix","line":143},{"name":"can_serve_skill_op","line":146}],"imports":[{"name":"base::types","line":15}],"terms":["net","a2a","card","a2acard","fmt","binary","gft","gf16","gft16","gft8","gft4","gft32","gft64","gft128","family","bit","make","families","widths","hosts","width","serve","skill","mul","ops","suffix"]},{"id":"b3f9fa31faa278b582572a364188ee26094f06493002e8df7ad3fd3bb18847e0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/deque.t27","health":"ok","module":"TriDeque"}],"description":"t27/specs/","symbols":[{"name":"Deque","line":13},{"name":"init","line":26},{"name":"push_front","line":31},{"name":"push_back","line":36},{"name":"pop_front","line":41},{"name":"pop_back","line":46},{"name":"deinit","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","deque","init","push","front","back","pop","deinit"]},{"id":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf16.t27","health":"ok","module":"triformat-gf16"}],"description":"gf16.t27 -- GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"SPECIAL_EXP","line":25},{"name":"MANT_DIVISOR","line":27},{"name":"MANT_DIVISOR_SHIFT","line":28},{"name":"PHI_BIAS","line":30},{"name":"GF16_ZERO_POS","line":33},{"name":"GF16_ZERO_NEG","line":34},{"name":"GF16_INF_POS","line":35},{"name":"GF16_INF_NEG","line":36},{"name":"GF16_NAN","line":37},{"name":"GF16","line":43},{"name":"pow2_table","line":50},{"name":"gf16_extract_sign","line":64},{"name":"bit","line":65},{"name":"gf16_extract_exponent","line":72},{"name":"gf16_extract_mantissa","line":79},{"name":"gf16_from_components","line":85},{"name":"sign_bit","line":86},{"name":"gf16_is_zero","line":94},{"name":"gf16_is_special","line":100},{"name":"gf16_encode_f32","line":108},{"name":"sign","line":115},{"name":"abs_value","line":116},{"name":"f32_bits","line":119},{"name":"discarded","line":140},{"name":"gf16_decode_to_f32","line":156},{"name":"sign","line":159},{"name":"mant","line":165},{"name":"sign","line":166},{"name":"sign","line":177},{"name":"exp","line":178},{"name":"mant","line":179},{"name":"sign_mult","line":181},{"name":"mant_mult","line":182},{"name":"exp_mult","line":183},{"name":"gf16_round_phi","line":193},{"name":"sign","line":200},{"name":"abs_value","line":201},{"name":"f32_bits","line":204},{"name":"normalized_mant","line":219},{"name":"gf16_is_inf","line":239},{"name":"exp","line":240},{"name":"mant","line":241},{"name":"gf16_is_nan","line":247},{"name":"exp","line":248},{"name":"mant","line":249},{"name":"gf16_is_negative","line":255},{"name":"sign","line":256},{"name":"gf16_is_positive","line":262},{"name":"sign","line":263},{"name":"gf16_negate","line":269},{"name":"gf16_abs","line":275},{"name":"gf16_copy_sign","line":281},{"name":"sign_mask","line":282},{"name":"value_mask","line":283},{"name":"gf16_max","line":289},{"name":"a_val","line":293},{"name":"b_val","line":294},{"name":"gf16_min","line":301},{"name":"a_val","line":305},{"name":"b_val","line":306},{"name":"gf16_add","line":314},{"name":"a_sign","line":319},{"name":"b_sign","line":320},{"name":"a_val","line":326},{"name":"b_val","line":327},{"name":"result","line":328},{"name":"gf16_sub","line":336},{"name":"a_val","line":348},{"name":"b_val","line":349},{"name":"result","line":350},{"name":"gf16_mul","line":358},{"name":"a_sign","line":362},{"name":"b_sign","line":363},{"name":"result_sign","line":364},{"name":"a_sign","line":369},{"name":"b_sign","line":370},{"name":"result_sign","line":371},{"name":"a_val","line":375},{"name":"b_val","line":376},{"name":"result","line":377},{"name":"gf16_div","line":386},{"name":"a_sign","line":390},{"name":"a_sign","line":395},{"name":"b_sign","line":396},{"name":"result_sign","line":397},{"name":"a_sign","line":402},{"name":"b_sign","line":403},{"name":"result_sign","line":404},{"name":"a_val","line":408},{"name":"b_val","line":409},{"name":"result","line":410},{"name":"gf16_fma","line":418},{"name":"a_val","line":421},{"name":"b_val","line":422},{"name":"c_val","line":423},{"name":"product","line":431},{"name":"result","line":432},{"name":"gf16_sqrt","line":440},{"name":"a_val","line":447},{"name":"result","line":448},{"name":"gf16_square","line":456},{"name":"gf16_eq","line":463},{"name":"gf16_ne","line":473},{"name":"gf16_lt","line":480},{"name":"a_val","line":482},{"name":"b_val","line":483},{"name":"gf16_le","line":490},{"name":"a_val","line":492},{"name":"b_val","line":493},{"name":"gf16_gt","line":500},{"name":"a_val","line":502},{"name":"b_val","line":503},{"name":"gf16_ge","line":510},{"name":"a_val","line":512},{"name":"b_val","line":513},{"name":"gf16_floor","line":520},{"name":"a_val","line":525},{"name":"result","line":526},{"name":"gf16_ceil","line":534},{"name":"a_val","line":539},{"name":"result","line":540},{"name":"gf16_round","line":548},{"name":"a_val","line":553},{"name":"result","line":554},{"name":"gf16_trunc","line":562},{"name":"a_val","line":567},{"name":"result","line":568},{"name":"gf16_fms","line":577},{"name":"a_val","line":580},{"name":"b_val","line":581},{"name":"c_val","line":582},{"name":"product","line":590},{"name":"result","line":591},{"name":"gf16_hypot","line":600},{"name":"a_val","line":606},{"name":"b_val","line":607},{"name":"abs_a","line":610},{"name":"abs_b","line":611},{"name":"max_val","line":612},{"name":"min_val","line":613},{"name":"ratio","line":617},{"name":"result","line":618},{"name":"gf16_fmod","line":627},{"name":"a_val","line":633},{"name":"b_val","line":634},{"name":"result","line":639},{"name":"gf16_is_finite","line":646},{"name":"gf16_is_normal","line":653},{"name":"exp","line":658},{"name":"gf16_is_subnormal","line":666},{"name":"exp","line":671},{"name":"mant","line":672},{"name":"gf16_signbit","line":681},{"name":"gf16_sign","line":688},{"name":"gf16_clamp","line":707},{"name":"x_decoded","line":713},{"name":"min_decoded","line":714},{"name":"max_decoded","line":715},{"name":"gf16_lerp","line":729},{"name":"a_val","line":735},{"name":"b_val","line":736},{"name":"t_val","line":737},{"name":"result","line":740},{"name":"gf16_fnma","line":748},{"name":"sign_a","line":760},{"name":"sign_b","line":761},{"name":"result_sign","line":762},{"name":"a_val","line":777},{"name":"b_val","line":778},{"name":"neg_product","line":779},{"name":"a_val","line":784},{"name":"b_val","line":785},{"name":"c_val","line":786},{"name":"result","line":788},{"name":"gf16_exp","line":797},{"name":"x_val","line":804},{"name":"num_terms","line":820},{"name":"gf16_log","line":835},{"name":"x_val","line":845},{"name":"result","line":853},{"name":"gf16_log2","line":860},{"name":"x_val","line":870},{"name":"result","line":871},{"name":"gf16_log10","line":878},{"name":"x_val","line":888},{"name":"result","line":889},{"name":"gf16_pow","line":897},{"name":"base_val","line":910},{"name":"exp_val","line":920},{"name":"result","line":924},{"name":"gf16_sin","line":932},{"name":"x_val","line":936},{"name":"x_sq","line":940},{"name":"x_cub","line":941},{"name":"x_5","line":942},{"name":"x_7","line":943},{"name":"term1","line":945},{"name":"term2","line":946},{"name":"term3","line":947},{"name":"term4","line":948},{"name":"result","line":950},{"name":"gf16_cos","line":958},{"name":"x_val","line":962},{"name":"x_sq","line":966},{"name":"x_4","line":967},{"name":"x_6","line":968},{"name":"term0","line":970},{"name":"term1","line":971},{"name":"term2","line":972},{"name":"term3","line":973},{"name":"result","line":975},{"name":"PHI","line":986},{"name":"encoded","line":987},{"name":"decoded","line":988},{"name":"PHI","line":1000},{"name":"encoded","line":1001},{"name":"decoded","line":1002},{"name":"encoded","line":1008},{"name":"result","line":1044},{"name":"nan_val","line":1049},{"name":"decoded","line":1050},{"name":"PHI","line":1055},{"name":"encoded","line":1056},{"name":"decoded","line":1057},{"name":"PHI","line":1075},{"name":"pos_one","line":1130},{"name":"neg_one","line":1131},{"name":"decoded","line":1132},{"name":"original","line":1142},{"name":"negated","line":1143},{"name":"double_negated","line":1144},{"name":"orig_decoded","line":1145},{"name":"double_decoded","line":1146},{"name":"neg_value","line":1151},{"name":"abs_value","line":1152},{"name":"decoded","line":1153},{"name":"pos_value","line":1158},{"name":"abs_value","line":1159},{"name":"pos_value","line":1169},{"name":"neg_source","line":1170},{"name":"result","line":1171},{"name":"decoded","line":1172},{"name":"neg_value","line":1177},{"name":"pos_source","line":1178},{"name":"result","line":1179},{"name":"decoded","line":1180},{"name":"a","line":1185},{"name":"b","line":1186},{"name":"result","line":1187},{"name":"decoded","line":1188},{"name":"a","line":1193},{"name":"b","line":1194},{"name":"result","line":1195},{"name":"a","line":1200},{"name":"nan_val","line":1201},{"name":"result","line":1202},{"name":"a","line":1207},{"name":"b","line":1208},{"name":"result","line":1209},{"name":"decoded","line":1210},{"name":"a","line":1215},{"name":"b","line":1216},{"name":"result","line":1217},{"name":"a","line":1222},{"name":"nan_val","line":1223},{"name":"result","line":1224},{"name":"a","line":1730},{"name":"b","line":1731},{"name":"result","line":1732},{"name":"decoded","line":1733},{"name":"a","line":1738},{"name":"b","line":1739},{"name":"result","line":1740},{"name":"decoded","line":1741},{"name":"a","line":1746},{"name":"b","line":1747},{"name":"result","line":1748},{"name":"a","line":1753},{"name":"zero","line":1754},{"name":"result1","line":1755},{"name":"result2","line":1756},{"name":"decoded1","line":1757},{"name":"decoded2","line":1758},{"name":"a","line":1764},{"name":"b","line":1765},{"name":"result","line":1766},{"name":"decoded","line":1767},{"name":"a","line":1772},{"name":"b","line":1773},{"name":"result","line":1774},{"name":"decoded","line":1775},{"name":"a","line":1780},{"name":"zero","line":1781},{"name":"result1","line":1782},{"name":"result2","line":1783},{"name":"decoded1","line":1784},{"name":"decoded2","line":1785},{"name":"a","line":1791},{"name":"b","line":1792},{"name":"result","line":1793},{"name":"decoded","line":1794},{"name":"a","line":1799},{"name":"b","line":1800},{"name":"result","line":1801},{"name":"decoded","line":1802},{"name":"a","line":1807},{"name":"zero","line":1808},{"name":"result1","line":1809},{"name":"result2","line":1810},{"name":"a","line":1816},{"name":"one","line":1817},{"name":"result","line":1818},{"name":"decoded","line":1819},{"name":"a","line":1824},{"name":"b","line":1825},{"name":"result","line":1826},{"name":"decoded","line":1827},{"name":"a","line":1832},{"name":"b","line":1833},{"name":"result","line":1834},{"name":"decoded","line":1835},{"name":"a","line":1840},{"name":"one","line":1841},{"name":"result","line":1842},{"name":"decoded","line":1843},{"name":"zero","line":1848},{"name":"a","line":1849},{"name":"result","line":1850},{"name":"a","line":1855},{"name":"zero","line":1856},{"name":"result","line":1857},{"name":"inf","line":1862},{"name":"a","line":1863},{"name":"result","line":1864},{"name":"a","line":1869},{"name":"b","line":1870},{"name":"c","line":1871},{"name":"result","line":1872},{"name":"decoded","line":1873},{"name":"a","line":1878},{"name":"b","line":1879},{"name":"zero","line":1880},{"name":"result","line":1881},{"name":"decoded","line":1882},{"name":"a","line":1887},{"name":"result","line":1888},{"name":"decoded","line":1889},{"name":"a","line":1894},{"name":"result","line":1895},{"name":"decoded","line":1896},{"name":"zero","line":1901},{"name":"result","line":1902},{"name":"neg","line":1907},{"name":"result","line":1908},{"name":"a","line":1913},{"name":"result","line":1914},{"name":"decoded","line":1915},{"name":"zero","line":1920},{"name":"result","line":1921},{"name":"neg","line":1926},{"name":"result","line":1927},{"name":"decoded","line":1928},{"name":"a","line":1933},{"name":"b","line":1934},{"name":"result1","line":1935},{"name":"result2","line":1936},{"name":"a","line":1941},{"name":"b","line":1942},{"name":"result1","line":1943},{"name":"result2","line":1944},{"name":"a","line":1949},{"name":"squared","line":1950},{"name":"rooted","line":1951},{"name":"decoded","line":1952},{"name":"a","line":1957},{"name":"b","line":1958},{"name":"a","line":1963},{"name":"b","line":1964},{"name":"value","line":1979},{"name":"a","line":1985},{"name":"b","line":1986},{"name":"a","line":1991},{"name":"b","line":1992},{"name":"value","line":2002},{"name":"a","line":2008},{"name":"b","line":2009},{"name":"a","line":2014},{"name":"b","line":2015},{"name":"a","line":2020},{"name":"b","line":2021},{"name":"neg","line":2026},{"name":"pos","line":2027},{"name":"value","line":2032},{"name":"a","line":2038},{"name":"b","line":2039},{"name":"a","line":2044},{"name":"b","line":2045},{"name":"a","line":2050},{"name":"b","line":2051},{"name":"value","line":2056},{"name":"a","line":2062},{"name":"b","line":2063},{"name":"a","line":2068},{"name":"b","line":2069},{"name":"a","line":2074},{"name":"b","line":2075},{"name":"value","line":2080},{"name":"a","line":2086},{"name":"b","line":2087},{"name":"a","line":2092},{"name":"b","line":2093},{"name":"a","line":2098},{"name":"b","line":2099},{"name":"value","line":2104},{"name":"a","line":2111},{"name":"b","line":2112},{"name":"a","line":2122},{"name":"result","line":2123},{"name":"decoded","line":2124},{"name":"a","line":2129},{"name":"result","line":2130},{"name":"decoded","line":2131},{"name":"a","line":2136},{"name":"result","line":2137},{"name":"decoded","line":2138},{"name":"pos_zero","line":2143},{"name":"neg_zero","line":2144},{"name":"a","line":2159},{"name":"result","line":2160},{"name":"decoded","line":2161},{"name":"a","line":2166},{"name":"result","line":2167},{"name":"decoded","line":2168},{"name":"a","line":2173},{"name":"result","line":2174},{"name":"decoded","line":2175},{"name":"a","line":2189},{"name":"result","line":2190},{"name":"decoded","line":2191},{"name":"a","line":2196},{"name":"result","line":2197},{"name":"decoded","line":2198},{"name":"a","line":2203},{"name":"result","line":2204},{"name":"decoded","line":2205},{"name":"a","line":2210},{"name":"result","line":2211},{"name":"decoded","line":2212},{"name":"a","line":2226},{"name":"result","line":2227},{"name":"decoded","line":2228},{"name":"a","line":2233},{"name":"result","line":2234},{"name":"decoded","line":2235},{"name":"pos_zero","line":2240},{"name":"neg_zero","line":2241},{"name":"a","line":2257},{"name":"floored","line":2258},{"name":"truncated","line":2259},{"name":"a","line":2266},{"name":"ceiled","line":2267},{"name":"truncated","line":2268},{"name":"a","line":2274},{"name":"b","line":2275},{"name":"c","line":2276},{"name":"result","line":2277},{"name":"decoded","line":2278},{"name":"a","line":2283},{"name":"b","line":2284},{"name":"c","line":2285},{"name":"result","line":2286},{"name":"decoded","line":2287},{"name":"a","line":2292},{"name":"b","line":2293},{"name":"c","line":2294},{"name":"result","line":2295},{"name":"decoded","line":2296},{"name":"a","line":2301},{"name":"b","line":2302},{"name":"result","line":2303},{"name":"a","line":2308},{"name":"b","line":2309},{"name":"c","line":2310},{"name":"result","line":2311},{"name":"decoded","line":2312},{"name":"a","line":2317},{"name":"b","line":2318},{"name":"result","line":2319},{"name":"decoded","line":2320},{"name":"a","line":2329},{"name":"result","line":2330},{"name":"decoded","line":2331},{"name":"a","line":2336},{"name":"b","line":2337},{"name":"result","line":2338},{"name":"decoded","line":2339},{"name":"a","line":2344},{"name":"result","line":2345},{"name":"a","line":2350},{"name":"a","line":2355},{"name":"b","line":2356},{"name":"result","line":2357},{"name":"decoded","line":2358},{"name":"a","line":2363},{"name":"b","line":2364},{"name":"result","line":2365},{"name":"a","line":2370},{"name":"b","line":2371},{"name":"result","line":2372},{"name":"decoded","line":2373},{"name":"a","line":2378},{"name":"b","line":2379},{"name":"result","line":2380},{"name":"decoded","line":2381},{"name":"a","line":2386},{"name":"zero","line":2387},{"name":"result","line":2388},{"name":"a","line":2393},{"name":"result","line":2394},{"name":"n1","line":2400},{"name":"n2","line":2401},{"name":"n3","line":2402},{"name":"z1","line":2410},{"name":"z2","line":2411},{"name":"pos_inf","line":2418},{"name":"neg_inf","line":2419},{"name":"n1","line":2431},{"name":"n2","line":2432},{"name":"n3","line":2433},{"name":"z1","line":2441},{"name":"z2","line":2442},{"name":"sub","line":2462},{"name":"decoded","line":2463},{"name":"is_sub","line":2466},{"name":"n1","line":2475},{"name":"n2","line":2476},{"name":"z1","line":2483},{"name":"z2","line":2484},{"name":"test_values","line":2503},{"name":"gf","line":2509},{"name":"is_fin","line":2510},{"name":"is_inf","line":2511},{"name":"is_nan","line":2512},{"name":"count","line":2515},{"name":"val","line":2524},{"name":"val","line":2530},{"name":"zero_pos","line":2536},{"name":"zero_neg","line":2542},{"name":"nan_with_sign","line":2555},{"name":"v1","line":2561},{"name":"v2","line":2562},{"name":"v1","line":2569},{"name":"v2","line":2570},{"name":"pos_val","line":2594},{"name":"neg_val","line":2595},{"name":"x","line":2603},{"name":"min_val","line":2604},{"name":"max_val","line":2605},{"name":"result","line":2606},{"name":"decoded","line":2607},{"name":"x","line":2613},{"name":"min_val","line":2614},{"name":"max_val","line":2615},{"name":"result","line":2616},{"name":"decoded","line":2617},{"name":"x","line":2623},{"name":"min_val","line":2624},{"name":"max_val","line":2625},{"name":"result","line":2626},{"name":"decoded","line":2627},{"name":"x","line":2633},{"name":"min_val","line":2634},{"name":"max_val","line":2635},{"name":"result","line":2636},{"name":"a","line":2642},{"name":"b","line":2643},{"name":"t","line":2644},{"name":"result","line":2645},{"name":"decoded","line":2646},{"name":"a","line":2652},{"name":"b","line":2653},{"name":"t","line":2654},{"name":"result","line":2655},{"name":"decoded","line":2656},{"name":"a","line":2662},{"name":"b","line":2663},{"name":"t","line":2664},{"name":"result","line":2665},{"name":"decoded","line":2666},{"name":"a","line":2672},{"name":"b","line":2673},{"name":"t","line":2674},{"name":"result","line":2675},{"name":"a","line":2681},{"name":"b","line":2682},{"name":"c","line":2683},{"name":"result","line":2684},{"name":"decoded","line":2685},{"name":"a","line":2691},{"name":"b","line":2692},{"name":"c","line":2693},{"name":"result","line":2694},{"name":"decoded","line":2695},{"name":"a","line":2701},{"name":"b","line":2702},{"name":"c","line":2703},{"name":"result","line":2704},{"name":"decoded","line":2705},{"name":"a","line":2711},{"name":"b","line":2712},{"name":"c","line":2713},{"name":"result","line":2714},{"name":"x","line":2720},{"name":"result","line":2721},{"name":"decoded","line":2722},{"name":"x","line":2728},{"name":"result","line":2729},{"name":"decoded","line":2730},{"name":"x","line":2736},{"name":"result","line":2737},{"name":"decoded","line":2738},{"name":"x","line":2744},{"name":"result","line":2745},{"name":"x","line":2751},{"name":"result","line":2752},{"name":"decoded","line":2753},{"name":"e","line":2759},{"name":"result","line":2760},{"name":"decoded","line":2761},{"name":"zero","line":2767},{"name":"neg","line":2768},{"name":"x","line":2775},{"name":"result","line":2776},{"name":"decoded","line":2777},{"name":"x","line":2783},{"name":"result","line":2784},{"name":"decoded","line":2785},{"name":"base","line":2791},{"name":"exp","line":2792},{"name":"result","line":2793},{"name":"decoded","line":2794},{"name":"base","line":2800},{"name":"exp","line":2801},{"name":"result","line":2802},{"name":"decoded","line":2803},{"name":"base","line":2809},{"name":"exp","line":2810},{"name":"result","line":2811},{"name":"decoded","line":2812},{"name":"base","line":2818},{"name":"exp","line":2819},{"name":"result","line":2820},{"name":"base","line":2826},{"name":"exp","line":2827},{"name":"result","line":2828},{"name":"decoded","line":2829},{"name":"x","line":2835},{"name":"result","line":2836},{"name":"decoded","line":2837},{"name":"pi_six","line":2843},{"name":"result","line":2844},{"name":"decoded","line":2845},{"name":"x","line":2851},{"name":"result","line":2852},{"name":"decoded","line":2853},{"name":"pi_six","line":2859},{"name":"result","line":2860},{"name":"decoded","line":2861},{"name":"x","line":2867},{"name":"sin_val","line":2868},{"name":"cos_val","line":2869},{"name":"sum","line":2870},{"name":"value","line":2903},{"name":"a","line":2984},{"name":"b","line":2985},{"name":"a","line":2996},{"name":"b","line":2997},{"name":"a","line":3008},{"name":"b","line":3009},{"name":"a","line":3020},{"name":"b","line":3021},{"name":"a","line":3032},{"name":"b","line":3033},{"name":"a","line":3044},{"name":"b","line":3045},{"name":"a","line":3056},{"name":"a","line":3067},{"name":"b","line":3068},{"name":"c","line":3069},{"name":"a","line":3080},{"name":"a","line":3091},{"name":"b","line":3092},{"name":"a","line":3103},{"name":"b","line":3104},{"name":"a","line":3115},{"name":"b","line":3116},{"name":"a","line":3127},{"name":"b","line":3128},{"name":"a","line":3139},{"name":"b","line":3140},{"name":"a","line":3151},{"name":"b","line":3152},{"name":"a","line":3163},{"name":"a","line":3174},{"name":"a","line":3185},{"name":"a","line":3196},{"name":"a","line":3207},{"name":"b","line":3208},{"name":"c","line":3209},{"name":"a","line":3220},{"name":"b","line":3221},{"name":"a","line":3232},{"name":"b","line":3233},{"name":"val","line":3244},{"name":"val","line":3255},{"name":"val","line":3266},{"name":"val","line":3277},{"name":"val","line":3288},{"name":"x","line":3299},{"name":"min_val","line":3300},{"name":"max_val","line":3301},{"name":"a","line":3312},{"name":"b","line":3313},{"name":"t","line":3314},{"name":"a","line":3325},{"name":"b","line":3326},{"name":"c","line":3327},{"name":"x","line":3338},{"name":"x","line":3349},{"name":"base","line":3360},{"name":"exp","line":3361},{"name":"x","line":3372},{"name":"x","line":3383}],"imports":[],"terms":["numeric","gf16","triformat","sign","shift","exp","mant","mask","max","min","bias","special","divisor","phi","zero","pos","neg","inf","nan","pow2","table","extract","bit","exponent","mantissa","components","encode","f32","abs","bits","discarded","decode","mult","round","normalized","negative","positive","negate","copy","val","sub","mul","div","fma","product","sqrt","square","floor","ceil","trunc","fms","hypot","ratio","fmod","finite","normal","subnormal","signbit","clamp","decoded","lerp","fnma","num","terms","log","log2","log10","pow","base","sin","cub","term1","term2","term3","term4","cos","term0","encoded","one","original","negated","double","orig","result1","result2","decoded1","decoded2","squared","rooted","floored","truncated","ceiled","values","fin","count","six","sum"]},{"id":"b46496033b9cc8164845ba0b6139ad8429704fea6f66a2dce46dd460ea892fac","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bond.t27","health":"ok","module":"TriComputeBond"}],"description":"TRI-NET compute bond escrow: the shared collateral that settle + challenge act on. tri_compute_settle credits rewards and tri_compute_challenge slashes wrong results, but each moved a bare balance. This spec gives one bonded lifecycle: FREE -> post (lock collateral out of balance) -> LOCKED -> resolve -> RELEASED (honest, bond returns) or SLASHED (wrong, bond forfeited). Locking is guarded against underflow (you cannot post more than you hold).","symbols":[{"name":"ST_FREE","line":14},{"name":"ST_LOCKED","line":15},{"name":"ST_RELEASED","line":16},{"name":"ST_SLASHED","line":17},{"name":"can_post","line":20},{"name":"balance_after_post","line":26},{"name":"locked_amount","line":35},{"name":"bond_state_after","line":53},{"name":"balance_after_resolve","line":73},{"name":"BOND_BPS_UNIT","line":95},{"name":"required_bond","line":100},{"name":"bond_covers","line":106},{"name":"GFT16_ET","line":117},{"name":"BOND_BPS_PER_TRIT","line":118},{"name":"rung_min_bps","line":120},{"name":"required_bond_rung","line":128},{"name":"bond_covers_rung","line":132}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","bond","free","locked","released","slashed","post","balance","amount","state","resolve","bps","unit","required","covers","gft16","per","trit","rung","min"]},{"id":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cache_management.t27","health":"ok","module":"cache_management"}],"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","symbols":[{"name":"MAX_ENTRIES","line":7},{"name":"MAX_CACHE_SIZE","line":8},{"name":"CACHE_HIT_THRESHOLD","line":9},{"name":"EVICTION_AGE","line":10},{"name":"create_cache_entry","line":13},{"name":"get_data_id","line":20},{"name":"get_access_count","line":24},{"name":"get_age","line":28},{"name":"get_entry_size","line":32},{"name":"update_access_count","line":37},{"name":"update_age","line":51},{"name":"find_entry","line":60},{"name":"cache_hit","line":75},{"name":"get_entry","line":86},{"name":"add_entry","line":97},{"name":"find_eviction_candidate","line":141},{"name":"remove_entry","line":170},{"name":"access_cache","line":183},{"name":"age_cache","line":197},{"name":"calculate_hit_rate","line":213},{"name":"calculate_utilization","line":222},{"name":"find_most_popular","line":227},{"name":"find_least_popular","line":247},{"name":"should_prefetch","line":269},{"name":"calculate_efficiency","line":291},{"name":"create_cache_stats","line":304},{"name":"get_hits","line":311},{"name":"get_misses","line":315},{"name":"get_cache_size","line":319},{"name":"get_evictions","line":323},{"name":"update_stats","line":328}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","cache","management","max","entries","size","hit","threshold","eviction","age","create","entry","get","data","access","count","find","candidate","remove","calculate","rate","utilization","most","popular","least","prefetch","efficiency","stats","hits","misses","evictions"]},{"id":"b5714e6f7e9a0a68a29968ab50f4855843bdf9b856ab301bc3c402c9f900a62a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/text.t27","health":"ok","module":"TriText"}],"description":"t27/specs/","symbols":[{"name":"TextMetrics","line":13},{"name":"word_wrap","line":24},{"name":"count_words","line":29},{"name":"count_lines","line":34},{"name":"indent","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","text","metrics","word","wrap","count","words","indent"]},{"id":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/apb_bridge.t27","health":"ok","module":"ApbBridge"}],"description":"t27/specs/fpga/apb_bridge.t27 APB (Advanced Peripheral Bus) Bridge Specification for Trinity T27 FPGA HIR Register-mapped peripheral bridge for low-bandwidth peripherals Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"APB_ADDR_WIDTH","line":12},{"name":"APB_DATA_WIDTH","line":13},{"name":"APB_STRB_WIDTH","line":14},{"name":"ApbTransfer","line":18},{"name":"ApbConfig","line":26},{"name":"PeripheralMap","line":39},{"name":"ApbRequest","line":48},{"name":"ApbResponse","line":58},{"name":"apb_bridge","line":66},{"name":"apb_bridge_with_error","line":79},{"name":"peripheral_map","line":92},{"name":"apb_read_request","line":101},{"name":"apb_write_request","line":111},{"name":"apb_ok_response","line":121},{"name":"apb_error_response","line":129},{"name":"strb_width","line":139},{"name":"addr_bits_for_peripherals","line":143},{"name":"peripheral_addr_offset","line":156},{"name":"is_read","line":161},{"name":"is_write","line":165},{"name":"apb_port_count","line":169},{"name":"select_peripheral","line":187},{"name":"validate_apb","line":202},{"name":"validate_peripheral_map","line":222}],"imports":[],"terms":["fpga","apb","bridge","addr","width","data","strb","transfer","config","peripheral","map","request","response","read","write","bits","peripherals","offset","port","count","select","validate"]},{"id":"b5ec191b29fa9280a515951ebad973bcf176922a4b556b3abda65dfbca5fef8b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/seq2seq.t27","health":"ok","module":"Seq2seq"}],"description":"t27/specs/","symbols":[{"name":"Seq2SeqConfig","line":13},{"name":"Seq2SeqState","line":19},{"name":"encode","line":30},{"name":"decode","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","seq2seq","config","state","encode","decode"]},{"id":"b62c204061b2484b45cd758b203f828582b766d24dc6126ef3d6415872aea62a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/embedding_layer.t27","health":"ok","module":"Embedding"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_D_MODEL","line":13},{"name":"EmbeddingConfig","line":19},{"name":"EmbeddingWeights","line":24},{"name":"forward","line":33},{"name":"init","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","embedding","layer","default","model","config","weights","forward","init"]},{"id":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/linker.t27","health":"ok","module":"Linking"}],"description":"","symbols":[{"name":"LinkError","line":5},{"name":"ModuleRef","line":13},{"name":"SymbolRef","line":19},{"name":"LinkResult","line":27},{"name":"MAX_MODULES","line":35},{"name":"MAX_SYMBOLS","line":36},{"name":"link_result_ok","line":38},{"name":"link_result_err","line":48},{"name":"module_ref_new","line":58},{"name":"symbol_ref_new","line":66},{"name":"resolve_import","line":76},{"name":"is_cyclic","line":89},{"name":"validate_pub_access","line":93},{"name":"count_pub_symbols","line":97}],"imports":[{"name":"compiler::parser","line":3}],"terms":["compiler","linker","linking","link","ref","max","modules","err","resolve","import","cyclic","validate","access","count"]},{"id":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","sources":[{"repo":"ghashtag/t27","path":"specs/depin/prove.t27","health":"ok","module":"depin"}],"description":"DePIN proof-of-useful-compute spec Issue #40 — L-TRI-1: POST /prove endpoint","symbols":[{"name":"ProveRequest","line":12},{"name":"MerkleProof","line":22},{"name":"ProveResponse","line":28},{"name":"MiningEpoch","line":37},{"name":"derive_phi_challenge","line":48},{"name":"verify_phi_response","line":52},{"name":"gf16_mul","line":56},{"name":"gf16_dot4","line":60},{"name":"derive_phi_challenge_v2","line":64},{"name":"compute_phi_response_v2","line":68},{"name":"verify_phi_response_v2","line":72},{"name":"gf16_matmul","line":76},{"name":"pack_gf16_matrix","line":80},{"name":"merkle_root","line":84},{"name":"verify_merkle","line":88}],"imports":[],"terms":["depin","prove","request","merkle","proof","response","mining","epoch","derive","phi","challenge","verify","gf16","mul","dot4","compute","matmul","pack","matrix","root"]},{"id":"b70865df4803d3a0bfea341b85480b10dc9e8645203943b9461233d283a4be4a","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/cosmology.t27","health":"ok","module":"TriCosmology"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","cosmology"]},{"id":"b7f52fc31cb644f219392df408b8a89a9010d42be783426f808e74ebf78e0c63","sources":[{"repo":"ghashtag/t27","path":"specs/ar/ternary_logic.t27","health":"warn","module":null}],"description":"spec: TernaryLogic K3 Kleene ternary logic operations for neuro-symbolic reasoning","symbols":[{"name":"Trit","line":9},{"name":"K_FALSE","line":12},{"name":"K_UNKNOWN","line":13},{"name":"K_TRUE","line":14},{"name":"k3_and","line":20},{"name":"k3_or","line":26},{"name":"k3_not","line":32},{"name":"k3_implies","line":37},{"name":"k3_equiv","line":42},{"name":"forward_chain","line":50},{"name":"backward_chain","line":56},{"name":"Rule","line":67},{"name":"resolve","line":74},{"name":"is_restraint","line":94},{"name":"apply_restraint","line":99}],"imports":[],"terms":["ternary","logic","trit","unknown","implies","equiv","forward","chain","backward","rule","resolve","restraint","apply"]},{"id":"b8651d49170f8c475f2f7967332aba84bf88ebdcf0cf8969195774cf4c2f7172","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/lexer.t27","health":"warn","module":null}],"description":"lexer.t27 — Lexical Analyzer for TRI-27 Assembly Tokenizes .t27 source code into tokens for the parser","symbols":[{"name":"TokenType","line":5},{"name":"Token","line":67},{"name":"Lexer","line":77},{"name":"Lexer","line":87},{"name":"Lexer","line":101},{"name":"Lexer","line":118},{"name":"Lexer","line":127},{"name":"Lexer","line":139},{"name":"Lexer","line":146},{"name":"is_ident_char","line":173},{"name":"Lexer","line":184},{"name":"Lexer","line":218},{"name":"Lexer","line":255},{"name":"Lexer","line":275},{"name":"Lexer","line":290},{"name":"Lexer","line":305},{"name":"Lexer","line":325},{"name":"Lexer","line":356},{"name":"tokenize","line":491},{"name":"is_digit","line":507},{"name":"is_alpha","line":511}],"imports":[],"terms":["fpga","compiler","parser","lexer","token","ident","char","tokenize","digit","alpha"]},{"id":"b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/pattern_predictor.t27","health":"warn","module":"pattern_predictor"}],"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"PATTERN_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"create_sample","line":12},{"name":"get_sample_value","line":19},{"name":"get_sample_timestamp","line":23},{"name":"get_sample_sequence","line":27},{"name":"get_sample_valid","line":31},{"name":"create_pattern_storage","line":36},{"name":"get_pattern_samples","line":43},{"name":"get_pattern_count","line":47},{"name":"get_trend_direction","line":51},{"name":"create_sample_array","line":56},{"name":"get_sample_array_upper","line":68},{"name":"get_sample_array_lower","line":72},{"name":"get_sample_at","line":76},{"name":"calculate_moving_average","line":87},{"name":"detect_trend","line":123},{"name":"predict_next_value","line":139},{"name":"is_anomalous","line":158},{"name":"detect_repeating_pattern","line":169},{"name":"calculate_variance","line":196}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","pattern","predictor","max","samples","window","anomaly","threshold","create","sample","get","timestamp","sequence","valid","storage","count","trend","direction","array","upper","lower","calculate","moving","average","detect","predict","anomalous","repeating","variance"]},{"id":"b8982faa07203a5a52fb224911126586345f2b8043116070602ec84ae459b40e","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/modules.t27","health":"warn","module":"sandbox"}],"description":"","symbols":[],"imports":[{"name":"session_timeout","line":18}],"terms":["sandbox","modules"]},{"id":"b8e959ad3ee29deca1899eada363eb7bd86f6e257f6462eb87ed482c1879f4d6","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf16.t27","health":"warn","module":null}],"description":"gf16.t27 — GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","symbols":[],"imports":[],"terms":["fpga","numeric","gf16"]},{"id":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","sources":[{"repo":"ghashtag/t27","path":"specs/config/paths.t27","health":"ok","module":"config-paths"}],"description":"config/paths.t27 — Config Paths Specification Path resolution, directory creation, validation","symbols":[{"name":"DEFAULT_CONFIG_DIR","line":19},{"name":"DEFAULT_DATA_DIR","line":22},{"name":"DEFAULT_CACHE_DIR","line":25},{"name":"DEFAULT_LOG_DIR","line":28},{"name":"MAX_PATH_LENGTH","line":31},{"name":"PATH_SEPARATOR","line":34},{"name":"ENV_HOME","line":37},{"name":"ENV_XDG_CONFIG","line":40},{"name":"ENV_XDG_DATA","line":43},{"name":"PathType","line":50},{"name":"PathValidation","line":59},{"name":"PathResult","line":69},{"name":"ResolvedPaths","line":77},{"name":"DirCheckResult","line":87},{"name":"paths_default","line":99},{"name":"resolve_config_dir","line":111},{"name":"dir","line":112},{"name":"resolve_data_dir","line":117},{"name":"dir","line":118},{"name":"resolve_cache_dir","line":123},{"name":"dir","line":124},{"name":"resolve_log_dir","line":129},{"name":"dir","line":130},{"name":"resolve_temp_dir","line":135},{"name":"resolve_directory","line":140},{"name":"path","line":141},{"name":"is_absolute","line":170},{"name":"has_invalid_characters","line":175},{"name":"home_directory","line":186},{"name":"join","line":192},{"name":"normalize","line":204},{"name":"is_sep","line":210},{"name":"parent","line":225},{"name":"normalized","line":226},{"name":"basename","line":242},{"name":"normalized","line":243},{"name":"directory_exists","line":260},{"name":"directory_writable","line":266},{"name":"ensure_directory","line":272},{"name":"resolve_all","line":292},{"name":"config_dir","line":293},{"name":"data_dir","line":294},{"name":"cache_dir","line":295},{"name":"log_dir","line":296},{"name":"temp_dir","line":297},{"name":"config_file","line":298},{"name":"validate_path","line":311},{"name":"extension","line":332},{"name":"normalized","line":333},{"name":"concat","line":350},{"name":"concat_path_separator","line":364},{"name":"concat_with_byte","line":369},{"name":"path_result_create","line":376},{"name":"path_result_valid","line":386},{"name":"result","line":395},{"name":"result","line":400},{"name":"result","line":413},{"name":"result","line":418},{"name":"result","line":423},{"name":"result","line":428},{"name":"result","line":433},{"name":"result","line":438},{"name":"result","line":443},{"name":"result","line":448},{"name":"path","line":453},{"name":"result","line":454},{"name":"path","line":459},{"name":"result","line":460}],"imports":[{"name":"std","line":12}],"terms":["config","paths","default","dir","data","cache","log","max","path","length","separator","env","home","xdg","validation","resolved","resolve","temp","directory","absolute","invalid","characters","join","normalize","sep","parent","normalized","basename","exists","writable","ensure","validate","extension","concat","byte","create","valid"]},{"id":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/int8.t27","health":"warn","module":"Int8"}],"description":"t27/specs/numeric/int8.t27 Int8 - 8-bit signed integer NUMERIC-STANDARD-001 Agent 10 (P1)","symbols":[{"name":"BITS","line":18},{"name":"Int8","line":22},{"name":"encode","line":29},{"name":"clamped","line":30},{"name":"decode","line":40},{"name":"raw","line":41},{"name":"min_value","line":51},{"name":"max_value","line":55},{"name":"range","line":59},{"name":"num_values","line":63},{"name":"validate_format","line":69},{"name":"MEMORY_RATIO_VS_FP32","line":83},{"name":"add","line":87},{"name":"val_a","line":88},{"name":"val_b","line":89},{"name":"result","line":90},{"name":"sub","line":94},{"name":"val_a","line":95},{"name":"val_b","line":96},{"name":"result","line":97},{"name":"mul","line":101},{"name":"val_a","line":102},{"name":"val_b","line":103},{"name":"result","line":104},{"name":"div","line":108},{"name":"val_a","line":109},{"name":"val_b","line":110},{"name":"result","line":111},{"name":"mod","line":115},{"name":"val_a","line":116},{"name":"val_b","line":117},{"name":"result","line":118},{"name":"neg","line":122},{"name":"abs","line":126},{"name":"val","line":127},{"name":"eq","line":133},{"name":"ne","line":137},{"name":"lt","line":141},{"name":"le","line":145},{"name":"gt","line":149},{"name":"ge","line":153},{"name":"and","line":159},{"name":"or","line":163},{"name":"xor","line":167},{"name":"not","line":171},{"name":"shl","line":175},{"name":"clamped_shift","line":176},{"name":"shr","line":180},{"name":"clamped_shift","line":181},{"name":"val","line":183},{"name":"result","line":184}],"imports":[{"name":"base::testing","line":8},{"name":"base::benchmarking","line":9}],"terms":["chips","euler","fpga","int8","bits","encode","clamped","decode","raw","min","max","range","num","values","validate","format","memory","ratio","fp32","val","sub","mul","div","mod","neg","abs","xor","shl","shift","shr"]},{"id":"baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/audio_overview.t27","health":"ok","module":"enrichment"}],"description":"audio_overview.t27 — Bilingual Audio Overview for NotebookLM Ring 091 — API-only multilingual enrichment","symbols":[{"name":"API_CREATE_ENDPOINT","line":12},{"name":"API_DELETE_ENDPOINT","line":13},{"name":"API_POLL_ENDPOINT","line":14},{"name":"AUDIO_DIR","line":15},{"name":"POLL_INTERVAL_MS","line":16},{"name":"POLL_TIMEOUT_MS","line":17},{"name":"Lang","line":23},{"name":"AudioStatus","line":28},{"name":"AudioOverviewRequest","line":34},{"name":"AudioOverviewResponse","line":41},{"name":"AudioOverviewStatus","line":47},{"name":"AudioFile","line":53},{"name":"AudioReport","line":60},{"name":"create_audio_overview","line":76},{"name":"poll_audio_status","line":81},{"name":"delete_default_audio","line":85},{"name":"ensure_audio_dir","line":93},{"name":"save_audio_file","line":98},{"name":"generate_bilingual_audio","line":107},{"name":"generate_all","line":112}],"imports":[],"terms":["enrichment","audio","overview","api","create","endpoint","delete","poll","dir","interval","timeout","lang","status","request","response","report","default","ensure","save","generate","bilingual"]},{"id":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/redundancy_management.t27","health":"warn","module":"RedundancyManagement"}],"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"PATH_VALID","line":9},{"name":"PATH_INVALID","line":10},{"name":"create_path","line":13},{"name":"get_path_valid","line":20},{"name":"get_hop1","line":24},{"name":"get_hop2","line":28},{"name":"get_hop3","line":32},{"name":"create_path_set","line":37},{"name":"get_path","line":44},{"name":"find_primary_path","line":52},{"name":"find_backup_path","line":66},{"name":"invalidate_path","line":80},{"name":"validate_path","line":96},{"name":"count_valid_paths","line":112},{"name":"has_redundancy","line":122},{"name":"get_hop_count","line":127},{"name":"find_shortest_path","line":136},{"name":"failover","line":176}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","redundancy","management","max","paths","hops","path","valid","invalid","create","get","hop1","hop2","hop3","set","find","primary","backup","invalidate","validate","count","hop","shortest","failover"]},{"id":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","sources":[{"repo":"ghashtag/t27","path":"contrib/backend/zig/legacy/main_zig_handwritten.t27","health":"ok","module":null}],"description":"tri.zig -- Trinity T27 CLI Runtime","symbols":[{"name":"std","line":4},{"name":"AST","line":10},{"name":"Program","line":11},{"name":"Const","line":18},{"name":"SpecDecl","line":23},{"name":"TestBlock","line":29},{"name":"InvariantBlock","line":34},{"name":"TestSection","line":39},{"name":"InvariantSection","line":43},{"name":"TestCase","line":47},{"name":"Invariant","line":54},{"name":"Clause","line":60},{"name":"ClauseKind","line":65},{"name":"ParseContext","line":79},{"name":"Error","line":83},{"name":"main","line":94},{"name":"allocator","line":97},{"name":"args","line":100},{"name":"command","line":108},{"name":"runSpecCommand","line":132},{"name":"subcommand","line":138},{"name":"name","line":145},{"name":"path","line":146},{"name":"runGenCommand","line":165},{"name":"options","line":166},{"name":"runGitCommand","line":177},{"name":"subcommand","line":183},{"name":"runLintCommand","line":196},{"name":"all","line":197},{"name":"specCreate","line":212},{"name":"output_path","line":221},{"name":"content","line":234},{"name":"specValidate","line":248},{"name":"content","line":254},{"name":"context","line":258},{"name":"tdd_errors","line":272},{"name":"specList","line":290},{"name":"spec_dir","line":291},{"name":"path","line":312},{"name":"rel_path","line":327},{"name":"content","line":328},{"name":"has_tests","line":332},{"name":"status","line":335},{"name":"GenOptions","line":344},{"name":"parseGenOptions","line":355},{"name":"arg","line":361},{"name":"gen","line":387},{"name":"content","line":394},{"name":"context","line":404},{"name":"has_tests","line":418},{"name":"impl_output","line":451},{"name":"test_output","line":455},{"name":"conf_output","line":462},{"name":"genAll","line":471},{"name":"spec_files","line":472},{"name":"result","line":490},{"name":"gitCommit","line":514},{"name":"arg","line":522},{"name":"git_argv","line":540},{"name":"gitPush","line":547},{"name":"arg","line":555},{"name":"branch_arg","line":571},{"name":"git_argv","line":572},{"name":"gitStatusWithCell","line":578},{"name":"registry_path","line":585},{"name":"lintFile","line":595},{"name":"content","line":601},{"name":"context","line":616},{"name":"lintAll","line":641},{"name":"files","line":642},{"name":"printUsage","line":675},{"name":"printError","line":719},{"name":"printErrorFmt","line":723},{"name":"writer","line":724},{"name":"fileExists","line":729},{"name":"isValidSpecName","line":737},{"name":"first","line":741},{"name":"generateSpecTemplate","line":755},{"name":"validateNoCyrillic","line":812},{"name":"c","line":822},{"name":"next_c","line":827},{"name":"codepoint","line":828},{"name":"hasTestsOrInvariants","line":840},{"name":"validateTDDCompliance","line":860},{"name":"printSummary","line":870},{"name":"parseSimple","line":902},{"name":"trimmed","line":915},{"name":"name","line":931},{"name":"name","line":940},{"name":"generateImplementation","line":971},{"name":"generateTests","line":980},{"name":"generateConformance","line":1009},{"name":"runGitDirect","line":1047},{"name":"result","line":1048},{"name":"term","line":1059},{"name":"globSpecs","line":1070},{"name":"path","line":1084},{"name":"globSourceFiles","line":1092},{"name":"extensions","line":1096},{"name":"path","line":1110}],"imports":[],"terms":["contrib","backend","zig","legacy","main","handwritten","std","ast","program","decl","block","invariant","section","case","clause","kind","parse","allocator","args","subcommand","path","gen","options","git","lint","create","content","validate","tdd","list","dir","rel","status","arg","impl","conf","commit","argv","push","branch","cell","registry","print","usage","fmt","writer","exists","valid","generate","template","cyrillic","codepoint","invariants","tddcompliance","summary","simple","trimmed","conformance","direct","term","glob","extensions"]},{"id":"bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd","sources":[{"repo":"ghashtag/t27","path":"specs/memory/notebooklm.t27","health":"ok","module":"NotebookLM"}],"description":"specs/memory/notebooklm.t27 NotebookLM Integration Specification Ring-071 - RAG-Backed Semantic Memory for t27 Defines interface to Google NotebookLM for persistent session memory","symbols":[{"name":"VERSION","line":13},{"name":"DEFAULT_TIMEOUT_MS","line":14},{"name":"MAX_SOURCE_SIZE","line":15},{"name":"DEFAULT_NOTEBOOK_NAME","line":16},{"name":"AUTH_STATE_UNAUTHENTICATED","line":18},{"name":"AUTH_STATE_AUTHENTICATED","line":19},{"name":"AUTH_STATE_EXPIRED","line":20},{"name":"AUTH_STATE_REFRESHING","line":21},{"name":"CONNECTION_STATUS_DISCONNECTED","line":23},{"name":"CONNECTION_STATUS_CONNECTING","line":24},{"name":"CONNECTION_STATUS_CONNECTED","line":25},{"name":"CONNECTION_STATUS_ERROR","line":26},{"name":"ErrorCode","line":32},{"name":"AuthTokens","line":50},{"name":"NotebookLMConfig","line":57},{"name":"NotebookLMClient","line":68},{"name":"Notebook","line":79},{"name":"Source","line":87},{"name":"QueryResult","line":100},{"name":"SessionContext","line":113},{"name":"WrapupSummary","line":129},{"name":"MemoryEntry","line":138},{"name":"client_new","line":153},{"name":"client_authenticate","line":163},{"name":"client_is_authenticated","line":171},{"name":"client_close","line":177},{"name":"notebook_create","line":188},{"name":"notebook_list","line":195},{"name":"notebook_get","line":202},{"name":"notebook_find_by_name","line":209},{"name":"notebook_delete","line":216},{"name":"source_upload_text","line":226},{"name":"source_upload_file","line":233},{"name":"source_list","line":240},{"name":"source_delete","line":247},{"name":"notebook_query","line":257},{"name":"session_extract_from_trinity","line":268},{"name":"wrapup_format_summary","line":279},{"name":"wrapup_upload","line":292},{"name":"client","line":308},{"name":"auth_result","line":321},{"name":"close_result","line":322},{"name":"is_auth","line":328},{"name":"wrapup","line":378},{"name":"wrapup","line":416},{"name":"summary","line":456},{"name":"decisions","line":457},{"name":"files","line":458},{"name":"steps","line":459}],"imports":[],"terms":["memory","notebooklm","notebook","default","timeout","max","size","auth","state","unauthenticated","authenticated","expired","refreshing","connection","status","disconnected","connecting","connected","tokens","lmconfig","lmclient","query","session","wrapup","summary","entry","client","authenticate","close","create","list","get","find","delete","upload","text","extract","format","decisions","steps"]},{"id":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","sources":[{"repo":"ghashtag/t27","path":"specs/config/load.t27","health":"ok","module":"config-load"}],"description":"config/load.t27 — Config Load/Save Specification Configuration file I/O, merging, validation","symbols":[{"name":"CONFIG_DIR_NAME","line":22},{"name":"CONFIG_FILE_EXT","line":25},{"name":"ENV_FILE_NAME","line":28},{"name":"MAX_CONFIG_SIZE","line":31},{"name":"CONFIG_FORMAT_VERSION","line":34},{"name":"FORMAT_JSON","line":37},{"name":"FORMAT_YAML","line":40},{"name":"ConfigSource","line":47},{"name":"ConfigFormat","line":55},{"name":"LoadResult","line":61},{"name":"LoadError","line":69},{"name":"SaveResult","line":76},{"name":"MergeStrategy","line":83},{"name":"MergeResult","line":90},{"name":"MergeConflict","line":97},{"name":"ValidationContext","line":105},{"name":"load_default","line":116},{"name":"paths","line":117},{"name":"load_from_file","line":122},{"name":"load_from_env","line":133},{"name":"save_default","line":144},{"name":"paths","line":145},{"name":"save_to_file","line":150},{"name":"merge","line":160},{"name":"merged","line":161},{"name":"conflicts","line":162},{"name":"merge_multiple","line":172},{"name":"merge_result","line":176},{"name":"validate","line":188},{"name":"api_error","line":192},{"name":"path_errors","line":199},{"name":"agent_errors","line":206},{"name":"validate_api_key","line":219},{"name":"validate_paths","line":227},{"name":"err","line":231},{"name":"validate_agents","line":239},{"name":"err","line":244},{"name":"validation_context_default","line":253},{"name":"validation_context_select","line":262},{"name":"load_error_create","line":271},{"name":"merge_conflict_create","line":280},{"name":"apply_merge_strategy","line":290},{"name":"merge_configs","line":299},{"name":"find_merge_conflicts","line":305},{"name":"get_default_paths","line":311},{"name":"append_errors","line":321},{"name":"append_errors_slice","line":331},{"name":"concat_errors","line":338},{"name":"concat_errors_string","line":348},{"name":"append_byte_string","line":357},{"name":"result","line":368},{"name":"result","line":373},{"name":"result","line":378},{"name":"base","line":383},{"name":"overlay","line":384},{"name":"result","line":385},{"name":"base","line":390},{"name":"overlay","line":391},{"name":"result","line":392},{"name":"base","line":397},{"name":"overlay","line":398},{"name":"result","line":399},{"name":"context","line":404},{"name":"context","line":409},{"name":"config","line":416},{"name":"context","line":417},{"name":"result","line":418},{"name":"context","line":425},{"name":"result","line":426},{"name":"config","line":431},{"name":"result","line":432},{"name":"paths","line":437},{"name":"config","line":564},{"name":"base","line":576},{"name":"overlay","line":577},{"name":"config","line":589},{"name":"context","line":590}],"imports":[{"name":"std","line":12}],"terms":["config","load","dir","ext","env","max","size","format","json","yaml","save","merge","strategy","conflict","validation","default","paths","merged","conflicts","multiple","validate","api","path","key","err","agents","select","create","apply","configs","find","get","append","slice","concat","byte","base","overlay"]},{"id":"bc520fb9db99214b0349804b525a1e98f277b8ba699de1664456a00f242c92de","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/direct_message.t27","health":"ok","module":"DirectMessage"}],"description":"End-to-end encrypted direct-message envelope policy. HTTP, SQLite, X25519, AEAD, and APNs adapters are outside this specification. phi^2 + phi^-2 = 3","symbols":[{"name":"CRYPTO_VERSION_V1","line":8},{"name":"X25519_PUBLIC_KEY_BYTES","line":9},{"name":"CONTENT_KEY_BYTES","line":10},{"name":"AEAD_NONCE_BYTES","line":11},{"name":"AEAD_TAG_BYTES","line":12},{"name":"MAX_PLAINTEXT_BYTES","line":13},{"name":"MAX_CIPHERTEXT_BYTES","line":14},{"name":"MAX_RECIPIENT_DEVICES","line":15},{"name":"MAX_MESSAGE_PAGE","line":16},{"name":"PUSH_ALERT_MAX_AGE_SECONDS","line":17},{"name":"text_key_is_valid","line":19},{"name":"crypto_version_is_supported","line":31},{"name":"recipient_may_resolve","line":35},{"name":"envelope_is_valid","line":44},{"name":"envelope_set_is_complete","line":53},{"name":"message_may_be_committed","line":60},{"name":"message_retry_is_idempotent","line":71},{"name":"message_page_size","line":75},{"name":"advance_read_cursor","line":85},{"name":"message_counts_as_unread","line":92},{"name":"push_alert_may_be_sent","line":96},{"name":"push_alert_outbox_event_may_enqueue","line":102},{"name":"push_alert_is_fresh","line":106},{"name":"push_alert_outbox_event_should_deliver","line":116}],"imports":[{"name":"base::types","line":6}],"terms":["net","direct","crypto","x25519","public","key","bytes","content","aead","nonce","tag","max","plaintext","ciphertext","recipient","devices","page","push","alert","age","seconds","text","valid","supported","may","resolve","envelope","set","complete","committed","retry","idempotent","size","advance","read","cursor","counts","unread","sent","outbox","event","enqueue","fresh","deliver"]},{"id":"bc75bbaaeec57c0e8571786c4e9e8c8ba7d4bae553124f10b12ab6a6cdb5efaa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/rabin_karp.t27","health":"ok","module":"TriRabinKarp"}],"description":"t27/specs/","symbols":[{"name":"RKState","line":13},{"name":"init","line":25},{"name":"search","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","rabin","karp","rkstate","init"]},{"id":"bca3e8deb428837bb49648c974bb103777ecfac6bb214210273bef4bf5d4733c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logger.t27","health":"warn","module":null}],"description":"t27/specs/","symbols":[{"name":"Level","line":13},{"name":"LogEntry","line":17},{"name":"Logger","line":23},{"name":"new","line":33},{"name":"log","line":38},{"name":"with_field","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","logger","level","log","entry","field"]},{"id":"bd3bb0d278274a7e547540c4c0fa4c4191c5d1095c32f538aeb7d9eb2cfcacf1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json.t27","health":"warn","module":"TrinityMemoryJson"}],"description":"Strict, bounded UTF-8 JSON parser. Native algorithms; no heap allocation. C adapter: double tm_json_strtod(uint8_t *nul_terminated), C numeric locale. Caller provides nonoverlapping live input, tokens, and decoded-byte arena. Failed parses may change scratch tokens/arena; result is written on success only.","symbols":[{"name":"TM_JSON_NULL","line":6},{"name":"TM_JSON_FALSE","line":7},{"name":"TM_JSON_TRUE","line":8},{"name":"TM_JSON_INTEGER","line":9},{"name":"TM_JSON_REAL","line":10},{"name":"TM_JSON_STRING","line":11},{"name":"TM_JSON_ARRAY","line":12},{"name":"TM_JSON_OBJECT","line":13},{"name":"TM_JSON_ERR_SYNTAX","line":14},{"name":"TM_JSON_ERR_CAPACITY","line":15},{"name":"TM_JSON_ERR_DEPTH","line":16},{"name":"TM_JSON_ERR_DUPLICATE","line":17},{"name":"TM_JSON_ERR_NUMBER","line":18},{"name":"TM_JSON_ERR_UTF8","line":19},{"name":"TMJsonToken","line":21},{"name":"TMJsonResult","line":33},{"name":"TMJsonState","line":34},{"name":"tm_json_fail","line":41},{"name":"tm_json_space","line":42},{"name":"tm_json_put","line":49},{"name":"tm_json_token","line":55},{"name":"tm_json_utf8_width","line":67},{"name":"tm_json_hex4","line":87},{"name":"tm_json_codepoint","line":101},{"name":"tm_json_string","line":115},{"name":"tm_json_number","line":178},{"name":"tm_json_equal","line":250},{"name":"tm_json_value","line":257},{"name":"tm_json_parse","line":322},{"name":"tm_json_field","line":338}],"imports":[],"terms":["dmitrii","memory","json","null","integer","real","array","object","err","syntax","capacity","depth","duplicate","utf8","tmjson","token","state","fail","space","put","width","hex4","codepoint","equal","parse","field"]},{"id":"bd7accfeb733b5d197590ce3d41ef52a287c5fa9d85aa28dcb9865e975b98715","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_receipt_verify.t27","health":"ok","module":"TriReceiptVerify"}],"description":"TRI-NET full compute-receipt acceptance: the capstone that ties the ring's three independent checks into ONE verdict. A receipt is accepted only if ALL hold: sig_ok -- a valid executor Ed25519 signature over the 256-bit digest (WHO) included -- the receipt digest is in the signed Merkle batch root (MEMBERSHIP) compute_ok -- the claimed GF-T result recomputes correctly (tri_gft_arith) (CORRECTNESS) Each check is independent and necessary: a valid signature over a wrong result,","symbols":[{"name":"OK","line":17},{"name":"BAD_SIG","line":18},{"name":"NOT_IN_BATCH","line":19},{"name":"BAD_COMPUTE","line":20},{"name":"GF_OP_ADD","line":26},{"name":"GF_OP_MUL","line":27},{"name":"compute_ok_for_op","line":29},{"name":"receipt_accepted","line":42},{"name":"reject_reason","line":56}],"imports":[{"name":"base::types","line":14}],"terms":["net","receipt","verify","bad","sig","batch","compute","mul","accepted","reject","reason"]},{"id":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_validator.t27","health":"warn","module":"test_validator"}],"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","symbols":[{"name":"MAX_ERRORS","line":7},{"name":"MAX_WARNINGS","line":8},{"name":"MAX_FUNCTIONS","line":9},{"name":"VIOLATION_THRESHOLD","line":10},{"name":"create_validation_error","line":13},{"name":"get_error_id","line":20},{"name":"get_error_type","line":24},{"name":"get_error_line","line":28},{"name":"get_error_severity","line":32},{"name":"ERROR_SYNTAX","line":37},{"name":"ERROR_TYPE_MISMATCH","line":38},{"name":"ERROR_CONSTRAINT_VIOLATION","line":39},{"name":"ERROR_UNDEFINED_SYMBOL","line":40},{"name":"ERROR_UNUSED_VARIABLE","line":41},{"name":"SEVERITY_ERROR","line":44},{"name":"SEVERITY_WARNING","line":45},{"name":"SEVERITY_INFO","line":46},{"name":"create_function_signature","line":49},{"name":"get_sig_function_id","line":56},{"name":"get_param_count","line":60},{"name":"get_return_type","line":64},{"name":"get_visibility","line":68},{"name":"validate_function_signature","line":73},{"name":"create_constraint_check","line":92},{"name":"get_constraint_id","line":99},{"name":"get_constraint_status","line":103},{"name":"get_constraint_description","line":107},{"name":"get_constraint_line","line":111},{"name":"CONSTRAINT_PASS","line":116},{"name":"CONSTRAINT_FAIL","line":117},{"name":"CONSTRAINT_SKIP","line":118},{"name":"CONSTRAINT_NO_FLOAT","line":121},{"name":"CONSTRAINT_NO_DYNAMIC_ARRAY","line":122},{"name":"CONSTRAINT_NO_BIGNUM","line":123},{"name":"CONSTRAINT_FIXED_SIZE_ONLY","line":124},{"name":"CONSTRAINT_INTEGER_ONLY","line":125},{"name":"check_no_float_operations","line":128},{"name":"check_no_dynamic_arrays","line":138},{"name":"check_integer_only","line":148},{"name":"create_type_check","line":160},{"name":"get_type_var_id","line":167},{"name":"get_declared_type","line":171},{"name":"get_inferred_type","line":175},{"name":"get_type_line","line":179},{"name":"perform_type_check","line":184},{"name":"create_unused_check","line":196},{"name":"get_unused_var_id","line":203},{"name":"get_usage_count","line":207},{"name":"get_first_use","line":211},{"name":"get_last_use","line":215},{"name":"check_unused_variable","line":220},{"name":"create_validation_summary","line":231},{"name":"get_error_count","line":238},{"name":"get_warning_count","line":242},{"name":"get_info_count","line":246},{"name":"get_validation_status","line":250},{"name":"VALIDATION_PASS","line":255},{"name":"VALIDATION_FAIL","line":256},{"name":"VALIDATION_WARNING","line":257},{"name":"run_validation","line":260},{"name":"create_quality_metrics","line":296},{"name":"get_complexity","line":303},{"name":"get_readability","line":307},{"name":"get_maintainability","line":311},{"name":"get_technical_debt","line":315},{"name":"calculate_complexity","line":320},{"name":"is_quality_acceptable","line":337},{"name":"generate_validation_report","line":358}],"imports":[{"name":"base::types","line":5}],"terms":["net","validator","max","warnings","functions","violation","threshold","create","validation","get","severity","syntax","mismatch","constraint","undefined","unused","variable","warning","info","signature","sig","param","count","visibility","validate","status","description","pass","fail","skip","float","dynamic","array","bignum","fixed","size","integer","operations","arrays","var","declared","inferred","perform","usage","summary","quality","metrics","complexity","readability","maintainability","technical","debt","calculate","acceptable","generate","report"]},{"id":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_routing.t27","health":"ok","module":"multipath_routing"}],"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"MIN_PATHS","line":9},{"name":"PATH_VALID","line":10},{"name":"PATH_INVALID","line":11},{"name":"create_multipath","line":14},{"name":"get_path_valid","line":21},{"name":"get_multipath_hop1","line":25},{"name":"get_multipath_hop2","line":29},{"name":"get_multipath_hop3","line":33},{"name":"create_multipath_state","line":38},{"name":"get_active_paths","line":45},{"name":"get_current_path","line":49},{"name":"get_flow_id","line":53},{"name":"get_multipath_last_update","line":57},{"name":"create_path_array","line":62},{"name":"get_multipath","line":69},{"name":"count_valid_paths","line":77},{"name":"is_multipath_viable","line":87},{"name":"select_primary_path","line":92},{"name":"calculate_path_diversity","line":110},{"name":"distribute_load","line":147},{"name":"needs_failover","line":177},{"name":"perform_failover","line":184},{"name":"calculate_multipath_gain","line":200}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","multipath","routing","max","paths","hops","min","path","valid","invalid","create","get","hop1","hop2","hop3","state","active","flow","array","count","viable","select","primary","calculate","diversity","distribute","load","failover","perform","gain"]},{"id":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/mac.t27","health":"warn","module":"ZeroDSP_MAC"}],"description":"t27/specs/fpga/mac.t27 ZeroDSP FPGA Multiply-Accumulate Specification Ternary MAC operations for FPGA implementation","symbols":[{"name":"MAC_WIDTH","line":18},{"name":"MAC_ACC_BITS","line":19},{"name":"NUM_MAC_UNITS","line":20},{"name":"PIPELINE_STAGES","line":21},{"name":"OP_MAC_MUL","line":24},{"name":"OP_MAC_MAC","line":25},{"name":"OP_MAC_MACC","line":26},{"name":"OP_MAC_DOT","line":27},{"name":"STATUS_READY","line":30},{"name":"STATUS_BUSY","line":31},{"name":"STATUS_DONE","line":32},{"name":"MAC_LUT","line":46},{"name":"MACUnit","line":63},{"name":"extract_trit","line":89},{"name":"bit_pos","line":90},{"name":"mask","line":91},{"name":"encoded","line":92},{"name":"pack_trit","line":105},{"name":"bit_pos","line":106},{"name":"encoded","line":107},{"name":"mac_multiply","line":120},{"name":"a_trit","line":131},{"name":"b_trit","line":132},{"name":"a_idx","line":135},{"name":"b_idx","line":136},{"name":"lut_idx","line":137},{"name":"product","line":139},{"name":"mac_cycle","line":158},{"name":"a_trit","line":170},{"name":"b_trit","line":171},{"name":"product","line":172},{"name":"mac_dot_product","line":187},{"name":"mac_matrix_vector","line":221},{"name":"unit","line":232},{"name":"mat_idx","line":240},{"name":"mac_status_read","line":258},{"name":"mac_status_write","line":267},{"name":"mac_reset","line":277},{"name":"mac_reset_all","line":289},{"name":"mac_get_accumulator","line":300},{"name":"mac_set_accumulator","line":309},{"name":"mac_parallel_multiply","line":329},{"name":"unit","line":338}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"isa::registers","line":11}],"terms":["fpga","mac","zero","dsp","width","acc","bits","num","units","pipeline","stages","mul","macc","dot","status","ready","busy","done","lut","macunit","extract","trit","bit","pos","mask","encoded","pack","multiply","idx","product","cycle","matrix","vector","unit","mat","read","write","reset","get","accumulator","set","parallel"]},{"id":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","sources":[{"repo":"ghashtag/t27","path":"specs/config/schema.t27","health":"ok","module":"config-schema"}],"description":"config/schema.t27 — Config Schema Specification Configuration structures for providers, agents, LSP","symbols":[{"name":"DEFAULT_CONFIG_FILE","line":19},{"name":"DEFAULT_ENV_FILE","line":22},{"name":"DEFAULT_PROVIDER","line":25},{"name":"DEFAULT_MODEL","line":28},{"name":"MAX_API_KEY_LENGTH","line":31},{"name":"MAX_AGENT_NAME_LENGTH","line":34},{"name":"MAX_TIMEOUT_SEC","line":37},{"name":"DEFAULT_TIMEOUT_SEC","line":40},{"name":"DEFAULT_MAX_TOKENS","line":43},{"name":"DEFAULT_TEMPERATURE","line":46},{"name":"ProviderType","line":49},{"name":"AgentCapability","line":56},{"name":"ProviderConfig","line":69},{"name":"AgentConfig","line":80},{"name":"MCPServerConfig","line":90},{"name":"LSPConfig","line":99},{"name":"LanguageServer","line":108},{"name":"TuiConfig","line":116},{"name":"Keybinding","line":125},{"name":"LoggingConfig","line":132},{"name":"PathsConfig","line":140},{"name":"Config","line":148},{"name":"ValidationResult","line":160},{"name":"ConfigError","line":166},{"name":"provider_default","line":177},{"name":"provider_with_key","line":190},{"name":"base","line":191},{"name":"agent_default","line":196},{"name":"agent_with_capabilities","line":208},{"name":"base","line":209},{"name":"lsp_server_create","line":214},{"name":"tui_default","line":224},{"name":"logging_default","line":235},{"name":"paths_default","line":245},{"name":"config_default","line":255},{"name":"validation_success","line":269},{"name":"validation_failure","line":277},{"name":"error_create","line":285},{"name":"error_with_severity","line":294},{"name":"is_anthropic","line":303},{"name":"is_openai","line":308},{"name":"is_custom","line":313},{"name":"has_api_key","line":318},{"name":"agent_has_capability","line":323},{"name":"lsp_is_enabled","line":333},{"name":"config_add_agent","line":338},{"name":"config_remove_agent","line":343},{"name":"config_agent_count","line":348},{"name":"append_agents","line":353},{"name":"append_agents_slice","line":363},{"name":"concat_agents","line":370},{"name":"concat_string","line":380},{"name":"append_byte","line":389},{"name":"provider","line":400},{"name":"provider","line":405},{"name":"agent","line":410},{"name":"caps","line":415},{"name":"agent","line":416},{"name":"lsp","line":422},{"name":"tui","line":427},{"name":"logging","line":432},{"name":"paths","line":437},{"name":"config","line":442},{"name":"result","line":447},{"name":"error","line":452},{"name":"result","line":453},{"name":"agent","line":459},{"name":"caps","line":465},{"name":"agent","line":466},{"name":"caps","line":471},{"name":"agent","line":472},{"name":"provider","line":575},{"name":"provider","line":580},{"name":"agent","line":585},{"name":"caps","line":590},{"name":"agent","line":591},{"name":"lsp","line":597},{"name":"tui","line":602},{"name":"logging","line":607},{"name":"paths","line":612},{"name":"config","line":617},{"name":"context","line":622},{"name":"result","line":623},{"name":"context","line":630},{"name":"result","line":631},{"name":"agent","line":637},{"name":"caps","line":643},{"name":"agent","line":644},{"name":"caps","line":649},{"name":"agent","line":650},{"name":"caps","line":695},{"name":"agent","line":696}],"imports":[{"name":"std","line":12}],"terms":["config","schema","default","env","provider","model","max","api","key","length","timeout","sec","tokens","temperature","capability","mcpserver","lspconfig","language","tui","keybinding","logging","paths","validation","base","capabilities","lsp","create","success","failure","severity","anthropic","openai","custom","enabled","remove","count","append","agents","slice","concat","byte","caps"]},{"id":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/schema.t27","health":"ok","module":"provider-schema"}],"description":"provider/schema.t27 — Provider Message Types AI provider message structures and model types","symbols":[{"name":"PROVIDER_ANTHROPIC","line":19},{"name":"PROVIDER_OPENAI","line":22},{"name":"PROVIDER_DEFAULT","line":25},{"name":"MODEL_ANTHROPIC_DEFAULT","line":28},{"name":"MODEL_OPENAI_DEFAULT","line":31},{"name":"MAX_TOKENS","line":34},{"name":"DEFAULT_TEMPERATURE","line":37},{"name":"DEFAULT_MAX_TOKENS","line":40},{"name":"DEFAULT_TOP_P","line":43},{"name":"ProviderType","line":50},{"name":"MessageRole","line":56},{"name":"ContentType","line":64},{"name":"MessageContent","line":72},{"name":"Message","line":81},{"name":"Tool","line":87},{"name":"ToolCall","line":94},{"name":"RequestParams","line":101},{"name":"ChunkType","line":111},{"name":"StreamingChunk","line":119},{"name":"Usage","line":128},{"name":"Response","line":135},{"name":"Choice","line":144},{"name":"StreamResponse","line":150},{"name":"ProviderConfig","line":157},{"name":"ProviderCapability","line":167},{"name":"ProviderCapabilities","line":175},{"name":"ProviderError","line":183},{"name":"ImageContent","line":190},{"name":"provider_type_from_string","line":200},{"name":"provider_type_to_string","line":211},{"name":"message_create","line":219},{"name":"system_message_create","line":235},{"name":"user_message_create","line":240},{"name":"tool_create","line":245},{"name":"request_params_create","line":254},{"name":"provider_config_create","line":266},{"name":"base_url","line":267},{"name":"usage_create","line":283},{"name":"streaming_chunk_create","line":292},{"name":"response_create","line":303},{"name":"role_to_string","line":319},{"name":"provider_error_create","line":329},{"name":"is_anthropic_provider","line":338},{"name":"is_openai_provider","line":343},{"name":"response_has_error","line":348},{"name":"chunk_is_done","line":353},{"name":"chunk_type_to_string","line":358},{"name":"pt","line":372},{"name":"str","line":377},{"name":"msg","line":382},{"name":"msg","line":387},{"name":"msg","line":392},{"name":"tool","line":397},{"name":"params","line":402},{"name":"config","line":407},{"name":"usage","line":412},{"name":"chunk","line":417},{"name":"resp","line":422},{"name":"str","line":427},{"name":"err","line":432},{"name":"err_resp","line":445},{"name":"chunk","line":450},{"name":"str","line":455}],"imports":[],"terms":["provider","schema","anthropic","openai","default","model","max","tokens","temperature","top","role","content","tool","call","request","params","chunk","streaming","usage","response","choice","stream","config","capability","capabilities","image","create","system","user","base","url","done","str","msg","resp","err"]},{"id":"bfc3764c6d710df490e0d10cfa5c0d99548f60cfe284614837138a7a02bc6f45","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline.t27","health":"ok","module":"TriPipeline"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline"]},{"id":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","sources":[{"repo":"ghashtag/t27","path":"specs/vm/jit_semantics.t27","health":"ok","module":"JitSemantics"}],"description":"Module: JIT Compilation Semantics","symbols":[{"name":"JitVsaFn","line":20},{"name":"JitSimilarityFn","line":25},{"name":"JitCompiler","line":34},{"name":"JitCache","line":47},{"name":"VsaOperation","line":59},{"name":"initCompiler","line":73},{"name":"deinitCompiler","line":79},{"name":"resetCompiler","line":85},{"name":"compileOperation","line":92},{"name":"finalizeCompiler","line":99},{"name":"codeSize","line":105},{"name":"initCache","line":115},{"name":"deinitCache","line":121},{"name":"getOrCompile","line":127},{"name":"jitBind","line":137},{"name":"jitBundle","line":143},{"name":"jitDotProduct","line":150}],"imports":[{"name":"base::types","line":9},{"name":"ternary::hybrid_arithmetic","line":10},{"name":"numeric::gf16","line":11}],"terms":["jit","semantics","vsa","similarity","compiler","cache","operation","init","deinit","reset","compile","finalize","size","get","bind","bundle","dot","product"]},{"id":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/process.t27","health":"ok","module":"runtime-process"}],"description":"runtime/process.t27 — Runtime Process Specification Process spawning, termination, piping, PTY","symbols":[{"name":"SPAWN_TIMEOUT_MS","line":19},{"name":"PTY_COLS_DEFAULT","line":22},{"name":"PTY_ROWS_DEFAULT","line":25},{"name":"MAX_PIPE_BUFFER","line":28},{"name":"ProcessSignal","line":31},{"name":"ProcessState","line":41},{"name":"PTYMode","line":50},{"name":"ProcessID","line":61},{"name":"ProcessInfo","line":64},{"name":"SpawnOptions","line":74},{"name":"PipeConfig","line":85},{"name":"SpawnResult","line":93},{"name":"ProcessOutput","line":100},{"name":"PTYConfig","line":110},{"name":"CaptureOptions","line":119},{"name":"spawn_options_default","line":132},{"name":"spawn_options_with_pty","line":145},{"name":"spawn_options_detached","line":158},{"name":"base","line":159},{"name":"pipe_config_create","line":172},{"name":"pipe_config_with_input","line":182},{"name":"pty_config_default","line":192},{"name":"pty_config_raw","line":203},{"name":"capture_options_default","line":214},{"name":"process_info_create","line":225},{"name":"spawn_success","line":237},{"name":"spawn_failure","line":246},{"name":"output_create","line":255},{"name":"output_with_signal","line":267},{"name":"spawn","line":279},{"name":"pid","line":281},{"name":"spawn_simple","line":286},{"name":"kill","line":291},{"name":"terminate","line":297},{"name":"interrupt","line":302},{"name":"stop","line":307},{"name":"process_continue","line":312},{"name":"capture","line":317},{"name":"pipe","line":323},{"name":"wait","line":329},{"name":"get_process_info","line":335},{"name":"is_running","line":341},{"name":"info","line":342},{"name":"process_exists","line":347},{"name":"info","line":348},{"name":"get_pid","line":353},{"name":"generate_pid","line":359},{"name":"timestamp","line":361},{"name":"spawn_succeeded","line":366},{"name":"output_is_success","line":371},{"name":"output_exit_code","line":376},{"name":"was_signaled","line":381},{"name":"output_signal","line":386},{"name":"env_pair","line":391},{"name":"append_env","line":399},{"name":"pair","line":400},{"name":"append_env_slice","line":410},{"name":"concat_env_slice","line":417},{"name":"concat_env","line":427},{"name":"append_env_byte","line":436},{"name":"get_timestamp_ms","line":443},{"name":"opts","line":453},{"name":"opts","line":458},{"name":"opts","line":463},{"name":"cfg","line":468},{"name":"cfg","line":473},{"name":"cfg","line":478},{"name":"opts","line":483},{"name":"info","line":488},{"name":"result","line":493},{"name":"result","line":498},{"name":"output","line":503},{"name":"output","line":508},{"name":"pair","line":513},{"name":"env","line":518},{"name":"result","line":519},{"name":"output","line":524},{"name":"output","line":529},{"name":"output","line":534},{"name":"signal","line":535},{"name":"env","line":755}],"imports":[{"name":"std","line":12}],"terms":["runtime","process","spawn","timeout","pty","cols","default","rows","max","pipe","buffer","signal","state","ptymode","info","options","config","ptyconfig","capture","detached","base","create","raw","success","failure","pid","simple","kill","terminate","interrupt","stop","continue","wait","get","running","exists","generate","timestamp","succeeded","exit","signaled","env","pair","append","slice","concat","byte","opts","cfg"]},{"id":"bfed6607cc634336de78652ca7a5459bcba12a87f0923ad27825c5a9d9f47a63","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_actor.t27","health":"ok","module":"SacActor"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LOG_STD_MIN","line":13},{"name":"DEFAULT_LOG_STD_MAX","line":14},{"name":"DEFAULT_ACTION_RANGE","line":15},{"name":"SACActorConfig","line":21},{"name":"PolicyOutput","line":30},{"name":"SquashedGaussianSample","line":35},{"name":"forward","line":45},{"name":"sample","line":50},{"name":"scale_action","line":55},{"name":"unscale_action","line":60}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sac","actor","default","log","std","min","max","action","range","sacactor","config","policy","squashed","gaussian","sample","forward","scale","unscale"]},{"id":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/rom_layout.t27","health":"ok","module":"CoronaRomLayout"}],"description":"specs/corona/rom_layout.t27 Corona ROM bit-layout: 80 bits per format record, 80 records total.","symbols":[{"name":"RECORD_BITS","line":19},{"name":"RECORD_BYTES","line":20},{"name":"RECORD_COUNT","line":21},{"name":"ROM_TOTAL_BITS","line":23},{"name":"ROM_TOTAL_BYTES","line":24},{"name":"FIELD_FORMAT_INDEX_ID","line":48},{"name":"FIELD_CLUSTER_ID","line":49},{"name":"FIELD_STATUS_ID","line":50},{"name":"FIELD_TOTAL_BITS","line":51},{"name":"FIELD_SIGN_BITS","line":52},{"name":"FIELD_EXP_BITS","line":53},{"name":"FIELD_MANT_BITS","line":54},{"name":"FIELD_ENCODING_KIND","line":55},{"name":"FIELD_PHI_DISTANCE_Q16","line":56},{"name":"FIELD_REF_INDEX","line":57},{"name":"FIELD_FLAGS","line":58},{"name":"ENCODING_FP","line":75},{"name":"ENCODING_POSIT","line":76},{"name":"ENCODING_LNS","line":77},{"name":"ENCODING_INT","line":78},{"name":"ENCODING_BCD","line":79},{"name":"ENCODING_MX","line":80},{"name":"ENCODING_TAKUM","line":81},{"name":"ENCODING_GF","line":82},{"name":"ENCODING_HISTORICAL","line":83},{"name":"ENCODING_THEORETICAL","line":84},{"name":"FLAG_ON_DIE","line":90},{"name":"FLAG_GAMMA_OWNED","line":91},{"name":"FLAG_D2D_ROUTABLE","line":92},{"name":"FLAG_EXPERIMENTAL","line":93},{"name":"STRING_TABLE_ENTRIES","line":123},{"name":"STRING_TABLE_BYTES","line":124}],"imports":[{"name":"base::types","line":12},{"name":"corona::corona_oracle","line":13}],"terms":["corona","rom","layout","record","bits","bytes","count","total","field","format","index","cluster","status","sign","exp","mant","encoding","kind","phi","distance","q16","ref","flags","posit","lns","int","bcd","takum","historical","theoretical","flag","die","gamma","owned","d2d","routable","experimental","table","entries"]},{"id":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/shell_sort.t27","health":"ok","module":"TriShellSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","shell"]},{"id":"c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_deployment.t27","health":"ok","module":"ProductionDeployment"}],"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","symbols":[{"name":"DEPLOY_PENDING","line":8},{"name":"DEPLOY_PROGRAMMING","line":9},{"name":"DEPLOY_VERIFIED","line":10},{"name":"DEPLOY_ACTIVE","line":11},{"name":"DEPLOY_FAILED","line":12},{"name":"STEP_BITSTREAM","line":15},{"name":"STEP_FLASH","line":16},{"name":"STEP_VERIFY","line":17},{"name":"STEP_MONITOR","line":18},{"name":"create_deployment","line":21},{"name":"extract_deploy_state","line":28},{"name":"extract_deploy_step","line":32},{"name":"extract_deploy_progress","line":36},{"name":"extract_device_id","line":40},{"name":"deployment_complete","line":45},{"name":"create_bitstream_info","line":51},{"name":"extract_bitstream_size","line":57},{"name":"extract_bitstream_checksum","line":61},{"name":"extract_bitstream_version","line":65},{"name":"flash_programming_success","line":70},{"name":"create_monitor_config","line":75},{"name":"extract_sample_rate","line":80},{"name":"extract_metrics_enabled","line":84},{"name":"create_checklist","line":89},{"name":"checklist_power","line":96},{"name":"checklist_cooling","line":100},{"name":"checklist_network","line":104},{"name":"checklist_monitoring","line":108},{"name":"checklist_complete","line":113}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","production","deployment","deploy","programming","verified","active","failed","step","bitstream","flash","verify","monitor","create","extract","state","progress","device","complete","info","size","checksum","success","config","sample","rate","metrics","enabled","checklist","power","cooling","network","monitoring"]},{"id":"c1cbe82a00e3075ac9f1ecbc4f19cc905a6b90e80e437fd4780770301c9bfd68","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bridge_tb.t27","health":"ok","module":"Bridge_Testbench"}],"description":"t27/specs/fpga/testbench/bridge_tb.t27 FPGA Bridge Testbench Tests data streaming, packet framing, and cross-domain transfers","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"BRIDGE_WIDTH","line":12},{"name":"FIFO_DEPTH","line":13},{"name":"tick","line":29},{"name":"reset","line":34},{"name":"send_packet","line":42},{"name":"receive_packet","line":57}],"imports":[{"name":"fpga::bridge::FPGA_Bridge","line":8}],"terms":["fpga","testbench","bridge","clk","period","sim","timeout","width","fifo","depth","tick","reset","send","packet","receive"]},{"id":"c1faa9155720958496096ae43b37c275bd524d8256bfb567d34c1a55c03b195c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/bson.t27","health":"ok","module":"TriBson"}],"description":"t27/specs/","symbols":[{"name":"BsonValue","line":13},{"name":"BsonDocument","line":17},{"name":"parse","line":25},{"name":"serialize","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","bson","document","parse","serialize"]},{"id":"c25dfe91ff969f6ce75fe208bcf6126c6794a0060096503240f80439f0e93306","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/matmul.t27","health":"warn","module":null}],"description":"Matrix Multiply (3x3) — TRI-27 Assembly Implementation Computes C = A * B where A, B are 3x3 matrices Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-108: Matrix A (3x3, row-major, 9 words) 200-208: Matrix B (3x3, row-major, 9 words)","symbols":[],"imports":[],"terms":["tri27","matmul"]},{"id":"c2cdda51683f7917f9e0b8f72abb87a36e2a3ef0f0c239ab8f370bd4e35f9e4d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/bloom_filter.t27","health":"ok","module":"TriBloomFilter"}],"description":"t27/specs/","symbols":[{"name":"BloomFilter","line":13},{"name":"init","line":24},{"name":"add","line":29},{"name":"contains","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","bloom","filter","init","contains"]},{"id":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf12.t27","health":"warn","module":"GF12"}],"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 — 12-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 4 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":29},{"name":"GF12","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":68},{"name":"sign","line":69},{"name":"exp_biased","line":70},{"name":"mant","line":71},{"name":"exp_unbiased","line":79},{"name":"mant_normalized","line":86},{"name":"value","line":92},{"name":"max_value","line":104},{"name":"mant_max","line":105},{"name":"exp_max","line":106},{"name":"min_positive","line":110},{"name":"mant_min","line":111},{"name":"exp_min","line":112},{"name":"epsilon","line":116},{"name":"validate_format","line":124},{"name":"fmt","line":125},{"name":"MEMORY_RATIO_VS_FP32","line":143},{"name":"floor_log2","line":149},{"name":"extract_mantissa","line":163},{"name":"normalized","line":164},{"name":"frac","line":165},{"name":"max_mant","line":166},{"name":"clamp","line":170},{"name":"pow","line":176}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf12","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow"]},{"id":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/heap_sort.t27","health":"ok","module":"TriHeapSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","heap"]},{"id":"c4640c7a2ad1f9a0c29a2e975d615ec82130805ba1e1a75ed3f1c167fba995f7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/args.t27","health":"warn","module":null}],"description":"t27/specs/","symbols":[{"name":"Arg","line":13},{"name":"ArgValue","line":19},{"name":"ParseResult","line":24},{"name":"parse","line":35},{"name":"has_flag","line":40},{"name":"get_value","line":45},{"name":"get_positional","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","args","arg","parse","flag","get","positional"]},{"id":"c5df0d82bd5c7ea6975cbcdd0faf2a81ac7f8a4032bd77d0224e2db7c731ccde","sources":[{"repo":"ghashtag/t27","path":"specs/storage/lock.t27","health":"ok","module":"StorageLock"}],"description":"specs/storage/lock.t27 Locking Primitives for Storage Operations","symbols":[{"name":"LockState","line":14},{"name":"acquire_read","line":29},{"name":"acquire_write","line":36},{"name":"release","line":41},{"name":"try_lock","line":47},{"name":"is_locked","line":52},{"name":"get_lock_state","line":57},{"name":"wait_for_read","line":62},{"name":"wait_for_write","line":67},{"name":"cleanup_expired","line":76},{"name":"get_all_locks","line":81},{"name":"force_release","line":86}],"imports":[{"name":"base::types","line":6},{"name":"storage::schema","line":7}],"terms":["storage","lock","state","acquire","read","write","release","try","locked","get","wait","cleanup","expired","locks","force"]},{"id":"c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/key_management.t27","health":"warn","module":"KeyManagement"}],"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","symbols":[{"name":"MAX_KEYS","line":7},{"name":"KEY_SIZE","line":8},{"name":"KEY_VALID","line":9},{"name":"KEY_INVALID","line":10},{"name":"ROTATION_INTERVAL","line":11},{"name":"create_key_entry","line":14},{"name":"get_key_valid","line":21},{"name":"get_key_id","line":25},{"name":"get_key_value","line":29},{"name":"get_key_timestamp","line":33},{"name":"create_key_store","line":38},{"name":"get_key_entry","line":45},{"name":"find_key_by_id","line":53},{"name":"add_key","line":67},{"name":"invalidate_key","line":82},{"name":"needs_rotation","line":102},{"name":"rotate_key","line":112},{"name":"get_active_key","line":131},{"name":"count_valid_keys","line":174}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","key","management","max","keys","size","valid","invalid","rotation","interval","create","entry","get","timestamp","store","find","invalidate","rotate","active","count"]},{"id":"c6c888eead59d10c6030023702fa4faf2457e75a595c1dafe65a00f70626f17c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/specs/physics/formula_registry.t27","health":"ok","module":null}],"description":"Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md SSOT for Trinity formula discovery","symbols":[{"name":"PHI","line":9},{"name":"PI","line":10},{"name":"E","line":11},{"name":"GA","line":12},{"name":"gamma_phi","line":19},{"name":"ln2_over_pi","line":24},{"name":"ln3_over_pi","line":29},{"name":"alpha_inv_pellis_exact","line":34},{"name":"alpha_s","line":39},{"name":"tc_qcd","line":44},{"name":"neutron_proton_ratio","line":53},{"name":"muon_electron_ratio","line":59},{"name":"electron_mass_mev","line":68},{"name":"muon_mass_mev","line":73},{"name":"tau_mass_mev","line":78},{"name":"koide_q","line":83},{"name":"bottom_mass_gev","line":92},{"name":"top_mass_gev","line":97},{"name":"strange_down_ratio","line":102},{"name":"theta_cabibbo","line":111},{"name":"v_cb","line":116},{"name":"v_us","line":121},{"name":"sin2theta23_pmns","line":130},{"name":"delta_cp_pmns","line":135},{"name":"sin2theta12_pmns","line":140},{"name":"lambda_exponent","line":149},{"name":"higgs_z_ratio","line":158},{"name":"v_ud_chimera","line":167},{"name":"v_cs_chimera","line":172},{"name":"v_td_chimera","line":177},{"name":"sin2theta12_chimera","line":182},{"name":"delta_cp_rad","line":187},{"name":"strange_muon_ratio","line":192},{"name":"bottom_top_ratio","line":197},{"name":"omega_b_chimera","line":202},{"name":"ns_chimera","line":207}],"imports":[],"terms":["bootstrap","physics","formula","registry","phi","gamma","ln2","over","ln3","alpha","inv","pellis","exact","qcd","neutron","proton","ratio","muon","electron","mass","mev","tau","koide","bottom","gev","top","strange","down","theta","cabibbo","sin2theta23","pmns","delta","sin2theta12","lambda","exponent","higgs","chimera","rad","omega"]},{"id":"c6c932ec30079e224f4161aca945d49f96731af17b750848af08a2b7c2e6d786","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/cloud.t27","health":"ok","module":"TriCloud"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","cloud"]},{"id":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf256.t27","health":"warn","module":"GF256"}],"description":"t27/specs/numeric/gf256.t27 GoldenFloat256 0 256-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 11 (P1)","symbols":[{"name":"BITS","line":16},{"name":"SIGN_BITS","line":17},{"name":"EXP_BITS","line":18},{"name":"MANT_BITS","line":19},{"name":"EXP_BIAS_LO","line":22},{"name":"EXP_BIAS_HI","line":23},{"name":"PHI_DISTANCE","line":26},{"name":"GF256","line":28},{"name":"encode","line":37},{"name":"sign","line":42},{"name":"abs_val","line":43},{"name":"exp_unbiased","line":46},{"name":"normalized","line":57},{"name":"frac","line":58},{"name":"max_mant","line":59},{"name":"mant","line":60},{"name":"clamped_mant","line":61},{"name":"raw_0","line":64},{"name":"raw_1","line":65},{"name":"exp_m1","line":68},{"name":"exp_m2","line":69},{"name":"raw_3","line":72},{"name":"decode","line":83},{"name":"sign","line":84},{"name":"exp_lo_part","line":87},{"name":"exp_mid_part","line":88},{"name":"exp_hi_part","line":89},{"name":"exp_biased_lo","line":90},{"name":"exp_biased_hi","line":91},{"name":"exp_biased_128","line":93},{"name":"mant_lo","line":96},{"name":"mant_mid","line":97},{"name":"mant","line":98},{"name":"exp_bias_128","line":106},{"name":"exp_unbiased","line":107},{"name":"max_mant","line":114},{"name":"mant_normalized","line":115},{"name":"value","line":121},{"name":"max_value","line":130},{"name":"max_mant","line":131},{"name":"mant_max","line":132},{"name":"exp_max","line":133},{"name":"min_positive","line":137},{"name":"max_mant","line":138},{"name":"mant_min","line":139},{"name":"exp_min","line":140},{"name":"epsilon","line":144},{"name":"max_mant","line":145},{"name":"validate_format","line":150},{"name":"fmt","line":151},{"name":"MEMORY_RATIO_VS_FP32","line":166},{"name":"floor_log2","line":169},{"name":"pow","line":183},{"name":"is_integer","line":194},{"name":"ln_val","line":218},{"name":"ln_approx","line":222},{"name":"t","line":230},{"name":"t2","line":231},{"name":"t3","line":232},{"name":"t5","line":233},{"name":"exp_approx","line":238},{"name":"floor","line":255}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["chips","euler","fpga","gf256","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","normalized","frac","max","clamped","raw","decode","part","mid","biased","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","pow","integer","approx"]},{"id":"c757522b59a7fed58d8f2409a674a72f552639d3978979bfc3b685f70e835b58","sources":[{"repo":"ghashtag/t27","path":"specs/physics/pellis-formulas.t27","health":"ok","module":"PellisFormulas"}],"description":"t27/specs/physics/pellis-formulas.t27 Trinity x Pellis hybrid -- thin-structure formulas anchored on L5 (issue #277). SSOT: invariants tie Pell ladders to phi; observables are references for tri math compare.","symbols":[{"name":"PHI","line":12},{"name":"PHI_SQ","line":13},{"name":"PHI_INV","line":14},{"name":"PHI_INV_SQ","line":15},{"name":"TRINITY_FROM_PHI","line":18},{"name":"ALPHA_INV_REFERENCE","line":21},{"name":"PHI_POW_FIVE","line":24},{"name":"PELL_P1","line":27},{"name":"PELL_P2","line":28},{"name":"PELL_P3","line":29},{"name":"PELL_P4","line":30},{"name":"PELL_P5","line":31},{"name":"trinity_anchor_error","line":33},{"name":"matches_sacred_trinity","line":37}],"imports":[{"name":"math::constants","line":9},{"name":"math::sacred_physics","line":10}],"terms":["physics","pellis","formulas","phi","inv","alpha","reference","pow","five","pell","anchor","matches","sacred"]},{"id":"c787ba3a1231e67ed5f73ee5de8a8c2114a90ae7136a6d5ec9e2e168fa87c4cb","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/rnn_cell.t27","health":"ok","module":"RnnCell"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_INPUT_SIZE","line":13},{"name":"DEFAULT_HIDDEN_SIZE","line":14},{"name":"RNNCellConfig","line":20},{"name":"RNNState","line":25},{"name":"RNNParams","line":30},{"name":"forward_step","line":41},{"name":"forward_sequence","line":46},{"name":"init_state","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","rnn","cell","default","size","hidden","rnncell","config","rnnstate","rnnparams","forward","step","sequence","init","state"]},{"id":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/trust_manager.t27","health":"ok","module":"trust_manager"}],"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","symbols":[{"name":"MAX_NODES","line":7},{"name":"TRUST_THRESHOLD","line":8},{"name":"TRUST_HIGH","line":9},{"name":"TRUST_LOW","line":10},{"name":"MAX_TRUST_SCORE","line":11},{"name":"create_trust_score","line":14},{"name":"get_trust_node_id","line":21},{"name":"get_trust_score_value","line":25},{"name":"get_positive_interactions","line":29},{"name":"get_negative_interactions","line":33},{"name":"create_trust_relationship","line":38},{"name":"get_trust_source","line":45},{"name":"get_trust_destination","line":49},{"name":"get_trust_level","line":53},{"name":"get_trust_verified","line":57},{"name":"create_trust_array","line":62},{"name":"get_trust_score","line":73},{"name":"calculate_trust_score","line":85},{"name":"update_trust_score","line":97},{"name":"is_node_trusted","line":110},{"name":"is_node_highly_trusted","line":115},{"name":"is_node_low_trusted","line":120},{"name":"find_most_trusted","line":125},{"name":"should_route_via_node","line":173},{"name":"penalize_node","line":181},{"name":"reward_node","line":192}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","trust","manager","max","nodes","threshold","high","low","score","create","get","node","positive","interactions","negative","relationship","destination","level","verified","array","calculate","trusted","highly","find","most","route","via","penalize","reward"]},{"id":"c808a47fcf8e502278cdcbfedf0524f963649e08c07bcf05d79a5a241915f196","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/quick_sort.t27","health":"ok","module":"TriQuickSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14},{"name":"sort_range","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","quick","range"]},{"id":"c8aeb8ca8c5ab34e88f39bd5a2268344bd3ca24cb1d9822de72e3792b30d7c4e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dense5_decoder.t27","health":"warn","module":"TrinityDense5DecoderT27"}],"description":"","symbols":[{"name":"dense_digit","line":5},{"name":"on_comb","line":12}],"imports":[],"terms":["dmitrii","memory","rtl","dense5","decoder","dense5decoder","dense","digit","comb"]},{"id":"c9f60c228cb3f4b1b2a6fc6e000f87b1e293557106cdf0f003b5d163c5efa5b2","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/stdlib_tb.t27","health":"ok","module":"Stdlib_Testbench"}],"description":"t27/specs/fpga/testbench/stdlib_tb.t27 FPGA Stdlib Testbench Tests IP core catalog, parameter validation, and helper functions","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_IP_CORES","line":11},{"name":"MAX_PARAMS","line":12},{"name":"tick","line":21},{"name":"reset","line":26},{"name":"clog2","line":34},{"name":"max_val","line":45},{"name":"min_val","line":50},{"name":"clamp","line":55}],"imports":[{"name":"fpga::stdlib::Stdlib","line":8}],"terms":["fpga","testbench","stdlib","clk","period","max","cores","params","tick","reset","clog2","val","min","clamp"]},{"id":"ca80b7e37c5cbf63fb0726ef19a8b4455afb4928f06e6aac7abd01cc33c5ddfa","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf256.t27","health":"ok","module":"triformat-gf256"}],"description":"gf256.t27 — GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 32 exponent + 223 mantissa Bit layout: [S(1) E(32) M(223)] = [255:255][254:223][222:0] Maximum precision format for scientific computing and simulation","symbols":[{"name":"SIGN_SHIFT","line":14},{"name":"EXP_SHIFT","line":15},{"name":"MANT_SHIFT","line":16},{"name":"SIGN_BITS","line":18},{"name":"EXP_BITS","line":19},{"name":"MANT_BITS","line":20},{"name":"EXP_MAX","line":22},{"name":"EXP_MIN","line":23},{"name":"BIAS","line":25},{"name":"SPECIAL_EXP","line":26},{"name":"PHI_BIAS","line":28},{"name":"GF256","line":35},{"name":"gf256_zero","line":45},{"name":"gf256_negative_zero","line":51},{"name":"gf256_inf_positive","line":59},{"name":"gf256_inf_negative","line":74},{"name":"gf256_nan","line":82},{"name":"gf256_extract_sign","line":95},{"name":"bit","line":96},{"name":"gf256_extract_exponent","line":103},{"name":"gf256_extract_mantissa","line":125},{"name":"gf256_from_components","line":139},{"name":"sign_bit","line":142},{"name":"gf256_is_zero","line":159},{"name":"gf256_is_special","line":166},{"name":"gf256_is_inf","line":172},{"name":"mant","line":176},{"name":"gf256_is_nan","line":183},{"name":"mant","line":187},{"name":"gf256_encode_f64","line":199},{"name":"sign","line":216},{"name":"abs_value","line":217},{"name":"f64_bits","line":220},{"name":"gf256_decode_f64","line":245},{"name":"sign","line":262},{"name":"exp","line":263},{"name":"mant","line":264},{"name":"mant_f64","line":267},{"name":"bias_adjusted","line":268},{"name":"value","line":274},{"name":"gf256_add","line":283},{"name":"gf256_sub","line":288},{"name":"gf256_mul","line":293},{"name":"gf256_div","line":298},{"name":"fb","line":299},{"name":"fa","line":301},{"name":"gf256_abs","line":312},{"name":"gf256_neg","line":319},{"name":"gf256_is_equal","line":326},{"name":"gf256_is_greater","line":338},{"name":"sign_a","line":342},{"name":"sign_b","line":343},{"name":"neg_a","line":349},{"name":"neg_b","line":350},{"name":"gf256_max","line":364},{"name":"gf256_min","line":369},{"name":"gf256_clamp","line":374}],"imports":[],"terms":["chips","euler","numeric","gf256","triformat","sign","shift","exp","mant","bits","max","min","bias","special","phi","zero","negative","inf","positive","nan","extract","bit","exponent","mantissa","components","encode","f64","abs","decode","adjusted","sub","mul","div","neg","equal","greater","clamp"]},{"id":"cad3992fa6893a5467a5e01b6a63be0fa42916e661d32aa8a25412c627835b7c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/integration_tb.t27","health":"ok","module":"Integration_Testbench"}],"description":"t27/specs/fpga/testbench/integration_tb.t27 Full FPGA Integration Testbench Tests top-level connectivity: MAC + UART + SPI + Memory + Bridge","symbols":[{"name":"CLK_PERIOD","line":8},{"name":"SIM_TIMEOUT","line":9},{"name":"NUM_MODULES","line":10},{"name":"tick","line":25},{"name":"reset","line":30},{"name":"check_all_idle","line":38}],"imports":[],"terms":["fpga","testbench","integration","clk","period","sim","timeout","num","modules","tick","reset","idle"]},{"id":"cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/lite_crypto.t27","health":"ok","module":"LiteCrypto"}],"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","symbols":[{"name":"PSK_SIZE","line":8},{"name":"MD5_BLOCK_SIZE","line":9},{"name":"CHACHA20_STATE_SIZE","line":10},{"name":"md5_process_block","line":16},{"name":"md5_digest","line":25},{"name":"quarter_round","line":32},{"name":"generate_psk","line":61},{"name":"hmac_md5","line":68},{"name":"verify_hmac","line":74}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","lite","crypto","psk","size","md5","block","chacha20","state","process","digest","quarter","round","generate","hmac","verify"]},{"id":"cb61281176bafb99fd47a406941d7f224280dbfc0c0e255c3f0afb9dd6ce3976","sources":[{"repo":"ghashtag/t27","path":"specs/ar/asp_solver.t27","health":"ok","module":null}],"description":"spec: AspSolver Answer Set Programming solver for neuro-symbolic reasoning","symbols":[{"name":"Literal","line":7},{"name":"Clause","line":14},{"name":"Program","line":19},{"name":"AnswerSet","line":25},{"name":"MAX_ASP_STEPS","line":32},{"name":"new_program","line":35},{"name":"add_clause","line":43},{"name":"add_constraint","line":53},{"name":"solve","line":63},{"name":"find_stable_model","line":97},{"name":"extract_all_literals","line":121},{"name":"generate_combinations","line":144},{"name":"literal_in_list","line":167},{"name":"satisfies_clauses","line":177},{"name":"satisfies_constraints","line":187},{"name":"satisfies_clause","line":198},{"name":"literals_match","line":218},{"name":"verify_stability","line":241},{"name":"negate_literal","line":258},{"name":"is_derivable","line":267},{"name":"calculate_cost","line":312},{"name":"naf","line":324}],"imports":[],"terms":["asp","solver","literal","clause","program","answer","set","max","steps","constraint","solve","find","stable","model","extract","literals","generate","combinations","list","satisfies","clauses","constraints","match","verify","stability","negate","derivable","calculate","cost","naf"]},{"id":"cbbd63036b371154deb8f49d58ca101528aa025a599c98e41fce34b9a8716a1b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_account.t27","health":"ok","module":"TriComputeAccount"}],"description":"TRI-NET compute account: the conserved ledger the value layer was missing. tri_compute_settle mints rewards, tri_compute_bond locks collateral, and tri_compute_challenge slashes -- but nothing proved these move value without creating or destroying it. This spec models one node's account as (balance, locked) and pins the CONSERVATION invariants every operation must obey: lock/release keep total unchanged (value only moves between the two","symbols":[{"name":"total","line":15},{"name":"bal_after_lock","line":20},{"name":"locked_after_lock","line":27},{"name":"bal_after_release","line":36},{"name":"bal_after_slash","line":42},{"name":"bal_add_sat","line":50},{"name":"bal_after_settle","line":60},{"name":"total3","line":79},{"name":"pending_after_settle","line":91},{"name":"bal_after_finalize","line":103},{"name":"bal_after_clawback","line":110},{"name":"outstanding_after_escrow","line":126},{"name":"outstanding_after_release","line":137},{"name":"pending_after_release","line":156},{"name":"escrow_consistent","line":172},{"name":"is_final","line":188},{"name":"bal_after_finalize_gated","line":199},{"name":"bal_after_finalize_checked","line":222}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","account","total","bal","lock","locked","release","slash","sat","settle","total3","finalize","clawback","outstanding","escrow","consistent","final","gated","checked"]},{"id":"cc049a7f1fa34722ab6adc574f11e7a39639309b2c9b143230d09c07e2d5ff30","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_deque.t27","health":"warn","module":"TernaryDeque"}],"description":"t27/specs/isa/ternary_deque.t27 Ternary Deque Operations Specification Ring 088 - Double-ended queue operations for ternary data Defines deque with push/pop from both ends","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"DEQUE_MAX_SIZE","line":21},{"name":"deque_init","line":29},{"name":"deque_push_front","line":42},{"name":"deque_push_back","line":64},{"name":"deque_pop_front","line":83},{"name":"deque_pop_back","line":102},{"name":"deque_peek_front","line":122},{"name":"deque_peek_back","line":134},{"name":"deque_is_empty","line":152},{"name":"deque_is_full","line":158},{"name":"deque_size","line":164},{"name":"deque_clear","line":170},{"name":"success","line":286},{"name":"success1","line":334},{"name":"success2","line":335}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","deque","trit","neg","zero","pos","max","size","init","push","front","back","pop","peek","empty","full","clear","success","success1","success2"]},{"id":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/registers.t27","health":"warn","module":"ISARegisters"}],"description":"t27/specs/isa/registers.t27 TRI27 ISA Register File Specification Register definitions, Coptic encoding, and register file operations","symbols":[{"name":"NUM_REGISTERS","line":16},{"name":"REG_WIDTH","line":17},{"name":"COPIC_BASE","line":18},{"name":"AGENT_COUNT","line":21},{"name":"R0","line":24},{"name":"R1","line":25},{"name":"R2","line":26},{"name":"R3","line":27},{"name":"R4","line":28},{"name":"R5","line":29},{"name":"R6","line":30},{"name":"R7","line":31},{"name":"R8","line":32},{"name":"R9","line":33},{"name":"R10","line":34},{"name":"R11","line":35},{"name":"R12","line":36},{"name":"R13","line":37},{"name":"R14","line":38},{"name":"R15","line":39},{"name":"R16","line":40},{"name":"R17","line":41},{"name":"R18","line":42},{"name":"R19","line":43},{"name":"R20","line":44},{"name":"R21","line":45},{"name":"R22","line":46},{"name":"R23","line":47},{"name":"R24","line":48},{"name":"R25","line":49},{"name":"R26","line":50},{"name":"FLAG_ZERO","line":53},{"name":"FLAG_NEG","line":54},{"name":"FLAG_CARRY","line":55},{"name":"FLAG_OVERFLOW","line":56},{"name":"FLAG_TRAP","line":57},{"name":"FLAG_INTERRUPT","line":58},{"name":"COPTIC_ALPHABET","line":66},{"name":"reg_read","line":112},{"name":"reg_write","line":131},{"name":"reg_to_coptic","line":153},{"name":"coptic_to_reg","line":163},{"name":"status_read","line":183},{"name":"status_val","line":184},{"name":"mask","line":185},{"name":"status_write","line":192},{"name":"mask","line":198},{"name":"push_reg","line":217},{"name":"value","line":219},{"name":"pop_reg","line":244},{"name":"value","line":250},{"name":"save_context","line":271},{"name":"restore_context","line":282},{"name":"ARG0","line":295},{"name":"ARG1","line":296},{"name":"ARG2","line":297},{"name":"ARG3","line":298},{"name":"TMP0","line":301},{"name":"TMP1","line":302},{"name":"TMP2","line":303},{"name":"TMP3","line":304},{"name":"TMP4","line":305},{"name":"SAVED0","line":308},{"name":"SAVED1","line":309},{"name":"SAVED2","line":310},{"name":"SAVED3","line":311},{"name":"SAVED4","line":312},{"name":"SAVED5","line":313},{"name":"FP","line":316},{"name":"SP","line":317},{"name":"LR","line":318},{"name":"PC","line":319},{"name":"STATUS","line":320},{"name":"EH","line":321},{"name":"KSP","line":322},{"name":"TP","line":323},{"name":"cp","line":459},{"name":"recovered","line":460},{"name":"cp","line":469},{"name":"val","line":531}],"imports":[{"name":"base::types","line":9}],"terms":["isa","registers","isaregisters","num","reg","width","copic","base","count","r10","r11","r12","r13","r14","r15","r16","r17","r18","r19","r20","r21","r22","r23","r24","r25","r26","flag","zero","neg","carry","overflow","trap","interrupt","coptic","alphabet","read","write","status","val","mask","push","pop","save","restore","arg0","arg1","arg2","arg3","tmp0","tmp1","tmp2","tmp3","tmp4","saved0","saved1","saved2","saved3","saved4","saved5","ksp","recovered"]},{"id":"cc7a1b61f3b8550010956f71b0881712679bed4f2fccf05ce2a534ca95bca2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/codecs.t27","health":"warn","module":"TrinityMemoryCodecs"}],"description":"Native ternary codec algorithms. Source of truth; generated C is disposable. IDs and canonical byte layout match TMEM v1. Input/output buffers must not overlap.","symbols":[{"name":"TM_ERR_CODEC","line":4},{"name":"TM_ERR_CAPACITY","line":5},{"name":"TM_ERR_TRIT","line":6},{"name":"TM_ERR_SPARSITY","line":7},{"name":"TM_ERR_LENGTH","line":8},{"name":"TM_ERR_CODE","line":9},{"name":"TM_ERR_PADDING","line":10},{"name":"TM_ERR_HEADER","line":11},{"name":"TM_ERR_CHECKSUM","line":12},{"name":"TM_ERR_LIMIT","line":13},{"name":"tm_group_size","line":15},{"name":"tm_group_bits","line":24},{"name":"tm_payload_size","line":32},{"name":"tm_pow3","line":43},{"name":"tm_sparse_word","line":50},{"name":"tm_word_trit","line":76},{"name":"tm_word_valid","line":116},{"name":"tm_encode","line":130},{"name":"tm_decode","line":189}],"imports":[],"terms":["dmitrii","memory","codecs","err","codec","capacity","trit","sparsity","length","padding","header","checksum","limit","group","size","bits","payload","pow3","sparse","word","valid","encode","decode"]},{"id":"cc9fa2740f04882be3445251ca491aa662c9fbbf658d0e6bd751b3941f2053f8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/gru_cell.t27","health":"ok","module":"Gru"}],"description":"t27/specs/","symbols":[{"name":"GRUConfig","line":13},{"name":"GRUState","line":18},{"name":"GRUWeights","line":22},{"name":"forward","line":36},{"name":"init","line":41}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","gru","cell","gruconfig","grustate","gruweights","forward","init"]},{"id":"cd5f3f125dd528d1cf0d5c2d7f52f91b692421603aff1288625d3476e63d409f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/red_black_tree.t27","health":"ok","module":"TriRbTree"}],"description":"t27/specs/","symbols":[{"name":"RBTree","line":13},{"name":"RBNode","line":19},{"name":"Color","line":29},{"name":"init","line":38},{"name":"insert","line":43},{"name":"find","line":48},{"name":"delete","line":53}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","red","black","tree","rbtree","rbnode","color","init","insert","find","delete"]},{"id":"cda04dde7b23fa05dc4c38c5e4ee28221218b0fc66d9cf76f7572983572e4815","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/script_tree_sweep.t27","health":"warn","module":"opts"}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","script","tree","sweep","opts"]},{"id":"ce38bc42563751d3420b1df00e7733efe1d350364c12f5d9d6992d38c77ff6d1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline_parallel.t27","health":"ok","module":"TriPipelineParallel"}],"description":"t27/specs/","symbols":[{"name":"JobStatus","line":13},{"name":"DagJob","line":17},{"name":"GroupResult","line":27},{"name":"PipelineDAG","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","parallel","job","status","dag","group"]},{"id":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/hardware_validation.t27","health":"ok","module":"HardwareValidation"}],"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","symbols":[{"name":"VAL_PENDING","line":8},{"name":"VAL_RUNNING","line":9},{"name":"VAL_PASSED","line":10},{"name":"VAL_FAILED","line":11},{"name":"TEST_SIMULATION","line":14},{"name":"TEST_BIT_ACCURATE","line":15},{"name":"TEST_FPGA_BOARD","line":16},{"name":"TEST_REAL_WORLD","line":17},{"name":"create_test_result","line":20},{"name":"extract_state","line":27},{"name":"extract_test_type","line":31},{"name":"extract_errors","line":35},{"name":"extract_iterations","line":39},{"name":"calculate_pass_rate","line":44},{"name":"test_passed","line":52},{"name":"bit_accurate","line":57},{"name":"fpga_board_ready","line":62},{"name":"create_packet_capture","line":68},{"name":"extract_capture_src","line":76},{"name":"extract_capture_dst","line":80},{"name":"extract_capture_payload","line":84},{"name":"extract_capture_timestamp","line":88},{"name":"create_performance_metric","line":93},{"name":"extract_metric_type","line":99},{"name":"extract_metric_value","line":103},{"name":"extract_metric_unit","line":107}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","hardware","validation","val","running","passed","failed","simulation","bit","accurate","fpga","board","real","world","create","extract","state","iterations","calculate","pass","rate","ready","packet","capture","dst","payload","timestamp","performance","metric","unit"]},{"id":"cefcd318b67d95b86926b36f4ea2e786b1e21f2971c3839eb4983eb830e0f70c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/trinity_numeric_surface.t27","health":"ok","module":"trinity-numeric-surface"}],"description":"trinity_numeric_surface.t27 -- Public numeric interchange policy (GoldenFloat-first) NUMERIC-STANDARD-001 -- integer-backed GF raw words are the portable surface","symbols":[{"name":"POLICY_VERSION","line":21},{"name":"GF4_RAW_BITS","line":24},{"name":"GF8_RAW_BITS","line":25},{"name":"GF12_RAW_BITS","line":26},{"name":"GF16_RAW_BITS","line":27},{"name":"GF20_RAW_BITS","line":28},{"name":"GF24_RAW_BITS","line":29},{"name":"GF32_RAW_BITS","line":30},{"name":"PRIMARY_INFERENCE_RAW_BITS","line":33}],"imports":[],"terms":["numeric","surface","policy","gf4","raw","bits","gf8","gf12","gf16","gf20","gf24","gf32","primary","inference"]},{"id":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/traffic_animator.t27","health":"warn","module":"traffic_animator"}],"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"MAX_PATHS","line":8},{"name":"ANIMATION_FPS","line":9},{"name":"MAX_FRAMES","line":10},{"name":"create_anim_packet","line":13},{"name":"get_anim_packet_id","line":20},{"name":"get_anim_packet_source","line":24},{"name":"get_anim_packet_dest","line":28},{"name":"get_anim_packet_progress","line":32},{"name":"update_packet_progress","line":37},{"name":"create_animation_path","line":52},{"name":"get_anim_path_id","line":59},{"name":"get_anim_path_node_count","line":63},{"name":"get_anim_path_current_position","line":67},{"name":"get_anim_path_type","line":71},{"name":"PATH_DIRECT","line":76},{"name":"PATH_MULTIHOP","line":77},{"name":"PATH_BROADCAST","line":78},{"name":"PATH_GATHER","line":79},{"name":"create_animation_frame","line":82},{"name":"get_anim_frame_id","line":89},{"name":"get_anim_frame_timestamp","line":93},{"name":"get_anim_frame_packet_count","line":97},{"name":"get_anim_frame_duration","line":101},{"name":"create_traffic_stats","line":106},{"name":"get_traffic_total_packets","line":113},{"name":"get_traffic_bytes","line":117},{"name":"get_traffic_packets_dropped","line":121},{"name":"get_traffic_avg_latency","line":125},{"name":"create_packet_color","line":130},{"name":"get_packet_color_type","line":137},{"name":"get_packet_color_priority","line":141},{"name":"get_packet_color_size","line":145},{"name":"get_packet_color_code","line":149},{"name":"PACKET_DATA","line":154},{"name":"PACKET_CONTROL","line":155},{"name":"PACKET_BEACON","line":156},{"name":"PACKET_ACK","line":157},{"name":"get_packet_visual_color","line":160},{"name":"create_animation_timeline","line":178},{"name":"get_timeline_current_frame","line":185},{"name":"get_timeline_total_frames","line":189},{"name":"get_timeline_loop_count","line":193},{"name":"get_timeline_speed","line":197},{"name":"advance_animation_frame","line":202},{"name":"create_traffic_pattern","line":220},{"name":"get_pattern_id","line":227},{"name":"get_pattern_burst_size","line":231},{"name":"get_pattern_interval","line":235},{"name":"get_pattern_duration","line":239},{"name":"generate_traffic_burst","line":244},{"name":"calculate_packet_position","line":260},{"name":"update_animation_packets","line":282},{"name":"render_animation_frame","line":316},{"name":"calculate_animation_complexity","line":325},{"name":"optimize_animation_performance","line":333},{"name":"generate_traffic_heat_map","line":345},{"name":"generate_traffic_animation","line":397},{"name":"create_animation_controls","line":425},{"name":"process_animation_control","line":433},{"name":"calculate_animation_stats","line":451}],"imports":[{"name":"base::types","line":5}],"terms":["net","traffic","animator","max","packets","paths","animation","fps","frames","create","anim","packet","get","dest","progress","path","node","count","position","direct","multihop","broadcast","gather","frame","timestamp","duration","stats","total","bytes","dropped","avg","latency","color","priority","size","data","control","beacon","ack","visual","timeline","loop","speed","advance","pattern","burst","interval","generate","calculate","render","complexity","optimize","performance","heat","map","controls","process"]},{"id":"cf13f50e897ce279191f8f4df19554f90e56b39aaaea1db603e10e13639f5b3f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/string.t27","health":"ok","module":"string"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils"]},{"id":"cf2ee111f00f80d51daa5dcfa33e48da78c0f5e8c500ce6844994752f40acc1f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/bellman_ford.t27","health":"ok","module":"TriBellmanFord"}],"description":"t27/specs/","symbols":[{"name":"Edge","line":13},{"name":"shortest_path","line":24}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","bellman","ford","edge","shortest","path"]},{"id":"cf712b02e8c309ee589ce2061041207b64173c510b0d02308e48f07eb5e50d51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/locus_coeruleus_backoff.t27","health":"warn","module":null}],"description":"Locus Coeruleus Backoff Calculator — TTT Dogfood Phase 2 Exponential backoff: delay = min(1000 * 2^fail_count, 60000) Input: t0 = fail_count (attempt number) Output: t0 = delay in milliseconds","symbols":[],"imports":[],"terms":["fpga","tri27","locus","coeruleus","backoff"]},{"id":"d03c705ff7827fe5d47967e7a791119855e77769cfe2c00278baa5c4436d723e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/state.t27","health":"ok","module":"TriState"}],"description":"t27/specs/","symbols":[{"name":"State","line":13},{"name":"pure","line":22},{"name":"get","line":27},{"name":"put","line":32},{"name":"modify","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","state","pure","get","put","modify"]},{"id":"d10dbd0174015ac2a3c91ee97355ff93f5da3231f9925e1b27eac88e0284aa69","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/jones_polynomial.t27","health":"ok","module":"JonesPolynomial"}],"description":"t27/specs/vsa/jones_polynomial.t27 Jones Polynomial -- Link invariant computed from input structure V(L, t) = (-t^(-3/4))^w(L) * where is Kauffman bracket","symbols":[{"name":"CROSSING_POSITIVE","line":14},{"name":"CROSSING_NEGATIVE","line":15},{"name":"writhe","line":23},{"name":"bracket_parameter","line":42},{"name":"BRACKET_UNKNOT","line":48},{"name":"bracket_from_crossings","line":52},{"name":"jones_polynomial_from_structure","line":96},{"name":"jones_polynomial","line":105},{"name":"jones_trefoil","line":111},{"name":"jones_trefoil_at_phi","line":119},{"name":"pow","line":128},{"name":"ln","line":175},{"name":"floor","line":191},{"name":"isnan","line":200},{"name":"isinf","line":205}],"imports":[{"name":"math::constants","line":7}],"terms":["vsa","jones","polynomial","crossing","positive","negative","writhe","bracket","parameter","unknot","crossings","structure","trefoil","phi","pow","floor","isnan","isinf"]},{"id":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/flow_control.t27","health":"ok","module":"flow_control"}],"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"WINDOW_SIZE","line":8},{"name":"CREDIT_THRESHOLD","line":9},{"name":"BACKPRESSURE_THRESHOLD","line":10},{"name":"create_flow_state","line":13},{"name":"get_sender_id","line":20},{"name":"get_receiver_id","line":24},{"name":"get_window_size","line":28},{"name":"get_credits","line":32},{"name":"update_credits","line":37},{"name":"has_credits","line":46},{"name":"consume_credit","line":57},{"name":"add_credits","line":68},{"name":"is_under_backpressure","line":81},{"name":"calculate_backpressure_level","line":95},{"name":"create_flow_message","line":111},{"name":"get_message_type","line":118},{"name":"get_flow_id","line":122},{"name":"get_message_credits","line":126},{"name":"get_sequence","line":130},{"name":"MSG_DATA","line":135},{"name":"MSG_ACK","line":136},{"name":"MSG_CREDIT_UPDATE","line":137},{"name":"MSG_BACKPRESSURE","line":138},{"name":"process_message","line":141},{"name":"send_data","line":156},{"name":"send_ack","line":167},{"name":"find_flow_by_sender","line":178},{"name":"find_flow_by_receiver","line":193},{"name":"is_any_flow_blocked","line":208},{"name":"count_active_flows","line":222},{"name":"calculate_total_credits","line":238},{"name":"apply_backpressure","line":251},{"name":"release_backpressure","line":263}],"imports":[{"name":"base::types","line":5}],"terms":["net","flow","control","max","flows","window","size","credit","threshold","backpressure","create","state","get","sender","receiver","credits","consume","under","calculate","level","sequence","msg","data","ack","process","send","find","blocked","count","active","total","apply","release"]},{"id":"d1c8b70e3fe2176c599433da14052d4628bed850866bb109b217723af830ca5f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/pellis_verify.t27","health":"ok","module":"PellisVerify"}],"description":"t27/specs/numeric/pellis_verify.t27 Pellis Verification Specification Phase 2 of GF Competitive Analysis (issue #289) GMP-backed high-precision verification of Pellis closed form 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"CODATA_ALPHA_INV","line":11},{"name":"PELLIS_PRELIMINARY","line":12},{"name":"VERIFICATION_TOLERANCE","line":13},{"name":"pellis_closed_form","line":16},{"name":"compare_with_codata","line":21}],"imports":[{"name":"base::types","line":9}],"terms":["numeric","pellis","verify","codata","alpha","inv","preliminary","verification","tolerance","closed","form","compare"]},{"id":"d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/power_monitoring.t27","health":"warn","module":"PowerMonitoring"}],"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","symbols":[{"name":"MAX_NODES","line":7},{"name":"BATTERY_FULL","line":8},{"name":"BATTERY_CRITICAL","line":9},{"name":"BATTERY_LOW","line":10},{"name":"POWER_NORMAL","line":11},{"name":"POWER_ECO","line":12},{"name":"POWER_EMERGENCY","line":13},{"name":"create_power_state","line":16},{"name":"get_battery_level","line":23},{"name":"get_power_mode","line":27},{"name":"get_consumption","line":31},{"name":"get_uptime","line":35},{"name":"is_battery_critical","line":40},{"name":"is_battery_low","line":45},{"name":"is_battery_healthy","line":51},{"name":"estimate_remaining_time","line":56},{"name":"update_power_mode","line":68},{"name":"reduce_consumption","line":84},{"name":"drain_battery","line":99},{"name":"get_power_priority","line":114},{"name":"should_sleep","line":127}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","power","monitoring","max","nodes","battery","full","critical","low","normal","eco","emergency","create","state","get","level","mode","consumption","uptime","healthy","estimate","remaining","time","reduce","drain","priority","sleep"]},{"id":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_memory.t27","health":"warn","module":"ISAMemoryOps"}],"description":"t27/specs/isa/ternary_memory.t27 Ternary Memory Specification Ring 089 - Memory operations for ternary architecture Load/store operations with ternary address and data","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"MEM_ADDR_WIDTH","line":21},{"name":"MEM_DATA_WIDTH","line":22},{"name":"MEM_SIZE","line":23},{"name":"WORD_SIZE","line":24},{"name":"ALIGNMENT","line":27},{"name":"PERM_READ","line":30},{"name":"PERM_WRITE","line":31},{"name":"PERM_EXEC","line":32},{"name":"mem_load","line":41},{"name":"mem_store","line":53},{"name":"mem_load_aligned","line":66},{"name":"mem_store_aligned","line":78},{"name":"mem_load_block","line":94},{"name":"mem_store_block","line":117},{"name":"STACK_BASE","line":142},{"name":"mem_push","line":146},{"name":"mem_pop","line":160},{"name":"value","line":162},{"name":"virt_to_phys","line":179},{"name":"phys_addr","line":186},{"name":"mem_check_perm","line":202},{"name":"mem_protect","line":212},{"name":"mem_copy","line":227},{"name":"mem_fill","line":255},{"name":"word_extract_trit","line":276},{"name":"encoded","line":282},{"name":"word_pack_trit","line":295},{"name":"encoded","line":301},{"name":"mask","line":306},{"name":"word","line":486},{"name":"trit","line":487}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","memory","isamemory","ops","trit","neg","zero","pos","mem","addr","width","data","size","word","alignment","perm","read","write","exec","load","store","aligned","block","stack","base","push","pop","virt","phys","protect","copy","fill","extract","encoded","pack","mask"]},{"id":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_orchestrator.t27","health":"ok","module":"network_orchestrator"}],"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_POLICIES","line":8},{"name":"OPTIMIZATION_INTERVAL","line":9},{"name":"COORDINATION_TIMEOUT","line":10},{"name":"create_network_policy","line":13},{"name":"get_policy_id","line":20},{"name":"get_policy_priority","line":24},{"name":"get_policy_scope","line":28},{"name":"get_policy_parameter","line":32},{"name":"SCOPE_NODE","line":37},{"name":"SCOPE_LINK","line":38},{"name":"SCOPE_NETWORK","line":39},{"name":"SCOPE_GLOBAL","line":40},{"name":"create_coordination_state","line":43},{"name":"get_coordinator_id","line":50},{"name":"get_coordination_state","line":54},{"name":"get_coordination_phase","line":58},{"name":"get_coordination_timeout","line":62},{"name":"STATE_IDLE","line":67},{"name":"STATE_INITIATING","line":68},{"name":"STATE_NEGOTIATING","line":69},{"name":"STATE_EXECUTING","line":70},{"name":"STATE_COMPLETED","line":71},{"name":"initiate_coordination","line":74},{"name":"advance_phase","line":80},{"name":"is_coordination_complete","line":102},{"name":"is_coordination_timeout","line":112},{"name":"apply_policy","line":126},{"name":"find_highest_priority_policy","line":146},{"name":"create_optimization_request","line":169},{"name":"get_optimization_request_id","line":176},{"name":"get_optimization_type","line":180},{"name":"get_optimization_target","line":184},{"name":"get_optimization_priority","line":188},{"name":"OPT_LOAD_BALANCE","line":193},{"name":"OPT_ENERGY_EFFICIENCY","line":194},{"name":"OPT_LATENCY_REDUCTION","line":195},{"name":"OPT_BANDWIDTH_MAXIMIZATION","line":196},{"name":"process_optimization","line":199},{"name":"create_network_action","line":218},{"name":"get_action_id","line":225},{"name":"get_action_type","line":229},{"name":"get_action_target","line":233},{"name":"get_action_parameter","line":237},{"name":"ACTION_ROUTE_UPDATE","line":242},{"name":"ACTION_POWER_ADJUST","line":243},{"name":"ACTION_BANDWIDTH_ALLOCATE","line":244},{"name":"ACTION_QOS_SET","line":245},{"name":"execute_action","line":248},{"name":"coordinate_nodes","line":268},{"name":"calculate_optimization_score","line":293},{"name":"detect_optimization_opportunity","line":310},{"name":"generate_optimization_plan","line":325},{"name":"monitor_network_health","line":330}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","orchestrator","max","nodes","policies","optimization","interval","coordination","timeout","create","policy","get","priority","scope","parameter","node","link","global","state","coordinator","phase","idle","initiating","negotiating","executing","completed","initiate","advance","complete","apply","find","highest","request","target","opt","load","balance","energy","efficiency","latency","reduction","bandwidth","maximization","process","action","route","power","adjust","allocate","qos","set","execute","coordinate","calculate","score","detect","opportunity","generate","plan","monitor","health"]},{"id":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/constants.t27","health":"ok","module":"Constants"}],"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing φ² + 1/φ² = 3 | Sacred constants for ternary computing","symbols":[{"name":"PHI","line":16},{"name":"PHI_INV","line":17},{"name":"PHI_SQ","line":18},{"name":"PHI_INV_SQ","line":19},{"name":"TRINITY","line":22},{"name":"PI","line":25},{"name":"E","line":28},{"name":"G_MEASURED","line":36},{"name":"LAMBDA_COSMO","line":40},{"name":"OMEGA_LAMBDA_MEASURED","line":44},{"name":"abs","line":51},{"name":"pow","line":59}],"imports":[],"terms":["fpga","math","constants","phi","inv","measured","lambda","cosmo","omega","abs","pow"]},{"id":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/etx.t27","health":"ok","module":"MeshEtx"}],"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","symbols":[{"name":"OPTIMISTIC","line":9},{"name":"DEAD_EPS","line":10},{"name":"ONE_FP","line":11},{"name":"ALPHA_HALF","line":12},{"name":"alpha_from_window","line":15},{"name":"bool_to_sample","line":24},{"name":"fp_mul","line":33},{"name":"ewma_update","line":41},{"name":"is_dead","line":49},{"name":"calc_etx","line":54}],"imports":[{"name":"base::types","line":6}],"terms":["macos","rings","rust","mesh","etx","optimistic","dead","eps","one","alpha","half","window","sample","mul","ewma","calc"]},{"id":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_graph.t27","health":"warn","module":"TernaryGraph"}],"description":"t27/specs/isa/ternary_graph.t27 Ternary Graph Operations Specification Ring 083 - Graph algorithms on ternary-weighted adjacency 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"MAX_VERTICES","line":10},{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"graph_init","line":16},{"name":"add_edge","line":29},{"name":"add_edge_undirected","line":36},{"name":"edge_weight","line":42},{"name":"degree_out","line":50},{"name":"degree_in","line":61},{"name":"neighbor_count","line":72},{"name":"has_path_2","line":85}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","graph","max","vertices","trit","neg","zero","pos","init","edge","undirected","weight","degree","out","neighbor","count","path"]},{"id":"d418841c0c8387724f6ebc2e4ee6526e56395e8d980402d72bfef753a0319d78","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/lucas_exact_verification.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","lucas","exact","verification"]},{"id":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","sources":[{"repo":"ghashtag/t27","path":"specs/demos/hello_world.t27","health":"ok","module":"hello-world"}],"description":"hello_world.t27 -- start here The smallest spec that still shows every part of the language: constants, a type, functions, a test and an invariant. Read it top to bottom, then watch it become tokens, an AST, and five different target languages.","symbols":[{"name":"GREETING_LEN","line":17},{"name":"TRINITY","line":18},{"name":"TRIT_NEG","line":21},{"name":"TRIT_ZERO","line":22},{"name":"TRIT_POS","line":23},{"name":"Greeting","line":32},{"name":"trit_add","line":46},{"name":"sum","line":47},{"name":"trit_mul","line":59},{"name":"greeting_new","line":64}],"imports":[],"terms":["demos","hello","world","greeting","len","trit","neg","zero","pos","sum","mul"]},{"id":"d44f1183eb869dbd8501b0e8df1b8087414c59770cba19736beec51eb75657d7","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/contrastive_loss.t27","health":"ok","module":"ContrastiveLoss"}],"description":"t27/specs/","symbols":[{"name":"ContrastiveLossConfig","line":13},{"name":"forward","line":22}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","contrastive","config","forward"]},{"id":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_monitoring.t27","health":"ok","module":"HealthMonitoring"}],"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","symbols":[{"name":"MAX_CHECKS","line":7},{"name":"HEALTH_CRITICAL","line":8},{"name":"HEALTH_WARNING","line":9},{"name":"HEALTH_HEALTHY","line":10},{"name":"CHECK_INTERVAL","line":11},{"name":"create_health_check","line":14},{"name":"get_check_type","line":21},{"name":"get_check_result","line":25},{"name":"get_check_value","line":29},{"name":"get_check_timestamp","line":33},{"name":"CHECK_CPU","line":38},{"name":"CHECK_MEMORY","line":39},{"name":"CHECK_DISK","line":40},{"name":"CHECK_NETWORK","line":41},{"name":"CHECK_TEMPERATURE","line":42},{"name":"CHECK_POWER","line":43},{"name":"CHECK_CONNECTIVITY","line":44},{"name":"CHECK_PROCESS","line":45},{"name":"RESULT_PASS","line":48},{"name":"RESULT_WARN","line":49},{"name":"RESULT_FAIL","line":50},{"name":"RESULT_SKIP","line":51},{"name":"create_health_array","line":54},{"name":"get_health_check","line":65},{"name":"update_health_check","line":77},{"name":"calculate_overall_health","line":98},{"name":"count_failed_checks","line":130},{"name":"count_warning_checks","line":144},{"name":"is_check_failing","line":158},{"name":"get_health_percentage","line":169}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","health","monitoring","max","checks","critical","warning","healthy","interval","create","get","timestamp","cpu","memory","disk","network","temperature","power","connectivity","process","pass","warn","fail","skip","array","calculate","overall","count","failed","failing","percentage"]},{"id":"d4947ee53db0368360cef453355ee9b159ca0ba130941231ff774a5e55c0ebfe","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ilv.t27","health":"ok","module":"TriInterleave"}],"description":"TRI-NET block interleaver: spread consecutive datagrams across FEC codewords so a BURST of channel errors (fading drops a run of adjacent datagrams) becomes at most one error per codeword -- which the single-erasure XOR-FEC (tri_fec) can then recover. Without interleaving a burst wipes >=2 datagrams of one codeword and FEC fails; with depth-D interleaving any burst of length <= D is survivable. Layout: a block of D*W datagrams. Codewords are the W-wide ROWS (one FEC group per","symbols":[{"name":"DEPTH_CAP","line":14},{"name":"ilv_tx_pos","line":18},{"name":"ilv_orig","line":24},{"name":"ilv_codeword","line":29},{"name":"choose_depth","line":37},{"name":"depth_survives","line":48}],"imports":[{"name":"base::types","line":12}],"terms":["net","ilv","interleave","depth","cap","pos","orig","codeword","choose","survives"]},{"id":"d4c7953bbee4955efd35ac3ecfaba01b00cc47a2bef3114331d9531e62da4cf3","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/rsa.t27","health":"ok","module":"TriRsa"}],"description":"t27/specs/","symbols":[{"name":"RSAKeyPair","line":13},{"name":"generate","line":25},{"name":"encrypt","line":30},{"name":"decrypt","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","rsa","rsakey","pair","generate","encrypt","decrypt"]},{"id":"d4d622f9fd9fbec6a8d63641fd7c48218d43c41085fb8a71c94a520f5b33c186","sources":[{"repo":"ghashtag/t27","path":"specs/brain/unified_state.t27","health":"ok","module":"brain-unified-state"}],"description":"unified_state.t27 -- Trinity Brain unified state (spec-first) Normative types for Strand VI. Zig/C/Verilog are generated under gen/ via t27c.","symbols":[{"name":"PHI","line":11},{"name":"PHI_INV","line":12},{"name":"PHI_SQ","line":13},{"name":"PHI_INV_SQ","line":14},{"name":"TRINITY","line":15},{"name":"REGION_COUNT","line":16},{"name":"LAYER_COUNT","line":17},{"name":"REGIONS_PER_LAYER","line":18},{"name":"Layer","line":23},{"name":"ArousalLevel","line":25},{"name":"ConsciousnessState","line":27},{"name":"Mood","line":33},{"name":"BrainState","line":39},{"name":"brain_state_init","line":59},{"name":"brain_state_phi_coherence","line":77},{"name":"state","line":85}],"imports":[],"terms":["brain","unified","state","phi","inv","region","count","layer","regions","per","arousal","level","consciousness","mood","init","coherence"]},{"id":"d4fa0ebd205b05782673ea26548a06beacda67169afec7b0fb8d48009fc3f12a","sources":[{"repo":"ghashtag/t27","path":"specs/conformance/e2e_scenarios.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"sim","line":41},{"name":"cat","line":55},{"name":"sits","line":56},{"name":"mat","line":57},{"name":"decoded","line":74},{"name":"sim","line":106},{"name":"sim_apple_0","line":129},{"name":"sim_apple_1","line":130},{"name":"sim_apple_2","line":131},{"name":"prediction","line":162},{"name":"VerdictResult","line":225}],"imports":[],"terms":["conformance","e2e","scenarios","sim","cat","sits","mat","decoded","apple","prediction","verdict"]},{"id":"d4fcc46e20aacaf30831a99d77db524f3a6fbbd23adc179b53017cddadd7cffb","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bigint.t27","health":"ok","module":"BigInt"}],"description":"Module: Balanced Ternary BigInt","symbols":[{"name":"TRIT_NEG","line":17},{"name":"TRIT_ZERO","line":18},{"name":"TRIT_POS","line":19},{"name":"MAX_TRITS","line":22},{"name":"SIMD_CHUNKS","line":25},{"name":"KARATSUBA_THRESHOLD","line":28},{"name":"TVCBigInt","line":37},{"name":"zero","line":50},{"name":"fromI64","line":57},{"name":"toI64","line":67},{"name":"normalize","line":73},{"name":"isZero","line":83},{"name":"isNegative","line":89},{"name":"compareAbs","line":95},{"name":"addScalar","line":106},{"name":"sub","line":112},{"name":"negate","line":118},{"name":"abs","line":124},{"name":"mulSimple","line":135},{"name":"mulKaratsuba","line":142},{"name":"mul","line":148}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10}],"terms":["numeric","bigint","big","int","trit","neg","zero","pos","max","trits","simd","chunks","karatsuba","threshold","tvcbig","i64","normalize","negative","compare","abs","scalar","sub","negate","mul","simple"]},{"id":"d60c1ce501e62dfeaaed0e2458b1c86ed171e5ab7e5f410930d00163e6b110f5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/template.t27","health":"warn","module":"TriTemplate"}],"description":"t27/specs/","symbols":[{"name":"Template","line":13},{"name":"TemplatePart","line":17},{"name":"compile","line":28},{"name":"render","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","template","part","compile","render"]},{"id":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_protocol_stack.t27","health":"ok","module":"MeshProtocolStack"}],"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","symbols":[{"name":"MAX_NODES","line":8},{"name":"MAX_HOPS","line":9},{"name":"NODE_A","line":10},{"name":"NODE_B","line":11},{"name":"NODE_C","line":12},{"name":"build_packet","line":15},{"name":"extract_src","line":21},{"name":"extract_dst","line":25},{"name":"extract_ttl","line":29},{"name":"extract_payload","line":33},{"name":"decrement_ttl","line":38},{"name":"route_packet","line":49},{"name":"tx_path","line":68},{"name":"rx_path","line":73},{"name":"forward_packet","line":79}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","protocol","stack","max","nodes","hops","node","build","packet","extract","dst","ttl","payload","decrement","route","path","forward"]},{"id":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_arithmetic.t27","health":"ok","module":"HybridArithmetic"}],"description":"Module: Hybrid Arithmetic - Packed Storage with Unpacked Computation","symbols":[{"name":"StorageMode","line":20},{"name":"HybridBigInt","line":32},{"name":"Vec32i8","line":47},{"name":"Vec32i16","line":54},{"name":"zero","line":66},{"name":"ensureUnpacked","line":73},{"name":"add","line":83},{"name":"addSimd","line":91},{"name":"sub","line":97},{"name":"mul","line":103},{"name":"dotProduct","line":110},{"name":"pack","line":122},{"name":"unpack","line":130},{"name":"createPacked","line":140},{"name":"createUnpacked","line":146},{"name":"zero_val","line":346},{"name":"zero_val","line":351}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"numeric::gf16","line":11}],"terms":["ternary","hybrid","arithmetic","storage","mode","big","int","vec32i8","vec32i16","zero","ensure","unpacked","simd","sub","mul","dot","product","pack","unpack","create","packed","val"]},{"id":"d67d46cada717f8c91861d127ff6037bd17f72b367713a71c41fa0c81eb29b16","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/apb_bridge_tb.t27","health":"ok","module":"APB_Bridge_Testbench"}],"description":"t27/specs/fpga/testbench/apb_bridge_tb.t27 APB Bridge Testbench Tests APB bus protocol: setup, access, wait states","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"APB_ADDR_WIDTH","line":12},{"name":"APB_DATA_WIDTH","line":13},{"name":"tick","line":29},{"name":"reset","line":34},{"name":"apb_write","line":42},{"name":"apb_read","line":58}],"imports":[{"name":"fpga::apb_bridge::ApbBridge","line":8}],"terms":["fpga","testbench","apb","bridge","clk","period","sim","timeout","addr","width","data","tick","reset","write","read"]},{"id":"d67ef86926024a8b8a1c3ee1188f8aded413c5e3094435a5e9965ab90a718726","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base64.t27","health":"ok","module":"TriBase64"}],"description":"t27/specs/","symbols":[{"name":"Base64","line":13},{"name":"standard","line":23},{"name":"url_safe","line":28},{"name":"encode","line":33},{"name":"decode","line":38},{"name":"encoded_length","line":43},{"name":"decoded_length","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","base64","standard","url","safe","encode","decode","encoded","length","decoded"]},{"id":"d6b165602fa64c9cc3d3828ff8f608e83a326b55345be097866c3e8487a62725","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/maybe.t27","health":"ok","module":"TriMaybe"}],"description":"t27/specs/","symbols":[{"name":"Maybe","line":13},{"name":"pure","line":23},{"name":"bind","line":28},{"name":"map","line":33},{"name":"join","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","maybe","pure","bind","map","join"]},{"id":"d6e3126051f418b8d58ea7b6c5eb552c80f0102041dc075b9863c6a7c6de8bf1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_alert.t27","health":"ok","module":"RtiAlert"}],"description":"tri-net/specs/rti_alert.t27 Partial spec-first flip of src/rti_alert.rs (T27-first). The centroid/velocity math there is f32 (sqrt/powi) and can't be expressed in T27's integer world, but the anomaly-severity -> alert-severity STEP MAPPING is pure integer logic: it is lifted here as the single source of truth so the Rust node can include! the generated function instead of hand-writing the ladder.","symbols":[{"name":"SEV_CATASTROPHIC","line":14},{"name":"SEV_CRITICAL","line":15},{"name":"SEV_URGENT","line":16},{"name":"SEV_WARNING","line":17},{"name":"alert_severity","line":22}],"imports":[{"name":"base::types","line":11}],"terms":["net","rti","alert","sev","catastrophic","critical","urgent","warning","severity"]},{"id":"d73fff6a01de7094ea95fa1b6ca12f3f8dc1c0d5ad4321b82f7c9ae0326351bc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/time.t27","health":"ok","module":"TriTime"}],"description":"t27/specs/","symbols":[{"name":"Instant","line":13},{"name":"Duration","line":18},{"name":"now","line":28},{"name":"since_epoch","line":33},{"name":"add","line":38},{"name":"sub","line":43},{"name":"format","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","time","instant","duration","since","epoch","sub","format"]},{"id":"d7912780dd02240a27684c2a0ef9f950d41cdc8554d1d97d94ceaa5018a85b81","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_runnability_sweep.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","generator","runnability","sweep"]},{"id":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/vsa_core.t27","health":"warn","module":"vsa_core"}],"description":"t27/specs/vsa/vsa_core.t27 VSA (Vector Symbolic Architecture) Core Operations 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q VSA provides high-dimensional vector operations for: - Symbolic reasoning (bind/unbind for role-filler pairs) - Set operations (bundle for superposition)","symbols":[{"name":"DEFAULT_DIM","line":31},{"name":"SIMD_WIDTH","line":34},{"name":"MAX_TRITS","line":37},{"name":"COSINE_THRESHOLD","line":40},{"name":"HAMMING_THRESHOLD","line":43},{"name":"Hypervector","line":50},{"name":"SearchResult","line":53},{"name":"random_vector","line":65},{"name":"trit_val","line":73},{"name":"bind","line":85},{"name":"dim","line":86},{"name":"ai","line":91},{"name":"bi","line":92},{"name":"unbind","line":111},{"name":"bundle2","line":118},{"name":"dim","line":119},{"name":"ai","line":124},{"name":"bi","line":125},{"name":"sum","line":133},{"name":"bundle3","line":147},{"name":"dim","line":148},{"name":"sum","line":153},{"name":"permute","line":166},{"name":"effective_shift","line":171},{"name":"inverse_permute","line":190},{"name":"effective_shift","line":195},{"name":"inverse_shift","line":201},{"name":"cosine_similarity","line":209},{"name":"dim","line":210},{"name":"hamming_distance","line":248},{"name":"len","line":249},{"name":"hamming_similarity","line":273},{"name":"max_len","line":274},{"name":"distance","line":279},{"name":"dot_similarity","line":287},{"name":"dim","line":288},{"name":"vector_norm","line":307},{"name":"bundle_n","line":323},{"name":"count","line":324},{"name":"temp","line":337},{"name":"count_non_zero","line":348},{"name":"encode_sequence","line":363},{"name":"item_vec","line":369},{"name":"shifted","line":371},{"name":"probe_sequence","line":383},{"name":"item_vec","line":385},{"name":"shifted","line":387},{"name":"sim","line":390},{"name":"v1","line":401},{"name":"v2","line":404},{"name":"v1","line":410},{"name":"v2","line":411},{"name":"bound","line":435},{"name":"unbound","line":436},{"name":"result1","line":455},{"name":"result2","line":456},{"name":"result","line":474},{"name":"result","line":487},{"name":"shifted","line":502},{"name":"shifted","line":521},{"name":"restored","line":522},{"name":"sim","line":540},{"name":"sim","line":555},{"name":"sim","line":567},{"name":"dist","line":575},{"name":"dist","line":584},{"name":"dist","line":593},{"name":"sim","line":594},{"name":"sim","line":604},{"name":"v","line":610},{"name":"norm","line":612},{"name":"norm","line":620},{"name":"expected","line":627},{"name":"count","line":629},{"name":"items","line":635},{"name":"encoded","line":637},{"name":"items","line":653},{"name":"encoded","line":654},{"name":"sim","line":657},{"name":"vectors","line":664},{"name":"result","line":668},{"name":"vectors","line":680},{"name":"result1","line":683},{"name":"dims","line":704},{"name":"bound","line":708},{"name":"unbound","line":709},{"name":"v1","line":717},{"name":"v2","line":718},{"name":"result1","line":719},{"name":"result2","line":720},{"name":"v1","line":726},{"name":"v2","line":727},{"name":"result1","line":728},{"name":"result2","line":729},{"name":"v1","line":736},{"name":"v2","line":737},{"name":"v3","line":738},{"name":"result1","line":739},{"name":"result2","line":740},{"name":"v","line":747},{"name":"shifted","line":748},{"name":"shifted_twice","line":749},{"name":"v","line":755},{"name":"shifted","line":756},{"name":"restored","line":757},{"name":"v1","line":763},{"name":"v2","line":764},{"name":"sim1","line":765},{"name":"sim2","line":766},{"name":"v1","line":772},{"name":"v2","line":773},{"name":"sim","line":774},{"name":"v1","line":780},{"name":"v2","line":781},{"name":"dist1","line":782},{"name":"dist2","line":783},{"name":"v1","line":789},{"name":"v2","line":790},{"name":"dist","line":791},{"name":"a","line":798},{"name":"dist","line":800},{"name":"sim","line":801},{"name":"v","line":807},{"name":"norm","line":808},{"name":"v","line":814},{"name":"norm","line":815},{"name":"v","line":821},{"name":"count","line":822},{"name":"v1","line":835},{"name":"v2","line":836},{"name":"result","line":837},{"name":"vectors","line":975},{"name":"items","line":992}],"imports":[],"terms":["vsa","default","dim","simd","width","max","trits","cosine","threshold","hamming","hypervector","search","random","vector","trit","val","bind","unbind","bundle2","sum","bundle3","permute","effective","shift","inverse","similarity","distance","len","dot","norm","bundle","count","temp","non","zero","encode","sequence","item","vec","shifted","probe","sim","bound","unbound","result1","result2","restored","dist","expected","items","encoded","vectors","dims","twice","sim1","sim2","dist1","dist2"]},{"id":"d85ebdc9cc293a4c3e55e4345dd1bf19a956b079c8be620d0f84bc7f976f406b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/handoff.t27","health":"ok","module":"Handoff"}],"description":"t27/specs/","symbols":[{"name":"PlannerOutput","line":13},{"name":"CoderOutput","line":25},{"name":"ReviewerVerdict","line":38},{"name":"TesterReport","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["handoff","planner","coder","reviewer","verdict","tester","report"]},{"id":"d8970c696708b802f279b04ca2bd3dde298c299405b40f452e5b86ea2f556379","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_analysis_tb.t27","health":"warn","module":"PowerAnalysis_Testbench"}],"description":"t27/specs/fpga/testbench/power_analysis_tb.t27 Power Analysis Testbench Tests utilization parsing, power estimation, and budget checking","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"TYPICAL_BUDGET_MW","line":11},{"name":"tick","line":20},{"name":"reset","line":25}],"imports":[{"name":"fpga::power_analysis::PowerAnalysis","line":8}],"terms":["fpga","testbench","power","analysis","clk","period","typical","budget","tick","reset"]},{"id":"d89aed8796be285ae8c792f3fa66984292c9ecd3861585c0dc5fb3c59d0521c7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf20.t27","health":"warn","module":"GF20"}],"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 -- 20-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 6 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF20","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf20","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/git.t27","health":"warn","module":"git_commands"}],"description":"git.t27 -- Git Integration with Tri Skill Workflow (ADR-002) Commands for git operations with skill validation and issue binding","symbols":[{"name":"git_commit","line":11},{"name":"registry_path","line":12},{"name":"registry_content","line":22},{"name":"skill","line":29},{"name":"issue_id","line":38},{"name":"skill_id","line":58},{"name":"status","line":62},{"name":"issue_prefix","line":66},{"name":"add_result","line":83},{"name":"commit_result","line":90},{"name":"commit_hash","line":100},{"name":"updated_registry","line":103},{"name":"git_push","line":132},{"name":"registry_path","line":133},{"name":"registry_content","line":142},{"name":"skill","line":149},{"name":"kind","line":166},{"name":"artifacts","line":167},{"name":"checkpoints","line":171},{"name":"has_spec","line":172},{"name":"has_docs","line":173},{"name":"checkpoints","line":186},{"name":"default_remote","line":197},{"name":"remote_url","line":198},{"name":"push_remote","line":209},{"name":"push_branch","line":210},{"name":"push_result","line":213},{"name":"skill_id","line":225},{"name":"timestamp","line":226},{"name":"updated_registry","line":227},{"name":"git_status_with_skill","line":249},{"name":"registry_path","line":250},{"name":"status","line":253},{"name":"registry_content","line":260},{"name":"skill","line":261},{"name":"find_active_or_sealed_skill","line":298},{"name":"registry","line":299},{"name":"current_branch","line":309},{"name":"find_last_sealed_skill","line":328},{"name":"registry","line":329},{"name":"update_registry_commit","line":348},{"name":"update_registry_push","line":363},{"name":"summarize_status","line":378},{"name":"modified","line":380},{"name":"added","line":381},{"name":"deleted","line":382},{"name":"count_checkpoints","line":406},{"name":"get_current_timestamp","line":411},{"name":"countSubstring","line":417},{"name":"intToStr","line":431},{"name":"digit","line":440},{"name":"len","line":446},{"name":"Skill","line":459},{"name":"SkillRegistry","line":479},{"name":"result","line":540},{"name":"result","line":544},{"name":"result","line":549},{"name":"result","line":553},{"name":"result","line":557}],"imports":[],"terms":["compiler","cli","git","commands","commit","registry","path","content","skill","status","prefix","hash","updated","push","kind","artifacts","checkpoints","docs","default","remote","url","branch","timestamp","find","active","sealed","summarize","modified","added","deleted","count","get","substring","int","str","digit","len"]},{"id":"d8d6207e1dd83b246fde75d97c041fb0bce65ed5fd3f368262dcef664866a13c","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/catalog_coverage_delta.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"checked","line":1033}],"imports":[],"terms":["fpga","numeric","catalog","delta","checked"]},{"id":"d9723ece2b34cc5b5bb189d6d0a852b4668100b9d6c02e15630a971329d2886d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/rmsprop.t27","health":"ok","module":"Rmsprop"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_DECAY","line":13},{"name":"RMSpropConfig","line":19},{"name":"step","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","rmsprop","default","decay","config","step"]},{"id":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sources":[{"repo":"ghashtag/t27","path":"specs/pins/emitter_xdc.t27","health":"warn","module":"EmitterXDC"}],"description":"t27/specs/pins/emitter_xdc.t27 XDC Constraint Emitter from Pins IR Generates nextpnr-compatible XDC from Design/Binding/ClockDef Output format matches t27c fpga-build --minimal exactly","symbols":[{"name":"HEADER_COMMENT","line":12},{"name":"XDCLine","line":14},{"name":"XDCOutput","line":20},{"name":"empty_xdc","line":25},{"name":"add_line","line":32},{"name":"add_empty","line":45},{"name":"emit_pin","line":58},{"name":"emit_clock","line":76},{"name":"emit_header","line":105},{"name":"qmtech_xc7a100t_minimal","line":113},{"name":"arty_a7_minimal","line":135},{"name":"line_count","line":153},{"name":"has_clk_constraint","line":157},{"name":"count_set_property_lines","line":170}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10}],"terms":["pins","emitter","xdc","header","xdcline","xdcoutput","empty","emit","pin","clock","qmtech","xc7a100t","minimal","arty","count","clk","constraint","set","property"]},{"id":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/types.t27","health":"ok","module":"TrinityMemoryTypes"}],"description":"specs/memory/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).","symbols":[{"name":"TMS_LANE_BITS","line":11},{"name":"TMS_LANE_ZERO","line":12},{"name":"TMS_LANE_POS","line":13},{"name":"TMS_LANE_NEG","line":14},{"name":"TMS_LANE_INVALID","line":15},{"name":"TMS_CODEC_BASELINE2","line":18},{"name":"TMS_CODEC_DENSE5","line":19},{"name":"TMS_CODEC_DENSE17","line":20},{"name":"TMS_CODEC_DENSE22","line":21},{"name":"TMS_CODEC_SPARSE41","line":22},{"name":"TMS_CODEC_SPARSE82","line":23},{"name":"TMS_CODEC_COUNT","line":24},{"name":"TMS_BASELINE2_GROUP_TRITS","line":26},{"name":"TMS_BASELINE2_GROUP_BITS","line":27},{"name":"TMS_DENSE5_GROUP_TRITS","line":28},{"name":"TMS_DENSE5_GROUP_BITS","line":29},{"name":"TMS_DENSE17_GROUP_TRITS","line":30},{"name":"TMS_DENSE17_GROUP_BITS","line":31},{"name":"TMS_DENSE22_GROUP_TRITS","line":32},{"name":"TMS_DENSE22_GROUP_BITS","line":33},{"name":"TMS_SPARSE41_GROUP_TRITS","line":34},{"name":"TMS_SPARSE41_GROUP_BITS","line":35},{"name":"TMS_SPARSE41_MAX_NONZERO","line":36},{"name":"TMS_SPARSE82_GROUP_TRITS","line":37},{"name":"TMS_SPARSE82_GROUP_BITS","line":38},{"name":"TMS_SPARSE82_MAX_NONZERO","line":39},{"name":"TMS_DENSE5_CODE_LIMIT","line":43},{"name":"TMS_DENSE5_ZERO_GROUP_CODE","line":44},{"name":"TMS_DENSE5_RESERVED_FIRST","line":45},{"name":"TMS_DENSE5_RESERVED_LAST","line":46},{"name":"TMS_DENSE17_CODE_LIMIT","line":47},{"name":"TMS_DENSE22_CODE_LIMIT","line":48},{"name":"TMS_SPARSE41_CODE_LIMIT","line":49},{"name":"TMS_SPARSE41_RESERVED_FIRST","line":50},{"name":"TMS_SPARSE41_RESERVED_LAST","line":51},{"name":"TMS_SPARSE82_CODE_LIMIT","line":52},{"name":"TMS_SPARSE82_RESERVED_FIRST","line":53},{"name":"TMS_SPARSE82_RESERVED_LAST","line":54},{"name":"TMS_TMEM_MAGIC_0","line":57},{"name":"TMS_TMEM_MAGIC_1","line":58},{"name":"TMS_TMEM_MAGIC_2","line":59},{"name":"TMS_TMEM_MAGIC_3","line":60},{"name":"TMS_TMEM_VERSION","line":61},{"name":"TMS_TMEM_HEADER_BYTES","line":62},{"name":"TMS_TMEM_VERSION_OFFSET","line":63},{"name":"TMS_TMEM_CODEC_OFFSET","line":64},{"name":"TMS_TMEM_RESERVED_OFFSET","line":65},{"name":"TMS_TMEM_RESERVED_BYTES","line":66},{"name":"TMS_TMEM_COUNT_OFFSET","line":67},{"name":"TMS_TMEM_COUNT_BYTES","line":68},{"name":"TMS_TMEM_PAYLOAD_LENGTH_OFFSET","line":69},{"name":"TMS_TMEM_PAYLOAD_LENGTH_BYTES","line":70},{"name":"TMS_TMEM_CRC_OFFSET","line":71},{"name":"TMS_TMEM_CRC_BYTES","line":72},{"name":"TMS_TMEM_CRC_COVERED_HEADER_BYTES","line":73},{"name":"TMS_TMEM_MAX_PAYLOAD_BYTES","line":74},{"name":"TMS_CRC32_POLY","line":77},{"name":"TMS_CRC32_INIT","line":78},{"name":"TMS_CRC32_XOR_OUT","line":79},{"name":"TMS_CRC32_CHECK_VALUE","line":80},{"name":"TMS_OK","line":83},{"name":"TMS_ERR_CODEC","line":84},{"name":"TMS_ERR_CAPACITY","line":85},{"name":"TMS_ERR_TRIT","line":86},{"name":"TMS_ERR_SPARSITY","line":87},{"name":"TMS_ERR_LENGTH","line":88},{"name":"TMS_ERR_CODE","line":89},{"name":"TMS_ERR_PADDING","line":90},{"name":"TMS_ERR_HEADER","line":91},{"name":"TMS_ERR_CHECKSUM","line":92},{"name":"TMS_ERR_LIMIT","line":93},{"name":"Evidence","line":96},{"name":"tms_pow3","line":104},{"name":"tms_group_trits","line":111},{"name":"tms_group_bits","line":121},{"name":"tms_max_nonzero","line":132},{"name":"tms_valid_word_count","line":139},{"name":"tms_lane_valid","line":146},{"name":"tms_lane_trit","line":150},{"name":"tms_word_valid","line":156},{"name":"tms_dense_code5","line":170},{"name":"tms_payload_bytes","line":182},{"name":"tms_crc32_byte","line":191}],"imports":[],"terms":["dmitrii","memory","tms","lane","bits","zero","pos","neg","invalid","codec","baseline2","dense5","dense17","dense22","sparse41","sparse82","count","group","trits","max","nonzero","limit","reserved","tmem","magic","header","bytes","offset","payload","length","crc","covered","crc32","poly","init","xor","out","err","capacity","trit","sparsity","padding","checksum","evidence","pow3","valid","word","dense","code5","byte"]},{"id":"da236765e018e3599eb952aa2e8a298e423c627751cb0cadb11b25e3908198f0","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_json.t27","health":"warn","module":"TrinityMemoryTensorPackJSON"}],"description":"Native TensorPack JSON binding and canonical serialization. Workspace buffers are scratch and may change on errors. All other output is committed only after complete validation. Caller ranges must be valid, nonoverlapping and stable throughout a call; no routine allocates memory.","symbols":[{"name":"TM_TPJ_ERR_SCHEMA","line":6},{"name":"TM_TPJ_ERR_JSON","line":7},{"name":"TMTPJSONWorkspace","line":8},{"name":"TMTPJSONWriter","line":16},{"name":"tm_tpj_text","line":18},{"name":"tm_tpj_members","line":24},{"name":"tm_tpj_field","line":30},{"name":"tm_tpj_unsigned","line":38},{"name":"tm_tpj_codec","line":41},{"name":"tm_tp_bind_json","line":52},{"name":"tm_tp_decode_json","line":147},{"name":"tm_tpj_put","line":170},{"name":"tm_tpj_literal","line":175},{"name":"tm_tpj_string","line":179},{"name":"tm_tpj_u64","line":188},{"name":"tm_tpj_z","line":194},{"name":"tm_tpj_float","line":200},{"name":"tm_tpj_codec_json","line":267},{"name":"tm_tpj_format_f64","line":277},{"name":"tm_tpj_encode_metadata","line":296},{"name":"tm_tp_encode_json","line":334}],"imports":[],"terms":["dmitrii","memory","tensorpack","json","tensor","pack","tpj","err","schema","tmtpjsonworkspace","tmtpjsonwriter","text","members","field","unsigned","codec","bind","decode","put","literal","u64","float","format","f64","encode","metadata"]},{"id":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/int4.t27","health":"ok","module":"Int4"}],"description":"t27/specs/numeric/int4.t27 Int4 - 4-bit signed integer NUMERIC-STANDARD-001 Agent 9 (P1)","symbols":[{"name":"BITS","line":18},{"name":"Int4","line":22},{"name":"encode","line":29},{"name":"clamped","line":30},{"name":"decode","line":40},{"name":"raw","line":41},{"name":"min_value","line":51},{"name":"max_value","line":55},{"name":"range","line":59},{"name":"validate_format","line":65},{"name":"MEMORY_RATIO_VS_FP32","line":79},{"name":"add","line":83},{"name":"val_a","line":84},{"name":"val_b","line":85},{"name":"result","line":86},{"name":"sub","line":90},{"name":"val_a","line":91},{"name":"val_b","line":92},{"name":"result","line":93},{"name":"mul","line":97},{"name":"val_a","line":98},{"name":"val_b","line":99},{"name":"result","line":100},{"name":"neg","line":104},{"name":"abs","line":108},{"name":"val","line":109},{"name":"eq","line":115},{"name":"ne","line":119},{"name":"lt","line":123},{"name":"le","line":127},{"name":"gt","line":131},{"name":"ge","line":135}],"imports":[{"name":"base::testing","line":8},{"name":"base::benchmarking","line":9}],"terms":["chips","euler","fpga","int4","bits","encode","clamped","decode","raw","min","max","range","validate","format","memory","ratio","fp32","val","sub","mul","neg","abs"]},{"id":"da8ea962d62aa8d63087268502fef91c4bae154124d444ba2ac788b41d714f07","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/advantage_estimator.t27","health":"ok","module":"Advantage"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_GAMMA","line":13},{"name":"DEFAULT_LAMBDA","line":14},{"name":"GAEConfig","line":20},{"name":"TrajectoryBatch","line":26},{"name":"compute_td_residual","line":39},{"name":"compute_gae","line":44},{"name":"compute_returns","line":49},{"name":"normalize_advantages","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["advantage","estimator","default","gamma","lambda","gaeconfig","trajectory","batch","compute","residual","gae","returns","normalize","advantages"]},{"id":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/07_tests_invariants_benches.t27","health":"ok","module":"tutorial-07-claims"}],"description":"07 — Tests, invariants and benches Lesson 7, and the reason this language exists rather than a header file. A spec carries its own claims: examples that must hold, properties that must always hold, and the operations worth measuring. All three are emitted into every target, so the same claim is checked in Zig, C and Rust alike.","symbols":[{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"TRINITY","line":14},{"name":"trit_add","line":16},{"name":"sum","line":17},{"name":"high","line":18},{"name":"low","line":19},{"name":"trit_mul","line":23}],"imports":[],"terms":["tutorial","invariants","benches","claims","trit","neg","zero","pos","sum","high","low","mul"]},{"id":"daa2ba876ceb62f26c30617b5807667c1b56553dd520f27395e42e772a05f473","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dropout_layer.t27","health":"ok","module":"Dropout"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_DROP_RATE","line":13},{"name":"DropoutConfig","line":19},{"name":"forward","line":30},{"name":"backward","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","dropout","layer","default","drop","rate","config","forward","backward"]},{"id":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_pool.t27","health":"ok","module":"TriComputePool"}],"description":"TRI-NET multi-executor pool split: share one reward pool across several GF executors in proportion to their VERIFIED work, so a mesh of nodes -- not one -- earns from a round. Mirrors tri_settle's discipline: floor division, so the sum of shares never EXCEEDS the pool (no over-issuance; the floor remainder is simply not minted). A node with zero verified work earns zero. \"Work\" is the summed GoldenFloat width of a node's verified receipts (wider GF op = more work).","symbols":[{"name":"total_work3","line":18},{"name":"pool_share","line":29},{"name":"pool_after_deposit","line":56},{"name":"payout_capped","line":67},{"name":"pool_after_payout","line":76},{"name":"balance_after_pool_settle","line":99}],"imports":[{"name":"base::types","line":9}],"terms":["net","compute","pool","total","work3","share","deposit","payout","capped","balance","settle"]},{"id":"db2809acd89c1cfc6c5240479183aab0a43a056e2e3e157075e8b33e1be480e1","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bootrom_tb.t27","health":"ok","module":"BootROM_Testbench"}],"description":"t27/specs/fpga/testbench/bootrom_tb.t27 Boot ROM Testbench Tests boot sequence, reset vector, and initial program loading","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"ROM_SIZE","line":11},{"name":"RESET_VECTOR","line":12},{"name":"BOOT_MAGIC","line":13},{"name":"tick","line":26},{"name":"reset","line":31},{"name":"read_rom","line":40},{"name":"boot_sequence","line":46}],"imports":[{"name":"fpga::bootrom::BootROM","line":8}],"terms":["fpga","testbench","bootrom","boot","rom","clk","period","size","reset","vector","magic","tick","read","sequence"]},{"id":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_tree.t27","health":"warn","module":"TernaryTree"}],"description":"t27/specs/isa/ternary_tree.t27 Ternary Tree Operations Specification Ring 084 - Tree algorithms on ternary-valued nodes 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"MAX_NODES","line":10},{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"NULL_IDX","line":14},{"name":"tree_init","line":20},{"name":"insert_left","line":32},{"name":"insert_right","line":40},{"name":"tree_depth","line":48},{"name":"node_count","line":65},{"name":"sum_values","line":78},{"name":"is_balanced","line":91}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","tree","max","nodes","trit","neg","zero","pos","null","idx","init","insert","left","right","depth","node","count","sum","values","balanced"]},{"id":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/olsr_routing.t27","health":"ok","module":"OlsrRouting"}],"description":"OLSR-style routing -- ultra-simplified for T27. Neighbor entries are u32-packed [id:8][quality:8][last_seen:16]; the 4-slot neighbor table travels as a [u32; 4] array parameter (read paths) while write paths return the UPDATED ENTRY plus a slot decision, so every function stays scalar-valued and lowers to all backends. (The original wave-era file packed four entries into one u32 with 256-bit masks and","symbols":[{"name":"MAX_NEIGHBORS","line":13},{"name":"VALID_TIMEOUT","line":14},{"name":"NO_NEIGHBOR","line":15},{"name":"NO_SLOT","line":16},{"name":"create_neighbor","line":20},{"name":"get_id","line":26},{"name":"get_quality","line":30},{"name":"get_last_seen","line":34},{"name":"is_valid","line":38},{"name":"get_id_at","line":44},{"name":"find_index","line":48},{"name":"slot_for_update","line":58},{"name":"best_of_two","line":71},{"name":"get_best_neighbor","line":79},{"name":"mask_if_id","line":85},{"name":"get_second_best","line":93},{"name":"select_mprs","line":100},{"name":"one_if_present","line":106},{"name":"count_neighbors","line":114}],"imports":[{"name":"base::types","line":11}],"terms":["net","olsr","routing","max","neighbors","valid","timeout","neighbor","slot","create","get","quality","seen","find","index","best","two","mask","second","select","mprs","one","present","count"]},{"id":"dc13f018898a14b32059c654d1289748e601e47f4b755c31c0e466ce7b73e4dd","sources":[{"repo":"ghashtag/t27","path":"specs/math/pellis_precision_verify.t27","health":"ok","module":"PellisPrecision"}],"description":"t27/specs/math/pellis_precision_verify.t27 Arbitrary precision verification via GMP/MPFR reference NUMERIC-VERIF-001 -- Pre-registered checkpoint for CODATA 2026","symbols":[{"name":"PHI_100DIGITS","line":17},{"name":"PHI_INV_100DIGITS","line":20},{"name":"PELLIS_50DIGITS","line":30},{"name":"ALPHA_INV_CODATA_2022","line":33},{"name":"PELLIS_FIRST_15_DIGITS","line":36},{"name":"PellisPrecisionResult","line":42},{"name":"pellis_pre_registered_checkpoint","line":51},{"name":"phi","line":52},{"name":"phi_sq","line":53},{"name":"phi_cubed","line":54},{"name":"pellis_f64","line":57},{"name":"digit_count","line":60},{"name":"pellis_str","line":63},{"name":"matches","line":64},{"name":"count_significant_digits","line":77},{"name":"s","line":83},{"name":"c","line":89},{"name":"format","line":106},{"name":"len","line":116}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["math","pellis","precision","verify","phi","100digits","inv","50digits","alpha","codata","digits","pre","registered","checkpoint","cubed","f64","digit","count","str","matches","significant","format","len"]},{"id":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/fifo.t27","health":"warn","module":"Fifo"}],"description":"t27/specs/fpga/fifo.t27 Synchronous and Asynchronous FIFO Stdlib for Trinity T27 FPGA HIR Defines FIFO configuration with depth, data width, and flags Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"FifoKind","line":12},{"name":"FifoFlags","line":19},{"name":"FifoConfig","line":28},{"name":"MAX_FIFO_DEPTH","line":42},{"name":"FifoState","line":44},{"name":"sync_fifo","line":53},{"name":"async_fifo","line":67},{"name":"with_almost_empty","line":81},{"name":"with_almost_full","line":88},{"name":"empty_fifo_state","line":95},{"name":"is_sync","line":111},{"name":"is_async","line":115},{"name":"addr_width","line":119},{"name":"total_storage_bits","line":132},{"name":"bram18_count","line":136},{"name":"is_empty","line":145},{"name":"is_full","line":149},{"name":"fill_count","line":153},{"name":"has_space","line":157},{"name":"has_data","line":161},{"name":"push","line":167},{"name":"pop","line":181},{"name":"validate_fifo","line":197}],"imports":[],"terms":["fpga","fifo","kind","flags","config","max","depth","state","sync","async","almost","empty","full","addr","width","total","storage","bits","bram18","count","fill","space","data","push","pop","validate"]},{"id":"dc3bf7efe66fffbb2b55f126469c64d8bdca389026b214f2a741ddeec13b5329","sources":[{"repo":"ghashtag/t27","path":"specs/interop/gf_cross_language.t27","health":"warn","module":"GFCrossLanguageConformance"}],"description":"GoldenFloat Cross-Language Conformance All languages must produce identical bits for identical inputs. Reference constant: GF32(phi) = 0x3FCF1BBD","symbols":[{"name":"phi","line":13},{"name":"gf32_bits","line":14},{"name":"expected","line":16},{"name":"phi","line":22},{"name":"gf16_phi","line":23},{"name":"gf32_phi","line":24},{"name":"test_vals","line":33},{"name":"encoded","line":35},{"name":"decoded","line":36},{"name":"zero","line":43},{"name":"inf","line":44},{"name":"nan","line":45},{"name":"a","line":54},{"name":"b","line":55},{"name":"sum","line":56},{"name":"result","line":57},{"name":"zero_enc","line":64},{"name":"zero_dec","line":65},{"name":"phi_gf16","line":72},{"name":"phi_gf32","line":73},{"name":"mant16","line":76},{"name":"mant32","line":77},{"name":"zero_enc","line":86},{"name":"zero_dec","line":87},{"name":"zero_ok","line":88},{"name":"neg_zero_enc","line":91},{"name":"neg_zero_dec","line":92},{"name":"neg_zero_ok","line":93}],"imports":[{"name":"math::constants","line":7}],"terms":["interop","cross","language","gfcross","conformance","phi","gf32","bits","expected","gf16","vals","encoded","decoded","zero","inf","nan","sum","enc","dec","mant16","mant32","neg"]},{"id":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/compression_engine.t27","health":"warn","module":"compression_engine"}],"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","symbols":[{"name":"MAX_BLOCKS","line":7},{"name":"BLOCK_SIZE","line":8},{"name":"COMPRESSION_THRESHOLD","line":9},{"name":"DICTIONARY_SIZE","line":10},{"name":"create_block_info","line":13},{"name":"get_original_size","line":20},{"name":"get_compressed_size","line":24},{"name":"get_compression_method","line":28},{"name":"get_compression_quality","line":32},{"name":"METHOD_NONE","line":37},{"name":"METHOD_RLE","line":38},{"name":"METHOD_DICTIONARY","line":39},{"name":"METHOD_DELTA","line":40},{"name":"calculate_compression_ratio","line":43},{"name":"compress_rle","line":52},{"name":"decompress_rle","line":82},{"name":"compress_dictionary","line":103},{"name":"decompress_dictionary","line":138},{"name":"compress_delta","line":147},{"name":"decompress_delta","line":168},{"name":"choose_compression_method","line":199},{"name":"compress_block","line":229},{"name":"decompress_block","line":255},{"name":"calculate_total_savings","line":268},{"name":"update_dictionary","line":287},{"name":"find_pattern","line":297},{"name":"calculate_compression_speed","line":313}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","compression","engine","max","blocks","block","size","threshold","dictionary","create","info","get","original","compressed","method","quality","rle","delta","calculate","ratio","compress","decompress","choose","total","savings","find","pattern","speed"]},{"id":"dc6727df8992728892c54c01d04247fecb9651a348f87f1da7b2a4074a43e14a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/segment_tree.t27","health":"ok","module":"TriSegmentTree"}],"description":"t27/specs/","symbols":[{"name":"SegmentTree","line":13},{"name":"init","line":24},{"name":"query","line":29},{"name":"update","line":34},{"name":"deinit","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","segment","tree","init","query","deinit"]},{"id":"ddc85831a627462ba15d3ffa3a037d32cecca2135e254541c38c90c26d06f309","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_reproducibility.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","generator","reproducibility"]},{"id":"de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_tests.t27","health":"ok","module":"MeshIntegrationTests"}],"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","symbols":[{"name":"VERSION","line":10},{"name":"KIND_DATA","line":11},{"name":"header_byte","line":13},{"name":"MESH_NET_A","line":28},{"name":"MESH_NET_B","line":29},{"name":"MESH_NET_C","line":30},{"name":"mesh_ip","line":32},{"name":"ST_IDLE","line":38},{"name":"ST_TX_WAIT","line":39}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","integration","kind","data","header","byte","net","idle","wait"]},{"id":"de753fa421b4280246abdc40b8201a89945982050f86029f11c736f77664c2a1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_call_signaling.t27","health":"ok","module":"MeshCallSignaling"}],"description":"Signed local call invitation policy. UDP sockets, JSON encoding, and UI prompts are adapter responsibilities. phi^2 + phi^-2 = 3","symbols":[{"name":"INVITE_VERSION","line":8},{"name":"MEDIA_PORT","line":9},{"name":"SIGNALING_PORT","line":10},{"name":"INVITE_TTL_SECONDS","line":11},{"name":"invite_is_fresh","line":13},{"name":"invite_may_ring","line":20}],"imports":[{"name":"base::types","line":6}],"terms":["net","mesh","call","signaling","invite","media","port","ttl","seconds","fresh","may","ring"]},{"id":"deb1cd9e3671ec4cc9e01582e8fe43a149e9e32b7c6fc2ac6f5e2c35df3ebfe0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_parser.t27","health":"ok","module":"WorkflowParser"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","workflow","parser"]},{"id":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/purkinje_thermal_gate.t27","health":"ok","module":"purkinje-thermal-gate"}],"description":"purkinje_thermal_gate.t27 — Purkinje Thermal Gate Thermally-gated activation inspired by Purkinje neural dynamics","symbols":[{"name":"PTG_OPCODE","line":12},{"name":"TEMP_MIN_C","line":14},{"name":"TEMP_MAX_C","line":15},{"name":"TEMP_NOMINAL_C","line":16},{"name":"TEMP_THRESHOLD_LOW_C","line":18},{"name":"TEMP_THRESHOLD_HIGH_C","line":19},{"name":"TEMP_CRITICAL_C","line":20},{"name":"TEMP_HYSTERESIS_C","line":22},{"name":"TEMP_SETTLING_MS","line":23},{"name":"GATE_STATE_CLOSED","line":25},{"name":"GATE_STATE_OPEN","line":26},{"name":"GATE_STATE_THROTTLING","line":27},{"name":"GATE_STATE_ERROR","line":28},{"name":"THROTTLE_LEVEL_NONE","line":30},{"name":"THROTTLE_LEVEL_LOW","line":31},{"name":"THROTTLE_LEVEL_MED","line":32},{"name":"THROTTLE_LEVEL_HIGH","line":33},{"name":"THROTTLE_LEVEL_MAX","line":34},{"name":"GateState","line":40},{"name":"ThrottleLevel","line":47},{"name":"ThermalState","line":54},{"name":"GateConfig","line":61},{"name":"GateStatus","line":69},{"name":"ptg_config_init","line":83},{"name":"ptg_config_strict","line":95},{"name":"ptg_config_permissive","line":107},{"name":"ptg_config_manual","line":119},{"name":"ptg_temp_valid","line":135},{"name":"ptg_temp_critical","line":141},{"name":"ptg_temp_high","line":147},{"name":"ptg_temp_low","line":153},{"name":"ptg_temp_in_hysteresis","line":159},{"name":"ptg_thermal_state_init","line":173},{"name":"ptg_gate_state_from_temp","line":184},{"name":"ptg_throttle_from_temp","line":200},{"name":"ptg_thermal_state_update","line":216},{"name":"ptg_gate_status_init","line":240},{"name":"ptg_gate_status_open","line":252},{"name":"ptg_gate_status_close","line":264},{"name":"ptg_gate_status_throttle","line":276},{"name":"ptg_gate_status_error","line":288},{"name":"ptg_gate_status_update_temp","line":300},{"name":"ptg_gate_status_increment_cycle","line":312},{"name":"encode_ptg_cmd","line":328},{"name":"op_field","line":330},{"name":"temp_field","line":331},{"name":"thresh_field","line":332},{"name":"decode_ptg_cmd","line":338},{"name":"opcode","line":339},{"name":"temp_u8","line":340},{"name":"temp_c","line":341},{"name":"threshold","line":342}],"imports":[],"terms":["chips","euler","fpga","purkinje","thermal","gate","ptg","opcode","temp","min","max","nominal","threshold","low","high","critical","hysteresis","settling","state","closed","open","throttling","throttle","level","med","config","status","init","strict","permissive","manual","valid","close","increment","cycle","encode","cmd","field","thresh","decode"]},{"id":"df15f1fbd549cad6bc01b0599d4765ea3d8be69eb2759ef112ca8c94c101168d","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/experience_save.t27","health":"ok","module":"ExperienceSave"}],"description":"t27/specs/pipeline/experience_save.t27 Experience Save Command Specification Ring 028 — tri experience save CLI command 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"VERDICT_PASS","line":10},{"name":"VERDICT_FAIL","line":11},{"name":"VERDICT_SKIP","line":12},{"name":"MAX_SKILL_NAME","line":13},{"name":"MAX_NOTES","line":14},{"name":"ExperienceRecord","line":17},{"name":"save_experience","line":26},{"name":"is_pass","line":37},{"name":"is_fail","line":42},{"name":"verdict_to_code","line":47},{"name":"compare_with_previous","line":52}],"imports":[{"name":"base::types","line":8}],"terms":["pipeline","experience","save","verdict","pass","fail","skip","max","skill","notes","record","compare","previous"]},{"id":"df74b541158c71d5463152e377813a5491def4207dbffe97f6fd78b23cf6d4d9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/corpus_wide_pack_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","corpus","wide","pack","audit"]},{"id":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","sources":[{"repo":"ghashtag/t27","path":"specs/file/schema.t27","health":"ok","module":"File"}],"description":"specs/file/schema.t27 File Types Specification","symbols":[{"name":"FileType","line":13},{"name":"FileStatus","line":24},{"name":"ContentType","line":35},{"name":"WatchEventType","line":46},{"name":"FileError","line":57},{"name":"FileInfo","line":74},{"name":"FileContent","line":89},{"name":"FileNode","line":103},{"name":"FileChange","line":117},{"name":"IgnorePattern","line":129},{"name":"IgnoreRules","line":135},{"name":"SearchMatch","line":145},{"name":"SearchOptions","line":154},{"name":"WatchEvent","line":168},{"name":"WatcherHandle","line":175},{"name":"Submatch","line":186},{"name":"RipgrepMatch","line":193},{"name":"RipgrepOptions","line":201},{"name":"MAX_FILE_SIZE","line":213},{"name":"MAX_SEARCH_RESULTS","line":214},{"name":"DEFAULT_READ_CHUNK","line":215},{"name":"is_text","line":222},{"name":"is_binary","line":227},{"name":"is_image","line":232},{"name":"is_hidden","line":237},{"name":"get_extension","line":248}],"imports":[{"name":"base::types","line":6}],"terms":["schema","status","content","watch","event","info","node","ignore","pattern","rules","search","match","options","watcher","handle","submatch","ripgrep","max","size","results","default","read","chunk","text","binary","image","hidden","get","extension"]},{"id":"e076ebecb0f5d0097aac6a9c888cd9736f3f4bede8b20f99eb114245a91c57be","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_control_flow.t27","health":"ok","module":"TernaryControlFlow"}],"description":"t27/specs/isa/ternary_control_flow.t27 Ternary Control Flow Specification Ring 090 - Control flow operations for ternary architecture Conditional jumps, branches, and call/return","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"COND_EQ","line":21},{"name":"COND_NE","line":22},{"name":"COND_POS","line":23},{"name":"COND_NEG","line":24},{"name":"COND_NZ","line":25},{"name":"COND_NC","line":26},{"name":"PRED_TAKEN","line":29},{"name":"PRED_NOT_TAKEN","line":30},{"name":"PRED_NONE","line":31},{"name":"pc_read","line":39},{"name":"pc_write","line":46},{"name":"pc_relative","line":52},{"name":"current_pc","line":53},{"name":"branch_cond","line":64},{"name":"branch_if","line":91},{"name":"branch_if_not","line":97},{"name":"jump","line":107},{"name":"jump_relative","line":113},{"name":"jump_link","line":119},{"name":"jump_link_relative","line":126},{"name":"ret","line":137},{"name":"call","line":147},{"name":"return_addr","line":148},{"name":"ret_pop","line":168},{"name":"return_addr","line":173},{"name":"compare","line":188},{"name":"compare_and_branch","line":200},{"name":"result","line":201},{"name":"table_branch","line":211}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","control","flow","trit","neg","zero","pos","cond","pred","taken","read","write","relative","branch","jump","link","ret","call","addr","pop","compare","table"]},{"id":"e090c900774d21e520cd15746d7d2a06e1de22889cfe40677f68c9673e667622","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/cache_w/tiny_lfu.t27","health":"warn","module":null}],"description":"W-TinyLFU Cache — TTT Dogfood Phase 3 Window-TinyLFU admission Test case: cache_w_tiny_lfu","symbols":[],"imports":[],"terms":["fpga","tri27","cache","tiny","lfu"]},{"id":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/pipeline.t27","health":"ok","module":"Pipeline"}],"description":"","symbols":[{"name":"PipelineStage","line":11},{"name":"PipelineConfig","line":20},{"name":"PipelineResult","line":28},{"name":"default_pipeline_config","line":42},{"name":"pipeline_result_ok","line":52},{"name":"pipeline_result_fail","line":68},{"name":"stage_name","line":84},{"name":"is_full_pipeline","line":94},{"name":"total_optimizations","line":98}],"imports":[{"name":"compiler::lexer","line":3},{"name":"compiler::parser","line":4},{"name":"compiler::typechecker","line":5},{"name":"compiler::optimizer","line":6},{"name":"compiler::stdlib","line":7},{"name":"compiler::diagnostics","line":8},{"name":"compiler::linker","line":9}],"terms":["compiler","pipeline","stage","config","default","fail","full","total","optimizations"]},{"id":"e13491c6f9a89c309ce349dca7883a7eac0186b19b00d8d09b3dc0016d7bfadb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/layout_b_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","layout","audit"]},{"id":"e17f70b30cb2c25218feea80bfbbe599006cc6fdbd524a579b5fc5d1ef3cbe15","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/fenwick_tree.t27","health":"ok","module":"TriFenwick"}],"description":"t27/specs/","symbols":[{"name":"FenwickTree","line":13},{"name":"init","line":24},{"name":"build","line":29},{"name":"query","line":34},{"name":"range_query","line":39},{"name":"update","line":44},{"name":"deinit","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","fenwick","tree","init","build","query","range","deinit"]},{"id":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/goldenfloat_family.t27","health":"warn","module":"GoldenFloatFamily"}],"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family — φ-structured floating point formats NUMERIC-STANDARD-001 — Agent 1 (P0)","symbols":[{"name":"GoldenFloatFormat","line":14},{"name":"PHI_RATIO_TARGET","line":31},{"name":"GOLDEN_FLOAT_FAMILY","line":34},{"name":"get_format_by_name","line":112},{"name":"get_format_by_bits","line":121},{"name":"get_primary_format","line":130},{"name":"VerificationReport","line":138},{"name":"verify_golden_family","line":147},{"name":"avg_dist","line":168},{"name":"max_value","line":184},{"name":"mant_max","line":186},{"name":"exp_max","line":187},{"name":"min_positive","line":191},{"name":"mant_min","line":193},{"name":"bias","line":194},{"name":"memory_efficiency","line":198}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["fpga","numeric","goldenfloat","family","golden","float","format","phi","ratio","target","get","bits","primary","verification","report","verify","avg","dist","max","mant","exp","min","positive","bias","memory","efficiency"]},{"id":"e1c387ee2e54fabfdcb363337c56c608d48108946f4b089c91a232e9fa8d0f76","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/https_enforce.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-012: HTTPS Enforcement","symbols":[{"name":"HTTPS_REDIRECT_STATUS","line":21},{"name":"HTTPS_SCHEME","line":22},{"name":"HTTP_SCHEME","line":23},{"name":"LOCAL_HOSTNAMES","line":24},{"name":"RequestContext","line":30},{"name":"should_redirect","line":51},{"name":"redirect_url","line":72},{"name":"is_local_hostname","line":98},{"name":"enforce","line":116},{"name":"make_ctx","line":126}],"imports":[],"terms":["sandbox","https","enforce","redirect","status","scheme","http","local","hostnames","request","url","hostname","make","ctx"]},{"id":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_hash.t27","health":"warn","module":"TernaryHashTable"}],"description":"t27/specs/isa/ternary_hash.t27 Ternary Hash Table Operations Specification Ring 087 - Hash table with ternary keys 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TABLE_SIZE","line":10},{"name":"EMPTY_KEY","line":11},{"name":"TRIT_NEG","line":12},{"name":"TRIT_ZERO","line":13},{"name":"TRIT_POS","line":14},{"name":"hash_trit","line":17},{"name":"hash_init","line":23},{"name":"hash_insert","line":33},{"name":"hash_lookup","line":49},{"name":"hash_remove","line":69},{"name":"hash_load","line":86}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","hash","table","size","empty","key","trit","neg","zero","pos","init","insert","lookup","remove","load"]},{"id":"e23ef09c0f4e88517e32c8c48d183468cb808d9676f2311a4a229e0f43895505","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/spec_exit.t27","health":"ok","module":"sacred-spec_exit"}],"description":"spec_exit.t27 — Sacred Opcode 0xEB: Speculative Exit Hardware for speculative exit and recovery","symbols":[{"name":"OP_SPEC_EXIT","line":12},{"name":"MAX_NESTING_DEPTH","line":14},{"name":"EXIT_REASON_BITS","line":15},{"name":"EXIT_SUCCESS","line":17},{"name":"EXIT_SPEC_FAIL","line":18},{"name":"EXIT_TIMEOUT","line":19},{"name":"EXIT_EXCEPTION","line":20},{"name":"EXIT_RESOURCE","line":21},{"name":"EXIT_ABORT","line":22},{"name":"EXIT_RECOVER","line":23},{"name":"EXIT_MAX","line":24},{"name":"STATE_RUNNING","line":26},{"name":"STATE_SPECULATING","line":27},{"name":"STATE_EXITING","line":28},{"name":"STATE_EXITED","line":29},{"name":"STATE_RECOVERING","line":30},{"name":"STATE_ERROR","line":31},{"name":"ExitReason","line":37},{"name":"SpecState","line":47},{"name":"SpecExit","line":56},{"name":"SpecContext","line":63},{"name":"SpecConfig","line":70},{"name":"spec_state_is_running","line":83},{"name":"spec_state_is_speculating","line":89},{"name":"spec_state_is_exiting","line":95},{"name":"spec_state_is_exited","line":101},{"name":"spec_state_is_recovering","line":107},{"name":"spec_state_is_terminal","line":113},{"name":"spec_state_can_speculate","line":119},{"name":"spec_exit_success","line":129},{"name":"spec_exit_fail","line":140},{"name":"spec_exit_timeout","line":151},{"name":"spec_exit_exception","line":157},{"name":"spec_exit_resource","line":163},{"name":"spec_exit_abort","line":169},{"name":"spec_exit_recover","line":180},{"name":"spec_context_init","line":195},{"name":"spec_context_enter_speculation","line":206},{"name":"spec_context_exit","line":224},{"name":"spec_context_complete","line":245},{"name":"spec_context_check_timeout","line":256},{"name":"encode_spec_exit","line":269},{"name":"op","line":271},{"name":"reason_field","line":272},{"name":"depth_field","line":273},{"name":"checkpoint_field","line":274},{"name":"decode_spec_exit","line":280},{"name":"reason","line":281},{"name":"depth","line":282},{"name":"checkpoint","line":283}],"imports":[],"terms":["chips","euler","fpga","exit","sacred","max","nesting","depth","reason","bits","success","fail","timeout","exception","resource","abort","recover","state","running","speculating","exiting","exited","recovering","config","terminal","speculate","init","enter","speculation","complete","encode","field","checkpoint","decode"]},{"id":"e24ed494c1f78c01bbbd69a338432166ca36a1271b1d5c6c8a25a9946786da76","sources":[{"repo":"ghashtag/t27","path":"specs/ar/proof_trace.t27","health":"ok","module":null}],"description":"spec: ProofTrace Bounded proof trace mechanism for explainable neuro-symbolic reasoning","symbols":[{"name":"MAX_STEPS","line":10},{"name":"ProofStep","line":13},{"name":"ProofTrace","line":22},{"name":"new_proof_trace","line":30},{"name":"add_step","line":40},{"name":"verify_trace","line":59},{"name":"trace_length","line":81},{"name":"is_at_capacity","line":86},{"name":"finalize_trace","line":91},{"name":"format_trace","line":101},{"name":"trit_to_string","line":121}],"imports":[],"terms":["proof","trace","max","steps","step","verify","length","capacity","finalize","format","trit"]},{"id":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/clock_domain_tb.t27","health":"ok","module":"ClockDomain_Testbench"}],"description":"t27/specs/fpga/testbench/clock_domain_tb.t27 Clock Domain Crossing Testbench Tests CDC synchronizers, handshake, and metastability protection","symbols":[{"name":"CLK_PERIOD_FAST","line":10},{"name":"CLK_PERIOD_SLOW","line":11},{"name":"SIM_TIMEOUT","line":12},{"name":"SYNC_STAGES","line":13},{"name":"tick_fast","line":27},{"name":"tick_slow","line":32},{"name":"reset","line":37},{"name":"send_async","line":46},{"name":"receive_async","line":54}],"imports":[{"name":"fpga::clock_domain::ClockDomain","line":8}],"terms":["fpga","testbench","clock","domain","clk","period","fast","slow","sim","timeout","sync","stages","tick","reset","send","async","receive"]},{"id":"e2987f7b0551651563d7d0730f8feaf2f319a6aa968fa44831048b3ccbcd9615","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_pattern_matching.t27","health":"warn","module":"TernaryPatternMatching"}],"description":"t27/specs/isa/ternary_pattern_matching.t27 Ternary Pattern Matching Operations Specification Ring 082 - Pattern matching algorithms for ternary sequences 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TRIT_NEG","line":10},{"name":"TRIT_ZERO","line":11},{"name":"TRIT_POS","line":12},{"name":"match_exact","line":15},{"name":"match_count","line":36},{"name":"match_wildcard","line":60},{"name":"hamming_distance","line":81},{"name":"longest_common_prefix","line":96}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","pattern","matching","trit","neg","zero","pos","match","exact","count","wildcard","hamming","distance","longest","common","prefix"]},{"id":"e31e00a07700fe2458b2945fbd2925081653e4ac6d8c73b76b78b2b2d42c3ddf","sources":[{"repo":"ghashtag/t27","path":"specs/file/watcher.t27","health":"warn","module":"FileWatcher"}],"description":"specs/file/watcher.t27 File Watcher Operations","symbols":[{"name":"WatcherID","line":14},{"name":"create","line":21},{"name":"watch","line":26},{"name":"unwatch","line":31},{"name":"close","line":36},{"name":"is_active","line":41},{"name":"get_watched_paths","line":46},{"name":"next","line":55},{"name":"poll","line":60},{"name":"wait","line":65},{"name":"WatchFilter","line":74},{"name":"set_filter","line":83},{"name":"get_filter","line":88},{"name":"matches_filter","line":93},{"name":"WatcherBackend","line":102},{"name":"get_backend","line":110},{"name":"backend_available","line":115},{"name":"DebounceMode","line":124},{"name":"set_debounce","line":131},{"name":"get_debounce","line":136},{"name":"watch_batch","line":145},{"name":"unwatch_batch","line":150},{"name":"WatcherStats","line":159},{"name":"get_stats","line":168},{"name":"reset_stats","line":173}],"imports":[{"name":"base::types","line":6},{"name":"file::schema","line":7}],"terms":["watcher","create","watch","unwatch","close","active","get","watched","paths","poll","wait","filter","set","matches","backend","available","debounce","mode","batch","stats","reset"]},{"id":"e33a9a975d53992d50f84f2c40632787a6eaa0c27c6abcb2478e91429a6a1624","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd_momentum.t27","health":"ok","module":"SgdMomentum"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_MOMENTUM","line":13},{"name":"SGDMomentumConfig","line":19},{"name":"step","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","sgd","momentum","default","sgdmomentum","config","step"]},{"id":"e364713ec7248b7d936c3ab6e5b1b38be1322645d4c2b6c6c3433ff81d9644c9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/math.t27","health":"ok","module":"TriMath"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math"]},{"id":"e3997228a0ea792965b7825f7b685c27f972c5140c8d2a5ce3f434e27a9de5bf","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/stoch_round.t27","health":"warn","module":"sacred-stoch_round"}],"description":"stoch_round.t27 — Sacred Opcode 0xE9: Stochastic Rounding Hardware stochastic rounding for quantization","symbols":[{"name":"OP_STOCH_ROUND","line":12},{"name":"RANDOM_BITS","line":14},{"name":"ROUND_MODE_NEAREST","line":15},{"name":"ROUND_MODE_STOCHASTIC","line":16},{"name":"ROUND_MODE_TRUNCATE","line":17},{"name":"ROUND_MODE_CEIL","line":18},{"name":"INT4_BITS","line":20},{"name":"INT8_BITS","line":21},{"name":"INT4_MAX","line":23},{"name":"INT4_MIN","line":24},{"name":"INT8_MAX","line":25},{"name":"INT8_MIN","line":26},{"name":"RoundConfig","line":32},{"name":"RoundResult","line":38},{"name":"RngState","line":45},{"name":"rng_init","line":55},{"name":"rng_next","line":61},{"name":"rng_next_range","line":71},{"name":"next_result","line":72},{"name":"scaled","line":73},{"name":"round_nearest","line":83},{"name":"shift","line":84},{"name":"abs_val","line":88},{"name":"rounding","line":89},{"name":"max_val","line":97},{"name":"min_val","line":98},{"name":"round_stochastic","line":118},{"name":"shift","line":119},{"name":"abs_val","line":127},{"name":"integer_part","line":128},{"name":"fractional_part","line":129},{"name":"max_frac","line":132},{"name":"frac_scaled","line":133},{"name":"threshold","line":134},{"name":"rng_result","line":136},{"name":"rand_val","line":137},{"name":"max_val","line":148},{"name":"min_val","line":149},{"name":"round_truncate","line":164},{"name":"shift","line":165},{"name":"max_val","line":176},{"name":"min_val","line":177},{"name":"round_ceil","line":197},{"name":"shift","line":198},{"name":"abs_val","line":202},{"name":"frac_part","line":203},{"name":"max_val","line":215},{"name":"min_val","line":216},{"name":"round_with_config","line":240},{"name":"round_vector_nearest","line":266},{"name":"round_vector_stochastic","line":276},{"name":"round_result","line":281},{"name":"encode_stoch_round","line":295},{"name":"op","line":297},{"name":"mode_field","line":298},{"name":"bits_field","line":299},{"name":"seed_field","line":300},{"name":"decode_stoch_round","line":306},{"name":"mode","line":307},{"name":"target_bits","line":308},{"name":"seed","line":309}],"imports":[],"terms":["chips","euler","fpga","stoch","round","sacred","random","bits","mode","nearest","stochastic","truncate","ceil","int4","int8","max","min","config","rng","state","init","range","scaled","shift","abs","val","rounding","integer","part","fractional","frac","threshold","rand","vector","encode","field","seed","decode","target"]},{"id":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sources":[{"repo":"ghashtag/t27","path":"vscode-trinity-swe/test_highlight.t27","health":"ok","module":null}],"description":"","symbols":[],"imports":[],"terms":["vscode","swe","highlight"]},{"id":"e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/congestion_control.t27","health":"warn","module":"congestion_control"}],"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"INITIAL_WINDOW","line":8},{"name":"MAX_WINDOW","line":9},{"name":"MIN_WINDOW","line":10},{"name":"CONGESTION_THRESHOLD","line":11},{"name":"create_congestion_state","line":14},{"name":"get_cwnd","line":21},{"name":"get_ssthresh","line":25},{"name":"get_congestion_state","line":29},{"name":"get_loss_count","line":33},{"name":"STATE_SLOW_START","line":38},{"name":"STATE_CONGESTION_AVOIDANCE","line":39},{"name":"STATE_FAST_RECOVERY","line":40},{"name":"STATE_FAST_RETRANSMIT","line":41},{"name":"initialize_congestion","line":44},{"name":"on_ack","line":49},{"name":"on_loss","line":76},{"name":"on_triple_dup_ack","line":99},{"name":"get_effective_window","line":126},{"name":"is_congested","line":137},{"name":"calculate_sending_rate","line":148},{"name":"estimate_bandwidth","line":159},{"name":"find_congestion_controller","line":170},{"name":"is_any_flow_congested","line":184},{"name":"calculate_total_cwnd","line":198},{"name":"allocate_fair_bandwidth","line":211},{"name":"probe_bandwidth","line":231},{"name":"reset_after_timeout","line":248}],"imports":[{"name":"base::types","line":5}],"terms":["net","congestion","control","max","flows","initial","window","min","threshold","create","state","get","cwnd","ssthresh","loss","count","slow","start","avoidance","fast","recovery","retransmit","initialize","ack","triple","dup","effective","congested","calculate","sending","rate","estimate","bandwidth","find","controller","flow","total","allocate","fair","probe","reset","timeout"]},{"id":"e40d28697fe02198d9d6b228ef8d6605bc8d1b5c03ca780a691b5deeb46d7f3d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/dft_tb.t27","health":"ok","module":"DFT_Testbench"}],"description":"t27/specs/fpga/testbench/dft_tb.t27 Design-for-Test Testbench Tests scan chain insertion, BIST, and JTAG interface","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SCAN_CHAIN_LENGTH","line":11},{"name":"NUM_SCAN_CHAINS","line":12},{"name":"BIST_PATTERN_LENGTH","line":13},{"name":"tick","line":32},{"name":"reset","line":37},{"name":"shift_scan_chain","line":45},{"name":"run_bist","line":59},{"name":"jtag_reset","line":74}],"imports":[{"name":"fpga::dft::DFT","line":8}],"terms":["fpga","testbench","dft","clk","period","scan","chain","length","num","chains","bist","pattern","tick","reset","shift","jtag"]},{"id":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sources":[{"repo":"ghashtag/t27","path":"specs/nn/hslm.t27","health":"warn","module":"HSLM"}],"description":"t27/specs/nn/hslm.t27 HSLM (Hierarchical Sacred Learning Model) Specification Ternary neural network with sacred constants and VSA attention","symbols":[{"name":"NUM_LAYERS","line":21},{"name":"NUM_HEADS","line":22},{"name":"HEAD_DIM","line":23},{"name":"EMBED_DIM","line":24},{"name":"FF_DIM","line":25},{"name":"CONTEXT_LEN","line":26},{"name":"VSA_DIM","line":27},{"name":"PHASE_NORM","line":30},{"name":"PHASE_ATTN","line":31},{"name":"PHASE_FFN","line":32},{"name":"PHASE_RESIDUAL","line":33},{"name":"ACT_RELU","line":36},{"name":"ACT_GELU","line":37},{"name":"ACT_SWISH","line":38},{"name":"ACT_TERNARY","line":39},{"name":"PHASE_FORWARD","line":42},{"name":"PHASE_BACKWARD","line":43},{"name":"PHASE_UPDATE","line":44},{"name":"LayerBuffers","line":54},{"name":"AttentionCache","line":62},{"name":"LayerWeights","line":68},{"name":"HSLMWeights","line":80},{"name":"hslm_forward","line":90},{"name":"layer_weights","line":108},{"name":"layer_cache","line":109},{"name":"hslm_layer_forward","line":134},{"name":"rms_norm_forward","line":201},{"name":"mean","line":212},{"name":"rms","line":213},{"name":"ffn_forward","line":230},{"name":"ternary_matmul","line":243},{"name":"weight_val","line":257},{"name":"gelu_activation","line":276},{"name":"sqrt_2_over_pi","line":277},{"name":"val","line":281},{"name":"cube","line":282},{"name":"inner","line":283},{"name":"tanh_val","line":284},{"name":"hslm_backward","line":296},{"name":"zero_weight_gradients","line":317},{"name":"hslm_layer_backward","line":336},{"name":"ffn_backward","line":347},{"name":"ffn_backward_w2","line":360},{"name":"gelu_backward","line":368},{"name":"ffn_backward_w1","line":375},{"name":"attention_backward","line":382},{"name":"hslm_phase","line":393},{"name":"get_hslm_mode","line":405}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"math::constants","line":11},{"name":"math::sacred_physics","line":12},{"name":"numeric::gf16","line":13},{"name":"nn::attention","line":14}],"terms":["hslm","num","layers","heads","head","dim","embed","len","vsa","phase","norm","attn","ffn","residual","act","relu","gelu","swish","ternary","forward","backward","layer","buffers","attention","cache","weights","hslmweights","rms","mean","matmul","weight","val","activation","sqrt","over","cube","inner","tanh","zero","gradients","get","mode"]},{"id":"e58af5df8780b31b21f3a23b1ca62e8948f1327130a08f9ff3ec57a56c276d7d","sources":[{"repo":"ghashtag/t27","path":"specs/account/repo.t27","health":"ok","module":"AccountRepo"}],"description":"specs/account/repo.t27 Account Repository Operations","symbols":[{"name":"AccountID","line":12},{"name":"OrgID","line":13},{"name":"AccessToken","line":14},{"name":"RefreshToken","line":15},{"name":"Info","line":17},{"name":"AccountError","line":24},{"name":"PersistTokenInput","line":33},{"name":"PersistAccountInput","line":40},{"name":"AccountRow","line":50},{"name":"AccountState","line":59},{"name":"ACCOUNT_STATE_ID","line":69},{"name":"active","line":75},{"name":"list","line":78},{"name":"remove","line":81},{"name":"set_active","line":84},{"name":"get_row","line":87},{"name":"persist_token","line":90},{"name":"persist_account","line":93},{"name":"get_state","line":96},{"name":"set_state","line":99},{"name":"clear_active","line":102}],"imports":[{"name":"base::types","line":6}],"terms":["account","org","access","token","refresh","info","persist","row","state","active","list","remove","set","get","clear"]},{"id":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf20.t27","health":"warn","module":"GF20"}],"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 0 20-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 6 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF20","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["chips","euler","numeric","gf20","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/resource_scheduler.t27","health":"warn","module":"ResourceScheduler"}],"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","symbols":[{"name":"MAX_TASKS","line":7},{"name":"CPU_CAPACITY","line":8},{"name":"MEMORY_CAPACITY","line":9},{"name":"PRIORITY_HIGH","line":10},{"name":"PRIORITY_MEDIUM","line":11},{"name":"PRIORITY_LOW","line":12},{"name":"create_task_resource","line":15},{"name":"get_cpu_req","line":22},{"name":"get_mem_req","line":26},{"name":"get_priority","line":30},{"name":"get_task_id","line":34},{"name":"create_system_state","line":39},{"name":"get_used_cpu","line":46},{"name":"get_used_mem","line":50},{"name":"get_active_tasks","line":54},{"name":"get_sched_tick","line":58},{"name":"create_task_array","line":63},{"name":"get_task_resource","line":74},{"name":"can_admit_task","line":86},{"name":"has_cpu_capacity","line":99},{"name":"has_memory_capacity","line":105},{"name":"allocate_resources","line":112},{"name":"release_resources","line":128},{"name":"find_admittable_task","line":144},{"name":"calculate_cpu_utilization","line":216},{"name":"calculate_memory_utilization","line":220},{"name":"is_overloaded","line":226},{"name":"increment_tick","line":232},{"name":"count_tasks_by_priority","line":245}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","resource","scheduler","max","tasks","cpu","capacity","memory","priority","high","medium","low","create","get","req","mem","system","state","used","active","sched","tick","array","admit","allocate","resources","release","find","admittable","calculate","utilization","overloaded","increment","count"]},{"id":"e6fc9237d381f9b29860d7a63126260d9baab643cd75dacf4fe4e8c92f754be7","sources":[{"repo":"ghashtag/t27","path":"specs/math/property_test_template.t27","health":"warn","module":"PropertyTestTemplate"}],"description":"t27/specs/math/property_test_template.t27 Property-Test Template for Conformance Vectors Ring 053 - Defines reusable property testing patterns This spec provides templates for property-based testing of T27 formats Properties: mathematical invariants that must hold for ALL valid inputs","symbols":[{"name":"STRATEGY_RANDOM","line":17},{"name":"STRATEGY_EXHAUSTIVE","line":18},{"name":"STRATEGY_BOUNDARY","line":19},{"name":"SAMPLE_SIZE_SMALL","line":22},{"name":"SAMPLE_SIZE_MEDIUM","line":23},{"name":"SAMPLE_SIZE_LARGE","line":24},{"name":"test_associative_add","line":33},{"name":"a","line":40},{"name":"b","line":41},{"name":"c","line":42},{"name":"left","line":43},{"name":"right","line":44},{"name":"test_associative_mul","line":58},{"name":"a","line":65},{"name":"b","line":66},{"name":"c","line":67},{"name":"left","line":68},{"name":"right","line":69},{"name":"test_commutative_add","line":84},{"name":"a","line":89},{"name":"b","line":90},{"name":"ab","line":91},{"name":"ba","line":92},{"name":"test_commutative_mul","line":103},{"name":"a","line":108},{"name":"b","line":109},{"name":"ab","line":110},{"name":"ba","line":111},{"name":"test_distributive_mul_add","line":123},{"name":"a","line":130},{"name":"b","line":131},{"name":"c","line":132},{"name":"left","line":133},{"name":"right","line":134},{"name":"test_identity_add","line":148},{"name":"a","line":151},{"name":"result","line":152},{"name":"test_identity_mul","line":161},{"name":"a","line":164},{"name":"result","line":165},{"name":"test_inverse_add","line":175},{"name":"a","line":178},{"name":"result","line":179},{"name":"test_inverse_mul","line":188},{"name":"a","line":191},{"name":"result","line":193},{"name":"test_idempotent_min","line":204},{"name":"a","line":207},{"name":"test_idempotent_max","line":218},{"name":"a","line":221},{"name":"test_tritspace_dimension","line":233},{"name":"three","line":235},{"name":"n_f","line":236},{"name":"result","line":237},{"name":"abs","line":246},{"name":"pow","line":254},{"name":"negative","line":265},{"name":"exp","line":266},{"name":"is_integer","line":267},{"name":"exp_int","line":270},{"name":"ln_x","line":288},{"name":"ln","line":303},{"name":"t","line":310},{"name":"t2","line":311},{"name":"t3","line":312},{"name":"t5","line":313},{"name":"t7","line":314},{"name":"floor","line":319},{"name":"xi","line":320},{"name":"temp_vals","line":428},{"name":"temp_vals1","line":434},{"name":"temp_vals2","line":441},{"name":"temp_vals3","line":448},{"name":"values","line":467},{"name":"values","line":478},{"name":"values","line":489}],"imports":[{"name":"math::constants","line":10}],"terms":["math","property","template","strategy","random","exhaustive","boundary","sample","size","small","medium","large","associative","left","right","mul","commutative","distributive","identity","inverse","idempotent","min","max","tritspace","dimension","three","abs","pow","negative","exp","integer","int","floor","temp","vals","vals1","vals2","vals3","values"]},{"id":"e734823e61b4a42e32f1d35dd8da6ec17a9c3877be615ad1ef3af903409beb2c","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/null_pe.t27","health":"warn","module":"sacred-null_pe"}],"description":"null_pe.t27 — Sacred Opcode 0xEA: Null Processing Element Hardware null PE (processing element) for sparse acceleration","symbols":[{"name":"OP_NULL_PE","line":12},{"name":"PE_COUNT","line":14},{"name":"DATA_WIDTH","line":15},{"name":"PE_STATE_IDLE","line":17},{"name":"PE_STATE_ACTIVE","line":18},{"name":"PE_STATE_WAITING","line":19},{"name":"PE_STATE_ERROR","line":20},{"name":"NULL_MODE_SKIP","line":22},{"name":"NULL_MODE_ZERO","line":23},{"name":"NULL_MODE_IDENTITY","line":24},{"name":"NULL_MODE_CUSTOM","line":25},{"name":"PeState","line":31},{"name":"PeConfig","line":38},{"name":"PeStatus","line":44},{"name":"NullPeResult","line":50},{"name":"PeArray","line":57},{"name":"pe_is_active","line":68},{"name":"pe_is_idle","line":74},{"name":"pe_is_waiting","line":80},{"name":"pe_is_error","line":86},{"name":"pe_set_state","line":92},{"name":"pe_config_enabled","line":106},{"name":"pe_is_null","line":112},{"name":"pe_is_identity","line":118},{"name":"null_pe_skip","line":128},{"name":"null_pe_zero","line":148},{"name":"null_pe_identity","line":167},{"name":"null_pe_execute","line":186},{"name":"pe_array_init","line":223},{"name":"pe_array_enable","line":237},{"name":"pe_array_count_active","line":253},{"name":"pe_array_count_null","line":265},{"name":"pe_array_get_null_mask","line":277},{"name":"encode_null_pe","line":293},{"name":"op","line":295},{"name":"mode_field","line":296},{"name":"mask_field","line":297},{"name":"decode_null_pe","line":303},{"name":"mode","line":304},{"name":"pe_mask","line":305}],"imports":[],"terms":["chips","euler","fpga","null","sacred","count","data","width","state","idle","active","waiting","mode","skip","zero","identity","custom","config","status","array","set","enabled","execute","init","enable","get","mask","encode","field","decode"]},{"id":"e76bf03cf8f562893d856f702982101bf5a630d8c6ec2beecbd3e19a530a7d99","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dense_layer.t27","health":"ok","module":"Dense"}],"description":"t27/specs/","symbols":[{"name":"MIN_INPUT_SIZE","line":13},{"name":"MAX_INPUT_SIZE","line":14},{"name":"DenseConfig","line":20},{"name":"ActivationType","line":27},{"name":"forward","line":43},{"name":"backward","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","dense","layer","min","size","max","config","activation","forward","backward"]},{"id":"e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_enc.t27","health":"ok","module":"PositionalEncoding"}],"description":"t27/specs/ml/transformer/positional_enc.t27","symbols":[{"name":"PHI","line":15},{"name":"INV_PHI","line":16},{"name":"PHI_SQUARED","line":17},{"name":"THETA_BASE","line":18},{"name":"PHI_THETA_BASE","line":19},{"name":"DEFAULT_MAX_POSITION","line":20},{"name":"DEFAULT_ROTARY_DIM","line":21},{"name":"RoPEConfig","line":27},{"name":"RoPEState","line":35},{"name":"RotaryResult","line":43},{"name":"init","line":54},{"name":"rotate_half","line":67},{"name":"apply_rotary","line":74},{"name":"forward","line":83},{"name":"forward_batch","line":93},{"name":"compute_inv_freq","line":100},{"name":"phi_optimized_theta","line":107},{"name":"extend_cache","line":113},{"name":"get_theta_base","line":120},{"name":"scaling_position","line":127}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"math::trigonometry","line":8},{"name":"numeric::gf16","line":9}],"terms":["transformer","positional","enc","encoding","phi","inv","squared","theta","base","default","max","position","rotary","dim","peconfig","pestate","init","rotate","half","apply","forward","batch","compute","freq","optimized","extend","cache","get","scaling"]},{"id":"e7a49d85980a3de7d64ed6d1bfad62310400537dc8488564938b2b7ce889d979","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/either.t27","health":"ok","module":"TriEither"}],"description":"t27/specs/","symbols":[{"name":"Either","line":13},{"name":"left","line":24},{"name":"right","line":29},{"name":"is_left","line":34},{"name":"is_right","line":39},{"name":"unwrap","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","either","left","right","unwrap"]},{"id":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/protocol.t27","health":"ok","module":"CoronaProtocol"}],"description":"specs/corona/protocol.t27 Corona oracle protocol: 8-bit serial CMD/DATA on TinyTapeout pins.","symbols":[{"name":"N_UI_IN","line":18},{"name":"N_UO_OUT","line":19},{"name":"N_UIO","line":20},{"name":"CMD1_BIT7","line":44},{"name":"MAX_BYTE_COUNT","line":45},{"name":"FMT_ID_ANCHOR","line":54},{"name":"ANCHOR_OUTPUT","line":55},{"name":"CYCLES_ROM_FETCH","line":65},{"name":"CYCLES_DECODE_8","line":72},{"name":"CYCLES_DECODE_16","line":79},{"name":"CYCLES_DECODE_SUB8","line":83},{"name":"VECTORS_PER_FORMAT_MIN","line":105},{"name":"VECTORS_PER_FORMAT_ROBUST","line":106},{"name":"VECTORS_PER_FORMAT_FULL","line":107},{"name":"NOT_IMPLEMENTED_SENTINEL","line":118},{"name":"NOT_IMPLEMENTED_TAG","line":119}],"imports":[{"name":"base::types","line":10},{"name":"corona::corona_oracle","line":11},{"name":"corona::rom_layout","line":12}],"terms":["corona","protocol","out","uio","cmd1","bit7","max","byte","count","fmt","anchor","cycles","rom","fetch","decode","sub8","vectors","per","format","min","robust","full","implemented","sentinel","tag"]},{"id":"e811defd32754534cd816aee83855abcaef5d5d6e3bef26227d36aa0b17d6bce","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_view.t27","health":"warn","module":"TrinityStreamViewT27"}],"description":"","symbols":[{"name":"dense_digit","line":5},{"name":"decode","line":12},{"name":"visible_lane","line":27},{"name":"on_comb","line":32}],"imports":[],"terms":["dmitrii","memory","rtl","stream","view","dense","digit","decode","visible","lane","comb"]},{"id":"e8775999f06bfb718b8b7d5404691396f6e4d0cbb7692259bea21a167ad6d329","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/01_values_and_types.t27","health":"ok","module":"tutorial-01-values"}],"description":"01 — Values and types Lesson 1 of the t27 tutorial. Every constant carries an explicit width, because a spec has to say what reaches hardware rather than let a compiler pick for it. Nothing here is inferred.","symbols":[{"name":"SMALL_UNSIGNED","line":17},{"name":"SMALL_SIGNED","line":18},{"name":"WIDE_UNSIGNED","line":19},{"name":"WIDER","line":20},{"name":"SIGNED_32","line":21},{"name":"AS_HEX","line":31},{"name":"AS_BINARY","line":32},{"name":"MANTISSA_MASK","line":33},{"name":"RATIO","line":39},{"name":"PRECISE","line":40},{"name":"ENABLED","line":42},{"name":"DISABLED","line":43},{"name":"TRIT_NEG","line":53},{"name":"TRIT_ZERO","line":54},{"name":"TRIT_POS","line":55},{"name":"TRINITY","line":57}],"imports":[],"terms":["tutorial","values","small","unsigned","signed","wide","wider","hex","binary","mantissa","mask","ratio","precise","enabled","disabled","trit","neg","zero","pos"]},{"id":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/testgen.t27","health":"warn","module":"testgen"}],"description":"testgen.t27 -- Generic Test Generator for TDD-Inside-Spec Generates test code from spec test blocks for multiple backends","symbols":[{"name":"TestGenOptions","line":8},{"name":"TestGen","line":16},{"name":"new","line":21},{"name":"generate","line":29},{"name":"generate_zig_tests","line":46},{"name":"generate_c_tests","line":81},{"name":"generate_verilog_tests","line":106},{"name":"generate_rust_tests","line":147},{"name":"generate_conformance_json","line":177},{"name":"generate_spec_tests_zig","line":225},{"name":"generate_spec_tests_c","line":265},{"name":"generate_spec_tests_rust","line":309},{"name":"generate_assembly_tests_zig","line":351},{"name":"generate_assembly_tests_c","line":380},{"name":"generate_assembly_tests_rust","line":409},{"name":"generate_invariants_zig","line":440},{"name":"generate_benchmarks_zig","line":469},{"name":"mangle_filename","line":492},{"name":"c","line":505},{"name":"escape_json","line":518},{"name":"c","line":522},{"name":"to_snake_case","line":541},{"name":"c","line":545},{"name":"c_type_from_expr","line":563},{"name":"c","line":567},{"name":"emit","line":576},{"name":"emit_line","line":580},{"name":"StringBuilder","line":587},{"name":"new","line":592},{"name":"append","line":600},{"name":"to_string","line":608},{"name":"Program","line":614},{"name":"SpecDecl","line":622},{"name":"TestSection","line":627},{"name":"InvariantSection","line":631},{"name":"BenchSection","line":635},{"name":"TestBlock","line":639},{"name":"TestCase","line":646},{"name":"Invariant","line":652},{"name":"Benchmark","line":660},{"name":"Clause","line":667},{"name":"output","line":714},{"name":"output","line":735},{"name":"output","line":756},{"name":"output","line":777},{"name":"output","line":798},{"name":"output","line":820},{"name":"backends","line":842}],"imports":[],"terms":["compiler","codegen","testgen","gen","options","generate","zig","verilog","rust","conformance","json","assembly","invariants","benchmarks","mangle","filename","escape","snake","case","expr","emit","builder","append","program","decl","section","invariant","bench","block","benchmark","clause","backends"]},{"id":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bitnet.t27","health":"ok","module":"TriComputeBitnet"}],"description":"TRI-NET BitNet-style mixed layer attestation: ternary weights {-1,0,+1} times GF16 activations. This is the target workload the whole GF-vs-ternary analysis points at -- weights are the 0-DSP part (sign-select / popcount, as in trinet_mac32), the GF16 activation and accumulated result are the value part (magnitude, DSP or -nodsp soft-logic). One receipt binds BOTH: the packed_w ternary weight code, the GF16 activation hash, and the GF16 result. It also","symbols":[{"name":"OP_BITNET","line":14},{"name":"B_C","line":15},{"name":"TAG_BITNET","line":16},{"name":"SHA_PAD","line":17},{"name":"BITNET_MSG_BITS","line":18},{"name":"rotl","line":20},{"name":"mix32","line":24},{"name":"is_active","line":41},{"name":"active_weights4","line":53},{"name":"trit_canonical","line":66},{"name":"weights_canonical4","line":74},{"name":"packing_is_canonical","line":79},{"name":"is_pos","line":91},{"name":"is_neg","line":99},{"name":"pos_weights4","line":107},{"name":"neg_weights4","line":112},{"name":"sign_balance_biased","line":119},{"name":"bitnet_balance_matches","line":131},{"name":"bitnet_leaf","line":143},{"name":"bitnet_digest_pre","line":165}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","bitnet","tag","sha","pad","msg","bits","rotl","mix32","active","weights4","trit","canonical","weights","canonical4","packing","pos","neg","sign","balance","biased","matches","leaf","digest","pre"]},{"id":"e98502679e264075d5360666799c30ec36084d042552af361af54d4434670ab8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/huber_loss.t27","health":"ok","module":"HuberLoss"}],"description":"t27/specs/","symbols":[{"name":"HuberLossConfig","line":13},{"name":"forward","line":22}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","huber","config","forward"]},{"id":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/topology_visualizer.t27","health":"warn","module":"topology_visualizer"}],"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EDGES","line":8},{"name":"MAX_LAYERS","line":9},{"name":"CANVAS_SIZE","line":10},{"name":"create_visual_node","line":13},{"name":"get_viz_node_id","line":20},{"name":"get_node_x_position","line":24},{"name":"get_node_y_position","line":28},{"name":"get_node_visual_status","line":32},{"name":"STATUS_ACTIVE","line":37},{"name":"STATUS_INACTIVE","line":38},{"name":"STATUS_FAILED","line":39},{"name":"STATUS_WARNING","line":40},{"name":"create_visual_edge","line":43},{"name":"get_viz_edge_source","line":50},{"name":"get_viz_edge_dest","line":54},{"name":"get_viz_edge_quality","line":58},{"name":"get_viz_edge_type","line":62},{"name":"EDGE_WIRED","line":67},{"name":"EDGE_WIRELESS","line":68},{"name":"EDGE_ACTIVE_ROUTE","line":69},{"name":"EDGE_BACKUP_ROUTE","line":70},{"name":"create_color","line":73},{"name":"get_color_red","line":80},{"name":"get_color_green","line":84},{"name":"get_color_blue","line":88},{"name":"get_color_alpha","line":92},{"name":"COLOR_GREEN","line":97},{"name":"COLOR_RED","line":98},{"name":"COLOR_YELLOW","line":99},{"name":"COLOR_BLUE","line":100},{"name":"COLOR_GRAY","line":101},{"name":"get_status_color","line":104},{"name":"create_layout_params","line":117},{"name":"get_layout_algorithm","line":124},{"name":"get_layout_iterations","line":128},{"name":"get_layout_temperature","line":132},{"name":"get_layout_cooling_rate","line":136},{"name":"ALGORITHM_FORCE_DIRECTED","line":141},{"name":"ALGORITHM_CIRCULAR","line":142},{"name":"ALGORITHM_HIERARCHICAL","line":143},{"name":"ALGORITHM_GRID","line":144},{"name":"calculate_force_layout","line":147},{"name":"calculate_circular_layout","line":222},{"name":"calculate_hierarchical_layout","line":247},{"name":"apply_layout","line":277},{"name":"render_node","line":293},{"name":"render_edge","line":309},{"name":"create_visualization_frame","line":352},{"name":"calculate_viz_complexity","line":376},{"name":"optimize_rendering","line":384},{"name":"generate_topology_visualization","line":398}],"imports":[{"name":"base::types","line":5}],"terms":["net","topology","visualizer","max","nodes","edges","layers","canvas","size","create","visual","node","get","viz","position","status","active","inactive","failed","warning","edge","dest","quality","wired","wireless","route","backup","color","red","green","blue","alpha","yellow","gray","layout","params","algorithm","iterations","temperature","cooling","rate","force","directed","circular","hierarchical","grid","calculate","apply","render","visualization","frame","complexity","optimize","rendering","generate"]},{"id":"e9e6bd933169bdf7ff79fa80a1df30743e9702bc16e478e6069bb68cc0fe71da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/csv.t27","health":"ok","module":"TriCsv"}],"description":"t27/specs/","symbols":[{"name":"CsvRow","line":13},{"name":"CsvDocument","line":17},{"name":"parse","line":28},{"name":"get","line":33},{"name":"set","line":38},{"name":"serialize","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","csv","row","document","parse","get","set","serialize"]},{"id":"ea02cd024807f8b9b3cdbd25d25022bed852b1433d7f256a9853e46fa312a715","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agent_run.t27","health":"ok","module":"AgentRun"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":[]},{"id":"ea12fcc03feba95408ef18b0f5635ad5eeaad00d3c6fcce5f6348f995f426e56","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/layernorm_layer.t27","health":"ok","module":"Layernorm"}],"description":"t27/specs/","symbols":[{"name":"LayerNormConfig","line":13},{"name":"forward","line":23}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","layernorm","layer","norm","config","forward"]},{"id":"ea334b73f9e5c5a18f4ec6bb7a249982381c339fdb867bdb2ef19305eb59679d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/markup.t27","health":"ok","module":"TriMarkup"}],"description":"t27/specs/","symbols":[{"name":"MarkdownNode","line":13},{"name":"parse","line":24},{"name":"to_html","line":29}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","markup","markdown","node","parse","html"]},{"id":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/selection_sort.t27","health":"ok","module":"TriSelectionSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","selection"]},{"id":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/qmtech_a100t_integration.t27","health":"ok","module":"QMTech_A100T_Integration"}],"description":"t27/specs/fpga/boards/qmtech_a100t_integration.t27 QMTech XC7A100T Board-Level Integration Spec Full system for QMTech A100T development board","symbols":[{"name":"BOARD_NAME","line":13},{"name":"FPGA_PART","line":14},{"name":"CLOCK_FREQ_HZ","line":15},{"name":"UART_BAUD","line":16},{"name":"MEMORY_SIZE","line":17},{"name":"FIFO_DEPTH","line":18},{"name":"NUM_LEDS","line":19},{"name":"IO_STANDARD","line":20},{"name":"PinMapping","line":22},{"name":"QMTECH_PINS","line":30},{"name":"SystemConfig","line":38},{"name":"SYS_CONFIG","line":45},{"name":"calc_baud_divisor","line":52}],"imports":[{"name":"fpga::top_level::ZeroDSP_TopLevel","line":8},{"name":"fpga::gf16_accel::Gf16Accel","line":9},{"name":"fpga::memory::Memory","line":10},{"name":"fpga::fifo::Fifo","line":11}],"terms":["fpga","boards","qmtech","a100t","integration","board","part","clock","freq","uart","baud","memory","size","fifo","depth","num","leds","standard","pin","mapping","pins","system","config","sys","calc","divisor"]},{"id":"ec713094133b35f17ecada146c61cbdc94efbfe4e17f1d18f3c1d0b43ddf7439","sources":[{"repo":"ghashtag/t27","path":"specs/server/session.t27","health":"ok","module":"Session"}],"description":"specs/server/session.t27 Session Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"SessionState","line":14},{"name":"MessageRole","line":25},{"name":"Session","line":36},{"name":"Message","line":46},{"name":"ToolCall","line":55},{"name":"SessionManager","line":64},{"name":"session_manager_init","line":70},{"name":"create_session","line":82},{"name":"id","line":83},{"name":"get_session","line":101},{"name":"update_session","line":112},{"name":"delete_session","line":124},{"name":"list_sessions","line":142},{"name":"create_message","line":150},{"name":"add_message","line":161},{"name":"generate_session_id","line":170},{"name":"session_to_json","line":174},{"name":"message_to_json","line":178},{"name":"session","line":202},{"name":"created","line":211},{"name":"retrieved","line":212},{"name":"session","line":218},{"name":"result","line":221},{"name":"session","line":227},{"name":"result","line":228},{"name":"mgr","line":234},{"name":"msg","line":240},{"name":"msg","line":247},{"name":"session","line":253},{"name":"json","line":254},{"name":"msg","line":259},{"name":"json","line":260}],"imports":[{"name":"base::types","line":8}],"terms":["session","state","role","tool","call","manager","init","create","get","delete","list","sessions","generate","json","created","retrieved","mgr","msg"]},{"id":"ecea27e185ed847dde4df4c4eb06be26568bcfc22f5447b75f88c7520a494461","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_identity.t27","health":"ok","module":"SacredIdentity"}],"description":"t27/specs/","symbols":[{"name":"SACRED_MATH","line":13},{"name":"SacredIdentity","line":19},{"name":"IdentityProof","line":27},{"name":"SacredTimestamp","line":36},{"name":"IdentityLogEntry","line":44},{"name":"TrinityAwareness","line":52},{"name":"IdentityConfig","line":61}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","identity","math","proof","timestamp","log","entry","awareness","config"]},{"id":"ed13dbd99f709317378a87dc3d427eceabc5eab1ddac88c52b0cbf408344585b","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_shift.t27","health":"warn","module":"TernaryShift"}],"description":"t27/specs/isa/ternary_shift.t27 Ternary Shift and Rotate Operations Specification Ring 067 - Bitwise/Tritwise shift and rotate operations Defines how ternary words are shifted and rotated","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"WORD_SIZE","line":21},{"name":"SHIFT_MASK","line":22},{"name":"SHIFT_LEFT","line":25},{"name":"SHIFT_RIGHT","line":26},{"name":"ternary_shift_left","line":34},{"name":"ternary_shift_right","line":57},{"name":"idx","line":65},{"name":"idx","line":72},{"name":"ternary_rotate_left","line":86},{"name":"actual_shift","line":91},{"name":"src_idx","line":102},{"name":"ternary_rotate_right","line":117},{"name":"actual_shift","line":122},{"name":"src_idx","line":133},{"name":"ternary_arithmetic_shift_right","line":152},{"name":"actual_shift","line":157},{"name":"sign_bit","line":163},{"name":"idx","line":168},{"name":"idx","line":175},{"name":"extract_trits","line":189},{"name":"insert_trits","line":205}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","shift","trit","neg","zero","pos","word","size","mask","left","right","idx","rotate","actual","arithmetic","sign","bit","extract","trits","insert"]},{"id":"edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_deployment.t27","health":"ok","module":"ProductionDeployment"}],"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","symbols":[{"name":"DEPLOY_PENDING","line":8},{"name":"DEPLOY_PROGRAMMING","line":9},{"name":"DEPLOY_VERIFIED","line":10},{"name":"DEPLOY_ACTIVE","line":11},{"name":"DEPLOY_FAILED","line":12},{"name":"STEP_BITSTREAM","line":15},{"name":"STEP_FLASH","line":16},{"name":"STEP_VERIFY","line":17},{"name":"STEP_MONITOR","line":18},{"name":"create_deployment","line":21},{"name":"extract_deploy_state","line":28},{"name":"extract_deploy_step","line":32},{"name":"extract_deploy_progress","line":36},{"name":"extract_device_id","line":40},{"name":"deployment_complete","line":45},{"name":"create_bitstream_info","line":51},{"name":"extract_bitstream_size","line":57},{"name":"extract_bitstream_checksum","line":61},{"name":"extract_bitstream_version","line":65},{"name":"flash_programming_success","line":70},{"name":"create_monitor_config","line":75},{"name":"extract_sample_rate","line":80},{"name":"extract_metrics_enabled","line":84},{"name":"create_checklist","line":89},{"name":"checklist_power","line":98},{"name":"checklist_cooling","line":102},{"name":"checklist_network","line":106},{"name":"checklist_monitoring","line":110},{"name":"checklist_complete","line":115}],"imports":[{"name":"base::types","line":5}],"terms":["net","production","deployment","deploy","programming","verified","active","failed","step","bitstream","flash","verify","monitor","create","extract","state","progress","device","complete","info","size","checksum","success","config","sample","rate","metrics","enabled","checklist","power","cooling","network","monitoring"]},{"id":"ee002f94a63c0a07ea37cd3b1ddcaca3a4ee552a99a18e532d99b16f1ae12ce8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_ladder.t27","health":"ok","module":"TriGftLadder"}],"description":"TRI-NET GF-T (ternary-native GoldenFloat) ladder geometry + validity. tri_compute_gfvalid.is_finite_gft16 hardcodes ONE rung (GF-T16, reserved offset 80). But GF-T is a LADDER -- GF-T4/8/16/32/... -- each with its own reserved special row at offset_max = 3^Et - 1, where Et is the number of balanced-ternary exponent trits (the ternary analogue of the all-ones binary exponent). This spec generalizes finiteness across the ladder so a receipt/settle path can validate a","symbols":[{"name":"GFT4_ET","line":31},{"name":"GFT8_ET","line":32},{"name":"GFT16_ET","line":33},{"name":"GFT32_ET","line":34},{"name":"GFT64_ET","line":35},{"name":"GFT128_ET","line":36},{"name":"GFT256_ET","line":37},{"name":"GFT512_ET","line":38},{"name":"GFT1024_ET","line":39},{"name":"GFT4_MANT","line":43},{"name":"GFT8_MANT","line":44},{"name":"GFT16_MANT","line":45},{"name":"GFT32_MANT","line":46},{"name":"GFT64_MANT","line":47},{"name":"GFT128_MANT","line":48},{"name":"GFT256_MANT","line":49},{"name":"GFT512_MANT","line":50},{"name":"GFT1024_MANT","line":51},{"name":"fib","line":56},{"name":"gft_et_of_rung","line":72},{"name":"gft_mant_of_rung","line":75},{"name":"gft_pow3","line":81},{"name":"gft_offset_max","line":96},{"name":"is_finite_gft_n","line":102},{"name":"gft_offset_in_range","line":107},{"name":"gft_bias","line":120},{"name":"gft_pow3_u64","line":130},{"name":"gft_offset_max_u64","line":143},{"name":"gft_bias_u64","line":148},{"name":"gft_mant_bits","line":154},{"name":"gft_mant_one","line":168},{"name":"width_to_et","line":175}],"imports":[{"name":"base::types","line":27}],"terms":["net","gft","ladder","gft4","gft8","gft16","gft32","gft64","gft128","gft256","gft512","gft1024","mant","fib","rung","pow3","offset","max","finite","range","bias","u64","bits","one","width"]},{"id":"ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_simulator.t27","health":"warn","module":"network_simulator"}],"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EVENTS","line":8},{"name":"MAX_PACKETS","line":9},{"name":"SIMULATION_TICK_MS","line":10},{"name":"create_sim_event","line":13},{"name":"get_event_id","line":20},{"name":"get_event_timestamp","line":24},{"name":"get_event_type","line":28},{"name":"get_event_node_id","line":32},{"name":"EVENT_PACKET_SEND","line":37},{"name":"EVENT_PACKET_RECV","line":38},{"name":"EVENT_NODE_FAILURE","line":39},{"name":"EVENT_LINK_FAILURE","line":40},{"name":"EVENT_TIMER_EXPIRE","line":41},{"name":"EVENT_STATE_CHANGE","line":42},{"name":"create_node_state","line":45},{"name":"get_node_id","line":52},{"name":"get_node_status","line":56},{"name":"get_node_energy","line":60},{"name":"get_node_position","line":64},{"name":"NODE_ACTIVE","line":69},{"name":"NODE_INACTIVE","line":70},{"name":"NODE_FAILED","line":71},{"name":"NODE_SLEEPING","line":72},{"name":"update_node_status","line":75},{"name":"update_node_energy","line":84},{"name":"create_link_state","line":107},{"name":"get_link_source","line":114},{"name":"get_link_dest","line":118},{"name":"get_link_quality","line":122},{"name":"get_link_latency","line":126},{"name":"update_link_quality","line":131},{"name":"is_link_operational","line":140},{"name":"create_packet","line":151},{"name":"get_packet_id","line":159},{"name":"get_packet_source","line":163},{"name":"get_packet_dest","line":167},{"name":"get_packet_size","line":171},{"name":"get_packet_sequence","line":175},{"name":"calculate_transmission_time","line":180},{"name":"create_sim_state","line":191},{"name":"get_sim_time","line":197},{"name":"get_sim_event_count","line":201},{"name":"get_sim_node_count","line":205},{"name":"advance_simulation","line":210},{"name":"process_event","line":221},{"name":"create_sim_stats","line":248},{"name":"get_packets_sent","line":255},{"name":"get_packets_recv","line":259},{"name":"get_packets_dropped","line":263},{"name":"get_total_latency","line":267},{"name":"calculate_delivery_ratio","line":272},{"name":"calculate_average_latency","line":284},{"name":"create_topology","line":296},{"name":"inject_fault","line":308},{"name":"run_simulation_step","line":322},{"name":"generate_simulation_report","line":346}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","simulator","max","nodes","events","packets","simulation","tick","create","sim","event","get","timestamp","node","packet","send","recv","failure","link","timer","expire","state","status","energy","position","active","inactive","failed","sleeping","dest","quality","latency","operational","size","sequence","calculate","transmission","time","count","advance","process","stats","sent","dropped","total","delivery","ratio","average","topology","inject","fault","step","generate","report"]},{"id":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/protocol.t27","health":"ok","module":"lsp-protocol"}],"description":"lsp/protocol.t27 — JSON-RPC 2.0 Protocol Mapping LSP message handling over JSON-RPC transport layer","symbols":[{"name":"JSON_RPC_VERSION","line":19},{"name":"DEFAULT_BUFFER_SIZE","line":22},{"name":"MAX_MESSAGE_LENGTH","line":25},{"name":"METHOD_INITIALIZE","line":28},{"name":"METHOD_INITIALIZED","line":31},{"name":"METHOD_SHUTDOWN","line":34},{"name":"METHOD_EXIT","line":37},{"name":"METHOD_DID_OPEN","line":40},{"name":"METHOD_DID_CHANGE","line":43},{"name":"METHOD_DID_CLOSE","line":46},{"name":"METHOD_COMPLETION","line":49},{"name":"METHOD_HOVER","line":52},{"name":"METHOD_DEFINITION","line":55},{"name":"METHOD_DOCUMENT_SYMBOL","line":58},{"name":"METHOD_WORKSPACE_SYMBOL","line":61},{"name":"METHOD_CODE_ACTION","line":64},{"name":"METHOD_RENAME","line":67},{"name":"MessageType","line":74},{"name":"Request","line":82},{"name":"Response","line":90},{"name":"Notification","line":98},{"name":"JsonRpcError","line":105},{"name":"ParseResult","line":112},{"name":"TransportType","line":122},{"name":"ConnectionState","line":129},{"name":"MessageBuffer","line":143},{"name":"IncomingMessage","line":150},{"name":"OutgoingMessage","line":156},{"name":"BatchRequest","line":162},{"name":"BatchResponse","line":167},{"name":"CancelParams","line":172},{"name":"request_create","line":181},{"name":"response_create","line":191},{"name":"response_error_create","line":201},{"name":"notification_create","line":211},{"name":"json_rpc_error_create","line":220},{"name":"message_buffer_create","line":237},{"name":"data","line":238},{"name":"message_buffer_destroy","line":247},{"name":"initialize_request_create","line":252},{"name":"initialized_notification_create","line":257},{"name":"shutdown_request_create","line":262},{"name":"exit_notification_create","line":267},{"name":"completion_request_create","line":272},{"name":"hover_request_create","line":277},{"name":"definition_request_create","line":282},{"name":"cancel_params_create","line":287},{"name":"response_is_success","line":294},{"name":"response_has_error","line":299},{"name":"message_is_notification","line":304},{"name":"message_is_request","line":309},{"name":"message_type_to_string","line":314},{"name":"connection_is_active","line":324},{"name":"connection_state_to_string","line":329},{"name":"parse_result_create","line":339},{"name":"transport_supports_duplex","line":351},{"name":"req","line":360},{"name":"resp","line":365},{"name":"err","line":371},{"name":"resp","line":372},{"name":"notif","line":377},{"name":"err","line":382},{"name":"buf","line":387},{"name":"buf","line":403},{"name":"buf","line":411},{"name":"buf","line":422},{"name":"req","line":429},{"name":"req","line":434},{"name":"req","line":439},{"name":"resp","line":449},{"name":"err","line":454},{"name":"resp","line":455},{"name":"str","line":460},{"name":"str","line":470}],"imports":[],"terms":["lsp","protocol","json","rpc","default","buffer","size","max","length","method","initialize","initialized","shutdown","exit","did","open","close","completion","hover","definition","document","workspace","action","rename","request","response","notification","parse","transport","connection","state","incoming","outgoing","batch","cancel","params","create","data","destroy","success","active","supports","duplex","req","resp","err","notif","buf","str"]},{"id":"ee971e0e0be0b061bb8448b61ef0de3cea9d5352ccf5add977bee5173e3d56a1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/compress.t27","health":"ok","module":"TriCompress"}],"description":"t27/specs/","symbols":[{"name":"Compressed","line":13},{"name":"compress","line":23},{"name":"decompress","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["compress","compressed","decompress"]},{"id":"ee9f123c12e3f5dfe8594f1e27977994b654966d8bb8d4d19c464b40116f70f7","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_edge_argmax.t27","health":"warn","module":"TrinityFpgaEdgeArgmaxT27"}],"description":"","symbols":[{"name":"on_comb","line":6}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","edge","argmax","comb"]},{"id":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/swarm_agents.t27","health":"ok","module":"SwarmAgents"}],"description":"t27/specs/","symbols":[{"name":"AgentType","line":13},{"name":"AgentStatus","line":19},{"name":"Agent","line":25},{"name":"Task","line":36},{"name":"TaskStatus","line":45},{"name":"SwarmState","line":51},{"name":"CoordinationMode","line":62},{"name":"ConsensusProposal","line":68},{"name":"Vote","line":78},{"name":"ConsensusStatus","line":86},{"name":"SwarmHarmonyMetrics","line":92},{"name":"AgentCommunication","line":100},{"name":"MessageType","line":109},{"name":"SacredPattern","line":115},{"name":"TaskResult","line":125},{"name":"SacredFormula","line":132}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["swarm","agents","status","state","coordination","mode","consensus","proposal","vote","harmony","metrics","communication","sacred","pattern","formula"]},{"id":"efb335d2dfda179364cc654ecc06db8780ac7176c63e5962b2f969ee4836a04b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/variant.t27","health":"ok","module":"TriVariant"}],"description":"t27/specs/","symbols":[{"name":"Variant","line":13},{"name":"make","line":23},{"name":"get_tag","line":28},{"name":"match","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","variant","make","get","tag","match"]},{"id":"efca26cf7e116dcee89e74b16fd07f1babe095801b522428aa41e3a2c50ce0ec","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd.t27","health":"ok","module":"Sgd"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LR","line":13},{"name":"DEFAULT_MOMENTUM","line":14},{"name":"SGDConfig","line":20},{"name":"SGDState","line":28},{"name":"init","line":37},{"name":"update","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","sgd","default","momentum","sgdconfig","sgdstate","init"]},{"id":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/subth_clk.t27","health":"warn","module":"sacred-subth_clk"}],"description":"subth_clk.t27 — Sacred Opcode 0xE5: Sub-threshold Clock Gating Hardware for sub-threshold clock gating for power reduction","symbols":[{"name":"OP_SUBTH_CLK","line":12},{"name":"NUM_CLK_DOMAINS","line":14},{"name":"SUBTH_THRESHOLD_MV","line":15},{"name":"NORMAL_VOLTAGE_MV","line":16},{"name":"CLK_GATE_OFF","line":18},{"name":"CLK_GATE_ON","line":19},{"name":"CLK_GATE_AUTO","line":20},{"name":"POWER_STATE_ACTIVE","line":22},{"name":"POWER_STATE_IDLE","line":23},{"name":"POWER_STATE_SLEEP","line":24},{"name":"POWER_STATE_DEEP_SLEEP","line":25},{"name":"ClkGateMode","line":31},{"name":"PowerState","line":37},{"name":"ClkDomain","line":44},{"name":"SubthConfig","line":52},{"name":"PowerMetrics","line":59},{"name":"clk_domain_enabled","line":72},{"name":"clk_domain_gate_active","line":78},{"name":"clk_domain_is_idle","line":85},{"name":"clk_domain_pulse","line":92},{"name":"clk_domain_decay","line":104},{"name":"new_count","line":105},{"name":"is_subthreshold","line":121},{"name":"voltage_within_range","line":130},{"name":"subth_power_estimate","line":139},{"name":"ratio","line":141},{"name":"power_baseline","line":142},{"name":"estimated","line":143},{"name":"power_savings_ratio","line":149},{"name":"normal_power","line":150},{"name":"subth_power","line":151},{"name":"saved","line":157},{"name":"ratio","line":158},{"name":"power_state_can_gate","line":169},{"name":"power_state_deeper","line":175},{"name":"power_state_sleep_ok","line":184},{"name":"encode_subth_clk","line":199},{"name":"op","line":201},{"name":"domain_field","line":202},{"name":"mode_field","line":203},{"name":"decode_subth_clk","line":209},{"name":"domain_id","line":210},{"name":"mode","line":211}],"imports":[],"terms":["chips","euler","fpga","subth","clk","sacred","num","domains","threshold","normal","voltage","gate","off","auto","power","state","active","idle","sleep","deep","mode","domain","config","metrics","enabled","pulse","decay","count","subthreshold","within","range","estimate","ratio","baseline","estimated","savings","saved","deeper","encode","field","decode"]},{"id":"f066b8924661eee6b40b59b5c310ce94fbbc0a97a243fa1359ff68cfb10ef7be","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench.t27","health":"ok","module":"Testbench"}],"description":"t27/specs/fpga/testbench.t27 T27 HIR Testbench Auto-Generation Specification Automatically generates Verilog testbenches from HIR modules Includes clock generation, reset sequencing, stimulus, and checking Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"TbClockCfg","line":13},{"name":"clock_cfg","line":19},{"name":"half_period","line":27},{"name":"TbResetCfg","line":33},{"name":"reset_cfg","line":39},{"name":"reset_end_cycle","line":47},{"name":"TbStimulus","line":53},{"name":"stimulus","line":59},{"name":"TbCheck","line":69},{"name":"check","line":76},{"name":"check_with_mask","line":85},{"name":"TbConfig","line":96},{"name":"tb_config","line":105},{"name":"validate_tb_config","line":118},{"name":"validate_stimulus","line":129},{"name":"validate_check","line":137},{"name":"stim_applied_before","line":147},{"name":"check_at_cycle","line":151},{"name":"total_sim_ns","line":155},{"name":"stim_count_before","line":159}],"imports":[],"terms":["fpga","testbench","clock","cfg","half","period","reset","end","cycle","stimulus","mask","config","validate","stim","applied","total","sim","count"]},{"id":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/top_level.t27","health":"warn","module":"ZeroDSP_TopLevel"}],"description":"t27/specs/fpga/top_level.t27 ZeroDSP FPGA Top Level Module Integrates MAC and UART for FPGA deployment 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"CLK_FREQ_HZ","line":12},{"name":"SYSTICK_HZ","line":13},{"name":"NUM_MAC_UNITS","line":15},{"name":"DATA_WIDTH","line":16},{"name":"CMD_NOP","line":18},{"name":"CMD_MAC_MULT","line":19},{"name":"CMD_MAC_DOT","line":20},{"name":"CMD_UART_SEND","line":21},{"name":"CMD_RESET","line":22},{"name":"SystemState","line":24},{"name":"system_init","line":41},{"name":"system_ready","line":48},{"name":"system_busy","line":52},{"name":"system_error","line":56},{"name":"system_reset","line":60},{"name":"set_mac_result","line":66},{"name":"get_mac_result","line":71},{"name":"set_uart_data","line":75},{"name":"get_uart_data","line":79},{"name":"start_processing","line":83},{"name":"stop_processing","line":89},{"name":"set_error","line":93},{"name":"clear_error","line":98}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9},{"name":"isa::registers","line":10}],"terms":["fpga","top","level","zero","dsp","clk","freq","systick","num","mac","units","data","width","cmd","nop","mult","dot","uart","send","reset","system","state","init","ready","busy","set","get","start","processing","stop","clear"]},{"id":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf8.t27","health":"warn","module":"GF8"}],"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 0 8-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 3 (P1)","symbols":[{"name":"BITS","line":24},{"name":"SIGN_BITS","line":25},{"name":"EXP_BITS","line":26},{"name":"MANT_BITS","line":27},{"name":"EXP_BIAS","line":30},{"name":"PHI_DISTANCE","line":34},{"name":"GF8","line":40},{"name":"encode","line":49},{"name":"sign","line":54},{"name":"abs_val","line":55},{"name":"exp_unbiased","line":58},{"name":"exp_biased","line":59},{"name":"exp_clamped","line":62},{"name":"mant","line":65},{"name":"decode","line":79},{"name":"sign","line":80},{"name":"exp_biased","line":81},{"name":"mant","line":82},{"name":"exp_unbiased","line":90},{"name":"mant_normalized","line":97},{"name":"value","line":103},{"name":"max_value","line":115},{"name":"mant_max","line":117},{"name":"exp_max","line":118},{"name":"min_positive","line":122},{"name":"mant_min","line":124},{"name":"exp_min","line":125},{"name":"epsilon","line":129},{"name":"validate_format","line":138},{"name":"fmt","line":139},{"name":"MEMORY_RATIO_VS_FP32","line":157},{"name":"floor_log2","line":163},{"name":"extract_mantissa","line":177},{"name":"normalized","line":178},{"name":"frac","line":179},{"name":"max_mant","line":180},{"name":"clamp","line":184},{"name":"pow","line":190},{"name":"is_integer","line":206},{"name":"ln_val","line":232},{"name":"ln_approx","line":237},{"name":"t","line":246},{"name":"t2","line":247},{"name":"t3","line":248},{"name":"t5","line":249},{"name":"t7","line":250},{"name":"exp_approx","line":256},{"name":"k","line":268},{"name":"k","line":279},{"name":"floor","line":295}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9},{"name":"base::testing","line":12},{"name":"base::benchmarking","line":13}],"terms":["chips","euler","numeric","gf8","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf64.t27","health":"ok","module":"GF64"}],"description":"t27/specs/numeric/gf64.t27 GoldenFloat64 - 64-bit φ-structured floating point NUMERIC-STANDARD-001 Agent 4 (P1)","symbols":[{"name":"BITS","line":24},{"name":"SIGN_BITS","line":25},{"name":"EXP_BITS","line":26},{"name":"MANT_BITS","line":27},{"name":"EXP_BIAS","line":30},{"name":"PHI_DISTANCE","line":33},{"name":"GF64","line":37},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":68},{"name":"sign","line":69},{"name":"exp_biased","line":70},{"name":"exp_unbiased","line":78},{"name":"mant_normalized","line":85},{"name":"value","line":91},{"name":"max_value","line":101},{"name":"mant_max","line":103},{"name":"exp_max","line":104},{"name":"min_positive","line":108},{"name":"mant_min","line":110},{"name":"exp_min","line":111},{"name":"epsilon","line":115},{"name":"validate_format","line":122},{"name":"fmt","line":123},{"name":"MEMORY_RATIO_VS_FP32","line":139},{"name":"floor_log2_f64","line":143},{"name":"extract_mantissa_64","line":157},{"name":"normalized","line":158},{"name":"frac","line":159},{"name":"max_mant","line":160},{"name":"mant_u64_to_f64","line":164},{"name":"pow2_64","line":168}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9},{"name":"base::testing","line":12},{"name":"base::benchmarking","line":13}],"terms":["chips","euler","fpga","gf64","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","f64","extract","mantissa","frac","u64","pow2"]},{"id":"f1b5395243a8bbbe1ba4ecc9c3bfc74a68bf7cb43c68c03c71b6f30c253b65b0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/utf8.t27","health":"ok","module":"TriUtf8"}],"description":"t27/specs/","symbols":[{"name":"Codepoint","line":13},{"name":"Rune","line":17},{"name":"decode","line":27},{"name":"encode","line":32},{"name":"count_codepoints","line":37},{"name":"validate","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","utf8","codepoint","rune","decode","encode","count","codepoints","validate"]},{"id":"f1e9aedeba6e513fe9ed235d0501d552b46aa6c3e0c1cb7271888ce20d8f0c76","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/placement_tb.t27","health":"ok","module":"Placement_Testbench"}],"description":"t27/specs/fpga/testbench/placement_tb.t27 FPGA Placement Testbench Tests placement grid, resource allocation, and density constraints","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"GRID_COLS","line":11},{"name":"GRID_ROWS","line":12},{"name":"NUM_CLB_COLS","line":13},{"name":"NUM_BRAM_COLS","line":14},{"name":"NUM_DSP_COLS","line":15},{"name":"MAX_UTILIZATION_PCT","line":16},{"name":"tick","line":27},{"name":"reset","line":32},{"name":"grid_capacity","line":40},{"name":"utilization_pct","line":44},{"name":"check_utilization","line":49},{"name":"estimate_wirelength","line":54}],"imports":[{"name":"fpga::placement::Placement","line":8}],"terms":["fpga","testbench","placement","clk","period","grid","cols","rows","num","clb","bram","dsp","max","utilization","pct","tick","reset","capacity","estimate","wirelength"]},{"id":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_framework.t27","health":"warn","module":"integration_framework"}],"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","symbols":[{"name":"MAX_MODULES","line":7},{"name":"MAX_MESSAGES","line":8},{"name":"MAX_EVENTS","line":9},{"name":"INTEGRATION_VERSION","line":10},{"name":"create_module_registration","line":13},{"name":"get_registered_module_id","line":20},{"name":"get_registered_module_type","line":24},{"name":"get_registered_module_priority","line":28},{"name":"get_registered_module_status","line":32},{"name":"TYPE_NETWORK","line":37},{"name":"TYPE_TESTING","line":38},{"name":"type_documentation","line":39},{"name":"TYPE_VISUALIZATION","line":40},{"name":"TYPE_SIMULATION","line":41},{"name":"TYPE_PROFILING","line":42},{"name":"STATUS_IDLE","line":45},{"name":"STATUS_ACTIVE","line":46},{"name":"STATUS_BUSY","line":47},{"name":"STATUS_ERROR","line":48},{"name":"STATUS_OFFLINE","line":49},{"name":"create_integration_message","line":52},{"name":"get_integration_message_id","line":59},{"name":"get_integration_message_source","line":63},{"name":"get_integration_message_dest","line":67},{"name":"get_integration_message_type","line":71},{"name":"MSG_DATA","line":76},{"name":"MSG_CONTROL","line":77},{"name":"MSG_STATUS","line":78},{"name":"MSG_ERROR","line":79},{"name":"MSG_EVENT","line":80},{"name":"send_message","line":83},{"name":"receive_message","line":111},{"name":"create_event","line":128},{"name":"get_event_id","line":135},{"name":"get_event_type","line":139},{"name":"get_event_source","line":143},{"name":"get_event_data","line":147},{"name":"EVENT_MODULE_LOADED","line":152},{"name":"EVENT_MODULE_UNLOADED","line":153},{"name":"EVENT_TEST_COMPLETED","line":154},{"name":"EVENT_SIMULATION_STEP","line":155},{"name":"EVENT_VISUALIZATION_UPDATE","line":156},{"name":"subscribe_to_event","line":159},{"name":"publish_event","line":176},{"name":"create_state_sync","line":202},{"name":"get_sync_module_id","line":209},{"name":"get_sync_state_version","line":213},{"name":"get_sync_state_data","line":217},{"name":"get_sync_checksum","line":221},{"name":"synchronize_states","line":226},{"name":"create_error_propagation","line":251},{"name":"get_error_source","line":258},{"name":"get_error_code","line":262},{"name":"get_error_severity","line":266},{"name":"get_error_timestamp","line":270},{"name":"SEVERITY_INFO","line":275},{"name":"SEVERITY_WARNING","line":276},{"name":"SEVERITY_ERROR","line":277},{"name":"SEVERITY_CRITICAL","line":278},{"name":"propagate_error","line":281},{"name":"load_module","line":314},{"name":"unload_module","line":329},{"name":"create_dependency","line":346},{"name":"get_dependency_module_id","line":353},{"name":"get_dependency_depends_on","line":357},{"name":"get_dependency_type","line":361},{"name":"get_dependency_required","line":365},{"name":"check_dependencies","line":370},{"name":"create_resource_request","line":409},{"name":"get_resource_request_module","line":416},{"name":"get_resource_request_type","line":420},{"name":"get_resource_request_amount","line":424},{"name":"get_resource_request_priority","line":428},{"name":"RESOURCE_CPU","line":433},{"name":"RESOURCE_MEMORY","line":434},{"name":"RESOURCE_BANDWIDTH","line":435},{"name":"RESOURCE_STORAGE","line":436},{"name":"allocate_resources","line":439},{"name":"create_integration_report","line":476},{"name":"generate_integration_stats","line":485},{"name":"validate_integration_health","line":518}],"imports":[{"name":"base::types","line":5}],"terms":["net","integration","framework","max","modules","messages","events","create","registration","get","registered","priority","status","network","testing","documentation","visualization","simulation","profiling","idle","active","busy","offline","dest","msg","data","control","event","send","receive","loaded","unloaded","completed","step","subscribe","publish","state","sync","checksum","synchronize","states","propagation","severity","timestamp","info","warning","critical","propagate","load","unload","dependency","depends","required","dependencies","resource","request","amount","cpu","memory","bandwidth","storage","allocate","resources","report","generate","stats","validate","health"]},{"id":"f37a671427ac064c67a6c1ee374fa595f077684c34fccabaecf4c703a2bba2c4","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/sha256.t27","health":"warn","module":null}],"description":"SHA-256 Hash — TRI-27 Assembly Implementation Computes SHA-256 digest of a 64-byte (512-bit) message block Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-163: Input message block (64 bytes) 200-263: Message schedule W[0..63] (64 words)","symbols":[],"imports":[],"terms":["tri27","sha256"]},{"id":"f3819844f477cf0293deb96d3046a16d9283e7545cadb4f5d24c720be99743db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timer.t27","health":"ok","module":"MeshTimer"}],"description":"Simple exponential backoff timer","symbols":[{"name":"BASE_MS","line":6},{"name":"calc_timeout","line":9},{"name":"tick_counter","line":22},{"name":"is_expired","line":31}],"imports":[{"name":"base::types","line":4}],"terms":["net","timer","mesh","base","calc","timeout","tick","counter","expired"]},{"id":"f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/resource_scheduler.t27","health":"warn","module":"ResourceScheduler"}],"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","symbols":[{"name":"MAX_TASKS","line":7},{"name":"CPU_CAPACITY","line":8},{"name":"MEMORY_CAPACITY","line":9},{"name":"PRIORITY_HIGH","line":10},{"name":"PRIORITY_MEDIUM","line":11},{"name":"PRIORITY_LOW","line":12},{"name":"create_task_resource","line":15},{"name":"get_cpu_req","line":22},{"name":"get_mem_req","line":26},{"name":"get_priority","line":30},{"name":"get_task_id","line":34},{"name":"create_system_state","line":39},{"name":"get_used_cpu","line":46},{"name":"get_used_mem","line":50},{"name":"get_active_tasks","line":54},{"name":"get_sched_tick","line":58},{"name":"create_task_array","line":65},{"name":"get_task_resource","line":69},{"name":"can_admit_task","line":77},{"name":"has_cpu_capacity","line":90},{"name":"has_memory_capacity","line":96},{"name":"allocate_resources","line":103},{"name":"release_resources","line":119},{"name":"find_admittable_task","line":135},{"name":"calculate_cpu_utilization","line":207},{"name":"calculate_memory_utilization","line":211},{"name":"is_overloaded","line":217},{"name":"increment_tick","line":223},{"name":"count_tasks_by_priority","line":237}],"imports":[{"name":"base::types","line":5}],"terms":["net","resource","scheduler","max","tasks","cpu","capacity","memory","priority","high","medium","low","create","get","req","mem","system","state","used","active","sched","tick","array","admit","allocate","resources","release","find","admittable","calculate","utilization","overloaded","increment","count"]},{"id":"f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/olsr_routing.t27","health":"ok","module":"OlsrRouting"}],"description":"OLSR-style routing - ultra-simplified for T27 Basic neighbor table and best-neighbor selection","symbols":[{"name":"MAX_NEIGHBORS","line":7},{"name":"VALID_TIMEOUT","line":8},{"name":"create_neighbor","line":11},{"name":"get_id","line":17},{"name":"get_quality","line":21},{"name":"get_last_seen","line":25},{"name":"is_valid","line":29},{"name":"create_table","line":34},{"name":"get_entry","line":41},{"name":"get_id_at","line":48},{"name":"find_index","line":53},{"name":"set_entry","line":62},{"name":"update_or_add","line":78},{"name":"get_best_neighbor","line":94},{"name":"get_second_best","line":107},{"name":"select_mprs","line":130},{"name":"count_neighbors","line":137}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","olsr","routing","max","neighbors","valid","timeout","create","neighbor","get","quality","seen","table","entry","find","index","set","best","second","select","mprs","count"]},{"id":"f4725c1e5baf34cd48150fccccaf061f585340ffd5963986293fb3262ce8e6e3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_conformance_compare.t27","health":"ok","module":"VcdConformanceCompare"}],"description":"t27/specs/fpga/vcd_conformance_compare.t27 T27 VCD Conformance Comparison Engine Compares VCD simulation traces against conformance vectors Parses VCD signal values and checks them against expected results Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"CompareResult","line":13},{"name":"compare_result","line":20},{"name":"result_ok","line":29},{"name":"record_pass","line":34},{"name":"record_fail","line":39},{"name":"record_error","line":44},{"name":"all_passed","line":49},{"name":"SignalRef","line":55},{"name":"signal_ref","line":61},{"name":"ExpectedValue","line":71},{"name":"expected_value","line":78},{"name":"expected_value_masked","line":87},{"name":"extract_value","line":98},{"name":"compare_value","line":107},{"name":"compare_batch","line":116},{"name":"map_uart_tx_vector","line":138},{"name":"map_mac_cycle_result","line":151},{"name":"map_spi_transfer_bits","line":161},{"name":"map_led_output","line":172},{"name":"parse_timescale_ps","line":178},{"name":"cycle_to_timestamp_ps","line":189},{"name":"timestamp_to_cycle","line":194},{"name":"validate_signal_ref","line":202},{"name":"validate_expected","line":210}],"imports":[],"terms":["fpga","vcd","conformance","compare","record","pass","fail","passed","signal","ref","expected","masked","extract","batch","map","uart","vector","mac","cycle","spi","transfer","bits","led","parse","timescale","timestamp","validate"]},{"id":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/routing_etx.t27","health":"ok","module":"RoutingEtx"}],"description":"tri-net/specs/routing_etx.t27 Fixed-point formalization of the ETX link metric in src/routing.rs (T27-first). Delivery ratios and the RTI penalty are expressed in MILLI units (1000 = 1.0), ETX likewise in milli (1000 = 1.0 transmissions). f32::INFINITY has no integer analogue, so a DEAD link is the sentinel 0 (a real ETX is always >= 1000, so 0 is unambiguous). The live routing.rs path still runs the f32 version; a Rust","symbols":[{"name":"MILLI","line":14},{"name":"DEAD_EPS_MILLI","line":16},{"name":"OPTIMISTIC_MILLI","line":18},{"name":"ETX_DEAD","line":20},{"name":"PENALTY_MAX_MILLI","line":28},{"name":"etx_milli","line":32},{"name":"better_route","line":48},{"name":"path_etx","line":59},{"name":"is_feasible","line":74},{"name":"learn_ok","line":83}],"imports":[{"name":"base::types","line":12}],"terms":["net","routing","etx","milli","dead","eps","optimistic","penalty","max","better","route","path","feasible","learn"]},{"id":"f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/redundancy_management.t27","health":"warn","module":"RedundancyManagement"}],"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"PATH_VALID","line":9},{"name":"PATH_INVALID","line":10},{"name":"create_path","line":13},{"name":"get_path_valid","line":20},{"name":"get_hop1","line":24},{"name":"get_hop2","line":28},{"name":"get_hop3","line":32},{"name":"create_path_set","line":39},{"name":"set_slot4","line":42},{"name":"get_path","line":56},{"name":"find_primary_path","line":64},{"name":"find_backup_path","line":78},{"name":"invalidate_path","line":92},{"name":"validate_path","line":99},{"name":"count_valid_paths","line":106},{"name":"has_redundancy","line":116},{"name":"get_hop_count","line":121},{"name":"find_shortest_path","line":130},{"name":"failover","line":170}],"imports":[{"name":"base::types","line":5}],"terms":["net","redundancy","management","max","paths","hops","path","valid","invalid","create","get","hop1","hop2","hop3","set","slot4","find","primary","backup","invalidate","validate","count","hop","shortest","failover"]},{"id":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_receipt.t27","health":"ok","module":"TriComputeReceipt"}],"description":"TRI-NET compute-attesting receipt: bind an agent's COMPUTE result (not just relayed bytes) into a verifiable, chained receipt. tri_depin seals forwarded bytes (proof-of-relay); this seals WORK: a leaf commits {executor, task, input-hash, output, epoch} so a peer can confirm which executor produced which output for which input, and receipts chain prev->next like tri_ledger's state root -- tampering with any past result or reordering the chain changes the head.","symbols":[{"name":"RECEIPT_GENESIS","line":16},{"name":"R_C","line":17},{"name":"R_C2","line":18},{"name":"TAG_RECEIPT","line":27},{"name":"SHA_PAD","line":28},{"name":"DIGEST_MSG_BITS","line":29},{"name":"TAG_LEDGER","line":39},{"name":"LEDGER_GENESIS","line":40},{"name":"LEDGER_MSG_BITS","line":41},{"name":"MERKLE_MSG_BITS","line":42},{"name":"TAG_INPUT","line":43},{"name":"GF_ADD","line":49},{"name":"GF_MUL","line":50},{"name":"GF16","line":51},{"name":"rotl","line":53},{"name":"mix32","line":57},{"name":"receipt_leaf","line":68},{"name":"receipt_step","line":78},{"name":"verify_leaf","line":84},{"name":"verify_chain3","line":89},{"name":"receipt_leaf_hi","line":99},{"name":"verify_leaf64","line":107},{"name":"receipt_leaf_bound","line":119},{"name":"sign_digest","line":130},{"name":"sign_digest_req","line":141},{"name":"digest_pre","line":152},{"name":"receipt_leaf_gf","line":173},{"name":"FMT_GF_BINARY","line":182},{"name":"FMT_GFT","line":183},{"name":"GFT16_RUNG_ET","line":187},{"name":"GFT32_RUNG_ET","line":188},{"name":"GFT64_RUNG_ET","line":189},{"name":"GFT128_RUNG_ET","line":190},{"name":"receipt_leaf_gf_fmt","line":192},{"name":"receipt_leaf_gf_rung","line":204},{"name":"chain_step_full","line":214},{"name":"ledger_entry_pre","line":223},{"name":"merkle_pair_pre","line":254},{"name":"input_digest_pre","line":284},{"name":"verify_chain3_full","line":306}],"imports":[{"name":"base::types","line":14}],"terms":["net","compute","receipt","genesis","tag","sha","pad","digest","msg","bits","ledger","merkle","mul","gf16","rotl","mix32","leaf","step","verify","chain3","leaf64","bound","sign","req","pre","fmt","binary","gft","gft16","rung","gft32","gft64","gft128","chain","full","entry","pair"]},{"id":"f5365788339e42d2da324d01a67c9aae2abf18eb37351f7dd9dc4a8cc95ded4c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/registry.t27","health":"warn","module":"ToolsRegistry"}],"description":"specs/tools/registry.t27 Tools Registry Operations","symbols":[{"name":"create","line":14},{"name":"register","line":19},{"name":"unregister","line":24},{"name":"get","line":29},{"name":"has","line":34},{"name":"list","line":39},{"name":"list_by_category","line":44},{"name":"list_allowed","line":49},{"name":"list_dangerous","line":54},{"name":"set_permission","line":63},{"name":"get_permission","line":68},{"name":"allow","line":73},{"name":"deny","line":78},{"name":"ask","line":83},{"name":"register_custom","line":92},{"name":"list_custom","line":97},{"name":"unregister_custom","line":102},{"name":"register_all","line":111},{"name":"set_all_permissions","line":116},{"name":"clear","line":121},{"name":"find_by_description","line":130},{"name":"count","line":135},{"name":"is_empty","line":140}],"imports":[{"name":"base::types","line":6},{"name":"tools::schema","line":7}],"terms":["registry","create","register","unregister","get","list","category","allowed","dangerous","set","permission","allow","deny","ask","custom","permissions","clear","find","description","count","empty"]},{"id":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","sources":[{"repo":"ghashtag/t27","path":"specs/server/router.t27","health":"warn","module":"server-router"}],"description":"router.t27 — HTTP Router Specification URL routing, pattern matching, parameter extraction","symbols":[{"name":"MAX_ROUTE_DEPTH","line":19},{"name":"MAX_PATH_LENGTH","line":22},{"name":"PATH_ROOT","line":25},{"name":"PARAM_WILDCARD","line":28},{"name":"PATH_SEPARATOR","line":31},{"name":"RouteMethod","line":38},{"name":"Handler","line":49},{"name":"RouteParam","line":52},{"name":"HttpResponse","line":58},{"name":"Route","line":64},{"name":"RouteMatch","line":72},{"name":"Router","line":79},{"name":"PathSegments","line":85},{"name":"router_new","line":95},{"name":"route_add","line":103},{"name":"route","line":104},{"name":"route_match","line":115},{"name":"segments","line":116},{"name":"result","line":125},{"name":"path_split","line":140},{"name":"without_root","line":145},{"name":"segment","line":152},{"name":"match_route","line":163},{"name":"pattern_segments","line":164},{"name":"pattern_seg","line":178},{"name":"path_seg","line":179},{"name":"param_name","line":182},{"name":"param","line":183},{"name":"pattern_has_wildcard","line":195},{"name":"match_wildcard","line":200},{"name":"wildcard_idx","line":201},{"name":"wildcard_value","line":218},{"name":"param","line":219},{"name":"find_wildcard_index","line":227},{"name":"is_param","line":237},{"name":"param_name_extract","line":242},{"name":"join_segments","line":250},{"name":"concat","line":262},{"name":"append","line":271},{"name":"param_get","line":280},{"name":"path_matches","line":290},{"name":"pattern_without_wildcard","line":301},{"name":"wildcard_idx","line":302},{"name":"prefix_match","line":310},{"name":"router_set_fallback","line":323},{"name":"router_count","line":328},{"name":"router","line":337},{"name":"result","line":342},{"name":"result","line":347},{"name":"result","line":352},{"name":"result","line":367},{"name":"result","line":372},{"name":"params","line":409},{"name":"params","line":414},{"name":"path","line":510},{"name":"router","line":522},{"name":"segments","line":523},{"name":"params","line":535}],"imports":[{"name":"std","line":12}],"terms":["router","max","route","depth","path","length","root","param","wildcard","separator","method","handler","http","response","match","segments","split","segment","pattern","seg","idx","find","index","extract","join","concat","append","get","matches","prefix","set","fallback","count","params"]},{"id":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/ops.t27","health":"warn","module":"VSAOps"}],"description":"t27/specs/vsa/ops.t27 Vector Symbolic Architecture Operations Bind, Unbind, Bundle, Similarity for ternary hypervectors","symbols":[{"name":"VSA_DIM","line":16},{"name":"SIMD_WIDTH","line":17},{"name":"MAX_VECTORS","line":18},{"name":"SIM_COSINE","line":21},{"name":"SIM_HAMMING","line":22},{"name":"SIM_DOT","line":23},{"name":"BIND_IDENTITY","line":26},{"name":"BIND_INVERT","line":27},{"name":"bind","line":38},{"name":"ai","line":44},{"name":"bi","line":45},{"name":"product","line":53},{"name":"unbind","line":71},{"name":"bundle2","line":85},{"name":"ai","line":91},{"name":"bi","line":92},{"name":"sum","line":100},{"name":"trit","line":101},{"name":"bundle3","line":117},{"name":"ai","line":123},{"name":"bi","line":124},{"name":"ci","line":125},{"name":"sum","line":127},{"name":"trit","line":129},{"name":"similarity","line":147},{"name":"cosine_similarity","line":159},{"name":"dot","line":160},{"name":"norm_a","line":161},{"name":"norm_b","line":162},{"name":"hamming_similarity","line":173},{"name":"dist","line":174},{"name":"dot_product","line":180},{"name":"product","line":185},{"name":"vector_norm","line":197},{"name":"hamming_distance","line":213},{"name":"permute","line":234},{"name":"normalized_shift","line":238},{"name":"src_idx","line":242},{"name":"encode_sequence","line":253},{"name":"permuted","line":258},{"name":"probe_sequence","line":269},{"name":"permuted","line":270},{"name":"COPTIC_DIM","line":555},{"name":"coptic_bind","line":559},{"name":"ai","line":563},{"name":"bi","line":564},{"name":"coptic_unbind","line":577},{"name":"coptic_bundle3","line":581},{"name":"sum","line":585},{"name":"coptic_similarity","line":594}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10}],"terms":["vsa","ops","vsaops","dim","simd","width","max","vectors","sim","cosine","hamming","dot","bind","identity","invert","product","unbind","bundle2","sum","trit","bundle3","similarity","norm","dist","vector","distance","permute","normalized","shift","idx","encode","sequence","permuted","probe","coptic"]},{"id":"f5fdfdf57c4b772c5d9baeae4cc8196dd300a217de71325afbbc83815f64b6a1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/baseline5_decoder.t27","health":"warn","module":"TrinityBaseline5DecoderT27"}],"description":"","symbols":[{"name":"on_comb","line":4}],"imports":[],"terms":["dmitrii","memory","rtl","baseline5","decoder","baseline5decoder","comb"]},{"id":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/quarantine_manager.t27","health":"ok","module":"quarantine_manager"}],"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUARANTINE_DURATION","line":8},{"name":"VIOLATION_THRESHOLD","line":9},{"name":"TRUST_THRESHOLD","line":10},{"name":"create_quarantine_state","line":13},{"name":"get_quarantine_node_id","line":20},{"name":"get_quarantine_status","line":24},{"name":"get_start_time","line":28},{"name":"get_violation_count","line":32},{"name":"STATUS_NORMAL","line":37},{"name":"STATUS_QUARANTINED","line":38},{"name":"STATUS_SUSPENDED","line":39},{"name":"STATUS_BANNED","line":40},{"name":"is_quarantined","line":43},{"name":"quarantine_node","line":54},{"name":"release_quarantine","line":62},{"name":"suspend_node","line":70},{"name":"ban_node","line":78},{"name":"should_release_quarantine","line":85},{"name":"update_quarantine_state","line":100},{"name":"create_violation_record","line":109},{"name":"get_violation_node_id","line":116},{"name":"get_violation_type","line":120},{"name":"get_violation_severity","line":124},{"name":"get_violation_timestamp","line":128},{"name":"VIOLATION_PACKET_FLOOD","line":133},{"name":"VIOLATION_AUTH_FAILURE","line":134},{"name":"VIOLATION_MALFORMED_PACKET","line":135},{"name":"VIOLATION_ANOMALOUS_BEHAVIOR","line":136},{"name":"VIOLATION_RESOURCE_ABUSE","line":137},{"name":"VIOLATION_TRUST_VIOLATION","line":138},{"name":"record_violation","line":141},{"name":"should_quarantine","line":160},{"name":"calculate_quarantine_severity","line":172},{"name":"find_quarantined_node","line":193},{"name":"count_quarantined_nodes","line":208},{"name":"get_quarantine_reason","line":223},{"name":"is_communication_allowed","line":242},{"name":"calculate_health_impact","line":264},{"name":"recommend_quarantine_action","line":276},{"name":"create_notification","line":294},{"name":"get_notification_node_id","line":301},{"name":"get_notification_action","line":305},{"name":"get_notification_reason","line":309},{"name":"get_notification_duration","line":313}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","quarantine","manager","max","nodes","duration","violation","threshold","trust","create","state","get","node","status","start","time","count","normal","quarantined","suspended","banned","release","suspend","ban","record","severity","timestamp","packet","flood","auth","failure","malformed","anomalous","behavior","resource","abuse","calculate","find","reason","communication","allowed","health","impact","recommend","action","notification"]},{"id":"f62d0b2901bf83c67eb9555c33c2f92d010b52354ba130e321aa9ccba5bf2f48","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru_cache.t27","health":"ok","module":"TriLruCache"}],"description":"t27/specs/","symbols":[{"name":"LRUCache","line":13},{"name":"Node","line":22},{"name":"init","line":35},{"name":"get","line":40},{"name":"put","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","lru","cache","lrucache","node","init","get","put"]},{"id":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/parameter-golf/phi_init.t27","health":"ok","module":"PhiWeightInit"}],"description":"t27/specs/parameter-golf/phi_init.t27 φ-Based Weight Initialization for Parameter Golf Derivation from sacred physics + GF16 quantization","symbols":[{"name":"PhiInitConfig","line":21},{"name":"phi_init_std","line":29},{"name":"base_std","line":31},{"name":"depth_ratio","line":40},{"name":"phi_scale","line":41},{"name":"QK_GAIN_PHI_CUBED","line":54},{"name":"QK_GAIN_PHI_OPTIMAL","line":55},{"name":"recommend_qk_gain","line":57},{"name":"gf16_aware_init","line":71},{"name":"numel","line":72},{"name":"std","line":76},{"name":"sample","line":86},{"name":"TIED_EMBED_STD","line":100},{"name":"TIED_EMBED_PHI_STD","line":101},{"name":"tied_embed_init_std","line":103}],"imports":[{"name":"numeric::gf16","line":7},{"name":"numeric::phi_ratio","line":8},{"name":"sacred::constants","line":9}],"terms":["parameter","golf","phi","init","weight","config","std","base","depth","ratio","scale","gain","cubed","optimal","recommend","gf16","aware","numel","sample","tied","embed"]},{"id":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/formal_tb.t27","health":"ok","module":"Formal_Testbench"}],"description":"t27/specs/fpga/testbench/formal_tb.t27 Formal Verification Testbench Tests SVA assertion generation, cover points, and proof properties","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"NUM_ASSERTIONS","line":12},{"name":"NUM_COVER_POINTS","line":13},{"name":"NUM_ASSUME_POINTS","line":14},{"name":"tick","line":26},{"name":"reset","line":31},{"name":"check_immediate","line":39},{"name":"check_concurrent","line":46},{"name":"cover_point","line":54},{"name":"run_proof","line":61}],"imports":[{"name":"fpga::formal::Formal","line":8}],"terms":["fpga","testbench","formal","clk","period","sim","timeout","num","assertions","cover","points","assume","tick","reset","immediate","concurrent","point","proof"]},{"id":"f7a2a59c6a856ec32ee04c6890f88e68bebc8bb32e57542e5d1eb797241b0c87","sources":[{"repo":"ghashtag/t27","path":"specs/server/api.t27","health":"ok","module":"Api"}],"description":"specs/server/api.t27 API Client Types Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"MessageRole","line":14},{"name":"ContentBlockType","line":20},{"name":"Message","line":27},{"name":"TextBlock","line":36},{"name":"ToolUseBlock","line":41},{"name":"ToolResultBlock","line":48},{"name":"ThinkingBlock","line":54},{"name":"Usage","line":63},{"name":"ApiResponse","line":68},{"name":"DEFAULT_TIMEOUT_SECONDS","line":79},{"name":"DEFAULT_MAX_TOKENS","line":80},{"name":"DEFAULT_BASE_URL","line":81},{"name":"DEFAULT_MODEL","line":82},{"name":"get_block_type_name","line":88},{"name":"get_role_name","line":104},{"name":"total_usage","line":117}],"imports":[{"name":"base::types","line":8}],"terms":["api","role","content","block","text","tool","thinking","usage","response","default","timeout","seconds","max","tokens","base","url","model","get","total"]},{"id":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/exit_codes.t27","health":"ok","module":"TriExitCodes"}],"description":"t27/specs/","symbols":[{"name":"ExitCode","line":17}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","exit","codes"]},{"id":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/norm.t27","health":"ok","module":"LayerNorm"}],"description":"t27/specs/ml/transformer/norm.t27","symbols":[{"name":"PHI","line":16},{"name":"INV_PHI_SQUARED","line":17},{"name":"PHI_EPSILON","line":18},{"name":"DEFAULT_EPSILON","line":21},{"name":"STRAND_I_START","line":24},{"name":"STRAND_I_END","line":25},{"name":"STRAND_II_START","line":26},{"name":"STRAND_II_END","line":27},{"name":"STRAND_III_START","line":28},{"name":"STRAND_III_END","line":29},{"name":"NormConfig","line":35},{"name":"NormState","line":43},{"name":"NormGradients","line":52},{"name":"Strand","line":58},{"name":"ForwardResult","line":68},{"name":"init","line":82},{"name":"forward","line":95},{"name":"forward_strand","line":107},{"name":"backward","line":114},{"name":"backward_strand","line":122},{"name":"update","line":128},{"name":"normalize_vector","line":135},{"name":"phi_init_gamma","line":145},{"name":"phi_init_beta","line":152},{"name":"phi_normalize","line":159},{"name":"create_strands","line":166}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"math::statistics","line":8},{"name":"numeric::gf16","line":9}],"terms":["transformer","norm","layer","phi","inv","squared","epsilon","default","strand","start","end","iii","config","state","gradients","forward","init","backward","normalize","vector","gamma","beta","create","strands"]},{"id":"f93bfbf9b9f7fb215faed70ad4a01a4fa9d8e00ef5daed464c8a949d2a56b0d8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_loss_injection.t27","health":"ok","module":"PacketLossInjection"}],"description":"Packet loss injection - simulates network errors Tests CRC error detection, lost ACKs, duplicates, replay","symbols":[{"name":"ERROR_NONE","line":8},{"name":"ERROR_BIT_FLIP","line":9},{"name":"ERROR_CRC_FAIL","line":10},{"name":"ERROR_DUPLICATE","line":11},{"name":"ERROR_OUT_OF_ORDER","line":12},{"name":"ERROR_REPLAY","line":13},{"name":"inject_bit_flip","line":16},{"name":"calculate_crc","line":25},{"name":"verify_crc","line":34},{"name":"inject_crc_error","line":39},{"name":"duplicate_packet","line":44},{"name":"is_duplicate","line":49},{"name":"inject_out_of_order","line":54},{"name":"check_replay","line":59},{"name":"extract_sequence","line":63}],"imports":[{"name":"base::types","line":5}],"terms":["net","packet","loss","injection","bit","flip","crc","fail","duplicate","out","order","replay","inject","calculate","verify","extract","sequence"]},{"id":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf20.t27","health":"warn","module":"GF20"}],"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 — 20-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 6 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF20","line":34},{"name":"encode","line":43},{"name":"sign","line":48},{"name":"abs_val","line":49},{"name":"exp_unbiased","line":52},{"name":"exp_biased","line":53},{"name":"exp_clamped","line":56},{"name":"mant","line":59},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp","line":171},{"name":"pow","line":177}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf20","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow"]},{"id":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/gen.t27","health":"warn","module":"gen_commands"}],"description":"gen.t27 -- Code Generation with TDD Validation Commands for generating code from t27 specs with TDD enforcement","symbols":[{"name":"GenOptions","line":13},{"name":"CodegenOptions","line":22},{"name":"TestGenOptions","line":30},{"name":"gen","line":41},{"name":"content","line":50},{"name":"context","line":58},{"name":"output_dir","line":138},{"name":"mkdir_result","line":145},{"name":"impl_output","line":154},{"name":"codegen_opts","line":158},{"name":"zig_code","line":165},{"name":"testgen_opts","line":184},{"name":"testgen","line":191},{"name":"test_code","line":192},{"name":"test_output","line":194},{"name":"test_result","line":195},{"name":"testgen_opts","line":210},{"name":"testgen","line":217},{"name":"conformance_json","line":218},{"name":"conf_dir","line":221},{"name":"conf_result","line":227},{"name":"gen_all","line":266},{"name":"spec_files","line":267},{"name":"result","line":285},{"name":"basename_without_ext","line":314},{"name":"filename_start","line":323},{"name":"Program","line":343},{"name":"Constant","line":350},{"name":"TestSection","line":355},{"name":"TestCase","line":359},{"name":"InvariantSection","line":366},{"name":"Invariant","line":370},{"name":"SpecDecl","line":376},{"name":"TestBlock","line":381},{"name":"SpecInvariant","line":386},{"name":"ParseError","line":391},{"name":"ParseContext","line":397},{"name":"has_errors","line":401},{"name":"TestGen","line":406},{"name":"new","line":410},{"name":"generate","line":417},{"name":"generate_json","line":426},{"name":"generate_code","line":431},{"name":"result","line":468},{"name":"result","line":472},{"name":"result","line":476}],"imports":[],"terms":["compiler","cli","gen","commands","options","codegen","content","dir","mkdir","impl","opts","zig","testgen","conformance","json","conf","basename","ext","filename","start","program","constant","section","case","invariant","decl","block","parse","generate"]},{"id":"f99a681913c3bcb832745ccec96cfef0660c61ae17e99f4910a4ccc43e19d775","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitset.t27","health":"warn","module":"TriBitset"}],"description":"t27/specs/","symbols":[{"name":"Bitset","line":13},{"name":"init","line":24},{"name":"set","line":29},{"name":"clear","line":34},{"name":"test","line":39},{"name":"union","line":44},{"name":"intersect","line":49},{"name":"deinit","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","bitset","init","set","clear","union","intersect","deinit"]},{"id":"f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_router.t27","health":"warn","module":"MultiPathRouter"}],"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","symbols":[{"name":"MAX_PATHS","line":6},{"name":"ETX_THRESHOLD_GOOD","line":9},{"name":"ETX_THRESHOLD_POOR","line":10},{"name":"select_path_index","line":13},{"name":"path_quality_score","line":30},{"name":"needs_failover","line":49},{"name":"next_path_index","line":58},{"name":"path_reliability","line":68}],"imports":[],"terms":["net","multipath","router","multi","path","max","paths","etx","threshold","good","poor","select","index","quality","score","failover","reliability"]},{"id":"fa7339fbc62c69d3c8cf93dbfff307d4ff68314f0365d2466bd1fc9016b2ffcc","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/fbb_active_path.t27","health":"ok","module":"fbb-active-path"}],"description":"fbb_active_path.t27 — FPGA Feedback Bridge Active Path Active path management for FPGA feedback bridge","symbols":[{"name":"FBB_OPCODE_BASE","line":12},{"name":"FBB_OP_PATH_SELECT","line":14},{"name":"FBB_OP_PATH_ENABLE","line":15},{"name":"FBB_OP_PATH_DISABLE","line":16},{"name":"FBB_OP_PATH_STATUS","line":17},{"name":"FBB_OP_PATH_RESET","line":18},{"name":"FBB_OP_PATH_BYPASS","line":19},{"name":"FBB_OP_PATH_LOOPBACK","line":20},{"name":"FBB_OP_PATH_CONFIG","line":21},{"name":"FBB_OP_MAX","line":22},{"name":"FBB_PATH_COUNT","line":24},{"name":"FBB_MAX_PATHS","line":25},{"name":"FBB_PATH_STATE_DISABLED","line":27},{"name":"FBB_PATH_STATE_ENABLED","line":28},{"name":"FBB_PATH_STATE_ACTIVE","line":29},{"name":"FBB_PATH_STATE_ERROR","line":30},{"name":"FBB_PATH_STATE_BYPASSED","line":31},{"name":"FBB_PATH_STATE_MAX","line":32},{"name":"FBB_LATENCY_MIN_CYCLES","line":34},{"name":"FBB_LATENCY_MAX_CYCLES","line":35},{"name":"FBB_DEFAULT_LATENCY","line":36},{"name":"FBB_BANDWIDTH_MIN_MBPS","line":38},{"name":"FBB_BANDWIDTH_MAX_MBPS","line":39},{"name":"FBB_DEFAULT_BANDWIDTH","line":40},{"name":"FbbOp","line":46},{"name":"FbbPathState","line":57},{"name":"FbbPathConfig","line":65},{"name":"FbbPathStatus","line":74},{"name":"FbbActivePath","line":83},{"name":"FbbCommand","line":90},{"name":"fbb_path_config_init","line":103},{"name":"fbb_path_config_low_latency","line":116},{"name":"fbb_path_config_high_bandwidth","line":129},{"name":"fbb_path_config_enable","line":142},{"name":"fbb_path_status_init","line":159},{"name":"fbb_path_status_enable","line":172},{"name":"fbb_path_status_activate","line":185},{"name":"fbb_path_status_bypass","line":198},{"name":"fbb_path_status_error","line":211},{"name":"fbb_path_status_update_metrics","line":224},{"name":"fbb_active_path_init","line":241},{"name":"fbb_active_path_select","line":256},{"name":"idx","line":257},{"name":"fbb_active_path_enable_bypass","line":276},{"name":"idx","line":277},{"name":"fbb_active_path_disable_bypass","line":291},{"name":"fbb_active_path_enable_loopback","line":309},{"name":"fbb_active_path_disable_loopback","line":320},{"name":"fbb_active_path_get_path","line":331},{"name":"idx","line":332},{"name":"fbb_active_path_update_path_metrics","line":338},{"name":"idx","line":339},{"name":"fbb_path_index_valid","line":356},{"name":"fbb_latency_valid","line":362},{"name":"fbb_bandwidth_valid","line":368},{"name":"fbb_path_config_valid","line":374},{"name":"encode_fbb_cmd","line":386},{"name":"op_field","line":388},{"name":"path_field","line":389},{"name":"param1_field","line":390},{"name":"param2_field","line":391},{"name":"decode_fbb_cmd","line":397},{"name":"op","line":398},{"name":"path","line":399},{"name":"param1","line":400},{"name":"param2","line":401}],"imports":[],"terms":["chips","euler","fpga","fbb","active","path","opcode","base","select","enable","disable","status","reset","bypass","loopback","config","max","count","paths","state","disabled","enabled","bypassed","latency","min","cycles","default","bandwidth","mbps","init","low","high","activate","metrics","idx","get","index","valid","encode","cmd","field","param1","param2","decode"]},{"id":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_split_optimality.t27","health":"ok","module":"PhiSplitOptimality"}],"description":"t27/specs/math/phi_split_optimality.t27 Phi-Split Theorems -- Self-Similarity + Optimal Rounding (CORRECTED) MATH-OPTIMALITY-001 -- Foundation for GoldenFloat being non-random THEOREM 1 (Golden Self-Similarity): phi is unique self-similar proportion for bit allocation THEOREM 2 (Optimal Rounding): round((N-1)/phi^2) minimizes phi-distance (7/7 match)","symbols":[{"name":"PHI_TARGET","line":28},{"name":"ProofStep","line":34},{"name":"optimal_ratio_by_self_similarity","line":50},{"name":"r","line":52},{"name":"m","line":53},{"name":"e","line":54},{"name":"optimal_allocation_by_rounding","line":70},{"name":"available","line":71},{"name":"phi_sq","line":72},{"name":"exp_raw","line":75},{"name":"exp_bits","line":76},{"name":"mant_bits","line":77},{"name":"ratio","line":80},{"name":"phi_dist","line":81},{"name":"optimal_ratio_by_am_gm","line":94},{"name":"half","line":96},{"name":"round","line":100},{"name":"abs","line":117},{"name":"self_similarity_proof_steps","line":128},{"name":"optimal_rounding_proof_steps","line":153},{"name":"GFFamilyVerification","line":177},{"name":"verify_7_7_match","line":187},{"name":"phi_sq","line":188},{"name":"formats","line":191},{"name":"available","line":205},{"name":"phi_raw","line":206},{"name":"phi_rounded","line":207}],"imports":[{"name":"math::constants","line":10},{"name":"math::sacred_physics","line":11}],"terms":["math","phi","split","optimality","target","proof","step","optimal","ratio","self","similarity","allocation","rounding","available","exp","raw","bits","mant","dist","half","round","abs","steps","gffamily","verification","verify","match","formats","rounded"]},{"id":"fa88bd16c82f68d02449eadfa2607d629ed78c1610d2b88f387f62c1c396fd0b","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/runtime.t27","health":"warn","module":"triruntime"}],"description":"compiler/runtime/runtime.t27 -- T27 Runtime Specification Runtime environment for executing t27 programs","symbols":[{"name":"STACK_SIZE","line":10},{"name":"HEAP_SIZE","line":11},{"name":"MAX_THREADS","line":12},{"name":"MAX_CHANNELS","line":13},{"name":"ThreadState","line":16},{"name":"Runtime","line":23},{"name":"runtime_init","line":53},{"name":"runtime_execute","line":64},{"name":"runtime_shutdown","line":72},{"name":"alloc_stack","line":79},{"name":"alloc_heap","line":87},{"name":"init_threads","line":95},{"name":"init_channels","line":103},{"name":"setup_exception_handler","line":113},{"name":"setup_stack_frame","line":119},{"name":"runtime_alloc","line":127},{"name":"ptr","line":131},{"name":"runtime_free","line":137},{"name":"channel_create","line":144},{"name":"buffer","line":148},{"name":"channel_send","line":161},{"name":"channel_recv","line":172},{"name":"thread_spawn","line":182},{"name":"thread_yield","line":197},{"name":"print_stats","line":203},{"name":"ptr1","line":230},{"name":"ptr2","line":231},{"name":"channel_id","line":242},{"name":"sent","line":244},{"name":"t1","line":254},{"name":"t2","line":255},{"name":"t3","line":256},{"name":"sp_before","line":276},{"name":"p1","line":286},{"name":"p2","line":287},{"name":"rt","line":293},{"name":"rt","line":299},{"name":"MAX_THREADS","line":306},{"name":"channel_id","line":331}],"imports":[],"terms":["compiler","runtime","triruntime","stack","size","heap","max","threads","channels","thread","state","init","execute","shutdown","alloc","setup","exception","handler","frame","ptr","free","channel","create","buffer","send","recv","spawn","yield","print","stats","ptr1","ptr2","sent"]},{"id":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/auto_config.t27","health":"warn","module":"auto_config"}],"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_PARAMS","line":8},{"name":"CONFIG_VERSION","line":9},{"name":"AUTO_DISCOVERY_INTERVAL","line":10},{"name":"create_config_param","line":16},{"name":"get_param_id","line":23},{"name":"get_param_value","line":27},{"name":"get_param_scope","line":31},{"name":"get_param_status","line":35},{"name":"SCOPE_NODE","line":40},{"name":"SCOPE_LINK","line":41},{"name":"SCOPE_NETWORK","line":42},{"name":"SCOPE_GLOBAL","line":43},{"name":"STATUS_PENDING","line":46},{"name":"STATUS_APPLIED","line":47},{"name":"STATUS_FAILED","line":48},{"name":"STATUS_OVERRIDE","line":49},{"name":"PARAM_TX_POWER","line":52},{"name":"PARAM_CHANNEL","line":53},{"name":"PARAM_DATA_RATE","line":54},{"name":"PARAM_RETRY_LIMIT","line":55},{"name":"PARAM_HELLO_INTERVAL","line":56},{"name":"PARAM_ROUTE_TIMEOUT","line":57},{"name":"PARAM_QOS_ENABLED","line":58},{"name":"PARAM_SECURITY_LEVEL","line":59},{"name":"default_config_at","line":65},{"name":"get_config_value","line":78},{"name":"set_config_value","line":93},{"name":"discover_network_params","line":111},{"name":"apply_config","line":149},{"name":"apply_all_pending","line":170},{"name":"validate_config","line":189},{"name":"optimize_config","line":230},{"name":"sync_config","line":265},{"name":"rollback_config","line":303},{"name":"backup_element","line":333},{"name":"calculate_config_drift","line":338},{"name":"discover_neighbors","line":374},{"name":"assign_node_role","line":389}],"imports":[{"name":"base::types","line":5}],"terms":["net","auto","config","max","nodes","params","discovery","interval","create","param","get","scope","status","node","link","network","global","applied","failed","override","power","channel","data","rate","retry","limit","hello","route","timeout","qos","enabled","security","level","default","set","discover","apply","validate","optimize","sync","rollback","backup","element","calculate","drift","neighbors","assign","role"]},{"id":"fae8329c717a697cf1938a8aece2f3b92ab31f6ac7bea6abfdeea41d5b11dea7","sources":[{"repo":"ghashtag/t27","path":"specs/ar/datalog_engine.t27","health":"ok","module":null}],"description":"spec: DatalogEngine Datalog reasoning engine for neuro-symbolic AI","symbols":[{"name":"Fact","line":9},{"name":"Rule","line":16},{"name":"Database","line":22},{"name":"QueryResult","line":28},{"name":"new_database","line":35},{"name":"add_fact","line":43},{"name":"add_rule","line":53},{"name":"query","line":63},{"name":"facts_match","line":98},{"name":"rule_heads_match","line":109},{"name":"apply_rule","line":114},{"name":"eval_bottom_up","line":148},{"name":"fact_in_db","line":182},{"name":"eval_top_down","line":192}],"imports":[],"terms":["datalog","engine","fact","rule","database","query","facts","match","heads","apply","eval","bottom","top","down"]},{"id":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/stdlib.t27","health":"warn","module":"Stdlib"}],"description":"","symbols":[{"name":"StdlibResult","line":6},{"name":"Vec","line":12},{"name":"Str","line":18},{"name":"Map","line":23},{"name":"Opt","line":29},{"name":"Result","line":34},{"name":"Iterator","line":40},{"name":"DEFAULT_CAPACITY","line":46},{"name":"MAX_MAP_ENTRIES","line":47},{"name":"MAX_STRING_LEN","line":48},{"name":"vec_new","line":50},{"name":"vec_with_capacity","line":54},{"name":"vec_push","line":58},{"name":"vec_pop","line":67},{"name":"vec_get","line":75},{"name":"vec_set","line":82},{"name":"vec_len","line":90},{"name":"vec_clear","line":94},{"name":"vec_is_empty","line":98},{"name":"vec_contains","line":102},{"name":"vec_index_of","line":113},{"name":"vec_reverse","line":124},{"name":"str_new","line":136},{"name":"str_from","line":140},{"name":"str_len","line":151},{"name":"str_is_empty","line":155},{"name":"str_eq","line":159},{"name":"str_concat","line":173},{"name":"str_char_at","line":190},{"name":"str_contains","line":197},{"name":"str_index_of","line":208},{"name":"str_sub","line":219},{"name":"map_new","line":230},{"name":"map_insert","line":238},{"name":"map_get","line":256},{"name":"map_contains","line":267},{"name":"map_len","line":278},{"name":"opt_some","line":282},{"name":"opt_none","line":286},{"name":"opt_is_some","line":290},{"name":"opt_is_none","line":294},{"name":"opt_unwrap","line":298},{"name":"opt_unwrap_or","line":302},{"name":"result_ok","line":309},{"name":"result_err","line":313},{"name":"result_is_ok","line":317},{"name":"result_is_err","line":321},{"name":"result_unwrap","line":325},{"name":"result_unwrap_or","line":329},{"name":"result_error_code","line":336},{"name":"iter_new","line":340},{"name":"iter_has_next","line":344},{"name":"iter_next","line":348},{"name":"iter_peek","line":357},{"name":"iter_pos","line":364},{"name":"iter_remaining","line":368},{"name":"fmt_u32","line":375},{"name":"fmt_i32","line":400},{"name":"fmt_bool","line":418},{"name":"fmt_hex","line":431}],"imports":[{"name":"compiler::parser","line":3},{"name":"compiler::lexer","line":4}],"terms":["compiler","stdlib","vec","str","map","opt","iterator","default","capacity","max","entries","len","push","pop","get","set","clear","empty","contains","index","reverse","concat","char","sub","insert","unwrap","err","iter","peek","pos","remaining","fmt","u32","i32","hex"]},{"id":"fb7ac4208772624a36f6651fd54d4c1347a96bad3b78093ee5c248f42f389a2a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/verilog/codegen.t27","health":"ok","module":null}],"description":"codegen.t27 — Code Generator for Verilog Generates synthesizable Verilog from t27 AST","symbols":[{"name":"VerilogCodegenOptions","line":8},{"name":"VerilogCodegen","line":16},{"name":"VerilogCodegen","line":28},{"name":"calculate_width","line":47},{"name":"VerilogCodegen","line":62},{"name":"VerilogCodegen","line":108},{"name":"VerilogCodegen","line":119},{"name":"VerilogCodegen","line":131},{"name":"VerilogCodegen","line":153},{"name":"VerilogCodegen","line":193},{"name":"VerilogCodegen","line":217},{"name":"VerilogCodegen","line":238},{"name":"VerilogCodegen","line":255},{"name":"VerilogCodegen","line":276},{"name":"VerilogCodegen","line":287},{"name":"VerilogCodegen","line":304},{"name":"VerilogCodegen","line":320},{"name":"VerilogCodegen","line":331},{"name":"VerilogCodegen","line":339},{"name":"VerilogCodegen","line":351},{"name":"VerilogCodegen","line":362},{"name":"VerilogCodegen","line":372},{"name":"VerilogCodegen","line":442},{"name":"VerilogCodegen","line":448},{"name":"format_hex","line":510},{"name":"VerilogCodegen","line":524},{"name":"VerilogCodegen","line":529},{"name":"VerilogCodegen","line":540},{"name":"VerilogCodegen","line":545},{"name":"StringBuilder","line":552},{"name":"StringBuilder","line":560},{"name":"StringBuilder","line":569},{"name":"generate_verilog","line":574}],"imports":[],"terms":["fpga","compiler","codegen","verilog","options","calculate","width","format","hex","builder","generate"]},{"id":"fb918ae9b35c05b59b4dbbdfe5a390ed3fd0d48434b4a4aa2543abe94145e459","sources":[{"repo":"ghashtag/t27","path":"specs/sync/index.t27","health":"warn","module":"sync-index"}],"description":"sync/index.t27 — Sync Index Specification Sync operations, checkpointing, delta management","symbols":[{"name":"INDEX_VERSION","line":20},{"name":"MAX_INDEX_ENTRIES","line":23},{"name":"INDEX_BLOCK_SIZE","line":26},{"name":"DELTA_COMPRESSION_THRESHOLD","line":29},{"name":"CHECKPOINT_RETENTION","line":32},{"name":"IndexEntryType","line":35},{"name":"IndexStatus","line":43},{"name":"IndexEntry","line":55},{"name":"IndexMetadata","line":65},{"name":"DeltaOp","line":74},{"name":"IndexBlock","line":83},{"name":"IndexState","line":90},{"name":"ReplayPosition","line":98},{"name":"ReplayResult","line":105},{"name":"DeltaResult","line":113},{"name":"IndexQuery","line":121},{"name":"index_state_new","line":133},{"name":"entry_create","line":149},{"name":"entry_tombstone","line":161},{"name":"entry_metadata_create","line":173},{"name":"delta_add","line":185},{"name":"delta_remove","line":196},{"name":"delta_modify","line":207},{"name":"block_create","line":218},{"name":"replay_position_create","line":227},{"name":"query_create","line":236},{"name":"query_with_version_range","line":246},{"name":"query_with_limit","line":256},{"name":"index_add","line":266},{"name":"index_remove","line":274},{"name":"index_get","line":282},{"name":"index_query","line":288},{"name":"limit","line":290},{"name":"checkpoint_create","line":300},{"name":"checkpoint","line":301},{"name":"delta_generate","line":317},{"name":"test_op","line":321},{"name":"delta_replay","line":333},{"name":"checkpoint_replay","line":352},{"name":"trim_checkpoints","line":375},{"name":"start_idx","line":380},{"name":"append_checkpoints","line":385},{"name":"append_checkpoints_slice","line":395},{"name":"append_deltas","line":405},{"name":"append_delta_slice","line":415},{"name":"concat_bytes","line":422},{"name":"append_byte","line":429},{"name":"checkpoint_count","line":436},{"name":"block_count","line":441},{"name":"entry_count","line":446},{"name":"sync_id_generate","line":451},{"name":"timestamp","line":452},{"name":"bytes","line":455},{"name":"int_to_bytes","line":464},{"name":"get_timestamp_ms","line":479},{"name":"min","line":485},{"name":"checksum_compute","line":490},{"name":"state","line":500},{"name":"entry","line":505},{"name":"entry","line":511},{"name":"op","line":516},{"name":"op","line":521},{"name":"op","line":526},{"name":"entry","line":531},{"name":"block","line":532},{"name":"query","line":537},{"name":"query","line":542},{"name":"pos","line":547},{"name":"state","line":552},{"name":"checkpoint","line":553},{"name":"trimmed","line":567},{"name":"entry","line":714}],"imports":[{"name":"std","line":12}],"terms":["sync","index","max","entries","block","size","delta","compression","threshold","checkpoint","retention","entry","status","metadata","state","replay","position","query","create","tombstone","remove","modify","range","limit","get","generate","trim","checkpoints","start","idx","append","slice","deltas","concat","bytes","byte","count","timestamp","int","min","checksum","compute","pos","trimmed"]},{"id":"fb91e0ec7c9679153e03095354faeddfd4d7ca6d24843471d45ab3e597020e0d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/relu_activation.t27","health":"ok","module":"Relu"}],"description":"t27/specs/","symbols":[{"name":"ZERO","line":13},{"name":"ReLUConfig","line":19},{"name":"forward","line":29},{"name":"backward","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","relu","zero","luconfig","forward","backward"]},{"id":"fbb89f4449007cd9440dc4dd352a5c0c955b9220a1e06c286fa8df9302584ec2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_dfs.t27","health":"ok","module":"TriGraphDfs"}],"description":"t27/specs/","symbols":[{"name":"DFSResult","line":14},{"name":"traverse","line":25}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"TriGraphBfs::Graph","line":8}],"terms":["graph","dfs","dfsresult","traverse"]},{"id":"fc282db3e37df05cc48ed354ff1514c1f4be6ba78659a0d0d53fa384d79e763d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/measurement.t27","health":"ok","module":"TriMeasurement"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","measurement"]},{"id":"fc53854b86afb6ee601a43a354b0e34f3ec89243d3b896d57d84b1952cdc4d61","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/colors.t27","health":"ok","module":"TriColors"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","colors"]},{"id":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/link_quality_monitor.t27","health":"ok","module":"LinkQualityMonitor"}],"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","symbols":[{"name":"ALPHA_Q8","line":6},{"name":"ONE_MINUS_ALPHA_Q8","line":7},{"name":"MAX_HISTORY","line":10},{"name":"MIN_HISTORY","line":11},{"name":"QUALITY_GOOD","line":14},{"name":"QUALITY_POOR","line":15},{"name":"TREND_THRESHOLD","line":16},{"name":"update_ewma","line":20},{"name":"calculate_trend","line":39},{"name":"predict_next_etx","line":56},{"name":"is_degrading","line":70},{"name":"quality_score","line":76},{"name":"classify_quality","line":88}],"imports":[],"terms":["macos","rings","rust","mesh","link","quality","monitor","alpha","one","minus","max","history","min","good","poor","trend","threshold","ewma","calculate","predict","etx","degrading","score","classify"]},{"id":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/flow_control.t27","health":"ok","module":"flow_control"}],"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"WINDOW_SIZE","line":8},{"name":"CREDIT_THRESHOLD","line":9},{"name":"BACKPRESSURE_THRESHOLD","line":10},{"name":"create_flow_state","line":13},{"name":"get_sender_id","line":20},{"name":"get_receiver_id","line":24},{"name":"get_window_size","line":28},{"name":"get_credits","line":32},{"name":"update_credits","line":37},{"name":"has_credits","line":46},{"name":"consume_credit","line":57},{"name":"add_credits","line":68},{"name":"is_under_backpressure","line":81},{"name":"calculate_backpressure_level","line":95},{"name":"create_flow_message","line":111},{"name":"get_message_type","line":118},{"name":"get_flow_id","line":122},{"name":"get_message_credits","line":126},{"name":"get_sequence","line":130},{"name":"MSG_DATA","line":135},{"name":"MSG_ACK","line":136},{"name":"MSG_CREDIT_UPDATE","line":137},{"name":"MSG_BACKPRESSURE","line":138},{"name":"process_message","line":141},{"name":"send_data","line":156},{"name":"send_ack","line":167},{"name":"find_flow_by_sender","line":178},{"name":"find_flow_by_receiver","line":193},{"name":"is_any_flow_blocked","line":208},{"name":"count_active_flows","line":222},{"name":"calculate_total_credits","line":238},{"name":"apply_backpressure","line":251},{"name":"release_backpressure","line":263}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","flow","control","max","flows","window","size","credit","threshold","backpressure","create","state","get","sender","receiver","credits","consume","under","calculate","level","sequence","msg","data","ack","process","send","find","blocked","count","active","total","apply","release"]},{"id":"fcef546e7cfd5cb87d6c60d728b36bcd18bd889f48fe62678f23cfe99745dfeb","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dot_stream.t27","health":"warn","module":"TrinityDotStreamT27"}],"description":"","symbols":[{"name":"dense_digit","line":8},{"name":"decode","line":15},{"name":"activation","line":32},{"name":"product","line":38},{"name":"sum_group","line":48},{"name":"valid_mask","line":54},{"name":"valid_lane","line":65},{"name":"valid_group","line":74},{"name":"on_clock","line":113}],"imports":[],"terms":["dmitrii","memory","rtl","dot","stream","dense","digit","decode","activation","product","sum","group","valid","mask","lane","clock"]},{"id":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/bandwidth_allocator.t27","health":"warn","module":"BandwidthAllocator"}],"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"TOTAL_BANDWIDTH","line":8},{"name":"MIN_BANDWIDTH","line":9},{"name":"MAX_BANDWIDTH","line":10},{"name":"create_flow_requirement","line":13},{"name":"get_flow_id","line":20},{"name":"get_flow_priority","line":24},{"name":"get_min_bandwidth","line":28},{"name":"get_current_bandwidth","line":32},{"name":"create_allocation_state","line":37},{"name":"get_allocated_bw","line":44},{"name":"get_pending_requests","line":48},{"name":"get_fair_share","line":52},{"name":"get_last_update","line":56},{"name":"create_flow_array","line":61},{"name":"get_flow_req","line":72},{"name":"calculate_fair_share","line":84},{"name":"allocate_bandwidth","line":92},{"name":"needs_more_bandwidth","line":125},{"name":"update_flow_bandwidth","line":132},{"name":"count_active_flows","line":144},{"name":"find_reclaimable_bandwidth","line":160},{"name":"prioritize_bandwidth","line":196}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","bandwidth","allocator","max","flows","total","min","create","flow","requirement","get","priority","allocation","state","allocated","requests","fair","share","array","req","calculate","allocate","more","count","active","find","reclaimable","prioritize"]},{"id":"fdea4af949276c03185144ef699465fa3c71c59ec505bc0f1f10fe064a0d9e15","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/intrinsic_invariant_sweep.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","intrinsic","invariant","sweep"]},{"id":"fdea8736ee309824c17924c5853d4025ba869d13c4d1ea46bf111e6f01373995","sources":[{"repo":"ghashtag/t27","path":"specs/server/sse.t27","health":"warn","module":"server-sse"}],"description":"sse.t27 — Server-Sent Events Specification SSE connections, event streaming, reconnection handling","symbols":[{"name":"HEARTBEAT_INTERVAL_MS","line":19},{"name":"RETRY_DELAY_MS","line":22},{"name":"MAX_RETRIES","line":25},{"name":"EVENT_PREFIX","line":28},{"name":"DATA_PREFIX","line":31},{"name":"COMMENT_PREFIX","line":34},{"name":"ID_FIELD","line":37},{"name":"RETRY_FIELD","line":40},{"name":"SSEEventType","line":43},{"name":"SSEState","line":51},{"name":"SSECloseCode","line":60},{"name":"SSEEvent","line":72},{"name":"SSEConnection","line":80},{"name":"SSEClient","line":89},{"name":"SEServer","line":98},{"name":"SSEHeartbeat","line":104},{"name":"connection_new","line":113},{"name":"client_new","line":124},{"name":"event_create","line":135},{"name":"event_create_with_id","line":145},{"name":"heartbeat_create","line":155},{"name":"connection_is_active","line":163},{"name":"connection_can_reconnect","line":168},{"name":"connection_retry_inc","line":173},{"name":"connection_retry_reset","line":179},{"name":"connection_retry_delay","line":185},{"name":"connection_set_state","line":190},{"name":"connection_update_event_id","line":195},{"name":"event_format","line":200},{"name":"retry_val","line":220},{"name":"heartbeat_format","line":228},{"name":"concat","line":237},{"name":"append","line":246},{"name":"int_to_string","line":253},{"name":"digit","line":262},{"name":"char","line":263},{"name":"server_add_client","line":272},{"name":"server_remove_client","line":277},{"name":"server_broadcast","line":282},{"name":"formatted","line":283},{"name":"server_heartbeat","line":290},{"name":"heartbeat","line":291},{"name":"formatted","line":292},{"name":"server_client_count","line":299},{"name":"conn","line":308},{"name":"client","line":314},{"name":"event","line":319},{"name":"event","line":324},{"name":"heartbeat","line":329},{"name":"event","line":375},{"name":"formatted","line":376},{"name":"heartbeat","line":381},{"name":"formatted","line":382},{"name":"result","line":387},{"name":"result","line":392},{"name":"event","line":509},{"name":"conn","line":532},{"name":"heartbeat","line":545}],"imports":[{"name":"std","line":12}],"terms":["sse","heartbeat","interval","retry","delay","max","retries","event","prefix","data","field","sseevent","ssestate","sseclose","sseconnection","sseclient","seserver","sseheartbeat","connection","client","create","active","reconnect","inc","reset","set","state","format","val","concat","append","int","digit","char","remove","broadcast","formatted","count","conn"]},{"id":"fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/fault_detection.t27","health":"ok","module":"FaultDetection"}],"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","symbols":[{"name":"MAX_NODES","line":7},{"name":"FAILURE_THRESHOLD","line":8},{"name":"WARNING_THRESHOLD","line":9},{"name":"HEARTBEAT_TIMEOUT","line":10},{"name":"LINK_QUALITY_POOR","line":11},{"name":"create_node_state","line":14},{"name":"get_is_alive","line":21},{"name":"get_failure_count","line":25},{"name":"get_last_heartbeat","line":29},{"name":"get_link_quality","line":33},{"name":"create_node_table","line":38},{"name":"get_node_state","line":45},{"name":"is_heartbeat_timeout","line":57},{"name":"detect_node_failure","line":64},{"name":"increment_failure_count","line":72},{"name":"reset_failure_count","line":83},{"name":"is_node_failed","line":90},{"name":"is_node_warning","line":95},{"name":"is_poor_link","line":101},{"name":"update_link_quality","line":106},{"name":"mark_node_dead","line":114},{"name":"mark_node_alive","line":122},{"name":"count_failed_nodes","line":128}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","fault","detection","max","nodes","failure","threshold","warning","heartbeat","timeout","link","quality","poor","create","node","state","get","alive","count","table","detect","increment","reset","failed","mark","dead"]},{"id":"fe0dd93dce72f6dd9eb5c505c14b2d99b06211a005574a31cb8642b32e3ca070","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl_driver.t27","health":"warn","module":"TrinityMemoryRTLDriver"}],"description":"RTL packet preparation, observed-output validation and actual Icarus runner. The runner invokes a generic OS process ABI and checks both child exits. Parsing a fixture alone is not simulation evidence; no software fallback. Buffers must be live/nonoverlapping. Prepared outputs commit after validation; observed results are scratch on failure, summary commits only on success.","symbols":[{"name":"TM_RTL_ERR_ARGUMENT","line":7},{"name":"TM_RTL_ERR_CAPACITY","line":8},{"name":"TM_RTL_ERR_OVERFLOW","line":9},{"name":"TM_RTL_ERR_OUTPUT","line":10},{"name":"TM_RTL_ERR_MISMATCH","line":11},{"name":"TMRtlExpected","line":12},{"name":"TMRtlObserved","line":13},{"name":"TMRtlSummary","line":14},{"name":"TMRtlCursor","line":18},{"name":"tm_rtl_packet_count","line":19},{"name":"tm_rtl_packet","line":28},{"name":"tm_rtl_prepare_dot","line":39},{"name":"tm_rtl_expected_words","line":73},{"name":"tm_rtl_write_mem","line":88},{"name":"tm_rtl_take","line":102},{"name":"tm_rtl_unsigned","line":108},{"name":"tm_rtl_signed","line":119},{"name":"tm_rtl_line_prefix","line":128},{"name":"tm_rtl_parse_output","line":135},{"name":"TM_RTL_ERR_PROCESS","line":186},{"name":"TM_RTL_ERR_RESOURCE","line":187},{"name":"TMRtlWitness","line":188},{"name":"tm_rtl_process_literal","line":193},{"name":"tm_rtl_process_number","line":199},{"name":"tm_rtl_frame_parameters","line":212},{"name":"tm_rtl_run_frames_context","line":219},{"name":"tm_rtl_run_frames","line":282},{"name":"tm_rtl_run_dot","line":292}],"imports":[],"terms":["dmitrii","memory","rtl","driver","rtldriver","err","argument","capacity","overflow","mismatch","tmrtl","expected","observed","summary","cursor","packet","count","prepare","dot","words","write","mem","take","unsigned","signed","prefix","parse","process","resource","witness","literal","frame","parameters","frames"]},{"id":"fe149804c3b532069ac353681dea878cc30f032de18c74cd77fb24bfb79c0423","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_tb.t27","health":"ok","module":"Power_Testbench"}],"description":"t27/specs/fpga/testbench/power_tb.t27 Power Analysis Testbench Tests power domain management, gating, and estimation","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"VCCINT","line":11},{"name":"VCCAUX","line":12},{"name":"MAX_POWER_MW","line":13},{"name":"LEAKAGE_PERCENT","line":14},{"name":"tick","line":29},{"name":"reset","line":34},{"name":"estimate_power","line":42},{"name":"calc_leakage","line":47},{"name":"calc_dynamic","line":51},{"name":"gate_domain","line":55},{"name":"ungate_domain","line":61}],"imports":[{"name":"fpga::power::Power","line":8}],"terms":["fpga","testbench","power","clk","period","vccint","vccaux","max","leakage","percent","tick","reset","estimate","calc","dynamic","gate","domain","ungate"]},{"id":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/top_tb.t27","health":"ok","module":"Top_Level_Testbench"}],"description":"t27/specs/fpga/testbench/top_tb.t27 Top-Level FPGA Testbench Specification Tests complete FPGA system with UART, SPI, MAC, and bridge 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TIMESCALE","line":18},{"name":"CLK_PERIOD","line":19},{"name":"SIM_TIMEOUT","line":20},{"name":"PING_CMD","line":23},{"name":"PONG_RESP","line":24},{"name":"STATUS_CMD","line":25},{"name":"generate_clock","line":62},{"name":"wait_cycles","line":69},{"name":"assert_pass","line":79},{"name":"test_ping_pong","line":91},{"name":"test_led_heartbeat","line":100},{"name":"test_spi_loopback","line":107},{"name":"test_mac_operation","line":116},{"name":"run_tests","line":128}],"imports":[{"name":"base::types","line":9},{"name":"fpga::uart::UART_Bridge","line":10},{"name":"fpga::spi::SPI_Master","line":11},{"name":"fpga::mac::ZeroDSP_MAC","line":12},{"name":"fpga::bridge::FPGA_Bridge","line":13}],"terms":["fpga","testbench","top","level","timescale","clk","period","sim","timeout","ping","cmd","pong","resp","status","generate","clock","wait","cycles","assert","pass","led","heartbeat","spi","loopback","mac","operation"]},{"id":"fe35542076774dd95e8456f3b8cdf959b2d0c8c576241b4f94a94177fd6a75ab","sources":[{"repo":"ghashtag/t27","path":"specs/server/vm.t27","health":"ok","module":"VM"}],"description":"specs/server/vm.t27 VSA VM - Ternary Virtual Machine for Hyperdimensional Computing","symbols":[{"name":"VSAOpcode","line":27},{"name":"VSARegisters","line":78},{"name":"VSAInstruction","line":108},{"name":"VSAVM","line":125},{"name":"vm_create","line":137},{"name":"zero_hv","line":138},{"name":"vm_halt","line":165},{"name":"vm_step","line":176},{"name":"src1_vec","line":194},{"name":"src2_vec","line":195},{"name":"binded","line":196},{"name":"src1_vec","line":200},{"name":"src2_vec","line":201},{"name":"unbound","line":202},{"name":"src1_vec","line":206},{"name":"src2_vec","line":207},{"name":"bundled","line":208},{"name":"src1_vec","line":212},{"name":"src2_vec","line":213},{"name":"src3_vec","line":214},{"name":"bundled","line":215},{"name":"src1_vec","line":219},{"name":"src2_vec","line":220},{"name":"result_scalar","line":221},{"name":"src1_vec","line":225},{"name":"src2_vec","line":226},{"name":"result_scalar","line":227},{"name":"src1_vec","line":231},{"name":"src2_vec","line":232},{"name":"result_scalar","line":233},{"name":"src1_vec","line":237},{"name":"src2_vec","line":238},{"name":"added","line":239},{"name":"src1_vec","line":243},{"name":"negated","line":244},{"name":"src1_vec","line":248},{"name":"src2_vec","line":249},{"name":"multiplied","line":250},{"name":"src_vec","line":254},{"name":"dst_vec","line":258},{"name":"packed","line":259},{"name":"dst_vec","line":263},{"name":"unpacked","line":264},{"name":"src1_vec","line":268},{"name":"src2_vec","line":269},{"name":"distance","line":270},{"name":"src_vec","line":276},{"name":"permuted","line":277},{"name":"src_vec","line":281},{"name":"permuted","line":282},{"name":"vm_get_vreg","line":305},{"name":"vm_set_vreg","line":320},{"name":"vm","line":471},{"name":"inst","line":472},{"name":"result","line":473},{"name":"vm","line":478},{"name":"inst","line":479},{"name":"result","line":480},{"name":"vm","line":485},{"name":"inst","line":486},{"name":"halted","line":487},{"name":"result","line":488},{"name":"vm","line":493},{"name":"vm","line":503},{"name":"r0","line":504},{"name":"r1","line":505},{"name":"r2","line":506},{"name":"r3","line":507},{"name":"vm","line":515},{"name":"r_invalid","line":516},{"name":"vm","line":537},{"name":"inst","line":538},{"name":"vm","line":549},{"name":"inst","line":550},{"name":"vm","line":561},{"name":"inst","line":562},{"name":"vm","line":573},{"name":"inst","line":574},{"name":"vm","line":585},{"name":"inst","line":586}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11},{"name":"vsa::vsa_core","line":12},{"name":"ternary::hybrid_arithmetic","line":13}],"terms":["vsaopcode","vsaregisters","vsainstruction","vsavm","create","zero","halt","step","src1","vec","src2","binded","unbound","bundled","src3","scalar","added","negated","multiplied","dst","packed","unpacked","distance","permuted","get","vreg","set","inst","halted","invalid"]},{"id":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_router.t27","health":"warn","module":"MultiPathRouter"}],"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","symbols":[{"name":"MAX_PATHS","line":6},{"name":"ETX_THRESHOLD_GOOD","line":9},{"name":"ETX_THRESHOLD_POOR","line":10},{"name":"select_path_index","line":13},{"name":"path_quality_score","line":30},{"name":"needs_failover","line":45},{"name":"next_path_index","line":54},{"name":"path_reliability","line":64}],"imports":[],"terms":["macos","rings","rust","mesh","multipath","router","multi","path","max","paths","etx","threshold","good","poor","select","index","quality","score","failover","reliability"]},{"id":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_quality_monitor.t27","health":"ok","module":"LinkQualityMonitor"}],"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","symbols":[{"name":"ALPHA_Q8","line":6},{"name":"ONE_MINUS_ALPHA_Q8","line":7},{"name":"MAX_HISTORY","line":10},{"name":"MIN_HISTORY","line":11},{"name":"QUALITY_GOOD","line":14},{"name":"QUALITY_POOR","line":15},{"name":"TREND_THRESHOLD","line":16},{"name":"update_ewma","line":20},{"name":"calculate_trend","line":40},{"name":"predict_next_etx","line":56},{"name":"is_degrading","line":71},{"name":"quality_score","line":77},{"name":"classify_quality","line":92}],"imports":[],"terms":["net","link","quality","monitor","alpha","one","minus","max","history","min","good","poor","trend","threshold","ewma","calculate","predict","etx","degrading","score","classify"]},{"id":"febf87624d67aa679c451ceba324033bcca3e9bd351a150bdd57a3e38e79122f","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/crossopt.t27","health":"ok","module":"CrossOpt"}],"description":"t27/specs/fpga/crossopt.t27 T27 Cross-Module Optimization Specification Inter-module constant propagation, dead signal elimination, instance merging Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"CrossOptPass","line":10},{"name":"pass_zero","line":18},{"name":"pass_result","line":28},{"name":"total_improvements","line":38},{"name":"has_improvements","line":42},{"name":"improvement_density","line":46},{"name":"CrossOptReport","line":53},{"name":"report_ok","line":61},{"name":"total_optimizations","line":71},{"name":"is_effective","line":75}],"imports":[],"terms":["fpga","crossopt","cross","opt","pass","zero","total","improvements","improvement","density","report","optimizations","effective"]},{"id":"fee4c32ed2aaa0478b7bdfe057b97ac5474de5ec832124aaa83a81366ff4e5a7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/skip_list.t27","health":"ok","module":"TriSkipList"}],"description":"t27/specs/","symbols":[{"name":"SkipNode","line":13},{"name":"SkipList","line":19},{"name":"init","line":30},{"name":"insert","line":35},{"name":"search","line":40}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","skip","list","node","init","insert","search"]},{"id":"fef84759ef56f8c9704b710d79fc3724cc415e9369a80779b22a5925890d36de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/gf16_plus_quire_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","gf16","plus","quire","audit"]},{"id":"ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/failure_predictor.t27","health":"warn","module":"failure_predictor"}],"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","symbols":[{"name":"MAX_NODES","line":7},{"name":"WARNING_THRESHOLD","line":8},{"name":"CRITICAL_THRESHOLD","line":9},{"name":"HISTORY_SIZE","line":10},{"name":"create_health_metrics","line":13},{"name":"get_cpu_usage","line":20},{"name":"get_memory_usage","line":24},{"name":"get_error_rate","line":28},{"name":"get_temperature","line":32},{"name":"create_risk_score","line":37},{"name":"get_risk_level","line":44},{"name":"get_confidence","line":48},{"name":"get_risk_trend","line":52},{"name":"get_prediction_time","line":56},{"name":"create_health_array","line":61},{"name":"get_health_metrics","line":72},{"name":"calculate_health_score","line":84},{"name":"predict_failure_probability","line":102},{"name":"is_trending_failure","line":119},{"name":"predict_time_to_failure","line":130},{"name":"calculate_failure_risk","line":147},{"name":"needs_immediate_action","line":158},{"name":"find_most_at_risk","line":167}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","failure","predictor","max","nodes","warning","threshold","critical","history","size","create","health","metrics","get","cpu","usage","memory","rate","temperature","risk","score","level","confidence","trend","prediction","time","array","calculate","predict","probability","trending","immediate","action","find","most"]},{"id":"ff3d757f5e91373910923758a5bc7a8f26fde4d157e3d3aee120210996c45f0c","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/sparse_mask.t27","health":"warn","module":"sacred-sparse_mask"}],"description":"sparse_mask.t27 — Sacred Opcode 0xE8: Sparse Mask (Sparse Skip 2) Hardware for generating and applying sparse tensor masks","symbols":[{"name":"OP_SPARSE_MASK","line":12},{"name":"MASK_SIZE","line":14},{"name":"SPARSE_THRESHOLD_RATIO","line":15},{"name":"MASK_MODE_GEN","line":17},{"name":"MASK_MODE_APPLY","line":18},{"name":"MASK_MODE_COMBINE","line":19},{"name":"MASK_MODE_INVERT","line":20},{"name":"MASK_TYPE_DENSITY","line":22},{"name":"MASK_TYPE_PATTERN","line":23},{"name":"MASK_TYPE_RANDOM","line":24},{"name":"MASK_TYPE_PHI","line":25},{"name":"SparseMask","line":31},{"name":"MaskConfig","line":37},{"name":"MaskOp","line":44},{"name":"Vector16","line":51},{"name":"mask_count_set_bits","line":62},{"name":"mask_count_clear_bits","line":74},{"name":"mask_density","line":80},{"name":"set_bits","line":81},{"name":"mask_is_sparse","line":87},{"name":"mask_is_dense","line":93},{"name":"mask_generate_density","line":99},{"name":"target_bits","line":100},{"name":"mask_generate_phi","line":115},{"name":"mask_generate_pattern","line":131},{"name":"pattern_bits","line":133},{"name":"mask_generate_random","line":146},{"name":"bit","line":151},{"name":"feedback","line":156},{"name":"mask_generate","line":169},{"name":"mask_apply","line":204},{"name":"mask_combine","line":221},{"name":"mask_invert","line":232},{"name":"mask_complement","line":238},{"name":"inverted","line":239},{"name":"encode_sparse_mask","line":253},{"name":"op","line":255},{"name":"mode_field","line":256},{"name":"type_field","line":257},{"name":"seed_field","line":258},{"name":"decode_sparse_mask","line":264},{"name":"mode","line":265},{"name":"mask_type","line":266},{"name":"seed","line":267}],"imports":[],"terms":["chips","euler","fpga","sparse","mask","sacred","size","threshold","ratio","mode","gen","apply","combine","invert","density","pattern","random","phi","config","vector16","count","set","bits","clear","dense","generate","target","bit","feedback","complement","inverted","encode","field","seed","decode"]},{"id":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf16_to_posit16.t27","health":"warn","module":"gf16-to-posit16"}],"description":"gf16_to_posit16.t27 — GF16 to Posit16 Converter GoldenFloat16 to Posit type 16 (unum 1.0) format conversion","symbols":[{"name":"GF16_BITS","line":12},{"name":"GF16_SIGN_BIT","line":13},{"name":"GF16_EXP_BITS","line":14},{"name":"GF16_MANT_BITS","line":15},{"name":"GF16_BIAS","line":16},{"name":"POSIT16_BITS","line":18},{"name":"POSIT16_ES","line":19},{"name":"POSIT16_MAX_EXP","line":20},{"name":"POSIT16_REGIME_BITS","line":22},{"name":"POSIT16_MANT_BITS","line":23},{"name":"MAX_EXP_DIFF","line":25},{"name":"Gf16","line":31},{"name":"Posit16","line":37},{"name":"PositComponents","line":41},{"name":"ConversionResult","line":48},{"name":"ConversionConfig","line":55},{"name":"gf16_from_bits","line":66},{"name":"gf16_to_bits","line":76},{"name":"sign_field","line":77},{"name":"exp_field","line":78},{"name":"mant_field","line":79},{"name":"gf16_is_zero","line":85},{"name":"gf16_is_subnormal","line":91},{"name":"gf16_is_normal","line":97},{"name":"gf16_is_infinity","line":103},{"name":"gf16_is_nan","line":109},{"name":"gf16_get_exp_biased","line":115},{"name":"posit16_from_bits","line":125},{"name":"posit16_to_bits","line":131},{"name":"posit16_is_zero","line":137},{"name":"posit16_is_one","line":143},{"name":"posit16_is_neg_one","line":149},{"name":"posit16_is_naR","line":155},{"name":"posit16_get_sign","line":161},{"name":"posit16_decode","line":167},{"name":"conversion_config_init","line":240},{"name":"gf16_to_posit16_raw","line":253},{"name":"gf16_to_posit16_with_result","line":322},{"name":"posit","line":339},{"name":"gf16_to_posit16","line":359},{"name":"gf16_bits_to_posit16_bits","line":365},{"name":"gf","line":366},{"name":"posit","line":367},{"name":"gf16_bits_to_posit16_bits_with_result","line":373},{"name":"gf","line":374}],"imports":[],"terms":["chips","euler","fpga","gf16","posit16","bits","sign","bit","exp","mant","bias","max","regime","diff","posit","components","conversion","config","field","zero","subnormal","normal","infinity","nan","get","biased","one","neg","decode","init","raw"]},{"id":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf32.t27","health":"warn","module":"GF32"}],"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 — 32-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 8 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":29},{"name":"GF32","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":149},{"name":"floor_log2","line":155},{"name":"extract_mantissa","line":169},{"name":"normalized","line":170},{"name":"frac","line":171},{"name":"max_mant","line":172},{"name":"clamp_u16","line":176},{"name":"pow","line":182}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf32","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow"]},{"id":"fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fault_detection.t27","health":"ok","module":"FaultDetection"}],"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","symbols":[{"name":"MAX_NODES","line":7},{"name":"FAILURE_THRESHOLD","line":8},{"name":"WARNING_THRESHOLD","line":9},{"name":"HEARTBEAT_TIMEOUT","line":10},{"name":"LINK_QUALITY_POOR","line":11},{"name":"create_node_state","line":17},{"name":"get_is_alive","line":24},{"name":"get_failure_count","line":28},{"name":"get_last_heartbeat","line":32},{"name":"get_link_quality","line":36},{"name":"create_node_table","line":43},{"name":"get_node_state","line":47},{"name":"is_heartbeat_timeout","line":55},{"name":"detect_node_failure","line":62},{"name":"increment_failure_count","line":70},{"name":"reset_failure_count","line":81},{"name":"is_node_failed","line":88},{"name":"is_node_warning","line":93},{"name":"is_poor_link","line":99},{"name":"update_link_quality","line":104},{"name":"mark_node_dead","line":112},{"name":"mark_node_alive","line":120},{"name":"count_failed_nodes","line":126}],"imports":[{"name":"base::types","line":5}],"terms":["net","fault","detection","max","nodes","failure","threshold","warning","heartbeat","timeout","link","quality","poor","create","node","state","get","alive","count","table","detect","increment","reset","failed","mark","dead"]}],"dependencies":[{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::top_level::ZeroDSP_TopLevel","line":9,"to":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","candidates":["f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":10,"to":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","candidates":["be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::uart::ZeroDSP_UART","line":11,"to":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","candidates":["a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":12,"to":"4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e","candidates":["4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::memory::Memory","line":13,"to":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","candidates":["5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::bridge::FPGA_Bridge","line":14,"to":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","candidates":["4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::gf16_accel::Gf16Accel","line":15,"to":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","candidates":["5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::fifo::Fifo","line":16,"to":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","candidates":["dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::axi4::Axi4","line":17,"to":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","candidates":["6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02"],"status":"resolved"},{"from":"009f964022dfd8c9ff3e0cdc77de85b0c5162329bd53e3898bac2a5d43bfa2b3","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"009f964022dfd8c9ff3e0cdc77de85b0c5162329bd53e3898bac2a5d43bfa2b3","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"0330730538325bbbb9803179e922a76577032da1cad66a53171b28b7a348ac89","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0330730538325bbbb9803179e922a76577032da1cad66a53171b28b7a348ac89","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"03c1b268a4737549ad5429537fef599326c7eb9ccbcb5ad203157639005c15a1","sourceRepo":"ghashtag/t27","name":"base::math","line":7,"to":null,"candidates":[],"status":"missing"},{"from":"03c1b268a4737549ad5429537fef599326c7eb9ccbcb5ad203157639005c15a1","sourceRepo":"ghashtag/t27","name":"compiler::codegen","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"042c7754a3e80d71a7c659acc9e1e4d90c561bf3a3876bbcc34237e14421f3d0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"042c7754a3e80d71a7c659acc9e1e4d90c561bf3a3876bbcc34237e14421f3d0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"054368075009acf87f6a8d262d47083b0d2fea4f2d01fd1fd17fd56be345245f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"05a07af58a53b6ca13e294c62187fc537865c2d24b80bdd484b1fe79232361da","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"05a07af58a53b6ca13e294c62187fc537865c2d24b80bdd484b1fe79232361da","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"0698e7d7e9693a49683c92c75812220f30b4025bee6ab7765c34e5ad5ca183db","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"0698e7d7e9693a49683c92c75812220f30b4025bee6ab7765c34e5ad5ca183db","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"06e69666f7c575b3fbe4f5530f2560fd46ce903a1a3af6dd62e375aaa4f38953","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"07c862f49fda9f37cff9081cbbbbcc2e1a3402e1b24bd6ca8d83fb7103801666","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"07c862f49fda9f37cff9081cbbbbcc2e1a3402e1b24bd6ca8d83fb7103801666","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"089f57bd6ac32f7823bc8a06be007ddc27710b276853f6d0e9d3de1519c87d79","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"089f57bd6ac32f7823bc8a06be007ddc27710b276853f6d0e9d3de1519c87d79","sourceRepo":"ghashtag/t27","name":"git::schema","line":7,"to":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","candidates":["a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa"],"status":"resolved"},{"from":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":11,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sourceRepo":"ghashtag/tt-trinity-gamma","name":"math::constants","line":20,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sourceRepo":"ghashtag/tt-trinity-gamma","name":"math::sacred_physics","line":21,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sourceRepo":"ghashtag/tt-trinity-gamma","name":"numeric::goldenfloat_family","line":22,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"0aa2fa4008f17505844152d0cd16db6c8c4ba0905212a0a51f5368e8e9708c3e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0aa2fa4008f17505844152d0cd16db6c8c4ba0905212a0a51f5368e8e9708c3e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"0b5f7bff39da7f29b90ff5ff965bd07cdf1ffc1bb523a81cc03ca617fa57163a","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0c16b016c5c35f24136b691fa81b692f7d34cdce64d4b609d7ac286b9a271bcb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0c16b016c5c35f24136b691fa81b692f7d34cdce64d4b609d7ac286b9a271bcb","sourceRepo":"ghashtag/t27","name":"account::schema","line":7,"to":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","candidates":["6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2"],"status":"resolved"},{"from":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0cf723b0c54a06a9851f0f635f2191829a0c100860d1c12896afa5e4bb856b8a","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":8,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","sourceRepo":"ghashtag/t27","name":"ml::activation::gelu","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","sourceRepo":"ghashtag/t27","name":"ml::layers::dense","line":10,"to":null,"candidates":[],"status":"missing"},{"from":"106dee6126f578973c0b1b47f58ea10a7ee94213d8515635272981c1dba6bc72","sourceRepo":"ghashtag/t27","name":"fpga::vcd_trace::VcdTrace","line":8,"to":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","candidates":["2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232"],"status":"resolved"},{"from":"108c86be1cffdb12c2a8bf7aed0bbc9beb9488044e64ea8eb53e5648ba4603cc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"108c86be1cffdb12c2a8bf7aed0bbc9beb9488044e64ea8eb53e5648ba4603cc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"11ac7c14718e579c25d261b34dcc597ce5b329311700ce49635031c766bfacbf","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"11ac7c14718e579c25d261b34dcc597ce5b329311700ce49635031c766bfacbf","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"11ac7c14718e579c25d261b34dcc597ce5b329311700ce49635031c766bfacbf","sourceRepo":"ghashtag/t27","name":"numeric::formats","line":11,"to":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","candidates":["081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117"],"status":"resolved"},{"from":"121ed4a8e32889b770a8ab90b91b3bde9a7b193c66c845aac0130f7ab66c070d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":13,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":8,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sourceRepo":"ghashtag/t27","name":"ml::transformer::norm","line":9,"to":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","candidates":["f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2"],"status":"resolved"},{"from":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sourceRepo":"ghashtag/t27","name":"ml::transformer::multi_head_attn","line":10,"to":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","candidates":["afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895"],"status":"resolved"},{"from":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sourceRepo":"ghashtag/t27","name":"ml::transformer::feed_forward","line":11,"to":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","candidates":["0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a"],"status":"resolved"},{"from":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","sourceRepo":"ghashtag/t27","name":"fpga::axi4::Axi4","line":8,"to":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","candidates":["6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02"],"status":"resolved"},{"from":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","sourceRepo":"ghashtag/t27","name":"test_framework::core","line":7,"to":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","candidates":["6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65"],"status":"resolved"},{"from":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","sourceRepo":"ghashtag/t27","name":"numeric::golden_float","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"134e2faa0b97395159aeed11d68ef9158bbf0ed0ad51f5c5d68f878a14bd5d98","sourceRepo":"ghashtag/t27","name":"math::constants","line":28,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"134e2faa0b97395159aeed11d68ef9158bbf0ed0ad51f5c5d68f878a14bd5d98","sourceRepo":"ghashtag/t27","name":"math::e8_lie_algebra","line":29,"to":"a304c38d4f437a1049622d15f7c677afee0709cdbc5ec45efb471acfa1ad8147","candidates":["a304c38d4f437a1049622d15f7c677afee0709cdbc5ec45efb471acfa1ad8147"],"status":"resolved"},{"from":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"13c4050db1a7cd0c322b0bb87a04fac0ebb9899e607a0e06ae19f14a334a6f52","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"13c4050db1a7cd0c322b0bb87a04fac0ebb9899e607a0e06ae19f14a334a6f52","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"13eea0478571c3e79f3cb8e8796d92342967e70b390bb9022d1af2c88e3972ab","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"13eea0478571c3e79f3cb8e8796d92342967e70b390bb9022d1af2c88e3972ab","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":9,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":10,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/t27","name":"base::testing","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":14,"to":null,"candidates":[],"status":"missing"},{"from":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","sourceRepo":"ghashtag/t27","name":"io::file","line":7,"to":null,"candidates":[],"status":"missing"},{"from":"157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"16dbd9fb40f949a3534c28495f0d68f83ddd460d22f52a89ea70ff33e4c1ee7b","sourceRepo":"ghashtag/t27","name":"base::types","line":7,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"174ce53b6240346662c21e07ad294ed99e609910205a4b17ff6782ed7f6d1ccd","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"17501497f6580c8f2cc5304a94838fbae23c56b4336b3ab36a1d4f67e80e2f5a","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1778325067543a3ddd5b236906ea2441d1a7b278bd5c9833aa72c55ba6599497","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1778325067543a3ddd5b236906ea2441d1a7b278bd5c9833aa72c55ba6599497","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"179da434e72eed1ef8d4afcff8a2d49d9141e6ac4fb20183ec8e35e14b50a3c7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"179da434e72eed1ef8d4afcff8a2d49d9141e6ac4fb20183ec8e35e14b50a3c7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"17af82800242d7f0c8de113d3fa990c8fdfb68be93305a676a6332c592c80478","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"17af82800242d7f0c8de113d3fa990c8fdfb68be93305a676a6332c592c80478","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"17c44e7a913a1347d4dcbdad38cc191e92a9d71aeba8ba9a7d21bc0f805b94fe","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"17c44e7a913a1347d4dcbdad38cc191e92a9d71aeba8ba9a7d21bc0f805b94fe","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"18c2c553caf2ae99e899f0610766195d9cc8861526b89b519790a47af0c1bc54","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"18c2c553caf2ae99e899f0610766195d9cc8861526b89b519790a47af0c1bc54","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"18cbfabd05c402e9330be096cd6cd3d6d17ad2ea2b6eb02456dc3c20a9f03814","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"18f95f985f5785c432b2a790d1ca5140533ba1b6259aeb5185979e1c6955e1b7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"18f95f985f5785c432b2a790d1ca5140533ba1b6259aeb5185979e1c6955e1b7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","sourceRepo":"ghashtag/t27","name":"pins::ir","line":10,"to":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","candidates":["8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de"],"status":"resolved"},{"from":"1a28ba338938a246485db6125f65700b5d2e7403b091f7a5553b1d63bf6d0bb2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1a28ba338938a246485db6125f65700b5d2e7403b091f7a5553b1d63bf6d0bb2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1aece14713159e5b0d3b6447529a3da6672a0ae57cff3ec0c4a4af021188fa31","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1aece14713159e5b0d3b6447529a3da6672a0ae57cff3ec0c4a4af021188fa31","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1c332b11b5cc758ef52d78c8517722fe3a7f757a8583679c2859f42aea529c97","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1cce47bfd33a00b3f877eac16723284a124ef0036f1012d5cb5d60bc90613915","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"1cce47bfd33a00b3f877eac16723284a124ef0036f1012d5cb5d60bc90613915","sourceRepo":"ghashtag/t27","name":"vsa::vsa_core","line":12,"to":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","candidates":["d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34"],"status":"resolved"},{"from":"1d143c79c4f83509d679fbcdf85113343f7ca096320f96429c186ba42b06412e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1d143c79c4f83509d679fbcdf85113343f7ca096320f96429c186ba42b06412e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"1eb3a181da111913289f6593f867fb6abc27070c70544e939e114d7ac5dfeaec","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1eb3a181da111913289f6593f867fb6abc27070c70544e939e114d7ac5dfeaec","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1ec9b1d68d6e7223280e904ec1472c036b12222fb7dab9b11f049c8b98ffc62d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1ec9b1d68d6e7223280e904ec1472c036b12222fb7dab9b11f049c8b98ffc62d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1f0556123d443b825058cbf6da7604aa6acebd0e0be70b0ebb270c2a22f4c5c1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1f0556123d443b825058cbf6da7604aa6acebd0e0be70b0ebb270c2a22f4c5c1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1f58e539bacb2363a82c13b34cbf3c84bade8790f94041dd13cbb01949f5a0c0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1f58e539bacb2363a82c13b34cbf3c84bade8790f94041dd13cbb01949f5a0c0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"1fe501e74db1912e57663fd489c9c1e004902d23cd4b1efe3fba43bc9f62bc9f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sourceRepo":"ghashtag/trinity-fpga","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sourceRepo":"ghashtag/trinity-fpga","name":"math::sacred_physics","line":8,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"2156697cc205f72ae4b52a06c19f439082ba597fe9dcba2c38c930bbe7281959","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2156697cc205f72ae4b52a06c19f439082ba597fe9dcba2c38c930bbe7281959","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","sourceRepo":"ghashtag/t27","name":"base::types::Float","line":16,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","sourceRepo":"ghashtag/t27","name":"base::math::l2_norm","line":17,"to":null,"candidates":[],"status":"missing"},{"from":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","sourceRepo":"ghashtag/t27","name":"base::math::normalize_l2","line":18,"to":null,"candidates":[],"status":"missing"},{"from":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","sourceRepo":"ghashtag/t27","name":"base::math::phi_distance","line":19,"to":null,"candidates":[],"status":"missing"},{"from":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","sourceRepo":"ghashtag/t27","name":"base::constants::PHI","line":20,"to":null,"candidates":[],"status":"missing"},{"from":"2246bd2af584f9e2c3b1b8ade8c1032ef03aed4b1cbb46256a1c3af100be63e6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":18,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"22f85a9f634c0be06947237206a555589d0cd251507bdfa7933593c8f9abb51a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"22f85a9f634c0be06947237206a555589d0cd251507bdfa7933593c8f9abb51a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","sourceRepo":"ghashtag/t27","name":"math::constants","line":9,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","sourceRepo":"ghashtag/t27","name":"vsa::ops","line":10,"to":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","candidates":["f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da"],"status":"resolved"},{"from":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","sourceRepo":"ghashtag/t27","name":"demos::jones_topology_filter","line":11,"to":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","candidates":["97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468"],"status":"resolved"},{"from":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"27ce13836c16829e193d7d2f67fec01e89355285326a3ae356e6286732cec4a4","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"27ce13836c16829e193d7d2f67fec01e89355285326a3ae356e6286732cec4a4","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"286565825bcb25ec0c02233431ad90a5ce8ddfad30cf731df653bd1499208abd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"286565825bcb25ec0c02233431ad90a5ce8ddfad30cf731df653bd1499208abd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"28ee4c6e2fb0f36392290331126c1c6c676ca970e4ac5053ca14c6fea743653a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"28ee4c6e2fb0f36392290331126c1c6c676ca970e4ac5053ca14c6fea743653a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"299b19c47e8161d2318839d18418d581f18fde1d2373650067713805d07dc61a","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2a97610929c63610ed4580f07c5219bbd9d3a3070751ccb5e13765a97a157efe","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2a97610929c63610ed4580f07c5219bbd9d3a3070751ccb5e13765a97a157efe","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2acac9ea1af4c8fa8f1df4079f308d3062db60d037e73fb0f8e931d06715ff53","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2acac9ea1af4c8fa8f1df4079f308d3062db60d037e73fb0f8e931d06715ff53","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2ad84e8eab783d71c61b110fa801823bbebc09638be1357944531dd5aac4b883","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2ad84e8eab783d71c61b110fa801823bbebc09638be1357944531dd5aac4b883","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2af701e2a73721652a80378a3774bf6bdf73b3413906bcde7bd6014398f356ff","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2af701e2a73721652a80378a3774bf6bdf73b3413906bcde7bd6014398f356ff","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2af701e2a73721652a80378a3774bf6bdf73b3413906bcde7bd6014398f356ff","sourceRepo":"ghashtag/t27","name":"TriGraphBfs::Graph","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"2b419fc69d1704d6bcd88d071fcb8f278a5d4d910dd89d541756adc261e995bb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2b419fc69d1704d6bcd88d071fcb8f278a5d4d910dd89d541756adc261e995bb","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2b84c9b64ceca23a2795f512e21e12510357056268de9b8e1cd013ca89682fa1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2b84c9b64ceca23a2795f512e21e12510357056268de9b8e1cd013ca89682fa1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2bda99182d7c0c06e381bf777dd46df1ff51c98688439cd700498ee1cbf5f192","sourceRepo":"ghashtag/t27","name":"test_framework::core","line":7,"to":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","candidates":["6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65"],"status":"resolved"},{"from":"2bda99182d7c0c06e381bf777dd46df1ff51c98688439cd700498ee1cbf5f192","sourceRepo":"ghashtag/t27","name":"std::collections","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"2c293bdfba35cb5a347420b69e15cbc1f14300e6990ba46f9e4cb860b1d3b0e4","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2c8ebd950d7cc378ecde0cdbc1086aa4fea654059f21939ff4d11911f6eee458","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2c8ebd950d7cc378ecde0cdbc1086aa4fea654059f21939ff4d11911f6eee458","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2d603f5515afaf26e741ea96ddc89c131a83ab75694988fd7bd7e795c6933176","sourceRepo":"ghashtag/t27","name":"fpga::memory::Memory","line":8,"to":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","candidates":["5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84"],"status":"resolved"},{"from":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sourceRepo":"ghashtag/t27","name":"math::constants","line":20,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":21,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":22,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"2eade0fba9b90159413821a1a7dc079d197b1fd7d849c6825e4cfee8feda6d51","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2eade0fba9b90159413821a1a7dc079d197b1fd7d849c6825e4cfee8feda6d51","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":10,"to":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","candidates":["be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19"],"status":"resolved"},{"from":"2f8658ded229cb7cce70a146e20d08c970b7aa97a702665abe125b08e249bb59","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2fe04165a0c924d887cad57ed1d7349fb22e5957fab44f48e33dfc2dd955e589","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"2fe04165a0c924d887cad57ed1d7349fb22e5957fab44f48e33dfc2dd955e589","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"303799b32c51f84cea3ebabfa4e586d88054a585b28c70f2f5cbd3c58b876cdd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"303799b32c51f84cea3ebabfa4e586d88054a585b28c70f2f5cbd3c58b876cdd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"304dbefaab41ae6360d9007359ccd36bab0e9ef78e8cc2e00e7ab0b41269b0f6","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"304dbefaab41ae6360d9007359ccd36bab0e9ef78e8cc2e00e7ab0b41269b0f6","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","sourceRepo":"ghashtag/t27","name":"timestamp","line":19,"to":null,"candidates":[],"status":"missing"},{"from":"31fc2cc4511db11be5ce16f41f881ed462911238ee18ba0fbe5f8f25dd0fbfd4","sourceRepo":"ghashtag/tri-net","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sourceRepo":"ghashtag/t27","name":"base::testing","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":14,"to":null,"candidates":[],"status":"missing"},{"from":"3372fcbc6f9c6838d6e21ed8900c9e3fe00de2a9b57386380e7eaa13beefd052","sourceRepo":"ghashtag/t27","name":"timestamp","line":14,"to":null,"candidates":[],"status":"missing"},{"from":"33860937a826bbbc5b95b88015242182732ad3577456d9c4b34fc87834f64c77","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"33860937a826bbbc5b95b88015242182732ad3577456d9c4b34fc87834f64c77","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3518d3bee197a739317d20af4d64f64893378b2dbf1b2ad4381d935c7d29e443","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3518d3bee197a739317d20af4d64f64893378b2dbf1b2ad4381d935c7d29e443","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df","sourceRepo":"ghashtag/trios","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"379740eea2f1d1c60693f69cd89d57566017db7dcbe77484f8d2f54c97cb40b8","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"379740eea2f1d1c60693f69cd89d57566017db7dcbe77484f8d2f54c97cb40b8","sourceRepo":"ghashtag/t27","name":"fpga::uart::UART_Bridge","line":10,"to":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","candidates":["a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae"],"status":"resolved"},{"from":"37e73defdf4c967e2fb780aa954119e6fd90a73477ba9b410794ba99de228c47","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"37e73defdf4c967e2fb780aa954119e6fd90a73477ba9b410794ba99de228c47","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":11,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"380f324e20c22b5441bf9cf413249c1c92b09d33507164e62b0e2fe9d69b7b4c","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"380f324e20c22b5441bf9cf413249c1c92b09d33507164e62b0e2fe9d69b7b4c","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"380f324e20c22b5441bf9cf413249c1c92b09d33507164e62b0e2fe9d69b7b4c","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":11,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"3873165f553501deacfb4814a0b56dede2f4158fed86e9002f3efe09782a946b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3873165f553501deacfb4814a0b56dede2f4158fed86e9002f3efe09782a946b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"389411f1e59621fb478846a79147aa6f5ec3cd01877c907316185aa573baa48d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"389411f1e59621fb478846a79147aa6f5ec3cd01877c907316185aa573baa48d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","sourceRepo":"ghashtag/t27","name":"base::testing","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"38e5a94cf9cac4f8e1638e6c60603d0334668763669588a0014d4a8cc544b59c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","sourceRepo":"ghashtag/t27","name":"base::types::Trit","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","sourceRepo":"ghashtag/t27","name":"vsa::vsa_core::Hypervector","line":10,"to":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","candidates":["d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34"],"status":"resolved"},{"from":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3a86f39a7c8d0462b028a88aa5b2e9c7e7ed151c0404e4efef134c64654dd4b0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3a86f39a7c8d0462b028a88aa5b2e9c7e7ed151c0404e4efef134c64654dd4b0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3b23e0d8188ef1fbdc658829a9204f6aa42bd6e111f07fe84c2632094870e95d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3b23e0d8188ef1fbdc658829a9204f6aa42bd6e111f07fe84c2632094870e95d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3b4221a4c3733e8cd4e11c2e22b767a42d515d16c9c0ac141632dbcfe5118d28","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3b4221a4c3733e8cd4e11c2e22b767a42d515d16c9c0ac141632dbcfe5118d28","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3ba9d974647c1fb5d985982db3c7e266834d0736d32ed4f4f50aa7af95d59df7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3ba9d974647c1fb5d985982db3c7e266834d0736d32ed4f4f50aa7af95d59df7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3bd172924f6a3774be1a071fa0082d67c0954419b6dd07dde1641a4f57f626ea","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3bd172924f6a3774be1a071fa0082d67c0954419b6dd07dde1641a4f57f626ea","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3e4c2dba999625c51bdf626e8d2924d2a2b488ede546748d30d2ad0007becd38","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3e4c2dba999625c51bdf626e8d2924d2a2b488ede546748d30d2ad0007becd38","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","sourceRepo":"ghashtag/trios","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","sourceRepo":"ghashtag/t27","name":"fpga::gf16_accel::Gf16Accel","line":8,"to":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","candidates":["5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a"],"status":"resolved"},{"from":"3f981e43e3fb34c7e4b90c54abbda13c3faae9c4c65bfd1fe5afa88f7c60cbc2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3f981e43e3fb34c7e4b90c54abbda13c3faae9c4c65bfd1fe5afa88f7c60cbc2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"3fb36280bdd9167f00769156462b674cec1d67d08eeb17255fa00ce18e41ad7c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"3fb36280bdd9167f00769156462b674cec1d67d08eeb17255fa00ce18e41ad7c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4018d7703d08862d4f087eb076fda4fa14c54cc8767c98aaa493a70fb6eb1719","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4018d7703d08862d4f087eb076fda4fa14c54cc8767c98aaa493a70fb6eb1719","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":11,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"418ffcada23abcecda361681156ca90ece34477981923d60562033f87fee7923","sourceRepo":"ghashtag/t27","name":"vsa::vsa_core","line":9,"to":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","candidates":["d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34"],"status":"resolved"},{"from":"418ffcada23abcecda361681156ca90ece34477981923d60562033f87fee7923","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"422a79e6015d8959e474b78e93f8fb16e1db2e0b2d8a885bfdab1aafe2347175","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4231d25e32ae17ce4b5009632e3727e6d269f5c98317f8f7cb826973cc160c3a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4231d25e32ae17ce4b5009632e3727e6d269f5c98317f8f7cb826973cc160c3a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"42f1b5afac3cc86447f1f69545a06a2ac80d30c7bb65c5f6d706d28476a67883","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"42f1b5afac3cc86447f1f69545a06a2ac80d30c7bb65c5f6d706d28476a67883","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","sourceRepo":"ghashtag/t27","name":"fpga::uart::UART_Bridge","line":10,"to":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","candidates":["a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae"],"status":"resolved"},{"from":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":11,"to":"4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e","candidates":["4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e"],"status":"resolved"},{"from":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":12,"to":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","candidates":["be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19"],"status":"resolved"},{"from":"4418ff9d9f6577e80ca3362748d220a2a0ec2eb6669802fa8d85689564a88bc7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4418ff9d9f6577e80ca3362748d220a2a0ec2eb6669802fa8d85689564a88bc7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"445b536ffbdf40c4580d3980157b45ec97fae43c0cceec2f177d46a91a0682bd","sourceRepo":"ghashtag/t27","name":"Constants","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"4468de25e4e94f883c3cd64306eb5cff4e69992728e7211b73cacfe2c83bc3c8","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"45bb6f748cc01f814b14d1c65588766a2515daf79df2382b785a0c8c2ba2a211","sourceRepo":"ghashtag/t27","name":"fpga::fifo::Fifo","line":8,"to":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","candidates":["dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd"],"status":"resolved"},{"from":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","sourceRepo":"ghashtag/t27","name":"queen::lotus","line":9,"to":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","candidates":["aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493"],"status":"resolved"},{"from":"45eceaaa65e7ddb52ada5b5ba657ad0c6139d715f236ce25c4fbdd7f84e6780c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","sourceRepo":"ghashtag/t27","name":"vsa::vsa_core","line":12,"to":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","candidates":["d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34"],"status":"resolved"},{"from":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":13,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"467a6408508e8ea78e10bb34aec16e497b66a70c41f54c0fc5a3db9ae50c0a06","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"467a6408508e8ea78e10bb34aec16e497b66a70c41f54c0fc5a3db9ae50c0a06","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"473c5317d5dd386d0310b9f0762f2f2ac5febdb8fc69295ac4ce7d4597ed905e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"473c5317d5dd386d0310b9f0762f2f2ac5febdb8fc69295ac4ce7d4597ed905e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"48c6a87fe3c885ead9caad7013425c2f4e87ba38dd6adbab78cc6b5c5d6864d8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"48c6a87fe3c885ead9caad7013425c2f4e87ba38dd6adbab78cc6b5c5d6864d8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"49fd9c0e4793f2c69ac2ae1c4ff80d1cd858a1404398a6b36a28e33ef8f35389","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"49fd9c0e4793f2c69ac2ae1c4ff80d1cd858a1404398a6b36a28e33ef8f35389","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4a45d372cba73c1dabe74e1bf33ff88abd82d4b528312bd2cd1ec5aa12561196","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4a45d372cba73c1dabe74e1bf33ff88abd82d4b528312bd2cd1ec5aa12561196","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4a85553e544bba9b8b881d36db90ca3dc88d4ef17dfa856b31c5fac5569c5737","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4a85553e544bba9b8b881d36db90ca3dc88d4ef17dfa856b31c5fac5569c5737","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4b04e69c42d9f9d99b2292a548567025a39a3ce8fb5ec76e78059a8c5464eb60","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4b04e69c42d9f9d99b2292a548567025a39a3ce8fb5ec76e78059a8c5464eb60","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","sourceRepo":"ghashtag/t27","name":"base::types","line":3,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4c42cd77cd3247972f0787ec81f7578f4b770de4d6977ddcbcc8e543101bfcf4","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4c42cd77cd3247972f0787ec81f7578f4b770de4d6977ddcbcc8e543101bfcf4","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4c58b9b71243fe4b1158a8e447bb9102bf2dc8392c4972321a39df491ed3653e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4c58b9b71243fe4b1158a8e447bb9102bf2dc8392c4972321a39df491ed3653e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4d62843989a3e55bc2b52630e79c32f09d444359ef2429da1fc529663910c953","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4dc4a3d792be4571b3ebb8e85dfcda02726d2908fc4552e05bea89c6f483ef8d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4dc4a3d792be4571b3ebb8e85dfcda02726d2908fc4552e05bea89c6f483ef8d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4ec184e2b90d849d42a837ef1be0c6f19e55e21f94793b6dd288a84dd0a89877","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4ec184e2b90d849d42a837ef1be0c6f19e55e21f94793b6dd288a84dd0a89877","sourceRepo":"ghashtag/t27","name":"file::schema","line":7,"to":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","candidates":["dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b"],"status":"resolved"},{"from":"4eca929d7822c55feff4cbd456c88688c352fbec4ecfc7e4755983b08ae660a5","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":8,"to":"4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e","candidates":["4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e"],"status":"resolved"},{"from":"4f3c63813dd85889325a7567f829572f66ddd9201e19cd60ed6beaefe154beac","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4f3c63813dd85889325a7567f829572f66ddd9201e19cd60ed6beaefe154beac","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"4f5f9b43b9ec8b0be6593775af54ff6721d169e5e2c33898a1443dcbdfe4d85d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":14,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::corona_oracle","line":12,"to":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","candidates":["627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f"],"status":"resolved"},{"from":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::rom_layout","line":13,"to":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","candidates":["c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c"],"status":"resolved"},{"from":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":11,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"50d838b5e5138ffeb2875b3a6c831f34ba6a2953a3086db6752b1a6b490213ba","sourceRepo":"ghashtag/t27","name":"fpga::ternary_isa::TernaryIsa","line":8,"to":"9fb0fcc0a0a24932ffc0181e6a6847e06936d35c5919c29d74f6decccdd8b5dd","candidates":["9fb0fcc0a0a24932ffc0181e6a6847e06936d35c5919c29d74f6decccdd8b5dd"],"status":"resolved"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::types::Float","line":16,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::math::cosine_sim","line":17,"to":null,"candidates":[],"status":"missing"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::math::normalize_l2","line":18,"to":null,"candidates":[],"status":"missing"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::constants::PHI","line":19,"to":null,"candidates":[],"status":"missing"},{"from":"515bffd0d52fc79669620e18b71801e0b05c98ead9e8c59729448cf98d9dabbc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"515bffd0d52fc79669620e18b71801e0b05c98ead9e8c59729448cf98d9dabbc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"5182f6fa681faab5e767959d49e8be18f2305b6b9bb41130dacbf9974da4eef4","sourceRepo":"ghashtag/t27","name":"test_framework::core","line":7,"to":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","candidates":["6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65"],"status":"resolved"},{"from":"5182f6fa681faab5e767959d49e8be18f2305b6b9bb41130dacbf9974da4eef4","sourceRepo":"ghashtag/t27","name":"numeric::golden_float","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"5189c2771d5edfddea6da5b8d20ee348fd44b3bd83e034188081e4a79f64fd40","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5195f89bfc0b1f3ed434ef6371ba940a629ba01eee7a3746f6f14ec0cde9a141","sourceRepo":"ghashtag/t27","name":"math::constants","line":6,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"51eb7e2902d6348c94a6cfdadcc344287e232c6ff46bcb74c509bbb32fc98aeb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"51eb7e2902d6348c94a6cfdadcc344287e232c6ff46bcb74c509bbb32fc98aeb","sourceRepo":"ghashtag/t27","name":"storage::schema","line":7,"to":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","candidates":["b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7"],"status":"resolved"},{"from":"524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"528e169ef24245d00dac40a60e4327ac44d818f4fdab488818cbf3ac15597dbd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"528e169ef24245d00dac40a60e4327ac44d818f4fdab488818cbf3ac15597dbd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207","sourceRepo":"ghashtag/tri-net","name":"base::types","line":7,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","sourceRepo":"ghashtag/t27","name":"git::schema","line":7,"to":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","candidates":["a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa"],"status":"resolved"},{"from":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":8,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sourceRepo":"ghashtag/trinity","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sourceRepo":"ghashtag/trinity","name":"math::sacred_physics","line":8,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"56f823f5a276ae2ec4740de0058cc1ec3071884ff89ed433dd20c4714c99997e","sourceRepo":"ghashtag/t27","name":"fpga::cts::CTS","line":8,"to":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","candidates":["84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea"],"status":"resolved"},{"from":"573be7de419ab7d4c873367a65bd56f3da10c48b445cb4a6a5e046972b00a392","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"573be7de419ab7d4c873367a65bd56f3da10c48b445cb4a6a5e046972b00a392","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sourceRepo":"ghashtag/t27","name":"base::types::Trit","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sourceRepo":"ghashtag/t27","name":"brain::unified_state","line":10,"to":"d4d622f9fd9fbec6a8d63641fd7c48218d43c41085fb8a71c94a520f5b33c186","candidates":["d4d622f9fd9fbec6a8d63641fd7c48218d43c41085fb8a71c94a520f5b33c186"],"status":"resolved"},{"from":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"57ece309a4353fd534a182df50e003dd406d886579600342e183453955427bc9","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"57ece309a4353fd534a182df50e003dd406d886579600342e183453955427bc9","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"57f187f5bec5e6b70f931e78ac5f199afa1bd38a6f3b44e647e45cbf6b07f270","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"57f187f5bec5e6b70f931e78ac5f199afa1bd38a6f3b44e647e45cbf6b07f270","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"58d11c0dbcaf4696af240a612c6555640d0d5b70bbe1781eb8506a393b0e0276","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"58d11c0dbcaf4696af240a612c6555640d0d5b70bbe1781eb8506a393b0e0276","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"58ea0bee6120e2dd493c7cb9153ae2561b2fa46aa565029d743d3193dae18814","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"58ea0bee6120e2dd493c7cb9153ae2561b2fa46aa565029d743d3193dae18814","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"58edcf797efc944558c848fdcc432d92d901d02767896b297eb2e080136d1d76","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"58edcf797efc944558c848fdcc432d92d901d02767896b297eb2e080136d1d76","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"58fee3a32e3125d1d89aaa783abe63023ee0c6c94a4a6cabe8ce585867014c40","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"58fee3a32e3125d1d89aaa783abe63023ee0c6c94a4a6cabe8ce585867014c40","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sourceRepo":"ghashtag/t27","name":"fpga::assembler::Assembler","line":8,"to":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","candidates":["554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00"],"status":"resolved"},{"from":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sourceRepo":"ghashtag/t27","name":"fpga::linker::Linker","line":9,"to":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","candidates":["64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e"],"status":"resolved"},{"from":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5a687cc8950853b70473bc1bc1ade24e033e94ad14be342803202dc51c2e55e1","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5bba9ceaa24af8afd4c4fa0557c580a568c26d4be8bfe89645c9852cb59f3b2f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5bba9ceaa24af8afd4c4fa0557c580a568c26d4be8bfe89645c9852cb59f3b2f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","sourceRepo":"ghashtag/t27","name":"core","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","sourceRepo":"ghashtag/t27","name":"storage::schema","line":7,"to":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","candidates":["b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7"],"status":"resolved"},{"from":"5f997ba4055b8af78726efd65f8b96858c47eeda5520ac82c8280183050215a7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"5f997ba4055b8af78726efd65f8b96858c47eeda5520ac82c8280183050215a7","sourceRepo":"ghashtag/t27","name":"shell::schema","line":7,"to":"9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd","candidates":["9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd"],"status":"resolved"},{"from":"600926a156c1d8cea584d967fe1980a29dcf7bb82b12268e72e47dc70ad29567","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"600926a156c1d8cea584d967fe1980a29dcf7bb82b12268e72e47dc70ad29567","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"600926a156c1d8cea584d967fe1980a29dcf7bb82b12268e72e47dc70ad29567","sourceRepo":"ghashtag/t27","name":"TriGraphBfs::Graph","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":10,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":11,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":12,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":10,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":12,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"61bee61eb1becd2304b09a5b6c5e9d0273286e3d3986fe9542c8d5f9dd3d270a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"61bee61eb1becd2304b09a5b6c5e9d0273286e3d3986fe9542c8d5f9dd3d270a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"61c1edda964778e108dde6336fc5e56af6f99cda5bb8549db12833e6d399de2e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":24,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"621b8342483e5311f3132a0301b536b5af3f6825b2764bb5a89b3507c59c44a0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"621b8342483e5311f3132a0301b536b5af3f6825b2764bb5a89b3507c59c44a0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"627a4a71ee5506649082cb4e58f086a9419c4bbe6fe9d6dd6fe18c8dcf10a51f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"627a4a71ee5506649082cb4e58f086a9419c4bbe6fe9d6dd6fe18c8dcf10a51f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":15,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::constants","line":16,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::sacred_physics","line":17,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::formats_catalog","line":18,"to":null,"candidates":[],"status":"missing"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::goldenfloat_family","line":19,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::rom_layout","line":20,"to":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","candidates":["c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::protocol","line":21,"to":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","candidates":["e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::anchor","line":22,"to":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","candidates":["89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf"],"status":"resolved"},{"from":"6300dc270115322725d4e00244e601fe557f70f71225dc72949205213033e573","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6300dc270115322725d4e00244e601fe557f70f71225dc72949205213033e573","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"6336dabb5211c7b3806374f72fbd1f667932147709ff1fa01ff7180d6a6c2198","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6336dabb5211c7b3806374f72fbd1f667932147709ff1fa01ff7180d6a6c2198","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"638f8c5539801b533589411377798f5a62204a19dedb71d2853cde55d12b9ad4","sourceRepo":"ghashtag/t27","name":"memory::notebooklm","line":7,"to":"bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd","candidates":["bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd"],"status":"resolved"},{"from":"64142c17ce8d43e97ce64a2438f7deeb45a64f2a35afeb61b6a22b621e47a92c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"64142c17ce8d43e97ce64a2438f7deeb45a64f2a35afeb61b6a22b621e47a92c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"6532bcb37b12d57aa03d22717557fa16e727b9c4e6389c3afdd829bc74a23ab0","sourceRepo":"ghashtag/tri-net","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"65a1be346037fe16c5c3e1c488a0e7133d3ed70798908887efad7301a63a6229","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"65a1be346037fe16c5c3e1c488a0e7133d3ed70798908887efad7301a63a6229","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"65ce4c1696f3a7db3dbc95d4986c5a8f8ce7f516fa4d605fae6c20fe1622327c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"65ce4c1696f3a7db3dbc95d4986c5a8f8ce7f516fa4d605fae6c20fe1622327c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"669f21eabeba9622b34f49e9a1ab625a25e9cd5cecdd13db587766154719b3bb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"669f21eabeba9622b34f49e9a1ab625a25e9cd5cecdd13db587766154719b3bb","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"677da3e87cc72897a8bd881df8617b1346fb0c578ec5ef3e74c666f4faae713b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"677da3e87cc72897a8bd881df8617b1346fb0c578ec5ef3e74c666f4faae713b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6926ef2f5ef68b7a540eae2c7bffc4efd4928bcf00686806f549664b92b8afd7","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"69dcd472eba111cccdfec32dcdd34044c10f567927a9c6f925ce33e962b9cd6e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"69dcd472eba111cccdfec32dcdd34044c10f567927a9c6f925ce33e962b9cd6e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"69dfde195e9294cbe1a7dec908d04fb3c8f2de72498d4df8f400f48eb6b2289b","sourceRepo":"ghashtag/t27","name":"fpga::simulator::Simulator","line":8,"to":"77994ef12abe99523526c9731a3fb05116385ee25b471f3dbe771fb45c14969c","candidates":["77994ef12abe99523526c9731a3fb05116385ee25b471f3dbe771fb45c14969c"],"status":"resolved"},{"from":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6bcf3942f1f175d1c3708484d4cb216a6e6ba7492a6ebf7e6320887c7d13a42b","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":7,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"6c727d13e4889735bc80ade95073f07d6efad2c15bf20908645292b10c6e862a","sourceRepo":"ghashtag/t27","name":"math::constants","line":19,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"6c727d13e4889735bc80ade95073f07d6efad2c15bf20908645292b10c6e862a","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":20,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6ffa742ec615265d04536053c181c131d6a2f56c37c556c564f804bc80a31798","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"6ffa742ec615265d04536053c181c131d6a2f56c37c556c564f804bc80a31798","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"703eb5d6500fef5c34aaecbea8ab0b1c2010aa533f0d9a968640472d626928de","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"703eb5d6500fef5c34aaecbea8ab0b1c2010aa533f0d9a968640472d626928de","sourceRepo":"ghashtag/t27","name":"shell::schema","line":7,"to":"9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd","candidates":["9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd"],"status":"resolved"},{"from":"7051f62a04ddbdbdb0160cab4dbcf39e708ff65bb88b06479ae1479d39a0a4c0","sourceRepo":"ghashtag/t27","name":"fpga::vcd_conformance_compare::VcdConformanceCompare","line":8,"to":"f4725c1e5baf34cd48150fccccaf061f585340ffd5963986293fb3262ce8e6e3","candidates":["f4725c1e5baf34cd48150fccccaf061f585340ffd5963986293fb3262ce8e6e3"],"status":"resolved"},{"from":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"70bcc025a81318ef01a6aa390f152b48330c5ed922a4763664c2ecc503a31c8b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"70bcc025a81318ef01a6aa390f152b48330c5ed922a4763664c2ecc503a31c8b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"70caa43e010103f43db3418afc193c98c460dd43e094a61120c633edea231391","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"70caa43e010103f43db3418afc193c98c460dd43e094a61120c633edea231391","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":24,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"7156843614c320375957c8e17cb3af8e70ba2fa9a8d6e10ebd961b6a91b39ae6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7156843614c320375957c8e17cb3af8e70ba2fa9a8d6e10ebd961b6a91b39ae6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"721567e5cac0cb8064c09e022bbb3b73e87d5d512576283e9a837e0859e0707f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"721567e5cac0cb8064c09e022bbb3b73e87d5d512576283e9a837e0859e0707f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"72501df79dc2adb19c9b4c5515c42792f2dbdcb6ade527167238214ebc04ca3a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"72501df79dc2adb19c9b4c5515c42792f2dbdcb6ade527167238214ebc04ca3a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"725bb58e6c2423aa603f15fc52aeb856be9f60a4206293a938966cf11aa9814f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"725bb58e6c2423aa603f15fc52aeb856be9f60a4206293a938966cf11aa9814f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","sourceRepo":"ghashtag/trinity-fpga","name":"math::constants","line":6,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"7340bfb45e9f95ffc6a1582f488755545718cdf7c240a92b37f30a48591d3e73","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7340bfb45e9f95ffc6a1582f488755545718cdf7c240a92b37f30a48591d3e73","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"748a19d26fa53cf98eb889e0f223855c49e88d6d7efa5a7ca3c68accc9768c0e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"74c47290c2b18db036f4247d5934d5023351923765d7f27d10ab41af05badba9","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"74c47290c2b18db036f4247d5934d5023351923765d7f27d10ab41af05badba9","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"75057ee2ad3e822c422ce7e02fcbd28df64df4237be2983dc47a485982c08e3a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"75057ee2ad3e822c422ce7e02fcbd28df64df4237be2983dc47a485982c08e3a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"76a39f4c7d0e78833ccaedd7533f74b68e8350453f0198b2c1cf370138a5419e","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"78176a2c16de376d1c47bd45b8b29879bf705e5d16ff1275d88f4d7f82464132","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"78176a2c16de376d1c47bd45b8b29879bf705e5d16ff1275d88f4d7f82464132","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"789bbb1afcb0ff7eaa3b941eec6a51786e7b5e9ac34615e2bae3b458bf4464b1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"789bbb1afcb0ff7eaa3b941eec6a51786e7b5e9ac34615e2bae3b458bf4464b1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"78fb5c9300e99d054e736a1987e58b72a08481fbed4dec98bab56f0ca9c5f0ff","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"78fb5c9300e99d054e736a1987e58b72a08481fbed4dec98bab56f0ca9c5f0ff","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","sourceRepo":"ghashtag/tri-net","name":"base::types","line":16,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"79c4a7d5901cfb8c91c756ab52bf7f2b36bcee7d7cdae1dfbeb072057a34b733","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"79c4a7d5901cfb8c91c756ab52bf7f2b36bcee7d7cdae1dfbeb072057a34b733","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"7a880f998c16ce8290d35402588b2685ed7b538f288b847878d1120f66c57e60","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7a880f998c16ce8290d35402588b2685ed7b538f288b847878d1120f66c57e60","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"7a96cffe0aaed3d11bd517bb7d234578912f19fb38788fbfdbe0ff428fa69de4","sourceRepo":"ghashtag/t27","name":"timestamp","line":16,"to":null,"candidates":[],"status":"missing"},{"from":"7b0d45737fe557fd91cab1c2fa99092d032fe5032d8ea4ebd0a7370b3408ec2b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7b0d45737fe557fd91cab1c2fa99092d032fe5032d8ea4ebd0a7370b3408ec2b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","candidates":["08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7"],"status":"resolved"},{"from":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":4,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","sourceRepo":"ghashtag/tri-net","name":"base::types","line":22,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7cc94315c7dfd7453de9d1dcaba920d8ff4bd8c208f751f4861d046741ecbc80","sourceRepo":"ghashtag/t27","name":"math::constants","line":37,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"7cc94315c7dfd7453de9d1dcaba920d8ff4bd8c208f751f4861d046741ecbc80","sourceRepo":"ghashtag/t27","name":"math::e8_lie_algebra","line":38,"to":"a304c38d4f437a1049622d15f7c677afee0709cdbc5ec45efb471acfa1ad8147","candidates":["a304c38d4f437a1049622d15f7c677afee0709cdbc5ec45efb471acfa1ad8147"],"status":"resolved"},{"from":"7cc94315c7dfd7453de9d1dcaba920d8ff4bd8c208f751f4861d046741ecbc80","sourceRepo":"ghashtag/t27","name":"math::zamolodchikov_e8","line":39,"to":"134e2faa0b97395159aeed11d68ef9158bbf0ed0ad51f5c5d68f878a14bd5d98","candidates":["134e2faa0b97395159aeed11d68ef9158bbf0ed0ad51f5c5d68f878a14bd5d98"],"status":"resolved"},{"from":"7cc94315c7dfd7453de9d1dcaba920d8ff4bd8c208f751f4861d046741ecbc80","sourceRepo":"ghashtag/t27","name":"physics::su2_chern_simons","line":40,"to":"8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0","candidates":["8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0"],"status":"resolved"},{"from":"7cd10a5c5d22642ef412c68d9607954f194b4028219fbd66f5d6fca71f4a6851","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7cd10a5c5d22642ef412c68d9607954f194b4028219fbd66f5d6fca71f4a6851","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"7d1bacd489455a84c26e596856c878f9d1acf040b8fc74fdadc6f3485f6c0ae6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7d1bacd489455a84c26e596856c878f9d1acf040b8fc74fdadc6f3485f6c0ae6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7de9d8fe941d574b862a1724428a32e859938c864fa3748f3a14719ff0707388","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","sourceRepo":"ghashtag/t27","name":"ternary::bigint","line":12,"to":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","candidates":["72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237"],"status":"resolved"},{"from":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7f884cb32c6f7d9514516b88822759463bf25c897086667ee32db3c879ba16b8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"7f884cb32c6f7d9514516b88822759463bf25c897086667ee32db3c879ba16b8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","sourceRepo":"ghashtag/t27","name":"fpga::router::Router","line":8,"to":"802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3","candidates":["802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3"],"status":"resolved"},{"from":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","sourceRepo":"ghashtag/t27","name":"git::schema","line":7,"to":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","candidates":["a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa"],"status":"resolved"},{"from":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8307925dbc45b3ed584415d8bd9070bb7ec3587ed027bc0f724e5805fcc13f43","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8307925dbc45b3ed584415d8bd9070bb7ec3587ed027bc0f724e5805fcc13f43","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","sourceRepo":"ghashtag/t27","name":"fpga::partition::Partition","line":8,"to":"a11838e1aecb9b6d3fddfabb63acbd8b182e6ee0430a2024bebe7cc42b5ed62d","candidates":["a11838e1aecb9b6d3fddfabb63acbd8b182e6ee0430a2024bebe7cc42b5ed62d"],"status":"resolved"},{"from":"83aa4fea931086c40ec0010442eeb70ec84787ab500f472c20652481b8db9b0d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"83aa4fea931086c40ec0010442eeb70ec84787ab500f472c20652481b8db9b0d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"83bcf7b8bcf5e4c1191f1c163b2f060e9a35b2a1a9e3bb3cc5809dbee41c5b6b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"83bcf7b8bcf5e4c1191f1c163b2f060e9a35b2a1a9e3bb3cc5809dbee41c5b6b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"83ce36c41a0e28ccfb5a1fec555366bafd6a4a2307bbd82ba498bdd2d8b4e174","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"83ce36c41a0e28ccfb5a1fec555366bafd6a4a2307bbd82ba498bdd2d8b4e174","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"8400075d826d25687c6e8b870036acfd8e2f433d8b8caa5462815acff4fb9c76","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8400075d826d25687c6e8b870036acfd8e2f433d8b8caa5462815acff4fb9c76","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","sourceRepo":"ghashtag/tri-net","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","sourceRepo":"ghashtag/t27","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"85886ff8a1b7a674923d3b4ab6e76727ad0ab89b7adb14a853a12bd946df48c8","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"85ee6b76ac54f68b3023b73083cabfcc56dd14175e5f403a0a6a5e2f8c03d957","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"85ee6b76ac54f68b3023b73083cabfcc56dd14175e5f403a0a6a5e2f8c03d957","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"86e81f4b5cd5a08015f4d2df7b1d1fe992430bc04278851f0c66e0b050c2d8e2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"86e81f4b5cd5a08015f4d2df7b1d1fe992430bc04278851f0c66e0b050c2d8e2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"870a33f2ff7a6fe458c1d4ebbff5cf8632c697d2f59a5bf243e943bf1e5186db","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"878a4f0adcbe1e4e645217f48c2e9237a2f48a6e1027e10e4f273c6dacc72813","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"881cb1ecd624422cbe055e73272343e1fa48151ce41b680fa1b01eaed9a26319","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","sourceRepo":"ghashtag/t27","name":"session::schema","line":7,"to":null,"candidates":[],"status":"missing"},{"from":"892bfeccae76c838fbdf64c33008605d79293384109ec5b22d087373db822e7f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::constants","line":12,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::sacred_physics","line":13,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::gf16","line":14,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::lucas_accumulator","line":15,"to":null,"candidates":[],"status":"missing"},{"from":"89a82df081a09a38342695f35cabf254134613350aefca687a35ea4759af931e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"89a82df081a09a38342695f35cabf254134613350aefca687a35ea4759af931e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"89eef91ae05519dabf5a5152db51f335ba5bc5e2ca7e361683da5a42e37041cc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"89eef91ae05519dabf5a5152db51f335ba5bc5e2ca7e361683da5a42e37041cc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"89fbd6f1c37f365020db6ef8784fbf958bb80b0148ffad87d5bb6d0620be6ca5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"89fbd6f1c37f365020db6ef8784fbf958bb80b0148ffad87d5bb6d0620be6ca5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"8b485c4c2584c91329dc3f568cbc97a67c7cbe96f0129ddace1afbb5c26a837a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8b485c4c2584c91329dc3f568cbc97a67c7cbe96f0129ddace1afbb5c26a837a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0","sourceRepo":"ghashtag/t27","name":"math::constants","line":27,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"8b611091e36db3b92fe7f638cf06ac27b2b81236877affee18656f939e62ac60","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8b611091e36db3b92fe7f638cf06ac27b2b81236877affee18656f939e62ac60","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"8b7170ce5946d494428c43084d30ccbcad94c0cda325f4dde2cacb16cee3c7b9","sourceRepo":"ghashtag/tri-net","name":"base::types","line":18,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8c7eb232f335e199f7968157572eec38137ed21da8d5636217e68aa03f0fbfe7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8c7eb232f335e199f7968157572eec38137ed21da8d5636217e68aa03f0fbfe7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"8db5032d715bebe3c8a79ac21378908cde937f4e7a0d561912d35ee31eb72941","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8db5032d715bebe3c8a79ac21378908cde937f4e7a0d561912d35ee31eb72941","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8e659486966270a99e18f69ebb5b9818b057f2edccc316a3e71e3c3c97e36e9b","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"8ffcce3b336eb21cb1cfa914a39ca513acf89927a5fe45621b3e5ea95c203b14","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"8ffcce3b336eb21cb1cfa914a39ca513acf89927a5fe45621b3e5ea95c203b14","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9081f9ef5592e9d1591a6e998d89e9caad8404732672de69059c5261c92cd839","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9081f9ef5592e9d1591a6e998d89e9caad8404732672de69059c5261c92cd839","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9081f9ef5592e9d1591a6e998d89e9caad8404732672de69059c5261c92cd839","sourceRepo":"ghashtag/t27","name":"TriGraphBfs::Graph","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"911a4877e67ee722fa3853fbe620f48db4aa1091718638d0a8331a6804f59a08","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"911a4877e67ee722fa3853fbe620f48db4aa1091718638d0a8331a6804f59a08","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"92643bce03950f663ae5071666c57c6d76eae0aeabde17acf65d5480f27349a9","sourceRepo":"ghashtag/tri-net","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"92edde98e6961cc767cf56e5dcc45e372f2441034fb463c6f0f8b3f23558a129","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"92edde98e6961cc767cf56e5dcc45e372f2441034fb463c6f0f8b3f23558a129","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"93b28c8587488c79a31f4d0ac9f4f23d0b12ee8a248d07e2852b3b8dcd30c275","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"93b28c8587488c79a31f4d0ac9f4f23d0b12ee8a248d07e2852b3b8dcd30c275","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"94369edf5d1ff6cdc3ca1d798a5a5e7a248c0c03c4487d5514bf4299d45237a1","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"948f91989383d6a7e3a148da37c9671bde69f5599fa95abf1c9704922108f3d3","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"94b8ba45c9fc2ba5bd563a24babe3d3dabf3c73b34b2a3957fcc9021b0ccbb5a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"94b8ba45c9fc2ba5bd563a24babe3d3dabf3c73b34b2a3957fcc9021b0ccbb5a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"951bad07733ec08a0c4ed25ccd7725a5719c5d19b17853dd34475a6a772ec61f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"951bad07733ec08a0c4ed25ccd7725a5719c5d19b17853dd34475a6a772ec61f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"954e3d675f8e00e616cd9edd2b3e811cbf0b32671e1f86a9e4849a276e7fd2b2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"954e3d675f8e00e616cd9edd2b3e811cbf0b32671e1f86a9e4849a276e7fd2b2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"95adae8177152fed3fdc7053855952b9e7c25df01b05220fef44791869fcb740","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"95adae8177152fed3fdc7053855952b9e7c25df01b05220fef44791869fcb740","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"966383348575729e6d03fe400132af96cdfde5f94474ccaa8075a03d33d89892","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"966383348575729e6d03fe400132af96cdfde5f94474ccaa8075a03d33d89892","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sourceRepo":"ghashtag/t27","name":"base::testing","line":15,"to":null,"candidates":[],"status":"missing"},{"from":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":16,"to":null,"candidates":[],"status":"missing"},{"from":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","sourceRepo":"ghashtag/t27","name":"base::types","line":14,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","sourceRepo":"ghashtag/t27","name":"math::constants","line":15,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","sourceRepo":"ghashtag/t27","name":"vsa::ops","line":16,"to":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","candidates":["f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da"],"status":"resolved"},{"from":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","sourceRepo":"ghashtag/t27","name":"physics::su2_chern_simons","line":17,"to":"8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0","candidates":["8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0"],"status":"resolved"},{"from":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":18,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9855e557c4835debc2d9406218a857ec769f898f515923d5ac580109004534a1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9855e557c4835debc2d9406218a857ec769f898f515923d5ac580109004534a1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"98578314d53fe356ab21af4b448e2a720e0013767b1c731960899da6b420f749","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"98578314d53fe356ab21af4b448e2a720e0013767b1c731960899da6b420f749","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","candidates":["08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7"],"status":"resolved"},{"from":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"98db9288801328af6072230fda40876822530cb63d13a05d172d7d69bf40a8d0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"98db9288801328af6072230fda40876822530cb63d13a05d172d7d69bf40a8d0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9973916e12d9225b9f175037e9bd30897284f515074a11b97585dbf7b1a59e80","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"99b995b524d5cd98373b063e716660c23e7d213e303e78dd6f6dda1584a2c0e2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"99b995b524d5cd98373b063e716660c23e7d213e303e78dd6f6dda1584a2c0e2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","sourceRepo":"ghashtag/t27","name":"fpga::timing::Timing","line":8,"to":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","candidates":["a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed"],"status":"resolved"},{"from":"9a18d4a90dc2239c615e3b4611e289c3681a3e9099982889a9d55d671f0cfb5a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9a18d4a90dc2239c615e3b4611e289c3681a3e9099982889a9d55d671f0cfb5a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9a2f505cc2386228c7461e99dcea598525cb97ef5f4e41629fe0a68a45b21434","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9a2f505cc2386228c7461e99dcea598525cb97ef5f4e41629fe0a68a45b21434","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"9b53d5503a156f2833a3785d3b4254b3ba6f2c477d87668b9756e0f949d8285a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9b53d5503a156f2833a3785d3b4254b3ba6f2c477d87668b9756e0f949d8285a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9c52bd5e42a414e2d0ed5da344bf5ff4c61a5ccca57c35537983483a38b480db","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9c52bd5e42a414e2d0ed5da344bf5ff4c61a5ccca57c35537983483a38b480db","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9dbf325b34ce2247c239eeaec29739d1a5a13e606c0d5754bd2bb2b7a645203f","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9f691d19445851f83fcda9c64911b33bb8d409a8cd01bfdf8dd17968edadf8ec","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9f691d19445851f83fcda9c64911b33bb8d409a8cd01bfdf8dd17968edadf8ec","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9f9c5ccbfad7094a6514656e4c2f80089f67f92448c28584323b8e063361b94f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9f9c5ccbfad7094a6514656e4c2f80089f67f92448c28584323b8e063361b94f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"9fc79210c8bdb054a1f7b85f34696cb0b0ccd971edd126db0c6950073f68bacf","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"9fc79210c8bdb054a1f7b85f34696cb0b0ccd971edd126db0c6950073f68bacf","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","sourceRepo":"ghashtag/t27","name":"fpga::hir::Hir","line":8,"to":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","candidates":["0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa"],"status":"resolved"},{"from":"a10cd453780251bfe86342dd0f2b5fb5b0d46f088353c0a4cfd9543f11f1f007","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a10cd453780251bfe86342dd0f2b5fb5b0d46f088353c0a4cfd9543f11f1f007","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a1c5f092447e90848b032f7772fcd3dcff2d11b17b195bf9ae3f8dadd22a488e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a1c5f092447e90848b032f7772fcd3dcff2d11b17b195bf9ae3f8dadd22a488e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a1ed6afc5aa1c11bce711e375e5cf179aca67c2accc4adbceebd0aca4d91c686","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a1ed6afc5aa1c11bce711e375e5cf179aca67c2accc4adbceebd0aca4d91c686","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a2763ea254fa12292e8679306c5d8f24bb81f8c13834f63a5c62737bb25f6af1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":20,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a2b2424d5bd2d58140d2ebc9320d27cb6e99e0f3f25d294ecc14cd437076e907","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a2b2424d5bd2d58140d2ebc9320d27cb6e99e0f3f25d294ecc14cd437076e907","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a304c38d4f437a1049622d15f7c677afee0709cdbc5ec45efb471acfa1ad8147","sourceRepo":"ghashtag/t27","name":"math::constants","line":25,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","sourceRepo":"ghashtag/t27","name":"isa::registers","line":10,"to":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","candidates":["cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f"],"status":"resolved"},{"from":"a522aeb649e6ff9cee8e8352992b5a81155c073aa0c62ff2896fdc5300dafc63","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a522aeb649e6ff9cee8e8352992b5a81155c073aa0c62ff2896fdc5300dafc63","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a72d2ea5db5519cf66f7d714b6b641c9844824efb9942b18d7ad54b31a89384d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a72d2ea5db5519cf66f7d714b6b641c9844824efb9942b18d7ad54b31a89384d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a7ce1cc4ced86cc2bcf1f682238b76595ec6787bee6dcd2320985c19e801f284","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a7ce1cc4ced86cc2bcf1f682238b76595ec6787bee6dcd2320985c19e801f284","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a8a83daf267d0504d21379f7c2dce998cf5c9ea4847715134afb9b0afd952da9","sourceRepo":"ghashtag/t27","name":"base::types","line":22,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a8e61e3999e7a9f8b70f50c9e4be8038c91b50ed589aac52c50eb38a14295197","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"a8e61e3999e7a9f8b70f50c9e4be8038c91b50ed589aac52c50eb38a14295197","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","sourceRepo":"ghashtag/t27","name":"nn::hslm","line":10,"to":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","candidates":["e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce"],"status":"resolved"},{"from":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","sourceRepo":"ghashtag/t27","name":"compiler::runtime","line":11,"to":null,"candidates":[],"status":"missing"},{"from":"aa68e993cc9415a7df4fda9e3366a8cb1c8de9e0f35f2b499f550f2bf45b2936","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":8,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"acf6ebbee2cb8fc7ed573fa75e2196c7db42ccdd33c893329bf26bd5299845f6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"acf6ebbee2cb8fc7ed573fa75e2196c7db42ccdd33c893329bf26bd5299845f6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ad278f2c5876f7f6c78a0fd9bd181c12fe7311b243653275b18fc045a8afcb37","sourceRepo":"ghashtag/t27","name":"fpga::linker::Linker","line":8,"to":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","candidates":["64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e"],"status":"resolved"},{"from":"ad4f67213e211d9a352750162ca8b59e3baa58562942ffc6c101d1843fb65426","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ad4f67213e211d9a352750162ca8b59e3baa58562942ffc6c101d1843fb65426","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ad9a14e1f66ec601b43a9219308192aff9e1f81fe8813a34af87d7f33c180b99","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ad9a14e1f66ec601b43a9219308192aff9e1f81fe8813a34af87d7f33c180b99","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"adcd983d989617b9dfe6c0f09f2a397b0de0f093be8f71ad713f4f55abf4c3e7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"adcd983d989617b9dfe6c0f09f2a397b0de0f093be8f71ad713f4f55abf4c3e7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","sourceRepo":"ghashtag/t27","name":"tritype::base","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":9,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"ae3d2608f85fe75b730cedad5deb9e7665c28613bed1c5c4304b8b0ad5e0f1b0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ae3d2608f85fe75b730cedad5deb9e7665c28613bed1c5c4304b8b0ad5e0f1b0","sourceRepo":"ghashtag/t27","name":"account::schema","line":7,"to":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","candidates":["6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2"],"status":"resolved"},{"from":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sourceRepo":"ghashtag/t27","name":"math::statistics","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":9,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sourceRepo":"ghashtag/t27","name":"ml::transformer::positional_enc","line":10,"to":"e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656","candidates":["e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656"],"status":"resolved"},{"from":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sourceRepo":"ghashtag/t27","name":"ml::transformer::norm","line":11,"to":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","candidates":["f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2"],"status":"resolved"},{"from":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","candidates":["08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7"],"status":"resolved"},{"from":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":4,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"b29f2489715e54b82b6b5a2089b82e5c87fbcdd014cf0e3f43101aaffaa5abfb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b29f2489715e54b82b6b5a2089b82e5c87fbcdd014cf0e3f43101aaffaa5abfb","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","sourceRepo":"ghashtag/t27","name":"github::auth","line":9,"to":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","candidates":["4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5"],"status":"resolved"},{"from":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","sourceRepo":"ghashtag/t27","name":"github::issues","line":10,"to":"64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","candidates":["64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4"],"status":"resolved"},{"from":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","sourceRepo":"ghashtag/t27","name":"github::prs","line":11,"to":"4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","candidates":["4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9"],"status":"resolved"},{"from":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","sourceRepo":"ghashtag/t27","name":"github::comments","line":12,"to":"7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","candidates":["7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604"],"status":"resolved"},{"from":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","sourceRepo":"ghashtag/t27","name":"tri::sync","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"b37a891477e02303d3821493c20d8c3a59d9cc04b5a01f1948396712e31cc289","sourceRepo":"ghashtag/tri-net","name":"base::types","line":15,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b3f9fa31faa278b582572a364188ee26094f06493002e8df7ad3fd3bb18847e0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b3f9fa31faa278b582572a364188ee26094f06493002e8df7ad3fd3bb18847e0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"b46496033b9cc8164845ba0b6139ad8429704fea6f66a2dce46dd460ea892fac","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b5714e6f7e9a0a68a29968ab50f4855843bdf9b856ab301bc3c402c9f900a62a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b5714e6f7e9a0a68a29968ab50f4855843bdf9b856ab301bc3c402c9f900a62a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"b5ec191b29fa9280a515951ebad973bcf176922a4b556b3abda65dfbca5fef8b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b5ec191b29fa9280a515951ebad973bcf176922a4b556b3abda65dfbca5fef8b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"b62c204061b2484b45cd758b203f828582b766d24dc6126ef3d6415872aea62a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b62c204061b2484b45cd758b203f828582b766d24dc6126ef3d6415872aea62a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","candidates":["08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7"],"status":"resolved"},{"from":"b70865df4803d3a0bfea341b85480b10dc9e8645203943b9461233d283a4be4a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b70865df4803d3a0bfea341b85480b10dc9e8645203943b9461233d283a4be4a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"b8982faa07203a5a52fb224911126586345f2b8043116070602ec84ae459b40e","sourceRepo":"ghashtag/t27","name":"session_timeout","line":18,"to":null,"candidates":[],"status":"missing"},{"from":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sourceRepo":"ghashtag/t27","name":"base::testing","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"bc520fb9db99214b0349804b525a1e98f277b8ba699de1664456a00f242c92de","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bc75bbaaeec57c0e8571786c4e9e8c8ba7d4bae553124f10b12ab6a6cdb5efaa","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bc75bbaaeec57c0e8571786c4e9e8c8ba7d4bae553124f10b12ab6a6cdb5efaa","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"bca3e8deb428837bb49648c974bb103777ecfac6bb214210273bef4bf5d4733c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bca3e8deb428837bb49648c974bb103777ecfac6bb214210273bef4bf5d4733c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"bd7accfeb733b5d197590ce3d41ef52a287c5fa9d85aa28dcb9865e975b98715","sourceRepo":"ghashtag/tri-net","name":"base::types","line":14,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","sourceRepo":"ghashtag/t27","name":"isa::registers","line":11,"to":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","candidates":["cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f"],"status":"resolved"},{"from":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"bfc3764c6d710df490e0d10cfa5c0d99548f60cfe284614837138a7a02bc6f45","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bfc3764c6d710df490e0d10cfa5c0d99548f60cfe284614837138a7a02bc6f45","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":10,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"bfed6607cc634336de78652ca7a5459bcba12a87f0923ad27825c5a9d9f47a63","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"bfed6607cc634336de78652ca7a5459bcba12a87f0923ad27825c5a9d9f47a63","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::corona_oracle","line":13,"to":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","candidates":["627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f"],"status":"resolved"},{"from":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c1cbe82a00e3075ac9f1ecbc4f19cc905a6b90e80e437fd4780770301c9bfd68","sourceRepo":"ghashtag/t27","name":"fpga::bridge::FPGA_Bridge","line":8,"to":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","candidates":["4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41"],"status":"resolved"},{"from":"c1faa9155720958496096ae43b37c275bd524d8256bfb567d34c1a55c03b195c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c1faa9155720958496096ae43b37c275bd524d8256bfb567d34c1a55c03b195c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c2cdda51683f7917f9e0b8f72abb87a36e2a3ef0f0c239ab8f370bd4e35f9e4d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c2cdda51683f7917f9e0b8f72abb87a36e2a3ef0f0c239ab8f370bd4e35f9e4d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c4640c7a2ad1f9a0c29a2e975d615ec82130805ba1e1a75ed3f1c167fba995f7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c4640c7a2ad1f9a0c29a2e975d615ec82130805ba1e1a75ed3f1c167fba995f7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c5df0d82bd5c7ea6975cbcdd0faf2a81ac7f8a4032bd77d0224e2db7c731ccde","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c5df0d82bd5c7ea6975cbcdd0faf2a81ac7f8a4032bd77d0224e2db7c731ccde","sourceRepo":"ghashtag/t27","name":"storage::schema","line":7,"to":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","candidates":["b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7"],"status":"resolved"},{"from":"c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c6c932ec30079e224f4161aca945d49f96731af17b750848af08a2b7c2e6d786","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c6c932ec30079e224f4161aca945d49f96731af17b750848af08a2b7c2e6d786","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"c757522b59a7fed58d8f2409a674a72f552639d3978979bfc3b685f70e835b58","sourceRepo":"ghashtag/t27","name":"math::constants","line":9,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c757522b59a7fed58d8f2409a674a72f552639d3978979bfc3b685f70e835b58","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":10,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"c787ba3a1231e67ed5f73ee5de8a8c2114a90ae7136a6d5ec9e2e168fa87c4cb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c787ba3a1231e67ed5f73ee5de8a8c2114a90ae7136a6d5ec9e2e168fa87c4cb","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c808a47fcf8e502278cdcbfedf0524f963649e08c07bcf05d79a5a241915f196","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"c808a47fcf8e502278cdcbfedf0524f963649e08c07bcf05d79a5a241915f196","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"c9f60c228cb3f4b1b2a6fc6e000f87b1e293557106cdf0f003b5d163c5efa5b2","sourceRepo":"ghashtag/t27","name":"fpga::stdlib::Stdlib","line":8,"to":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","candidates":["52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91"],"status":"resolved"},{"from":"cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cbbd63036b371154deb8f49d58ca101528aa025a599c98e41fce34b9a8716a1b","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cc049a7f1fa34722ab6adc574f11e7a39639309b2c9b143230d09c07e2d5ff30","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cc9fa2740f04882be3445251ca491aa662c9fbbf658d0e6bd751b3941f2053f8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cc9fa2740f04882be3445251ca491aa662c9fbbf658d0e6bd751b3941f2053f8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"cd5f3f125dd528d1cf0d5c2d7f52f91b692421603aff1288625d3476e63d409f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cd5f3f125dd528d1cf0d5c2d7f52f91b692421603aff1288625d3476e63d409f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ce38bc42563751d3420b1df00e7733efe1d350364c12f5d9d6992d38c77ff6d1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ce38bc42563751d3420b1df00e7733efe1d350364c12f5d9d6992d38c77ff6d1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cf13f50e897ce279191f8f4df19554f90e56b39aaaea1db603e10e13639f5b3f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cf13f50e897ce279191f8f4df19554f90e56b39aaaea1db603e10e13639f5b3f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"cf2ee111f00f80d51daa5dcfa33e48da78c0f5e8c500ce6844994752f40acc1f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"cf2ee111f00f80d51daa5dcfa33e48da78c0f5e8c500ce6844994752f40acc1f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d03c705ff7827fe5d47967e7a791119855e77769cfe2c00278baa5c4436d723e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d03c705ff7827fe5d47967e7a791119855e77769cfe2c00278baa5c4436d723e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d10dbd0174015ac2a3c91ee97355ff93f5da3231f9925e1b27eac88e0284aa69","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d1c8b70e3fe2176c599433da14052d4628bed850866bb109b217723af830ca5f","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","sourceRepo":"ghashtag/trios","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d44f1183eb869dbd8501b0e8df1b8087414c59770cba19736beec51eb75657d7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d44f1183eb869dbd8501b0e8df1b8087414c59770cba19736beec51eb75657d7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d4947ee53db0368360cef453355ee9b159ca0ba130941231ff774a5e55c0ebfe","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d4c7953bbee4955efd35ac3ecfaba01b00cc47a2bef3114331d9531e62da4cf3","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d4c7953bbee4955efd35ac3ecfaba01b00cc47a2bef3114331d9531e62da4cf3","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d4fcc46e20aacaf30831a99d77db524f3a6fbbd23adc179b53017cddadd7cffb","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d4fcc46e20aacaf30831a99d77db524f3a6fbbd23adc179b53017cddadd7cffb","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"d60c1ce501e62dfeaaed0e2458b1c86ed171e5ab7e5f410930d00163e6b110f5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d60c1ce501e62dfeaaed0e2458b1c86ed171e5ab7e5f410930d00163e6b110f5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"d67d46cada717f8c91861d127ff6037bd17f72b367713a71c41fa0c81eb29b16","sourceRepo":"ghashtag/t27","name":"fpga::apb_bridge::ApbBridge","line":8,"to":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","candidates":["b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca"],"status":"resolved"},{"from":"d67ef86926024a8b8a1c3ee1188f8aded413c5e3094435a5e9965ab90a718726","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d67ef86926024a8b8a1c3ee1188f8aded413c5e3094435a5e9965ab90a718726","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d6b165602fa64c9cc3d3828ff8f608e83a326b55345be097866c3e8487a62725","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d6b165602fa64c9cc3d3828ff8f608e83a326b55345be097866c3e8487a62725","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d6e3126051f418b8d58ea7b6c5eb552c80f0102041dc075b9863c6a7c6de8bf1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d73fff6a01de7094ea95fa1b6ca12f3f8dc1c0d5ad4321b82f7c9ae0326351bc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d73fff6a01de7094ea95fa1b6ca12f3f8dc1c0d5ad4321b82f7c9ae0326351bc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d85ebdc9cc293a4c3e55e4345dd1bf19a956b079c8be620d0f84bc7f976f406b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d85ebdc9cc293a4c3e55e4345dd1bf19a956b079c8be620d0f84bc7f976f406b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d8970c696708b802f279b04ca2bd3dde298c299405b40f452e5b86ea2f556379","sourceRepo":"ghashtag/t27","name":"fpga::power_analysis::PowerAnalysis","line":8,"to":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","candidates":["60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16"],"status":"resolved"},{"from":"d89aed8796be285ae8c792f3fa66984292c9ecd3861585c0dc5fb3c59d0521c7","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"d89aed8796be285ae8c792f3fa66984292c9ecd3861585c0dc5fb3c59d0521c7","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"d9723ece2b34cc5b5bb189d6d0a852b4668100b9d6c02e15630a971329d2886d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d9723ece2b34cc5b5bb189d6d0a852b4668100b9d6c02e15630a971329d2886d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sourceRepo":"ghashtag/t27","name":"base::testing","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"da8ea962d62aa8d63087268502fef91c4bae154124d444ba2ac788b41d714f07","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"da8ea962d62aa8d63087268502fef91c4bae154124d444ba2ac788b41d714f07","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"daa2ba876ceb62f26c30617b5807667c1b56553dd520f27395e42e772a05f473","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"daa2ba876ceb62f26c30617b5807667c1b56553dd520f27395e42e772a05f473","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"db2809acd89c1cfc6c5240479183aab0a43a056e2e3e157075e8b33e1be480e1","sourceRepo":"ghashtag/t27","name":"fpga::bootrom::BootROM","line":8,"to":"095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958","candidates":["095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958"],"status":"resolved"},{"from":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"dc13f018898a14b32059c654d1289748e601e47f4b755c31c0e466ce7b73e4dd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"dc13f018898a14b32059c654d1289748e601e47f4b755c31c0e466ce7b73e4dd","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":8,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"dc3bf7efe66fffbb2b55f126469c64d8bdca389026b214f2a741ddeec13b5329","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"dc6727df8992728892c54c01d04247fecb9651a348f87f1da7b2a4074a43e14a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"dc6727df8992728892c54c01d04247fecb9651a348f87f1da7b2a4074a43e14a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"de753fa421b4280246abdc40b8201a89945982050f86029f11c736f77664c2a1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"deb1cd9e3671ec4cc9e01582e8fe43a149e9e32b7c6fc2ac6f5e2c35df3ebfe0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"deb1cd9e3671ec4cc9e01582e8fe43a149e9e32b7c6fc2ac6f5e2c35df3ebfe0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"df15f1fbd549cad6bc01b0599d4765ea3d8be69eb2759ef112ca8c94c101168d","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e076ebecb0f5d0097aac6a9c888cd9736f3f4bede8b20f99eb114245a91c57be","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":3,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":4,"to":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","candidates":["08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::typechecker","line":5,"to":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","candidates":["b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::optimizer","line":6,"to":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","candidates":["98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::stdlib","line":7,"to":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","candidates":["fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::diagnostics","line":8,"to":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","candidates":["4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::linker","line":9,"to":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","candidates":["b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16"],"status":"resolved"},{"from":"e17f70b30cb2c25218feea80bfbbe599006cc6fdbd524a579b5fc5d1ef3cbe15","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e17f70b30cb2c25218feea80bfbbe599006cc6fdbd524a579b5fc5d1ef3cbe15","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sourceRepo":"ghashtag/trinity-fpga","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sourceRepo":"ghashtag/trinity-fpga","name":"math::sacred_physics","line":8,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","sourceRepo":"ghashtag/t27","name":"fpga::clock_domain::ClockDomain","line":8,"to":"2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60","candidates":["2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60"],"status":"resolved"},{"from":"e2987f7b0551651563d7d0730f8feaf2f319a6aa968fa44831048b3ccbcd9615","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e31e00a07700fe2458b2945fbd2925081653e4ac6d8c73b76b78b2b2d42c3ddf","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e31e00a07700fe2458b2945fbd2925081653e4ac6d8c73b76b78b2b2d42c3ddf","sourceRepo":"ghashtag/t27","name":"file::schema","line":7,"to":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","candidates":["dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b"],"status":"resolved"},{"from":"e33a9a975d53992d50f84f2c40632787a6eaa0c27c6abcb2478e91429a6a1624","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e33a9a975d53992d50f84f2c40632787a6eaa0c27c6abcb2478e91429a6a1624","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e364713ec7248b7d936c3ab6e5b1b38be1322645d4c2b6c6c3433ff81d9644c9","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e364713ec7248b7d936c3ab6e5b1b38be1322645d4c2b6c6c3433ff81d9644c9","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e40d28697fe02198d9d6b228ef8d6605bc8d1b5c03ca780a691b5deeb46d7f3d","sourceRepo":"ghashtag/t27","name":"fpga::dft::DFT","line":8,"to":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","candidates":["52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e"],"status":"resolved"},{"from":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":12,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":13,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sourceRepo":"ghashtag/t27","name":"nn::attention","line":14,"to":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","candidates":["047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d"],"status":"resolved"},{"from":"e58af5df8780b31b21f3a23b1ca62e8948f1327130a08f9ff3ec57a56c276d7d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e6fc9237d381f9b29860d7a63126260d9baab643cd75dacf4fe4e8c92f754be7","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e76bf03cf8f562893d856f702982101bf5a630d8c6ec2beecbd3e19a530a7d99","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e76bf03cf8f562893d856f702982101bf5a630d8c6ec2beecbd3e19a530a7d99","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656","sourceRepo":"ghashtag/t27","name":"math::trigonometry","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":9,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"e7a49d85980a3de7d64ed6d1bfad62310400537dc8488564938b2b7ce889d979","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e7a49d85980a3de7d64ed6d1bfad62310400537dc8488564938b2b7ce889d979","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::corona_oracle","line":11,"to":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","candidates":["627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f"],"status":"resolved"},{"from":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::rom_layout","line":12,"to":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","candidates":["c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c"],"status":"resolved"},{"from":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e98502679e264075d5360666799c30ec36084d042552af361af54d4434670ab8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e98502679e264075d5360666799c30ec36084d042552af361af54d4434670ab8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e9e6bd933169bdf7ff79fa80a1df30743e9702bc16e478e6069bb68cc0fe71da","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"e9e6bd933169bdf7ff79fa80a1df30743e9702bc16e478e6069bb68cc0fe71da","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ea02cd024807f8b9b3cdbd25d25022bed852b1433d7f256a9853e46fa312a715","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ea02cd024807f8b9b3cdbd25d25022bed852b1433d7f256a9853e46fa312a715","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ea12fcc03feba95408ef18b0f5635ad5eeaad00d3c6fcce5f6348f995f426e56","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ea12fcc03feba95408ef18b0f5635ad5eeaad00d3c6fcce5f6348f995f426e56","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ea334b73f9e5c5a18f4ec6bb7a249982381c339fdb867bdb2ef19305eb59679d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ea334b73f9e5c5a18f4ec6bb7a249982381c339fdb867bdb2ef19305eb59679d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","sourceRepo":"ghashtag/t27","name":"fpga::top_level::ZeroDSP_TopLevel","line":8,"to":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","candidates":["f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114"],"status":"resolved"},{"from":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","sourceRepo":"ghashtag/t27","name":"fpga::gf16_accel::Gf16Accel","line":9,"to":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","candidates":["5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a"],"status":"resolved"},{"from":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","sourceRepo":"ghashtag/t27","name":"fpga::memory::Memory","line":10,"to":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","candidates":["5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84"],"status":"resolved"},{"from":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","sourceRepo":"ghashtag/t27","name":"fpga::fifo::Fifo","line":11,"to":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","candidates":["dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd"],"status":"resolved"},{"from":"ec713094133b35f17ecada146c61cbdc94efbfe4e17f1d18f3c1d0b43ddf7439","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ecea27e185ed847dde4df4c4eb06be26568bcfc22f5447b75f88c7520a494461","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ecea27e185ed847dde4df4c4eb06be26568bcfc22f5447b75f88c7520a494461","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ed13dbd99f709317378a87dc3d427eceabc5eab1ddac88c52b0cbf408344585b","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ee002f94a63c0a07ea37cd3b1ddcaca3a4ee552a99a18e532d99b16f1ae12ce8","sourceRepo":"ghashtag/tri-net","name":"base::types","line":27,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ee971e0e0be0b061bb8448b61ef0de3cea9d5352ccf5add977bee5173e3d56a1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ee971e0e0be0b061bb8448b61ef0de3cea9d5352ccf5add977bee5173e3d56a1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"efb335d2dfda179364cc654ecc06db8780ac7176c63e5962b2f969ee4836a04b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"efb335d2dfda179364cc654ecc06db8780ac7176c63e5962b2f969ee4836a04b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"efca26cf7e116dcee89e74b16fd07f1babe095801b522428aa41e3a2c50ce0ec","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"efca26cf7e116dcee89e74b16fd07f1babe095801b522428aa41e3a2c50ce0ec","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","sourceRepo":"ghashtag/t27","name":"isa::registers","line":10,"to":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","candidates":["cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f"],"status":"resolved"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/t27","name":"base::testing","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/t27","name":"base::testing","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"f1b5395243a8bbbe1ba4ecc9c3bfc74a68bf7cb43c68c03c71b6f30c253b65b0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f1b5395243a8bbbe1ba4ecc9c3bfc74a68bf7cb43c68c03c71b6f30c253b65b0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"f1e9aedeba6e513fe9ed235d0501d552b46aa6c3e0c1cb7271888ce20d8f0c76","sourceRepo":"ghashtag/t27","name":"fpga::placement::Placement","line":8,"to":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","candidates":["107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96"],"status":"resolved"},{"from":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f3819844f477cf0293deb96d3046a16d9283e7545cadb4f5d24c720be99743db","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","sourceRepo":"ghashtag/tri-net","name":"base::types","line":14,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f5365788339e42d2da324d01a67c9aae2abf18eb37351f7dd9dc4a8cc95ded4c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f5365788339e42d2da324d01a67c9aae2abf18eb37351f7dd9dc4a8cc95ded4c","sourceRepo":"ghashtag/t27","name":"tools::schema","line":7,"to":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","candidates":["88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341"],"status":"resolved"},{"from":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","candidates":["39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd"],"status":"resolved"},{"from":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f62d0b2901bf83c67eb9555c33c2f92d010b52354ba130e321aa9ccba5bf2f48","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f62d0b2901bf83c67eb9555c33c2f92d010b52354ba130e321aa9ccba5bf2f48","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sourceRepo":"ghashtag/trios","name":"numeric::gf16","line":7,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sourceRepo":"ghashtag/trios","name":"numeric::phi_ratio","line":8,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sourceRepo":"ghashtag/trios","name":"sacred::constants","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","sourceRepo":"ghashtag/t27","name":"fpga::formal::Formal","line":8,"to":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","candidates":["090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c"],"status":"resolved"},{"from":"f7a2a59c6a856ec32ee04c6890f88e68bebc8bb32e57542e5d1eb797241b0c87","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","sourceRepo":"ghashtag/t27","name":"math::statistics","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":9,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"f93bfbf9b9f7fb215faed70ad4a01a4fa9d8e00ef5daed464c8a949d2a56b0d8","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"f99a681913c3bcb832745ccec96cfef0660c61ae17e99f4910a4ccc43e19d775","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"f99a681913c3bcb832745ccec96cfef0660c61ae17e99f4910a4ccc43e19d775","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":11,"to":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","candidates":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5"],"status":"resolved"},{"from":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","candidates":["08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7"],"status":"resolved"},{"from":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":4,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"fb918ae9b35c05b59b4dbbdfe5a390ed3fd0d48434b4a4aa2543abe94145e459","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"fb91e0ec7c9679153e03095354faeddfd4d7ca6d24843471d45ab3e597020e0d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fb91e0ec7c9679153e03095354faeddfd4d7ca6d24843471d45ab3e597020e0d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"fbb89f4449007cd9440dc4dd352a5c0c955b9220a1e06c286fa8df9302584ec2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fbb89f4449007cd9440dc4dd352a5c0c955b9220a1e06c286fa8df9302584ec2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"fbb89f4449007cd9440dc4dd352a5c0c955b9220a1e06c286fa8df9302584ec2","sourceRepo":"ghashtag/t27","name":"TriGraphBfs::Graph","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"fc282db3e37df05cc48ed354ff1514c1f4be6ba78659a0d0d53fa384d79e763d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fc282db3e37df05cc48ed354ff1514c1f4be6ba78659a0d0d53fa384d79e763d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"fc53854b86afb6ee601a43a354b0e34f3ec89243d3b896d57d84b1952cdc4d61","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fc53854b86afb6ee601a43a354b0e34f3ec89243d3b896d57d84b1952cdc4d61","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fdea8736ee309824c17924c5853d4025ba869d13c4d1ea46bf111e6f01373995","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fe149804c3b532069ac353681dea878cc30f032de18c74cd77fb24bfb79c0423","sourceRepo":"ghashtag/t27","name":"fpga::power::Power","line":8,"to":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","candidates":["58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9"],"status":"resolved"},{"from":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","sourceRepo":"ghashtag/t27","name":"fpga::uart::UART_Bridge","line":10,"to":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","candidates":["a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae"],"status":"resolved"},{"from":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":11,"to":"4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e","candidates":["4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e"],"status":"resolved"},{"from":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":12,"to":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","candidates":["be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19"],"status":"resolved"},{"from":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","sourceRepo":"ghashtag/t27","name":"fpga::bridge::FPGA_Bridge","line":13,"to":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","candidates":["4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41"],"status":"resolved"},{"from":"fe35542076774dd95e8456f3b8cdf959b2d0c8c576241b4f94a94177fd6a75ab","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fe35542076774dd95e8456f3b8cdf959b2d0c8c576241b4f94a94177fd6a75ab","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","candidates":["b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"],"status":"resolved"},{"from":"fe35542076774dd95e8456f3b8cdf959b2d0c8c576241b4f94a94177fd6a75ab","sourceRepo":"ghashtag/t27","name":"vsa::vsa_core","line":12,"to":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","candidates":["d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34"],"status":"resolved"},{"from":"fe35542076774dd95e8456f3b8cdf959b2d0c8c576241b4f94a94177fd6a75ab","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":13,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"fee4c32ed2aaa0478b7bdfe057b97ac5474de5ec832124aaa83a81366ff4e5a7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"fee4c32ed2aaa0478b7bdfe057b97ac5474de5ec832124aaa83a81366ff4e5a7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","candidates":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01"],"status":"resolved"},{"from":"ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"},{"from":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","candidates":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda"],"status":"resolved"},{"from":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","candidates":["39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c"],"status":"resolved"},{"from":"fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","candidates":["78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663"],"status":"resolved"}],"collisions":[{"module":"adaptiveretry","specIds":["4454f6161b15302cd298c417dfcade3dd0a0c42e6734f89eef26a1b5eda337e9","7bba43f3ce59e8f19614856e91ac705b6fadd2cd3a145663b482daeb9a0b7120"]},{"module":"adaptiverouting","specIds":["093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c"]},{"module":"anomaly_detector","specIds":["059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5"]},{"module":"api_documenter","specIds":["812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed"]},{"module":"areaoptimization","specIds":["1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8"]},{"module":"attention","specIds":["19b5ab5a4430be22ca924c05a3bb6928960a3b3ef38b802a6e4a4bd752b2ad05","7f884cb32c6f7d9514516b88822759463bf25c897086667ee32db3c879ba16b8"]},{"module":"auto_config","specIds":["6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc"]},{"module":"bandwidthallocator","specIds":["37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402"]},{"module":"cache_management","specIds":["15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a"]},{"module":"compression_engine","specIds":["61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87"]},{"module":"congestion_control","specIds":["1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7"]},{"module":"constants","specIds":["5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48"]},{"module":"crosslayeroptimizer","specIds":["6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349"]},{"module":"docs_generator","specIds":["08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315"]},{"module":"energyawarerouting","specIds":["18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1"]},{"module":"enrichment","specIds":["40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a"]},{"module":"failure_predictor","specIds":["425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3"]},{"module":"faultdetection","specIds":["fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7"]},{"module":"feedforward","specIds":["0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","1f58e539bacb2363a82c13b34cbf3c84bade8790f94041dd13cbb01949f5a0c0"]},{"module":"flow_control","specIds":["d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed"]},{"module":"formats","specIds":["081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796"]},{"module":"gf12","specIds":["0698e7d7e9693a49683c92c75812220f30b4025bee6ab7765c34e5ad5ca183db","1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1"]},{"module":"gf20","specIds":["d89aed8796be285ae8c792f3fa66984292c9ecd3861585c0dc5fb3c59d0521c7","e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45"]},{"module":"gf24","specIds":["577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","58edcf797efc944558c848fdcc432d92d901d02767896b297eb2e080136d1d76","8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b"]},{"module":"gf32","specIds":["27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","304dbefaab41ae6360d9007359ccd36bab0e9ef78e8cc2e00e7ab0b41269b0f6","ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0"]},{"module":"gf4","specIds":["601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","98578314d53fe356ab21af4b448e2a720e0013767b1c731960899da6b420f749"]},{"module":"gf8","specIds":["38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b"]},{"module":"gfcompetitive","specIds":["37e73defdf4c967e2fb780aa954119e6fd90a73477ba9b410794ba99de228c47","8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487"]},{"module":"github","specIds":["4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998"]},{"module":"goldenfloatfamily","specIds":["3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e"]},{"module":"hardwarevalidation","specIds":["347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d"]},{"module":"health_dashboard","specIds":["1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa"]},{"module":"healthmonitoring","specIds":["51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1"]},{"module":"hslm","specIds":["68bee859c3ffd508a841df8048fdde0932245af7a0dfe7c3596266cd24726dbe","e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce"]},{"module":"integration_framework","specIds":["454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f"]},{"module":"keymanagement","specIds":["a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34"]},{"module":"layernorm","specIds":["ea12fcc03feba95408ef18b0f5635ad5eeaad00d3c6fcce5f6348f995f426e56","f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2"]},{"module":"linkqualitymonitor","specIds":["fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3"]},{"module":"litecrypto","specIds":["9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26"]},{"module":"load_predictor","specIds":["6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661"]},{"module":"local_processing","specIds":["295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6"]},{"module":"m3multihop","specIds":["07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34"]},{"module":"memory","specIds":["13eea0478571c3e79f3cb8e8796d92342967e70b390bb9022d1af2c88e3972ab","5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84"]},{"module":"meshetx","specIds":["2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124"]},{"module":"meshintegrationtests","specIds":["76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c"]},{"module":"meshprotocolstack","specIds":["b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83"]},{"module":"meshrouting","specIds":["3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115"]},{"module":"multipath_routing","specIds":["3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a"]},{"module":"multipathrouter","specIds":["f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b"]},{"module":"network_orchestrator","specIds":["274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2"]},{"module":"network_simulator","specIds":["6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1"]},{"module":"networkanalytics","specIds":["7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7"]},{"module":"networkcoding","specIds":["1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83"]},{"module":"olsrrouting","specIds":["dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c"]},{"module":"packetqueue","specIds":["157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df"]},{"module":"pattern_predictor","specIds":["9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8"]},{"module":"performance_profiler","specIds":["197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034"]},{"module":"performancebenchmarks","specIds":["622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba"]},{"module":"phiratio","specIds":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d"]},{"module":"powermonitoring","specIds":["3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a"]},{"module":"productiondeployment","specIds":["c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e"]},{"module":"productionscenarios","specIds":["73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6"]},{"module":"quarantine_manager","specIds":["1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb"]},{"module":"redundancymanagement","specIds":["bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043"]},{"module":"resourcescheduler","specIds":["e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d"]},{"module":"sacredphysics","specIds":["1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00"]},{"module":"sandbox","specIds":["3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","3372fcbc6f9c6838d6e21ed8900c9e3fe00de2a9b57386380e7eaa13beefd052","7a96cffe0aaed3d11bd517bb7d234578912f19fb38788fbfdbe0ff428fa69de4","b8982faa07203a5a52fb224911126586345f2b8043116070602ec84ae459b40e","e1c387ee2e54fabfdcb363337c56c608d48108946f4b089c91a232e9fa8d0f76"]},{"module":"selfhealing","specIds":["074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1"]},{"module":"stdlib","specIds":["52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d"]},{"module":"swarmcoordinator","specIds":["876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c"]},{"module":"test_framework","specIds":["22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e"]},{"module":"test_validator","specIds":["59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97"]},{"module":"timingclosure","specIds":["1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920"]},{"module":"topology_visualizer","specIds":["82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e"]},{"module":"traffic_animator","specIds":["a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666"]},{"module":"tribtree","specIds":["74c47290c2b18db036f4247d5934d5023351923765d7f27d10ab41af05badba9","a522aeb649e6ff9cee8e8352992b5a81155c073aa0c62ff2896fdc5300dafc63"]},{"module":"triformat-gf16","specIds":["1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7"]},{"module":"trinetformats","specIds":["0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f"]},{"module":"trisha256","specIds":["473c5317d5dd386d0310b9f0762f2f2ac5febdb8fc69295ac4ce7d4597ed905e","5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207"]},{"module":"trust_manager","specIds":["46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9"]}]} +{"version":1,"provenance":{"repo":"gHashTag/t27","commit":"93228e64056d9e99dccf4982baf99451fd1f45df","shortCommit":"93228e640","specsOrCompilerDirty":false,"defaultRef":"master","t27SpecsChecked":1068,"unreachableFromDefaultRef":["specs/demos/hello_world.t27","specs/numeric/requant_boundary.t27","specs/tutorial/01_values_and_types.t27","specs/tutorial/02_functions.t27","specs/tutorial/03_operators.t27","specs/tutorial/04_control_flow.t27","specs/tutorial/05_widths_and_casts.t27","specs/tutorial/06_structs_enums_switch.t27","specs/tutorial/07_tests_invariants_benches.t27","specs/tutorial/08_modules_and_arrays.t27","vscode-trinity-swe/test_highlight.t27"],"source":"github tarball gHashTag/t27@master","overlayRefs":[{"ref":"fix/reject-vibee-specs","commit":"bc0fa7f168026b9f88bcf8d7e799b12ad6ad8702","added":11}],"wasmSource":"the copy already vendored here","dirty":false,"manifestSha256":"d03407c0fefe8cf1aaed1b85acda93964dbb3e213e0dd64cc015665e806272a8","indexerSha256":"3d49bc7cf0b36ce075d3fa014760e28a1d46104db4ee9681d27fc04fa1ddce96","repos":[{"repo":"t27","commit":"93228e64056d9e99dccf4982baf99451fd1f45df","specs":1068},{"repo":"tri-net","commit":"3ffd1bd0ac9f5aea18c407ec386ca179eb61a41e","specs":113},{"repo":"trinity-fpga","commit":"5614a4ab494a7b9feabe918ef3fa8a1d24425b83","specs":64},{"repo":"trinity","commit":"234fefa3c249d92e63abeaa655b385d9145fb221","specs":3},{"repo":"tt-trinity-corona","commit":"dddf6887e54aa847a9a0f4c835fbc392c8cc6c12","specs":5},{"repo":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","specs":37,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":0},{"repo":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","specs":58,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":13},{"repo":"tt-trinity-euler","commit":"fde97085a5ce9acd95721c69925f621f56228cff","specs":46,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":3},{"repo":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","specs":1,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":48},{"repo":"turbobaby-user-bot","commit":"e9356f1f0664e8f6d963c52035a9d310761ca9a8","specs":12,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":0}],"duplicatesPreviouslySkipped":29,"healthSource":"vendored manifest claim, not issue acceptance","importResolution":"lexical/path discovery, not compiler linking"},"specs":[{"id":"000cf7b4fd568fd728063f7f1d28acd812a43d58ceda7180381755d2ea9b7eaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/tf3.t27","health":"warn","module":null}],"description":"tf3.t27 — TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","symbols":[],"imports":[],"terms":["fpga","numeric","tf3"]},{"id":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/formats_catalog.t27","health":"ok","module":"FormatsCatalog"}],"description":"t27/specs/numeric/formats_catalog.t27 Universal Numeric Format Catalog (SSOT) Single source of truth for every numeric format relevant to ML, scientific computing, historical hardware, and the GoldenFloat (GF) family. Codegen targets (Markdown / JSON / Python / Rust / C / TS) MUST be derived from this file via tools/gen_formats_catalog.py (bootstrap","symbols":[{"name":"TRINITY","line":53},{"name":"binary16","line":70},{"name":"binary32","line":73},{"name":"binary64","line":76},{"name":"binary128","line":79},{"name":"binary256","line":82},{"name":"decimal32","line":89},{"name":"decimal64","line":92},{"name":"decimal128","line":95},{"name":"x87_fp80","line":102},{"name":"double_double","line":105},{"name":"quad_double","line":108},{"name":"bfloat16","line":115},{"name":"tf32","line":118},{"name":"fp8_e4m3","line":121},{"name":"fp8_e5m2","line":124},{"name":"fp6_e3m2","line":127},{"name":"fp6_e2m3","line":130},{"name":"fp4_e2m1","line":133},{"name":"mxfp8","line":140},{"name":"mxfp6","line":143},{"name":"mxfp4","line":146},{"name":"nf4","line":153},{"name":"afp","line":156},{"name":"posit8","line":164},{"name":"posit16","line":167},{"name":"posit32","line":170},{"name":"posit64","line":173},{"name":"takum8","line":178},{"name":"takum16","line":181},{"name":"takum32","line":184},{"name":"takum64","line":187},{"name":"lns8","line":194},{"name":"lns16","line":197},{"name":"lns32","line":200},{"name":"lns64","line":203},{"name":"gfternary","line":217},{"name":"gf4","line":220},{"name":"gf8","line":223},{"name":"gf12","line":226},{"name":"gf16","line":229},{"name":"gf20","line":232},{"name":"gf24","line":235},{"name":"gf32","line":238},{"name":"gf64","line":241},{"name":"gf6","line":248},{"name":"gf10","line":251},{"name":"gf14","line":254},{"name":"gf48","line":257},{"name":"gf96","line":260},{"name":"gf128","line":263},{"name":"gf256","line":266},{"name":"gf512","line":269},{"name":"gf1024","line":377},{"name":"gf8_bfp","line":382},{"name":"gf_lns_hybrid","line":385},{"name":"mxgf6","line":388},{"name":"mxgf4","line":391},{"name":"int4","line":398},{"name":"int8","line":401},{"name":"int16","line":404},{"name":"int32","line":407},{"name":"int64","line":410},{"name":"int128","line":413},{"name":"q_format","line":416},{"name":"bcd","line":419},{"name":"ibm_hfp32","line":426},{"name":"ibm_hfp64","line":429},{"name":"ibm_hfp128","line":432},{"name":"ms_mbf32","line":435},{"name":"ms_mbf64","line":438},{"name":"vax_f","line":441},{"name":"vax_d","line":444},{"name":"vax_g","line":447},{"name":"vax_h","line":450},{"name":"cray_float","line":453},{"name":"minifloat","line":460},{"name":"unum_i","line":463},{"name":"unum_ii","line":466},{"name":"tapered_fp","line":469},{"name":"block_fp","line":476},{"name":"shared_exp","line":479},{"name":"per_channel_scale","line":482},{"name":"stochastic_rounding","line":485}],"imports":[],"terms":["numeric","formats","catalog","binary16","binary32","binary64","binary128","binary256","decimal32","decimal64","decimal128","x87","fp80","double","quad","bfloat16","tf32","fp8","e4m3","e5m2","fp6","e3m2","e2m3","fp4","e2m1","mxfp8","mxfp6","mxfp4","nf4","afp","posit8","posit16","posit32","posit64","takum8","takum16","takum32","takum64","lns8","lns16","lns32","lns64","gfternary","gf4","gf8","gf12","gf16","gf20","gf24","gf32","gf64","gf6","gf10","gf14","gf48","gf96","gf128","gf256","gf512","gf1024","bfp","lns","hybrid","mxgf6","mxgf4","int4","int8","int16","int32","int64","int128","format","bcd","ibm","hfp32","hfp64","hfp128","mbf32","mbf64","vax","cray","float","minifloat","unum","tapered","block","shared","exp","per","channel","scale","stochastic","rounding"]},{"id":"003820a1908b213b5c065d89ace38ed0ce6d40a4ddbf077c5f3d640f5f66f612","sources":[{"repo":"ghashtag/t27","path":"specs/ar/ternary_logic.t27","health":"warn","module":null}],"description":"spec: TernaryLogic K3 Kleene ternary logic operations for neuro-symbolic reasoning","symbols":[{"name":"Trit","line":7},{"name":"K_FALSE","line":10},{"name":"K_UNKNOWN","line":11},{"name":"K_TRUE","line":12},{"name":"k3_and","line":18},{"name":"k3_or","line":24},{"name":"k3_not","line":30},{"name":"k3_implies","line":35},{"name":"k3_equiv","line":40},{"name":"forward_chain","line":48},{"name":"backward_chain","line":54},{"name":"Rule","line":65},{"name":"resolve","line":72},{"name":"is_restraint","line":92},{"name":"apply_restraint","line":97}],"imports":[],"terms":["ternary","logic","trit","unknown","implies","equiv","forward","chain","backward","rule","resolve","restraint","apply"]},{"id":"0044630e40dc2673a2d1210e848f1a3cd41cc2b21b541bec98e305f0192a2de7","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27","health":"ok","module":"cron_999_multibots_telegraf_provider_health_monitor_L344"}],"description":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27 -- cron timer/999-multibots-telegraf/provider-health-monitor-L344 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/provider-health-monitor-L344). The schedule was read from 999-multibots-telegraf:src/services/provider-health-monitor.ts#L344. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"NOTE","line":24},{"name":"ON_FAILURE","line":25},{"name":"CONTROL","line":26}],"imports":[],"terms":["crons","multibots","telegraf","provider","health","monitor","l344","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","sources":[{"repo":"ghashtag/t27","path":"specs/nn/gla.t27","health":"warn","module":"GatedLinearAttention"}],"description":"t27/specs/nn/gla.t27 Gated Linear Attention (GLA) Block Specification Reference: Yang et al. 2023 \"Gated Linear Attention Transformers with Hardware-Efficient Training\" arXiv:2312.06635 CLAIM-STATUS: all performance claims below are [Open conjecture]. The ONLY [Verified] phi-fact in this codebase is phi^2 + phi^-2 = 3 (Law L5).","symbols":[{"name":"NUM_HEADS","line":26},{"name":"HEAD_DIM","line":27},{"name":"EMBED_DIM","line":28},{"name":"STATE_DIM","line":29},{"name":"EXPAND","line":30},{"name":"PHI_SQ_GAIN","line":36},{"name":"STD_SCALE","line":39},{"name":"ARCH_TAG","line":43},{"name":"GlaConfig","line":56},{"name":"GateAct","line":67},{"name":"GlaHeadState","line":76},{"name":"GlaBlockState","line":82},{"name":"GlaWeights","line":87},{"name":"gla_parallel_forward","line":118},{"name":"seq_len","line":124},{"name":"C","line":125},{"name":"n_chunks","line":126},{"name":"chunk_start","line":135},{"name":"chunk_end","line":136},{"name":"gla_project_chunk","line":147},{"name":"head_off","line":158},{"name":"x_t_off","line":162},{"name":"out_off","line":193},{"name":"gla_state_update","line":219},{"name":"gla_state_read","line":243},{"name":"denom","line":255},{"name":"apply_gate_act","line":275},{"name":"scale_vec","line":293},{"name":"matmul_slice","line":301},{"name":"matmul_full","line":320},{"name":"gla_config_from_race","line":357}],"imports":[{"name":"base::types","line":15},{"name":"base::ops","line":16},{"name":"math::constants","line":17},{"name":"numeric::gf16","line":18}],"terms":["gla","gated","linear","attention","num","heads","head","dim","embed","state","expand","phi","gain","std","scale","arch","tag","config","gate","act","block","weights","parallel","forward","seq","len","chunks","chunk","start","end","project","off","out","read","denom","apply","vec","matmul","slice","full","race"]},{"id":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/arty_a7_integration.t27","health":"ok","module":"ArtyA7_Integration"}],"description":"t27/specs/fpga/boards/arty_a7_integration.t27 Arty A7 Board-Level Integration Spec Full system: MAC + UART + SPI + Memory + Bridge + GF16 + TernaryISA Pin mappings match specs/fpga/constraints/arty_a7.xdc","symbols":[{"name":"BOARD_NAME","line":19},{"name":"FPGA_PART","line":20},{"name":"CLOCK_FREQ_HZ","line":21},{"name":"UART_BAUD","line":22},{"name":"SPI_CLK_DIV","line":23},{"name":"MEMORY_SIZE","line":24},{"name":"FIFO_DEPTH","line":25},{"name":"NUM_LEDS","line":26},{"name":"NUM_SWITCHES","line":27},{"name":"NUM_BUTTONS","line":28},{"name":"PinMapping","line":30},{"name":"ARTY_A7_PINS","line":44},{"name":"SystemConfig","line":58},{"name":"SYS_CONFIG","line":67},{"name":"calc_baud_divisor","line":76},{"name":"calc_spi_prescaler","line":80},{"name":"verify_pin_config","line":84}],"imports":[{"name":"fpga::top_level::ZeroDSP_TopLevel","line":9},{"name":"fpga::mac::ZeroDSP_MAC","line":10},{"name":"fpga::uart::ZeroDSP_UART","line":11},{"name":"fpga::spi::SPI_Master","line":12},{"name":"fpga::memory::Memory","line":13},{"name":"fpga::bridge::FPGA_Bridge","line":14},{"name":"fpga::gf16_accel::Gf16Accel","line":15},{"name":"fpga::fifo::Fifo","line":16},{"name":"fpga::axi4::Axi4","line":17}],"terms":["fpga","boards","arty","integration","board","part","clock","freq","uart","baud","spi","clk","div","memory","size","fifo","depth","num","leds","switches","buttons","pin","mapping","pins","system","config","sys","calc","divisor","prescaler","verify"]},{"id":"0119d4168128917ef6fbd8a991edae96003724af32280a9af0bd8fdbef080656","sources":[{"repo":"ghashtag/t27","path":"specs/functions/render-job-run.t27","health":"ok","module":"fn_render_job_run"}],"description":"specs/functions/render-job-run.t27 -- function render-job-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-job-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/render.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","render","job","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/arch.t27","health":"ok","module":"igla-coder-arch"}],"description":"t27/specs/igla/coder/arch.t27 IGLA-Coder model architecture specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .push(), +=, **VOCAB_SIZE, var/let before if).","symbols":[{"name":"MAX_PARAMS","line":19},{"name":"VOCAB_SIZE","line":20},{"name":"MAX_SEQ_LEN","line":21},{"name":"D_MODEL","line":22},{"name":"N_LAYERS","line":23},{"name":"N_HEADS","line":24},{"name":"N_KV_HEADS","line":25},{"name":"D_FF","line":26},{"name":"ROPE_THETA","line":27},{"name":"RMS_NORM_EPS","line":28},{"name":"DROPOUT_RATE","line":29},{"name":"SACRED_OPCODE_COUNT","line":37},{"name":"OPCODE_EMBED_DIM","line":38},{"name":"ModelConfig","line":44},{"name":"AttentionConfig","line":60},{"name":"LayerOutput","line":67},{"name":"CoderForwardOutput","line":72},{"name":"KVCache","line":78},{"name":"empty_kv_cache","line":83},{"name":"sqrt_approx","line":95},{"name":"exp_taylor","line":106},{"name":"exp_approx","line":116},{"name":"ln_taylor","line":128},{"name":"ln_approx","line":138},{"name":"pow_approx","line":150},{"name":"rms_norm","line":159},{"name":"rms_sum_sq","line":166},{"name":"rms_scale","line":173},{"name":"sin_approx","line":185},{"name":"cos_approx","line":194},{"name":"apply_rope","line":203},{"name":"apply_rope_q","line":207},{"name":"apply_rope_k","line":224},{"name":"grouped_query_attention","line":244},{"name":"dot_product","line":255},{"name":"weight_by_scalar","line":262},{"name":"sacred_opcode_embed","line":271},{"name":"sacred_opcode_embed_inner","line":275},{"name":"embedding_lookup","line":285},{"name":"add_slices","line":294},{"name":"feed_forward_vec","line":306},{"name":"feed_forward_vec_with_weights","line":315},{"name":"transformer_layer_with_weights","line":324},{"name":"transformer_layer","line":337},{"name":"forward_layers_with_weights","line":342},{"name":"lm_head_seed","line":352},{"name":"lm_head_from_hidden","line":361},{"name":"forward_with_bank","line":370},{"name":"forward","line":384},{"name":"load_scalar_weight","line":391},{"name":"load_weight_row","line":399},{"name":"load_weight_row_inner","line":403},{"name":"matmul_row_vec","line":412},{"name":"default_config","line":416},{"name":"estimate_param_count","line":434},{"name":"compute_head_dim","line":446},{"name":"relu","line":454},{"name":"ff_scalar","line":460},{"name":"swiglu_scalar","line":466},{"name":"swiglu_vec","line":471},{"name":"swiglu_vec_with_weights","line":479},{"name":"top_k_argmax","line":487},{"name":"top_k_argmax_inner","line":491},{"name":"generate_next_token","line":502},{"name":"softmax_approx","line":508},{"name":"find_max","line":517},{"name":"shift_logits","line":523},{"name":"exp_vec","line":528},{"name":"sum_vec","line":533},{"name":"div_vec","line":538},{"name":"temperature_scale","line":545},{"name":"temperature_scale_inner","line":549},{"name":"generate_next_token_temp","line":558},{"name":"generate_next_token_unified","line":568},{"name":"forward_with_cache_bank","line":586},{"name":"forward_with_cache","line":594},{"name":"DraftModelConfig","line":600},{"name":"HeterogeneousNpuConfig","line":607},{"name":"TileWorkloadProfile","line":616},{"name":"compute_tile_energy","line":625},{"name":"llm_guided_dse","line":641},{"name":"rag_retrieve_architecture","line":654},{"name":"load_draft_weights","line":670},{"name":"draft_forward","line":680},{"name":"scale_by_temp","line":685},{"name":"verify_accept","line":693},{"name":"speculative_decode_step","line":701},{"name":"BeamCandidate","line":712},{"name":"beam_search_step","line":720},{"name":"score_beam_candidate","line":729},{"name":"select_best_beam","line":740},{"name":"select_best_beam_inner","line":744},{"name":"generate_beam_search","line":755},{"name":"beam_search_expand_depth","line":759},{"name":"generate_beam_search_cached","line":773},{"name":"cumulative_prob","line":782},{"name":"top_p_mask","line":789},{"name":"top_p_mask_inner","line":793},{"name":"generate_next_token_nucleus","line":802},{"name":"cumulative_probs","line":812},{"name":"cumulative_probs_inner","line":816},{"name":"multinomial_sample","line":826},{"name":"multinomial_walk","line":831},{"name":"generate_next_token_stochastic","line":840},{"name":"kv_cache_row_count","line":855},{"name":"kv_cache_incremental_update","line":862},{"name":"kv_cache_append","line":871},{"name":"kv_cache_from_single_rows","line":877},{"name":"kv_cache_empty","line":883},{"name":"infer_forward_pass","line":1428}],"imports":[{"name":"base::types","line":10},{"name":"math::constants","line":11},{"name":"math::igla_primitives","line":12},{"name":"igla::race::bram_weights","line":13}],"terms":["igla","coder","arch","max","params","vocab","size","seq","len","model","layers","heads","rope","theta","rms","norm","eps","dropout","rate","sacred","opcode","count","embed","dim","config","attention","layer","forward","kvcache","empty","cache","sqrt","approx","exp","taylor","pow","sum","scale","sin","cos","apply","grouped","query","dot","product","weight","scalar","inner","embedding","lookup","slices","feed","vec","weights","transformer","head","seed","hidden","bank","load","row","matmul","default","estimate","param","compute","relu","swiglu","top","argmax","generate","token","softmax","find","shift","logits","div","temperature","temp","unified","draft","heterogeneous","npu","tile","workload","profile","energy","llm","guided","dse","rag","retrieve","architecture","verify","accept","speculative","decode","step","beam","candidate","search","score","select","best","expand","depth","cached","cumulative","prob","mask","nucleus","probs","multinomial","sample","walk","stochastic","incremental","append","single","rows","infer","pass"]},{"id":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/packed_trit.t27","health":"ok","module":"PackedTrit"}],"description":"Module: Packed Trit Encoding (5 trits per byte)","symbols":[{"name":"TRIT_NEG","line":18},{"name":"TRIT_ZERO","line":19},{"name":"TRIT_POS","line":20},{"name":"TRITS_PER_BYTE","line":23},{"name":"MAX_PACKED_BYTES","line":24},{"name":"MAX_TRITS","line":25},{"name":"ENCODED_NEG","line":28},{"name":"ENCODED_ZERO","line":29},{"name":"ENCODED_POS","line":30},{"name":"TRIT_MASK","line":31},{"name":"PackResult","line":37},{"name":"UnpackResult","line":43},{"name":"ArithResult","line":49},{"name":"PackedBigInt","line":58},{"name":"encodePack","line":75},{"name":"decodePack","line":82},{"name":"packed_add","line":93},{"name":"packed_sub","line":100},{"name":"packed_mul","line":107},{"name":"packed_from_i64","line":114},{"name":"packed_to_i64","line":121},{"name":"trit_valid","line":131},{"name":"normalize_trit","line":140},{"name":"count_trits","line":156},{"name":"byte_count","line":157}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"numeric::gf16","line":11}],"terms":["ternary","packed","trit","neg","zero","pos","trits","per","byte","max","bytes","encoded","mask","pack","unpack","arith","big","int","encode","decode","sub","mul","i64","valid","normalize","count"]},{"id":"01aeef2f32ca6f6294e444026fff8d82b8a0f9dfc7bc39abb42c7894650a3d66","sources":[{"repo":"ghashtag/t27","path":"specs/math/zamolodchikov_e8.t27","health":"ok","module":"ZamolodchikovE8"}],"description":"t27/specs/math/zamolodchikov_e8.t27 Zamolodchikov E8 Integrable Field Theory — Mass Spectrum Direction A/E of PROJECT KEPLER->NEWTON In 1989, Zamolodchikov proved that the 2D Ising CFT perturbed by a magnetic field possesses E8 symmetry with exactly 8 stable particles. Their mass ratios are determined EXACTLY by E8 algebra — not fitted.","symbols":[{"name":"mass_ratio","line":43},{"name":"PHI","line":44},{"name":"PI","line":45},{"name":"mass_spectrum","line":59},{"name":"golden_ratio_m2_m1","line":80},{"name":"golden_ratio_m6_m3","line":84},{"name":"golden_ratio_m7_m4","line":88},{"name":"golden_ratio_m8_m5","line":92},{"name":"pf_eigenvector_to_mass_mapping","line":104},{"name":"MarkDecomposition","line":132},{"name":"decompose_n_as_mark","line":140},{"name":"marks","line":147},{"name":"exponents","line":148},{"name":"cos","line":171},{"name":"abs","line":185}],"imports":[{"name":"math::constants","line":28},{"name":"math::e8_lie_algebra","line":29}],"terms":["math","zamolodchikov","mass","ratio","phi","spectrum","golden","eigenvector","mapping","mark","decomposition","decompose","marks","exponents","cos","abs"]},{"id":"022a99e9b297c32b50c7b82c7eecdbbc302dce6a374027d278ee30423252c9f6","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/02_functions.t27","health":"ok","module":"tutorial-02-functions"}],"description":"02 — Functions Lesson 2. Parameter types and the return type are always written out. A signature is part of the specification, so it is never inferred.","symbols":[{"name":"TRIT_NEG","line":9},{"name":"TRIT_POS","line":10},{"name":"double","line":20},{"name":"add","line":24},{"name":"scaled_sum","line":36},{"name":"sum","line":37},{"name":"scaled","line":38},{"name":"quadruple","line":49},{"name":"negate","line":57},{"name":"invert","line":61}],"imports":[],"terms":["tutorial","functions","trit","neg","pos","double","scaled","sum","quadruple","negate","invert"]},{"id":"025959391860663c194a10874f66af7dd8da26f8597f5bee89be66a283a66f60","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/html.t27","health":"ok","module":"TriHtml"}],"description":"t27/specs/","symbols":[{"name":"HtmlNode","line":13},{"name":"parse","line":25},{"name":"query_selector","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","html","node","parse","query","selector"]},{"id":"0282d379eabfe96387bde647535d0a2849c755fdbb32ab86ec98a99444ea0d13","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/settlement_law.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","trinet","settlement","law"]},{"id":"028f49b8d26ed69b4f8db6991666a5f51b9a2c2737291ceb3258bfd11ff7c3e7","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-blog-post.t27","health":"ok","module":"skill_trinity_blog_post"}],"description":"specs/skills/trinity-blog-post.t27 -- skill trinity/blog-post Source of truth for the skill card on t27.ai (#/skills?skill=trinity/blog-post). The skill body lives in gHashTag/trinity at .claude/skills/blog-post/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/blog-post/SKILL.md, sha256 2cb755fd4a60...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","blog","post","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"031a4a295e848f75a59247991f0f074e203d34b4521a2c5f2f5ac511b3095739","sources":[{"repo":"ghashtag/t27","path":"specs/automation/inngest-probe-suite.t27","health":"ok","module":"automation"}],"description":"specs/automation/inngest-probe-suite.t27 -- safe probe of every served Inngest function of 999-multibots-telegraf, started by the admin command /inngest_probe in the bot. Host: 999-multibots-telegraf src/inngest_app/probe/probeSuite.ts (the logic), src/inngest_app/probe/inngestProbeClient.ts (the one GraphQL mutation), src/commands/inngestProbeCommand.ts (the Telegram command). The per-function expectation lives in the manifest (probe_expect) and on each","symbols":[{"name":"KIND","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"VERSION","line":17},{"name":"COMMAND","line":20},{"name":"COMMAND_STATUS","line":21},{"name":"ACTOR","line":22},{"name":"CONFIRM","line":23},{"name":"CONCURRENCY","line":24},{"name":"SAFE_FLAG","line":28},{"name":"TRANSPORT","line":29},{"name":"SLUG_FORMAT","line":30},{"name":"APP_ID","line":31},{"name":"ORDER","line":32},{"name":"RUN_LOOKBACK_MS","line":37},{"name":"INVOKED_EVENT_PREFIX","line":38},{"name":"POLL_MS","line":39},{"name":"BUDGET_MS","line":40},{"name":"EXPECTATIONS","line":47},{"name":"VERDICTS","line":48},{"name":"SUITE_OK_IFF","line":49},{"name":"FORBIDDEN_SIDE_EFFECTS","line":54},{"name":"ALLOWED_RECIPIENT","line":55},{"name":"PLANNED_AT_251571C","line":59},{"name":"EXPECT_FAILED_AT_GUARD_AT_251571C","line":60},{"name":"EXPECT_COMPLETED_AT_251571C","line":61},{"name":"LIVE_RUN_STATUS","line":67},{"name":"ProbePlan","line":69},{"name":"ProbeResult","line":77},{"name":"ProbeSuiteReport","line":85},{"name":"plan","line":97},{"name":"result","line":98},{"name":"result","line":104},{"name":"good","line":109},{"name":"bad","line":110}],"imports":[],"terms":["automation","inngest","probe","suite","kind","status","actor","confirm","concurrency","safe","flag","transport","slug","format","order","lookback","invoked","event","prefix","poll","budget","expectations","verdicts","iff","forbidden","side","effects","allowed","recipient","planned","251571c","expect","failed","guard","completed","live","plan","report","good","bad"]},{"id":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","sources":[{"repo":"ghashtag/t27","path":"specs/math/constants.t27","health":"ok","module":"Constants"}],"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing φ² + 1/φ² = 3 | Sacred constants for ternary computing","symbols":[{"name":"PHI","line":17},{"name":"PHI_INV","line":18},{"name":"PHI_SQ","line":19},{"name":"PHI_INV_SQ","line":20},{"name":"PHI_DISTANCE","line":23},{"name":"TRINITY","line":26},{"name":"PI","line":29},{"name":"E","line":32},{"name":"G_MEASURED","line":45},{"name":"LAMBDA_COSMO","line":49},{"name":"OMEGA_LAMBDA_MEASURED","line":53},{"name":"G_SCALE","line":59},{"name":"OMEGA_COARSE_SCALE","line":60},{"name":"abs","line":67},{"name":"pow","line":75},{"name":"ln_approx","line":137},{"name":"exp_approx","line":158},{"name":"floor","line":193}],"imports":[],"terms":["math","constants","phi","inv","distance","measured","lambda","cosmo","omega","scale","coarse","abs","pow","approx","exp","floor"]},{"id":"03fde1f995bd2cd29dfa456a54c99781b7e86fffe3930b99972b38513bfedf18","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/strings.t27","health":"ok","module":"trinity_matrix_strings"}],"description":"trinity_matrix/strings.t27 -- feature strings: string constants, equality and a function returning one.","symbols":[{"name":"PROJECT","line":5},{"name":"PROFILE","line":6},{"name":"profile_name","line":8}],"imports":[],"terms":["bootstrap","fixtures","matrix","strings","project","profile"]},{"id":"040d3cdec243fde652aa9fb3cc81f1675508f8c1b485900003734245624c6d23","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/ternary_isa.t27","health":"ok","module":"TernaryIsa"}],"description":"t27/specs/fpga/ternary_isa.t27 Ternary ISA Hardware Implementation Specification for Trinity T27 FPGA HIR Bridges software ISA (27 registers, balanced ternary) to silicon Connects GF16 arithmetic, ternary gates, and phi-identity to hardware Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"NUM_REGISTERS","line":13},{"name":"TRIT_WIDTH","line":14},{"name":"WORD_BITS","line":15},{"name":"INSTR_WIDTH","line":16},{"name":"TRIT_NEG","line":17},{"name":"TRIT_ZERO","line":18},{"name":"TRIT_POS","line":19},{"name":"OpClass","line":23},{"name":"AluOp","line":35},{"name":"InstrFormat","line":46},{"name":"PipelineStage","line":58},{"name":"TernaryRegFile","line":66},{"name":"TernaryCoreConfig","line":77},{"name":"r_type_format","line":91},{"name":"i_type_format","line":103},{"name":"ternary_alu_op","line":115},{"name":"gf16_alu_op","line":126},{"name":"fetch_stage","line":137},{"name":"decode_stage","line":145},{"name":"execute_stage","line":153},{"name":"memory_stage","line":161},{"name":"writeback_stage","line":169},{"name":"ternary_regfile","line":177},{"name":"ternary_core","line":188},{"name":"ternary_core_full","line":202},{"name":"is_trit_op","line":218},{"name":"is_gf16_op","line":222},{"name":"is_r_type","line":226},{"name":"is_i_type","line":230},{"name":"regfile_bits","line":234},{"name":"regfile_bram_count","line":238},{"name":"core_dsp_count","line":243},{"name":"core_bram_count","line":251},{"name":"core_lut_estimate","line":259},{"name":"core_fmax_mhz","line":274},{"name":"fits_arty_a7","line":278},{"name":"fits_xc7a100t","line":283},{"name":"pipeline_total_latency","line":288},{"name":"phi_squared_check","line":298},{"name":"validate_alu_op","line":304},{"name":"validate_instr_format","line":315},{"name":"validate_regfile","line":332},{"name":"validate_core","line":349}],"imports":[],"terms":["fpga","ternary","isa","num","registers","trit","width","word","bits","instr","neg","zero","pos","class","alu","format","pipeline","stage","reg","config","gf16","fetch","decode","execute","memory","writeback","regfile","full","bram","count","dsp","lut","estimate","fmax","mhz","fits","arty","xc7a100t","total","latency","phi","squared","validate"]},{"id":"051d7f2cf4839836609024f1e085e6f62fb14ca794d8ad779468c9b8974192ff","sources":[{"repo":"ghashtag/t27","path":"specs/shell/environment.t27","health":"ok","module":"ShellEnvironment"}],"description":"specs/shell/environment.t27 Shell Environment Operations","symbols":[{"name":"get","line":14},{"name":"set","line":19},{"name":"unset","line":24},{"name":"list","line":29},{"name":"expand","line":34},{"name":"PATH","line":43},{"name":"get_path","line":46},{"name":"set_path","line":51},{"name":"path_append","line":56},{"name":"path_remove","line":61},{"name":"path_list","line":66},{"name":"path_which","line":71},{"name":"detect","line":80},{"name":"find","line":85},{"name":"select","line":90},{"name":"fallback","line":95},{"name":"HOME","line":104},{"name":"get_home","line":107},{"name":"USER","line":112},{"name":"get_user","line":115},{"name":"platform","line":124},{"name":"is_windows","line":129},{"name":"is_darwin","line":134},{"name":"is_linux","line":139}],"imports":[{"name":"base::types","line":6},{"name":"shell::schema","line":7}],"terms":["shell","environment","get","set","unset","list","expand","path","append","remove","detect","find","select","fallback","home","user","platform","windows","darwin","linux"]},{"id":"051e8c6f568d660831950ec89c3148aa9219001db41877d1606d6ad5c019c53f","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/pilot_pretraining.t27","health":"ok","module":"IGLAPilotPretraining"}],"description":"t27/specs/","symbols":[{"name":"ModelSize","line":13},{"name":"TrainingConfig","line":19},{"name":"Checkpoint","line":29},{"name":"train","line":41},{"name":"evaluate","line":46},{"name":"save_checkpoint","line":51},{"name":"load_checkpoint","line":56}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["igla","training","pilot","pretraining","iglapilot","model","size","config","checkpoint","train","evaluate","save","load"]},{"id":"05267a4e1f59698a7b77f9960613213d76323188e7e822bfce442888d8367d5a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/avgpool2d_layer.t27","health":"ok","module":"Avgpool2d"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_KERNEL","line":13},{"name":"DEFAULT_STRIDE","line":14},{"name":"PoolConfig","line":20},{"name":"PoolShape","line":26},{"name":"calc_output_size","line":40},{"name":"forward","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","avgpool2d","layer","default","kernel","stride","pool","config","shape","calc","size","forward"]},{"id":"054368075009acf87f6a8d262d47083b0d2fea4f2d01fd1fd17fd56be345245f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_node_identity.t27","health":"ok","module":"TriNodeIdentity"}],"description":"TRI-NET node identity binding: tie a receipt's `executor` field to the actual Ed25519 public key that signs it. Without this, a node signs with its own key but can claim ANY executor id (sig_ok only proves \"some valid signature\", not \"signed by the claimed executor\"). Bind executor = commitment to the signer's public key: executor_id = the low 32 bits of SHA-256(pubkey). A verifier recomputes it from the signing key and rejects a receipt whose executor field does not match -- so","symbols":[{"name":"SHA_PAD256","line":14},{"name":"PUBKEY_BITS","line":15},{"name":"pubkey_pre","line":20},{"name":"identity_matches","line":36},{"name":"who_ok","line":41}],"imports":[{"name":"base::types","line":12}],"terms":["net","node","identity","sha","pad256","pubkey","bits","pre","matches","who"]},{"id":"057d87866236087a7d96ae0fc8b6cc5211d99e16aacd540373154853fef58436","sources":[{"repo":"ghashtag/t27","path":"specs/shell/process.t27","health":"warn","module":"ShellProcess"}],"description":"specs/shell/process.t27 Shell Process Operations","symbols":[{"name":"ProcessID","line":14},{"name":"spawn","line":21},{"name":"spawn_shell","line":26},{"name":"kill","line":31},{"name":"kill_tree","line":36},{"name":"wait","line":41},{"name":"poll","line":46},{"name":"is_alive","line":51},{"name":"Pool","line":60},{"name":"pool_create","line":66},{"name":"pool_spawn","line":71},{"name":"pool_wait_all","line":76},{"name":"pool_cleanup","line":81},{"name":"Signal","line":90},{"name":"send_signal","line":100},{"name":"signal_name","line":105}],"imports":[{"name":"base::types","line":6},{"name":"shell::schema","line":7}],"terms":["shell","process","spawn","kill","tree","wait","poll","alive","pool","create","cleanup","signal","send"]},{"id":"05914994d71d3fcee52588484794e6ad36dcf2f680e2a5694b6208df52dfd55b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf32.t27","health":"ok","module":"triformat_bnf32"}],"description":"bnf32.t27 -- BNF32: Binary Network Float, 32-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf32","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/anomaly_detector.t27","health":"warn","module":"anomaly_detector"}],"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","symbols":[{"name":"MAX_METRICS","line":7},{"name":"BASELINE_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"SEVERITY_HIGH","line":10},{"name":"SEVERITY_MEDIUM","line":11},{"name":"create_metric_reading","line":14},{"name":"get_metric_id","line":21},{"name":"get_metric_value","line":25},{"name":"get_timestamp","line":29},{"name":"get_confidence","line":33},{"name":"create_anomaly_report","line":38},{"name":"get_anomaly_metric_id","line":45},{"name":"get_severity","line":49},{"name":"get_anomaly_type","line":53},{"name":"get_anomaly_confidence","line":57},{"name":"TYPE_SPIKE","line":62},{"name":"TYPE_DROP","line":63},{"name":"TYPE_PATTERN","line":64},{"name":"TYPE_TREND","line":65},{"name":"calculate_baseline","line":68},{"name":"calculate_variance","line":88},{"name":"detect_spike","line":114},{"name":"detect_drop","line":133},{"name":"detect_pattern","line":152},{"name":"detect_trend","line":182},{"name":"calculate_severity","line":220},{"name":"detect_anomaly","line":238},{"name":"is_critical_anomaly","line":274},{"name":"get_anomaly_description","line":285},{"name":"correlate_metrics","line":302},{"name":"detect_coordinated_attack","line":343},{"name":"calculate_anomaly_confidence","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","anomaly","detector","max","metrics","baseline","window","threshold","severity","high","medium","create","metric","reading","get","timestamp","confidence","report","spike","drop","pattern","trend","calculate","variance","detect","critical","description","correlate","coordinated","attack"]},{"id":"05a1e633c80c5eb5e8f7f6f24a57c741492f5cc920591b8e5db7b48d51bcf0ed","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/flatten_layer.t27","health":"ok","module":"Flatten"}],"description":"t27/specs/","symbols":[{"name":"MAX_DIMS","line":13},{"name":"FlattenConfig","line":19},{"name":"InputTensor","line":23},{"name":"calc_output_size","line":33},{"name":"forward","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","flatten","layer","max","dims","config","tensor","calc","size","forward"]},{"id":"05f3fec4bc98246246aa5cfa04b845862c7f71326f9892120aad67a1dfc8e670","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lockfree_stack.t27","health":"ok","module":"TriLockfreeStack"}],"description":"t27/specs/","symbols":[{"name":"LFNode","line":13},{"name":"LockFreeStack","line":18},{"name":"init","line":27},{"name":"push","line":32},{"name":"pop","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","lockfree","stack","lfnode","lock","free","init","push","pop"]},{"id":"05f807c932b9a3ce5837100fe8432e8dfddc733db9f62a494c777ff6da885607","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/rnn_cell.t27","health":"ok","module":"RnnCell"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_INPUT_SIZE","line":13},{"name":"DEFAULT_HIDDEN_SIZE","line":14},{"name":"RNNCellConfig","line":20},{"name":"RNNState","line":25},{"name":"RNNParams","line":30},{"name":"forward_step","line":41},{"name":"forward_sequence","line":46},{"name":"init_state","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","rnn","cell","default","size","hidden","rnncell","config","rnnstate","rnnparams","forward","step","sequence","init","state"]},{"id":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/transform.t27","health":"ok","module":"provider-transform"}],"description":"provider/transform.t27 — Cross-Provider Message Transformations Message format transformations between different AI providers","symbols":[{"name":"MAX_HISTORY_LENGTH","line":25},{"name":"MAX_CONTENT_LENGTH","line":28},{"name":"DEFAULT_SYSTEM_PROMPT","line":31},{"name":"TransformDirection","line":38},{"name":"TransformResult","line":46},{"name":"MessageMapping","line":54},{"name":"ContentTransform","line":61},{"name":"ToolMapping","line":69},{"name":"ParameterTransform","line":76},{"name":"TransformOptions","line":83},{"name":"BatchTransformResult","line":90},{"name":"TransformError","line":97},{"name":"TransformedMessage","line":105},{"name":"transform_options_default","line":116},{"name":"transform_direction_create","line":125},{"name":"transform_result_create","line":136},{"name":"transform_result_error","line":146},{"name":"message_mapping_create","line":156},{"name":"tool_mapping_create","line":165},{"name":"transform_error_create","line":174},{"name":"transformed_message_create","line":184},{"name":"transform_messages","line":193},{"name":"direction","line":194},{"name":"transformed","line":199},{"name":"transform_single_message","line":214},{"name":"target_role","line":215},{"name":"new_content","line":219},{"name":"map_role","line":230},{"name":"map_role_anthropic_to_openai","line":240},{"name":"map_role_openai_to_anthropic","line":250},{"name":"transform_content","line":260},{"name":"normalize_for_openai","line":274},{"name":"normalize_for_anthropic","line":284},{"name":"normalize_image_for_openai","line":294},{"name":"normalize_image_for_anthropic","line":299},{"name":"convert_tool_to_openai","line":304},{"name":"convert_tool_to_anthropic","line":309},{"name":"transform_tools","line":314},{"name":"transformed","line":321},{"name":"transform_single_tool","line":328},{"name":"needs_transformation","line":337},{"name":"transform_direction_to_string","line":342},{"name":"is_transform_success","line":352},{"name":"opts","line":361},{"name":"dir","line":366},{"name":"result","line":371},{"name":"mapping","line":376},{"name":"mapping","line":381},{"name":"err","line":386},{"name":"role","line":391},{"name":"role","line":396},{"name":"result","line":405},{"name":"str","line":410}],"imports":[],"terms":["provider","transform","max","history","length","content","default","system","prompt","direction","mapping","tool","parameter","options","batch","transformed","create","messages","single","target","role","map","anthropic","openai","normalize","image","convert","transformation","success","opts","dir","err","str"]},{"id":"07191109132327c0a3743ccc06815ccd2c64b5b6d604b358d26cb6e236dadfe6","sources":[{"repo":"ghashtag/t27","path":"specs/functions/payment-ai-server-process.t27","health":"ok","module":"fn_payment_ai_server_process"}],"description":"specs/functions/payment-ai-server-process.t27 -- function payment-ai-server-process (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=payment-ai-server-process). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/payments/paymentProcessing.ts#L64 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","payment","process","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/self_healing.t27","health":"ok","module":"SelfHealing"}],"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","symbols":[{"name":"RECOVERY_COOLDOWN","line":7},{"name":"MAX_RECOVERY_ATTEMPTS","line":8},{"name":"RECOVERY_SUCCESS","line":9},{"name":"RECOVERY_FAILED","line":10},{"name":"create_recovery_state","line":15},{"name":"get_attempts","line":22},{"name":"get_last_attempt","line":26},{"name":"get_in_progress","line":30},{"name":"get_success_count","line":34},{"name":"can_recover","line":39},{"name":"start_recovery","line":57},{"name":"complete_recovery_success","line":64},{"name":"complete_recovery_failure","line":72},{"name":"reset_recovery","line":80},{"name":"is_recovery_failed","line":85},{"name":"create_network_state","line":90},{"name":"get_healthy_nodes","line":97},{"name":"get_total_nodes","line":101},{"name":"get_degraded_links","line":105},{"name":"get_total_links","line":109},{"name":"network_health_percent","line":114},{"name":"is_network_healthy","line":126},{"name":"is_network_degraded","line":131},{"name":"is_network_critical","line":137},{"name":"should_initiate_healing","line":142},{"name":"update_network_after_recovery","line":155}],"imports":[{"name":"base::types","line":5}],"terms":["net","self","healing","recovery","cooldown","max","attempts","success","failed","create","state","get","attempt","progress","count","recover","start","complete","failure","reset","network","healthy","nodes","total","degraded","links","health","percent","critical","initiate"]},{"id":"0766c4ee0c06be78156aa2d0d148549b21da87c3db232aeab3e64d28df611ff5","sources":[{"repo":"ghashtag/t27","path":"specs/agents/x.t27","health":"ok","module":"agent_x"}],"description":"specs/agents/x.t27 -- agent t27/X, letter X of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/X). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent X - Chi (External)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward.t27","health":"ok","module":"FeedForwardLayer"}],"description":"t27/specs/ml/transformer/feed_forward.t27","symbols":[{"name":"PHI","line":16},{"name":"INV_PHI","line":17},{"name":"PHI_SQUARED","line":18},{"name":"DEFAULT_EXPANSION_FACTOR","line":19},{"name":"PHI_EXPANSION_FACTOR","line":20},{"name":"DEFAULT_DROPOUT","line":21},{"name":"DEFAULT_USE_BIAS","line":22},{"name":"FFNConfig","line":28},{"name":"FFNState","line":38},{"name":"ActivationType","line":47},{"name":"FFNGradients","line":56},{"name":"FFNForwardResult","line":64},{"name":"init","line":76},{"name":"get_intermediate_size","line":88},{"name":"forward","line":95},{"name":"backward","line":105},{"name":"update","line":119},{"name":"apply_activation","line":128},{"name":"activation_backward","line":138},{"name":"dropout","line":148},{"name":"phi_init_weights","line":159},{"name":"get_parameter_count","line":166}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"numeric::gf16","line":8},{"name":"ml::activation::gelu","line":9},{"name":"ml::layers::dense","line":10}],"terms":["transformer","feed","forward","layer","phi","inv","squared","default","expansion","factor","dropout","bias","ffnconfig","ffnstate","activation","ffngradients","ffnforward","init","get","intermediate","size","backward","apply","weights","parameter","count"]},{"id":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/m3_multihop.t27","health":"ok","module":"M3MultiHop"}],"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","symbols":[{"name":"NODE_A","line":6},{"name":"NODE_B","line":7},{"name":"NODE_C","line":8},{"name":"TARGET_THROUGHPUT_MBPS","line":11},{"name":"TARGET_LATENCY_MS","line":12},{"name":"TARGET_PACKET_LOSS_PCT","line":13},{"name":"ATTEN_MIN","line":16},{"name":"ATTEN_MAX","line":17},{"name":"IPERF3_HDR_LEN","line":20},{"name":"iperf3_sequence","line":23},{"name":"expected_loss_rate_p10","line":30},{"name":"throughput_factor_p8","line":49},{"name":"signal_quality","line":61},{"name":"total_attenuation","line":72},{"name":"delivery_rate_p8","line":81},{"name":"simulate_hop","line":94},{"name":"forward_packet","line":107},{"name":"tcp_packet_byte","line":117},{"name":"udp_packet_byte","line":132},{"name":"ST_IDLE","line":283},{"name":"ST_RUNNING","line":284},{"name":"ST_COMPLETE","line":285},{"name":"PerfCounters","line":288},{"name":"calculate_throughput_mbps","line":297},{"name":"calculate_loss_pct","line":314},{"name":"meets_targets","line":325},{"name":"test_next_state","line":336}],"imports":[],"terms":["net","multihop","m3multi","hop","node","target","throughput","mbps","latency","packet","loss","pct","atten","min","max","iperf3","hdr","len","sequence","expected","rate","p10","factor","signal","quality","total","attenuation","delivery","simulate","forward","tcp","byte","udp","idle","running","complete","perf","counters","calculate","meets","targets","state"]},{"id":"0797e9acbcf62779b5418e7ddbd6987a057455497a1a0c0a6d0f4117d9d338e7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf512.t27","health":"ok","module":"triformat_tnf512"}],"description":"tnf512.t27 -- TNF512: Ternary Network Float, 512-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","symbols":[{"name":"SIGN_BITS","line":20},{"name":"EXP_TRITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_OFFSET","line":23},{"name":"OFFSET_MAX","line":24},{"name":"exp_offset","line":28},{"name":"is_finite","line":32},{"name":"exp_values","line":36}],"imports":[{"name":"base::types","line":18}],"terms":["numeric","tnf512","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"07c1530c363c8cc62ef06874ca66311fb0da6891403a83ee756a1e6d79dc564a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/namespace.t27","health":"ok","module":"TriNamespace"}],"description":"t27/specs/","symbols":[{"name":"Namespace","line":13},{"name":"ParsedCommand","line":18}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","namespace","parsed"]},{"id":"0839d483ebdbf439a28ee13f15b8879c53c4c85687d842164106e6991a12ed73","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf4.t27","health":"ok","module":"GF4"}],"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 — 4-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 2 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF4","line":35},{"name":"encode","line":44},{"name":"pos","line":50},{"name":"decode","line":86},{"name":"sign_bit","line":87},{"name":"exp_bit","line":88},{"name":"mant_bits","line":89},{"name":"mant","line":97},{"name":"exp_scale","line":100},{"name":"value","line":102},{"name":"max_value","line":114},{"name":"min_positive","line":119},{"name":"epsilon","line":124},{"name":"validate_format","line":133},{"name":"fmt","line":135},{"name":"MEMORY_RATIO_VS_FP32","line":153}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf4","bits","sign","exp","mant","bias","phi","distance","encode","pos","decode","bit","scale","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32"]},{"id":"08411002114856e92f749b10f9a34354a932b25e81f2fe881aed62530bf885a5","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_05_no_semicolon.t27","health":"ok","module":"GenericConstNoSemi"}],"description":"ADR-008 positive: the trailing semicolon is optional, matching the non-parameterised `const Name = struct { }` path. No new terminator is introduced.","symbols":[{"name":"Box","line":4}],"imports":[],"terms":["bootstrap","fixtures","generic","pos","semicolon","semi","box"]},{"id":"08a7874c72e53ac1054c02ddb4a7649a6c4efb3c27ab9da7f4e148f6b9d05024","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/experience.t27","health":"ok","module":"tool_tri_experience"}],"description":"specs/tools/tri/experience.t27 -- tool tri/experience, the `tri experience` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/experience). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["experience","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/docs_generator.t27","health":"warn","module":"docs_generator"}],"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","symbols":[{"name":"MAX_SECTIONS","line":7},{"name":"MAX_TABLES","line":8},{"name":"MAX_REFERENCES","line":9},{"name":"OUTPUT_BUFFER_SIZE","line":10},{"name":"create_output_format","line":13},{"name":"get_format_id","line":20},{"name":"get_format_version","line":24},{"name":"get_format_compression","line":28},{"name":"get_format_encoding","line":32},{"name":"FORMAT_MARKDOWN","line":37},{"name":"FORMAT_HTML","line":38},{"name":"FORMAT_PDF","line":39},{"name":"FORMAT_TEXT","line":40},{"name":"FORMAT_JSON","line":41},{"name":"create_document_section","line":44},{"name":"get_section_id","line":51},{"name":"get_section_level","line":55},{"name":"get_section_content_length","line":59},{"name":"get_section_subsection_count","line":63},{"name":"create_toc_entry","line":68},{"name":"get_toc_section_id","line":75},{"name":"get_toc_level","line":79},{"name":"get_toc_page_number","line":83},{"name":"get_toc_title_id","line":87},{"name":"generate_markdown_header","line":92},{"name":"generate_html_tag","line":107},{"name":"get_html_tag_type","line":113},{"name":"get_html_content_id","line":117},{"name":"get_html_attributes","line":121},{"name":"TAG_H1","line":126},{"name":"TAG_H2","line":127},{"name":"TAG_H3","line":128},{"name":"TAG_P","line":129},{"name":"TAG_TABLE","line":130},{"name":"TAG_DIV","line":131},{"name":"create_reference_link","line":134},{"name":"get_ref_source","line":141},{"name":"get_ref_target","line":145},{"name":"get_ref_type","line":149},{"name":"get_ref_anchor","line":153},{"name":"LINK_INTERNAL","line":158},{"name":"LINK_EXTERNAL","line":159},{"name":"LINK_API","line":160},{"name":"LINK_EXAMPLE","line":161},{"name":"format_code_block","line":164},{"name":"get_code_block_language","line":170},{"name":"get_code_block_code_id","line":174},{"name":"get_code_block_line_count","line":178},{"name":"create_data_table","line":183},{"name":"get_table_id","line":190},{"name":"get_table_row_count","line":194},{"name":"get_table_col_count","line":198},{"name":"get_table_header_count","line":202},{"name":"generate_table_row","line":207},{"name":"create_index_entry","line":215},{"name":"get_index_term_id","line":222},{"name":"get_index_location","line":226},{"name":"get_index_frequency","line":230},{"name":"get_index_importance","line":234},{"name":"generate_page_layout","line":239},{"name":"get_margin_top","line":246},{"name":"get_margin_bottom","line":250},{"name":"get_margin_left","line":254},{"name":"get_margin_right","line":258},{"name":"calculate_document_stats","line":263},{"name":"generate_document_metadata","line":292},{"name":"get_metadata_title","line":299},{"name":"get_metadata_author","line":303},{"name":"get_metadata_date","line":307},{"name":"get_metadata_version","line":311},{"name":"format_document","line":316},{"name":"generate_complete_document","line":344},{"name":"validate_documentation","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["net","docs","generator","max","sections","tables","references","buffer","size","create","format","get","compression","encoding","markdown","html","pdf","text","json","document","section","level","content","length","subsection","count","toc","entry","page","title","generate","header","tag","attributes","table","div","reference","link","ref","target","anchor","internal","external","api","example","block","language","data","row","col","index","term","location","frequency","importance","layout","margin","top","bottom","left","right","calculate","stats","metadata","author","date","complete","validate","documentation"]},{"id":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/formal.t27","health":"ok","module":"Formal"}],"description":"t27/specs/fpga/formal.t27 Formal Verification Specification for Trinity T27 FPGA HIR Defines assertion kinds, properties, and coverage points Generates SystemVerilog Assertions (SVA) alongside Verilog Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"AssertKind","line":13},{"name":"AssertSeverity","line":22},{"name":"ClockMode","line":31},{"name":"MAX_ASSERTIONS","line":39},{"name":"MAX_COVER_POINTS","line":40},{"name":"MAX_ASSUME_POINTS","line":41},{"name":"FormalAssert","line":45},{"name":"CoverPoint","line":57},{"name":"FormalAssume","line":66},{"name":"FormalConfig","line":75},{"name":"formal_config","line":87},{"name":"with_depth","line":99},{"name":"with_timeout","line":105},{"name":"immediate_assert","line":111},{"name":"concurrent_assert","line":123},{"name":"cover_point","line":135},{"name":"assume","line":144},{"name":"is_immediate","line":155},{"name":"is_concurrent","line":159},{"name":"is_cover","line":163},{"name":"is_assume","line":167},{"name":"severity_str","line":171},{"name":"clock_mode_str","line":175},{"name":"is_posedge","line":179},{"name":"validate_assertion","line":185},{"name":"validate_cover","line":199},{"name":"validate_assume","line":210},{"name":"validate_config","line":221}],"imports":[],"terms":["fpga","formal","assert","kind","severity","clock","mode","max","assertions","cover","points","assume","point","config","depth","timeout","immediate","concurrent","str","posedge","validate","assertion"]},{"id":"09185d50913f410e9c5cdd3338d2fd38adb97f0997208c6440c89b2325268b9c","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-status.t27","health":"ok","module":"skill_trinity_status"}],"description":"specs/skills/trinity-status.t27 -- skill trinity/status Source of truth for the skill card on t27.ai (#/skills?skill=trinity/status). The skill body lives in gHashTag/trinity at .claude/skills/status/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/status/SKILL.md, sha256 e4bc75ff45cd...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","status","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"093a8c454b5b7ac163fa142bcf6e9ad46fbc2acc1e8d1eb49bf38ef036f915db","sources":[{"repo":"ghashtag/t27","path":"specs/agents/d.t27","health":"ok","module":"agent_d"}],"description":"specs/agents/d.t27 -- agent t27/D, letter D of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/D). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent D - Delta (De-Zigfication)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_routing.t27","health":"warn","module":"AdaptiveRouting"}],"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","symbols":[{"name":"MAX_PATHS","line":7},{"name":"METRIC_LATENCY","line":8},{"name":"METRIC_HOPS","line":9},{"name":"METRIC_BANDWIDTH","line":10},{"name":"UPDATE_INTERVAL","line":11},{"name":"create_path_metrics","line":14},{"name":"get_latency","line":21},{"name":"get_hops","line":25},{"name":"get_bandwidth","line":29},{"name":"get_load","line":33},{"name":"create_selection_state","line":38},{"name":"get_primary_path","line":45},{"name":"get_backup_path","line":49},{"name":"get_metric_type","line":53},{"name":"get_last_update","line":57},{"name":"create_path_metrics_array","line":62},{"name":"get_path_metrics","line":69},{"name":"calculate_score","line":77},{"name":"find_best_path","line":97},{"name":"needs_update","line":125},{"name":"update_selection","line":132},{"name":"change_metric_type","line":138},{"name":"is_path_congested","line":146},{"name":"find_least_congested","line":151}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","adaptive","routing","max","paths","metric","latency","hops","bandwidth","interval","create","path","metrics","get","load","selection","state","primary","backup","array","calculate","score","find","best","congested","least"]},{"id":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/norm.t27","health":"ok","module":"LayerNorm"}],"description":"t27/specs/ml/transformer/norm.t27","symbols":[{"name":"PHI","line":16},{"name":"INV_PHI_SQUARED","line":17},{"name":"PHI_EPSILON","line":18},{"name":"DEFAULT_EPSILON","line":21},{"name":"STRAND_I_START","line":24},{"name":"STRAND_I_END","line":25},{"name":"STRAND_II_START","line":26},{"name":"STRAND_II_END","line":27},{"name":"STRAND_III_START","line":28},{"name":"STRAND_III_END","line":29},{"name":"NormConfig","line":35},{"name":"NormState","line":43},{"name":"NormGradients","line":52},{"name":"Strand","line":58},{"name":"ForwardResult","line":68},{"name":"init","line":82},{"name":"forward","line":95},{"name":"forward_strand","line":107},{"name":"backward","line":114},{"name":"backward_strand","line":122},{"name":"update","line":128},{"name":"normalize_vector","line":135},{"name":"phi_init_gamma","line":145},{"name":"phi_init_beta","line":152},{"name":"phi_normalize","line":159},{"name":"create_strands","line":166}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"math::statistics","line":8},{"name":"numeric::gf16","line":9}],"terms":["transformer","norm","layer","phi","inv","squared","epsilon","default","strand","start","end","iii","config","state","gradients","forward","init","backward","normalize","vector","gamma","beta","create","strands"]},{"id":"095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bootrom.t27","health":"ok","module":"BootROM"}],"description":"t27/specs/fpga/bootrom.t27 T27 Boot ROM Specification Boot sequence stages, init vectors, integrity checksum Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"BootStage","line":10},{"name":"boot_stage","line":17},{"name":"stage_end","line":26},{"name":"BootConfig","line":30},{"name":"boot_config","line":38},{"name":"validate_config","line":48},{"name":"config_end","line":55},{"name":"fits","line":59}],"imports":[],"terms":["fpga","bootrom","boot","rom","stage","end","config","validate","fits"]},{"id":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 2 Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":17},{"name":"PHI_SQ","line":21},{"name":"PhiSplitResult","line":40},{"name":"phi_split","line":47},{"name":"available","line":48},{"name":"phi_sq","line":49},{"name":"exp_raw","line":52},{"name":"exp_bits","line":53},{"name":"mant_bits","line":56},{"name":"ratio","line":58},{"name":"phi_dist","line":59},{"name":"FormatComparison","line":73},{"name":"verify_phi_split","line":84},{"name":"golden_self_similarity_proof","line":206},{"name":"optimal_rounding_proof","line":226},{"name":"sacred_connection","line":250},{"name":"compute_phi_distance","line":258},{"name":"ratio","line":259},{"name":"is_phi_optimal","line":263},{"name":"recommend_format","line":267},{"name":"round","line":275},{"name":"abs","line":293},{"name":"pow","line":300},{"name":"ln_approx","line":361},{"name":"exp_approx","line":380},{"name":"floor","line":410}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["euler","numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","golden","self","similarity","proof","optimal","rounding","sacred","connection","compute","distance","recommend","round","abs","pow","approx","floor"]},{"id":"09f58e175bfeb73fb49d30bfdc6e0b197d775e6883fa8bb9417dffc92ffefebd","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-tri.t27","health":"ok","module":"skill_trinity_tri"}],"description":"specs/skills/trinity-tri.t27 -- skill trinity/tri Source of truth for the skill card on t27.ai (#/skills?skill=trinity/tri). The skill body lives in gHashTag/trinity at .claude/skills/tri/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/tri/SKILL.md, sha256 4c38d1005219...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_minimal.t27","health":"warn","module":"BoardMinimalXC7A100T"}],"description":"t27/specs/boards/xc7a100t_minimal.t27 QMTECH XC7A100T-CSG324 Minimal Board Profile Heartbeat LED + UART loopback, prjxray-verified pins only","symbols":[{"name":"BOARD_NAME","line":11},{"name":"FPGA_FAMILY","line":12},{"name":"FPGA_PART","line":13},{"name":"CLOCK_FREQ_HZ","line":14},{"name":"CLOCK_PERIOD_NS","line":15},{"name":"IO_STANDARD","line":16},{"name":"CONFIG_VOLTAGE","line":17},{"name":"NUM_LEDS","line":19},{"name":"HAS_UART","line":20},{"name":"HAS_SPI","line":21},{"name":"HAS_MAC_DEBUG","line":22},{"name":"PinAssignment","line":24},{"name":"ClockConstraint","line":34},{"name":"PIN_CLK","line":41},{"name":"PIN_RST_N","line":51},{"name":"PIN_UART_RX","line":61},{"name":"PIN_UART_TX","line":71},{"name":"PIN_LED_0","line":81},{"name":"PIN_LED_1","line":91},{"name":"PIN_LED_2","line":101},{"name":"PIN_LED_3","line":111},{"name":"PIN_LED_4","line":121},{"name":"PIN_LED_5","line":131},{"name":"PIN_LED_6","line":141},{"name":"PIN_LED_7","line":151},{"name":"CLOCK_SYS","line":161},{"name":"count_pins","line":176},{"name":"count_clocks","line":180},{"name":"count_leds","line":184},{"name":"has_uart","line":188},{"name":"has_spi","line":192},{"name":"is_prjxray_verified","line":196},{"name":"find_pin_by_port","line":212}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9}],"terms":["boards","xc7a100t","minimal","board","fpga","family","part","clock","freq","period","standard","config","voltage","num","leds","uart","spi","mac","debug","pin","assignment","constraint","clk","rst","led","sys","count","pins","clocks","prjxray","verified","find","port"]},{"id":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sources":[{"repo":"ghashtag/tt-trinity-gamma","path":"tt-trinity-gamma/specs/numeric/tri_net_formats.t27","health":"warn","module":"TriNetFormats"}],"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","symbols":[{"name":"FormatCategory","line":29},{"name":"GF64Format","line":53},{"name":"GF128Format","line":64},{"name":"GF256Format","line":75},{"name":"GF512Format","line":94},{"name":"GF1024Format","line":105},{"name":"FP32Format","line":120},{"name":"FP16Format","line":130},{"name":"BF16Format","line":141},{"name":"FP8E4M3Format","line":156},{"name":"FP8E5M2Format","line":167},{"name":"Int4Format","line":182},{"name":"Int8Format","line":191},{"name":"NF4_LEVELS","line":213},{"name":"NF4Format","line":220},{"name":"Posit16Format","line":244},{"name":"Binary16Format","line":262},{"name":"FormatDescriptor","line":276},{"name":"TRI_NET_FORMATS","line":290},{"name":"get_format_by_name","line":548},{"name":"get_format_by_bits","line":557},{"name":"get_phi_optimal_format","line":569},{"name":"format_to_f32","line":583},{"name":"f32_to_format","line":599},{"name":"gf_to_f32","line":619},{"name":"sign","line":621},{"name":"exp_mask","line":622},{"name":"mant_mask","line":623},{"name":"exp_biased","line":624},{"name":"mant","line":625},{"name":"exp_unbiased","line":633},{"name":"max_mant","line":640},{"name":"mant_normalized","line":641},{"name":"value","line":647},{"name":"f32_to_gf","line":655},{"name":"sign","line":660},{"name":"abs_val","line":661},{"name":"exp_unbiased","line":664},{"name":"max_exp","line":668},{"name":"max_mant","line":674},{"name":"normalized","line":675},{"name":"frac","line":676},{"name":"mant","line":677},{"name":"clamped_mant","line":678},{"name":"ieee754_to_f32","line":689},{"name":"f32_to_ieee754","line":700},{"name":"posit_to_f32","line":715},{"name":"f32_to_posit","line":721},{"name":"int_to_f32","line":731},{"name":"sign_bit","line":733},{"name":"magnitude","line":734},{"name":"max_val","line":735},{"name":"f32_to_int","line":743},{"name":"max_val","line":744},{"name":"min_val","line":745},{"name":"nf4_to_f32","line":764},{"name":"index","line":765},{"name":"f32_to_nf4","line":769},{"name":"dist","line":775},{"name":"floor_log2","line":790},{"name":"pow","line":804},{"name":"is_integer","line":815},{"name":"ln_val","line":839},{"name":"ln_approx","line":843},{"name":"t","line":851},{"name":"t2","line":852},{"name":"t3","line":853},{"name":"exp_approx","line":858},{"name":"abs","line":883},{"name":"golden_fmts","line":1020}],"imports":[{"name":"math::constants","line":20},{"name":"math::sacred_physics","line":21},{"name":"numeric::goldenfloat_family","line":22}],"terms":["gamma","numeric","net","formats","format","category","gf64format","gf128format","gf256format","gf512format","gf1024format","fp32format","fp16format","bf16format","fp8e4m3format","fp8e5m2format","int4format","int8format","nf4","levels","nf4format","posit16format","binary16format","descriptor","get","bits","phi","optimal","f32","sign","exp","mask","mant","biased","unbiased","max","normalized","abs","val","frac","clamped","ieee754","posit","int","bit","magnitude","min","index","dist","floor","log2","pow","integer","approx","golden","fmts"]},{"id":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hir.t27","health":"warn","module":"Hir"}],"description":"t27/specs/fpga/hir.t27 Hardware Intermediate Representation (HIR) for Trinity T27 Decouples .t27 spec semantics from Verilog/SystemVerilog emission Uses flat arrays + count fields (parser-compatible, no Vec/generics)","symbols":[{"name":"MAX_PORTS","line":12},{"name":"MAX_SIGNALS","line":13},{"name":"MAX_ASSIGNS","line":14},{"name":"MAX_INSTANCES","line":15},{"name":"MAX_ERRORS","line":16},{"name":"Edge","line":20},{"name":"PortDir","line":28},{"name":"SignalKind","line":36},{"name":"Port","line":43},{"name":"Signal","line":54},{"name":"Assign","line":64},{"name":"Instance","line":71},{"name":"HirModule","line":78},{"name":"MemKind","line":98},{"name":"MemPortMode","line":106},{"name":"MAX_MEMS","line":114},{"name":"MAX_MEM_PORTS","line":115},{"name":"MemPort","line":117},{"name":"Mem","line":124},{"name":"empty_mem_port","line":134},{"name":"empty_mem","line":143},{"name":"make_mem","line":155},{"name":"mem_add_port","line":167},{"name":"mem_total_bits","line":181},{"name":"mem_bram18_count","line":185},{"name":"BRAM18_BITS","line":186},{"name":"total","line":187},{"name":"CdcStrategy","line":196},{"name":"MAX_CLOCK_DOMAINS","line":205},{"name":"ClockDomain","line":207},{"name":"empty_clock_domain","line":215},{"name":"make_clock_domain","line":225},{"name":"BusKind","line":237},{"name":"MAX_BUS_PORTS","line":246},{"name":"BusPort","line":248},{"name":"empty_bus_port","line":257},{"name":"make_bus_port","line":268},{"name":"bus_port_total_signals","line":279},{"name":"empty_port","line":293},{"name":"empty_signal","line":304},{"name":"empty_assign","line":314},{"name":"empty_instance","line":318},{"name":"empty_module","line":324},{"name":"make_port","line":344},{"name":"make_signal","line":355},{"name":"add_port","line":367},{"name":"add_signal","line":376},{"name":"add_assign","line":385},{"name":"add_instance","line":394},{"name":"add_mem","line":403},{"name":"add_clock_domain","line":412},{"name":"add_bus_port","line":421},{"name":"port_count","line":432},{"name":"signal_count","line":436},{"name":"assign_count","line":440},{"name":"has_clock_port","line":444},{"name":"has_reset_port","line":455},{"name":"total_port_bits","line":466},{"name":"validate_module","line":478}],"imports":[],"terms":["fpga","hir","max","ports","signals","assigns","instances","edge","port","dir","signal","kind","assign","instance","mem","mode","mems","empty","make","total","bits","bram18","count","cdc","strategy","clock","domains","domain","bus","reset","validate"]},{"id":"0aa1373204ff6f8fd41fd8d19428f3d0754fc124578e3f1fbcc2f55c9ff55f4a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/serve.t27","health":"ok","module":"tool_tri_serve"}],"description":"specs/tools/tri/serve.t27 -- tool tri/serve, the `tri serve` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/serve). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["serve","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"0aac5e911f0cf60e0912acc755c63777ae91da62510a806363ff99f9c3599cde","sources":[{"repo":"ghashtag/t27","path":"specs/agents/m.t27","health":"ok","module":"agent_m"}],"description":"specs/agents/m.t27 -- agent t27/M, letter M of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/M). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent M - Mu (Metrics)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"0ad836431b5b70772112f6f3025589ce1f77208ca6e2eef8b2115057eab7b495","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/memory.t27","health":"ok","module":"AgentMemory"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["memory"]},{"id":"0af17f95057271f88d5ebbb4793dda45fcf0f97d95eaf3e8264be5d1efc6ec23","sources":[{"repo":"ghashtag/t27","path":"specs/physics/quantum.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","quantum"]},{"id":"0b5f7bff39da7f29b90ff5ff965bd07cdf1ffc1bb523a81cc03ca617fa57163a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/byte_utils.t27","health":"ok","module":"ByteUtils"}],"description":"Byte utilities (wire.t27 pattern)","symbols":[{"name":"get_bit","line":7},{"name":"low_nibble","line":28},{"name":"high_nibble","line":33},{"name":"combine_nibbles","line":38},{"name":"swap_nibbles","line":43}],"imports":[{"name":"base::types","line":4}],"terms":["net","byte","utils","get","bit","low","nibble","high","combine","nibbles","swap"]},{"id":"0b8463e8a0554acf19263278af0caae2e2982d7783ff3a9498bfbd7e4c21bf6e","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma-conflict.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","gamma","conflict"]},{"id":"0bcd805f2c789604a16712f910a652c698fe0b16a2c26ccb7a962a764e379943","sources":[{"repo":"ghashtag/t27","path":"specs/agents/a.t27","health":"ok","module":"agent_a"}],"description":"specs/agents/a.t27 -- agent t27/A, letter A of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/A). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent A - Alpha (Architecture)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"0c0275fddc86371a7a8e83a01bd502e06183799cf51f0c46a29c1d444231cc0d","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/bdd_probe.t27","health":"ok","module":"BddProbe"}],"description":"","symbols":[{"name":"double","line":3}],"imports":[],"terms":["bootstrap","goldring","bdd","probe","double"]},{"id":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/docs_generator.t27","health":"warn","module":"docs_generator"}],"description":"Docs Generator - multi-format documentation output generation Creates formatted documentation in various output formats","symbols":[{"name":"MAX_SECTIONS","line":7},{"name":"MAX_TABLES","line":8},{"name":"MAX_REFERENCES","line":9},{"name":"OUTPUT_BUFFER_SIZE","line":10},{"name":"create_output_format","line":13},{"name":"get_format_id","line":20},{"name":"get_format_version","line":24},{"name":"get_format_compression","line":28},{"name":"get_format_encoding","line":32},{"name":"FORMAT_MARKDOWN","line":37},{"name":"FORMAT_HTML","line":38},{"name":"FORMAT_PDF","line":39},{"name":"FORMAT_TEXT","line":40},{"name":"FORMAT_JSON","line":41},{"name":"create_document_section","line":44},{"name":"get_section_id","line":51},{"name":"get_section_level","line":55},{"name":"get_section_content_length","line":59},{"name":"get_section_subsection_count","line":63},{"name":"create_toc_entry","line":68},{"name":"get_toc_section_id","line":75},{"name":"get_toc_level","line":79},{"name":"get_toc_page_number","line":83},{"name":"get_toc_title_id","line":87},{"name":"generate_markdown_header","line":92},{"name":"generate_html_tag","line":107},{"name":"get_html_tag_type","line":113},{"name":"get_html_content_id","line":117},{"name":"get_html_attributes","line":121},{"name":"TAG_H1","line":126},{"name":"TAG_H2","line":127},{"name":"TAG_H3","line":128},{"name":"TAG_P","line":129},{"name":"TAG_TABLE","line":130},{"name":"TAG_DIV","line":131},{"name":"create_reference_link","line":134},{"name":"get_ref_source","line":141},{"name":"get_ref_target","line":145},{"name":"get_ref_type","line":149},{"name":"get_ref_anchor","line":153},{"name":"LINK_INTERNAL","line":158},{"name":"LINK_EXTERNAL","line":159},{"name":"LINK_API","line":160},{"name":"LINK_EXAMPLE","line":161},{"name":"format_code_block","line":164},{"name":"get_code_block_language","line":170},{"name":"get_code_block_code_id","line":174},{"name":"get_code_block_line_count","line":178},{"name":"create_data_table","line":183},{"name":"get_table_id","line":190},{"name":"get_table_row_count","line":194},{"name":"get_table_col_count","line":198},{"name":"get_table_header_count","line":202},{"name":"generate_table_row","line":207},{"name":"create_index_entry","line":215},{"name":"get_index_term_id","line":222},{"name":"get_index_location","line":226},{"name":"get_index_frequency","line":230},{"name":"get_index_importance","line":234},{"name":"generate_page_layout","line":239},{"name":"get_margin_top","line":246},{"name":"get_margin_bottom","line":250},{"name":"get_margin_left","line":254},{"name":"get_margin_right","line":258},{"name":"calculate_document_stats","line":263},{"name":"generate_document_metadata","line":292},{"name":"get_metadata_title","line":299},{"name":"get_metadata_author","line":303},{"name":"get_metadata_date","line":307},{"name":"get_metadata_version","line":311},{"name":"format_document","line":316},{"name":"generate_complete_document","line":344},{"name":"validate_documentation","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","docs","generator","max","sections","tables","references","buffer","size","create","format","get","compression","encoding","markdown","html","pdf","text","json","document","section","level","content","length","subsection","count","toc","entry","page","title","generate","header","tag","attributes","table","div","reference","link","ref","target","anchor","internal","external","api","example","block","language","data","row","col","index","term","location","frequency","importance","layout","margin","top","bottom","left","right","calculate","stats","metadata","author","date","complete","validate","documentation"]},{"id":"0c5420f2741baa6b74f193374a5bbedd2014a8ad7e9f7ca76b990d3caf212145","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_11.t27","health":"warn","module":"damage_class_11"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"0c558f36ccaa222e6da0edd224b43599dc41bccc897a1d5fa61fde68d509e90b","sources":[{"repo":"ghashtag/t27","path":"specs/server/mdns.t27","health":"ok","module":"server-mdns"}],"description":"mdns.t27 — mDNS Specification Multicast DNS service discovery, announcement, resolution","symbols":[{"name":"MDNS_PORT","line":19},{"name":"MDNS_IPV4","line":22},{"name":"MDNS_IPV6","line":25},{"name":"SERVICE_HTTP","line":28},{"name":"SERVICE_LSP","line":31},{"name":"PROTOCOL_VERSION","line":34},{"name":"QUERY_INTERVAL_MS","line":37},{"name":"ANNOUNCEMENT_TTL","line":40},{"name":"QUERY_TIMEOUT_MS","line":43},{"name":"QTYPE_PTR","line":46},{"name":"QTYPE_SRV","line":49},{"name":"QTYPE_TXT","line":52},{"name":"CLASS_IN","line":55},{"name":"RecordType","line":62},{"name":"QueryType","line":70},{"name":"ServiceRecord","line":77},{"name":"PTRRecord","line":88},{"name":"TXTRecord","line":94},{"name":"Query","line":100},{"name":"Response","line":106},{"name":"DiscoveryState","line":112},{"name":"Resolver","line":121},{"name":"service_create","line":131},{"name":"service_create_with_txt","line":144},{"name":"base","line":145},{"name":"ptr_create","line":158},{"name":"txt_create","line":166},{"name":"query_srv","line":174},{"name":"query_ptr","line":182},{"name":"query_txt","line":190},{"name":"resolver_new","line":198},{"name":"resolver_add_service","line":206},{"name":"resolver_find_service","line":211},{"name":"resolver_find_by_type","line":221},{"name":"resolver_count","line":232},{"name":"service_format_name","line":237},{"name":"service_format_fqdn","line":242},{"name":"local_name","line":243},{"name":"is_ptr_record","line":248},{"name":"is_srv_record","line":253},{"name":"is_txt_record","line":258},{"name":"append","line":263},{"name":"concat","line":273},{"name":"append_bytes","line":282},{"name":"resolver_update_time","line":289},{"name":"resolver_cache_stale","line":294},{"name":"elapsed","line":295},{"name":"get_timestamp_ms","line":300},{"name":"service","line":310},{"name":"service","line":316},{"name":"ptr","line":321},{"name":"txt","line":326},{"name":"query","line":331},{"name":"query","line":336},{"name":"query","line":341},{"name":"resolver","line":346},{"name":"service","line":352},{"name":"service","line":359},{"name":"found","line":361},{"name":"service","line":367},{"name":"found","line":369},{"name":"service","line":384},{"name":"name","line":385},{"name":"service","line":390},{"name":"fqdn","line":391},{"name":"service","line":523},{"name":"service","line":536},{"name":"service","line":561}],"imports":[{"name":"std","line":12}],"terms":["mdns","port","ipv4","ipv6","service","http","lsp","protocol","query","interval","announcement","ttl","timeout","qtype","ptr","srv","txt","class","record","ptrrecord","txtrecord","response","discovery","state","resolver","create","base","find","count","format","fqdn","local","append","concat","bytes","time","cache","stale","elapsed","get","timestamp","found"]},{"id":"0c5d3c7ae88a186a93e8f9d59d674136e0a1c7555e6b2d4c3f58dfa4522b7c11","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_06_intact_field.t27","health":"ok","module":null}],"description":"NEGATIVE fixture: the intact convention itself, including the slice and optional-slice forms that the damaged classes are corruptions of.","symbols":[{"name":"Intact","line":3}],"imports":[],"terms":["bootstrap","fixtures","damage","negative","neg","intact","field"]},{"id":"0ca5ed85564d0231316703fb63605e962ea2cbf2fb37a273c7d9eac793a45cd5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/topic.t27","health":"ok","module":"tool_tri_topic"}],"description":"specs/tools/tri/topic.t27 -- tool tri/topic, the `tri topic` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/topic). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["topic","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"0cba1dd14aac303207075aa28d1ad906b44b108ad1fb6f0bb10bad7a4c9f116b","sources":[{"repo":"ghashtag/t27","path":"specs/conformance/e2e_scenarios.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"sim","line":41},{"name":"cat","line":55},{"name":"sits","line":56},{"name":"mat","line":57},{"name":"decoded","line":74},{"name":"sim","line":106},{"name":"sim_apple_0","line":129},{"name":"sim_apple_1","line":130},{"name":"sim_apple_2","line":131},{"name":"prediction","line":162},{"name":"VerdictResult","line":225}],"imports":[],"terms":["conformance","e2e","scenarios","sim","cat","sits","mat","decoded","apple","prediction","verdict"]},{"id":"0cf723b0c54a06a9851f0f635f2191829a0c100860d1c12896afa5e4bb856b8a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/memory_primitives.t27","health":"ok","module":"MemoryPrimitives"}],"description":"t27/specs/memory/memory_primitives.t27 Native Memory Primitives Specification Ring 029 — Language-level remember/recall/forget/reflect Inspired by MemPalace associative memory architecture 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"SCOPE_AGENT","line":11},{"name":"SCOPE_SESSION","line":12},{"name":"SCOPE_PERMANENT","line":13},{"name":"MAX_KEY_LEN","line":14},{"name":"MAX_VALUE_LEN","line":15},{"name":"TOMBSTONE","line":16},{"name":"ACTIVE","line":17},{"name":"FORGOTTEN","line":18},{"name":"MemoryCell","line":21},{"name":"remember","line":30},{"name":"recall","line":41},{"name":"forget","line":47},{"name":"reflect_phi_hash","line":54},{"name":"is_agent_scoped","line":62},{"name":"is_permanent","line":67},{"name":"scope_priority","line":72},{"name":"cell_size","line":80}],"imports":[{"name":"base::types","line":9}],"terms":["memory","primitives","scope","session","permanent","max","key","len","tombstone","active","forgotten","cell","remember","recall","forget","reflect","phi","hash","scoped","priority","size"]},{"id":"0d086cf4354cf037854382bc5dc532b4b3e7b166276b0cd603c2962bfb09a29b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/tools.scripts.t27","health":"ok","module":"trinity_capability_tools_scripts"}],"description":"specs/trinity/capabilities/tools.scripts.t27 -- capability trinity/tools.scripts: Repository tooling: tools/scripts, tools/bin, the telegram bridge, the webarena One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","scripts","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"0d205500e7adf560ff03ecfd59e90ee13b51f4624e27555d4142e5b184100d6b","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-wave.t27","health":"ok","module":"skill_trinity_wave"}],"description":"specs/skills/trinity-wave.t27 -- skill trinity/wave Source of truth for the skill card on t27.ai (#/skills?skill=trinity/wave). The skill body lives in gHashTag/trinity at .claude/skills/wave/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/wave/SKILL.md, sha256 ecf06fdfa467...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","wave","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"0db5f4adc1bc7230e3e6a2b4396c25429d35834ace309a10b4601adaea6b53cc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/stack.t27","health":"ok","module":"TriStack"}],"description":"t27/specs/","symbols":[{"name":"Stack","line":13},{"name":"empty","line":22},{"name":"push","line":27},{"name":"pop","line":32},{"name":"peek","line":37},{"name":"is_empty","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","stack","empty","push","pop","peek"]},{"id":"0dd7fd6cc289560d1997dd2831d004d25892651b7beb65979ecc5973699c4517","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_variant_split.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","takum","variant","split"]},{"id":"0e053f342b33d78bd69e302ae9afb0c11484b411d895197522c747f35a8f957f","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/superconductivity.t27","health":"ok","module":"TriSuperconductivity"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","superconductivity"]},{"id":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/stream_compute.t27","health":"ok","module":"TrinityMemoryStreamComputeSpec"}],"description":"specs/memory/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is","symbols":[{"name":"TMS_DOT_LANES","line":16},{"name":"TMS_DOT_LANE_BITS","line":17},{"name":"TMS_DOT_LANE_FIELD_BITS","line":18},{"name":"TMS_DOT_DECODED_VALID_BIT","line":19},{"name":"TMS_DOT_CODE_BITS","line":20},{"name":"TMS_DOT_DENSE_CODE_BITS","line":21},{"name":"TMS_DOT_DENSE_CODE_LIMIT","line":22},{"name":"TMS_DOT_BASELINE_CODE_LIMIT","line":23},{"name":"TMS_DOT_ACTIVATION_BITS","line":24},{"name":"TMS_DOT_ACTIVATION_FIELD_BITS","line":25},{"name":"TMS_DOT_ACTIVATION_MIN","line":26},{"name":"TMS_DOT_ACTIVATION_MAX","line":27},{"name":"TMS_DOT_MASK_BITS","line":28},{"name":"TMS_DOT_FULL_MASK","line":29},{"name":"TMS_DOT_EMPTY_MASK","line":30},{"name":"TMS_DOT_GROUP_SUM_MIN","line":31},{"name":"TMS_DOT_GROUP_SUM_MAX","line":32},{"name":"TMS_DOT_ACC_WIDTH_MIN","line":36},{"name":"TMS_DOT_ACC_WIDTH_MAX","line":37},{"name":"TMS_DOT_RUNNER_ACC_WIDTH_MIN","line":38},{"name":"TMS_DOT_DEFAULT_ACC_WIDTH","line":39},{"name":"TMS_DOT_ERROR_RESULT","line":40},{"name":"TMS_DOT_PIPELINE_STAGES","line":45},{"name":"TMS_DOT_ACCEPT_TO_VALID_EDGES","line":46},{"name":"TMS_DOT_ACCEPT_TO_CONSUME_EDGES","line":47},{"name":"TMS_RTL_PACKET_CODE_SHIFT","line":50},{"name":"TMS_RTL_PACKET_ACTIVATION_SHIFT","line":51},{"name":"TMS_RTL_PACKET_MASK_SHIFT","line":52},{"name":"TMS_RTL_PACKET_LAST_BIT","line":53},{"name":"TMS_RTL_PACKET_RESET_BIT","line":54},{"name":"TMS_RTL_PACKET_RESET_PENDING_BIT","line":55},{"name":"TMS_RTL_EXPECTED_RESULT_BITS","line":56},{"name":"TMS_RTL_EXPECTED_ERROR_BIT","line":57},{"name":"TMS_RTL_ERR_ARGUMENT","line":58},{"name":"TMS_RTL_ERR_CAPACITY","line":59},{"name":"TMS_RTL_ERR_OVERFLOW","line":60},{"name":"TMS_RTL_ERR_OUTPUT","line":61},{"name":"TMS_RTL_ERR_MISMATCH","line":62},{"name":"TMS_RTL_ERR_PROCESS","line":63},{"name":"TMS_RTL_ERR_RESOURCE","line":64},{"name":"TMS_STORAGE_CAPACITY_GROUPS","line":69},{"name":"TMS_STORAGE_TRITS_PER_WORD","line":70},{"name":"TMS_STORAGE_MAX_TRITS","line":71},{"name":"TMS_STORAGE_DENSE_CODE_WIDTH","line":72},{"name":"TMS_STORAGE_BASELINE_CODE_WIDTH","line":73},{"name":"TMS_STORAGE_ELEMENT_BITS","line":74},{"name":"TMS_STORAGE_START_TO_WORD0_EDGES","line":75},{"name":"TMS_STORAGE_HAS_BACKPRESSURE","line":76},{"name":"TMS_STORAGE_JOIN_NEEDS_BUFFER","line":77},{"name":"TMS_VIEW_VALID_BIT","line":78},{"name":"TMS_VIEW_MASK_SHIFT","line":79},{"name":"TMS_VIEW_LANE_FIELD_MASK","line":80},{"name":"TMS_JOIN_FIRE_BIT","line":88},{"name":"TMS_JOIN_WORD_READY_BIT","line":89},{"name":"TMS_JOIN_ACT_READY_BIT","line":90},{"name":"TMS_JOIN_IN_VALID_BIT","line":91},{"name":"TMS_JOIN_IN_LAST_BIT","line":92},{"name":"TMS_JOIN_MASK_SHIFT","line":93},{"name":"TMS_JOIN_FULL_MASK","line":94},{"name":"TMS_JOIN_ACTIVATION_BITS","line":95},{"name":"tms_dot_dense_digit","line":98},{"name":"tms_dot_decode","line":106},{"name":"tms_dot_lane_trit","line":124},{"name":"tms_dot_activation","line":131},{"name":"tms_dot_pack_activations","line":138},{"name":"tms_dot_product","line":147},{"name":"tms_dot_group_sum","line":152},{"name":"tms_dot_mask_valid","line":161},{"name":"tms_dot_lane_valid","line":166},{"name":"tms_dot_group_valid","line":171},{"name":"tms_dot_width_supported","line":183},{"name":"tms_dot_runner_width_supported","line":187},{"name":"tms_dot_acc_max","line":191},{"name":"tms_dot_acc_min","line":195},{"name":"tms_dot_next_error","line":199},{"name":"tms_dot_accumulate_ready","line":206},{"name":"tms_dot_in_ready","line":210},{"name":"tms_dot_encoded_bits","line":215},{"name":"tms_rtl_packet_word","line":221},{"name":"tms_rtl_expected_word","line":234},{"name":"tms_rtl_packet_count","line":240},{"name":"tms_storage_words","line":247},{"name":"tms_storage_last_mask","line":251},{"name":"tms_storage_config_ok","line":256},{"name":"tms_storage_busy","line":260},{"name":"tms_storage_load_ready","line":264},{"name":"tms_storage_word_edge","line":270},{"name":"tms_storage_idle_edge","line":274},{"name":"tms_view_pack","line":279},{"name":"tms_storage_holds","line":292},{"name":"tms_join_mask","line":295},{"name":"tms_join_word","line":299}],"imports":[],"terms":["dmitrii","memory","stream","compute","tms","dot","lanes","lane","bits","field","decoded","valid","bit","dense","limit","baseline","activation","min","max","mask","full","empty","group","sum","acc","width","runner","default","pipeline","stages","accept","edges","consume","rtl","packet","shift","reset","expected","err","argument","capacity","overflow","mismatch","process","resource","storage","groups","trits","per","word","element","start","word0","backpressure","join","buffer","view","fire","ready","act","digit","decode","trit","pack","activations","product","supported","accumulate","encoded","count","words","config","busy","load","edge","idle","holds"]},{"id":"0e2f8e5085ed1ea2b4b2f7732c9f9de00fcd19fda8d13e1f735865aa2cd32179","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27","health":"ok","module":"cron_999_multibots_telegraf_daily_sales_advisor"}],"description":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27 -- cron inngest/999-multibots-telegraf/daily-sales-advisor Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/daily-sales-advisor). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L56. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"NOTE","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","daily","sales","advisor","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"0e7c3b187e4d0ea8c189c50aa2a09cc2c41c6dc77a595b63a0171e7227ca977a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/phi_rule_verification.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","phi","rule","verification"]},{"id":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/verification/build_verify.t27","health":"ok","module":"BuildVerify"}],"description":"t27/specs/fpga/verification/build_verify.t27 FPGA Build Verification Spec Validates all FPGA specs can generate Verilog and pass structural checks","symbols":[{"name":"TOTAL_FPGA_MODULES","line":8},{"name":"TOTAL_TESTBENCHES","line":9},{"name":"TOTAL_BOARD_CONFIGS","line":10},{"name":"TOTAL_SPECS","line":11},{"name":"NUM_BACKENDS","line":12},{"name":"VERILOG_FILES","line":13},{"name":"ModuleReport","line":15},{"name":"BuildResult","line":23},{"name":"check_build_clean","line":35},{"name":"coverage_percent","line":39}],"imports":[],"terms":["fpga","verification","build","verify","total","modules","testbenches","board","configs","num","backends","verilog","report","clean","percent"]},{"id":"0eef09b67cdd371654875a6b01da947d124213a3edbcc422dd70bb1a290e6086","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/color.t27","health":"ok","module":"TriColor"}],"description":"t27/specs/","symbols":[{"name":"Color","line":13},{"name":"ColorSpace","line":20},{"name":"rgb","line":29},{"name":"to_hex","line":34},{"name":"blend","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","color","space","rgb","hex","blend"]},{"id":"0f0f989b64c459cd0e5fe437464dbfa1e1649b6eb7bd7a066ec6a352a35e24eb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/context.t27","health":"ok","module":"TriContext"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections"]},{"id":"0f2dee7f0f339db9e0886aff03fe2bd45a8afcd58b09ca45379736f14a384a94","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_cli.t27","health":"warn","module":"TrinityMemoryTensorPackCLI"}],"description":"Native TensorPack CLI JSON contracts, independent of file/terminal services. Workspace, value buffers and output JSON are caller-owned scratch. Callers publish output only after success; no routine allocates or opens a path.","symbols":[{"name":"tm_tpc_allowed_key","line":5},{"name":"tm_tp_parse_tensor_json","line":14},{"name":"tm_tp_encode_input_json","line":113},{"name":"tm_tpc_shape","line":123},{"name":"tm_tpc_scales","line":128},{"name":"tm_tpc_axes","line":133},{"name":"tm_tpc_descriptor_json","line":141},{"name":"tm_tp_inspect_json","line":150},{"name":"tm_tp_export_json","line":178}],"imports":[],"terms":["dmitrii","memory","tensorpack","cli","tensor","pack","tpc","allowed","key","parse","json","encode","shape","scales","axes","descriptor","inspect"]},{"id":"0f4494d56c800b3c811c9bcfc11646a059681d0fa9fa95ca4780a118f6c1c866","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_bodyless_fn.t27","health":"ok","module":"trinity_matrix_neg_bodyless_fn"}],"description":"trinity_matrix/neg_bodyless_fn.t27 -- NEGATIVE: a required function declared without a body (the shape of gHashTag/t27#3472); a test calls it, so nothing may report it executable.","symbols":[{"name":"helper","line":6}],"imports":[],"terms":["bootstrap","fixtures","matrix","neg","bodyless","helper"]},{"id":"0f726fb3c27cf8e9877344bd5e4e97a04a1c9f3a76e945222f7a7aa87e7eed96","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/layernorm_layer.t27","health":"ok","module":"Layernorm"}],"description":"t27/specs/","symbols":[{"name":"LayerNormConfig","line":13},{"name":"forward","line":23}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","layernorm","layer","norm","config","forward"]},{"id":"1044d178fb800ee5aedbcc28ffb09b84ce0b85c8eb8982827c0073c523d23a84","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_arithmetic.t27","health":"warn","module":"TernaryArithmetic"}],"description":"t27/specs/isa/ternary_arithmetic.t27 Ternary Arithmetic Operations Specification Ring 064 - Balanced ternary arithmetic for T27 Defines addition, subtraction, multiplication, and division","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"MIN_TRIT","line":21},{"name":"MAX_TRIT","line":22},{"name":"TRITS_PER_WORD","line":25},{"name":"trit_add","line":35},{"name":"TritAddResult","line":57},{"name":"trit_sub","line":68},{"name":"neg_b","line":70},{"name":"result","line":71},{"name":"TritSubResult","line":80},{"name":"trit_mul","line":92},{"name":"ternary_word_add","line":102},{"name":"add_result","line":108},{"name":"WordAddResult","line":120},{"name":"ternary_word_sub","line":132},{"name":"sub_result","line":138},{"name":"WordSubResult","line":150},{"name":"ternary_to_decimal","line":162},{"name":"decimal_to_ternary","line":179},{"name":"rem","line":184},{"name":"is_valid_trit","line":221},{"name":"validate_trits","line":227},{"name":"ternary_compare","line":245},{"name":"idx","line":250},{"name":"vals","line":368},{"name":"r1","line":375},{"name":"r2","line":376},{"name":"vals","line":388},{"name":"r1","line":395},{"name":"r2","line":396},{"name":"vals","line":407},{"name":"vals","line":420},{"name":"vals","line":430},{"name":"result","line":445},{"name":"vals","line":457},{"name":"vals","line":470}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","arithmetic","trit","neg","zero","pos","min","max","trits","per","word","sub","mul","decimal","rem","valid","validate","compare","idx","vals"]},{"id":"104c0dbdf3855e1c5a9474958c62722dacba04b937ccb59ad8434e152d7ff9ac","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_hidden2.t27","health":"ok","module":"GftHidden2"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":108},{"name":"relu_prime","line":114},{"name":"on_comb","line":124}],"imports":[],"terms":["ternary","gft","hidden2","magadd","magsub","sadd","neg","magmul","smul","relu","prime","comb"]},{"id":"105570e1b9856293381a0dd3a7365177b880aaf561e8659f5d50e240a593b5be","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/comb_bitnet_layer.t27","health":"warn","module":"CombBitnetLayer"}],"description":"","symbols":[{"name":"W_P","line":17},{"name":"W_N","line":18},{"name":"W_Z","line":19},{"name":"tmul","line":21},{"name":"tp","line":27},{"name":"dot27","line":30},{"name":"quantize","line":38},{"name":"neuron","line":44},{"name":"on_comb","line":49}],"imports":[],"terms":["ternary","comb","bitnet","layer","tmul","dot27","quantize","neuron"]},{"id":"1057f56a22357e8b4fa94871b1c98d67432d2b69dce7b80c975c2a2f635469e3","sources":[{"repo":"ghashtag/t27","path":"specs/vm/jit_semantics.t27","health":"ok","module":"JitSemantics"}],"description":"Module: JIT Compilation Semantics","symbols":[{"name":"JitVsaFn","line":20},{"name":"JitSimilarityFn","line":25},{"name":"JitCompiler","line":34},{"name":"JitCache","line":47},{"name":"VsaOperation","line":59},{"name":"initCompiler","line":73},{"name":"deinitCompiler","line":79},{"name":"resetCompiler","line":85},{"name":"compileOperation","line":92},{"name":"finalizeCompiler","line":99},{"name":"codeSize","line":105},{"name":"initCache","line":115},{"name":"deinitCache","line":121},{"name":"getOrCompile","line":127},{"name":"jitBind","line":137},{"name":"jitBundle","line":143},{"name":"jitDotProduct","line":150}],"imports":[{"name":"base::types","line":9},{"name":"ternary::hybrid_arithmetic","line":10},{"name":"numeric::gf16","line":11}],"terms":["jit","semantics","vsa","similarity","compiler","cache","operation","init","deinit","reset","compile","finalize","size","get","bind","bundle","dot","product"]},{"id":"106dee6126f578973c0b1b47f58ea10a7ee94213d8515635272981c1dba6bc72","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_trace_tb.t27","health":"ok","module":"VCD_Trace_Testbench"}],"description":"t27/specs/fpga/testbench/vcd_trace_tb.t27 VCD Trace Testbench Tests waveform dump generation, signal hierarchy, and timestamp management","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_SIGNALS","line":11},{"name":"TIMESTAMP_RES_PS","line":12},{"name":"tick","line":24},{"name":"reset","line":30},{"name":"advance_time","line":38},{"name":"format_timestamp","line":47}],"imports":[{"name":"fpga::vcd_trace::VcdTrace","line":8}],"terms":["fpga","testbench","vcd","trace","clk","period","max","signals","timestamp","res","tick","reset","advance","time","format"]},{"id":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/placement.t27","health":"ok","module":"Placement"}],"description":"t27/specs/fpga/placement.t27 T27 Placement Constraint Generator Specification Auto-generates placement hints and routing constraints from HIR connectivity Groups related modules into floorplan regions for optimal routing Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"RegionKind","line":13},{"name":"PlacementRegion","line":23},{"name":"region","line":32},{"name":"logic_cluster","line":43},{"name":"bram_column","line":47},{"name":"dsp_column","line":51},{"name":"PlacementHint","line":57},{"name":"hint","line":63},{"name":"RouteConstraint","line":73},{"name":"route_constraint","line":80},{"name":"Floorplan","line":91},{"name":"floorplan","line":96},{"name":"region_width","line":105},{"name":"region_height","line":112},{"name":"region_area","line":119},{"name":"regions_overlap","line":123},{"name":"validate_region","line":129},{"name":"validate_hint","line":143}],"imports":[],"terms":["fpga","placement","region","kind","logic","cluster","bram","column","dsp","hint","route","constraint","floorplan","width","height","area","regions","overlap","validate"]},{"id":"1097cfd770915f5519ab1c5575670fa94b50ad0af6661741879c10bd7bef9e26","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_main.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["benchmarks","bench","main"]},{"id":"11055f7681ca0d5588ee71899ff6cfc2d374a4564f01d03669ff54f579d1777d","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_entropy.t27","health":"ok","module":null}],"description":"t27/specs/physics/lqg_entropy.t27 KEPLER→NEWTON Direction B: LQG → γ (PRIORITY 3 - HONEST INQUIRY) Status: Final v2.2 Date: 2026-04-05 HONEST ASSESSMENT: γ = φ⁻³ does NOT come from CS theory. This spec documents research needed to find:","symbols":[],"imports":[],"terms":["physics","lqg","entropy"]},{"id":"11108a3f4c94af03d615a4f82336b1671b293aa40409293448ae52a58d598b20","sources":[{"repo":"ghashtag/t27","path":"specs/functions/reels-ai-generate.t27","health":"ok","module":"fn_reels_ai_generate"}],"description":"specs/functions/reels-ai-generate.t27 -- function reels-ai-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-ai-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateAIReelsFunction.ts#L44 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","reels","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"11b24d4332b7e356f77b233a20d578c3ec31da71ff34be37d16d29d7d4471d5b","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L2325.t27","health":"ok","module":"cron_999_multibots_telegraf_render_server_L2325"}],"description":"specs/crons/999-multibots-telegraf-render-server-L2325.t27 -- cron timer/999-multibots-telegraf/render-server-L2325 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L2325). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L2325. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"NOTE","line":24},{"name":"ON_FAILURE","line":25},{"name":"CONTROL","line":26}],"imports":[],"terms":["crons","multibots","telegraf","render","l2325","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"11b8f3a02528ec76301e1d268af20761b5ad9ec4d730b8d566c076b553b196b7","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_and_not_folded.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","folded"]},{"id":"121ed4a8e32889b770a8ab90b91b3bde9a7b193c66c845aac0130f7ab66c070d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_merkle.t27","health":"ok","module":"TriMerkle"}],"description":"TRI-NET DePIN settlement commitment: a Merkle tree over a payout round's receipts. The settlement publishes ONE root hash; each node proves its (receipt, reward) leaf is under that root with a logarithmic inclusion proof -- exactly Helium's model (store the root on-chain, claim a reward by a Merkle proof). This makes the whole round verifiable by anyone from a single 32-bit root, and lets a node prove it was paid correctly without trusting the settler.","symbols":[{"name":"M_C","line":15},{"name":"rotl","line":17},{"name":"mix32","line":21},{"name":"hpair","line":31},{"name":"leaf_hash","line":38},{"name":"account_leaf","line":47},{"name":"merkle_root8","line":52},{"name":"merkle_step","line":64},{"name":"merkle_verify8","line":74}],"imports":[{"name":"base::types","line":13}],"terms":["net","merkle","rotl","mix32","hpair","leaf","hash","account","root8","step","verify8"]},{"id":"121f7a349ba5b7b672b90a9f372f575e9530ef68756c687660ed6ef029278fc5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph.t27","health":"ok","module":"TriGraph"}],"description":"t27/specs/","symbols":[{"name":"Graph","line":13},{"name":"GraphPath","line":18},{"name":"empty","line":28},{"name":"add_node","line":33},{"name":"add_edge","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","path","empty","node","edge"]},{"id":"12299009a56b6404c248457a5d524f02615a7898a3155bc991a36dd702986ac0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/match.t27","health":"ok","module":"SearchMatch"}],"description":"t27/specs/","symbols":[{"name":"Match","line":13},{"name":"MatchCapture","line":18},{"name":"match_literal","line":27},{"name":"match_type","line":32},{"name":"exhaustive","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","match","capture","literal","exhaustive"]},{"id":"12a5bb8e6d0975bfd72b3520ac83e9adaa6f52371be8ef101ef5fd39b8fcbf6f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/clocked_counter.t27","health":"warn","module":"ClockedCounter"}],"description":"","symbols":[{"name":"on_clock","line":27}],"imports":[],"terms":["ternary","clocked","counter","clock"]},{"id":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","sources":[{"repo":"ghashtag/t27","path":"specs/base/types.t27","health":"warn","module":"tritype-base"}],"description":"types.t27 — Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","symbols":[{"name":"NEGONE","line":12},{"name":"ZERO","line":13},{"name":"ONE","line":14},{"name":"Trit","line":17},{"name":"PACKED_BITS_PER_TRIT","line":31},{"name":"TRITS_PER_BYTE","line":32},{"name":"PACKED_NEG","line":36},{"name":"PACKED_ZERO","line":37},{"name":"PACKED_ONE","line":38},{"name":"TRIT_MASK","line":40},{"name":"PackedTrit","line":41},{"name":"TRITS_PER_WORD","line":50},{"name":"WORD_BYTES","line":51},{"name":"TernaryWord","line":53},{"name":"UnpackResult","line":60},{"name":"trit_add","line":81},{"name":"trit_multiply","line":109},{"name":"trit_negate","line":127},{"name":"trit_to_packed","line":137},{"name":"packed_to_trit","line":147},{"name":"pack_trit","line":159},{"name":"encoding","line":164},{"name":"bit_pos","line":165},{"name":"mask","line":168},{"name":"unpack_trit","line":179},{"name":"bit_pos","line":184},{"name":"encoding","line":185},{"name":"value","line":186},{"name":"ternary_word_pack","line":194},{"name":"ternary_word_unpack","line":211},{"name":"unpacked","line":220},{"name":"trit_compare","line":233},{"name":"trit_min","line":245},{"name":"trit_max","line":251},{"name":"trit_abs","line":257},{"name":"trit_from_i8","line":264},{"name":"trit_and","line":282},{"name":"trit_or","line":299},{"name":"trit_xor","line":316},{"name":"trit_not","line":326},{"name":"trit_select","line":333},{"name":"packed_trit_count","line":339},{"name":"unpacked","line":342},{"name":"packed_trit_all_equal","line":352},{"name":"packed_trit_is_zero","line":358},{"name":"packed_trit_is_all_same","line":364},{"name":"first","line":365},{"name":"packed_trit_nand","line":371},{"name":"a_trit","line":374},{"name":"b_trit","line":375},{"name":"and_result","line":376},{"name":"nand_result","line":377},{"name":"packed_trit_nor","line":385},{"name":"a_trit","line":388},{"name":"b_trit","line":389},{"name":"or_result","line":390},{"name":"nor_result","line":391},{"name":"packed_trit_xnor","line":400},{"name":"a_trit","line":403},{"name":"b_trit","line":404},{"name":"xor_result","line":405},{"name":"xnor_result","line":406},{"name":"packed_trit_shift_left","line":415},{"name":"src_pos","line":426},{"name":"src_trit","line":427},{"name":"packed_trit_shift_right","line":438},{"name":"dst_pos","line":448},{"name":"src_trit","line":450},{"name":"packed_trit_rotate_left","line":461},{"name":"shift","line":466},{"name":"src_pos","line":470},{"name":"src_trit","line":471},{"name":"packed_trit_rotate_right","line":481},{"name":"shift","line":486},{"name":"src_pos","line":490},{"name":"src_trit","line":491},{"name":"ternary_word_is_zero","line":500},{"name":"byte_idx","line":502},{"name":"trit_pos","line":503},{"name":"unpacked","line":504},{"name":"ternary_word_count","line":514},{"name":"byte_idx","line":517},{"name":"trit_pos","line":518},{"name":"unpacked","line":519},{"name":"ternary_word_eq","line":529},{"name":"ternary_word_negate","line":540},{"name":"byte_idx","line":543},{"name":"trit_pos","line":544},{"name":"unpacked","line":545},{"name":"negated","line":546},{"name":"ternary_word_is_all_same","line":554},{"name":"first","line":555},{"name":"trits","line":589},{"name":"packed","line":591},{"name":"unpacked","line":592},{"name":"packed","line":601},{"name":"unpacked","line":602},{"name":"result","line":610},{"name":"src","line":616},{"name":"result","line":617},{"name":"src","line":623},{"name":"result","line":624},{"name":"trits","line":645},{"name":"trits","line":653},{"name":"src","line":710},{"name":"packed","line":711},{"name":"unpacked","line":712},{"name":"trits","line":799},{"name":"trits","line":809},{"name":"trits","line":819},{"name":"result","line":907},{"name":"result","line":920},{"name":"result","line":932},{"name":"result","line":944},{"name":"result","line":954},{"name":"result","line":965},{"name":"result","line":975},{"name":"result","line":985},{"name":"result","line":994},{"name":"result","line":1003},{"name":"result","line":1012},{"name":"result","line":1021},{"name":"shift_result","line":1029},{"name":"rotate_result","line":1030},{"name":"byte_idx","line":1062},{"name":"trit_pos","line":1063},{"name":"negated","line":1092},{"name":"double_negated","line":1103},{"name":"byte_idx","line":1111},{"name":"trit_pos","line":1112},{"name":"unpacked","line":1424},{"name":"packed","line":1501},{"name":"packed","line":1513},{"name":"packed","line":1525},{"name":"a","line":1537},{"name":"b","line":1538},{"name":"a","line":1550},{"name":"b","line":1551},{"name":"a","line":1563},{"name":"b","line":1564},{"name":"packed","line":1576},{"name":"packed","line":1588},{"name":"packed","line":1600},{"name":"packed","line":1612},{"name":"word","line":1624},{"name":"word","line":1636},{"name":"word_a","line":1648},{"name":"word_b","line":1649},{"name":"word","line":1661},{"name":"word","line":1673}],"imports":[],"terms":["base","tritype","negone","zero","one","trit","packed","bits","per","trits","byte","neg","mask","word","bytes","ternary","unpack","multiply","negate","pack","encoding","bit","pos","unpacked","compare","min","max","abs","xor","select","count","equal","nand","nor","xnor","shift","left","right","dst","rotate","idx","negated","double"]},{"id":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_decision_gate.t27","health":"warn","module":"JonesTopologyDecisionGate"}],"description":"t27/specs/demos/jones_topology_decision_gate.t27 Decision Gate TH-01..TH-05 for H₁: Structure Similarity Classifier Tests if VSA dot_product + fixed φ constant can classify structures by complexity","symbols":[{"name":"TH_01_TARGET","line":19},{"name":"TH_02_THRESHOLD","line":23},{"name":"TH_03_THRESHOLD","line":27},{"name":"TH_04_EXPECTED","line":31},{"name":"TH_05_THRESHOLD","line":35},{"name":"tree_structure","line":42},{"name":"t","line":48},{"name":"cycle_structure","line":59},{"name":"t","line":65},{"name":"simple_structure","line":78},{"name":"t","line":84},{"name":"complex_structure","line":95},{"name":"t","line":101},{"name":"random_structure_a","line":111},{"name":"t","line":117},{"name":"random_structure_b","line":134},{"name":"t","line":140},{"name":"cosine_similarity","line":164},{"name":"dim","line":165},{"name":"dot","line":166},{"name":"norm_a","line":167},{"name":"norm_b","line":168}],"imports":[{"name":"base::types","line":8},{"name":"math::constants","line":9},{"name":"vsa::ops","line":10},{"name":"demos::jones_topology_filter","line":11}],"terms":["demos","jones","topology","decision","gate","target","threshold","expected","tree","structure","cycle","simple","complex","random","cosine","similarity","dim","dot","norm"]},{"id":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/axi4_tb.t27","health":"warn","module":"AXI4_Testbench"}],"description":"t27/specs/fpga/testbench/axi4_tb.t27 AXI4 Bus Testbench Specification Tests AXI4 read/write channels, burst support, and protocol compliance","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"ADDR_WIDTH","line":12},{"name":"DATA_WIDTH","line":13},{"name":"ID_WIDTH","line":14},{"name":"MAX_BURST_LEN","line":15},{"name":"tick","line":60},{"name":"reset","line":65},{"name":"axi_write_single","line":73},{"name":"axi_read_single","line":96}],"imports":[{"name":"fpga::axi4::Axi4","line":8}],"terms":["fpga","testbench","axi4","clk","period","sim","timeout","addr","width","data","max","burst","len","tick","reset","axi","write","single","read"]},{"id":"1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_dashboard.t27","health":"warn","module":"health_dashboard"}],"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_METRICS","line":8},{"name":"HEALTH_UPDATE_INTERVAL","line":9},{"name":"ALERT_THRESHOLD","line":10},{"name":"CRITICAL_THRESHOLD","line":11},{"name":"create_health_metric","line":14},{"name":"get_health_node_id","line":21},{"name":"get_health_metric_type","line":25},{"name":"get_health_value","line":29},{"name":"get_health_timestamp","line":33},{"name":"METRIC_CPU","line":38},{"name":"METRIC_MEMORY","line":39},{"name":"METRIC_BANDWIDTH","line":40},{"name":"METRIC_LATENCY","line":41},{"name":"METRIC_PACKET_LOSS","line":42},{"name":"METRIC_ERROR_RATE","line":43},{"name":"METRIC_LINK_QUALITY","line":44},{"name":"METRIC_BATTERY","line":45},{"name":"create_health_score","line":48},{"name":"get_overall_health","line":55},{"name":"get_critical_count","line":59},{"name":"get_warning_count","line":63},{"name":"get_score_timestamp","line":67},{"name":"calculate_node_health","line":72},{"name":"calculate_network_health","line":117},{"name":"detect_critical_issues","line":135},{"name":"detect_warning_issues","line":170},{"name":"generate_health_report","line":205},{"name":"create_health_alert","line":214},{"name":"get_alert_node_id","line":221},{"name":"get_alert_type","line":225},{"name":"get_alert_severity","line":229},{"name":"get_alert_timestamp","line":233},{"name":"ALERT_NODE_DOWN","line":238},{"name":"ALERT_HIGH_CPU","line":239},{"name":"ALERT_LOW_BATTERY","line":240},{"name":"ALERT_LINK_FAILURE","line":241},{"name":"ALERT_CONGESTION","line":242},{"name":"ALERT_SECURITY","line":243},{"name":"generate_alert","line":246},{"name":"analyze_health_trend","line":261},{"name":"find_unhealthy_nodes","line":282},{"name":"calculate_network_trend","line":297},{"name":"generate_summary_report","line":326},{"name":"is_monitoring_active","line":332},{"name":"calculate_uptime","line":343}],"imports":[{"name":"base::types","line":5}],"terms":["net","health","dashboard","max","nodes","metrics","interval","alert","threshold","critical","create","metric","get","node","timestamp","cpu","memory","bandwidth","latency","packet","loss","rate","link","quality","battery","score","overall","count","warning","calculate","network","detect","generate","report","severity","down","high","low","failure","congestion","security","analyze","trend","find","unhealthy","summary","monitoring","active","uptime"]},{"id":"132770a2bab3851bc2af8213e5ce75afd4fcd494e908a28b5e1cfeeff603f344","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/eternal_monitor.t27","health":"ok","module":"EternalMonitor"}],"description":"t27/specs/","symbols":[{"name":"Severity","line":13},{"name":"HealthStatus","line":17},{"name":"Config","line":21},{"name":"Alert","line":28},{"name":"Metrics","line":36},{"name":"SystemComponent","line":44},{"name":"EternalMonitor","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["eternal","monitor","severity","health","status","config","alert","metrics","system","component"]},{"id":"138a62838d44acac9ecdbf7cb53e980b3884af10da968540d24e656138aa4767","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_classifier4.t27","health":"warn","module":"GftClassifier4"}],"description":"","symbols":[{"name":"magadd","line":14},{"name":"magsub","line":34},{"name":"sadd","line":59},{"name":"contrib","line":71},{"name":"activate","line":77},{"name":"trit2gft","line":82},{"name":"neuron4","line":88},{"name":"logit2","line":94},{"name":"category","line":98},{"name":"gt","line":103},{"name":"on_comb","line":115}],"imports":[],"terms":["ternary","gft","classifier4","magadd","magsub","sadd","contrib","activate","trit2gft","neuron4","logit2","category","comb"]},{"id":"139a9520333fcd83d201956606bfd34d888141e74416c820e3c9b53ae8f2bafc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/oracle_fidelity_map.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","oracle","fidelity","map"]},{"id":"13b3fa04c5f6561717e1897221fac69f797143f8630f44d037e070de3877b05c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/fenwick_tree.t27","health":"ok","module":"TriFenwick"}],"description":"t27/specs/","symbols":[{"name":"FenwickTree","line":13},{"name":"init","line":24},{"name":"build","line":29},{"name":"query","line":34},{"name":"range_query","line":39},{"name":"update","line":44},{"name":"deinit","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","fenwick","tree","init","build","query","range","deinit"]},{"id":"13c773d8e575a6f617dbcb4c86415a09bf50217b58f257efc4ea0ebc1ab90a8b","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/fleet.t27","health":"ok","module":"tool_tri_fleet"}],"description":"specs/tools/tri/fleet.t27 -- tool tri/fleet, the `tri fleet` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fleet). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["fleet","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"13cb1dcbfcb0f13ec58ba56cd2b3b2b788ccbc0e2b6cfc610e46b850889bee15","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-error-report.t27","health":"ok","module":"fn_monitoring_error_report"}],"description":"specs/functions/monitoring-error-report.t27 -- function monitoring-error-report (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-error-report). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L175 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","monitoring","report","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"13cc1e8f0e62bc29eb874c628c2bea30950b100bd08a3919e4ff3043beb4491f","sources":[{"repo":"ghashtag/t27","path":"specs/auth/config.t27","health":"ok","module":"AuthConfig"}],"description":"specs/auth/config.t27 Authentication Configuration Storage","symbols":[{"name":"AuthType","line":14},{"name":"Oauth","line":25},{"name":"Api","line":39},{"name":"WellKnown","line":49},{"name":"Info","line":60},{"name":"get","line":67},{"name":"all","line":72},{"name":"set","line":77},{"name":"remove","line":82},{"name":"exists","line":87},{"name":"clear","line":92},{"name":"AuthConfigError","line":101},{"name":"to_oauth","line":111},{"name":"to_api","line":116},{"name":"to_well_known","line":121},{"name":"from_oauth","line":126},{"name":"from_api","line":131},{"name":"from_well_known","line":136},{"name":"get_type","line":141},{"name":"PROVIDER_OPENCODE","line":149},{"name":"PROVIDER_ANTHROPIC","line":150},{"name":"PROVIDER_OPENAI","line":151},{"name":"PROVIDER_GOOGLE","line":152},{"name":"PROVIDER_GOOGLE_VERTEX","line":153},{"name":"PROVIDER_GITHUB_COPILOT","line":154},{"name":"PROVIDER_AMAZON_BEDROCK","line":155},{"name":"PROVIDER_AZURE","line":156},{"name":"PROVIDER_OPENROUTER","line":157},{"name":"PROVIDER_MISTRAL","line":158},{"name":"PROVIDER_GITLAB","line":159}],"imports":[{"name":"base::types","line":6},{"name":"account::schema","line":7}],"terms":["auth","config","oauth","api","well","known","info","get","set","remove","exists","clear","provider","opencode","anthropic","openai","google","vertex","copilot","amazon","bedrock","azure","openrouter","mistral","gitlab"]},{"id":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf128.t27","health":"ok","module":"GF128"}],"description":"t27/specs/numeric/gf128.t27 GoldenFloat128 - 128-bit φ-structured floating point with extended range NUMERIC-STANDARD-001 Agent 5 (P1) Paper §6.7: Extended range for high-dynamic-range applications","symbols":[{"name":"BITS","line":25},{"name":"SIGN_BITS","line":26},{"name":"EXP_BITS","line":27},{"name":"MANT_BITS","line":28},{"name":"EXP_BIAS","line":31},{"name":"PHI_DISTANCE","line":34},{"name":"GF128","line":38},{"name":"encode","line":46},{"name":"sign","line":51},{"name":"abs_val","line":52},{"name":"exp_unbiased","line":55},{"name":"exp_biased","line":56},{"name":"exp_clamped","line":59},{"name":"mant_low","line":62},{"name":"mant_high","line":63},{"name":"decode","line":72},{"name":"sign","line":73},{"name":"exp_biased","line":74},{"name":"exp_unbiased","line":82},{"name":"mant_low","line":89},{"name":"mant_high","line":90},{"name":"mant_normalized","line":92},{"name":"value","line":98},{"name":"max_value","line":108},{"name":"mant_max","line":110},{"name":"exp_max","line":111},{"name":"min_positive","line":115},{"name":"mant_min","line":117},{"name":"exp_min","line":118},{"name":"epsilon","line":122},{"name":"dynamic_range","line":127},{"name":"validate_format","line":134},{"name":"fmt","line":135},{"name":"is_extended_range","line":142},{"name":"MEMORY_RATIO_VS_FP32","line":156},{"name":"floor_log2_128","line":160},{"name":"extract_mantissa_128_low","line":174},{"name":"normalized","line":176},{"name":"frac","line":177},{"name":"mant_full","line":178},{"name":"extract_mantissa_128_high","line":182},{"name":"normalized","line":184},{"name":"frac","line":185},{"name":"mant_full","line":186},{"name":"mant_to_f64_128","line":190},{"name":"mant_u128","line":191},{"name":"pow2_128","line":195}],"imports":[{"name":"numeric::goldenfloat_family","line":9},{"name":"numeric::phi_ratio","line":10},{"name":"base::testing","line":13},{"name":"base::benchmarking","line":14}],"terms":["euler","fpga","gf128","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","low","high","decode","normalized","max","min","positive","epsilon","dynamic","range","validate","format","fmt","extended","memory","ratio","fp32","floor","log2","extract","mantissa","frac","full","f64","u128","pow2"]},{"id":"1528f6decbd9543f2abdb2d2fbccc9c62989e3cd44ba7b938bef838549398d86","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/queue.t27","health":"ok","module":"TriQueue"}],"description":"t27/specs/","symbols":[{"name":"Queue","line":13},{"name":"empty","line":23},{"name":"enqueue","line":28},{"name":"dequeue","line":33},{"name":"peek","line":38},{"name":"is_empty","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","queue","empty","enqueue","dequeue","peek"]},{"id":"157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_queue.t27","health":"ok","module":"PacketQueue"}],"description":"Packet queue - all inline, no intermediate variables","symbols":[{"name":"QUEUE_SIZE","line":6},{"name":"get_count","line":8},{"name":"is_full","line":12},{"name":"is_empty","line":16},{"name":"increment_index","line":20},{"name":"enqueue","line":28},{"name":"dequeue","line":39},{"name":"size","line":50},{"name":"clear","line":54}],"imports":[{"name":"base::types","line":4}],"terms":["net","packet","queue","size","get","count","full","empty","increment","index","enqueue","dequeue","clear"]},{"id":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cache_management.t27","health":"ok","module":"cache_management"}],"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","symbols":[{"name":"MAX_ENTRIES","line":7},{"name":"MAX_CACHE_SIZE","line":8},{"name":"CACHE_HIT_THRESHOLD","line":9},{"name":"EVICTION_AGE","line":10},{"name":"create_cache_entry","line":13},{"name":"get_data_id","line":20},{"name":"get_access_count","line":24},{"name":"get_age","line":28},{"name":"get_entry_size","line":32},{"name":"update_access_count","line":37},{"name":"update_age","line":51},{"name":"find_entry","line":60},{"name":"cache_hit","line":75},{"name":"get_entry","line":86},{"name":"add_entry","line":97},{"name":"find_eviction_candidate","line":141},{"name":"remove_entry","line":172},{"name":"access_cache","line":185},{"name":"age_cache","line":199},{"name":"calculate_hit_rate","line":215},{"name":"calculate_utilization","line":224},{"name":"find_most_popular","line":229},{"name":"find_least_popular","line":249},{"name":"should_prefetch","line":271},{"name":"calculate_efficiency","line":293},{"name":"create_cache_stats","line":306},{"name":"get_hits","line":313},{"name":"get_misses","line":317},{"name":"get_cache_size","line":321},{"name":"get_evictions","line":325},{"name":"update_stats","line":330}],"imports":[{"name":"base::types","line":5}],"terms":["net","cache","management","max","entries","size","hit","threshold","eviction","age","create","entry","get","data","access","count","find","candidate","remove","calculate","rate","utilization","most","popular","least","prefetch","efficiency","stats","hits","misses","evictions"]},{"id":"15cdaa34d26745d08ad6a1a27fa1686346285adcfb53a62632a0a3af31100ab6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0012_statement_clauses.t27","health":"ok","module":"m"}],"description":"","symbols":[{"name":"h","line":4},{"name":"c","line":9}],"imports":[],"terms":["bootstrap","goldring","statement","clauses"]},{"id":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/posit16.t27","health":"warn","module":"triformat-posit16"}],"description":"posit16.t27 — Posit Type 16 (Type-2 with ES=1, unum 1.0 format) 16-bit posit format with 1 exponent bit (ES=1) and 0 useed bits Alternative name: posit<16,1> Range: ~-3.8e4 to ~3.8e4, precision: ~1-2 significant bits at extremes, ~10 at 1.0","symbols":[{"name":"BITS","line":14},{"name":"ES","line":15},{"name":"NBITS","line":16},{"name":"USEED_BITS","line":17},{"name":"SIGN_SHIFT","line":19},{"name":"REGIME_SHIFT","line":20},{"name":"SIGN_MASK","line":22},{"name":"REGIME_MASK","line":23},{"name":"POS16_ZERO","line":26},{"name":"POS16_NAR","line":27},{"name":"MAX_REGIME","line":30},{"name":"Posit16","line":36},{"name":"PositComponents","line":39},{"name":"posit16_extract_regime","line":54},{"name":"bit","line":63},{"name":"posit16_extract_exponent","line":77},{"name":"bit","line":85},{"name":"exponent_bit","line":94},{"name":"posit16_extract_fraction","line":104},{"name":"bit","line":112},{"name":"skip_bits","line":121},{"name":"fraction_bits","line":122},{"name":"posit16_extract_sign","line":135},{"name":"posit16_extract_components","line":141},{"name":"sign","line":142},{"name":"regime","line":143},{"name":"exponent","line":144},{"name":"fraction","line":145},{"name":"useed_exp","line":149},{"name":"useed","line":150},{"name":"scale","line":151},{"name":"posit16_is_zero","line":168},{"name":"posit16_is_nar","line":174},{"name":"posit16_is_special","line":180},{"name":"posit16_is_finite","line":186},{"name":"posit16_encode_f32","line":196},{"name":"is_negative","line":213},{"name":"abs_value","line":214},{"name":"value_f64","line":217},{"name":"useed","line":220},{"name":"log2_val","line":223},{"name":"fraction_bits","line":246},{"name":"regime_bits_remaining","line":271},{"name":"regime_start","line":276},{"name":"one_pos","line":286},{"name":"exp_pos","line":294},{"name":"fraction_pos","line":301},{"name":"posit16_decode_f32","line":311},{"name":"comps","line":323},{"name":"useed","line":327},{"name":"scale_value","line":328},{"name":"fraction_bits","line":331},{"name":"fraction_value","line":332},{"name":"magnitude","line":337},{"name":"posit16_encode_f64","line":344},{"name":"posit16_decode_f64","line":350},{"name":"f32_val","line":351},{"name":"posit16_add","line":361},{"name":"fa","line":372},{"name":"fb","line":373},{"name":"posit16_sub","line":379},{"name":"fa","line":384},{"name":"fb","line":385},{"name":"posit16_mul","line":391},{"name":"fa","line":399},{"name":"fb","line":400},{"name":"posit16_div","line":406},{"name":"fa","line":417},{"name":"fb","line":418},{"name":"posit16_abs","line":424},{"name":"posit16_neg","line":430},{"name":"posit16_is_equal","line":436},{"name":"posit16_is_greater","line":448},{"name":"sign_a","line":452},{"name":"sign_b","line":453},{"name":"posit16_max","line":466},{"name":"posit16_min","line":472},{"name":"posit16_sqrt","line":478},{"name":"fv","line":489},{"name":"posit16_lerp","line":495},{"name":"fa","line":496},{"name":"fb","line":497},{"name":"result","line":498},{"name":"posit16_scale","line":504},{"name":"fv","line":505},{"name":"posit16_relu","line":511},{"name":"posit16_sigmoid","line":517},{"name":"fv","line":518},{"name":"posit16_quantize_to_int4","line":524},{"name":"fv","line":525},{"name":"max_range","line":526},{"name":"scaled","line":527},{"name":"posit16_from_f32_scaled","line":539},{"name":"posit16_to_f32_scaled","line":545},{"name":"posit16_dot_product","line":551},{"name":"fa","line":555},{"name":"fb","line":556},{"name":"posit16_vector_sum","line":564},{"name":"posit16_vector_mean","line":574},{"name":"sum","line":578}],"imports":[],"terms":["euler","fpga","posit16","triformat","bits","nbits","useed","sign","shift","regime","mask","pos16","zero","nar","max","posit","components","extract","bit","exponent","fraction","skip","exp","scale","special","finite","encode","f32","negative","abs","f64","log2","val","remaining","start","one","pos","decode","comps","magnitude","sub","mul","div","neg","equal","greater","min","sqrt","lerp","relu","sigmoid","quantize","int4","range","scaled","dot","product","vector","sum","mean"]},{"id":"163456bf9900804666e0f1f53bb7ca1bc76faa89f27e30bf34ca869f8388ea98","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/mutate.t27","health":"ok","module":"tool_tri_mutate"}],"description":"specs/tools/tri/mutate.t27 -- tool tri/mutate, the `tri mutate` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/mutate). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["mutate","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"1666853e3ab9026fdff4b541a9d0654d0eb2a6c2cd6cb1062b577ff94415e6a4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/wide_rung_commutativity.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","wide","rung","commutativity"]},{"id":"16699964584ead70d3dbb826461d125b1276151999c9c80699bd8e5e33d7db44","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/r_mulassign.t27","health":"warn","module":"R2"}],"description":"","symbols":[{"name":"f","line":2}],"imports":[],"terms":["bootstrap","goldring","mulassign"]},{"id":"16ea516e67cf93e24863ebb8aabc61ac3bc67fed76d94a228f947258b5296f55","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/types.t27","health":"ok","module":"tool_tri_types"}],"description":"specs/tools/tri/types.t27 -- tool tri/types, the `tri types` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/types). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-duet.t27","health":"ok","module":"automation"}],"description":"specs/automation/crm-duet.t27 -- a REAL Telegram dialogue between two agents: the owner's seller agent (from @t27_dev, 144022504) sells every function of the bot to a connected seller acting as a new buyer (@playom, 435572800, answered by a persona model from HER session), and the content offered is for HER real game -- Leela Chakra (@leela_chakra_ai_bot, mini app t27.ai/leela, 72 planes, entry with a six, ruleset classic). Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-duet-tool.ts -- owner-only","symbols":[{"name":"KIND","line":33},{"name":"ID","line":34},{"name":"REPO","line":35},{"name":"VERSION","line":36},{"name":"SELLER","line":39},{"name":"BUYER","line":40},{"name":"BUYER_GAME","line":41},{"name":"BUYER_BOT","line":42},{"name":"BUYER_APP","line":43},{"name":"LEELA_PLANES","line":44},{"name":"LEELA_RULESET","line":45},{"name":"TOOL_START","line":48},{"name":"TOOL_STATUS","line":49},{"name":"TOOL_CALLER","line":50},{"name":"BUYER_MUST_BE_SELLER","line":51},{"name":"BUYER_MAY_BE_OWNER","line":52},{"name":"RUNS_IN_BACKGROUND","line":53},{"name":"TURNS_DEFAULT","line":54},{"name":"TURNS_MAX","line":55},{"name":"SELLER_SPEAKS_FIRST","line":56},{"name":"SELLER_SURFACE","line":57},{"name":"BUYER_TURN_IS_PLAIN_COMPLETION","line":58},{"name":"DRY_RUN_SENDS","line":59},{"name":"REPORT_TO_OWNER_SAVED","line":60},{"name":"RETURNS_SESSION","line":61},{"name":"BUSINESS_BOT_TAKEOVER_MIN","line":64},{"name":"PAID_TOOLS","line":67},{"name":"PAID_PER_REPLY_SOFT","line":68},{"name":"PAID_PER_RUN_SOFT","line":69},{"name":"PAID_CAP_IS_HARD","line":70},{"name":"MEDIA_FORWARDED","line":71},{"name":"CLAIMED_WORK_NEEDS_TOOL","line":79},{"name":"CLAIM_CHECK_CORRECTIONS","line":80},{"name":"CLAIM_MISS_IS_VIOLATION","line":81},{"name":"ABORTED_RUN_STATE","line":88},{"name":"ABORTED_RUN_KEEPS_ERROR","line":89},{"name":"DONE_MEANS_ALL_LINES","line":90},{"name":"RUN_ERROR_SHOWN_ON_DASHBOARD","line":91},{"name":"SELLER_RETRY_ON_LIMIT","line":100},{"name":"SELLER_RETRY_PAUSE_MS","line":101},{"name":"RETRY_ONLY_WITHOUT_PAID_CALL","line":102},{"name":"RETRY_NOTED_IN_TRANSCRIPT","line":103},{"name":"LIMIT_MARKERS","line":104},{"name":"LIMIT_MARKER_RU_DIAGNOSE","line":105},{"name":"DISCOVERY_SELLER_TURNS","line":115},{"name":"DISCOVERY_HIDES_PAID_TOOLS","line":116},{"name":"DISCOVERY_REFUSES_PAID_CALL","line":117},{"name":"FAMILIARITY_MARKERS_RU","line":118},{"name":"FAMILIARITY_CORRECTIONS","line":119},{"name":"FAMILIARITY_MISS_IS_VIOLATION","line":120},{"name":"SELLER_GENDER","line":126},{"name":"SELLER_GENDER_IN_BRIEF","line":127},{"name":"GENDER_SLIP_IS_FLAG_ONLY","line":128},{"name":"CLAIM_NEGATION_EXEMPT","line":137},{"name":"NEGATION_WINDOW_WORDS","line":138},{"name":"PRESSURE_NEGATION_EXEMPT","line":139},{"name":"HOOK_NE_SLUCHAJNO_FORBIDDEN_IN_BRIEF","line":140},{"name":"DRY_RUN_SEEN_LIVE","line":143},{"name":"RUN_KILLED_BY_REDEPLOY_SEEN","line":144},{"name":"FAILED_STATE_SEEN_LIVE","line":145},{"name":"CLAIM_CHECK_SEEN_LIVE","line":146},{"name":"RETRY_SEEN_LIVE","line":147},{"name":"FULL_DRY_RUN_SEEN_LIVE","line":148},{"name":"DISCOVERY_GATE_SEEN_LIVE","line":153},{"name":"DISCOVERY_GATE_LIVE_RUN","line":154},{"name":"FAMILIARITY_REWRITE_SEEN_LIVE","line":155},{"name":"SELLER_GENDER_FIXED_SEEN_LIVE","line":156},{"name":"DRY_RUN_DELIVERY_CLAIM_SEEN","line":159},{"name":"DRY_RUN_DELIVERY_CLAIM_FIXED","line":160},{"name":"DUET_RAN_LIVE","line":163},{"name":"Turn","line":165},{"name":"speaker_at","line":171},{"name":"business_bot_silent","line":175},{"name":"state_after","line":208},{"name":"retry_allowed","line":217},{"name":"paid_tool_offered","line":222},{"name":"claim_hit_counts","line":228},{"name":"claim_is_honest","line":233}],"imports":[],"terms":["automation","crm","duet","kind","seller","buyer","game","bot","leela","planes","ruleset","tool","start","status","caller","may","owner","runs","background","turns","default","max","speaks","surface","turn","plain","completion","dry","sends","report","saved","returns","session","business","takeover","min","paid","per","reply","soft","cap","hard","media","forwarded","claimed","work","claim","corrections","miss","violation","aborted","state","keeps","done","means","shown","dashboard","retry","limit","pause","call","noted","transcript","markers","marker","diagnose","discovery","hides","refuses","familiarity","gender","brief","slip","flag","negation","exempt","window","words","pressure","hook","sluchajno","forbidden","seen","live","killed","redeploy","failed","full","gate","rewrite","fixed","delivery","ran","speaker","silent","allowed","offered","hit","counts","honest"]},{"id":"17501497f6580c8f2cc5304a94838fbae23c56b4336b3ab36a1d4f67e80e2f5a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_security.t27","health":"ok","module":"RTISecurity"}],"description":"RTI Security — passive perimeter monitoring via mesh RSSI Variant C: commercial security system, no cameras, AI classification phi^2 + phi^-2 = 3","symbols":[{"name":"MAX_ZONES","line":9},{"name":"ZONE_GRID","line":10},{"name":"ALERT_COOLDOWN_MS","line":11},{"name":"SENSITIVITY_LOW","line":12},{"name":"SENSITIVITY_MEDIUM","line":13},{"name":"SENSITIVITY_HIGH","line":14},{"name":"ALERT_NONE","line":17},{"name":"ALERT_INFO","line":18},{"name":"ALERT_WARNING","line":19},{"name":"ALERT_CRITICAL","line":20},{"name":"ALERT_TEST","line":21},{"name":"ALERT_ENTRY_SIZE","line":25},{"name":"ZONE_DEF_SIZE","line":29},{"name":"alert_threshold","line":35},{"name":"classify_alert","line":55},{"name":"in_cooldown","line":70},{"name":"should_suppress","line":75},{"name":"zone_from_coord","line":88},{"name":"in_zone","line":98},{"name":"threat_score","line":115},{"name":"should_escalate","line":126},{"name":"is_night_time","line":134},{"name":"notification_priority","line":145}],"imports":[{"name":"base::types","line":6}],"terms":["net","rti","security","rtisecurity","max","zones","zone","grid","alert","cooldown","sensitivity","low","medium","high","info","warning","critical","entry","size","def","threshold","classify","suppress","coord","threat","score","escalate","night","time","notification","priority"]},{"id":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf17.t27","health":"ok","module":"TNF17"}],"description":"t27/specs/numeric/tnf17.t27 TNF17e -- Ternary Network Float, the signed accumulator format. WHY THIS EXISTS. Measured 2026-08-13: the string \"TNF\" appears in ZERO of the 1,064 .t27 specs. It has a 2,353-line article (docs/theory/TNF_ARTICLE_RU.md), a dedicated skill, and an erratum -- and no implementation. This file is the first one.","symbols":[{"name":"TNF_MANT_BITS","line":44},{"name":"TNF_MANT_ONE","line":45},{"name":"TNF_MANT_MASK","line":46},{"name":"TNF_OFFSET_BITS","line":47},{"name":"TNF_BIAS","line":48},{"name":"TNF_OFFSET_MAX","line":49},{"name":"TNF_TRITS","line":50},{"name":"TNF_EXP_STEPS","line":51},{"name":"TNF_WIDTH","line":52},{"name":"TNF_SIGN_SHIFT","line":55},{"name":"TNF_OFF_SHIFT","line":56},{"name":"TNF_ONE","line":60},{"name":"TNF_MINUS_ONE","line":61},{"name":"TNF_TWO","line":63},{"name":"tnf_sign","line":66},{"name":"tnf_offset","line":70},{"name":"tnf_mant","line":74},{"name":"tnf_exponent","line":79},{"name":"tnf_pack","line":83},{"name":"tnf_negate","line":88},{"name":"tnf_abs","line":92},{"name":"tnf_is_negative","line":96},{"name":"digit0","line":119},{"name":"digit1","line":123},{"name":"digit2","line":127},{"name":"digit3","line":131},{"name":"trit0","line":135},{"name":"trit1","line":139},{"name":"trit2","line":143},{"name":"trit3","line":147},{"name":"trits_to_exponent","line":153},{"name":"on_comb","line":161}],"imports":[{"name":"base::types","line":41}],"terms":["numeric","tnf17","tnf","mant","bits","one","mask","offset","bias","max","trits","exp","steps","width","sign","shift","off","minus","two","exponent","pack","negate","abs","negative","digit0","digit1","digit2","digit3","trit0","trit1","trit2","trit3","comb"]},{"id":"177ea00fa0a01d842b927273c9a7226772e4bdf0cf39ca8065ee3304b1e1ea4c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf8.t27","health":"ok","module":"triformat_tnf8"}],"description":"tnf8.t27 -- TNF8: Ternary Network Float, 8-bit class. Rung of the TF ladder (TF4/8/16/32). Balanced-ternary exponent = 3 trits (3^3 = 27 offsets, exponent +-13, ~8 decades), phi-ish 4-bit mantissa, NO regime decode. Beats tekum-8 by the same structural argument as TF16 beats tekum16: fixed fields + native balanced-ternary exponent add, uniform mantissa. layout: [ sign(1) | E = 3 balanced-ternary trits | M = 4 bits ]","symbols":[{"name":"EXP_TRITS","line":13},{"name":"MANT_BITS","line":14},{"name":"EXP_OFFSET","line":15},{"name":"OFFSET_MAX","line":16},{"name":"exp_offset","line":19},{"name":"is_finite","line":23},{"name":"exp_values","line":27}],"imports":[{"name":"base::types","line":11}],"terms":["numeric","tnf8","triformat","exp","trits","mant","bits","offset","max","finite","values"]},{"id":"179cd63eb41991497c2b1624ff8750a9c3665a7771e43ac90c432595217c41f7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async.t27","health":"ok","module":"TriAsync"}],"description":"t27/specs/","symbols":[{"name":"Future","line":13},{"name":"Promise","line":18},{"name":"new_promise","line":28},{"name":"fulfill","line":33},{"name":"await","line":38},{"name":"map","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","async","future","promise","fulfill","await","map"]},{"id":"17c60a99b292d30a67a6c772d5960a3524bca0ffc13f40fb84b9fc7e2c7eae3c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/cloud_orchestrator.t27","health":"ok","module":"CloudOrchestrator"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","cloud","orchestrator"]},{"id":"17e2121ad5a409fe247a3829ab0c46936fd4e374eb6cccc220a6c45311ca419c","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_nll.t27","health":"warn","module":"GftNll"}],"description":"","symbols":[{"name":"asr9","line":15},{"name":"log2_frac","line":20},{"name":"encode","line":31},{"name":"log2v","line":75},{"name":"neg","line":87},{"name":"on_comb","line":92}],"imports":[],"terms":["ternary","gft","nll","asr9","log2","frac","encode","log2v","neg","comb"]},{"id":"17e6e2ecc22a850b5c3d8e109e76dacf40825b8d718a19c1cfd25a608c6570ae","sources":[{"repo":"ghashtag/t27","path":"specs/brain/neural_gamma.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"ConsciousnessState","line":39}],"imports":[],"terms":["brain","neural","gamma","consciousness","state"]},{"id":"1808c4120ee9ecc32b7995853c248d3e57fe16dfeb8e5e97c197ba0160519b2f","sources":[{"repo":"ghashtag/t27","path":"specs/physics/e8_lqg_bridge.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"roots","line":94},{"name":"params","line":101},{"name":"V","line":102},{"name":"root","line":107},{"name":"proj","line":108}],"imports":[],"terms":["physics","lqg","bridge","roots","params","root","proj"]},{"id":"18757d291f23108eb05b89195d374e3a35643ed0d74c57a9caf8d05cc918a7f8","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/memory_tb.t27","health":"ok","module":"Memory_Testbench"}],"description":"t27/specs/fpga/testbench/memory_tb.t27 Memory Subsystem Testbench Tests BRAM, register file, and memory-mapped I/O operations","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"MEM_BASE","line":12},{"name":"MEM_SIZE","line":13},{"name":"tick","line":28},{"name":"reset","line":33},{"name":"mem_write","line":41},{"name":"mem_read","line":51},{"name":"on_comb","line":149}],"imports":[{"name":"fpga::memory::Memory","line":8}],"terms":["fpga","testbench","memory","clk","period","sim","timeout","mem","base","size","tick","reset","write","read","comb"]},{"id":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hello.t27","health":"ok","module":"MeshHello"}],"description":"HELLO beacon format for mesh neighbor discovery Port from trios-mesh/src/discovery.rs Fixed 3-neighbor heard list (no Vec, arrays await t27#1258)","symbols":[{"name":"MAX_HEARD","line":9},{"name":"HEADER_LEN","line":10},{"name":"u32_byte","line":15},{"name":"hello_byte","line":29},{"name":"u32_from_bytes","line":47},{"name":"parse_hello_src","line":52},{"name":"parse_hello_seq","line":57},{"name":"parse_hello_n_valid","line":62},{"name":"parse_hello_heard0","line":71},{"name":"reports_hearing","line":78}],"imports":[{"name":"base::types","line":6}],"terms":["net","hello","mesh","max","heard","header","len","u32","byte","bytes","parse","seq","valid","heard0","reports","hearing"]},{"id":"189991c3d70f34e820450087b50a7d572be1baa821137533ee3c56b0aee57145","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/swarm_agents.t27","health":"warn","module":"SwarmAgents"}],"description":"t27/specs/","symbols":[{"name":"AgentType","line":13},{"name":"AgentStatus","line":17},{"name":"Agent","line":21},{"name":"Task","line":32},{"name":"TaskStatus","line":41},{"name":"SwarmState","line":45},{"name":"CoordinationMode","line":56},{"name":"ConsensusProposal","line":60},{"name":"Vote","line":70},{"name":"ConsensusStatus","line":78},{"name":"SwarmHarmonyMetrics","line":82},{"name":"AgentCommunication","line":90},{"name":"MessageType","line":99},{"name":"SacredPattern","line":103},{"name":"TaskResult","line":113},{"name":"SacredFormula","line":120}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["swarm","agents","status","state","coordination","mode","consensus","proposal","vote","harmony","metrics","communication","sacred","pattern","formula"]},{"id":"18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/energy_aware_routing.t27","health":"warn","module":"EnergyAwareRouting"}],"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","symbols":[{"name":"MAX_PATHS","line":7},{"name":"BATTERY_WEIGHT","line":8},{"name":"HOP_WEIGHT","line":9},{"name":"CRITICAL_BATTERY","line":10},{"name":"create_energy_cost","line":13},{"name":"get_tx_power","line":20},{"name":"get_rx_power","line":24},{"name":"get_processing_cost","line":28},{"name":"get_hop_count_cost","line":32},{"name":"create_path_energy","line":37},{"name":"get_battery_levels","line":44},{"name":"get_total_cost","line":48},{"name":"get_path_valid","line":52},{"name":"get_energy_score","line":56},{"name":"create_energy_array","line":63},{"name":"get_path_energy","line":67},{"name":"calculate_total_energy_cost","line":75},{"name":"calculate_energy_score","line":87},{"name":"is_path_viable","line":102},{"name":"find_energy_optimal_path","line":110},{"name":"find_min_cost_path","line":150},{"name":"select_balanced_path","line":190},{"name":"estimate_path_lifetime","line":231}],"imports":[{"name":"base::types","line":5}],"terms":["net","energy","aware","routing","max","paths","battery","weight","hop","critical","create","cost","get","power","processing","count","path","levels","total","valid","score","array","calculate","viable","find","optimal","min","select","balanced","estimate","lifetime"]},{"id":"18e4d3de481682bb89ef06cca09a13dab14b2e9e5b2faf1de33c0e402b19fe76","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json_writer.t27","health":"warn","module":"TrinityMemoryJsonWriter"}],"description":"Shared bounded JSON writer. Include generated json.h before this header. No heap, no implicit NUL terminator. Check error==0 before using output. Errors are sticky; a failed compound write may leave an incomplete prefix.","symbols":[{"name":"TMJsonWriter","line":5},{"name":"tm_json_writer_init","line":6},{"name":"tm_json_write_byte","line":9},{"name":"tm_json_write_bytes","line":14},{"name":"tm_json_write_u64","line":21},{"name":"tm_json_write_i64","line":33},{"name":"tm_json_write_bool","line":43},{"name":"tm_json_write_null","line":53},{"name":"tm_json_write_quoted","line":57},{"name":"tm_json_write_f64","line":105},{"name":"tm_json_write_tree_inner","line":117},{"name":"tm_json_write_tree","line":163}],"imports":[],"terms":["dmitrii","memory","json","writer","tmjson","init","write","byte","bytes","u64","i64","null","quoted","f64","tree","inner"]},{"id":"18ef09e675426f4fec4d5ac12678b1b5fe9670cd4cd366de0288d21ce46c9ae1","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum.t27","health":"ok","module":"TriQuantum"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","quantum"]},{"id":"1916b5ef79c7a277691bd89e85161a6c6eeb4496115c875708303ec88cf39bbe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_clip_loss.t27","health":"ok","module":"PpoClipLoss"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_CLIP_EPSILON","line":13},{"name":"DEFAULT_ENTROPY_COEF","line":14},{"name":"PPOClipConfig","line":20},{"name":"PPOBatch","line":26},{"name":"compute_ratio","line":40},{"name":"clipped_surrogate","line":45},{"name":"policy_loss","line":50},{"name":"entropy_loss","line":55},{"name":"value_loss","line":60},{"name":"total_loss","line":65}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["ppo","clip","loss","default","epsilon","entropy","coef","ppoclip","config","ppobatch","compute","ratio","clipped","surrogate","policy","total"]},{"id":"1954284a2f9b5b29dff46df7365664c2337d70054c222bb69019dffeb8631f98","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/lane_l_precheck.t27","health":"warn","module":"sacred-lane_precheck"}],"description":"lane_l_precheck.t27 — Sacred Opcode 0xDF: LUT Lookup Precheck Hardware pre-check for LUT lookup operations Validates lane readiness, checks LUT access permissions, and prepares address","symbols":[{"name":"OP_LUT_LOOKUP","line":13},{"name":"LANE_COUNT","line":15},{"name":"LUT_DEPTH","line":16},{"name":"LUT_ADDR_BITS","line":17},{"name":"LANE_ID_BITS","line":18},{"name":"LANE_IDLE","line":20},{"name":"LANE_READY","line":21},{"name":"LANE_BUSY","line":22},{"name":"LANE_ERROR","line":23},{"name":"CHECK_PASS","line":25},{"name":"CHECK_FAIL","line":26},{"name":"LaneStatus","line":32},{"name":"PrecheckFlags","line":39},{"name":"PrecheckResult","line":47},{"name":"LaneConfig","line":55},{"name":"lane_is_valid","line":68},{"name":"lane_is_ready","line":74},{"name":"lane_is_busy","line":80},{"name":"lane_is_error","line":86},{"name":"lane_is_idle","line":92},{"name":"precheck_lane","line":102},{"name":"precheck_all_lanes","line":138},{"name":"precheck_pass","line":158},{"name":"precheck_fail","line":164},{"name":"precheck_any_pass","line":170},{"name":"precheck_all_pass","line":181},{"name":"precheck_count_passed","line":192},{"name":"precheck_get_ready_lanes","line":204},{"name":"lut_address_valid","line":220},{"name":"lut_address_masked","line":232},{"name":"lut_address_offset","line":238},{"name":"encode_lut_lookup","line":251},{"name":"op","line":253},{"name":"lane","line":254},{"name":"addr","line":255},{"name":"decode_lut_lookup","line":261},{"name":"lane_bits","line":262},{"name":"lut_addr","line":263}],"imports":[],"terms":["euler","fpga","lane","precheck","sacred","lut","lookup","count","depth","addr","bits","idle","ready","busy","pass","fail","status","flags","config","valid","lanes","passed","get","address","masked","offset","encode","decode"]},{"id":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_profiler.t27","health":"warn","module":"performance_profiler"}],"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"MAX_FUNCTIONS","line":8},{"name":"PROFILING_INTERVAL_MS","line":9},{"name":"OVERHEAD_THRESHOLD","line":10},{"name":"create_perf_sample","line":13},{"name":"get_sample_function_id","line":20},{"name":"get_sample_cpu","line":24},{"name":"get_sample_memory","line":28},{"name":"get_sample_timestamp","line":32},{"name":"create_function_profile","line":37},{"name":"get_profile_function_id","line":43},{"name":"get_profile_call_count","line":47},{"name":"get_profile_total_cpu","line":51},{"name":"create_hotspot","line":56},{"name":"get_hotspot_function_id","line":63},{"name":"get_hotspot_score","line":67},{"name":"get_hotspot_rank","line":71},{"name":"get_hotspot_impact","line":75},{"name":"calculate_average_cpu","line":80},{"name":"calculate_average_memory","line":101},{"name":"identify_hotspots","line":122},{"name":"calculate_profiling_overhead","line":151},{"name":"is_overhead_acceptable","line":163},{"name":"create_allocation","line":172},{"name":"get_allocation_id","line":179},{"name":"get_allocation_size","line":183},{"name":"get_allocation_lifetime","line":187},{"name":"get_allocation_pool","line":191},{"name":"track_allocation","line":196},{"name":"calculate_total_memory","line":210},{"name":"detect_memory_leak","line":224},{"name":"create_call_stack_entry","line":238},{"name":"get_stack_depth","line":245},{"name":"get_stack_function_id","line":249},{"name":"get_stack_parent_id","line":253},{"name":"get_stack_cpu_contribution","line":257},{"name":"analyze_call_tree","line":262},{"name":"create_performance_report","line":291},{"name":"get_report_total_cpu","line":298},{"name":"get_report_total_memory","line":302},{"name":"get_report_hotspot_count","line":306},{"name":"get_report_overhead","line":310},{"name":"generate_recommendations","line":315},{"name":"calculate_improvement_opportunity","line":345}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","performance","profiler","max","samples","functions","profiling","interval","overhead","threshold","create","perf","sample","get","cpu","memory","timestamp","profile","call","count","total","hotspot","score","rank","impact","calculate","average","identify","hotspots","acceptable","allocation","size","lifetime","pool","track","detect","leak","stack","entry","depth","parent","contribution","analyze","tree","report","generate","recommendations","improvement","opportunity"]},{"id":"19b5ab5a4430be22ca924c05a3bb6928960a3b3ef38b802a6e4a4bd752b2ad05","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/attention.t27","health":"warn","module":"attention"}],"description":"","symbols":[],"imports":[],"terms":["fpga","attention"]},{"id":"19dba96ffef309c75a31bc54d282f25026afa8beeb3a6f97600946700a5f74db","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-phi-loop.t27","health":"ok","module":"skill_t27_phi_loop"}],"description":"specs/skills/t27-phi-loop.t27 -- skill t27/phi-loop Source of truth for the skill card on t27.ai (#/skills?skill=t27/phi-loop). The skill body lives in gHashTag/t27 at .claude/skills/phi-loop/SKILL.md (vendored copy: apps/website/public/skills/files/t27/phi-loop/SKILL.md, sha256 d8af7f6a9cbc...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","phi","loop","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"1a01df4f397fe76552d278be19fd778995522fe45e9971a0ad8a017b723ca446","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/worktrees.t27","health":"ok","module":"tool_tri_worktrees"}],"description":"specs/tools/tri/worktrees.t27 -- tool tri/worktrees, the `tri worktrees` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/worktrees). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["worktrees","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"1a85a9dca026c580cc5c892fb15f566c34f56077b1137b3aa84ffbbf8976f492","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf16_to_fp16.t27","health":"fail","module":"gf16-to-fp16"}],"description":"","symbols":[{"name":"GF16_SIGN_BITS","line":9},{"name":"GF16_EXP_BITS","line":10},{"name":"GF16_MANT_BITS","line":11},{"name":"GF16_BIAS","line":12},{"name":"FP16_SIGN_BITS","line":14},{"name":"FP16_EXP_BITS","line":15},{"name":"FP16_MANT_BITS","line":16},{"name":"FP16_BIAS","line":17},{"name":"MAX_EXP_DIFF","line":19},{"name":"MANTissa_MASK_GF16","line":20},{"name":"MANTissa_MASK_FP16","line":21},{"name":"Gf16","line":27},{"name":"Fp16","line":33},{"name":"ConversionResult","line":39},{"name":"ConversionConfig","line":46},{"name":"gf16_from_bits","line":58},{"name":"gf16_to_bits","line":68},{"name":"sign_field","line":69},{"name":"exp_field","line":70},{"name":"mant_field","line":71},{"name":"gf16_get_exp_biased","line":77},{"name":"gf16_is_zero","line":83},{"name":"gf16_is_infinity","line":89},{"name":"gf16_is_nan","line":95},{"name":"fp16_from_bits","line":105},{"name":"fp16_to_bits","line":115},{"name":"sign_field","line":116},{"name":"exp_field","line":117},{"name":"mant_field","line":118},{"name":"fp16_get_exp_biased","line":124},{"name":"fp16_is_zero","line":135},{"name":"fp16_is_infinity","line":141},{"name":"fp16_is_nan","line":147},{"name":"conversion_config_init","line":157},{"name":"conversion_config_no_saturation","line":167},{"name":"gf16_to_fp16_raw","line":181},{"name":"gf16_to_fp16_with_result","line":219},{"name":"gf16_to_fp16","line":281},{"name":"result","line":282},{"name":"gf16_bits_to_fp16_bits","line":288},{"name":"gf","line":289},{"name":"fp","line":290},{"name":"gf16_bits_to_fp16_bits_with_result","line":296},{"name":"gf","line":297}],"imports":[],"terms":["euler","fpga","gf16","fp16","sign","bits","exp","mant","bias","max","diff","mantissa","mask","conversion","config","field","get","biased","zero","infinity","nan","init","saturation","raw"]},{"id":"1a9efda5c73821e94c0d937d952ca5a2c0c235792b7674716943a5275c14a011","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async_stream.t27","health":"ok","module":"TriAsyncStream"}],"description":"t27/specs/","symbols":[{"name":"Stream","line":13},{"name":"StreamState","line":18},{"name":"from","line":27},{"name":"map","line":32},{"name":"filter","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","async","stream","state","map","filter"]},{"id":"1aa5ec92373f3a0a9df24da027b852896fc303ec4eb50e4ee780d9abdea5aced","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-discover-callers.t27","health":"ok","module":"cron_trinity_discover_callers"}],"description":"specs/crons/trinity-discover-callers.t27 -- cron github-actions/trinity/discover-callers Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/discover-callers). The schedule was read from trinity:.github/workflows/discover-callers.yml#L16. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","discover","callers","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"1abd9bd8ba36e27afc61193b4da5cee668fce6a890cc6b7b0c4d44bbe13be5a9","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/bench.t27","health":"ok","module":"tool_trinity_tri_bench"}],"description":"specs/tools/trinity/tri/bench.t27 -- tool gHashTag/trinity:tri/bench, the `tri bench` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/bench`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["bench","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"1af58fdf369f6cf43e32bdea2ee35559bc445e4f7cb27a7fcb00eeb780d83694","sources":[{"repo":"ghashtag/t27","path":"specs/rings/ring_103_phi_sgd.t27","health":"ok","module":"rings"}],"description":"t27/specs/rings/ring_103_phi_sgd.t27 Port of rings/ring-103-rust/src/lib.rs -- the phi-tempered SGD step.","symbols":[{"name":"PHI","line":9},{"name":"PHI_INV","line":10},{"name":"PHI_INV_F32","line":15},{"name":"DEFAULT_LR","line":18},{"name":"DEFAULT_CLIP","line":19},{"name":"clip_grad","line":24},{"name":"phi_sgd_update","line":39},{"name":"identity_witness","line":44}],"imports":[],"terms":["rings","ring","phi","sgd","inv","f32","default","clip","grad","identity","witness"]},{"id":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf16.t27","health":"ok","module":"triformat-gf16"}],"description":"gf16.t27 — GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"SPECIAL_EXP","line":25},{"name":"MANT_DIVISOR","line":27},{"name":"MANT_DIVISOR_SHIFT","line":28},{"name":"PHI_BIAS","line":30},{"name":"GF16_ZERO_POS","line":33},{"name":"GF16_ZERO_NEG","line":34},{"name":"GF16_INF_POS","line":35},{"name":"GF16_INF_NEG","line":36},{"name":"GF16_NAN","line":37},{"name":"GF16","line":43},{"name":"pow2_table","line":50},{"name":"gf16_extract_sign","line":64},{"name":"bit","line":65},{"name":"gf16_extract_exponent","line":72},{"name":"gf16_extract_mantissa","line":79},{"name":"gf16_from_components","line":85},{"name":"sign_bit","line":86},{"name":"gf16_is_zero","line":94},{"name":"gf16_is_special","line":100},{"name":"gf16_encode_f32","line":108},{"name":"sign","line":115},{"name":"abs_value","line":116},{"name":"f32_bits","line":119},{"name":"discarded","line":140},{"name":"gf16_decode_to_f32","line":156},{"name":"sign","line":159},{"name":"mant","line":165},{"name":"sign","line":166},{"name":"sign","line":177},{"name":"exp","line":178},{"name":"mant","line":179},{"name":"sign_mult","line":181},{"name":"mant_mult","line":182},{"name":"exp_mult","line":183},{"name":"gf16_round_phi","line":193},{"name":"sign","line":200},{"name":"abs_value","line":201},{"name":"f32_bits","line":204},{"name":"normalized_mant","line":219},{"name":"gf16_is_inf","line":239},{"name":"exp","line":240},{"name":"mant","line":241},{"name":"gf16_is_nan","line":247},{"name":"exp","line":248},{"name":"mant","line":249},{"name":"gf16_is_negative","line":255},{"name":"sign","line":256},{"name":"gf16_is_positive","line":262},{"name":"sign","line":263},{"name":"gf16_negate","line":269},{"name":"gf16_abs","line":275},{"name":"gf16_copy_sign","line":281},{"name":"sign_mask","line":282},{"name":"value_mask","line":283},{"name":"gf16_max","line":289},{"name":"a_val","line":293},{"name":"b_val","line":294},{"name":"gf16_min","line":301},{"name":"a_val","line":305},{"name":"b_val","line":306},{"name":"gf16_add","line":314},{"name":"a_sign","line":319},{"name":"b_sign","line":320},{"name":"a_val","line":326},{"name":"b_val","line":327},{"name":"result","line":328},{"name":"gf16_sub","line":336},{"name":"a_val","line":348},{"name":"b_val","line":349},{"name":"result","line":350},{"name":"gf16_mul","line":358},{"name":"a_sign","line":362},{"name":"b_sign","line":363},{"name":"result_sign","line":364},{"name":"a_sign","line":369},{"name":"b_sign","line":370},{"name":"result_sign","line":371},{"name":"a_val","line":375},{"name":"b_val","line":376},{"name":"result","line":377},{"name":"gf16_div","line":386},{"name":"a_sign","line":390},{"name":"a_sign","line":395},{"name":"b_sign","line":396},{"name":"result_sign","line":397},{"name":"a_sign","line":402},{"name":"b_sign","line":403},{"name":"result_sign","line":404},{"name":"a_val","line":408},{"name":"b_val","line":409},{"name":"result","line":410},{"name":"gf16_fma","line":418},{"name":"a_val","line":421},{"name":"b_val","line":422},{"name":"c_val","line":423},{"name":"product","line":431},{"name":"result","line":432},{"name":"gf16_sqrt","line":440},{"name":"a_val","line":447},{"name":"result","line":448},{"name":"gf16_square","line":456},{"name":"gf16_eq","line":463},{"name":"gf16_ne","line":473},{"name":"gf16_lt","line":480},{"name":"a_val","line":482},{"name":"b_val","line":483},{"name":"gf16_le","line":490},{"name":"a_val","line":492},{"name":"b_val","line":493},{"name":"gf16_gt","line":500},{"name":"a_val","line":502},{"name":"b_val","line":503},{"name":"gf16_ge","line":510},{"name":"a_val","line":512},{"name":"b_val","line":513},{"name":"gf16_floor","line":520},{"name":"a_val","line":525},{"name":"result","line":526},{"name":"gf16_ceil","line":534},{"name":"a_val","line":539},{"name":"result","line":540},{"name":"gf16_round","line":548},{"name":"a_val","line":553},{"name":"result","line":554},{"name":"gf16_trunc","line":562},{"name":"a_val","line":567},{"name":"result","line":568},{"name":"gf16_fms","line":577},{"name":"a_val","line":580},{"name":"b_val","line":581},{"name":"c_val","line":582},{"name":"product","line":590},{"name":"result","line":591},{"name":"gf16_hypot","line":600},{"name":"a_val","line":606},{"name":"b_val","line":607},{"name":"abs_a","line":610},{"name":"abs_b","line":611},{"name":"max_val","line":612},{"name":"min_val","line":613},{"name":"ratio","line":617},{"name":"result","line":618},{"name":"gf16_fmod","line":627},{"name":"a_val","line":633},{"name":"b_val","line":634},{"name":"result","line":639},{"name":"gf16_is_finite","line":646},{"name":"gf16_is_normal","line":653},{"name":"exp","line":658},{"name":"gf16_is_subnormal","line":666},{"name":"exp","line":671},{"name":"mant","line":672},{"name":"gf16_signbit","line":681},{"name":"gf16_sign","line":688},{"name":"gf16_clamp","line":707},{"name":"x_decoded","line":713},{"name":"min_decoded","line":714},{"name":"max_decoded","line":715},{"name":"gf16_lerp","line":729},{"name":"a_val","line":735},{"name":"b_val","line":736},{"name":"t_val","line":737},{"name":"result","line":740},{"name":"gf16_fnma","line":748},{"name":"sign_a","line":760},{"name":"sign_b","line":761},{"name":"result_sign","line":762},{"name":"a_val","line":777},{"name":"b_val","line":778},{"name":"neg_product","line":779},{"name":"a_val","line":784},{"name":"b_val","line":785},{"name":"c_val","line":786},{"name":"result","line":788},{"name":"gf16_exp","line":797},{"name":"x_val","line":804},{"name":"num_terms","line":820},{"name":"gf16_log","line":835},{"name":"x_val","line":845},{"name":"result","line":853},{"name":"gf16_log2","line":860},{"name":"x_val","line":870},{"name":"result","line":871},{"name":"gf16_log10","line":878},{"name":"x_val","line":888},{"name":"result","line":889},{"name":"gf16_pow","line":897},{"name":"base_val","line":910},{"name":"exp_val","line":920},{"name":"result","line":924},{"name":"gf16_sin","line":932},{"name":"x_val","line":936},{"name":"x_sq","line":940},{"name":"x_cub","line":941},{"name":"x_5","line":942},{"name":"x_7","line":943},{"name":"term1","line":945},{"name":"term2","line":946},{"name":"term3","line":947},{"name":"term4","line":948},{"name":"result","line":950},{"name":"gf16_cos","line":958},{"name":"x_val","line":962},{"name":"x_sq","line":966},{"name":"x_4","line":967},{"name":"x_6","line":968},{"name":"term0","line":970},{"name":"term1","line":971},{"name":"term2","line":972},{"name":"term3","line":973},{"name":"result","line":975},{"name":"PHI","line":986},{"name":"encoded","line":987},{"name":"decoded","line":988},{"name":"PHI","line":1000},{"name":"encoded","line":1001},{"name":"decoded","line":1002},{"name":"encoded","line":1008},{"name":"result","line":1044},{"name":"nan_val","line":1049},{"name":"decoded","line":1050},{"name":"PHI","line":1055},{"name":"encoded","line":1056},{"name":"decoded","line":1057},{"name":"PHI","line":1075},{"name":"pos_one","line":1130},{"name":"neg_one","line":1131},{"name":"decoded","line":1132},{"name":"original","line":1142},{"name":"negated","line":1143},{"name":"double_negated","line":1144},{"name":"orig_decoded","line":1145},{"name":"double_decoded","line":1146},{"name":"neg_value","line":1151},{"name":"abs_value","line":1152},{"name":"decoded","line":1153},{"name":"pos_value","line":1158},{"name":"abs_value","line":1159},{"name":"pos_value","line":1169},{"name":"neg_source","line":1170},{"name":"result","line":1171},{"name":"decoded","line":1172},{"name":"neg_value","line":1177},{"name":"pos_source","line":1178},{"name":"result","line":1179},{"name":"decoded","line":1180},{"name":"a","line":1185},{"name":"b","line":1186},{"name":"result","line":1187},{"name":"decoded","line":1188},{"name":"a","line":1193},{"name":"b","line":1194},{"name":"result","line":1195},{"name":"a","line":1200},{"name":"nan_val","line":1201},{"name":"result","line":1202},{"name":"a","line":1207},{"name":"b","line":1208},{"name":"result","line":1209},{"name":"decoded","line":1210},{"name":"a","line":1215},{"name":"b","line":1216},{"name":"result","line":1217},{"name":"a","line":1222},{"name":"nan_val","line":1223},{"name":"result","line":1224},{"name":"a","line":1730},{"name":"b","line":1731},{"name":"result","line":1732},{"name":"decoded","line":1733},{"name":"a","line":1738},{"name":"b","line":1739},{"name":"result","line":1740},{"name":"decoded","line":1741},{"name":"a","line":1746},{"name":"b","line":1747},{"name":"result","line":1748},{"name":"a","line":1753},{"name":"zero","line":1754},{"name":"result1","line":1755},{"name":"result2","line":1756},{"name":"decoded1","line":1757},{"name":"decoded2","line":1758},{"name":"a","line":1764},{"name":"b","line":1765},{"name":"result","line":1766},{"name":"decoded","line":1767},{"name":"a","line":1772},{"name":"b","line":1773},{"name":"result","line":1774},{"name":"decoded","line":1775},{"name":"a","line":1780},{"name":"zero","line":1781},{"name":"result1","line":1782},{"name":"result2","line":1783},{"name":"decoded1","line":1784},{"name":"decoded2","line":1785},{"name":"a","line":1791},{"name":"b","line":1792},{"name":"result","line":1793},{"name":"decoded","line":1794},{"name":"a","line":1799},{"name":"b","line":1800},{"name":"result","line":1801},{"name":"decoded","line":1802},{"name":"a","line":1807},{"name":"zero","line":1808},{"name":"result1","line":1809},{"name":"result2","line":1810},{"name":"a","line":1816},{"name":"one","line":1817},{"name":"result","line":1818},{"name":"decoded","line":1819},{"name":"a","line":1824},{"name":"b","line":1825},{"name":"result","line":1826},{"name":"decoded","line":1827},{"name":"a","line":1832},{"name":"b","line":1833},{"name":"result","line":1834},{"name":"decoded","line":1835},{"name":"a","line":1840},{"name":"one","line":1841},{"name":"result","line":1842},{"name":"decoded","line":1843},{"name":"zero","line":1848},{"name":"a","line":1849},{"name":"result","line":1850},{"name":"a","line":1855},{"name":"zero","line":1856},{"name":"result","line":1857},{"name":"inf","line":1862},{"name":"a","line":1863},{"name":"result","line":1864},{"name":"a","line":1869},{"name":"b","line":1870},{"name":"c","line":1871},{"name":"result","line":1872},{"name":"decoded","line":1873},{"name":"a","line":1878},{"name":"b","line":1879},{"name":"zero","line":1880},{"name":"result","line":1881},{"name":"decoded","line":1882},{"name":"a","line":1887},{"name":"result","line":1888},{"name":"decoded","line":1889},{"name":"a","line":1894},{"name":"result","line":1895},{"name":"decoded","line":1896},{"name":"zero","line":1901},{"name":"result","line":1902},{"name":"neg","line":1907},{"name":"result","line":1908},{"name":"a","line":1913},{"name":"result","line":1914},{"name":"decoded","line":1915},{"name":"zero","line":1920},{"name":"result","line":1921},{"name":"neg","line":1926},{"name":"result","line":1927},{"name":"decoded","line":1928},{"name":"a","line":1933},{"name":"b","line":1934},{"name":"result1","line":1935},{"name":"result2","line":1936},{"name":"a","line":1941},{"name":"b","line":1942},{"name":"result1","line":1943},{"name":"result2","line":1944},{"name":"a","line":1949},{"name":"squared","line":1950},{"name":"rooted","line":1951},{"name":"decoded","line":1952},{"name":"a","line":1957},{"name":"b","line":1958},{"name":"a","line":1963},{"name":"b","line":1964},{"name":"value","line":1979},{"name":"a","line":1985},{"name":"b","line":1986},{"name":"a","line":1991},{"name":"b","line":1992},{"name":"value","line":2002},{"name":"a","line":2008},{"name":"b","line":2009},{"name":"a","line":2014},{"name":"b","line":2015},{"name":"a","line":2020},{"name":"b","line":2021},{"name":"neg","line":2026},{"name":"pos","line":2027},{"name":"value","line":2032},{"name":"a","line":2038},{"name":"b","line":2039},{"name":"a","line":2044},{"name":"b","line":2045},{"name":"a","line":2050},{"name":"b","line":2051},{"name":"value","line":2056},{"name":"a","line":2062},{"name":"b","line":2063},{"name":"a","line":2068},{"name":"b","line":2069},{"name":"a","line":2074},{"name":"b","line":2075},{"name":"value","line":2080},{"name":"a","line":2086},{"name":"b","line":2087},{"name":"a","line":2092},{"name":"b","line":2093},{"name":"a","line":2098},{"name":"b","line":2099},{"name":"value","line":2104},{"name":"a","line":2111},{"name":"b","line":2112},{"name":"a","line":2122},{"name":"result","line":2123},{"name":"decoded","line":2124},{"name":"a","line":2129},{"name":"result","line":2130},{"name":"decoded","line":2131},{"name":"a","line":2136},{"name":"result","line":2137},{"name":"decoded","line":2138},{"name":"pos_zero","line":2143},{"name":"neg_zero","line":2144},{"name":"a","line":2159},{"name":"result","line":2160},{"name":"decoded","line":2161},{"name":"a","line":2166},{"name":"result","line":2167},{"name":"decoded","line":2168},{"name":"a","line":2173},{"name":"result","line":2174},{"name":"decoded","line":2175},{"name":"a","line":2189},{"name":"result","line":2190},{"name":"decoded","line":2191},{"name":"a","line":2196},{"name":"result","line":2197},{"name":"decoded","line":2198},{"name":"a","line":2203},{"name":"result","line":2204},{"name":"decoded","line":2205},{"name":"a","line":2210},{"name":"result","line":2211},{"name":"decoded","line":2212},{"name":"a","line":2226},{"name":"result","line":2227},{"name":"decoded","line":2228},{"name":"a","line":2233},{"name":"result","line":2234},{"name":"decoded","line":2235},{"name":"pos_zero","line":2240},{"name":"neg_zero","line":2241},{"name":"a","line":2257},{"name":"floored","line":2258},{"name":"truncated","line":2259},{"name":"a","line":2266},{"name":"ceiled","line":2267},{"name":"truncated","line":2268},{"name":"a","line":2274},{"name":"b","line":2275},{"name":"c","line":2276},{"name":"result","line":2277},{"name":"decoded","line":2278},{"name":"a","line":2283},{"name":"b","line":2284},{"name":"c","line":2285},{"name":"result","line":2286},{"name":"decoded","line":2287},{"name":"a","line":2292},{"name":"b","line":2293},{"name":"c","line":2294},{"name":"result","line":2295},{"name":"decoded","line":2296},{"name":"a","line":2301},{"name":"b","line":2302},{"name":"result","line":2303},{"name":"a","line":2308},{"name":"b","line":2309},{"name":"c","line":2310},{"name":"result","line":2311},{"name":"decoded","line":2312},{"name":"a","line":2317},{"name":"b","line":2318},{"name":"result","line":2319},{"name":"decoded","line":2320},{"name":"a","line":2329},{"name":"result","line":2330},{"name":"decoded","line":2331},{"name":"a","line":2336},{"name":"b","line":2337},{"name":"result","line":2338},{"name":"decoded","line":2339},{"name":"a","line":2344},{"name":"result","line":2345},{"name":"a","line":2350},{"name":"a","line":2355},{"name":"b","line":2356},{"name":"result","line":2357},{"name":"decoded","line":2358},{"name":"a","line":2363},{"name":"b","line":2364},{"name":"result","line":2365},{"name":"a","line":2370},{"name":"b","line":2371},{"name":"result","line":2372},{"name":"decoded","line":2373},{"name":"a","line":2378},{"name":"b","line":2379},{"name":"result","line":2380},{"name":"decoded","line":2381},{"name":"a","line":2386},{"name":"zero","line":2387},{"name":"result","line":2388},{"name":"a","line":2393},{"name":"result","line":2394},{"name":"n1","line":2400},{"name":"n2","line":2401},{"name":"n3","line":2402},{"name":"z1","line":2410},{"name":"z2","line":2411},{"name":"pos_inf","line":2418},{"name":"neg_inf","line":2419},{"name":"n1","line":2431},{"name":"n2","line":2432},{"name":"n3","line":2433},{"name":"z1","line":2441},{"name":"z2","line":2442},{"name":"sub","line":2462},{"name":"decoded","line":2463},{"name":"is_sub","line":2466},{"name":"n1","line":2475},{"name":"n2","line":2476},{"name":"z1","line":2483},{"name":"z2","line":2484},{"name":"test_values","line":2503},{"name":"gf","line":2509},{"name":"is_fin","line":2510},{"name":"is_inf","line":2511},{"name":"is_nan","line":2512},{"name":"count","line":2515},{"name":"val","line":2524},{"name":"val","line":2530},{"name":"zero_pos","line":2536},{"name":"zero_neg","line":2542},{"name":"nan_with_sign","line":2555},{"name":"v1","line":2561},{"name":"v2","line":2562},{"name":"v1","line":2569},{"name":"v2","line":2570},{"name":"pos_val","line":2594},{"name":"neg_val","line":2595},{"name":"x","line":2603},{"name":"min_val","line":2604},{"name":"max_val","line":2605},{"name":"result","line":2606},{"name":"decoded","line":2607},{"name":"x","line":2613},{"name":"min_val","line":2614},{"name":"max_val","line":2615},{"name":"result","line":2616},{"name":"decoded","line":2617},{"name":"x","line":2623},{"name":"min_val","line":2624},{"name":"max_val","line":2625},{"name":"result","line":2626},{"name":"decoded","line":2627},{"name":"x","line":2633},{"name":"min_val","line":2634},{"name":"max_val","line":2635},{"name":"result","line":2636},{"name":"a","line":2642},{"name":"b","line":2643},{"name":"t","line":2644},{"name":"result","line":2645},{"name":"decoded","line":2646},{"name":"a","line":2652},{"name":"b","line":2653},{"name":"t","line":2654},{"name":"result","line":2655},{"name":"decoded","line":2656},{"name":"a","line":2662},{"name":"b","line":2663},{"name":"t","line":2664},{"name":"result","line":2665},{"name":"decoded","line":2666},{"name":"a","line":2672},{"name":"b","line":2673},{"name":"t","line":2674},{"name":"result","line":2675},{"name":"a","line":2681},{"name":"b","line":2682},{"name":"c","line":2683},{"name":"result","line":2684},{"name":"decoded","line":2685},{"name":"a","line":2691},{"name":"b","line":2692},{"name":"c","line":2693},{"name":"result","line":2694},{"name":"decoded","line":2695},{"name":"a","line":2701},{"name":"b","line":2702},{"name":"c","line":2703},{"name":"result","line":2704},{"name":"decoded","line":2705},{"name":"a","line":2711},{"name":"b","line":2712},{"name":"c","line":2713},{"name":"result","line":2714},{"name":"x","line":2720},{"name":"result","line":2721},{"name":"decoded","line":2722},{"name":"x","line":2728},{"name":"result","line":2729},{"name":"decoded","line":2730},{"name":"x","line":2736},{"name":"result","line":2737},{"name":"decoded","line":2738},{"name":"x","line":2744},{"name":"result","line":2745},{"name":"x","line":2751},{"name":"result","line":2752},{"name":"decoded","line":2753},{"name":"e","line":2759},{"name":"result","line":2760},{"name":"decoded","line":2761},{"name":"zero","line":2767},{"name":"neg","line":2768},{"name":"x","line":2775},{"name":"result","line":2776},{"name":"decoded","line":2777},{"name":"x","line":2783},{"name":"result","line":2784},{"name":"decoded","line":2785},{"name":"base","line":2791},{"name":"exp","line":2792},{"name":"result","line":2793},{"name":"decoded","line":2794},{"name":"base","line":2800},{"name":"exp","line":2801},{"name":"result","line":2802},{"name":"decoded","line":2803},{"name":"base","line":2809},{"name":"exp","line":2810},{"name":"result","line":2811},{"name":"decoded","line":2812},{"name":"base","line":2818},{"name":"exp","line":2819},{"name":"result","line":2820},{"name":"base","line":2826},{"name":"exp","line":2827},{"name":"result","line":2828},{"name":"decoded","line":2829},{"name":"x","line":2835},{"name":"result","line":2836},{"name":"decoded","line":2837},{"name":"pi_six","line":2843},{"name":"result","line":2844},{"name":"decoded","line":2845},{"name":"x","line":2851},{"name":"result","line":2852},{"name":"decoded","line":2853},{"name":"pi_six","line":2859},{"name":"result","line":2860},{"name":"decoded","line":2861},{"name":"x","line":2867},{"name":"sin_val","line":2868},{"name":"cos_val","line":2869},{"name":"sum","line":2870},{"name":"value","line":2905},{"name":"a","line":2994},{"name":"b","line":2995},{"name":"a","line":3007},{"name":"b","line":3008},{"name":"a","line":3020},{"name":"b","line":3021},{"name":"a","line":3033},{"name":"b","line":3034},{"name":"a","line":3046},{"name":"b","line":3047},{"name":"a","line":3059},{"name":"b","line":3060},{"name":"a","line":3072},{"name":"a","line":3084},{"name":"b","line":3085},{"name":"c","line":3086},{"name":"a","line":3098},{"name":"a","line":3110},{"name":"b","line":3111},{"name":"a","line":3123},{"name":"b","line":3124},{"name":"a","line":3136},{"name":"b","line":3137},{"name":"a","line":3149},{"name":"b","line":3150},{"name":"a","line":3162},{"name":"b","line":3163},{"name":"a","line":3175},{"name":"b","line":3176},{"name":"a","line":3188},{"name":"a","line":3200},{"name":"a","line":3212},{"name":"a","line":3224},{"name":"a","line":3236},{"name":"b","line":3237},{"name":"c","line":3238},{"name":"a","line":3250},{"name":"b","line":3251},{"name":"a","line":3263},{"name":"b","line":3264},{"name":"val","line":3276},{"name":"val","line":3288},{"name":"val","line":3300},{"name":"val","line":3312},{"name":"val","line":3324},{"name":"x","line":3336},{"name":"min_val","line":3337},{"name":"max_val","line":3338},{"name":"a","line":3350},{"name":"b","line":3351},{"name":"t","line":3352},{"name":"a","line":3364},{"name":"b","line":3365},{"name":"c","line":3366},{"name":"x","line":3378},{"name":"x","line":3390},{"name":"base","line":3402},{"name":"exp","line":3403},{"name":"x","line":3415},{"name":"x","line":3427},{"name":"FP8_EFFECTIVE_MANT_BITS","line":3439},{"name":"GF16_CANONICAL_EXP_BITS","line":3442},{"name":"GF16_CANONICAL_MANT_BITS","line":3443},{"name":"ALT_A_EXP_BITS","line":3446},{"name":"ALT_A_MANT_BITS","line":3447},{"name":"ALT_B_EXP_BITS","line":3450},{"name":"ALT_B_MANT_BITS","line":3451},{"name":"GF16_PHI_DIST_REGISTERED","line":3455},{"name":"ALT_A_PHI_DIST","line":3460},{"name":"ALT_B_PHI_DIST","line":3461},{"name":"FP8_ULP","line":3464},{"name":"ratio_canonical","line":3488},{"name":"phi_dist_canonical","line":3489},{"name":"d","line":3493},{"name":"d_abs","line":3494},{"name":"ratio_canonical","line":3503},{"name":"ratio_alt_a","line":3504},{"name":"ratio_alt_b","line":3505},{"name":"phi_dist","line":3507},{"name":"d","line":3508},{"name":"pd_canonical","line":3512},{"name":"pd_alt_a","line":3513},{"name":"pd_alt_b","line":3514},{"name":"test_vals","line":3533},{"name":"gf16_encoded","line":3537},{"name":"mant_full","line":3539},{"name":"trunc_shift","line":3542},{"name":"mant_truncated","line":3543},{"name":"gf16_truncated","line":3545},{"name":"decoded_trunc","line":3547},{"name":"err_val","line":3549},{"name":"err_abs","line":3550},{"name":"v","line":3568},{"name":"gf16_enc","line":3571},{"name":"mant_9","line":3572},{"name":"shift_canonical","line":3573},{"name":"mant_9_trunc","line":3574},{"name":"gf16_trunc","line":3575},{"name":"decoded_canonical","line":3576},{"name":"err_canonical","line":3577},{"name":"mant_8","line":3581},{"name":"shift_alt","line":3582},{"name":"mant_8_trunc","line":3583},{"name":"gf16_alt","line":3584},{"name":"decoded_alt","line":3585},{"name":"err_alt","line":3586},{"name":"diff","line":3589},{"name":"within_one_ulp","line":3593},{"name":"v","line":3651},{"name":"fp8_shift","line":3652},{"name":"enc","line":3655},{"name":"mant","line":3656},{"name":"mant_trunc","line":3657},{"name":"enc_trunc","line":3658},{"name":"v","line":3669},{"name":"enc","line":3672}],"imports":[],"terms":["numeric","gf16","triformat","sign","shift","exp","mant","mask","max","min","bias","special","divisor","phi","zero","pos","neg","inf","nan","pow2","table","extract","bit","exponent","mantissa","components","encode","f32","abs","bits","discarded","decode","mult","round","normalized","negative","positive","negate","copy","val","sub","mul","div","fma","product","sqrt","square","floor","ceil","trunc","fms","hypot","ratio","fmod","finite","normal","subnormal","signbit","clamp","decoded","lerp","fnma","num","terms","log","log2","log10","pow","base","sin","cub","term1","term2","term3","term4","cos","term0","encoded","one","original","negated","double","orig","result1","result2","decoded1","decoded2","squared","rooted","floored","truncated","ceiled","values","fin","count","six","sum","fp8","effective","canonical","alt","dist","registered","ulp","vals","full","err","enc","diff","within"]},{"id":"1b24b1694f18c7a0481393f176311bd7526fc2b05425dd1746211b294df65699","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_dropped_module.t27","health":"warn","module":"trinity_matrix_neg_dropped_module"}],"description":"trinity_matrix/neg_dropped_module.t27 -- NEGATIVE: a bare semicolon line ahead of the module line; the parser drops the module and the file must be reported as incompletely consumed, not accepted.","symbols":[{"name":"N","line":7}],"imports":[],"terms":["bootstrap","fixtures","matrix","neg","dropped"]},{"id":"1b83d4078b09bb7ce0a7c9ea86b3bec7c26880fa1a97085eb259c98c930b87bb","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/field_swallow.t27","health":"warn","module":"field_swallow"}],"description":"","symbols":[{"name":"Trunc","line":3}],"imports":[],"terms":["bootstrap","fixtures","terminator","field","swallow","trunc"]},{"id":"1badc358e7b3bedcded55bfc6aba9c2ff976edde0c930e130560db5de6677787","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/hardware.t27","health":"ok","module":"tool_trinity_tri_hardware"}],"description":"specs/tools/trinity/tri/hardware.t27 -- tool gHashTag/trinity:tri/hardware, the `tri hardware` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/hardware`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["hardware","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"1bf58267963a4114d3b9f6ed017a10b942789add7f8196b5a058812b7c4f50db","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/tim_sort.t27","health":"ok","module":"TriTimSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","tim"]},{"id":"1bfab3b3ae5373ca4bcfe5f87bb793833baf91dc8c9c4f9e65182eb68fef9d72","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_train2.t27","health":"ok","module":"GftTrain2"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"on_comb","line":111}],"imports":[],"terms":["ternary","gft","train2","magadd","magsub","sadd","neg","magmul","smul","comb"]},{"id":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/quarantine_manager.t27","health":"ok","module":"quarantine_manager"}],"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUARANTINE_DURATION","line":8},{"name":"VIOLATION_THRESHOLD","line":9},{"name":"TRUST_THRESHOLD","line":10},{"name":"create_quarantine_state","line":13},{"name":"get_quarantine_node_id","line":20},{"name":"get_quarantine_status","line":24},{"name":"get_start_time","line":28},{"name":"get_violation_count","line":32},{"name":"STATUS_NORMAL","line":37},{"name":"STATUS_QUARANTINED","line":38},{"name":"STATUS_SUSPENDED","line":39},{"name":"STATUS_BANNED","line":40},{"name":"is_quarantined","line":43},{"name":"quarantine_node","line":54},{"name":"release_quarantine","line":62},{"name":"suspend_node","line":70},{"name":"ban_node","line":78},{"name":"should_release_quarantine","line":87},{"name":"update_quarantine_state","line":102},{"name":"create_violation_record","line":111},{"name":"get_violation_node_id","line":118},{"name":"get_violation_type","line":122},{"name":"get_violation_severity","line":126},{"name":"get_violation_timestamp","line":130},{"name":"VIOLATION_PACKET_FLOOD","line":135},{"name":"VIOLATION_AUTH_FAILURE","line":136},{"name":"VIOLATION_MALFORMED_PACKET","line":137},{"name":"VIOLATION_ANOMALOUS_BEHAVIOR","line":138},{"name":"VIOLATION_RESOURCE_ABUSE","line":139},{"name":"VIOLATION_TRUST_VIOLATION","line":140},{"name":"record_violation","line":143},{"name":"should_quarantine","line":162},{"name":"calculate_quarantine_severity","line":174},{"name":"find_quarantined_node","line":195},{"name":"count_quarantined_nodes","line":210},{"name":"get_quarantine_reason","line":225},{"name":"is_communication_allowed","line":244},{"name":"calculate_health_impact","line":266},{"name":"recommend_quarantine_action","line":278},{"name":"create_notification","line":296},{"name":"get_notification_node_id","line":303},{"name":"get_notification_action","line":307},{"name":"get_notification_reason","line":311},{"name":"get_notification_duration","line":315}],"imports":[{"name":"base::types","line":5}],"terms":["net","quarantine","manager","max","nodes","duration","violation","threshold","trust","create","state","get","node","status","start","time","count","normal","quarantined","suspended","banned","release","suspend","ban","record","severity","timestamp","packet","flood","auth","failure","malformed","anomalous","behavior","resource","abuse","calculate","find","reason","communication","allowed","health","impact","recommend","action","notification"]},{"id":"1c1a30bcdc55e6b2f8ad3eda8d0107f0109588bfa32eed9a16dddd8b454cdde0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/mlp_forward.t27","health":"warn","module":null}],"description":"MLP Forward Pass Test — 4 → 8 → 3 Demonstrates semantic equivalence between .t27 VM and Zig implementation Input: 4 features → Hidden: 8 neurons → Output: 3 classes","symbols":[],"imports":[],"terms":["fpga","tri27","mlp","forward"]},{"id":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/yosys.t27","health":"ok","module":"igla-race-yosys"}],"description":"t27/specs/igla/race/yosys.t27 Yosys / SymbiYosys formal verification integration for IGLA RACE NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (format!(), match, +=, .as_bytes(), @intCast, .to_string()).","symbols":[{"name":"ToolchainStatus","line":18},{"name":"detect_toolchain","line":25},{"name":"strings_equal","line":33},{"name":"strings_equal_inner","line":40},{"name":"command_exists","line":50},{"name":"generate_equiv_script","line":75},{"name":"BmcResult","line":88},{"name":"run_bmc","line":96},{"name":"PropKind","line":106},{"name":"Property","line":113},{"name":"emit_sva_assertions","line":122},{"name":"emit_sva_inner","line":126},{"name":"emit_one_sva","line":134},{"name":"aggregate_coverage","line":161},{"name":"compute_coverage_percent","line":179},{"name":"count_substring","line":192},{"name":"count_substring_inner","line":196},{"name":"match_at","line":206},{"name":"match_at_inner","line":210},{"name":"test_emit_sva_always","line":228},{"name":"test_emit_sva_eventually","line":241},{"name":"test_emit_sva_never","line":254},{"name":"test_equiv_script_generation","line":267},{"name":"test_detect_toolchain_returns_struct","line":273},{"name":"test_aggregate_coverage_counts","line":279},{"name":"inv_sva_clock_present_inner","line":346},{"name":"inv_sva_clock_present","line":357}],"imports":[{"name":"base::types","line":10},{"name":"igla::race::rtl","line":11},{"name":"igla::race::formal","line":12}],"terms":["igla","race","yosys","toolchain","status","detect","strings","equal","inner","exists","generate","equiv","script","bmc","prop","kind","property","emit","sva","assertions","one","aggregate","compute","percent","count","substring","match","always","eventually","never","generation","returns","struct","counts","inv","clock","present"]},{"id":"1c332b11b5cc758ef52d78c8517722fe3a7f757a8583679c2859f42aea529c97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/account_identity.t27","health":"ok","module":"AccountIdentity"}],"description":"Multi-device account and trusted-device linking policy. Passkey ceremonies and storage adapters remain platform responsibilities. phi^2 + phi^-2 = 3","symbols":[{"name":"DEVICE_ACTIVE","line":8},{"name":"DEVICE_REVOKED","line":9},{"name":"LINK_CODE_TTL_SECONDS","line":10},{"name":"LINK_CODE_ENTROPY_BITS","line":11},{"name":"device_membership_is_valid","line":15},{"name":"link_code_is_fresh","line":22},{"name":"may_adopt_account","line":32},{"name":"may_revoke_device","line":38}],"imports":[{"name":"base::types","line":6}],"terms":["net","account","identity","device","active","revoked","link","ttl","seconds","entropy","bits","membership","valid","fresh","may","adopt","revoke"]},{"id":"1c3e0fdc23d7ad66ae39662f81621504cfdab1b4660a904508b75867cbbd187e","sources":[{"repo":"ghashtag/t27","path":"specs/agents/j.t27","health":"ok","module":"agent_j"}],"description":"specs/agents/j.t27 -- agent t27/J, letter J of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/J). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent J - Iota-extended (Jobs)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf16.t27","health":"ok","module":"triformat-gf16"}],"description":"gf16.t27 0 GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0] 12 + 1/34 = 3 | TRINITY","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"SPECIAL_EXP","line":25},{"name":"MANT_DIVISOR","line":27},{"name":"MANT_DIVISOR_SHIFT","line":28},{"name":"PHI_BIAS","line":30},{"name":"GF16_ZERO_POS","line":33},{"name":"GF16_ZERO_NEG","line":34},{"name":"GF16_INF_POS","line":35},{"name":"GF16_INF_NEG","line":36},{"name":"GF16_NAN","line":37},{"name":"GF16","line":43},{"name":"pow2_table","line":50},{"name":"gf16_extract_sign","line":64},{"name":"bit","line":65},{"name":"gf16_extract_exponent","line":72},{"name":"gf16_extract_mantissa","line":79},{"name":"gf16_from_components","line":85},{"name":"sign_bit","line":86},{"name":"gf16_is_zero","line":94},{"name":"gf16_is_special","line":100},{"name":"gf16_encode_f32","line":108},{"name":"sign","line":115},{"name":"abs_value","line":116},{"name":"f32_bits","line":119},{"name":"discarded","line":140},{"name":"gf16_decode_to_f32","line":156},{"name":"sign","line":159},{"name":"mant","line":165},{"name":"sign","line":166},{"name":"sign","line":177},{"name":"exp","line":178},{"name":"mant","line":179},{"name":"sign_mult","line":181},{"name":"mant_mult","line":182},{"name":"exp_mult","line":183},{"name":"gf16_round_phi","line":193},{"name":"sign","line":200},{"name":"abs_value","line":201},{"name":"f32_bits","line":204},{"name":"normalized_mant","line":219},{"name":"gf16_is_inf","line":239},{"name":"exp","line":240},{"name":"mant","line":241},{"name":"gf16_is_nan","line":247},{"name":"exp","line":248},{"name":"mant","line":249},{"name":"gf16_is_negative","line":255},{"name":"sign","line":256},{"name":"gf16_is_positive","line":262},{"name":"sign","line":263},{"name":"gf16_negate","line":269},{"name":"gf16_abs","line":275},{"name":"gf16_copy_sign","line":281},{"name":"sign_mask","line":282},{"name":"value_mask","line":283},{"name":"gf16_max","line":289},{"name":"a_val","line":293},{"name":"b_val","line":294},{"name":"gf16_min","line":301},{"name":"a_val","line":305},{"name":"b_val","line":306},{"name":"gf16_add","line":314},{"name":"a_sign","line":319},{"name":"b_sign","line":320},{"name":"a_val","line":326},{"name":"b_val","line":327},{"name":"result","line":328},{"name":"gf16_sub","line":336},{"name":"a_val","line":348},{"name":"b_val","line":349},{"name":"result","line":350},{"name":"gf16_mul","line":358},{"name":"a_sign","line":362},{"name":"b_sign","line":363},{"name":"result_sign","line":364},{"name":"a_sign","line":369},{"name":"b_sign","line":370},{"name":"result_sign","line":371},{"name":"a_val","line":375},{"name":"b_val","line":376},{"name":"result","line":377},{"name":"gf16_div","line":386},{"name":"a_sign","line":390},{"name":"a_sign","line":395},{"name":"b_sign","line":396},{"name":"result_sign","line":397},{"name":"a_sign","line":402},{"name":"b_sign","line":403},{"name":"result_sign","line":404},{"name":"a_val","line":408},{"name":"b_val","line":409},{"name":"result","line":410},{"name":"gf16_fma","line":418},{"name":"a_val","line":421},{"name":"b_val","line":422},{"name":"c_val","line":423},{"name":"product","line":431},{"name":"result","line":432},{"name":"gf16_sqrt","line":440},{"name":"a_val","line":447},{"name":"result","line":448},{"name":"gf16_square","line":456},{"name":"gf16_eq","line":463},{"name":"gf16_ne","line":473},{"name":"gf16_lt","line":480},{"name":"a_val","line":482},{"name":"b_val","line":483},{"name":"gf16_le","line":490},{"name":"a_val","line":492},{"name":"b_val","line":493},{"name":"gf16_gt","line":500},{"name":"a_val","line":502},{"name":"b_val","line":503},{"name":"gf16_ge","line":510},{"name":"a_val","line":512},{"name":"b_val","line":513},{"name":"gf16_floor","line":520},{"name":"a_val","line":525},{"name":"result","line":526},{"name":"gf16_ceil","line":534},{"name":"a_val","line":539},{"name":"result","line":540},{"name":"gf16_round","line":548},{"name":"a_val","line":553},{"name":"result","line":554},{"name":"gf16_trunc","line":562},{"name":"a_val","line":567},{"name":"result","line":568},{"name":"gf16_fms","line":577},{"name":"a_val","line":580},{"name":"b_val","line":581},{"name":"c_val","line":582},{"name":"product","line":590},{"name":"result","line":591},{"name":"gf16_hypot","line":600},{"name":"a_val","line":606},{"name":"b_val","line":607},{"name":"abs_a","line":610},{"name":"abs_b","line":611},{"name":"max_val","line":612},{"name":"min_val","line":613},{"name":"ratio","line":617},{"name":"result","line":618},{"name":"gf16_fmod","line":627},{"name":"a_val","line":633},{"name":"b_val","line":634},{"name":"result","line":639},{"name":"gf16_is_finite","line":646},{"name":"gf16_is_normal","line":653},{"name":"exp","line":658},{"name":"gf16_is_subnormal","line":666},{"name":"exp","line":671},{"name":"mant","line":672},{"name":"gf16_signbit","line":681},{"name":"gf16_sign","line":688},{"name":"gf16_clamp","line":707},{"name":"x_decoded","line":713},{"name":"min_decoded","line":714},{"name":"max_decoded","line":715},{"name":"gf16_lerp","line":729},{"name":"a_val","line":735},{"name":"b_val","line":736},{"name":"t_val","line":737},{"name":"result","line":740},{"name":"gf16_fnma","line":748},{"name":"sign_a","line":760},{"name":"sign_b","line":761},{"name":"result_sign","line":762},{"name":"a_val","line":777},{"name":"b_val","line":778},{"name":"neg_product","line":779},{"name":"a_val","line":784},{"name":"b_val","line":785},{"name":"c_val","line":786},{"name":"result","line":788},{"name":"gf16_exp","line":797},{"name":"x_val","line":804},{"name":"num_terms","line":820},{"name":"gf16_log","line":835},{"name":"x_val","line":845},{"name":"result","line":853},{"name":"gf16_log2","line":860},{"name":"x_val","line":870},{"name":"result","line":871},{"name":"gf16_log10","line":878},{"name":"x_val","line":888},{"name":"result","line":889},{"name":"gf16_pow","line":897},{"name":"base_val","line":910},{"name":"exp_val","line":920},{"name":"result","line":924},{"name":"gf16_sin","line":932},{"name":"x_val","line":936},{"name":"x_sq","line":940},{"name":"x_cub","line":941},{"name":"x_5","line":942},{"name":"x_7","line":943},{"name":"term1","line":945},{"name":"term2","line":946},{"name":"term3","line":947},{"name":"term4","line":948},{"name":"result","line":950},{"name":"gf16_cos","line":958},{"name":"x_val","line":962},{"name":"x_sq","line":966},{"name":"x_4","line":967},{"name":"x_6","line":968},{"name":"term0","line":970},{"name":"term1","line":971},{"name":"term2","line":972},{"name":"term3","line":973},{"name":"result","line":975},{"name":"PHI","line":986},{"name":"encoded","line":987},{"name":"decoded","line":988},{"name":"PHI","line":1000},{"name":"encoded","line":1001},{"name":"decoded","line":1002},{"name":"encoded","line":1008},{"name":"result","line":1044},{"name":"nan_val","line":1049},{"name":"decoded","line":1050},{"name":"PHI","line":1055},{"name":"encoded","line":1056},{"name":"decoded","line":1057},{"name":"PHI","line":1075},{"name":"pos_one","line":1130},{"name":"neg_one","line":1131},{"name":"decoded","line":1132},{"name":"original","line":1142},{"name":"negated","line":1143},{"name":"double_negated","line":1144},{"name":"orig_decoded","line":1145},{"name":"double_decoded","line":1146},{"name":"neg_value","line":1151},{"name":"abs_value","line":1152},{"name":"decoded","line":1153},{"name":"pos_value","line":1158},{"name":"abs_value","line":1159},{"name":"pos_value","line":1169},{"name":"neg_source","line":1170},{"name":"result","line":1171},{"name":"decoded","line":1172},{"name":"neg_value","line":1177},{"name":"pos_source","line":1178},{"name":"result","line":1179},{"name":"decoded","line":1180},{"name":"a","line":1185},{"name":"b","line":1186},{"name":"result","line":1187},{"name":"decoded","line":1188},{"name":"a","line":1193},{"name":"b","line":1194},{"name":"result","line":1195},{"name":"a","line":1200},{"name":"nan_val","line":1201},{"name":"result","line":1202},{"name":"a","line":1207},{"name":"b","line":1208},{"name":"result","line":1209},{"name":"decoded","line":1210},{"name":"a","line":1215},{"name":"b","line":1216},{"name":"result","line":1217},{"name":"a","line":1222},{"name":"nan_val","line":1223},{"name":"result","line":1224},{"name":"a","line":1730},{"name":"b","line":1731},{"name":"result","line":1732},{"name":"decoded","line":1733},{"name":"a","line":1738},{"name":"b","line":1739},{"name":"result","line":1740},{"name":"decoded","line":1741},{"name":"a","line":1746},{"name":"b","line":1747},{"name":"result","line":1748},{"name":"a","line":1753},{"name":"zero","line":1754},{"name":"result1","line":1755},{"name":"result2","line":1756},{"name":"decoded1","line":1757},{"name":"decoded2","line":1758},{"name":"a","line":1764},{"name":"b","line":1765},{"name":"result","line":1766},{"name":"decoded","line":1767},{"name":"a","line":1772},{"name":"b","line":1773},{"name":"result","line":1774},{"name":"decoded","line":1775},{"name":"a","line":1780},{"name":"zero","line":1781},{"name":"result1","line":1782},{"name":"result2","line":1783},{"name":"decoded1","line":1784},{"name":"decoded2","line":1785},{"name":"a","line":1791},{"name":"b","line":1792},{"name":"result","line":1793},{"name":"decoded","line":1794},{"name":"a","line":1799},{"name":"b","line":1800},{"name":"result","line":1801},{"name":"decoded","line":1802},{"name":"a","line":1807},{"name":"zero","line":1808},{"name":"result1","line":1809},{"name":"result2","line":1810},{"name":"a","line":1816},{"name":"one","line":1817},{"name":"result","line":1818},{"name":"decoded","line":1819},{"name":"a","line":1824},{"name":"b","line":1825},{"name":"result","line":1826},{"name":"decoded","line":1827},{"name":"a","line":1832},{"name":"b","line":1833},{"name":"result","line":1834},{"name":"decoded","line":1835},{"name":"a","line":1840},{"name":"one","line":1841},{"name":"result","line":1842},{"name":"decoded","line":1843},{"name":"zero","line":1848},{"name":"a","line":1849},{"name":"result","line":1850},{"name":"a","line":1855},{"name":"zero","line":1856},{"name":"result","line":1857},{"name":"inf","line":1862},{"name":"a","line":1863},{"name":"result","line":1864},{"name":"a","line":1869},{"name":"b","line":1870},{"name":"c","line":1871},{"name":"result","line":1872},{"name":"decoded","line":1873},{"name":"a","line":1878},{"name":"b","line":1879},{"name":"zero","line":1880},{"name":"result","line":1881},{"name":"decoded","line":1882},{"name":"a","line":1887},{"name":"result","line":1888},{"name":"decoded","line":1889},{"name":"a","line":1894},{"name":"result","line":1895},{"name":"decoded","line":1896},{"name":"zero","line":1901},{"name":"result","line":1902},{"name":"neg","line":1907},{"name":"result","line":1908},{"name":"a","line":1913},{"name":"result","line":1914},{"name":"decoded","line":1915},{"name":"zero","line":1920},{"name":"result","line":1921},{"name":"neg","line":1926},{"name":"result","line":1927},{"name":"decoded","line":1928},{"name":"a","line":1933},{"name":"b","line":1934},{"name":"result1","line":1935},{"name":"result2","line":1936},{"name":"a","line":1941},{"name":"b","line":1942},{"name":"result1","line":1943},{"name":"result2","line":1944},{"name":"a","line":1949},{"name":"squared","line":1950},{"name":"rooted","line":1951},{"name":"decoded","line":1952},{"name":"a","line":1957},{"name":"b","line":1958},{"name":"a","line":1963},{"name":"b","line":1964},{"name":"value","line":1979},{"name":"a","line":1985},{"name":"b","line":1986},{"name":"a","line":1991},{"name":"b","line":1992},{"name":"value","line":2002},{"name":"a","line":2008},{"name":"b","line":2009},{"name":"a","line":2014},{"name":"b","line":2015},{"name":"a","line":2020},{"name":"b","line":2021},{"name":"neg","line":2026},{"name":"pos","line":2027},{"name":"value","line":2032},{"name":"a","line":2038},{"name":"b","line":2039},{"name":"a","line":2044},{"name":"b","line":2045},{"name":"a","line":2050},{"name":"b","line":2051},{"name":"value","line":2056},{"name":"a","line":2062},{"name":"b","line":2063},{"name":"a","line":2068},{"name":"b","line":2069},{"name":"a","line":2074},{"name":"b","line":2075},{"name":"value","line":2080},{"name":"a","line":2086},{"name":"b","line":2087},{"name":"a","line":2092},{"name":"b","line":2093},{"name":"a","line":2098},{"name":"b","line":2099},{"name":"value","line":2104},{"name":"a","line":2111},{"name":"b","line":2112},{"name":"a","line":2122},{"name":"result","line":2123},{"name":"decoded","line":2124},{"name":"a","line":2129},{"name":"result","line":2130},{"name":"decoded","line":2131},{"name":"a","line":2136},{"name":"result","line":2137},{"name":"decoded","line":2138},{"name":"pos_zero","line":2143},{"name":"neg_zero","line":2144},{"name":"a","line":2159},{"name":"result","line":2160},{"name":"decoded","line":2161},{"name":"a","line":2166},{"name":"result","line":2167},{"name":"decoded","line":2168},{"name":"a","line":2173},{"name":"result","line":2174},{"name":"decoded","line":2175},{"name":"a","line":2189},{"name":"result","line":2190},{"name":"decoded","line":2191},{"name":"a","line":2196},{"name":"result","line":2197},{"name":"decoded","line":2198},{"name":"a","line":2203},{"name":"result","line":2204},{"name":"decoded","line":2205},{"name":"a","line":2210},{"name":"result","line":2211},{"name":"decoded","line":2212},{"name":"a","line":2226},{"name":"result","line":2227},{"name":"decoded","line":2228},{"name":"a","line":2233},{"name":"result","line":2234},{"name":"decoded","line":2235},{"name":"pos_zero","line":2240},{"name":"neg_zero","line":2241},{"name":"a","line":2257},{"name":"floored","line":2258},{"name":"truncated","line":2259},{"name":"a","line":2266},{"name":"ceiled","line":2267},{"name":"truncated","line":2268},{"name":"a","line":2274},{"name":"b","line":2275},{"name":"c","line":2276},{"name":"result","line":2277},{"name":"decoded","line":2278},{"name":"a","line":2283},{"name":"b","line":2284},{"name":"c","line":2285},{"name":"result","line":2286},{"name":"decoded","line":2287},{"name":"a","line":2292},{"name":"b","line":2293},{"name":"c","line":2294},{"name":"result","line":2295},{"name":"decoded","line":2296},{"name":"a","line":2301},{"name":"b","line":2302},{"name":"result","line":2303},{"name":"a","line":2308},{"name":"b","line":2309},{"name":"c","line":2310},{"name":"result","line":2311},{"name":"decoded","line":2312},{"name":"a","line":2317},{"name":"b","line":2318},{"name":"result","line":2319},{"name":"decoded","line":2320},{"name":"a","line":2329},{"name":"result","line":2330},{"name":"decoded","line":2331},{"name":"a","line":2336},{"name":"b","line":2337},{"name":"result","line":2338},{"name":"decoded","line":2339},{"name":"a","line":2344},{"name":"result","line":2345},{"name":"a","line":2350},{"name":"a","line":2355},{"name":"b","line":2356},{"name":"result","line":2357},{"name":"decoded","line":2358},{"name":"a","line":2363},{"name":"b","line":2364},{"name":"result","line":2365},{"name":"a","line":2370},{"name":"b","line":2371},{"name":"result","line":2372},{"name":"decoded","line":2373},{"name":"a","line":2378},{"name":"b","line":2379},{"name":"result","line":2380},{"name":"decoded","line":2381},{"name":"a","line":2386},{"name":"zero","line":2387},{"name":"result","line":2388},{"name":"a","line":2393},{"name":"result","line":2394},{"name":"n1","line":2400},{"name":"n2","line":2401},{"name":"n3","line":2402},{"name":"z1","line":2410},{"name":"z2","line":2411},{"name":"pos_inf","line":2418},{"name":"neg_inf","line":2419},{"name":"n1","line":2431},{"name":"n2","line":2432},{"name":"n3","line":2433},{"name":"z1","line":2441},{"name":"z2","line":2442},{"name":"sub","line":2462},{"name":"decoded","line":2463},{"name":"is_sub","line":2466},{"name":"n1","line":2475},{"name":"n2","line":2476},{"name":"z1","line":2483},{"name":"z2","line":2484},{"name":"test_values","line":2503},{"name":"gf","line":2509},{"name":"is_fin","line":2510},{"name":"is_inf","line":2511},{"name":"is_nan","line":2512},{"name":"count","line":2515},{"name":"val","line":2524},{"name":"val","line":2530},{"name":"zero_pos","line":2536},{"name":"zero_neg","line":2542},{"name":"nan_with_sign","line":2555},{"name":"v1","line":2561},{"name":"v2","line":2562},{"name":"v1","line":2569},{"name":"v2","line":2570},{"name":"pos_val","line":2594},{"name":"neg_val","line":2595},{"name":"x","line":2603},{"name":"min_val","line":2604},{"name":"max_val","line":2605},{"name":"result","line":2606},{"name":"decoded","line":2607},{"name":"x","line":2613},{"name":"min_val","line":2614},{"name":"max_val","line":2615},{"name":"result","line":2616},{"name":"decoded","line":2617},{"name":"x","line":2623},{"name":"min_val","line":2624},{"name":"max_val","line":2625},{"name":"result","line":2626},{"name":"decoded","line":2627},{"name":"x","line":2633},{"name":"min_val","line":2634},{"name":"max_val","line":2635},{"name":"result","line":2636},{"name":"a","line":2642},{"name":"b","line":2643},{"name":"t","line":2644},{"name":"result","line":2645},{"name":"decoded","line":2646},{"name":"a","line":2652},{"name":"b","line":2653},{"name":"t","line":2654},{"name":"result","line":2655},{"name":"decoded","line":2656},{"name":"a","line":2662},{"name":"b","line":2663},{"name":"t","line":2664},{"name":"result","line":2665},{"name":"decoded","line":2666},{"name":"a","line":2672},{"name":"b","line":2673},{"name":"t","line":2674},{"name":"result","line":2675},{"name":"a","line":2681},{"name":"b","line":2682},{"name":"c","line":2683},{"name":"result","line":2684},{"name":"decoded","line":2685},{"name":"a","line":2691},{"name":"b","line":2692},{"name":"c","line":2693},{"name":"result","line":2694},{"name":"decoded","line":2695},{"name":"a","line":2701},{"name":"b","line":2702},{"name":"c","line":2703},{"name":"result","line":2704},{"name":"decoded","line":2705},{"name":"a","line":2711},{"name":"b","line":2712},{"name":"c","line":2713},{"name":"result","line":2714},{"name":"x","line":2720},{"name":"result","line":2721},{"name":"decoded","line":2722},{"name":"x","line":2728},{"name":"result","line":2729},{"name":"decoded","line":2730},{"name":"x","line":2736},{"name":"result","line":2737},{"name":"decoded","line":2738},{"name":"x","line":2744},{"name":"result","line":2745},{"name":"x","line":2751},{"name":"result","line":2752},{"name":"decoded","line":2753},{"name":"e","line":2759},{"name":"result","line":2760},{"name":"decoded","line":2761},{"name":"zero","line":2767},{"name":"neg","line":2768},{"name":"x","line":2775},{"name":"result","line":2776},{"name":"decoded","line":2777},{"name":"x","line":2783},{"name":"result","line":2784},{"name":"decoded","line":2785},{"name":"base","line":2791},{"name":"exp","line":2792},{"name":"result","line":2793},{"name":"decoded","line":2794},{"name":"base","line":2800},{"name":"exp","line":2801},{"name":"result","line":2802},{"name":"decoded","line":2803},{"name":"base","line":2809},{"name":"exp","line":2810},{"name":"result","line":2811},{"name":"decoded","line":2812},{"name":"base","line":2818},{"name":"exp","line":2819},{"name":"result","line":2820},{"name":"base","line":2826},{"name":"exp","line":2827},{"name":"result","line":2828},{"name":"decoded","line":2829},{"name":"x","line":2835},{"name":"result","line":2836},{"name":"decoded","line":2837},{"name":"pi_six","line":2843},{"name":"result","line":2844},{"name":"decoded","line":2845},{"name":"x","line":2851},{"name":"result","line":2852},{"name":"decoded","line":2853},{"name":"pi_six","line":2859},{"name":"result","line":2860},{"name":"decoded","line":2861},{"name":"x","line":2867},{"name":"sin_val","line":2868},{"name":"cos_val","line":2869},{"name":"sum","line":2870},{"name":"value","line":2905},{"name":"a","line":2994},{"name":"b","line":2995},{"name":"a","line":3007},{"name":"b","line":3008},{"name":"a","line":3020},{"name":"b","line":3021},{"name":"a","line":3033},{"name":"b","line":3034},{"name":"a","line":3046},{"name":"b","line":3047},{"name":"a","line":3059},{"name":"b","line":3060},{"name":"a","line":3072},{"name":"a","line":3084},{"name":"b","line":3085},{"name":"c","line":3086},{"name":"a","line":3098},{"name":"a","line":3110},{"name":"b","line":3111},{"name":"a","line":3123},{"name":"b","line":3124},{"name":"a","line":3136},{"name":"b","line":3137},{"name":"a","line":3149},{"name":"b","line":3150},{"name":"a","line":3162},{"name":"b","line":3163},{"name":"a","line":3175},{"name":"b","line":3176},{"name":"a","line":3188},{"name":"a","line":3200},{"name":"a","line":3212},{"name":"a","line":3224},{"name":"a","line":3236},{"name":"b","line":3237},{"name":"c","line":3238},{"name":"a","line":3250},{"name":"b","line":3251},{"name":"a","line":3263},{"name":"b","line":3264},{"name":"val","line":3276},{"name":"val","line":3288},{"name":"val","line":3300},{"name":"val","line":3312},{"name":"val","line":3324},{"name":"x","line":3336},{"name":"min_val","line":3337},{"name":"max_val","line":3338},{"name":"a","line":3350},{"name":"b","line":3351},{"name":"t","line":3352},{"name":"a","line":3364},{"name":"b","line":3365},{"name":"c","line":3366},{"name":"x","line":3378},{"name":"x","line":3390},{"name":"base","line":3402},{"name":"exp","line":3403},{"name":"x","line":3415},{"name":"x","line":3427}],"imports":[],"terms":["euler","numeric","gf16","triformat","sign","shift","exp","mant","mask","max","min","bias","special","divisor","phi","zero","pos","neg","inf","nan","pow2","table","extract","bit","exponent","mantissa","components","encode","f32","abs","bits","discarded","decode","mult","round","normalized","negative","positive","negate","copy","val","sub","mul","div","fma","product","sqrt","square","floor","ceil","trunc","fms","hypot","ratio","fmod","finite","normal","subnormal","signbit","clamp","decoded","lerp","fnma","num","terms","log","log2","log10","pow","base","sin","cub","term1","term2","term3","term4","cos","term0","encoded","one","original","negated","double","orig","result1","result2","decoded1","decoded2","squared","rooted","floored","truncated","ceiled","values","fin","count","six","sum"]},{"id":"1ca3f27fd3cadb4931f82ef647d12e04f4dac20e2c632cae112490f4457c9093","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/fpga.in-repo.t27","health":"ok","module":"trinity_capability_fpga_in_repo"}],"description":"specs/trinity/capabilities/fpga.in-repo.t27 -- capability trinity/fpga.in-repo: FPGA and hardware material carried in the consumer (fpga/, hardware/, fpga-netwo One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","fpga","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"1cb1bf87cd3f9cb92778ec47f85d079c6514ad532a7f8ee777481dd031ba4651","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/comb_ternary_dot.t27","health":"warn","module":"CombTernaryDot"}],"description":"","symbols":[{"name":"tmul","line":18},{"name":"tp","line":25},{"name":"on_comb","line":30}],"imports":[],"terms":["ternary","comb","dot","tmul"]},{"id":"1cc396e757d83efa5e3b66b65cd7b238e77a5b39e8d5f277e8deceb643f566ad","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/writer.t27","health":"ok","module":"TriWriter"}],"description":"t27/specs/","symbols":[{"name":"Writer","line":13},{"name":"pure","line":23},{"name":"tell","line":28},{"name":"listen","line":33},{"name":"censor","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["writer","pure","tell","listen","censor"]},{"id":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/m3_multihop.t27","health":"ok","module":"M3MultiHop"}],"description":"M3 Multi-Hop Mesh Networking - T27 Specification Implements iperf3-over-2-hops testing with RF attenuation","symbols":[{"name":"NODE_A","line":6},{"name":"NODE_B","line":7},{"name":"NODE_C","line":8},{"name":"TARGET_THROUGHPUT_MBPS","line":11},{"name":"TARGET_LATENCY_MS","line":12},{"name":"TARGET_PACKET_LOSS_PCT","line":13},{"name":"ATTEN_MIN","line":16},{"name":"ATTEN_MAX","line":17},{"name":"IPERF3_HDR_LEN","line":20},{"name":"iperf3_sequence","line":23},{"name":"expected_loss_rate_p10","line":30},{"name":"throughput_factor_p8","line":50},{"name":"signal_quality","line":62},{"name":"total_attenuation","line":75},{"name":"delivery_rate_p8","line":85},{"name":"simulate_hop","line":98},{"name":"forward_packet","line":111},{"name":"tcp_packet_byte","line":122},{"name":"udp_packet_byte","line":139},{"name":"ST_IDLE","line":156},{"name":"ST_RUNNING","line":157},{"name":"ST_COMPLETE","line":158},{"name":"PerfCounters","line":161},{"name":"calculate_throughput_mbps","line":170},{"name":"calculate_loss_pct","line":187},{"name":"meets_targets","line":198},{"name":"test_next_state","line":209}],"imports":[],"terms":["macos","rings","rust","mesh","multihop","m3multi","hop","node","target","throughput","mbps","latency","packet","loss","pct","atten","min","max","iperf3","hdr","len","sequence","expected","rate","p10","factor","signal","quality","total","attenuation","delivery","simulate","forward","tcp","byte","udp","idle","running","complete","perf","counters","calculate","meets","targets","state"]},{"id":"1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_coding.t27","health":"ok","module":"NetworkCoding"}],"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"CODING_WINDOW","line":8},{"name":"MAX_GENERATION_SIZE","line":9},{"name":"create_packet","line":12},{"name":"get_packet_src","line":19},{"name":"get_packet_dst","line":23},{"name":"get_packet_payload","line":27},{"name":"get_packet_seq","line":31},{"name":"create_coded_packet","line":36},{"name":"get_coeff_vector","line":43},{"name":"get_coded_payload","line":47},{"name":"get_generation","line":51},{"name":"get_coded_seq","line":55},{"name":"xor_packets","line":60},{"name":"create_xoded_native","line":65},{"name":"decode_xoded_packet","line":72},{"name":"same_generation","line":86},{"name":"get_generation_id","line":97},{"name":"is_coding_beneficial","line":103},{"name":"linear_code_packets","line":109},{"name":"create_coded_generation","line":126},{"name":"get_coded_packet_gen","line":133},{"name":"count_generation_packets","line":141},{"name":"is_generation_decodable","line":151},{"name":"calculate_coding_gain","line":161}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","coding","max","packets","window","generation","size","create","packet","get","dst","payload","seq","coded","coeff","vector","xor","xoded","native","decode","beneficial","linear","gen","count","decodable","calculate","gain"]},{"id":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","sources":[{"repo":"ghashtag/t27","path":"specs/provider/adapters.t27","health":"ok","module":"provider-adapters"}],"description":"provider/adapters.t27 — HTTP Adapter Specifications HTTP request/response adapters for AI provider APIs","symbols":[{"name":"DEFAULT_TIMEOUT_MS","line":22},{"name":"DEFAULT_MAX_RETRIES","line":25},{"name":"DEFAULT_BACKOFF_MS","line":28},{"name":"MAX_BACKOFF_MS","line":31},{"name":"HTTP_METHOD_GET","line":34},{"name":"HTTP_METHOD_POST","line":37},{"name":"HTTP_METHOD_PUT","line":40},{"name":"HTTP_METHOD_DELETE","line":43},{"name":"HEADER_CONTENT_TYPE_JSON","line":46},{"name":"HEADER_AUTHORIZATION","line":49},{"name":"HEADER_ANTHROPIC_VERSION","line":52},{"name":"STATUS_OK","line":55},{"name":"STATUS_CREATED","line":58},{"name":"STATUS_UNAUTHORIZED","line":61},{"name":"STATUS_FORBIDDEN","line":64},{"name":"STATUS_NOT_FOUND","line":67},{"name":"STATUS_TOO_MANY_REQUESTS","line":70},{"name":"STATUS_INTERNAL_ERROR","line":73},{"name":"STATUS_SERVICE_UNAVAILABLE","line":76},{"name":"ENDPOINT_ANTHROPIC_MESSAGES","line":79},{"name":"ENDPOINT_OPENAI_CHAT","line":82},{"name":"HttpMethod","line":89},{"name":"HttpHeader","line":97},{"name":"HttpRequest","line":103},{"name":"HttpResponse","line":112},{"name":"AdapterConfig","line":120},{"name":"RetryPolicy","line":130},{"name":"AdapterResult","line":138},{"name":"StreamAdapterState","line":145},{"name":"StreamChunk","line":154},{"name":"RateLimitInfo","line":161},{"name":"AuthInfo","line":168},{"name":"http_header_create","line":178},{"name":"http_request_create","line":186},{"name":"http_response_create","line":197},{"name":"adapter_config_create","line":207},{"name":"base_url","line":208},{"name":"stream_chunk_create","line":224},{"name":"stream_chunk_error","line":233},{"name":"rate_limit_info_create","line":242},{"name":"auth_info_create","line":251},{"name":"adapter_result_create","line":259},{"name":"adapter_result_error","line":268},{"name":"http_method_to_string","line":277},{"name":"http_method_from_string","line":287},{"name":"is_status_success","line":300},{"name":"is_status_client_error","line":305},{"name":"is_status_server_error","line":310},{"name":"is_status_rate_limited","line":315},{"name":"is_status_unauthorized","line":320},{"name":"is_response_success","line":325},{"name":"is_adapter_success","line":330},{"name":"build_headers","line":335},{"name":"calculate_retry_delay","line":350},{"name":"delay","line":358},{"name":"get_endpoint","line":364},{"name":"get_endpoint_anthropic","line":373},{"name":"get_endpoint_openai","line":378},{"name":"header","line":387},{"name":"req","line":392},{"name":"resp","line":397},{"name":"config","line":402},{"name":"chunk","line":407},{"name":"info","line":412},{"name":"auth","line":417},{"name":"resp","line":422},{"name":"result","line":423},{"name":"result","line":428},{"name":"str","line":433},{"name":"method","line":438},{"name":"resp","line":466},{"name":"result","line":471},{"name":"headers","line":476},{"name":"delay","line":481},{"name":"endpoint","line":486}],"imports":[],"terms":["provider","adapters","default","timeout","max","retries","backoff","http","method","get","post","put","delete","header","content","json","authorization","anthropic","status","created","unauthorized","forbidden","found","too","many","requests","internal","service","unavailable","endpoint","messages","openai","chat","request","response","adapter","config","retry","policy","stream","state","chunk","rate","limit","info","auth","create","base","url","success","client","limited","build","headers","calculate","delay","req","resp","str"]},{"id":"1d3566b76489aba82ed0353281a052a571e64b4ca51c4dbd2744cf982dd37735","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/bloom_filter.t27","health":"ok","module":"TriBloomFilter"}],"description":"t27/specs/","symbols":[{"name":"BloomFilter","line":13},{"name":"init","line":24},{"name":"add","line":29},{"name":"contains","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","bloom","filter","init","contains"]},{"id":"1d6c9d7f9d279cf3f9f7ad3d4fa724c0bde2cc2a6f3d2f28f3f74b74b1c6744c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/src/codegen_python.t27","health":"warn","module":"codegen_python"}],"description":"bootstrap/src/codegen_python.rs Python Code Generator for CLARA (TA2 Deliverable) Generates Python code from .t27 specifications for PyTorch integration NOTE: This is a specification stub - full implementation is P1 priority ─────────────────────────────────────────────────────────────────────────────────────────────","symbols":[{"name":"PYTHON_MODULE_PREFIX","line":19},{"name":"map_trit_to_python_type","line":26},{"name":"map_trit_array_to_python_list","line":40},{"name":"map_struct_to_python_class","line":56},{"name":"name","line":65},{"name":"extract_identifier","line":91},{"name":"strip_prefixes","line":106},{"name":"gen_function","line":128},{"name":"gen_params","line":148}],"imports":[{"name":"base::types","line":11},{"name":"parser","line":12}],"terms":["bootstrap","codegen","python","prefix","map","trit","array","list","struct","class","extract","identifier","strip","prefixes","gen","params"]},{"id":"1d810343f5e26d852c7ebd931bba310d28129b26915bf4a6ec71c066d1199e1c","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/gf16_bfloat16_nmse.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["benchmarks","gf16","bfloat16","nmse"]},{"id":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf12.t27","health":"warn","module":"GF12"}],"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 0 12-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 4 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF12","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp","line":171},{"name":"pow","line":177},{"name":"is_integer","line":193},{"name":"ln_val","line":219},{"name":"ln_approx","line":224},{"name":"t","line":233},{"name":"t2","line":234},{"name":"t3","line":235},{"name":"t5","line":236},{"name":"t7","line":237},{"name":"exp_approx","line":243},{"name":"k","line":255},{"name":"k","line":266},{"name":"floor","line":282}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["euler","numeric","gf12","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","sources":[{"repo":"ghashtag/t27","path":"specs/tools/catalog.t27","health":"ok","module":"ToolsCatalog"}],"description":"specs/tools/catalog.t27 -- the tools catalog contract: schema 2, repository-qualified IDs, legacy resolution S06 of gHashTag/trinity#988 (gHashTag/t27#3568). specs/tools/ holds one card per tool of two repositories: the Rust tri of gHashTag/t27 (tri/.t27), the MCP servers of both (mcp/.t27), and now the Zig tri of gHashTag/trinity (trinity/tri/.t27), derived from the one registry that repository's own binary exports and its CI drift-checks (.trinity/registry.json, 29 commands). Until 2026-09-12 the README said the consumer had no tri binary; it has one, with five dispatch layers, a 187-entry command table, an","symbols":[{"name":"KIND","line":16},{"name":"ID","line":17},{"name":"NAME","line":18},{"name":"SCHEMA_VERSION","line":19},{"name":"CONSUMER_REPO","line":20},{"name":"PINNED_REVISION","line":21},{"name":"REGISTRY","line":22},{"name":"REGISTRY_RULE","line":23},{"name":"REGISTRY_VERSION","line":24},{"name":"REGISTRY_GENERATED_AT","line":25},{"name":"FAMILIES","line":27},{"name":"REPOS","line":28},{"name":"DIRECTORIES","line":29},{"name":"QUALIFIED_ID_GRAMMAR","line":30},{"name":"LEGACY_ID_GRAMMAR","line":31},{"name":"ID_RULE","line":32},{"name":"SCHEMA_2_FIELDS","line":33},{"name":"SCHEMA_2_RULE","line":34},{"name":"RESOLVE_LEGACY","line":36},{"name":"RESOLVE_NEEDS_REPOSITORY","line":37},{"name":"RESOLVE_UNKNOWN","line":38},{"name":"RESOLUTION_RULE","line":39},{"name":"MIGRATION_MESSAGE","line":40},{"name":"LEGACY_COUNT","line":41},{"name":"LEGACY_IDS","line":42},{"name":"LEGACY_TARGETS","line":43},{"name":"COLLISION_COUNT","line":45},{"name":"COLLISIONS","line":46},{"name":"WITNESSES","line":48},{"name":"WITNESS_RULE","line":49},{"name":"WITNESS_T27_TRI","line":50},{"name":"WITNESS_TRINITY_TRI","line":51},{"name":"WITNESS_MCP","line":52},{"name":"SIDE_EFFECT_CLASSES","line":54},{"name":"CAPABILITY_CLASSES","line":55},{"name":"CAPABILITY_RULE","line":56},{"name":"MODES","line":57},{"name":"STABILITIES","line":58},{"name":"NAMESPACES","line":59},{"name":"T27_TRI_CARDS","line":61},{"name":"MCP_CARDS","line":62},{"name":"TRINITY_TRI_CARDS","line":63},{"name":"TRINITY_TABLE_COMMANDS","line":64},{"name":"TRINITY_TABLE_MCP_ENABLED","line":65},{"name":"TRINITY_EXPORTED","line":66},{"name":"TRINITY_EXPORTED_UNROUTED","line":67},{"name":"UNROUTED_EXPORTED","line":68},{"name":"TRINITY_TABLE_UNROUTED","line":69},{"name":"TRINITY_EXECUTE_MAP_LIVE","line":70},{"name":"TRINITY_EXECUTE_MAP_DISABLED","line":71},{"name":"TRINITY_PARSE_TOKENS","line":72},{"name":"TRINITY_MCP_SERVER_TOOLS","line":73},{"name":"TRINITY_MCP_SERVER_MALFORMED","line":74},{"name":"TRINITY_MCP_OVERLAP","line":75},{"name":"EXPORTED_SHARE_PERCENT","line":76},{"name":"DISPATCH_LAYERS","line":77},{"name":"FINDING_COUNT","line":78},{"name":"FINDINGS","line":79},{"name":"ENABLED","line":80},{"name":"resolve_legacy","line":84},{"name":"is_collision","line":90},{"name":"legacy_selects_trinity","line":94},{"name":"witness_rank","line":98},{"name":"witness_claims_runtime","line":103},{"name":"card_is_qualified","line":107},{"name":"exported_share","line":111}],"imports":[],"terms":["catalog","kind","schema","consumer","pinned","revision","registry","rule","generated","families","repos","directories","qualified","grammar","legacy","fields","resolve","unknown","resolution","migration","count","ids","targets","collision","collisions","witnesses","witness","mcp","side","effect","classes","capability","modes","stabilities","namespaces","cards","table","commands","enabled","unrouted","execute","map","live","disabled","parse","tokens","malformed","overlap","share","percent","dispatch","layers","finding","findings","selects","rank","claims","runtime","card"]},{"id":"1ede200487415c520e1aa5406fbcb3590dbcf7fc8cc4b04879baad058619d052","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/sha256.t27","health":"ok","module":"TriSha256"}],"description":"t27/specs/","symbols":[{"name":"H0","line":13},{"name":"K","line":18},{"name":"SHA256","line":41},{"name":"init","line":51},{"name":"update","line":55},{"name":"remaining","line":58},{"name":"copy_len","line":59},{"name":"final","line":76},{"name":"bit_length","line":77},{"name":"hash","line":116},{"name":"compress_block","line":122},{"name":"T1","line":150},{"name":"T2","line":151},{"name":"Ch","line":175},{"name":"Maj","line":179},{"name":"Sigma0","line":183},{"name":"Sigma1","line":187},{"name":"sigma0","line":191},{"name":"sigma1","line":195}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","sha256","init","remaining","copy","len","final","bit","length","hash","compress","block","maj","sigma0","sigma1"]},{"id":"1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/timing_closure.t27","health":"ok","module":"TimingClosure"}],"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","symbols":[{"name":"TIMING_PASS","line":8},{"name":"TIMING_MARGINAL","line":9},{"name":"TIMING_FAIL","line":10},{"name":"MIN_PIPELINE","line":13},{"name":"MAX_PIPELINE","line":14},{"name":"TARGET_FREQ_LOW","line":17},{"name":"TARGET_FREQ_MID","line":18},{"name":"TARGET_FREQ_HIGH","line":19},{"name":"create_critical_path","line":22},{"name":"extract_delay","line":28},{"name":"extract_stages","line":32},{"name":"extract_slack","line":36},{"name":"grade_timing","line":41},{"name":"calculate_pipeline_stages","line":52},{"name":"retiming_needed","line":72},{"name":"balance_registers","line":77},{"name":"compare_critical_paths","line":82},{"name":"create_timing_report","line":91},{"name":"extract_grade","line":97},{"name":"extract_max_freq","line":101},{"name":"extract_critical_paths","line":105},{"name":"timing_closure_achieved","line":110}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","timing","closure","pass","marginal","fail","min","pipeline","max","target","freq","low","mid","high","create","critical","path","extract","delay","stages","slack","grade","calculate","retiming","needed","balance","registers","compare","paths","report","achieved"]},{"id":"1f69f78fbcbe07d6ccc592bb92f39fd33449fdf961244731c3be644e0b8b719c","sources":[{"repo":"ghashtag/t27","path":"specs/agents/f.t27","health":"ok","module":"agent_f"}],"description":"specs/agents/f.t27 -- agent t27/F, letter F of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/F). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent F - Phi (Formal Conformance)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/avs_controller_48.t27","health":"ok","module":"avs-controller-48"}],"description":"avs_controller_48.t27 — 48-pin AVS Controller Adaptive voltage scaling controller for 48-pin configuration","symbols":[{"name":"PINS_48","line":12},{"name":"VOLTAGE_MIN_MV","line":13},{"name":"VOLTAGE_MAX_MV","line":14},{"name":"VOLTAGE_STEP_MV","line":15},{"name":"VOLTAGE_LEVELS","line":16},{"name":"TARGET_MV","line":18},{"name":"HYSTERESIS_MV","line":19},{"name":"SETTLING_US","line":20},{"name":"CONTROL_PIN_OFFSET","line":22},{"name":"CONTROL_PIN_COUNT","line":23},{"name":"FREQ_MIN_KHZ","line":25},{"name":"FREQ_MAX_KHZ","line":26},{"name":"AvsState","line":32},{"name":"AvsMode","line":40},{"name":"AvsPinConfig","line":46},{"name":"AvsVoltageLevel","line":52},{"name":"AvsStatus","line":58},{"name":"AvsConfig","line":67},{"name":"avs_voltage_from_level","line":82},{"name":"avs_level_from_voltage","line":88},{"name":"avs_control_code_from_level","line":100},{"name":"avs_level_from_control_code","line":107},{"name":"avs_voltage_valid","line":117},{"name":"avs_voltage_in_hysteresis","line":123},{"name":"avs_should_adjust","line":133},{"name":"avs_config_init","line":143},{"name":"avs_config_manual","line":156},{"name":"avs_config_adaptive","line":169},{"name":"avs_status_init","line":186},{"name":"avs_status_enable","line":199},{"name":"avs_status_adjust","line":212},{"name":"new_mv","line":213},{"name":"avs_status_settled","line":226},{"name":"avs_status_fault","line":239},{"name":"avs_control_pins_start","line":256},{"name":"avs_control_pins_end","line":262},{"name":"avs_is_control_pin","line":268},{"name":"avs_control_pin_for_bit","line":274},{"name":"encode_avs_48_cmd","line":287},{"name":"op_field","line":289},{"name":"level_field","line":290},{"name":"res_field","line":291},{"name":"decode_avs_48_cmd","line":297},{"name":"opcode","line":298},{"name":"level","line":299},{"name":"reserved","line":300}],"imports":[],"terms":["euler","fpga","avs","controller","pins","voltage","min","max","step","levels","target","hysteresis","settling","control","pin","offset","count","freq","khz","state","mode","config","level","status","valid","adjust","init","manual","adaptive","enable","settled","fault","start","end","bit","encode","cmd","field","res","decode","opcode","reserved"]},{"id":"1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/area_optimization.t27","health":"ok","module":"AreaOptimization"}],"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","symbols":[{"name":"OPT_NONE","line":8},{"name":"OPT_RESOURCE_SHARE","line":9},{"name":"OPT_BIT_WIDTH_REDUCE","line":10},{"name":"OPT_CONST_FOLD","line":11},{"name":"OPT_FIFO_TO_RAM","line":12},{"name":"estimate_complexity","line":15},{"name":"calculate_sharing_savings","line":21},{"name":"calculate_bitwidth_savings","line":29},{"name":"const_folding_applicable","line":37},{"name":"fifo_to_ram_applicable","line":43},{"name":"create_resource_type","line":49},{"name":"extract_resource_type","line":53},{"name":"extract_resource_amount","line":57},{"name":"create_optimization_result","line":62},{"name":"extract_strategy","line":68},{"name":"extract_original","line":72},{"name":"extract_optimized","line":76},{"name":"calculate_savings_percentage","line":81},{"name":"optimization_worthwhile","line":92},{"name":"analyze_bit_width","line":98}],"imports":[{"name":"base::types","line":5}],"terms":["net","area","optimization","opt","resource","share","bit","width","reduce","fold","fifo","ram","estimate","complexity","calculate","sharing","savings","bitwidth","folding","applicable","create","extract","amount","strategy","original","optimized","percentage","worthwhile","analyze"]},{"id":"1fc5326fdc967b490bc96fbfa827017ccf29246ba0dbbd5363feea2c0cb845e4","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/spi_tb.t27","health":"ok","module":"SPI_Testbench"}],"description":"t27/specs/fpga/testbench/spi_tb.t27 SPI Master Testbench Specification Tests SPI transfer, clock generation, chip select, and mode handling","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"SPI_CLK_DIV","line":12},{"name":"tick","line":31},{"name":"reset","line":36},{"name":"spi_transfer","line":44},{"name":"on_comb","line":137}],"imports":[{"name":"fpga::spi::SPI_Master","line":8}],"terms":["fpga","testbench","spi","clk","period","sim","timeout","div","tick","reset","transfer","comb"]},{"id":"1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/congestion_control.t27","health":"warn","module":"congestion_control"}],"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"INITIAL_WINDOW","line":8},{"name":"MAX_WINDOW","line":9},{"name":"MIN_WINDOW","line":10},{"name":"CONGESTION_THRESHOLD","line":11},{"name":"create_congestion_state","line":14},{"name":"get_cwnd","line":21},{"name":"get_ssthresh","line":25},{"name":"get_congestion_state","line":29},{"name":"get_loss_count","line":33},{"name":"STATE_SLOW_START","line":38},{"name":"STATE_CONGESTION_AVOIDANCE","line":39},{"name":"STATE_FAST_RECOVERY","line":40},{"name":"STATE_FAST_RETRANSMIT","line":41},{"name":"initialize_congestion","line":44},{"name":"on_ack","line":49},{"name":"on_loss","line":76},{"name":"on_triple_dup_ack","line":99},{"name":"get_effective_window","line":126},{"name":"is_congested","line":137},{"name":"calculate_sending_rate","line":148},{"name":"estimate_bandwidth","line":159},{"name":"find_congestion_controller","line":170},{"name":"is_any_flow_congested","line":184},{"name":"calculate_total_cwnd","line":198},{"name":"allocate_fair_bandwidth","line":211},{"name":"probe_bandwidth","line":231},{"name":"reset_after_timeout","line":248}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","congestion","control","max","flows","initial","window","min","threshold","create","state","get","cwnd","ssthresh","loss","count","slow","start","avoidance","fast","recovery","retransmit","initialize","ack","triple","dup","effective","congested","calculate","sending","rate","estimate","bandwidth","find","controller","flow","total","allocate","fair","probe","reset","timeout"]},{"id":"1fe501e74db1912e57663fd489c9c1e004902d23cd4b1efe3fba43bc9f62bc9f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/twr_timestamp.t27","health":"ok","module":"TwrTimestamp"}],"description":"Two-way-ranging (TWR) nanosecond timestamp unit -- the hardware timing primitive that gives cm-accurate node geometry for RTI self-localization (replacing coarse RSSI ranging). A free-running counter is captured (latched) on a TX/RX event strobe; the captured timestamps feed the two-way double-difference, which cancels the constant clock OFFSET between two independent boards (and first-order drift). This is the source of truth generated to Verilog + Rust via the golden pipeline; the app's radar consumes the resulting geometry over packet 34.","symbols":[{"name":"tick","line":13},{"name":"capture","line":18},{"name":"elapsed","line":23},{"name":"twr_tof","line":30}],"imports":[{"name":"base::types","line":10}],"terms":["net","twr","timestamp","tick","capture","elapsed","tof"]},{"id":"200348b47b5ced0087818255bde50e7bac8c0e479fef9f399fcc685e09f0cc34","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/vsa/ops.t27","health":"warn","module":"vsa_ops"}],"description":"","symbols":[],"imports":[],"terms":["fpga","vsa","ops"]},{"id":"204c8939483e6bb18f55dce184335a73236072e718045cf2308a35b76525a390","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adagrad.t27","health":"ok","module":"Adagrad"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LR","line":13},{"name":"DEFAULT_EPSILON","line":14},{"name":"DEFAULT_WEIGHT_DECAY","line":15},{"name":"AdagradConfig","line":21},{"name":"AdagradState","line":27},{"name":"init_state","line":36},{"name":"update","line":41}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","adagrad","default","epsilon","weight","decay","config","state","init"]},{"id":"20563b5638a432017af358e732d4c4b864b29c17d2d521cfe2a807d49d0387a9","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/self_attention.t27","health":"ok","module":"SelfAttention"}],"description":"t27/specs/","symbols":[{"name":"D_MODEL","line":13},{"name":"SelfAttentionConfig","line":19},{"name":"SelfAttentionWeights","line":25},{"name":"SelfAttentionState","line":32},{"name":"forward","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","self","attention","model","config","weights","state","forward"]},{"id":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","sources":[{"repo":"ghashtag/t27","path":"specs/file/operations.t27","health":"fail","module":"FileOperations"}],"description":"specs/file/operations.t27 File Operations","symbols":[{"name":"read","line":14},{"name":"read_range","line":19},{"name":"read_binary","line":24},{"name":"exists","line":29},{"name":"stat","line":34},{"name":"write","line":43},{"name":"write_binary","line":48},{"name":"append","line":53},{"name":"edit","line":58},{"name":"edit_all","line":63},{"name":"insert","line":68},{"name":"delete","line":73},{"name":"list","line":82},{"name":"list_recursive","line":87},{"name":"create_dir","line":92},{"name":"delete_dir","line":97},{"name":"move_path","line":102},{"name":"copy","line":107},{"name":"delete","line":112},{"name":"is_ignored","line":121},{"name":"load_ignore_rules","line":126},{"name":"add_ignore_pattern","line":131},{"name":"normalize","line":140},{"name":"join","line":145},{"name":"dirname","line":150},{"name":"basename","line":155},{"name":"extname","line":160},{"name":"relative","line":165},{"name":"absolute","line":170},{"name":"resolve","line":175},{"name":"detect_type","line":184},{"name":"count_lines","line":189},{"name":"truncate","line":194}],"imports":[{"name":"base::types","line":6},{"name":"file::schema","line":7}],"terms":["operations","read","range","binary","exists","stat","write","append","edit","insert","delete","list","recursive","create","dir","move","path","copy","ignored","load","ignore","rules","pattern","normalize","join","dirname","basename","extname","relative","absolute","resolve","detect","count","truncate"]},{"id":"207e008007cc79b66f7d80aac725675cff7bcd2f3029497cf29d15cb5d8702ac","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/systolic_array.t27","health":"ok","module":"igla-race-systolic-array"}],"description":"t27/specs/igla/race/systolic_array.t27 2x2 weight-stationary systolic GEMM Registered partial products, shift-add Booth multipliers R-SI-1: zero '*' operators in generated assignments","symbols":[{"name":"Mat2x2","line":15},{"name":"SystolicState","line":22},{"name":"booth_mul_u32","line":39},{"name":"booth_mul_u32_inner","line":43},{"name":"booth_mul_i16","line":51},{"name":"systolic_init","line":64},{"name":"systolic_step","line":80},{"name":"systolic_result","line":101},{"name":"systolic_gemm_2x2","line":111}],"imports":[{"name":"base::types","line":9}],"terms":["igla","race","systolic","array","mat2x2","state","booth","mul","u32","inner","i16","init","step","gemm","2x2"]},{"id":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/commerce.t27","health":"ok","module":"commerce"}],"description":"specs/turbobaby/commerce.t27 -- cart, checkout, order, and replay safety for bike deals This contract owns the transactional seam that the catalog and pricing contracts stop before: a cart is locked, exactly one deal shape is selected, an authoritative quote is snapshotted, fulfillment is admissible, an idempotency key chooses create/replay/conflict, and a committed order makes the cart terminal. It covers both rental and sale without pretending they are the same payload. D7 fixes the spelling `fulfillment`; D8 fixes a rental line on a family rather","symbols":[{"name":"KIND","line":35},{"name":"ID","line":36},{"name":"NAME","line":37},{"name":"IMPLEMENTATION_BOUNDARY","line":38},{"name":"DEAL_INVALID","line":41},{"name":"DEAL_RENTAL","line":42},{"name":"DEAL_SALE","line":43},{"name":"DEAL_NAMES","line":44},{"name":"CART_STATE_INVALID","line":47},{"name":"CART_STATE_OPEN","line":48},{"name":"CART_STATE_LOCKED","line":49},{"name":"CART_STATE_CONVERTED","line":50},{"name":"CART_STATE_ABANDONED","line":51},{"name":"CART_STATE_NAMES","line":52},{"name":"FULFILLMENT_INVALID","line":55},{"name":"FULFILLMENT_PICKUP","line":56},{"name":"FULFILLMENT_DELIVERY","line":57},{"name":"FULFILLMENT_NAMES","line":58},{"name":"IDEM_REJECT_KEY","line":61},{"name":"IDEM_CREATE_NEW","line":62},{"name":"IDEM_RETURN_PRIOR","line":63},{"name":"IDEM_IN_PROGRESS","line":64},{"name":"IDEM_CONFLICT","line":65},{"name":"IDEM_DECISION_COUNT","line":66},{"name":"CHECKOUT_READY","line":69},{"name":"CHECKOUT_BAD_DEAL","line":70},{"name":"CHECKOUT_BAD_CART_STATE","line":71},{"name":"CHECKOUT_PRICE_UNAUTHORIZED","line":72},{"name":"CHECKOUT_NOT_FULFILLABLE","line":73},{"name":"CHECKOUT_QUOTE_INVALID","line":74},{"name":"CHECKOUT_FULFILLMENT_INVALID","line":75},{"name":"CHECKOUT_IDEMPOTENCY_BLOCKED","line":76},{"name":"CHECKOUT_RETURN_PRIOR","line":77},{"name":"QUOTE_SNAPSHOT_RULE","line":79},{"name":"IDEMPOTENCY_COMMIT_RULE","line":80},{"name":"commerce_deal_is_known","line":82},{"name":"commerce_deal_shape_valid","line":87},{"name":"commerce_deal_fulfillable","line":99},{"name":"commerce_cart_state_is_known","line":109},{"name":"commerce_cart_transition_allowed","line":115},{"name":"commerce_quote_snapshot_valid","line":138},{"name":"commerce_quote_snapshot_may_replace","line":142},{"name":"commerce_fulfillment_valid","line":148},{"name":"commerce_idempotency_decision","line":160},{"name":"commerce_idempotency_permits_write","line":176},{"name":"commerce_idempotency_returns_prior","line":180},{"name":"commerce_idempotency_record_is_durable","line":185},{"name":"commerce_checkout_decision","line":191},{"name":"commerce_checkout_may_commit","line":222},{"name":"commerce_order_transition_allowed","line":229},{"name":"upstream_fulfillable","line":337},{"name":"shape_valid","line":338},{"name":"quote_valid","line":339},{"name":"fulfillment_valid","line":340},{"name":"upstream_fulfillable","line":345},{"name":"shape_valid","line":346},{"name":"quote_valid","line":347},{"name":"fulfillment_valid","line":348}],"imports":[],"terms":["turbobaby","user","bot","commerce","kind","boundary","deal","invalid","rental","sale","cart","state","open","locked","converted","abandoned","fulfillment","pickup","delivery","idem","reject","key","create","prior","progress","conflict","decision","count","checkout","ready","bad","price","unauthorized","fulfillable","quote","idempotency","blocked","snapshot","rule","commit","known","shape","valid","transition","allowed","may","replace","permits","write","returns","record","durable","order","upstream"]},{"id":"20cddd29275d167e40e4a8f6194bf3217524e63de3616a9e1db28bb37ccf0b1f","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/random.t27","health":"warn","module":"TrinityMemoryRandom"}],"description":"Integer-seeded Python Random compatibility; no heap or OS dependency. Sources: CPython v3.14.3 Modules/_randommodule.c and Lib/random.py. State and input/output/scratch buffers must be live and nonoverlapping. Initialize before use. Non-cryptographic, for reproducible experiments. Direct bits/below helpers have documented valid domains; checked wrappers return -70 invalid argument / -71 capacity without consuming random state.","symbols":[{"name":"TM_RANDOM_ERR_ARGUMENT","line":31},{"name":"TM_RANDOM_ERR_CAPACITY","line":32},{"name":"TMRandom","line":33},{"name":"tm_random_seed_words","line":35},{"name":"tm_random_init","line":60},{"name":"tm_random_init_i64","line":64},{"name":"tm_random_u32","line":68},{"name":"tm_random_bits","line":90},{"name":"tm_random_getrandbits","line":96},{"name":"tm_random_bit_length","line":99},{"name":"tm_random_below64","line":104},{"name":"tm_random_below","line":109},{"name":"tm_random_choice","line":110},{"name":"tm_random_random","line":114},{"name":"tm_random_add_offset","line":119},{"name":"tm_random_randint","line":125},{"name":"tm_random_range","line":135},{"name":"tm_random_sample_scratch","line":151},{"name":"tm_random_sample","line":164}],"imports":[],"terms":["dmitrii","memory","random","err","argument","capacity","tmrandom","seed","words","init","i64","u32","bits","getrandbits","bit","length","below64","below","choice","offset","randint","range","sample","scratch"]},{"id":"20e12b46c7f71fa6e8ea4d6338b944a42c95b37123debf8fc73aa36e2ed2e071","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/witness_mechanism_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","witness","mechanism","audit"]},{"id":"20fcb88dc7cbe68d71676487adce5aaee365541aa7fcc16fbccc56b2405c2c2c","sources":[{"repo":"ghashtag/t27","path":"specs/server/project.t27","health":"ok","module":"Project"}],"description":"specs/server/project.t27 Project Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"Project","line":14},{"name":"FileEntry","line":24},{"name":"ProjectManager","line":34},{"name":"project_manager_init","line":40},{"name":"create_project","line":52},{"name":"id","line":53},{"name":"get_project","line":71},{"name":"get_current_project","line":82},{"name":"set_current_project","line":86},{"name":"list_projects","line":100},{"name":"delete_project","line":104},{"name":"read_file","line":129},{"name":"write_file","line":133},{"name":"file_exists","line":137},{"name":"list_files","line":141},{"name":"project","line":151},{"name":"created","line":159},{"name":"retrieved","line":160},{"name":"p1","line":166},{"name":"p2","line":167},{"name":"result","line":168},{"name":"project","line":182},{"name":"result","line":183},{"name":"project","line":190},{"name":"current","line":191},{"name":"mgr","line":196},{"name":"exists","line":202}],"imports":[{"name":"base::types","line":8}],"terms":["project","entry","manager","init","create","get","set","list","projects","delete","read","write","exists","created","retrieved","mgr"]},{"id":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/avs_controller_96.t27","health":"warn","module":"avs-controller-96"}],"description":"avs_controller_96.t27 — 96-pin AVS Controller Adaptive voltage scaling controller for 96-pin configuration","symbols":[{"name":"PINS_96","line":12},{"name":"VOLTAGE_MIN_MV","line":13},{"name":"VOLTAGE_MAX_MV","line":14},{"name":"VOLTAGE_STEP_MV","line":15},{"name":"VOLTAGE_LEVELS","line":16},{"name":"TARGET_MV","line":18},{"name":"HYSTERESIS_MV","line":19},{"name":"SETTLING_US","line":20},{"name":"CONTROL_PIN_OFFSET","line":22},{"name":"CONTROL_PIN_COUNT","line":23},{"name":"FREQ_MIN_KHZ","line":25},{"name":"FREQ_MAX_KHZ","line":26},{"name":"DUAL_CHANNEL","line":28},{"name":"CHANNEL_PIN_GROUPS","line":29},{"name":"AvsChannel","line":35},{"name":"AvsState","line":41},{"name":"AvsMode","line":50},{"name":"AvsChannelConfig","line":57},{"name":"AvsPinConfig","line":65},{"name":"AvsVoltageLevel","line":71},{"name":"AvsStatus","line":77},{"name":"AvsConfig","line":86},{"name":"avs_voltage_from_level","line":102},{"name":"avs_level_from_voltage","line":108},{"name":"avs_control_code_from_level","line":120},{"name":"avs_level_from_control_code","line":126},{"name":"avs_voltage_valid","line":136},{"name":"avs_voltage_in_hysteresis","line":142},{"name":"avs_should_adjust","line":152},{"name":"avs_config_init","line":162},{"name":"avs_config_dual","line":176},{"name":"avs_config_adaptive","line":190},{"name":"avs_channel_init","line":208},{"name":"avs_channel_enable","line":220},{"name":"avs_channel_adjust","line":232},{"name":"new_mv","line":233},{"name":"avs_status_init","line":249},{"name":"avs_status_enable","line":262},{"name":"avs_status_calibrate","line":285},{"name":"avs_status_calibration_complete","line":298},{"name":"avs_status_fault","line":311},{"name":"avs_control_pins_start","line":328},{"name":"avs_control_pins_end","line":334},{"name":"avs_control_pins_secondary_start","line":340},{"name":"avs_control_pins_secondary_end","line":346},{"name":"avs_is_control_pin","line":352},{"name":"avs_is_control_pin_primary","line":358},{"name":"avs_is_control_pin_secondary","line":364},{"name":"avs_control_pin_for_bit","line":370},{"name":"encode_avs_96_cmd","line":388},{"name":"op_field","line":390},{"name":"level_field","line":391},{"name":"channel_field","line":392},{"name":"decode_avs_96_cmd","line":398},{"name":"opcode","line":399},{"name":"level","line":400},{"name":"channel","line":401}],"imports":[],"terms":["euler","fpga","avs","controller","pins","voltage","min","max","step","levels","target","hysteresis","settling","control","pin","offset","count","freq","khz","dual","channel","groups","state","mode","config","level","status","valid","adjust","init","adaptive","enable","calibrate","calibration","complete","fault","start","end","secondary","primary","bit","encode","cmd","field","decode","opcode"]},{"id":"211dd0f9c8c34a870c22c7da964cd97b0015c6677161e3493ee12c5afdfae35d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_writer.t27","health":"ok","module":"SpecWriter"}],"description":"t27/specs/","symbols":[{"name":"SpecField","line":13},{"name":"SpecType","line":17},{"name":"SpecBehavior","line":20},{"name":"SpecTemplate","line":26},{"name":"WriteResult","line":32}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","writer","field","behavior","template","write"]},{"id":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":16},{"name":"PHI_SQ","line":20},{"name":"PhiSplitResult","line":39},{"name":"phi_split","line":46},{"name":"available","line":47},{"name":"phi_sq","line":48},{"name":"exp_raw","line":51},{"name":"exp_bits","line":52},{"name":"mant_bits","line":55},{"name":"ratio","line":57},{"name":"phi_dist","line":58},{"name":"FormatComparison","line":72},{"name":"verify_phi_split","line":83},{"name":"phi_ratio_derivation","line":172},{"name":"sacred_connection","line":206},{"name":"compute_phi_distance","line":214},{"name":"ratio","line":215},{"name":"is_phi_optimal","line":219},{"name":"recommend_format","line":223},{"name":"round","line":231},{"name":"abs","line":237},{"name":"pow","line":244}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["fpga","numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","derivation","sacred","connection","compute","distance","optimal","recommend","round","abs","pow"]},{"id":"21484c1e4832c65088a8b16411adcd3cee75140dd0e98c49beb09f13acbf10dd","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/06_structs_enums_switch.t27","health":"ok","module":"tutorial-06-structs"}],"description":"06 — Structs, enums, and switch Lesson 6. Grouping fields, naming a fixed set of states, and choosing between them. . The important rule in this file: `switch` is an EXPRESSION here. The statement form parses without complaint and then discards the body of the","symbols":[{"name":"TRIT_NEG","line":14},{"name":"TRIT_ZERO","line":15},{"name":"TRIT_POS","line":16},{"name":"Sample","line":27},{"name":"make_sample","line":48},{"name":"empty_sample","line":52},{"name":"sample_value","line":57},{"name":"sample_is_valid","line":61},{"name":"Trit","line":71},{"name":"Rounding","line":77},{"name":"trit_to_number","line":91},{"name":"rounding_bias","line":99},{"name":"describe_width","line":109},{"name":"category","line":110},{"name":"s","line":124}],"imports":[],"terms":["tutorial","structs","enums","switch","trit","neg","zero","pos","sample","make","empty","valid","rounding","bias","describe","width","category"]},{"id":"21a656adb73fbc5fa02c0ae82807e24666fe20c954806a21203ed54b742bb9e6","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/lucas.t27","health":"ok","module":"tool_trinity_tri_lucas"}],"description":"specs/tools/trinity/tri/lucas.t27 -- tool gHashTag/trinity:tri/lucas, the `tri lucas` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/lucas`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["lucas","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"21b016c6929f2280608718aef11682faa3254a6524af4cb3e50b6bbd43c79b37","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/cli.tri.t27","health":"ok","module":"trinity_capability_cli_tri"}],"description":"specs/trinity/capabilities/cli.tri.t27 -- capability trinity/cli.tri: The tri command-line interface of the consumer (src/tri) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","cli","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"2246bd2af584f9e2c3b1b8ade8c1032ef03aed4b1cbb46256a1c3af100be63e6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_sub.t27","health":"ok","module":"TriGftSub"}],"description":"TRI-NET verifiable GF-T16 SUBTRACTION (different-sign add): the deferred case of tri_gft_add. Adding two DIFFERENT-sign operands subtracts magnitudes, which can CANCEL leading bits and needs variable renormalization -- the hard float case. Correctness needs FULL PRECISION during the subtract (a truncated alignment then a left-renormalization amplifies the error and mis-rounds). With |a| >= |b| and d = offset_a - offset_b:","symbols":[{"name":"MANT_ONE","line":20},{"name":"MANT_BITS","line":21},{"name":"ALIGN_CAP","line":22},{"name":"hi_bit","line":26},{"name":"norm_sig_p","line":65},{"name":"gft_sub_offset_p","line":74},{"name":"gft_sub_mant_p","line":102},{"name":"norm_sig","line":126},{"name":"gft_sub_offset","line":129},{"name":"gft_sub_mant","line":132},{"name":"gft_sub_offset_c","line":138},{"name":"gft_sub_mant_c","line":153},{"name":"verify_gft_sub","line":171},{"name":"gft_sub_offset_c_p","line":180},{"name":"gft_sub_mant_c_p","line":195},{"name":"verify_gft_sub_p","line":210},{"name":"hi_bit_u64","line":226},{"name":"norm_sig_u64","line":293},{"name":"gft_sub_offset_u64","line":301},{"name":"gft_sub_mant_u64","line":328},{"name":"gft_sub_offset_c_u64","line":351},{"name":"gft_sub_mant_c_u64","line":366},{"name":"verify_gft_sub_u64","line":381}],"imports":[{"name":"base::types","line":18}],"terms":["net","gft","sub","mant","one","bits","align","cap","bit","norm","sig","offset","verify","u64"]},{"id":"22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_enc.t27","health":"ok","module":"PositionalEncoding"}],"description":"t27/specs/ml/transformer/positional_enc.t27","symbols":[{"name":"PHI","line":15},{"name":"INV_PHI","line":16},{"name":"PHI_SQUARED","line":17},{"name":"THETA_BASE","line":18},{"name":"PHI_THETA_BASE","line":19},{"name":"DEFAULT_MAX_POSITION","line":20},{"name":"DEFAULT_ROTARY_DIM","line":21},{"name":"RoPEConfig","line":27},{"name":"RoPEState","line":35},{"name":"RotaryResult","line":43},{"name":"init","line":54},{"name":"rotate_half","line":67},{"name":"apply_rotary","line":74},{"name":"forward","line":83},{"name":"forward_batch","line":93},{"name":"compute_inv_freq","line":100},{"name":"phi_optimized_theta","line":107},{"name":"extend_cache","line":113},{"name":"get_theta_base","line":120},{"name":"scaling_position","line":127}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"math::trigonometry","line":8},{"name":"numeric::gf16","line":9}],"terms":["transformer","positional","enc","encoding","phi","inv","squared","theta","base","default","max","position","rotary","dim","peconfig","pestate","init","rotate","half","apply","forward","batch","compute","freq","optimized","extend","cache","get","scaling"]},{"id":"22bb9ec2480d0efd0693f540c91de0ad95613e2fb560a7cf49143142e57b49b5","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf16.t27","health":"ok","module":"triformat_tnf16"}],"description":"tnf16.t27 -- TNF16: Ternary Network Float. A fixed-field GoldenFloat whose EXPONENT is a balanced-ternary number, built to beat tekum16 on a ternary fabric: no regime decode (tekum16's main cost), the exponent is added natively in balanced ternary, and the mantissa keeps GF16's phi-optimal uniform 9-bit precision (vs tekum16 tapering to ~4 bits at extremes). layout: [ sign(1) | E = 4 balanced-ternary trits | M = 11 binary bits ]","symbols":[{"name":"SIGN_BITS","line":20},{"name":"EXP_TRITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_OFFSET","line":23},{"name":"OFFSET_MAX","line":24},{"name":"exp_offset","line":28},{"name":"is_finite","line":35},{"name":"exp_values","line":40}],"imports":[{"name":"base::types","line":18}],"terms":["numeric","tnf16","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"22f09be2b6651090b1704700bf03ee6e25c741ef726c92c34171cb37e0eb4fa4","sources":[{"repo":"ghashtag/t27","path":"specs/functions/analytics-sales-advise.t27","health":"ok","module":"fn_analytics_sales_advise"}],"description":"specs/functions/analytics-sales-advise.t27 -- function analytics-sales-advise (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=analytics-sales-advise). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L54 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","analytics","sales","advise","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_framework.t27","health":"warn","module":"test_framework"}],"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","symbols":[{"name":"MAX_TESTS","line":7},{"name":"MAX_ASSERTIONS","line":8},{"name":"MAX_SUITES","line":9},{"name":"COVERAGE_TARGET","line":10},{"name":"create_test_result","line":13},{"name":"get_test_id","line":20},{"name":"get_test_status","line":24},{"name":"get_assertion_count","line":28},{"name":"get_failure_count","line":32},{"name":"STATUS_PASS","line":37},{"name":"STATUS_FAIL","line":38},{"name":"STATUS_SKIP","line":39},{"name":"STATUS_ERROR","line":40},{"name":"create_test_case","line":43},{"name":"get_test_case_id","line":50},{"name":"get_function_id","line":54},{"name":"get_test_input","line":58},{"name":"get_expected_output","line":62},{"name":"create_assertion","line":67},{"name":"get_assertion_type","line":74},{"name":"get_actual_value","line":78},{"name":"get_expected_value","line":82},{"name":"get_line_number","line":86},{"name":"ASSERT_EQUAL","line":91},{"name":"ASSERT_NOT_EQUAL","line":92},{"name":"ASSERT_GREATER","line":93},{"name":"ASSERT_LESS","line":94},{"name":"ASSERT_RANGE","line":95},{"name":"ASSERT_BITMASK","line":96},{"name":"check_assertion","line":99},{"name":"run_test_case","line":148},{"name":"create_test_suite","line":168},{"name":"get_suite_id","line":175},{"name":"get_suite_test_count","line":179},{"name":"get_setup_id","line":183},{"name":"get_teardown_id","line":187},{"name":"run_test_suite","line":192},{"name":"create_coverage_data","line":220},{"name":"get_coverage_function_id","line":227},{"name":"get_branch_count","line":231},{"name":"get_covered_branches","line":235},{"name":"get_line_count","line":239},{"name":"calculate_coverage_percentage","line":244},{"name":"aggregate_coverage","line":256},{"name":"create_property_test","line":275},{"name":"get_property_id","line":282},{"name":"get_generator_count","line":286},{"name":"get_property_test_count","line":290},{"name":"get_property_failure_count","line":294},{"name":"generate_test_input","line":299},{"name":"run_property_test","line":315},{"name":"create_test_summary","line":333},{"name":"get_total_tests","line":340},{"name":"get_passed_tests","line":344},{"name":"get_failed_tests","line":348},{"name":"get_skipped_tests","line":352},{"name":"calculate_pass_rate","line":357},{"name":"meets_coverage_target","line":369},{"name":"generate_test_report","line":378}],"imports":[{"name":"base::types","line":5}],"terms":["net","framework","max","assertions","suites","target","create","get","status","assertion","count","failure","pass","fail","skip","case","expected","actual","assert","equal","greater","less","range","bitmask","suite","setup","teardown","data","branch","covered","branches","calculate","percentage","aggregate","property","generator","generate","summary","total","passed","failed","skipped","rate","meets","report"]},{"id":"238294bec292fc2ae75519984696c9e649f3828ec49be8d88c65d7c2a19d129b","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_04.t27","health":"warn","module":"damage_class_04"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"2387a4d9b48f4cdbdcea0ac11b1a3e95b82a71b42f9967d7318bc838c899f333","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf32.t27","health":"warn","module":"GF32"}],"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 — 32-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 8 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF32","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":71},{"name":"sign","line":72},{"name":"exp_biased","line":73},{"name":"mant","line":74},{"name":"exp_unbiased","line":82},{"name":"mant_normalized","line":89},{"name":"value","line":95},{"name":"max_value","line":107},{"name":"mant_max","line":108},{"name":"exp_max","line":109},{"name":"min_positive","line":113},{"name":"mant_min","line":114},{"name":"exp_min","line":115},{"name":"epsilon","line":119},{"name":"validate_format","line":127},{"name":"fmt","line":128},{"name":"MEMORY_RATIO_VS_FP32","line":150},{"name":"floor_log2","line":156},{"name":"extract_mantissa","line":170},{"name":"normalized","line":171},{"name":"frac","line":172},{"name":"max_mant","line":173},{"name":"clamp_u16","line":177},{"name":"pow","line":183},{"name":"is_integer","line":199},{"name":"ln_val","line":225},{"name":"ln_approx","line":230},{"name":"t","line":239},{"name":"t2","line":240},{"name":"t3","line":241},{"name":"t5","line":242},{"name":"t7","line":243},{"name":"exp_approx","line":249},{"name":"k","line":261},{"name":"k","line":272},{"name":"floor","line":288}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf32","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"2416eaf9b2f2d540b48a31f6006c594dac887d48f5f3d83faa7362c63466185b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/readme_index_divergence.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","readme","index","divergence"]},{"id":"24514db009440e8309a739afbbf9360fea66059fdee08a09eb0f87ad0d0dcf77","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/queen/lotus.t27","health":"warn","module":"queen_lotus"}],"description":"","symbols":[],"imports":[],"terms":["fpga","queen","lotus"]},{"id":"249105154a42777f5e4f32a1e565d18565c1268a054515e331a1f83fee04fdbe","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/net.t27","health":"ok","module":"TriNet"}],"description":"t27/specs/","symbols":[{"name":"IpAddress","line":13},{"name":"SocketAddr","line":18},{"name":"parse_ip","line":28},{"name":"is_localhost","line":33},{"name":"is_valid_port","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","address","socket","addr","parse","localhost","valid","port"]},{"id":"2496a572dc04d4f7e615f0d235fd6cda542d1a10caf6abc91ee4ef3a3e36da1e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/t27-traceability.t27","health":"ok","module":"tool_mcp_t27_traceability"}],"description":"specs/tools/mcp/t27-traceability.t27 -- tool mcp/t27-traceability, MCP server \"t27-traceability\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/t27-traceability). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","traceability","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"24b113adaed5f1cd1db118bbe253e90ccb98b4981ca296427ee81929baac6ed2","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/errors.t27","health":"ok","module":"trinity_matrix_errors"}],"description":"trinity_matrix/errors.t27 -- feature errors: a status code returned in-band, as the Trinity specs write it (TMS_ERR_* style): no error union, one code per outcome, tests on the codes.","symbols":[{"name":"OK","line":6},{"name":"ERR_RANGE","line":7},{"name":"ERR_EMPTY","line":8},{"name":"check_digit","line":10}],"imports":[],"terms":["bootstrap","fixtures","matrix","err","range","empty","digit"]},{"id":"2508126a477a8a323b133af6f2fb4c26d88be031b678b2b54de2a55656ad0cc0","sources":[{"repo":"ghashtag/t27","path":"specs/agents/g.t27","health":"ok","module":"agent_g"}],"description":"specs/agents/g.t27 -- agent t27/G, letter G of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/G). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent G - Gamma (Graph)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"254048f421bfdd4950c606621dde53e6e7b157b8f22c6f105fb4cd16e3572132","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf64.t27","health":"warn","module":"triformat-gf64"}],"description":"gf64.t27 — GoldenFloat64 Encode/Decode GF64: 64-bit floating point with 1 sign + 18 exponent + 45 mantissa Bit layout: [S(1) E(18) M(45)] = [63:63][62:45][44:0]","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"SPECIAL_EXP","line":25},{"name":"MANT_DIVISOR","line":27},{"name":"MANT_DIVISOR_SHIFT","line":28},{"name":"PHI_BIAS","line":30},{"name":"GF64_ZERO_POS","line":33},{"name":"GF64_ZERO_NEG","line":34},{"name":"GF64_INF_POS","line":35},{"name":"GF64_INF_NEG","line":36},{"name":"GF64_NAN","line":37},{"name":"GF64","line":43},{"name":"gf64_extract_sign","line":52},{"name":"bit","line":53},{"name":"gf64_extract_exponent","line":60},{"name":"gf64_extract_mantissa","line":67},{"name":"gf64_from_components","line":73},{"name":"sign_bit","line":74},{"name":"gf64_is_zero","line":82},{"name":"gf64_is_special","line":88},{"name":"gf64_is_inf","line":94},{"name":"exp","line":95},{"name":"mant","line":96},{"name":"gf64_is_nan","line":102},{"name":"exp","line":103},{"name":"mant","line":104},{"name":"gf64_encode_f64","line":111},{"name":"sign","line":128},{"name":"abs_value","line":129},{"name":"f64_bits","line":132},{"name":"discarded","line":153},{"name":"gf64_decode_f64","line":172},{"name":"sign","line":189},{"name":"exp","line":190},{"name":"mant","line":191},{"name":"bias_adjusted","line":194},{"name":"mant_f64","line":195},{"name":"value","line":196},{"name":"gf64_add","line":203},{"name":"fa","line":204},{"name":"fb","line":205},{"name":"gf64_sub","line":211},{"name":"fa","line":212},{"name":"fb","line":213},{"name":"gf64_mul","line":219},{"name":"fa","line":220},{"name":"fb","line":221},{"name":"gf64_div","line":227},{"name":"fb","line":228},{"name":"fa","line":230},{"name":"fa","line":233},{"name":"gf64_abs","line":239},{"name":"gf64_neg","line":245},{"name":"gf64_is_equal","line":251},{"name":"gf64_is_greater","line":265},{"name":"sign_a","line":270},{"name":"sign_b","line":271},{"name":"gf64_max","line":284},{"name":"gf64_min","line":290},{"name":"gf64_clamp","line":296},{"name":"gf64_lerp","line":302},{"name":"ft","line":303},{"name":"result","line":304},{"name":"gf64_from_u32","line":310},{"name":"gf64_to_u32","line":317},{"name":"value","line":321},{"name":"gf64_from_i32","line":330},{"name":"gf64_to_i32","line":337},{"name":"value","line":341}],"imports":[],"terms":["euler","numeric","gf64","triformat","sign","shift","exp","mant","mask","max","min","bias","special","divisor","phi","zero","pos","neg","inf","nan","extract","bit","exponent","mantissa","components","encode","f64","abs","bits","discarded","decode","adjusted","sub","mul","div","equal","greater","clamp","lerp","u32","i32"]},{"id":"25c264ef6a580c0f8e95234a7bb4175d440e72138d4fff0e90027ab3ccb9efc0","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_mac_group.t27","health":"ok","module":"IglaRaceTernaryMacGroup"}],"description":"t27/specs/igla/race/ternary_mac_group.t27 Eight ternary lanes sharing ONE wide accumulator -- the mu > 1 point. WHY THIS EXISTS. W806 measured `specs/igla/race/ternary_mac.t27` at **66 LUT, 20 CARRY4, 0 DSP48E1** for a single runtime-weight ternary MAC (T499). Against the 2026 state of the art -- arXiv:2604.25183 at 19.27 LUT per multiply, INT8 activations, runtime weights -- that is 3.4x behind, and the","symbols":[{"name":"GROUP_SIZE","line":50},{"name":"CODE_BITS","line":51},{"name":"CODES_WIDTH","line":52},{"name":"GAT_ZERO","line":55},{"name":"GAT_POS","line":56},{"name":"GAT_NEG","line":57},{"name":"MAX_ABS_PRODUCT","line":60},{"name":"MAX_ABS_SUM","line":61},{"name":"I16_MAX","line":62},{"name":"lane_select","line":69},{"name":"code_0","line":77},{"name":"code_1","line":78},{"name":"code_2","line":79},{"name":"code_3","line":80},{"name":"code_4","line":81},{"name":"code_5","line":82},{"name":"code_6","line":83},{"name":"code_7","line":84},{"name":"group_sum","line":91},{"name":"group_mac","line":111},{"name":"on_comb","line":122}],"imports":[{"name":"base::types","line":46}],"terms":["igla","race","ternary","mac","group","size","bits","codes","width","gat","zero","pos","neg","max","abs","product","sum","i16","lane","select","comb"]},{"id":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","sources":[{"repo":"ghashtag/t27","path":"specs/agents/t.t27","health":"ok","module":"agent_t"}],"description":"specs/agents/t.t27 -- agent t27/T, letter T of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/T). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent T - Tau (TRINITY Queen)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"25cdccd102bc427d00d9256fb1a8ede95a2f204de4c2178c2c83998c1c37c3ef","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/related_work_measured.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","related","work","measured"]},{"id":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","sources":[{"repo":"ghashtag/t27","path":"specs/queen/brain_summaries.t27","health":"warn","module":"BrainSummaries"}],"description":"t27/specs/queen/brain_summaries.t27 Queen Brain Summaries Pipeline Specification Ring 061 - Episode summarization for Queen brain Defines how experience episodes are aggregated into summaries","symbols":[{"name":"MAX_EPISODES_PER_SUMMARY","line":15},{"name":"SUMMARY_RETENTION_DAYS","line":16},{"name":"MIN_CONFIDENCE_THRESHOLD","line":17},{"name":"SUMMARY_TYPE_DAILY","line":20},{"name":"SUMMARY_TYPE_WEEKLY","line":21},{"name":"SUMMARY_TYPE_RING","line":22},{"name":"SUMMARY_TYPE_PHASE","line":23},{"name":"BrainSummary","line":30},{"name":"SummaryIndex","line":66},{"name":"aggregate_episodes","line":81},{"name":"episode","line":99},{"name":"cycle_time","line":112},{"name":"determine_quality","line":145},{"name":"success_rate","line":146},{"name":"save_summary","line":170},{"name":"load_summary","line":178},{"name":"generate_daily_summary","line":190},{"name":"generate_ring_summary","line":206},{"name":"generate_phase_summary","line":222},{"name":"summary","line":321},{"name":"reported_total","line":322},{"name":"summary","line":333},{"name":"summary","line":346},{"name":"summary","line":356}],"imports":[{"name":"queen::lotus","line":9}],"terms":["queen","brain","summaries","max","episodes","per","summary","retention","days","min","confidence","threshold","daily","weekly","ring","phase","index","aggregate","episode","cycle","time","determine","quality","success","rate","save","load","generate","reported","total"]},{"id":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/discovery.t27","health":"ok","module":"Discovery"}],"description":"tri-net/specs/discovery.t27 Partial spec-first flip of src/discovery.rs (T27-first). The HELLO beacon byte layout `[src:4][seq:4][ts:8][n:1][heard:n*4][mac:16]` is pure integer arithmetic: frame length, MAC offset and the parse-side length gates are lifted here as the single source of truth. The HMAC itself and socket I/O stay in Rust (T27 cannot express them).","symbols":[{"name":"HDR_LEN","line":14},{"name":"HEARD_ENTRY_LEN","line":15},{"name":"MAC_LEN","line":16},{"name":"FRESHNESS_MS","line":18},{"name":"mac_offset","line":21},{"name":"hello_len","line":26},{"name":"parse_len_ok","line":32},{"name":"is_fresh","line":38}],"imports":[{"name":"base::types","line":11}],"terms":["net","discovery","hdr","len","heard","entry","mac","freshness","offset","hello","parse","fresh"]},{"id":"26703224e3fce9bbdcdd15281aa883f704a54855810c53d3db1688f7feb9ddba","sources":[{"repo":"ghashtag/t27","path":"specs/brain/unified_state.t27","health":"ok","module":"brain-unified-state"}],"description":"unified_state.t27 — Trinity Brain unified state (spec-first) Normative types for Strand VI. Zig/C/Verilog are generated under gen/ via t27c.","symbols":[{"name":"PHI","line":11},{"name":"PHI_INV","line":12},{"name":"PHI_SQ","line":13},{"name":"PHI_INV_SQ","line":14},{"name":"TRINITY","line":15},{"name":"REGION_COUNT","line":16},{"name":"LAYER_COUNT","line":17},{"name":"REGIONS_PER_LAYER","line":18},{"name":"Layer","line":23},{"name":"ArousalLevel","line":25},{"name":"ConsciousnessState","line":27},{"name":"Mood","line":33},{"name":"BrainState","line":39},{"name":"brain_state_init","line":59},{"name":"brain_state_phi_coherence","line":77},{"name":"state","line":85}],"imports":[],"terms":["brain","unified","state","phi","inv","region","count","layer","regions","per","arousal","level","consciousness","mood","init","coherence"]},{"id":"2677ca7baf25df8c84d3370f519d73f134f0091770cab803ce7ef332beef5ae5","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf128.t27","health":"ok","module":"triformat-gf128"}],"description":"gf128.t27 -- GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 49 exponent + 78 mantissa Bit layout: [S(1) E(49) M(78)] = [127:127][126:78][77:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS_EXPR","line":26},{"name":"EXP_MAX_EXPR","line":27},{"name":"EM_RATIO","line":30},{"name":"PHI_DIST","line":31},{"name":"PHI_BIAS_STATUS","line":33}],"imports":[],"terms":["numeric","gf128","triformat","total","bits","sign","exp","mant","shift","bias","expr","max","ratio","phi","dist","status"]},{"id":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/catalog_api.t27","health":"ok","module":"catalog-api"}],"description":"specs/turbobaby/catalog_api.t27 -- public HTTP behavior for the bike catalog This contract owns only the transport boundary requested by issue #8: filter composition, page-limit normalization, opaque cursor validation, DTO release gates, and HTTP outcomes. Catalog taxonomy belongs to bike_catalog.t27, current inventory and offerability belong to availability.t27, and price provenance belongs to pricing_honesty.t27. This file deliberately imports none of them. Instead, the transport receives their decisions as booleans such as","symbols":[{"name":"KIND","line":34},{"name":"ID","line":35},{"name":"NAME","line":36},{"name":"ISSUE","line":37},{"name":"LIST_ENDPOINT","line":38},{"name":"DETAIL_ENDPOINT","line":39},{"name":"FILTER_NAMES","line":43},{"name":"FILTER_COUNT","line":44},{"name":"PAGE_LIMIT_MIN","line":47},{"name":"PAGE_LIMIT_DEFAULT","line":48},{"name":"PAGE_LIMIT_MAX","line":49},{"name":"CURSOR_BYTES_MAX","line":50},{"name":"HTTP_OK","line":53},{"name":"HTTP_NOT_MODIFIED","line":54},{"name":"HTTP_BAD_REQUEST","line":55},{"name":"HTTP_NOT_FOUND","line":56},{"name":"HTTP_INTERNAL_ERROR","line":57},{"name":"ERROR_NONE","line":60},{"name":"ERROR_BAD_QUERY","line":61},{"name":"ERROR_MISSING_FAMILY","line":62},{"name":"ERROR_INTERNAL","line":63},{"name":"catalog_api_normalize_limit","line":67},{"name":"catalog_api_filter_matches","line":82},{"name":"catalog_api_cc_bounds_valid","line":100},{"name":"catalog_api_query_valid","line":109},{"name":"catalog_api_cursor_valid","line":115},{"name":"catalog_api_dto_valid","line":128},{"name":"catalog_api_list_status","line":134},{"name":"catalog_api_detail_status","line":147},{"name":"catalog_api_error_code","line":160},{"name":"catalog_api_response_has_body","line":173},{"name":"catalog_api_may_emit_next_cursor","line":179}],"imports":[],"terms":["turbobaby","user","bot","catalog","api","kind","list","endpoint","detail","filter","count","page","limit","min","default","max","cursor","bytes","http","modified","bad","request","found","internal","query","missing","family","normalize","matches","bounds","valid","dto","status","response","may","emit"]},{"id":"273a7e6b46c4b79c5cb6ddcdb4894b61722fd4aba4ec35a715f6841a93e6c88e","sources":[{"repo":"ghashtag/t27","path":"specs/math/pellis_precision_verify.t27","health":"ok","module":"PellisPrecision"}],"description":"t27/specs/math/pellis_precision_verify.t27 Arbitrary precision verification via GMP/MPFR reference NUMERIC-VERIF-001 — Pre-registered checkpoint for CODATA 2026","symbols":[{"name":"PHI_100DIGITS","line":17},{"name":"PHI_INV_100DIGITS","line":20},{"name":"PELLIS_50DIGITS","line":30},{"name":"ALPHA_INV_CODATA_2022","line":33},{"name":"PELLIS_FIRST_15_DIGITS","line":36},{"name":"PellisPrecisionResult","line":42},{"name":"pellis_pre_registered_checkpoint","line":51},{"name":"phi","line":52},{"name":"phi_sq","line":53},{"name":"phi_cubed","line":54},{"name":"pellis_f64","line":57},{"name":"digit_count","line":60},{"name":"pellis_str","line":63},{"name":"matches","line":64},{"name":"count_significant_digits","line":77},{"name":"s","line":83},{"name":"c","line":89},{"name":"format","line":106},{"name":"len","line":116}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["math","pellis","precision","verify","phi","100digits","inv","50digits","alpha","codata","digits","pre","registered","checkpoint","cubed","f64","digit","count","str","matches","significant","format","len"]},{"id":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_orchestrator.t27","health":"ok","module":"network_orchestrator"}],"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_POLICIES","line":8},{"name":"OPTIMIZATION_INTERVAL","line":9},{"name":"COORDINATION_TIMEOUT","line":10},{"name":"create_network_policy","line":13},{"name":"get_policy_id","line":20},{"name":"get_policy_priority","line":24},{"name":"get_policy_scope","line":28},{"name":"get_policy_parameter","line":32},{"name":"SCOPE_NODE","line":37},{"name":"SCOPE_LINK","line":38},{"name":"SCOPE_NETWORK","line":39},{"name":"SCOPE_GLOBAL","line":40},{"name":"create_coordination_state","line":43},{"name":"get_coordinator_id","line":50},{"name":"get_coordination_state","line":54},{"name":"get_coordination_phase","line":58},{"name":"get_coordination_timeout","line":62},{"name":"STATE_IDLE","line":67},{"name":"STATE_INITIATING","line":68},{"name":"STATE_NEGOTIATING","line":69},{"name":"STATE_EXECUTING","line":70},{"name":"STATE_COMPLETED","line":71},{"name":"initiate_coordination","line":74},{"name":"advance_phase","line":80},{"name":"is_coordination_complete","line":102},{"name":"is_coordination_timeout","line":112},{"name":"apply_policy","line":126},{"name":"find_highest_priority_policy","line":146},{"name":"create_optimization_request","line":169},{"name":"get_optimization_request_id","line":176},{"name":"get_optimization_type","line":180},{"name":"get_optimization_target","line":184},{"name":"get_optimization_priority","line":188},{"name":"OPT_LOAD_BALANCE","line":193},{"name":"OPT_ENERGY_EFFICIENCY","line":194},{"name":"OPT_LATENCY_REDUCTION","line":195},{"name":"OPT_BANDWIDTH_MAXIMIZATION","line":196},{"name":"process_optimization","line":199},{"name":"create_network_action","line":218},{"name":"get_action_id","line":225},{"name":"get_action_type","line":229},{"name":"get_action_target","line":233},{"name":"get_action_parameter","line":237},{"name":"ACTION_ROUTE_UPDATE","line":242},{"name":"ACTION_POWER_ADJUST","line":243},{"name":"ACTION_BANDWIDTH_ALLOCATE","line":244},{"name":"ACTION_QOS_SET","line":245},{"name":"execute_action","line":248},{"name":"coordinate_nodes","line":268},{"name":"calculate_optimization_score","line":293},{"name":"detect_optimization_opportunity","line":310},{"name":"generate_optimization_plan","line":325},{"name":"monitor_network_health","line":330}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","orchestrator","max","nodes","policies","optimization","interval","coordination","timeout","create","policy","get","priority","scope","parameter","node","link","global","state","coordinator","phase","idle","initiating","negotiating","executing","completed","initiate","advance","complete","apply","find","highest","request","target","opt","load","balance","energy","efficiency","latency","reduction","bandwidth","maximization","process","action","route","power","adjust","allocate","qos","set","execute","coordinate","calculate","score","detect","opportunity","generate","plan","monitor","health"]},{"id":"275f814351a1bfa986f446fbaec1661786d07df44eaf73de58c9c0878c5d40b2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_softmax4.t27","health":"warn","module":"GftSoftmax4"}],"description":"","symbols":[{"name":"magadd","line":13},{"name":"magsub","line":33},{"name":"sadd","line":58},{"name":"neg","line":70},{"name":"category","line":74},{"name":"gt","line":79},{"name":"pow2_frac","line":89},{"name":"exp2","line":98},{"name":"recip","line":126},{"name":"magmul","line":140},{"name":"on_comb","line":158}],"imports":[],"terms":["ternary","gft","softmax4","magadd","magsub","sadd","neg","category","pow2","frac","exp2","recip","magmul","comb"]},{"id":"2760dfd2dbff243837b30c3df806449620407dcd5faba535f977a09ecae47d4a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_layer.t27","health":"warn","module":"BitnetLayer"}],"description":"","symbols":[{"name":"tmul","line":2},{"name":"dot27","line":8},{"name":"quantize","line":19},{"name":"neuronN","line":24},{"name":"layer2","line":35},{"name":"on_comb","line":57}],"imports":[],"terms":["ternary","bitnet","layer","tmul","dot27","quantize","neuron","layer2","comb"]},{"id":"27854fe25c9df055742edf1d76bb8fc8231ce08d25dbb3305cb36dde845bc070","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_03_type_expr_param.t27","health":"ok","module":"NegTypeExprParam"}],"description":"ADR-008 negative: a type expression in a parameter position. Parameters are names being bound, not types being used.","symbols":[{"name":"Slice","line":4}],"imports":[],"terms":["bootstrap","fixtures","generic","neg","expr","param","slice"]},{"id":"27a8513429971feaa0dc7ec9f186464b8c45ff756ad8c3ea7dddc06f53361dca","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bundle2.t27","health":"warn","module":null}],"description":"VSA Bundle2 — TTT Dogfood Phase 2 Majority vote of 2 ternary inputs Algorithm: if a == 0 return b; else if b == 0 return a; else return (a + b) / 2 Input: t0 = a, t1 = b Output: t0 = bundle2(a, b)","symbols":[],"imports":[],"terms":["fpga","tri27","vsa","bundle2"]},{"id":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf32.t27","health":"warn","module":"GF32"}],"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 0 32-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 8 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF32","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":71},{"name":"sign","line":72},{"name":"exp_biased","line":73},{"name":"mant","line":74},{"name":"exp_unbiased","line":82},{"name":"mant_normalized","line":89},{"name":"value","line":95},{"name":"max_value","line":107},{"name":"mant_max","line":108},{"name":"exp_max","line":109},{"name":"min_positive","line":113},{"name":"mant_min","line":114},{"name":"exp_min","line":115},{"name":"epsilon","line":119},{"name":"validate_format","line":127},{"name":"fmt","line":128},{"name":"MEMORY_RATIO_VS_FP32","line":150},{"name":"floor_log2","line":156},{"name":"extract_mantissa","line":170},{"name":"normalized","line":171},{"name":"frac","line":172},{"name":"max_mant","line":173},{"name":"clamp_u16","line":177},{"name":"pow","line":183},{"name":"is_integer","line":199},{"name":"ln_val","line":225},{"name":"ln_approx","line":230},{"name":"t","line":239},{"name":"t2","line":240},{"name":"t3","line":241},{"name":"t5","line":242},{"name":"t7","line":243},{"name":"exp_approx","line":249},{"name":"k","line":261},{"name":"k","line":272},{"name":"floor","line":288}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["euler","numeric","gf32","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/etx.t27","health":"ok","module":"MeshEtx"}],"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","symbols":[{"name":"OPTIMISTIC","line":9},{"name":"DEAD_EPS","line":10},{"name":"ONE_FP","line":11},{"name":"ALPHA_HALF","line":12},{"name":"alpha_from_window","line":15},{"name":"bool_to_sample","line":24},{"name":"fp_mul","line":33},{"name":"ewma_update","line":41},{"name":"is_dead","line":50},{"name":"calc_etx","line":55}],"imports":[{"name":"base::types","line":6}],"terms":["net","etx","mesh","optimistic","dead","eps","one","alpha","half","window","sample","mul","ewma","calc"]},{"id":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-sellers.t27","health":"ok","module":"automation"}],"description":"specs/automation/crm-sellers.t27 -- WHO the CRM works for: every person with a connected Telegram account (a row in tg_sessions), not the one platform owner. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/telegram-tools.ts (requireSeller: the gate the CRM tools ask), src/agent/crm-playbook.ts (the seller's playbook is shown to every seller), src/agent/crm-offer-tool.ts (an offer to yourself is refused against the CALLER, not the owner), src/agent/crm-sellers-tool.ts (the tool","symbols":[{"name":"KIND","line":25},{"name":"ID","line":26},{"name":"REPO","line":27},{"name":"VERSION","line":28},{"name":"SELLER_IS","line":31},{"name":"SESSION_TABLE","line":32},{"name":"SESSION_KEY","line":33},{"name":"OWNER_ALWAYS_ADMITTED","line":34},{"name":"OWNER_FALLBACK","line":35},{"name":"SELLERS_MEASURED","line":36},{"name":"SESSION_LEN_MEASURED","line":37},{"name":"GATE","line":40},{"name":"GATE_READS_SESSION","line":41},{"name":"REFUSAL_NAMES_FIX","line":42},{"name":"DATA_SCOPED_BY_CALLER","line":43},{"name":"PLAYBOOK_FOR","line":46},{"name":"SELF_OFFER_CHECK","line":47},{"name":"LIST_TOOL","line":48},{"name":"LIST_TOOL_CALLER","line":49},{"name":"LIST_TOOL_PROBE","line":50},{"name":"LIST_TOOL_RETURNS_SESSION","line":51},{"name":"SWEEP_PER_SELLER","line":54},{"name":"SWEEP_SOURCE_ENV","line":55},{"name":"SWEEP_SOURCE_TOOL","line":56},{"name":"SWEEP_SOURCE_FALLBACK","line":57},{"name":"SWEEP_CONCURRENCY","line":58},{"name":"PLAN_PER_SELLER","line":59},{"name":"SESSIONS_PROBED","line":62},{"name":"CARRIER_BOT_STARTED_BY_EVERY_SELLER","line":63},{"name":"Seller","line":65},{"name":"Gate","line":71},{"name":"Sweep","line":76},{"name":"admits","line":81},{"name":"playom","line":86},{"name":"owner","line":87},{"name":"stranger","line":92},{"name":"owner_env","line":93},{"name":"g","line":98},{"name":"s","line":104}],"imports":[],"terms":["automation","crm","sellers","kind","seller","session","table","key","owner","always","admitted","fallback","measured","len","gate","reads","refusal","data","scoped","caller","playbook","self","offer","list","tool","probe","returns","sweep","per","env","concurrency","plan","sessions","probed","carrier","bot","started","admits","playom","stranger"]},{"id":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","sources":[{"repo":"ghashtag/t27","path":"compiler/ast.t27","health":"ok","module":"ast"}],"description":"ast.t27 — Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","symbols":[{"name":"TokenType","line":9},{"name":"NodeType","line":114},{"name":"ASTNode","line":171},{"name":"Program","line":182},{"name":"TestSection","line":199},{"name":"InvariantSection","line":204},{"name":"BenchSection","line":209},{"name":"ConstDef","line":218},{"name":"DataSection","line":224},{"name":"DataDecl","line":229},{"name":"CodeSection","line":240},{"name":"Instruction","line":246},{"name":"Opcode","line":252},{"name":"Operand","line":265},{"name":"OperandType","line":270},{"name":"RegOperand","line":277},{"name":"ImmOperand","line":282},{"name":"LabelOperand","line":287},{"name":"MemOperand","line":292},{"name":"TestCase","line":304},{"name":"InvariantDecl","line":315},{"name":"BenchDecl","line":324},{"name":"SpecDecl","line":338},{"name":"TestBlock","line":349},{"name":"GivenClause","line":357},{"name":"WhenClause","line":363},{"name":"ThenClause","line":369},{"name":"AndClause","line":374},{"name":"AssertStmt","line":380},{"name":"RuleDecl","line":385},{"name":"ExpectClause","line":391},{"name":"TypeInfo","line":400},{"name":"Symbol","line":410},{"name":"SymbolTable","line":418},{"name":"new","line":423},{"name":"add","line":431},{"name":"lookup","line":436},{"name":"CompilerContext","line":451},{"name":"CompilationPhase","line":459},{"name":"CompilerError","line":466},{"name":"CompilerWarning","line":474},{"name":"SymbolExport","line":481},{"name":"CompilerContext_add_error","line":486},{"name":"CompilerContext_add_warning","line":496},{"name":"CompilerContext_has_errors","line":505},{"name":"CompilerContext_error_count","line":509},{"name":"Program_export_symbols","line":513},{"name":"table","line":550},{"name":"sym","line":556},{"name":"node","line":586}],"imports":[],"terms":["compiler","ast","token","node","astnode","program","section","invariant","bench","def","data","decl","opcode","operand","reg","imm","label","mem","case","block","given","clause","assert","stmt","rule","expect","info","table","lookup","compilation","phase","warning","count","sym"]},{"id":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_wire.t27","health":"ok","module":"TriA2AWire"}],"description":"TRI-NET A2A message wire layout inside the SEALED mesh payload. tri_a2a defines the message classes and port demux; this fixes the BYTE layout an endpoint parses after decrypting (a relay never parses it -- the payload is ciphertext, demuxed by port, per tri_a2a). Fixed-length header (no variable-length parsing, so no length-confusion / injection surface, unlike JSON-RPC A2A): [ msg_class(1) | task_id(4, big-endian) | skill(2, big-endian) | body... ]","symbols":[{"name":"OFF_CLASS","line":14},{"name":"OFF_TASK","line":15},{"name":"OFF_SKILL","line":16},{"name":"OFF_BODY","line":17},{"name":"HDR_LEN","line":18},{"name":"MSG_TASK_ASSIGN","line":21},{"name":"MSG_TASK_RESULT","line":22},{"name":"MSG_HEARTBEAT","line":23},{"name":"task_id","line":26},{"name":"skill_id","line":31},{"name":"body_offset","line":36},{"name":"class_valid","line":41},{"name":"body_has_receipt","line":48},{"name":"SIG_LEN","line":56},{"name":"body_has_signature","line":59},{"name":"sig_offset","line":65},{"name":"signed_result_len","line":70},{"name":"OFF_ASSIGN_OP","line":78},{"name":"OFF_ASSIGN_A_OFF","line":79},{"name":"OFF_ASSIGN_A_MANT","line":80},{"name":"OFF_ASSIGN_B_OFF","line":81},{"name":"OFF_ASSIGN_B_MANT","line":82},{"name":"ASSIGN_BODY_LEN","line":83},{"name":"assign_mant","line":86},{"name":"SHA_PAD_W","line":97},{"name":"OPERAND_BITS","line":98},{"name":"operand_pre","line":100}],"imports":[{"name":"base::types","line":12}],"terms":["net","a2a","wire","a2awire","off","class","skill","hdr","len","msg","assign","heartbeat","offset","valid","receipt","sig","signature","signed","mant","sha","pad","operand","bits","pre"]},{"id":"293d2f0f3dd1ad97dcc7e6485a9285d91ba36deb71ec7520b80523877a2c8405","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/phi.t27","health":"ok","module":"tool_trinity_tri_phi"}],"description":"specs/tools/trinity/tri/phi.t27 -- tool gHashTag/trinity:tri/phi, the `tri phi` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/phi`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["phi","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"295218999824f8be1facebfa4cdf9e7dbe55c31f692d1b025a668bd974569a6d","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/runtime.t27","health":"warn","module":"zig_runtime"}],"description":"runtime.t27 — Zig Runtime Code Generation Generates Zig backend from compiler/runtime/*.t27 specifications","symbols":[{"name":"generate_main","line":14},{"name":"generate_commands_module","line":62},{"name":"generate_validation_module","line":179},{"name":"generate_main_zig","line":282},{"name":"generate_commands_zig","line":287},{"name":"generate_validation_zig","line":292},{"name":"generate_runtime_zig","line":301},{"name":"base_dir","line":302},{"name":"main_zig","line":323},{"name":"main_zig","line":327},{"name":"main_zig","line":331},{"name":"commands_zig","line":335},{"name":"commands_zig","line":339},{"name":"validation_zig","line":343},{"name":"validation_zig","line":347},{"name":"validation_zig","line":351},{"name":"result","line":355},{"name":"main_zig","line":360},{"name":"main_zig","line":365},{"name":"commands_zig","line":370},{"name":"validation_zig","line":379},{"name":"main_zig","line":384},{"name":"commands_zig","line":385},{"name":"validation_zig","line":386},{"name":"result","line":393},{"name":"result","line":398},{"name":"result","line":403},{"name":"result","line":408}],"imports":[],"terms":["compiler","codegen","zig","runtime","generate","main","commands","validation","base","dir"]},{"id":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/local_processing.t27","health":"warn","module":"local_processing"}],"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","symbols":[{"name":"MAX_TASKS","line":7},{"name":"MAX_RESULTS","line":8},{"name":"PROCESSING_TIMEOUT","line":9},{"name":"TASK_PRIORITY_HIGH","line":10},{"name":"TASK_PRIORITY_MEDIUM","line":11},{"name":"TASK_PRIORITY_LOW","line":12},{"name":"create_task","line":15},{"name":"get_task_id","line":22},{"name":"get_priority","line":26},{"name":"get_data_size","line":30},{"name":"get_processing_time","line":34},{"name":"create_result","line":39},{"name":"get_result_task_id","line":46},{"name":"get_status","line":50},{"name":"get_result_size","line":54},{"name":"get_result_value","line":58},{"name":"STATUS_PENDING","line":63},{"name":"STATUS_PROCESSING","line":64},{"name":"STATUS_COMPLETED","line":65},{"name":"STATUS_FAILED","line":66},{"name":"process_task","line":69},{"name":"aggregate_results","line":81},{"name":"find_task_by_priority","line":95},{"name":"find_highest_priority_task","line":110},{"name":"count_pending_tasks","line":132},{"name":"calculate_processing_load","line":148},{"name":"can_accept_task","line":162},{"name":"find_completed_result","line":175},{"name":"calculate_efficiency","line":192},{"name":"aggregate_data","line":216},{"name":"filter_data","line":233},{"name":"make_local_decision","line":248},{"name":"create_resource_state","line":261},{"name":"get_cpu_usage","line":268},{"name":"get_memory_usage","line":272},{"name":"get_task_count","line":276},{"name":"get_available_resources","line":280},{"name":"update_resources","line":285},{"name":"has_resources","line":304}],"imports":[{"name":"base::types","line":5}],"terms":["net","local","processing","max","tasks","results","timeout","priority","high","medium","low","create","get","data","size","time","status","completed","failed","process","aggregate","find","highest","count","calculate","load","accept","efficiency","filter","make","decision","resource","state","cpu","usage","memory","available","resources"]},{"id":"29996bb0f8c54f920745ae5b4990af7c35d7d88513b9682b4f59a30bb342ba31","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_recip.t27","health":"warn","module":"GftRecip"}],"description":"","symbols":[{"name":"on_comb","line":14}],"imports":[],"terms":["ternary","gft","recip","comb"]},{"id":"299b19c47e8161d2318839d18418d581f18fde1d2373650067713805d07dc61a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fpga_synthesis_report.t27","health":"ok","module":"FpgaSynthesisReport"}],"description":"FPGA synthesis reporting - resource utilization and timing analysis Documents synthesis results for all 19 modules","symbols":[{"name":"RESOURCE_LUT","line":8},{"name":"RESOURCE_FF","line":9},{"name":"RESOURCE_DSP","line":10},{"name":"RESOURCE_BRAM","line":11},{"name":"TARGET_FREQ_50MHZ","line":14},{"name":"TARGET_FREQ_100MHZ","line":15},{"name":"TARGET_FREQ_150MHZ","line":16},{"name":"create_synthesis_result","line":19},{"name":"extract_utilization","line":25},{"name":"extract_timing_slack","line":29},{"name":"extract_achieved_freq","line":33},{"name":"timing_met","line":38},{"name":"utilization_acceptable","line":43},{"name":"calculate_resource_percentage","line":48},{"name":"estimate_total_resources","line":56},{"name":"frequency_achievable","line":63},{"name":"create_resource_summary","line":68},{"name":"extract_lut","line":76},{"name":"extract_ff","line":80},{"name":"extract_dsp","line":84},{"name":"extract_bram","line":88}],"imports":[{"name":"base::types","line":5}],"terms":["net","fpga","synthesis","report","resource","lut","dsp","bram","target","freq","50mhz","100mhz","150mhz","create","extract","utilization","timing","slack","achieved","met","acceptable","calculate","percentage","estimate","total","resources","frequency","achievable","summary"]},{"id":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_memory.t27","health":"warn","module":"ISAMemoryOps"}],"description":"t27/specs/isa/ternary_memory.t27 Ternary Memory Specification Ring 089 - Memory operations for ternary architecture Load/store operations with ternary address and data","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"MEM_ADDR_WIDTH","line":21},{"name":"MEM_DATA_WIDTH","line":22},{"name":"MEM_SIZE","line":23},{"name":"WORD_SIZE","line":24},{"name":"ALIGNMENT","line":27},{"name":"PERM_READ","line":30},{"name":"PERM_WRITE","line":31},{"name":"PERM_EXEC","line":32},{"name":"mem_load","line":41},{"name":"mem_store","line":53},{"name":"mem_load_aligned","line":66},{"name":"mem_store_aligned","line":78},{"name":"mem_load_block","line":94},{"name":"mem_store_block","line":117},{"name":"STACK_BASE","line":142},{"name":"mem_push","line":146},{"name":"mem_pop","line":160},{"name":"value","line":162},{"name":"virt_to_phys","line":179},{"name":"phys_addr","line":186},{"name":"mem_check_perm","line":202},{"name":"mem_protect","line":212},{"name":"mem_copy","line":227},{"name":"mem_fill","line":255},{"name":"word_extract_trit","line":276},{"name":"encoded","line":282},{"name":"word_pack_trit","line":295},{"name":"encoded","line":301},{"name":"mask","line":306},{"name":"word","line":486},{"name":"trit","line":487}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","memory","isamemory","ops","trit","neg","zero","pos","mem","addr","width","data","size","word","alignment","perm","read","write","exec","load","store","aligned","block","stack","base","push","pop","virt","phys","protect","copy","fill","extract","encoded","pack","mask"]},{"id":"29d997ada23e0a8aac40eced1499f42b697353ff8747db8b0d9a87ba5159b783","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf32_to_fp32.t27","health":"fail","module":"gf32-to-fp32"}],"description":"gf32_to_fp32.t27 — GF32 to FP32 Converter GoldenFloat32 to IEEE 754 binary32 format conversion","symbols":[{"name":"GF32_SIGN_BITS","line":12},{"name":"GF32_EXP_BITS","line":13},{"name":"GF32_MANT_BITS","line":14},{"name":"GF32_BIAS","line":15},{"name":"FP32_SIGN_BITS","line":17},{"name":"FP32_EXP_BITS","line":18},{"name":"FP32_MANT_BITS","line":19},{"name":"FP32_BIAS","line":20},{"name":"EXP_BIAS_DIFF","line":22},{"name":"MANTissa_MASK_GF32","line":24},{"name":"MANTissa_MASK_FP32","line":25},{"name":"Gf32","line":31},{"name":"Fp32","line":37},{"name":"ConversionResult","line":43},{"name":"ConversionConfig","line":50},{"name":"gf32_from_bits","line":62},{"name":"gf32_to_bits","line":72},{"name":"sign_field","line":73},{"name":"exp_field","line":74},{"name":"mant_field","line":75},{"name":"gf32_get_exp_biased","line":81},{"name":"gf32_is_zero","line":87},{"name":"gf32_is_subnormal","line":93},{"name":"gf32_is_normal","line":99},{"name":"gf32_is_infinity","line":105},{"name":"gf32_is_nan","line":111},{"name":"gf32_is_qnan","line":117},{"name":"gf32_is_snan","line":123},{"name":"fp32_from_bits","line":133},{"name":"fp32_to_bits","line":143},{"name":"sign_field","line":144},{"name":"exp_field","line":145},{"name":"mant_field","line":146},{"name":"fp32_get_exp_biased","line":152},{"name":"fp32_is_zero","line":163},{"name":"fp32_is_subnormal","line":169},{"name":"fp32_is_infinity","line":175},{"name":"fp32_is_nan","line":181},{"name":"fp32_is_qnan","line":187},{"name":"fp32_is_snan","line":193},{"name":"conversion_config_init","line":203},{"name":"conversion_config_no_saturation","line":213},{"name":"conversion_config_round_up","line":223},{"name":"gf32_to_fp32_raw","line":237},{"name":"gf32_to_fp32_with_result","line":288},{"name":"gf32_to_fp32","line":373},{"name":"result","line":374},{"name":"gf32_bits_to_fp32_bits","line":380},{"name":"gf","line":381},{"name":"fp","line":382},{"name":"gf32_bits_to_fp32_bits_with_result","line":388},{"name":"gf","line":389}],"imports":[],"terms":["euler","fpga","gf32","fp32","sign","bits","exp","mant","bias","diff","mantissa","mask","conversion","config","field","get","biased","zero","subnormal","normal","infinity","nan","qnan","snan","init","saturation","round","raw"]},{"id":"2a12ef9771d45205433d0a6d711a401bc983626abb1cce1cfc508097fc41bbc8","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/test.graph.t27","health":"ok","module":"trinity_capability_test_graph"}],"description":"specs/trinity/capabilities/test.graph.t27 -- capability trinity/test.graph: The aggregate test step and the CI-only steps that have no artifact of their own One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","graph","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"2a263b75b4f49ba65564d52f7697195904806ffda509bdf7734719cd03732c7f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/parser.t27","health":"warn","module":null}],"description":"parser.t27 — Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","symbols":[{"name":"Parser","line":8},{"name":"Parser","line":16},{"name":"Parser","line":38},{"name":"Parser","line":50},{"name":"Parser","line":58},{"name":"Parser","line":63},{"name":"Parser","line":72},{"name":"Parser","line":79},{"name":"Parser","line":86},{"name":"Parser","line":96},{"name":"Parser","line":120},{"name":"Parser","line":158},{"name":"Parser","line":204},{"name":"Parser","line":222},{"name":"Parser","line":240},{"name":"Parser","line":258},{"name":"Parser","line":314},{"name":"Parser","line":365},{"name":"Parser","line":452},{"name":"parse","line":470},{"name":"ast_node_from_const","line":482},{"name":"ast_node_from_label","line":492}],"imports":[],"terms":["fpga","compiler","parser","parse","ast","node","label"]},{"id":"2ab994adcd287776d83e4432dfd098a89121d8d3f8395b9ef2f15dd8cc6fea04","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/constants.t27","health":"ok","module":"tool_trinity_tri_constants"}],"description":"specs/tools/trinity/tri/constants.t27 -- tool gHashTag/trinity:tri/constants, the `tri constants` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/constants`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["constants","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/conformance.t27","health":"warn","module":"TrinityMemoryConformanceLabSpec"}],"description":"specs/memory/tmem/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable","symbols":[{"name":"TMS_LAB_SCHEMA_VERSION","line":18},{"name":"TMS_LAB_ROOT_MEMBERS","line":19},{"name":"TMS_LAB_MIN_VECTORS","line":20},{"name":"TMS_LAB_MAX_VECTORS","line":21},{"name":"TMS_LAB_MIN_WEIGHTS","line":22},{"name":"TMS_LAB_MAX_WEIGHTS","line":23},{"name":"TMS_LAB_FIELD_NAME","line":24},{"name":"TMS_LAB_FIELD_WEIGHTS","line":25},{"name":"TMS_LAB_FIELD_ACTIVATIONS","line":26},{"name":"TMS_LAB_FIELD_DOT","line":27},{"name":"TMS_LAB_FIELD_DENSE5_HEX","line":28},{"name":"TMS_LAB_FIELD_BASELINE2_HEX","line":29},{"name":"TMS_LAB_FIELD_DENSE17_HEX","line":30},{"name":"TMS_LAB_FIELD_DENSE22_HEX","line":31},{"name":"TMS_LAB_REQUIRED_FIELDS","line":32},{"name":"TMS_LAB_ALLOWED_FIELDS","line":33},{"name":"TMS_LAB_MAX_FIXTURE_BYTES","line":34},{"name":"TMS_LAB_CODEC_MODES","line":38},{"name":"TMS_LAB_RTL_CODECS","line":39},{"name":"TMS_LAB_RANDOM_CASES","line":40},{"name":"TMS_LAB_SPARSE_TRANSFERS","line":41},{"name":"TMS_LAB_SPARSE_PATTERN_TRITS","line":42},{"name":"TMS_LAB_CORRUPTION_FLIPS","line":43},{"name":"TMS_LAB_CORRUPTION_TRITS","line":44},{"name":"TMS_LAB_CORRUPTION_RPC_ERROR","line":45},{"name":"TMS_LAB_SEED_DEFAULT","line":46},{"name":"TMS_LAB_RTL_SEED_MAX","line":47},{"name":"TMS_LAB_SERVER_MAX_REQUEST_BYTES","line":48},{"name":"TMS_LAB_SERVER_MAX_OBJECT_BYTES","line":49},{"name":"TMS_LAB_SERVER_MAX_STORAGE_BYTES","line":50},{"name":"TMS_LAB_SERVER_MAX_OBJECTS","line":51},{"name":"TMS_LAB_SERVER_MAX_TRITS","line":52},{"name":"TMS_LAB_SERVER_TIMEOUT_SECONDS","line":53},{"name":"TMS_LAB_ERR_CHECK","line":54},{"name":"TMS_LAB_ERR_RESOURCE","line":55},{"name":"TMS_LAB_ERR_RTL","line":56},{"name":"TMS_LAB_REPORT_VERSION","line":60},{"name":"TMS_LAB_REPORT_SECTIONS","line":61},{"name":"TMS_LAB_PHYSICAL_DEVICE_TESTED","line":62},{"name":"LabSection","line":64},{"name":"LabEvidence","line":73},{"name":"LabCorruption","line":82},{"name":"LabInterruption","line":94},{"name":"LabReset","line":100},{"name":"tms_lab_fields_valid","line":107},{"name":"tms_lab_vector_count_valid","line":112},{"name":"tms_lab_weight_count_valid","line":116},{"name":"tms_lab_weight_valid","line":120},{"name":"tms_lab_activation_valid","line":124},{"name":"tms_lab_dot","line":128},{"name":"tms_lab_codec_order","line":136},{"name":"tms_lab_rtl_codec","line":144},{"name":"tms_lab_random_case_count","line":148},{"name":"tms_lab_positive_checks","line":159},{"name":"tms_lab_rtl_checks","line":163},{"name":"tms_lab_corruption_position","line":171},{"name":"tms_lab_seed_valid","line":181},{"name":"tms_lab_fixture_size_valid","line":186},{"name":"tms_lab_field_is_timing","line":191}],"imports":[],"terms":["memory","tmem","conformance","lab","tms","schema","root","members","min","vectors","max","weights","field","activations","dot","dense5","hex","baseline2","dense17","dense22","required","fields","allowed","fixture","bytes","codec","modes","rtl","codecs","random","cases","sparse","transfers","pattern","trits","corruption","flips","rpc","seed","default","request","object","storage","objects","timeout","seconds","err","resource","report","sections","physical","device","tested","section","evidence","interruption","reset","valid","vector","count","weight","activation","order","case","positive","checks","position","size","timing"]},{"id":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_trace.t27","health":"ok","module":"VcdTrace"}],"description":"t27/specs/fpga/vcd_trace.t27 T27 VCD Trace Emission Specification Emits Value Change Dump traces from HIR simulation IEEE 1364-2001 VCD format with variable sections Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"VcdVarKind","line":13},{"name":"VcdScopeKind","line":22},{"name":"VcdVar","line":30},{"name":"vcd_var","line":37},{"name":"var_wire","line":46},{"name":"var_reg","line":50},{"name":"VcdChange","line":56},{"name":"vcd_change","line":63},{"name":"VcdHeader","line":74},{"name":"vcd_header","line":81},{"name":"VcdTrace","line":92},{"name":"vcd_trace","line":97},{"name":"var_ident_index","line":106},{"name":"format_binary","line":110},{"name":"changes_at_timestamp","line":114},{"name":"earliest_change","line":126},{"name":"latest_change","line":141},{"name":"trace_duration_ps","line":156},{"name":"validate_var","line":165},{"name":"validate_change","line":176}],"imports":[],"terms":["fpga","vcd","trace","var","kind","scope","wire","reg","header","ident","index","format","binary","timestamp","earliest","latest","duration","validate"]},{"id":"2b4c28dfcddbd8861d6e47080b8dab052a46a065a4e5ff773523abd15afa6fbc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/client.t27","health":"warn","module":"TrinityMemoryRPCClient"}],"description":"Native JSON-RPC client domain. Include json.h and json_writer.h first. Caller-owned live, nonoverlapping buffers; no allocation or network here. Scratch tokens/arena and partial output may change on failure. Reply is committed only after validation. IDs are 32 lowercase hexadecimal bytes.","symbols":[{"name":"TM_RPC_ERR_TRANSPORT","line":6},{"name":"TM_RPC_ERR_LIMIT","line":7},{"name":"TM_RPC_ERR_PARAMS","line":8},{"name":"TMRPCWorkspace","line":9},{"name":"TMRPCReply","line":14},{"name":"tm_rpc_id_valid","line":16},{"name":"tm_rpc_random_id","line":25},{"name":"tm_rpc_literal","line":39},{"name":"tm_rpc_text","line":44},{"name":"tm_rpc_field","line":51},{"name":"tm_rpc_parse_depth","line":66},{"name":"tm_rpc_parse","line":74},{"name":"tm_rpc_prepare","line":77},{"name":"tm_rpc_id_matches","line":107},{"name":"tm_rpc_validate","line":117}],"imports":[],"terms":["dmitrii","memory","client","rpcclient","rpc","err","transport","limit","params","tmrpcworkspace","tmrpcreply","valid","random","literal","text","field","parse","depth","prepare","matches","validate"]},{"id":"2b70d19f6f5d4f13e880a395590a03a48b83d77c4e32cebf62216cbe82ec8d52","sources":[{"repo":"ghashtag/t27","path":"specs/server/session.t27","health":"ok","module":"Session"}],"description":"specs/server/session.t27 Session Management Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"SessionState","line":14},{"name":"MessageRole","line":25},{"name":"Session","line":36},{"name":"Message","line":46},{"name":"ToolCall","line":55},{"name":"SessionManager","line":64},{"name":"session_manager_init","line":70},{"name":"create_session","line":82},{"name":"id","line":83},{"name":"get_session","line":101},{"name":"update_session","line":112},{"name":"delete_session","line":124},{"name":"list_sessions","line":142},{"name":"create_message","line":150},{"name":"add_message","line":161},{"name":"generate_session_id","line":170},{"name":"session_to_json","line":174},{"name":"message_to_json","line":178},{"name":"session","line":202},{"name":"created","line":211},{"name":"retrieved","line":212},{"name":"session","line":218},{"name":"result","line":221},{"name":"session","line":227},{"name":"result","line":228},{"name":"mgr","line":234},{"name":"msg","line":240},{"name":"msg","line":247},{"name":"session","line":253},{"name":"json","line":254},{"name":"msg","line":259},{"name":"json","line":260}],"imports":[{"name":"base::types","line":8}],"terms":["session","state","role","tool","call","manager","init","create","get","delete","list","sessions","generate","json","created","retrieved","mgr","msg"]},{"id":"2b7ba398549aa79d07e55e175328b816600fbddbfeb000ff1ce425ec629b3cf4","sources":[{"repo":"ghashtag/t27","path":"specs/agents/y.t27","health":"ok","module":"agent_y"}],"description":"specs/agents/y.t27 -- agent t27/Y, letter Y of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Y). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Y - Psi (Yield/DePIN)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"2b88d314726a5a5cc6cec95471fdc759b53013883ea59ef5bba73b655297453e","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_node.t27","health":"ok","module":"IglaRaceTernaryNode"}],"description":"t27/specs/igla/race/ternary_node.t27 The composed ternary node: wire -> weight -> Z[phi] accumulator, end to end. WHAT THIS COMPOSES. Three specs were built and verified independently in W653-W655, each closing one boundary: specs/fpga/ternary_link.t27 3B2T line code, {-1,0,+1} on the wire (T79/T87) specs/igla/race/phi_weights Z[phi] weight application, (a,b)->(b,a+b) (T89)","symbols":[{"name":"SYM_ZERO","line":43},{"name":"SYM_POS","line":44},{"name":"SYM_NEG","line":45},{"name":"SYM_ERROR","line":49},{"name":"ZPHI_ONE_A","line":52},{"name":"ZPHI_ONE_B","line":53},{"name":"ZPHI_PHI_A","line":54},{"name":"ZPHI_PHI_B","line":55},{"name":"rx_slice","line":59},{"name":"symbol_as_weight","line":72},{"name":"weighted_a","line":78},{"name":"weighted_b","line":85},{"name":"acc_a","line":93},{"name":"acc_b","line":97},{"name":"node_step_a","line":104},{"name":"node_step_b","line":108},{"name":"rx_is_fault","line":114},{"name":"on_comb","line":121}],"imports":[{"name":"base::types","line":37}],"terms":["igla","race","ternary","node","sym","zero","pos","neg","zphi","one","phi","slice","weight","weighted","acc","step","fault","comb"]},{"id":"2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/clock_domain.t27","health":"ok","module":"ClockDomain"}],"description":"t27/specs/fpga/clock_domain.t27 Clock Domain Abstraction for Trinity T27 FPGA HIR Defines clock sources, PLL configs, and cross-domain crossing Uses flat structs (parser-compatible)","symbols":[{"name":"ClkSrcKind","line":12},{"name":"ClkEdge","line":21},{"name":"CrossStrategy","line":28},{"name":"ClkSource","line":37},{"name":"ClkDomain","line":47},{"name":"ClockCrossing","line":56},{"name":"ext_clock","line":65},{"name":"pll_clock","line":75},{"name":"make_domain","line":85},{"name":"make_crossing","line":94},{"name":"is_external","line":105},{"name":"is_pll","line":109},{"name":"period_ns","line":113},{"name":"half_period_ns","line":120},{"name":"same_domain","line":124},{"name":"needs_crossing","line":128},{"name":"crossing_data_bits","line":138},{"name":"is_async_cross","line":142}],"imports":[],"terms":["fpga","clock","domain","clk","kind","edge","cross","strategy","crossing","ext","pll","make","external","period","half","data","bits","async"]},{"id":"2b97b9758290cb2c035ad4d058a26f4c081f428c20230cd076c72129f5d17b6c","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_single.t27","health":"ok","module":"LstmCell"}],"description":"t27/specs/","symbols":[{"name":"FORGET_BIAS_INIT","line":13},{"name":"LSTMConfig","line":19},{"name":"LSTMState","line":24},{"name":"LSTMWeights","line":29},{"name":"forward","line":49},{"name":"backward","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","lstm","single","cell","forget","bias","init","lstmconfig","lstmstate","lstmweights","forward","backward"]},{"id":"2ba9ba17084c14184271ed7794dd4892e06732c6aaea33c11fee7c31038f299f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_bare_call_given.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","bare","call","given"]},{"id":"2bb4e5ef1161b9818b450a20760cd641f87ea170c7bbe29467bd99f875410200","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf128.t27","health":"ok","module":"triformat_bnf128"}],"description":"bnf128.t27 -- BNF128: Binary Network Float, 128-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf128","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"2bc144c93ba41b7bdbdcc2d72c197a508f3b44151489f790c19a71aefd6b0190","sources":[{"repo":"ghashtag/t27","path":"specs/ar/proof_trace.t27","health":"warn","module":null}],"description":"spec: ProofTrace Bounded proof trace mechanism for explainable neuro-symbolic reasoning","symbols":[{"name":"MAX_STEPS","line":10},{"name":"ProofStep","line":13},{"name":"ProofTrace","line":22},{"name":"new_proof_trace","line":30},{"name":"add_step","line":40},{"name":"verify_trace","line":59},{"name":"trace_length","line":81},{"name":"is_at_capacity","line":86},{"name":"finalize_trace","line":91},{"name":"format_trace","line":101},{"name":"trit_to_string","line":121}],"imports":[{"name":"base::types","line":5}],"terms":["proof","trace","max","steps","step","verify","length","capacity","finalize","format","trit"]},{"id":"2c293bdfba35cb5a347420b69e15cbc1f14300e6990ba46f9e4cb860b1d3b0e4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_payout.t27","health":"ok","module":"TriComputePayout"}],"description":"TRI-NET end-to-end payout: compose reputation weighting (tri_compute_reputation) with the pool split (tri_compute_pool) into one reward distribution, and pin the property that matters when the two are combined: a REPUTATION-WEIGHTED floor-div split still never over-issues (sum of shares <= pool). Higher-reputation nodes earn a larger share for equal raw work; a slashed (low-reputation) node earns less; an empty round pays nobody. Self-contained (mirrors the two source specs)","symbols":[{"name":"weighted","line":19},{"name":"total_weighted3","line":30},{"name":"payout","line":41}],"imports":[{"name":"base::types","line":10}],"terms":["net","compute","payout","weighted","total","weighted3"]},{"id":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","sources":[{"repo":"ghashtag/t27","path":"specs/functions/content-scripts-generate.t27","health":"ok","module":"fn_content_scripts_generate"}],"description":"specs/functions/content-scripts-generate.t27 -- function content-scripts-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-scripts-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateContentScripts.ts#L44 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","content","scripts","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"2cd1d3d51078f14f5dd0f53741536884c599975ebb005381d679a5c2542b1000","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/xml.t27","health":"ok","module":"TriXml"}],"description":"t27/specs/","symbols":[{"name":"XmlNode","line":13},{"name":"parse","line":25},{"name":"format","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","xml","node","parse","format"]},{"id":"2d3563e302746a958794670cd14404a7c4e6854dcf546468dd5f91907ff299e4","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-fpga-synth.t27","health":"ok","module":"skill_trinity_fpga_synth"}],"description":"specs/skills/trinity-fpga-synth.t27 -- skill trinity/fpga-synth Source of truth for the skill card on t27.ai (#/skills?skill=trinity/fpga-synth). The skill body lives in gHashTag/trinity at .claude/skills/fpga-synth/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/fpga-synth/SKILL.md, sha256 de3915e66cda...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","fpga","synth","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"2d830937229c3a5e780c372b433bbf53e38ccde9444ecb20e599fb20e65b2444","sources":[{"repo":"ghashtag/t27","path":"specs/functions/morph-images-generate.t27","health":"ok","module":"fn_morph_images_generate"}],"description":"specs/functions/morph-images-generate.t27 -- function morph-images-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=morph-images-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/morphImages.ts#L30 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","morph","images","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"2d98573747c17289c348f411e21d8a455be1a647577b6c3aba8d697689ff76f8","sources":[{"repo":"ghashtag/t27","path":"specs/agents/l.t27","health":"ok","module":"agent_l"}],"description":"specs/agents/l.t27 -- agent t27/L, letter L of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/L). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent L - Lambda (Language)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"2d9ab503fe27887ed2f276cca7e093e3e017547d591f875a457a69bd58647f01","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot8.t27","health":"warn","module":"GftDot8"}],"description":"","symbols":[{"name":"gft_mul","line":14},{"name":"gft_add","line":33},{"name":"dot2","line":59},{"name":"dot4","line":62},{"name":"on_comb","line":67}],"imports":[],"terms":["ternary","gft","dot8","mul","dot2","dot4","comb"]},{"id":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/tri_net_formats.t27","health":"warn","module":"TriNetFormats"}],"description":"t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)","symbols":[{"name":"FormatCategory","line":29},{"name":"GF64Format","line":49},{"name":"GF128Format","line":60},{"name":"GF256Format","line":71},{"name":"FP32Format","line":86},{"name":"FP16Format","line":96},{"name":"BF16Format","line":107},{"name":"FP8E4M3Format","line":122},{"name":"FP8E5M2Format","line":133},{"name":"Int4Format","line":148},{"name":"Int8Format","line":157},{"name":"NF4_LEVELS","line":179},{"name":"NF4Format","line":186},{"name":"Posit16Format","line":210},{"name":"Binary16Format","line":228},{"name":"FormatDescriptor","line":242},{"name":"TRI_NET_FORMATS","line":256},{"name":"get_format_by_name","line":488},{"name":"get_format_by_bits","line":497},{"name":"get_phi_optimal_format","line":509},{"name":"format_to_f32","line":523},{"name":"f32_to_format","line":539},{"name":"gf_to_f32","line":559},{"name":"sign","line":561},{"name":"exp_mask","line":562},{"name":"mant_mask","line":563},{"name":"exp_biased","line":564},{"name":"mant","line":565},{"name":"exp_unbiased","line":573},{"name":"max_mant","line":580},{"name":"mant_normalized","line":581},{"name":"value","line":587},{"name":"f32_to_gf","line":595},{"name":"sign","line":600},{"name":"abs_val","line":601},{"name":"exp_unbiased","line":604},{"name":"max_exp","line":608},{"name":"max_mant","line":614},{"name":"normalized","line":615},{"name":"frac","line":616},{"name":"mant","line":617},{"name":"clamped_mant","line":618},{"name":"ieee754_to_f32","line":629},{"name":"f32_to_ieee754","line":640},{"name":"posit_to_f32","line":655},{"name":"f32_to_posit","line":661},{"name":"int_to_f32","line":671},{"name":"sign_bit","line":673},{"name":"magnitude","line":674},{"name":"max_val","line":675},{"name":"f32_to_int","line":683},{"name":"max_val","line":684},{"name":"min_val","line":685},{"name":"nf4_to_f32","line":704},{"name":"index","line":705},{"name":"f32_to_nf4","line":709},{"name":"dist","line":715},{"name":"floor_log2","line":730},{"name":"pow","line":744},{"name":"is_integer","line":755},{"name":"ln_val","line":779},{"name":"ln_approx","line":783},{"name":"t","line":791},{"name":"t2","line":792},{"name":"t3","line":793},{"name":"exp_approx","line":798},{"name":"abs","line":823},{"name":"golden_fmts","line":960}],"imports":[{"name":"math::constants","line":20},{"name":"math::sacred_physics","line":21},{"name":"numeric::goldenfloat_family","line":22}],"terms":["euler","numeric","net","formats","format","category","gf64format","gf128format","gf256format","fp32format","fp16format","bf16format","fp8e4m3format","fp8e5m2format","int4format","int8format","nf4","levels","nf4format","posit16format","binary16format","descriptor","get","bits","phi","optimal","f32","sign","exp","mask","mant","biased","unbiased","max","normalized","abs","val","frac","clamped","ieee754","posit","int","bit","magnitude","min","index","dist","floor","log2","pow","integer","approx","golden","fmts"]},{"id":"2dae7f68a5651636623154005f92a6e43432b46d72b3bdd45c164df2a38b961c","sources":[{"repo":"ghashtag/t27","path":"specs/math/property_test_template.t27","health":"warn","module":"PropertyTestTemplate"}],"description":"t27/specs/math/property_test_template.t27 Property-Test Template for Conformance Vectors Ring 053 - Defines reusable property testing patterns This spec provides templates for property-based testing of T27 formats Properties: mathematical invariants that must hold for ALL valid inputs","symbols":[{"name":"STRATEGY_RANDOM","line":17},{"name":"STRATEGY_EXHAUSTIVE","line":18},{"name":"STRATEGY_BOUNDARY","line":19},{"name":"SAMPLE_SIZE_SMALL","line":22},{"name":"SAMPLE_SIZE_MEDIUM","line":23},{"name":"SAMPLE_SIZE_LARGE","line":24},{"name":"test_associative_add","line":33},{"name":"a","line":40},{"name":"b","line":41},{"name":"c","line":42},{"name":"left","line":43},{"name":"right","line":44},{"name":"test_associative_mul","line":58},{"name":"a","line":65},{"name":"b","line":66},{"name":"c","line":67},{"name":"left","line":68},{"name":"right","line":69},{"name":"test_commutative_add","line":84},{"name":"a","line":89},{"name":"b","line":90},{"name":"ab","line":91},{"name":"ba","line":92},{"name":"test_commutative_mul","line":103},{"name":"a","line":108},{"name":"b","line":109},{"name":"ab","line":110},{"name":"ba","line":111},{"name":"test_distributive_mul_add","line":123},{"name":"a","line":130},{"name":"b","line":131},{"name":"c","line":132},{"name":"left","line":133},{"name":"right","line":134},{"name":"test_identity_add","line":148},{"name":"a","line":151},{"name":"result","line":152},{"name":"test_identity_mul","line":161},{"name":"a","line":164},{"name":"result","line":165},{"name":"test_inverse_add","line":175},{"name":"a","line":178},{"name":"result","line":179},{"name":"test_inverse_mul","line":188},{"name":"a","line":191},{"name":"result","line":193},{"name":"test_idempotent_min","line":204},{"name":"a","line":207},{"name":"test_idempotent_max","line":218},{"name":"a","line":221},{"name":"test_tritspace_dimension","line":233},{"name":"three","line":235},{"name":"n_f","line":236},{"name":"result","line":237},{"name":"abs","line":246},{"name":"pow","line":254},{"name":"ln","line":303},{"name":"floor","line":319},{"name":"temp_vals","line":428},{"name":"temp_vals1","line":434},{"name":"temp_vals2","line":441},{"name":"temp_vals3","line":448},{"name":"values","line":467},{"name":"values","line":478},{"name":"values","line":489}],"imports":[{"name":"math::constants","line":10}],"terms":["math","property","template","strategy","random","exhaustive","boundary","sample","size","small","medium","large","associative","left","right","mul","commutative","distributive","identity","inverse","idempotent","min","max","tritspace","dimension","three","abs","pow","floor","temp","vals","vals1","vals2","vals3","values"]},{"id":"2e1c74a2e7066c74730a82673ed2d723555599bada8fa1122e0859a5bb24e3eb","sources":[{"repo":"ghashtag/t27","path":"specs/math/gf_competitive.t27","health":"ok","module":"GFCompetitive"}],"description":"t27/specs/math/gf_competitive.t27 GoldenFloat Competitive Analysis — GF vs Posit vs IEEE 754 MATH-COMPETITIVE-001 — Decode latency, parallelism, hardware efficiency Ring 051: Competitive analysis showing GF's structural advantages Main result: GF has O(1) parallel decode vs Posit's O(N) sequential","symbols":[{"name":"DecodeComplexity","line":18},{"name":"decode_complexity","line":26}],"imports":[{"name":"math::constants","line":10},{"name":"math::sacred_physics","line":11}],"terms":["math","competitive","gfcompetitive","decode","complexity"]},{"id":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/bram_weights.t27","health":"ok","module":"igla-race-bram-weights"}],"description":"t27/specs/igla/race/bram_weights.t27 BRAM-based weight storage for embedded model inference Flattened 2D weight matrix addressing","symbols":[{"name":"WeightBank","line":14},{"name":"WeightAddr","line":20},{"name":"flatten_addr","line":30},{"name":"weight_row_count","line":35},{"name":"read_weight","line":40},{"name":"write_weight","line":49},{"name":"write_at_index","line":61},{"name":"load_row","line":74}],"imports":[{"name":"base::types","line":8}],"terms":["igla","race","bram","weights","weight","bank","addr","flatten","row","count","read","write","index","load"]},{"id":"2ea5e1fa3ab0861939475141b94251a3f60ed7e6df79fdb2142394ecef1f70d5","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xortrain.t27","health":"ok","module":"GftXorTrain"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"hard_sigmoid","line":110},{"name":"relu","line":121},{"name":"on_comb","line":130}],"imports":[],"terms":["ternary","gft","xortrain","xor","train","magadd","magsub","sadd","neg","magmul","smul","hard","sigmoid","relu","comb"]},{"id":"2eb1e03a4339dec4215b765fe572b95ad02d53bbb971e1d326260b49945620a3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_majority.t27","health":"warn","module":"BitnetMajority"}],"description":"","symbols":[{"name":"tmul","line":3},{"name":"dot27","line":10},{"name":"quantize","line":22},{"name":"pack3","line":28},{"name":"maj3","line":38},{"name":"weighted_vote","line":47}],"imports":[],"terms":["ternary","bitnet","majority","tmul","dot27","quantize","pack3","maj3","weighted","vote"]},{"id":"2f44c7a542950430b6d29c51b912e967e045efb52490fb39ddcdfdd232f233ed","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/specs.t27-vendored-compiler.t27","health":"ok","module":"trinity_capability_specs_t27_vendored_compiler"}],"description":"specs/trinity/capabilities/specs.t27-vendored-compiler.t27 -- capability trinity/specs.t27-vendored-compiler: A second copy of t27 compiler modules and numeric specs under trinity:t27/ (34 f One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","vendored","compiler","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"2f44ec37731d354202474d2074769c31c6582d9e0486fe224c2daa8f6188bb47","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/abi.c-api.t27","health":"ok","module":"trinity_capability_abi_c_api"}],"description":"specs/trinity/capabilities/abi.c-api.t27 -- capability trinity/abi.c-api: The C ABI of the VSA library (libtrinity-vsa, static and shared) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","abi","api","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"2f8658ded229cb7cce70a146e20d08c970b7aa97a702665abe125b08e249bb59","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_fec.t27","health":"ok","module":"TriFec"}],"description":"TRI-NET relay FEC: single-erasure XOR recovery, so the integrity gate can RECOVER a channel-corrupted datagram instead of dropping it. A group of K data datagrams carries one parity datagram = their XOR (word by word). If exactly one datagram in the group fails its digest, the relay reconstructs it from the parity and the survivors, recomputes its digest, and -- if it now matches -- meters it. This raises the accepted fraction of an honest relay on a lossy radio link. Two or more","symbols":[{"name":"fec_parity4","line":14},{"name":"fec_xor","line":19},{"name":"fec_recover","line":25}],"imports":[{"name":"base::types","line":11}],"terms":["net","fec","parity4","xor","recover"]},{"id":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_trace_player.t27","health":"warn","module":"TrinityFpgaTracePlayerT27"}],"description":"","symbols":[{"name":"S_IDLE","line":14},{"name":"S_LINE_START","line":15},{"name":"S_LINE_WAIT","line":16},{"name":"S_VEC_BEGIN","line":17},{"name":"S_VEC_RESET","line":18},{"name":"S_STEP_APPLY","line":19},{"name":"S_STEP_ENABLE","line":20},{"name":"S_STEP_WAIT","line":21},{"name":"S_STEP_CAPTURE","line":22},{"name":"S_STEP_COMPARE","line":23},{"name":"S_STEP_NEXT","line":24},{"name":"S_VEC_END","line":25},{"name":"S_VEC_K","line":26},{"name":"S_VEC_K_NEXT","line":27},{"name":"S_FREE_BEGIN","line":28},{"name":"S_FREE_VEC","line":29},{"name":"S_FREE_RESET","line":30},{"name":"S_FREE_LOAD","line":31},{"name":"S_FREE_CONSUME","line":32},{"name":"S_FREE_DRAIN","line":33},{"name":"S_FREE_REPORT","line":34},{"name":"S_FREE_NEXT","line":35},{"name":"S_WL_RESET","line":36},{"name":"S_WL_LOAD","line":37},{"name":"S_WL_START","line":38},{"name":"S_WL_STREAM","line":39},{"name":"S_WL_NEXT","line":40},{"name":"S_WL_FINISH","line":41},{"name":"S_WL_REPORT_W","line":42},{"name":"S_WL_REPORT_R","line":43},{"name":"S_WL_REPORT_T","line":44},{"name":"S_EDGE_RESET","line":45},{"name":"S_EDGE_LOAD","line":46},{"name":"S_EDGE_START","line":47},{"name":"S_EDGE_STREAM","line":48},{"name":"S_EDGE_WAIT","line":49},{"name":"S_EDGE_CONSUME","line":50},{"name":"S_EDGE_LINE_A","line":51},{"name":"S_EDGE_LINE_NEXT","line":52},{"name":"S_TOTALS","line":53},{"name":"S_DONE","line":54},{"name":"TAG_H","line":56},{"name":"TAG_V","line":57},{"name":"TAG_C","line":58},{"name":"TAG_E","line":59},{"name":"TAG_K","line":60},{"name":"TAG_F","line":61},{"name":"TAG_W","line":62},{"name":"TAG_R","line":63},{"name":"TAG_T","line":64},{"name":"TAG_X","line":65},{"name":"TAG_A","line":66},{"name":"TAG_D","line":67},{"name":"WORKLOAD_WORDS","line":68},{"name":"REPORT_FORMAT","line":69},{"name":"bit","line":139},{"name":"popcount5","line":143},{"name":"workload_lane","line":147},{"name":"workload_beat","line":151},{"name":"signed_word","line":157},{"name":"on_clock","line":170}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","trace","player","idle","start","wait","vec","begin","reset","step","apply","enable","capture","compare","end","free","load","consume","drain","report","stream","finish","edge","totals","done","tag","workload","words","format","bit","popcount5","lane","beat","signed","word","clock"]},{"id":"302708b4cdc56954ef9c733c9902e01174972651bb579f5e6ef4943919cd1229","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hex.t27","health":"ok","module":"TriHex"}],"description":"t27/specs/","symbols":[{"name":"Hex","line":13},{"name":"lower_case","line":22},{"name":"upper_case","line":27},{"name":"encode","line":32},{"name":"decode","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","hex","lower","case","upper","encode","decode"]},{"id":"304633b6f24931bc03b56540235f1cfb560e9648a6fa3473ac53f2c74c8156fc","sources":[{"repo":"ghashtag/t27","path":"specs/physics/pellis-formulas.t27","health":"ok","module":"PellisFormulas"}],"description":"t27/specs/physics/pellis-formulas.t27 Trinity x Pellis hybrid — thin-structure formulas anchored on L5 (issue #277). SSOT: invariants tie Pell ladders to phi; observables are references for tri math compare.","symbols":[{"name":"PHI","line":12},{"name":"PHI_SQ","line":13},{"name":"PHI_INV","line":14},{"name":"PHI_INV_SQ","line":15},{"name":"TRINITY_FROM_PHI","line":18},{"name":"ALPHA_INV_REFERENCE","line":21},{"name":"PHI_POW_FIVE","line":24},{"name":"PELL_P1","line":27},{"name":"PELL_P2","line":28},{"name":"PELL_P3","line":29},{"name":"PELL_P4","line":30},{"name":"PELL_P5","line":31},{"name":"trinity_anchor_error","line":33},{"name":"matches_sacred_trinity","line":37}],"imports":[{"name":"math::constants","line":9},{"name":"math::sacred_physics","line":10}],"terms":["physics","pellis","formulas","phi","inv","alpha","reference","pow","five","pell","anchor","matches","sacred"]},{"id":"3058e555568a46d707c7eb6bde87b2611b7b3b35d0bc44cf39e69b7105c96836","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/needle.t27","health":"ok","module":"tool_trinity_tri_needle"}],"description":"specs/tools/trinity/tri/needle.t27 -- tool gHashTag/trinity:tri/needle, the `tri needle` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["needle","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/orphan_detection.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-011: Orphaned Session Detection","symbols":[{"name":"Session","line":29},{"name":"Timestamp","line":41},{"name":"SessionStatus","line":48},{"name":"Option","line":59},{"name":"ORPHANED_THRESHOLD_MINUTES","line":68},{"name":"is_session_orphaned","line":82},{"name":"detect_orphaned_sessions","line":110},{"name":"scan_orphans","line":137},{"name":"is_orphan","line":145}],"imports":[{"name":"timestamp","line":19}],"terms":["sandbox","orphan","detection","session","timestamp","status","option","orphaned","threshold","minutes","detect","sessions","scan","orphans"]},{"id":"30907b42896f20f54745d8066fc6f48dbc090a2943ca9314c5c4daa0f50e5739","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/05_widths_and_casts.t27","health":"ok","module":"tutorial-05-widths"}],"description":"05 — Widths and casts, and the one that catches everybody Lesson 5. Converting between widths, and the single sharpest edge in the language today: an integer literal types as i32, so arithmetic on a narrower mutable local fails the type check unless you say what you mean. . Everything below is measured against the compiler in this repository, not","symbols":[{"name":"narrow","line":24},{"name":"widen","line":28},{"name":"increment_narrow","line":54},{"name":"increment_by_binding","line":63},{"name":"stepped","line":64},{"name":"average_of_three","line":71},{"name":"total","line":72},{"name":"sum_narrow_counter","line":90}],"imports":[],"terms":["tutorial","widths","casts","narrow","widen","increment","binding","stepped","average","three","total","sum","counter"]},{"id":"311455eaad1ec081b56395b38564babf52e10966f35b98b862d97bc5be60ff52","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-vsa-verify.t27","health":"ok","module":"skill_trinity_vsa_verify"}],"description":"specs/skills/trinity-vsa-verify.t27 -- skill trinity/vsa-verify Source of truth for the skill card on t27.ai (#/skills?skill=trinity/vsa-verify). The skill body lives in gHashTag/trinity at .claude/skills/vsa-verify/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/vsa-verify/SKILL.md, sha256 8b9c4518b1bc...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","vsa","verify","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/governance_agent.t27","health":"warn","module":"GovernanceAgent"}],"description":"t27/specs/","symbols":[{"name":"GovernanceAgent","line":13},{"name":"SacredRule","line":22},{"name":"Violation","line":28},{"name":"SacredScore","line":40},{"name":"PatchRequest","line":50},{"name":"PreCommitState","line":62},{"name":"GovernanceWidget","line":70},{"name":"AuditEntry","line":79}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["governance","sacred","rule","violation","score","patch","request","pre","commit","state","widget","audit","entry"]},{"id":"3195a264eeb3a9f6a1894ea50f84cd3ce9c91b52e62f169b7518249a90b5df97","sources":[{"repo":"ghashtag/t27","path":"specs/vm/trinity_vm.t27","health":"ok","module":"TrinityVsaVm"}],"description":"specs/vm/trinity_vm.t27 -- the VSA VM of gHashTag/trinity src/vm.zig as it is at the pin S05 of gHashTag/trinity#988 (gHashTag/t27#3567). src/vm.zig is the VM the consumer builds and tests (test:src/vm.zig, a member of `zig build test`; the library facade re-exports it): a register machine over four hyperdimensional registers whose operations are the sixteen VSA operations of specs/vsa/trinity_compat.t27. It shares nothing with the TRI-27 machine of specs/isa/tri27_machine.t27: another opcode space, another register file, another program type.","symbols":[{"name":"KIND","line":17},{"name":"ID","line":18},{"name":"NAME","line":19},{"name":"CONSUMER_REPO","line":20},{"name":"PINNED_REVISION","line":21},{"name":"OWNER_MODULE","line":22},{"name":"OWNER_LINES","line":23},{"name":"SACRED_MODULE","line":24},{"name":"VSA_SPEC","line":25},{"name":"CANONICAL_NOTE","line":26},{"name":"OPCODE_COUNT","line":28},{"name":"OPCODE_NAMES","line":29},{"name":"OPCODE_VALUES","line":30},{"name":"OPCODE_VALUES_EXPLICIT","line":31},{"name":"OPCODE_VALUE_RULE","line":32},{"name":"OP_NOP","line":33},{"name":"OP_HALT","line":34},{"name":"VECTOR_REGISTERS","line":36},{"name":"SCALAR_REGISTERS","line":37},{"name":"FLOAT_REGISTERS","line":38},{"name":"F16_ACCUMULATORS","line":39},{"name":"F16_LANES","line":40},{"name":"VECTOR_CAPACITY","line":41},{"name":"REGISTER_ALIAS_RULE","line":42},{"name":"PROGRAM_FORM","line":43},{"name":"SERIALIZED_FORM","line":44},{"name":"STEP_RULE","line":45},{"name":"RUN_RULE","line":46},{"name":"BUDGET","line":47},{"name":"CMP_THRESHOLD","line":48},{"name":"CMP_RULE","line":49},{"name":"JIT_RULE","line":50},{"name":"RANDOM_SEED_USED","line":51},{"name":"RANDOM_RULE","line":52},{"name":"BUNDLE3_THIRD_SOURCE","line":53},{"name":"F16_LOAD_RULE","line":54},{"name":"ERROR_RULE","line":55},{"name":"SACRED_OPCODE_COUNT","line":57},{"name":"SACRED_IMPLEMENTED_COUNT","line":58},{"name":"SACRED_IMPLEMENTED","line":59},{"name":"SACRED_IMPLEMENTED_VALUES","line":60},{"name":"SACRED_RULE","line":61},{"name":"PHI","line":62},{"name":"TEST_COUNT","line":64},{"name":"TESTS","line":65},{"name":"CI_EVIDENCE","line":66},{"name":"HOST_EVIDENCE","line":67},{"name":"ENABLED","line":68},{"name":"vreg_index","line":72},{"name":"step_continues","line":77},{"name":"cc_class","line":82},{"name":"cc_zero","line":88},{"name":"quantise_f16","line":92},{"name":"sacred_identity_error","line":98},{"name":"sacred_identity_holds","line":104},{"name":"fib_rounded","line":109}],"imports":[],"terms":["vsa","kind","consumer","pinned","revision","owner","sacred","canonical","note","opcode","count","values","explicit","rule","nop","halt","vector","registers","scalar","float","f16","accumulators","lanes","capacity","register","alias","program","form","serialized","step","budget","cmp","threshold","jit","random","seed","used","bundle3","third","load","implemented","phi","evidence","host","enabled","vreg","index","continues","class","zero","quantise","identity","holds","fib","rounded"]},{"id":"31d8e97942af2ca10445cc7bcf58e77c8e5d48e28fffb90798cfa7137a3ca245","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/activation_quantizer.t27","health":"warn","module":"ActivationQuantizer"}],"description":"","symbols":[{"name":"quantize","line":5},{"name":"on_comb","line":31}],"imports":[],"terms":["ternary","activation","quantizer","quantize","comb"]},{"id":"31fc2cc4511db11be5ce16f41f881ed462911238ee18ba0fbe5f8f25dd0fbfd4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_reputation.t27","health":"ok","module":"TriComputeReputation"}],"description":"TRI-NET executor reputation: weight the pool split (tri_compute_pool) by a node's track record, so a repeatedly-honest node earns a larger share for the same raw work and a slashed node earns less. Reputation rises on honest settlement (capped) and is halved on every slash -- a strong, memory-bearing penalty that a single fresh receipt cannot immediately undo.","symbols":[{"name":"REP_INIT","line":10},{"name":"REP_MAX","line":11},{"name":"RESOLVE_HONEST","line":15},{"name":"RESOLVE_SLASH","line":16},{"name":"rep_after_honest","line":29},{"name":"rep_after_slash","line":39},{"name":"rep_after_resolution","line":50},{"name":"GFT16_ET","line":70},{"name":"REP_GAIN_PER_TRIT","line":71},{"name":"rung_honest_gain","line":73},{"name":"rep_after_resolution_rung","line":84},{"name":"rep_after_verifier","line":96},{"name":"weighted_work","line":114},{"name":"can_admit","line":131}],"imports":[{"name":"base::types","line":8}],"terms":["net","compute","reputation","rep","init","max","resolve","honest","slash","resolution","gft16","gain","per","trit","rung","verifier","weighted","work","admit"]},{"id":"320bbf24c3e227fc457fe90d95b24bf7d06dc2e24ed0ae780e3224fb281a5f75","sources":[{"repo":"ghashtag/t27","path":"specs/account/repo.t27","health":"ok","module":"AccountRepo"}],"description":"specs/account/repo.t27 Account Repository Operations","symbols":[{"name":"AccountID","line":12},{"name":"OrgID","line":13},{"name":"AccessToken","line":14},{"name":"RefreshToken","line":15},{"name":"Info","line":17},{"name":"AccountError","line":24},{"name":"PersistTokenInput","line":33},{"name":"PersistAccountInput","line":40},{"name":"AccountRow","line":50},{"name":"AccountState","line":59},{"name":"ACCOUNT_STATE_ID","line":69},{"name":"active","line":75},{"name":"list","line":78},{"name":"remove","line":81},{"name":"set_active","line":84},{"name":"get_row","line":87},{"name":"persist_token","line":90},{"name":"persist_account","line":93},{"name":"get_state","line":96},{"name":"set_state","line":99},{"name":"clear_active","line":102}],"imports":[{"name":"base::types","line":6}],"terms":["account","org","access","token","refresh","info","persist","row","state","active","list","remove","set","get","clear"]},{"id":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/nf4.t27","health":"ok","module":"NF4"}],"description":"t27/specs/numeric/nf4.t27 NormalFloat4 - 4-bit normalized float quantization format (Google) NUMERIC-STANDARD-001 Agent 11 (P1) NF4 format: - Represents normalized values in [0, 1] - Uses a 4-bit normalized representation","symbols":[{"name":"BITS","line":28},{"name":"LEVELS","line":29},{"name":"NF4","line":33},{"name":"encode","line":40},{"name":"clamped","line":42},{"name":"decode","line":52},{"name":"min_value","line":59},{"name":"max_value","line":63},{"name":"epsilon","line":67},{"name":"quantization_error","line":72},{"name":"decoded","line":73},{"name":"validate_format","line":79},{"name":"MEMORY_RATIO_VS_FP32","line":94},{"name":"abs","line":98},{"name":"quantization_error_pct","line":102},{"name":"encoded","line":103},{"name":"decoded","line":104},{"name":"eq","line":111},{"name":"ne","line":115},{"name":"lt","line":119},{"name":"le","line":123},{"name":"gt","line":127},{"name":"ge","line":131}],"imports":[{"name":"base::testing","line":13},{"name":"base::benchmarking","line":14}],"terms":["euler","fpga","nf4","bits","levels","encode","clamped","decode","min","max","epsilon","quantization","decoded","validate","format","memory","ratio","fp32","abs","pct","encoded"]},{"id":"32429478d43dee511c97477aafd758a963a0f8e421dc64db613c476c92520143","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/unbalanced.t27","health":"warn","module":"unbalanced"}],"description":"","symbols":[{"name":"Broken","line":3},{"name":"f","line":8}],"imports":[],"terms":["bootstrap","fixtures","terminator","unbalanced","broken"]},{"id":"32446899fb19eea9b774bf3a79dcba5212af07c832499cf0710ffb9dfdd612b1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitvector.t27","health":"ok","module":"TriBitvector"}],"description":"t27/specs/","symbols":[{"name":"BitVector","line":13},{"name":"empty","line":23},{"name":"with_capacity","line":28},{"name":"push","line":33},{"name":"pop","line":38},{"name":"get","line":43},{"name":"set","line":48},{"name":"len","line":53},{"name":"append","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","bitvector","bit","vector","empty","capacity","push","pop","get","set","len","append"]},{"id":"324d8917e25b095ffde85d09bbb631eec1b5ed14cc876299cda6d1e6f8ee2e0c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/json.t27","health":"ok","module":"TriJson"}],"description":"t27/specs/","symbols":[{"name":"JsonValue","line":13},{"name":"JsonType","line":18},{"name":"JsonArray","line":22},{"name":"JsonObject","line":26},{"name":"parse","line":34},{"name":"stringify","line":39},{"name":"get","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","json","array","object","parse","stringify","get"]},{"id":"327c5189a740d092290fe5dd10de3cf4da56b54a44d1bec9be8414451e70ae0e","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-queen-hive-visuals.t27","health":"ok","module":"skill_trinity_queen_hive_visuals"}],"description":"specs/skills/trinity-queen-hive-visuals.t27 -- skill trinity/queen-hive-visuals Source of truth for the skill card on t27.ai (#/skills?skill=trinity/queen-hive-visuals). The skill body lives in gHashTag/trinity at .claude/skills/queen-hive-visuals/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/queen-hive-visuals/SKILL.md, sha256 c6d914dc81c8...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","queen","hive","visuals","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"32a5e865c0d356118c8eaaa83e222824e231c7c3a4d690fc89f4f36ebf52adb9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/script_tree_sweep.t27","health":"warn","module":"opts"}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","script","tree","sweep","opts"]},{"id":"332ed81bb0981410ac2f2467b61b1044e39359afb9db637e3a9e757befc32f98","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_01_empty_params.t27","health":"ok","module":"NegEmptyParams"}],"description":"ADR-008 negative: an empty parameter list is not a parameterised type. Ambiguous with a plain type declaration, so refused rather than guessed.","symbols":[{"name":"Nothing","line":4}],"imports":[],"terms":["bootstrap","fixtures","generic","neg","empty","params","nothing"]},{"id":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/validation.t27","health":"ok","module":"validation_rules"}],"description":"validation.t27 — Validation Rules and Invariants TDD and language policy validation for t27 specs","symbols":[{"name":"ValidationResult","line":10},{"name":"validate_tdd_contract","line":21},{"name":"has_test","line":22},{"name":"has_invariant","line":23},{"name":"validate_language_policy","line":63},{"name":"validate_generated_header","line":82},{"name":"validate_spec_structure","line":114},{"name":"has_code","line":125},{"name":"has_data","line":126},{"name":"has_const","line":127},{"name":"validate_push_skill","line":138},{"name":"validate_commit_skill","line":160},{"name":"validate_policy_matrix","line":182},{"name":"kind","line":183},{"name":"artifacts","line":184},{"name":"checkpoints","line":187},{"name":"has_spec","line":188},{"name":"has_docs","line":189},{"name":"checkpoints","line":199},{"name":"has_spec","line":210},{"name":"validate_remote_url","line":225},{"name":"contains_cyrillic","line":242},{"name":"c","line":245},{"name":"next_c","line":249},{"name":"is_docs_path","line":261},{"name":"count_checkpoints","line":267},{"name":"checkpoint_str","line":270},{"name":"contains_substring","line":281},{"name":"spec_with_tests","line":291},{"name":"result","line":292},{"name":"spec_with_invariants","line":296},{"name":"result","line":297},{"name":"spec_empty","line":301},{"name":"result","line":302},{"name":"spec_empty_test","line":306},{"name":"result","line":307},{"name":"spec_ascii","line":311},{"name":"result","line":312},{"name":"spec_docs","line":316},{"name":"result","line":317},{"name":"spec_cyrillic","line":321},{"name":"header","line":328},{"name":"result","line":335},{"name":"no_header","line":339},{"name":"result","line":340},{"name":"no_warning","line":344},{"name":"result","line":349},{"name":"skill","line":353},{"name":"result","line":354},{"name":"skill","line":358},{"name":"result","line":359},{"name":"skill","line":363},{"name":"result","line":364},{"name":"skill","line":368},{"name":"result","line":369},{"name":"skill","line":373},{"name":"result","line":374},{"name":"skill","line":378},{"name":"result","line":379},{"name":"skill","line":383},{"name":"result","line":384},{"name":"skill","line":388},{"name":"result","line":389},{"name":"skill","line":393},{"name":"result","line":394},{"name":"skill","line":398},{"name":"result","line":399},{"name":"skill","line":403},{"name":"result","line":404},{"name":"url","line":408},{"name":"result","line":409},{"name":"url","line":413},{"name":"result","line":414},{"name":"text","line":418},{"name":"result","line":419},{"name":"path","line":423},{"name":"result","line":424},{"name":"path","line":428},{"name":"result","line":429},{"name":"artifacts","line":433},{"name":"result","line":434},{"name":"path","line":463},{"name":"spec_with_tests","line":472},{"name":"start","line":473},{"name":"end","line":475},{"name":"elapsed","line":476},{"name":"spec_ascii","line":481},{"name":"start","line":482},{"name":"end","line":484},{"name":"elapsed","line":485},{"name":"header","line":490},{"name":"start","line":493},{"name":"end","line":495},{"name":"elapsed","line":496},{"name":"skill","line":501},{"name":"start","line":502},{"name":"end","line":504},{"name":"elapsed","line":505},{"name":"start","line":510},{"name":"end","line":512},{"name":"elapsed","line":513}],"imports":[],"terms":["compiler","runtime","validation","rules","validate","tdd","contract","invariant","language","policy","generated","header","structure","data","push","skill","commit","matrix","kind","artifacts","checkpoints","docs","remote","url","contains","cyrillic","path","count","checkpoint","str","substring","invariants","empty","ascii","warning","text","start","end","elapsed"]},{"id":"338dda6bd5fe68db61f018bc4216fd6ab671562bcfc3cf92f1692fbdc2440abd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/kd_tree.t27","health":"ok","module":"TriKdTree"}],"description":"t27/specs/","symbols":[{"name":"KDNode","line":13},{"name":"KDTree","line":20},{"name":"init","line":31},{"name":"build","line":36},{"name":"nearest","line":41},{"name":"range","line":46},{"name":"deinit","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","tree","kdnode","kdtree","init","build","nearest","range","deinit"]},{"id":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/linked_list.t27","health":"ok","module":"TriLinkedList"}],"description":"t27/specs/","symbols":[{"name":"ListNode","line":13},{"name":"LinkedList","line":19},{"name":"init","line":31},{"name":"append","line":37},{"name":"node","line":39},{"name":"prepend","line":56},{"name":"node","line":58},{"name":"remove","line":75},{"name":"deinit","line":108},{"name":"next","line":112}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","linked","list","node","init","append","prepend","remove","deinit"]},{"id":"33f62114e7c8e1350be72c75b2c948739d34dbea16333fbbff2b1452f27d21d3","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/greedy_probe.t27","health":"ok","module":"GreedyProbe"}],"description":"","symbols":[{"name":"g","line":2}],"imports":[],"terms":["bootstrap","goldring","greedy","probe"]},{"id":"33fd6fdd02d955bdbc1fd99943a0c1eef3fa8818c2d5075fb3a268fbf8fc44b9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_06_value_rhs.t27","health":"ok","module":"NegValueRhs"}],"description":"ADR-008 negative: a parameterised value is not a type declaration.","symbols":[{"name":"Answer","line":3}],"imports":[],"terms":["bootstrap","fixtures","generic","neg","rhs","answer"]},{"id":"344f42e42174ead35a201804037295018edd2a0b4c05cd17426cc7d92239d51a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/types.t27","health":"ok","module":"TrinityMemoryTypes"}],"description":"specs/memory/tmem/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).","symbols":[{"name":"TMS_LANE_BITS","line":11},{"name":"TMS_LANE_ZERO","line":12},{"name":"TMS_LANE_POS","line":13},{"name":"TMS_LANE_NEG","line":14},{"name":"TMS_LANE_INVALID","line":15},{"name":"TMS_CODEC_BASELINE2","line":18},{"name":"TMS_CODEC_DENSE5","line":19},{"name":"TMS_CODEC_DENSE17","line":20},{"name":"TMS_CODEC_DENSE22","line":21},{"name":"TMS_CODEC_SPARSE41","line":22},{"name":"TMS_CODEC_SPARSE82","line":23},{"name":"TMS_CODEC_COUNT","line":24},{"name":"TMS_BASELINE2_GROUP_TRITS","line":26},{"name":"TMS_BASELINE2_GROUP_BITS","line":27},{"name":"TMS_DENSE5_GROUP_TRITS","line":28},{"name":"TMS_DENSE5_GROUP_BITS","line":29},{"name":"TMS_DENSE17_GROUP_TRITS","line":30},{"name":"TMS_DENSE17_GROUP_BITS","line":31},{"name":"TMS_DENSE22_GROUP_TRITS","line":32},{"name":"TMS_DENSE22_GROUP_BITS","line":33},{"name":"TMS_SPARSE41_GROUP_TRITS","line":34},{"name":"TMS_SPARSE41_GROUP_BITS","line":35},{"name":"TMS_SPARSE41_MAX_NONZERO","line":36},{"name":"TMS_SPARSE82_GROUP_TRITS","line":37},{"name":"TMS_SPARSE82_GROUP_BITS","line":38},{"name":"TMS_SPARSE82_MAX_NONZERO","line":39},{"name":"TMS_DENSE5_CODE_LIMIT","line":43},{"name":"TMS_DENSE5_ZERO_GROUP_CODE","line":44},{"name":"TMS_DENSE5_RESERVED_FIRST","line":45},{"name":"TMS_DENSE5_RESERVED_LAST","line":46},{"name":"TMS_DENSE17_CODE_LIMIT","line":47},{"name":"TMS_DENSE22_CODE_LIMIT","line":48},{"name":"TMS_SPARSE41_CODE_LIMIT","line":49},{"name":"TMS_SPARSE41_RESERVED_FIRST","line":50},{"name":"TMS_SPARSE41_RESERVED_LAST","line":51},{"name":"TMS_SPARSE82_CODE_LIMIT","line":52},{"name":"TMS_SPARSE82_RESERVED_FIRST","line":53},{"name":"TMS_SPARSE82_RESERVED_LAST","line":54},{"name":"TMS_TMEM_MAGIC_0","line":57},{"name":"TMS_TMEM_MAGIC_1","line":58},{"name":"TMS_TMEM_MAGIC_2","line":59},{"name":"TMS_TMEM_MAGIC_3","line":60},{"name":"TMS_TMEM_VERSION","line":61},{"name":"TMS_TMEM_HEADER_BYTES","line":62},{"name":"TMS_TMEM_VERSION_OFFSET","line":63},{"name":"TMS_TMEM_CODEC_OFFSET","line":64},{"name":"TMS_TMEM_RESERVED_OFFSET","line":65},{"name":"TMS_TMEM_RESERVED_BYTES","line":66},{"name":"TMS_TMEM_COUNT_OFFSET","line":67},{"name":"TMS_TMEM_COUNT_BYTES","line":68},{"name":"TMS_TMEM_PAYLOAD_LENGTH_OFFSET","line":69},{"name":"TMS_TMEM_PAYLOAD_LENGTH_BYTES","line":70},{"name":"TMS_TMEM_CRC_OFFSET","line":71},{"name":"TMS_TMEM_CRC_BYTES","line":72},{"name":"TMS_TMEM_CRC_COVERED_HEADER_BYTES","line":73},{"name":"TMS_TMEM_MAX_PAYLOAD_BYTES","line":74},{"name":"TMS_CRC32_POLY","line":77},{"name":"TMS_CRC32_INIT","line":78},{"name":"TMS_CRC32_XOR_OUT","line":79},{"name":"TMS_CRC32_CHECK_VALUE","line":80},{"name":"TMS_OK","line":83},{"name":"TMS_ERR_CODEC","line":84},{"name":"TMS_ERR_CAPACITY","line":85},{"name":"TMS_ERR_TRIT","line":86},{"name":"TMS_ERR_SPARSITY","line":87},{"name":"TMS_ERR_LENGTH","line":88},{"name":"TMS_ERR_CODE","line":89},{"name":"TMS_ERR_PADDING","line":90},{"name":"TMS_ERR_HEADER","line":91},{"name":"TMS_ERR_CHECKSUM","line":92},{"name":"TMS_ERR_LIMIT","line":93},{"name":"Evidence","line":96},{"name":"tms_pow3","line":104},{"name":"tms_group_trits","line":111},{"name":"tms_group_bits","line":121},{"name":"tms_max_nonzero","line":132},{"name":"tms_valid_word_count","line":139},{"name":"tms_lane_valid","line":146},{"name":"tms_lane_trit","line":150},{"name":"tms_word_valid","line":156},{"name":"tms_dense_code5","line":170},{"name":"tms_payload_bytes","line":182},{"name":"tms_crc32_byte","line":191}],"imports":[],"terms":["memory","tmem","tms","lane","bits","zero","pos","neg","invalid","codec","baseline2","dense5","dense17","dense22","sparse41","sparse82","count","group","trits","max","nonzero","limit","reserved","magic","header","bytes","offset","payload","length","crc","covered","crc32","poly","init","xor","out","err","capacity","trit","sparsity","padding","checksum","evidence","pow3","valid","word","dense","code5","byte"]},{"id":"346a15f33a83f1587b8c61955907f492ac291d4c687970a47a655ceb52d9be35","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru_cache.t27","health":"ok","module":"TriLruCache"}],"description":"t27/specs/","symbols":[{"name":"LRUCache","line":13},{"name":"Node","line":22},{"name":"init","line":35},{"name":"get","line":40},{"name":"put","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","lru","cache","lrucache","node","init","get","put"]},{"id":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hardware_validation.t27","health":"ok","module":"HardwareValidation"}],"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","symbols":[{"name":"VAL_PENDING","line":8},{"name":"VAL_RUNNING","line":9},{"name":"VAL_PASSED","line":10},{"name":"VAL_FAILED","line":11},{"name":"TEST_SIMULATION","line":14},{"name":"TEST_BIT_ACCURATE","line":15},{"name":"TEST_FPGA_BOARD","line":16},{"name":"TEST_REAL_WORLD","line":17},{"name":"create_test_result","line":20},{"name":"extract_state","line":27},{"name":"extract_test_type","line":31},{"name":"extract_errors","line":35},{"name":"extract_iterations","line":39},{"name":"calculate_pass_rate","line":44},{"name":"test_passed","line":52},{"name":"bit_accurate","line":57},{"name":"fpga_board_ready","line":65},{"name":"create_packet_capture","line":71},{"name":"extract_capture_src","line":79},{"name":"extract_capture_dst","line":83},{"name":"extract_capture_payload","line":87},{"name":"extract_capture_timestamp","line":91},{"name":"create_performance_metric","line":99},{"name":"extract_metric_type","line":105},{"name":"extract_metric_value","line":109},{"name":"extract_metric_unit","line":113}],"imports":[{"name":"base::types","line":5}],"terms":["net","hardware","validation","val","running","passed","failed","simulation","bit","accurate","fpga","board","real","world","create","extract","state","iterations","calculate","pass","rate","ready","packet","capture","dst","payload","timestamp","performance","metric","unit"]},{"id":"34e12bde826ea098367fbf59daab759f4ea2f35a4a9253e07010e8f9ee437523","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0008_ptr_split_negative.t27","health":"ok","module":"m"}],"description":"","symbols":[{"name":"P","line":2},{"name":"u8","line":3},{"name":"After","line":4}],"imports":[],"terms":["bootstrap","goldring","ptr","split","negative"]},{"id":"350126a286467b29f140c9e9b1f67c37c33af5715618ec5b6d7a8c6f27bd33bc","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/server.t27","health":"ok","module":"lsp-server"}],"description":"lsp/server.t27 — LSP Server Lifecycle and Methods Server-side protocol initialization, lifecycle, and request handling","symbols":[{"name":"SERVER_NAME","line":24},{"name":"SERVER_VERSION","line":27},{"name":"MAX_FILE_SIZE","line":30},{"name":"MAX_DIAGNOSTICS","line":33},{"name":"DEFAULT_TRIGGER_CHARS","line":36},{"name":"REQUEST_ID_START","line":39},{"name":"ServerCapabilities","line":46},{"name":"InitializeResult","line":65},{"name":"ServerInfo","line":71},{"name":"ServerState","line":77},{"name":"DocumentState","line":86},{"name":"CompletionContext","line":96},{"name":"CompletionTriggerKind","line":102},{"name":"DocumentSymbolOptions","line":109},{"name":"WorkspaceSymbolOptions","line":114},{"name":"CodeActionContext","line":119},{"name":"RenameOptions","line":125},{"name":"PrepareRenameResult","line":130},{"name":"ServerErrorCode","line":136},{"name":"RequestError","line":150},{"name":"ShutdownResult","line":157},{"name":"ExitParams","line":162},{"name":"server_capabilities_default","line":171},{"name":"server_info_create","line":192},{"name":"initialize_result_create","line":200},{"name":"document_state_create","line":208},{"name":"completion_context_create","line":220},{"name":"code_action_context_create","line":228},{"name":"rename_options_create","line":236},{"name":"request_error_create","line":243},{"name":"shutdown_result_create","line":252},{"name":"exit_params_create","line":259},{"name":"server_is_initialized","line":266},{"name":"server_can_accept_requests","line":271},{"name":"next_request_id","line":276},{"name":"diagnostics_exceeds_max","line":281},{"name":"file_size_exceeds_max","line":286},{"name":"prepare_rename_result_create","line":291},{"name":"server_state_to_string","line":299},{"name":"error_is_request_cancelled","line":310},{"name":"error_is_content_modified","line":315},{"name":"error_code_to_string","line":320},{"name":"caps","line":340},{"name":"info","line":346},{"name":"result","line":351},{"name":"state","line":356},{"name":"ctx","line":361},{"name":"diagnostics","line":366},{"name":"ctx","line":367},{"name":"opts","line":372},{"name":"err","line":377},{"name":"result","line":382},{"name":"params","line":387},{"name":"id1","line":402},{"name":"id2","line":403},{"name":"str","line":418},{"name":"err","line":423},{"name":"err","line":428},{"name":"str","line":433}],"imports":[],"terms":["lsp","max","size","diagnostics","default","trigger","chars","request","start","capabilities","initialize","info","state","document","completion","kind","options","workspace","action","rename","prepare","shutdown","exit","params","create","initialized","accept","requests","exceeds","cancelled","content","modified","caps","ctx","opts","err","id1","id2","str"]},{"id":"3518b9f0a302e6ba36ab0c41a65e331231b6824a51316201991894f58708c92e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_lifecycle.t27","health":"warn","module":"TriAutonomousLifecycle"}],"description":"t27/specs/","symbols":[{"name":"LifecycleState","line":13},{"name":"LifecycleEvent","line":17},{"name":"AutonomousAgent","line":26},{"name":"Task","line":35},{"name":"TaskType","line":44},{"name":"TaskStatus","line":48},{"name":"PerformanceMetrics","line":52}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["autonomous","lifecycle","state","event","status","performance","metrics"]},{"id":"3577681475bce26b679c949a8edff241bef9590ba30c189338d5cdeee713065d","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_01_latency_bound.t27","health":"warn","module":null}],"description":"NEGATIVE fixture: a latency bound, not damage. The first regex reported 230 of these as damaged, which made 429 a metric of the regex rather than of the corpus. tri damage must report zero here.","symbols":[{"name":"Budget","line":4}],"imports":[],"terms":["bootstrap","fixtures","damage","negative","neg","latency","bound","budget"]},{"id":"35a33a43c6ba2669c285f757c838ae44d8cd5028598ff7912370383a41ee7133","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_layer2.t27","health":"warn","module":"GftLayer2"}],"description":"","symbols":[{"name":"gft_mul","line":16},{"name":"gft_add","line":35},{"name":"neuron","line":62},{"name":"on_comb","line":68}],"imports":[],"terms":["ternary","gft","layer2","mul","neuron","comb"]},{"id":"3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/packet_queue.t27","health":"ok","module":"PacketQueue"}],"description":"Packet queue - all inline, no intermediate variables","symbols":[{"name":"QUEUE_SIZE","line":6},{"name":"get_count","line":8},{"name":"is_full","line":12},{"name":"is_empty","line":16},{"name":"increment_index","line":20},{"name":"enqueue","line":28},{"name":"dequeue","line":36},{"name":"size","line":44},{"name":"clear","line":48}],"imports":[{"name":"base::types","line":4}],"terms":["macos","rings","rust","mesh","packet","queue","size","get","count","full","empty","increment","index","enqueue","dequeue","clear"]},{"id":"364119169fe8fa59b9f2ddc0edbcfd00bff4dc1e37af6b7626f40f093360f490","sources":[{"repo":"ghashtag/t27","path":"tests/comprehensive_suite.t27","health":"ok","module":"tests-comprehensive-suite"}],"description":"comprehensive_suite.t27 a documents the repository integration suite Executed by: t27c suite (or tri test). No shell runners under tests/.","symbols":[{"name":"SUITE_PHASE_COUNT","line":7},{"name":"PHASE_PARSE","line":9},{"name":"PHASE_GEN_ZIG","line":10},{"name":"PHASE_GEN_VERILOG","line":11},{"name":"PHASE_GEN_C","line":12},{"name":"PHASE_SEAL_VERIFY","line":13},{"name":"PHASE_FIXED_POINT","line":14}],"imports":[],"terms":["comprehensive","suite","phase","count","parse","gen","zig","verilog","seal","verify","fixed","point"]},{"id":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/trinity_compat.t27","health":"ok","module":"vsa_trinity_compat"}],"description":"specs/vsa/trinity_compat.t27 -- the VSA and numeric contract the Trinity facade actually runs Source of truth for tools/trinity_vsa_compat.py and conformance/vsa_trinity_compat.json (gHashTag/t27#3566 = S04 of gHashTag/trinity#988). gHashTag/trinity re-exports sixteen VSA operations from the pinned package gHashTag/zig-golden-float (through gHashTag/zig-hdc, which re-exports them name by name); the canonical specs of this directory describe the same operations, and the two disagree on the zero trit, on unequal lengths and on the sequence","symbols":[{"name":"KIND","line":20},{"name":"ID","line":21},{"name":"NAME","line":22},{"name":"CONSUMER_REPO","line":23},{"name":"PINNED_REVISION","line":24},{"name":"FACADE","line":25},{"name":"OWNER_REPO","line":27},{"name":"OWNER_REVISION","line":28},{"name":"OWNER_MODULE","line":29},{"name":"BRIDGE_REPO","line":30},{"name":"BRIDGE_REVISION","line":31},{"name":"BRIDGE_NOTE","line":32},{"name":"FACADE_EXPORTS","line":35},{"name":"FACADE_OWNER_FN","line":36},{"name":"FACADE_SPEC_FN","line":37},{"name":"FACADE_FINDING","line":38},{"name":"VERDICTS","line":41},{"name":"FACADE_VERDICT","line":42},{"name":"AGREE_COUNT","line":43},{"name":"AGREE_ON_EQUAL_LENGTHS_COUNT","line":44},{"name":"DIFFER_COUNT","line":45},{"name":"REFERENCE","line":47},{"name":"BIND_ZERO","line":48},{"name":"DIM_POLICY_BIND","line":49},{"name":"DIM_POLICY_BUNDLE","line":50},{"name":"DIM_POLICY_DOT","line":51},{"name":"DIM_POLICY_HAMMING","line":52},{"name":"COSINE_ZERO_NORM","line":53},{"name":"HAMMING_SIMILARITY_EMPTY","line":54},{"name":"DOT_SIMILARITY_EMPTY","line":55},{"name":"NORM","line":56},{"name":"BIND_ZERO_IDENTITY","line":58},{"name":"BIND_TRI27","line":59},{"name":"TRI27_MODULUS","line":60},{"name":"TRIT_NEG","line":62},{"name":"TRIT_ZERO","line":63},{"name":"TRIT_POS","line":64},{"name":"TRITS_PER_BYTE","line":65},{"name":"MAX_TRITS_PACKED","line":68},{"name":"MAX_PACKED_BYTES","line":69},{"name":"MAX_TRITS_HYBRID","line":70},{"name":"HYBRID_PACKED_BYTES","line":71},{"name":"SIMD_WIDTH","line":72},{"name":"DOT_ACCUMULATOR","line":73},{"name":"SIMILARITY_RANGE","line":74},{"name":"ALLOCATION","line":75},{"name":"ERRORS","line":76},{"name":"NOT_MEASURED","line":77},{"name":"ENABLED","line":78},{"name":"trit_bind","line":82},{"name":"trit_bind_zero_identity","line":86},{"name":"trit_sign","line":92},{"name":"trit_bundle2","line":98},{"name":"trit_bundle3","line":102},{"name":"trit_differs","line":106},{"name":"trit_nonzero","line":111},{"name":"len_max","line":116},{"name":"len_min","line":121},{"name":"rotate_right","line":127},{"name":"rotate_left","line":134},{"name":"packed_bytes","line":139},{"name":"pack_index","line":143},{"name":"pack_slot","line":147},{"name":"cosine_defined","line":151},{"name":"tri27_bind","line":157}],"imports":[],"terms":["vsa","compat","kind","consumer","pinned","revision","facade","owner","bridge","note","finding","verdicts","verdict","agree","count","equal","lengths","differ","reference","bind","zero","dim","policy","bundle","dot","hamming","cosine","norm","similarity","empty","identity","tri27","modulus","trit","neg","pos","trits","per","byte","max","packed","bytes","hybrid","simd","width","accumulator","range","allocation","measured","enabled","sign","bundle2","bundle3","differs","nonzero","len","min","rotate","right","left","pack","index","slot","defined"]},{"id":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/cell.t27","health":"ok","module":"tool_tri_cell"}],"description":"specs/tools/tri/cell.t27 -- tool tri/cell, the `tri cell` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/cell). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["cell","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"372952ca8c4a3d9117765dba58976196dc877bc0d619296403f39fa6b1fa8a56","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/gemm.t27","health":"ok","module":"igla-race-gemm"}],"description":"t27/specs/igla/race/gemm.t27 GEMM via Booth-encoded shift-add (multiplier-free RTL) R-SI-1: zero '*' operators in generated assignments","symbols":[{"name":"Mat2x2","line":14},{"name":"booth_mul_u32","line":27},{"name":"booth_mul_u32_inner","line":31},{"name":"booth_mul_i16","line":42},{"name":"gemm_2x2","line":56},{"name":"mat_identity","line":73},{"name":"mat_zero","line":77},{"name":"mat_eq","line":81}],"imports":[{"name":"base::types","line":8}],"terms":["igla","race","gemm","mat2x2","booth","mul","u32","inner","i16","2x2","mat","identity","zero"]},{"id":"37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/bandwidth_allocator.t27","health":"warn","module":"BandwidthAllocator"}],"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"TOTAL_BANDWIDTH","line":8},{"name":"MIN_BANDWIDTH","line":9},{"name":"MAX_BANDWIDTH","line":10},{"name":"PRIORITY_LOW","line":13},{"name":"PRIORITY_MEDIUM","line":14},{"name":"PRIORITY_HIGH","line":15},{"name":"create_flow_requirement","line":18},{"name":"get_flow_id","line":25},{"name":"get_flow_priority","line":29},{"name":"get_min_bandwidth","line":33},{"name":"get_current_bandwidth","line":37},{"name":"create_allocation_state","line":42},{"name":"get_allocated_bw","line":49},{"name":"get_pending_requests","line":53},{"name":"get_fair_share","line":57},{"name":"get_last_update","line":61},{"name":"create_flow_array","line":68},{"name":"get_flow_req","line":72},{"name":"calculate_fair_share","line":80},{"name":"allocate_bandwidth","line":88},{"name":"needs_more_bandwidth","line":123},{"name":"update_flow_bandwidth","line":130},{"name":"count_active_flows","line":142},{"name":"find_reclaimable_bandwidth","line":158},{"name":"prioritize_bandwidth","line":194}],"imports":[{"name":"base::types","line":5}],"terms":["net","bandwidth","allocator","max","flows","total","min","priority","low","medium","high","create","flow","requirement","get","allocation","state","allocated","requests","fair","share","array","req","calculate","allocate","more","count","active","find","reclaimable","prioritize"]},{"id":"3751f1916cc2dfcd00373c6f4f89f47b1fe38caa1cf1985ddb113ef7dffa2d00","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/prims_mst.t27","health":"ok","module":"TriPrimsMst"}],"description":"t27/specs/","symbols":[{"name":"MSTResult","line":13},{"name":"mst","line":24}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","prims","mst","mstresult"]},{"id":"375ff3748192be0e691130621df18299442c31ef42e9eae4e791c75c4bf5aaee","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_madd.t27","health":"ok","module":"GftMadd"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"scale_q","line":108},{"name":"on_comb","line":121}],"imports":[],"terms":["ternary","gft","madd","magadd","magsub","sadd","neg","magmul","smul","scale","comb"]},{"id":"37aaa0322da86d9674dfd2f7ee235c14c68420cd43da356a04384f5dfccc2f20","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/fp8_e5m2.t27","health":"warn","module":"triformat-fp8_e5m2"}],"description":"fp8_e5m2.t27 — FP8 E5M2 8-bit Floating Point 8-bit float with 5 exponent, 2 mantissa bits (with implicit leading bit) OCP FP8 format optimized for inference and wide dynamic range Range: ~-57k to ~57k, precision: ~3-4 significant bits","symbols":[{"name":"BITS","line":14},{"name":"SIGN_BITS","line":15},{"name":"EXP_BITS","line":16},{"name":"MANT_BITS","line":17},{"name":"SIGN_SHIFT","line":19},{"name":"EXP_SHIFT","line":20},{"name":"MANT_SHIFT","line":21},{"name":"SIGN_MASK","line":23},{"name":"EXP_MASK","line":24},{"name":"MANT_MASK","line":25},{"name":"EXP_MAX","line":27},{"name":"EXP_MIN","line":28},{"name":"EXP_BIAS","line":29},{"name":"MANT_DIVISOR","line":31},{"name":"FP8_ZERO_POS","line":34},{"name":"FP8_ZERO_NEG","line":35},{"name":"FP8_NAN_POS","line":36},{"name":"FP8_NAN_NEG","line":37},{"name":"FP8_INF_POS","line":38},{"name":"FP8_INF_NEG","line":39},{"name":"SUBNORMAL_EXP","line":42},{"name":"FP8E5M2","line":48},{"name":"fp8_extract_sign","line":57},{"name":"bit","line":58},{"name":"fp8_extract_exponent","line":65},{"name":"fp8_extract_mantissa","line":72},{"name":"fp8_from_components","line":78},{"name":"sign_bit","line":79},{"name":"fp8_is_zero","line":91},{"name":"fp8_is_special","line":97},{"name":"fp8_is_inf","line":103},{"name":"fp8_is_nan","line":109},{"name":"fp8_is_subnormal","line":115},{"name":"fp8_encode_f32","line":126},{"name":"sign","line":143},{"name":"abs_value","line":144},{"name":"f32_bits","line":147},{"name":"subnormal_shift","line":154},{"name":"shift_amount","line":160},{"name":"discarded","line":185},{"name":"fp8_decode_f32","line":204},{"name":"sign","line":221},{"name":"exp","line":222},{"name":"mant","line":223},{"name":"bias_adjusted","line":230},{"name":"mant_f32","line":231},{"name":"bias_adjusted","line":235},{"name":"mant_f32","line":236},{"name":"fp8_encode_f64","line":245},{"name":"fp8_decode_f64","line":251},{"name":"f32_val","line":252},{"name":"fp8_add","line":262},{"name":"fa","line":263},{"name":"fb","line":264},{"name":"fp8_sub","line":270},{"name":"fa","line":271},{"name":"fb","line":272},{"name":"fp8_mul","line":278},{"name":"fa","line":279},{"name":"fb","line":280},{"name":"fp8_div","line":286},{"name":"fb","line":287},{"name":"fa","line":289},{"name":"fa","line":292},{"name":"fp8_sqrt","line":298},{"name":"fv","line":299},{"name":"fp8_rsqrt","line":308},{"name":"fv","line":309},{"name":"fp8_abs","line":318},{"name":"fp8_neg","line":324},{"name":"fp8_is_equal","line":330},{"name":"fp8_is_greater","line":342},{"name":"sign_a","line":346},{"name":"sign_b","line":347},{"name":"fp8_max","line":359},{"name":"fp8_min","line":365},{"name":"fp8_clamp","line":371},{"name":"fp8_lerp","line":377},{"name":"fa","line":378},{"name":"fb","line":379},{"name":"result","line":380},{"name":"fp8_fma","line":386},{"name":"fa","line":387},{"name":"fb","line":388},{"name":"fc","line":389},{"name":"fp8_scale","line":395},{"name":"fv","line":396},{"name":"fp8_relu","line":402},{"name":"fp8_sigmoid","line":408},{"name":"fv","line":409},{"name":"fp8_tanh","line":415},{"name":"fv","line":416},{"name":"fp8_gelu","line":422},{"name":"fv","line":423},{"name":"sqrt_2_over_pi","line":424},{"name":"cube_coeff","line":425},{"name":"tanh_arg","line":426},{"name":"fp8_swish","line":432},{"name":"fv","line":433},{"name":"fp8_quantize_to_int4","line":439},{"name":"fv","line":440},{"name":"max_range","line":442},{"name":"scaled","line":443},{"name":"fp8_quantize_to_int8","line":455},{"name":"fv","line":456},{"name":"max_range","line":458},{"name":"scaled","line":459},{"name":"fp8_from_f32_scaled","line":472},{"name":"fp8_to_f32_scaled","line":478},{"name":"fp8_dot_product","line":485},{"name":"fa","line":489},{"name":"fb","line":490},{"name":"fp8_vector_add","line":498},{"name":"len","line":499},{"name":"fp8_vector_scale","line":507},{"name":"scale_f","line":508},{"name":"fp8_vector_sum","line":516},{"name":"fp8_vector_mean","line":526},{"name":"sum","line":530},{"name":"fp8_softmax","line":536},{"name":"fv","line":540},{"name":"fv","line":549},{"name":"exp_val","line":550},{"name":"inv_sum","line":556},{"name":"fv","line":558}],"imports":[],"terms":["euler","fpga","fp8","e5m2","triformat","bits","sign","exp","mant","shift","mask","max","min","bias","divisor","zero","pos","neg","nan","inf","subnormal","fp8e5m2","extract","bit","exponent","mantissa","components","special","encode","f32","abs","amount","discarded","decode","adjusted","f64","val","sub","mul","div","sqrt","rsqrt","equal","greater","clamp","lerp","fma","scale","relu","sigmoid","tanh","gelu","over","cube","coeff","arg","swish","quantize","int4","range","scaled","int8","dot","product","vector","len","sum","mean","softmax","inv"]},{"id":"37e3dca7f4836af5ecfde5eaaa2aa993ac19087ac902adbb4015c04527a2af62","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L2301.t27","health":"ok","module":"cron_999_multibots_telegraf_render_server_L2301"}],"description":"specs/crons/999-multibots-telegraf-render-server-L2301.t27 -- cron timer/999-multibots-telegraf/render-server-L2301 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L2301). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L2301. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","render","l2301","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/uart.t27","health":"ok","module":"ZeroDSP_UART"}],"description":"t27/specs/fpga/uart.t27 ZeroDSP FPGA UART Specification UART for debugging and communication","symbols":[{"name":"UART_CLOCK_HZ","line":12},{"name":"UART_BAUD_RATE","line":13},{"name":"UART_BIT_PERIOD","line":14},{"name":"UART_WIDTH","line":16},{"name":"UART_FIFO_DEPTH","line":17},{"name":"STATUS_IDLE","line":19},{"name":"STATUS_TX_BUSY","line":20},{"name":"STATUS_RX_BUSY","line":21},{"name":"STATUS_ERROR","line":22},{"name":"UARTState","line":24},{"name":"UARTConfig","line":46},{"name":"uart_tx_ready","line":60},{"name":"uart_tx_send","line":64},{"name":"uart_rx_ready","line":75},{"name":"uart_rx_read","line":79},{"name":"uart_status","line":84},{"name":"uart_reset","line":88},{"name":"uart_configure","line":99},{"name":"on_comb","line":224}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9},{"name":"isa::registers","line":10}],"terms":["fpga","uart","zero","dsp","clock","baud","rate","bit","period","width","fifo","depth","status","idle","busy","uartstate","uartconfig","ready","send","read","reset","configure","comb"]},{"id":"38e27adb2b1502fe1200eaaaf794baf678bedb3dcf17667cba1c5d1f6eb393ab","sources":[{"repo":"ghashtag/t27","path":"specs/ml/pathway/mlp.t27","health":"ok","module":"Mlp"}],"description":"t27/specs/","symbols":[{"name":"MNIST_INPUT_SIZE","line":13},{"name":"MNIST_OUTPUT_SIZE","line":14},{"name":"DEFAULT_HIDDEN_SIZE","line":15},{"name":"MLPConfig","line":21},{"name":"MLPState","line":27},{"name":"forward","line":39},{"name":"init","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pathway","mlp","mnist","size","default","hidden","mlpconfig","mlpstate","forward","init"]},{"id":"38e5a94cf9cac4f8e1638e6c60603d0334668763669588a0014d4a8cc544b59c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/gf16_format.t27","health":"ok","module":"Gf16Format"}],"description":"tri-net/specs/gf16_format.t27 Partial spec-first lift of src/gf16.rs (T27-first): the GF16 BIT FORMAT. GF16 is the radio-DSP number format: [sign:1][exponent:6][mantissa:9], bias 31, round-to-nearest-even, no subnormals. The f64 encode/decode rounding stays in Rust (floating point is not a t27 target); the INTEGER geometry — field masks, extraction, composition and the NaN/Inf classifiers — is the single source of","symbols":[{"name":"M_BITS","line":14},{"name":"E_BITS","line":15},{"name":"BIAS","line":16},{"name":"M_MAX","line":17},{"name":"E_MAX","line":18},{"name":"SIGN_SHIFT","line":19},{"name":"sign_field","line":22},{"name":"exponent_field","line":26},{"name":"mantissa_field","line":30},{"name":"compose","line":35},{"name":"is_nan","line":40},{"name":"is_inf","line":47},{"name":"is_zero","line":54}],"imports":[{"name":"base::types","line":12}],"terms":["net","gf16","format","gf16format","bits","bias","max","sign","shift","field","exponent","mantissa","compose","nan","inf","zero"]},{"id":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/verilog_bench_harness.t27","health":"ok","module":"VerilogBenchHarness"}],"description":"t27/specs/test_framework/verilog_bench_harness.t27 Ring 053 — Verilog Bench Harness for Hardware-in-the-Loop Testing Integration framework for testing GoldenFloat operations against Verilog RTL","symbols":[{"name":"VerilogConfig","line":15},{"name":"default_verilog_config","line":30},{"name":"VerilogTestVector","line":67},{"name":"generate_gf16_test_vectors","line":76},{"name":"generate_random_gf16_vectors","line":161},{"name":"a","line":166},{"name":"b","line":167},{"name":"sum","line":168},{"name":"product","line":169},{"name":"VerilogSimulationResult","line":188},{"name":"run_verilog_simulation","line":198},{"name":"testbench_content","line":200},{"name":"testbench_file","line":201},{"name":"cmd","line":205},{"name":"start_time","line":208},{"name":"result","line":209},{"name":"execution_time","line":210},{"name":"parse_verilog_output","line":223},{"name":"test_name","line":235},{"name":"vector","line":236},{"name":"test_name","line":247},{"name":"vector","line":248},{"name":"diff_info","line":260},{"name":"compare_sw_hw_results","line":273},{"name":"hw_result","line":278},{"name":"goldenfloat_hardware_verification","line":313},{"name":"config","line":314},{"name":"basic_vectors","line":317},{"name":"random_vectors","line":318},{"name":"all_vectors","line":319},{"name":"sim_result","line":322},{"name":"hw_results","line":335},{"name":"sw_results","line":338},{"name":"co_verification_result","line":341},{"name":"coverage_result","line":344},{"name":"generate_verilog_testbench","line":407},{"name":"build_simulation_command","line":412},{"name":"execute_command","line":417},{"name":"find_test_vector","line":422},{"name":"find_matching_result","line":427},{"name":"run_software_goldenfloat_tests","line":432},{"name":"generate_coverage_report","line":437},{"name":"has_basic_operation_tests","line":448},{"name":"has_edge_case_tests","line":449},{"name":"all_vectors_have_inputs","line":450},{"name":"has_claim_ids","line":451},{"name":"has_addition_tests","line":452},{"name":"has_multiplication_tests","line":453},{"name":"has_conversion_tests","line":454},{"name":"CommandResult","line":456}],"imports":[{"name":"test_framework::core","line":7},{"name":"numeric::golden_float","line":8}],"terms":["framework","verilog","bench","harness","config","default","vector","generate","gf16","vectors","random","sum","product","simulation","testbench","content","cmd","start","time","execution","parse","diff","info","compare","results","goldenfloat","hardware","verification","basic","sim","build","execute","find","matching","software","report","operation","edge","case","inputs","claim","ids","addition","multiplication","conversion"]},{"id":"39c25a3a6c40cff4e3ad9aa098e7492803a9cc78a935e74966c4f95939c85228","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27","health":"ok","module":"cron_999_multibots_telegraf_agent_autopilot_L1118"}],"description":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27 -- cron timer/999-multibots-telegraf/agent-autopilot-L1118 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/agent-autopilot-L1118). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/scripts/agent-autopilot.ts#L1118. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"NOTE","line":24},{"name":"ON_FAILURE","line":25},{"name":"CONTROL","line":26}],"imports":[],"terms":["crons","multibots","telegraf","autopilot","l1118","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"39fe65ef46e74e75fc0b39666f7398fc3558485c9910d5563df17238c94b530c","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/agent.tri-api.t27","health":"ok","module":"trinity_capability_agent_tri_api"}],"description":"specs/trinity/capabilities/agent.tri-api.t27 -- capability trinity/agent.tri-api: tri-api: the implemented agent loop (provider requests, streaming, tool calls) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","api","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"3a0a496b0fac77bd8636bde8a08d4368f0fe0e71ba137199f8b95e6e3df40bfe","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf256.t27","health":"ok","module":"triformat-gf256"}],"description":"gf256.t27 -- GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 97 exponent + 158 mantissa Bit layout: [S(1) E(97) M(158)] = [255:255][254:158][157:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS_EXPR","line":26},{"name":"EXP_MAX_EXPR","line":27},{"name":"EM_RATIO","line":30},{"name":"PHI_DIST","line":31},{"name":"PHI_BIAS_STATUS","line":33}],"imports":[],"terms":["numeric","gf256","triformat","total","bits","sign","exp","mant","shift","bias","expr","max","ratio","phi","dist","status"]},{"id":"3a27bd5a4d2a3afccb342301f277a906103ff8c6fd802bace787ed808e89e22f","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/rules.t27","health":"ok","module":"docs_chapter_rules"}],"description":"specs/docs/chapters/rules.t27 -- chapter 2 of the system documentation, docs/rules Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"DOCUMENT","line":14},{"name":"ORDER","line":16},{"name":"TITLE","line":17},{"name":"SOURCES","line":20},{"name":"SECTIONS","line":22},{"name":"DIAGRAM","line":25},{"name":"TABLE","line":27},{"name":"BODY_EN","line":29},{"name":"ENABLED","line":30}],"imports":[],"terms":["docs","chapters","rules","chapter","kind","document","order","title","sources","sections","diagram","table","enabled"]},{"id":"3a5a1d0bf24c0a354559c859ce379e3fa65b8aad313da8627e341daa273d4adf","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_universal_attractor.t27","health":"warn","module":"PhiUniversalAttractor"}],"description":"t27/specs/math/phi_universal_attractor.t27 Phi Universal Attractor Theorems — Theorem 3: φ as Universal Fixed-Point MATH-ATTRACTOR-001 — Generative mechanism for φ proportion THEOREM 3: φ is the unique fixed point of balancing recursion f(x) = (x + x⁻¹ + 1) / 2 This addresses the critic's concern that φ is \"fitting\" rather than a true mechanism.","symbols":[{"name":"balancing_recursion","line":24},{"name":"inv","line":25},{"name":"CONVERGENCE_RATE_LAMBDA","line":31},{"name":"ConvergenceResult","line":38},{"name":"iterate_to_fixed_point","line":45},{"name":"next","line":51},{"name":"balancing_derivative","line":77},{"name":"inv_sq","line":78},{"name":"max_lipschitz_constant","line":84},{"name":"ProofStep","line":92},{"name":"fixed_point_verification_steps","line":98},{"name":"convergence_proof_steps","line":118},{"name":"bit_allocation_attractor","line":150},{"name":"target_ratio","line":152},{"name":"max_iterations","line":155},{"name":"tolerance","line":156},{"name":"exp","line":166},{"name":"mant","line":167},{"name":"lambda_computed","line":267},{"name":"result","line":271}],"imports":[{"name":"math::constants","line":10},{"name":"math::sacred_physics","line":11}],"terms":["math","phi","universal","attractor","balancing","recursion","inv","convergence","rate","lambda","iterate","fixed","point","derivative","max","lipschitz","constant","proof","step","verification","steps","bit","allocation","target","ratio","iterations","tolerance","exp","mant","computed"]},{"id":"3a74a18b91ed8e675b2d44fc822f28cd25ced5d9c3f8a902786c5a31dd11c30f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_approx_activation.t27","health":"ok","module":"GeluApprox"}],"description":"t27/specs/","symbols":[{"name":"SQRT_2_OVER_PI","line":13},{"name":"TANH_COEF","line":14},{"name":"GELUApproxConfig","line":20},{"name":"forward","line":29},{"name":"forward_batch","line":34},{"name":"derivative","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","gelu","approx","sqrt","over","tanh","coef","geluapprox","config","forward","batch","derivative"]},{"id":"3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/power_monitoring.t27","health":"warn","module":"PowerMonitoring"}],"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","symbols":[{"name":"MAX_NODES","line":7},{"name":"BATTERY_FULL","line":8},{"name":"BATTERY_CRITICAL","line":9},{"name":"BATTERY_LOW","line":10},{"name":"POWER_NORMAL","line":11},{"name":"POWER_ECO","line":12},{"name":"POWER_EMERGENCY","line":13},{"name":"create_power_state","line":16},{"name":"get_battery_level","line":23},{"name":"get_power_mode","line":27},{"name":"get_consumption","line":31},{"name":"get_uptime","line":35},{"name":"is_battery_critical","line":40},{"name":"is_battery_low","line":45},{"name":"is_battery_healthy","line":51},{"name":"estimate_remaining_time","line":56},{"name":"update_power_mode","line":68},{"name":"reduce_consumption","line":84},{"name":"drain_battery","line":102},{"name":"get_power_priority","line":120},{"name":"should_sleep","line":133}],"imports":[{"name":"base::types","line":5}],"terms":["net","power","monitoring","max","nodes","battery","full","critical","low","normal","eco","emergency","create","state","get","level","mode","consumption","uptime","healthy","estimate","remaining","time","reduce","drain","priority","sleep"]},{"id":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","sources":[{"repo":"ghashtag/t27","path":"specs/functions/reels-loop-generate.t27","health":"ok","module":"fn_reels_loop_generate"}],"description":"specs/functions/reels-loop-generate.t27 -- function reels-loop-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-loop-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts#L77 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","reels","loop","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"3b0d082b74f6a0ba7039d726899c4a02710622f702909956f8bc2615b6a45b8a","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/lut_npu_81_entry.t27","health":"warn","module":"sacred-lut_npu_81_entry"}],"description":"lut_npu_81_entry.t27 — Sacred Opcode 0xE3: LUT NPU 81-Entry Lookup Hardware LUT for NPU operations with 81 entries (9×9 transform)","symbols":[{"name":"OP_LUT_NPU","line":12},{"name":"LUT_SIZE","line":14},{"name":"LUT_ADDR_BITS","line":15},{"name":"LUT_VALUE_BITS","line":16},{"name":"ENTRY_VALID","line":18},{"name":"ENTRY_INVALID","line":19},{"name":"PHI_CONST_BASE","line":21},{"name":"CONST_LUT_END","line":22},{"name":"LutEntry","line":28},{"name":"LutConfig","line":35},{"name":"NpuOperation","line":41},{"name":"Transform9x9","line":52},{"name":"lut_entry_valid","line":64},{"name":"lut_entry_address_valid","line":70},{"name":"create_lut_entry","line":76},{"name":"npu_transform_9x9","line":91},{"name":"center_dist","line":102},{"name":"center_dist_j","line":103},{"name":"sparsity","line":108},{"name":"transform_is_sparse","line":119},{"name":"transform_phi_optimized","line":125},{"name":"lut_lookup_base","line":135},{"name":"lut_lookup_phi","line":144},{"name":"entry","line":149},{"name":"e","line":156},{"name":"lut_lookup_range","line":167},{"name":"encode_lut_npu","line":187},{"name":"op_field","line":189},{"name":"opcode_field","line":190},{"name":"addr_field","line":191},{"name":"decode_lut_npu","line":197},{"name":"opcode_val","line":198},{"name":"addr","line":199}],"imports":[],"terms":["euler","fpga","lut","npu","entry","sacred","size","addr","bits","valid","invalid","phi","base","end","config","operation","transform9x9","address","create","transform","9x9","center","dist","sparsity","sparse","optimized","lookup","range","encode","field","opcode","decode","val"]},{"id":"3b247694659c1fe7f9860804f7a960b8e8ca357dca00dafa651527b01487a667","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/int8.t27","health":"warn","module":"triformat-int8"}],"description":"int8.t27 — Int8 Signed 8-bit Integer Quantization Range: -128 to 127 Standard 8-bit signed integer, widely used in quantization","symbols":[{"name":"BITS","line":13},{"name":"MIN","line":14},{"name":"MAX","line":15},{"name":"RANGE","line":16},{"name":"MASK","line":18},{"name":"Int8","line":24},{"name":"int8_from_i8","line":32},{"name":"int8_from_i16","line":38},{"name":"int8_from_i32","line":49},{"name":"int8_from_u8","line":61},{"name":"int8_from_f32","line":71},{"name":"rounded","line":81},{"name":"int8_from_f64","line":87},{"name":"rounded","line":97},{"name":"int8_to_i8","line":103},{"name":"int8_to_i16","line":109},{"name":"int8_to_i32","line":115},{"name":"int8_to_u8","line":121},{"name":"int8_to_f32","line":130},{"name":"int8_to_f64","line":136},{"name":"int8_add","line":146},{"name":"result","line":147},{"name":"int8_sub","line":153},{"name":"result","line":154},{"name":"int8_mul","line":160},{"name":"result","line":161},{"name":"int8_div","line":168},{"name":"int8_mod","line":177},{"name":"result","line":181},{"name":"int8_pow","line":188},{"name":"int8_and","line":235},{"name":"int8_or","line":241},{"name":"int8_xor","line":247},{"name":"int8_not","line":253},{"name":"int8_shl","line":259},{"name":"clamped","line":260},{"name":"result","line":261},{"name":"int8_shr","line":267},{"name":"clamped","line":268},{"name":"int8_rol","line":274},{"name":"clamped","line":275},{"name":"uval","line":276},{"name":"result","line":277},{"name":"int8_ror","line":283},{"name":"clamped","line":284},{"name":"uval","line":285},{"name":"result","line":286},{"name":"int8_abs","line":296},{"name":"int8_neg","line":305},{"name":"int8_sign","line":314},{"name":"int8_is_equal","line":324},{"name":"int8_is_greater","line":329},{"name":"int8_is_less","line":334},{"name":"int8_min","line":339},{"name":"int8_max","line":344},{"name":"int8_clamp","line":349},{"name":"int8_lerp","line":360},{"name":"fa","line":361},{"name":"fb","line":362},{"name":"result","line":363},{"name":"int8_sq","line":369},{"name":"int8_abs_diff","line":375},{"name":"diff","line":376},{"name":"int8_sqrt","line":383},{"name":"int8_is_power_of_two","line":415},{"name":"uval","line":419},{"name":"int8_count_ones","line":425},{"name":"uval","line":426},{"name":"int8_count_zeros","line":432},{"name":"int8_reverse_bits","line":438},{"name":"uval","line":439}],"imports":[],"terms":["euler","numeric","int8","triformat","bits","min","max","range","mask","i16","i32","f32","rounded","f64","sub","mul","div","mod","pow","xor","shl","clamped","shr","rol","uval","ror","abs","neg","sign","equal","greater","less","clamp","lerp","diff","sqrt","power","two","count","ones","zeros","reverse"]},{"id":"3b27453bd662eaee697645051447f1d63e66c5c2c64a3157ec7caa0be403f4b4","sources":[{"repo":"ghashtag/t27","path":"specs/functions/welcome-avatar-generate.t27","health":"ok","module":"fn_welcome_avatar_generate"}],"description":"specs/functions/welcome-avatar-generate.t27 -- function welcome-avatar-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=welcome-avatar-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/welcomeAvatarGeneration.ts#L108 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","welcome","avatar","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"3b918511e604264fc966545ca5dbb3deabdf643de21d2cdc651b4c278fbafe51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/types.t27","health":"fail","module":null}],"description":"types.t27 — Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions","symbols":[],"imports":[],"terms":["fpga","base"]},{"id":"3b94513dfb6fdd9872b85930e5bb8e84667fe617f9e88468ba292a56c3191618","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf256.t27","health":"ok","module":"triformat_bnf256"}],"description":"bnf256.t27 -- BNF256: Binary Network Float, 256-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf256","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"3bbfd0601fe927c6db6eaebf57823a8aab6bdecfdb342e7a5ee7b6d89bbc2265","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/catalog_coverage_delta.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"checked","line":1033}],"imports":[],"terms":["fpga","numeric","catalog","delta","checked"]},{"id":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/benchmark.t27","health":"ok","module":"igla-coder-benchmark"}],"description":"t27/specs/igla/coder/benchmark.t27 Benchmark infrastructure for Pass@K evaluation and competitive analysis","symbols":[{"name":"BenchmarkTask","line":17},{"name":"BenchmarkResult","line":26},{"name":"BenchmarkReport","line":38},{"name":"CompetitorScore","line":49},{"name":"evaluate_task_at_k","line":64},{"name":"evaluate_task_at_k_inner","line":69},{"name":"benchmark_task_from_dataset","line":79},{"name":"run_benchmark_on_dataset_inner","line":91},{"name":"run_benchmark_on_dataset","line":113},{"name":"sacrebleu_precision","line":121},{"name":"count_ngram_matches","line":130},{"name":"ngram_match_len","line":138},{"name":"run_benchmark_suite_inner","line":148},{"name":"run_benchmark_suite","line":169},{"name":"count_passed","line":178},{"name":"count_passed_at_5","line":185},{"name":"count_passed_at_10","line":192},{"name":"count_sacred","line":199},{"name":"count_synth","line":206},{"name":"sum_ngram","line":213},{"name":"compute_aggregate_report","line":220},{"name":"compare_with_competitor","line":249},{"name":"stepprm_rtl_competitor","line":257},{"name":"cass_rtl_competitor","line":270},{"name":"rtlbenchls_competitor","line":282},{"name":"llm4rtl_competitor","line":295},{"name":"estrtl_competitor","line":307},{"name":"hdlforge_competitor","line":322},{"name":"veriagent_competitor","line":335},{"name":"alpha_rtl_competitor","line":349},{"name":"rtlscout_competitor","line":364},{"name":"rtlseek_competitor","line":378},{"name":"openrtlset_competitor","line":392},{"name":"verilogcl_competitor","line":405},{"name":"evolve_competitor","line":418},{"name":"verigraphi_competitor","line":431},{"name":"llm4rtl_2026_competitor","line":444},{"name":"physics_as_code_competitor","line":457},{"name":"sk_eft_hawking_competitor","line":470},{"name":"coevo_competitor","line":483},{"name":"ace_rtl_competitor","line":497},{"name":"tooby_smith_2hdm_competitor","line":510},{"name":"dataset_scale_competitor_comparison","line":523},{"name":"chipcraftbrain_competitor","line":533},{"name":"chipmate_competitor","line":550},{"name":"self_trained_benchmark_supported","line":562},{"name":"trinity_self_train_estimate","line":569},{"name":"siliconmind_v1_competitor","line":579},{"name":"training_efficiency_benchmark_supported","line":591},{"name":"trinity_training_efficiency_estimate","line":598},{"name":"cvdp_benchmark_competitor","line":606},{"name":"chipbench_benchmark_competitor","line":619},{"name":"rtlscout_competitor","line":632},{"name":"stepprm_rtl_competitor","line":645},{"name":"cktformalizer_competitor","line":658},{"name":"goldenfloat_competitor","line":672},{"name":"kuleuven_ternary_competitor","line":685},{"name":"estrtl_competitor","line":698},{"name":"llm4rtl_2026_competitor","line":711},{"name":"cass_rtl_competitor","line":724},{"name":"rtlbenchls_competitor","line":736},{"name":"hiersva_competitor","line":749},{"name":"rtlseek_competitor","line":764},{"name":"formalrtl_competitor","line":779},{"name":"rwopd_competitor","line":794},{"name":"verisure_competitor","line":809},{"name":"drrtl_competitor","line":825},{"name":"vitallm_competitor","line":840},{"name":"goedel_architect_competitor","line":858},{"name":"proofloop_competitor","line":872},{"name":"stellar_competitor","line":886},{"name":"autonomous_abc_competitor","line":901},{"name":"alpha_rtl_competitor_update","line":915},{"name":"hiersva_competitor_update","line":929},{"name":"autoverifix_plus_competitor","line":943},{"name":"synthesis_in_the_loop_competitor","line":958},{"name":"specloop_competitor","line":972},{"name":"cktevo_competitor","line":986},{"name":"chipbench_competitor","line":1000},{"name":"veriinteresting_competitor","line":1015},{"name":"tom_competitor","line":1029},{"name":"ternary_lut_generator_competitor","line":1043},{"name":"tellme_competitor","line":1057},{"name":"ternarycore_competitor","line":1071},{"name":"cordic_is_all_you_need_competitor","line":1085},{"name":"longrtl_competitor","line":1097},{"name":"sparsecol_competitor","line":1109},{"name":"takahe_competitor","line":1121},{"name":"ternary_dynamics_competitor","line":1133},{"name":"industrial_benchmark_supported","line":1145},{"name":"trinity_cvdp_estimate","line":1152},{"name":"trinity_rtl_eval_version","line":1162},{"name":"sacred_compliance_axis_name","line":1169},{"name":"sacred_compliance_axis_score","line":1177},{"name":"benchmark_axis_supported","line":1187},{"name":"estimate_pass_at_k_from_coverage","line":1199},{"name":"pow_f32","line":1210},{"name":"estimate_trinity_pass_at_1","line":1219},{"name":"estimate_trinity_pass_at_10","line":1226},{"name":"coverage_gap_to_competitor","line":1233},{"name":"trinity_rtl_eval_manifest","line":1243},{"name":"trinity_rtl_eval_dependencies","line":1249},{"name":"supported_benchmarks","line":1255},{"name":"openeye_competitor","line":1881},{"name":"mosaic_competitor","line":1895},{"name":"secda_dse_competitor","line":1909},{"name":"voltra_competitor","line":1923},{"name":"rl_driven_asic_competitor","line":1937},{"name":"neuronfabric_competitor","line":1951},{"name":"arch_hdl_competitor","line":1965},{"name":"zk_tracer_competitor","line":1979},{"name":"horsocrates_competitor","line":1994},{"name":"yang_mills_mass_gap_competitor","line":2009},{"name":"chimera_competitor","line":2024},{"name":"trine_competitor","line":2039},{"name":"alpha_rtl_competitor","line":2054},{"name":"stepprm_rtl_competitor","line":2069},{"name":"cass_rtl_competitor","line":2084},{"name":"ckt_formalizer_competitor","line":2099},{"name":"formal_rtl_competitor","line":2114},{"name":"llm4rtl_competitor","line":2130},{"name":"tellme_v2_competitor","line":2145},{"name":"hgq_lut_competitor","line":2159},{"name":"trigen_competitor","line":2173},{"name":"rtlscout_competitor","line":2187},{"name":"estrtl_competitor","line":2202},{"name":"ternary_mamba_competitor","line":2216},{"name":"mpx_competitor","line":2230},{"name":"sparqle_competitor","line":2245},{"name":"protolang_competitor","line":2260},{"name":"sparda_competitor","line":2275},{"name":"stepprm_rtl_competitor","line":2290},{"name":"openrtlset_competitor","line":2305},{"name":"chimera_competitor","line":2319},{"name":"photonic_tc_competitor","line":2333},{"name":"aia_competitor","line":2347},{"name":"stg_competitor","line":2362},{"name":"vhdlsuite_competitor","line":2377},{"name":"openopt_competitor","line":2391},{"name":"zkflex_competitor","line":2405},{"name":"dspe_competitor","line":2419},{"name":"openacmv2_competitor","line":2433},{"name":"overmind_nsa_competitor","line":2447},{"name":"matrixflow_competitor","line":2461},{"name":"bitsmm_competitor","line":2475},{"name":"abraxas1010_competitor","line":2489},{"name":"bika_competitor","line":2501},{"name":"gift_competitor","line":2513},{"name":"washburn_competitor","line":2525},{"name":"baez_schwahn_competitor","line":2537},{"name":"agyemang_competitor","line":2549},{"name":"dal_borgo_competitor","line":2561},{"name":"gray_competitor","line":2573},{"name":"teli_singh_competitor","line":2585},{"name":"mcgirl_competitor","line":2597},{"name":"douglas_qft_competitor","line":2609},{"name":"yi_liu_competitor","line":2622},{"name":"covarrubias_6pi4_competitor","line":2635},{"name":"myo_oo_competitor","line":2648},{"name":"alvarez_unified_action_competitor","line":2661},{"name":"davidfox998_competitor","line":2675},{"name":"grapheneaffiliate_competitor","line":2690},{"name":"cosmologicmind_competitor","line":2705},{"name":"morato_sgup_competitor","line":2720},{"name":"fairyfuse_competitor","line":2734},{"name":"carmen_competitor","line":2748},{"name":"tom_competitor","line":2758},{"name":"tellme_competitor","line":2768},{"name":"tenet_competitor","line":2778},{"name":"lutgen_competitor","line":2788},{"name":"nythe_competitor","line":2798},{"name":"wilson_competitor","line":2808},{"name":"jarry_qvg_competitor","line":2818},{"name":"manhvu_competitor","line":2828},{"name":"baron_competitor","line":2838},{"name":"loualidi_competitor","line":2848},{"name":"chamseddine_competitor","line":2858},{"name":"ardakanian_competitor","line":2868},{"name":"hubner_competitor","line":2878},{"name":"krause_competitor","line":2888},{"name":"spivack_competitor","line":3085},{"name":"singh_2606_competitor","line":3095},{"name":"shulga_competitor","line":3153},{"name":"smart_vfd_competitor","line":3163},{"name":"russo_competitor","line":3189},{"name":"ndiaye_competitor","line":3199},{"name":"barger_competitor","line":3225},{"name":"rivero_competitor","line":3235},{"name":"barrett_burridge_competitor","line":3266},{"name":"torrente_lujan_competitor","line":3280},{"name":"philarchive_structural_sm_competitor","line":3310},{"name":"academia_geometric_alpha_competitor","line":3325},{"name":"martinetti_twisted_competitor","line":3340},{"name":"ontological_inversion_competitor","line":3355},{"name":"agyemang_e8_boundary_2026_competitor","line":3371},{"name":"genesis_matrix_trialgebra_competitor","line":3386},{"name":"barger_unified_flavor_2026_competitor","line":3401},{"name":"cern_ng_triggers_2026_competitor","line":3416},{"name":"chen_king_valle_golden_mass_competitor","line":3432},{"name":"kaushik_vaibhav_singh_e8e8_competitor","line":3448},{"name":"bitlogic_eth_2026_competitor","line":3461},{"name":"tereffic_competitor","line":3578},{"name":"retern_competitor","line":3591},{"name":"garganturam_competitor","line":3605},{"name":"ternarylm_competitor","line":3618},{"name":"ternary_ibex_competitor","line":3631},{"name":"eth_ternaryllm_competitor","line":3646},{"name":"neumann_labs_ternfpga_competitor","line":3717},{"name":"duplij_guo_fu_ternary_crypto_competitor","line":3731}],"imports":[{"name":"base::types","line":7},{"name":"igla::coder::arch","line":8},{"name":"igla::coder::eval","line":9},{"name":"igla::coder::dataset","line":10}],"terms":["igla","coder","benchmark","report","competitor","score","evaluate","inner","dataset","sacrebleu","precision","count","ngram","matches","match","len","suite","passed","sacred","synth","sum","compute","aggregate","compare","stepprm","rtl","cass","rtlbenchls","llm4rtl","estrtl","hdlforge","veriagent","alpha","rtlscout","rtlseek","openrtlset","verilogcl","evolve","verigraphi","physics","eft","hawking","coevo","ace","tooby","smith","2hdm","scale","comparison","chipcraftbrain","chipmate","self","trained","supported","train","estimate","siliconmind","training","efficiency","cvdp","chipbench","cktformalizer","goldenfloat","kuleuven","ternary","hiersva","formalrtl","rwopd","verisure","drrtl","vitallm","goedel","architect","proofloop","stellar","autonomous","abc","autoverifix","plus","synthesis","loop","specloop","cktevo","veriinteresting","tom","lut","generator","tellme","ternarycore","cordic","you","longrtl","sparsecol","takahe","dynamics","industrial","eval","compliance","axis","pass","pow","f32","gap","manifest","dependencies","benchmarks","openeye","mosaic","secda","dse","voltra","driven","asic","neuronfabric","arch","hdl","tracer","horsocrates","yang","mills","mass","chimera","trine","ckt","formalizer","formal","hgq","trigen","mamba","mpx","sparqle","protolang","sparda","photonic","aia","stg","vhdlsuite","openopt","zkflex","dspe","openacmv2","overmind","nsa","matrixflow","bitsmm","abraxas1010","bika","gift","washburn","baez","schwahn","agyemang","dal","borgo","gray","teli","singh","mcgirl","douglas","qft","liu","covarrubias","6pi4","myo","alvarez","unified","action","davidfox998","grapheneaffiliate","cosmologicmind","morato","sgup","fairyfuse","carmen","tenet","lutgen","nythe","wilson","jarry","qvg","manhvu","baron","loualidi","chamseddine","ardakanian","hubner","krause","spivack","shulga","smart","vfd","russo","ndiaye","barger","rivero","barrett","burridge","torrente","lujan","philarchive","structural","academia","geometric","martinetti","twisted","ontological","inversion","boundary","genesis","matrix","trialgebra","flavor","cern","triggers","chen","king","valle","golden","kaushik","vaibhav","e8e8","bitlogic","eth","tereffic","retern","garganturam","ternarylm","ibex","ternaryllm","neumann","labs","ternfpga","duplij","guo","crypto"]},{"id":"3bc8d058f4b301edc4f1584510910da792098ecc9fb60f6d4e38f16ba3bcdf74","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/time.t27","health":"ok","module":"TriTime"}],"description":"t27/specs/","symbols":[{"name":"Instant","line":13},{"name":"Duration","line":18},{"name":"now","line":28},{"name":"since_epoch","line":33},{"name":"add","line":38},{"name":"sub","line":43},{"name":"format","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","time","instant","duration","since","epoch","sub","format"]},{"id":"3bfd60b0a6b6dbdddebdb5a5a5d0750b8058892126e151fa05f4a6125ea0dd79","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/topological_sort.t27","health":"ok","module":"TriTopological"}],"description":"t27/specs/","symbols":[{"name":"TopologicalSort","line":13},{"name":"sort","line":23},{"name":"is_valid","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","topological","sort","valid"]},{"id":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_routing.t27","health":"ok","module":"multipath_routing"}],"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"MIN_PATHS","line":9},{"name":"PATH_VALID","line":10},{"name":"PATH_INVALID","line":11},{"name":"create_multipath","line":14},{"name":"get_path_valid","line":21},{"name":"get_multipath_hop1","line":25},{"name":"get_multipath_hop2","line":29},{"name":"get_multipath_hop3","line":33},{"name":"create_multipath_state","line":38},{"name":"get_active_paths","line":45},{"name":"get_current_path","line":49},{"name":"get_flow_id","line":53},{"name":"get_multipath_last_update","line":57},{"name":"create_path_array","line":64},{"name":"get_multipath","line":68},{"name":"count_valid_paths","line":76},{"name":"is_multipath_viable","line":86},{"name":"select_primary_path","line":91},{"name":"calculate_path_diversity","line":109},{"name":"distribute_load","line":146},{"name":"needs_failover","line":176},{"name":"perform_failover","line":183},{"name":"calculate_multipath_gain","line":199}],"imports":[{"name":"base::types","line":5}],"terms":["net","multipath","routing","max","paths","hops","min","path","valid","invalid","create","get","hop1","hop2","hop3","state","active","flow","array","count","viable","select","primary","calculate","diversity","distribute","load","failover","perform","gain"]},{"id":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_dashboard.t27","health":"warn","module":"health_dashboard"}],"description":"Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_METRICS","line":8},{"name":"HEALTH_UPDATE_INTERVAL","line":9},{"name":"ALERT_THRESHOLD","line":10},{"name":"CRITICAL_THRESHOLD","line":11},{"name":"create_health_metric","line":14},{"name":"get_health_node_id","line":21},{"name":"get_health_metric_type","line":25},{"name":"get_health_value","line":29},{"name":"get_health_timestamp","line":33},{"name":"METRIC_CPU","line":38},{"name":"METRIC_MEMORY","line":39},{"name":"METRIC_BANDWIDTH","line":40},{"name":"METRIC_LATENCY","line":41},{"name":"METRIC_PACKET_LOSS","line":42},{"name":"METRIC_ERROR_RATE","line":43},{"name":"METRIC_LINK_QUALITY","line":44},{"name":"METRIC_BATTERY","line":45},{"name":"create_health_score","line":48},{"name":"get_overall_health","line":55},{"name":"get_critical_count","line":59},{"name":"get_warning_count","line":63},{"name":"get_score_timestamp","line":67},{"name":"calculate_node_health","line":72},{"name":"calculate_network_health","line":116},{"name":"detect_critical_issues","line":134},{"name":"detect_warning_issues","line":169},{"name":"generate_health_report","line":204},{"name":"create_health_alert","line":213},{"name":"get_alert_node_id","line":220},{"name":"get_alert_type","line":224},{"name":"get_alert_severity","line":228},{"name":"get_alert_timestamp","line":232},{"name":"ALERT_NODE_DOWN","line":237},{"name":"ALERT_HIGH_CPU","line":238},{"name":"ALERT_LOW_BATTERY","line":239},{"name":"ALERT_LINK_FAILURE","line":240},{"name":"ALERT_CONGESTION","line":241},{"name":"ALERT_SECURITY","line":242},{"name":"generate_alert","line":245},{"name":"analyze_health_trend","line":260},{"name":"find_unhealthy_nodes","line":281},{"name":"calculate_network_trend","line":296},{"name":"generate_summary_report","line":325},{"name":"is_monitoring_active","line":331},{"name":"calculate_uptime","line":342}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","health","dashboard","max","nodes","metrics","interval","alert","threshold","critical","create","metric","get","node","timestamp","cpu","memory","bandwidth","latency","packet","loss","rate","link","quality","battery","score","overall","count","warning","calculate","network","detect","generate","report","severity","down","high","low","failure","congestion","security","analyze","trend","find","unhealthy","summary","monitoring","active","uptime"]},{"id":"3d3bc18bcf65a59556cd172cc4e52c02674e3f4cf369a3b648b9e98187bf3a02","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/avl_tree.t27","health":"ok","module":"TriAvlTree"}],"description":"t27/specs/","symbols":[{"name":"AVLTree","line":13},{"name":"AVLNode","line":19},{"name":"init","line":33},{"name":"insert","line":38},{"name":"find","line":43},{"name":"delete","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","avl","tree","avltree","avlnode","init","insert","find","delete"]},{"id":"3d62664b21a7e9bd7b6d63879764780b5c5af3cf661f04eee7b90a8adbaa5d1d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dropout_layer.t27","health":"ok","module":"Dropout"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_DROP_RATE","line":13},{"name":"DropoutConfig","line":19},{"name":"forward","line":30},{"name":"backward","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","dropout","layer","default","drop","rate","config","forward","backward"]},{"id":"3e203c4b90a1ef1483c84320fe17cee7a366467c3f49dfb90d785467cc48b5a1","sources":[{"repo":"ghashtag/t27","path":"specs/igla/integration/publication.t27","health":"ok","module":"IGLAPublication"}],"description":"t27/specs/","symbols":[{"name":"PublicationTarget","line":13},{"name":"PublicationArtifact","line":20},{"name":"IntegrationStatus","line":29},{"name":"integrate_igla_coder","line":41},{"name":"publish","line":46},{"name":"verify_checksum","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["igla","integration","publication","iglapublication","target","artifact","status","integrate","coder","publish","verify","checksum"]},{"id":"3e84d5413e6db52ac25368c67f1585b67c5c0401f80c30df20c96c626c3b345d","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/dashboard.t27","health":"ok","module":"tool_trinity_tri_dashboard"}],"description":"specs/tools/trinity/tri/dashboard.t27 -- tool gHashTag/trinity:tri/dashboard, the `tri dashboard` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/dashboard`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["dashboard","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"3e87dab9734df475d53b8013449de746e3f32a40c721723946cca15f0244df37","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_mlp2.t27","health":"warn","module":"GftMlp2"}],"description":"","symbols":[{"name":"magadd","line":14},{"name":"magsub","line":34},{"name":"sadd","line":59},{"name":"contrib","line":74},{"name":"activate","line":80},{"name":"neuron2","line":86},{"name":"trit2gft","line":90},{"name":"on_comb","line":97}],"imports":[],"terms":["ternary","gft","mlp2","magadd","magsub","sadd","contrib","activate","neuron2","trit2gft","comb"]},{"id":"3ecc74e152223eb2912ded3c83f63e176a03c46c980887b379b1a83c2deeb3c3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_neuron_nchunk.t27","health":"warn","module":"BitnetNeuronN"}],"description":"","symbols":[{"name":"tmul","line":3},{"name":"dot27","line":11},{"name":"quantize","line":23},{"name":"neuronN","line":33},{"name":"on_comb","line":69}],"imports":[],"terms":["ternary","bitnet","neuron","nchunk","tmul","dot27","quantize","comb"]},{"id":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_routing.t27","health":"ok","module":"MeshRouting"}],"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","symbols":[{"name":"DEFAULT_TTL","line":9},{"name":"MESH_NET_A","line":10},{"name":"MESH_NET_B","line":11},{"name":"MESH_NET_C","line":12},{"name":"MIN_NODE_ID","line":13},{"name":"MAX_NODE_ID","line":14},{"name":"mesh_ip","line":20},{"name":"is_mesh_subnet","line":26},{"name":"node_of_ip","line":40},{"name":"decrement_ttl","line":55},{"name":"is_ttl_expired","line":66},{"name":"choose_next_hop","line":75},{"name":"delivery_decision","line":131}],"imports":[{"name":"base::types","line":6}],"terms":["macos","rings","rust","mesh","routing","default","ttl","net","min","node","max","subnet","decrement","expired","choose","hop","delivery","decision"]},{"id":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/prm.t27","health":"ok","module":"igla-coder-prm"}],"description":"t27/specs/igla/coder/prm.t27 Process Reward Model (PRM) specification for IGLA CODER Step-level verifiable rewards for sacred RTL / Rust code generation NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .push(), .contains(), +=, **, @floatFromInt, match, etc).","symbols":[{"name":"Step","line":23},{"name":"StepKind","line":31},{"name":"RewardSignal","line":46},{"name":"reward_syntax","line":56},{"name":"contains_multiply_in_rhs","line":67},{"name":"contains_multiply_in_rhs_inner","line":71},{"name":"reward_lint","line":91},{"name":"reward_sacred_compliance","line":104},{"name":"SimResult","line":113},{"name":"reward_simulation","line":123},{"name":"contains_pass","line":133},{"name":"contains_pass_inner","line":137},{"name":"reward_synthesis","line":149},{"name":"contains_keyword","line":159},{"name":"match_at","line":169},{"name":"reward_reference_match","line":181},{"name":"char_match_ratio","line":190},{"name":"compute_step_reward","line":208},{"name":"compute_trajectory_reward","line":227},{"name":"trajectory_reward_sum","line":236},{"name":"score_beam_with_prm","line":247},{"name":"prm_guided_beam_search","line":255},{"name":"preference_loss","line":268},{"name":"compute_prm_loss","line":278},{"name":"train_prm_step","line":285},{"name":"train_prm_step_inner","line":291},{"name":"batch_score_with_prm","line":300},{"name":"batch_score_inner","line":304},{"name":"update_prm_weights","line":313},{"name":"evaluate_prm_on_validation","line":322},{"name":"count_above_threshold","line":329},{"name":"ln_approx","line":337},{"name":"softplus","line":354},{"name":"exp_approx","line":366},{"name":"check_syntax","line":380},{"name":"check_balanced_braces","line":384},{"name":"lint_warning_count","line":402},{"name":"count_star","line":406},{"name":"run_simulation","line":416},{"name":"check_sacred_compliance","line":424},{"name":"check_sacred_compliance_inner","line":431}],"imports":[{"name":"base::types","line":11},{"name":"igla::coder::arch","line":12},{"name":"igla::coder::eval","line":13},{"name":"igla::race::rtl","line":14}],"terms":["igla","coder","prm","step","kind","reward","signal","syntax","contains","multiply","rhs","inner","lint","sacred","compliance","sim","simulation","pass","synthesis","keyword","match","reference","char","ratio","compute","trajectory","sum","score","beam","guided","search","preference","loss","train","batch","weights","evaluate","validation","count","above","threshold","approx","softplus","exp","balanced","braces","warning","star"]},{"id":"3f170da0db86ecb829c46e88c0a8fad260f37ad3de7a61d87b514c68c8d8c720","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_critic.t27","health":"ok","module":"PpoCritic"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_HIDDEN","line":13},{"name":"CriticConfig","line":19},{"name":"Activation","line":25},{"name":"forward","line":34},{"name":"compute_advantage","line":39},{"name":"compute_returns","line":44},{"name":"value_loss","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["ppo","critic","default","hidden","config","activation","forward","compute","advantage","returns","loss"]},{"id":"3f1d2105328665203dc3850fea9f0245b7a6adbe5558e255756d168478812921","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-log-monitor.t27","health":"ok","module":"cron_999_multibots_telegraf_log_monitor"}],"description":"specs/crons/999-multibots-telegraf-log-monitor.t27 -- cron inngest/999-multibots-telegraf/log-monitor Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/log-monitor). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L360. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","multibots","telegraf","log","monitor","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"3f327ef3f375cf0914564095f3632fadf25550c619fe0244c6432b5fcd51eefc","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/avs_reconf.t27","health":"ok","module":"avs-reconf"}],"description":"avs_reconf.t27 — AVS Reconfiguration Module Dynamic AVS voltage/frequency reconfiguration support","symbols":[{"name":"RECONF_OPCODE_BASE","line":12},{"name":"RECONF_OP_SET_VOLTAGE","line":14},{"name":"RECONF_OP_SET_FREQUENCY","line":15},{"name":"RECONF_OP_SET_MODE","line":16},{"name":"RECONF_OP_RESET","line":17},{"name":"RECONF_OP_QUERY","line":18},{"name":"RECONF_OP_SAVE_CONFIG","line":19},{"name":"RECONF_OP_LOAD_CONFIG","line":20},{"name":"RECONF_OP_CALIBRATE","line":21},{"name":"RECONF_OP_MAX","line":22},{"name":"RECONF_MODE_MANUAL","line":24},{"name":"RECONF_MODE_AUTOMATIC","line":25},{"name":"RECONF_MODE_PERFORMANCE","line":26},{"name":"RECONF_MODE_POWER_SAVING","line":27},{"name":"RECONF_MODE_ADAPTIVE","line":28},{"name":"RECONF_MODE_MAX","line":29},{"name":"RECONF_STATE_IDLE","line":31},{"name":"RECONF_STATE_BUSY","line":32},{"name":"RECONF_STATE_ERROR","line":33},{"name":"RECONF_STATE_CALIBRATING","line":34},{"name":"VOLTAGE_MIN_MV","line":36},{"name":"VOLTAGE_MAX_MV","line":37},{"name":"FREQ_MIN_KHZ","line":38},{"name":"FREQ_MAX_KHZ","line":39},{"name":"RECONF_TIMEOUT_MS","line":41},{"name":"RECONF_RETRY_COUNT","line":42},{"name":"ReconfOp","line":48},{"name":"ReconfMode","line":59},{"name":"ReconfState","line":67},{"name":"ReconfConfig","line":74},{"name":"ReconfStatus","line":85},{"name":"ReconfCommand","line":94},{"name":"ReconfResult","line":101},{"name":"avs_reconf_config_init","line":113},{"name":"avs_reconf_config_performance","line":128},{"name":"avs_reconf_config_power_saving","line":143},{"name":"avs_reconf_config_adaptive","line":158},{"name":"avs_reconf_voltage_valid","line":177},{"name":"avs_reconf_freq_valid","line":183},{"name":"avs_reconf_config_valid","line":189},{"name":"avs_reconf_status_init","line":202},{"name":"avs_reconf_status_start_op","line":215},{"name":"avs_reconf_status_complete","line":228},{"name":"avs_reconf_status_update_voltage","line":244},{"name":"avs_reconf_status_update_freq","line":257},{"name":"avs_reconf_command_init","line":274},{"name":"avs_reconf_command_set_voltage","line":285},{"name":"avs_reconf_command_set_freq","line":296},{"name":"avs_reconf_command_set_mode","line":307},{"name":"avs_reconf_command_calibrate","line":318},{"name":"avs_reconf_command_save_config","line":329},{"name":"avs_reconf_result_success","line":344},{"name":"avs_reconf_result_error","line":354},{"name":"avs_reconf_should_retry","line":364},{"name":"encode_avs_reconf_cmd","line":374},{"name":"op_field","line":376},{"name":"param1_field","line":377},{"name":"param2_field","line":378},{"name":"decode_avs_reconf_cmd","line":384},{"name":"op","line":385},{"name":"param1","line":386},{"name":"param2","line":387}],"imports":[],"terms":["euler","fpga","avs","reconf","opcode","base","set","voltage","frequency","mode","reset","query","save","config","load","calibrate","max","manual","automatic","performance","power","saving","adaptive","state","idle","busy","calibrating","min","freq","khz","timeout","retry","count","status","init","valid","start","complete","success","encode","cmd","field","param1","param2","decode"]},{"id":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/gf16_accel_tb.t27","health":"warn","module":"GF16_Accel_Testbench"}],"description":"t27/specs/fpga/testbench/gf16_accel_tb.t27 GF16 Accelerator Testbench Tests Golden Float 16 arithmetic: add, mul, MAC, phi identity","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"PHI_TOLERANCE","line":12},{"name":"tick","line":27},{"name":"reset","line":32},{"name":"gf16_add","line":40},{"name":"gf16_mul","line":51},{"name":"gf16_mac","line":62}],"imports":[{"name":"fpga::gf16_accel::Gf16Accel","line":8}],"terms":["fpga","testbench","gf16","accel","clk","period","sim","timeout","phi","tolerance","tick","reset","mul","mac"]},{"id":"3fafd9ae6b4b9d4b0907a4335ae37b99a2e320927ee2481fc851323a5ec436b6","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/bridge.t27","health":"warn","module":"TrinityMemoryBridge"}],"description":"Native bounded JSON-RPC memory emulator application logic. Caller owns all buffers and state; no HTTP, allocation, or persistence here. Include codecs/container/tensorpack/json/json_writer/tensorpack_json first. Limits are configured in TMBridgeState and enforced before object commits. Current common JSON parser is bounded to 64 nesting levels and i64/u64 integer lexemes; exceeding those bounds returns an invalid-JSON response.","symbols":[{"name":"TMBridgeSlot","line":12},{"name":"TMBridgeState","line":13},{"name":"tm_bridge_put","line":25},{"name":"tm_bridge_raw","line":26},{"name":"tm_bridge_text","line":27},{"name":"tm_bridge_unsigned","line":31},{"name":"tm_bridge_integer","line":32},{"name":"tm_bridge_float","line":33},{"name":"tm_bridge_hex_digit","line":39},{"name":"tm_bridge_hex","line":43},{"name":"tm_bridge_string","line":51},{"name":"tm_bridge_literal_string","line":52},{"name":"tm_bridge_b64_digit","line":55},{"name":"tm_bridge_b64_value","line":62},{"name":"tm_bridge_b64_decode","line":71},{"name":"tm_bridge_b64_encode","line":102},{"name":"tm_bridge_handle","line":118},{"name":"tm_bridge_init","line":123},{"name":"tm_bridge_codec_name","line":134},{"name":"TMBridgeError","line":143},{"name":"tm_bridge_error","line":144},{"name":"tm_bridge_equal","line":147},{"name":"tm_bridge_token_equal","line":155},{"name":"tm_bridge_field","line":159},{"name":"tm_bridge_fields","line":168},{"name":"tm_bridge_codepoints","line":186},{"name":"tm_bridge_valid_integer","line":191},{"name":"tm_bridge_find_slot","line":195},{"name":"tm_bridge_inspect","line":220},{"name":"tm_bridge_capabilities","line":238},{"name":"tm_bridge_identity","line":247},{"name":"tm_bridge_u64_array","line":257},{"name":"tm_bridge_scales","line":265},{"name":"tm_bridge_tmem_info","line":273},{"name":"tm_bridge_tp_info","line":299},{"name":"tm_bridge_dot","line":332},{"name":"tm_bridge_upload","line":403},{"name":"tm_bridge_dispatch","line":449},{"name":"tm_bridge_envelope","line":518},{"name":"tm_bridge_id","line":532},{"name":"tm_bridge_response_error","line":537},{"name":"tm_bridge_http_error","line":549},{"name":"tm_bridge_request","line":555}],"imports":[],"terms":["dmitrii","memory","bridge","tmbridge","slot","state","put","raw","text","unsigned","integer","float","hex","digit","literal","b64","decode","encode","handle","init","codec","equal","token","field","fields","codepoints","valid","find","inspect","capabilities","identity","u64","array","scales","tmem","info","dot","upload","dispatch","envelope","response","http","request"]},{"id":"3fafe68dfaa694ceb17290e3505f3baaaa84e61b351446b6422492364decd700","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorpercep4.t27","health":"warn","module":"GftXorPercep4"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":107},{"name":"scale_q","line":114},{"name":"signmul","line":125},{"name":"on_comb","line":134}],"imports":[],"terms":["ternary","gft","xorpercep4","xor","percep4","magadd","magsub","sadd","neg","magmul","smul","relu","scale","signmul","comb"]},{"id":"3fe14f0e675704ece025e11534de7629b8245942f3898cac1f00221227a8a6bf","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/gravity.t27","health":"ok","module":"TriGravity"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","gravity"]},{"id":"3fe3d076d8f6e05892175e6b4189e70fd13206f929d4d4ef7bee6fac19c0a003","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft32.t27","health":"ok","module":"triformat_gft32"}],"description":"gft32.t27 -- GF-T32: the golden-ratio ternary ladder, 32-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft32","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"40030c89eba2881aed876382471cee3537d2e73a3cdfc72de27e24a0f52aeb07","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/zig/codegen.t27","health":"warn","module":null}],"description":"codegen.t27 — Code Generator for Zig Generates Zig 0.15 code from t27 AST","symbols":[{"name":"CodegenOptions","line":8},{"name":"ZigCodegen","line":17},{"name":"StringBuilder","line":27},{"name":"CodegenError","line":34},{"name":"ZigCodegen","line":41},{"name":"ZigCodegen","line":53},{"name":"ZigCodegen","line":76},{"name":"ZigCodegen","line":85},{"name":"ZigCodegen","line":94},{"name":"ZigCodegen","line":116},{"name":"ZigCodegen","line":163},{"name":"ZigCodegen","line":185},{"name":"ZigCodegen","line":198},{"name":"ZigCodegen","line":221},{"name":"ZigCodegen","line":249},{"name":"ZigCodegen","line":270},{"name":"ZigCodegen","line":295},{"name":"ZigCodegen","line":320},{"name":"ZigCodegen","line":347},{"name":"ZigCodegen","line":374},{"name":"ZigCodegen","line":390},{"name":"ZigCodegen","line":415},{"name":"ZigCodegen","line":421},{"name":"ZigCodegen","line":427},{"name":"ZigCodegen","line":432},{"name":"ZigCodegen","line":438},{"name":"ZigCodegen","line":448},{"name":"ZigCodegen","line":468},{"name":"ZigCodegen","line":478},{"name":"ZigCodegen","line":483},{"name":"ZigCodegen","line":500},{"name":"ZigCodegen","line":511},{"name":"ZigCodegen","line":516},{"name":"ZigCodegen","line":539},{"name":"ZigCodegen","line":548},{"name":"ZigCodegen","line":553},{"name":"ZigCodegen","line":566},{"name":"ZigCodegen","line":571},{"name":"StringBuilder","line":578},{"name":"StringBuilder","line":586},{"name":"StringBuilder","line":595},{"name":"generate_zig","line":600}],"imports":[],"terms":["fpga","compiler","codegen","zig","options","builder","generate"]},{"id":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/youtube_transcript.t27","health":"warn","module":"enrichment"}],"description":"youtube_transcript.t27 — YouTube Transcript Extraction for NotebookLM Enrichment Ring 090 — Fallback for blocked YouTube URL uploads","symbols":[{"name":"VERSION","line":12},{"name":"MAX_TRANSCRIPT_SIZE","line":13},{"name":"YOUTUBE_TIMEOUT_SECONDS","line":14},{"name":"YTDLP_CHECK_TIMEOUT_SECONDS","line":15},{"name":"ErrorCode","line":21},{"name":"YouTubeSource","line":39},{"name":"Transcript","line":45},{"name":"EnrichmentReport","line":53},{"name":"YOUTUBE_DOMAINS","line":64},{"name":"is_youtube_url","line":78},{"name":"extract_video_id","line":93},{"name":"srt_to_text","line":143},{"name":"extract_transcript","line":192},{"name":"upload_transcript","line":364},{"name":"enrich_with_transcripts","line":409}],"imports":[],"terms":["enrichment","youtube","transcript","max","size","timeout","seconds","ytdlp","you","tube","report","domains","url","extract","video","srt","text","upload","enrich","transcripts"]},{"id":"4023211070b18117f67404d4c7941ea02e079d1c07aa41515aee69704bab07a3","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/project.t27","health":"ok","module":"docs_chapter_project"}],"description":"specs/docs/chapters/project.t27 -- chapter 1 of the system documentation, docs/project Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"DOCUMENT","line":14},{"name":"ORDER","line":16},{"name":"TITLE","line":17},{"name":"SOURCES","line":20},{"name":"SECTIONS","line":22},{"name":"DIAGRAM","line":25},{"name":"TABLE","line":27},{"name":"BODY_EN","line":29},{"name":"ENABLED","line":30}],"imports":[],"terms":["docs","chapters","project","chapter","kind","document","order","title","sources","sections","diagram","table","enabled"]},{"id":"405fdea7d1fb2b058f76601757ce3b28a5c6667fdb68203b311c80d7f4db7407","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/c/codegen.t27","health":"warn","module":"tricgen-c"}],"description":"compiler/codegen/c/codegen.t27 — C Code Generator Specification Emit C code from t27 AST","symbols":[{"name":"INDENT_SIZE","line":10},{"name":"MAX_LINE_LENGTH","line":11},{"name":"NodeType","line":14},{"name":"BinOp","line":29},{"name":"UnOp","line":49},{"name":"CMapping","line":57},{"name":"CCodeGen","line":64},{"name":"emit_c","line":71},{"name":"emit_header","line":83},{"name":"emit_includes","line":90},{"name":"emit_types","line":98},{"name":"emit_declarations","line":105},{"name":"emit_implementations","line":111},{"name":"emit_expression","line":117},{"name":"emit_const","line":129},{"name":"emit_var","line":135},{"name":"emit_binop","line":141},{"name":"emit_unop","line":147},{"name":"emit_call","line":153},{"name":"emit_operator","line":159},{"name":"emit_unary_operator","line":165},{"name":"emit_test_section","line":171},{"name":"emit_invariant_section","line":177},{"name":"emit_bench_section","line":183},{"name":"emit_indent","line":189}],"imports":[],"terms":["compiler","codegen","tricgen","indent","size","max","length","node","bin","cmapping","ccode","gen","emit","header","includes","declarations","implementations","expression","var","binop","unop","call","operator","unary","section","invariant","bench"]},{"id":"409e4b3c8b06b14fc4ff21425171ac9f05676cb27bc7b98433cb722b4f82be71","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/tri27.toolchain.t27","health":"ok","module":"trinity_capability_tri27_toolchain"}],"description":"specs/trinity/capabilities/tri27.toolchain.t27 -- capability trinity/tri27.toolchain: The TRI27 assembler, emulator, loader and the Zig/Verilog emitters under src/tri One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","tri27","toolchain","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"40e271225fff7d99d8fe235c2347210c228f6c558af910e84bbbe85ef0312d94","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hw_types.t27","health":"ok","module":"HwTypes"}],"description":"t27/specs/fpga/hw_types.t27 Hardware Type System for Trinity T27 FPGA HIR Defines signal-level types with bit-accurate widths and signedness","symbols":[{"name":"ResetKind","line":11},{"name":"ResetPolarity","line":16},{"name":"HwTypeTag","line":23},{"name":"HwType","line":38},{"name":"hw_bits","line":49},{"name":"hw_uint","line":62},{"name":"hw_sint","line":75},{"name":"hw_bool","line":88},{"name":"hw_clock","line":101},{"name":"hw_reset","line":114},{"name":"hw_vector","line":127},{"name":"hw_gf16","line":140},{"name":"hw_width","line":155},{"name":"is_signed","line":161},{"name":"is_clock_like","line":167},{"name":"is_reset_like","line":173},{"name":"types_equal","line":179},{"name":"verilog_range","line":197},{"name":"is_connectable","line":203}],"imports":[],"terms":["fpga","reset","kind","polarity","tag","bits","uint","sint","clock","vector","gf16","width","signed","like","equal","verilog","range","connectable"]},{"id":"40fd893c2163077ca7fb00a815db13a0c8f2bbd74efc3ccb0427faad49465e5f","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_add.t27","health":"ok","module":"ternary_add"}],"description":"ternary_add.t27 — Balanced Ternary Addition Formal Spec Ring 043 — Formal carry propagation invariants, closure, range formula","symbols":[{"name":"FullAdderResult","line":15},{"name":"trit_full_adder","line":24},{"name":"raw","line":26},{"name":"max_value","line":61},{"name":"min_value","line":73},{"name":"total_states","line":80},{"name":"trit_mul_closed","line":95},{"name":"verify_trit_mul_closure","line":109},{"name":"trits","line":110},{"name":"result","line":113},{"name":"val","line":115},{"name":"carry_sign","line":131},{"name":"normalize_trit","line":138},{"name":"mod3","line":139}],"imports":[{"name":"base::types","line":8}],"terms":["base","ternary","full","adder","trit","raw","max","min","total","states","mul","closed","verify","closure","trits","val","carry","sign","normalize","mod3"]},{"id":"41bc9e9f09ac42ad89061f2f9c0928916530ebea030857cc19e1475d437d41d6","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_axpy.t27","health":"ok","module":"GftAxpy"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"on_comb","line":112}],"imports":[],"terms":["ternary","gft","axpy","magadd","magsub","sadd","neg","magmul","smul","comb"]},{"id":"41d804d63c7cea9c3bed9025f52bd8d5f576855b3cd8b065800d6e6ba53f99a9","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/native.canvas.t27","health":"ok","module":"trinity_capability_native_canvas"}],"description":"specs/trinity/capabilities/native.canvas.t27 -- capability trinity/native.canvas: The raylib canvas: photon-demo, photon-immersive, trinity-canvas and its emscrip One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","native","canvas","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"422a79e6015d8959e474b78e93f8fb16e1db2e0b2d8a885bfdab1aafe2347175","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_slash.t27","health":"ok","module":"TriSlash"}],"description":"TRI-NET DePIN slashing: the game-theoretic backstop. Rewarding honest relay work (tri_settle) is only half of it -- a node must also LOSE something for lying. Each node posts a bond; when its signed receipt does NOT match an independent re-verification (the settlement re-meters the same stream and recomputes the seal, as the 3-node relay demo does bit-exactly), the bond is forfeited (slashed) from its $TRI balance. Now cheating is strictly worse than not participating, so an honest","symbols":[{"name":"MIN_BOND","line":12},{"name":"bond_ok","line":15},{"name":"receipt_matches","line":21},{"name":"balance_add","line":26},{"name":"settle_or_slash","line":38}],"imports":[{"name":"base::types","line":10}],"terms":["net","slash","min","bond","receipt","matches","balance","settle"]},{"id":"425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/failure_predictor.t27","health":"warn","module":"failure_predictor"}],"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","symbols":[{"name":"MAX_NODES","line":7},{"name":"WARNING_THRESHOLD","line":8},{"name":"CRITICAL_THRESHOLD","line":9},{"name":"HISTORY_SIZE","line":10},{"name":"create_health_metrics","line":13},{"name":"get_cpu_usage","line":20},{"name":"get_memory_usage","line":24},{"name":"get_error_rate","line":28},{"name":"get_temperature","line":32},{"name":"create_risk_score","line":37},{"name":"get_risk_level","line":44},{"name":"get_confidence","line":48},{"name":"get_risk_trend","line":52},{"name":"get_prediction_time","line":56},{"name":"create_health_array","line":63},{"name":"get_health_metrics","line":67},{"name":"calculate_health_score","line":75},{"name":"predict_failure_probability","line":93},{"name":"is_trending_failure","line":110},{"name":"predict_time_to_failure","line":121},{"name":"calculate_failure_risk","line":138},{"name":"needs_immediate_action","line":149},{"name":"find_most_at_risk","line":158}],"imports":[{"name":"base::types","line":5}],"terms":["net","failure","predictor","max","nodes","warning","threshold","critical","history","size","create","health","metrics","get","cpu","usage","memory","rate","temperature","risk","score","level","confidence","trend","prediction","time","array","calculate","predict","probability","trending","immediate","action","find","most"]},{"id":"4277eded24a90122c7ed7ae38cfc6526de4c77038bc2175b57c92c5dc81fc00e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bridge_tb.t27","health":"ok","module":"Bridge_Testbench"}],"description":"t27/specs/fpga/testbench/bridge_tb.t27 FPGA Bridge Testbench Tests data streaming, packet framing, and cross-domain transfers","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"BRIDGE_WIDTH","line":12},{"name":"FIFO_DEPTH","line":13},{"name":"tick","line":29},{"name":"reset","line":34},{"name":"send_packet","line":42},{"name":"receive_packet","line":57},{"name":"on_comb","line":137}],"imports":[{"name":"fpga::bridge::FPGA_Bridge","line":8}],"terms":["fpga","testbench","bridge","clk","period","sim","timeout","width","fifo","depth","tick","reset","send","packet","receive","comb"]},{"id":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_settle.t27","health":"ok","module":"TriComputeSettle"}],"description":"TRI-NET compute settlement: turn a VERIFIED compute-receipt into $TRI reward. tri_compute_receipt attests the work (device + GoldenFloat op + result, chained); tri_a2a gates freshness (anti-replay). This spec closes the loop to value: a fresh, verified receipt credits the executor's balance (saturating, like tri_ledger.balance_add) and folds the receipt's sign digest into an auditable settlement state root. A replayed or stale receipt pays ZERO.","symbols":[{"name":"SETTLE_GENESIS","line":14},{"name":"S_C","line":15},{"name":"REWARD_PER_GF_OP","line":16},{"name":"WORK_BPS_UNIT","line":17},{"name":"rotl","line":19},{"name":"mix32","line":23},{"name":"balance_add","line":33},{"name":"compute_reward","line":44},{"name":"compute_reward_fmt","line":62},{"name":"settle_balance","line":72},{"name":"settle_head","line":78},{"name":"is_finite_gf16","line":86},{"name":"FMT_GF_BINARY","line":99},{"name":"FMT_GFT","line":100},{"name":"payable_flag","line":113},{"name":"settle_canonical","line":138},{"name":"settle_canonical_fmt","line":161},{"name":"settle_checked","line":180},{"name":"settle_checked_gf","line":189},{"name":"settle_checked_gft","line":196},{"name":"gft_offset_max_w","line":206},{"name":"settle_checked_gft_w","line":223},{"name":"settle_full","line":230},{"name":"settle_full_h","line":238},{"name":"settle_signed","line":249}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","settle","genesis","reward","per","work","bps","unit","rotl","mix32","balance","fmt","head","finite","gf16","binary","gft","payable","flag","canonical","checked","offset","max","full","signed"]},{"id":"42bf0f894738516bde89899aa41ed960072949d0409958942954da09f598e5bd","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/cosmos.t27","health":"ok","module":"tool_trinity_tri_cosmos"}],"description":"specs/tools/trinity/tri/cosmos.t27 -- tool gHashTag/trinity:tri/cosmos, the `tri cosmos` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/cosmos`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["cosmos","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"43202aabe15b2c06b1e0709f8e0ae6fc1cb13b2cb7e5a5adee77340a1bf03ff4","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/window.t27","health":"ok","module":"tool_tri_window"}],"description":"specs/tools/tri/window.t27 -- tool tri/window, the `tri window` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/window). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["window","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"4360313e280f6638395cf3aab44984a5a215e39aa9c61d11ed8c0e5ecfb028a3","sources":[{"repo":"ghashtag/t27","path":"specs/functions/content-detailed-script-generate.t27","health":"ok","module":"fn_content_detailed_script_generate"}],"description":"specs/functions/content-detailed-script-generate.t27 -- function content-detailed-script-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-detailed-script-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateDetailedScript.ts#L191 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","content","detailed","script","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"436c703f6031eb93b7faf8777d15c5c059c1ac5750fb1477ae321c1dd91fd082","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_false_assert.t27","health":"ok","module":"trinity_matrix_neg_false_assert"}],"description":"trinity_matrix/neg_false_assert.t27 -- NEGATIVE: a test whose assertion is false; typecheck stays ok, so only a runtime run can reject it, and it must.","symbols":[{"name":"ONE","line":6}],"imports":[],"terms":["bootstrap","fixtures","matrix","neg","assert","one"]},{"id":"43fb47d6699c50e81d6ecd71f0f0791c5e0c46ba0fd69a2f066d60825d8f6706","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/competitors.t27","health":"ok","module":"tool_tri_competitors"}],"description":"specs/tools/tri/competitors.t27 -- tool tri/competitors, the `tri competitors` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/competitors). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["competitors","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"4454f6161b15302cd298c417dfcade3dd0a0c42e6734f89eef26a1b5eda337e9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_retry.t27","health":"ok","module":"AdaptiveRetry"}],"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","symbols":[{"name":"BASE_DELAY_MS","line":6},{"name":"MAX_RETRIES","line":7},{"name":"BACKOFF_MULTIPLIER","line":8},{"name":"QUALITY_HIGH","line":11},{"name":"QUALITY_MEDIUM","line":12},{"name":"backoff_delay_ms","line":18},{"name":"max_retries_for_quality","line":34},{"name":"should_retry","line":45},{"name":"base_probability","line":50},{"name":"retry_success_probability","line":60},{"name":"total_retry_time","line":71}],"imports":[],"terms":["net","adaptive","retry","base","delay","max","retries","backoff","multiplier","quality","high","medium","probability","success","total","time"]},{"id":"44d2e3c8843519a512128399557c8d7af29ca2491f769f91c845dc44e0b63f9a","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27","health":"ok","module":"cron_999_multibots_telegraf_notificationHandler_L324"}],"description":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27 -- cron timer/999-multibots-telegraf/notificationHandler-L324 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/notificationHandler-L324). The schedule was read from 999-multibots-telegraf:src/handlers/notificationHandler.ts#L324. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","notification","handler","l324","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"44ffb909e0acb7a25ca58265b7e7150f63a335c1a2a46a249a89bedf616e52c0","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_un.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring"]},{"id":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_framework.t27","health":"warn","module":"integration_framework"}],"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","symbols":[{"name":"MAX_MODULES","line":7},{"name":"MAX_MESSAGES","line":8},{"name":"MAX_EVENTS","line":9},{"name":"INTEGRATION_VERSION","line":10},{"name":"create_module_registration","line":13},{"name":"get_registered_module_id","line":20},{"name":"get_registered_module_type","line":24},{"name":"get_registered_module_priority","line":28},{"name":"get_registered_module_status","line":32},{"name":"TYPE_NETWORK","line":37},{"name":"TYPE_TESTING","line":38},{"name":"type_documentation","line":39},{"name":"TYPE_VISUALIZATION","line":40},{"name":"TYPE_SIMULATION","line":41},{"name":"TYPE_PROFILING","line":42},{"name":"STATUS_IDLE","line":45},{"name":"STATUS_ACTIVE","line":46},{"name":"STATUS_BUSY","line":47},{"name":"STATUS_ERROR","line":48},{"name":"STATUS_OFFLINE","line":49},{"name":"create_integration_message","line":52},{"name":"get_integration_message_id","line":59},{"name":"get_integration_message_source","line":63},{"name":"get_integration_message_dest","line":67},{"name":"get_integration_message_type","line":71},{"name":"MSG_DATA","line":76},{"name":"MSG_CONTROL","line":77},{"name":"MSG_STATUS","line":78},{"name":"MSG_ERROR","line":79},{"name":"MSG_EVENT","line":80},{"name":"send_message","line":83},{"name":"receive_message","line":111},{"name":"create_event","line":128},{"name":"get_event_id","line":135},{"name":"get_event_type","line":139},{"name":"get_event_source","line":143},{"name":"get_event_data","line":147},{"name":"EVENT_MODULE_LOADED","line":152},{"name":"EVENT_MODULE_UNLOADED","line":153},{"name":"EVENT_TEST_COMPLETED","line":154},{"name":"EVENT_SIMULATION_STEP","line":155},{"name":"EVENT_VISUALIZATION_UPDATE","line":156},{"name":"subscribe_to_event","line":159},{"name":"publish_event","line":176},{"name":"create_state_sync","line":202},{"name":"get_sync_module_id","line":209},{"name":"get_sync_state_version","line":213},{"name":"get_sync_state_data","line":217},{"name":"get_sync_checksum","line":221},{"name":"synchronize_states","line":226},{"name":"create_error_propagation","line":251},{"name":"get_error_source","line":258},{"name":"get_error_code","line":262},{"name":"get_error_severity","line":266},{"name":"get_error_timestamp","line":270},{"name":"SEVERITY_INFO","line":275},{"name":"SEVERITY_WARNING","line":276},{"name":"SEVERITY_ERROR","line":277},{"name":"SEVERITY_CRITICAL","line":278},{"name":"propagate_error","line":281},{"name":"load_module","line":314},{"name":"unload_module","line":329},{"name":"create_dependency","line":346},{"name":"get_dependency_module_id","line":353},{"name":"get_dependency_depends_on","line":357},{"name":"get_dependency_type","line":361},{"name":"get_dependency_required","line":365},{"name":"check_dependencies","line":370},{"name":"create_resource_request","line":409},{"name":"get_resource_request_module","line":416},{"name":"get_resource_request_type","line":420},{"name":"get_resource_request_amount","line":424},{"name":"get_resource_request_priority","line":428},{"name":"RESOURCE_CPU","line":433},{"name":"RESOURCE_MEMORY","line":434},{"name":"RESOURCE_BANDWIDTH","line":435},{"name":"RESOURCE_STORAGE","line":436},{"name":"allocate_resources","line":439},{"name":"create_integration_report","line":476},{"name":"generate_integration_stats","line":485},{"name":"validate_integration_health","line":518}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","integration","framework","max","modules","messages","events","create","registration","get","registered","priority","status","network","testing","documentation","visualization","simulation","profiling","idle","active","busy","offline","dest","msg","data","control","event","send","receive","loaded","unloaded","completed","step","subscribe","publish","state","sync","checksum","synchronize","states","propagation","severity","timestamp","info","warning","critical","propagate","load","unload","dependency","depends","required","dependencies","resource","request","amount","cpu","memory","bandwidth","storage","allocate","resources","report","generate","stats","validate","health"]},{"id":"45754d036ee4eced4776bb6c2d85addf2cf176e7c70098f78b3fdb4db7df17c1","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/mods.t27","health":"ok","module":"tool_tri_mods"}],"description":"specs/tools/tri/mods.t27 -- tool tri/mods, the `tri mods` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/mods). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["mods","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"45784e977fde6e94fc06398b713494335150a946f08c4332505038a063523222","sources":[{"repo":"ghashtag/t27","path":"specs/provider/stream.t27","health":"ok","module":"provider-stream"}],"description":"provider/stream.t27 — SSE/Streaming Response Handling Server-Sent Events and streaming response processing","symbols":[{"name":"SSE_EVENT_PREFIX","line":21},{"name":"SSE_DATA_PREFIX","line":24},{"name":"SSE_COMMENT_PREFIX","line":27},{"name":"SSE_EVENT_MESSAGE","line":30},{"name":"SSE_EVENT_DELTA","line":33},{"name":"SSE_EVENT_DONE","line":36},{"name":"SSE_EVENT_ERROR","line":39},{"name":"SSE_BUFFER_SIZE","line":42},{"name":"MAX_CHUNK_SIZE","line":45},{"name":"DEFAULT_STREAM_TIMEOUT_MS","line":48},{"name":"SseEventType","line":55},{"name":"SseEvent","line":64},{"name":"StreamState","line":72},{"name":"StreamError","line":82},{"name":"StreamConfig","line":91},{"name":"StreamResult","line":99},{"name":"BufferPosition","line":107},{"name":"ParsedEvent","line":114},{"name":"StreamStats","line":121},{"name":"StreamCallback","line":130},{"name":"CallbackData","line":139},{"name":"stream_config_default","line":149},{"name":"sse_event_create","line":159},{"name":"stream_result_create","line":169},{"name":"stream_result_error","line":179},{"name":"buffer_position_create","line":189},{"name":"parsed_event_create","line":198},{"name":"stream_stats_create","line":207},{"name":"callback_data_create","line":218},{"name":"parse_sse_line","line":226},{"name":"data","line":236},{"name":"event_type_str","line":241},{"name":"event_type","line":242},{"name":"parse_event_type","line":250},{"name":"sse_event_to_chunk","line":265},{"name":"chunk_type","line":266},{"name":"is_sse_comment","line":283},{"name":"is_sse_data","line":288},{"name":"is_sse_event","line":293},{"name":"sse_event_type_to_string","line":298},{"name":"stream_is_active","line":309},{"name":"stream_has_error","line":314},{"name":"stream_state_to_string","line":319},{"name":"stream_error_to_string","line":331},{"name":"is_stream_success","line":342},{"name":"update_stream_stats","line":347},{"name":"increment_stream_errors","line":358},{"name":"config","line":373},{"name":"event","line":378},{"name":"chunks","line":383},{"name":"result","line":384},{"name":"result","line":389},{"name":"pos","line":394},{"name":"line","line":399},{"name":"parsed","line":400},{"name":"line","line":405},{"name":"parsed","line":406},{"name":"line","line":411},{"name":"parsed","line":412},{"name":"str","line":429},{"name":"str","line":442},{"name":"str","line":447},{"name":"result","line":452}],"imports":[],"terms":["provider","stream","sse","event","prefix","data","delta","done","buffer","size","max","chunk","default","timeout","state","config","position","parsed","stats","callback","create","parse","str","active","success","increment","chunks","pos"]},{"id":"45799ff43fefd2149b47df88a5da2a3c8cd85a40fc0a1f2951dcfa243fc13426","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/relu_activation.t27","health":"ok","module":"Relu"}],"description":"t27/specs/","symbols":[{"name":"ZERO","line":13},{"name":"ReLUConfig","line":19},{"name":"forward","line":29},{"name":"backward","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","relu","zero","luconfig","forward","backward"]},{"id":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf8.t27","health":"warn","module":"GF8"}],"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 — 8-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 3 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF8","line":34},{"name":"encode","line":43},{"name":"sign","line":48},{"name":"abs_val","line":49},{"name":"exp_unbiased","line":52},{"name":"exp_biased","line":53},{"name":"exp_clamped","line":56},{"name":"mant","line":59},{"name":"decode","line":67},{"name":"sign","line":68},{"name":"exp_biased","line":69},{"name":"mant","line":70},{"name":"exp_unbiased","line":78},{"name":"mant_normalized","line":85},{"name":"value","line":91},{"name":"max_value","line":103},{"name":"mant_max","line":105},{"name":"exp_max","line":106},{"name":"min_positive","line":110},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp","line":172},{"name":"pow","line":178}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf8","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow"]},{"id":"45af6aee6801336077dc92898917fdea1ea9ef5c6e9283fd2868d9e3714cf91c","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/numeric.golden-float.t27","health":"ok","module":"trinity_capability_numeric_golden_float"}],"description":"specs/trinity/capabilities/numeric.golden-float.t27 -- capability trinity/numeric.golden-float: GoldenFloat numeric formats, consumed as the pinned package gHashTag/zig-golden- One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","numeric","golden","float","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"45c6ce4000cad4bd861ac6071208e8e54b6ba8e024bbcc6d8fd0dee3d4a43c59","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft1024.t27","health":"ok","module":"triformat_gft1024"}],"description":"gft1024.t27 -- GF-T1024: the golden-ratio ternary ladder, 1024-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft1024","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"45ece51f52ec529802e387903a06b3fc58f3dcc088823785511c924c57567c32","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-board-sync.t27","health":"ok","module":"skill_trinity_board_sync"}],"description":"specs/skills/trinity-board-sync.t27 -- skill trinity/board-sync Source of truth for the skill card on t27.ai (#/skills?skill=trinity/board-sync). The skill body lives in gHashTag/trinity at .claude/skills/board-sync/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/board-sync/SKILL.md, sha256 f4bfa63737cf...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","board","sync","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"45eceaaa65e7ddb52ada5b5ba657ad0c6139d715f236ce25c4fbdd7f84e6780c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ledger.t27","health":"ok","module":"TriLedger"}],"description":"TRI-NET DePIN ledger: persistent, append-only $TRI account state across rounds. Per-round settlement (tri_settle) + its Merkle round-root (tri_merkle) are stateless -- there is no lasting record of accumulated balances. This adds the ledger: a node's balance accumulates (saturating) across rounds, and the whole history is committed by an evolving STATE ROOT that chains each round's root into the previous state, exactly like a blockchain's state-root chain. Given the genesis and the sequence of round","symbols":[{"name":"LEDGER_GENESIS","line":13},{"name":"L_C","line":14},{"name":"rotl","line":16},{"name":"mix32","line":20},{"name":"balance_add","line":29},{"name":"state_step","line":41},{"name":"verify_chain3","line":46}],"imports":[{"name":"base::types","line":11}],"terms":["net","ledger","genesis","rotl","mix32","balance","state","step","verify","chain3"]},{"id":"45f24257632e6874936c6c861577cfb3e7dfe9980d45a46cc270402ece70beef","sources":[{"repo":"ghashtag/t27","path":"specs/api/c_abi.t27","health":"ok","module":"TrinityCAbi"}],"description":"specs/api/c_abi.t27 -- the C ABI of libtrinity-vsa as gHashTag/trinity src/c_api.zig exports it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's host boundary is one file, src/c_api.zig at 976df517, built as the static and shared libraries trinity-vsa and described by a hand-written header. This file states the twenty-two exported functions with their C prototypes, who owns what crosses the boundary, what each returns on a NULL handle, the error channel (there is none) and the layout that is and is not ABI-stable; the scalar rules are","symbols":[{"name":"KIND","line":17},{"name":"ID","line":18},{"name":"NAME","line":19},{"name":"CONSUMER_REPO","line":20},{"name":"PINNED_REVISION","line":21},{"name":"OWNER_MODULE","line":22},{"name":"HEADER","line":23},{"name":"HEADER_KIND","line":24},{"name":"HEADER_INSTALL_PATH","line":25},{"name":"LIBRARY_NAMES","line":26},{"name":"BUILD_TARGETS","line":27},{"name":"PROSE_CONTRACT","line":28},{"name":"VERSION_STRING","line":29},{"name":"MAX_DIM","line":30},{"name":"ALLOCATOR","line":31},{"name":"HANDLE_RULE","line":32},{"name":"ERROR_CHANNEL","line":33},{"name":"OWNERSHIP_RULE","line":34},{"name":"DIM_RULE","line":35},{"name":"TRIT_RULE","line":36},{"name":"FUNCTION_COUNT","line":37},{"name":"FUNCTIONS","line":38},{"name":"FUNCTION_ARITY","line":39},{"name":"FUNCTION_C","line":40},{"name":"FUNCTION_OWNERSHIP","line":41},{"name":"FUNCTION_ON_NULL","line":42},{"name":"FINDING_COUNT","line":44},{"name":"FINDINGS","line":45},{"name":"EVIDENCE","line":46},{"name":"ENABLED","line":47},{"name":"dim_clamped","line":51},{"name":"trit_normalized","line":56},{"name":"get_trit_result","line":62},{"name":"set_trit_ignored","line":67},{"name":"to_array_count","line":71},{"name":"handle_result_is_null","line":76}],"imports":[],"terms":["api","abi","cabi","kind","consumer","pinned","revision","owner","header","install","path","library","build","targets","prose","contract","max","dim","allocator","handle","rule","channel","ownership","trit","count","functions","arity","null","finding","findings","evidence","enabled","clamped","normalized","get","set","ignored","array"]},{"id":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/mha_block.t27","health":"warn","module":"MHABlock"}],"description":"t27/specs/ml/transformer/mha_block.t27","symbols":[{"name":"PHI","line":17},{"name":"DEFAULT_DROPOUT","line":18},{"name":"PHI_RESIDUAL_SCALE","line":19},{"name":"BlockConfig","line":25},{"name":"BlockState","line":35},{"name":"BlockForwardResult","line":43},{"name":"BlockGradients","line":49},{"name":"ResidualConnection","line":55},{"name":"init","line":67},{"name":"forward","line":76},{"name":"forward_with_post_ln","line":92},{"name":"apply_residual_connection","line":106},{"name":"phi_scaled_residual","line":112},{"name":"backward","line":118},{"name":"get_parameter_count","line":133},{"name":"get_flops","line":140},{"name":"create_residual_connection","line":149}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"numeric::gf16","line":8},{"name":"ml::transformer::norm","line":9},{"name":"ml::transformer::multi_head_attn","line":10},{"name":"ml::transformer::feed_forward","line":11}],"terms":["transformer","mha","block","mhablock","phi","default","dropout","residual","scale","config","state","forward","gradients","connection","init","post","apply","scaled","backward","get","parameter","count","flops","create"]},{"id":"460d9c7fa17cba1b4af999b79952e527562fc6aaa3d8b77e240647d477f854b8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/reader.t27","health":"ok","module":"TriReader"}],"description":"t27/specs/","symbols":[{"name":"Reader","line":13},{"name":"pure","line":22},{"name":"ask","line":27},{"name":"asks","line":32},{"name":"local","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["reader","pure","ask","asks","local"]},{"id":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","sources":[{"repo":"ghashtag/t27","path":"specs/file/schema.t27","health":"ok","module":"File"}],"description":"specs/file/schema.t27 File Types Specification","symbols":[{"name":"FileType","line":13},{"name":"FileStatus","line":24},{"name":"ContentType","line":35},{"name":"WatchEventType","line":46},{"name":"FileError","line":57},{"name":"FileInfo","line":74},{"name":"FileContent","line":89},{"name":"FileNode","line":103},{"name":"FileChange","line":117},{"name":"IgnorePattern","line":129},{"name":"IgnoreRules","line":135},{"name":"SearchMatch","line":145},{"name":"SearchOptions","line":154},{"name":"WatchEvent","line":168},{"name":"WatcherHandle","line":175},{"name":"Submatch","line":186},{"name":"RipgrepMatch","line":193},{"name":"RipgrepOptions","line":201},{"name":"MAX_FILE_SIZE","line":213},{"name":"MAX_SEARCH_RESULTS","line":214},{"name":"DEFAULT_READ_CHUNK","line":215},{"name":"is_text","line":222},{"name":"is_binary","line":227},{"name":"is_image","line":232},{"name":"is_hidden","line":237},{"name":"get_extension","line":248}],"imports":[{"name":"base::types","line":6}],"terms":["schema","status","content","watch","event","info","node","ignore","pattern","rules","search","match","options","watcher","handle","submatch","ripgrep","max","size","results","default","read","chunk","text","binary","image","hidden","get","extension"]},{"id":"4695ba570b580a94f58a18cebaecc25b6ef681db9f74a7da9882587877475a8b","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/diff_probe.t27","health":"ok","module":"DiffProbe"}],"description":"","symbols":[{"name":"g","line":2}],"imports":[],"terms":["bootstrap","goldring","diff","probe"]},{"id":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/trust_manager.t27","health":"warn","module":"trust_manager"}],"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","symbols":[{"name":"MAX_NODES","line":7},{"name":"TRUST_THRESHOLD","line":8},{"name":"TRUST_HIGH","line":9},{"name":"TRUST_LOW","line":10},{"name":"MAX_TRUST_SCORE","line":11},{"name":"create_trust_score","line":14},{"name":"get_trust_node_id","line":21},{"name":"get_trust_score_value","line":25},{"name":"get_positive_interactions","line":29},{"name":"get_negative_interactions","line":33},{"name":"create_trust_relationship","line":40},{"name":"get_trust_source","line":47},{"name":"get_trust_destination","line":51},{"name":"get_trust_level","line":55},{"name":"get_trust_verified","line":59},{"name":"create_trust_array","line":66},{"name":"get_trust_score","line":70},{"name":"calculate_trust_score","line":78},{"name":"update_trust_score","line":90},{"name":"is_node_trusted","line":103},{"name":"is_node_highly_trusted","line":108},{"name":"is_node_low_trusted","line":113},{"name":"find_most_trusted","line":118},{"name":"should_route_via_node","line":166},{"name":"penalize_node","line":174},{"name":"reward_node","line":185}],"imports":[{"name":"base::types","line":5}],"terms":["net","trust","manager","max","nodes","threshold","high","low","score","create","get","node","positive","interactions","negative","relationship","destination","level","verified","array","calculate","trusted","highly","find","most","route","via","penalize","reward"]},{"id":"46e0eb2a3f596509c6a0aec1b64f2558db9c145c0865ca6b851faec29e9bf0df","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lr_scheduler.t27","health":"ok","module":"LrScheduler"}],"description":"t27/specs/ml/optimizer/lr_scheduler.t27","symbols":[{"name":"PHI","line":15},{"name":"INV_PHI","line":16},{"name":"DEFAULT_MAX_LR","line":17},{"name":"DEFAULT_MIN_LR","line":18},{"name":"DEFAULT_WARMUP_STEPS","line":19},{"name":"DEFAULT_MAX_STEPS","line":20},{"name":"SchedulerConfig","line":26},{"name":"SchedulerState","line":34},{"name":"init","line":46},{"name":"get_lr","line":53},{"name":"step","line":62},{"name":"linear_warmup","line":69},{"name":"cosine_decay","line":76},{"name":"phi_cosine_decay","line":84},{"name":"get_lr_at_step","line":92}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"math::trigonometry","line":8},{"name":"numeric::gf16","line":9}],"terms":["optimizer","scheduler","phi","inv","default","max","min","warmup","steps","config","state","init","get","step","linear","cosine","decay"]},{"id":"46eb92bbb340ff3345a79d44ec05cd0169c5c2b8ae064619690c31479ac3e2c0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/suffix_array.t27","health":"ok","module":"TriSuffixArray"}],"description":"t27/specs/","symbols":[{"name":"SuffixArray","line":13},{"name":"build","line":23},{"name":"search","line":28},{"name":"deinit","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","suffix","array","build","search","deinit"]},{"id":"471fe9193b42231e2ed1ea34770713954137ecb1097b3f158a4ca9168f836fea","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_train1.t27","health":"ok","module":"GftTrain1"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"on_comb","line":110}],"imports":[],"terms":["ternary","gft","train1","magadd","magsub","sadd","neg","magmul","smul","comb"]},{"id":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/conformance.t27","health":"warn","module":"TrinityMemoryConformanceLabSpec"}],"description":"specs/memory/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable","symbols":[{"name":"TMS_LAB_SCHEMA_VERSION","line":18},{"name":"TMS_LAB_ROOT_MEMBERS","line":19},{"name":"TMS_LAB_MIN_VECTORS","line":20},{"name":"TMS_LAB_MAX_VECTORS","line":21},{"name":"TMS_LAB_MIN_WEIGHTS","line":22},{"name":"TMS_LAB_MAX_WEIGHTS","line":23},{"name":"TMS_LAB_FIELD_NAME","line":24},{"name":"TMS_LAB_FIELD_WEIGHTS","line":25},{"name":"TMS_LAB_FIELD_ACTIVATIONS","line":26},{"name":"TMS_LAB_FIELD_DOT","line":27},{"name":"TMS_LAB_FIELD_DENSE5_HEX","line":28},{"name":"TMS_LAB_FIELD_BASELINE2_HEX","line":29},{"name":"TMS_LAB_FIELD_DENSE17_HEX","line":30},{"name":"TMS_LAB_FIELD_DENSE22_HEX","line":31},{"name":"TMS_LAB_REQUIRED_FIELDS","line":32},{"name":"TMS_LAB_ALLOWED_FIELDS","line":33},{"name":"TMS_LAB_MAX_FIXTURE_BYTES","line":34},{"name":"TMS_LAB_CODEC_MODES","line":38},{"name":"TMS_LAB_RTL_CODECS","line":39},{"name":"TMS_LAB_RANDOM_CASES","line":40},{"name":"TMS_LAB_SPARSE_TRANSFERS","line":41},{"name":"TMS_LAB_SPARSE_PATTERN_TRITS","line":42},{"name":"TMS_LAB_CORRUPTION_FLIPS","line":43},{"name":"TMS_LAB_CORRUPTION_TRITS","line":44},{"name":"TMS_LAB_CORRUPTION_RPC_ERROR","line":45},{"name":"TMS_LAB_SEED_DEFAULT","line":46},{"name":"TMS_LAB_RTL_SEED_MAX","line":47},{"name":"TMS_LAB_SERVER_MAX_REQUEST_BYTES","line":48},{"name":"TMS_LAB_SERVER_MAX_OBJECT_BYTES","line":49},{"name":"TMS_LAB_SERVER_MAX_STORAGE_BYTES","line":50},{"name":"TMS_LAB_SERVER_MAX_OBJECTS","line":51},{"name":"TMS_LAB_SERVER_MAX_TRITS","line":52},{"name":"TMS_LAB_SERVER_TIMEOUT_SECONDS","line":53},{"name":"TMS_LAB_ERR_CHECK","line":54},{"name":"TMS_LAB_ERR_RESOURCE","line":55},{"name":"TMS_LAB_ERR_RTL","line":56},{"name":"TMS_LAB_REPORT_VERSION","line":60},{"name":"TMS_LAB_REPORT_SECTIONS","line":61},{"name":"TMS_LAB_PHYSICAL_DEVICE_TESTED","line":62},{"name":"LabSection","line":64},{"name":"LabEvidence","line":73},{"name":"TMS_LAB_DEVICE_CAPTURE_SCHEMA_VERSION","line":86},{"name":"TMS_LAB_DEVICE_CAPTURE_MUST_MATCH_SOURCE_HASH","line":87},{"name":"tms_lab_device_capture_current","line":88},{"name":"LabCorruption","line":93},{"name":"LabInterruption","line":105},{"name":"LabReset","line":111},{"name":"tms_lab_fields_valid","line":118},{"name":"tms_lab_vector_count_valid","line":123},{"name":"tms_lab_weight_count_valid","line":127},{"name":"tms_lab_weight_valid","line":131},{"name":"tms_lab_activation_valid","line":135},{"name":"tms_lab_dot","line":139},{"name":"tms_lab_codec_order","line":147},{"name":"tms_lab_rtl_codec","line":155},{"name":"tms_lab_random_case_count","line":159},{"name":"tms_lab_positive_checks","line":170},{"name":"tms_lab_rtl_checks","line":174},{"name":"tms_lab_corruption_position","line":182},{"name":"tms_lab_seed_valid","line":192},{"name":"tms_lab_fixture_size_valid","line":197},{"name":"tms_lab_field_is_timing","line":202}],"imports":[],"terms":["dmitrii","memory","conformance","lab","tms","schema","root","members","min","vectors","max","weights","field","activations","dot","dense5","hex","baseline2","dense17","dense22","required","fields","allowed","fixture","bytes","codec","modes","rtl","codecs","random","cases","sparse","transfers","pattern","trits","corruption","flips","rpc","seed","default","request","object","storage","objects","timeout","seconds","err","resource","report","sections","physical","device","tested","section","evidence","capture","match","hash","interruption","reset","valid","vector","count","weight","activation","order","case","positive","checks","position","size","timing"]},{"id":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_tick.t27","health":"warn","module":"TrinityFpgaTickT27"}],"description":"","symbols":[{"name":"on_clock","line":13}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","tick","clock"]},{"id":"47fa62e4268cf8e79f4e4b7ed9972b705c79a74d31b428f88f237d1bc09a7eed","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adam.t27","health":"ok","module":"Adam"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_BETA1","line":13},{"name":"DEFAULT_BETA2","line":14},{"name":"DEFAULT_EPSILON","line":15},{"name":"AdamConfig","line":21},{"name":"step","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","adam","default","beta1","beta2","epsilon","config","step"]},{"id":"486562f3726f65e2830e5e0deaf3019433d59081fd5ba1edca4cb38f5aa3b195","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/quick_sort.t27","health":"ok","module":"TriQuickSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14},{"name":"sort_range","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","quick","range"]},{"id":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gi1_analysis.t27","health":"ok","module":"GI1Analysis"}],"description":"t27/specs/physics/gi1_analysis.t27 GI1 Pre-Registration Analysis: γ_φ vs γ₁ comparison Three hypotheses tested against empirical data","symbols":[{"name":"STRUCTURAL_COMPLEXITY_PHI","line":17},{"name":"STRUCTURAL_COMPLEXITY_1","line":18},{"name":"GAMMA_PHI","line":24},{"name":"GAMMA_LQG_STANDARD","line":27},{"name":"DELTA_GAMMA_1_PHI_PERCENT","line":30},{"name":"LITEBIRD_NT_DIV_R_MEASURED","line":35},{"name":"verify_structural_simplicity","line":41},{"name":"verify_numerical_proximity","line":46},{"name":"verify_gamma_uniqueness","line":51},{"name":"DL_LOWER_BOUND","line":54},{"name":"DL_UPPER_BOUND","line":55},{"name":"verify_gamma_in_dl_bounds","line":59},{"name":"compute_litebird_prediction","line":64},{"name":"GI1Report","line":74},{"name":"verify_all_hypotheses","line":94},{"name":"ha_passed","line":95},{"name":"hb_passed","line":96},{"name":"hc_passed","line":97},{"name":"hc_dl_passed","line":98},{"name":"ntr_phi","line":101},{"name":"ntr_1","line":102},{"name":"diff_phi","line":105},{"name":"diff_1","line":106}],"imports":[{"name":"math::constants","line":8}],"terms":["physics","gi1","analysis","gi1analysis","structural","complexity","phi","gamma","lqg","standard","delta","percent","litebird","div","measured","verify","simplicity","numerical","proximity","uniqueness","lower","bound","upper","bounds","compute","prediction","gi1report","hypotheses","passed","ntr","diff"]},{"id":"488af77492c2664a504de98dc8dc2a19a37e3cce3d355f3a1af26e259bfb3038","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/clocked_state.t27","health":"warn","module":"trinity_matrix_clocked_state"}],"description":"trinity_matrix/clocked_state.t27 -- feature clocked state: registered variables updated by on_clock and a combinational output, the form the Trinity memory RTL specs use; runtime evidence comes from the Verilog backend through Icarus (t27c icarus-simulate) and the C backend runs the test blocks.","symbols":[{"name":"on_clock","line":10}],"imports":[],"terms":["bootstrap","fixtures","matrix","clocked","state","clock"]},{"id":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/gitbutler.t27","health":"ok","module":"tool_mcp_gitbutler"}],"description":"specs/tools/mcp/gitbutler.t27 -- tool mcp/gitbutler, MCP server \"gitbutler\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/gitbutler). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","gitbutler","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"489e64457fdd3c9a381073abd68b4fefea83b4e8f7471117b2e75c70fb79e6ee","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_02.t27","health":"warn","module":"damage_class_02"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"48c3a4143f39690e56cb9e36942625642ea277d7cfe50aa05290b325042391be","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/fs.t27","health":"ok","module":"TriFs"}],"description":"t27/specs/","symbols":[{"name":"Path","line":13},{"name":"FileInfo","line":18},{"name":"join","line":30},{"name":"basename","line":35},{"name":"dirname","line":40},{"name":"extension","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["path","info","join","basename","dirname","extension"]},{"id":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/diagnostics.t27","health":"ok","module":"Diagnostics"}],"description":"","symbols":[{"name":"ErrorCode","line":3},{"name":"Severity","line":24},{"name":"Diagnostic","line":30},{"name":"diagnostic_new","line":39},{"name":"is_error","line":50},{"name":"is_warning","line":54},{"name":"is_parse_error","line":58},{"name":"is_type_error","line":66},{"name":"is_link_error","line":74},{"name":"error_code_range","line":81},{"name":"format_diagnostic","line":88}],"imports":[],"terms":["compiler","diagnostics","severity","diagnostic","warning","parse","link","range","format"]},{"id":"4909a13b33ff6128bf308132850effbdfcfc1b44bb8ccedf1c7bacc288dea720","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/pr.t27","health":"ok","module":"tool_tri_pr"}],"description":"specs/tools/tri/pr.t27 -- tool tri/pr, the `tri pr` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/pr). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"4991d83ed59365348efc506f4907cceb29a04742b9ad7f610b6b754c184d55b4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/boards/ax7203_full.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"lvds","line":13}],"imports":[],"terms":["fpga","boards","ax7203","full","lvds"]},{"id":"49a3ef2231df6ce5d5cdeec62f6608317512b047d2c6adb620b327b04fbdcfc3","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf64.t27","health":"ok","module":"GF64"}],"description":"t27/specs/numeric/gf64.t27 GoldenFloat64 — 64-bit phi-structured floating point NUMERIC-STANDARD-001 — canonical double-precision member of the GoldenFloat family","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_BIAS","line":29},{"name":"PHI_DISTANCE","line":32},{"name":"EXP_MAX","line":35},{"name":"MANT_DIV","line":36},{"name":"MANT_MASK","line":37},{"name":"EXP_FIELD_MASK","line":38},{"name":"GF64","line":41},{"name":"encode","line":46},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":55},{"name":"mant","line":57},{"name":"decode","line":66},{"name":"sign","line":67},{"name":"exp_biased","line":68},{"name":"mant","line":69},{"name":"exp_unbiased","line":74},{"name":"mant_normalized","line":79},{"name":"value","line":84},{"name":"max_value","line":90},{"name":"mant_max","line":91},{"name":"exp_max","line":92},{"name":"min_positive","line":95},{"name":"mant_min","line":96},{"name":"exp_min","line":97},{"name":"epsilon","line":100},{"name":"MEMORY_RATIO_VS_FP64","line":105},{"name":"validate_format","line":108},{"name":"fmt","line":109},{"name":"floor_log2","line":127},{"name":"extract_mantissa","line":134},{"name":"normalized","line":135},{"name":"frac","line":136},{"name":"max_mant","line":137},{"name":"clamp_u32","line":140},{"name":"pow2","line":145}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf64","bits","sign","exp","mant","bias","phi","distance","max","div","mask","field","encode","abs","val","unbiased","biased","clamped","decode","normalized","min","positive","epsilon","memory","ratio","fp64","validate","format","fmt","floor","log2","extract","mantissa","frac","clamp","u32","pow2"]},{"id":"49d1e8ddabc30e6cc9e852ea156510b928d618264e25737e12cd57a2eb4d3de7","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/similarity_search.t27","health":"warn","module":"VSASimilaritySearch"}],"description":"t27/specs/vsa/similarity_search.t27 VSA Similarity Search Specification Ring 062 - Efficient similarity search in hyperdimensional space Defines semantic similarity operations for VSA trit vectors","symbols":[{"name":"MAX_VECTORS","line":16},{"name":"TOP_K_DEFAULT","line":17},{"name":"SIMILARITY_THRESHOLD_DEFAULT","line":18},{"name":"SIMILARITY_COSINE","line":21},{"name":"SIMILARITY_DOT","line":22},{"name":"SIMILARITY_HAMMING","line":23},{"name":"SIMILARITY_JACCARD","line":24},{"name":"SearchResult","line":27},{"name":"SearchResults","line":34},{"name":"cosine_similarity","line":47},{"name":"ai","line":54},{"name":"bi","line":55},{"name":"norm_a_f","line":69},{"name":"norm_b_f","line":70},{"name":"hamming_similarity","line":82},{"name":"jaccard_index","line":103},{"name":"a_nonzero","line":109},{"name":"b_nonzero","line":110},{"name":"find_top_k","line":135},{"name":"insert_result","line":173},{"name":"sort_results","line":197},{"name":"temp","line":203},{"name":"HNSWNode","line":218},{"name":"HNSW_MAX_NODES","line":225},{"name":"hnsw_search","line":231},{"name":"similarity","line":246},{"name":"collect_neighbors","line":268},{"name":"node","line":269},{"name":"neighbor_idx","line":273},{"name":"similarity","line":274},{"name":"get_vector","line":288},{"name":"result","line":375},{"name":"result","line":384},{"name":"result","line":393},{"name":"cosine_ab","line":402},{"name":"cosine_ba","line":403},{"name":"hamming_ab","line":404},{"name":"hamming_ba","line":405},{"name":"results","line":426}],"imports":[{"name":"vsa::core","line":9},{"name":"math::constants","line":10}],"terms":["vsa","similarity","search","vsasimilarity","max","vectors","top","default","threshold","cosine","dot","hamming","jaccard","results","norm","index","nonzero","find","insert","sort","temp","hnswnode","hnsw","nodes","collect","neighbors","node","neighbor","idx","get","vector"]},{"id":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","sources":[{"repo":"ghashtag/t27","path":"specs/github/auth.t27","health":"ok","module":"github"}],"description":"specs/github/auth.t27 GitHub Authentication for t27 Ring-072 - GitHub SSOT Integration","symbols":[{"name":"AUTH_STATE_UNAUTHENTICATED","line":8},{"name":"AUTH_STATE_AUTHENTICATED","line":9},{"name":"GITHUB_CLI_PATH","line":10},{"name":"AuthResult","line":12},{"name":"auth_status","line":17},{"name":"status","line":24}],"imports":[],"terms":["auth","state","unauthenticated","authenticated","cli","path","status"]},{"id":"4a36751ee547427463eb6c2addcfb67293a623fc469f5e22fe5af9118a63740a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/experience_hooks.t27","health":"ok","module":"ExperienceHooks"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["experience","hooks"]},{"id":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_bigint.t27","health":"warn","module":"hybrid_bigint"}],"description":"HybridBigInt: Optimal Memory/Speed Trade-off Uses packed storage (4.5x memory savings) with unpacked computation SIMD-accelerated operations for high performance Author: Dmitrii Vasilev","symbols":[{"name":"MAX_TRITS","line":19},{"name":"TRITS_PER_BYTE","line":22},{"name":"MAX_PACKED_BYTES","line":25},{"name":"SIMD_WIDTH","line":28},{"name":"SIMD_CHUNKS","line":31},{"name":"MEMORY_EFFICIENCY","line":34},{"name":"StorageMode","line":43},{"name":"Vec32","line":49},{"name":"HybridBigInt","line":56},{"name":"simd_add","line":75},{"name":"simd_negate","line":100},{"name":"simd_dot_product","line":109},{"name":"simd_is_zero","line":118},{"name":"zero","line":133},{"name":"ensure_unpacked","line":144},{"name":"pack","line":178},{"name":"memory_usage","line":209},{"name":"from_i64","line":214},{"name":"to_i64","line":248},{"name":"get_trit","line":268},{"name":"set_trit","line":277},{"name":"is_zero","line":292},{"name":"is_negative","line":300},{"name":"negate","line":308},{"name":"add","line":328},{"name":"add_simd","line":371},{"name":"sub","line":453},{"name":"mul","line":459},{"name":"dot_product","line":510},{"name":"normalize","line":547},{"name":"from_bigint","line":558},{"name":"to_bigint","line":577}],"imports":[{"name":"numeric::gf16","line":10},{"name":"tritype::Trit","line":11},{"name":"ternary::bigint","line":12}],"terms":["ternary","hybrid","bigint","max","trits","per","byte","packed","bytes","simd","width","chunks","memory","efficiency","storage","mode","vec32","big","int","negate","dot","product","zero","ensure","unpacked","pack","usage","i64","get","trit","set","negative","sub","mul","normalize"]},{"id":"4afded3071ac34a51d06749ea6983dfd0238d1dcb78856ae19b836122019c080","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-farm-garden.t27","health":"ok","module":"skill_trinity_farm_garden"}],"description":"specs/skills/trinity-farm-garden.t27 -- skill trinity/farm-garden Source of truth for the skill card on t27.ai (#/skills?skill=trinity/farm-garden). The skill body lives in gHashTag/trinity at .claude/skills/farm-garden/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/farm-garden/SKILL.md, sha256 672148988575...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","farm","garden","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"4b2bd3dcc946b1c9c7f2d247f6968a6271cfd0b9f5bd12d9ecfa42b883ad7881","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_14.t27","health":"warn","module":"damage_class_14"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"4b2c8ee5877c376316e94eda74ac07c789c1ee5c467313c7f093a3ae32bdc4b6","sources":[{"repo":"ghashtag/t27","path":"specs/functions/instagram-top-content-extract.t27","health":"ok","module":"fn_instagram_top_content_extract"}],"description":"specs/functions/instagram-top-content-extract.t27 -- function instagram-top-content-extract (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-top-content-extract). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/extractTopContent.ts#L33 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","instagram","top","content","extract","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/lexer.t27","health":"ok","module":"Lexing"}],"description":"","symbols":[{"name":"TokenKind","line":5},{"name":"Token","line":30},{"name":"Lexer","line":38},{"name":"lexer_init","line":46},{"name":"peek","line":56},{"name":"peek_offset","line":63},{"name":"new_pos","line":64},{"name":"advance","line":71},{"name":"ch","line":73},{"name":"is_alpha","line":84},{"name":"is_digit","line":88},{"name":"is_hex_digit","line":92},{"name":"is_alnum","line":96},{"name":"is_whitespace","line":100},{"name":"skip_whitespace_and_comments","line":104},{"name":"lexeme_equals","line":140},{"name":"check_keyword","line":151},{"name":"make_token_simple","line":209},{"name":"make_token_from_source","line":225},{"name":"scan_identifier","line":241},{"name":"start_line","line":242},{"name":"start_col","line":243},{"name":"start_pos","line":244},{"name":"ch","line":248},{"name":"scan_number","line":261},{"name":"start_line","line":262},{"name":"start_col","line":263},{"name":"start_pos","line":264},{"name":"ch","line":269},{"name":"next_ch","line":276},{"name":"scan_string","line":292},{"name":"start_line","line":293},{"name":"start_col","line":294},{"name":"escaped","line":310},{"name":"scan_char","line":341},{"name":"start_line","line":342},{"name":"start_col","line":343},{"name":"next_token","line":379},{"name":"start_line","line":382},{"name":"start_col","line":383},{"name":"start_pos","line":384},{"name":"ch","line":390},{"name":"next","line":398},{"name":"tok","line":478},{"name":"tok","line":484},{"name":"tok","line":489},{"name":"tok","line":494}],"imports":[{"name":"base::types","line":3}],"terms":["compiler","lexer","lexing","token","kind","init","peek","offset","pos","advance","alpha","digit","hex","alnum","whitespace","skip","lexeme","equals","keyword","make","simple","scan","identifier","start","col","escaped","char","tok"]},{"id":"4c27da6a18f488afac5ac4be903b614994749278742678c74490e1a74ff991a7","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/misread.t27","health":"ok","module":"tool_tri_misread"}],"description":"specs/tools/tri/misread.t27 -- tool tri/misread, the `tri misread` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/misread). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["misread","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/schema.t27","health":"ok","module":"lsp-schema"}],"description":"lsp/schema.t27 — LSP Base Types Position, Range, Diagnostic definitions for Language Server Protocol","symbols":[{"name":"ZERO_POSITION","line":19},{"name":"MAX_LINE","line":22},{"name":"MAX_CHAR","line":25},{"name":"LSP_VERSION","line":28},{"name":"Position","line":36},{"name":"Range","line":43},{"name":"Location","line":50},{"name":"DiagnosticSeverity","line":57},{"name":"DiagnosticTag","line":65},{"name":"CodeAction","line":71},{"name":"CodeActionKind","line":79},{"name":"WorkspaceEdit","line":87},{"name":"TextDocumentEdit","line":92},{"name":"Diagnostic","line":98},{"name":"TextDocumentSyncKind","line":108},{"name":"TextDocumentItem","line":114},{"name":"CompletionItem","line":122},{"name":"CompletionItemKind","line":133},{"name":"SignatureInformation","line":162},{"name":"ParameterInformation","line":169},{"name":"Hover","line":175},{"name":"SymbolKind","line":181},{"name":"DocumentSymbol","line":211},{"name":"InlayHintKind","line":221},{"name":"InlayHint","line":227},{"name":"CodeLens","line":236},{"name":"Command","line":242},{"name":"position_zero","line":253},{"name":"range_from_positions","line":258},{"name":"range_create","line":263},{"name":"start","line":264},{"name":"end","line":265},{"name":"location_create","line":270},{"name":"range","line":271},{"name":"diagnostic_create","line":276},{"name":"completion_item_create","line":288},{"name":"inlay_hint_create","line":301},{"name":"document_symbol_create","line":312},{"name":"position_is_zero","line":324},{"name":"range_is_empty","line":329},{"name":"range_length","line":334},{"name":"position_compare","line":344},{"name":"range_contains_position","line":361},{"name":"after_start","line":362},{"name":"before_end","line":363},{"name":"severity_to_string","line":368},{"name":"pos","line":382},{"name":"start","line":388},{"name":"end","line":389},{"name":"r","line":390},{"name":"r","line":396},{"name":"r","line":404},{"name":"r","line":409},{"name":"start","line":414},{"name":"end","line":415},{"name":"r","line":416},{"name":"inside","line":417},{"name":"outside","line":418},{"name":"a","line":424},{"name":"b","line":425},{"name":"a","line":430},{"name":"b","line":431},{"name":"a","line":436},{"name":"b","line":437},{"name":"r","line":450},{"name":"diag","line":451},{"name":"item","line":456},{"name":"pos","line":462},{"name":"hint","line":463},{"name":"r","line":469},{"name":"sym","line":470},{"name":"r","line":544},{"name":"pos","line":545},{"name":"a","line":557},{"name":"b","line":558},{"name":"r","line":570},{"name":"r","line":582}],"imports":[],"terms":["lsp","schema","zero","position","max","char","range","location","diagnostic","severity","tag","action","kind","workspace","edit","text","document","sync","item","completion","signature","information","parameter","hover","inlay","hint","lens","positions","create","start","end","empty","length","compare","contains","pos","inside","outside","diag","sym"]},{"id":"4c776204371d57c29ea666ad5f1f7c46a04d402208a4b93d2d15428315e94c11","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/handoff.t27","health":"ok","module":"Handoff"}],"description":"t27/specs/","symbols":[{"name":"PlannerOutput","line":13},{"name":"CoderOutput","line":25},{"name":"ReviewerVerdict","line":38},{"name":"TesterReport","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["handoff","planner","coder","reviewer","verdict","tester","report"]},{"id":"4ce32e084d3d43866017ef9bd2411fbafded65b8157c5fc2c24d2b35efe91f8c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_03_three_params.t27","health":"ok","module":"GenericConstTriple"}],"description":"ADR-008 positive: three generic parameters, attested once as `A, B, C`.","symbols":[{"name":"Tuple3","line":3}],"imports":[],"terms":["bootstrap","fixtures","generic","pos","three","params","triple","tuple3"]},{"id":"4cebca7f2af8129cdd9fe75b79a751bfeb933ecb2adac117d15b6789d8fd5245","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/property_test_template.t27","health":"warn","module":"PBTTemplate"}],"description":"t27/specs/test_framework/property_test_template.t27 Ring 052 — Property-Based Testing Template for GoldenFloat Standardized PBT patterns following T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md","symbols":[{"name":"PropertyTestConfig","line":15},{"name":"default_gf_config","line":25},{"name":"generate_gf16","line":41},{"name":"patterns","line":42},{"name":"idx","line":52},{"name":"bits","line":57},{"name":"generate_gf32","line":62},{"name":"patterns","line":63},{"name":"idx","line":73},{"name":"bits","line":78},{"name":"generate_gf16_pair","line":83},{"name":"generate_gf16_triple","line":88},{"name":"for_all","line":97},{"name":"input","line":105},{"name":"metamorphic","line":135},{"name":"input","line":144},{"name":"y","line":145},{"name":"g_y","line":146},{"name":"h_x","line":147},{"name":"differential","line":178},{"name":"input","line":188},{"name":"f_result","line":189},{"name":"g_result","line":190},{"name":"diff","line":191},{"name":"sum1","line":233},{"name":"sum2","line":234},{"name":"sum1","line":243},{"name":"sum2","line":244},{"name":"product1","line":253},{"name":"product2","line":254},{"name":"product1","line":263},{"name":"product2","line":264},{"name":"left","line":273},{"name":"right","line":274},{"name":"a_f16","line":295},{"name":"b_f16","line":296},{"name":"sum_f16","line":297},{"name":"abs_value","line":311},{"name":"next_representable","line":317},{"name":"diff","line":318},{"name":"goldenfloat_property_test_suite","line":330},{"name":"config","line":331},{"name":"strict_config","line":332},{"name":"approx_equal","line":411},{"name":"has_edge_cases","line":415},{"name":"has_normal_numbers","line":420},{"name":"all_tests_have_claim_ids","line":425},{"name":"has_commutativity_tests","line":430},{"name":"has_associativity_tests","line":431},{"name":"has_distributivity_tests","line":432},{"name":"has_precision_tests","line":433}],"imports":[{"name":"test_framework::core","line":7},{"name":"numeric::golden_float","line":8}],"terms":["framework","property","template","pbttemplate","config","default","generate","gf16","patterns","idx","bits","gf32","pair","triple","metamorphic","differential","diff","sum1","sum2","product1","product2","left","right","f16","sum","abs","representable","goldenfloat","suite","strict","approx","equal","edge","cases","normal","numbers","claim","ids","commutativity","associativity","distributivity","precision"]},{"id":"4d4dd9b3fcd4609d6b57f0feaec724c4c0af2d16c27a4e7476443ab9531730dc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/partition.t27","health":"ok","module":"Partition"}],"description":"t27/specs/fpga/partition.t27 T27 Multi-FPGA Partition Specification Automatically partitions HIR modules across multiple FPGAs Estimates inter-FPGA bandwidth and latency Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"FpgaNode","line":13},{"name":"fpga_node","line":23},{"name":"arty_a7_node","line":35},{"name":"InterFpgaLink","line":41},{"name":"lvds_link","line":49},{"name":"serdes_link","line":59},{"name":"link_bandwidth_mbps","line":69},{"name":"PartitionAssign","line":75},{"name":"assignment","line":84},{"name":"PartitionResult","line":97},{"name":"partition_ok","line":106},{"name":"partition_fail","line":117},{"name":"passed","line":128},{"name":"total_link_bandwidth","line":134},{"name":"fpga_util","line":144},{"name":"fpga_remaining","line":151},{"name":"validate_node","line":160}],"imports":[],"terms":["fpga","partition","node","arty","inter","link","lvds","serdes","bandwidth","mbps","assign","assignment","fail","passed","total","util","remaining","validate"]},{"id":"4d62843989a3e55bc2b52630e79c32f09d444359ef2429da1fc529663910c953","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_node_sim.t27","health":"ok","module":"MeshNodeSim"}],"description":"Mesh node simulation - 2-4 node network scenarios Tests point-to-point, triangle, line topologies","symbols":[{"name":"NODE_1","line":8},{"name":"NODE_2","line":9},{"name":"NODE_3","line":10},{"name":"NODE_4","line":11},{"name":"create_link_quality","line":14},{"name":"link_from","line":18},{"name":"link_to","line":22},{"name":"link_quality","line":26},{"name":"is_link_good","line":31},{"name":"create_2node_mesh","line":36},{"name":"create_3node_mesh","line":42},{"name":"create_4node_line","line":49},{"name":"calculate_hops","line":56}],"imports":[{"name":"base::types","line":5}],"terms":["net","mesh","node","sim","create","link","quality","good","2node","3node","4node","calculate","hops"]},{"id":"4dc8ea103431d9df995c086ae6800dabc140cca5c5b70666b627bea92e0970f9","sources":[{"repo":"ghashtag/t27","path":"specs/server/provider.t27","health":"ok","module":"Provider"}],"description":"specs/server/provider.t27 LLM Provider Configuration Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"ProviderType","line":14},{"name":"Provider","line":25},{"name":"Model","line":35},{"name":"ProviderManager","line":49},{"name":"provider_manager_init","line":55},{"name":"add_provider","line":67},{"name":"get_provider","line":79},{"name":"get_default_provider","line":90},{"name":"set_default_provider","line":94},{"name":"list_providers","line":106},{"name":"remove_provider","line":110},{"name":"enable_provider","line":131},{"name":"create_openai_provider","line":147},{"name":"create_anthropic_provider","line":159},{"name":"provider","line":184},{"name":"result","line":185},{"name":"provider","line":192},{"name":"retrieved","line":194},{"name":"provider","line":201},{"name":"default","line":203},{"name":"p1","line":209},{"name":"p2","line":210},{"name":"result","line":213},{"name":"provider","line":220},{"name":"result","line":222},{"name":"provider","line":229},{"name":"result","line":231},{"name":"retrieved","line":233},{"name":"provider","line":238},{"name":"provider","line":245},{"name":"mgr","line":252}],"imports":[{"name":"base::types","line":8}],"terms":["provider","model","manager","init","get","default","set","list","providers","remove","enable","create","openai","anthropic","retrieved","mgr"]},{"id":"4dd1bf05316f1a0ed952457e8fbbe7e03c51d51b2891c1dfe603db0425b4f2a3","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/gen.t27","health":"warn","module":"gen_commands"}],"description":"gen.t27 — Code Generation with TDD Validation Commands for generating code from t27 specs with TDD enforcement","symbols":[{"name":"GenOptions","line":13},{"name":"CodegenOptions","line":22},{"name":"TestGenOptions","line":30},{"name":"gen","line":41},{"name":"content","line":50},{"name":"context","line":58},{"name":"output_dir","line":138},{"name":"mkdir_result","line":145},{"name":"impl_output","line":154},{"name":"codegen_opts","line":158},{"name":"zig_code","line":165},{"name":"testgen_opts","line":184},{"name":"testgen","line":191},{"name":"test_code","line":192},{"name":"test_output","line":194},{"name":"test_result","line":195},{"name":"testgen_opts","line":210},{"name":"testgen","line":217},{"name":"conformance_json","line":218},{"name":"conf_dir","line":221},{"name":"conf_result","line":227},{"name":"gen_all","line":266},{"name":"spec_files","line":267},{"name":"result","line":285},{"name":"basename_without_ext","line":314},{"name":"filename_start","line":323},{"name":"Program","line":343},{"name":"Constant","line":350},{"name":"TestSection","line":355},{"name":"TestCase","line":359},{"name":"InvariantSection","line":366},{"name":"Invariant","line":370},{"name":"SpecDecl","line":376},{"name":"TestBlock","line":381},{"name":"SpecInvariant","line":386},{"name":"ParseError","line":391},{"name":"ParseContext","line":397},{"name":"has_errors","line":401},{"name":"TestGen","line":406},{"name":"new","line":410},{"name":"generate","line":417},{"name":"generate_json","line":426},{"name":"generate_code","line":431},{"name":"result","line":468},{"name":"result","line":472},{"name":"result","line":476}],"imports":[],"terms":["compiler","cli","gen","commands","options","codegen","content","dir","mkdir","impl","opts","zig","testgen","conformance","json","conf","basename","ext","filename","start","program","constant","section","case","invariant","decl","block","parse","generate"]},{"id":"4e19baf0ea4267dbbd23f71b8d324779c85427672378205a64726118c36a8e68","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/skill.t27","health":"ok","module":"tool_tri_skill"}],"description":"specs/tools/tri/skill.t27 -- tool tri/skill, the `tri skill` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/skill). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["skill","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"4e425fd16028fd4f79f0402fc4c5221aa3d8279d5397160013b0bbf013167a34","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/filesystem.t27","health":"ok","module":"TriFilesystem"}],"description":"t27/specs/","symbols":[{"name":"PathError","line":13},{"name":"FileInfo","line":17},{"name":"join","line":30},{"name":"basename","line":35},{"name":"dirname","line":40},{"name":"ext","line":45},{"name":"has_ext","line":50},{"name":"is_absolute","line":55},{"name":"normalize","line":60}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["filesystem","path","info","join","basename","dirname","ext","absolute","normalize"]},{"id":"4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","sources":[{"repo":"ghashtag/t27","path":"specs/github/prs.t27","health":"ok","module":"github"}],"description":"specs/github/prs.t27","symbols":[{"name":"PR_STATE_OPEN","line":4},{"name":"PullRequest","line":6},{"name":"pr_list","line":13},{"name":"prs","line":19}],"imports":[],"terms":["prs","state","open","pull","request","list"]},{"id":"4e74c213b43b2b2c253dda134a93795b3a6e627a4711d5fc8dffb3067c1cb0b0","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-doctor.t27","health":"ok","module":"skill_trinity_doctor"}],"description":"specs/skills/trinity-doctor.t27 -- skill trinity/doctor Source of truth for the skill card on t27.ai (#/skills?skill=trinity/doctor). The skill body lives in gHashTag/trinity at .claude/skills/doctor/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/doctor/SKILL.md, sha256 68efdf793010...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","doctor","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"4e80040a11ab6ae72d46b8d4487959caa396ddde34d00ebe15ecef1f4bbbb9ed","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot4.t27","health":"warn","module":"GftDot4"}],"description":"","symbols":[{"name":"gft_mul","line":16},{"name":"gft_add","line":35},{"name":"dot2","line":62},{"name":"on_comb","line":67}],"imports":[],"terms":["ternary","gft","dot4","mul","dot2","comb"]},{"id":"4ea7242baa7a03eeadf68af61c6d58551b24783880fa3319a2d0c34550ecdb44","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/softmax.t27","health":"ok","module":"Softmax"}],"description":"t27/specs/","symbols":[{"name":"ZERO","line":13},{"name":"MIN_TEMP","line":14},{"name":"SoftmaxConfig","line":20},{"name":"forward","line":31},{"name":"backward","line":36}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","softmax","zero","min","temp","config","forward","backward"]},{"id":"4f5f9b43b9ec8b0be6593775af54ff6721d169e5e2c33898a1443dcbdfe4d85d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_optimistic.t27","health":"ok","module":"TriComputeOptimistic"}],"description":"TRI-NET optimistic settlement lifecycle. The node's settle path is PESSIMISTIC: it recomputes every receipt before paying. That is safe but does not scale -- an optimistic path credits the reward PROVISIONALLY (with the executor's bond locked), opens a challenge window, and only a successful challenge (tri_compute_challenge) REVERSES the credit and slashes the bond; unchallenged receipts FINALIZE when the window closes. This is the compute analogue of an optimistic rollup (Keryx OPoI /","symbols":[{"name":"PENDING","line":16},{"name":"FINALIZED","line":17},{"name":"REVERSED","line":18},{"name":"provisional_balance","line":22},{"name":"window_open","line":31},{"name":"GFT16_ET","line":42},{"name":"BASE_WINDOW","line":43},{"name":"WINDOW_PER_TRIT","line":44},{"name":"window_for_rung","line":46},{"name":"window_open_rung","line":56},{"name":"settle_state","line":62},{"name":"balance_after_settle","line":76},{"name":"can_finalize","line":90}],"imports":[{"name":"base::types","line":14}],"terms":["net","compute","optimistic","finalized","reversed","provisional","balance","window","open","gft16","base","per","trit","rung","settle","state","finalize"]},{"id":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/d2d_routing.t27","health":"ok","module":"CoronaD2DRouting"}],"description":"specs/corona/d2d_routing.t27 Die-to-Die routing: Corona forwards format queries to Gamma for formats Gamma natively implements (no duplication).","symbols":[{"name":"GAMMA_NATIVE_CLUSTERS","line":35},{"name":"ROUTING_LOCAL","line":63},{"name":"ROUTING_D2D_GAMMA","line":64},{"name":"ROUTING_NOT_IMPLEMENTED","line":65},{"name":"ROUTING_INVALID","line":66},{"name":"D2D_MESH_MODULE","line":77},{"name":"D2D_MESH_OWNER","line":78},{"name":"D2D_MESH_LICENSE","line":79},{"name":"STANDALONE_LEGAL","line":90},{"name":"FULL_CATALOG_REQUIRES_GAMMA","line":95}],"imports":[{"name":"base::types","line":11},{"name":"corona::corona_oracle","line":12},{"name":"corona::rom_layout","line":13}],"terms":["corona","d2d","routing","d2drouting","gamma","native","clusters","local","implemented","invalid","mesh","owner","license","standalone","legal","full","catalog","requires"]},{"id":"4fa7ccadd44d000694a91d69bfeaef6080397ad16540b682430c2f813303db56","sources":[{"repo":"ghashtag/t27","path":"specs/api/tri_net_api.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["api","net"]},{"id":"5047ea1190cda85e3c57cdf6e65be0ed4fa22c52702ce20c446cf3b50f301b59","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_sgd_step.t27","health":"warn","module":"GftSgdStep"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"on_comb","line":108}],"imports":[],"terms":["ternary","gft","sgd","step","magadd","magsub","sadd","neg","magmul","smul","comb"]},{"id":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-wave-audit.t27","health":"ok","module":"skill_t27_wave_audit"}],"description":"specs/skills/t27-wave-audit.t27 -- skill t27/wave-audit Source of truth for the skill card on t27.ai (#/skills?skill=t27/wave-audit). The skill body lives in gHashTag/t27 at .claude/skills/wave-audit/SKILL.md (vendored copy: apps/website/public/skills/files/t27/wave-audit/SKILL.md, sha256 4cd0dd22105a...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","wave","audit","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/formats.t27","health":"ok","module":"Formats"}],"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","symbols":[{"name":"SignMask","line":27},{"name":"ExpMask","line":28},{"name":"MantMask","line":29},{"name":"ExpShift","line":31},{"name":"SignShift","line":32},{"name":"Bias","line":33},{"name":"ExpMax","line":35},{"name":"ExpMin","line":36},{"name":"gf16_to_f32","line":61},{"name":"f32_to_gf16","line":79},{"name":"f32_to_ternary","line":101},{"name":"ternary_to_f32","line":108},{"name":"Format","line":121},{"name":"format_bytes","line":175},{"name":"quantize_value","line":185},{"name":"original","line":460},{"name":"encoded","line":461},{"name":"decoded","line":462},{"name":"error","line":463},{"name":"p","line":468},{"name":"n","line":469},{"name":"p_decoded","line":470},{"name":"n_decoded","line":471},{"name":"values","line":476},{"name":"t","line":478},{"name":"recovered","line":479},{"name":"diff","line":480},{"name":"test_value","line":499},{"name":"test_value","line":510},{"name":"test_value","line":521},{"name":"test_trit","line":532}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11}],"terms":["euler","numeric","formats","sign","mask","exp","mant","shift","bias","max","min","gf16","f32","ternary","format","bytes","quantize","original","encoded","decoded","values","recovered","diff","trit"]},{"id":"50d838b5e5138ffeb2875b3a6c831f34ba6a2953a3086db6752b1a6b490213ba","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/ternary_isa_tb.t27","health":"ok","module":"Ternary_ISA_Testbench"}],"description":"t27/specs/fpga/testbench/ternary_isa_tb.t27 Ternary ISA Testbench Tests ternary instruction decode, ALU operations, and encoding","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"TRIT_POS","line":12},{"name":"TRIT_ZERO","line":13},{"name":"TRIT_NEG","line":14},{"name":"tick","line":31},{"name":"reset","line":36},{"name":"ternary_add","line":44},{"name":"ternary_mul","line":51},{"name":"ternary_neg","line":56}],"imports":[{"name":"fpga::ternary_isa::TernaryIsa","line":8}],"terms":["fpga","testbench","ternary","isa","clk","period","sim","timeout","trit","pos","zero","neg","tick","reset","mul"]},{"id":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sources":[{"repo":"ghashtag/t27","path":"specs/memory/semantic_search.t27","health":"ok","module":"SemanticSearch"}],"description":"Module: Semantic Search via Hippocampus Pattern Completion CA3 pattern completion via Schaffer collaterals analog: - Query embedding compared via cosine similarity normalized by PHI - O(log n) search via HNSW index approximation - Returns top-k formula matches with similarity scores","symbols":[{"name":"EMBEDDING_DIM","line":26},{"name":"MAX_CORPUS","line":29},{"name":"DEFAULT_K","line":32},{"name":"FormulaMatch","line":39},{"name":"SearchResult","line":48},{"name":"FormulaEmbedding","line":55},{"name":"SearchQuery","line":62},{"name":"compute_similarity","line":73},{"name":"cos_sim","line":74},{"name":"top_k","line":80},{"name":"semantic_search","line":89},{"name":"top_matches","line":100},{"name":"query","line":114},{"name":"corpus","line":118},{"name":"k","line":119},{"name":"result","line":120},{"name":"q","line":125},{"name":"t","line":126},{"name":"sim","line":127},{"name":"q","line":135},{"name":"t","line":136},{"name":"sim","line":137},{"name":"expected","line":138}],"imports":[{"name":"base::types::Float","line":16},{"name":"base::math::cosine_sim","line":17},{"name":"base::math::normalize_l2","line":18},{"name":"base::constants::PHI","line":19}],"terms":["memory","semantic","search","embedding","dim","max","corpus","default","formula","match","query","compute","similarity","cos","sim","top","matches","expected"]},{"id":"513d1e81f02cb450989ea83082948afcce37819434528fbed6b60930b2941fd8","sources":[{"repo":"ghashtag/t27","path":"specs/functions/neuro-image-generate.t27","health":"ok","module":"fn_neuro_image_generate"}],"description":"specs/functions/neuro-image-generate.t27 -- function neuro-image-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=neuro-image-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/neuroImageGeneration.ts#L56 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","neuro","image","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/bridge.t27","health":"warn","module":"TrinityMemoryBridgeSpec"}],"description":"specs/memory/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;","symbols":[{"name":"TMS_BRIDGE_PROTOCOL_VERSION","line":12},{"name":"TMS_BRIDGE_METHOD_COUNT","line":13},{"name":"TMS_BRIDGE_FORMAT_COUNT","line":14},{"name":"TMS_BRIDGE_CODEC_COUNT","line":15},{"name":"TMS_BRIDGE_LIMIT_FIELD_COUNT","line":16},{"name":"BridgeMethod","line":18},{"name":"BridgeBackend","line":29},{"name":"TMS_RPC_ENVELOPE_JSONRPC","line":38},{"name":"TMS_RPC_ENVELOPE_ID","line":39},{"name":"TMS_RPC_ENVELOPE_METHOD","line":40},{"name":"TMS_RPC_ENVELOPE_PARAMS","line":41},{"name":"TMS_RPC_ENVELOPE_REQUIRED","line":42},{"name":"TMS_RPC_ENVELOPE_ALLOWED","line":43},{"name":"TMS_RPC_JSON_MAX_DEPTH","line":44},{"name":"TMS_RPC_ID_MAX","line":45},{"name":"TMS_RPC_ID_MIN","line":46},{"name":"TMS_RPC_ID_MAX_CODEPOINTS","line":47},{"name":"TMS_RPC_CLIENT_ID_HEX_CHARS","line":48},{"name":"TMS_RPC_FIELD_DATA","line":51},{"name":"TMS_RPC_FIELD_HANDLE","line":52},{"name":"TMS_RPC_FIELD_OFFSET","line":53},{"name":"TMS_RPC_FIELD_LENGTH","line":54},{"name":"TMS_RPC_FIELD_TENSOR_NAME","line":55},{"name":"TMS_RPC_FIELD_ACTIVATIONS","line":56},{"name":"TMS_BRIDGE_READ_ALLOWED_FIELDS","line":57},{"name":"TMS_BRIDGE_DOT_REQUIRED_FIELDS","line":58},{"name":"TMS_RPC_ERR_PARSE","line":61},{"name":"TMS_RPC_ERR_INVALID_REQUEST","line":62},{"name":"TMS_RPC_ERR_METHOD_NOT_FOUND","line":63},{"name":"TMS_RPC_ERR_INVALID_PARAMS","line":64},{"name":"TMS_RPC_ERR_INTERNAL","line":65},{"name":"TMS_RPC_ERR_NOT_FOUND","line":66},{"name":"TMS_RPC_ERR_LIMIT","line":67},{"name":"TMS_RPC_ERR_TRANSPORT","line":68},{"name":"TMS_HTTP_OK","line":70},{"name":"TMS_HTTP_BAD_REQUEST","line":71},{"name":"TMS_HTTP_FORBIDDEN","line":72},{"name":"TMS_HTTP_METHOD_NOT_ALLOWED","line":73},{"name":"TMS_HTTP_PAYLOAD_TOO_LARGE","line":74},{"name":"TMS_HTTP_UNSUPPORTED_MEDIA_TYPE","line":75},{"name":"TMS_HTTP_HEADERS_TOO_LARGE","line":76},{"name":"TMS_HTTP_MAX_HEADER_BYTES","line":77},{"name":"TMS_HTTP_MAX_HEADER_COUNT","line":78},{"name":"TMS_HTTP_MAX_CONTENT_LENGTH_DIGITS","line":79},{"name":"TMS_HTTP_MAX_PORT","line":80},{"name":"HttpRejection","line":82},{"name":"TMS_BRIDGE_DEFAULT_MAX_REQUEST_BYTES","line":94},{"name":"TMS_BRIDGE_DEFAULT_MAX_OBJECT_BYTES","line":95},{"name":"TMS_BRIDGE_DEFAULT_MAX_STORAGE_BYTES","line":96},{"name":"TMS_BRIDGE_DEFAULT_MAX_OBJECTS","line":97},{"name":"TMS_BRIDGE_DEFAULT_MAX_TRITS","line":98},{"name":"TMS_BRIDGE_DEFAULT_TIMEOUT_SECONDS","line":99},{"name":"TMS_BRIDGE_CLIENT_MAX_RESPONSE_BYTES","line":100},{"name":"TMS_BRIDGE_REQUEST_HEADER_ALLOWANCE","line":101},{"name":"TMS_BRIDGE_RESPONSE_BASE_BYTES","line":102},{"name":"TMS_BRIDGE_RESPONSE_BYTES_PER_OBJECT_BYTE","line":103},{"name":"TMS_BRIDGE_RESPONSE_BYTES_PER_TRIT","line":104},{"name":"TMS_BRIDGE_HANDLE_BYTES","line":108},{"name":"TMS_BRIDGE_HANDLE_HEX_CHARS","line":109},{"name":"TMS_BRIDGE_HANDLE_VERSION_CHAR_INDEX","line":110},{"name":"TMS_BRIDGE_HANDLE_VARIANT_CHAR_INDEX","line":111},{"name":"TMS_BRIDGE_HANDLE_UNIQUENESS_ATTEMPTS","line":112},{"name":"TMS_BRIDGE_B64_INVALID","line":116},{"name":"TMS_BRIDGE_B64_NONCANONICAL","line":117},{"name":"TMS_BRIDGE_B64_SHORT_OUTPUT","line":118},{"name":"TMS_BRIDGE_TMEM_COUNT_OFFSET","line":119},{"name":"TMS_BRIDGE_TMEM_TRIT_CHECK_MIN_BYTES","line":120},{"name":"TMS_BRIDGE_ACTIVATION_MIN","line":124},{"name":"TMS_BRIDGE_ACTIVATION_MAX","line":125},{"name":"TMS_BRIDGE_ACTIVATION_MAGNITUDE","line":126},{"name":"TMS_BRIDGE_TENSOR_NAME_MAX_CODEPOINTS","line":127},{"name":"TMS_BRIDGE_DOT_MAX_RANK","line":128},{"name":"TMS_BRIDGE_DOT_MAX_WIDTH","line":129},{"name":"TMS_BRIDGE_DOT_NO_SCALE_AXIS","line":130},{"name":"TMS_BRIDGE_IDENTITY_BYTES","line":134},{"name":"TMS_BRIDGE_IDENTITY_ANCHOR","line":135},{"name":"tms_bridge_request_status","line":138},{"name":"tms_bridge_request_error","line":144},{"name":"tms_http_rejection_status","line":150},{"name":"tms_http_rejection_error","line":160},{"name":"tms_rpc_id_integer_valid","line":166},{"name":"tms_rpc_id_string_valid","line":170},{"name":"tms_rpc_envelope_complete","line":174},{"name":"tms_bridge_required_fields","line":179},{"name":"tms_bridge_allowed_fields","line":186},{"name":"tms_bridge_params_valid","line":191},{"name":"tms_bridge_handle_char_valid","line":198},{"name":"tms_bridge_handle_layout_valid","line":202},{"name":"tms_bridge_read_range_valid","line":207},{"name":"tms_bridge_activation_valid","line":212},{"name":"tms_bridge_dot_layout_valid","line":216},{"name":"tms_bridge_dot_rows","line":223},{"name":"tms_bridge_dot_row","line":228},{"name":"tms_bridge_accumulator_bound","line":235},{"name":"tms_bridge_b64_encoded_size","line":239},{"name":"tms_bridge_storage_accepts","line":243},{"name":"tms_bridge_tmem_trit_limit_exceeded","line":250},{"name":"tms_bridge_request_capacity","line":254},{"name":"tms_bridge_response_capacity","line":258}],"imports":[],"terms":["dmitrii","memory","bridge","tms","protocol","method","count","format","codec","limit","field","backend","rpc","envelope","jsonrpc","params","required","allowed","json","max","depth","min","codepoints","client","hex","chars","data","handle","offset","length","tensor","activations","read","fields","dot","err","parse","invalid","request","found","internal","transport","http","bad","forbidden","payload","too","large","unsupported","media","headers","header","bytes","content","digits","port","rejection","default","object","storage","objects","trits","timeout","seconds","response","allowance","base","per","byte","trit","char","index","variant","uniqueness","attempts","b64","noncanonical","short","tmem","activation","magnitude","rank","width","scale","axis","identity","anchor","status","integer","valid","complete","layout","range","rows","row","accumulator","bound","encoded","size","accepts","exceeded","capacity"]},{"id":"5189c2771d5edfddea6da5b8d20ee348fd44b3bd83e034188081e4a79f64fd40","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/frame_buffer.t27","health":"ok","module":"FrameBuffer"}],"description":"Frame buffer - minimal version","symbols":[{"name":"get_src","line":6},{"name":"get_dst","line":10},{"name":"get_ttl","line":14},{"name":"get_valid","line":18},{"name":"create_meta","line":22},{"name":"empty_meta","line":26}],"imports":[{"name":"base::types","line":4}],"terms":["net","frame","buffer","get","dst","ttl","valid","create","meta","empty"]},{"id":"5195f89bfc0b1f3ed434ef6371ba940a629ba01eee7a3746f6f14ec0cde9a141","sources":[{"repo":"ghashtag/t27","path":"specs/physics/formula_discovery.t27","health":"ok","module":"FormulaDiscovery"}],"description":"Formula Discovery v1.0 — ULTRA ENGINE Specification","symbols":[{"name":"PHI","line":9},{"name":"PI","line":10},{"name":"E","line":11},{"name":"S1_gamma","line":17},{"name":"PM1b_alpha_inv_exact","line":18},{"name":"N1_alpha_s","line":19},{"name":"N2_Tc","line":20},{"name":"CKM1_theta_C","line":21},{"name":"CKM2_V_cb","line":22},{"name":"PMNS2_sin2th23","line":23},{"name":"PMNS3_delta_CP","line":24},{"name":"PMNS4_sin2th12","line":25},{"name":"H1_mH_mZ","line":26},{"name":"P10_V_ud","line":29},{"name":"P11_V_cs","line":30},{"name":"P12_V_td","line":31},{"name":"P13_sin2th12_chimera","line":32},{"name":"P14_delta_CP_rad","line":33},{"name":"P15_ms_mmu","line":34},{"name":"P16_mb_mt","line":35},{"name":"P17_Omega_b","line":36},{"name":"P18_ns","line":37},{"name":"chimera_mul","line":42},{"name":"chimera_div","line":46},{"name":"chimera_add","line":53},{"name":"chimera_sub","line":57},{"name":"chimera_sin","line":63},{"name":"chimera_cos","line":67},{"name":"chimera_ln","line":73},{"name":"chimera_exp","line":80},{"name":"chimera_pow","line":86},{"name":"generate_basis","line":93}],"imports":[{"name":"math::constants","line":6}],"terms":["physics","formula","discovery","phi","gamma","pm1b","alpha","inv","exact","ckm1","theta","ckm2","pmns2","sin2th23","pmns3","delta","pmns4","sin2th12","p10","p11","p12","p13","chimera","p14","rad","p15","mmu","p16","p17","omega","p18","mul","div","sub","sin","cos","exp","pow","generate","basis"]},{"id":"51a2f2cad1da2385b6c7b16ab1e4721df80fe98918a60a3410c88fe14da4d743","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/synth.t27","health":"ok","module":"tool_tri_synth"}],"description":"specs/tools/tri/synth.t27 -- tool tri/synth, the `tri synth` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/synth). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["synth","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/_tmp_pipeline_import.t27","health":"ok","module":"igla-coder-pipeline"}],"description":"t27/specs/igla/coder/pipeline.t27 End-to-end inference pipeline: prompt -> tokenize -> forward -> decode Conceptual stubs for all stages requiring runtime support (BPE, model weights).","symbols":[{"name":"PipelineConfig","line":21},{"name":"PipelineResult","line":28},{"name":"Port","line":34},{"name":"ModuleSpec","line":41},{"name":"KnowledgeGraph","line":49},{"name":"Contract","line":57},{"name":"tokenize_prompt","line":73},{"name":"tokenize_prompt_inner","line":77},{"name":"tokenize_prompt_hybrid","line":86},{"name":"run_forward","line":93},{"name":"generate_next_token_from_logits","line":100},{"name":"generate_tokens_recursive","line":107},{"name":"generate_tokens_autoregressive","line":118},{"name":"decode_logits","line":133},{"name":"decode_tokens","line":148},{"name":"fallback_to_template","line":157},{"name":"has_substring","line":170},{"name":"match_at","line":180},{"name":"generate_verilog_ai","line":197},{"name":"generate_verilog_ai_autoregressive","line":216},{"name":"generate_verilog_ai_with_meta","line":234},{"name":"select_best_candidate","line":242},{"name":"select_best_candidate_inner","line":246},{"name":"beam_search_prm_pipeline","line":257},{"name":"prm_scored_pipeline","line":273},{"name":"has_star_inner","line":287},{"name":"score_syntax_correctness","line":297},{"name":"score_sacred_constraint","line":309},{"name":"score_synthesis_success","line":317},{"name":"reject_resample","line":326},{"name":"mutate_for_correctness","line":339},{"name":"generate_verilog_ai_with_steering","line":349},{"name":"generate_verilog_ai_with_diversity_and_sacred","line":369},{"name":"select_best_synth_candidate","line":382},{"name":"decompose_spec_to_modules","line":399},{"name":"build_knowledge_graph","line":420},{"name":"build_edges_from_shared_ports","line":429},{"name":"find_shared_port_names","line":439},{"name":"wire_modules","line":451},{"name":"declare_top_ports","line":459},{"name":"declare_module_ports","line":466},{"name":"instantiate_modules","line":473},{"name":"instantiate_ports","line":481},{"name":"generate_hierarchical_verilog","line":490},{"name":"generate_module_body","line":499},{"name":"resolve_port_widths","line":524},{"name":"generate_module_stubs","line":528},{"name":"connect_modules_by_name","line":540},{"name":"connect_modules_by_name_inner","line":545},{"name":"validate_kg_connectivity","line":558},{"name":"validate_modules_have_ports","line":564},{"name":"AgentAction","line":575},{"name":"orchestrate_agents_with_ppo","line":584},{"name":"compute_team_match_reward","line":593},{"name":"count_char_matches","line":604},{"name":"select_agent_by_ppo_policy","line":615},{"name":"select_generator_agent","line":620},{"name":"count_keyword_diffs","line":633},{"name":"diversity_score","line":647},{"name":"generate_diverse_candidates_inner","line":656},{"name":"generate_diverse_candidates","line":664},{"name":"reject_resample_for_sacred_inner","line":670},{"name":"reject_resample_for_sacred","line":680},{"name":"adaptive_temperature_by_sacred_score","line":687},{"name":"check_balanced_braces","line":693},{"name":"temporal_trace_check","line":707},{"name":"generate_verify_debug","line":717},{"name":"generate_verify_debug_inner","line":721},{"name":"preprocess_pipeline_integration","line":737},{"name":"contrastive_learning_pair","line":748},{"name":"perturb_rtl_minimally","line":759},{"name":"contrastive_loss","line":771}],"imports":[{"name":"base::types","line":8},{"name":"igla::race::bram_weights","line":9},{"name":"igla::coder::arch","line":10},{"name":"igla::coder::tokenizer","line":11},{"name":"igla::coder::prm","line":12},{"name":"igla::coder::eval","line":13},{"name":"igla::coder::dataset","line":14}],"terms":["igla","coder","tmp","pipeline","import","config","port","knowledge","graph","contract","tokenize","prompt","inner","hybrid","forward","generate","token","logits","tokens","recursive","autoregressive","decode","fallback","template","substring","match","verilog","meta","select","best","candidate","beam","search","prm","scored","star","score","syntax","correctness","sacred","constraint","synthesis","success","reject","resample","mutate","steering","diversity","synth","decompose","modules","build","edges","shared","ports","find","wire","declare","top","instantiate","hierarchical","resolve","widths","stubs","connect","validate","connectivity","action","orchestrate","agents","ppo","compute","team","reward","count","char","matches","policy","generator","keyword","diffs","diverse","candidates","adaptive","temperature","balanced","braces","temporal","trace","verify","debug","preprocess","integration","contrastive","learning","pair","perturb","rtl","minimally","loss"]},{"id":"51c140fd215a3cca5cf1fe479e531f1d39706abf2b670a8ecd6cdd4bd56037f0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/template.t27","health":"ok","module":"TriTemplate"}],"description":"t27/specs/","symbols":[{"name":"Template","line":13},{"name":"TemplatePart","line":17},{"name":"compile","line":28},{"name":"render","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","template","part","compile","render"]},{"id":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_monitoring.t27","health":"ok","module":"HealthMonitoring"}],"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","symbols":[{"name":"MAX_CHECKS","line":7},{"name":"HEALTH_CRITICAL","line":8},{"name":"HEALTH_WARNING","line":9},{"name":"HEALTH_HEALTHY","line":10},{"name":"CHECK_INTERVAL","line":11},{"name":"create_health_check","line":14},{"name":"get_check_type","line":21},{"name":"get_check_result","line":25},{"name":"get_check_value","line":29},{"name":"get_check_timestamp","line":33},{"name":"CHECK_CPU","line":38},{"name":"CHECK_MEMORY","line":39},{"name":"CHECK_DISK","line":40},{"name":"CHECK_NETWORK","line":41},{"name":"CHECK_TEMPERATURE","line":42},{"name":"CHECK_POWER","line":43},{"name":"CHECK_CONNECTIVITY","line":44},{"name":"CHECK_PROCESS","line":45},{"name":"RESULT_PASS","line":48},{"name":"RESULT_WARN","line":49},{"name":"RESULT_FAIL","line":50},{"name":"RESULT_SKIP","line":51},{"name":"create_health_array","line":56},{"name":"get_health_check","line":60},{"name":"update_health_check","line":68},{"name":"calculate_overall_health","line":90},{"name":"count_failed_checks","line":122},{"name":"count_warning_checks","line":136},{"name":"is_check_failing","line":150},{"name":"get_health_percentage","line":161}],"imports":[{"name":"base::types","line":5}],"terms":["net","health","monitoring","max","checks","critical","warning","healthy","interval","create","get","timestamp","cpu","memory","disk","network","temperature","power","connectivity","process","pass","warn","fail","skip","array","calculate","overall","count","failed","failing","percentage"]},{"id":"524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timing_closure.t27","health":"ok","module":"TimingClosure"}],"description":"Timing closure - critical path analysis and optimization Tests timing analysis and pipeline insertion strategies","symbols":[{"name":"TIMING_PASS","line":8},{"name":"TIMING_MARGINAL","line":9},{"name":"TIMING_FAIL","line":10},{"name":"MIN_PIPELINE","line":13},{"name":"MAX_PIPELINE","line":14},{"name":"TARGET_FREQ_LOW","line":17},{"name":"TARGET_FREQ_MID","line":18},{"name":"TARGET_FREQ_HIGH","line":19},{"name":"create_critical_path","line":22},{"name":"extract_delay","line":28},{"name":"extract_stages","line":32},{"name":"extract_slack","line":36},{"name":"grade_timing","line":41},{"name":"calculate_pipeline_stages","line":53},{"name":"retiming_needed","line":73},{"name":"balance_registers","line":78},{"name":"compare_critical_paths","line":83},{"name":"create_timing_report","line":92},{"name":"extract_grade","line":98},{"name":"extract_max_freq","line":102},{"name":"extract_critical_paths","line":106},{"name":"timing_closure_achieved","line":111}],"imports":[{"name":"base::types","line":5}],"terms":["net","timing","closure","pass","marginal","fail","min","pipeline","max","target","freq","low","mid","high","create","critical","path","extract","delay","stages","slack","grade","calculate","retiming","needed","balance","registers","compare","paths","report","achieved"]},{"id":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/stdlib.t27","health":"ok","module":"Stdlib"}],"description":"t27/specs/fpga/stdlib.t27 T27 FPGA Standard Library IP Catalog Reusable hardware IP cores with resource utilization estimates Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"IpKind","line":12},{"name":"ResourceEstimate","line":30},{"name":"IpCore","line":40},{"name":"IpCatalog","line":52},{"name":"BoardResources","line":60},{"name":"zero_resources","line":71},{"name":"resources","line":81},{"name":"ip_core","line":91},{"name":"empty_catalog","line":103},{"name":"arty_a7_resources","line":145},{"name":"xc7a100t_resources","line":156},{"name":"total_luts","line":169},{"name":"total_ffs","line":179},{"name":"total_bram18","line":189},{"name":"total_dsp48","line":199},{"name":"fits_board","line":209},{"name":"luts_remaining","line":225},{"name":"utilization_percent","line":232},{"name":"validate_ip","line":241}],"imports":[],"terms":["fpga","stdlib","kind","resource","estimate","catalog","board","resources","zero","empty","arty","xc7a100t","total","luts","ffs","bram18","dsp48","fits","remaining","utilization","percent","validate"]},{"id":"52849a662623d3213c2b5f2c397c84a8f75045b867bb210ca9f322a4527d30f4","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_exp2.t27","health":"warn","module":"GftExp2"}],"description":"","symbols":[{"name":"pow2_frac","line":17},{"name":"on_comb","line":27}],"imports":[],"terms":["ternary","gft","exp2","pow2","frac","comb"]},{"id":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/dft.t27","health":"ok","module":"DFT"}],"description":"t27/specs/fpga/dft.t27 T27 Design-for-Test Specification Scan chains, BIST controllers, JTAG TAP, test coverage estimation Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"ScanChain","line":12},{"name":"scan_chain","line":18},{"name":"scan_chain_cycles","line":26},{"name":"scan_chain_bytes","line":30},{"name":"BistKind","line":36},{"name":"BistCtrl","line":44},{"name":"memory_bist","line":51},{"name":"logic_bist","line":60},{"name":"bist_cycles","line":69},{"name":"bist_coverage","line":73},{"name":"JtagTap","line":82},{"name":"jtag_tap","line":90},{"name":"tap_total_bits","line":100},{"name":"tap_state_count","line":104},{"name":"TestCoverage","line":110},{"name":"test_coverage","line":117},{"name":"is_acceptable","line":126},{"name":"validate_chain","line":132},{"name":"validate_bist","line":143},{"name":"validate_tap","line":154}],"imports":[],"terms":["fpga","dft","scan","chain","cycles","bytes","bist","kind","ctrl","memory","logic","jtag","tap","total","bits","state","count","acceptable","validate"]},{"id":"52c87609efcb16a0ddd296875010488540b619c95b16e1967bc26a4a488f856e","sources":[{"repo":"ghashtag/t27","path":"specs/agents/k.t27","health":"ok","module":"agent_k"}],"description":"specs/agents/k.t27 -- agent t27/K, letter K of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/K). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent K - Kappa (Kernel)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"52e2adbd19b94526511c5ceace12ae6a798212d379a78eacc965258c52983ee2","sources":[{"repo":"ghashtag/t27","path":"specs/trinet/etx.t27","health":"ok","module":"TriNetEtx"}],"description":"t27/specs/trinet/etx.t27 The ETX link metric of gHashTag/tri-net, extracted as free functions. WHY THIS EXISTS. tri-net#62 mapped which of src/*.rs can become .t27 and recommended \"SELECTIVE extraction of pure logic into specs, not a wholesale rewrite\". routing.rs is marked LIKELY there. Its arithmetic is pure; what is not expressible is the shape around it -- `impl DeliveryRatio` and","symbols":[{"name":"ETX_OPTIMISTIC","line":30},{"name":"ETX_DEAD_EPS","line":31},{"name":"ALPHA_MIN","line":32},{"name":"ALPHA_MAX","line":33},{"name":"ewma_alpha","line":36},{"name":"ewma_step","line":51},{"name":"ewma_kill","line":56},{"name":"link_dead","line":61},{"name":"link_etx","line":66}],"imports":[],"terms":["trinet","etx","net","optimistic","dead","eps","alpha","min","max","ewma","step","kill","link"]},{"id":"52f14c10cd747985da3a530220dbcd8de5079ded7c63466f3524939c07beee1c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_dfs.t27","health":"ok","module":"TriGraphDfs"}],"description":"t27/specs/","symbols":[{"name":"DFSResult","line":13},{"name":"traverse","line":24}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","dfs","dfsresult","traverse"]},{"id":"5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_sha256.t27","health":"ok","module":"TriSha256"}],"description":"SHA-256, single 512-bit block, unrolled (t27 has no loops/arrays). Pure u32 add/rotate/xor/shr -- no multiply. Verified against the known sha256(\"abc\") vector. This is the chain-verifiable hash for the DePIN Merkle commitments (Solana uses sha256 natively). AUTHORED via a one-shot text generator; the .t27 is the artifact.","symbols":[{"name":"rotr","line":9},{"name":"shr","line":10},{"name":"ch","line":11},{"name":"maj","line":12},{"name":"bsig0","line":13},{"name":"bsig1","line":14},{"name":"ssig0","line":15},{"name":"ssig1","line":16},{"name":"sha256_compress","line":22},{"name":"sha256_word","line":739},{"name":"SHA_PAD_MARK","line":747},{"name":"sha256_pad2_word","line":748}],"imports":[{"name":"base::types","line":7}],"terms":["net","sha256","rotr","shr","maj","bsig0","bsig1","ssig0","ssig1","compress","word","sha","pad","mark","pad2"]},{"id":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","sources":[{"repo":"ghashtag/t27","path":"specs/base/debounce.t27","health":"ok","module":"base-debounce"}],"description":"base/debounce.t27 — φ-Structured Debouncing Trinity S³AI — Rate Limiting and Debouncing","symbols":[{"name":"PHI","line":15},{"name":"PHI_INV","line":18},{"name":"DEBOUNCE_DELAY_MS","line":21},{"name":"DEBOUNCE_WINDOW_MS","line":24},{"name":"Debouncer","line":31},{"name":"debouncer_init","line":41},{"name":"debouncer_should_exec","line":50},{"name":"now","line":55},{"name":"elapsed","line":56},{"name":"debouncer_record_exec","line":62},{"name":"get_timestamp_ms","line":70},{"name":"debouncer","line":87}],"imports":[{"name":"math::sacred_physics","line":8}],"terms":["base","debounce","phi","inv","delay","window","debouncer","init","exec","elapsed","record","get","timestamp"]},{"id":"532a215e4f4848a81dce61832d5469b4f5c97fa359b981754f641529e6178fa5","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/cordic.t27","health":"ok","module":"igla-race-cordic"}],"description":"t27/specs/igla/race/cordic.t27 CORDIC sacred opcode for IGLA RACE -- shift-add sin/cos NOTE: Uses recursion instead of loops to avoid t27c parser truncation. All shift operations are emulated via precomputed POW2_NEG table.","symbols":[{"name":"CordicConfig","line":17},{"name":"arctan_table_entry","line":27},{"name":"pow2_neg_entry","line":48},{"name":"cordic_sign","line":72},{"name":"sqrt_approx_inner","line":77},{"name":"sqrt_approx","line":85},{"name":"cordic_gain","line":99},{"name":"cordic_gain_inner","line":103},{"name":"cordic_sin_cos","line":119},{"name":"cordic_inner","line":125},{"name":"cordic_outputs_in_bounds","line":136},{"name":"cordic_sin_near_zero","line":145},{"name":"cordic_cos_near_one","line":155},{"name":"cordic_sin_near_one","line":165},{"name":"cordic_cos_near_zero","line":175}],"imports":[{"name":"base::types","line":10},{"name":"math::constants","line":11}],"terms":["igla","race","cordic","config","arctan","table","entry","pow2","neg","sign","sqrt","approx","inner","gain","sin","cos","outputs","bounds","near","zero","one"]},{"id":"533eeb860d6bc3f69d612c3d2630965bf50b8533f50c4f4900b25ab42e838db2","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/hooks.t27","health":"ok","module":"tool_tri_hooks"}],"description":"specs/tools/tri/hooks.t27 -- tool tri/hooks, the `tri hooks` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/hooks). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["hooks","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"53b65f5dc6e1f5dc9f3ecc755cc31e2fdcf455106dba6d59c1423ea0ddda0214","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/http.t27","health":"ok","module":"TriHttp"}],"description":"t27/specs/","symbols":[{"name":"HttpMethod","line":13},{"name":"HttpStatus","line":17},{"name":"Url","line":22},{"name":"method_to_string","line":36},{"name":"status_from_code","line":41},{"name":"is_success","line":46},{"name":"is_redirect","line":51},{"name":"is_client_error","line":56},{"name":"is_server_error","line":61},{"name":"parse_url","line":66}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","http","method","status","url","success","redirect","client","parse"]},{"id":"53f3415e61b946dfe7216c4d03e52cd53225207b9a8741bf9904dab9092eb357","sources":[{"repo":"ghashtag/t27","path":"specs/functions/broadcast-message-send.t27","health":"ok","module":"fn_broadcast_message_send"}],"description":"specs/functions/broadcast-message-send.t27 -- function broadcast-message-send (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=broadcast-message-send). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/broadcast/broadcastMessage.ts#L22 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","broadcast","send","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"5469641560c8dc73d41597e61dfd5764e82499c451e3bc22ed9e8ddaec2f77f6","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/drowsy_ret.t27","health":"ok","module":"sacred-drowsy_ret"}],"description":"","symbols":[{"name":"OP_DROWSY_RET","line":9},{"name":"DROWSY_STATE_BITS","line":11},{"name":"RET_REASON_BITS","line":12},{"name":"DROWSY_ACTIVE","line":14},{"name":"DROWSY_LIGHT","line":15},{"name":"DROWSY_DEEP","line":16},{"name":"DROWSY_OFF","line":17},{"name":"DROWSY_HIBERNATE","line":18},{"name":"DROWSY_CRITICAL","line":19},{"name":"DROWSY_MAX","line":20},{"name":"RET_WAKE","line":22},{"name":"RET_TIMER","line":23},{"name":"RET_INTERRUPT","line":24},{"name":"RET_ERROR","line":25},{"name":"RET_POWER","line":26},{"name":"RET_MANUAL","line":27},{"name":"RET_MAX","line":28},{"name":"WAKE_CYCLES","line":30},{"name":"DEEP_WAKE_CYCLES","line":31},{"name":"DrowsyState","line":37},{"name":"RetReason","line":46},{"name":"DrowsyConfig","line":55},{"name":"DrowsyStatus","line":63},{"name":"WakeCondition","line":71},{"name":"drowsy_is_active","line":84},{"name":"drowsy_is_drowsy","line":90},{"name":"drowsy_is_off","line":96},{"name":"drowsy_is_critical","line":102},{"name":"drowsy_can_enter_light","line":108},{"name":"drowsy_can_enter_deep","line":114},{"name":"drowsy_wake_cycles","line":120},{"name":"drowsy_config_init","line":134},{"name":"drowsy_config_disable","line":146},{"name":"drowsy_config_light_only","line":158},{"name":"drowsy_status_init","line":174},{"name":"drowsy_status_enter_light","line":186},{"name":"drowsy_status_enter_deep","line":201},{"name":"drowsy_status_wake","line":216},{"name":"drowsy_status_enter_critical","line":228},{"name":"drowsy_status_enter_off","line":240},{"name":"drowsy_wake_condition_init","line":256},{"name":"drowsy_should_wake","line":267},{"name":"drowsy_can_wake_critical","line":273},{"name":"drowsy_wake_from_condition","line":279},{"name":"drowsy_update_duration","line":299},{"name":"elapsed","line":310},{"name":"drowsy_check_threshold","line":322},{"name":"threshold","line":325},{"name":"encode_drowsy_ret","line":337},{"name":"op","line":339},{"name":"reason_field","line":340},{"name":"state_field","line":341},{"name":"duration_field","line":342},{"name":"decode_drowsy_ret","line":348},{"name":"reason","line":349},{"name":"state","line":350},{"name":"duration","line":351}],"imports":[],"terms":["euler","fpga","drowsy","ret","sacred","state","bits","reason","active","light","deep","off","hibernate","critical","max","wake","timer","interrupt","power","manual","cycles","config","status","condition","enter","init","disable","duration","elapsed","threshold","encode","field","decode"]},{"id":"5481f5ec801d6a0206856c7dbf3780a4561037a33bf159b7aa356616ad9c4abc","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft256.t27","health":"ok","module":"triformat_gft256"}],"description":"gft256.t27 -- GF-T256: the golden-ratio ternary ladder, 256-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft256","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bridge.t27","health":"warn","module":"FPGA_Bridge"}],"description":"t27/specs/fpga/bridge.t27 FPGA Communication Bridge Specification Combines UART and SPI for host and peripheral communication","symbols":[{"name":"RX_BUFFER_SIZE","line":19},{"name":"TX_BUFFER_SIZE","line":20},{"name":"SPI_BUFFER_SIZE","line":21},{"name":"MAX_PACKET_SIZE","line":24},{"name":"PACKET_TIMEOUT","line":25},{"name":"OP_MAC_MUL","line":28},{"name":"OP_MAC_MAC","line":29},{"name":"OP_MAC_MACC","line":30},{"name":"OP_MAC_DOT","line":31},{"name":"NUM_MAC_UNITS","line":32},{"name":"BRIDGE_IDLE","line":39},{"name":"BRIDGE_RX","line":40},{"name":"BRIDGE_PARSE","line":41},{"name":"BRIDGE_TX","line":42},{"name":"BRIDGE_SPI","line":43},{"name":"BRIDGE_MAC","line":44},{"name":"Bridge_Unit","line":47},{"name":"buffer_write","line":88},{"name":"new_head","line":103},{"name":"buffer_read","line":113},{"name":"data","line":119},{"name":"new_tail","line":120},{"name":"buffer_count","line":126},{"name":"bridge_rx_available","line":136},{"name":"bridge_tx_space","line":142},{"name":"PKT_UART_DATA","line":151},{"name":"PKT_SPI_XFER","line":152},{"name":"PKT_MAC_OP","line":153},{"name":"PKT_STATUS","line":154},{"name":"PKT_CONFIG","line":155},{"name":"bridge_parse_header","line":161},{"name":"ptype","line":166},{"name":"plen","line":167},{"name":"bridge_process_payload","line":185},{"name":"bridge_handle_uart_data","line":227},{"name":"result_read","line":230},{"name":"data","line":231},{"name":"ok","line":236},{"name":"new_head","line":237},{"name":"bridge_handle_spi_xfer","line":247},{"name":"cs_sel","line":252},{"name":"data_l","line":253},{"name":"data_h","line":254},{"name":"data","line":257},{"name":"bridge_handle_mac_op","line":270},{"name":"op_byte","line":279},{"name":"unit_byte","line":282},{"name":"a_l","line":285},{"name":"a_h","line":288},{"name":"b_l","line":291},{"name":"b_h","line":294},{"name":"operand_a","line":303},{"name":"operand_b","line":304},{"name":"acc","line":317},{"name":"bridge_handle_status","line":331},{"name":"status","line":333},{"name":"bridge_handle_config","line":351},{"name":"cfg_byte","line":352}],"imports":[{"name":"base::types","line":9},{"name":"fpga::uart::UART_Bridge","line":10},{"name":"fpga::spi::SPI_Master","line":11},{"name":"fpga::mac::ZeroDSP_MAC","line":12}],"terms":["fpga","bridge","buffer","size","spi","max","packet","timeout","mac","mul","macc","dot","num","units","idle","parse","unit","write","head","read","data","tail","count","available","space","pkt","uart","xfer","status","config","header","ptype","plen","process","payload","handle","sel","byte","operand","acc","cfg"]},{"id":"54be6db52c95054eb2850c805fe15244d3e4fa7efab696ae26b3f2ca5bfa4ab7","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_mac.t27","health":"warn","module":"TernaryMac"}],"description":"","symbols":[{"name":"tmul","line":3},{"name":"tp","line":10},{"name":"dot27","line":15},{"name":"on_comb","line":43}],"imports":[],"terms":["ternary","mac","tmul","dot27","comb"]},{"id":"54d9c2d81be0a306a311a4e50ec767e81459c14f482a243a10e873a7654fa3ff","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/roadmap.t27","health":"ok","module":"IGLARoadmap"}],"description":"t27/specs/","symbols":[{"name":"Phase","line":13},{"name":"Milestone","line":21},{"name":"RoadmapStatus","line":28},{"name":"next_phase","line":39},{"name":"progress","line":44},{"name":"is_blocked","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["igla","training","roadmap","iglaroadmap","phase","milestone","status","progress","blocked"]},{"id":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sources":[{"repo":"ghashtag/trinity","path":"trinity/t27/specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":16},{"name":"PHI_SQ","line":20},{"name":"PhiSplitResult","line":39},{"name":"phi_split","line":46},{"name":"available","line":47},{"name":"phi_sq","line":48},{"name":"exp_raw","line":51},{"name":"exp_bits","line":52},{"name":"mant_bits","line":55},{"name":"ratio","line":57},{"name":"phi_dist","line":58},{"name":"FormatComparison","line":72},{"name":"verify_phi_split","line":83},{"name":"phi_optimality_proof","line":172},{"name":"sacred_connection","line":204},{"name":"compute_phi_distance","line":212},{"name":"ratio","line":213},{"name":"is_phi_optimal","line":217},{"name":"recommend_format","line":221},{"name":"round","line":229},{"name":"abs","line":235},{"name":"pow","line":242}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","optimality","proof","sacred","connection","compute","distance","optimal","recommend","round","abs","pow"]},{"id":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","sources":[{"repo":"ghashtag/t27","path":"specs/sync/schema.t27","health":"warn","module":"sync-schema"}],"description":"sync/schema.t27 — Sync Schema Specification Sync ID, state, event types for change synchronization","symbols":[{"name":"SYNC_ID_MAX_LEN","line":19},{"name":"SYNC_TIMEOUT_MS","line":22},{"name":"MAX_CONCURRENT_SYNCS","line":25},{"name":"STATE_PENDING_TIMEOUT_MS","line":28},{"name":"CHECKPOINT_INTERVAL","line":31},{"name":"SyncID","line":38},{"name":"SyncOpType","line":41},{"name":"SyncState","line":50},{"name":"SyncEvent","line":60},{"name":"SyncOp","line":69},{"name":"SyncConflict","line":78},{"name":"SyncCheckpoint","line":87},{"name":"SyncSession","line":95},{"name":"SyncDelta","line":105},{"name":"SyncStats","line":113},{"name":"sync_id_generate","line":125},{"name":"timestamp","line":127},{"name":"bytes","line":130},{"name":"sync_id_valid","line":139},{"name":"op_create","line":151},{"name":"op_create_with_version","line":162},{"name":"event_create","line":173},{"name":"event_create_with_metadata","line":184},{"name":"conflict_create","line":195},{"name":"checkpoint_create","line":206},{"name":"session_create","line":216},{"name":"stats_create","line":228},{"name":"op_is_insert","line":239},{"name":"op_is_update","line":244},{"name":"op_is_delete","line":249},{"name":"op_is_merge","line":254},{"name":"state_is_terminal","line":259},{"name":"state_is_active","line":264},{"name":"conflict_resolve_local","line":269},{"name":"conflict_resolve_remote","line":275},{"name":"conflict_unresolved","line":281},{"name":"session_set_state","line":286},{"name":"session_complete","line":291},{"name":"session_fail","line":297},{"name":"session_add_op","line":304},{"name":"session_op_count","line":309},{"name":"session_stats","line":314},{"name":"duration","line":326},{"name":"append_errors","line":338},{"name":"sep","line":340},{"name":"concat","line":347},{"name":"append_byte","line":356},{"name":"append","line":363},{"name":"append_ops","line":373},{"name":"int_to_bytes","line":382},{"name":"min","line":397},{"name":"get_timestamp_ms","line":402},{"name":"op","line":412},{"name":"op","line":417},{"name":"op","line":422},{"name":"op","line":427},{"name":"id","line":432},{"name":"event","line":433},{"name":"id","line":438},{"name":"event","line":439},{"name":"id","line":444},{"name":"conflict","line":445},{"name":"id","line":450},{"name":"session","line":451},{"name":"id","line":456},{"name":"id","line":463},{"name":"id","line":470},{"name":"id","line":478},{"name":"id","line":486},{"name":"op","line":488},{"name":"id","line":494},{"name":"stats","line":497},{"name":"id","line":502},{"name":"op1","line":504},{"name":"op2","line":505},{"name":"stats","line":509},{"name":"id","line":672},{"name":"id","line":684},{"name":"op","line":686},{"name":"id","line":700},{"name":"id","line":712},{"name":"op","line":714}],"imports":[{"name":"std","line":12}],"terms":["sync","schema","max","len","timeout","concurrent","syncs","state","checkpoint","interval","event","conflict","session","delta","stats","generate","timestamp","bytes","valid","create","metadata","insert","delete","merge","terminal","active","resolve","local","remote","unresolved","set","complete","fail","count","duration","append","sep","concat","byte","ops","int","min","get","op1","op2"]},{"id":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/assembler.t27","health":"ok","module":"Assembler"}],"description":"t27/specs/fpga/assembler.t27 T27 Ternary Assembler Specification High-level assembler for the ternary ISA, compiles to machine code Supports R-type, I-type, and GF16 extended instructions Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"SectionKind","line":13},{"name":"RelocKind","line":22},{"name":"AssembledInstr","line":30},{"name":"RelocEntry","line":43},{"name":"Symbol","line":52},{"name":"AsmSection","line":62},{"name":"AsmConfig","line":71},{"name":"asm_config","line":82},{"name":"text_section","line":93},{"name":"data_section","line":102},{"name":"r_instruction","line":111},{"name":"i_instruction","line":124},{"name":"gf16_instruction","line":137},{"name":"symbol","line":150},{"name":"reloc","line":160},{"name":"is_r_type","line":171},{"name":"is_i_type","line":175},{"name":"is_gf16_instr","line":179},{"name":"encode_r_type","line":183},{"name":"encode_i_type","line":187},{"name":"section_end","line":191},{"name":"align_address","line":195},{"name":"instr_count","line":206},{"name":"validate_config","line":215},{"name":"validate_symbol","line":226}],"imports":[],"terms":["fpga","assembler","section","kind","reloc","assembled","instr","entry","asm","config","text","data","gf16","encode","end","align","address","count","validate"]},{"id":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_bfs.t27","health":"ok","module":"TriGraphBfs"}],"description":"t27/specs/","symbols":[{"name":"Graph","line":13},{"name":"BFSResult","line":18},{"name":"init","line":29},{"name":"add_edge","line":34},{"name":"traverse","line":39},{"name":"deinit","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","bfs","bfsresult","init","edge","traverse","deinit"]},{"id":"55d72454b468f3b1d8135c873b16390504a45b3d3d18fc08be6fa7620ee95214","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/cap_ok.t27","health":"ok","module":"CapOk"}],"description":"","symbols":[{"name":"SCALE","line":3},{"name":"outer","line":5},{"name":"inner","line":6}],"imports":[],"terms":["bootstrap","goldring","cap","scale","outer","inner"]},{"id":"55e446faa75d219aa49a89a5c07f36e262e0cacd120fed49ce35fb6303d63f1e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0011_in_membership.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","membership"]},{"id":"55fa9d68b2d7e5072ea94daeaa5281757a48278e5201bb1eac41ddbcb7c7a3a9","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft64.t27","health":"ok","module":"triformat_gft64"}],"description":"gft64.t27 -- GF-T64: the golden-ratio ternary ladder, 64-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft64","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"55fc433f009d16c215265b756d6243a4807f5d6a930a3b471a84ada9708aec21","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_05_raw_string.t27","health":"warn","module":null}],"description":"NEGATIVE fixture: a legal raw string whose body contains a bracket and an odd number of quotes. The odd-quote signal must not fire inside a raw string.","symbols":[{"name":"Patterns","line":3}],"imports":[],"terms":["bootstrap","fixtures","damage","negative","neg","raw","patterns"]},{"id":"56113a8df816d524442da3e153ea33d793de0d06087326161aefc18fb0281dd3","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_deque.t27","health":"warn","module":"TernaryDeque"}],"description":"t27/specs/isa/ternary_deque.t27 Ternary Deque Operations Specification Ring 088 - Double-ended queue operations for ternary data Defines deque with push/pop from both ends","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"DEQUE_MAX_SIZE","line":21},{"name":"deque_init","line":29},{"name":"deque_push_front","line":42},{"name":"deque_push_back","line":64},{"name":"deque_pop_front","line":83},{"name":"deque_pop_back","line":102},{"name":"deque_peek_front","line":122},{"name":"deque_peek_back","line":134},{"name":"deque_is_empty","line":152},{"name":"deque_is_full","line":158},{"name":"deque_size","line":164},{"name":"deque_clear","line":170},{"name":"success","line":286},{"name":"success1","line":334},{"name":"success2","line":335}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","deque","trit","neg","zero","pos","max","size","init","push","front","back","pop","peek","empty","full","clear","success","success1","success2"]},{"id":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_metrics.t27","health":"ok","module":"NetworkMetrics"}],"description":"Network metrics - ultra-minimal, all-inline, no-let","symbols":[{"name":"get_sent","line":6},{"name":"inc_sent","line":10},{"name":"get_recv","line":14},{"name":"inc_recv","line":18},{"name":"get_success","line":22},{"name":"inc_success","line":26},{"name":"success_rate","line":30}],"imports":[{"name":"base::types","line":4}],"terms":["net","network","metrics","get","sent","inc","recv","success","rate"]},{"id":"56f823f5a276ae2ec4740de0058cc1ec3071884ff89ed433dd20c4714c99997e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/cts_tb.t27","health":"ok","module":"CTS_Testbench"}],"description":"t27/specs/fpga/testbench/cts_tb.t27 Clock Tree Synthesis Testbench Tests clock buffer insertion, skew balancing, and latency estimation","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_SKEW_PS","line":11},{"name":"MAX_LATENCY_PS","line":12},{"name":"NUM_CLOCK_DOMAINS","line":13},{"name":"BUFFER_DELAY_PS","line":14},{"name":"tick","line":26},{"name":"reset","line":31},{"name":"estimate_latency","line":39},{"name":"estimate_skew","line":43},{"name":"balance_tree","line":53}],"imports":[{"name":"fpga::cts::CTS","line":8}],"terms":["fpga","testbench","cts","clk","period","max","skew","latency","num","clock","domains","buffer","delay","tick","reset","estimate","balance","tree"]},{"id":"57308c312e2d9233223984d19e928d0583684571434c32a42d5c66810c8a07da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/disjoint_set.t27","health":"ok","module":"TriDisjointSet"}],"description":"t27/specs/","symbols":[{"name":"DisjointSet","line":13},{"name":"init","line":24},{"name":"find","line":29},{"name":"union","line":34},{"name":"connected","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","disjoint","set","init","find","union","connected"]},{"id":"57354f8525068440df541ffe1bd2e9d059248b1c35fcfc3b1cda4cd0beb8c08a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/sigmoid_activation.t27","health":"ok","module":"Sigmoid"}],"description":"t27/specs/","symbols":[{"name":"SigmoidConfig","line":13},{"name":"forward","line":22},{"name":"forward_batch","line":27},{"name":"derivative","line":32}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","sigmoid","config","forward","batch","derivative"]},{"id":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sources":[{"repo":"ghashtag/t27","path":"specs/queen/task_analysis.t27","health":"warn","module":"queen-task-analysis"}],"description":"queen/task_analysis.t27 — Task Priority Analysis for Queen Trinity S³AI — Cognitive Task Orchestration","symbols":[{"name":"PHI","line":16},{"name":"PHI_INV","line":17},{"name":"TRINITY","line":18},{"name":"WORKER_COUNT","line":21},{"name":"PRIORITY_CRITICAL","line":24},{"name":"PRIORITY_HIGH","line":25},{"name":"PRIORITY_NORMAL","line":26},{"name":"PRIORITY_LOW","line":27},{"name":"TaskType","line":34},{"name":"Task","line":48},{"name":"TaskAnalysis","line":58},{"name":"calculate_priority_score","line":71},{"name":"urgency_weight","line":73},{"name":"priority_weight","line":74},{"name":"normalized_priority","line":76},{"name":"sort_tasks_by_priority","line":82},{"name":"analyze_task_queue","line":88},{"name":"task","line":98},{"name":"get_next_task","line":119},{"name":"score","line":151},{"name":"analysis","line":160}],"imports":[{"name":"base::types::Trit","line":8},{"name":"math::sacred_physics","line":9},{"name":"brain::unified_state","line":10}],"terms":["queen","analysis","phi","inv","worker","count","priority","critical","high","normal","low","calculate","score","urgency","weight","normalized","sort","tasks","analyze","queue","get"]},{"id":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/internet_call.t27","health":"ok","module":"InternetCall"}],"description":"Internet call policy and lifecycle. Network adapters, APNs delivery, and LiveKit token signing are thin wrappers. phi^2 + phi^-2 = 3","symbols":[{"name":"ROUTE_NONE","line":8},{"name":"ROUTE_MESH","line":9},{"name":"ROUTE_INTERNET","line":10},{"name":"CALL_IDLE","line":12},{"name":"CALL_RINGING","line":13},{"name":"CALL_ACTIVE","line":14},{"name":"CALL_ENDED","line":15},{"name":"CALL_DECLINED","line":16},{"name":"CALL_CANCELLED","line":17},{"name":"CALL_MISSED","line":18},{"name":"CAP_AUDIO","line":20},{"name":"CAP_VIDEO","line":21},{"name":"CAP_MESH","line":22},{"name":"CAP_WEBRTC","line":23},{"name":"INVITE_TTL_SECONDS","line":25},{"name":"AUTO_MESH_PROBE_TIMEOUT_SECONDS","line":26},{"name":"AUTO_MESH_CONTROL_GRACE_SECONDS","line":27},{"name":"AUTO_MESH_ACCEPTED_CONNECT_TIMEOUT_SECONDS","line":28},{"name":"MESH_CONTROL_SEND_ATTEMPTS","line":29},{"name":"TOKEN_TTL_SECONDS","line":30},{"name":"LIVEKIT_ROOM_SERVICE_TOKEN_TTL_SECONDS","line":31},{"name":"REQUEST_SIGNATURE_TTL_SECONDS","line":32},{"name":"REQUEST_SIGNATURE_MAX_FUTURE_SKEW_SECONDS","line":33},{"name":"PRESENCE_TTL_SECONDS","line":34},{"name":"APNS_MAX_DELIVERY_ATTEMPTS","line":35},{"name":"APNS_RETRY_BASE_DELAY_MS","line":36},{"name":"APNS_RETRY_MAX_JITTER_MS","line":37},{"name":"APNS_VOIP_OUTBOX_WORKERS","line":38},{"name":"APNS_OUTBOX_HTTP_ATTEMPTS_PER_CLAIM","line":39},{"name":"CALL_RATE_WINDOW_SECONDS","line":40},{"name":"MAX_NEW_CALLS_PER_DEVICE_WINDOW","line":41},{"name":"MAX_PENDING_CALLS_PER_DEVICE","line":42},{"name":"APNS_OUTBOX_CLAIM_LEASE_SECONDS","line":46},{"name":"APNS_OUTBOX_RETRY_BASE_SECONDS","line":47},{"name":"APNS_OUTBOX_RETRY_MAX_SECONDS","line":48},{"name":"APNS_OUTBOX_RETRY_MAX_JITTER_SECONDS","line":49},{"name":"device_is_valid","line":53},{"name":"supports_internet_call","line":60},{"name":"supports_video_call","line":64},{"name":"call_media_request_is_valid","line":68},{"name":"call_target_supports_media","line":74},{"name":"device_is_online","line":81},{"name":"select_route","line":89},{"name":"auto_mesh_should_fallback","line":102},{"name":"auto_mesh_fallback_decision_is_due","line":114},{"name":"auto_mesh_accepted_fallback_decision_is_due","line":122},{"name":"auto_mesh_prompt_is_fresh","line":132},{"name":"mesh_control_auth_is_valid","line":139},{"name":"mesh_control_route_matches","line":143},{"name":"mesh_control_peer_matches","line":149},{"name":"mesh_control_is_authorized","line":158},{"name":"incoming_call_should_mark_reported","line":162},{"name":"incoming_call_should_retry_after_presentation","line":166},{"name":"mesh_stop_should_notify_peer","line":170},{"name":"internet_remote_departure_should_end","line":176},{"name":"should_migrate_private_api_endpoint","line":183},{"name":"invite_is_fresh","line":187},{"name":"token_is_fresh","line":194},{"name":"request_signature_is_fresh","line":204},{"name":"may_answer","line":211},{"name":"call_target_is_valid","line":217},{"name":"call_target_is_available","line":231},{"name":"voip_push_may_be_sent","line":238},{"name":"voip_outbox_event_may_enqueue","line":244},{"name":"apns_should_try_alternate_environment","line":251},{"name":"apns_environment_should_be_updated","line":257},{"name":"apns_delivery_failure_is_retryable","line":263},{"name":"apns_should_retry","line":269},{"name":"apns_bounded_jitter_ms","line":273},{"name":"apns_retry_delay_ms","line":282},{"name":"apns_outbox_bounded_jitter_seconds","line":289},{"name":"apns_outbox_retry_delay_seconds","line":299},{"name":"apns_outbox_claim_is_recoverable","line":325},{"name":"apns_outbox_should_retry","line":335},{"name":"apns_outbox_should_block","line":342},{"name":"apns_outbox_block_is_recoverable","line":346},{"name":"new_call_admission_is_allowed","line":353},{"name":"apns_token_should_be_invalidated","line":371},{"name":"join_is_authorized","line":380},{"name":"join_retry_is_authorized","line":389},{"name":"callee_may_decline","line":399},{"name":"status_after_decline","line":411},{"name":"participant_may_read_status","line":420},{"name":"call_should_expire","line":427},{"name":"status_after_expiry","line":431},{"name":"status_after_caller_end","line":440},{"name":"call_is_terminal","line":450},{"name":"livekit_room_cleanup_should_start","line":460},{"name":"terminal_response_is_allowed","line":464},{"name":"create_retry_matches","line":473},{"name":"create_retry_may_issue_session","line":481},{"name":"caller_may_end","line":493},{"name":"active_participant_may_end","line":502},{"name":"next_status","line":511}],"imports":[{"name":"base::types","line":6}],"terms":["net","internet","call","route","mesh","idle","ringing","active","ended","declined","cancelled","missed","cap","audio","video","webrtc","invite","ttl","seconds","auto","probe","timeout","control","grace","accepted","connect","send","attempts","token","livekit","room","service","request","signature","max","future","skew","presence","apns","delivery","retry","base","delay","jitter","voip","outbox","workers","http","per","claim","rate","window","calls","device","lease","valid","supports","media","target","online","select","fallback","decision","due","prompt","fresh","auth","matches","peer","authorized","incoming","mark","reported","presentation","stop","notify","remote","departure","end","migrate","private","api","endpoint","may","answer","available","push","sent","event","enqueue","try","alternate","environment","updated","failure","retryable","bounded","recoverable","block","admission","allowed","invalidated","join","callee","decline","status","participant","read","expire","expiry","caller","terminal","cleanup","start","response","create","session"]},{"id":"57648d4b56135798ce356c530e5a55a3df2815d6dd254ef86f5a2d99b1c00158","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_activation.t27","health":"ok","module":"SiluSwish"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_BETA","line":13},{"name":"SiLUConfig","line":19},{"name":"forward","line":28},{"name":"forward_batch","line":33},{"name":"derivative","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","silu","swish","default","beta","luconfig","forward","batch","derivative"]},{"id":"5774a55f23a1cedb8feb1044739647e4084ac88b73c5c3ffffc115248824e438","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/compress.t27","health":"ok","module":"TriCompress"}],"description":"t27/specs/","symbols":[{"name":"Compressed","line":13},{"name":"compress","line":23},{"name":"decompress","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["compress","compressed","decompress"]},{"id":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf24.t27","health":"warn","module":"GF24"}],"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 — 24-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 7 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF24","line":34},{"name":"encode","line":43},{"name":"sign","line":48},{"name":"abs_val","line":49},{"name":"exp_unbiased","line":52},{"name":"exp_biased","line":53},{"name":"exp_clamped","line":56},{"name":"mant","line":59},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp_u16","line":171},{"name":"pow","line":177}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf24","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow"]},{"id":"577f3aa5eb4280c6be165fd7d0458fb849988246800eef63c77b3c774091706f","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-god-mode.t27","health":"ok","module":"skill_trinity_god_mode"}],"description":"specs/skills/trinity-god-mode.t27 -- skill trinity/god-mode Source of truth for the skill card on t27.ai (#/skills?skill=trinity/god-mode). The skill body lives in gHashTag/trinity at .claude/skills/god-mode/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/god-mode/SKILL.md, sha256 0c48e328ae4c...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","god","mode","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/rental_terms.t27","health":"ok","module":"rental-terms"}],"description":"specs/turbobaby/rental_terms.t27 -- the rental term ladder, the published term-discount bands, and the one rounding rule every total is built from. Canonical source of truth for the INTEGER basis-point form of the term arithmetic that D15 puts in src/trios/pricing.rs, so the Axum server and the Dioxus/WASM client are checked against one written contract instead of against each other. The earlier specs/rental_terms.t27 states the same bands in f64. Its declarations have now been semantically classified in","symbols":[{"name":"KIND","line":97},{"name":"ID","line":98},{"name":"NAME","line":99},{"name":"REUSES_PRICING_ID","line":102},{"name":"SOURCE","line":103},{"name":"SOURCE_MEASURED_AT","line":104},{"name":"TARIFF_SOURCE_ID","line":105},{"name":"IMPLEMENTATION","line":109},{"name":"TWIN_SPEC_PATH","line":119},{"name":"TWIN_SPEC_ID","line":120},{"name":"TWIN_ENCODING","line":121},{"name":"TWIN_MERGE_MATRIX","line":122},{"name":"TWIN_IS_RESOLVED","line":123},{"name":"BANDS_PRODUCE_CLIENT_QUOTES","line":127},{"name":"ON_SILENCE","line":128},{"name":"TERM_DAYS","line":134},{"name":"DAYS_PER_WEEK","line":135},{"name":"DAYS_PER_FORTNIGHT","line":138},{"name":"DAYS_PER_MONTH","line":141},{"name":"BP_ONE","line":148},{"name":"BAND_NAMES","line":149},{"name":"WEEK_MIN_DISCOUNT_BP","line":150},{"name":"WEEK_MAX_DISCOUNT_BP","line":151},{"name":"TWO_WEEKS_MIN_DISCOUNT_BP","line":152},{"name":"TWO_WEEKS_MAX_DISCOUNT_BP","line":153},{"name":"MONTH_MIN_DISCOUNT_BP","line":154},{"name":"MONTH_MAX_DISCOUNT_BP","line":155},{"name":"BAND_NONE","line":159},{"name":"REF_MODEL","line":169},{"name":"REF_BASE_THB_DAY","line":170},{"name":"REF_MONTHLY_LOW_SEASON_THB","line":171},{"name":"audit_daily_thb","line":189},{"name":"scaled","line":190},{"name":"audit_total_thb","line":203},{"name":"CLASS_TERM_COMPOSITION_IS_PINNED","line":221},{"name":"band_index_for_days","line":235}],"imports":[],"terms":["turbobaby","user","bot","rental","terms","kind","reuses","pricing","measured","tariff","twin","path","encoding","merge","matrix","resolved","bands","produce","client","quotes","silence","term","days","per","week","fortnight","month","one","band","min","discount","max","two","weeks","ref","model","base","thb","day","monthly","low","season","audit","daily","scaled","total","class","composition","pinned","index"]},{"id":"57c23797300ea168c457a74d4edc25c1bcd249408efb634dcd32a7dbfa086260","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-health-check.t27","health":"ok","module":"fn_monitoring_health_check"}],"description":"specs/functions/monitoring-health-check.t27 -- function monitoring-health-check (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-health-check). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L235 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","monitoring","health","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"57e060a9c073ed08dfbd814acf779965d92f2cb75d21615ed4e65f39b294f3df","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/agent.phi-loop.t27","health":"ok","module":"trinity_capability_agent_phi_loop"}],"description":"specs/trinity/capabilities/agent.phi-loop.t27 -- capability trinity/agent.phi-loop: phi-loop: the phi cycle command-line runner One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","phi","loop","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"583b5c7479c239140733752a9ee2df7b82afca6af96e9861af1acd34eac13265","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/golden_sieve.t27","health":"ok","module":"numeric-golden-sieve"}],"description":"golden_sieve.t27 0 The Golden Sieve -- which weight alphabets a ternary datapath may use, derived from measured theorems rather than chosen. Five predicates. A candidate alphabet is admissible only if it satisfies all five. Each cites the measurement that established it; none is an opinion. S1 PACKING |A| = 3^k T367 only powers of three waste no trits S2 CEILING k <= 2 T369 27 levels measured +0.15 / -0.13 pp,","symbols":[{"name":"MAX_TRITS","line":50},{"name":"MAX_NEURON_BITS","line":54},{"name":"RADIX","line":57},{"name":"TERNARY_SYMBOL_BITS","line":61},{"name":"LEVELS_0_TRITS","line":66},{"name":"LEVELS_1_TRIT","line":67},{"name":"LEVELS_2_TRITS","line":68},{"name":"LEVELS_3_TRITS","line":69},{"name":"levels_in_trits","line":76},{"name":"trits_for_levels","line":87},{"name":"s1_packing","line":94},{"name":"s2_ceiling","line":102},{"name":"s3_single_lane","line":137},{"name":"lanes_needed","line":143},{"name":"neuron_bits","line":152},{"name":"s4_trit_fanin","line":156},{"name":"max_fanin","line":162},{"name":"s5_primitive","line":171},{"name":"admissible","line":180},{"name":"ternary_rows","line":192},{"name":"binary_rows","line":198},{"name":"s6_no_domination","line":294},{"name":"ladder_top","line":299},{"name":"ladder_rest","line":303},{"name":"ladder_survives_s6","line":307},{"name":"LAYER_TABLE","line":325},{"name":"LAYER_ADDER","line":326},{"name":"is_shift_base","line":331},{"name":"prefers_base","line":351},{"name":"LINEAR9_TOP","line":370},{"name":"LINEAR9_REST","line":371},{"name":"RUNNERUP_TOP","line":374},{"name":"RUNNERUP_REST","line":375}],"imports":[],"terms":["numeric","golden","sieve","max","trits","neuron","bits","radix","ternary","levels","trit","packing","ceiling","single","lane","lanes","needed","fanin","primitive","admissible","rows","binary","domination","ladder","top","rest","survives","layer","table","adder","shift","base","prefers","linear9","runnerup"]},{"id":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/memory.t27","health":"warn","module":"Memory"}],"description":"t27/specs/fpga/memory.t27 Memory (BRAM/DRAM/ROM) Abstraction for Trinity T27 FPGA HIR Defines block memory primitives with read/write ports Uses flat arrays + count fields (parser-compatible, no Vec/generics)","symbols":[{"name":"MemKind","line":12},{"name":"MemPortKind","line":20},{"name":"MemLatency","line":28},{"name":"MemPort","line":35},{"name":"MAX_MEM_PORTS","line":45},{"name":"MemDesc","line":47},{"name":"empty_mem_port","line":59},{"name":"make_mem_port","line":69},{"name":"empty_mem","line":79},{"name":"make_bram","line":91},{"name":"make_rom","line":112},{"name":"add_read_port","line":133},{"name":"add_write_port","line":142},{"name":"add_rw_port","line":151},{"name":"port_count","line":162},{"name":"total_bits","line":166},{"name":"has_read_port","line":170},{"name":"has_write_port","line":181},{"name":"is_rom","line":192},{"name":"is_bram","line":196},{"name":"addr_width","line":200},{"name":"bram18_count","line":206},{"name":"validate_mem","line":217}],"imports":[],"terms":["fpga","memory","mem","kind","port","latency","max","ports","desc","empty","make","bram","rom","read","write","count","total","bits","addr","width","bram18","validate"]},{"id":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","sources":[{"repo":"ghashtag/t27","path":"specs/git/operations.t27","health":"ok","module":"GitOperations"}],"description":"specs/git/operations.t27 Git Command Operations","symbols":[{"name":"run","line":14},{"name":"branch","line":19},{"name":"prefix","line":24},{"name":"default_branch","line":29},{"name":"has_head","line":34},{"name":"merge_base","line":39},{"name":"show","line":44},{"name":"rev_parse","line":49},{"name":"checkout","line":54},{"name":"fetch","line":59},{"name":"pull","line":64},{"name":"commit","line":69},{"name":"add","line":74},{"name":"reset","line":79},{"name":"remote_list","line":84},{"name":"remote_url","line":89},{"name":"branch_list","line":98},{"name":"branch_create","line":103},{"name":"branch_delete","line":108}],"imports":[{"name":"base::types","line":6},{"name":"git::schema","line":7}],"terms":["git","operations","branch","prefix","default","head","merge","base","show","rev","parse","checkout","fetch","pull","commit","reset","remote","list","url","create","delete"]},{"id":"589b4502973beca006108ffedabec587effb8778bfd21be45399b23bcae398f3","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/ci.t27","health":"ok","module":"tool_tri_ci"}],"description":"specs/tools/tri/ci.t27 -- tool tri/ci, the `tri ci` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/ci). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"589c71bf222dccf9b301401fad6dc1c0ef62df01b74011badaf3ff5b8d5cc05a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/isa/registers.t27","health":"warn","module":"isa_registers"}],"description":"","symbols":[],"imports":[],"terms":["fpga","isa","registers"]},{"id":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power.t27","health":"ok","module":"Power"}],"description":"t27/specs/fpga/power.t27 T27 Power Estimation Specification Estimates dynamic and static power consumption for FPGA designs Artix-7 power model: LUT=10uW/MHz, FF=5uW/MHz, BRAM=50uW/MHz, DSP=100uW/MHz Static: 50mW base + 0.1uW per resource unit Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"PowerDomain","line":14},{"name":"power_domain","line":21},{"name":"lut_power_uw_per_mhz","line":32},{"name":"ff_power_uw_per_mhz","line":36},{"name":"bram_power_uw_per_mhz","line":40},{"name":"dsp_power_uw_per_mhz","line":44},{"name":"io_power_uw_per_mhz","line":48},{"name":"static_base_mw","line":52},{"name":"static_per_resource_uw","line":56},{"name":"PowerEstimate","line":62},{"name":"power_estimate","line":72},{"name":"zero_power","line":84},{"name":"est_lut_dynamic","line":90},{"name":"est_ff_dynamic","line":94},{"name":"est_bram_dynamic","line":98},{"name":"est_dsp_dynamic","line":102},{"name":"est_static","line":106},{"name":"total_resources","line":110},{"name":"est_total_power","line":114},{"name":"validate_domain","line":134}],"imports":[],"terms":["fpga","power","domain","lut","per","mhz","bram","dsp","static","base","resource","estimate","zero","est","dynamic","total","resources","validate"]},{"id":"58c769e390fdaac1866302736c5b4762046fb6a4b7dea11d5dae37b150e0c871","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_13.t27","health":"warn","module":"damage_class_13"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_validator.t27","health":"warn","module":"test_validator"}],"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","symbols":[{"name":"MAX_ERRORS","line":7},{"name":"MAX_WARNINGS","line":8},{"name":"MAX_FUNCTIONS","line":9},{"name":"VIOLATION_THRESHOLD","line":10},{"name":"create_validation_error","line":13},{"name":"get_error_id","line":20},{"name":"get_error_type","line":24},{"name":"get_error_line","line":28},{"name":"get_error_severity","line":32},{"name":"ERROR_SYNTAX","line":37},{"name":"ERROR_TYPE_MISMATCH","line":38},{"name":"ERROR_CONSTRAINT_VIOLATION","line":39},{"name":"ERROR_UNDEFINED_SYMBOL","line":40},{"name":"ERROR_UNUSED_VARIABLE","line":41},{"name":"SEVERITY_ERROR","line":44},{"name":"SEVERITY_WARNING","line":45},{"name":"SEVERITY_INFO","line":46},{"name":"create_function_signature","line":49},{"name":"get_sig_function_id","line":56},{"name":"get_param_count","line":60},{"name":"get_return_type","line":64},{"name":"get_visibility","line":68},{"name":"validate_function_signature","line":73},{"name":"create_constraint_check","line":92},{"name":"get_constraint_id","line":99},{"name":"get_constraint_status","line":103},{"name":"get_constraint_description","line":107},{"name":"get_constraint_line","line":111},{"name":"CONSTRAINT_PASS","line":116},{"name":"CONSTRAINT_FAIL","line":117},{"name":"CONSTRAINT_SKIP","line":118},{"name":"CONSTRAINT_NO_FLOAT","line":121},{"name":"CONSTRAINT_NO_DYNAMIC_ARRAY","line":122},{"name":"CONSTRAINT_NO_BIGNUM","line":123},{"name":"CONSTRAINT_FIXED_SIZE_ONLY","line":124},{"name":"CONSTRAINT_INTEGER_ONLY","line":125},{"name":"check_no_float_operations","line":128},{"name":"check_no_dynamic_arrays","line":138},{"name":"check_integer_only","line":148},{"name":"create_type_check","line":160},{"name":"get_type_var_id","line":167},{"name":"get_declared_type","line":171},{"name":"get_inferred_type","line":175},{"name":"get_type_line","line":179},{"name":"perform_type_check","line":184},{"name":"create_unused_check","line":196},{"name":"get_unused_var_id","line":203},{"name":"get_usage_count","line":207},{"name":"get_first_use","line":211},{"name":"get_last_use","line":215},{"name":"check_unused_variable","line":220},{"name":"create_validation_summary","line":231},{"name":"get_error_count","line":238},{"name":"get_warning_count","line":242},{"name":"get_info_count","line":246},{"name":"get_validation_status","line":250},{"name":"VALIDATION_PASS","line":255},{"name":"VALIDATION_FAIL","line":256},{"name":"VALIDATION_WARNING","line":257},{"name":"run_validation","line":260},{"name":"create_quality_metrics","line":296},{"name":"get_complexity","line":303},{"name":"get_readability","line":307},{"name":"get_maintainability","line":311},{"name":"get_technical_debt","line":315},{"name":"calculate_complexity","line":320},{"name":"is_quality_acceptable","line":337},{"name":"generate_validation_report","line":358}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","validator","max","warnings","functions","violation","threshold","create","validation","get","severity","syntax","mismatch","constraint","undefined","unused","variable","warning","info","signature","sig","param","count","visibility","validate","status","description","pass","fail","skip","float","dynamic","array","bignum","fixed","size","integer","operations","arrays","var","declared","inferred","perform","usage","summary","quality","metrics","complexity","readability","maintainability","technical","debt","calculate","acceptable","generate","report"]},{"id":"5981241f2cd196051990feaf73a6afbd75a0e3a166b3e8dd18c2e60528974cca","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/vibee.compiler.t27","health":"ok","module":"trinity_capability_vibee_compiler"}],"description":"specs/trinity/capabilities/vibee.compiler.t27 -- capability trinity/vibee.compiler: The VIBEE spec compiler (vibee gen), its self-improver, trinity-cli, claude-ui a One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","vibee","compiler","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/assembler_tb.t27","health":"ok","module":"Assembler_Testbench"}],"description":"t27/specs/fpga/testbench/assembler_tb.t27 Assembler/Linker Integration Testbench Tests ternary instruction encoding, program assembly, and memory linking","symbols":[{"name":"CLK_PERIOD","line":11},{"name":"INSTR_WIDTH","line":12},{"name":"DATA_WIDTH","line":13},{"name":"ADDR_WIDTH","line":14},{"name":"MAX_PROGRAM_SIZE","line":15},{"name":"NUM_REGISTERS","line":16},{"name":"tick","line":31},{"name":"reset","line":36},{"name":"encode_r_type","line":44},{"name":"encode_i_type","line":52},{"name":"decode_opcode","line":60},{"name":"decode_rd","line":64}],"imports":[{"name":"fpga::assembler::Assembler","line":8},{"name":"fpga::linker::Linker","line":9}],"terms":["fpga","testbench","assembler","clk","period","instr","width","data","addr","max","program","size","num","registers","tick","reset","encode","decode","opcode"]},{"id":"59c9aed7248324467e2d13b458a60137da5b8b07f5116a484580f0dadc808cd8","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_conformance_compare.t27","health":"ok","module":"VcdConformanceCompare"}],"description":"t27/specs/fpga/vcd_conformance_compare.t27 T27 VCD Conformance Comparison Engine Compares VCD simulation traces against conformance vectors Parses VCD signal values and checks them against expected results Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"CompareResult","line":13},{"name":"compare_result","line":20},{"name":"result_ok","line":29},{"name":"record_pass","line":34},{"name":"record_fail","line":39},{"name":"record_error","line":44},{"name":"all_passed","line":49},{"name":"SignalRef","line":55},{"name":"signal_ref","line":61},{"name":"ExpectedValue","line":71},{"name":"expected_value","line":78},{"name":"expected_value_masked","line":87},{"name":"extract_value","line":98},{"name":"compare_value","line":107},{"name":"compare_batch","line":116},{"name":"map_uart_tx_vector","line":138},{"name":"map_mac_cycle_result","line":151},{"name":"map_spi_transfer_bits","line":161},{"name":"map_led_output","line":172},{"name":"parse_timescale_ps","line":178},{"name":"cycle_to_timestamp_ps","line":189},{"name":"timestamp_to_cycle","line":194},{"name":"validate_signal_ref","line":202},{"name":"validate_expected","line":210}],"imports":[],"terms":["fpga","vcd","conformance","compare","record","pass","fail","passed","signal","ref","expected","masked","extract","batch","map","uart","vector","mac","cycle","spi","transfer","bits","led","parse","timescale","timestamp","validate"]},{"id":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_framework.t27","health":"warn","module":"test_framework"}],"description":"Test Framework - comprehensive testing infrastructure for T27 modules Enables automated testing, validation, and coverage analysis","symbols":[{"name":"MAX_TESTS","line":7},{"name":"MAX_ASSERTIONS","line":8},{"name":"MAX_SUITES","line":9},{"name":"COVERAGE_TARGET","line":10},{"name":"create_test_result","line":13},{"name":"get_test_id","line":20},{"name":"get_test_status","line":24},{"name":"get_assertion_count","line":28},{"name":"get_failure_count","line":32},{"name":"STATUS_PASS","line":37},{"name":"STATUS_FAIL","line":38},{"name":"STATUS_SKIP","line":39},{"name":"STATUS_ERROR","line":40},{"name":"create_test_case","line":43},{"name":"get_test_case_id","line":50},{"name":"get_function_id","line":54},{"name":"get_test_input","line":58},{"name":"get_expected_output","line":62},{"name":"create_assertion","line":67},{"name":"get_assertion_type","line":74},{"name":"get_actual_value","line":78},{"name":"get_expected_value","line":82},{"name":"get_line_number","line":86},{"name":"ASSERT_EQUAL","line":91},{"name":"ASSERT_NOT_EQUAL","line":92},{"name":"ASSERT_GREATER","line":93},{"name":"ASSERT_LESS","line":94},{"name":"ASSERT_RANGE","line":95},{"name":"ASSERT_BITMASK","line":96},{"name":"check_assertion","line":99},{"name":"run_test_case","line":148},{"name":"create_test_suite","line":168},{"name":"get_suite_id","line":175},{"name":"get_suite_test_count","line":179},{"name":"get_setup_id","line":183},{"name":"get_teardown_id","line":187},{"name":"run_test_suite","line":192},{"name":"create_coverage_data","line":220},{"name":"get_coverage_function_id","line":227},{"name":"get_branch_count","line":231},{"name":"get_covered_branches","line":235},{"name":"get_line_count","line":239},{"name":"calculate_coverage_percentage","line":244},{"name":"aggregate_coverage","line":256},{"name":"create_property_test","line":275},{"name":"get_property_id","line":282},{"name":"get_generator_count","line":286},{"name":"get_property_test_count","line":290},{"name":"get_property_failure_count","line":294},{"name":"generate_test_input","line":299},{"name":"run_property_test","line":315},{"name":"create_test_summary","line":333},{"name":"get_total_tests","line":340},{"name":"get_passed_tests","line":344},{"name":"get_failed_tests","line":348},{"name":"get_skipped_tests","line":352},{"name":"calculate_pass_rate","line":357},{"name":"meets_coverage_target","line":369},{"name":"generate_test_report","line":378}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","framework","max","assertions","suites","target","create","get","status","assertion","count","failure","pass","fail","skip","case","expected","actual","assert","equal","greater","less","range","bitmask","suite","setup","teardown","data","branch","covered","branches","calculate","percentage","aggregate","property","generator","generate","summary","total","passed","failed","skipped","rate","meets","report"]},{"id":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/tokenizer.t27","health":"fail","module":"igla-coder-tokenizer"}],"description":"t27/specs/igla/coder/tokenizer.t27 Conceptual tokenizer for Verilog / t27 syntax Deterministic character-level encoding (ASCII -> ID) for spec safety. Real BPE/SentencePiece requires runtime support.","symbols":[{"name":"VocabEntry","line":16},{"name":"encode_char","line":28},{"name":"decode_char","line":35},{"name":"vocab_size","line":44},{"name":"vocab_size_keywords","line":50},{"name":"encode_keyword","line":61},{"name":"decode_keyword","line":131},{"name":"vocab_size_total","line":201},{"name":"tokenize","line":211},{"name":"tokenize_inner","line":215},{"name":"detokenize","line":225},{"name":"detokenize_inner","line":229},{"name":"detokenize_first_token","line":243},{"name":"tokenize_verilog","line":253},{"name":"tokenize_verilog_inner","line":257},{"name":"next_word","line":274},{"name":"next_word_inner","line":284},{"name":"skip_spaces","line":296},{"name":"detokenize_verilog","line":308},{"name":"detokenize_verilog_inner","line":312},{"name":"tokenize_prompt_hybrid","line":327},{"name":"tokenize_prompt_hybrid_inner","line":331},{"name":"tokenize_word_ascii","line":348}],"imports":[{"name":"base::types","line":9}],"terms":["igla","coder","tokenizer","vocab","entry","encode","char","decode","size","keywords","keyword","total","tokenize","inner","detokenize","token","verilog","word","skip","spaces","prompt","hybrid","ascii"]},{"id":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/group_chat.t27","health":"ok","module":"GroupChat"}],"description":"Persistent group chat membership and message policy. HTTP, SQLite, and UI adapters are outside this specification. phi^2 + phi^-2 = 3","symbols":[{"name":"MIN_GROUP_MEMBERS","line":8},{"name":"MAX_GROUP_MEMBERS","line":9},{"name":"MAX_GROUP_TITLE_BYTES","line":10},{"name":"MAX_MESSAGE_BYTES","line":11},{"name":"MAX_MESSAGE_PAGE","line":12},{"name":"group_may_be_created","line":16},{"name":"title_is_valid","line":28},{"name":"member_may_read","line":32},{"name":"message_may_be_sent","line":36},{"name":"message_page_size","line":42},{"name":"advance_read_cursor","line":54},{"name":"message_counts_as_unread","line":63},{"name":"unread_alert_is_eligible","line":69},{"name":"push_alert_may_be_sent","line":75}],"imports":[{"name":"base::types","line":6}],"terms":["net","group","chat","min","members","max","title","bytes","page","may","created","valid","member","read","sent","size","advance","cursor","counts","unread","alert","eligible","push"]},{"id":"5b2fc085c2a125373e585ceb74c7881bebc67e760a3469c84644dbac5257ee32","sources":[{"repo":"ghashtag/t27","path":"specs/storage/lock.t27","health":"ok","module":"StorageLock"}],"description":"specs/storage/lock.t27 Locking Primitives for Storage Operations","symbols":[{"name":"LockState","line":14},{"name":"acquire_read","line":29},{"name":"acquire_write","line":36},{"name":"release","line":41},{"name":"try_lock","line":47},{"name":"is_locked","line":52},{"name":"get_lock_state","line":57},{"name":"wait_for_read","line":62},{"name":"wait_for_write","line":67},{"name":"cleanup_expired","line":76},{"name":"get_all_locks","line":81},{"name":"force_release","line":86}],"imports":[{"name":"base::types","line":6},{"name":"storage::schema","line":7}],"terms":["storage","lock","state","acquire","read","write","release","try","locked","get","wait","cleanup","expired","locks","force"]},{"id":"5bb8cead0f512228a91fc385bd5d660ab111eb1c47c1206476f780835ebdecec","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_parser.t27","health":"ok","module":"TriSpecParser"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","parser"]},{"id":"5bf4a9567cd56ec9b8862707948c207bba85498d272b73b0fc53e20aa548cbb7","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_dot_sw.t27","health":"ok","module":"igla-race-ternary-dot-sw"}],"description":"t27/specs/igla/race/ternary_dot_sw.t27 The slice dot product -- SOFTWARE ONLY, and that is the point of the file. WHY THIS EXISTS. W808 measured that `.len()` on a slice parameter reaches the generated Verilog verbatim (T509). `compiler.rs:6962` handles that spelling for the Zig backend only; the Verilog backend has no case for it, Verilog has neither dynamic arrays nor methods, and the file fails elaboration -- taking the","symbols":[{"name":"ternary_dot","line":37}],"imports":[{"name":"base::types","line":33},{"name":"igla::race::ternary_mac","line":34}],"terms":["igla","race","ternary","dot"]},{"id":"5cf232894b16d3f2e49d5231706441904d9dc620db66d7f1c95b6d8caf819990","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/kl_divergence.t27","health":"ok","module":"KlDivergence"}],"description":"t27/specs/","symbols":[{"name":"forward","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","divergence","forward"]},{"id":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gfternary.t27","health":"ok","module":"triformat-gaternary"}],"description":"gfternary.t27 0 GFTernary Format Specification 2-bit golden-ratio ternary: representable values { -phi, 0, +phi } The phi-scaled limit of the ternary-weight family: GFTernary = phi * {-1,0,+1} (a ternary-weight quantizer, cf. TWN / BitNet, with the scale fixed at phi).","symbols":[{"name":"PHI","line":15},{"name":"PHI_INV","line":16},{"name":"CODE_MASK","line":19},{"name":"GAT_ZERO","line":20},{"name":"GAT_POS","line":21},{"name":"GAT_NEG","line":22},{"name":"GAT_RSVD","line":23},{"name":"GFTernary","line":29},{"name":"gat_canonical","line":37},{"name":"c","line":38},{"name":"gat_is_zero","line":43},{"name":"gat_sign","line":48},{"name":"c","line":49},{"name":"gat_from_sign","line":54},{"name":"gat_negate","line":59},{"name":"c","line":60},{"name":"gat_to_f64","line":65},{"name":"c","line":66},{"name":"gat_from_f64","line":75},{"name":"t","line":76},{"name":"dp","line":87},{"name":"dn","line":88},{"name":"d","line":100},{"name":"d1","line":119},{"name":"d2","line":120},{"name":"d3","line":121},{"name":"code","line":136},{"name":"v","line":148},{"name":"thr","line":149},{"name":"INT_TERNARY_SCALE","line":161},{"name":"SCALED_TERNARY_INIT_ALPHA","line":169},{"name":"MC_ERROR_BPB","line":172},{"name":"GAT_WEIGHT_NORM","line":177},{"name":"INT_TERNARY_WEIGHT_NORM","line":178},{"name":"arm_a_scale","line":186},{"name":"arm_b_scale","line":188},{"name":"arm_c_init","line":190},{"name":"d_ab","line":192},{"name":"d_ac","line":195},{"name":"bpb_gft_wins","line":204},{"name":"bpb_int_ref","line":205},{"name":"gap_wins","line":206},{"name":"bpb_gft_tied","line":210},{"name":"gap_tied","line":211},{"name":"bpb_gft_worse","line":216},{"name":"gap_worse","line":217},{"name":"ratio","line":226},{"name":"expected_ratio","line":227},{"name":"d","line":228},{"name":"phi2","line":241},{"name":"phiinv2","line":242},{"name":"trinity","line":243},{"name":"d","line":244},{"name":"TERNARY_NONZERO_FRACTION","line":299},{"name":"BENCH_HIDDEN_DIM","line":302},{"name":"MAX_LATENCY_RATIO","line":306},{"name":"d","line":316},{"name":"simulated_ratio","line":325},{"name":"failing_ratio","line":329},{"name":"N","line":352},{"name":"codes","line":355},{"name":"signs","line":356},{"name":"idx","line":358},{"name":"N","line":375}],"imports":[],"terms":["numeric","gfternary","triformat","gaternary","phi","inv","mask","gat","zero","pos","neg","rsvd","canonical","sign","negate","f64","thr","int","ternary","scale","scaled","init","alpha","bpb","weight","norm","arm","gft","wins","ref","gap","tied","worse","ratio","expected","phi2","phiinv2","nonzero","fraction","bench","hidden","dim","max","latency","simulated","failing","codes","signs","idx"]},{"id":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","sources":[{"repo":"ghashtag/t27","path":"specs/automation/leela-agent-link.t27","health":"ok","module":"automation"}],"description":"specs/automation/leela-agent-link.t27 -- HOW a connected seller is linked to her editorial agent in the Leela bot (@leela_chakra_ai_bot), and WHY the agent answered nobody before. Host (the agent side): gHashTag/leela apps/bot/src/editorial.ts -- commands /agent_claim, /agent_claims, /agent_approve <32-hex id>, /agent_revoke, /agent; owners come from LEELA_AGENT_OWNERS (else LEELA_STARS_OPERATORS); the target username is LEELA_AGENT_USERNAME (default \"playom\"); store editorial-store.ts on the LEELA_DB volume.","symbols":[{"name":"KIND","line":28},{"name":"ID","line":29},{"name":"REPO","line":30},{"name":"AGENT_REPO","line":31},{"name":"VERSION","line":32},{"name":"BOT","line":35},{"name":"CLAIMANT","line":36},{"name":"CLAIMANT_USERNAME","line":37},{"name":"APPROVER","line":38},{"name":"OWNERS_ENV","line":39},{"name":"OWNERS_SET_ON","line":40},{"name":"OWNERS_BEFORE","line":41},{"name":"CLAIM_CMD","line":44},{"name":"LIST_CMD","line":45},{"name":"APPROVE_CMD","line":46},{"name":"STATUS_CMD","line":47},{"name":"CLAIM_ID_HEX","line":48},{"name":"CLAIM_TTL_HOURS","line":49},{"name":"GRANT_DAYS","line":50},{"name":"STEPS","line":51},{"name":"TOOL","line":54},{"name":"TOOL_CALLER","line":55},{"name":"BOTH_MUST_BE_SELLERS","line":56},{"name":"CLAIMANT_IS_ARGUMENT","line":57},{"name":"REPLY_WAIT_MS","line":58},{"name":"REPLIES_READ","line":59},{"name":"RETURNS_SESSION","line":60},{"name":"RETURNS_TRANSCRIPT","line":61},{"name":"CONFIRMED_BEFORE_RUN","line":62},{"name":"FREE_TEXT_FOR_ADMIN","line":65},{"name":"FREE_TEXT_WHEN_SEATED","line":66},{"name":"FREE_TEXT_HISTORY_TURNS","line":67},{"name":"HANDSHAKE_RAN_LIVE","line":70},{"name":"BRIDGE_999_CONFIGURED","line":71},{"name":"Claim","line":73},{"name":"approves","line":83},{"name":"c","line":88},{"name":"c","line":92},{"name":"self_claim","line":97},{"name":"stale","line":98}],"imports":[],"terms":["automation","leela","link","kind","bot","claimant","username","approver","owners","env","set","claim","cmd","list","approve","status","hex","ttl","hours","grant","days","steps","tool","caller","both","sellers","argument","reply","wait","replies","read","returns","session","transcript","confirmed","free","text","admin","seated","history","turns","handshake","ran","live","bridge","configured","approves","self","stale"]},{"id":"5da0cd1f49205e7080077d474642e34effa56a964c65882dbe82bc72b61473de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/fpga/mac.t27","health":"warn","module":"fpga_mac"}],"description":"","symbols":[],"imports":[],"terms":["fpga","mac"]},{"id":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/qmtech_a100t_integration.t27","health":"ok","module":"QMTech_A100T_Integration"}],"description":"t27/specs/fpga/boards/qmtech_a100t_integration.t27 QMTech XC7A100T Board-Level Integration Spec Full system for QMTech A100T development board","symbols":[{"name":"BOARD_NAME","line":13},{"name":"FPGA_PART","line":14},{"name":"CLOCK_FREQ_HZ","line":15},{"name":"UART_BAUD","line":16},{"name":"MEMORY_SIZE","line":17},{"name":"FIFO_DEPTH","line":18},{"name":"NUM_LEDS","line":19},{"name":"IO_STANDARD","line":20},{"name":"PinMapping","line":22},{"name":"QMTECH_PINS","line":30},{"name":"SystemConfig","line":38},{"name":"SYS_CONFIG","line":45},{"name":"calc_baud_divisor","line":52},{"name":"on_comb","line":109}],"imports":[{"name":"fpga::top_level::ZeroDSP_TopLevel","line":8},{"name":"fpga::gf16_accel::Gf16Accel","line":9},{"name":"fpga::memory::Memory","line":10},{"name":"fpga::fifo::Fifo","line":11}],"terms":["fpga","boards","qmtech","a100t","integration","board","part","clock","freq","uart","baud","memory","size","fifo","depth","num","leds","standard","pin","mapping","pins","system","config","sys","calc","divisor","comb"]},{"id":"5df21156f6f33ef7ae6c3270097a3636bbf5beda07b9cb8909ebbd1d3c4b755b","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/04_control_flow.t27","health":"ok","module":"tutorial-04-control-flow"}],"description":"04 — Control flow Lesson 4. if/else as a statement and as an expression, while, for over a range, and break/continue. . One rule worth learning before you need it: `switch` belongs in lesson 06, and only in its expression form. The statement form does not survive","symbols":[{"name":"TRIT_NEG","line":13},{"name":"TRIT_ZERO","line":14},{"name":"TRIT_POS","line":15},{"name":"sign_of","line":21},{"name":"larger","line":39},{"name":"clamp_to_trit","line":43},{"name":"high","line":44},{"name":"low","line":45},{"name":"count_to","line":56},{"name":"sum_to","line":64},{"name":"sum_with_step","line":84},{"name":"sum_range","line":101},{"name":"first_multiple","line":113}],"imports":[],"terms":["tutorial","control","flow","trit","neg","zero","pos","sign","larger","clamp","high","low","count","sum","step","range","multiple"]},{"id":"5e3cef83fe71fa8bdec4c2ef91200565a5461f4de0225a11d9544c366afdc65d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/utf8.t27","health":"ok","module":"TriUtf8"}],"description":"t27/specs/","symbols":[{"name":"Codepoint","line":13},{"name":"Rune","line":17},{"name":"decode","line":27},{"name":"encode","line":32},{"name":"count_codepoints","line":37},{"name":"validate","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","utf8","codepoint","rune","decode","encode","count","codepoints","validate"]},{"id":"5eca3b5f97e5f37833d43ccb80ffa6bebe1e2c76eec628c67cd63e45e2b67129","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_cs_bridge.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","lqg","bridge"]},{"id":"5f20d5a4653796ced96476efff8e40458120b4f2ea3a1552749d4e00caf461b2","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/ext.vscode-swe.t27","health":"ok","module":"trinity_capability_ext_vscode_swe"}],"description":"specs/trinity/capabilities/ext.vscode-swe.t27 -- capability trinity/ext.vscode-swe: The VS Code extension (vscode-trinity-swe, tools/vscode-extension) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","ext","vscode","swe","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"5f6e7ed53ca0f4ca52320a9c1ebdbbf079e371836de109c94dc440847fa0f2dc","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-wrap-up.t27","health":"ok","module":"skill_t27_wrap_up"}],"description":"specs/skills/t27-wrap-up.t27 -- skill t27/wrap-up Source of truth for the skill card on t27.ai (#/skills?skill=t27/wrap-up). The skill body lives in gHashTag/t27 at .claude/skills/wrap-up/skill.md (vendored copy: apps/website/public/skills/files/t27/wrap-up/skill.md, sha256 a4a9b4fd9d02...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","wrap","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"5f79143e4cf0f389ef7a03a3834a044e243fd3ca3cb04e06529a73690ecb4ca3","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/ternary_vs_binary.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"LayerConfig","line":49},{"name":"config","line":60},{"name":"input","line":61}],"imports":[],"terms":["benchmarks","ternary","binary","layer","config"]},{"id":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/ops.t27","health":"warn","module":"VSAOps"}],"description":"t27/specs/vsa/ops.t27 Vector Symbolic Architecture Operations Bind, Unbind, Bundle, Similarity for ternary hypervectors","symbols":[{"name":"VSA_DIM","line":16},{"name":"SIMD_WIDTH","line":17},{"name":"MAX_VECTORS","line":18},{"name":"SIM_COSINE","line":21},{"name":"SIM_HAMMING","line":22},{"name":"SIM_DOT","line":23},{"name":"BIND_IDENTITY","line":26},{"name":"BIND_INVERT","line":27},{"name":"bind","line":38},{"name":"ai","line":44},{"name":"bi","line":45},{"name":"product","line":53},{"name":"unbind","line":71},{"name":"bundle2","line":85},{"name":"ai","line":91},{"name":"bi","line":92},{"name":"sum","line":100},{"name":"trit","line":101},{"name":"bundle3","line":117},{"name":"ai","line":123},{"name":"bi","line":124},{"name":"ci","line":125},{"name":"sum","line":127},{"name":"trit","line":129},{"name":"similarity","line":147},{"name":"cosine_similarity","line":159},{"name":"dot","line":160},{"name":"norm_a","line":161},{"name":"norm_b","line":162},{"name":"hamming_similarity","line":173},{"name":"dist","line":174},{"name":"dot_product","line":180},{"name":"product","line":185},{"name":"vector_norm","line":197},{"name":"hamming_distance","line":213},{"name":"permute","line":234},{"name":"normalized_shift","line":238},{"name":"src_idx","line":242},{"name":"encode_sequence","line":253},{"name":"permuted","line":258},{"name":"probe_sequence","line":269},{"name":"permuted","line":270},{"name":"COPTIC_DIM","line":555},{"name":"coptic_bind","line":559},{"name":"ai","line":563},{"name":"bi","line":564},{"name":"coptic_unbind","line":577},{"name":"coptic_bundle3","line":581},{"name":"sum","line":585},{"name":"coptic_similarity","line":594}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10}],"terms":["vsa","ops","vsaops","dim","simd","width","max","vectors","sim","cosine","hamming","dot","bind","identity","invert","product","unbind","bundle2","sum","trit","bundle3","similarity","norm","dist","vector","distance","permute","normalized","shift","idx","encode","sequence","permuted","probe","coptic"]},{"id":"5fc4a500afccdf91e81c2bbde7b770e673efccc96e2d87ef377abdf723748610","sources":[{"repo":"ghashtag/t27","path":"specs/i18n/docs-ru.t27","health":"ok","module":"i18n_docs_ru"}],"description":"specs/i18n/docs-ru.t27 -- translation contract, Russian, for the system documentation Specs are English-only (LANG-EN). This module does not carry a single translated word: it declares WHICH fields of WHICH specs a bundle may translate, WHERE that bundle lives and HOW it is keyed, and what the site must do when a translation is missing. The Cyrillic payload is in the bundle file named below, never here. One module per locale: copy this file to docs-.t27 and change LOCALE and","symbols":[{"name":"KIND","line":14},{"name":"LOCALE","line":15},{"name":"SOURCE_LOCALE","line":16},{"name":"SCOPE","line":19},{"name":"FIELDS","line":22},{"name":"BUNDLE_REPO","line":23},{"name":"BUNDLE_PATH","line":24},{"name":"BUNDLE_FORMAT","line":25},{"name":"KEY","line":27},{"name":"FALLBACK","line":29},{"name":"COVERAGE_REQUIRED","line":31},{"name":"ORPHANS_ALLOWED","line":33},{"name":"ENABLED","line":34}],"imports":[],"terms":["i18n","docs","kind","locale","scope","fields","bundle","path","format","key","fallback","required","orphans","allowed","enabled"]},{"id":"5fdec7f0438860173e0475b5e8912e5045a7ab37639ae21ea6f6329830989c02","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/fp8_e4m3.t27","health":"warn","module":"triformat-fp8_e4m3"}],"description":"fp8_e4m3.t27 — FP8 E4M3 8-bit Floating Point 8-bit float with 4 exponent, 3 mantissa bits (no implicit leading bit) OCP FP8 format optimized for neural network training Range: ~-240 to ~240, precision: ~6-7 significant bits","symbols":[{"name":"BITS","line":14},{"name":"SIGN_BITS","line":15},{"name":"EXP_BITS","line":16},{"name":"MANT_BITS","line":17},{"name":"SIGN_SHIFT","line":19},{"name":"EXP_SHIFT","line":20},{"name":"MANT_SHIFT","line":21},{"name":"SIGN_MASK","line":23},{"name":"EXP_MASK","line":24},{"name":"MANT_MASK","line":25},{"name":"EXP_MAX","line":27},{"name":"EXP_MIN","line":28},{"name":"EXP_BIAS","line":29},{"name":"MANT_DIVISOR","line":31},{"name":"FP8_ZERO_POS","line":34},{"name":"FP8_ZERO_NEG","line":35},{"name":"FP8_NAN_POS","line":36},{"name":"FP8_NAN_NEG","line":37},{"name":"FP8_INF_POS","line":38},{"name":"FP8_INF_NEG","line":39},{"name":"SUBNORMAL_EXP","line":42},{"name":"FP8E4M3","line":48},{"name":"fp8_extract_sign","line":57},{"name":"bit","line":58},{"name":"fp8_extract_exponent","line":65},{"name":"fp8_extract_mantissa","line":72},{"name":"fp8_from_components","line":78},{"name":"sign_bit","line":79},{"name":"fp8_is_zero","line":91},{"name":"fp8_is_special","line":97},{"name":"fp8_is_inf","line":103},{"name":"fp8_is_nan","line":109},{"name":"fp8_is_subnormal","line":115},{"name":"fp8_encode_f32","line":126},{"name":"sign","line":143},{"name":"abs_value","line":144},{"name":"f32_bits","line":147},{"name":"subnormal_shift","line":154},{"name":"shift_amount","line":160},{"name":"discarded","line":185},{"name":"fp8_decode_f32","line":204},{"name":"sign","line":221},{"name":"exp","line":222},{"name":"mant","line":223},{"name":"bias_adjusted","line":230},{"name":"mant_f32","line":231},{"name":"bias_adjusted","line":235},{"name":"mant_f32","line":236},{"name":"fp8_encode_f64","line":245},{"name":"fp8_decode_f64","line":251},{"name":"f32_val","line":252},{"name":"fp8_add","line":262},{"name":"fa","line":263},{"name":"fb","line":264},{"name":"fp8_sub","line":270},{"name":"fa","line":271},{"name":"fb","line":272},{"name":"fp8_mul","line":278},{"name":"fa","line":279},{"name":"fb","line":280},{"name":"fp8_div","line":286},{"name":"fb","line":287},{"name":"fa","line":289},{"name":"fa","line":292},{"name":"fp8_sqrt","line":298},{"name":"fv","line":299},{"name":"fp8_rsqrt","line":308},{"name":"fv","line":309},{"name":"fp8_abs","line":318},{"name":"fp8_neg","line":324},{"name":"fp8_is_equal","line":330},{"name":"fp8_is_greater","line":342},{"name":"sign_a","line":346},{"name":"sign_b","line":347},{"name":"fp8_max","line":359},{"name":"fp8_min","line":365},{"name":"fp8_clamp","line":371},{"name":"fp8_lerp","line":377},{"name":"fa","line":378},{"name":"fb","line":379},{"name":"result","line":380},{"name":"fp8_fma","line":386},{"name":"fa","line":387},{"name":"fb","line":388},{"name":"fc","line":389},{"name":"fp8_scale","line":395},{"name":"fv","line":396},{"name":"fp8_relu","line":402},{"name":"fp8_sigmoid","line":408},{"name":"fv","line":409},{"name":"fp8_tanh","line":415},{"name":"fv","line":416},{"name":"fp8_gelu","line":422},{"name":"fv","line":423},{"name":"sqrt_2_over_pi","line":424},{"name":"cube_coeff","line":425},{"name":"tanh_arg","line":426},{"name":"fp8_swish","line":432},{"name":"fv","line":433},{"name":"fp8_quantize_to_int4","line":439},{"name":"fv","line":440},{"name":"scaled","line":441},{"name":"fp8_quantize_to_int8","line":453},{"name":"fv","line":454},{"name":"scaled","line":455}],"imports":[],"terms":["euler","fpga","fp8","e4m3","triformat","bits","sign","exp","mant","shift","mask","max","min","bias","divisor","zero","pos","neg","nan","inf","subnormal","fp8e4m3","extract","bit","exponent","mantissa","components","special","encode","f32","abs","amount","discarded","decode","adjusted","f64","val","sub","mul","div","sqrt","rsqrt","equal","greater","clamp","lerp","fma","scale","relu","sigmoid","tanh","gelu","over","cube","coeff","arg","swish","quantize","int4","scaled","int8"]},{"id":"5feb63007768c9262c64e33e8fcab24e138067718da09184d0e21bdfa3204ef7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/map.t27","health":"ok","module":"TriMap"}],"description":"t27/specs/","symbols":[{"name":"Map","line":13},{"name":"empty","line":23},{"name":"singleton","line":28},{"name":"get","line":33},{"name":"set","line":38},{"name":"keys","line":43},{"name":"values","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","map","empty","singleton","get","set","keys","values"]},{"id":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/gf16_accel.t27","health":"ok","module":"Gf16Accel"}],"description":"t27/specs/fpga/gf16_accel.t27 GF(16) Hardware Accelerator Specification for Trinity T27 FPGA HIR Defines GF16 MAC, FFT, and VSA (Vector Space Architecture) operations Connects phi-identity (phi^2 = phi + 1, phi^2 + phi^-2 = 3) to silicon Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"GF16_BITS","line":13},{"name":"GF16_ELEMENTS","line":14},{"name":"GF16_FIELD_POLY","line":15},{"name":"PHI_WIDTH","line":16},{"name":"Gf16Op","line":20},{"name":"Gf16Config","line":33},{"name":"Gf16MacUnit","line":46},{"name":"Gf16FftConfig","line":55},{"name":"Gf16Status","line":64},{"name":"gf16_basic","line":73},{"name":"gf16_full","line":86},{"name":"gf16_mac_unit","line":99},{"name":"gf16_fft","line":108},{"name":"gf16_idle_status","line":117},{"name":"gf16_busy_status","line":126},{"name":"total_gf16_bits","line":137},{"name":"mac_unit_count","line":141},{"name":"fft_stages","line":148},{"name":"fft_twiddle_count","line":159},{"name":"matmul_cycles","line":163},{"name":"dot_product_cycles","line":170},{"name":"dsp48_count","line":177},{"name":"bram_count","line":181},{"name":"is_busy","line":192},{"name":"result_ready","line":196},{"name":"phi_squared_plus_phi_inverse_squared","line":202},{"name":"phi_squared_equals_phi_plus_one","line":206},{"name":"validate_gf16_config","line":212},{"name":"validate_mac_unit","line":229},{"name":"validate_fft","line":240}],"imports":[],"terms":["fpga","gf16","accel","gf16accel","bits","elements","field","poly","phi","width","gf16op","gf16config","gf16mac","unit","gf16fft","config","gf16status","basic","full","mac","fft","idle","status","busy","total","count","stages","twiddle","matmul","cycles","dot","product","dsp48","bram","ready","squared","plus","inverse","equals","one","validate"]},{"id":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf4.t27","health":"ok","module":"GF4"}],"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 — 4-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 2 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF4","line":34},{"name":"encode","line":43},{"name":"pos","line":49},{"name":"decode","line":61},{"name":"sign_bit","line":62},{"name":"exp_bit","line":63},{"name":"mant_bits","line":64},{"name":"mant","line":72},{"name":"exp_scale","line":75},{"name":"value","line":77},{"name":"max_value","line":89},{"name":"min_positive","line":94},{"name":"epsilon","line":99},{"name":"validate_format","line":108},{"name":"fmt","line":110},{"name":"MEMORY_RATIO_VS_FP32","line":128}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf4","bits","sign","exp","mant","bias","phi","distance","encode","pos","decode","bit","scale","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32"]},{"id":"601efe186f5a97dbfd2e82e397ac53f32210ccedb4fadf1c2ffd0c0ee62e4530","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/discard.t27","health":"ok","module":"tool_tri_discard"}],"description":"specs/tools/tri/discard.t27 -- tool tri/discard, the `tri discard` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/discard). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["discard","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"607d9e99f30688eb84635aa46ad305d3a08ee9fba01b2e0ec7a093276bcad285","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_gemm.t27","health":"ok","module":"igla-race-ternary-gemm"}],"description":"t27/specs/igla/race/ternary_gemm.t27 Ternary GEMM specification -- 2x2 matrix multiply with {-1,0,+1} weights Uses flattened 1D arrays; zero * operators in multiply path (R-SI-1)","symbols":[{"name":"TernaryGemmResult","line":16},{"name":"ternary_gemm_2x2","line":29},{"name":"ternary_gemm_2x2_as_struct","line":41},{"name":"ternary_gemm_4x4","line":55},{"name":"ternary_gemm_4x4_as_struct","line":81},{"name":"get_elem_2x2","line":92},{"name":"get_elem_4x4","line":152},{"name":"ternary_dot_8x8_elem","line":198},{"name":"ternary_gemm_8x8_cols","line":208},{"name":"ternary_gemm_8x8_rows","line":217},{"name":"ternary_gemm_8x8","line":227},{"name":"ternary_gemm_8x8_as_struct","line":232},{"name":"get_elem_8x8","line":238}],"imports":[{"name":"base::types","line":8},{"name":"igla::race::ternary_mac","line":9}],"terms":["igla","race","ternary","gemm","2x2","struct","4x4","get","elem","dot","8x8","cols","rows"]},{"id":"60a00727a2f7abdb0a28fd463c3ff731681e82b59a4371857cdd1f3be0b319f1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/measurement.t27","health":"ok","module":"TriMeasurement"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","measurement"]},{"id":"60f5f9fd2a85ea4dbfd20c2e42356184ec9e8d78ed586cafc3ec3fecf801ec44","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/cross_entropy_loss.t27","health":"ok","module":"CrossEntropy"}],"description":"t27/specs/","symbols":[{"name":"MIN_LOG_PROB","line":13},{"name":"DEFAULT_LABEL_SMOOTHING","line":14},{"name":"CrossEntropyConfig","line":20},{"name":"ReductionType","line":26},{"name":"forward","line":39},{"name":"backward","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","cross","entropy","min","log","prob","default","label","smoothing","config","reduction","forward","backward"]},{"id":"60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3","sources":[{"repo":"ghashtag/t27","path":"specs/shell/schema.t27","health":"ok","module":"Shell"}],"description":"specs/shell/schema.t27 Shell Types Specification","symbols":[{"name":"ShellType","line":13},{"name":"Platform","line":26},{"name":"ProcessStatus","line":37},{"name":"ProcessInfo","line":45},{"name":"ProcessOptions","line":56},{"name":"ProcessResult","line":66},{"name":"ShellProperties","line":80},{"name":"EnvVar","line":94},{"name":"SIGKILL_TIMEOUT_MS","line":103},{"name":"SHELL_ENV_VAR","line":104},{"name":"ShellError","line":111},{"name":"is_posix","line":126},{"name":"is_login","line":134},{"name":"is_blacklisted","line":143},{"name":"is_success","line":148}],"imports":[{"name":"base::types","line":6}],"terms":["shell","schema","platform","process","status","info","options","properties","env","var","sigkill","timeout","posix","login","blacklisted","success"]},{"id":"6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/load_predictor.t27","health":"warn","module":"load_predictor"}],"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","symbols":[{"name":"MAX_NODES","line":7},{"name":"HISTORY_SIZE","line":8},{"name":"CONGESTION_THRESHOLD","line":9},{"name":"WARNING_THRESHOLD","line":10},{"name":"PREDICTION_WINDOW","line":11},{"name":"create_load_metrics","line":14},{"name":"get_bandwidth_usage","line":21},{"name":"get_cpu_usage","line":25},{"name":"get_packet_rate","line":29},{"name":"get_queue_depth","line":33},{"name":"create_prediction","line":38},{"name":"get_predicted_load","line":45},{"name":"get_confidence","line":49},{"name":"get_trend","line":53},{"name":"get_time_horizon","line":57},{"name":"calculate_moving_average","line":62},{"name":"detect_trend","line":80},{"name":"predict_load","line":107},{"name":"calculate_confidence","line":138},{"name":"create_load_prediction","line":178},{"name":"is_congestion_predicted","line":188},{"name":"is_warning_predicted","line":200},{"name":"calculate_network_load","line":212},{"name":"find_most_loaded_node","line":230},{"name":"find_least_loaded_node","line":248},{"name":"calculate_load_imbalance","line":266},{"name":"recommend_rerouting","line":291}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","load","predictor","max","nodes","history","size","congestion","threshold","warning","prediction","window","create","metrics","get","bandwidth","usage","cpu","packet","rate","queue","depth","predicted","confidence","trend","time","horizon","calculate","moving","average","detect","predict","network","find","most","loaded","node","least","imbalance","recommend","rerouting"]},{"id":"61c1edda964778e108dde6336fc5e56af6f99cda5bb8549db12833e6d399de2e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crypto_frame.t27","health":"ok","module":"CryptoFrame"}],"description":"tri-net/specs/crypto_frame.t27 Partial spec-first lift of src/crypto.rs (T27-first): the INTEGER session-frame discipline. The AEAD itself (ChaCha20-Poly1305), X25519 and HKDF stay in Rust; what lives here is everything an auditor checks with arithmetic alone: wire frame = [epoch u32 BE][counter u64 BE][ciphertext || tag16] AEAD nonce = [dir:1][epoch:4 BE][counter low 7 BE] (12 bytes)","symbols":[{"name":"EPOCH_LEN","line":27},{"name":"COUNTER_LEN","line":28},{"name":"HEADER_LEN","line":29},{"name":"TAG_LEN","line":30},{"name":"NONCE_LEN","line":31},{"name":"counter_offset","line":34},{"name":"ciphertext_offset","line":38},{"name":"frame_len_ok","line":43},{"name":"REKEY_EVERY_FRAMES","line":48},{"name":"REKEY_HARD_CAP","line":49},{"name":"should_ratchet","line":52},{"name":"must_reject","line":57},{"name":"nonce_byte","line":63},{"name":"rx_dir","line":76},{"name":"WINDOW_WIDTH","line":89},{"name":"replay_accept","line":92},{"name":"replay_next_top","line":110},{"name":"replay_next_blo","line":122},{"name":"replay_next_bhi","line":142}],"imports":[{"name":"base::types","line":24}],"terms":["net","crypto","frame","epoch","len","counter","header","tag","nonce","offset","ciphertext","rekey","frames","hard","cap","ratchet","reject","byte","dir","window","width","replay","accept","top","blo","bhi"]},{"id":"61d170317eadcdfe028549190c431b633d93cb5dc2dea7fdc1c041c71154b34f","sources":[{"repo":"ghashtag/t27","path":"specs/agents/b.t27","health":"ok","module":"agent_b"}],"description":"specs/agents/b.t27 -- agent t27/B, letter B of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/B). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent B - Beta (Build)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/compression_engine.t27","health":"warn","module":"compression_engine"}],"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","symbols":[{"name":"MAX_BLOCKS","line":7},{"name":"BLOCK_SIZE","line":8},{"name":"COMPRESSION_THRESHOLD","line":9},{"name":"DICTIONARY_SIZE","line":10},{"name":"create_block_info","line":13},{"name":"get_original_size","line":20},{"name":"get_compressed_size","line":24},{"name":"get_compression_method","line":28},{"name":"get_compression_quality","line":32},{"name":"METHOD_NONE","line":37},{"name":"METHOD_RLE","line":38},{"name":"METHOD_DICTIONARY","line":39},{"name":"METHOD_DELTA","line":40},{"name":"calculate_compression_ratio","line":43},{"name":"compress_rle","line":52},{"name":"decompress_rle","line":82},{"name":"compress_dictionary","line":106},{"name":"decompress_dictionary","line":141},{"name":"compress_delta","line":150},{"name":"decompress_delta","line":171},{"name":"choose_compression_method","line":202},{"name":"compress_block","line":232},{"name":"decompress_block","line":258},{"name":"calculate_total_savings","line":271},{"name":"update_dictionary","line":290},{"name":"find_pattern","line":300},{"name":"calculate_compression_speed","line":316}],"imports":[{"name":"base::types","line":5}],"terms":["net","compression","engine","max","blocks","block","size","threshold","dictionary","create","info","get","original","compressed","method","quality","rle","delta","calculate","ratio","compress","decompress","choose","total","savings","find","pattern","speed"]},{"id":"622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_benchmarks.t27","health":"ok","module":"PerformanceBenchmarks"}],"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","symbols":[{"name":"MAX_QUEUE_SIZE","line":8},{"name":"MAX_COUNTER","line":9},{"name":"TIMER_TICK_US","line":10},{"name":"create_queue","line":13},{"name":"queue_count","line":17},{"name":"queue_head","line":21},{"name":"queue_tail","line":25},{"name":"queue_enqueue","line":29},{"name":"queue_dequeue","line":38},{"name":"queue_is_full","line":48},{"name":"queue_is_empty","line":52},{"name":"inc_counter","line":57},{"name":"counter_will_overflow","line":65},{"name":"ticks_to_microseconds","line":70},{"name":"microseconds_to_ticks","line":74},{"name":"ticks_to_milliseconds","line":78}],"imports":[{"name":"base::types","line":5}],"terms":["net","performance","benchmarks","max","queue","size","counter","timer","tick","create","count","head","tail","enqueue","dequeue","full","empty","inc","overflow","ticks","microseconds","milliseconds"]},{"id":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/corona_oracle.t27","health":"ok","module":"CoronaOracle"}],"description":"specs/corona/corona_oracle.t27 TRI-1 Corona -- Format Conformance Oracle (top-level SSOT)","symbols":[{"name":"CHIP_NAME","line":28},{"name":"CHIP_LINE","line":29},{"name":"CHIP_LINE_INDEX","line":30},{"name":"CHIP_ROLE","line":31},{"name":"TARGET_SHUTTLE","line":32},{"name":"TARGET_PDK","line":33},{"name":"TARGET_PROCESS","line":34},{"name":"CHIP_STATUS","line":35},{"name":"TILE_OPTION_A","line":39},{"name":"TILE_OPTION_B","line":40},{"name":"TOTAL_FORMATS","line":88},{"name":"CLUSTER_COUNTS","line":91},{"name":"ROM_RECORD_BITS","line":122},{"name":"ROM_RECORD_BYTES","line":123},{"name":"ROM_RECORDS","line":124},{"name":"ROM_TOTAL_BYTES_MIN","line":130},{"name":"ROM_TOTAL_BYTES_MAX","line":131},{"name":"GF_LADDER_EXTENDED","line":151},{"name":"TIER1_MODULES","line":184},{"name":"TIER2_ROM_ONLY","line":206},{"name":"ANCHOR_VALUE","line":230},{"name":"STATUS_VERIFIED","line":239},{"name":"STATUS_EMPIRICAL_FIT","line":240},{"name":"STATUS_OPEN_CONJECTURE","line":241},{"name":"STATUS_RISK","line":242},{"name":"STATUS_RETRACTED","line":243},{"name":"STATUS_EXPERIMENTAL","line":244},{"name":"STATUS_HISTORICAL","line":245},{"name":"STATUS_SPEC","line":246},{"name":"FL002_STATUS","line":256},{"name":"FL002_PROMOTED_BY_CORONA","line":257}],"imports":[{"name":"base::types","line":15},{"name":"math::constants","line":16},{"name":"math::sacred_physics","line":17},{"name":"numeric::formats_catalog","line":18},{"name":"numeric::goldenfloat_family","line":19},{"name":"corona::rom_layout","line":20},{"name":"corona::protocol","line":21},{"name":"corona::anchor","line":22}],"terms":["corona","oracle","chip","index","role","target","shuttle","pdk","process","status","tile","option","total","formats","cluster","counts","rom","record","bits","bytes","records","min","max","ladder","extended","tier1","modules","tier2","anchor","verified","empirical","fit","open","conjecture","risk","retracted","experimental","historical","fl002","promoted"]},{"id":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/backend.t27","health":"ok","module":"igla-race-backend"}],"description":"t27/specs/igla/race/backend.t27 R-SI-1 compile-time backend pass specification for IGLA RACE NOTE: This spec uses recursion instead of loops to avoid t27c parser body-truncation on unsupported constructs (for, while+if, var-before-if, .as_bytes(), @intCast, match, format!, .push(), .extend()).","symbols":[{"name":"contains_multiply","line":41},{"name":"ReplaceMulResult","line":51},{"name":"replace_multiply","line":60},{"name":"shift_add_decompose","line":81},{"name":"BoothResult","line":102},{"name":"booth_encode","line":111},{"name":"booth_decompose","line":132},{"name":"r_si_1_pass","line":152},{"name":"SplitResult","line":167},{"name":"split_binary_op","line":174},{"name":"split_binary_op_inner","line":178},{"name":"trim_left","line":190},{"name":"trim_right","line":200},{"name":"trim","line":210},{"name":"contains_multiply_in_rhs","line":218},{"name":"contains_multiply_in_rhs_inner","line":222},{"name":"contains_substring","line":239},{"name":"contains_substring_inner","line":246},{"name":"substring_match","line":256},{"name":"parse_const","line":275},{"name":"parse_decimal_inner","line":285},{"name":"parse_hex_inner","line":295},{"name":"parse_bin_inner","line":311},{"name":"is_const","line":325},{"name":"is_const_start","line":333},{"name":"is_hex_digit","line":340},{"name":"is_const_inner","line":347},{"name":"is_power_of_two_const","line":358},{"name":"is_power_of_two_check","line":363},{"name":"log2_const","line":377},{"name":"log2_const_inner","line":382},{"name":"test_booth_encode_zero","line":394},{"name":"test_booth_encode_power_of_two","line":401},{"name":"test_contains_multiply_literal","line":408},{"name":"test_r_si_1_preserves_structure","line":415},{"name":"test_parse_const_decimal","line":430},{"name":"test_parse_const_hex","line":436},{"name":"test_is_power_of_two","line":442},{"name":"test_log2_const","line":449},{"name":"test_trim","line":455},{"name":"test_split_binary_op","line":461},{"name":"inv_booth_width_positive","line":468},{"name":"test_contains_multiply_star_in_comment_only","line":507},{"name":"test_booth_encode_negative_constant_repeated_add","line":512},{"name":"test_replace_multiply_negative_constant_fallback","line":519},{"name":"test_parse_const_hex_max_u32","line":526},{"name":"compute_tops_per_mm2_w","line":560},{"name":"energy_efficiency_reward","line":567}],"imports":[{"name":"base::types","line":11},{"name":"igla::race::rtl","line":12}],"terms":["igla","race","backend","contains","multiply","replace","mul","shift","decompose","booth","encode","pass","split","binary","inner","trim","left","right","rhs","substring","match","parse","decimal","hex","bin","start","digit","power","two","log2","zero","literal","preserves","structure","inv","width","positive","star","negative","constant","repeated","fallback","max","u32","compute","tops","per","mm2","energy","efficiency","reward"]},{"id":"63216e4dbe843da95dd62bfc13b7741e6bf343e3bcf3d407e084d6be61e84dfe","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/octree.t27","health":"ok","module":"TriOctree"}],"description":"t27/specs/","symbols":[{"name":"BBox","line":13},{"name":"OctNode","line":22},{"name":"Octree","line":30},{"name":"init","line":41},{"name":"insert","line":46},{"name":"query","line":51},{"name":"deinit","line":56}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","octree","bbox","oct","node","init","insert","query","deinit"]},{"id":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/build_graph.t27","health":"ok","module":"trinity_build_graph"}],"description":"specs/trinity/build_graph.t27 -- the build graph of gHashTag/trinity, its pins, its profiles, its generated-file boundaries and the receipt policy of the bootstrap/fixture profile Source of truth for tools/trinity_build_receipt.py (gHashTag/t27#3565 = S03 of gHashTag/trinity#988). The graph itself -- every module build.zig names and every import edge -- is derived from the pinned tree into conformance/trinity/build_graph.json and held to what this file declares: the pinned packages and how build.zig uses them, the submodule, the profiles and","symbols":[{"name":"KIND","line":16},{"name":"ID","line":17},{"name":"NAME","line":18},{"name":"CONSUMER_REPO","line":19},{"name":"PINNED_REVISION","line":20},{"name":"ZIG_REQUIRED","line":22},{"name":"ZIG_CI","line":23},{"name":"CI_RUNNER","line":24},{"name":"CI_BUILD","line":25},{"name":"CI_TEST","line":26},{"name":"CI_TEST_EXIT_PROPAGATED","line":28},{"name":"CI_EVIDENCE","line":29},{"name":"OPTIONS","line":31},{"name":"DEPENDENCIES","line":33},{"name":"DEPENDENCY_PINS","line":34},{"name":"DEPENDENCY_USE","line":35},{"name":"SUBMODULES","line":36},{"name":"SUBMODULE_NOTE","line":37},{"name":"PROFILES","line":39},{"name":"PROFILE_STATUS","line":40},{"name":"OUTPUT_UNTRACKED","line":42},{"name":"GENERATED_TRACKED","line":46},{"name":"GENERATED_BY","line":47},{"name":"GENERATED_INPUTS","line":48},{"name":"GENERATED_LOCATIONS","line":51},{"name":"GENERATED_UNREGISTERED_ALLOWED","line":55},{"name":"BOOTSTRAP_COMMANDS","line":57},{"name":"BOOTSTRAP_RUNS","line":58},{"name":"NORMALIZATION","line":59},{"name":"BOOTSTRAP_CI_EVIDENCE","line":60},{"name":"NONDETERMINISM_ISSUE","line":61},{"name":"ENABLED","line":62}],"imports":[],"terms":["build","graph","kind","consumer","pinned","revision","zig","required","runner","exit","propagated","evidence","options","dependencies","dependency","pins","submodules","submodule","note","profiles","profile","status","untracked","generated","tracked","inputs","locations","unregistered","allowed","bootstrap","commands","runs","normalization","nondeterminism","enabled"]},{"id":"63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/load_predictor.t27","health":"warn","module":"load_predictor"}],"description":"Load Predictor - predict network load and congestion Enables proactive congestion management and resource allocation","symbols":[{"name":"MAX_NODES","line":7},{"name":"HISTORY_SIZE","line":8},{"name":"CONGESTION_THRESHOLD","line":9},{"name":"WARNING_THRESHOLD","line":10},{"name":"PREDICTION_WINDOW","line":11},{"name":"create_load_metrics","line":14},{"name":"get_bandwidth_usage","line":21},{"name":"get_cpu_usage","line":25},{"name":"get_packet_rate","line":29},{"name":"get_queue_depth","line":33},{"name":"create_prediction","line":38},{"name":"get_predicted_load","line":45},{"name":"get_confidence","line":49},{"name":"get_trend","line":53},{"name":"get_time_horizon","line":57},{"name":"calculate_moving_average","line":62},{"name":"detect_trend","line":80},{"name":"predict_load","line":107},{"name":"calculate_confidence","line":143},{"name":"create_load_prediction","line":183},{"name":"is_congestion_predicted","line":193},{"name":"is_warning_predicted","line":205},{"name":"calculate_network_load","line":217},{"name":"find_most_loaded_node","line":235},{"name":"find_least_loaded_node","line":253},{"name":"calculate_load_imbalance","line":271},{"name":"recommend_rerouting","line":296}],"imports":[{"name":"base::types","line":5}],"terms":["net","load","predictor","max","nodes","history","size","congestion","threshold","warning","prediction","window","create","metrics","get","bandwidth","usage","cpu","packet","rate","queue","depth","predicted","confidence","trend","time","horizon","calculate","moving","average","detect","predict","network","find","most","loaded","node","least","imbalance","recommend","rerouting"]},{"id":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/insertion_sort.t27","health":"ok","module":"TriInsertionSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","insertion"]},{"id":"63e47ac5ad1debf3f67aa872cb4418c39a903c509df0c6c53ee6b4b19e1eb22a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_layer3.t27","health":"warn","module":"GftLayer3"}],"description":"","symbols":[{"name":"magadd","line":14},{"name":"magsub","line":34},{"name":"sadd","line":59},{"name":"contrib","line":71},{"name":"activate","line":77},{"name":"neuron4","line":83},{"name":"on_comb","line":90}],"imports":[],"terms":["ternary","gft","layer3","magadd","magsub","sadd","contrib","activate","neuron4","comb"]},{"id":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/availability.t27","health":"ok","module":"availability"}],"description":"specs/turbobaby/availability.t27 -- what \"available\" counts, and everything it refuses to count Source of truth for the availability half of issue #4's `bike_units` table (the status set and the derived per-family count), for the availability filter of the catalog API (#8), and for the \"unavailable rather than hidden\" rule the detail screen (#9) renders. Every number below is read from data/fleet_seed.json (measured_at 2026-09-12) or from DECISIONS.md, and each carries where it comes from. Nothing here is computed from a price and nothing is parsed out of prose.","symbols":[{"name":"KIND","line":71},{"name":"ID","line":72},{"name":"NAME","line":73},{"name":"SOURCE","line":74},{"name":"MEASURED_AT","line":75},{"name":"STATUS_UNSET","line":87},{"name":"STATUS_AVAILABLE","line":88},{"name":"STATUS_RENTED","line":89},{"name":"STATUS_SERVICE","line":90},{"name":"STATUS_RETIRED","line":91},{"name":"STATUS_NAMES","line":93},{"name":"RESERVED_STATUS","line":96},{"name":"RESERVED_STATUS_NOTE","line":97},{"name":"FAMILY_KEYS","line":106},{"name":"FAMILY_UNITS","line":110},{"name":"FAMILY_RENTED","line":111},{"name":"FAMILY_AVAILABLE","line":112},{"name":"FAMILIES_IN_STOCK","line":115},{"name":"FAMILIES_OFFERED","line":116},{"name":"FLEET_UNITS","line":117},{"name":"FLEET_RENTED","line":118},{"name":"FLEET_AVAILABLE","line":119},{"name":"BOOKABLE_FAMILIES","line":121},{"name":"OFFERED_WITH_ZERO_AVAILABLE_FAMILIES","line":124},{"name":"OFFERED_OUT_ON_CONTRACT_KEYS","line":125},{"name":"MEASURED_SERVICE_OR_RETIRED_UNITS","line":128},{"name":"REGISTER_HEADER_UNITS","line":131},{"name":"REGISTER_HEADER_RENTED","line":132},{"name":"REGISTER_HEADER_AT_BASE","line":133},{"name":"SERVICE_DUE_UNITS","line":139},{"name":"PRICE_LIST_ONLY_FAMILIES","line":152},{"name":"PRICE_LIST_ONLY_UNITS","line":153},{"name":"CLICK_125_CLOSED_ON","line":158},{"name":"CLICK_125_EXISTING_RENTAL_CONTINUES","line":159},{"name":"CLICK_125_STALE_GRID_RATE_THB","line":160},{"name":"CLICK_125_STALE_GRID_IS_QUOTABLE","line":161},{"name":"CLICK_125_REDIRECTS","line":165},{"name":"CLICK_125_REDIRECT_UNITS_AVAILABLE","line":166},{"name":"FILE_MAY_RULE_OUT","line":169},{"name":"FILE_MAY_CONFIRM","line":170},{"name":"CONFIRMATION_AUTHORITY","line":171},{"name":"MAX_UNITS_PER_FAMILY","line":179},{"name":"UnitSlot","line":187},{"name":"SLOT_LABEL_EXAMPLE","line":192},{"name":"status_is_known","line":197},{"name":"is_available","line":202},{"name":"status_class_hits","line":209},{"name":"available_count","line":231},{"name":"n","line":232},{"name":"offerable_count","line":248},{"name":"has_an_available_unit","line":257},{"name":"is_bookable","line":261},{"name":"REASON_BOOKABLE","line":265},{"name":"REASON_NOT_OFFERED","line":266},{"name":"REASON_NO_UNITS","line":267},{"name":"REASON_NEITHER","line":268},{"name":"REASON_NAMES","line":269},{"name":"unbookable_reason","line":271},{"name":"may_confirm","line":284},{"name":"usable_click_redirect_count","line":288},{"name":"sum_column","line":302},{"name":"verify_family_rows_close","line":314},{"name":"largest_family_units","line":331},{"name":"NO_UNITS","line":353},{"name":"FORZA_300_SLOTS","line":355},{"name":"NMAX_155_SLOTS","line":357},{"name":"XMAX_300_NEW_SLOTS","line":359}],"imports":[],"terms":["turbobaby","user","bot","availability","kind","measured","status","unset","available","rented","service","retired","reserved","note","family","keys","units","families","stock","offered","fleet","bookable","zero","out","contract","register","header","base","due","price","list","click","closed","existing","rental","continues","stale","grid","rate","thb","quotable","redirects","redirect","may","rule","confirm","confirmation","authority","max","per","unit","slot","label","example","known","class","hits","count","offerable","reason","neither","unbookable","usable","sum","column","verify","rows","close","largest","forza","slots","nmax","xmax"]},{"id":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/stream_compute.t27","health":"ok","module":"TrinityMemoryStreamComputeSpec"}],"description":"specs/memory/tmem/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is","symbols":[{"name":"TMS_DOT_LANES","line":16},{"name":"TMS_DOT_LANE_BITS","line":17},{"name":"TMS_DOT_LANE_FIELD_BITS","line":18},{"name":"TMS_DOT_DECODED_VALID_BIT","line":19},{"name":"TMS_DOT_CODE_BITS","line":20},{"name":"TMS_DOT_DENSE_CODE_BITS","line":21},{"name":"TMS_DOT_DENSE_CODE_LIMIT","line":22},{"name":"TMS_DOT_BASELINE_CODE_LIMIT","line":23},{"name":"TMS_DOT_ACTIVATION_BITS","line":24},{"name":"TMS_DOT_ACTIVATION_FIELD_BITS","line":25},{"name":"TMS_DOT_ACTIVATION_MIN","line":26},{"name":"TMS_DOT_ACTIVATION_MAX","line":27},{"name":"TMS_DOT_MASK_BITS","line":28},{"name":"TMS_DOT_FULL_MASK","line":29},{"name":"TMS_DOT_EMPTY_MASK","line":30},{"name":"TMS_DOT_GROUP_SUM_MIN","line":31},{"name":"TMS_DOT_GROUP_SUM_MAX","line":32},{"name":"TMS_DOT_ACC_WIDTH_MIN","line":36},{"name":"TMS_DOT_ACC_WIDTH_MAX","line":37},{"name":"TMS_DOT_RUNNER_ACC_WIDTH_MIN","line":38},{"name":"TMS_DOT_DEFAULT_ACC_WIDTH","line":39},{"name":"TMS_DOT_ERROR_RESULT","line":40},{"name":"TMS_DOT_PIPELINE_STAGES","line":45},{"name":"TMS_DOT_ACCEPT_TO_VALID_EDGES","line":46},{"name":"TMS_DOT_ACCEPT_TO_CONSUME_EDGES","line":47},{"name":"TMS_RTL_PACKET_CODE_SHIFT","line":50},{"name":"TMS_RTL_PACKET_ACTIVATION_SHIFT","line":51},{"name":"TMS_RTL_PACKET_MASK_SHIFT","line":52},{"name":"TMS_RTL_PACKET_LAST_BIT","line":53},{"name":"TMS_RTL_PACKET_RESET_BIT","line":54},{"name":"TMS_RTL_PACKET_RESET_PENDING_BIT","line":55},{"name":"TMS_RTL_EXPECTED_RESULT_BITS","line":56},{"name":"TMS_RTL_EXPECTED_ERROR_BIT","line":57},{"name":"TMS_RTL_ERR_ARGUMENT","line":58},{"name":"TMS_RTL_ERR_CAPACITY","line":59},{"name":"TMS_RTL_ERR_OVERFLOW","line":60},{"name":"TMS_RTL_ERR_OUTPUT","line":61},{"name":"TMS_RTL_ERR_MISMATCH","line":62},{"name":"TMS_RTL_ERR_PROCESS","line":63},{"name":"TMS_RTL_ERR_RESOURCE","line":64},{"name":"TMS_STORAGE_CAPACITY_GROUPS","line":69},{"name":"TMS_STORAGE_TRITS_PER_WORD","line":70},{"name":"TMS_STORAGE_MAX_TRITS","line":71},{"name":"TMS_STORAGE_DENSE_CODE_WIDTH","line":72},{"name":"TMS_STORAGE_BASELINE_CODE_WIDTH","line":73},{"name":"TMS_STORAGE_ELEMENT_BITS","line":74},{"name":"TMS_STORAGE_START_TO_WORD0_EDGES","line":75},{"name":"TMS_STORAGE_HAS_BACKPRESSURE","line":76},{"name":"TMS_STORAGE_JOIN_NEEDS_BUFFER","line":77},{"name":"TMS_VIEW_VALID_BIT","line":78},{"name":"TMS_VIEW_MASK_SHIFT","line":79},{"name":"TMS_VIEW_LANE_FIELD_MASK","line":80},{"name":"tms_dot_dense_digit","line":83},{"name":"tms_dot_decode","line":91},{"name":"tms_dot_lane_trit","line":109},{"name":"tms_dot_activation","line":116},{"name":"tms_dot_pack_activations","line":123},{"name":"tms_dot_product","line":132},{"name":"tms_dot_group_sum","line":137},{"name":"tms_dot_mask_valid","line":146},{"name":"tms_dot_lane_valid","line":151},{"name":"tms_dot_group_valid","line":156},{"name":"tms_dot_width_supported","line":168},{"name":"tms_dot_runner_width_supported","line":172},{"name":"tms_dot_acc_max","line":176},{"name":"tms_dot_acc_min","line":180},{"name":"tms_dot_next_error","line":184},{"name":"tms_dot_accumulate_ready","line":191},{"name":"tms_dot_in_ready","line":195},{"name":"tms_dot_encoded_bits","line":200},{"name":"tms_rtl_packet_word","line":206},{"name":"tms_rtl_expected_word","line":219},{"name":"tms_rtl_packet_count","line":225},{"name":"tms_storage_words","line":232},{"name":"tms_storage_last_mask","line":236},{"name":"tms_storage_config_ok","line":241},{"name":"tms_storage_busy","line":245},{"name":"tms_storage_load_ready","line":249},{"name":"tms_storage_word_edge","line":255},{"name":"tms_storage_idle_edge","line":259},{"name":"tms_view_pack","line":264}],"imports":[],"terms":["memory","tmem","stream","compute","tms","dot","lanes","lane","bits","field","decoded","valid","bit","dense","limit","baseline","activation","min","max","mask","full","empty","group","sum","acc","width","runner","default","pipeline","stages","accept","edges","consume","rtl","packet","shift","reset","expected","err","argument","capacity","overflow","mismatch","process","resource","storage","groups","trits","per","word","element","start","word0","backpressure","join","buffer","view","digit","decode","trit","pack","activations","product","supported","accumulate","ready","encoded","count","words","config","busy","load","edge","idle"]},{"id":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/linker.t27","health":"warn","module":"Linker"}],"description":"t27/specs/fpga/linker.t27 T27 Linker Specification Links assembled object files into executable images for ternary core Handles section merging, symbol resolution, address assignment, relocations Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"LinkSection","line":13},{"name":"link_text","line":21},{"name":"link_data","line":31},{"name":"link_bss","line":41},{"name":"section_end","line":51},{"name":"section_aligned","line":55},{"name":"LinkedSymbol","line":68},{"name":"linked_symbol","line":77},{"name":"is_global","line":88},{"name":"is_local","line":92},{"name":"LinkSegment","line":98},{"name":"text_segment","line":106},{"name":"data_segment","line":116},{"name":"LinkerConfig","line":128},{"name":"linker_config","line":137},{"name":"LinkResult","line":150},{"name":"link_ok","line":160},{"name":"link_fail","line":172},{"name":"total_image_size","line":186},{"name":"passed","line":190},{"name":"stack_top","line":194},{"name":"heap_start","line":198},{"name":"validate_config","line":204},{"name":"validate_symbol","line":212},{"name":"is_local_test","line":249}],"imports":[],"terms":["fpga","linker","link","section","text","data","bss","end","aligned","linked","global","local","segment","config","fail","total","image","size","passed","stack","top","heap","start","validate"]},{"id":"64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","sources":[{"repo":"ghashtag/t27","path":"specs/github/issues.t27","health":"ok","module":"github"}],"description":"specs/github/issues.t27","symbols":[{"name":"ISSUE_STATE_OPEN","line":4},{"name":"Issue","line":6},{"name":"issue_list","line":13},{"name":"issues","line":19}],"imports":[],"terms":["state","open","list"]},{"id":"6532bcb37b12d57aa03d22717557fa16e727b9c4e6389c3afdd829bc74a23ab0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_safety.t27","health":"ok","module":"TriComputeSafety"}],"description":"TRI-NET compute safety gate: the single no-double-pay invariant that composes the three independent guards the stack grew -- freshness (tri_a2a.is_fresh, anti-replay), finiteness (tri_compute_settle.is_finite_gf16, no inf/nan garbage), and settled-once (a request pays at most one time). A reward is minted ONLY when all three hold. This is the choke point that makes double-pay, replay-pay, and garbage-pay impossible in one place, rather than relying on each ring separately.","symbols":[{"name":"payable","line":12},{"name":"reward_gate","line":29},{"name":"payable_authentic","line":44},{"name":"reward_gate_authentic","line":52}],"imports":[{"name":"base::types","line":9}],"terms":["net","compute","safety","payable","reward","gate","authentic"]},{"id":"6538e25864c29896db08fe5b34953adfb0104afe5180d6ef558f9ef7b57b5e95","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_adamw_block.t27","health":"ok","module":"p1"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","adamw","block"]},{"id":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/self_healing.t27","health":"ok","module":"SelfHealing"}],"description":"Self-Healing - automatic network recovery after failures Coordinates fault detection and redundancy management for recovery","symbols":[{"name":"RECOVERY_COOLDOWN","line":7},{"name":"MAX_RECOVERY_ATTEMPTS","line":8},{"name":"RECOVERY_SUCCESS","line":9},{"name":"RECOVERY_FAILED","line":10},{"name":"create_recovery_state","line":13},{"name":"get_attempts","line":20},{"name":"get_last_attempt","line":24},{"name":"get_in_progress","line":28},{"name":"get_success_count","line":32},{"name":"can_recover","line":37},{"name":"start_recovery","line":55},{"name":"complete_recovery_success","line":62},{"name":"complete_recovery_failure","line":70},{"name":"reset_recovery","line":78},{"name":"is_recovery_failed","line":83},{"name":"create_network_state","line":88},{"name":"get_healthy_nodes","line":95},{"name":"get_total_nodes","line":99},{"name":"get_degraded_links","line":103},{"name":"get_total_links","line":107},{"name":"network_health_percent","line":112},{"name":"is_network_healthy","line":124},{"name":"is_network_degraded","line":129},{"name":"is_network_critical","line":135},{"name":"should_initiate_healing","line":140},{"name":"update_network_after_recovery","line":153}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","self","healing","recovery","cooldown","max","attempts","success","failed","create","state","get","attempt","progress","count","recover","start","complete","failure","reset","network","healthy","nodes","total","degraded","links","health","percent","critical","initiate"]},{"id":"656a55d5c53935a47b6bfb87528cb7eadd93b56ea60bc246f720ace506be7109","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/rtl.t27","health":"ok","module":"tool_tri_rtl"}],"description":"specs/tools/tri/rtl.t27 -- tool tri/rtl, the `tri rtl` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/rtl). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["rtl","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/goldenfloat_family.t27","health":"warn","module":"GoldenFloatFamily"}],"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family -- phi-structured floating point formats NUMERIC-STANDARD-001 -- Agent 1 (P0)","symbols":[{"name":"GoldenFloatFormat","line":15},{"name":"PHI_RATIO_TARGET","line":50},{"name":"GOLDEN_FLOAT_FAMILY","line":53},{"name":"get_format_by_name","line":231},{"name":"get_format_by_bits","line":240},{"name":"get_primary_format","line":249},{"name":"VerificationReport","line":257},{"name":"verify_golden_family","line":266},{"name":"avg_dist","line":314},{"name":"all_checks_valid","line":317},{"name":"max_value","line":338},{"name":"mant_max","line":340},{"name":"exp_max","line":341},{"name":"min_positive","line":345},{"name":"mant_min","line":347},{"name":"bias","line":348},{"name":"memory_efficiency","line":352}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["numeric","goldenfloat","family","golden","float","format","phi","ratio","target","get","bits","primary","verification","report","verify","avg","dist","checks","valid","max","mant","exp","min","positive","bias","memory","efficiency"]},{"id":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/anomaly_detector.t27","health":"warn","module":"anomaly_detector"}],"description":"Anomaly Detector - behavioral anomaly detection Enables detection of unusual network behavior","symbols":[{"name":"MAX_METRICS","line":7},{"name":"BASELINE_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"SEVERITY_HIGH","line":10},{"name":"SEVERITY_MEDIUM","line":11},{"name":"create_metric_reading","line":14},{"name":"get_metric_id","line":21},{"name":"get_metric_value","line":25},{"name":"get_timestamp","line":29},{"name":"get_confidence","line":33},{"name":"create_anomaly_report","line":38},{"name":"get_anomaly_metric_id","line":45},{"name":"get_severity","line":49},{"name":"get_anomaly_type","line":53},{"name":"get_anomaly_confidence","line":57},{"name":"TYPE_SPIKE","line":62},{"name":"TYPE_DROP","line":63},{"name":"TYPE_PATTERN","line":64},{"name":"TYPE_TREND","line":65},{"name":"calculate_baseline","line":68},{"name":"calculate_variance","line":88},{"name":"detect_spike","line":114},{"name":"detect_drop","line":133},{"name":"detect_pattern","line":152},{"name":"detect_trend","line":182},{"name":"calculate_severity","line":220},{"name":"detect_anomaly","line":238},{"name":"is_critical_anomaly","line":274},{"name":"get_anomaly_description","line":285},{"name":"correlate_metrics","line":302},{"name":"detect_coordinated_attack","line":343},{"name":"calculate_anomaly_confidence","line":363}],"imports":[{"name":"base::types","line":5}],"terms":["net","anomaly","detector","max","metrics","baseline","window","threshold","severity","high","medium","create","metric","reading","get","timestamp","confidence","report","spike","drop","pattern","trend","calculate","variance","detect","critical","description","correlate","coordinated","attack"]},{"id":"661937af30a71e6136f8c9fe690b7ed12eb6f9c17ba55767a80308624cddf419","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/ml_dtypes_crossval.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","dtypes","crossval"]},{"id":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_routing.t27","health":"ok","module":"MeshRouting"}],"description":"Mesh routing logic from router.rs IP address mapping, routing decisions, TTL handling Simplified: no HashMap, no crypto, single-peer model","symbols":[{"name":"DEFAULT_TTL","line":9},{"name":"MESH_NET_A","line":10},{"name":"MESH_NET_B","line":11},{"name":"MESH_NET_C","line":12},{"name":"MIN_NODE_ID","line":13},{"name":"MAX_NODE_ID","line":14},{"name":"mesh_ip","line":20},{"name":"is_mesh_subnet","line":26},{"name":"node_of_ip","line":40},{"name":"decrement_ttl","line":55},{"name":"is_ttl_expired","line":66},{"name":"choose_next_hop","line":75},{"name":"delivery_decision","line":131}],"imports":[{"name":"base::types","line":6}],"terms":["net","mesh","routing","default","ttl","min","node","max","subnet","decrement","expired","choose","hop","delivery","decision"]},{"id":"66bee6b87377d1747f36fcb46949ee39e39de1515779dbd1ead183c06efb0dfc","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/vsa.zig-hdc.t27","health":"ok","module":"trinity_capability_vsa_zig_hdc"}],"description":"specs/trinity/capabilities/vsa.zig-hdc.t27 -- capability trinity/vsa.zig-hdc: Hyperdimensional VSA operations (bind, bundle, permute, similarity), consumed as One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","vsa","zig","hdc","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"66f48663fb58c54066c3c13d0fa2afcfbfd38536ded273d84cd63bab51325b5a","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/spec.t27","health":"ok","module":"spec_commands"}],"description":"spec.t27 — Spec Management Commands Commands for creating and managing t27 specs with TDD enforcement","symbols":[{"name":"spec_create","line":9},{"name":"output_path","line":19},{"name":"content","line":30},{"name":"result","line":31},{"name":"spec_validate","line":58},{"name":"content","line":66},{"name":"context","line":74},{"name":"tdd_errors","line":93},{"name":"spec_list","line":143},{"name":"spec_dir","line":144},{"name":"spec_files","line":150},{"name":"rel_path","line":160},{"name":"content","line":161},{"name":"context","line":166},{"name":"status","line":173},{"name":"is_valid_spec_name","line":189},{"name":"first","line":195},{"name":"generate_spec_template","line":211},{"name":"validate_tdd_compliance","line":267},{"name":"Program","line":303},{"name":"Constant","line":310},{"name":"TestSection","line":315},{"name":"TestCase","line":319},{"name":"InvariantSection","line":326},{"name":"Invariant","line":330},{"name":"SpecDecl","line":336},{"name":"TestBlock","line":341},{"name":"SpecInvariant","line":346},{"name":"ParseError","line":351},{"name":"ParseContext","line":357},{"name":"has_errors","line":361},{"name":"result","line":372},{"name":"result","line":378},{"name":"result","line":383},{"name":"result","line":388},{"name":"result","line":393},{"name":"result","line":398},{"name":"result","line":403},{"name":"template","line":418},{"name":"template","line":424},{"name":"program","line":429},{"name":"errors","line":439},{"name":"program","line":443},{"name":"errors","line":449},{"name":"template","line":466}],"imports":[],"terms":["compiler","cli","commands","create","path","content","validate","tdd","list","dir","rel","status","valid","generate","template","compliance","program","constant","section","case","invariant","decl","block","parse"]},{"id":"673fe6884c6aa531c95c463f4d883bcb5c076f4a66f79088a102c4ddd4855082","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_signed_mac.t27","health":"warn","module":"GftSignedMac"}],"description":"","symbols":[{"name":"magmul","line":17},{"name":"magadd","line":40},{"name":"magsub","line":73},{"name":"smul","line":99},{"name":"sadd","line":106},{"name":"on_comb","line":123}],"imports":[],"terms":["ternary","gft","signed","mac","magmul","magadd","magsub","smul","sadd","comb"]},{"id":"674a166252ed87e18ef467e7c8cb62f8363abc831102041a9eb6862be6ca6023","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/tensorpack.t27","health":"warn","module":"TrinityMemoryTensorPackSpec"}],"description":"specs/memory/tmem/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;","symbols":[{"name":"TMS_TTPK_MAGIC_0","line":12},{"name":"TMS_TTPK_MAGIC_1","line":13},{"name":"TMS_TTPK_MAGIC_2","line":14},{"name":"TMS_TTPK_MAGIC_3","line":15},{"name":"TMS_TTPK_VERSION","line":16},{"name":"TMS_TTPK_FLAGS","line":17},{"name":"TMS_TTPK_HEADER_BYTES","line":18},{"name":"TMS_TTPK_VERSION_OFFSET","line":19},{"name":"TMS_TTPK_FLAGS_OFFSET","line":20},{"name":"TMS_TTPK_RESERVED_OFFSET","line":21},{"name":"TMS_TTPK_RESERVED_BYTES","line":22},{"name":"TMS_TTPK_METADATA_LENGTH_OFFSET","line":23},{"name":"TMS_TTPK_METADATA_LENGTH_BYTES","line":24},{"name":"TMS_TTPK_TENSOR_COUNT_OFFSET","line":25},{"name":"TMS_TTPK_TENSOR_COUNT_BYTES","line":26},{"name":"TMS_TTPK_PAYLOAD_LENGTH_OFFSET","line":27},{"name":"TMS_TTPK_PAYLOAD_LENGTH_BYTES","line":28},{"name":"TMS_TTPK_METADATA_CRC_OFFSET","line":29},{"name":"TMS_TTPK_PAYLOAD_CRC_OFFSET","line":30},{"name":"TMS_TTPK_CRC_BYTES","line":31},{"name":"TMS_TTPK_CRC_COVERED_HEADER_BYTES","line":32},{"name":"TMS_TTPK_METADATA_OFFSET","line":33},{"name":"TMS_TTPK_NESTED_HEADER_BYTES","line":34},{"name":"TMS_TTPK_MAX_TENSORS","line":37},{"name":"TMS_TTPK_MAX_METADATA_BYTES","line":38},{"name":"TMS_TTPK_MAX_PAYLOAD_BYTES","line":39},{"name":"TMS_TTPK_MAX_TOTAL_TRITS","line":40},{"name":"TMS_TTPK_MAX_RANK","line":41},{"name":"TMS_TTPK_MAX_DIMENSION","line":42},{"name":"TMS_TTPK_MAX_NAME_BYTES","line":43},{"name":"TMS_TTPK_MAX_AXIS_BYTES","line":44},{"name":"TMS_TTPK_MAX_SCALE_AXIS","line":45},{"name":"TMS_TTPK_JSON_MAX_DEPTH","line":46},{"name":"TMS_TTPK_JSON_INTEGER_MAX_CHARS","line":47},{"name":"TMS_TTPK_CODEC_NAME_COUNT","line":48},{"name":"TMS_TTPK_ROOT_MEMBERS","line":53},{"name":"TMS_TTPK_DESCRIPTOR_MEMBERS","line":54},{"name":"TMS_TTPK_EMPTY_METADATA_BYTES","line":55},{"name":"TMS_TTPK_EMPTY_PACK_BYTES","line":56},{"name":"TtpkField","line":58},{"name":"TMS_TTPK_FLOAT_FIXED_MIN_EXPONENT","line":72},{"name":"TMS_TTPK_FLOAT_FIXED_MAX_EXPONENT","line":73},{"name":"TMS_TTPK_FLOAT_EXPONENT_MIN_DIGITS","line":74},{"name":"TMS_TTPK_ERR_DESCRIPTOR","line":78},{"name":"TMS_TTPK_ERR_TEXT","line":79},{"name":"TMS_TTPK_ERR_SHAPE","line":80},{"name":"TMS_TTPK_ERR_SCALE","line":81},{"name":"TMS_TTPK_ERR_AXES","line":82},{"name":"TMS_TTPK_ERR_OFFSET","line":83},{"name":"TMS_TTPK_ERR_SCHEMA","line":84},{"name":"TMS_TTPK_ERR_JSON","line":85},{"name":"tms_ttpk_container_bytes","line":88},{"name":"tms_ttpk_size_consistent","line":92},{"name":"tms_ttpk_header_limits_valid","line":96},{"name":"tms_ttpk_dimension_valid","line":102},{"name":"tms_ttpk_shape_count","line":107},{"name":"tms_ttpk_name_length_valid","line":120},{"name":"tms_ttpk_axis_length_valid","line":124},{"name":"tms_ttpk_text_byte_allowed","line":130},{"name":"tms_ttpk_axes_count_valid","line":135},{"name":"tms_ttpk_scale_axis_valid","line":139},{"name":"tms_ttpk_scale_count","line":146},{"name":"tms_ttpk_scale_valid","line":152},{"name":"tms_ttpk_nested_length","line":156},{"name":"tms_ttpk_chain_valid","line":161},{"name":"tms_ttpk_float_uses_fixed_notation","line":174},{"name":"tms_ttpk_total_trit_limit","line":179}],"imports":[],"terms":["memory","tmem","tensorpack","tensor","pack","tms","ttpk","magic","flags","header","bytes","offset","reserved","metadata","length","count","payload","crc","covered","nested","max","tensors","total","trits","rank","dimension","axis","scale","json","depth","integer","chars","codec","root","members","descriptor","empty","field","float","fixed","min","exponent","digits","err","text","shape","axes","schema","container","size","consistent","limits","valid","byte","allowed","chain","uses","notation","trit","limit"]},{"id":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","sources":[{"repo":"ghashtag/t27","path":"specs/math/sacred_physics.t27","health":"ok","module":"SacredPhysics"}],"description":"t27/specs/math/sacred_physics.t27 Strand I — Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","symbols":[{"name":"PHI","line":13},{"name":"PHI_INV","line":14},{"name":"PHI_SQ","line":15},{"name":"PHI_INV_SQ","line":16},{"name":"TRINITY","line":20},{"name":"GAMMA_LQG","line":24},{"name":"C_THRESHOLD","line":28},{"name":"T_PRESENT_SEC","line":32},{"name":"T_PRESENT_MS","line":33},{"name":"neural_gamma_center","line":37},{"name":"phi_cubed","line":38},{"name":"phi_pow","line":49},{"name":"sacred_gravity","line":89},{"name":"pi_sq","line":90},{"name":"pi_cub","line":91},{"name":"g2","line":92},{"name":"sacred_dark_energy","line":98},{"name":"gamma4","line":99},{"name":"gamma8","line":100},{"name":"pi2","line":101},{"name":"pi4","line":102},{"name":"MAX_REL_ERROR_G","line":111},{"name":"MAX_REL_ERROR_OMEGA","line":112},{"name":"MAX_ABS_ERROR_TRINITY","line":113},{"name":"SacredPhysicsReport","line":115},{"name":"verify_sacred_physics","line":136},{"name":"PI","line":137},{"name":"trinity","line":138},{"name":"trinity_ok","line":139},{"name":"gamma_val","line":141},{"name":"c_thr","line":142},{"name":"t_ms","line":143},{"name":"g_pred","line":145},{"name":"g_meas","line":146},{"name":"g_rel","line":147},{"name":"g_ok","line":148},{"name":"omega_pred","line":150},{"name":"omega_meas","line":151},{"name":"omega_rel","line":152},{"name":"omega_ok","line":153},{"name":"f_gamma","line":155},{"name":"TrinityVerification","line":187},{"name":"verify_trinity","line":199},{"name":"phi_sq","line":200},{"name":"phi_inv_sq","line":201},{"name":"trinity","line":202},{"name":"target","line":203},{"name":"abs_err","line":204},{"name":"rel_err","line":205}],"imports":[{"name":"math::constants","line":7}],"terms":["math","sacred","physics","phi","inv","gamma","lqg","threshold","present","sec","neural","center","cubed","pow","gravity","cub","dark","energy","gamma4","gamma8","pi2","pi4","max","rel","omega","abs","report","verify","val","thr","pred","meas","verification","target","err"]},{"id":"678ece919f8363e769be5541575ec25163565cf04481f776448b81c3fbac94c9","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/health.t27","health":"ok","module":"tool_tri_health"}],"description":"specs/tools/tri/health.t27 -- tool tri/health, the `tri health` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/health). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["health","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"67977206cb649dcffe7703ea2aa8d330f67b0dce6b63c3e063d2c4ef5d1112e2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_relu.t27","health":"warn","module":"GftRelu"}],"description":"","symbols":[{"name":"on_comb","line":10}],"imports":[],"terms":["ternary","gft","relu","comb"]},{"id":"679c0ec0793e64b28bbbcd96e15b8c0dab7f67a0519177ca416b02e619290711","sources":[{"repo":"ghashtag/t27","path":"specs/physics/chimera_best_gamma.t27","health":"ok","module":"chimera"}],"description":"t27/specs/physics/chimera_best_gamma.t27 Best gamma formula from PDG 2024 P35_new (Delta = 0.140%)","symbols":[{"name":"PHI","line":10},{"name":"formula","line":12}],"imports":[{"name":"base::math","line":7},{"name":"compiler::codegen","line":8}],"terms":["physics","chimera","best","gamma","phi","formula"]},{"id":"67b126ee510d34e78677d12e64b2b2aacf9951410adc6f3338018101e0e112c0","sources":[{"repo":"ghashtag/t27","path":"specs/api/sdk_contract.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"Hypervector","line":20},{"name":"init","line":24},{"name":"random","line":27},{"name":"randomLabeled","line":30},{"name":"fromRaw","line":33},{"name":"Codebook","line":94},{"name":"init","line":100},{"name":"encode","line":102},{"name":"decode","line":105},{"name":"decodeWithThreshold","line":108},{"name":"count","line":111},{"name":"AssociativeMemory","line":119},{"name":"init","line":124},{"name":"store","line":127},{"name":"retrieve","line":130},{"name":"contains","line":133},{"name":"clear","line":136},{"name":"count","line":139},{"name":"SequenceEncoder","line":147},{"name":"init","line":150},{"name":"encode","line":152},{"name":"probe","line":155},{"name":"findPosition","line":158}],"imports":[],"terms":["api","sdk","contract","hypervector","init","random","labeled","raw","codebook","encode","decode","threshold","count","associative","memory","store","retrieve","contains","clear","sequence","encoder","probe","find","position"]},{"id":"67b24c96e29940b999c59862e9bd2c0d92482152900f562c0106a7064686464f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_09.t27","health":"warn","module":"damage_class_09"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"67c635dcb96730ead658e8233879cc6f2b3cb56d9c6e85259629d10b9a536b9c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/harness.t27","health":"ok","module":"tool_tri_harness"}],"description":"specs/tools/tri/harness.t27 -- tool tri/harness, the `tri harness` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/harness). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["harness","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/auto_config.t27","health":"warn","module":"auto_config"}],"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_PARAMS","line":8},{"name":"CONFIG_VERSION","line":9},{"name":"AUTO_DISCOVERY_INTERVAL","line":10},{"name":"create_config_param","line":13},{"name":"get_param_id","line":20},{"name":"get_param_value","line":24},{"name":"get_param_scope","line":28},{"name":"get_param_status","line":32},{"name":"SCOPE_NODE","line":37},{"name":"SCOPE_LINK","line":38},{"name":"SCOPE_NETWORK","line":39},{"name":"SCOPE_GLOBAL","line":40},{"name":"STATUS_PENDING","line":43},{"name":"STATUS_APPLIED","line":44},{"name":"STATUS_FAILED","line":45},{"name":"STATUS_OVERRIDE","line":46},{"name":"PARAM_TX_POWER","line":49},{"name":"PARAM_CHANNEL","line":50},{"name":"PARAM_DATA_RATE","line":51},{"name":"PARAM_RETRY_LIMIT","line":52},{"name":"PARAM_HELLO_INTERVAL","line":53},{"name":"PARAM_ROUTE_TIMEOUT","line":54},{"name":"PARAM_QOS_ENABLED","line":55},{"name":"PARAM_SECURITY_LEVEL","line":56},{"name":"create_default_config","line":59},{"name":"get_config_value","line":76},{"name":"set_config_value","line":91},{"name":"discover_network_params","line":109},{"name":"apply_config","line":143},{"name":"apply_all_pending","line":164},{"name":"validate_config","line":183},{"name":"optimize_config","line":224},{"name":"sync_config","line":259},{"name":"rollback_config","line":297},{"name":"create_backup","line":325},{"name":"calculate_config_drift","line":338},{"name":"discover_neighbors","line":374},{"name":"assign_node_role","line":389}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","auto","config","max","nodes","params","discovery","interval","create","param","get","scope","status","node","link","network","global","applied","failed","override","power","channel","data","rate","retry","limit","hello","route","timeout","qos","enabled","security","level","default","set","discover","apply","validate","optimize","sync","rollback","backup","calculate","drift","neighbors","assign","role"]},{"id":"689a89b90876fa9967656508d3791f3de1a47afe358cbf4d7ccf023fce1c32d5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/needle-check.t27","health":"ok","module":"tool_trinity_tri_needle_check"}],"description":"specs/tools/trinity/tri/needle-check.t27 -- tool gHashTag/trinity:tri/needle-check, the `tri needle-check` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle-check`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["needle","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/area_optimization.t27","health":"ok","module":"AreaOptimization"}],"description":"Area optimization - resource sharing and bit-width optimization Tests optimization strategies for reducing resource utilization","symbols":[{"name":"OPT_NONE","line":8},{"name":"OPT_RESOURCE_SHARE","line":9},{"name":"OPT_BIT_WIDTH_REDUCE","line":10},{"name":"OPT_CONST_FOLD","line":11},{"name":"OPT_FIFO_TO_RAM","line":12},{"name":"estimate_complexity","line":15},{"name":"calculate_sharing_savings","line":21},{"name":"calculate_bitwidth_savings","line":29},{"name":"const_folding_applicable","line":37},{"name":"fifo_to_ram_applicable","line":43},{"name":"create_resource_type","line":49},{"name":"extract_resource_type","line":53},{"name":"extract_resource_amount","line":57},{"name":"create_optimization_result","line":62},{"name":"extract_strategy","line":68},{"name":"extract_original","line":72},{"name":"extract_optimized","line":76},{"name":"calculate_savings_percentage","line":81},{"name":"optimization_worthwhile","line":92},{"name":"analyze_bit_width","line":98}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","area","optimization","opt","resource","share","bit","width","reduce","fold","fifo","ram","estimate","complexity","calculate","sharing","savings","bitwidth","folding","applicable","create","extract","amount","strategy","original","optimized","percentage","worthwhile","analyze"]},{"id":"68bee859c3ffd508a841df8048fdde0932245af7a0dfe7c3596266cd24726dbe","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/hslm.t27","health":"warn","module":"hslm"}],"description":"","symbols":[],"imports":[],"terms":["fpga","hslm"]},{"id":"68cef02f70476660ff1d1df04010d0a3d6cbe249c35da94d97f4c2a641e57d5e","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27","health":"ok","module":"cron_999_multibots_telegraf_crmProactive_L375"}],"description":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27 -- cron timer/999-multibots-telegraf/crmProactive-L375 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/crmProactive-L375). The schedule was read from 999-multibots-telegraf:src/services/crmProactive.ts#L375. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"NOTE","line":24},{"name":"ON_FAILURE","line":25},{"name":"CONTROL","line":26}],"imports":[],"terms":["crons","multibots","telegraf","crm","proactive","l375","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"68db08e2c74473cafa7fa60d467626f0b74106730d4f4b3c418442765125b168","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/research.nexus-docs.t27","health":"ok","module":"trinity_capability_research_nexus_docs"}],"description":"specs/trinity/capabilities/research.nexus-docs.t27 -- capability trinity/research.nexus-docs: Research notes and reports under deploy/trinity-nexus/docs One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","research","nexus","docs","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","sources":[{"repo":"ghashtag/t27","path":"specs/automation/inngest-queen-scheduler.t27","health":"ok","module":"automation"}],"description":"specs/automation/inngest-queen-scheduler.t27 -- every cron and every skill card of this repository (specs/crons, specs/skills) held as one Inngest app that the Queen's runtime serves. Host: gHashTag/BrowserOS trios/agent-server apps/server/src/inngest/ (the app), mounted on the same Hono server that serves /queen/*; the Inngest server is the self-hosted `inngest` of Railway project 999 (private address INNGEST_BASE_URL), reachable to people and bees through the MCP face described by specs/tools/mcp/inngest-dev.t27.","symbols":[{"name":"KIND","line":16},{"name":"ID","line":17},{"name":"REPO","line":18},{"name":"HOST_PATH","line":19},{"name":"VERSION","line":20},{"name":"OWNER","line":22},{"name":"TOOL","line":23},{"name":"APP_ID","line":26},{"name":"SERVE_PATH","line":27},{"name":"ENV","line":28},{"name":"TOKEN_ENV","line":30},{"name":"GITHUB_OWNER","line":31},{"name":"SCOPE","line":34},{"name":"ON_BAD_CARD","line":37},{"name":"CRON_FUNCTION_ID","line":40},{"name":"SKILL_FUNCTION_ID","line":41},{"name":"CRON_TICK_EVENT","line":43},{"name":"SKILL_RUN_EVENT","line":45},{"name":"RUNS_FANOUT","line":47},{"name":"DISPATCH_GITHUB_ACTIONS","line":52},{"name":"DISPATCH_INNGEST","line":55},{"name":"DISPATCH_TIMER","line":57},{"name":"DISPATCH_RAILWAY_CRON","line":59},{"name":"DISABLED_CARD","line":61},{"name":"SCHEDULE_FIELDS","line":63},{"name":"SKILL_DISPATCH","line":66},{"name":"SKILL_ISSUE_REPO","line":67},{"name":"SKILL_ISSUE_TITLE","line":68},{"name":"SKILL_ISSUE_LABEL","line":69},{"name":"SKILL_ISSUE_SECTIONS","line":71},{"name":"SKILL_ISSUE_DEDUP","line":73},{"name":"MOVE_STEPS","line":79},{"name":"CONTROL_AFTER_MOVE","line":80},{"name":"WORKFLOWS_WITH_DISPATCH","line":84},{"name":"WORKFLOWS_TOTAL","line":85},{"name":"ENABLED","line":89}],"imports":[],"terms":["automation","inngest","queen","scheduler","kind","host","path","owner","tool","serve","env","token","scope","bad","card","cron","skill","tick","event","runs","fanout","dispatch","actions","timer","railway","disabled","schedule","fields","title","label","sections","dedup","move","steps","control","workflows","total","enabled"]},{"id":"69218b791f6a7e7d2144c8d0e90f2b320ce8e3282bc3a220561e29ab8dee9d6b","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorpercep.t27","health":"warn","module":"GftXorPercep"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":107},{"name":"on_comb","line":116}],"imports":[],"terms":["ternary","gft","xorpercep","xor","percep","magadd","magsub","sadd","neg","magmul","smul","relu","comb"]},{"id":"6926ef2f5ef68b7a540eae2c7bffc4efd4928bcf00686806f549664b92b8afd7","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/benchmarks.t27","health":"ok","module":"PipelineBenchmarks"}],"description":"t27/specs/pipeline/benchmarks.t27 Pipeline Performance Benchmark Specification Ring 028 — tri bench run performance targets 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TARGET_PARSE_NS","line":10},{"name":"TARGET_SEAL_NS","line":11},{"name":"TARGET_GEN_NS","line":12},{"name":"TARGET_TEST_NS","line":13},{"name":"TARGET_FULL_PIPELINE_NS","line":14},{"name":"NS_PER_US","line":15},{"name":"NS_PER_MS","line":16},{"name":"ns_to_us","line":19},{"name":"ns_to_ms","line":24},{"name":"within_target","line":29},{"name":"latency_percentile","line":34},{"name":"throughput_ops_per_sec","line":40}],"imports":[{"name":"base::types","line":8}],"terms":["pipeline","benchmarks","target","parse","seal","gen","full","per","within","latency","percentile","throughput","ops","sec"]},{"id":"69729efabc127aefce11e671dcb1abc5029ecd942d0670615a9ab41e73b76fb3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/e2e_demo.t27","health":"ok","module":"E2eDemo"}],"description":"t27/specs/fpga/e2e_demo.t27 T27 End-to-End Demo Specification Exercises the full toolchain: assembler -> ternary core -> GF16 -> VCD trace Validates the complete FPGA pipeline from spec to hardware simulation Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"DemoKernel","line":13},{"name":"hello_kernel","line":21},{"name":"gf16_mac_kernel","line":31},{"name":"PipeResult","line":43},{"name":"pipe_result_ok","line":51},{"name":"pipe_result_error","line":61},{"name":"DemoConfig","line":73},{"name":"demo_config","line":81},{"name":"ipc","line":93},{"name":"cpi","line":100},{"name":"gf16_throughput","line":107},{"name":"sim_time_us","line":114},{"name":"kernel_size_bytes","line":121},{"name":"passed","line":125},{"name":"validate_kernel","line":131},{"name":"validate_config","line":142}],"imports":[],"terms":["fpga","e2e","demo","kernel","hello","gf16","mac","pipe","config","ipc","cpi","throughput","sim","time","size","bytes","passed","validate"]},{"id":"69dfde195e9294cbe1a7dec908d04fb3c8f2de72498d4df8f400f48eb6b2289b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/simulator_tb.t27","health":"warn","module":"Simulator_Testbench"}],"description":"t27/specs/fpga/testbench/simulator_tb.t27 Simulator Testbench Tests simulation engine: cycle stepping, event scheduling, and waveform output","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_CYCLES","line":11},{"name":"EVENT_QUEUE_DEPTH","line":12},{"name":"tick","line":24},{"name":"reset","line":30},{"name":"run_cycles","line":39},{"name":"schedule_event","line":49}],"imports":[{"name":"fpga::simulator::Simulator","line":8}],"terms":["fpga","testbench","simulator","clk","period","max","cycles","event","queue","depth","tick","reset","schedule"]},{"id":"6a3ef22445272843815bb1eef5aa8a4b6e3e881592723413e6ddf8c723b36c7a","sources":[{"repo":"ghashtag/t27","path":"specs/api/c_api_contract.t27","health":"warn","module":null}],"description":"","symbols":[{"name":"ver","line":124},{"name":"v","line":129},{"name":"v","line":138},{"name":"data","line":150},{"name":"v","line":151},{"name":"copied","line":155},{"name":"v","line":161},{"name":"cloned","line":164},{"name":"sim","line":167},{"name":"a","line":172},{"name":"bound","line":175},{"name":"a_trit","line":180},{"name":"r_trit","line":181},{"name":"a","line":191},{"name":"b","line":194},{"name":"bound","line":197},{"name":"recovered","line":200},{"name":"sim","line":204},{"name":"a","line":209},{"name":"b","line":212},{"name":"bundled","line":215},{"name":"sim_a","line":219},{"name":"sim_b","line":220},{"name":"v","line":226},{"name":"permuted","line":229},{"name":"sim","line":233}],"imports":[],"terms":["api","contract","ver","data","copied","cloned","sim","bound","trit","recovered","bundled","permuted"]},{"id":"6a4970afbc3c2312d69c058364a11f96063e468cbed7b915aa49f306a8dfc4c2","sources":[{"repo":"ghashtag/t27","path":"specs/interop/gf_cross_language.t27","health":"warn","module":"GFCrossLanguageConformance"}],"description":"GoldenFloat Cross-Language Conformance All languages must produce identical bits for identical inputs. Reference constant: GF32(φ) = 0x3FCF1BBD","symbols":[{"name":"phi","line":13},{"name":"gf32_bits","line":14},{"name":"expected","line":16},{"name":"phi","line":22},{"name":"gf16_phi","line":23},{"name":"gf32_phi","line":24},{"name":"test_vals","line":33},{"name":"encoded","line":35},{"name":"decoded","line":36},{"name":"zero","line":43},{"name":"inf","line":44},{"name":"nan","line":45},{"name":"a","line":54},{"name":"b","line":55},{"name":"sum","line":56},{"name":"result","line":57},{"name":"zero_enc","line":64},{"name":"zero_dec","line":65},{"name":"phi_gf16","line":72},{"name":"phi_gf32","line":73},{"name":"mant16","line":76},{"name":"mant32","line":77},{"name":"zero_enc","line":86},{"name":"zero_dec","line":87},{"name":"zero_ok","line":88},{"name":"neg_zero_enc","line":91},{"name":"neg_zero_dec","line":92},{"name":"neg_zero_ok","line":93}],"imports":[{"name":"math::constants","line":7}],"terms":["interop","cross","language","gfcross","conformance","phi","gf32","bits","expected","gf16","vals","encoded","decoded","zero","inf","nan","sum","enc","dec","mant16","mant32","neg"]},{"id":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cross_layer_optimizer.t27","health":"warn","module":"CrossLayerOptimizer"}],"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","symbols":[{"name":"MAX_LAYERS","line":7},{"name":"LAYER_PHY","line":8},{"name":"LAYER_MAC","line":9},{"name":"LAYER_NETWORK","line":10},{"name":"LAYER_TRANSPORT","line":11},{"name":"MODE_CONSERVATIVE","line":13},{"name":"MODE_MODERATE","line":14},{"name":"MODE_AGGRESSIVE","line":15},{"name":"create_layer_params","line":18},{"name":"get_power","line":25},{"name":"get_rate","line":29},{"name":"get_retries","line":33},{"name":"get_window","line":37},{"name":"create_cross_layer_state","line":42},{"name":"get_mode","line":49},{"name":"get_update_counter","line":53},{"name":"get_last_sync","line":57},{"name":"get_optimization_target","line":61},{"name":"create_layer_array","line":68},{"name":"set_slot4","line":71},{"name":"get_layer_params","line":85},{"name":"update_layer_params","line":93},{"name":"calculate_joint_metric","line":98},{"name":"coordinate_power","line":109},{"name":"optimize_for_target","line":135},{"name":"needs_synchronization","line":162},{"name":"increment_updates","line":169},{"name":"switch_mode","line":182}],"imports":[{"name":"base::types","line":5}],"terms":["net","cross","layer","optimizer","max","layers","phy","mac","network","transport","mode","conservative","moderate","aggressive","create","params","get","power","rate","retries","window","state","counter","sync","optimization","target","array","set","slot4","calculate","joint","metric","coordinate","optimize","synchronization","increment","updates","switch"]},{"id":"6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_coding.t27","health":"ok","module":"NetworkCoding"}],"description":"Network Coding - XOR-based coding for improved efficiency Enables packet mixing and innovative forwarding strategies","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"CODING_WINDOW","line":8},{"name":"MAX_GENERATION_SIZE","line":9},{"name":"create_packet","line":12},{"name":"get_packet_src","line":19},{"name":"get_packet_dst","line":23},{"name":"get_packet_payload","line":27},{"name":"get_packet_seq","line":31},{"name":"create_coded_packet","line":36},{"name":"get_coeff_vector","line":43},{"name":"get_coded_payload","line":47},{"name":"get_generation","line":51},{"name":"get_coded_seq","line":55},{"name":"xor_packets","line":60},{"name":"create_xoded_native","line":65},{"name":"decode_xoded_packet","line":72},{"name":"same_generation","line":86},{"name":"get_generation_id","line":97},{"name":"is_coding_beneficial","line":103},{"name":"linear_code_packets","line":109},{"name":"create_coded_generation","line":128},{"name":"get_coded_packet_gen","line":132},{"name":"count_generation_packets","line":140},{"name":"is_generation_decodable","line":150},{"name":"calculate_coding_gain","line":160}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","coding","max","packets","window","generation","size","create","packet","get","dst","payload","seq","coded","coeff","vector","xor","xoded","native","decode","beneficial","linear","gen","count","decodable","calculate","gain"]},{"id":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attn.t27","health":"warn","module":"MultiHeadAttention"}],"description":"t27/specs/ml/transformer/multi_head_attn.t27","symbols":[{"name":"PHI","line":17},{"name":"INV_PHI","line":18},{"name":"PHI_SQUARED","line":19},{"name":"DEFAULT_DROPOUT","line":20},{"name":"DEFAULT_SCALE","line":21},{"name":"PHI_HEAD_DIM_DIVISOR","line":22},{"name":"MHAConfig","line":28},{"name":"MHAState","line":39},{"name":"AttentionMask","line":53},{"name":"MHAForwardResult","line":59},{"name":"MHAGradients","line":65},{"name":"FlashAttentionState","line":77},{"name":"init","line":92},{"name":"forward","line":101},{"name":"flash_attention_forward","line":117},{"name":"compute_attention_scores","line":130},{"name":"apply_causal_mask","line":137},{"name":"apply_attention_mask","line":144},{"name":"softmax_attention","line":150},{"name":"backward","line":157},{"name":"compute_phi_scale","line":172},{"name":"merge_heads","line":180},{"name":"split_heads","line":186},{"name":"create_causal_mask","line":192},{"name":"get_head_dim","line":198},{"name":"get_parameter_count","line":204}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"math::statistics","line":8},{"name":"numeric::gf16","line":9},{"name":"ml::transformer::positional_enc","line":10},{"name":"ml::transformer::norm","line":11}],"terms":["transformer","multi","head","attn","attention","phi","inv","squared","default","dropout","scale","dim","divisor","mhaconfig","mhastate","mask","mhaforward","mhagradients","flash","state","init","forward","compute","scores","apply","causal","softmax","backward","merge","heads","split","create","get","parameter","count"]},{"id":"6aaf39d92a0b7c5443faa32b97cd7fd74b251a8258aee8390b6965d5fee2e660","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/unparsed.t27","health":"ok","module":"tool_tri_unparsed"}],"description":"specs/tools/tri/unparsed.t27 -- tool tri/unparsed, the `tri unparsed` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/unparsed). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["unparsed","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"6abe8fe5b759fdcd2ddf4d172aab89a26064c793cc33b912369e9897d1c49a31","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline_parallel.t27","health":"warn","module":"TriPipelineParallel"}],"description":"t27/specs/","symbols":[{"name":"JobStatus","line":13},{"name":"DagJob","line":17},{"name":"GroupResult","line":27},{"name":"PipelineDAG","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","parallel","job","status","dag","group"]},{"id":"6adddc181a2303061a5805b40022f137ec1c1e53b8356733092a3e97182e4a3c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/sacred-const.t27","health":"ok","module":"tool_trinity_tri_sacred_const"}],"description":"specs/tools/trinity/tri/sacred-const.t27 -- tool gHashTag/trinity:tri/sacred-const, the `tri sacred-const` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/sacred-const`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["sacred","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"6b554e4f84194043054ef2f593a39423682c17ae6b04450685038aefd630c361","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_typed_forms_alive.t27","health":"ok","module":"ty"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","typed","forms","alive"]},{"id":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","sources":[{"repo":"ghashtag/t27","path":"contrib/backend/zig/legacy/main_zig_handwritten.t27","health":"ok","module":null}],"description":"tri.zig a Trinity T27 CLI Runtime","symbols":[{"name":"std","line":4},{"name":"AST","line":10},{"name":"Program","line":11},{"name":"Const","line":18},{"name":"SpecDecl","line":23},{"name":"TestBlock","line":29},{"name":"InvariantBlock","line":34},{"name":"TestSection","line":39},{"name":"InvariantSection","line":43},{"name":"TestCase","line":47},{"name":"Invariant","line":54},{"name":"Clause","line":60},{"name":"ClauseKind","line":65},{"name":"ParseContext","line":79},{"name":"Error","line":83},{"name":"main","line":94},{"name":"allocator","line":97},{"name":"args","line":100},{"name":"command","line":108},{"name":"runSpecCommand","line":132},{"name":"subcommand","line":138},{"name":"name","line":145},{"name":"path","line":146},{"name":"runGenCommand","line":165},{"name":"options","line":166},{"name":"runGitCommand","line":177},{"name":"subcommand","line":183},{"name":"runLintCommand","line":196},{"name":"all","line":197},{"name":"specCreate","line":212},{"name":"output_path","line":221},{"name":"content","line":234},{"name":"specValidate","line":248},{"name":"content","line":254},{"name":"context","line":258},{"name":"tdd_errors","line":272},{"name":"specList","line":290},{"name":"spec_dir","line":291},{"name":"path","line":312},{"name":"rel_path","line":327},{"name":"content","line":328},{"name":"has_tests","line":332},{"name":"status","line":335},{"name":"GenOptions","line":344},{"name":"parseGenOptions","line":355},{"name":"arg","line":361},{"name":"gen","line":387},{"name":"content","line":394},{"name":"context","line":404},{"name":"has_tests","line":418},{"name":"impl_output","line":451},{"name":"test_output","line":455},{"name":"conf_output","line":462},{"name":"genAll","line":471},{"name":"spec_files","line":472},{"name":"result","line":490},{"name":"gitCommit","line":514},{"name":"arg","line":522},{"name":"git_argv","line":540},{"name":"gitPush","line":547},{"name":"arg","line":555},{"name":"branch_arg","line":571},{"name":"git_argv","line":572},{"name":"gitStatusWithCell","line":578},{"name":"registry_path","line":585},{"name":"lintFile","line":595},{"name":"content","line":601},{"name":"context","line":616},{"name":"lintAll","line":641},{"name":"files","line":642},{"name":"printUsage","line":675},{"name":"printError","line":719},{"name":"printErrorFmt","line":723},{"name":"writer","line":724},{"name":"fileExists","line":729},{"name":"isValidSpecName","line":737},{"name":"first","line":741},{"name":"generateSpecTemplate","line":755},{"name":"validateNoCyrillic","line":812},{"name":"c","line":822},{"name":"next_c","line":827},{"name":"codepoint","line":828},{"name":"hasTestsOrInvariants","line":840},{"name":"validateTDDCompliance","line":860},{"name":"printSummary","line":870},{"name":"parseSimple","line":902},{"name":"trimmed","line":915},{"name":"name","line":931},{"name":"name","line":940},{"name":"generateImplementation","line":971},{"name":"generateTests","line":980},{"name":"generateConformance","line":1009},{"name":"runGitDirect","line":1047},{"name":"result","line":1048},{"name":"term","line":1059},{"name":"globSpecs","line":1070},{"name":"path","line":1084},{"name":"globSourceFiles","line":1092},{"name":"extensions","line":1096},{"name":"path","line":1110}],"imports":[],"terms":["contrib","backend","zig","legacy","main","handwritten","std","ast","program","decl","block","invariant","section","case","clause","kind","parse","allocator","args","subcommand","path","gen","options","git","lint","create","content","validate","tdd","list","dir","rel","status","arg","impl","conf","commit","argv","push","branch","cell","registry","print","usage","fmt","writer","exists","valid","generate","template","cyrillic","codepoint","invariants","tddcompliance","summary","simple","trimmed","conformance","direct","term","glob","extensions"]},{"id":"6bcf3942f1f175d1c3708484d4cb216a6e6ba7492a6ebf7e6320887c7d13a42b","sources":[{"repo":"ghashtag/t27","path":"specs/base/ring_32.t27","health":"ok","module":"base-ring-32"}],"description":"base/ring_32.t27 — Ring 32 Definition","symbols":[{"name":"RING_NUMBER","line":9},{"name":"RING_CAPABILITY","line":10},{"name":"RING_32_SPECS","line":11}],"imports":[{"name":"math::sacred_physics","line":7}],"terms":["base","ring","capability"]},{"id":"6bdb4f8974ba389d990a11b694eb15ced344591f6c3de3d24bbf23f85ea0c964","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/sparse_skip.t27","health":"warn","module":"sacred-sparse_skip"}],"description":"sparse_skip.t27 — Sacred Opcode 0xE1: Sparse Skip Operation Hardware acceleration for sparse tensor operations with zero-skipping","symbols":[{"name":"OP_SPARSE_SKIP","line":12},{"name":"VECTOR_SIZE","line":14},{"name":"ZERO_THRESHOLD","line":15},{"name":"SPARSE_TOLERANCE","line":16},{"name":"SKIP_NONE","line":18},{"name":"SKIP_ZERO","line":19},{"name":"SKIP_THRESHOLD","line":20},{"name":"SKIP_ALL","line":21},{"name":"SkipMode","line":27},{"name":"SparsePattern","line":34},{"name":"SkipResult","line":41},{"name":"SparseVector","line":48},{"name":"is_zero","line":60},{"name":"is_below_threshold","line":66},{"name":"count_zeros","line":72},{"name":"count_non_zeros","line":84},{"name":"analyze_sparsity","line":100},{"name":"zeros","line":101},{"name":"non_zeros","line":102},{"name":"sparsity_ratio","line":103},{"name":"is_sparse","line":108},{"name":"should_skip_sparsity","line":120},{"name":"skip_zeros","line":130},{"name":"skip_threshold","line":152},{"name":"skip_all","line":174},{"name":"skip_none","line":185},{"name":"create_sparse_vector","line":205},{"name":"get_non_zero_elements","line":226},{"name":"encode_sparse_skip","line":252},{"name":"op","line":254},{"name":"mode_field","line":255},{"name":"addr_field","line":256},{"name":"decode_sparse_skip","line":262},{"name":"mode","line":263},{"name":"vector_addr","line":264}],"imports":[],"terms":["euler","fpga","sparse","skip","sacred","vector","size","zero","threshold","tolerance","mode","pattern","below","count","zeros","non","analyze","sparsity","ratio","create","get","elements","encode","field","addr","decode"]},{"id":"6c4c986a981251d73c668906e1bf7d6d1890d1c9cff359d33a05a64551ed5a0a","sources":[{"repo":"ghashtag/t27","path":"specs/functions/instagram-reels-analyze.t27","health":"ok","module":"fn_instagram_reels_analyze"}],"description":"specs/functions/instagram-reels-analyze.t27 -- function instagram-reels-analyze (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-reels-analyze). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/analyzeCompetitorReels.ts#L211 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","instagram","reels","analyze","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/protocol.t27","health":"ok","module":"lsp-protocol"}],"description":"lsp/protocol.t27 — JSON-RPC 2.0 Protocol Mapping LSP message handling over JSON-RPC transport layer","symbols":[{"name":"JSON_RPC_VERSION","line":19},{"name":"DEFAULT_BUFFER_SIZE","line":22},{"name":"MAX_MESSAGE_LENGTH","line":25},{"name":"METHOD_INITIALIZE","line":28},{"name":"METHOD_INITIALIZED","line":31},{"name":"METHOD_SHUTDOWN","line":34},{"name":"METHOD_EXIT","line":37},{"name":"METHOD_DID_OPEN","line":40},{"name":"METHOD_DID_CHANGE","line":43},{"name":"METHOD_DID_CLOSE","line":46},{"name":"METHOD_COMPLETION","line":49},{"name":"METHOD_HOVER","line":52},{"name":"METHOD_DEFINITION","line":55},{"name":"METHOD_DOCUMENT_SYMBOL","line":58},{"name":"METHOD_WORKSPACE_SYMBOL","line":61},{"name":"METHOD_CODE_ACTION","line":64},{"name":"METHOD_RENAME","line":67},{"name":"MessageType","line":74},{"name":"Request","line":82},{"name":"Response","line":90},{"name":"Notification","line":98},{"name":"JsonRpcError","line":105},{"name":"ParseResult","line":112},{"name":"TransportType","line":122},{"name":"ConnectionState","line":129},{"name":"MessageBuffer","line":137},{"name":"IncomingMessage","line":144},{"name":"OutgoingMessage","line":150},{"name":"BatchRequest","line":156},{"name":"BatchResponse","line":161},{"name":"CancelParams","line":166},{"name":"request_create","line":175},{"name":"response_create","line":185},{"name":"response_error_create","line":195},{"name":"notification_create","line":205},{"name":"json_rpc_error_create","line":214},{"name":"message_buffer_create","line":223},{"name":"initialize_request_create","line":232},{"name":"initialized_notification_create","line":237},{"name":"shutdown_request_create","line":242},{"name":"exit_notification_create","line":247},{"name":"completion_request_create","line":252},{"name":"hover_request_create","line":257},{"name":"definition_request_create","line":262},{"name":"cancel_params_create","line":267},{"name":"response_is_success","line":274},{"name":"response_has_error","line":279},{"name":"message_is_notification","line":284},{"name":"message_is_request","line":289},{"name":"message_type_to_string","line":294},{"name":"connection_is_active","line":304},{"name":"connection_state_to_string","line":309},{"name":"parse_result_create","line":319},{"name":"transport_supports_duplex","line":331},{"name":"req","line":340},{"name":"resp","line":345},{"name":"error","line":351},{"name":"resp","line":352},{"name":"notif","line":357},{"name":"err","line":362},{"name":"buf","line":367},{"name":"req","line":372},{"name":"req","line":377},{"name":"req","line":382},{"name":"resp","line":387},{"name":"error","line":392},{"name":"resp","line":393},{"name":"str","line":398},{"name":"str","line":408}],"imports":[],"terms":["lsp","protocol","json","rpc","default","buffer","size","max","length","method","initialize","initialized","shutdown","exit","did","open","close","completion","hover","definition","document","workspace","action","rename","request","response","notification","parse","transport","connection","state","incoming","outgoing","batch","cancel","params","create","success","active","supports","duplex","req","resp","notif","err","buf","str"]},{"id":"6ceda74185ee271a4807a4a2201ab68947237d3552921392442065c13b8feeb1","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_logistic.t27","health":"ok","module":"GftLogistic"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"hard_sigmoid","line":110},{"name":"on_comb","line":124}],"imports":[],"terms":["ternary","gft","logistic","magadd","magsub","sadd","neg","magmul","smul","hard","sigmoid","comb"]},{"id":"6d12259c8f9ce6b5c139b041f23558ef50c0f6a3edb22569fb4e2559f4ca3b54","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/trinity.t27","health":"ok","module":"tool_mcp_trinity"}],"description":"specs/tools/mcp/trinity.t27 -- tool mcp/trinity, MCP server \"trinity\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/trinity). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"6deb105682ed85d520e9ea126468db714fe5327c5e05ef27ebc160acdceca647","sources":[{"repo":"ghashtag/t27","path":"specs/git/diff.t27","health":"ok","module":"GitDiff"}],"description":"specs/git/diff.t27 Git Diff Operations","symbols":[{"name":"diff","line":14},{"name":"diff_cached","line":19},{"name":"diff_files","line":24},{"name":"diff_text","line":29},{"name":"diff_file_text","line":34},{"name":"stats","line":43},{"name":"stats_cached","line":48},{"name":"StatsSummary","line":53},{"name":"stats_summary","line":59},{"name":"get_files_changed","line":68},{"name":"count_files_by_status","line":73},{"name":"find_changes_in_path","line":78},{"name":"find_changes_in_patterns","line":83},{"name":"has_changes_in_path","line":88},{"name":"Hunk","line":97},{"name":"parse_hunks","line":107},{"name":"count_hunks","line":112}],"imports":[{"name":"base::types","line":6},{"name":"git::schema","line":7}],"terms":["git","diff","cached","text","stats","summary","get","changed","count","status","find","path","patterns","hunk","parse","hunks"]},{"id":"6e486ce745126ddc7861d9f5de7d92ba10254e50aca17b80299cadac0f0a4c11","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/ternary_link.t27","health":"ok","module":"ZeroDSP_TernaryLink"}],"description":"t27/specs/fpga/ternary_link.t27 TRI-NET ternary line code: 3B2T over a three-level physical layer. WHY THIS EXISTS. W652 measured that the \"ternary internet\" was binary at every layer: specs/fpga/bpsk.t27 carries SYM_POS=1 and SYM_NEG=-1 and no zero state anywhere, tri-net's wire header is 11 binary bytes, and nothing three-valued ever crossed between two nodes. This module is the smallest object that makes","symbols":[{"name":"WIRE_ZERO","line":36},{"name":"WIRE_POS","line":37},{"name":"WIRE_NEG","line":38},{"name":"GAT_ZERO","line":54},{"name":"GAT_POS","line":55},{"name":"GAT_NEG","line":56},{"name":"DRIVE_HIZ","line":72},{"name":"DRIVE_LOW","line":73},{"name":"DRIVE_HIGH","line":74},{"name":"CODE_DATA_BITS","line":77},{"name":"CODE_SYMBOLS","line":78},{"name":"CODE_WORDS_USED","line":79},{"name":"CODE_WORDS_TOTAL","line":80},{"name":"CODE_BIAS","line":81},{"name":"IDLE_HI","line":87},{"name":"IDLE_LO","line":88},{"name":"SLICE_ERROR","line":97},{"name":"MAX_WORD_DISPARITY","line":102},{"name":"encode_high","line":107},{"name":"encode_low","line":120},{"name":"decode_word","line":139},{"name":"symbol_to_wire","line":144},{"name":"wire_to_symbol","line":151},{"name":"symbol_to_drive","line":159},{"name":"slice","line":167},{"name":"wire_to_gft","line":179},{"name":"gat_to_wire","line":186},{"name":"gat_weight_sign","line":194},{"name":"word_disparity","line":202},{"name":"is_idle_pair","line":207},{"name":"frame_symbol_count","line":215},{"name":"on_comb","line":231}],"imports":[{"name":"base::types","line":30}],"terms":["fpga","ternary","link","zero","dsp","wire","pos","neg","gat","drive","hiz","low","high","data","bits","words","used","total","bias","idle","slice","max","word","disparity","encode","decode","gft","weight","sign","pair","frame","count","comb"]},{"id":"6e6d50829c860bc9b518f082a70a91cdf099342e26c446808c22b896578a680c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/version.t27","health":"ok","module":"TriVersion"}],"description":"t27/specs/","symbols":[{"name":"Version","line":13},{"name":"parse","line":26},{"name":"compare","line":31},{"name":"next","line":36}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","parse","compare"]},{"id":"6e7314f664d45e80ed132829c617b1485c95fd263f8dbda7244c058800cecbfe","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/red_black_tree.t27","health":"ok","module":"TriRbTree"}],"description":"t27/specs/","symbols":[{"name":"RBTree","line":13},{"name":"RBNode","line":19},{"name":"Color","line":29},{"name":"init","line":38},{"name":"insert","line":43},{"name":"find","line":48},{"name":"delete","line":53}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","red","black","tree","rbtree","rbnode","color","init","insert","find","delete"]},{"id":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_simulator.t27","health":"warn","module":"network_simulator"}],"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EVENTS","line":8},{"name":"MAX_PACKETS","line":9},{"name":"SIMULATION_TICK_MS","line":10},{"name":"create_sim_event","line":13},{"name":"get_event_id","line":20},{"name":"get_event_timestamp","line":24},{"name":"get_event_type","line":28},{"name":"get_event_node_id","line":32},{"name":"EVENT_PACKET_SEND","line":37},{"name":"EVENT_PACKET_RECV","line":38},{"name":"EVENT_NODE_FAILURE","line":39},{"name":"EVENT_LINK_FAILURE","line":40},{"name":"EVENT_TIMER_EXPIRE","line":41},{"name":"EVENT_STATE_CHANGE","line":42},{"name":"create_node_state","line":45},{"name":"get_node_id","line":52},{"name":"get_node_status","line":56},{"name":"get_node_energy","line":60},{"name":"get_node_position","line":64},{"name":"NODE_ACTIVE","line":69},{"name":"NODE_INACTIVE","line":70},{"name":"NODE_FAILED","line":71},{"name":"NODE_SLEEPING","line":72},{"name":"update_node_status","line":75},{"name":"update_node_energy","line":84},{"name":"create_link_state","line":107},{"name":"get_link_source","line":114},{"name":"get_link_dest","line":118},{"name":"get_link_quality","line":122},{"name":"get_link_latency","line":126},{"name":"update_link_quality","line":131},{"name":"is_link_operational","line":140},{"name":"create_packet","line":151},{"name":"get_packet_id","line":159},{"name":"get_packet_source","line":163},{"name":"get_packet_dest","line":167},{"name":"get_packet_size","line":171},{"name":"get_packet_sequence","line":175},{"name":"calculate_transmission_time","line":180},{"name":"create_sim_state","line":191},{"name":"get_sim_time","line":197},{"name":"get_sim_event_count","line":201},{"name":"get_sim_node_count","line":205},{"name":"advance_simulation","line":210},{"name":"process_event","line":221},{"name":"create_sim_stats","line":248},{"name":"get_packets_sent","line":255},{"name":"get_packets_recv","line":259},{"name":"get_packets_dropped","line":263},{"name":"get_total_latency","line":267},{"name":"calculate_delivery_ratio","line":272},{"name":"calculate_average_latency","line":284},{"name":"create_topology","line":296},{"name":"inject_fault","line":308},{"name":"run_simulation_step","line":322},{"name":"generate_simulation_report","line":346}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","simulator","max","nodes","events","packets","simulation","tick","create","sim","event","get","timestamp","node","packet","send","recv","failure","link","timer","expire","state","status","energy","position","active","inactive","failed","sleeping","dest","quality","latency","operational","size","sequence","calculate","transmission","time","count","advance","process","stats","sent","dropped","total","delivery","ratio","average","topology","inject","fault","step","generate","report"]},{"id":"6f56957ddaaf4b356a9d67840a7633fb648da73c30f1d4c53c7c5173dfa925e8","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/ops.t27","health":"warn","module":null}],"description":"ops.t27 — Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","symbols":[],"imports":[],"terms":["fpga","base","ops"]},{"id":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/axi4.t27","health":"ok","module":"Axi4"}],"description":"t27/specs/fpga/axi4.t27 AXI4-Lite and AXI4-Full Bus Interface Specification for Trinity T27 FPGA HIR Defines bus port groups for AW/AR/W/R/B channels Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"AxiKind","line":12},{"name":"MAX_BUS_PORTS","line":19},{"name":"AXI_ADDR_WIDTH","line":20},{"name":"AXI_DATA_WIDTH","line":21},{"name":"AXI_STRB_WIDTH","line":22},{"name":"AXI_ID_WIDTH","line":23},{"name":"AXI_LEN_WIDTH","line":24},{"name":"AXI_SIZE_WIDTH","line":25},{"name":"AXI_BURST_WIDTH","line":26},{"name":"AXI_RESP_WIDTH","line":27},{"name":"AXI_CACHE_WIDTH","line":28},{"name":"AXI_PROT_WIDTH","line":29},{"name":"AXI_QOS_WIDTH","line":30},{"name":"AXI_REGION_WIDTH","line":31},{"name":"AXI_USER_WIDTH","line":32},{"name":"AxiBusConfig","line":36},{"name":"BusPort","line":52},{"name":"CH_AW","line":60},{"name":"CH_AR","line":61},{"name":"CH_W","line":62},{"name":"CH_R","line":63},{"name":"CH_B","line":64},{"name":"axi4_lite_slave","line":68},{"name":"axi4_lite_master","line":84},{"name":"axi4_full_slave","line":100},{"name":"axi4_full_master","line":116},{"name":"is_lite","line":134},{"name":"is_full","line":138},{"name":"strb_width","line":142},{"name":"is_master","line":146},{"name":"slave_port_count","line":152},{"name":"total_bus_bits","line":227},{"name":"validate_axi","line":261}],"imports":[],"terms":["fpga","axi4","axi","kind","max","bus","ports","addr","width","data","strb","len","size","burst","resp","cache","prot","qos","region","user","config","port","lite","slave","master","full","count","total","bits","validate"]},{"id":"6fc7adbc3cb48e15a1b9746c3eebc3f03242dd124fd614bf0b50e4d103f6dcae","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/repro_range.t27","health":"ok","module":"ReproRange"}],"description":"","symbols":[{"name":"f","line":3}],"imports":[],"terms":["bootstrap","goldring","repro","range"]},{"id":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","sources":[{"repo":"ghashtag/t27","path":"specs/graph/knowledge_graph.t27","health":"ok","module":"KnowledgeGraph"}],"description":"Module: Knowledge Graph for Vector Symbolic Architecture","symbols":[{"name":"FILE_MAGIC","line":19},{"name":"FILE_VERSION","line":22},{"name":"VECTOR_DIM","line":25},{"name":"MAX_ENTITIES","line":28},{"name":"MAX_TRIPLES","line":31},{"name":"SIMILARITY_THRESHOLD","line":34},{"name":"Entity","line":43},{"name":"Relation","line":56},{"name":"Triple","line":69},{"name":"KnowledgeGraph","line":83},{"name":"initEntity","line":101},{"name":"hashString","line":107},{"name":"initGraph","line":117},{"name":"getOrCreateEntity","line":123},{"name":"getOrCreateRelation","line":129},{"name":"addTriple","line":136},{"name":"queryObject","line":143},{"name":"querySubject","line":150},{"name":"findSimilar","line":157},{"name":"findEntity","line":163},{"name":"findRelation","line":169},{"name":"findClosestEntityPacked","line":176},{"name":"stats","line":182},{"name":"save","line":192},{"name":"load","line":199}],"imports":[{"name":"base::types","line":9},{"name":"ternary::packed_trit","line":10},{"name":"numeric::gf16","line":11},{"name":"ternary::hybrid_arithmetic","line":12}],"terms":["graph","knowledge","magic","vector","dim","max","entities","triples","similarity","threshold","entity","relation","triple","init","hash","get","create","query","object","subject","find","similar","closest","packed","stats","save","load"]},{"id":"7003fb2eea2c09498de0d3cfb0cc3b7c081f4ac6bc16484aab5c97809daa6bf8","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_invalid_annotation.t27","health":"ok","module":"trinity_matrix_neg_invalid_annotation"}],"description":"trinity_matrix/neg_invalid_annotation.t27 -- NEGATIVE: a constant annotated str with an integer value; must not become an accepted executable capability.","symbols":[{"name":"NAME","line":6}],"imports":[],"terms":["bootstrap","fixtures","matrix","neg","invalid","annotation"]},{"id":"70156b4f00e3f1c9ce6951510a37233b65f156c48b9c7a1b5e038c17f00d514e","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/mcp.trinity-mcp.t27","health":"ok","module":"trinity_capability_mcp_trinity_mcp"}],"description":"specs/trinity/capabilities/mcp.trinity-mcp.t27 -- capability trinity/mcp.trinity-mcp: The trinity MCP server (tools/mcp/trinity_mcp/server.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","mcp","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_routing.t27","health":"warn","module":"AdaptiveRouting"}],"description":"Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures","symbols":[{"name":"MAX_PATHS","line":7},{"name":"METRIC_LATENCY","line":8},{"name":"METRIC_HOPS","line":9},{"name":"METRIC_BANDWIDTH","line":10},{"name":"UPDATE_INTERVAL","line":11},{"name":"create_path_metrics","line":14},{"name":"get_latency","line":21},{"name":"get_hops","line":25},{"name":"get_bandwidth","line":29},{"name":"get_load","line":33},{"name":"create_selection_state","line":38},{"name":"get_primary_path","line":45},{"name":"get_backup_path","line":49},{"name":"get_metric_type","line":53},{"name":"get_last_update","line":57},{"name":"create_path_metrics_array","line":64},{"name":"get_path_metrics","line":68},{"name":"calculate_score","line":76},{"name":"find_best_path","line":96},{"name":"needs_update","line":124},{"name":"update_selection","line":131},{"name":"change_metric_type","line":137},{"name":"is_path_congested","line":145},{"name":"find_least_congested","line":150}],"imports":[{"name":"base::types","line":5}],"terms":["net","adaptive","routing","max","paths","metric","latency","hops","bandwidth","interval","create","path","metrics","get","load","selection","state","primary","backup","array","calculate","score","find","best","congested","least"]},{"id":"703f02d41e57b24b69b0cd6317b335cd2078cb7d3591741ae804803d84a50e0b","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/python_api.t27","health":"warn","module":"TrinityMemoryPythonAPI"}],"description":"Native entry points for Python FFI representation adapters. No Python-domain fallbacks; caller supplies every buffer and explicit bound.","symbols":[{"name":"tm_api_validate_trits","line":5},{"name":"tm_api_tmem_count","line":13},{"name":"tm_api_server_host","line":19},{"name":"tm_api_tmem_metadata","line":22},{"name":"tm_api_classify","line":50},{"name":"tm_api_timeout","line":57}],"imports":[],"terms":["dmitrii","memory","python","api","validate","trits","tmem","count","host","metadata","classify","timeout"]},{"id":"70bc5c1e10d9905fa22a38de1c7b88926b75d69b6a82305e69613820f70f83ae","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-scholar.t27","health":"ok","module":"skill_trinity_scholar"}],"description":"specs/skills/trinity-scholar.t27 -- skill trinity/scholar Source of truth for the skill card on t27.ai (#/skills?skill=trinity/scholar). The skill body lives in gHashTag/trinity at .claude/skills/scholar/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/scholar/SKILL.md, sha256 5c35431008a4...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","scholar","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"70d2234eebb2fa85930ed2b25c43866083a67c5190480e9bda198faf98adcef1","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/queen.t27","health":"ok","module":"docs_chapter_queen"}],"description":"specs/docs/chapters/queen.t27 -- chapter 5 of the system documentation, docs/queen Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"DOCUMENT","line":14},{"name":"ORDER","line":16},{"name":"TITLE","line":17},{"name":"SOURCES","line":20},{"name":"SECTIONS","line":22},{"name":"DIAGRAM","line":25},{"name":"TABLE","line":27},{"name":"BODY_EN","line":29},{"name":"ENABLED","line":30}],"imports":[],"terms":["docs","chapters","queen","chapter","kind","document","order","title","sources","sections","diagram","table","enabled"]},{"id":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/project.t27","health":"ok","module":"trinity_project"}],"description":"specs/trinity/project.t27 -- the Trinity project manifest: what gHashTag/trinity is, pinned Source of truth for the project profile (gHashTag/t27#3563 = S01 of gHashTag/trinity#988): the consumer repository and the revision inventoried, the profiles, the dispositions and evidence tags every capability card uses, the dialect and build counts the inventory measured, the dependency pins and the work packages of the epic. tools/trinity_manifest.py inventory writes conformance/trinity/inventory.json from a clean pinned checkout and tools/trinity_manifest.py","symbols":[{"name":"KIND","line":15},{"name":"ID","line":16},{"name":"NAME","line":17},{"name":"CONSUMER_REPO","line":19},{"name":"PINNED_REVISION","line":20},{"name":"PINNED_AT","line":21},{"name":"T27_REVISION","line":23},{"name":"PROFILES","line":26},{"name":"INITIAL_PROFILE","line":27},{"name":"DISPOSITIONS","line":29},{"name":"EVIDENCE_TAGS","line":31},{"name":"DIALECTS","line":33},{"name":"T27_CANONICAL_FILES","line":35},{"name":"T27_MIRROR_FILES","line":36},{"name":"TRI_FILES","line":37},{"name":"VIBEE_FILES","line":38},{"name":"ZIG_FILES","line":39},{"name":"ZIG_UNREACHABLE_FILES","line":41},{"name":"BUILD_EXECUTABLES","line":43},{"name":"BUILD_LIBRARIES","line":44},{"name":"BUILD_TESTS","line":45},{"name":"BUILD_STEPS","line":46},{"name":"INSTALLED_BY_DEFAULT","line":47},{"name":"INSTALLED_GUARDED","line":48},{"name":"DEPENDENCIES","line":50},{"name":"DEPENDENCY_PINS","line":51},{"name":"SUBMODULES","line":52},{"name":"REGISTRY_COMMANDS","line":54},{"name":"CATALOG_SPECS","line":57},{"name":"CATALOG_REPOSITORIES","line":58},{"name":"WORK_PACKAGES","line":60},{"name":"WORK_PACKAGE_ISSUES","line":61},{"name":"ENABLED","line":62}],"imports":[],"terms":["project","kind","consumer","pinned","revision","profiles","initial","profile","dispositions","evidence","tags","dialects","canonical","mirror","vibee","zig","unreachable","build","executables","libraries","steps","installed","default","guarded","dependencies","dependency","pins","submodules","registry","commands","catalog","repositories","work","packages","package","enabled"]},{"id":"7139b2b6b7aa0906259f23ce6843e164cd365035c828ee5bbd2f9db07d305353","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_constants.t27","health":"warn","module":"SacredConstants"}],"description":"t27/specs/","symbols":[{"name":"SacredConstants","line":13}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","constants"]},{"id":"7155d76ca10f03c4c2cbe92de1350a9f38a118d9c610a9cfe2c0be294d441758","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/adder_tree.t27","health":"ok","module":"igla-race-adder-tree"}],"description":"t27/specs/igla/race/adder_tree.t27 8-input binary tree adder -- O(log N) latency, multiplier-free RTL R-SI-1: zero '*' operators in generated assignments","symbols":[{"name":"Vec8","line":14},{"name":"adder_tree_8","line":33},{"name":"adder_tree_4","line":46}],"imports":[{"name":"base::types","line":8}],"terms":["igla","race","adder","tree","vec8"]},{"id":"716635d0a782f18bfd6d112d88aeacc9e1961b81a85aec42b91a970fd55ce662","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-tri-pipeline.t27","health":"ok","module":"skill_t27_tri_pipeline"}],"description":"specs/skills/t27-tri-pipeline.t27 -- skill t27/tri-pipeline Source of truth for the skill card on t27.ai (#/skills?skill=t27/tri-pipeline). The skill body lives in gHashTag/t27 at .claude/skills/tri-pipeline/SKILL.md (vendored copy: apps/website/public/skills/files/t27/tri-pipeline/SKILL.md, sha256 b4bfc290b86a...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","pipeline","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","sources":[{"repo":"ghashtag/t27","path":"specs/config/load.t27","health":"warn","module":"config-load"}],"description":"config/load.t27 — Config Load/Save Specification Configuration file I/O, merging, validation","symbols":[{"name":"CONFIG_DIR_NAME","line":20},{"name":"CONFIG_FILE_EXT","line":23},{"name":"ENV_FILE_NAME","line":26},{"name":"MAX_CONFIG_SIZE","line":29},{"name":"CONFIG_FORMAT_VERSION","line":32},{"name":"FORMAT_JSON","line":35},{"name":"FORMAT_YAML","line":38},{"name":"ConfigSource","line":45},{"name":"ConfigFormat","line":53},{"name":"LoadResult","line":59},{"name":"LoadError","line":67},{"name":"SaveResult","line":74},{"name":"MergeStrategy","line":81},{"name":"MergeResult","line":88},{"name":"MergeConflict","line":95},{"name":"ValidationContext","line":103},{"name":"load_default","line":114},{"name":"paths","line":115},{"name":"load_from_file","line":120},{"name":"load_from_env","line":131},{"name":"save_default","line":142},{"name":"paths","line":143},{"name":"save_to_file","line":148},{"name":"merge","line":158},{"name":"merged","line":159},{"name":"conflicts","line":160},{"name":"merge_multiple","line":170},{"name":"merge_result","line":174},{"name":"validate","line":186},{"name":"api_error","line":190},{"name":"path_errors","line":197},{"name":"agent_errors","line":204},{"name":"validate_api_key","line":217},{"name":"validate_paths","line":225},{"name":"err","line":229},{"name":"validate_agents","line":237},{"name":"err","line":242},{"name":"validation_context_default","line":251},{"name":"validation_context_select","line":260},{"name":"load_error_create","line":269},{"name":"merge_conflict_create","line":278},{"name":"apply_merge_strategy","line":288},{"name":"merge_configs","line":297},{"name":"find_merge_conflicts","line":303},{"name":"get_default_paths","line":309},{"name":"append_errors","line":319},{"name":"append_errors_slice","line":329},{"name":"concat_errors","line":336},{"name":"concat_errors_string","line":346},{"name":"append_byte_string","line":355},{"name":"result","line":366},{"name":"result","line":371},{"name":"result","line":376},{"name":"base","line":381},{"name":"overlay","line":382},{"name":"result","line":383},{"name":"base","line":388},{"name":"overlay","line":389},{"name":"result","line":390},{"name":"base","line":395},{"name":"overlay","line":396},{"name":"result","line":397},{"name":"context","line":402},{"name":"context","line":407},{"name":"config","line":414},{"name":"context","line":415},{"name":"result","line":416},{"name":"context","line":423},{"name":"result","line":424},{"name":"config","line":429},{"name":"result","line":430},{"name":"paths","line":435},{"name":"config","line":562},{"name":"base","line":574},{"name":"overlay","line":575},{"name":"config","line":587},{"name":"context","line":588}],"imports":[{"name":"std","line":12}],"terms":["config","load","dir","ext","env","max","size","format","json","yaml","save","merge","strategy","conflict","validation","default","paths","merged","conflicts","multiple","validate","api","path","key","err","agents","select","create","apply","configs","find","get","append","slice","concat","byte","base","overlay"]},{"id":"71a93868a8177593f4fdae670dce0714895a9ecaadd2d4a09e2c7d84c415e962","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/low_bit_ternary.t27","health":"ok","module":"IGLALowBitTernary"}],"description":"t27/specs/","symbols":[{"name":"BitWidth","line":13},{"name":"QuantizationConfig","line":20},{"name":"TernaryWeight","line":27},{"name":"BenchmarkResult","line":32},{"name":"quantize","line":43},{"name":"evaluate_accuracy","line":48},{"name":"compress_ratio","line":53}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["igla","training","low","bit","ternary","iglalow","width","quantization","config","weight","benchmark","quantize","evaluate","accuracy","compress","ratio"]},{"id":"71cddbc4cc0d1eb79a135a98431f85beac07183932a594b271eea011e6e2bbde","sources":[{"repo":"ghashtag/t27","path":"specs/brain/cognitive_loop.t27","health":"ok","module":"brain-cognitive-loop"}],"description":"cognitive_loop.t27 — sense → evaluate → decide → act → consolidate (spec-first) Phase timing contract lives in phi_timing.t27; this module holds loop identity constants.","symbols":[{"name":"COGNITIVE_PHASE_COUNT","line":8},{"name":"cognitive_loop_phase_count","line":10}],"imports":[],"terms":["brain","cognitive","loop","phase","count"]},{"id":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","sources":[{"repo":"ghashtag/t27","path":"specs/config/migrate.t27","health":"warn","module":"config-migrate"}],"description":"config/migrate.t27 — Config Migration Specification Version detection, upgrade, compatibility handling","symbols":[{"name":"MIGRATION_VERSION","line":19},{"name":"MIN_SUPPORTED_VERSION","line":22},{"name":"MAX_MIGRATION_STEPS","line":25},{"name":"MIGRATION_TIMEOUT_SEC","line":28},{"name":"VERSION_KEY","line":31},{"name":"BACKUP_SUFFIX","line":34},{"name":"MigrationResultType","line":37},{"name":"MigrationAction","line":45},{"name":"MigrationSeverity","line":55},{"name":"MigrationStep","line":67},{"name":"MigrationRule","line":78},{"name":"MigrationResult","line":86},{"name":"MigrationError","line":96},{"name":"VersionInfo","line":104},{"name":"MigrationContext","line":111},{"name":"detect_version","line":123},{"name":"is_version_supported","line":129},{"name":"needs_migration","line":134},{"name":"step_create","line":139},{"name":"step_with_description","line":152},{"name":"result_success","line":165},{"name":"result_failure","line":177},{"name":"error_create","line":189},{"name":"error_info","line":199},{"name":"error_warning","line":204},{"name":"migrate","line":209},{"name":"current_version","line":210},{"name":"target_version","line":211},{"name":"step","line":228},{"name":"apply_rule","line":239},{"name":"backup_path_create","line":252},{"name":"backup_verify","line":257},{"name":"context_default","line":263},{"name":"context_dry_run","line":273},{"name":"base","line":274},{"name":"context_force","line":284},{"name":"base","line":285},{"name":"context_verbose","line":295},{"name":"base","line":296},{"name":"append_steps","line":306},{"name":"append_steps_slice","line":316},{"name":"concat_steps","line":323},{"name":"concat_steps_string","line":333},{"name":"append_byte_steps","line":342},{"name":"append_errors","line":349},{"name":"append_errors_slice","line":359},{"name":"concat_errors","line":366},{"name":"concat_errors_string","line":376},{"name":"append_byte_errors","line":385},{"name":"version","line":396},{"name":"step","line":413},{"name":"base","line":418},{"name":"step","line":419},{"name":"steps","line":424},{"name":"result","line":425},{"name":"errors","line":430},{"name":"result","line":431},{"name":"error","line":436},{"name":"error","line":441},{"name":"error","line":446},{"name":"path","line":451},{"name":"context","line":456},{"name":"context","line":461},{"name":"context","line":466},{"name":"config","line":612}],"imports":[{"name":"std","line":12}],"terms":["config","migrate","migration","min","supported","max","steps","timeout","sec","key","backup","suffix","action","severity","step","rule","info","detect","create","description","success","failure","warning","target","apply","path","verify","default","dry","base","force","verbose","append","slice","concat","byte"]},{"id":"728844f72e63135d00838501707b599e7543c679da8b990138a0d194717d00ac","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack.t27","health":"warn","module":"TrinityMemoryTensorPack"}],"description":"Native TensorPack v1 framing and caller-supplied descriptor validation. This is NOT a JSON parser or a full TensorPack decoder. In particular, this module cannot establish that descriptors equal the JSON metadata in a file. Include generated codecs.h, container.h, then tensorpack.h. All nonempty pointer ranges must be valid and output records must not alias input data.","symbols":[{"name":"TM_TP_ERR_DESCRIPTOR","line":7},{"name":"TM_TP_ERR_TEXT","line":8},{"name":"TM_TP_ERR_SHAPE","line":9},{"name":"TM_TP_ERR_SCALE","line":10},{"name":"TM_TP_ERR_AXES","line":11},{"name":"TM_TP_ERR_OFFSET","line":12},{"name":"TMTPText","line":14},{"name":"TMTensorDescriptor","line":15},{"name":"TMTPHeader","line":29},{"name":"TMTPValidation","line":36},{"name":"tm_tp_utf8","line":45},{"name":"tm_tp_text_equal","line":74},{"name":"tm_tp_validate_header","line":81},{"name":"tm_tp_descriptor_count","line":106},{"name":"tm_tp_validate_tmem","line":154},{"name":"tm_tp_validate_descriptors","line":198}],"imports":[],"terms":["dmitrii","memory","tensorpack","tensor","pack","err","descriptor","text","shape","scale","axes","offset","tmtptext","tmtensor","tmtpheader","tmtpvalidation","utf8","equal","validate","header","count","tmem","descriptors"]},{"id":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/sacred_physics.t27","health":"ok","module":"SacredPhysics"}],"description":"t27/specs/math/sacred_physics.t27 Strand I — Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.","symbols":[{"name":"PHI","line":11},{"name":"PHI_INV","line":12},{"name":"PHI_SQ","line":13},{"name":"PHI_INV_SQ","line":14},{"name":"TRINITY","line":17},{"name":"GAMMA_LQG","line":20},{"name":"C_THRESHOLD","line":23},{"name":"T_PRESENT_SEC","line":26},{"name":"T_PRESENT_MS","line":27},{"name":"neural_gamma_center","line":30},{"name":"phi_cubed","line":31},{"name":"sacred_gravity","line":40},{"name":"pi_sq","line":41},{"name":"pi_cub","line":42},{"name":"g2","line":43},{"name":"sacred_dark_energy","line":48},{"name":"gamma4","line":49},{"name":"gamma8","line":50},{"name":"pi2","line":51},{"name":"pi4","line":52},{"name":"MAX_REL_ERROR_G","line":61},{"name":"MAX_REL_ERROR_OMEGA","line":62},{"name":"MAX_ABS_ERROR_TRINITY","line":63},{"name":"SacredPhysicsReport","line":65},{"name":"verify_sacred_physics","line":86},{"name":"PI","line":87},{"name":"trinity","line":88},{"name":"trinity_ok","line":89},{"name":"gamma_val","line":91},{"name":"c_thr","line":92},{"name":"t_ms","line":93},{"name":"g_pred","line":95},{"name":"g_meas","line":96},{"name":"g_rel","line":97},{"name":"g_ok","line":98},{"name":"omega_pred","line":100},{"name":"omega_meas","line":101},{"name":"omega_rel","line":102},{"name":"omega_ok","line":103},{"name":"f_gamma","line":105}],"imports":[{"name":"math::constants","line":6}],"terms":["fpga","math","sacred","physics","phi","inv","gamma","lqg","threshold","present","sec","neural","center","cubed","gravity","cub","dark","energy","gamma4","gamma8","pi2","pi4","max","rel","omega","abs","report","verify","val","thr","pred","meas"]},{"id":"733a075bd6e68bd9a66a15d24c486f1d3b5af85e924522660a805c53e8b938cf","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf1024.t27","health":"ok","module":"triformat_bnf1024"}],"description":"bnf1024.t27 -- BNF1024: Binary Network Float, 1024-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf1024","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"737d4c04a9ed568aa611bd4933a163cd511ba730d3a145643ab0ae8d986fb0fd","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum_gravity.t27","health":"ok","module":"QuantumGravity"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","quantum","gravity"]},{"id":"738793d0462dc07cf6756fdac1350b90db3ae7f133ea54885ed6d050f0d0db9c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft128.t27","health":"ok","module":"triformat_gft128"}],"description":"gft128.t27 -- GF-T128: the golden-ratio ternary ladder, 128-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft128","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"73a4f9207c1ddbaa304cdfc874c0c09ebd837b4faa4ddac223f7b08383bdf80a","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_nn.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["benchmarks","bench"]},{"id":"73bb97ab69e0b71c9e8f4f889a00cf720c6ffcdcefde4e2d1efcdbd8c7ef17b7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/colors.t27","health":"ok","module":"TriColors"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","colors"]},{"id":"73ff76bdd9389cea8203d82ed1262841928f177d3f7ea7224317980581b29edd","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/campaign_self_reproduction.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","campaign","self","reproduction"]},{"id":"73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_scenarios.t27","health":"ok","module":"ProductionScenarios"}],"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","symbols":[{"name":"STATE_COLD_START","line":8},{"name":"STATE_DISCOVERING","line":9},{"name":"STATE_CONNECTED","line":10},{"name":"STATE_PARTITIONED","line":11},{"name":"STATE_RECOVERING","line":12},{"name":"create_node_state","line":15},{"name":"node_state","line":19},{"name":"node_neighbors","line":23},{"name":"node_uptime","line":27},{"name":"cold_start","line":32},{"name":"discover_neighbor","line":36},{"name":"simulate_partition","line":49},{"name":"recover_from_partition","line":57},{"name":"node_join","line":66},{"name":"node_leave","line":72},{"name":"simulate_interference","line":83},{"name":"battery_drain","line":93},{"name":"check_max_hops","line":102}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","production","scenarios","state","cold","start","discovering","connected","partitioned","recovering","create","node","neighbors","uptime","discover","neighbor","simulate","partition","recover","join","leave","interference","battery","drain","max","hops"]},{"id":"740d067747a4de74acb2be6ba7072f11ef58da37700addab7e7a172cc0c397aa","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-measure-corpus.t27","health":"ok","module":"skill_t27_measure_corpus"}],"description":"specs/skills/t27-measure-corpus.t27 -- skill t27/measure-corpus Source of truth for the skill card on t27.ai (#/skills?skill=t27/measure-corpus). The skill body lives in gHashTag/t27 at .claude/skills/measure-corpus/SKILL.md (vendored copy: apps/website/public/skills/files/t27/measure-corpus/SKILL.md, sha256 b8fb7503f660...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","measure","corpus","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"7411a1ca05061742f6bf4dedaaf4fe6b88343896e80971c79f334978f2432d9d","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot4_rne.t27","health":"warn","module":"GftDot4Rne"}],"description":"","symbols":[{"name":"gmul","line":8},{"name":"gadd","line":30},{"name":"dot2","line":63},{"name":"on_comb","line":66}],"imports":[],"terms":["ternary","gft","dot4","rne","dot4rne","gmul","gadd","dot2","comb"]},{"id":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/codegen.t27","health":"warn","module":"verilog_codegen"}],"description":"codegen.t27 — Code Generator for Verilog Generates synthesizable Verilog from t27 AST","symbols":[{"name":"VerilogCodegenOptions","line":8},{"name":"VerilogCodegen","line":16},{"name":"new","line":26},{"name":"pc_width","line":28},{"name":"addr_width","line":29},{"name":"data_width","line":30},{"name":"generate","line":44},{"name":"emit_header","line":93},{"name":"emit_parameters","line":110},{"name":"emit_ports","line":127},{"name":"emit_signals","line":157},{"name":"emit_instruction_rom","line":218},{"name":"encoded","line":230},{"name":"hex","line":236},{"name":"encode_instruction","line":249},{"name":"opcode_to_bits","line":270},{"name":"operand_to_bits","line":287},{"name":"disassemble","line":310},{"name":"opcode_to_mnemonic","line":321},{"name":"operand_to_string","line":338},{"name":"emit_data_memory","line":349},{"name":"emit_register_file","line":360},{"name":"emit_decode","line":368},{"name":"emit_alu","line":380},{"name":"emit_control","line":391},{"name":"emit_fpga_top","line":403},{"name":"emit_verilog_assertions","line":491},{"name":"emit_verilog_assertion","line":505},{"name":"verilog_name","line":506},{"name":"emit_footer","line":547},{"name":"emit_testbench","line":553},{"name":"emit_verilog_test_task","line":660},{"name":"verilog_name","line":661},{"name":"emit_test_calls","line":728},{"name":"verilog_name","line":732},{"name":"mangle_verilog_name","line":742},{"name":"emit","line":757},{"name":"emit_line","line":761},{"name":"emit_int","line":772},{"name":"indent","line":776},{"name":"dedent","line":780},{"name":"StringBuilder","line":788},{"name":"new","line":793},{"name":"append","line":801},{"name":"to_string","line":809},{"name":"Program","line":815},{"name":"CodeSection","line":822},{"name":"TestSection","line":827},{"name":"InvariantSection","line":831},{"name":"Instruction","line":835},{"name":"Opcode","line":840},{"name":"Operand","line":853},{"name":"TestCase","line":860},{"name":"InvariantDecl","line":867},{"name":"CodegenError","line":873},{"name":"calculate_width","line":879},{"name":"format_hex","line":894},{"name":"hex_chars","line":895},{"name":"shift","line":900},{"name":"digit","line":901},{"name":"int_to_str","line":909},{"name":"output","line":962},{"name":"output","line":993}],"imports":[],"terms":["compiler","codegen","verilog","options","width","addr","data","generate","emit","header","parameters","ports","signals","rom","encoded","hex","encode","opcode","bits","operand","disassemble","mnemonic","memory","register","decode","alu","control","fpga","top","assertions","assertion","footer","testbench","calls","mangle","int","indent","dedent","builder","append","program","section","invariant","case","decl","calculate","format","chars","shift","digit","str"]},{"id":"7489fea274db7163ea593d3dfe4e7cb5cf8b65df4437bbc0ff6ee03fbe5c01ce","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/derived_packs_candidates.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","derived","packs","candidates"]},{"id":"748a19d26fa53cf98eb889e0f223855c49e88d6d7efa5a7ca3c68accc9768c0e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_gfvalid.t27","health":"ok","module":"TriComputeGfValid"}],"description":"TRI-NET GoldenFloat validity, generalised across the GF family. The settle gate's is_finite_gf16 was hardcoded to GF16 (exp field == 0x3F): it silently passes inf/nan from GF4/GF8/GF14/GF20+ results, so garbage compute in any non-GF16 format could be paid. A GF value is special (inf/nan) exactly when its exponent field is all-ones; the field's width/position is per-format: GF4 E1 M2 | GF8 E3 M4 | GF12 E4 M7 | GF14 E5 M8 | GF16 E6 M9 | GF20 E7 M12","symbols":[{"name":"is_finite_gf","line":14},{"name":"is_finite_gf_h","line":25},{"name":"FMT_GF_BINARY","line":39},{"name":"FMT_GFT16","line":40},{"name":"gft_pow3","line":49},{"name":"gft_offset_max","line":62},{"name":"gft_exp_trits_for_width","line":72},{"name":"gft_offset_max_for_width","line":90},{"name":"is_finite_gft_n","line":100},{"name":"gft_offset_in_range","line":110},{"name":"is_valid_gft","line":119},{"name":"GFT16_OFFSET_MAX","line":129},{"name":"is_finite_gft16","line":130},{"name":"is_finite_dispatch","line":140}],"imports":[{"name":"base::types","line":10}],"terms":["net","compute","gfvalid","valid","finite","fmt","binary","gft16","gft","pow3","offset","max","exp","trits","width","range","dispatch"]},{"id":"751431cc3b541194897283a0f63b82af55129c2166636be7e411fb1a73266e03","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd.t27","health":"ok","module":"Sgd"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LR","line":13},{"name":"DEFAULT_MOMENTUM","line":14},{"name":"SGDConfig","line":20},{"name":"SGDState","line":28},{"name":"init","line":37},{"name":"update","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","sgd","default","momentum","sgdconfig","sgdstate","init"]},{"id":"7520e251d23861075aa7c4899aee7074e7199364c34f8f3218ee7d7711acd6e6","sources":[{"repo":"ghashtag/t27","path":"specs/automation/agent-provider-chain.t27","health":"ok","module":"automation"}],"description":"specs/automation/agent-provider-chain.t27 -- the chain of model providers behind the vibee-render agent (chat, seller sweep, CRM duet) and its RESERVE route. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/provider.ts (CATALOG, providerOrder, allProviders, diagnose) and provider-choice.ts (KNOWN_PROVIDERS, the owner's pick from the bot). WHY a reserve route: three duet runs on 2026-09-13 (duet-mtzyg2t6, duet-mu00klri and the","symbols":[{"name":"KIND","line":27},{"name":"ID","line":28},{"name":"REPO","line":29},{"name":"VERSION","line":30},{"name":"ORDER_DEFAULT","line":34},{"name":"PROVIDERS","line":35},{"name":"OWNER_PICK_GOES_FIRST","line":36},{"name":"EVERY_CONFIGURED_PROVIDER_IS_TRIED","line":37},{"name":"RESERVE_ID","line":40},{"name":"RESERVE_ENV_BASE","line":41},{"name":"RESERVE_ENV_KEY","line":42},{"name":"RESERVE_ENV_MODEL","line":43},{"name":"RESERVE_NEEDS_ALL_THREE","line":44},{"name":"RESERVE_ENV_TOOLS","line":45},{"name":"RESERVE_ENV_VISION","line":46},{"name":"RESERVE_THINKING","line":47},{"name":"RESERVE_AFTER","line":48},{"name":"RESERVE_BEFORE","line":49},{"name":"RESERVE_CAPABILITIES_DECLARED_NOT_MEASURED","line":50},{"name":"RESERVE_IN_BOT_PICKER","line":51},{"name":"SKIPPED_PROVIDER_IS_LOGGED","line":52},{"name":"SKIP_LOG_PREFIX","line":53},{"name":"RESERVE_CONFIGURED_LIVE","line":59},{"name":"RESERVE_CONFIGURED_LIVE_EVIDENCE","line":60},{"name":"RESERVE_ANSWERED_LIVE","line":64},{"name":"RESERVE_PROBES","line":65},{"name":"RESERVE_PROBE_ANSWERED_BY","line":66},{"name":"reserve_available","line":69},{"name":"default_position","line":74}],"imports":[],"terms":["automation","provider","chain","kind","order","default","providers","owner","pick","goes","configured","tried","reserve","env","base","key","model","three","vision","thinking","capabilities","declared","measured","bot","picker","skipped","logged","skip","log","prefix","live","evidence","answered","probes","probe","available","position"]},{"id":"752dad745fac0d7ac30994843be67a1238017536671493bdaf0bfef8fee72be2","sources":[{"repo":"ghashtag/t27","path":"specs/ar/coa_planning.t27","health":"warn","module":null}],"description":"spec: CoaPlanning Course of Action (COA) planning for neuro-symbolic reasoning","symbols":[{"name":"ActionType","line":9},{"name":"COAStep","line":24},{"name":"CourseOfAction","line":35},{"name":"ConstraintType","line":47},{"name":"COAConstraint","line":57},{"name":"MAX_COA_STEPS","line":64},{"name":"MAX_PLANNING_DEPTH","line":67},{"name":"new_coa","line":70},{"name":"add_step","line":84},{"name":"generate_coa","line":105},{"name":"verify_coa","line":176},{"name":"satisfies_constraint","line":206},{"name":"validate_prerequisites","line":238},{"name":"extract_proof_trace","line":261},{"name":"format_coa","line":279},{"name":"trit_to_string","line":310},{"name":"action_type_to_string","line":323}],"imports":[{"name":"base::types","line":5}],"terms":["coa","planning","action","coastep","course","constraint","coaconstraint","max","steps","depth","step","generate","verify","satisfies","validate","prerequisites","extract","proof","trace","format","trit"]},{"id":"75412d3ca17d8e725265fcad1fa41119076e6557f9740dadc23d87d9d2ad3718","sources":[{"repo":"ghashtag/t27","path":"specs/physics/hslm_benchmark.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["physics","hslm","benchmark"]},{"id":"75436c3008387808f7f8e4f65bd94adf669162e85a6caac70c9007eac588f49d","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/format_table_invariants.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","format","table","invariants"]},{"id":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27","health":"ok","module":"pricing-honesty"}],"description":"specs/turbobaby/pricing_honesty.t27 -- an absent rate is not zero, and a dash is not silence The formal statement of DECISIONS.md D11 (price provenance) and D9 (absent stays absent) for one value: the published per-day rate of a bike family. Source of truth for the optional-rate representation the two runtimes named by D15 must share -- src/trios/pricing.rs for the Axum server and for the Dioxus/WASM catalog screen -- so that the honesty filters are written once and checked against a written contract instead of against each other. ASCII only (L3).","symbols":[{"name":"KIND","line":56},{"name":"ID","line":57},{"name":"NAME","line":58},{"name":"REUSES_AVAILABILITY_ID","line":61},{"name":"DECISIONS","line":62},{"name":"SEED","line":63},{"name":"SEED_MEASURED_AT","line":64},{"name":"PRICE_AUTHORITY","line":65},{"name":"FAMILIES_WITHOUT_RATE","line":76},{"name":"OFFERED_WITHOUT_RATE","line":79},{"name":"PUBLISHED_DAY_RATES","line":81},{"name":"ZERO_DAY_RATES","line":83},{"name":"CHEAPEST_PUBLISHED_DAY_RATE_THB","line":85},{"name":"CHEAPEST_IN_STOCK_DAY_RATE_THB","line":87},{"name":"DEAREST_IN_STOCK_DAY_RATE_THB","line":89},{"name":"NULL_MONEY_FIELDS_IN_STOCK","line":91},{"name":"ISSUE_CLAIMED_WITHOUT_RATE","line":93},{"name":"ISSUE_FIGURE_NOTE","line":94},{"name":"RATE_INVALID","line":105},{"name":"RATE_ABSENT","line":106},{"name":"RATE_PRESENT","line":107},{"name":"TAGS","line":110},{"name":"SOURCE_NONE","line":114},{"name":"SOURCE_DOOR","line":115},{"name":"SOURCE_FILE_REFERENCE","line":116},{"name":"SOURCE_NAMES","line":117},{"name":"NOT_AN_AMOUNT_THB_DAY","line":129},{"name":"OptionalRate","line":136},{"name":"SHAPE_DASH","line":144},{"name":"SHAPE_AMOUNT","line":145},{"name":"DASH","line":146},{"name":"UNIT","line":147},{"name":"AMOUNT_DECIMALS","line":151},{"name":"SAY_NOTHING_EXTRA","line":155},{"name":"SAY_HUMAN_QUOTES","line":156},{"name":"MUST_SAY","line":157},{"name":"MUST_NOT_EMIT","line":161},{"name":"RenderedRate","line":172},{"name":"rate_present","line":189},{"name":"rate_reference","line":197},{"name":"rate_absent","line":206},{"name":"rate_zero_filled_record","line":213},{"name":"is_present","line":217},{"name":"is_client_price","line":221},{"name":"render","line":229},{"name":"may_add_to_cart","line":243}],"imports":[],"terms":["turbobaby","user","bot","pricing","honesty","kind","reuses","availability","decisions","seed","measured","price","authority","families","rate","offered","published","day","rates","zero","cheapest","thb","stock","dearest","null","money","fields","claimed","figure","note","invalid","absent","present","tags","door","reference","amount","optional","shape","dash","unit","decimals","say","nothing","extra","human","quotes","emit","rendered","filled","record","client","render","may","cart"]},{"id":"7613974a2fe2ce834ef4997afff960de62d03b4deb791e5f867dbb6edcd648f1","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/nf4.t27","health":"warn","module":"triformat-nf4"}],"description":"nf4.t27 — NormalFloat4 Quantization 4-bit quantization based on normalized distribution Values: {-1, -0.667, -0.333, 0, 0.333, 0.667, 1, 0} (8 levels + zero)","symbols":[{"name":"BITS","line":13},{"name":"LEVELS","line":14},{"name":"TOTAL_LEVELS","line":15},{"name":"NUM_NEGATIVE_LEVELS","line":21},{"name":"NUM_POSITIVE_LEVELS","line":22},{"name":"NF4","line":28},{"name":"LEVELS_FLOAT","line":36},{"name":"LEVELS_PHI","line":49},{"name":"QUANTIZATION_LEVELS","line":61},{"name":"nf4_from_f32","line":70},{"name":"abs_value","line":76},{"name":"nf4_from_f64","line":112},{"name":"nf4_from_i8","line":118},{"name":"normalized","line":120},{"name":"nf4_to_f32","line":126},{"name":"index","line":127},{"name":"nf4_to_f64","line":133},{"name":"nf4_to_i8","line":139},{"name":"fval","line":140},{"name":"scaled","line":141},{"name":"nf4_add","line":151},{"name":"fa","line":152},{"name":"fb","line":153},{"name":"nf4_sub","line":159},{"name":"fa","line":160},{"name":"fb","line":161},{"name":"nf4_mul","line":167},{"name":"fa","line":168},{"name":"fb","line":169},{"name":"nf4_div","line":175},{"name":"fb","line":176},{"name":"fa","line":180},{"name":"nf4_is_zero","line":190},{"name":"nf4_is_negative","line":196},{"name":"nf4_is_positive","line":202},{"name":"nf4_abs","line":208},{"name":"nf4_neg","line":214},{"name":"magnitude","line":215},{"name":"nf4_is_equal","line":224},{"name":"nf4_is_greater","line":230},{"name":"fa","line":231},{"name":"fb","line":232},{"name":"nf4_is_less","line":238},{"name":"fa","line":239},{"name":"fb","line":240},{"name":"nf4_max","line":246},{"name":"nf4_min","line":252},{"name":"nf4_clamp","line":258},{"name":"nf4_lerp","line":264},{"name":"fa","line":265},{"name":"fb","line":266},{"name":"result","line":267},{"name":"nf4_magnitude","line":273},{"name":"nf4_l1_distance","line":279},{"name":"fa","line":280},{"name":"fb","line":281},{"name":"nf4_l2_distance","line":287},{"name":"fa","line":288},{"name":"fb","line":289},{"name":"diff","line":290},{"name":"nf4_scale","line":296},{"name":"fa","line":297}],"imports":[],"terms":["euler","numeric","nf4","triformat","bits","levels","total","num","negative","positive","float","phi","quantization","f32","abs","f64","normalized","index","fval","scaled","sub","mul","div","zero","neg","magnitude","equal","greater","less","max","min","clamp","lerp","distance","diff","scale"]},{"id":"76483e0f7da1650b1481b60303334b3240a0872f02c2ae3ccfb9f61b7cadbeb7","sources":[{"repo":"ghashtag/t27","path":"specs/nn/phi_rope.t27","health":"warn","module":null}],"description":"specs/nn/phi_rope.t27 φ-RoPE: Rotary Position Embedding using Golden Ratio θ_i = PHI^(-2i/d) instead of standard 10000^(-2i/d)","symbols":[],"imports":[],"terms":["phi","rope"]},{"id":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/parser.t27","health":"ok","module":"Parsing"}],"description":"specs/compiler/parser.t27 T27 Parser Specification — Self-hosting compiler core This module defines the complete recursive descent parser for the T27 language. It is a 1:1 port of bootstrap/src/compiler.rs Parser to t27 spec format.","symbols":[{"name":"MAX_CHILDREN","line":17},{"name":"NodeKind","line":19},{"name":"Node","line":56},{"name":"Parser","line":76},{"name":"parser_init","line":84},{"name":"advance","line":96},{"name":"check","line":101},{"name":"check_peek","line":105},{"name":"expect","line":109},{"name":"error","line":119},{"name":"get_error","line":124},{"name":"skip_brace_body","line":132},{"name":"skip_to_semicolon","line":152},{"name":"is_top_level_start","line":186},{"name":"skip_to_next_top_level","line":201},{"name":"recover_to_stmt_boundary","line":238},{"name":"parse_type_annotation","line":267},{"name":"node_new","line":331},{"name":"add_child","line":349},{"name":"parse_expr","line":356},{"name":"parse_expr_or","line":360},{"name":"right","line":364},{"name":"parse_expr_and","line":374},{"name":"right","line":378},{"name":"parse_expr_comparison","line":388},{"name":"op","line":397},{"name":"right","line":399},{"name":"parse_expr_bitor","line":409},{"name":"op","line":412},{"name":"right","line":414},{"name":"parse_expr_bitxor","line":424},{"name":"op","line":427},{"name":"right","line":429},{"name":"parse_expr_bitand","line":439},{"name":"op","line":442},{"name":"right","line":444},{"name":"parse_expr_shift","line":454},{"name":"op","line":457},{"name":"right","line":459},{"name":"parse_expr_additive","line":469},{"name":"op","line":474},{"name":"right","line":476},{"name":"parse_expr_multiplicative","line":486},{"name":"op","line":492},{"name":"right","line":494},{"name":"parse_expr_unary","line":504},{"name":"op","line":509},{"name":"operand","line":511},{"name":"parse_expr_postfix","line":520},{"name":"field","line":533},{"name":"index","line":548},{"name":"parse_call_args_internal","line":563},{"name":"arg","line":571},{"name":"parse_expr_primary","line":581},{"name":"name","line":622},{"name":"inner","line":637},{"name":"inner","line":652},{"name":"parse_call_args","line":666},{"name":"arg","line":673},{"name":"parse_struct_literal","line":683},{"name":"val","line":706},{"name":"parse_array_literal","line":720},{"name":"parse_if_expr","line":772},{"name":"cond","line":777},{"name":"then_expr","line":781},{"name":"else_expr","line":786},{"name":"parse_switch_expr","line":793},{"name":"val","line":798},{"name":"arm_expr","line":833},{"name":"parse_body_stmt","line":850},{"name":"expr","line":887},{"name":"rhs","line":891},{"name":"rhs","line":903},{"name":"parse_local_decl","line":922},{"name":"init","line":939},{"name":"parse_return_statement","line":949},{"name":"expr","line":955},{"name":"parse_if_stmt","line":965},{"name":"cond","line":970},{"name":"s","line":980},{"name":"stmt","line":986},{"name":"else_if","line":996},{"name":"s","line":1007},{"name":"parse_while_stmt","line":1018},{"name":"cond","line":1023},{"name":"s","line":1032},{"name":"parse_for_stmt","line":1041},{"name":"iter_expr","line":1048},{"name":"param_name","line":1064},{"name":"s","line":1079},{"name":"parse_fn_body","line":1088},{"name":"s","line":1091},{"name":"parse_struct_body","line":1102},{"name":"field_name","line":1106},{"name":"parse_enum_body","line":1135},{"name":"name","line":1139},{"name":"parse_top_level_decl","line":1176},{"name":"parse_const_decl","line":1202},{"name":"parse_var_decl","line":1303},{"name":"parse_enum_decl","line":1318},{"name":"parse_struct_decl","line":1345},{"name":"parse_fn_decl","line":1363},{"name":"param_name","line":1385},{"name":"param_type","line":1390},{"name":"parse","line":1457},{"name":"parse_module_body","line":1488},{"name":"import_name","line":1524},{"name":"decl","line":1532},{"name":"or_level","line":1551},{"name":"and_level","line":1552},{"name":"comp_level","line":1553},{"name":"add_level","line":1554},{"name":"mul_level","line":1555},{"name":"unary_level","line":1556}],"imports":[{"name":"base::types","line":10},{"name":"compiler::lexer","line":11}],"terms":["compiler","parser","parsing","max","children","node","kind","init","advance","peek","expect","get","skip","brace","semicolon","top","level","start","recover","stmt","boundary","parse","annotation","child","expr","right","comparison","bitor","bitxor","bitand","shift","additive","multiplicative","unary","operand","postfix","field","index","call","args","internal","arg","primary","inner","struct","literal","val","array","cond","else","switch","arm","rhs","local","decl","statement","iter","param","enum","var","import","comp","mul"]},{"id":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/zip.t27","health":"ok","module":"TriZipper"}],"description":"t27/specs/","symbols":[{"name":"Zipper","line":13},{"name":"current","line":24},{"name":"go_down","line":29},{"name":"go_up","line":34},{"name":"go_left","line":39},{"name":"go_right","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["zip","zipper","down","left","right"]},{"id":"769952ebb9d14eba7cdd2ee226b9d266de20e692ac0ee1e66ba6f622564a91f9","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-vibee-gen.t27","health":"ok","module":"skill_trinity_vibee_gen"}],"description":"specs/skills/trinity-vibee-gen.t27 -- skill trinity/vibee-gen Source of truth for the skill card on t27.ai (#/skills?skill=trinity/vibee-gen). The skill body lives in gHashTag/trinity at .claude/skills/vibee-gen/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/vibee-gen/SKILL.md, sha256 fc01e69f1395...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","vibee","gen","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"76affd22763395ddb1ff3639130a93df72fdd0c7491275d4ef3f1cd0bc5c9377","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/kinds.t27","health":"ok","module":"tool_tri_kinds"}],"description":"specs/tools/tri/kinds.t27 -- tool tri/kinds, the `tri kinds` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/kinds). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["kinds","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_tests.t27","health":"ok","module":"MeshIntegrationTests"}],"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","symbols":[{"name":"VERSION","line":10},{"name":"KIND_DATA","line":11},{"name":"header_byte","line":13},{"name":"MESH_NET_A","line":28},{"name":"MESH_NET_B","line":29},{"name":"MESH_NET_C","line":30},{"name":"mesh_ip","line":32},{"name":"ST_IDLE","line":38},{"name":"ST_TX_WAIT","line":39}],"imports":[{"name":"base::types","line":5}],"terms":["net","integration","mesh","kind","data","header","byte","idle","wait"]},{"id":"76ed9aa7465a9ba704074563535c41d2df1fcfa2ac76059bfe2eb5e3e52c5933","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-site-live-gate.t27","health":"ok","module":"cron_trinity_site_live_gate"}],"description":"specs/crons/trinity-site-live-gate.t27 -- cron github-actions/trinity/site-live-gate Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/site-live-gate). The schedule was read from trinity:.github/workflows/site-live-gate.yml#L33. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","site","live","gate","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"76f4b79cfecc890ab7a7f7bcbe9564aa9d6ecde995aedb1de20315716844ca22","sources":[{"repo":"ghashtag/t27","path":"specs/bus/schema.t27","health":"ok","module":"bus-schema"}],"description":"bus/schema.t27 — Event Type Definitions Core event types and structures for the event bus","symbols":[{"name":"DEFAULT_CHANNEL_SIZE","line":19},{"name":"MAX_PAYLOAD_SIZE","line":22},{"name":"DEFAULT_SUBSCRIBER_BUFFER","line":25},{"name":"MAX_SUBSCRIBERS_PER_TOPIC","line":28},{"name":"DEFAULT_EVENT_TTL_MS","line":31},{"name":"WILDCARD_TOPIC","line":34},{"name":"TOPIC_SEPARATOR","line":37},{"name":"EventType","line":44},{"name":"EventPriority","line":60},{"name":"Event","line":68},{"name":"EventFilter","line":79},{"name":"EventResult","line":86},{"name":"EventBatch","line":92},{"name":"EventMetadata","line":98},{"name":"TopicPattern","line":105},{"name":"EventStats","line":111},{"name":"BusState","line":120},{"name":"BusConfig","line":129},{"name":"EventAck","line":137},{"name":"DeliveryMode","line":145},{"name":"Subscription","line":152},{"name":"SubscriptionInfo","line":162},{"name":"UnsubscribeResult","line":170},{"name":"BusError","line":177},{"name":"event_create","line":188},{"name":"event_with_priority","line":201},{"name":"event_filter_create","line":214},{"name":"event_result_create","line":223},{"name":"event_result_error","line":231},{"name":"topic_pattern_create","line":239},{"name":"bus_config_default","line":247},{"name":"subscription_create","line":257},{"name":"subscription_info_create","line":269},{"name":"unsubscribe_result_create","line":279},{"name":"bus_error_create","line":288},{"name":"event_stats_create","line":297},{"name":"event_type_to_string","line":308},{"name":"priority_to_string","line":326},{"name":"is_wildcard_pattern","line":336},{"name":"topic_matches_pattern","line":341},{"name":"event_matches_filter","line":349},{"name":"matches_priority","line":370},{"name":"is_bus_running","line":375},{"name":"bus_state_to_string","line":380},{"name":"is_payload_valid","line":391},{"name":"event","line":400},{"name":"event","line":405},{"name":"filter","line":410},{"name":"result","line":415},{"name":"pattern","line":420},{"name":"config","line":425},{"name":"sub","line":430},{"name":"info","line":435},{"name":"result","line":440},{"name":"error","line":445},{"name":"stats","line":450},{"name":"str","line":455},{"name":"str","line":460},{"name":"pattern","line":465},{"name":"pattern","line":470},{"name":"event","line":475},{"name":"filter","line":476},{"name":"str","line":485},{"name":"pattern","line":615},{"name":"event","line":627},{"name":"filter","line":628}],"imports":[],"terms":["bus","schema","default","channel","size","max","payload","subscriber","buffer","subscribers","per","topic","event","ttl","wildcard","separator","priority","filter","batch","metadata","pattern","stats","state","config","ack","delivery","mode","subscription","info","unsubscribe","create","matches","running","valid","sub","str"]},{"id":"77346585fb0fb4befeba1c4f3233a3dbf8d4cbb3107df4f29cb3ca3f916c96cc","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf48.t27","health":"ok","module":"triformat-gf48"}],"description":"gf48.t27 -- GoldenFloat48 Encode/Decode GF48: 48-bit floating point with 1 sign + 18 exponent + 29 mantissa Bit layout: [S(1) E(18) M(29)] = [47:47][46:29][28:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS","line":24},{"name":"EXP_MAX","line":25},{"name":"EM_RATIO","line":28},{"name":"PHI_DIST","line":29},{"name":"PHI_BIAS_STATUS","line":31}],"imports":[],"terms":["numeric","gf48","triformat","total","bits","sign","exp","mant","shift","bias","max","ratio","phi","dist","status"]},{"id":"77566dd023604fbac7e5faed2a768ddb4e05c21c50d05569b2bebd5be2c61579","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/trinity_numeric_surface.t27","health":"ok","module":"trinity-numeric-surface"}],"description":"trinity_numeric_surface.t27 — Public numeric interchange policy (GoldenFloat-first) NUMERIC-STANDARD-001 — integer-backed GF raw words are the portable surface","symbols":[{"name":"POLICY_VERSION","line":21},{"name":"GF4_RAW_BITS","line":24},{"name":"GF8_RAW_BITS","line":25},{"name":"GF12_RAW_BITS","line":26},{"name":"GF16_RAW_BITS","line":27},{"name":"GF20_RAW_BITS","line":28},{"name":"GF24_RAW_BITS","line":29},{"name":"GF32_RAW_BITS","line":30},{"name":"PRIMARY_INFERENCE_RAW_BITS","line":33}],"imports":[],"terms":["numeric","surface","policy","gf4","raw","bits","gf8","gf12","gf16","gf20","gf24","gf32","primary","inference"]},{"id":"7764be58758765cb0794cbd0621d91356ee6b71ba3adfb462f615b62111d7454","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-model-complete.t27","health":"ok","module":"fn_training_model_complete"}],"description":"specs/functions/training-model-complete.t27 -- function training-model-complete (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-complete). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/handleModelTrainingCompleted.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","training","model","complete","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf4.t27","health":"ok","module":"GF4"}],"description":"t27/specs/numeric/gf4.t27 GoldenFloat4 0 4-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 2 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF4","line":35},{"name":"encode","line":44},{"name":"pos","line":50},{"name":"decode","line":86},{"name":"sign_bit","line":87},{"name":"exp_bit","line":88},{"name":"mant_bits","line":89},{"name":"mant","line":97},{"name":"exp_scale","line":100},{"name":"value","line":102},{"name":"max_value","line":114},{"name":"min_positive","line":119},{"name":"epsilon","line":124},{"name":"validate_format","line":133},{"name":"fmt","line":135},{"name":"MEMORY_RATIO_VS_FP32","line":153}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["euler","numeric","gf4","bits","sign","exp","mant","bias","phi","distance","encode","pos","decode","bit","scale","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32"]},{"id":"7825f7dc3e52ed55629715cafb917773d53c396372836ab1db119fbfa5934984","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma_conjecture.t27","health":"ok","module":"GammaConjecture"}],"description":"t27/specs/physics/gamma_conjecture.t27 Strand I — Loop Quantum Gravity Conjecture GI1: Barbero-Immirzi Parameter from Golden Section","symbols":[{"name":"GAMMA_PHI","line":17},{"name":"GAMMA_LQG_STANDARD","line":22},{"name":"GAMMA_LQG_ALT","line":27},{"name":"DELTA_GAMMA_1_PHI_PERCENT","line":30},{"name":"DELTA_GAMMA_2_1_PERCENT","line":34},{"name":"newtons_constant_from_gamma","line":44},{"name":"pi_sq","line":45},{"name":"pi_cub","line":46},{"name":"gamma_sq","line":47},{"name":"black_hole_entropy_from_gamma","line":53},{"name":"black_hole_shadow_from_gamma","line":59},{"name":"superconductor_tc_sc3","line":65},{"name":"gamma_sq","line":66},{"name":"superconductor_tc_sc4","line":72},{"name":"GammaConjectureReport","line":80},{"name":"verify_gamma_conjecture","line":94},{"name":"PI","line":95},{"name":"g_phi","line":96},{"name":"g_1","line":97},{"name":"bh_s_phi","line":98},{"name":"bh_s_1","line":99}],"imports":[{"name":"math::constants","line":7}],"terms":["physics","gamma","conjecture","phi","lqg","standard","alt","delta","percent","newtons","constant","cub","black","hole","entropy","shadow","superconductor","sc3","sc4","report","verify"]},{"id":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sdk.t27","health":"ok","module":"SDK"}],"description":"specs/vsa/sdk.t27 Trinity SDK - High-level API for VSA operations","symbols":[{"name":"Hypervector","line":29},{"name":"hypervector_zero","line":43},{"name":"empty","line":44},{"name":"hypervector_random","line":56},{"name":"hypervector_random_labeled","line":68},{"name":"hypervector_from_raw","line":80},{"name":"hypervector_get_dimension","line":92},{"name":"hypervector_get","line":101},{"name":"hypervector_set","line":110},{"name":"hypervector_bind","line":126},{"name":"hypervector_unbind","line":140},{"name":"hypervector_bundle","line":154},{"name":"hypervector_bundle3","line":168},{"name":"hypervector_permute","line":180},{"name":"hypervector_inverse_permute","line":192},{"name":"hypervector_similarity","line":211},{"name":"hypervector_hamming_distance","line":222},{"name":"hypervector_hamming_similarity","line":234},{"name":"dist","line":235},{"name":"dim","line":236},{"name":"similarity","line":237},{"name":"hypervector_dot_product","line":249},{"name":"hypervector_negate","line":262},{"name":"hypervector_count_non_zero","line":274},{"name":"hypervector_density","line":286},{"name":"non_zero","line":287},{"name":"dim","line":288},{"name":"hypervector_clone","line":297},{"name":"bound","line":336},{"name":"a","line":475},{"name":"bound","line":476},{"name":"unbound","line":477},{"name":"a","line":482},{"name":"b","line":483},{"name":"ab","line":484},{"name":"ba","line":485},{"name":"a","line":490},{"name":"b","line":491},{"name":"c","line":492},{"name":"abc","line":493},{"name":"bca","line":494},{"name":"a","line":499},{"name":"a","line":505},{"name":"a","line":511},{"name":"b","line":512},{"name":"a","line":518},{"name":"b","line":519},{"name":"a","line":525},{"name":"b","line":526},{"name":"c","line":527},{"name":"ab","line":528},{"name":"bc","line":529},{"name":"abc","line":530},{"name":"lhs","line":531},{"name":"rhs","line":532},{"name":"a","line":537},{"name":"t1","line":540},{"name":"t2","line":541},{"name":"a","line":547},{"name":"result","line":553},{"name":"a","line":558}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11},{"name":"vsa::core","line":12},{"name":"hybrid_arithmetic","line":13}],"terms":["vsa","sdk","hypervector","zero","empty","random","labeled","raw","get","dimension","set","bind","unbind","bundle","bundle3","permute","inverse","similarity","hamming","distance","dist","dim","dot","product","negate","count","non","density","clone","bound","unbound","abc","bca","lhs","rhs"]},{"id":"786f94b80c9cc8da149e371886d2c2a515bb29a289dd287d9d8c2986692e0b1e","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/lucas_accumulator.t27","health":"ok","module":"LucasAccumulator"}],"description":"t27/specs/numeric/lucas_accumulator.t27 Lucas-exact accumulator for the GoldenFloat width ladder (Phase F, leg F1) NUMERIC-STANDARD-002 CLAIM STATUS DISCIPLINE (igla-phi-architecture / goldenfloat-ladder): This file captures the ONE genuinely [Verified] leg of the breadth-as-moat bet (FL-004 in docs/nona-03-manifest/RESEARCH_CLAIMS.md): the arithmetic","symbols":[{"name":"PHI","line":31},{"name":"PHI_INV","line":32},{"name":"TRINITY","line":33},{"name":"TOL_F64","line":34},{"name":"lucas","line":38},{"name":"c","line":45},{"name":"phi_acc","line":54},{"name":"two_n","line":55},{"name":"abs_f64","line":59},{"name":"acc","line":126},{"name":"l","line":127}],"imports":[{"name":"base::types","line":29}],"terms":["numeric","lucas","accumulator","phi","inv","tol","f64","acc","two","abs"]},{"id":"789be8f18768603dfb45d8664ad51fc1bb1311f82a0288c3a93efc19c08534e6","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-implement-issue.t27","health":"ok","module":"skill_trinity_implement_issue"}],"description":"specs/skills/trinity-implement-issue.t27 -- skill trinity/implement-issue Source of truth for the skill card on t27.ai (#/skills?skill=trinity/implement-issue). The skill body lives in gHashTag/trinity at .claude/skills/implement-issue/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/implement-issue/SKILL.md, sha256 88ccafaece20...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/wire.t27","health":"ok","module":"MeshWire"}],"description":"tri-net/specs/wire.t27 Mesh datagram header, ported from src/wire.rs to T27 (spec-first). Fixed 11-byte header: [ver:1][kind:1][src:4 BE][dst:4 BE][ttl:1]. T27 has no byte arrays, so the serialized form is modeled as functions: header_byte(fields, idx) yields the idx-th header byte, and u32_be reassembles a big-endian word from 4 bytes (the parse path). The header bytes double as the","symbols":[{"name":"VERSION","line":14},{"name":"KIND_HELLO","line":15},{"name":"KIND_DATA","line":16},{"name":"HEADER_LEN","line":17},{"name":"frame_kind_valid","line":20},{"name":"be_byte","line":26},{"name":"u32_be","line":40},{"name":"header_byte","line":46},{"name":"parse_accepts","line":62}],"imports":[{"name":"base::types","line":12}],"terms":["net","wire","mesh","kind","hello","data","header","len","frame","valid","byte","u32","parse","accepts"]},{"id":"78c06cefeddc0d7ed407e1edb5d6c88305e04fd7994a58410ab8bb8d59234d28","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_mlp3.t27","health":"warn","module":"GftMlp3"}],"description":"","symbols":[{"name":"magadd","line":16},{"name":"magsub","line":36},{"name":"sadd","line":61},{"name":"contrib","line":73},{"name":"activate","line":79},{"name":"trit2gft","line":84},{"name":"neuron4","line":89},{"name":"neuron3","line":94},{"name":"neuron2","line":98},{"name":"on_comb","line":103}],"imports":[],"terms":["ternary","gft","mlp3","magadd","magsub","sadd","contrib","activate","trit2gft","neuron4","neuron3","neuron2","comb"]},{"id":"79072265b3262e1328804af2c4408d96dec6c525f57f60fff3a181e5236fe9b2","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/agents/turbobaby.t27","health":"ok","module":"turbobaby-agent"}],"description":"","symbols":[{"name":"KIND","line":26},{"name":"ID","line":27},{"name":"NAME","line":28},{"name":"DOMAIN","line":29},{"name":"MARKET","line":36},{"name":"MARKET_CONTRACT","line":37},{"name":"MARKET_NOTE","line":38},{"name":"WORLD","line":39},{"name":"SUMMARY_EN","line":40},{"name":"ALPHABET_SEAT","line":45},{"name":"ALPHABET_SEAT_NOTE","line":46},{"name":"KEY_FILES","line":51},{"name":"ENTRY_INVARIANT","line":53},{"name":"EXIT_INVARIANT","line":54},{"name":"LAW_L1","line":59},{"name":"LAW_L3","line":60},{"name":"LAW_L4","line":61},{"name":"PRICE_AUTHORITY","line":68},{"name":"PRICE_ON_SILENCE","line":69},{"name":"FORBIDDEN_FIELDS","line":74},{"name":"PII_RULE","line":83},{"name":"SKILLS","line":87},{"name":"SKILLS_NOTE","line":88},{"name":"TOOLS","line":89},{"name":"TOOLS_NOTE","line":90},{"name":"EXPERIENCE_LOG","line":92},{"name":"ENABLED","line":93}],"imports":[],"terms":["turbobaby","user","bot","agents","kind","domain","market","contract","note","world","summary","alphabet","seat","key","entry","invariant","exit","law","price","authority","silence","forbidden","fields","pii","rule","skills","experience","log","enabled"]},{"id":"796d838e8069befa45707a89b86aa34f7584ce5b80ad73ce8301fcdf479dd7be","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/builder.t27","health":"ok","module":"TriBuilder"}],"description":"t27/specs/","symbols":[{"name":"Builder","line":13},{"name":"init","line":24},{"name":"empty","line":29},{"name":"append","line":34},{"name":"append_slice","line":39},{"name":"len","line":44},{"name":"capacity","line":49},{"name":"finish","line":54},{"name":"reset","line":59}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","builder","init","empty","append","slice","len","capacity","finish","reset"]},{"id":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a.t27","health":"ok","module":"TriA2A"}],"description":"TRI-NET A2A-over-mesh: carry Agent-to-Agent messages as SEALED mesh datagrams, reusing the existing stack -- MeshWire (wire.t27, 11-byte header), RouterTtl (router_ttl.t27, multi-hop + split-horizon), CryptoFrame (crypto_frame.t27, AEAD + ratchet + replay). This spec adds ONLY the A2A message-class layer; it creates no new transport. The hosted skill is a GoldenFloat op (the workload GF was built for): an agent","symbols":[{"name":"KIND_DATA","line":19},{"name":"A2A_PORT","line":20},{"name":"MSG_TASK_ASSIGN","line":23},{"name":"MSG_TASK_RESULT","line":24},{"name":"MSG_HEARTBEAT","line":25},{"name":"SKILL_GF16_MUL","line":28},{"name":"SKILL_GF16_ADD","line":29},{"name":"SKILL_GFT16_MUL","line":33},{"name":"SKILL_GFT16_ADD","line":34},{"name":"SKILL_GFT8_MUL","line":35},{"name":"SKILL_GFT8_ADD","line":36},{"name":"SKILL_GFT4_MUL","line":37},{"name":"SKILL_GFT4_ADD","line":38},{"name":"SKILL_GFT32_MUL","line":39},{"name":"SKILL_GFT32_ADD","line":40},{"name":"SKILL_GFT64_MUL","line":41},{"name":"SKILL_GFT64_ADD","line":42},{"name":"SKILL_GFT128_MUL","line":43},{"name":"SKILL_GFT128_ADD","line":44},{"name":"is_a2a","line":48},{"name":"carries_receipt","line":53},{"name":"is_gf_skill","line":58},{"name":"is_gft_skill","line":65},{"name":"FMT_GF_BINARY","line":82},{"name":"FMT_GFT","line":83},{"name":"skill_family","line":89},{"name":"family_matches","line":108},{"name":"is_hosted_skill","line":117},{"name":"family_matches_strict","line":139},{"name":"skill_op","line":151},{"name":"result_matches_assign","line":159},{"name":"is_fresh","line":166},{"name":"next_watermark","line":171},{"name":"next_watermark_settled","line":187},{"name":"op_matches","line":205},{"name":"result_binds_assign","line":215},{"name":"skill_width","line":241},{"name":"skill_et","line":262},{"name":"result_binds_assign_sized","line":283},{"name":"result_binds_assign_rung","line":298},{"name":"admit_result","line":313},{"name":"A2A_BOND_BPS_UNIT","line":331},{"name":"admit_result_bonded","line":332},{"name":"executor_binds_assign","line":352},{"name":"admit_result_authentic","line":363},{"name":"executor_authentic","line":381},{"name":"admit_result_signed","line":402},{"name":"admit_result_signed_sized","line":425}],"imports":[{"name":"base::types","line":16}],"terms":["net","a2a","kind","data","port","msg","assign","heartbeat","skill","gf16","mul","gft16","gft8","gft4","gft32","gft64","gft128","carries","receipt","gft","fmt","binary","family","matches","hosted","strict","fresh","watermark","settled","binds","width","sized","rung","admit","bond","bps","unit","bonded","executor","authentic","signed"]},{"id":"7a3c3be1e5396eb22e6cef48b76a8f2a428408f4f59d1911294d60759094ccd6","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/modules.t27","health":"warn","module":"sandbox"}],"description":"","symbols":[],"imports":[{"name":"session_timeout","line":18}],"terms":["sandbox","modules"]},{"id":"7a4293fa70eef3448b38f3e6c58d84becf127f5c561225ce43062b8c379e2719","sources":[{"repo":"ghashtag/t27","path":"specs/functions/webhook-generation-validate.t27","health":"ok","module":"fn_webhook_generation_validate"}],"description":"specs/functions/webhook-generation-validate.t27 -- function webhook-generation-validate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=webhook-generation-validate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/webhookHealthGuard.ts#L147 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","webhook","generation","validate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"7a4adce8c814539d604fa6a4830e32d5c3639f524aa463d30643bec72670204e","sources":[{"repo":"ghashtag/t27","path":"specs/physics/p2_brain_physics.t27","health":"ok","module":"P2Brain"}],"description":"Module: P2 Brain — Physics Engine Framework","symbols":[{"name":"PHI","line":18},{"name":"PHI_SQ","line":19},{"name":"PHI_INV","line":20},{"name":"PHI_INV_SQ","line":21},{"name":"TRINITY_PHI_SQ_INV","line":24},{"name":"PLANCK","line":27},{"name":"ALPHA_FS","line":30},{"name":"LQGCSymbol","line":37},{"name":"LQGCState","line":40},{"name":"stateInit","line":53},{"name":"next","line":57},{"name":"su2Entropy","line":65},{"name":"Simulation","line":72},{"name":"SimulationMethod","line":79}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10},{"name":"numeric::formats","line":11}],"terms":["physics","brain","p2brain","phi","inv","planck","alpha","lqgcsymbol","lqgcstate","state","init","su2entropy","simulation","method"]},{"id":"7a5b6523fa3133aa7549a4458414f55f0d760d5dcc4b41a50d3e08dd0e06789e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/invariants.t27","health":"ok","module":"trinity_matrix_invariants"}],"description":"trinity_matrix/invariants.t27 -- feature tests and invariants: constant invariants and a test block that checks them.","symbols":[{"name":"FRAME_BEATS","line":5},{"name":"FRAMES","line":6},{"name":"TOTAL_BEATS","line":7}],"imports":[],"terms":["bootstrap","fixtures","matrix","invariants","frame","beats","frames","total"]},{"id":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri_to_t27_converter.t27","health":"ok","module":"TriToT27Converter"}],"description":"t27/specs/tools/tri_to_t27_converter.t27","symbols":[{"name":"SPDX_HEADER","line":13},{"name":"TRINITY_FOOTER","line":14},{"name":"VERSION","line":15},{"name":"TriSpec","line":21},{"name":"TriType","line":32},{"name":"TriField","line":38},{"name":"TriConstant","line":44},{"name":"TriFunction","line":50},{"name":"FunctionParam","line":57},{"name":"Behavior","line":62},{"name":"Constraint","line":67},{"name":"Route","line":72},{"name":"MigrationStats","line":77},{"name":"parse_tri_file","line":90},{"name":"parse_type_line","line":102},{"name":"convert_type","line":110},{"name":"generate_t27","line":115},{"name":"route_file","line":128},{"name":"write_output","line":155},{"name":"run_migration","line":162},{"name":"snake_to_pascal_case","line":179},{"name":"sanitize_description","line":186},{"name":"is_valid_t27_syntax","line":191}],"imports":[{"name":"base::types","line":6},{"name":"io::file","line":7}],"terms":["converter","t27converter","spdx","header","footer","field","constant","param","behavior","constraint","route","migration","stats","parse","convert","generate","write","snake","pascal","case","sanitize","description","valid","syntax"]},{"id":"7acc3ed7813ca1bf6b8aa5e0836279f1221cb7beab5596b9c03feae7e141857f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/math.t27","health":"ok","module":"TriMath"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math"]},{"id":"7b032422cdd86d854023351e841cf5c6f6f43327cab5504b6afd61ac889614e1","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/sweep.t27","health":"ok","module":"tool_tri_sweep"}],"description":"specs/tools/tri/sweep.t27 -- tool tri/sweep, the `tri sweep` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/sweep). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["sweep","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/meta_compile.t27","health":"ok","module":"MetaCompilation"}],"description":"","symbols":[{"name":"CompileResult","line":6},{"name":"SAMPLE_SPEC","line":18},{"name":"compile_result_init","line":20},{"name":"is_full_success","line":34},{"name":"total_lines","line":38},{"name":"any_backend_ok","line":42}],"imports":[{"name":"compiler::parser","line":3},{"name":"compiler::lexer","line":4}],"terms":["compiler","meta","compile","compilation","sample","init","full","success","total","backend"]},{"id":"7b2395a369c1777ca0333086c29266630d5335628190e6e46c253b9390af9f33","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/url.t27","health":"ok","module":"TriUrl"}],"description":"t27/specs/","symbols":[{"name":"Url","line":13},{"name":"parse","line":27},{"name":"encode","line":32},{"name":"decode","line":37},{"name":"to_string","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","url","parse","encode","decode"]},{"id":"7b4d45dc89ac177958625f180a55cc0564880cab1f2acb52e6123802096a272f","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/swarm.t27","health":"ok","module":"tool_trinity_tri_swarm"}],"description":"specs/tools/trinity/tri/swarm.t27 -- tool gHashTag/trinity:tri/swarm, the `tri swarm` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/swarm`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["swarm","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sources":[{"repo":"ghashtag/t27","path":"specs/boards/arty_a7.t27","health":"ok","module":"BoardArtyA7"}],"description":"t27/specs/boards/arty_a7.t27 Digilent Arty A7 Board Profile Artix-7 XC7A35T/XC7A100T, 100MHz clock, 4 LEDs, 4 buttons, UART","symbols":[{"name":"BOARD_NAME","line":11},{"name":"FPGA_FAMILY","line":12},{"name":"FPGA_PART_35T","line":13},{"name":"FPGA_PART_100T","line":14},{"name":"CLOCK_FREQ_HZ","line":15},{"name":"CLOCK_PERIOD_NS","line":16},{"name":"IO_STANDARD","line":17},{"name":"CONFIG_VOLTAGE","line":18},{"name":"NUM_LEDS","line":20},{"name":"NUM_BUTTONS","line":21},{"name":"NUM_SWITCHES","line":22},{"name":"HAS_UART","line":23},{"name":"HAS_SPI","line":24},{"name":"PinAssignment","line":26},{"name":"PIN_CLK","line":36},{"name":"PIN_RST_N","line":46},{"name":"PIN_UART_TX","line":56},{"name":"PIN_UART_RX","line":66},{"name":"PIN_LED_0","line":76},{"name":"PIN_LED_1","line":86},{"name":"PIN_LED_2","line":96},{"name":"PIN_LED_3","line":106},{"name":"PIN_BTN_0","line":116},{"name":"PIN_BTN_1","line":126},{"name":"PIN_BTN_2","line":136},{"name":"PIN_BTN_3","line":146},{"name":"count_leds","line":156},{"name":"count_buttons","line":160},{"name":"has_uart","line":164},{"name":"has_spi","line":168},{"name":"clock_freq_mhz","line":172}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9}],"terms":["boards","arty","board","fpga","family","part","35t","100t","clock","freq","period","standard","config","voltage","num","leds","buttons","switches","uart","spi","pin","assignment","clk","rst","led","btn","count","mhz"]},{"id":"7babf01001cd4e86adfad3f717ccf6cf0772dd38e143ab71d782bd66bc455b82","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/vectors.t27","health":"ok","module":"tool_tri_vectors"}],"description":"specs/tools/tri/vectors.t27 -- tool tri/vectors, the `tri vectors` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/vectors). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["vectors","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"7bba43f3ce59e8f19614856e91ac705b6fadd2cd3a145663b482daeb9a0b7120","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_retry.t27","health":"ok","module":"AdaptiveRetry"}],"description":"Adaptive retry mechanism with exponential backoff Research: Performance optimization - retry reduces packet loss by 60%","symbols":[{"name":"BASE_DELAY_MS","line":6},{"name":"MAX_RETRIES","line":7},{"name":"BACKOFF_MULTIPLIER","line":8},{"name":"QUALITY_HIGH","line":11},{"name":"QUALITY_MEDIUM","line":12},{"name":"backoff_delay_ms","line":15},{"name":"max_retries_for_quality","line":32},{"name":"should_retry","line":43},{"name":"base_probability","line":48},{"name":"retry_success_probability","line":58},{"name":"total_retry_time","line":70}],"imports":[],"terms":["macos","rings","rust","mesh","adaptive","retry","base","delay","max","retries","backoff","multiplier","quality","high","medium","probability","success","total","time"]},{"id":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_depin.t27","health":"ok","module":"TriDepin"}],"description":"TRI-NET DePIN Proof-of-Relay accounting -- the on-node substrate a $TRI settlement layer meters. A node's \"physical work\" (Helium-style Proof of Coverage / Proof of Physical Work) is relaying mesh datagrams over the radio; this keeps a tamper-evident, order-sensitive, identity-bound running accumulator over the receipts of what it forwarded. The settlement layer mints $TRI proportional to metered bytes, gated by the accumulator seal so a node","symbols":[{"name":"TRI_GENESIS","line":24},{"name":"TRI_PHI","line":25},{"name":"rotl32","line":28},{"name":"mix32","line":34},{"name":"relay_absorb","line":44},{"name":"epoch_seal","line":51},{"name":"verify_epoch","line":59},{"name":"bytes_add","line":65},{"name":"relay_absorb_verified","line":86},{"name":"bytes_add_verified","line":95}],"imports":[{"name":"base::types","line":22}],"terms":["net","depin","genesis","phi","rotl32","mix32","relay","absorb","epoch","seal","verify","bytes","verified"]},{"id":"7bf7cec4562d12aa0f4d9928b70cec5fd4db6ed6f35b52d2a9286f0f932eeb24","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/neon.t27","health":"ok","module":"tool_mcp_neon"}],"description":"specs/tools/mcp/neon.t27 -- tool mcp/neon, MCP server \"neon\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/neon). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","neon","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"7c9c089d1b173d6d76941827409038da1d98eddfa3704b85c4d9203b417b2c3d","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/release.packaging.t27","health":"ok","module":"trinity_capability_release_packaging"}],"description":"specs/trinity/capabilities/release.packaging.t27 -- capability trinity/release.packaging: Release assembly: the release step, release/ and the npm, Homebrew, AUR and Dock One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","release","packaging","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power_analysis.t27","health":"ok","module":"PowerAnalysis"}],"description":"t27/specs/fpga/power_analysis.t27 T27 Power Analysis Specification Connects power.t27 estimation model to utilization reports from synthesis Parses LUT/FF/BRAM/DSP counts from Vivado/Yosys reports Feeds utilization into Power.est_total_power() for estimation Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"Utilization","line":14},{"name":"utilization","line":23},{"name":"utilization_full","line":34},{"name":"zero_utilization","line":45},{"name":"total_resources","line":49},{"name":"DeviceLimits","line":55},{"name":"xc7a100t_limits","line":64},{"name":"xc7a35t_limits","line":75},{"name":"lut_percent","line":88},{"name":"ff_percent","line":93},{"name":"bram_percent","line":98},{"name":"dsp_percent","line":103},{"name":"overall_percent","line":108},{"name":"est_dynamic_power_mw","line":117},{"name":"est_static_power_mw","line":125},{"name":"est_total_power_mw","line":130},{"name":"PowerBudget","line":136},{"name":"power_budget","line":142},{"name":"power_pct_of_budget","line":150},{"name":"is_within_budget","line":155},{"name":"is_warning","line":159},{"name":"is_critical","line":164},{"name":"default_toggle_rate","line":171},{"name":"est_toggle_rate_from_activity","line":175},{"name":"ClockDomainPower","line":182},{"name":"clock_domain_power","line":190},{"name":"total_domain_power","line":202},{"name":"validate_utilization","line":214},{"name":"validate_budget","line":220}],"imports":[],"terms":["fpga","power","analysis","utilization","full","zero","total","resources","device","limits","xc7a100t","xc7a35t","lut","percent","bram","dsp","overall","est","dynamic","static","budget","pct","within","warning","critical","default","toggle","rate","activity","clock","domain","validate"]},{"id":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/pipeline.t27","health":"ok","module":"igla-coder-pipeline"}],"description":"t27/specs/igla/coder/pipeline.t27 End-to-end inference pipeline: prompt -> tokenize -> forward -> decode Conceptual stubs for all stages requiring runtime support (BPE, model weights).","symbols":[{"name":"PipelineConfig","line":20},{"name":"PipelineResult","line":27},{"name":"Port","line":33},{"name":"ModuleSpec","line":40},{"name":"KnowledgeGraph","line":48},{"name":"Contract","line":56},{"name":"tokenize_prompt","line":72},{"name":"tokenize_prompt_inner","line":76},{"name":"tokenize_prompt_hybrid","line":85},{"name":"run_forward","line":92},{"name":"generate_next_token_from_logits","line":99},{"name":"generate_tokens_recursive","line":106},{"name":"generate_tokens_autoregressive","line":117},{"name":"decode_logits","line":132},{"name":"decode_tokens","line":147},{"name":"fallback_to_template","line":156},{"name":"has_substring","line":169},{"name":"match_at","line":179},{"name":"generate_verilog_ai","line":196},{"name":"generate_verilog_ai_autoregressive","line":215},{"name":"generate_verilog_ai_with_meta","line":233},{"name":"select_best_candidate","line":241},{"name":"select_best_candidate_inner","line":245},{"name":"beam_search_prm_pipeline","line":256},{"name":"prm_scored_pipeline","line":272},{"name":"has_star_inner","line":286},{"name":"score_syntax_correctness","line":296},{"name":"score_sacred_constraint","line":308},{"name":"score_synthesis_success","line":316},{"name":"reject_resample","line":325},{"name":"mutate_for_correctness","line":338},{"name":"generate_verilog_ai_with_steering","line":348},{"name":"generate_verilog_ai_with_diversity_and_sacred","line":368},{"name":"select_best_synth_candidate","line":381},{"name":"decompose_spec_to_modules","line":398},{"name":"build_knowledge_graph","line":419},{"name":"build_edges_from_shared_ports","line":428},{"name":"find_shared_port_names","line":438},{"name":"wire_modules","line":450},{"name":"declare_top_ports","line":458},{"name":"declare_module_ports","line":465},{"name":"instantiate_modules","line":472},{"name":"instantiate_ports","line":480},{"name":"generate_hierarchical_verilog","line":489},{"name":"generate_module_body","line":498},{"name":"resolve_port_widths","line":523},{"name":"generate_module_stubs","line":527},{"name":"connect_modules_by_name","line":539},{"name":"connect_modules_by_name_inner","line":544},{"name":"validate_kg_connectivity","line":557},{"name":"validate_modules_have_ports","line":563},{"name":"AgentAction","line":574},{"name":"orchestrate_agents_with_ppo","line":583},{"name":"compute_team_match_reward","line":592},{"name":"count_char_matches","line":603},{"name":"select_agent_by_ppo_policy","line":614},{"name":"select_generator_agent","line":619},{"name":"count_keyword_diffs","line":632},{"name":"diversity_score","line":646},{"name":"generate_diverse_candidates_inner","line":655},{"name":"generate_diverse_candidates","line":663},{"name":"reject_resample_for_sacred_inner","line":669},{"name":"reject_resample_for_sacred","line":679},{"name":"adaptive_temperature_by_sacred_score","line":686},{"name":"check_balanced_braces","line":692},{"name":"temporal_trace_check","line":706},{"name":"generate_verify_debug","line":716},{"name":"generate_verify_debug_inner","line":720},{"name":"preprocess_pipeline_integration","line":736},{"name":"contrastive_learning_pair","line":747},{"name":"perturb_rtl_minimally","line":758},{"name":"contrastive_loss","line":770}],"imports":[{"name":"base::types","line":8},{"name":"igla::race::bram_weights","line":9},{"name":"igla::coder::arch","line":10},{"name":"igla::coder::tokenizer","line":11},{"name":"igla::coder::prm","line":12},{"name":"igla::coder::eval","line":13}],"terms":["igla","coder","pipeline","config","port","knowledge","graph","contract","tokenize","prompt","inner","hybrid","forward","generate","token","logits","tokens","recursive","autoregressive","decode","fallback","template","substring","match","verilog","meta","select","best","candidate","beam","search","prm","scored","star","score","syntax","correctness","sacred","constraint","synthesis","success","reject","resample","mutate","steering","diversity","synth","decompose","modules","build","edges","shared","ports","find","wire","declare","top","instantiate","hierarchical","resolve","widths","stubs","connect","validate","connectivity","action","orchestrate","agents","ppo","compute","team","reward","count","char","matches","policy","generator","keyword","diffs","diverse","candidates","adaptive","temperature","balanced","braces","temporal","trace","verify","debug","preprocess","integration","contrastive","learning","pair","perturb","rtl","minimally","loss"]},{"id":"7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/energy_aware_routing.t27","health":"warn","module":"EnergyAwareRouting"}],"description":"Energy-Aware Routing - power-optimal path selection Routes traffic to maximize network lifetime and minimize energy consumption","symbols":[{"name":"MAX_PATHS","line":7},{"name":"BATTERY_WEIGHT","line":8},{"name":"HOP_WEIGHT","line":9},{"name":"CRITICAL_BATTERY","line":10},{"name":"create_energy_cost","line":13},{"name":"get_tx_power","line":20},{"name":"get_rx_power","line":24},{"name":"get_processing_cost","line":28},{"name":"get_hop_count_cost","line":32},{"name":"create_path_energy","line":37},{"name":"get_battery_levels","line":44},{"name":"get_total_cost","line":48},{"name":"get_path_valid","line":52},{"name":"get_energy_score","line":56},{"name":"create_energy_array","line":61},{"name":"get_path_energy","line":68},{"name":"calculate_total_energy_cost","line":76},{"name":"calculate_energy_score","line":88},{"name":"is_path_viable","line":103},{"name":"find_energy_optimal_path","line":111},{"name":"find_min_cost_path","line":151},{"name":"select_balanced_path","line":191},{"name":"estimate_path_lifetime","line":232}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","energy","aware","routing","max","paths","battery","weight","hop","critical","create","cost","get","power","processing","count","path","levels","total","valid","score","array","calculate","viable","find","optimal","min","select","balanced","estimate","lifetime"]},{"id":"7d41d9d1ab43028ea61e4c36eb6c0e40b525e6d0f456db95f0312c2d4d06fc62","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/advantage_estimator.t27","health":"ok","module":"Advantage"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_GAMMA","line":13},{"name":"DEFAULT_LAMBDA","line":14},{"name":"GAEConfig","line":20},{"name":"TrajectoryBatch","line":26},{"name":"compute_td_residual","line":39},{"name":"compute_gae","line":44},{"name":"compute_returns","line":49},{"name":"normalize_advantages","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["advantage","estimator","default","gamma","lambda","gaeconfig","trajectory","batch","compute","residual","gae","returns","normalize","advantages"]},{"id":"7d9f32c563a3c9915673cfa1ab10024fc5175dc7ba961c403d780d8a252650fa","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_01_single_param.t27","health":"ok","module":"GenericConstSingle"}],"description":"ADR-008 positive: one generic parameter, the attested majority form (22 of 33).","symbols":[{"name":"Stack","line":3}],"imports":[],"terms":["bootstrap","fixtures","generic","pos","single","param","stack"]},{"id":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/experiments.t27","health":"warn","module":"TrinityMemoryExperiments"}],"description":"Executable native experiments. Domain behavior is here; the runtime supplies bounded allocation, loopback sockets, monotonic time and platform primitives. JSON output is scratch until a nonnegative return. No physical-device claim.","symbols":[{"name":"TM_EXP_ERR_CHECK","line":5},{"name":"TM_EXP_ERR_RESOURCE","line":6},{"name":"TM_EXP_ERR_RTL","line":7},{"name":"TMExperimentWork","line":8},{"name":"tm_exp_open","line":13},{"name":"tm_exp_close","line":26},{"name":"tm_exp_rpc","line":31},{"name":"tm_exp_upload","line":56},{"name":"tm_exp_handle_params","line":70},{"name":"tm_exp_read","line":75},{"name":"tm_exp_delete","line":85},{"name":"tm_exp_dot","line":93},{"name":"tm_exp_label","line":107},{"name":"tm_exp_fixture_name","line":110},{"name":"tm_exp_weight","line":115},{"name":"tm_exp_fixture","line":120},{"name":"tm_exp_signal_model","line":137},{"name":"tm_exp_model","line":153},{"name":"tm_exp_copy_text","line":156},{"name":"tm_exp_classify","line":164},{"name":"tm_exp_i64_array","line":187},{"name":"tm_exp_edge_mode","line":192},{"name":"tm_exp_edge","line":262},{"name":"tm_exp_case_fields","line":294},{"name":"tm_exp_case_values","line":311},{"name":"tm_exp_golden_field","line":332},{"name":"tm_exp_validate_cases","line":338},{"name":"tm_exp_vector_blob","line":359},{"name":"tm_exp_golden_match","line":367},{"name":"tm_exp_conformance_case","line":378},{"name":"tm_exp_conformance_checks","line":416},{"name":"tm_exp_conformance","line":479},{"name":"tm_exp_sift","line":516},{"name":"tm_exp_median_ns","line":525},{"name":"tm_exp_string_z","line":536},{"name":"tm_exp_dataset","line":541},{"name":"tm_exp_benchmark_run","line":560},{"name":"tm_exp_benchmark","line":633},{"name":"tm_exp_rtl_json","line":651},{"name":"tm_exp_fixtures_json","line":668}],"imports":[],"terms":["dmitrii","memory","experiments","exp","err","resource","rtl","tmexperiment","work","open","close","rpc","upload","handle","params","read","delete","dot","label","fixture","weight","signal","model","copy","text","classify","i64","array","edge","mode","case","fields","values","golden","field","validate","cases","vector","blob","match","conformance","checks","sift","median","dataset","benchmark","json","fixtures"]},{"id":"7de9d8fe941d574b862a1724428a32e859938c864fa3748f3a14719ff0707388","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_statistics.t27","health":"ok","module":"LinkStatistics"}],"description":"Link statistics - ultra-simple","symbols":[{"name":"get_sent","line":6},{"name":"get_recv","line":10},{"name":"inc_sent","line":14},{"name":"inc_recv","line":18},{"name":"reset","line":22}],"imports":[{"name":"base::types","line":4}],"terms":["net","link","statistics","get","sent","recv","inc","reset"]},{"id":"7e01134039639647e265aaffb16b2ffb484aceee92710e5dd993a783a81a14dc","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_vn.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring"]},{"id":"7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","sources":[{"repo":"ghashtag/t27","path":"specs/github/comments.t27","health":"ok","module":"github"}],"description":"specs/github/comments.t27","symbols":[{"name":"Comment","line":4},{"name":"comment_list","line":9},{"name":"comments","line":15}],"imports":[],"terms":["list"]},{"id":"7eb9c81b10e1dd99998207ce71b792342f1f8bdd3852b974f27eb20418ca480e","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-cloud.t27","health":"ok","module":"skill_trinity_cloud"}],"description":"specs/skills/trinity-cloud.t27 -- skill trinity/cloud Source of truth for the skill card on t27.ai (#/skills?skill=trinity/cloud). The skill body lives in gHashTag/trinity at .claude/skills/cloud/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/cloud/SKILL.md, sha256 53aa338dddc4...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","cloud","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_full.t27","health":"ok","module":"BoardFullXC7A100T"}],"description":"t27/specs/boards/xc7a100t_full.t27 QMTECH XC7A100T-CSG324 Full Board Profile LED + UART + SPI + MAC debug, QMTECH Wukong expansion Note: 22 pins from full QMTECH XDC are missing in prjxray-db","symbols":[{"name":"BOARD_NAME","line":12},{"name":"FPGA_FAMILY","line":13},{"name":"FPGA_PART","line":14},{"name":"CLOCK_FREQ_HZ","line":15},{"name":"CLOCK_PERIOD_NS","line":16},{"name":"IO_STANDARD","line":17},{"name":"CONFIG_VOLTAGE","line":18},{"name":"NUM_LEDS","line":20},{"name":"HAS_UART","line":21},{"name":"HAS_SPI","line":22},{"name":"HAS_MAC_DEBUG","line":23},{"name":"MAC_RESULT_WIDTH","line":24},{"name":"PinAssignment","line":26},{"name":"ClockConstraint","line":38},{"name":"PIN_CLK","line":45},{"name":"PIN_RST_N","line":57},{"name":"PIN_UART_RX","line":69},{"name":"PIN_UART_TX","line":81},{"name":"PIN_SPI_CS","line":93},{"name":"PIN_SPI_SCK","line":105},{"name":"PIN_SPI_MOSI","line":117},{"name":"PIN_SPI_MISO","line":129},{"name":"PIN_LED_0","line":141},{"name":"PIN_LED_1","line":153},{"name":"PIN_LED_2","line":165},{"name":"PIN_LED_3","line":177},{"name":"PIN_LED_4","line":189},{"name":"PIN_LED_5","line":201},{"name":"PIN_LED_6","line":213},{"name":"PIN_LED_7","line":225},{"name":"PIN_MAC_DONE","line":237},{"name":"CLOCK_SYS","line":249},{"name":"has_uart","line":256},{"name":"has_spi","line":260},{"name":"has_mac_debug","line":264},{"name":"count_leds","line":268}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10}],"terms":["boards","xc7a100t","full","board","fpga","family","part","clock","freq","period","standard","config","voltage","num","leds","uart","spi","mac","debug","width","pin","assignment","constraint","clk","rst","sck","mosi","miso","led","done","sys","count"]},{"id":"7ed6aca7a17af29b1cae74b8e6bfddb1cef19c748ebc840b09a9ce2f6b3ecc54","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/bson.t27","health":"ok","module":"TriBson"}],"description":"t27/specs/","symbols":[{"name":"BsonValue","line":13},{"name":"BsonDocument","line":17},{"name":"parse","line":25},{"name":"serialize","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","bson","document","parse","serialize"]},{"id":"7ef232c76f3a3a5f3ab6eb9ed8046faa1fa7dd3085f4d6d3288f2bd538da3f60","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/sparsity.t27","health":"warn","module":"TrinityMemorySparsity"}],"description":"Trinity Memory explicit lossy preparation and marginal entropy. Status: 0 success, -1 invalid input, -2 short output. Valid arrays and non-overlapping input/output buffers are a host ABI duty. log2 is an external host libm primitive, not a second application algorithm.","symbols":[{"name":"tm_sparsity_finite","line":7},{"name":"tm_sparsity_magnitude","line":11},{"name":"tm_project_topk","line":20},{"name":"TMExactWeight","line":64},{"name":"tm_exact_integer_high","line":71},{"name":"tm_exact_integer_bit","line":79},{"name":"tm_exact_weight_valid","line":84},{"name":"tm_exact_integer_float","line":106},{"name":"tm_exact_magnitude_compare","line":146},{"name":"tm_project_topk_exact","line":167},{"name":"tm_entropy_term","line":204},{"name":"tm_entropy_trits","line":212},{"name":"tm_symmetric_entropy","line":235}],"imports":[],"terms":["dmitrii","memory","sparsity","finite","magnitude","project","topk","tmexact","weight","exact","integer","high","bit","valid","float","compare","entropy","term","trits","symmetric"]},{"id":"7ef7acd6dea18076e9b87ed6b1cc6fa16ef8c0de91a59ce03bb66cb5f4d01e48","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/binary_crossentropy_loss.t27","health":"ok","module":"BinaryCe"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_EPSILON","line":13},{"name":"BinaryCEConfig","line":19},{"name":"Reduction","line":25},{"name":"sigmoid","line":34},{"name":"forward","line":39},{"name":"forward_batch","line":44},{"name":"gradient","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","binary","crossentropy","default","epsilon","ceconfig","reduction","sigmoid","forward","batch","gradient"]},{"id":"7f2793c56bd3d880115c90604b5dbf1fa7f130d30c6065df06a364290ef10b9b","sources":[{"repo":"ghashtag/t27","path":"specs/bus/pubsub.t27","health":"warn","module":"bus-pubsub"}],"description":"bus/pubsub.t27 — Publish/Subscribe Patterns Pub/sub interface for event-driven communication","symbols":[{"name":"DEFAULT_PUBLISH_TIMEOUT_MS","line":23},{"name":"DEFAULT_SUBSCRIBE_TIMEOUT_MS","line":26},{"name":"MAX_PENDING_PUBLISHES","line":29},{"name":"MAX_TOPICS","line":32},{"name":"DEFAULT_PUBLISH_RETRIES","line":35},{"name":"TOPIC_SEPARATOR","line":38},{"name":"SINGLE_LEVEL_WILDCARD","line":41},{"name":"MULTI_LEVEL_WILDCARD","line":44},{"name":"PublishResult","line":51},{"name":"SubscribeResult","line":58},{"name":"UnsubscribeResult","line":65},{"name":"TopicNode","line":72},{"name":"PubSubConfig","line":79},{"name":"SubscriberContext","line":87},{"name":"TopicMatchResult","line":94},{"name":"BusInfo","line":101},{"name":"DeliveryQueue","line":109},{"name":"PendingPublish","line":117},{"name":"TopicHierarchy","line":124},{"name":"publish_result_create","line":134},{"name":"publish_result_error","line":143},{"name":"subscribe_result_create","line":152},{"name":"subscribe_result_error","line":161},{"name":"unsubscribe_result_create","line":170},{"name":"unsubscribe_result_error","line":179},{"name":"topic_node_create","line":188},{"name":"pubsub_config_default","line":197},{"name":"subscriber_context_create","line":207},{"name":"topic_match_result_create","line":216},{"name":"bus_info_create","line":225},{"name":"delivery_queue_create","line":235},{"name":"pending_publish_create","line":245},{"name":"match_topic_pattern","line":254},{"name":"is_hierarchical_topic","line":262},{"name":"get_topic_parent","line":272},{"name":"get_topic_depth","line":286},{"name":"join_topic","line":297},{"name":"split_topic","line":309},{"name":"is_delivery_queue_empty","line":329},{"name":"is_delivery_queue_full","line":334},{"name":"enqueue_delivery","line":339},{"name":"new_tail","line":341},{"name":"dequeue_delivery","line":351},{"name":"new_head","line":355},{"name":"pattern_contains_wildcard","line":365},{"name":"expand_wildcard_pattern","line":370},{"name":"publish_result_to_string","line":384},{"name":"subscribe_result_to_string","line":393},{"name":"unsubscribe_result_to_string","line":402},{"name":"result","line":415},{"name":"result","line":420},{"name":"result","line":425},{"name":"node","line":430},{"name":"config","line":435},{"name":"pattern","line":440},{"name":"ctx","line":441},{"name":"result","line":446},{"name":"info","line":451},{"name":"queue","line":456},{"name":"event","line":461},{"name":"pending","line":462},{"name":"pattern","line":467},{"name":"result","line":468},{"name":"parent","line":477},{"name":"depth","line":482},{"name":"queue","line":487},{"name":"pattern","line":492},{"name":"result","line":497},{"name":"str","line":498},{"name":"pattern","line":628}],"imports":[],"terms":["bus","pubsub","default","publish","timeout","subscribe","max","publishes","topics","retries","topic","separator","single","level","wildcard","multi","unsubscribe","node","sub","config","subscriber","match","info","delivery","queue","hierarchy","create","pattern","hierarchical","get","parent","depth","join","split","empty","full","enqueue","tail","dequeue","head","contains","expand","ctx","event","str"]},{"id":"7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_analytics.t27","health":"ok","module":"NetworkAnalytics"}],"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","symbols":[{"name":"MAX_NODES","line":7},{"name":"ANALYSIS_WINDOW","line":8},{"name":"TRAFFIC_LOW","line":9},{"name":"TRAFFIC_HIGH","line":12},{"name":"ANOMALY_THRESHOLD","line":13},{"name":"create_traffic_stats","line":16},{"name":"get_bytes_sent","line":23},{"name":"get_bytes_recv","line":27},{"name":"get_packet_count","line":31},{"name":"get_error_count","line":35},{"name":"create_analysis_data","line":40},{"name":"get_analysis_node_id","line":47},{"name":"get_analysis_traffic","line":51},{"name":"get_analysis_window_start","line":55},{"name":"get_analysis_pattern","line":59},{"name":"PATTERN_NORMAL","line":64},{"name":"PATTERN_SPIKE","line":65},{"name":"PATTERN_DROPOUT","line":66},{"name":"PATTERN_CONGESTION","line":67},{"name":"calculate_total_traffic","line":70},{"name":"is_traffic_low","line":75},{"name":"is_traffic_high","line":80},{"name":"is_traffic_normal","line":85},{"name":"calculate_error_rate","line":91},{"name":"is_high_error_rate","line":103},{"name":"detect_pattern","line":108},{"name":"update_traffic","line":131},{"name":"needs_attention","line":146},{"name":"calculate_utilization","line":155},{"name":"is_congested","line":166}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","analytics","max","nodes","analysis","window","traffic","low","high","anomaly","threshold","create","stats","get","bytes","sent","recv","packet","count","data","node","start","pattern","normal","spike","dropout","congestion","calculate","total","rate","detect","attention","utilization","congested"]},{"id":"7f64754295773781de8320b3fefd813ef5d1dd492b4b52f5ac56f9d9e4d01106","sources":[{"repo":"ghashtag/t27","path":"specs/agents/s.t27","health":"ok","module":"agent_s"}],"description":"specs/agents/s.t27 -- agent t27/S, letter S of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/S). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent S - Sigma (Specs)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"7fac93c96e724362777dc1f52a0cb589a6a73739d98722c0c602cbb98f772993","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/03_operators.t27","health":"ok","module":"tutorial-03-operators"}],"description":"03 — Operators Lesson 3. Arithmetic, bitwise, shifts, comparison and the logical keywords. The bitwise group matters more here than in most languages: a spec that describes hardware spends most of its time on masks and shifts.","symbols":[{"name":"arithmetic","line":14},{"name":"sum","line":15},{"name":"difference","line":16},{"name":"product","line":17},{"name":"quotient","line":18},{"name":"remainder","line":19},{"name":"mask_and","line":30},{"name":"mask_or","line":34},{"name":"mask_xor","line":38},{"name":"EXP_SHIFT","line":49},{"name":"EXP_MASK","line":50},{"name":"extract_exponent","line":52},{"name":"place_exponent","line":56},{"name":"is_greater","line":64},{"name":"in_range","line":68},{"name":"either","line":79},{"name":"both","line":83},{"name":"neither","line":87},{"name":"exp","line":96}],"imports":[],"terms":["tutorial","operators","arithmetic","sum","difference","product","quotient","remainder","mask","xor","exp","shift","extract","exponent","place","greater","range","either","both","neither"]},{"id":"8015bf2fd623128d21e50cf1b1f55524aa3f75d3ebded4629c730e5cd9a8c578","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/session_timeout.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-010: Session Timeout Enforcement","symbols":[{"name":"Session","line":24},{"name":"Timestamp","line":35},{"name":"SessionStatus","line":42},{"name":"DEFAULT_MAX_SESSION_DURATION_MS","line":54},{"name":"should_terminate_session","line":63},{"name":"check_timeout","line":89}],"imports":[{"name":"timestamp","line":14}],"terms":["sandbox","session","timeout","timestamp","status","default","max","duration","terminate"]},{"id":"802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/router.t27","health":"ok","module":"Router"}],"description":"t27/specs/fpga/router.t27 T27 HIR Signal Router Specification Connectivity graph analysis, fanout estimation, routing congestion prediction Estimates wire length, routing resources needed for Artix-7 Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"EdgeKind","line":13},{"name":"ConnEdge","line":22},{"name":"data_edge","line":29},{"name":"clock_edge","line":38},{"name":"FanoutInfo","line":49},{"name":"fanout","line":55},{"name":"is_high_fanout","line":63},{"name":"is_clock_network","line":67},{"name":"RouteEstimate","line":73},{"name":"route_ok","line":82},{"name":"passed","line":97},{"name":"local_wire_um","line":103},{"name":"medium_wire_um","line":107},{"name":"long_wire_um","line":111},{"name":"est_wire_length","line":115},{"name":"est_total_wire","line":128},{"name":"est_congestion","line":138},{"name":"validate_edge","line":147}],"imports":[],"terms":["fpga","router","edge","kind","conn","data","clock","fanout","info","high","network","route","estimate","passed","local","wire","medium","long","est","length","total","congestion","validate"]},{"id":"803ff8d37f9f4f1c3e5119e70d5c9210cd884b6b63b4117996e5401e6bb46448","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/terminal.t27","health":"ok","module":"TriTerminal"}],"description":"t27/specs/","symbols":[{"name":"Color","line":13},{"name":"Style","line":17},{"name":"get_size","line":26},{"name":"colorize","line":31},{"name":"reset","line":36}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","terminal","color","style","get","size","colorize","reset"]},{"id":"80644bdb5652ccafba32d06857d8f4d260863c4e91590cd6fbc7737350a090b6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/dijkstra.t27","health":"ok","module":"TriDijkstra"}],"description":"t27/specs/","symbols":[{"name":"DijkstraResult","line":13},{"name":"shortest_path","line":24}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","dijkstra","shortest","path"]},{"id":"806c0c899f339d4bd4b1c2c6c6aab2bcd60409eabc76eb169bcf7a752d9bee1d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/simulator.t27","health":"ok","module":"Simulator"}],"description":"t27/specs/fpga/simulator.t27 HIR Cycle-Accurate Simulation Engine Specification Provides simulation primitives for verifying HIR modules pre-synthesis Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"SimState","line":12},{"name":"SimConfig","line":22},{"name":"SimResult","line":34},{"name":"ProbePoint","line":44},{"name":"TraceEntry","line":53},{"name":"sim_config","line":61},{"name":"sim_config_with_trace","line":73},{"name":"sim_ok","line":85},{"name":"sim_error","line":95},{"name":"probe","line":105},{"name":"trace_entry","line":114},{"name":"is_idle","line":124},{"name":"is_done","line":128},{"name":"is_error","line":132},{"name":"sim_time_ns","line":136},{"name":"cfg","line":159},{"name":"cfg2","line":163},{"name":"sim_time_us","line":166},{"name":"sim_time_ms","line":170},{"name":"cycles_for_time_ns","line":174},{"name":"has_errors","line":183},{"name":"passed","line":187},{"name":"validate_sim_config","line":193}],"imports":[],"terms":["fpga","simulator","sim","state","config","probe","point","trace","entry","idle","done","time","cfg","cfg2","cycles","passed","validate"]},{"id":"80769686b1cd7de71b5a61a790f882226450793f423b8dab1139be10f4df4748","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/elu_activation.t27","health":"ok","module":"Elu"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_ALPHA","line":13},{"name":"ELUConfig","line":19},{"name":"forward","line":28},{"name":"forward_batch","line":33},{"name":"derivative","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","elu","default","alpha","eluconfig","forward","batch","derivative"]},{"id":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/router_tb.t27","health":"ok","module":"Router_Testbench"}],"description":"t27/specs/fpga/testbench/router_tb.t27 FPGA Router Testbench Tests routing graph construction, pathfinding, and congestion estimation","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"GRID_SIZE","line":11},{"name":"NUM_LAYERS","line":12},{"name":"MAX_NETS","line":13},{"name":"tick","line":27},{"name":"reset","line":32},{"name":"manhattan_distance","line":40},{"name":"estimate_wire_length","line":48},{"name":"congestion_factor","line":53}],"imports":[{"name":"fpga::router::Router","line":8}],"terms":["fpga","testbench","router","clk","period","grid","size","num","layers","max","nets","tick","reset","manhattan","distance","estimate","wire","length","congestion","factor"]},{"id":"80d01a441ec4d93e5e7572db1c1dd4554c855576e3dc2caa4876fff33083db4b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/list.t27","health":"ok","module":"TriList"}],"description":"t27/specs/","symbols":[{"name":"List","line":13},{"name":"empty","line":24},{"name":"cons","line":29},{"name":"head","line":34},{"name":"tail","line":39},{"name":"map","line":44},{"name":"filter","line":49},{"name":"fold","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","list","empty","cons","head","tail","map","filter","fold"]},{"id":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/api_documenter.t27","health":"warn","module":"api_documenter"}],"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","symbols":[{"name":"MAX_FUNCTIONS","line":7},{"name":"MAX_PARAMETERS","line":8},{"name":"MAX_EXAMPLES","line":9},{"name":"MAX_DESCRIPTIONS","line":10},{"name":"create_function_doc","line":13},{"name":"get_doc_function_id","line":20},{"name":"get_doc_param_count","line":24},{"name":"get_doc_return_type","line":28},{"name":"get_doc_complexity","line":32},{"name":"create_param_doc","line":37},{"name":"get_param_doc_id","line":44},{"name":"get_param_doc_type","line":48},{"name":"get_param_direction","line":52},{"name":"get_param_description_id","line":56},{"name":"DIR_IN","line":61},{"name":"DIR_OUT","line":62},{"name":"DIR_INOUT","line":63},{"name":"extract_function_signature","line":66},{"name":"extract_parameter_info","line":76},{"name":"create_function_example","line":85},{"name":"get_example_function_id","line":92},{"name":"get_example_input","line":96},{"name":"get_example_output","line":100},{"name":"get_example_explanation","line":104},{"name":"generate_function_example","line":109},{"name":"create_description_text","line":123},{"name":"get_description_id","line":130},{"name":"get_description_length","line":134},{"name":"get_description_importance","line":138},{"name":"get_description_category","line":142},{"name":"generate_function_description","line":147},{"name":"create_cross_reference","line":165},{"name":"get_xref_source","line":172},{"name":"get_xref_target","line":176},{"name":"get_xref_type","line":180},{"name":"get_xref_strength","line":184},{"name":"XREF_CALLS","line":189},{"name":"XREF_CALLED_BY","line":190},{"name":"XREF_RELATED","line":191},{"name":"XREF_SIMILAR","line":192},{"name":"detect_function_call","line":195},{"name":"create_module_doc","line":200},{"name":"get_module_doc_id","line":207},{"name":"get_module_function_count","line":211},{"name":"get_module_total_complexity","line":215},{"name":"get_module_description","line":219},{"name":"calculate_average_complexity","line":224},{"name":"generate_api_documentation","line":241},{"name":"calculate_documentation_coverage","line":269},{"name":"generate_usage_example","line":278},{"name":"create_dependency_graph","line":289},{"name":"validate_documentation","line":318},{"name":"generate_documentation_report","line":353}],"imports":[{"name":"base::types","line":5}],"terms":["net","api","documenter","max","functions","parameters","examples","descriptions","create","doc","get","param","count","complexity","direction","description","dir","out","inout","extract","signature","parameter","info","example","explanation","generate","text","length","importance","category","cross","reference","xref","target","strength","calls","called","related","similar","detect","call","total","calculate","average","documentation","usage","dependency","graph","validate","report"]},{"id":"81bcd6de906b6266b7492ae105ebb8234948b2a3b95736e3cf2c8695ef99972c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_12.t27","health":"warn","module":"damage_class_12"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"8201d47aaa9d3ca811c9a2ddf8b4e227645473d0122da9311fd542a5e53cfaa9","sources":[{"repo":"ghashtag/t27","path":"specs/functions/instagram-competitors-find.t27","health":"ok","module":"fn_instagram_competitors_find"}],"description":"specs/functions/instagram-competitors-find.t27 -- function instagram-competitors-find (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-competitors-find). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/findCompetitors.ts#L134 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","instagram","competitors","find","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"822f44bf1805403da8da036bcb562da391f26ccf15a7bc4250b0c7d53acfc07e","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_smul.t27","health":"ok","module":"GftSmul"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"on_comb","line":110}],"imports":[],"terms":["ternary","gft","smul","magadd","magsub","sadd","neg","magmul","comb"]},{"id":"82852d35ce3d37feae88af635fbe95a80a18041b9e5d789b4ca44d8e3d239b4e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/arrays.t27","health":"ok","module":"trinity_matrix_arrays"}],"description":"trinity_matrix/arrays.t27 -- feature arrays: fixed-size arrays, indexing and a loop over them.","symbols":[{"name":"TABLE","line":5},{"name":"NAMES","line":6},{"name":"sum_table","line":8}],"imports":[],"terms":["bootstrap","fixtures","matrix","arrays","table","sum"]},{"id":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_inference.t27","health":"ok","module":"igla-race-ternary-inference"}],"description":"t27/specs/igla/race/ternary_inference.t27 End-to-end ternary ML inference pipeline. Connects CODER weights → RACE BRAM → ternary GEMM → systolic array. This is the first spec demonstrating a complete inference flow on ternary hardware.","symbols":[{"name":"TernaryModel","line":21},{"name":"InferenceInput","line":26},{"name":"InferenceResult","line":31},{"name":"load_ternary_weights","line":41},{"name":"model_weight_count","line":47},{"name":"ternary_inference_2x2","line":60},{"name":"ternary_inference_identity","line":68},{"name":"ternary_inference_zero_weights","line":81}],"imports":[{"name":"base::types","line":9},{"name":"igla::race::bram_weights","line":10},{"name":"igla::race::ternary_mac","line":11},{"name":"igla::race::ternary_gemm","line":12},{"name":"igla::race::systolic_ternary","line":13}],"terms":["igla","race","ternary","inference","model","load","weights","weight","count","2x2","identity","zero"]},{"id":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/modem_frame.t27","health":"ok","module":"ModemFrame"}],"description":"tri-net/specs/modem_frame.t27 Integer frame geometry + sync gate of the BPSK modem in src/modem.rs (T27-first). The Barker-13 correlation itself is f32 (matched filtering over noisy IQ) and stays in Rust; but the FRAME LAYOUT is pure integer arithmetic and is lifted here as the single source of truth: on-air symbol counts, the minimum-length parse gate, the payload cap, the decode bounds check, and the sync threshold as a fraction of the","symbols":[{"name":"PREAMBLE_LEN","line":15},{"name":"BITS_PER_BYTE","line":16},{"name":"MAX_PAYLOAD","line":17},{"name":"PEAK","line":19},{"name":"SYNC_THRESHOLD","line":21},{"name":"frame_symbols","line":24},{"name":"min_parse_len","line":30},{"name":"can_parse","line":35},{"name":"payload_fits","line":40},{"name":"decode_fits","line":50},{"name":"is_synced","line":55},{"name":"sync_margin_pct","line":60}],"imports":[{"name":"base::types","line":12}],"terms":["net","modem","frame","preamble","len","bits","per","byte","max","payload","peak","sync","threshold","min","parse","fits","decode","synced","margin","pct"]},{"id":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/topology_visualizer.t27","health":"warn","module":"topology_visualizer"}],"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EDGES","line":8},{"name":"MAX_LAYERS","line":9},{"name":"CANVAS_SIZE","line":10},{"name":"create_visual_node","line":13},{"name":"get_viz_node_id","line":20},{"name":"get_node_x_position","line":24},{"name":"get_node_y_position","line":28},{"name":"get_node_visual_status","line":32},{"name":"STATUS_ACTIVE","line":37},{"name":"STATUS_INACTIVE","line":38},{"name":"STATUS_FAILED","line":39},{"name":"STATUS_WARNING","line":40},{"name":"create_visual_edge","line":43},{"name":"get_viz_edge_source","line":50},{"name":"get_viz_edge_dest","line":54},{"name":"get_viz_edge_quality","line":58},{"name":"get_viz_edge_type","line":62},{"name":"EDGE_WIRED","line":67},{"name":"EDGE_WIRELESS","line":68},{"name":"EDGE_ACTIVE_ROUTE","line":69},{"name":"EDGE_BACKUP_ROUTE","line":70},{"name":"create_color","line":73},{"name":"get_color_red","line":80},{"name":"get_color_green","line":84},{"name":"get_color_blue","line":88},{"name":"get_color_alpha","line":92},{"name":"COLOR_GREEN","line":97},{"name":"COLOR_RED","line":98},{"name":"COLOR_YELLOW","line":99},{"name":"COLOR_BLUE","line":100},{"name":"COLOR_GRAY","line":101},{"name":"get_status_color","line":104},{"name":"create_layout_params","line":117},{"name":"get_layout_algorithm","line":124},{"name":"get_layout_iterations","line":128},{"name":"get_layout_temperature","line":132},{"name":"get_layout_cooling_rate","line":136},{"name":"ALGORITHM_FORCE_DIRECTED","line":141},{"name":"ALGORITHM_CIRCULAR","line":142},{"name":"ALGORITHM_HIERARCHICAL","line":143},{"name":"ALGORITHM_GRID","line":144},{"name":"calculate_force_layout","line":147},{"name":"calculate_circular_layout","line":222},{"name":"calculate_hierarchical_layout","line":247},{"name":"apply_layout","line":277},{"name":"render_node","line":293},{"name":"render_edge","line":309},{"name":"create_visualization_frame","line":352},{"name":"calculate_viz_complexity","line":376},{"name":"optimize_rendering","line":384},{"name":"generate_topology_visualization","line":398}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","topology","visualizer","max","nodes","edges","layers","canvas","size","create","visual","node","get","viz","position","status","active","inactive","failed","warning","edge","dest","quality","wired","wireless","route","backup","color","red","green","blue","alpha","yellow","gray","layout","params","algorithm","iterations","temperature","cooling","rate","force","directed","circular","hierarchical","grid","calculate","apply","render","visualization","frame","complexity","optimize","rendering","generate"]},{"id":"82ecdcaef6d0f8cd6ee7ec4fba5e3abccfe9a19a896579656f2a071d7b15c3fa","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tf3.t27","health":"warn","module":"triformat-tf3"}],"description":"tf3.t27 — TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]","symbols":[{"name":"SIGN_SHIFT","line":13},{"name":"EXP_SHIFT","line":14},{"name":"MANT_SHIFT","line":15},{"name":"SIGN_MASK","line":17},{"name":"EXP_MASK","line":18},{"name":"MANT_MASK","line":19},{"name":"EXP_MAX","line":21},{"name":"EXP_MIN","line":22},{"name":"BIAS","line":24},{"name":"MANT_BITS","line":25},{"name":"TF3_ZERO_POS","line":28},{"name":"TF3_ZERO_NEG","line":29},{"name":"TF3_INF_POS","line":30},{"name":"TF3_INF_NEG","line":31},{"name":"TF3","line":37},{"name":"mant_lookup_table","line":45},{"name":"tf3_extract_sign","line":79},{"name":"tf3_extract_exponent","line":86},{"name":"tf3_extract_mantissa","line":93},{"name":"tf3_from_components","line":99},{"name":"tf3_is_zero","line":107},{"name":"tf3_is_inf","line":113},{"name":"exp","line":114},{"name":"mant","line":115},{"name":"tf3_from_f32","line":122},{"name":"sign","line":129},{"name":"abs_value","line":130},{"name":"clamped","line":133},{"name":"mantissa","line":144},{"name":"mant","line":145},{"name":"tf3_to_f32","line":152},{"name":"sign","line":158},{"name":"sign","line":163},{"name":"exp","line":164},{"name":"mant","line":165},{"name":"sign_mult","line":168},{"name":"mant_mult","line":169},{"name":"exp_mult","line":170},{"name":"tf3_negate","line":177},{"name":"tf3_abs","line":183},{"name":"tf3_is_negative","line":189},{"name":"sign","line":190},{"name":"tf3_is_positive","line":196},{"name":"sign","line":197},{"name":"tf3_copy_sign","line":203},{"name":"sign_mask","line":204},{"name":"value_mask","line":205},{"name":"tf3_max","line":211},{"name":"a_val","line":215},{"name":"b_val","line":216},{"name":"tf3_min","line":223},{"name":"a_val","line":227},{"name":"b_val","line":228},{"name":"tf3_from_f32_phi","line":236},{"name":"sign","line":243},{"name":"abs_value","line":244},{"name":"clamped","line":247},{"name":"PHI_BIAS","line":258},{"name":"mantissa_raw","line":259},{"name":"mantissa","line":260},{"name":"mant","line":261},{"name":"tf3_eq","line":269},{"name":"tf3_ne","line":277},{"name":"tf3_lt","line":283},{"name":"a_val","line":284},{"name":"b_val","line":285},{"name":"tf3_le","line":291},{"name":"a_val","line":292},{"name":"b_val","line":293},{"name":"tf3_gt","line":299},{"name":"a_val","line":300},{"name":"b_val","line":301},{"name":"tf3_ge","line":307},{"name":"a_val","line":308},{"name":"b_val","line":309},{"name":"tf3_add","line":316},{"name":"a_val","line":326},{"name":"b_val","line":327},{"name":"result","line":328},{"name":"tf3_sub","line":335},{"name":"a_val","line":342},{"name":"b_val","line":343},{"name":"result","line":344},{"name":"tf3_mul","line":351},{"name":"a_sign","line":353},{"name":"b_sign","line":354},{"name":"result_sign","line":355},{"name":"a_sign","line":359},{"name":"b_sign","line":360},{"name":"result_sign","line":361},{"name":"a_val","line":365},{"name":"b_val","line":366},{"name":"result","line":367},{"name":"tf3_div","line":375},{"name":"a_sign","line":377},{"name":"a_sign","line":381},{"name":"b_sign","line":382},{"name":"result_sign","line":383},{"name":"a_sign","line":387},{"name":"b_sign","line":388},{"name":"result_sign","line":389},{"name":"a_val","line":393},{"name":"b_val","line":394},{"name":"result","line":395},{"name":"tf3_is_nan","line":403},{"name":"exp","line":405},{"name":"tf3_is_finite","line":411},{"name":"tf3_signbit","line":417},{"name":"tf3_sign","line":423},{"name":"tf3_clamp","line":441},{"name":"x_decoded","line":446},{"name":"min_decoded","line":447},{"name":"max_decoded","line":448},{"name":"tf3_lerp","line":461},{"name":"a_val","line":466},{"name":"b_val","line":467},{"name":"t_val","line":468},{"name":"result","line":470},{"name":"exp","line":502},{"name":"mant","line":503},{"name":"sign","line":514},{"name":"exp","line":515},{"name":"mant","line":516},{"name":"combined","line":525},{"name":"original","line":553},{"name":"encoded","line":554},{"name":"decoded","line":555},{"name":"original","line":560},{"name":"encoded","line":561},{"name":"decoded","line":562},{"name":"original","line":567},{"name":"encoded","line":568},{"name":"decoded","line":569},{"name":"result","line":593},{"name":"encoded","line":598},{"name":"encoded","line":603},{"name":"encoded","line":609},{"name":"pos_value","line":639},{"name":"neg_value","line":640},{"name":"decoded","line":641},{"name":"original","line":646},{"name":"negated","line":647},{"name":"double_negated","line":648},{"name":"orig_decoded","line":649},{"name":"double_decoded","line":650},{"name":"neg_value","line":660},{"name":"abs_value","line":661},{"name":"decoded","line":662},{"name":"pos_value","line":667},{"name":"abs_value","line":668},{"name":"neg_value","line":678},{"name":"pos_value","line":683},{"name":"pos_value","line":692},{"name":"neg_value","line":697},{"name":"pos_value","line":706},{"name":"neg_source","line":707},{"name":"result","line":708},{"name":"decoded","line":709},{"name":"neg_value","line":714},{"name":"pos_source","line":715},{"name":"result","line":716},{"name":"decoded","line":717},{"name":"a","line":722},{"name":"b","line":723},{"name":"result","line":724},{"name":"decoded","line":725},{"name":"a","line":730},{"name":"b","line":731},{"name":"result","line":732},{"name":"a","line":737},{"name":"b","line":738},{"name":"result","line":739},{"name":"decoded","line":740},{"name":"a","line":745},{"name":"b","line":746},{"name":"result","line":747},{"name":"PHI","line":752},{"name":"encoded","line":753},{"name":"decoded","line":754},{"name":"PHI","line":759},{"name":"encoded","line":760},{"name":"decoded","line":761},{"name":"a","line":771},{"name":"b","line":772},{"name":"a","line":777},{"name":"b","line":778},{"name":"a","line":787},{"name":"b","line":788},{"name":"a","line":793},{"name":"b","line":794},{"name":"a","line":799},{"name":"b","line":800},{"name":"a","line":805},{"name":"b","line":806},{"name":"neg","line":811},{"name":"pos","line":812},{"name":"a","line":817},{"name":"b","line":818},{"name":"a","line":823},{"name":"b","line":824},{"name":"a","line":829},{"name":"b","line":830},{"name":"a","line":835},{"name":"b","line":836},{"name":"a","line":841},{"name":"b","line":842},{"name":"a","line":847},{"name":"b","line":848},{"name":"a","line":853},{"name":"b","line":854},{"name":"a","line":862},{"name":"b","line":863},{"name":"result","line":864},{"name":"decoded","line":865},{"name":"a","line":870},{"name":"b","line":871},{"name":"result","line":872},{"name":"decoded","line":873},{"name":"a","line":878},{"name":"b","line":879},{"name":"result","line":880},{"name":"a","line":885},{"name":"b","line":886},{"name":"result","line":887},{"name":"decoded","line":888},{"name":"a","line":893},{"name":"b","line":894},{"name":"result","line":895},{"name":"decoded","line":896},{"name":"a","line":901},{"name":"b","line":902},{"name":"result","line":903},{"name":"decoded","line":904},{"name":"a","line":909},{"name":"b","line":910},{"name":"result","line":911},{"name":"decoded","line":912},{"name":"a","line":917},{"name":"zero","line":918},{"name":"result","line":919},{"name":"a","line":924},{"name":"b","line":925},{"name":"result","line":926},{"name":"decoded","line":927},{"name":"a","line":932},{"name":"b","line":933},{"name":"result","line":934},{"name":"decoded","line":935},{"name":"a","line":940},{"name":"zero","line":941},{"name":"result","line":942},{"name":"zero","line":947},{"name":"a","line":948},{"name":"result","line":949},{"name":"inf","line":954},{"name":"a","line":955},{"name":"result","line":956},{"name":"a","line":961},{"name":"b","line":962},{"name":"result1","line":963},{"name":"result2","line":964},{"name":"a","line":969},{"name":"b","line":970},{"name":"result1","line":971},{"name":"result2","line":972},{"name":"val","line":1221},{"name":"val","line":1226},{"name":"val","line":1240},{"name":"val","line":1245},{"name":"val","line":1250},{"name":"val","line":1255},{"name":"x","line":1269},{"name":"min_val","line":1270},{"name":"max_val","line":1271},{"name":"result","line":1272},{"name":"decoded","line":1273},{"name":"x","line":1278},{"name":"min_val","line":1279},{"name":"max_val","line":1280},{"name":"result","line":1281},{"name":"decoded","line":1282},{"name":"x","line":1287},{"name":"min_val","line":1288},{"name":"max_val","line":1289},{"name":"result","line":1290},{"name":"decoded","line":1291},{"name":"a","line":1296},{"name":"b","line":1297},{"name":"t","line":1298},{"name":"result","line":1299},{"name":"decoded","line":1300},{"name":"a","line":1305},{"name":"b","line":1306},{"name":"t","line":1307},{"name":"result","line":1308},{"name":"decoded","line":1309},{"name":"a","line":1314},{"name":"b","line":1315},{"name":"t","line":1316},{"name":"result","line":1317},{"name":"decoded","line":1318},{"name":"a","line":1441},{"name":"b","line":1442},{"name":"a","line":1454},{"name":"b","line":1455},{"name":"a","line":1467},{"name":"b","line":1468},{"name":"a","line":1491},{"name":"b","line":1492},{"name":"a","line":1504},{"name":"b","line":1505},{"name":"a","line":1517},{"name":"b","line":1518},{"name":"a","line":1530},{"name":"b","line":1531},{"name":"a","line":1543},{"name":"b","line":1544},{"name":"a","line":1556},{"name":"b","line":1557},{"name":"a","line":1569},{"name":"b","line":1570},{"name":"a","line":1582},{"name":"b","line":1583},{"name":"a","line":1595},{"name":"b","line":1596},{"name":"a","line":1608},{"name":"b","line":1609},{"name":"val","line":1621},{"name":"val","line":1633},{"name":"val","line":1645},{"name":"val","line":1657},{"name":"x","line":1669},{"name":"min_val","line":1670},{"name":"max_val","line":1671},{"name":"a","line":1683},{"name":"b","line":1684},{"name":"t","line":1685}],"imports":[],"terms":["numeric","tf3","triformat","sign","shift","exp","mant","mask","max","min","bias","bits","zero","pos","neg","inf","lookup","table","extract","exponent","mantissa","components","f32","abs","clamped","mult","negate","negative","positive","copy","val","phi","raw","sub","mul","div","nan","finite","signbit","clamp","decoded","lerp","combined","original","encoded","negated","double","orig","result1","result2"]},{"id":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/race_config.t27","health":"ok","module":"RaceConfig"}],"description":"t27/specs/ml/optimizer/race_config.t27 IGLA RACE optimizer configuration freeze + eval-split protocol. Phase A deliverable -- honesty foundation (issue #181 child). Claim-status legend used in this file: [Verified] -- algebraic identity, no experiment needed. [Open conjecture] -- phi claim that the control test must decide.","symbols":[{"name":"PHI","line":48},{"name":"RACE_BETA1_PHI_CANONICAL","line":51},{"name":"RACE_WEIGHT_DECAY_PHI_CUBE","line":52},{"name":"RACE_LR_CHAMPION","line":53},{"name":"RACE_BETA1_PHI_DAMPED","line":56},{"name":"RACE_BETA2_PHI_DAMPED","line":57},{"name":"CTRL_BETA1","line":60},{"name":"CTRL_BETA2","line":61},{"name":"CTRL_WEIGHT_DECAY","line":62},{"name":"CHAMPION_D_MODEL","line":65},{"name":"CHAMPION_STEPS","line":66},{"name":"CHAMPION_SEED","line":67},{"name":"CHINCHILLA_TOK_PER_PARAM","line":79},{"name":"CHAMPION_BATCH_TOKENS","line":80},{"name":"CORPUS_UNIQUE_TOKENS","line":81},{"name":"CHINCHILLA_MIN_UNIQUE","line":82},{"name":"SPLIT_SEED","line":97},{"name":"TRAIN_FRACTION","line":98},{"name":"HELD_OUT_FRACTION","line":99},{"name":"CORPUS_NAME","line":100},{"name":"CHAMPION_BPB_TRAIN_SPLIT","line":109}],"imports":[{"name":"base::types","line":27},{"name":"math::constants","line":28}],"terms":["optimizer","race","config","phi","beta1","canonical","weight","decay","cube","champion","damped","beta2","ctrl","model","steps","seed","chinchilla","tok","per","param","batch","tokens","corpus","unique","min","split","train","fraction","held","out","bpb"]},{"id":"8306e86091bc7dac8c797b4eb7de6502fb4b38d65fb49b73b33aca60ee9ac31c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf14.t27","health":"ok","module":"triformat-gf14"}],"description":"gf14.t27 -- GoldenFloat14 Encode/Decode GF14: 14-bit floating point with 1 sign + 5 exponent + 8 mantissa Bit layout: [S(1) E(5) M(8)] = [13:13][12:8][7:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS","line":24},{"name":"EXP_MAX","line":25},{"name":"EM_RATIO","line":28},{"name":"PHI_DIST","line":29},{"name":"PHI_BIAS_STATUS","line":31}],"imports":[],"terms":["numeric","gf14","triformat","total","bits","sign","exp","mant","shift","bias","max","ratio","phi","dist","status"]},{"id":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/partition_tb.t27","health":"ok","module":"Partition_Testbench"}],"description":"t27/specs/fpga/testbench/partition_tb.t27 FPGA Partition Testbench Tests floorplanning regions, hierarchical partitioning, and resource budgeting","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_PARTITIONS","line":11},{"name":"TOTAL_RESOURCES","line":12},{"name":"tick","line":22},{"name":"reset","line":27},{"name":"budget_resources","line":35},{"name":"budget_remainder","line":40},{"name":"check_partition_balance","line":45}],"imports":[{"name":"fpga::partition::Partition","line":8}],"terms":["fpga","testbench","partition","clk","period","max","partitions","total","resources","tick","reset","budget","remainder","balance"]},{"id":"83697f2c0ddeafb4bdb3c87b327a2d663de93214f7fb8d10d485574ace9ac293","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/mvp_ternary_classifier.t27","health":"ok","module":"IglaMvpTernaryClassifier"}],"description":"t27/specs/igla/race/mvp_ternary_classifier.t27 The MVP: a complete ternary neural network, small enough that every number in it can be checked by hand, built to be placed on an XC7A200T with ZERO DSPs. WHY THIS SHAPE. The claim worth proving first is not \"a big model runs\" but \"a model runs AT ALL, with no multiplier anywhere\". A network small enough to verify by hand is the only one where a wrong answer is unmistakably wrong --","symbols":[{"name":"GAT_ZERO","line":73},{"name":"GAT_POS","line":74},{"name":"GAT_NEG","line":75},{"name":"N_INPUTS","line":77},{"name":"N_CLASSES","line":78},{"name":"N_WEIGHTS","line":79},{"name":"W_A","line":84},{"name":"W_B","line":85},{"name":"W_C","line":86},{"name":"weight_at","line":95},{"name":"contrib","line":103},{"name":"bit_at","line":110},{"name":"score","line":118},{"name":"score_a","line":129},{"name":"score_b","line":130},{"name":"score_c","line":131},{"name":"classify","line":134},{"name":"on_comb","line":142}],"imports":[{"name":"base::types","line":70}],"terms":["igla","race","mvp","ternary","classifier","gat","zero","pos","neg","inputs","classes","weights","weight","contrib","bit","score","classify","comb"]},{"id":"83812b46b8bdc96bec83780f45d276acc802c6900b2a5cd74876e11ef3e973a9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/eof_hazard.t27","health":"warn","module":"eof_hazard"}],"description":"","symbols":[{"name":"AtEof","line":3}],"imports":[],"terms":["bootstrap","fixtures","terminator","eof","hazard"]},{"id":"83969c01bc42ca48ab841ba4e77ce26d08e9b23a0922dcc33dffee3b69cdab74","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/runtime.t27","health":"warn","module":"triruntime"}],"description":"compiler/runtime/runtime.t27 — T27 Runtime Specification Runtime environment for executing t27 programs","symbols":[{"name":"STACK_SIZE","line":10},{"name":"HEAP_SIZE","line":11},{"name":"MAX_THREADS","line":12},{"name":"MAX_CHANNELS","line":13},{"name":"ThreadState","line":16},{"name":"Runtime","line":23},{"name":"runtime_init","line":53},{"name":"runtime_execute","line":64},{"name":"runtime_shutdown","line":72},{"name":"alloc_stack","line":79},{"name":"alloc_heap","line":87},{"name":"init_threads","line":95},{"name":"init_channels","line":103},{"name":"setup_exception_handler","line":113},{"name":"setup_stack_frame","line":119},{"name":"runtime_alloc","line":127},{"name":"ptr","line":131},{"name":"runtime_free","line":137},{"name":"channel_create","line":144},{"name":"buffer","line":148},{"name":"channel_send","line":161},{"name":"channel_recv","line":172},{"name":"thread_spawn","line":182},{"name":"thread_yield","line":197},{"name":"print_stats","line":203},{"name":"ptr1","line":230},{"name":"ptr2","line":231},{"name":"channel_id","line":242},{"name":"sent","line":244},{"name":"t1","line":254},{"name":"t2","line":255},{"name":"t3","line":256},{"name":"sp_before","line":276},{"name":"p1","line":286},{"name":"p2","line":287},{"name":"rt","line":293},{"name":"rt","line":299},{"name":"MAX_THREADS","line":306},{"name":"channel_id","line":331}],"imports":[],"terms":["compiler","runtime","triruntime","stack","size","heap","max","threads","channels","thread","state","init","execute","shutdown","alloc","setup","exception","handler","frame","ptr","free","channel","create","buffer","send","recv","spawn","yield","print","stats","ptr1","ptr2","sent"]},{"id":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","sources":[{"repo":"ghashtag/t27","path":"specs/boards/wukong_v1.t27","health":"ok","module":"BoardWukongV1"}],"description":"t27/specs/boards/wukong_v1.t27 QMTech Wukong V1 / XC7A200T-FGG676 -- the board actually on this bench. WHY THIS EXISTS. `specs/boards/` held three files before this one: `arty_a7.t27` (a different board, csg324) and `xc7a100t_full.t27` / `xc7a100t_minimal.t27` -- both for an XC7A100T. The chip on every one of the three connected boards is an XC7A200T; `fpga/HARDWARE_SSOT.md` recorded that","symbols":[{"name":"BOARD_NAME","line":44},{"name":"FPGA_PART","line":45},{"name":"FPGA_FAMILY","line":46},{"name":"JTAG_IDCODE","line":49},{"name":"PNR_PART","line":54},{"name":"LUT_TOTAL","line":57},{"name":"DSP48E1_TOTAL","line":58},{"name":"CABLE_COUNT","line":67},{"name":"CABLE_VID","line":68},{"name":"CABLE_PID","line":69},{"name":"CABLES_SHARE_SERIAL","line":70},{"name":"FLASH_JEDEC_ID","line":74},{"name":"FLASH_MBIT","line":75},{"name":"FLASH_BYTES","line":76},{"name":"CFGMCLK_KHZ_BUSDEV_1_4","line":89},{"name":"CFGMCLK_KHZ_BUSDEV_1_6","line":90},{"name":"CFGMCLK_KHZ_BUSDEV_1_8","line":91},{"name":"CFGMCLK_KHZ_NOMINAL","line":93},{"name":"CFGMCLK_KHZ_MIN","line":94},{"name":"CFGMCLK_KHZ_MAX","line":95},{"name":"cfgmclk_in_datasheet_range","line":97},{"name":"DRAM_BYTES_MEASURED","line":110},{"name":"DRAM_BYTES","line":111},{"name":"MODEL_WEIGHT_BYTES","line":119},{"name":"MODEL_LARGEST_TENSOR_BYTES","line":120},{"name":"BRAM_BYTES","line":121},{"name":"KV_BYTES_PER_TOKEN","line":124},{"name":"weights_fit_flash","line":129},{"name":"flash_shortfall_factor","line":134},{"name":"weights_fit_dram","line":142},{"name":"largest_tensor_fits_bram","line":149},{"name":"kv_bytes","line":154},{"name":"on_comb","line":164}],"imports":[],"terms":["boards","wukong","board","fpga","part","family","jtag","idcode","pnr","lut","total","dsp48e1","cable","count","vid","pid","cables","share","serial","flash","jedec","mbit","bytes","cfgmclk","khz","busdev","nominal","min","max","datasheet","range","dram","measured","model","weight","largest","tensor","bram","per","token","weights","fit","shortfall","factor","fits","comb"]},{"id":"83e694d0156e30877c9a0d898b194667571fbc64181ff7c99dc0f7647a6f3452","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/fmt.t27","health":"ok","module":"tool_tri_fmt"}],"description":"specs/tools/tri/fmt.t27 -- tool tri/fmt, the `tri fmt` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fmt). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["fmt","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/core.t27","health":"warn","module":"core"}],"description":"t27 Math/Physics Test Framework - Core Ring 050: Test framework core per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Provides fundamental testing constructs for scientific computing","symbols":[{"name":"Verdict","line":12},{"name":"ToleranceTier","line":20},{"name":"EngineeringStatus","line":31},{"name":"TestResult","line":40},{"name":"GatePipeline","line":55},{"name":"run_sequential","line":66},{"name":"verdict","line":75},{"name":"for_all","line":83},{"name":"metamorphic","line":115},{"name":"differential","line":140},{"name":"TapReporter","line":174},{"name":"new","line":179},{"name":"generate_tap","line":183},{"name":"JsonReporter","line":209},{"name":"new","line":214},{"name":"generate_json","line":218},{"name":"run_test_suite","line":258},{"name":"test_gf4_exhaustive","line":285},{"name":"gf16_encode_f32","line":291},{"name":"gf16_decode_to_f32","line":296}],"imports":[],"terms":["framework","verdict","tolerance","tier","engineering","status","gate","pipeline","sequential","metamorphic","differential","tap","reporter","generate","json","suite","gf4","exhaustive","gf16","encode","f32","decode"]},{"id":"83fd64fdf3b8a0001d74c1769230ca11b7a0d7f3729c46881b92320b51708b7f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/error.t27","health":"ok","module":"TriError"}],"description":"t27/specs/","symbols":[{"name":"TriError","line":13}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils"]},{"id":"8404e46c4a1aee5956f5ec1ae74f13b73ec67c553df16ec59812ff09bc41f739","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/r_combo.t27","health":"ok","module":"R4"}],"description":"","symbols":[{"name":"f","line":2},{"name":"num_terms","line":5}],"imports":[],"terms":["bootstrap","goldring","combo","num","terms"]},{"id":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/video_bridge.t27","health":"ok","module":"VideoBridge"}],"description":"Video bridge protocol: phone ↔ mesh node video transport. Defines frame format for H.264 NAL units split into mesh-sized fragments. Phone sends raw H.264 Annex-B NAL units via UDP to mesh node. Node fragments into VSTREAM packets for mesh transport. Receiver reassembles and sends back to phone via UDP. phi^2 + phi^-2 = 3","symbols":[{"name":"VSTREAM_TYPE","line":12},{"name":"FRAG_HEADER_LEN","line":13},{"name":"MAX_FRAG_DATA","line":14},{"name":"TYPE_OFFSET","line":17},{"name":"SEQ_LOW_OFFSET","line":18},{"name":"SEQ_HIGH_OFFSET","line":19},{"name":"FRAG_INDEX_OFFSET","line":20},{"name":"FRAG_COUNT_OFFSET","line":21},{"name":"VIDEO_IN_PORT","line":28},{"name":"VIDEO_OUT_PORT","line":29},{"name":"MESH_PORT","line":30},{"name":"AUDIO_IN_PORT","line":42},{"name":"FEEDBACK_PORT","line":63},{"name":"FEEDBACK_TYPE","line":64},{"name":"FEEDBACK_LEN","line":65},{"name":"ADVICE_HOLD","line":67},{"name":"ADVICE_BACK_OFF","line":68},{"name":"ADVICE_CLIMB","line":69},{"name":"FB_UTIL_OFFSET","line":72},{"name":"FB_DROP_OFFSET","line":73},{"name":"FB_RATE_LO_OFFSET","line":74},{"name":"FB_RATE_HI_OFFSET","line":75},{"name":"FB_ADVICE_OFFSET","line":76},{"name":"fb_util_pct","line":81},{"name":"fb_drop_pct","line":98},{"name":"CLIMB_BELOW_PCT","line":125},{"name":"BACK_OFF_AT_PCT","line":126},{"name":"fb_should_back_off","line":130},{"name":"fb_may_climb","line":139},{"name":"fb_advice","line":147},{"name":"SEQ_EXPRESS_BASE","line":164},{"name":"video_seq","line":166},{"name":"express_seq","line":170},{"name":"RX_REPORT_TYPE","line":183},{"name":"RX_REPORT_LEN","line":184},{"name":"fb_effective_rate","line":192},{"name":"fb_chain_report","line":210},{"name":"VSTREAM_FEC_TYPE","line":242},{"name":"FEC_HEADER_LEN","line":243},{"name":"FEC_GROUP","line":244},{"name":"FEC_GROUP_OFFSET","line":247},{"name":"FEC_COUNT_OFFSET","line":248},{"name":"FEC_LAST_LEN_OFFSET","line":249},{"name":"fec_group_count","line":253},{"name":"fec_stride","line":266},{"name":"fec_group_of","line":271},{"name":"fec_group_first","line":278},{"name":"fec_group_len","line":284},{"name":"fec_can_recover","line":295},{"name":"fec_packet_size","line":300},{"name":"frag_seq","line":306},{"name":"seq_lo","line":313},{"name":"seq_hi","line":318},{"name":"fragment_count","line":324},{"name":"packet_size","line":337},{"name":"is_last_fragment","line":342},{"name":"is_first_fragment","line":347},{"name":"data_offset","line":352},{"name":"max_nal_size","line":357},{"name":"nal_fits","line":362}],"imports":[{"name":"base::types","line":9}],"terms":["net","video","bridge","vstream","frag","header","len","max","data","offset","seq","low","high","index","count","port","out","mesh","audio","feedback","advice","hold","back","off","climb","util","drop","rate","pct","below","may","express","base","report","effective","chain","fec","group","stride","recover","packet","size","fragment","nal","fits"]},{"id":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/cts.t27","health":"ok","module":"CTS"}],"description":"t27/specs/fpga/cts.t27 T27 Clock Tree Synthesis Specification PLL configuration, clock buffer trees, skew estimation Artix-7: BUFH=0.05ns, BUFG=0.1ns, PLL jitter=50ps, max skew=100ps Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"PllConfig","line":11},{"name":"pll_config","line":20},{"name":"pll_period_ps","line":37},{"name":"ClockBuffer","line":44},{"name":"bufg","line":50},{"name":"bufh","line":54},{"name":"bufg_has_higher_fanout","line":58},{"name":"ClockTree","line":62},{"name":"clock_tree","line":69},{"name":"tree_delay_ps","line":78},{"name":"skew_ok","line":82},{"name":"CtsReport","line":86},{"name":"cts_ok","line":95},{"name":"passed","line":106},{"name":"est_buffers_needed","line":112},{"name":"est_tree_levels","line":119},{"name":"validate_pll","line":131}],"imports":[],"terms":["fpga","cts","pll","config","period","clock","buffer","bufg","bufh","higher","fanout","tree","delay","skew","report","passed","est","buffers","needed","levels","validate"]},{"id":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","sources":[{"repo":"ghashtag/t27","path":"specs/github/tests/e2e_full_flow.t27","health":"ok","module":"github"}],"description":"specs/github/tests/e2e_full_flow.t27 End-to-End Full Flow Test for Ring-072 GitHub SSOT Tests: Auth → Issue → PR → Comment → Sync → Cleanup Ring-074 - E2E Tests","symbols":[{"name":"auth_result","line":17},{"name":"issue_title","line":21},{"name":"issue","line":22},{"name":"issue_list","line":28},{"name":"pr_title","line":39},{"name":"pr","line":40},{"name":"pr_list","line":46},{"name":"comment_body","line":57},{"name":"comment","line":58},{"name":"comment_list","line":63},{"name":"sync_result","line":74},{"name":"total_steps","line":80},{"name":"sync_result","line":98},{"name":"auth","line":106},{"name":"issue","line":109},{"name":"pr","line":112},{"name":"comment","line":115},{"name":"sync","line":118}],"imports":[{"name":"github::auth","line":9},{"name":"github::issues","line":10},{"name":"github::prs","line":11},{"name":"github::comments","line":12},{"name":"tri::sync","line":13}],"terms":["e2e","full","flow","auth","title","list","sync","total","steps"]},{"id":"84e1402434636a6019f33a2e38c977ff91b630ded94cf773249c022a12d8b3c5","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_05_enum_rhs.t27","health":"ok","module":"NegEnumRhs"}],"description":"ADR-008 negative: only `struct` is attested on the right-hand side (33 of 33). A parameterised enum is a separate decision.","symbols":[{"name":"Tagged","line":4}],"imports":[],"terms":["bootstrap","fixtures","generic","neg","enum","rhs","tagged"]},{"id":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","sources":[{"repo":"ghashtag/t27","path":"specs/demos/simple_test.t27","health":"ok","module":"SimpleTest"}],"description":"Simple test spec","symbols":[{"name":"TEST_VALUE","line":6}],"imports":[{"name":"base::types","line":4}],"terms":["demos","simple"]},{"id":"85737878076cb079490db44c9772b4934fc0daae162b066db29d1685190a2c60","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/maxpool2d_layer.t27","health":"ok","module":"Maxpool2d"}],"description":"t27/specs/","symbols":[{"name":"MaxPool2DConfig","line":13},{"name":"forward","line":26},{"name":"backward","line":31}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","maxpool2d","layer","max","pool2dconfig","forward","backward"]},{"id":"85886ff8a1b7a674923d3b4ab6e76727ad0ab89b7adb14a853a12bd946df48c8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crc16.t27","health":"ok","module":"Crc16Ccitt"}],"description":"CRC-16/CCITT error detection (no-let version)","symbols":[{"name":"CRC16_CCITT_POLY","line":6},{"name":"CRC16_INIT","line":7},{"name":"crc_update_bit","line":10},{"name":"crc_update_byte","line":19},{"name":"crc16_4bytes","line":39},{"name":"verify_crc16_4bytes","line":50}],"imports":[{"name":"base::types","line":4}],"terms":["net","crc16","crc16ccitt","ccitt","poly","init","crc","bit","byte","4bytes","verify"]},{"id":"85a7e9a6f0716d535f5a19f0e3e67da32b8bc956f9cd620f5099ba4961d75b55","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/tree.t27","health":"ok","module":"TriTree"}],"description":"t27/specs/","symbols":[{"name":"Tree","line":13},{"name":"leaf","line":25},{"name":"branch","line":30},{"name":"is_leaf","line":35},{"name":"height","line":40},{"name":"size","line":45},{"name":"inorder","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","tree","leaf","branch","height","size","inorder"]},{"id":"85e9e5f9206e17a924e9ae7f2a7c79a62cce17f06327cf1abdf424efaba6cf41","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/comb_bitnet_neuron.t27","health":"warn","module":"CombBitnetNeuron"}],"description":"","symbols":[{"name":"tmul","line":20},{"name":"tp","line":26},{"name":"dot27","line":29},{"name":"quantize","line":38},{"name":"on_comb","line":45}],"imports":[],"terms":["ternary","comb","bitnet","neuron","tmul","dot27","quantize"]},{"id":"85fd8a7d31b783c57da0443c9ca2156d6d786867bea9dfee682f6208f876e91c","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-security.t27","health":"ok","module":"cron_999_multibots_telegraf_security"}],"description":"specs/crons/999-multibots-telegraf-security.t27 -- cron github-actions/999-multibots-telegraf/security Source of truth for the job card on t27.ai (#/crons?cron=github-actions/999-multibots-telegraf/security). The schedule was read from 999-multibots-telegraf:.github/workflows/security.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"NOTE","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","security","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"86475f7d52556f934215ddf1cd501cc686af387785e98069a29de61a3bebac75","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base64.t27","health":"ok","module":"TriBase64"}],"description":"t27/specs/","symbols":[{"name":"Base64","line":13},{"name":"standard","line":23},{"name":"url_safe","line":28},{"name":"encode","line":33},{"name":"decode","line":38},{"name":"encoded_length","line":43},{"name":"decoded_length","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","base64","standard","url","safe","encode","decode","encoded","length","decoded"]},{"id":"8680ac8254c709d607055ee4ac6872b05bece422635c44dfcc5494d99952992c","sources":[{"repo":"ghashtag/t27","path":"specs/agents/e.t27","health":"ok","module":"agent_e"}],"description":"specs/agents/e.t27 -- agent t27/E, letter E of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/E). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent E - Epsilon (Experience)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"8689a47ee97a2588da26a7492f8c6f543dd25702b9962cbdd25ce16070129d38","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/prose.t27","health":"ok","module":"tool_tri_prose"}],"description":"specs/tools/tri/prose.t27 -- tool tri/prose, the `tri prose` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/prose). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["prose","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"870a33f2ff7a6fe458c1d4ebbff5cf8632c697d2f59a5bf243e943bf1e5186db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/access_control.t27","health":"ok","module":"AccessControl"}],"description":"Access Control - node authentication and authorization Simplified RBAC for mesh network security","symbols":[{"name":"MAX_NODES","line":7},{"name":"ROLE_NONE","line":8},{"name":"ROLE_GUEST","line":9},{"name":"ROLE_USER","line":10},{"name":"ROLE_ADMIN","line":11},{"name":"PERMIT","line":12},{"name":"DENY","line":13},{"name":"create_node_creds","line":16},{"name":"get_node_id","line":23},{"name":"get_role","line":27},{"name":"get_auth_token","line":31},{"name":"is_authorized","line":35},{"name":"create_policy","line":40},{"name":"get_resource","line":48},{"name":"get_min_role","line":52},{"name":"get_guest_perm","line":56},{"name":"get_user_perm","line":60},{"name":"get_admin_perm","line":64},{"name":"role_meets_minimum","line":69},{"name":"check_access","line":74},{"name":"verify_creds","line":93},{"name":"authorize_node","line":102},{"name":"revoke_node","line":110},{"name":"change_role","line":118},{"name":"check_resource_access","line":126}],"imports":[{"name":"base::types","line":5}],"terms":["net","access","control","max","nodes","role","guest","user","admin","permit","deny","create","node","creds","get","auth","token","authorized","policy","resource","min","perm","meets","minimum","verify","authorize","revoke"]},{"id":"8729edafdc8239d187c0f2b7d98238438d40ec439b39087e1654bb683366ec3a","sources":[{"repo":"ghashtag/t27","path":"specs/crons/railway-jobsearch-cron.t27","health":"ok","module":"cron_railway_jobsearch_cron"}],"description":"specs/crons/railway-jobsearch-cron.t27 -- cron railway-cron/999/jobsearch-cron Source of truth for the job card on t27.ai (#/crons?cron=railway-cron/999/jobsearch-cron). The schedule lives in the Railway dashboard of project 999 and is not in any checkout. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":19},{"name":"SCHEDULE_NOTE","line":20},{"name":"TZ","line":21},{"name":"RUNS","line":22},{"name":"RUNS_NOTE","line":23},{"name":"ENABLED","line":24},{"name":"NOTE","line":25},{"name":"ON_FAILURE","line":26},{"name":"CONTROL","line":27}],"imports":[],"terms":["crons","railway","jobsearch","cron","kind","host","service","summary","schedule","note","runs","enabled","failure","control"]},{"id":"8739f5a9100f6f989b3558fa5c49af008fb134e3c640c67a0ca946e2880e42bb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/gen.t27","health":"ok","module":"tool_tri_gen"}],"description":"specs/tools/tri/gen.t27 -- tool tri/gen, the `tri gen` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/gen). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["gen","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"873b57df4eaf9b77f0d358ab646dd76e122a9bdcaa792f6d94b40c51a5d709ad","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/r_op.t27","health":"warn","module":"R5"}],"description":"","symbols":[{"name":"f","line":2}],"imports":[],"terms":["bootstrap","goldring"]},{"id":"876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/swarm_coordinator.t27","health":"ok","module":"SwarmCoordinator"}],"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUORUM_THRESHOLD","line":8},{"name":"PROPOSAL_TIMEOUT","line":9},{"name":"VOTE_YES","line":10},{"name":"VOTE_NO","line":11},{"name":"VOTE_ABSTAIN","line":12},{"name":"create_proposal","line":17},{"name":"get_proposal_id","line":24},{"name":"get_proposal_node","line":28},{"name":"get_proposal_value","line":32},{"name":"get_proposal_timestamp","line":36},{"name":"create_vote","line":41},{"name":"get_vote_node","line":48},{"name":"get_vote_value","line":52},{"name":"get_vote_proposal_id","line":56},{"name":"get_vote_timestamp","line":60},{"name":"create_vote_array","line":67},{"name":"get_vote","line":71},{"name":"count_votes","line":79},{"name":"has_quorum","line":136},{"name":"proposal_passes","line":142},{"name":"calculate_consensus_value","line":149},{"name":"cooperative_decision","line":201}],"imports":[{"name":"base::types","line":5}],"terms":["net","swarm","coordinator","max","nodes","quorum","threshold","proposal","timeout","vote","yes","abstain","create","get","node","timestamp","array","count","votes","passes","calculate","consensus","cooperative","decision"]},{"id":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/requant_boundary.t27","health":"ok","module":"RequantBoundary"}],"description":"t27/specs/numeric/requant_boundary.t27 Activation requantizer: the threshold boundary convention. Recorded because Wave 669 had to settle a semantic question with no specification to appeal to. Two independently written implementations of the same rule -- the emitted `activation_requant` RTL and the end-to-end testbench reference in sim/tb_data_check.v -- agreed everywhere except at","symbols":[{"name":"MUTANT","line":11},{"name":"MUTANT2","line":12},{"name":"MUTANT3","line":13},{"name":"TRIT_N","line":20},{"name":"TRIT_Z","line":21},{"name":"TRIT_P","line":22},{"name":"TRIT_RESERVED","line":23},{"name":"requantize","line":38},{"name":"negative_threshold_yields_p","line":55},{"name":"VERIFY_CHECKED","line":73},{"name":"VERIFY_MATCHED","line":74},{"name":"VERIFY_BOUNDARY_REACHED","line":75},{"name":"VERIFY_ACC_MIN_OBSERVED","line":76},{"name":"VERIFY_ACC_MAX_OBSERVED","line":77},{"name":"FINDING_SITE","line":93},{"name":"FINDING_RESOLVED","line":94},{"name":"OPEN_QUESTION_DO_NOT_GUESS","line":104},{"name":"SUPERIORITY_CLAIMED","line":116},{"name":"MEASURED_ON_FPGA","line":117}],"imports":[],"terms":["numeric","requant","boundary","mutant","mutant2","mutant3","trit","reserved","requantize","negative","threshold","yields","verify","checked","matched","reached","acc","min","observed","max","finding","site","resolved","open","question","guess","superiority","claimed","measured","fpga"]},{"id":"87edc9316e590def9f59b546eddfbeee0457669bd03e565e870862d0ea4a6fb7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/matrix.t27","health":"ok","module":"TriMatrix"}],"description":"t27/specs/","symbols":[{"name":"Matrix","line":13},{"name":"init","line":25},{"name":"get","line":30},{"name":"set","line":35},{"name":"multiply","line":40},{"name":"transpose","line":45},{"name":"identity","line":50},{"name":"deinit","line":55}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","matrix","init","get","set","multiply","transpose","identity","deinit"]},{"id":"87f4df6699be1253d8cb35dc7ff8065613c923bfb72af25822078017897d1177","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_critic.t27","health":"ok","module":"SacCritic"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_TAU","line":13},{"name":"DEFAULT_GAMMA","line":14},{"name":"DEFAULT_INIT_WEIGHT","line":15},{"name":"SACCriticConfig","line":21},{"name":"TwinQOutput","line":28},{"name":"TargetQUpdate","line":33},{"name":"forward","line":43},{"name":"compute_target","line":48},{"name":"q_loss","line":53},{"name":"soft_update_target","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sac","critic","default","tau","gamma","init","weight","saccritic","config","twin","qoutput","target","qupdate","forward","compute","loss","soft"]},{"id":"880d0b6c01b2b1e4cc9bc92c11ef300b8335bdf8ca842308bca7d3fd7e979254","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27","health":"ok","module":"cron_999_multibots_telegraf_production_monitor_L80"}],"description":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27 -- cron timer/999-multibots-telegraf/production-monitor-L80 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/production-monitor-L80). The schedule was read from 999-multibots-telegraf:src/utils/production-monitor.ts#L80. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":24},{"name":"NOTE","line":25},{"name":"ON_FAILURE","line":26},{"name":"CONTROL","line":27}],"imports":[],"terms":["crons","multibots","telegraf","production","monitor","l80","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"881cb1ecd624422cbe055e73272343e1fa48151ce41b680fa1b01eaed9a26319","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_sorting.t27","health":"warn","module":"TernarySorting"}],"description":"t27/specs/isa/ternary_sorting.t27 Ternary Sorting Operations Specification Ring 080 - Sorting algorithms for ternary data 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TRIT_NEG","line":10},{"name":"TRIT_ZERO","line":11},{"name":"TRIT_POS","line":12},{"name":"sort_compare","line":15},{"name":"bubble_sort","line":22},{"name":"selection_sort","line":42},{"name":"insertion_sort","line":63},{"name":"quick_sort","line":78},{"name":"is_sorted","line":103}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","sorting","trit","neg","zero","pos","sort","compare","bubble","selection","insertion","quick","sorted"]},{"id":"886e26ea3b1edab164a49afadd98eb874a22a2940b0b98d2e5db917fa047d0c3","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_02_trailing_comma.t27","health":"ok","module":"NegTrailingComma"}],"description":"ADR-008 negative: a trailing comma is not attested anywhere in the corpus. Accepting it would widen the grammar with no evidence behind it.","symbols":[{"name":"Holder","line":4}],"imports":[],"terms":["bootstrap","fixtures","generic","neg","trailing","comma","holder"]},{"id":"8879f6761c27c51c6c8ed11a13974ac5935ae6e9776cc04f64ca8ff0ac4169d2","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/holo_mux_x4.t27","health":"warn","module":"sacred-holo_mux_x4"}],"description":"holo_mux_x4.t27 — Sacred Opcode 0xE6: Holographic 4x Multiplexer Hardware multiplexer for holographic data paths with 4-way select","symbols":[{"name":"OP_HOLO_MUX_X4","line":12},{"name":"NUM_INPUTS","line":14},{"name":"DATA_WIDTH","line":15},{"name":"SELECT_BITS","line":16},{"name":"HOLO_LAYER_NORTH","line":18},{"name":"HOLO_LAYER_EAST","line":19},{"name":"HOLO_LAYER_SOUTH","line":20},{"name":"HOLO_LAYER_WEST","line":21},{"name":"HOLO_PHASE_0","line":23},{"name":"HOLO_PHASE_90","line":24},{"name":"HOLO_PHASE_180","line":25},{"name":"HOLO_PHASE_270","line":26},{"name":"HOLO_VALID","line":28},{"name":"HOLO_INVALID","line":29},{"name":"HoloInput","line":35},{"name":"HoloMuxConfig","line":43},{"name":"HoloOutput","line":50},{"name":"HoloMuxState","line":58},{"name":"holo_input_valid","line":70},{"name":"holo_input_score","line":76},{"name":"phi_bonus","line":85},{"name":"priority_bonus","line":91},{"name":"holo_mux_select","line":104},{"name":"selected_idx","line":105},{"name":"frozen_input","line":109},{"name":"selected","line":119},{"name":"holo_mux_best","line":131},{"name":"frozen_input","line":133},{"name":"score","line":147},{"name":"selected","line":154},{"name":"holo_mux_valid","line":166},{"name":"holo_mux_count_valid","line":178},{"name":"holo_mux_any_valid","line":190},{"name":"holo_mux_all_valid","line":201},{"name":"holo_layer_is_north","line":215},{"name":"holo_layer_is_east","line":220},{"name":"holo_layer_is_south","line":225},{"name":"holo_layer_is_west","line":230},{"name":"holo_opposite_layer","line":236},{"name":"holo_phase_90_deg","line":252},{"name":"holo_phase_180_deg","line":258},{"name":"holo_phase_270_deg","line":264},{"name":"holo_phase_opposite","line":270},{"name":"encode_holo_mux_x4","line":280},{"name":"op","line":282},{"name":"layer_field","line":283},{"name":"phase_field","line":284},{"name":"frozen_field","line":285},{"name":"decode_holo_mux_x4","line":291},{"name":"layer","line":292},{"name":"phase","line":293},{"name":"frozen","line":294}],"imports":[],"terms":["euler","fpga","holo","mux","sacred","num","inputs","data","width","select","bits","layer","north","east","south","west","phase","valid","invalid","config","state","score","phi","bonus","priority","selected","idx","frozen","best","count","opposite","deg","encode","field","decode"]},{"id":"888f09cac9289bcb34d7779dab42458bdcab259b85f0d8d3dca65e634e7cb0f5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/cloud.t27","health":"ok","module":"TriCloud"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","cloud"]},{"id":"88a19f0f834d7cf72ce68bd59cfd69d74daa682ce4e2bdcc0174a0e47719eb72","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_unresolved_import.t27","health":"ok","module":"trinity_matrix_neg_unresolved_import"}],"description":"trinity_matrix/neg_unresolved_import.t27 -- NEGATIVE: an import of a module that does not exist.","symbols":[{"name":"N","line":7}],"imports":[{"name":"nowhere::thing","line":5}],"terms":["bootstrap","fixtures","matrix","neg","unresolved","import"]},{"id":"88e816a15bbe55f67c12235d8c07c910bd35c41cf2299ee4f91a203b237daea6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_06_alongside_plain.t27","health":"ok","module":"GenericConstMixed"}],"description":"ADR-008 positive: a parameterised and a plain struct declaration in one module. Guards against the generic path swallowing the declaration that follows it.","symbols":[{"name":"Option","line":4},{"name":"Header","line":8}],"imports":[],"terms":["bootstrap","fixtures","generic","pos","alongside","plain","mixed","option","header"]},{"id":"88f409d2b7ed9bab788da1aa663b899d1c6491c476b76aa777d1761c0f0d7e5b","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_classify.t27","health":"ok","module":"GftClassify"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"on_comb","line":110}],"imports":[],"terms":["ternary","gft","classify","magadd","magsub","sadd","neg","magmul","smul","comb"]},{"id":"892bfeccae76c838fbdf64c33008605d79293384109ec5b22d087373db822e7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/transport_tx_fsm.t27","health":"ok","module":"TransportTxFsm"}],"description":"Transport TX FSM for mesh data frame transmission Port from trios-mesh/src/daemon.rs Node::seal_data() Simplified: no crypto, FSM-based retry logic","symbols":[{"name":"ST_IDLE","line":9},{"name":"ST_ENQUEUE","line":10},{"name":"ST_BUILD_HDR","line":11},{"name":"ST_TX_WAIT","line":12},{"name":"ST_ACKED","line":13},{"name":"ST_FAILED","line":14},{"name":"MAX_RETRIES","line":17},{"name":"BASE_RETRY_MS","line":18},{"name":"KIND_DATA","line":19},{"name":"VERSION","line":20},{"name":"next_state","line":23},{"name":"retry_delay_ms","line":53},{"name":"is_retries_exceeded","line":70},{"name":"increment_retry","line":75},{"name":"header_byte","line":85}],"imports":[{"name":"base::types","line":6}],"terms":["net","transport","fsm","idle","enqueue","build","hdr","wait","acked","failed","max","retries","base","retry","kind","data","state","delay","exceeded","increment","header","byte"]},{"id":"89402274898f607a2be4d505f8925c76802acfe2683739605f8413604530ff23","sources":[{"repo":"ghashtag/t27","path":"specs/agents/c.t27","health":"ok","module":"agent_c"}],"description":"specs/agents/c.t27 -- agent t27/C, letter C of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/C). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent C - Gamma (Compiler Core)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/anchor.t27","health":"ok","module":"CoronaAnchor"}],"description":"specs/corona/anchor.t27 TG-TRIAD-X cross-die anchor (carried forward unchanged from Phi/Euler/Gamma).","symbols":[{"name":"ANCHOR_VALUE_U16","line":22},{"name":"ANCHOR_UO_OUT","line":23},{"name":"ANCHOR_UIO_OUT","line":24},{"name":"FMT_ID_ANCHOR","line":56},{"name":"RESPONSE_LATENCY","line":57}],"imports":[{"name":"base::types","line":11},{"name":"math::constants","line":12},{"name":"math::sacred_physics","line":13},{"name":"numeric::gf16","line":14},{"name":"numeric::lucas_accumulator","line":15}],"terms":["corona","anchor","u16","out","uio","fmt","response","latency"]},{"id":"896ec37548b1099e2befe9e501eef19c0badedc03bf3e26a1e9c463d6e465842","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/cosmology.t27","health":"ok","module":"TriCosmology"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","cosmology"]},{"id":"89a7740fd5e445abd9fa8e839ea57020591daa228f2a83719af15e3e82c15b68","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/bellman_ford.t27","health":"ok","module":"TriBellmanFord"}],"description":"t27/specs/","symbols":[{"name":"Edge","line":13},{"name":"shortest_path","line":24}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["graph","bellman","ford","edge","shortest","path"]},{"id":"89af60b026ed44f74e7fdeca2c3486d1b6936ed25eb36952a2acc4fcfceb8887","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_join.t27","health":"warn","module":"TrinityStreamJoinT27"}],"description":"","symbols":[{"name":"join_mask","line":11},{"name":"on_comb","line":16}],"imports":[],"terms":["dmitrii","memory","rtl","stream","join","mask","comb"]},{"id":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/sort.t27","health":"ok","module":"TriSort"}],"description":"t27/specs/","symbols":[{"name":"SortOrder","line":13},{"name":"sort","line":22},{"name":"sort_by","line":27}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","order"]},{"id":"8a2aeb36832b43ec2112a770f943529481e4a7f3ccd52f7b4fdc62e7452978ed","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/mesh.t27","health":"ok","module":"tool_trinity_tri_mesh"}],"description":"specs/tools/trinity/tri/mesh.t27 -- tool gHashTag/trinity:tri/mesh, the `tri mesh` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/mesh`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["mesh","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf24.t27","health":"warn","module":"GF24"}],"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 0 24-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 7 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF24","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp_u16","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["euler","numeric","gf24","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"8ab9285758d8870b2943ef4683f7cef21b36ec668f336787eec41dcc6f7e5b5c","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/hardware-constraints-kg.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["hardware","constraints"]},{"id":"8ac2f175a17a71996c19ceddfe61aa010318a6fd81b5aa1491dce361ccf5c4ac","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/negation_invariant.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","negation","invariant"]},{"id":"8aea8946d266dd32d1455a5ae70c1b8a3b79f0ee4ac7889f68f14d0918094484","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-ci.t27","health":"ok","module":"cron_999_multibots_telegraf_ci"}],"description":"specs/crons/999-multibots-telegraf-ci.t27 -- cron github-actions/999-multibots-telegraf/ci Source of truth for the job card on t27.ai (#/crons?cron=github-actions/999-multibots-telegraf/ci). The schedule was read from 999-multibots-telegraf:.github/workflows/ci.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"NOTE","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/verdict.t27","health":"ok","module":"tool_tri_verdict"}],"description":"specs/tools/tri/verdict.t27 -- tool tri/verdict, the `tri verdict` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/verdict). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["verdict","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"8b07a766bdb93f91528171c1fdcc4b148c1fb9705dcaa436467157c81ade810b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/ppl_calculator.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","tri27","ppl","calculator"]},{"id":"8b3bc6614cc288a837b694b0d936f51645d3d9b37966a25b4a8e34f125119585","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf32.t27","health":"ok","module":"triformat_tnf32"}],"description":"tnf32.t27 -- TNF32: Ternary Network Float, 32-bit class. Top practical rung of the TF ladder. Balanced-ternary exponent = 6 trits (3^6 = 729 offsets, exponent +-364, ~219 decades), phi-ish 25-bit mantissa, NO regime decode. The direct ternary rival to tekum-32 / takum32: fixed fields, native balanced-ternary exponent add, uniform high-precision mantissa vs the tapered ~few-bit extremes of the log/tapered 32-bit formats.","symbols":[{"name":"EXP_TRITS","line":14},{"name":"MANT_BITS","line":15},{"name":"EXP_OFFSET","line":16},{"name":"OFFSET_MAX","line":17},{"name":"exp_offset","line":20},{"name":"is_finite","line":24},{"name":"exp_values","line":28}],"imports":[{"name":"base::types","line":12}],"terms":["numeric","tnf32","triformat","exp","trits","mant","bits","offset","max","finite","values"]},{"id":"8b6fe7a680efb096f89b4f3166bdc6724a7bd3e48fa841b90ac94c4e1f66df01","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/channel.t27","health":"ok","module":"TriChannel"}],"description":"t27/specs/","symbols":[{"name":"Channel","line":13},{"name":"new_channel","line":24},{"name":"send","line":29},{"name":"recv","line":34},{"name":"close","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["net","channel","send","recv","close"]},{"id":"8b7170ce5946d494428c43084d30ccbcad94c0cda325f4dde2cacb16cee3c7b9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_arith.t27","health":"ok","module":"TriGftArith"}],"description":"TRI-NET GF-T (ternary-native GoldenFloat) verifiable multiply arithmetic. A compute receipt binds {format, op, operands, result} and is SIGNED, but a signature only attests WHO produced the result, not that the result is CORRECT. This spec lets a verifier RECOMPUTE the checkable core of a GF-T multiply -- its exponent -- and reject a receipt whose claimed exponent is wrong (compute fraud), independent of any signature.","symbols":[{"name":"GFT16_BIAS","line":20},{"name":"GFT16_OFFSET_MAX","line":21},{"name":"gft_mul_offset","line":26},{"name":"verify_gft_mul_offset","line":43},{"name":"gft_mul_sign","line":48},{"name":"MANT_ONE","line":59},{"name":"gft_mul_mant_carry_p","line":67},{"name":"gft_mul_mant_p","line":78},{"name":"gft_mul_offset_full_p","line":88},{"name":"verify_gft_mul_full_p","line":105},{"name":"gft_mul_mant_carry_u64","line":118},{"name":"gft_mul_mant_u64","line":127},{"name":"gft_mul_offset_full_u64","line":136},{"name":"verify_gft_mul_full_u64","line":151},{"name":"gft_mul_mant_carry","line":161},{"name":"gft_mul_mant","line":164},{"name":"gft_mul_offset_full","line":167},{"name":"verify_gft_mul_full","line":174},{"name":"gft_result_encode","line":185},{"name":"gft_mul_result","line":191}],"imports":[{"name":"base::types","line":18}],"terms":["net","gft","arith","gft16","bias","offset","max","mul","verify","sign","mant","one","carry","full","u64","encode"]},{"id":"8ba19bb8f83184f5d2ae0610a45c8b4292896654b4396bfbff77229d296cb997","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/aho_corasick.t27","health":"ok","module":"TriAhoCorasick"}],"description":"t27/specs/","symbols":[{"name":"ACTrieNode","line":13},{"name":"ACAutomaton","line":20},{"name":"build","line":31},{"name":"search","line":36},{"name":"deinit","line":41},{"name":"match","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","aho","corasick","actrie","node","acautomaton","build","deinit","match"]},{"id":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/e8m0.t27","health":"ok","module":"E8M0"}],"description":"t27/specs/numeric/e8m0.t27 E8M0 -- the OCP Microscaling shared scale, and the trit count it does not have. WHY THIS EXISTS. `specs/numeric/formats_catalog.t27` is the numeric SSOT and it names `e8m0` FIVE times as the storage of another format -- mxfp8 storage=u8_plus_shared_e8m0 mxfp6 storage=u8_packed_plus_e8m0","symbols":[{"name":"E8M0_BITS","line":51},{"name":"E8M0_BIAS","line":52},{"name":"E8M0_NAN_CODE","line":53},{"name":"E8M0_MAX_FINITE","line":54},{"name":"E8M0_MIN_FINITE","line":55},{"name":"E8M0_ONE","line":56},{"name":"E8M0_FINITE_CODES","line":59},{"name":"THREE_POW_3","line":68},{"name":"THREE_POW_4","line":69},{"name":"THREE_POW_5","line":70},{"name":"THREE_POW_6","line":71},{"name":"TNF17_OFFSET_VALUES","line":76},{"name":"e8m0_exponent","line":82},{"name":"e8m0_is_nan","line":86},{"name":"e8m0_is_finite","line":90},{"name":"e8m0_encode","line":100},{"name":"trits_needed","line":110},{"name":"trit_waste","line":120},{"name":"packs_exactly","line":129},{"name":"on_comb","line":138}],"imports":[],"terms":["numeric","e8m0","bits","bias","nan","max","finite","min","one","codes","three","pow","tnf17","offset","values","exponent","encode","trits","needed","trit","waste","packs","exactly","comb"]},{"id":"8bf789ec0849acf8c11d339deddeaace0fb2c99e444c72f11b32bb922af544cf","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_actor.t27","health":"ok","module":"SacActor"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LOG_STD_MIN","line":13},{"name":"DEFAULT_LOG_STD_MAX","line":14},{"name":"DEFAULT_ACTION_RANGE","line":15},{"name":"SACActorConfig","line":21},{"name":"PolicyOutput","line":30},{"name":"SquashedGaussianSample","line":35},{"name":"forward","line":45},{"name":"sample","line":50},{"name":"scale_action","line":55},{"name":"unscale_action","line":60}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sac","actor","default","log","std","min","max","action","range","sacactor","config","policy","squashed","gaussian","sample","forward","scale","unscale"]},{"id":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/dfs_gate.t27","health":"ok","module":"sacred-dfs_gate"}],"description":"dfs_gate.t27 — Sacred Opcode 0xE7: Depth-First Search Gate Hardware acceleration for DFS traversal and pattern matching","symbols":[{"name":"OP_DFS_GATE","line":12},{"name":"MAX_STACK_DEPTH","line":14},{"name":"MAX_NODES","line":15},{"name":"NODE_ADDR_BITS","line":16},{"name":"VISIT_UNVISITED","line":18},{"name":"VISIT_VISITING","line":19},{"name":"VISIT_VISITED","line":20},{"name":"DFS_MODE_STANDARD","line":22},{"name":"DFS_MODE_DEPTH_LIMITED","line":23},{"name":"DFS_MODE_PATTERN_MATCH","line":24},{"name":"DFS_MODE_PRUNE_SUBOPTIMAL","line":25},{"name":"DfsNode","line":31},{"name":"DfsStack","line":40},{"name":"DfsConfig","line":45},{"name":"DfsState","line":52},{"name":"DfsResult","line":59},{"name":"dfs_stack_init","line":73},{"name":"dfs_stack_push","line":82},{"name":"dfs_stack_pop","line":94},{"name":"node","line":100},{"name":"dfs_stack_peek","line":107},{"name":"dfs_stack_is_empty","line":116},{"name":"dfs_stack_depth","line":122},{"name":"dfs_node_init","line":132},{"name":"dfs_node_add_child","line":145},{"name":"dfs_node_has_child","line":157},{"name":"dfs_node_mark_visiting","line":168},{"name":"dfs_node_mark_visited","line":176},{"name":"dfs_node_is_visited","line":184},{"name":"dfs_node_is_visiting","line":190},{"name":"dfs_traverse","line":200},{"name":"peek","line":212},{"name":"node_idx","line":218},{"name":"pop_result","line":223},{"name":"pop_result","line":258},{"name":"child_addr","line":272},{"name":"child","line":273},{"name":"pop_result","line":290},{"name":"encode_dfs_gate","line":315},{"name":"op","line":317},{"name":"mode_field","line":318},{"name":"start_field","line":319},{"name":"target_field","line":320},{"name":"decode_dfs_gate","line":326},{"name":"mode","line":327},{"name":"start_addr","line":328},{"name":"target","line":329}],"imports":[],"terms":["euler","fpga","dfs","gate","sacred","max","stack","depth","nodes","node","addr","bits","visit","unvisited","visiting","visited","mode","standard","limited","pattern","match","prune","suboptimal","config","state","init","push","pop","peek","empty","child","mark","traverse","idx","encode","field","start","target","decode"]},{"id":"8c085a1829eda935ee9ce257c16945dc1e34d4f8c3446d61f15dc4306a1c06f9","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_classify3.t27","health":"warn","module":"GftClassify3"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"category","line":108},{"name":"gt","line":113},{"name":"on_comb","line":125}],"imports":[],"terms":["ternary","gft","classify3","magadd","magsub","sadd","neg","magmul","smul","category","comb"]},{"id":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/runtime/runtime.t27","health":"warn","module":null}],"description":"runtime.t27 — Bootstrap Runtime for TRI-27 Assembly Minimal runtime for executing t27 programs","symbols":[{"name":"Trit","line":5},{"name":"PackedTrit","line":12},{"name":"TernaryWord","line":17},{"name":"RegisterFile","line":22},{"name":"Memory","line":27},{"name":"TrinaryCRC","line":33},{"name":"RegisterFile","line":39},{"name":"RegisterFile","line":48},{"name":"RegisterFile","line":59},{"name":"Memory","line":67},{"name":"Memory","line":75},{"name":"Memory","line":90},{"name":"pack_trit","line":102},{"name":"unpack_trit","line":118},{"name":"trit_to_int","line":128},{"name":"int_to_trit","line":137},{"name":"trit_add","line":144},{"name":"trit_mul","line":157},{"name":"balanced_ternary_to_decimal","line":164},{"name":"decimal_to_balanced_ternary","line":177},{"name":"trit_not","line":196},{"name":"vsa_bind","line":205},{"name":"vsa_bundle","line":217},{"name":"trit_similarity","line":249},{"name":"TrinaryCRC","line":265},{"name":"TrinaryCRC","line":273},{"name":"TrinaryCRC","line":288},{"name":"CPU","line":293},{"name":"CPU","line":301},{"name":"CPU","line":311},{"name":"CPU","line":333},{"name":"PHI","line":345},{"name":"PHI_INV","line":346},{"name":"PHI_SQ","line":347},{"name":"TRINITY","line":348},{"name":"verify_trinity_identity","line":351},{"name":"G_SACRED","line":358},{"name":"OMEGA_LAMBDA","line":361},{"name":"GAMMA_LQG","line":364},{"name":"CONSCIOUSNESS_THRESHOLD","line":367},{"name":"is_conscious","line":370},{"name":"time_dilation_factor","line":376},{"name":"fib_phi","line":383}],"imports":[],"terms":["fpga","compiler","runtime","trit","packed","ternary","word","register","memory","trinary","crc","pack","unpack","int","mul","balanced","decimal","vsa","bind","bundle","similarity","cpu","phi","inv","verify","identity","sacred","omega","lambda","gamma","lqg","consciousness","threshold","conscious","time","dilation","factor","fib"]},{"id":"8c42f30c24a45be46828ef019aea207d5b03cb44f8600434f3b3a60c8f128cbb","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf256.t27","health":"ok","module":"triformat_tnf256"}],"description":"tnf256.t27 -- TNF256: Ternary Network Float, 256-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","symbols":[{"name":"SIGN_BITS","line":20},{"name":"EXP_TRITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_OFFSET","line":23},{"name":"OFFSET_MAX","line":24},{"name":"exp_offset","line":28},{"name":"is_finite","line":32},{"name":"exp_values","line":36}],"imports":[{"name":"base::types","line":18}],"terms":["numeric","tnf256","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"8c683823554ee75c69b4dd27468eb819bd8f7ea003e91cf216b80be03dca13a6","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-run-tests.t27","health":"ok","module":"skill_trinity_run_tests"}],"description":"specs/skills/trinity-run-tests.t27 -- skill trinity/run-tests Source of truth for the skill card on t27.ai (#/skills?skill=trinity/run-tests). The skill body lives in gHashTag/trinity at .claude/skills/run-tests/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/run-tests/SKILL.md, sha256 7ead75ab36b8...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"8d379f63dde398e22375d6ab17f133e701bca3acb3d707b3208feba3fc7882c5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/batch_runner.t27","health":"ok","module":"BatchRunner"}],"description":"t27/specs/","symbols":[{"name":"CompileStatus","line":13},{"name":"FilterMode","line":17},{"name":"PipelineResult","line":21},{"name":"BatchConfig","line":29},{"name":"BatchReport","line":37},{"name":"FailureEntry","line":48},{"name":"ThreadSafeResults","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","batch","runner","compile","status","filter","mode","config","report","failure","entry","thread","safe","results"]},{"id":"8d3bf841fb17bd564941055b1608bcc4363595ccfb11d79c9116f0024a4328a3","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/native.queen-app.t27","health":"ok","module":"trinity_capability_native_queen_app"}],"description":"specs/trinity/capabilities/native.queen-app.t27 -- capability trinity/native.queen-app: The native Queen application (apps/queen, Swift package Trinity.app) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","native","queen","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0009_two_clauses_one_line.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","two","clauses","one"]},{"id":"8d6628538bf727e99f5c131624d8cfb6867810bf4d763eb9f681cf867699a591","sources":[{"repo":"ghashtag/t27","path":"specs/ar/restraint.t27","health":"warn","module":null}],"description":"spec: Restraint Bounded rationality and restraint mechanisms for neuro-symbolic reasoning","symbols":[{"name":"RestraintType","line":9},{"name":"RestraintConfig","line":19},{"name":"RestraintResult","line":26},{"name":"MAX_UNKNOWN_RATIO","line":34},{"name":"MIN_CONFIDENCE","line":37},{"name":"COMPLEXITY_PENALTY_PER_STEP","line":40},{"name":"default_config","line":43},{"name":"apply_restraint","line":52},{"name":"unknown_to_false","line":73},{"name":"bounded_uncertainty","line":92},{"name":"confidence_threshold","line":116},{"name":"temporal_decay","line":130},{"name":"complexity_penalty","line":154},{"name":"toxicity_block","line":176},{"name":"apply_to_list","line":195},{"name":"validate_config","line":207},{"name":"unknown_ratio","line":215},{"name":"exceeds_unknown_threshold","line":231}],"imports":[{"name":"base::types","line":5}],"terms":["restraint","config","max","unknown","ratio","min","confidence","complexity","penalty","per","step","default","apply","bounded","uncertainty","threshold","temporal","decay","toxicity","block","list","validate","exceeds"]},{"id":"8d982321638e3fbde1a0a9ac40ad051614868d399025685f5b4d580ec86a1656","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/quantum.t27","health":"ok","module":"tool_trinity_tri_quantum"}],"description":"specs/tools/trinity/tri/quantum.t27 -- tool gHashTag/trinity:tri/quantum, the `tri quantum` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/quantum`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["quantum","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"8db0866dc43faf34aef111565007cdcdb66dd1d6dea46e8f7c7ab2ec97cdf13e","sources":[{"repo":"ghashtag/t27","path":"specs/functions/reels-ai-callback.t27","health":"ok","module":"fn_reels_ai_callback"}],"description":"specs/functions/reels-ai-callback.t27 -- function reels-ai-callback (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-ai-callback). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/ai-reels-callback.ts#L158 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","reels","callback","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/mac.t27","health":"warn","module":"ZeroDSP_MAC"}],"description":"t27/specs/fpga/mac.t27 ZeroDSP FPGA Multiply-Accumulate Specification Ternary MAC operations for FPGA implementation","symbols":[{"name":"MAC_WIDTH","line":18},{"name":"MAC_ACC_BITS","line":19},{"name":"NUM_MAC_UNITS","line":20},{"name":"PIPELINE_STAGES","line":21},{"name":"OP_MAC_MUL","line":24},{"name":"OP_MAC_MAC","line":25},{"name":"OP_MAC_MACC","line":26},{"name":"OP_MAC_DOT","line":27},{"name":"STATUS_READY","line":30},{"name":"STATUS_BUSY","line":31},{"name":"STATUS_DONE","line":32},{"name":"MAC_LUT","line":46},{"name":"TernaryWord","line":67},{"name":"MACUnit","line":71},{"name":"extract_trit","line":97},{"name":"bit_pos","line":98},{"name":"mask","line":99},{"name":"encoded","line":100},{"name":"pack_trit","line":113},{"name":"bit_pos","line":114},{"name":"encoded","line":115},{"name":"mac_multiply","line":128},{"name":"a_trit","line":139},{"name":"b_trit","line":140},{"name":"a_idx","line":143},{"name":"b_idx","line":144},{"name":"lut_idx","line":145},{"name":"product","line":147},{"name":"mac_cycle","line":166},{"name":"a_trit","line":178},{"name":"b_trit","line":179},{"name":"product","line":180},{"name":"mac_dot_product","line":195},{"name":"mac_matrix_vector","line":229},{"name":"unit","line":240},{"name":"mat_idx","line":248},{"name":"mac_acc_read","line":269},{"name":"mac_status_read","line":276},{"name":"mac_status_write","line":285},{"name":"mac_reset","line":295},{"name":"mac_reset_all","line":307},{"name":"mac_get_accumulator","line":318},{"name":"mac_set_accumulator","line":327},{"name":"mac_parallel_multiply","line":347},{"name":"unit","line":356}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"isa::registers","line":11}],"terms":["fpga","mac","zero","dsp","width","acc","bits","num","units","pipeline","stages","mul","macc","dot","status","ready","busy","done","lut","ternary","word","macunit","extract","trit","bit","pos","mask","encoded","pack","multiply","idx","product","cycle","matrix","vector","unit","mat","read","write","reset","get","accumulator","set","parallel"]},{"id":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf_competitive.t27","health":"ok","module":"GFCompetitive"}],"description":"t27/specs/numeric/gf_competitive.t27 GF Competitive Analysis Specification Ring 028 — Proving GoldenFloat is not random 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"PHI","line":10},{"name":"TRINITY","line":11},{"name":"TOLERANCE_1E4","line":12},{"name":"TOLERANCE_1E3","line":13},{"name":"gf16_phi_relative_error","line":16},{"name":"phi_identity_check","line":24},{"name":"trinity_identity_check","line":31},{"name":"roundtrip_error","line":38},{"name":"accumulation_check","line":46}],"imports":[{"name":"base::types","line":8}],"terms":["numeric","competitive","gfcompetitive","phi","tolerance","1e4","1e3","gf16","relative","identity","roundtrip","accumulation"]},{"id":"8e07fb0816cb06ab42ba9af99164200de1bd2d929f3e16052c946d70dcb3ddc2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/arrow_time.t27","health":"ok","module":"ArrowTime"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","arrow","time"]},{"id":"8e5ba5dfd346196b718e8abeeb200686d3721831b8a376938316f5f121955dec","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/args.t27","health":"ok","module":"TriArgs"}],"description":"t27/specs/","symbols":[{"name":"Arg","line":13},{"name":"ArgValue","line":19},{"name":"ParseResult","line":24},{"name":"parse","line":35},{"name":"has_flag","line":40},{"name":"get_value","line":45},{"name":"get_positional","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","args","arg","parse","flag","get","positional"]},{"id":"8e663bc28d1cce0a1eb38bc92ed95500f478f35c6a97cf1a0e07b062e284673e","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/seq2seq.t27","health":"ok","module":"Seq2seq"}],"description":"t27/specs/","symbols":[{"name":"Seq2SeqConfig","line":13},{"name":"Seq2SeqState","line":19},{"name":"encode","line":30},{"name":"decode","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","seq2seq","config","state","encode","decode"]},{"id":"8e96c0001588aee91e7dc5aca1d68be9580b7834c595a78c7d62bfec83868b4b","sources":[{"repo":"ghashtag/t27","path":"specs/agents/u.t27","health":"ok","module":"agent_u"}],"description":"specs/agents/u.t27 -- agent t27/U, letter U of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/U). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent U - Upsilon (Universe)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sources":[{"repo":"ghashtag/t27","path":"specs/nn/hslm.t27","health":"warn","module":"HSLM"}],"description":"t27/specs/nn/hslm.t27 HSLM (Hierarchical Sacred Learning Model) Specification Ternary neural network with sacred constants and VSA attention","symbols":[{"name":"NUM_LAYERS","line":21},{"name":"NUM_HEADS","line":22},{"name":"HEAD_DIM","line":23},{"name":"EMBED_DIM","line":24},{"name":"FF_DIM","line":25},{"name":"CONTEXT_LEN","line":26},{"name":"VSA_DIM","line":27},{"name":"PHASE_NORM","line":30},{"name":"PHASE_ATTN","line":31},{"name":"PHASE_FFN","line":32},{"name":"PHASE_RESIDUAL","line":33},{"name":"ACT_RELU","line":36},{"name":"ACT_GELU","line":37},{"name":"ACT_SWISH","line":38},{"name":"ACT_TERNARY","line":39},{"name":"PHASE_FORWARD","line":42},{"name":"PHASE_BACKWARD","line":43},{"name":"PHASE_UPDATE","line":44},{"name":"LayerBuffers","line":54},{"name":"AttentionCache","line":62},{"name":"LayerWeights","line":68},{"name":"HSLMWeights","line":80},{"name":"hslm_forward","line":90},{"name":"layer_weights","line":108},{"name":"layer_cache","line":109},{"name":"hslm_layer_forward","line":134},{"name":"rms_norm_forward","line":201},{"name":"mean","line":212},{"name":"rms","line":213},{"name":"ffn_forward","line":230},{"name":"ternary_matmul","line":243},{"name":"weight_val","line":257},{"name":"gelu_activation","line":276},{"name":"sqrt_2_over_pi","line":277},{"name":"val","line":281},{"name":"cube","line":282},{"name":"inner","line":283},{"name":"tanh_val","line":284},{"name":"hslm_backward","line":296},{"name":"zero_weight_gradients","line":317},{"name":"hslm_layer_backward","line":336},{"name":"ffn_backward","line":347},{"name":"ffn_backward_w2","line":360},{"name":"gelu_backward","line":368},{"name":"ffn_backward_w1","line":375},{"name":"attention_backward","line":382},{"name":"hslm_phase","line":393},{"name":"get_hslm_mode","line":405}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"math::constants","line":11},{"name":"math::sacred_physics","line":12},{"name":"numeric::gf16","line":13},{"name":"nn::attention","line":14}],"terms":["hslm","num","layers","heads","head","dim","embed","len","vsa","phase","norm","attn","ffn","residual","act","relu","gelu","swish","ternary","forward","backward","layer","buffers","attention","cache","weights","hslmweights","rms","mean","matmul","weight","val","activation","sqrt","over","cube","inner","tanh","zero","gradients","get","mode"]},{"id":"8eb008b250b93d3ec404e36be81a8e02c58a0495ba6f5e370e6f3f8361761644","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_log2.t27","health":"warn","module":"GftLog2"}],"description":"","symbols":[{"name":"asr9","line":14},{"name":"log2_frac","line":19},{"name":"encode","line":30},{"name":"on_comb","line":74}],"imports":[],"terms":["ternary","gft","log2","asr9","frac","encode","comb"]},{"id":"8eba8906c7b3363610d70611c47190e3a0c577758540669ca80a7c6e383c64da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/polynomial.t27","health":"ok","module":"TriPolynomial"}],"description":"t27/specs/","symbols":[{"name":"Polynomial","line":13},{"name":"init","line":23},{"name":"eval","line":28},{"name":"add","line":33},{"name":"multiply","line":38},{"name":"derivative","line":43},{"name":"deinit","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","polynomial","init","eval","multiply","derivative","deinit"]},{"id":"8efdff73f0337345bcb6950efb5c5d5b83e0db6a6d86cb2abbca629d5fef1bba","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/cap_test.t27","health":"ok","module":"CapTest"}],"description":"","symbols":[{"name":"outer","line":3},{"name":"scale","line":4},{"name":"inner","line":5}],"imports":[],"terms":["bootstrap","goldring","cap","outer","scale","inner"]},{"id":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sources":[{"repo":"ghashtag/t27","path":"specs/pins/ir.t27","health":"warn","module":"PinsIR"}],"description":"t27/specs/pins/ir.t27 Pins Intermediate Representation (IR) Models FPGA pin assignments, I/O standards, clock constraints","symbols":[{"name":"PinLocation","line":11},{"name":"IoStandard","line":17},{"name":"SignalReference","line":24},{"name":"Binding","line":31},{"name":"ClockDef","line":40},{"name":"Design","line":48},{"name":"LVCMOS33","line":57},{"name":"make_input_signal","line":64},{"name":"make_output_signal","line":73},{"name":"make_indexed_signal","line":82},{"name":"make_location","line":91},{"name":"make_binding","line":99},{"name":"make_clock","line":114},{"name":"empty_design","line":124},{"name":"add_binding","line":148},{"name":"add_clock","line":157},{"name":"has_pin_conflict","line":166},{"name":"has_port_conflict","line":183},{"name":"clock_bound","line":202},{"name":"all_clock_ports_bound","line":213},{"name":"binding_count","line":226},{"name":"clock_count","line":230},{"name":"signal_direction","line":234},{"name":"is_indexed","line":238},{"name":"format_port_name","line":242}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9}],"terms":["pins","pin","location","standard","signal","reference","binding","clock","def","design","lvcmos33","make","indexed","empty","conflict","port","bound","ports","count","direction","format"]},{"id":"8f93c36e4a69d1c698d8f30be012f20565fb849338a44d5418782721c13ea066","sources":[{"repo":"ghashtag/t27","path":"specs/agents/ti.t27","health":"ok","module":"agent_ti"}],"description":"specs/agents/ti.t27 -- agent t27/TI, letter TI of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/TI). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent 27th - Ti (Security)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":47}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"8fc1e6d391ef81cb63d49bc1d38dc95d6a20bc819fd8da94b111dac89e57990a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/tuple.t27","health":"ok","module":"TriTuple"}],"description":"t27/specs/","symbols":[{"name":"Tuple2","line":13},{"name":"Tuple3","line":18},{"name":"pair","line":29},{"name":"triple","line":34},{"name":"fst","line":39},{"name":"snd","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","tuple","tuple2","tuple3","pair","triple","fst","snd"]},{"id":"8ff28a2ffa2c8d1ef05a013691f905a41e7cae6dfd3bcf7b818ac823509fe060","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/fifo_tb.t27","health":"ok","module":"FIFO_Testbench"}],"description":"t27/specs/fpga/testbench/fifo_tb.t27 FIFO Testbench Specification Tests sync/async FIFO operations, flags, overflow/underflow","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"DATA_WIDTH","line":12},{"name":"FIFO_DEPTH","line":13},{"name":"tick","line":30},{"name":"reset","line":35},{"name":"write_word","line":43},{"name":"read_word","line":54},{"name":"fill_fifo","line":64},{"name":"drain_fifo","line":73},{"name":"on_comb","line":176}],"imports":[{"name":"fpga::fifo::Fifo","line":8}],"terms":["fpga","testbench","fifo","clk","period","sim","timeout","data","width","depth","tick","reset","write","word","read","fill","drain","comb"]},{"id":"90181cc2b6306945600f0e2a0202eca1788884a96bce5db64d16d820cf62ade5","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/archive.legacy.t27","health":"ok","module":"trinity_capability_archive_legacy"}],"description":"specs/trinity/capabilities/archive.legacy.t27 -- capability trinity/archive.legacy: archive/, experiments/, lab/, research/ and tapes/: retained history and demos One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","archive","legacy","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"905308ea72644feb0e72d64a5d6c6edaed7e0d8e7182e7d52d8157f9951e756a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/jumps.t27","health":"ok","module":"tool_tri_jumps"}],"description":"specs/tools/tri/jumps.t27 -- tool tri/jumps, the `tri jumps` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/jumps). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["jumps","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"90a98d73cbabf43baef032e5a8522a1e6aaf22c3ad5e89bcb4a1f4389d9698d3","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/vsa.t27","health":"ok","module":"tool_trinity_tri_vsa"}],"description":"specs/tools/trinity/tri/vsa.t27 -- tool gHashTag/trinity:tri/vsa, the `tri vsa` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/vsa`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["vsa","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"90c8b8aaaca66c08288a2e82386a5c48c79fd208f59bea2df1a3e556f575ad01","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf128.t27","health":"ok","module":"triformat-gf128"}],"description":"gf128.t27 — GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 28 exponent + 99 mantissa Bit layout: [S(1) E(28) M(99)] = [127:127][126:99][98:0] Extended range format for high-precision scientific computing","symbols":[{"name":"SIGN_SHIFT","line":14},{"name":"EXP_SHIFT","line":15},{"name":"MANT_SHIFT","line":16},{"name":"SIGN_MASK_HI","line":22},{"name":"SIGN_MASK_LO","line":23},{"name":"EXP_BITS","line":25},{"name":"MANT_BITS","line":26},{"name":"SIGN_BITS","line":27},{"name":"EXP_MAX","line":29},{"name":"EXP_MIN","line":30},{"name":"BIAS","line":32},{"name":"SPECIAL_EXP","line":33},{"name":"PHI_BIAS","line":37},{"name":"GF128","line":44},{"name":"GF128Parts","line":47},{"name":"gf128_to_parts","line":58},{"name":"gf128_from_parts","line":67},{"name":"gf128_extract_sign","line":78},{"name":"parts","line":79},{"name":"bit","line":80},{"name":"gf128_extract_exponent","line":87},{"name":"parts","line":88},{"name":"gf128_extract_mantissa","line":97},{"name":"parts","line":98},{"name":"hi_mant","line":101},{"name":"gf128_from_components","line":111},{"name":"sign_bit","line":112},{"name":"clamped_exp","line":113},{"name":"clamped_mant","line":114},{"name":"hi_exp","line":117},{"name":"hi_mant","line":119},{"name":"lo_mant","line":120},{"name":"hi","line":122},{"name":"lo","line":123},{"name":"GF128_ZERO_POS","line":132},{"name":"GF128_ZERO_NEG","line":133},{"name":"GF128_INF_POS","line":134},{"name":"GF128_INF_NEG","line":135},{"name":"GF128_NAN","line":136},{"name":"gf128_is_zero","line":140},{"name":"gf128_is_special","line":146},{"name":"gf128_is_inf","line":152},{"name":"gf128_is_nan","line":158},{"name":"gf128_encode_f64","line":168},{"name":"sign","line":185},{"name":"abs_value","line":186},{"name":"f64_bits","line":189},{"name":"mant","line":202},{"name":"gf128_decode_f64","line":210},{"name":"sign","line":227},{"name":"exp","line":228},{"name":"mant","line":229},{"name":"mant_f64","line":233},{"name":"bias_adjusted","line":234},{"name":"value","line":240},{"name":"gf128_encode_f128","line":246},{"name":"value_f64","line":249},{"name":"gf128_decode_f128","line":255},{"name":"value_f64","line":256},{"name":"gf128_add","line":265},{"name":"gf128_sub","line":270},{"name":"gf128_mul","line":275},{"name":"gf128_div","line":280},{"name":"fb","line":281},{"name":"fa","line":283},{"name":"gf128_abs","line":294},{"name":"gf128_neg","line":299},{"name":"gf128_is_equal","line":304},{"name":"gf128_is_greater","line":315},{"name":"sign_a","line":319},{"name":"sign_b","line":320},{"name":"gf128_max","line":331},{"name":"gf128_min","line":336},{"name":"gf128_clamp","line":341}],"imports":[],"terms":["euler","numeric","gf128","triformat","sign","shift","exp","mant","mask","bits","max","min","bias","special","phi","gf128parts","parts","extract","bit","exponent","mantissa","components","clamped","zero","pos","neg","inf","nan","encode","f64","abs","decode","adjusted","f128","sub","mul","div","equal","greater","clamp"]},{"id":"90cb626e0465988603da5013588d2d56b237a09acccf0184d6050653ffef9407","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/embedding_layer.t27","health":"ok","module":"Embedding"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_D_MODEL","line":13},{"name":"EmbeddingConfig","line":19},{"name":"EmbeddingWeights","line":24},{"name":"forward","line":33},{"name":"init","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","embedding","layer","default","model","config","weights","forward","init"]},{"id":"90ea646b1c7dd08e161b4da050eef9fc3f35e864726f9e4ada54c09cfa29153f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/deque.t27","health":"ok","module":"TriDeque"}],"description":"t27/specs/","symbols":[{"name":"Deque","line":13},{"name":"init","line":26},{"name":"push_front","line":31},{"name":"push_back","line":36},{"name":"pop_front","line":41},{"name":"pop_back","line":46},{"name":"deinit","line":51}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","deque","init","push","front","back","pop","deinit"]},{"id":"90fff63e83a250434c62c3918a91b8a53f7d72a93469ecb589470b1b1bee1c12","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-model-start.t27","health":"ok","module":"fn_training_model_start"}],"description":"specs/functions/training-model-start.t27 -- function training-model-start (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-start). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateModelTrainingFunction.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","training","model","start","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"91048d7c7ae27d96b52540d240f169968c0c77c769bf6eeddad35022b8c15fba","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/adapters_declared.t27","health":"ok","module":"trinity_matrix_adapters_declared"}],"description":"trinity_matrix/adapters_declared.t27 -- feature declared adapters: an I/O boundary stated as constants and a pure verdict function over a fixture transcript; the real transport stays outside the spec (S07, S11).","symbols":[{"name":"ADAPTER","line":6},{"name":"STATUS_OK","line":7},{"name":"STATUS_RETRY","line":8},{"name":"STATUS_FAIL","line":9},{"name":"MAX_RETRIES","line":10},{"name":"verdict","line":12}],"imports":[],"terms":["bootstrap","fixtures","matrix","adapters","declared","adapter","status","retry","fail","max","retries","verdict"]},{"id":"9114a4bdfb275175f60c5a111bdc07bbfcbb62c55a0871176b8f93e3436bdd9f","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27","health":"ok","module":"cron_999_multibots_telegraf_notificationHandler_L318"}],"description":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27 -- cron timer/999-multibots-telegraf/notificationHandler-L318 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/notificationHandler-L318). The schedule was read from 999-multibots-telegraf:src/handlers/notificationHandler.ts#L318. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"NOTE","line":24},{"name":"ON_FAILURE","line":25},{"name":"CONTROL","line":26}],"imports":[],"terms":["crons","multibots","telegraf","notification","handler","l318","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"911fde186ecfca915f43290f2a98316db08bef4167b499fd8c9d3721346df79f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf12.t27","health":"warn","module":"GF12"}],"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 — 12-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 4 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":30},{"name":"GF12","line":36},{"name":"encode","line":45},{"name":"sign","line":50},{"name":"abs_val","line":51},{"name":"exp_unbiased","line":54},{"name":"exp_biased","line":55},{"name":"exp_clamped","line":58},{"name":"mant","line":61},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp","line":171},{"name":"pow","line":177},{"name":"is_integer","line":193},{"name":"ln_val","line":219},{"name":"ln_approx","line":224},{"name":"t","line":233},{"name":"t2","line":234},{"name":"t3","line":235},{"name":"t5","line":236},{"name":"t7","line":237},{"name":"exp_approx","line":243},{"name":"k","line":255},{"name":"k","line":266},{"name":"floor","line":282}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf12","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/instance.t27","health":"warn","module":"runtime-instance"}],"description":"runtime/instance.t27 — Runtime Instance Specification Instance registration, lookup, lifecycle management","symbols":[{"name":"MAX_INSTANCES","line":20},{"name":"INSTANCE_NAME_LENGTH","line":23},{"name":"LOOKUP_TIMEOUT_MS","line":26},{"name":"InstanceState","line":29},{"name":"InstanceType","line":38},{"name":"TerminationReason","line":46},{"name":"StatusCode","line":55},{"name":"InstanceID","line":68},{"name":"Instance","line":71},{"name":"Registration","line":84},{"name":"LookupResult","line":94},{"name":"ListResult","line":100},{"name":"StatusResponse","line":106},{"name":"Termination","line":114},{"name":"TerminationResult","line":122},{"name":"InstanceStats","line":130},{"name":"id_generate","line":143},{"name":"timestamp","line":145},{"name":"bytes","line":148},{"name":"registration_create","line":157},{"name":"instance_create","line":169},{"name":"agent_instance","line":184},{"name":"server_instance","line":196},{"name":"background_instance","line":208},{"name":"worker_instance","line":220},{"name":"register","line":232},{"name":"unregister","line":238},{"name":"lookup","line":243},{"name":"lookup_by_name","line":252},{"name":"list_all","line":261},{"name":"list_by_type","line":270},{"name":"list_active","line":279},{"name":"terminate","line":288},{"name":"terminate_with_timeout","line":300},{"name":"force_kill","line":316},{"name":"get_status","line":328},{"name":"uptime","line":329},{"name":"duration","line":340},{"name":"is_active","line":345},{"name":"is_terminated","line":350},{"name":"is_suspended","line":355},{"name":"count_all","line":360},{"name":"count_active","line":365},{"name":"status_response_create","line":370},{"name":"int_to_bytes","line":380},{"name":"get_timestamp_ms","line":395},{"name":"append_instance","line":401},{"name":"append_instance_slice","line":411},{"name":"concat_instances","line":418},{"name":"concat_instances_string","line":428},{"name":"append_byte_instances","line":437},{"name":"id","line":448},{"name":"reg","line":453},{"name":"id","line":458},{"name":"inst","line":459},{"name":"inst","line":464},{"name":"inst","line":469},{"name":"inst","line":474},{"name":"result","line":481},{"name":"result","line":487},{"name":"result","line":493},{"name":"status","line":500},{"name":"uptime","line":519},{"name":"resp","line":524},{"name":"list","line":529}],"imports":[{"name":"std","line":12}],"terms":["runtime","instance","max","instances","length","lookup","timeout","state","termination","reason","status","registration","list","response","stats","generate","timestamp","bytes","create","background","worker","register","unregister","active","terminate","force","kill","get","uptime","duration","terminated","suspended","count","int","append","slice","concat","byte","reg","inst","resp"]},{"id":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","sources":[{"repo":"ghashtag/t27","path":"specs/ui/viewport.t27","health":"ok","module":"ui_viewport"}],"description":"specs/ui/viewport.t27 -- the one viewport contract of the t27.ai site (breakpoints, touch targets, QA matrix) Source of truth for how the site's explorers (#/specs, #/skills, #/crons, #/agents, #/tools, #/functions) lay themselves out at a given viewport. The site (gHashTag/trinity, apps/website) vendors this file byte-identical under public/t27/files/specs/ui/ and generates src/lib/viewport.generated.ts and src/styles/viewport.generated.css from it with the real compiler (scripts/viewport-from-spec.mjs); nothing below is parsed with a regex and no","symbols":[{"name":"KIND","line":32},{"name":"ID","line":33},{"name":"NAME","line":34},{"name":"GENERATED","line":36},{"name":"TIERS","line":44},{"name":"PHONE_MAX","line":45},{"name":"TABLET_MAX","line":46},{"name":"DESKTOP_MAX","line":47},{"name":"COARSE_POINTER_QUERY","line":49},{"name":"HEADER_CHROME_MAX","line":53},{"name":"PHONE_PANES","line":60},{"name":"TABLET_PANES","line":61},{"name":"DESKTOP_PANES","line":62},{"name":"ONE_SCROLLER_PER_PANE","line":64},{"name":"DOCUMENT_SCROLLS","line":65},{"name":"TOUCH_TARGET_MIN_PX","line":69},{"name":"BACK_CONTROL_MIN_PX","line":71},{"name":"VIEWPORTS","line":76},{"name":"VIEWPORT_WIDTHS","line":77},{"name":"VIEWPORT_HEIGHTS","line":78},{"name":"VIEWPORT_TIERS","line":80},{"name":"DESKTOP_REFERENCE_WIDTH","line":82},{"name":"RAIL_TILES","line":99},{"name":"RAIL_TILE_W_COMPACT","line":100},{"name":"RAIL_TILE_GAP_COMPACT","line":101},{"name":"RAIL_TILE_H_COMPACT","line":102},{"name":"RAIL_CLIENT_W_PHONE","line":103},{"name":"RAIL_TILE_H_COLUMN","line":104},{"name":"RAIL_TILE_GAP_COLUMN","line":105},{"name":"RAIL_CHROME_H","line":106},{"name":"RAIL_ROW_H_COLUMN","line":108},{"name":"RAIL_ROW_W_COMPACT","line":109},{"name":"RAIL_MIN_VISIBLE","line":111},{"name":"RAIL_CAPACITY_BY_HEIGHT","line":113}],"imports":[],"terms":["viewport","kind","generated","tiers","phone","max","tablet","desktop","coarse","pointer","query","header","chrome","panes","one","scroller","per","pane","document","scrolls","touch","target","min","back","control","viewports","widths","heights","reference","width","rail","tiles","tile","compact","gap","client","column","row","visible","capacity","height"]},{"id":"925172c39fe861f4fa2bb6c2f9bd51f12ee863027e136e18e5f5db5a60b8fdaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/physics/gamma_conjecture.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","physics","gamma","conjecture"]},{"id":"92611173f8a4905896c3b53d26dfdca357a97569f1ea647b4c482e0b36f25861","sources":[{"repo":"ghashtag/trios","path":"trios/policies/precision_policy.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["policies","precision","policy"]},{"id":"92643bce03950f663ae5071666c57c6d76eae0aeabde17acf65d5480f27349a9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_settle.t27","health":"ok","module":"TriSettle"}],"description":"TRI-NET DePIN settlement aggregator -- turns per-epoch Proof-of-Relay receipts (from tri_depin) into a node's $TRI reward for a payout round. A round is a set of epochs; each node's verified total_bytes are summed, and the round's token pool is split proportionally to metered bytes. Pure arithmetic, verifiable, so a settlement contract (or any auditor) can recompute every payout.","symbols":[{"name":"PPM","line":10},{"name":"SNR_FLOOR","line":11},{"name":"SNR_CEIL","line":12},{"name":"round_add","line":16},{"name":"reward_share_ppm","line":27},{"name":"reward_units","line":39},{"name":"weighted_contrib","line":111},{"name":"round_add_weighted","line":116},{"name":"reward_weighted","line":123},{"name":"snr_to_quality","line":190}],"imports":[{"name":"base::types","line":8}],"terms":["net","settle","ppm","snr","floor","ceil","round","reward","share","units","weighted","contrib","quality"]},{"id":"92c1db0cd818f2f40e8fda52e72083334421f2a3689b78e60330fa4f52f33bbf","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/tri27.programs.t27","health":"ok","module":"trinity_capability_tri27_programs"}],"description":"specs/trinity/capabilities/tri27.programs.t27 -- capability trinity/tri27.programs: Ten .t27 programs under src/tri27 (sha256, matmul, mlp_forward, vsa_bind, vsa_bu One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","tri27","programs","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/phi_ratio.t27","health":"ok","module":"PhiRatio"}],"description":"t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)","symbols":[{"name":"PHI_RATIO_TARGET","line":17},{"name":"PHI_SQ","line":21},{"name":"PhiSplitResult","line":40},{"name":"phi_split","line":47},{"name":"available","line":48},{"name":"phi_sq","line":49},{"name":"exp_raw","line":52},{"name":"exp_bits","line":53},{"name":"mant_bits","line":56},{"name":"ratio","line":58},{"name":"phi_dist","line":59},{"name":"FormatComparison","line":73},{"name":"verify_phi_split","line":84},{"name":"golden_self_similarity_proof","line":173},{"name":"optimal_rounding_proof","line":193},{"name":"sacred_connection","line":217},{"name":"compute_phi_distance","line":225},{"name":"ratio","line":226},{"name":"is_phi_optimal","line":230},{"name":"recommend_format","line":234},{"name":"round","line":242},{"name":"abs","line":260},{"name":"pow","line":267},{"name":"ln_approx","line":328},{"name":"exp_approx","line":347},{"name":"floor","line":377}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["numeric","phi","ratio","target","split","available","exp","raw","bits","mant","dist","format","comparison","verify","golden","self","similarity","proof","optimal","rounding","sacred","connection","compute","distance","recommend","round","abs","pow","approx","floor"]},{"id":"93548d18109d7be76e3c43ea298c9db0a335044e2bbb820d23606859c9939bdb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/notebooklm.t27","health":"ok","module":"tool_mcp_notebooklm"}],"description":"specs/tools/mcp/notebooklm.t27 -- tool mcp/notebooklm, MCP server \"notebooklm\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/notebooklm). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","notebooklm","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/reports.t27","health":"warn","module":"TrinityMemoryReports"}],"description":"Native HTML report rendering. Every data value is escaped before insertion; HTML/CSS below are presentation templates, not embedded domain algorithms.","symbols":[{"name":"tm_report_escape","line":4},{"name":"tm_report_field","line":17},{"name":"tm_report_string","line":22},{"name":"tm_report_integer","line":28},{"name":"tm_report_ms","line":34},{"name":"tm_report_scores","line":43},{"name":"tm_report_edge_body","line":52},{"name":"tm_report_edge_html","line":115},{"name":"tm_report_number","line":127},{"name":"tm_report_validate_benchmark","line":137},{"name":"tm_report_script_json","line":167},{"name":"tm_report_benchmark_part0","line":181},{"name":"tm_report_benchmark_part1","line":237},{"name":"tm_report_benchmark_part2","line":335},{"name":"tm_report_benchmark_html","line":350}],"imports":[],"terms":["dmitrii","memory","reports","report","escape","field","integer","scores","edge","html","validate","benchmark","script","json","part0","part1","part2"]},{"id":"944ecca9a2256abe010c7907749d6d2ae172c42d67c2e6cb2da6693ad19d6386","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/node.trinity-node.t27","health":"ok","module":"trinity_capability_node_trinity_node"}],"description":"specs/trinity/capabilities/node.trinity-node.t27 -- capability trinity/node.trinity-node: trinity-node: the storage and network node (src/trinity_node, src/depin) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","node","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"9487c912aba6ffdd9b412b4873cea41baeec4e1a9ebf5049e38e03c3b9ef559a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_libtakum_crossval.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","takum","libtakum","crossval"]},{"id":"948f91989383d6a7e3a148da37c9671bde69f5599fa95abf1c9704922108f3d3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_challenge.t27","health":"ok","module":"TriChallenge"}],"description":"TRI-NET DePIN challenge game: decentralized dispute resolution, so no TRUSTED settlement is needed to catch a lying node. Any node (the challenger) may dispute another node's (the defender's) claimed receipt seal by posting a bond and its own independently computed seal. The dispute is resolved by ANYONE re-metering the same relayed stream to get the truth seal; the party whose seal disagrees with the truth LOSES and forfeits its bond to the winner. This makes challenging a liar profitable","symbols":[{"name":"DEFENDER_HONEST","line":13},{"name":"DEFENDER_LIED","line":14},{"name":"is_valid_challenge","line":17},{"name":"resolve","line":24},{"name":"defender_bond_after","line":35},{"name":"challenger_bond_after","line":43},{"name":"RESOLVE_TIMEOUT","line":106},{"name":"challenge_admissible","line":115},{"name":"dispute_expired","line":123},{"name":"expired_verdict","line":133},{"name":"CH_GFT16_ET","line":144},{"name":"CH_BASE_WINDOW","line":145},{"name":"CH_WINDOW_PER_TRIT","line":146},{"name":"challenge_window_for_rung","line":148},{"name":"challenge_admissible_rung","line":156},{"name":"VERDICT_NONE","line":169},{"name":"witness_majority","line":171},{"name":"witness_verdict","line":178},{"name":"witness_is_majority","line":211},{"name":"majority_count_3","line":215},{"name":"if_seal","line":222},{"name":"minority_pot_3","line":231},{"name":"witness_payout","line":238},{"name":"MAX_OPEN_DISPUTES","line":275},{"name":"CH_BPS_UNIT","line":276},{"name":"dispute_slots_ok","line":278},{"name":"risk_after_open","line":283},{"name":"risk_after_close","line":293},{"name":"dispute_required_bond","line":302},{"name":"may_open_dispute","line":309},{"name":"CH_BOND_BPS_PER_TRIT","line":321},{"name":"dispute_rung_min_bps","line":323},{"name":"may_open_dispute_rung","line":331}],"imports":[{"name":"base::types","line":11}],"terms":["net","challenge","defender","honest","lied","valid","resolve","bond","challenger","timeout","admissible","dispute","expired","verdict","gft16","base","window","per","trit","rung","witness","majority","count","seal","minority","pot","payout","max","open","disputes","bps","unit","slots","risk","close","required","may","min"]},{"id":"949befe08d74fbddd4b1f79be2e36be09900c171edf1361e97ebf4973c682edb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/boyer_moore.t27","health":"ok","module":"TriBoyerMoore"}],"description":"t27/specs/","symbols":[{"name":"BMBadChar","line":13},{"name":"build_bad_char","line":23},{"name":"search","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","boyer","moore","bmbad","char","build","bad"]},{"id":"94a9c3f27d49d51c2cb60355eaaaa9a9f296515a6974afb7c629d7ff00681f54","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/conscious.t27","health":"ok","module":"tool_trinity_tri_conscious"}],"description":"specs/tools/trinity/tri/conscious.t27 -- tool gHashTag/trinity:tri/conscious, the `tri conscious` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/conscious`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["conscious","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"951d3d8a6dd0c1c6c62a303c660a45205624bf2f558fd090b34fe5b45b9f1501","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-tech-tree.t27","health":"ok","module":"skill_trinity_tech_tree"}],"description":"specs/skills/trinity-tech-tree.t27 -- skill trinity/tech-tree Source of truth for the skill card on t27.ai (#/skills?skill=trinity/tech-tree). The skill body lives in gHashTag/trinity at .claude/skills/tech-tree/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/tech-tree/SKILL.md, sha256 f84c8ea67ab6...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","tech","tree","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"952d5b6c692fb41e95e6d82afce9f6572af50b603809e8302b277864f8008c1d","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/web.docsite.t27","health":"ok","module":"trinity_capability_web_docsite"}],"description":"specs/trinity/capabilities/web.docsite.t27 -- capability trinity/web.docsite: The documentation site under docs/, published with the website by deploy-docs.ym One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","web","docsite","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-client-ownership.t27","health":"ok","module":"automation"}],"description":"specs/automation/crm-client-ownership.t27 -- WHO owns a client profile, and money in the stage the client workspace shows. Closes the two gaps crm-client-workspace.t27 (#3604) left open and that were seen live on 2026-09-13. Host: 999-multibots-telegraf apps/vibee-editor/render -- crm-client-setup-tool.ts (table crm_client_profiles, ensureProfileTable, setupClient, clientProfileFor, tool crm_client_profile), crm-client-workspace-tools.ts (tool crm_clients), crm-touch-tools.ts","symbols":[{"name":"KIND","line":33},{"name":"ID","line":34},{"name":"REPO","line":35},{"name":"VERSION","line":36},{"name":"EXTENDS","line":37},{"name":"TABLE_PROFILES","line":40},{"name":"OWNER_COLUMN","line":41},{"name":"OWNER_IS","line":42},{"name":"UNIQUE_KEY","line":43},{"name":"MIGRATION_IDEMPOTENT","line":44},{"name":"BACKFILL_FROM","line":45},{"name":"UNOWNED_READABLE_BY_ANY_SELLER","line":46},{"name":"SETUP_ALWAYS_WRITES_OWNER","line":47},{"name":"READS_SCOPED_BY_OWNER","line":48},{"name":"PAYMENTS_TABLE","line":51},{"name":"PAYMENT_COUNTS_WHEN","line":52},{"name":"PAYMENTS_SCOPED_TO","line":53},{"name":"STAGE_TOOLS_READING_MONEY","line":54},{"name":"MONEY_BEFORE_TOUCHES","line":55},{"name":"WINBACK_AFTER_QUIET_DAYS","line":56},{"name":"PAID_FLAG_IN_ROWS","line":57},{"name":"MONEY_UNREACHABLE_FALLS_BACK_TO_TOUCHES","line":58},{"name":"SCHEMA_CHECK_TOOL","line":61},{"name":"SCHEMA_CHECK_WRITES","line":62},{"name":"SCHEMA_CHECK_REPORTS","line":63},{"name":"PAYING_CLIENT_SEEN_LIVE","line":66},{"name":"MIGRATION_RAN_ON_PROD","line":67},{"name":"ProfileRow","line":69},{"name":"profile_visible","line":75},{"name":"conflicts","line":80},{"name":"stage_code","line":86},{"name":"paid_known","line":94}],"imports":[],"terms":["automation","crm","client","ownership","kind","extends","table","profiles","owner","column","unique","key","migration","idempotent","backfill","unowned","readable","seller","setup","always","writes","reads","scoped","payments","payment","counts","stage","reading","money","touches","winback","quiet","days","paid","flag","rows","unreachable","falls","back","schema","tool","reports","paying","seen","live","ran","prod","profile","row","visible","conflicts","known"]},{"id":"959e06da2849febdf16205273e4592a5390ce6c4d2be52caf2b7a5b80e3f5a1e","sources":[{"repo":"ghashtag/t27","path":"specs/server/agent-runner.t27","health":"ok","module":"AgentRunner"}],"description":"specs/server/agent-runner.t27 Agent Runner Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"AgentReport","line":14},{"name":"ToolResult","line":29},{"name":"StopReason","line":36},{"name":"AgentState","line":47},{"name":"MAX_TURNS","line":61},{"name":"MAX_TOOLS_CALLED","line":62},{"name":"MAX_FILES_MODIFIED","line":63},{"name":"DEFAULT_TIMEOUT_SECONDS","line":64},{"name":"MAX_TOKEN_SUMMARY_LENGTH","line":65},{"name":"agent_state_init","line":71},{"name":"agent_report_init","line":82},{"name":"track_tool_call","line":98},{"name":"check_task_complete","line":104},{"name":"stop_reason_from_string","line":112},{"name":"stop_reason_to_string","line":125},{"name":"add_tokens","line":142},{"name":"total_tokens","line":149},{"name":"truncate_string","line":157},{"name":"next_turn","line":165},{"name":"should_continue","line":171},{"name":"build_report","line":179}],"imports":[{"name":"base::types","line":8}],"terms":["runner","report","tool","stop","reason","state","max","turns","called","modified","default","timeout","seconds","token","summary","length","init","track","call","complete","tokens","total","truncate","turn","continue","build"]},{"id":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/swarm_coordinator.t27","health":"ok","module":"SwarmCoordinator"}],"description":"Swarm Coordinator - cooperative decision-making across nodes Enables nodes to work together using simple voting and consensus","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUORUM_THRESHOLD","line":8},{"name":"PROPOSAL_TIMEOUT","line":9},{"name":"VOTE_YES","line":10},{"name":"VOTE_NO","line":11},{"name":"VOTE_ABSTAIN","line":12},{"name":"create_proposal","line":15},{"name":"get_proposal_id","line":22},{"name":"get_proposal_node","line":26},{"name":"get_proposal_value","line":30},{"name":"get_proposal_timestamp","line":34},{"name":"create_vote","line":39},{"name":"get_vote_node","line":46},{"name":"get_vote_value","line":50},{"name":"get_vote_proposal_id","line":54},{"name":"get_vote_timestamp","line":58},{"name":"create_vote_array","line":63},{"name":"get_vote","line":74},{"name":"count_votes","line":86},{"name":"has_quorum","line":143},{"name":"proposal_passes","line":149},{"name":"calculate_consensus_value","line":154},{"name":"cooperative_decision","line":206}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","swarm","coordinator","max","nodes","quorum","threshold","proposal","timeout","vote","yes","abstain","create","get","node","timestamp","array","count","votes","passes","calculate","consensus","cooperative","decision"]},{"id":"95c9e9bbfaae6a21c206eb8bd48f2a4eb041ab64cfbb9e7e709069e3ac14de52","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-logs-analyze.t27","health":"ok","module":"fn_monitoring_logs_analyze"}],"description":"specs/functions/monitoring-logs-analyze.t27 -- function monitoring-logs-analyze (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-logs-analyze). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L352 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","monitoring","logs","analyze","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"960962e79669080198f0efa31668d083b1ea8eef02176cbec9eb245c89d9cfe6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0009_no_prose_in_tests.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","prose"]},{"id":"9644a4022fd22cd07d2917162571657681889d2e6fe3cfd706ca864ab64921f3","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/market_profile.t27","health":"ok","module":"turbobaby-market"}],"description":"specs/turbobaby/market_profile.t27 -- the contract a market/country/currency must satisfy The owner's standing instruction (2026-09-13) is that this agent runs on ANY market, country and currency. Measured before this file existed, Thailand was ambient in the code rather than declared anywhere: the money formatter hardcodes the baht glyph, the comma group separator and whole-baht display (src/trios/pricing.rs format_baht/group_thousands), i18n templates bake the glyph into customer-facing sentences (src/trios/i18n.rs), the shop timezone is a","symbols":[{"name":"KIND","line":45},{"name":"ID","line":46},{"name":"NAME","line":47},{"name":"SEED","line":48},{"name":"MEASURED_AT","line":49},{"name":"PROFILE_OWNER","line":54},{"name":"PROFILE_FIELD_COUNT","line":60},{"name":"PROFILE_FIELDS","line":61},{"name":"MINOR_DIGITS_MIN","line":71},{"name":"MINOR_DIGITS_MAX","line":72},{"name":"DISPLAY_MAY_OMIT_MINOR_DIGITS","line":75},{"name":"CODEPOINT_MAX","line":78},{"name":"SURROGATE_LO","line":79},{"name":"SURROGATE_HI","line":80},{"name":"SYMBOL_PLACEMENTS","line":82},{"name":"UTC_OFFSET_MIN","line":84},{"name":"UTC_OFFSET_MAX","line":85},{"name":"TH_COUNTRY_CODE","line":90},{"name":"TH_COUNTRY_NAME","line":91},{"name":"TH_CURRENCY_CODE","line":92},{"name":"TH_MINOR_DIGITS_ISO","line":94},{"name":"TH_MINOR_DIGITS_DISPLAY","line":96},{"name":"TH_SYMBOL_CODEPOINT","line":99},{"name":"TH_SYMBOL_PLACEMENT","line":100},{"name":"TH_GROUP_SEPARATOR","line":101},{"name":"TH_DECIMAL_SEPARATOR","line":102},{"name":"TH_TIMEZONE","line":104},{"name":"TH_UTC_OFFSET_HOURS","line":105},{"name":"TH_DST","line":106},{"name":"TH_CALLING_CODE","line":108},{"name":"TH_LANGUAGES","line":109},{"name":"PROOF_KIND","line":112},{"name":"PROOF_NOTE","line":113},{"name":"PROOF_COUNTRY_CODE","line":114},{"name":"PROOF_COUNTRY_NAME","line":115},{"name":"PROOF_CURRENCY_CODE","line":116},{"name":"PROOF_MINOR_DIGITS_ISO","line":117},{"name":"PROOF_MINOR_DIGITS_DISPLAY","line":118},{"name":"PROOF_SYMBOL_CODEPOINT","line":120},{"name":"PROOF_SYMBOL_PLACEMENT","line":121},{"name":"PROOF_GROUP_SEPARATOR","line":123},{"name":"PROOF_DECIMAL_SEPARATOR","line":124},{"name":"PROOF_TIMEZONE","line":125},{"name":"PROOF_UTC_OFFSET_HOURS","line":126},{"name":"PROOF_DST","line":127},{"name":"PROOF_CALLING_CODE","line":128},{"name":"EXCHANGE_RATES_PUBLISHED","line":135},{"name":"EXCHANGE_RATE_RULE","line":136},{"name":"minor_digits_is_legal","line":144},{"name":"symbol_placement_is_known","line":154},{"name":"separators_are_distinct","line":168},{"name":"utc_offset_is_real","line":172},{"name":"symbol_codepoint_is_assigned","line":182},{"name":"country_codes_differ","line":202}],"imports":[],"terms":["turbobaby","user","bot","market","profile","kind","seed","measured","owner","field","count","fields","minor","digits","min","max","display","may","omit","codepoint","surrogate","placements","utc","offset","country","currency","iso","placement","group","separator","decimal","timezone","hours","dst","calling","languages","proof","note","exchange","rates","published","rate","rule","legal","known","separators","distinct","real","assigned","codes","differ"]},{"id":"9680b23bbde4df74a98dacb40b7ecf2a5268714bc05b982fd8d95c2ec046f225","sources":[{"repo":"ghashtag/t27","path":"specs/ar/composition.t27","health":"ok","module":null}],"description":"spec: Composition ML+AR composition patterns for neuro-symbolic hybrid reasoning","symbols":[{"name":"ComponentType","line":7},{"name":"CompositionPattern","line":21},{"name":"MLComponent","line":32},{"name":"ARComponent","line":40},{"name":"Pipeline","line":48},{"name":"PipelineResult","line":56},{"name":"MAX_FUSION_DEPTH","line":65},{"name":"compose_cnn_rules","line":68},{"name":"compose_mlp_bayesian","line":78},{"name":"compose_rl_classical","line":88},{"name":"compose_neuro_symbolic","line":98},{"name":"compose_attention_logic","line":108},{"name":"compose_hybrid_vsa","line":118},{"name":"compose_ensemble_k3","line":128},{"name":"execute_pipeline","line":138},{"name":"execute_ml_component","line":189},{"name":"execute_ar_component","line":230},{"name":"fuse_results","line":260},{"name":"get_fusion_method","line":295},{"name":"k3_and_all","line":308},{"name":"majority_vote","line":321},{"name":"count_true","line":334},{"name":"count_unknown","line":345},{"name":"count_false","line":356},{"name":"asp_solve_on_trits","line":367},{"name":"datalog_reason_on_trits","line":373},{"name":"classical_constraints_on_trits","line":379},{"name":"k3_or_all","line":385},{"name":"average","line":398},{"name":"map_floats_to_trits","line":411}],"imports":[],"terms":["composition","component","pattern","mlcomponent","arcomponent","pipeline","max","fusion","depth","compose","cnn","rules","mlp","bayesian","classical","neuro","symbolic","attention","logic","hybrid","vsa","ensemble","execute","fuse","results","get","method","majority","vote","count","unknown","asp","solve","trits","datalog","reason","constraints","average","map","floats"]},{"id":"974e62d1cdcc28189ff5fddbf9405c9e02f8bb01325bc2f9860f0578a053b345","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/quadtree.t27","health":"ok","module":"TriQuadtree"}],"description":"t27/specs/","symbols":[{"name":"Rect","line":13},{"name":"QuadNode","line":20},{"name":"QuadTree","line":28},{"name":"init","line":39},{"name":"insert","line":44},{"name":"query","line":49},{"name":"deinit","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","quadtree","rect","quad","node","tree","init","insert","query","deinit"]},{"id":"979b29b19e25610e1bdaac20f03ff6c2f302cf6809ccdbdd6b6f900b91031202","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/result.t27","health":"ok","module":"TriResult"}],"description":"t27/specs/","symbols":[{"name":"Result","line":13},{"name":"ok","line":24},{"name":"err","line":29},{"name":"unwrap_or","line":34},{"name":"is_error","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","err","unwrap"]},{"id":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/binary16.t27","health":"warn","module":"Binary16"}],"description":"t27/specs/numeric/binary16.t27 Binary16 - Binary packed 16-bit format (3 bits per integer) NUMERIC-STANDARD-001 Agent 13 (P1) Binary16 format: - Packs 5 signed integers (3 bits each) into 16 bits - Each integer range: -4 to 3","symbols":[{"name":"BITS","line":33},{"name":"INT_BITS","line":34},{"name":"NUM_INTS","line":35},{"name":"PADDING_BITS","line":36},{"name":"Binary16","line":40},{"name":"get_int","line":47},{"name":"bit_offset","line":50},{"name":"mask","line":51},{"name":"raw_val","line":52},{"name":"set_int","line":62},{"name":"clamped","line":66},{"name":"bit_offset","line":75},{"name":"mask","line":76},{"name":"cleared","line":77},{"name":"packed","line":78},{"name":"encode","line":84},{"name":"decode","line":93},{"name":"min_value","line":103},{"name":"max_value","line":107},{"name":"range","line":111},{"name":"num_values_per_int","line":115},{"name":"validate_format","line":121},{"name":"MEMORY_RATIO_VS_FP32","line":138},{"name":"add","line":142},{"name":"val_a","line":143},{"name":"val_b","line":144},{"name":"result","line":145},{"name":"sub","line":149},{"name":"val_a","line":150},{"name":"val_b","line":151},{"name":"result","line":152},{"name":"neg","line":156},{"name":"val","line":157},{"name":"eq","line":163},{"name":"eq_at","line":167},{"name":"lt","line":171},{"name":"count_nonzero","line":178},{"name":"any_positive","line":189},{"name":"any_negative","line":199}],"imports":[{"name":"base::testing","line":15},{"name":"base::benchmarking","line":16}],"terms":["euler","numeric","binary16","bits","int","num","ints","padding","get","bit","offset","mask","raw","val","set","clamped","cleared","packed","encode","decode","min","max","range","values","per","validate","format","memory","ratio","fp32","sub","neg","count","nonzero","positive","negative"]},{"id":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_search.t27","health":"warn","module":"TernarySearch"}],"description":"t27/specs/isa/ternary_search.t27 Ternary Search Operations Specification Ring 081 - Search algorithms for ternary data 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TRIT_NEG","line":10},{"name":"TRIT_ZERO","line":11},{"name":"TRIT_POS","line":12},{"name":"linear_search","line":15},{"name":"binary_search","line":27},{"name":"ternary_search_min","line":44},{"name":"count_occurrences","line":70},{"name":"find_min","line":83},{"name":"find_max","line":97}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","search","trit","neg","zero","pos","linear","binary","min","count","occurrences","find","max"]},{"id":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/ride_runtime.t27","health":"ok","module":"turbobaby-ride-lifecycle"}],"description":"","symbols":[{"name":"KIND","line":25},{"name":"ID","line":26},{"name":"NAME","line":27},{"name":"WORLD","line":28},{"name":"GAME_IMPLEMENTATION","line":29},{"name":"HOST_IMPLEMENTATION","line":30},{"name":"REGRESSION_WITNESS","line":31},{"name":"CONTROL_LEFT","line":37},{"name":"CONTROL_CENTER","line":38},{"name":"CONTROL_RIGHT","line":39},{"name":"clamp_horizontal_control","line":41},{"name":"runtime_may_mount","line":53},{"name":"COLLISION_NONE","line":58},{"name":"COLLISION_CONE","line":59},{"name":"COLLISION_TRAFFIC","line":60},{"name":"COLLISION_KIND_COUNT","line":61},{"name":"is_terminal_collision","line":63},{"name":"may_finish_run","line":69},{"name":"alive_after_collision","line":73},{"name":"EVENT_NONE","line":81},{"name":"EVENT_TICK","line":82},{"name":"EVENT_END","line":83},{"name":"EVENT_UNAVAILABLE","line":84},{"name":"EVENT_KIND_COUNT","line":85},{"name":"UNAVAILABLE_IMPORT","line":87},{"name":"UNAVAILABLE_FETCH","line":88},{"name":"UNAVAILABLE_EMPTY","line":89},{"name":"UNAVAILABLE_ENGINE","line":90},{"name":"UNAVAILABLE_REASON_COUNT","line":91},{"name":"unavailable_reason_is_known","line":93},{"name":"event_for_start_result","line":97},{"name":"event_for_collision","line":104},{"name":"score_submit_allowed","line":114},{"name":"completed_distance_is_valid","line":118},{"name":"star_award_request_allowed","line":126},{"name":"show_award_as_credited","line":130},{"name":"SERVER_OWNS_AWARD_DECISION","line":134},{"name":"CLIENT_OWNS_AWARD_CAP","line":135},{"name":"continuation_is_current","line":140},{"name":"next_generation","line":144},{"name":"cleanup_is_complete","line":148}],"imports":[],"terms":["turbobaby","user","bot","ride","runtime","lifecycle","kind","world","game","host","regression","witness","control","left","center","right","clamp","horizontal","may","mount","collision","cone","traffic","count","terminal","finish","alive","event","tick","end","unavailable","import","fetch","empty","engine","reason","known","start","score","submit","allowed","completed","distance","valid","star","award","request","show","credited","owns","decision","client","cap","continuation","generation","cleanup","complete"]},{"id":"986ab5147dece46b619e35c0ceabaf47380e7b69fed47a34cd8d1963699b20fa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/mime.t27","health":"ok","module":"TriMime"}],"description":"t27/specs/","symbols":[{"name":"Email","line":13},{"name":"parse","line":25},{"name":"format","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","mime","email","parse","format"]},{"id":"988fde450417ef49c76850057fb5aaf9aa4c5a5addebcd66626e7f1403f62796","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_03.t27","health":"warn","module":"damage_class_03"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/optimizer.t27","health":"ok","module":"Optimization"}],"description":"","symbols":[{"name":"OptPass","line":5},{"name":"OptConfig","line":14},{"name":"OptStats","line":25},{"name":"default_config","line":35},{"name":"opt_stats_init","line":48},{"name":"is_pure_op","line":60},{"name":"is_const_literal","line":67},{"name":"eval_binary_const","line":79},{"name":"eval_compare_const","line":105},{"name":"is_dead_stmt","line":115},{"name":"is_strength_reducible","line":124},{"name":"can_inline","line":134},{"name":"optimize_expr","line":149},{"name":"optimize_stmt","line":169},{"name":"optimize_fn","line":187},{"name":"optimize","line":198}],"imports":[{"name":"compiler::parser","line":3}],"terms":["compiler","optimizer","optimization","opt","pass","config","stats","default","init","pure","literal","eval","binary","compare","dead","stmt","strength","reducible","inline","optimize","expr"]},{"id":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/nickname_directory.t27","health":"ok","module":"NicknameDirectory"}],"description":"Nickname directory policy. String normalization and network storage are adapter responsibilities. phi^2 + phi^-2 = 3","symbols":[{"name":"RESULT_OFFLINE_INTERNET","line":8},{"name":"RESULT_CACHED_MESH","line":9},{"name":"RESULT_ONLINE_INTERNET","line":10},{"name":"RESULT_LIVE_MESH","line":11},{"name":"NICKNAME_MIN_LENGTH","line":13},{"name":"NICKNAME_MAX_LENGTH","line":14},{"name":"MAX_EDIT_DISTANCE","line":15},{"name":"MIN_CONFUSING_PREFIX","line":16},{"name":"MESH_ROUTE_CACHE_TTL_SECONDS","line":17},{"name":"CLAIM_REJECTED","line":19},{"name":"CLAIM_MESH_LOCAL","line":20},{"name":"CLAIM_VERIFIED","line":21},{"name":"nickname_shape_is_valid","line":25},{"name":"nickname_is_confusing","line":34},{"name":"claim_status","line":46},{"name":"may_route_by_nickname","line":59},{"name":"nickname_owner_matches","line":65},{"name":"exact_lookup_may_return","line":71},{"name":"cached_mesh_route_is_fresh","line":78},{"name":"auto_route_may_use_mesh","line":85},{"name":"mesh_route_may_be_cached","line":94},{"name":"directory_result_rank","line":100},{"name":"direct_mesh_target_is_supported","line":115}],"imports":[{"name":"base::types","line":6}],"terms":["net","nickname","directory","offline","internet","cached","mesh","online","live","min","length","max","edit","distance","confusing","prefix","route","cache","ttl","seconds","claim","rejected","local","verified","shape","valid","status","may","owner","matches","exact","lookup","fresh","auto","rank","direct","target","supported"]},{"id":"98f0c29164ca0fcd92e851d96e061e6f442a80fccab59e71f5d617f364afd7dc","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/ledgers.t27","health":"ok","module":"tool_tri_ledgers"}],"description":"specs/tools/tri/ledgers.t27 -- tool tri/ledgers, the `tri ledgers` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/ledgers). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["ledgers","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/ast.t27","health":"warn","module":null}],"description":"ast.t27 — Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler","symbols":[{"name":"NodeType","line":5},{"name":"ASTNode","line":39},{"name":"Program","line":47},{"name":"ConstDef","line":56},{"name":"DataSection","line":62},{"name":"DataDecl","line":67},{"name":"CodeSection","line":74},{"name":"Instruction","line":80},{"name":"Opcode","line":86},{"name":"Operand","line":100},{"name":"OperandType","line":105},{"name":"RegOperand","line":113},{"name":"ImmOperand","line":118},{"name":"LabelOperand","line":123},{"name":"MemOperand","line":128},{"name":"TypeInfo","line":134},{"name":"Symbol","line":141},{"name":"SymbolTable","line":150},{"name":"SymbolTable","line":157},{"name":"SymbolTable","line":166},{"name":"SymbolTable","line":175},{"name":"CompilerContext","line":186},{"name":"CompilationPhase","line":195},{"name":"CompilerError","line":203},{"name":"CompilerWarning","line":212},{"name":"CompilerContext","line":220},{"name":"CompilerContext","line":231},{"name":"CompilerContext","line":241},{"name":"CompilerContext","line":246},{"name":"Program","line":251}],"imports":[],"terms":["fpga","compiler","ast","node","astnode","program","def","data","section","decl","opcode","operand","reg","imm","label","mem","info","table","compilation","phase","warning"]},{"id":"9973916e12d9225b9f175037e9bd30897284f515074a11b97585dbf7b1a59e80","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_challenge.t27","health":"ok","module":"TriComputeChallenge"}],"description":"TRI-NET compute dispute + slash: economic security around the GF compute core. Settlement (tri_compute_settle) pays a fresh, self-consistent receipt -- but self-consistent does NOT mean CORRECT. A dishonest executor can sign a fresh receipt for a WRONG GoldenFloat result and get paid. This spec adds the fraud proof: because GF ops are deterministic and bit-exact (conformance vectors), any challenger can recompute gf_op(a,b) with the golden GF unit and settle the","symbols":[{"name":"RESOLVE_HONEST","line":14},{"name":"RESOLVE_SLASH","line":15},{"name":"is_honest","line":20},{"name":"resolve","line":24},{"name":"executor_bond_after","line":34},{"name":"challenger_reward","line":44},{"name":"challenger_stake_after","line":54},{"name":"RESOLVE_MALFORMED","line":75},{"name":"challenge_binds","line":79},{"name":"resolve_bound","line":85},{"name":"challenger_stake_after_bound","line":106},{"name":"RESOLVE_STALE","line":130},{"name":"dispute_is_fresh","line":132},{"name":"resolver_epoch_after","line":143},{"name":"FMT_GF_BINARY","line":163},{"name":"FMT_GFT","line":164},{"name":"RESOLVE_FAMILY_MISMATCH","line":165},{"name":"family_matches","line":167},{"name":"resolve_full","line":177},{"name":"RESOLVE_RUNG_MISMATCH","line":198},{"name":"rung_matches","line":200},{"name":"resolve_full_rung","line":208},{"name":"resolve_bound_d256","line":230},{"name":"resolve_full_d256","line":244},{"name":"resolve_bitnet","line":267},{"name":"resolve_bitnet_full","line":290},{"name":"resolve_bitnet_d256","line":309},{"name":"resolve_bitnet_d256_full","line":331},{"name":"majority_flag3","line":345},{"name":"resolve_bitnet_quorum","line":359},{"name":"majority_flag5","line":368},{"name":"resolve_bitnet_quorum5","line":381},{"name":"resolve_bitnet_quorum_full","line":398},{"name":"resolve_bitnet_quorum5_full","line":406},{"name":"RESOLVE_INDETERMINATE","line":423},{"name":"verifier_quorum3","line":426},{"name":"quorum_result3","line":436},{"name":"resolve_quorum3","line":445},{"name":"verifier_dissented","line":465},{"name":"verifier_stake_after","line":479},{"name":"verifier_reward","line":495},{"name":"quorum_threshold","line":513},{"name":"has_quorum_k","line":519},{"name":"max_agree3","line":529},{"name":"eq1","line":557},{"name":"max2","line":565},{"name":"count5","line":574},{"name":"max_agree5","line":579},{"name":"quorum_value5","line":590},{"name":"resolve_quorum5","line":601},{"name":"dissenter_count5","line":615},{"name":"burned_total5","line":628},{"name":"honest_share5","line":638}],"imports":[{"name":"base::types","line":11}],"terms":["net","compute","challenge","resolve","honest","slash","executor","bond","challenger","reward","stake","malformed","binds","bound","stale","dispute","fresh","resolver","epoch","fmt","binary","gft","family","mismatch","matches","full","rung","d256","bitnet","majority","flag3","quorum","flag5","quorum5","indeterminate","verifier","quorum3","result3","dissented","threshold","max","agree3","eq1","max2","count5","agree5","value5","dissenter","burned","total5","share5"]},{"id":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/fifo.t27","health":"warn","module":"Fifo"}],"description":"t27/specs/fpga/fifo.t27 Synchronous and Asynchronous FIFO Stdlib for Trinity T27 FPGA HIR Defines FIFO configuration with depth, data width, and flags Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"FifoKind","line":12},{"name":"FifoFlags","line":19},{"name":"FifoConfig","line":28},{"name":"MAX_FIFO_DEPTH","line":42},{"name":"FifoState","line":44},{"name":"sync_fifo","line":53},{"name":"async_fifo","line":67},{"name":"with_almost_empty","line":81},{"name":"with_almost_full","line":88},{"name":"empty_fifo_state","line":95},{"name":"is_sync","line":111},{"name":"is_async","line":115},{"name":"addr_width","line":119},{"name":"total_storage_bits","line":132},{"name":"bram18_count","line":136},{"name":"is_empty","line":145},{"name":"is_full","line":149},{"name":"fill_count","line":153},{"name":"has_space","line":157},{"name":"has_data","line":161},{"name":"push","line":167},{"name":"pop","line":181},{"name":"validate_fifo","line":197}],"imports":[],"terms":["fpga","fifo","kind","flags","config","max","depth","state","sync","async","almost","empty","full","addr","width","total","storage","bits","bram18","count","fill","space","data","push","pop","validate"]},{"id":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/timing_tb.t27","health":"ok","module":"Timing_Testbench"}],"description":"t27/specs/fpga/testbench/timing_tb.t27 Timing Analysis Testbench Tests setup/hold checks, slack computation, and clock tree constraints","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"TARGET_FMAX_MHZ","line":12},{"name":"tick","line":25},{"name":"reset","line":30},{"name":"compute_slack","line":38},{"name":"compute_fmax","line":42}],"imports":[{"name":"fpga::timing::Timing","line":8}],"terms":["fpga","testbench","timing","clk","period","sim","timeout","target","fmax","mhz","tick","reset","compute","slack"]},{"id":"99f03be9bbefc5f7c3b0637717e69650f11b0bf8644563b4e03bd24d12a66c89","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-tri.t27","health":"ok","module":"skill_t27_tri"}],"description":"specs/skills/t27-tri.t27 -- skill t27/tri Source of truth for the skill card on t27.ai (#/skills?skill=t27/tri). The skill body lives in gHashTag/t27 at .claude/skills/tri/skill.md (vendored copy: apps/website/public/skills/files/t27/tri/skill.md, sha256 8fb4d4796c2d...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"99fa8b738f00c108b3eb1e9445daab42093844115abeaf03d2e8289b090096fa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bind.t27","health":"warn","module":null}],"description":"VSA Bind — TTT Dogfood Phase 2 Bind operation (XOR-like for balanced ternary) Algorithm: if a == 0 return b; else if b == 0 return a; else return a * b Input: t0 = a, t1 = b Output: t0 = bind(a, b)","symbols":[],"imports":[],"terms":["fpga","tri27","vsa","bind"]},{"id":"9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/edge_demo.t27","health":"ok","module":"TrinityMemoryEdgeDemoSpec"}],"description":"specs/memory/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one","symbols":[{"name":"TMS_EDGE_CLASSES","line":16},{"name":"TMS_EDGE_SAMPLES","line":17},{"name":"TMS_EDGE_HALF","line":18},{"name":"TMS_EDGE_WEIGHTS","line":19},{"name":"TMS_EDGE_MODEL_RANK","line":20},{"name":"TMS_EDGE_MODEL_SCALES","line":21},{"name":"TMS_EDGE_MODEL_AXES","line":22},{"name":"TMS_EDGE_DENSE5_PAYLOAD_BYTES","line":23},{"name":"TMS_EDGE_BASELINE2_PAYLOAD_BYTES","line":24},{"name":"EdgeLabel","line":26},{"name":"TMS_EDGE_FIXTURES","line":33},{"name":"TMS_EDGE_STEP_AMPLITUDE","line":34},{"name":"TMS_EDGE_ALTERNATING_AMPLITUDE","line":35},{"name":"TMS_EDGE_STEP_ACCUMULATOR","line":36},{"name":"TMS_EDGE_ALTERNATING_ACCUMULATOR","line":37},{"name":"EdgeFixture","line":39},{"name":"TMS_EDGE_MODES","line":49},{"name":"TMS_EDGE_PREDICTIONS","line":50},{"name":"TMS_EDGE_RTL_ROWS","line":51},{"name":"TMS_EDGE_RTL_SEED_MAX","line":52},{"name":"TMS_EDGE_SEED_DEFAULT","line":53},{"name":"TMS_EDGE_REPORT_LIMITATIONS","line":54},{"name":"TMS_EDGE_TIMING_FIELDS","line":55},{"name":"TMS_EDGE_PHYSICAL_DEVICE_TESTED","line":56},{"name":"tms_edge_weight","line":61},{"name":"tms_edge_expected_label","line":74},{"name":"tms_edge_synthetic_sample","line":80},{"name":"tms_edge_accumulator","line":88},{"name":"tms_edge_score","line":100},{"name":"tms_edge_argmax","line":104},{"name":"tms_edge_score_finite","line":117},{"name":"tms_edge_rtl_seed","line":122},{"name":"tms_edge_rtl_seed_valid","line":126},{"name":"tms_edge_raw_payload_bytes","line":130},{"name":"tms_edge_predictions","line":136},{"name":"tms_edge_rtl_rows","line":140}],"imports":[],"terms":["dmitrii","memory","edge","demo","tms","classes","samples","half","weights","model","rank","scales","axes","dense5","payload","bytes","baseline2","label","fixtures","step","amplitude","alternating","accumulator","fixture","modes","predictions","rtl","rows","seed","max","default","report","limitations","timing","fields","physical","device","tested","weight","expected","synthetic","sample","score","argmax","finite","valid","raw"]},{"id":"9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/lite_crypto.t27","health":"ok","module":"LiteCrypto"}],"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","symbols":[{"name":"PSK_SIZE","line":8},{"name":"MD5_BLOCK_SIZE","line":9},{"name":"CHACHA20_STATE_SIZE","line":10},{"name":"md5_process_block","line":16},{"name":"md5_digest","line":27},{"name":"quarter_round","line":34},{"name":"generate_psk","line":45},{"name":"hmac_md5","line":52},{"name":"verify_hmac","line":58}],"imports":[{"name":"base::types","line":5}],"terms":["net","lite","crypto","psk","size","md5","block","chacha20","state","process","digest","quarter","round","generate","hmac","verify"]},{"id":"9a3ce1aa2579e2bd858efa611d2517e13380fcaa88450c4147b653908fd8df69","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attention.t27","health":"ok","module":"MultiHeadAttn"}],"description":"t27/specs/","symbols":[{"name":"MHAConfig","line":13},{"name":"forward","line":25}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","multi","head","attention","attn","mhaconfig","forward"]},{"id":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_storage.t27","health":"warn","module":"TrinityStreamStorageT27"}],"description":"","symbols":[{"name":"CAPACITY","line":7},{"name":"visible_code","line":15},{"name":"on_clock","line":38}],"imports":[],"terms":["dmitrii","memory","rtl","stream","storage","capacity","visible","clock"]},{"id":"9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_analytics.t27","health":"ok","module":"NetworkAnalytics"}],"description":"Network Analytics - traffic analysis and pattern detection Monitor network behavior and identify anomalies","symbols":[{"name":"MAX_NODES","line":7},{"name":"ANALYSIS_WINDOW","line":8},{"name":"TRAFFIC_LOW","line":9},{"name":"TRAFFIC_HIGH","line":10},{"name":"ANOMALY_THRESHOLD","line":11},{"name":"create_traffic_stats","line":14},{"name":"get_bytes_sent","line":21},{"name":"get_bytes_recv","line":25},{"name":"get_packet_count","line":29},{"name":"get_error_count","line":33},{"name":"create_analysis_data","line":38},{"name":"get_analysis_node_id","line":45},{"name":"get_analysis_traffic","line":49},{"name":"get_analysis_window_start","line":53},{"name":"get_analysis_pattern","line":57},{"name":"PATTERN_NORMAL","line":62},{"name":"PATTERN_SPIKE","line":63},{"name":"PATTERN_DROPOUT","line":64},{"name":"PATTERN_CONGESTION","line":65},{"name":"calculate_total_traffic","line":68},{"name":"is_traffic_low","line":73},{"name":"is_traffic_high","line":78},{"name":"is_traffic_normal","line":83},{"name":"calculate_error_rate","line":89},{"name":"is_high_error_rate","line":101},{"name":"detect_pattern","line":106},{"name":"update_traffic","line":129},{"name":"needs_attention","line":144},{"name":"calculate_utilization","line":153},{"name":"is_congested","line":164}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","analytics","max","nodes","analysis","window","traffic","low","high","anomaly","threshold","create","stats","get","bytes","sent","recv","packet","count","data","node","start","pattern","normal","spike","dropout","congestion","calculate","total","rate","detect","attention","utilization","congested"]},{"id":"9a7a252b0234051663b7a9a6f9712ceb2b15501140378ef156612ab574aec6ae","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_memory.t27","health":"warn","module":"TernaryMemory"}],"description":"t27/specs/base/ternary_memory.t27 Ternary Memory Specification Ring 066 - Ternary memory cell and array operations Defines how trits are stored and accessed in memory","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"TRIT_CAPACITY","line":21},{"name":"WORD_CAPACITY","line":22},{"name":"PAGE_SIZE","line":23},{"name":"STATE_FREE","line":26},{"name":"STATE_ALLOCATED","line":27},{"name":"STATE_LOCKED","line":28},{"name":"STATE_DIRTY","line":29},{"name":"TritCell","line":36},{"name":"trit_cell_init","line":45},{"name":"trit_cell_write","line":56},{"name":"trit_cell_read","line":69},{"name":"TernaryWord","line":80},{"name":"ternary_word_init","line":88},{"name":"ternary_word_write_trit","line":104},{"name":"result","line":112},{"name":"ternary_word_read_trit","line":122},{"name":"compute_checksum","line":131},{"name":"val","line":136},{"name":"TernaryMemoryBank","line":149},{"name":"ternary_memory_bank_init","line":157},{"name":"ternary_memory_alloc","line":174},{"name":"index","line":179},{"name":"ternary_memory_free","line":187},{"name":"ternary_memory_read","line":197},{"name":"ternary_memory_write","line":209},{"name":"get_timestamp","line":225},{"name":"validate_trit","line":231},{"name":"cell","line":240},{"name":"word","line":259},{"name":"bank","line":277},{"name":"index1","line":284},{"name":"index2","line":288},{"name":"index","line":297},{"name":"before","line":309},{"name":"before","line":316},{"name":"before","line":323},{"name":"index","line":343},{"name":"before","line":345},{"name":"after","line":349},{"name":"vals","line":369},{"name":"index","line":394}],"imports":[{"name":"base::types","line":9}],"terms":["base","ternary","memory","trit","neg","zero","pos","capacity","word","page","size","state","free","allocated","locked","dirty","cell","init","write","read","compute","checksum","val","bank","alloc","index","get","timestamp","validate","index1","index2","vals"]},{"id":"9a8156c31cf1ff378730d53a4e55d2265fb101558dabfa1c3cf9f3c9e3e3ed5a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/circular_buffer.t27","health":"ok","module":"TriCircularBuffer"}],"description":"t27/specs/","symbols":[{"name":"CircularBuffer","line":13},{"name":"init","line":26},{"name":"write","line":31},{"name":"read","line":36},{"name":"is_empty","line":41},{"name":"deinit","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","circular","buffer","init","write","read","empty","deinit"]},{"id":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","sources":[{"repo":"ghashtag/t27","path":"specs/git/schema.t27","health":"ok","module":"Git"}],"description":"specs/git/schema.t27 Git Types Specification","symbols":[{"name":"Kind","line":13},{"name":"Base","line":24},{"name":"Item","line":34},{"name":"Stat","line":41},{"name":"Options","line":52},{"name":"Result","line":58},{"name":"GitError","line":70},{"name":"NotARepositoryError","line":77},{"name":"DEFAULT_BRANCH_MAIN","line":85},{"name":"DEFAULT_BRANCH_MASTER","line":86},{"name":"GIT_CONFIG_DEFAULT_BRANCH","line":87},{"name":"GIT_FLAGS","line":90},{"name":"parse_kind","line":104},{"name":"is_success","line":121},{"name":"is_failure","line":126}],"imports":[{"name":"base::types","line":6}],"terms":["git","schema","kind","base","item","stat","options","arepository","default","branch","main","master","config","flags","parse","success","failure"]},{"id":"9aa3f120d7149de57f33abba748180cf7cfa0876bbee28cb4a4fb6459b1cad31","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/io.t27","health":"ok","module":"TriIo"}],"description":"t27/specs/","symbols":[{"name":"IO","line":13},{"name":"pure","line":23},{"name":"map","line":28},{"name":"bind","line":33},{"name":"perform","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pure","map","bind","perform"]},{"id":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/goldenfloat_family.t27","health":"warn","module":"GoldenFloatFamily"}],"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family 0 1-structured floating point formats NUMERIC-STANDARD-001 2 Agent 1 (P0)","symbols":[{"name":"GoldenFloatFormat","line":15},{"name":"PHI_RATIO_TARGET","line":32},{"name":"GOLDEN_FLOAT_FAMILY","line":35},{"name":"get_format_by_name","line":143},{"name":"get_format_by_bits","line":152},{"name":"get_primary_format","line":161},{"name":"VerificationReport","line":169},{"name":"verify_golden_family","line":178},{"name":"avg_dist","line":226},{"name":"all_checks_valid","line":229},{"name":"max_value","line":250},{"name":"mant_max","line":252},{"name":"exp_max","line":253},{"name":"min_positive","line":257},{"name":"mant_min","line":259},{"name":"bias","line":260},{"name":"memory_efficiency","line":264}],"imports":[{"name":"math::constants","line":8},{"name":"math::sacred_physics","line":9}],"terms":["euler","numeric","goldenfloat","family","golden","float","format","phi","ratio","target","get","bits","primary","verification","report","verify","avg","dist","checks","valid","max","mant","exp","min","positive","bias","memory","efficiency"]},{"id":"9ae6f8bd4402e16c75d45181fdd2600e3ad8514cca82dc2ae796c9e7bf1e1f27","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_activation.t27","health":"ok","module":"Gelu"}],"description":"t27/specs/","symbols":[{"name":"SQRT_2_OVER_PI","line":13},{"name":"SQRT_PI_OVER_2","line":14},{"name":"GELUConfig","line":20},{"name":"forward","line":29},{"name":"backward","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","gelu","sqrt","over","geluconfig","forward","backward"]},{"id":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/bench_proxy.t27","health":"warn","module":"igla-coder-bench-proxy"}],"description":"t27/specs/igla/coder/bench_proxy.t27 Proxy benchmark for VerilogEval-style RTL generation problems. Honest baseline: evaluates current IGLA-Coder templates against simplified combinational + sequential problems.","symbols":[{"name":"BenchProblem","line":16},{"name":"BenchResult","line":24},{"name":"verilog_eval_problems","line":36},{"name":"evaluate_template_on_benchmark","line":68},{"name":"run_benchmark_for_template","line":74},{"name":"run_benchmark_inner","line":78},{"name":"count_passed","line":89},{"name":"count_passed_inner","line":93},{"name":"compute_pass_at_1","line":103},{"name":"run_full_baseline","line":114},{"name":"run_full_baseline_inner","line":118},{"name":"average_score","line":128},{"name":"average_score_inner","line":132}],"imports":[{"name":"base::types","line":9}],"terms":["igla","coder","bench","proxy","problem","verilog","eval","problems","evaluate","template","benchmark","inner","count","passed","compute","pass","full","baseline","average","score"]},{"id":"9b70a19282f97706600410642104485c1cb158c9a4f0ddfde6040850ce334635","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/cli.t27","health":"warn","module":"TrinityMemoryCLI"}],"description":"Native command dispatch and strict JSON trit-array parsing. Domain command dispatch is native. Host hooks supply file IO, buffers, entropy, sockets and signal waiting; generated modules own all data formats.","symbols":[{"name":"tm_cli_space","line":5},{"name":"tm_cli_json_trits","line":8},{"name":"tm_cli_json_encode","line":42},{"name":"tm_cli_codec","line":60},{"name":"tm_cli_copy","line":69},{"name":"tm_cli_text_equal","line":77},{"name":"tm_cli_option","line":85},{"name":"tm_cli_codec_text","line":94},{"name":"tm_cli_quote_arg","line":103},{"name":"tm_cli_port_text","line":109},{"name":"tm_cli_url_port","line":114},{"name":"tm_cli_tmem_info","line":119},{"name":"tm_cli_export_hex","line":147},{"name":"tm_cli_file_command","line":184},{"name":"tm_cli_rpc","line":261},{"name":"tm_cli_rpc_error","line":276},{"name":"tm_cli_remote_command","line":287},{"name":"tm_cli_serve","line":370},{"name":"tm_cli_i64","line":390},{"name":"tm_cli_experiments","line":410},{"name":"tm_cli_main","line":470}],"imports":[],"terms":["dmitrii","memory","cli","space","json","trits","encode","codec","copy","text","equal","option","quote","arg","port","url","tmem","info","hex","rpc","remote","serve","i64","experiments","main"]},{"id":"9bb3e3fb5d73315392c6a08b674ca0b04d63b1e324dfa2a5ecb50bbdae6d074f","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-logs-trigger.t27","health":"ok","module":"fn_monitoring_logs_trigger"}],"description":"specs/functions/monitoring-logs-trigger.t27 -- function monitoring-logs-trigger (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-logs-trigger). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L408 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","monitoring","logs","trigger","kind","legacy","service","domain","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/pattern_predictor.t27","health":"warn","module":"pattern_predictor"}],"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"PATTERN_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"create_sample","line":12},{"name":"get_sample_value","line":19},{"name":"get_sample_timestamp","line":23},{"name":"get_sample_sequence","line":27},{"name":"get_sample_valid","line":31},{"name":"create_pattern_storage","line":36},{"name":"get_pattern_samples","line":43},{"name":"get_pattern_count","line":47},{"name":"get_trend_direction","line":51},{"name":"create_sample_array","line":59},{"name":"get_sample_at","line":64},{"name":"calculate_moving_average","line":72},{"name":"detect_trend","line":108},{"name":"predict_next_value","line":124},{"name":"is_anomalous","line":143},{"name":"detect_repeating_pattern","line":154},{"name":"calculate_variance","line":181}],"imports":[{"name":"base::types","line":5}],"terms":["net","pattern","predictor","max","samples","window","anomaly","threshold","create","sample","get","timestamp","sequence","valid","storage","count","trend","direction","array","calculate","moving","average","detect","predict","anomalous","repeating","variance"]},{"id":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/e2e_test.t27","health":"warn","module":"PipelineE2E"}],"description":"t27/specs/pipeline/e2e_test.t27 Pipeline E2E Test Specification Ring 028 — tri pipeline end-to-end testing 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"MAX_PIPELINE_STAGES","line":10},{"name":"STAGE_INIT","line":11},{"name":"STAGE_PARSE","line":12},{"name":"STAGE_SEAL","line":13},{"name":"STAGE_GEN","line":14},{"name":"STAGE_TEST","line":15},{"name":"STAGE_VERDICT","line":16},{"name":"STAGE_SAVE","line":17},{"name":"STAGE_COMMIT","line":18},{"name":"STAGE_DONE","line":19},{"name":"STAGE_FAIL","line":20},{"name":"pipeline_run","line":23},{"name":"pipeline_inject_failure","line":55},{"name":"stage_name","line":85},{"name":"pipeline_progress","line":90}],"imports":[{"name":"base::types","line":8}],"terms":["pipeline","e2e","max","stages","stage","init","parse","seal","gen","verdict","save","commit","done","fail","inject","failure","progress"]},{"id":"9be969e9ee07f2ac25392d6c3001b94a6386275db45b5a08881382a8c22782ea","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/language.t27","health":"ok","module":"Language"}],"description":"t27/compiler/parser/language.t27 — Language Definition for .t27 Specs Defines tokens, lexical grammar for parsing .t27 format specifications","symbols":[{"name":"TokenType","line":47}],"imports":[],"terms":["fpga","compiler","parser","language","token"]},{"id":"9c3bd00b6e03ac89e08a3c1a2a5c2b6d52a91ebde2eb0eee16712a3ff06db38a","sources":[{"repo":"ghashtag/t27","path":"specs/brain/brain.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["brain"]},{"id":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cross_layer_optimizer.t27","health":"warn","module":"CrossLayerOptimizer"}],"description":"Cross-Layer Optimizer - coordination between PHY, MAC, and routing layers Enables joint optimization across network stack layers","symbols":[{"name":"MAX_LAYERS","line":7},{"name":"LAYER_PHY","line":8},{"name":"LAYER_MAC","line":9},{"name":"LAYER_NETWORK","line":10},{"name":"LAYER_TRANSPORT","line":11},{"name":"MODE_CONSERVATIVE","line":13},{"name":"MODE_MODERATE","line":14},{"name":"MODE_AGGRESSIVE","line":15},{"name":"create_layer_params","line":18},{"name":"get_power","line":25},{"name":"get_rate","line":29},{"name":"get_retries","line":33},{"name":"get_window","line":37},{"name":"create_cross_layer_state","line":42},{"name":"get_mode","line":49},{"name":"get_update_counter","line":53},{"name":"get_last_sync","line":57},{"name":"get_optimization_target","line":61},{"name":"create_layer_array","line":66},{"name":"get_layer_params","line":73},{"name":"update_layer_params","line":81},{"name":"calculate_joint_metric","line":94},{"name":"coordinate_power","line":105},{"name":"optimize_for_target","line":131},{"name":"needs_synchronization","line":158},{"name":"increment_updates","line":165},{"name":"switch_mode","line":178}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","cross","layer","optimizer","max","layers","phy","mac","network","transport","mode","conservative","moderate","aggressive","create","params","get","power","rate","retries","window","state","counter","sync","optimization","target","array","calculate","joint","metric","coordinate","optimize","synchronization","increment","updates","switch"]},{"id":"9c72e0708c09aa65265bc7a089d77f35949d4304f42c67826f5ae269ac268264","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/llm.firebird.t27","health":"ok","module":"trinity_capability_llm_firebird"}],"description":"specs/trinity/capabilities/llm.firebird.t27 -- capability trinity/llm.firebird: Firebird: BitNet LLM inference and its wasm, depin and b2t integrations One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","llm","firebird","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"9c8556d27e470bc9a3219428a34d472e98999f082aa4e47afd8d2cc325a76200","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf64.t27","health":"ok","module":"triformat_tnf64"}],"description":"tnf64.t27 -- TNF64: Ternary Network Float, 64-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","symbols":[{"name":"SIGN_BITS","line":20},{"name":"EXP_TRITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_OFFSET","line":23},{"name":"OFFSET_MAX","line":24},{"name":"exp_offset","line":28},{"name":"is_finite","line":32},{"name":"exp_values","line":36}],"imports":[{"name":"base::types","line":18}],"terms":["numeric","tnf64","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"9caf79744e4fe67d95900b03c1298e0a046444ab82e98057a133550f4c8ba646","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_encoding.t27","health":"warn","module":"TernaryEncoding"}],"description":"t27/specs/base/ternary_encoding.t27 Ternary Encoding/Decoding Specification Ring 065 - Encoding schemes for ternary data representation Defines how binary data maps to ternary and vice versa","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"ENCODING_BALANCED","line":21},{"name":"ENCODING_UNIPOLAR","line":22},{"name":"ENCODING_BCT","line":23},{"name":"BITS_PER_BYTE","line":26},{"name":"TRITS_PER_BYTE","line":27},{"name":"TRITS_PER_NYBBLE","line":28},{"name":"bit_to_trit_pair","line":37},{"name":"bits_to_trits","line":47},{"name":"rem","line":53},{"name":"trits_to_bits","line":74},{"name":"byte_to_trits","line":100},{"name":"rem","line":106},{"name":"trits_to_byte","line":134},{"name":"balanced_to_unipolar","line":160},{"name":"unipolar_to_balanced","line":167},{"name":"char_to_trits","line":177},{"name":"trits_to_char","line":183},{"name":"is_valid_trit","line":193},{"name":"is_valid_unipolar_trit","line":199},{"name":"validate_trits","line":205},{"name":"EncodingInfo","line":220},{"name":"get_encoding_info","line":229},{"name":"result","line":249},{"name":"result","line":254},{"name":"result","line":259},{"name":"result","line":265},{"name":"decoded","line":266},{"name":"trits","line":272},{"name":"decoded","line":273},{"name":"decoded","line":283},{"name":"decoded","line":317},{"name":"vals","line":328},{"name":"uni","line":331},{"name":"balanced","line":332},{"name":"decoded","line":343},{"name":"trits","line":354},{"name":"decoded","line":355},{"name":"valid_info","line":365},{"name":"invalid_info","line":366},{"name":"info","line":374},{"name":"vals","line":404},{"name":"uni","line":409}],"imports":[{"name":"base::types","line":9}],"terms":["base","ternary","encoding","trit","neg","zero","pos","balanced","unipolar","bct","bits","per","byte","trits","nybble","bit","pair","rem","char","valid","validate","info","get","decoded","vals","uni","invalid"]},{"id":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_profiler.t27","health":"warn","module":"performance_profiler"}],"description":"Performance Profiler - CPU and memory profiling for T27 modules Enables performance analysis and bottleneck identification","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"MAX_FUNCTIONS","line":8},{"name":"PROFILING_INTERVAL_MS","line":9},{"name":"OVERHEAD_THRESHOLD","line":10},{"name":"create_perf_sample","line":13},{"name":"get_sample_function_id","line":20},{"name":"get_sample_cpu","line":24},{"name":"get_sample_memory","line":28},{"name":"get_sample_timestamp","line":32},{"name":"create_function_profile","line":37},{"name":"get_profile_function_id","line":43},{"name":"get_profile_call_count","line":47},{"name":"get_profile_total_cpu","line":51},{"name":"create_hotspot","line":56},{"name":"get_hotspot_function_id","line":63},{"name":"get_hotspot_score","line":67},{"name":"get_hotspot_rank","line":71},{"name":"get_hotspot_impact","line":75},{"name":"calculate_average_cpu","line":80},{"name":"calculate_average_memory","line":101},{"name":"identify_hotspots","line":122},{"name":"calculate_profiling_overhead","line":151},{"name":"is_overhead_acceptable","line":163},{"name":"create_allocation","line":172},{"name":"get_allocation_id","line":179},{"name":"get_allocation_size","line":183},{"name":"get_allocation_lifetime","line":187},{"name":"get_allocation_pool","line":191},{"name":"track_allocation","line":196},{"name":"calculate_total_memory","line":210},{"name":"detect_memory_leak","line":224},{"name":"create_call_stack_entry","line":238},{"name":"get_stack_depth","line":245},{"name":"get_stack_function_id","line":249},{"name":"get_stack_parent_id","line":253},{"name":"get_stack_cpu_contribution","line":257},{"name":"analyze_call_tree","line":262},{"name":"create_performance_report","line":291},{"name":"get_report_total_cpu","line":298},{"name":"get_report_total_memory","line":302},{"name":"get_report_hotspot_count","line":306},{"name":"get_report_overhead","line":310},{"name":"generate_recommendations","line":315},{"name":"calculate_improvement_opportunity","line":345}],"imports":[{"name":"base::types","line":5}],"terms":["net","performance","profiler","max","samples","functions","profiling","interval","overhead","threshold","create","perf","sample","get","cpu","memory","timestamp","profile","call","count","total","hotspot","score","rank","impact","calculate","average","identify","hotspots","acceptable","allocation","size","lifetime","pool","track","detect","leak","stack","entry","depth","parent","contribution","analyze","tree","report","generate","recommendations","improvement","opportunity"]},{"id":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/array.t27","health":"warn","module":"TriArray"}],"description":"t27/specs/","symbols":[{"name":"ArrayView","line":13},{"name":"SliceRange","line":18},{"name":"slice","line":29},{"name":"slice_from","line":34},{"name":"first","line":39},{"name":"last","line":48},{"name":"is_empty","line":57},{"name":"contains","line":62},{"name":"index_of","line":67},{"name":"reverse","line":79},{"name":"concat","line":90}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","array","view","slice","range","empty","contains","index","reverse","concat"]},{"id":"9d397a176e2db4f55c544daf8ea1142c8d9c45c1e0ec5ad9e4b329ab24eed82b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/c/codegen.t27","health":"warn","module":"c_codegen"}],"description":"","symbols":[],"imports":[],"terms":["fpga","compiler","codegen"]},{"id":"9d464252d2dde474735df22e6f84c74959316ce9f17c7ae6299091287e0867d7","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_mlp.t27","health":"warn","module":"BitnetMlp"}],"description":"","symbols":[{"name":"tmul","line":2},{"name":"dot27","line":8},{"name":"quantize","line":19},{"name":"neuronN","line":24},{"name":"neuron1","line":33},{"name":"pack3","line":36},{"name":"mlp2","line":44},{"name":"on_comb","line":70}],"imports":[],"terms":["ternary","bitnet","mlp","tmul","dot27","quantize","neuron","neuron1","pack3","mlp2","comb"]},{"id":"9dc4e475f38f849170b46b46c0a72486485d13a37e4a53150b6dd395b4252a6a","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_line_emitter.t27","health":"warn","module":"TrinityFpgaLineEmitterT27"}],"description":"","symbols":[{"name":"hex","line":15},{"name":"line_char","line":20},{"name":"on_clock","line":27}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","emitter","hex","char","clock"]},{"id":"9dfafc8670514867101a90a51dcec2f5137a1f0bbb3c90da038038a2c2f4312b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/state.trinity-dir.t27","health":"ok","module":"trinity_capability_state_trinity_dir"}],"description":"specs/trinity/capabilities/state.trinity-dir.t27 -- capability trinity/state.trinity-dir: The .trinity/ harness state: registry, MCP schemas, seals, experience, queues, p One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","state","dir","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"9e0a54bfc5992bb96c5dc38dcbffd57334be6866207e09185966985e870dacbb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/published_pack_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","published","pack","audit"]},{"id":"9e53c7a141c31266e0b275bea41a46eaff276426ff85aadf52524de77c69ecf8","sources":[{"repo":"ghashtag/t27","path":"tests/ring0_trivial.t27","health":"ok","module":"ring0"}],"description":"ring-0 trivial test","symbols":[{"name":"ONE","line":6},{"name":"ZERO","line":7},{"name":"NEG","line":8},{"name":"HEX","line":9},{"name":"BIN","line":10}],"imports":[],"terms":["ring0","trivial","one","zero","neg","hex","bin"]},{"id":"9e7f3ab64dc081da46232c63a023d2d392652bf57c2720c46fe02b564a0f1f37","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_reset.t27","health":"warn","module":"TrinityFpgaResetT27"}],"description":"","symbols":[{"name":"on_clock","line":16}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","reset","clock"]},{"id":"9e8b0319877e064acbadfcf4e2611da323f38382cee7f318b4f552e01d560898","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/lean.t27","health":"ok","module":"tool_tri_lean"}],"description":"specs/tools/tri/lean.t27 -- tool tri/lean, the `tri lean` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/lean). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["lean","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"9ec4b6bdfdd71d5d9e4e95513ab3bbc6ac8691ab2086dd1b4e0a2b681cf1b5f9","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf20.t27","health":"warn","module":"GF20"}],"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 — 20-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 6 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF20","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf20","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"9efc1e9e11d76314621e08b5d34fa54cd07ec75cea8d11045f76b846d001d450","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/parser.t27","health":"warn","module":"parser"}],"description":"parser.t27 — Parser for TRI-27 Assembly Builds AST from tokens produced by lexer","symbols":[{"name":"Parser","line":10},{"name":"Parser","line":18},{"name":"p","line":19},{"name":"Parser","line":52},{"name":"prev","line":53},{"name":"Parser","line":71},{"name":"Parser","line":86},{"name":"Parser","line":91},{"name":"Parser","line":100},{"name":"Parser","line":107},{"name":"Parser","line":114},{"name":"Parser","line":124},{"name":"test_block","line":134},{"name":"inv","line":143},{"name":"rule","line":152},{"name":"Parser","line":208},{"name":"const_token","line":216},{"name":"name","line":217},{"name":"value","line":218},{"name":"const_def","line":220},{"name":"symbol","line":233},{"name":"Parser","line":246},{"name":"data_token","line":247},{"name":"data_section","line":250},{"name":"label_token","line":265},{"name":"Parser","line":292},{"name":"dword_token","line":293},{"name":"value","line":294},{"name":"decl","line":296},{"name":"Parser","line":310},{"name":"dspace_token","line":311},{"name":"value","line":312},{"name":"decl","line":314},{"name":"Parser","line":328},{"name":"dtrit_token","line":329},{"name":"value","line":330},{"name":"decl","line":332},{"name":"Parser","line":346},{"name":"code_token","line":347},{"name":"label_token","line":365},{"name":"label_name","line":366},{"name":"symbol","line":373},{"name":"inst","line":388},{"name":"Parser","line":402},{"name":"opcode_token","line":403},{"name":"opcode","line":404},{"name":"operand","line":418},{"name":"op","line":427},{"name":"Parser","line":453},{"name":"reg_token","line":458},{"name":"value_token","line":472},{"name":"label_token","line":485},{"name":"lbracket_token","line":498},{"name":"reg_token","line":505},{"name":"op","line":513},{"name":"value_token","line":514},{"name":"Parser","line":540},{"name":"upper","line":541},{"name":"Parser","line":562},{"name":"spec_token","line":563},{"name":"name_token","line":564},{"name":"spec_decl","line":566},{"name":"Parser","line":583},{"name":"test_token","line":584},{"name":"name_token","line":585},{"name":"var_token","line":605},{"name":"expr_token","line":608},{"name":"var_token","line":623},{"name":"expr_token","line":625},{"name":"expr_token","line":654},{"name":"expr_token","line":663},{"name":"Parser","line":685},{"name":"inv_token","line":686},{"name":"name_token","line":687},{"name":"inv_decl","line":703},{"name":"Parser","line":717},{"name":"rule_token","line":718},{"name":"name_token","line":719},{"name":"expr_token","line":733},{"name":"Parser","line":751},{"name":"spec","line":760},{"name":"Parser","line":777},{"name":"Parser","line":789},{"name":"test_token","line":790},{"name":"name_token","line":810},{"name":"id","line":821},{"name":"test_case","line":839},{"name":"Parser","line":863},{"name":"inv_token","line":864},{"name":"name_token","line":884},{"name":"id","line":892},{"name":"inv_decl","line":908},{"name":"Parser","line":930},{"name":"bench_token","line":931},{"name":"name_token","line":951},{"name":"id","line":960},{"name":"bench_decl","line":977},{"name":"parse","line":1000},{"name":"tokens","line":1009},{"name":"ast_node_from_const","line":1019},{"name":"ast_node_from_label","line":1029},{"name":"Parser","line":1043},{"name":"next_c","line":1056},{"name":"codepoint","line":1057},{"name":"Parser","line":1075},{"name":"Parser","line":1086},{"name":"Parser","line":1103},{"name":"Parser","line":1114},{"name":"token","line":1118},{"name":"Parser","line":1131},{"name":"Parser","line":1138},{"name":"lower","line":1139},{"name":"source","line":1170},{"name":"ctx","line":1171},{"name":"source","line":1178},{"name":"ctx","line":1179},{"name":"source","line":1187},{"name":"ctx","line":1188},{"name":"source","line":1195},{"name":"ctx","line":1196},{"name":"source","line":1203},{"name":"ctx","line":1204},{"name":"source","line":1211},{"name":"ctx","line":1212},{"name":"source","line":1220},{"name":"ctx","line":1221},{"name":"source","line":1228},{"name":"ctx","line":1229},{"name":"source","line":1236},{"name":"ctx","line":1237},{"name":"source","line":1253},{"name":"ctx","line":1254},{"name":"source","line":1261},{"name":"ctx","line":1262},{"name":"source","line":1268},{"name":"source","line":1274},{"name":"ctx","line":1275},{"name":"source","line":1287},{"name":"source","line":1292}],"imports":[],"terms":["compiler","parser","prev","block","inv","rule","token","def","data","section","label","dword","decl","dspace","dtrit","inst","opcode","operand","reg","lbracket","upper","var","expr","case","bench","parse","tokens","ast","node","codepoint","lower","ctx"]},{"id":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_set.t27","health":"warn","module":"TernarySet"}],"description":"t27/specs/isa/ternary_set.t27 Ternary Set Operations Specification Ring 085 - Set operations on ternary-valued elements 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"SET_MAX","line":10},{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"set_insert","line":16},{"name":"set_contains","line":34},{"name":"set_union","line":47},{"name":"set_intersection","line":79},{"name":"set_difference","line":99},{"name":"set_cardinality","line":119}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","set","max","trit","neg","zero","pos","insert","contains","union","intersection","difference","cardinality"]},{"id":"9f64b649f7135a01834a1565e2704b40c1aafb3119a5e79b7ec3f6bac4f4117d","sources":[{"repo":"ghashtag/t27","path":"specs/brain/bus.t27","health":"ok","module":"brain-bus"}],"description":"bus.t27 — inter-region messaging contract (spec-first) Message shapes and routing rules expand with region specs.","symbols":[{"name":"BRAIN_BUS_VERSION","line":8},{"name":"brain_bus_version","line":10}],"imports":[],"terms":["brain","bus"]},{"id":"a00bd702944132e0f90601345516da4a46ff4edc7d602a4e9b337a6ad4fb3982","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf6.t27","health":"ok","module":"triformat-gf6"}],"description":"gf6.t27 -- GoldenFloat6 Encode/Decode GF6: 6-bit floating point with 1 sign + 2 exponent + 3 mantissa Bit layout: [S(1) E(2) M(3)] = [5:5][4:3][2:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS","line":24},{"name":"EXP_MAX","line":25},{"name":"EM_RATIO","line":28},{"name":"PHI_DIST","line":29},{"name":"PHI_BIAS_STATUS","line":31}],"imports":[],"terms":["numeric","gf6","triformat","total","bits","sign","exp","mant","shift","bias","max","ratio","phi","dist","status"]},{"id":"a01f9b3b1f8a96dde1e164deabda3e01311adb78a77676daeaf3c10d3532f57f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf8.t27","health":"ok","module":"triformat_bnf8"}],"description":"bnf8.t27 -- BNF8: Binary Network Float, 8-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf8","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/hir_tb.t27","health":"ok","module":"HIR_Testbench"}],"description":"t27/specs/fpga/testbench/hir_tb.t27 Hardware IR (HIR) Testbench Tests HIR node types, module hierarchy, and code generation paths","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_HIR_DEPTH","line":11},{"name":"MAX_NODES","line":12},{"name":"tick","line":23},{"name":"reset","line":28},{"name":"count_nodes","line":36},{"name":"check_depth_limit","line":46},{"name":"check_node_limit","line":50}],"imports":[{"name":"fpga::hir::Hir","line":8}],"terms":["fpga","testbench","hir","clk","period","max","depth","nodes","tick","reset","count","limit","node"]},{"id":"a0aad75ce804fcc056130bab7bd9b40af7145467cb0f0b93ed1147a2c6b89f8e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/inngest-dev.t27","health":"ok","module":"tool_mcp_inngest_dev"}],"description":"specs/tools/mcp/inngest-dev.t27 -- tool mcp/inngest-dev, MCP server \"inngest-dev\" (self-hosted Inngest, Railway project 999) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/inngest-dev). Tool names, descriptions (first line) and input keys are the server's own tools/list answer, recorded over Streamable HTTP on 2026-09-13 (initialize -> notifications/initialized -> tools/list, serverInfo name \"inngest-dev\", title \"Inngest Dev Server MCP Tools\", version 1.0.0, response header x-inngest-server-kind: cloud); nothing is typed by hand.","symbols":[{"name":"KIND","line":16},{"name":"FAMILY","line":17},{"name":"ID","line":18},{"name":"SERVER","line":19},{"name":"SERVER_VERSION","line":20},{"name":"TRANSPORT","line":21},{"name":"LAUNCH","line":24},{"name":"ENV","line":25},{"name":"CONFIG","line":27},{"name":"REPO","line":28},{"name":"QUALIFIED_ID","line":29},{"name":"SCHEMA","line":30},{"name":"SOURCE","line":31},{"name":"ABOUT","line":32},{"name":"ABOUT_SOURCE","line":33},{"name":"TOOLS","line":35},{"name":"TOOLS_ABOUT","line":36},{"name":"TOOLS_INPUTS","line":37},{"name":"RESOURCES","line":38},{"name":"RESOURCES_ABOUT","line":39},{"name":"TOOLS_NOTE","line":41},{"name":"EXTERNAL","line":43},{"name":"AGENTS","line":44},{"name":"AGENTS_NOTE","line":45},{"name":"WITNESS","line":47},{"name":"ENABLED","line":48}],"imports":[],"terms":["mcp","inngest","dev","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"a0ac4c99cda825e8fb9a82964e752d96e1806d22a65b354d27a383354fd3c538","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/arithmetic_invariant_sweep.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","arithmetic","invariant","sweep"]},{"id":"a10ca3fde42f89cdc371a5b78bce652bfdd697f2dbf85996b07ccc59e0a4076b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf24.t27","health":"warn","module":"GF24"}],"description":"t27/specs/numeric/gf24.t27 GoldenFloat24 — 24-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 7 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF24","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp_u16","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["numeric","gf24","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow","integer","approx"]},{"id":"a12179df0112258f07ba1d050c5ed48d527d40d0c5c9311669dbd5fd2f6b80da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/container.t27","health":"warn","module":"TrinityMemoryContainer"}],"description":"TMEM v1 framing. Include generated codecs C header before this header. Caller-owned buffers; no allocation. Valid input/output ranges must not overlap.","symbols":[{"name":"tm_crc32_update","line":4},{"name":"tm_crc32","line":20},{"name":"tm_read_u32","line":24},{"name":"tm_read_u64","line":31},{"name":"tm_write_u32","line":38},{"name":"tm_write_u64","line":43},{"name":"tm_pack","line":48},{"name":"tm_unpack","line":67}],"imports":[],"terms":["dmitrii","memory","container","crc32","read","u32","u64","write","pack","unpack"]},{"id":"a1431113c5c6deda18a9ac55bba10ae0e15fe487d2a8181788d5adc0be2f03da","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_full_adder.t27","health":"warn","module":"TernaryFullAdder"}],"description":"","symbols":[{"name":"tmul","line":3},{"name":"dot27","line":9},{"name":"sign0","line":20},{"name":"negate","line":21},{"name":"pack2","line":22},{"name":"pack3","line":27},{"name":"bneuron","line":32},{"name":"xor2","line":34},{"name":"maj3","line":42},{"name":"full_adder","line":49},{"name":"on_comb","line":76}],"imports":[],"terms":["ternary","full","adder","tmul","dot27","sign0","negate","pack2","pack3","bneuron","xor2","maj3","comb"]},{"id":"a16c8b2d502ca53955b1e51f3816d111ac056e5fe80904edbbc52fc269e45a92","sources":[{"repo":"ghashtag/t27","path":"specs/crons/t27-pr-dashboard.t27","health":"ok","module":"cron_t27_pr_dashboard"}],"description":"specs/crons/t27-pr-dashboard.t27 -- cron github-actions/t27/pr-dashboard Source of truth for the job card on t27.ai (#/crons?cron=github-actions/t27/pr-dashboard). The schedule was read from t27:.github/workflows/pr-dashboard.yml#L6. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","dashboard","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"a17c670a518c715c6597a88710a861b14addef86901199bdeaed17b9669318a0","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/train.hslm.t27","health":"ok","module":"trinity_capability_train_hslm"}],"description":"specs/trinity/capabilities/train.hslm.t27 -- capability trinity/train.hslm: hslm-train and the vendored external/zig-hslm: the local HSLM placeholder One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","train","hslm","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"a1cfc613efbfa850c3b9718a25d0b3217985192cb746bb938590ee047b8e4d4f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generated_pack_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","generated","pack","audit"]},{"id":"a1d8952a42208b161d951d524922fe049963a312a15721e7e5d5c95097729812","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/priority_queue.t27","health":"ok","module":"TriPriorityQueue"}],"description":"t27/specs/","symbols":[{"name":"PriorityQueue","line":13},{"name":"init","line":24},{"name":"enqueue","line":29},{"name":"dequeue","line":34},{"name":"peek","line":39},{"name":"is_empty","line":44},{"name":"deinit","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","priority","queue","init","enqueue","dequeue","peek","empty","deinit"]},{"id":"a1e332956a4113776724f90271af313d36df6a30bb5aab6514bb8df2729ef16c","sources":[{"repo":"ghashtag/t27","path":"specs/agents/i.t27","health":"ok","module":"agent_i"}],"description":"specs/agents/i.t27 -- agent t27/I, letter I of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/I). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent I - Iota (ISA)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/loop.t27","health":"ok","module":"tool_tri_loop"}],"description":"specs/tools/tri/loop.t27 -- tool tri/loop, the `tri loop` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/loop). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["loop","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"a22ab6b15a934f1a5acdfb05426eedff2efbb9587dbc79b47d383c42f7225fe9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/semicolon_phantom.t27","health":"warn","module":"semicolon_phantom"}],"description":"","symbols":[{"name":"Semi","line":3}],"imports":[],"terms":["bootstrap","fixtures","terminator","semicolon","phantom","semi"]},{"id":"a2763ea254fa12292e8679306c5d8f24bb81f8c13834f63a5c62737bb25f6af1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_add.t27","health":"ok","module":"TriGftAdd"}],"description":"TRI-NET verifiable GF-T16 ADDITION (same-sign). tri_gft_arith recomputes a GF-T multiply so a verifier can catch a wrong product; ADD is the other hosted skill (SKILL_GFT16_ADD) and was NOT verifiable. This adds the same-sign add recompute: align the smaller operand to the larger exponent, add the significands, and renormalize a single carry -- so a receipt claiming a GF-T add result can be checked, not just trusted.","symbols":[{"name":"MANT_ONE","line":22},{"name":"SIG_BITS","line":23},{"name":"gft_add_sb_p","line":31},{"name":"gft_add_offset_p","line":39},{"name":"gft_add_mant_p","line":54},{"name":"gft_add_sb","line":65},{"name":"gft_add_offset","line":68},{"name":"gft_add_mant","line":71},{"name":"gft_add_offset_c","line":76},{"name":"gft_add_mant_c","line":83},{"name":"verify_gft_add","line":93},{"name":"gft_add_offset_c_p","line":102},{"name":"gft_add_mant_c_p","line":109},{"name":"verify_gft_add_p","line":116},{"name":"gft_dot4_offset","line":132},{"name":"gft_dot4_mant","line":139},{"name":"gft_dot4_offset_p","line":150},{"name":"gft_dot4_mant_p","line":157}],"imports":[{"name":"base::types","line":20}],"terms":["net","gft","mant","one","sig","bits","offset","verify","dot4"]},{"id":"a288c0f16e4ea292150c59b5b5aad98b2f38e9da3d80150159655409eae826fd","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xornet.t27","health":"ok","module":"GftXorNet"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":108},{"name":"relu_prime","line":114},{"name":"on_comb","line":123}],"imports":[],"terms":["ternary","gft","xornet","xor","net","magadd","magsub","sadd","neg","magmul","smul","relu","prime","comb"]},{"id":"a2c1f1c987153e3d5dfd1983d6d41b0dfe5e1647ff9163a9fd6335ae28bbd454","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex_advanced.t27","health":"ok","module":"TriRegexAdvanced"}],"description":"t27/specs/","symbols":[{"name":"RegexFlags","line":13},{"name":"RegexMatch","line":17},{"name":"compile","line":29},{"name":"match","line":34},{"name":"replace","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","regex","advanced","flags","match","compile","replace"]},{"id":"a2e26da390ab3d79813181b875c49cf801464a286c1e4cf1b9eaa34ca5652a71","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/http.t27","health":"warn","module":"TrinityMemoryHTTP"}],"description":"Bounded HTTP envelope validation; sockets and clocks are OS primitives.","symbols":[{"name":"TMHttpResponse","line":3},{"name":"TMHttpEnvelope","line":10},{"name":"tm_http_lower","line":16},{"name":"tm_http_equal","line":20},{"name":"tm_http_fail","line":31},{"name":"tm_http_port","line":38},{"name":"tm_http_host","line":51},{"name":"tm_http_url","line":60},{"name":"tm_http_request","line":71},{"name":"tm_http_literal","line":163},{"name":"tm_http_crlf","line":167},{"name":"tm_http_response_header","line":171},{"name":"tm_http_request_header","line":186},{"name":"tm_http_response","line":200},{"name":"tm_http_chunks","line":269}],"imports":[],"terms":["dmitrii","memory","http","tmhttp","response","envelope","lower","equal","fail","port","host","url","request","literal","crlf","header","chunks"]},{"id":"a2ebde7a92192f30a6a511119da778e11d984f67438e9dd6f7706f3c2cf25afd","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_04_fn_signature.t27","health":"ok","module":null}],"description":"NEGATIVE fixture: function signatures. 6 false positives came from these.","symbols":[{"name":"insert","line":2},{"name":"find","line":5}],"imports":[],"terms":["bootstrap","fixtures","damage","negative","neg","signature","insert","find"]},{"id":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/git.t27","health":"warn","module":"git_commands"}],"description":"git.t27 — Git Integration with Tri Skill Workflow (ADR-002) Commands for git operations with skill validation and issue binding","symbols":[{"name":"git_commit","line":11},{"name":"registry_path","line":12},{"name":"registry_content","line":22},{"name":"skill","line":29},{"name":"issue_id","line":38},{"name":"skill_id","line":58},{"name":"status","line":62},{"name":"issue_prefix","line":66},{"name":"add_result","line":83},{"name":"commit_result","line":90},{"name":"commit_hash","line":100},{"name":"updated_registry","line":103},{"name":"git_push","line":132},{"name":"registry_path","line":133},{"name":"registry_content","line":142},{"name":"skill","line":149},{"name":"kind","line":166},{"name":"artifacts","line":167},{"name":"checkpoints","line":171},{"name":"has_spec","line":172},{"name":"has_docs","line":173},{"name":"checkpoints","line":186},{"name":"default_remote","line":197},{"name":"remote_url","line":198},{"name":"push_remote","line":209},{"name":"push_branch","line":210},{"name":"push_result","line":213},{"name":"skill_id","line":225},{"name":"timestamp","line":226},{"name":"updated_registry","line":227},{"name":"git_status_with_skill","line":249},{"name":"registry_path","line":250},{"name":"status","line":253},{"name":"registry_content","line":260},{"name":"skill","line":261},{"name":"find_active_or_sealed_skill","line":298},{"name":"registry","line":299},{"name":"current_branch","line":309},{"name":"find_last_sealed_skill","line":328},{"name":"registry","line":329},{"name":"update_registry_commit","line":348},{"name":"update_registry_push","line":363},{"name":"summarize_status","line":378},{"name":"modified","line":380},{"name":"added","line":381},{"name":"deleted","line":382},{"name":"count_checkpoints","line":406},{"name":"get_current_timestamp","line":411},{"name":"countSubstring","line":417},{"name":"intToStr","line":431},{"name":"digit","line":440},{"name":"len","line":446},{"name":"Skill","line":459},{"name":"SkillRegistry","line":479},{"name":"result","line":540},{"name":"result","line":544},{"name":"result","line":549},{"name":"result","line":553},{"name":"result","line":557}],"imports":[],"terms":["compiler","cli","git","commands","commit","registry","path","content","skill","status","prefix","hash","updated","push","kind","artifacts","checkpoints","docs","default","remote","url","branch","timestamp","find","active","sealed","summarize","modified","added","deleted","count","get","substring","int","str","digit","len"]},{"id":"a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_benchmarks.t27","health":"ok","module":"PerformanceBenchmarks"}],"description":"Performance benchmarks - characterize mesh stack limits Tests throughput, latency, queue overflow, timer accuracy","symbols":[{"name":"MAX_QUEUE_SIZE","line":8},{"name":"MAX_COUNTER","line":9},{"name":"TIMER_TICK_US","line":10},{"name":"create_queue","line":13},{"name":"queue_count","line":17},{"name":"queue_head","line":21},{"name":"queue_tail","line":25},{"name":"queue_enqueue","line":29},{"name":"queue_dequeue","line":38},{"name":"queue_is_full","line":48},{"name":"queue_is_empty","line":52},{"name":"inc_counter","line":57},{"name":"counter_will_overflow","line":65},{"name":"ticks_to_microseconds","line":70},{"name":"microseconds_to_ticks","line":74},{"name":"ticks_to_milliseconds","line":78}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","performance","benchmarks","max","queue","size","counter","timer","tick","create","count","head","tail","enqueue","dequeue","full","empty","inc","overflow","ticks","microseconds","milliseconds"]},{"id":"a348a6bc574e6fb2b5af6cb13db18dd55415193444e4120e48e62ff4b100b426","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/compute.t27","health":"ok","module":"TrinityMemoryCompute"}],"description":"Trinity Memory integer/scale kernels. Canonical executable source. Status: 0 success, -1 invalid input, -2 short output, -3 overflow. Pointers refer to valid arrays of their explicit lengths. Input and output buffers must not overlap. Inputs are read-only despite the pointer ABI. f64 is the host metadata bridge type; it does not replace ternary storage.","symbols":[{"name":"tm_compute_finite","line":8},{"name":"tm_add_i64_checked","line":12},{"name":"tm_dot_i64","line":23},{"name":"tm_scale_scores","line":66},{"name":"tm_argmax_scores","line":92}],"imports":[],"terms":["dmitrii","memory","compute","finite","i64","checked","dot","scale","scores","argmax"]},{"id":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/api_documenter.t27","health":"warn","module":"api_documenter"}],"description":"API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation","symbols":[{"name":"MAX_FUNCTIONS","line":7},{"name":"MAX_PARAMETERS","line":8},{"name":"MAX_EXAMPLES","line":9},{"name":"MAX_DESCRIPTIONS","line":10},{"name":"create_function_doc","line":13},{"name":"get_doc_function_id","line":20},{"name":"get_doc_param_count","line":24},{"name":"get_doc_return_type","line":28},{"name":"get_doc_complexity","line":32},{"name":"create_param_doc","line":37},{"name":"get_param_doc_id","line":44},{"name":"get_param_doc_type","line":48},{"name":"get_param_direction","line":52},{"name":"get_param_description_id","line":56},{"name":"DIR_IN","line":61},{"name":"DIR_OUT","line":62},{"name":"DIR_INOUT","line":63},{"name":"extract_function_signature","line":66},{"name":"extract_parameter_info","line":76},{"name":"create_function_example","line":85},{"name":"get_example_function_id","line":92},{"name":"get_example_input","line":96},{"name":"get_example_output","line":100},{"name":"get_example_explanation","line":104},{"name":"generate_function_example","line":109},{"name":"create_description_text","line":123},{"name":"get_description_id","line":130},{"name":"get_description_length","line":134},{"name":"get_description_importance","line":138},{"name":"get_description_category","line":142},{"name":"generate_function_description","line":147},{"name":"create_cross_reference","line":165},{"name":"get_xref_source","line":172},{"name":"get_xref_target","line":176},{"name":"get_xref_type","line":180},{"name":"get_xref_strength","line":184},{"name":"XREF_CALLS","line":189},{"name":"XREF_CALLED_BY","line":190},{"name":"XREF_RELATED","line":191},{"name":"XREF_SIMILAR","line":192},{"name":"detect_function_call","line":195},{"name":"create_module_doc","line":200},{"name":"get_module_doc_id","line":207},{"name":"get_module_function_count","line":211},{"name":"get_module_total_complexity","line":215},{"name":"get_module_description","line":219},{"name":"calculate_average_complexity","line":224},{"name":"generate_api_documentation","line":241},{"name":"calculate_documentation_coverage","line":269},{"name":"generate_usage_example","line":278},{"name":"create_dependency_graph","line":289},{"name":"validate_documentation","line":318},{"name":"generate_documentation_report","line":353}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","api","documenter","max","functions","parameters","examples","descriptions","create","doc","get","param","count","complexity","direction","description","dir","out","inout","extract","signature","parameter","info","example","explanation","generate","text","length","importance","category","cross","reference","xref","target","strength","calls","called","related","similar","detect","call","total","calculate","average","documentation","usage","dependency","graph","validate","report"]},{"id":"a3927bcab311e42d982b0667bf8b946da6c1bdb147d65a24985997700486ee36","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/cordic_top.t27","health":"ok","module":"igla-race-cordic-top"}],"description":"t27/specs/igla/race/cordic_top.t27 CORDIC top-level wrapper with AXI-stream-style handshaking Instantiates cordic_fixed core and adds clock/reset/valid/ready ports Parameterized Q15 fixed-point width (i16) Target: Lattice ECP5 or Xilinx Artix-7 via Yosys + nextpnr","symbols":[{"name":"cordic_top","line":20},{"name":"cordic_top_batch","line":43},{"name":"cordic_top_batch_inner","line":47},{"name":"CORDIC_GAIN_Q14","line":61},{"name":"ATAN_0","line":62},{"name":"ATAN_1","line":63},{"name":"ATAN_2","line":64},{"name":"ATAN_3","line":65},{"name":"ATAN_4","line":66},{"name":"ATAN_5","line":67},{"name":"ATAN_6","line":68},{"name":"ATAN_7","line":69},{"name":"cordic_x_next","line":71},{"name":"cordic_y_next","line":79},{"name":"cordic_z_next","line":87},{"name":"cordic_sin","line":95},{"name":"cordic_cos","line":133}],"imports":[{"name":"base::types","line":10}],"terms":["igla","race","cordic","top","batch","inner","gain","q14","atan","sin","cos"]},{"id":"a3ab6aec3a806403d4c098509b8a12fbaadbf61d70ae0485b598be864bede97b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/bytes.t27","health":"ok","module":"TriBytes"}],"description":"t27/specs/","symbols":[{"name":"Bytes","line":13},{"name":"empty","line":23},{"name":"from_slice","line":28},{"name":"clone","line":33},{"name":"equals","line":38},{"name":"slice","line":43},{"name":"concat","line":48},{"name":"index_of","line":53},{"name":"split","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","bytes","empty","slice","clone","equals","concat","index","split"]},{"id":"a3b21a33a8a8022b527e3f46362fb6df63fb6f2e5ee642a439d88862dd4722f3","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27","health":"ok","module":"cron_999_multibots_telegraf_periodic_webhook_health_check"}],"description":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27 -- cron inngest/999-multibots-telegraf/periodic-webhook-health-check Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/periodic-webhook-health-check). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/webhookHealthGuard.ts#L218. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","multibots","telegraf","periodic","webhook","health","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"a3ba5541115a575b99fce7ab3b7cfb3742d11f6273c93a0050b05275a23033fc","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dense_layer.t27","health":"ok","module":"Dense"}],"description":"t27/specs/","symbols":[{"name":"MIN_INPUT_SIZE","line":13},{"name":"MAX_INPUT_SIZE","line":14},{"name":"DenseConfig","line":20},{"name":"ActivationType","line":27},{"name":"forward","line":43},{"name":"backward","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","dense","layer","min","size","max","config","activation","forward","backward"]},{"id":"a3cc24914c0e7e7480e9f97b6a296794f6d1458c0f11863974798181f5169ae9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_cosine.t27","health":"warn","module":null}],"description":"VSA Cosine Similarity — TTT Dogfood Phase 2 Cosine similarity between two ternary vectors Formula: (a · b) / (||a|| * ||b||) Input: t0 = vector_a_ptr, t1 = vector_b_ptr, t2 = length Output: t0 = similarity (f64)","symbols":[],"imports":[],"terms":["fpga","tri27","vsa","cosine"]},{"id":"a47c5e78116355ea3be4624018b2fb0e3d9e2a8f71bc0f666d915b13a4243312","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_train2relu.t27","health":"ok","module":"GftTrain2Relu"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":108},{"name":"relu_prime","line":114},{"name":"on_comb","line":122}],"imports":[],"terms":["ternary","gft","train2relu","magadd","magsub","sadd","neg","magmul","smul","relu","prime","comb"]},{"id":"a4dc20bdc817a79850728a9eaabe89d0eb37c43735b56b7024b53033dfff4e08","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_bench_measure_target.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","bench","measure","target"]},{"id":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/timing.t27","health":"ok","module":"Timing"}],"description":"t27/specs/fpga/timing.t27 T27 Static Timing Analysis Specification Estimates critical path, slack, and Fmax from HIR module structure Artix-7 timing model: LUT=0.1ns, BRAM=2.0ns, DSP=2.5ns, routing=0.3ns Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"ArcKind","line":13},{"name":"TimingArc","line":23},{"name":"comb_arc","line":30},{"name":"reg_to_reg","line":39},{"name":"input_to_reg","line":48},{"name":"TimingPath","line":59},{"name":"timing_path","line":67},{"name":"is_met","line":77},{"name":"is_violated","line":81},{"name":"TimingConstraint","line":87},{"name":"clock_constraint","line":93},{"name":"clock_mhz","line":101},{"name":"TimingReport","line":114},{"name":"timing_ok","line":124},{"name":"timing_fail","line":136},{"name":"passed","line":148},{"name":"lut_delay_ps","line":154},{"name":"bram_delay_ps","line":158},{"name":"dsp_delay_ps","line":162},{"name":"routing_delay_ps","line":166},{"name":"setup_time_ps","line":170},{"name":"hold_time_ps","line":174},{"name":"path_delay","line":180},{"name":"slack","line":190},{"name":"fmax_from_delay","line":194},{"name":"est_comb_delay","line":201},{"name":"est_reg_to_reg_delay","line":205},{"name":"worst_path","line":209},{"name":"validate_constraint","line":226},{"name":"validate_arc","line":237}],"imports":[],"terms":["fpga","timing","arc","kind","comb","reg","path","met","violated","constraint","clock","mhz","report","fail","passed","lut","delay","bram","dsp","routing","setup","time","hold","slack","fmax","est","worst","validate"]},{"id":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","sources":[{"repo":"ghashtag/t27","path":"specs/git/status.t27","health":"ok","module":"GitStatus"}],"description":"specs/git/status.t27 Git Status Operations","symbols":[{"name":"status","line":14},{"name":"is_clean","line":19},{"name":"status_short","line":24},{"name":"status_long","line":29},{"name":"status_ignored","line":34},{"name":"filter_by_status","line":43},{"name":"filter_by_pattern","line":48},{"name":"filter_added","line":53},{"name":"filter_deleted","line":58},{"name":"filter_modified","line":63},{"name":"count_by_kind","line":72},{"name":"get_changed_files","line":77},{"name":"has_changes","line":82}],"imports":[{"name":"base::types","line":6},{"name":"git::schema","line":7}],"terms":["git","status","clean","short","long","ignored","filter","pattern","added","deleted","modified","count","kind","get","changed"]},{"id":"a5666136df528393dd97673ac9ea68fa10fdb3b7bc111b4be2d39b42c1091c91","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_uart_tx.t27","health":"warn","module":"TrinityFpgaUartTxT27"}],"description":"","symbols":[{"name":"on_clock","line":13}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","uart","clock"]},{"id":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/schema.t27","health":"warn","module":"Tools"}],"description":"specs/tools/schema.t27 Tools Types Specification","symbols":[{"name":"ToolID","line":14},{"name":"CallID","line":17},{"name":"ToolCategory","line":24},{"name":"ToolPermission","line":35},{"name":"ParameterSchema","line":46},{"name":"ToolParameters","line":55},{"name":"ToolMetadata","line":61},{"name":"ToolDefinition","line":71},{"name":"ToolContext","line":83},{"name":"ToolResult","line":93},{"name":"ToolCall","line":106},{"name":"ValidationError","line":118},{"name":"ValidationResult","line":125},{"name":"ToolRegistry","line":135},{"name":"ToolError","line":146},{"name":"MAX_OUTPUT_LENGTH","line":160},{"name":"DEFAULT_TIMEOUT_MS","line":161},{"name":"is_dangerous","line":168},{"name":"requires_permission","line":173},{"name":"is_allowed","line":178}],"imports":[{"name":"base::types","line":6},{"name":"session::schema","line":7}],"terms":["schema","tool","call","category","permission","parameter","parameters","metadata","definition","validation","registry","max","length","default","timeout","dangerous","requires","allowed"]},{"id":"a580e7e0ab08c1395f0a233f729efb3b8e2a0da6f1765afd5891fe4c1b456453","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/splay_tree.t27","health":"ok","module":"TriSplayTree"}],"description":"t27/specs/","symbols":[{"name":"SplayTree","line":13},{"name":"SplayNode","line":19},{"name":"init","line":33},{"name":"find","line":38},{"name":"insert","line":43},{"name":"delete","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","splay","tree","node","init","find","insert","delete"]},{"id":"a5dbcb7030b094474aaaa271acb30a8e360843416a8ce98070bfee8cc66ae80b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adamw.t27","health":"fail","module":"AdamW"}],"description":"t27/specs/ml/optimizer/adamw.t27","symbols":[{"name":"PHI","line":14},{"name":"DEFAULT_LEARNING_RATE","line":15},{"name":"DEFAULT_BETA1","line":16},{"name":"DEFAULT_BETA2","line":17},{"name":"PHI_BETA1","line":18},{"name":"PHI_BETA2","line":19},{"name":"DEFAULT_WEIGHT_DECAY","line":20},{"name":"DEFAULT_EPSILON","line":21},{"name":"DEFAULT_AMSGRAD","line":22},{"name":"AdamWConfig","line":28},{"name":"AdamWState","line":38},{"name":"OptimizerStepResult","line":46},{"name":"init","line":59},{"name":"step","line":68},{"name":"compute_bias_correction","line":93},{"name":"update_first_moment","line":99},{"name":"update_second_moment","line":105},{"name":"apply_weight_decay","line":111},{"name":"compute_update","line":117},{"name":"get_effective_beta","line":123},{"name":"amsgrad_update","line":131},{"name":"PHI","line":417},{"name":"DEFAULT_LEARNING_RATE","line":420},{"name":"DEFAULT_BETA1","line":421},{"name":"DEFAULT_BETA2","line":422},{"name":"DEFAULT_WEIGHT_DECAY","line":423},{"name":"DEFAULT_EPSILON","line":424},{"name":"DEFAULT_AMSGRAD","line":425},{"name":"PHI_INV","line":434},{"name":"PHI_INV_SQ","line":435},{"name":"PHI_INV_CUBED","line":436},{"name":"PHI_CANONICAL_BETA1","line":441},{"name":"PHI_CANONICAL_BETA2","line":442},{"name":"PHI_CANONICAL_WEIGHT_DECAY","line":443},{"name":"PHI_CANONICAL_LR","line":444},{"name":"PHI_DAMPED_BETA1","line":453},{"name":"PHI_DAMPED_BETA2","line":454},{"name":"RATIONAL_BETA1","line":466},{"name":"RATIONAL_WEIGHT_DECAY","line":467},{"name":"PhiVariant","line":476},{"name":"AdamWConfig","line":483},{"name":"AdamWState","line":493},{"name":"OptimizerStepResult","line":501},{"name":"init","line":513},{"name":"step","line":521},{"name":"compute_bias_correction","line":544},{"name":"update_first_moment","line":548},{"name":"update_second_moment","line":552},{"name":"apply_weight_decay","line":556},{"name":"compute_update","line":560},{"name":"get_effective_betas","line":566},{"name":"amsgrad_update","line":573}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"numeric::gf16","line":8}],"terms":["optimizer","adamw","adam","phi","default","learning","rate","beta1","beta2","weight","decay","epsilon","amsgrad","wconfig","wstate","step","init","compute","bias","correction","moment","second","apply","get","effective","beta","inv","cubed","canonical","damped","rational","variant","betas"]},{"id":"a65ff9c73705aa9ceec3d2ac8abda449cf68771040c2457378217bd89663cf81","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/sparse41_decoder.t27","health":"warn","module":"TrinitySparse41DecoderT27"}],"description":"","symbols":[{"name":"on_comb","line":4}],"imports":[],"terms":["dmitrii","memory","rtl","sparse41","decoder","sparse41decoder","comb"]},{"id":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/traffic_animator.t27","health":"warn","module":"traffic_animator"}],"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"MAX_PATHS","line":8},{"name":"ANIMATION_FPS","line":9},{"name":"MAX_FRAMES","line":10},{"name":"create_anim_packet","line":13},{"name":"get_anim_packet_id","line":20},{"name":"get_anim_packet_source","line":24},{"name":"get_anim_packet_dest","line":28},{"name":"get_anim_packet_progress","line":32},{"name":"update_packet_progress","line":37},{"name":"create_animation_path","line":52},{"name":"get_anim_path_id","line":59},{"name":"get_anim_path_node_count","line":63},{"name":"get_anim_path_current_position","line":67},{"name":"get_anim_path_type","line":71},{"name":"PATH_DIRECT","line":76},{"name":"PATH_MULTIHOP","line":77},{"name":"PATH_BROADCAST","line":78},{"name":"PATH_GATHER","line":79},{"name":"create_animation_frame","line":82},{"name":"get_anim_frame_id","line":89},{"name":"get_anim_frame_timestamp","line":93},{"name":"get_anim_frame_packet_count","line":97},{"name":"get_anim_frame_duration","line":101},{"name":"create_traffic_stats","line":106},{"name":"get_traffic_total_packets","line":113},{"name":"get_traffic_bytes","line":117},{"name":"get_traffic_packets_dropped","line":121},{"name":"get_traffic_avg_latency","line":125},{"name":"create_packet_color","line":130},{"name":"get_packet_color_type","line":137},{"name":"get_packet_color_priority","line":141},{"name":"get_packet_color_size","line":145},{"name":"get_packet_color_code","line":149},{"name":"PACKET_DATA","line":154},{"name":"PACKET_CONTROL","line":155},{"name":"PACKET_BEACON","line":156},{"name":"PACKET_ACK","line":157},{"name":"get_packet_visual_color","line":160},{"name":"create_animation_timeline","line":178},{"name":"get_timeline_current_frame","line":185},{"name":"get_timeline_total_frames","line":189},{"name":"get_timeline_loop_count","line":193},{"name":"get_timeline_speed","line":197},{"name":"advance_animation_frame","line":202},{"name":"create_traffic_pattern","line":220},{"name":"get_pattern_id","line":227},{"name":"get_pattern_burst_size","line":231},{"name":"get_pattern_interval","line":235},{"name":"get_pattern_duration","line":239},{"name":"generate_traffic_burst","line":244},{"name":"calculate_packet_position","line":260},{"name":"update_animation_packets","line":271},{"name":"render_animation_frame","line":305},{"name":"calculate_animation_complexity","line":314},{"name":"optimize_animation_performance","line":322},{"name":"generate_traffic_heat_map","line":334},{"name":"generate_traffic_animation","line":386},{"name":"create_animation_controls","line":414},{"name":"process_animation_control","line":422},{"name":"calculate_animation_stats","line":440}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","traffic","animator","max","packets","paths","animation","fps","frames","create","anim","packet","get","dest","progress","path","node","count","position","direct","multihop","broadcast","gather","frame","timestamp","duration","stats","total","bytes","dropped","avg","latency","color","priority","size","data","control","beacon","ack","visual","timeline","loop","speed","advance","pattern","burst","interval","generate","calculate","render","complexity","optimize","performance","heat","map","controls","process"]},{"id":"a6a7a8f430e0132d79aa6881521522066a94fa5b29c16cdc844405c1824c864f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/crypto.t27","health":"ok","module":"TriCrypto"}],"description":"t27/specs/","symbols":[{"name":"KeyPair","line":13},{"name":"generate_key_pair","line":23},{"name":"sha256","line":28},{"name":"hmac","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","key","pair","generate","sha256","hmac"]},{"id":"a7a393454d6c7633bfbf3ce21e91dcb7e2232921c6492192b7db580242981ed0","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/fib.t27","health":"ok","module":"tool_trinity_tri_fib"}],"description":"specs/tools/trinity/tri/fib.t27 -- tool gHashTag/trinity:tri/fib, the `tri fib` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/fib`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["fib","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/key_management.t27","health":"warn","module":"KeyManagement"}],"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","symbols":[{"name":"MAX_KEYS","line":7},{"name":"KEY_SIZE","line":8},{"name":"KEY_VALID","line":9},{"name":"KEY_INVALID","line":10},{"name":"ROTATION_INTERVAL","line":11},{"name":"create_key_entry","line":17},{"name":"get_key_valid","line":24},{"name":"get_key_id","line":28},{"name":"get_key_value","line":32},{"name":"get_key_timestamp","line":36},{"name":"create_key_store","line":43},{"name":"set_key_slot","line":47},{"name":"get_key_entry","line":60},{"name":"find_key_by_id","line":68},{"name":"add_key","line":82},{"name":"invalidate_key","line":97},{"name":"needs_rotation","line":108},{"name":"rotate_key","line":118},{"name":"get_active_key","line":128},{"name":"count_valid_keys","line":171}],"imports":[{"name":"base::types","line":5}],"terms":["net","key","management","max","keys","size","valid","invalid","rotation","interval","create","entry","get","timestamp","store","set","slot","find","invalidate","rotate","active","count"]},{"id":"a7f24bf9b6921c2d3b5bbb4bd4519b8bb42623a7bf54ba85ceb3b39e12799c74","sources":[{"repo":"ghashtag/t27","path":"specs/functions/content-scenario-clips-generate.t27","health":"ok","module":"fn_content_scenario_clips_generate"}],"description":"specs/functions/content-scenario-clips-generate.t27 -- function content-scenario-clips-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-scenario-clips-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateScenarioClips.ts#L221 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","content","scenario","clips","generate","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"a8197c8c62744c13e229dcea0384298bb118088c8de922a85faeff60ccb58588","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/int4.t27","health":"ok","module":"triformat-int4"}],"description":"int4.t27 — Int4 Signed 4-bit Integer Quantization Range: -8 to 7 Used for ultra-low precision quantization in ML","symbols":[{"name":"BITS","line":13},{"name":"MIN","line":14},{"name":"MAX","line":15},{"name":"RANGE","line":16},{"name":"MASK","line":18},{"name":"Int4","line":24},{"name":"int4_from_i8","line":33},{"name":"int4_from_i16","line":44},{"name":"int4_from_i32","line":55},{"name":"int4_from_f32","line":67},{"name":"rounded","line":78},{"name":"int4_to_i8","line":84},{"name":"int4_to_i16","line":90},{"name":"int4_to_i32","line":97},{"name":"int4_to_f32","line":103},{"name":"int4_to_f64","line":109},{"name":"int4_add","line":119},{"name":"result","line":120},{"name":"int4_sub","line":131},{"name":"result","line":132},{"name":"int4_mul","line":143},{"name":"result","line":144},{"name":"int4_div","line":156},{"name":"result","line":160},{"name":"int4_abs","line":171},{"name":"int4_neg","line":180},{"name":"int4_is_equal","line":192},{"name":"int4_is_greater","line":197},{"name":"int4_is_less","line":202},{"name":"int4_min","line":207},{"name":"int4_max","line":212},{"name":"int4_clamp","line":217},{"name":"int4_clamp_to_range","line":232},{"name":"int4_is_in_range","line":238},{"name":"int4_lerp","line":244},{"name":"fa","line":245},{"name":"fb","line":246},{"name":"result","line":247},{"name":"int4_sq","line":253},{"name":"int4_abs_diff","line":259},{"name":"diff","line":260}],"imports":[],"terms":["euler","numeric","int4","triformat","bits","min","max","range","mask","i16","i32","f32","rounded","f64","sub","mul","div","abs","neg","equal","greater","less","clamp","lerp","diff"]},{"id":"a83c6908f56dff1e15cc256e2a5230eafc57bbda16908f5618b1a690bf34d4b8","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_ripple_adder.t27","health":"warn","module":"TernaryRippleAdder"}],"description":"","symbols":[{"name":"tmul","line":5},{"name":"dot27","line":11},{"name":"sign0","line":22},{"name":"negate","line":23},{"name":"pack2","line":24},{"name":"pack3","line":29},{"name":"bneuron","line":34},{"name":"xor2","line":35},{"name":"maj3","line":42},{"name":"full_adder","line":44},{"name":"add2","line":52},{"name":"on_comb","line":87}],"imports":[],"terms":["ternary","ripple","adder","tmul","dot27","sign0","negate","pack2","pack3","bneuron","xor2","maj3","full","add2","comb"]},{"id":"a8a83daf267d0504d21379f7c2dce998cf5c9ea4847715134afb9b0afd952da9","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/08_modules_and_arrays.t27","health":"ok","module":"tutorial-08-modules"}],"description":"08 — Modules, visibility and arrays Lesson 8, the last one. How a spec names itself, what it exposes, how it pulls in another spec, and the array/index syntax used by every lookup table in the corpus. . After this, open specs/numeric/gf16.t27 -- it is a real spec built entirely","symbols":[{"name":"EXPORTED_WIDTH","line":32},{"name":"INTERNAL_SCALE","line":35},{"name":"scaled_width","line":37},{"name":"TRIT_VALUES","line":50},{"name":"POWERS_OF_TWO","line":52},{"name":"EXPONENT_BIAS","line":54},{"name":"power_of_two","line":62},{"name":"bias_for_width","line":66}],"imports":[{"name":"base::types","line":22}],"terms":["tutorial","modules","arrays","width","internal","scale","scaled","trit","values","powers","two","exponent","bias","power"]},{"id":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sequence_hdc.t27","health":"ok","module":"SequenceHdc"}],"description":"Module: Sequence Hyperdimensional Computing (HDC)","symbols":[{"name":"NGRAM_ORDER","line":18},{"name":"DEFAULT_DIM","line":21},{"name":"HEBDIAN_CHARS","line":24},{"name":"HEBDIAN_OFFSET","line":27},{"name":"ItemMemory","line":36},{"name":"NGramEncoder","line":50},{"name":"SequenceMemory","line":62},{"name":"EncodedSequence","line":76},{"name":"QueryResult","line":83},{"name":"initItemMemory","line":96},{"name":"deinitItemMemory","line":102},{"name":"getVector","line":108},{"name":"initEncoder","line":118},{"name":"encodeNGram","line":124},{"name":"initSequenceMemory","line":134},{"name":"deinitSequenceMemory","line":140},{"name":"store","line":146},{"name":"query","line":152},{"name":"queryTopK","line":158},{"name":"initDetector","line":168},{"name":"trainDetector","line":174},{"name":"detect","line":180}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10},{"name":"ternary::packed_trit","line":11}],"terms":["vsa","sequence","hdc","ngram","order","default","dim","hebdian","chars","offset","item","memory","encoder","encoded","query","init","deinit","get","vector","encode","store","top","detector","train","detect"]},{"id":"a960b7f1a9936d59ccf97203a7031161075c78d1ba6a0f7c78b65084d3a910a7","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/test.t27","health":"ok","module":"tool_tri_test"}],"description":"specs/tools/tri/test.t27 -- tool tri/test, the `tri test` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/test). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"a9a6c5e59b08e8c8746e04f84adce8407018d6d7e49adeaeba06ce0e250cef33","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/nested_types.t27","health":"warn","module":"nested_types"}],"description":"","symbols":[{"name":"Holder","line":3},{"name":"use_holder","line":12}],"imports":[],"terms":["bootstrap","fixtures","terminator","nested","holder"]},{"id":"aa02acb04870c6d0c72134e4feca4eeaf819084a5cf0409341fd3f9749105177","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitset.t27","health":"warn","module":"TriBitset"}],"description":"t27/specs/","symbols":[{"name":"Bitset","line":13},{"name":"init","line":24},{"name":"set","line":29},{"name":"clear","line":34},{"name":"test","line":39},{"name":"union","line":44},{"name":"intersect","line":49},{"name":"deinit","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","bitset","init","set","clear","union","intersect","deinit"]},{"id":"aa28703435668f5af1666adebde67002d5cd800c48e0550c36becfefe9032bdc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/variant.t27","health":"ok","module":"TriVariant"}],"description":"t27/specs/","symbols":[{"name":"Variant","line":13},{"name":"make","line":23},{"name":"get_tag","line":28},{"name":"match","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","variant","make","get","tag","match"]},{"id":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/local_processing.t27","health":"warn","module":"local_processing"}],"description":"Local Processing - edge computing and local data processing Enables computation at network edge for efficiency","symbols":[{"name":"MAX_TASKS","line":7},{"name":"MAX_RESULTS","line":8},{"name":"PROCESSING_TIMEOUT","line":9},{"name":"TASK_PRIORITY_HIGH","line":10},{"name":"TASK_PRIORITY_MEDIUM","line":11},{"name":"TASK_PRIORITY_LOW","line":12},{"name":"create_task","line":15},{"name":"get_task_id","line":22},{"name":"get_priority","line":26},{"name":"get_data_size","line":30},{"name":"get_processing_time","line":34},{"name":"create_result","line":39},{"name":"get_result_task_id","line":46},{"name":"get_status","line":50},{"name":"get_result_size","line":54},{"name":"get_result_value","line":58},{"name":"STATUS_PENDING","line":63},{"name":"STATUS_PROCESSING","line":64},{"name":"STATUS_COMPLETED","line":65},{"name":"STATUS_FAILED","line":66},{"name":"process_task","line":69},{"name":"aggregate_results","line":81},{"name":"find_task_by_priority","line":95},{"name":"find_highest_priority_task","line":110},{"name":"count_pending_tasks","line":128},{"name":"calculate_processing_load","line":144},{"name":"can_accept_task","line":158},{"name":"find_completed_result","line":171},{"name":"calculate_efficiency","line":188},{"name":"aggregate_data","line":212},{"name":"filter_data","line":229},{"name":"make_local_decision","line":244},{"name":"create_resource_state","line":257},{"name":"get_cpu_usage","line":264},{"name":"get_memory_usage","line":268},{"name":"get_task_count","line":272},{"name":"get_available_resources","line":276},{"name":"update_resources","line":281},{"name":"has_resources","line":300}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","local","processing","max","tasks","results","timeout","priority","high","medium","low","create","get","data","size","time","status","completed","failed","process","aggregate","find","highest","count","calculate","load","accept","efficiency","filter","make","decision","resource","state","cpu","usage","memory","available","resources"]},{"id":"aa3c58adfab37776f186d26fc60f47aed131db48bb9045875ecae8cbbe62b51c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/state.t27","health":"ok","module":"TriState"}],"description":"t27/specs/","symbols":[{"name":"State","line":13},{"name":"pure","line":22},{"name":"get","line":27},{"name":"put","line":32},{"name":"modify","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","state","pure","get","put","modify"]},{"id":"aa7a491dff3f3eeca6b4ddf68779ce179c51376db2414b0517b13cc9febee98b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/ternary_hw_verification.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","trinet","ternary","verification"]},{"id":"aab3e536f0afdce1db03304ea4591988b4f284f1a456a6d93bab689ed253eee2","sources":[{"repo":"ghashtag/t27","path":"specs/agents/r.t27","health":"ok","module":"agent_r"}],"description":"specs/agents/r.t27 -- agent t27/R, letter R of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/R). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent R - Rho (Runtime)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"aaf7d2d4ae26d149b68e8c50d010bcda79b6ba3bf30c782194ca37bd60f8c7b6","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/fpga.t27","health":"ok","module":"tool_tri_fpga"}],"description":"specs/tools/tri/fpga.t27 -- tool tri/fpga, the `tri fpga` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fpga). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["fpga","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"ab67427b1b6231635c4811115026c4cf04edf9bc820b52e02176879fb05f5602","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_encoding.t27","health":"ok","module":"PositionalEnc"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_MAX_LEN","line":13},{"name":"PosEncConfig","line":19},{"name":"forward","line":29}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","positional","encoding","enc","default","max","len","pos","config","forward"]},{"id":"ab7ee1773622aa46442aec7aeca5cdd1a1a3c36f6321451a5e426df80a75945b","sources":[{"repo":"ghashtag/t27","path":"specs/docs/system.t27","health":"ok","module":"docs_system"}],"description":"specs/docs/system.t27 -- the system documentation of t27 / Trinity as one declared document Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"TITLE","line":14},{"name":"CHAPTERS","line":16},{"name":"SOURCES","line":18},{"name":"DIAGRAMS","line":20},{"name":"LOCALES","line":22},{"name":"ENABLED","line":23}],"imports":[],"terms":["docs","system","kind","title","chapters","sources","diagrams","locales","enabled"]},{"id":"ac05a41e5d3f54a99466f848a89d6c13c12f300b3ff31994677cc9b4c429be34","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/test.t27","health":"ok","module":"tool_trinity_tri_test"}],"description":"specs/tools/trinity/tri/test.t27 -- tool gHashTag/trinity:tri/test, the `tri test` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/test`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"ac2a7dd606abd2a289cfcf53e1362ad9e1d930066a8feaa18748f131db5971ca","sources":[{"repo":"ghashtag/t27","path":"specs/automation/wrapup-auto.t27","health":"ok","module":"automation"}],"description":"","symbols":[{"name":"DEFAULT_NOTEBOOK","line":9},{"name":"VENV_PATH","line":10},{"name":"WrapUpInput","line":16},{"name":"WrapUpResult","line":26},{"name":"input","line":37}],"imports":[{"name":"memory::notebooklm","line":7}],"terms":["automation","wrapup","auto","default","notebook","venv","path","wrap"]},{"id":"ad0b455296e2c251b57c2bb0b95d5b6171cb884dd6547b6b994f5962ca011c21","sources":[{"repo":"ghashtag/t27","path":"specs/tools/registry.t27","health":"warn","module":"ToolsRegistry"}],"description":"specs/tools/registry.t27 Tools Registry Operations","symbols":[{"name":"create","line":14},{"name":"register","line":19},{"name":"unregister","line":24},{"name":"get","line":29},{"name":"has","line":34},{"name":"list","line":39},{"name":"list_by_category","line":44},{"name":"list_allowed","line":49},{"name":"list_dangerous","line":54},{"name":"set_permission","line":63},{"name":"get_permission","line":68},{"name":"allow","line":73},{"name":"deny","line":78},{"name":"ask","line":83},{"name":"register_custom","line":92},{"name":"list_custom","line":97},{"name":"unregister_custom","line":102},{"name":"register_all","line":111},{"name":"set_all_permissions","line":116},{"name":"clear","line":121},{"name":"find_by_description","line":130},{"name":"count","line":135},{"name":"is_empty","line":140}],"imports":[{"name":"base::types","line":6},{"name":"tools::schema","line":7}],"terms":["registry","create","register","unregister","get","list","category","allowed","dangerous","set","permission","allow","deny","ask","custom","permissions","clear","find","description","count","empty"]},{"id":"ad1f645f6b172b4c3ff97c07a1de07518b4344c47addd232f20a084035a674dd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/knuth_morris_pratt.t27","health":"ok","module":"TriKmp"}],"description":"t27/specs/","symbols":[{"name":"KMPPrefix","line":13},{"name":"build_prefix","line":23},{"name":"search","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","knuth","morris","pratt","kmp","kmpprefix","build","prefix"]},{"id":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/training.t27","health":"ok","module":"igla-coder-training"}],"description":"t27/specs/igla/coder/training.t27 IGLA-Coder training pipeline specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, return-if expressions, .push(), +=).","symbols":[{"name":"STAGE_PRETRAIN","line":19},{"name":"STAGE_MIDTRAIN","line":20},{"name":"STAGE_SFT","line":21},{"name":"STAGE_RL","line":22},{"name":"STAGE_OPD","line":23},{"name":"PRETRAIN_TOKENS","line":25},{"name":"SFT_TOKENS","line":26},{"name":"RL_ITERATIONS","line":27},{"name":"MAX_LR","line":29},{"name":"MIN_LR","line":30},{"name":"WARMUP_STEPS","line":31},{"name":"BATCH_SIZE","line":32},{"name":"WEIGHT_DECAY","line":33},{"name":"STRATEGY_EXECUTION_VERIFIED","line":39},{"name":"STRATEGY_AGENTIC_DEBATE","line":40},{"name":"STRATEGY_SACRED_OPCODE_AUG","line":41},{"name":"STRATEGY_DIFF_PATCH","line":42},{"name":"STRATEGY_TRACE_CORRECTNESS","line":43},{"name":"DATA_STRATEGY_COUNT","line":45},{"name":"TrainingStage","line":51},{"name":"DataSample","line":59},{"name":"TrainingConfig","line":68},{"name":"SacredLossTerm","line":80},{"name":"Grad","line":85},{"name":"cos_approx","line":94},{"name":"default_training_config","line":103},{"name":"compute_lr","line":118},{"name":"sacred_opcode_loss","line":128},{"name":"sacred_opcode_loss_inner","line":132},{"name":"tag_in_targets","line":140},{"name":"neg_log_approx","line":152},{"name":"execution_reward","line":169},{"name":"str_eq_inner","line":179},{"name":"opd_distill","line":191},{"name":"opd_distill_inner","line":195},{"name":"clip_gradients","line":207},{"name":"clip_gradients_inner","line":211},{"name":"sacred_reward","line":222},{"name":"random_logits","line":233},{"name":"random_batch","line":241},{"name":"train_step","line":250},{"name":"train_step_inner","line":258},{"name":"sgd_update","line":451},{"name":"sgd_update_inner","line":455},{"name":"count_verified_samples","line":464},{"name":"count_verified_samples_inner","line":468}],"imports":[{"name":"base::types","line":10},{"name":"math::constants","line":11},{"name":"math::igla_primitives","line":12},{"name":"igla::coder::prm","line":13}],"terms":["igla","coder","training","stage","pretrain","midtrain","sft","opd","tokens","iterations","max","min","warmup","steps","batch","size","weight","decay","strategy","execution","verified","agentic","debate","sacred","opcode","aug","diff","patch","trace","correctness","data","count","sample","config","loss","term","grad","cos","approx","default","compute","inner","tag","targets","neg","log","reward","str","distill","clip","gradients","random","logits","train","step","sgd","samples"]},{"id":"ad278f2c5876f7f6c78a0fd9bd181c12fe7311b243653275b18fc045a8afcb37","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/linker_tb.t27","health":"ok","module":"Linker_Testbench"}],"description":"t27/specs/fpga/testbench/linker_tb.t27 Linker Testbench Tests symbol resolution, address assignment, and section merging","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_SECTIONS","line":11},{"name":"BASE_ADDR","line":12},{"name":"SECTION_ALIGN","line":13},{"name":"tick","line":24},{"name":"reset","line":29},{"name":"align_addr","line":37},{"name":"section_size","line":43}],"imports":[{"name":"fpga::linker::Linker","line":8}],"terms":["fpga","testbench","linker","clk","period","max","sections","base","addr","section","align","tick","reset","size"]},{"id":"ad3a425fffc02fe0f02fc5c01dbb8ef29eefd702872aa00e4796e9e637abbce1","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/imports.t27","health":"ok","module":"trinity_matrix_imports"}],"description":"trinity_matrix/imports.t27 -- feature imports: a use of an existing corpus module (specs/base/types.t27); the symbols of the import are not used, so what is measured is that the import itself is accepted.","symbols":[{"name":"WIDTH","line":8},{"name":"twice","line":10}],"imports":[{"name":"base::types","line":6}],"terms":["bootstrap","fixtures","matrix","imports","width","twice"]},{"id":"ad98ed47c35feba495e6de7e3cf342a608496ed635c62ce32a55a85d4915133a","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_identity.t27","health":"ok","module":"String"}],"description":"t27/specs/","symbols":[{"name":"SACRED_MATH","line":13},{"name":"SacredIdentity","line":19},{"name":"IdentityProof","line":27},{"name":"SacredTimestamp","line":36},{"name":"IdentityLogEntry","line":44},{"name":"TrinityAwareness","line":52},{"name":"IdentityConfig","line":61}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","identity","math","proof","timestamp","log","entry","awareness","config"]},{"id":"ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_scenarios.t27","health":"ok","module":"ProductionScenarios"}],"description":"Production scenarios - edge case coverage Tests cold start, partition, join/leave, interference","symbols":[{"name":"STATE_COLD_START","line":8},{"name":"STATE_DISCOVERING","line":9},{"name":"STATE_CONNECTED","line":10},{"name":"STATE_PARTITIONED","line":11},{"name":"STATE_RECOVERING","line":12},{"name":"create_node_state","line":15},{"name":"node_state_of","line":19},{"name":"node_neighbors","line":23},{"name":"node_uptime","line":27},{"name":"cold_start","line":32},{"name":"discover_neighbor","line":36},{"name":"simulate_partition","line":49},{"name":"recover_from_partition","line":57},{"name":"node_join","line":66},{"name":"node_leave","line":72},{"name":"simulate_interference","line":83},{"name":"battery_drain","line":93},{"name":"check_max_hops","line":102}],"imports":[{"name":"base::types","line":5}],"terms":["net","production","scenarios","state","cold","start","discovering","connected","partitioned","recovering","create","node","neighbors","uptime","discover","neighbor","simulate","partition","recover","join","leave","interference","battery","drain","max","hops"]},{"id":"ae32961a90fd40b66ecab5b4d20fea7d20293038c00c728d191d211a9576986e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/tri-mcp.t27","health":"ok","module":"tool_mcp_tri_mcp"}],"description":"specs/tools/mcp/tri-mcp.t27 -- tool mcp/tri-mcp, MCP server \"tri-mcp\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-mcp). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"ae615368fd954b1c1696c0428f60644a160bd223472f2d6dea234af173ca89e7","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/web.site.t27","health":"ok","module":"trinity_capability_web_site"}],"description":"specs/trinity/capabilities/web.site.t27 -- capability trinity/web.site: The public site t27.ai (apps/website): explorers over the vendored spec corpus, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","web","site","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"ae64dc117c95217e11bbf10e7a52d5c474418a7600f6b0a7f4d58b79e1637193","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/probability.t27","health":"ok","module":"TriProbability"}],"description":"t27/specs/","symbols":[{"name":"bernoulli","line":14},{"name":"binomial","line":19},{"name":"poisson","line":24},{"name":"normal","line":29},{"name":"exponential","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","probability","bernoulli","binomial","poisson","normal","exponential"]},{"id":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/tensorpack.t27","health":"warn","module":"TrinityMemoryTensorPackSpec"}],"description":"specs/memory/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;","symbols":[{"name":"TMS_TTPK_MAGIC_0","line":12},{"name":"TMS_TTPK_MAGIC_1","line":13},{"name":"TMS_TTPK_MAGIC_2","line":14},{"name":"TMS_TTPK_MAGIC_3","line":15},{"name":"TMS_TTPK_VERSION","line":16},{"name":"TMS_TTPK_FLAGS","line":17},{"name":"TMS_TTPK_HEADER_BYTES","line":18},{"name":"TMS_TTPK_VERSION_OFFSET","line":19},{"name":"TMS_TTPK_FLAGS_OFFSET","line":20},{"name":"TMS_TTPK_RESERVED_OFFSET","line":21},{"name":"TMS_TTPK_RESERVED_BYTES","line":22},{"name":"TMS_TTPK_METADATA_LENGTH_OFFSET","line":23},{"name":"TMS_TTPK_METADATA_LENGTH_BYTES","line":24},{"name":"TMS_TTPK_TENSOR_COUNT_OFFSET","line":25},{"name":"TMS_TTPK_TENSOR_COUNT_BYTES","line":26},{"name":"TMS_TTPK_PAYLOAD_LENGTH_OFFSET","line":27},{"name":"TMS_TTPK_PAYLOAD_LENGTH_BYTES","line":28},{"name":"TMS_TTPK_METADATA_CRC_OFFSET","line":29},{"name":"TMS_TTPK_PAYLOAD_CRC_OFFSET","line":30},{"name":"TMS_TTPK_CRC_BYTES","line":31},{"name":"TMS_TTPK_CRC_COVERED_HEADER_BYTES","line":32},{"name":"TMS_TTPK_METADATA_OFFSET","line":33},{"name":"TMS_TTPK_NESTED_HEADER_BYTES","line":34},{"name":"TMS_TTPK_MAX_TENSORS","line":37},{"name":"TMS_TTPK_MAX_METADATA_BYTES","line":38},{"name":"TMS_TTPK_MAX_PAYLOAD_BYTES","line":39},{"name":"TMS_TTPK_MAX_TOTAL_TRITS","line":40},{"name":"TMS_TTPK_MAX_RANK","line":41},{"name":"TMS_TTPK_MAX_DIMENSION","line":42},{"name":"TMS_TTPK_MAX_NAME_BYTES","line":43},{"name":"TMS_TTPK_MAX_AXIS_BYTES","line":44},{"name":"TMS_TTPK_MAX_SCALE_AXIS","line":45},{"name":"TMS_TTPK_JSON_MAX_DEPTH","line":46},{"name":"TMS_TTPK_JSON_INTEGER_MAX_CHARS","line":47},{"name":"TMS_TTPK_CODEC_NAME_COUNT","line":48},{"name":"TMS_TTPK_ROOT_MEMBERS","line":53},{"name":"TMS_TTPK_DESCRIPTOR_MEMBERS","line":54},{"name":"TMS_TTPK_EMPTY_METADATA_BYTES","line":55},{"name":"TMS_TTPK_EMPTY_PACK_BYTES","line":56},{"name":"TtpkField","line":58},{"name":"TMS_TTPK_FLOAT_FIXED_MIN_EXPONENT","line":72},{"name":"TMS_TTPK_FLOAT_FIXED_MAX_EXPONENT","line":73},{"name":"TMS_TTPK_FLOAT_EXPONENT_MIN_DIGITS","line":74},{"name":"TMS_TTPK_ERR_DESCRIPTOR","line":78},{"name":"TMS_TTPK_ERR_TEXT","line":79},{"name":"TMS_TTPK_ERR_SHAPE","line":80},{"name":"TMS_TTPK_ERR_SCALE","line":81},{"name":"TMS_TTPK_ERR_AXES","line":82},{"name":"TMS_TTPK_ERR_OFFSET","line":83},{"name":"TMS_TTPK_ERR_SCHEMA","line":84},{"name":"TMS_TTPK_ERR_JSON","line":85},{"name":"tms_ttpk_container_bytes","line":88},{"name":"tms_ttpk_size_consistent","line":92},{"name":"tms_ttpk_header_limits_valid","line":96},{"name":"tms_ttpk_dimension_valid","line":102},{"name":"tms_ttpk_shape_count","line":107},{"name":"tms_ttpk_name_length_valid","line":120},{"name":"tms_ttpk_axis_length_valid","line":124},{"name":"tms_ttpk_text_byte_allowed","line":130},{"name":"tms_ttpk_axes_count_valid","line":135},{"name":"tms_ttpk_scale_axis_valid","line":139},{"name":"tms_ttpk_scale_count","line":146},{"name":"tms_ttpk_scale_valid","line":152},{"name":"tms_ttpk_nested_length","line":156},{"name":"tms_ttpk_chain_valid","line":161},{"name":"tms_ttpk_float_uses_fixed_notation","line":174},{"name":"tms_ttpk_total_trit_limit","line":179}],"imports":[],"terms":["dmitrii","memory","tensorpack","tensor","pack","tms","ttpk","magic","flags","header","bytes","offset","reserved","metadata","length","count","payload","crc","covered","nested","max","tensors","total","trits","rank","dimension","axis","scale","json","depth","integer","chars","codec","root","members","descriptor","empty","field","float","fixed","min","exponent","digits","err","text","shape","axes","schema","container","size","consistent","limits","valid","byte","allowed","chain","uses","notation","trit","limit"]},{"id":"ae78ffaeec23f0c29f7aece98aa361e30ae30e923624aba2aad40b23b4a9ef7f","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/blindspots.t27","health":"ok","module":"tool_trinity_tri_blindspots"}],"description":"specs/tools/trinity/tri/blindspots.t27 -- tool gHashTag/trinity:tri/blindspots, the `tri blindspots` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/blindspots`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["blindspots","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"ae8b1eae29f25b3803d69a1e650c5349fa7ed9e8bea6503be1bc6cfda1220f44","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/merge_sort.t27","health":"ok","module":"TriMergeSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14},{"name":"sort_in_place","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","merge","place"]},{"id":"af060b6e5cdb2ffe1de0a47995b2c621139367174cf85237d8217aa929af10f7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/mac_tb.t27","health":"warn","module":"MAC_Testbench"}],"description":"t27/specs/fpga/testbench/mac_tb.t27 MAC Unit Testbench Specification Tests ternary LUT multiplication, MAC operations, and accumulator","symbols":[{"name":"TIMESCALE","line":15},{"name":"CLK_PERIOD","line":16},{"name":"SIM_TIMEOUT","line":17},{"name":"TRIT_POS","line":20},{"name":"TRIT_ZERO","line":21},{"name":"TRIT_NEG","line":22},{"name":"generate_clock","line":52},{"name":"wait_cycles","line":59},{"name":"wait_mac_ready","line":69},{"name":"wait_mac_done","line":79},{"name":"make_trit_word","line":89},{"name":"trit","line":94},{"name":"encoded","line":95},{"name":"test_mac_lut_pos_pos","line":109},{"name":"a","line":110},{"name":"b","line":111},{"name":"result","line":112},{"name":"trit","line":113},{"name":"test_mac_lut_neg_neg","line":120},{"name":"a","line":121},{"name":"b","line":122},{"name":"result","line":123},{"name":"trit","line":124},{"name":"test_mac_lut_pos_neg","line":131},{"name":"a","line":132},{"name":"b","line":133},{"name":"result","line":134},{"name":"trit","line":135},{"name":"test_mac_lut_with_zero","line":142},{"name":"a","line":143},{"name":"b","line":144},{"name":"result","line":145},{"name":"trit","line":146},{"name":"test_mac_all_trit_combinations","line":153},{"name":"a_vals","line":154},{"name":"b_vals","line":155},{"name":"a_word","line":163},{"name":"b_word","line":164},{"name":"result","line":165},{"name":"trit","line":166},{"name":"expected","line":169},{"name":"test_mac_27_trit_word","line":182},{"name":"a","line":194},{"name":"b","line":195},{"name":"result","line":196},{"name":"test_mac_cycle_zero_acc","line":205},{"name":"a","line":206},{"name":"b","line":207},{"name":"result","line":208},{"name":"test_mac_cycle_with_acc","line":216},{"name":"a","line":217},{"name":"b","line":218},{"name":"result","line":219},{"name":"test_mac_dot_product","line":227},{"name":"vec1","line":228},{"name":"vec2","line":232},{"name":"result","line":237},{"name":"test_mac_reset","line":244},{"name":"acc0","line":253},{"name":"acc1","line":254},{"name":"status0","line":255},{"name":"status1","line":256},{"name":"test_mac_unit_independence","line":266},{"name":"a","line":267},{"name":"b","line":268},{"name":"acc0_before","line":272},{"name":"acc1_after","line":276},{"name":"acc0_after","line":277},{"name":"test_mac_invalid_unit","line":286},{"name":"a","line":287},{"name":"b","line":288},{"name":"result","line":289},{"name":"test_mac_overflow_handling","line":297},{"name":"large_acc","line":298},{"name":"a","line":299},{"name":"b","line":300},{"name":"result","line":302},{"name":"status","line":306},{"name":"test_mac_parallel_units","line":312},{"name":"a","line":313},{"name":"b","line":314},{"name":"results","line":315},{"name":"test_mac_latency","line":335},{"name":"a","line":336},{"name":"b","line":337},{"name":"start_cycle","line":339},{"name":"cycles","line":343},{"name":"run_tests","line":352}],"imports":[{"name":"base::types","line":9},{"name":"fpga::mac::ZeroDSP_MAC","line":10}],"terms":["fpga","testbench","mac","timescale","clk","period","sim","timeout","trit","pos","zero","neg","generate","clock","wait","cycles","ready","done","make","word","encoded","lut","combinations","vals","expected","cycle","acc","dot","product","vec1","vec2","reset","acc0","acc1","status0","status1","unit","independence","invalid","overflow","handling","large","status","parallel","units","results","latency","start"]},{"id":"af90831f6b558a67512c2ee354cc44cfffe5e338ee85eb9996ae8bfda4b44a24","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/api.http-server.t27","health":"ok","module":"trinity_capability_api_http_server"}],"description":"specs/trinity/capabilities/api.http-server.t27 -- capability trinity/api.http-server: The unified HTTP API server (tri serve) under src/api One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","api","http","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"b03d87fec868d2aa28f16a77d0dc77dd068c98b1443f9a2408896c72d4a3c227","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bpsk.t27","health":"warn","module":"ZeroDSP_BPSK"}],"description":"t27/specs/fpga/bpsk.t27 ZeroDSP BPSK modem core (TRI-NET 5.8 GHz mesh radio PHY). Byte -> +/-1 BPSK serializer with a Barker-13 preamble, plus an integer Barker-13 correlator + threshold for frame synchronization. Port of the trios-mesh Rust modem's synthesizable core to the t27 spec-first language. Datapath functions + state record only; clocking/ports are a backend concern.","symbols":[{"name":"BARKER13_BITS","line":18},{"name":"BARKER13_LEN","line":19},{"name":"WINDOW_MASK","line":20},{"name":"SYNC_THRESHOLD","line":25},{"name":"SYM_POS","line":28},{"name":"SYM_NEG","line":29},{"name":"PREAMBLE_SYMS","line":32},{"name":"LENGTH_SYMS","line":33},{"name":"BITS_PER_BYTE","line":34},{"name":"bit_to_symbol","line":49},{"name":"tx_load","line":58},{"name":"tx_next_symbol","line":70},{"name":"chip_contrib","line":87},{"name":"correlate","line":96},{"name":"rx_push","line":115},{"name":"sync_locked","line":120},{"name":"frame_symbol_count","line":125}],"imports":[{"name":"base::types","line":11}],"terms":["fpga","bpsk","zero","dsp","barker13","bits","len","window","mask","sync","threshold","sym","pos","neg","preamble","syms","length","per","byte","bit","load","chip","contrib","correlate","push","locked","frame","count"]},{"id":"b0439804871b40fdec6d6bd98dfe3f658e7a091e0f7d378d5d9b78999a5335de","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/trie.t27","health":"ok","module":"TriTrie"}],"description":"t27/specs/","symbols":[{"name":"TrieNode","line":13},{"name":"Trie","line":19},{"name":"empty","line":29},{"name":"insert","line":34},{"name":"get","line":39},{"name":"has_prefix","line":44},{"name":"keys_with_prefix","line":49},{"name":"remove","line":54}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","trie","node","empty","insert","get","prefix","keys","remove"]},{"id":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_protocol_stack.t27","health":"ok","module":"MeshProtocolStack"}],"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","symbols":[{"name":"MAX_NODES","line":8},{"name":"MAX_HOPS","line":9},{"name":"NODE_A","line":10},{"name":"NODE_B","line":11},{"name":"NODE_C","line":12},{"name":"build_packet","line":15},{"name":"extract_src","line":22},{"name":"extract_dst","line":26},{"name":"extract_ttl","line":30},{"name":"extract_payload","line":34},{"name":"decrement_ttl","line":39},{"name":"route_packet","line":51},{"name":"tx_path","line":70},{"name":"rx_path","line":75},{"name":"forward_packet","line":81}],"imports":[{"name":"base::types","line":5}],"terms":["net","mesh","protocol","stack","max","nodes","hops","node","build","packet","extract","dst","ttl","payload","decrement","route","path","forward"]},{"id":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/typechecker.t27","health":"ok","module":"TypeChecking"}],"description":"","symbols":[{"name":"TypeInfo","line":6},{"name":"TypeEntry","line":22},{"name":"MAX_SYMBOLS","line":31},{"name":"MAX_SCOPES","line":32},{"name":"ScopeStack","line":34},{"name":"SymbolTable","line":39},{"name":"TypeCheckResult","line":45},{"name":"FnSignature","line":53},{"name":"MAX_FNS","line":60},{"name":"FnRegistry","line":62},{"name":"symbol_table_init","line":67},{"name":"fn_registry_init","line":75},{"name":"ok_result","line":82},{"name":"error_result","line":92},{"name":"push_scope","line":102},{"name":"pop_scope","line":109},{"name":"lookup","line":116},{"name":"lookup_mutable","line":127},{"name":"insert","line":138},{"name":"register_fn","line":154},{"name":"set_fn_param","line":166},{"name":"lookup_fn","line":175},{"name":"lookup_fn_sig","line":186},{"name":"resolve_type","line":197},{"name":"is_numeric","line":215},{"name":"is_integer","line":221},{"name":"is_float","line":226},{"name":"is_signed","line":230},{"name":"type_name","line":234},{"name":"numeric_promotion","line":251},{"name":"is_comparison_op","line":259},{"name":"is_logical_op","line":263},{"name":"is_arithmetic_op","line":267},{"name":"check_assign","line":272},{"name":"can_implicitly_cast","line":281},{"name":"infer_literal","line":289},{"name":"infer_binary_result","line":297},{"name":"infer_expr","line":310},{"name":"check_stmt","line":370},{"name":"typecheck_fn_body","line":464},{"name":"typecheck_module","line":475},{"name":"typecheck","line":516}],"imports":[{"name":"compiler::parser","line":3},{"name":"compiler::lexer","line":4}],"terms":["compiler","typechecker","checking","info","entry","max","scopes","scope","stack","table","signature","fns","registry","init","push","pop","lookup","mutable","insert","register","set","param","sig","resolve","numeric","integer","float","signed","promotion","comparison","logical","arithmetic","assign","implicitly","cast","infer","literal","binary","expr","stmt","typecheck"]},{"id":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/execute.t27","health":"warn","module":"runtime-execute"}],"description":"runtime/execute.t27 — Runtime Execution Specification Task execution, promises, cancellation, timeouts","symbols":[{"name":"DEFAULT_TIMEOUT_MS","line":19},{"name":"MAX_CONCURRENT_EXECUTIONS","line":22},{"name":"POLL_INTERVAL_MS","line":25},{"name":"TASK_ID_LENGTH","line":28},{"name":"ExecResultType","line":31},{"name":"TaskState","line":39},{"name":"CancelReason","line":48},{"name":"TaskID","line":60},{"name":"Task","line":63},{"name":"TaskResult","line":74},{"name":"ExecContext","line":85},{"name":"PromiseState","line":93},{"name":"Promise","line":101},{"name":"ExecError","line":111},{"name":"task_id_generate","line":124},{"name":"timestamp","line":126},{"name":"bytes","line":129},{"name":"task_create","line":138},{"name":"task_with_timeout","line":151},{"name":"result_success","line":164},{"name":"result_timeout","line":177},{"name":"result_cancelled","line":190},{"name":"result_error","line":203},{"name":"context_create","line":216},{"name":"promise_create","line":226},{"name":"promise_with_resolve","line":238},{"name":"base","line":239},{"name":"promise_resolve","line":251},{"name":"promise_reject","line":260},{"name":"promise_cancel","line":268},{"name":"run","line":273},{"name":"cancel","line":278},{"name":"is_running","line":284},{"name":"is_pending","line":289},{"name":"is_terminal","line":294},{"name":"run_sync","line":299},{"name":"duration","line":302},{"name":"run_with_timeout","line":308},{"name":"duration","line":309},{"name":"fork","line":320},{"name":"is_success","line":328},{"name":"is_error","line":333},{"name":"is_timeout","line":338},{"name":"promise_is_pending","line":343},{"name":"promise_is_resolved","line":348},{"name":"promise_is_rejected","line":353},{"name":"duration","line":358},{"name":"error_create","line":363},{"name":"int_to_bytes","line":374},{"name":"get_timestamp_ms","line":389},{"name":"append_args","line":395},{"name":"append_args_slice","line":405},{"name":"concat_args","line":412},{"name":"concat_args_item","line":422},{"name":"task","line":433},{"name":"task","line":438},{"name":"id","line":443},{"name":"result","line":444},{"name":"id","line":449},{"name":"result","line":450},{"name":"id","line":455},{"name":"result","line":456},{"name":"id","line":461},{"name":"result","line":462},{"name":"task","line":467},{"name":"context","line":468},{"name":"id","line":490},{"name":"promise","line":491},{"name":"id","line":496},{"name":"resolve","line":497},{"name":"promise","line":498},{"name":"id","line":503},{"name":"result","line":504},{"name":"id","line":511},{"name":"reject","line":512},{"name":"id","line":520},{"name":"error","line":521},{"name":"id","line":692},{"name":"id","line":704},{"name":"task","line":716},{"name":"context","line":728}],"imports":[{"name":"std","line":12}],"terms":["runtime","execute","default","timeout","max","concurrent","executions","poll","interval","length","exec","state","cancel","reason","promise","generate","timestamp","bytes","create","success","cancelled","resolve","base","reject","running","terminal","sync","duration","fork","resolved","rejected","int","get","append","args","slice","concat","item"]},{"id":"b12ab087d817d07363484cb0dea375c6002c2d8476162fc5792343663de03229","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/rmsprop.t27","health":"ok","module":"Rmsprop"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_DECAY","line":13},{"name":"RMSpropConfig","line":19},{"name":"step","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","rmsprop","default","decay","config","step"]},{"id":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","sources":[{"repo":"ghashtag/t27","path":"specs/server/sse.t27","health":"warn","module":"server-sse"}],"description":"sse.t27 — Server-Sent Events Specification SSE connections, event streaming, reconnection handling","symbols":[{"name":"HEARTBEAT_INTERVAL_MS","line":19},{"name":"RETRY_DELAY_MS","line":22},{"name":"MAX_RETRIES","line":25},{"name":"EVENT_PREFIX","line":28},{"name":"DATA_PREFIX","line":31},{"name":"COMMENT_PREFIX","line":34},{"name":"ID_FIELD","line":37},{"name":"RETRY_FIELD","line":40},{"name":"SSEEventType","line":43},{"name":"SSEState","line":51},{"name":"SSECloseCode","line":60},{"name":"SSEEvent","line":72},{"name":"SSEConnection","line":80},{"name":"SSEClient","line":89},{"name":"SEServer","line":98},{"name":"SSEHeartbeat","line":104},{"name":"connection_new","line":113},{"name":"client_new","line":124},{"name":"event_create","line":135},{"name":"event_create_with_id","line":145},{"name":"heartbeat_create","line":155},{"name":"connection_is_active","line":163},{"name":"connection_can_reconnect","line":168},{"name":"connection_retry_inc","line":173},{"name":"connection_retry_reset","line":179},{"name":"connection_retry_delay","line":185},{"name":"connection_set_state","line":190},{"name":"connection_update_event_id","line":195},{"name":"event_format","line":200},{"name":"retry_val","line":220},{"name":"heartbeat_format","line":228},{"name":"concat","line":237},{"name":"append","line":246},{"name":"int_to_string","line":253},{"name":"digit","line":262},{"name":"char","line":263},{"name":"server_add_client","line":272},{"name":"server_remove_client","line":277},{"name":"server_broadcast","line":282},{"name":"formatted","line":283},{"name":"server_heartbeat","line":290},{"name":"heartbeat","line":291},{"name":"formatted","line":292},{"name":"server_client_count","line":299},{"name":"conn","line":308},{"name":"client","line":314},{"name":"event","line":319},{"name":"event","line":324},{"name":"heartbeat","line":329},{"name":"event","line":375},{"name":"formatted","line":376},{"name":"heartbeat","line":381},{"name":"formatted","line":382},{"name":"result","line":387},{"name":"result","line":392},{"name":"event","line":509},{"name":"conn","line":532},{"name":"heartbeat","line":545}],"imports":[{"name":"std","line":12}],"terms":["sse","heartbeat","interval","retry","delay","max","retries","event","prefix","data","field","sseevent","ssestate","sseclose","sseconnection","sseclient","seserver","sseheartbeat","connection","client","create","active","reconnect","inc","reset","set","state","format","val","concat","append","int","digit","char","remove","broadcast","formatted","count","conn"]},{"id":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-client-workspace.t27","health":"ok","module":"automation"}],"description":"specs/automation/crm-client-workspace.t27 -- one CRM workspace PER CLIENT: a dashboard and a conversation thread of the seller ABOUT one client, instead of one thread and one flat list for everybody. Written after the owner said (2026-09-13) that every client's chat lands in the same place. Host: 999-multibots-telegraf apps/vibee-editor -- render: agent_messages.thread (conversation.ts), body.client / ?client= on the four /api/agent routes (routes.ts), clientContextBlock in","symbols":[{"name":"KIND","line":31},{"name":"ID","line":32},{"name":"REPO","line":33},{"name":"VERSION","line":34},{"name":"CALLER","line":37},{"name":"CLIENT_IS","line":38},{"name":"CLIENT_ID_MIN_DIGITS","line":39},{"name":"CLIENT_ID_MAX_DIGITS","line":40},{"name":"THREAD_COLUMN","line":43},{"name":"THREAD_SELF","line":44},{"name":"THREAD_CLIENT_PREFIX","line":45},{"name":"THREAD_PARAM","line":46},{"name":"ROUTES_WITH_THREAD","line":47},{"name":"DELETE_CLEARS_ONLY_ITS_THREAD","line":48},{"name":"CONTEXT_INJECTED","line":49},{"name":"GATE_BEFORE_DB","line":50},{"name":"ROUTE_LIST","line":53},{"name":"ROUTE_CLIENT","line":54},{"name":"ROUTE_CLIENT_CHAT","line":55},{"name":"READS_THROUGH","line":56},{"name":"PANELS","line":57},{"name":"UNREACHABLE_SAYS","line":58},{"name":"NEW_READ_TOOLS","line":59},{"name":"DASHBOARD_SENDS_NOTHING_UNASKED","line":60},{"name":"DASHBOARD_STARTS_DUET","line":63},{"name":"DUET_CONTROL_GATE","line":64},{"name":"DUET_CONTROL_DEFAULT_DRY_RUN","line":65},{"name":"DUET_CONTROL_REAL_SEND_CONFIRMS","line":66},{"name":"DUET_CONTROL_TURNS_MAX","line":67},{"name":"DUET_CONTROL_TURNS_DEFAULT","line":68},{"name":"LIST_PAID_BADGE","line":71},{"name":"LIST_FILTER","line":72},{"name":"LIST_SAYS_PAID_UNKNOWN","line":73},{"name":"TABLE_RUNS","line":76},{"name":"RUN_PERSISTED_AT","line":77},{"name":"RUN_LOST_AFTER_MIN","line":78},{"name":"RUN_LOST_IS_STORED","line":79},{"name":"DASHBOARD_SEEN_LIVE","line":82},{"name":"RUN_SURVIVED_REDEPLOY","line":83},{"name":"Thread","line":85},{"name":"thread_for","line":91},{"name":"refused_before_db","line":97},{"name":"run_reads_as_lost","line":102}],"imports":[],"terms":["automation","crm","client","workspace","kind","caller","min","digits","max","thread","column","self","prefix","param","routes","delete","clears","injected","gate","route","list","chat","reads","through","panels","unreachable","says","read","dashboard","sends","nothing","unasked","starts","duet","control","default","dry","real","send","confirms","turns","paid","badge","filter","unknown","table","runs","persisted","lost","stored","seen","live","survived","redeploy","refused"]},{"id":"b1bf93d0a864129e5c53a03b96cfe5d52069b5b65a7472dcef61a58cd6b87e1f","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-health-check.t27","health":"ok","module":"cron_999_multibots_telegraf_health_check"}],"description":"specs/crons/999-multibots-telegraf-health-check.t27 -- cron inngest/999-multibots-telegraf/health-check Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/health-check). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L243. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","multibots","telegraf","health","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"b2fb3c2d66630369c42ae4aba3f80538661c5591de99f1b088c569185be83197","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27","health":"ok","module":"cron_999_multibots_telegraf_bot_owner_billing_L474"}],"description":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27 -- cron timer/999-multibots-telegraf/bot-owner-billing-L474 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/bot-owner-billing-L474). The schedule was read from 999-multibots-telegraf:src/services/bot-owner-billing.ts#L474. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"NOTE","line":24},{"name":"ON_FAILURE","line":25},{"name":"CONTROL","line":26}],"imports":[],"terms":["crons","multibots","telegraf","bot","owner","billing","l474","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"b3105d48a28faff92bc02e393c146c4e95cba6c68277eb54f27ec5abc3b77bb4","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/abandoned.t27","health":"ok","module":"tool_tri_abandoned"}],"description":"specs/tools/tri/abandoned.t27 -- tool tri/abandoned, the `tri abandoned` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/abandoned). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["abandoned","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"b33711b2a50bd614b706e77c813e7c31e71cd7f547489bf073c0de59c17de2fb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/vsim.t27","health":"ok","module":"tool_tri_vsim"}],"description":"specs/tools/tri/vsim.t27 -- tool tri/vsim, the `tri vsim` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/vsim). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["vsim","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"b354d78a042da1a057338c5bd4bd2e9426ab6540e4b0b24c959782d3793e1538","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/govern.t27","health":"ok","module":"tool_trinity_tri_govern"}],"description":"specs/tools/trinity/tri/govern.t27 -- tool gHashTag/trinity:tri/govern, the `tri govern` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/govern`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["govern","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"b37a891477e02303d3821493c20d8c3a59d9cc04b5a01f1948396712e31cc289","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_card.t27","health":"ok","module":"TriA2ACard"}],"description":"TRI-NET A2A agent card: what a node ADVERTISES it can compute, so a requester routes a task only to a host that hosts its (format-family, width). Without this, tri_a2a knows a skill's family (skill_family) but nothing checks a HOST actually serves it -- a GF-T16 task could be sent to a GF16-only node and silently fail. The card packs two masks into one u32 (no allocation, fits a heartbeat body): card = (family_mask << 16) | width_mask","symbols":[{"name":"FMT_GF_BINARY","line":18},{"name":"FMT_GFT","line":19},{"name":"HI_GF16","line":22},{"name":"HI_GFT16","line":23},{"name":"HI_GFT8","line":24},{"name":"HI_GFT4","line":25},{"name":"HI_GFT32","line":26},{"name":"HI_GFT64","line":27},{"name":"HI_GFT128","line":28},{"name":"family_bit","line":31},{"name":"make_card","line":36},{"name":"card_families","line":41},{"name":"card_widths","line":44},{"name":"hosts_family","line":49},{"name":"hosts_width","line":54},{"name":"can_serve","line":60},{"name":"skill_hi","line":71},{"name":"skill_card_family","line":79},{"name":"skill_card_width","line":92},{"name":"can_serve_skill","line":102},{"name":"GF_OP_ADD","line":111},{"name":"GF_OP_MUL","line":112},{"name":"op_bit","line":114},{"name":"make_card_ops","line":120},{"name":"card_ops","line":124},{"name":"hosts_op","line":128},{"name":"can_serve_op","line":134},{"name":"skill_op_suffix","line":143},{"name":"can_serve_skill_op","line":146}],"imports":[{"name":"base::types","line":15}],"terms":["net","a2a","card","a2acard","fmt","binary","gft","gf16","gft16","gft8","gft4","gft32","gft64","gft128","family","bit","make","families","widths","hosts","width","serve","skill","mul","ops","suffix"]},{"id":"b3ad9a90feacac048e38fccd041005f144d9a5c7a2ad52b23ec20b6a163339b0","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/dark_matter.t27","health":"ok","module":"DarkMatter"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","dark","matter"]},{"id":"b3fd0cb2764d0828d728fce767a042d999c182d5d148dbce8a380db78e01c53b","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_governance.t27","health":"ok","module":"SacredGovernance"}],"description":"t27/specs/","symbols":[{"name":"SacredRule","line":13},{"name":"SacredRuleType","line":18},{"name":"RuleViolation","line":22},{"name":"ViolationSeverity","line":32},{"name":"GovernanceState","line":36},{"name":"SacredComplianceReport","line":46},{"name":"PatchAction","line":56},{"name":"GovernanceResult","line":64}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","governance","rule","violation","severity","state","compliance","report","patch","action"]},{"id":"b46496033b9cc8164845ba0b6139ad8429704fea6f66a2dce46dd460ea892fac","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bond.t27","health":"ok","module":"TriComputeBond"}],"description":"TRI-NET compute bond escrow: the shared collateral that settle + challenge act on. tri_compute_settle credits rewards and tri_compute_challenge slashes wrong results, but each moved a bare balance. This spec gives one bonded lifecycle: FREE -> post (lock collateral out of balance) -> LOCKED -> resolve -> RELEASED (honest, bond returns) or SLASHED (wrong, bond forfeited). Locking is guarded against underflow (you cannot post more than you hold).","symbols":[{"name":"ST_FREE","line":14},{"name":"ST_LOCKED","line":15},{"name":"ST_RELEASED","line":16},{"name":"ST_SLASHED","line":17},{"name":"can_post","line":20},{"name":"balance_after_post","line":26},{"name":"locked_amount","line":35},{"name":"bond_state_after","line":53},{"name":"balance_after_resolve","line":73},{"name":"BOND_BPS_UNIT","line":95},{"name":"required_bond","line":100},{"name":"bond_covers","line":106},{"name":"GFT16_ET","line":117},{"name":"BOND_BPS_PER_TRIT","line":118},{"name":"rung_min_bps","line":120},{"name":"required_bond_rung","line":128},{"name":"bond_covers_rung","line":132}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","bond","free","locked","released","slashed","post","balance","amount","state","resolve","bps","unit","required","covers","gft16","per","trit","rung","min"]},{"id":"b4d0c294b461b507d9a2b078480f486ecf0d1a107c5a2cfc0f0348f71ba13f95","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_02_two_params.t27","health":"ok","module":"GenericConstPair"}],"description":"ADR-008 positive: two generic parameters, attested as `K, V` in 4 files.","symbols":[{"name":"Map","line":3}],"imports":[],"terms":["bootstrap","fixtures","generic","pos","two","params","pair","map"]},{"id":"b4ea36c976d78efe1add7b0ec95018c0f01877755c257dac8482eeb7576f1909","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_gates.t27","health":"warn","module":"TernaryGates"}],"description":"t27/specs/isa/ternary_gates.t27 Ternary Logic Gates Specification Ring 063 - Basic ternary logic gates for balanced ternary Defines AND, OR, NOT, and other fundamental operations","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"GATE_DELAY_UNIT","line":21},{"name":"ternary_not","line":30},{"name":"ternary_not_with_delay","line":36},{"name":"ternary_min","line":50},{"name":"ternary_and","line":60},{"name":"a_mapped","line":62},{"name":"b_mapped","line":63},{"name":"result_mapped","line":64},{"name":"ternary_max","line":75},{"name":"ternary_or","line":85},{"name":"a_mapped","line":86},{"name":"b_mapped","line":87},{"name":"result_mapped","line":88},{"name":"ternary_consensus","line":98},{"name":"ternary_majority","line":111},{"name":"ternary_any","line":144},{"name":"ternary_all","line":160},{"name":"GateResult","line":174},{"name":"GateTruthTable","line":179},{"name":"vals","line":268},{"name":"vals","line":277},{"name":"vals","line":290},{"name":"vals","line":303},{"name":"left","line":310},{"name":"right","line":311},{"name":"vals","line":322},{"name":"left","line":329},{"name":"right","line":330},{"name":"vals","line":341},{"name":"vals","line":350},{"name":"vals","line":374},{"name":"vals","line":385},{"name":"vals","line":396}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","gates","trit","neg","zero","pos","gate","delay","unit","min","mapped","max","consensus","majority","truth","table","vals","left","right"]},{"id":"b4efcdd7ff229ef26b03587176dbb0f75351666de1e6c689597be0322349e3dd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/set.t27","health":"ok","module":"TriSet"}],"description":"t27/specs/","symbols":[{"name":"HashSet","line":13},{"name":"init","line":22},{"name":"add","line":27},{"name":"contains","line":32},{"name":"union","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","set","hash","init","contains","union"]},{"id":"b4f898411bc6cccc09a47732cf878e2c8e66cfba98f2cab064cca6e54895c489","sources":[{"repo":"ghashtag/t27","path":"specs/agents/z.t27","health":"ok","module":"agent_z"}],"description":"specs/agents/z.t27 -- agent t27/Z, letter Z of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Z). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Z - Zeta (Zero-Touch)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"b51af6a3f3b8f57dcb826250294e271f635ea4b36294d2d4e8fa957dda1ccb14","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_02_match_arms.t27","health":"ok","module":null}],"description":"NEGATIVE fixture: match arms. 17 false positives came from these.","symbols":[{"name":"classify","line":2}],"imports":[],"terms":["bootstrap","fixtures","damage","negative","neg","match","arms","classify"]},{"id":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cache_management.t27","health":"ok","module":"cache_management"}],"description":"Cache Management - intelligent caching at network edge Enables efficient data caching and retrieval","symbols":[{"name":"MAX_ENTRIES","line":7},{"name":"MAX_CACHE_SIZE","line":8},{"name":"CACHE_HIT_THRESHOLD","line":9},{"name":"EVICTION_AGE","line":10},{"name":"create_cache_entry","line":13},{"name":"get_data_id","line":20},{"name":"get_access_count","line":24},{"name":"get_age","line":28},{"name":"get_entry_size","line":32},{"name":"update_access_count","line":37},{"name":"update_age","line":51},{"name":"find_entry","line":60},{"name":"cache_hit","line":75},{"name":"get_entry","line":86},{"name":"add_entry","line":97},{"name":"find_eviction_candidate","line":141},{"name":"remove_entry","line":170},{"name":"access_cache","line":183},{"name":"age_cache","line":197},{"name":"calculate_hit_rate","line":213},{"name":"calculate_utilization","line":222},{"name":"find_most_popular","line":227},{"name":"find_least_popular","line":247},{"name":"should_prefetch","line":269},{"name":"calculate_efficiency","line":291},{"name":"create_cache_stats","line":304},{"name":"get_hits","line":311},{"name":"get_misses","line":315},{"name":"get_cache_size","line":319},{"name":"get_evictions","line":323},{"name":"update_stats","line":328}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","cache","management","max","entries","size","hit","threshold","eviction","age","create","entry","get","data","access","count","find","candidate","remove","calculate","rate","utilization","most","popular","least","prefetch","efficiency","stats","hits","misses","evictions"]},{"id":"b5779b849ac30c14dd7849ae7fd9ddad131d47aea14029d6e00b691f9ab6e922","sources":[{"repo":"ghashtag/t27","path":"specs/nn/sacred_attention.t27","health":"warn","module":null}],"description":"specs/nn/sacred_attention.t27 Sacred Attention: Multi-head attention with φ-based scaling scale = head_dim^(-PHI^3) instead of standard 1/sqrt(head_dim)","symbols":[],"imports":[],"terms":["sacred","attention"]},{"id":"b59a2bc4b80d44dd510559f38fc195bd72be88a0433938e519020fc5b8e57256","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_cell.t27","health":"ok","module":"Lstm"}],"description":"t27/specs/","symbols":[{"name":"LSTM_DEFAULT_HIDDEN","line":13},{"name":"LSTMConfig","line":19},{"name":"LSTMState","line":24},{"name":"LSTMWeights","line":29},{"name":"forward","line":45},{"name":"init","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","lstm","cell","default","hidden","lstmconfig","lstmstate","lstmweights","forward","init"]},{"id":"b5bd1483d24af17707d8fcf03dbb6f011bc8462773423ebe9b8ee4e506a76a4e","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-signal-health-self.t27","health":"ok","module":"cron_trinity_signal_health_self"}],"description":"specs/crons/trinity-signal-health-self.t27 -- cron github-actions/trinity/signal-health-self Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/signal-health-self). The schedule was read from trinity:.github/workflows/signal-health-self.yml#L17. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","signal","health","self","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/apb_bridge.t27","health":"ok","module":"ApbBridge"}],"description":"t27/specs/fpga/apb_bridge.t27 APB (Advanced Peripheral Bus) Bridge Specification for Trinity T27 FPGA HIR Register-mapped peripheral bridge for low-bandwidth peripherals Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"APB_ADDR_WIDTH","line":12},{"name":"APB_DATA_WIDTH","line":13},{"name":"APB_STRB_WIDTH","line":14},{"name":"ApbTransfer","line":18},{"name":"ApbConfig","line":26},{"name":"PeripheralMap","line":39},{"name":"ApbRequest","line":48},{"name":"ApbResponse","line":58},{"name":"apb_bridge","line":66},{"name":"apb_bridge_with_error","line":79},{"name":"peripheral_map","line":92},{"name":"apb_read_request","line":101},{"name":"apb_write_request","line":111},{"name":"apb_ok_response","line":121},{"name":"apb_error_response","line":129},{"name":"strb_width","line":139},{"name":"addr_bits_for_peripherals","line":143},{"name":"peripheral_addr_offset","line":156},{"name":"is_read","line":161},{"name":"is_write","line":165},{"name":"apb_port_count","line":169},{"name":"select_peripheral","line":187},{"name":"validate_apb","line":202},{"name":"validate_peripheral_map","line":222}],"imports":[],"terms":["fpga","apb","bridge","addr","width","data","strb","transfer","config","peripheral","map","request","response","read","write","bits","peripherals","offset","port","count","select","validate"]},{"id":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/linker.t27","health":"ok","module":"Linking"}],"description":"","symbols":[{"name":"LinkError","line":5},{"name":"ModuleRef","line":13},{"name":"SymbolRef","line":19},{"name":"LinkResult","line":27},{"name":"MAX_MODULES","line":35},{"name":"MAX_SYMBOLS","line":36},{"name":"link_result_ok","line":38},{"name":"link_result_err","line":48},{"name":"module_ref_new","line":58},{"name":"symbol_ref_new","line":66},{"name":"resolve_import","line":76},{"name":"is_cyclic","line":89},{"name":"validate_pub_access","line":93},{"name":"count_pub_symbols","line":97}],"imports":[{"name":"compiler::parser","line":3}],"terms":["compiler","linker","linking","link","ref","max","modules","err","resolve","import","cyclic","validate","access","count"]},{"id":"b6ff8c82fb2e360cd1339f1da16d70f08ead54de9d015425f608d1d19101d81e","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_signed_dot4.t27","health":"warn","module":"GftSignedDot4"}],"description":"","symbols":[{"name":"magmul","line":9},{"name":"magadd","line":24},{"name":"magsub","line":44},{"name":"smul","line":69},{"name":"sadd","line":74},{"name":"dot2","line":89},{"name":"on_comb","line":90}],"imports":[],"terms":["ternary","gft","signed","dot4","magmul","magadd","magsub","smul","sadd","dot2","comb"]},{"id":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","sources":[{"repo":"ghashtag/t27","path":"specs/depin/prove.t27","health":"ok","module":"depin"}],"description":"DePIN proof-of-useful-compute spec Issue #40 — L-TRI-1: POST /prove endpoint","symbols":[{"name":"ProveRequest","line":12},{"name":"MerkleProof","line":22},{"name":"ProveResponse","line":28},{"name":"MiningEpoch","line":37},{"name":"derive_phi_challenge","line":48},{"name":"verify_phi_response","line":52},{"name":"gf16_mul","line":56},{"name":"gf16_dot4","line":60},{"name":"derive_phi_challenge_v2","line":64},{"name":"compute_phi_response_v2","line":68},{"name":"verify_phi_response_v2","line":72},{"name":"gf16_matmul","line":76},{"name":"pack_gf16_matrix","line":80},{"name":"merkle_root","line":84},{"name":"verify_merkle","line":88}],"imports":[],"terms":["depin","prove","request","merkle","proof","response","mining","epoch","derive","phi","challenge","verify","gf16","mul","dot4","compute","matmul","pack","matrix","root"]},{"id":"b70f5629049065477023aa4b4d51eb8272de0750a5c4809d7d445c698729c1a0","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-trinity-test.t27","health":"ok","module":"skill_trinity_trinity_test"}],"description":"specs/skills/trinity-trinity-test.t27 -- skill trinity/trinity-test Source of truth for the skill card on t27.ai (#/skills?skill=trinity/trinity-test). The skill body lives in gHashTag/trinity at .claude/skills/trinity-test/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/trinity-test/SKILL.md, sha256 648c7f095f0b...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"b7538d332141732ec58bda9a10caf10a04d000aef901752fe67a03b1dbd73daa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/radix_sort.t27","health":"ok","module":"TriRadixSort"}],"description":"t27/specs/","symbols":[{"name":"RadixSorter","line":13},{"name":"sort","line":23},{"name":"sort_in_place","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","radix","sorter","place"]},{"id":"b7dd2658343c40cb234c9abcafc5e9b9d492a4a0f4649b4c767009477b94b342","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/bot.tri-bot.t27","health":"ok","module":"trinity_capability_bot_tri_bot"}],"description":"specs/trinity/capabilities/bot.tri-bot.t27 -- capability trinity/bot.tri-bot: tri-bot: the Telegram bot runner One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","bot","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"b7f53f9c19f47f997361c3aa223dbc8b59aa62d9af13607a242b85c6e173082b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_analysis_tb.t27","health":"warn","module":"PowerAnalysis_Testbench"}],"description":"t27/specs/fpga/testbench/power_analysis_tb.t27 Power Analysis Testbench Tests utilization parsing, power estimation, and budget checking","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"TYPICAL_BUDGET_MW","line":11},{"name":"tick","line":20},{"name":"reset","line":25}],"imports":[{"name":"fpga::power_analysis::PowerAnalysis","line":8}],"terms":["fpga","testbench","power","analysis","clk","period","typical","budget","tick","reset"]},{"id":"b8651d49170f8c475f2f7967332aba84bf88ebdcf0cf8969195774cf4c2f7172","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/lexer.t27","health":"warn","module":null}],"description":"lexer.t27 — Lexical Analyzer for TRI-27 Assembly Tokenizes .t27 source code into tokens for the parser","symbols":[{"name":"TokenType","line":5},{"name":"Token","line":67},{"name":"Lexer","line":77},{"name":"Lexer","line":87},{"name":"Lexer","line":101},{"name":"Lexer","line":118},{"name":"Lexer","line":127},{"name":"Lexer","line":139},{"name":"Lexer","line":146},{"name":"is_ident_char","line":173},{"name":"Lexer","line":184},{"name":"Lexer","line":218},{"name":"Lexer","line":255},{"name":"Lexer","line":275},{"name":"Lexer","line":290},{"name":"Lexer","line":305},{"name":"Lexer","line":325},{"name":"Lexer","line":356},{"name":"tokenize","line":491},{"name":"is_digit","line":507},{"name":"is_alpha","line":511}],"imports":[],"terms":["fpga","compiler","parser","lexer","token","ident","char","tokenize","digit","alpha"]},{"id":"b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/pattern_predictor.t27","health":"warn","module":"pattern_predictor"}],"description":"Pattern Predictor - simple pattern prediction and anomaly detection Enables networks to learn patterns and predict future behavior","symbols":[{"name":"MAX_SAMPLES","line":7},{"name":"PATTERN_WINDOW","line":8},{"name":"ANOMALY_THRESHOLD","line":9},{"name":"create_sample","line":12},{"name":"get_sample_value","line":19},{"name":"get_sample_timestamp","line":23},{"name":"get_sample_sequence","line":27},{"name":"get_sample_valid","line":31},{"name":"create_pattern_storage","line":36},{"name":"get_pattern_samples","line":43},{"name":"get_pattern_count","line":47},{"name":"get_trend_direction","line":51},{"name":"create_sample_array","line":56},{"name":"get_sample_array_upper","line":68},{"name":"get_sample_array_lower","line":72},{"name":"get_sample_at","line":76},{"name":"calculate_moving_average","line":87},{"name":"detect_trend","line":123},{"name":"predict_next_value","line":139},{"name":"is_anomalous","line":158},{"name":"detect_repeating_pattern","line":169},{"name":"calculate_variance","line":196}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","pattern","predictor","max","samples","window","anomaly","threshold","create","sample","get","timestamp","sequence","valid","storage","count","trend","direction","array","upper","lower","calculate","moving","average","detect","predict","anomalous","repeating","variance"]},{"id":"b8c4bb5052b100a6e9fd6fdd7e3c760a73fa72ea05dddbe0c51bb2541dea0dff","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/rabin_karp.t27","health":"ok","module":"TriRabinKarp"}],"description":"t27/specs/","symbols":[{"name":"RKState","line":13},{"name":"init","line":25},{"name":"search","line":30}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","rabin","karp","rkstate","init"]},{"id":"b8cf25569fa15fece9aa281586f9998c767d802a8275a83ecee58694e774b64e","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/attention_mechanism.t27","health":"ok","module":"Attention"}],"description":"t27/specs/","symbols":[{"name":"SCALE_FACTOR","line":13},{"name":"AttentionConfig","line":19},{"name":"AttentionOutput","line":26},{"name":"forward","line":36},{"name":"backward","line":41}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","attention","mechanism","scale","factor","config","forward","backward"]},{"id":"b8e959ad3ee29deca1899eada363eb7bd86f6e257f6462eb87ed482c1879f4d6","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf16.t27","health":"warn","module":null}],"description":"gf16.t27 — GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]","symbols":[],"imports":[],"terms":["fpga","numeric","gf16"]},{"id":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","sources":[{"repo":"ghashtag/t27","path":"specs/config/paths.t27","health":"ok","module":"config-paths"}],"description":"config/paths.t27 — Config Paths Specification Path resolution, directory creation, validation","symbols":[{"name":"DEFAULT_CONFIG_DIR","line":19},{"name":"DEFAULT_DATA_DIR","line":22},{"name":"DEFAULT_CACHE_DIR","line":25},{"name":"DEFAULT_LOG_DIR","line":28},{"name":"MAX_PATH_LENGTH","line":31},{"name":"PATH_SEPARATOR","line":34},{"name":"ENV_HOME","line":37},{"name":"ENV_XDG_CONFIG","line":40},{"name":"ENV_XDG_DATA","line":43},{"name":"PathType","line":50},{"name":"PathValidation","line":59},{"name":"PathResult","line":69},{"name":"ResolvedPaths","line":77},{"name":"DirCheckResult","line":87},{"name":"paths_default","line":99},{"name":"resolve_config_dir","line":111},{"name":"dir","line":112},{"name":"resolve_data_dir","line":117},{"name":"dir","line":118},{"name":"resolve_cache_dir","line":123},{"name":"dir","line":124},{"name":"resolve_log_dir","line":129},{"name":"dir","line":130},{"name":"resolve_temp_dir","line":135},{"name":"resolve_directory","line":140},{"name":"path","line":141},{"name":"is_absolute","line":170},{"name":"has_invalid_characters","line":175},{"name":"home_directory","line":186},{"name":"join","line":192},{"name":"normalize","line":204},{"name":"is_sep","line":210},{"name":"parent","line":225},{"name":"normalized","line":226},{"name":"basename","line":242},{"name":"normalized","line":243},{"name":"directory_exists","line":260},{"name":"directory_writable","line":266},{"name":"ensure_directory","line":272},{"name":"resolve_all","line":292},{"name":"config_dir","line":293},{"name":"data_dir","line":294},{"name":"cache_dir","line":295},{"name":"log_dir","line":296},{"name":"temp_dir","line":297},{"name":"config_file","line":298},{"name":"validate_path","line":311},{"name":"extension","line":332},{"name":"normalized","line":333},{"name":"concat","line":350},{"name":"concat_path_separator","line":364},{"name":"concat_with_byte","line":369},{"name":"path_result_create","line":376},{"name":"path_result_valid","line":386},{"name":"result","line":395},{"name":"result","line":400},{"name":"result","line":413},{"name":"result","line":418},{"name":"result","line":423},{"name":"result","line":428},{"name":"result","line":433},{"name":"result","line":438},{"name":"result","line":443},{"name":"result","line":448},{"name":"path","line":453},{"name":"result","line":454},{"name":"path","line":459},{"name":"result","line":460}],"imports":[{"name":"std","line":12}],"terms":["config","paths","default","dir","data","cache","log","max","path","length","separator","env","home","xdg","validation","resolved","resolve","temp","directory","absolute","invalid","characters","join","normalize","sep","parent","normalized","basename","exists","writable","ensure","validate","extension","concat","byte","create","valid"]},{"id":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/int8.t27","health":"warn","module":"Int8"}],"description":"t27/specs/numeric/int8.t27 Int8 - 8-bit signed integer NUMERIC-STANDARD-001 Agent 10 (P1)","symbols":[{"name":"BITS","line":18},{"name":"Int8","line":22},{"name":"encode","line":29},{"name":"clamped","line":30},{"name":"decode","line":40},{"name":"raw","line":41},{"name":"min_value","line":51},{"name":"max_value","line":55},{"name":"range","line":59},{"name":"num_values","line":63},{"name":"validate_format","line":69},{"name":"MEMORY_RATIO_VS_FP32","line":83},{"name":"add","line":87},{"name":"val_a","line":88},{"name":"val_b","line":89},{"name":"result","line":90},{"name":"sub","line":94},{"name":"val_a","line":95},{"name":"val_b","line":96},{"name":"result","line":97},{"name":"mul","line":101},{"name":"val_a","line":102},{"name":"val_b","line":103},{"name":"result","line":104},{"name":"div","line":108},{"name":"val_a","line":109},{"name":"val_b","line":110},{"name":"result","line":111},{"name":"mod","line":115},{"name":"val_a","line":116},{"name":"val_b","line":117},{"name":"result","line":118},{"name":"neg","line":122},{"name":"abs","line":126},{"name":"val","line":127},{"name":"eq","line":133},{"name":"ne","line":137},{"name":"lt","line":141},{"name":"le","line":145},{"name":"gt","line":149},{"name":"ge","line":153},{"name":"and","line":159},{"name":"or","line":163},{"name":"xor","line":167},{"name":"not","line":171},{"name":"shl","line":175},{"name":"clamped_shift","line":176},{"name":"shr","line":180},{"name":"clamped_shift","line":181},{"name":"val","line":183},{"name":"result","line":184}],"imports":[{"name":"base::testing","line":8},{"name":"base::benchmarking","line":9}],"terms":["euler","fpga","int8","bits","encode","clamped","decode","raw","min","max","range","num","values","validate","format","memory","ratio","fp32","val","sub","mul","div","mod","neg","abs","xor","shl","shift","shr"]},{"id":"b98ddfba7485ee8b15edf9072a02ea6f5449ee50733f2fd03b57e33db6a50294","sources":[{"repo":"ghashtag/t27","path":"specs/storage/migrate.t27","health":"ok","module":"StorageMigrate"}],"description":"specs/storage/migrate.t27 Data Migration Operations","symbols":[{"name":"MigrationStep","line":14},{"name":"MigrationStatus","line":22},{"name":"version","line":34},{"name":"set_version","line":39},{"name":"apply","line":44},{"name":"apply_to","line":49},{"name":"rollback","line":54},{"name":"status","line":59},{"name":"register","line":64},{"name":"list_available","line":69},{"name":"list_pending","line":74},{"name":"migrate_1_legacy_projects","line":83},{"name":"migrate_2_session_diffs","line":89},{"name":"MIGRATIONS","line":98}],"imports":[{"name":"base::types","line":6},{"name":"storage::schema","line":7}],"terms":["storage","migrate","migration","step","status","set","apply","rollback","register","list","available","legacy","projects","session","diffs","migrations"]},{"id":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","sources":[{"repo":"ghashtag/t27","path":"specs/server/http.t27","health":"ok","module":"server-http"}],"description":"http.t27 — HTTP Server Specification HTTP listener, request/response handling, middleware","symbols":[{"name":"DEFAULT_PORT","line":20},{"name":"MAX_CONNECTIONS","line":23},{"name":"REQUEST_TIMEOUT","line":26},{"name":"METHOD_GET","line":29},{"name":"METHOD_POST","line":32},{"name":"METHOD_PUT","line":35},{"name":"METHOD_DELETE","line":38},{"name":"STATUS_OK","line":41},{"name":"STATUS_NOT_FOUND","line":44},{"name":"STATUS_ERROR","line":47},{"name":"CONTENT_TYPE_JSON","line":50},{"name":"CONTENT_TYPE_SSE","line":53},{"name":"HttpMethod","line":60},{"name":"HttpStatus","line":68},{"name":"HttpHeaders","line":74},{"name":"HttpRequest","line":81},{"name":"HttpResponse","line":89},{"name":"ServerConfig","line":96},{"name":"MiddlewareContext","line":104},{"name":"Middleware","line":111},{"name":"ServerState","line":114},{"name":"config_default","line":126},{"name":"response_ok","line":136},{"name":"response_not_found","line":149},{"name":"response_error","line":158},{"name":"request_empty","line":167},{"name":"middleware_context_create","line":177},{"name":"status_is_success","line":186},{"name":"status_is_client_error","line":191},{"name":"status_is_server_error","line":196},{"name":"request_get","line":201},{"name":"request_post","line":211},{"name":"method_to_string","line":225},{"name":"is_json_content","line":235},{"name":"is_sse_content","line":240},{"name":"cfg","line":249},{"name":"resp","line":256},{"name":"resp","line":261},{"name":"resp","line":266},{"name":"req","line":271},{"name":"body","line":277},{"name":"req","line":278},{"name":"status","line":284},{"name":"status","line":289},{"name":"status","line":294},{"name":"status","line":424}],"imports":[{"name":"std","line":12}],"terms":["http","default","port","max","connections","request","timeout","method","get","post","put","delete","status","found","content","json","sse","headers","response","config","middleware","state","empty","create","success","client","cfg","resp","req"]},{"id":"b99c892c8a0fdcd11528ddd0ca8d52d8646e0c9b1ce420ae16610e8ede3de5c4","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot2.t27","health":"warn","module":"GftDot2"}],"description":"","symbols":[{"name":"gft_mul","line":19},{"name":"gft_add","line":41},{"name":"on_comb","line":68}],"imports":[],"terms":["ternary","gft","dot2","mul","comb"]},{"id":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/dataset.t27","health":"warn","module":"igla-coder-dataset"}],"description":"t27/specs/igla/coder/dataset.t27 Dataset builder for (prompt, RTL) pairs from Trinity templates","symbols":[{"name":"DataSample","line":15},{"name":"generate_prompt","line":27},{"name":"augment_prompt","line":84},{"name":"generate_prompt_with_bits","line":95},{"name":"generate_rtl_for_template","line":184},{"name":"expand_family_variants","line":331},{"name":"generate_parameterized_dataset_inner","line":340},{"name":"generate_parameterized_dataset","line":357},{"name":"prepend_comment","line":363},{"name":"count_dataset_by_template","line":369},{"name":"count_by_template_inner","line":373},{"name":"generate_augmented_dataset","line":384},{"name":"generate_augmented_inner","line":388},{"name":"generate_comment_variants","line":396},{"name":"mutate_with_prefix","line":412},{"name":"mutate_with_suffix","line":418},{"name":"generate_mutation_variants","line":428},{"name":"generate_full_augmented_dataset","line":438},{"name":"apply_mutations_to_dataset","line":443},{"name":"permute_clock_edge","line":457},{"name":"permute_reset_polarity","line":463},{"name":"permute_signed_unsigned","line":469},{"name":"generate_permutation_variants","line":476},{"name":"generate_large_dataset_inner","line":486},{"name":"generate_large_dataset","line":496},{"name":"contaminate_with_multiply","line":506},{"name":"generate_contrastive_pair","line":512},{"name":"sacred_compliance_embed","line":521},{"name":"compose_modules","line":535},{"name":"generate_uart_rx","line":543},{"name":"generate_alu_slice","line":551},{"name":"generate_memory_controller","line":561},{"name":"generate_hierarchical_dataset","line":569},{"name":"generate_random_bitwidth","line":579},{"name":"ScoredDataSample","line":589},{"name":"compress_rtl_to_abstract","line":604},{"name":"regenerate_from_abstract","line":614},{"name":"round_trip_accuracy","line":622},{"name":"count_char_matches","line":630},{"name":"fix_repository_issue","line":642},{"name":"export_dataset_to_json","line":653},{"name":"export_json_inner","line":658},{"name":"export_dataset_to_csv","line":669},{"name":"export_csv_inner","line":675},{"name":"count_unique_templates","line":683},{"name":"count_unique_inner","line":687},{"name":"string_in_list","line":695},{"name":"dataset_diversity_score","line":703},{"name":"generate_openrtlset_scale_dataset","line":713},{"name":"score_dataset_sample","line":730},{"name":"has_substring","line":737},{"name":"match_at","line":743},{"name":"filter_dataset_by_quality","line":751},{"name":"filter_quality_inner","line":755},{"name":"filter_dataset_by_sacred","line":766},{"name":"filter_sacred_inner","line":770},{"name":"compute_dataset_quality_report","line":780},{"name":"quality_sum_inner","line":786},{"name":"dataset_synthesis_score","line":795},{"name":"dataset_synthesis_score_inner","line":801},{"name":"compose_n_modules","line":816},{"name":"compose_n_modules_body","line":827},{"name":"generate_parametric_variations","line":837},{"name":"expand_param_grid","line":847},{"name":"generate_random_composition","line":858},{"name":"generate_10k_dataset","line":872},{"name":"estimate_10k_size","line":882},{"name":"estimate_compositional_size","line":892},{"name":"expand_dataset_compositional_inner","line":900},{"name":"expand_dataset_compositional","line":910},{"name":"make_sample","line":922},{"name":"generate_dataset_inner","line":930},{"name":"generate_dataset","line":941},{"name":"count_dataset_samples","line":947},{"name":"count_dataset_inner","line":951}],"imports":[{"name":"base::types","line":7},{"name":"igla::coder::eval","line":8}],"terms":["igla","coder","dataset","data","sample","generate","prompt","augment","bits","rtl","template","expand","family","variants","parameterized","inner","prepend","count","augmented","mutate","prefix","suffix","mutation","full","apply","mutations","permute","clock","edge","reset","polarity","signed","unsigned","permutation","large","contaminate","multiply","contrastive","pair","sacred","compliance","embed","compose","modules","uart","alu","slice","memory","controller","hierarchical","random","bitwidth","scored","compress","abstract","regenerate","round","trip","accuracy","char","matches","json","csv","unique","templates","list","diversity","score","openrtlset","scale","substring","match","filter","quality","compute","report","sum","synthesis","parametric","variations","param","grid","composition","10k","estimate","size","compositional","make","samples"]},{"id":"b9be1025b920bfa48dc7a90b04ded9e71f123096b3c03bee0b6afb8837cd64bb","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_lv.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring"]},{"id":"ba1839b37f4d2f410b20ad046fa80e343d9ff95865c1ed824871f74cb0d5e76f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_bitwise.t27","health":"warn","module":"TernaryBitwise"}],"description":"t27/specs/isa/ternary_bitwise.t27 Ternary Bitwise Operations Specification Ring 068 - Bitwise AND, OR, XOR for ternary data Defines bitwise operations on ternary word representations","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"WORD_SIZE","line":21},{"name":"tritwise_and","line":29},{"name":"tritwise_or","line":48},{"name":"tritwise_xor","line":68},{"name":"tritwise_not","line":91},{"name":"tritwise_nand","line":105},{"name":"tritwise_nor","line":117},{"name":"tritwise_xnor","line":129},{"name":"tritwise_mask","line":147},{"name":"tritwise_merge","line":161}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","bitwise","trit","neg","zero","pos","word","size","tritwise","xor","nand","nor","xnor","mask","merge"]},{"id":"ba9ef1c2084a71ad72f7b8c536de5669835bf957c4aec2bd54bc6b3496c2184c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/phi_weights.t27","health":"ok","module":"IglaRacePhiWeights"}],"description":"t27/specs/igla/race/phi_weights.t27 IGLA RACE: the Z[phi] weight datapath -- the missing link between RACE's ternary codes and the GFTernary alphabet they were named after. WHY THIS EXISTS. Measured 2026-08-13: specs/igla/race/ternary_inference.t27:20 \"Weights are stored as ternary codes (0=zero, 1=+1, 2=-1)\"","symbols":[{"name":"GAT_ZERO","line":48},{"name":"GAT_POS","line":49},{"name":"GAT_NEG","line":50},{"name":"RACE_ZERO","line":54},{"name":"RACE_POS","line":55},{"name":"RACE_NEG","line":56},{"name":"ONE_A","line":60},{"name":"ONE_B","line":61},{"name":"PHI_A","line":62},{"name":"PHI_B","line":63},{"name":"GAIN30_A","line":68},{"name":"GAIN30_B","line":69},{"name":"apply_phi_a","line":73},{"name":"apply_phi_b","line":77},{"name":"apply_neg_phi_a","line":82},{"name":"apply_neg_phi_b","line":86},{"name":"weight_apply_a","line":93},{"name":"weight_apply_b","line":100},{"name":"acc_add_a","line":111},{"name":"acc_add_b","line":115},{"name":"gain_after_2_a","line":121},{"name":"gain_after_2_b","line":125},{"name":"gain_is_integer_pair","line":132},{"name":"weight_sign","line":137},{"name":"on_comb","line":147}],"imports":[{"name":"base::types","line":45}],"terms":["igla","race","phi","weights","gat","zero","pos","neg","one","gain30","apply","weight","acc","gain","integer","pair","sign","comb"]},{"id":"baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/audio_overview.t27","health":"ok","module":"enrichment"}],"description":"audio_overview.t27 — Bilingual Audio Overview for NotebookLM Ring 091 — API-only multilingual enrichment","symbols":[{"name":"API_CREATE_ENDPOINT","line":12},{"name":"API_DELETE_ENDPOINT","line":13},{"name":"API_POLL_ENDPOINT","line":14},{"name":"AUDIO_DIR","line":15},{"name":"POLL_INTERVAL_MS","line":16},{"name":"POLL_TIMEOUT_MS","line":17},{"name":"Lang","line":23},{"name":"AudioStatus","line":28},{"name":"AudioOverviewRequest","line":34},{"name":"AudioOverviewResponse","line":41},{"name":"AudioOverviewStatus","line":47},{"name":"AudioFile","line":53},{"name":"AudioReport","line":60},{"name":"create_audio_overview","line":76},{"name":"poll_audio_status","line":81},{"name":"delete_default_audio","line":85},{"name":"ensure_audio_dir","line":93},{"name":"save_audio_file","line":98},{"name":"generate_bilingual_audio","line":107},{"name":"generate_all","line":112}],"imports":[],"terms":["enrichment","audio","overview","api","create","endpoint","delete","poll","dir","interval","timeout","lang","status","request","response","report","default","ensure","save","generate","bilingual"]},{"id":"baaff4d44a3595acd0cf596f2f070219c08df87bb2a997092e0b3e4792f06903","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/zig-docs.t27","health":"ok","module":"tool_mcp_zig_docs"}],"description":"specs/tools/mcp/zig-docs.t27 -- tool mcp/zig-docs, MCP server \"zig-docs\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/zig-docs). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","zig","docs","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"bab39e8fc8641fd2db77b865b5d5be1a34ec958105af238d4972010887805f39","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/cordic_fixed.t27","health":"ok","module":"igla-race-cordic-fixed"}],"description":"t27/specs/igla/race/cordic_fixed.t27 CORDIC shift-add sin/cos in fixed-point Q15 (signed 16-bit) Fixed-point convention: Q14 (1 sign + 14 fractional bits) Scale factor = 2^14 = 16384 All angles are NORMALIZED to [-1, 1] where 1.0 = PI radians. Thus angle PI/2 = 8192, PI/4 = 4096, etc.","symbols":[{"name":"CORDIC_GAIN_Q14","line":24},{"name":"ATAN_0","line":27},{"name":"ATAN_1","line":28},{"name":"ATAN_2","line":29},{"name":"ATAN_3","line":30},{"name":"ATAN_4","line":31},{"name":"ATAN_5","line":32},{"name":"ATAN_6","line":33},{"name":"ATAN_7","line":34},{"name":"cordic_x_next","line":40},{"name":"cordic_y_next","line":48},{"name":"cordic_z_next","line":56},{"name":"cordic_fixed_sin_cos_sum_squares","line":64},{"name":"cordic_sin","line":74},{"name":"cordic_cos","line":124},{"name":"cordic_sin_in_range","line":174},{"name":"cordic_cos_in_range","line":183}],"imports":[{"name":"base::types","line":18}],"terms":["igla","race","cordic","fixed","gain","q14","atan","sin","cos","sum","squares","range"]},{"id":"bacc3fad069505febf375adbbfea9a861e4dc884a6c3d98d723bc5cd22365290","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/status.t27","health":"ok","module":"tool_tri_status"}],"description":"specs/tools/tri/status.t27 -- tool tri/status, the `tri status` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/status). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["status","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"badf4b6c05c043017b93d89968ce4139335cac039a4de235b294050e2b916aab","sources":[{"repo":"ghashtag/t27","path":"specs/agents/p.t27","health":"ok","module":"agent_p"}],"description":"specs/agents/p.t27 -- agent t27/P, letter P of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/P). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent P - Pi (Physics)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/redundancy_management.t27","health":"warn","module":"RedundancyManagement"}],"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"PATH_VALID","line":9},{"name":"PATH_INVALID","line":10},{"name":"create_path","line":13},{"name":"get_path_valid","line":20},{"name":"get_hop1","line":24},{"name":"get_hop2","line":28},{"name":"get_hop3","line":32},{"name":"create_path_set","line":37},{"name":"get_path","line":44},{"name":"find_primary_path","line":52},{"name":"find_backup_path","line":66},{"name":"invalidate_path","line":80},{"name":"validate_path","line":96},{"name":"count_valid_paths","line":112},{"name":"has_redundancy","line":122},{"name":"get_hop_count","line":127},{"name":"find_shortest_path","line":136},{"name":"failover","line":176}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","redundancy","management","max","paths","hops","path","valid","invalid","create","get","hop1","hop2","hop3","set","find","primary","backup","invalidate","validate","count","hop","shortest","failover"]},{"id":"bb4167b8b988820e63e2e42cc9b3f1eeaea9a9caf00e15d8c3f3e0b5cd9d0cb5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/merging.t27","health":"ok","module":"tool_tri_merging"}],"description":"specs/tools/tri/merging.t27 -- tool tri/merging, the `tri merging` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/merging). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["merging","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"bc197d64c27828950663c4af278f4f13fb522eddad5c105d1630aad61d997098","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/evidence.t27","health":"ok","module":"docs_chapter_evidence"}],"description":"specs/docs/chapters/evidence.t27 -- chapter 7 of the system documentation, docs/evidence Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"DOCUMENT","line":14},{"name":"ORDER","line":16},{"name":"TITLE","line":17},{"name":"SOURCES","line":20},{"name":"SECTIONS","line":22},{"name":"DIAGRAM","line":25},{"name":"TABLE","line":27},{"name":"BODY_EN","line":29},{"name":"ENABLED","line":30}],"imports":[],"terms":["docs","chapters","evidence","chapter","kind","document","order","title","sources","sections","diagram","table","enabled"]},{"id":"bc520fb9db99214b0349804b525a1e98f277b8ba699de1664456a00f242c92de","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/direct_message.t27","health":"ok","module":"DirectMessage"}],"description":"End-to-end encrypted direct-message envelope policy. HTTP, SQLite, X25519, AEAD, and APNs adapters are outside this specification. phi^2 + phi^-2 = 3","symbols":[{"name":"CRYPTO_VERSION_V1","line":8},{"name":"X25519_PUBLIC_KEY_BYTES","line":9},{"name":"CONTENT_KEY_BYTES","line":10},{"name":"AEAD_NONCE_BYTES","line":11},{"name":"AEAD_TAG_BYTES","line":12},{"name":"MAX_PLAINTEXT_BYTES","line":13},{"name":"MAX_CIPHERTEXT_BYTES","line":14},{"name":"MAX_RECIPIENT_DEVICES","line":15},{"name":"MAX_MESSAGE_PAGE","line":16},{"name":"PUSH_ALERT_MAX_AGE_SECONDS","line":17},{"name":"text_key_is_valid","line":19},{"name":"crypto_version_is_supported","line":31},{"name":"recipient_may_resolve","line":35},{"name":"envelope_is_valid","line":44},{"name":"envelope_set_is_complete","line":53},{"name":"message_may_be_committed","line":60},{"name":"message_retry_is_idempotent","line":71},{"name":"message_page_size","line":75},{"name":"advance_read_cursor","line":85},{"name":"message_counts_as_unread","line":92},{"name":"push_alert_may_be_sent","line":96},{"name":"push_alert_outbox_event_may_enqueue","line":102},{"name":"push_alert_is_fresh","line":106},{"name":"push_alert_outbox_event_should_deliver","line":116}],"imports":[{"name":"base::types","line":6}],"terms":["net","direct","crypto","x25519","public","key","bytes","content","aead","nonce","tag","max","plaintext","ciphertext","recipient","devices","page","push","alert","age","seconds","text","valid","supported","may","resolve","envelope","set","complete","committed","retry","idempotent","size","advance","read","cursor","counts","unread","sent","outbox","event","enqueue","fresh","deliver"]},{"id":"bc72c1f84ebfceb91f91dbc3d4d835a36fb38d8555ea4a2f1af4c1d322eee4d6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex.t27","health":"ok","module":"TriRegex"}],"description":"t27/specs/","symbols":[{"name":"Regex","line":13},{"name":"Match","line":18},{"name":"compile","line":29},{"name":"match","line":34},{"name":"find_all","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","regex","match","compile","find"]},{"id":"bc950d5eb4085dffedcbfd2cb065f927cb6b7386a997fffc1a350516458d87a2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_layer4.t27","health":"warn","module":"GftLayer4"}],"description":"","symbols":[{"name":"magadd","line":14},{"name":"magsub","line":34},{"name":"sadd","line":59},{"name":"contrib","line":71},{"name":"activate","line":77},{"name":"neuron4","line":83},{"name":"on_comb","line":90}],"imports":[],"terms":["ternary","gft","layer4","magadd","magsub","sadd","contrib","activate","neuron4","comb"]},{"id":"bcb3b01dcd4debb986099332e1f8d6def66dc7b3d5b6e11f9dce845bb5007fb7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logger.t27","health":"ok","module":"TriLogger"}],"description":"t27/specs/","symbols":[{"name":"Level","line":13},{"name":"LogEntry","line":17},{"name":"Logger","line":23},{"name":"new","line":33},{"name":"log","line":38},{"name":"with_field","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","logger","level","log","entry","field"]},{"id":"bcbab48f544ecdbc72311c4267176a8842744da41535c318b487d214330e56e7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_conformance_compare_tb.t27","health":"warn","module":"VcdConformanceCompare_Testbench"}],"description":"t27/specs/fpga/testbench/vcd_conformance_compare_tb.t27 VCD Conformance Compare Testbench Tests the conformance comparison engine: batch compare, masking, value extraction","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_COMPARES","line":11},{"name":"tick","line":23},{"name":"reset","line":28},{"name":"run_compare","line":39}],"imports":[{"name":"fpga::vcd_conformance_compare::VcdConformanceCompare","line":8}],"terms":["fpga","testbench","vcd","conformance","compare","clk","period","max","compares","tick","reset"]},{"id":"bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/uart_tb.t27","health":"warn","module":"UART_Testbench"}],"description":"t27/specs/fpga/testbench/uart_tb.t27 UART Testbench Specification Tests UART TX/RX functionality, state machines, and timing","symbols":[{"name":"TIMESCALE","line":15},{"name":"CLK_PERIOD","line":16},{"name":"SIM_TIMEOUT","line":17},{"name":"TEST_DATA_1","line":20},{"name":"TEST_DATA_2","line":21},{"name":"TEST_DATA_3","line":22},{"name":"TEST_DATA_4","line":23},{"name":"generate_clock","line":49},{"name":"assert_pass","line":58},{"name":"wait_cycles","line":68},{"name":"wait_tx_ready","line":78},{"name":"wait_rx_data","line":88},{"name":"test_uart_tx_byte","line":105},{"name":"success","line":110},{"name":"test_uart_rx_byte","line":125},{"name":"bit","line":135},{"name":"test_uart_loopback","line":152},{"name":"data","line":153},{"name":"test_uart_framing_error","line":175},{"name":"test_uart_reset","line":198},{"name":"test_uart_idle_line","line":215},{"name":"test_uart_multiple_bytes","line":222},{"name":"bytes","line":223},{"name":"test_uart_baud_rate_timing","line":236},{"name":"data","line":237},{"name":"start_cycle","line":240},{"name":"cycles","line":245},{"name":"expected","line":246},{"name":"run_tests","line":255}],"imports":[{"name":"base::types","line":9},{"name":"fpga::uart::UART_Bridge","line":10}],"terms":["fpga","testbench","uart","timescale","clk","period","sim","timeout","data","generate","clock","assert","pass","wait","cycles","ready","byte","success","bit","loopback","framing","reset","idle","multiple","bytes","baud","rate","timing","start","cycle","expected"]},{"id":"bcf4922c76661955200baaf574ae4fda7a915b33ca6fa815fd24217b0cf845b2","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_shift.t27","health":"warn","module":"TernaryShift"}],"description":"t27/specs/isa/ternary_shift.t27 Ternary Shift and Rotate Operations Specification Ring 067 - Bitwise/Tritwise shift and rotate operations Defines how ternary words are shifted and rotated","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"WORD_SIZE","line":21},{"name":"SHIFT_MASK","line":22},{"name":"SHIFT_LEFT","line":25},{"name":"SHIFT_RIGHT","line":26},{"name":"ternary_shift_left","line":34},{"name":"ternary_shift_right","line":57},{"name":"idx","line":65},{"name":"idx","line":72},{"name":"ternary_rotate_left","line":86},{"name":"actual_shift","line":91},{"name":"src_idx","line":102},{"name":"ternary_rotate_right","line":117},{"name":"actual_shift","line":122},{"name":"src_idx","line":133},{"name":"ternary_arithmetic_shift_right","line":152},{"name":"actual_shift","line":157},{"name":"sign_bit","line":163},{"name":"idx","line":168},{"name":"idx","line":175},{"name":"extract_trits","line":189},{"name":"insert_trits","line":205}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","shift","trit","neg","zero","pos","word","size","mask","left","right","idx","rotate","actual","arithmetic","sign","bit","extract","trits","insert"]},{"id":"bd04ddfca63bd0aa7d44a891620563e6c6f17481a536dfcd864878312e939083","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/layers.t27","health":"ok","module":"docs_chapter_layers"}],"description":"specs/docs/chapters/layers.t27 -- chapter 3 of the system documentation, docs/layers Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"DOCUMENT","line":14},{"name":"ORDER","line":16},{"name":"TITLE","line":17},{"name":"SOURCES","line":20},{"name":"SECTIONS","line":22},{"name":"DIAGRAM","line":25},{"name":"TABLE","line":27},{"name":"BODY_EN","line":29},{"name":"ENABLED","line":30}],"imports":[],"terms":["docs","chapters","layers","chapter","kind","document","order","title","sources","sections","diagram","table","enabled"]},{"id":"bd3bb0d278274a7e547540c4c0fa4c4191c5d1095c32f538aeb7d9eb2cfcacf1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json.t27","health":"warn","module":"TrinityMemoryJson"}],"description":"Strict, bounded UTF-8 JSON parser. Native algorithms; no heap allocation. C adapter: double tm_json_strtod(uint8_t *nul_terminated), C numeric locale. Caller provides nonoverlapping live input, tokens, and decoded-byte arena. Failed parses may change scratch tokens/arena; result is written on success only.","symbols":[{"name":"TM_JSON_NULL","line":6},{"name":"TM_JSON_FALSE","line":7},{"name":"TM_JSON_TRUE","line":8},{"name":"TM_JSON_INTEGER","line":9},{"name":"TM_JSON_REAL","line":10},{"name":"TM_JSON_STRING","line":11},{"name":"TM_JSON_ARRAY","line":12},{"name":"TM_JSON_OBJECT","line":13},{"name":"TM_JSON_ERR_SYNTAX","line":14},{"name":"TM_JSON_ERR_CAPACITY","line":15},{"name":"TM_JSON_ERR_DEPTH","line":16},{"name":"TM_JSON_ERR_DUPLICATE","line":17},{"name":"TM_JSON_ERR_NUMBER","line":18},{"name":"TM_JSON_ERR_UTF8","line":19},{"name":"TMJsonToken","line":21},{"name":"TMJsonResult","line":33},{"name":"TMJsonState","line":34},{"name":"tm_json_fail","line":41},{"name":"tm_json_space","line":42},{"name":"tm_json_put","line":49},{"name":"tm_json_token","line":55},{"name":"tm_json_utf8_width","line":67},{"name":"tm_json_hex4","line":87},{"name":"tm_json_codepoint","line":101},{"name":"tm_json_string","line":115},{"name":"tm_json_number","line":178},{"name":"tm_json_equal","line":250},{"name":"tm_json_value","line":257},{"name":"tm_json_parse","line":322},{"name":"tm_json_field","line":338}],"imports":[],"terms":["dmitrii","memory","json","null","integer","real","array","object","err","syntax","capacity","depth","duplicate","utf8","tmjson","token","state","fail","space","put","width","hex4","codepoint","equal","parse","field"]},{"id":"bd7accfeb733b5d197590ce3d41ef52a287c5fa9d85aa28dcb9865e975b98715","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_receipt_verify.t27","health":"ok","module":"TriReceiptVerify"}],"description":"TRI-NET full compute-receipt acceptance: the capstone that ties the ring's three independent checks into ONE verdict. A receipt is accepted only if ALL hold: sig_ok -- a valid executor Ed25519 signature over the 256-bit digest (WHO) included -- the receipt digest is in the signed Merkle batch root (MEMBERSHIP) compute_ok -- the claimed GF-T result recomputes correctly (tri_gft_arith) (CORRECTNESS) Each check is independent and necessary: a valid signature over a wrong result,","symbols":[{"name":"OK","line":17},{"name":"BAD_SIG","line":18},{"name":"NOT_IN_BATCH","line":19},{"name":"BAD_COMPUTE","line":20},{"name":"GF_OP_ADD","line":26},{"name":"GF_OP_MUL","line":27},{"name":"compute_ok_for_op","line":29},{"name":"receipt_accepted","line":42},{"name":"reject_reason","line":56}],"imports":[{"name":"base::types","line":14}],"terms":["net","receipt","verify","bad","sig","batch","compute","mul","accepted","reject","reason"]},{"id":"bdca7143ec2e9b3765183834a305585274ff40876b6f767b7fe59f66d2d4ce92","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/search.t27","health":"ok","module":"TriSearch"}],"description":"t27/specs/","symbols":[{"name":"SearchResult","line":13},{"name":"binary","line":23},{"name":"linear","line":28},{"name":"lower_bound","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","binary","linear","lower","bound"]},{"id":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_validator.t27","health":"warn","module":"test_validator"}],"description":"Test Validator - T27 syntax validation and constraint verification Ensures code quality and adherence to T27 language constraints","symbols":[{"name":"MAX_ERRORS","line":7},{"name":"MAX_WARNINGS","line":8},{"name":"MAX_FUNCTIONS","line":9},{"name":"VIOLATION_THRESHOLD","line":10},{"name":"create_validation_error","line":13},{"name":"get_error_id","line":20},{"name":"get_error_type","line":24},{"name":"get_error_line","line":28},{"name":"get_error_severity","line":32},{"name":"ERROR_SYNTAX","line":37},{"name":"ERROR_TYPE_MISMATCH","line":38},{"name":"ERROR_CONSTRAINT_VIOLATION","line":39},{"name":"ERROR_UNDEFINED_SYMBOL","line":40},{"name":"ERROR_UNUSED_VARIABLE","line":41},{"name":"SEVERITY_ERROR","line":44},{"name":"SEVERITY_WARNING","line":45},{"name":"SEVERITY_INFO","line":46},{"name":"create_function_signature","line":49},{"name":"get_sig_function_id","line":56},{"name":"get_param_count","line":60},{"name":"get_return_type","line":64},{"name":"get_visibility","line":68},{"name":"validate_function_signature","line":73},{"name":"create_constraint_check","line":92},{"name":"get_constraint_id","line":99},{"name":"get_constraint_status","line":103},{"name":"get_constraint_description","line":107},{"name":"get_constraint_line","line":111},{"name":"CONSTRAINT_PASS","line":116},{"name":"CONSTRAINT_FAIL","line":117},{"name":"CONSTRAINT_SKIP","line":118},{"name":"CONSTRAINT_NO_FLOAT","line":121},{"name":"CONSTRAINT_NO_DYNAMIC_ARRAY","line":122},{"name":"CONSTRAINT_NO_BIGNUM","line":123},{"name":"CONSTRAINT_FIXED_SIZE_ONLY","line":124},{"name":"CONSTRAINT_INTEGER_ONLY","line":125},{"name":"check_no_float_operations","line":128},{"name":"check_no_dynamic_arrays","line":138},{"name":"check_integer_only","line":148},{"name":"create_type_check","line":160},{"name":"get_type_var_id","line":167},{"name":"get_declared_type","line":171},{"name":"get_inferred_type","line":175},{"name":"get_type_line","line":179},{"name":"perform_type_check","line":184},{"name":"create_unused_check","line":196},{"name":"get_unused_var_id","line":203},{"name":"get_usage_count","line":207},{"name":"get_first_use","line":211},{"name":"get_last_use","line":215},{"name":"check_unused_variable","line":220},{"name":"create_validation_summary","line":231},{"name":"get_error_count","line":238},{"name":"get_warning_count","line":242},{"name":"get_info_count","line":246},{"name":"get_validation_status","line":250},{"name":"VALIDATION_PASS","line":255},{"name":"VALIDATION_FAIL","line":256},{"name":"VALIDATION_WARNING","line":257},{"name":"run_validation","line":260},{"name":"create_quality_metrics","line":296},{"name":"get_complexity","line":303},{"name":"get_readability","line":307},{"name":"get_maintainability","line":311},{"name":"get_technical_debt","line":315},{"name":"calculate_complexity","line":320},{"name":"is_quality_acceptable","line":337},{"name":"generate_validation_report","line":358}],"imports":[{"name":"base::types","line":5}],"terms":["net","validator","max","warnings","functions","violation","threshold","create","validation","get","severity","syntax","mismatch","constraint","undefined","unused","variable","warning","info","signature","sig","param","count","visibility","validate","status","description","pass","fail","skip","float","dynamic","array","bignum","fixed","size","integer","operations","arrays","var","declared","inferred","perform","usage","summary","quality","metrics","complexity","readability","maintainability","technical","debt","calculate","acceptable","generate","report"]},{"id":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/commands.t27","health":"warn","module":"commands"}],"description":"commands.t27 — CLI Command Specifications Individual command specifications for tri CLI","symbols":[{"name":"Command","line":10},{"name":"spec_create","line":25},{"name":"valid_kinds","line":33},{"name":"spec_path","line":50},{"name":"spec_content","line":58},{"name":"spec_validate","line":75},{"name":"spec","line":84},{"name":"validation_result","line":108},{"name":"spec_list","line":124},{"name":"spec_files","line":125},{"name":"spec","line":137},{"name":"status","line":138},{"name":"t_count","line":140},{"name":"i_count","line":141},{"name":"gen_spec","line":161},{"name":"validation","line":163},{"name":"spec","line":170},{"name":"conformance_result","line":197},{"name":"gen_all","line":212},{"name":"spec_files","line":213},{"name":"result","line":217},{"name":"total","line":225},{"name":"success","line":226},{"name":"compile_project","line":249},{"name":"spec_files","line":262},{"name":"compiler_files","line":263},{"name":"all_files","line":264},{"name":"source","line":270},{"name":"rel_path","line":273},{"name":"module_key","line":274},{"name":"source","line":287},{"name":"rel_path","line":293},{"name":"code","line":294},{"name":"ext","line":304},{"name":"dest","line":305},{"name":"dir","line":306},{"name":"build_zig","line":314},{"name":"lint_file","line":335},{"name":"result","line":343},{"name":"spec","line":350},{"name":"lint_all","line":363},{"name":"spec_files","line":364},{"name":"result","line":368},{"name":"skill_begin","line":390},{"name":"registry_path","line":391},{"name":"registry","line":401},{"name":"skill_id","line":405},{"name":"timestamp","line":406},{"name":"branch","line":407},{"name":"new_skill","line":409},{"name":"skill_seal","line":451},{"name":"registry_path","line":452},{"name":"registry","line":460},{"name":"skill","line":461},{"name":"timestamp","line":469},{"name":"skill_status","line":489},{"name":"registry_path","line":490},{"name":"registry","line":498},{"name":"skill","line":499},{"name":"help","line":536},{"name":"generate_spec_template","line":625},{"name":"generate_zig","line":643},{"name":"header","line":645},{"name":"code","line":650},{"name":"dir","line":656},{"name":"generate_c","line":663},{"name":"generate_verilog","line":669},{"name":"generate_conformance","line":675},{"name":"conformance","line":677},{"name":"output_path","line":683},{"name":"load_or_create_registry","line":688},{"name":"compute_seal_hash","line":699},{"name":"data","line":701},{"name":"Spec","line":709},{"name":"TestBlock","line":716},{"name":"InvariantBlock","line":720},{"name":"Skill","line":724},{"name":"SkillMetadata","line":744},{"name":"SkillRegistry","line":751},{"name":"Conformance","line":756},{"name":"ModuleMapEntry","line":766},{"name":"ModuleMap","line":771},{"name":"init","line":775},{"name":"put","line":779},{"name":"get","line":786},{"name":"count","line":795},{"name":"path_to_module_key","line":800},{"name":"backend_extension","line":807},{"name":"strip_prefix","line":813},{"name":"result","line":830},{"name":"result","line":834},{"name":"result","line":838},{"name":"result","line":843},{"name":"result","line":850},{"name":"result","line":856},{"name":"result","line":861},{"name":"result","line":866},{"name":"result","line":871},{"name":"result","line":876},{"name":"result","line":881},{"name":"result","line":886},{"name":"result","line":891},{"name":"result","line":896},{"name":"result","line":901},{"name":"result","line":906},{"name":"result","line":911},{"name":"result","line":916},{"name":"result","line":920},{"name":"template","line":924},{"name":"spec_command","line":928},{"name":"gen_command","line":932},{"name":"compile_project_command","line":936},{"name":"result","line":940},{"name":"result","line":944},{"name":"result","line":952},{"name":"result","line":958},{"name":"result","line":962},{"name":"result","line":966},{"name":"result","line":970},{"name":"result","line":974},{"name":"result","line":978}],"imports":[],"terms":["compiler","runtime","commands","create","valid","kinds","path","content","validate","validation","list","status","count","gen","conformance","total","success","compile","project","rel","key","ext","dest","dir","build","zig","lint","skill","begin","registry","timestamp","branch","seal","help","generate","template","header","verilog","load","compute","hash","data","block","invariant","metadata","map","entry","init","put","get","backend","extension","strip","prefix"]},{"id":"bde59485223334094e6b99cef7d442757a07e3eacdc589c493df0cfca9f974c6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_15.t27","health":"warn","module":"damage_class_15"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"bde6d67dbe20541b56e501032706f53025dd6ec72b76ca204a86379dc56f0d1f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/conv2d_layer.t27","health":"ok","module":"Conv2d"}],"description":"t27/specs/","symbols":[{"name":"MIN_KERNEL_SIZE","line":13},{"name":"MAX_KERNEL_SIZE","line":14},{"name":"Conv2DConfig","line":20},{"name":"PaddingMode","line":31},{"name":"forward","line":45},{"name":"backward","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","conv2d","layer","min","kernel","size","max","conv2dconfig","padding","mode","forward","backward"]},{"id":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_routing.t27","health":"ok","module":"multipath_routing"}],"description":"Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"MIN_PATHS","line":9},{"name":"PATH_VALID","line":10},{"name":"PATH_INVALID","line":11},{"name":"create_multipath","line":14},{"name":"get_path_valid","line":21},{"name":"get_multipath_hop1","line":25},{"name":"get_multipath_hop2","line":29},{"name":"get_multipath_hop3","line":33},{"name":"create_multipath_state","line":38},{"name":"get_active_paths","line":45},{"name":"get_current_path","line":49},{"name":"get_flow_id","line":53},{"name":"get_multipath_last_update","line":57},{"name":"create_path_array","line":62},{"name":"get_multipath","line":69},{"name":"count_valid_paths","line":77},{"name":"is_multipath_viable","line":87},{"name":"select_primary_path","line":92},{"name":"calculate_path_diversity","line":110},{"name":"distribute_load","line":147},{"name":"needs_failover","line":177},{"name":"perform_failover","line":184},{"name":"calculate_multipath_gain","line":200}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","multipath","routing","max","paths","hops","min","path","valid","invalid","create","get","hop1","hop2","hop3","state","active","flow","array","count","viable","select","primary","calculate","diversity","distribute","load","failover","perform","gain"]},{"id":"be0e54b47c9cef2d0f3338635e692dfc3afe66258a0b9c9fdbb95cce022309d8","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot2_rne.t27","health":"warn","module":"GftDot2Rne"}],"description":"","symbols":[{"name":"gmul","line":11},{"name":"gadd","line":37},{"name":"on_comb","line":78}],"imports":[],"terms":["ternary","gft","dot2","rne","dot2rne","gmul","gadd","comb"]},{"id":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","sources":[{"repo":"ghashtag/t27","path":"specs/queen/lotus.t27","health":"warn","module":"QueenLotus"}],"description":"t27/specs/queen/lotus.t27 Queen Lotus 6-Phase Orchestration Specification Self-improving agent orchestration with episode-based learning","symbols":[{"name":"NUM_PHASES","line":17},{"name":"EPISODE_BUFFER_SIZE","line":18},{"name":"POLICY_WINDOW_SIZE","line":19},{"name":"PHASE_OBSERVE","line":22},{"name":"PHASE_RECALL","line":23},{"name":"PHASE_EVALUATE","line":24},{"name":"PHASE_PLAN","line":25},{"name":"PHASE_ACT","line":26},{"name":"PHASE_RECORD","line":27},{"name":"OUTCOME_UNKNOWN","line":30},{"name":"OUTCOME_SUCCESS","line":31},{"name":"OUTCOME_PARTIAL","line":32},{"name":"OUTCOME_FAILURE","line":33},{"name":"OUTCOME_FATAL","line":34},{"name":"QUALITY_UNKNOWN","line":37},{"name":"QUALITY_GOOD","line":38},{"name":"QUALITY_UNSTABLE","line":39},{"name":"QUALITY_BAD","line":40},{"name":"DELTA_SCALE_UP","line":43},{"name":"DELTA_SCALE_DOWN","line":44},{"name":"DELTA_SET","line":45},{"name":"DELTA_WAIT","line":46},{"name":"Episode","line":57},{"name":"PHASE_TIMEOUT_MS","line":77},{"name":"Context","line":84},{"name":"Evaluation","line":91},{"name":"Plan","line":100},{"name":"Action","line":107},{"name":"CycleResult","line":114},{"name":"lotus_orchestrate","line":130},{"name":"lotus_phase","line":159},{"name":"PhaseOutput","line":185},{"name":"observe_state","line":192},{"name":"active_issues","line":193},{"name":"system_health","line":194},{"name":"timestamp","line":195},{"name":"get_active_issues_count","line":206},{"name":"get_system_health","line":213},{"name":"get_timestamp","line":219},{"name":"RecallEpisode","line":229},{"name":"recall_episodes","line":237},{"name":"episode_idx","line":245},{"name":"EvaluationResult","line":262},{"name":"evaluate_quality","line":269},{"name":"episode","line":278},{"name":"total","line":292},{"name":"success_ratio","line":304},{"name":"failure_ratio","line":305},{"name":"evaluate_quality_","line":327},{"name":"recalled","line":328},{"name":"eval","line":329},{"name":"PlanResult","line":341},{"name":"generate_plan","line":349},{"name":"generate_plan_","line":367},{"name":"eval","line":368},{"name":"plan","line":369},{"name":"ActionResult","line":389},{"name":"execute_action","line":396},{"name":"start_time","line":398},{"name":"execution_time","line":410},{"name":"execute_action_","line":421},{"name":"plan_result","line":422},{"name":"action","line":423},{"name":"scale_up_resources","line":437},{"name":"scale_down_resources","line":444},{"name":"set_parameter","line":451},{"name":"RecordResult","line":462},{"name":"record_episode","line":469},{"name":"slot","line":470},{"name":"record_episode_","line":489},{"name":"cycle_result","line":490},{"name":"outcome","line":499},{"name":"determine_outcome","line":509},{"name":"lotus_spawn","line":523},{"name":"spawn_agent","line":538},{"name":"lotus_phase_management","line":549},{"name":"check_phase_timeout","line":559},{"name":"current_time","line":560},{"name":"elapsed","line":561},{"name":"force_phase_transition","line":568}],"imports":[{"name":"base::types","line":9},{"name":"nn::hslm","line":10},{"name":"compiler::runtime","line":11}],"terms":["queen","lotus","num","phases","episode","buffer","size","policy","window","phase","observe","recall","evaluate","plan","act","record","outcome","unknown","success","partial","failure","fatal","quality","good","unstable","bad","delta","scale","down","set","wait","timeout","evaluation","action","cycle","orchestrate","state","active","system","health","timestamp","get","count","episodes","idx","total","ratio","recalled","eval","generate","execute","start","time","execution","resources","parameter","slot","determine","spawn","management","elapsed","force","transition"]},{"id":"be3ed8d97c7404a17400311d3432bec040d027f0a76ce264a459326204780fd9","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/doctor.t27","health":"ok","module":"tool_tri_doctor"}],"description":"specs/tools/tri/doctor.t27 -- tool tri/doctor, the `tri doctor` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/doctor). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["doctor","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/runner.t27","health":"warn","module":"runner"}],"description":"t27 Math/Physics Test Framework - Runner Ring 050: Test runner implementation per T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md Entry point for `tri test ` execution","symbols":[{"name":"TestRunnerConfig","line":12},{"name":"default","line":24},{"name":"with_iterations","line":33},{"name":"with_tolerance","line":37},{"name":"with_verbose","line":41},{"name":"with_format","line":45},{"name":"TestRunner","line":51},{"name":"new","line":58},{"name":"run_test_spec","line":67},{"name":"execute_test_block","line":84},{"name":"execute_unit_test","line":95},{"name":"execute_property_test","line":117},{"name":"execute_invariant_test","line":128},{"name":"execute_benchmark_test","line":136},{"name":"execute_gate_pipeline_test","line":163},{"name":"generate_reports","line":184},{"name":"print_summary","line":205},{"name":"exit_with_code","line":246},{"name":"T27Spec","line":260},{"name":"TestBlock","line":267},{"name":"TestKind","line":282},{"name":"read_file","line":292},{"name":"parse_t27_spec","line":297},{"name":"current_timestamp","line":306},{"name":"default_domain","line":311},{"name":"default_property","line":315},{"name":"default_pipeline","line":319},{"name":"run_test_spec_file","line":326},{"name":"run_test_spec_file_with_config","line":332},{"name":"main","line":353},{"name":"print_help","line":415}],"imports":[{"name":"core","line":9}],"terms":["framework","runner","config","default","iterations","tolerance","verbose","format","execute","block","unit","property","invariant","benchmark","gate","pipeline","generate","reports","print","summary","exit","t27spec","kind","read","parse","timestamp","domain","main","help"]},{"id":"be7945ad86c2a4b2c94566717f0dc16f437b05b220f6644953a993baa955c279","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/convert.b2t.t27","health":"ok","module":"trinity_capability_convert_b2t"}],"description":"specs/trinity/capabilities/convert.b2t.t27 -- capability trinity/convert.b2t: b2t: binary and WASM to ternary conversion One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","convert","b2t","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sources":[{"repo":"ghashtag/t27","path":"specs/nn/attention.t27","health":"warn","module":"SacredAttention"}],"description":"t27/specs/nn/attention.t27 Sacred Attention Specification Multi-head attention with φ-RoPE and sacred scaling (d_k^(-φ³))","symbols":[{"name":"NUM_HEADS","line":18},{"name":"HEAD_DIM","line":19},{"name":"EMBED_DIM","line":20},{"name":"CONTEXT_LEN","line":21},{"name":"ROPE_PAIRS","line":22},{"name":"SACRED_GAMMA","line":25},{"name":"SACRED_SCALE","line":26},{"name":"ATTN_CAUSAL","line":29},{"name":"ATTN_BIDIR","line":30},{"name":"ATTN_SPARSE","line":31},{"name":"PHASE_QUERY","line":34},{"name":"PHASE_KEY","line":35},{"name":"PHASE_VALUE","line":36},{"name":"PHASE_SCORE","line":37},{"name":"PHASE_SOFTMAX","line":38},{"name":"PHASE_WEIGHT","line":39},{"name":"RoPETables","line":48},{"name":"AttentionBuffers","line":60},{"name":"sacred_attention_init","line":76},{"name":"freq_exponent","line":84},{"name":"freq","line":85},{"name":"angle","line":88},{"name":"cos_val","line":91},{"name":"sin_val","line":92},{"name":"table_offset","line":95},{"name":"sacred_attention_kernel","line":119},{"name":"project_qkv","line":168},{"name":"ternary_matmul","line":185},{"name":"weight_val","line":199},{"name":"apply_rope_qk","line":222},{"name":"head_offset","line":233},{"name":"idx0","line":237},{"name":"idx1","line":238},{"name":"table_offset","line":240},{"name":"cos_val","line":241},{"name":"sin_val","line":242},{"name":"q0","line":245},{"name":"q1","line":246},{"name":"k0","line":251},{"name":"k1","line":252},{"name":"cache_kv","line":269},{"name":"offset","line":281},{"name":"compute_scores","line":298},{"name":"head_offset","line":314},{"name":"q_val","line":330},{"name":"k_val","line":331},{"name":"apply_softmax","line":352},{"name":"s","line":361},{"name":"s","line":373},{"name":"weighted_values","line":397},{"name":"head_offset","line":405},{"name":"weight","line":413},{"name":"v_val","line":414},{"name":"project_output","line":434},{"name":"add_residual","line":448},{"name":"PHI","line":671},{"name":"PHI_SQ","line":672},{"name":"PHI_SQ_INV","line":673},{"name":"GAIN_PHI_SQ","line":676},{"name":"GAIN_STANDARD","line":677},{"name":"GAIN_SQRT_PHI","line":678},{"name":"GAIN_LEARNED_INIT","line":679},{"name":"QKGainVariant","line":690},{"name":"QKGainConfig","line":697},{"name":"QKGainResult","line":705},{"name":"get_qk_gain","line":716},{"name":"effective_score_scale","line":729}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"math::constants","line":11},{"name":"base::types","line":662},{"name":"math::constants","line":663},{"name":"numeric::gf16","line":664},{"name":"nn::attention","line":665}],"terms":["attention","sacred","num","heads","head","dim","embed","len","rope","pairs","gamma","scale","attn","causal","bidir","sparse","phase","query","key","score","softmax","weight","petables","buffers","init","freq","exponent","angle","cos","val","sin","table","offset","kernel","project","qkv","ternary","matmul","apply","idx0","idx1","cache","compute","scores","weighted","values","residual","phi","inv","gain","standard","sqrt","learned","qkgain","variant","config","get","effective"]},{"id":"be8b3a944add54031ff82e824411ad3bfcfaed42a8150b3131649cf1d3080a92","sources":[{"repo":"ghashtag/t27","path":"specs/math/radix_economy.t27","health":"ok","module":"RadixEconomy"}],"description":"t27/specs/math/radix_economy.t27 Radix Economy Formal Spec — Information-Theoretic Basis for Base-3 Computing E(b) = ln(b)/b, maximized at b = e ≈ 2.71828 E(3)/E(e) >= 99.5%, E(3)/E(2) = 1.054 (5.4% advantage)","symbols":[{"name":"E_BASE2","line":16},{"name":"E_BASE3","line":19},{"name":"E_OPTIMAL","line":22},{"name":"LOG2_3","line":25},{"name":"LOG3_2","line":28},{"name":"radix_economy","line":35},{"name":"efficiency_ratio","line":40},{"name":"base_advantage","line":45},{"name":"info_density_bits","line":50},{"name":"ternary_range","line":55},{"name":"binary_range","line":60},{"name":"ln","line":69},{"name":"log2","line":87},{"name":"pow","line":92},{"name":"exp","line":139},{"name":"floor","line":154}],"imports":[{"name":"Constants","line":8}],"terms":["math","radix","economy","base2","base3","optimal","log2","log3","efficiency","ratio","base","advantage","info","density","bits","ternary","range","binary","pow","exp","floor"]},{"id":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/top_level.t27","health":"warn","module":"ZeroDSP_TopLevel"}],"description":"t27/specs/fpga/top_level.t27 ZeroDSP FPGA Top Level Module Integrates MAC and UART for FPGA deployment","symbols":[{"name":"CLK_FREQ_HZ","line":12},{"name":"SYSTICK_HZ","line":13},{"name":"NUM_MAC_UNITS","line":15},{"name":"DATA_WIDTH","line":16},{"name":"CMD_NOP","line":18},{"name":"CMD_MAC_MULT","line":19},{"name":"CMD_MAC_DOT","line":20},{"name":"CMD_UART_SEND","line":21},{"name":"CMD_RESET","line":22},{"name":"SystemState","line":24},{"name":"system_init","line":41},{"name":"system_ready","line":48},{"name":"system_busy","line":52},{"name":"system_error","line":56},{"name":"system_reset","line":60},{"name":"set_mac_result","line":66},{"name":"get_mac_result","line":71},{"name":"set_uart_data","line":75},{"name":"get_uart_data","line":79},{"name":"start_processing","line":83},{"name":"stop_processing","line":89},{"name":"set_error","line":93},{"name":"clear_error","line":98}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9},{"name":"isa::registers","line":10}],"terms":["fpga","top","level","zero","dsp","clk","freq","systick","num","mac","units","data","width","cmd","nop","mult","dot","uart","send","reset","system","state","init","ready","busy","set","get","start","processing","stop","clear"]},{"id":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/schema.t27","health":"ok","module":"provider-schema"}],"description":"provider/schema.t27 — Provider Message Types AI provider message structures and model types","symbols":[{"name":"PROVIDER_ANTHROPIC","line":19},{"name":"PROVIDER_OPENAI","line":22},{"name":"PROVIDER_DEFAULT","line":25},{"name":"MODEL_ANTHROPIC_DEFAULT","line":28},{"name":"MODEL_OPENAI_DEFAULT","line":31},{"name":"MAX_TOKENS","line":34},{"name":"DEFAULT_TEMPERATURE","line":37},{"name":"DEFAULT_MAX_TOKENS","line":40},{"name":"DEFAULT_TOP_P","line":43},{"name":"ProviderType","line":50},{"name":"MessageRole","line":56},{"name":"ContentType","line":64},{"name":"MessageContent","line":72},{"name":"Message","line":81},{"name":"Tool","line":87},{"name":"ToolCall","line":94},{"name":"RequestParams","line":101},{"name":"ChunkType","line":111},{"name":"StreamingChunk","line":119},{"name":"Usage","line":128},{"name":"Response","line":135},{"name":"Choice","line":144},{"name":"StreamResponse","line":150},{"name":"ProviderConfig","line":157},{"name":"ProviderCapability","line":167},{"name":"ProviderCapabilities","line":175},{"name":"ProviderError","line":183},{"name":"ImageContent","line":190},{"name":"provider_type_from_string","line":200},{"name":"provider_type_to_string","line":211},{"name":"message_create","line":219},{"name":"system_message_create","line":235},{"name":"user_message_create","line":240},{"name":"tool_create","line":245},{"name":"request_params_create","line":254},{"name":"provider_config_create","line":266},{"name":"base_url","line":267},{"name":"usage_create","line":283},{"name":"streaming_chunk_create","line":292},{"name":"response_create","line":303},{"name":"role_to_string","line":319},{"name":"provider_error_create","line":329},{"name":"is_anthropic_provider","line":338},{"name":"is_openai_provider","line":343},{"name":"response_has_error","line":348},{"name":"chunk_is_done","line":353},{"name":"chunk_type_to_string","line":358},{"name":"pt","line":372},{"name":"str","line":377},{"name":"msg","line":382},{"name":"msg","line":387},{"name":"msg","line":392},{"name":"tool","line":397},{"name":"params","line":402},{"name":"config","line":407},{"name":"usage","line":412},{"name":"chunk","line":417},{"name":"resp","line":422},{"name":"str","line":427},{"name":"err","line":432},{"name":"err_resp","line":445},{"name":"chunk","line":450},{"name":"str","line":455}],"imports":[],"terms":["provider","schema","anthropic","openai","default","model","max","tokens","temperature","top","role","content","tool","call","request","params","chunk","streaming","usage","response","choice","stream","config","capability","capabilities","image","create","system","user","base","url","done","str","msg","resp","err"]},{"id":"bf24ed639a59b626b81991a835211692bd429df670e38b458ca3d57dc650a14b","sources":[{"repo":"ghashtag/t27","path":"test_highlight.t27","health":"warn","module":null}],"description":"T27 Syntax Highlighting Test File This tests all syntax elements","symbols":[{"name":"PHI","line":7},{"name":"PHI_SQ","line":8},{"name":"TRINITY","line":9},{"name":"Trit","line":12},{"name":"State","line":19},{"name":"compute_phi","line":26},{"name":"casted","line":27},{"name":"invert_trit","line":32},{"name":"sum_range","line":41},{"name":"zeros","line":50},{"name":"test_builtin","line":53},{"name":"result","line":54}],"imports":[],"terms":["highlight","phi","trit","state","compute","casted","invert","sum","range","zeros","builtin"]},{"id":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/vsa_core.t27","health":"warn","module":"vsa_core"}],"description":"t27/specs/vsa/vsa_core.t27 VSA (Vector Symbolic Architecture) Core Operations ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q VSA provides high-dimensional vector operations for: - Symbolic reasoning (bind/unbind for role-filler pairs) - Set operations (bundle for superposition)","symbols":[{"name":"DEFAULT_DIM","line":31},{"name":"SIMD_WIDTH","line":34},{"name":"MAX_TRITS","line":37},{"name":"COSINE_THRESHOLD","line":40},{"name":"HAMMING_THRESHOLD","line":43},{"name":"Hypervector","line":50},{"name":"SearchResult","line":53},{"name":"random_vector","line":65},{"name":"trit_val","line":73},{"name":"bind","line":85},{"name":"dim","line":86},{"name":"ai","line":91},{"name":"bi","line":92},{"name":"unbind","line":111},{"name":"bundle2","line":118},{"name":"dim","line":119},{"name":"ai","line":124},{"name":"bi","line":125},{"name":"sum","line":133},{"name":"bundle3","line":147},{"name":"dim","line":148},{"name":"sum","line":153},{"name":"permute","line":166},{"name":"effective_shift","line":171},{"name":"inverse_permute","line":190},{"name":"effective_shift","line":195},{"name":"inverse_shift","line":201},{"name":"cosine_similarity","line":209},{"name":"dim","line":210},{"name":"hamming_distance","line":248},{"name":"len","line":249},{"name":"hamming_similarity","line":273},{"name":"max_len","line":274},{"name":"distance","line":279},{"name":"dot_similarity","line":287},{"name":"dim","line":288},{"name":"vector_norm","line":307},{"name":"bundle_n","line":323},{"name":"count","line":324},{"name":"temp","line":337},{"name":"count_non_zero","line":348},{"name":"encode_sequence","line":363},{"name":"item_vec","line":369},{"name":"shifted","line":371},{"name":"probe_sequence","line":383},{"name":"item_vec","line":385},{"name":"shifted","line":387},{"name":"sim","line":390},{"name":"v1","line":401},{"name":"v2","line":404},{"name":"v1","line":410},{"name":"v2","line":411},{"name":"bound","line":435},{"name":"unbound","line":436},{"name":"result1","line":455},{"name":"result2","line":456},{"name":"result","line":474},{"name":"result","line":487},{"name":"shifted","line":502},{"name":"shifted","line":521},{"name":"restored","line":522},{"name":"sim","line":540},{"name":"sim","line":555},{"name":"sim","line":567},{"name":"dist","line":575},{"name":"dist","line":584},{"name":"dist","line":593},{"name":"sim","line":594},{"name":"sim","line":604},{"name":"v","line":610},{"name":"norm","line":612},{"name":"norm","line":620},{"name":"expected","line":627},{"name":"count","line":629},{"name":"items","line":635},{"name":"encoded","line":637},{"name":"items","line":653},{"name":"encoded","line":654},{"name":"sim","line":657},{"name":"vectors","line":664},{"name":"result","line":668},{"name":"vectors","line":680},{"name":"result1","line":683},{"name":"dims","line":704},{"name":"bound","line":708},{"name":"unbound","line":709},{"name":"v1","line":717},{"name":"v2","line":718},{"name":"result1","line":719},{"name":"result2","line":720},{"name":"v1","line":726},{"name":"v2","line":727},{"name":"result1","line":728},{"name":"result2","line":729},{"name":"v1","line":736},{"name":"v2","line":737},{"name":"v3","line":738},{"name":"result1","line":739},{"name":"result2","line":740},{"name":"v","line":747},{"name":"shifted","line":748},{"name":"shifted_twice","line":749},{"name":"v","line":755},{"name":"shifted","line":756},{"name":"restored","line":757},{"name":"v1","line":763},{"name":"v2","line":764},{"name":"sim1","line":765},{"name":"sim2","line":766},{"name":"v1","line":772},{"name":"v2","line":773},{"name":"sim","line":774},{"name":"v1","line":780},{"name":"v2","line":781},{"name":"dist1","line":782},{"name":"dist2","line":783},{"name":"v1","line":789},{"name":"v2","line":790},{"name":"dist","line":791},{"name":"a","line":798},{"name":"dist","line":800},{"name":"sim","line":801},{"name":"v","line":807},{"name":"norm","line":808},{"name":"v","line":814},{"name":"norm","line":815},{"name":"v","line":821},{"name":"count","line":822},{"name":"v1","line":835},{"name":"v2","line":836},{"name":"result","line":837},{"name":"vectors","line":975},{"name":"items","line":992}],"imports":[],"terms":["vsa","default","dim","simd","width","max","trits","cosine","threshold","hamming","hypervector","search","random","vector","trit","val","bind","unbind","bundle2","sum","bundle3","permute","effective","shift","inverse","similarity","distance","len","dot","norm","bundle","count","temp","non","zero","encode","sequence","item","vec","shifted","probe","sim","bound","unbound","result1","result2","restored","dist","expected","items","encoded","vectors","dims","twice","sim1","sim2","dist1","dist2"]},{"id":"bf61456c5a0ba1735ba7f0b243547c67f86ded98d23c09fd46bd2e53c1b23b04","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agent_run.t27","health":"ok","module":"AgentRun"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":[]},{"id":"bf8691644b6ce7ff97f57d7ed21d1326de4bb6b858f20c524621fc02dad09c3d","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_mlp3.t27","health":"warn","module":"BitnetMlp3"}],"description":"","symbols":[{"name":"tmul","line":2},{"name":"dot27","line":3},{"name":"quantize","line":4},{"name":"neuronN","line":5},{"name":"neuron1","line":6},{"name":"pack3","line":7},{"name":"mlp3","line":15},{"name":"on_comb","line":45}],"imports":[],"terms":["ternary","bitnet","mlp3","tmul","dot27","quantize","neuron","neuron1","pack3","comb"]},{"id":"bfbbc8dbd82391b975ea357722e3f95ffabb551f4ae40985354b4bcd0afac17b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_universe.t27","health":"ok","module":"AutonomousUniverse"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["autonomous","universe"]},{"id":"bfcd81ea5f3b3040dccce76d91dd699347e49c2df843529218ee138560e2d924","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L10845.t27","health":"ok","module":"cron_999_multibots_telegraf_render_server_L10845"}],"description":"specs/crons/999-multibots-telegraf-render-server-L10845.t27 -- cron timer/999-multibots-telegraf/render-server-L10845 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L10845). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L10845. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","render","l10845","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/process.t27","health":"ok","module":"runtime-process"}],"description":"runtime/process.t27 — Runtime Process Specification Process spawning, termination, piping, PTY","symbols":[{"name":"SPAWN_TIMEOUT_MS","line":19},{"name":"PTY_COLS_DEFAULT","line":22},{"name":"PTY_ROWS_DEFAULT","line":25},{"name":"MAX_PIPE_BUFFER","line":28},{"name":"ProcessSignal","line":31},{"name":"ProcessState","line":41},{"name":"PTYMode","line":50},{"name":"ProcessID","line":61},{"name":"ProcessInfo","line":64},{"name":"SpawnOptions","line":74},{"name":"PipeConfig","line":85},{"name":"SpawnResult","line":93},{"name":"ProcessOutput","line":100},{"name":"PTYConfig","line":110},{"name":"CaptureOptions","line":119},{"name":"spawn_options_default","line":132},{"name":"spawn_options_with_pty","line":145},{"name":"spawn_options_detached","line":158},{"name":"base","line":159},{"name":"pipe_config_create","line":172},{"name":"pipe_config_with_input","line":182},{"name":"pty_config_default","line":192},{"name":"pty_config_raw","line":203},{"name":"capture_options_default","line":214},{"name":"process_info_create","line":225},{"name":"spawn_success","line":237},{"name":"spawn_failure","line":246},{"name":"output_create","line":255},{"name":"output_with_signal","line":267},{"name":"spawn","line":279},{"name":"pid","line":281},{"name":"spawn_simple","line":286},{"name":"kill","line":291},{"name":"terminate","line":297},{"name":"interrupt","line":302},{"name":"stop","line":307},{"name":"process_continue","line":312},{"name":"capture","line":317},{"name":"pipe","line":323},{"name":"wait","line":329},{"name":"get_process_info","line":335},{"name":"is_running","line":341},{"name":"info","line":342},{"name":"process_exists","line":347},{"name":"info","line":348},{"name":"get_pid","line":353},{"name":"generate_pid","line":359},{"name":"timestamp","line":361},{"name":"spawn_succeeded","line":366},{"name":"output_is_success","line":371},{"name":"output_exit_code","line":376},{"name":"was_signaled","line":381},{"name":"output_signal","line":386},{"name":"env_pair","line":391},{"name":"append_env","line":399},{"name":"pair","line":400},{"name":"append_env_slice","line":410},{"name":"concat_env_slice","line":417},{"name":"concat_env","line":427},{"name":"append_env_byte","line":436},{"name":"get_timestamp_ms","line":443},{"name":"opts","line":453},{"name":"opts","line":458},{"name":"opts","line":463},{"name":"cfg","line":468},{"name":"cfg","line":473},{"name":"cfg","line":478},{"name":"opts","line":483},{"name":"info","line":488},{"name":"result","line":493},{"name":"result","line":498},{"name":"output","line":503},{"name":"output","line":508},{"name":"pair","line":513},{"name":"env","line":518},{"name":"result","line":519},{"name":"output","line":524},{"name":"output","line":529},{"name":"output","line":534},{"name":"signal","line":535},{"name":"env","line":755}],"imports":[{"name":"std","line":12}],"terms":["runtime","process","spawn","timeout","pty","cols","default","rows","max","pipe","buffer","signal","state","ptymode","info","options","config","ptyconfig","capture","detached","base","create","raw","success","failure","pid","simple","kill","terminate","interrupt","stop","continue","wait","get","running","exists","generate","timestamp","succeeded","exit","signaled","env","pair","append","slice","concat","byte","opts","cfg"]},{"id":"c0881e50f64cafa548394ab698a373f7c74c7626d021eb904e2a8e036bb6a091","sources":[{"repo":"ghashtag/t27","path":"specs/server/vm.t27","health":"ok","module":"VM"}],"description":"specs/server/vm.t27 VSA VM - Ternary Virtual Machine for Hyperdimensional Computing","symbols":[{"name":"VSAOpcode","line":27},{"name":"VSARegisters","line":78},{"name":"VSAInstruction","line":108},{"name":"VSAVM","line":125},{"name":"vm_create","line":137},{"name":"zero_hv","line":138},{"name":"vm_halt","line":165},{"name":"vm_step","line":176},{"name":"src1_vec","line":194},{"name":"src2_vec","line":195},{"name":"binded","line":196},{"name":"src1_vec","line":200},{"name":"src2_vec","line":201},{"name":"unbound","line":202},{"name":"src1_vec","line":206},{"name":"src2_vec","line":207},{"name":"bundled","line":208},{"name":"src1_vec","line":212},{"name":"src2_vec","line":213},{"name":"src3_vec","line":214},{"name":"bundled","line":215},{"name":"src1_vec","line":219},{"name":"src2_vec","line":220},{"name":"result_scalar","line":221},{"name":"src1_vec","line":225},{"name":"src2_vec","line":226},{"name":"result_scalar","line":227},{"name":"src1_vec","line":231},{"name":"src2_vec","line":232},{"name":"result_scalar","line":233},{"name":"src1_vec","line":237},{"name":"src2_vec","line":238},{"name":"added","line":239},{"name":"src1_vec","line":243},{"name":"negated","line":244},{"name":"src1_vec","line":248},{"name":"src2_vec","line":249},{"name":"multiplied","line":250},{"name":"src_vec","line":254},{"name":"dst_vec","line":258},{"name":"packed","line":259},{"name":"dst_vec","line":263},{"name":"unpacked","line":264},{"name":"src1_vec","line":268},{"name":"src2_vec","line":269},{"name":"distance","line":270},{"name":"src_vec","line":276},{"name":"permuted","line":277},{"name":"src_vec","line":281},{"name":"permuted","line":282},{"name":"vm_get_vreg","line":305},{"name":"vm_set_vreg","line":320},{"name":"vm","line":471},{"name":"inst","line":472},{"name":"result","line":473},{"name":"vm","line":478},{"name":"inst","line":479},{"name":"result","line":480},{"name":"vm","line":485},{"name":"inst","line":486},{"name":"halted","line":487},{"name":"result","line":488},{"name":"vm","line":493},{"name":"vm","line":503},{"name":"r0","line":504},{"name":"r1","line":505},{"name":"r2","line":506},{"name":"r3","line":507},{"name":"vm","line":515},{"name":"r_invalid","line":516},{"name":"vm","line":537},{"name":"inst","line":538},{"name":"vm","line":549},{"name":"inst","line":550},{"name":"vm","line":561},{"name":"inst","line":562},{"name":"vm","line":573},{"name":"inst","line":574},{"name":"vm","line":585},{"name":"inst","line":586}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11},{"name":"vsa::core","line":12},{"name":"hybrid_arithmetic","line":13}],"terms":["vsaopcode","vsaregisters","vsainstruction","vsavm","create","zero","halt","step","src1","vec","src2","binded","unbound","bundled","src3","scalar","added","negated","multiplied","dst","packed","unpacked","distance","permuted","get","vreg","set","inst","halted","invalid"]},{"id":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/rom_layout.t27","health":"ok","module":"CoronaRomLayout"}],"description":"specs/corona/rom_layout.t27 Corona ROM bit-layout: 80 bits per format record, 80 records total.","symbols":[{"name":"RECORD_BITS","line":19},{"name":"RECORD_BYTES","line":20},{"name":"RECORD_COUNT","line":21},{"name":"ROM_TOTAL_BITS","line":23},{"name":"ROM_TOTAL_BYTES","line":24},{"name":"FIELD_FORMAT_INDEX_ID","line":48},{"name":"FIELD_CLUSTER_ID","line":49},{"name":"FIELD_STATUS_ID","line":50},{"name":"FIELD_TOTAL_BITS","line":51},{"name":"FIELD_SIGN_BITS","line":52},{"name":"FIELD_EXP_BITS","line":53},{"name":"FIELD_MANT_BITS","line":54},{"name":"FIELD_ENCODING_KIND","line":55},{"name":"FIELD_PHI_DISTANCE_Q16","line":56},{"name":"FIELD_REF_INDEX","line":57},{"name":"FIELD_FLAGS","line":58},{"name":"ENCODING_FP","line":75},{"name":"ENCODING_POSIT","line":76},{"name":"ENCODING_LNS","line":77},{"name":"ENCODING_INT","line":78},{"name":"ENCODING_BCD","line":79},{"name":"ENCODING_MX","line":80},{"name":"ENCODING_TAKUM","line":81},{"name":"ENCODING_GF","line":82},{"name":"ENCODING_HISTORICAL","line":83},{"name":"ENCODING_THEORETICAL","line":84},{"name":"FLAG_ON_DIE","line":90},{"name":"FLAG_GAMMA_OWNED","line":91},{"name":"FLAG_D2D_ROUTABLE","line":92},{"name":"FLAG_EXPERIMENTAL","line":93},{"name":"STRING_TABLE_ENTRIES","line":123},{"name":"STRING_TABLE_BYTES","line":124}],"imports":[{"name":"base::types","line":12},{"name":"corona::corona_oracle","line":13}],"terms":["corona","rom","layout","record","bits","bytes","count","total","field","format","index","cluster","status","sign","exp","mant","encoding","kind","phi","distance","q16","ref","flags","posit","lns","int","bcd","takum","historical","theoretical","flag","die","gamma","owned","d2d","routable","experimental","table","entries"]},{"id":"c0ce3a2b96c5e6a5d744a2c9eb71c76ee4ae5622b2fd335402be68bdbf9b45c1","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf1024.t27","health":"ok","module":"triformat_tnf1024"}],"description":"tnf1024.t27 -- TNF1024: Ternary Network Float, 1024-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","symbols":[{"name":"SIGN_BITS","line":20},{"name":"EXP_TRITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_OFFSET","line":23},{"name":"OFFSET_MAX","line":24},{"name":"exp_offset","line":28},{"name":"is_finite","line":32},{"name":"exp_values","line":36}],"imports":[{"name":"base::types","line":18}],"terms":["numeric","tnf1024","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"c0dbf24327e983c97c167b05ffd70525c35b60d03481d3aee9fec2c7eda45291","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_lut_table.t27","health":"ok","module":"IglaRaceTernaryLutTable"}],"description":"t27/specs/igla/race/ternary_lut_table.t27 The mu-deep LUT: partial sums computed ONCE, selected by K output neurons. WHY THIS EXISTS. W806 built `ternary_mac_group.t27` -- eight ternary lanes sharing one 32-bit accumulator -- and it went the wrong way: CARRY4 per multiply fell from 10.0 to 3.0 exactly as forecast, and LUT per multiply rose from 33.00 to 63.25, because eight independent per-lane selects built 172","symbols":[{"name":"MU","line":53},{"name":"FETCHERS","line":54},{"name":"MULTIPLIES","line":55},{"name":"ENTRIES","line":56},{"name":"GAT_ZERO","line":58},{"name":"GAT_POS","line":59},{"name":"GAT_NEG","line":60},{"name":"CW_00","line":64},{"name":"CW_P0","line":65},{"name":"CW_N0","line":66},{"name":"CW_0P","line":67},{"name":"CW_PP","line":68},{"name":"CW_NP","line":69},{"name":"CW_0N","line":70},{"name":"CW_PN","line":71},{"name":"CW_NN","line":72},{"name":"fetch","line":84},{"name":"layer","line":101},{"name":"on_comb","line":119}],"imports":[{"name":"base::types","line":49}],"terms":["igla","race","ternary","lut","table","fetchers","multiplies","entries","gat","zero","pos","neg","fetch","layer","comb"]},{"id":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_mac.t27","health":"ok","module":"igla-race-ternary-mac"}],"description":"t27/specs/igla/race/ternary_mac.t27 Ternary {-1, 0, +1} multiply-accumulate unit Zero '*' operators in generated assignments -- pure sign-flip / zero / add-sub","symbols":[{"name":"TernaryWeight","line":16},{"name":"ternary_decode","line":26},{"name":"ternary_mul","line":34},{"name":"ternary_mac","line":42},{"name":"ternary_dot","line":48}],"imports":[{"name":"base::types","line":8}],"terms":["igla","race","ternary","mac","weight","decode","mul","dot"]},{"id":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/shell_sort.t27","health":"ok","module":"TriShellSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","shell"]},{"id":"c157c4a023255a8ea006f50a5bc2b93cd30bf402b959e27ec224e6adfa9cf3b4","sources":[{"repo":"ghashtag/t27","path":"specs/ar/datalog_engine.t27","health":"ok","module":null}],"description":"spec: DatalogEngine Datalog reasoning engine for neuro-symbolic AI","symbols":[{"name":"Fact","line":7},{"name":"Rule","line":14},{"name":"Database","line":20},{"name":"QueryResult","line":26},{"name":"new_database","line":33},{"name":"add_fact","line":41},{"name":"add_rule","line":51},{"name":"query","line":61},{"name":"facts_match","line":96},{"name":"rule_heads_match","line":107},{"name":"apply_rule","line":112},{"name":"eval_bottom_up","line":146},{"name":"fact_in_db","line":180},{"name":"eval_top_down","line":190}],"imports":[],"terms":["datalog","engine","fact","rule","database","query","facts","match","heads","apply","eval","bottom","top","down"]},{"id":"c15e19f5e2a0ee02a6acf9817040877e1001e6d720eed0caec1e6ebd1bb4a124","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/faculty_board.t27","health":"ok","module":"FacultyBoard"}],"description":"t27/specs/","symbols":[{"name":"Lang","line":13},{"name":"FacultySnapshot","line":17},{"name":"AgentStatus","line":27},{"name":"Agent","line":34},{"name":"AgentStatusKind","line":38},{"name":"FacultyDelta","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["faculty","board","lang","snapshot","status","kind","delta"]},{"id":"c17f4eba133c5caccd5af0eb50c4ba920920ca361f8cb6cdcb8fcd4ac8a1e535","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_split_optimality.t27","health":"ok","module":"PhiSplitOptimality"}],"description":"t27/specs/math/phi_split_optimality.t27 Phi-Split Theorems — Self-Similarity + Optimal Rounding (CORRECTED) MATH-OPTIMALITY-001 — Foundation for GoldenFloat being non-random THEOREM 1 (Golden Self-Similarity): phi is unique self-similar proportion for bit allocation THEOREM 2 (Optimal Rounding): round((N-1)/phi^2) minimizes phi-distance (7/7 match)","symbols":[{"name":"PHI_TARGET","line":28},{"name":"ProofStep","line":34},{"name":"optimal_ratio_by_self_similarity","line":50},{"name":"r","line":52},{"name":"m","line":53},{"name":"e","line":54},{"name":"optimal_allocation_by_rounding","line":70},{"name":"available","line":71},{"name":"phi_sq","line":72},{"name":"exp_raw","line":75},{"name":"exp_bits","line":76},{"name":"mant_bits","line":77},{"name":"ratio","line":80},{"name":"phi_dist","line":81},{"name":"optimal_ratio_by_am_gm","line":94},{"name":"half","line":96},{"name":"round","line":100},{"name":"abs","line":117},{"name":"self_similarity_proof_steps","line":128},{"name":"optimal_rounding_proof_steps","line":153},{"name":"GFFamilyVerification","line":177},{"name":"verify_7_7_match","line":187},{"name":"phi_sq","line":188},{"name":"formats","line":191},{"name":"available","line":205},{"name":"phi_raw","line":206},{"name":"phi_rounded","line":207}],"imports":[{"name":"math::constants","line":10},{"name":"math::sacred_physics","line":11}],"terms":["math","phi","split","optimality","target","proof","step","optimal","ratio","self","similarity","allocation","rounding","available","exp","raw","bits","mant","dist","half","round","abs","steps","gffamily","verification","verify","match","formats","rounded"]},{"id":"c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_deployment.t27","health":"ok","module":"ProductionDeployment"}],"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","symbols":[{"name":"DEPLOY_PENDING","line":8},{"name":"DEPLOY_PROGRAMMING","line":9},{"name":"DEPLOY_VERIFIED","line":10},{"name":"DEPLOY_ACTIVE","line":11},{"name":"DEPLOY_FAILED","line":12},{"name":"STEP_BITSTREAM","line":15},{"name":"STEP_FLASH","line":16},{"name":"STEP_VERIFY","line":17},{"name":"STEP_MONITOR","line":18},{"name":"create_deployment","line":21},{"name":"extract_deploy_state","line":28},{"name":"extract_deploy_step","line":32},{"name":"extract_deploy_progress","line":36},{"name":"extract_device_id","line":40},{"name":"deployment_complete","line":45},{"name":"create_bitstream_info","line":51},{"name":"extract_bitstream_size","line":57},{"name":"extract_bitstream_checksum","line":61},{"name":"extract_bitstream_version","line":65},{"name":"flash_programming_success","line":70},{"name":"create_monitor_config","line":75},{"name":"extract_sample_rate","line":80},{"name":"extract_metrics_enabled","line":84},{"name":"create_checklist","line":89},{"name":"checklist_power","line":96},{"name":"checklist_cooling","line":100},{"name":"checklist_network","line":104},{"name":"checklist_monitoring","line":108},{"name":"checklist_complete","line":113}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","production","deployment","deploy","programming","verified","active","failed","step","bitstream","flash","verify","monitor","create","extract","state","progress","device","complete","info","size","checksum","success","config","sample","rate","metrics","enabled","checklist","power","cooling","network","monitoring"]},{"id":"c1955126a803192f0a46ca05a2be74f2ca28ddedeba7e8b9355f2ed6baa0eaef","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/encoder_block.t27","health":"ok","module":"EncoderBlock"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_D_MODEL","line":13},{"name":"DEFAULT_N_HEADS","line":14},{"name":"DEFAULT_D_FF","line":15},{"name":"DEFAULT_DROPOUT","line":16},{"name":"EncoderBlockConfig","line":22},{"name":"AttentionOutput","line":30},{"name":"FFNOutput","line":35},{"name":"BlockOutput","line":39},{"name":"multi_head_attention","line":48},{"name":"feed_forward","line":53},{"name":"forward","line":58}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","encoder","block","default","model","heads","dropout","config","attention","ffnoutput","multi","head","feed","forward"]},{"id":"c208991377d1523087aed04969aac10ad910ef317e8bdb67bf5d290d70a4fff8","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_argmax4.t27","health":"warn","module":"GftArgmax4"}],"description":"","symbols":[{"name":"category","line":16},{"name":"gt","line":22},{"name":"on_comb","line":34}],"imports":[],"terms":["ternary","gft","argmax4","category","comb"]},{"id":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","sources":[{"repo":"ghashtag/t27","path":"specs/portable/relay_observer.t27","health":"warn","module":"portable"}],"description":"relay_observer.t27 0 WebSocket Relay Observer for BrowserOS A2A Integration Ring 32 — Cloud Orchestration 12 + 1/34 = 3 | TRINITY","symbols":[{"name":"WS_READY_STATE","line":15},{"name":"WS_CONNECTING_STATE","line":16},{"name":"WS_ERROR_STATE","line":17},{"name":"WS_CLOSED_STATE","line":18},{"name":"NEGONE","line":20},{"name":"ZERO","line":21},{"name":"ONE","line":22},{"name":"MESSAGE_TYPE_EVENT","line":24},{"name":"MESSAGE_TYPE_DATA","line":25},{"name":"MESSAGE_TYPE_CONTROL","line":26},{"name":"WebSocketState","line":32},{"name":"MessageType","line":39},{"name":"WebSocketMessage","line":49},{"name":"ObserverConfig","line":55},{"name":"websocket_state_new","line":66},{"name":"websocket_state_set","line":70},{"name":"websocket_state_is_ready","line":74},{"name":"websocket_state_is_closed","line":78},{"name":"message_type_from_byte","line":86},{"name":"message_type_to_byte","line":96},{"name":"validate_message_header","line":108},{"name":"mtype","line":113},{"name":"parse_websocket_message","line":128},{"name":"mtype","line":137},{"name":"create_event_message","line":156},{"name":"create_data_message","line":166},{"name":"create_control_message","line":176},{"name":"should_reconnect","line":190},{"name":"calculate_backoff_delay","line":194},{"name":"base","line":196},{"name":"delay","line":197},{"name":"jitter","line":198},{"name":"result","line":199},{"name":"observer_init","line":208},{"name":"observer_should_connect","line":223},{"name":"observer_should_disconnect","line":227},{"name":"route_message","line":235},{"name":"extract_target_agent","line":246},{"name":"byte","line":262},{"name":"get_current_timestamp","line":280},{"name":"update_timestamp","line":286}],"imports":[{"name":"tritype::base","line":8},{"name":"compiler::lexer","line":9}],"terms":["portable","relay","observer","ready","state","connecting","closed","negone","zero","one","event","data","control","web","socket","config","websocket","set","byte","validate","header","mtype","parse","create","reconnect","calculate","backoff","delay","base","jitter","init","connect","disconnect","route","extract","target","get","timestamp"]},{"id":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/exit_codes.t27","health":"ok","module":"TriExitCodes"}],"description":"t27/specs/","symbols":[{"name":"ExitCode","line":13}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","exit","codes"]},{"id":"c25dfe91ff969f6ce75fe208bcf6126c6794a0060096503240f80439f0e93306","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/matmul.t27","health":"warn","module":null}],"description":"Matrix Multiply (3x3) — TRI-27 Assembly Implementation Computes C = A * B where A, B are 3x3 matrices Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-108: Matrix A (3x3, row-major, 9 words) 200-208: Matrix B (3x3, row-major, 9 words)","symbols":[],"imports":[],"terms":["tri27","matmul"]},{"id":"c2cd77bcf1104c6158fcb0dc37e0533f063bf3836fedcbe3174681beae8f460b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/residual_connection.t27","health":"ok","module":"Residual"}],"description":"t27/specs/","symbols":[{"name":"forward","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","residual","connection","forward"]},{"id":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf12.t27","health":"warn","module":"GF12"}],"description":"t27/specs/numeric/gf12.t27 GoldenFloat12 — 12-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 4 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":29},{"name":"GF12","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":68},{"name":"sign","line":69},{"name":"exp_biased","line":70},{"name":"mant","line":71},{"name":"exp_unbiased","line":79},{"name":"mant_normalized","line":86},{"name":"value","line":92},{"name":"max_value","line":104},{"name":"mant_max","line":105},{"name":"exp_max","line":106},{"name":"min_positive","line":110},{"name":"mant_min","line":111},{"name":"exp_min","line":112},{"name":"epsilon","line":116},{"name":"validate_format","line":124},{"name":"fmt","line":125},{"name":"MEMORY_RATIO_VS_FP32","line":143},{"name":"floor_log2","line":149},{"name":"extract_mantissa","line":163},{"name":"normalized","line":164},{"name":"frac","line":165},{"name":"max_mant","line":166},{"name":"clamp","line":170},{"name":"pow","line":176}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf12","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow"]},{"id":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/heap_sort.t27","health":"ok","module":"TriHeapSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","heap"]},{"id":"c3d44f746a9e911188536a2893fa316140abe6719407c5a179eca112db3f2575","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf64.t27","health":"ok","module":"triformat_bnf64"}],"description":"bnf64.t27 -- BNF64: Binary Network Float, 64-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf64","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"c3d50f765c9a9c0003446e9d2fa3df72d86d3c75c599c10498df31dfed1768f6","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/bench.suite.t27","health":"ok","module":"trinity_capability_bench_suite"}],"description":"specs/trinity/capabilities/bench.suite.t27 -- capability trinity/bench.suite: Benchmarks: bench-core, bench-compress and the benchmark tests One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","bench","suite","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"c3f1a5e9f48b01aa84ce078c83e6bc960b823a7d620227a319cfb5407511145f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_bitnet_neuron.t27","health":"warn","module":"GftBitnetNeuron"}],"description":"","symbols":[{"name":"magadd","line":12},{"name":"magsub","line":34},{"name":"sadd","line":61},{"name":"contrib","line":78},{"name":"on_comb","line":86}],"imports":[],"terms":["ternary","gft","bitnet","neuron","magadd","magsub","sadd","contrib","comb"]},{"id":"c445d665e9324ddc28cfe524eb8be1570b8f5d83bc24aac13be278142cabbc53","sources":[{"repo":"ghashtag/t27","path":"specs/brain/phi_timing.t27","health":"ok","module":"brain-phi-timing"}],"description":"phi_timing.t27 — phi-structured cognitive cycle timing (spec-first) Phase duration ratios follow INV-1; integer ms sum may differ slightly from 3*base_ms.","symbols":[{"name":"PHI","line":11},{"name":"PHI_INV","line":12},{"name":"PHI_INV_SQ","line":13},{"name":"TRINITY","line":14},{"name":"DEFAULT_BASE_MS","line":15},{"name":"Phase","line":20},{"name":"PhiTiming","line":22},{"name":"phi_timing_init","line":29},{"name":"phi_timing_phase_duration","line":33},{"name":"base","line":34},{"name":"phi_timing_total_cycle_ms_float","line":44},{"name":"base","line":45},{"name":"phi_timing_total_cycle","line":49},{"name":"timing","line":61},{"name":"base","line":62},{"name":"expected","line":63},{"name":"actual","line":64},{"name":"timing","line":69},{"name":"timing","line":74},{"name":"decide","line":75},{"name":"sense","line":76},{"name":"ratio","line":77}],"imports":[],"terms":["brain","phi","timing","inv","default","base","phase","init","duration","total","cycle","float","expected","actual","decide","sense","ratio"]},{"id":"c4524d253aa50af4b4f7a25d528df1a74f902d4229b0103aa6544a6f79e6274c","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-model-v2-start.t27","health":"ok","module":"fn_training_model_v2_start"}],"description":"specs/functions/training-model-v2-start.t27 -- function training-model-v2-start (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-v2-start). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/modelTrainingV2.ts#L45 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","training","model","start","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"c4d32975e53fc1cf71a345333d73454c185b745057a215af3113981eedc68517","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/emit.t27","health":"ok","module":"tool_tri_emit"}],"description":"specs/tools/tri/emit.t27 -- tool tri/emit, the `tri emit` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/emit). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["emit","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"c561ad5d10d55ee6659a9dc143f47c9f5b7846edd50d10f645d1bc4ec747354b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft4.t27","health":"ok","module":"triformat_gft4"}],"description":"gft4.t27 -- GF-T4: the golden-ratio ternary ladder, 4-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft4","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/opcodes.t27","health":"ok","module":"igla-race-opcodes"}],"description":"t27/specs/igla/race/opcodes.t27 IGLA RACE sacred opcode alphabet specification","symbols":[{"name":"OP_LOAD_PHYSICS_CONST","line":14},{"name":"OP_NOC_FORWARD","line":15},{"name":"OP_RAZOR_SAMPLE","line":16},{"name":"OP_HOLO_MUX_1X2","line":17},{"name":"OP_LUT_LOOKUP","line":18},{"name":"OP_BITROM_READ","line":19},{"name":"OP_SPARSE_SKIP","line":20},{"name":"OP_LAYER_GATE","line":21},{"name":"OP_LUT_NPU","line":22},{"name":"OP_AVS_RECONF","line":23},{"name":"OP_CORDIC_SIN_COS","line":24},{"name":"OPCODE_COUNT","line":26},{"name":"OPCODE_MIN","line":27},{"name":"OPCODE_MAX","line":28},{"name":"OpcodeProperty","line":34},{"name":"OpcodeTable","line":42},{"name":"is_sacred_opcode","line":51},{"name":"opcode_name","line":56},{"name":"validate_opcode_chain_inner","line":72},{"name":"validate_opcode_chain","line":83},{"name":"get_opcode_cycles","line":88}],"imports":[{"name":"base::types","line":7},{"name":"math::constants","line":8}],"terms":["igla","race","opcodes","load","physics","noc","forward","razor","sample","holo","mux","1x2","lut","lookup","bitrom","read","sparse","skip","layer","gate","npu","avs","reconf","cordic","sin","cos","opcode","count","min","max","property","table","sacred","validate","chain","inner","get","cycles"]},{"id":"c59d180a0c7866d5115f7d72ba3cf3f88e566c42936937fafba4eec89ab39820","sources":[{"repo":"ghashtag/t27","path":"specs/functions/render-avatar-video-run.t27","health":"ok","module":"fn_render_avatar_video_run"}],"description":"specs/functions/render-avatar-video-run.t27 -- function render-avatar-video-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-avatar-video-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/renderAvatarVideo.ts#L174 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","render","avatar","video","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"c5a5f4d86e39a33fe2eee3119242a951a9e942f8d2d1e8eddeda8f6ff0b0e9e4","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/research.unreferenced-sources.t27","health":"ok","module":"trinity_capability_research_unreferenced_sources"}],"description":"specs/trinity/capabilities/research.unreferenced-sources.t27 -- capability trinity/research.unreferenced-sources: Source directories that no file named by build.zig reaches through @import: src/ One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","research","unreferenced","sources","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"c5cf6004cce2295f921b7d983e252a9aafbd92ad662db2d5b595824c2774b7a4","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-review-code.t27","health":"ok","module":"skill_trinity_review_code"}],"description":"specs/skills/trinity-review-code.t27 -- skill trinity/review-code Source of truth for the skill card on t27.ai (#/skills?skill=trinity/review-code). The skill body lives in gHashTag/trinity at .claude/skills/review-code/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/review-code/SKILL.md, sha256 e5712744615c...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","review","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"c5f2218c27d16037026e392844aee9dff023506272d7eb2ecae5c323be2994de","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/tri-ssot.t27","health":"ok","module":"tool_mcp_tri_ssot"}],"description":"specs/tools/mcp/tri-ssot.t27 -- tool mcp/tri-ssot, MCP server \"tri-ssot\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-ssot). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","ssot","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"c638af50d443971716097050d0da73d8afc15857f2253e32afe63b4a49104b36","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/mse_loss.t27","health":"ok","module":"MseLoss"}],"description":"t27/specs/","symbols":[{"name":"MSELossConfig","line":13},{"name":"forward","line":22}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","mse","mseloss","config","forward"]},{"id":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","sources":[{"repo":"ghashtag/t27","path":"specs/system/unified-agent-operations.t27","health":"ok","module":"system"}],"description":"specs/system/unified-agent-operations.t27 -- the one system that the Trinity repositories form together: canonical contracts (t27), the Queen and her Bees, the Inngest scheduler, the 999 application edge (bot, Mini App, Hive, CRM, media library), the self-hosted inference services (whisper = Speaches, vision = llama.cpp + Qwen3-VL) and the evidence tracks (GoldenFloat, AX7203, Golden Sieve, publications). This card names the parts, the contracts between them, the gates every change must pass and the budgets every run must keep. It claims nothing that a witness has","symbols":[{"name":"KIND","line":16},{"name":"ID","line":17},{"name":"VERSION","line":18},{"name":"OWNER","line":19},{"name":"AUTHORED","line":20},{"name":"LAYERS","line":28},{"name":"AUTHORITY_FLOWS_DOWN","line":29},{"name":"SUBSYSTEMS","line":32},{"name":"SATELLITES","line":38},{"name":"CARD_REQUIRED","line":42},{"name":"ON_BAD_CARD","line":44},{"name":"STATUS_TAGS","line":46},{"name":"FORBIDDEN_CLAIMS","line":48},{"name":"DRIFT_CHECK","line":52},{"name":"DRIFT_CHECK_REQUIRED_STATUS","line":53},{"name":"SOURCE_LANGUAGE","line":55},{"name":"GENERATED_LANGUAGES","line":56},{"name":"FAST_PATH_MAX_CARDS","line":59},{"name":"CHANGE_FOLDER","line":60},{"name":"PARALLEL_MARK","line":62},{"name":"SCHEDULER_INTERFACE","line":67},{"name":"SCHEDULER_ENGINE","line":68},{"name":"SCHEDULER_ALTERNATES","line":69},{"name":"CRON_REQUIRED","line":72},{"name":"CRON_TZ_DEFAULT","line":73},{"name":"CRON_OVERLAP_VALUES","line":74},{"name":"CRON_CATCHUP_VALUES","line":75},{"name":"ENGINE_STATE_EXTERNAL","line":77},{"name":"ENGINE_STATE_STORES","line":78},{"name":"RUN_RETENTION_DAYS","line":80},{"name":"TRACE_RETENTION_DAYS","line":81},{"name":"ENGINE_PINNED","line":85},{"name":"HITL_MODEL","line":90},{"name":"HITL_TIMEOUT_H","line":91},{"name":"HITL_ON_TIMEOUT","line":92},{"name":"NEEDS_APPROVAL","line":94},{"name":"MERGE_WORD_SOURCE","line":100},{"name":"PR_FOOTER_REQUIRED","line":101},{"name":"BEE_ACCEPT","line":104},{"name":"QUEEN_OWNS_MERGE_DECISION","line":105},{"name":"BEE_SEES_FULL_TRACE","line":106},{"name":"BEE_MAX_ITER","line":110},{"name":"BEE_MAX_TOKENS","line":111},{"name":"QUEEN_MAX_BEES_PER_TASK","line":112},{"name":"RUN_MAX_MINUTES","line":113},{"name":"ON_BUDGET_EXCEEDED","line":114},{"name":"SECRET_SOURCES","line":119},{"name":"SECRET_PRINT","line":120},{"name":"PRIVATE_ONLY_SURFACES","line":123},{"name":"STT_SERVICE","line":127},{"name":"STT_RTFX_MIN","line":128},{"name":"STT_HALLUCINATION_FILTER","line":131},{"name":"UNREAD_MARKER_SOURCE","line":133},{"name":"VISION_SERVICE","line":139},{"name":"VISION_MODEL","line":140},{"name":"VISION_THREADS","line":141},{"name":"VISION_FRAMES","line":142},{"name":"VISION_FRAME_LONGEST_SIDE","line":143},{"name":"VISION_VIDEO_MAX_TOKENS","line":144},{"name":"VISION_TIMEOUT_S","line":145},{"name":"VISION_FALLBACKS","line":147},{"name":"INFERENCE_IMAGES_PINNED","line":149},{"name":"RELIABILITY_K","line":154},{"name":"RELIABILITY_FAULT_RATE_PCT","line":155},{"name":"RELIABILITY_METRIC","line":156},{"name":"CONFIG_STATE_SEPARATED","line":159},{"name":"FORMATS","line":165},{"name":"SW_BITEXACT","line":166},{"name":"HW_TIER_E_DECODE","line":167},{"name":"HW_TIER_E_COMPUTE","line":168},{"name":"SILICON_CLAIMED","line":169},{"name":"CLAIM_AUDIT","line":171},{"name":"OWNER_ITEMS","line":178},{"name":"ENABLED","line":179}],"imports":[],"terms":["system","unified","operations","kind","owner","authored","layers","authority","flows","down","subsystems","satellites","card","required","bad","status","tags","forbidden","claims","drift","language","generated","languages","fast","path","max","cards","folder","parallel","mark","scheduler","interface","engine","alternates","cron","default","overlap","values","catchup","state","external","stores","retention","days","trace","pinned","hitl","model","timeout","approval","merge","word","footer","bee","accept","queen","owns","decision","sees","full","iter","tokens","bees","per","minutes","budget","exceeded","secret","sources","print","private","surfaces","stt","service","rtfx","min","hallucination","filter","unread","marker","vision","threads","frames","frame","longest","side","video","fallbacks","inference","images","reliability","fault","rate","pct","metric","config","separated","formats","bitexact","tier","decode","compute","silicon","claimed","claim","audit","items","enabled"]},{"id":"c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/key_management.t27","health":"warn","module":"KeyManagement"}],"description":"Key Management - lightweight key rotation and distribution Simplified alternative to complex PKI for mesh networks","symbols":[{"name":"MAX_KEYS","line":7},{"name":"KEY_SIZE","line":8},{"name":"KEY_VALID","line":9},{"name":"KEY_INVALID","line":10},{"name":"ROTATION_INTERVAL","line":11},{"name":"create_key_entry","line":14},{"name":"get_key_valid","line":21},{"name":"get_key_id","line":25},{"name":"get_key_value","line":29},{"name":"get_key_timestamp","line":33},{"name":"create_key_store","line":38},{"name":"get_key_entry","line":45},{"name":"find_key_by_id","line":53},{"name":"add_key","line":67},{"name":"invalidate_key","line":82},{"name":"needs_rotation","line":102},{"name":"rotate_key","line":112},{"name":"get_active_key","line":131},{"name":"count_valid_keys","line":174}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","key","management","max","keys","size","valid","invalid","rotation","interval","create","entry","get","timestamp","store","find","invalidate","rotate","active","count"]},{"id":"c6c888eead59d10c6030023702fa4faf2457e75a595c1dafe65a00f70626f17c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/specs/physics/formula_registry.t27","health":"ok","module":null}],"description":"Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md SSOT for Trinity formula discovery","symbols":[{"name":"PHI","line":9},{"name":"PI","line":10},{"name":"E","line":11},{"name":"GA","line":12},{"name":"gamma_phi","line":19},{"name":"ln2_over_pi","line":24},{"name":"ln3_over_pi","line":29},{"name":"alpha_inv_pellis_exact","line":34},{"name":"alpha_s","line":39},{"name":"tc_qcd","line":44},{"name":"neutron_proton_ratio","line":53},{"name":"muon_electron_ratio","line":59},{"name":"electron_mass_mev","line":68},{"name":"muon_mass_mev","line":73},{"name":"tau_mass_mev","line":78},{"name":"koide_q","line":83},{"name":"bottom_mass_gev","line":92},{"name":"top_mass_gev","line":97},{"name":"strange_down_ratio","line":102},{"name":"theta_cabibbo","line":111},{"name":"v_cb","line":116},{"name":"v_us","line":121},{"name":"sin2theta23_pmns","line":130},{"name":"delta_cp_pmns","line":135},{"name":"sin2theta12_pmns","line":140},{"name":"lambda_exponent","line":149},{"name":"higgs_z_ratio","line":158},{"name":"v_ud_chimera","line":167},{"name":"v_cs_chimera","line":172},{"name":"v_td_chimera","line":177},{"name":"sin2theta12_chimera","line":182},{"name":"delta_cp_rad","line":187},{"name":"strange_muon_ratio","line":192},{"name":"bottom_top_ratio","line":197},{"name":"omega_b_chimera","line":202},{"name":"ns_chimera","line":207}],"imports":[],"terms":["bootstrap","physics","formula","registry","phi","gamma","ln2","over","ln3","alpha","inv","pellis","exact","qcd","neutron","proton","ratio","muon","electron","mass","mev","tau","koide","bottom","gev","top","strange","down","theta","cabibbo","sin2theta23","pmns","delta","sin2theta12","lambda","exponent","higgs","chimera","rad","omega"]},{"id":"c6ced4902ab6006cfa516bf6fda07bff37615a2feb036924757ae9b4a8c8062f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_07.t27","health":"warn","module":"damage_class_07"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"c6cf3e0b7de5d05674b0dcf9c9f2dd1c7efe0a507a99644025f58261c5b15efe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/leaky_relu_activation.t27","health":"ok","module":"LeakyRelu"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_ALPHA","line":13},{"name":"LeakyReLUConfig","line":19},{"name":"forward","line":28},{"name":"forward_batch","line":33},{"name":"derivative","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","leaky","relu","default","alpha","luconfig","forward","batch","derivative"]},{"id":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf256.t27","health":"warn","module":"GF256"}],"description":"t27/specs/numeric/gf256.t27 GoldenFloat256 0 256-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 11 (P1)","symbols":[{"name":"BITS","line":16},{"name":"SIGN_BITS","line":17},{"name":"EXP_BITS","line":18},{"name":"MANT_BITS","line":19},{"name":"EXP_BIAS_LO","line":22},{"name":"EXP_BIAS_HI","line":23},{"name":"PHI_DISTANCE","line":26},{"name":"GF256","line":28},{"name":"encode","line":37},{"name":"sign","line":42},{"name":"abs_val","line":43},{"name":"exp_unbiased","line":46},{"name":"normalized","line":57},{"name":"frac","line":58},{"name":"max_mant","line":59},{"name":"mant","line":60},{"name":"clamped_mant","line":61},{"name":"raw_0","line":64},{"name":"raw_1","line":65},{"name":"exp_m1","line":68},{"name":"exp_m2","line":69},{"name":"raw_3","line":72},{"name":"decode","line":83},{"name":"sign","line":84},{"name":"exp_lo_part","line":87},{"name":"exp_mid_part","line":88},{"name":"exp_hi_part","line":89},{"name":"exp_biased_lo","line":90},{"name":"exp_biased_hi","line":91},{"name":"exp_biased_128","line":93},{"name":"mant_lo","line":96},{"name":"mant_mid","line":97},{"name":"mant","line":98},{"name":"exp_bias_128","line":106},{"name":"exp_unbiased","line":107},{"name":"max_mant","line":114},{"name":"mant_normalized","line":115},{"name":"value","line":121},{"name":"max_value","line":130},{"name":"max_mant","line":131},{"name":"mant_max","line":132},{"name":"exp_max","line":133},{"name":"min_positive","line":137},{"name":"max_mant","line":138},{"name":"mant_min","line":139},{"name":"exp_min","line":140},{"name":"epsilon","line":144},{"name":"max_mant","line":145},{"name":"validate_format","line":150},{"name":"fmt","line":151},{"name":"MEMORY_RATIO_VS_FP32","line":166},{"name":"floor_log2","line":169},{"name":"pow","line":183},{"name":"is_integer","line":194},{"name":"ln_val","line":218},{"name":"ln_approx","line":222},{"name":"t","line":230},{"name":"t2","line":231},{"name":"t3","line":232},{"name":"t5","line":233},{"name":"exp_approx","line":238},{"name":"floor","line":255}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["euler","fpga","gf256","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","normalized","frac","max","clamped","raw","decode","part","mid","biased","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","pow","integer","approx"]},{"id":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/language.t27","health":"ok","module":"lsp-language"}],"description":"lsp/language.t27 — Language Server Feature Mappings Language ID mappings, file extensions, and feature associations","symbols":[{"name":"LANG_T27","line":19},{"name":"LANG_ZIG","line":22},{"name":"LANG_PYTHON","line":25},{"name":"LANG_JAVASCRIPT","line":28},{"name":"LANG_TYPESCRIPT","line":31},{"name":"LANG_MARKDOWN","line":34},{"name":"LANG_JSON","line":37},{"name":"LANG_YAML","line":40},{"name":"EXT_T27","line":43},{"name":"EXT_ZIG","line":46},{"name":"EXT_PYTHON","line":49},{"name":"EXT_JAVASCRIPT","line":52},{"name":"EXT_TYPESCRIPT","line":55},{"name":"EXT_MARKDOWN","line":58},{"name":"EXT_JSON","line":61},{"name":"EXT_YAML","line":64},{"name":"LanguageInfo","line":71},{"name":"LanguageConfiguration","line":80},{"name":"CommentConfiguration","line":88},{"name":"BracketPair","line":95},{"name":"Indentation","line":101},{"name":"LanguageFeature","line":107},{"name":"FileAssociation","line":125},{"name":"LanguageServerCapability","line":131},{"name":"SymbolInfo","line":137},{"name":"SymbolKind","line":144},{"name":"KeywordSet","line":161},{"name":"CompletionTemplate","line":167},{"name":"language_info_t27","line":178},{"name":"language_info_python","line":189},{"name":"language_info_zig","line":200},{"name":"language_configuration_default","line":211},{"name":"file_association_create","line":225},{"name":"language_id_from_extension","line":233},{"name":"language_server_capability_create","line":250},{"name":"symbol_info_create","line":260},{"name":"completion_template_create","line":269},{"name":"is_t27_extension","line":278},{"name":"is_t27_language","line":283},{"name":"feature_to_string","line":288},{"name":"symbol_kind_to_string","line":308},{"name":"info","line":331},{"name":"info","line":336},{"name":"info","line":341},{"name":"config","line":346},{"name":"assoc","line":351},{"name":"lang_id","line":356},{"name":"lang_id","line":361},{"name":"cap","line":374},{"name":"sym","line":379},{"name":"tmpl","line":384},{"name":"str","line":389},{"name":"str","line":394}],"imports":[],"terms":["lsp","language","lang","zig","python","javascript","typescript","markdown","json","yaml","ext","info","configuration","bracket","pair","indentation","feature","association","capability","kind","keyword","set","completion","template","default","create","extension","config","assoc","cap","sym","tmpl","str"]},{"id":"c7195be79157467c96d65abbf92dcaf4e20bc194e8a800cfcde8571cffecf4a2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn.t27","health":"ok","module":"Dqn"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_GAMMA","line":13},{"name":"DEFAULT_EPSILON_START","line":14},{"name":"DEFAULT_EPSILON_END","line":15},{"name":"DQNConfig","line":21},{"name":"Transition","line":34},{"name":"select_action","line":47},{"name":"train_step","line":52},{"name":"update_target","line":57}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["dqn","default","gamma","epsilon","start","end","dqnconfig","transition","select","action","train","step","target"]},{"id":"c71dc9505fcf56e8aea69b4265d736e540fc598db301974f3c88e4f9830ce53c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_parser.t27","health":"ok","module":"WorkflowParser"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","workflow","parser"]},{"id":"c72b9a7b5fa9804c513eb5c2ebff0868bbf2a7226347826e64bbd34f6bef6475","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27","health":"ok","module":"cron_999_multibots_telegraf_generate_jobs_L164"}],"description":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27 -- cron timer/999-multibots-telegraf/generate-jobs-L164 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/generate-jobs-L164). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/generate-jobs.ts#L164. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","generate","jobs","l164","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"c763650c8fdc2e77ad17d147463a2a41f6073827281085c720bbe33671c396a9","sources":[{"repo":"ghashtag/t27","path":"specs/neural/forward_pass.t27","health":"warn","module":"forward_pass"}],"description":"Forward Pass Demo - VSA-based Neural Network Implements transformer-style forward pass using Vector Symbolic Architecture with multi-head attention, residual connections, and autoregressive generation Author: Dmitrii Vasilev","symbols":[{"name":"DEFAULT_DIM","line":19},{"name":"NUM_ROLES","line":22},{"name":"CONTEXT_SIZE","line":25},{"name":"NUM_HEADS","line":28},{"name":"VECTORS_PER_HEAD","line":31},{"name":"FF1_ROLE_IDX","line":34},{"name":"FF2_ROLE_IDX","line":35},{"name":"MAX_GENERATION_TOKENS","line":38},{"name":"DEFAULT_LEARNING_RATE","line":41},{"name":"RESONATOR_ITERS","line":44},{"name":"SIMILARITY_THRESHOLD","line":47},{"name":"Hypervector","line":54},{"name":"Roles","line":58},{"name":"Context","line":61},{"name":"TrainResult","line":64},{"name":"init_roles","line":75},{"name":"single_head_attention","line":93},{"name":"forward_pass_multi_head","line":124},{"name":"summarize_context","line":153},{"name":"forward_pass_direct","line":166},{"name":"resonator_train_step","line":181},{"name":"compute_direct_role","line":246},{"name":"generate_autoregressive","line":273},{"name":"measure_perplexity","line":309},{"name":"compute_accuracy","line":341}],"imports":[{"name":"numeric::gf16","line":10},{"name":"tritype::Trit","line":11},{"name":"vsa::vsa_core","line":12}],"terms":["neural","forward","pass","default","dim","num","roles","size","heads","vectors","per","head","ff1","role","idx","ff2","max","generation","tokens","learning","rate","resonator","iters","similarity","threshold","hypervector","train","init","single","attention","multi","summarize","direct","step","compute","generate","autoregressive","measure","perplexity","accuracy"]},{"id":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/eval.t27","health":"warn","module":"igla-coder-eval"}],"description":"t27/specs/igla/coder/eval.t27 IGLA-Coder evaluation specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .len(), @floatFromInt, let before if, etc). Uses recursion + if/return chains as the reliable pattern.","symbols":[{"name":"HUMANEVAL_TASKS","line":18},{"name":"MBPP_TASKS","line":19},{"name":"MULTIPLE_LANGUAGES","line":20},{"name":"PASS_AT_1","line":22},{"name":"PASS_AT_10","line":23},{"name":"PASS_AT_100","line":24},{"name":"R_SI_1_COMPLIANT","line":30},{"name":"R_SI_2_COMPLIANT","line":31},{"name":"R_SI_3_COMPLIANT","line":32},{"name":"EvalTask","line":38},{"name":"EvalResult","line":47},{"name":"PassAtK","line":57},{"name":"BenchmarkReport","line":64},{"name":"YosysReport","line":77},{"name":"count_passed_inner","line":91},{"name":"pass_at_k","line":106},{"name":"has_star_inner","line":122},{"name":"check_sacred_compliance","line":134},{"name":"CompileResult","line":141},{"name":"compile_and_test","line":148},{"name":"check_balanced_braces","line":155},{"name":"has_substring","line":171},{"name":"match_at","line":181},{"name":"count_sacred_inner","line":193},{"name":"estimate_param_count","line":207},{"name":"sum_latency_inner","line":219},{"name":"generate_report","line":226},{"name":"detect_template_from_rtl","line":246},{"name":"simulate_yosys_report","line":262},{"name":"score_rtl_with_yosys","line":295},{"name":"write_verilog_file","line":302},{"name":"parse_yosys_log","line":308},{"name":"ProcessHandle","line":317},{"name":"spawn_yosys_process","line":325},{"name":"wait_for_process","line":334},{"name":"run_yosys_subprocess","line":343},{"name":"run_yosys_cli","line":355},{"name":"score_rtl_with_real_yosys","line":365},{"name":"compare_ppa_reports","line":377},{"name":"synthesis_feedback_loop","line":390},{"name":"rank_rtl_variants_inner","line":403},{"name":"rank_rtl_variants","line":414},{"name":"extract_metric_from_log","line":429},{"name":"extract_metric_inner","line":433},{"name":"match_at_prefix","line":441},{"name":"parse_number_after_colon","line":445},{"name":"parse_uint","line":454},{"name":"parse_yosys_cells","line":465},{"name":"parse_yosys_lut4","line":471},{"name":"parse_yosys_dff","line":477},{"name":"parse_yosys_freq","line":483},{"name":"extract_float_metric","line":487},{"name":"parse_float_after_colon","line":495},{"name":"parse_float","line":503},{"name":"parse_icarus_result","line":521},{"name":"run_verilog_simulation","line":527},{"name":"count_assign_statements","line":539},{"name":"count_assign_inner","line":543},{"name":"count_star_in_assign","line":554},{"name":"count_star_inner","line":558},{"name":"sacred_constraint_penalty","line":570},{"name":"verify_rtl_with_testbench","line":581},{"name":"classify_token","line":590},{"name":"adaptive_temperature","line":603},{"name":"is_valid_verilog_token","line":611},{"name":"contains_valid_verilog_token","line":620},{"name":"generate_verilog_constrained","line":626},{"name":"gen_adder_module","line":635},{"name":"gen_adder_8bit","line":640},{"name":"gen_adder_16bit","line":645},{"name":"gen_booth_module","line":650},{"name":"gen_ternary_cordic_module","line":655},{"name":"gen_cordic_module","line":660},{"name":"gen_adder_tree_module","line":665},{"name":"gen_systolic_module","line":670},{"name":"gen_ternary_gemm_module","line":675},{"name":"gen_systolic_streaming_module","line":680},{"name":"bitwidth_from_prompt","line":685},{"name":"gen_adder_sized","line":693},{"name":"generate_verilog","line":702},{"name":"HardwareQualityIndex","line":728},{"name":"compute_hqi","line":739},{"name":"reward_from_hqi","line":750},{"name":"tool_assisted_preprocess","line":763},{"name":"truth_table_to_sop","line":775},{"name":"karnaugh_map_minimize","line":781},{"name":"generate_testbench_for_template","line":1184},{"name":"run_verilog_simulation_with_testbench","line":1199},{"name":"parse_yosys_json","line":1212},{"name":"run_icarus_sim","line":1227},{"name":"run_yosys_synth_real","line":1236},{"name":"run_verilator_lint","line":1248},{"name":"parse_verilator_lint","line":1257},{"name":"compare_synth_reports","line":1264},{"name":"synthesis_score","line":1271},{"name":"spawn_verilator_process","line":1285},{"name":"spawn_icarus_process","line":1295},{"name":"run_verilator_cli","line":1305},{"name":"run_icarus_cli","line":1318},{"name":"verify_rtl_with_full_toolchain","line":1331},{"name":"run_command","line":1354},{"name":"parse_stdout_for_metric","line":1362},{"name":"parse_stdout_inner","line":1367},{"name":"extract_token_after","line":1375},{"name":"extract_token_until_space","line":1383},{"name":"run_yosys_from_stdout","line":1393},{"name":"run_yosys_real","line":1404},{"name":"run_verilator_real","line":1415},{"name":"run_icarus_real","line":1425},{"name":"FpgaBoard","line":1438},{"name":"has_fpga_board","line":1448},{"name":"synthesize_to_bitstream","line":1459},{"name":"upload_to_fpga","line":1468},{"name":"run_fpga_testbench","line":1476},{"name":"fpga_validation_report","line":1484},{"name":"kmap_simplify","line":1498},{"name":"truth_table_generate","line":1508},{"name":"boolean_minimize","line":1516},{"name":"AgentState","line":1825},{"name":"TrajectoryStep","line":1832},{"name":"AgentProfile","line":1840},{"name":"compute_grpo_loss","line":1850},{"name":"sum_f32","line":1858},{"name":"variance_f32","line":1863},{"name":"compute_xgrpo_variance","line":1872},{"name":"mean_of_groups","line":1880},{"name":"group_variance","line":1886},{"name":"self_train_step","line":1895},{"name":"backtrack_on_error","line":1903},{"name":"backtrack_inner","line":1907},{"name":"compute_sacred_rl_reward","line":1915},{"name":"grpo_loss_with_sacred_bonus","line":1925},{"name":"combine_rewards_sacred","line":1934},{"name":"generate_python_reference","line":1947},{"name":"extract_module_name","line":1953},{"name":"extract_name_chars","line":1962},{"name":"cross_verify_verilog_python","line":1972},{"name":"reference_model_agent","line":1979},{"name":"PythonBridge","line":1987},{"name":"generate_python_reference_with_bridge","line":1996},{"name":"cross_verify_with_cocotb","line":2008},{"name":"score_rtl_with_yosys_real","line":2021},{"name":"count_substring","line":2028},{"name":"diversity_reward","line":2039},{"name":"string_hamming_distance","line":2047},{"name":"property_equivalence_reward","line":2060},{"name":"SvaProperty","line":2075},{"name":"SvaCheckResult","line":2083},{"name":"generate_sva_from_contract","line":2093},{"name":"parse_sva_vacuity","line":2114},{"name":"symbiyosys_equivalence_check","line":2126},{"name":"formal_coverage_score","line":2142},{"name":"count_satisfied_properties","line":2149},{"name":"property_satisfied_by_rtl","line":2155},{"name":"hw_cbmc_equivalence_check","line":2165},{"name":"sva_syntax_check","line":2180},{"name":"check_balanced_parens","line":2188},{"name":"yosys_area_delay_product","line":2202},{"name":"ElitePool","line":2210},{"name":"elite_pool_update","line":2218},{"name":"find_min_score_index","line":2233},{"name":"remove_idx","line":2241},{"name":"remove_idx_inner","line":2245},{"name":"remove_idx_f32","line":2251},{"name":"remove_idx_f32_inner","line":2255},{"name":"elite_pool_select","line":2263},{"name":"find_max_score_index","line":2269},{"name":"arithmetic_architecture_sweep","line":2280},{"name":"ppa_score_from_report","line":2296}],"imports":[{"name":"base::types","line":11},{"name":"math::constants","line":12}],"terms":["igla","coder","eval","humaneval","tasks","mbpp","multiple","languages","pass","compliant","benchmark","report","yosys","count","passed","inner","star","sacred","compliance","compile","balanced","braces","substring","match","estimate","param","sum","latency","generate","detect","template","rtl","simulate","score","write","verilog","parse","log","process","handle","spawn","wait","subprocess","cli","real","compare","ppa","reports","synthesis","feedback","loop","rank","variants","extract","metric","prefix","colon","uint","cells","lut4","dff","freq","float","icarus","simulation","assign","statements","constraint","penalty","verify","testbench","classify","token","adaptive","temperature","valid","contains","constrained","gen","adder","8bit","16bit","booth","ternary","cordic","tree","systolic","gemm","streaming","bitwidth","prompt","sized","hardware","quality","index","compute","hqi","reward","tool","assisted","preprocess","truth","table","sop","karnaugh","map","minimize","json","sim","synth","verilator","lint","full","toolchain","stdout","until","space","fpga","board","synthesize","bitstream","upload","validation","kmap","simplify","boolean","state","trajectory","step","profile","grpo","loss","f32","variance","xgrpo","mean","groups","group","self","train","backtrack","bonus","combine","rewards","python","reference","chars","cross","model","bridge","cocotb","diversity","hamming","distance","property","equivalence","sva","contract","vacuity","symbiyosys","formal","satisfied","properties","cbmc","syntax","parens","area","delay","product","elite","pool","find","min","remove","idx","select","max","arithmetic","architecture","sweep"]},{"id":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/trust_manager.t27","health":"ok","module":"trust_manager"}],"description":"Trust Manager - trust-based routing and decision making Enables nodes to make decisions based on trust scores and reputation","symbols":[{"name":"MAX_NODES","line":7},{"name":"TRUST_THRESHOLD","line":8},{"name":"TRUST_HIGH","line":9},{"name":"TRUST_LOW","line":10},{"name":"MAX_TRUST_SCORE","line":11},{"name":"create_trust_score","line":14},{"name":"get_trust_node_id","line":21},{"name":"get_trust_score_value","line":25},{"name":"get_positive_interactions","line":29},{"name":"get_negative_interactions","line":33},{"name":"create_trust_relationship","line":38},{"name":"get_trust_source","line":45},{"name":"get_trust_destination","line":49},{"name":"get_trust_level","line":53},{"name":"get_trust_verified","line":57},{"name":"create_trust_array","line":62},{"name":"get_trust_score","line":73},{"name":"calculate_trust_score","line":85},{"name":"update_trust_score","line":97},{"name":"is_node_trusted","line":110},{"name":"is_node_highly_trusted","line":115},{"name":"is_node_low_trusted","line":120},{"name":"find_most_trusted","line":125},{"name":"should_route_via_node","line":173},{"name":"penalize_node","line":181},{"name":"reward_node","line":192}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","trust","manager","max","nodes","threshold","high","low","score","create","get","node","positive","interactions","negative","relationship","destination","level","verified","array","calculate","trusted","highly","find","most","route","via","penalize","reward"]},{"id":"c7ef9d8bbd94234b21eee3db2b9362560dca822c835de65d94f8e0d618dda68e","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/examples.zig.t27","health":"ok","module":"trinity_capability_examples_zig"}],"description":"specs/trinity/capabilities/examples.zig.t27 -- capability trinity/examples.zig: Examples and the end-to-end test: example-memory, example-sequence, example-vm, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","examples","zig","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"c800d8ce1a5f38e34d3755a0edbe898492fb8d83e571a18581b595c49fb8b5d8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/btree.t27","health":"ok","module":"TriBtree"}],"description":"t27/specs/","symbols":[{"name":"BTree","line":13},{"name":"BTreeNode","line":18},{"name":"init","line":30},{"name":"insert","line":35},{"name":"search","line":40}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","btree","node","init","insert","search"]},{"id":"c80b8ab5b11f24ad28662bb270943bd751672ed1e88781490009febf34661613","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_06.t27","health":"warn","module":"damage_class_06"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"c8115f6da7558dca37c56c947e233412f3a5aa54ef92ad407d953e0fe975b470","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/interval.t27","health":"ok","module":"TriInterval"}],"description":"t27/specs/","symbols":[{"name":"Interval","line":13},{"name":"IntervalSet","line":19},{"name":"create","line":28},{"name":"overlaps","line":33},{"name":"union","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","interval","set","create","overlaps","union"]},{"id":"c84ebb22ae462190ddcd757725c3f409ebda3fab38bcbedad2845649cdc0345c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/text.t27","health":"ok","module":"TriText"}],"description":"t27/specs/","symbols":[{"name":"TextMetrics","line":13},{"name":"word_wrap","line":24},{"name":"count_words","line":29},{"name":"count_lines","line":34},{"name":"indent","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","text","metrics","word","wrap","count","words","indent"]},{"id":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","sources":[{"repo":"ghashtag/t27","path":"specs/i18n/agents-ru.t27","health":"ok","module":"i18n_agents_ru"}],"description":"specs/i18n/agents-ru.t27 -- translation contract, Russian, for the agent specs Specs are English-only (LANG-EN). This module does not carry a single translated word: it declares WHICH fields of WHICH specs a bundle may translate, WHERE that bundle lives and HOW it is keyed, and what the site must do when a translation is missing. The Cyrillic payload is in the bundle file named below, never here. One module per locale: copy this file to agents-.t27 and change LOCALE","symbols":[{"name":"KIND","line":14},{"name":"LOCALE","line":15},{"name":"SOURCE_LOCALE","line":16},{"name":"SCOPE","line":19},{"name":"FIELDS","line":21},{"name":"BUNDLE_REPO","line":22},{"name":"BUNDLE_PATH","line":23},{"name":"BUNDLE_FORMAT","line":24},{"name":"KEY","line":26},{"name":"FALLBACK","line":28},{"name":"COVERAGE_REQUIRED","line":30},{"name":"ORPHANS_ALLOWED","line":32},{"name":"ENABLED","line":33}],"imports":[],"terms":["i18n","agents","kind","locale","scope","fields","bundle","path","format","key","fallback","required","orphans","allowed","enabled"]},{"id":"c8aeb8ca8c5ab34e88f39bd5a2268344bd3ca24cb1d9822de72e3792b30d7c4e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dense5_decoder.t27","health":"warn","module":"TrinityDense5DecoderT27"}],"description":"","symbols":[{"name":"dense_digit","line":5},{"name":"on_comb","line":12}],"imports":[],"terms":["dmitrii","memory","rtl","dense5","decoder","dense5decoder","dense","digit","comb"]},{"id":"c8cd980319751e2b53501dc645f1beb6980bdbf77adbb98a158a12be441d957e","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-brain-ci.t27","health":"ok","module":"cron_trinity_brain_ci"}],"description":"specs/crons/trinity-brain-ci.t27 -- cron github-actions/trinity/brain-ci Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/brain-ci). The schedule was read from trinity:.github/workflows/brain-ci.yml#L11. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","brain","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"c8fee4965aa004df807bb758bc2ebd70f4653e9dc08133b40951b990d2e9a0e0","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_kf.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring"]},{"id":"c927b0667f745cc79958e4879fc6771b0f7ec6e435621dd50acf13916b52e52a","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf96.t27","health":"ok","module":"triformat-gf96"}],"description":"gf96.t27 -- GoldenFloat96 Encode/Decode GF96: 96-bit floating point with 1 sign + 36 exponent + 59 mantissa Bit layout: [S(1) E(36) M(59)] = [95:95][94:59][58:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS_EXPR","line":26},{"name":"EXP_MAX_EXPR","line":27},{"name":"EM_RATIO","line":30},{"name":"PHI_DIST","line":31},{"name":"PHI_BIAS_STATUS","line":33}],"imports":[],"terms":["numeric","gf96","triformat","total","bits","sign","exp","mant","shift","bias","expr","max","ratio","phi","dist","status"]},{"id":"c9417445533676df65424ac0b373d1c1c21d3f92542dfbd77e61a06a0a2f60d1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/csv.t27","health":"ok","module":"TriCsv"}],"description":"t27/specs/","symbols":[{"name":"CsvRow","line":13},{"name":"CsvDocument","line":16},{"name":"parse","line":27},{"name":"get","line":32},{"name":"set","line":37},{"name":"serialize","line":42}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","csv","row","document","parse","get","set","serialize"]},{"id":"c9c294acdc2a491ad74598e51c3b2137b1b51b970d326765ce489445e76df2a8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hmac.t27","health":"ok","module":"TriHmac"}],"description":"t27/specs/","symbols":[{"name":"HMAC","line":13},{"name":"init","line":23},{"name":"update","line":28},{"name":"final","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","hmac","init","final"]},{"id":"c9eba84a22f53fe0464afac2d8594e6b966eda17b0701cc2c5354ec27c1fb325","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf16.t27","health":"ok","module":"triformat_bnf16"}],"description":"bnf16.t27 -- BNF16: Binary Network Float, 16-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf16","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"c9f60c228cb3f4b1b2a6fc6e000f87b1e293557106cdf0f003b5d163c5efa5b2","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/stdlib_tb.t27","health":"ok","module":"Stdlib_Testbench"}],"description":"t27/specs/fpga/testbench/stdlib_tb.t27 FPGA Stdlib Testbench Tests IP core catalog, parameter validation, and helper functions","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"MAX_IP_CORES","line":11},{"name":"MAX_PARAMS","line":12},{"name":"tick","line":21},{"name":"reset","line":26},{"name":"clog2","line":34},{"name":"max_val","line":45},{"name":"min_val","line":50},{"name":"clamp","line":55}],"imports":[{"name":"fpga::stdlib::Stdlib","line":8}],"terms":["fpga","testbench","stdlib","clk","period","max","cores","params","tick","reset","clog2","val","min","clamp"]},{"id":"ca7f9a9edce47fe23ef59515d87ba7f391b878a9c5115b43e9c32b4a70fe90db","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-taskCache-L27.t27","health":"ok","module":"cron_999_multibots_telegraf_taskCache_L27"}],"description":"specs/crons/999-multibots-telegraf-taskCache-L27.t27 -- cron timer/999-multibots-telegraf/taskCache-L27 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/taskCache-L27). The schedule was read from 999-multibots-telegraf:src/modules/videoGenerator/taskCache.ts#L27. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","cache","l27","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"ca80b7e37c5cbf63fb0726ef19a8b4455afb4928f06e6aac7abd01cc33c5ddfa","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf256.t27","health":"ok","module":"triformat-gf256"}],"description":"gf256.t27 — GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 32 exponent + 223 mantissa Bit layout: [S(1) E(32) M(223)] = [255:255][254:223][222:0] Maximum precision format for scientific computing and simulation","symbols":[{"name":"SIGN_SHIFT","line":14},{"name":"EXP_SHIFT","line":15},{"name":"MANT_SHIFT","line":16},{"name":"SIGN_BITS","line":18},{"name":"EXP_BITS","line":19},{"name":"MANT_BITS","line":20},{"name":"EXP_MAX","line":22},{"name":"EXP_MIN","line":23},{"name":"BIAS","line":25},{"name":"SPECIAL_EXP","line":26},{"name":"PHI_BIAS","line":28},{"name":"GF256","line":35},{"name":"gf256_zero","line":45},{"name":"gf256_negative_zero","line":51},{"name":"gf256_inf_positive","line":59},{"name":"gf256_inf_negative","line":74},{"name":"gf256_nan","line":82},{"name":"gf256_extract_sign","line":95},{"name":"bit","line":96},{"name":"gf256_extract_exponent","line":103},{"name":"gf256_extract_mantissa","line":125},{"name":"gf256_from_components","line":139},{"name":"sign_bit","line":142},{"name":"gf256_is_zero","line":159},{"name":"gf256_is_special","line":166},{"name":"gf256_is_inf","line":172},{"name":"mant","line":176},{"name":"gf256_is_nan","line":183},{"name":"mant","line":187},{"name":"gf256_encode_f64","line":199},{"name":"sign","line":216},{"name":"abs_value","line":217},{"name":"f64_bits","line":220},{"name":"gf256_decode_f64","line":245},{"name":"sign","line":262},{"name":"exp","line":263},{"name":"mant","line":264},{"name":"mant_f64","line":267},{"name":"bias_adjusted","line":268},{"name":"value","line":274},{"name":"gf256_add","line":283},{"name":"gf256_sub","line":288},{"name":"gf256_mul","line":293},{"name":"gf256_div","line":298},{"name":"fb","line":299},{"name":"fa","line":301},{"name":"gf256_abs","line":312},{"name":"gf256_neg","line":319},{"name":"gf256_is_equal","line":326},{"name":"gf256_is_greater","line":338},{"name":"sign_a","line":342},{"name":"sign_b","line":343},{"name":"neg_a","line":349},{"name":"neg_b","line":350},{"name":"gf256_max","line":364},{"name":"gf256_min","line":369},{"name":"gf256_clamp","line":374}],"imports":[],"terms":["euler","numeric","gf256","triformat","sign","shift","exp","mant","bits","max","min","bias","special","phi","zero","negative","inf","positive","nan","extract","bit","exponent","mantissa","components","encode","f64","abs","decode","adjusted","sub","mul","div","neg","equal","greater","clamp"]},{"id":"caac41c686cce6b5e3fc60c3bec59b9fe1ccc0a0ecc52c9714690252f341f8de","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/string.t27","health":"ok","module":"TriString"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils"]},{"id":"caad8e2f8c34c6e2997f965a89fd47734a06d34db58476b2e29a4471d708995a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_neuron.t27","health":"warn","module":"BitnetNeuron"}],"description":"","symbols":[{"name":"tmul","line":3},{"name":"dot27","line":11},{"name":"quantize","line":23},{"name":"neuron4","line":30},{"name":"on_comb","line":55}],"imports":[],"terms":["ternary","bitnet","neuron","tmul","dot27","quantize","neuron4","comb"]},{"id":"cad3992fa6893a5467a5e01b6a63be0fa42916e661d32aa8a25412c627835b7c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/integration_tb.t27","health":"ok","module":"Integration_Testbench"}],"description":"t27/specs/fpga/testbench/integration_tb.t27 Full FPGA Integration Testbench Tests top-level connectivity: MAC + UART + SPI + Memory + Bridge","symbols":[{"name":"CLK_PERIOD","line":8},{"name":"SIM_TIMEOUT","line":9},{"name":"NUM_MODULES","line":10},{"name":"tick","line":25},{"name":"reset","line":30},{"name":"check_all_idle","line":38}],"imports":[],"terms":["fpga","testbench","integration","clk","period","sim","timeout","num","modules","tick","reset","idle"]},{"id":"cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/lite_crypto.t27","health":"ok","module":"LiteCrypto"}],"description":"Lightweight cryptography - simplified ChaCha20 and MD5 for T27 Provides basic security without bignum requirements","symbols":[{"name":"PSK_SIZE","line":8},{"name":"MD5_BLOCK_SIZE","line":9},{"name":"CHACHA20_STATE_SIZE","line":10},{"name":"md5_process_block","line":16},{"name":"md5_digest","line":25},{"name":"quarter_round","line":32},{"name":"generate_psk","line":61},{"name":"hmac_md5","line":68},{"name":"verify_hmac","line":74}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","lite","crypto","psk","size","md5","block","chacha20","state","process","digest","quarter","round","generate","hmac","verify"]},{"id":"cb96cdbd3ab876ea67ef98809723365d52c34bec5e892b804928d5ec6f2da545","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/rsa.t27","health":"ok","module":"TriRsa"}],"description":"t27/specs/","symbols":[{"name":"RSAKeyPair","line":13},{"name":"generate","line":25},{"name":"encrypt","line":30},{"name":"decrypt","line":35}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","rsa","rsakey","pair","generate","encrypt","decrypt"]},{"id":"cbbd63036b371154deb8f49d58ca101528aa025a599c98e41fce34b9a8716a1b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_account.t27","health":"ok","module":"TriComputeAccount"}],"description":"TRI-NET compute account: the conserved ledger the value layer was missing. tri_compute_settle mints rewards, tri_compute_bond locks collateral, and tri_compute_challenge slashes -- but nothing proved these move value without creating or destroying it. This spec models one node's account as (balance, locked) and pins the CONSERVATION invariants every operation must obey: lock/release keep total unchanged (value only moves between the two","symbols":[{"name":"total","line":15},{"name":"bal_after_lock","line":20},{"name":"locked_after_lock","line":27},{"name":"bal_after_release","line":36},{"name":"bal_after_slash","line":42},{"name":"bal_add_sat","line":50},{"name":"bal_after_settle","line":60},{"name":"total3","line":79},{"name":"pending_after_settle","line":91},{"name":"bal_after_finalize","line":103},{"name":"bal_after_clawback","line":110},{"name":"outstanding_after_escrow","line":126},{"name":"outstanding_after_release","line":137},{"name":"pending_after_release","line":156},{"name":"escrow_consistent","line":172},{"name":"is_final","line":188},{"name":"bal_after_finalize_gated","line":199},{"name":"bal_after_finalize_checked","line":222}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","account","total","bal","lock","locked","release","slash","sat","settle","total3","finalize","clawback","outstanding","escrow","consistent","final","gated","checked"]},{"id":"cbfd2873f554c095d05df0bb83f393180d0db2d42c0065413a85d02d8880fed9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_04_constrained_param.t27","health":"ok","module":"NegConstrainedParam"}],"description":"ADR-008 negative: a constrained parameter is a language feature, not a parser detail. Accepting the syntax now would commit the language to it.","symbols":[{"name":"Sorted","line":4}],"imports":[],"terms":["bootstrap","fixtures","generic","neg","constrained","param","sorted"]},{"id":"cc345d688cf070481d769909bfc967b9b1216cd5e84ebc133c4aa3e9c2619dbc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/random.t27","health":"ok","module":"TriRandom"}],"description":"t27/specs/","symbols":[{"name":"Rng","line":13},{"name":"XORSHIFT_MULTIPLIER","line":17},{"name":"DEFAULT_SEED","line":18},{"name":"init","line":25},{"name":"next","line":34},{"name":"range","line":44},{"name":"range_inclusive","line":53}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","random","rng","xorshift","multiplier","default","seed","init","range","inclusive"]},{"id":"cc3f084808aee4f852beafa9ea3e401fb89d34fa2b134aa79ca6b75f82be5cbb","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_neuron_full.t27","health":"warn","module":"GftNeuronFull"}],"description":"","symbols":[{"name":"magadd","line":12},{"name":"magsub","line":32},{"name":"sadd","line":57},{"name":"contrib","line":72},{"name":"activate","line":79},{"name":"on_comb","line":86}],"imports":[],"terms":["ternary","gft","neuron","full","magadd","magsub","sadd","contrib","activate","comb"]},{"id":"cc5426dfba21dcb6c38e978fd04c01a0ca38b62b942032668531508d454f5aeb","sources":[{"repo":"ghashtag/t27","path":"specs/agents/w.t27","health":"ok","module":"agent_w"}],"description":"specs/agents/w.t27 -- agent t27/W, letter W of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/W). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent W - Double-Vav (Workflow)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/ring_buffer.t27","health":"ok","module":"TriRing"}],"description":"t27/specs/","symbols":[{"name":"Ring","line":13},{"name":"new","line":25},{"name":"push","line":37},{"name":"pop","line":47},{"name":"is_empty","line":57},{"name":"is_full","line":62}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","ring","buffer","push","pop","empty","full"]},{"id":"cc71041e45db26a32c01005cba8f5ba4f96e12701c851c63a7db3b15e17fe4bb","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf1024.t27","health":"ok","module":"triformat-gf1024"}],"description":"gf1024.t27 -- GoldenFloat1024 Encode/Decode GF1024: 1024-bit floating point with 1 sign + 391 exponent + 632 mantissa Bit layout: [S(1) E(391) M(632)] = [1023:1023][1022:632][631:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (extrapolated; no RTL, no validated arithmetic).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"SIGN_SHIFT","line":25},{"name":"EXP_SHIFT","line":26},{"name":"MANT_SHIFT","line":27},{"name":"BIAS_EXPR","line":31},{"name":"EXP_MAX_EXPR","line":32},{"name":"EM_RATIO","line":35},{"name":"PHI_DIST","line":36},{"name":"PHI_BIAS_STATUS","line":38}],"imports":[],"terms":["numeric","gf1024","triformat","total","bits","sign","exp","mant","shift","bias","expr","max","ratio","phi","dist","status"]},{"id":"cc7a1b61f3b8550010956f71b0881712679bed4f2fccf05ce2a534ca95bca2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/codecs.t27","health":"warn","module":"TrinityMemoryCodecs"}],"description":"Native ternary codec algorithms. Source of truth; generated C is disposable. IDs and canonical byte layout match TMEM v1. Input/output buffers must not overlap.","symbols":[{"name":"TM_ERR_CODEC","line":4},{"name":"TM_ERR_CAPACITY","line":5},{"name":"TM_ERR_TRIT","line":6},{"name":"TM_ERR_SPARSITY","line":7},{"name":"TM_ERR_LENGTH","line":8},{"name":"TM_ERR_CODE","line":9},{"name":"TM_ERR_PADDING","line":10},{"name":"TM_ERR_HEADER","line":11},{"name":"TM_ERR_CHECKSUM","line":12},{"name":"TM_ERR_LIMIT","line":13},{"name":"tm_group_size","line":15},{"name":"tm_group_bits","line":24},{"name":"tm_payload_size","line":32},{"name":"tm_pow3","line":43},{"name":"tm_sparse_word","line":50},{"name":"tm_word_trit","line":76},{"name":"tm_word_valid","line":116},{"name":"tm_encode","line":130},{"name":"tm_decode","line":189}],"imports":[],"terms":["dmitrii","memory","codecs","err","codec","capacity","trit","sparsity","length","padding","header","checksum","limit","group","size","bits","payload","pow3","sparse","word","valid","encode","decode"]},{"id":"cc960e5ccb68352c21b7479e7f775cc698d4a8fec103c05683cc962e5107b86a","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/jones_polynomial.t27","health":"warn","module":"JonesPolynomial"}],"description":"t27/specs/vsa/jones_polynomial.t27 Jones Polynomial — Link invariant computed from input structure V(L, t) = (-t^(-3/4))^w(L) · ⟨L⟩ where ⟨L⟩ is Kauffman bracket","symbols":[{"name":"CROSSING_POSITIVE","line":14},{"name":"CROSSING_NEGATIVE","line":15},{"name":"writhe","line":23},{"name":"bracket_parameter","line":42},{"name":"BRACKET_UNKNOT","line":48},{"name":"bracket_from_crossings","line":52},{"name":"jones_polynomial_from_structure","line":96},{"name":"jones_polynomial","line":105},{"name":"jones_trefoil","line":111},{"name":"jones_trefoil_at_phi","line":119},{"name":"pow","line":128},{"name":"ln","line":175},{"name":"floor","line":191},{"name":"isnan","line":200},{"name":"isinf","line":205}],"imports":[{"name":"math::constants","line":7}],"terms":["vsa","jones","polynomial","crossing","positive","negative","writhe","bracket","parameter","unknot","crossings","structure","trefoil","phi","pow","floor","isnan","isinf"]},{"id":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","sources":[{"repo":"ghashtag/t27","path":"specs/memory/formula_embed.t27","health":"ok","module":"FormulaEmbed"}],"description":"Module: Formula Embedding for Cortical Semantic Map Cortical topographic map analog: - Formula features mapped to 27-dimensional embedding space - L2 normalization ensures unit vectors - Features: value, complexity, phi-distance, sector-id","symbols":[{"name":"EMBEDDING_DIM","line":27},{"name":"FEATURE_VALUE","line":30},{"name":"FEATURE_COMPLEXITY","line":33},{"name":"FEATURE_PHI_DIST","line":36},{"name":"FEATURE_SECTOR_ID","line":39},{"name":"BASE_FEATURE_COUNT","line":42},{"name":"Sector","line":49},{"name":"Formula","line":60},{"name":"Embedding","line":69},{"name":"Features","line":76},{"name":"extract_features","line":88},{"name":"pad_features","line":98},{"name":"phi_pow","line":110},{"name":"embed_formula","line":118},{"name":"features","line":119},{"name":"normalized","line":121},{"name":"embed_query","line":131},{"name":"idx","line":137},{"name":"byte","line":138},{"name":"phi_distance","line":147},{"name":"log_phi","line":148},{"name":"nearest","line":149},{"name":"phi_power","line":150},{"name":"formula","line":159},{"name":"embedding","line":166},{"name":"formula","line":171},{"name":"embedding","line":178},{"name":"norm","line":179},{"name":"formula","line":185},{"name":"features","line":192},{"name":"dist","line":199}],"imports":[{"name":"base::types::Float","line":16},{"name":"base::math::l2_norm","line":17},{"name":"base::math::normalize_l2","line":18},{"name":"base::math::phi_distance","line":19},{"name":"base::constants::PHI","line":20}],"terms":["memory","formula","embed","embedding","dim","feature","complexity","phi","dist","sector","base","count","features","extract","pad","pow","normalized","query","idx","byte","distance","log","nearest","power","norm"]},{"id":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/ride_game.t27","health":"ok","module":"ride-game"}],"description":"specs/turbobaby/ride_game.t27 -- how the biker game reads its handling out of the real fleet Source of truth for the two things issues #20, #13 and #12 ask to be stated once: the handling map (top speed from displacement_cc, steering from class) and the rule that the game may mount only a family the catalog actually has free. Every MEASURED number below is read from data/fleet_seed.json (measured_at 2026-09-12) or derived from it in a visible step -- but not every number below is measured, and this sentence is scoped so that nobody","symbols":[{"name":"KIND","line":86},{"name":"ID","line":87},{"name":"NAME","line":88},{"name":"WORLD","line":89},{"name":"SEED","line":90},{"name":"MEASURED_AT","line":91},{"name":"SPEED_UNIT","line":96},{"name":"STEER_UNIT","line":97},{"name":"DISPLACEMENTS_CC","line":108},{"name":"DISPLACEMENT_MIN_CC","line":111},{"name":"DISPLACEMENT_MAX_CC","line":112},{"name":"SPEED_INTERCEPT_GU","line":118},{"name":"SPEED_PER_CC_GU","line":122},{"name":"top_speed","line":130},{"name":"CLASS_COUNT","line":138},{"name":"CLASS_NAMES","line":139},{"name":"CLASS_SCOOTER","line":140},{"name":"CLASS_MOTORCYCLE","line":141},{"name":"CLASS_NONE","line":147},{"name":"STEER_RATE_SCOOTER_SU","line":154},{"name":"STEER_RATE_MOTORCYCLE_SU","line":155},{"name":"STEER_RATE_NO_SUCH_CLASS","line":161},{"name":"steer_rate","line":163},{"name":"Handling","line":177},{"name":"handling","line":182},{"name":"RIDEABLE_SOURCE","line":189},{"name":"RIDEABLE_RULE","line":190},{"name":"MIN_UNITS_AVAILABLE_TO_RIDE","line":191},{"name":"CATALOG_KEYS","line":195},{"name":"RIDEABLE_KEYS","line":204},{"name":"RIDEABLE_FAMILIES_AT_MEASURED_AT","line":208},{"name":"RIDEABLE_UNITS_AT_MEASURED_AT","line":209},{"name":"EXCLUDED_NOT_OFFERED","line":216},{"name":"EXCLUDED_NONE_FREE","line":219},{"name":"PRICE_LIST_ONLY_KEYS","line":226},{"name":"PRICE_LIST_ONLY_UNITS_TOTAL","line":229},{"name":"HAS_FALLBACK_FAMILY","line":232},{"name":"FALLBACK_FAMILY","line":233},{"name":"ON_NONE_RIDEABLE","line":234},{"name":"LABEL_TEXT_SOURCE","line":235},{"name":"REPLACES_GARDEN_PATH","line":242},{"name":"LEGACY_GARDEN_WROTE_FROM_ORDER","line":243},{"name":"LEGACY_GARDEN_FORCED_NONEMPTY_STATE","line":244},{"name":"RIDE_WRITES_TO_ORDER_PATH","line":245},{"name":"RIDE_EMITS_CLIENT_PRICE","line":246},{"name":"RIDE_BOOKABILITY_OWNER_ID","line":255},{"name":"RIDE_BOOKABILITY_INPUT","line":256},{"name":"selected_row_respects_live_gate","line":258},{"name":"ROSTER_OUTCOME_READY","line":268},{"name":"ROSTER_OUTCOME_EMPTY","line":269},{"name":"ROSTER_OUTCOME_UNAVAILABLE","line":270},{"name":"ROSTER_OUTCOME_COUNT","line":271},{"name":"EMPTY_STATE_MESSAGE_KEY","line":272},{"name":"UNAVAILABLE_STATE_MESSAGE_KEY","line":273},{"name":"roster_outcome","line":275},{"name":"mounted_rider_count","line":288},{"name":"ride_can_start","line":295},{"name":"h","line":389}],"imports":[],"terms":["turbobaby","user","bot","ride","game","kind","world","seed","measured","speed","unit","steer","displacements","displacement","min","max","intercept","per","top","class","count","scooter","motorcycle","rate","such","handling","rideable","rule","units","available","catalog","keys","families","excluded","offered","free","price","list","total","fallback","family","label","text","replaces","garden","path","legacy","wrote","order","forced","nonempty","state","writes","emits","client","bookability","owner","selected","row","respects","live","gate","roster","outcome","ready","empty","unavailable","key","mounted","rider","start"]},{"id":"cd2e83756f6d11ed08e29c26a1c145b8384e56b7b3dd9c2e39e815b739c7190a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/fpga.t27","health":"ok","module":"tool_trinity_tri_fpga"}],"description":"specs/tools/trinity/tri/fpga.t27 -- tool gHashTag/trinity:tri/fpga, the `tri fpga` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/fpga`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["fpga","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"cdd0a129629d3b6a0c492870d957d71610146f461af40f73df7c1a128fd285cc","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/graph_drift_detection.t27","health":"ok","module":"GraphDriftDetection"}],"description":"t27/specs/test_framework/graph_drift_detection.t27 Ring 054 — Graph Drift Detection for Structural Change Detection Monitors structural changes in mathematical and physics specifications over time","symbols":[{"name":"GraphNode","line":15},{"name":"GraphEdge","line":28},{"name":"DriftGraph","line":37},{"name":"DriftConfig","line":46},{"name":"NodeType","line":58},{"name":"EdgeRelation","line":68},{"name":"default_drift_config","line":77},{"name":"parse_t27_spec_to_graph","line":95},{"name":"content","line":96},{"name":"node","line":105},{"name":"node","line":108},{"name":"node","line":111},{"name":"node","line":114},{"name":"node","line":117},{"name":"parse_constant","line":135},{"name":"parts","line":136},{"name":"name","line":137},{"name":"value_expr","line":138},{"name":"claim_id","line":139},{"name":"tolerance_tier","line":140},{"name":"parse_function","line":156},{"name":"name","line":157},{"name":"signature","line":158},{"name":"claim_id","line":159},{"name":"tolerance_tier","line":160},{"name":"parse_test","line":176},{"name":"name","line":177},{"name":"claim_id","line":178},{"name":"tolerance_tier","line":179},{"name":"DriftResult","line":199},{"name":"DriftChange","line":209},{"name":"ChangeType","line":219},{"name":"detect_graph_drift","line":232},{"name":"total_drift","line":250},{"name":"has_drift","line":251},{"name":"calculate_semantic_drift","line":264},{"name":"value_diff","line":272},{"name":"relative_diff","line":273},{"name":"calculate_structural_drift","line":302},{"name":"calculate_performance_drift","line":357},{"name":"DriftMonitor","line":368},{"name":"create_drift_monitor","line":376},{"name":"monitor_drift","line":386},{"name":"result","line":387},{"name":"trigger_drift_alert","line":399},{"name":"alert_message","line":400},{"name":"run_drift_detection_tests","line":419},{"name":"config","line":420},{"name":"baseline_path","line":424},{"name":"baseline_graph","line":425},{"name":"current_path","line":428},{"name":"current_graph","line":430},{"name":"drift_result","line":431},{"name":"extract_module_name","line":534},{"name":"parts","line":535},{"name":"extract_value_expression","line":539},{"name":"start","line":540},{"name":"end","line":541},{"name":"extract_claim_id","line":545},{"name":"start","line":547},{"name":"end","line":548},{"name":"extract_tolerance_tier","line":554},{"name":"start","line":556},{"name":"end","line":557},{"name":"tier_str","line":558},{"name":"evaluate_expression","line":564},{"name":"extract_dependencies_from_expression","line":569},{"name":"extract_dependencies_from_signature","line":574},{"name":"extract_test_dependencies","line":579},{"name":"extract_version","line":584},{"name":"get_current_timestamp","line":589},{"name":"compute_graph_hash","line":594},{"name":"generate_drift_details","line":599},{"name":"all_results_have_claim_ids","line":603},{"name":"create_test_graph","line":608},{"name":"create_test_node","line":619},{"name":"create_modified_test_graph","line":634},{"name":"log_error","line":639},{"name":"parse_tolerance_tier","line":643}],"imports":[{"name":"test_framework::core","line":7},{"name":"std::collections","line":8}],"terms":["framework","graph","drift","detection","node","edge","config","relation","default","parse","content","constant","parts","expr","claim","tolerance","tier","signature","detect","total","calculate","semantic","diff","relative","structural","performance","monitor","create","trigger","alert","baseline","path","extract","expression","start","end","str","evaluate","dependencies","get","timestamp","compute","hash","generate","details","results","ids","modified","log"]},{"id":"ce0352d36e43b44480a79b3333031e61f637feda0bd474b8af6b239364a030cb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/reputation.t27","health":"ok","module":"tool_trinity_tri_reputation"}],"description":"specs/tools/trinity/tri/reputation.t27 -- tool gHashTag/trinity:tri/reputation, the `tri reputation` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/reputation`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["reputation","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","sources":[{"repo":"ghashtag/t27","path":"specs/storage/kv.t27","health":"ok","module":"StorageKv"}],"description":"specs/storage/kv.t27 Key-Value Storage Operations","symbols":[{"name":"read","line":15},{"name":"write","line":22},{"name":"update","line":28},{"name":"remove","line":34},{"name":"list","line":40},{"name":"exists","line":45},{"name":"batch_write","line":54},{"name":"batch_read","line":59}],"imports":[{"name":"base::types","line":6},{"name":"storage::schema","line":7}],"terms":["storage","read","write","remove","list","exists","batch"]},{"id":"ce88e96540e925752640868cee20c7e9ad63d0044bae71b0a3ab175474ca2df8","sources":[{"repo":"ghashtag/t27","path":"specs/sync/index.t27","health":"warn","module":"sync-index"}],"description":"sync/index.t27 — Sync Index Specification Sync operations, checkpointing, delta management","symbols":[{"name":"INDEX_VERSION","line":20},{"name":"MAX_INDEX_ENTRIES","line":23},{"name":"INDEX_BLOCK_SIZE","line":26},{"name":"DELTA_COMPRESSION_THRESHOLD","line":29},{"name":"CHECKPOINT_RETENTION","line":32},{"name":"IndexEntryType","line":35},{"name":"IndexStatus","line":43},{"name":"IndexEntry","line":55},{"name":"IndexMetadata","line":65},{"name":"DeltaOp","line":74},{"name":"IndexBlock","line":83},{"name":"IndexState","line":90},{"name":"ReplayPosition","line":98},{"name":"ReplayResult","line":105},{"name":"DeltaResult","line":113},{"name":"IndexQuery","line":121},{"name":"index_state_new","line":133},{"name":"entry_create","line":149},{"name":"entry_tombstone","line":161},{"name":"entry_metadata_create","line":173},{"name":"delta_add","line":185},{"name":"delta_remove","line":196},{"name":"delta_modify","line":207},{"name":"block_create","line":218},{"name":"replay_position_create","line":227},{"name":"query_create","line":236},{"name":"query_with_version_range","line":246},{"name":"query_with_limit","line":256},{"name":"index_add","line":266},{"name":"index_remove","line":274},{"name":"index_get","line":282},{"name":"index_query","line":288},{"name":"limit","line":290},{"name":"checkpoint_create","line":300},{"name":"checkpoint","line":301},{"name":"delta_generate","line":317},{"name":"test_op","line":321},{"name":"delta_replay","line":333},{"name":"checkpoint_replay","line":352},{"name":"trim_checkpoints","line":375},{"name":"start_idx","line":380},{"name":"append_checkpoints","line":385},{"name":"append_checkpoints_slice","line":395},{"name":"append_deltas","line":405},{"name":"append_delta_slice","line":415},{"name":"concat_bytes","line":422},{"name":"append_byte","line":429},{"name":"checkpoint_count","line":436},{"name":"block_count","line":441},{"name":"entry_count","line":446},{"name":"sync_id_generate","line":451},{"name":"timestamp","line":452},{"name":"bytes","line":455},{"name":"int_to_bytes","line":464},{"name":"get_timestamp_ms","line":479},{"name":"min","line":485},{"name":"checksum_compute","line":490},{"name":"state","line":500},{"name":"entry","line":505},{"name":"entry","line":511},{"name":"op","line":516},{"name":"op","line":521},{"name":"op","line":526},{"name":"entry","line":531},{"name":"block","line":532},{"name":"query","line":537},{"name":"query","line":542},{"name":"pos","line":547},{"name":"state","line":552},{"name":"checkpoint","line":553},{"name":"trimmed","line":567},{"name":"entry","line":714}],"imports":[{"name":"std","line":12}],"terms":["sync","index","max","entries","block","size","delta","compression","threshold","checkpoint","retention","entry","status","metadata","state","replay","position","query","create","tombstone","remove","modify","range","limit","get","generate","trim","checkpoints","start","idx","append","slice","deltas","concat","bytes","byte","count","timestamp","int","min","checksum","compute","pos","trimmed"]},{"id":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/hardware_validation.t27","health":"ok","module":"HardwareValidation"}],"description":"Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures","symbols":[{"name":"VAL_PENDING","line":8},{"name":"VAL_RUNNING","line":9},{"name":"VAL_PASSED","line":10},{"name":"VAL_FAILED","line":11},{"name":"TEST_SIMULATION","line":14},{"name":"TEST_BIT_ACCURATE","line":15},{"name":"TEST_FPGA_BOARD","line":16},{"name":"TEST_REAL_WORLD","line":17},{"name":"create_test_result","line":20},{"name":"extract_state","line":27},{"name":"extract_test_type","line":31},{"name":"extract_errors","line":35},{"name":"extract_iterations","line":39},{"name":"calculate_pass_rate","line":44},{"name":"test_passed","line":52},{"name":"bit_accurate","line":57},{"name":"fpga_board_ready","line":62},{"name":"create_packet_capture","line":68},{"name":"extract_capture_src","line":76},{"name":"extract_capture_dst","line":80},{"name":"extract_capture_payload","line":84},{"name":"extract_capture_timestamp","line":88},{"name":"create_performance_metric","line":93},{"name":"extract_metric_type","line":99},{"name":"extract_metric_value","line":103},{"name":"extract_metric_unit","line":107}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","hardware","validation","val","running","passed","failed","simulation","bit","accurate","fpga","board","real","world","create","extract","state","iterations","calculate","pass","rate","ready","packet","capture","dst","payload","timestamp","performance","metric","unit"]},{"id":"cee035ba2a228181599daefcf0c04af10b7f6b3326c6312cc97aa68c19f470fc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_executor.t27","health":"ok","module":"WorkflowExecutor"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","workflow","executor"]},{"id":"ceeade29b5422ff8ecbad180c425515d7a8962cebb7683aef5b35643c0ddc312","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/research.programs.t27","health":"ok","module":"trinity_capability_research_programs"}],"description":"specs/trinity/capabilities/research.programs.t27 -- capability trinity/research.programs: Research programs installed by default: forge, quantum, beal, arena, sota-report One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","research","programs","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"cefaf01b690a9fbfdeb7fb404da33a48eedd555c2db0663c0ff864c315dc8786","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0014_inline_lambda.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","inline","lambda"]},{"id":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/traffic_animator.t27","health":"warn","module":"traffic_animator"}],"description":"Traffic Animator - real-time packet flow animation and visualization Creates animated visualizations of network traffic patterns","symbols":[{"name":"MAX_PACKETS","line":7},{"name":"MAX_PATHS","line":8},{"name":"ANIMATION_FPS","line":9},{"name":"MAX_FRAMES","line":10},{"name":"create_anim_packet","line":13},{"name":"get_anim_packet_id","line":20},{"name":"get_anim_packet_source","line":24},{"name":"get_anim_packet_dest","line":28},{"name":"get_anim_packet_progress","line":32},{"name":"update_packet_progress","line":37},{"name":"create_animation_path","line":52},{"name":"get_anim_path_id","line":59},{"name":"get_anim_path_node_count","line":63},{"name":"get_anim_path_current_position","line":67},{"name":"get_anim_path_type","line":71},{"name":"PATH_DIRECT","line":76},{"name":"PATH_MULTIHOP","line":77},{"name":"PATH_BROADCAST","line":78},{"name":"PATH_GATHER","line":79},{"name":"create_animation_frame","line":82},{"name":"get_anim_frame_id","line":89},{"name":"get_anim_frame_timestamp","line":93},{"name":"get_anim_frame_packet_count","line":97},{"name":"get_anim_frame_duration","line":101},{"name":"create_traffic_stats","line":106},{"name":"get_traffic_total_packets","line":113},{"name":"get_traffic_bytes","line":117},{"name":"get_traffic_packets_dropped","line":121},{"name":"get_traffic_avg_latency","line":125},{"name":"create_packet_color","line":130},{"name":"get_packet_color_type","line":137},{"name":"get_packet_color_priority","line":141},{"name":"get_packet_color_size","line":145},{"name":"get_packet_color_code","line":149},{"name":"PACKET_DATA","line":154},{"name":"PACKET_CONTROL","line":155},{"name":"PACKET_BEACON","line":156},{"name":"PACKET_ACK","line":157},{"name":"get_packet_visual_color","line":160},{"name":"create_animation_timeline","line":178},{"name":"get_timeline_current_frame","line":185},{"name":"get_timeline_total_frames","line":189},{"name":"get_timeline_loop_count","line":193},{"name":"get_timeline_speed","line":197},{"name":"advance_animation_frame","line":202},{"name":"create_traffic_pattern","line":220},{"name":"get_pattern_id","line":227},{"name":"get_pattern_burst_size","line":231},{"name":"get_pattern_interval","line":235},{"name":"get_pattern_duration","line":239},{"name":"generate_traffic_burst","line":244},{"name":"calculate_packet_position","line":260},{"name":"update_animation_packets","line":282},{"name":"render_animation_frame","line":316},{"name":"calculate_animation_complexity","line":325},{"name":"optimize_animation_performance","line":333},{"name":"generate_traffic_heat_map","line":345},{"name":"generate_traffic_animation","line":397},{"name":"create_animation_controls","line":425},{"name":"process_animation_control","line":433},{"name":"calculate_animation_stats","line":451}],"imports":[{"name":"base::types","line":5}],"terms":["net","traffic","animator","max","packets","paths","animation","fps","frames","create","anim","packet","get","dest","progress","path","node","count","position","direct","multihop","broadcast","gather","frame","timestamp","duration","stats","total","bytes","dropped","avg","latency","color","priority","size","data","control","beacon","ack","visual","timeline","loop","speed","advance","pattern","burst","interval","generate","calculate","render","complexity","optimize","performance","heat","map","controls","process"]},{"id":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/lexer.t27","health":"warn","module":"trilexer"}],"description":"compiler/parser/lexer.t27 — Lexer for TRI-27 Assembly Tokenizes source code into Token stream for parser","symbols":[{"name":"MAX_IDENTIFIER_LEN","line":10},{"name":"MAX_NUMBER_LEN","line":11},{"name":"MAX_TOKENS","line":12},{"name":"TokenType","line":15},{"name":"Token","line":116},{"name":"Lexer","line":125},{"name":"init","line":138},{"name":"tokenize","line":148},{"name":"ident","line":183},{"name":"token_type","line":184},{"name":"single_token","line":197},{"name":"ident","line":225},{"name":"token_type","line":226},{"name":"advance_char","line":274},{"name":"peek_char","line":288},{"name":"skip_whitespace","line":296},{"name":"skip_comment","line":306},{"name":"read_identifier","line":313},{"name":"read_single_char","line":331},{"name":"c","line":332},{"name":"read_number","line":362},{"name":"next","line":371},{"name":"base","line":385},{"name":"digit","line":390},{"name":"is_digit","line":410},{"name":"is_hex_digit","line":416},{"name":"is_register","line":424},{"name":"first","line":428},{"name":"lookup_keyword","line":443}],"imports":[],"terms":["compiler","parser","lexer","trilexer","max","identifier","len","tokens","token","init","tokenize","ident","single","advance","char","peek","skip","whitespace","read","base","digit","hex","register","lookup","keyword"]},{"id":"cf712b02e8c309ee589ce2061041207b64173c510b0d02308e48f07eb5e50d51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/locus_coeruleus_backoff.t27","health":"warn","module":null}],"description":"Locus Coeruleus Backoff Calculator — TTT Dogfood Phase 2 Exponential backoff: delay = min(1000 * 2^fail_count, 60000) Input: t0 = fail_count (attempt number) Output: t0 = delay in milliseconds","symbols":[],"imports":[],"terms":["fpga","tri27","locus","coeruleus","backoff"]},{"id":"cf9e908b16b5a03e57bf788258e8b607f47d0342fa51d2f31ba7fed62efd6efc","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/pkg.vendored-cache.t27","health":"ok","module":"trinity_capability_pkg_vendored_cache"}],"description":"specs/trinity/capabilities/pkg.vendored-cache.t27 -- capability trinity/pkg.vendored-cache: zig-pkg/: a committed package cache (1061 files) that build.zig.zon does not ref One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","pkg","vendored","cache","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/rtl.t27","health":"warn","module":"igla-race-rtl"}],"description":"t27/specs/igla/race/rtl.t27 IGLA RACE RTL generation specification NOTE: Uses recursion instead of loops to avoid t27c parser truncation.","symbols":[{"name":"TARGET_LANG_VERILOG","line":17},{"name":"TARGET_LANG_VHDL","line":18},{"name":"TARGET_LANG_SYSTEMV","line":19},{"name":"R_SI_1_MAX_MUL_OPS","line":21},{"name":"RtlModule","line":27},{"name":"Signal","line":37},{"name":"Assignment","line":43},{"name":"Instance","line":49},{"name":"PortMap","line":55},{"name":"RtlGenConfig","line":60},{"name":"count_mul_ops","line":71},{"name":"count_mul_ops_inner","line":75},{"name":"is_r_si_1_compliant","line":85},{"name":"is_r_si_1_compliant_inner","line":89},{"name":"generate_wallace_tree","line":101},{"name":"bits_to_u64","line":109},{"name":"bits_to_u64_inner","line":113},{"name":"emit_verilog","line":122},{"name":"emit_inputs_inner","line":133},{"name":"emit_outputs_inner","line":141},{"name":"emit_wires_inner","line":149},{"name":"emit_assigns_inner","line":157},{"name":"emit_instances_inner","line":166},{"name":"emit_port_map_inner","line":177},{"name":"emit_vhdl","line":187},{"name":"emit_vhdl_ports_inner","line":198},{"name":"emit_vhdl_signals_inner","line":210},{"name":"emit_vhdl_assigns_inner","line":219},{"name":"generate_sacred_module","line":229}],"imports":[{"name":"base::types","line":9},{"name":"math::constants","line":10},{"name":"igla::race::backend","line":11}],"terms":["igla","race","rtl","target","lang","verilog","vhdl","systemv","max","mul","ops","signal","assignment","instance","port","map","gen","config","count","inner","compliant","generate","wallace","tree","bits","u64","emit","inputs","outputs","wires","assigns","instances","ports","signals","sacred"]},{"id":"d12076291cf317c67b13cd9a7cd04ac990b6995fa9eeec9828773e28cb36c437","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/monopoles.t27","health":"ok","module":"TriMonopoles"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sacred","monopoles"]},{"id":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/flow_control.t27","health":"ok","module":"flow_control"}],"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"WINDOW_SIZE","line":8},{"name":"CREDIT_THRESHOLD","line":9},{"name":"BACKPRESSURE_THRESHOLD","line":10},{"name":"create_flow_state","line":13},{"name":"get_sender_id","line":20},{"name":"get_receiver_id","line":24},{"name":"get_window_size","line":28},{"name":"get_credits","line":32},{"name":"update_credits","line":37},{"name":"has_credits","line":46},{"name":"consume_credit","line":57},{"name":"add_credits","line":68},{"name":"is_under_backpressure","line":81},{"name":"calculate_backpressure_level","line":95},{"name":"create_flow_message","line":111},{"name":"get_message_type","line":118},{"name":"get_flow_id","line":122},{"name":"get_message_credits","line":126},{"name":"get_sequence","line":130},{"name":"MSG_DATA","line":135},{"name":"MSG_ACK","line":136},{"name":"MSG_CREDIT_UPDATE","line":137},{"name":"MSG_BACKPRESSURE","line":138},{"name":"process_message","line":141},{"name":"send_data","line":156},{"name":"send_ack","line":167},{"name":"find_flow_by_sender","line":178},{"name":"find_flow_by_receiver","line":193},{"name":"is_any_flow_blocked","line":208},{"name":"count_active_flows","line":222},{"name":"calculate_total_credits","line":238},{"name":"apply_backpressure","line":251},{"name":"release_backpressure","line":263}],"imports":[{"name":"base::types","line":5}],"terms":["net","flow","control","max","flows","window","size","credit","threshold","backpressure","create","state","get","sender","receiver","credits","consume","under","calculate","level","sequence","msg","data","ack","process","send","find","blocked","count","active","total","apply","release"]},{"id":"d14b698293100dd48dcbc0741dc4ad592c0a499b34d827515586e70551ff6747","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/tanh_activation.t27","health":"ok","module":"Tanh"}],"description":"t27/specs/","symbols":[{"name":"TanhConfig","line":13},{"name":"forward","line":22},{"name":"forward_batch","line":27},{"name":"derivative","line":32},{"name":"derivative_from_output","line":37}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","tanh","config","forward","batch","derivative"]},{"id":"d16bedfa83646e9e9df60e17c51928fabe4240cb5ca15ac682369f4dcc9fd9a6","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_mul_rne.t27","health":"warn","module":"GftMulRne"}],"description":"","symbols":[{"name":"on_comb","line":15}],"imports":[],"terms":["ternary","gft","mul","rne","comb"]},{"id":"d1a693acd15cae25043e02fbfee7b30b09e309447e18c625574272912603eece","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/search.vsa-index.t27","health":"ok","module":"trinity_capability_search_vsa_index"}],"description":"specs/trinity/capabilities/search.vsa-index.t27 -- capability trinity/search.vsa-index: VSA search and query command-line tools over the trinity library One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","search","vsa","index","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"d1a87c87ff24072492c3d539a72af402b46a4acda477954b2485311592d7ddc1","sources":[{"repo":"ghashtag/t27","path":"specs/file/watcher.t27","health":"warn","module":"FileWatcher"}],"description":"specs/file/watcher.t27 File Watcher Operations","symbols":[{"name":"WatcherID","line":14},{"name":"create","line":21},{"name":"watch","line":26},{"name":"unwatch","line":31},{"name":"close","line":36},{"name":"is_active","line":41},{"name":"get_watched_paths","line":46},{"name":"next","line":55},{"name":"poll","line":60},{"name":"wait","line":65},{"name":"WatchFilter","line":74},{"name":"set_filter","line":83},{"name":"get_filter","line":88},{"name":"matches_filter","line":93},{"name":"WatcherBackend","line":102},{"name":"get_backend","line":110},{"name":"backend_available","line":115},{"name":"DebounceMode","line":124},{"name":"set_debounce","line":131},{"name":"get_debounce","line":136},{"name":"watch_batch","line":145},{"name":"unwatch_batch","line":150},{"name":"WatcherStats","line":159},{"name":"get_stats","line":168},{"name":"reset_stats","line":173}],"imports":[{"name":"base::types","line":6},{"name":"file::schema","line":7}],"terms":["watcher","create","watch","unwatch","close","active","get","watched","paths","poll","wait","filter","set","matches","backend","available","debounce","mode","batch","stats","reset"]},{"id":"d1c8b70e3fe2176c599433da14052d4628bed850866bb109b217723af830ca5f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/pellis_verify.t27","health":"ok","module":"PellisVerify"}],"description":"t27/specs/numeric/pellis_verify.t27 Pellis Verification Specification Phase 2 of GF Competitive Analysis (issue #289) GMP-backed high-precision verification of Pellis closed form 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"CODATA_ALPHA_INV","line":11},{"name":"PELLIS_PRELIMINARY","line":12},{"name":"VERIFICATION_TOLERANCE","line":13},{"name":"pellis_closed_form","line":16},{"name":"compare_with_codata","line":21}],"imports":[{"name":"base::types","line":9}],"terms":["numeric","pellis","verify","codata","alpha","inv","preliminary","verification","tolerance","closed","form","compare"]},{"id":"d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/power_monitoring.t27","health":"warn","module":"PowerMonitoring"}],"description":"Power Monitoring - battery status and power consumption tracking Critical for drone mesh networks where power is limited","symbols":[{"name":"MAX_NODES","line":7},{"name":"BATTERY_FULL","line":8},{"name":"BATTERY_CRITICAL","line":9},{"name":"BATTERY_LOW","line":10},{"name":"POWER_NORMAL","line":11},{"name":"POWER_ECO","line":12},{"name":"POWER_EMERGENCY","line":13},{"name":"create_power_state","line":16},{"name":"get_battery_level","line":23},{"name":"get_power_mode","line":27},{"name":"get_consumption","line":31},{"name":"get_uptime","line":35},{"name":"is_battery_critical","line":40},{"name":"is_battery_low","line":45},{"name":"is_battery_healthy","line":51},{"name":"estimate_remaining_time","line":56},{"name":"update_power_mode","line":68},{"name":"reduce_consumption","line":84},{"name":"drain_battery","line":99},{"name":"get_power_priority","line":114},{"name":"should_sleep","line":127}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","power","monitoring","max","nodes","battery","full","critical","low","normal","eco","emergency","create","state","get","level","mode","consumption","uptime","healthy","estimate","remaining","time","reduce","drain","priority","sleep"]},{"id":"d1ec57e9fc1d1f50680012edca90823294ee13b46b68107489a01ad873ea891e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/help.t27","health":"warn","module":"TriHelp"}],"description":"t27/specs/","symbols":[{"name":"HelpOptions","line":13},{"name":"HelpSystem","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","help","options","system"]},{"id":"d1edecf60e69b3fee790d64e74207ceb739ff8d54ec60c205e267397a20ee6c4","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf128.t27","health":"ok","module":"triformat_tnf128"}],"description":"tnf128.t27 -- TNF128: Ternary Network Float, 128-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.","symbols":[{"name":"SIGN_BITS","line":20},{"name":"EXP_TRITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_OFFSET","line":23},{"name":"OFFSET_MAX","line":24},{"name":"exp_offset","line":28},{"name":"is_finite","line":32},{"name":"exp_values","line":36}],"imports":[{"name":"base::types","line":18}],"terms":["numeric","tnf128","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_orchestrator.t27","health":"ok","module":"network_orchestrator"}],"description":"Network Orchestrator - high-level network coordination Enables intelligent network-wide coordination and optimization","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_POLICIES","line":8},{"name":"OPTIMIZATION_INTERVAL","line":9},{"name":"COORDINATION_TIMEOUT","line":10},{"name":"create_network_policy","line":13},{"name":"get_policy_id","line":20},{"name":"get_policy_priority","line":24},{"name":"get_policy_scope","line":28},{"name":"get_policy_parameter","line":32},{"name":"SCOPE_NODE","line":37},{"name":"SCOPE_LINK","line":38},{"name":"SCOPE_NETWORK","line":39},{"name":"SCOPE_GLOBAL","line":40},{"name":"create_coordination_state","line":43},{"name":"get_coordinator_id","line":50},{"name":"get_coordination_state","line":54},{"name":"get_coordination_phase","line":58},{"name":"get_coordination_timeout","line":62},{"name":"STATE_IDLE","line":67},{"name":"STATE_INITIATING","line":68},{"name":"STATE_NEGOTIATING","line":69},{"name":"STATE_EXECUTING","line":70},{"name":"STATE_COMPLETED","line":71},{"name":"initiate_coordination","line":74},{"name":"advance_phase","line":80},{"name":"is_coordination_complete","line":102},{"name":"is_coordination_timeout","line":112},{"name":"apply_policy","line":126},{"name":"find_highest_priority_policy","line":146},{"name":"create_optimization_request","line":169},{"name":"get_optimization_request_id","line":176},{"name":"get_optimization_type","line":180},{"name":"get_optimization_target","line":184},{"name":"get_optimization_priority","line":188},{"name":"OPT_LOAD_BALANCE","line":193},{"name":"OPT_ENERGY_EFFICIENCY","line":194},{"name":"OPT_LATENCY_REDUCTION","line":195},{"name":"OPT_BANDWIDTH_MAXIMIZATION","line":196},{"name":"process_optimization","line":199},{"name":"create_network_action","line":218},{"name":"get_action_id","line":225},{"name":"get_action_type","line":229},{"name":"get_action_target","line":233},{"name":"get_action_parameter","line":237},{"name":"ACTION_ROUTE_UPDATE","line":242},{"name":"ACTION_POWER_ADJUST","line":243},{"name":"ACTION_BANDWIDTH_ALLOCATE","line":244},{"name":"ACTION_QOS_SET","line":245},{"name":"execute_action","line":248},{"name":"coordinate_nodes","line":268},{"name":"calculate_optimization_score","line":293},{"name":"detect_optimization_opportunity","line":310},{"name":"generate_optimization_plan","line":325},{"name":"monitor_network_health","line":330}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","network","orchestrator","max","nodes","policies","optimization","interval","coordination","timeout","create","policy","get","priority","scope","parameter","node","link","global","state","coordinator","phase","idle","initiating","negotiating","executing","completed","initiate","advance","complete","apply","find","highest","request","target","opt","load","balance","energy","efficiency","latency","reduction","bandwidth","maximization","process","action","route","power","adjust","allocate","qos","set","execute","coordinate","calculate","score","detect","opportunity","generate","plan","monitor","health"]},{"id":"d228015ce607198f53341b0b9dfc55a2cd0616e69487598d0cbabc34cc6892cf","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-skill-detector.t27","health":"ok","module":"cron_999_multibots_telegraf_skill_detector"}],"description":"specs/crons/999-multibots-telegraf-skill-detector.t27 -- cron inngest/999-multibots-telegraf/skill-detector Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/skill-detector). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/skillDetector.ts#L32. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","multibots","telegraf","skill","detector","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/constants.t27","health":"ok","module":"Constants"}],"description":"t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing φ² + 1/φ² = 3 | Sacred constants for ternary computing","symbols":[{"name":"PHI","line":16},{"name":"PHI_INV","line":17},{"name":"PHI_SQ","line":18},{"name":"PHI_INV_SQ","line":19},{"name":"TRINITY","line":22},{"name":"PI","line":25},{"name":"E","line":28},{"name":"G_MEASURED","line":36},{"name":"LAMBDA_COSMO","line":40},{"name":"OMEGA_LAMBDA_MEASURED","line":44},{"name":"abs","line":51},{"name":"pow","line":59}],"imports":[],"terms":["fpga","math","constants","phi","inv","measured","lambda","cosmo","omega","abs","pow"]},{"id":"d254d150341c77b095823eba91f69d97a7a47761df5a8ed60f80f56c9bea5323","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/module_state.t27","health":"warn","module":"trinity_matrix_module_state"}],"description":"trinity_matrix/module_state.t27 -- feature module state: a var at module level, read and written by functions.","symbols":[{"name":"bump","line":7},{"name":"reset","line":12}],"imports":[],"terms":["bootstrap","fixtures","matrix","state","bump","reset"]},{"id":"d25b2bace31a0ef0eb0cc61430287b55ef21001ff6b391c784042399f6e5fb61","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/enums.t27","health":"ok","module":"trinity_matrix_enums"}],"description":"trinity_matrix/enums.t27 -- feature enums: named values and a switch over them.","symbols":[{"name":"Evidence","line":5},{"name":"evidence_rank","line":12}],"imports":[],"terms":["bootstrap","fixtures","matrix","enums","evidence","rank"]},{"id":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/etx.t27","health":"ok","module":"MeshEtx"}],"description":"ETX (Expected Transmission Count) link metric Port from trios-mesh/src/routing.rs Fixed-point Q8.8 arithmetic: 256 represents 1.0","symbols":[{"name":"OPTIMISTIC","line":9},{"name":"DEAD_EPS","line":10},{"name":"ONE_FP","line":11},{"name":"ALPHA_HALF","line":12},{"name":"alpha_from_window","line":15},{"name":"bool_to_sample","line":24},{"name":"fp_mul","line":33},{"name":"ewma_update","line":41},{"name":"is_dead","line":49},{"name":"calc_etx","line":54}],"imports":[{"name":"base::types","line":6}],"terms":["macos","rings","rust","mesh","etx","optimistic","dead","eps","one","alpha","half","window","sample","mul","ewma","calc"]},{"id":"d2e4055108ee38da5e3e5cf5c999c6381ebd57c1d6c1ee7ada868b15cccb77d4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/bilstm.t27","health":"ok","module":"Bilstm"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_INPUT_SIZE","line":13},{"name":"DEFAULT_HIDDEN_SIZE","line":14},{"name":"BiLSTMConfig","line":20},{"name":"LSTMParams","line":26},{"name":"LSTMCellState","line":37},{"name":"BiLSTMOutput","line":42},{"name":"forward_direction","line":54},{"name":"forward","line":59}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","bilstm","default","size","hidden","lstmconfig","lstmparams","lstmcell","state","lstmoutput","forward","direction"]},{"id":"d3462e16b085abcac92fe0307513800bd1e11907889cdf65484c5ac103c12c97","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/native.node-gui.t27","health":"ok","module":"trinity_capability_native_node_gui"}],"description":"specs/trinity/capabilities/native.node-gui.t27 -- capability trinity/native.node-gui: trinity-node-gui: the node's raylib front-end (guarded by !ci_mode) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","native","node","gui","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"d349676390480743109fe238f507d2d7df3d2acfc16b7b24c4c18079e9f77f95","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf8.t27","health":"warn","module":"GF8"}],"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 — 8-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 3 (P1)","symbols":[{"name":"BITS","line":24},{"name":"SIGN_BITS","line":25},{"name":"EXP_BITS","line":26},{"name":"MANT_BITS","line":27},{"name":"EXP_BIAS","line":30},{"name":"PHI_DISTANCE","line":34},{"name":"GF8","line":40},{"name":"encode","line":49},{"name":"sign","line":54},{"name":"abs_val","line":55},{"name":"exp_unbiased","line":58},{"name":"exp_biased","line":59},{"name":"exp_clamped","line":62},{"name":"mant","line":65},{"name":"decode","line":79},{"name":"sign","line":80},{"name":"exp_biased","line":81},{"name":"mant","line":82},{"name":"exp_unbiased","line":90},{"name":"mant_normalized","line":97},{"name":"value","line":103},{"name":"max_value","line":115},{"name":"mant_max","line":117},{"name":"exp_max","line":118},{"name":"min_positive","line":122},{"name":"mant_min","line":124},{"name":"exp_min","line":125},{"name":"epsilon","line":129},{"name":"validate_format","line":138},{"name":"fmt","line":139},{"name":"MEMORY_RATIO_VS_FP32","line":157},{"name":"floor_log2","line":163},{"name":"extract_mantissa","line":177},{"name":"normalized","line":178},{"name":"frac","line":179},{"name":"max_mant","line":180},{"name":"clamp","line":184},{"name":"pow","line":190},{"name":"is_integer","line":206},{"name":"ln_val","line":232},{"name":"ln_approx","line":237},{"name":"t","line":246},{"name":"t2","line":247},{"name":"t3","line":248},{"name":"t5","line":249},{"name":"t7","line":250},{"name":"exp_approx","line":256},{"name":"k","line":268},{"name":"k","line":279},{"name":"floor","line":295}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9},{"name":"base::testing","line":12},{"name":"base::benchmarking","line":13}],"terms":["numeric","gf8","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/spi.t27","health":"ok","module":"SPI_Master"}],"description":"t27/specs/fpga/spi.t27 SPI Master Specification for FPGA Mode 0: CPOL=0, CPHA=0 (SCK idle low, sample on rising edge)","symbols":[{"name":"CLK_FREQ","line":16},{"name":"SPI_CPOL","line":21},{"name":"SPI_CPHA","line":22},{"name":"MAX_DATA_WIDTH","line":25},{"name":"CS_ASSERT_DELAY","line":26},{"name":"CS_DEASSERT_DELAY","line":27},{"name":"PRESCALER_2","line":30},{"name":"PRESCALER_4","line":31},{"name":"PRESCALER_8","line":32},{"name":"PRESCALER_16","line":33},{"name":"PRESCALER_32","line":34},{"name":"PRESCALER_64","line":35},{"name":"PRESCALER_128","line":36},{"name":"PRESCALER_256","line":37},{"name":"SPI_IDLE","line":44},{"name":"SPI_CS_ASSERT","line":45},{"name":"SPI_TRANSFER","line":46},{"name":"SPI_CS_DEASSERT","line":47},{"name":"TX_BIT","line":50},{"name":"RX_BIT","line":51},{"name":"WAIT_EDGE","line":52},{"name":"SPI_Master_Unit","line":59},{"name":"spi_set_prescaler","line":103},{"name":"spi_get_prescaler_div","line":113},{"name":"spi_get_sck_freq","line":130},{"name":"spi_set_data_width","line":136},{"name":"spi_is_busy","line":146},{"name":"spi_transfer","line":152},{"name":"spi_read_rx","line":167},{"name":"spi_get_cs","line":173},{"name":"spi_get_sck","line":179},{"name":"spi_get_mosi","line":190},{"name":"spi_tick","line":199},{"name":"spi_transfer_bit","line":225},{"name":"prescaler_div","line":226},{"name":"miso_bit","line":239}],"imports":[{"name":"base::types","line":9}],"terms":["fpga","spi","master","clk","freq","cpol","cpha","max","data","width","assert","delay","deassert","prescaler","idle","transfer","bit","wait","edge","unit","set","get","div","sck","busy","read","mosi","tick","miso"]},{"id":"d3be190095b4141b094dd75baaf76f725478eb18f8709f08fa600055ab3d782f","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/alphabet.t27","health":"ok","module":"docs_chapter_alphabet"}],"description":"specs/docs/chapters/alphabet.t27 -- chapter 4 of the system documentation, docs/alphabet Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"DOCUMENT","line":14},{"name":"ORDER","line":16},{"name":"TITLE","line":17},{"name":"SOURCES","line":20},{"name":"SECTIONS","line":22},{"name":"DIAGRAM","line":25},{"name":"TABLE","line":27},{"name":"BODY_EN","line":29},{"name":"ENABLED","line":30}],"imports":[],"terms":["docs","chapters","alphabet","chapter","kind","document","order","title","sources","sections","diagram","table","enabled"]},{"id":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_graph.t27","health":"warn","module":"TernaryGraph"}],"description":"t27/specs/isa/ternary_graph.t27 Ternary Graph Operations Specification Ring 083 - Graph algorithms on ternary-weighted adjacency 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"MAX_VERTICES","line":10},{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"graph_init","line":16},{"name":"add_edge","line":29},{"name":"add_edge_undirected","line":36},{"name":"edge_weight","line":42},{"name":"degree_out","line":50},{"name":"degree_in","line":61},{"name":"neighbor_count","line":72},{"name":"has_path_2","line":85}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","graph","max","vertices","trit","neg","zero","pos","init","edge","undirected","weight","degree","out","neighbor","count","path"]},{"id":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/fpga_emission.t27","health":"warn","module":"fpga_emission"}],"description":"fpga_emission.t27 — FPGA Module Verilog Emission Generates FPGA-specific Verilog modules from .t27 specs","symbols":[{"name":"FpgaCodegen","line":10},{"name":"new","line":18},{"name":"emit_fpga_top","line":31},{"name":"emit_uart_module","line":160},{"name":"baud_divisor","line":178},{"name":"emit_spi_module","line":384},{"name":"emit_mac_module","line":583},{"name":"emit","line":709},{"name":"emit_line","line":715},{"name":"emit_int","line":727},{"name":"indent","line":733},{"name":"dedent","line":739},{"name":"int_to_str","line":748},{"name":"digit","line":758},{"name":"tmp","line":767},{"name":"emit_bridge_module","line":780},{"name":"emit_memory_module","line":850},{"name":"emit_fifo_module","line":896},{"name":"emit_axi4_module","line":960},{"name":"emit_apb_bridge_module","line":1054},{"name":"emit_gf16_accel_module","line":1120},{"name":"emit_generic_module","line":1198},{"name":"port","line":1210},{"name":"dir_str","line":1211},{"name":"sig","line":1236},{"name":"kind_str","line":1237},{"name":"assign","line":1260},{"name":"mem","line":1276},{"name":"style","line":1278},{"name":"inst","line":1298},{"name":"emit_testbench_from_hir","line":1320},{"name":"port","line":1343},{"name":"port","line":1368},{"name":"emit_xdc_from_hir","line":1413},{"name":"period_ps","line":1420},{"name":"port","line":1440},{"name":"bp","line":1459},{"name":"cd","line":1491},{"name":"emit_conformance_testbench","line":1514},{"name":"emit_conformance_check","line":1557},{"name":"emit_conformance_check_masked","line":1590},{"name":"emit_conformance_footer","line":1625},{"name":"emit_uart_conformance_tb","line":1660},{"name":"emit_mac_conformance_tb","line":1740},{"name":"emit_top_conformance_tb","line":1826},{"name":"emit_spi_conformance_tb","line":1888}],"imports":[],"terms":["compiler","codegen","verilog","fpga","emission","emit","top","uart","baud","divisor","spi","mac","int","indent","dedent","str","digit","tmp","bridge","memory","fifo","axi4","apb","gf16","accel","generic","port","dir","sig","kind","assign","mem","style","inst","testbench","hir","xdc","period","conformance","masked","footer"]},{"id":"d418841c0c8387724f6ebc2e4ee6526e56395e8d980402d72bfef753a0319d78","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/lucas_exact_verification.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","lucas","exact","verification"]},{"id":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","sources":[{"repo":"ghashtag/t27","path":"specs/demos/hello_world.t27","health":"ok","module":"hello-world"}],"description":"hello_world.t27 -- start here The smallest spec that still shows every part of the language: constants, a type, functions, a test and an invariant. Read it top to bottom, then watch it become tokens, an AST, and five different target languages.","symbols":[{"name":"GREETING_LEN","line":17},{"name":"TRINITY","line":18},{"name":"TRIT_NEG","line":21},{"name":"TRIT_ZERO","line":22},{"name":"TRIT_POS","line":23},{"name":"Greeting","line":32},{"name":"trit_add","line":46},{"name":"sum","line":47},{"name":"trit_mul","line":59},{"name":"greeting_new","line":64}],"imports":[],"terms":["demos","hello","world","greeting","len","trit","neg","zero","pos","sum","mul"]},{"id":"d42e1ac02e6c07db9accf712b9f83035a8257e7c5c15d691a2da4bdcccc3faf6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru.t27","health":"ok","module":"TriLru"}],"description":"t27/specs/","symbols":[{"name":"LRU","line":13},{"name":"init","line":24},{"name":"get","line":29},{"name":"put","line":34}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","lru","init","get","put"]},{"id":"d470286a2fffe65a4db790f6a3e2f869df079c8b225669a283becb0236677386","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/spiral.t27","health":"ok","module":"tool_trinity_tri_spiral"}],"description":"specs/tools/trinity/tri/spiral.t27 -- tool gHashTag/trinity:tri/spiral, the `tri spiral` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/spiral`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["spiral","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_monitoring.t27","health":"ok","module":"HealthMonitoring"}],"description":"Health Monitoring - system health checks and diagnostics Comprehensive health assessment for mesh network nodes","symbols":[{"name":"MAX_CHECKS","line":7},{"name":"HEALTH_CRITICAL","line":8},{"name":"HEALTH_WARNING","line":9},{"name":"HEALTH_HEALTHY","line":10},{"name":"CHECK_INTERVAL","line":11},{"name":"create_health_check","line":14},{"name":"get_check_type","line":21},{"name":"get_check_result","line":25},{"name":"get_check_value","line":29},{"name":"get_check_timestamp","line":33},{"name":"CHECK_CPU","line":38},{"name":"CHECK_MEMORY","line":39},{"name":"CHECK_DISK","line":40},{"name":"CHECK_NETWORK","line":41},{"name":"CHECK_TEMPERATURE","line":42},{"name":"CHECK_POWER","line":43},{"name":"CHECK_CONNECTIVITY","line":44},{"name":"CHECK_PROCESS","line":45},{"name":"RESULT_PASS","line":48},{"name":"RESULT_WARN","line":49},{"name":"RESULT_FAIL","line":50},{"name":"RESULT_SKIP","line":51},{"name":"create_health_array","line":54},{"name":"get_health_check","line":65},{"name":"update_health_check","line":77},{"name":"calculate_overall_health","line":98},{"name":"count_failed_checks","line":130},{"name":"count_warning_checks","line":144},{"name":"is_check_failing","line":158},{"name":"get_health_percentage","line":169}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","health","monitoring","max","checks","critical","warning","healthy","interval","create","get","timestamp","cpu","memory","disk","network","temperature","power","connectivity","process","pass","warn","fail","skip","array","calculate","overall","count","failed","failing","percentage"]},{"id":"d492aa25a1e06b4ced6c44067db4ae48e4cfa14f2939dea8c45cfc838f38c6b6","sources":[{"repo":"ghashtag/t27","path":"compiler/skill/registry.t27","health":"ok","module":"skill_registry"}],"description":"registry.t27 — Skill Registry JSON Structure (ADR-002) Defines the structure for tri skill workflow registry","symbols":[{"name":"RegistryPath","line":10},{"name":"SkillStatus","line":13},{"name":"SkillKind","line":22},{"name":"SkillVerdict","line":31},{"name":"SkillMetadata","line":37},{"name":"Skill","line":45},{"name":"SkillRegistry","line":66},{"name":"create_registry","line":169},{"name":"create_skill","line":177},{"name":"now","line":178},{"name":"can_commit","line":206},{"name":"can_push","line":211},{"name":"status","line":223},{"name":"status","line":227},{"name":"kind","line":231},{"name":"verdict","line":235},{"name":"registry","line":239},{"name":"registry","line":243},{"name":"skill","line":247},{"name":"metadata","line":251},{"name":"start","line":300},{"name":"end","line":302},{"name":"elapsed","line":303},{"name":"start","line":308},{"name":"end","line":310},{"name":"elapsed","line":311}],"imports":[],"terms":["compiler","skill","registry","path","status","kind","verdict","metadata","create","commit","push","start","end","elapsed"]},{"id":"d4947ee53db0368360cef453355ee9b159ca0ba130941231ff774a5e55c0ebfe","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ilv.t27","health":"ok","module":"TriInterleave"}],"description":"TRI-NET block interleaver: spread consecutive datagrams across FEC codewords so a BURST of channel errors (fading drops a run of adjacent datagrams) becomes at most one error per codeword -- which the single-erasure XOR-FEC (tri_fec) can then recover. Without interleaving a burst wipes >=2 datagrams of one codeword and FEC fails; with depth-D interleaving any burst of length <= D is survivable. Layout: a block of D*W datagrams. Codewords are the W-wide ROWS (one FEC group per","symbols":[{"name":"DEPTH_CAP","line":14},{"name":"ilv_tx_pos","line":18},{"name":"ilv_orig","line":24},{"name":"ilv_codeword","line":29},{"name":"choose_depth","line":37},{"name":"depth_survives","line":48}],"imports":[{"name":"base::types","line":12}],"terms":["net","ilv","interleave","depth","cap","pos","orig","codeword","choose","survives"]},{"id":"d4dd51951de90ffcd73b57099bbd0bd0e8c21655538753684c0455e296f9c5c0","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf512.t27","health":"ok","module":"triformat-gf512"}],"description":"gf512.t27 -- GoldenFloat512 Encode/Decode GF512: 512-bit floating point with 1 sign + 195 exponent + 316 mantissa Bit layout: [S(1) E(195) M(316)] = [511:511][510:316][315:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (extrapolated; no RTL, no validated arithmetic).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS_EXPR","line":26},{"name":"EXP_MAX_EXPR","line":27},{"name":"EM_RATIO","line":30},{"name":"PHI_DIST","line":31},{"name":"PHI_BIAS_STATUS","line":33}],"imports":[],"terms":["numeric","gf512","triformat","total","bits","sign","exp","mant","shift","bias","expr","max","ratio","phi","dist","status"]},{"id":"d4fff09b1c7e86fca582abd18362a0dafd271e3e11b8bbdbe13f257d8e71a17d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/segment_tree.t27","health":"ok","module":"TriSegmentTree"}],"description":"t27/specs/","symbols":[{"name":"SegmentTree","line":13},{"name":"init","line":24},{"name":"query","line":29},{"name":"update","line":34},{"name":"deinit","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","segment","tree","init","query","deinit"]},{"id":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","sources":[{"repo":"ghashtag/t27","path":"specs/storage/schema.t27","health":"ok","module":"Storage"}],"description":"specs/storage/schema.t27 Storage Types Specification","symbols":[{"name":"StorageKey","line":14},{"name":"StorageEntry","line":19},{"name":"LockMode","line":31},{"name":"Lock","line":37},{"name":"Migration","line":48},{"name":"MigrationResult","line":55},{"name":"StorageError","line":66},{"name":"NotFoundError","line":72},{"name":"LockError","line":78},{"name":"DEFAULT_LOCK_TIMEOUT_MS","line":88},{"name":"MAX_RETRIES","line":89},{"name":"CURRENT_SCHEMA_VERSION","line":90},{"name":"is_not_found","line":97},{"name":"is_lock_error","line":102}],"imports":[{"name":"base::types","line":6}],"terms":["storage","schema","key","entry","lock","mode","migration","found","default","timeout","max","retries"]},{"id":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","sources":[{"repo":"ghashtag/t27","path":"specs/account/schema.t27","health":"ok","module":"Account"}],"description":"specs/account/schema.t27 Account Types Specification","symbols":[{"name":"AccountID","line":13},{"name":"OrgID","line":16},{"name":"AccessToken","line":19},{"name":"RefreshToken","line":22},{"name":"DeviceCode","line":25},{"name":"UserCode","line":28},{"name":"Info","line":35},{"name":"Org","line":43},{"name":"Login","line":49},{"name":"PollResult","line":63},{"name":"PollSuccess","line":73},{"name":"PollPending","line":78},{"name":"PollSlow","line":81},{"name":"PollExpired","line":84},{"name":"PollDenied","line":87},{"name":"PollError","line":90},{"name":"AccountRepoError","line":99},{"name":"AccountServiceError","line":105},{"name":"AccountError","line":111},{"name":"CLIENT_ID","line":120},{"name":"EAGER_REFRESH_THRESHOLD_MINUTES","line":121},{"name":"DEFAULT_POLL_INTERVAL_MS","line":122},{"name":"is_token_fresh","line":129}],"imports":[{"name":"base::types","line":6}],"terms":["account","schema","org","access","token","refresh","device","user","info","login","poll","success","slow","expired","denied","service","client","eager","threshold","minutes","default","interval","fresh"]},{"id":"d596ee91ec23d39cb905e0ddc7dffc504c532952a2fb0fe7ed64438db707779c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/needle-search.t27","health":"ok","module":"tool_trinity_tri_needle_search"}],"description":"specs/tools/trinity/tri/needle-search.t27 -- tool gHashTag/trinity:tri/needle-search, the `tri needle-search` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle-search`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["needle","search","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp_protocol.t27","health":"ok","module":"McpProtocol"}],"description":"specs/tools/mcp_protocol.t27 -- the MCP protocol behaviour of gHashTag/trinity's trinity-mcp at the pin S06 of gHashTag/trinity#988 (gHashTag/t27#3568). The consumer ships two MCP servers and one client. This file states what the main server, tools/mcp/trinity_mcp/server.zig at 976df517, actually does with a JSON-RPC message -- how it frames, which methods it routes, what it answers to initialize, how it lists and calls tools, how it reports failure, what it does with cancellation and with a tool it does not know -- and what the modules beside it declare but the server never imports.","symbols":[{"name":"KIND","line":16},{"name":"ID","line":17},{"name":"NAME","line":18},{"name":"CONSUMER_REPO","line":19},{"name":"PINNED_REVISION","line":20},{"name":"SERVER_MODULE","line":21},{"name":"SERVER_LINES","line":22},{"name":"TOOL_CARD","line":23},{"name":"PROTOCOL_VERSION","line":25},{"name":"SERVER_NAME","line":26},{"name":"SERVER_VERSION","line":27},{"name":"INITIALIZE_RESULT","line":28},{"name":"NEGOTIATION","line":29},{"name":"TRANSPORT","line":31},{"name":"TRANSPORT_UNUSED","line":32},{"name":"TRANSPORT_UNUSED_NOTE","line":33},{"name":"READ_BUFFER_BYTES","line":34},{"name":"RESULT_BUFFER_BYTES","line":35},{"name":"RESULT_TRUNCATION","line":36},{"name":"METHOD_COUNT","line":38},{"name":"METHODS","line":39},{"name":"METHOD_MATCH","line":40},{"name":"NOTIFICATION_RULE","line":41},{"name":"UNKNOWN_METHOD_RULE","line":42},{"name":"REPLY_ANSWERED","line":43},{"name":"REPLY_SILENT_NOTIFICATION","line":44},{"name":"REPLY_SILENT_UNKNOWN","line":45},{"name":"TOOLS_STATIC","line":47},{"name":"TOOLS_MALFORMED","line":48},{"name":"TOOLS_LIST_RULE","line":49},{"name":"TOOLS_LIST_JSON_VALID","line":50},{"name":"TOOLS_CELL_FILE","line":51},{"name":"TOOLS_CELL_FILE_EXISTS","line":52},{"name":"CALL_EXACT_HANDLERS","line":54},{"name":"CALL_PREFIX_HANDLERS","line":55},{"name":"CALL_PREFIXES","line":56},{"name":"CALL_FALLBACK_RULE","line":57},{"name":"CALL_FALLBACK_TOOLS","line":58},{"name":"CALL_ARGUMENTS_RULE","line":59},{"name":"CALL_EXECUTION","line":60},{"name":"ROUTE_EXACT","line":61},{"name":"ROUTE_PREFIX","line":62},{"name":"ROUTE_GENERIC","line":63},{"name":"ERROR_CHANNEL","line":65},{"name":"ERROR_CODES_DECLARED","line":66},{"name":"ERROR_CODE_NAMES","line":67},{"name":"ERROR_CODE_VALUES","line":68},{"name":"ERROR_CODES_NOTE","line":69},{"name":"CANCELLATION","line":71},{"name":"TIMEOUT","line":72},{"name":"PERMISSIONS","line":73},{"name":"PERMISSION_GATE_IN_TREE","line":74},{"name":"PERMISSION_ALLOW","line":75},{"name":"PERMISSION_DENY","line":76},{"name":"RESOURCE_COUNT","line":78},{"name":"PROMPT_COUNT","line":79},{"name":"RESOURCES","line":80},{"name":"PROMPTS","line":81},{"name":"NEEDLE_SERVER","line":83},{"name":"NEEDLE_TOOLS","line":84},{"name":"CLIENT","line":85},{"name":"SCHEMA_EXPORT","line":87},{"name":"EXPORTED_TOOLS","line":88},{"name":"OVERLAP_NOTE","line":89},{"name":"CI_EVIDENCE","line":91},{"name":"HOST_EVIDENCE","line":92},{"name":"ENABLED","line":93},{"name":"method_reply","line":97},{"name":"call_route","line":103},{"name":"call_is_refused","line":109},{"name":"failure_is_result","line":113},{"name":"error_code","line":117},{"name":"error_code_is_emitted_by_trinity_mcp","line":132},{"name":"error_code_is_emitted_by_needle_mcp","line":136},{"name":"permission","line":140},{"name":"result_text_fits","line":147},{"name":"tools_list_objects","line":151}],"imports":[],"terms":["mcp","protocol","kind","consumer","pinned","revision","tool","card","initialize","negotiation","transport","unused","note","read","buffer","bytes","truncation","method","count","methods","match","notification","rule","unknown","reply","answered","silent","static","malformed","list","json","valid","cell","exists","call","exact","handlers","prefix","prefixes","fallback","arguments","execution","route","generic","channel","codes","declared","values","cancellation","timeout","permissions","permission","gate","tree","allow","deny","resource","prompt","resources","prompts","needle","client","schema","overlap","evidence","host","enabled","refused","failure","emitted","text","fits","objects"]},{"id":"d5d906f34640716defff3c0b92ac5c953e5d67885c14242db2bdccfd8e6f78d1","sources":[{"repo":"ghashtag/t27","path":"specs/pins/parser.t27","health":"warn","module":"PinsParser"}],"description":"t27/specs/pins/parser.t27 Pins Parser for Trinity t27 Parse .t27 pin specifications into Pins IR","symbols":[{"name":"PinToken","line":13},{"name":"AstNode","line":35},{"name":"Parser","line":81},{"name":"new","line":89},{"name":"parse","line":97},{"name":"parse_module","line":101},{"name":"parse_signal_decl","line":131},{"name":"parse_signal_type","line":162},{"name":"parse_pin_location","line":178},{"name":"parse_io_standard","line":196},{"name":"parse_constraint","line":220},{"name":"is_at_end","line":247},{"name":"peek","line":251},{"name":"consume_token","line":255},{"name":"match_token","line":264},{"name":"expect_token","line":274},{"name":"match_keyword","line":282},{"name":"expect_keyword","line":292},{"name":"expect_identifier","line":301},{"name":"expect_string","line":308},{"name":"expect_number","line":315},{"name":"last_string_value","line":322},{"name":"error","line":327},{"name":"ParseError","line":336},{"name":"Lexer","line":342},{"name":"new","line":348},{"name":"tokenize","line":355},{"name":"scan_token","line":373},{"name":"string","line":403},{"name":"number","line":418},{"name":"identifier","line":429},{"name":"advance","line":440},{"name":"peek","line":446},{"name":"match_char","line":450},{"name":"is_at_end","line":459},{"name":"skip_whitespace","line":463},{"name":"LexError","line":471},{"name":"LexErrorKind","line":475},{"name":"parse_pins_spec","line":482}],"imports":[{"name":"base::types","line":8},{"name":"base::ops","line":9},{"name":"pins::ir","line":10}],"terms":["pins","parser","pin","token","ast","node","parse","signal","decl","location","standard","constraint","end","peek","consume","match","expect","keyword","identifier","lexer","tokenize","scan","advance","char","skip","whitespace","lex","kind"]},{"id":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_protocol_stack.t27","health":"ok","module":"MeshProtocolStack"}],"description":"Mesh protocol stack - end-to-end integration testing Validates complete TX/RX paths using all protocol modules","symbols":[{"name":"MAX_NODES","line":8},{"name":"MAX_HOPS","line":9},{"name":"NODE_A","line":10},{"name":"NODE_B","line":11},{"name":"NODE_C","line":12},{"name":"build_packet","line":15},{"name":"extract_src","line":21},{"name":"extract_dst","line":25},{"name":"extract_ttl","line":29},{"name":"extract_payload","line":33},{"name":"decrement_ttl","line":38},{"name":"route_packet","line":49},{"name":"tx_path","line":68},{"name":"rx_path","line":73},{"name":"forward_packet","line":79}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","protocol","stack","max","nodes","hops","node","build","packet","extract","dst","ttl","payload","decrement","route","path","forward"]},{"id":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_arithmetic.t27","health":"ok","module":"HybridArithmetic"}],"description":"Module: Hybrid Arithmetic - Packed Storage with Unpacked Computation","symbols":[{"name":"StorageMode","line":20},{"name":"HybridBigInt","line":32},{"name":"Vec32i8","line":47},{"name":"Vec32i16","line":54},{"name":"zero","line":66},{"name":"ensureUnpacked","line":73},{"name":"add","line":83},{"name":"addSimd","line":91},{"name":"sub","line":97},{"name":"mul","line":103},{"name":"dotProduct","line":110},{"name":"pack","line":122},{"name":"unpack","line":130},{"name":"createPacked","line":140},{"name":"createUnpacked","line":146},{"name":"zero_val","line":346},{"name":"zero_val","line":351}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10},{"name":"numeric::gf16","line":11}],"terms":["ternary","hybrid","arithmetic","storage","mode","big","int","vec32i8","vec32i16","zero","ensure","unpacked","simd","sub","mul","dot","product","pack","unpack","create","packed","val"]},{"id":"d67d46cada717f8c91861d127ff6037bd17f72b367713a71c41fa0c81eb29b16","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/apb_bridge_tb.t27","health":"ok","module":"APB_Bridge_Testbench"}],"description":"t27/specs/fpga/testbench/apb_bridge_tb.t27 APB Bridge Testbench Tests APB bus protocol: setup, access, wait states","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"APB_ADDR_WIDTH","line":12},{"name":"APB_DATA_WIDTH","line":13},{"name":"tick","line":29},{"name":"reset","line":34},{"name":"apb_write","line":42},{"name":"apb_read","line":58}],"imports":[{"name":"fpga::apb_bridge::ApbBridge","line":8}],"terms":["fpga","testbench","apb","bridge","clk","period","sim","timeout","addr","width","data","tick","reset","write","read"]},{"id":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/eda.t27","health":"ok","module":"igla-race-eda"}],"description":"t27/specs/igla/race/eda.t27 OpenROAD / EDA toolchain integration for IGLA RACE PPA feedback NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (.as_bytes(), @intCast, .contains(), .to_string(), format!()).","symbols":[{"name":"EdaToolchainStatus","line":17},{"name":"BackendRealizabilityScore","line":23},{"name":"compute_backend_realizability","line":33},{"name":"detect_eda_toolchain","line":43},{"name":"strings_equal","line":51},{"name":"strings_equal_inner","line":58},{"name":"command_exists","line":68},{"name":"contains_substring","line":93},{"name":"SynthesisMetrics","line":101},{"name":"parse_synthesis_log","line":114},{"name":"parse_f64_after","line":137},{"name":"parse_u32_after","line":147},{"name":"find_substring","line":157},{"name":"prefix_match","line":167},{"name":"skip_non_numeric","line":181},{"name":"parse_f64_token","line":196},{"name":"parse_f64_fraction","line":210},{"name":"parse_u32_token","line":222},{"name":"FloorplanConfig","line":237},{"name":"generate_openroad_script","line":247},{"name":"generate_innovus_script","line":265},{"name":"generate_icc2_script","line":282},{"name":"compute_ppa_score","line":304},{"name":"ppa_delta","line":323},{"name":"test_ppa_score_positive","line":337},{"name":"test_ppa_delta_improvement","line":353},{"name":"test_innovus_script_contains_top","line":369},{"name":"test_icc2_script_contains_top","line":384},{"name":"test_openroad_script_contains_top","line":399},{"name":"inv_floorplan_positive","line":437}],"imports":[{"name":"base::types","line":10},{"name":"igla::race::rtl","line":11}],"terms":["igla","race","eda","toolchain","status","backend","realizability","score","compute","detect","strings","equal","inner","exists","contains","substring","synthesis","metrics","parse","log","f64","u32","find","prefix","match","skip","non","numeric","token","fraction","floorplan","config","generate","openroad","script","innovus","icc2","ppa","delta","positive","improvement","top","inv"]},{"id":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-lead-magnet.t27","health":"ok","module":"automation"}],"description":"specs/automation/crm-lead-magnet.t27 -- the CRM lead magnet: a person's own Telegram photo redrawn as a vertical 9:16 story portrait and given away free, to show the AI assistant doing something for THEM before anything is sold. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-deliver-tool.ts (the tool crm_deliver_photo, gift mode by default), src/kie-image.ts (editInputFor), src/agent/tools.ts (leadAvatarUrl: owner session first, bot API second),","symbols":[{"name":"KIND","line":20},{"name":"ID","line":21},{"name":"REPO","line":22},{"name":"VERSION","line":23},{"name":"TOOL","line":26},{"name":"DEFAULT_MODE","line":27},{"name":"SOURCE","line":28},{"name":"FALLBACK","line":29},{"name":"ASPECT_RATIO","line":30},{"name":"STORY_PX","line":31},{"name":"TEXT_IN_IMAGE","line":32},{"name":"SAFE_ZONE_TOP_PCT","line":36},{"name":"SAFE_ZONE_BOTTOM_PCT","line":37},{"name":"SAFE_ZONE_SIDE_PCT","line":38},{"name":"MODEL","line":41},{"name":"MODEL_ALT","line":42},{"name":"RESOLUTION","line":43},{"name":"KIE_INPUT_URLS_FIELD","line":44},{"name":"COST_USD","line":45},{"name":"OP","line":46},{"name":"OP_TOKENS","line":47},{"name":"PAYER","line":48},{"name":"RECIPIENT_CHARGED","line":49},{"name":"CHARGE_DEFERRED","line":50},{"name":"LIVE_RUN_STATUS","line":51},{"name":"PROMPT_ORDER","line":56},{"name":"IDENTITY_FIRST","line":57},{"name":"CAPTION_ONE_LINE","line":60},{"name":"CAPTION_HAS_NAME","line":61},{"name":"CAPTION_NAMES_MAKER","line":62},{"name":"CAPTION_QUESTIONS","line":63},{"name":"CAPTION_HAS_PRICE","line":64},{"name":"CAPTION_HAS_LINK","line":65},{"name":"GIFTS_PER_PERSON","line":66},{"name":"SENT_WITHOUT_BUTTON","line":69},{"name":"TOUCH_KIND","line":70},{"name":"TOUCH_NOTE_PREFIX","line":71},{"name":"MAX_BUTTONS_PER_ROW","line":76},{"name":"HUB_ROWS","line":77},{"name":"PREP_LABEL_DELIVER","line":78},{"name":"Gift","line":80},{"name":"Caption","line":89},{"name":"KeyboardRow","line":98},{"name":"g","line":103},{"name":"g","line":112},{"name":"c","line":118},{"name":"wide","line":127},{"name":"fine","line":128}],"imports":[],"terms":["automation","crm","lead","magnet","kind","tool","default","mode","fallback","aspect","ratio","story","text","image","safe","zone","top","pct","bottom","side","model","alt","resolution","kie","urls","field","cost","usd","tokens","payer","recipient","charged","charge","deferred","live","status","prompt","order","identity","caption","one","maker","questions","price","link","gifts","per","person","sent","button","touch","note","prefix","max","buttons","row","hub","rows","prep","label","deliver","gift","keyboard","wide","fine"]},{"id":"d6cfadd5f9822b72f668e6bc15734c3939b9350e60c68212e5666ae882e443c0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitmap.t27","health":"ok","module":"TriBitmap"}],"description":"t27/specs/","symbols":[{"name":"Bitmap","line":13},{"name":"init","line":23},{"name":"get","line":28},{"name":"set","line":33},{"name":"clear","line":38},{"name":"flip","line":43},{"name":"set_all","line":48},{"name":"clear_all","line":53},{"name":"count","line":58},{"name":"find_first","line":63},{"name":"find_last","line":68}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","bitmap","init","get","set","clear","flip","count","find"]},{"id":"d6e3126051f418b8d58ea7b6c5eb552c80f0102041dc075b9863c6a7c6de8bf1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_alert.t27","health":"ok","module":"RtiAlert"}],"description":"tri-net/specs/rti_alert.t27 Partial spec-first flip of src/rti_alert.rs (T27-first). The centroid/velocity math there is f32 (sqrt/powi) and can't be expressed in T27's integer world, but the anomaly-severity -> alert-severity STEP MAPPING is pure integer logic: it is lifted here as the single source of truth so the Rust node can include! the generated function instead of hand-writing the ladder.","symbols":[{"name":"SEV_CATASTROPHIC","line":14},{"name":"SEV_CRITICAL","line":15},{"name":"SEV_URGENT","line":16},{"name":"SEV_WARNING","line":17},{"name":"alert_severity","line":22}],"imports":[{"name":"base::types","line":11}],"terms":["net","rti","alert","sev","catastrophic","critical","urgent","warning","severity"]},{"id":"d71a2dd240cabe9e1e5d667259d245209ec4532632c30328971e84ec4cbc4bd6","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-codegen.t27","health":"ok","module":"cron_trinity_codegen"}],"description":"specs/crons/trinity-codegen.t27 -- cron github-actions/trinity/codegen Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/codegen). The schedule was read from trinity:.github/workflows/codegen.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","codegen","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"d7607eb8c81bb51425dd1458f75f780fe4cbfc009e7c353654b76d25391369f2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/b_tree.t27","health":"ok","module":"TriBTree"}],"description":"t27/specs/","symbols":[{"name":"BTreeNode","line":13},{"name":"BTree","line":20},{"name":"init","line":31},{"name":"search","line":36},{"name":"insert","line":41},{"name":"deinit","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","tree","btree","node","init","search","insert","deinit"]},{"id":"d78bef53542ec408f004c9a1e1650cd9fd125ef0e7da3d4172f5ed9a203961af","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/census.t27","health":"ok","module":"tool_tri_census"}],"description":"specs/tools/tri/census.t27 -- tool tri/census, the `tri census` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/census). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["census","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"d7912780dd02240a27684c2a0ef9f950d41cdc8554d1d97d94ceaa5018a85b81","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_runnability_sweep.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","generator","runnability","sweep"]},{"id":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/publication.t27","health":"ok","module":"turbobaby-publish-proof"}],"description":"","symbols":[{"name":"KIND","line":27},{"name":"ID","line":28},{"name":"NAME","line":29},{"name":"WORLD","line":30},{"name":"CANONICAL_DIRECTORY","line":31},{"name":"DISCOVERY_OWNER_MATCHES","line":34},{"name":"REPOSITORY_IS_PUBLIC","line":35},{"name":"REPOSITORY_IS_FORMAL_FORK","line":36},{"name":"REPOSITORY_IS_STANDALONE_DERIVATIVE","line":37},{"name":"WORLD_SCAN_SKIPS_FORMAL_FORKS","line":38},{"name":"PROBE_FILES","line":41},{"name":"MAX_FILE_BYTES","line":42},{"name":"MIN_DECLARATIONS_PER_PROBED_FILE","line":43},{"name":"scanner_probe_witness_valid","line":45},{"name":"world_scan_eligible","line":49},{"name":"canonical_source_discoverable","line":55},{"name":"REQUIRED_GENERATOR_COUNT","line":63},{"name":"TEST_COMMAND_EXECUTES_ASSERTIONS","line":64},{"name":"COMPILER_EVIDENCE_SCOPE","line":65},{"name":"parse_evidence_valid","line":67},{"name":"typecheck_evidence_valid","line":71},{"name":"test_inventory_evidence_valid","line":75},{"name":"five_generators_emitted","line":79},{"name":"compiler_evidence_complete","line":83},{"name":"SPEC_BROWSER_DISCOVERY_AUTOMATIC","line":88},{"name":"SPEC_BROWSER_DEPLOY_IS_OWNER_GATE","line":89},{"name":"THIS_FILE_CLAIMS_SPEC_BROWSER_IS_LIVE","line":90},{"name":"spec_browser_publish_proved","line":92},{"name":"AGENT_CARD_PATH","line":97},{"name":"AGENT_CARD_ID","line":98},{"name":"AGENT_CARD_IS_NAMESPACED","line":99},{"name":"AGENT_CARD_CLAIMS_ALPHABET_SEAT","line":100},{"name":"CURRENT_UPSTREAM_ACCEPTS_NAMESPACED_AGENT_CARD","line":101},{"name":"THIS_FILE_CLAIMS_AGENT_CARD_IS_LIVE","line":102},{"name":"agent_card_source_ready","line":104},{"name":"agent_card_publish_proved","line":108},{"name":"QUEEN_BOARD_SUPPORTS_MULTIPLE_REPOSITORIES","line":113},{"name":"QUEEN_CHANGE_IS_OWNED_BY_THIS_REPOSITORY","line":114},{"name":"QUEEN_PUBLICATION_IS_EXTERNALLY_BLOCKED","line":115},{"name":"THIS_FILE_CLAIMS_QUEEN_IS_LIVE","line":116},{"name":"queen_publish_proved","line":118},{"name":"queen_block_is_external","line":122}],"imports":[],"terms":["turbobaby","user","bot","publication","publish","proof","kind","world","canonical","directory","discovery","owner","matches","public","formal","fork","standalone","derivative","scan","skips","forks","probe","max","bytes","min","declarations","per","probed","scanner","witness","valid","eligible","discoverable","required","generator","count","executes","assertions","compiler","evidence","scope","parse","typecheck","inventory","five","generators","emitted","complete","browser","automatic","deploy","gate","claims","live","proved","card","path","namespaced","alphabet","seat","upstream","accepts","ready","queen","board","supports","multiple","repositories","owned","externally","blocked","block","external"]},{"id":"d8bd6eba31a437f911eec4ea0d056b1cd4a3b34039e40e207aa2aaa852e11f21","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lamb.t27","health":"ok","module":"Lamb"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_LR","line":13},{"name":"DEFAULT_BETA1","line":14},{"name":"DEFAULT_BETA2","line":15},{"name":"DEFAULT_EPSILON","line":16},{"name":"DEFAULT_CLIP_THRESHOLD","line":17},{"name":"LAMBConfig","line":23},{"name":"LAMBState","line":32},{"name":"init_state","line":43},{"name":"compute_layer_update","line":48},{"name":"forward","line":53}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["optimizer","lamb","default","beta1","beta2","epsilon","clip","threshold","lambconfig","lambstate","init","state","compute","layer","forward"]},{"id":"d8ca3cf6feb27648ea781750913aaef0f7c8288be4a6b1d3f8ed1e514db17fa4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/igla_champion_capsule.t27","health":"ok","module":"IglaChampionCapsule"}],"description":"t27/specs/ml/igla_champion_capsule.t27 Purpose: freeze the champion run so any later experiment can be compared fairly and any reproduction attempt validated. This is the CONTROL ANCHOR, NOT proof of phi superiority. All phi performance claims are [Open conjecture] (see FL-001 in docs/nona-03-manifest/RESEARCH_CLAIMS.md). Source: trios-trainer-igla src/optimizer.rs (phi-canonical defaults).","symbols":[{"name":"PHI","line":27},{"name":"CHAMPION_SEED","line":29},{"name":"CHAMPION_BPB","line":30},{"name":"CHAMPION_STEPS","line":31},{"name":"CHAMPION_HIDDEN","line":32},{"name":"BETA1_CANONICAL","line":35},{"name":"WEIGHT_DECAY_CANONICAL","line":36},{"name":"LR_CANONICAL","line":37},{"name":"BETA2_DEFAULT","line":38},{"name":"EPSILON_DEFAULT","line":39},{"name":"RANDOM_CHAR_BPB_CEILING","line":42},{"name":"CORPUS_UNIQUE_TOKENS","line":43},{"name":"CHINCHILLA_MIN_UNIQUE","line":44},{"name":"PHI_INV3_HALF_WRONG","line":47}],"imports":[{"name":"base::types","line":20},{"name":"math::constants","line":21}],"terms":["igla","champion","capsule","phi","seed","bpb","steps","hidden","beta1","canonical","weight","decay","beta2","default","epsilon","random","char","ceiling","corpus","unique","tokens","chinchilla","min","inv3","half","wrong"]},{"id":"d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/formats.t27","health":"ok","module":"Formats"}],"description":"specs/numeric/formats.t27 Format Conversion Utilities - GF16, f32, ternary encoding","symbols":[{"name":"SignMask","line":27},{"name":"ExpMask","line":28},{"name":"MantMask","line":29},{"name":"ExpShift","line":31},{"name":"SignShift","line":32},{"name":"Bias","line":33},{"name":"ExpMax","line":35},{"name":"ExpMin","line":36},{"name":"gf16_to_f32","line":61},{"name":"f32_to_gf16","line":79},{"name":"f32_to_ternary","line":101},{"name":"ternary_to_f32","line":108},{"name":"Format","line":114},{"name":"format_bytes","line":126},{"name":"quantize_value","line":136},{"name":"original","line":322},{"name":"encoded","line":323},{"name":"decoded","line":324},{"name":"error","line":325},{"name":"p","line":330},{"name":"n","line":331},{"name":"p_decoded","line":332},{"name":"n_decoded","line":333},{"name":"values","line":338},{"name":"t","line":340},{"name":"recovered","line":341},{"name":"diff","line":342},{"name":"test_value","line":361},{"name":"test_value","line":372},{"name":"test_value","line":383},{"name":"test_trit","line":394}],"imports":[{"name":"base::types","line":10},{"name":"numeric::gf16","line":11}],"terms":["numeric","formats","sign","mask","exp","mant","shift","bias","max","min","gf16","f32","ternary","format","bytes","quantize","original","encoded","decoded","values","recovered","diff","trit"]},{"id":"d92298db00480f503b1a24ad2dc21f2528fe7c97a45f49b1626129d4e46f35b0","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft16.t27","health":"ok","module":"triformat_gft16"}],"description":"gft16.t27 -- GF-T16: the golden-ratio ternary ladder, 16-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft16","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"d97fe1d5605b55bc9b5fd3f8d9c653c5207579585eb7b6cadd1320d381958df5","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_sadd.t27","health":"ok","module":"GftSadd"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"on_comb","line":109}],"imports":[],"terms":["ternary","gft","sadd","magadd","magsub","neg","magmul","smul","comb"]},{"id":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sources":[{"repo":"ghashtag/t27","path":"specs/pins/emitter_xdc.t27","health":"warn","module":"EmitterXDC"}],"description":"t27/specs/pins/emitter_xdc.t27 XDC Constraint Emitter from Pins IR Generates nextpnr-compatible XDC from Design/Binding/ClockDef Output format matches t27c fpga-build --minimal exactly","symbols":[{"name":"HEADER_COMMENT","line":12},{"name":"XDCLine","line":14},{"name":"XDCOutput","line":20},{"name":"empty_xdc","line":25},{"name":"add_line","line":32},{"name":"add_empty","line":45},{"name":"emit_pin","line":58},{"name":"emit_clock","line":76},{"name":"emit_header","line":105},{"name":"qmtech_xc7a100t_minimal","line":113},{"name":"arty_a7_minimal","line":135},{"name":"line_count","line":153},{"name":"has_clk_constraint","line":157},{"name":"count_set_property_lines","line":170}],"imports":[{"name":"base::types","line":9},{"name":"base::ops","line":10}],"terms":["pins","emitter","xdc","header","xdcline","xdcoutput","empty","emit","pin","clock","qmtech","xc7a100t","minimal","arty","count","clk","constraint","set","property"]},{"id":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/types.t27","health":"ok","module":"TrinityMemoryTypes"}],"description":"specs/memory/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).","symbols":[{"name":"TMS_LANE_BITS","line":11},{"name":"TMS_LANE_ZERO","line":12},{"name":"TMS_LANE_POS","line":13},{"name":"TMS_LANE_NEG","line":14},{"name":"TMS_LANE_INVALID","line":15},{"name":"TMS_CODEC_BASELINE2","line":18},{"name":"TMS_CODEC_DENSE5","line":19},{"name":"TMS_CODEC_DENSE17","line":20},{"name":"TMS_CODEC_DENSE22","line":21},{"name":"TMS_CODEC_SPARSE41","line":22},{"name":"TMS_CODEC_SPARSE82","line":23},{"name":"TMS_CODEC_COUNT","line":24},{"name":"TMS_BASELINE2_GROUP_TRITS","line":26},{"name":"TMS_BASELINE2_GROUP_BITS","line":27},{"name":"TMS_DENSE5_GROUP_TRITS","line":28},{"name":"TMS_DENSE5_GROUP_BITS","line":29},{"name":"TMS_DENSE17_GROUP_TRITS","line":30},{"name":"TMS_DENSE17_GROUP_BITS","line":31},{"name":"TMS_DENSE22_GROUP_TRITS","line":32},{"name":"TMS_DENSE22_GROUP_BITS","line":33},{"name":"TMS_SPARSE41_GROUP_TRITS","line":34},{"name":"TMS_SPARSE41_GROUP_BITS","line":35},{"name":"TMS_SPARSE41_MAX_NONZERO","line":36},{"name":"TMS_SPARSE82_GROUP_TRITS","line":37},{"name":"TMS_SPARSE82_GROUP_BITS","line":38},{"name":"TMS_SPARSE82_MAX_NONZERO","line":39},{"name":"TMS_DENSE5_CODE_LIMIT","line":43},{"name":"TMS_DENSE5_ZERO_GROUP_CODE","line":44},{"name":"TMS_DENSE5_RESERVED_FIRST","line":45},{"name":"TMS_DENSE5_RESERVED_LAST","line":46},{"name":"TMS_DENSE17_CODE_LIMIT","line":47},{"name":"TMS_DENSE22_CODE_LIMIT","line":48},{"name":"TMS_SPARSE41_CODE_LIMIT","line":49},{"name":"TMS_SPARSE41_RESERVED_FIRST","line":50},{"name":"TMS_SPARSE41_RESERVED_LAST","line":51},{"name":"TMS_SPARSE82_CODE_LIMIT","line":52},{"name":"TMS_SPARSE82_RESERVED_FIRST","line":53},{"name":"TMS_SPARSE82_RESERVED_LAST","line":54},{"name":"TMS_TMEM_MAGIC_0","line":57},{"name":"TMS_TMEM_MAGIC_1","line":58},{"name":"TMS_TMEM_MAGIC_2","line":59},{"name":"TMS_TMEM_MAGIC_3","line":60},{"name":"TMS_TMEM_VERSION","line":61},{"name":"TMS_TMEM_HEADER_BYTES","line":62},{"name":"TMS_TMEM_VERSION_OFFSET","line":63},{"name":"TMS_TMEM_CODEC_OFFSET","line":64},{"name":"TMS_TMEM_RESERVED_OFFSET","line":65},{"name":"TMS_TMEM_RESERVED_BYTES","line":66},{"name":"TMS_TMEM_COUNT_OFFSET","line":67},{"name":"TMS_TMEM_COUNT_BYTES","line":68},{"name":"TMS_TMEM_PAYLOAD_LENGTH_OFFSET","line":69},{"name":"TMS_TMEM_PAYLOAD_LENGTH_BYTES","line":70},{"name":"TMS_TMEM_CRC_OFFSET","line":71},{"name":"TMS_TMEM_CRC_BYTES","line":72},{"name":"TMS_TMEM_CRC_COVERED_HEADER_BYTES","line":73},{"name":"TMS_TMEM_MAX_PAYLOAD_BYTES","line":74},{"name":"TMS_CRC32_POLY","line":77},{"name":"TMS_CRC32_INIT","line":78},{"name":"TMS_CRC32_XOR_OUT","line":79},{"name":"TMS_CRC32_CHECK_VALUE","line":80},{"name":"TMS_OK","line":83},{"name":"TMS_ERR_CODEC","line":84},{"name":"TMS_ERR_CAPACITY","line":85},{"name":"TMS_ERR_TRIT","line":86},{"name":"TMS_ERR_SPARSITY","line":87},{"name":"TMS_ERR_LENGTH","line":88},{"name":"TMS_ERR_CODE","line":89},{"name":"TMS_ERR_PADDING","line":90},{"name":"TMS_ERR_HEADER","line":91},{"name":"TMS_ERR_CHECKSUM","line":92},{"name":"TMS_ERR_LIMIT","line":93},{"name":"Evidence","line":96},{"name":"tms_pow3","line":104},{"name":"tms_group_trits","line":111},{"name":"tms_group_bits","line":121},{"name":"tms_max_nonzero","line":132},{"name":"tms_valid_word_count","line":139},{"name":"tms_lane_valid","line":146},{"name":"tms_lane_trit","line":150},{"name":"tms_word_valid","line":156},{"name":"tms_dense_code5","line":170},{"name":"tms_payload_bytes","line":182},{"name":"tms_crc32_byte","line":191}],"imports":[],"terms":["dmitrii","memory","tms","lane","bits","zero","pos","neg","invalid","codec","baseline2","dense5","dense17","dense22","sparse41","sparse82","count","group","trits","max","nonzero","limit","reserved","tmem","magic","header","bytes","offset","payload","length","crc","covered","crc32","poly","init","xor","out","err","capacity","trit","sparsity","padding","checksum","evidence","pow3","valid","word","dense","code5","byte"]},{"id":"d9f354f8b828fc2f29503d7e928ea5771635ddec31997a8b9196a1cae79c1eca","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/queen.lib.t27","health":"ok","module":"trinity_capability_queen_lib"}],"description":"specs/trinity/capabilities/queen.lib.t27 -- capability trinity/queen.lib: libtrinity-queen: the Queen orchestration API (src/queen_api.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","queen","lib","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"da236765e018e3599eb952aa2e8a298e423c627751cb0cadb11b25e3908198f0","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_json.t27","health":"warn","module":"TrinityMemoryTensorPackJSON"}],"description":"Native TensorPack JSON binding and canonical serialization. Workspace buffers are scratch and may change on errors. All other output is committed only after complete validation. Caller ranges must be valid, nonoverlapping and stable throughout a call; no routine allocates memory.","symbols":[{"name":"TM_TPJ_ERR_SCHEMA","line":6},{"name":"TM_TPJ_ERR_JSON","line":7},{"name":"TMTPJSONWorkspace","line":8},{"name":"TMTPJSONWriter","line":16},{"name":"tm_tpj_text","line":18},{"name":"tm_tpj_members","line":24},{"name":"tm_tpj_field","line":30},{"name":"tm_tpj_unsigned","line":38},{"name":"tm_tpj_codec","line":41},{"name":"tm_tp_bind_json","line":52},{"name":"tm_tp_decode_json","line":147},{"name":"tm_tpj_put","line":170},{"name":"tm_tpj_literal","line":175},{"name":"tm_tpj_string","line":179},{"name":"tm_tpj_u64","line":188},{"name":"tm_tpj_z","line":194},{"name":"tm_tpj_float","line":200},{"name":"tm_tpj_codec_json","line":267},{"name":"tm_tpj_format_f64","line":277},{"name":"tm_tpj_encode_metadata","line":296},{"name":"tm_tp_encode_json","line":334}],"imports":[],"terms":["dmitrii","memory","tensorpack","json","tensor","pack","tpj","err","schema","tmtpjsonworkspace","tmtpjsonwriter","text","members","field","unsigned","codec","bind","decode","put","literal","u64","float","format","f64","encode","metadata"]},{"id":"da52721df06869c7108c634943a99ad067d397259d030de9781f7073ee0479a3","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0012_p2_coltie_module_const.t27","health":"warn","module":"m"}],"description":"","symbols":[{"name":"TIE","line":7},{"name":"f","line":9}],"imports":[],"terms":["bootstrap","goldring","coltie","tie"]},{"id":"da771c66524714c3a8c48aa095e71a5928cfa1cc82f2f819664493e042e9a698","sources":[{"repo":"ghashtag/t27","path":"specs/math/e8_lie_algebra.t27","health":"ok","module":"E8LieAlgebra"}],"description":"t27/specs/math/e8_lie_algebra.t27 E8 Exceptional Lie Algebra — Root System, Cartan Matrix, Eigenvalues Direction A (Priority 2) of PROJECT KEPLER->NEWTON E8 is the largest exceptional simple Lie group. Its root system contains golden ratio phi as a structural invariant through the H4 Coxeter subgroup. Key results verified computationally:","symbols":[{"name":"E8_RANK","line":31},{"name":"E8_DIM","line":32},{"name":"E8_NUM_ROOTS","line":33},{"name":"E8_COXETER","line":34},{"name":"E8_EXPONENTS","line":38},{"name":"E8_MARKS","line":42},{"name":"E8_ROOT_NORM_SQ","line":45},{"name":"E8Root","line":51},{"name":"E8RootSystem","line":55},{"name":"root_system_info","line":62},{"name":"e8_cartan_matrix","line":77},{"name":"e8_cartan_inverse","line":92},{"name":"e9_cartan_matrix","line":111},{"name":"E9_NULL_VECTOR","line":126},{"name":"E9Eigenvalues","line":135},{"name":"e9_eigenvalues","line":140},{"name":"PHI","line":141},{"name":"PHI_SQ","line":142},{"name":"PHI_INV_SQ","line":143},{"name":"trinity_from_e9_spectrum","line":162},{"name":"ev","line":163},{"name":"H4_EXPONENTS","line":178},{"name":"phi_from_h4","line":181},{"name":"pf_eigenvector_normalized","line":196},{"name":"cos","line":214},{"name":"abs","line":228}],"imports":[{"name":"math::constants","line":25}],"terms":["math","lie","algebra","e8lie","rank","dim","num","roots","coxeter","exponents","marks","root","norm","e8root","system","info","cartan","matrix","inverse","null","vector","e9eigenvalues","eigenvalues","phi","inv","spectrum","eigenvector","normalized","cos","abs"]},{"id":"da83784231ce7b0004279a51913a711527f55d8b2150da9a39fb39b307fab17f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/maybe.t27","health":"ok","module":"TriMaybe"}],"description":"t27/specs/","symbols":[{"name":"Maybe","line":13},{"name":"pure","line":23},{"name":"bind","line":28},{"name":"map","line":33},{"name":"join","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","maybe","pure","bind","map","join"]},{"id":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/int4.t27","health":"ok","module":"Int4"}],"description":"t27/specs/numeric/int4.t27 Int4 - 4-bit signed integer NUMERIC-STANDARD-001 Agent 9 (P1)","symbols":[{"name":"BITS","line":18},{"name":"Int4","line":22},{"name":"encode","line":29},{"name":"clamped","line":30},{"name":"decode","line":40},{"name":"raw","line":41},{"name":"min_value","line":51},{"name":"max_value","line":55},{"name":"range","line":59},{"name":"validate_format","line":65},{"name":"MEMORY_RATIO_VS_FP32","line":79},{"name":"add","line":83},{"name":"val_a","line":84},{"name":"val_b","line":85},{"name":"result","line":86},{"name":"sub","line":90},{"name":"val_a","line":91},{"name":"val_b","line":92},{"name":"result","line":93},{"name":"mul","line":97},{"name":"val_a","line":98},{"name":"val_b","line":99},{"name":"result","line":100},{"name":"neg","line":104},{"name":"abs","line":108},{"name":"val","line":109},{"name":"eq","line":115},{"name":"ne","line":119},{"name":"lt","line":123},{"name":"le","line":127},{"name":"gt","line":131},{"name":"ge","line":135}],"imports":[{"name":"base::testing","line":8},{"name":"base::benchmarking","line":9}],"terms":["euler","fpga","int4","bits","encode","clamped","decode","raw","min","max","range","validate","format","memory","ratio","fp32","val","sub","mul","neg","abs"]},{"id":"da861a10b1506958453665225648c17b428b023cf806648497c8ce58a4107405","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_forged_brace_negative.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","forged","brace","negative"]},{"id":"da869f75b0e66b078c82ff9989a637e2e81426f78d2ede00b74df9da126c18b5","sources":[{"repo":"ghashtag/t27","path":"specs/igla/evaluation/multi_lang_harness.t27","health":"ok","module":"IGLAMultiLangHarness"}],"description":"t27/specs/","symbols":[{"name":"LangTarget","line":13},{"name":"EvalResult","line":20},{"name":"evaluate","line":33},{"name":"compile_check","line":38},{"name":"syntax_check","line":43},{"name":"benchmark_latency","line":48}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["igla","evaluation","multi","lang","harness","iglamulti","target","eval","evaluate","compile","syntax","benchmark","latency"]},{"id":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","sources":[{"repo":"ghashtag/t27","path":"specs/jit/jit.t27","health":"ok","module":"jit"}],"description":"t27/specs/jit/jit.t27 Trinity JIT Compiler Compiles VSA operations to native machine code ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q JIT (Just-In-Time) compiler for VSA operations: - Compiles high-level VSA operations to native x86-64 machine code","symbols":[{"name":"PAGE_SIZE","line":31},{"name":"MAX_CODE_SIZE","line":34},{"name":"DEFAULT_DIMENSION","line":37},{"name":"MAX_DIMENSION","line":40},{"name":"JitVsaFn","line":48},{"name":"JitSimilarityFn","line":52},{"name":"JitResult","line":55},{"name":"JitCompiler","line":61},{"name":"Self","line":69},{"name":"init","line":72},{"name":"reset","line":81},{"name":"emit","line":90},{"name":"emit_slice","line":100},{"name":"emit_imm32","line":114},{"name":"bytes","line":115},{"name":"emit_imm64","line":120},{"name":"bytes","line":121},{"name":"push_rbp","line":130},{"name":"pop_rbp","line":135},{"name":"mov_rbp_rsp","line":140},{"name":"mov_rsp_rbp","line":145},{"name":"ret","line":150},{"name":"mov_rax_imm64","line":155},{"name":"call_rax","line":163},{"name":"xor_eax_eax","line":168},{"name":"inc_rbx","line":173},{"name":"compile_bind","line":184},{"name":"loop_start","line":207},{"name":"jge_offset","line":215},{"name":"loop_back_offset","line":235},{"name":"loop_end","line":239},{"name":"jge_rel","line":240},{"name":"jge_bytes","line":243},{"name":"compile_bundle","line":266},{"name":"loop_start","line":286},{"name":"jge_offset","line":294},{"name":"loop_back_offset","line":326},{"name":"loop_end","line":330},{"name":"jge_rel","line":331},{"name":"jge_bytes","line":333},{"name":"compile_dot_product","line":355},{"name":"loop_start","line":379},{"name":"jge_offset","line":387},{"name":"loop_back_offset","line":410},{"name":"loop_end","line":414},{"name":"jge_rel","line":415},{"name":"jge_bytes","line":417},{"name":"code_size","line":446},{"name":"code_ptr","line":451},{"name":"JitCache","line":462},{"name":"Self","line":476},{"name":"init","line":479},{"name":"reset","line":491},{"name":"get_bind","line":497},{"name":"get_bundle","line":517},{"name":"jit_bind","line":533},{"name":"func","line":534},{"name":"jit_bundle","line":545},{"name":"func","line":546},{"name":"compiler","line":561},{"name":"result","line":577},{"name":"bytes","line":586},{"name":"result","line":587},{"name":"result","line":595},{"name":"result","line":603},{"name":"result","line":628},{"name":"result","line":636},{"name":"result","line":644},{"name":"cache","line":662},{"name":"result","line":678},{"name":"result","line":688},{"name":"result","line":699},{"name":"compiler","line":712},{"name":"compiler","line":718},{"name":"cache","line":724},{"name":"bytes","line":780},{"name":"before","line":781},{"name":"after","line":783}],"imports":[{"name":"numeric::gf16","line":24}],"terms":["jit","page","size","max","default","dimension","vsa","similarity","compiler","self","init","reset","emit","slice","imm32","bytes","imm64","push","rbp","pop","mov","rsp","ret","rax","call","xor","eax","inc","rbx","compile","bind","loop","start","jge","offset","back","end","rel","bundle","dot","product","ptr","cache","get","func"]},{"id":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/07_tests_invariants_benches.t27","health":"ok","module":"tutorial-07-claims"}],"description":"07 — Tests, invariants and benches Lesson 7, and the reason this language exists rather than a header file. A spec carries its own claims: examples that must hold, properties that must always hold, and the operations worth measuring. All three are emitted into every target, so the same claim is checked in Zig, C and Rust alike.","symbols":[{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"TRINITY","line":14},{"name":"trit_add","line":16},{"name":"sum","line":17},{"name":"high","line":18},{"name":"low","line":19},{"name":"trit_mul","line":23}],"imports":[],"terms":["tutorial","invariants","benches","claims","trit","neg","zero","pos","sum","high","low","mul"]},{"id":"dae2f7625dc11f9fd8d878151c24c36e508397e0782405156da0b0bf634a7731","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow.t27","health":"ok","module":"String"}],"description":"t27/specs/","symbols":[{"name":"WorkflowStep","line":13},{"name":"Workflow","line":19}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","workflow","step"]},{"id":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_pool.t27","health":"ok","module":"TriComputePool"}],"description":"TRI-NET multi-executor pool split: share one reward pool across several GF executors in proportion to their VERIFIED work, so a mesh of nodes -- not one -- earns from a round. Mirrors tri_settle's discipline: floor division, so the sum of shares never EXCEEDS the pool (no over-issuance; the floor remainder is simply not minted). A node with zero verified work earns zero. \"Work\" is the summed GoldenFloat width of a node's verified receipts (wider GF op = more work).","symbols":[{"name":"total_work3","line":18},{"name":"pool_share","line":29},{"name":"pool_after_deposit","line":56},{"name":"payout_capped","line":67},{"name":"pool_after_payout","line":76},{"name":"balance_after_pool_settle","line":99}],"imports":[{"name":"base::types","line":9}],"terms":["net","compute","pool","total","work3","share","deposit","payout","capped","balance","settle"]},{"id":"db1da1f335f5455e94952bcbc2187cf3ae0aa0a68de09914b5105b69d18cb939","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_actor.t27","health":"ok","module":"PpoActor"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_INIT_LOG_STD","line":13},{"name":"MIN_LOG_STD","line":14},{"name":"MAX_LOG_STD","line":15},{"name":"ActorConfig","line":21},{"name":"ActionSpace","line":29},{"name":"PolicyOutput","line":33},{"name":"forward_discrete","line":43},{"name":"forward_continuous","line":48},{"name":"sample_action","line":53},{"name":"log_prob","line":58},{"name":"entropy","line":63}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["ppo","actor","default","init","log","std","min","max","config","action","space","policy","forward","discrete","continuous","sample","prob","entropy"]},{"id":"db4d7a7e1787579f9b9894309188ac030a830066da5ed24b098910001788ea93","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf4.t27","health":"ok","module":"triformat_tnf4"}],"description":"tnf4.t27 -- TNF4: Ternary Network Float, 4-bit class (bottom rung). Balanced-ternary exponent = 2 trits (3^2 = 9 offsets, exponent +-4, ~2.4 decades), 1-bit mantissa, NO regime decode. layout: [ sign(1) | E = 2 balanced-ternary trits | M = 1 bit ] Positioning (the 4-bit rung is unique): the format-to-beat here is NOT tekum but **BitNet-1.58 ternary WEIGHTS** {-1,0,+1} -- a weight quantizer, not a real","symbols":[{"name":"EXP_TRITS","line":18},{"name":"MANT_BITS","line":19},{"name":"EXP_OFFSET","line":20},{"name":"OFFSET_MAX","line":21},{"name":"exp_offset","line":24},{"name":"is_finite","line":28},{"name":"exp_values","line":32}],"imports":[{"name":"base::types","line":16}],"terms":["numeric","tnf4","triformat","exp","trits","mant","bits","offset","max","finite","values"]},{"id":"dbc09d850d87e9623513a9eedf77764f4b84cb299f4175c068eee278a0748a71","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/red.t27","health":"ok","module":"tool_tri_red"}],"description":"specs/tools/tri/red.t27 -- tool tri/red, the `tri red` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/red). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["red","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_tree.t27","health":"warn","module":"TernaryTree"}],"description":"t27/specs/isa/ternary_tree.t27 Ternary Tree Operations Specification Ring 084 - Tree algorithms on ternary-valued nodes 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"MAX_NODES","line":10},{"name":"TRIT_NEG","line":11},{"name":"TRIT_ZERO","line":12},{"name":"TRIT_POS","line":13},{"name":"NULL_IDX","line":14},{"name":"tree_init","line":20},{"name":"insert_left","line":32},{"name":"insert_right","line":40},{"name":"tree_depth","line":48},{"name":"node_count","line":65},{"name":"sum_values","line":78},{"name":"is_balanced","line":91}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","tree","max","nodes","trit","neg","zero","pos","null","idx","init","insert","left","right","depth","node","count","sum","values","balanced"]},{"id":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/olsr_routing.t27","health":"ok","module":"OlsrRouting"}],"description":"OLSR-style routing -- ultra-simplified for T27. Neighbor entries are u32-packed [id:8][quality:8][last_seen:16]; the 4-slot neighbor table travels as a [u32; 4] array parameter (read paths) while write paths return the UPDATED ENTRY plus a slot decision, so every function stays scalar-valued and lowers to all backends. (The original wave-era file packed four entries into one u32 with 256-bit masks and","symbols":[{"name":"MAX_NEIGHBORS","line":13},{"name":"VALID_TIMEOUT","line":14},{"name":"NO_NEIGHBOR","line":15},{"name":"NO_SLOT","line":16},{"name":"create_neighbor","line":20},{"name":"get_id","line":26},{"name":"get_quality","line":30},{"name":"get_last_seen","line":34},{"name":"is_valid","line":38},{"name":"get_id_at","line":44},{"name":"find_index","line":48},{"name":"slot_for_update","line":58},{"name":"best_of_two","line":71},{"name":"get_best_neighbor","line":79},{"name":"mask_if_id","line":85},{"name":"get_second_best","line":93},{"name":"select_mprs","line":100},{"name":"one_if_present","line":106},{"name":"count_neighbors","line":114}],"imports":[{"name":"base::types","line":11}],"terms":["net","olsr","routing","max","neighbors","valid","timeout","neighbor","slot","create","get","quality","seen","find","index","best","two","mask","second","select","mprs","one","present","count"]},{"id":"dc4e3d6c76cac57a36074da8a9d6aac8df1f1c55bb68a593c2cadf94c94351b1","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27","health":"ok","module":"cron_999_multibots_telegraf_video_task_store_L156"}],"description":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27 -- cron timer/999-multibots-telegraf/video-task-store-L156 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/video-task-store-L156). The schedule was read from 999-multibots-telegraf:src/services/video-task-store.ts#L156. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","video","store","l156","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f","sources":[{"repo":"ghashtag/t27","path":"specs/memory/notebooklm.t27","health":"ok","module":"NotebookLM"}],"description":"specs/memory/notebooklm.t27 NotebookLM Integration Specification Ring-071 - RAG-Backed Semantic Memory for t27 Defines interface to Google NotebookLM for persistent session memory","symbols":[{"name":"VERSION","line":13},{"name":"DEFAULT_TIMEOUT_MS","line":14},{"name":"MAX_SOURCE_SIZE","line":15},{"name":"DEFAULT_NOTEBOOK_NAME","line":16},{"name":"AUTH_STATE_UNAUTHENTICATED","line":18},{"name":"AUTH_STATE_AUTHENTICATED","line":19},{"name":"AUTH_STATE_EXPIRED","line":20},{"name":"AUTH_STATE_REFRESHING","line":21},{"name":"CONNECTION_STATUS_DISCONNECTED","line":23},{"name":"CONNECTION_STATUS_CONNECTING","line":24},{"name":"CONNECTION_STATUS_CONNECTED","line":25},{"name":"CONNECTION_STATUS_ERROR","line":26},{"name":"ErrorCode","line":32},{"name":"AuthTokens","line":50},{"name":"NotebookLMConfig","line":57},{"name":"NotebookLMClient","line":68},{"name":"Notebook","line":79},{"name":"Source","line":87},{"name":"QueryResult","line":100},{"name":"SessionContext","line":113},{"name":"WrapupSummary","line":129},{"name":"MemoryEntry","line":138},{"name":"client_new","line":153},{"name":"client_authenticate","line":163},{"name":"client_is_authenticated","line":171},{"name":"client_close","line":177},{"name":"notebook_create","line":188},{"name":"notebook_list","line":195},{"name":"notebook_get","line":202},{"name":"notebook_find_by_name","line":209},{"name":"notebook_delete","line":216},{"name":"source_upload_text","line":226},{"name":"source_upload_file","line":233},{"name":"source_list","line":240},{"name":"source_delete","line":247},{"name":"notebook_query","line":257},{"name":"session_extract_from_trinity","line":268},{"name":"wrapup_format_summary","line":279},{"name":"wrapup_upload","line":292},{"name":"client","line":308},{"name":"auth_result","line":321},{"name":"close_result","line":322},{"name":"is_auth","line":328},{"name":"wrapup","line":378},{"name":"wrapup","line":416},{"name":"summary","line":456},{"name":"decisions","line":457},{"name":"files","line":458},{"name":"steps","line":459}],"imports":[],"terms":["memory","notebooklm","notebook","default","timeout","max","size","auth","state","unauthenticated","authenticated","expired","refreshing","connection","status","disconnected","connecting","connected","tokens","lmconfig","lmclient","query","session","wrapup","summary","entry","client","authenticate","close","create","list","get","find","delete","upload","text","extract","format","decisions","steps"]},{"id":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/compression_engine.t27","health":"warn","module":"compression_engine"}],"description":"Compression Engine - simple data compression for efficiency Enables bandwidth optimization through data compression","symbols":[{"name":"MAX_BLOCKS","line":7},{"name":"BLOCK_SIZE","line":8},{"name":"COMPRESSION_THRESHOLD","line":9},{"name":"DICTIONARY_SIZE","line":10},{"name":"create_block_info","line":13},{"name":"get_original_size","line":20},{"name":"get_compressed_size","line":24},{"name":"get_compression_method","line":28},{"name":"get_compression_quality","line":32},{"name":"METHOD_NONE","line":37},{"name":"METHOD_RLE","line":38},{"name":"METHOD_DICTIONARY","line":39},{"name":"METHOD_DELTA","line":40},{"name":"calculate_compression_ratio","line":43},{"name":"compress_rle","line":52},{"name":"decompress_rle","line":82},{"name":"compress_dictionary","line":103},{"name":"decompress_dictionary","line":138},{"name":"compress_delta","line":147},{"name":"decompress_delta","line":168},{"name":"choose_compression_method","line":199},{"name":"compress_block","line":229},{"name":"decompress_block","line":255},{"name":"calculate_total_savings","line":268},{"name":"update_dictionary","line":287},{"name":"find_pattern","line":297},{"name":"calculate_compression_speed","line":313}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","compression","engine","max","blocks","block","size","threshold","dictionary","create","info","get","original","compressed","method","quality","rle","delta","calculate","ratio","compress","decompress","choose","total","savings","find","pattern","speed"]},{"id":"dc6abda2d082a9007b050ad51b10ae119790ceecbe26b23107a08d024bf0ea29","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/huber_loss.t27","health":"ok","module":"HuberLoss"}],"description":"t27/specs/","symbols":[{"name":"HuberLossConfig","line":13},{"name":"forward","line":22}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","huber","config","forward"]},{"id":"dc791cba69c3ed6cf8357de50ee20f87589220ed8c2a7052b3964853fedae1e6","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorbp2.t27","health":"ok","module":"GftXorBp2"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":108},{"name":"relu_prime","line":114},{"name":"scale_q","line":124},{"name":"on_comb","line":133}],"imports":[],"terms":["ternary","gft","xorbp2","xor","bp2","magadd","magsub","sadd","neg","magmul","smul","relu","prime","scale","comb"]},{"id":"dcaf41b89d5e0514681050df25be2054621764eb18a008d3e0d18d3dbbe99f86","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_03_multiline_array.t27","health":"ok","module":null}],"description":"NEGATIVE fixture: an array literal opening a multi-line value. 10 false positives came from the opening line being read as a damaged type side.","symbols":[{"name":"Table","line":3},{"name":"DATA","line":6}],"imports":[],"terms":["bootstrap","fixtures","damage","negative","neg","multiline","array","table","data"]},{"id":"dcb396f87eac603c6dcffe3d1f9b2f3e876747db0ca17f4d784326d77ee5ecaa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base32.t27","health":"ok","module":"TriBase32"}],"description":"t27/specs/","symbols":[{"name":"Base32","line":13},{"name":"standard","line":23},{"name":"encode","line":28},{"name":"decode","line":33}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","base32","standard","encode","decode"]},{"id":"dcb5de4bdcaaac334bf386d0ee8c2badc68a3debababb033eb4a6df16ff6d6ad","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_control_flow.t27","health":"ok","module":"TernaryControlFlow"}],"description":"t27/specs/isa/ternary_control_flow.t27 Ternary Control Flow Specification Ring 090 - Control flow operations for ternary architecture Conditional jumps, branches, and call/return","symbols":[{"name":"TRIT_NEG","line":16},{"name":"TRIT_ZERO","line":17},{"name":"TRIT_POS","line":18},{"name":"COND_EQ","line":21},{"name":"COND_NE","line":22},{"name":"COND_POS","line":23},{"name":"COND_NEG","line":24},{"name":"COND_NZ","line":25},{"name":"COND_NC","line":26},{"name":"PRED_TAKEN","line":29},{"name":"PRED_NOT_TAKEN","line":30},{"name":"PRED_NONE","line":31},{"name":"pc_read","line":39},{"name":"pc_write","line":46},{"name":"pc_relative","line":52},{"name":"current_pc","line":53},{"name":"branch_cond","line":64},{"name":"branch_if","line":91},{"name":"branch_if_not","line":97},{"name":"jump","line":107},{"name":"jump_relative","line":113},{"name":"jump_link","line":119},{"name":"jump_link_relative","line":126},{"name":"ret","line":137},{"name":"call","line":147},{"name":"return_addr","line":148},{"name":"ret_pop","line":168},{"name":"return_addr","line":173},{"name":"compare","line":188},{"name":"compare_and_branch","line":200},{"name":"result","line":201},{"name":"table_branch","line":211}],"imports":[{"name":"base::types","line":9}],"terms":["isa","ternary","control","flow","trit","neg","zero","pos","cond","pred","taken","read","write","relative","branch","jump","link","ret","call","addr","pop","compare","table"]},{"id":"dd1cf7b176823cedbc2f6d6549e0455812b5c44a52213cd758a969549762ff89","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/dft_tb.t27","health":"ok","module":"DFT_Testbench"}],"description":"t27/specs/fpga/testbench/dft_tb.t27 Design-for-Test Testbench Tests scan chain insertion, BIST, and JTAG interface","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SCAN_CHAIN_LENGTH","line":11},{"name":"NUM_SCAN_CHAINS","line":12},{"name":"BIST_PATTERN_LENGTH","line":13},{"name":"tick","line":32},{"name":"reset","line":37},{"name":"shift_scan_chain","line":45},{"name":"run_bist","line":59},{"name":"jtag_reset","line":74},{"name":"on_comb","line":143}],"imports":[{"name":"fpga::dft::DFT","line":8}],"terms":["fpga","testbench","dft","clk","period","scan","chain","length","num","chains","bist","pattern","tick","reset","shift","jtag","comb"]},{"id":"dd4d3fb85955d4bb7423cf637941c02736855369320dd840082a8aed792302eb","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/tooling.t27","health":"ok","module":"docs_chapter_tooling"}],"description":"specs/docs/chapters/tooling.t27 -- chapter 6 of the system documentation, docs/tooling Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"DOCUMENT","line":14},{"name":"ORDER","line":16},{"name":"TITLE","line":17},{"name":"SOURCES","line":20},{"name":"SECTIONS","line":22},{"name":"DIAGRAM","line":25},{"name":"TABLE","line":27},{"name":"BODY_EN","line":29},{"name":"ENABLED","line":30}],"imports":[],"terms":["docs","chapters","tooling","chapter","kind","document","order","title","sources","sections","diagram","table","enabled"]},{"id":"dd87dea212ee6b002f1beb0da611d8599e23f4c3ea31a1460404131532feac0c","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/catalog.world-scan.t27","health":"ok","module":"trinity_capability_catalog_world_scan"}],"description":"specs/trinity/capabilities/catalog.world-scan.t27 -- capability trinity/catalog.world-scan: The GitHub scan that keeps the catalog current (scripts/discover-t27-worlds.mjs, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","catalog","world","scan","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"ddade525fb5f57aa035780cb877afcc013077bbdf07f5ff155541fbaeb1f2176","sources":[{"repo":"ghashtag/t27","path":"specs/isa/tri27_bytecode.t27","health":"ok","module":"Tri27Bytecode"}],"description":"specs/isa/tri27_bytecode.t27 -- the .tbin container as the pinned Trinity loader reads it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer has one loader, src/tri27/emu/loader.zig at 976df517, and two assemblers that write two different containers; three documents describe a third and a fourth. This file states the container the loader accepts and every rule by which it rejects a file -- truncated, wrong magic, unsupported version, unknown section, code that does not fit memory, no code at all -- as functions the C","symbols":[{"name":"KIND","line":15},{"name":"ID","line":16},{"name":"NAME","line":17},{"name":"CONSUMER_REPO","line":18},{"name":"PINNED_REVISION","line":19},{"name":"OWNER_MODULE","line":20},{"name":"OWNER_LINES","line":21},{"name":"WRITER_MODULE","line":22},{"name":"WRITER_LINES","line":23},{"name":"MAGIC","line":25},{"name":"MAGIC_HEX","line":26},{"name":"MAGIC_BYTES","line":27},{"name":"MAGIC_TEXT","line":28},{"name":"VERSION","line":29},{"name":"HEADER_BYTES","line":30},{"name":"HEADER_LAYOUT","line":31},{"name":"SECTION_CODE","line":33},{"name":"SECTION_CONSTANTS","line":34},{"name":"SECTION_DATA","line":35},{"name":"SECTION_BSS","line":36},{"name":"SECTION_NAMES","line":37},{"name":"CODE_HEADER_BYTES","line":38},{"name":"CODE_HEADER_LAYOUT","line":39},{"name":"CONSTANTS_HEADER_BYTES","line":40},{"name":"CONSTANTS_SKIP","line":41},{"name":"CONSTANTS_LAYOUT","line":42},{"name":"DATA_HEADER_BYTES","line":43},{"name":"DATA_LAYOUT","line":44},{"name":"BSS_HEADER_BYTES","line":45},{"name":"BSS_LAYOUT","line":46},{"name":"CODE_START_WORD","line":47},{"name":"CODE_PLACEMENT","line":48},{"name":"LOAD_PC","line":50},{"name":"LOAD_SP","line":51},{"name":"LOAD_FP","line":52},{"name":"MEMORY_WORDS","line":53},{"name":"ENTRY_RULE","line":54},{"name":"LOAD_ERROR_NAMES","line":56},{"name":"LOAD_ERROR_RETURNED","line":57},{"name":"LOAD_OK","line":58},{"name":"LOAD_TRUNCATED","line":59},{"name":"LOAD_INVALID_MAGIC","line":60},{"name":"LOAD_INVALID_VERSION","line":61},{"name":"LOAD_INVALID_SECTION","line":62},{"name":"LOAD_DATA_TOO_LARGE","line":63},{"name":"LOAD_SECTION_MISSING","line":64},{"name":"LOAD_STATUS_NAMES","line":65},{"name":"REJECTION_ORDER","line":66},{"name":"WRITER_HEADER_BYTES","line":68},{"name":"WRITER_HEADER","line":69},{"name":"WRITER_HEADER_RULE","line":70},{"name":"LOADER_NATIVE_HEADER_BYTES","line":71},{"name":"LOADER_NATIVE_RULE","line":72},{"name":"FINDING_COUNT","line":74},{"name":"FINDINGS","line":75},{"name":"ENABLED","line":76},{"name":"magic_word","line":80},{"name":"magic_ok","line":84},{"name":"version_ok","line":88},{"name":"header_status","line":92},{"name":"section_kind_ok","line":99},{"name":"section_header_bytes","line":107},{"name":"fits_file","line":115},{"name":"size_field","line":119},{"name":"code_fits_memory","line":123},{"name":"code_words","line":127},{"name":"code_word_index","line":131},{"name":"constants_payload","line":135},{"name":"constants_skip_after_id","line":139},{"name":"data_word_index","line":143},{"name":"data_fits_memory","line":147},{"name":"code_present","line":151}],"imports":[],"terms":["isa","tri27","bytecode","tri27bytecode","kind","consumer","pinned","revision","owner","writer","magic","hex","bytes","text","header","layout","section","constants","data","bss","skip","start","word","placement","load","memory","words","entry","rule","returned","truncated","invalid","too","large","missing","status","rejection","order","loader","native","finding","count","findings","enabled","fits","size","field","index","payload","present"]},{"id":"ddb3121f389799300e03255cf947acad86a88631afd3d93807a0519c498a1996","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/functions.t27","health":"ok","module":"trinity_matrix_functions"}],"description":"trinity_matrix/functions.t27 -- feature functions: parameters, early return, recursion, calls between functions.","symbols":[{"name":"factorial","line":5},{"name":"clamp","line":10},{"name":"twice_clamped","line":16}],"imports":[],"terms":["bootstrap","fixtures","matrix","functions","factorial","clamp","twice","clamped"]},{"id":"ddc85831a627462ba15d3ffa3a037d32cecca2135e254541c38c90c26d06f309","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_reproducibility.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","generator","reproducibility"]},{"id":"de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_tests.t27","health":"ok","module":"MeshIntegrationTests"}],"description":"Integration tests for mesh stack modules Tests interactions between wire, routing, hello, and transport","symbols":[{"name":"VERSION","line":10},{"name":"KIND_DATA","line":11},{"name":"header_byte","line":13},{"name":"MESH_NET_A","line":28},{"name":"MESH_NET_B","line":29},{"name":"MESH_NET_C","line":30},{"name":"mesh_ip","line":32},{"name":"ST_IDLE","line":38},{"name":"ST_TX_WAIT","line":39}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","integration","kind","data","header","byte","net","idle","wait"]},{"id":"de48a64950df41b2344a8bed9ad969eb6776456406b9c68c469cba8c13b3ac7e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/particles.t27","health":"ok","module":"tool_trinity_tri_particles"}],"description":"specs/tools/trinity/tri/particles.t27 -- tool gHashTag/trinity:tri/particles, the `tri particles` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/particles`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["particles","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"de4ad2f0f5e79b5fee41fb1eb38ddfb621d640a46ac70d52f551376072b13445","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/client.t27","health":"ok","module":"lsp-client"}],"description":"lsp/client.t27 — LSP Client Configuration and Capabilities Client-side protocol, capabilities, and configuration management","symbols":[{"name":"CLIENT_NAME","line":21},{"name":"CLIENT_VERSION","line":24},{"name":"MAX_MESSAGE_SIZE","line":27},{"name":"REQUEST_TIMEOUT_MS","line":30},{"name":"MAX_CONCURRENT_REQUESTS","line":33},{"name":"ClientCapabilities","line":40},{"name":"TextDocumentSyncCapability","line":60},{"name":"CompletionCapability","line":67},{"name":"CompletionItemCapability","line":75},{"name":"CompletionItemKindCapability","line":88},{"name":"CompletionItemTagCapability","line":93},{"name":"InsertTextModeCapability","line":98},{"name":"DiagnosticCapability","line":103},{"name":"DiagnosticTagCapability","line":110},{"name":"InitializationOptions","line":115},{"name":"TraceValue","line":126},{"name":"WorkspaceFolder","line":133},{"name":"TextDocumentSyncOptions","line":139},{"name":"SaveOptions","line":148},{"name":"ConfigurationItem","line":153},{"name":"ClientConfiguration","line":159},{"name":"WorkDoneProgress","line":166},{"name":"ProgressValue","line":172},{"name":"WorkDoneProgressBegin","line":179},{"name":"WorkDoneProgressReport","line":187},{"name":"WorkDoneProgressEnd","line":194},{"name":"LogTraceParams","line":199},{"name":"client_capabilities_default","line":209},{"name":"init_options_create","line":254},{"name":"text_document_sync_options_create","line":267},{"name":"work_done_progress_begin_create","line":278},{"name":"work_done_progress_report_create","line":288},{"name":"work_done_progress_end_create","line":297},{"name":"log_trace_create","line":304},{"name":"trace_is_enabled","line":312},{"name":"trace_to_string","line":317},{"name":"completion_has_snippet_support","line":326},{"name":"client_has_workspace_folders","line":331},{"name":"caps","line":340},{"name":"init","line":346},{"name":"opts","line":351},{"name":"progress","line":357},{"name":"report","line":362},{"name":"end","line":368},{"name":"caps","line":383}],"imports":[],"terms":["lsp","client","max","size","request","timeout","concurrent","requests","capabilities","text","document","sync","capability","completion","item","kind","tag","insert","mode","diagnostic","initialization","options","trace","workspace","folder","save","configuration","work","done","progress","begin","report","end","log","params","default","init","create","enabled","snippet","support","folders","caps","opts"]},{"id":"de753fa421b4280246abdc40b8201a89945982050f86029f11c736f77664c2a1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_call_signaling.t27","health":"ok","module":"MeshCallSignaling"}],"description":"Signed local call invitation policy. UDP sockets, JSON encoding, and UI prompts are adapter responsibilities. phi^2 + phi^-2 = 3","symbols":[{"name":"INVITE_VERSION","line":8},{"name":"MEDIA_PORT","line":9},{"name":"SIGNALING_PORT","line":10},{"name":"INVITE_TTL_SECONDS","line":11},{"name":"invite_is_fresh","line":13},{"name":"invite_may_ring","line":20}],"imports":[{"name":"base::types","line":6}],"terms":["net","mesh","call","signaling","invite","media","port","ttl","seconds","fresh","may","ring"]},{"id":"de8489f65be8b1db66b2c9bf3abe96643c580d39e4b856cd6a9a3511e404975d","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/gates.t27","health":"ok","module":"tool_tri_gates"}],"description":"specs/tools/tri/gates.t27 -- tool tri/gates, the `tri gates` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/gates). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["gates","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"deb1ec9d99f16c1182bdc602e9a74db3a5c82f58f125c502e7a9c50a15820cd6","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/training.targets.t27","health":"ok","module":"trinity_capability_training_targets"}],"description":"specs/trinity/capabilities/training.targets.t27 -- capability trinity/training.targets: Kaggle and WASM training targets (targets/, kaggle/, train-types/, train_cifar10 One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","training","targets","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","acceptance","evidence","work","package","note","enabled"]},{"id":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/phi_gain_freedom.t27","health":"ok","module":"IglaRacePhiGainFreedom"}],"description":"t27/specs/igla/race/phi_gain_freedom.t27 What the phi alphabet gives up for the multiplier, stated as a count. WHY THIS EXISTS. T97 measured the two alphabets at equal area and stated its own standing limit: \"This compares AREA at equal structure. It does NOT compare ACCURACY... An area comparison at unequal accuracy is not a verdict.\"","symbols":[{"name":"UNIT_DOF_PER_LAYER","line":60},{"name":"PHI_DOF_PER_LAYER","line":61},{"name":"PHI_MILLI","line":64},{"name":"SQRT_PHI_MILLI","line":65},{"name":"SQRT_TWO_MILLI","line":66},{"name":"ONE_MILLI","line":67},{"name":"DENSITY_MILLI","line":70},{"name":"ABSORB_PPM_AT_512","line":73},{"name":"ABSORB_PPM_AT_64","line":74},{"name":"ABSORB_PPM_AT_4","line":75},{"name":"ABSORB_PPM_AT_1","line":76},{"name":"SNAP_ERROR_PPM","line":79},{"name":"unit_dof","line":82},{"name":"phi_dof","line":86},{"name":"absorb_ppm","line":94},{"name":"absorption_suffices","line":100},{"name":"on_comb","line":105}],"imports":[{"name":"base::types","line":57}],"terms":["igla","race","phi","gain","freedom","unit","dof","per","layer","milli","sqrt","two","one","density","absorb","ppm","snap","absorption","suffices","comb"]},{"id":"dedc154ce53debd9561ed0ed931d0c6c394dca5034b8149e179283ae8755a30b","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_array_then_when.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","array"]},{"id":"dee238e993a4877edf244c9e22dcc8550f964af916beb5e098a9b7fd90b318b4","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/scalars.t27","health":"ok","module":"trinity_matrix_scalars"}],"description":"trinity_matrix/scalars.t27 -- feature scalars: integer and boolean constants, arithmetic, comparison, shifts and masks, as the Trinity headless profile writes them (S02).","symbols":[{"name":"LANES","line":6},{"name":"WORD_BITS","line":7},{"name":"BIG","line":8},{"name":"NEGATIVE","line":9},{"name":"ENABLED","line":10},{"name":"add_u32","line":12},{"name":"mask_low","line":16},{"name":"abs_i32","line":20}],"imports":[],"terms":["bootstrap","fixtures","matrix","scalars","lanes","word","bits","big","negative","enabled","u32","mask","low","abs","i32"]},{"id":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/purkinje_thermal_gate.t27","health":"ok","module":"purkinje-thermal-gate"}],"description":"purkinje_thermal_gate.t27 — Purkinje Thermal Gate Thermally-gated activation inspired by Purkinje neural dynamics","symbols":[{"name":"PTG_OPCODE","line":12},{"name":"TEMP_MIN_C","line":14},{"name":"TEMP_MAX_C","line":15},{"name":"TEMP_NOMINAL_C","line":16},{"name":"TEMP_THRESHOLD_LOW_C","line":18},{"name":"TEMP_THRESHOLD_HIGH_C","line":19},{"name":"TEMP_CRITICAL_C","line":20},{"name":"TEMP_HYSTERESIS_C","line":22},{"name":"TEMP_SETTLING_MS","line":23},{"name":"GATE_STATE_CLOSED","line":25},{"name":"GATE_STATE_OPEN","line":26},{"name":"GATE_STATE_THROTTLING","line":27},{"name":"GATE_STATE_ERROR","line":28},{"name":"THROTTLE_LEVEL_NONE","line":30},{"name":"THROTTLE_LEVEL_LOW","line":31},{"name":"THROTTLE_LEVEL_MED","line":32},{"name":"THROTTLE_LEVEL_HIGH","line":33},{"name":"THROTTLE_LEVEL_MAX","line":34},{"name":"GateState","line":40},{"name":"ThrottleLevel","line":47},{"name":"ThermalState","line":54},{"name":"GateConfig","line":61},{"name":"GateStatus","line":69},{"name":"ptg_config_init","line":83},{"name":"ptg_config_strict","line":95},{"name":"ptg_config_permissive","line":107},{"name":"ptg_config_manual","line":119},{"name":"ptg_temp_valid","line":135},{"name":"ptg_temp_critical","line":141},{"name":"ptg_temp_high","line":147},{"name":"ptg_temp_low","line":153},{"name":"ptg_temp_in_hysteresis","line":159},{"name":"ptg_thermal_state_init","line":173},{"name":"ptg_gate_state_from_temp","line":184},{"name":"ptg_throttle_from_temp","line":200},{"name":"ptg_thermal_state_update","line":216},{"name":"ptg_gate_status_init","line":240},{"name":"ptg_gate_status_open","line":252},{"name":"ptg_gate_status_close","line":264},{"name":"ptg_gate_status_throttle","line":276},{"name":"ptg_gate_status_error","line":288},{"name":"ptg_gate_status_update_temp","line":300},{"name":"ptg_gate_status_increment_cycle","line":312},{"name":"encode_ptg_cmd","line":328},{"name":"op_field","line":330},{"name":"temp_field","line":331},{"name":"thresh_field","line":332},{"name":"decode_ptg_cmd","line":338},{"name":"opcode","line":339},{"name":"temp_u8","line":340},{"name":"temp_c","line":341},{"name":"threshold","line":342}],"imports":[],"terms":["euler","fpga","purkinje","thermal","gate","ptg","opcode","temp","min","max","nominal","threshold","low","high","critical","hysteresis","settling","state","closed","open","throttling","throttle","level","med","config","status","init","strict","permissive","manual","valid","close","increment","cycle","encode","cmd","field","thresh","decode"]},{"id":"dee8a1c4e2ac49ff01ec4228a43bdcb4364d4e68fa2d1d439b27c2d5bac584a7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/mod_structure.t27","health":"ok","module":"compiler-mod-structure"}],"description":"compiler/mod_structure.t27 — Module Structure and Ring Validation Trinity S³AI — Spec-First Architecture","symbols":[{"name":"PHI","line":14},{"name":"PHI_INV","line":15},{"name":"TRINITY","line":16},{"name":"BASE_MODULE_COUNT","line":19},{"name":"ModuleCategory","line":26},{"name":"ModuleEntry","line":34},{"name":"get_module_list","line":42},{"name":"validate_ring_number","line":94},{"name":"modules","line":104},{"name":"phi_sq","line":120},{"name":"phi_inv_sq","line":121},{"name":"on_comb","line":137}],"imports":[{"name":"math::sacred_physics","line":8}],"terms":["compiler","mod","structure","phi","inv","base","count","category","entry","get","list","validate","ring","modules","comb"]},{"id":"defe6bece570cfb3cdccfccefea6488172e7612f3860597b38f54c4302e0b7e7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf10.t27","health":"ok","module":"triformat-gf10"}],"description":"gf10.t27 -- GoldenFloat10 Encode/Decode GF10: 10-bit floating point with 1 sign + 3 exponent + 6 mantissa Bit layout: [S(1) E(3) M(6)] = [9:9][8:6][5:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).","symbols":[{"name":"TOTAL_BITS","line":15},{"name":"SIGN_BITS","line":16},{"name":"EXP_BITS","line":17},{"name":"MANT_BITS","line":18},{"name":"SIGN_SHIFT","line":20},{"name":"EXP_SHIFT","line":21},{"name":"MANT_SHIFT","line":22},{"name":"BIAS","line":24},{"name":"EXP_MAX","line":25},{"name":"EM_RATIO","line":28},{"name":"PHI_DIST","line":29},{"name":"PHI_BIAS_STATUS","line":31}],"imports":[],"terms":["numeric","gf10","triformat","total","bits","sign","exp","mant","shift","bias","max","ratio","phi","dist","status"]},{"id":"df15f1fbd549cad6bc01b0599d4765ea3d8be69eb2759ef112ca8c94c101168d","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/experience_save.t27","health":"ok","module":"ExperienceSave"}],"description":"t27/specs/pipeline/experience_save.t27 Experience Save Command Specification Ring 028 — tri experience save CLI command 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"VERDICT_PASS","line":10},{"name":"VERDICT_FAIL","line":11},{"name":"VERDICT_SKIP","line":12},{"name":"MAX_SKILL_NAME","line":13},{"name":"MAX_NOTES","line":14},{"name":"ExperienceRecord","line":17},{"name":"save_experience","line":26},{"name":"is_pass","line":37},{"name":"is_fail","line":42},{"name":"verdict_to_code","line":47},{"name":"compare_with_previous","line":52}],"imports":[{"name":"base::types","line":8}],"terms":["pipeline","experience","save","verdict","pass","fail","skip","max","skill","notes","record","compare","previous"]},{"id":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/top_tb.t27","health":"ok","module":"Top_Level_Testbench"}],"description":"t27/specs/fpga/testbench/top_tb.t27 Top-Level FPGA Testbench Specification Tests complete FPGA system with UART, SPI, MAC, and bridge","symbols":[{"name":"TIMESCALE","line":18},{"name":"CLK_PERIOD","line":19},{"name":"SIM_TIMEOUT","line":20},{"name":"PING_CMD","line":23},{"name":"PONG_RESP","line":24},{"name":"STATUS_CMD","line":25},{"name":"generate_clock","line":62},{"name":"wait_cycles","line":69},{"name":"assert_pass","line":79},{"name":"test_ping_pong","line":91},{"name":"test_led_heartbeat","line":100},{"name":"test_spi_loopback","line":107},{"name":"test_mac_operation","line":116},{"name":"run_tests","line":128}],"imports":[{"name":"base::types","line":9},{"name":"fpga::uart::UART_Bridge","line":10},{"name":"fpga::spi::SPI_Master","line":11},{"name":"fpga::mac::ZeroDSP_MAC","line":12},{"name":"fpga::bridge::FPGA_Bridge","line":13}],"terms":["fpga","testbench","top","level","timescale","clk","period","sim","timeout","ping","cmd","pong","resp","status","generate","clock","wait","cycles","assert","pass","led","heartbeat","spi","loopback","mac","operation"]},{"id":"df74b541158c71d5463152e377813a5491def4207dbffe97f6fd78b23cf6d4d9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/corpus_wide_pack_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","corpus","wide","pack","audit"]},{"id":"e03bddbb9708c94b3c44f5a3b2aef4ac440d53c9328c75ae8b6c37fb9a21959f","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/omega.t27","health":"ok","module":"tool_trinity_tri_omega"}],"description":"specs/tools/trinity/tri/omega.t27 -- tool gHashTag/trinity:tri/omega, the `tri omega` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/omega`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["omega","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"e03e0b8b71566e3cce95146ec4825f3421b844c504f10a8ca0e755db14540e53","sources":[{"repo":"ghashtag/t27","path":"specs/functions/analytics-skills-detect.t27","health":"ok","module":"fn_analytics_skills_detect"}],"description":"specs/functions/analytics-skills-detect.t27 -- function analytics-skills-detect (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=analytics-skills-detect). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/skillDetector.ts#L30 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","analytics","skills","detect","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"e090c900774d21e520cd15746d7d2a06e1de22889cfe40677f68c9673e667622","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/cache_w/tiny_lfu.t27","health":"warn","module":null}],"description":"W-TinyLFU Cache — TTT Dogfood Phase 3 Window-TinyLFU admission Test case: cache_w_tiny_lfu","symbols":[],"imports":[],"terms":["fpga","tri27","cache","tiny","lfu"]},{"id":"e0932fe334d920e6591445980b99b8b9bebb845756394199bd209c13e13d0d15","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/seals.t27","health":"ok","module":"tool_tri_seals"}],"description":"specs/tools/tri/seals.t27 -- tool tri/seals, the `tri seals` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/seals). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["seals","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"e0af68eb26c5b4f8f5ac5e45aa859a28337cce715e90122020fed881b81a9afd","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/railway-mcp-server.t27","health":"ok","module":"tool_mcp_railway_mcp_server"}],"description":"specs/tools/mcp/railway-mcp-server.t27 -- tool mcp/railway-mcp-server, MCP server \"railway-mcp-server\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/railway-mcp-server). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","railway","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"e0c9d0e21f7bbd9253fd5acdae3f3581ccc2cb38aa284315a98a2397e3ec1543","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/lib.trinity.t27","health":"ok","module":"trinity_capability_lib_trinity"}],"description":"specs/trinity/capabilities/lib.trinity.t27 -- capability trinity/lib.trinity: The trinity library facade: SDK, science, sparse, JIT and the VSA VM over the pi One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","lib","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/pipeline.t27","health":"ok","module":"Pipeline"}],"description":"","symbols":[{"name":"PipelineStage","line":11},{"name":"PipelineConfig","line":20},{"name":"PipelineResult","line":28},{"name":"default_pipeline_config","line":42},{"name":"pipeline_result_ok","line":52},{"name":"pipeline_result_fail","line":68},{"name":"stage_name","line":84},{"name":"is_full_pipeline","line":94},{"name":"total_optimizations","line":98}],"imports":[{"name":"compiler::lexer","line":3},{"name":"compiler::parser","line":4},{"name":"compiler::typechecker","line":5},{"name":"compiler::optimizer","line":6},{"name":"compiler::stdlib","line":7},{"name":"compiler::diagnostics","line":8},{"name":"compiler::linker","line":9}],"terms":["compiler","pipeline","stage","config","default","fail","full","total","optimizations"]},{"id":"e0db74fb04b07ce67ea824027d57b1d9da9853c9b36b609ef8cf54593b7d934d","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/phi_accumulator_growth.t27","health":"ok","module":"IglaRacePhiAccumulatorGrowth"}],"description":"t27/specs/igla/race/phi_accumulator_growth.t27 How wide must a Z[phi] accumulator be? Fan-in and depth answer differently. WHY THIS EXISTS. T93 measured the composed ternary node and stated its own limit in the same breath: \"The node is verified for a SINGLE MAC step. Fan-in, depth, and the accumulator width needed to keep (a,b) exact over many steps are NOT","symbols":[{"name":"ACT_BITS","line":55},{"name":"ACT_MAX","line":56},{"name":"FANIN_8_MAX","line":59},{"name":"FANIN_32_MAX","line":60},{"name":"FANIN_128_MAX","line":61},{"name":"FANIN_512_MAX","line":62},{"name":"FANIN_8_BITS","line":64},{"name":"FANIN_32_BITS","line":65},{"name":"FANIN_128_BITS","line":66},{"name":"FANIN_512_BITS","line":67},{"name":"FIB_5","line":70},{"name":"FIB_10","line":71},{"name":"FIB_20","line":72},{"name":"FIB_30","line":73},{"name":"FIB_29","line":74},{"name":"FIB_28","line":75},{"name":"DEPTH_5_BITS","line":77},{"name":"DEPTH_10_BITS","line":78},{"name":"DEPTH_20_BITS","line":79},{"name":"DEPTH_30_BITS","line":80},{"name":"contrib_a","line":85},{"name":"contrib_b","line":89},{"name":"fanin_worst_case","line":98},{"name":"step_a","line":104},{"name":"step_b","line":108},{"name":"depth2_a","line":112},{"name":"depth2_b","line":113},{"name":"depth3_a","line":114},{"name":"depth3_b","line":115},{"name":"depth4_a","line":116},{"name":"depth4_b","line":117},{"name":"depth5_a","line":118},{"name":"depth5_b","line":119},{"name":"fanin_bits_gained_by_doubling","line":123},{"name":"layers_costing_ten_bits","line":129},{"name":"on_comb","line":134}],"imports":[{"name":"base::types","line":52}],"terms":["igla","race","phi","accumulator","growth","act","bits","max","fanin","fib","depth","contrib","worst","case","step","depth2","depth3","depth4","depth5","gained","doubling","layers","costing","ten","comb"]},{"id":"e10b135ee52869e88202985777760978ff69db3d302a82983380223400632ac2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorbp.t27","health":"ok","module":"GftXorBp"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":108},{"name":"relu_prime","line":114},{"name":"on_comb","line":124}],"imports":[],"terms":["ternary","gft","xorbp","xor","magadd","magsub","sadd","neg","magmul","smul","relu","prime","comb"]},{"id":"e111bef882601ff39e589072facac4a3d4501cf3f8f3c0edbb089981db7379c4","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/ecc.t27","health":"ok","module":"TriEcc"}],"description":"t27/specs/","symbols":[{"name":"ECPoint","line":13},{"name":"EllipticCurve","line":19},{"name":"add","line":29},{"name":"multiply","line":34},{"name":"is_on_curve","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","ecc","ecpoint","elliptic","curve","multiply"]},{"id":"e12a4af3d20a17e48d35990420825c9ff5a1eee091b74ff1565d775f5ae63887","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logging.t27","health":"ok","module":"TriLogging"}],"description":"t27/specs/","symbols":[{"name":"LogLevel","line":13},{"name":"LogEntry","line":17},{"name":"level_to_string","line":29},{"name":"level_from_string","line":34},{"name":"level_color","line":39},{"name":"format_entry","line":44},{"name":"should_log","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","logging","log","level","entry","color","format"]},{"id":"e13491c6f9a89c309ce349dca7883a7eac0186b19b00d8d09b3dc0016d7bfadb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/layout_b_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","layout","audit"]},{"id":"e1355c4ae9276302788b24e68f1229d728b8b23b52f3422a96f55d68ab6e0b62","sources":[{"repo":"ghashtag/t27","path":"specs/account/auth.t27","health":"ok","module":"AccountAuth"}],"description":"specs/account/auth.t27 Account Authentication Operations","symbols":[{"name":"token","line":15},{"name":"refresh","line":20},{"name":"login","line":25},{"name":"poll","line":30},{"name":"logout","line":35},{"name":"orgs","line":44},{"name":"orgs_by_account","line":49},{"name":"config","line":54},{"name":"UserInfo","line":63},{"name":"get_user","line":69},{"name":"TokenRefreshRequest","line":78},{"name":"DeviceTokenRequest","line":85},{"name":"DeviceAuthResponse","line":92},{"name":"TokenRefreshResponse","line":101},{"name":"DeviceTokenSuccessResponse","line":108},{"name":"DeviceTokenErrorResponse","line":115},{"name":"parse_poll_result","line":125}],"imports":[{"name":"base::types","line":6},{"name":"account::schema","line":7}],"terms":["account","auth","token","refresh","login","poll","logout","orgs","config","user","info","get","request","device","response","success","parse"]},{"id":"e151864300830e0cdde07121285099fdc47c1de925ec4a5e78bba71a29e6a94a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/now.t27","health":"ok","module":"tool_tri_now"}],"description":"specs/tools/tri/now.t27 -- tool tri/now, the `tri now` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/now). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"e15cfa4a2739a1dfa550ab6dedfcf0a694d3629eab167bc9fb66faa289c1a109","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bigint.t27","health":"ok","module":"BigInt"}],"description":"Module: Balanced Ternary BigInt","symbols":[{"name":"TRIT_NEG","line":17},{"name":"TRIT_ZERO","line":18},{"name":"TRIT_POS","line":19},{"name":"MAX_TRITS","line":22},{"name":"SIMD_CHUNKS","line":25},{"name":"KARATSUBA_THRESHOLD","line":28},{"name":"TVCBigInt","line":37},{"name":"zero","line":50},{"name":"fromI64","line":57},{"name":"toI64","line":67},{"name":"normalize","line":73},{"name":"isZero","line":83},{"name":"isNegative","line":89},{"name":"compareAbs","line":95},{"name":"addScalar","line":106},{"name":"sub","line":112},{"name":"negate","line":118},{"name":"abs","line":124},{"name":"mulSimple","line":135},{"name":"mulKaratsuba","line":142},{"name":"mul","line":148}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10}],"terms":["numeric","bigint","big","int","trit","neg","zero","pos","max","trits","simd","chunks","karatsuba","threshold","tvcbig","i64","normalize","negative","compare","abs","scalar","sub","negate","mul","simple"]},{"id":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/goldenfloat_family.t27","health":"warn","module":"GoldenFloatFamily"}],"description":"t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family — φ-structured floating point formats NUMERIC-STANDARD-001 — Agent 1 (P0)","symbols":[{"name":"GoldenFloatFormat","line":14},{"name":"PHI_RATIO_TARGET","line":31},{"name":"GOLDEN_FLOAT_FAMILY","line":34},{"name":"get_format_by_name","line":112},{"name":"get_format_by_bits","line":121},{"name":"get_primary_format","line":130},{"name":"VerificationReport","line":138},{"name":"verify_golden_family","line":147},{"name":"avg_dist","line":168},{"name":"max_value","line":184},{"name":"mant_max","line":186},{"name":"exp_max","line":187},{"name":"min_positive","line":191},{"name":"mant_min","line":193},{"name":"bias","line":194},{"name":"memory_efficiency","line":198}],"imports":[{"name":"math::constants","line":7},{"name":"math::sacred_physics","line":8}],"terms":["fpga","numeric","goldenfloat","family","golden","float","format","phi","ratio","target","get","bits","primary","verification","report","verify","avg","dist","max","mant","exp","min","positive","bias","memory","efficiency"]},{"id":"e1c387ee2e54fabfdcb363337c56c608d48108946f4b089c91a232e9fa8d0f76","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/https_enforce.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-012: HTTPS Enforcement","symbols":[{"name":"HTTPS_REDIRECT_STATUS","line":21},{"name":"HTTPS_SCHEME","line":22},{"name":"HTTP_SCHEME","line":23},{"name":"LOCAL_HOSTNAMES","line":24},{"name":"RequestContext","line":30},{"name":"should_redirect","line":51},{"name":"redirect_url","line":72},{"name":"is_local_hostname","line":98},{"name":"enforce","line":116},{"name":"make_ctx","line":126}],"imports":[],"terms":["sandbox","https","enforce","redirect","status","scheme","http","local","hostnames","request","url","hostname","make","ctx"]},{"id":"e1ee4634ec3f0bb75b6c2f870fda5b9ba40f1c1329ad5ed38ce03a9351065791","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/elab.t27","health":"ok","module":"tool_tri_elab"}],"description":"specs/tools/tri/elab.t27 -- tool tri/elab, the `tri elab` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/elab). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["elab","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_hash.t27","health":"warn","module":"TernaryHashTable"}],"description":"t27/specs/isa/ternary_hash.t27 Ternary Hash Table Operations Specification Ring 087 - Hash table with ternary keys 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TABLE_SIZE","line":10},{"name":"EMPTY_KEY","line":11},{"name":"TRIT_NEG","line":12},{"name":"TRIT_ZERO","line":13},{"name":"TRIT_POS","line":14},{"name":"hash_trit","line":17},{"name":"hash_init","line":23},{"name":"hash_insert","line":33},{"name":"hash_lookup","line":49},{"name":"hash_remove","line":69},{"name":"hash_load","line":86}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","hash","table","size","empty","key","trit","neg","zero","pos","init","insert","lookup","remove","load"]},{"id":"e23ef09c0f4e88517e32c8c48d183468cb808d9676f2311a4a229e0f43895505","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/spec_exit.t27","health":"ok","module":"sacred-spec_exit"}],"description":"spec_exit.t27 — Sacred Opcode 0xEB: Speculative Exit Hardware for speculative exit and recovery","symbols":[{"name":"OP_SPEC_EXIT","line":12},{"name":"MAX_NESTING_DEPTH","line":14},{"name":"EXIT_REASON_BITS","line":15},{"name":"EXIT_SUCCESS","line":17},{"name":"EXIT_SPEC_FAIL","line":18},{"name":"EXIT_TIMEOUT","line":19},{"name":"EXIT_EXCEPTION","line":20},{"name":"EXIT_RESOURCE","line":21},{"name":"EXIT_ABORT","line":22},{"name":"EXIT_RECOVER","line":23},{"name":"EXIT_MAX","line":24},{"name":"STATE_RUNNING","line":26},{"name":"STATE_SPECULATING","line":27},{"name":"STATE_EXITING","line":28},{"name":"STATE_EXITED","line":29},{"name":"STATE_RECOVERING","line":30},{"name":"STATE_ERROR","line":31},{"name":"ExitReason","line":37},{"name":"SpecState","line":47},{"name":"SpecExit","line":56},{"name":"SpecContext","line":63},{"name":"SpecConfig","line":70},{"name":"spec_state_is_running","line":83},{"name":"spec_state_is_speculating","line":89},{"name":"spec_state_is_exiting","line":95},{"name":"spec_state_is_exited","line":101},{"name":"spec_state_is_recovering","line":107},{"name":"spec_state_is_terminal","line":113},{"name":"spec_state_can_speculate","line":119},{"name":"spec_exit_success","line":129},{"name":"spec_exit_fail","line":140},{"name":"spec_exit_timeout","line":151},{"name":"spec_exit_exception","line":157},{"name":"spec_exit_resource","line":163},{"name":"spec_exit_abort","line":169},{"name":"spec_exit_recover","line":180},{"name":"spec_context_init","line":195},{"name":"spec_context_enter_speculation","line":206},{"name":"spec_context_exit","line":224},{"name":"spec_context_complete","line":245},{"name":"spec_context_check_timeout","line":256},{"name":"encode_spec_exit","line":269},{"name":"op","line":271},{"name":"reason_field","line":272},{"name":"depth_field","line":273},{"name":"checkpoint_field","line":274},{"name":"decode_spec_exit","line":280},{"name":"reason","line":281},{"name":"depth","line":282},{"name":"checkpoint","line":283}],"imports":[],"terms":["euler","fpga","exit","sacred","max","nesting","depth","reason","bits","success","fail","timeout","exception","resource","abort","recover","state","running","speculating","exiting","exited","recovering","config","terminal","speculate","init","enter","speculation","complete","encode","field","checkpoint","decode"]},{"id":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/clock_domain_tb.t27","health":"ok","module":"ClockDomain_Testbench"}],"description":"t27/specs/fpga/testbench/clock_domain_tb.t27 Clock Domain Crossing Testbench Tests CDC synchronizers, handshake, and metastability protection","symbols":[{"name":"CLK_PERIOD_FAST","line":10},{"name":"CLK_PERIOD_SLOW","line":11},{"name":"SIM_TIMEOUT","line":12},{"name":"SYNC_STAGES","line":13},{"name":"tick_fast","line":27},{"name":"tick_slow","line":32},{"name":"reset","line":37},{"name":"send_async","line":46},{"name":"receive_async","line":54}],"imports":[{"name":"fpga::clock_domain::ClockDomain","line":8}],"terms":["fpga","testbench","clock","domain","clk","period","fast","slow","sim","timeout","sync","stages","tick","reset","send","async","receive"]},{"id":"e2987f7b0551651563d7d0730f8feaf2f319a6aa968fa44831048b3ccbcd9615","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_pattern_matching.t27","health":"warn","module":"TernaryPatternMatching"}],"description":"t27/specs/isa/ternary_pattern_matching.t27 Ternary Pattern Matching Operations Specification Ring 082 - Pattern matching algorithms for ternary sequences 01 + 1/23 = 3 | TRINITY","symbols":[{"name":"TRIT_NEG","line":10},{"name":"TRIT_ZERO","line":11},{"name":"TRIT_POS","line":12},{"name":"match_exact","line":15},{"name":"match_count","line":36},{"name":"match_wildcard","line":60},{"name":"hamming_distance","line":81},{"name":"longest_common_prefix","line":96}],"imports":[{"name":"base::types","line":8}],"terms":["isa","ternary","pattern","matching","trit","neg","zero","pos","match","exact","count","wildcard","hamming","distance","longest","common","prefix"]},{"id":"e2bff492844bb71720dc0caa8615e6025c5bcbf68978e17da5e89ef661adb563","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/needle.t27","health":"ok","module":"tool_mcp_needle"}],"description":"specs/tools/mcp/needle.t27 -- tool mcp/needle, MCP server \"needle\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/needle). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"SERVER","line":14},{"name":"SERVER_VERSION","line":15},{"name":"TRANSPORT","line":16},{"name":"LAUNCH","line":18},{"name":"ENV","line":19},{"name":"CONFIG","line":21},{"name":"REPO","line":22},{"name":"QUALIFIED_ID","line":23},{"name":"SCHEMA","line":24},{"name":"SOURCE","line":25},{"name":"ABOUT","line":26},{"name":"ABOUT_SOURCE","line":27},{"name":"TOOLS","line":29},{"name":"TOOLS_ABOUT","line":30},{"name":"TOOLS_INPUTS","line":31},{"name":"RESOURCES","line":32},{"name":"RESOURCES_ABOUT","line":33},{"name":"TOOLS_NOTE","line":35},{"name":"EXTERNAL","line":37},{"name":"AGENTS","line":38},{"name":"AGENTS_NOTE","line":39},{"name":"WITNESS","line":40},{"name":"ENABLED","line":41}],"imports":[],"terms":["mcp","needle","tool","kind","family","transport","launch","env","config","qualified","schema","about","inputs","resources","note","external","agents","witness","enabled"]},{"id":"e2dff6a23bc9bc46d15d01692cc8c0901ce6ecc2fb33e9f74dcd218bd7b77c14","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_xor.t27","health":"warn","module":"TernaryXor"}],"description":"","symbols":[{"name":"tmul","line":2},{"name":"dot27","line":8},{"name":"sign0","line":20},{"name":"negate","line":26},{"name":"pack2","line":32},{"name":"bneuron","line":39},{"name":"ternary_xor","line":48},{"name":"on_comb","line":76}],"imports":[],"terms":["ternary","xor","tmul","dot27","sign0","negate","pack2","bneuron","comb"]},{"id":"e334d5dc5fc0c176e420a131ea712b9f8d2e1c03b56a36388a683081b5defda3","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-agent-queue-drain.t27","health":"ok","module":"cron_trinity_agent_queue_drain"}],"description":"specs/crons/trinity-agent-queue-drain.t27 -- cron github-actions/trinity/agent-queue-drain Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/agent-queue-drain). The schedule was read from trinity:.github/workflows/agent-queue-drain.yml#L4. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","queue","drain","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"e33d06c87bbdb7128b94c03795ef3a4832b59758ca66412cd89fde649e7db5e0","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/batchnorm_layer.t27","health":"ok","module":"Batchnorm"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_EPSILON","line":13},{"name":"DEFAULT_MOMENTUM","line":14},{"name":"BatchNormConfig","line":20},{"name":"BatchNormState","line":28},{"name":"forward","line":38},{"name":"backward","line":43}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["layers","batchnorm","layer","default","epsilon","momentum","batch","norm","config","state","forward","backward"]},{"id":"e3997228a0ea792965b7825f7b685c27f972c5140c8d2a5ce3f434e27a9de5bf","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/stoch_round.t27","health":"warn","module":"sacred-stoch_round"}],"description":"stoch_round.t27 — Sacred Opcode 0xE9: Stochastic Rounding Hardware stochastic rounding for quantization","symbols":[{"name":"OP_STOCH_ROUND","line":12},{"name":"RANDOM_BITS","line":14},{"name":"ROUND_MODE_NEAREST","line":15},{"name":"ROUND_MODE_STOCHASTIC","line":16},{"name":"ROUND_MODE_TRUNCATE","line":17},{"name":"ROUND_MODE_CEIL","line":18},{"name":"INT4_BITS","line":20},{"name":"INT8_BITS","line":21},{"name":"INT4_MAX","line":23},{"name":"INT4_MIN","line":24},{"name":"INT8_MAX","line":25},{"name":"INT8_MIN","line":26},{"name":"RoundConfig","line":32},{"name":"RoundResult","line":38},{"name":"RngState","line":45},{"name":"rng_init","line":55},{"name":"rng_next","line":61},{"name":"rng_next_range","line":71},{"name":"next_result","line":72},{"name":"scaled","line":73},{"name":"round_nearest","line":83},{"name":"shift","line":84},{"name":"abs_val","line":88},{"name":"rounding","line":89},{"name":"max_val","line":97},{"name":"min_val","line":98},{"name":"round_stochastic","line":118},{"name":"shift","line":119},{"name":"abs_val","line":127},{"name":"integer_part","line":128},{"name":"fractional_part","line":129},{"name":"max_frac","line":132},{"name":"frac_scaled","line":133},{"name":"threshold","line":134},{"name":"rng_result","line":136},{"name":"rand_val","line":137},{"name":"max_val","line":148},{"name":"min_val","line":149},{"name":"round_truncate","line":164},{"name":"shift","line":165},{"name":"max_val","line":176},{"name":"min_val","line":177},{"name":"round_ceil","line":197},{"name":"shift","line":198},{"name":"abs_val","line":202},{"name":"frac_part","line":203},{"name":"max_val","line":215},{"name":"min_val","line":216},{"name":"round_with_config","line":240},{"name":"round_vector_nearest","line":266},{"name":"round_vector_stochastic","line":276},{"name":"round_result","line":281},{"name":"encode_stoch_round","line":295},{"name":"op","line":297},{"name":"mode_field","line":298},{"name":"bits_field","line":299},{"name":"seed_field","line":300},{"name":"decode_stoch_round","line":306},{"name":"mode","line":307},{"name":"target_bits","line":308},{"name":"seed","line":309}],"imports":[],"terms":["euler","fpga","stoch","round","sacred","random","bits","mode","nearest","stochastic","truncate","ceil","int4","int8","max","min","config","rng","state","init","range","scaled","shift","abs","val","rounding","integer","part","fractional","frac","threshold","rand","vector","encode","field","seed","decode","target"]},{"id":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sources":[{"repo":"ghashtag/t27","path":"vscode-trinity-swe/test_highlight.t27","health":"ok","module":null}],"description":"","symbols":[],"imports":[],"terms":["vscode","swe","highlight"]},{"id":"e3de31efd8a6ccd03a55b730897b5ed9b3d2e3ee895285fd3e28f80da22ad0f3","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/health.t27","health":"warn","module":"sandbox"}],"description":"SANDBOX-010 + SANDBOX-011: Sandbox Health Management","symbols":[{"name":"DEFAULT_POLL_INTERVAL_MS","line":23},{"name":"poll_sessions","line":38}],"imports":[{"name":"timestamp","line":16}],"terms":["sandbox","health","default","poll","interval","sessions"]},{"id":"e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/congestion_control.t27","health":"warn","module":"congestion_control"}],"description":"Congestion Control - TCP-like congestion avoidance Enables adaptive rate control and congestion detection","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"INITIAL_WINDOW","line":8},{"name":"MAX_WINDOW","line":9},{"name":"MIN_WINDOW","line":10},{"name":"CONGESTION_THRESHOLD","line":11},{"name":"create_congestion_state","line":14},{"name":"get_cwnd","line":21},{"name":"get_ssthresh","line":25},{"name":"get_congestion_state","line":29},{"name":"get_loss_count","line":33},{"name":"STATE_SLOW_START","line":38},{"name":"STATE_CONGESTION_AVOIDANCE","line":39},{"name":"STATE_FAST_RECOVERY","line":40},{"name":"STATE_FAST_RETRANSMIT","line":41},{"name":"initialize_congestion","line":44},{"name":"on_ack","line":49},{"name":"on_loss","line":76},{"name":"on_triple_dup_ack","line":99},{"name":"get_effective_window","line":126},{"name":"is_congested","line":137},{"name":"calculate_sending_rate","line":148},{"name":"estimate_bandwidth","line":159},{"name":"find_congestion_controller","line":170},{"name":"is_any_flow_congested","line":184},{"name":"calculate_total_cwnd","line":198},{"name":"allocate_fair_bandwidth","line":211},{"name":"probe_bandwidth","line":231},{"name":"reset_after_timeout","line":248}],"imports":[{"name":"base::types","line":5}],"terms":["net","congestion","control","max","flows","initial","window","min","threshold","create","state","get","cwnd","ssthresh","loss","count","slow","start","avoidance","fast","recovery","retransmit","initialize","ack","triple","dup","effective","congested","calculate","sending","rate","estimate","bandwidth","find","controller","flow","total","allocate","fair","probe","reset","timeout"]},{"id":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_filter.t27","health":"warn","module":"JonesTopologyFilter"}],"description":"t27/specs/demos/jones_topology_filter.t27 MVP: Structure Similarity Classifier using VSA + CS Constants WHAT THIS CODE ACTUALLY DOES: - Takes a hypervector representing a structure - Computes dot_product similarity with a reference structure - Classifies complexity based on similarity thresholds","symbols":[{"name":"JonesSignature","line":21},{"name":"COMPLEXITY_LOW","line":28},{"name":"COMPLEXITY_MID","line":29},{"name":"COMPLEXITY_HIGH","line":30},{"name":"PHI_THRESHOLD_LOW","line":32},{"name":"PHI_THRESHOLD_HIGH","line":33},{"name":"jones_signature","line":36},{"name":"dim","line":37},{"name":"jones","line":40},{"name":"standard","line":43},{"name":"dot","line":44},{"name":"jones_diff","line":47},{"name":"standard_structure","line":67},{"name":"invert_structure","line":84},{"name":"t","line":90},{"name":"complex_structure","line":105},{"name":"t","line":111},{"name":"signatures_match","line":122},{"name":"jones_close","line":123},{"name":"dot_close","line":124},{"name":"level_match","line":125},{"name":"complexity_name","line":131}],"imports":[{"name":"base::types","line":14},{"name":"math::constants","line":15},{"name":"vsa::ops","line":16},{"name":"physics::su2_chern_simons","line":17},{"name":"math::sacred_physics","line":18}],"terms":["demos","jones","topology","filter","signature","complexity","low","mid","high","phi","threshold","dim","standard","dot","diff","structure","invert","complex","signatures","match","close","level"]},{"id":"e438aac097dc857bb00ca5a05c750c5e10f014135ec409e71aa87c877cfccb25","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/tuple_type.t27","health":"ok","module":"tuple_type"}],"description":"","symbols":[{"name":"Pairs","line":7}],"imports":[],"terms":["bootstrap","fixtures","terminator","tuple","pairs"]},{"id":"e46541429008eef0e3a73d4b33d40d438a556712791e282630da97bddbb20d19","sources":[{"repo":"ghashtag/t27","path":"specs/server/api.t27","health":"ok","module":"Api"}],"description":"specs/server/api.t27 API Client Types Specification Constitutional Law #4: De-Zig-fication - .t27 is source of truth Constitutional Law #5: De-Zig Strict - no new Rust business logic","symbols":[{"name":"MessageRole","line":14},{"name":"ContentBlockType","line":20},{"name":"Message","line":27},{"name":"TextBlock","line":36},{"name":"ToolUseBlock","line":41},{"name":"ToolResultBlock","line":48},{"name":"ThinkingBlock","line":54},{"name":"Usage","line":63},{"name":"ApiResponse","line":68},{"name":"DEFAULT_TIMEOUT_SECONDS","line":79},{"name":"DEFAULT_MAX_TOKENS","line":80},{"name":"DEFAULT_BASE_URL","line":81},{"name":"DEFAULT_MODEL","line":82},{"name":"get_block_type_name","line":88},{"name":"get_role_name","line":104},{"name":"total_usage","line":117}],"imports":[{"name":"base::types","line":8}],"terms":["api","role","content","block","text","tool","thinking","usage","response","default","timeout","seconds","max","tokens","base","url","model","get","total"]},{"id":"e47089fd4638da45cfbde2769fecd228d72029dcbebbc7b25ee3699437c7bb99","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0014_comprehension_suffix.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","comprehension","suffix"]},{"id":"e56f7e6a77a0696efa9ed42e43b81534cd2dcff1b7cdaea7123418ce427f244c","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/contrastive_loss.t27","health":"ok","module":"ContrastiveLoss"}],"description":"t27/specs/","symbols":[{"name":"ContrastiveLossConfig","line":13},{"name":"forward","line":22}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["loss","contrastive","config","forward"]},{"id":"e58c713814db7a42b22fa996d3aee2815af783080bf6b98db6fbafad489330f4","sources":[{"repo":"ghashtag/t27","path":"specs/igla/w535_bounded_while_module.t27","health":"warn","module":"w535_bounded_while_module"}],"description":"t27/specs/igla/w535_bounded_while_module.t27 W535 positive corpus witness: a bounded while loop remains Icarus-lowerable after tightening the predicate to reject while(true), non-lowerable struct fields, and imported-function calls.","symbols":[{"name":"count_to","line":11},{"name":"on_comb","line":40}],"imports":[],"terms":["igla","w535","bounded","count","comb"]},{"id":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf20.t27","health":"warn","module":"GF20"}],"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 0 20-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 6 (P1)","symbols":[{"name":"BITS","line":20},{"name":"SIGN_BITS","line":21},{"name":"EXP_BITS","line":22},{"name":"MANT_BITS","line":23},{"name":"EXP_BIAS","line":26},{"name":"PHI_DISTANCE","line":29},{"name":"GF20","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":145},{"name":"floor_log2","line":151},{"name":"extract_mantissa","line":165},{"name":"normalized","line":166},{"name":"frac","line":167},{"name":"max_mant","line":168},{"name":"clamp","line":172},{"name":"pow","line":178},{"name":"is_integer","line":194},{"name":"ln_val","line":220},{"name":"ln_approx","line":225},{"name":"t","line":234},{"name":"t2","line":235},{"name":"t3","line":236},{"name":"t5","line":237},{"name":"t7","line":238},{"name":"exp_approx","line":244},{"name":"k","line":256},{"name":"k","line":267},{"name":"floor","line":283}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9}],"terms":["euler","numeric","gf20","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"e63fa9e43303eefdf53f1f95499c15bb7794c7f08c9d14c1958f61e362e75ada","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-ux-wave.t27","health":"ok","module":"skill_trinity_ux_wave"}],"description":"specs/skills/trinity-ux-wave.t27 -- skill trinity/ux-wave Source of truth for the skill card on t27.ai (#/skills?skill=trinity/ux-wave). The skill body lives in gHashTag/trinity at .claude/skills/ux-wave/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/ux-wave/SKILL.md, sha256 9690999e8d1e...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"NAME","line":14},{"name":"REPO","line":15},{"name":"SOURCE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"COMMAND","line":19},{"name":"SPECS","line":21},{"name":"TAGS","line":22},{"name":"ENABLED","line":23},{"name":"TIMEOUT_MIN","line":25}],"imports":[],"terms":["skills","wave","skill","kind","summary","tags","enabled","timeout","min"]},{"id":"e66aacd669a1bba304a235f5db230e9704385e4471ca44391855c9812652d3b0","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0008_semicolonless_const_pair.t27","health":"ok","module":"m"}],"description":"","symbols":[{"name":"MAX_A","line":2},{"name":"MAX_B","line":3},{"name":"f","line":4}],"imports":[],"terms":["bootstrap","goldring","semicolonless","pair","max"]},{"id":"e67d13adcf989dad50feda8d7c5a53a0fa8f96486804feb26b22a582ebb7582d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/either.t27","health":"ok","module":"TriEither"}],"description":"t27/specs/","symbols":[{"name":"Either","line":13},{"name":"left","line":24},{"name":"right","line":29},{"name":"is_left","line":34},{"name":"is_right","line":39},{"name":"unwrap","line":44}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","either","left","right","unwrap"]},{"id":"e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/resource_scheduler.t27","health":"warn","module":"ResourceScheduler"}],"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","symbols":[{"name":"MAX_TASKS","line":7},{"name":"CPU_CAPACITY","line":8},{"name":"MEMORY_CAPACITY","line":9},{"name":"PRIORITY_HIGH","line":10},{"name":"PRIORITY_MEDIUM","line":11},{"name":"PRIORITY_LOW","line":12},{"name":"create_task_resource","line":15},{"name":"get_cpu_req","line":22},{"name":"get_mem_req","line":26},{"name":"get_priority","line":30},{"name":"get_task_id","line":34},{"name":"create_system_state","line":39},{"name":"get_used_cpu","line":46},{"name":"get_used_mem","line":50},{"name":"get_active_tasks","line":54},{"name":"get_sched_tick","line":58},{"name":"create_task_array","line":63},{"name":"get_task_resource","line":74},{"name":"can_admit_task","line":86},{"name":"has_cpu_capacity","line":99},{"name":"has_memory_capacity","line":105},{"name":"allocate_resources","line":112},{"name":"release_resources","line":128},{"name":"find_admittable_task","line":144},{"name":"calculate_cpu_utilization","line":216},{"name":"calculate_memory_utilization","line":220},{"name":"is_overloaded","line":226},{"name":"increment_tick","line":232},{"name":"count_tasks_by_priority","line":245}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","resource","scheduler","max","tasks","cpu","capacity","memory","priority","high","medium","low","create","get","req","mem","system","state","used","active","sched","tick","array","admit","allocate","resources","release","find","admittable","calculate","utilization","overloaded","increment","count"]},{"id":"e713662a43888a4304da49a3fa56934423615caec6edf983e2260fbb0123de3b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd_momentum.t27","health":"ok","module":"SgdMomentum"}],"description":"t27/specs/ml/optimizer/sgd_momentum.t27","symbols":[{"name":"PHI","line":14},{"name":"DEFAULT_LEARNING_RATE","line":15},{"name":"DEFAULT_MOMENTUM","line":16},{"name":"PHI_DAMPED_MOMENTUM","line":17},{"name":"DEFAULT_WEIGHT_DECAY","line":18},{"name":"DEFAULT_NESTEROV","line":19},{"name":"SgdMomentumConfig","line":25},{"name":"SgdMomentumState","line":34},{"name":"OptimizerStepResult","line":40},{"name":"init","line":52},{"name":"step","line":59},{"name":"compute_velocity","line":76},{"name":"nesterov_update","line":82},{"name":"standard_update","line":88},{"name":"apply_weight_decay","line":94},{"name":"phi_damped_momentum","line":100},{"name":"get_effective_momentum","line":106},{"name":"zero_grad","line":113}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7},{"name":"numeric::gf16","line":8}],"terms":["optimizer","sgd","momentum","phi","default","learning","rate","damped","weight","decay","nesterov","config","state","step","init","compute","velocity","standard","apply","get","effective","zero","grad"]},{"id":"e72f0bd25f3350a928a1972d0070a96b9e73b6b13d9d6e080353286c1309458a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/gru_cell.t27","health":"ok","module":"Gru"}],"description":"t27/specs/","symbols":[{"name":"GRUConfig","line":13},{"name":"GRUState","line":18},{"name":"GRUWeights","line":22},{"name":"forward","line":36},{"name":"init","line":41}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["recurrent","gru","cell","gruconfig","grustate","gruweights","forward","init"]},{"id":"e734823e61b4a42e32f1d35dd8da6ec17a9c3877be615ad1ef3af903409beb2c","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/null_pe.t27","health":"warn","module":"sacred-null_pe"}],"description":"null_pe.t27 — Sacred Opcode 0xEA: Null Processing Element Hardware null PE (processing element) for sparse acceleration","symbols":[{"name":"OP_NULL_PE","line":12},{"name":"PE_COUNT","line":14},{"name":"DATA_WIDTH","line":15},{"name":"PE_STATE_IDLE","line":17},{"name":"PE_STATE_ACTIVE","line":18},{"name":"PE_STATE_WAITING","line":19},{"name":"PE_STATE_ERROR","line":20},{"name":"NULL_MODE_SKIP","line":22},{"name":"NULL_MODE_ZERO","line":23},{"name":"NULL_MODE_IDENTITY","line":24},{"name":"NULL_MODE_CUSTOM","line":25},{"name":"PeState","line":31},{"name":"PeConfig","line":38},{"name":"PeStatus","line":44},{"name":"NullPeResult","line":50},{"name":"PeArray","line":57},{"name":"pe_is_active","line":68},{"name":"pe_is_idle","line":74},{"name":"pe_is_waiting","line":80},{"name":"pe_is_error","line":86},{"name":"pe_set_state","line":92},{"name":"pe_config_enabled","line":106},{"name":"pe_is_null","line":112},{"name":"pe_is_identity","line":118},{"name":"null_pe_skip","line":128},{"name":"null_pe_zero","line":148},{"name":"null_pe_identity","line":167},{"name":"null_pe_execute","line":186},{"name":"pe_array_init","line":223},{"name":"pe_array_enable","line":237},{"name":"pe_array_count_active","line":253},{"name":"pe_array_count_null","line":265},{"name":"pe_array_get_null_mask","line":277},{"name":"encode_null_pe","line":293},{"name":"op","line":295},{"name":"mode_field","line":296},{"name":"mask_field","line":297},{"name":"decode_null_pe","line":303},{"name":"mode","line":304},{"name":"pe_mask","line":305}],"imports":[],"terms":["euler","fpga","null","sacred","count","data","width","state","idle","active","waiting","mode","skip","zero","identity","custom","config","status","array","set","enabled","execute","init","enable","get","mask","encode","field","decode"]},{"id":"e78e6abf68de0ce2b1f2810e02555111fcccd78a5e27765d7d54c0440936dfa2","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-stuck-check.t27","health":"ok","module":"fn_training_stuck_check"}],"description":"specs/functions/training-stuck-check.t27 -- function training-stuck-check (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-stuck-check). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/checkStuckTrainings.ts#L47 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","training","stuck","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","sources":[{"repo":"ghashtag/t27","path":"specs/isa/tri27_machine.t27","health":"warn","module":"Tri27Machine"}],"description":"specs/isa/tri27_machine.t27 -- the TRI-27 machine as the pinned Trinity emulator executes it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's selected runtime for TRI-27 programs is src/tri27/emu/executor.zig with cpu_state.zig, tri_cpu.zig and tri_memory.zig at 976df517: the only executor the owner's tests drive (test_comprehensive.zig, test_golden.zig, smoke_tests.zig); tri_exec.zig is a dead twin. This file states its register file, memory, fetch rule, entry points, flags, the numeric rule of every executed opcode, the control-flow and","symbols":[{"name":"KIND","line":20},{"name":"ID","line":21},{"name":"NAME","line":22},{"name":"CONSUMER_REPO","line":23},{"name":"PINNED_REVISION","line":24},{"name":"OWNER_MODULES","line":25},{"name":"OWNER_LINES","line":26},{"name":"ENCODING_SPEC","line":27},{"name":"BYTECODE_SPEC","line":28},{"name":"REGISTER_COUNT","line":30},{"name":"REGISTER_TYPE","line":31},{"name":"GF16_REGISTERS","line":32},{"name":"VECTOR_REGISTERS","line":33},{"name":"VECTOR_LANES","line":34},{"name":"MEMORY_WORDS","line":35},{"name":"WORD_BYTES","line":36},{"name":"MEMORY_BYTES","line":37},{"name":"MEMORY_LEN_UNIT","line":38},{"name":"INSTRUCTION_BYTES","line":39},{"name":"FETCH_RULE","line":40},{"name":"ENTRY_PC_INIT","line":41},{"name":"ENTRY_SP_INIT","line":42},{"name":"ENTRY_PC_LOADER","line":43},{"name":"ENTRY_SP_LOADER","line":44},{"name":"ENTRY_FP","line":45},{"name":"ENTRY_RULE","line":46},{"name":"REGISTER_INIT","line":47},{"name":"FLAG_Z_BIT","line":48},{"name":"FLAG_N_BIT","line":49},{"name":"FLAG_V_BIT","line":50},{"name":"FLAG_H_BIT","line":51},{"name":"FLAG_V_WRITTEN","line":52},{"name":"FLAG_RULE","line":53},{"name":"MODULUS","line":55},{"name":"MODULUS_NOTE","line":56},{"name":"ARITHMETIC_RULE","line":57},{"name":"PHI_SCALED","line":58},{"name":"PI_SCALED","line":59},{"name":"E_SCALED","line":60},{"name":"SACRED_SCALE","line":61},{"name":"FIXED_SCALE","line":62},{"name":"SACR_MODES","line":63},{"name":"SACR_MODE_NAMES","line":64},{"name":"SACR_DEFAULT","line":65},{"name":"SACR_OPERANDS","line":66},{"name":"MAX_INSTRUCTIONS","line":68},{"name":"BUDGET_RULE","line":69},{"name":"CYCLES_RULE","line":70},{"name":"ERROR_NAMES","line":72},{"name":"ERROR_RETURNED","line":73},{"name":"STATUS_HALTED","line":74},{"name":"STATUS_INVALID_REGISTER","line":75},{"name":"STATUS_INVALID_MEMORY","line":76},{"name":"STATUS_DIVISION_BY_ZERO","line":77},{"name":"STATUS_STACK_OVERFLOW","line":78},{"name":"STATUS_STACK_UNDERFLOW","line":79},{"name":"STATUS_INVALID_OPCODE","line":80},{"name":"STATUS_HALTED_ERROR","line":81},{"name":"STATUS_FETCH_OUT_OF_RANGE","line":82},{"name":"STATUS_BUDGET_EXHAUSTED","line":83},{"name":"STATUS_RET_UNDERFLOW","line":84},{"name":"STATUS_HOST_IO_NOT_REPLAYED","line":85},{"name":"STATUS_NAMES","line":86},{"name":"STATUS_OWNER_SIGNAL","line":87},{"name":"STATUS_NONZERO_RULE","line":88},{"name":"EXIT_SUCCESS","line":89},{"name":"EXIT_ERR","line":90},{"name":"EXIT_USAGE","line":91},{"name":"EXIT_NO_INPUT","line":92},{"name":"EXIT_OS_ERR","line":93},{"name":"EXIT_IO_ERROR","line":94},{"name":"EXIT_NO_PERM","line":95},{"name":"EXIT_RULE","line":96},{"name":"SYSCALL_RULE","line":98},{"name":"HOST_IO_OPCODES","line":99},{"name":"HOST_IO_RULE","line":100},{"name":"HOST_IO_REPLAYED","line":101},{"name":"FINDING_COUNT","line":103},{"name":"FINDINGS","line":104},{"name":"ENABLED","line":105},{"name":"registers_valid","line":109},{"name":"abs_imm","line":117},{"name":"clamp_trit","line":122},{"name":"flag_z","line":128},{"name":"flag_n","line":132},{"name":"alu_add","line":138},{"name":"alu_sub","line":142},{"name":"alu_mul","line":146},{"name":"alu_div_defined","line":150},{"name":"alu_div","line":154},{"name":"alu_inc","line":158},{"name":"alu_dec","line":162},{"name":"exp_fixed","line":166},{"name":"sin_fixed","line":174},{"name":"and_bits","line":185},{"name":"or_ternary","line":189},{"name":"xor_ternary","line":195},{"name":"not_bits","line":201},{"name":"shl_bits","line":205},{"name":"shr_bits","line":210},{"name":"mod_pos","line":218},{"name":"dot_mod","line":224},{"name":"bind_mod","line":228},{"name":"bundle2_avg","line":234},{"name":"bundle3_majority","line":240},{"name":"pow_int","line":247},{"name":"sacr_defined","line":258},{"name":"sacr","line":263},{"name":"ld_byte_addr","line":272},{"name":"ld_in_range","line":276},{"name":"ld_sign_extend","line":280},{"name":"st_in_range","line":284},{"name":"st_low32","line":288},{"name":"sti_in_range","line":292},{"name":"sti_value","line":296},{"name":"call_overflows","line":300},{"name":"ret_underflows","line":304},{"name":"fetch_in_range","line":308},{"name":"budget_exhausted","line":312},{"name":"taken_z","line":318},{"name":"taken_nz","line":322},{"name":"taken_gt","line":326},{"name":"taken_lt","line":330}],"imports":[],"terms":["isa","tri27","machine","tri27machine","kind","consumer","pinned","revision","owner","modules","encoding","bytecode","register","count","gf16","registers","vector","lanes","memory","words","word","bytes","len","unit","fetch","rule","entry","init","loader","flag","bit","written","modulus","note","arithmetic","phi","scaled","sacred","scale","fixed","sacr","modes","mode","default","operands","max","instructions","budget","cycles","returned","status","halted","invalid","division","zero","stack","overflow","underflow","opcode","out","range","exhausted","ret","host","replayed","signal","nonzero","exit","success","err","usage","perm","syscall","opcodes","finding","findings","enabled","valid","abs","imm","clamp","trit","alu","sub","mul","div","defined","inc","dec","exp","sin","bits","ternary","xor","shl","shr","mod","pos","dot","bind","bundle2","avg","bundle3","majority","pow","int","byte","addr","sign","extend","low32","sti","call","overflows","underflows","taken"]},{"id":"e7b50b366482d2b8d45d2ac34d8c26df07c1834693fb3cce83c043be0509d75c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/issues.t27","health":"ok","module":"tool_tri_issues"}],"description":"specs/tools/tri/issues.t27 -- tool tri/issues, the `tri issues` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/issues). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/protocol.t27","health":"ok","module":"CoronaProtocol"}],"description":"specs/corona/protocol.t27 Corona oracle protocol: 8-bit serial CMD/DATA on TinyTapeout pins.","symbols":[{"name":"N_UI_IN","line":18},{"name":"N_UO_OUT","line":19},{"name":"N_UIO","line":20},{"name":"CMD1_BIT7","line":44},{"name":"MAX_BYTE_COUNT","line":45},{"name":"FMT_ID_ANCHOR","line":54},{"name":"ANCHOR_OUTPUT","line":55},{"name":"CYCLES_ROM_FETCH","line":65},{"name":"CYCLES_DECODE_8","line":72},{"name":"CYCLES_DECODE_16","line":79},{"name":"CYCLES_DECODE_SUB8","line":83},{"name":"VECTORS_PER_FORMAT_MIN","line":105},{"name":"VECTORS_PER_FORMAT_ROBUST","line":106},{"name":"VECTORS_PER_FORMAT_FULL","line":107},{"name":"NOT_IMPLEMENTED_SENTINEL","line":118},{"name":"NOT_IMPLEMENTED_TAG","line":119}],"imports":[{"name":"base::types","line":10},{"name":"corona::corona_oracle","line":11},{"name":"corona::rom_layout","line":12}],"terms":["corona","protocol","out","uio","cmd1","bit7","max","byte","count","fmt","anchor","cycles","rom","fetch","decode","sub8","vectors","per","format","min","robust","full","implemented","sentinel","tag"]},{"id":"e7e63c130082fb051a3de6136a00aa9de7368c70a8ec4c64aaebd1f79afdebb5","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/eof_generic.t27","health":"warn","module":"eof_generic"}],"description":"","symbols":[{"name":"Hangs","line":7}],"imports":[],"terms":["bootstrap","fixtures","terminator","eof","generic","hangs"]},{"id":"e80558ed3a7a773aa1171a8233e13517664f4241081525b100898bc468946920","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/specs.vibee-corpus.t27","health":"ok","module":"trinity_capability_specs_vibee_corpus"}],"description":"specs/trinity/capabilities/specs.vibee-corpus.t27 -- capability trinity/specs.vibee-corpus: The .vibee specification corpus of the consumer: 522 files under specs/tri, 1428 One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","vibee","corpus","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"e805c111cc8f7dcdf826ad23f9ba35bc8d9426a9341cb6d084ad86a5b5afaaac","sources":[{"repo":"ghashtag/t27","path":"specs/physics/zamolodchikov_4d_conjecture.t27","health":"ok","module":"Zamolodchikov4DConjecture"}],"description":"t27/specs/physics/zamolodchikov_4d_conjecture.t27 4D Zamolodchikov Conjecture — The Breakthrough Hypothesis Direction E of PROJECT KEPLER->NEWTON HYPOTHESIS: A 4D quantum field theory with E8 integrable structure fixes the fundamental constants of the Standard Model through the same algebraic mechanism that fixes the 8 Zamolodchikov masses in 2D.","symbols":[{"name":"FourDimensionalBridge","line":99},{"name":"conjectured_bridge","line":106},{"name":"MinahanNemeschanskyE8","line":131},{"name":"mn_e8_theory","line":138},{"name":"DynkinPhysicsMapping","line":186},{"name":"observed_mapping","line":193}],"imports":[{"name":"math::constants","line":37},{"name":"math::e8_lie_algebra","line":38},{"name":"math::zamolodchikov_e8","line":39},{"name":"physics::su2_chern_simons","line":40}],"terms":["physics","zamolodchikov","conjecture","zamolodchikov4dconjecture","four","dimensional","bridge","conjectured","minahan","nemeschansky","theory","dynkin","mapping","observed"]},{"id":"e811defd32754534cd816aee83855abcaef5d5d6e3bef26227d36aa0b17d6bce","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_view.t27","health":"warn","module":"TrinityStreamViewT27"}],"description":"","symbols":[{"name":"dense_digit","line":5},{"name":"decode","line":12},{"name":"visible_lane","line":27},{"name":"on_comb","line":32}],"imports":[],"terms":["dmitrii","memory","rtl","stream","view","dense","digit","decode","visible","lane","comb"]},{"id":"e8775999f06bfb718b8b7d5404691396f6e4d0cbb7692259bea21a167ad6d329","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/01_values_and_types.t27","health":"ok","module":"tutorial-01-values"}],"description":"01 — Values and types Lesson 1 of the t27 tutorial. Every constant carries an explicit width, because a spec has to say what reaches hardware rather than let a compiler pick for it. Nothing here is inferred.","symbols":[{"name":"SMALL_UNSIGNED","line":17},{"name":"SMALL_SIGNED","line":18},{"name":"WIDE_UNSIGNED","line":19},{"name":"WIDER","line":20},{"name":"SIGNED_32","line":21},{"name":"AS_HEX","line":31},{"name":"AS_BINARY","line":32},{"name":"MANTISSA_MASK","line":33},{"name":"RATIO","line":39},{"name":"PRECISE","line":40},{"name":"ENABLED","line":42},{"name":"DISABLED","line":43},{"name":"TRIT_NEG","line":53},{"name":"TRIT_ZERO","line":54},{"name":"TRIT_POS","line":55},{"name":"TRINITY","line":57}],"imports":[],"terms":["tutorial","values","small","unsigned","signed","wide","wider","hex","binary","mantissa","mask","ratio","precise","enabled","disabled","trit","neg","zero","pos"]},{"id":"e8c1e6bd3959a82da6b75507b3e3b3b539338e8123a6e665eed5e2195746119d","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_04_no_pub.t27","health":"ok","module":"GenericConstPrivate"}],"description":"ADR-008 positive: `pub` is optional, exactly as on the non-parameterised path.","symbols":[{"name":"Cell","line":3}],"imports":[],"terms":["bootstrap","fixtures","generic","pos","private","cell"]},{"id":"e8f81b78f31a4dc79b00a5bdccb14e4a8fb5ce58ba88a1a5c821c0d13ee3f542","sources":[{"repo":"ghashtag/t27","path":"specs/base/seed.t27","health":"ok","module":"seed"}],"description":"seed.t27 — Minimal Golden Seed for E2E CI (#150)","symbols":[{"name":"NEGONE","line":11},{"name":"ZERO","line":12},{"name":"ONE","line":13},{"name":"Trit","line":16},{"name":"trit_negate","line":28},{"name":"trit_add","line":38}],"imports":[],"terms":["base","seed","negone","zero","one","trit","negate"]},{"id":"e900a1f93f9d85ab1c55a4492f61134eee0720787e2cc59a88890e6120a7ee87","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_add_rne.t27","health":"warn","module":"GftAddRne"}],"description":"","symbols":[{"name":"on_comb","line":10}],"imports":[],"terms":["ternary","gft","rne","comb"]},{"id":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bitnet.t27","health":"ok","module":"TriComputeBitnet"}],"description":"TRI-NET BitNet-style mixed layer attestation: ternary weights {-1,0,+1} times GF16 activations. This is the target workload the whole GF-vs-ternary analysis points at -- weights are the 0-DSP part (sign-select / popcount, as in trinet_mac32), the GF16 activation and accumulated result are the value part (magnitude, DSP or -nodsp soft-logic). One receipt binds BOTH: the packed_w ternary weight code, the GF16 activation hash, and the GF16 result. It also","symbols":[{"name":"OP_BITNET","line":14},{"name":"B_C","line":15},{"name":"TAG_BITNET","line":16},{"name":"SHA_PAD","line":17},{"name":"BITNET_MSG_BITS","line":18},{"name":"rotl","line":20},{"name":"mix32","line":24},{"name":"is_active","line":41},{"name":"active_weights4","line":53},{"name":"trit_canonical","line":66},{"name":"weights_canonical4","line":74},{"name":"packing_is_canonical","line":79},{"name":"is_pos","line":91},{"name":"is_neg","line":99},{"name":"pos_weights4","line":107},{"name":"neg_weights4","line":112},{"name":"sign_balance_biased","line":119},{"name":"bitnet_balance_matches","line":131},{"name":"bitnet_leaf","line":143},{"name":"bitnet_digest_pre","line":165}],"imports":[{"name":"base::types","line":12}],"terms":["net","compute","bitnet","tag","sha","pad","msg","bits","rotl","mix32","active","weights4","trit","canonical","weights","canonical4","packing","pos","neg","sign","balance","biased","matches","leaf","digest","pre"]},{"id":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/topology_visualizer.t27","health":"warn","module":"topology_visualizer"}],"description":"Topology Visualizer - network topology visualization and rendering Creates visual representations of mesh network structures","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EDGES","line":8},{"name":"MAX_LAYERS","line":9},{"name":"CANVAS_SIZE","line":10},{"name":"create_visual_node","line":13},{"name":"get_viz_node_id","line":20},{"name":"get_node_x_position","line":24},{"name":"get_node_y_position","line":28},{"name":"get_node_visual_status","line":32},{"name":"STATUS_ACTIVE","line":37},{"name":"STATUS_INACTIVE","line":38},{"name":"STATUS_FAILED","line":39},{"name":"STATUS_WARNING","line":40},{"name":"create_visual_edge","line":43},{"name":"get_viz_edge_source","line":50},{"name":"get_viz_edge_dest","line":54},{"name":"get_viz_edge_quality","line":58},{"name":"get_viz_edge_type","line":62},{"name":"EDGE_WIRED","line":67},{"name":"EDGE_WIRELESS","line":68},{"name":"EDGE_ACTIVE_ROUTE","line":69},{"name":"EDGE_BACKUP_ROUTE","line":70},{"name":"create_color","line":73},{"name":"get_color_red","line":80},{"name":"get_color_green","line":84},{"name":"get_color_blue","line":88},{"name":"get_color_alpha","line":92},{"name":"COLOR_GREEN","line":97},{"name":"COLOR_RED","line":98},{"name":"COLOR_YELLOW","line":99},{"name":"COLOR_BLUE","line":100},{"name":"COLOR_GRAY","line":101},{"name":"get_status_color","line":104},{"name":"create_layout_params","line":117},{"name":"get_layout_algorithm","line":124},{"name":"get_layout_iterations","line":128},{"name":"get_layout_temperature","line":132},{"name":"get_layout_cooling_rate","line":136},{"name":"ALGORITHM_FORCE_DIRECTED","line":141},{"name":"ALGORITHM_CIRCULAR","line":142},{"name":"ALGORITHM_HIERARCHICAL","line":143},{"name":"ALGORITHM_GRID","line":144},{"name":"calculate_force_layout","line":147},{"name":"calculate_circular_layout","line":222},{"name":"calculate_hierarchical_layout","line":247},{"name":"apply_layout","line":277},{"name":"render_node","line":293},{"name":"render_edge","line":309},{"name":"create_visualization_frame","line":352},{"name":"calculate_viz_complexity","line":376},{"name":"optimize_rendering","line":384},{"name":"generate_topology_visualization","line":398}],"imports":[{"name":"base::types","line":5}],"terms":["net","topology","visualizer","max","nodes","edges","layers","canvas","size","create","visual","node","get","viz","position","status","active","inactive","failed","warning","edge","dest","quality","wired","wireless","route","backup","color","red","green","blue","alpha","yellow","gray","layout","params","algorithm","iterations","temperature","cooling","rate","force","directed","circular","hierarchical","grid","calculate","apply","render","visualization","frame","complexity","optimize","rendering","generate"]},{"id":"e9b76a6307da8010148eccb359fed5cfa1757cf3d28368fab4a3b0765fd3fec0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/counting_sort.t27","health":"ok","module":"TriCountingSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","counting"]},{"id":"e9f0534647b2ff6479e0a03577eeb01d1c529f0973f585eb5c134ae4f819d29a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/bio.t27","health":"ok","module":"tool_trinity_tri_bio"}],"description":"specs/tools/trinity/tri/bio.t27 -- tool gHashTag/trinity:tri/bio, the `tri bio` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/bio`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["bio","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/selection_sort.t27","health":"ok","module":"TriSelectionSort"}],"description":"t27/specs/","symbols":[{"name":"sort","line":14}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["sort","selection"]},{"id":"eabb5fbd560deceb47ad6ae9f8bc4f70a2b91e2504e8026ba09387963560b9f2","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/compiler_matrix.t27","health":"ok","module":"trinity_compiler_matrix"}],"description":"specs/trinity/compiler_matrix.t27 -- which t27 features the pinned compiler carries to a checked runtime result, on which backend, and which invalid inputs it must never accept Source of truth for tools/trinity_compiler_matrix.py (gHashTag/t27#3564 = S02 of gHashTag/trinity#988). One fixture per feature under FIXTURE_DIR; four stages kept apart in the record (declaration, generate, compile, runtime); a feature is executable only when its fixture reaches a runtime pass on the backend named here, a blocked feature must not, and a","symbols":[{"name":"KIND","line":15},{"name":"ID","line":16},{"name":"NAME","line":17},{"name":"NATIVE_COMPILER","line":21},{"name":"NATIVE_REVISION","line":22},{"name":"NATIVE_BUILD","line":23},{"name":"WASM_VENDORED_REVISION","line":25},{"name":"WASM_VENDORED_PATH","line":26},{"name":"WASM_VENDORED_SHA256","line":27},{"name":"BACKENDS","line":29},{"name":"BACKEND_COMMAND","line":30},{"name":"BACKEND_RUNTIME","line":31},{"name":"HOST_TOOLS","line":32},{"name":"STAGES","line":34},{"name":"FIXTURE_DIR","line":35},{"name":"FEATURES","line":37},{"name":"FEATURE_FIXTURE","line":38},{"name":"FEATURE_STATUS","line":40},{"name":"FEATURE_BACKEND","line":41},{"name":"FEATURE_NOTE","line":42},{"name":"NEGATIVES","line":45},{"name":"NEGATIVE_STAGE","line":46},{"name":"NEGATIVE_NOTE","line":47},{"name":"ABSENT_BACKEND","line":49},{"name":"ENABLED","line":50}],"imports":[],"terms":["compiler","matrix","kind","native","revision","build","wasm","vendored","path","sha256","backends","backend","runtime","host","stages","fixture","dir","features","feature","status","note","negatives","negative","stage","absent","enabled"]},{"id":"eaee2545844cfe66509afedf95424ca76e2d3717a8bced297abc0121b3ea6a8a","sources":[{"repo":"ghashtag/t27","path":"specs/agents/h.t27","health":"ok","module":"agent_h"}],"description":"specs/agents/h.t27 -- agent t27/H, letter H of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/H). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent H - Eta (HSLM)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"eb15c59465bc42b003a394b15261ba2da9101faba2459665e7ad9b3a8ca51f6a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/wallet.t27","health":"ok","module":"tool_trinity_tri_wallet"}],"description":"specs/tools/trinity/tri/wallet.t27 -- tool gHashTag/trinity:tri/wallet, the `tri wallet` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/wallet`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["wallet","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"eb6583207d52e56d6374411554d285ed3423bfbd918de232b7c6e95d70a08217","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/structs.t27","health":"ok","module":"trinity_matrix_structs"}],"description":"trinity_matrix/structs.t27 -- feature structs: a record type, a constructor and field access.","symbols":[{"name":"Point","line":5},{"name":"make_point","line":10},{"name":"manhattan","line":17}],"imports":[],"terms":["bootstrap","fixtures","matrix","structs","point","make","manhattan"]},{"id":"eb6c433fe01f1e6b9fd3a83a79c6575f3e1431b8cccfd78ac6d8db6d0e699eea","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/msgpack.t27","health":"ok","module":"TriMsgpack"}],"description":"t27/specs/","symbols":[{"name":"MsgPackType","line":13},{"name":"MsgPackValue","line":17},{"name":"encode","line":33},{"name":"decode","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","msgpack","msg","pack","encode","decode"]},{"id":"eb7d96285206407ce71e8db80252ecfac68c600e7e516fdc4a247284f30d6ae6","sources":[{"repo":"ghashtag/t27","path":"examples/fpga/qmtech_minimal/design.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["examples","fpga","qmtech","minimal","design"]},{"id":"eb822f04be9609854529eba06b82a4466dbaab6d4967b2784b110f2935033d2e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_07_no_rhs.t27","health":"ok","module":"NegNoRhs"}],"description":"ADR-008 negative: a declaration with no right-hand side at all.","symbols":[{"name":"Opaque","line":3}],"imports":[],"terms":["bootstrap","fixtures","generic","neg","rhs","opaque"]},{"id":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bigint.t27","health":"ok","module":"TernaryBigInt"}],"description":"t27/specs/ternary/bigint.t27 TVC BigInt - Balanced Ternary Arbitrary Precision Arithmetic ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q Balanced Ternary representation: - Each trit has value {-1, 0, +1} - Number = Σ(trit[i] × 3^i) for i = 0..n-1","symbols":[{"name":"MAX_TRITS","line":34},{"name":"TRIT_NEG","line":37},{"name":"TRIT_ZERO","line":38},{"name":"TRIT_POS","line":39},{"name":"SIMD_CHUNK_SIZE","line":42},{"name":"SIMD_CHUNKS","line":45},{"name":"KARATSUBA_THRESHOLD","line":48},{"name":"SIMD_THRESHOLD","line":51},{"name":"I64_DIV_THRESHOLD","line":54},{"name":"DivResult","line":61},{"name":"BigInt","line":68},{"name":"Self","line":74},{"name":"zero","line":81},{"name":"from_i64","line":91},{"name":"to_i64","line":128},{"name":"normalize","line":149},{"name":"is_zero","line":157},{"name":"is_negative","line":164},{"name":"is_positive","line":170},{"name":"signum","line":176},{"name":"negate","line":193},{"name":"abs","line":206},{"name":"add","line":221},{"name":"add_scalar","line":231},{"name":"max_len","line":235},{"name":"a_trit","line":243},{"name":"b_trit","line":244},{"name":"add_simd","line":270},{"name":"max_len","line":272},{"name":"num_chunks","line":273},{"name":"offset","line":278},{"name":"idx","line":282},{"name":"a_trit","line":283},{"name":"b_trit","line":284},{"name":"sub","line":327},{"name":"neg_b","line":328},{"name":"mul","line":339},{"name":"mul_simple","line":349},{"name":"mul_karatsuba","line":407},{"name":"m","line":414},{"name":"z0","line":461},{"name":"z2","line":462},{"name":"a_sum","line":464},{"name":"b_sum","line":465},{"name":"z1_shifted","line":474},{"name":"z2_shifted","line":478},{"name":"compare_abs","line":491},{"name":"a_abs","line":492},{"name":"b_abs","line":493},{"name":"compare","line":514},{"name":"a_sign","line":516},{"name":"b_sign","line":517},{"name":"cmp","line":526},{"name":"compare_abs","line":537},{"name":"div_rem","line":548},{"name":"a_val","line":556},{"name":"b_val","line":557},{"name":"q_val","line":563},{"name":"r_val","line":564},{"name":"div_rem_long","line":579},{"name":"cmp","line":580},{"name":"result_neg","line":595},{"name":"divisor","line":599},{"name":"shifted_divisor","line":614},{"name":"test_sub","line":621},{"name":"test_add","line":630},{"name":"div","line":658},{"name":"mod","line":663},{"name":"shift_left","line":673},{"name":"shift_right","line":693},{"name":"newton_reciprocal","line":717},{"name":"b_abs","line":722},{"name":"initial_pos","line":726},{"name":"two","line":739},{"name":"max_iterations","line":740},{"name":"bx","line":745},{"name":"two_scaled","line":746},{"name":"diff","line":747},{"name":"x_new","line":748},{"name":"div_newton","line":769},{"name":"precision","line":780},{"name":"recip","line":783},{"name":"product","line":786},{"name":"qb","line":790},{"name":"z","line":814},{"name":"z","line":822},{"name":"a","line":828},{"name":"b","line":829},{"name":"c","line":830},{"name":"a","line":838},{"name":"b","line":839},{"name":"c","line":840},{"name":"values","line":848},{"name":"big","line":850},{"name":"back","line":851},{"name":"pos","line":871},{"name":"neg","line":872},{"name":"z","line":873},{"name":"pos","line":881},{"name":"neg","line":882},{"name":"z","line":883},{"name":"pos","line":891},{"name":"neg","line":892},{"name":"z","line":893},{"name":"a","line":901},{"name":"b","line":902},{"name":"c","line":903},{"name":"neg_a","line":904},{"name":"neg_b","line":905},{"name":"neg_c","line":906},{"name":"a","line":914},{"name":"b","line":915},{"name":"c","line":916},{"name":"a","line":924},{"name":"b","line":925},{"name":"sum","line":926},{"name":"a","line":932},{"name":"b","line":933},{"name":"sum","line":934},{"name":"a","line":940},{"name":"z","line":941},{"name":"sum1","line":942},{"name":"sum2","line":943},{"name":"a","line":950},{"name":"b","line":951},{"name":"sum1","line":952},{"name":"sum2","line":953},{"name":"a","line":959},{"name":"b","line":960},{"name":"diff","line":961},{"name":"a","line":967},{"name":"b","line":968},{"name":"diff","line":969},{"name":"a","line":975},{"name":"b","line":976},{"name":"prod","line":977},{"name":"a","line":983},{"name":"b","line":984},{"name":"prod","line":985},{"name":"a","line":991},{"name":"z","line":992},{"name":"prod","line":993},{"name":"a","line":999},{"name":"b","line":1000},{"name":"prod","line":1001},{"name":"a","line":1007},{"name":"b","line":1008},{"name":"prod_simple","line":1009},{"name":"prod_karat","line":1010},{"name":"a","line":1016},{"name":"b","line":1017},{"name":"a","line":1023},{"name":"b","line":1024},{"name":"a","line":1030},{"name":"b","line":1031},{"name":"a","line":1037},{"name":"b","line":1038},{"name":"a","line":1044},{"name":"b","line":1045},{"name":"result","line":1046},{"name":"a","line":1053},{"name":"b","line":1054},{"name":"result","line":1055},{"name":"a","line":1062},{"name":"b","line":1063},{"name":"result","line":1064},{"name":"a","line":1071},{"name":"b","line":1072},{"name":"result","line":1073},{"name":"a","line":1080},{"name":"shifted","line":1081},{"name":"a","line":1087},{"name":"shifted","line":1088},{"name":"a","line":1094},{"name":"shifted","line":1095},{"name":"a","line":1101},{"name":"b","line":1102},{"name":"result","line":1103},{"name":"a","line":1110},{"name":"b","line":1111},{"name":"result_newton","line":1112},{"name":"result_regular","line":1113},{"name":"a","line":1120},{"name":"b","line":1121},{"name":"sum","line":1122},{"name":"a","line":1128},{"name":"b","line":1129},{"name":"prod","line":1130},{"name":"values","line":1140},{"name":"a","line":1142},{"name":"z","line":1143},{"name":"values","line":1151},{"name":"a","line":1153},{"name":"z","line":1154},{"name":"vals_a","line":1161},{"name":"vals_b","line":1162},{"name":"a","line":1165},{"name":"b","line":1166},{"name":"a","line":1174},{"name":"b","line":1175},{"name":"c","line":1176},{"name":"vals_a","line":1182},{"name":"vals_b","line":1183},{"name":"a","line":1186},{"name":"b","line":1187},{"name":"a","line":1195},{"name":"b","line":1196},{"name":"c","line":1197},{"name":"a","line":1203},{"name":"b","line":1204},{"name":"c","line":1205},{"name":"values","line":1211},{"name":"a","line":1213},{"name":"values","line":1220},{"name":"a","line":1222},{"name":"vals_a","line":1229},{"name":"vals_b","line":1230},{"name":"a","line":1233},{"name":"b","line":1234},{"name":"vals_a","line":1242},{"name":"vals_b","line":1243},{"name":"a","line":1246},{"name":"b","line":1247},{"name":"result","line":1248},{"name":"reconstructed","line":1249},{"name":"a","line":1258},{"name":"b","line":1259},{"name":"c","line":1260},{"name":"vals_a","line":1268},{"name":"vals_b","line":1269},{"name":"a","line":1272},{"name":"b","line":1273},{"name":"cmp","line":1274},{"name":"values","line":1282},{"name":"a","line":1284},{"name":"shifted","line":1285},{"name":"restored","line":1286},{"name":"a","line":1300},{"name":"b","line":1301},{"name":"a","line":1313},{"name":"b","line":1314},{"name":"a","line":1326},{"name":"b","line":1327},{"name":"a","line":1339},{"name":"b","line":1340},{"name":"a","line":1352},{"name":"b","line":1353},{"name":"a","line":1365},{"name":"a","line":1392},{"name":"b","line":1393},{"name":"a","line":1405},{"name":"a","line":1417},{"name":"a","line":1429}],"imports":[],"terms":["ternary","bigint","big","int","max","trits","trit","neg","zero","pos","simd","chunk","size","chunks","karatsuba","threshold","i64","div","self","normalize","negative","positive","signum","negate","abs","scalar","len","num","offset","idx","sub","mul","simple","sum","shifted","compare","sign","cmp","rem","val","long","divisor","mod","shift","left","right","newton","reciprocal","initial","two","iterations","scaled","diff","precision","recip","product","values","back","sum1","sum2","prod","karat","regular","vals","reconstructed","restored"]},{"id":"eca06ff812c61e2693f706b7389c71dcd769c30dfbb2cfb958e0416a5118b404","sources":[{"repo":"ghashtag/t27","path":"specs/ar/asp_solver.t27","health":"ok","module":null}],"description":"spec: AspSolver Answer Set Programming solver for neuro-symbolic reasoning","symbols":[{"name":"Literal","line":7},{"name":"Clause","line":14},{"name":"Program","line":19},{"name":"AnswerSet","line":25},{"name":"MAX_ASP_STEPS","line":32},{"name":"new_program","line":35},{"name":"add_clause","line":43},{"name":"add_constraint","line":53},{"name":"solve","line":63},{"name":"find_stable_model","line":97},{"name":"extract_all_literals","line":121},{"name":"generate_combinations","line":144},{"name":"literal_in_list","line":167},{"name":"satisfies_clauses","line":177},{"name":"satisfies_constraints","line":187},{"name":"satisfies_clause","line":198},{"name":"literals_match","line":218},{"name":"verify_stability","line":241},{"name":"negate_literal","line":258},{"name":"is_derivable","line":267},{"name":"calculate_cost","line":312},{"name":"naf","line":324}],"imports":[],"terms":["asp","solver","literal","clause","program","answer","set","max","steps","constraint","solve","find","stable","model","extract","literals","generate","combinations","list","satisfies","clauses","constraints","match","verify","stability","negate","derivable","calculate","cost","naf"]},{"id":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","sources":[{"repo":"ghashtag/t27","path":"specs/isa/registers.t27","health":"warn","module":"ISARegisters"}],"description":"t27/specs/isa/registers.t27 TRI27 ISA Register File Specification Register definitions, Coptic encoding, and register file operations","symbols":[{"name":"NUM_REGISTERS","line":16},{"name":"REG_WIDTH","line":17},{"name":"COPIC_BASE","line":18},{"name":"AGENT_COUNT","line":21},{"name":"R0","line":24},{"name":"R1","line":25},{"name":"R2","line":26},{"name":"R3","line":27},{"name":"R4","line":28},{"name":"R5","line":29},{"name":"R6","line":30},{"name":"R7","line":31},{"name":"R8","line":32},{"name":"R9","line":33},{"name":"R10","line":34},{"name":"R11","line":35},{"name":"R12","line":36},{"name":"R13","line":37},{"name":"R14","line":38},{"name":"R15","line":39},{"name":"R16","line":40},{"name":"R17","line":41},{"name":"R18","line":42},{"name":"R19","line":43},{"name":"R20","line":44},{"name":"R21","line":45},{"name":"R22","line":46},{"name":"R23","line":47},{"name":"R24","line":48},{"name":"R25","line":49},{"name":"R26","line":50},{"name":"FLAG_ZERO","line":53},{"name":"FLAG_NEG","line":54},{"name":"FLAG_CARRY","line":55},{"name":"FLAG_OVERFLOW","line":56},{"name":"FLAG_TRAP","line":57},{"name":"FLAG_INTERRUPT","line":58},{"name":"COPTIC_ALPHABET","line":66},{"name":"reg_read","line":112},{"name":"reg_write","line":131},{"name":"reg_to_coptic","line":153},{"name":"coptic_to_reg","line":163},{"name":"status_read","line":183},{"name":"status_val","line":184},{"name":"mask","line":185},{"name":"status_write","line":192},{"name":"mask","line":198},{"name":"push_reg","line":217},{"name":"value","line":219},{"name":"pop_reg","line":244},{"name":"value","line":250},{"name":"save_context","line":271},{"name":"restore_context","line":282},{"name":"ARG0","line":295},{"name":"ARG1","line":296},{"name":"ARG2","line":297},{"name":"ARG3","line":298},{"name":"TMP0","line":301},{"name":"TMP1","line":302},{"name":"TMP2","line":303},{"name":"TMP3","line":304},{"name":"TMP4","line":305},{"name":"SAVED0","line":308},{"name":"SAVED1","line":309},{"name":"SAVED2","line":310},{"name":"SAVED3","line":311},{"name":"SAVED4","line":312},{"name":"SAVED5","line":313},{"name":"FP","line":316},{"name":"SP","line":317},{"name":"LR","line":318},{"name":"PC","line":319},{"name":"STATUS","line":320},{"name":"EH","line":321},{"name":"KSP","line":322},{"name":"TP","line":323},{"name":"cp","line":459},{"name":"recovered","line":460},{"name":"cp","line":469},{"name":"val","line":531}],"imports":[{"name":"base::types","line":9}],"terms":["isa","registers","isaregisters","num","reg","width","copic","base","count","r10","r11","r12","r13","r14","r15","r16","r17","r18","r19","r20","r21","r22","r23","r24","r25","r26","flag","zero","neg","carry","overflow","trap","interrupt","coptic","alphabet","read","write","status","val","mask","push","pop","save","restore","arg0","arg1","arg2","arg3","tmp0","tmp1","tmp2","tmp3","tmp4","saved0","saved1","saved2","saved3","saved4","saved5","ksp","recovered"]},{"id":"ed4df738f5defa8dc460667b55d0ebe4f498e6544d647f301ae97636b016d885","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf512.t27","health":"ok","module":"triformat_bnf512"}],"description":"bnf512.t27 -- BNF512: Binary Network Float, 512-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.","symbols":[{"name":"SIGN_BITS","line":28},{"name":"EXP_BITS","line":29},{"name":"MANT_BITS","line":30},{"name":"EXP_BIAS","line":31},{"name":"exp_values","line":33},{"name":"is_finite","line":35}],"imports":[{"name":"base::types","line":26}],"terms":["numeric","bnf512","triformat","sign","bits","exp","mant","bias","values","finite"]},{"id":"edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_deployment.t27","health":"ok","module":"ProductionDeployment"}],"description":"Production deployment - FPGA programming and field deployment Tests deployment procedures and monitoring setup","symbols":[{"name":"DEPLOY_PENDING","line":8},{"name":"DEPLOY_PROGRAMMING","line":9},{"name":"DEPLOY_VERIFIED","line":10},{"name":"DEPLOY_ACTIVE","line":11},{"name":"DEPLOY_FAILED","line":12},{"name":"STEP_BITSTREAM","line":15},{"name":"STEP_FLASH","line":16},{"name":"STEP_VERIFY","line":17},{"name":"STEP_MONITOR","line":18},{"name":"create_deployment","line":21},{"name":"extract_deploy_state","line":28},{"name":"extract_deploy_step","line":32},{"name":"extract_deploy_progress","line":36},{"name":"extract_device_id","line":40},{"name":"deployment_complete","line":45},{"name":"create_bitstream_info","line":51},{"name":"extract_bitstream_size","line":57},{"name":"extract_bitstream_checksum","line":61},{"name":"extract_bitstream_version","line":65},{"name":"flash_programming_success","line":70},{"name":"create_monitor_config","line":75},{"name":"extract_sample_rate","line":80},{"name":"extract_metrics_enabled","line":84},{"name":"create_checklist","line":89},{"name":"checklist_power","line":98},{"name":"checklist_cooling","line":102},{"name":"checklist_network","line":106},{"name":"checklist_monitoring","line":110},{"name":"checklist_complete","line":115}],"imports":[{"name":"base::types","line":5}],"terms":["net","production","deployment","deploy","programming","verified","active","failed","step","bitstream","flash","verify","monitor","create","extract","state","progress","device","complete","info","size","checksum","success","config","sample","rate","metrics","enabled","checklist","power","cooling","network","monitoring"]},{"id":"ee002f94a63c0a07ea37cd3b1ddcaca3a4ee552a99a18e532d99b16f1ae12ce8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_ladder.t27","health":"ok","module":"TriGftLadder"}],"description":"TRI-NET GF-T (ternary-native GoldenFloat) ladder geometry + validity. tri_compute_gfvalid.is_finite_gft16 hardcodes ONE rung (GF-T16, reserved offset 80). But GF-T is a LADDER -- GF-T4/8/16/32/... -- each with its own reserved special row at offset_max = 3^Et - 1, where Et is the number of balanced-ternary exponent trits (the ternary analogue of the all-ones binary exponent). This spec generalizes finiteness across the ladder so a receipt/settle path can validate a","symbols":[{"name":"GFT4_ET","line":31},{"name":"GFT8_ET","line":32},{"name":"GFT16_ET","line":33},{"name":"GFT32_ET","line":34},{"name":"GFT64_ET","line":35},{"name":"GFT128_ET","line":36},{"name":"GFT256_ET","line":37},{"name":"GFT512_ET","line":38},{"name":"GFT1024_ET","line":39},{"name":"GFT4_MANT","line":43},{"name":"GFT8_MANT","line":44},{"name":"GFT16_MANT","line":45},{"name":"GFT32_MANT","line":46},{"name":"GFT64_MANT","line":47},{"name":"GFT128_MANT","line":48},{"name":"GFT256_MANT","line":49},{"name":"GFT512_MANT","line":50},{"name":"GFT1024_MANT","line":51},{"name":"fib","line":56},{"name":"gft_et_of_rung","line":72},{"name":"gft_mant_of_rung","line":75},{"name":"gft_pow3","line":81},{"name":"gft_offset_max","line":96},{"name":"is_finite_gft_n","line":102},{"name":"gft_offset_in_range","line":107},{"name":"gft_bias","line":120},{"name":"gft_pow3_u64","line":130},{"name":"gft_offset_max_u64","line":143},{"name":"gft_bias_u64","line":148},{"name":"gft_mant_bits","line":154},{"name":"gft_mant_one","line":168},{"name":"width_to_et","line":175}],"imports":[{"name":"base::types","line":27}],"terms":["net","gft","ladder","gft4","gft8","gft16","gft32","gft64","gft128","gft256","gft512","gft1024","mant","fib","rung","pow3","offset","max","finite","range","bias","u64","bits","one","width"]},{"id":"ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_simulator.t27","health":"warn","module":"network_simulator"}],"description":"Network Simulator - event-driven simulation for mesh networks Enables realistic network behavior testing and validation","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_EVENTS","line":8},{"name":"MAX_PACKETS","line":9},{"name":"SIMULATION_TICK_MS","line":10},{"name":"create_sim_event","line":13},{"name":"get_event_id","line":20},{"name":"get_event_timestamp","line":24},{"name":"get_event_type","line":28},{"name":"get_event_node_id","line":32},{"name":"EVENT_PACKET_SEND","line":37},{"name":"EVENT_PACKET_RECV","line":38},{"name":"EVENT_NODE_FAILURE","line":39},{"name":"EVENT_LINK_FAILURE","line":40},{"name":"EVENT_TIMER_EXPIRE","line":41},{"name":"EVENT_STATE_CHANGE","line":42},{"name":"create_node_state","line":45},{"name":"get_node_id","line":52},{"name":"get_node_status","line":56},{"name":"get_node_energy","line":60},{"name":"get_node_position","line":64},{"name":"NODE_ACTIVE","line":69},{"name":"NODE_INACTIVE","line":70},{"name":"NODE_FAILED","line":71},{"name":"NODE_SLEEPING","line":72},{"name":"update_node_status","line":75},{"name":"update_node_energy","line":84},{"name":"create_link_state","line":107},{"name":"get_link_source","line":114},{"name":"get_link_dest","line":118},{"name":"get_link_quality","line":122},{"name":"get_link_latency","line":126},{"name":"update_link_quality","line":131},{"name":"is_link_operational","line":140},{"name":"create_packet","line":151},{"name":"get_packet_id","line":159},{"name":"get_packet_source","line":163},{"name":"get_packet_dest","line":167},{"name":"get_packet_size","line":171},{"name":"get_packet_sequence","line":175},{"name":"calculate_transmission_time","line":180},{"name":"create_sim_state","line":191},{"name":"get_sim_time","line":197},{"name":"get_sim_event_count","line":201},{"name":"get_sim_node_count","line":205},{"name":"advance_simulation","line":210},{"name":"process_event","line":221},{"name":"create_sim_stats","line":248},{"name":"get_packets_sent","line":255},{"name":"get_packets_recv","line":259},{"name":"get_packets_dropped","line":263},{"name":"get_total_latency","line":267},{"name":"calculate_delivery_ratio","line":272},{"name":"calculate_average_latency","line":284},{"name":"create_topology","line":296},{"name":"inject_fault","line":308},{"name":"run_simulation_step","line":322},{"name":"generate_simulation_report","line":346}],"imports":[{"name":"base::types","line":5}],"terms":["net","network","simulator","max","nodes","events","packets","simulation","tick","create","sim","event","get","timestamp","node","packet","send","recv","failure","link","timer","expire","state","status","energy","position","active","inactive","failed","sleeping","dest","quality","latency","operational","size","sequence","calculate","transmission","time","count","advance","process","stats","sent","dropped","total","delivery","ratio","average","topology","inject","fault","step","generate","report"]},{"id":"ee2c014c00caceaf27b81474757f674c961bc4930613a8aabf75dad6dbed65ba","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agents.t27","health":"ok","module":"Agents"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["agents"]},{"id":"ee69c64656a0c092b397d440479f02e24391d40064c64af6b9ae2e4c3dccb979","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline.t27","health":"ok","module":"TriPipeline"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline"]},{"id":"ee8ecc6ee599567979a46dc51bccd9cd04cf4aca2af157874eb528ad877353e9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/rtree.t27","health":"ok","module":"TriRtree"}],"description":"t27/specs/","symbols":[{"name":"Rect","line":13},{"name":"RTreeNode","line":20},{"name":"RTree","line":26},{"name":"init","line":36},{"name":"insert","line":41},{"name":"query","line":46}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["trees","rtree","rect","node","init","insert","query"]},{"id":"ee9f123c12e3f5dfe8594f1e27977994b654966d8bb8d4d19c464b40116f70f7","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_edge_argmax.t27","health":"warn","module":"TrinityFpgaEdgeArgmaxT27"}],"description":"","symbols":[{"name":"on_comb","line":6}],"imports":[],"terms":["dmitrii","memory","rtl","fpga","edge","argmax","comb"]},{"id":"eef7ff2a5ea1d0b9a6071f460170f8b0f9091199a6973402056f9af579e08c5c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/scale_up.t27","health":"ok","module":"IGLAScaleUp"}],"description":"t27/specs/","symbols":[{"name":"DeploySize","line":13},{"name":"ScalingConfig","line":19},{"name":"DeploymentMetrics","line":27},{"name":"scale_up","line":39},{"name":"distill","line":44},{"name":"benchmark_deployment","line":49}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["igla","training","scale","iglascale","deploy","size","scaling","config","deployment","metrics","distill","benchmark"]},{"id":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","sources":[{"repo":"ghashtag/t27","path":"specs/base/ops.t27","health":"warn","module":"tritype-ops"}],"description":"ops.t27 — Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison","symbols":[{"name":"NEGONE","line":12},{"name":"ZERO","line":13},{"name":"ONE","line":14},{"name":"Trit","line":17},{"name":"mult_table","line":34},{"name":"add_table","line":41},{"name":"carry_table","line":46},{"name":"trit_multiply_table","line":54},{"name":"idx","line":55},{"name":"trit_add_table","line":61},{"name":"idx","line":62},{"name":"trit_carry_table","line":69},{"name":"idx","line":70},{"name":"AddResult","line":75},{"name":"trit_add_with_carry","line":85},{"name":"trit_compare","line":120},{"name":"trit_negate","line":133},{"name":"trit_abs","line":144},{"name":"trit_min","line":150},{"name":"trit_max","line":156},{"name":"trit_subtract","line":162},{"name":"trit_sign","line":168},{"name":"trit_clamp","line":174},{"name":"trit_is_negative","line":182},{"name":"trit_is_zero","line":188},{"name":"trit_is_positive","line":194},{"name":"trit_equal","line":200},{"name":"trit_not_equal","line":206},{"name":"trit_lt","line":212},{"name":"trit_le","line":218},{"name":"trit_gt","line":224},{"name":"trit_ge","line":230},{"name":"trit_multiply_with_carry","line":238},{"name":"product","line":240},{"name":"trit_reverse","line":250},{"name":"trit_multiply_by_power_of_two","line":257},{"name":"carry","line":261},{"name":"trit_power","line":279},{"name":"trit_from_bool","line":299},{"name":"trit_to_bool","line":306},{"name":"trit_abs_diff","line":313},{"name":"trit_cond_swap","line":320},{"name":"trit_is_unit","line":326},{"name":"trit_is_identity","line":332},{"name":"trit_is_negated","line":338},{"name":"trits","line":361},{"name":"trits","line":401},{"name":"trits","line":448},{"name":"result","line":458},{"name":"result","line":465},{"name":"result","line":472},{"name":"result","line":479},{"name":"trits","line":486},{"name":"result","line":490},{"name":"trits","line":499},{"name":"result","line":503},{"name":"trits","line":584},{"name":"trits","line":619},{"name":"trits","line":644},{"name":"trits","line":662},{"name":"trits","line":709},{"name":"trits","line":724},{"name":"a","line":780},{"name":"b","line":781},{"name":"result","line":790},{"name":"result","line":797},{"name":"trits","line":804},{"name":"result","line":806},{"name":"result","line":835},{"name":"trits","line":909},{"name":"trits","line":924}],"imports":[],"terms":["base","ops","tritype","negone","zero","one","trit","mult","table","carry","multiply","idx","compare","negate","abs","min","max","subtract","sign","clamp","negative","positive","equal","product","reverse","power","two","diff","cond","swap","unit","identity","negated","trits"]},{"id":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_encoding.t27","health":"ok","module":"Tri27Encoding"}],"description":"specs/isa/ternary_encoding.t27 -- the TRI-27 instruction word as the pinned consumer decodes it Rewritten for S05 of gHashTag/trinity#988 (gHashTag/t27#3567). Until 2026-09-12 this file was a 38-line `algorithm` block that stated the trit alphabet {-1, 0, +1} and nothing else; it did not parse (tools/specs_generate_baseline.txt), yet specs/trinity/capabilities/tri27.toolchain.t27 names it as the canonical spec of the whole TRI-27 toolchain. It now states the instruction encoding that gHashTag/trinity actually executes: src/tri27/emu/decoder.zig at 976df517, which","symbols":[{"name":"KIND","line":18},{"name":"ID","line":19},{"name":"NAME","line":20},{"name":"CONSUMER_REPO","line":21},{"name":"PINNED_REVISION","line":22},{"name":"OWNER_MODULE","line":23},{"name":"OWNER_LINES","line":24},{"name":"TRIT_VALUES","line":25},{"name":"WORD_BITS","line":27},{"name":"INSTRUCTION_BYTES","line":28},{"name":"BYTE_ORDER","line":29},{"name":"OPCODE_SHIFT","line":30},{"name":"OPCODE_MASK","line":31},{"name":"DST_SHIFT","line":32},{"name":"REG_MASK","line":33},{"name":"SRC1_SHIFT","line":34},{"name":"SRC1_MASK_IMM_FORM","line":35},{"name":"SRC2_SHIFT","line":36},{"name":"V3_SHIFT","line":37},{"name":"IMM_SHIFT","line":38},{"name":"IMM_MASK","line":39},{"name":"IMM_SIGN_BIT","line":40},{"name":"IMM_BITS","line":41},{"name":"IMM_MIN","line":42},{"name":"IMM_MAX","line":43},{"name":"LAYOUT_IMM_FORM","line":44},{"name":"LAYOUT_THREE_OPERAND","line":45},{"name":"LAYOUT_TWO_OPERAND","line":46},{"name":"LAYOUT_BUNDLE3","line":47},{"name":"OPCODE_COUNT","line":49},{"name":"OPCODE_NAMES","line":50},{"name":"OPCODE_VALUES","line":51},{"name":"OP_NOP","line":52},{"name":"OP_LD","line":53},{"name":"OP_ST","line":54},{"name":"OP_LDI","line":55},{"name":"OP_STI","line":56},{"name":"OP_MOV","line":57},{"name":"OP_ADD","line":58},{"name":"OP_SUB","line":59},{"name":"OP_MUL","line":60},{"name":"OP_DIV","line":61},{"name":"OP_INC","line":62},{"name":"OP_DEC","line":63},{"name":"OP_EXP","line":64},{"name":"OP_SIN","line":65},{"name":"OP_AND","line":66},{"name":"OP_OR","line":67},{"name":"OP_XOR","line":68},{"name":"OP_NOT","line":69},{"name":"OP_SHL","line":70},{"name":"OP_SHR","line":71},{"name":"OP_STR_LOAD","line":72},{"name":"OP_STR_CONCAT","line":73},{"name":"OP_STR_PRINT","line":74},{"name":"OP_FILE_READ","line":75},{"name":"OP_FILE_WRITE","line":76},{"name":"OP_FILE_EXISTS","line":77},{"name":"OP_JMP","line":78},{"name":"OP_JZ","line":79},{"name":"OP_JNZ","line":80},{"name":"OP_CALL","line":81},{"name":"OP_JGT","line":82},{"name":"OP_JLT","line":83},{"name":"OP_RET","line":84},{"name":"OP_HALT","line":85},{"name":"OP_DOT","line":86},{"name":"OP_BIND","line":87},{"name":"OP_BUNDLE2","line":88},{"name":"OP_BUNDLE3","line":89},{"name":"OP_PHI_CONST","line":90},{"name":"OP_PI_CONST","line":91},{"name":"OP_E_CONST","line":92},{"name":"OP_SACR","line":93},{"name":"OP_LD_IMM","line":94},{"name":"OP_ADD3","line":95},{"name":"OP_SUB3","line":96},{"name":"OP_CMP3","line":97},{"name":"OP_SYSCALL","line":98},{"name":"IMM_FORM_COUNT","line":100},{"name":"IMM_FORM","line":101},{"name":"SRC2_FORM_COUNT","line":103},{"name":"SRC2_FORM","line":104},{"name":"UNKNOWN_OPCODE_RULE","line":105},{"name":"REGISTER_FIELD_RULE","line":106},{"name":"SRC2_LOSS_RULE","line":107},{"name":"SACR_MODE_RULE","line":108},{"name":"FINDING_COUNT","line":110},{"name":"FINDINGS","line":111},{"name":"ENABLED","line":112},{"name":"is_defined_opcode","line":116},{"name":"decode_opcode","line":167},{"name":"has_imm","line":172},{"name":"has_src2","line":199},{"name":"opcode_of","line":210},{"name":"dst_of","line":214},{"name":"src1_of","line":218},{"name":"src2_of","line":223},{"name":"v3_of","line":229},{"name":"imm_of","line":234},{"name":"imm_clamped","line":241},{"name":"imm_field","line":247},{"name":"encode","line":253},{"name":"bundle3_word","line":264}],"imports":[],"terms":["isa","ternary","encoding","tri27encoding","kind","consumer","pinned","revision","owner","trit","values","word","bits","bytes","byte","order","opcode","shift","mask","dst","reg","src1","imm","form","src2","sign","bit","min","max","layout","three","operand","two","bundle3","count","nop","ldi","sti","mov","sub","mul","div","inc","dec","exp","sin","xor","shl","shr","str","load","concat","print","read","write","exists","jmp","jnz","call","jgt","jlt","ret","halt","dot","bind","bundle2","phi","sacr","add3","sub3","cmp3","syscall","unknown","rule","register","field","loss","mode","finding","findings","enabled","defined","decode","clamped","encode"]},{"id":"ef97c85a18e66c8236579ad970aa519e61b85deb9c2094b7ae5dad85e7d1a767","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/gematria.t27","health":"ok","module":"tool_trinity_tri_gematria"}],"description":"specs/tools/trinity/tri/gematria.t27 -- tool gHashTag/trinity:tri/gematria, the `tri gematria` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/gematria`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["gematria","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"f03e65c6d1814c4d6237b43d428b1baec0ef499487a25ca6d53e5c0e50d8b9be","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/control_flow.t27","health":"ok","module":"trinity_matrix_control_flow"}],"description":"trinity_matrix/control_flow.t27 -- feature control flow: if/else, while, for over a range, break and continue.","symbols":[{"name":"count_odd_below","line":5},{"name":"first_multiple","line":14},{"name":"sign","line":23}],"imports":[],"terms":["bootstrap","fixtures","matrix","control","flow","count","odd","below","multiple","sign"]},{"id":"f046ff4cde6b29a60b3821753eec2dbf66f01bc183ae9906af3ea97c089e6f8b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/ops.railway-cli.t27","health":"ok","module":"trinity_capability_ops_railway_cli"}],"description":"specs/trinity/capabilities/ops.railway-cli.t27 -- capability trinity/ops.railway-cli: Railway service tools: seven railway-* commands under src/cli One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","ops","railway","cli","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"f055f3e19d5672b8a2a023c30ceb98afe73b1002e00c50a9eed5041cdb51da81","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/llm.igla-chat.t27","health":"ok","module":"trinity_capability_llm_igla_chat"}],"description":"specs/trinity/capabilities/llm.igla-chat.t27 -- capability trinity/llm.igla-chat: IGLA chat front-ends: fluent, trinity-hybrid and the igla trace tests One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","llm","igla","chat","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/subth_clk.t27","health":"warn","module":"sacred-subth_clk"}],"description":"subth_clk.t27 — Sacred Opcode 0xE5: Sub-threshold Clock Gating Hardware for sub-threshold clock gating for power reduction","symbols":[{"name":"OP_SUBTH_CLK","line":12},{"name":"NUM_CLK_DOMAINS","line":14},{"name":"SUBTH_THRESHOLD_MV","line":15},{"name":"NORMAL_VOLTAGE_MV","line":16},{"name":"CLK_GATE_OFF","line":18},{"name":"CLK_GATE_ON","line":19},{"name":"CLK_GATE_AUTO","line":20},{"name":"POWER_STATE_ACTIVE","line":22},{"name":"POWER_STATE_IDLE","line":23},{"name":"POWER_STATE_SLEEP","line":24},{"name":"POWER_STATE_DEEP_SLEEP","line":25},{"name":"ClkGateMode","line":31},{"name":"PowerState","line":37},{"name":"ClkDomain","line":44},{"name":"SubthConfig","line":52},{"name":"PowerMetrics","line":59},{"name":"clk_domain_enabled","line":72},{"name":"clk_domain_gate_active","line":78},{"name":"clk_domain_is_idle","line":85},{"name":"clk_domain_pulse","line":92},{"name":"clk_domain_decay","line":104},{"name":"new_count","line":105},{"name":"is_subthreshold","line":121},{"name":"voltage_within_range","line":130},{"name":"subth_power_estimate","line":139},{"name":"ratio","line":141},{"name":"power_baseline","line":142},{"name":"estimated","line":143},{"name":"power_savings_ratio","line":149},{"name":"normal_power","line":150},{"name":"subth_power","line":151},{"name":"saved","line":157},{"name":"ratio","line":158},{"name":"power_state_can_gate","line":169},{"name":"power_state_deeper","line":175},{"name":"power_state_sleep_ok","line":184},{"name":"encode_subth_clk","line":199},{"name":"op","line":201},{"name":"domain_field","line":202},{"name":"mode_field","line":203},{"name":"decode_subth_clk","line":209},{"name":"domain_id","line":210},{"name":"mode","line":211}],"imports":[],"terms":["euler","fpga","subth","clk","sacred","num","domains","threshold","normal","voltage","gate","off","auto","power","state","active","idle","sleep","deep","mode","domain","config","metrics","enabled","pulse","decay","count","subthreshold","within","range","estimate","ratio","baseline","estimated","savings","saved","deeper","encode","field","decode"]},{"id":"f066b8924661eee6b40b59b5c310ce94fbbc0a97a243fa1359ff68cfb10ef7be","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench.t27","health":"ok","module":"Testbench"}],"description":"t27/specs/fpga/testbench.t27 T27 HIR Testbench Auto-Generation Specification Automatically generates Verilog testbenches from HIR modules Includes clock generation, reset sequencing, stimulus, and checking Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"TbClockCfg","line":13},{"name":"clock_cfg","line":19},{"name":"half_period","line":27},{"name":"TbResetCfg","line":33},{"name":"reset_cfg","line":39},{"name":"reset_end_cycle","line":47},{"name":"TbStimulus","line":53},{"name":"stimulus","line":59},{"name":"TbCheck","line":69},{"name":"check","line":76},{"name":"check_with_mask","line":85},{"name":"TbConfig","line":96},{"name":"tb_config","line":105},{"name":"validate_tb_config","line":118},{"name":"validate_stimulus","line":129},{"name":"validate_check","line":137},{"name":"stim_applied_before","line":147},{"name":"check_at_cycle","line":151},{"name":"total_sim_ns","line":155},{"name":"stim_count_before","line":159}],"imports":[],"terms":["fpga","testbench","clock","cfg","half","period","reset","end","cycle","stimulus","mask","config","validate","stim","applied","total","sim","count"]},{"id":"f07180e5dbd5e9cd375c6711c3e58a8250327ade0df9f3ba888d49712fb423df","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn_target_network.t27","health":"ok","module":"DqnTarget"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_TAU","line":13},{"name":"DEFAULT_UPDATE_FREQ","line":14},{"name":"UpdateMethod","line":20},{"name":"TargetUpdateConfig","line":24},{"name":"hard_update","line":35},{"name":"soft_update","line":40},{"name":"should_update","line":45}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["dqn","target","network","default","tau","freq","method","config","hard","soft"]},{"id":"f0763950504737a827af7c1fa561a495c1a963bdce809ed36f94b5dc35160cf6","sources":[{"repo":"ghashtag/t27","path":"specs/server/routes.t27","health":"ok","module":"Routes"}],"description":"specs/server/routes.t27 T27 Server Routes Specification Constitutional Law #4: De-Zig-fication","symbols":[{"name":"MAX_ROUTES","line":9},{"name":"HttpMethod","line":11},{"name":"Route","line":19}],"imports":[{"name":"base::types","line":7}],"terms":["routes","max","http","method","route"]},{"id":"f0843acd6ae7dba69ea6ec147c0c3906d98911afc242457cb4856568be248324","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/skip_list.t27","health":"ok","module":"TriSkipList"}],"description":"t27/specs/","symbols":[{"name":"SkipNode","line":13},{"name":"SkipList","line":19},{"name":"init","line":30},{"name":"insert","line":35},{"name":"search","line":40}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","skip","list","node","init","insert","search"]},{"id":"f0bde5c8a46118437ac641eb8b8f07055679070e32525e50e96e7c90a4baa61b","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/systolic_ternary.t27","health":"warn","module":"igla-race-systolic-ternary"}],"description":"t27/specs/igla/race/systolic_ternary.t27 Systolic ternary processing element (PE) for streaming GEMM Connects ternary GEMM to weight-stationary systolic arrays","symbols":[{"name":"SystolicTernaryPE","line":16},{"name":"systolic_ternary_pe","line":29},{"name":"systolic_ternary_pe_reg","line":39}],"imports":[{"name":"base::types","line":8},{"name":"igla::race::ternary_mac","line":9}],"terms":["igla","race","systolic","ternary","reg"]},{"id":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf8.t27","health":"warn","module":"GF8"}],"description":"t27/specs/numeric/gf8.t27 GoldenFloat8 0 8-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 3 (P1)","symbols":[{"name":"BITS","line":24},{"name":"SIGN_BITS","line":25},{"name":"EXP_BITS","line":26},{"name":"MANT_BITS","line":27},{"name":"EXP_BIAS","line":30},{"name":"PHI_DISTANCE","line":34},{"name":"GF8","line":40},{"name":"encode","line":49},{"name":"sign","line":54},{"name":"abs_val","line":55},{"name":"exp_unbiased","line":58},{"name":"exp_biased","line":59},{"name":"exp_clamped","line":62},{"name":"mant","line":65},{"name":"decode","line":79},{"name":"sign","line":80},{"name":"exp_biased","line":81},{"name":"mant","line":82},{"name":"exp_unbiased","line":90},{"name":"mant_normalized","line":97},{"name":"value","line":103},{"name":"max_value","line":115},{"name":"mant_max","line":117},{"name":"exp_max","line":118},{"name":"min_positive","line":122},{"name":"mant_min","line":124},{"name":"exp_min","line":125},{"name":"epsilon","line":129},{"name":"validate_format","line":138},{"name":"fmt","line":139},{"name":"MEMORY_RATIO_VS_FP32","line":157},{"name":"floor_log2","line":163},{"name":"extract_mantissa","line":177},{"name":"normalized","line":178},{"name":"frac","line":179},{"name":"max_mant","line":180},{"name":"clamp","line":184},{"name":"pow","line":190},{"name":"is_integer","line":206},{"name":"ln_val","line":232},{"name":"ln_approx","line":237},{"name":"t","line":246},{"name":"t2","line":247},{"name":"t3","line":248},{"name":"t5","line":249},{"name":"t7","line":250},{"name":"exp_approx","line":256},{"name":"k","line":268},{"name":"k","line":279},{"name":"floor","line":295}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9},{"name":"base::testing","line":12},{"name":"base::benchmarking","line":13}],"terms":["euler","numeric","gf8","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow","integer","approx"]},{"id":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/bike_catalog.t27","health":"ok","module":"bike-catalog"}],"description":"specs/turbobaby/bike_catalog.t27 -- the shape of a catalog row, and the algebra of class and displacement. Source of truth for the two class discriminants, the six body styles, the three displacement bands and catalog row shape. The catalog API (#8), bike detail screen (#9) and ride game's handling model (#13) consume bookability from availability.t27. Every count below is quoted from data/fleet_seed.json (measured_at 2026-09-12, schema_version 2), or derived","symbols":[{"name":"KIND","line":80},{"name":"ID","line":81},{"name":"NAME","line":82},{"name":"REUSES_AVAILABILITY_ID","line":85},{"name":"BOOKABILITY_INPUT","line":86},{"name":"SOURCE","line":90},{"name":"SOURCE_SCHEMA_VERSION","line":91},{"name":"MEASURED_AT","line":92},{"name":"CLASSES","line":108},{"name":"CLASS_SCOOTER","line":109},{"name":"CLASS_MOTORCYCLE","line":110},{"name":"CLASS_COUNT","line":111},{"name":"CLASS_NONE","line":114},{"name":"BODIES","line":133},{"name":"BODY_SCOOTER","line":134},{"name":"BODY_MAXI_SCOOTER","line":135},{"name":"BODY_ADVENTURE_SCOOTER","line":136},{"name":"BODY_NAKED","line":137},{"name":"BODY_SPORT","line":138},{"name":"BODY_CRUISER","line":139},{"name":"BODY_COUNT","line":140},{"name":"BODY_NONE","line":141},{"name":"SCOOTER_BODY_MAX","line":143},{"name":"DISPLACEMENTS_CC","line":157},{"name":"DISPLACEMENT_COUNT","line":158},{"name":"DISPLACEMENT_MIN_CC","line":160},{"name":"DISPLACEMENT_MAX_CC","line":161},{"name":"BAND_COUNT","line":169},{"name":"BAND_LO","line":170},{"name":"BAND_HI","line":171},{"name":"BAND_SMALL","line":172},{"name":"BAND_MID","line":173},{"name":"BAND_LARGE","line":174},{"name":"BAND_NONE","line":175},{"name":"BAND_NAMES","line":182},{"name":"CatalogRow","line":214},{"name":"row_new","line":229},{"name":"is_valid_class","line":251},{"name":"class_of_body","line":264},{"name":"band_of","line":280},{"name":"units_add_up","line":304},{"name":"FAMILY_KEY_EXAMPLE","line":319},{"name":"UNIT_CODE_EXAMPLE","line":320},{"name":"KM_FIELD","line":321},{"name":"FORBIDDEN_KM_ALIASES","line":322},{"name":"KM_SINCE_PURCHASE_EXAMPLE","line":323},{"name":"KM_ON_THE_CLOCK_EXAMPLE","line":324},{"name":"FORBIDDEN_UNIT_FIELDS","line":325},{"name":"PUBLISHABLE_UNIT_FIELDS","line":338},{"name":"SERVICE_RECORDS_ARE_PUBLIC","line":339},{"name":"km_field_name_is_honest","line":341},{"name":"with_tariff","line":454},{"name":"without_tariff","line":455},{"name":"click_125","line":463},{"name":"nmax_155","line":476},{"name":"xmax_300_new","line":498}],"imports":[],"terms":["turbobaby","user","bot","bike","catalog","kind","reuses","availability","bookability","schema","measured","classes","class","scooter","motorcycle","count","bodies","maxi","adventure","naked","sport","cruiser","max","displacements","displacement","min","band","small","mid","large","row","valid","units","family","key","example","unit","field","forbidden","aliases","since","purchase","clock","fields","publishable","service","records","public","honest","tariff","click","nmax","xmax"]},{"id":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/testgen.t27","health":"warn","module":"testgen"}],"description":"testgen.t27 — Generic Test Generator for TDD-Inside-Spec Generates test code from spec test blocks for multiple backends","symbols":[{"name":"TestGenOptions","line":8},{"name":"TestGen","line":16},{"name":"new","line":21},{"name":"generate","line":29},{"name":"generate_zig_tests","line":46},{"name":"generate_c_tests","line":81},{"name":"generate_verilog_tests","line":106},{"name":"generate_rust_tests","line":147},{"name":"generate_conformance_json","line":177},{"name":"generate_spec_tests_zig","line":225},{"name":"generate_spec_tests_c","line":265},{"name":"generate_spec_tests_rust","line":309},{"name":"generate_assembly_tests_zig","line":351},{"name":"generate_assembly_tests_c","line":380},{"name":"generate_assembly_tests_rust","line":409},{"name":"generate_invariants_zig","line":440},{"name":"generate_benchmarks_zig","line":469},{"name":"mangle_filename","line":492},{"name":"c","line":505},{"name":"escape_json","line":518},{"name":"c","line":522},{"name":"to_snake_case","line":541},{"name":"c","line":545},{"name":"c_type_from_expr","line":563},{"name":"c","line":567},{"name":"emit","line":576},{"name":"emit_line","line":580},{"name":"StringBuilder","line":587},{"name":"new","line":592},{"name":"append","line":600},{"name":"to_string","line":608},{"name":"Program","line":614},{"name":"SpecDecl","line":622},{"name":"TestSection","line":627},{"name":"InvariantSection","line":631},{"name":"BenchSection","line":635},{"name":"TestBlock","line":639},{"name":"TestCase","line":646},{"name":"Invariant","line":652},{"name":"Benchmark","line":660},{"name":"Clause","line":667},{"name":"output","line":714},{"name":"output","line":735},{"name":"output","line":756},{"name":"output","line":777},{"name":"output","line":798},{"name":"output","line":820},{"name":"backends","line":842}],"imports":[],"terms":["compiler","codegen","testgen","gen","options","generate","zig","verilog","rust","conformance","json","assembly","invariants","benchmarks","mangle","filename","escape","snake","case","expr","emit","builder","append","program","decl","section","invariant","bench","block","benchmark","clause","backends"]},{"id":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf64.t27","health":"ok","module":"GF64"}],"description":"t27/specs/numeric/gf64.t27 GoldenFloat64 - 64-bit φ-structured floating point NUMERIC-STANDARD-001 Agent 4 (P1)","symbols":[{"name":"BITS","line":24},{"name":"SIGN_BITS","line":25},{"name":"EXP_BITS","line":26},{"name":"MANT_BITS","line":27},{"name":"EXP_BIAS","line":30},{"name":"PHI_DISTANCE","line":33},{"name":"GF64","line":37},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":68},{"name":"sign","line":69},{"name":"exp_biased","line":70},{"name":"exp_unbiased","line":78},{"name":"mant_normalized","line":85},{"name":"value","line":91},{"name":"max_value","line":101},{"name":"mant_max","line":103},{"name":"exp_max","line":104},{"name":"min_positive","line":108},{"name":"mant_min","line":110},{"name":"exp_min","line":111},{"name":"epsilon","line":115},{"name":"validate_format","line":122},{"name":"fmt","line":123},{"name":"MEMORY_RATIO_VS_FP32","line":139},{"name":"floor_log2_f64","line":143},{"name":"extract_mantissa_64","line":157},{"name":"normalized","line":158},{"name":"frac","line":159},{"name":"max_mant","line":160},{"name":"mant_u64_to_f64","line":164},{"name":"pow2_64","line":168}],"imports":[{"name":"numeric::goldenfloat_family","line":8},{"name":"numeric::phi_ratio","line":9},{"name":"base::testing","line":12},{"name":"base::benchmarking","line":13}],"terms":["euler","fpga","gf64","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","f64","extract","mantissa","frac","u64","pow2"]},{"id":"f171ef4667b77ffd1b063e40cbb605ffd48ab2af624d21995b759aaf1b104e6f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_gherkin_and_roles.t27","health":"ok","module":"m"}],"description":"","symbols":[],"imports":[],"terms":["bootstrap","goldring","gherkin","roles"]},{"id":"f1d6d26bfc285aecc914fd4f89104ad5b8bbfa57ad8f1685ccdc065049190478","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/packed_vsa.t27","health":"warn","module":"PackedVsa"}],"description":"Module: Packed VSA Operations","symbols":[{"name":"TRITS_PER_BYTE","line":19},{"name":"MAX_PACKED_BYTES","line":22},{"name":"LUT_DIM","line":25},{"name":"LUT_SIZE","line":28},{"name":"BindLookupTable","line":38},{"name":"BundleLookupTable","line":43},{"name":"DotLookupTable","line":48},{"name":"packedBind","line":58},{"name":"packedBundle","line":64},{"name":"packedDot","line":70},{"name":"packedUnbind","line":76},{"name":"packedCosineSimilarity","line":82},{"name":"fromHybrid","line":92},{"name":"toHybrid","line":98},{"name":"randomPackedVector","line":104}],"imports":[{"name":"base::types","line":9},{"name":"ternary::packed_trit","line":10},{"name":"ternary::hybrid_arithmetic","line":11},{"name":"numeric::gf16","line":12}],"terms":["vsa","packed","trits","per","byte","max","bytes","lut","dim","size","bind","lookup","table","bundle","dot","unbind","cosine","similarity","hybrid","random","vector"]},{"id":"f1ddbe2cdf89439947728b374031dce4b08639db638ef1dcf87bc412a19eb7f1","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_08.t27","health":"warn","module":"damage_class_08"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"f1e5eefbb3fdd68c2f4f539e8a221d176d21851a20f6abf159266108b547ac2f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/config.t27","health":"ok","module":"TriConfig"}],"description":"t27/specs/","symbols":[{"name":"ConfigValue","line":13},{"name":"ConfigEntry","line":20},{"name":"Config","line":25},{"name":"parse","line":35},{"name":"get_string","line":40},{"name":"get_number","line":45},{"name":"get_bool","line":50}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["utils","config","entry","parse","get"]},{"id":"f1e9aedeba6e513fe9ed235d0501d552b46aa6c3e0c1cb7271888ce20d8f0c76","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/placement_tb.t27","health":"ok","module":"Placement_Testbench"}],"description":"t27/specs/fpga/testbench/placement_tb.t27 FPGA Placement Testbench Tests placement grid, resource allocation, and density constraints","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"GRID_COLS","line":11},{"name":"GRID_ROWS","line":12},{"name":"NUM_CLB_COLS","line":13},{"name":"NUM_BRAM_COLS","line":14},{"name":"NUM_DSP_COLS","line":15},{"name":"MAX_UTILIZATION_PCT","line":16},{"name":"tick","line":27},{"name":"reset","line":32},{"name":"grid_capacity","line":40},{"name":"utilization_pct","line":44},{"name":"check_utilization","line":49},{"name":"estimate_wirelength","line":54}],"imports":[{"name":"fpga::placement::Placement","line":8}],"terms":["fpga","testbench","placement","clk","period","grid","cols","rows","num","clb","bram","dsp","max","utilization","pct","tick","reset","capacity","estimate","wirelength"]},{"id":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","sources":[{"repo":"ghashtag/t27","path":"specs/crons/t27-formal-mutation.t27","health":"ok","module":"cron_t27_formal_mutation"}],"description":"specs/crons/t27-formal-mutation.t27 -- cron github-actions/t27/formal-mutation Source of truth for the job card on t27.ai (#/crons?cron=github-actions/t27/formal-mutation). The schedule was read from t27:.github/workflows/formal-mutation.yml#L25. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"NOTE","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","formal","mutation","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"f2fd554e5cb70cea54f2daf2e3b36699175354595d333585ac56b556a95864c3","sources":[{"repo":"ghashtag/t27","path":"specs/agents/o.t27","health":"ok","module":"agent_o"}],"description":"specs/agents/o.t27 -- agent t27/O, letter O of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/O). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent O - Omicron (Orchestration)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_framework.t27","health":"warn","module":"integration_framework"}],"description":"Integration Framework - module coordination and message passing Enables seamless integration and communication between all T27 modules","symbols":[{"name":"MAX_MODULES","line":7},{"name":"MAX_MESSAGES","line":8},{"name":"MAX_EVENTS","line":9},{"name":"INTEGRATION_VERSION","line":10},{"name":"create_module_registration","line":13},{"name":"get_registered_module_id","line":20},{"name":"get_registered_module_type","line":24},{"name":"get_registered_module_priority","line":28},{"name":"get_registered_module_status","line":32},{"name":"TYPE_NETWORK","line":37},{"name":"TYPE_TESTING","line":38},{"name":"type_documentation","line":39},{"name":"TYPE_VISUALIZATION","line":40},{"name":"TYPE_SIMULATION","line":41},{"name":"TYPE_PROFILING","line":42},{"name":"STATUS_IDLE","line":45},{"name":"STATUS_ACTIVE","line":46},{"name":"STATUS_BUSY","line":47},{"name":"STATUS_ERROR","line":48},{"name":"STATUS_OFFLINE","line":49},{"name":"create_integration_message","line":52},{"name":"get_integration_message_id","line":59},{"name":"get_integration_message_source","line":63},{"name":"get_integration_message_dest","line":67},{"name":"get_integration_message_type","line":71},{"name":"MSG_DATA","line":76},{"name":"MSG_CONTROL","line":77},{"name":"MSG_STATUS","line":78},{"name":"MSG_ERROR","line":79},{"name":"MSG_EVENT","line":80},{"name":"send_message","line":83},{"name":"receive_message","line":111},{"name":"create_event","line":128},{"name":"get_event_id","line":135},{"name":"get_event_type","line":139},{"name":"get_event_source","line":143},{"name":"get_event_data","line":147},{"name":"EVENT_MODULE_LOADED","line":152},{"name":"EVENT_MODULE_UNLOADED","line":153},{"name":"EVENT_TEST_COMPLETED","line":154},{"name":"EVENT_SIMULATION_STEP","line":155},{"name":"EVENT_VISUALIZATION_UPDATE","line":156},{"name":"subscribe_to_event","line":159},{"name":"publish_event","line":176},{"name":"create_state_sync","line":202},{"name":"get_sync_module_id","line":209},{"name":"get_sync_state_version","line":213},{"name":"get_sync_state_data","line":217},{"name":"get_sync_checksum","line":221},{"name":"synchronize_states","line":226},{"name":"create_error_propagation","line":251},{"name":"get_error_source","line":258},{"name":"get_error_code","line":262},{"name":"get_error_severity","line":266},{"name":"get_error_timestamp","line":270},{"name":"SEVERITY_INFO","line":275},{"name":"SEVERITY_WARNING","line":276},{"name":"SEVERITY_ERROR","line":277},{"name":"SEVERITY_CRITICAL","line":278},{"name":"propagate_error","line":281},{"name":"load_module","line":314},{"name":"unload_module","line":329},{"name":"create_dependency","line":346},{"name":"get_dependency_module_id","line":353},{"name":"get_dependency_depends_on","line":357},{"name":"get_dependency_type","line":361},{"name":"get_dependency_required","line":365},{"name":"check_dependencies","line":370},{"name":"create_resource_request","line":409},{"name":"get_resource_request_module","line":416},{"name":"get_resource_request_type","line":420},{"name":"get_resource_request_amount","line":424},{"name":"get_resource_request_priority","line":428},{"name":"RESOURCE_CPU","line":433},{"name":"RESOURCE_MEMORY","line":434},{"name":"RESOURCE_BANDWIDTH","line":435},{"name":"RESOURCE_STORAGE","line":436},{"name":"allocate_resources","line":439},{"name":"create_integration_report","line":476},{"name":"generate_integration_stats","line":485},{"name":"validate_integration_health","line":518}],"imports":[{"name":"base::types","line":5}],"terms":["net","integration","framework","max","modules","messages","events","create","registration","get","registered","priority","status","network","testing","documentation","visualization","simulation","profiling","idle","active","busy","offline","dest","msg","data","control","event","send","receive","loaded","unloaded","completed","step","subscribe","publish","state","sync","checksum","synchronize","states","propagation","severity","timestamp","info","warning","critical","propagate","load","unload","dependency","depends","required","dependencies","resource","request","amount","cpu","memory","bandwidth","storage","allocate","resources","report","generate","stats","validate","health"]},{"id":"f37a671427ac064c67a6c1ee374fa595f077684c34fccabaecf4c703a2bba2c4","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/sha256.t27","health":"warn","module":null}],"description":"SHA-256 Hash — TRI-27 Assembly Implementation Computes SHA-256 digest of a 64-byte (512-bit) message block Issue: #474 — TTT Dogfood Phase 3 Memory layout: 100-163: Input message block (64 bytes) 200-263: Message schedule W[0..63] (64 words)","symbols":[],"imports":[],"terms":["tri27","sha256"]},{"id":"f3819844f477cf0293deb96d3046a16d9283e7545cadb4f5d24c720be99743db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timer.t27","health":"ok","module":"MeshTimer"}],"description":"Simple exponential backoff timer","symbols":[{"name":"BASE_MS","line":6},{"name":"calc_timeout","line":9},{"name":"tick_counter","line":22},{"name":"is_expired","line":31}],"imports":[{"name":"base::types","line":4}],"terms":["net","timer","mesh","base","calc","timeout","tick","counter","expired"]},{"id":"f3b97da6289ecc13cd9efc132dc417b23dff4316a835d5f6d86875470f306c34","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/unit_weights_node.t27","health":"ok","module":"IglaRaceUnitWeightsNode"}],"description":"t27/specs/igla/race/unit_weights_node.t27 The CONTROL for T93: a ternary node on the unit alphabet {-1,0,+1}, built to be measured beside specs/igla/race/ternary_node.t27. WHY THIS EXISTS. T93 measured the phi node at ZERO DSPs and stated, in the same breath, that the figure is a measurement of ONE SIDE: \"If a {-1,0,+1} node with a per-layer scale synthesised to zero DSPs at","symbols":[{"name":"SYM_ZERO","line":48},{"name":"SYM_POS","line":49},{"name":"SYM_NEG","line":50},{"name":"SYM_ERROR","line":51},{"name":"ALPHA_ONE","line":54},{"name":"ALPHA_SHIFT","line":55},{"name":"ALPHA_TRAINED","line":59},{"name":"rx_slice","line":62},{"name":"rx_is_fault","line":70},{"name":"weighted","line":77},{"name":"acc_add","line":85},{"name":"apply_alpha","line":92},{"name":"node_step","line":97},{"name":"layer_output","line":101},{"name":"on_comb","line":107}],"imports":[{"name":"base::types","line":43}],"terms":["igla","race","unit","weights","node","sym","zero","pos","neg","alpha","one","shift","trained","slice","fault","weighted","acc","apply","step","layer","comb"]},{"id":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27","health":"warn","module":"deposit-tiers"}],"description":"specs/turbobaby/deposit_tiers.t27 -- the published security-deposit tiers of the TurboBaby fleet Written contract for every surface that shows a deposit: the tier is looked up on the family key and no surface computes one. Measured from data/fleet_seed.json (measured_at 2026-09-12), whose deposit authority is the published tariff source KB_faq, section \"Exact price list (from CRM)\". Closes issue #18. ASCII only (L3), English identifiers only. --","symbols":[{"name":"KIND","line":60},{"name":"ID","line":61},{"name":"NAME","line":62},{"name":"REUSES_AVAILABILITY_ID","line":65},{"name":"SEED","line":66},{"name":"MEASURED_AT","line":67},{"name":"DEPOSIT_AUTHORITY","line":68},{"name":"CURRENCY","line":69},{"name":"TIER_COUNT","line":76},{"name":"TIER_1_THB","line":77},{"name":"TIER_2_THB","line":78},{"name":"TIER_3_THB","line":79},{"name":"TIER_4_THB","line":80},{"name":"TIER_5_THB","line":81},{"name":"TIER_6_THB","line":82},{"name":"TIERS_THB","line":83},{"name":"TIER_GAPS_THB","line":91},{"name":"TIER_GAP_MIN_THB","line":92},{"name":"TIER_GAP_SUM_THB","line":93},{"name":"TIER_SPAN_THB","line":94},{"name":"DEPOSIT_ABSENT","line":100},{"name":"DEPOSIT_NOT_IN_FLEET","line":101},{"name":"TIER_NONE","line":102},{"name":"FAMILIES_WITH_PUBLISHED_DEPOSIT","line":108},{"name":"FAMILIES_WITHOUT_PUBLISHED_DEPOSIT","line":109},{"name":"NOT_OFFERED_KEYS","line":110},{"name":"FAMILY_DEPOSIT_THB","line":112},{"name":"TIER_FAMILY_COUNTS","line":126},{"name":"TIER_FAMILY_COUNT_SUM","line":127},{"name":"SCOOTER_300CC_FAMILIES","line":147},{"name":"SCOOTER_300CC_DISTINCT_DEPOSITS","line":148},{"name":"DEPOSIT_10000_OCCURRENCES","line":151},{"name":"PRICE_LIST_ONLY_UNITS","line":158},{"name":"PRICE_LIST_ONLY_KEYS","line":159},{"name":"PRICE_LIST_ONLY_DEPOSIT_THB","line":162},{"name":"PAST_RENTAL_DEPOSITS_THB","line":168},{"name":"PAST_RENTAL_DEPOSIT_RULE","line":169},{"name":"DEPOSIT_FORMS","line":183},{"name":"DEPOSIT_FORM_LEGAL_STATES","line":184},{"name":"DEPOSIT_FORM_RULE","line":185},{"name":"DEPOSIT_MONEY_METHODS","line":186},{"name":"DEPOSIT_FOREIGN_CURRENCY_RULE","line":187},{"name":"DEPOSIT_DISCOUNT_APPLIES","line":189},{"name":"deposit_thb_of_family","line":203},{"name":"tier_index_of","line":251},{"name":"is_published_tier","line":273},{"name":"publishable_deposit","line":280},{"name":"deposit_needs_tier_log","line":284},{"name":"families_on_tier","line":294},{"name":"published_rows_at_amount","line":308},{"name":"deposit_form_is_legal","line":327}],"imports":[],"terms":["turbobaby","user","bot","deposit","tiers","kind","reuses","availability","seed","measured","authority","currency","tier","count","thb","gaps","gap","min","sum","span","absent","fleet","families","published","offered","keys","family","counts","scooter","300cc","distinct","deposits","occurrences","price","list","units","past","rental","rule","forms","form","legal","states","money","methods","foreign","discount","applies","index","publishable","log","rows","amount"]},{"id":"f3c12d757eeb1ad37aacee0baa3c81e2bfe4905d0e799e3f778cae267324f043","sources":[{"repo":"ghashtag/t27","path":"specs/catalog/discovery.t27","health":"ok","module":"catalog_discovery"}],"description":"specs/catalog/discovery.t27 -- how the t27.ai catalog finds the repositories that write .t27 Source of truth for scripts/discover-t27-worlds.mjs and .github/workflows/t27-world-scan.yml (gHashTag/trinity, apps/website). The scan reads this file through the vendored compiler (public/t27/t27_compiler.wasm), checks the constant schema and evaluates the test blocks below before it touches GitHub; nothing below is parsed with a regex and no owner, limit or exclusion is typed twice. ASCII only (L3), English only (LANG-EN).","symbols":[{"name":"KIND","line":29},{"name":"ID","line":30},{"name":"NAME","line":31},{"name":"GENERATED","line":33},{"name":"OWNERS","line":38},{"name":"CODE_SEARCH","line":42},{"name":"CODE_SEARCH_PAGES","line":43},{"name":"PUBLIC_ONLY","line":46},{"name":"SKIP_FORKS","line":48},{"name":"SKIP_ARCHIVED","line":50},{"name":"MIRRORS","line":52},{"name":"FOUNDING","line":54},{"name":"PROBE_FILES","line":61},{"name":"MIN_DECLARATIONS","line":63},{"name":"MAX_WORLDS","line":66},{"name":"MAX_FILES_PER_WORLD","line":67},{"name":"MAX_FILE_BYTES","line":69}],"imports":[],"terms":["catalog","discovery","kind","generated","owners","search","pages","public","skip","forks","archived","mirrors","founding","probe","min","declarations","max","worlds","per","world","bytes"]},{"id":"f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/resource_scheduler.t27","health":"warn","module":"ResourceScheduler"}],"description":"Resource Scheduler - CPU/memory allocation optimization Intelligent resource management for network operations","symbols":[{"name":"MAX_TASKS","line":7},{"name":"CPU_CAPACITY","line":8},{"name":"MEMORY_CAPACITY","line":9},{"name":"PRIORITY_HIGH","line":10},{"name":"PRIORITY_MEDIUM","line":11},{"name":"PRIORITY_LOW","line":12},{"name":"create_task_resource","line":15},{"name":"get_cpu_req","line":22},{"name":"get_mem_req","line":26},{"name":"get_priority","line":30},{"name":"get_task_id","line":34},{"name":"create_system_state","line":39},{"name":"get_used_cpu","line":46},{"name":"get_used_mem","line":50},{"name":"get_active_tasks","line":54},{"name":"get_sched_tick","line":58},{"name":"create_task_array","line":65},{"name":"get_task_resource","line":69},{"name":"can_admit_task","line":77},{"name":"has_cpu_capacity","line":90},{"name":"has_memory_capacity","line":96},{"name":"allocate_resources","line":103},{"name":"release_resources","line":119},{"name":"find_admittable_task","line":135},{"name":"calculate_cpu_utilization","line":207},{"name":"calculate_memory_utilization","line":211},{"name":"is_overloaded","line":217},{"name":"increment_tick","line":223},{"name":"count_tasks_by_priority","line":237}],"imports":[{"name":"base::types","line":5}],"terms":["net","resource","scheduler","max","tasks","cpu","capacity","memory","priority","high","medium","low","create","get","req","mem","system","state","used","active","sched","tick","array","admit","allocate","resources","release","find","admittable","calculate","utilization","overloaded","increment","count"]},{"id":"f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/olsr_routing.t27","health":"ok","module":"OlsrRouting"}],"description":"OLSR-style routing - ultra-simplified for T27 Basic neighbor table and best-neighbor selection","symbols":[{"name":"MAX_NEIGHBORS","line":7},{"name":"VALID_TIMEOUT","line":8},{"name":"create_neighbor","line":11},{"name":"get_id","line":17},{"name":"get_quality","line":21},{"name":"get_last_seen","line":25},{"name":"is_valid","line":29},{"name":"create_table","line":34},{"name":"get_entry","line":41},{"name":"get_id_at","line":48},{"name":"find_index","line":53},{"name":"set_entry","line":62},{"name":"update_or_add","line":78},{"name":"get_best_neighbor","line":94},{"name":"get_second_best","line":107},{"name":"select_mprs","line":130},{"name":"count_neighbors","line":137}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","olsr","routing","max","neighbors","valid","timeout","create","neighbor","get","quality","seen","table","entry","find","index","set","best","second","select","mprs","count"]},{"id":"f46c60b0ba669110f8cf4a169987c7c2e794b317bd6889f0e90e40cfcb158632","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/stream_ternary_mac.t27","health":"warn","module":"StreamTernaryMac"}],"description":"","symbols":[{"name":"tmul","line":18},{"name":"tp","line":25},{"name":"dot27","line":29},{"name":"on_clock","line":44}],"imports":[],"terms":["ternary","stream","mac","tmul","dot27","clock"]},{"id":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/routing_etx.t27","health":"ok","module":"RoutingEtx"}],"description":"tri-net/specs/routing_etx.t27 Fixed-point formalization of the ETX link metric in src/routing.rs (T27-first). Delivery ratios and the RTI penalty are expressed in MILLI units (1000 = 1.0), ETX likewise in milli (1000 = 1.0 transmissions). f32::INFINITY has no integer analogue, so a DEAD link is the sentinel 0 (a real ETX is always >= 1000, so 0 is unambiguous). The live routing.rs path still runs the f32 version; a Rust","symbols":[{"name":"MILLI","line":14},{"name":"DEAD_EPS_MILLI","line":16},{"name":"OPTIMISTIC_MILLI","line":18},{"name":"ETX_DEAD","line":20},{"name":"PENALTY_MAX_MILLI","line":28},{"name":"etx_milli","line":32},{"name":"better_route","line":48},{"name":"path_etx","line":59},{"name":"is_feasible","line":74},{"name":"learn_ok","line":83}],"imports":[{"name":"base::types","line":12}],"terms":["net","routing","etx","milli","dead","eps","optimistic","penalty","max","better","route","path","feasible","learn"]},{"id":"f4b1478122c02d2e4c50a5bb589e03e97212875c368fad659824f5f532e824d8","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/reseal.t27","health":"ok","module":"tool_tri_reseal"}],"description":"specs/tools/tri/reseal.t27 -- tool tri/reseal, the `tri reseal` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/reseal). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["reseal","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/redundancy_management.t27","health":"warn","module":"RedundancyManagement"}],"description":"Redundancy Management - backup paths and failover logic Ensures network continuity when primary paths fail","symbols":[{"name":"MAX_PATHS","line":7},{"name":"MAX_HOPS","line":8},{"name":"PATH_VALID","line":9},{"name":"PATH_INVALID","line":10},{"name":"create_path","line":13},{"name":"get_path_valid","line":20},{"name":"get_hop1","line":24},{"name":"get_hop2","line":28},{"name":"get_hop3","line":32},{"name":"create_path_set","line":39},{"name":"set_slot4","line":42},{"name":"get_path","line":56},{"name":"find_primary_path","line":64},{"name":"find_backup_path","line":78},{"name":"invalidate_path","line":92},{"name":"validate_path","line":99},{"name":"count_valid_paths","line":106},{"name":"has_redundancy","line":116},{"name":"get_hop_count","line":121},{"name":"find_shortest_path","line":130},{"name":"failover","line":170}],"imports":[{"name":"base::types","line":5}],"terms":["net","redundancy","management","max","paths","hops","path","valid","invalid","create","get","hop1","hop2","hop3","set","slot4","find","primary","backup","invalidate","validate","count","hop","shortest","failover"]},{"id":"f4c734a4a68e2c20c6ff6824ee431d2ea1912898dc36072c2ee1229fbe79a688","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/option.t27","health":"ok","module":"TriOption"}],"description":"t27/specs/","symbols":[{"name":"Option","line":13},{"name":"some","line":23},{"name":"none","line":28},{"name":"unwrap_or","line":33},{"name":"is_some","line":38}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["collections","option","unwrap"]},{"id":"f4cbc7903cba83f5b77de3ea9da6843b4ad6074a3fc695555573e68537ebdb07","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/specs.tri-corpus.t27","health":"ok","module":"trinity_capability_specs_tri_corpus"}],"description":"specs/trinity/capabilities/specs.tri-corpus.t27 -- capability trinity/specs.tri-corpus: The .tri specification corpus of the consumer (the legacy Trinity dialect) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","corpus","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"f4db9e04ccb4ab2e3a1e501a15c2824109b7827d910ebf70874e5ab1ded9c6cf","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-agent-cron-cleanup.t27","health":"ok","module":"cron_trinity_agent_cron_cleanup"}],"description":"specs/crons/trinity-agent-cron-cleanup.t27 -- cron github-actions/trinity/agent-cron-cleanup Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/agent-cron-cleanup). The schedule was read from trinity:.github/workflows/agent-cron-cleanup.yml#L4. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"ON_FAILURE","line":23},{"name":"CONTROL","line":24}],"imports":[],"terms":["crons","cron","cleanup","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_receipt.t27","health":"ok","module":"TriComputeReceipt"}],"description":"TRI-NET compute-attesting receipt: bind an agent's COMPUTE result (not just relayed bytes) into a verifiable, chained receipt. tri_depin seals forwarded bytes (proof-of-relay); this seals WORK: a leaf commits {executor, task, input-hash, output, epoch} so a peer can confirm which executor produced which output for which input, and receipts chain prev->next like tri_ledger's state root -- tampering with any past result or reordering the chain changes the head.","symbols":[{"name":"RECEIPT_GENESIS","line":16},{"name":"R_C","line":17},{"name":"R_C2","line":18},{"name":"TAG_RECEIPT","line":27},{"name":"SHA_PAD","line":28},{"name":"DIGEST_MSG_BITS","line":29},{"name":"TAG_LEDGER","line":39},{"name":"LEDGER_GENESIS","line":40},{"name":"LEDGER_MSG_BITS","line":41},{"name":"MERKLE_MSG_BITS","line":42},{"name":"TAG_INPUT","line":43},{"name":"GF_ADD","line":49},{"name":"GF_MUL","line":50},{"name":"GF16","line":51},{"name":"rotl","line":53},{"name":"mix32","line":57},{"name":"receipt_leaf","line":68},{"name":"receipt_step","line":78},{"name":"verify_leaf","line":84},{"name":"verify_chain3","line":89},{"name":"receipt_leaf_hi","line":99},{"name":"verify_leaf64","line":107},{"name":"receipt_leaf_bound","line":119},{"name":"sign_digest","line":130},{"name":"sign_digest_req","line":141},{"name":"digest_pre","line":152},{"name":"receipt_leaf_gf","line":173},{"name":"FMT_GF_BINARY","line":182},{"name":"FMT_GFT","line":183},{"name":"GFT16_RUNG_ET","line":187},{"name":"GFT32_RUNG_ET","line":188},{"name":"GFT64_RUNG_ET","line":189},{"name":"GFT128_RUNG_ET","line":190},{"name":"receipt_leaf_gf_fmt","line":192},{"name":"receipt_leaf_gf_rung","line":204},{"name":"chain_step_full","line":214},{"name":"ledger_entry_pre","line":223},{"name":"merkle_pair_pre","line":254},{"name":"input_digest_pre","line":284},{"name":"verify_chain3_full","line":306}],"imports":[{"name":"base::types","line":14}],"terms":["net","compute","receipt","genesis","tag","sha","pad","digest","msg","bits","ledger","merkle","mul","gf16","rotl","mix32","leaf","step","verify","chain3","leaf64","bound","sign","req","pre","fmt","binary","gft","gft16","rung","gft32","gft64","gft128","chain","full","entry","pair"]},{"id":"f53faab13959683ff6110da18d8125f6c62af2516383c6b77aab8610a5584ebf","sources":[{"repo":"ghashtag/t27","path":"specs/hslm/forward_pass.t27","health":"ok","module":"ForwardPass"}],"description":"Module: Minimal Forward Pass for LLM Inference","symbols":[{"name":"HEAD_COUNT","line":18},{"name":"FORWARD_VERSION","line":21},{"name":"ROLE_DIM","line":24},{"name":"CONTEXT_WINDOW","line":27},{"name":"HEBBIAN_CHARS","line":30},{"name":"HEBBIAN_OFFSET","line":33},{"name":"MAX_REFINE_PASSES","line":36},{"name":"RoleVector","line":45},{"name":"HyperVector","line":58},{"name":"ForwardOutput","line":69},{"name":"singleHeadAttention","line":82},{"name":"multiHeadAttention","line":88},{"name":"forwardPass","line":98},{"name":"forwardPassMultiHead","line":104},{"name":"resonatorTrainStep","line":115},{"name":"refineDirectRole","line":121},{"name":"summarizeContext","line":131},{"name":"computeDirectRole","line":141},{"name":"directDecode","line":147},{"name":"generateWithDirectRole","line":157},{"name":"buildHebbianCounts","line":167},{"name":"hebbianLookup","line":173}],"imports":[{"name":"base::types","line":9},{"name":"numeric::gf16","line":10},{"name":"ternary::packed_trit","line":11}],"terms":["hslm","forward","pass","head","count","role","dim","window","hebbian","chars","offset","max","refine","passes","vector","hyper","single","attention","multi","resonator","train","step","direct","summarize","compute","decode","generate","build","counts","lookup"]},{"id":"f5524863149e19d575d49f903c14ecb295da119701247e018d620827307283e2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/pattern.t27","health":"ok","module":"TriPattern"}],"description":"t27/specs/","symbols":[{"name":"MatchResult","line":13},{"name":"glob_match","line":23},{"name":"wildcard_match","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["search","pattern","match","glob","wildcard"]},{"id":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","sources":[{"repo":"ghashtag/t27","path":"specs/server/router.t27","health":"warn","module":"server-router"}],"description":"router.t27 — HTTP Router Specification URL routing, pattern matching, parameter extraction","symbols":[{"name":"MAX_ROUTE_DEPTH","line":19},{"name":"MAX_PATH_LENGTH","line":22},{"name":"PATH_ROOT","line":25},{"name":"PARAM_WILDCARD","line":28},{"name":"PATH_SEPARATOR","line":31},{"name":"RouteMethod","line":38},{"name":"Handler","line":49},{"name":"RouteParam","line":52},{"name":"HttpResponse","line":58},{"name":"Route","line":64},{"name":"RouteMatch","line":72},{"name":"Router","line":79},{"name":"PathSegments","line":85},{"name":"router_new","line":95},{"name":"route_add","line":103},{"name":"route","line":104},{"name":"route_match","line":115},{"name":"segments","line":116},{"name":"result","line":125},{"name":"path_split","line":140},{"name":"without_root","line":145},{"name":"segment","line":152},{"name":"match_route","line":163},{"name":"pattern_segments","line":164},{"name":"pattern_seg","line":178},{"name":"path_seg","line":179},{"name":"param_name","line":182},{"name":"param","line":183},{"name":"pattern_has_wildcard","line":195},{"name":"match_wildcard","line":200},{"name":"wildcard_idx","line":201},{"name":"wildcard_value","line":218},{"name":"param","line":219},{"name":"find_wildcard_index","line":227},{"name":"is_param","line":237},{"name":"param_name_extract","line":242},{"name":"join_segments","line":250},{"name":"concat","line":262},{"name":"append","line":271},{"name":"param_get","line":280},{"name":"path_matches","line":290},{"name":"pattern_without_wildcard","line":301},{"name":"wildcard_idx","line":302},{"name":"prefix_match","line":310},{"name":"router_set_fallback","line":323},{"name":"router_count","line":328},{"name":"router","line":337},{"name":"result","line":342},{"name":"result","line":347},{"name":"result","line":352},{"name":"result","line":367},{"name":"result","line":372},{"name":"params","line":409},{"name":"params","line":414},{"name":"path","line":510},{"name":"router","line":522},{"name":"segments","line":523},{"name":"params","line":535}],"imports":[{"name":"std","line":12}],"terms":["router","max","route","depth","path","length","root","param","wildcard","separator","method","handler","http","response","match","segments","split","segment","pattern","seg","idx","find","index","extract","join","concat","append","get","matches","prefix","set","fallback","count","params"]},{"id":"f5ea415afac944ca16f0e1184078a16c0a421cfd90d0cc252f246e6883e52118","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_10.t27","health":"warn","module":"damage_class_10"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"f5fdfdf57c4b772c5d9baeae4cc8196dd300a217de71325afbbc83815f64b6a1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/baseline5_decoder.t27","health":"warn","module":"TrinityBaseline5DecoderT27"}],"description":"","symbols":[{"name":"on_comb","line":4}],"imports":[],"terms":["dmitrii","memory","rtl","baseline5","decoder","baseline5decoder","comb"]},{"id":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/quarantine_manager.t27","health":"ok","module":"quarantine_manager"}],"description":"Quarantine Manager - automatic isolation of compromised nodes Enables network security through automatic containment","symbols":[{"name":"MAX_NODES","line":7},{"name":"QUARANTINE_DURATION","line":8},{"name":"VIOLATION_THRESHOLD","line":9},{"name":"TRUST_THRESHOLD","line":10},{"name":"create_quarantine_state","line":13},{"name":"get_quarantine_node_id","line":20},{"name":"get_quarantine_status","line":24},{"name":"get_start_time","line":28},{"name":"get_violation_count","line":32},{"name":"STATUS_NORMAL","line":37},{"name":"STATUS_QUARANTINED","line":38},{"name":"STATUS_SUSPENDED","line":39},{"name":"STATUS_BANNED","line":40},{"name":"is_quarantined","line":43},{"name":"quarantine_node","line":54},{"name":"release_quarantine","line":62},{"name":"suspend_node","line":70},{"name":"ban_node","line":78},{"name":"should_release_quarantine","line":85},{"name":"update_quarantine_state","line":100},{"name":"create_violation_record","line":109},{"name":"get_violation_node_id","line":116},{"name":"get_violation_type","line":120},{"name":"get_violation_severity","line":124},{"name":"get_violation_timestamp","line":128},{"name":"VIOLATION_PACKET_FLOOD","line":133},{"name":"VIOLATION_AUTH_FAILURE","line":134},{"name":"VIOLATION_MALFORMED_PACKET","line":135},{"name":"VIOLATION_ANOMALOUS_BEHAVIOR","line":136},{"name":"VIOLATION_RESOURCE_ABUSE","line":137},{"name":"VIOLATION_TRUST_VIOLATION","line":138},{"name":"record_violation","line":141},{"name":"should_quarantine","line":160},{"name":"calculate_quarantine_severity","line":172},{"name":"find_quarantined_node","line":193},{"name":"count_quarantined_nodes","line":208},{"name":"get_quarantine_reason","line":223},{"name":"is_communication_allowed","line":242},{"name":"calculate_health_impact","line":264},{"name":"recommend_quarantine_action","line":276},{"name":"create_notification","line":294},{"name":"get_notification_node_id","line":301},{"name":"get_notification_action","line":305},{"name":"get_notification_reason","line":309},{"name":"get_notification_duration","line":313}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","quarantine","manager","max","nodes","duration","violation","threshold","trust","create","state","get","node","status","start","time","count","normal","quarantined","suspended","banned","release","suspend","ban","record","severity","timestamp","packet","flood","auth","failure","malformed","anomalous","behavior","resource","abuse","calculate","find","reason","communication","allowed","health","impact","recommend","action","notification"]},{"id":"f6130cb4fb3292dcf0c8a59031b018b2078fb1add5260b24a1f651af62834312","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward_network.t27","health":"ok","module":"FeedForwardNetwork"}],"description":"t27/specs/","symbols":[{"name":"DEFAULT_D_FF","line":13},{"name":"FFNConfig","line":19},{"name":"forward","line":29}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["transformer","feed","forward","network","default","ffnconfig"]},{"id":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/bridge.t27","health":"warn","module":"TrinityMemoryBridgeSpec"}],"description":"specs/memory/tmem/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;","symbols":[{"name":"TMS_BRIDGE_PROTOCOL_VERSION","line":12},{"name":"TMS_BRIDGE_METHOD_COUNT","line":13},{"name":"TMS_BRIDGE_FORMAT_COUNT","line":14},{"name":"TMS_BRIDGE_CODEC_COUNT","line":15},{"name":"TMS_BRIDGE_LIMIT_FIELD_COUNT","line":16},{"name":"BridgeMethod","line":18},{"name":"BridgeBackend","line":29},{"name":"TMS_RPC_ENVELOPE_JSONRPC","line":38},{"name":"TMS_RPC_ENVELOPE_ID","line":39},{"name":"TMS_RPC_ENVELOPE_METHOD","line":40},{"name":"TMS_RPC_ENVELOPE_PARAMS","line":41},{"name":"TMS_RPC_ENVELOPE_REQUIRED","line":42},{"name":"TMS_RPC_ENVELOPE_ALLOWED","line":43},{"name":"TMS_RPC_JSON_MAX_DEPTH","line":44},{"name":"TMS_RPC_ID_MAX","line":45},{"name":"TMS_RPC_ID_MIN","line":46},{"name":"TMS_RPC_ID_MAX_CODEPOINTS","line":47},{"name":"TMS_RPC_CLIENT_ID_HEX_CHARS","line":48},{"name":"TMS_RPC_FIELD_DATA","line":51},{"name":"TMS_RPC_FIELD_HANDLE","line":52},{"name":"TMS_RPC_FIELD_OFFSET","line":53},{"name":"TMS_RPC_FIELD_LENGTH","line":54},{"name":"TMS_RPC_FIELD_TENSOR_NAME","line":55},{"name":"TMS_RPC_FIELD_ACTIVATIONS","line":56},{"name":"TMS_BRIDGE_READ_ALLOWED_FIELDS","line":57},{"name":"TMS_BRIDGE_DOT_REQUIRED_FIELDS","line":58},{"name":"TMS_RPC_ERR_PARSE","line":61},{"name":"TMS_RPC_ERR_INVALID_REQUEST","line":62},{"name":"TMS_RPC_ERR_METHOD_NOT_FOUND","line":63},{"name":"TMS_RPC_ERR_INVALID_PARAMS","line":64},{"name":"TMS_RPC_ERR_INTERNAL","line":65},{"name":"TMS_RPC_ERR_NOT_FOUND","line":66},{"name":"TMS_RPC_ERR_LIMIT","line":67},{"name":"TMS_RPC_ERR_TRANSPORT","line":68},{"name":"TMS_HTTP_OK","line":70},{"name":"TMS_HTTP_BAD_REQUEST","line":71},{"name":"TMS_HTTP_FORBIDDEN","line":72},{"name":"TMS_HTTP_METHOD_NOT_ALLOWED","line":73},{"name":"TMS_HTTP_PAYLOAD_TOO_LARGE","line":74},{"name":"TMS_HTTP_UNSUPPORTED_MEDIA_TYPE","line":75},{"name":"TMS_HTTP_HEADERS_TOO_LARGE","line":76},{"name":"TMS_HTTP_MAX_HEADER_BYTES","line":77},{"name":"TMS_HTTP_MAX_HEADER_COUNT","line":78},{"name":"TMS_HTTP_MAX_CONTENT_LENGTH_DIGITS","line":79},{"name":"TMS_HTTP_MAX_PORT","line":80},{"name":"HttpRejection","line":82},{"name":"TMS_BRIDGE_DEFAULT_MAX_REQUEST_BYTES","line":94},{"name":"TMS_BRIDGE_DEFAULT_MAX_OBJECT_BYTES","line":95},{"name":"TMS_BRIDGE_DEFAULT_MAX_STORAGE_BYTES","line":96},{"name":"TMS_BRIDGE_DEFAULT_MAX_OBJECTS","line":97},{"name":"TMS_BRIDGE_DEFAULT_MAX_TRITS","line":98},{"name":"TMS_BRIDGE_DEFAULT_TIMEOUT_SECONDS","line":99},{"name":"TMS_BRIDGE_CLIENT_MAX_RESPONSE_BYTES","line":100},{"name":"TMS_BRIDGE_REQUEST_HEADER_ALLOWANCE","line":101},{"name":"TMS_BRIDGE_RESPONSE_BASE_BYTES","line":102},{"name":"TMS_BRIDGE_RESPONSE_BYTES_PER_OBJECT_BYTE","line":103},{"name":"TMS_BRIDGE_RESPONSE_BYTES_PER_TRIT","line":104},{"name":"TMS_BRIDGE_HANDLE_BYTES","line":108},{"name":"TMS_BRIDGE_HANDLE_HEX_CHARS","line":109},{"name":"TMS_BRIDGE_HANDLE_VERSION_CHAR_INDEX","line":110},{"name":"TMS_BRIDGE_HANDLE_VARIANT_CHAR_INDEX","line":111},{"name":"TMS_BRIDGE_HANDLE_UNIQUENESS_ATTEMPTS","line":112},{"name":"TMS_BRIDGE_B64_INVALID","line":116},{"name":"TMS_BRIDGE_B64_NONCANONICAL","line":117},{"name":"TMS_BRIDGE_B64_SHORT_OUTPUT","line":118},{"name":"TMS_BRIDGE_TMEM_COUNT_OFFSET","line":119},{"name":"TMS_BRIDGE_TMEM_TRIT_CHECK_MIN_BYTES","line":120},{"name":"TMS_BRIDGE_ACTIVATION_MIN","line":124},{"name":"TMS_BRIDGE_ACTIVATION_MAX","line":125},{"name":"TMS_BRIDGE_ACTIVATION_MAGNITUDE","line":126},{"name":"TMS_BRIDGE_TENSOR_NAME_MAX_CODEPOINTS","line":127},{"name":"TMS_BRIDGE_DOT_MAX_RANK","line":128},{"name":"TMS_BRIDGE_DOT_MAX_WIDTH","line":129},{"name":"TMS_BRIDGE_DOT_NO_SCALE_AXIS","line":130},{"name":"TMS_BRIDGE_IDENTITY_BYTES","line":134},{"name":"TMS_BRIDGE_IDENTITY_ANCHOR","line":135},{"name":"tms_bridge_request_status","line":138},{"name":"tms_bridge_request_error","line":144},{"name":"tms_http_rejection_status","line":150},{"name":"tms_http_rejection_error","line":160},{"name":"tms_rpc_id_integer_valid","line":166},{"name":"tms_rpc_id_string_valid","line":170},{"name":"tms_rpc_envelope_complete","line":174},{"name":"tms_bridge_required_fields","line":179},{"name":"tms_bridge_allowed_fields","line":186},{"name":"tms_bridge_params_valid","line":191},{"name":"tms_bridge_handle_char_valid","line":198},{"name":"tms_bridge_handle_layout_valid","line":202},{"name":"tms_bridge_read_range_valid","line":207},{"name":"tms_bridge_activation_valid","line":212},{"name":"tms_bridge_dot_layout_valid","line":216},{"name":"tms_bridge_dot_rows","line":223},{"name":"tms_bridge_dot_row","line":228},{"name":"tms_bridge_accumulator_bound","line":235},{"name":"tms_bridge_b64_encoded_size","line":239},{"name":"tms_bridge_storage_accepts","line":243},{"name":"tms_bridge_tmem_trit_limit_exceeded","line":250},{"name":"tms_bridge_request_capacity","line":254},{"name":"tms_bridge_response_capacity","line":258}],"imports":[],"terms":["memory","tmem","bridge","tms","protocol","method","count","format","codec","limit","field","backend","rpc","envelope","jsonrpc","params","required","allowed","json","max","depth","min","codepoints","client","hex","chars","data","handle","offset","length","tensor","activations","read","fields","dot","err","parse","invalid","request","found","internal","transport","http","bad","forbidden","payload","too","large","unsupported","media","headers","header","bytes","content","digits","port","rejection","default","object","storage","objects","trits","timeout","seconds","response","allowance","base","per","byte","trit","char","index","variant","uniqueness","attempts","b64","noncanonical","short","activation","magnitude","rank","width","scale","axis","identity","anchor","status","integer","valid","complete","layout","range","rows","row","accumulator","bound","encoded","size","accepts","exceeded","capacity"]},{"id":"f6500ab3e4a78e54e2e83ed1aa6eb389ec0da64ebb735841849c788efc0e1a44","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/quantifiers.t27","health":"ok","module":"tool_tri_quantifiers"}],"description":"specs/tools/tri/quantifiers.t27 -- tool tri/quantifiers, the `tri quantifiers` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/quantifiers). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["quantifiers","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/parameter-golf/phi_init.t27","health":"ok","module":"PhiWeightInit"}],"description":"t27/specs/parameter-golf/phi_init.t27 φ-Based Weight Initialization for Parameter Golf Derivation from sacred physics + GF16 quantization","symbols":[{"name":"PhiInitConfig","line":21},{"name":"phi_init_std","line":29},{"name":"base_std","line":31},{"name":"depth_ratio","line":40},{"name":"phi_scale","line":41},{"name":"QK_GAIN_PHI_CUBED","line":54},{"name":"QK_GAIN_PHI_OPTIMAL","line":55},{"name":"recommend_qk_gain","line":57},{"name":"gf16_aware_init","line":71},{"name":"numel","line":72},{"name":"std","line":76},{"name":"sample","line":86},{"name":"TIED_EMBED_STD","line":100},{"name":"TIED_EMBED_PHI_STD","line":101},{"name":"tied_embed_init_std","line":103}],"imports":[{"name":"numeric::gf16","line":7},{"name":"numeric::phi_ratio","line":8},{"name":"sacred::constants","line":9}],"terms":["parameter","golf","phi","init","weight","config","std","base","depth","ratio","scale","gain","cubed","optimal","recommend","gf16","aware","numel","sample","tied","embed"]},{"id":"f6faf793a7547b31fda5fa9a40da0698c7b8f1100425bb474dd73b6d69ec127b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/mcp.needle-mcp.t27","health":"ok","module":"trinity_capability_mcp_needle_mcp"}],"description":"specs/trinity/capabilities/mcp.needle-mcp.t27 -- capability trinity/mcp.needle-mcp: The needle MCP server (tools/mcp/needle_mcp/server.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","mcp","needle","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/formal_tb.t27","health":"ok","module":"Formal_Testbench"}],"description":"t27/specs/fpga/testbench/formal_tb.t27 Formal Verification Testbench Tests SVA assertion generation, cover points, and proof properties","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"SIM_TIMEOUT","line":11},{"name":"NUM_ASSERTIONS","line":12},{"name":"NUM_COVER_POINTS","line":13},{"name":"NUM_ASSUME_POINTS","line":14},{"name":"tick","line":26},{"name":"reset","line":31},{"name":"check_immediate","line":39},{"name":"check_concurrent","line":46},{"name":"cover_point","line":54},{"name":"run_proof","line":61}],"imports":[{"name":"fpga::formal::Formal","line":8}],"terms":["fpga","testbench","formal","clk","period","sim","timeout","num","assertions","cover","points","assume","tick","reset","immediate","concurrent","point","proof"]},{"id":"f8199eaa1c9707bff5ba89d553a644725b072fce2f7c4c5de7dfe4b6e9620ac1","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-pages-health-check.t27","health":"ok","module":"cron_trinity_pages_health_check"}],"description":"specs/crons/trinity-pages-health-check.t27 -- cron github-actions/trinity/pages-health-check Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/pages-health-check). The schedule was read from trinity:.github/workflows/pages-health-check.yml#L17. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"NOTE","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","pages","health","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"f823bbea9d121e61a27e9c8d899004d2f3712876eab334ed3982a62908fd8ab2","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/one-away.t27","health":"ok","module":"tool_tri_one_away"}],"description":"specs/tools/tri/one-away.t27 -- tool tri/one-away, the `tri one-away` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/one-away). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["one","away","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"f86d77af65dfb35cc4adf4202c8f06577e82d7856edbcac656ef735eeba19a52","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L919.t27","health":"ok","module":"cron_999_multibots_telegraf_render_server_L919"}],"description":"specs/crons/999-multibots-telegraf-render-server-L919.t27 -- cron timer/999-multibots-telegraf/render-server-L919 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L919). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L919. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"INTERVAL_MS","line":19},{"name":"TZ","line":20},{"name":"RUNS","line":21},{"name":"RUNS_NOTE","line":22},{"name":"ENABLED","line":23},{"name":"NOTE","line":24},{"name":"ON_FAILURE","line":25},{"name":"CONTROL","line":26}],"imports":[],"terms":["crons","multibots","telegraf","render","l919","cron","kind","host","service","summary","interval","runs","note","enabled","failure","control"]},{"id":"f93bfbf9b9f7fb215faed70ad4a01a4fa9d8e00ef5daed464c8a949d2a56b0d8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_loss_injection.t27","health":"ok","module":"PacketLossInjection"}],"description":"Packet loss injection - simulates network errors Tests CRC error detection, lost ACKs, duplicates, replay","symbols":[{"name":"ERROR_NONE","line":8},{"name":"ERROR_BIT_FLIP","line":9},{"name":"ERROR_CRC_FAIL","line":10},{"name":"ERROR_DUPLICATE","line":11},{"name":"ERROR_OUT_OF_ORDER","line":12},{"name":"ERROR_REPLAY","line":13},{"name":"inject_bit_flip","line":16},{"name":"calculate_crc","line":25},{"name":"verify_crc","line":34},{"name":"inject_crc_error","line":39},{"name":"duplicate_packet","line":44},{"name":"is_duplicate","line":49},{"name":"inject_out_of_order","line":54},{"name":"check_replay","line":59},{"name":"extract_sequence","line":63}],"imports":[{"name":"base::types","line":5}],"terms":["net","packet","loss","injection","bit","flip","crc","fail","duplicate","out","order","replay","inject","calculate","verify","extract","sequence"]},{"id":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf20.t27","health":"warn","module":"GF20"}],"description":"t27/specs/numeric/gf20.t27 GoldenFloat20 — 20-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 6 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":28},{"name":"GF20","line":34},{"name":"encode","line":43},{"name":"sign","line":48},{"name":"abs_val","line":49},{"name":"exp_unbiased","line":52},{"name":"exp_biased","line":53},{"name":"exp_clamped","line":56},{"name":"mant","line":59},{"name":"decode","line":69},{"name":"sign","line":70},{"name":"exp_biased","line":71},{"name":"mant","line":72},{"name":"exp_unbiased","line":80},{"name":"mant_normalized","line":87},{"name":"value","line":93},{"name":"max_value","line":105},{"name":"mant_max","line":106},{"name":"exp_max","line":107},{"name":"min_positive","line":111},{"name":"mant_min","line":112},{"name":"exp_min","line":113},{"name":"epsilon","line":117},{"name":"validate_format","line":125},{"name":"fmt","line":126},{"name":"MEMORY_RATIO_VS_FP32","line":144},{"name":"floor_log2","line":150},{"name":"extract_mantissa","line":164},{"name":"normalized","line":165},{"name":"frac","line":166},{"name":"max_mant","line":167},{"name":"clamp","line":171},{"name":"pow","line":177}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf20","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","pow"]},{"id":"f9808d318e75aa5ea4ea3e5b3bf33f0a667aab6a00c7c5aa91f2cc77e3e846bd","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/orphaned.t27","health":"ok","module":"tool_tri_orphaned"}],"description":"specs/tools/tri/orphaned.t27 -- tool tri/orphaned, the `tri orphaned` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/orphaned). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).","symbols":[{"name":"KIND","line":11},{"name":"FAMILY","line":12},{"name":"ID","line":13},{"name":"REPO","line":14},{"name":"QUALIFIED_ID","line":15},{"name":"SCHEMA","line":16},{"name":"COMMAND","line":17},{"name":"VARIANT","line":19},{"name":"SOURCE","line":20},{"name":"ENTRY","line":21},{"name":"ABOUT","line":23},{"name":"ABOUT_SOURCE","line":24},{"name":"ACTIONS","line":26},{"name":"ACTIONS_ABOUT","line":27},{"name":"ARGS","line":29},{"name":"AGENTS","line":31},{"name":"AGENTS_NOTE","line":32},{"name":"WHEN_TO_USE","line":34},{"name":"WITNESS","line":35},{"name":"ENABLED","line":36}],"imports":[],"terms":["orphaned","tool","kind","family","qualified","schema","variant","entry","about","actions","args","agents","note","witness","enabled"]},{"id":"f9b41127b3546ba9fbf057a603b081d9b3bb4eab7ee46b23f5e8c804dfd801d8","sources":[{"repo":"ghashtag/t27","path":"specs/agents/q.t27","health":"ok","module":"agent_q"}],"description":"specs/agents/q.t27 -- agent t27/Q, letter Q of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Q). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Q - Theta (Queue)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"f9e8a7e5eaeeb97556ce3ac9de353452c0fbdec01210e6a68170c0af0496907f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_softmax_grad4.t27","health":"warn","module":"GftSoftmaxGrad4"}],"description":"","symbols":[{"name":"magadd","line":12},{"name":"magsub","line":32},{"name":"sadd","line":57},{"name":"neg","line":69},{"name":"category","line":73},{"name":"gt","line":78},{"name":"pow2_frac","line":88},{"name":"exp2","line":97},{"name":"recip","line":125},{"name":"magmul","line":139},{"name":"on_comb","line":157}],"imports":[],"terms":["ternary","gft","softmax","grad4","magadd","magsub","sadd","neg","category","pow2","frac","exp2","recip","magmul","comb"]},{"id":"f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770","sources":[{"repo":"ghashtag/t27","path":"specs/physics/su2_chern_simons.t27","health":"ok","module":"SU2ChernSimons"}],"description":"t27/specs/physics/su2_chern_simons.t27 SU(2)_k Chern-Simons Theory — Topological QFT Foundation Direction F (Priority 1) of PROJECT KEPLER->NEWTON This module formalizes the PROVEN THEOREM: golden ratio phi emerges from SU(2) Chern-Simons theory at level k=3 as quantum dimension of Fibonacci anyons. This is NOT numerology — it is a mathematical","symbols":[{"name":"CS_LEVEL","line":36},{"name":"NUM_SECTORS","line":40},{"name":"CYCLOTOMIC_INDEX","line":44},{"name":"FusionMatrix","line":57},{"name":"fibonacci_fusion_matrix","line":61},{"name":"quantum_dimension_tau","line":70},{"name":"total_quantum_dimension_squared","line":78},{"name":"d_1","line":79},{"name":"d_tau","line":80},{"name":"fibonacci_hilbert_dim","line":86},{"name":"s_matrix_element","line":112},{"name":"kp2","line":113},{"name":"prefactor","line":114},{"name":"angle","line":115},{"name":"quantum_dimension_at_k","line":119},{"name":"s_0j","line":121},{"name":"s_00","line":122},{"name":"quantum_dimension_simplified","line":127},{"name":"kp2","line":128},{"name":"jones_quantum_integer","line":140},{"name":"kp2","line":141},{"name":"trinity_equals_cs_level","line":154},{"name":"trinity","line":155},{"name":"sin","line":163},{"name":"cos","line":178},{"name":"sqrt","line":193},{"name":"abs","line":205}],"imports":[{"name":"math::constants","line":27}],"terms":["physics","su2","chern","simons","su2chern","level","num","sectors","cyclotomic","index","fusion","matrix","fibonacci","quantum","dimension","tau","total","squared","hilbert","dim","element","kp2","prefactor","angle","simplified","jones","integer","equals","sin","cos","sqrt","abs"]},{"id":"f9fa2056b186e23ed82410422f87a164d198a5d89ff00738b77659b99da9399e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/identity.t27","health":"ok","module":"tool_trinity_tri_identity"}],"description":"specs/tools/trinity/tri/identity.t27 -- tool gHashTag/trinity:tri/identity, the `tri identity` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/identity`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.","symbols":[{"name":"KIND","line":13},{"name":"FAMILY","line":14},{"name":"ID","line":15},{"name":"REPO","line":16},{"name":"QUALIFIED_ID","line":17},{"name":"SCHEMA","line":18},{"name":"COMMAND","line":19},{"name":"VARIANT","line":21},{"name":"SOURCE","line":22},{"name":"ENTRY","line":23},{"name":"ROUTED","line":25},{"name":"ROUTE_KIND","line":26},{"name":"ROUTE_NOTE","line":27},{"name":"ABOUT","line":28},{"name":"ABOUT_SOURCE","line":29},{"name":"ACTIONS","line":31},{"name":"ACTIONS_ABOUT","line":32},{"name":"ARGS","line":33},{"name":"ALIASES","line":34},{"name":"NAMESPACE","line":35},{"name":"MODE","line":36},{"name":"STABILITY","line":37},{"name":"CATEGORY","line":38},{"name":"JOB_TIMEOUT","line":39},{"name":"SIDE_EFFECTS","line":41},{"name":"CAPABILITIES","line":42},{"name":"MCP_ENABLED","line":43},{"name":"MCP_NAME","line":44},{"name":"MCP_DISPLAY_NAME","line":45},{"name":"EXAMPLES","line":46},{"name":"EXIT_CODES","line":47},{"name":"RESULT","line":48},{"name":"COLLIDES_WITH","line":49},{"name":"AGENTS","line":50},{"name":"AGENTS_NOTE","line":51},{"name":"WHEN_TO_USE","line":52},{"name":"WITNESS","line":53},{"name":"WITNESS_SOURCE","line":54},{"name":"ENABLED","line":55}],"imports":[],"terms":["identity","tool","kind","family","qualified","schema","variant","entry","routed","route","note","about","actions","args","aliases","namespace","mode","stability","category","job","timeout","side","effects","capabilities","mcp","enabled","display","examples","exit","codes","collides","agents","witness"]},{"id":"f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_router.t27","health":"warn","module":"MultiPathRouter"}],"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","symbols":[{"name":"MAX_PATHS","line":6},{"name":"ETX_THRESHOLD_GOOD","line":9},{"name":"ETX_THRESHOLD_POOR","line":10},{"name":"select_path_index","line":13},{"name":"path_quality_score","line":30},{"name":"needs_failover","line":49},{"name":"next_path_index","line":58},{"name":"path_reliability","line":68}],"imports":[],"terms":["net","multipath","router","multi","path","max","paths","etx","threshold","good","poor","select","index","quality","score","failover","reliability"]},{"id":"fa02d9864b6cc48cfe1c2ba92bd8d43cf3e93a33b23bcfd646866bb8ccd328e0","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bootrom_tb.t27","health":"ok","module":"BootROM_Testbench"}],"description":"t27/specs/fpga/testbench/bootrom_tb.t27 Boot ROM Testbench Tests boot sequence, reset vector, and initial program loading","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"ROM_SIZE","line":11},{"name":"RESET_VECTOR","line":12},{"name":"BOOT_MAGIC","line":13},{"name":"tick","line":26},{"name":"reset","line":31},{"name":"read_rom","line":40},{"name":"boot_sequence","line":46},{"name":"on_comb","line":100}],"imports":[{"name":"fpga::bootrom::BootROM","line":8}],"terms":["fpga","testbench","bootrom","boot","rom","clk","period","size","reset","vector","magic","tick","read","sequence","comb"]},{"id":"fa0b2c4b6213ae1664e5ede0f7277e5a92b077a8291ea69af9abda53a6346b7f","sources":[{"repo":"ghashtag/t27","path":"specs/ar/explainability.t27","health":"warn","module":null}],"description":"spec: Explainability Explainable AI (XAI) mechanisms for neuro-symbolic reasoning","symbols":[{"name":"Explanation","line":9},{"name":"FeatureImportance","line":17},{"name":"AttentionWeights","line":24},{"name":"MAX_EXPLANATION_STEPS","line":31},{"name":"new_explanation","line":34},{"name":"add_reasoning_step","line":44},{"name":"set_conclusion","line":61},{"name":"check_toxicity","line":71},{"name":"mark_toxic","line":95},{"name":"compute_feature_importance","line":105},{"name":"normalize_importance","line":132},{"name":"format_explanation","line":157},{"name":"trit_to_string","line":189},{"name":"extract_proof_steps","line":202},{"name":"verify_explainability","line":213},{"name":"counterfactual","line":250}],"imports":[{"name":"base::types","line":5}],"terms":["explainability","explanation","feature","importance","attention","weights","max","steps","reasoning","step","set","conclusion","toxicity","mark","toxic","compute","normalize","format","trit","extract","proof","verify","counterfactual"]},{"id":"fa4ac57d63c578bb36c3dfefb3ffd8037292c0fa83026fb3c194615f8e78a808","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/expr_probe.t27","health":"ok","module":"ExprProbe"}],"description":"","symbols":[{"name":"f","line":2}],"imports":[],"terms":["bootstrap","goldring","expr","probe"]},{"id":"fa7339fbc62c69d3c8cf93dbfff307d4ff68314f0365d2466bd1fc9016b2ffcc","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/fbb_active_path.t27","health":"ok","module":"fbb-active-path"}],"description":"fbb_active_path.t27 — FPGA Feedback Bridge Active Path Active path management for FPGA feedback bridge","symbols":[{"name":"FBB_OPCODE_BASE","line":12},{"name":"FBB_OP_PATH_SELECT","line":14},{"name":"FBB_OP_PATH_ENABLE","line":15},{"name":"FBB_OP_PATH_DISABLE","line":16},{"name":"FBB_OP_PATH_STATUS","line":17},{"name":"FBB_OP_PATH_RESET","line":18},{"name":"FBB_OP_PATH_BYPASS","line":19},{"name":"FBB_OP_PATH_LOOPBACK","line":20},{"name":"FBB_OP_PATH_CONFIG","line":21},{"name":"FBB_OP_MAX","line":22},{"name":"FBB_PATH_COUNT","line":24},{"name":"FBB_MAX_PATHS","line":25},{"name":"FBB_PATH_STATE_DISABLED","line":27},{"name":"FBB_PATH_STATE_ENABLED","line":28},{"name":"FBB_PATH_STATE_ACTIVE","line":29},{"name":"FBB_PATH_STATE_ERROR","line":30},{"name":"FBB_PATH_STATE_BYPASSED","line":31},{"name":"FBB_PATH_STATE_MAX","line":32},{"name":"FBB_LATENCY_MIN_CYCLES","line":34},{"name":"FBB_LATENCY_MAX_CYCLES","line":35},{"name":"FBB_DEFAULT_LATENCY","line":36},{"name":"FBB_BANDWIDTH_MIN_MBPS","line":38},{"name":"FBB_BANDWIDTH_MAX_MBPS","line":39},{"name":"FBB_DEFAULT_BANDWIDTH","line":40},{"name":"FbbOp","line":46},{"name":"FbbPathState","line":57},{"name":"FbbPathConfig","line":65},{"name":"FbbPathStatus","line":74},{"name":"FbbActivePath","line":83},{"name":"FbbCommand","line":90},{"name":"fbb_path_config_init","line":103},{"name":"fbb_path_config_low_latency","line":116},{"name":"fbb_path_config_high_bandwidth","line":129},{"name":"fbb_path_config_enable","line":142},{"name":"fbb_path_status_init","line":159},{"name":"fbb_path_status_enable","line":172},{"name":"fbb_path_status_activate","line":185},{"name":"fbb_path_status_bypass","line":198},{"name":"fbb_path_status_error","line":211},{"name":"fbb_path_status_update_metrics","line":224},{"name":"fbb_active_path_init","line":241},{"name":"fbb_active_path_select","line":256},{"name":"idx","line":257},{"name":"fbb_active_path_enable_bypass","line":276},{"name":"idx","line":277},{"name":"fbb_active_path_disable_bypass","line":291},{"name":"fbb_active_path_enable_loopback","line":309},{"name":"fbb_active_path_disable_loopback","line":320},{"name":"fbb_active_path_get_path","line":331},{"name":"idx","line":332},{"name":"fbb_active_path_update_path_metrics","line":338},{"name":"idx","line":339},{"name":"fbb_path_index_valid","line":356},{"name":"fbb_latency_valid","line":362},{"name":"fbb_bandwidth_valid","line":368},{"name":"fbb_path_config_valid","line":374},{"name":"encode_fbb_cmd","line":386},{"name":"op_field","line":388},{"name":"path_field","line":389},{"name":"param1_field","line":390},{"name":"param2_field","line":391},{"name":"decode_fbb_cmd","line":397},{"name":"op","line":398},{"name":"path","line":399},{"name":"param1","line":400},{"name":"param2","line":401}],"imports":[],"terms":["euler","fpga","fbb","active","path","opcode","base","select","enable","disable","status","reset","bypass","loopback","config","max","count","paths","state","disabled","enabled","bypassed","latency","min","cycles","default","bandwidth","mbps","init","low","high","activate","metrics","idx","get","index","valid","encode","cmd","field","param1","param2","decode"]},{"id":"fa80a821d2bc2bd1d613703f065df2390d978f2eff470ac93979841c0c9eb5b6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_05.t27","health":"warn","module":"damage_class_05"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"fa898a9e9a4092010e182f03399fe01d286f94926819801fd42ba0c1ed2a089f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/markup.t27","health":"ok","module":"TriMarkup"}],"description":"t27/specs/","symbols":[{"name":"MarkdownNode","line":13},{"name":"parse","line":24},{"name":"to_html","line":29}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["encoding","markup","markdown","node","parse","html"]},{"id":"faa036d013136104c32830264768cb1d0342781e3066fabc393f358ed4b4ee3a","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/posit_ladder_control.t27","health":"ok","module":"PositLadderControl"}],"description":"t27/specs/numeric/posit_ladder_control.t27 Posit ladder -- the F3 CONTROL for the GoldenFloat breadth-as-moat bet (FL-004) NUMERIC-STANDARD-003 PURPOSE (goldenfloat-ladder skill, F3 leg): The breadth-as-moat claim (FL-004) is that ONE closed rule across a width ladder gives a defensible toolchain-coherence advantage. Posit is the","symbols":[{"name":"PHI","line":41},{"name":"TRINITY","line":42},{"name":"TOL_F64","line":43},{"name":"abs_f64","line":45},{"name":"useed","line":51},{"name":"es_prestandard","line":58},{"name":"es_standard","line":68},{"name":"frac_bits_best","line":75}],"imports":[{"name":"base::types","line":39}],"terms":["numeric","posit","ladder","control","phi","tol","f64","abs","useed","prestandard","standard","frac","bits","best"]},{"id":"faa113fb557328b585439853b8b733b86f97d5df63e7824fe040d2aab10ad6c4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_vbt_activation.t27","health":"ok","module":"SiluSwishVbt"}],"description":"t27/specs/","symbols":[],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["activation","silu","swish","vbt"]},{"id":"fab0efc9b80a37a8be8d288f95c9e1067c8c8bbcc70cc2af2f5d2f67a6f528f6","sources":[{"repo":"ghashtag/t27","path":"specs/functions/render-riddle-run.t27","health":"ok","module":"fn_render_riddle_run"}],"description":"specs/functions/render-riddle-run.t27 -- function render-riddle-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-riddle-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/renderRiddle.ts#L59 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"LEGACY_ID","line":15},{"name":"NAME","line":16},{"name":"REPO","line":17},{"name":"SERVICE","line":19},{"name":"DOMAIN","line":20},{"name":"TRIGGER","line":22},{"name":"EVENT","line":23},{"name":"LEGACY_EVENTS","line":24},{"name":"CRON","line":25},{"name":"TZ","line":26},{"name":"SUMMARY_EN","line":27},{"name":"STEPS","line":29},{"name":"RETRIES","line":31},{"name":"ON_FAILURE","line":33},{"name":"SIDE_EFFECTS","line":35},{"name":"GUARD","line":37},{"name":"SAFE_PROBE","line":39},{"name":"PROBE_RESULT","line":40},{"name":"CONTROL","line":41},{"name":"NOTE","line":42}],"imports":[],"terms":["functions","render","riddle","kind","legacy","service","domain","trigger","event","events","cron","summary","steps","retries","failure","side","effects","guard","safe","probe","control","note"]},{"id":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/auto_config.t27","health":"warn","module":"auto_config"}],"description":"Auto Configuration - automatic network configuration Enables self-configuring networks with minimal manual setup","symbols":[{"name":"MAX_NODES","line":7},{"name":"MAX_PARAMS","line":8},{"name":"CONFIG_VERSION","line":9},{"name":"AUTO_DISCOVERY_INTERVAL","line":10},{"name":"create_config_param","line":16},{"name":"get_param_id","line":23},{"name":"get_param_value","line":27},{"name":"get_param_scope","line":31},{"name":"get_param_status","line":35},{"name":"SCOPE_NODE","line":40},{"name":"SCOPE_LINK","line":41},{"name":"SCOPE_NETWORK","line":42},{"name":"SCOPE_GLOBAL","line":43},{"name":"STATUS_PENDING","line":46},{"name":"STATUS_APPLIED","line":47},{"name":"STATUS_FAILED","line":48},{"name":"STATUS_OVERRIDE","line":49},{"name":"PARAM_TX_POWER","line":52},{"name":"PARAM_CHANNEL","line":53},{"name":"PARAM_DATA_RATE","line":54},{"name":"PARAM_RETRY_LIMIT","line":55},{"name":"PARAM_HELLO_INTERVAL","line":56},{"name":"PARAM_ROUTE_TIMEOUT","line":57},{"name":"PARAM_QOS_ENABLED","line":58},{"name":"PARAM_SECURITY_LEVEL","line":59},{"name":"default_config_at","line":65},{"name":"get_config_value","line":78},{"name":"set_config_value","line":93},{"name":"discover_network_params","line":111},{"name":"apply_config","line":149},{"name":"apply_all_pending","line":170},{"name":"validate_config","line":189},{"name":"optimize_config","line":230},{"name":"sync_config","line":265},{"name":"rollback_config","line":303},{"name":"backup_element","line":333},{"name":"calculate_config_drift","line":338},{"name":"discover_neighbors","line":374},{"name":"assign_node_role","line":389}],"imports":[{"name":"base::types","line":5}],"terms":["net","auto","config","max","nodes","params","discovery","interval","create","param","get","scope","status","node","link","network","global","applied","failed","override","power","channel","data","rate","retry","limit","hello","route","timeout","qos","enabled","security","level","default","set","discover","apply","validate","optimize","sync","rollback","backup","element","calculate","drift","neighbors","assign","role"]},{"id":"fac5a3ca87e6e847281bc017a8cb45a92fc1c3819d34e9822947eb635147d2f6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_01.t27","health":"warn","module":"damage_class_01"}],"description":"","symbols":[{"name":"Damaged","line":7}],"imports":[],"terms":["bootstrap","fixtures","damage","class","damaged"]},{"id":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/codegen.t27","health":"warn","module":"zig_codegen"}],"description":"codegen.t27 — Code Generator for Zig Generates Zig 0.15 code from t27 AST","symbols":[{"name":"CodegenOptions","line":8},{"name":"ZigCodegen","line":17},{"name":"new","line":25},{"name":"generate","line":36},{"name":"emit_header","line":67},{"name":"emit_imports","line":78},{"name":"emit_constants","line":87},{"name":"zig_name","line":94},{"name":"emit_data_section","line":109},{"name":"zig_name","line":119},{"name":"emit_code_section","line":158},{"name":"emit_labels","line":221},{"name":"emit_instructions","line":235},{"name":"emit_instruction","line":258},{"name":"emit_mov","line":275},{"name":"dst","line":281},{"name":"src","line":282},{"name":"dst_reg","line":284},{"name":"src_str","line":285},{"name":"emit_mul","line":296},{"name":"dst","line":302},{"name":"src1","line":303},{"name":"src2","line":304},{"name":"dst_reg","line":306},{"name":"src1_str","line":307},{"name":"src2_str","line":308},{"name":"emit_add","line":321},{"name":"dst","line":327},{"name":"src1","line":328},{"name":"src2","line":329},{"name":"dst_reg","line":331},{"name":"src1_str","line":332},{"name":"src2_str","line":333},{"name":"emit_jz","line":346},{"name":"test_reg","line":352},{"name":"target_label","line":353},{"name":"reg_str","line":355},{"name":"label_str","line":356},{"name":"emit_jnz","line":373},{"name":"test_reg","line":379},{"name":"target_label","line":380},{"name":"reg_str","line":382},{"name":"label_str","line":383},{"name":"emit_jmp","line":400},{"name":"target_label","line":406},{"name":"label_str","line":407},{"name":"emit_sub","line":416},{"name":"dst","line":422},{"name":"src1","line":423},{"name":"src2","line":424},{"name":"dst_reg","line":426},{"name":"src1_str","line":427},{"name":"src2_str","line":428},{"name":"emit_bind","line":443},{"name":"dst","line":449},{"name":"src1","line":450},{"name":"src2","line":451},{"name":"dst_reg","line":453},{"name":"src1_reg","line":454},{"name":"src2_reg","line":455},{"name":"emit_bundle","line":470},{"name":"dst","line":476},{"name":"src1","line":477},{"name":"src2","line":478},{"name":"dst_reg","line":480},{"name":"src1_reg","line":481},{"name":"src2_reg","line":482},{"name":"emit_halt","line":496},{"name":"emit_test_section","line":502},{"name":"emit_zig_test","line":517},{"name":"zig_name","line":518},{"name":"emit_invariant_section","line":567},{"name":"emit_zig_invariant","line":582},{"name":"zig_name","line":583},{"name":"emit_bench_section","line":622},{"name":"emit_zig_bench","line":637},{"name":"zig_name","line":638},{"name":"emit_spec_tests","line":691},{"name":"emit_spec_test_block","line":719},{"name":"zig_name","line":720},{"name":"emit_spec_invariant","line":773},{"name":"emit_spec_rule","line":794},{"name":"translate_expression","line":821},{"name":"generate_conformance","line":829},{"name":"get_reg_number","line":890},{"name":"operand_to_zig","line":898},{"name":"label_to_zig","line":915},{"name":"emit_opcode_name","line":923},{"name":"emit_type_for_value","line":940},{"name":"emit_int_value","line":951},{"name":"mangle_name","line":956},{"name":"mangle_test_name","line":977},{"name":"add_error","line":992},{"name":"emit","line":1001},{"name":"emit_line","line":1005},{"name":"emit_int","line":1018},{"name":"indent","line":1022},{"name":"dedent","line":1026},{"name":"StringBuilder","line":1034},{"name":"new","line":1039},{"name":"append","line":1047},{"name":"to_string","line":1055},{"name":"Program","line":1061},{"name":"ConstDef","line":1072},{"name":"DataSection","line":1077},{"name":"DataDecl","line":1081},{"name":"CodeSection","line":1087},{"name":"Instruction","line":1092},{"name":"Opcode","line":1099},{"name":"Operand","line":1112},{"name":"SpecDecl","line":1119},{"name":"TestBlock","line":1126},{"name":"Clause","line":1133},{"name":"AssertStmt","line":1138},{"name":"RuleDecl","line":1143},{"name":"TestSection","line":1148},{"name":"InvariantSection","line":1152},{"name":"BenchSection","line":1156},{"name":"TestCase","line":1160},{"name":"InvariantDecl","line":1167},{"name":"BenchDecl","line":1173},{"name":"CodegenError","line":1180},{"name":"int_to_str","line":1187},{"name":"output","line":1267},{"name":"output","line":1301},{"name":"output","line":1341},{"name":"output","line":1380},{"name":"output","line":1420},{"name":"result","line":1435},{"name":"result","line":1442}],"imports":[],"terms":["compiler","codegen","zig","options","generate","emit","header","imports","constants","data","section","labels","instructions","mov","dst","reg","str","mul","src1","src2","target","label","jnz","jmp","sub","bind","bundle","halt","invariant","bench","block","rule","translate","expression","conformance","get","operand","opcode","int","mangle","indent","dedent","builder","append","program","def","decl","clause","assert","stmt","case"]},{"id":"fb3c41eaf46f08d7fe6f5403a39fd0bfac635513f191898ff20ec67f2fdf76a7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/constants.t27","health":"ok","module":"TriConstants"}],"description":"t27/specs/","symbols":[{"name":"SystemLimits","line":13},{"name":"SacredConstants","line":20},{"name":"max_path_len","line":34},{"name":"max_line_len","line":40},{"name":"max_args","line":46},{"name":"max_env_vars","line":52},{"name":"get_p_h_i","line":58},{"name":"get_p_i","line":64},{"name":"get_e","line":70},{"name":"get_s_q_r_t2","line":76},{"name":"get_s_q_r_t3","line":82},{"name":"get_golden_ratio","line":88},{"name":"get_system_limits","line":94},{"name":"get_sacred_constants","line":104}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","constants","system","limits","sacred","max","path","len","args","env","vars","get","golden","ratio"]},{"id":"fb4321801a722b535d3a689a94f5ecf60894cf5f448d3e33e6447866619e541b","sources":[{"repo":"ghashtag/t27","path":"specs/agents/n.t27","health":"ok","module":"agent_n"}],"description":"specs/agents/n.t27 -- agent t27/N, letter N of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/N). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent N - Nu (Numeric)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/stdlib.t27","health":"warn","module":"Stdlib"}],"description":"","symbols":[{"name":"StdlibResult","line":6},{"name":"Vec","line":12},{"name":"Str","line":18},{"name":"Map","line":23},{"name":"Opt","line":29},{"name":"Result","line":34},{"name":"Iterator","line":40},{"name":"DEFAULT_CAPACITY","line":46},{"name":"MAX_MAP_ENTRIES","line":47},{"name":"MAX_STRING_LEN","line":48},{"name":"vec_new","line":50},{"name":"vec_with_capacity","line":54},{"name":"vec_push","line":58},{"name":"vec_pop","line":67},{"name":"vec_get","line":75},{"name":"vec_set","line":82},{"name":"vec_len","line":90},{"name":"vec_clear","line":94},{"name":"vec_is_empty","line":98},{"name":"vec_contains","line":102},{"name":"vec_index_of","line":113},{"name":"vec_reverse","line":124},{"name":"str_new","line":136},{"name":"str_from","line":140},{"name":"str_len","line":151},{"name":"str_is_empty","line":155},{"name":"str_eq","line":159},{"name":"str_concat","line":173},{"name":"str_char_at","line":190},{"name":"str_contains","line":197},{"name":"str_index_of","line":208},{"name":"str_sub","line":219},{"name":"map_new","line":230},{"name":"map_insert","line":238},{"name":"map_get","line":256},{"name":"map_contains","line":267},{"name":"map_len","line":278},{"name":"opt_some","line":282},{"name":"opt_none","line":286},{"name":"opt_is_some","line":290},{"name":"opt_is_none","line":294},{"name":"opt_unwrap","line":298},{"name":"opt_unwrap_or","line":302},{"name":"result_ok","line":309},{"name":"result_err","line":313},{"name":"result_is_ok","line":317},{"name":"result_is_err","line":321},{"name":"result_unwrap","line":325},{"name":"result_unwrap_or","line":329},{"name":"result_error_code","line":336},{"name":"iter_new","line":340},{"name":"iter_has_next","line":344},{"name":"iter_next","line":348},{"name":"iter_peek","line":357},{"name":"iter_pos","line":364},{"name":"iter_remaining","line":368},{"name":"fmt_u32","line":375},{"name":"fmt_i32","line":400},{"name":"fmt_bool","line":418},{"name":"fmt_hex","line":431}],"imports":[{"name":"compiler::parser","line":3},{"name":"compiler::lexer","line":4}],"terms":["compiler","stdlib","vec","str","map","opt","iterator","default","capacity","max","entries","len","push","pop","get","set","clear","empty","contains","index","reverse","concat","char","sub","insert","unwrap","err","iter","peek","pos","remaining","fmt","u32","i32","hex"]},{"id":"fb7ac4208772624a36f6651fd54d4c1347a96bad3b78093ee5c248f42f389a2a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/verilog/codegen.t27","health":"ok","module":null}],"description":"codegen.t27 — Code Generator for Verilog Generates synthesizable Verilog from t27 AST","symbols":[{"name":"VerilogCodegenOptions","line":8},{"name":"VerilogCodegen","line":16},{"name":"VerilogCodegen","line":28},{"name":"calculate_width","line":47},{"name":"VerilogCodegen","line":62},{"name":"VerilogCodegen","line":108},{"name":"VerilogCodegen","line":119},{"name":"VerilogCodegen","line":131},{"name":"VerilogCodegen","line":153},{"name":"VerilogCodegen","line":193},{"name":"VerilogCodegen","line":217},{"name":"VerilogCodegen","line":238},{"name":"VerilogCodegen","line":255},{"name":"VerilogCodegen","line":276},{"name":"VerilogCodegen","line":287},{"name":"VerilogCodegen","line":304},{"name":"VerilogCodegen","line":320},{"name":"VerilogCodegen","line":331},{"name":"VerilogCodegen","line":339},{"name":"VerilogCodegen","line":351},{"name":"VerilogCodegen","line":362},{"name":"VerilogCodegen","line":372},{"name":"VerilogCodegen","line":442},{"name":"VerilogCodegen","line":448},{"name":"format_hex","line":510},{"name":"VerilogCodegen","line":524},{"name":"VerilogCodegen","line":529},{"name":"VerilogCodegen","line":540},{"name":"VerilogCodegen","line":545},{"name":"StringBuilder","line":552},{"name":"StringBuilder","line":560},{"name":"StringBuilder","line":569},{"name":"generate_verilog","line":574}],"imports":[],"terms":["fpga","compiler","codegen","verilog","options","calculate","width","format","hex","builder","generate"]},{"id":"fb82b6e4149b8be9916c35694faaeca85b555a6e3044cd3bc35f4d836ce60e49","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27","health":"ok","module":"cron_999_multibots_telegraf_check_stuck_trainings"}],"description":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27 -- cron inngest/999-multibots-telegraf/check-stuck-trainings Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/check-stuck-trainings). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/training/checkStuckTrainings.ts#L53. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.","symbols":[{"name":"KIND","line":11},{"name":"ID","line":12},{"name":"NAME","line":13},{"name":"HOST","line":14},{"name":"REPO","line":15},{"name":"SERVICE","line":16},{"name":"SUMMARY_EN","line":17},{"name":"SCHEDULE","line":18},{"name":"TZ","line":19},{"name":"RUNS","line":20},{"name":"RUNS_NOTE","line":21},{"name":"ENABLED","line":22},{"name":"NOTE","line":23},{"name":"ON_FAILURE","line":24},{"name":"CONTROL","line":25}],"imports":[],"terms":["crons","multibots","telegraf","stuck","trainings","cron","kind","host","service","summary","schedule","runs","note","enabled","failure","control"]},{"id":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/bezier.t27","health":"ok","module":"TriBezier"}],"description":"t27/specs/","symbols":[{"name":"Point","line":13},{"name":"BezierCurve","line":18},{"name":"evaluate","line":28},{"name":"derivative","line":52},{"name":"default_input","line":122}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","bezier","point","curve","evaluate","derivative","default"]},{"id":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","sources":[{"repo":"ghashtag/t27","path":"specs/config/schema.t27","health":"ok","module":"config-schema"}],"description":"config/schema.t27 — Config Schema Specification Configuration structures for providers, agents, LSP","symbols":[{"name":"DEFAULT_CONFIG_FILE","line":19},{"name":"DEFAULT_ENV_FILE","line":22},{"name":"DEFAULT_PROVIDER","line":25},{"name":"DEFAULT_MODEL","line":28},{"name":"MAX_API_KEY_LENGTH","line":31},{"name":"MAX_AGENT_NAME_LENGTH","line":34},{"name":"MAX_TIMEOUT_SEC","line":37},{"name":"DEFAULT_TIMEOUT_SEC","line":40},{"name":"DEFAULT_MAX_TOKENS","line":43},{"name":"DEFAULT_TEMPERATURE","line":46},{"name":"ProviderType","line":49},{"name":"AgentCapability","line":56},{"name":"ProviderConfig","line":69},{"name":"AgentConfig","line":80},{"name":"MCPServerConfig","line":90},{"name":"LSPConfig","line":99},{"name":"LanguageServer","line":108},{"name":"TuiConfig","line":116},{"name":"Keybinding","line":125},{"name":"LoggingConfig","line":132},{"name":"PathsConfig","line":140},{"name":"Config","line":148},{"name":"ValidationResult","line":160},{"name":"ConfigError","line":166},{"name":"provider_default","line":177},{"name":"provider_with_key","line":190},{"name":"base","line":191},{"name":"agent_default","line":196},{"name":"agent_with_capabilities","line":208},{"name":"base","line":209},{"name":"lsp_server_create","line":214},{"name":"tui_default","line":224},{"name":"logging_default","line":235},{"name":"paths_default","line":245},{"name":"config_default","line":255},{"name":"validation_success","line":269},{"name":"validation_failure","line":277},{"name":"error_create","line":285},{"name":"error_with_severity","line":294},{"name":"is_anthropic","line":303},{"name":"is_openai","line":308},{"name":"is_custom","line":313},{"name":"has_api_key","line":318},{"name":"agent_has_capability","line":323},{"name":"lsp_is_enabled","line":333},{"name":"config_add_agent","line":338},{"name":"config_remove_agent","line":343},{"name":"config_agent_count","line":348},{"name":"append_agents","line":353},{"name":"append_agents_slice","line":363},{"name":"concat_agents","line":370},{"name":"concat_string","line":380},{"name":"append_byte","line":389},{"name":"provider","line":400},{"name":"provider","line":405},{"name":"agent","line":410},{"name":"caps","line":415},{"name":"agent","line":416},{"name":"lsp","line":422},{"name":"tui","line":427},{"name":"logging","line":432},{"name":"paths","line":437},{"name":"config","line":442},{"name":"result","line":447},{"name":"error","line":452},{"name":"result","line":453},{"name":"agent","line":459},{"name":"caps","line":465},{"name":"agent","line":466},{"name":"caps","line":471},{"name":"agent","line":472},{"name":"provider","line":575},{"name":"context","line":588},{"name":"result","line":589},{"name":"context","line":596},{"name":"result","line":597},{"name":"caps","line":645},{"name":"agent","line":646}],"imports":[{"name":"std","line":12}],"terms":["config","schema","default","env","provider","model","max","api","key","length","timeout","sec","tokens","temperature","capability","mcpserver","lspconfig","language","tui","keybinding","logging","paths","validation","base","capabilities","lsp","create","success","failure","severity","anthropic","openai","custom","enabled","remove","count","append","agents","slice","concat","byte","caps"]},{"id":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/formal.t27","health":"warn","module":"igla-race-formal"}],"description":"t27/specs/igla/race/formal.t27 IGLA RACE formal verification specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (.push(), .contains(), @floatFromInt, array concatenation with +).","symbols":[{"name":"PO_BITWIDTH_SAFETY","line":17},{"name":"PO_COMBINATIONAL_LOOP","line":18},{"name":"PO_CASE_EXHAUSTIVE","line":19},{"name":"PO_TIMING_CONSTRAINT","line":20},{"name":"PO_EQUIVALENCE_REFINE","line":21},{"name":"PO_OPCODE_INTEGRITY","line":22},{"name":"PROOF_OBLIGATION_COUNT","line":24},{"name":"ProofObligation","line":30},{"name":"ProofStatus","line":39},{"name":"FormalReport","line":47},{"name":"EquivalenceCheck","line":55},{"name":"check_bitwidth_safety","line":68},{"name":"check_bitwidth_safety_inner","line":72},{"name":"check_combinational_loops","line":93},{"name":"check_combinational_loops_inner","line":97},{"name":"contains_substring","line":117},{"name":"contains_substring_inner","line":121},{"name":"prefix_match","line":133},{"name":"check_case_exhaustive","line":148},{"name":"check_case_exhaustive_inner","line":152},{"name":"strings_equal","line":175},{"name":"strings_equal_inner","line":182},{"name":"prove_equivalence","line":192},{"name":"generate_report","line":201},{"name":"count_proved","line":219},{"name":"count_assigns","line":227},{"name":"compute_coverage","line":234},{"name":"all_proved","line":244},{"name":"any_disproved","line":254},{"name":"all_disproved","line":264},{"name":"any_case","line":274}],"imports":[{"name":"base::types","line":10},{"name":"math::constants","line":11}],"terms":["igla","race","formal","bitwidth","safety","combinational","loop","case","exhaustive","timing","constraint","equivalence","refine","opcode","integrity","proof","obligation","count","status","report","inner","loops","contains","substring","prefix","match","strings","equal","prove","generate","proved","assigns","compute","disproved"]},{"id":"fbcf95d6a288082c34c0ddcde52511345bfc089a8c49af43803ed0b64155b033","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/catalog.spec-mirror.t27","health":"ok","module":"trinity_capability_catalog_spec_mirror"}],"description":"specs/trinity/capabilities/catalog.spec-mirror.t27 -- capability trinity/catalog.spec-mirror: The vendored spec catalog and the Queen atlas under apps/website/public/t27/: a One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","catalog","mirror","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"fc14c912253e6b52a302909533c7da0fd963384e66b03eda50a3ca9ca7c68659","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/codegen.t27","health":"ok","module":"TestSpec"}],"description":"t27/specs/","symbols":[{"name":"ParseError","line":13}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["pipeline","codegen","parse"]},{"id":"fc6550b88f43e488b6920e33f140cb90350cae7b7e8b7d557b6aaa2ba8f642ba","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/reed_solomon.t27","health":"ok","module":"TriReedSolomon"}],"description":"t27/specs/","symbols":[{"name":"RSCode","line":13},{"name":"encode","line":23},{"name":"decode","line":28}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["crypto","reed","solomon","rscode","encode","decode"]},{"id":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/link_quality_monitor.t27","health":"ok","module":"LinkQualityMonitor"}],"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","symbols":[{"name":"ALPHA_Q8","line":6},{"name":"ONE_MINUS_ALPHA_Q8","line":7},{"name":"MAX_HISTORY","line":10},{"name":"MIN_HISTORY","line":11},{"name":"QUALITY_GOOD","line":14},{"name":"QUALITY_POOR","line":15},{"name":"TREND_THRESHOLD","line":16},{"name":"update_ewma","line":20},{"name":"calculate_trend","line":39},{"name":"predict_next_etx","line":56},{"name":"is_degrading","line":70},{"name":"quality_score","line":76},{"name":"classify_quality","line":88}],"imports":[],"terms":["macos","rings","rust","mesh","link","quality","monitor","alpha","one","minus","max","history","min","good","poor","trend","threshold","ewma","calculate","predict","etx","degrading","score","classify"]},{"id":"fcce2147f2fced23acc8d32364023ead496c229862f1f03ae9f5fc6c7c384aeb","sources":[{"repo":"ghashtag/t27","path":"specs/agents/v.t27","health":"ok","module":"agent_v"}],"description":"specs/agents/v.t27 -- agent t27/V, letter V of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/V). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent V - Vau (Verdict)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).","symbols":[{"name":"KIND","line":12},{"name":"ID","line":13},{"name":"LETTER","line":14},{"name":"ORDINAL","line":16},{"name":"LETTER_NAME","line":17},{"name":"NAME","line":18},{"name":"DOMAIN","line":19},{"name":"ARCHETYPE","line":20},{"name":"REGISTER","line":22},{"name":"LAYER","line":24},{"name":"SUMMARY_EN","line":25},{"name":"SOUL","line":27},{"name":"AGENTS_DOC","line":28},{"name":"ALPHABET","line":29},{"name":"KEY_FILES","line":31},{"name":"ENTRY_INVARIANT","line":32},{"name":"EXIT_INVARIANT","line":33},{"name":"CLARA_ROLE","line":35},{"name":"SKILLS","line":38},{"name":"SKILLS_NOTE","line":39},{"name":"TOOLS","line":42},{"name":"TOOLS_NOTE","line":43},{"name":"EXPERIENCE_LOG","line":45},{"name":"ENABLED","line":46}],"imports":[],"terms":["agents","kind","letter","ordinal","domain","archetype","register","layer","summary","soul","doc","alphabet","key","entry","invariant","exit","clara","role","skills","note","experience","log","enabled"]},{"id":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/flow_control.t27","health":"ok","module":"flow_control"}],"description":"Flow Control - advanced flow control and backpressure Enables end-to-end flow management and congestion prevention","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"WINDOW_SIZE","line":8},{"name":"CREDIT_THRESHOLD","line":9},{"name":"BACKPRESSURE_THRESHOLD","line":10},{"name":"create_flow_state","line":13},{"name":"get_sender_id","line":20},{"name":"get_receiver_id","line":24},{"name":"get_window_size","line":28},{"name":"get_credits","line":32},{"name":"update_credits","line":37},{"name":"has_credits","line":46},{"name":"consume_credit","line":57},{"name":"add_credits","line":68},{"name":"is_under_backpressure","line":81},{"name":"calculate_backpressure_level","line":95},{"name":"create_flow_message","line":111},{"name":"get_message_type","line":118},{"name":"get_flow_id","line":122},{"name":"get_message_credits","line":126},{"name":"get_sequence","line":130},{"name":"MSG_DATA","line":135},{"name":"MSG_ACK","line":136},{"name":"MSG_CREDIT_UPDATE","line":137},{"name":"MSG_BACKPRESSURE","line":138},{"name":"process_message","line":141},{"name":"send_data","line":156},{"name":"send_ack","line":167},{"name":"find_flow_by_sender","line":178},{"name":"find_flow_by_receiver","line":193},{"name":"is_any_flow_blocked","line":208},{"name":"count_active_flows","line":222},{"name":"calculate_total_credits","line":238},{"name":"apply_backpressure","line":251},{"name":"release_backpressure","line":263}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","flow","control","max","flows","window","size","credit","threshold","backpressure","create","state","get","sender","receiver","credits","consume","under","calculate","level","sequence","msg","data","ack","process","send","find","blocked","count","active","total","apply","release"]},{"id":"fcef546e7cfd5cb87d6c60d728b36bcd18bd889f48fe62678f23cfe99745dfeb","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dot_stream.t27","health":"warn","module":"TrinityDotStreamT27"}],"description":"","symbols":[{"name":"dense_digit","line":8},{"name":"decode","line":15},{"name":"activation","line":32},{"name":"product","line":38},{"name":"sum_group","line":48},{"name":"valid_mask","line":54},{"name":"valid_lane","line":65},{"name":"valid_group","line":74},{"name":"on_clock","line":113}],"imports":[],"terms":["dmitrii","memory","rtl","dot","stream","dense","digit","decode","activation","product","sum","group","valid","mask","lane","clock"]},{"id":"fd103db5e8f85819d411f1d6215d94681742d58e2c32e8dcea50d4180bf6d638","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/statistics.t27","health":"ok","module":"TriStatistics"}],"description":"t27/specs/","symbols":[{"name":"mean","line":14},{"name":"variance","line":19},{"name":"std_dev","line":24},{"name":"median","line":29},{"name":"percentile","line":34},{"name":"correlation","line":39}],"imports":[{"name":"base::types","line":6},{"name":"math::constants","line":7}],"terms":["math","statistics","mean","variance","std","dev","median","percentile","correlation"]},{"id":"fd622012c98c063b5302508590829a22d10013618c70523d1c385b0f6c848c25","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft8.t27","health":"ok","module":"triformat_gft8"}],"description":"gft8.t27 -- GF-T8: the golden-ratio ternary ladder, 8-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft8","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"fdd88e4f5e3cfd9cd416509597c4b3581fec1de922622c24bf8e6b700a5a41c5","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/registry.commands.t27","health":"ok","module":"trinity_capability_registry_commands"}],"description":"specs/trinity/capabilities/registry.commands.t27 -- capability trinity/registry.commands: The command registry .trinity/registry.json, exported from src/registry and drif One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","registry","commands","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/bandwidth_allocator.t27","health":"warn","module":"BandwidthAllocator"}],"description":"Bandwidth Allocator - fair bandwidth distribution and QoS Intelligent bandwidth management for network flows","symbols":[{"name":"MAX_FLOWS","line":7},{"name":"TOTAL_BANDWIDTH","line":8},{"name":"MIN_BANDWIDTH","line":9},{"name":"MAX_BANDWIDTH","line":10},{"name":"create_flow_requirement","line":13},{"name":"get_flow_id","line":20},{"name":"get_flow_priority","line":24},{"name":"get_min_bandwidth","line":28},{"name":"get_current_bandwidth","line":32},{"name":"create_allocation_state","line":37},{"name":"get_allocated_bw","line":44},{"name":"get_pending_requests","line":48},{"name":"get_fair_share","line":52},{"name":"get_last_update","line":56},{"name":"create_flow_array","line":61},{"name":"get_flow_req","line":72},{"name":"calculate_fair_share","line":84},{"name":"allocate_bandwidth","line":92},{"name":"needs_more_bandwidth","line":125},{"name":"update_flow_bandwidth","line":132},{"name":"count_active_flows","line":144},{"name":"find_reclaimable_bandwidth","line":160},{"name":"prioritize_bandwidth","line":196}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","bandwidth","allocator","max","flows","total","min","create","flow","requirement","get","priority","allocation","state","allocated","requests","fair","share","array","req","calculate","allocate","more","count","active","find","reclaimable","prioritize"]},{"id":"fdea4af949276c03185144ef699465fa3c71c59ec505bc0f1f10fe064a0d9e15","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/intrinsic_invariant_sweep.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","intrinsic","invariant","sweep"]},{"id":"fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/fault_detection.t27","health":"ok","module":"FaultDetection"}],"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","symbols":[{"name":"MAX_NODES","line":7},{"name":"FAILURE_THRESHOLD","line":8},{"name":"WARNING_THRESHOLD","line":9},{"name":"HEARTBEAT_TIMEOUT","line":10},{"name":"LINK_QUALITY_POOR","line":11},{"name":"create_node_state","line":14},{"name":"get_is_alive","line":21},{"name":"get_failure_count","line":25},{"name":"get_last_heartbeat","line":29},{"name":"get_link_quality","line":33},{"name":"create_node_table","line":38},{"name":"get_node_state","line":45},{"name":"is_heartbeat_timeout","line":57},{"name":"detect_node_failure","line":64},{"name":"increment_failure_count","line":72},{"name":"reset_failure_count","line":83},{"name":"is_node_failed","line":90},{"name":"is_node_warning","line":95},{"name":"is_poor_link","line":101},{"name":"update_link_quality","line":106},{"name":"mark_node_dead","line":114},{"name":"mark_node_alive","line":122},{"name":"count_failed_nodes","line":128}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","fault","detection","max","nodes","failure","threshold","warning","heartbeat","timeout","link","quality","poor","create","node","state","get","alive","count","table","detect","increment","reset","failed","mark","dead"]},{"id":"fe0dd93dce72f6dd9eb5c505c14b2d99b06211a005574a31cb8642b32e3ca070","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl_driver.t27","health":"warn","module":"TrinityMemoryRTLDriver"}],"description":"RTL packet preparation, observed-output validation and actual Icarus runner. The runner invokes a generic OS process ABI and checks both child exits. Parsing a fixture alone is not simulation evidence; no software fallback. Buffers must be live/nonoverlapping. Prepared outputs commit after validation; observed results are scratch on failure, summary commits only on success.","symbols":[{"name":"TM_RTL_ERR_ARGUMENT","line":7},{"name":"TM_RTL_ERR_CAPACITY","line":8},{"name":"TM_RTL_ERR_OVERFLOW","line":9},{"name":"TM_RTL_ERR_OUTPUT","line":10},{"name":"TM_RTL_ERR_MISMATCH","line":11},{"name":"TMRtlExpected","line":12},{"name":"TMRtlObserved","line":13},{"name":"TMRtlSummary","line":14},{"name":"TMRtlCursor","line":18},{"name":"tm_rtl_packet_count","line":19},{"name":"tm_rtl_packet","line":28},{"name":"tm_rtl_prepare_dot","line":39},{"name":"tm_rtl_expected_words","line":73},{"name":"tm_rtl_write_mem","line":88},{"name":"tm_rtl_take","line":102},{"name":"tm_rtl_unsigned","line":108},{"name":"tm_rtl_signed","line":119},{"name":"tm_rtl_line_prefix","line":128},{"name":"tm_rtl_parse_output","line":135},{"name":"TM_RTL_ERR_PROCESS","line":186},{"name":"TM_RTL_ERR_RESOURCE","line":187},{"name":"TMRtlWitness","line":188},{"name":"tm_rtl_process_literal","line":193},{"name":"tm_rtl_process_number","line":199},{"name":"tm_rtl_frame_parameters","line":212},{"name":"tm_rtl_run_frames_context","line":219},{"name":"tm_rtl_run_frames","line":282},{"name":"tm_rtl_run_dot","line":292}],"imports":[],"terms":["dmitrii","memory","rtl","driver","rtldriver","err","argument","capacity","overflow","mismatch","tmrtl","expected","observed","summary","cursor","packet","count","prepare","dot","words","write","mem","take","unsigned","signed","prefix","parse","process","resource","witness","literal","frame","parameters","frames"]},{"id":"fe149804c3b532069ac353681dea878cc30f032de18c74cd77fb24bfb79c0423","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_tb.t27","health":"ok","module":"Power_Testbench"}],"description":"t27/specs/fpga/testbench/power_tb.t27 Power Analysis Testbench Tests power domain management, gating, and estimation","symbols":[{"name":"CLK_PERIOD","line":10},{"name":"VCCINT","line":11},{"name":"VCCAUX","line":12},{"name":"MAX_POWER_MW","line":13},{"name":"LEAKAGE_PERCENT","line":14},{"name":"tick","line":29},{"name":"reset","line":34},{"name":"estimate_power","line":42},{"name":"calc_leakage","line":47},{"name":"calc_dynamic","line":51},{"name":"gate_domain","line":55},{"name":"ungate_domain","line":61}],"imports":[{"name":"fpga::power::Power","line":8}],"terms":["fpga","testbench","power","clk","period","vccint","vccaux","max","leakage","percent","tick","reset","estimate","calc","dynamic","gate","domain","ungate"]},{"id":"fe5cd36d3e031ae951e11290b42e4fa89ca8e1f8cc0599da1b4518bab9285c6a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/edge_demo.t27","health":"ok","module":"TrinityMemoryEdgeDemoSpec"}],"description":"specs/memory/tmem/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one","symbols":[{"name":"TMS_EDGE_CLASSES","line":16},{"name":"TMS_EDGE_SAMPLES","line":17},{"name":"TMS_EDGE_HALF","line":18},{"name":"TMS_EDGE_WEIGHTS","line":19},{"name":"TMS_EDGE_MODEL_RANK","line":20},{"name":"TMS_EDGE_MODEL_SCALES","line":21},{"name":"TMS_EDGE_MODEL_AXES","line":22},{"name":"TMS_EDGE_DENSE5_PAYLOAD_BYTES","line":23},{"name":"TMS_EDGE_BASELINE2_PAYLOAD_BYTES","line":24},{"name":"EdgeLabel","line":26},{"name":"TMS_EDGE_FIXTURES","line":33},{"name":"TMS_EDGE_STEP_AMPLITUDE","line":34},{"name":"TMS_EDGE_ALTERNATING_AMPLITUDE","line":35},{"name":"TMS_EDGE_STEP_ACCUMULATOR","line":36},{"name":"TMS_EDGE_ALTERNATING_ACCUMULATOR","line":37},{"name":"EdgeFixture","line":39},{"name":"TMS_EDGE_MODES","line":49},{"name":"TMS_EDGE_PREDICTIONS","line":50},{"name":"TMS_EDGE_RTL_ROWS","line":51},{"name":"TMS_EDGE_RTL_SEED_MAX","line":52},{"name":"TMS_EDGE_SEED_DEFAULT","line":53},{"name":"TMS_EDGE_REPORT_LIMITATIONS","line":54},{"name":"TMS_EDGE_TIMING_FIELDS","line":55},{"name":"TMS_EDGE_PHYSICAL_DEVICE_TESTED","line":56},{"name":"tms_edge_weight","line":61},{"name":"tms_edge_expected_label","line":74},{"name":"tms_edge_synthetic_sample","line":80},{"name":"tms_edge_accumulator","line":88},{"name":"tms_edge_score","line":100},{"name":"tms_edge_argmax","line":104},{"name":"tms_edge_score_finite","line":117},{"name":"tms_edge_rtl_seed","line":122},{"name":"tms_edge_rtl_seed_valid","line":126},{"name":"tms_edge_raw_payload_bytes","line":130},{"name":"tms_edge_predictions","line":136},{"name":"tms_edge_rtl_rows","line":140}],"imports":[],"terms":["memory","tmem","edge","demo","tms","classes","samples","half","weights","model","rank","scales","axes","dense5","payload","bytes","baseline2","label","fixtures","step","amplitude","alternating","accumulator","fixture","modes","predictions","rtl","rows","seed","max","default","report","limitations","timing","fields","physical","device","tested","weight","expected","synthetic","sample","score","argmax","finite","valid","raw"]},{"id":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_router.t27","health":"warn","module":"MultiPathRouter"}],"description":"Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%","symbols":[{"name":"MAX_PATHS","line":6},{"name":"ETX_THRESHOLD_GOOD","line":9},{"name":"ETX_THRESHOLD_POOR","line":10},{"name":"select_path_index","line":13},{"name":"path_quality_score","line":30},{"name":"needs_failover","line":45},{"name":"next_path_index","line":54},{"name":"path_reliability","line":64}],"imports":[],"terms":["macos","rings","rust","mesh","multipath","router","multi","path","max","paths","etx","threshold","good","poor","select","index","quality","score","failover","reliability"]},{"id":"fe6ff2cc8fb17534f6cbd181a4af31750729533339cbf99889aff1a06bd09151","sources":[{"repo":"ghashtag/t27","path":"specs/physics/sacred_verification.t27","health":"ok","module":"SacredVerification"}],"description":"t27/specs/physics/sacred_verification.t27 KEPLER→NEWTON Sacred Formula Verification Spec Status: Final v1.0 Date: 2026-04-06 This spec defines the verification framework for [planned] 152 Sacred Formula equations (N implemented today). It provides a structured approach to testing which","symbols":[{"name":"FormulaCategory","line":32},{"name":"FormulaDefinition","line":39},{"name":"VerificationStatus","line":54},{"name":"VerificationResult","line":62},{"name":"phi_identity_results","line":76},{"name":"chern_simons_formulas","line":140},{"name":"lqg_gamma_formulas","line":204},{"name":"e8_formulas","line":257},{"name":"physical_constants_formulas","line":310},{"name":"G_RAW","line":375},{"name":"G_SCALE","line":376},{"name":"OMEGA_LAMBDA_RAW","line":379},{"name":"OMEGA_COARSE_SCALE","line":380},{"name":"verify_formula","line":386},{"name":"abs_error","line":387},{"name":"abs_err","line":388},{"name":"rel_error","line":389},{"name":"scale_factor_needed","line":394},{"name":"is_scale_issue","line":395},{"name":"VerificationReport","line":415},{"name":"generate_verification_report","line":425},{"name":"result","line":436}],"imports":[{"name":"math::constants","line":19},{"name":"math::sacred_physics","line":20}],"terms":["physics","sacred","verification","formula","category","definition","status","phi","identity","results","chern","simons","formulas","lqg","gamma","physical","constants","raw","scale","omega","lambda","coarse","verify","abs","err","rel","factor","needed","report","generate"]},{"id":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_quality_monitor.t27","health":"ok","module":"LinkQualityMonitor"}],"description":"Link quality monitoring with EWMA-based prediction Research: EWMA provides optimal balance between responsiveness and stability","symbols":[{"name":"ALPHA_Q8","line":6},{"name":"ONE_MINUS_ALPHA_Q8","line":7},{"name":"MAX_HISTORY","line":10},{"name":"MIN_HISTORY","line":11},{"name":"QUALITY_GOOD","line":14},{"name":"QUALITY_POOR","line":15},{"name":"TREND_THRESHOLD","line":16},{"name":"update_ewma","line":20},{"name":"calculate_trend","line":40},{"name":"predict_next_etx","line":56},{"name":"is_degrading","line":71},{"name":"quality_score","line":77},{"name":"classify_quality","line":92}],"imports":[],"terms":["net","link","quality","monitor","alpha","one","minus","max","history","min","good","poor","trend","threshold","ewma","calculate","predict","etx","degrading","score","classify"]},{"id":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","sources":[{"repo":"ghashtag/t27","path":"specs/cloud/railway_deploy.t27","health":"warn","module":"cloud-railway-deploy"}],"description":"cloud/railway_deploy.t27 — Autonomous Railway Deployment","symbols":[{"name":"PHI","line":17},{"name":"PHI_INV","line":20},{"name":"TRINITY","line":23},{"name":"GAMMA_LQG","line":26},{"name":"HIVE_BEE_COUNT","line":29},{"name":"QUEEN_PORT","line":32},{"name":"RAILWAY_GRAPHQL_URL","line":39},{"name":"RAILWAY_SANDBOX_ENV","line":42},{"name":"DEPLOY_TIMEOUT_MS","line":45},{"name":"HEALTH_CHECK_INTERVAL_MS","line":48},{"name":"HEALTH_CHECK_MAX_ATTEMPTS","line":51},{"name":"RailwayServiceConfig","line":58},{"name":"EnvVar","line":74},{"name":"DeployState","line":84},{"name":"DeployResult","line":97},{"name":"HealthStatus","line":107},{"name":"init_sacred_env_vars","line":120},{"name":"deploy_state_count","line":208},{"name":"get_hive_bee_count","line":213},{"name":"get_queen_port","line":218},{"name":"phi_sq","line":243},{"name":"phi_inv_sq","line":244},{"name":"sum","line":245},{"name":"env_vars","line":258},{"name":"env_vars","line":271},{"name":"env_vars","line":277},{"name":"phi_sq","line":318},{"name":"phi_inv_sq","line":319},{"name":"sum","line":320},{"name":"gamma_calc","line":326}],"imports":[{"name":"base::types::Trit","line":8},{"name":"math::sacred_physics","line":9},{"name":"vsa::vsa_core::Hypervector","line":10}],"terms":["cloud","railway","deploy","phi","inv","gamma","lqg","hive","bee","count","queen","port","graphql","url","sandbox","env","timeout","health","interval","max","attempts","service","config","var","state","status","init","sacred","vars","get","sum","calc"]},{"id":"feb86eeefa90d0d29d448f031ca0ecebc52235f088d0697ef4cd0920d126ef60","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/web.queen-web.t27","health":"ok","module":"trinity_capability_web_queen_web"}],"description":"specs/trinity/capabilities/web.queen-web.t27 -- capability trinity/web.queen-web: The Queen web client and its proxy (apps/queen-web, apps/queen-proxy) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","web","queen","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"febf87624d67aa679c451ceba324033bcca3e9bd351a150bdd57a3e38e79122f","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/crossopt.t27","health":"ok","module":"CrossOpt"}],"description":"t27/specs/fpga/crossopt.t27 T27 Cross-Module Optimization Specification Inter-module constant propagation, dead signal elimination, instance merging Uses flat arrays + count fields (parser-compatible)","symbols":[{"name":"CrossOptPass","line":10},{"name":"pass_zero","line":18},{"name":"pass_result","line":28},{"name":"total_improvements","line":38},{"name":"has_improvements","line":42},{"name":"improvement_density","line":46},{"name":"CrossOptReport","line":53},{"name":"report_ok","line":61},{"name":"total_optimizations","line":71},{"name":"is_effective","line":75}],"imports":[],"terms":["fpga","crossopt","cross","opt","pass","zero","total","improvements","improvement","density","report","optimizations","effective"]},{"id":"fef84759ef56f8c9704b710d79fc3724cc415e9369a80779b22a5925890d36de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/gf16_plus_quire_audit.t27","health":"warn","module":null}],"description":"","symbols":[],"imports":[],"terms":["fpga","numeric","gf16","plus","quire","audit"]},{"id":"feff526f6af3301b2c9d004f6e14ffadc2c85005d8a6f772c5080f67cb638d05","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/ops.deploy-infra.t27","health":"ok","module":"trinity_capability_ops_deploy_infra"}],"description":"specs/trinity/capabilities/ops.deploy-infra.t27 -- capability trinity/ops.deploy-infra: Deployment descriptors: helm, k8s, docker, aws-f2, runtime, packages, contracts One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","ops","deploy","infra","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"ff009c88a09951bbf00924db019cdeb026e4af1ba6e546107d8739ba30917177","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorpercep3.t27","health":"warn","module":"GftXorPercep3"}],"description":"","symbols":[{"name":"magadd","line":11},{"name":"magsub","line":32},{"name":"sadd","line":58},{"name":"neg","line":71},{"name":"magmul","line":76},{"name":"smul","line":96},{"name":"relu","line":107},{"name":"scale_q","line":114},{"name":"signmul","line":125},{"name":"on_comb","line":134}],"imports":[],"terms":["ternary","gft","xorpercep3","xor","percep3","magadd","magsub","sadd","neg","magmul","smul","relu","scale","signmul","comb"]},{"id":"ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/failure_predictor.t27","health":"warn","module":"failure_predictor"}],"description":"Failure Predictor - predict node failures before they occur Enables proactive maintenance and network resilience","symbols":[{"name":"MAX_NODES","line":7},{"name":"WARNING_THRESHOLD","line":8},{"name":"CRITICAL_THRESHOLD","line":9},{"name":"HISTORY_SIZE","line":10},{"name":"create_health_metrics","line":13},{"name":"get_cpu_usage","line":20},{"name":"get_memory_usage","line":24},{"name":"get_error_rate","line":28},{"name":"get_temperature","line":32},{"name":"create_risk_score","line":37},{"name":"get_risk_level","line":44},{"name":"get_confidence","line":48},{"name":"get_risk_trend","line":52},{"name":"get_prediction_time","line":56},{"name":"create_health_array","line":61},{"name":"get_health_metrics","line":72},{"name":"calculate_health_score","line":84},{"name":"predict_failure_probability","line":102},{"name":"is_trending_failure","line":119},{"name":"predict_time_to_failure","line":130},{"name":"calculate_failure_risk","line":147},{"name":"needs_immediate_action","line":158},{"name":"find_most_at_risk","line":167}],"imports":[{"name":"base::types","line":5}],"terms":["macos","rings","rust","mesh","failure","predictor","max","nodes","warning","threshold","critical","history","size","create","health","metrics","get","cpu","usage","memory","rate","temperature","risk","score","level","confidence","trend","prediction","time","array","calculate","predict","probability","trending","immediate","action","find","most"]},{"id":"ff3d757f5e91373910923758a5bc7a8f26fde4d157e3d3aee120210996c45f0c","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/sparse_mask.t27","health":"warn","module":"sacred-sparse_mask"}],"description":"sparse_mask.t27 — Sacred Opcode 0xE8: Sparse Mask (Sparse Skip 2) Hardware for generating and applying sparse tensor masks","symbols":[{"name":"OP_SPARSE_MASK","line":12},{"name":"MASK_SIZE","line":14},{"name":"SPARSE_THRESHOLD_RATIO","line":15},{"name":"MASK_MODE_GEN","line":17},{"name":"MASK_MODE_APPLY","line":18},{"name":"MASK_MODE_COMBINE","line":19},{"name":"MASK_MODE_INVERT","line":20},{"name":"MASK_TYPE_DENSITY","line":22},{"name":"MASK_TYPE_PATTERN","line":23},{"name":"MASK_TYPE_RANDOM","line":24},{"name":"MASK_TYPE_PHI","line":25},{"name":"SparseMask","line":31},{"name":"MaskConfig","line":37},{"name":"MaskOp","line":44},{"name":"Vector16","line":51},{"name":"mask_count_set_bits","line":62},{"name":"mask_count_clear_bits","line":74},{"name":"mask_density","line":80},{"name":"set_bits","line":81},{"name":"mask_is_sparse","line":87},{"name":"mask_is_dense","line":93},{"name":"mask_generate_density","line":99},{"name":"target_bits","line":100},{"name":"mask_generate_phi","line":115},{"name":"mask_generate_pattern","line":131},{"name":"pattern_bits","line":133},{"name":"mask_generate_random","line":146},{"name":"bit","line":151},{"name":"feedback","line":156},{"name":"mask_generate","line":169},{"name":"mask_apply","line":204},{"name":"mask_combine","line":221},{"name":"mask_invert","line":232},{"name":"mask_complement","line":238},{"name":"inverted","line":239},{"name":"encode_sparse_mask","line":253},{"name":"op","line":255},{"name":"mode_field","line":256},{"name":"type_field","line":257},{"name":"seed_field","line":258},{"name":"decode_sparse_mask","line":264},{"name":"mode","line":265},{"name":"mask_type","line":266},{"name":"seed","line":267}],"imports":[],"terms":["euler","fpga","sparse","mask","sacred","size","threshold","ratio","mode","gen","apply","combine","invert","density","pattern","random","phi","config","vector16","count","set","bits","clear","dense","generate","target","bit","feedback","complement","inverted","encode","field","seed","decode"]},{"id":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf16_to_posit16.t27","health":"warn","module":"gf16-to-posit16"}],"description":"gf16_to_posit16.t27 — GF16 to Posit16 Converter GoldenFloat16 to Posit type 16 (unum 1.0) format conversion","symbols":[{"name":"GF16_BITS","line":12},{"name":"GF16_SIGN_BIT","line":13},{"name":"GF16_EXP_BITS","line":14},{"name":"GF16_MANT_BITS","line":15},{"name":"GF16_BIAS","line":16},{"name":"POSIT16_BITS","line":18},{"name":"POSIT16_ES","line":19},{"name":"POSIT16_MAX_EXP","line":20},{"name":"POSIT16_REGIME_BITS","line":22},{"name":"POSIT16_MANT_BITS","line":23},{"name":"MAX_EXP_DIFF","line":25},{"name":"Gf16","line":31},{"name":"Posit16","line":37},{"name":"PositComponents","line":41},{"name":"ConversionResult","line":48},{"name":"ConversionConfig","line":55},{"name":"gf16_from_bits","line":66},{"name":"gf16_to_bits","line":76},{"name":"sign_field","line":77},{"name":"exp_field","line":78},{"name":"mant_field","line":79},{"name":"gf16_is_zero","line":85},{"name":"gf16_is_subnormal","line":91},{"name":"gf16_is_normal","line":97},{"name":"gf16_is_infinity","line":103},{"name":"gf16_is_nan","line":109},{"name":"gf16_get_exp_biased","line":115},{"name":"posit16_from_bits","line":125},{"name":"posit16_to_bits","line":131},{"name":"posit16_is_zero","line":137},{"name":"posit16_is_one","line":143},{"name":"posit16_is_neg_one","line":149},{"name":"posit16_is_naR","line":155},{"name":"posit16_get_sign","line":161},{"name":"posit16_decode","line":167},{"name":"conversion_config_init","line":240},{"name":"gf16_to_posit16_raw","line":253},{"name":"gf16_to_posit16_with_result","line":322},{"name":"posit","line":339},{"name":"gf16_to_posit16","line":359},{"name":"gf16_bits_to_posit16_bits","line":365},{"name":"gf","line":366},{"name":"posit","line":367},{"name":"gf16_bits_to_posit16_bits_with_result","line":373},{"name":"gf","line":374}],"imports":[],"terms":["euler","fpga","gf16","posit16","bits","sign","bit","exp","mant","bias","max","regime","diff","posit","components","conversion","config","field","zero","subnormal","normal","infinity","nan","get","biased","one","neg","decode","init","raw"]},{"id":"ff49a27495a6de1e3fa7c6a16ed855385c7f772a67591d593199659d5387f814","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/weights.t27","health":"warn","module":"igla-coder-weights"}],"description":"t27/specs/igla/coder/weights.t27 Checkpoint / weight file loading stubs Bridges external checkpoint formats (GGUF, safetensors, custom) to WeightBank.","symbols":[{"name":"CheckpointHeader","line":16},{"name":"is_valid_checkpoint","line":28},{"name":"has_substring","line":38},{"name":"match_at","line":48},{"name":"parse_checkpoint_header","line":64},{"name":"safetensors_header_len","line":74},{"name":"parse_safetensors_header","line":95},{"name":"TensorShapeInfo","line":107},{"name":"parse_safetensors_tensor_shapes","line":117},{"name":"load_weights_from_safetensors","line":129},{"name":"load_weights_from_file","line":140},{"name":"save_checkpoint_trinity_format","line":154},{"name":"tensor_name_to_bank_index","line":185},{"name":"save_weights_to_file","line":200},{"name":"tensor_to_weight_bank","line":213},{"name":"tensor_to_i16_inner","line":217},{"name":"bank_data_equal","line":227},{"name":"sacred_opcode_to_embedding_index","line":241},{"name":"is_r_si_1_compliant","line":253},{"name":"is_r_si_1_compliant_inner","line":257},{"name":"is_json_digit","line":276},{"name":"json_char_to_u32","line":280},{"name":"parse_json_u32_array_impl","line":287},{"name":"parse_json_u32_array","line":298},{"name":"int4_quantize","line":648},{"name":"int4_dequantize","line":655},{"name":"int4_roundtrip","line":660},{"name":"int4_dequantize_bank","line":684}],"imports":[{"name":"base::types","line":8},{"name":"igla::race::bram_weights","line":9}],"terms":["igla","coder","weights","checkpoint","header","valid","substring","match","parse","safetensors","len","tensor","shape","info","shapes","load","save","format","bank","index","weight","i16","inner","data","equal","sacred","opcode","embedding","compliant","json","digit","char","u32","array","impl","int4","quantize","dequantize","roundtrip"]},{"id":"ff5ee808fd21fd6db87cf1bce2c5c3972ae090bf6b9a10da44df62d28cf9065f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft512.t27","health":"ok","module":"triformat_gft512"}],"description":"gft512.t27 -- GF-T512: the golden-ratio ternary ladder, 512-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden","symbols":[{"name":"SIGN_BITS","line":35},{"name":"EXP_TRITS","line":36},{"name":"MANT_BITS","line":37},{"name":"EXP_OFFSET","line":38},{"name":"OFFSET_MAX","line":39},{"name":"is_finite","line":41},{"name":"exp_values","line":42}],"imports":[{"name":"base::types","line":33}],"terms":["numeric","gft512","triformat","sign","bits","exp","trits","mant","offset","max","finite","values"]},{"id":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf32.t27","health":"warn","module":"GF32"}],"description":"t27/specs/numeric/gf32.t27 GoldenFloat32 — 32-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 8 (P1)","symbols":[{"name":"BITS","line":19},{"name":"SIGN_BITS","line":20},{"name":"EXP_BITS","line":21},{"name":"MANT_BITS","line":22},{"name":"EXP_BIAS","line":25},{"name":"PHI_DISTANCE","line":29},{"name":"GF32","line":35},{"name":"encode","line":44},{"name":"sign","line":49},{"name":"abs_val","line":50},{"name":"exp_unbiased","line":53},{"name":"exp_biased","line":54},{"name":"exp_clamped","line":57},{"name":"mant","line":60},{"name":"decode","line":70},{"name":"sign","line":71},{"name":"exp_biased","line":72},{"name":"mant","line":73},{"name":"exp_unbiased","line":81},{"name":"mant_normalized","line":88},{"name":"value","line":94},{"name":"max_value","line":106},{"name":"mant_max","line":107},{"name":"exp_max","line":108},{"name":"min_positive","line":112},{"name":"mant_min","line":113},{"name":"exp_min","line":114},{"name":"epsilon","line":118},{"name":"validate_format","line":126},{"name":"fmt","line":127},{"name":"MEMORY_RATIO_VS_FP32","line":149},{"name":"floor_log2","line":155},{"name":"extract_mantissa","line":169},{"name":"normalized","line":170},{"name":"frac","line":171},{"name":"max_mant","line":172},{"name":"clamp_u16","line":176},{"name":"pow","line":182}],"imports":[{"name":"numeric::goldenfloat_family","line":7},{"name":"numeric::phi_ratio","line":8}],"terms":["fpga","numeric","gf32","bits","sign","exp","mant","bias","phi","distance","encode","abs","val","unbiased","biased","clamped","decode","normalized","max","min","positive","epsilon","validate","format","fmt","memory","ratio","fp32","floor","log2","extract","mantissa","frac","clamp","u16","pow"]},{"id":"ffd65a9544a8d1bbfaa1a92b670c9e73137add7ef85524adf4ca692df16d5831","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/agent.daemons.t27","health":"ok","module":"trinity_capability_agent_daemons"}],"description":"specs/trinity/capabilities/agent.daemons.t27 -- capability trinity/agent.daemons: Agent runners and hooks built by default: ralph-agent, mu-agent, scholar-agent, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and","symbols":[{"name":"KIND","line":13},{"name":"ID","line":14},{"name":"TITLE","line":15},{"name":"OWNER_REPO","line":17},{"name":"DISPOSITION","line":19},{"name":"PROFILE","line":22},{"name":"CANONICAL_SPEC","line":25},{"name":"DIALECT","line":26},{"name":"IMPLEMENTATION","line":28},{"name":"GENERATED","line":29},{"name":"BACKEND","line":31},{"name":"TARGETS","line":33},{"name":"ACCEPTANCE","line":35},{"name":"EVIDENCE","line":37},{"name":"EVIDENCE_SOURCE","line":38},{"name":"WORK_PACKAGE","line":40},{"name":"NOTE","line":41},{"name":"ENABLED","line":42}],"imports":[],"terms":["capabilities","daemons","capability","kind","title","owner","disposition","profile","canonical","dialect","generated","backend","targets","acceptance","evidence","work","package","note","enabled"]},{"id":"fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fault_detection.t27","health":"ok","module":"FaultDetection"}],"description":"Fault Detection - identify node failures and link degradation Critical for self-healing mesh networks","symbols":[{"name":"MAX_NODES","line":7},{"name":"FAILURE_THRESHOLD","line":8},{"name":"WARNING_THRESHOLD","line":9},{"name":"HEARTBEAT_TIMEOUT","line":10},{"name":"LINK_QUALITY_POOR","line":11},{"name":"create_node_state","line":17},{"name":"get_is_alive","line":24},{"name":"get_failure_count","line":28},{"name":"get_last_heartbeat","line":32},{"name":"get_link_quality","line":36},{"name":"create_node_table","line":43},{"name":"get_node_state","line":47},{"name":"is_heartbeat_timeout","line":55},{"name":"detect_node_failure","line":62},{"name":"increment_failure_count","line":70},{"name":"reset_failure_count","line":81},{"name":"is_node_failed","line":88},{"name":"is_node_warning","line":93},{"name":"is_poor_link","line":99},{"name":"update_link_quality","line":104},{"name":"mark_node_dead","line":112},{"name":"mark_node_alive","line":120},{"name":"count_failed_nodes","line":126}],"imports":[{"name":"base::types","line":5}],"terms":["net","fault","detection","max","nodes","failure","threshold","warning","heartbeat","timeout","link","quality","poor","create","node","state","get","alive","count","table","detect","increment","reset","failed","mark","dead"]}],"dependencies":[{"from":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","sourceRepo":"ghashtag/t27","name":"base::types","line":15,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","sourceRepo":"ghashtag/t27","name":"base::ops","line":16,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","sourceRepo":"ghashtag/t27","name":"math::constants","line":17,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":18,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::top_level::ZeroDSP_TopLevel","line":9,"to":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","candidates":["bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":10,"to":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","candidates":["8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::uart::ZeroDSP_UART","line":11,"to":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","candidates":["38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":12,"to":"d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22","candidates":["d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::memory::Memory","line":13,"to":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","candidates":["5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::bridge::FPGA_Bridge","line":14,"to":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","candidates":["549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::gf16_accel::Gf16Accel","line":15,"to":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","candidates":["5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::fifo::Fifo","line":16,"to":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","candidates":["9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393"],"status":"resolved"},{"from":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sourceRepo":"ghashtag/t27","name":"fpga::axi4::Axi4","line":17,"to":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","candidates":["6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02"],"status":"resolved"},{"from":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","sourceRepo":"ghashtag/t27","name":"math::igla_primitives","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","sourceRepo":"ghashtag/t27","name":"igla::race::bram_weights","line":13,"to":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","candidates":["2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c"],"status":"resolved"},{"from":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"01aeef2f32ca6f6294e444026fff8d82b8a0f9dfc7bc39abb42c7894650a3d66","sourceRepo":"ghashtag/t27","name":"math::constants","line":28,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"01aeef2f32ca6f6294e444026fff8d82b8a0f9dfc7bc39abb42c7894650a3d66","sourceRepo":"ghashtag/t27","name":"math::e8_lie_algebra","line":29,"to":"da771c66524714c3a8c48aa095e71a5928cfa1cc82f2f819664493e042e9a698","candidates":["da771c66524714c3a8c48aa095e71a5928cfa1cc82f2f819664493e042e9a698"],"status":"resolved"},{"from":"025959391860663c194a10874f66af7dd8da26f8597f5bee89be66a283a66f60","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"025959391860663c194a10874f66af7dd8da26f8597f5bee89be66a283a66f60","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"051d7f2cf4839836609024f1e085e6f62fb14ca794d8ad779468c9b8974192ff","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"051d7f2cf4839836609024f1e085e6f62fb14ca794d8ad779468c9b8974192ff","sourceRepo":"ghashtag/t27","name":"shell::schema","line":7,"to":"60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3","candidates":["60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3"],"status":"resolved"},{"from":"051e8c6f568d660831950ec89c3148aa9219001db41877d1606d6ad5c019c53f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"051e8c6f568d660831950ec89c3148aa9219001db41877d1606d6ad5c019c53f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"05267a4e1f59698a7b77f9960613213d76323188e7e822bfce442888d8367d5a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"05267a4e1f59698a7b77f9960613213d76323188e7e822bfce442888d8367d5a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"054368075009acf87f6a8d262d47083b0d2fea4f2d01fd1fd17fd56be345245f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"057d87866236087a7d96ae0fc8b6cc5211d99e16aacd540373154853fef58436","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"057d87866236087a7d96ae0fc8b6cc5211d99e16aacd540373154853fef58436","sourceRepo":"ghashtag/t27","name":"shell::schema","line":7,"to":"60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3","candidates":["60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3"],"status":"resolved"},{"from":"05914994d71d3fcee52588484794e6ad36dcf2f680e2a5694b6208df52dfd55b","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"05a1e633c80c5eb5e8f7f6f24a57c741492f5cc920591b8e5db7b48d51bcf0ed","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"05a1e633c80c5eb5e8f7f6f24a57c741492f5cc920591b8e5db7b48d51bcf0ed","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"05f3fec4bc98246246aa5cfa04b845862c7f71326f9892120aad67a1dfc8e670","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"05f3fec4bc98246246aa5cfa04b845862c7f71326f9892120aad67a1dfc8e670","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"05f807c932b9a3ce5837100fe8432e8dfddc733db9f62a494c777ff6da885607","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"05f807c932b9a3ce5837100fe8432e8dfddc733db9f62a494c777ff6da885607","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":8,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","sourceRepo":"ghashtag/t27","name":"ml::activation::gelu","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","sourceRepo":"ghashtag/t27","name":"ml::layers::dense","line":10,"to":null,"candidates":[],"status":"missing"},{"from":"0797e9acbcf62779b5418e7ddbd6987a057455497a1a0c0a6d0f4117d9d338e7","sourceRepo":"ghashtag/t27","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"07c1530c363c8cc62ef06874ca66311fb0da6891403a83ee756a1e6d79dc564a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"07c1530c363c8cc62ef06874ca66311fb0da6891403a83ee756a1e6d79dc564a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0839d483ebdbf439a28ee13f15b8879c53c4c85687d842164106e6991a12ed73","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6"],"status":"resolved"},{"from":"0839d483ebdbf439a28ee13f15b8879c53c4c85687d842164106e6991a12ed73","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","candidates":["9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"resolved"},{"from":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","sourceRepo":"ghashtag/t27","name":"math::statistics","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":9,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sourceRepo":"ghashtag/tt-trinity-euler","name":"math::constants","line":8,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sourceRepo":"ghashtag/tt-trinity-euler","name":"math::sacred_physics","line":9,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sourceRepo":"ghashtag/tt-trinity-gamma","name":"math::constants","line":20,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sourceRepo":"ghashtag/tt-trinity-gamma","name":"math::sacred_physics","line":21,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sourceRepo":"ghashtag/tt-trinity-gamma","name":"numeric::goldenfloat_family","line":22,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"0ad836431b5b70772112f6f3025589ce1f77208ca6e2eef8b2115057eab7b495","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0ad836431b5b70772112f6f3025589ce1f77208ca6e2eef8b2115057eab7b495","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0b5f7bff39da7f29b90ff5ff965bd07cdf1ffc1bb523a81cc03ca617fa57163a","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0c558f36ccaa222e6da0edd224b43599dc41bccc897a1d5fa61fde68d509e90b","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"0cf723b0c54a06a9851f0f635f2191829a0c100860d1c12896afa5e4bb856b8a","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0db5f4adc1bc7230e3e6a2b4396c25429d35834ace309a10b4601adaea6b53cc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0db5f4adc1bc7230e3e6a2b4396c25429d35834ace309a10b4601adaea6b53cc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0e053f342b33d78bd69e302ae9afb0c11484b411d895197522c747f35a8f957f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0e053f342b33d78bd69e302ae9afb0c11484b411d895197522c747f35a8f957f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0eef09b67cdd371654875a6b01da947d124213a3edbcc422dd70bb1a290e6086","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0eef09b67cdd371654875a6b01da947d124213a3edbcc422dd70bb1a290e6086","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0f0f989b64c459cd0e5fe437464dbfa1e1649b6eb7bd7a066ec6a352a35e24eb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0f0f989b64c459cd0e5fe437464dbfa1e1649b6eb7bd7a066ec6a352a35e24eb","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"0f726fb3c27cf8e9877344bd5e4e97a04a1c9f3a76e945222f7a7aa87e7eed96","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"0f726fb3c27cf8e9877344bd5e4e97a04a1c9f3a76e945222f7a7aa87e7eed96","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"1044d178fb800ee5aedbcc28ffb09b84ce0b85c8eb8982827c0073c523d23a84","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1057f56a22357e8b4fa94871b1c98d67432d2b69dce7b80c975c2a2f635469e3","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1057f56a22357e8b4fa94871b1c98d67432d2b69dce7b80c975c2a2f635469e3","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":10,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"1057f56a22357e8b4fa94871b1c98d67432d2b69dce7b80c975c2a2f635469e3","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"106dee6126f578973c0b1b47f58ea10a7ee94213d8515635272981c1dba6bc72","sourceRepo":"ghashtag/t27","name":"fpga::vcd_trace::VcdTrace","line":8,"to":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","candidates":["2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232"],"status":"resolved"},{"from":"121ed4a8e32889b770a8ab90b91b3bde9a7b193c66c845aac0130f7ab66c070d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":13,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"121f7a349ba5b7b672b90a9f372f575e9530ef68756c687660ed6ef029278fc5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"121f7a349ba5b7b672b90a9f372f575e9530ef68756c687660ed6ef029278fc5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"12299009a56b6404c248457a5d524f02615a7898a3155bc991a36dd702986ac0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"12299009a56b6404c248457a5d524f02615a7898a3155bc991a36dd702986ac0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","sourceRepo":"ghashtag/t27","name":"math::constants","line":9,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","sourceRepo":"ghashtag/t27","name":"vsa::ops","line":10,"to":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","candidates":["5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604"],"status":"resolved"},{"from":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","sourceRepo":"ghashtag/t27","name":"demos::jones_topology_filter","line":11,"to":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","candidates":["e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263"],"status":"resolved"},{"from":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","sourceRepo":"ghashtag/t27","name":"fpga::axi4::Axi4","line":8,"to":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","candidates":["6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02"],"status":"resolved"},{"from":"1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"132770a2bab3851bc2af8213e5ce75afd4fcd494e908a28b5e1cfeeff603f344","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"132770a2bab3851bc2af8213e5ce75afd4fcd494e908a28b5e1cfeeff603f344","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"13b3fa04c5f6561717e1897221fac69f797143f8630f44d037e070de3877b05c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"13b3fa04c5f6561717e1897221fac69f797143f8630f44d037e070de3877b05c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"13cc1e8f0e62bc29eb874c628c2bea30950b100bd08a3919e4ff3043beb4491f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"13cc1e8f0e62bc29eb874c628c2bea30950b100bd08a3919e4ff3043beb4491f","sourceRepo":"ghashtag/t27","name":"account::schema","line":7,"to":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","candidates":["d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3"],"status":"resolved"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":9,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":10,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::testing","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::benchmarking","line":14,"to":null,"candidates":[],"status":"missing"},{"from":"1528f6decbd9543f2abdb2d2fbccc9c62989e3cd44ba7b938bef838549398d86","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1528f6decbd9543f2abdb2d2fbccc9c62989e3cd44ba7b938bef838549398d86","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"17501497f6580c8f2cc5304a94838fbae23c56b4336b3ab36a1d4f67e80e2f5a","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","sourceRepo":"ghashtag/t27","name":"base::types","line":41,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"177ea00fa0a01d842b927273c9a7226772e4bdf0cf39ca8065ee3304b1e1ea4c","sourceRepo":"ghashtag/t27","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"179cd63eb41991497c2b1624ff8750a9c3665a7771e43ac90c432595217c41f7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"179cd63eb41991497c2b1624ff8750a9c3665a7771e43ac90c432595217c41f7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"17c60a99b292d30a67a6c772d5960a3524bca0ffc13f40fb84b9fc7e2c7eae3c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"17c60a99b292d30a67a6c772d5960a3524bca0ffc13f40fb84b9fc7e2c7eae3c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"18757d291f23108eb05b89195d374e3a35643ed0d74c57a9caf8d05cc918a7f8","sourceRepo":"ghashtag/t27","name":"fpga::memory::Memory","line":8,"to":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","candidates":["5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84"],"status":"resolved"},{"from":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"189991c3d70f34e820450087b50a7d572be1baa821137533ee3c56b0aee57145","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"189991c3d70f34e820450087b50a7d572be1baa821137533ee3c56b0aee57145","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"18ef09e675426f4fec4d5ac12678b1b5fe9670cd4cd366de0288d21ce46c9ae1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"18ef09e675426f4fec4d5ac12678b1b5fe9670cd4cd366de0288d21ce46c9ae1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"1916b5ef79c7a277691bd89e85161a6c6eeb4496115c875708303ec88cf39bbe","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1916b5ef79c7a277691bd89e85161a6c6eeb4496115c875708303ec88cf39bbe","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1a9efda5c73821e94c0d937d952ca5a2c0c235792b7674716943a5275c14a011","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1a9efda5c73821e94c0d937d952ca5a2c0c235792b7674716943a5275c14a011","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"1bf58267963a4114d3b9f6ed017a10b942789add7f8196b5a058812b7c4f50db","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1bf58267963a4114d3b9f6ed017a10b942789add7f8196b5a058812b7c4f50db","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","sourceRepo":"ghashtag/t27","name":"igla::race::rtl","line":11,"to":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","candidates":["d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56"],"status":"resolved"},{"from":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","sourceRepo":"ghashtag/t27","name":"igla::race::formal","line":12,"to":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","candidates":["fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95"],"status":"resolved"},{"from":"1c332b11b5cc758ef52d78c8517722fe3a7f757a8583679c2859f42aea529c97","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1cc396e757d83efa5e3b66b65cd7b238e77a5b39e8d5f277e8deceb643f566ad","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1cc396e757d83efa5e3b66b65cd7b238e77a5b39e8d5f277e8deceb643f566ad","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1d3566b76489aba82ed0353281a052a571e64b4ca51c4dbd2744cf982dd37735","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1d3566b76489aba82ed0353281a052a571e64b4ca51c4dbd2744cf982dd37735","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"1d6c9d7f9d279cf3f9f7ad3d4fa724c0bde2cc2a6f3d2f28f3f74b74b1c6744c","sourceRepo":"ghashtag/t27","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1d6c9d7f9d279cf3f9f7ad3d4fa724c0bde2cc2a6f3d2f28f3f74b74b1c6744c","sourceRepo":"ghashtag/t27","name":"parser","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"1ede200487415c520e1aa5406fbcb3590dbcf7fc8cc4b04879baad058619d052","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1ede200487415c520e1aa5406fbcb3590dbcf7fc8cc4b04879baad058619d052","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1fc5326fdc967b490bc96fbfa827017ccf29246ba0dbbd5363feea2c0cb845e4","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":8,"to":"d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22","candidates":["d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22"],"status":"resolved"},{"from":"1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"1fe501e74db1912e57663fd489c9c1e004902d23cd4b1efe3fba43bc9f62bc9f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"204c8939483e6bb18f55dce184335a73236072e718045cf2308a35b76525a390","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"204c8939483e6bb18f55dce184335a73236072e718045cf2308a35b76525a390","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"20563b5638a432017af358e732d4c4b864b29c17d2d521cfe2a807d49d0387a9","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"20563b5638a432017af358e732d4c4b864b29c17d2d521cfe2a807d49d0387a9","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","sourceRepo":"ghashtag/t27","name":"file::schema","line":7,"to":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","candidates":["468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9"],"status":"resolved"},{"from":"207e008007cc79b66f7d80aac725675cff7bcd2f3029497cf29d15cb5d8702ac","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"20fcb88dc7cbe68d71676487adce5aaee365541aa7fcc16fbccc56b2405c2c2c","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"211dd0f9c8c34a870c22c7da964cd97b0015c6677161e3493ee12c5afdfae35d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"211dd0f9c8c34a870c22c7da964cd97b0015c6677161e3493ee12c5afdfae35d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sourceRepo":"ghashtag/trinity-fpga","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sourceRepo":"ghashtag/trinity-fpga","name":"math::sacred_physics","line":8,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"2246bd2af584f9e2c3b1b8ade8c1032ef03aed4b1cbb46256a1c3af100be63e6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6","sourceRepo":"ghashtag/t27","name":"math::trigonometry","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":9,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"22bb9ec2480d0efd0693f540c91de0ad95613e2fb560a7cf49143142e57b49b5","sourceRepo":"ghashtag/t27","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2387a4d9b48f4cdbdcea0ac11b1a3e95b82a71b42f9967d7318bc838c899f333","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6"],"status":"resolved"},{"from":"2387a4d9b48f4cdbdcea0ac11b1a3e95b82a71b42f9967d7318bc838c899f333","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","candidates":["9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"resolved"},{"from":"249105154a42777f5e4f32a1e565d18565c1268a054515e331a1f83fee04fdbe","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"249105154a42777f5e4f32a1e565d18565c1268a054515e331a1f83fee04fdbe","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"25c264ef6a580c0f8e95234a7bb4175d440e72138d4fff0e90027ab3ccb9efc0","sourceRepo":"ghashtag/t27","name":"base::types","line":46,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","sourceRepo":"ghashtag/t27","name":"queen::lotus","line":9,"to":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","candidates":["be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5"],"status":"resolved"},{"from":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"273a7e6b46c4b79c5cb6ddcdb4894b61722fd4aba4ec35a715f6841a93e6c88e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"273a7e6b46c4b79c5cb6ddcdb4894b61722fd4aba4ec35a715f6841a93e6c88e","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":8,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"299b19c47e8161d2318839d18418d581f18fde1d2373650067713805d07dc61a","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2b70d19f6f5d4f13e880a395590a03a48b83d77c4e32cebf62216cbe82ec8d52","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2b88d314726a5a5cc6cec95471fdc759b53013883ea59ef5bba73b655297453e","sourceRepo":"ghashtag/t27","name":"base::types","line":37,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2b97b9758290cb2c035ad4d058a26f4c081f428c20230cd076c72129f5d17b6c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2b97b9758290cb2c035ad4d058a26f4c081f428c20230cd076c72129f5d17b6c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"2bb4e5ef1161b9818b450a20760cd641f87ea170c7bbe29467bd99f875410200","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2bc144c93ba41b7bdbdcc2d72c197a508f3b44151489f790c19a71aefd6b0190","sourceRepo":"ghashtag/t27","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2c293bdfba35cb5a347420b69e15cbc1f14300e6990ba46f9e4cb860b1d3b0e4","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2cd1d3d51078f14f5dd0f53741536884c599975ebb005381d679a5c2542b1000","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2cd1d3d51078f14f5dd0f53741536884c599975ebb005381d679a5c2542b1000","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sourceRepo":"ghashtag/tt-trinity-euler","name":"math::constants","line":20,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sourceRepo":"ghashtag/tt-trinity-euler","name":"math::sacred_physics","line":21,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":22,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"2dae7f68a5651636623154005f92a6e43432b46d72b3bdd45c164df2a38b961c","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"2e1c74a2e7066c74730a82673ed2d723555599bada8fa1122e0859a5bb24e3eb","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"2e1c74a2e7066c74730a82673ed2d723555599bada8fa1122e0859a5bb24e3eb","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":11,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"2f8658ded229cb7cce70a146e20d08c970b7aa97a702665abe125b08e249bb59","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"302708b4cdc56954ef9c733c9902e01174972651bb579f5e6ef4943919cd1229","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"302708b4cdc56954ef9c733c9902e01174972651bb579f5e6ef4943919cd1229","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"304633b6f24931bc03b56540235f1cfb560e9648a6fa3473ac53f2c74c8156fc","sourceRepo":"ghashtag/t27","name":"math::constants","line":9,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"304633b6f24931bc03b56540235f1cfb560e9648a6fa3473ac53f2c74c8156fc","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":10,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","sourceRepo":"ghashtag/t27","name":"timestamp","line":19,"to":null,"candidates":[],"status":"missing"},{"from":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"31fc2cc4511db11be5ce16f41f881ed462911238ee18ba0fbe5f8f25dd0fbfd4","sourceRepo":"ghashtag/tri-net","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"320bbf24c3e227fc457fe90d95b24bf7d06dc2e24ed0ae780e3224fb281a5f75","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::testing","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::benchmarking","line":14,"to":null,"candidates":[],"status":"missing"},{"from":"32446899fb19eea9b774bf3a79dcba5212af07c832499cf0710ffb9dfdd612b1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"32446899fb19eea9b774bf3a79dcba5212af07c832499cf0710ffb9dfdd612b1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"324d8917e25b095ffde85d09bbb631eec1b5ed14cc876299cda6d1e6f8ee2e0c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"324d8917e25b095ffde85d09bbb631eec1b5ed14cc876299cda6d1e6f8ee2e0c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"338dda6bd5fe68db61f018bc4216fd6ab671562bcfc3cf92f1692fbdc2440abd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"338dda6bd5fe68db61f018bc4216fd6ab671562bcfc3cf92f1692fbdc2440abd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"346a15f33a83f1587b8c61955907f492ac291d4c687970a47a655ceb52d9be35","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"346a15f33a83f1587b8c61955907f492ac291d4c687970a47a655ceb52d9be35","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3518b9f0a302e6ba36ab0c41a65e331231b6824a51316201991894f58708c92e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3518b9f0a302e6ba36ab0c41a65e331231b6824a51316201991894f58708c92e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df","sourceRepo":"ghashtag/trios","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"372952ca8c4a3d9117765dba58976196dc877bc0d619296403f39fa6b1fa8a56","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3751f1916cc2dfcd00373c6f4f89f47b1fe38caa1cf1985ddb113ef7dffa2d00","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3751f1916cc2dfcd00373c6f4f89f47b1fe38caa1cf1985ddb113ef7dffa2d00","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","sourceRepo":"ghashtag/t27","name":"isa::registers","line":10,"to":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","candidates":["ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa"],"status":"resolved"},{"from":"38e27adb2b1502fe1200eaaaf794baf678bedb3dcf17667cba1c5d1f6eb393ab","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"38e27adb2b1502fe1200eaaaf794baf678bedb3dcf17667cba1c5d1f6eb393ab","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"38e5a94cf9cac4f8e1638e6c60603d0334668763669588a0014d4a8cc544b59c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","sourceRepo":"ghashtag/t27","name":"test_framework::core","line":7,"to":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","candidates":["83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00"],"status":"resolved"},{"from":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","sourceRepo":"ghashtag/t27","name":"numeric::golden_float","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"3a5a1d0bf24c0a354559c859ce379e3fa65b8aad313da8627e341daa273d4adf","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3a5a1d0bf24c0a354559c859ce379e3fa65b8aad313da8627e341daa273d4adf","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":11,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"3a74a18b91ed8e675b2d44fc822f28cd25ced5d9c3f8a902786c5a31dd11c30f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3a74a18b91ed8e675b2d44fc822f28cd25ced5d9c3f8a902786c5a31dd11c30f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3b94513dfb6fdd9872b85930e5bb8e84667fe617f9e88468ba292a56c3191618","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","sourceRepo":"ghashtag/t27","name":"base::types","line":7,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","sourceRepo":"ghashtag/t27","name":"igla::coder::arch","line":8,"to":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","candidates":["01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740"],"status":"resolved"},{"from":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","sourceRepo":"ghashtag/t27","name":"igla::coder::eval","line":9,"to":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","candidates":["c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d"],"status":"resolved"},{"from":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","sourceRepo":"ghashtag/t27","name":"igla::coder::dataset","line":10,"to":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","candidates":["b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2"],"status":"resolved"},{"from":"3bc8d058f4b301edc4f1584510910da792098ecc9fb60f6d4e38f16ba3bcdf74","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3bc8d058f4b301edc4f1584510910da792098ecc9fb60f6d4e38f16ba3bcdf74","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3bfd60b0a6b6dbdddebdb5a5a5d0750b8058892126e151fa05f4a6125ea0dd79","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3bfd60b0a6b6dbdddebdb5a5a5d0750b8058892126e151fa05f4a6125ea0dd79","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3d3bc18bcf65a59556cd172cc4e52c02674e3f4cf369a3b648b9e98187bf3a02","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3d3bc18bcf65a59556cd172cc4e52c02674e3f4cf369a3b648b9e98187bf3a02","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3d62664b21a7e9bd7b6d63879764780b5c5af3cf661f04eee7b90a8adbaa5d1d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3d62664b21a7e9bd7b6d63879764780b5c5af3cf661f04eee7b90a8adbaa5d1d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3e203c4b90a1ef1483c84320fe17cee7a366467c3f49dfb90d785467cc48b5a1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3e203c4b90a1ef1483c84320fe17cee7a366467c3f49dfb90d785467cc48b5a1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","sourceRepo":"ghashtag/trios","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","sourceRepo":"ghashtag/t27","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","sourceRepo":"ghashtag/t27","name":"igla::coder::arch","line":12,"to":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","candidates":["01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740"],"status":"resolved"},{"from":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","sourceRepo":"ghashtag/t27","name":"igla::coder::eval","line":13,"to":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","candidates":["c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d"],"status":"resolved"},{"from":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","sourceRepo":"ghashtag/t27","name":"igla::race::rtl","line":14,"to":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","candidates":["d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56"],"status":"resolved"},{"from":"3f170da0db86ecb829c46e88c0a8fad260f37ad3de7a61d87b514c68c8d8c720","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3f170da0db86ecb829c46e88c0a8fad260f37ad3de7a61d87b514c68c8d8c720","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","sourceRepo":"ghashtag/t27","name":"fpga::gf16_accel::Gf16Accel","line":8,"to":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","candidates":["5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a"],"status":"resolved"},{"from":"3fe14f0e675704ece025e11534de7629b8245942f3898cac1f00221227a8a6bf","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"3fe14f0e675704ece025e11534de7629b8245942f3898cac1f00221227a8a6bf","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"3fe3d076d8f6e05892175e6b4189e70fd13206f929d4d4ef7bee6fac19c0a003","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"40fd893c2163077ca7fb00a815db13a0c8f2bbd74efc3ccb0427faad49465e5f","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"422a79e6015d8959e474b78e93f8fb16e1db2e0b2d8a885bfdab1aafe2347175","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4277eded24a90122c7ed7ae38cfc6526de4c77038bc2175b57c92c5dc81fc00e","sourceRepo":"ghashtag/t27","name":"fpga::bridge::FPGA_Bridge","line":8,"to":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","candidates":["549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef"],"status":"resolved"},{"from":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"45799ff43fefd2149b47df88a5da2a3c8cd85a40fc0a1f2951dcfa243fc13426","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"45799ff43fefd2149b47df88a5da2a3c8cd85a40fc0a1f2951dcfa243fc13426","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":null,"candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"ambiguous"},{"from":"45c6ce4000cad4bd861ac6071208e8e54b6ba8e024bbcc6d8fd0dee3d4a43c59","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"45eceaaa65e7ddb52ada5b5ba657ad0c6139d715f236ce25c4fbdd7f84e6780c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":8,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sourceRepo":"ghashtag/t27","name":"ml::transformer::norm","line":9,"to":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","candidates":["094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18"],"status":"resolved"},{"from":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sourceRepo":"ghashtag/t27","name":"ml::transformer::multi_head_attn","line":10,"to":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","candidates":["6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f"],"status":"resolved"},{"from":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sourceRepo":"ghashtag/t27","name":"ml::transformer::feed_forward","line":11,"to":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","candidates":["0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6"],"status":"resolved"},{"from":"460d9c7fa17cba1b4af999b79952e527562fc6aaa3d8b77e240647d477f854b8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"460d9c7fa17cba1b4af999b79952e527562fc6aaa3d8b77e240647d477f854b8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"46e0eb2a3f596509c6a0aec1b64f2558db9c145c0865ca6b851faec29e9bf0df","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"46e0eb2a3f596509c6a0aec1b64f2558db9c145c0865ca6b851faec29e9bf0df","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"46e0eb2a3f596509c6a0aec1b64f2558db9c145c0865ca6b851faec29e9bf0df","sourceRepo":"ghashtag/t27","name":"math::trigonometry","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"46e0eb2a3f596509c6a0aec1b64f2558db9c145c0865ca6b851faec29e9bf0df","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":9,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"46eb92bbb340ff3345a79d44ec05cd0169c5c2b8ae064619690c31479ac3e2c0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"46eb92bbb340ff3345a79d44ec05cd0169c5c2b8ae064619690c31479ac3e2c0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"47fa62e4268cf8e79f4e4b7ed9972b705c79a74d31b428f88f237d1bc09a7eed","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"47fa62e4268cf8e79f4e4b7ed9972b705c79a74d31b428f88f237d1bc09a7eed","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"486562f3726f65e2830e5e0deaf3019433d59081fd5ba1edca4cb38f5aa3b195","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"486562f3726f65e2830e5e0deaf3019433d59081fd5ba1edca4cb38f5aa3b195","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"48c3a4143f39690e56cb9e36942625642ea277d7cfe50aa05290b325042391be","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"48c3a4143f39690e56cb9e36942625642ea277d7cfe50aa05290b325042391be","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"49a3ef2231df6ce5d5cdeec62f6608317512b047d2c6adb620b327b04fbdcfc3","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6"],"status":"resolved"},{"from":"49a3ef2231df6ce5d5cdeec62f6608317512b047d2c6adb620b327b04fbdcfc3","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","candidates":["9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"resolved"},{"from":"49d1e8ddabc30e6cc9e852ea156510b928d618264e25737e12cd57a2eb4d3de7","sourceRepo":"ghashtag/t27","name":"vsa::core","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"49d1e8ddabc30e6cc9e852ea156510b928d618264e25737e12cd57a2eb4d3de7","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"4a36751ee547427463eb6c2addcfb67293a623fc469f5e22fe5af9118a63740a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4a36751ee547427463eb6c2addcfb67293a623fc469f5e22fe5af9118a63740a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","sourceRepo":"ghashtag/t27","name":"tritype::Trit","line":11,"to":null,"candidates":[],"status":"missing"},{"from":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","sourceRepo":"ghashtag/t27","name":"ternary::bigint","line":12,"to":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","candidates":["eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05"],"status":"resolved"},{"from":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","sourceRepo":"ghashtag/t27","name":"base::types","line":3,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4c776204371d57c29ea666ad5f1f7c46a04d402208a4b93d2d15428315e94c11","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4c776204371d57c29ea666ad5f1f7c46a04d402208a4b93d2d15428315e94c11","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"4cebca7f2af8129cdd9fe75b79a751bfeb933ecb2adac117d15b6789d8fd5245","sourceRepo":"ghashtag/t27","name":"test_framework::core","line":7,"to":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","candidates":["83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00"],"status":"resolved"},{"from":"4cebca7f2af8129cdd9fe75b79a751bfeb933ecb2adac117d15b6789d8fd5245","sourceRepo":"ghashtag/t27","name":"numeric::golden_float","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"4d62843989a3e55bc2b52630e79c32f09d444359ef2429da1fc529663910c953","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4dc8ea103431d9df995c086ae6800dabc140cca5c5b70666b627bea92e0970f9","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4e425fd16028fd4f79f0402fc4c5221aa3d8279d5397160013b0bbf013167a34","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4e425fd16028fd4f79f0402fc4c5221aa3d8279d5397160013b0bbf013167a34","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"4ea7242baa7a03eeadf68af61c6d58551b24783880fa3319a2d0c34550ecdb44","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4ea7242baa7a03eeadf68af61c6d58551b24783880fa3319a2d0c34550ecdb44","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"4f5f9b43b9ec8b0be6593775af54ff6721d169e5e2c33898a1443dcbdfe4d85d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":14,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::corona_oracle","line":12,"to":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","candidates":["627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f"],"status":"resolved"},{"from":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::rom_layout","line":13,"to":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","candidates":["c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c"],"status":"resolved"},{"from":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::gf16","line":11,"to":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","candidates":["1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425"],"status":"resolved"},{"from":"50d838b5e5138ffeb2875b3a6c831f34ba6a2953a3086db6752b1a6b490213ba","sourceRepo":"ghashtag/t27","name":"fpga::ternary_isa::TernaryIsa","line":8,"to":"040d3cdec243fde652aa9fb3cc81f1675508f8c1b485900003734245624c6d23","candidates":["040d3cdec243fde652aa9fb3cc81f1675508f8c1b485900003734245624c6d23"],"status":"resolved"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::types::Float","line":16,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::math::cosine_sim","line":17,"to":null,"candidates":[],"status":"missing"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::math::normalize_l2","line":18,"to":null,"candidates":[],"status":"missing"},{"from":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sourceRepo":"ghashtag/t27","name":"base::constants::PHI","line":19,"to":null,"candidates":[],"status":"missing"},{"from":"5189c2771d5edfddea6da5b8d20ee348fd44b3bd83e034188081e4a79f64fd40","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5195f89bfc0b1f3ed434ef6371ba940a629ba01eee7a3746f6f14ec0cde9a141","sourceRepo":"ghashtag/t27","name":"math::constants","line":6,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sourceRepo":"ghashtag/t27","name":"igla::race::bram_weights","line":9,"to":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","candidates":["2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c"],"status":"resolved"},{"from":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sourceRepo":"ghashtag/t27","name":"igla::coder::arch","line":10,"to":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","candidates":["01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740"],"status":"resolved"},{"from":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sourceRepo":"ghashtag/t27","name":"igla::coder::tokenizer","line":11,"to":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","candidates":["5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283"],"status":"resolved"},{"from":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sourceRepo":"ghashtag/t27","name":"igla::coder::prm","line":12,"to":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","candidates":["3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded"],"status":"resolved"},{"from":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sourceRepo":"ghashtag/t27","name":"igla::coder::eval","line":13,"to":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","candidates":["c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d"],"status":"resolved"},{"from":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sourceRepo":"ghashtag/t27","name":"igla::coder::dataset","line":14,"to":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","candidates":["b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2"],"status":"resolved"},{"from":"51c140fd215a3cca5cf1fe479e531f1d39706abf2b670a8ecd6cdd4bd56037f0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"51c140fd215a3cca5cf1fe479e531f1d39706abf2b670a8ecd6cdd4bd56037f0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"52f14c10cd747985da3a530220dbcd8de5079ded7c63466f3524939c07beee1c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"52f14c10cd747985da3a530220dbcd8de5079ded7c63466f3524939c07beee1c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207","sourceRepo":"ghashtag/tri-net","name":"base::types","line":7,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":8,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"532a215e4f4848a81dce61832d5469b4f5c97fa359b981754f641529e6178fa5","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"532a215e4f4848a81dce61832d5469b4f5c97fa359b981754f641529e6178fa5","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"53b65f5dc6e1f5dc9f3ecc755cc31e2fdcf455106dba6d59c1423ea0ddda0214","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"53b65f5dc6e1f5dc9f3ecc755cc31e2fdcf455106dba6d59c1423ea0ddda0214","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"5481f5ec801d6a0206856c7dbf3780a4561037a33bf159b7aa356616ad9c4abc","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","sourceRepo":"ghashtag/t27","name":"fpga::uart::UART_Bridge","line":10,"to":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","candidates":["38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016"],"status":"resolved"},{"from":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":11,"to":"d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22","candidates":["d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22"],"status":"resolved"},{"from":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":12,"to":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","candidates":["8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350"],"status":"resolved"},{"from":"54d9c2d81be0a306a311a4e50ec767e81459c14f482a243a10e873a7654fa3ff","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"54d9c2d81be0a306a311a4e50ec767e81459c14f482a243a10e873a7654fa3ff","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sourceRepo":"ghashtag/trinity","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sourceRepo":"ghashtag/trinity","name":"math::sacred_physics","line":8,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"55fa9d68b2d7e5072ea94daeaa5281757a48278e5201bb1eac41ddbcb7c7a3a9","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"56113a8df816d524442da3e153ea33d793de0d06087326161aefc18fb0281dd3","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"56f823f5a276ae2ec4740de0058cc1ec3071884ff89ed433dd20c4714c99997e","sourceRepo":"ghashtag/t27","name":"fpga::cts::CTS","line":8,"to":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","candidates":["84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea"],"status":"resolved"},{"from":"57308c312e2d9233223984d19e928d0583684571434c32a42d5c66810c8a07da","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"57308c312e2d9233223984d19e928d0583684571434c32a42d5c66810c8a07da","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"57354f8525068440df541ffe1bd2e9d059248b1c35fcfc3b1cda4cd0beb8c08a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"57354f8525068440df541ffe1bd2e9d059248b1c35fcfc3b1cda4cd0beb8c08a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sourceRepo":"ghashtag/t27","name":"base::types::Trit","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sourceRepo":"ghashtag/t27","name":"brain::unified_state","line":10,"to":"26703224e3fce9bbdcdd15281aa883f704a54855810c53d3db1688f7feb9ddba","candidates":["26703224e3fce9bbdcdd15281aa883f704a54855810c53d3db1688f7feb9ddba"],"status":"resolved"},{"from":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"57648d4b56135798ce356c530e5a55a3df2815d6dd254ef86f5a2d99b1c00158","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"57648d4b56135798ce356c530e5a55a3df2815d6dd254ef86f5a2d99b1c00158","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"5774a55f23a1cedb8feb1044739647e4084ac88b73c5c3ffffc115248824e438","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5774a55f23a1cedb8feb1044739647e4084ac88b73c5c3ffffc115248824e438","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":null,"candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"ambiguous"},{"from":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","sourceRepo":"ghashtag/t27","name":"git::schema","line":7,"to":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","candidates":["9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e"],"status":"resolved"},{"from":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sourceRepo":"ghashtag/t27","name":"fpga::assembler::Assembler","line":8,"to":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","candidates":["554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00"],"status":"resolved"},{"from":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sourceRepo":"ghashtag/t27","name":"fpga::linker::Linker","line":9,"to":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","candidates":["64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e"],"status":"resolved"},{"from":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5b2fc085c2a125373e585ceb74c7881bebc67e760a3469c84644dbac5257ee32","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5b2fc085c2a125373e585ceb74c7881bebc67e760a3469c84644dbac5257ee32","sourceRepo":"ghashtag/t27","name":"storage::schema","line":7,"to":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","candidates":["d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87"],"status":"resolved"},{"from":"5bb8cead0f512228a91fc385bd5d660ab111eb1c47c1206476f780835ebdecec","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5bb8cead0f512228a91fc385bd5d660ab111eb1c47c1206476f780835ebdecec","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"5bf4a9567cd56ec9b8862707948c207bba85498d272b73b0fc53e20aa548cbb7","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5bf4a9567cd56ec9b8862707948c207bba85498d272b73b0fc53e20aa548cbb7","sourceRepo":"ghashtag/t27","name":"igla::race::ternary_mac","line":34,"to":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","candidates":["c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f"],"status":"resolved"},{"from":"5cf232894b16d3f2e49d5231706441904d9dc620db66d7f1c95b6d8caf819990","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5cf232894b16d3f2e49d5231706441904d9dc620db66d7f1c95b6d8caf819990","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","sourceRepo":"ghashtag/t27","name":"fpga::top_level::ZeroDSP_TopLevel","line":8,"to":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","candidates":["bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c"],"status":"resolved"},{"from":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","sourceRepo":"ghashtag/t27","name":"fpga::gf16_accel::Gf16Accel","line":9,"to":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","candidates":["5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a"],"status":"resolved"},{"from":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","sourceRepo":"ghashtag/t27","name":"fpga::memory::Memory","line":10,"to":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","candidates":["5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84"],"status":"resolved"},{"from":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","sourceRepo":"ghashtag/t27","name":"fpga::fifo::Fifo","line":11,"to":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","candidates":["9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393"],"status":"resolved"},{"from":"5e3cef83fe71fa8bdec4c2ef91200565a5461f4de0225a11d9544c366afdc65d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5e3cef83fe71fa8bdec4c2ef91200565a5461f4de0225a11d9544c366afdc65d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"5feb63007768c9262c64e33e8fcab24e138067718da09184d0e21bdfa3204ef7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"5feb63007768c9262c64e33e8fcab24e138067718da09184d0e21bdfa3204ef7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":null,"candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"ambiguous"},{"from":"607d9e99f30688eb84635aa46ad305d3a08ee9fba01b2e0ec7a093276bcad285","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"607d9e99f30688eb84635aa46ad305d3a08ee9fba01b2e0ec7a093276bcad285","sourceRepo":"ghashtag/t27","name":"igla::race::ternary_mac","line":9,"to":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","candidates":["c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f"],"status":"resolved"},{"from":"60a00727a2f7abdb0a28fd463c3ff731681e82b59a4371857cdd1f3be0b319f1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"60a00727a2f7abdb0a28fd463c3ff731681e82b59a4371857cdd1f3be0b319f1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"60f5f9fd2a85ea4dbfd20c2e42356184ec9e8d78ed586cafc3ec3fecf801ec44","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"60f5f9fd2a85ea4dbfd20c2e42356184ec9e8d78ed586cafc3ec3fecf801ec44","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"61c1edda964778e108dde6336fc5e56af6f99cda5bb8549db12833e6d399de2e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":24,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":15,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::constants","line":16,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::sacred_physics","line":17,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::formats_catalog","line":18,"to":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","candidates":["002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::goldenfloat_family","line":19,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::rom_layout","line":20,"to":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","candidates":["c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::protocol","line":21,"to":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","candidates":["e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0"],"status":"resolved"},{"from":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::anchor","line":22,"to":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","candidates":["89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf"],"status":"resolved"},{"from":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","sourceRepo":"ghashtag/t27","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","sourceRepo":"ghashtag/t27","name":"igla::race::rtl","line":12,"to":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","candidates":["d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56"],"status":"resolved"},{"from":"63216e4dbe843da95dd62bfc13b7741e6bf343e3bcf3d407e084d6be61e84dfe","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"63216e4dbe843da95dd62bfc13b7741e6bf343e3bcf3d407e084d6be61e84dfe","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"6532bcb37b12d57aa03d22717557fa16e727b9c4e6389c3afdd829bc74a23ab0","sourceRepo":"ghashtag/tri-net","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"679c0ec0793e64b28bbbcd96e15b8c0dab7f67a0519177ca416b02e619290711","sourceRepo":"ghashtag/t27","name":"base::math","line":7,"to":null,"candidates":[],"status":"missing"},{"from":"679c0ec0793e64b28bbbcd96e15b8c0dab7f67a0519177ca416b02e619290711","sourceRepo":"ghashtag/t27","name":"compiler::codegen","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6926ef2f5ef68b7a540eae2c7bffc4efd4928bcf00686806f549664b92b8afd7","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"69dfde195e9294cbe1a7dec908d04fb3c8f2de72498d4df8f400f48eb6b2289b","sourceRepo":"ghashtag/t27","name":"fpga::simulator::Simulator","line":8,"to":"806c0c899f339d4bd4b1c2c6c6aab2bcd60409eabc76eb169bcf7a752d9bee1d","candidates":["806c0c899f339d4bd4b1c2c6c6aab2bcd60409eabc76eb169bcf7a752d9bee1d"],"status":"resolved"},{"from":"6a4970afbc3c2312d69c058364a11f96063e468cbed7b915aa49f306a8dfc4c2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sourceRepo":"ghashtag/t27","name":"math::statistics","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":9,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sourceRepo":"ghashtag/t27","name":"ml::transformer::positional_enc","line":10,"to":"22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6","candidates":["22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6"],"status":"resolved"},{"from":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sourceRepo":"ghashtag/t27","name":"ml::transformer::norm","line":11,"to":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","candidates":["094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18"],"status":"resolved"},{"from":"6abe8fe5b759fdcd2ddf4d172aab89a26064c793cc33b912369e9897d1c49a31","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6abe8fe5b759fdcd2ddf4d172aab89a26064c793cc33b912369e9897d1c49a31","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"6bcf3942f1f175d1c3708484d4cb216a6e6ba7492a6ebf7e6320887c7d13a42b","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":7,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"6deb105682ed85d520e9ea126468db714fe5327c5e05ef27ebc160acdceca647","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6deb105682ed85d520e9ea126468db714fe5327c5e05ef27ebc160acdceca647","sourceRepo":"ghashtag/t27","name":"git::schema","line":7,"to":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","candidates":["9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e"],"status":"resolved"},{"from":"6e486ce745126ddc7861d9f5de7d92ba10254e50aca17b80299cadac0f0a4c11","sourceRepo":"ghashtag/t27","name":"base::types","line":30,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6e6d50829c860bc9b518f082a70a91cdf099342e26c446808c22b896578a680c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6e6d50829c860bc9b518f082a70a91cdf099342e26c446808c22b896578a680c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"6e7314f664d45e80ed132829c617b1485c95fd263f8dbda7244c058800cecbfe","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6e7314f664d45e80ed132829c617b1485c95fd263f8dbda7244c058800cecbfe","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":10,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":12,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7139b2b6b7aa0906259f23ce6843e164cd365035c828ee5bbd2f9db07d305353","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7139b2b6b7aa0906259f23ce6843e164cd365035c828ee5bbd2f9db07d305353","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"7155d76ca10f03c4c2cbe92de1350a9f38a118d9c610a9cfe2c0be294d441758","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"71a93868a8177593f4fdae670dce0714895a9ecaadd2d4a09e2c7d84c415e962","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"71a93868a8177593f4fdae670dce0714895a9ecaadd2d4a09e2c7d84c415e962","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","sourceRepo":"ghashtag/trinity-fpga","name":"math::constants","line":6,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"733a075bd6e68bd9a66a15d24c486f1d3b5af85e924522660a805c53e8b938cf","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"737d4c04a9ed568aa611bd4933a163cd511ba730d3a145643ab0ae8d986fb0fd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"737d4c04a9ed568aa611bd4933a163cd511ba730d3a145643ab0ae8d986fb0fd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"738793d0462dc07cf6756fdac1350b90db3ae7f133ea54885ed6d050f0d0db9c","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"73bb97ab69e0b71c9e8f4f889a00cf720c6ffcdcefde4e2d1efcdbd8c7ef17b7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"73bb97ab69e0b71c9e8f4f889a00cf720c6ffcdcefde4e2d1efcdbd8c7ef17b7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"748a19d26fa53cf98eb889e0f223855c49e88d6d7efa5a7ca3c68accc9768c0e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"751431cc3b541194897283a0f63b82af55129c2166636be7e411fb1a73266e03","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"751431cc3b541194897283a0f63b82af55129c2166636be7e411fb1a73266e03","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"752dad745fac0d7ac30994843be67a1238017536671493bdaf0bfef8fee72be2","sourceRepo":"ghashtag/t27","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":11,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"7825f7dc3e52ed55629715cafb917773d53c396372836ab1db119fbfa5934984","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","sourceRepo":"ghashtag/t27","name":"vsa::core","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","sourceRepo":"ghashtag/t27","name":"hybrid_arithmetic","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"786f94b80c9cc8da149e371886d2c2a515bb29a289dd287d9d8c2986692e0b1e","sourceRepo":"ghashtag/t27","name":"base::types","line":29,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"796d838e8069befa45707a89b86aa34f7584ce5b80ad73ce8301fcdf479dd7be","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"796d838e8069befa45707a89b86aa34f7584ce5b80ad73ce8301fcdf479dd7be","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","sourceRepo":"ghashtag/tri-net","name":"base::types","line":16,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7a3c3be1e5396eb22e6cef48b76a8f2a428408f4f59d1911294d60759094ccd6","sourceRepo":"ghashtag/t27","name":"session_timeout","line":18,"to":null,"candidates":[],"status":"missing"},{"from":"7a4adce8c814539d604fa6a4830e32d5c3639f524aa463d30643bec72670204e","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7a4adce8c814539d604fa6a4830e32d5c3639f524aa463d30643bec72670204e","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"7a4adce8c814539d604fa6a4830e32d5c3639f524aa463d30643bec72670204e","sourceRepo":"ghashtag/t27","name":"numeric::formats","line":11,"to":"d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e","candidates":["d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e"],"status":"resolved"},{"from":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","sourceRepo":"ghashtag/t27","name":"io::file","line":7,"to":null,"candidates":[],"status":"missing"},{"from":"7acc3ed7813ca1bf6b8aa5e0836279f1221cb7beab5596b9c03feae7e141857f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7acc3ed7813ca1bf6b8aa5e0836279f1221cb7beab5596b9c03feae7e141857f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","candidates":["76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d"],"status":"resolved"},{"from":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":4,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"7b2395a369c1777ca0333086c29266630d5335628190e6e46c253b9390af9f33","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7b2395a369c1777ca0333086c29266630d5335628190e6e46c253b9390af9f33","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","sourceRepo":"ghashtag/tri-net","name":"base::types","line":22,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sourceRepo":"ghashtag/t27","name":"igla::race::bram_weights","line":9,"to":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","candidates":["2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c"],"status":"resolved"},{"from":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sourceRepo":"ghashtag/t27","name":"igla::coder::arch","line":10,"to":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","candidates":["01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740"],"status":"resolved"},{"from":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sourceRepo":"ghashtag/t27","name":"igla::coder::tokenizer","line":11,"to":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","candidates":["5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283"],"status":"resolved"},{"from":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sourceRepo":"ghashtag/t27","name":"igla::coder::prm","line":12,"to":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","candidates":["3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded"],"status":"resolved"},{"from":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sourceRepo":"ghashtag/t27","name":"igla::coder::eval","line":13,"to":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","candidates":["c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d"],"status":"resolved"},{"from":"7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7d41d9d1ab43028ea61e4c36eb6c0e40b525e6d0f456db95f0312c2d4d06fc62","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7d41d9d1ab43028ea61e4c36eb6c0e40b525e6d0f456db95f0312c2d4d06fc62","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"7de9d8fe941d574b862a1724428a32e859938c864fa3748f3a14719ff0707388","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"7ed6aca7a17af29b1cae74b8e6bfddb1cef19c748ebc840b09a9ce2f6b3ecc54","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7ed6aca7a17af29b1cae74b8e6bfddb1cef19c748ebc840b09a9ce2f6b3ecc54","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"7ef7acd6dea18076e9b87ed6b1cc6fa16ef8c0de91a59ce03bb66cb5f4d01e48","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"7ef7acd6dea18076e9b87ed6b1cc6fa16ef8c0de91a59ce03bb66cb5f4d01e48","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8015bf2fd623128d21e50cf1b1f55524aa3f75d3ebded4629c730e5cd9a8c578","sourceRepo":"ghashtag/t27","name":"timestamp","line":14,"to":null,"candidates":[],"status":"missing"},{"from":"803ff8d37f9f4f1c3e5119e70d5c9210cd884b6b63b4117996e5401e6bb46448","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"803ff8d37f9f4f1c3e5119e70d5c9210cd884b6b63b4117996e5401e6bb46448","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"80644bdb5652ccafba32d06857d8f4d260863c4e91590cd6fbc7737350a090b6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"80644bdb5652ccafba32d06857d8f4d260863c4e91590cd6fbc7737350a090b6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"80769686b1cd7de71b5a61a790f882226450793f423b8dab1139be10f4df4748","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"80769686b1cd7de71b5a61a790f882226450793f423b8dab1139be10f4df4748","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","sourceRepo":"ghashtag/t27","name":"fpga::router::Router","line":8,"to":"802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3","candidates":["802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3"],"status":"resolved"},{"from":"80d01a441ec4d93e5e7572db1c1dd4554c855576e3dc2caa4876fff33083db4b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"80d01a441ec4d93e5e7572db1c1dd4554c855576e3dc2caa4876fff33083db4b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","sourceRepo":"ghashtag/t27","name":"igla::race::bram_weights","line":10,"to":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","candidates":["2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c"],"status":"resolved"},{"from":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","sourceRepo":"ghashtag/t27","name":"igla::race::ternary_mac","line":11,"to":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","candidates":["c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f"],"status":"resolved"},{"from":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","sourceRepo":"ghashtag/t27","name":"igla::race::ternary_gemm","line":12,"to":"607d9e99f30688eb84635aa46ad305d3a08ee9fba01b2e0ec7a093276bcad285","candidates":["607d9e99f30688eb84635aa46ad305d3a08ee9fba01b2e0ec7a093276bcad285"],"status":"resolved"},{"from":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","sourceRepo":"ghashtag/t27","name":"igla::race::systolic_ternary","line":13,"to":"f0bde5c8a46118437ac641eb8b8f07055679070e32525e50e96e7c90a4baa61b","candidates":["f0bde5c8a46118437ac641eb8b8f07055679070e32525e50e96e7c90a4baa61b"],"status":"resolved"},{"from":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","sourceRepo":"ghashtag/t27","name":"base::types","line":27,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","sourceRepo":"ghashtag/t27","name":"math::constants","line":28,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","sourceRepo":"ghashtag/t27","name":"fpga::partition::Partition","line":8,"to":"4d4dd9b3fcd4609d6b57f0feaec724c4c0af2d16c27a4e7476443ab9531730dc","candidates":["4d4dd9b3fcd4609d6b57f0feaec724c4c0af2d16c27a4e7476443ab9531730dc"],"status":"resolved"},{"from":"83697f2c0ddeafb4bdb3c87b327a2d663de93214f7fb8d10d485574ace9ac293","sourceRepo":"ghashtag/t27","name":"base::types","line":70,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"83fd64fdf3b8a0001d74c1769230ca11b7a0d7f3729c46881b92320b51708b7f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"83fd64fdf3b8a0001d74c1769230ca11b7a0d7f3729c46881b92320b51708b7f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","sourceRepo":"ghashtag/tri-net","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","sourceRepo":"ghashtag/t27","name":"github::auth","line":9,"to":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","candidates":["4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5"],"status":"resolved"},{"from":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","sourceRepo":"ghashtag/t27","name":"github::issues","line":10,"to":"64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","candidates":["64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4"],"status":"resolved"},{"from":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","sourceRepo":"ghashtag/t27","name":"github::prs","line":11,"to":"4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","candidates":["4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9"],"status":"resolved"},{"from":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","sourceRepo":"ghashtag/t27","name":"github::comments","line":12,"to":"7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","candidates":["7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604"],"status":"resolved"},{"from":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","sourceRepo":"ghashtag/t27","name":"tri::sync","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","sourceRepo":"ghashtag/t27","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"85737878076cb079490db44c9772b4934fc0daae162b066db29d1685190a2c60","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"85737878076cb079490db44c9772b4934fc0daae162b066db29d1685190a2c60","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"85886ff8a1b7a674923d3b4ab6e76727ad0ab89b7adb14a853a12bd946df48c8","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"85a7e9a6f0716d535f5a19f0e3e67da32b8bc956f9cd620f5099ba4961d75b55","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"85a7e9a6f0716d535f5a19f0e3e67da32b8bc956f9cd620f5099ba4961d75b55","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"86475f7d52556f934215ddf1cd501cc686af387785e98069a29de61a3bebac75","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"86475f7d52556f934215ddf1cd501cc686af387785e98069a29de61a3bebac75","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"870a33f2ff7a6fe458c1d4ebbff5cf8632c697d2f59a5bf243e943bf1e5186db","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"87edc9316e590def9f59b546eddfbeee0457669bd03e565e870862d0ea4a6fb7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"87edc9316e590def9f59b546eddfbeee0457669bd03e565e870862d0ea4a6fb7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"87f4df6699be1253d8cb35dc7ff8065613c923bfb72af25822078017897d1177","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"87f4df6699be1253d8cb35dc7ff8065613c923bfb72af25822078017897d1177","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"881cb1ecd624422cbe055e73272343e1fa48151ce41b680fa1b01eaed9a26319","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"888f09cac9289bcb34d7779dab42458bdcab259b85f0d8d3dca65e634e7cb0f5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"888f09cac9289bcb34d7779dab42458bdcab259b85f0d8d3dca65e634e7cb0f5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"88a19f0f834d7cf72ce68bd59cfd69d74daa682ce4e2bdcc0174a0e47719eb72","sourceRepo":"ghashtag/t27","name":"nowhere::thing","line":5,"to":null,"candidates":[],"status":"missing"},{"from":"892bfeccae76c838fbdf64c33008605d79293384109ec5b22d087373db822e7f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::constants","line":12,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"math::sacred_physics","line":13,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::gf16","line":14,"to":null,"candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425"],"status":"ambiguous"},{"from":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sourceRepo":"ghashtag/tt-trinity-corona","name":"numeric::lucas_accumulator","line":15,"to":"786f94b80c9cc8da149e371886d2c2a515bb29a289dd287d9d8c2986692e0b1e","candidates":["786f94b80c9cc8da149e371886d2c2a515bb29a289dd287d9d8c2986692e0b1e"],"status":"resolved"},{"from":"896ec37548b1099e2befe9e501eef19c0badedc03bf3e26a1e9c463d6e465842","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"896ec37548b1099e2befe9e501eef19c0badedc03bf3e26a1e9c463d6e465842","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"89a7740fd5e445abd9fa8e839ea57020591daa228f2a83719af15e3e82c15b68","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"89a7740fd5e445abd9fa8e839ea57020591daa228f2a83719af15e3e82c15b68","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"8b3bc6614cc288a837b694b0d936f51645d3d9b37966a25b4a8e34f125119585","sourceRepo":"ghashtag/t27","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8b6fe7a680efb096f89b4f3166bdc6724a7bd3e48fa841b90ac94c4e1f66df01","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8b6fe7a680efb096f89b4f3166bdc6724a7bd3e48fa841b90ac94c4e1f66df01","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8b7170ce5946d494428c43084d30ccbcad94c0cda325f4dde2cacb16cee3c7b9","sourceRepo":"ghashtag/tri-net","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8ba19bb8f83184f5d2ae0610a45c8b4292896654b4396bfbff77229d296cb997","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8ba19bb8f83184f5d2ae0610a45c8b4292896654b4396bfbff77229d296cb997","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8bf789ec0849acf8c11d339deddeaace0fb2c99e444c72f11b32bb922af544cf","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8bf789ec0849acf8c11d339deddeaace0fb2c99e444c72f11b32bb922af544cf","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8c42f30c24a45be46828ef019aea207d5b03cb44f8600434f3b3a60c8f128cbb","sourceRepo":"ghashtag/t27","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8d379f63dde398e22375d6ab17f133e701bca3acb3d707b3208feba3fc7882c5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8d379f63dde398e22375d6ab17f133e701bca3acb3d707b3208feba3fc7882c5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8d6628538bf727e99f5c131624d8cfb6867810bf4d763eb9f681cf867699a591","sourceRepo":"ghashtag/t27","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","sourceRepo":"ghashtag/t27","name":"isa::registers","line":11,"to":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","candidates":["ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa"],"status":"resolved"},{"from":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8e07fb0816cb06ab42ba9af99164200de1bd2d929f3e16052c946d70dcb3ddc2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8e07fb0816cb06ab42ba9af99164200de1bd2d929f3e16052c946d70dcb3ddc2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8e5ba5dfd346196b718e8abeeb200686d3721831b8a376938316f5f121955dec","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8e5ba5dfd346196b718e8abeeb200686d3721831b8a376938316f5f121955dec","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8e663bc28d1cce0a1eb38bc92ed95500f478f35c6a97cf1a0e07b062e284673e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8e663bc28d1cce0a1eb38bc92ed95500f478f35c6a97cf1a0e07b062e284673e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":12,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":13,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sourceRepo":"ghashtag/t27","name":"nn::attention","line":14,"to":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","candidates":["be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187"],"status":"resolved"},{"from":"8eba8906c7b3363610d70611c47190e3a0c577758540669ca80a7c6e383c64da","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8eba8906c7b3363610d70611c47190e3a0c577758540669ca80a7c6e383c64da","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"8fc1e6d391ef81cb63d49bc1d38dc95d6a20bc819fd8da94b111dac89e57990a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"8fc1e6d391ef81cb63d49bc1d38dc95d6a20bc819fd8da94b111dac89e57990a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"8ff28a2ffa2c8d1ef05a013691f905a41e7cae6dfd3bcf7b818ac823509fe060","sourceRepo":"ghashtag/t27","name":"fpga::fifo::Fifo","line":8,"to":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","candidates":["9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393"],"status":"resolved"},{"from":"90cb626e0465988603da5013588d2d56b237a09acccf0184d6050653ffef9407","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"90cb626e0465988603da5013588d2d56b237a09acccf0184d6050653ffef9407","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"90ea646b1c7dd08e161b4da050eef9fc3f35e864726f9e4ada54c09cfa29153f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"90ea646b1c7dd08e161b4da050eef9fc3f35e864726f9e4ada54c09cfa29153f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"911fde186ecfca915f43290f2a98316db08bef4167b499fd8c9d3721346df79f","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6"],"status":"resolved"},{"from":"911fde186ecfca915f43290f2a98316db08bef4167b499fd8c9d3721346df79f","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","candidates":["9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"resolved"},{"from":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"92643bce03950f663ae5071666c57c6d76eae0aeabde17acf65d5480f27349a9","sourceRepo":"ghashtag/tri-net","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"948f91989383d6a7e3a148da37c9671bde69f5599fa95abf1c9704922108f3d3","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"949befe08d74fbddd4b1f79be2e36be09900c171edf1361e97ebf4973c682edb","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"949befe08d74fbddd4b1f79be2e36be09900c171edf1361e97ebf4973c682edb","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"959e06da2849febdf16205273e4592a5390ce6c4d2be52caf2b7a5b80e3f5a1e","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"974e62d1cdcc28189ff5fddbf9405c9e02f8bb01325bc2f9860f0578a053b345","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"974e62d1cdcc28189ff5fddbf9405c9e02f8bb01325bc2f9860f0578a053b345","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"979b29b19e25610e1bdaac20f03ff6c2f302cf6809ccdbdd6b6f900b91031202","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"979b29b19e25610e1bdaac20f03ff6c2f302cf6809ccdbdd6b6f900b91031202","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::testing","line":15,"to":null,"candidates":[],"status":"missing"},{"from":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::benchmarking","line":16,"to":null,"candidates":[],"status":"missing"},{"from":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"986ab5147dece46b619e35c0ceabaf47380e7b69fed47a34cd8d1963699b20fa","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"986ab5147dece46b619e35c0ceabaf47380e7b69fed47a34cd8d1963699b20fa","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","candidates":["76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d"],"status":"resolved"},{"from":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9973916e12d9225b9f175037e9bd30897284f515074a11b97585dbf7b1a59e80","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","sourceRepo":"ghashtag/t27","name":"fpga::timing::Timing","line":8,"to":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","candidates":["a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed"],"status":"resolved"},{"from":"9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9a3ce1aa2579e2bd858efa611d2517e13380fcaa88450c4147b653908fd8df69","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9a3ce1aa2579e2bd858efa611d2517e13380fcaa88450c4147b653908fd8df69","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9a7a252b0234051663b7a9a6f9712ceb2b15501140378ef156612ab574aec6ae","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9a8156c31cf1ff378730d53a4e55d2265fb101558dabfa1c3cf9f3c9e3e3ed5a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9a8156c31cf1ff378730d53a4e55d2265fb101558dabfa1c3cf9f3c9e3e3ed5a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9aa3f120d7149de57f33abba748180cf7cfa0876bbee28cb4a4fb6459b1cad31","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9aa3f120d7149de57f33abba748180cf7cfa0876bbee28cb4a4fb6459b1cad31","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sourceRepo":"ghashtag/tt-trinity-euler","name":"math::constants","line":8,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sourceRepo":"ghashtag/tt-trinity-euler","name":"math::sacred_physics","line":9,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"9ae6f8bd4402e16c75d45181fdd2600e3ad8514cca82dc2ae796c9e7bf1e1f27","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9ae6f8bd4402e16c75d45181fdd2600e3ad8514cca82dc2ae796c9e7bf1e1f27","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9c8556d27e470bc9a3219428a34d472e98999f082aa4e47afd8d2cc325a76200","sourceRepo":"ghashtag/t27","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9caf79744e4fe67d95900b03c1298e0a046444ab82e98057a133550f4c8ba646","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"9ec4b6bdfdd71d5d9e4e95513ab3bbc6ac8691ab2086dd1b4e0a2b681cf1b5f9","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6"],"status":"resolved"},{"from":"9ec4b6bdfdd71d5d9e4e95513ab3bbc6ac8691ab2086dd1b4e0a2b681cf1b5f9","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","candidates":["9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"resolved"},{"from":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a01f9b3b1f8a96dde1e164deabda3e01311adb78a77676daeaf3c10d3532f57f","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","sourceRepo":"ghashtag/t27","name":"fpga::hir::Hir","line":8,"to":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","candidates":["0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa"],"status":"resolved"},{"from":"a10ca3fde42f89cdc371a5b78bce652bfdd697f2dbf85996b07ccc59e0a4076b","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6"],"status":"resolved"},{"from":"a10ca3fde42f89cdc371a5b78bce652bfdd697f2dbf85996b07ccc59e0a4076b","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","candidates":["9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"resolved"},{"from":"a1d8952a42208b161d951d524922fe049963a312a15721e7e5d5c95097729812","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a1d8952a42208b161d951d524922fe049963a312a15721e7e5d5c95097729812","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"a2763ea254fa12292e8679306c5d8f24bb81f8c13834f63a5c62737bb25f6af1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":20,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a2c1f1c987153e3d5dfd1983d6d41b0dfe5e1647ff9163a9fd6335ae28bbd454","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a2c1f1c987153e3d5dfd1983d6d41b0dfe5e1647ff9163a9fd6335ae28bbd454","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a3927bcab311e42d982b0667bf8b946da6c1bdb147d65a24985997700486ee36","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a3ab6aec3a806403d4c098509b8a12fbaadbf61d70ae0485b598be864bede97b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a3ab6aec3a806403d4c098509b8a12fbaadbf61d70ae0485b598be864bede97b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"a3ba5541115a575b99fce7ab3b7cfb3742d11f6273c93a0050b05275a23033fc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a3ba5541115a575b99fce7ab3b7cfb3742d11f6273c93a0050b05275a23033fc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","sourceRepo":"ghashtag/t27","name":"git::schema","line":7,"to":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","candidates":["9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e"],"status":"resolved"},{"from":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","sourceRepo":"ghashtag/t27","name":"session::schema","line":7,"to":null,"candidates":[],"status":"missing"},{"from":"a580e7e0ab08c1395f0a233f729efb3b8e2a0da6f1765afd5891fe4c1b456453","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a580e7e0ab08c1395f0a233f729efb3b8e2a0da6f1765afd5891fe4c1b456453","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"a5dbcb7030b094474aaaa271acb30a8e360843416a8ce98070bfee8cc66ae80b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a5dbcb7030b094474aaaa271acb30a8e360843416a8ce98070bfee8cc66ae80b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"a5dbcb7030b094474aaaa271acb30a8e360843416a8ce98070bfee8cc66ae80b","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":8,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a6a7a8f430e0132d79aa6881521522066a94fa5b29c16cdc844405c1824c864f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a6a7a8f430e0132d79aa6881521522066a94fa5b29c16cdc844405c1824c864f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a8a83daf267d0504d21379f7c2dce998cf5c9ea4847715134afb9b0afd952da9","sourceRepo":"ghashtag/t27","name":"base::types","line":22,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":11,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"aa02acb04870c6d0c72134e4feca4eeaf819084a5cf0409341fd3f9749105177","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"aa02acb04870c6d0c72134e4feca4eeaf819084a5cf0409341fd3f9749105177","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"aa28703435668f5af1666adebde67002d5cd800c48e0550c36becfefe9032bdc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"aa28703435668f5af1666adebde67002d5cd800c48e0550c36becfefe9032bdc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"aa3c58adfab37776f186d26fc60f47aed131db48bb9045875ecae8cbbe62b51c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"aa3c58adfab37776f186d26fc60f47aed131db48bb9045875ecae8cbbe62b51c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ab67427b1b6231635c4811115026c4cf04edf9bc820b52e02176879fb05f5602","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ab67427b1b6231635c4811115026c4cf04edf9bc820b52e02176879fb05f5602","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ac2a7dd606abd2a289cfcf53e1362ad9e1d930066a8feaa18748f131db5971ca","sourceRepo":"ghashtag/t27","name":"memory::notebooklm","line":7,"to":"dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f","candidates":["dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f"],"status":"resolved"},{"from":"ad0b455296e2c251b57c2bb0b95d5b6171cb884dd6547b6b994f5962ca011c21","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ad0b455296e2c251b57c2bb0b95d5b6171cb884dd6547b6b994f5962ca011c21","sourceRepo":"ghashtag/t27","name":"tools::schema","line":7,"to":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","candidates":["a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5"],"status":"resolved"},{"from":"ad1f645f6b172b4c3ff97c07a1de07518b4344c47addd232f20a084035a674dd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ad1f645f6b172b4c3ff97c07a1de07518b4344c47addd232f20a084035a674dd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","sourceRepo":"ghashtag/t27","name":"math::igla_primitives","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","sourceRepo":"ghashtag/t27","name":"igla::coder::prm","line":13,"to":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","candidates":["3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded"],"status":"resolved"},{"from":"ad278f2c5876f7f6c78a0fd9bd181c12fe7311b243653275b18fc045a8afcb37","sourceRepo":"ghashtag/t27","name":"fpga::linker::Linker","line":8,"to":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","candidates":["64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e"],"status":"resolved"},{"from":"ad3a425fffc02fe0f02fc5c01dbb8ef29eefd702872aa00e4796e9e637abbce1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ad98ed47c35feba495e6de7e3cf342a608496ed635c62ce32a55a85d4915133a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ad98ed47c35feba495e6de7e3cf342a608496ed635c62ce32a55a85d4915133a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ae64dc117c95217e11bbf10e7a52d5c474418a7600f6b0a7f4d58b79e1637193","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ae64dc117c95217e11bbf10e7a52d5c474418a7600f6b0a7f4d58b79e1637193","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ae8b1eae29f25b3803d69a1e650c5349fa7ed9e8bea6503be1bc6cfda1220f44","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ae8b1eae29f25b3803d69a1e650c5349fa7ed9e8bea6503be1bc6cfda1220f44","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"af060b6e5cdb2ffe1de0a47995b2c621139367174cf85237d8217aa929af10f7","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"af060b6e5cdb2ffe1de0a47995b2c621139367174cf85237d8217aa929af10f7","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":10,"to":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","candidates":["8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350"],"status":"resolved"},{"from":"b03d87fec868d2aa28f16a77d0dc77dd068c98b1443f9a2408896c72d4a3c227","sourceRepo":"ghashtag/t27","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b0439804871b40fdec6d6bd98dfe3f658e7a091e0f7d378d5d9b78999a5335de","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b0439804871b40fdec6d6bd98dfe3f658e7a091e0f7d378d5d9b78999a5335de","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","candidates":["76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d"],"status":"resolved"},{"from":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":4,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"b12ab087d817d07363484cb0dea375c6002c2d8476162fc5792343663de03229","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b12ab087d817d07363484cb0dea375c6002c2d8476162fc5792343663de03229","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"b37a891477e02303d3821493c20d8c3a59d9cc04b5a01f1948396712e31cc289","sourceRepo":"ghashtag/tri-net","name":"base::types","line":15,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b3ad9a90feacac048e38fccd041005f144d9a5c7a2ad52b23ec20b6a163339b0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b3ad9a90feacac048e38fccd041005f144d9a5c7a2ad52b23ec20b6a163339b0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b3fd0cb2764d0828d728fce767a042d999c182d5d148dbce8a380db78e01c53b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b3fd0cb2764d0828d728fce767a042d999c182d5d148dbce8a380db78e01c53b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b46496033b9cc8164845ba0b6139ad8429704fea6f66a2dce46dd460ea892fac","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b4ea36c976d78efe1add7b0ec95018c0f01877755c257dac8482eeb7576f1909","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b4efcdd7ff229ef26b03587176dbb0f75351666de1e6c689597be0322349e3dd","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b4efcdd7ff229ef26b03587176dbb0f75351666de1e6c689597be0322349e3dd","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b59a2bc4b80d44dd510559f38fc195bd72be88a0433938e519020fc5b8e57256","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b59a2bc4b80d44dd510559f38fc195bd72be88a0433938e519020fc5b8e57256","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","candidates":["76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d"],"status":"resolved"},{"from":"b7538d332141732ec58bda9a10caf10a04d000aef901752fe67a03b1dbd73daa","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b7538d332141732ec58bda9a10caf10a04d000aef901752fe67a03b1dbd73daa","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b7f53f9c19f47f997361c3aa223dbc8b59aa62d9af13607a242b85c6e173082b","sourceRepo":"ghashtag/t27","name":"fpga::power_analysis::PowerAnalysis","line":8,"to":"7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892","candidates":["7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892"],"status":"resolved"},{"from":"b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b8c4bb5052b100a6e9fd6fdd7e3c760a73fa72ea05dddbe0c51bb2541dea0dff","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b8c4bb5052b100a6e9fd6fdd7e3c760a73fa72ea05dddbe0c51bb2541dea0dff","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b8cf25569fa15fece9aa281586f9998c767d802a8275a83ecee58694e774b64e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b8cf25569fa15fece9aa281586f9998c767d802a8275a83ecee58694e774b64e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::testing","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::benchmarking","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"b98ddfba7485ee8b15edf9072a02ea6f5449ee50733f2fd03b57e33db6a50294","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b98ddfba7485ee8b15edf9072a02ea6f5449ee50733f2fd03b57e33db6a50294","sourceRepo":"ghashtag/t27","name":"storage::schema","line":7,"to":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","candidates":["d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87"],"status":"resolved"},{"from":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","sourceRepo":"ghashtag/t27","name":"base::types","line":7,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","sourceRepo":"ghashtag/t27","name":"igla::coder::eval","line":8,"to":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","candidates":["c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d"],"status":"resolved"},{"from":"ba1839b37f4d2f410b20ad046fa80e343d9ff95865c1ed824871f74cb0d5e76f","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ba9ef1c2084a71ad72f7b8c536de5669835bf957c4aec2bd54bc6b3496c2184c","sourceRepo":"ghashtag/t27","name":"base::types","line":45,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bab39e8fc8641fd2db77b865b5d5be1a34ec958105af238d4972010887805f39","sourceRepo":"ghashtag/t27","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bc520fb9db99214b0349804b525a1e98f277b8ba699de1664456a00f242c92de","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bc72c1f84ebfceb91f91dbc3d4d835a36fb38d8555ea4a2f1af4c1d322eee4d6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bc72c1f84ebfceb91f91dbc3d4d835a36fb38d8555ea4a2f1af4c1d322eee4d6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"bcb3b01dcd4debb986099332e1f8d6def66dc7b3d5b6e11f9dce845bb5007fb7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bcb3b01dcd4debb986099332e1f8d6def66dc7b3d5b6e11f9dce845bb5007fb7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"bcbab48f544ecdbc72311c4267176a8842744da41535c318b487d214330e56e7","sourceRepo":"ghashtag/t27","name":"fpga::vcd_conformance_compare::VcdConformanceCompare","line":8,"to":"59c9aed7248324467e2d13b458a60137da5b8b07f5116a484580f0dadc808cd8","candidates":["59c9aed7248324467e2d13b458a60137da5b8b07f5116a484580f0dadc808cd8"],"status":"resolved"},{"from":"bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad","sourceRepo":"ghashtag/t27","name":"fpga::uart::UART_Bridge","line":10,"to":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","candidates":["38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016"],"status":"resolved"},{"from":"bcf4922c76661955200baaf574ae4fda7a915b33ca6fa815fd24217b0cf845b2","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bd7accfeb733b5d197590ce3d41ef52a287c5fa9d85aa28dcb9865e975b98715","sourceRepo":"ghashtag/tri-net","name":"base::types","line":14,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bdca7143ec2e9b3765183834a305585274ff40876b6f767b7fe59f66d2d4ce92","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bdca7143ec2e9b3765183834a305585274ff40876b6f767b7fe59f66d2d4ce92","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bde6d67dbe20541b56e501032706f53025dd6ec72b76ca204a86379dc56f0d1f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bde6d67dbe20541b56e501032706f53025dd6ec72b76ca204a86379dc56f0d1f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","sourceRepo":"ghashtag/t27","name":"nn::hslm","line":10,"to":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","candidates":["8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182"],"status":"resolved"},{"from":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","sourceRepo":"ghashtag/t27","name":"compiler::runtime","line":11,"to":null,"candidates":[],"status":"missing"},{"from":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","sourceRepo":"ghashtag/t27","name":"core","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sourceRepo":"ghashtag/t27","name":"base::types","line":662,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sourceRepo":"ghashtag/t27","name":"math::constants","line":663,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":664,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sourceRepo":"ghashtag/t27","name":"nn::attention","line":665,"to":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","candidates":["be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187"],"status":"resolved"},{"from":"be8b3a944add54031ff82e824411ad3bfcfaed42a8150b3131649cf1d3080a92","sourceRepo":"ghashtag/t27","name":"Constants","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","sourceRepo":"ghashtag/t27","name":"isa::registers","line":10,"to":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","candidates":["ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa"],"status":"resolved"},{"from":"bf61456c5a0ba1735ba7f0b243547c67f86ded98d23c09fd46bd2e53c1b23b04","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bf61456c5a0ba1735ba7f0b243547c67f86ded98d23c09fd46bd2e53c1b23b04","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"bfbbc8dbd82391b975ea357722e3f95ffabb551f4ae40985354b4bcd0afac17b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"bfbbc8dbd82391b975ea357722e3f95ffabb551f4ae40985354b4bcd0afac17b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"c0881e50f64cafa548394ab698a373f7c74c7626d021eb904e2a8e036bb6a091","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c0881e50f64cafa548394ab698a373f7c74c7626d021eb904e2a8e036bb6a091","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"c0881e50f64cafa548394ab698a373f7c74c7626d021eb904e2a8e036bb6a091","sourceRepo":"ghashtag/t27","name":"vsa::core","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"c0881e50f64cafa548394ab698a373f7c74c7626d021eb904e2a8e036bb6a091","sourceRepo":"ghashtag/t27","name":"hybrid_arithmetic","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::corona_oracle","line":13,"to":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","candidates":["627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f"],"status":"resolved"},{"from":"c0ce3a2b96c5e6a5d744a2c9eb71c76ee4ae5622b2fd335402be68bdbf9b45c1","sourceRepo":"ghashtag/t27","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c0dbf24327e983c97c167b05ffd70525c35b60d03481d3aee9fec2c7eda45291","sourceRepo":"ghashtag/t27","name":"base::types","line":49,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c15e19f5e2a0ee02a6acf9817040877e1001e6d720eed0caec1e6ebd1bb4a124","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c15e19f5e2a0ee02a6acf9817040877e1001e6d720eed0caec1e6ebd1bb4a124","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c17f4eba133c5caccd5af0eb50c4ba920920ca361f8cb6cdcb8fcd4ac8a1e535","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c17f4eba133c5caccd5af0eb50c4ba920920ca361f8cb6cdcb8fcd4ac8a1e535","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":11,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c1955126a803192f0a46ca05a2be74f2ca28ddedeba7e8b9355f2ed6baa0eaef","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c1955126a803192f0a46ca05a2be74f2ca28ddedeba7e8b9355f2ed6baa0eaef","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","sourceRepo":"ghashtag/t27","name":"tritype::base","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":9,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c2cd77bcf1104c6158fcb0dc37e0533f063bf3836fedcbe3174681beae8f460b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c2cd77bcf1104c6158fcb0dc37e0533f063bf3836fedcbe3174681beae8f460b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":null,"candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"ambiguous"},{"from":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c3d44f746a9e911188536a2893fa316140abe6719407c5a179eca112db3f2575","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c561ad5d10d55ee6659a9dc143f47c9f5b7846edd50d10f645d1bc4ec747354b","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","sourceRepo":"ghashtag/t27","name":"base::types","line":7,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","sourceRepo":"ghashtag/t27","name":"math::constants","line":8,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c638af50d443971716097050d0da73d8afc15857f2253e32afe63b4a49104b36","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c638af50d443971716097050d0da73d8afc15857f2253e32afe63b4a49104b36","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c6cf3e0b7de5d05674b0dcf9c9f2dd1c7efe0a507a99644025f58261c5b15efe","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c6cf3e0b7de5d05674b0dcf9c9f2dd1c7efe0a507a99644025f58261c5b15efe","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"c7195be79157467c96d65abbf92dcaf4e20bc194e8a800cfcde8571cffecf4a2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c7195be79157467c96d65abbf92dcaf4e20bc194e8a800cfcde8571cffecf4a2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c71dc9505fcf56e8aea69b4265d736e540fc598db301974f3c88e4f9830ce53c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c71dc9505fcf56e8aea69b4265d736e540fc598db301974f3c88e4f9830ce53c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c763650c8fdc2e77ad17d147463a2a41f6073827281085c720bbe33671c396a9","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"c763650c8fdc2e77ad17d147463a2a41f6073827281085c720bbe33671c396a9","sourceRepo":"ghashtag/t27","name":"tritype::Trit","line":11,"to":null,"candidates":[],"status":"missing"},{"from":"c763650c8fdc2e77ad17d147463a2a41f6073827281085c720bbe33671c396a9","sourceRepo":"ghashtag/t27","name":"vsa::vsa_core","line":12,"to":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","candidates":["bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e"],"status":"resolved"},{"from":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","sourceRepo":"ghashtag/t27","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","sourceRepo":"ghashtag/t27","name":"math::constants","line":12,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c800d8ce1a5f38e34d3755a0edbe898492fb8d83e571a18581b595c49fb8b5d8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c800d8ce1a5f38e34d3755a0edbe898492fb8d83e571a18581b595c49fb8b5d8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c8115f6da7558dca37c56c947e233412f3a5aa54ef92ad407d953e0fe975b470","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c8115f6da7558dca37c56c947e233412f3a5aa54ef92ad407d953e0fe975b470","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c84ebb22ae462190ddcd757725c3f409ebda3fab38bcbedad2845649cdc0345c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c84ebb22ae462190ddcd757725c3f409ebda3fab38bcbedad2845649cdc0345c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c9417445533676df65424ac0b373d1c1c21d3f92542dfbd77e61a06a0a2f60d1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c9417445533676df65424ac0b373d1c1c21d3f92542dfbd77e61a06a0a2f60d1","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c9c294acdc2a491ad74598e51c3b2137b1b51b970d326765ce489445e76df2a8","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c9c294acdc2a491ad74598e51c3b2137b1b51b970d326765ce489445e76df2a8","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"c9eba84a22f53fe0464afac2d8594e6b966eda17b0701cc2c5354ec27c1fb325","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"c9f60c228cb3f4b1b2a6fc6e000f87b1e293557106cdf0f003b5d163c5efa5b2","sourceRepo":"ghashtag/t27","name":"fpga::stdlib::Stdlib","line":8,"to":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","candidates":["52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91"],"status":"resolved"},{"from":"caac41c686cce6b5e3fc60c3bec59b9fe1ccc0a0ecc52c9714690252f341f8de","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"caac41c686cce6b5e3fc60c3bec59b9fe1ccc0a0ecc52c9714690252f341f8de","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cb96cdbd3ab876ea67ef98809723365d52c34bec5e892b804928d5ec6f2da545","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cb96cdbd3ab876ea67ef98809723365d52c34bec5e892b804928d5ec6f2da545","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"cbbd63036b371154deb8f49d58ca101528aa025a599c98e41fce34b9a8716a1b","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cc345d688cf070481d769909bfc967b9b1216cd5e84ebc133c4aa3e9c2619dbc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cc345d688cf070481d769909bfc967b9b1216cd5e84ebc133c4aa3e9c2619dbc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"cc960e5ccb68352c21b7479e7f775cc698d4a8fec103c05683cc962e5107b86a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","sourceRepo":"ghashtag/t27","name":"base::types::Float","line":16,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","sourceRepo":"ghashtag/t27","name":"base::math::l2_norm","line":17,"to":null,"candidates":[],"status":"missing"},{"from":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","sourceRepo":"ghashtag/t27","name":"base::math::normalize_l2","line":18,"to":null,"candidates":[],"status":"missing"},{"from":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","sourceRepo":"ghashtag/t27","name":"base::math::phi_distance","line":19,"to":null,"candidates":[],"status":"missing"},{"from":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","sourceRepo":"ghashtag/t27","name":"base::constants::PHI","line":20,"to":null,"candidates":[],"status":"missing"},{"from":"cdd0a129629d3b6a0c492870d957d71610146f461af40f73df7c1a128fd285cc","sourceRepo":"ghashtag/t27","name":"test_framework::core","line":7,"to":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","candidates":["83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00"],"status":"resolved"},{"from":"cdd0a129629d3b6a0c492870d957d71610146f461af40f73df7c1a128fd285cc","sourceRepo":"ghashtag/t27","name":"std::collections","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","sourceRepo":"ghashtag/t27","name":"storage::schema","line":7,"to":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","candidates":["d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87"],"status":"resolved"},{"from":"ce88e96540e925752640868cee20c7e9ad63d0044bae71b0a3ab175474ca2df8","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cee035ba2a228181599daefcf0c04af10b7f6b3326c6312cc97aa68c19f470fc","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"cee035ba2a228181599daefcf0c04af10b7f6b3326c6312cc97aa68c19f470fc","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","sourceRepo":"ghashtag/t27","name":"math::constants","line":10,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","sourceRepo":"ghashtag/t27","name":"igla::race::backend","line":11,"to":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","candidates":["62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1"],"status":"resolved"},{"from":"d12076291cf317c67b13cd9a7cd04ac990b6995fa9eeec9828773e28cb36c437","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d12076291cf317c67b13cd9a7cd04ac990b6995fa9eeec9828773e28cb36c437","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d14b698293100dd48dcbc0741dc4ad592c0a499b34d827515586e70551ff6747","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d14b698293100dd48dcbc0741dc4ad592c0a499b34d827515586e70551ff6747","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d1a87c87ff24072492c3d539a72af402b46a4acda477954b2485311592d7ddc1","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d1a87c87ff24072492c3d539a72af402b46a4acda477954b2485311592d7ddc1","sourceRepo":"ghashtag/t27","name":"file::schema","line":7,"to":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","candidates":["468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9"],"status":"resolved"},{"from":"d1c8b70e3fe2176c599433da14052d4628bed850866bb109b217723af830ca5f","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d1ec57e9fc1d1f50680012edca90823294ee13b46b68107489a01ad873ea891e","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d1ec57e9fc1d1f50680012edca90823294ee13b46b68107489a01ad873ea891e","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d1edecf60e69b3fee790d64e74207ceb739ff8d54ec60c205e267397a20ee6c4","sourceRepo":"ghashtag/t27","name":"base::types","line":18,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","sourceRepo":"ghashtag/trios","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d2e4055108ee38da5e3e5cf5c999c6381ebd57c1d6c1ee7ada868b15cccb77d4","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d2e4055108ee38da5e3e5cf5c999c6381ebd57c1d6c1ee7ada868b15cccb77d4","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d349676390480743109fe238f507d2d7df3d2acfc16b7b24c4c18079e9f77f95","sourceRepo":"ghashtag/t27","name":"numeric::goldenfloat_family","line":8,"to":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6"],"status":"resolved"},{"from":"d349676390480743109fe238f507d2d7df3d2acfc16b7b24c4c18079e9f77f95","sourceRepo":"ghashtag/t27","name":"numeric::phi_ratio","line":9,"to":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","candidates":["9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"resolved"},{"from":"d349676390480743109fe238f507d2d7df3d2acfc16b7b24c4c18079e9f77f95","sourceRepo":"ghashtag/t27","name":"base::testing","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"d349676390480743109fe238f507d2d7df3d2acfc16b7b24c4c18079e9f77f95","sourceRepo":"ghashtag/t27","name":"base::benchmarking","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d42e1ac02e6c07db9accf712b9f83035a8257e7c5c15d691a2da4bdcccc3faf6","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d42e1ac02e6c07db9accf712b9f83035a8257e7c5c15d691a2da4bdcccc3faf6","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d4947ee53db0368360cef453355ee9b159ca0ba130941231ff774a5e55c0ebfe","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d4fff09b1c7e86fca582abd18362a0dafd271e3e11b8bbdbe13f257d8e71a17d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d4fff09b1c7e86fca582abd18362a0dafd271e3e11b8bbdbe13f257d8e71a17d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d5d906f34640716defff3c0b92ac5c953e5d67885c14242db2bdccfd8e6f78d1","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d5d906f34640716defff3c0b92ac5c953e5d67885c14242db2bdccfd8e6f78d1","sourceRepo":"ghashtag/t27","name":"base::ops","line":9,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"d5d906f34640716defff3c0b92ac5c953e5d67885c14242db2bdccfd8e6f78d1","sourceRepo":"ghashtag/t27","name":"pins::ir","line":10,"to":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","candidates":["8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de"],"status":"resolved"},{"from":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"d67d46cada717f8c91861d127ff6037bd17f72b367713a71c41fa0c81eb29b16","sourceRepo":"ghashtag/t27","name":"fpga::apb_bridge::ApbBridge","line":8,"to":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","candidates":["b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca"],"status":"resolved"},{"from":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","sourceRepo":"ghashtag/t27","name":"igla::race::rtl","line":11,"to":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","candidates":["d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56"],"status":"resolved"},{"from":"d6cfadd5f9822b72f668e6bc15734c3939b9350e60c68212e5666ae882e443c0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d6cfadd5f9822b72f668e6bc15734c3939b9350e60c68212e5666ae882e443c0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d6e3126051f418b8d58ea7b6c5eb552c80f0102041dc075b9863c6a7c6de8bf1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d7607eb8c81bb51425dd1458f75f780fe4cbfc009e7c353654b76d25391369f2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d7607eb8c81bb51425dd1458f75f780fe4cbfc009e7c353654b76d25391369f2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d8bd6eba31a437f911eec4ea0d056b1cd4a3b34039e40e207aa2aaa852e11f21","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d8bd6eba31a437f911eec4ea0d056b1cd4a3b34039e40e207aa2aaa852e11f21","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d8ca3cf6feb27648ea781750913aaef0f7c8288be4a6b1d3f8ed1e514db17fa4","sourceRepo":"ghashtag/t27","name":"base::types","line":20,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d8ca3cf6feb27648ea781750913aaef0f7c8288be4a6b1d3f8ed1e514db17fa4","sourceRepo":"ghashtag/t27","name":"math::constants","line":21,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":11,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"d92298db00480f503b1a24ad2dc21f2528fe7c97a45f49b1626129d4e46f35b0","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sourceRepo":"ghashtag/t27","name":"base::ops","line":10,"to":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","candidates":["ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23"],"status":"resolved"},{"from":"da771c66524714c3a8c48aa095e71a5928cfa1cc82f2f819664493e042e9a698","sourceRepo":"ghashtag/t27","name":"math::constants","line":25,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"da83784231ce7b0004279a51913a711527f55d8b2150da9a39fb39b307fab17f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"da83784231ce7b0004279a51913a711527f55d8b2150da9a39fb39b307fab17f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::testing","line":8,"to":null,"candidates":[],"status":"missing"},{"from":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::benchmarking","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"da869f75b0e66b078c82ff9989a637e2e81426f78d2ede00b74df9da126c18b5","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"da869f75b0e66b078c82ff9989a637e2e81426f78d2ede00b74df9da126c18b5","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":24,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"dae2f7625dc11f9fd8d878151c24c36e508397e0782405156da0b0bf634a7731","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dae2f7625dc11f9fd8d878151c24c36e508397e0782405156da0b0bf634a7731","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"db1da1f335f5455e94952bcbc2187cf3ae0aa0a68de09914b5105b69d18cb939","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"db1da1f335f5455e94952bcbc2187cf3ae0aa0a68de09914b5105b69d18cb939","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"db4d7a7e1787579f9b9894309188ac030a830066da5ed24b098910001788ea93","sourceRepo":"ghashtag/t27","name":"base::types","line":16,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":11,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dc6abda2d082a9007b050ad51b10ae119790ceecbe26b23107a08d024bf0ea29","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dc6abda2d082a9007b050ad51b10ae119790ceecbe26b23107a08d024bf0ea29","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"dcb396f87eac603c6dcffe3d1f9b2f3e876747db0ca17f4d784326d77ee5ecaa","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dcb396f87eac603c6dcffe3d1f9b2f3e876747db0ca17f4d784326d77ee5ecaa","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"dcb5de4bdcaaac334bf386d0ee8c2badc68a3debababb033eb4a6df16ff6d6ad","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dd1cf7b176823cedbc2f6d6549e0455812b5c44a52213cd758a969549762ff89","sourceRepo":"ghashtag/t27","name":"fpga::dft::DFT","line":8,"to":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","candidates":["52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e"],"status":"resolved"},{"from":"de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"de753fa421b4280246abdc40b8201a89945982050f86029f11c736f77664c2a1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","sourceRepo":"ghashtag/t27","name":"base::types","line":57,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"dee8a1c4e2ac49ff01ec4228a43bdcb4364d4e68fa2d1d439b27c2d5bac584a7","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":8,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"df15f1fbd549cad6bc01b0599d4765ea3d8be69eb2759ef112ca8c94c101168d","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","sourceRepo":"ghashtag/t27","name":"fpga::uart::UART_Bridge","line":10,"to":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","candidates":["38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016"],"status":"resolved"},{"from":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","sourceRepo":"ghashtag/t27","name":"fpga::spi::SPI_Master","line":11,"to":"d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22","candidates":["d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22"],"status":"resolved"},{"from":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","sourceRepo":"ghashtag/t27","name":"fpga::mac::ZeroDSP_MAC","line":12,"to":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","candidates":["8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350"],"status":"resolved"},{"from":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","sourceRepo":"ghashtag/t27","name":"fpga::bridge::FPGA_Bridge","line":13,"to":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","candidates":["549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":3,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":4,"to":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","candidates":["76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::typechecker","line":5,"to":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","candidates":["b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::optimizer","line":6,"to":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","candidates":["98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::stdlib","line":7,"to":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","candidates":["fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::diagnostics","line":8,"to":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","candidates":["4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4"],"status":"resolved"},{"from":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sourceRepo":"ghashtag/t27","name":"compiler::linker","line":9,"to":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","candidates":["b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16"],"status":"resolved"},{"from":"e0db74fb04b07ce67ea824027d57b1d9da9853c9b36b609ef8cf54593b7d934d","sourceRepo":"ghashtag/t27","name":"base::types","line":52,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e111bef882601ff39e589072facac4a3d4501cf3f8f3c0edbb089981db7379c4","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e111bef882601ff39e589072facac4a3d4501cf3f8f3c0edbb089981db7379c4","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e12a4af3d20a17e48d35990420825c9ff5a1eee091b74ff1565d775f5ae63887","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e12a4af3d20a17e48d35990420825c9ff5a1eee091b74ff1565d775f5ae63887","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e1355c4ae9276302788b24e68f1229d728b8b23b52f3422a96f55d68ab6e0b62","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e1355c4ae9276302788b24e68f1229d728b8b23b52f3422a96f55d68ab6e0b62","sourceRepo":"ghashtag/t27","name":"account::schema","line":7,"to":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","candidates":["d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3"],"status":"resolved"},{"from":"e15cfa4a2739a1dfa550ab6dedfcf0a694d3629eab167bc9fb66faa289c1a109","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e15cfa4a2739a1dfa550ab6dedfcf0a694d3629eab167bc9fb66faa289c1a109","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sourceRepo":"ghashtag/trinity-fpga","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sourceRepo":"ghashtag/trinity-fpga","name":"math::sacred_physics","line":8,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","sourceRepo":"ghashtag/t27","name":"fpga::clock_domain::ClockDomain","line":8,"to":"2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60","candidates":["2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60"],"status":"resolved"},{"from":"e2987f7b0551651563d7d0730f8feaf2f319a6aa968fa44831048b3ccbcd9615","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e33d06c87bbdb7128b94c03795ef3a4832b59758ca66412cd89fde649e7db5e0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e33d06c87bbdb7128b94c03795ef3a4832b59758ca66412cd89fde649e7db5e0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e3de31efd8a6ccd03a55b730897b5ed9b3d2e3ee895285fd3e28f80da22ad0f3","sourceRepo":"ghashtag/t27","name":"timestamp","line":16,"to":null,"candidates":[],"status":"missing"},{"from":"e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","sourceRepo":"ghashtag/t27","name":"base::types","line":14,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","sourceRepo":"ghashtag/t27","name":"math::constants","line":15,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","sourceRepo":"ghashtag/t27","name":"vsa::ops","line":16,"to":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","candidates":["5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604"],"status":"resolved"},{"from":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","sourceRepo":"ghashtag/t27","name":"physics::su2_chern_simons","line":17,"to":"f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770","candidates":["f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770"],"status":"resolved"},{"from":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":18,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"e46541429008eef0e3a73d4b33d40d438a556712791e282630da97bddbb20d19","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e56f7e6a77a0696efa9ed42e43b81534cd2dcff1b7cdaea7123418ce427f244c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e56f7e6a77a0696efa9ed42e43b81534cd2dcff1b7cdaea7123418ce427f244c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"e67d13adcf989dad50feda8d7c5a53a0fa8f96486804feb26b22a582ebb7582d","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e67d13adcf989dad50feda8d7c5a53a0fa8f96486804feb26b22a582ebb7582d","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e713662a43888a4304da49a3fa56934423615caec6edf983e2260fbb0123de3b","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e713662a43888a4304da49a3fa56934423615caec6edf983e2260fbb0123de3b","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e713662a43888a4304da49a3fa56934423615caec6edf983e2260fbb0123de3b","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":8,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"e72f0bd25f3350a928a1972d0070a96b9e73b6b13d9d6e080353286c1309458a","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e72f0bd25f3350a928a1972d0070a96b9e73b6b13d9d6e080353286c1309458a","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sourceRepo":"ghashtag/tt-trinity-corona","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::corona_oracle","line":11,"to":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","candidates":["627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f"],"status":"resolved"},{"from":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sourceRepo":"ghashtag/tt-trinity-corona","name":"corona::rom_layout","line":12,"to":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","candidates":["c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c"],"status":"resolved"},{"from":"e805c111cc8f7dcdf826ad23f9ba35bc8d9426a9341cb6d084ad86a5b5afaaac","sourceRepo":"ghashtag/t27","name":"math::constants","line":37,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"e805c111cc8f7dcdf826ad23f9ba35bc8d9426a9341cb6d084ad86a5b5afaaac","sourceRepo":"ghashtag/t27","name":"math::e8_lie_algebra","line":38,"to":"da771c66524714c3a8c48aa095e71a5928cfa1cc82f2f819664493e042e9a698","candidates":["da771c66524714c3a8c48aa095e71a5928cfa1cc82f2f819664493e042e9a698"],"status":"resolved"},{"from":"e805c111cc8f7dcdf826ad23f9ba35bc8d9426a9341cb6d084ad86a5b5afaaac","sourceRepo":"ghashtag/t27","name":"math::zamolodchikov_e8","line":39,"to":"01aeef2f32ca6f6294e444026fff8d82b8a0f9dfc7bc39abb42c7894650a3d66","candidates":["01aeef2f32ca6f6294e444026fff8d82b8a0f9dfc7bc39abb42c7894650a3d66"],"status":"resolved"},{"from":"e805c111cc8f7dcdf826ad23f9ba35bc8d9426a9341cb6d084ad86a5b5afaaac","sourceRepo":"ghashtag/t27","name":"physics::su2_chern_simons","line":40,"to":"f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770","candidates":["f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770"],"status":"resolved"},{"from":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e9b76a6307da8010148eccb359fed5cfa1757cf3d28368fab4a3b0765fd3fec0","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"e9b76a6307da8010148eccb359fed5cfa1757cf3d28368fab4a3b0765fd3fec0","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"eb6c433fe01f1e6b9fd3a83a79c6575f3e1431b8cccfd78ac6d8db6d0e699eea","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"eb6c433fe01f1e6b9fd3a83a79c6575f3e1431b8cccfd78ac6d8db6d0e699eea","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ed4df738f5defa8dc460667b55d0ebe4f498e6544d647f301ae97636b016d885","sourceRepo":"ghashtag/t27","name":"base::types","line":26,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ee002f94a63c0a07ea37cd3b1ddcaca3a4ee552a99a18e532d99b16f1ae12ce8","sourceRepo":"ghashtag/tri-net","name":"base::types","line":27,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ee2c014c00caceaf27b81474757f674c961bc4930613a8aabf75dad6dbed65ba","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ee2c014c00caceaf27b81474757f674c961bc4930613a8aabf75dad6dbed65ba","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ee69c64656a0c092b397d440479f02e24391d40064c64af6b9ae2e4c3dccb979","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ee69c64656a0c092b397d440479f02e24391d40064c64af6b9ae2e4c3dccb979","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"ee8ecc6ee599567979a46dc51bccd9cd04cf4aca2af157874eb528ad877353e9","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ee8ecc6ee599567979a46dc51bccd9cd04cf4aca2af157874eb528ad877353e9","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"eef7ff2a5ea1d0b9a6071f460170f8b0f9091199a6973402056f9af579e08c5c","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"eef7ff2a5ea1d0b9a6071f460170f8b0f9091199a6973402056f9af579e08c5c","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"f07180e5dbd5e9cd375c6711c3e58a8250327ade0df9f3ba888d49712fb423df","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f07180e5dbd5e9cd375c6711c3e58a8250327ade0df9f3ba888d49712fb423df","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"f0763950504737a827af7c1fa561a495c1a963bdce809ed36f94b5dc35160cf6","sourceRepo":"ghashtag/t27","name":"base::types","line":7,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f0843acd6ae7dba69ea6ec147c0c3906d98911afc242457cb4856568be248324","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f0843acd6ae7dba69ea6ec147c0c3906d98911afc242457cb4856568be248324","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"f0bde5c8a46118437ac641eb8b8f07055679070e32525e50e96e7c90a4baa61b","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f0bde5c8a46118437ac641eb8b8f07055679070e32525e50e96e7c90a4baa61b","sourceRepo":"ghashtag/t27","name":"igla::race::ternary_mac","line":9,"to":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","candidates":["c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f"],"status":"resolved"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::testing","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::benchmarking","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::goldenfloat_family","line":8,"to":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","candidates":["9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"resolved"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/tt-trinity-euler","name":"numeric::phi_ratio","line":9,"to":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404"],"status":"resolved"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::testing","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sourceRepo":"ghashtag/tt-trinity-euler","name":"base::benchmarking","line":13,"to":null,"candidates":[],"status":"missing"},{"from":"f1d6d26bfc285aecc914fd4f89104ad5b8bbfa57ad8f1685ccdc065049190478","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f1d6d26bfc285aecc914fd4f89104ad5b8bbfa57ad8f1685ccdc065049190478","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":10,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"f1d6d26bfc285aecc914fd4f89104ad5b8bbfa57ad8f1685ccdc065049190478","sourceRepo":"ghashtag/t27","name":"ternary::hybrid_arithmetic","line":11,"to":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","candidates":["d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c"],"status":"resolved"},{"from":"f1d6d26bfc285aecc914fd4f89104ad5b8bbfa57ad8f1685ccdc065049190478","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":12,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"f1e5eefbb3fdd68c2f4f539e8a221d176d21851a20f6abf159266108b547ac2f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f1e5eefbb3fdd68c2f4f539e8a221d176d21851a20f6abf159266108b547ac2f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"f1e9aedeba6e513fe9ed235d0501d552b46aa6c3e0c1cb7271888ce20d8f0c76","sourceRepo":"ghashtag/t27","name":"fpga::placement::Placement","line":8,"to":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","candidates":["107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96"],"status":"resolved"},{"from":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f3819844f477cf0293deb96d3046a16d9283e7545cadb4f5d24c720be99743db","sourceRepo":"ghashtag/tri-net","name":"base::types","line":4,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f3b97da6289ecc13cd9efc132dc417b23dff4316a835d5f6d86875470f306c34","sourceRepo":"ghashtag/t27","name":"base::types","line":43,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","sourceRepo":"ghashtag/tri-net","name":"base::types","line":12,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f4c734a4a68e2c20c6ff6824ee431d2ea1912898dc36072c2ee1229fbe79a688","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f4c734a4a68e2c20c6ff6824ee431d2ea1912898dc36072c2ee1229fbe79a688","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","sourceRepo":"ghashtag/tri-net","name":"base::types","line":14,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f53faab13959683ff6110da18d8125f6c62af2516383c6b77aab8610a5584ebf","sourceRepo":"ghashtag/t27","name":"base::types","line":9,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f53faab13959683ff6110da18d8125f6c62af2516383c6b77aab8610a5584ebf","sourceRepo":"ghashtag/t27","name":"numeric::gf16","line":10,"to":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974"],"status":"resolved"},{"from":"f53faab13959683ff6110da18d8125f6c62af2516383c6b77aab8610a5584ebf","sourceRepo":"ghashtag/t27","name":"ternary::packed_trit","line":11,"to":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","candidates":["01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3"],"status":"resolved"},{"from":"f5524863149e19d575d49f903c14ecb295da119701247e018d620827307283e2","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f5524863149e19d575d49f903c14ecb295da119701247e018d620827307283e2","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f6130cb4fb3292dcf0c8a59031b018b2078fb1add5260b24a1f651af62834312","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f6130cb4fb3292dcf0c8a59031b018b2078fb1add5260b24a1f651af62834312","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sourceRepo":"ghashtag/trios","name":"numeric::gf16","line":7,"to":null,"candidates":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425"],"status":"ambiguous"},{"from":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sourceRepo":"ghashtag/trios","name":"numeric::phi_ratio","line":8,"to":null,"candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"ambiguous"},{"from":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sourceRepo":"ghashtag/trios","name":"sacred::constants","line":9,"to":null,"candidates":[],"status":"missing"},{"from":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","sourceRepo":"ghashtag/t27","name":"fpga::formal::Formal","line":8,"to":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","candidates":["090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c"],"status":"resolved"},{"from":"f93bfbf9b9f7fb215faed70ad4a01a4fa9d8e00ef5daed464c8a949d2a56b0d8","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":null,"candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"ambiguous"},{"from":"f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770","sourceRepo":"ghashtag/t27","name":"math::constants","line":27,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fa02d9864b6cc48cfe1c2ba92bd8d43cf3e93a33b23bcfd646866bb8ccd328e0","sourceRepo":"ghashtag/t27","name":"fpga::bootrom::BootROM","line":8,"to":"095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958","candidates":["095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958"],"status":"resolved"},{"from":"fa0b2c4b6213ae1664e5ede0f7277e5a92b077a8291ea69af9abda53a6346b7f","sourceRepo":"ghashtag/t27","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fa898a9e9a4092010e182f03399fe01d286f94926819801fd42ba0c1ed2a089f","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fa898a9e9a4092010e182f03399fe01d286f94926819801fd42ba0c1ed2a089f","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"faa036d013136104c32830264768cb1d0342781e3066fabc393f358ed4b4ee3a","sourceRepo":"ghashtag/t27","name":"base::types","line":39,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"faa113fb557328b585439853b8b733b86f97d5df63e7824fe040d2aab10ad6c4","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"faa113fb557328b585439853b8b733b86f97d5df63e7824fe040d2aab10ad6c4","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fb3c41eaf46f08d7fe6f5403a39fd0bfac635513f191898ff20ec67f2fdf76a7","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fb3c41eaf46f08d7fe6f5403a39fd0bfac635513f191898ff20ec67f2fdf76a7","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sourceRepo":"ghashtag/t27","name":"compiler::parser","line":3,"to":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","candidates":["76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d"],"status":"resolved"},{"from":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sourceRepo":"ghashtag/t27","name":"compiler::lexer","line":4,"to":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","candidates":["4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a"],"status":"resolved"},{"from":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","sourceRepo":"ghashtag/t27","name":"std","line":12,"to":null,"candidates":[],"status":"missing"},{"from":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","sourceRepo":"ghashtag/t27","name":"base::types","line":10,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","sourceRepo":"ghashtag/t27","name":"math::constants","line":11,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fc14c912253e6b52a302909533c7da0fd963384e66b03eda50a3ca9ca7c68659","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fc14c912253e6b52a302909533c7da0fd963384e66b03eda50a3ca9ca7c68659","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fc6550b88f43e488b6920e33f140cb90350cae7b7e8b7d557b6aaa2ba8f642ba","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fc6550b88f43e488b6920e33f140cb90350cae7b7e8b7d557b6aaa2ba8f642ba","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fd103db5e8f85819d411f1d6215d94681742d58e2c32e8dcea50d4180bf6d638","sourceRepo":"ghashtag/t27","name":"base::types","line":6,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fd103db5e8f85819d411f1d6215d94681742d58e2c32e8dcea50d4180bf6d638","sourceRepo":"ghashtag/t27","name":"math::constants","line":7,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fd622012c98c063b5302508590829a22d10013618c70523d1c385b0f6c848c25","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fe149804c3b532069ac353681dea878cc30f032de18c74cd77fb24bfb79c0423","sourceRepo":"ghashtag/t27","name":"fpga::power::Power","line":8,"to":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","candidates":["58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9"],"status":"resolved"},{"from":"fe6ff2cc8fb17534f6cbd181a4af31750729533339cbf99889aff1a06bd09151","sourceRepo":"ghashtag/t27","name":"math::constants","line":19,"to":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","candidates":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5"],"status":"resolved"},{"from":"fe6ff2cc8fb17534f6cbd181a4af31750729533339cbf99889aff1a06bd09151","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":20,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","sourceRepo":"ghashtag/t27","name":"base::types::Trit","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","sourceRepo":"ghashtag/t27","name":"math::sacred_physics","line":9,"to":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","candidates":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c"],"status":"resolved"},{"from":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","sourceRepo":"ghashtag/t27","name":"vsa::vsa_core::Hypervector","line":10,"to":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","candidates":["bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e"],"status":"resolved"},{"from":"ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3","sourceRepo":"ghashtag/trios","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ff49a27495a6de1e3fa7c6a16ed855385c7f772a67591d593199659d5387f814","sourceRepo":"ghashtag/t27","name":"base::types","line":8,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ff49a27495a6de1e3fa7c6a16ed855385c7f772a67591d593199659d5387f814","sourceRepo":"ghashtag/t27","name":"igla::race::bram_weights","line":9,"to":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","candidates":["2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c"],"status":"resolved"},{"from":"ff5ee808fd21fd6db87cf1bce2c5c3972ae090bf6b9a10da44df62d28cf9065f","sourceRepo":"ghashtag/t27","name":"base::types","line":33,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"},{"from":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::goldenfloat_family","line":7,"to":null,"candidates":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da"],"status":"ambiguous"},{"from":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sourceRepo":"ghashtag/trinity-fpga","name":"numeric::phi_ratio","line":8,"to":null,"candidates":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"],"status":"ambiguous"},{"from":"fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7","sourceRepo":"ghashtag/tri-net","name":"base::types","line":5,"to":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","candidates":["12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db"],"status":"resolved"}],"collisions":[{"module":"adaptiveretry","specIds":["4454f6161b15302cd298c417dfcade3dd0a0c42e6734f89eef26a1b5eda337e9","7bba43f3ce59e8f19614856e91ac705b6fadd2cd3a145663b482daeb9a0b7120"]},{"module":"adaptiverouting","specIds":["093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c"]},{"module":"anomaly_detector","specIds":["059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5"]},{"module":"api_documenter","specIds":["812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed"]},{"module":"areaoptimization","specIds":["1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8"]},{"module":"attention","specIds":["19b5ab5a4430be22ca924c05a3bb6928960a3b3ef38b802a6e4a4bd752b2ad05","b8cf25569fa15fece9aa281586f9998c767d802a8275a83ecee58694e774b64e"]},{"module":"auto_config","specIds":["6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc"]},{"module":"automation","specIds":["031a4a295e848f75a59247991f0f074e203d34b4521a2c5f2f5ac511b3095739","1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","7520e251d23861075aa7c4899aee7074e7199364c34f8f3218ee7d7711acd6e6","957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","ac2a7dd606abd2a289cfcf53e1362ad9e1d930066a8feaa18748f131db5971ca","b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5"]},{"module":"bandwidthallocator","specIds":["37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402"]},{"module":"cache_management","specIds":["15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a"]},{"module":"compression_engine","specIds":["61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87"]},{"module":"congestion_control","specIds":["1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7"]},{"module":"constants","specIds":["03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48"]},{"module":"crosslayeroptimizer","specIds":["6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349"]},{"module":"docs_generator","specIds":["08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315"]},{"module":"energyawarerouting","specIds":["18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1"]},{"module":"enrichment","specIds":["40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a"]},{"module":"failure_predictor","specIds":["425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3"]},{"module":"faultdetection","specIds":["fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7"]},{"module":"flow_control","specIds":["d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed"]},{"module":"formats","specIds":["50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e"]},{"module":"gf12","specIds":["1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","911fde186ecfca915f43290f2a98316db08bef4167b499fd8c9d3721346df79f","c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1"]},{"module":"gf20","specIds":["9ec4b6bdfdd71d5d9e4e95513ab3bbc6ac8691ab2086dd1b4e0a2b681cf1b5f9","e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45"]},{"module":"gf24","specIds":["577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","a10ca3fde42f89cdc371a5b78bce652bfdd697f2dbf85996b07ccc59e0a4076b"]},{"module":"gf32","specIds":["2387a4d9b48f4cdbdcea0ac11b1a3e95b82a71b42f9967d7318bc838c899f333","27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0"]},{"module":"gf4","specIds":["0839d483ebdbf439a28ee13f15b8879c53c4c85687d842164106e6991a12ed73","601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed"]},{"module":"gf64","specIds":["49a3ef2231df6ce5d5cdeec62f6608317512b047d2c6adb620b327b04fbdcfc3","f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5"]},{"module":"gf8","specIds":["457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","d349676390480743109fe238f507d2d7df3d2acfc16b7b24c4c18079e9f77f95","f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b"]},{"module":"gfcompetitive","specIds":["2e1c74a2e7066c74730a82673ed2d723555599bada8fa1122e0859a5bb24e3eb","8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487"]},{"module":"github","specIds":["4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569"]},{"module":"goldenfloatfamily","specIds":["658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e"]},{"module":"hardwarevalidation","specIds":["347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d"]},{"module":"health_dashboard","specIds":["1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa"]},{"module":"healthmonitoring","specIds":["51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1"]},{"module":"hslm","specIds":["68bee859c3ffd508a841df8048fdde0932245af7a0dfe7c3596266cd24726dbe","8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182"]},{"module":"igla-coder-pipeline","specIds":["51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da"]},{"module":"integration_framework","specIds":["454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f"]},{"module":"keymanagement","specIds":["a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34"]},{"module":"layernorm","specIds":["094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","0f726fb3c27cf8e9877344bd5e4e97a04a1c9f3a76e945222f7a7aa87e7eed96"]},{"module":"linkqualitymonitor","specIds":["fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3"]},{"module":"litecrypto","specIds":["9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26"]},{"module":"load_predictor","specIds":["6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661"]},{"module":"local_processing","specIds":["295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6"]},{"module":"m","specIds":["11b8f3a02528ec76301e1d268af20761b5ad9ec4d730b8d566c076b553b196b7","15cdaa34d26745d08ad6a1a27fa1686346285adcfb53a62632a0a3af31100ab6","2ba9ba17084c14184271ed7794dd4892e06732c6aaea33c11fee7c31038f299f","34e12bde826ea098367fbf59daab759f4ea2f35a4a9253e07010e8f9ee437523","44ffb909e0acb7a25ca58265b7e7150f63a335c1a2a46a249a89bedf616e52c0","55e446faa75d219aa49a89a5c07f36e262e0cacd120fed49ce35fb6303d63f1e","7e01134039639647e265aaffb16b2ffb484aceee92710e5dd993a783a81a14dc","8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","960962e79669080198f0efa31668d083b1ea8eef02176cbec9eb245c89d9cfe6","a4dc20bdc817a79850728a9eaabe89d0eb37c43735b56b7024b53033dfff4e08","b9be1025b920bfa48dc7a90b04ded9e71f123096b3c03bee0b6afb8837cd64bb","c8fee4965aa004df807bb758bc2ebd70f4653e9dc08133b40951b990d2e9a0e0","cefaf01b690a9fbfdeb7fb404da33a48eedd555c2db0663c0ff864c315dc8786","da52721df06869c7108c634943a99ad067d397259d030de9781f7073ee0479a3","da861a10b1506958453665225648c17b428b023cf806648497c8ce58a4107405","dedc154ce53debd9561ed0ed931d0c6c394dca5034b8149e179283ae8755a30b","e47089fd4638da45cfbde2769fecd228d72029dcbebbc7b25ee3699437c7bb99","e66aacd669a1bba304a235f5db230e9704385e4471ca44391855c9812652d3b0","f171ef4667b77ffd1b063e40cbb605ffd48ab2af624d21995b759aaf1b104e6f"]},{"module":"m3multihop","specIds":["07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34"]},{"module":"meshetx","specIds":["2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124"]},{"module":"meshintegrationtests","specIds":["76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c"]},{"module":"meshprotocolstack","specIds":["b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83"]},{"module":"meshrouting","specIds":["3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115"]},{"module":"multipath_routing","specIds":["3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a"]},{"module":"multipathrouter","specIds":["f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b"]},{"module":"network_orchestrator","specIds":["274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2"]},{"module":"network_simulator","specIds":["6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1"]},{"module":"networkanalytics","specIds":["7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7"]},{"module":"networkcoding","specIds":["1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83"]},{"module":"olsrrouting","specIds":["dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c"]},{"module":"packetqueue","specIds":["157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df"]},{"module":"pattern_predictor","specIds":["9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8"]},{"module":"performance_profiler","specIds":["197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034"]},{"module":"performancebenchmarks","specIds":["622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba"]},{"module":"phiratio","specIds":["0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296"]},{"module":"powermonitoring","specIds":["3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a"]},{"module":"productiondeployment","specIds":["c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e"]},{"module":"productionscenarios","specIds":["73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6"]},{"module":"quarantine_manager","specIds":["1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb"]},{"module":"redundancymanagement","specIds":["bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043"]},{"module":"resourcescheduler","specIds":["e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d"]},{"module":"sacredphysics","specIds":["67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00"]},{"module":"sandbox","specIds":["3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","7a3c3be1e5396eb22e6cef48b76a8f2a428408f4f59d1911294d60759094ccd6","8015bf2fd623128d21e50cf1b1f55524aa3f75d3ebded4629c730e5cd9a8c578","e1c387ee2e54fabfdcb363337c56c608d48108946f4b089c91a232e9fa8d0f76","e3de31efd8a6ccd03a55b730897b5ed9b3d2e3ee895285fd3e28f80da22ad0f3"]},{"module":"selfhealing","specIds":["074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1"]},{"module":"stdlib","specIds":["52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d"]},{"module":"string","specIds":["ad98ed47c35feba495e6de7e3cf342a608496ed635c62ce32a55a85d4915133a","dae2f7625dc11f9fd8d878151c24c36e508397e0782405156da0b0bf634a7731"]},{"module":"swarmcoordinator","specIds":["876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c"]},{"module":"test_framework","specIds":["22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e"]},{"module":"test_validator","specIds":["59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97"]},{"module":"timingclosure","specIds":["1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920"]},{"module":"topology_visualizer","specIds":["82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e"]},{"module":"traffic_animator","specIds":["a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666"]},{"module":"tribtree","specIds":["c800d8ce1a5f38e34d3755a0edbe898492fb8d83e571a18581b595c49fb8b5d8","d7607eb8c81bb51425dd1458f75f780fe4cbfc009e7c353654b76d25391369f2"]},{"module":"triformat-gf128","specIds":["2677ca7baf25df8c84d3370f519d73f134f0091770cab803ce7ef332beef5ae5","90c8b8aaaca66c08288a2e82386a5c48c79fd208f59bea2df1a3e556f575ad01"]},{"module":"triformat-gf16","specIds":["1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425"]},{"module":"triformat-gf256","specIds":["3a0a496b0fac77bd8636bde8a08d4368f0fe0e71ba137199f8b95e6e3df40bfe","ca80b7e37c5cbf63fb0726ef19a8b4455afb4928f06e6aac7abd01cc33c5ddfa"]},{"module":"trinetformats","specIds":["0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f"]},{"module":"trinitymemorybridgespec","specIds":["513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b"]},{"module":"trinitymemoryconformancelabspec","specIds":["2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721"]},{"module":"trinitymemoryedgedemospec","specIds":["9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","fe5cd36d3e031ae951e11290b42e4fa89ca8e1f8cc0599da1b4518bab9285c6a"]},{"module":"trinitymemorystreamcomputespec","specIds":["0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012"]},{"module":"trinitymemorytensorpackspec","specIds":["674a166252ed87e18ef467e7c8cb62f8363abc831102041a9eb6862be6ca6023","ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675"]},{"module":"trinitymemorytypes","specIds":["344f42e42174ead35a201804037295018edd2a0b4c05cd17426cc7d92239d51a","d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc"]},{"module":"trisha256","specIds":["1ede200487415c520e1aa5406fbcb3590dbcf7fc8cc4b04879baad058619d052","5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207"]},{"module":"trust_manager","specIds":["46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9"]}]} diff --git a/apps/website/public/t27/t27_compiler.wasm b/apps/website/public/t27/t27_compiler.wasm old mode 100755 new mode 100644 diff --git a/apps/website/public/t27/universe-atlas.json b/apps/website/public/t27/universe-atlas.json index d27ef1dbe8..ba60b93b4c 100644 --- a/apps/website/public/t27/universe-atlas.json +++ b/apps/website/public/t27/universe-atlas.json @@ -1 +1 @@ -{"version":1,"at":"2026-09-12T04:15:45.736Z","provenance":{"repo":"gHashTag/t27","commit":"1cd2877f97e33efb574fa03c589f7368dc1385ba","shortCommit":"1cd2877f9","specsOrCompilerDirty":true,"dirty":true,"manifestSha256":"4970a54d1cc7fc3954c66a9a11f885d7b2b4633614618f7896adb94cb3589e28","indexerSha256":"3d49bc7cf0b36ce075d3fa014760e28a1d46104db4ee9681d27fc04fa1ddce96","repos":[{"repo":"t27","commit":"1cd2877f97e33efb574fa03c589f7368dc1385ba","specs":575},{"repo":"tri-net","commit":"3ffd1bd0ac9f5aea18c407ec386ca179eb61a41e","specs":113},{"repo":"trinity-fpga","commit":"30248bb30f332f9b5f944ced9b87ff50711fe86c","specs":64},{"repo":"trinity","commit":"001190f7c4ab09ac1b7dcf2b40b0969e57549f42","specs":3},{"repo":"tt-trinity-corona","commit":"dddf6887e54aa847a9a0f4c835fbc392c8cc6c12","specs":5},{"repo":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","specs":37,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":0},{"repo":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","specs":58,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":13},{"repo":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","specs":1,"discoveredAt":"2026-09-12T04:07:23.198Z","duplicatesSkipped":48}],"duplicatesPreviouslySkipped":129,"healthSource":"vendored manifest claim, not issue acceptance","importResolution":"lexical/path discovery, not compiler linking"},"discovery":{"owner":"gHashTag","owners":["gHashTag","dmitrii-f-t27"],"inventory":121,"inventoryPages":3,"inventoryComplete":true,"catalogSourceReads":[],"catalogSourceFailures":[],"readmeFailures":["ghashtag/ghashtag.github.io","ghashtag/homebrew-trinity","ghashtag/trinity-railway-agent"],"unexpandedWorlds":[],"scope":"Public owner inventories (gHashTag, dmitrii-f-t27) and every vendored catalog source: explicit project descriptions/namespaces, related README outbound links (four expansion rounds), explicit seeds and vendored catalog sources. Not all GitHub; no private repos, enrolled players or presence.","strandClassification":"INFERENCE from repository name/description; navigation taxonomy only","readmes":[{"repo":"dmitrii-f-t27/t27","url":"https://github.com/dmitrii-f-t27/t27/blob/master/README.md"},{"repo":"dmitrii-f-t27/trinity","url":"https://github.com/dmitrii-f-t27/trinity/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-contracts","url":"https://github.com/dmitrii-f-t27/trinity-contracts/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-deck","url":"https://github.com/dmitrii-f-t27/trinity-deck/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-fpga","url":"https://github.com/dmitrii-f-t27/trinity-fpga/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-memory","url":"https://github.com/dmitrii-f-t27/trinity-memory/blob/master/README.md"},{"repo":"dmitrii-f-t27/trinity-s3ai","url":"https://github.com/dmitrii-f-t27/trinity-s3ai/blob/main/README.md"},{"repo":"ghashtag/goldenfloats.jl","url":"https://github.com/gHashTag/GoldenFloats.jl/blob/main/README.md"},{"repo":"ghashtag/neuronconstant","url":"https://github.com/gHashTag/NeuronConstant/blob/main/README.md"},{"repo":"ghashtag/paper3-methodology","url":"https://github.com/gHashTag/paper3-methodology/blob/main/README.md"},{"repo":"ghashtag/parameter-golf-trinity","url":"https://github.com/gHashTag/parameter-golf-trinity/blob/main/README.md"},{"repo":"ghashtag/t27","url":"https://github.com/gHashTag/t27/blob/master/README.md"},{"repo":"ghashtag/tri-27","url":"https://github.com/gHashTag/tri-27/blob/main/README.md"},{"repo":"ghashtag/tri-net","url":"https://github.com/gHashTag/tri-net/blob/main/README.md"},{"repo":"ghashtag/trinity","url":"https://github.com/gHashTag/trinity/blob/main/README.md"},{"repo":"ghashtag/trinity-agents","url":"https://github.com/gHashTag/trinity-agents/blob/main/README.md"},{"repo":"ghashtag/trinity-bittensor","url":"https://github.com/gHashTag/trinity-bittensor/blob/main/README.md"},{"repo":"ghashtag/trinity-claraparameter","url":"https://github.com/gHashTag/trinity-claraParameter/blob/main/README.md"},{"repo":"ghashtag/trinity-contracts","url":"https://github.com/gHashTag/trinity-contracts/blob/main/README.md"},{"repo":"ghashtag/trinity-fpga","url":"https://github.com/gHashTag/trinity-fpga/blob/main/README.md"},{"repo":"ghashtag/trinity-node","url":"https://github.com/gHashTag/trinity-node/blob/main/README.md"},{"repo":"ghashtag/trinity-papers-ru","url":"https://github.com/gHashTag/trinity-papers-ru/blob/main/README.md"},{"repo":"ghashtag/trinity-physics","url":"https://github.com/gHashTag/trinity-physics/blob/main/README.md"},{"repo":"ghashtag/trinity-railway","url":"https://github.com/gHashTag/trinity-railway/blob/main/README.md"},{"repo":"ghashtag/trinity-s3ai","url":"https://github.com/gHashTag/trinity-s3ai/blob/main/README.md"},{"repo":"ghashtag/trinity-sdk","url":"https://github.com/gHashTag/trinity-sdk/blob/main/README.md"},{"repo":"ghashtag/trinity-training","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md"},{"repo":"ghashtag/trios","url":"https://github.com/gHashTag/trios/blob/main/README.md"},{"repo":"ghashtag/trios-dwagent","url":"https://github.com/gHashTag/trios-dwagent/blob/main/README.md"},{"repo":"ghashtag/trios-mcp","url":"https://github.com/gHashTag/trios-mcp/blob/main/README.md"},{"repo":"ghashtag/trios-mcp-rag","url":"https://github.com/gHashTag/trios-mcp-rag/blob/main/README.md"},{"repo":"ghashtag/trios-railway","url":"https://github.com/gHashTag/trios-railway/blob/main/README.md"},{"repo":"ghashtag/trios-railway-mcp","url":"https://github.com/gHashTag/trios-railway-mcp/blob/master/README.md"},{"repo":"ghashtag/trios-trainer-igla","url":"https://github.com/gHashTag/trios-trainer-igla/blob/main/README.md"},{"repo":"ghashtag/tt-lang-t27","url":"https://github.com/gHashTag/tt-lang-t27/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-corona","url":"https://github.com/gHashTag/tt-trinity-corona/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-euler","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-gamma","url":"https://github.com/gHashTag/tt-trinity-gamma/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-gf16","url":"https://github.com/gHashTag/tt-trinity-gf16/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-holo","url":"https://github.com/gHashTag/tt-trinity-holo/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-max","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-mini","url":"https://github.com/gHashTag/tt-trinity-mini/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-phi","url":"https://github.com/gHashTag/tt-trinity-phi/blob/main/README.md"},{"repo":"ghashtag/zig-crypto-mining","url":"https://github.com/gHashTag/zig-crypto-mining/blob/main/README.md"},{"repo":"ghashtag/zig-half","url":"https://github.com/gHashTag/zig-half/blob/main/README.md"},{"repo":"ghashtag/zig-knowledge-graph","url":"https://github.com/gHashTag/zig-knowledge-graph/blob/main/README.md"},{"repo":"ghashtag/zig-physics","url":"https://github.com/gHashTag/zig-physics/blob/main/README.md"},{"repo":"ghashtag/browseros","url":"https://github.com/gHashTag/BrowserOS/blob/dev/README.md"},{"repo":"ghashtag/claim-audit-lab","url":"https://github.com/gHashTag/claim-audit-lab/blob/main/README.md"},{"repo":"ghashtag/gitbutler","url":"https://github.com/gHashTag/gitbutler/blob/master/README.md"},{"repo":"ghashtag/go-half","url":"https://github.com/gHashTag/go-half/blob/main/README.md"},{"repo":"ghashtag/golden-chain-international","url":"https://github.com/gHashTag/golden-chain-international/blob/main/README.md"},{"repo":"ghashtag/vibee-lang","url":"https://github.com/gHashTag/vibee-lang/blob/main/README.md"},{"repo":"ghashtag/zig-golden-float","url":"https://github.com/gHashTag/zig-golden-float/blob/main/README.md"},{"repo":"ghashtag/zig-half-rs","url":"https://github.com/gHashTag/zig-half-rs/blob/main/README.md"},{"repo":"ghashtag/zig-hdc","url":"https://github.com/gHashTag/zig-hdc/blob/main/README.md"}],"worldScan":{"at":"2026-09-12T04:07:23.198Z","spec":{"path":"public/t27/files/specs/catalog/discovery.t27","sha256":"f3c12d757eeb1ad37aacee0baa3c81e2bfe4905d0e799e3f778cae267324f043","module":"catalog_discovery","tests":5,"asserts":18},"owners":["gHashTag","dmitrii-f-t27"],"candidates":125,"founding":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/tt-trinity-corona"],"qualified":["dmitrii-f-t27/trinity-memory","ghashtag/trios","ghashtag/tt-trinity-euler","ghashtag/tt-trinity-gamma","ghashtag/tt-trinity-phi"],"codeSearch":{"status":"ok","repos":10},"skipped":{"fork":27,"founding":5,"mirror":1,"no-declarations":4,"no-t27-files":83,"qualified":5}},"discoveredWorlds":59,"gameRoster":"Only source repositories with actual .t27 bytes in the shared catalog. Other discoveries remain in the research report."},"worlds":[{"repo":"dmitrii-f-t27/trinity-memory","owner":"dmitrii-f-t27","description":"Trinity Memory: experimental ternary storage codecs, memory RTL, and device-interface research.","archived":false,"issuesEnabled":true,"strand":"cognition","evidence":[{"kind":"catalog","url":"https://github.com/dmitrii-f-t27/trinity-memory","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/dmitrii-f-t27/trinity-memory","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/dmitrii-f-t27/trinity-memory","detail":"Trinity Memory: experimental ternary storage codecs, memory RTL, and device-interface research."}],"migrationIntent":null,"specCount":37,"backlog":{"repo":"dmitrii-f-t27/trinity-memory","total":0,"loaded":0,"complete":true,"error":null,"observedAt":"2026-09-12T04:13:46.900Z"}},{"repo":"ghashtag/t27","owner":"gHashTag","description":"Spec-first ternary language: .t27 → synthesizable Verilog, bit-exact — the compiler behind Trinity's silicon","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"seed","url":"https://github.com/ghashtag/t27","detail":"Explicit QUEEN / T27 project world"},{"kind":"catalog","url":"https://github.com/ghashtag/t27","detail":"Source repository in the vendored .t27 catalog"},{"kind":"description","url":"https://github.com/ghashtag/t27","detail":"Spec-first ternary language: .t27 → synthesizable Verilog, bit-exact — the compiler behind Trinity's silicon"},{"kind":"readme","url":"https://github.com/gHashTag/GoldenFloats.jl/blob/main/README.md","detail":"Public link from ghashtag/goldenfloats.jl README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/paper3-methodology/blob/main/README.md","detail":"Public link from ghashtag/paper3-methodology README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tri-net/blob/main/README.md","detail":"Public link from ghashtag/tri-net README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-papers-ru/blob/main/README.md","detail":"Public link from ghashtag/trinity-papers-ru README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md","detail":"Public link from ghashtag/trinity-training README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios/blob/main/README.md","detail":"Public link from ghashtag/trios README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-trainer-igla/blob/main/README.md","detail":"Public link from ghashtag/trios-trainer-igla README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-lang-t27/blob/main/README.md","detail":"Public link from ghashtag/tt-lang-t27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-euler README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gamma/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gamma README; association, not verified integration"}],"migrationIntent":null,"specCount":575,"backlog":{"repo":"ghashtag/t27","total":584,"loaded":584,"complete":true,"error":null,"observedAt":"2026-09-12T04:14:03.351Z"}},{"repo":"ghashtag/tri-net","owner":"gHashTag","description":"TRI-NET — Starlink without satellites: a self-organizing wireless mesh for resilient civilian connectivity (mobile relays + fixed nodes). Trinity Project, Phase 0.","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/tri-net","detail":"Source repository in the vendored .t27 catalog"},{"kind":"description","url":"https://github.com/ghashtag/tri-net","detail":"TRI-NET — Starlink without satellites: a self-organizing wireless mesh for resilient civilian connectivity (mobile relays + fixed nodes). Trinity Project, Phase 0."}],"migrationIntent":null,"specCount":113,"backlog":{"repo":"ghashtag/tri-net","total":37,"loaded":37,"complete":true,"error":null,"observedAt":"2026-09-12T04:14:27.440Z"}},{"repo":"ghashtag/trinity","owner":"gHashTag","description":"The Trinity ternary compute stack — tri CLI · BitNet LLM · VSA · GF16","archived":false,"issuesEnabled":true,"strand":"cognition","evidence":[{"kind":"seed","url":"https://github.com/ghashtag/trinity","detail":"Explicit QUEEN / T27 project world"},{"kind":"catalog","url":"https://github.com/ghashtag/trinity","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/trinity","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/trinity","detail":"The Trinity ternary compute stack — tri CLI · BitNet LLM · VSA · GF16"},{"kind":"readme","url":"https://github.com/gHashTag/t27/blob/master/README.md","detail":"Public link from ghashtag/t27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tri-27/blob/main/README.md","detail":"Public link from ghashtag/tri-27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md","detail":"Public link from ghashtag/trinity-training README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-crypto-mining/blob/main/README.md","detail":"Public link from ghashtag/zig-crypto-mining README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-half/blob/main/README.md","detail":"Public link from ghashtag/zig-half README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-knowledge-graph/blob/main/README.md","detail":"Public link from ghashtag/zig-knowledge-graph README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/go-half/blob/main/README.md","detail":"Public link from ghashtag/go-half README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-golden-float/blob/main/README.md","detail":"Public link from ghashtag/zig-golden-float README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-half-rs/blob/main/README.md","detail":"Public link from ghashtag/zig-half-rs README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-hdc/blob/main/README.md","detail":"Public link from ghashtag/zig-hdc README; association, not verified integration"}],"migrationIntent":null,"specCount":3,"backlog":{"repo":"ghashtag/trinity","total":8,"loaded":8,"complete":true,"error":null,"observedAt":"2026-09-12T04:14:29.855Z"}},{"repo":"ghashtag/trinity-fpga","owner":"gHashTag","description":"Open-source FPGA flow for ternary ML — numeric format catalog, bit-exact on Artix-7, 25 patches merged upstream into openXC7. No Vivado","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/trinity-fpga","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/trinity-fpga","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md","detail":"Public link from ghashtag/trinity-training README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gf16/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gf16 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-holo/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-holo README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-max README; association, not verified integration"}],"migrationIntent":null,"specCount":64,"backlog":{"repo":"ghashtag/trinity-fpga","total":68,"loaded":68,"complete":true,"error":null,"observedAt":"2026-09-12T04:14:36.712Z"}},{"repo":"ghashtag/trios","owner":"gHashTag","description":"🔱 Trinity Git Orchestrator — MCP server for AI agents to control Git & GitButler via libgit2 + CLI","archived":false,"issuesEnabled":true,"strand":"cognition","evidence":[{"kind":"seed","url":"https://github.com/ghashtag/trios","detail":"Explicit QUEEN / T27 project world"},{"kind":"catalog","url":"https://github.com/ghashtag/trios","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/trios","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/trios","detail":"🔱 Trinity Git Orchestrator — MCP server for AI agents to control Git & GitButler via libgit2 + CLI"},{"kind":"readme","url":"https://github.com/gHashTag/trios-dwagent/blob/main/README.md","detail":"Public link from ghashtag/trios-dwagent README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-mcp-rag/blob/main/README.md","detail":"Public link from ghashtag/trios-mcp-rag README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-railway/blob/main/README.md","detail":"Public link from ghashtag/trios-railway README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-railway-mcp/blob/master/README.md","detail":"Public link from ghashtag/trios-railway-mcp README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-trainer-igla/blob/main/README.md","detail":"Public link from ghashtag/trios-trainer-igla README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-euler README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-max README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-phi/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-phi README; association, not verified integration"}],"migrationIntent":null,"specCount":58,"backlog":{"repo":"ghashtag/trios","total":197,"loaded":197,"complete":true,"error":null,"observedAt":"2026-09-12T04:14:51.581Z"}},{"repo":"ghashtag/tt-trinity-corona","owner":"gHashTag","description":"TRI-1 Corona -- Format Conformance Oracle design for GF180MCU (Tiny Tapeout TTGF26a target; not submitted, no die). Numeric-format ROM + reference RTL converters, verified on Artix-7. TRI-NET line; SSOT via gHashTag/t27.","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/tt-trinity-corona","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/tt-trinity-corona","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/tt-trinity-corona","detail":"TRI-1 Corona -- Format Conformance Oracle design for GF180MCU (Tiny Tapeout TTGF26a target; not submitted, no die). Numeric-format ROM + reference RTL converters, verified on Artix-7. TRI-NET line; SSOT via gHashTag/t27."},{"kind":"readme","url":"https://github.com/gHashTag/paper3-methodology/blob/main/README.md","detail":"Public link from ghashtag/paper3-methodology README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-mcp-rag/blob/main/README.md","detail":"Public link from ghashtag/trios-mcp-rag README; association, not verified integration"}],"migrationIntent":null,"specCount":5,"backlog":{"repo":"ghashtag/tt-trinity-corona","total":1,"loaded":1,"complete":true,"error":null,"observedAt":"2026-09-12T04:15:17.237Z"}},{"repo":"ghashtag/tt-trinity-gamma","owner":"gHashTag","description":"TRI-1 Gamma — Trinity γ-surface: 8×4 / 32-PE full mesh softmax / VSA gradient surface (Euler-Mascheroni). TTSKY26b · Apache-2.0 · ternary · SKY130A · Bazaar Green AI","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/tt-trinity-gamma","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/tt-trinity-gamma","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/tt-trinity-gamma","detail":"TRI-1 Gamma — Trinity γ-surface: 8×4 / 32-PE full mesh softmax / VSA gradient surface (Euler-Mascheroni). TTSKY26b · Apache-2.0 · ternary · SKY130A · Bazaar Green AI"},{"kind":"readme","url":"https://github.com/gHashTag/GoldenFloats.jl/blob/main/README.md","detail":"Public link from ghashtag/goldenfloats.jl README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/t27/blob/master/README.md","detail":"Public link from ghashtag/t27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tri-net/blob/main/README.md","detail":"Public link from ghashtag/tri-net README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-contracts/blob/main/README.md","detail":"Public link from ghashtag/trinity-contracts README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-euler README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gf16/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gf16 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-holo/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-holo README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-max README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-mini/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-mini README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-phi/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-phi README; association, not verified integration"}],"migrationIntent":null,"specCount":1,"backlog":{"repo":"ghashtag/tt-trinity-gamma","total":135,"loaded":135,"complete":true,"error":null,"observedAt":"2026-09-12T04:15:20.564Z"}}],"owners":[{"login":"dmitrii-f-t27","repos":["dmitrii-f-t27/trinity-memory"]},{"login":"gHashTag","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/tt-trinity-corona","ghashtag/tt-trinity-gamma"]}],"players":null,"presence":null,"issues":[{"key":"ghashtag/t27#3573","repo":"ghashtag/t27","number":3573,"title":"[spec][Trinity S11] Specify adapters to existing training, network and hardware projects","hits":[]},{"key":"ghashtag/t27#3572","repo":"ghashtag/t27","number":3572,"title":"[spec][Trinity S10] Specify Queen project views and snapshot/live evidence contracts","hits":[]},{"key":"ghashtag/t27#3571","repo":"ghashtag/t27","number":3571,"title":"[spec][Trinity S09] Reconcile Queen phases and specify task leases, retries and evidence","hits":[{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"reference","coverage":"unverified","score":2052,"reasons":[{"kind":"path","value":"specs/queen/lotus.t27"},{"kind":"terms","value":"queen, lotus, phases, policy, phase, set, cycle, transition"}]},{"specId":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/queen/task_analysis.t27"},{"kind":"terms","value":"queen, analysis, worker, priority, high, sort"}]},{"specId":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/queen/brain_summaries.t27"},{"kind":"terms","value":"queen, brain, summaries, phase, cycle"}]},{"specId":"115d7c0a183cd6796d30efbbb49c4f1d5f9088f546b41995c911aadb5a9100d5","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/brain/cognitive_loop.t27"},{"kind":"terms","value":"brain, cognitive, loop, phase"}]},{"specId":"8c8317e74a8b9562d87049e4b7826d4231c61236cbd2fa77cbf7e3bc539777ed","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/brain/bus.t27"},{"kind":"terms","value":"brain, bus"}]}]},{"key":"ghashtag/t27#3570","repo":"ghashtag/t27","number":3570,"title":"[spec][Trinity S08] Define durable sessions, memory and provenance using existing organism contracts","hits":[{"specId":"d4d622f9fd9fbec6a8d63641fd7c48218d43c41085fb8a71c94a520f5b33c186","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/brain/unified_state.t27"},{"kind":"terms","value":"brain, unified"}]}]},{"key":"ghashtag/t27#3569","repo":"ghashtag/t27","number":3569,"title":"[spec][Trinity S07] Specify the tri-api agent loop, tool protocol and permission boundary","hits":[{"specId":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/queen/task_analysis.t27"},{"kind":"terms","value":"queen, analysis"}]},{"specId":"fa88bd16c82f68d02449eadfa2607d629ed78c1610d2b88f387f62c1c396fd0b","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"compiler/runtime/runtime.t27"},{"kind":"terms","value":"compiler, runtime"}]},{"specId":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"tool, call, permission, timeout"}]},{"specId":"f7a2a59c6a856ec32ee04c6890f88e68bebc8bb32e57542e5d1eb797241b0c87","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"api, tool, response, timeout"}]}]},{"key":"ghashtag/t27#3568","repo":"ghashtag/t27","number":3568,"title":"[spec][Trinity S06] Specify Trinity CLI and MCP commands from one verified registry","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":2052,"reasons":[{"kind":"path","value":"compiler/runtime/commands.t27"},{"kind":"terms","value":"compiler, runtime, commands, validate, list, zig, registry, help"}]},{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"compiler, cli, commands, registry, hash, docs"}]},{"specId":"976ac6894ffb6e536f5271c3692387c8e9fff1b0ed6f280e1aa297c0c8b8340b","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"compiler, cli, commands, validate, list, parse"}]},{"specId":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"compiler, cli, commands, zig, parse"}]}]},{"key":"ghashtag/t27#3567","repo":"ghashtag/t27","number":3567,"title":"[spec][Trinity S05] Specify VM, TRI27 bytecode and host ABI behavior","hits":[{"specId":"e076ebecb0f5d0097aac6a9c888cd9736f3f4bede8b20f99eb114245a91c57be","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/isa/ternary_control_flow.t27"},{"kind":"terms","value":"isa, ternary, control, flow, call"}]},{"specId":"fa88bd16c82f68d02449eadfa2607d629ed78c1610d2b88f387f62c1c396fd0b","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"compiler/runtime/runtime.t27"},{"kind":"terms","value":"compiler, runtime, stack, execute"}]},{"specId":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/vm/jit_semantics.t27"},{"kind":"terms","value":"jit, semantics, compiler"}]},{"specId":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/isa/ternary_memory.t27"},{"kind":"terms","value":"isa, ternary, memory, stack"}]},{"specId":"1124bf874a7c7e17b3b9071c22bc495df4577b04bc7a8342786f7ff7373ec01e","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/isa/ternary_encoding.t27"},{"kind":"terms","value":"isa, ternary, encoding"}]}]},{"key":"ghashtag/t27#3566","repo":"ghashtag/t27","number":3566,"title":"[spec][Trinity S04] Define executable numeric, VSA and SDK compatibility contracts","hits":[{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"reference","coverage":"unverified","score":2064,"reasons":[{"kind":"path","value":"specs/vsa/sdk.t27"},{"kind":"terms","value":"vsa, sdk, zero, empty, labeled, dimension, set, bind"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, bind, unbind, inverse, similarity, bundle, zero, expected"}]},{"specId":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/vsa/packed_vsa.t27"},{"kind":"terms","value":"vsa, packed, bind, bundle, unbind, similarity"}]},{"specId":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/vsa/ops.t27"},{"kind":"terms","value":"vsa, ops, vectors, bind, unbind, similarity"}]},{"specId":"99fa8b738f00c108b3eb1e9445daab42093844115abeaf03d2e8289b090096fa","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"trinity-fpga/src/tri27/vsa_bind.t27"},{"kind":"terms","value":"tri27, vsa, bind"}]}]},{"key":"ghashtag/t27#3565","repo":"ghashtag/t27","number":3565,"title":"[spec][Trinity S03] Specify the build graph, pinned dependencies and generation provenance","hits":[{"specId":"df15f1fbd549cad6bc01b0599d4765ea3d8be69eb2759ef112ca8c94c101168d","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/pipeline/experience_save.t27"},{"kind":"terms","value":"pipeline, experience, save, pass"}]},{"specId":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/pipeline/e2e_test.t27"},{"kind":"terms","value":"pipeline, e2e, save"}]},{"specId":"2bda99182d7c0c06e381bf777dd46df1ff51c98688439cd700498ee1cbf5f192","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"graph, drift, claim, baseline, dependencies, hash, generate"}]}]},{"key":"ghashtag/t27#3564","repo":"ghashtag/t27","number":3564,"title":"[spec][Trinity S02] Prove the executable t27 subset and compiler capability contract","hits":[{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"reference","coverage":"unverified","score":2049,"reasons":[{"kind":"path","value":"compiler/runtime/validation.t27"},{"kind":"terms","value":"compiler, runtime, validation, validate, contract, generated, data, matrix"}]}]},{"key":"ghashtag/t27#3563","repo":"ghashtag/t27","number":3563,"title":"[spec][Trinity S01] Define the canonical project manifest, ownership and coverage baseline","hits":[]},{"key":"ghashtag/t27#3542","repo":"ghashtag/t27","number":3542,"title":"Implement sort and sort_range in specs/tri/sort/quick_sort.t27","hits":[{"specId":"c808a47fcf8e502278cdcbfedf0524f963649e08c07bcf05d79a5a241915f196","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/tri/sort/quick_sort.t27"},{"kind":"symbol","value":"sort_range:19"},{"kind":"terms","value":"sort, quick, range"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, target, sub, block, rule"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, zig, header, verilog, block, entry"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, block, section, case, kind, parse, argv, print"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, section, case, block, given, stmt, rule"}]}]},{"key":"ghashtag/t27#3541","repo":"ghashtag/t27","number":3541,"title":"Implement init, add_edge, traverse and deinit in specs/tri/graph/graph_bfs.t27","hits":[{"specId":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","relation":"reference","coverage":"unverified","score":2060,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"symbol","value":"BFSResult:18"},{"kind":"symbol","value":"add_edge:34"},{"kind":"terms","value":"graph, bfs, bfsresult, init, edge, traverse, deinit"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, kind, parse, allocator, path, list"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, path, list, zig, header, verilog"}]},{"specId":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"add_edge:29"},{"kind":"terms","value":"graph, zero, init, edge, undirected, degree, out, path"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, rule, expression"}]}]},{"key":"ghashtag/t27#3540","repo":"ghashtag/t27","number":3540,"title":"Implement softmax forward and backward in specs/ml/activation/softmax.t27","hits":[{"specId":"4dc4a3d792be4571b3ebb8e85dfcda02726d2908fc4552e05bea89c6f483ef8d","relation":"reference","coverage":"unverified","score":2042,"reasons":[{"kind":"path","value":"specs/ml/activation/softmax.t27"},{"kind":"symbol","value":"MIN_TEMP:14"},{"kind":"symbol","value":"SoftmaxConfig:20"},{"kind":"terms","value":"activation, softmax, zero, min, temp, forward, backward"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1054,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, table, signature, fns, set, float"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, runtime, commands, valid, kinds, path, zig, verilog"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, block, invariant, section, kind, parse, path, argv"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, constants, section, target, sub, invariant, block"}]}]},{"key":"ghashtag/t27#3539","repo":"ghashtag/t27","number":3539,"title":"Implement forward, forward_batch and derivative in specs/ml/activation/sigmoid_activation.t27","hits":[{"specId":"627a4a71ee5506649082cb4e58f086a9419c4bbe6fe9d6dd6fe18c8dcf10a51f","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/ml/activation/sigmoid_activation.t27"},{"kind":"symbol","value":"SigmoidConfig:13"},{"kind":"symbol","value":"forward_batch:27"},{"kind":"terms","value":"activation, sigmoid, forward, batch, derivative"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1051,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, section, kind, parse, allocator, argv"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1050,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, zig, branch, header, verilog, compute"}]},{"specId":"8ffcce3b336eb21cb1cfa914a39ca513acf89927a5fe45621b3e5ea95c203b14","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"forward_batch:33"},{"kind":"terms","value":"activation, leaky, relu, alpha, forward, batch, derivative"}]},{"specId":"108c86be1cffdb12c2a8bf7aed0bbc9beb9488044e64ea8eb53e5648ba4603cc","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"forward_batch:34"},{"kind":"terms","value":"activation, gelu, over, tanh, forward, batch, derivative"}]}]},{"key":"ghashtag/t27#3537","repo":"ghashtag/t27","number":3537,"title":"Implement the four stubbed functions in specs/tri/crypto/hex.t27","hits":[{"specId":"86e81f4b5cd5a08015f4d2df7b1d1fe992430bc04278851f0c66e0b050c2d8e2","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"specs/tri/crypto/hex.t27"},{"kind":"symbol","value":"lower_case:22"},{"kind":"symbol","value":"upper_case:27"},{"kind":"terms","value":"crypto, hex, lower, case, upper, encode, decode"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1051,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, section, case, kind, parse, allocator"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, section, mem, case, block, given, stmt"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, zig, header, verilog, block, map"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, target, sub, block, expression"}]}]},{"key":"ghashtag/t27#3535","repo":"ghashtag/t27","number":3535,"title":"Implement the four stubbed union-find functions in `TriDisjointSet` (specs/tri/graph/disjoint_set.t27)","hits":[{"specId":"95adae8177152fed3fdc7053855952b9e7c25df01b05220fef44791869fcb740","relation":"reference","coverage":"unverified","score":2051,"reasons":[{"kind":"path","value":"specs/tri/graph/disjoint_set.t27"},{"kind":"symbol","value":"DisjointSet:13"},{"kind":"terms","value":"graph, disjoint, set, init, find, union, connected"}]},{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart, read"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1069,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, table, signature, fns, init, mutable"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"block, section, kind, parse, allocator, path, argv, print"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, path, build, header, block, init"}]}]},{"key":"ghashtag/t27#3533","repo":"ghashtag/t27","number":3533,"title":"Implement the six stubbed functions in `TriPolynomial` (specs/tri/math/polynomial.t27)","hits":[{"specId":"a7ce1cc4ced86cc2bcf1f682238b76595ec6787bee6dcd2320985c19e801f284","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/tri/math/polynomial.t27"},{"kind":"terms","value":"math, polynomial, init, eval, multiply, derivative, deinit"}]},{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart, zero, read"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"std, block, section, kind, parse, allocator, argv, print"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, section, operand, mem, block, given, stmt"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, header, section, target, sub, block, expression, operand"}]}]},{"key":"ghashtag/t27#3532","repo":"ghashtag/t27","number":3532,"title":"Implement the seven stubbed path functions in `TriFilesystem` (specs/tri/io/filesystem.t27)","hits":[{"specId":"677da3e87cc72897a8bd881df8617b1346fb0c578ec5ef3e74c666f4faae713b","relation":"reference","coverage":"unverified","score":2053,"reasons":[{"kind":"path","value":"specs/tri/io/filesystem.t27"},{"kind":"symbol","value":"PathError:13"},{"kind":"symbol","value":"FileInfo:17"},{"kind":"symbol","value":"has_ext:50"},{"kind":"symbol","value":"is_absolute:55"},{"kind":"terms","value":"filesystem, path, info, join, basename, dirname, ext, absolute"}]},{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart, read"}]},{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"reference","coverage":"unverified","score":1073,"reasons":[{"kind":"symbol","value":"is_absolute:170"},{"kind":"terms","value":"paths, dir, path, separator, resolved, directory, absolute, invalid"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1060,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"std, block, invariant, section, case, kind, parse, allocator"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1054,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, path, ext, dir, header, block"}]}]},{"key":"ghashtag/t27#3529","repo":"ghashtag/t27","number":3529,"title":"Implement the five stubbed functions in specs/tri/collections/circular_buffer.t27","hits":[{"specId":"3873165f553501deacfb4814a0b56dede2f4158fed86e9002f3efe09782a946b","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"specs/tri/collections/circular_buffer.t27"},{"kind":"symbol","value":"CircularBuffer:13"},{"kind":"symbol","value":"is_empty:41"},{"kind":"terms","value":"collections, circular, buffer, init, write, read, empty, deinit"}]},{"specId":"a1c5f092447e90848b032f7772fcd3dcff2d11b17b195bf9ae3f8dadd22a488e","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/tri/collections/ring_buffer.t27"},{"kind":"symbol","value":"is_empty:40"},{"kind":"terms","value":"collections, ring, buffer, empty, full"}]},{"specId":"042c7754a3e80d71a7c659acc9e1e4d90c561bf3a3876bbcc34237e14421f3d0","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/tri/collections/priority_queue.t27"},{"kind":"symbol","value":"is_empty:44"},{"kind":"terms","value":"collections, priority, queue, init, empty, deinit"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, data, target, sub, block, rule"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, zig, header, verilog, data, block"}]}]},{"key":"ghashtag/t27#3528","repo":"ghashtag/t27","number":3528,"title":"Implement the six stubbed functions in specs/tri/collections/priority_queue.t27","hits":[{"specId":"042c7754a3e80d71a7c659acc9e1e4d90c561bf3a3876bbcc34237e14421f3d0","relation":"reference","coverage":"unverified","score":2046,"reasons":[{"kind":"path","value":"specs/tri/collections/priority_queue.t27"},{"kind":"symbol","value":"PriorityQueue:13"},{"kind":"symbol","value":"is_empty:44"},{"kind":"terms","value":"collections, priority, queue, init, enqueue, dequeue, peek, empty"}]},{"specId":"3873165f553501deacfb4814a0b56dede2f4158fed86e9002f3efe09782a946b","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/tri/collections/circular_buffer.t27"},{"kind":"symbol","value":"is_empty:41"},{"kind":"terms","value":"collections, circular, buffer, init, write, read, empty, deinit"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1061,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, stack, table, signature, fns, init"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, kind, parse, allocator, list, argv"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, list, zig, verilog, data, block"}]}]},{"key":"ghashtag/t27#3527","repo":"ghashtag/t27","number":3527,"title":"Implement `parse` and the three getters in specs/tri/utils/config.t27","hits":[{"specId":"389411f1e59621fb478846a79147aa6f5ec3cd01877c907316185aa573baa48d","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/tri/utils/config.t27"},{"kind":"symbol","value":"ConfigValue:13"},{"kind":"symbol","value":"ConfigEntry:20"},{"kind":"symbol","value":"get_string:40"},{"kind":"symbol","value":"get_number:45"},{"kind":"symbol","value":"get_bool:50"},{"kind":"terms","value":"utils, entry, parse"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1062,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, content, success, key, build, zig"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, kind, parse, allocator, args, content"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, rule, expression"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, mem, block, given, stmt, rule, table"}]}]},{"key":"ghashtag/t27#3526","repo":"ghashtag/t27","number":3526,"title":"Implement `encode` and `decode` in specs/tri/encoding/msgpack.t27","hits":[{"specId":"3ba9d974647c1fb5d985982db3c7e266834d0736d32ed4f4f50aa7af95d59df7","relation":"reference","coverage":"unverified","score":2040,"reasons":[{"kind":"path","value":"specs/tri/encoding/msgpack.t27"},{"kind":"symbol","value":"MsgPackType:13"},{"kind":"symbol","value":"MsgPackValue:17"},{"kind":"terms","value":"encoding, msgpack, msg, pack, encode, decode"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, table, signature, fns, set, float"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, key, zig, header, verilog, hash"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, emit, header, data, str, target, sub"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, kind, parse, allocator, argv, print"}]}]},{"key":"ghashtag/t27#3523","repo":"ghashtag/t27","number":3523,"title":"Implement the four stubbed functions in TriOption (specs/tri/collections/option.t27)","hits":[{"specId":"9fc79210c8bdb054a1f7b85f34696cb0b0ccd971edd126db0c6950073f68bacf","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/tri/collections/option.t27"},{"kind":"symbol","value":"unwrap_or:33"},{"kind":"symbol","value":"is_some:38"},{"kind":"terms","value":"collections, option, unwrap"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1060,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, decl, block, invariant, case, kind, parse, lint"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, build, zig, lint, header, verilog"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, invariant, block, expression"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, invariant, decl, case, block, given, assert"}]}]},{"key":"ghashtag/t27#3522","repo":"ghashtag/t27","number":3522,"title":"Implement the five stubbed functions in TriLogging (specs/tri/utils/logging.t27)","hits":[{"specId":"05a07af58a53b6ca13e294c62187fc537865c2d24b80bdd484b1fe79232361da","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/tri/utils/logging.t27"},{"kind":"symbol","value":"LogLevel:13"},{"kind":"symbol","value":"LogEntry:17"},{"kind":"symbol","value":"level_to_string:29"},{"kind":"symbol","value":"level_from_string:34"},{"kind":"symbol","value":"level_color:39"},{"kind":"symbol","value":"format_entry:44"},{"kind":"symbol","value":"should_log:49"},{"kind":"terms","value":"utils, logging, log, level, entry, color, format"}]},{"specId":"bca3e8deb428837bb49648c974bb103777ecfac6bb214210273bef4bf5d4733c","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/utils/logger.t27"},{"kind":"symbol","value":"LogEntry:17"},{"kind":"terms","value":"utils, logger, level, log, entry, field"}]},{"specId":"2b84c9b64ceca23a2795f512e21e12510357056268de9b8e1cd013ca89682fa1","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/tri/utils/terminal.t27"},{"kind":"terms","value":"utils, terminal, color, style, reset"}]},{"specId":"33860937a826bbbc5b95b88015242182732ad3577456d9c4b34fc87834f64c77","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/tri/utils/color.t27"},{"kind":"terms","value":"utils, color, space"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1074,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, ast, decl, block, invariant, case, kind"}]}]},{"key":"ghashtag/t27#3521","repo":"ghashtag/t27","number":3521,"title":"Implement the four stubbed functions in TriText (specs/tri/utils/text.t27)","hits":[{"specId":"b5714e6f7e9a0a68a29968ab50f4855843bdf9b856ab301bc3c402c9f900a62a","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/tri/utils/text.t27"},{"kind":"symbol","value":"TextMetrics:13"},{"kind":"symbol","value":"word_wrap:24"},{"kind":"symbol","value":"count_words:29"},{"kind":"symbol","value":"count_lines:34"},{"kind":"terms","value":"utils, text, metrics, word, wrap, words, indent"}]},{"specId":"2b84c9b64ceca23a2795f512e21e12510357056268de9b8e1cd013ca89682fa1","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/tri/utils/terminal.t27"},{"kind":"terms","value":"utils, terminal, style"}]},{"specId":"f1b5395243a8bbbe1ba4ecc9c3bfc74a68bf7cb43c68c03c71b6f30c253b65b0","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/tri/utils/utf8.t27"},{"kind":"terms","value":"utils, utf8"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, rule, expression"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, case, kind, parse, allocator"}]}]},{"key":"ghashtag/t27#3520","repo":"ghashtag/t27","number":3520,"title":"Implement the eight stubbed functions in TriBytes (specs/tri/utils/bytes.t27)","hits":[{"specId":"954e3d675f8e00e616cd9edd2b3e811cbf0b32671e1f86a9e4849a276e7fd2b2","relation":"reference","coverage":"unverified","score":2045,"reasons":[{"kind":"path","value":"specs/tri/utils/bytes.t27"},{"kind":"symbol","value":"from_slice:28"},{"kind":"symbol","value":"index_of:53"},{"kind":"terms","value":"utils, bytes, empty, slice, clone, equals, concat, index"}]},{"specId":"b5714e6f7e9a0a68a29968ab50f4855843bdf9b856ab301bc3c402c9f900a62a","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/tri/utils/text.t27"},{"kind":"terms","value":"utils, text, metrics, wrap, words"}]},{"specId":"f1b5395243a8bbbe1ba4ecc9c3bfc74a68bf7cb43c68c03c71b6f30c253b65b0","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/tri/utils/utf8.t27"},{"kind":"terms","value":"utils, utf8"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1060,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, case, kind, parse, allocator"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, data, target, sub, block, rule"}]}]},{"key":"ghashtag/t27#3519","repo":"ghashtag/t27","number":3519,"title":"Implement the six stubbed functions in TriStatistics (specs/tri/math/statistics.t27)","hits":[{"specId":"17af82800242d7f0c8de113d3fa990c8fdfb68be93305a676a6332c592c80478","relation":"reference","coverage":"unverified","score":2061,"reasons":[{"kind":"path","value":"specs/tri/math/statistics.t27"},{"kind":"symbol","value":"std_dev:24"},{"kind":"terms","value":"math, statistics, mean, variance, std, dev, median, percentile"}]},{"specId":"fc282db3e37df05cc48ed354ff1514c1f4be6ba78659a0d0d53fa384d79e763d","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/tri/math/measurement.t27"},{"kind":"terms","value":"math, measurement"}]},{"specId":"179da434e72eed1ef8d4afcff8a2d49d9141e6ac4fb20183ec8e35e14b50a3c7","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/tri/math/probability.t27"},{"kind":"terms","value":"math, probability"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, case, kind, parse, allocator"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, expression, int"}]}]},{"key":"ghashtag/t27#3518","repo":"ghashtag/t27","number":3518,"title":"Implement the nine comment-only functions in specs/ml/transformer/mha_block.t27 (MHABlock)","hits":[{"specId":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","relation":"reference","coverage":"unverified","score":2103,"reasons":[{"kind":"path","value":"specs/ml/transformer/mha_block.t27"},{"kind":"symbol","value":"PHI_RESIDUAL_SCALE:19"},{"kind":"symbol","value":"BlockConfig:25"},{"kind":"symbol","value":"BlockState:35"},{"kind":"symbol","value":"BlockForwardResult:43"},{"kind":"symbol","value":"BlockGradients:49"},{"kind":"symbol","value":"ResidualConnection:55"},{"kind":"symbol","value":"forward_with_post_ln:92"},{"kind":"symbol","value":"apply_residual_connection:106"},{"kind":"symbol","value":"phi_scaled_residual:112"},{"kind":"symbol","value":"get_parameter_count:133"},{"kind":"symbol","value":"get_flops:140"},{"kind":"symbol","value":"create_residual_connection:149"},{"kind":"terms","value":"transformer, mha, block, mhablock, phi, dropout, residual, scale"}]},{"specId":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","relation":"reference","coverage":"unverified","score":2051,"reasons":[{"kind":"path","value":"specs/ml/transformer/norm.t27"},{"kind":"terms","value":"transformer, norm, layer, phi, start, end, gradients, forward"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, phi, table, bit, components, discarded, sub"}]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"reference","coverage":"unverified","score":1067,"reasons":[{"kind":"symbol","value":"NUM_HEADS:22"},{"kind":"terms","value":"num, heads, head, len, norm, attn, ffn, residual"}]},{"specId":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","relation":"reference","coverage":"unverified","score":1066,"reasons":[{"kind":"symbol","value":"get_parameter_count:204"},{"kind":"terms","value":"transformer, multi, head, attn, attention, phi, dropout, scale"}]}]},{"key":"ghashtag/t27#3517","repo":"ghashtag/t27","number":3517,"title":"Implement the six stubbed functions in specs/tri/collections/deque.t27 (TriDeque)","hits":[{"specId":"b3f9fa31faa278b582572a364188ee26094f06493002e8df7ad3fd3bb18847e0","relation":"reference","coverage":"unverified","score":2044,"reasons":[{"kind":"path","value":"specs/tri/collections/deque.t27"},{"kind":"symbol","value":"push_front:31"},{"kind":"symbol","value":"push_back:36"},{"kind":"symbol","value":"pop_front:41"},{"kind":"symbol","value":"pop_back:46"},{"kind":"terms","value":"collections, deque, init, push, front, back, pop, deinit"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, table, discarded, sub, floor, one, double"}]},{"specId":"a1c5f092447e90848b032f7772fcd3dcff2d11b17b195bf9ae3f8dadd22a488e","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/tri/collections/ring_buffer.t27"},{"kind":"terms","value":"collections, ring, buffer, push, pop, empty, full"}]},{"specId":"83ce36c41a0e28ccfb5a1fec555366bafd6a4a2307bbd82ba498bdd2d8b4e174","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/tri/collections/queue.t27"},{"kind":"terms","value":"collections, queue, empty"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, kind, parse, allocator, argv, push"}]}]},{"key":"ghashtag/t27#3516","repo":"ghashtag/t27","number":3516,"title":"Implement the six stubbed functions in specs/tri/crypto/base64.t27 (TriBase64)","hits":[{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2060,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, table, bit, encode, discarded, decode, sub"}]},{"specId":"d67ef86926024a8b8a1c3ee1188f8aded413c5e3094435a5e9965ab90a718726","relation":"reference","coverage":"unverified","score":2053,"reasons":[{"kind":"path","value":"specs/tri/crypto/base64.t27"},{"kind":"symbol","value":"url_safe:28"},{"kind":"symbol","value":"encoded_length:43"},{"kind":"symbol","value":"decoded_length:48"},{"kind":"terms","value":"crypto, base64, standard, url, safe, encode, decode, encoded"}]},{"specId":"1aece14713159e5b0d3b6447529a3da6672a0ae57cff3ec0c4a4af021188fa31","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/tri/crypto/base32.t27"},{"kind":"terms","value":"crypto, base32, standard, encode, decode"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1050,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, kind, parse, allocator, argv, print"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, valid, kinds, zig, header, verilog, block"}]}]},{"key":"ghashtag/t27#3514","repo":"ghashtag/t27","number":3514,"title":"Implement the ten comment-only functions in specs/git/status.t27 (GitStatus)","hits":[{"specId":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","relation":"reference","coverage":"unverified","score":2073,"reasons":[{"kind":"path","value":"specs/git/status.t27"},{"kind":"symbol","value":"is_clean:19"},{"kind":"symbol","value":"status_short:24"},{"kind":"symbol","value":"status_long:29"},{"kind":"symbol","value":"status_ignored:34"},{"kind":"symbol","value":"filter_by_status:43"},{"kind":"symbol","value":"filter_by_pattern:48"},{"kind":"symbol","value":"filter_added:53"},{"kind":"symbol","value":"filter_deleted:58"},{"kind":"symbol","value":"filter_modified:63"},{"kind":"symbol","value":"count_by_kind:72"},{"kind":"symbol","value":"get_changed_files:77"},{"kind":"symbol","value":"has_changes:82"},{"kind":"terms","value":"git, status, clean, short, long, ignored, filter, pattern"}]},{"specId":"089f57bd6ac32f7823bc8a06be007ddc27710b276853f6d0e9d3de1519c87d79","relation":"reference","coverage":"unverified","score":2037,"reasons":[{"kind":"path","value":"specs/git/diff.t27"},{"kind":"terms","value":"git, diff, cached, changed, status, find, parse"}]},{"specId":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/git/operations.t27"},{"kind":"terms","value":"git, operations, head, parse, list, delete"}]},{"specId":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/git/schema.t27"},{"kind":"symbol","value":"GitError:70"},{"kind":"symbol","value":"parse_kind:104"},{"kind":"terms","value":"git, schema, kind, item, parse, failure"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, block, kind, parse, git, list, status, argv"}]}]},{"key":"ghashtag/t27#3513","repo":"ghashtag/t27","number":3513,"title":"Implement the ten stubbed functions in specs/tri/collections/bitmap.t27 (TriBitmap)","hits":[{"specId":"72501df79dc2adb19c9b4c5515c42792f2dbdcb6ade527167238214ebc04ca3a","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/tri/collections/bitmap.t27"},{"kind":"symbol","value":"set_all:48"},{"kind":"symbol","value":"clear_all:53"},{"kind":"symbol","value":"find_first:63"},{"kind":"symbol","value":"find_last:68"},{"kind":"terms","value":"collections, bitmap, init, set, clear, flip, find"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, zero, table, bit, bits, discarded, sub"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, kind, parse, allocator, argv, print"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, zig, header, verilog, block, init"}]},{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"TestBlock:267"},{"kind":"terms","value":"runner, block, gate, reports, print, kind, read, parse"}]}]},{"key":"ghashtag/t27#3512","repo":"ghashtag/t27","number":3512,"title":"Implement build_prefix and search in specs/tri/search/knuth_morris_pratt.t27","hits":[{"specId":"286565825bcb25ec0c02233431ad90a5ce8ddfad30cf731df653bd1499208abd","relation":"reference","coverage":"unverified","score":2079,"reasons":[{"kind":"path","value":"specs/tri/search/knuth_morris_pratt.t27"},{"kind":"symbol","value":"KMPPrefix:13"},{"kind":"symbol","value":"build_prefix:23"},{"kind":"terms","value":"search, knuth, morris, pratt, kmp, kmpprefix, build, prefix"}]},{"specId":"789bbb1afcb0ff7eaa3b941eec6a51786e7b5e9ac34615e2bae3b458bf4464b1","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/search/boyer_moore.t27"},{"kind":"terms","value":"search, boyer, moore, build"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, search, len, non, bound, expected"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, done, read, write, set"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, build, zig, header, verilog, block"}]}]},{"key":"ghashtag/t27#3511","repo":"ghashtag/t27","number":3511,"title":"Implement parse_ip, is_localhost and is_valid_port in specs/tri/net/net.t27","hits":[{"specId":"64142c17ce8d43e97ce64a2438f7deeb45a64f2a35afeb61b6a22b621e47a92c","relation":"reference","coverage":"unverified","score":2048,"reasons":[{"kind":"path","value":"specs/tri/net/net.t27"},{"kind":"symbol","value":"IpAddress:13"},{"kind":"symbol","value":"SocketAddr:18"},{"kind":"symbol","value":"parse_ip:28"},{"kind":"symbol","value":"is_localhost:33"},{"kind":"symbol","value":"is_valid_port:38"},{"kind":"terms","value":"address, socket, addr, parse, localhost, valid, port"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, len, dot, non, zero, bound, expected"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, zero, dot, done, read, write, set"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, decl, block, section, case, kind, parse, argv"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, target, sub, block, expression"}]}]},{"key":"ghashtag/t27#3510","repo":"ghashtag/t27","number":3510,"title":"Implement parse, compare and next in specs/tri/utils/version.t27","hits":[{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, zero, dot, done, read, write, set"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, len, dot, non, zero, expected"}]},{"specId":"3518d3bee197a739317d20af4d64f64893378b2dbf1b2ad4381d935c7d29e443","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/tri/utils/version.t27"},{"kind":"terms","value":"utils, parse, compare"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1063,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, section, case, kind, parse"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, str, target, sub, block"}]}]},{"key":"ghashtag/t27#3509","repo":"ghashtag/t27","number":3509,"title":"Implement the four stubbed functions in specs/tri/utils/utf8.t27","hits":[{"specId":"f1b5395243a8bbbe1ba4ecc9c3bfc74a68bf7cb43c68c03c71b6f30c253b65b0","relation":"reference","coverage":"unverified","score":2044,"reasons":[{"kind":"path","value":"specs/tri/utils/utf8.t27"},{"kind":"symbol","value":"count_codepoints:37"},{"kind":"terms","value":"utils, utf8, codepoint, rune, decode, encode, codepoints, validate"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, len, non, encode, sequence, expected, encoded"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, done, encoded, read, write, set"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, section, kind, parse, allocator"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, str, target, sub, block"}]}]},{"key":"ghashtag/t27#3507","repo":"ghashtag/t27","number":3507,"title":"Implement the eight stubbed functions in specs/tri/collections/bitvector.t27","hits":[{"specId":"573be7de419ab7d4c873367a65bd56f3da10c48b445cb4a6a5e046972b00a392","relation":"reference","coverage":"unverified","score":2052,"reasons":[{"kind":"path","value":"specs/tri/collections/bitvector.t27"},{"kind":"symbol","value":"BitVector:13"},{"kind":"symbol","value":"with_capacity:28"},{"kind":"terms","value":"collections, bitvector, bit, vector, empty, capacity, push, pop"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, zero, width, bits, done, bit, mask, idx"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1055,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, section, kind, parse, allocator"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, section, target, sub, block, expression, append"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, kinds, zig, verilog, block, put, strip"}]}]},{"key":"ghashtag/t27#3474","repo":"ghashtag/t27","number":3474,"title":"gen-c: `null` has no C spelling -- 68 errors, and the decision depends on what `?T` lowers to","hits":[{"specId":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ContentType:35"},{"kind":"symbol","value":"FileContent:89"},{"kind":"terms","value":"content, text"}]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"ContentType:64"},{"kind":"terms","value":"content"}]}]},{"key":"ghashtag/t27#3473","repo":"ghashtag/t27","number":3473,"title":"gen-c: a module-qualified enum member (`lexer::TokenKind::RBrace`) is still refused -- 477 in the specs","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"NodeKind:19"},{"kind":"terms","value":"parser, node, kind, expr, call, literal, enum"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"lexer, token, kind, identifier"}]},{"specId":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"dot_product:180"},{"kind":"terms","value":"vsa, ops, dot, product"}]},{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"dot_product:510"},{"kind":"terms","value":"dot, product"}]},{"specId":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"parser, token, node, standard, identifier, lexer, kind"}]}]},{"key":"ghashtag/t27#3472","repo":"ghashtag/t27","number":3472,"title":"Zig-бэкенд: сигнатуры без тела делают вывод некомпилируемым (0 из 9 спек)","hits":[{"specId":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"gf16_to_f32:61"},{"kind":"terms","value":"gf16, f32, format, recovered"}]},{"specId":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"gf16_to_f32:61"},{"kind":"terms","value":"gf16, f32, format, recovered"}]}]},{"key":"ghashtag/t27#3464","repo":"ghashtag/t27","number":3464,"title":"gen-c: 5912 errors are symbols referenced and never declared, and cast_i8 alone is 210","hits":[{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"approximately_equal:238"},{"kind":"terms","value":"measured, integer, approximately, equal"}]}]},{"key":"ghashtag/t27#3445","repo":"ghashtag/t27","number":3445,"title":"gen-c: a function returning a fixed array returns the address of a stack local","hits":[{"specId":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"terms","value":"cloud, railway, deploy, var"}]},{"specId":"76a39f4c7d0e78833ccaedd7533f74b68e8350453f0198b2c1cf370138a5419e","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/server/mdns.t27"},{"kind":"terms","value":"mdns, base, local"}]},{"specId":"aa68e993cc9415a7df4fda9e3366a8cb1c8de9e0f35f2b499f550f2bf45b2936","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/compiler/mod_structure.t27"},{"kind":"terms","value":"compiler, mod, structure, base"}]},{"specId":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/base/ternary_encoding.t27"},{"kind":"terms","value":"base, ternary, encoding, zero, info"}]},{"specId":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/memory/formula_embed.t27"},{"kind":"terms","value":"memory, formula, embed, base"}]}]},{"key":"ghashtag/t27#3443","repo":"ghashtag/t27","number":3443,"title":"gen-c: two latent forms that emit t27 syntax into a C header","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"gen, zig, verilog, rust, emit, backends"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"verilog, width, emit, header, bits, int, digit"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"gen, compile, zig, header, verilog, backend"}]},{"specId":"596d8c5a43c433eebb1c5df08d34b92e03c9697a4ac2f9343c1457246028593b","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"gen, emit, header"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"zig, emit, header, int"}]}]},{"key":"ghashtag/t27#3440","repo":"ghashtag/t27","number":3440,"title":"Spec Guards has been red on master since #3435, and two PRs merged past it","hits":[]},{"key":"ghashtag/t27#3404","repo":"ghashtag/t27","number":3404,"title":"The &mut/& split makes a same-array mem_copy unrepresentable in Rust, where C expresses it","hits":[{"specId":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","relation":"reference","coverage":"unverified","score":2046,"reasons":[{"kind":"path","value":"specs/isa/ternary_memory.t27"},{"kind":"symbol","value":"mem_copy:227"},{"kind":"terms","value":"isa, ternary, memory, zero, mem, addr, word, read"}]},{"specId":"06e69666f7c575b3fbe4f5530f2560fd46ce903a1a3af6dd62e375aaa4f38953","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"TernaryWord:80"},{"kind":"terms","value":"ternary, memory, zero, word, free, read, index"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TernaryWord:53"},{"kind":"terms","value":"zero, one, word, ternary, dst"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"TernaryWord:17"},{"kind":"terms","value":"ternary, word, memory"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"memory, handle, read, copy, array"}]}]},{"key":"ghashtag/t27#3399","repo":"ghashtag/t27","number":3399,"title":"ci-gates SKILL.md: sections 546, 547 and 548 each appear twice on master","hits":[]},{"key":"ghashtag/t27#3386","repo":"ghashtag/t27","number":3386,"title":"cli-tri cannot be required until its context is unique and unfiltered","hits":[]},{"key":"ghashtag/t27#3377","repo":"ghashtag/t27","number":3377,"title":"A field that names its own struct needs a Box, and three tree specs are one repair from compiling","hits":[{"specId":"1778325067543a3ddd5b236906ea2441d1a7b278bd5c9833aa72c55ba6599497","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"OctNode:22"},{"kind":"terms","value":"octree, oct, node, insert"}]},{"specId":"4a45d372cba73c1dabe74e1bf33ff88abd82d4b528312bd2cd1ec5aa12561196","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"KDNode:13"},{"kind":"terms","value":"tree, kdnode"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"node, field, struct, array"}]}]},{"key":"ghashtag/t27#3371","repo":"ghashtag/t27","number":3371,"title":"Two more tools advise against a decision recorded where they cannot read it","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"decision, push, read"}]}]},{"key":"ghashtag/t27#3370","repo":"ghashtag/t27","number":3370,"title":"Corpus blockers, each priced in specs: 10 of 229 failures, not the corpus","hits":[{"specId":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"ProviderType:49"},{"kind":"terms","value":"schema, provider, api, language, base, lsp"}]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"ProviderType:50"},{"kind":"symbol","value":"MessageRole:56"},{"kind":"symbol","value":"ContentType:64"},{"kind":"terms","value":"provider, schema, role, content, response, base"}]},{"specId":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"HyperVector:58"},{"kind":"terms","value":"forward, pass, role, single, build"}]},{"specId":"f7a2a59c6a856ec32ee04c6890f88e68bebc8bb32e57542e5d1eb797241b0c87","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"MessageRole:14"},{"kind":"terms","value":"api, role, content, response, base"}]},{"specId":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"TriType:32"},{"kind":"terms","value":"field, write, case"}]}]},{"key":"ghashtag/t27#3368","repo":"ghashtag/t27","number":3368,"title":"LOOP-RULES R12 denies a spelling the gate accepts, and points authors at a frozen archive","hits":[]},{"key":"ghashtag/t27#3366","repo":"ghashtag/t27","number":3366,"title":"tri reseal check fails on every clean checkout, and obeying it deletes the seal path token","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, path, status, build, skill, branch, seal, hash"}]}]},{"key":"ghashtag/t27#3364","repo":"ghashtag/t27","number":3364,"title":"A function type is not a value: const X = fn(A) R emits const X: i32 = fn ( A ) R","hits":[{"specId":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/server/http.t27"},{"kind":"symbol","value":"MiddlewareContext:104"},{"kind":"terms","value":"http, found, middleware"}]},{"specId":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"TaskResult:74"},{"kind":"terms","value":"generate, resolve, int"}]},{"specId":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"TaskResult:125"}]}]},{"key":"ghashtag/t27#3337","repo":"ghashtag/t27","number":3337,"title":"Five more confirmed defects in the required merge contexts","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"pos_inf:2418"},{"kind":"symbol","value":"neg_inf:2419"},{"kind":"terms","value":"gf16, zero, pos, neg, inf, bit, decode, ratio"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"pos_inf:2418"},{"kind":"symbol","value":"neg_inf:2419"},{"kind":"terms","value":"gf16, zero, pos, neg, inf, bit, decode, ratio"}]},{"specId":"954e3d675f8e00e616cd9edd2b3e811cbf0b32671e1f86a9e4849a276e7fd2b2","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"from_slice:28"},{"kind":"terms","value":"bytes, empty, slice"}]}]},{"key":"ghashtag/t27#3333","repo":"ghashtag/t27","number":3333,"title":"int, uint, float and double reach rustc verbatim: the Rust mapper never learned the generic spellings","hits":[{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"compiler, emission, int, str, gf16, generic"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"rust, float, array"}]}]},{"key":"ghashtag/t27#3331","repo":"ghashtag/t27","number":3331,"title":"Two sessions of the loop took the same three tasks, and the obvious lock does not lock","hits":[]},{"key":"ghashtag/t27#3328","repo":"ghashtag/t27","number":3328,"title":"coq: the Trinity proofs do not compile — CorePhi.v:14 uses a lemma that does not exist","hits":[]},{"key":"ghashtag/t27#3316","repo":"ghashtag/t27","number":3316,"title":"Every workflow red on master, diagnosed: 5 fixable, 4 leave, 1 wrong trigger, 0 to delete","hits":[{"specId":"cd5f3f125dd528d1cf0d5c2d7f52f91b692421603aff1288625d3476e63d409f","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"red, delete"}]}]},{"key":"ghashtag/t27#3312","repo":"ghashtag/t27","number":3312,"title":"Generated Verilog synthesises to zero logic: 0 LUTs, 0 FFs across 361 specs","hits":[{"specId":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"chips/euler/specs/fpga/int4.t27"},{"kind":"terms","value":"chips, euler, int4"}]},{"specId":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"zero, empty, total, luts, ffs"}]}]},{"key":"ghashtag/t27#3283","repo":"ghashtag/t27","number":3283,"title":"verilog_hir: two packed structs in one module collide on an empty signal name","hits":[{"specId":"21484c1e4832c65088a8b16411adcd3cee75140dd0e98c49beb09f13acbf10dd","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/tutorial/06_structs_enums_switch.t27"},{"kind":"terms","value":"tutorial, structs, enums, switch, zero, empty"}]},{"specId":"1a85a9dca026c580cc5c892fb15f566c34f56077b1137b3aa84ffbbf8976f492","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"chips/euler/specs/fpga/gf16_to_fp16.t27"},{"kind":"terms","value":"chips, euler, gf16, fp16, field, zero"}]},{"specId":"29d997ada23e0a8aac40eced1499f42b697353ff8747db8b0d9a87ba5159b783","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"chips/euler/specs/fpga/gf32_to_fp32.t27"},{"kind":"terms","value":"chips, euler, gf32, fp32, field, zero"}]},{"specId":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"hir, signals, signal, empty"}]},{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"verilog, emit, gf16, hir"}]}]},{"key":"ghashtag/t27#3276","repo":"ghashtag/t27","number":3276,"title":"Add a hello_world teaching spec, and scan the whole repo not just specs/","hits":[{"specId":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/demos/hello_world.t27"},{"kind":"terms","value":"demos, hello, world"}]},{"specId":"9e53c7a141c31266e0b275bea41a46eaff276426ff85aadf52524de77c69ecf8","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"tests/ring0_trivial.t27"},{"kind":"terms","value":"ring0, trivial, one"}]},{"specId":"2e87c761814045a402179280a8406e4cffaec0795497a4a7e042d973bf2660f0","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"compiler/parser/parser.t27"},{"kind":"terms","value":"compiler, parser, tokens"}]},{"specId":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/demos/simple_test.t27"},{"kind":"terms","value":"demos, simple"}]}]},{"key":"ghashtag/t27#3272","repo":"ghashtag/t27","number":3272,"title":"Expose the compiler to the browser via a WebAssembly bridge","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, start, parse"}]},{"specId":"4b34351e1bafe5e6cc26db176be01be8db82425a9b4200d04ff2beaeed78df9b","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/api/c_api_contract.t27"},{"kind":"terms","value":"api, contract"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"compiler, codegen, verilog, assembly, case, backends"}]},{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"compiler, codegen, verilog, bridge, hir"}]}]},{"key":"ghashtag/t27#3270","repo":"ghashtag/t27","number":3270,"title":"A streak of failures is not one incident: cli-tri's cause changed and nobody saw it for three passes","hits":[]},{"key":"ghashtag/t27#3265","repo":"ghashtag/t27","number":3265,"title":"Two readers of SKILL.md disagreed by three, and cli-tri has been red on master for six runs","hits":[{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"cli, skill"}]}]},{"key":"ghashtag/t27#3255","repo":"ghashtag/t27","number":3255,"title":"mutate: string content offered as constants, and a brace inside a fixture ends the test module","hits":[]},{"key":"ghashtag/t27#3253","repo":"ghashtag/t27","number":3253,"title":"Audit of pass 106's own numbers: 6 of 19 were wrong","hits":[]},{"key":"ghashtag/t27#3248","repo":"ghashtag/t27","number":3248,"title":"Two merge-facing readers treat 'no checks have run' as 'nothing is failing'","hits":[{"specId":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"checks, pass, fail, array, failed, failing"}]},{"specId":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"checks, pass, fail, array, failed, failing"}]}]},{"key":"ghashtag/t27#3245","repo":"ghashtag/t27","number":3245,"title":"Two compiler.rs tests assert absence over a region that can be empty by construction","hits":[{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"on_clock:170"},{"kind":"terms","value":"begin, end, clock"}]},{"specId":"9dc4e475f38f849170b46b46c0a72486485d13a37e4a53150b6dd395b4252a6a","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"on_clock:27"},{"kind":"terms","value":"emitter, clock"}]},{"specId":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"on_clock:38"},{"kind":"terms","value":"capacity, clock"}]},{"specId":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"on_clock:13"},{"kind":"terms","value":"clock"}]},{"specId":"9e7f3ab64dc081da46232c63a023d2d392652bf57c2720c46fe02b564a0f1f37","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"on_clock:16"},{"kind":"terms","value":"clock"}]}]},{"key":"ghashtag/t27#3243","repo":"ghashtag/t27","number":3243,"title":"An inline # comment on a struct field deletes the next field, in every backend, and both stages accept it","hits":[{"specId":"ce38bc42563751d3420b1df00e7733efe1d350364c12f5d9d6992d38c77ff6d1","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/tri/pipeline/pipeline_parallel.t27"},{"kind":"symbol","value":"JobStatus:13"},{"kind":"terms","value":"pipeline, parallel, job, status"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"field, backend, fields, parse, header, status, accepts"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"parser, parse, field, struct, else"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"field, pipeline, stages, accept"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"field, phi, status, stages, one"}]}]},{"key":"ghashtag/t27#3237","repo":"ghashtag/t27","number":3237,"title":"The Admitted gate reads 2 of the 9 files the build compiles","hits":[]},{"key":"ghashtag/t27#3236","repo":"ghashtag/t27","number":3236,"title":"SKILL.md is the NOW.md problem again: 182 of 293 commits touch one 865 KB file, and every concurrent PR conflicts on it","hits":[]},{"key":"ghashtag/t27#3232","repo":"ghashtag/t27","number":3232,"title":"Two commands write a reason for every undecided case and discard it into one number","hits":[{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"two, second, one"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"one, carry, two"}]},{"specId":"976ac6894ffb6e536f5271c3692387c8e9fff1b0ed6f280e1aa297c0c8b8340b","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, commands, case"}]},{"specId":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, commands, case"}]},{"specId":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"field, write, case"}]}]},{"key":"ghashtag/t27#3229","repo":"ghashtag/t27","number":3229,"title":"types redef: a six-class tally printed five classes, and rustc had said so on every build","hits":[{"specId":"4ec184e2b90d849d42a837ef1be0c6f19e55e21f94793b6dd288a84dd0a89877","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/file/operations.t27"},{"kind":"terms","value":"operations, read, range, delete, list, path"}]}]},{"key":"ghashtag/t27#3225","repo":"ghashtag/t27","number":3225,"title":"Fourteen specs parse, typecheck, and emit a field with no type — and a literal in type position is accepted","hits":[{"specId":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"MAX_ENTRIES:7"},{"kind":"terms","value":"rust, entries"}]},{"specId":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"MAX_ENTRIES:7"},{"kind":"terms","value":"entries"}]},{"specId":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"ExitCode:17"},{"kind":"terms","value":"exit"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"compiler, parser, kind, parse, field, call, struct, literal"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"compiler, integer, literal, typecheck"}]}]},{"key":"ghashtag/t27#3195","repo":"ghashtag/t27","number":3195,"title":"Seven more labels that name a population the code does not count (fan-out over the whole tri CLI)","hits":[]},{"key":"ghashtag/t27#3191","repo":"ghashtag/t27","number":3191,"title":"50 red workflows in trinity-fpga are 11 events, 3 of them live; 39 are one July afternoon","hits":[]},{"key":"ghashtag/t27#3188","repo":"ghashtag/t27","number":3188,"title":"Stop tracking Coq .aux/.glob build byproducts (already gitignored going forward)","hits":[{"specId":"8e659486966270a99e18f69ebb5b9818b057f2edccc316a3e71e3c3c97e36e9b","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"stop, build"}]},{"specId":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"forward, build"}]},{"specId":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"build, forward"}]},{"specId":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"build, forward"}]}]},{"key":"ghashtag/t27#3176","repo":"ghashtag/t27","number":3176,"title":"OpenSSF Scorecard: 105 consecutive master failures since 2026-09-03, upstream gcr.io billing","hits":[]},{"key":"ghashtag/t27#3172","repo":"ghashtag/t27","number":3172,"title":"11 of 260 published numbers were wrong; nine of them are one defect, and the audit itself erred nine times in twenty","hits":[{"specId":"9e0a54bfc5992bb96c5dc38dcbffd57334be6866207e09185966985e870dacbb","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"published, audit"}]}]},{"key":"ghashtag/t27#3171","repo":"ghashtag/t27","number":3171,"title":"Add a regression test suite for gen/zig/measure.py","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"to_i64:128"},{"kind":"symbol","value":"compare_abs:491"},{"kind":"terms","value":"zero, i64, abs, compare, diff, restored"}]},{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"to_i64:248"},{"kind":"terms","value":"byte, zero, i64"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"suite, parse, gen, zig"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"zig, parse, gen, rel"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, rel, zig"}]}]},{"key":"ghashtag/t27#3169","repo":"ghashtag/t27","number":3169,"title":"The 15 hollow MERGE_CRITICAL claims: 10 can be required today, 5 cannot","hits":[{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"status, critical, required, request"}]},{"specId":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"status, critical, required, request"}]}]},{"key":"ghashtag/t27#3157","repo":"ghashtag/t27","number":3157,"title":"Status: what the ten gate instruments say is open, and what is already settled","hits":[{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"gate, critical, open, status, close"}]},{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"status, total, verified, open"}]},{"specId":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"status, settled"}]},{"specId":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"status, gate"}]}]},{"key":"ghashtag/t27#3153","repo":"ghashtag/t27","number":3153,"title":"All 32 Admitted live in the 18 Coq files no _CoqProject names; the compiled 41 have zero","hits":[]},{"key":"ghashtag/t27#3150","repo":"ghashtag/t27","number":3150,"title":"Two merges took \"ours\" and discarded 1103 lines of real work, invisible to git show --numstat","hits":[{"specId":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"git, branch, head, merge, base, show"}]}]},{"key":"ghashtag/t27#3142","repo":"ghashtag/t27","number":3142,"title":"lake build is red on two unsolved goals in H4Lagrangian.lean, and Lean proofs ran once in the last 60 workflow runs","hits":[]},{"key":"ghashtag/t27#3141","repo":"ghashtag/t27","number":3141,"title":"1792 of 9842 spec tests have a body that is one comment: { /* verify baseline */ }","hits":[{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"backend, block, parse, options, git, content, print"}]},{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"TestBlock:267"},{"kind":"terms","value":"block, reports, print, parse, help"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"content, help, block, backend"}]},{"specId":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"TestBlock:381"},{"kind":"terms","value":"options, content, block, parse"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"options, block, append"}]}]},{"key":"ghashtag/t27#3140","repo":"ghashtag/t27","number":3140,"title":"Wave reports name deliverables that exist in no source file: ExprAddressOf and has_cycle_dfs each live only in the report announcing them","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"NodeKind:19"},{"kind":"symbol","value":"parse_expr_unary:504"},{"kind":"terms","value":"compiler, node, kind, parse, expr, right, unary, else"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"compiler, ast, node, invariant, bench, block, assert, info"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, binary, expr"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"TypeInfo:134"},{"kind":"terms","value":"compiler, ast, node, info"}]},{"specId":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"reports, report, json"}]}]},{"key":"ghashtag/t27#3137","repo":"ghashtag/t27","number":3137,"title":"scripts/tri-lean has never existed and three source files tell you to run it, plus two more surviving count-claims","hits":[]},{"key":"ghashtag/t27#3135","repo":"ghashtag/t27","number":3135,"title":"Twelve asserts the parser silently discards, in three shapes it never implemented","hits":[{"specId":"d10dbd0174015ac2a3c91ee97355ff93f5da3231f9925e1b27eac88e0284aa69","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/vsa/jones_polynomial.t27"},{"kind":"symbol","value":"jones_polynomial:105"},{"kind":"symbol","value":"jones_trefoil_at_phi:119"},{"kind":"terms","value":"vsa, jones, polynomial, positive, writhe, trefoil, phi"}]},{"specId":"445b536ffbdf40c4580d3980157b45ec97fae43c0cceec2f177d46a91a0682bd","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/math/radix_economy.t27"},{"kind":"symbol","value":"E_OPTIMAL:22"},{"kind":"symbol","value":"ternary_range:55"},{"kind":"symbol","value":"binary_range:60"},{"kind":"terms","value":"math, radix, economy, optimal, ternary, range, binary"}]},{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"math, constants, phi, inv, integer"}]},{"specId":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"phi_split:47"},{"kind":"terms","value":"phi, split, comparison, optimal, rounding"}]},{"specId":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"phi_split:47"},{"kind":"terms","value":"phi, split, comparison, optimal, rounding"}]}]},{"key":"ghashtag/t27#3134","repo":"ghashtag/t27","number":3134,"title":"Seven update-branch merges against five commits of work: the merge-queue tax, measured","hits":[{"specId":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"git, branch, prefix, merge, rev, list"}]},{"specId":"25cdccd102bc427d00d9256fb1a8ede95a2f204de4c2178c2c83998c1c37c3ef","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"work, measured"}]}]},{"key":"ghashtag/t27#3098","repo":"ghashtag/t27","number":3098,"title":"No way to ask which binary serves a subcommand","hits":[]},{"key":"ghashtag/t27#3092","repo":"ghashtag/t27","number":3092,"title":"LAW 8 (no circular dependencies) is stated with a verifier that never existed","hits":[]},{"key":"ghashtag/t27#3081","repo":"ghashtag/t27","number":3081,"title":"test_run_fpga_smoke_gate_passes_with_good_report is flaky in CI: same commit, opposite outcomes one minute apart","hits":[{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"temp_dir:297"},{"kind":"terms","value":"dir, path, temp, directory, join, parent"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"rust, one, good"}]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, good"}]}]},{"key":"ghashtag/t27#3055","repo":"ghashtag/t27","number":3055,"title":"scripts/tri carries the loop-helper dispatch block twice; the second copy is unreachable","hits":[{"specId":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"exec, block, copy"}]}]},{"key":"ghashtag/t27#3041","repo":"ghashtag/t27","number":3041,"title":"Add docs/COMPILER_BUGS.md: durable reference for the copy_propagate silent infinite-loop bug shape","hits":[{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"docs, text, reference, author, documentation"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"docs, text, reference, author, documentation"}]},{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"compiler, commit, docs, text"}]},{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, commit, docs"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"compiler, loop"}]}]},{"key":"ghashtag/t27#3039","repo":"ghashtag/t27","number":3039,"title":"Committed merge-conflict markers in .gitignore, plus repo-root shell-quoting debris and untracked build byproducts","hits":[{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"conflict, session, merge, byte"}]},{"specId":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"merge, conflict, byte"}]}]},{"key":"ghashtag/t27#3038","repo":"ghashtag/t27","number":3038,"title":"Six parser/emitter bugs and a silent infinite loop in copy_propagate, corpus 74.2% -> 76.7%","hits":[{"specId":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/enrichment/youtube_transcript.t27"},{"kind":"terms","value":"enrichment, youtube, transcript, text"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1153,"reasons":[{"kind":"symbol","value":"NodeKind:19"},{"kind":"symbol","value":"parse_expr_unary:504"},{"kind":"symbol","value":"parse_expr_primary:581"},{"kind":"symbol","value":"parse_array_literal:720"},{"kind":"terms","value":"compiler, parser, node, kind, brace, stmt, boundary, parse"}]},{"specId":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"TriType:32"},{"kind":"terms","value":"field, constant, behavior, parse, write, syntax"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"phi, zero, table, copy, val, div, floor, ceil"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"phi, zero, table, copy, val, div, floor, ceil"}]}]},{"key":"ghashtag/t27#3035","repo":"ghashtag/t27","number":3035,"title":"starts_with(\"struct\") has no word boundary: 'const dim = structure.len();' is counted as a struct definition, and 1180 is 1178","hits":[{"specId":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/demos/jones_topology_filter.t27"},{"kind":"terms","value":"demos, jones, topology, filter, dim, structure"}]},{"specId":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"demos, jones, topology, structure, dim"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"boundary, struct"}]}]},{"key":"ghashtag/t27#3034","repo":"ghashtag/t27","number":3034,"title":"Six fixed artefact names in one shared TMPDIR: two concurrent corpus runs corrupt each other's columns, with every unresolved counter reading 0","hits":[{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"timeout, concurrent, unresolved, byte"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"timeout, two, second, one"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, six"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, six"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, two"}]}]},{"key":"ghashtag/t27#3009","repo":"ghashtag/t27","number":3009,"title":"`while (c) : (step)` with a `continue` hangs in C and Rust: the step is emitted after the body and `continue` jumps it","hits":[]},{"key":"ghashtag/t27#3006","repo":"ghashtag/t27","number":3006,"title":"gen-c, gen-rust and gen (Zig) are not byte-deterministic: 1, 3 and 2 files differ between two identical runs","hits":[{"specId":"4231d25e32ae17ce4b5009632e3727e6d269f5c98317f8f7cb826973cc160c3a","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"HashSet:13"},{"kind":"terms","value":"set, hash"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"path, gen, zig, seal, verilog, load, hash, map"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"gen, zig, verilog, rust, json, emit, backends"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"zig, path, gen, print, exists"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"gen, zig, verilog, seal"}]}]},{"key":"ghashtag/t27#3004","repo":"ghashtag/t27","number":3004,"title":"\"One source, four targets\" has under 1% runtime coverage, and no tool compares all four on any spec","hits":[{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"terms","value":"etx, one"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"on_clock:170"},{"kind":"terms","value":"bit, clock"}]},{"specId":"89af60b026ed44f74e7fdeca2c3486d1b6936ed25eb36952a2acc4fcfceb8887","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"on_comb:16"},{"kind":"terms","value":"comb"}]},{"specId":"a65ff9c73705aa9ceec3d2ac8abda449cf68771040c2457378217bd89663cf81","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"on_comb:4"},{"kind":"terms","value":"comb"}]},{"specId":"c8aeb8ca8c5ab34e88f39bd5a2268344bd3ca24cb1d9822de72e3792b30d7c4e","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"on_comb:12"},{"kind":"terms","value":"comb"}]}]},{"key":"ghashtag/t27#2998","repo":"ghashtag/t27","number":2998,"title":"All 410 iverilog rejections classified by construct: 36 classes, three cover 339, and three new emitter defects named","hits":[]},{"key":"ghashtag/t27#2994","repo":"ghashtag/t27","number":2994,"title":"The local NOW preview says OK where the required `check` context says FAIL -- two conditions previewed by nothing","hits":[{"specId":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"section, local, fail, passed"}]},{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"local, fail"}]}]},{"key":"ghashtag/t27#2992","repo":"ghashtag/t27","number":2992,"title":"`implies` appears 9 times in live source and 0 times in the compiler: the consequent is discarded and typecheck reports OK","hits":[{"specId":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/fpga/top_level.t27"},{"kind":"symbol","value":"system_ready:48"},{"kind":"terms","value":"top, level, system, ready, busy"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"compiler, checking, typecheck"}]}]},{"key":"ghashtag/t27#2987","repo":"ghashtag/t27","number":2987,"title":"The Icarus simulation gate has had zero targets since specs/scratch was untracked, and 260 baselines for subjects that do not exist","hits":[{"specId":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"binary_search:27"},{"kind":"terms","value":"search, zero, binary"}]},{"specId":"18cbfabd05c402e9330be096cd6cd3d6d17ad2ea2b6eb02456dc3c20a9f03814","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"zero, gate"}]}]},{"key":"ghashtag/t27#2983","repo":"ghashtag/t27","number":2983,"title":"Five open issues say a workflow is red; that workflow is green on master today","hits":[{"specId":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"red, green"}]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"red, green"}]}]},{"key":"ghashtag/t27#2977","repo":"ghashtag/t27","number":2977,"title":"A 'no competitor has' claim, a four-row table, and a survey that stopped in June","hits":[{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"docs, text, generate, table, row"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"docs, text, generate, table, row"}]}]},{"key":"ghashtag/t27#2975","repo":"ghashtag/t27","number":2975,"title":"The Rust backend emits no tests at all: 532 specs declare them, `#[test]` appears zero times","hits":[]},{"key":"ghashtag/t27#2964","repo":"ghashtag/t27","number":2964,"title":"Competitor table: 144 of 168 records state a published score nobody published","hits":[]},{"key":"ghashtag/t27#2961","repo":"ghashtag/t27","number":2961,"title":"Two of four required contexts have no master reading, and one cannot have any; the README CI badge points at a workflow that does not exist on master","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"base, zero, one, two"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"two, one"}]}]},{"key":"ghashtag/t27#2920","repo":"ghashtag/t27","number":2920,"title":"\"Power analysis regression\" is nine echo lines and never opens the file it names","hits":[{"specId":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","relation":"reference","coverage":"unverified","score":2054,"reasons":[{"kind":"path","value":"specs/fpga/power_analysis.t27"},{"kind":"terms","value":"power, analysis, zero, device, limits, xc7a100t, xc7a35t, budget"}]},{"specId":"d8970c696708b802f279b04ca2bd3dde298c299405b40f452e5b86ea2f556379","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"power, analysis, typical, budget"}]}]},{"key":"ghashtag/t27#2919","repo":"ghashtag/t27","number":2919,"title":"Five workflows believe they are required; four contexts are. coverage failed on 32 of the last 40 merged PRs","hits":[]},{"key":"ghashtag/t27#2915","repo":"ghashtag/t27","number":2915,"title":"brain-seal-refresh.yml cannot succeed: its last step is a push this repository's own ruleset rejects","hits":[]},{"key":"ghashtag/t27#2914","repo":"ghashtag/t27","number":2914,"title":"coq-proofs.yml has failed 62 of 62 runs at opam init; 9 of the repository's 58 Coq files are compiled by anything","hits":[]},{"key":"ghashtag/t27#2905","repo":"ghashtag/t27","number":2905,"title":"bootstrap/src/tooling.rs: 7 gate bodies undeclared; two subcommands print advice for a flag that does not exist and exit 0","hits":[{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"gate, print, exit, main, help"}]}]},{"key":"ghashtag/t27#2904","repo":"ghashtag/t27","number":2904,"title":"The gate against gates-green-by-not-running covers 15 of 47 workflows, and both offenders are outside it","hits":[{"specId":"18cbfabd05c402e9330be096cd6cd3d6d17ad2ea2b6eb02456dc3c20a9f03814","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gates, gate"}]}]},{"key":"ghashtag/t27#2903","repo":"ghashtag/t27","number":2903,"title":"cli/tri-mcp is in neither workspace members nor exclude -- the same defect Cargo.toml already documents for ffi","hits":[]},{"key":"ghashtag/t27#2902","repo":"ghashtag/t27","number":2902,"title":"coq/_CoqProject lists 9 of the 11 .v files; 486 lines of proof have never seen coqc","hits":[]},{"key":"ghashtag/t27#2898","repo":"ghashtag/t27","number":2898,"title":"MAX_SORRY counts 5 admitted proofs; 4 are in files nothing compiles","hits":[]},{"key":"ghashtag/t27#2895","repo":"ghashtag/t27","number":2895,"title":"67% of the Lean development is outside the build graph: 647 theorems lake build has never compiled","hits":[]},{"key":"ghashtag/t27#2893","repo":"ghashtag/t27","number":2893,"title":"A Lean model splits a dotted type into three parameters, and the theorem is true because of it","hits":[{"specId":"c4640c7a2ad1f9a0c29a2e975d615ec82130805ba1e1a75ed3f1c167fba995f7","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/tri/utils/args.t27"},{"kind":"symbol","value":"ParseResult:24"},{"kind":"terms","value":"utils, args, parse"}]},{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ParseResult:112"},{"kind":"terms","value":"json, request, parse, params"}]}]},{"key":"ghashtag/t27#2880","repo":"ghashtag/t27","number":2880,"title":"Two modifiers the parser consumes and records nowhere, neither with a consumer today","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"compiler, parser, kind, advance, parse, field, struct"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"compiler, lexer, token, kind, advance"}]},{"specId":"380f324e20c22b5441bf9cf413249c1c92b09d33507164e62b0e2fe9d69b7b4c","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"EncodedSequence:76"},{"kind":"symbol","value":"encodeNGram:124"},{"kind":"terms","value":"sequence, ngram, encoded, encode"}]},{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"exit_with_code:246"},{"kind":"terms","value":"exit, kind, parse"}]}]},{"key":"ghashtag/t27#2873","repo":"ghashtag/t27","number":2873,"title":"A script named verify_all_152.py has never parsed: eight conflict markers, present since the commit that added it","hits":[{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"git, commit, path, skill, updated, added, digit"}]},{"specId":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"present, verify, verification"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"present, verify"}]}]},{"key":"ghashtag/t27#2869","repo":"ghashtag/t27","number":2869,"title":"Four Verilog-backend findings: 4702 invariants that are comments, and a check that cannot fail","hits":[{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"on_clock:170"},{"kind":"terms","value":"signed, clock"}]},{"specId":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"on_clock:13"},{"kind":"terms","value":"clock"}]},{"specId":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"on_clock:38"},{"kind":"terms","value":"clock"}]},{"specId":"9dc4e475f38f849170b46b46c0a72486485d13a37e4a53150b6dd395b4252a6a","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"on_clock:27"},{"kind":"terms","value":"clock"}]},{"specId":"9e7f3ab64dc081da46232c63a023d2d392652bf57c2720c46fe02b564a0f1f37","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"on_clock:16"},{"kind":"terms","value":"clock"}]}]},{"key":"ghashtag/t27#2860","repo":"ghashtag/t27","number":2860,"title":"Five Zig-backend findings from a fan-out audit: a dropped loop body, a fabricated shift width, and assert_eq that nothing defines","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1071,"reasons":[{"kind":"symbol","value":"parse_if_stmt:965"},{"kind":"terms","value":"parser, children, stmt, parse, comparison, shift, call, literal"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"backend, zig, ast, invariant, case, parse, path, gen"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"backend, parse, payload, variant, magnitude, width, integer, valid"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"valid, path, gen, compile, project, zig, verilog, invariant"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"zig, invariant, expression, int, assert, stmt, case"}]}]},{"key":"ghashtag/t27#2853","repo":"ghashtag/t27","number":2853,"title":"Twelve quantified clauses call a function with the wrong number of arguments; every one has a partner test doing the same","hits":[{"specId":"e24ed494c1f78c01bbbd69a338432166ca36a1271b1d5c6c8a25a9946786da76","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"MAX_STEPS:10"},{"kind":"terms","value":"steps, step"}]}]},{"key":"ghashtag/t27#2851","repo":"ghashtag/t27","number":2851,"title":"Seal Coverage has been red on master since #2841: four gen-c fixes changed generated output without re-sealing","hits":[{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, bound"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"compiler, list, status, gen, success, zig, seal, hash"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"gen, zig, seal, point"}]},{"specId":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"seal, gen, save, failure"}]}]},{"key":"ghashtag/t27#2847","repo":"ghashtag/t27","number":2847,"title":"Nine unverified findings from a C-backend fan-out audit, with their counts and where to check them","hits":[{"specId":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/numeric/phi_ratio.t27"},{"kind":"terms","value":"numeric, phi, ratio"}]}]},{"key":"ghashtag/t27#2846","repo":"ghashtag/t27","number":2846,"title":"String literals reach C with their quotes stripped: a function returns its own address instead of its name","hits":[]},{"key":"ghashtag/t27#2843","repo":"ghashtag/t27","number":2843,"title":"29 specs declare the same test twice, and in half of them the two bodies differ","hits":[]},{"key":"ghashtag/t27#2839","repo":"ghashtag/t27","number":2839,"title":"Eight invariants spell determinism as f(x) == f(x), which holds for any function whatever","hits":[]},{"key":"ghashtag/t27#2835","repo":"ghashtag/t27","number":2835,"title":"specs/file/operations.t27 declares fn delete twice with different arities; all three backends emit both","hits":[{"specId":"4ec184e2b90d849d42a837ef1be0c6f19e55e21f94793b6dd288a84dd0a89877","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/file/operations.t27"},{"kind":"terms","value":"operations, range, delete, path"}]},{"specId":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"FileError:57"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"gen, zig, rust, emit, backends"}]},{"specId":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"operations, parse, delete"}]}]},{"key":"ghashtag/t27#2834","repo":"ghashtag/t27","number":2834,"title":"gen-c emits the first reassignment of a var as a second declaration: 45 specs, 375 errors","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"PackedTrit:41"},{"kind":"symbol","value":"pack_trit:159"},{"kind":"symbol","value":"trit_xor:316"},{"kind":"terms","value":"base, zero, one, trit, packed, per, ternary, pack"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"pack_trit:105"},{"kind":"terms","value":"zero, trit, pos, pack, read"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"PackedTrit:12"},{"kind":"symbol","value":"pack_trit:102"},{"kind":"terms","value":"trit, packed, ternary, pack"}]},{"specId":"596d8c5a43c433eebb1c5df08d34b92e03c9697a4ac2f9343c1457246028593b","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, var"}]}]},{"key":"ghashtag/t27#2830","repo":"ghashtag/t27","number":2830,"title":"A module-level var becomes a typedef whose type is its initializer","hits":[{"specId":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/demos/jones_topology_decision_gate.t27"},{"kind":"terms","value":"demos, jones, topology, decision, gate"}]},{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/queen/lotus.t27"},{"kind":"terms","value":"queen, lotus, phase, unknown, total"}]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/nn/hslm.t27"},{"kind":"symbol","value":"PHASE_FORWARD:42"},{"kind":"terms","value":"hslm, phase, forward, attention, mode"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, one, six"}]},{"specId":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/isa/registers.t27"},{"kind":"terms","value":"isa, registers"}]}]},{"key":"ghashtag/t27#2827","repo":"ghashtag/t27","number":2827,"title":"phi_split_optimality.t27:293 passes a total width into a parameter that means available width","hits":[{"specId":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","relation":"reference","coverage":"unverified","score":2077,"reasons":[{"kind":"path","value":"specs/math/phi_split_optimality.t27"},{"kind":"symbol","value":"optimal_ratio_by_self_similarity:50"},{"kind":"symbol","value":"optimal_allocation_by_rounding:70"},{"kind":"terms","value":"math, phi, split, optimality, optimal, ratio, self, similarity"}]},{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"math, phi, inv, exp, equal"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"PHI_INV:346"},{"kind":"terms","value":"similarity, phi, inv, identity"}]},{"specId":"80966e05fa9420834513a68d667eb8752ac7360ac01d4ae1e2294a9de72b28f3","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"PHI_INV:12"},{"kind":"terms","value":"phi, inv, total, ratio"}]},{"specId":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"PHI_INV:14"},{"kind":"terms","value":"math, phi, inv, report"}]}]},{"key":"ghashtag/t27#2826","repo":"ghashtag/t27","number":2826,"title":"opcodes.t27:984 says the sacred alphabet is empty; it is 0xDE..0xE8, and the correctly-bounded form is already in the file","hits":[]},{"key":"ghashtag/t27#2825","repo":"ghashtag/t27","number":2825,"title":"Three cordic.t27 invariants are false over their whole live domain, and the file's own tests pin the opposite","hits":[{"specId":"37aaa0322da86d9674dfd2f7ee235c14c68420cd43da356a04384f5dfccc2f20","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"EXP_BITS:16"},{"kind":"terms","value":"bits, exp, neg, f32, val, sqrt, over, range"}]},{"specId":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"EXP_BITS:27"},{"kind":"terms","value":"bits, exp, phi, val, positive, range, ratio, full"}]},{"specId":"5fdec7f0438860173e0475b5e8912e5045a7ab37639ae21ea6f6329830989c02","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"EXP_BITS:16"},{"kind":"terms","value":"bits, exp, neg, f32, val, sqrt, over"}]},{"specId":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"phi_split:47"},{"kind":"symbol","value":"exp_bits:53"},{"kind":"terms","value":"phi, ratio, split, available, exp, bits, comparison"}]},{"specId":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"phi_split:46"},{"kind":"symbol","value":"exp_bits:52"},{"kind":"terms","value":"phi, ratio, split, available, exp, bits, comparison"}]}]},{"key":"ghashtag/t27#2824","repo":"ghashtag/t27","number":2824,"title":"cordic_sin_cos returns (cos, sin); its own doc comment, and the repo's reference CORDIC RTL, both say (sin, cos)","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"zero, neg, pow2, f32, sqrt, sin, cos, one"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"zero, neg, pow2, f32, sqrt, sin, cos, one"}]},{"specId":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"functions, doc, out, text, reference, report"}]},{"specId":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"functions, doc, out, text, reference, report"}]},{"specId":"8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"angle, sin, cos, sqrt"}]}]},{"key":"ghashtag/t27#2822","repo":"ghashtag/t27","number":2822,"title":"Thirteen competitors are defined 2-4 times in one benchmark spec, and five disagree on the score","hits":[]},{"key":"ghashtag/t27#2807","repo":"ghashtag/t27","number":2807,"title":"specs/ml/optimizer/adamw.t27 contains two complete copies of the AdamW module","hits":[{"specId":"75057ee2ad3e822c422ce7e02fcbd28df64df4237be2983dc47a485982c08e3a","relation":"reference","coverage":"unverified","score":2056,"reasons":[{"kind":"path","value":"specs/ml/optimizer/adamw.t27"},{"kind":"symbol","value":"AdamWConfig:19"},{"kind":"terms","value":"optimizer, adamw, default, weight, decay, adam, wconfig, step"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, bias, phi, zero, copy, one, six"}]},{"specId":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/nn/attention.t27"},{"kind":"terms","value":"attention, weight, init, apply, compute"}]},{"specId":"1cce47bfd33a00b3f877eac16723284a124ef0036f1012d5cb5d60bc90613915","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"DEFAULT_LEARNING_RATE:41"},{"kind":"terms","value":"pass, default, generation, learning, rate, init, attention, step"}]},{"specId":"acf6ebbee2cb8fc7ed573fa75e2196c7db42ccdd33c893329bf26bd5299845f6","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"DEFAULT_BETA:13"},{"kind":"terms","value":"default, beta"}]}]},{"key":"ghashtag/t27#2804","repo":"ghashtag/t27","number":2804,"title":"The Railway server's static fallback and 404 page point at a directory that has never existed","hits":[]},{"key":"ghashtag/t27#2800","repo":"ghashtag/t27","number":2800,"title":"The catalog has two generation paths; one feeds nothing, its only consumer is broken, and a permanent warning carries no information","hits":[{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"find, two, one, present"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, one, positive, two"}]}]},{"key":"ghashtag/t27#2787","repo":"ghashtag/t27","number":2787,"title":"tnf16's phi_distance is the value for a mantissa it does not have, and the field means three different things","hits":[{"specId":"0698e7d7e9693a49683c92c75812220f30b4025bee6ab7765c34e5ad5ca183db","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:30"},{"kind":"terms","value":"numeric, bits, phi, distance, abs, format, log2, mantissa"}]},{"specId":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:30"},{"kind":"terms","value":"numeric, bits, phi, distance, abs, format, log2, mantissa"}]},{"specId":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:30"},{"kind":"terms","value":"numeric, bits, phi, distance, abs, format, log2, mantissa"}]},{"specId":"304dbefaab41ae6360d9007359ccd36bab0e9ef78e8cc2e00e7ab0b41269b0f6","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:30"},{"kind":"terms","value":"numeric, bits, phi, distance, abs, format, log2, mantissa"}]},{"specId":"38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:34"},{"kind":"terms","value":"numeric, bits, phi, distance, abs, format, log2, mantissa"}]}]},{"key":"ghashtag/t27#2783","repo":"ghashtag/t27","number":2783,"title":"Four workflows are red on master today, and two of them are green by not running","hits":[{"specId":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"failed, red, green"}]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"failed, red, green"}]}]},{"key":"ghashtag/t27#2778","repo":"ghashtag/t27","number":2778,"title":"A recovered assertion that actually fails: trits_to_bits round-trip in ternary_encoding","hits":[{"specId":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/base/ternary_encoding.t27"},{"kind":"symbol","value":"bits_to_trits:47"},{"kind":"symbol","value":"trits_to_bits:74"},{"kind":"terms","value":"base, ternary, encoding, bits, trits, decoded"}]},{"specId":"4468de25e4e94f883c3cd64306eb5cff4e69992728e7211b73cacfe2c83bc3c8","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/isa/ternary_arithmetic.t27"},{"kind":"terms","value":"isa, ternary, arithmetic, trits"}]},{"specId":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/queen/brain_summaries.t27"},{"kind":"terms","value":"queen, brain, summaries, reported"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"base, one, bits, trits, ternary, encoding"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"bits, discarded, round, decoded, base, one"}]}]},{"key":"ghashtag/t27#2774","repo":"ghashtag/t27","number":2774,"title":"69% of the remaining discard is one construct the parser does not implement: quantified invariants","hits":[{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"finite, remaining, one, mean"}]}]},{"key":"ghashtag/t27#2767","repo":"ghashtag/t27","number":2767,"title":"547 specs carry TWO seals, and `seal --save` writes only one of them","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, json"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"compiler, path, key, branch, seal, hash"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"one, carry, two"}]},{"specId":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"carry, save"}]},{"specId":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"seal, save"}]}]},{"key":"ghashtag/t27#2764","repo":"ghashtag/t27","number":2764,"title":"gen-c uses Trit 141 times and declares it zero times: the C backend does not follow \"use\"","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, zero, one, trit, per"}]},{"specId":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/vsa/ops.t27"},{"kind":"terms","value":"vsa, ops, bind, trit"}]},{"specId":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"header, fixed, shape, uses, trit"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"gen, zig, header, verilog, backend"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"backend, header, base, per, trit"}]}]},{"key":"ghashtag/t27#2762","repo":"ghashtag/t27","number":2762,"title":"Eight gates were green because nobody asked them: the readings are in","hits":[]},{"key":"ghashtag/t27#2754","repo":"ghashtag/t27","number":2754,"title":"secret-scan and cli-tri are red on master, and a paths: filter has been hiding it","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"path, success, dir, build, branch, seal, load"}]},{"specId":"e31e00a07700fe2458b2945fbd2925081653e4ac6d8c73b76b78b2b2d42c3ddf","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"paths, filter, matches"}]}]},{"key":"ghashtag/t27#2747","repo":"ghashtag/t27","number":2747,"title":"Nothing in this repository builds the Lean proofs","hits":[{"specId":"cb61281176bafb99fd47a406941d7f224280dbfc0c0e255c3f0afb9dd6ce3976","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/ar/asp_solver.t27"},{"kind":"terms","value":"asp, solver, steps, match"}]}]},{"key":"ghashtag/t27#2729","repo":"ghashtag/t27","number":2729,"title":"cli-tri has been red on master for three days; the path filter meant it never ran to say so","hits":[{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"cli, path, status, hash"}]},{"specId":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"cli, path, status"}]},{"specId":"976ac6894ffb6e536f5271c3692387c8e9fff1b0ed6f280e1aa297c0c8b8340b","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"cli, path, status"}]}]},{"key":"ghashtag/t27#2725","repo":"ghashtag/t27","number":2725,"title":"The formal workflow has never run, and my count of the converter keys was wrong in both directions","hits":[]},{"key":"ghashtag/t27#2724","repo":"ghashtag/t27","number":2724,"title":"The gate I added could never have run, and enum was not the only key the converter drops","hits":[{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"reference","coverage":"unverified","score":2055,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"symbol","value":"METHOD_COMPLETION:49"},{"kind":"symbol","value":"message_buffer_create:237"},{"kind":"terms","value":"lsp, protocol, buffer, length, method, exit, did, open"}]},{"specId":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"symbol","value":"LANG_ZIG:22"},{"kind":"terms","value":"lsp, language, lang, zig, python, info, completion"}]},{"specId":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/server/http.t27"},{"kind":"terms","value":"http, method, found"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"ast, case, block, info"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"TypeInfo:134"},{"kind":"terms","value":"ast, info"}]}]},{"key":"ghashtag/t27#2723","repo":"ghashtag/t27","number":2723,"title":"union(enum) lands the last of the 31; and the converter is not losing files silently","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1037,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"skip, parse, field, struct, else, enum"}]},{"specId":"6300dc270115322725d4e00244e601fe557f70f71225dc72949205213033e573","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"ParsedCommand:37"},{"kind":"terms","value":"namespace, parsed, namespaced, flat"}]}]},{"key":"ghashtag/t27#2719","repo":"ghashtag/t27","number":2719,"title":"message_buffer_create reports a capacity it cannot hold","hits":[{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"METHOD_COMPLETION:49"},{"kind":"symbol","value":"message_buffer_create:237"},{"kind":"terms","value":"lsp, protocol, buffer, length, method, completion, request, data"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"field, empty, argument, capacity, buffer"}]}]},{"key":"ghashtag/t27#2718","repo":"ghashtag/t27","number":2718,"title":"The converter never parsed variant lists at all — root cause fixed, and the hand recovery confirmed by re-derivation","hits":[{"specId":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/tri/utils/exit_codes.t27"},{"kind":"symbol","value":"ExitCode:17"},{"kind":"terms","value":"utils, exit, codes"}]},{"specId":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/server/http.t27"},{"kind":"terms","value":"http, empty, success"}]},{"specId":"6300dc270115322725d4e00244e601fe557f70f71225dc72949205213033e573","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"ParsedCommand:37"},{"kind":"terms","value":"namespace, parsed, namespaced, flat"}]},{"specId":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"payload, nested, root, empty, field, fixed, valid"}]}]},{"key":"ghashtag/t27#2717","repo":"ghashtag/t27","number":2717,"title":"The lost enum variants were never lost: they survive in the sibling repo, and 29 of 31 are restored","hits":[{"specId":"2b419fc69d1704d6bcd88d071fcb8f278a5d4d910dd89d541756adc261e995bb","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/tri/net/http.t27"},{"kind":"symbol","value":"method_to_string:36"},{"kind":"terms","value":"http, method, status, success, parse"}]},{"specId":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/tri/utils/exit_codes.t27"},{"kind":"terms","value":"utils, exit, codes"}]},{"specId":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"method_to_string:225"},{"kind":"terms","value":"http, default, method, post, put, delete, status, empty"}]},{"specId":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"AgentType:13"},{"kind":"symbol","value":"AgentStatus:19"},{"kind":"symbol","value":"TaskStatus:45"},{"kind":"terms","value":"swarm, agents, status, sacred"}]},{"specId":"85ee6b76ac54f68b3023b73083cabfcc56dd14175e5f403a0a6a5e2f8c03d957","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"TaskStatus:52"},{"kind":"terms","value":"autonomous, lifecycle, status"}]}]},{"key":"ghashtag/t27#2716","repo":"ghashtag/t27","number":2716,"title":"A gate that mutates one digit and requires the harness to notice","hits":[{"specId":"8c8317e74a8b9562d87049e4b7826d4231c61236cbd2fa77cbf7e3bc539777ed","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"brain_bus_version:10"},{"kind":"terms","value":"brain, bus"}]}]},{"key":"ghashtag/t27#2715","repo":"ghashtag/t27","number":2715,"title":"Unpinned the enum tests and repaired lsp/language; 878 is the first defensible assertion count","hits":[{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"reference","coverage":"unverified","score":2047,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"symbol","value":"METHOD_HOVER:52"},{"kind":"terms","value":"lsp, protocol, buffer, length, method, did, hover, document"}]},{"specId":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"symbol","value":"LANG_ZIG:22"},{"kind":"symbol","value":"EXT_T27:43"},{"kind":"symbol","value":"LanguageInfo:71"},{"kind":"terms","value":"lsp, language, lang, zig, ext, info"}]},{"specId":"515bffd0d52fc79669620e18b71801e0b05c98ead9e8c59729448cf98d9dabbc","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/tri/sort/sort.t27"},{"kind":"terms","value":"sort, order"}]},{"specId":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"model, length, language, lsp, slice"}]}]},{"key":"ghashtag/t27#2714","repo":"ghashtag/t27","number":2714,"title":"The run-scan harness could report a pass compiled from different code","hits":[{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"harness, content, report"}]}]},{"key":"ghashtag/t27#2713","repo":"ghashtag/t27","number":2713,"title":"A repo-wide \"replace Unicode with ASCII\" commit numbered the characters instead of transliterating them, and the tree records it as done","hits":[{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/math/phi_universal_attractor.t27"},{"kind":"terms","value":"math, phi, universal, attractor, point, proof"}]},{"specId":"d10dbd0174015ac2a3c91ee97355ff93f5da3231f9925e1b27eac88e0284aa69","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/vsa/jones_polynomial.t27"},{"kind":"symbol","value":"jones_trefoil_at_phi:119"},{"kind":"terms","value":"vsa, jones, polynomial, trefoil, phi"}]},{"specId":"18cbfabd05c402e9330be096cd6cd3d6d17ad2ea2b6eb02456dc3c20a9f03814","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"ternary_not:30"},{"kind":"terms","value":"isa, ternary, gates, gate, truth"}]},{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"compiler, invariant, commit, docs, ascii, text"}]},{"specId":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"parse, seal, commit, done, fail, failure"}]}]},{"key":"ghashtag/t27#2712","repo":"ghashtag/t27","number":2712,"title":"What a sole enum field means, decided by measurement — and the entanglement is gone","hits":[{"specId":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/tools/schema.t27"},{"kind":"symbol","value":"ParameterSchema:46"},{"kind":"terms","value":"schema, parameter"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"ast, case, assert, rule, info"}]},{"specId":"515bffd0d52fc79669620e18b71801e0b05c98ead9e8c59729448cf98d9dabbc","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"SortOrder:13"},{"kind":"terms","value":"sort, order"}]},{"specId":"303799b32c51f84cea3ebabfa4e586d88054a585b28c70f2f5cbd3c58b876cdd","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"PaddingMode:31"},{"kind":"terms","value":"padding, mode"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"TypeInfo:134"},{"kind":"terms","value":"ast, info"}]}]},{"key":"ghashtag/t27#2711","repo":"ghashtag/t27","number":2711,"title":"Recursive-by-value nodes and string-initialised numeric slices; and why the keyword field-name fix is blocked","hits":[{"specId":"1ec9b1d68d6e7223280e904ec1472c036b12222fb7dab9b11f049c8b98ffc62d","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/tri/trees/tree.t27"},{"kind":"terms","value":"trees, tree, size"}]},{"specId":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/tools/schema.t27"},{"kind":"terms","value":"schema, default"}]},{"specId":"1eb3a181da111913289f6593f867fb6abc27070c70544e939e114d7ac5dfeaec","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"QuadNode:20"},{"kind":"symbol","value":"QuadTree:28"},{"kind":"terms","value":"trees, quadtree, quad, node, tree"}]},{"specId":"1778325067543a3ddd5b236906ea2441d1a7b278bd5c9833aa72c55ba6599497","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"OctNode:22"},{"kind":"terms","value":"trees, octree, oct, node"}]},{"specId":"4a45d372cba73c1dabe74e1bf33ff88abd82d4b528312bd2cd1ec5aa12561196","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"KDNode:13"},{"kind":"terms","value":"trees, tree, kdnode"}]}]},{"key":"ghashtag/t27#2710","repo":"ghashtag/t27","number":2710,"title":"The run-scan shim reported exit 0 on a file it never analysed; and a switch arm that ate 14 tests","hits":[{"specId":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"symbol","value":"LANG_T27:19"},{"kind":"symbol","value":"SymbolKind:144"},{"kind":"symbol","value":"symbol_kind_to_string:308"},{"kind":"terms","value":"lsp, language, lang, zig, info, bracket, kind"}]},{"specId":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/tools/schema.t27"},{"kind":"symbol","value":"ParameterSchema:46"},{"kind":"terms","value":"schema, parameter"}]},{"specId":"515bffd0d52fc79669620e18b71801e0b05c98ead9e8c59729448cf98d9dabbc","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/tri/sort/sort.t27"},{"kind":"terms","value":"sort"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1071,"reasons":[{"kind":"symbol","value":"parse_switch_expr:793"},{"kind":"symbol","value":"parse_enum_body:1135"},{"kind":"terms","value":"parser, kind, parse, expr, right, field, struct, literal"}]},{"specId":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"SymbolKind:181"},{"kind":"terms","value":"lsp, schema, zero, position, kind, parameter"}]}]},{"key":"ghashtag/t27#2709","repo":"ghashtag/t27","number":2709,"title":"482 tests written, assertions executed 416 -> 888 — and none of them is behavioural","hits":[{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"symbol","value":"APPROX_TOLERANCE:233"},{"kind":"terms","value":"math, constants, phi, measured, abs, pow, approx, tolerance"}]},{"specId":"3b4221a4c3733e8cd4e11c2e22b767a42d515d16c9c0ac141632dbcfe5118d28","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/ml/layers/avgpool2d_layer.t27"},{"kind":"symbol","value":"DEFAULT_KERNEL:13"},{"kind":"terms","value":"layers, avgpool2d, layer, default, kernel, size, forward"}]},{"specId":"1ec9b1d68d6e7223280e904ec1472c036b12222fb7dab9b11f049c8b98ffc62d","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/tri/trees/tree.t27"},{"kind":"terms","value":"trees, tree, size"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"ast, data, decl, assert, info"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"info, set, arithmetic, literal, binary"}]}]},{"key":"ghashtag/t27#2708","repo":"ghashtag/t27","number":2708,"title":"use binds the module, not its names: 139 errors, and what is left is a pub-visibility matter","hits":[]},{"key":"ghashtag/t27#2707","repo":"ghashtag/t27","number":2707,"title":"A generated stub asserts nothing, so it should emit nothing: 152 -> 289 valid","hits":[]},{"key":"ghashtag/t27#2706","repo":"ghashtag/t27","number":2706,"title":"The array-literal scanner stopped at the first ']' and dropped the rest of the literal","hits":[{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"reference","coverage":"unverified","score":2050,"reasons":[{"kind":"path","value":"specs/portable/relay_observer.t27"},{"kind":"symbol","value":"WebSocketState:32"},{"kind":"symbol","value":"websocket_state_new:66"},{"kind":"terms","value":"portable, relay, observer, one, event, web, socket, websocket"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"parse_array_literal:720"},{"kind":"terms","value":"parser, kind, brace, parse, right, inner, struct, literal"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"PIPELINE_STAGES:21"},{"kind":"symbol","value":"MACUnit:63"},{"kind":"terms","value":"mac, units, pipeline, stages, macunit, trit, accumulator"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TernaryWord:53"},{"kind":"terms","value":"one, trit, word, ternary, right"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"TernaryWord:17"},{"kind":"terms","value":"trit, ternary, word, time"}]}]},{"key":"ghashtag/t27#2705","repo":"ghashtag/t27","number":2705,"title":"RUST_DIALECT.json drifted in both directions; the ceiling built on it is unreliable","hits":[{"specId":"638f8c5539801b533589411377798f5a62204a19dedb71d2853cde55d12b9ad4","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/automation/wrapup-auto.t27"},{"kind":"symbol","value":"WrapUpInput:16"},{"kind":"symbol","value":"WrapUpResult:26"},{"kind":"terms","value":"automation, wrapup, auto, wrap"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, skip, top, parse, array"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, pipeline, stages, set"}]},{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":2002,"reasons":[{"kind":"path","value":"specs/fpga/memory.t27"},{"kind":"terms","value":"memory"}]},{"specId":"bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"ErrorCode:32"},{"kind":"terms","value":"memory, wrapup, list, text"}]}]},{"key":"ghashtag/t27#2704","repo":"ghashtag/t27","number":2704,"title":"Rust array-repeat in a behaviour clause reached the output verbatim","hits":[{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"MemDesc:47"},{"kind":"symbol","value":"empty_mem_port:59"},{"kind":"symbol","value":"addr_width:200"},{"kind":"terms","value":"memory, mem, port, ports, desc, empty, addr, width"}]},{"specId":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"empty_mem_port:134"},{"kind":"terms","value":"hir, ports, port, mem, empty"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"addr_width:29"},{"kind":"terms","value":"compiler, width, addr, ports, memory"}]},{"specId":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"addr_width:119"},{"kind":"terms","value":"empty, addr, width"}]},{"specId":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"ADDR_WIDTH:12"},{"kind":"terms","value":"addr, width"}]}]},{"key":"ghashtag/t27#2703","repo":"ghashtag/t27","number":2703,"title":"A keyword is a legal variable name; the parser dropped it and emitted 'var ;'","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":2045,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"symbol","value":"node_new:331"},{"kind":"terms","value":"compiler, parser, node, kind, parse, local, decl, var"}]},{"specId":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"parser, token, ast, node, parse, decl, keyword, identifier"}]},{"specId":"3c7877343745c5377eba7ca7c8d9f9b6f44ced0b8a99a1c466f6b54dd1af969e","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"compiler, parser, lexer, identifier, token, ident, keyword"}]},{"specId":"2e87c761814045a402179280a8406e4cffaec0795497a4a7e042d973bf2660f0","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"compiler, parser, token, decl, var, parse, ast, node"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"rust, variable, var, report"}]}]},{"key":"ghashtag/t27#2701","repo":"ghashtag/t27","number":2701,"title":"Unresolved imports classified: 31 of 34 name things the corpus does not contain","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"PackedTrit:41"},{"kind":"terms","value":"base, one, trit, packed"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"PackedTrit:12"},{"kind":"terms","value":"compiler, trit, packed, phi"}]}]},{"key":"ghashtag/t27#2700","repo":"ghashtag/t27","number":2700,"title":"A \"using\" in prose became an import; and the per-spec delta check compared strings","hits":[]},{"key":"ghashtag/t27#2699","repo":"ghashtag/t27","number":2699,"title":"Add a third instrument: do emitted imports resolve to files that exist?","hits":[]},{"key":"ghashtag/t27#2698","repo":"ghashtag/t27","number":2698,"title":"281 specs declare a module name; the resolver only ever read file paths","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"symbol","value":"trit_negate:133"},{"kind":"terms","value":"base, ops, tritype, one, trit, multiply, negate, two"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_negate:127"},{"kind":"terms","value":"base, tritype, one, trit, multiply, negate, nor"}]},{"specId":"3372fcbc6f9c6838d6e21ed8900c9e3fe00de2a9b57386380e7eaa13beefd052","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/sandbox/session_timeout.t27"},{"kind":"terms","value":"sandbox, session, timeout"}]},{"specId":"991f6796a14b724c6c6d7ad11fa08025190c5fc6ee4e48506870bfdcc8ad5e5b","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"trit_negate:28"},{"kind":"terms","value":"base, one, trit, negate"}]}]},{"key":"ghashtag/t27#2697","repo":"ghashtag/t27","number":2697,"title":"A hyphen in a use target is a path separator; and a primitive is not a module","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_negate:127"},{"kind":"terms","value":"base, tritype, zero, one, trit, per, multiply, negate"}]},{"specId":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/lsp/schema.t27"},{"kind":"terms","value":"lsp, schema, zero, diagnostic, severity, sync, parameter"}]},{"specId":"88defe0150c9788a031d6028f0ce24fb7f84434a4a208f763e9e11d71a8705b5","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/physics/gamma-conflict.t27"},{"kind":"terms","value":"physics, gamma, conflict"}]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/provider/schema.t27"},{"kind":"terms","value":"provider, schema, base"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"trit_negate:133"},{"kind":"terms","value":"base, tritype, zero, one, trit, carry, multiply, negate"}]}]},{"key":"ghashtag/t27#2696","repo":"ghashtag/t27","number":2696,"title":"The emitter dropped every 'x as T' cast: 645 in 67 specs, 9 of them already passing","hits":[{"specId":"e6fc9237d381f9b29860d7a63126260d9baab643cd75dacf4fe4e8c92f754be7","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"exp_int:270"},{"kind":"terms","value":"small, left, right, exp, int"}]},{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"exp_int:105"},{"kind":"terms","value":"measured, exp, int"}]}]},{"key":"ghashtag/t27#2695","repo":"ghashtag/t27","number":2695,"title":"RUST_DIALECT.json still lists math/constants after conversion","hits":[{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"terms","value":"math, constants"}]},{"specId":"78fb5c9300e99d054e736a1987e58b72a08481fbed4dec98bab56f0ca9c5f0ff","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"math, constants"}]},{"specId":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"math, constants"}]}]},{"key":"ghashtag/t27#2694","repo":"ghashtag/t27","number":2694,"title":"Convert math/constants from Rust dialect: specs that run 46 -> 74","hits":[{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":2050,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"symbol","value":"exp_int:105"},{"kind":"symbol","value":"ln_approx:137"},{"kind":"symbol","value":"exp_approx:158"},{"kind":"terms","value":"math, constants, measured, scale, pow, exp, int, approx"}]},{"specId":"e6fc9237d381f9b29860d7a63126260d9baab643cd75dacf4fe4e8c92f754be7","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"exp_int:270"},{"kind":"terms","value":"math, left, three, pow, exp, int"}]},{"specId":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ln_approx:843"},{"kind":"symbol","value":"exp_approx:858"},{"kind":"terms","value":"exp, int, pow, approx"}]},{"specId":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ln_approx:783"},{"kind":"symbol","value":"exp_approx:798"},{"kind":"terms","value":"exp, int, pow, approx"}]},{"specId":"0698e7d7e9693a49683c92c75812220f30b4025bee6ab7765c34e5ad5ca183db","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"ln_approx:224"},{"kind":"symbol","value":"exp_approx:243"},{"kind":"terms","value":"exp, pow, approx"}]}]},{"key":"ghashtag/t27#2688","repo":"ghashtag/t27","number":2688,"title":"35 of 55 import-blocked specs depend on a Rust-dialect module: a ceiling, not a backlog","hits":[{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"terms","value":"math, constants, pow"}]},{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"rust, blocked"}]}]},{"key":"ghashtag/t27#2686","repo":"ghashtag/t27","number":2686,"title":"Gate Topology audits 15 of 45 workflows and misses two live violators; coq-proofs.yml has never been green in 50 runs","hits":[{"specId":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"topology, status, active, wired, red, green"}]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"topology, status, active, wired, red, green"}]},{"specId":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"topology, decision, gate"}]}]},{"key":"ghashtag/t27#2685","repo":"ghashtag/t27","number":2685,"title":"PRL draft outline claims zero admitted lemmas; proofs/ contains 32, and the cited audit trail never existed","hits":[{"specId":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"zero, document, contains, inside"}]},{"specId":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"claims, zero"}]},{"specId":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"zero, contains"}]}]},{"key":"ghashtag/t27#2684","repo":"ghashtag/t27","number":2684,"title":"use std emits @import(\"std.zig\")","hits":[{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"zig, std"}]}]},{"key":"ghashtag/t27#2683","repo":"ghashtag/t27","number":2683,"title":"use a::b::Symbol imports a symbol, not a module; the emitter treats the last segment as a filename","hits":[{"specId":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"PHI_INV:14"},{"kind":"terms","value":"math, sacred, physics, phi, inv, target"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"PHI_INV:12"},{"kind":"terms","value":"math, sacred, physics, phi, inv"}]},{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"math, phi, inv, measured"}]},{"specId":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"PHI_INV:17"},{"kind":"terms","value":"math, phi, inv, measured"}]},{"specId":"c757522b59a7fed58d8f2409a674a72f552639d3978979bfc3b685f70e835b58","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"PHI_INV:14"},{"kind":"terms","value":"physics, phi, inv, sacred"}]}]},{"key":"ghashtag/t27#2682","repo":"ghashtag/t27","number":2682,"title":"Correction: parent imports are legal under a tree-root; the revert in #2681 was wrong","hits":[{"specId":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"entry, parent, tree"}]},{"specId":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"entry, parent, tree"}]}]},{"key":"ghashtag/t27#2681","repo":"ghashtag/t27","number":2681,"title":"Relative parent imports are illegal in Zig; the emitted tree cannot build either way","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"valid, path, compile, project, build, zig"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"zig, imports, constants, case"}]},{"specId":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"parent, tree"}]},{"specId":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"parent, tree"}]},{"specId":"4a45d372cba73c1dabe74e1bf33ff88abd82d4b528312bd2cd1ec5aa12561196","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"tree, build"}]}]},{"key":"ghashtag/t27#2680","repo":"ghashtag/t27","number":2680,"title":"Every import dropped its module path: 92 of 144 valid specs import a file that is not there","hits":[{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"path, dropped, map"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"path, dropped, map"}]}]},{"key":"ghashtag/t27#2679","repo":"ghashtag/t27","number":2679,"title":"zig_run_scan reports on a 40-spec sample; run the whole population","hits":[]},{"key":"ghashtag/t27#2678","repo":"ghashtag/t27","number":2678,"title":"copy_propagate turns 'return result' into 'return undefined' when the write is inside a loop","hits":[{"specId":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"ternary, word, write, copy, pack"}]},{"specId":"4ec184e2b90d849d42a837ef1be0c6f19e55e21f94793b6dd288a84dd0a89877","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"write, copy"}]}]},{"key":"ghashtag/t27#2677","repo":"ghashtag/t27","number":2677,"title":"specs/base/types.t27: a byte cannot hold eight trits, and pack ignores byte indexing","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2066,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"TRITS_PER_BYTE:32"},{"kind":"symbol","value":"PackedTrit:41"},{"kind":"symbol","value":"WORD_BYTES:51"},{"kind":"symbol","value":"TernaryWord:53"},{"kind":"symbol","value":"pack_trit:159"},{"kind":"symbol","value":"ternary_word_pack:194"},{"kind":"symbol","value":"byte_idx:502"},{"kind":"symbol","value":"byte_idx:517"},{"kind":"symbol","value":"byte_idx:543"},{"kind":"symbol","value":"byte_idx:1063"},{"kind":"symbol","value":"byte_idx:1112"},{"kind":"terms","value":"base, one, trit, packed, bits, per, trits, byte"}]},{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TRITS_PER_BYTE:23"},{"kind":"terms","value":"ternary, packed, trit, trits, per, byte, bytes, pack"}]},{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TRITS_PER_BYTE:22"},{"kind":"terms","value":"ternary, trits, per, byte, packed, bytes, int, pack"}]},{"specId":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"TRITS_PER_BYTE:27"},{"kind":"terms","value":"base, ternary, trit, bits, per, byte, trits, bit"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"PackedTrit:12"},{"kind":"symbol","value":"TernaryWord:17"},{"kind":"symbol","value":"pack_trit:102"},{"kind":"terms","value":"compiler, trit, packed, ternary, word, pack, int, time"}]}]},{"key":"ghashtag/t27#2676","repo":"ghashtag/t27","number":2676,"title":"Emitted assertions never ran: bare expect() drops an error union","hits":[]},{"key":"ghashtag/t27#2675","repo":"ghashtag/t27","number":2675,"title":"Bind discarded call results; and the run-scan harness was writing into the repo","hits":[{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"harness, results, build, report"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"call, bind, cache"}]}]},{"key":"ghashtag/t27#2674","repo":"ghashtag/t27","number":2674,"title":"Unwritten bodies should @panic, not @compileError; and my sample was alphabetical","hits":[{"specId":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"compile, sample"}]}]},{"key":"ghashtag/t27#2673","repo":"ghashtag/t27","number":2673,"title":"ast-check VALID does not mean it compiles: 29 of 40, and one emitted line caused 13","hits":[{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"zig, ast, block, invariant, valid"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"zero, one, mean"}]}]},{"key":"ghashtag/t27#2672","repo":"ghashtag/t27","number":2672,"title":"Interleave clauses with statements, and in all three block kinds: 232 leaks down to 1","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"valid, kinds, path, block, invariant, put"}]}]},{"key":"ghashtag/t27#2671","repo":"ghashtag/t27","number":2671,"title":"Behaviour clauses inside braced test blocks were parsed as statements: 232 of them","hits":[{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"approximately_equal:238"},{"kind":"terms","value":"math, abs, approx, tolerance, approximately, equal"}]}]},{"key":"ghashtag/t27#2670","repo":"ghashtag/t27","number":2670,"title":"Every crate is now built by a workflow: 30 of 30, baseline empty","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"valid, baseline, empty, holds"}]}]},{"key":"ghashtag/t27#2669","repo":"ghashtag/t27","number":2669,"title":"The one crate no workflow compiles is the one that broke 169 specs","hits":[]},{"key":"ghashtag/t27#2668","repo":"ghashtag/t27","number":2668,"title":"Rank classes by specs-lifted, not frequency: one name blocks 150 of 189","hits":[{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"approximately_equal:238"},{"kind":"terms","value":"measured, int, approximately, equal"}]},{"specId":"9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"classes, rank, default, valid"}]}]},{"key":"ghashtag/t27#2667","repo":"ghashtag/t27","number":2667,"title":"The 99 pointless discards were the specs', not mine; dropping the redundant ones lifts 5","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2007,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, one"}]}]},{"key":"ghashtag/t27#2665","repo":"ghashtag/t27","number":2665,"title":"Target near-valid specs instead of walls: string comparison fixed, validity moves after eight iterations","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"trit_add:81"},{"kind":"terms","value":"zero, one, trit, neg, pos, compare, right"}]},{"specId":"4468de25e4e94f883c3cd64306eb5cff4e69992728e7211b73cacfe2c83bc3c8","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"trit_add:35"},{"kind":"terms","value":"trit, neg, zero, pos, valid, compare"}]},{"specId":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"trit_add:46"},{"kind":"terms","value":"trit, neg, zero, pos"}]},{"specId":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"trit_add:16"},{"kind":"terms","value":"trit, neg, zero, pos"}]},{"specId":"991f6796a14b724c6c6d7ad11fa08025190c5fc6ee4e48506870bfdcc8ad5e5b","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"trit_add:38"},{"kind":"terms","value":"zero, one, trit"}]}]},{"key":"ghashtag/t27#2664","repo":"ghashtag/t27","number":2664,"title":"Bracketed lists come from the clause renderer, not the declaration emitters","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TRIT_NEG:37"},{"kind":"symbol","value":"TRIT_ZERO:38"},{"kind":"symbol","value":"TRIT_POS:39"},{"kind":"terms","value":"trits, trit, neg, zero, pos, self, two"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"trit_pos:503"},{"kind":"symbol","value":"trit_pos:518"},{"kind":"symbol","value":"trit_pos:544"},{"kind":"symbol","value":"trit_pos:1064"},{"kind":"symbol","value":"trit_pos:1113"},{"kind":"terms","value":"zero, one, trit, trits, neg, pos, nor"}]},{"specId":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"TRIT_NEG:16"},{"kind":"symbol","value":"TRIT_ZERO:17"},{"kind":"symbol","value":"TRIT_POS:18"},{"kind":"terms","value":"ops, trit, neg, zero, pos, read"}]},{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TRIT_NEG:18"},{"kind":"symbol","value":"TRIT_ZERO:19"},{"kind":"symbol","value":"TRIT_POS:20"},{"kind":"terms","value":"trit, neg, zero, pos, trits, valid"}]},{"specId":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TRIT_NEG:16"},{"kind":"symbol","value":"TRIT_ZERO:17"},{"kind":"symbol","value":"TRIT_POS:18"},{"kind":"terms","value":"trit, neg, zero, pos, trits, valid"}]}]},{"key":"ghashtag/t27#2662","repo":"ghashtag/t27","number":2662,"title":"Cluster the walls by skeleton; keywords in call position drop the statement","hits":[{"specId":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"SacredRule:22"},{"kind":"terms","value":"sacred, rule"}]},{"specId":"9a2f505cc2386228c7461e99dcea598525cb97ef5f4e41629fe0a68a45b21434","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"SacredRule:13"},{"kind":"terms","value":"sacred, rule"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"call, switch, statement, enum"}]}]},{"key":"ghashtag/t27#2660","repo":"ghashtag/t27","number":2660,"title":"The gate blocked a correct fix because the parser reached more Rust; exempt dialect files from the event ratchet","hits":[{"specId":"5182f6fa681faab5e767959d49e8be18f2305b6b9bb41130dacbf9974da4eef4","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/test_framework/property_test_template.t27"},{"kind":"symbol","value":"PropertyTestConfig:15"},{"kind":"symbol","value":"for_all:97"},{"kind":"terms","value":"framework, property, template"}]},{"specId":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"TestResult:40"},{"kind":"symbol","value":"for_all:83"},{"kind":"terms","value":"framework, gate, json"}]},{"specId":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"rust, events, event, failed, total, fault"}]},{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"rust, framework, events, event"}]},{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"rust, level, blocked, total"}]}]},{"key":"ghashtag/t27#2658","repo":"ghashtag/t27","number":2658,"title":"The lexer drops the mantissa of every exponent literal; the fix trips the parse gate","hits":[{"specId":"5182f6fa681faab5e767959d49e8be18f2305b6b9bb41130dacbf9974da4eef4","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/test_framework/property_test_template.t27"},{"kind":"symbol","value":"PropertyTestConfig:15"},{"kind":"terms","value":"framework, property, template, diff, right"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"parser, parse, right, field, struct, literal, else"}]},{"specId":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"parser, token, parse, identifier, lexer"}]},{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"framework, tolerance, property, gate, parse"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"sign, exponent, mantissa, one"}]}]},{"key":"ghashtag/t27#2657","repo":"ghashtag/t27","number":2657,"title":"70 of 88 walls are still emitter-reachable; and a 538x miscount caught before commit","hits":[]},{"key":"ghashtag/t27#2655","repo":"ghashtag/t27","number":2655,"title":"Enum literals in switch prongs are the ninth binding site, and Zig blames the line before","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"compiler, level, parse, struct, literal, switch, enum"}]}]},{"key":"ghashtag/t27#2654","repo":"ghashtag/t27","number":2654,"title":"Anonymous struct return types: the last known declaration-loss class, two thirds of it","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1048,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"kind, top, level, parse, annotation, field, call, struct"}]},{"specId":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"KnowledgeGraph:83"},{"kind":"symbol","value":"findSimilar:157"},{"kind":"terms","value":"graph, knowledge, entities, find, similar, stats"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"lexer, token, kind"}]}]},{"key":"ghashtag/t27#2652","repo":"ghashtag/t27","number":2652,"title":"_magsub: the sticky tie arm is the addition rule, kept harmless only by never firing","hits":[]},{"key":"ghashtag/t27#2651","repo":"ghashtag/t27","number":2651,"title":"Function literals in expression position swallowed 20 more declarations","hits":[{"specId":"fdea8736ee309824c17924c5853d4025ba869d13c4d1ea46bf111e6f01373995","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"symbol","value":"SSECloseCode:60"},{"kind":"symbol","value":"SSEEvent:72"},{"kind":"terms","value":"sse, field, sseevent, sseclose"}]},{"specId":"402ebb2274036fffb23ef31ddd4a81532a3ae5db2bc2925851bfe78276923a33","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"SseEvent:66"},{"kind":"terms","value":"sse, position, callback, parse"}]},{"specId":"596d8c5a43c433eebb1c5df08d34b92e03c9697a4ac2f9343c1457246028593b","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"gen, declarations, expression"}]}]},{"key":"ghashtag/t27#2650","repo":"ghashtag/t27","number":2650,"title":"++ was lexed but never parsed: 20 declarations restored, and validity was rewarding the loss","hits":[{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"terms","value":"lsp, protocol, parse"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1065,"reasons":[{"kind":"symbol","value":"parse_expr:356"},{"kind":"symbol","value":"parse_struct_literal:683"},{"kind":"terms","value":"compiler, parser, kind, expect, level, parse, expr, right"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"compiler, token, kind"}]}]},{"key":"ghashtag/t27#2647","repo":"ghashtag/t27","number":2647,"title":"Struct-literal field values take a weaker parse path: ++ and string escapes lose the next declaration","hits":[{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"terms","value":"lsp, protocol, length, parse"}]},{"specId":"fdea8736ee309824c17924c5853d4025ba869d13c4d1ea46bf111e6f01373995","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"terms","value":"sse, event, field"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"parser, brace, level, parse, comparison, field, struct, literal"}]},{"specId":"fe0dd93dce72f6dd9eb5c505c14b2d99b06211a005574a31cb8642b32e3ca070","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"argument, take, parse, literal"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"work, text, case, values, field"}]}]},{"key":"ghashtag/t27#2646","repo":"ghashtag/t27","number":2646,"title":"50 public declarations vanish with no recovery event, and the gate cannot see them","hits":[{"specId":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/graph/knowledge_graph.t27"},{"kind":"symbol","value":"KnowledgeGraph:83"},{"kind":"terms","value":"graph, knowledge, entities, stats, load"}]},{"specId":"64341742c373e64a2823f6647d0f3898e0a26f6ff9197e3fd3092436f5912cce","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/api/sdk_contract.t27"},{"kind":"terms","value":"api, sdk, contract, position"}]},{"specId":"fdea8736ee309824c17924c5853d4025ba869d13c4d1ea46bf111e6f01373995","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"terms","value":"sse, event, set"}]},{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"terms","value":"lsp, protocol, json, parse"}]},{"specId":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/config/load.t27"},{"kind":"terms","value":"load, json, api"}]}]},{"key":"ghashtag/t27#2645","repo":"ghashtag/t27","number":2645,"title":"The lexer turns 0o777 into 0; and the nested-literal group needs the parser, not the emitter","hits":[{"specId":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"IgnorePattern:129"},{"kind":"terms","value":"node, ignore, pattern, size, text"}]},{"specId":"db2809acd89c1cfc6c5240479183aab0a43a056e2e3e157075e8b33e1be480e1","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"BOOT_MAGIC:13"},{"kind":"terms","value":"boot, size, magic"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"parser, node, field, struct, literal, array, else, var"}]},{"specId":"3c7877343745c5377eba7ca7c8d9f9b6f44ced0b8a99a1c466f6b54dd1af969e","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"parser, lexer, identifier, digit, hex"}]},{"specId":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"parser, node, identifier, lexer"}]}]},{"key":"ghashtag/t27#2643","repo":"ghashtag/t27","number":2643,"title":"Struct-literal field names are the eighth binding site; group walls by line shape, not message","hits":[{"specId":"a47276fc0044d60446b49d876a5ead70730fb7f63a196aa25f2b7b28887042c3","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"PublishResult:53"},{"kind":"terms","value":"publish, event"}]},{"specId":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"LinkResult:150"},{"kind":"terms","value":"link, total"}]},{"specId":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"LinkResult:27"},{"kind":"terms","value":"link"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"parser, parse, expr, field, struct, literal, decl, enum"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"field, valid, group, expected, groups, view"}]}]},{"key":"ghashtag/t27#2642","repo":"ghashtag/t27","number":2642,"title":"Rename parameters that shadow a file-scope declaration, and their uses","hits":[{"specId":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"est_static:106"},{"kind":"symbol","value":"total_resources:110"},{"kind":"terms","value":"power, static, est, total, resources"}]},{"specId":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"total_resources:49"},{"kind":"terms","value":"power, total, resources, est, static"}]},{"specId":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"TOTAL_RESOURCES:12"},{"kind":"terms","value":"testbench, total, resources"}]}]},{"key":"ghashtag/t27#2641","repo":"ghashtag/t27","number":2641,"title":"Retract both audit hits: median falls for composition, not only for halting","hits":[]},{"key":"ghashtag/t27#2639","repo":"ghashtag/t27","number":2639,"title":"Drop 572 generated stub tests: valid 136 to 237, asserting 96 to 197, on its own branch","hits":[{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"zig, main, case, parse, list, branch, exists, valid"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"compiler, valid, list, total, zig, branch"}]}]},{"key":"ghashtag/t27#2638","repo":"ghashtag/t27","number":2638,"title":"Measure which errors halt the checker instead of word-matching them; the word list is currently right","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, word, right"}]},{"specId":"ed13dbd99f709317378a87dc3d427eceabc5eab1ddac88c52b0cbf408344585b","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"word, right"}]}]},{"key":"ghashtag/t27#2636","repo":"ghashtag/t27","number":2636,"title":"The automatic std import was never deduplicated — and duplicate errors are walls my classifier missed","hits":[]},{"key":"ghashtag/t27#2635","repo":"ghashtag/t27","number":2635,"title":"Census every extra_* field: try is fine, the repeat literal is not, and the count was 90 not 17","hits":[{"specId":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"EMBED_DIM:20"},{"kind":"terms","value":"dim, embed, compute, values"}]},{"specId":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"ParameterSchema:46"},{"kind":"symbol","value":"ToolError:146"},{"kind":"terms","value":"schema, tool, parameter, length"}]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"EMBED_DIM:24"},{"kind":"terms","value":"dim, embed, over"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"node, kind, semicolon, parse, field, literal, array, var"}]},{"specId":"2b4c28dfcddbd8861d6e47080b8dab052a46a065a4e5ff773523abd15afa6fbc","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"valid, literal, field, parse"}]}]},{"key":"ghashtag/t27#2633","repo":"ghashtag/t27","number":2633,"title":"The element list was in the array-SIZE field, and the existing rule reads raw text","hits":[{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"PinAssignment:24"},{"kind":"symbol","value":"PIN_CLK:41"},{"kind":"symbol","value":"PIN_RST_N:51"},{"kind":"symbol","value":"PIN_UART_RX:61"},{"kind":"symbol","value":"PIN_LED_7:151"},{"kind":"terms","value":"uart, pin, assignment, clk, rst, led, pins"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:36"},{"kind":"symbol","value":"PIN_RST_N:46"},{"kind":"symbol","value":"PIN_UART_RX:66"},{"kind":"terms","value":"uart, pin, assignment, clk, rst, led"}]},{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:45"},{"kind":"symbol","value":"PIN_RST_N:57"},{"kind":"symbol","value":"PIN_UART_RX:69"},{"kind":"symbol","value":"PIN_LED_7:225"},{"kind":"terms","value":"uart, pin, assignment, clk, rst, led"}]},{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"max_len:235"},{"kind":"symbol","value":"max_len:272"},{"kind":"terms","value":"size, len, right"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"max_len:274"},{"kind":"terms","value":"len, item"}]}]},{"key":"ghashtag/t27#2631","repo":"ghashtag/t27","number":2631,"title":"Parameter and expression names are the sixth and seventh sites that skip zig_ident","hits":[{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"PinAssignment:24"},{"kind":"symbol","value":"PIN_CLK:41"},{"kind":"symbol","value":"PIN_RST_N:51"},{"kind":"terms","value":"pin, assignment, clk, rst, pins"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:36"},{"kind":"symbol","value":"PIN_RST_N:46"},{"kind":"terms","value":"pin, assignment, clk, rst"}]},{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:45"},{"kind":"symbol","value":"PIN_RST_N:57"},{"kind":"terms","value":"pin, assignment, clk, rst"}]},{"specId":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"InstanceState:29"},{"kind":"symbol","value":"InstanceID:68"},{"kind":"symbol","value":"status_response_create:370"},{"kind":"terms","value":"instance, status, list, response"}]},{"specId":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"StorageError:66"},{"kind":"terms","value":"storage, key, found"}]}]},{"key":"ghashtag/t27#2629","repo":"ghashtag/t27","number":2629,"title":"CSE hoists across mutations and loop_unroll cannot fire: the census completes 4-for-4","hits":[]},{"key":"ghashtag/t27#2628","repo":"ghashtag/t27","number":2628,"title":"strength_reduce turns signed division into a shift: -3/2 is -1, -3>>1 is -2","hits":[]},{"key":"ghashtag/t27#2627","repo":"ghashtag/t27","number":2627,"title":"Census the optimizer: 4 of 7 passes have no precondition, and dead_store_elim deletes calls","hits":[{"specId":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"optimizer, pass, dead, strength, optimize"}]}]},{"key":"ghashtag/t27#2626","repo":"ghashtag/t27","number":2626,"title":"copy_propagate had no safety condition and was silently discarding mutations","hits":[{"specId":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","relation":"reference","coverage":"unverified","score":1027,"reasons":[{"kind":"symbol","value":"OptStats:25"},{"kind":"terms","value":"opt, pass, stats, pure, stmt, expr"}]}]},{"key":"ghashtag/t27#2623","repo":"ghashtag/t27","number":2623,"title":"default_input has no author: the converter generated 169 specs' worth of hollow tests","hits":[]},{"key":"ghashtag/t27#2622","repo":"ghashtag/t27","number":2622,"title":"Owner decision: LOOP-RULES.md is sealed and two of its clauses are observed by nobody","hits":[]},{"key":"ghashtag/t27#2620","repo":"ghashtag/t27","number":2620,"title":"Close the unused-local class: nested if/while/for bodies were the last 23","hits":[{"specId":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"AccountID:13"},{"kind":"terms","value":"account"}]},{"specId":"e58af5df8780b31b21f3a23b1ca62e8948f1327130a08f9ff3ec57a56c276d7d","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"AccountID:12"},{"kind":"terms","value":"account"}]},{"specId":"76a39f4c7d0e78833ccaedd7533f74b68e8350453f0198b2c1cf370138a5419e","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"class, local, time"}]}]},{"key":"ghashtag/t27#2619","repo":"ghashtag/t27","number":2619,"title":"The sibling scan was scoped by the instrument, not by the data: 58 in fn bodies","hits":[]},{"key":"ghashtag/t27#2618","repo":"ghashtag/t27","number":2618,"title":"Unused locals and never-mutated vars in test bodies: the sibling scan answers both","hits":[]},{"key":"ghashtag/t27#2617","repo":"ghashtag/t27","number":2617,"title":"Fix the rendering defects #2615 introduced, and correct which ones were mine","hits":[{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"calc_baud_divisor:76"},{"kind":"terms","value":"baud, calc, divisor"}]},{"specId":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"calc_baud_divisor:52"},{"kind":"terms","value":"baud, calc, divisor"}]},{"specId":"bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"ErrorCode:32"},{"kind":"terms","value":"tokens"}]},{"specId":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"ErrorCode:3"},{"kind":"terms","value":"parse"}]},{"specId":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"ErrorCode:21"}]}]},{"key":"ghashtag/t27#2615","repo":"ghashtag/t27","number":2615,"title":"Capture given/when/then and render them: 6540 clauses, and 169 specs share one unfilled placeholder","hits":[{"specId":"a8e61e3999e7a9f8b70f50c9e4be8038c91b50ed589aac52c50eb38a14295197","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/tri/pipeline/builder.t27"},{"kind":"terms","value":"pipeline, builder"}]}]},{"key":"ghashtag/t27#2614","repo":"ghashtag/t27","number":2614,"title":"anytype for generics nested in type applications: 78 of 79 remaining sites","hits":[]},{"key":"ghashtag/t27#2613","repo":"ghashtag/t27","number":2613,"title":"Bind eq/not/abs to operators, guarded by the spec's own declarations","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, zero, self, abs, len, two"}]},{"specId":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"STAGE_INIT:11"},{"kind":"terms","value":"pipeline, stage, init, parse, save"}]}]},{"key":"ghashtag/t27#2611","repo":"ghashtag/t27","number":2611,"title":"Half the undeclared identifiers are reachable: 50 emitter-side, 56 corpus-side","hits":[{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"HybridBigInt:56"},{"kind":"terms","value":"hybrid, big, int, trit"}]},{"specId":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"HybridBigInt:32"},{"kind":"terms","value":"hybrid, big, int"}]}]},{"key":"ghashtag/t27#2610","repo":"ghashtag/t27","number":2610,"title":"Result is Zig's E!T: 182 angle-bracket generics, 163 with exact counterparts","hits":[{"specId":"e58af5df8780b31b21f3a23b1ca62e8948f1327130a08f9ff3ec57a56c276d7d","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"AccountID:12"},{"kind":"symbol","value":"AccessToken:14"},{"kind":"symbol","value":"AccountError:24"},{"kind":"terms","value":"account, access, token, list"}]},{"specId":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"AccountID:13"},{"kind":"symbol","value":"AccessToken:19"},{"kind":"symbol","value":"AccountError:111"},{"kind":"terms","value":"account, access, token"}]},{"specId":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"LockMode:31"},{"kind":"terms","value":"storage, lock, mode"}]},{"specId":"9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"ShellError:111"},{"kind":"terms","value":"shell"}]},{"specId":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"zig, bracket"}]}]},{"key":"ghashtag/t27#2609","repo":"ghashtag/t27","number":2609,"title":"Optionals are emitted postfix; 62 positions, not the 6 the histogram showed","hits":[{"specId":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"GitError:70"},{"kind":"terms","value":"git, schema, parse"}]},{"specId":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"GovernanceAgent:13"},{"kind":"symbol","value":"SacredRule:22"},{"kind":"terms","value":"sacred, rule, score"}]},{"specId":"9a2f505cc2386228c7461e99dcea598525cb97ef5f4e41629fe0a68a45b21434","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"SacredRule:13"},{"kind":"terms","value":"sacred, rule"}]},{"specId":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"ExitCode:17"},{"kind":"terms","value":"exit"}]}]},{"key":"ghashtag/t27#2608","repo":"ghashtag/t27","number":2608,"title":"Explicitly valued enums need a tag type, derived from the values or not at all","hits":[{"specId":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"DeployState:84"},{"kind":"terms","value":"deploy"}]}]},{"key":"ghashtag/t27#2607","repo":"ghashtag/t27","number":2607,"title":"Print how much of the error total is capped, so the metric cannot be misread again","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, parse"}]},{"specId":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"total, capped"}]}]},{"key":"ghashtag/t27#2606","repo":"ghashtag/t27","number":2606,"title":"904 emitted lines spell Zig paths with :: and it read as 45 errors","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":2054,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, node, parse, expr, call, struct, literal"}]},{"specId":"9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"ShellType:13"},{"kind":"terms","value":"shell"}]}]},{"key":"ghashtag/t27#2604","repo":"ghashtag/t27","number":2604,"title":"Function names are the fifth binding site that skips zig_ident","hits":[]},{"key":"ghashtag/t27#2603","repo":"ghashtag/t27","number":2603,"title":"A parse error is a wall: total error count is not monotone in correctness","hits":[]},{"key":"ghashtag/t27#2601","repo":"ghashtag/t27","number":2601,"title":"Brace-less bodies are three kinds not two: 188 mixed, and the statement population is 551 not 80","hits":[{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":59,"reasons":[{"kind":"terms","value":"parser, parsing, skip, brace, top, level, boundary, parse"}]},{"specId":"3b247694659c1fe7f9860804f7a960b8e8ca357dca00dafa651527b01487a667","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"range, less, two"}]}]},{"key":"ghashtag/t27#2599","repo":"ghashtag/t27","number":2599,"title":"Correction to #2582: the SVA backend takes arguments, not specs — 1610 DSL blocks reach no target at all","hits":[{"specId":"94369edf5d1ff6cdc3ca1d798a5a5e7a248c0c03c4487d5514bf4299d45237a1","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/base/ternary_add.t27"},{"kind":"terms","value":"base, ternary"}]}]},{"key":"ghashtag/t27#2597","repo":"ghashtag/t27","number":2597,"title":"Render generic parameters as anytype: -22 errors, +3 valid, and the constraint the spec wrote is gone","hits":[{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"PackedBigInt:58"},{"kind":"terms","value":"packed, trit, big, int, valid"}]},{"specId":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"array, view, slice, empty"}]},{"specId":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"constraint, parse, valid"}]}]},{"key":"ghashtag/t27#2596","repo":"ghashtag/t27","number":2596,"title":"Indentation-delimited test bodies: 564 not 2766, attempted and reverted on the gate","hits":[{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart"}]}]},{"key":"ghashtag/t27#2595","repo":"ghashtag/t27","number":2595,"title":"Report strict validity beside permissive: 50/454 against 200/454","hits":[{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"strict, permissive, valid"}]}]},{"key":"ghashtag/t27#2593","repo":"ghashtag/t27","number":2593,"title":"53% of emitted test blocks are empty: brace-less bodies are silently skipped, and 150 of 195 valid specs contain one","hits":[{"specId":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"auth_result:17"},{"kind":"terms","value":"e2e, full, flow, auth, sync"}]},{"specId":"bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"auth_result:321"},{"kind":"terms","value":"auth, authenticated, status, find"}]},{"specId":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"auth_status:17"},{"kind":"terms","value":"auth, authenticated, status"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"assertions, status, skip, case, assert, less, failed, skipped"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"assertions, status, skip, case, assert, less, failed, skipped"}]}]},{"key":"ghashtag/t27#2591","repo":"ghashtag/t27","number":2591,"title":"Bare for statements: 2 loops recovered, and 235 of the 240 sites I cited were out of scope","hits":[{"specId":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/file/schema.t27"},{"kind":"terms","value":"schema, read, text"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"parse_for_stmt:1041"},{"kind":"terms","value":"kind, expect, stmt, parse"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"token, kind"}]}]},{"key":"ghashtag/t27#2589","repo":"ghashtag/t27","number":2589,"title":"97 of 104 unused locals are used by the spec: bare if statements were being discarded too","hits":[{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/fpga/boards/arty_a7_integration.t27"},{"kind":"terms","value":"boards, arty, integration, clk, pin, pins"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"parse_if_stmt:965"},{"kind":"symbol","value":"parse_while_stmt:1018"},{"kind":"symbol","value":"parse_for_stmt:1041"},{"kind":"terms","value":"kind, expect, brace, stmt, parse, local, var"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"token, kind"}]}]},{"key":"ghashtag/t27#2588","repo":"ghashtag/t27","number":2588,"title":"While loops needed optional parens and struct-literal suppression: gate 154 -> 111 events","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1065,"reasons":[{"kind":"symbol","value":"parse_expr:356"},{"kind":"symbol","value":"parse_while_stmt:1018"},{"kind":"terms","value":"parser, kind, expect, top, level, stmt, parse, expr"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"token, kind, identifier"}]}]},{"key":"ghashtag/t27#2587","repo":"ghashtag/t27","number":2587,"title":"Reverted: I deleted live loop counters. The emitter drops 138 while loops and that is the real defect","hits":[{"specId":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/fpga/testbench/timing_tb.t27"},{"kind":"symbol","value":"compute_slack:38"},{"kind":"symbol","value":"compute_fmax:42"},{"kind":"terms","value":"testbench, timing, fmax, compute, slack"}]}]},{"key":"ghashtag/t27#2584","repo":"ghashtag/t27","number":2584,"title":"Land reentrant struct-body parsing: one valid spec for 161 silently dropped methods","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, zig"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"compiler, parsing, skip, parse, right, call, struct"}]}]},{"key":"ghashtag/t27#2583","repo":"ghashtag/t27","number":2583,"title":"Collect the layer #2580 exposed: 27 inert unused locals, one file excluded by its own check","hits":[{"specId":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/fpga/testbench/hir_tb.t27"},{"kind":"terms","value":"testbench, hir"}]},{"specId":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/fpga/testbench/timing_tb.t27"},{"kind":"terms","value":"testbench, timing"}]},{"specId":"2d603f5515afaf26e741ea96ddc89c131a83ab75694988fd7bd7e795c6933176","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/fpga/testbench/memory_tb.t27"},{"kind":"terms","value":"testbench, memory"}]},{"specId":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"receive_async:54"},{"kind":"terms","value":"testbench, async, receive"}]}]},{"key":"ghashtag/t27#2582","repo":"ghashtag/t27","number":2582,"title":"The behavior DSL is not a defect: it has its own SVA backend, and the class is 1 error not 2991","hits":[]},{"key":"ghashtag/t27#2580","repo":"ghashtag/t27","number":2580,"title":"The void return-type default was computed and unreachable: 31 specs, +119 newly visible errors","hits":[]},{"key":"ghashtag/t27#2578","repo":"ghashtag/t27","number":2578,"title":"Trit is 36 specs wide and 8 errors deep, and the corpus offers two import paths for it","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"terms","value":"base, ops, tritype, one, trit, two"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, tritype, one, trit, left"}]},{"specId":"991f6796a14b724c6c6d7ad11fa08025190c5fc6ee4e48506870bfdcc8ad5e5b","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/base/seed.t27"},{"kind":"terms","value":"base, seed, one, trit"}]},{"specId":"5dabbb6bfbcf210aea527ec2c66938f2e251ce054061d1172f98a44f09d9635b","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/numeric/tf3.t27"},{"kind":"terms","value":"numeric, tf3, nan"}]},{"specId":"df74b541158c71d5463152e377813a5491def4207dbffe97f6fd78b23cf6d4d9","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"numeric, corpus, wide"}]}]},{"key":"ghashtag/t27#2577","repo":"ghashtag/t27","number":2577,"title":"Hyphenated use-paths collapsed six imports into one, and my dedup made it look tidy","hits":[{"specId":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"terms","value":"lsp, language, zig"}]},{"specId":"2906d08dfadc55f37621e8e83a6f6ed4ee79105f826043582bbc3523c2b7ea88","relation":"reference","coverage":"unverified","score":2005,"reasons":[{"kind":"path","value":"specs/lsp/server.t27"},{"kind":"terms","value":"lsp"}]},{"specId":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"DiagnosticSeverity:57"},{"kind":"terms","value":"lsp, schema, zero, position, range, diagnostic, severity, sync"}]},{"specId":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"TriType:32"},{"kind":"terms","value":"field, parse, valid"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"zero, nan, base, one, six"}]}]},{"key":"ghashtag/t27#2576","repo":"ghashtag/t27","number":2576,"title":"The generic-T route is blocked: 103 declarations fixed would break 103 calls","hits":[{"specId":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"array, view, slice"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"call, route, probe, calls, decision, answer"}]}]},{"key":"ghashtag/t27#2575","repo":"ghashtag/t27","number":2575,"title":"Std.mem.Allocator should be std: 81 lines, +27 valid specs, no compiler change","hits":[{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"PackedBigInt:58"},{"kind":"terms","value":"packed, trit, big, int, valid"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"zig, std, ast, case, parse, allocator, exists, valid"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"compiler, ast, mem, case, assert, expect"}]},{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"compiler, emit, int, generic, mem"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"compiler, ast, mem"}]}]},{"key":"ghashtag/t27#2573","repo":"ghashtag/t27","number":2573,"title":"Qualified type names were split into parameters: 31 of 36 in a class I had misread","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"compiler, parser, kind, parse, annotation, right"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"compiler, token, kind, identifier"}]},{"specId":"b5714e6f7e9a0a68a29968ab50f4855843bdf9b856ab301bc3c402c9f900a62a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"word_wrap:24"},{"kind":"terms","value":"word, wrap"}]}]},{"key":"ghashtag/t27#2572","repo":"ghashtag/t27","number":2572,"title":"String == is the emitter's job, not the corpus's: -21 errors, +2 valid, and a reclassification","hits":[{"specId":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"symbol","value":"env_vars:258"},{"kind":"symbol","value":"env_vars:271"},{"kind":"symbol","value":"env_vars:277"},{"kind":"terms","value":"cloud, railway, deploy, phi, env, vars"}]},{"specId":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/fpga/assembler.t27"},{"kind":"terms","value":"assembler, instr"}]},{"specId":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/fpga/axi4.t27"},{"kind":"terms","value":"axi4, size, total"}]}]},{"key":"ghashtag/t27#2571","repo":"ghashtag/t27","number":2571,"title":"The seventh discard spec, exposed by the previous fix: -21 errors, +1 valid","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"terms","value":"base, ops, one, two, diff"}]}]},{"key":"ghashtag/t27#2569","repo":"ghashtag/t27","number":2569,"title":"Bracketed array values emitted as Rust syntax: +20 errors, all newly visible in one spec","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"symbol","value":"mult_table:34"},{"kind":"terms","value":"base, ops, one, mult, table, diff"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parser, parsing, brace, parse, expr, literal, array, local"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"rust, syntax, variable, array, declared"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"syntax, variable, array, declared"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"table, mult, base, one, values"}]}]},{"key":"ghashtag/t27#2567","repo":"ghashtag/t27","number":2567,"title":"Enum members were the fifth keyword binding site: +1 valid, +4 errors, and both are correct","hits":[{"specId":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/fpga/formal.t27"},{"kind":"terms","value":"formal"}]},{"specId":"fdea8736ee309824c17924c5853d4025ba869d13c4d1ea46bf111e6f01373995","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"terms","value":"sse"}]},{"specId":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"members, created, valid, counts"}]},{"specId":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"total, members, shape, valid"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"members, fields, valid"}]}]},{"key":"ghashtag/t27#2566","repo":"ghashtag/t27","number":2566,"title":"Owner decision: emitted Verilog carries widths that cannot be real, and the release build is the one that hides it","hits":[{"specId":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/compiler/stdlib.t27"},{"kind":"terms","value":"compiler, stdlib, str, map, empty, u32"}]},{"specId":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/fpga/formal.t27"},{"kind":"symbol","value":"CoverPoint:57"},{"kind":"symbol","value":"cover_point:135"},{"kind":"terms","value":"formal, cover, point, str"}]},{"specId":"bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/memory/notebooklm.t27"},{"kind":"terms","value":"memory, notebooklm, text"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"VerilogCodegen:16"},{"kind":"terms","value":"compiler, codegen, verilog, width, bits, memory, decl, str"}]},{"specId":"fb7ac4208772624a36f6651fd54d4c1347a96bad3b78093ee5c248f42f389a2a","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"VerilogCodegen:16"},{"kind":"symbol","value":"VerilogCodegen:28"},{"kind":"symbol","value":"VerilogCodegen:62"},{"kind":"symbol","value":"VerilogCodegen:108"},{"kind":"symbol","value":"VerilogCodegen:119"},{"kind":"symbol","value":"VerilogCodegen:131"},{"kind":"symbol","value":"VerilogCodegen:153"},{"kind":"symbol","value":"VerilogCodegen:193"},{"kind":"symbol","value":"VerilogCodegen:217"},{"kind":"symbol","value":"VerilogCodegen:238"},{"kind":"symbol","value":"VerilogCodegen:255"},{"kind":"symbol","value":"VerilogCodegen:276"},{"kind":"symbol","value":"VerilogCodegen:287"},{"kind":"symbol","value":"VerilogCodegen:304"},{"kind":"symbol","value":"VerilogCodegen:320"},{"kind":"symbol","value":"VerilogCodegen:331"},{"kind":"symbol","value":"VerilogCodegen:339"},{"kind":"symbol","value":"VerilogCodegen:351"},{"kind":"symbol","value":"VerilogCodegen:362"},{"kind":"symbol","value":"VerilogCodegen:372"},{"kind":"symbol","value":"VerilogCodegen:442"},{"kind":"symbol","value":"VerilogCodegen:448"},{"kind":"symbol","value":"VerilogCodegen:524"},{"kind":"symbol","value":"VerilogCodegen:529"},{"kind":"symbol","value":"VerilogCodegen:540"},{"kind":"symbol","value":"VerilogCodegen:545"},{"kind":"terms","value":"compiler, codegen, verilog, width"}]}]},{"key":"ghashtag/t27#2565","repo":"ghashtag/t27","number":2565,"title":"var -> const fails the safety check that the discards passed: 1 flagged line of 24 identical","hits":[{"specId":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"symbol","value":"EnvVar:74"},{"kind":"terms","value":"cloud, railway, deploy, env, var, init"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, compiler, init, back"}]},{"specId":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/fpga/power.t27"},{"kind":"terms","value":"power, lut, per, total"}]},{"specId":"9fb0fcc0a0a24932ffc0181e6a6847e06936d35c5919c29d74f6decccdd8b5dd","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/fpga/ternary_isa.t27"},{"kind":"terms","value":"ternary, isa, lut, total"}]},{"specId":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/fpga/assembler.t27"},{"kind":"terms","value":"assembler, kind, text"}]}]},{"key":"ghashtag/t27#2564","repo":"ghashtag/t27","number":2564,"title":"Remove 86 pointless discards from 6 specs: -86 errors, no compiler change","hits":[{"specId":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"symbol","value":"env_vars:258"},{"kind":"symbol","value":"env_vars:271"},{"kind":"symbol","value":"env_vars:277"},{"kind":"terms","value":"cloud, railway, deploy, env, var, vars"}]},{"specId":"0e5ec1ea4a0131131475a2a3bdbd7877da2e335d7c37fb23d2fa3709bc7e6bad","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/lsp/client.t27"},{"kind":"terms","value":"lsp, client, size, text, kind, work"}]},{"specId":"2906d08dfadc55f37621e8e83a6f6ed4ee79105f826043582bbc3523c2b7ea88","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/lsp/server.t27"},{"kind":"terms","value":"lsp, size, kind, rename"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, one, six"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, size, compiler"}]}]},{"key":"ghashtag/t27#2562","repo":"ghashtag/t27","number":2562,"title":"The module/no-module gap was a composition effect: controlling for tests, it is 37% vs 37%","hits":[]},{"key":"ghashtag/t27#2559","repo":"ghashtag/t27","number":2559,"title":"Mutation cache key: an unreadable control hashes as an empty one, and the boundary between controls can move","hits":[{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"paths, path, bytes, control, loop, controls"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"paths, path, bytes, control, loop, controls"}]},{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"closed, one, control"}]},{"specId":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"hash, empty, key"}]},{"specId":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"key, cache"}]}]},{"key":"ghashtag/t27#2558","repo":"ghashtag/t27","number":2558,"title":"The pow check was correct and unreachable: it was inside the guard instead of in it","hits":[{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"has_tests:332"},{"kind":"symbol","value":"has_tests:418"},{"kind":"terms","value":"zig, ast, block, parse, path, gen, branch, valid"}]}]},{"key":"ghashtag/t27#2555","repo":"ghashtag/t27","number":2555,"title":"A pow wrapper: -50 errors, four wrong grep counts, and three wrong sampling conclusions","hits":[{"specId":"e6fc9237d381f9b29860d7a63126260d9baab643cd75dacf4fe4e8c92f754be7","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"math, sample, three, pow"}]}]},{"key":"ghashtag/t27#2553","repo":"ghashtag/t27","number":2553,"title":"Three pull requests have run almost no CI, and two of them change compiler.rs","hits":[]},{"key":"ghashtag/t27#2552","repo":"ghashtag/t27","number":2552,"title":"Generic errors 111 -> 84: the rest are in function signatures, where nothing records the parameter","hits":[{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"PackedBigInt:58"},{"kind":"terms","value":"packed, trit, big, int"}]}]},{"key":"ghashtag/t27#2551","repo":"ghashtag/t27","number":2551,"title":"Generic type parameters dropped from the declaration and kept in the body: -23 errors","hits":[{"specId":"74c47290c2b18db036f4247d5934d5023351923765d7f27d10ab41af05badba9","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"BTreeNode:13"},{"kind":"terms","value":"btree, node"}]},{"specId":"a522aeb649e6ff9cee8e8352992b5a81155c073aa0c62ff2896fdc5300dafc63","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"BTreeNode:18"},{"kind":"terms","value":"btree, node"}]}]},{"key":"ghashtag/t27#2549","repo":"ghashtag/t27","number":2549,"title":"Bind expect and assert when referenced: 135 -> 168 valid, and the differ was reporting zeros","hits":[{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"ast, block, assert, expect"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"zig, bind, block, assert"}]}]},{"key":"ghashtag/t27#2547","repo":"ghashtag/t27","number":2547,"title":"131 seals are stale: the spec changed after sealing","hits":[]},{"key":"ghashtag/t27#2545","repo":"ghashtag/t27","number":2545,"title":"The real error distribution: 86 invisible errors, and 22% of the total is corpus-side not emitter-side","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, size, compiler, back"}]}]},{"key":"ghashtag/t27#2542","repo":"ghashtag/t27","number":2542,"title":"The valid count went blind: add a total-error metric, and check the headline is not hollow","hits":[{"specId":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"vscode-trinity-swe/test_highlight.t27"},{"kind":"terms","value":"vscode, swe, highlight"}]},{"specId":"9cfdc672d8fb68169a02b45bf63bc1e4330f98cde9d44b4babd9e20a7111ce16","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"test_highlight.t27"},{"kind":"terms","value":"highlight"}]}]},{"key":"ghashtag/t27#2539","repo":"ghashtag/t27","number":2539,"title":"Zig keywords emitted as identifiers: 20 specs -> 0, across four binding sites","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"pack_trit:159"},{"kind":"terms","value":"zero, one, trit, packed, pack, left, right"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"pack_trit:102"},{"kind":"terms","value":"trit, packed, pack, time"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"pack_trit:105"},{"kind":"terms","value":"zero, trit, pack, read"}]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"error_create:189"},{"kind":"terms","value":"rule, path"}]},{"specId":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"error_create:285"},{"kind":"terms","value":"language"}]}]},{"key":"ghashtag/t27#2537","repo":"ghashtag/t27","number":2537,"title":"Brace-list imports emitted as an identifier: const {PHI,PHI_INV} = @import(...)","hits":[{"specId":"aa68e993cc9415a7df4fda9e3366a8cb1c8de9e0f35f2b499f550f2bf45b2936","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"PHI_INV:15"},{"kind":"terms","value":"phi, inv, base, list, modules"}]},{"specId":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"PHI_INV:14"},{"kind":"terms","value":"math, sacred, physics, phi, inv"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"PHI_INV:12"},{"kind":"terms","value":"math, sacred, physics, phi, inv"}]},{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"math, phi, inv, measured"}]},{"specId":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"PHI_INV:17"},{"kind":"terms","value":"math, phi, inv, measured"}]}]},{"key":"ghashtag/t27#2536","repo":"ghashtag/t27","number":2536,"title":"String escapes decoded by the lexer were emitted raw: 134 -> 135, and step 3 becomes a judgement call","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, zig"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"BOARD_NAME:11"},{"kind":"terms","value":"arty, board, 100t"}]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"BOARD_NAME:19"},{"kind":"terms","value":"arty, board"}]},{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"BOARD_NAME:11"},{"kind":"terms","value":"board"}]},{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"BOARD_NAME:12"},{"kind":"terms","value":"board"}]}]},{"key":"ghashtag/t27#2534","repo":"ghashtag/t27","number":2534,"title":"Function-pointer return types: inert today, and it unblocks the reverted change","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, gen, zig, emit, decl"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, compiler, self, emit, back"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"compiler, parser, parsing, skip, parse, annotation, child, field"}]}]},{"key":"ghashtag/t27#2532","repo":"ghashtag/t27","number":2532,"title":"The ratchet moved by two events in one file: jit.t27 has function-pointer return types","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"symbol","value":"get_bind:497"},{"kind":"terms","value":"jit, dimension, self, bind"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"parser, parsing, skip, parse, struct, else, decl"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"two, second, one"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, two"}]}]},{"key":"ghashtag/t27#2531","repo":"ghashtag/t27","number":2531,"title":"Reentrant struct-body parsing: built, measured, worse on every axis, reverted","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, gen, zig, emit, decl"}]},{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, self, two"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1073,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"compiler, parser, parsing, kind, skip, level, parse, field"}]}]},{"key":"ghashtag/t27#2529","repo":"ghashtag/t27","number":2529,"title":"A struct body containing const or fn ate the rest of the file: 1445 lines in, 32 out","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"symbol","value":"MAX_TRITS:34"},{"kind":"symbol","value":"BigInt:68"},{"kind":"terms","value":"ternary, bigint, big, int, trits, trit, zero, self"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parser, parsing, expect, skip, brace, semicolon, parse, struct"}]},{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":1027,"reasons":[{"kind":"symbol","value":"MAX_TRITS:19"},{"kind":"terms","value":"ternary, bigint, trits, big, int, zero, trit"}]},{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"MAX_TRITS:25"},{"kind":"terms","value":"ternary, trit, zero, trits, big, int, valid"}]},{"specId":"d4fcc46e20aacaf30831a99d77db524f3a6fbbd23adc179b53017cddadd7cffb","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"MAX_TRITS:22"},{"kind":"terms","value":"bigint, big, int, trit, zero, trits"}]}]},{"key":"ghashtag/t27#2527","repo":"ghashtag/t27","number":2527,"title":"Duplicate @import emitted per use-decl: correct fix, zero measured gain","hits":[{"specId":"2906d08dfadc55f37621e8e83a6f6ed4ee79105f826043582bbc3523c2b7ea88","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/lsp/server.t27"},{"kind":"terms","value":"lsp, kind, accept"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"kind, top, level, parse, right, decl, import"}]},{"specId":"31fc2cc4511db11be5ce16f41f881ed462911238ee18ba0fbe5f8f25dd0fbfd4","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"gain, per"}]}]},{"key":"ghashtag/t27#2526","repo":"ghashtag/t27","number":2526,"title":"String constants emitted without their quotes: 121 -> 133 valid","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"node, parse, comparison, primary, val, arm, decl"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"BOARD_NAME:11"},{"kind":"terms","value":"arty, board, 100t"}]},{"specId":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BOARD_NAME:13"},{"kind":"terms","value":"qmtech, board"}]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"BOARD_NAME:19"},{"kind":"terms","value":"arty, board"}]},{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"BOARD_NAME:11"},{"kind":"terms","value":"xc7a100t, board"}]}]},{"key":"ghashtag/t27#2525","repo":"ghashtag/t27","number":2525,"title":"A missing space welded every multi-word type: []const u8 became []constu8, 108 -> 121 valid","hits":[{"specId":"efb335d2dfda179364cc654ecc06db8780ac7176c63e5962b2f969ee4836a04b","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/tri/collections/variant.t27"},{"kind":"terms","value":"collections, variant, tag"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parse, struct, else"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"valid, word, holds"}]},{"specId":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"out, valid, word"}]},{"specId":"4468de25e4e94f883c3cd64306eb5cff4e69992728e7211b73cacfe2c83bc3c8","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"word, valid"}]}]},{"key":"ghashtag/t27#2508","repo":"ghashtag/t27","number":2508,"title":"`gen-rust` drops `if`/`while`/`switch` without parenthesised conditions, `match`, `let mut`, `[N][]const T{}` literals, `fn` declared inside `struct`, and every item after the first brace-style `module` block — all at parse time, with exit 0 and empty stderr","hits":[{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":2090,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig, generate, emit, header, constants, section"}]},{"specId":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","relation":"reference","coverage":"unverified","score":2090,"reasons":[{"kind":"path","value":"compiler/cli/gen.t27"},{"kind":"terms","value":"compiler, cli, gen, commands, codegen, dir, mkdir, impl"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"reference","coverage":"unverified","score":2085,"reasons":[{"kind":"path","value":"compiler/codegen/verilog/codegen.t27"},{"kind":"terms","value":"compiler, codegen, verilog, generate, emit, header, parameters, hex"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"reference","coverage":"unverified","score":2084,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, gen, generate, zig, verilog, rust"}]},{"specId":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","relation":"reference","coverage":"unverified","score":2071,"reasons":[{"kind":"path","value":"compiler/ast.t27"},{"kind":"terms","value":"compiler, ast, token, node, section, invariant, bench, decl"}]}]},{"key":"ghashtag/t27#2492","repo":"ghashtag/t27","number":2492,"title":"Seven gates: nothing requires them to be silent, found by the mutation direction never taken","hits":[]},{"key":"ghashtag/t27#2483","repo":"ghashtag/t27","number":2483,"title":"compiler.rs:1208 says 'one of four discard channels'; there are five","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1050,"reasons":[{"kind":"symbol","value":"skip_brace_body:132"},{"kind":"symbol","value":"skip_to_semicolon:152"},{"kind":"symbol","value":"skip_to_next_top_level:201"},{"kind":"symbol","value":"recover_to_stmt_boundary:238"},{"kind":"terms","value":"compiler, skip, brace, semicolon, top, level, recover, stmt"}]},{"specId":"fa88bd16c82f68d02449eadfa2607d629ed78c1610d2b88f387f62c1c396fd0b","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"compiler, channels, channel"}]}]},{"key":"ghashtag/t27#2479","repo":"ghashtag/t27","number":2479,"title":"9,547 discarded tokens outside the documented forall decision (was: 26,546)","hits":[{"specId":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/queen/brain_summaries.t27"},{"kind":"terms","value":"queen, brain, summaries, per, phase, reported, total"}]},{"specId":"f4725c1e5baf34cd48150fccccaf061f585340ffd5963986293fb3262ce8e6e3","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/fpga/vcd_conformance_compare.t27"},{"kind":"terms","value":"vcd, conformance, compare, record, parse"}]},{"specId":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/fpga/power_analysis.t27"},{"kind":"terms","value":"power, analysis, zero, total, default"}]},{"specId":"45bb6f748cc01f814b14d1c65588766a2515daf79df2382b785a0c8c2ba2a211","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/fpga/testbench/fifo_tb.t27"},{"kind":"terms","value":"testbench, fifo, write, read"}]}]},{"key":"ghashtag/t27#2477","repo":"ghashtag/t27","number":2477,"title":"99 seals orphaned by the naming convention change, 81 with a current twin","hits":[{"specId":"3b4221a4c3733e8cd4e11c2e22b767a42d515d16c9c0ac141632dbcfe5118d28","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/ml/layers/avgpool2d_layer.t27"},{"kind":"terms","value":"layers, avgpool2d, layer"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"path, content, project, dir, timestamp, seal, hash"}]}]},{"key":"ghashtag/t27#2476","repo":"ghashtag/t27","number":2476,"title":"t27c seal exits 0 on a spec every backend rejects; only --save refuses","hits":[{"specId":"4018d7703d08862d4f087eb076fda4fa14c54cc8767c98aaa493a70fb6eb1719","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/tri/graph/graph.t27"},{"kind":"terms","value":"graph"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"gen, zig, seal, verilog, hash, backend"}]},{"specId":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"seal, gen, save"}]}]},{"key":"ghashtag/t27#2474","repo":"ghashtag/t27","number":2474,"title":"emit-bitexact is a fourth permanently-red gate, and I merged four PRs past it without looking","hits":[]},{"key":"ghashtag/t27#2466","repo":"ghashtag/t27","number":2466,"title":"check_catalog_count: the paper-divergence WARN fires on every run, so it carries no information","hits":[]},{"key":"ghashtag/t27#2455","repo":"ghashtag/t27","number":2455,"title":"The required check named `check` is an echo, and the test suite is not required at all","hits":[]},{"key":"ghashtag/t27#2439","repo":"ghashtag/t27","number":2439,"title":"Zero-width structs: a field the spec declares has no storage in the lowered form","hits":[{"specId":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/fpga/formal.t27"},{"kind":"symbol","value":"CoverPoint:57"},{"kind":"symbol","value":"FormalAssume:66"},{"kind":"terms","value":"formal, cover, assume, point, str"}]},{"specId":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/fpga/hir.t27"},{"kind":"terms","value":"hir, assign, instance, bits"}]},{"specId":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/fpga/placement.t27"},{"kind":"terms","value":"placement, floorplan, width"}]},{"specId":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/fpga/vcd_trace.t27"},{"kind":"symbol","value":"VcdHeader:74"},{"kind":"terms","value":"vcd, trace, header, index"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"field, handle, offset, read, fields, found, too, header"}]}]},{"key":"ghashtag/t27#2433","repo":"ghashtag/t27","number":2433,"title":"Design decision: what a string field and a string comparison mean in generated hardware","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"comparison, field"}]}]},{"key":"ghashtag/t27#2413","repo":"ghashtag/t27","number":2413,"title":"icarus-simulate: three named emitter defects keep mac's self-test at 13 elaboration errors","hits":[]},{"key":"ghashtag/t27#2411","repo":"ghashtag/t27","number":2411,"title":"array_param_index asserts a part-select lowering that W458 replaced with monomorphised unpacked arrays","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"compiler, level, index, call, literal, array, else, param"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"rust, param, array, arrays, var"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"param, array, arrays, var"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"zero, one, bit, unpacked, select"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"valid, seen, index, select, one"}]}]},{"key":"ghashtag/t27#2410","repo":"ghashtag/t27","number":2410,"title":"gen-verilog: slice params ([]T) lower to single scalars — mac_dot_product is silently wrong for len>1","hits":[{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"mac_dot_product:187"},{"kind":"terms","value":"mac, bits, dot, bit, product, matrix, vector, unit"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"params, read, dot, array, cases, vector, conformance"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"bits, unit, mac, dot, product, one"}]},{"specId":"2eade0fba9b90159413821a1a7dc079d197b1fd7d849c6825e4cfee8feda6d51","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"mac, word, dot, product, unit"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"slice, loop, dot, product"}]}]},{"key":"ghashtag/t27#2406","repo":"ghashtag/t27","number":2406,"title":"Commit the Rust-dialect manifest: the measurement, explicitly not the decision","hits":[{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/ternary/hybrid_bigint.t27"},{"kind":"terms","value":"ternary, hybrid, bigint"}]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"rust, choose, decision"}]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"rust, make, decision"}]},{"specId":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"rust, threshold, decision"}]}]},{"key":"ghashtag/t27#2405","repo":"ghashtag/t27","number":2405,"title":"Bare [T] slice syntax emitted as a Zig array: 105 -> 108 valid, with 395 real arrays left untouched","hits":[{"specId":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"ClockDomainPower:182"},{"kind":"terms","value":"power, analysis, total, clock, domain"}]},{"specId":"e24ed494c1f78c01bbbd69a338432166ca36a1271b1d5c6c8a25a9946786da76","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ProofStep:13"},{"kind":"terms","value":"proof, step, length, trit"}]},{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ProofStep:92"},{"kind":"terms","value":"proof, step"}]},{"specId":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ProofStep:34"},{"kind":"terms","value":"proof, step"}]},{"specId":"b7f52fc31cb644f219392df408b8a89a9010d42be783426f808e74ebf78e0c63","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"K_TRUE:14"},{"kind":"terms","value":"trit, rule"}]}]},{"key":"ghashtag/t27#2404","repo":"ghashtag/t27","number":2404,"title":"Rust reference types were emitted verbatim into Zig: 98 -> 105 valid, and partial coverage of an emission path scored zero","hits":[{"specId":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"rust, parameters, out, reference, target, total"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"zig, ast, parse, path, valid"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"rust, reference, target, right"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"valid, path, total, zig"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"zig, rust"}]}]},{"key":"ghashtag/t27#2398","repo":"ghashtag/t27","number":2398,"title":"Between 32 and 66 specs are Rust, not t27: one Rust marker predicts failure better than anything else measured","hits":[{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/ternary/hybrid_bigint.t27"},{"kind":"symbol","value":"SIMD_WIDTH:28"},{"kind":"symbol","value":"simd_add:75"},{"kind":"terms","value":"ternary, hybrid, bigint, per, simd, width, vec32, zero"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1037,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"compiler, parse, call, struct, else, statement"}]},{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"TRIT_ZERO:38"},{"kind":"terms","value":"ternary, bigint, trit, zero, simd, threshold, self, sum"}]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"SIMD_WIDTH:34"},{"kind":"terms","value":"simd, width, threshold, trit, sum, zero, vec, expected"}]},{"specId":"21484c1e4832c65088a8b16411adcd3cee75140dd0e98c49beb09f13acbf10dd","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"TRIT_ZERO:15"},{"kind":"terms","value":"trit, zero, sample, make, valid, width"}]}]},{"key":"ghashtag/t27#2397","repo":"ghashtag/t27","number":2397,"title":"Braced if-expressions were parsed as failures and their declarations discarded; the undeclared-identifier class is layered, not parallel","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"parse_expr:356"},{"kind":"symbol","value":"parse_if_expr:772"},{"kind":"terms","value":"parser, expect, brace, top, parse, expr, val, else"}]},{"specId":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"abs_val:43"},{"kind":"terms","value":"abs, val, part, pow"}]},{"specId":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"abs_val:52"},{"kind":"terms","value":"abs, val, f64"}]},{"specId":"e3997228a0ea792965b7825f7b685c27f972c5140c8d2a5ce3f434e27a9de5bf","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"abs_val:88"},{"kind":"symbol","value":"abs_val:127"},{"kind":"symbol","value":"abs_val:202"},{"kind":"terms","value":"abs, val, part"}]},{"specId":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"abs_val:50"},{"kind":"terms","value":"abs, val, f64"}]}]},{"key":"ghashtag/t27#2394","repo":"ghashtag/t27","number":2394,"title":"Eight more corrupted types, and the third incomplete inventory in a row","hits":[{"specId":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/ternary/hybrid_bigint.t27"},{"kind":"symbol","value":"SIMD_WIDTH:28"},{"kind":"symbol","value":"SIMD_CHUNKS:31"},{"kind":"terms","value":"ternary, hybrid, bigint, simd, width, chunks, storage, i64"}]},{"specId":"cb61281176bafb99fd47a406941d7f224280dbfc0c0e255c3f0afb9dd6ce3976","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/ar/asp_solver.t27"},{"kind":"terms","value":"asp, solver, literal, answer, combinations"}]},{"specId":"8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/physics/su2_chern_simons.t27"},{"kind":"terms","value":"physics, su2, chern, simons"}]},{"specId":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"symbol","value":"batch_read:59"},{"kind":"terms","value":"storage, read, batch"}]},{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"SIMD_CHUNKS:45"},{"kind":"terms","value":"ternary, bigint, trit, simd, chunks, i64, left, right"}]}]},{"key":"ghashtag/t27#2393","repo":"ghashtag/t27","number":2393,"title":"Prop. 191 lands: the parser repair passes once the corpus is repaired, and six field types are decisions the gate cannot validate","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"compiler, parser, start, parse, right, field, struct"}]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"gate, pattern, match, field, start"}]},{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"gate, closed, valid, field"}]},{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"gate, field"}]}]},{"key":"ghashtag/t27#2386","repo":"ghashtag/t27","number":2386,"title":"Five gen-verilog features have live emitter code and failing tests: seven guards that never ran","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, expr, emit, decl, bench"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"compiler, path, gen, compile, verilog"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"parse, gen, verilog"}]}]},{"key":"ghashtag/t27#2376","repo":"ghashtag/t27","number":2376,"title":"build and L1 TRACEABILITY can fail without blocking a merge — neither is a required context","hits":[{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"merge, set, fail"}]}]},{"key":"ghashtag/t27#2370","repo":"ghashtag/t27","number":2370,"title":"No workflow installs lake/elan, so every Lean smoke-gate test skips on every runner","hits":[{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"runner, execute, gate, reports, summary"}]}]},{"key":"ghashtag/t27#2368","repo":"ghashtag/t27","number":2368,"title":"The anonymous braced literal .{ } is one of several parser gaps in lexer.t27, not the gap","hits":[{"specId":"3c7877343745c5377eba7ca7c8d9f9b6f44ced0b8a99a1c466f6b54dd1af969e","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"compiler/parser/lexer.t27"},{"kind":"symbol","value":"read_number:362"},{"kind":"symbol","value":"is_register:424"},{"kind":"terms","value":"compiler, parser, lexer, identifier, ident, read, register"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig, bind, expression, assert"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"symbol","value":"jit_bind:533"},{"kind":"terms","value":"jit, compiler, slice, bind, dot"}]},{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, zero, right, two"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"compiler/codegen/verilog/codegen.t27"},{"kind":"terms","value":"compiler, codegen, verilog, register"}]}]},{"key":"ghashtag/t27#2364","repo":"ghashtag/t27","number":2364,"title":"gen-verilog: on_clock with a return type emits an assignment to an implicitly-declared identifier under `default_nettype none`","hits":[{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"symbol","value":"uart_tx_send:64"},{"kind":"terms","value":"uart, clock, send"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"on_clock:170"},{"kind":"terms","value":"begin, end, clock"}]},{"specId":"a5666136df528393dd97673ac9ea68fa10fdb3b7bc111b4be2d39b42c1091c91","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"on_clock:13"},{"kind":"terms","value":"uart, clock"}]},{"specId":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"on_clock:13"},{"kind":"terms","value":"clock"}]},{"specId":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"on_clock:38"},{"kind":"terms","value":"clock"}]}]},{"key":"ghashtag/t27#2358","repo":"ghashtag/t27","number":2358,"title":"graph_bfs.adj is decidable from a sibling struct: parser-fix blocker drops 6 -> 5","hits":[{"specId":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"symbol","value":"BFSResult:18"},{"kind":"terms","value":"graph, bfs, bfsresult"}]},{"specId":"621b8342483e5311f3132a0301b536b5af3f6825b2764bb5a89b3507c59c44a0","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/tri/search/aho_corasick.t27"},{"kind":"terms","value":"search, aho, corasick, node"}]},{"specId":"9f9c5ccbfad7094a6514656e4c2f80089f67f92448c28584323b8e063361b94f","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/tri/search/regex_advanced.t27"},{"kind":"terms","value":"search, regex, advanced"}]},{"specId":"a10cd453780251bfe86342dd0f2b5fb5b0d46f088353c0a4cfd9543f11f1f007","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/tri/encoding/mime.t27"},{"kind":"terms","value":"encoding, mime, parse"}]},{"specId":"a72d2ea5db5519cf66f7d714b6b641c9844824efb9942b18d7ad54b31a89384d","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/tri/search/regex.t27"},{"kind":"terms","value":"search, regex"}]}]},{"key":"ghashtag/t27#2356","repo":"ghashtag/t27","number":2356,"title":"Required check `check` cannot fail: check-now-freshness.yml is a bare echo","hits":[]},{"key":"ghashtag/t27#2355","repo":"ghashtag/t27","number":2355,"title":"The corruption inventory was incomplete: 12 lines with numeric array shapes were invisible to my own pattern","hits":[{"specId":"621b8342483e5311f3132a0301b536b5af3f6825b2764bb5a89b3507c59c44a0","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/tri/search/aho_corasick.t27"},{"kind":"symbol","value":"ACTrieNode:13"},{"kind":"terms","value":"search, aho, corasick, actrie, node"}]},{"specId":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"symbol","value":"BFSResult:18"},{"kind":"terms","value":"graph, bfs, bfsresult"}]},{"specId":"1778325067543a3ddd5b236906ea2441d1a7b278bd5c9833aa72c55ba6599497","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"OctNode:22"},{"kind":"terms","value":"oct, node"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"field, required, fields, pattern, corruption, report, evidence, valid"}]}]},{"key":"ghashtag/t27#2354","repo":"ghashtag/t27","number":2354,"title":"Zig emitter never discarded unused function parameters: 25/520 -> 93/520 valid, 0 regressions","hits":[{"specId":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"accumulation_check:46"},{"kind":"terms","value":"accumulation"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"zig, ast, decl, parse, gen, valid"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"valid, gen, zig"}]}]},{"key":"ghashtag/t27#2353","repo":"ghashtag/t27","number":2353,"title":"weight_prefetch_ctrl never terminates on num_words == 0","hits":[{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"num, buffers, weight, zero"}]},{"specId":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"num, weight, buffers"}]}]},{"key":"ghashtag/t27#2352","repo":"ghashtag/t27","number":2352,"title":"weight_prefetch_ctrl writes every word one slot high — the #2003 shape, fixed in the DMA only","hits":[{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"slot, index, second, one"}]},{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"one, per, word, left"}]},{"specId":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"fixed, shape"}]},{"specId":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"high, weight"}]},{"specId":"7ef232c76f3a3a5f3ab6eb9ed8046faa1fa7dd3085f4d6d3288f2bd538da3f60","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"weight, high"}]}]},{"key":"ghashtag/t27#2350","repo":"ghashtag/t27","number":2350,"title":"Corpus repair batch 5: 11 unbalanced lines derived from the broken converter, and the measurement that settles #2128","hits":[{"specId":"9f9c5ccbfad7094a6514656e4c2f80089f67f92448c28584323b8e063361b94f","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/tri/search/regex_advanced.t27"},{"kind":"terms","value":"search, regex, advanced, flags"}]},{"specId":"621b8342483e5311f3132a0301b536b5af3f6825b2764bb5a89b3507c59c44a0","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/tri/search/aho_corasick.t27"},{"kind":"terms","value":"search, aho, corasick"}]},{"specId":"a10cd453780251bfe86342dd0f2b5fb5b0d46f088353c0a4cfd9543f11f1f007","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/tri/encoding/mime.t27"},{"kind":"terms","value":"encoding, mime, parse"}]},{"specId":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"terms","value":"graph, bfs"}]},{"specId":"a72d2ea5db5519cf66f7d714b6b641c9844824efb9942b18d7ad54b31a89384d","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/tri/search/regex.t27"},{"kind":"terms","value":"search, regex"}]}]},{"key":"ghashtag/t27#2349","repo":"ghashtag/t27","number":2349,"title":"Corpus repair batch 4: remaining balanced shapes, 17 lines, plus 5 primitives my own pattern mis-cased","hits":[{"specId":"ea334b73f9e5c5a18f4ec6bb7a249982381c339fdb867bdb2ef19305eb59679d","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"MarkdownNode:13"},{"kind":"terms","value":"markdown, node, parse, html"}]},{"specId":"a2b2424d5bd2d58140d2ebc9320d27cb6e99e0f3f25d294ecc14cd437076e907","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"XmlNode:13"},{"kind":"terms","value":"xml, node, parse"}]},{"specId":"7b0d45737fe557fd91cab1c2fa99092d032fe5032d8ea4ebd0a7370b3408ec2b","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"HtmlNode:13"},{"kind":"terms","value":"html, node, parse"}]},{"specId":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"AgentStatus:19"},{"kind":"terms","value":"status, pattern"}]},{"specId":"4c58b9b71243fe4b1158a8e447bb9102bf2dc8392c4972321a39df491ed3653e","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"RTreeNode:20"},{"kind":"terms","value":"rtree, node"}]}]},{"key":"ghashtag/t27#2348","repo":"ghashtag/t27","number":2348,"title":"RTL fixes cite differential simulation as evidence but do not commit the testbench","hits":[{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"verilog, harness, vectors, simulation, testbench, diff, build, claim"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"conformance, vectors, rtl, evidence"}]}]},{"key":"ghashtag/t27#2347","repo":"ghashtag/t27","number":2347,"title":"Corpus repair batch 3: the generic and user-type [[]X] shapes, 13 lines","hits":[{"specId":"e9e6bd933169bdf7ff79fa80a1df30743e9702bc16e478e6069bb68cc0fe71da","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"CsvRow:13"},{"kind":"terms","value":"csv, row, parse"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parse, struct"}]}]},{"key":"ghashtag/t27#2346","repo":"ghashtag/t27","number":2346,"title":"Corpus repair batch 2: the four primitive [[]X] shapes, 26 lines","hits":[{"specId":"e9e6bd933169bdf7ff79fa80a1df30743e9702bc16e478e6069bb68cc0fe71da","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"CsvRow:13"},{"kind":"terms","value":"csv, row, parse"}]}]},{"key":"ghashtag/t27#2342","repo":"ghashtag/t27","number":2342,"title":"multilayer_sequencer: level-triggered prefetch handshake cannot distinguish \"done already\" from \"done still\"","hits":[]},{"key":"ghashtag/t27#2341","repo":"ghashtag/t27","number":2341,"title":"damage_repair.py silently ignores unknown flags, so a typo'd --class widens the run to every class","hits":[{"specId":"51eb7e2902d6348c94a6cfdadcc344287e232c6ff46bcb74c509bbb32fc98aeb","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"apply_to:49"},{"kind":"terms","value":"status, apply"}]}]},{"key":"ghashtag/t27#2336","repo":"ghashtag/t27","number":2336,"title":"tools/converter corrupts every quoted field type — one missing trim_matches('\"') explains all three symptoms of #2154","hits":[{"specId":"6ffa742ec615265d04536053c181c131d6a2f56c37c556c564f804bc80a31798","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"WorkflowStep:13"},{"kind":"terms","value":"workflow, step"}]},{"specId":"7156843614c320375957c8e17cb3af8e70ba2fa9a8d6e10ebd961b6a91b39ae6","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"KeyPair:13"},{"kind":"terms","value":"key, pair"}]},{"specId":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"converter, field, convert, pascal, case"}]},{"specId":"2b4c28dfcddbd8861d6e47080b8dab052a46a065a4e5ff773523abd15afa6fbc","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"field, matches"}]}]},{"key":"ghashtag/t27#2335","repo":"ghashtag/t27","number":2335,"title":"cli/tri: six names unresolvable on feat/rename-tef-to-tnf (follow-up to #2176 part 2)","hits":[]},{"key":"ghashtag/t27#2334","repo":"ghashtag/t27","number":2334,"title":"seal: fpga_ZeroDSP_BPSK.json is stale — #1874 edited specs/fpga/bpsk.t27 without re-sealing","hits":[{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"zero, dsp, done, read, set"}]},{"specId":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"full, zero, dsp"}]},{"specId":"9fb0fcc0a0a24932ffc0181e6a6847e06936d35c5919c29d74f6decccdd8b5dd","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"zero, full, dsp"}]},{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"zero, dsp, read"}]},{"specId":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"zero, dsp, set"}]}]},{"key":"ghashtag/t27#2328","repo":"ghashtag/t27","number":2328,"title":"origin/master is a single orphan commit with no ancestor in common with the previous 2545-commit history (old history is safe)","hits":[{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"history, single"}]}]},{"key":"ghashtag/t27#2325","repo":"ghashtag/t27","number":2325,"title":"gen-verilog: 26 of 32 modules reference struct fields under a prefix declared nowhere — no single prefix can be correct","hits":[{"specId":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"apb_bridge:66"},{"kind":"terms","value":"apb, bridge, addr, width, data, map, read, write"}]},{"specId":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"vcd_trace:97"},{"kind":"terms","value":"vcd, trace, var, kind, scope, wire, reg"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":85,"reasons":[{"kind":"terms","value":"compiler, path, list, status, gen, conformance, total, compile"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"build, total, modules, testbenches, verilog, clean"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, rust, conformance, expr, emit"}]}]},{"key":"ghashtag/t27#2319","repo":"ghashtag/t27","number":2319,"title":"gen-verilog: is_lowerable_scalar_struct accepts a named-const array extent that field_type_width sizes as 0 — TernaryWord declared 40 bits, correct is 3712","hits":[{"specId":"06e69666f7c575b3fbe4f5530f2560fd46ce903a1a3af6dd62e375aaa4f38953","relation":"reference","coverage":"unverified","score":2062,"reasons":[{"kind":"path","value":"specs/base/ternary_memory.t27"},{"kind":"symbol","value":"TRIT_CAPACITY:21"},{"kind":"symbol","value":"WORD_CAPACITY:22"},{"kind":"symbol","value":"TritCell:36"},{"kind":"symbol","value":"TernaryWord:80"},{"kind":"symbol","value":"TernaryMemoryBank:149"},{"kind":"terms","value":"base, ternary, memory, trit, zero, capacity, word, size"}]},{"specId":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","relation":"reference","coverage":"unverified","score":2050,"reasons":[{"kind":"path","value":"specs/isa/ternary_memory.t27"},{"kind":"terms","value":"isa, ternary, memory, trit, zero, mem, width, size"}]},{"specId":"f4725c1e5baf34cd48150fccccaf061f585340ffd5963986293fb3262ce8e6e3","relation":"reference","coverage":"unverified","score":2037,"reasons":[{"kind":"path","value":"specs/fpga/vcd_conformance_compare.t27"},{"kind":"symbol","value":"CompareResult:13"},{"kind":"terms","value":"vcd, conformance, compare, pass, expected, map, vector, bits"}]},{"specId":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/isa/registers.t27"},{"kind":"terms","value":"isa, registers, reg, width, base, zero, carry, read"}]},{"specId":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/fpga/fifo.t27"},{"kind":"symbol","value":"FifoState:44"},{"kind":"terms","value":"fifo, kind, depth, empty, width, total, bits"}]}]},{"key":"ghashtag/t27#2306","repo":"ghashtag/t27","number":2306,"title":"smoke-gate: theorem_matrix_ok is a hardcoded true (false green), and validate_lean_standalone has no phase body","hits":[{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"compiler, validate, commit, matrix, path, warning, elapsed"}]}]},{"key":"ghashtag/t27#2301","repo":"ghashtag/t27","number":2301,"title":"proxy.rs tests are stripped before type-checking — no workflow passes --features server","hits":[]},{"key":"ghashtag/t27#2292","repo":"ghashtag/t27","number":2292,"title":"cargo test -p t27c landed red on master: the 1221-pass measurement was taken on the wrong tree","hits":[{"specId":"cd5f3f125dd528d1cf0d5c2d7f52f91b692421603aff1288625d3476e63d409f","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"trees, red, tree"}]}]},{"key":"ghashtag/t27#2289","repo":"ghashtag/t27","number":2289,"title":"CI: t27c's 1221 tests have never run on master — land the gate (fixes #2288)","hits":[]},{"key":"ghashtag/t27#2288","repo":"ghashtag/t27","number":2288,"title":"suite.rs unit tests are compiled by nothing — 33 tests plus 3 new ones never type-checked","hits":[{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"unit, plus, one"}]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"unit, checked"}]}]},{"key":"ghashtag/t27#2279","repo":"ghashtag/t27","number":2279,"title":"Unbreak FPGA CI and correct two unbacked hardware claims","hits":[]},{"key":"ghashtag/t27#2278","repo":"ghashtag/t27","number":2278,"title":"emit-bitexact is red on master and nothing was watching: no push: trigger, so it has never run there","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"symbol","value":"jit_bind:533"},{"kind":"terms","value":"jit, default, compiler, emit, push, bind"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig, generate, emit, bind, int"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"compiler/codegen/verilog/codegen.t27"},{"kind":"terms","value":"compiler, codegen, verilog, generate, emit, int"}]},{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, big, int, zero, two"}]},{"specId":"3c7877343745c5377eba7ca7c8d9f9b6f44ced0b8a99a1c466f6b54dd1af969e","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"compiler/parser/lexer.t27"},{"kind":"terms","value":"compiler, parser, lexer, identifier, read"}]}]},{"key":"ghashtag/t27#2266","repo":"ghashtag/t27","number":2266,"title":"gen-verilog: module-var writes in the comb lowering infer an LDCE latch with a combinational feedback loop (ZeroDSP_UART)","hits":[{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"uart, zero, dsp, fifo, status, send, read"}]},{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"verilog, emit, uart, mac, fifo"}]},{"specId":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"zero, dsp, mac, uart, send"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"mac, zero, dsp, status, read, write"}]},{"specId":"596d8c5a43c433eebb1c5df08d34b92e03c9697a4ac2f9343c1457246028593b","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, emit, var"}]}]},{"key":"ghashtag/t27#2263","repo":"ghashtag/t27","number":2263,"title":"master's tri test suite is red, and two gates cannot see it","hits":[]},{"key":"ghashtag/t27#2253","repo":"ghashtag/t27","number":2253,"title":"Two divergent NOW.md files, and .gitattributes calls one a symlink it is not","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, two"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"two, one"}]}]},{"key":"ghashtag/t27#2241","repo":"ghashtag/t27","number":2241,"title":"Conformance vectors are never executed: no vvp step, testbench 'generation' echoes static JSON verdicts","hits":[{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"vector, generate, vectors, testbench, diff, execute"}]},{"specId":"1cce47bfd33a00b3f877eac16723284a124ef0036f1012d5cb5d60bc90613915","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"vectors, generation, step, generate"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"conformance, vectors, field, rtl, vector"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"rtl, field, vector, conformance, json"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"generate, conformance, json"}]}]},{"key":"ghashtag/t27#2238","repo":"ghashtag/t27","number":2238,"title":"The green bitstream carries an empty design: ZeroDSP_TopLevel synthesizes to 0 cells","hits":[{"specId":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"top, level, zero, dsp, clk, mac, data, uart"}]},{"specId":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"top, level, clk, clock, pass, led, mac"}]},{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"clock, design, empty, port, ports"}]},{"specId":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"uart, zero, dsp, clock, ready"}]},{"specId":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"zero, xc7a100t, dsp, clock"}]}]},{"key":"ghashtag/t27#2232","repo":"ghashtag/t27","number":2232,"title":"Post-ladder master drift: seal-coverage red (dangling+phantom) and 'Every spec still generates' red (bigint.t27 et al.)","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint"}]}]},{"key":"ghashtag/t27#2218","repo":"ghashtag/t27","number":2218,"title":"The 120 module-level parse errors are six language-design decisions, classified","hits":[{"specId":"11fb3a5964fa96b10be4a51ab9f4e85376215de251847c77452e8bd711635086","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"examples/fpga/qmtech_minimal/design.t27"},{"kind":"terms","value":"examples, qmtech, minimal, design"}]},{"specId":"baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/enrichment/audio_overview.t27"},{"kind":"terms","value":"enrichment, audio, overview, generate"}]},{"specId":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/base/debounce.t27"},{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"base, debounce, phi, inv"}]},{"specId":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"collections, array, view"}]},{"specId":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/config/load.t27"},{"kind":"terms","value":"load, paths, base"}]}]},{"key":"ghashtag/t27#2174","repo":"ghashtag/t27","number":2174,"title":"parser: parameterised type application `Name(T)` in type position blocks 27 of 28 ADR-008 specs","hits":[{"specId":"8b611091e36db3b92fe7f638cf06ac27b2b81236877affee18656f939e62ac60","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/tri/collections/list.t27"},{"kind":"terms","value":"collections, list, empty, head, map"}]},{"specId":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"collections, array, view, empty"}]},{"specId":"13c4050db1a7cd0c322b0bb87a04fac0ebb9899e607a0e06ae19f14a334a6f52","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/tri/io/io.t27"},{"kind":"terms","value":"map"}]}]},{"key":"ghashtag/t27#2173","repo":"ghashtag/t27","number":2173,"title":"openXC7 emits a wrong bitstream from a correct netlist for SRL16E (same class as DSP48E1)","hits":[]},{"key":"ghashtag/t27#2165","repo":"ghashtag/t27","number":2165,"title":"'test' as a reserved word blocks 'fn test(...)'; contextual-keyword decision needed (1 spec affected)","hits":[{"specId":"f99a681913c3bcb832745ccec96cfef0660c61ae17e99f4910a4ccc43e19d775","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/tri/collections/bitset.t27"},{"kind":"terms","value":"collections, bitset, set, union"}]},{"specId":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"reserved, out, word"}]}]},{"key":"ghashtag/t27#2164","repo":"ghashtag/t27","number":2164,"title":"Generic type APPLICATION (Name(T) in a type position) is rejected; 20 library specs, needs a language decision","hits":[{"specId":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/runtime/execute.t27"},{"kind":"symbol","value":"TaskResult:74"},{"kind":"terms","value":"runtime, execute, resolve, rejected"}]},{"specId":"dc13f018898a14b32059c654d1289748e601e47f4b755c31c0e466ce7b73e4dd","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/math/pellis_precision_verify.t27"},{"kind":"terms","value":"math, pellis, precision, verify, str, len"}]},{"specId":"4231d25e32ae17ce4b5009632e3727e6d269f5c98317f8f7cb826973cc160c3a","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/tri/collections/set.t27"},{"kind":"symbol","value":"HashSet:13"},{"kind":"terms","value":"collections, set, hash, contains, union"}]},{"specId":"d6b165602fa64c9cc3d3828ff8f608e83a326b55345be097866c3e8487a62725","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/tri/collections/maybe.t27"},{"kind":"terms","value":"collections, maybe, bind, map"}]},{"specId":"009f964022dfd8c9ff3e0cdc77de85b0c5162329bd53e3898bac2a5d43bfa2b3","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/tri/collections/map.t27"},{"kind":"terms","value":"collections, map, empty, set"}]}]},{"key":"ghashtag/t27#2163","repo":"ghashtag/t27","number":2163,"title":"parser: 'Expected LParen, got KwTest' in specs/tri/collections/bitset.t27","hits":[{"specId":"f99a681913c3bcb832745ccec96cfef0660c61ae17e99f4910a4ccc43e19d775","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/tri/collections/bitset.t27"},{"kind":"terms","value":"collections, bitset"}]}]},{"key":"ghashtag/t27#2160","repo":"ghashtag/t27","number":2160,"title":"corpus damage: freeze, per-class candidate patch, and what one rule does not reach (#2154 follow-up)","hits":[{"specId":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"rule, patch"}]},{"specId":"9a2f505cc2386228c7461e99dcea598525cb97ef5f4e41629fe0a68a45b21434","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"rule, patch"}]}]},{"key":"ghashtag/t27#2155","repo":"ghashtag/t27","number":2155,"title":"Four sources state the catalogue size and give four numbers: 109 is canonical, and nine repeated names are unexplained","hits":[]},{"key":"ghashtag/t27#2154","repo":"ghashtag/t27","number":2154,"title":"A rewrite mangled slice types in 63 spec files, and it is the floor under every field-set measurement","hits":[{"specId":"bca3e8deb428837bb49648c974bb103777ecfac6bb214210273bef4bf5d4733c","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/tri/utils/logger.t27"},{"kind":"symbol","value":"LogEntry:17"},{"kind":"terms","value":"utils, logger, level, log, entry, field"}]},{"specId":"7156843614c320375957c8e17cb3af8e70ba2fa9a8d6e10ebd961b6a91b39ae6","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/tri/crypto/crypto.t27"},{"kind":"symbol","value":"KeyPair:13"},{"kind":"terms","value":"crypto, key, pair"}]},{"specId":"05a07af58a53b6ca13e294c62187fc537865c2d24b80bdd484b1fe79232361da","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"LogEntry:17"},{"kind":"terms","value":"utils, log, level, entry"}]}]},{"key":"ghashtag/t27#2152","repo":"ghashtag/t27","number":2152,"title":"Corpus census W737-W739: the defect population is 168, not 490 — and what is still open","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"parse_if_expr:772"},{"kind":"symbol","value":"parse_if_stmt:965"},{"kind":"terms","value":"compiler, stmt, parse, expr, struct, literal, local, statement"}]}]},{"key":"ghashtag/t27#2150","repo":"ghashtag/t27","number":2150,"title":"Seals: 0 of 1072 specs verify, 928 with an unchanged spec_hash — gate it or remove it","hits":[{"specId":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"hash, zero, remove"}]}]},{"key":"ghashtag/t27#2149","repo":"ghashtag/t27","number":2149,"title":"openXC7: a DSP48E1 fed from the fabric produces a wrong bitstream (40-line reproducer)","hits":[]},{"key":"ghashtag/t27#2148","repo":"ghashtag/t27","number":2148,"title":"wave 715: a clean clone dies at step 9 of 65, and my own commit added two of the three shrinks","hits":[{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"git, commit, path, branch, added"}]},{"specId":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"git, clean, added"}]},{"specId":"fe35542076774dd95e8456f3b8cdf959b2d0c8c576241b4f94a94177fd6a75ab","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"step, added"}]}]},{"key":"ghashtag/t27#2147","repo":"ghashtag/t27","number":2147,"title":"wave 713: my own fix broke CI at step 2 — the gate ran before the RTL it counts","hits":[{"specId":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"step, build, counts"}]}]},{"key":"ghashtag/t27#2146","repo":"ghashtag/t27","number":2146,"title":"wave 711: a hollowed corpus is a deletion with the evidence of deletion removed","hits":[]},{"key":"ghashtag/t27#2145","repo":"ghashtag/t27","number":2145,"title":"wave 710: deleting half the corpus reads as a 38% improvement in every ratchet","hits":[]},{"key":"ghashtag/t27#2144","repo":"ghashtag/t27","number":2144,"title":"wave 709: a scanner that matches its own source satisfies its own liveness floor","hits":[]},{"key":"ghashtag/t27#2143","repo":"ghashtag/t27","number":2143,"title":"wave 708: 21 of 44 gates passed on a starved tree, and which ones was a property of the gates","hits":[{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"failure, suite, aggregate, property, passed, failed"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"failure, suite, aggregate, property, passed, failed"}]},{"specId":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"tree, passed"}]}]},{"key":"ghashtag/t27#2142","repo":"ghashtag/t27","number":2142,"title":"wave 707: a finally does not survive SIGKILL — the restore must run at startup","hits":[]},{"key":"ghashtag/t27#2141","repo":"ghashtag/t27","number":2141,"title":"wave 706: the unresolved 26% was the instrument, not the tree","hits":[]},{"key":"ghashtag/t27#2140","repo":"ghashtag/t27","number":2140,"title":"wave 705: a lower-bound theorem whose lower bound is an axiom","hits":[{"specId":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"standard, measured, lower, bound"}]},{"specId":"94b8ba45c9fc2ba5bd563a24babe3d3dabf3c73b34b2a3957fcc9021b0ccbb5a","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"lower, bound"}]}]},{"key":"ghashtag/t27#2139","repo":"ghashtag/t27","number":2139,"title":"wave 704: suspension closed — trios-coq builds 28/28, and lia was the whole obstacle","hits":[]},{"key":"ghashtag/t27#2138","repo":"ghashtag/t27","number":2138,"title":"wave 703: one suspended check hid five defect classes — 10 of 28 Coq proofs became 25","hits":[]},{"key":"ghashtag/t27#2137","repo":"ghashtag/t27","number":2137,"title":"wave 702: continue-on-error is a red check reported as success — one had been red since it landed","hits":[{"specId":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"signal, success, failure, continue"}]},{"specId":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"success, reported"}]}]},{"key":"ghashtag/t27#2136","repo":"ghashtag/t27","number":2136,"title":"wave 701: the strongest check in the suite had been red for six waves, and a hand-curated 'full set' hid it","hits":[]},{"key":"ghashtag/t27#2135","repo":"ghashtag/t27","number":2135,"title":"wave 700: an expected refutation that stops firing is silent — and this one had been","hits":[]},{"key":"ghashtag/t27#2134","repo":"ghashtag/t27","number":2134,"title":"wave 699: auditing every by-name exemption found one too narrow and three simply false","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"parse, found, too, scale, complete"}]},{"specId":"30907b42896f20f54745d8066fc6f48dbc090a2943ca9314c5c4daa0f50e5739","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"narrow, three"}]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"found, too"}]}]},{"key":"ghashtag/t27#2133","repo":"ghashtag/t27","number":2133,"title":"wave 698: 36% of the parser backlog is Markdown, and the count could not say so","hits":[{"specId":"76a39f4c7d0e78833ccaedd7533f74b68e8350453f0198b2c1cf370138a5419e","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"PROTOCOL_VERSION:34"},{"kind":"terms","value":"protocol"}]}]},{"key":"ghashtag/t27#2132","repo":"ghashtag/t27","number":2132,"title":"wave 697: one contextual keyword recovered 2,865 lines the compiler had never read","hits":[{"specId":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"TriSpec:21"},{"kind":"symbol","value":"generate_t27:115"},{"kind":"terms","value":"generate, valid"}]},{"specId":"3c7877343745c5377eba7ca7c8d9f9b6f44ced0b8a99a1c466f6b54dd1af969e","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"compiler, parser, identifier, tokens, token, ident, read, keyword"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"compiler, token, keyword, identifier"}]},{"specId":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"read, recovered"}]}]},{"key":"ghashtag/t27#2131","repo":"ghashtag/t27","number":2131,"title":"wave 696: 2,865 lines of spec are read as an empty shell, and every gate said green","hits":[{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"gate, kind, read"}]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"gate, nodes, empty"}]}]},{"key":"ghashtag/t27#2130","repo":"ghashtag/t27","number":2130,"title":"wave 695: two gates printed their own blindness in green, every wave — 22 of 29 publish no denominator","hits":[]},{"key":"ghashtag/t27#2129","repo":"ghashtag/t27","number":2129,"title":"wave 694: search for the question, not the shape you already found — 3 delimiter classes, 21 imbalances","hits":[{"specId":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/runtime/instance.t27"},{"kind":"terms","value":"runtime, instance, instances"}]}]},{"key":"ghashtag/t27#2128","repo":"ghashtag/t27","number":2128,"title":"wave 693: the counterexample was corrupt data — 18 unbalanced field types, ratcheted not guessed","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parser, parse, field, struct"}]}]},{"key":"ghashtag/t27#2126","repo":"ghashtag/t27","number":2126,"title":"Wave 691: a third copy of the type parser — 384 to 161 recovery events","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"compiler, parser, top, level, parse, call, struct, decl"}]},{"specId":"e58af5df8780b31b21f3a23b1ca62e8948f1327130a08f9ff3ec57a56c276d7d","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"AccountID:12"},{"kind":"terms","value":"account, token, list"}]},{"specId":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"AccountID:13"},{"kind":"terms","value":"account, token"}]}]},{"key":"ghashtag/t27#2125","repo":"ghashtag/t27","number":2125,"title":"Wave 690: the corpus reaches zero on every parse metric","hits":[{"specId":"4b34351e1bafe5e6cc26db176be01be8db82425a9b4200d04ff2beaeed78df9b","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/api/c_api_contract.t27"},{"kind":"terms","value":"api, contract"}]},{"specId":"3b4221a4c3733e8cd4e11c2e22b767a42d515d16c9c0ac141632dbcfe5118d28","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"DEFAULT_KERNEL:13"},{"kind":"terms","value":"default, kernel, shape"}]}]},{"key":"ghashtag/t27#2124","repo":"ghashtag/t27","number":2124,"title":"Wave 689: 107 corrupted field types, hidden behind a runaway string","hits":[]},{"key":"ghashtag/t27#2123","repo":"ghashtag/t27","number":2123,"title":"Wave 688: swallowed declarations reach zero, and the metric's blind spot","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parser, skip, top, level, parse, annotation, else, local"}]}]},{"key":"ghashtag/t27#2122","repo":"ghashtag/t27","number":2122,"title":"Wave 687: ? was three decisions, not one","hits":[{"specId":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"ToolDefinition:71"},{"kind":"terms","value":"tool, definition, default"}]},{"specId":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"BlockState:35"},{"kind":"terms","value":"block, default, forward"}]}]},{"key":"ghashtag/t27#2121","repo":"ghashtag/t27","number":2121,"title":"Wave 686: the parser chain closed — 788 to 4 swallowed declarations","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"compiler, parser, start, parse, annotation, call, primary, else"}]}]},{"key":"ghashtag/t27#2120","repo":"ghashtag/t27","number":2120,"title":"Wave 685: the chain is five deep, not four","hits":[{"specId":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"terms","value":"storage, read, list"}]},{"specId":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"StorageError:66"},{"kind":"terms","value":"storage, default"}]}]},{"key":"ghashtag/t27#2119","repo":"ghashtag/t27","number":2119,"title":"Wave 684: occlusion four deep, and the two files no list ever reached","hits":[{"specId":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"terms","value":"storage, read, list"}]}]},{"key":"ghashtag/t27#2118","repo":"ghashtag/t27","number":2118,"title":"Wave 683: one mistake in two copies, and a withdrawn explanation","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"parser, parsing, expect, parse, annotation, comparison"}]},{"specId":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"StorageError:66"},{"kind":"terms","value":"storage, found"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"two, one, present"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, two"}]}]},{"key":"ghashtag/t27#2117","repo":"ghashtag/t27","number":2117,"title":"Wave 682: the liveness step scored every failure as a refutation","hits":[]},{"key":"ghashtag/t27#2116","repo":"ghashtag/t27","number":2116,"title":"Wave 681: both CI walls repaired; cherry-picking ruled out by evidence","hits":[{"specId":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"terms","value":"storage"}]},{"specId":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"zero, out, evidence, valid"}]}]},{"key":"ghashtag/t27#2115","repo":"ghashtag/t27","number":2115,"title":"Wave 680: 165 of 167 propositions cite a workflow that has never run","hits":[]},{"key":"ghashtag/t27#2114","repo":"ghashtag/t27","number":2114,"title":"Wave 679: a _CoqProject nobody runs builds nothing","hits":[{"specId":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"TaskResult:74"}]},{"specId":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"TaskResult:125"}]}]},{"key":"ghashtag/t27#2113","repo":"ghashtag/t27","number":2113,"title":"Wave 678: one unparsable initialiser destroyed its whole file","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1068,"reasons":[{"kind":"symbol","value":"skip_brace_body:132"},{"kind":"symbol","value":"skip_to_semicolon:152"},{"kind":"symbol","value":"parse_top_level_decl:1176"},{"kind":"symbol","value":"parse_var_decl:1303"},{"kind":"terms","value":"parser, skip, brace, semicolon, top, level, recover, boundary"}]}]},{"key":"ghashtag/t27#2112","repo":"ghashtag/t27","number":2112,"title":"Wave 677: the crates nothing builds are the crates that broke","hits":[]},{"key":"ghashtag/t27#2111","repo":"ghashtag/t27","number":2111,"title":"Wave 676: 1213 tests nothing ran, and my own gate recognised one build mechanism","hits":[{"specId":"4231d25e32ae17ce4b5009632e3727e6d269f5c98317f8f7cb826973cc160c3a","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"HashSet:13"},{"kind":"terms","value":"set, hash"}]}]},{"key":"ghashtag/t27#2110","repo":"ghashtag/t27","number":2110,"title":"Wave 675: 788 swallowed declarations were 161, and 133 were one missing feature","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parser, skip, top, level, parse, struct, array, else"}]},{"specId":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"array, view"}]}]},{"key":"ghashtag/t27#2109","repo":"ghashtag/t27","number":2109,"title":"Wave 674: 123 Qed are type-checked by nothing","hits":[]},{"key":"ghashtag/t27#2108","repo":"ghashtag/t27","number":2108,"title":"Wave 673: recovery skipped past every module-level const, by design","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1068,"reasons":[{"kind":"symbol","value":"is_top_level_start:186"},{"kind":"terms","value":"parser, parsing, skip, brace, top, level, start, call"}]}]},{"key":"ghashtag/t27#2107","repo":"ghashtag/t27","number":2107,"title":"Wave 672: withdrawing an unsound metric, 162167 characters restored, 61 deleted proofs found","hits":[]},{"key":"ghashtag/t27#2106","repo":"ghashtag/t27","number":2106,"title":"Wave 671: a Unicode-to-ASCII commit replaced 162167 characters with a running counter","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"parse_top_level_decl:1176"},{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parsing, semicolon, top, level, parse, index, decl"}]},{"specId":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"bit_to_trit_pair:37"},{"kind":"terms","value":"trit, byte, bit, pair"}]},{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"commit, ascii"}]}]},{"key":"ghashtag/t27#2105","repo":"ghashtag/t27","number":2105,"title":"Wave 670: 497 specs parse, and 3292 declarations never reach an AST","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/numeric/requant_boundary.t27"},{"kind":"terms","value":"numeric, requant, boundary, threshold, question, guess"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"skip_to_next_top_level:201"},{"kind":"symbol","value":"parse_module_body:1488"},{"kind":"terms","value":"compiler, parser, skip, semicolon, top, level, boundary, parse"}]},{"specId":"2e87c761814045a402179280a8406e4cffaec0795497a4a7e042d973bf2660f0","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"compiler, parser, rule, token, label, parse, ast"}]},{"specId":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"parser, token, ast, parse, skip"}]},{"specId":"2a263b75b4f49ba65564d52f7697195904806ffda509bdf7734719cd03732c7f","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"compiler, parser, parse, ast, label"}]}]},{"key":"ghashtag/t27#2104","repo":"ghashtag/t27","number":2104,"title":"Wave 669: a boundary 139 propositions never touched, and a corrected pass-rate","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"requant, boundary, trit, threshold, acc, measured"}]}]},{"key":"ghashtag/t27#2103","repo":"ghashtag/t27","number":2103,"title":"Wave 668: the value check sweeps, and its six failures were an ill-posed question","hits":[]},{"key":"ghashtag/t27#2102","repo":"ghashtag/t27","number":2102,"title":"Wave 667: the engine computes 27, and no proof in the campaign is vacuous","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, threshold, verify, acc, resolved, measured"}]}]},{"key":"ghashtag/t27#2101","repo":"ghashtag/t27","number":2101,"title":"Wave 666: a vacuity gate, a config guard, and a withdrawn measurement","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, checked, acc, open, measured"}]}]},{"key":"ghashtag/t27#2100","repo":"ghashtag/t27","number":2100,"title":"Wave 665: layer 0 loads its weights — simulation agrees, the formal property still refutes","hits":[{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"layer, weights, weight, activation, zero"}]},{"specId":"b62c204061b2484b45cd758b203f828582b766d24dc6126ef3d6415872aea62a","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"layer, weights"}]}]},{"key":"ghashtag/t27#2099","repo":"ghashtag/t27","number":2099,"title":"design: nothing loads layer 0's weights (Prop. 129)","hits":[{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"phase, layer, weights, weight"}]},{"specId":"b62c204061b2484b45cd758b203f828582b766d24dc6126ef3d6415872aea62a","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"layer, weights"}]}]},{"key":"ghashtag/t27#2098","repo":"ghashtag/t27","number":2098,"title":"sim: the value check now fails for a named reason (Prop. 128)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, acc, measured"}]}]},{"key":"ghashtag/t27#2097","repo":"ghashtag/t27","number":2097,"title":"sim: withdraw the value check's first result -- it was an uninitialised variable (Prop. 127b)","hits":[]},{"key":"ghashtag/t27#2096","repo":"ghashtag/t27","number":2096,"title":"rtl: the chunk-indexed repair, applied and verified both ways (Prop. 126)","hits":[]},{"key":"ghashtag/t27#2095","repo":"ghashtag/t27","number":2095,"title":"design: one units confusion with four faces, and a root cause refuted (Prop. 125)","hits":[]},{"key":"ghashtag/t27#2094","repo":"ghashtag/t27","number":2094,"title":"formal: name the subject a gate exists for, and two negative results (Prop. 124)","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"negative, sum, right, two"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"one, negative, two"}]}]},{"key":"ghashtag/t27#2093","repo":"ghashtag/t27","number":2093,"title":"formal: a gate that could not see the defect it was written for (Prop. 123)","hits":[]},{"key":"ghashtag/t27#2092","repo":"ghashtag/t27","number":2092,"title":"design: a sixth defect, what was proved clean, and a claim I over-stated (Prop. 122)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"trit, threshold, finding, open"}]}]},{"key":"ghashtag/t27#2091","repo":"ghashtag/t27","number":2091,"title":"design: five confirmed defects — multi-layer inference deadlocks (Prop. 121)","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"trits, trit, chunk, chunks, num, mod, two, values"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1027,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"requant, boundary, trit, acc, question"}]}]},{"key":"ghashtag/t27#2090","repo":"ghashtag/t27","number":2090,"title":"design: activation_requant never flushes, and a property asserts that it doesn't (Prop. 120)","hits":[]},{"key":"ghashtag/t27#2089","repo":"ghashtag/t27","number":2089,"title":"formal: closing a class that cost five waves (Prop. 119)","hits":[]},{"key":"ghashtag/t27#2088","repo":"ghashtag/t27","number":2088,"title":"formal: six of the ten over-detections, fixed (Prop. 118)","hits":[]},{"key":"ghashtag/t27#2087","repo":"ghashtag/t27","number":2087,"title":"formal: the 9-of-37 figure was my classifier, not the suite (Prop. 117)","hits":[]},{"key":"ghashtag/t27#2086","repo":"ghashtag/t27","number":2086,"title":"formal: the sweep's verdict was the sign of an exit code (Prop. 116)","hits":[]},{"key":"ghashtag/t27#2085","repo":"ghashtag/t27","number":2085,"title":"formal: two CI steps already broken, and over-detection is universal (Props. 114-115)","hits":[{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"universal, rate, fixed, step, steps, target"}]}]},{"key":"ghashtag/t27#2084","repo":"ghashtag/t27","number":2084,"title":"formal: the provenance projection, and a superseded figure stated as live (Prop. 113)","hits":[]},{"key":"ghashtag/t27#2083","repo":"ghashtag/t27","number":2083,"title":"formal: a gated claim and its ungated synonym, in the same document (Prop. 112)","hits":[]},{"key":"ghashtag/t27#2082","repo":"ghashtag/t27","number":2082,"title":"formal: the first instrument for the unfaithful category, and its limit (Prop. 111)","hits":[]},{"key":"ghashtag/t27#2080","repo":"ghashtag/t27","number":2080,"title":"formal: the absence sweep was starving the instruments, not the subjects (Prop. 109)","hits":[]},{"key":"ghashtag/t27#2079","repo":"ghashtag/t27","number":2079,"title":"formal: the mirror compared nothing, if you asked it positionally (Prop. 108)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"trit, yields, resolved"}]},{"specId":"94369edf5d1ff6cdc3ca1d798a5a5e7a248c0c03c4487d5514bf4299d45237a1","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"trit_full_adder:24"},{"kind":"terms","value":"full, adder, trit"}]}]},{"key":"ghashtag/t27#2078","repo":"ghashtag/t27","number":2078,"title":"formal: the taxonomy was falsified, as designed (Prop. 106)","hits":[]},{"key":"ghashtag/t27#2077","repo":"ghashtag/t27","number":2077,"title":"formal: the orphan check never checked that anything runs (Prop. 104)","hits":[]},{"key":"ghashtag/t27#2076","repo":"ghashtag/t27","number":2076,"title":"formal: three defects in 48-hour-old code, and the defect taxonomy (Props. 102-103)","hits":[]},{"key":"ghashtag/t27#2074","repo":"ghashtag/t27","number":2074,"title":"formal: every decline, counted (Prop. 101)","hits":[]},{"key":"ghashtag/t27#2073","repo":"ghashtag/t27","number":2073,"title":"formal: the audit found six defects; I had fixed four (Prop. 100)","hits":[]},{"key":"ghashtag/t27#2072","repo":"ghashtag/t27","number":2072,"title":"formal: four more gate defects found by attacking them, and a measurement that reversed sign (Props. 98-99)","hits":[]},{"key":"ghashtag/t27#2071","repo":"ghashtag/t27","number":2071,"title":"formal: a guard whose members had different preconditions (Prop. 97)","hits":[]},{"key":"ghashtag/t27#2070","repo":"ghashtag/t27","number":2070,"title":"formal: -set-init-zero is not the reset state (Prop. 96)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"requant, trit, checked"}]},{"specId":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"formal, reset, point"}]}]},{"key":"ghashtag/t27#2069","repo":"ghashtag/t27","number":2069,"title":"formal: an adversarial review found four holes in Prop. 92 and two gates not checking what they claimed (Props. 93-95)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"trit, reached, claimed"}]}]},{"key":"ghashtag/t27#2068","repo":"ghashtag/t27","number":2068,"title":"formal: lemmas under T5, the encoding permutation as a gate, and a withdrawn conclusion (Props. 89-91)","hits":[]},{"key":"ghashtag/t27#2067","repo":"ghashtag/t27","number":2067,"title":"formal: the six unreached primitives are an algebra, and it is now proved (Props. 86-88)","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_compare:233"},{"kind":"symbol","value":"trit_and:282"},{"kind":"symbol","value":"trit_or:299"},{"kind":"symbol","value":"trit_not:326"},{"kind":"terms","value":"zero, one, trit, bits, word, bytes, ternary, multiply"}]},{"specId":"94369edf5d1ff6cdc3ca1d798a5a5e7a248c0c03c4487d5514bf4299d45237a1","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"trit_full_adder:24"},{"kind":"terms","value":"ternary, full, adder, trit, raw, min, states, closed"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, reserved, checked, min, observed, open, question, measured"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"trit_compare:120"},{"kind":"terms","value":"zero, one, trit, carry, multiply, compare, min, sign"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"trit_not:196"},{"kind":"terms","value":"trit, ternary, word, balanced, bundle, time"}]}]},{"key":"ghashtag/t27#2061","repo":"ghashtag/t27","number":2061,"title":"formal: the countdowns that enforce the tight bounds (Prop. 85)","hits":[]},{"key":"ghashtag/t27#2060","repo":"ghashtag/t27","number":2060,"title":"formal: map every growing register to whatever bounds it (Prop. 84)","hits":[]},{"key":"ghashtag/t27#2059","repo":"ghashtag/t27","number":2059,"title":"formal: the MAC accumulator is safe because of a contract written nowhere (Prop. 83)","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"trit, zero, chunk, chunks, num, long, left, two"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"boundary, trit, reserved, acc, question"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"mac, zero, width, acc, bits, num, pipeline, dot"}]}]},{"key":"ghashtag/t27#2058","repo":"ghashtag/t27","number":2058,"title":"formal: gate declared widths against the ranges they carry (Prop. 82)","hits":[]},{"key":"ghashtag/t27#2057","repo":"ghashtag/t27","number":2057,"title":"formal: nothing moved, and that is the finding (Prop. 81)","hits":[]},{"key":"ghashtag/t27#2056","repo":"ghashtag/t27","number":2056,"title":"formal: an exhaustive proof, a real defect, and a step that could not run (Prop. 80)","hits":[{"specId":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"formal, cover, assume, concurrent, proof"}]},{"specId":"80e970c2be2a313cfca43bc0bbb20397259952dd2d26af5b1359e1d26ea1a4b3","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"steps, step, compute, trit, proof"}]},{"specId":"94b07d6a708c1a40ea01ad735466a1829b08a98ea73d8c8ac62c23dca79fa775","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"steps, depth, step, proof, trit"}]},{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"proof, step, steps, bit"}]},{"specId":"e24ed494c1f78c01bbbd69a338432166ca36a1271b1d5c6c8a25a9946786da76","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"proof, steps, step, trit"}]}]},{"key":"ghashtag/t27#2055","repo":"ghashtag/t27","number":2055,"title":"formal: the accumulator, checked without trusting the primitive (Prop. 79)","hits":[]},{"key":"ghashtag/t27#2054","repo":"ghashtag/t27","number":2054,"title":"formal: the memory axiom, over a symbolic address (Prop. 78)","hits":[{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"addr_width:200"},{"kind":"terms","value":"memory, kind, port, bram, read, write, addr, width"}]},{"specId":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"addr_width:119"},{"kind":"terms","value":"kind, depth, full, addr, width"}]},{"specId":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ADDR_WIDTH:12"},{"kind":"terms","value":"addr, width, write, read"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"addr_width:29"},{"kind":"terms","value":"width, addr, memory"}]},{"specId":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"ADDR_WIDTH:14"},{"kind":"terms","value":"width, addr"}]}]},{"key":"ghashtag/t27#2053","repo":"ghashtag/t27","number":2053,"title":"formal: the ping-pong finally has properties of its own (Prop. 77)","hits":[{"specId":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"level, ping, pong"}]}]},{"key":"ghashtag/t27#2052","repo":"ghashtag/t27","number":2052,"title":"formal: twenty-three modules, and six that nothing reaches (Prop. 76)","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_compare:233"},{"kind":"symbol","value":"trit_and:282"},{"kind":"symbol","value":"trit_or:299"},{"kind":"symbol","value":"trit_not:326"},{"kind":"terms","value":"one, trit, per, ternary, multiply, compare, right, double"}]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"trit_compare:120"},{"kind":"terms","value":"one, trit, multiply, compare, product"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"trit_not:196"},{"kind":"terms","value":"trit, ternary, bundle"}]}]},{"key":"ghashtag/t27#2051","repo":"ghashtag/t27","number":2051,"title":"formal: properties live in two places, and one module has no file at all (Prop. 75)","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"zero, one, two"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"two, one"}]}]},{"key":"ghashtag/t27#2050","repo":"ghashtag/t27","number":2050,"title":"formal: twenty waves auditing the tools; this one audits the prose (Prop. 74)","hits":[]},{"key":"ghashtag/t27#2049","repo":"ghashtag/t27","number":2049,"title":"formal: the campaign's most-quoted number, corrected (Prop. 73)","hits":[]},{"key":"ghashtag/t27#2048","repo":"ghashtag/t27","number":2048,"title":"formal: the gap list was measured one suite at a time (Prop. 72)","hits":[]},{"key":"ghashtag/t27#2047","repo":"ghashtag/t27","number":2047,"title":"formal: the DMA data property, six waves late (Prop. 71)","hits":[{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"assertion, suite, data, property"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"assertion, suite, data, property"}]}]},{"key":"ghashtag/t27#2046","repo":"ghashtag/t27","number":2046,"title":"formal: count the steps, not the properties (Prop. 70)","hits":[]},{"key":"ghashtag/t27#2045","repo":"ghashtag/t27","number":2045,"title":"formal: eight properties counted as proved, run by no job (Prop. 69)","hits":[]},{"key":"ghashtag/t27#2044","repo":"ghashtag/t27","number":2044,"title":"formal: auditing the bounds, and a generalisation that did not hold (Prop. 68)","hits":[]},{"key":"ghashtag/t27#2043","repo":"ghashtag/t27","number":2043,"title":"formal: half the gate set, a phase-blind suite, and a bound that lies (Prop. 67)","hits":[{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"buffer, phase, unknown, bad, set, active"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"scope, phase, complete, set"}]},{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"scope, phase, complete, set"}]},{"specId":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"status, gate, suite"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"suite, phase"}]}]},{"key":"ghashtag/t27#2042","repo":"ghashtag/t27","number":2042,"title":"formal: the engine's 26, sampled, and a limit that does not lift (Prop. 66)","hits":[]},{"key":"ghashtag/t27#2041","repo":"ghashtag/t27","number":2041,"title":"formal: the last twelve properties, an inverted sweep, and one dead (Prop. 65)","hits":[{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"dead, one"}]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"dead, one"}]}]},{"key":"ghashtag/t27#2040","repo":"ghashtag/t27","number":2040,"title":"formal: a verdict for every property, and none of them is dead (Prop. 64)","hits":[]},{"key":"ghashtag/t27#2039","repo":"ghashtag/t27","number":2039,"title":"formal: an environment, and the three bars a property has to clear (Prop. 63)","hits":[{"specId":"e6fc9237d381f9b29860d7a63126260d9baab643cd75dacf4fe4e8c92f754be7","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"property, three"}]}]},{"key":"ghashtag/t27#2038","repo":"ghashtag/t27","number":2038,"title":"formal: one of the properties had never read the design (Prop. 62)","hits":[]},{"key":"ghashtag/t27#2037","repo":"ghashtag/t27","number":2037,"title":"formal: how much of the design do 24 properties actually constrain (Prop. 61)","hits":[]},{"key":"ghashtag/t27#2036","repo":"ghashtag/t27","number":2036,"title":"formal: the sweep now covers the workflow it runs inside (Prop. 60)","hits":[]},{"key":"ghashtag/t27#2035","repo":"ghashtag/t27","number":2035,"title":"formal: measure the absence instead of looking for it (Prop. 59)","hits":[]},{"key":"ghashtag/t27#2034","repo":"ghashtag/t27","number":2034,"title":"formal: repetition witnesses, and four defects in the instruments themselves (Props. 57-58)","hits":[]},{"key":"ghashtag/t27#2033","repo":"ghashtag/t27","number":2033,"title":"formal: probe reachability of interleavings, not just activities (Prop. 56)","hits":[]},{"key":"ghashtag/t27#2032","repo":"ghashtag/t27","number":2032,"title":"Wave Loop 605 — the split lands: the ceiling is back at 80 with nothing dropped","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"push, loop, back, end"}]},{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"dropped, loop"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"dropped, loop"}]}]},{"key":"ghashtag/t27#2031","repo":"ghashtag/t27","number":2031,"title":"Wave Loop 604 — four properties cost 75% of the proof; splitting them restores the ceiling","hits":[]},{"key":"ghashtag/t27#2030","repo":"ghashtag/t27","number":2030,"title":"Wave Loop 603 — the ceiling fell from 80 to 40, and the scaffolding costs 23x the design","hits":[]},{"key":"ghashtag/t27#2029","repo":"ghashtag/t27","number":2029,"title":"Wave Loop 602 — the conservation property is abandoned, and that is the result","hits":[]},{"key":"ghashtag/t27#2028","repo":"ghashtag/t27","number":2028,"title":"Wave Loop 601 — every assumption audited for what it removes","hits":[]},{"key":"ghashtag/t27#2027","repo":"ghashtag/t27","number":2027,"title":"Wave Loop 600 — the census, and an assumption that silently disabled two gates","hits":[]},{"key":"ghashtag/t27#2026","repo":"ghashtag/t27","number":2026,"title":"Wave Loop 599 — the datapath refactor is not worth doing, measured","hits":[]},{"key":"ghashtag/t27#2025","repo":"ghashtag/t27","number":2025,"title":"Wave Loop 598 — the read-side zero sweep finds nothing, and the properties bite","hits":[]},{"key":"ghashtag/t27#2024","repo":"ghashtag/t27","number":2024,"title":"Wave Loop 597 — closed: the fill extent now travels with the buffer","hits":[]},{"key":"ghashtag/t27#2023","repo":"ghashtag/t27","number":2023,"title":"Wave Loop 596 — the configuration was read live by a running sequencer","hits":[]},{"key":"ghashtag/t27#2022","repo":"ghashtag/t27","number":2022,"title":"Wave Loop 595 — the last defect is a zero-neuron read, and the fifth of its family","hits":[]},{"key":"ghashtag/t27#2021","repo":"ghashtag/t27","number":2021,"title":"Wave Loop 594 — a start-time count cannot enforce a per-cycle claim","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"per, claim, target, fresh, read, start"}]},{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"buffer, set, cycle, start, time, slot"}]},{"specId":"2bda99182d7c0c06e381bf777dd46df1ff51c98688439cd700498ee1cbf5f192","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"claim, semantic, baseline, start, hash"}]},{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"start, time, hardware, claim"}]},{"specId":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"per, threshold, index, cycle, time"}]}]},{"key":"ghashtag/t27#2020","repo":"ghashtag/t27","number":2020,"title":"Wave Loop 593 — attributed: the engine reads a slot it never wrote","hits":[]},{"key":"ghashtag/t27#2019","repo":"ghashtag/t27","number":2019,"title":"Wave Loop 592 — the free-property gate, and a semantic layer that did not land","hits":[{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"property, gate, pipeline"}]}]},{"key":"ghashtag/t27#2018","repo":"ghashtag/t27","number":2018,"title":"Wave Loop 591 — five properties proved by syntax alone, and they inflated the gate that exists to catch that","hits":[]},{"key":"ghashtag/t27#2017","repo":"ghashtag/t27","number":2017,"title":"Wave Loop 590 — a self-comparison cannot detect an undefined value","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"self, loop, start"}]},{"specId":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"comparison, self"}]},{"specId":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"comparison, self"}]}]},{"key":"ghashtag/t27#2016","repo":"ghashtag/t27","number":2016,"title":"Wave Loop 589 — the read side, and the baseline that never existed","hits":[]},{"key":"ghashtag/t27#2015","repo":"ghashtag/t27","number":2015,"title":"Wave Loop 588 — the MAC is 8x of the solve cost, and it is the one thing not scalable","hits":[{"specId":"cb61281176bafb99fd47a406941d7f224280dbfc0c0e255c3f0afb9dd6ce3976","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"solver, literal, solve, model, generate, cost"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"width, full, mac, dot, product, bram, one"}]}]},{"key":"ghashtag/t27#2014","repo":"ghashtag/t27","number":2014,"title":"Wave Loop 586 — splitting pays only when properties differ in cost","hits":[]},{"key":"ghashtag/t27#2011","repo":"ghashtag/t27","number":2011,"title":"Wave Loop 585 — two suites were never bounded at all","hits":[]},{"key":"ghashtag/t27#2010","repo":"ghashtag/t27","number":2010,"title":"Wave Loop 584 — a batch verdict is the minimum of its parts","hits":[]},{"key":"ghashtag/t27#2009","repo":"ghashtag/t27","number":2009,"title":"Wave Loop 583 — the scale ceiling: \"proved\" is a claim about (design, scale)","hits":[]},{"key":"ghashtag/t27#2007","repo":"ghashtag/t27","number":2007,"title":"Wave Loop 582 — the last open defect closes: right idea, wrong shape","hits":[]},{"key":"ghashtag/t27#2004","repo":"ghashtag/t27","number":2004,"title":"Wave Loop 580 — the instrument was broken, and fixing it found the defect","hits":[]},{"key":"ghashtag/t27#2000","repo":"ghashtag/t27","number":2000,"title":"Wave Loop 577 — gate adequacy: 13 of 13 gates bite","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"zero, size, chunks, negate, num, two, back"}]},{"specId":"18cbfabd05c402e9330be096cd6cd3d6d17ad2ea2b6eb02456dc3c20a9f03814","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"gates, zero, gate"}]}]},{"key":"ghashtag/t27#1998","repo":"ghashtag/t27","number":1998,"title":"Wave Loop 576 — the document recording these proofs was itself unchecked evidence","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"zero, chunks, num, two"}]}]},{"key":"ghashtag/t27#1997","repo":"ghashtag/t27","number":1997,"title":"Wave Loop 575 — zero-sized-request sweep: a 2–2 policy split, and a retraction","hits":[{"specId":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"zero, chunk, size, chunks, num, left, two"}]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:21"},{"kind":"terms","value":"num, layers, layer, mean, weight, zero"}]},{"specId":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:12"},{"kind":"terms","value":"size, num, layers, length"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"policy, global, idle, complete, find, request, execute"}]},{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"policy, global, idle, complete, find, request, execute"}]}]},{"key":"ghashtag/t27#1996","repo":"ghashtag/t27","number":1996,"title":"Wave Loop 574 — first cross-layer property proves; second refutes and is gated open","hits":[{"specId":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"cross, layer, layers, set"}]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"cross, layer, layers"}]}]},{"key":"ghashtag/t27#1995","repo":"ghashtag/t27","number":1995,"title":"Wave Loop 573 — liveness audit: interlocks constrain without stalling; 19/19 guards reachable","hits":[]},{"key":"ghashtag/t27#1993","repo":"ghashtag/t27","number":1993,"title":"Wave Loop 572 — DMA interlock closed after four waves; all 17 integration properties prove","hits":[]},{"key":"ghashtag/t27#1992","repo":"ghashtag/t27","number":1992,"title":"Wave Loop 571 — DMA interlock diagnosed: quiescence is unobservable from the top","hits":[]},{"key":"ghashtag/t27#1990","repo":"ghashtag/t27","number":1990,"title":"Wave Loop 570 — busy becomes a state register; interlock made symmetric; one property still open","hits":[{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"mac, busy, one"}]}]},{"key":"ghashtag/t27#1989","repo":"ghashtag/t27","number":1989,"title":"Wave Loop 569 — DMA wired: 10/10 modules integrated; layer 0 had no input path; interlock open","hits":[{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"path, position, direct, data, loop"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"path, position, direct, data, loop"}]},{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"modules, open"}]}]},{"key":"ghashtag/t27#1987","repo":"ghashtag/t27","number":1987,"title":"Wave Loop 568 — AXI-Lite aperture wired; config becomes CSRs; 9 of 10 modules integrated","hits":[{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:21"},{"kind":"terms","value":"num, layers, layer, weight, activation, over"}]},{"specId":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:12"},{"kind":"terms","value":"num, layers, wire"}]},{"specId":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"axi4, axi, bus, ports, burst, port, lite, slave"}]}]},{"key":"ghashtag/t27#1984","repo":"ghashtag/t27","number":1984,"title":"Wave Loop 566 — host path wired, tie-offs retired; weight-BRAM overlap recorded as open","hits":[{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:21"},{"kind":"terms","value":"num, layers, layer, weights, weight"}]},{"specId":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:12"},{"kind":"terms","value":"num, layers, wire, length"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"memory, rtl, open, read, weight, model, text"}]},{"specId":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"path, passed, bram, hold"}]},{"specId":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"bram, overlap"}]}]},{"key":"ghashtag/t27#1983","repo":"ghashtag/t27","number":1983,"title":"Wave Loop 565 — activation loop closed; use_buffer_a was connected and never consumed","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"activation, consume, rtl, reset, per, word, start, buffer"}]}]},{"key":"ghashtag/t27#1981","repo":"ghashtag/t27","number":1981,"title":"Wave Loop 564 — layer-boundary requantizer; 2'b11 proved unreachable; activation fork now a port","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"format, required, activations, invalid, forbidden, too, port, trits"}]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"len, act, ternary, layer, activation, over, zero"}]},{"specId":"e76bf03cf8f562893d856f702982101bf5a630d8c6ec2beecbd3e19a530a7d99","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"layer, activation"}]}]},{"key":"ghashtag/t27#1980","repo":"ghashtag/t27","number":1980,"title":"Wave Loop 563 — datapath wired; first multi-module proof; a property that did not bite","hits":[]},{"key":"ghashtag/t27#1979","repo":"ghashtag/t27","number":1979,"title":"Wave Loop 562 — BitNet v2 validates ternary weights; the real gap is that 6 of 9 blocks are unwired","hits":[{"specId":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"passed, bit, accurate, real, metric"}]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"passed, bit, accurate, real, metric"}]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"ternary, layer, weights, weight, activation"}]}]},{"key":"ghashtag/t27#1976","repo":"ghashtag/t27","number":1976,"title":"Wave Loop 560 — vacuity audit: 19/19 guards reachable, 6/6 witnesses refute, 0 vacuous","hits":[{"specId":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"status_read:183"},{"kind":"terms","value":"width, carry, read, write, status, mask"}]}]},{"key":"ghashtag/t27#1974","repo":"ghashtag/t27","number":1974,"title":"Wave Loop 559 — sat ignores $assume without -set-assumes; anomaly resolved, flow self-checks","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"self, bytes, loop"}]}]},{"key":"ghashtag/t27#1972","repo":"ghashtag/t27","number":1972,"title":"Wave Loop 558 — AXI4 slave model; arlen-at-handshake anomaly recorded as open","hits":[{"specId":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"axi4, axi, ports, addr, width, len, burst, slave"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"rtl, work, open, read, weight, model"}]}]},{"key":"ghashtag/t27#1970","repo":"ghashtag/t27","number":1970,"title":"Wave Loop 557 — dma_controller abandoned bursts and advanced on ready-without-valid","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"valid, bit, activation, width, rtl, ready, encoded"}]},{"specId":"1954284a2f9b5b29dff46df7365664c2337d70054c222bb69019dffeb8631f98","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"addr, ready, valid, passed, address"}]},{"specId":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"controller, target, valid, bit"}]},{"specId":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"controller, target, valid, bit"}]}]},{"key":"ghashtag/t27#1965","repo":"ghashtag/t27","number":1965,"title":"Wave Loop 554 — sv2v deletes assertions; Yosys-checkable subset emitter + vacuity gate","hits":[]},{"key":"ghashtag/t27#1963","repo":"ghashtag/t27","number":1963,"title":"Wave Loop 553 — gates reach a fresh clone; one Rust implementation replaces three disagreeing shells","hits":[{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"rust, path, loop"}]}]},{"key":"ghashtag/t27#1962","repo":"ghashtag/t27","number":1962,"title":"Wave Loop 552 — SVA was never parseable by any tool; formal foundations documented","hits":[]},{"key":"ghashtag/t27#1961","repo":"ghashtag/t27","number":1961,"title":"Wave Loop 551 — seal re-baseline 0/496 to 496/496; seal_file_path was not injective","hits":[{"specId":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/ml/transformer/feed_forward.t27"},{"kind":"terms","value":"transformer, feed, forward, intermediate"}]},{"specId":"1f58e539bacb2363a82c13b34cbf3c84bade8790f94041dd13cbb01949f5a0c0","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/ml/transformer/feed_forward_network.t27"},{"kind":"terms","value":"transformer, feed, forward, network"}]},{"specId":"78fb5c9300e99d054e736a1987e58b72a08481fbed4dec98bab56f0ca9c5f0ff","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/tri/math/constants.t27"},{"kind":"terms","value":"math, constants, path"}]},{"specId":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"terms","value":"math, constants, measured"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"path, dir, build, seal"}]}]},{"key":"ghashtag/t27#1956","repo":"ghashtag/t27","number":1956,"title":"Wave Loop 550 — three CI jobs were echo statements; seal gate resolved the wrong file","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, tritype, one, per, bit"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, triformat, bit, base, one"}]}]},{"key":"ghashtag/t27#1954","repo":"ghashtag/t27","number":1954,"title":"Wave Loop 549 — CLARA coverage regenerated over 496 specs; 730 seals verify 0","hits":[{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, triformat, zero, bit, one"}]}]},{"key":"ghashtag/t27#1951","repo":"ghashtag/t27","number":1951,"title":"Wave Loop 548 — positioning audit: name the real competitors, unbreak scripts/tri, three W549 variants","hits":[]},{"key":"ghashtag/t27#1948","repo":"ghashtag/t27","number":1948,"title":"gen-verilog TB long tails: typed let-locals get no reg declaration; unsized concat operands; 'Syntax error defining function' class","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"runtime, valid, gen, compile, zig, verilog"}]},{"specId":"9fb0fcc0a0a24932ffc0181e6a6847e06936d35c5919c29d74f6decccdd8b5dd","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"width, class, reg, full"}]},{"specId":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"runtime, concat, byte, reg"}]},{"specId":"76a39f4c7d0e78833ccaedd7533f74b68e8350453f0198b2c1cf370138a5419e","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"class, local, concat"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"gen, zig, verilog"}]}]},{"key":"ghashtag/t27#1928","repo":"ghashtag/t27","number":1928,"title":"zig-test execution level: 37/69 tri-net gens pass; three finding classes in the rest","hits":[]},{"key":"ghashtag/t27#1919","repo":"ghashtag/t27","number":1919,"title":"gen-c: validity campaign -- 64/68 -> 8/68 invalid; eight long-tails remain","hits":[]},{"key":"ghashtag/t27#1901","repo":"ghashtag/t27","number":1901,"title":"feat(igla): Wave Loop 899 — module-scope [617][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, plan"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]}]},{"key":"ghashtag/t27#1882","repo":"ghashtag/t27","number":1882,"title":"gen-rust: four codegen defects surfaced by tri-net's repaired spec-drift-guard","hits":[{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"tri-net/specs/traffic_animator.t27"},{"kind":"symbol","value":"create_packet_color:130"},{"kind":"terms","value":"traffic, animator, packet, path, color"}]},{"specId":"f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"tri-net/specs/multipath_router.t27"},{"kind":"symbol","value":"select_path_index:13"},{"kind":"terms","value":"multipath, router, path, select, index"}]},{"specId":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","relation":"reference","coverage":"unverified","score":2007,"reasons":[{"kind":"path","value":"tri-net/specs/mesh_routing.t27"},{"kind":"terms","value":"mesh, routing"}]},{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"create_packet_color:130"},{"kind":"terms","value":"rust, mesh, traffic, animator, packet, path, color"}]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"select_path_index:13"},{"kind":"terms","value":"rust, mesh, multipath, router, path, select, index"}]}]},{"key":"ghashtag/t27#1857","repo":"ghashtag/t27","number":1857,"title":"feat(igla): Wave Loop 897 — module-scope [613][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, plan"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]}]},{"key":"ghashtag/t27#1855","repo":"ghashtag/t27","number":1855,"title":"feat(igla): Wave Loop 896 — module-scope [611][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, plan"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]}]},{"key":"ghashtag/t27#1853","repo":"ghashtag/t27","number":1853,"title":"feat(igla): Wave Loop 895 — module-scope [609][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, plan"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]}]},{"key":"ghashtag/t27#1851","repo":"ghashtag/t27","number":1851,"title":"feat(igla): Wave Loop 894 — module-scope [607][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, plan"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]}]},{"key":"ghashtag/t27#1848","repo":"ghashtag/t27","number":1848,"title":"feat(igla): Wave Loop 893 — module-scope [605][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"compiler, field, index, call, inner, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]},{"specId":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, element"}]}]},{"key":"ghashtag/t27#1845","repo":"ghashtag/t27","number":1845,"title":"feat(igla): Wave Loop 892 — module-scope [603][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"compiler, field, index, call, inner, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]},{"specId":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, element"}]}]},{"key":"ghashtag/t27#1843","repo":"ghashtag/t27","number":1843,"title":"feat(igla): Wave Loop 891 — module-scope [601][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"compiler, field, index, call, inner, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, scope, signed"}]},{"specId":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"scope, power, element"}]}]},{"key":"ghashtag/t27#1841","repo":"ghashtag/t27","number":1841,"title":"Wave Loop 890 — module-scope [599][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"compiler, parse, field, call, struct, array"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"variable, pass, array"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"variable, pass, array"}]}]},{"key":"ghashtag/t27#1811","repo":"ghashtag/t27","number":1811,"title":"Wave Loop 882 — module-scope [583][2]^6 Pt packed AoS variable from call with indexed signed writes","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"dimension, compiler, init, push, call, loop"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"compiler, scope, init, push, signed, literal"}]}]},{"key":"ghashtag/t27#1781","repo":"ghashtag/t27","number":1781,"title":"suite: parse phase is superlinear, making `t27c suite` unrunnable on specs/scratch (12.4M lines)","hits":[{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"suite, phase, parse, gen, zig, verilog, seal, fixed"}]}]},{"key":"ghashtag/t27#1773","repo":"ghashtag/t27","number":1773,"title":"gap: .t27 has no cross-module imports for user functions — every spec re-defines the ternary primitives","hits":[{"specId":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"functions, cross, similar"}]},{"specId":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"functions, cross, similar"}]}]},{"key":"ghashtag/t27#1726","repo":"ghashtag/t27","number":1726,"title":"test: bitnet_top asserts stale contract (busy + mem tie-off) vs current gen-bitnet-engine-top","hits":[{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"top, assign, mem, masked"}]},{"specId":"9973916e12d9225b9f175037e9bd30897284f515074a11b97585dbf7b1a59e80","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"stale, bitnet"}]},{"specId":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"top, busy, start"}]},{"specId":"fae8329c717a697cf1938a8aece2f3b92ab31f6ac7bea6abfdeea41d5b11dea7","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"engine, top"}]}]},{"key":"ghashtag/t27#1697","repo":"ghashtag/t27","number":1697,"title":"[PLAN] t27 improvement plan — drain wave-loop noise, finish the codegen backend, harden conformance","hits":[{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"codegen, verilog, memory, fifo, gf16, generic, hir, conformance"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"codegen, gen, zig, verilog, rust, conformance, bench"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"memory, drain, stream, finish, done"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"codegen, zig, target, sub, bench, conformance"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"gen, conformance, zig, verilog, backend"}]}]},{"key":"ghashtag/t27#1676","repo":"ghashtag/t27","number":1676,"title":"conformance: corpus split across two incompatible pack schemas; 10 narrow rungs have no independent oracle","hits":[{"specId":"6c727d13e4889735bc80ade95073f07d6efad2c15bf20908645292b10c6e862a","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"abs_error:387"},{"kind":"terms","value":"abs"}]},{"specId":"df74b541158c71d5463152e377813a5491def4207dbffe97f6fd78b23cf6d4d9","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"corpus, wide, pack"}]}]},{"key":"ghashtag/t27#1458","repo":"ghashtag/t27","number":1458,"title":"Wave Loop 500 — close the last documented Icarus baseline by lowering local AOS element field access","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"field, baseline, element"}]},{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"baseline, field"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"close, field"}]},{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"close, field"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"field, local"}]}]},{"key":"ghashtag/t27#1453","repo":"ghashtag/t27","number":1453,"title":"chore(specs): propose ecosystem-tier subdirectory layout under specs/","hits":[]},{"key":"ghashtag/t27#1448","repo":"ghashtag/t27","number":1448,"title":"Wave Loop 472 — select one of three cooperation variants and close the wave","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"one, per, ternary, select"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"select, one"}]}]},{"key":"ghashtag/t27#1447","repo":"ghashtag/t27","number":1447,"title":"Wave Loop 473 — compiler-backend aggregate tail / live cold-POR CCLK sweep","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"compiler, build, branch, backend"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"default, compiler, loop"}]},{"specId":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"compiler, backend"}]}]},{"key":"ghashtag/t27#1446","repo":"ghashtag/t27","number":1446,"title":"fix(igla): add Digilent FTDI cable support to cli/dlc10","hits":[]},{"key":"ghashtag/t27#1442","repo":"ghashtag/t27","number":1442,"title":"chore(igla): clean stale agent worktrees and preserve real changes","hits":[]},{"key":"ghashtag/t27#1433","repo":"ghashtag/t27","number":1433,"title":"Wave Loop 460 — select one of three cooperation variants and close the wave","hits":[{"specId":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, ternary, select"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"select, one"}]}]},{"key":"ghashtag/t27#1420","repo":"ghashtag/t27","number":1420,"title":"Wave Loop 446 — Variant B default: diff gate golden vs expected_report.json + timing dashboard","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"field, allowed, json, default, per, variant, anchor"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"pass, expected, suite, branch, aggregate, summary, report"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"pass, expected, suite, branch, aggregate, summary, report"}]},{"specId":"9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"fixtures, default, report, timing, expected"}]},{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"verilog, default, diff, verification, build, report"}]}]},{"key":"ghashtag/t27#1290","repo":"ghashtag/t27","number":1290,"title":"feat(fpga): quad-mode flash-boot diagnostics and tri CLI hardening","hits":[]},{"key":"ghashtag/t27#1288","repo":"ghashtag/t27","number":1288,"title":"feat(fpga): SPI flash program/dump and boot-from-flash mode-pin resolution","hits":[{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"board, spi, pin, verify"}]},{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"board, spi, pin"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"board, spi, pin"}]},{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"board, spi, pin"}]},{"specId":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"pin, mode"}]}]},{"key":"ghashtag/t27#1286","repo":"ghashtag/t27","number":1286,"title":"feat(fpga): tri CLI integration for openXC7 GF16 flow","hits":[]},{"key":"ghashtag/t27#1284","repo":"ghashtag/t27","number":1284,"title":"EPIC: Master-alignment of trinity-rust-rings (224 commits, 300 files diverged)","hits":[]},{"key":"ghashtag/t27#1282","repo":"ghashtag/t27","number":1282,"title":"Wave Loop 392 — 312 generic ∀, integration-branch policy doc, 575/575 PASS","hits":[{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"rings, rust, failure, pass, suite, branch, branches"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"failure, pass, suite, branch, branches"}]}]},{"key":"ghashtag/t27#1276","repo":"ghashtag/t27","number":1276,"title":"Wave Loop 383 — 276 generic ∀, extend array/RAM lowering to ROM/array-literal and function-local arrays","hits":[{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"shift, literal, array, local, var"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"variable, array, arrays, var"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"variable, array, arrays, var"}]},{"specId":"3fafd9ae6b4b9d4b0907a4335ae37b99a2e320927ee2481fc851323a5ec436b6","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"literal, identity, array"}]}]},{"key":"ghashtag/t27#1274","repo":"ghashtag/t27","number":1274,"title":"Wave Loop 382 — 272 generic ∀, array/RAM lowering prototype","hits":[]},{"key":"ghashtag/t27#1272","repo":"ghashtag/t27","number":1272,"title":"Wave Loop 381 — 268 generic ∀ target + slot-aware tuple-return call lowering","hits":[{"specId":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"functions, target, calls, call, report"}]},{"specId":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"functions, target, calls, call, report"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"call, calls, target, read"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"call, loop"}]}]},{"key":"ghashtag/t27#1270","repo":"ghashtag/t27","number":1270,"title":"Wave Loop 380 — IGLA CODER+RACE + tuple-return generation start","hits":[{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"push, loop, start"}]}]},{"key":"ghashtag/t27#1265","repo":"ghashtag/t27","number":1265,"title":"Wave Loop 376 — IGLA CODER+RACE + retry board flash + gen-verilog as/&/|/^/~ width correctness + CI smoke gate","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":68,"reasons":[{"kind":"terms","value":"compiler, runtime, path, list, gen, conformance, key, build"}]},{"specId":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"compiler, verilog, width, emit, operand, memory, register, decode"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, rust, conformance, invariants, expr, emit"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"suite, gen, verilog, seal, verify, point"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"verification, build, verify, board, verilog, report"}]}]},{"key":"ghashtag/t27#1264","repo":"ghashtag/t27","number":1264,"title":"Wave Loop 375 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix (early-return if-else chaining)","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":64,"reasons":[{"kind":"terms","value":"compiler, path, list, gen, conformance, key, build, branch"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, rust, conformance, invariants, escape, emit"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"verification, build, verify, board, backends, verilog, report"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"suite, gen, verilog, seal, verify, fixed"}]}]},{"key":"ghashtag/t27#1263","repo":"ghashtag/t27","number":1263,"title":"Wave Loop 374 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, invariants, escape, invariant"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"compiler, gen, seal, verilog, invariant"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, verilog, seal"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"board, verilog, report"}]}]},{"key":"ghashtag/t27#1262","repo":"ghashtag/t27","number":1262,"title":"Wave Loop 373 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, invariants, escape, invariant"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"compiler, gen, seal, verilog, invariant"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, verilog, seal"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"board, verilog, report"}]}]},{"key":"ghashtag/t27#1261","repo":"ghashtag/t27","number":1261,"title":"Wave Loop 372 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"compiler, gen, seal, verilog, invariant"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, invariants, invariant"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, verilog, seal"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"board, verilog, report"}]}]},{"key":"ghashtag/t27#1260","repo":"ghashtag/t27","number":1260,"title":"Wave Loop 371 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"gen, verilog, rust, invariants"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"gen, branch, verilog"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"board, verilog"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]}]},{"key":"ghashtag/t27#1259","repo":"ghashtag/t27","number":1259,"title":"Wave Loop 370 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"gen, conformance, branch, seal, verilog, load, invariant, backend"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"gen, verilog, rust, conformance, emit, invariant"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, verilog, seal"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"board, verilog, report"}]}]},{"key":"ghashtag/t27#1258","repo":"ghashtag/t27","number":1258,"title":"gen-verilog: incremental array/RAM lowering for datapath specs (fifo/memory)","hits":[{"specId":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/fpga/fifo.t27"},{"kind":"terms","value":"fifo, validate"}]},{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/fpga/memory.t27"},{"kind":"terms","value":"memory, mem, validate"}]},{"specId":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"compiler, codegen, verilog, uart, spi, mac, bridge, memory"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"compiler, validate, validation, gen, skill, branch, verilog, block"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"compiler, codegen, gen, verilog, expr, block"}]}]},{"key":"ghashtag/t27#1257","repo":"ghashtag/t27","number":1257,"title":"Wave Loop 369 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"gen, verilog, conformance, invariants"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"gen, conformance, verilog"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"verify, board, verilog"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"gen, verilog, verify"}]}]},{"key":"ghashtag/t27#1256","repo":"ghashtag/t27","number":1256,"title":"Wave Loop 368 — IGLA CODER+RACE + retry board flash + one safe gen-verilog fix","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, verilog, invariants"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"verify, board, verilog"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"gen, verilog, verify"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]}]},{"key":"ghashtag/t27#1253","repo":"ghashtag/t27","number":1253,"title":"Wave Loop 367 — IGLA CODER+RACE + retry board flash + one safe gen-verilog fix","hits":[{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, verilog, invariants"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"verify, board, verilog"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"gen, verilog, verify"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]}]},{"key":"ghashtag/t27#1252","repo":"ghashtag/t27","number":1252,"title":"Wave Loop 366 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"board, verilog, report"}]},{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]}]},{"key":"ghashtag/t27#1251","repo":"ghashtag/t27","number":1251,"title":"Wave Loop 365 — IGLA CODER+RACE + retry board flash + gen-verilog weak-point triage","hits":[{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"gen, verilog, point"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"board, verilog, report"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gen, verilog"}]}]},{"key":"ghashtag/t27#1249","repo":"ghashtag/t27","number":1249,"title":"Wave Loop 364 — IGLA CODER+RACE + retry board flash + gen-verilog weak-point probe","hits":[{"specId":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"gen, verilog, point"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"gen, project, verilog"}]},{"specId":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"board, verilog, report"}]},{"specId":"77994ef12abe99523526c9731a3fb05116385ee25b471f3dbe771fb45c14969c","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"probe, point"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"probe, retry"}]}]},{"key":"ghashtag/t27#1246","repo":"ghashtag/t27","number":1246,"title":"Wave Loop 362 — IGLA CODER+RACE + board flash of first OpenXC7 ternary MAC bitstream","hits":[{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"board, leds, mac, done"}]},{"specId":"c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"bitstream, flash, verify"}]},{"specId":"edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"bitstream, flash, verify"}]},{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"board, leds, mac"}]}]},{"key":"ghashtag/t27#1242","repo":"ghashtag/t27","number":1242,"title":"Wave Loop 361 — IGLA CODER+RACE + OpenXC7 toolchain install and first ternary MAC bitstream","hits":[]},{"key":"ghashtag/t27#1241","repo":"ghashtag/t27","number":1241,"title":"Wave Loop 360 — IGLA CODER+RACE + OpenXC7 ternary MAC bitstream attempt","hits":[]},{"key":"ghashtag/t27#1240","repo":"ghashtag/t27","number":1240,"title":"Wave Loop 359 — IGLA CODER+RACE + ternary MAC synthesis","hits":[]},{"key":"ghashtag/t27#1239","repo":"ghashtag/t27","number":1239,"title":"Wave Loop 358 — IGLA CODER+RACE","hits":[]},{"key":"ghashtag/t27#1219","repo":"ghashtag/t27","number":1219,"title":"[EPIC] t27 Language Roadmap: 12 workstreams (R-TT completion -> Trinity provenance)","hits":[{"specId":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"language, lang, zig, json, completion, template, extension"}]}]},{"key":"ghashtag/t27#1215","repo":"ghashtag/t27","number":1215,"title":"[conformance] Promote gf10 and gf256 to bitexact_selfconsistent (WP-34)","hits":[]},{"key":"ghashtag/t27#1041","repo":"ghashtag/t27","number":1041,"title":"[IGLA-Coder] P8 Integration into t27 and publication","hits":[]},{"key":"ghashtag/t27#1040","repo":"ghashtag/t27","number":1040,"title":"[IGLA-Coder] P7 Low-bit / ternary track (parallel, optional)","hits":[{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"status, done, bit, parallel"}]}]},{"key":"ghashtag/t27#1039","repo":"ghashtag/t27","number":1039,"title":"[IGLA-Coder] P6 Scale-up to deployable 0.5B-1.5B (budget-gated)","hits":[]},{"key":"ghashtag/t27#1038","repo":"ghashtag/t27","number":1038,"title":"[IGLA-Coder] P5 Multi-language evaluation harness","hits":[]},{"key":"ghashtag/t27#1037","repo":"ghashtag/t27","number":1037,"title":"[IGLA-Coder] P4 Pilot pretraining at 50-200M","hits":[]},{"key":"ghashtag/tri-net#384","repo":"ghashtag/tri-net","number":384,"title":"trust_manager: four spec test assertions that cannot pass against the generated code","hits":[{"specId":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","relation":"reference","coverage":"unverified","score":2083,"reasons":[{"kind":"path","value":"tri-net/specs/trust_manager.t27"},{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"symbol","value":"create_trust_score:14"},{"kind":"symbol","value":"create_trust_relationship:40"},{"kind":"symbol","value":"get_trust_verified:59"},{"kind":"symbol","value":"create_trust_array:66"},{"kind":"symbol","value":"get_trust_score:70"},{"kind":"symbol","value":"calculate_trust_score:78"},{"kind":"symbol","value":"update_trust_score:90"},{"kind":"symbol","value":"find_most_trusted:118"},{"kind":"symbol","value":"should_route_via_node:166"},{"kind":"terms","value":"trust, manager, nodes, threshold, low, score, node, positive"}]},{"specId":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","relation":"reference","coverage":"unverified","score":1086,"reasons":[{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"symbol","value":"create_trust_score:14"},{"kind":"symbol","value":"create_trust_relationship:38"},{"kind":"symbol","value":"get_trust_verified:57"},{"kind":"symbol","value":"create_trust_array:62"},{"kind":"symbol","value":"get_trust_score:73"},{"kind":"symbol","value":"calculate_trust_score:85"},{"kind":"symbol","value":"update_trust_score:97"},{"kind":"symbol","value":"find_most_trusted:125"},{"kind":"symbol","value":"should_route_via_node:173"},{"kind":"terms","value":"rust, trust, manager, nodes, threshold, low, score, node"}]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","relation":"reference","coverage":"unverified","score":1055,"reasons":[{"kind":"symbol","value":"recover_to_stmt_boundary:238"},{"kind":"terms","value":"parser, node, brace, recover, stmt, boundary, parse, expr"}]},{"specId":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"terms","value":"rust, manager, nodes, threshold, trust, node, calculate, find"}]},{"specId":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"terms","value":"manager, nodes, threshold, trust, node, calculate, find, reason"}]}]},{"key":"ghashtag/tri-net#383","repo":"ghashtag/tri-net","number":383,"title":"EPIC: what the 2026-08-19 session surfaced — a red gate no branch causes, a missing silicon artefact, and four numbers a buyer asks for","hits":[{"specId":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"tri-net/specs/tri_depin.t27"},{"kind":"symbol","value":"epoch_seal:51"},{"kind":"terms","value":"depin, epoch, seal, verify, bytes, verified"}]}]},{"key":"ghashtag/tri-net#381","repo":"ghashtag/tri-net","number":381,"title":"GF-T16 multiply: correct RTL, correct netlist, wrong bitstream through openXC7's DSP path","hits":[{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"dsp, mul, done, lut, multiply, product, vector, unit"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"rtl, open, read, model, mode, vector, json"}]},{"specId":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"kind, path, fail, lut, dsp"}]}]},{"key":"ghashtag/tri-net#101","repo":"ghashtag/tri-net","number":101,"title":"build: build.rs rewrites tracked gen/ every build vs no-gen-edits hook — self-contradictory (R1)","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"path, gen, dir, build, branch, generate, block"}]}]},{"key":"ghashtag/tri-net#96","repo":"ghashtag/tri-net","number":96,"title":"Three binaries and one test fail to build: excluded from the build until fixed","hits":[{"specId":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"tri-net/specs/video_bridge.t27"},{"kind":"symbol","value":"fb_util_pct:81"},{"kind":"terms","value":"video, bridge, data, mesh, util, rate, pct"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"rust, mesh, pass, fail, fixed"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"pass, fail, fixed"}]}]},{"key":"ghashtag/tri-net#87","repo":"ghashtag/tri-net","number":87,"title":"demo: end-to-end PhoneA → P203 → radio → P203 → PhoneB video","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"call, mesh, video, send, target, end, start"}]}]},{"key":"ghashtag/tri-net#86","repo":"ghashtag/tri-net","number":86,"title":"feat(phone): Android port via Kotlin Multiplatform or Skip.tools","hits":[]},{"key":"ghashtag/tri-net#85","repo":"ghashtag/tri-net","number":85,"title":"feat(phone): real topology query — replace mock with TOPO_REQ/RESP","hits":[{"specId":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"node_count:65"},{"kind":"terms","value":"nodes, node"}]},{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"protocol, response, parse, data, req, resp"}]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"status, response, info, req, resp"}]},{"specId":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"status, response, resp, req"}]}]},{"key":"ghashtag/tri-net#84","repo":"ghashtag/tri-net","number":84,"title":"test(mesh): trios_meshd_video on P203 Mini — 2 board bridge test","hits":[{"specId":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"video, bridge, out, mesh, packet"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"mesh, video, send, target, peer"}]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"mesh, board, packet, dst"}]}]},{"key":"ghashtag/tri-net#83","repo":"ghashtag/tri-net","number":83,"title":"feat(phone): H.264 decode on iOS — VTDecompressionSession + Metal display","hits":[]},{"key":"ghashtag/tri-net#82","repo":"ghashtag/tri-net","number":82,"title":"🎯 EPIC: TRI-NET Phone Video Mesh — phone camera → mesh radio → phone display","hits":[{"specId":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"tri-net/specs/video_bridge.t27"},{"kind":"terms","value":"video, bridge, port, mesh, fragment"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"mesh, video, per, end, bounded, status, session"}]}]},{"key":"ghashtag/tri-net#76","repo":"ghashtag/tri-net","number":76,"title":"Competitor wave 2026-07-11 — segment map, 9-col comparison, moat mapping","hits":[{"specId":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"is_fresh:38"},{"kind":"terms","value":"mac, hello, fresh"}]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"is_fresh:166"},{"kind":"terms","value":"gf16, fresh"}]},{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"mapping, map"}]}]},{"key":"ghashtag/tri-net#74","repo":"ghashtag/tri-net","number":74,"title":"📋 Execution Plan 2026-07-11 · consolidated merge-order (5 waves -> one ordered plan; #60 unblocks all)","hits":[{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"plan, execution"}]}]},{"key":"ghashtag/tri-net#72","repo":"ghashtag/tri-net","number":72,"title":"🌊 Wave 2026-07-11 v3 · audit of 9 previously unaudited modules — anomaly spike-sentinel suppresses all spikes (P1) + flow_control credit underflow (P1) + quarantine 8-bit timer (P2)","hits":[{"specId":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","relation":"reference","coverage":"unverified","score":2051,"reasons":[{"kind":"path","value":"tri-net/specs/flow_control.t27"},{"kind":"symbol","value":"update_credits:37"},{"kind":"symbol","value":"MSG_CREDIT_UPDATE:137"},{"kind":"terms","value":"flow, control, window, credit, backpressure, credits, msg, total"}]},{"specId":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"tri-net/specs/multipath_routing.t27"},{"kind":"symbol","value":"distribute_load:146"},{"kind":"terms","value":"multipath, routing, paths, path, flow, distribute, load"}]},{"specId":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"tri-net/specs/anomaly_detector.t27"},{"kind":"symbol","value":"TYPE_SPIKE:62"},{"kind":"terms","value":"anomaly, detector, window, report, spike"}]},{"specId":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"tri-net/specs/quarantine_manager.t27"},{"kind":"symbol","value":"QUARANTINE_DURATION:8"},{"kind":"terms","value":"quarantine, manager, duration, start, time, health"}]},{"specId":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"tri-net/specs/adaptive_routing.t27"},{"kind":"terms","value":"adaptive, routing, paths, path, load, score"}]}]},{"key":"ghashtag/tri-net#70","repo":"ghashtag/tri-net","number":70,"title":"🌊 Wave 2026-07-11 v2 · wire/CI-CD/seal/deep-modem audit — modem sync not normalized (P1) + inert seal + unpinned toolchain (P2)","hits":[{"specId":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"SYNC_THRESHOLD:21"},{"kind":"terms","value":"modem, frame, peak, sync, threshold"}]}]},{"key":"ghashtag/tri-net#68","repo":"ghashtag/tri-net","number":68,"title":"🌊 Wave 2026-07-11 · beacon-auth inert on RX (P1) + hello.t27 ghost spec (P1) + self_healing cooldown truncation (P2)","hits":[{"specId":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"tri-net/specs/self_healing.t27"},{"kind":"terms","value":"self, healing, cooldown, attempt, recover"}]},{"specId":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"tri-net/specs/hello.t27"},{"kind":"terms","value":"hello, byte"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"symbol","value":"calc_etx:55"},{"kind":"terms","value":"etx, calc"}]},{"specId":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"is_fresh:38"},{"kind":"terms","value":"discovery, mac, hello, fresh"}]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"is_fresh:166"},{"kind":"terms","value":"kind, data, fresh, width"}]}]},{"key":"ghashtag/tri-net#66","repo":"ghashtag/tri-net","number":66,"title":"🌊 Wave 2026-07-10 v2 · audit of poorly covered modules: routing feasibility (P1) + TTL/CFO/GF16 (P2)","hits":[{"specId":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"is_feasible:74"},{"kind":"terms","value":"routing, feasible"}]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"rust, routing, ttl"}]},{"specId":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"routing, ttl"}]},{"specId":"fef84759ef56f8c9704b710d79fc3724cc415e9369a80779b22a5925890d36de","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"gf16, audit"}]}]},{"key":"ghashtag/tri-net#62","repo":"ghashtag/tri-net","number":62,"title":"t27-first migration feasibility map: what src/ can (and cannot) become .t27 specs","hits":[{"specId":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"tri-net/specs/wire.t27"},{"kind":"terms","value":"wire, mesh, hello, header, valid, byte, u32"}]},{"specId":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"tri-net/specs/m3_multihop.t27"},{"kind":"terms","value":"multihop, byte, perf, counters"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"gf16_add:314"},{"kind":"terms","value":"numeric, gf16, phi, encode, f32, sub"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"gf16_add:314"},{"kind":"terms","value":"numeric, gf16, phi, encode, f32, sub"}]},{"specId":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"gf16_add:40"},{"kind":"terms","value":"gf16, phi, mac"}]}]},{"key":"ghashtag/tri-net#61","repo":"ghashtag/tri-net","number":61,"title":"Spec bugs surfaced by t27 #1456+#1457 codegen fixes (were masked while modules never compiled)","hits":[{"specId":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"tri-net/specs/multipath_routing.t27"},{"kind":"symbol","value":"MIN_PATHS:9"},{"kind":"symbol","value":"PATH_VALID:10"},{"kind":"symbol","value":"is_multipath_viable:86"},{"kind":"terms","value":"multipath, routing, paths, min, path, valid, array, viable"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"symbol","value":"ONE_FP:11"},{"kind":"symbol","value":"fp_mul:33"},{"kind":"terms","value":"etx, dead, one, alpha, mul"}]},{"specId":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"MIN_PATHS:9"},{"kind":"symbol","value":"PATH_VALID:10"},{"kind":"symbol","value":"is_multipath_viable:87"},{"kind":"terms","value":"rust, multipath, routing, paths, min, path, valid, array"}]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"ONE_FP:11"},{"kind":"symbol","value":"fp_mul:33"},{"kind":"terms","value":"rust, etx, dead, one, alpha, mul"}]},{"specId":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"PATH_VALID:9"},{"kind":"terms","value":"rust, paths, path, valid"}]}]},{"key":"ghashtag/tri-net#58","repo":"ghashtag/tri-net","number":58,"title":"🌊 Wave 2026-07-10 · P0: main has not built since 2026-07-07 + weakness map + 3 tracks","hits":[{"specId":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"is_fresh:38"},{"kind":"terms","value":"mac, hello, fresh"}]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"is_fresh:166"},{"kind":"terms","value":"fresh"}]}]},{"key":"ghashtag/tri-net#17","repo":"ghashtag/tri-net","number":17,"title":"🌊 Wave Loop Report 2026-07-03 · external audit + 3 lanes for next wave","hits":[{"specId":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"tri-net/specs/wire.t27"},{"kind":"terms","value":"wire, hello, header, frame"}]}]},{"key":"ghashtag/tri-net#16","repo":"ghashtag/tri-net","number":16,"title":"feat: rewrite the mesh from Rust to T27 (.t27 spec-first), incremental module-by-module","hits":[{"specId":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"tri-net/specs/wire.t27"},{"kind":"terms","value":"wire, mesh, hello, header, frame, byte, parse"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"terms","value":"etx, mesh, one"}]}]},{"key":"ghashtag/tri-net#15","repo":"ghashtag/tri-net","number":15,"title":"feat(mesh) P1: radio-Transport -> end-to-end mesh-over-modem (streaming RX + meshd integration), host-testable","hits":[{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"mesh, integration, simulation, idle, step, sync"}]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"mesh, phy, transport, sync, increment"}]},{"specId":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"integration, mesh, idle"}]},{"specId":"de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"mesh, integration, idle"}]}]},{"key":"ghashtag/tri-net#14","repo":"ghashtag/tri-net","number":14,"title":"feat(mesh) P2: trios-mesh M5 self-healing re-route + convergence metric (DEMO GATE)","hits":[{"specId":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"mesh, nodes, metrics, interval, threshold, metric, node, latency"}]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"mesh, hardware, validation, simulation, real, pass, capture, metric"}]},{"specId":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"mesh, self, healing, recovery, failure, nodes, links"}]},{"specId":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"self, healing, recovery, failure, nodes, links"}]},{"specId":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"mesh, routing, metric, latency, hops, interval, path, metrics"}]}]},{"key":"ghashtag/tri-net#13","repo":"ghashtag/tri-net","number":13,"title":"feat(mesh) P2: trios-mesh M4 — share ONE uplink across 3-node triangle (DEMO GATE)","hits":[{"specId":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"mesh, flow, share, active"}]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"gate, nodes, node, field"}]},{"specId":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"mesh, share, bit"}]}]},{"key":"ghashtag/tri-net#12","repo":"ghashtag/tri-net","number":12,"title":"feat(mesh) P1: trios-mesh M3 — iperf3 over 2 hops through attenuators (P1 exit gate)","hits":[{"specId":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"mesh, hop, node, throughput, latency, packet, loss, iperf3"}]},{"specId":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"mesh, nodes, hops, node, packet, payload, route, path"}]},{"specId":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"mesh, nodes, hops, node, packet, payload, route, path"}]},{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"block, unit, gate, reports, exit"}]},{"specId":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"mesh, routing, metric, latency, hops, path"}]}]},{"key":"ghashtag/tri-net#11","repo":"ghashtag/tri-net","number":11,"title":"feat(mesh) P1: trios-mesh M2 — TUN/netdev IP-over-radio with real ETX metric","hits":[{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":55,"reasons":[{"kind":"terms","value":"mesh, hardware, simulation, bit, board, real, pass, dst"}]},{"specId":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"hardware, simulation, bit, board, real, pass, dst, metric"}]},{"specId":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"mesh, routing, metric, hops, path, selection, best"}]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"mesh, cross, phy, window, counter, target, metric"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"mesh, link, one, history, etx"}]}]},{"key":"ghashtag/tri-net#10","repo":"ghashtag/tri-net","number":10,"title":"feat(mesh) P1: scaffold trios-mesh repo + M1 X25519/ChaCha20 on real ARM (Mini)","hits":[{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"mesh, hardware, running, bit, board, real, pass, unit"}]}]},{"key":"ghashtag/tri-net#9","repo":"ghashtag/tri-net","number":9,"title":"feat(fpga) P1: AD9361 5.8GHz TX/RX + OFDM PHY (single-carrier fallback)","hits":[]},{"key":"ghashtag/tri-net#8","repo":"ghashtag/tri-net","number":8,"title":"feat(fpga) P0: boot ARM-Linux on Mini xc7z020 + confirm AD9361/GPS/PPS","hits":[]},{"key":"ghashtag/tri-net#7","repo":"ghashtag/tri-net","number":7,"title":"feat(fpga) P0: Zynq-7020 Mini toolchain bring-up + adopt proven AX7203 flow as baseline","hits":[{"specId":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"scan_chain:18"},{"kind":"terms","value":"scan, chain, jtag"}]}]},{"key":"ghashtag/tri-net#6","repo":"ghashtag/tri-net","number":6,"title":"docs(skill): create on-disk tri-net skill (honest Phase-0 status)","hits":[{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"structure, skill, matrix, docs, path, ascii"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"valid, path, list, status, dir, skill, compute, hash"}]},{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"path, skill, status, hash, docs"}]},{"specId":"aa444c6314549e4ac7da40ddc485a50ffcbaa04df78a9e0f2f117733a5dd0282","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"skill, path, status"}]}]},{"key":"ghashtag/tri-net#5","repo":"ghashtag/tri-net","number":5,"title":"feat(fpga) P0: sanity-verify the connected AX7203 via existing OpenOCD/AL321 flow","hits":[{"specId":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"scan_chain:18"},{"kind":"terms","value":"scan, chain, jtag"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"verify, open, measured"}]}]},{"key":"ghashtag/tri-net#4","repo":"ghashtag/tri-net","number":4,"title":"chore(fpga): de-hardcode AUTO_FLASH.sh foreign paths + parameterize cable","hits":[]},{"key":"ghashtag/tri-net#3","repo":"ghashtag/tri-net","number":3,"title":"docs(fpga): fix IDCODE.md 100T/200T mislabel + reconcile over-claimed FLASH_HISTORY","hits":[]},{"key":"ghashtag/tri-net#2","repo":"ghashtag/tri-net","number":2,"title":"fix(skill): correct fpga-synth SKILL.md hardcoded path + wrong board target","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"commands, path, list, key, skill, compute, block"}]},{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"commands, path, skill, docs"}]},{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"skill, docs, path, empty"}]},{"specId":"aa444c6314549e4ac7da40ddc485a50ffcbaa04df78a9e0f2f117733a5dd0282","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"skill, path"}]}]},{"key":"ghashtag/tri-net#1","repo":"ghashtag/tri-net","number":1,"title":"🎯 EPIC · feat(mesh): TRI-NET mesh bring-up (Phase 0–2)","hits":[{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"mesh, node, link, phase, target, latency, route, detect"}]}]},{"key":"ghashtag/trinity#989","repo":"ghashtag/trinity","number":989,"title":"[spec][Trinity S12] Consume canonical t27 contracts and prove clean-clone project reproduction","hits":[]},{"key":"ghashtag/trinity#988","repo":"ghashtag/trinity","number":988,"title":"EPIC: Recreate Trinity from executable t27 specifications and verified project contracts","hits":[]},{"key":"ghashtag/trinity#890","repo":"ghashtag/trinity","number":890,"title":"Turn the Queen dashboard into a one-screen strategy cabinet","hits":[]},{"key":"ghashtag/trinity#810","repo":"ghashtag/trinity","number":810,"title":"Eighteen workflows have never succeeded — 8182 runs, zero green","hits":[]},{"key":"ghashtag/trinity#616","repo":"ghashtag/trinity","number":616,"title":"CI: main has no build.zig matching its own source tree (2217 files vs a build script from March)","hits":[{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"zig, main, git, commit, branch, exists, summary"}]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"project, build, zig, skill, branch, load"}]},{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"time, build, matching"}]},{"specId":"cda04dde7b23fa05dc4c38c5e4ee28221218b0fc66d9cf76f7572983572e4815","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"script, tree"}]},{"specId":"572787c2cd5278240bc0c715a4051393d448a14d8524c74abf04ea6183ac3ff9","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"zig, main"}]}]},{"key":"ghashtag/trinity#604","repo":"ghashtag/trinity","number":604,"title":"chore(spec): propose organism .tri specs (mozg + dna) upstream in t27","hits":[]},{"key":"ghashtag/trinity#601","repo":"ghashtag/trinity","number":601,"title":"Exposed API credential found in this repository","hits":[]},{"key":"ghashtag/trinity#588","repo":"ghashtag/trinity","number":588,"title":"feat(fpga): add trinity-fpga as submodule + XVC WiFi JTAG flash pipeline","hits":[]},{"key":"ghashtag/trinity-fpga#792","repo":"ghashtag/trinity-fpga","number":792,"title":"В specs/ четыре разных языка под расширением .tri (72 не-YAML спеки)","hits":[]},{"key":"ghashtag/trinity-fpga#791","repo":"ghashtag/trinity-fpga","number":791,"title":"brain-ci: stress_test.zig не компилируется — Registry потерял поле claims","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"compile, zig, registry, branch"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"zig, branch, registry"}]}]},{"key":"ghashtag/trinity-fpga#770","repo":"ghashtag/trinity-fpga","number":770,"title":"token_rotator writes to a read-only log handle; devops_tools no longer surfaces child stderr","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"control, token, fallback, api, event, read, terminal"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"handle, read, found, large"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"open, handle, read, mode"}]},{"specId":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"event, options, handle, read"}]},{"specId":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"write, read, handle"}]}]},{"key":"ghashtag/trinity-fpga#768","repo":"ghashtag/trinity-fpga","number":768,"title":"brain-ci gates on tri stress --health, a NotImplemented stub — 47 runs, none passing","hits":[]},{"key":"ghashtag/trinity-fpga#767","repo":"ghashtag/trinity-fpga","number":767,"title":"build.zig declares trinity_workspace with no .imports, so it cannot reach any shim","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"runtime, path, dir, build, zig"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"zig, imports"}]}]},{"key":"ghashtag/trinity-fpga#766","repo":"ghashtag/trinity-fpga","number":766,"title":"1020 remaining 0.15-era call sites live outside the tri binary","hits":[]},{"key":"ghashtag/trinity-fpga#765","repo":"ghashtag/trinity-fpga","number":765,"title":"Code generators still emit Zig 0.15 APIs as string literals, so regenerated code will not build","hits":[{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"gen, compile, build, zig, timestamp, generate"}]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"codegen, gen, generate, zig, emit"}]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"codegen, zig, generate, emit"}]}]},{"key":"ghashtag/trinity-fpga#762","repo":"ghashtag/trinity-fpga","number":762,"title":"EPIC: Gates that are green by construction — five found, two remaining","hits":[]},{"key":"ghashtag/trinity-fpga#761","repo":"ghashtag/trinity-fpga","number":761,"title":"EPIC: Zig 0.16 migration — what remains after #758, #759, #760","hits":[]},{"key":"ghashtag/trinity-fpga#740","repo":"ghashtag/trinity-fpga","number":740,"title":"The arXiv comments field claims 679 checks; the script reports 536, and fails","hits":[{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"open, read, text, case, field, checks, json"}]},{"specId":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"reports, field, script, json"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"field, case, checks, size"}]}]},{"key":"ghashtag/trinity-fpga#736","repo":"ghashtag/trinity-fpga","number":736,"title":"audit_lut_table.py is genuinely over the ratchet's 120 s on the runner, not flaky","hits":[{"specId":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"lut, table"}]}]},{"key":"ghashtag/trinity-fpga#730","repo":"ghashtag/trinity-fpga","number":730,"title":"The paper's headline hardware claim is still post-synthesis, while the silicon flow exists","hits":[{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"hardware, report, claim"}]}]},{"key":"ghashtag/trinity-fpga#726","repo":"ghashtag/trinity-fpga","number":726,"title":"JIT test kills the test process on x86-64 CI (no assertion, no stack trace)","hits":[]},{"key":"ghashtag/trinity-fpga#702","repo":"ghashtag/trinity-fpga","number":702,"title":"80 of the paper's 89 figures have no generator — the orphan gate's founding case, at forty times the size","hits":[{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"generator, size, format, text, json, block, location, right"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"generator, size, format, text, json, block, location, right"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"root, rtl, match, order, case, size"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"case, generator, passed"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"case, generator, passed"}]}]},{"key":"ghashtag/trinity-fpga#684","repo":"ghashtag/trinity-fpga","number":684,"title":"gft_signed_mac answers incorrectly on silicon (clauses 0011, ok=0) while passing 2/2 in simulation — the die check is stronger than the spec's tests","hits":[{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"carries, gft, signed"}]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gft, signed"}]}]},{"key":"ghashtag/trinity-fpga#664","repo":"ghashtag/trinity-fpga","number":664,"title":"The six-bit superiority claim is not supported: the instability was our quantiser, and the ordering inverts under the standard recipe","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"bits, field, bit, width, per, supported"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"bit, bits, one, six"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"bit, bits, one, six"}]},{"specId":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"claim, supported"}]}]},{"key":"ghashtag/trinity-fpga#658","repo":"ghashtag/trinity-fpga","number":658,"title":"Seven waves in one page: what was measured, what we withdrew, and the one human action that unblocks the hardware axis","hits":[]},{"key":"ghashtag/trinity-fpga#648","repo":"ghashtag/trinity-fpga","number":648,"title":"fpga-regression: the φ-threshold gate blocks merges on a grep of test prose","hits":[{"specId":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"success_rate:146"},{"kind":"terms","value":"summary, threshold, time, success, rate"}]},{"specId":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"success_rate:30"},{"kind":"terms","value":"success, rate"}]},{"specId":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"blocks, block, threshold"}]},{"specId":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"blocks, block, threshold"}]},{"specId":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"gate, threshold"}]}]},{"key":"ghashtag/trinity-fpga#633","repo":"ghashtag/trinity-fpga","number":633,"title":"Hardware provenance: the IDCODE matchers accept only 0x13636093, and the bench that would produce the next transcript reads 0x03636093","hits":[{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bench, compare, hardware, verification, report"}]}]},{"key":"ghashtag/trinity-fpga#631","repo":"ghashtag/trinity-fpga","number":631,"title":"Referee simulation: the headline ranking is unresolved by the paper's own stated resolution (verified), plus eight uncited competing works","hits":[]},{"key":"ghashtag/trinity-fpga#440","repo":"ghashtag/trinity-fpga","number":440,"title":"docs/cfg: IDCODE.md and openocd cfgs carry the wrong AX7203 JTAG IDCODE","hits":[{"specId":"4991d83ed59365348efc506f4907cceb29a04742b9ad7f610b6b754c184d55b4","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"trinity-fpga/specs/boards/ax7203_full.t27"},{"kind":"terms","value":"boards, ax7203, full"}]}]},{"key":"ghashtag/trinity-fpga#428","repo":"ghashtag/trinity-fpga","number":428,"title":"cli: UART test/diagnostic commands report failure in output but exit 0 — decide pass/fail policy","hits":[{"specId":"e23ef09c0f4e88517e32c8c48d183468cb808d9676f2311a4a229e0f43895505","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"exit, sacred, success, fail, timeout, exiting, exited"}]},{"specId":"379740eea2f1d1c60693f69cd89d57566017db7dcbe77484f8d2f54c97cb40b8","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"uart, timeout, pass, success, loopback, bytes, rate"}]},{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"policy, success, partial, failure, timeout, total"}]},{"specId":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"timeout, success, failure, pid, exit"}]},{"specId":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"cli, commands, zig"}]}]},{"key":"ghashtag/trinity-fpga#425","repo":"ghashtag/trinity-fpga","number":425,"title":"chore(fpga): dispose of 35 legacy shell scripts (R8) — inventory + per-category plan","hits":[]},{"key":"ghashtag/trinity-fpga#235","repo":"ghashtag/trinity-fpga","number":235,"title":"[P1][verifiable] Demo: conformance vectors → ZK-witness (verifiable inference)","hits":[{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"conformance, vectors"}]}]},{"key":"ghashtag/trinity-fpga#234","repo":"ghashtag/trinity-fpga","number":234,"title":"[P0][ternary-HW] Run the TF3/GFTernary decode core on AX7203 — first hardware evidence for the ternary component","hits":[]},{"key":"ghashtag/trinity-fpga#233","repo":"ghashtag/trinity-fpga","number":233,"title":"[P0][matched-substrate] GF16 vs posit16/takum16/binary16 head-to-head on AX7203 (close FL-002)","hits":[{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"gf16, posit16, bit, decode"}]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"head, gf16"}]}]},{"key":"ghashtag/trinity-fpga#206","repo":"ghashtag/trinity-fpga","number":206,"title":"SW-bitexact: cover 22 structural formats (55→77+) with numeric vectors","hits":[{"specId":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"numeric, formats, format, exp, posit, index"}]},{"specId":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"numeric, formats, format, exp, posit, index"}]},{"specId":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"numeric, formats, exp, bias, format"}]},{"specId":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"numeric, formats, exp, bias, format"}]}]},{"key":"ghashtag/trinity-fpga#199","repo":"ghashtag/trinity-fpga","number":199,"title":"🎯 EPIC · Matrix [83 formats × {SW-bitexact / decode-HW / compute-HW}] on AX7203","hits":[{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"proof, gf16, mul, compute, matrix"}]}]},{"key":"ghashtag/trinity-fpga#177","repo":"ghashtag/trinity-fpga","number":177,"title":"🎯 ONE SHOT — Wave-49 L-DPC36 CAP-BOOST (sacred opcode 0xF3, di/dt margin +gamma^3 at iso-area)","hits":[{"specId":"3b0d082b74f6a0ba7039d726899c4a02710622f702909956f8bc2615b6a45b8a","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"sacred, valid, phi, base, opcode"}]},{"specId":"2246bd2af584f9e2c3b1b8ade8c1032ef03aed4b1cbb46256a1c3af100be63e6","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, cap"}]}]},{"key":"ghashtag/trinity-fpga#85","repo":"ghashtag/trinity-fpga","number":85,"title":"P6 DePIN INTEGRATION · L5 $TRI receipt+Bittensor+slashing · pre: P5 · T-0 tapeout","hits":[{"specId":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"receipt, merkle, verify, pre, chain"}]},{"specId":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"off, valid, receipt, signature, pre"}]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"integration, pin, verify"}]},{"specId":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"integration, pin"}]}]},{"key":"ghashtag/trinity-fpga#84","repo":"ghashtag/trinity-fpga","number":84,"title":"P5 INTERCONNECT + JTAG · L4 IO+ECDSA+DSLogic · pre: P4","hits":[]},{"key":"ghashtag/trinity-fpga#83","repo":"ghashtag/trinity-fpga","number":83,"title":"P4 MEMORY + MULTI-DIE · L3 G_MERKLE+mesh-PIM+Coq · pre: P3","hits":[{"specId":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"merkle, pre"}]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"mesh, multi"}]}]},{"key":"ghashtag/trinity-fpga#82","repo":"ghashtag/trinity-fpga","number":82,"title":"P3 ATTENTION ACTIVE · L2 C_GATE+T_PRESENT+56Hz bio · pre: P2","hits":[{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"threshold, gate, power, active, idle, pulse"}]},{"specId":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"active, pre"}]}]},{"key":"ghashtag/trinity-fpga#81","repo":"ghashtag/trinity-fpga","number":81,"title":"P2 COMPUTE READY · L1 GF16+TF3-9+sparse-MAC · pre: P1","hits":[{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"gf16, mac, matmul, cycles, ready, one"}]},{"specId":"2eade0fba9b90159413821a1a7dc079d197b1fd7d849c6825e4cfee8feda6d51","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"mac, zero, cycles, ready, lut, results"}]},{"specId":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"sparse, phase, ternary, matmul, compute"}]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"mac, zero, ready, lut, bit"}]},{"specId":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"zero, mac, ready, stop"}]}]},{"key":"ghashtag/trinity-fpga#80","repo":"ghashtag/trinity-fpga","number":80,"title":"P1 SACRED FOUNDATION · L0 Sacred Core · R17 mutation test · pre: none","hits":[{"specId":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"sacred, pre, entry"}]}]},{"key":"ghashtag/trinity-fpga#79","repo":"ghashtag/trinity-fpga","number":79,"title":"TT v20 TRI NET ARCHITECTURE · 5 layers · 6 phases · 148 gates · integration roadmap to Wave-15-TT-E","hits":[]},{"key":"ghashtag/trinity-fpga#78","repo":"ghashtag/trinity-fpga","number":78,"title":"TT v19 SACRED FORMULA → SILICON BOOST · 148 gates · 12 sacred opcodes · 8 markets · axiomatic IP","hits":[{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"PHI_SQ:347"},{"kind":"terms","value":"runtime, trit, ternary, word, phi, inv, identity, sacred"}]},{"specId":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"PHI_SQ:15"},{"kind":"symbol","value":"PHI_INV_SQ:16"},{"kind":"symbol","value":"phi_sq:207"},{"kind":"symbol","value":"phi_inv_sq:208"},{"kind":"terms","value":"sacred, physics, phi, inv, gamma, lqg, threshold, present"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"PHI_SQ:13"},{"kind":"symbol","value":"PHI_INV_SQ:14"},{"kind":"terms","value":"sacred, physics, phi, inv, gamma, lqg, threshold, present"}]},{"specId":"c757522b59a7fed58d8f2409a674a72f552639d3978979bfc3b685f70e835b58","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"PHI_SQ:13"},{"kind":"symbol","value":"PHI_INV_SQ:15"},{"kind":"terms","value":"physics, phi, inv, reference, anchor, matches, sacred"}]},{"specId":"d4d622f9fd9fbec6a8d63641fd7c48218d43c41085fb8a71c94a520f5b33c186","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"PHI_SQ:13"},{"kind":"symbol","value":"PHI_INV_SQ:14"},{"kind":"terms","value":"phi, inv, per, level, consciousness, init, coherence"}]}]},{"key":"ghashtag/trinity-fpga#67","repo":"ghashtag/trinity-fpga","number":67,"title":"L-DPC13 · TT-Shuttle Squeeze v6 Hyper-Frontier (S-37..S-44)","hits":[]},{"key":"ghashtag/trinity-fpga#61","repo":"ghashtag/trinity-fpga","number":61,"title":"🧠⚛️🐝 MASTER-EPIC TRI NET: TRI-1 QUANTUM BRAIN 1:1 SILICON · 180 vectors PHYSICAL on main · 80 gates LIVE · 16 sacred opcodes · 75-cell Sacred ROM · R1..R20 · v25.1 BACKFILL COMPLETE · Wave-15-TT-E T-46h","hits":[{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"lab, vectors, weights, rtl, sparse, report, physical, hash"}]},{"specId":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"out, uio, anchor, rom, vectors, per, full, tag"}]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"main, invariant, content, branch, cell"}]},{"specId":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"branch, main, master"}]},{"specId":"6c727d13e4889735bc80ade95073f07d6efad2c15bf20908645292b10c6e862a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"sacred, physical, report"}]}]},{"key":"ghashtag/trinity-fpga#59","repo":"ghashtag/trinity-fpga","number":59,"title":"🎯 ONE SHOT — L-DPC8 TRI-1 Max v2 (Waves W15-W20)","hits":[]},{"key":"ghashtag/trinity-fpga#58","repo":"ghashtag/trinity-fpga","number":58,"title":"TRI-1 v2 L-S31: Lucas-Interval BPB Refiner (MED · Coq-blocked)","hits":[]},{"key":"ghashtag/trinity-fpga#57","repo":"ghashtag/trinity-fpga","number":57,"title":"TRI-1 v2 L-S30: Invariant Ring Watchdog (HIGH)","hits":[]},{"key":"ghashtag/trinity-fpga#56","repo":"ghashtag/trinity-fpga","number":56,"title":"TRI-1 v2 L-S29: 4 KiB SRAM-backed VSA Cache (HIGH)","hits":[{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"vsa, attention, cache"}]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"vsa, cache"}]},{"specId":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"vsa, cache"}]}]},{"key":"ghashtag/trinity-fpga#55","repo":"ghashtag/trinity-fpga","number":55,"title":"TRI-1 v2 L-S27: Lucas-Period Wishbone Arbiter (MED)","hits":[]},{"key":"ghashtag/trinity-fpga#54","repo":"ghashtag/trinity-fpga","number":54,"title":"TRI-1 v2 L-S26: Strobe Replay Detector (LOW · Coq-blocked)","hits":[]},{"key":"ghashtag/trinity-fpga#53","repo":"ghashtag/trinity-fpga","number":53,"title":"TRI-1 v2 L-S25: Adaptive Strobe FSM (MED)","hits":[]},{"key":"ghashtag/trinity-fpga#52","repo":"ghashtag/trinity-fpga","number":52,"title":"EPIC: TRI-1 v2 — 12 New Lanes L-S22..L-S33 (PhD-driven competitive boost)","hits":[]},{"key":"ghashtag/trinity-fpga#51","repo":"ghashtag/trinity-fpga","number":51,"title":"EPIC: TRI-1 TOPS Boost ×12 — L-S19/L-S20/L-S21 (pre-TTSKY26b)","hits":[]},{"key":"ghashtag/trinity-fpga#50","repo":"ghashtag/trinity-fpga","number":50,"title":"🎯 ONE SHOT — L-DPC7 Wave-7 TTIHP27a (post-defense ASIC roadmap)","hits":[]},{"key":"ghashtag/trinity-fpga#49","repo":"ghashtag/trinity-fpga","number":49,"title":"🛰️ EPIC: TRI-1 Triad Submission — TTSKY26b 2026-05-18 (L-DPC7)","hits":[]},{"key":"ghashtag/trinity-fpga#48","repo":"ghashtag/trinity-fpga","number":48,"title":"🎯 ONE SHOT — L-DPC6: USB-3 Trinity Ternary Internet Node","hits":[{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"reference","coverage":"unverified","score":1037,"reasons":[{"kind":"symbol","value":"gf16_dot4:60"},{"kind":"terms","value":"depin, proof, phi, verify, gf16, mul, dot4, compute"}]}]},{"key":"ghashtag/trinity-fpga#38","repo":"ghashtag/trinity-fpga","number":38,"title":"🧪 L-CHAT-10: 25-test e2e_chat + 200-attack falsifier corpus","hits":[]},{"key":"ghashtag/trinity-fpga#37","repo":"ghashtag/trinity-fpga","number":37,"title":"📐 L-CHAT-9: Coq invariants — 7 theorems, 1 admitted budget","hits":[]},{"key":"ghashtag/trinity-fpga#36","repo":"ghashtag/trinity-fpga","number":36,"title":"🛡 L-CHAT-8: PQ migration — RingXKEM-style deniable PQ auth (ADR-009)","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"chat, auth"}]}]},{"key":"ghashtag/trinity-fpga#35","repo":"ghashtag/trinity-fpga","number":35,"title":"🎭 L-CHAT-7: Anti-metadata — padding, queue rotation, opt-in cover","hits":[]},{"key":"ghashtag/trinity-fpga#34","repo":"ghashtag/trinity-fpga","number":34,"title":"🤖 L-CHAT-6: Agent capability tokens + dual-LLM anti-injection","hits":[{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"model, tokens, capability, done"}]},{"specId":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"model, tokens, capability"}]}]},{"key":"ghashtag/trinity-fpga#33","repo":"ghashtag/trinity-fpga","number":33,"title":"💾 L-CHAT-5: Persistence — Neon encrypted-at-rest + client SQLCipher","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"chat, client"}]}]},{"key":"ghashtag/trinity-fpga#32","repo":"ghashtag/trinity-fpga","number":32,"title":"✉️ L-CHAT-4: Sealed Sender envelope over trios-mesh ETX","hits":[{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"mesh, sender, release"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"etx, mesh"}]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"mesh, etx"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"mesh, etx"}]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"mesh, etx"}]}]},{"key":"ghashtag/trinity-fpga#31","repo":"ghashtag/trinity-fpga","number":31,"title":"👥 L-CHAT-3: MLS RFC 9420 group + Partial-MLS bots","hits":[{"specId":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"group, chat"}]}]},{"key":"ghashtag/trinity-fpga#30","repo":"ghashtag/trinity-fpga","number":30,"title":"🔄 L-CHAT-2: Triple Ratchet 1:1 — PQ-FS + PQ-PCS (X3DH + ML-KEM step)","hits":[]},{"key":"ghashtag/trinity-fpga#29","repo":"ghashtag/trinity-fpga","number":29,"title":"🔐 L-CHAT-1: Identity & Onboarding — Ed25519 + X25519 + ML-KEM-768 prekey bundle","hits":[{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"bundle, identity"}]}]},{"key":"ghashtag/trinity-fpga#28","repo":"ghashtag/trinity-fpga","number":28,"title":"💬 EPIC: Trinity Secure Chat — Privacy-First Chat for Users ↔ Agent Bots","hits":[]},{"key":"ghashtag/trinity-fpga#20","repo":"ghashtag/trinity-fpga","number":20,"title":"⏰ L-DPC3: TTSKY26a Silicon Submission — Trinity GF16 Ternary Matmul on SKY130 [DEADLINE: 2026-05-11]","hits":[{"specId":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"VECTOR_DIM:25"},{"kind":"terms","value":"vector, dim, entity, hash"}]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"dim, vsa, ternary, layer, weights, matmul, weight, zero"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"gf16, phi, full, status, total, matmul, ready, one"}]},{"specId":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"dim, scale, weight, project, ternary, matmul"}]},{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"proof, phi, gf16, matmul, matrix"}]}]},{"key":"ghashtag/trinity-fpga#19","repo":"ghashtag/trinity-fpga","number":19,"title":"🌐 EPIC: Trinity dePIN-Compute — Ternary FPGA → ASIC Mesh-Inference Constellation (NASA-format)","hits":[{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"vsa_bind:205"},{"kind":"symbol","value":"vsa_bundle:217"},{"kind":"terms","value":"ternary, register, vsa, bind, bundle, cpu, phi"}]},{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"pin, reference, design, port, format"}]}]},{"key":"ghashtag/trinity-fpga#18","repo":"ghashtag/trinity-fpga","number":18,"title":"🔬 RESEARCH: FPGA → ASIC → Silicon — Trinity Stack Roadmap (NASA-format)","hits":[]},{"key":"ghashtag/trinity-fpga#17","repo":"ghashtag/trinity-fpga","number":17,"title":"🛠️ SETUP: Trinity Node-0 — complete setup of the first dePIN node (FPGA + headscale + exit node)","hits":[{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"rust, mesh, network, nodes, node, coordinator, phase, complete"}]},{"specId":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"target, control, pin, level, status, init, enable, complete"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"network, nodes, node, coordinator, phase, complete, target, route"}]},{"specId":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"rust, mesh, node, target, forward, udp, complete"}]},{"specId":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"node, target, forward, udp, complete"}]}]},{"key":"ghashtag/trinity-fpga#16","repo":"ghashtag/trinity-fpga","number":16,"title":"📚 RESEARCH: Trinity dePIN-VPN — FPGA Mesh Neural Infrastructure (NASA-format)","hits":[{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"pin, standard, format"}]}]},{"key":"ghashtag/trinity-fpga#14","repo":"ghashtag/trinity-fpga","number":14,"title":"🔨 hw: synthesis + flashing + hardware benchmarks (v0.2-igla-fpga Release)","hits":[{"specId":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"VECTOR_DIM:25"},{"kind":"terms","value":"vector, dim"}]}]},{"key":"ghashtag/trios#1673","repo":"ghashtag/trios","number":1673,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.file-card-strip.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1672","repo":"ghashtag/trios","number":1672,"title":"trios/agent-server/apps/trios-mcp-bridge/src/tools/gitbutler-vision-context.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1671","repo":"ghashtag/trios","number":1671,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/history/components/ConversationList.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, history"}]}]},{"key":"ghashtag/trios#1670","repo":"ghashtag/trios","number":1670,"title":"trios/agent-server/apps/agent/lib/agent-files/useAgentOutputs.ts exports 4 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1669","repo":"ghashtag/trios","number":1669,"title":"trios/agent-server/apps/agent/entrypoints/app/tool-approvals/ToolApprovalsPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1668","repo":"ghashtag/trios","number":1668,"title":"trios/agent-server/apps/agent/lib/llm-providers/uploadLlmProvidersToGraphql.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1667","repo":"ghashtag/trios","number":1667,"title":"trios/agent-server/apps/eval/src/runner/types.ts exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1666","repo":"ghashtag/trios","number":1666,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/useAgentConversation.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1665","repo":"ghashtag/trios","number":1665,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/McpServerIcon.tsx exports one symbol and no test names any of them","hits":[{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1664","repo":"ghashtag/trios","number":1664,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.artifact-card.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1663","repo":"ghashtag/trios","number":1663,"title":"trios/agent-server/apps/server/src/browser/console-collector.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1662","repo":"ghashtag/trios","number":1662,"title":"trios/agent-server/apps/server/src/browser/backends/cdp.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1661","repo":"ghashtag/trios","number":1661,"title":"trios/agent-server/apps/agent/lib/agent-files/file-helpers.ts exports 5 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1660","repo":"ghashtag/trios","number":1660,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/useChatRefs.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1659","repo":"ghashtag/trios","number":1659,"title":"trios/agent-server/apps/server/src/tools/acl/acl-guard.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1658","repo":"ghashtag/trios","number":1658,"title":"trios/agent-server/apps/server/src/api/services/a2a/pg-agent-store.ts exports one symbol and no test names any of them","hits":[{"specId":"64341742c373e64a2823f6647d0f3898e0a26f6ff9197e3fd3092436f5912cce","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"api, contract, raw, store"}]}]},{"key":"ghashtag/trios#1657","repo":"ghashtag/trios","number":1657,"title":"trios/agent-server/apps/server/src/api/services/openclaw/produced-files-walker.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1656","repo":"ghashtag/trios","number":1656,"title":"trios/agent-server/apps/agent/lib/browseros/helpers.ts exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1655","repo":"ghashtag/trios","number":1655,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepSoul.tsx exports one symbol and no test names any of them","hits":[{"specId":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"step, raw, steps"}]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"steps, step, success"}]},{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"step, steps"}]},{"specId":"80e970c2be2a313cfca43bc0bbb20397259952dd2d26af5b1359e1d26ea1a4b3","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"steps, step"}]},{"specId":"94b07d6a708c1a40ea01ad735466a1829b08a98ea73d8c8ac62c23dca79fa775","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"steps, step"}]}]},{"key":"ghashtag/trios#1654","repo":"ghashtag/trios","number":1654,"title":"trios/agent-server/apps/agent/entrypoints/app/ai-settings/ProviderCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1653","repo":"ghashtag/trios","number":1653,"title":"trios/agent-server/apps/eval/src/capture/screenshot.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1652","repo":"ghashtag/trios","number":1652,"title":"trios/agent-server/apps/server/src/tools/memory/search.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1651","repo":"ghashtag/trios","number":1651,"title":"trios/agent-server/apps/server/src/api/services/mcp/register-mcp.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1650","repo":"ghashtag/trios","number":1650,"title":"trios/agent-server/apps/server/src/browser/elements.ts exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1649","repo":"ghashtag/trios","number":1649,"title":"trios/agent-server/apps/server/src/api/types.ts exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1648","repo":"ghashtag/trios","number":1648,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepsLayout.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1647","repo":"ghashtag/trios","number":1647,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/history/ChatHistory.tsx exports one symbol and no test names any of them","hits":[{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, history"}]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, history"}]}]},{"key":"ghashtag/trios#1646","repo":"ghashtag/trios","number":1646,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/useNotifyActiveTab.tsx exports one symbol and no test names any of them","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"active, claim, calls, notify, may, read"}]}]},{"key":"ghashtag/trios#1645","repo":"ghashtag/trios","number":1645,"title":"trios/agent-server/apps/agent/entrypoints/app/memory/MemoryExamples.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1644","repo":"ghashtag/trios","number":1644,"title":"trios/agent-server/apps/agent/entrypoints/app/acl-settings/AclSettingsPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1643","repo":"ghashtag/trios","number":1643,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/ApiKeyDialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"connect, claim, calls, api, may, read"}]},{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, connect"}]},{"specId":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"api, key, success"}]},{"specId":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"api, key"}]}]},{"key":"ghashtag/trios#1642","repo":"ghashtag/trios","number":1642,"title":"trios/agent-server/apps/trios-mcp-bridge/src/absorb/absorb-engine.ts exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1641","repo":"ghashtag/trios","number":1641,"title":"trios/agent-server/apps/agent/components/sidebar/SidebarNavigation.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1640","repo":"ghashtag/trios","number":1640,"title":"trios/agent-server/apps/agent/components/execution-history/ExecutionStepItem.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, history"}]}]},{"key":"ghashtag/trios#1639","repo":"ghashtag/trios","number":1639,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/getMessageSegments.ts exports one symbol and no test names any of them","hits":[{"specId":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"segments, index"}]}]},{"key":"ghashtag/trios#1638","repo":"ghashtag/trios","number":1638,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatHeader.tsx exports one symbol and no test names any of them","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"header, found, chat, success"}]}]},{"key":"ghashtag/trios#1637","repo":"ghashtag/trios","number":1637,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatMessageActions.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1636","repo":"ghashtag/trios","number":1636,"title":"trios/agent-server/apps/agent/lib/execution-history/storage.ts exports 8 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1635","repo":"ghashtag/trios","number":1635,"title":"trios/agent-server/apps/agent/entrypoints/app/usage/UsagePage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1634","repo":"ghashtag/trios","number":1634,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/ScheduledTaskResults.tsx exports one symbol and no test names any of them","hits":[{"specId":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"tasks, results"}]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"tasks, results"}]}]},{"key":"ghashtag/trios#1633","repo":"ghashtag/trios","number":1633,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/lib/suggestions/useSuggestions.ts exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1632","repo":"ghashtag/trios","number":1632,"title":"trios/agent-server/apps/agent/components/ai-elements/run-result-dialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1631","repo":"ghashtag/trios","number":1631,"title":"trios/agent-server/apps/agent/components/elements/glowing-border.tsx exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1630","repo":"ghashtag/trios","number":1630,"title":"trios/agent-server/apps/agent/lib/llm-providers/storage.ts exports 9 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1629","repo":"ghashtag/trios","number":1629,"title":"trios/agent-server/apps/eval/src/utils/mcp-client.ts exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1628","repo":"ghashtag/trios","number":1628,"title":"trios/agent-server/apps/agent/entrypoints/app/llm-hub/AddHubProviderDialog.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1627","repo":"ghashtag/trios","number":1627,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/AddManagedMCPDialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1626","repo":"ghashtag/trios","number":1626,"title":"trios/agent-server/apps/agent/components/ui/MarkdownEditor.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1625","repo":"ghashtag/trios","number":1625,"title":"trios/agent-server/apps/agent/entrypoints/app/mcp-settings/QuickSetupSection.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1624","repo":"ghashtag/trios","number":1624,"title":"trios/agent-server/apps/agent/components/sidebar/SidebarBranding.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1623","repo":"ghashtag/trios","number":1623,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/useExecutionHistoryTracker.ts exports one symbol and no test names any of them","hits":[{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, history"}]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, history"}]}]},{"key":"ghashtag/trios#1622","repo":"ghashtag/trios","number":1622,"title":"trios/agent-server/apps/server/src/api/services/openclaw/file-preview.ts breaks L3 with 4 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1621","repo":"ghashtag/trios","number":1621,"title":"trios/agent-server/apps/server/src/api/routes/agents.ts breaks L3 with 55 non-ASCII characters, all of them in comments","hits":[{"specId":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"api, success, agents, byte"}]},{"specId":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"api, agents, byte"}]}]},{"key":"ghashtag/trios#1620","repo":"ghashtag/trios","number":1620,"title":"trios/agent-server/apps/agent/entrypoints/newtab/personalize/Personalize.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1619","repo":"ghashtag/trios","number":1619,"title":"trios/agent-server/apps/eval/src/runner/task-loader.ts exports 4 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1618","repo":"ghashtag/trios","number":1618,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ToolBatch.tsx exports one symbol and no test names any of them","hits":[{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"tool, batch, map, success"}]}]},{"key":"ghashtag/trios#1617","repo":"ghashtag/trios","number":1617,"title":"trios/agent-server/apps/agent/components/execution-history/ExecutionTaskCard.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, history"}]}]},{"key":"ghashtag/trios#1616","repo":"ghashtag/trios","number":1616,"title":"trios/agent-server/apps/server/src/api/services/task-queue-service.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"service, api, may, block"}]}]},{"key":"ghashtag/trios#1615","repo":"ghashtag/trios","number":1615,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatError.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1614","repo":"ghashtag/trios","number":1614,"title":"trios/agent-server/apps/agent/entrypoints/app/mcp-settings/MCPServerHeader.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1613","repo":"ghashtag/trios","number":1613,"title":"trios/agent-server/apps/server/src/browser/browser.ts breaks L3 with 5 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1612","repo":"ghashtag/trios","number":1612,"title":"trios/agent-server/apps/agent/entrypoints/app/customization/ToolbarSettingsCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1611","repo":"ghashtag/trios","number":1611,"title":"trios/agent-server/apps/agent/lib/llm-providers/useLlmProviders.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1610","repo":"ghashtag/trios","number":1610,"title":"trios/agent-server/apps/agent/entrypoints/app/memory/MemoryViewer.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1609","repo":"ghashtag/trios","number":1609,"title":"trios/agent-server/apps/agent/components/ai-elements/reasoning.tsx exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1608","repo":"ghashtag/trios","number":1608,"title":"trios/agent-server/apps/agent/components/ai-elements/code-block.tsx exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1607","repo":"ghashtag/trios","number":1607,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/AddCustomMCPDialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1606","repo":"ghashtag/trios","number":1606,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/trios-rag-client.ts exports one symbol and no test names any of them","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]}]},{"key":"ghashtag/trios#1605","repo":"ghashtag/trios","number":1605,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/openclaw-cli-providers.tsx exports 5 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1604","repo":"ghashtag/trios","number":1604,"title":"trios/agent-server/apps/agent/lib/schedules/scheduleStorage.ts exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1603","repo":"ghashtag/trios","number":1603,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatMessages.tsx exports one symbol and no test names any of them","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"found, messages, chat, success"}]}]},{"key":"ghashtag/trios#1602","repo":"ghashtag/trios","number":1602,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/features/BentoCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1601","repo":"ghashtag/trios","number":1601,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ConversationHeader.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1600","repo":"ghashtag/trios","number":1600,"title":"trios/agent-server/apps/agent/components/ai-elements/confirmation.tsx exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1599","repo":"ghashtag/trios","number":1599,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/github-client.ts exports one symbol and no test names any of them","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]}]},{"key":"ghashtag/trios#1598","repo":"ghashtag/trios","number":1598,"title":"trios/agent-server/apps/eval/src/reporting/task-metrics.ts exports 5 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1597","repo":"ghashtag/trios","number":1597,"title":"trios/agent-server/apps/agent/components/elements/workspace-selector.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1596","repo":"ghashtag/trios","number":1596,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agents-page-actions.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1595","repo":"ghashtag/trios","number":1595,"title":"trios/agent-server/apps/agent/components/sidebar/SettingsSidebar.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1594","repo":"ghashtag/trios","number":1594,"title":"trios/agent-server/apps/agent/entrypoints/app/admin-dashboard/AdminDashboardPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1593","repo":"ghashtag/trios","number":1593,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/NewTabChat.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1592","repo":"ghashtag/trios","number":1592,"title":"trios/agent-server/apps/eval/src/graders/performance/axes.ts exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1591","repo":"ghashtag/trios","number":1591,"title":"trios/tools/mcp-connect-failure-gate.mjs breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"connect, may, failure, block"}]}]},{"key":"ghashtag/trios#1590","repo":"ghashtag/trios","number":1590,"title":"trios/agent-server/scripts/generate-models.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1589","repo":"ghashtag/trios","number":1589,"title":"trios/agent-server/packages/shared/src/sentry/sanitize.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1588","repo":"ghashtag/trios","number":1588,"title":"trios/agent-server/packages/shared/src/constants/ports.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1587","repo":"ghashtag/trios","number":1587,"title":"trios/agent-server/apps/eval/src/agents/orchestrator-executor/orchestrator-agent.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1586","repo":"ghashtag/trios","number":1586,"title":"trios/agent-server/apps/trios-mcp-bridge/src/types.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1585","repo":"ghashtag/trios","number":1585,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentCommandHome.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1584","repo":"ghashtag/trios","number":1584,"title":"trios/agent-server/apps/trios-mcp-bridge/src/tools/gitbutler-vision.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1583","repo":"ghashtag/trios","number":1583,"title":"trios/agent-server/apps/trios-mcp-bridge/src/tools/git_status.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"block, git, status, commit, branch"}]},{"specId":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"git, status, clean, changed"}]},{"specId":"089f57bd6ac32f7823bc8a06be007ddc27710b276853f6d0e9d3de1519c87d79","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"git, diff, changed, status"}]},{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"git, commit, status, branch"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"bridge, codepoints, byte, status"}]}]},{"key":"ghashtag/trios#1582","repo":"ghashtag/trios","number":1582,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ConnectAppCard.tsx exports one symbol and no test names any of them","hits":[{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1581","repo":"ghashtag/trios","number":1581,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/tri-client.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"bridge, codepoints, client, byte"}]}]},{"key":"ghashtag/trios#1580","repo":"ghashtag/trios","number":1580,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/ScheduleResults.tsx exports one symbol and no test names any of them","hits":[{"specId":"418ffcada23abcecda361681156ca90ece34477981923d60562033f87fee7923","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"results, index"}]}]},{"key":"ghashtag/trios#1579","repo":"ghashtag/trios","number":1579,"title":"trios/agent-server/apps/trios-mcp-bridge/src/absorb/types.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1578","repo":"ghashtag/trios","number":1578,"title":"trios/agent-server/apps/agent/lib/voice/useVoiceInput.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1577","repo":"ghashtag/trios","number":1577,"title":"trios/agent-server/apps/server/src/monitoring/session-registry.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1576","repo":"ghashtag/trios","number":1576,"title":"trios/agent-server/apps/agent/entrypoints/app/login/LoginPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1575","repo":"ghashtag/trios","number":1575,"title":"trios/agent-server/apps/server/src/lib/mcp-transport-detect.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1574","repo":"ghashtag/trios","number":1574,"title":"trios/agent-server/apps/server/src/lib/clients/oauth/codex-fetch.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1573","repo":"ghashtag/trios","number":1573,"title":"trios/agent-server/apps/agent/components/ai-elements/chain-of-thought.tsx exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1572","repo":"ghashtag/trios","number":1572,"title":"trios/agent-server/apps/server/src/lib/clients/oauth/callback-server.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1571","repo":"ghashtag/trios","number":1571,"title":"trios/agent-server/apps/agent/lib/schedules/syncSchedulesToBackend.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1570","repo":"ghashtag/trios","number":1570,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepTwo.tsx exports one symbol and no test names any of them","hits":[{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"one, two, diff"}]},{"specId":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"step, raw, steps"}]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"steps, step, success"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"two, one"}]},{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"step, steps"}]}]},{"key":"ghashtag/trios#1569","repo":"ghashtag/trios","number":1569,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ConversationMessage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1568","repo":"ghashtag/trios","number":1568,"title":"trios/agent-server/apps/eval/src/utils/with-eval-timeout.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"queen, success, timeout, eval"}]}]},{"key":"ghashtag/trios#1567","repo":"ghashtag/trios","number":1567,"title":"trios/agent-server/apps/agent/entrypoints/background/scheduledJobRuns.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1566","repo":"ghashtag/trios","number":1566,"title":"trios/agent-server/apps/eval/src/utils/config-validator.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1565","repo":"ghashtag/trios","number":1565,"title":"trios/agent-server/apps/agent/entrypoints/app/jtbd-agent/useSurveyChat.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1564","repo":"ghashtag/trios","number":1564,"title":"trios/agent-server/apps/eval/src/runs/eval-runner.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1563","repo":"ghashtag/trios","number":1563,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatFooter.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1562","repo":"ghashtag/trios","number":1562,"title":"trios/agent-server/apps/eval/src/graders/benchmark/agisdk-state-diff.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1561","repo":"ghashtag/trios","number":1561,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/ScheduledTasksPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1560","repo":"ghashtag/trios","number":1560,"title":"trios/agent-server/apps/eval/src/dashboard/server.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1559","repo":"ghashtag/trios","number":1559,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/HomeAgentCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1558","repo":"ghashtag/trios","number":1558,"title":"trios/agent-server/apps/agent/lib/sse.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1557","repo":"ghashtag/trios","number":1557,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ClawChatMessage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1556","repo":"ghashtag/trios","number":1556,"title":"trios/agent-server/apps/agent/lib/selected-text/selectedTextStorage.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"commit, ascii, text"}]}]},{"key":"ghashtag/trios#1555","repo":"ghashtag/trios","number":1555,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/railway-client.ts exports one symbol and no test names any of them","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]}]},{"key":"ghashtag/trios#1554","repo":"ghashtag/trios","number":1554,"title":"trios/agent-server/apps/agent/lib/llm-providers/useOAuthProviderFlow.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"0c16b016c5c35f24136b691fa81b692f7d34cdce64d4b609d7ac286b9a271bcb","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"oauth, provider"}]},{"specId":"9dbf325b34ce2247c239eeaec29739d1a5a13e606c0d5754bd2bb2b7a645203f","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"provider, providers"}]}]},{"key":"ghashtag/trios#1553","repo":"ghashtag/trios","number":1553,"title":"trios/agent-server/apps/agent/entrypoints/app/soul/SoulExamples.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1552","repo":"ghashtag/trios","number":1552,"title":"trios/agent-server/apps/agent/lib/jtbd-popup/useJtbdPopup.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1551","repo":"ghashtag/trios","number":1551,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepConnectApps.tsx exports one symbol and no test names any of them","hits":[{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, connect"}]},{"specId":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"step, raw, steps"}]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"steps, step, success"}]},{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"step, steps"}]},{"specId":"80e970c2be2a313cfca43bc0bbb20397259952dd2d26af5b1359e1d26ea1a4b3","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"steps, step"}]}]},{"key":"ghashtag/trios#1550","repo":"ghashtag/trios","number":1550,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/ScheduledTaskCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1549","repo":"ghashtag/trios","number":1549,"title":"trios/agent-server/apps/agent/lib/chat-actions/useChatActions.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1548","repo":"ghashtag/trios","number":1548,"title":"trios/agent-server/apps/agent/lib/agent-conversations/types.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1547","repo":"ghashtag/trios","number":1547,"title":"trios/agent-server/apps/agent/components/ai-elements/web-preview.tsx exports 6 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1546","repo":"ghashtag/trios","number":1546,"title":"trios/agent-server/apps/agent/entrypoints/selection.content.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1545","repo":"ghashtag/trios","number":1545,"title":"trios/agent-server/apps/agent/lib/schedules/getChatServerResponse.ts exports one symbol and no test names any of them","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"found, chat, response, success"}]}]},{"key":"ghashtag/trios#1544","repo":"ghashtag/trios","number":1544,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/NewAgentDialog.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1543","repo":"ghashtag/trios","number":1543,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.file-preview-sheet.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1542","repo":"ghashtag/trios","number":1542,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepOne.tsx exports one symbol and no test names any of them","hits":[{"specId":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"step, raw, steps"}]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"steps, step, success"}]},{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"step, steps"}]},{"specId":"80e970c2be2a313cfca43bc0bbb20397259952dd2d26af5b1359e1d26ea1a4b3","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"steps, step"}]},{"specId":"94b07d6a708c1a40ea01ad735466a1829b08a98ea73d8c8ac62c23dca79fa775","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"steps, step"}]}]},{"key":"ghashtag/trios#1541","repo":"ghashtag/trios","number":1541,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/hermes-supported-providers.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1540","repo":"ghashtag/trios","number":1540,"title":"The noise filter that could delete its own answer never reached the base","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"accepted, base, fresh, answer, read"}]},{"specId":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"git, branch, merge, base, delete"}]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"delete, base, success"}]}]},{"key":"ghashtag/trios#1536","repo":"ghashtag/trios","number":1536,"title":"trios/agent-server/apps/agent/components/elements/AppSelector.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1535","repo":"ghashtag/trios","number":1535,"title":"trios/agent-server/apps/agent/components/elements/tab-picker-popover.tsx exports one symbol and no test names any of them","hits":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1534","repo":"ghashtag/trios","number":1534,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agents-page-hooks.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1533","repo":"ghashtag/trios","number":1533,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/useOpenClaw.ts exports 6 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1532","repo":"ghashtag/trios","number":1532,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agent-row/AgentTitleRow.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"title, block, row, documentation"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"title, block, row, documentation"}]}]},{"key":"ghashtag/trios#1531","repo":"ghashtag/trios","number":1531,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agent-row/AgentTile.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1530","repo":"ghashtag/trios","number":1530,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agent-row/AgentSparkline.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1529","repo":"ghashtag/trios","number":1529,"title":"trios/agent-server/apps/agent/entrypoints/app/mcp-settings/ServerSettingsCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1528","repo":"ghashtag/trios","number":1528,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/demo/OnboardingDemo.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1527","repo":"ghashtag/trios","number":1527,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/LivenessDot.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"dot, non, zero, items"}]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"zero, raw, dot, non"}]}]},{"key":"ghashtag/trios#1526","repo":"ghashtag/trios","number":1526,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.outputs-rail.tsx exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1525","repo":"ghashtag/trios","number":1525,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/GatewayStatusBar.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"agents, status"}]}]},{"key":"ghashtag/trios#1524","repo":"ghashtag/trios","number":1524,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/AgentList.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1523","repo":"ghashtag/trios","number":1523,"title":"trios/agent-server/apps/agent/entrypoints/app/profile/ProfilePage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1522","repo":"ghashtag/trios","number":1522,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.outputs-rail.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1521","repo":"ghashtag/trios","number":1521,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/QueuePanel.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1520","repo":"ghashtag/trios","number":1520,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ClawChat.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1519","repo":"ghashtag/trios","number":1519,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/ConnectMCP.tsx exports one symbol and no test names any of them","hits":[{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1518","repo":"ghashtag/trios","number":1518,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentSelector.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1517","repo":"ghashtag/trios","number":1517,"title":"trios/agent-server/apps/eval/src/runner/browseros-app-manager.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1516","repo":"ghashtag/trios","number":1516,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentRail.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1515","repo":"ghashtag/trios","number":1515,"title":"trios/agent-server/apps/agent/components/ai-elements/open-in-chat.tsx exports 12 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1514","repo":"ghashtag/trios","number":1514,"title":"trios/agent-server/apps/agent/components/elements/laser.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"6bdb4f8974ba389d990a11b694eb15ced344591f6c3de3d24bbf23f85ea0c964","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"zero, non, elements"}]}]},{"key":"ghashtag/trios#1513","repo":"ghashtag/trios","number":1513,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/OpenClawControls.tsx exports 6 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1512","repo":"ghashtag/trios","number":1512,"title":"trios/agent-server/packages/shared/src/constants/hermes.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1511","repo":"ghashtag/trios","number":1511,"title":"trios/agent-server/apps/trios-mcp-bridge/src/config.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1510","repo":"ghashtag/trios","number":1510,"title":"trios/agent-server/apps/server/src/browser/backends/types.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1509","repo":"ghashtag/trios","number":1509,"title":"trios/agent-server/apps/server/src/agent/mcp-builder.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1508","repo":"ghashtag/trios","number":1508,"title":"trios/agent-server/apps/eval/src/runs/task-run-pipeline.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1507","repo":"ghashtag/trios","number":1507,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/features/Features.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1506","repo":"ghashtag/trios","number":1506,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatInput.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1505","repo":"ghashtag/trios","number":1505,"title":"trios/agent-server/apps/agent/lib/browseros/adapter.ts exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1504","repo":"ghashtag/trios","number":1504,"title":"trios/agent-server/apps/agent/entrypoints/app/ai-settings/AISettingsPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1503","repo":"ghashtag/trios","number":1503,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/NewScheduledTaskDialog.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1498","repo":"ghashtag/trios","number":1498,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentCommandConversation.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1496","repo":"ghashtag/trios","number":1496,"title":"trios/agent-server/apps/eval/src/agents/orchestrated/backends/clado/clado-action-executor.ts exports one symbol and no test names any of them","hits":[{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"queen, success, action, eval"}]}]},{"key":"ghashtag/trios#1495","repo":"ghashtag/trios","number":1495,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ConversationInput.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1494","repo":"ghashtag/trios","number":1494,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/NewTab.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1493","repo":"ghashtag/trios","number":1493,"title":"The field audit covers one file out of the sixteen that query this database","hits":[{"specId":"3f327ef3f375cf0914564095f3632fadf25550c619fe0244c6432b5fcd51eefc","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"query, retry, start, complete, success, field"}]},{"specId":"fae8329c717a697cf1938a8aece2f3b92ab31f6ac7bea6abfdeea41d5b11dea7","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"database, query, top"}]}]},{"key":"ghashtag/trios#1490","repo":"ghashtag/trios","number":1490,"title":"trios/agent-server/apps/agent/entrypoints/app/ai-settings/NewProviderDialog.tsx exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1484","repo":"ghashtag/trios","number":1484,"title":"trios/agent-server/apps/server/tests/__helpers__/queend-path.ts breaks L3 with 5 non-ASCII characters, all of them in comments","hits":[{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"commit, path, ascii"}]},{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"path, characters, byte"}]}]},{"key":"ghashtag/trios#1476","repo":"ghashtag/trios","number":1476,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/home-agent-card.helpers.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"home, characters, byte"}]}]},{"key":"ghashtag/trios#1471","repo":"ghashtag/trios","number":1471,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/AgentsPage.tsx breaks L3 with 4 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1350","repo":"ghashtag/trios","number":1350,"title":"The migration surface, counted: which files restate a rule a .t27 already carries","hits":[{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"migration, rule, success, target, path, byte"}]}]},{"key":"ghashtag/trios#1337","repo":"ghashtag/trios","number":1337,"title":"EPIC: RING-00 is generated, and the Swift that answers today is proven equal to it first","hits":[]},{"key":"ghashtag/trios#1336","repo":"ghashtag/trios","number":1336,"title":"EPIC: one rule, one source - every law generated from .t27 and the hand-written copies deleted","hits":[]},{"key":"ghashtag/trios#1334","repo":"ghashtag/trios","number":1334,"title":"EPIC: a swarm that does not stop while there is a backlog","hits":[]},{"key":"ghashtag/trios#1329","repo":"ghashtag/trios","number":1329,"title":"A sendBack verdict reopens nothing, so every issue gets one attempt","hits":[]},{"key":"ghashtag/trios#1328","repo":"ghashtag/trios","number":1328,"title":"Half the provider credentials cannot pay and nothing tells the operator","hits":[]},{"key":"ghashtag/trios#1321","repo":"ghashtag/trios","number":1321,"title":"EPIC: restore Queen continuous execution and four-account capacity","hits":[{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"queen, unknown, success, failure, good, active, execution"}]}]},{"key":"ghashtag/trios#1291","repo":"ghashtag/trios","number":1291,"title":"Enforce English-only GitHub tasks while preserving RU/EN UI","hits":[]},{"key":"ghashtag/trios#1286","repo":"ghashtag/trios","number":1286,"title":"A negative test parks itself in the review queue forever","hits":[]},{"key":"ghashtag/trios#1279","repo":"ghashtag/trios","number":1279,"title":"EPIC: T27 backend — rings from the decision core to silicon","hits":[{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"rings, rust, data, decision"}]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"rings, rust, decision"}]},{"specId":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"rings, rust, decision"}]}]},{"key":"ghashtag/trios#1244","repo":"ghashtag/trios","number":1244,"title":"QueenTabView написан под удалённый API trinity: план замены, ждёт слова","hits":[]},{"key":"ghashtag/trios#1240","repo":"ghashtag/trios","number":1240,"title":"Ключ добавлен пользователем и всё равно не читается: перечисление записей стоит за моими воротами","hits":[]},{"key":"ghashtag/trios#1175","repo":"ghashtag/trios","number":1175,"title":"Сужать только при точном совпадении имени, иначе молчать","hits":[]},{"key":"ghashtag/trios#1174","repo":"ghashtag/trios","number":1174,"title":"Сужение прячет от себя лучшую улику: имена событий в строковых литералах","hits":[]},{"key":"ghashtag/trios#1173","repo":"ghashtag/trios","number":1173,"title":"Сужение попадает один раз из четырёх и промахивается в начало файла","hits":[]},{"key":"ghashtag/trios#1133","repo":"ghashtag/trios","number":1133,"title":"Приёмка решает раньше, чем приходят вердикты","hits":[]},{"key":"ghashtag/trios#1127","repo":"ghashtag/trios","number":1127,"title":"Судья и подсудимый — одна модель: ревьюер должен быть противником, а не собой","hits":[]},{"key":"ghashtag/trios#1090","repo":"ghashtag/trios","number":1090,"title":"EPIC: Королева-надзиратель — спецификация на чат и полный цикл до мержа","hits":[]},{"key":"ghashtag/trios#957","repo":"ghashtag/trios","number":957,"title":"TRIOS_PHD_NO_IMAGE_TRAIN: anchor hero panels via Needspace, ban hard clearpage","hits":[]},{"key":"ghashtag/trios#380","repo":"ghashtag/trios","number":380,"title":"🌻 GOLDEN SUNFLOWERS — Trinity S³AI / Flos Aureus (UNIFIED v6.2 · 98 ch · 2.53M ch · 2173 thm)","hits":[]},{"key":"ghashtag/tt-trinity-corona#1","repo":"ghashtag/tt-trinity-corona","number":1,"title":"Phase A: GF180MCU PDK exploration + tile-size decision (8x2 vs 8x4)","hits":[{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","relation":"candidate","coverage":"unverified","score":87,"reasons":[{"kind":"terms","value":"corona, index, shuttle, pdk, process, status, tile, rom"}]},{"specId":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"size, status, process, decision"}]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"size, status, process, decision"}]},{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"size, phase, plan"}]}]},{"key":"ghashtag/tt-trinity-gamma#216","repo":"ghashtag/tt-trinity-gamma","number":216,"title":"🚨 SKY130 nightly regression · run 34572536342","hits":[]},{"key":"ghashtag/tt-trinity-gamma#215","repo":"ghashtag/tt-trinity-gamma","number":215,"title":"🚨 SKY130 nightly regression · run 34448038690","hits":[]},{"key":"ghashtag/tt-trinity-gamma#214","repo":"ghashtag/tt-trinity-gamma","number":214,"title":"🚨 SKY130 nightly regression · run 34322222628","hits":[]},{"key":"ghashtag/tt-trinity-gamma#213","repo":"ghashtag/tt-trinity-gamma","number":213,"title":"🚨 SKY130 nightly regression · run 34196990370","hits":[]},{"key":"ghashtag/tt-trinity-gamma#212","repo":"ghashtag/tt-trinity-gamma","number":212,"title":"🚨 SKY130 nightly regression · run 34093572790","hits":[]},{"key":"ghashtag/tt-trinity-gamma#211","repo":"ghashtag/tt-trinity-gamma","number":211,"title":"🚨 SKY130 nightly regression · run 34017680523","hits":[]},{"key":"ghashtag/tt-trinity-gamma#210","repo":"ghashtag/tt-trinity-gamma","number":210,"title":"🚨 SKY130 nightly regression · run 33950580677","hits":[]},{"key":"ghashtag/tt-trinity-gamma#209","repo":"ghashtag/tt-trinity-gamma","number":209,"title":"🚨 SKY130 nightly regression · run 33846631735","hits":[]},{"key":"ghashtag/tt-trinity-gamma#208","repo":"ghashtag/tt-trinity-gamma","number":208,"title":"🚨 SKY130 nightly regression · run 33725461892","hits":[]},{"key":"ghashtag/tt-trinity-gamma#207","repo":"ghashtag/tt-trinity-gamma","number":207,"title":"🚨 SKY130 nightly regression · run 33600713074","hits":[]},{"key":"ghashtag/tt-trinity-gamma#206","repo":"ghashtag/tt-trinity-gamma","number":206,"title":"🚨 SKY130 nightly regression · run 33481717662","hits":[]},{"key":"ghashtag/tt-trinity-gamma#205","repo":"ghashtag/tt-trinity-gamma","number":205,"title":"🚨 SKY130 nightly regression · run 33371647688","hits":[]},{"key":"ghashtag/tt-trinity-gamma#204","repo":"ghashtag/tt-trinity-gamma","number":204,"title":"🚨 SKY130 nightly regression · run 33300374089","hits":[]},{"key":"ghashtag/tt-trinity-gamma#203","repo":"ghashtag/tt-trinity-gamma","number":203,"title":"🚨 SKY130 nightly regression · run 33243700624","hits":[]},{"key":"ghashtag/tt-trinity-gamma#202","repo":"ghashtag/tt-trinity-gamma","number":202,"title":"🚨 SKY130 nightly regression · run 33177280940","hits":[]},{"key":"ghashtag/tt-trinity-gamma#201","repo":"ghashtag/tt-trinity-gamma","number":201,"title":"🚨 SKY130 nightly regression · run 33071628725","hits":[]},{"key":"ghashtag/tt-trinity-gamma#200","repo":"ghashtag/tt-trinity-gamma","number":200,"title":"🚨 SKY130 nightly regression · run 32925053032","hits":[]},{"key":"ghashtag/tt-trinity-gamma#199","repo":"ghashtag/tt-trinity-gamma","number":199,"title":"🚨 SKY130 nightly regression · run 32803360044","hits":[]},{"key":"ghashtag/tt-trinity-gamma#198","repo":"ghashtag/tt-trinity-gamma","number":198,"title":"🚨 SKY130 nightly regression · run 32685053747","hits":[]},{"key":"ghashtag/tt-trinity-gamma#197","repo":"ghashtag/tt-trinity-gamma","number":197,"title":"🚨 SKY130 nightly regression · run 32614317092","hits":[]},{"key":"ghashtag/tt-trinity-gamma#196","repo":"ghashtag/tt-trinity-gamma","number":196,"title":"🚨 SKY130 nightly regression · run 32547477839","hits":[]},{"key":"ghashtag/tt-trinity-gamma#195","repo":"ghashtag/tt-trinity-gamma","number":195,"title":"🚨 SKY130 nightly regression · run 32441909382","hits":[]},{"key":"ghashtag/tt-trinity-gamma#194","repo":"ghashtag/tt-trinity-gamma","number":194,"title":"🚨 SKY130 nightly regression · run 32326409933","hits":[]},{"key":"ghashtag/tt-trinity-gamma#193","repo":"ghashtag/tt-trinity-gamma","number":193,"title":"🚨 SKY130 nightly regression · run 32210341611","hits":[]},{"key":"ghashtag/tt-trinity-gamma#192","repo":"ghashtag/tt-trinity-gamma","number":192,"title":"🚨 SKY130 nightly regression · run 32093543361","hits":[]},{"key":"ghashtag/tt-trinity-gamma#191","repo":"ghashtag/tt-trinity-gamma","number":191,"title":"🚨 SKY130 nightly regression · run 31989658184","hits":[]},{"key":"ghashtag/tt-trinity-gamma#190","repo":"ghashtag/tt-trinity-gamma","number":190,"title":"🚨 SKY130 nightly regression · run 31923149464","hits":[]},{"key":"ghashtag/tt-trinity-gamma#189","repo":"ghashtag/tt-trinity-gamma","number":189,"title":"🚨 SKY130 nightly regression · run 31860257599","hits":[]},{"key":"ghashtag/tt-trinity-gamma#188","repo":"ghashtag/tt-trinity-gamma","number":188,"title":"🚨 SKY130 nightly regression · run 31768954533","hits":[]},{"key":"ghashtag/tt-trinity-gamma#187","repo":"ghashtag/tt-trinity-gamma","number":187,"title":"🚨 SKY130 nightly regression · run 31666265452","hits":[]},{"key":"ghashtag/tt-trinity-gamma#186","repo":"ghashtag/tt-trinity-gamma","number":186,"title":"🚨 SKY130 nightly regression · run 31562276788","hits":[]},{"key":"ghashtag/tt-trinity-gamma#185","repo":"ghashtag/tt-trinity-gamma","number":185,"title":"🚨 SKY130 nightly regression · run 31456260299","hits":[]},{"key":"ghashtag/tt-trinity-gamma#184","repo":"ghashtag/tt-trinity-gamma","number":184,"title":"🚨 SKY130 nightly regression · run 31353897322","hits":[]},{"key":"ghashtag/tt-trinity-gamma#183","repo":"ghashtag/tt-trinity-gamma","number":183,"title":"🚨 SKY130 nightly regression · run 31292978161","hits":[]},{"key":"ghashtag/tt-trinity-gamma#182","repo":"ghashtag/tt-trinity-gamma","number":182,"title":"🚨 SKY130 nightly regression · run 31237141849","hits":[]},{"key":"ghashtag/tt-trinity-gamma#181","repo":"ghashtag/tt-trinity-gamma","number":181,"title":"🚨 SKY130 nightly regression · run 31147372059","hits":[]},{"key":"ghashtag/tt-trinity-gamma#180","repo":"ghashtag/tt-trinity-gamma","number":180,"title":"🚨 SKY130 nightly regression · run 31073652155","hits":[]},{"key":"ghashtag/tt-trinity-gamma#179","repo":"ghashtag/tt-trinity-gamma","number":179,"title":"🚨 SKY130 nightly regression · run 30977537983","hits":[]},{"key":"ghashtag/tt-trinity-gamma#178","repo":"ghashtag/tt-trinity-gamma","number":178,"title":"🚨 SKY130 nightly regression · run 30880103657","hits":[]},{"key":"ghashtag/tt-trinity-gamma#177","repo":"ghashtag/tt-trinity-gamma","number":177,"title":"🚨 SKY130 nightly regression · run 30787890853","hits":[]},{"key":"ghashtag/tt-trinity-gamma#176","repo":"ghashtag/tt-trinity-gamma","number":176,"title":"🚨 SKY130 nightly regression · run 30734161870","hits":[]},{"key":"ghashtag/tt-trinity-gamma#175","repo":"ghashtag/tt-trinity-gamma","number":175,"title":"🚨 SKY130 nightly regression · run 30685865322","hits":[]},{"key":"ghashtag/tt-trinity-gamma#174","repo":"ghashtag/tt-trinity-gamma","number":174,"title":"🚨 SKY130 nightly regression · run 30607241657","hits":[]},{"key":"ghashtag/tt-trinity-gamma#173","repo":"ghashtag/tt-trinity-gamma","number":173,"title":"🚨 SKY130 nightly regression · run 30515812124","hits":[]},{"key":"ghashtag/tt-trinity-gamma#172","repo":"ghashtag/tt-trinity-gamma","number":172,"title":"🚨 SKY130 nightly regression · run 30424851641","hits":[]},{"key":"ghashtag/tt-trinity-gamma#171","repo":"ghashtag/tt-trinity-gamma","number":171,"title":"🚨 SKY130 nightly regression · run 30331074138","hits":[]},{"key":"ghashtag/tt-trinity-gamma#170","repo":"ghashtag/tt-trinity-gamma","number":170,"title":"🚨 SKY130 nightly regression · run 30240915761","hits":[]},{"key":"ghashtag/tt-trinity-gamma#169","repo":"ghashtag/tt-trinity-gamma","number":169,"title":"🚨 SKY130 nightly regression · run 30189546295","hits":[]},{"key":"ghashtag/tt-trinity-gamma#168","repo":"ghashtag/tt-trinity-gamma","number":168,"title":"🚨 SKY130 nightly regression · run 30145426183","hits":[]},{"key":"ghashtag/tt-trinity-gamma#167","repo":"ghashtag/tt-trinity-gamma","number":167,"title":"🚨 SKY130 nightly regression · run 30069164201","hits":[]},{"key":"ghashtag/tt-trinity-gamma#166","repo":"ghashtag/tt-trinity-gamma","number":166,"title":"🚨 SKY130 nightly regression · run 29982097672","hits":[]},{"key":"ghashtag/tt-trinity-gamma#165","repo":"ghashtag/tt-trinity-gamma","number":165,"title":"🚨 SKY130 nightly regression · run 29893463740","hits":[]},{"key":"ghashtag/tt-trinity-gamma#164","repo":"ghashtag/tt-trinity-gamma","number":164,"title":"🚨 SKY130 nightly regression · run 29803729224","hits":[]},{"key":"ghashtag/tt-trinity-gamma#163","repo":"ghashtag/tt-trinity-gamma","number":163,"title":"🚨 SKY130 nightly regression · run 29719652506","hits":[]},{"key":"ghashtag/tt-trinity-gamma#162","repo":"ghashtag/tt-trinity-gamma","number":162,"title":"🚨 SKY130 nightly regression · run 29674737312","hits":[]},{"key":"ghashtag/tt-trinity-gamma#161","repo":"ghashtag/tt-trinity-gamma","number":161,"title":"🚨 SKY130 nightly regression · run 29631181378","hits":[]},{"key":"ghashtag/tt-trinity-gamma#160","repo":"ghashtag/tt-trinity-gamma","number":160,"title":"🚨 SKY130 nightly regression · run 29556799917","hits":[]},{"key":"ghashtag/tt-trinity-gamma#159","repo":"ghashtag/tt-trinity-gamma","number":159,"title":"🚨 SKY130 nightly regression · run 29473208457","hits":[]},{"key":"ghashtag/tt-trinity-gamma#158","repo":"ghashtag/tt-trinity-gamma","number":158,"title":"🚨 SKY130 nightly regression · run 29389995593","hits":[]},{"key":"ghashtag/tt-trinity-gamma#157","repo":"ghashtag/tt-trinity-gamma","number":157,"title":"🚨 SKY130 nightly regression · run 29306998074","hits":[]},{"key":"ghashtag/tt-trinity-gamma#156","repo":"ghashtag/tt-trinity-gamma","number":156,"title":"🚨 SKY130 nightly regression · run 29226784339","hits":[]},{"key":"ghashtag/tt-trinity-gamma#155","repo":"ghashtag/tt-trinity-gamma","number":155,"title":"🚨 SKY130 nightly regression · run 29181221736","hits":[]},{"key":"ghashtag/tt-trinity-gamma#154","repo":"ghashtag/tt-trinity-gamma","number":154,"title":"🚨 SKY130 nightly regression · run 29140881440","hits":[]},{"key":"ghashtag/tt-trinity-gamma#153","repo":"ghashtag/tt-trinity-gamma","number":153,"title":"🚨 SKY130 nightly regression · run 29072867447","hits":[]},{"key":"ghashtag/tt-trinity-gamma#152","repo":"ghashtag/tt-trinity-gamma","number":152,"title":"🚨 SKY130 nightly regression · run 28997774349","hits":[]},{"key":"ghashtag/tt-trinity-gamma#151","repo":"ghashtag/tt-trinity-gamma","number":151,"title":"🚨 SKY130 nightly regression · run 28919552122","hits":[]},{"key":"ghashtag/tt-trinity-gamma#150","repo":"ghashtag/tt-trinity-gamma","number":150,"title":"🚨 SKY130 nightly regression · run 28845467760","hits":[]},{"key":"ghashtag/tt-trinity-gamma#149","repo":"ghashtag/tt-trinity-gamma","number":149,"title":"🚨 SKY130 nightly regression · run 28772713086","hits":[]},{"key":"ghashtag/tt-trinity-gamma#148","repo":"ghashtag/tt-trinity-gamma","number":148,"title":"🚨 SKY130 nightly regression · run 28731478369","hits":[]},{"key":"ghashtag/tt-trinity-gamma#147","repo":"ghashtag/tt-trinity-gamma","number":147,"title":"🚨 SKY130 nightly regression · run 28696697374","hits":[]},{"key":"ghashtag/tt-trinity-gamma#146","repo":"ghashtag/tt-trinity-gamma","number":146,"title":"🚨 SKY130 nightly regression · run 28641442707","hits":[]},{"key":"ghashtag/tt-trinity-gamma#145","repo":"ghashtag/tt-trinity-gamma","number":145,"title":"🚨 SKY130 nightly regression · run 28562622322","hits":[]},{"key":"ghashtag/tt-trinity-gamma#144","repo":"ghashtag/tt-trinity-gamma","number":144,"title":"🚨 SKY130 nightly regression · run 28490923678","hits":[]},{"key":"ghashtag/tt-trinity-gamma#143","repo":"ghashtag/tt-trinity-gamma","number":143,"title":"🚨 SKY130 nightly regression · run 28417674835","hits":[]},{"key":"ghashtag/tt-trinity-gamma#142","repo":"ghashtag/tt-trinity-gamma","number":142,"title":"🚨 SKY130 nightly regression · run 28346310021","hits":[]},{"key":"ghashtag/tt-trinity-gamma#141","repo":"ghashtag/tt-trinity-gamma","number":141,"title":"🚨 SKY130 nightly regression · run 28309759122","hits":[]},{"key":"ghashtag/tt-trinity-gamma#140","repo":"ghashtag/tt-trinity-gamma","number":140,"title":"🚨 SKY130 nightly regression · run 28276869750","hits":[]},{"key":"ghashtag/tt-trinity-gamma#139","repo":"ghashtag/tt-trinity-gamma","number":139,"title":"🚨 SKY130 nightly regression · run 28214740983","hits":[]},{"key":"ghashtag/tt-trinity-gamma#138","repo":"ghashtag/tt-trinity-gamma","number":138,"title":"🚨 SKY130 nightly regression · run 28144319972","hits":[]},{"key":"ghashtag/tt-trinity-gamma#137","repo":"ghashtag/tt-trinity-gamma","number":137,"title":"🚨 SKY130 nightly regression · run 28072512253","hits":[]},{"key":"ghashtag/tt-trinity-gamma#136","repo":"ghashtag/tt-trinity-gamma","number":136,"title":"🚨 SKY130 nightly regression · run 27999539047","hits":[]},{"key":"ghashtag/tt-trinity-gamma#135","repo":"ghashtag/tt-trinity-gamma","number":135,"title":"🚨 SKY130 nightly regression · run 27927266239","hits":[]},{"key":"ghashtag/tt-trinity-gamma#134","repo":"ghashtag/tt-trinity-gamma","number":134,"title":"🚨 SKY130 nightly regression · run 27891944779","hits":[]},{"key":"ghashtag/tt-trinity-gamma#133","repo":"ghashtag/tt-trinity-gamma","number":133,"title":"🚨 SKY130 nightly regression · run 27858466017","hits":[]},{"key":"ghashtag/tt-trinity-gamma#132","repo":"ghashtag/tt-trinity-gamma","number":132,"title":"🚨 SKY130 nightly regression · run 27803115751","hits":[]},{"key":"ghashtag/tt-trinity-gamma#131","repo":"ghashtag/tt-trinity-gamma","number":131,"title":"🚨 SKY130 nightly regression · run 27734239071","hits":[]},{"key":"ghashtag/tt-trinity-gamma#130","repo":"ghashtag/tt-trinity-gamma","number":130,"title":"🚨 SKY130 nightly regression · run 27663296704","hits":[]},{"key":"ghashtag/tt-trinity-gamma#129","repo":"ghashtag/tt-trinity-gamma","number":129,"title":"🚨 SKY130 nightly regression · run 27591607141","hits":[]},{"key":"ghashtag/tt-trinity-gamma#128","repo":"ghashtag/tt-trinity-gamma","number":128,"title":"🚨 SKY130 nightly regression · run 27521852324","hits":[]},{"key":"ghashtag/tt-trinity-gamma#127","repo":"ghashtag/tt-trinity-gamma","number":127,"title":"🚨 SKY130 nightly regression · run 27486867811","hits":[]},{"key":"ghashtag/tt-trinity-gamma#126","repo":"ghashtag/tt-trinity-gamma","number":126,"title":"🚨 SKY130 nightly regression · run 27454876517","hits":[]},{"key":"ghashtag/tt-trinity-gamma#125","repo":"ghashtag/tt-trinity-gamma","number":125,"title":"🚨 SKY130 nightly regression · run 27392114621","hits":[]},{"key":"ghashtag/tt-trinity-gamma#124","repo":"ghashtag/tt-trinity-gamma","number":124,"title":"🚨 SKY130 nightly regression · run 27321259159","hits":[]},{"key":"ghashtag/tt-trinity-gamma#123","repo":"ghashtag/tt-trinity-gamma","number":123,"title":"🚨 SKY130 nightly regression · run 27250590554","hits":[]},{"key":"ghashtag/tt-trinity-gamma#122","repo":"ghashtag/tt-trinity-gamma","number":122,"title":"🚨 SKY130 nightly regression · run 27181456444","hits":[]},{"key":"ghashtag/tt-trinity-gamma#121","repo":"ghashtag/tt-trinity-gamma","number":121,"title":"🚨 SKY130 nightly regression · run 27113949037","hits":[]},{"key":"ghashtag/tt-trinity-gamma#117","repo":"ghashtag/tt-trinity-gamma","number":117,"title":"🚨 SKY130 nightly regression · run 27081257875","hits":[]},{"key":"ghashtag/tt-trinity-gamma#116","repo":"ghashtag/tt-trinity-gamma","number":116,"title":"🚨 SKY130 nightly regression · run 27050978700","hits":[]},{"key":"ghashtag/tt-trinity-gamma#115","repo":"ghashtag/tt-trinity-gamma","number":115,"title":"🚨 SKY130 nightly regression · run 26993114509","hits":[]},{"key":"ghashtag/tt-trinity-gamma#114","repo":"ghashtag/tt-trinity-gamma","number":114,"title":"🚨 SKY130 nightly regression · run 26928077625","hits":[]},{"key":"ghashtag/tt-trinity-gamma#113","repo":"ghashtag/tt-trinity-gamma","number":113,"title":"🚨 SKY130 nightly regression · run 26861486774","hits":[]},{"key":"ghashtag/tt-trinity-gamma#112","repo":"ghashtag/tt-trinity-gamma","number":112,"title":"🚨 SKY130 nightly regression · run 26796104026","hits":[]},{"key":"ghashtag/tt-trinity-gamma#111","repo":"ghashtag/tt-trinity-gamma","number":111,"title":"🚨 SKY130 nightly regression · run 26733208122","hits":[]},{"key":"ghashtag/tt-trinity-gamma#109","repo":"ghashtag/tt-trinity-gamma","number":109,"title":"🚨 SKY130 nightly regression · run 26701894661","hits":[]},{"key":"ghashtag/tt-trinity-gamma#108","repo":"ghashtag/tt-trinity-gamma","number":108,"title":"🚨 SKY130 nightly regression · run 26672909194","hits":[]},{"key":"ghashtag/tt-trinity-gamma#107","repo":"ghashtag/tt-trinity-gamma","number":107,"title":"🚨 SKY130 nightly regression · run 26615721300","hits":[]},{"key":"ghashtag/tt-trinity-gamma#106","repo":"ghashtag/tt-trinity-gamma","number":106,"title":"🚨 SKY130 nightly regression · run 26552423903","hits":[]},{"key":"ghashtag/tt-trinity-gamma#105","repo":"ghashtag/tt-trinity-gamma","number":105,"title":"🚨 SKY130 nightly regression · run 26488524051","hits":[]},{"key":"ghashtag/tt-trinity-gamma#104","repo":"ghashtag/tt-trinity-gamma","number":104,"title":"🚨 SKY130 nightly regression · run 26430103667","hits":[]},{"key":"ghashtag/tt-trinity-gamma#103","repo":"ghashtag/tt-trinity-gamma","number":103,"title":"🚨 SKY130 nightly regression · run 26381270023","hits":[]},{"key":"ghashtag/tt-trinity-gamma#102","repo":"ghashtag/tt-trinity-gamma","number":102,"title":"🚨 SKY130 nightly regression · run 26350515340","hits":[]},{"key":"ghashtag/tt-trinity-gamma#101","repo":"ghashtag/tt-trinity-gamma","number":101,"title":"🚨 SKY130 nightly regression · run 26321929095","hits":[]},{"key":"ghashtag/tt-trinity-gamma#100","repo":"ghashtag/tt-trinity-gamma","number":100,"title":"🚨 SKY130 nightly regression · run 26266284414","hits":[]},{"key":"ghashtag/tt-trinity-gamma#99","repo":"ghashtag/tt-trinity-gamma","number":99,"title":"🚨 SKY130 nightly regression · run 26203227553","hits":[]},{"key":"ghashtag/tt-trinity-gamma#98","repo":"ghashtag/tt-trinity-gamma","number":98,"title":"🚨 SKY130 nightly regression · run 26138940119","hits":[]},{"key":"ghashtag/tt-trinity-gamma#97","repo":"ghashtag/tt-trinity-gamma","number":97,"title":"🚨 SKY130 nightly regression · run 26073886086","hits":[]},{"key":"ghashtag/tt-trinity-gamma#94","repo":"ghashtag/tt-trinity-gamma","number":94,"title":"[CL-02] Adversarial Training Loop - Gap-1 Enhancement","hits":[{"specId":"92edde98e6961cc767cf56e5dcc45e372f2441034fb463c6f0f8b3f23558a129","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"train_step:52"},{"kind":"terms","value":"epsilon, start, train, step"}]}]},{"key":"ghashtag/tt-trinity-gamma#93","repo":"ghashtag/tt-trinity-gamma","number":93,"title":"[CL-03] Cryptographic Audit Trail - Gap-10 Enhancement","hits":[{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"merkle_root:84"},{"kind":"terms","value":"merkle, proof, root"}]}]},{"key":"ghashtag/tt-trinity-gamma#92","repo":"ghashtag/tt-trinity-gamma","number":92,"title":"[CL-02] Adversarial Training Loop - Gap-1 Enhancement","hits":[{"specId":"92edde98e6961cc767cf56e5dcc45e372f2441034fb463c6f0f8b3f23558a129","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"train_step:52"},{"kind":"terms","value":"epsilon, start, train, step"}]}]},{"key":"ghashtag/tt-trinity-gamma#91","repo":"ghashtag/tt-trinity-gamma","number":91,"title":"[OS-03] Python SDK","hits":[]},{"key":"ghashtag/tt-trinity-gamma#90","repo":"ghashtag/tt-trinity-gamma","number":90,"title":"[OS-02] CI/CD for Community","hits":[]},{"key":"ghashtag/tt-trinity-gamma#89","repo":"ghashtag/tt-trinity-gamma","number":89,"title":"[OS-01] t27 Toolchain v2.0","hits":[]},{"key":"ghashtag/tt-trinity-gamma#88","repo":"ghashtag/tt-trinity-gamma","number":88,"title":"[PUB-03] PhD Dissertation","hits":[]},{"key":"ghashtag/tt-trinity-gamma#87","repo":"ghashtag/tt-trinity-gamma","number":87,"title":"[PUB-02] Conference Paper","hits":[]},{"key":"ghashtag/tt-trinity-gamma#86","repo":"ghashtag/tt-trinity-gamma","number":86,"title":"[PUB-01] Journal Paper - arXiv first","hits":[]},{"key":"ghashtag/tt-trinity-gamma#85","repo":"ghashtag/tt-trinity-gamma","number":85,"title":"[SN-03] STDP Learning Module","hits":[]},{"key":"ghashtag/tt-trinity-gamma#84","repo":"ghashtag/tt-trinity-gamma","number":84,"title":"[SN-02] Lateral Inhibition Network","hits":[]},{"key":"ghashtag/tt-trinity-gamma#83","repo":"ghashtag/tt-trinity-gamma","number":83,"title":"[SN-01] Adaptive LIF Neuron","hits":[]},{"key":"ghashtag/tt-trinity-gamma#82","repo":"ghashtag/tt-trinity-gamma","number":82,"title":"[EN-03] Analog Neuron Hybrid - 1000× Target","hits":[]},{"key":"ghashtag/tt-trinity-gamma#81","repo":"ghashtag/tt-trinity-gamma","number":81,"title":"[EN-02] Event-Driven Compute - 10× Active","hits":[{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"integration, simulation, active, control, event, receive, depends, dependencies"}]},{"specId":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"integration, simulation, active, control, event, receive, depends, dependencies"}]},{"specId":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"simulation, event, energy, active"}]},{"specId":"ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"simulation, event, energy, active"}]},{"specId":"402ebb2274036fffb23ef31ddd4a81532a3ae5db2bc2925851bfe78276923a33","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"event, active, success"}]}]},{"key":"ghashtag/tt-trinity-gamma#80","repo":"ghashtag/tt-trinity-gamma","number":80,"title":"[EN-01] Subthreshold Clock Gating - 100× Idle","hits":[{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"chips, subth, clk, threshold, voltage, gate, power, active"}]}]},{"key":"ghashtag/tt-trinity-gamma#79","repo":"ghashtag/tt-trinity-gamma","number":79,"title":"[CL-04] Coq Verification Export Tool","hits":[]},{"key":"ghashtag/tt-trinity-gamma#78","repo":"ghashtag/tt-trinity-gamma","number":78,"title":"[EPIC] TRI-NET 2026 Scientific Improvement Plan","hits":[]},{"key":"ghashtag/tt-trinity-gamma#75","repo":"ghashtag/tt-trinity-gamma","number":75,"title":"[CL-01] AR-ML Co-Processor Interface","hits":[]},{"key":"ghashtag/tt-trinity-gamma#74","repo":"ghashtag/tt-trinity-gamma","number":74,"title":"[EPIC] TRI-NET 2026 Scientific Improvement Plan","hits":[]}],"specs":[{"id":"000cf7b4fd568fd728063f7f1d28acd812a43d58ceda7180381755d2ea9b7eaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/tf3.t27"}]},{"id":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/arty_a7_integration.t27"}]},{"id":"009f964022dfd8c9ff3e0cdc77de85b0c5162329bd53e3898bac2a5d43bfa2b3","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/map.t27"}]},{"id":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/packed_trit.t27"}]},{"id":"022a99e9b297c32b50c7b82c7eecdbbc302dce6a374027d278ee30423252c9f6","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/02_functions.t27"}]},{"id":"0282d379eabfe96387bde647535d0a2849c755fdbb32ab86ec98a99444ea0d13","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/settlement_law.t27"}]},{"id":"0330730538325bbbb9803179e922a76577032da1cad66a53171b28b7a348ac89","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/tuple.t27"}]},{"id":"03c1b268a4737549ad5429537fef599326c7eb9ccbcb5ad203157639005c15a1","sources":[{"repo":"ghashtag/t27","path":"specs/physics/chimera_best_gamma.t27"}]},{"id":"042c7754a3e80d71a7c659acc9e1e4d90c561bf3a3876bbcc34237e14421f3d0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/priority_queue.t27"}]},{"id":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","sources":[{"repo":"ghashtag/t27","path":"specs/nn/attention.t27"}]},{"id":"054368075009acf87f6a8d262d47083b0d2fea4f2d01fd1fd17fd56be345245f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_node_identity.t27"}]},{"id":"059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/anomaly_detector.t27"}]},{"id":"05a07af58a53b6ca13e294c62187fc537865c2d24b80bdd484b1fe79232361da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logging.t27"}]},{"id":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/transform.t27"}]},{"id":"0698e7d7e9693a49683c92c75812220f30b4025bee6ab7765c34e5ad5ca183db","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf12.t27"}]},{"id":"06e69666f7c575b3fbe4f5530f2560fd46ce903a1a3af6dd62e375aaa4f38953","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_memory.t27"}]},{"id":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/self_healing.t27"}]},{"id":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/m3_multihop.t27"}]},{"id":"07c862f49fda9f37cff9081cbbbbcc2e1a3402e1b24bd6ca8d83fb7103801666","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/channel.t27"}]},{"id":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/formats.t27"}]},{"id":"089f57bd6ac32f7823bc8a06be007ddc27710b276853f6d0e9d3de1519c87d79","sources":[{"repo":"ghashtag/t27","path":"specs/git/diff.t27"}]},{"id":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/parser.t27"}]},{"id":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/docs_generator.t27"}]},{"id":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/formal.t27"}]},{"id":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_routing.t27"}]},{"id":"095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bootrom.t27"}]},{"id":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/phi_ratio.t27"}]},{"id":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_minimal.t27"}]},{"id":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sources":[{"repo":"ghashtag/tt-trinity-gamma","path":"tt-trinity-gamma/specs/numeric/tri_net_formats.t27"}]},{"id":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hir.t27"}]},{"id":"0aa2fa4008f17505844152d0cd16db6c8c4ba0905212a0a51f5368e8e9708c3e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lockfree_stack.t27"}]},{"id":"0b5f7bff39da7f29b90ff5ff965bd07cdf1ffc1bb523a81cc03ca617fa57163a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/byte_utils.t27"}]},{"id":"0c16b016c5c35f24136b691fa81b692f7d34cdce64d4b609d7ac286b9a271bcb","sources":[{"repo":"ghashtag/t27","path":"specs/auth/config.t27"}]},{"id":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/docs_generator.t27"}]},{"id":"0cf723b0c54a06a9851f0f635f2191829a0c100860d1c12896afa5e4bb856b8a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/memory_primitives.t27"}]},{"id":"0dd7fd6cc289560d1997dd2831d004d25892651b7beb65979ecc5973699c4517","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_variant_split.t27"}]},{"id":"0de79f996e3835ee7ef5b68ecb38dc59106fddeda70bb43ac45f63eb27f10003","sources":[{"repo":"ghashtag/t27","path":"specs/brain/neural_gamma.t27"}]},{"id":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/stream_compute.t27"}]},{"id":"0e5d35ab58967fd8ae9e8de651460f250d44a34603015bd64f3269faabaac44a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward.t27"}]},{"id":"0e5ec1ea4a0131131475a2a3bdbd7877da2e335d7c37fb23d2fa3709bc7e6bad","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/client.t27"}]},{"id":"0e7c3b187e4d0ea8c189c50aa2a09cc2c41c6dc77a595b63a0171e7227ca977a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/phi_rule_verification.t27"}]},{"id":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/verification/build_verify.t27"}]},{"id":"0f2dee7f0f339db9e0886aff03fe2bd45a8afcd58b09ca45379736f14a384a94","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_cli.t27"}]},{"id":"106dee6126f578973c0b1b47f58ea10a7ee94213d8515635272981c1dba6bc72","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_trace_tb.t27"}]},{"id":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/placement.t27"}]},{"id":"108c86be1cffdb12c2a8bf7aed0bbc9beb9488044e64ea8eb53e5648ba4603cc","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_approx_activation.t27"}]},{"id":"10f3a57949cd306778440ba53ea2a3e3172b103b4918dc5723b3e52402c8b450","sources":[{"repo":"ghashtag/t27","path":"specs/physics/formula_registry.t27"}]},{"id":"1124bf874a7c7e17b3b9071c22bc495df4577b04bc7a8342786f7ff7373ec01e","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_encoding.t27"}]},{"id":"115d7c0a183cd6796d30efbbb49c4f1d5f9088f546b41995c911aadb5a9100d5","sources":[{"repo":"ghashtag/t27","path":"specs/brain/cognitive_loop.t27"}]},{"id":"1170d7c70d5aecf0a7e7ce2431db31afd55ffa2914c2f59b055983e8078edaf8","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_cs_bridge.t27"}]},{"id":"11ac7c14718e579c25d261b34dcc597ce5b329311700ce49635031c766bfacbf","sources":[{"repo":"ghashtag/t27","path":"specs/physics/p2_brain_physics.t27"}]},{"id":"11fb3a5964fa96b10be4a51ab9f4e85376215de251847c77452e8bd711635086","sources":[{"repo":"ghashtag/t27","path":"examples/fpga/qmtech_minimal/design.t27"}]},{"id":"12009ea0e096921a249e0b661d30c42f03f8331d49595da078637b6a657d8029","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/fpga_emission.t27"}]},{"id":"121ed4a8e32889b770a8ab90b91b3bde9a7b193c66c845aac0130f7ab66c070d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_merkle.t27"}]},{"id":"12a54dd4072c5345ad55285f96dc9cf8a05a0b700c162380ca4ecb13c3bc71f2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/mha_block.t27"}]},{"id":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/axi4_tb.t27"}]},{"id":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/verilog_bench_harness.t27"}]},{"id":"1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_dashboard.t27"}]},{"id":"134e2faa0b97395159aeed11d68ef9158bbf0ed0ad51f5c5d68f878a14bd5d98","sources":[{"repo":"ghashtag/t27","path":"specs/math/zamolodchikov_e8.t27"}]},{"id":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","sources":[{"repo":"ghashtag/t27","path":"specs/math/sacred_physics.t27"}]},{"id":"139a9520333fcd83d201956606bfd34d888141e74416c820e3c9b53ae8f2bafc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/oracle_fidelity_map.t27"}]},{"id":"13c4050db1a7cd0c322b0bb87a04fac0ebb9899e607a0e06ae19f14a334a6f52","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/io.t27"}]},{"id":"13eea0478571c3e79f3cb8e8796d92342967e70b390bb9022d1af2c88e3972ab","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/memory.t27"}]},{"id":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf128.t27"}]},{"id":"15258e2af052da76d9f43c032e3d06f991af88f4b1c20e328b86610357f89155","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri_to_t27_converter.t27"}]},{"id":"157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_queue.t27"}]},{"id":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cache_management.t27"}]},{"id":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/posit16.t27"}]},{"id":"1666853e3ab9026fdff4b541a9d0654d0eb2a6c2cd6cb1062b577ff94415e6a4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/wide_rung_commutativity.t27"}]},{"id":"16dbd9fb40f949a3534c28495f0d68f83ddd460d22f52a89ea70ff33e4c1ee7b","sources":[{"repo":"ghashtag/t27","path":"specs/server/routes.t27"}]},{"id":"174ce53b6240346662c21e07ad294ed99e609910205a4b17ff6782ed7f6d1ccd","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_bitwise.t27"}]},{"id":"17501497f6580c8f2cc5304a94838fbae23c56b4336b3ab36a1d4f67e80e2f5a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_security.t27"}]},{"id":"1778325067543a3ddd5b236906ea2441d1a7b278bd5c9833aa72c55ba6599497","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/octree.t27"}]},{"id":"179da434e72eed1ef8d4afcff8a2d49d9141e6ac4fb20183ec8e35e14b50a3c7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/probability.t27"}]},{"id":"17af82800242d7f0c8de113d3fa990c8fdfb68be93305a676a6332c592c80478","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/statistics.t27"}]},{"id":"17c44e7a913a1347d4dcbdad38cc191e92a9d71aeba8ba9a7d21bc0f805b94fe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_cell.t27"}]},{"id":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hello.t27"}]},{"id":"18c2c553caf2ae99e899f0610766195d9cc8861526b89b519790a47af0c1bc54","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/reader.t27"}]},{"id":"18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/energy_aware_routing.t27"}]},{"id":"18cbfabd05c402e9330be096cd6cd3d6d17ad2ea2b6eb02456dc3c20a9f03814","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_gates.t27"}]},{"id":"18e4d3de481682bb89ef06cca09a13dab14b2e9e5b2faf1de33c0e402b19fe76","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json_writer.t27"}]},{"id":"18f95f985f5785c432b2a790d1ca5140533ba1b6259aeb5185979e1c6955e1b7","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/batchnorm_layer.t27"}]},{"id":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/governance_agent.t27"}]},{"id":"1954284a2f9b5b29dff46df7365664c2337d70054c222bb69019dffeb8631f98","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/lane_l_precheck.t27"}]},{"id":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_profiler.t27"}]},{"id":"199c99d3475931ee92c79ba1c0fa5c380eacacf78d7a1dcdae2e0c4141496b0b","sources":[{"repo":"ghashtag/t27","path":"specs/pins/parser.t27"}]},{"id":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/validation.t27"}]},{"id":"19b5ab5a4430be22ca924c05a3bb6928960a3b3ef38b802a6e4a4bd752b2ad05","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/attention.t27"}]},{"id":"1a28ba338938a246485db6125f65700b5d2e7403b091f7a5553b1d63bf6d0bb2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/radix_sort.t27"}]},{"id":"1a85a9dca026c580cc5c892fb15f566c34f56077b1137b3aa84ffbbf8976f492","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf16_to_fp16.t27"}]},{"id":"1aece14713159e5b0d3b6447529a3da6672a0ae57cff3ec0c4a4af021188fa31","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base32.t27"}]},{"id":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/quarantine_manager.t27"}]},{"id":"1c1a30bcdc55e6b2f8ad3eda8d0107f0109588bfa32eed9a16dddd8b454cdde0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/mlp_forward.t27"}]},{"id":"1c332b11b5cc758ef52d78c8517722fe3a7f757a8583679c2859f42aea529c97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/account_identity.t27"}]},{"id":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf16.t27"}]},{"id":"1cce47bfd33a00b3f877eac16723284a124ef0036f1012d5cb5d60bc90613915","sources":[{"repo":"ghashtag/t27","path":"specs/neural/forward_pass.t27"}]},{"id":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/m3_multihop.t27"}]},{"id":"1d143c79c4f83509d679fbcdf85113343f7ca096320f96429c186ba42b06412e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/pattern.t27"}]},{"id":"1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_coding.t27"}]},{"id":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","sources":[{"repo":"ghashtag/t27","path":"specs/provider/adapters.t27"}]},{"id":"1d810343f5e26d852c7ebd931bba310d28129b26915bf4a6ec71c066d1199e1c","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/gf16_bfloat16_nmse.t27"}]},{"id":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf12.t27"}]},{"id":"1eb3a181da111913289f6593f867fb6abc27070c70544e939e114d7ac5dfeaec","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/quadtree.t27"}]},{"id":"1ec9b1d68d6e7223280e904ec1472c036b12222fb7dab9b11f049c8b98ffc62d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/tree.t27"}]},{"id":"1f0556123d443b825058cbf6da7604aa6acebd0e0be70b0ebb270c2a22f4c5c1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/arrow_time.t27"}]},{"id":"1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/timing_closure.t27"}]},{"id":"1f58e539bacb2363a82c13b34cbf3c84bade8790f94041dd13cbb01949f5a0c0","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward_network.t27"}]},{"id":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/avs_controller_48.t27"}]},{"id":"1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/area_optimization.t27"}]},{"id":"1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/congestion_control.t27"}]},{"id":"1fe501e74db1912e57663fd489c9c1e004902d23cd4b1efe3fba43bc9f62bc9f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/twr_timestamp.t27"}]},{"id":"200348b47b5ced0087818255bde50e7bac8c0e479fef9f399fcc685e09f0cc34","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/vsa/ops.t27"}]},{"id":"20cddd29275d167e40e4a8f6194bf3217524e63de3616a9e1db28bb37ccf0b1f","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/random.t27"}]},{"id":"20e12b46c7f71fa6e8ea4d6338b944a42c95b37123debf8fc73aa36e2ed2e071","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/witness_mechanism_audit.t27"}]},{"id":"20f2cd6b26d6afa9b859903f32e87729ea9da7555b83d423e06b8dd57864e6dd","sources":[{"repo":"ghashtag/t27","path":"specs/nn/phi_rope.t27"}]},{"id":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/avs_controller_96.t27"}]},{"id":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","sources":[{"repo":"ghashtag/t27","path":"specs/server/http.t27"}]},{"id":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/phi_ratio.t27"}]},{"id":"21484c1e4832c65088a8b16411adcd3cee75140dd0e98c49beb09f13acbf10dd","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/06_structs_enums_switch.t27"}]},{"id":"2156697cc205f72ae4b52a06c19f439082ba597fe9dcba2c38c930bbe7281959","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/eternal_monitor.t27"}]},{"id":"2181d50c78b9ffb9c31710dbabf02bf6608fb638f129f9f1492f7d64316e4a52","sources":[{"repo":"ghashtag/t27","path":"specs/memory/formula_embed.t27"}]},{"id":"2246bd2af584f9e2c3b1b8ade8c1032ef03aed4b1cbb46256a1c3af100be63e6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_sub.t27"}]},{"id":"22f85a9f634c0be06947237206a555589d0cd251507bdfa7933593c8f9abb51a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/merge_sort.t27"}]},{"id":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_framework.t27"}]},{"id":"23e7da18cd8aeeb451b9608ef535c4e6d6795fd61a498dff72cd64af75e844d9","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_nn.t27"}]},{"id":"2416eaf9b2f2d540b48a31f6006c594dac887d48f5f3d83faa7362c63466185b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/readme_index_divergence.t27"}]},{"id":"24514db009440e8309a739afbbf9360fea66059fdee08a09eb0f87ad0d0dcf77","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/queen/lotus.t27"}]},{"id":"254048f421bfdd4950c606621dde53e6e7b157b8f22c6f105fb4cd16e3572132","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf64.t27"}]},{"id":"25cdccd102bc427d00d9256fb1a8ede95a2f204de4c2178c2c83998c1c37c3ef","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/related_work_measured.t27"}]},{"id":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_decision_gate.t27"}]},{"id":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/discovery.t27"}]},{"id":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_orchestrator.t27"}]},{"id":"27645eb752b97b7c214933e7630656b62dc6d2fe024bb6ef3bbe7cd50392cbb6","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_main.t27"}]},{"id":"27a8513429971feaa0dc7ec9f186464b8c45ff756ad8c3ea7dddc06f53361dca","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bundle2.t27"}]},{"id":"27ce13836c16829e193d7d2f67fec01e89355285326a3ae356e6286732cec4a4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_activation.t27"}]},{"id":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf32.t27"}]},{"id":"286565825bcb25ec0c02233431ad90a5ce8ddfad30cf731df653bd1499208abd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/knuth_morris_pratt.t27"}]},{"id":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/etx.t27"}]},{"id":"28ee4c6e2fb0f36392290331126c1c6c676ca970e4ac5053ca14c6fea743653a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/suffix_array.t27"}]},{"id":"2906d08dfadc55f37621e8e83a6f6ed4ee79105f826043582bbc3523c2b7ea88","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/server.t27"}]},{"id":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_wire.t27"}]},{"id":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/local_processing.t27"}]},{"id":"299b19c47e8161d2318839d18418d581f18fde1d2373650067713805d07dc61a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fpga_synthesis_report.t27"}]},{"id":"29d997ada23e0a8aac40eced1499f42b697353ff8747db8b0d9a87ba5159b783","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf32_to_fp32.t27"}]},{"id":"2a263b75b4f49ba65564d52f7697195904806ffda509bdf7734719cd03732c7f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/parser.t27"}]},{"id":"2a97610929c63610ed4580f07c5219bbd9d3a3070751ccb5e13765a97a157efe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attention.t27"}]},{"id":"2acac9ea1af4c8fa8f1df4079f308d3062db60d037e73fb0f8e931d06715ff53","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/interval.t27"}]},{"id":"2ad84e8eab783d71c61b110fa801823bbebc09638be1357944531dd5aac4b883","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/residual_connection.t27"}]},{"id":"2af701e2a73721652a80378a3774bf6bdf73b3413906bcde7bd6014398f356ff","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/prims_mst.t27"}]},{"id":"2b419fc69d1704d6bcd88d071fcb8f278a5d4d910dd89d541756adc261e995bb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/http.t27"}]},{"id":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_trace.t27"}]},{"id":"2b4c28dfcddbd8861d6e47080b8dab052a46a065a4e5ff773523abd15afa6fbc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/client.t27"}]},{"id":"2b84c9b64ceca23a2795f512e21e12510357056268de9b8e1cd013ca89682fa1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/terminal.t27"}]},{"id":"2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/clock_domain.t27"}]},{"id":"2bda99182d7c0c06e381bf777dd46df1ff51c98688439cd700498ee1cbf5f192","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/graph_drift_detection.t27"}]},{"id":"2c293bdfba35cb5a347420b69e15cbc1f14300e6990ba46f9e4cb860b1d3b0e4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_payout.t27"}]},{"id":"2c8ebd950d7cc378ecde0cdbc1086aa4fea654059f21939ff4d11911f6eee458","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/writer.t27"}]},{"id":"2d603f5515afaf26e741ea96ddc89c131a83ab75694988fd7bd7e795c6933176","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/memory_tb.t27"}]},{"id":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/tri_net_formats.t27"}]},{"id":"2e87c761814045a402179280a8406e4cffaec0795497a4a7e042d973bf2660f0","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/parser.t27"}]},{"id":"2eade0fba9b90159413821a1a7dc079d197b1fd7d849c6825e4cfee8feda6d51","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/mac_tb.t27"}]},{"id":"2f8658ded229cb7cce70a146e20d08c970b7aa97a702665abe125b08e249bb59","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_fec.t27"}]},{"id":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_trace_player.t27"}]},{"id":"2fe04165a0c924d887cad57ed1d7349fb22e5957fab44f48e33dfc2dd955e589","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/cross_entropy_loss.t27"}]},{"id":"303799b32c51f84cea3ebabfa4e586d88054a585b28c70f2f5cbd3c58b876cdd","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/conv2d_layer.t27"}]},{"id":"304dbefaab41ae6360d9007359ccd36bab0e9ef78e8cc2e00e7ab0b41269b0f6","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf32.t27"}]},{"id":"3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/orphan_detection.t27"}]},{"id":"30907b42896f20f54745d8066fc6f48dbc090a2943ca9314c5c4daa0f50e5739","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/05_widths_and_casts.t27"}]},{"id":"31fc2cc4511db11be5ce16f41f881ed462911238ee18ba0fbe5f8f25dd0fbfd4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_reputation.t27"}]},{"id":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/nf4.t27"}]},{"id":"3372fcbc6f9c6838d6e21ed8900c9e3fe00de2a9b57386380e7eaa13beefd052","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/session_timeout.t27"}]},{"id":"33860937a826bbbc5b95b88015242182732ad3577456d9c4b34fc87834f64c77","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/color.t27"}]},{"id":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hardware_validation.t27"}]},{"id":"3518d3bee197a739317d20af4d64f64893378b2dbf1b2ad4381d935c7d29e443","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/version.t27"}]},{"id":"3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/packet_queue.t27"}]},{"id":"368ed0cd32ff2c2bb4e78f8bae0352656d3ebbe810ab85e54585e0728c0701be","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_encoding.t27"}]},{"id":"37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/bandwidth_allocator.t27"}]},{"id":"379740eea2f1d1c60693f69cd89d57566017db7dcbe77484f8d2f54c97cb40b8","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/uart_tb.t27"}]},{"id":"37aaa0322da86d9674dfd2f7ee235c14c68420cd43da356a04384f5dfccc2f20","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/fp8_e5m2.t27"}]},{"id":"37e73defdf4c967e2fb780aa954119e6fd90a73477ba9b410794ba99de228c47","sources":[{"repo":"ghashtag/t27","path":"specs/math/gf_competitive.t27"}]},{"id":"380f324e20c22b5441bf9cf413249c1c92b09d33507164e62b0e2fe9d69b7b4c","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sequence_hdc.t27"}]},{"id":"3873165f553501deacfb4814a0b56dede2f4158fed86e9002f3efe09782a946b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/circular_buffer.t27"}]},{"id":"389411f1e59621fb478846a79147aa6f5ec3cd01877c907316185aa573baa48d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/config.t27"}]},{"id":"38b259db5ed7eaed38a1dee912fb52ecfb433da3e42832cdd2e216d8acc2dc61","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf8.t27"}]},{"id":"38e5a94cf9cac4f8e1638e6c60603d0334668763669588a0014d4a8cc544b59c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/gf16_format.t27"}]},{"id":"3921a08ace7c2c8bf4bb03d5514558472ea37750935a8605b8d551b04c18d4cd","sources":[{"repo":"ghashtag/t27","path":"specs/cloud/railway_deploy.t27"}]},{"id":"39abe3103d2fdb502651ea68ebe21f8a792ad7c108b6b30709920604a457999c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/phi_ratio.t27"}]},{"id":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","sources":[{"repo":"ghashtag/t27","path":"specs/base/ops.t27"}]},{"id":"3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/power_monitoring.t27"}]},{"id":"3a86f39a7c8d0462b028a88aa5b2e9c7e7ed151c0404e4efef134c64654dd4b0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_universe.t27"}]},{"id":"3b0d082b74f6a0ba7039d726899c4a02710622f702909956f8bc2615b6a45b8a","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/lut_npu_81_entry.t27"}]},{"id":"3b23e0d8188ef1fbdc658829a9204f6aa42bd6e111f07fe84c2632094870e95d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/context.t27"}]},{"id":"3b247694659c1fe7f9860804f7a960b8e8ca357dca00dafa651527b01487a667","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/int8.t27"}]},{"id":"3b4221a4c3733e8cd4e11c2e22b767a42d515d16c9c0ac141632dbcfe5118d28","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/avgpool2d_layer.t27"}]},{"id":"3b918511e604264fc966545ca5dbb3deabdf643de21d2cdc651b4c278fbafe51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/types.t27"}]},{"id":"3ba9d974647c1fb5d985982db3c7e266834d0736d32ed4f4f50aa7af95d59df7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/msgpack.t27"}]},{"id":"3bd172924f6a3774be1a071fa0082d67c0954419b6dd07dde1641a4f57f626ea","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/flatten_layer.t27"}]},{"id":"3c2935feadf9f5ce5f588cc57191728b5f5e74d508bd112c62ab84bab5988fda","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/goldenfloat_family.t27"}]},{"id":"3c7877343745c5377eba7ca7c8d9f9b6f44ced0b8a99a1c466f6b54dd1af969e","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/lexer.t27"}]},{"id":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_routing.t27"}]},{"id":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_dashboard.t27"}]},{"id":"3e4c2dba999625c51bdf626e8d2924d2a2b488ede546748d30d2ad0007becd38","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/linked_list.t27"}]},{"id":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_routing.t27"}]},{"id":"3f327ef3f375cf0914564095f3632fadf25550c619fe0244c6432b5fcd51eefc","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/avs_reconf.t27"}]},{"id":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/gf16_accel_tb.t27"}]},{"id":"3f93d73343dd60501a50fc18964c77ca5e21c7aa9a2f18773102b87e64a4b68c","sources":[{"repo":"ghashtag/t27","path":"tests/comprehensive_suite.t27"}]},{"id":"3f981e43e3fb34c7e4b90c54abbda13c3faae9c4c65bfd1fe5afa88f7c60cbc2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/maxpool2d_layer.t27"}]},{"id":"3fafd9ae6b4b9d4b0907a4335ae37b99a2e320927ee2481fc851323a5ec436b6","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/bridge.t27"}]},{"id":"3fb36280bdd9167f00769156462b674cec1d67d08eeb17255fa00ce18e41ad7c","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_actor.t27"}]},{"id":"40030c89eba2881aed876382471cee3537d2e73a3cdfc72de27e24a0f52aeb07","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/zig/codegen.t27"}]},{"id":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/youtube_transcript.t27"}]},{"id":"4018d7703d08862d4f087eb076fda4fa14c54cc8767c98aaa493a70fb6eb1719","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph.t27"}]},{"id":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_universal_attractor.t27"}]},{"id":"402ebb2274036fffb23ef31ddd4a81532a3ae5db2bc2925851bfe78276923a33","sources":[{"repo":"ghashtag/t27","path":"specs/provider/stream.t27"}]},{"id":"40e271225fff7d99d8fe235c2347210c228f6c558af910e84bbbe85ef0312d94","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hw_types.t27"}]},{"id":"418ffcada23abcecda361681156ca90ece34477981923d60562033f87fee7923","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/similarity_search.t27"}]},{"id":"422a79e6015d8959e474b78e93f8fb16e1db2e0b2d8a885bfdab1aafe2347175","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_slash.t27"}]},{"id":"4231d25e32ae17ce4b5009632e3727e6d269f5c98317f8f7cb826973cc160c3a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/set.t27"}]},{"id":"425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/failure_predictor.t27"}]},{"id":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_settle.t27"}]},{"id":"42f1b5afac3cc86447f1f69545a06a2ac80d30c7bb65c5f6d706d28476a67883","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/encoder_block.t27"}]},{"id":"4404a83cbef8e3f576d4963038f47b72505629f55bf96567e21e6e2a4e71ff41","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bridge.t27"}]},{"id":"4418ff9d9f6577e80ca3362748d220a2a0ec2eb6669802fa8d85689564a88bc7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/counting_sort.t27"}]},{"id":"4454f6161b15302cd298c417dfcade3dd0a0c42e6734f89eef26a1b5eda337e9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_retry.t27"}]},{"id":"445b536ffbdf40c4580d3980157b45ec97fae43c0cceec2f177d46a91a0682bd","sources":[{"repo":"ghashtag/t27","path":"specs/math/radix_economy.t27"}]},{"id":"4468de25e4e94f883c3cd64306eb5cff4e69992728e7211b73cacfe2c83bc3c8","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_arithmetic.t27"}]},{"id":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_framework.t27"}]},{"id":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf8.t27"}]},{"id":"45bb6f748cc01f814b14d1c65588766a2515daf79df2382b785a0c8c2ba2a211","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/fifo_tb.t27"}]},{"id":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","sources":[{"repo":"ghashtag/t27","path":"specs/queen/brain_summaries.t27"}]},{"id":"45eceaaa65e7ddb52ada5b5ba657ad0c6139d715f236ce25c4fbdd7f84e6780c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ledger.t27"}]},{"id":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sdk.t27"}]},{"id":"465c3b449e4a75c27782a31f490768e1296cc3e44c47e2106ed83f5aacd5e2af","sources":[{"repo":"ghashtag/t27","path":"specs/nn/sacred_attention.t27"}]},{"id":"467a6408508e8ea78e10bb34aec16e497b66a70c41f54c0fc5a3db9ae50c0a06","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/json.t27"}]},{"id":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/trust_manager.t27"}]},{"id":"473c5317d5dd386d0310b9f0762f2f2ac5febdb8fc69295ac4ce7d4597ed905e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/sha256.t27"}]},{"id":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/conformance.t27"}]},{"id":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_tick.t27"}]},{"id":"47ff992484aab2a06b5e58c1487fffee481eac77c19fe81827b1e1572f5aee59","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/e2e_test.t27"}]},{"id":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gi1_analysis.t27"}]},{"id":"48c6a87fe3c885ead9caad7013425c2f4e87ba38dd6adbab78cc6b5c5d6864d8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adagrad.t27"}]},{"id":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/diagnostics.t27"}]},{"id":"4991d83ed59365348efc506f4907cceb29a04742b9ad7f610b6b754c184d55b4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/boards/ax7203_full.t27"}]},{"id":"49fd9c0e4793f2c69ac2ae1c4ff80d1cd858a1404398a6b36a28e33ef8f35389","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/kl_divergence.t27"}]},{"id":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","sources":[{"repo":"ghashtag/t27","path":"specs/github/auth.t27"}]},{"id":"4a45d372cba73c1dabe74e1bf33ff88abd82d4b528312bd2cd1ec5aa12561196","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/kd_tree.t27"}]},{"id":"4a5c7b3f48417ef23e4bd5a38515f932c5cdb7a452529ae2fc2ab134819a5d6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/spi.t27"}]},{"id":"4a85553e544bba9b8b881d36db90ca3dc88d4ef17dfa856b31c5fac5569c5737","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/tanh_activation.t27"}]},{"id":"4b04e69c42d9f9d99b2292a548567025a39a3ce8fb5ec76e78059a8c5464eb60","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_critic.t27"}]},{"id":"4b34351e1bafe5e6cc26db176be01be8db82425a9b4200d04ff2beaeed78df9b","sources":[{"repo":"ghashtag/t27","path":"specs/api/c_api_contract.t27"}]},{"id":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/lexer.t27"}]},{"id":"4c2adfd3a8ba133e1f23dcb19b4553f5845a919bf7915555dbe27655b1598d8c","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/codegen.t27"}]},{"id":"4c42cd77cd3247972f0787ec81f7578f4b770de4d6977ddcbcc8e543101bfcf4","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async_stream.t27"}]},{"id":"4c452893fa3e0f4141cdf198415fdb6fb5b611218193e65398ecc2386e69d615","sources":[{"repo":"ghashtag/t27","path":"specs/brain/brain.t27"}]},{"id":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/schema.t27"}]},{"id":"4c58b9b71243fe4b1158a8e447bb9102bf2dc8392c4972321a39df491ed3653e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/rtree.t27"}]},{"id":"4d62843989a3e55bc2b52630e79c32f09d444359ef2429da1fc529663910c953","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_node_sim.t27"}]},{"id":"4dc4a3d792be4571b3ebb8e85dfcda02726d2908fc4552e05bea89c6f483ef8d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/softmax.t27"}]},{"id":"4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","sources":[{"repo":"ghashtag/t27","path":"specs/github/prs.t27"}]},{"id":"4ec184e2b90d849d42a837ef1be0c6f19e55e21f94793b6dd288a84dd0a89877","sources":[{"repo":"ghashtag/t27","path":"specs/file/operations.t27"}]},{"id":"4eca929d7822c55feff4cbd456c88688c352fbec4ecfc7e4755983b08ae660a5","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/spi_tb.t27"}]},{"id":"4f3c63813dd85889325a7567f829572f66ddd9201e19cd60ed6beaefe154beac","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/random.t27"}]},{"id":"4f5f9b43b9ec8b0be6593775af54ff6721d169e5e2c33898a1443dcbdfe4d85d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_optimistic.t27"}]},{"id":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/d2d_routing.t27"}]},{"id":"4fa7ccadd44d000694a91d69bfeaef6080397ad16540b682430c2f813303db56","sources":[{"repo":"ghashtag/t27","path":"specs/api/tri_net_api.t27"}]},{"id":"5034fc695f51fcd14afd6ec3ce0801fa353f8d491bcdff6d473514d5e5264bbe","sources":[{"repo":"ghashtag/t27","path":"specs/hslm/forward_pass.t27"}]},{"id":"50841bd7da9e09a99ee118073ab8e1a6b544a9d1472f96b938887fcae4dead62","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/language.t27"}]},{"id":"50b2fe09337e3f407869407d2f3542c7516ec85483798d71ce05a653f05d57d7","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/ternary_vs_binary.t27"}]},{"id":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/formats.t27"}]},{"id":"50d838b5e5138ffeb2875b3a6c831f34ba6a2953a3086db6752b1a6b490213ba","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/ternary_isa_tb.t27"}]},{"id":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sources":[{"repo":"ghashtag/t27","path":"specs/memory/semantic_search.t27"}]},{"id":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/bridge.t27"}]},{"id":"515bffd0d52fc79669620e18b71801e0b05c98ead9e8c59729448cf98d9dabbc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/sort.t27"}]},{"id":"5182f6fa681faab5e767959d49e8be18f2305b6b9bb41130dacbf9974da4eef4","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/property_test_template.t27"}]},{"id":"5189c2771d5edfddea6da5b8d20ee348fd44b3bd83e034188081e4a79f64fd40","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/frame_buffer.t27"}]},{"id":"5195f89bfc0b1f3ed434ef6371ba940a629ba01eee7a3746f6f14ec0cde9a141","sources":[{"repo":"ghashtag/t27","path":"specs/physics/formula_discovery.t27"}]},{"id":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_monitoring.t27"}]},{"id":"51eb7e2902d6348c94a6cfdadcc344287e232c6ff46bcb74c509bbb32fc98aeb","sources":[{"repo":"ghashtag/t27","path":"specs/storage/migrate.t27"}]},{"id":"524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timing_closure.t27"}]},{"id":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/stdlib.t27"}]},{"id":"528e169ef24245d00dac40a60e4327ac44d818f4fdab488818cbf3ac15597dbd","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_constants.t27"}]},{"id":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/dft.t27"}]},{"id":"5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_sha256.t27"}]},{"id":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","sources":[{"repo":"ghashtag/t27","path":"specs/git/operations.t27"}]},{"id":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","sources":[{"repo":"ghashtag/t27","path":"specs/base/debounce.t27"}]},{"id":"5469641560c8dc73d41597e61dfd5764e82499c451e3bc22ed9e8ddaec2f77f6","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/drowsy_ret.t27"}]},{"id":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sources":[{"repo":"ghashtag/trinity","path":"trinity/t27/specs/numeric/phi_ratio.t27"}]},{"id":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","sources":[{"repo":"ghashtag/t27","path":"specs/sync/schema.t27"}]},{"id":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/assembler.t27"}]},{"id":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_metrics.t27"}]},{"id":"56f823f5a276ae2ec4740de0058cc1ec3071884ff89ed433dd20c4714c99997e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/cts_tb.t27"}]},{"id":"572787c2cd5278240bc0c715a4051393d448a14d8524c74abf04ea6183ac3ff9","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/runtime.t27"}]},{"id":"573be7de419ab7d4c873367a65bd56f3da10c48b445cb4a6a5e046972b00a392","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitvector.t27"}]},{"id":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sources":[{"repo":"ghashtag/t27","path":"specs/queen/task_analysis.t27"}]},{"id":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/internet_call.t27"}]},{"id":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf24.t27"}]},{"id":"57ece309a4353fd534a182df50e003dd406d886579600342e183453955427bc9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/result.t27"}]},{"id":"57f187f5bec5e6b70f931e78ac5f199afa1bd38a6f3b44e647e45cbf6b07f270","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/batch_runner.t27"}]},{"id":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/memory.t27"}]},{"id":"589c71bf222dccf9b301401fad6dc1c0ef62df01b74011badaf3ff5b8d5cc05a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/isa/registers.t27"}]},{"id":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power.t27"}]},{"id":"58d11c0dbcaf4696af240a612c6555640d0d5b70bbe1781eb8506a393b0e0276","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/experience_hooks.t27"}]},{"id":"58ea0bee6120e2dd493c7cb9153ae2561b2fa46aa565029d743d3193dae18814","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hmac.t27"}]},{"id":"58edcf797efc944558c848fdcc432d92d901d02767896b297eb2e080136d1d76","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf24.t27"}]},{"id":"58fee3a32e3125d1d89aaa783abe63023ee0c6c94a4a6cabe8ce585867014c40","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agents.t27"}]},{"id":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_validator.t27"}]},{"id":"596d8c5a43c433eebb1c5df08d34b92e03c9697a4ac2f9343c1457246028593b","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/c/codegen.t27"}]},{"id":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/assembler_tb.t27"}]},{"id":"5a0622b79ba67a331b9c0f33c5d975f5070f01f8ec6aa50fdfcce8109e1e9ad6","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_entropy.t27"}]},{"id":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_framework.t27"}]},{"id":"5a687cc8950853b70473bc1bc1ade24e033e94ad14be342803202dc51c2e55e1","sources":[{"repo":"ghashtag/t27","path":"specs/server/project.t27"}]},{"id":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/group_chat.t27"}]},{"id":"5bba9ceaa24af8afd4c4fa0557c580a568c26d4be8bfe89645c9852cb59f3b2f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/bezier.t27"}]},{"id":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/runner.t27"}]},{"id":"5d89c838e69b6a33d6a945ef2bc3a7d02c00264ee389f1dc04f041c2f3c92e01","sources":[{"repo":"ghashtag/t27","path":"specs/math/constants.t27"}]},{"id":"5da0cd1f49205e7080077d474642e34effa56a964c65882dbe82bc72b61473de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/fpga/mac.t27"}]},{"id":"5dabbb6bfbcf210aea527ec2c66938f2e251ce054061d1172f98a44f09d9635b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tf3.t27"}]},{"id":"5df21156f6f33ef7ae6c3270097a3636bbf5beda07b9cb8909ebbd1d3c4b755b","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/04_control_flow.t27"}]},{"id":"5f88d4d494d923d3ec2d7da418e50513a94ee03888176cefad4f10a8f05842c9","sources":[{"repo":"ghashtag/t27","path":"specs/storage/kv.t27"}]},{"id":"5f997ba4055b8af78726efd65f8b96858c47eeda5520ac82c8280183050215a7","sources":[{"repo":"ghashtag/t27","path":"specs/shell/process.t27"}]},{"id":"5fdec7f0438860173e0475b5e8912e5045a7ab37639ae21ea6f6329830989c02","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/fp8_e4m3.t27"}]},{"id":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/gf16_accel.t27"}]},{"id":"600926a156c1d8cea584d967fe1980a29dcf7bb82b12268e72e47dc70ad29567","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/dijkstra.t27"}]},{"id":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf4.t27"}]},{"id":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/packed_vsa.t27"}]},{"id":"60f9bd3929b53410b8ecc6f586991f33731ba60aa9fb1a2228b062e3ef550a16","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power_analysis.t27"}]},{"id":"6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/load_predictor.t27"}]},{"id":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","sources":[{"repo":"ghashtag/t27","path":"specs/graph/knowledge_graph.t27"}]},{"id":"61bee61eb1becd2304b09a5b6c5e9d0273286e3d3986fe9542c8d5f9dd3d270a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru.t27"}]},{"id":"61c1edda964778e108dde6336fc5e56af6f99cda5bb8549db12833e6d399de2e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crypto_frame.t27"}]},{"id":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/compression_engine.t27"}]},{"id":"621b8342483e5311f3132a0301b536b5af3f6825b2764bb5a89b3507c59c44a0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/aho_corasick.t27"}]},{"id":"622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_benchmarks.t27"}]},{"id":"627a4a71ee5506649082cb4e58f086a9419c4bbe6fe9d6dd6fe18c8dcf10a51f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/sigmoid_activation.t27"}]},{"id":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/corona_oracle.t27"}]},{"id":"6300dc270115322725d4e00244e601fe557f70f71225dc72949205213033e573","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/namespace.t27"}]},{"id":"6336dabb5211c7b3806374f72fbd1f667932147709ff1fa01ff7180d6a6c2198","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/reed_solomon.t27"}]},{"id":"63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/load_predictor.t27"}]},{"id":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/insertion_sort.t27"}]},{"id":"638f8c5539801b533589411377798f5a62204a19dedb71d2853cde55d12b9ad4","sources":[{"repo":"ghashtag/t27","path":"specs/automation/wrapup-auto.t27"}]},{"id":"64142c17ce8d43e97ce64a2438f7deeb45a64f2a35afeb61b6a22b621e47a92c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/net.t27"}]},{"id":"64341742c373e64a2823f6647d0f3898e0a26f6ff9197e3fd3092436f5912cce","sources":[{"repo":"ghashtag/t27","path":"specs/api/sdk_contract.t27"}]},{"id":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/codegen.t27"}]},{"id":"64578258046cf1d759471cbceaa5eda489ffa82165d3b0bc612265372ea316d0","sources":[{"repo":"ghashtag/t27","path":"specs/ar/restraint.t27"}]},{"id":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/linker.t27"}]},{"id":"64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","sources":[{"repo":"ghashtag/t27","path":"specs/github/issues.t27"}]},{"id":"6532bcb37b12d57aa03d22717557fa16e727b9c4e6389c3afdd829bc74a23ab0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_safety.t27"}]},{"id":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/self_healing.t27"}]},{"id":"65a1be346037fe16c5c3e1c488a0e7133d3ed70798908887efad7301a63a6229","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_single.t27"}]},{"id":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/anomaly_detector.t27"}]},{"id":"65ce4c1696f3a7db3dbc95d4986c5a8f8ce7f516fa4d605fae6c20fe1622327c","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/superconductivity.t27"}]},{"id":"661937af30a71e6136f8c9fe690b7ed12eb6f9c17ba55767a80308624cddf419","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/ml_dtypes_crossval.t27"}]},{"id":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_routing.t27"}]},{"id":"669f21eabeba9622b34f49e9a1ab625a25e9cd5cecdd13db587766154719b3bb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async.t27"}]},{"id":"677da3e87cc72897a8bd881df8617b1346fb0c578ec5ef3e74c666f4faae713b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/filesystem.t27"}]},{"id":"6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/auto_config.t27"}]},{"id":"6887bc7924111e9e9173eabe940a7b27bdd93f1f76723dc8394cce88233868a2","sources":[{"repo":"ghashtag/t27","path":"specs/account/schema.t27"}]},{"id":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/area_optimization.t27"}]},{"id":"68bee859c3ffd508a841df8048fdde0932245af7a0dfe7c3596266cd24726dbe","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/hslm.t27"}]},{"id":"6926ef2f5ef68b7a540eae2c7bffc4efd4928bcf00686806f549664b92b8afd7","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/benchmarks.t27"}]},{"id":"69729efabc127aefce11e671dcb1abc5029ecd942d0670615a9ab41e73b76fb3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/e2e_demo.t27"}]},{"id":"69dcd472eba111cccdfec32dcdd34044c10f567927a9c6f925ce33e962b9cd6e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/tim_sort.t27"}]},{"id":"69dfde195e9294cbe1a7dec908d04fb3c8f2de72498d4df8f400f48eb6b2289b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/simulator_tb.t27"}]},{"id":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cross_layer_optimizer.t27"}]},{"id":"6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_coding.t27"}]},{"id":"6bcf3942f1f175d1c3708484d4cb216a6e6ba7492a6ebf7e6320887c7d13a42b","sources":[{"repo":"ghashtag/t27","path":"specs/base/ring_32.t27"}]},{"id":"6bdb4f8974ba389d990a11b694eb15ced344591f6c3de3d24bbf23f85ea0c964","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/sparse_skip.t27"}]},{"id":"6c5018d7c8890ad61d9cea8e4eeb0ad73895bada2a4aed077c9efd0a74551e65","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/core.t27"}]},{"id":"6c727d13e4889735bc80ade95073f07d6efad2c15bf20908645292b10c6e862a","sources":[{"repo":"ghashtag/t27","path":"specs/physics/sacred_verification.t27"}]},{"id":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_simulator.t27"}]},{"id":"6f56957ddaaf4b356a9d67840a7633fb648da73c30f1d4c53c7c5173dfa925e8","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/ops.t27"}]},{"id":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/axi4.t27"}]},{"id":"6ffa742ec615265d04536053c181c131d6a2f56c37c556c564f804bc80a31798","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow.t27"}]},{"id":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_routing.t27"}]},{"id":"703eb5d6500fef5c34aaecbea8ab0b1c2010aa533f0d9a968640472d626928de","sources":[{"repo":"ghashtag/t27","path":"specs/shell/environment.t27"}]},{"id":"703f02d41e57b24b69b0cd6317b335cd2078cb7d3591741ae804803d84a50e0b","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/python_api.t27"}]},{"id":"7051f62a04ddbdbdb0160cab4dbcf39e708ff65bb88b06479ae1479d39a0a4c0","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_conformance_compare_tb.t27"}]},{"id":"70b4085095302fcf8e667ebed2e3e93c077aa86195ea27a887113d5b3b2c0a1d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_bfs.t27"}]},{"id":"70bcc025a81318ef01a6aa390f152b48330c5ed922a4763664c2ecc503a31c8b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/matrix.t27"}]},{"id":"70caa43e010103f43db3418afc193c98c460dd43e094a61120c633edea231391","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_clip_loss.t27"}]},{"id":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","sources":[{"repo":"ghashtag/t27","path":"specs/jit/jit.t27"}]},{"id":"7156843614c320375957c8e17cb3af8e70ba2fa9a8d6e10ebd961b6a91b39ae6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/crypto.t27"}]},{"id":"721567e5cac0cb8064c09e022bbb3b73e87d5d512576283e9a837e0859e0707f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/mse_loss.t27"}]},{"id":"72501df79dc2adb19c9b4c5515c42792f2dbdcb6ade527167238214ebc04ca3a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitmap.t27"}]},{"id":"725bb58e6c2423aa603f15fc52aeb856be9f60a4206293a938966cf11aa9814f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/stack.t27"}]},{"id":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","sources":[{"repo":"ghashtag/t27","path":"specs/config/migrate.t27"}]},{"id":"728844f72e63135d00838501707b599e7543c679da8b990138a0d194717d00ac","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack.t27"}]},{"id":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/sacred_physics.t27"}]},{"id":"72f1700e95d117bd611576e3b923d637854d6be969d4903616e368ccd1b8c237","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bigint.t27"}]},{"id":"7340bfb45e9f95ffc6a1582f488755545718cdf7c240a92b37f30a48591d3e73","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_writer.t27"}]},{"id":"73ff76bdd9389cea8203d82ed1262841928f177d3f7ea7224317980581b29edd","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/campaign_self_reproduction.t27"}]},{"id":"73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_scenarios.t27"}]},{"id":"7489fea274db7163ea593d3dfe4e7cb5cf8b65df4437bbc0ff6ee03fbe5c01ce","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/derived_packs_candidates.t27"}]},{"id":"748a19d26fa53cf98eb889e0f223855c49e88d6d7efa5a7ca3c68accc9768c0e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_gfvalid.t27"}]},{"id":"74c47290c2b18db036f4247d5934d5023351923765d7f27d10ab41af05badba9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/b_tree.t27"}]},{"id":"75057ee2ad3e822c422ce7e02fcbd28df64df4237be2983dc47a485982c08e3a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adamw.t27"}]},{"id":"75436c3008387808f7f8e4f65bd94adf669162e85a6caac70c9007eac588f49d","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/format_table_invariants.t27"}]},{"id":"7613974a2fe2ce834ef4997afff960de62d03b4deb791e5f867dbb6edcd648f1","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/nf4.t27"}]},{"id":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/zip.t27"}]},{"id":"76a39f4c7d0e78833ccaedd7533f74b68e8350453f0198b2c1cf370138a5419e","sources":[{"repo":"ghashtag/t27","path":"specs/server/mdns.t27"}]},{"id":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_tests.t27"}]},{"id":"76f4b79cfecc890ab7a7f7bcbe9564aa9d6ecde995aedb1de20315716844ca22","sources":[{"repo":"ghashtag/t27","path":"specs/bus/schema.t27"}]},{"id":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf4.t27"}]},{"id":"77994ef12abe99523526c9731a3fb05116385ee25b471f3dbe771fb45c14969c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/simulator.t27"}]},{"id":"78176a2c16de376d1c47bd45b8b29879bf705e5d16ff1275d88f4d7f82464132","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/ecc.t27"}]},{"id":"7819abe3d2e0f38ee824f1083c6150962290cfc1238445bcd6cfdd3a5d2ccec6","sources":[{"repo":"ghashtag/t27","path":"specs/physics/hslm_benchmark.t27"}]},{"id":"789bbb1afcb0ff7eaa3b941eec6a51786e7b5e9ac34615e2bae3b458bf4464b1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/boyer_moore.t27"}]},{"id":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/wire.t27"}]},{"id":"78f87720aa2c90a75eca2a830adfe664f96463911fd7ab425442f6558c6af663","sources":[{"repo":"ghashtag/t27","path":"specs/base/types.t27"}]},{"id":"78fb5c9300e99d054e736a1987e58b72a08481fbed4dec98bab56f0ca9c5f0ff","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/constants.t27"}]},{"id":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a.t27"}]},{"id":"79c4a7d5901cfb8c91c756ab52bf7f2b36bcee7d7cdae1dfbeb072057a34b733","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_parser.t27"}]},{"id":"7a880f998c16ce8290d35402588b2685ed7b538f288b847878d1120f66c57e60","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/monopoles.t27"}]},{"id":"7a96cffe0aaed3d11bd517bb7d234578912f19fb38788fbfdbe0ff428fa69de4","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/health.t27"}]},{"id":"7b0d45737fe557fd91cab1c2fa99092d032fe5032d8ea4ebd0a7370b3408ec2b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/html.t27"}]},{"id":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/meta_compile.t27"}]},{"id":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sources":[{"repo":"ghashtag/t27","path":"specs/boards/arty_a7.t27"}]},{"id":"7bba43f3ce59e8f19614856e91ac705b6fadd2cd3a145663b482daeb9a0b7120","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_retry.t27"}]},{"id":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_depin.t27"}]},{"id":"7cc94315c7dfd7453de9d1dcaba920d8ff4bd8c208f751f4861d046741ecbc80","sources":[{"repo":"ghashtag/t27","path":"specs/physics/zamolodchikov_4d_conjecture.t27"}]},{"id":"7cd10a5c5d22642ef412c68d9607954f194b4028219fbd66f5d6fca71f4a6851","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/help.t27"}]},{"id":"7d1bacd489455a84c26e596856c878f9d1acf040b8fc74fdadc6f3485f6c0ae6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/trie.t27"}]},{"id":"7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/energy_aware_routing.t27"}]},{"id":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/experiments.t27"}]},{"id":"7de9d8fe941d574b862a1724428a32e859938c864fa3748f3a14719ff0707388","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_statistics.t27"}]},{"id":"7df14a617131466fbf834034e9b0a5108b2f293d6162d8f9a0b204f5643cde0a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_bigint.t27"}]},{"id":"7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","sources":[{"repo":"ghashtag/t27","path":"specs/github/comments.t27"}]},{"id":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_full.t27"}]},{"id":"7ef232c76f3a3a5f3ab6eb9ed8046faa1fa7dd3085f4d6d3288f2bd538da3f60","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/sparsity.t27"}]},{"id":"7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_analytics.t27"}]},{"id":"7f884cb32c6f7d9514516b88822759463bf25c897086667ee32db3c879ba16b8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/attention_mechanism.t27"}]},{"id":"7fac93c96e724362777dc1f52a0cb589a6a73739d98722c0c602cbb98f772993","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/03_operators.t27"}]},{"id":"802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/router.t27"}]},{"id":"80966e05fa9420834513a68d667eb8752ac7360ac01d4ae1e2294a9de72b28f3","sources":[{"repo":"ghashtag/t27","path":"specs/brain/phi_timing.t27"}]},{"id":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/commands.t27"}]},{"id":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/router_tb.t27"}]},{"id":"80e970c2be2a313cfca43bc0bbb20397259952dd2d26af5b1359e1d26ea1a4b3","sources":[{"repo":"ghashtag/t27","path":"specs/ar/explainability.t27"}]},{"id":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/api_documenter.t27"}]},{"id":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","sources":[{"repo":"ghashtag/t27","path":"specs/git/status.t27"}]},{"id":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/modem_frame.t27"}]},{"id":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/topology_visualizer.t27"}]},{"id":"8307925dbc45b3ed584415d8bd9070bb7ec3587ed027bc0f724e5805fcc13f43","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/elu_activation.t27"}]},{"id":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/partition_tb.t27"}]},{"id":"83aa4fea931086c40ec0010442eeb70ec84787ab500f472c20652481b8db9b0d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/fs.t27"}]},{"id":"83bcf7b8bcf5e4c1191f1c163b2f060e9a35b2a1a9e3bb3cc5809dbee41c5b6b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/pathway/mlp.t27"}]},{"id":"83ce36c41a0e28ccfb5a1fec555366bafd6a4a2307bbd82ba498bdd2d8b4e174","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/queue.t27"}]},{"id":"83f6f63fc0251ec6be3cf85e1e4d8dbdc8a9a91a05a5674aa7a70b37914db052","sources":[{"repo":"ghashtag/t27","path":"specs/physics/e8_lqg_bridge.t27"}]},{"id":"8400075d826d25687c6e8b870036acfd8e2f433d8b8caa5462815acff4fb9c76","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/binary_crossentropy_loss.t27"}]},{"id":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/video_bridge.t27"}]},{"id":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/cts.t27"}]},{"id":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","sources":[{"repo":"ghashtag/t27","path":"specs/demos/simple_test.t27"}]},{"id":"85886ff8a1b7a674923d3b4ab6e76727ad0ab89b7adb14a853a12bd946df48c8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crc16.t27"}]},{"id":"85ee6b76ac54f68b3023b73083cabfcc56dd14175e5f403a0a6a5e2f8c03d957","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_lifecycle.t27"}]},{"id":"86e81f4b5cd5a08015f4d2df7b1d1fe992430bc04278851f0c66e0b050c2d8e2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hex.t27"}]},{"id":"870a33f2ff7a6fe458c1d4ebbff5cf8632c697d2f59a5bf243e943bf1e5186db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/access_control.t27"}]},{"id":"876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/swarm_coordinator.t27"}]},{"id":"878a4f0adcbe1e4e645217f48c2e9237a2f48a6e1027e10e4f273c6dacc72813","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma_conjecture.t27"}]},{"id":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/requant_boundary.t27"}]},{"id":"881cb1ecd624422cbe055e73272343e1fa48151ce41b680fa1b01eaed9a26319","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_sorting.t27"}]},{"id":"8879f6761c27c51c6c8ed11a13974ac5935ae6e9776cc04f64ca8ff0ac4169d2","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/holo_mux_x4.t27"}]},{"id":"88defe0150c9788a031d6028f0ce24fb7f84434a4a208f763e9e11d71a8705b5","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma-conflict.t27"}]},{"id":"88f118c2dd8a9984154a6e0d9fa3d7c80661eba6e0168c1b3d39953cca834341","sources":[{"repo":"ghashtag/t27","path":"specs/tools/schema.t27"}]},{"id":"892bfeccae76c838fbdf64c33008605d79293384109ec5b22d087373db822e7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/transport_tx_fsm.t27"}]},{"id":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/anchor.t27"}]},{"id":"89a82df081a09a38342695f35cabf254134613350aefca687a35ea4759af931e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/splay_tree.t27"}]},{"id":"89af60b026ed44f74e7fdeca2c3486d1b6936ed25eb36952a2acc4fcfceb8887","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_join.t27"}]},{"id":"89eef91ae05519dabf5a5152db51f335ba5bc5e2ca7e361683da5a42e37041cc","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adam.t27"}]},{"id":"89fbd6f1c37f365020db6ef8784fbf958bb80b0148ffad87d5bb6d0620be6ca5","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_critic.t27"}]},{"id":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf24.t27"}]},{"id":"8ab9285758d8870b2943ef4683f7cef21b36ec668f336787eec41dcc6f7e5b5c","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/hardware-constraints-kg.t27"}]},{"id":"8ac2f175a17a71996c19ceddfe61aa010318a6fd81b5aa1491dce361ccf5c4ac","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/negation_invariant.t27"}]},{"id":"8b07a766bdb93f91528171c1fdcc4b148c1fb9705dcaa436467157c81ade810b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/ppl_calculator.t27"}]},{"id":"8b485c4c2584c91329dc3f568cbc97a67c7cbe96f0129ddace1afbb5c26a837a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lr_scheduler.t27"}]},{"id":"8b561096ff8ca2086d740675f26218dccf33443e281de272bd407420e983e9f0","sources":[{"repo":"ghashtag/t27","path":"specs/physics/su2_chern_simons.t27"}]},{"id":"8b611091e36db3b92fe7f638cf06ac27b2b81236877affee18656f939e62ac60","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/list.t27"}]},{"id":"8b7170ce5946d494428c43084d30ccbcad94c0cda325f4dde2cacb16cee3c7b9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_arith.t27"}]},{"id":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/dfs_gate.t27"}]},{"id":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/runtime/runtime.t27"}]},{"id":"8c7eb232f335e199f7968157572eec38137ed21da8d5636217e68aa03f0fbfe7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/codegen.t27"}]},{"id":"8c8317e74a8b9562d87049e4b7826d4231c61236cbd2fa77cbf7e3bc539777ed","sources":[{"repo":"ghashtag/t27","path":"specs/brain/bus.t27"}]},{"id":"8db5032d715bebe3c8a79ac21378908cde937f4e7a0d561912d35ee31eb72941","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/bilstm.t27"}]},{"id":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf_competitive.t27"}]},{"id":"8e659486966270a99e18f69ebb5b9818b057f2edccc316a3e71e3c3c97e36e9b","sources":[{"repo":"ghashtag/t27","path":"specs/server/agent-runner.t27"}]},{"id":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sources":[{"repo":"ghashtag/t27","path":"specs/pins/ir.t27"}]},{"id":"8ffcce3b336eb21cb1cfa914a39ca513acf89927a5fe45621b3e5ea95c203b14","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/leaky_relu_activation.t27"}]},{"id":"9081f9ef5592e9d1591a6e998d89e9caad8404732672de69059c5261c92cd839","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/topological_sort.t27"}]},{"id":"90c8b8aaaca66c08288a2e82386a5c48c79fd208f59bea2df1a3e556f575ad01","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf128.t27"}]},{"id":"911a4877e67ee722fa3853fbe620f48db4aa1091718638d0a8331a6804f59a08","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum_gravity.t27"}]},{"id":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/instance.t27"}]},{"id":"925172c39fe861f4fa2bb6c2f9bd51f12ee863027e136e18e5f5db5a60b8fdaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/physics/gamma_conjecture.t27"}]},{"id":"92611173f8a4905896c3b53d26dfdca357a97569f1ea647b4c482e0b36f25861","sources":[{"repo":"ghashtag/trios","path":"trios/policies/precision_policy.t27"}]},{"id":"92643bce03950f663ae5071666c57c6d76eae0aeabde17acf65d5480f27349a9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_settle.t27"}]},{"id":"92edde98e6961cc767cf56e5dcc45e372f2441034fb463c6f0f8b3f23558a129","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn.t27"}]},{"id":"93b28c8587488c79a31f4d0ac9f4f23d0b12ee8a248d07e2852b3b8dcd30c275","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_encoding.t27"}]},{"id":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/reports.t27"}]},{"id":"94369edf5d1ff6cdc3ca1d798a5a5e7a248c0c03c4487d5514bf4299d45237a1","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_add.t27"}]},{"id":"9487c912aba6ffdd9b412b4873cea41baeec4e1a9ebf5049e38e03c3b9ef559a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_libtakum_crossval.t27"}]},{"id":"948f91989383d6a7e3a148da37c9671bde69f5599fa95abf1c9704922108f3d3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_challenge.t27"}]},{"id":"94b07d6a708c1a40ea01ad735466a1829b08a98ea73d8c8ac62c23dca79fa775","sources":[{"repo":"ghashtag/t27","path":"specs/ar/coa_planning.t27"}]},{"id":"94b8ba45c9fc2ba5bd563a24babe3d3dabf3c73b34b2a3957fcc9021b0ccbb5a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/search.t27"}]},{"id":"951bad07733ec08a0c4ed25ccd7725a5719c5d19b17853dd34475a6a772ec61f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lamb.t27"}]},{"id":"954e3d675f8e00e616cd9edd2b3e811cbf0b32671e1f86a9e4849a276e7fd2b2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/bytes.t27"}]},{"id":"95adae8177152fed3fdc7053855952b9e7c25df01b05220fef44791869fcb740","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/disjoint_set.t27"}]},{"id":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/swarm_coordinator.t27"}]},{"id":"966383348575729e6d03fe400132af96cdfde5f94474ccaa8075a03d33d89892","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/gravity.t27"}]},{"id":"9680b23bbde4df74a98dacb40b7ecf2a5268714bc05b982fd8d95c2ec046f225","sources":[{"repo":"ghashtag/t27","path":"specs/ar/composition.t27"}]},{"id":"976ac6894ffb6e536f5271c3692387c8e9fff1b0ed6f280e1aa297c0c8b8340b","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/spec.t27"}]},{"id":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/binary16.t27"}]},{"id":"97e6235b404c68f4d398d812c1ed046abf1ec24bb5ae72740fb6fc3fc5f2a468","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_filter.t27"}]},{"id":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_search.t27"}]},{"id":"9855e557c4835debc2d9406218a857ec769f898f515923d5ac580109004534a1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/url.t27"}]},{"id":"98578314d53fe356ab21af4b448e2a720e0013767b1c731960899da6b420f749","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf4.t27"}]},{"id":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/optimizer.t27"}]},{"id":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/nickname_directory.t27"}]},{"id":"98db9288801328af6072230fda40876822530cb63d13a05d172d7d69bf40a8d0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_executor.t27"}]},{"id":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/ast.t27"}]},{"id":"991f6796a14b724c6c6d7ad11fa08025190c5fc6ee4e48506870bfdcc8ad5e5b","sources":[{"repo":"ghashtag/t27","path":"specs/base/seed.t27"}]},{"id":"9973916e12d9225b9f175037e9bd30897284f515074a11b97585dbf7b1a59e80","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_challenge.t27"}]},{"id":"99b995b524d5cd98373b063e716660c23e7d213e303e78dd6f6dda1584a2c0e2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/error.t27"}]},{"id":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/timing_tb.t27"}]},{"id":"99fa8b738f00c108b3eb1e9445daab42093844115abeaf03d2e8289b090096fa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bind.t27"}]},{"id":"9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/edge_demo.t27"}]},{"id":"9a18d4a90dc2239c615e3b4611e289c3681a3e9099982889a9d55d671f0cfb5a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_vbt_activation.t27"}]},{"id":"9a2f505cc2386228c7461e99dcea598525cb97ef5f4e41629fe0a68a45b21434","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_governance.t27"}]},{"id":"9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/lite_crypto.t27"}]},{"id":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_storage.t27"}]},{"id":"9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_analytics.t27"}]},{"id":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/goldenfloat_family.t27"}]},{"id":"9b53d5503a156f2833a3785d3b4254b3ba6f2c477d87668b9756e0f949d8285a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/avl_tree.t27"}]},{"id":"9b70a19282f97706600410642104485c1cb158c9a4f0ddfde6040850ce334635","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/cli.t27"}]},{"id":"9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/pattern_predictor.t27"}]},{"id":"9be969e9ee07f2ac25392d6c3001b94a6386275db45b5a08881382a8c22782ea","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/language.t27"}]},{"id":"9c33ace64d51ea7a7be1e7ad4cdb1388d4314803695e8418e5c6c2cd4405996f","sources":[{"repo":"ghashtag/t27","path":"compiler/ast.t27"}]},{"id":"9c52bd5e42a414e2d0ed5da344bf5ff4c61a5ccca57c35537983483a38b480db","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/cloud_orchestrator.t27"}]},{"id":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cross_layer_optimizer.t27"}]},{"id":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_profiler.t27"}]},{"id":"9cf461a0a8adb499cbb1c72b60cee89a1018638e5a895d74df17d74bec93b3cd","sources":[{"repo":"ghashtag/t27","path":"specs/shell/schema.t27"}]},{"id":"9cfdc672d8fb68169a02b45bf63bc1e4330f98cde9d44b4babd9e20a7111ce16","sources":[{"repo":"ghashtag/t27","path":"test_highlight.t27"}]},{"id":"9d397a176e2db4f55c544daf8ea1142c8d9c45c1e0ec5ad9e4b329ab24eed82b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/c/codegen.t27"}]},{"id":"9dbf325b34ce2247c239eeaec29739d1a5a13e606c0d5754bd2bb2b7a645203f","sources":[{"repo":"ghashtag/t27","path":"specs/server/provider.t27"}]},{"id":"9dc4e475f38f849170b46b46c0a72486485d13a37e4a53150b6dd395b4252a6a","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_line_emitter.t27"}]},{"id":"9e0a54bfc5992bb96c5dc38dcbffd57334be6866207e09185966985e870dacbb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/published_pack_audit.t27"}]},{"id":"9e53c7a141c31266e0b275bea41a46eaff276426ff85aadf52524de77c69ecf8","sources":[{"repo":"ghashtag/t27","path":"tests/ring0_trivial.t27"}]},{"id":"9e7f3ab64dc081da46232c63a023d2d392652bf57c2720c46fe02b564a0f1f37","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_reset.t27"}]},{"id":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_set.t27"}]},{"id":"9f691d19445851f83fcda9c64911b33bb8d409a8cd01bfdf8dd17968edadf8ec","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/self_attention.t27"}]},{"id":"9f9c5ccbfad7094a6514656e4c2f80089f67f92448c28584323b8e063361b94f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex_advanced.t27"}]},{"id":"9fb0fcc0a0a24932ffc0181e6a6847e06936d35c5919c29d74f6decccdd8b5dd","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/ternary_isa.t27"}]},{"id":"9fc79210c8bdb054a1f7b85f34696cb0b0ccd971edd126db0c6950073f68bacf","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/option.t27"}]},{"id":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/hir_tb.t27"}]},{"id":"a0ac4c99cda825e8fb9a82964e752d96e1806d22a65b354d27a383354fd3c538","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/arithmetic_invariant_sweep.t27"}]},{"id":"a10cd453780251bfe86342dd0f2b5fb5b0d46f088353c0a4cfd9543f11f1f007","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/mime.t27"}]},{"id":"a11838e1aecb9b6d3fddfabb63acbd8b182e6ee0430a2024bebe7cc42b5ed62d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/partition.t27"}]},{"id":"a12179df0112258f07ba1d050c5ed48d527d40d0c5c9311669dbd5fd2f6b80da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/container.t27"}]},{"id":"a1c5f092447e90848b032f7772fcd3dcff2d11b17b195bf9ae3f8dadd22a488e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/ring_buffer.t27"}]},{"id":"a1cfc613efbfa850c3b9718a25d0b3217985192cb746bb938590ee047b8e4d4f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generated_pack_audit.t27"}]},{"id":"a1ed6afc5aa1c11bce711e375e5cf179aca67c2accc4adbceebd0aca4d91c686","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/dark_matter.t27"}]},{"id":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","sources":[{"repo":"ghashtag/t27","path":"specs/git/schema.t27"}]},{"id":"a2763ea254fa12292e8679306c5d8f24bb81f8c13834f63a5c62737bb25f6af1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_add.t27"}]},{"id":"a2b2424d5bd2d58140d2ebc9320d27cb6e99e0f3f25d294ecc14cd437076e907","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/xml.t27"}]},{"id":"a2e26da390ab3d79813181b875c49cf801464a286c1e4cf1b9eaa34ca5652a71","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/http.t27"}]},{"id":"a304c38d4f437a1049622d15f7c677afee0709cdbc5ec45efb471acfa1ad8147","sources":[{"repo":"ghashtag/t27","path":"specs/math/e8_lie_algebra.t27"}]},{"id":"a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_benchmarks.t27"}]},{"id":"a348a6bc574e6fb2b5af6cb13db18dd55415193444e4120e48e62ff4b100b426","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/compute.t27"}]},{"id":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/api_documenter.t27"}]},{"id":"a3cc24914c0e7e7480e9f97b6a296794f6d1458c0f11863974798181f5169ae9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_cosine.t27"}]},{"id":"a3e3fbcb58bc7384b4bd16ecdf4f19c0591a11d9ee4c4bf8323acc1a0953eaae","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/uart.t27"}]},{"id":"a47276fc0044d60446b49d876a5ead70730fb7f63a196aa25f2b7b28887042c3","sources":[{"repo":"ghashtag/t27","path":"specs/bus/pubsub.t27"}]},{"id":"a522aeb649e6ff9cee8e8352992b5a81155c073aa0c62ff2896fdc5300dafc63","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/btree.t27"}]},{"id":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/timing.t27"}]},{"id":"a5666136df528393dd97673ac9ea68fa10fdb3b7bc111b4be2d39b42c1091c91","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_uart_tx.t27"}]},{"id":"a65ff9c73705aa9ceec3d2ac8abda449cf68771040c2457378217bd89663cf81","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/sparse41_decoder.t27"}]},{"id":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/traffic_animator.t27"}]},{"id":"a72d2ea5db5519cf66f7d714b6b641c9844824efb9942b18d7ad54b31a89384d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex.t27"}]},{"id":"a7ce1cc4ced86cc2bcf1f682238b76595ec6787bee6dcd2320985c19e801f284","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/polynomial.t27"}]},{"id":"a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/key_management.t27"}]},{"id":"a8197c8c62744c13e229dcea0384298bb118088c8de922a85faeff60ccb58588","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/int4.t27"}]},{"id":"a8a83daf267d0504d21379f7c2dce998cf5c9ea4847715134afb9b0afd952da9","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/08_modules_and_arrays.t27"}]},{"id":"a8e61e3999e7a9f8b70f50c9e4be8038c91b50ed589aac52c50eb38a14295197","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/builder.t27"}]},{"id":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/local_processing.t27"}]},{"id":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","sources":[{"repo":"ghashtag/t27","path":"specs/queen/lotus.t27"}]},{"id":"aa444c6314549e4ac7da40ddc485a50ffcbaa04df78a9e0f2f117733a5dd0282","sources":[{"repo":"ghashtag/t27","path":"compiler/skill/registry.t27"}]},{"id":"aa68e993cc9415a7df4fda9e3366a8cb1c8de9e0f35f2b499f550f2bf45b2936","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/mod_structure.t27"}]},{"id":"aa7a491dff3f3eeca6b4ddf68779ce179c51376db2414b0517b13cc9febee98b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/ternary_hw_verification.t27"}]},{"id":"ab9a5ef2d262ae5f40d0c1e676db69da17f952923c17db78a962146c4f12b469","sources":[{"repo":"ghashtag/t27","path":"specs/physics/quantum.t27"}]},{"id":"acf6ebbee2cb8fc7ed573fa75e2196c7db42ccdd33c893329bf26bd5299845f6","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_activation.t27"}]},{"id":"ad278f2c5876f7f6c78a0fd9bd181c12fe7311b243653275b18fc045a8afcb37","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/linker_tb.t27"}]},{"id":"ad4f67213e211d9a352750162ca8b59e3baa58562942ffc6c101d1843fb65426","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn_target_network.t27"}]},{"id":"ad9a14e1f66ec601b43a9219308192aff9e1f81fe8813a34af87d7f33c180b99","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/match.t27"}]},{"id":"adcd983d989617b9dfe6c0f09f2a397b0de0f093be8f71ad713f4f55abf4c3e7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/faculty_board.t27"}]},{"id":"ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_scenarios.t27"}]},{"id":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","sources":[{"repo":"ghashtag/t27","path":"specs/portable/relay_observer.t27"}]},{"id":"ae3d2608f85fe75b730cedad5deb9e7665c28613bed1c5c4304b8b0ad5e0f1b0","sources":[{"repo":"ghashtag/t27","path":"specs/account/auth.t27"}]},{"id":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/tensorpack.t27"}]},{"id":"afd35fca7314c548d802fb2260ebef7818faf3b86780cf8da1c2f62d75ec4895","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attn.t27"}]},{"id":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_protocol_stack.t27"}]},{"id":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/typechecker.t27"}]},{"id":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/execute.t27"}]},{"id":"b11bdcf65b9f6ea8123ae6a672b125b4b2794ce11ef8ce1ea570d2f7903b60f7","sources":[{"repo":"ghashtag/t27","path":"specs/storage/schema.t27"}]},{"id":"b1eb2ce1417192b1cae27d129a426516e1df1e643f886dbc2fe3523b2c5e3fca","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/array.t27"}]},{"id":"b29f2489715e54b82b6b5a2089b82e5c87fbcdd014cf0e3f43101aaffaa5abfb","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum.t27"}]},{"id":"b30c96c4120d4905944ce2acb160dc5fc5d0accc94defa6d88919e71d3cd6998","sources":[{"repo":"ghashtag/t27","path":"specs/github/tests/e2e_full_flow.t27"}]},{"id":"b37a891477e02303d3821493c20d8c3a59d9cc04b5a01f1948396712e31cc289","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_card.t27"}]},{"id":"b3f9fa31faa278b582572a364188ee26094f06493002e8df7ad3fd3bb18847e0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/deque.t27"}]},{"id":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf16.t27"}]},{"id":"b46496033b9cc8164845ba0b6139ad8429704fea6f66a2dce46dd460ea892fac","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bond.t27"}]},{"id":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cache_management.t27"}]},{"id":"b5714e6f7e9a0a68a29968ab50f4855843bdf9b856ab301bc3c402c9f900a62a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/text.t27"}]},{"id":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/apb_bridge.t27"}]},{"id":"b5ec191b29fa9280a515951ebad973bcf176922a4b556b3abda65dfbca5fef8b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/seq2seq.t27"}]},{"id":"b62c204061b2484b45cd758b203f828582b766d24dc6126ef3d6415872aea62a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/embedding_layer.t27"}]},{"id":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/linker.t27"}]},{"id":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","sources":[{"repo":"ghashtag/t27","path":"specs/depin/prove.t27"}]},{"id":"b70865df4803d3a0bfea341b85480b10dc9e8645203943b9461233d283a4be4a","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/cosmology.t27"}]},{"id":"b7f52fc31cb644f219392df408b8a89a9010d42be783426f808e74ebf78e0c63","sources":[{"repo":"ghashtag/t27","path":"specs/ar/ternary_logic.t27"}]},{"id":"b8651d49170f8c475f2f7967332aba84bf88ebdcf0cf8969195774cf4c2f7172","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/lexer.t27"}]},{"id":"b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/pattern_predictor.t27"}]},{"id":"b8982faa07203a5a52fb224911126586345f2b8043116070602ec84ae459b40e","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/modules.t27"}]},{"id":"b8e959ad3ee29deca1899eada363eb7bd86f6e257f6462eb87ed482c1879f4d6","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf16.t27"}]},{"id":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","sources":[{"repo":"ghashtag/t27","path":"specs/config/paths.t27"}]},{"id":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/int8.t27"}]},{"id":"baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/audio_overview.t27"}]},{"id":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/redundancy_management.t27"}]},{"id":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","sources":[{"repo":"ghashtag/t27","path":"contrib/backend/zig/legacy/main_zig_handwritten.t27"}]},{"id":"bbbe54474a710d6c52c4568a44bf799897b758816d7995c342d6747ac55debcd","sources":[{"repo":"ghashtag/t27","path":"specs/memory/notebooklm.t27"}]},{"id":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","sources":[{"repo":"ghashtag/t27","path":"specs/config/load.t27"}]},{"id":"bc520fb9db99214b0349804b525a1e98f277b8ba699de1664456a00f242c92de","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/direct_message.t27"}]},{"id":"bc75bbaaeec57c0e8571786c4e9e8c8ba7d4bae553124f10b12ab6a6cdb5efaa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/rabin_karp.t27"}]},{"id":"bca3e8deb428837bb49648c974bb103777ecfac6bb214210273bef4bf5d4733c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logger.t27"}]},{"id":"bd3bb0d278274a7e547540c4c0fa4c4191c5d1095c32f538aeb7d9eb2cfcacf1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json.t27"}]},{"id":"bd7accfeb733b5d197590ce3d41ef52a287c5fa9d85aa28dcb9865e975b98715","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_receipt_verify.t27"}]},{"id":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_validator.t27"}]},{"id":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_routing.t27"}]},{"id":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/mac.t27"}]},{"id":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","sources":[{"repo":"ghashtag/t27","path":"specs/config/schema.t27"}]},{"id":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/schema.t27"}]},{"id":"bfc3764c6d710df490e0d10cfa5c0d99548f60cfe284614837138a7a02bc6f45","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline.t27"}]},{"id":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","sources":[{"repo":"ghashtag/t27","path":"specs/vm/jit_semantics.t27"}]},{"id":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/process.t27"}]},{"id":"bfed6607cc634336de78652ca7a5459bcba12a87f0923ad27825c5a9d9f47a63","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_actor.t27"}]},{"id":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/rom_layout.t27"}]},{"id":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/shell_sort.t27"}]},{"id":"c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_deployment.t27"}]},{"id":"c1cbe82a00e3075ac9f1ecbc4f19cc905a6b90e80e437fd4780770301c9bfd68","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bridge_tb.t27"}]},{"id":"c1faa9155720958496096ae43b37c275bd524d8256bfb567d34c1a55c03b195c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/bson.t27"}]},{"id":"c25dfe91ff969f6ce75fe208bcf6126c6794a0060096503240f80439f0e93306","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/matmul.t27"}]},{"id":"c2cdda51683f7917f9e0b8f72abb87a36e2a3ef0f0c239ab8f370bd4e35f9e4d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/bloom_filter.t27"}]},{"id":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf12.t27"}]},{"id":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/heap_sort.t27"}]},{"id":"c4640c7a2ad1f9a0c29a2e975d615ec82130805ba1e1a75ed3f1c167fba995f7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/args.t27"}]},{"id":"c5df0d82bd5c7ea6975cbcdd0faf2a81ac7f8a4032bd77d0224e2db7c731ccde","sources":[{"repo":"ghashtag/t27","path":"specs/storage/lock.t27"}]},{"id":"c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/key_management.t27"}]},{"id":"c6c888eead59d10c6030023702fa4faf2457e75a595c1dafe65a00f70626f17c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/specs/physics/formula_registry.t27"}]},{"id":"c6c932ec30079e224f4161aca945d49f96731af17b750848af08a2b7c2e6d786","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/cloud.t27"}]},{"id":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf256.t27"}]},{"id":"c757522b59a7fed58d8f2409a674a72f552639d3978979bfc3b685f70e835b58","sources":[{"repo":"ghashtag/t27","path":"specs/physics/pellis-formulas.t27"}]},{"id":"c787ba3a1231e67ed5f73ee5de8a8c2114a90ae7136a6d5ec9e2e168fa87c4cb","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/rnn_cell.t27"}]},{"id":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/trust_manager.t27"}]},{"id":"c808a47fcf8e502278cdcbfedf0524f963649e08c07bcf05d79a5a241915f196","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/quick_sort.t27"}]},{"id":"c8aeb8ca8c5ab34e88f39bd5a2268344bd3ca24cb1d9822de72e3792b30d7c4e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dense5_decoder.t27"}]},{"id":"c9f60c228cb3f4b1b2a6fc6e000f87b1e293557106cdf0f003b5d163c5efa5b2","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/stdlib_tb.t27"}]},{"id":"ca80b7e37c5cbf63fb0726ef19a8b4455afb4928f06e6aac7abd01cc33c5ddfa","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf256.t27"}]},{"id":"cad3992fa6893a5467a5e01b6a63be0fa42916e661d32aa8a25412c627835b7c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/integration_tb.t27"}]},{"id":"cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/lite_crypto.t27"}]},{"id":"cb61281176bafb99fd47a406941d7f224280dbfc0c0e255c3f0afb9dd6ce3976","sources":[{"repo":"ghashtag/t27","path":"specs/ar/asp_solver.t27"}]},{"id":"cbbd63036b371154deb8f49d58ca101528aa025a599c98e41fce34b9a8716a1b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_account.t27"}]},{"id":"cc049a7f1fa34722ab6adc574f11e7a39639309b2c9b143230d09c07e2d5ff30","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_deque.t27"}]},{"id":"cc313a79298453142df02a7c91185e1d02d1be30db8c26ca9c3390eaa4b1c07f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/registers.t27"}]},{"id":"cc7a1b61f3b8550010956f71b0881712679bed4f2fccf05ce2a534ca95bca2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/codecs.t27"}]},{"id":"cc9fa2740f04882be3445251ca491aa662c9fbbf658d0e6bd751b3941f2053f8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/gru_cell.t27"}]},{"id":"cd5f3f125dd528d1cf0d5c2d7f52f91b692421603aff1288625d3476e63d409f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/red_black_tree.t27"}]},{"id":"cda04dde7b23fa05dc4c38c5e4ee28221218b0fc66d9cf76f7572983572e4815","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/script_tree_sweep.t27"}]},{"id":"ce38bc42563751d3420b1df00e7733efe1d350364c12f5d9d6992d38c77ff6d1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline_parallel.t27"}]},{"id":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/hardware_validation.t27"}]},{"id":"cefcd318b67d95b86926b36f4ea2e786b1e21f2971c3839eb4983eb830e0f70c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/trinity_numeric_surface.t27"}]},{"id":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/traffic_animator.t27"}]},{"id":"cf13f50e897ce279191f8f4df19554f90e56b39aaaea1db603e10e13639f5b3f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/string.t27"}]},{"id":"cf2ee111f00f80d51daa5dcfa33e48da78c0f5e8c500ce6844994752f40acc1f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/bellman_ford.t27"}]},{"id":"cf712b02e8c309ee589ce2061041207b64173c510b0d02308e48f07eb5e50d51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/locus_coeruleus_backoff.t27"}]},{"id":"d03c705ff7827fe5d47967e7a791119855e77769cfe2c00278baa5c4436d723e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/state.t27"}]},{"id":"d10dbd0174015ac2a3c91ee97355ff93f5da3231f9925e1b27eac88e0284aa69","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/jones_polynomial.t27"}]},{"id":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/flow_control.t27"}]},{"id":"d1c8b70e3fe2176c599433da14052d4628bed850866bb109b217723af830ca5f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/pellis_verify.t27"}]},{"id":"d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/power_monitoring.t27"}]},{"id":"d1eccd4bf1b47bff955d836fc6b71c4c833044f0419abf0cc21ca261590df72c","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_memory.t27"}]},{"id":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_orchestrator.t27"}]},{"id":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/constants.t27"}]},{"id":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/etx.t27"}]},{"id":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_graph.t27"}]},{"id":"d418841c0c8387724f6ebc2e4ee6526e56395e8d980402d72bfef753a0319d78","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/lucas_exact_verification.t27"}]},{"id":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","sources":[{"repo":"ghashtag/t27","path":"specs/demos/hello_world.t27"}]},{"id":"d44f1183eb869dbd8501b0e8df1b8087414c59770cba19736beec51eb75657d7","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/contrastive_loss.t27"}]},{"id":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_monitoring.t27"}]},{"id":"d4947ee53db0368360cef453355ee9b159ca0ba130941231ff774a5e55c0ebfe","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ilv.t27"}]},{"id":"d4c7953bbee4955efd35ac3ecfaba01b00cc47a2bef3114331d9531e62da4cf3","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/rsa.t27"}]},{"id":"d4d622f9fd9fbec6a8d63641fd7c48218d43c41085fb8a71c94a520f5b33c186","sources":[{"repo":"ghashtag/t27","path":"specs/brain/unified_state.t27"}]},{"id":"d4fa0ebd205b05782673ea26548a06beacda67169afec7b0fb8d48009fc3f12a","sources":[{"repo":"ghashtag/t27","path":"specs/conformance/e2e_scenarios.t27"}]},{"id":"d4fcc46e20aacaf30831a99d77db524f3a6fbbd23adc179b53017cddadd7cffb","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bigint.t27"}]},{"id":"d60c1ce501e62dfeaaed0e2458b1c86ed171e5ab7e5f410930d00163e6b110f5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/template.t27"}]},{"id":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_protocol_stack.t27"}]},{"id":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_arithmetic.t27"}]},{"id":"d67d46cada717f8c91861d127ff6037bd17f72b367713a71c41fa0c81eb29b16","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/apb_bridge_tb.t27"}]},{"id":"d67ef86926024a8b8a1c3ee1188f8aded413c5e3094435a5e9965ab90a718726","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base64.t27"}]},{"id":"d6b165602fa64c9cc3d3828ff8f608e83a326b55345be097866c3e8487a62725","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/maybe.t27"}]},{"id":"d6e3126051f418b8d58ea7b6c5eb552c80f0102041dc075b9863c6a7c6de8bf1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_alert.t27"}]},{"id":"d73fff6a01de7094ea95fa1b6ca12f3f8dc1c0d5ad4321b82f7c9ae0326351bc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/time.t27"}]},{"id":"d7912780dd02240a27684c2a0ef9f950d41cdc8554d1d97d94ceaa5018a85b81","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_runnability_sweep.t27"}]},{"id":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/vsa_core.t27"}]},{"id":"d85ebdc9cc293a4c3e55e4345dd1bf19a956b079c8be620d0f84bc7f976f406b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/handoff.t27"}]},{"id":"d8970c696708b802f279b04ca2bd3dde298c299405b40f452e5b86ea2f556379","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_analysis_tb.t27"}]},{"id":"d89aed8796be285ae8c792f3fa66984292c9ecd3861585c0dc5fb3c59d0521c7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf20.t27"}]},{"id":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/git.t27"}]},{"id":"d8d6207e1dd83b246fde75d97c041fb0bce65ed5fd3f368262dcef664866a13c","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/catalog_coverage_delta.t27"}]},{"id":"d9723ece2b34cc5b5bb189d6d0a852b4668100b9d6c02e15630a971329d2886d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/rmsprop.t27"}]},{"id":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sources":[{"repo":"ghashtag/t27","path":"specs/pins/emitter_xdc.t27"}]},{"id":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/types.t27"}]},{"id":"da236765e018e3599eb952aa2e8a298e423c627751cb0cadb11b25e3908198f0","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_json.t27"}]},{"id":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/int4.t27"}]},{"id":"da8ea962d62aa8d63087268502fef91c4bae154124d444ba2ac788b41d714f07","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/advantage_estimator.t27"}]},{"id":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/07_tests_invariants_benches.t27"}]},{"id":"daa2ba876ceb62f26c30617b5807667c1b56553dd520f27395e42e772a05f473","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dropout_layer.t27"}]},{"id":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_pool.t27"}]},{"id":"db2809acd89c1cfc6c5240479183aab0a43a056e2e3e157075e8b33e1be480e1","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bootrom_tb.t27"}]},{"id":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_tree.t27"}]},{"id":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/olsr_routing.t27"}]},{"id":"dc13f018898a14b32059c654d1289748e601e47f4b755c31c0e466ce7b73e4dd","sources":[{"repo":"ghashtag/t27","path":"specs/math/pellis_precision_verify.t27"}]},{"id":"dc1f5cc35b718263017c6e2b2ec619da0eb7c0665907963b93900d6b6b98dcfd","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/fifo.t27"}]},{"id":"dc3bf7efe66fffbb2b55f126469c64d8bdca389026b214f2a741ddeec13b5329","sources":[{"repo":"ghashtag/t27","path":"specs/interop/gf_cross_language.t27"}]},{"id":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/compression_engine.t27"}]},{"id":"dc6727df8992728892c54c01d04247fecb9651a348f87f1da7b2a4074a43e14a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/segment_tree.t27"}]},{"id":"ddc85831a627462ba15d3ffa3a037d32cecca2135e254541c38c90c26d06f309","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_reproducibility.t27"}]},{"id":"de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_tests.t27"}]},{"id":"de753fa421b4280246abdc40b8201a89945982050f86029f11c736f77664c2a1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_call_signaling.t27"}]},{"id":"deb1cd9e3671ec4cc9e01582e8fe43a149e9e32b7c6fc2ac6f5e2c35df3ebfe0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_parser.t27"}]},{"id":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/purkinje_thermal_gate.t27"}]},{"id":"df15f1fbd549cad6bc01b0599d4765ea3d8be69eb2759ef112ca8c94c101168d","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/experience_save.t27"}]},{"id":"df74b541158c71d5463152e377813a5491def4207dbffe97f6fd78b23cf6d4d9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/corpus_wide_pack_audit.t27"}]},{"id":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","sources":[{"repo":"ghashtag/t27","path":"specs/file/schema.t27"}]},{"id":"e076ebecb0f5d0097aac6a9c888cd9736f3f4bede8b20f99eb114245a91c57be","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_control_flow.t27"}]},{"id":"e090c900774d21e520cd15746d7d2a06e1de22889cfe40677f68c9673e667622","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/cache_w/tiny_lfu.t27"}]},{"id":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/pipeline.t27"}]},{"id":"e13491c6f9a89c309ce349dca7883a7eac0186b19b00d8d09b3dc0016d7bfadb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/layout_b_audit.t27"}]},{"id":"e17f70b30cb2c25218feea80bfbbe599006cc6fdbd524a579b5fc5d1ef3cbe15","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/fenwick_tree.t27"}]},{"id":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/goldenfloat_family.t27"}]},{"id":"e1c387ee2e54fabfdcb363337c56c608d48108946f4b089c91a232e9fa8d0f76","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/https_enforce.t27"}]},{"id":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_hash.t27"}]},{"id":"e23ef09c0f4e88517e32c8c48d183468cb808d9676f2311a4a229e0f43895505","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/spec_exit.t27"}]},{"id":"e24ed494c1f78c01bbbd69a338432166ca36a1271b1d5c6c8a25a9946786da76","sources":[{"repo":"ghashtag/t27","path":"specs/ar/proof_trace.t27"}]},{"id":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/clock_domain_tb.t27"}]},{"id":"e2987f7b0551651563d7d0730f8feaf2f319a6aa968fa44831048b3ccbcd9615","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_pattern_matching.t27"}]},{"id":"e31e00a07700fe2458b2945fbd2925081653e4ac6d8c73b76b78b2b2d42c3ddf","sources":[{"repo":"ghashtag/t27","path":"specs/file/watcher.t27"}]},{"id":"e33a9a975d53992d50f84f2c40632787a6eaa0c27c6abcb2478e91429a6a1624","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd_momentum.t27"}]},{"id":"e364713ec7248b7d936c3ab6e5b1b38be1322645d4c2b6c6c3433ff81d9644c9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/math.t27"}]},{"id":"e3997228a0ea792965b7825f7b685c27f972c5140c8d2a5ce3f434e27a9de5bf","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/stoch_round.t27"}]},{"id":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sources":[{"repo":"ghashtag/t27","path":"vscode-trinity-swe/test_highlight.t27"}]},{"id":"e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/congestion_control.t27"}]},{"id":"e40d28697fe02198d9d6b228ef8d6605bc8d1b5c03ca780a691b5deeb46d7f3d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/dft_tb.t27"}]},{"id":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","sources":[{"repo":"ghashtag/t27","path":"specs/nn/hslm.t27"}]},{"id":"e58af5df8780b31b21f3a23b1ca62e8948f1327130a08f9ff3ec57a56c276d7d","sources":[{"repo":"ghashtag/t27","path":"specs/account/repo.t27"}]},{"id":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf20.t27"}]},{"id":"e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/resource_scheduler.t27"}]},{"id":"e6fc9237d381f9b29860d7a63126260d9baab643cd75dacf4fe4e8c92f754be7","sources":[{"repo":"ghashtag/t27","path":"specs/math/property_test_template.t27"}]},{"id":"e734823e61b4a42e32f1d35dd8da6ec17a9c3877be615ad1ef3af903409beb2c","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/null_pe.t27"}]},{"id":"e76bf03cf8f562893d856f702982101bf5a630d8c6ec2beecbd3e19a530a7d99","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dense_layer.t27"}]},{"id":"e77707b5e201498662c7652d5c7ae17b8e500e44e1be65ed7f5561fb6d699656","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_enc.t27"}]},{"id":"e7a49d85980a3de7d64ed6d1bfad62310400537dc8488564938b2b7ce889d979","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/either.t27"}]},{"id":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/protocol.t27"}]},{"id":"e811defd32754534cd816aee83855abcaef5d5d6e3bef26227d36aa0b17d6bce","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_view.t27"}]},{"id":"e8775999f06bfb718b8b7d5404691396f6e4d0cbb7692259bea21a167ad6d329","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/01_values_and_types.t27"}]},{"id":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/testgen.t27"}]},{"id":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bitnet.t27"}]},{"id":"e98502679e264075d5360666799c30ec36084d042552af361af54d4434670ab8","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/huber_loss.t27"}]},{"id":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/topology_visualizer.t27"}]},{"id":"e9e6bd933169bdf7ff79fa80a1df30743e9702bc16e478e6069bb68cc0fe71da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/csv.t27"}]},{"id":"ea02cd024807f8b9b3cdbd25d25022bed852b1433d7f256a9853e46fa312a715","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agent_run.t27"}]},{"id":"ea12fcc03feba95408ef18b0f5635ad5eeaad00d3c6fcce5f6348f995f426e56","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/layernorm_layer.t27"}]},{"id":"ea334b73f9e5c5a18f4ec6bb7a249982381c339fdb867bdb2ef19305eb59679d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/markup.t27"}]},{"id":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/selection_sort.t27"}]},{"id":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/qmtech_a100t_integration.t27"}]},{"id":"ec713094133b35f17ecada146c61cbdc94efbfe4e17f1d18f3c1d0b43ddf7439","sources":[{"repo":"ghashtag/t27","path":"specs/server/session.t27"}]},{"id":"ecea27e185ed847dde4df4c4eb06be26568bcfc22f5447b75f88c7520a494461","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_identity.t27"}]},{"id":"ed13dbd99f709317378a87dc3d427eceabc5eab1ddac88c52b0cbf408344585b","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_shift.t27"}]},{"id":"edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_deployment.t27"}]},{"id":"ee002f94a63c0a07ea37cd3b1ddcaca3a4ee552a99a18e532d99b16f1ae12ce8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_ladder.t27"}]},{"id":"ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_simulator.t27"}]},{"id":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/protocol.t27"}]},{"id":"ee971e0e0be0b061bb8448b61ef0de3cea9d5352ccf5add977bee5173e3d56a1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/compress.t27"}]},{"id":"ee9f123c12e3f5dfe8594f1e27977994b654966d8bb8d4d19c464b40116f70f7","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_edge_argmax.t27"}]},{"id":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/swarm_agents.t27"}]},{"id":"efb335d2dfda179364cc654ecc06db8780ac7176c63e5962b2f969ee4836a04b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/variant.t27"}]},{"id":"efca26cf7e116dcee89e74b16fd07f1babe095801b522428aa41e3a2c50ce0ec","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd.t27"}]},{"id":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/subth_clk.t27"}]},{"id":"f066b8924661eee6b40b59b5c310ce94fbbc0a97a243fa1359ff68cfb10ef7be","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench.t27"}]},{"id":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/top_level.t27"}]},{"id":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/numeric/gf8.t27"}]},{"id":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf64.t27"}]},{"id":"f1b5395243a8bbbe1ba4ecc9c3bfc74a68bf7cb43c68c03c71b6f30c253b65b0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/utf8.t27"}]},{"id":"f1e9aedeba6e513fe9ed235d0501d552b46aa6c3e0c1cb7271888ce20d8f0c76","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/placement_tb.t27"}]},{"id":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_framework.t27"}]},{"id":"f37a671427ac064c67a6c1ee374fa595f077684c34fccabaecf4c703a2bba2c4","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/sha256.t27"}]},{"id":"f3819844f477cf0293deb96d3046a16d9283e7545cadb4f5d24c720be99743db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timer.t27"}]},{"id":"f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/resource_scheduler.t27"}]},{"id":"f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/olsr_routing.t27"}]},{"id":"f4725c1e5baf34cd48150fccccaf061f585340ffd5963986293fb3262ce8e6e3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_conformance_compare.t27"}]},{"id":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/routing_etx.t27"}]},{"id":"f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/redundancy_management.t27"}]},{"id":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_receipt.t27"}]},{"id":"f5365788339e42d2da324d01a67c9aae2abf18eb37351f7dd9dc4a8cc95ded4c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/registry.t27"}]},{"id":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","sources":[{"repo":"ghashtag/t27","path":"specs/server/router.t27"}]},{"id":"f5f69af96d678bce87063e7f43afa90346b29972df155c9968077dcb647701da","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/ops.t27"}]},{"id":"f5fdfdf57c4b772c5d9baeae4cc8196dd300a217de71325afbbc83815f64b6a1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/baseline5_decoder.t27"}]},{"id":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/quarantine_manager.t27"}]},{"id":"f62d0b2901bf83c67eb9555c33c2f92d010b52354ba130e321aa9ccba5bf2f48","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru_cache.t27"}]},{"id":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/parameter-golf/phi_init.t27"}]},{"id":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/formal_tb.t27"}]},{"id":"f7a2a59c6a856ec32ee04c6890f88e68bebc8bb32e57542e5d1eb797241b0c87","sources":[{"repo":"ghashtag/t27","path":"specs/server/api.t27"}]},{"id":"f7b2c5fcfb99700b0654f9ee498f9eab7a62161d3a9b413f7b390f42e1bd98aa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/exit_codes.t27"}]},{"id":"f8f7dcf3e56a70218d01f61ff388e7e219040af2a00b1cc9eb551b02036ad2a2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/norm.t27"}]},{"id":"f93bfbf9b9f7fb215faed70ad4a01a4fa9d8e00ef5daed464c8a949d2a56b0d8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_loss_injection.t27"}]},{"id":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf20.t27"}]},{"id":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/gen.t27"}]},{"id":"f99a681913c3bcb832745ccec96cfef0660c61ae17e99f4910a4ccc43e19d775","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitset.t27"}]},{"id":"f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_router.t27"}]},{"id":"fa7339fbc62c69d3c8cf93dbfff307d4ff68314f0365d2466bd1fc9016b2ffcc","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/fbb_active_path.t27"}]},{"id":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_split_optimality.t27"}]},{"id":"fa88bd16c82f68d02449eadfa2607d629ed78c1610d2b88f387f62c1c396fd0b","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/runtime.t27"}]},{"id":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/auto_config.t27"}]},{"id":"fae8329c717a697cf1938a8aece2f3b92ab31f6ac7bea6abfdeea41d5b11dea7","sources":[{"repo":"ghashtag/t27","path":"specs/ar/datalog_engine.t27"}]},{"id":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/stdlib.t27"}]},{"id":"fb7ac4208772624a36f6651fd54d4c1347a96bad3b78093ee5c248f42f389a2a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/verilog/codegen.t27"}]},{"id":"fb918ae9b35c05b59b4dbbdfe5a390ed3fd0d48434b4a4aa2543abe94145e459","sources":[{"repo":"ghashtag/t27","path":"specs/sync/index.t27"}]},{"id":"fb91e0ec7c9679153e03095354faeddfd4d7ca6d24843471d45ab3e597020e0d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/relu_activation.t27"}]},{"id":"fbb89f4449007cd9440dc4dd352a5c0c955b9220a1e06c286fa8df9302584ec2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_dfs.t27"}]},{"id":"fc282db3e37df05cc48ed354ff1514c1f4be6ba78659a0d0d53fa384d79e763d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/measurement.t27"}]},{"id":"fc53854b86afb6ee601a43a354b0e34f3ec89243d3b896d57d84b1952cdc4d61","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/colors.t27"}]},{"id":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/link_quality_monitor.t27"}]},{"id":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/flow_control.t27"}]},{"id":"fcef546e7cfd5cb87d6c60d728b36bcd18bd889f48fe62678f23cfe99745dfeb","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dot_stream.t27"}]},{"id":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/bandwidth_allocator.t27"}]},{"id":"fdea4af949276c03185144ef699465fa3c71c59ec505bc0f1f10fe064a0d9e15","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/intrinsic_invariant_sweep.t27"}]},{"id":"fdea8736ee309824c17924c5853d4025ba869d13c4d1ea46bf111e6f01373995","sources":[{"repo":"ghashtag/t27","path":"specs/server/sse.t27"}]},{"id":"fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/fault_detection.t27"}]},{"id":"fe0dd93dce72f6dd9eb5c505c14b2d99b06211a005574a31cb8642b32e3ca070","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl_driver.t27"}]},{"id":"fe149804c3b532069ac353681dea878cc30f032de18c74cd77fb24bfb79c0423","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_tb.t27"}]},{"id":"fe2e6531437996fccf8eb91726641ab476d8982b68ca4a1d037819dd9a915d95","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/top_tb.t27"}]},{"id":"fe35542076774dd95e8456f3b8cdf959b2d0c8c576241b4f94a94177fd6a75ab","sources":[{"repo":"ghashtag/t27","path":"specs/server/vm.t27"}]},{"id":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_router.t27"}]},{"id":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_quality_monitor.t27"}]},{"id":"febf87624d67aa679c451ceba324033bcca3e9bd351a150bdd57a3e38e79122f","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/crossopt.t27"}]},{"id":"fee4c32ed2aaa0478b7bdfe057b97ac5474de5ec832124aaa83a81366ff4e5a7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/skip_list.t27"}]},{"id":"fef84759ef56f8c9704b710d79fc3724cc415e9369a80779b22a5925890d36de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/gf16_plus_quire_audit.t27"}]},{"id":"ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/failure_predictor.t27"}]},{"id":"ff3d757f5e91373910923758a5bc7a8f26fde4d157e3d3aee120210996c45f0c","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/sparse_mask.t27"}]},{"id":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","sources":[{"repo":"ghashtag/t27","path":"chips/euler/specs/fpga/gf16_to_posit16.t27"}]},{"id":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf32.t27"}]},{"id":"fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fault_detection.t27"}]}],"opportunities":[{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3337","ghashtag/t27#3038","ghashtag/t27#3034","ghashtag/t27#2824","ghashtag/t27#2778","ghashtag/t27#2658","ghashtag/t27#2577","ghashtag/t27#2569","ghashtag/tri-net#62","ghashtag/trinity-fpga#664","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"b4315f4e9c378446d2a9065d90ae7b646db672188e734b33f7b7dc09f7075bf7","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3518","ghashtag/t27#3517","ghashtag/t27#3516","ghashtag/t27#3513","ghashtag/t27#3337","ghashtag/t27#3038","ghashtag/t27#3034","ghashtag/t27#2830","ghashtag/t27#2824","ghashtag/t27#2807","ghashtag/t27#2564","ghashtag/t27#1956","ghashtag/t27#1954","ghashtag/tri-net#62","ghashtag/trinity-fpga#664","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"aa351a7e3d647cedcbea35c7d2f409016afa8196175ee5583282a59bb99b4493","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/t27#3571","ghashtag/t27#2830","ghashtag/t27#2043","ghashtag/t27#2021","ghashtag/tri-net#74","ghashtag/trinity-fpga#428","ghashtag/trios#1568","ghashtag/trios#1496","ghashtag/trios#1321","ghashtag/tt-trinity-corona#1"]},{"specId":"80a988c416fb2194568f5af53375a073f5ada8c6ff7d94b7dded4e5de496c524","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3568","ghashtag/t27#3542","ghashtag/t27#3541","ghashtag/t27#3540","ghashtag/t27#3539","ghashtag/t27#3537","ghashtag/t27#3535","ghashtag/t27#3532","ghashtag/t27#3529","ghashtag/t27#3528","ghashtag/t27#3527","ghashtag/t27#3526","ghashtag/t27#3523","ghashtag/t27#3516","ghashtag/t27#3513","ghashtag/t27#3512","ghashtag/t27#3507","ghashtag/t27#3443","ghashtag/t27#3366","ghashtag/t27#3171","ghashtag/t27#3141","ghashtag/t27#3006","ghashtag/t27#2860","ghashtag/t27#2851","ghashtag/t27#2767","ghashtag/t27#2764","ghashtag/t27#2754","ghashtag/t27#2681","ghashtag/t27#2672","ghashtag/t27#2639","ghashtag/t27#2477","ghashtag/t27#2476","ghashtag/t27#2404","ghashtag/t27#2386","ghashtag/t27#2354","ghashtag/t27#2325","ghashtag/t27#1961","ghashtag/t27#1948","ghashtag/t27#1697","ghashtag/t27#1447","ghashtag/t27#1265","ghashtag/t27#1264","ghashtag/t27#1263","ghashtag/t27#1262","ghashtag/t27#1261","ghashtag/t27#1260","ghashtag/t27#1259","ghashtag/t27#1258","ghashtag/t27#1257","ghashtag/t27#1256","ghashtag/t27#1253","ghashtag/t27#1252","ghashtag/t27#1251","ghashtag/t27#1249","ghashtag/tri-net#101","ghashtag/tri-net#6","ghashtag/tri-net#2","ghashtag/trinity#616","ghashtag/trinity-fpga#791","ghashtag/trinity-fpga#767","ghashtag/trinity-fpga#765"]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#2134","ghashtag/tri-net#85","ghashtag/trinity-fpga#36","ghashtag/trinity-fpga#33","ghashtag/trios#1638","ghashtag/trios#1603","ghashtag/trios#1545","ghashtag/trios#1540"]},{"specId":"fa8054146323574661b4eebb4e0734e34b4bc961863a7e6a86545facd67c3342","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2827","ghashtag/t27#2405","ghashtag/trios#1655","ghashtag/trios#1570","ghashtag/trios#1551","ghashtag/trios#1542"]},{"specId":"bb8b940856ee96a4afc932cd7cd21be6ff77c5f96b6bec57c3e08db8770a14a6","repos":["ghashtag/t27","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3542","ghashtag/t27#3541","ghashtag/t27#3540","ghashtag/t27#3539","ghashtag/t27#3537","ghashtag/t27#3535","ghashtag/t27#3533","ghashtag/t27#3532","ghashtag/t27#3528","ghashtag/t27#3527","ghashtag/t27#3526","ghashtag/t27#3523","ghashtag/t27#3522","ghashtag/t27#3521","ghashtag/t27#3520","ghashtag/t27#3519","ghashtag/t27#3517","ghashtag/t27#3516","ghashtag/t27#3514","ghashtag/t27#3513","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#3507","ghashtag/t27#3171","ghashtag/t27#3141","ghashtag/t27#3006","ghashtag/t27#2860","ghashtag/t27#2684","ghashtag/t27#2673","ghashtag/t27#2639","ghashtag/t27#2575","ghashtag/t27#2558","ghashtag/t27#2404","ghashtag/t27#2354","ghashtag/trinity#616","ghashtag/trinity-fpga#791","ghashtag/trinity-fpga#61","ghashtag/trios#1583"]},{"specId":"e946b7c7966c83f0f428274962e9cffccc190a4c2b276819a195ba03f203cc53","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3443","ghashtag/t27#3272","ghashtag/t27#3006","ghashtag/t27#2835","ghashtag/t27#2767","ghashtag/t27#2584","ghashtag/t27#2536","ghashtag/t27#2534","ghashtag/t27#2531","ghashtag/t27#2508","ghashtag/t27#2404","ghashtag/t27#2386","ghashtag/t27#2325","ghashtag/t27#2241","ghashtag/t27#1697","ghashtag/t27#1265","ghashtag/t27#1264","ghashtag/t27#1263","ghashtag/t27#1262","ghashtag/t27#1261","ghashtag/t27#1260","ghashtag/t27#1259","ghashtag/t27#1258","ghashtag/t27#1257","ghashtag/t27#1256","ghashtag/t27#1253","ghashtag/t27#1252","ghashtag/t27#1251","ghashtag/trinity-fpga#765"]},{"specId":"64505f1d206631cdddcaea692c99e886239d9f14fc2e8ef3a405725b503dfbe3","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3542","ghashtag/t27#3541","ghashtag/t27#3540","ghashtag/t27#3537","ghashtag/t27#3533","ghashtag/t27#3529","ghashtag/t27#3527","ghashtag/t27#3526","ghashtag/t27#3523","ghashtag/t27#3521","ghashtag/t27#3520","ghashtag/t27#3519","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#3507","ghashtag/t27#3443","ghashtag/t27#3141","ghashtag/t27#2860","ghashtag/t27#2851","ghashtag/t27#2681","ghashtag/t27#2549","ghashtag/t27#2508","ghashtag/t27#2368","ghashtag/t27#2278","ghashtag/t27#1697","ghashtag/trinity-fpga#767","ghashtag/trinity-fpga#765"]},{"specId":"be1a6289c0a3d348476ca81119f2fa319ce442921ab7c8c061efe7722d94af19","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3512","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#3507","ghashtag/t27#2834","ghashtag/t27#2706","ghashtag/t27#2705","ghashtag/t27#2539","ghashtag/t27#2410","ghashtag/t27#2334","ghashtag/t27#2266","ghashtag/t27#2059","ghashtag/t27#1040","ghashtag/tri-net#381","ghashtag/trinity-fpga#81"]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3371","ghashtag/t27#2576","ghashtag/t27#2021","ghashtag/t27#1272","ghashtag/t27#1249","ghashtag/tri-net#87","ghashtag/tri-net#84","ghashtag/tri-net#82","ghashtag/trinity-fpga#770","ghashtag/trios#1646","ghashtag/trios#1643","ghashtag/trios#1616","ghashtag/trios#1591","ghashtag/trios#1540"]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3081","ghashtag/tri-net#11","ghashtag/trinity-fpga#32","ghashtag/trios#1671","ghashtag/trios#1647","ghashtag/trios#1640","ghashtag/trios#1623","ghashtag/trios#1617"]},{"specId":"be6457186936be3d51890416d5440ada3e39561297380e983ae709eca28d727a","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3370","ghashtag/t27#2715","ghashtag/t27#2539","ghashtag/trinity-fpga#34","ghashtag/trios#1643","ghashtag/trios#1621"]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3041","ghashtag/t27#2977","ghashtag/t27#2404","ghashtag/trinity-fpga#702","ghashtag/trios#1532"]},{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","repos":["ghashtag/trinity-fpga","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/trinity-fpga#199","ghashtag/trinity-fpga#48","ghashtag/trinity-fpga#20","ghashtag/tt-trinity-gamma#93"]},{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3041","ghashtag/t27#2977","ghashtag/trinity-fpga#702","ghashtag/trios#1532"]},{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","repos":["ghashtag/t27","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/t27#3157","ghashtag/t27#1989","ghashtag/tt-trinity-corona#1"]},{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2043","ghashtag/t27#1997","ghashtag/tri-net#1","ghashtag/trinity-fpga#17"]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3243","ghashtag/t27#2860","ghashtag/t27#2764","ghashtag/t27#2439","ghashtag/t27#2134","ghashtag/t27#1981","ghashtag/t27#1420","ghashtag/trinity-fpga#770","ghashtag/trios#1606","ghashtag/trios#1599","ghashtag/trios#1583","ghashtag/trios#1581","ghashtag/trios#1555"]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3243","ghashtag/t27#2410","ghashtag/t27#2288","ghashtag/t27#2015","ghashtag/t27#1990","ghashtag/trinity-fpga#81","ghashtag/trinity-fpga#20","ghashtag/trios#1632","ghashtag/trios#1597","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"5cfa56c009dd16e0297d7e1cec05ea6ab92be4ef6a59d5fdcc113cf5bd305e17","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3513","ghashtag/t27#3141","ghashtag/t27#2905","ghashtag/t27#2880","ghashtag/t27#2658","ghashtag/t27#2370","ghashtag/t27#2131","ghashtag/t27#2019","ghashtag/tri-net#12"]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3404","ghashtag/t27#2647","ghashtag/t27#2410","ghashtag/t27#2241","ghashtag/t27#1984","ghashtag/t27#1972","ghashtag/t27#1458","ghashtag/tri-net#381","ghashtag/trinity-fpga#770","ghashtag/trinity-fpga#740"]},{"specId":"1320b9a78e97930065df449045d9bd7a344d12c8bf277cc9b93e9a3eafc6eb65","repos":["ghashtag/t27","ghashtag/trinity","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2714","ghashtag/t27#2675","ghashtag/t27#2348","ghashtag/t27#2241","ghashtag/t27#2021","ghashtag/t27#1420","ghashtag/trinity#616","ghashtag/trinity-fpga#730","ghashtag/trinity-fpga#633"]},{"specId":"19a38ede7b1e6ffc002f35652a9dacbb57b17129e5586d72d7f7c2a1b9a6b684","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#3564","ghashtag/t27#3041","ghashtag/t27#2713","ghashtag/t27#2306","ghashtag/t27#2106","ghashtag/tri-net#6","ghashtag/tri-net#2","ghashtag/trios#1556","ghashtag/trios#1484"]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2043","ghashtag/t27#1997","ghashtag/t27#1901","ghashtag/t27#1857","ghashtag/t27#1855","ghashtag/t27#1853","ghashtag/t27#1851","ghashtag/trinity-fpga#17"]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2567","ghashtag/t27#2355","ghashtag/t27#2348","ghashtag/t27#2241","ghashtag/trinity-fpga#740","ghashtag/trinity-fpga#702","ghashtag/trinity-fpga#235","ghashtag/trinity-fpga#61"]},{"specId":"d8bae151e8e10ef75904e5d707f8b04a495e2bde95bba5dc5fc37a0e97c6276e","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#3568","ghashtag/t27#3265","ghashtag/t27#3041","ghashtag/t27#2873","ghashtag/t27#2729","ghashtag/t27#2148","ghashtag/tri-net#6","ghashtag/tri-net#2","ghashtag/trios#1583"]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3333","ghashtag/t27#2703","ghashtag/t27#2569","ghashtag/t27#2411","ghashtag/t27#1841","ghashtag/t27#1276","ghashtag/tri-net#96"]},{"specId":"45dfe18bac1831d88bb31ddcdb02a55f65d0f59ee769decf3e65bec2551637f8","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3571","ghashtag/t27#2778","ghashtag/t27#2479","ghashtag/t27#2137","ghashtag/t27#2021","ghashtag/trinity-fpga#648"]},{"specId":"bbe6e9e80c190f62e73d75eccf3ca4d54cebedcad2580333be17599f9c52560e","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3039","ghashtag/t27#2646","ghashtag/t27#2218","ghashtag/trios#1643","ghashtag/trios#1621"]},{"specId":"1381cfeb64ab2e0cbf70ca43b02d2baa5e0b14051b9e9cf5eafcfed62f1157e5","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2873","ghashtag/t27#2827","ghashtag/t27#2683","ghashtag/t27#2537","ghashtag/trinity-fpga#78"]},{"specId":"212174d192839f09518697aa1bbdab48ce86d2f38b4b9fd8ad13dcb115153d8b","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3364","ghashtag/t27#2724","ghashtag/t27#2718","ghashtag/t27#2717","ghashtag/tri-net#85"]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3004","ghashtag/t27#2041","ghashtag/tri-net#68","ghashtag/tri-net#61","ghashtag/tri-net#16","ghashtag/trinity-fpga#32"]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2569","ghashtag/t27#2411","ghashtag/t27#1841","ghashtag/t27#1276","ghashtag/tri-net#96"]},{"specId":"f95cce7a0f0f1778cc112e88eaa2c1e17c5bf6e7ae61941aa17176d73c3cfbd9","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3568","ghashtag/t27#3232","ghashtag/t27#3141","ghashtag/t27#2508","ghashtag/trinity-fpga#428"]},{"specId":"2621efc18ca1011acb3ad4fe138ff72f70162e05cdab449c568451185278110a","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3035","ghashtag/t27#2830","ghashtag/t27#2686","ghashtag/trinity-fpga#648"]},{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#3169","ghashtag/t27#2660","ghashtag/tri-net#15","ghashtag/tt-trinity-gamma#81"]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2393","ghashtag/t27#2131","ghashtag/tri-net#13"]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1996","ghashtag/tri-net#15","ghashtag/tri-net#11"]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","repos":["ghashtag/t27","ghashtag/trios","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/t27#2406","ghashtag/trios#1634","ghashtag/trios#1279","ghashtag/tt-trinity-corona#1"]},{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#2393","ghashtag/t27#1458","ghashtag/trinity-fpga#82","ghashtag/tt-trinity-gamma#80"]},{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#2328","ghashtag/tri-net#76","ghashtag/trios#1618"]},{"specId":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2694","ghashtag/trinity-fpga#206"]},{"specId":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2694","ghashtag/trinity-fpga#206"]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#2406","ghashtag/tri-net#66","ghashtag/trios#1279"]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2041","ghashtag/tri-net#61","ghashtag/trinity-fpga#32"]},{"specId":"08be8ec665a45241cc29409d2a8194639fcdbf70249f728724472226876c2fe7","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3473","ghashtag/t27#3377","ghashtag/t27#3272","ghashtag/t27#3243","ghashtag/t27#3225","ghashtag/t27#3140","ghashtag/t27#3038","ghashtag/t27#3035","ghashtag/t27#2880","ghashtag/t27#2860","ghashtag/t27#2723","ghashtag/t27#2710","ghashtag/t27#2706","ghashtag/t27#2705","ghashtag/t27#2703","ghashtag/t27#2662","ghashtag/t27#2658","ghashtag/t27#2655","ghashtag/t27#2654","ghashtag/t27#2650","ghashtag/t27#2647","ghashtag/t27#2645","ghashtag/t27#2643","ghashtag/t27#2635","ghashtag/t27#2607","ghashtag/t27#2606","ghashtag/t27#2601","ghashtag/t27#2591","ghashtag/t27#2589","ghashtag/t27#2588","ghashtag/t27#2584","ghashtag/t27#2573","ghashtag/t27#2569","ghashtag/t27#2534","ghashtag/t27#2532","ghashtag/t27#2531","ghashtag/t27#2529","ghashtag/t27#2527","ghashtag/t27#2526","ghashtag/t27#2525","ghashtag/t27#2483","ghashtag/t27#2433","ghashtag/t27#2411","ghashtag/t27#2398","ghashtag/t27#2397","ghashtag/t27#2393","ghashtag/t27#2347","ghashtag/t27#2152","ghashtag/t27#2128","ghashtag/t27#2126","ghashtag/t27#2123","ghashtag/t27#2121","ghashtag/t27#2118","ghashtag/t27#2113","ghashtag/t27#2110","ghashtag/t27#2108","ghashtag/t27#2106","ghashtag/t27#2105","ghashtag/t27#1901","ghashtag/t27#1857","ghashtag/t27#1855","ghashtag/t27#1853","ghashtag/t27#1851","ghashtag/t27#1848","ghashtag/t27#1845","ghashtag/t27#1843","ghashtag/t27#1841","ghashtag/t27#1458","ghashtag/t27#1276","ghashtag/tri-net#384"]},{"specId":"70f22ba71969ea517d83f5e4e8492c8c70aa2163692552df921891797ffb5c10","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3041","ghashtag/t27#2675","ghashtag/t27#2565","ghashtag/t27#2564","ghashtag/t27#2545","ghashtag/t27#2534","ghashtag/t27#2532","ghashtag/t27#2410","ghashtag/t27#2368","ghashtag/t27#2278","ghashtag/t27#2032","ghashtag/t27#2017","ghashtag/t27#1974","ghashtag/t27#1901","ghashtag/t27#1857","ghashtag/t27#1855","ghashtag/t27#1853","ghashtag/t27#1851","ghashtag/t27#1848","ghashtag/t27#1845","ghashtag/t27#1843","ghashtag/t27#1841","ghashtag/t27#1811","ghashtag/t27#1447","ghashtag/t27#1272","ghashtag/t27#1270","ghashtag/trinity-fpga#56"]},{"specId":"39e084f039abb9cbee202b63c75fd7e9051046ae534051c8428e99ba8f87cbfd","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3232","ghashtag/t27#3034","ghashtag/t27#2961","ghashtag/t27#2800","ghashtag/t27#2767","ghashtag/t27#2698","ghashtag/t27#2697","ghashtag/t27#2578","ghashtag/t27#2571","ghashtag/t27#2569","ghashtag/t27#2532","ghashtag/t27#2253","ghashtag/t27#2118","ghashtag/t27#2094","ghashtag/t27#2067","ghashtag/t27#2052","ghashtag/t27#2051","ghashtag/trios#1570"]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2774","ghashtag/t27#2673","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2105","ghashtag/t27#2104","ghashtag/t27#2102","ghashtag/t27#2101","ghashtag/t27#2098","ghashtag/t27#2092","ghashtag/t27#2091","ghashtag/t27#2079","ghashtag/t27#2070","ghashtag/t27#2069","ghashtag/t27#2067","ghashtag/t27#2059","ghashtag/tri-net#5"]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3232","ghashtag/t27#3034","ghashtag/t27#2961","ghashtag/t27#2800","ghashtag/t27#2532","ghashtag/t27#2411","ghashtag/t27#2352","ghashtag/t27#2253","ghashtag/t27#2118","ghashtag/t27#2051","ghashtag/t27#1448","ghashtag/t27#1433","ghashtag/trios#1570"]},{"specId":"e551ef5f6a5bb1972bdd909e02829a301a0c969be0619f2edfc970a41d14b5ce","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3518","ghashtag/t27#2830","ghashtag/t27#2635","ghashtag/t27#2353","ghashtag/t27#2100","ghashtag/t27#2099","ghashtag/t27#1997","ghashtag/t27#1987","ghashtag/t27#1984","ghashtag/t27#1981","ghashtag/t27#1979","ghashtag/trinity-fpga#56","ghashtag/trinity-fpga#20"]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3404","ghashtag/t27#2834","ghashtag/t27#2827","ghashtag/t27#2706","ghashtag/t27#2701","ghashtag/t27#2677","ghashtag/t27#2539","ghashtag/t27#2067","ghashtag/t27#2052","ghashtag/trinity-fpga#78","ghashtag/trinity-fpga#29","ghashtag/trinity-fpga#19"]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","repos":["ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/trinity-fpga#233","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"465bfd894a05279f593458eb81322f2032c3800fcb3ed95803cba0ccb5f9fa40","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3566","ghashtag/t27#1901","ghashtag/t27#1857","ghashtag/t27#1855","ghashtag/t27#1853","ghashtag/t27#1851","ghashtag/t27#1848","ghashtag/t27#1845","ghashtag/t27#1843","ghashtag/t27#1841","ghashtag/trios#1527"]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3243","ghashtag/t27#2719","ghashtag/t27#2670","ghashtag/t27#2643","ghashtag/t27#2525","ghashtag/t27#1983","ghashtag/t27#1970","ghashtag/t27#1458","ghashtag/trinity-fpga#664"]},{"specId":"ae3a7935ffc47b75ad328249c4cca737f67377686264d59c6960489ecc4e798a","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2706","ghashtag/t27#2559","ghashtag/trios#1665","ghashtag/trios#1643","ghashtag/trios#1627","ghashtag/trios#1607","ghashtag/trios#1582","ghashtag/trios#1551","ghashtag/trios#1519"]},{"specId":"d7d1a4226e4bed59007f2bf401bb2475f2adfa1fc80d66a4b9276b7025698b34","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3566","ghashtag/t27#3512","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#2851","ghashtag/t27#2633","ghashtag/t27#2398","ghashtag/trios#1527"]},{"specId":"40296ce208f4cadfca3726264470fdd6385ddcc96a636520c66d41902ed2ff71","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2713","ghashtag/t27#2405","ghashtag/t27#2085","ghashtag/t27#2056","ghashtag/trios#1655","ghashtag/trios#1570","ghashtag/trios#1551","ghashtag/trios#1542"]},{"specId":"ee7ef054aaf58347e46ba2ec6d01dd13d34c39d98a82dc8e2b43bd8663a276ba","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2893","ghashtag/t27#2724","ghashtag/t27#2719","ghashtag/t27#2715","ghashtag/t27#2650","ghashtag/t27#2647","ghashtag/t27#2646","ghashtag/tri-net#85"]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2617","ghashtag/t27#2589","ghashtag/t27#2536","ghashtag/t27#2526","ghashtag/t27#1288","ghashtag/trinity-fpga#85"]},{"specId":"047f45886e3c8de4bb0a634d2f25d2aa30dc77d9bdfa255127d4b7e7b861506d","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2807","ghashtag/t27#2635","ghashtag/t27#2559","ghashtag/t27#2353","ghashtag/trinity-fpga#81","ghashtag/trinity-fpga#20"]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2593","ghashtag/t27#2143","ghashtag/t27#2047","ghashtag/t27#1420","ghashtag/t27#1282","ghashtag/trinity-fpga#702"]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2593","ghashtag/t27#2143","ghashtag/t27#2047","ghashtag/t27#1420","ghashtag/t27#1282","ghashtag/trinity-fpga#702"]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2539","ghashtag/trios#1655","ghashtag/trios#1570","ghashtag/trios#1551","ghashtag/trios#1542","ghashtag/trios#1350"]},{"specId":"f08cf49be7b929fa2eb1646c92c88b5bf0138a0ce4dc26e82ffa4157b7a24114","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2992","ghashtag/t27#2334","ghashtag/t27#2266","ghashtag/t27#2238","ghashtag/t27#1726","ghashtag/trinity-fpga#81"]},{"specId":"531f5beba1720e88b8a9a02823fce4cf8796e77160790ad1c8200797627c1d26","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3514","ghashtag/t27#3150","ghashtag/t27#3134","ghashtag/t27#2835","ghashtag/trios#1540"]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1979","ghashtag/tri-net#84","ghashtag/tri-net#14","ghashtag/tri-net#11","ghashtag/tri-net#10"]},{"specId":"dfd347f9c1b3db6a4f38f0a0c499165a0ffed214900317d0cc195c2b43b2248b","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3474","ghashtag/t27#2835","ghashtag/t27#2645","ghashtag/t27#2591","ghashtag/trinity-fpga#770"]},{"specId":"efa4078fd25e85d28469e651dcd081d7d6798ed10448982d02a8871c6a3448fd","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3364","ghashtag/t27#2717","ghashtag/t27#2349","ghashtag/t27#2114","ghashtag/trios#1525"]},{"specId":"1927e37740cea72ae7f5c392e534e5989b2ff1205a9294a4a6decd1ce9ce386a","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2662","ghashtag/t27#2609","ghashtag/t27#2160","ghashtag/trinity-fpga#80"]},{"specId":"61a188ad67d6a3757c24d4227e8541d9a8e1c5a785b885b833965d12be1ab5fc","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2654","ghashtag/t27#2646","ghashtag/trinity-fpga#20","ghashtag/trinity-fpga#14"]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2873","ghashtag/t27#2683","ghashtag/t27#2537","ghashtag/trinity-fpga#78"]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","repos":["ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/tri-net#76","ghashtag/tri-net#68","ghashtag/tri-net#58","ghashtag/trinity-fpga#684"]},{"specId":"80e970c2be2a313cfca43bc0bbb20397259952dd2d26af5b1359e1d26ea1a4b3","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2056","ghashtag/trios#1655","ghashtag/trios#1551","ghashtag/trios#1542"]},{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3532","ghashtag/t27#3081","ghashtag/trios#1484","ghashtag/trios#1476"]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3474","ghashtag/t27#3370","ghashtag/t27#2697","ghashtag/trinity-fpga#34"]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2288","ghashtag/trinity-fpga#684","ghashtag/trinity-fpga#233"]},{"specId":"81d095cea3fcb1403aace5532ec98f30c9846d032986f3db466bcf6c883e8fdc","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3514","ghashtag/t27#2148","ghashtag/trios#1583"]},{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2238","ghashtag/trinity-fpga#19","ghashtag/trinity-fpga#16"]},{"specId":"94b07d6a708c1a40ea01ad735466a1829b08a98ea73d8c8ac62c23dca79fa775","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2056","ghashtag/trios#1655","ghashtag/trios#1542"]},{"specId":"a24c155df18d7bab1f83b764f6fde230985234ad68acf6f40d1336a89d1c2faa","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3514","ghashtag/t27#2609","ghashtag/trinity-fpga#61"]},{"specId":"ead219244963a5bead3e5e04b7c6f49f0f99f62581bd7495eca42e3602380469","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2617","ghashtag/t27#2526","ghashtag/trinity-fpga#85"]},{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2688","ghashtag/t27#2660","ghashtag/trinity-fpga#32"]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1882","ghashtag/trinity-fpga#83","ghashtag/trinity-fpga#32"]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3081","ghashtag/trios#1647","ghashtag/trios#1623"]},{"specId":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","repos":["ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/tri-net#62","ghashtag/trinity-fpga#17"]},{"specId":"081777f7925461ff67fbb7443e370c96bd3f3f78a6296c036de23249a91ab117","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3472","ghashtag/trinity-fpga#206"]},{"specId":"089f57bd6ac32f7823bc8a06be007ddc27710b276853f6d0e9d3de1519c87d79","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3514","ghashtag/trios#1583"]},{"specId":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","repos":["ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/tri-net#12","ghashtag/trinity-fpga#17"]},{"specId":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1970","ghashtag/trinity-fpga#17"]},{"specId":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","repos":["ghashtag/trios","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/trios#1634","ghashtag/tt-trinity-corona#1"]},{"specId":"2eade0fba9b90159413821a1a7dc079d197b1fd7d849c6825e4cfee8feda6d51","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2410","ghashtag/trinity-fpga#81"]},{"specId":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1979","ghashtag/tri-net#11"]},{"specId":"402ebb2274036fffb23ef31ddd4a81532a3ae5db2bc2925851bfe78276923a33","repos":["ghashtag/t27","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#2651","ghashtag/tt-trinity-gamma#81"]},{"specId":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3472","ghashtag/trinity-fpga#206"]},{"specId":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2567","ghashtag/trinity-fpga#31"]},{"specId":"60c01312207032552435e0842e542caa2e267db7950906199c58a0c8b9a5f0f9","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3566","ghashtag/trinity-fpga#736"]},{"specId":"64341742c373e64a2823f6647d0f3898e0a26f6ff9197e3fd3092436f5912cce","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2646","ghashtag/trios#1658"]},{"specId":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1882","ghashtag/tri-net#66"]},{"specId":"6c727d13e4889735bc80ade95073f07d6efad2c15bf20908645292b10c6e862a","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1676","ghashtag/trinity-fpga#61"]},{"specId":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","repos":["ghashtag/t27","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#2660","ghashtag/tt-trinity-gamma#81"]},{"specId":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3140","ghashtag/trinity-fpga#740"]},{"specId":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2406","ghashtag/trios#1279"]},{"specId":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1984","ghashtag/tri-net#381"]},{"specId":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3188","ghashtag/tri-net#12"]},{"specId":"bfcadee3d729e88902e2eb86dbdb9efaa419e2c90a160c293a94265fdcafbd6c","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3567","ghashtag/trinity-fpga#56"]},{"specId":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2137","ghashtag/trinity-fpga#428"]},{"specId":"c757522b59a7fed58d8f2409a674a72f552639d3978979bfc3b685f70e835b58","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2683","ghashtag/trinity-fpga#78"]},{"specId":"d4d622f9fd9fbec6a8d63641fd7c48218d43c41085fb8a71c94a520f5b33c186","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3570","ghashtag/trinity-fpga#78"]},{"specId":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3188","ghashtag/tri-net#12"]},{"specId":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","repos":["ghashtag/t27","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#3169","ghashtag/tt-trinity-gamma#81"]},{"specId":"fae8329c717a697cf1938a8aece2f3b92ab31f6ac7bea6abfdeea41d5b11dea7","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#1726","ghashtag/trios#1493"]}]} +{"version":1,"at":"2026-09-15T15:25:38.173Z","provenance":{"repo":"gHashTag/t27","commit":"93228e64056d9e99dccf4982baf99451fd1f45df","shortCommit":"93228e640","specsOrCompilerDirty":false,"defaultRef":"master","t27SpecsChecked":1068,"unreachableFromDefaultRef":["specs/demos/hello_world.t27","specs/numeric/requant_boundary.t27","specs/tutorial/01_values_and_types.t27","specs/tutorial/02_functions.t27","specs/tutorial/03_operators.t27","specs/tutorial/04_control_flow.t27","specs/tutorial/05_widths_and_casts.t27","specs/tutorial/06_structs_enums_switch.t27","specs/tutorial/07_tests_invariants_benches.t27","specs/tutorial/08_modules_and_arrays.t27","vscode-trinity-swe/test_highlight.t27"],"source":"github tarball gHashTag/t27@master","overlayRefs":[{"ref":"fix/reject-vibee-specs","commit":"bc0fa7f168026b9f88bcf8d7e799b12ad6ad8702","added":11}],"wasmSource":"the copy already vendored here","dirty":false,"manifestSha256":"d03407c0fefe8cf1aaed1b85acda93964dbb3e213e0dd64cc015665e806272a8","indexerSha256":"3d49bc7cf0b36ce075d3fa014760e28a1d46104db4ee9681d27fc04fa1ddce96","repos":[{"repo":"t27","commit":"93228e64056d9e99dccf4982baf99451fd1f45df","specs":1068},{"repo":"tri-net","commit":"3ffd1bd0ac9f5aea18c407ec386ca179eb61a41e","specs":113},{"repo":"trinity-fpga","commit":"5614a4ab494a7b9feabe918ef3fa8a1d24425b83","specs":64},{"repo":"trinity","commit":"234fefa3c249d92e63abeaa655b385d9145fb221","specs":3},{"repo":"tt-trinity-corona","commit":"dddf6887e54aa847a9a0f4c835fbc392c8cc6c12","specs":5},{"repo":"dmitrii-f-t27/trinity-memory","commit":"f07a667250bb8f9ad88133e75a02160af3275c61","specs":37,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":0},{"repo":"trios","commit":"35731a57e7625614984d92d1fa677d54c1c808ef","specs":58,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":13},{"repo":"tt-trinity-euler","commit":"fde97085a5ce9acd95721c69925f621f56228cff","specs":46,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":3},{"repo":"tt-trinity-gamma","commit":"a10c4d2e52a06586d200213a6133b4f313ff32a6","specs":1,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":48},{"repo":"turbobaby-user-bot","commit":"e9356f1f0664e8f6d963c52035a9d310761ca9a8","specs":12,"discoveredAt":"2026-09-15T14:46:43.844Z","duplicatesSkipped":0}],"duplicatesPreviouslySkipped":29,"healthSource":"vendored manifest claim, not issue acceptance","importResolution":"lexical/path discovery, not compiler linking"},"discovery":{"owner":"gHashTag","owners":["gHashTag","dmitrii-f-t27"],"inventory":128,"inventoryPages":3,"inventoryComplete":true,"catalogSourceReads":[],"catalogSourceFailures":[],"readmeFailures":["ghashtag/ghashtag.github.io","ghashtag/homebrew-trinity","ghashtag/trinity-railway-agent"],"unexpandedWorlds":[],"scope":"Public owner inventories (gHashTag, dmitrii-f-t27) and every vendored catalog source: explicit project descriptions/namespaces, related README outbound links (four expansion rounds), explicit seeds and vendored catalog sources. Not all GitHub; no private repos, enrolled players or presence.","strandClassification":"INFERENCE from repository name/description; navigation taxonomy only","readmes":[{"repo":"dmitrii-f-t27/t27","url":"https://github.com/dmitrii-f-t27/t27/blob/master/README.md"},{"repo":"dmitrii-f-t27/trinity","url":"https://github.com/dmitrii-f-t27/trinity/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-contracts","url":"https://github.com/dmitrii-f-t27/trinity-contracts/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-deck","url":"https://github.com/dmitrii-f-t27/trinity-deck/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-fpga","url":"https://github.com/dmitrii-f-t27/trinity-fpga/blob/main/README.md"},{"repo":"dmitrii-f-t27/trinity-memory","url":"https://github.com/dmitrii-f-t27/trinity-memory/blob/master/README.md"},{"repo":"dmitrii-f-t27/trinity-s3ai","url":"https://github.com/dmitrii-f-t27/trinity-s3ai/blob/main/README.md"},{"repo":"ghashtag/goldenfloats.jl","url":"https://github.com/gHashTag/GoldenFloats.jl/blob/main/README.md"},{"repo":"ghashtag/neuronconstant","url":"https://github.com/gHashTag/NeuronConstant/blob/main/README.md"},{"repo":"ghashtag/paper3-methodology","url":"https://github.com/gHashTag/paper3-methodology/blob/main/README.md"},{"repo":"ghashtag/parameter-golf-trinity","url":"https://github.com/gHashTag/parameter-golf-trinity/blob/main/README.md"},{"repo":"ghashtag/t27","url":"https://github.com/gHashTag/t27/blob/master/README.md"},{"repo":"ghashtag/tri-27","url":"https://github.com/gHashTag/tri-27/blob/main/README.md"},{"repo":"ghashtag/tri-net","url":"https://github.com/gHashTag/tri-net/blob/main/README.md"},{"repo":"ghashtag/trinity","url":"https://github.com/gHashTag/trinity/blob/main/README.md"},{"repo":"ghashtag/trinity-agents","url":"https://github.com/gHashTag/trinity-agents/blob/main/README.md"},{"repo":"ghashtag/trinity-bittensor","url":"https://github.com/gHashTag/trinity-bittensor/blob/main/README.md"},{"repo":"ghashtag/trinity-claraparameter","url":"https://github.com/gHashTag/trinity-claraParameter/blob/main/README.md"},{"repo":"ghashtag/trinity-contracts","url":"https://github.com/gHashTag/trinity-contracts/blob/main/README.md"},{"repo":"ghashtag/trinity-fpga","url":"https://github.com/gHashTag/trinity-fpga/blob/main/README.md"},{"repo":"ghashtag/trinity-node","url":"https://github.com/gHashTag/trinity-node/blob/main/README.md"},{"repo":"ghashtag/trinity-papers-ru","url":"https://github.com/gHashTag/trinity-papers-ru/blob/main/README.md"},{"repo":"ghashtag/trinity-physics","url":"https://github.com/gHashTag/trinity-physics/blob/main/README.md"},{"repo":"ghashtag/trinity-railway","url":"https://github.com/gHashTag/trinity-railway/blob/main/README.md"},{"repo":"ghashtag/trinity-s3ai","url":"https://github.com/gHashTag/trinity-s3ai/blob/main/README.md"},{"repo":"ghashtag/trinity-sdk","url":"https://github.com/gHashTag/trinity-sdk/blob/main/README.md"},{"repo":"ghashtag/trinity-training","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md"},{"repo":"ghashtag/trios","url":"https://github.com/gHashTag/trios/blob/main/README.md"},{"repo":"ghashtag/trios-dwagent","url":"https://github.com/gHashTag/trios-dwagent/blob/main/README.md"},{"repo":"ghashtag/trios-mcp","url":"https://github.com/gHashTag/trios-mcp/blob/main/README.md"},{"repo":"ghashtag/trios-mcp-rag","url":"https://github.com/gHashTag/trios-mcp-rag/blob/main/README.md"},{"repo":"ghashtag/trios-railway","url":"https://github.com/gHashTag/trios-railway/blob/main/README.md"},{"repo":"ghashtag/trios-railway-mcp","url":"https://github.com/gHashTag/trios-railway-mcp/blob/master/README.md"},{"repo":"ghashtag/trios-trainer-igla","url":"https://github.com/gHashTag/trios-trainer-igla/blob/main/README.md"},{"repo":"ghashtag/trios-work","url":"https://github.com/gHashTag/trios-work/blob/feat/phd-physics-data/README.md"},{"repo":"ghashtag/tt-lang-t27","url":"https://github.com/gHashTag/tt-lang-t27/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-corona","url":"https://github.com/gHashTag/tt-trinity-corona/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-euler","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-gamma","url":"https://github.com/gHashTag/tt-trinity-gamma/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-gf16","url":"https://github.com/gHashTag/tt-trinity-gf16/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-holo","url":"https://github.com/gHashTag/tt-trinity-holo/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-max","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-mini","url":"https://github.com/gHashTag/tt-trinity-mini/blob/main/README.md"},{"repo":"ghashtag/tt-trinity-phi","url":"https://github.com/gHashTag/tt-trinity-phi/blob/main/README.md"},{"repo":"ghashtag/turbobaby-user-bot","url":"https://github.com/gHashTag/turbobaby-user-bot/blob/main/README.md"},{"repo":"ghashtag/zig-crypto-mining","url":"https://github.com/gHashTag/zig-crypto-mining/blob/main/README.md"},{"repo":"ghashtag/zig-half","url":"https://github.com/gHashTag/zig-half/blob/main/README.md"},{"repo":"ghashtag/zig-knowledge-graph","url":"https://github.com/gHashTag/zig-knowledge-graph/blob/main/README.md"},{"repo":"ghashtag/zig-physics","url":"https://github.com/gHashTag/zig-physics/blob/main/README.md"},{"repo":"ghashtag/browseros","url":"https://github.com/gHashTag/BrowserOS/blob/dev/README.md"},{"repo":"ghashtag/claim-audit-lab","url":"https://github.com/gHashTag/claim-audit-lab/blob/main/README.md"},{"repo":"ghashtag/gitbutler","url":"https://github.com/gHashTag/gitbutler/blob/master/README.md"},{"repo":"ghashtag/go-half","url":"https://github.com/gHashTag/go-half/blob/main/README.md"},{"repo":"ghashtag/golden-chain-international","url":"https://github.com/gHashTag/golden-chain-international/blob/main/README.md"},{"repo":"ghashtag/vibee-lang","url":"https://github.com/gHashTag/vibee-lang/blob/main/README.md"},{"repo":"ghashtag/zig-golden-float","url":"https://github.com/gHashTag/zig-golden-float/blob/main/README.md"},{"repo":"ghashtag/zig-half-rs","url":"https://github.com/gHashTag/zig-half-rs/blob/main/README.md"},{"repo":"ghashtag/zig-hdc","url":"https://github.com/gHashTag/zig-hdc/blob/main/README.md"}],"worldScan":{"at":"2026-09-15T14:46:43.844Z","spec":{"path":"public/t27/files/specs/catalog/discovery.t27","sha256":"f3c12d757eeb1ad37aacee0baa3c81e2bfe4905d0e799e3f778cae267324f043","module":"catalog_discovery","tests":5,"asserts":18},"owners":["gHashTag","dmitrii-f-t27"],"candidates":133,"founding":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/tt-trinity-corona"],"qualified":["dmitrii-f-t27/trinity-memory","ghashtag/trios","ghashtag/tt-trinity-euler","ghashtag/tt-trinity-gamma","ghashtag/tt-trinity-phi","ghashtag/turbobaby-user-bot"],"codeSearch":{"status":"ok","repos":11},"skipped":{"fork":28,"founding":5,"mirror":1,"no-declarations":5,"no-t27-files":88,"qualified":6}},"discoveredWorlds":61,"gameRoster":"Only source repositories with actual .t27 bytes in the shared catalog. Other discoveries remain in the research report."},"worlds":[{"repo":"dmitrii-f-t27/trinity-memory","owner":"dmitrii-f-t27","description":"Trinity Memory: experimental ternary storage codecs, memory RTL, and device-interface research.","archived":false,"issuesEnabled":true,"strand":"cognition","evidence":[{"kind":"catalog","url":"https://github.com/dmitrii-f-t27/trinity-memory","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/dmitrii-f-t27/trinity-memory","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/dmitrii-f-t27/trinity-memory","detail":"Trinity Memory: experimental ternary storage codecs, memory RTL, and device-interface research."}],"migrationIntent":null,"specCount":37,"backlog":{"repo":"dmitrii-f-t27/trinity-memory","total":0,"loaded":0,"complete":true,"error":null,"observedAt":"2026-09-15T15:23:10.709Z"}},{"repo":"ghashtag/t27","owner":"gHashTag","description":"Spec-first ternary language: .t27 → synthesizable Verilog, bit-exact — the compiler behind Trinity's silicon","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"seed","url":"https://github.com/ghashtag/t27","detail":"Explicit QUEEN / T27 project world"},{"kind":"catalog","url":"https://github.com/ghashtag/t27","detail":"Source repository in the vendored .t27 catalog"},{"kind":"description","url":"https://github.com/ghashtag/t27","detail":"Spec-first ternary language: .t27 → synthesizable Verilog, bit-exact — the compiler behind Trinity's silicon"},{"kind":"readme","url":"https://github.com/gHashTag/GoldenFloats.jl/blob/main/README.md","detail":"Public link from ghashtag/goldenfloats.jl README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/paper3-methodology/blob/main/README.md","detail":"Public link from ghashtag/paper3-methodology README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tri-net/blob/main/README.md","detail":"Public link from ghashtag/tri-net README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-papers-ru/blob/main/README.md","detail":"Public link from ghashtag/trinity-papers-ru README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md","detail":"Public link from ghashtag/trinity-training README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios/blob/main/README.md","detail":"Public link from ghashtag/trios README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-trainer-igla/blob/main/README.md","detail":"Public link from ghashtag/trios-trainer-igla README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-lang-t27/blob/main/README.md","detail":"Public link from ghashtag/tt-lang-t27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-euler README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gamma/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gamma README; association, not verified integration"}],"migrationIntent":null,"specCount":1068,"backlog":{"repo":"ghashtag/t27","total":590,"loaded":590,"complete":true,"error":null,"observedAt":"2026-09-15T15:23:29.413Z"}},{"repo":"ghashtag/tri-net","owner":"gHashTag","description":"TRI-NET — Starlink without satellites: a self-organizing wireless mesh for resilient civilian connectivity (mobile relays + fixed nodes). Trinity Project, Phase 0.","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/tri-net","detail":"Source repository in the vendored .t27 catalog"},{"kind":"description","url":"https://github.com/ghashtag/tri-net","detail":"TRI-NET — Starlink without satellites: a self-organizing wireless mesh for resilient civilian connectivity (mobile relays + fixed nodes). Trinity Project, Phase 0."}],"migrationIntent":null,"specCount":113,"backlog":{"repo":"ghashtag/tri-net","total":37,"loaded":37,"complete":true,"error":null,"observedAt":"2026-09-15T15:24:05.564Z"}},{"repo":"ghashtag/trinity","owner":"gHashTag","description":"The Trinity ternary compute stack — tri CLI · BitNet LLM · VSA · GF16","archived":false,"issuesEnabled":true,"strand":"cognition","evidence":[{"kind":"seed","url":"https://github.com/ghashtag/trinity","detail":"Explicit QUEEN / T27 project world"},{"kind":"catalog","url":"https://github.com/ghashtag/trinity","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/trinity","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/trinity","detail":"The Trinity ternary compute stack — tri CLI · BitNet LLM · VSA · GF16"},{"kind":"readme","url":"https://github.com/gHashTag/t27/blob/master/README.md","detail":"Public link from ghashtag/t27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tri-27/blob/main/README.md","detail":"Public link from ghashtag/tri-27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md","detail":"Public link from ghashtag/trinity-training README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-crypto-mining/blob/main/README.md","detail":"Public link from ghashtag/zig-crypto-mining README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-half/blob/main/README.md","detail":"Public link from ghashtag/zig-half README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-knowledge-graph/blob/main/README.md","detail":"Public link from ghashtag/zig-knowledge-graph README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/go-half/blob/main/README.md","detail":"Public link from ghashtag/go-half README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-golden-float/blob/main/README.md","detail":"Public link from ghashtag/zig-golden-float README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-half-rs/blob/main/README.md","detail":"Public link from ghashtag/zig-half-rs README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/zig-hdc/blob/main/README.md","detail":"Public link from ghashtag/zig-hdc README; association, not verified integration"}],"migrationIntent":null,"specCount":3,"backlog":{"repo":"ghashtag/trinity","total":20,"loaded":20,"complete":true,"error":null,"observedAt":"2026-09-15T15:24:08.420Z"}},{"repo":"ghashtag/trinity-fpga","owner":"gHashTag","description":"Open-source FPGA flow for ternary ML — numeric format catalog, bit-exact on Artix-7, 25 patches merged upstream into openXC7. No Vivado","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/trinity-fpga","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/trinity-fpga","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-training/blob/main/README.md","detail":"Public link from ghashtag/trinity-training README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gf16/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gf16 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-holo/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-holo README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-max README; association, not verified integration"}],"migrationIntent":null,"specCount":64,"backlog":{"repo":"ghashtag/trinity-fpga","total":68,"loaded":68,"complete":true,"error":null,"observedAt":"2026-09-15T15:24:18.202Z"}},{"repo":"ghashtag/trios","owner":"gHashTag","description":"🔱 Trinity Git Orchestrator — MCP server for AI agents to control Git & GitButler via libgit2 + CLI","archived":false,"issuesEnabled":true,"strand":"cognition","evidence":[{"kind":"seed","url":"https://github.com/ghashtag/trios","detail":"Explicit QUEEN / T27 project world"},{"kind":"catalog","url":"https://github.com/ghashtag/trios","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/trios","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/trios","detail":"🔱 Trinity Git Orchestrator — MCP server for AI agents to control Git & GitButler via libgit2 + CLI"},{"kind":"readme","url":"https://github.com/gHashTag/trios-dwagent/blob/main/README.md","detail":"Public link from ghashtag/trios-dwagent README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-mcp-rag/blob/main/README.md","detail":"Public link from ghashtag/trios-mcp-rag README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-railway/blob/main/README.md","detail":"Public link from ghashtag/trios-railway README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-railway-mcp/blob/master/README.md","detail":"Public link from ghashtag/trios-railway-mcp README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-trainer-igla/blob/main/README.md","detail":"Public link from ghashtag/trios-trainer-igla README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-work/blob/feat/phd-physics-data/README.md","detail":"Public link from ghashtag/trios-work README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-euler README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-max README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-phi/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-phi README; association, not verified integration"}],"migrationIntent":null,"specCount":58,"backlog":{"repo":"ghashtag/trios","total":197,"loaded":197,"complete":true,"error":null,"observedAt":"2026-09-15T15:24:33.865Z"}},{"repo":"ghashtag/tt-trinity-corona","owner":"gHashTag","description":"TRI-1 Corona -- Format Conformance Oracle design for GF180MCU (Tiny Tapeout TTGF26a target; not submitted, no die). Numeric-format ROM + reference RTL converters, verified on Artix-7. TRI-NET line; SSOT via gHashTag/t27.","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/tt-trinity-corona","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/tt-trinity-corona","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/tt-trinity-corona","detail":"TRI-1 Corona -- Format Conformance Oracle design for GF180MCU (Tiny Tapeout TTGF26a target; not submitted, no die). Numeric-format ROM + reference RTL converters, verified on Artix-7. TRI-NET line; SSOT via gHashTag/t27."},{"kind":"readme","url":"https://github.com/gHashTag/paper3-methodology/blob/main/README.md","detail":"Public link from ghashtag/paper3-methodology README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trios-mcp-rag/blob/main/README.md","detail":"Public link from ghashtag/trios-mcp-rag README; association, not verified integration"}],"migrationIntent":null,"specCount":5,"backlog":{"repo":"ghashtag/tt-trinity-corona","total":1,"loaded":1,"complete":true,"error":null,"observedAt":"2026-09-15T15:25:04.657Z"}},{"repo":"ghashtag/tt-trinity-euler","owner":"gHashTag","description":"TRI-1 Euler — Trinity e-engine: 16-cell SUPER-CROWN SoC (BLAKE3+BPB+ALU-9+RING27+BitNet+VSA+Lucas POST). TTSKY26b · Apache-2.0 · ternary {-1,0,+1} · SKY130A · Bazaar Green AI","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/tt-trinity-euler","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/tt-trinity-euler","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/tt-trinity-euler","detail":"TRI-1 Euler — Trinity e-engine: 16-cell SUPER-CROWN SoC (BLAKE3+BPB+ALU-9+RING27+BitNet+VSA+Lucas POST). TTSKY26b · Apache-2.0 · ternary {-1,0,+1} · SKY130A · Bazaar Green AI"},{"kind":"readme","url":"https://github.com/gHashTag/t27/blob/master/README.md","detail":"Public link from ghashtag/t27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tri-net/blob/main/README.md","detail":"Public link from ghashtag/tri-net README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-contracts/blob/main/README.md","detail":"Public link from ghashtag/trinity-contracts README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gamma/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gamma README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gf16/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gf16 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-holo/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-holo README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-max README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-mini/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-mini README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-phi/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-phi README; association, not verified integration"}],"migrationIntent":null,"specCount":46,"backlog":{"repo":"ghashtag/tt-trinity-euler","total":82,"loaded":82,"complete":true,"error":null,"observedAt":"2026-09-15T15:25:06.121Z"}},{"repo":"ghashtag/tt-trinity-gamma","owner":"gHashTag","description":"TRI-1 Gamma — Trinity γ-surface: 8×4 / 32-PE full mesh softmax / VSA gradient surface (Euler-Mascheroni). TTSKY26b · Apache-2.0 · ternary · SKY130A · Bazaar Green AI","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/tt-trinity-gamma","detail":"Source repository in the vendored .t27 catalog"},{"kind":"namespace","url":"https://github.com/ghashtag/tt-trinity-gamma","detail":"Explicit TRIOS/TRINITY project namespace; not proof of a runtime dependency"},{"kind":"description","url":"https://github.com/ghashtag/tt-trinity-gamma","detail":"TRI-1 Gamma — Trinity γ-surface: 8×4 / 32-PE full mesh softmax / VSA gradient surface (Euler-Mascheroni). TTSKY26b · Apache-2.0 · ternary · SKY130A · Bazaar Green AI"},{"kind":"readme","url":"https://github.com/gHashTag/GoldenFloats.jl/blob/main/README.md","detail":"Public link from ghashtag/goldenfloats.jl README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/t27/blob/master/README.md","detail":"Public link from ghashtag/t27 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tri-net/blob/main/README.md","detail":"Public link from ghashtag/tri-net README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/trinity-contracts/blob/main/README.md","detail":"Public link from ghashtag/trinity-contracts README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-euler/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-euler README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-gf16/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-gf16 README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-holo/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-holo README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-max/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-max README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-mini/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-mini README; association, not verified integration"},{"kind":"readme","url":"https://github.com/gHashTag/tt-trinity-phi/blob/main/README.md","detail":"Public link from ghashtag/tt-trinity-phi README; association, not verified integration"}],"migrationIntent":null,"specCount":1,"backlog":{"repo":"ghashtag/tt-trinity-gamma","total":139,"loaded":139,"complete":true,"error":null,"observedAt":"2026-09-15T15:25:08.273Z"}},{"repo":"ghashtag/turbobaby-user-bot","owner":"gHashTag","description":"TurboBaby User Bot - Telegram Mini App for motorbike rental & sales in Phuket. Rust + Dioxus + WASM. Spec-first (.t27).","archived":false,"issuesEnabled":true,"strand":"bridge","evidence":[{"kind":"catalog","url":"https://github.com/ghashtag/turbobaby-user-bot","detail":"Source repository in the vendored .t27 catalog"},{"kind":"description","url":"https://github.com/ghashtag/turbobaby-user-bot","detail":"TurboBaby User Bot - Telegram Mini App for motorbike rental & sales in Phuket. Rust + Dioxus + WASM. Spec-first (.t27)."}],"migrationIntent":null,"specCount":12,"backlog":{"repo":"ghashtag/turbobaby-user-bot","total":33,"loaded":33,"complete":true,"error":null,"observedAt":"2026-09-15T15:25:21.852Z"}}],"owners":[{"login":"dmitrii-f-t27","repos":["dmitrii-f-t27/trinity-memory"]},{"login":"gHashTag","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/tt-trinity-corona","ghashtag/tt-trinity-euler","ghashtag/tt-trinity-gamma","ghashtag/turbobaby-user-bot"]}],"players":null,"presence":null,"issues":[{"key":"ghashtag/t27#3672","repo":"ghashtag/t27","number":3672,"title":"agent-provider-chain: the reserve sends a bounded max_tokens; 402 is diagnosed","hits":[{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"MAX_TOKENS:34"},{"kind":"terms","value":"provider, default, model, tokens"}]},{"specId":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"MAX_TOKENS:12"},{"kind":"terms","value":"tokens"}]},{"specId":"7520e251d23861075aa7c4899aee7074e7199364c34f8f3218ee7d7711acd6e6","relation":"candidate","coverage":"unverified","score":77,"reasons":[{"kind":"terms","value":"provider, chain, default, reserve, env, model, skipped, live"}]},{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"default, env, provider, model, tokens"}]}]},{"key":"ghashtag/t27#3624","repo":"ghashtag/t27","number":3624,"title":"Delete the unreachable second loop-helper dispatch block from scripts/tri (master lines 532-551)","hits":[{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":75,"reasons":[{"kind":"terms","value":"delete, gate, route, list, reads, through, unreachable, says"}]}]},{"key":"ghashtag/t27#3619","repo":"ghashtag/t27","number":3619,"title":"[skill] t27/wave-audit","hits":[{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","relation":"reference","coverage":"unverified","score":2044,"reasons":[{"kind":"path","value":"specs/skills/t27-wave-audit.t27"},{"kind":"terms","value":"skills, wave, audit, skill, summary, tags, timeout, min"}]},{"specId":"0d205500e7adf560ff03ecfd59e90ee13b51f4624e27555d4142e5b184100d6b","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"skills, wave, skill, summary, tags, timeout, min"}]},{"specId":"e63fa9e43303eefdf53f1f95499c15bb7794c7f08c9d14c1958f61e362e75ada","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"skills, wave, skill, summary, tags, timeout, min"}]}]},{"key":"ghashtag/t27#3591","repo":"ghashtag/t27","number":3591,"title":"Implement the four stubbed functions in `TriCsv` and replace its four placeholder tests (specs/tri/encoding/csv.t27)","hits":[{"specId":"c9417445533676df65424ac0b373d1c1c21d3f92542dfbd77e61a06a0a2f60d1","relation":"reference","coverage":"unverified","score":2044,"reasons":[{"kind":"path","value":"specs/tri/encoding/csv.t27"},{"kind":"symbol","value":"CsvRow:13"},{"kind":"symbol","value":"CsvDocument:16"},{"kind":"terms","value":"encoding, csv, row, document, parse, set, serialize"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"specs/test_framework/runner.t27"},{"kind":"terms","value":"framework, runner, default, format, block, gate, reports, print"}]},{"specId":"67b126ee510d34e78677d12e64b2b2aacf9951410adc6f3338018101e0e112c0","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/api/sdk_contract.t27"},{"kind":"terms","value":"api, sdk, contract, store, contains, clear, sequence, find"}]},{"specId":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/vsa/sequence_hdc.t27"},{"kind":"terms","value":"vsa, sequence, hdc, order, default, chars, item, store"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"symbol","value":"index_of:67"},{"kind":"terms","value":"collections, array, slice, range, empty, contains, index, concat"}]}]},{"key":"ghashtag/t27#3590","repo":"ghashtag/t27","number":3590,"title":"Implement the six stubbed functions in `TriTrie`, replace their generated signatures, and replace the six placeholder tests (specs/tri/trees/trie.t27)","hits":[{"specId":"b0439804871b40fdec6d6bd98dfe3f658e7a091e0f7d378d5d9b78999a5335de","relation":"reference","coverage":"unverified","score":2049,"reasons":[{"kind":"path","value":"specs/tri/trees/trie.t27"},{"kind":"symbol","value":"TrieNode:13"},{"kind":"symbol","value":"has_prefix:44"},{"kind":"symbol","value":"keys_with_prefix:49"},{"kind":"terms","value":"trees, trie, node, empty, insert, prefix, keys, remove"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"terms","value":"collections, array, slice, range, empty, contains, index, concat"}]},{"specId":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/collections/linked_list.t27"},{"kind":"symbol","value":"ListNode:13"},{"kind":"terms","value":"collections, linked, list, node, init, remove, deinit"}]},{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/tri/math/bezier.t27"},{"kind":"symbol","value":"BezierCurve:18"},{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"math, bezier, point, curve, default"}]},{"specId":"320bbf24c3e227fc457fe90d95b24bf7d06dc2e24ed0ae780e3224fb281a5f75","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/account/repo.t27"},{"kind":"terms","value":"account, access, state, list, remove, set"}]}]},{"key":"ghashtag/t27#3589","repo":"ghashtag/t27","number":3589,"title":"Implement the six stubbed functions in `TriFenwick` on a stated index convention and replace its six placeholder tests (specs/tri/trees/fenwick_tree.t27)","hits":[{"specId":"13b3fa04c5f6561717e1897221fac69f797143f8630f44d037e070de3877b05c","relation":"reference","coverage":"unverified","score":2051,"reasons":[{"kind":"path","value":"specs/tri/trees/fenwick_tree.t27"},{"kind":"symbol","value":"FenwickTree:13"},{"kind":"symbol","value":"range_query:39"},{"kind":"terms","value":"trees, fenwick, tree, init, build, query, range, deinit"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"terms","value":"collections, array, slice, range, empty, contains, index, reverse"}]},{"specId":"d4fff09b1c7e86fca582abd18362a0dafd271e3e11b8bbdbe13f257d8e71a17d","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/tri/trees/segment_tree.t27"},{"kind":"terms","value":"trees, segment, tree, init, query, deinit"}]},{"specId":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/tri/collections/linked_list.t27"},{"kind":"symbol","value":"LinkedList:19"},{"kind":"terms","value":"collections, linked, list, node, init, append, remove, deinit"}]},{"specId":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/tri/collections/ring_buffer.t27"},{"kind":"terms","value":"collections, ring, buffer, push, empty"}]}]},{"key":"ghashtag/t27#3588","repo":"ghashtag/t27","number":3588,"title":"Implement the seven stubbed functions in `TriMatrix`, replace their placeholder signatures, and replace its seven dead tests (specs/tri/math/matrix.t27)","hits":[{"specId":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","relation":"reference","coverage":"unverified","score":2077,"reasons":[{"kind":"path","value":"specs/file/operations.t27"},{"kind":"terms","value":"operations, read, range, binary, exists, write, append, edit"}]},{"specId":"87edc9316e590def9f59b546eddfbeee0457669bd03e565e870862d0ea4a6fb7","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"specs/tri/math/matrix.t27"},{"kind":"terms","value":"math, matrix, init, set, multiply, transpose, identity, deinit"}]},{"specId":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/tri/collections/linked_list.t27"},{"kind":"symbol","value":"ListNode:13"},{"kind":"symbol","value":"LinkedList:19"},{"kind":"terms","value":"collections, linked, list, node, init, append, remove, deinit"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"terms","value":"collections, array, slice, range, empty, index, reverse, concat"}]},{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/tri/math/bezier.t27"},{"kind":"symbol","value":"BezierCurve:18"},{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"math, bezier, point, curve, default"}]}]},{"key":"ghashtag/t27#3587","repo":"ghashtag/t27","number":3587,"title":"Implement the five stubbed functions in `TriProbability`, replace their placeholder signatures, and replace their five placeholder tests (specs/tri/math/probability.t27)","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2104,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, shift, exp, min, phi, zero, inf"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2104,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, shift, exp, min, phi, zero, inf"}]},{"specId":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","relation":"reference","coverage":"unverified","score":2059,"reasons":[{"kind":"path","value":"specs/memory/formula_embed.t27"},{"kind":"symbol","value":"embed_formula:118"},{"kind":"terms","value":"memory, formula, embed, embedding, complexity, phi, sector, base"}]},{"specId":"ae64dc117c95217e11bbf10e7a52d5c474418a7600f6b0a7f4d58b79e1637193","relation":"reference","coverage":"unverified","score":2053,"reasons":[{"kind":"path","value":"specs/tri/math/probability.t27"},{"kind":"terms","value":"math, probability, bernoulli, binomial, poisson, normal, exponential"}]},{"specId":"be8b3a944add54031ff82e824411ad3bfcfaed42a8150b3131649cf1d3080a92","relation":"reference","coverage":"unverified","score":2045,"reasons":[{"kind":"path","value":"specs/math/radix_economy.t27"},{"kind":"terms","value":"math, radix, economy, base, density, range, binary, exp"}]}]},{"key":"ghashtag/t27#3586","repo":"ghashtag/t27","number":3586,"title":"Implement the five stubbed functions in `TriEither`, replace their placeholder `-> void` signatures, and replace its five dead tests (specs/tri/collections/either.t27)","hits":[{"specId":"e67d13adcf989dad50feda8d7c5a53a0fa8f96486804feb26b22a582ebb7582d","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"specs/tri/collections/either.t27"},{"kind":"symbol","value":"is_left:34"},{"kind":"symbol","value":"is_right:39"},{"kind":"terms","value":"collections, either, left, right, unwrap"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"terms","value":"collections, array, range, empty, contains, index"}]},{"specId":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/account/schema.t27"},{"kind":"terms","value":"account, schema, access, success, default"}]},{"specId":"979b29b19e25610e1bdaac20f03ff6c2f302cf6809ccdbdd6b6f900b91031202","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/tri/collections/result.t27"},{"kind":"symbol","value":"unwrap_or:34"},{"kind":"symbol","value":"is_error:39"},{"kind":"terms","value":"collections, err, unwrap"}]},{"specId":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"LinkedList:19"},{"kind":"terms","value":"collections, linked, list, node, deinit"}]}]},{"key":"ghashtag/t27#3585","repo":"ghashtag/t27","number":3585,"title":"Implement the four stubbed functions in `TriTuple` with corrected signatures and replace its four placeholder tests (specs/tri/collections/tuple.t27)","hits":[{"specId":"8fc1e6d391ef81cb63d49bc1d38dc95d6a20bc819fd8da94b111dac89e57990a","relation":"reference","coverage":"unverified","score":2059,"reasons":[{"kind":"path","value":"specs/tri/collections/tuple.t27"},{"kind":"terms","value":"collections, tuple, tuple2, tuple3, pair, triple, fst, snd"}]},{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/tri/math/bezier.t27"},{"kind":"symbol","value":"BezierCurve:18"},{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"math, bezier, point, curve, default"}]},{"specId":"e1355c4ae9276302788b24e68f1229d728b8b23b52f3422a96f55d68ab6e0b62","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/account/auth.t27"},{"kind":"terms","value":"account, auth, parse"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"block, section, case, parse, allocator, create, list, argv"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, list, total, project, build"}]}]},{"key":"ghashtag/t27#3584","repo":"ghashtag/t27","number":3584,"title":"Implement the four stubbed functions in `TriMaybe`, replace their placeholder signatures, and replace the four dead tests (specs/tri/collections/maybe.t27)","hits":[{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"reference","coverage":"unverified","score":2044,"reasons":[{"kind":"path","value":"specs/config/migrate.t27"},{"kind":"terms","value":"config, migrate, steps, action, info, create, failure, target"}]},{"specId":"da83784231ce7b0004279a51913a711527f55d8b2150da9a39fb39b307fab17f","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/tri/collections/maybe.t27"},{"kind":"terms","value":"collections, maybe, pure, bind, map, join"}]},{"specId":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"specs/runtime/execute.t27"},{"kind":"symbol","value":"TaskResult:74"},{"kind":"terms","value":"runtime, execute, default, length, state, reason, create, resolve"}]},{"specId":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"symbol","value":"SSEEvent:72"},{"kind":"terms","value":"sse, event, field, sseevent, create, set, state"}]},{"specId":"e1355c4ae9276302788b24e68f1229d728b8b23b52f3422a96f55d68ab6e0b62","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/account/auth.t27"},{"kind":"symbol","value":"UserInfo:63"},{"kind":"terms","value":"account, auth, token, config, user, info, parse"}]}]},{"key":"ghashtag/t27#3583","repo":"ghashtag/t27","number":3583,"title":"Implement the five stubbed functions in `TriStack`, correct their placeholder signatures, and replace its five placeholder tests (specs/tri/collections/stack.t27)","hits":[{"specId":"0db5f4adc1bc7230e3e6a2b4396c25429d35834ace309a10b4601adaea6b53cc","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/tri/collections/stack.t27"},{"kind":"symbol","value":"is_empty:42"},{"kind":"terms","value":"collections, stack, empty, push, pop, peek"}]},{"specId":"e1355c4ae9276302788b24e68f1229d728b8b23b52f3422a96f55d68ab6e0b62","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/account/auth.t27"},{"kind":"terms","value":"account, auth, parse"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"ArrayView:13"},{"kind":"symbol","value":"is_empty:57"},{"kind":"symbol","value":"index_of:67"},{"kind":"terms","value":"collections, array, view, slice, range, empty, contains, index"}]},{"specId":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"is_empty:57"},{"kind":"terms","value":"collections, ring, buffer, push, pop, empty, full"}]},{"specId":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"is_empty:145"},{"kind":"terms","value":"state, empty, full, fill, space, push, pop"}]}]},{"key":"ghashtag/t27#3582","repo":"ghashtag/t27","number":3582,"title":"Implement the four stubbed functions in `TriResult`, correct their placeholder signatures, and replace its four placeholder tests (specs/tri/collections/result.t27)","hits":[{"specId":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","relation":"reference","coverage":"unverified","score":2069,"reasons":[{"kind":"path","value":"specs/vsa/sequence_hdc.t27"},{"kind":"symbol","value":"NGramEncoder:50"},{"kind":"symbol","value":"EncodedSequence:76"},{"kind":"symbol","value":"encodeNGram:124"},{"kind":"terms","value":"vsa, sequence, hdc, ngram, order, default, chars, memory"}]},{"specId":"67b126ee510d34e78677d12e64b2b2aacf9951410adc6f3338018101e0e112c0","relation":"reference","coverage":"unverified","score":2056,"reasons":[{"kind":"path","value":"specs/api/sdk_contract.t27"},{"kind":"terms","value":"api, sdk, contract, hypervector, encode, memory, store, contains"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"reference","coverage":"unverified","score":2046,"reasons":[{"kind":"path","value":"specs/test_framework/runner.t27"},{"kind":"symbol","value":"exit_with_code:246"},{"kind":"terms","value":"framework, runner, default, block, invariant, gate, reports, print"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, zero, one, per, encoding, compare, equal, right"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"terms","value":"collections, array, range, empty, contains, index"}]}]},{"key":"ghashtag/t27#3576","repo":"ghashtag/t27","number":3576,"title":"[spec][Trinity S08] specs/memory/tmem/session.t27: durable session/checkpoint record with provenance, recovery, retention and evidence classes","hits":[{"specId":"344f42e42174ead35a201804037295018edd2a0b4c05cd17426cc7d92239d51a","relation":"reference","coverage":"unverified","score":2112,"reasons":[{"kind":"path","value":"specs/memory/tmem/types.t27"},{"kind":"symbol","value":"TMS_TMEM_MAX_PAYLOAD_BYTES:74"},{"kind":"symbol","value":"TMS_CRC32_POLY:77"},{"kind":"symbol","value":"TMS_CRC32_INIT:78"},{"kind":"symbol","value":"TMS_CRC32_XOR_OUT:79"},{"kind":"symbol","value":"tms_pow3:104"},{"kind":"terms","value":"memory, tmem, tms, zero, invalid, group, magic, header"}]},{"specId":"26703224e3fce9bbdcdd15281aa883f704a54855810c53d3db1688f7feb9ddba","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/brain/unified_state.t27"},{"kind":"terms","value":"brain, unified, state, phi, per, level, init"}]},{"specId":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","relation":"reference","coverage":"unverified","score":1112,"reasons":[{"kind":"symbol","value":"TMS_TMEM_MAX_PAYLOAD_BYTES:74"},{"kind":"symbol","value":"TMS_CRC32_POLY:77"},{"kind":"symbol","value":"TMS_CRC32_INIT:78"},{"kind":"symbol","value":"TMS_CRC32_XOR_OUT:79"},{"kind":"symbol","value":"tms_pow3:104"},{"kind":"terms","value":"memory, tms, zero, invalid, group, tmem, magic, header"}]},{"specId":"ddade525fb5f57aa035780cb877afcc013077bbdf07f5ff155541fbaeb1f2176","relation":"reference","coverage":"unverified","score":1109,"reasons":[{"kind":"symbol","value":"magic_ok:84"},{"kind":"terms","value":"pinned, revision, owner, writer, magic, bytes, header, layout"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1102,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, main, std, block, invariant, section, parse, subcommand"}]}]},{"key":"ghashtag/t27#3573","repo":"ghashtag/t27","number":3573,"title":"[spec][Trinity S11] Specify adapters to existing training, network and hardware projects","hits":[]},{"key":"ghashtag/t27#3572","repo":"ghashtag/t27","number":3572,"title":"[spec][Trinity S10] Specify Queen project views and snapshot/live evidence contracts","hits":[{"specId":"ab7ee1773622aa46442aec7aeca5cdd1a1a3c36f6321451a5e426df80a75945b","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/docs/system.t27"},{"kind":"terms","value":"docs, system, chapters"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":79,"reasons":[{"kind":"terms","value":"canonical, public, compiler, evidence, scope, typecheck, inventory, browser"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"project, pinned, revision, evidence, canonical, dependencies, dependency, catalog"}]},{"specId":"d9f354f8b828fc2f29503d7e928ea5771635ddec31997a8b9196a1cae79c1eca","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"queen, lib, capability, canonical, generated, acceptance, evidence, work"}]},{"specId":"8d3bf841fb17bd564941055b1608bcc4363595ccfb11d79c9116f0024a4328a3","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"native, queen, capability, canonical, generated, acceptance, evidence, work"}]}]},{"key":"ghashtag/t27#3571","repo":"ghashtag/t27","number":3571,"title":"[spec][Trinity S09] Reconcile Queen phases and specify task leases, retries and evidence","hits":[{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"reference","coverage":"unverified","score":2057,"reasons":[{"kind":"path","value":"specs/queen/lotus.t27"},{"kind":"terms","value":"queen, lotus, phases, policy, phase, set, cycle, state"}]},{"specId":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/queen/task_analysis.t27"},{"kind":"terms","value":"queen, analysis, worker, priority, high, sort"}]},{"specId":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/queen/brain_summaries.t27"},{"kind":"terms","value":"queen, brain, summaries, phase, cycle"}]},{"specId":"71cddbc4cc0d1eb79a135a98431f85beac07183932a594b271eea011e6e2bbde","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/brain/cognitive_loop.t27"},{"kind":"terms","value":"brain, cognitive, loop, phase"}]},{"specId":"9f64b649f7135a01834a1565e2704b40c1aafb3119a5e79b7ec3f6bac4f4117d","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/brain/bus.t27"},{"kind":"terms","value":"brain, bus"}]}]},{"key":"ghashtag/t27#3570","repo":"ghashtag/t27","number":3570,"title":"[spec][Trinity S08] Define durable sessions, memory and provenance using existing organism contracts","hits":[{"specId":"26703224e3fce9bbdcdd15281aa883f704a54855810c53d3db1688f7feb9ddba","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/brain/unified_state.t27"},{"kind":"terms","value":"brain, unified, state"}]}]},{"key":"ghashtag/t27#3569","repo":"ghashtag/t27","number":3569,"title":"[spec][Trinity S07] Specify the tri-api agent loop, tool protocol and permission boundary","hits":[{"specId":"83969c01bc42ca48ab841ba4e77ce26d08e9b23a0922dcc33dffee3b69cdab74","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"compiler/runtime/runtime.t27"},{"kind":"terms","value":"compiler, runtime, state"}]},{"specId":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/queen/task_analysis.t27"},{"kind":"terms","value":"queen, analysis"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":89,"reasons":[{"kind":"terms","value":"mcp, protocol, pinned, tool, malformed, call, exact, declared"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"write, real, loop, variants, token, tool, full, state"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"loop, dependencies, boundary"}]}]},{"key":"ghashtag/t27#3542","repo":"ghashtag/t27","number":3542,"title":"Implement sort and sort_range in specs/tri/sort/quick_sort.t27","hits":[{"specId":"486562f3726f65e2830e5e0deaf3019433d59081fd5ba1edca4cb38f5aa3b195","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/tri/sort/quick_sort.t27"},{"kind":"symbol","value":"sort_range:19"},{"kind":"terms","value":"sort, quick, range"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1048,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, target, sub, block, rule"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, zig, header, verilog, block"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, block, section, case, parse, create, argv, print"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, section, case, block, given, stmt, rule"}]}]},{"key":"ghashtag/t27#3541","repo":"ghashtag/t27","number":3541,"title":"Implement init, add_edge, traverse and deinit in specs/tri/graph/graph_bfs.t27","hits":[{"specId":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","relation":"reference","coverage":"unverified","score":2065,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"symbol","value":"BFSResult:18"},{"kind":"symbol","value":"add_edge:34"},{"kind":"terms","value":"graph, bfs, bfsresult, init, edge, traverse, deinit"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1055,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, parse, allocator, path, create, list"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, path, list, zig, header"}]},{"specId":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","relation":"reference","coverage":"unverified","score":1048,"reasons":[{"kind":"symbol","value":"add_edge:29"},{"kind":"terms","value":"graph, zero, init, edge, undirected, degree, out, path"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, rule, expression"}]}]},{"key":"ghashtag/t27#3540","repo":"ghashtag/t27","number":3540,"title":"Implement softmax forward and backward in specs/ml/activation/softmax.t27","hits":[{"specId":"4ea7242baa7a03eeadf68af61c6d58551b24783880fa3319a2d0c34550ecdb44","relation":"reference","coverage":"unverified","score":2047,"reasons":[{"kind":"path","value":"specs/ml/activation/softmax.t27"},{"kind":"symbol","value":"MIN_TEMP:14"},{"kind":"symbol","value":"SoftmaxConfig:20"},{"kind":"terms","value":"activation, softmax, zero, min, temp, config, forward, backward"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, table, signature, fns, set, float"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1055,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, runtime, commands, create, valid, kinds, path, zig"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, block, invariant, section, parse, path, create, argv"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, constants, section, target, sub, invariant, block"}]}]},{"key":"ghashtag/t27#3539","repo":"ghashtag/t27","number":3539,"title":"Implement forward, forward_batch and derivative in specs/ml/activation/sigmoid_activation.t27","hits":[{"specId":"57354f8525068440df541ffe1bd2e9d059248b1c35fcfc3b1cda4cd0beb8c08a","relation":"reference","coverage":"unverified","score":2046,"reasons":[{"kind":"path","value":"specs/ml/activation/sigmoid_activation.t27"},{"kind":"symbol","value":"SigmoidConfig:13"},{"kind":"symbol","value":"forward_batch:27"},{"kind":"terms","value":"activation, sigmoid, config, forward, batch, derivative"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1054,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, zig, branch, header, verilog"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, section, parse, allocator, create, argv"}]},{"specId":"3a74a18b91ed8e675b2d44fc822f28cd25ced5d9c3f8a902786c5a31dd11c30f","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"forward_batch:34"},{"kind":"terms","value":"activation, gelu, over, tanh, config, forward, batch, derivative"}]},{"specId":"c6cf3e0b7de5d05674b0dcf9c9f2dd1c7efe0a507a99644025f58261c5b15efe","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"forward_batch:33"},{"kind":"terms","value":"activation, leaky, relu, alpha, forward, batch, derivative"}]}]},{"key":"ghashtag/t27#3537","repo":"ghashtag/t27","number":3537,"title":"Implement the four stubbed functions in specs/tri/crypto/hex.t27","hits":[{"specId":"302708b4cdc56954ef9c733c9902e01174972651bb579f5e6ef4943919cd1229","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/tri/crypto/hex.t27"},{"kind":"symbol","value":"lower_case:22"},{"kind":"symbol","value":"upper_case:27"},{"kind":"terms","value":"crypto, hex, lower, case, upper, encode, decode"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, section, case, parse, allocator, create"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1046,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, section, mem, case, block, given, stmt"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, zig, header, verilog, block"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, target, sub, block, expression"}]}]},{"key":"ghashtag/t27#3535","repo":"ghashtag/t27","number":3535,"title":"Implement the four stubbed union-find functions in `TriDisjointSet` (specs/tri/graph/disjoint_set.t27)","hits":[{"specId":"57308c312e2d9233223984d19e928d0583684571434c32a42d5c66810c8a07da","relation":"reference","coverage":"unverified","score":2056,"reasons":[{"kind":"path","value":"specs/tri/graph/disjoint_set.t27"},{"kind":"symbol","value":"DisjointSet:13"},{"kind":"terms","value":"graph, disjoint, set, init, find, union, connected"}]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart, read"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1073,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, table, signature, fns, init, mutable"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, path, build, header, block"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"block, section, parse, allocator, path, create, argv, print"}]}]},{"key":"ghashtag/t27#3533","repo":"ghashtag/t27","number":3533,"title":"Implement the six stubbed functions in `TriPolynomial` (specs/tri/math/polynomial.t27)","hits":[{"specId":"8eba8906c7b3363610d70611c47190e3a0c577758540669ca80a7c6e383c64da","relation":"reference","coverage":"unverified","score":2044,"reasons":[{"kind":"path","value":"specs/tri/math/polynomial.t27"},{"kind":"terms","value":"math, polynomial, init, eval, multiply, derivative, deinit"}]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart, zero, read"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"std, block, section, parse, allocator, create, argv, print"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, section, operand, mem, block, given, stmt"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, header, section, target, sub, block, expression, operand"}]}]},{"key":"ghashtag/t27#3532","repo":"ghashtag/t27","number":3532,"title":"Implement the seven stubbed path functions in `TriFilesystem` (specs/tri/io/filesystem.t27)","hits":[{"specId":"4e425fd16028fd4f79f0402fc4c5221aa3d8279d5397160013b0bbf013167a34","relation":"reference","coverage":"unverified","score":2058,"reasons":[{"kind":"path","value":"specs/tri/io/filesystem.t27"},{"kind":"symbol","value":"PathError:13"},{"kind":"symbol","value":"FileInfo:17"},{"kind":"symbol","value":"has_ext:50"},{"kind":"symbol","value":"is_absolute:55"},{"kind":"terms","value":"filesystem, path, info, join, basename, dirname, ext, absolute"}]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart, read"}]},{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"reference","coverage":"unverified","score":1081,"reasons":[{"kind":"symbol","value":"is_absolute:170"},{"kind":"terms","value":"paths, dir, path, separator, resolved, directory, absolute, invalid"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1062,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"std, block, invariant, section, case, parse, allocator, path"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, path, ext, dir, header"}]}]},{"key":"ghashtag/t27#3529","repo":"ghashtag/t27","number":3529,"title":"Implement the five stubbed functions in specs/tri/collections/circular_buffer.t27","hits":[{"specId":"9a8156c31cf1ff378730d53a4e55d2265fb101558dabfa1c3cf9f3c9e3e3ed5a","relation":"reference","coverage":"unverified","score":2047,"reasons":[{"kind":"path","value":"specs/tri/collections/circular_buffer.t27"},{"kind":"symbol","value":"CircularBuffer:13"},{"kind":"symbol","value":"is_empty:41"},{"kind":"terms","value":"collections, circular, buffer, init, write, read, empty, deinit"}]},{"specId":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/collections/ring_buffer.t27"},{"kind":"symbol","value":"is_empty:57"},{"kind":"terms","value":"collections, ring, buffer, empty, full"}]},{"specId":"a1d8952a42208b161d951d524922fe049963a312a15721e7e5d5c95097729812","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/tri/collections/priority_queue.t27"},{"kind":"symbol","value":"is_empty:44"},{"kind":"terms","value":"collections, priority, queue, init, empty, deinit"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1048,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, data, target, sub, block, rule"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, zig, header, verilog, data"}]}]},{"key":"ghashtag/t27#3528","repo":"ghashtag/t27","number":3528,"title":"Implement the six stubbed functions in specs/tri/collections/priority_queue.t27","hits":[{"specId":"a1d8952a42208b161d951d524922fe049963a312a15721e7e5d5c95097729812","relation":"reference","coverage":"unverified","score":2052,"reasons":[{"kind":"path","value":"specs/tri/collections/priority_queue.t27"},{"kind":"symbol","value":"PriorityQueue:13"},{"kind":"symbol","value":"is_empty:44"},{"kind":"terms","value":"collections, priority, queue, init, enqueue, dequeue, peek, empty"}]},{"specId":"9a8156c31cf1ff378730d53a4e55d2265fb101558dabfa1c3cf9f3c9e3e3ed5a","relation":"reference","coverage":"unverified","score":2037,"reasons":[{"kind":"path","value":"specs/tri/collections/circular_buffer.t27"},{"kind":"symbol","value":"is_empty:41"},{"kind":"terms","value":"collections, circular, buffer, init, write, read, empty, deinit"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1065,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, stack, table, signature, fns, init"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, parse, allocator, create, list, argv"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, list, zig, verilog, data"}]}]},{"key":"ghashtag/t27#3527","repo":"ghashtag/t27","number":3527,"title":"Implement `parse` and the three getters in specs/tri/utils/config.t27","hits":[{"specId":"f1e5eefbb3fdd68c2f4f539e8a221d176d21851a20f6abf159266108b547ac2f","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/tri/utils/config.t27"},{"kind":"symbol","value":"ConfigValue:13"},{"kind":"symbol","value":"ConfigEntry:20"},{"kind":"symbol","value":"get_string:40"},{"kind":"symbol","value":"get_number:45"},{"kind":"symbol","value":"get_bool:50"},{"kind":"terms","value":"utils, config, entry, parse"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1064,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, content, success, key, build"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, parse, allocator, args, create, content"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, rule, expression"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, mem, block, given, stmt, rule, table"}]}]},{"key":"ghashtag/t27#3526","repo":"ghashtag/t27","number":3526,"title":"Implement `encode` and `decode` in specs/tri/encoding/msgpack.t27","hits":[{"specId":"eb6c433fe01f1e6b9fd3a83a79c6575f3e1431b8cccfd78ac6d8db6d0e699eea","relation":"reference","coverage":"unverified","score":2044,"reasons":[{"kind":"path","value":"specs/tri/encoding/msgpack.t27"},{"kind":"symbol","value":"MsgPackType:13"},{"kind":"symbol","value":"MsgPackValue:17"},{"kind":"terms","value":"encoding, msgpack, msg, pack, encode, decode"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1062,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, scope, table, signature, fns, set, float"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1061,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, key, zig, header, verilog"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, emit, header, data, str, target, sub"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, parse, allocator, create, argv, print"}]}]},{"key":"ghashtag/t27#3523","repo":"ghashtag/t27","number":3523,"title":"Implement the four stubbed functions in TriOption (specs/tri/collections/option.t27)","hits":[{"specId":"f4c734a4a68e2c20c6ff6824ee431d2ea1912898dc36072c2ee1229fbe79a688","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/tri/collections/option.t27"},{"kind":"symbol","value":"unwrap_or:33"},{"kind":"symbol","value":"is_some:38"},{"kind":"terms","value":"collections, option, unwrap"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1062,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, decl, block, invariant, case, parse, lint, create"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, build, zig, lint, header"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, invariant, block, expression"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"TestBlock:349"},{"kind":"terms","value":"compiler, node, invariant, decl, case, block, given, assert"}]}]},{"key":"ghashtag/t27#3522","repo":"ghashtag/t27","number":3522,"title":"Implement the five stubbed functions in TriLogging (specs/tri/utils/logging.t27)","hits":[{"specId":"e12a4af3d20a17e48d35990420825c9ff5a1eee091b74ff1565d775f5ae63887","relation":"reference","coverage":"unverified","score":2040,"reasons":[{"kind":"path","value":"specs/tri/utils/logging.t27"},{"kind":"symbol","value":"LogLevel:13"},{"kind":"symbol","value":"LogEntry:17"},{"kind":"symbol","value":"level_to_string:29"},{"kind":"symbol","value":"level_from_string:34"},{"kind":"symbol","value":"level_color:39"},{"kind":"symbol","value":"format_entry:44"},{"kind":"symbol","value":"should_log:49"},{"kind":"terms","value":"utils, logging, log, level, entry, color, format"}]},{"specId":"803ff8d37f9f4f1c3e5119e70d5c9210cd884b6b63b4117996e5401e6bb46448","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/utils/terminal.t27"},{"kind":"terms","value":"utils, terminal, color, style, reset"}]},{"specId":"bcb3b01dcd4debb986099332e1f8d6def66dc7b3d5b6e11f9dce845bb5007fb7","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/utils/logger.t27"},{"kind":"symbol","value":"LogEntry:17"},{"kind":"terms","value":"utils, logger, level, log, entry, field"}]},{"specId":"0eef09b67cdd371654875a6b01da947d124213a3edbcc422dd70bb1a290e6086","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/tri/utils/color.t27"},{"kind":"terms","value":"utils, color, space"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1077,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, ast, decl, block, invariant, case, parse"}]}]},{"key":"ghashtag/t27#3521","repo":"ghashtag/t27","number":3521,"title":"Implement the four stubbed functions in TriText (specs/tri/utils/text.t27)","hits":[{"specId":"c84ebb22ae462190ddcd757725c3f409ebda3fab38bcbedad2845649cdc0345c","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/tri/utils/text.t27"},{"kind":"symbol","value":"TextMetrics:13"},{"kind":"symbol","value":"word_wrap:24"},{"kind":"symbol","value":"count_words:29"},{"kind":"symbol","value":"count_lines:34"},{"kind":"terms","value":"utils, text, metrics, word, wrap, words, indent"}]},{"specId":"803ff8d37f9f4f1c3e5119e70d5c9210cd884b6b63b4117996e5401e6bb46448","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/tri/utils/terminal.t27"},{"kind":"terms","value":"utils, terminal, style"}]},{"specId":"5e3cef83fe71fa8bdec4c2ef91200565a5461f4de0225a11d9544c366afdc65d","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/tri/utils/utf8.t27"},{"kind":"terms","value":"utils, utf8"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1063,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, rule, expression"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, case, parse, allocator, create"}]}]},{"key":"ghashtag/t27#3520","repo":"ghashtag/t27","number":3520,"title":"Implement the eight stubbed functions in TriBytes (specs/tri/utils/bytes.t27)","hits":[{"specId":"a3ab6aec3a806403d4c098509b8a12fbaadbf61d70ae0485b598be864bede97b","relation":"reference","coverage":"unverified","score":2049,"reasons":[{"kind":"path","value":"specs/tri/utils/bytes.t27"},{"kind":"symbol","value":"from_slice:28"},{"kind":"symbol","value":"index_of:53"},{"kind":"terms","value":"utils, bytes, empty, slice, clone, equals, concat, index"}]},{"specId":"c84ebb22ae462190ddcd757725c3f409ebda3fab38bcbedad2845649cdc0345c","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/tri/utils/text.t27"},{"kind":"terms","value":"utils, text, metrics, wrap, words"}]},{"specId":"5e3cef83fe71fa8bdec4c2ef91200565a5461f4de0225a11d9544c366afdc65d","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/tri/utils/utf8.t27"},{"kind":"terms","value":"utils, utf8"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1062,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, case, parse, allocator, create"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1061,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, data, target, sub, block, rule"}]}]},{"key":"ghashtag/t27#3519","repo":"ghashtag/t27","number":3519,"title":"Implement the six stubbed functions in TriStatistics (specs/tri/math/statistics.t27)","hits":[{"specId":"fd103db5e8f85819d411f1d6215d94681742d58e2c32e8dcea50d4180bf6d638","relation":"reference","coverage":"unverified","score":2065,"reasons":[{"kind":"path","value":"specs/tri/math/statistics.t27"},{"kind":"symbol","value":"std_dev:24"},{"kind":"terms","value":"math, statistics, mean, variance, std, dev, median, percentile"}]},{"specId":"60a00727a2f7abdb0a28fd463c3ff731681e82b59a4371857cdd1f3be0b319f1","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/tri/math/measurement.t27"},{"kind":"terms","value":"math, measurement"}]},{"specId":"ae64dc117c95217e11bbf10e7a52d5c474418a7600f6b0a7f4d58b79e1637193","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/tri/math/probability.t27"},{"kind":"terms","value":"math, probability"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, case, parse, allocator, create"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, target, sub, block, expression, int"}]}]},{"key":"ghashtag/t27#3518","repo":"ghashtag/t27","number":3518,"title":"Implement the nine comment-only functions in specs/ml/transformer/mha_block.t27 (MHABlock)","hits":[{"specId":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","relation":"reference","coverage":"unverified","score":2119,"reasons":[{"kind":"path","value":"specs/ml/transformer/mha_block.t27"},{"kind":"symbol","value":"PHI_RESIDUAL_SCALE:19"},{"kind":"symbol","value":"BlockConfig:25"},{"kind":"symbol","value":"BlockState:35"},{"kind":"symbol","value":"BlockForwardResult:43"},{"kind":"symbol","value":"BlockGradients:49"},{"kind":"symbol","value":"ResidualConnection:55"},{"kind":"symbol","value":"forward_with_post_ln:92"},{"kind":"symbol","value":"apply_residual_connection:106"},{"kind":"symbol","value":"phi_scaled_residual:112"},{"kind":"symbol","value":"get_parameter_count:133"},{"kind":"symbol","value":"get_flops:140"},{"kind":"symbol","value":"create_residual_connection:149"},{"kind":"terms","value":"transformer, mha, block, mhablock, phi, dropout, residual, scale"}]},{"specId":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","relation":"reference","coverage":"unverified","score":2062,"reasons":[{"kind":"path","value":"specs/ml/transformer/norm.t27"},{"kind":"terms","value":"transformer, norm, layer, phi, start, end, config, state"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2042,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, phi, table, bit, components, discarded, sub"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2042,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, phi, table, bit, components, discarded, sub"}]},{"specId":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","relation":"reference","coverage":"unverified","score":1085,"reasons":[{"kind":"symbol","value":"NUM_HEADS:26"},{"kind":"symbol","value":"seq_len:124"},{"kind":"terms","value":"linear, attention, num, heads, head, state, phi, scale"}]}]},{"key":"ghashtag/t27#3517","repo":"ghashtag/t27","number":3517,"title":"Implement the six stubbed functions in specs/tri/collections/deque.t27 (TriDeque)","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2049,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, table, discarded, sub, floor, one, double"}]},{"specId":"90ea646b1c7dd08e161b4da050eef9fc3f35e864726f9e4ada54c09cfa29153f","relation":"reference","coverage":"unverified","score":2049,"reasons":[{"kind":"path","value":"specs/tri/collections/deque.t27"},{"kind":"symbol","value":"push_front:31"},{"kind":"symbol","value":"push_back:36"},{"kind":"symbol","value":"pop_front:41"},{"kind":"symbol","value":"pop_back:46"},{"kind":"terms","value":"collections, deque, init, push, front, back, pop, deinit"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2046,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, table, discarded, sub, floor, one, double"}]},{"specId":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/tri/collections/ring_buffer.t27"},{"kind":"terms","value":"collections, ring, buffer, push, pop, empty, full"}]},{"specId":"1528f6decbd9543f2abdb2d2fbccc9c62989e3cd44ba7b938bef838549398d86","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/tri/collections/queue.t27"},{"kind":"terms","value":"collections, queue, empty"}]}]},{"key":"ghashtag/t27#3516","repo":"ghashtag/t27","number":3516,"title":"Implement the six stubbed functions in specs/tri/crypto/base64.t27 (TriBase64)","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2065,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, table, bit, encode, discarded, decode, sub"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2065,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, table, bit, encode, discarded, decode, sub"}]},{"specId":"86475f7d52556f934215ddf1cd501cc686af387785e98069a29de61a3bebac75","relation":"reference","coverage":"unverified","score":2055,"reasons":[{"kind":"path","value":"specs/tri/crypto/base64.t27"},{"kind":"symbol","value":"url_safe:28"},{"kind":"symbol","value":"encoded_length:43"},{"kind":"symbol","value":"decoded_length:48"},{"kind":"terms","value":"crypto, base64, standard, url, safe, encode, decode, encoded"}]},{"specId":"dcb396f87eac603c6dcffe3d1f9b2f3e876747db0ca17f4d784326d77ee5ecaa","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/tri/crypto/base32.t27"},{"kind":"terms","value":"crypto, base32, standard, encode, decode"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, parse, allocator, create, argv, print"}]}]},{"key":"ghashtag/t27#3514","repo":"ghashtag/t27","number":3514,"title":"Implement the ten comment-only functions in specs/git/status.t27 (GitStatus)","hits":[{"specId":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","relation":"reference","coverage":"unverified","score":2075,"reasons":[{"kind":"path","value":"specs/git/status.t27"},{"kind":"symbol","value":"is_clean:19"},{"kind":"symbol","value":"status_short:24"},{"kind":"symbol","value":"status_long:29"},{"kind":"symbol","value":"status_ignored:34"},{"kind":"symbol","value":"filter_by_status:43"},{"kind":"symbol","value":"filter_by_pattern:48"},{"kind":"symbol","value":"filter_added:53"},{"kind":"symbol","value":"filter_deleted:58"},{"kind":"symbol","value":"filter_modified:63"},{"kind":"symbol","value":"count_by_kind:72"},{"kind":"symbol","value":"get_changed_files:77"},{"kind":"symbol","value":"has_changes:82"},{"kind":"terms","value":"git, status, clean, short, long, ignored, filter, pattern"}]},{"specId":"6deb105682ed85d520e9ea126468db714fe5327c5e05ef27ebc160acdceca647","relation":"reference","coverage":"unverified","score":2040,"reasons":[{"kind":"path","value":"specs/git/diff.t27"},{"kind":"terms","value":"git, diff, cached, changed, status, find, parse"}]},{"specId":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/git/operations.t27"},{"kind":"terms","value":"git, operations, head, parse, list, create, delete"}]},{"specId":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/git/schema.t27"},{"kind":"symbol","value":"GitError:70"},{"kind":"symbol","value":"parse_kind:104"},{"kind":"terms","value":"git, schema, item, parse, failure"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, block, parse, git, create, list, status, argv"}]}]},{"key":"ghashtag/t27#3513","repo":"ghashtag/t27","number":3513,"title":"Implement the ten stubbed functions in specs/tri/collections/bitmap.t27 (TriBitmap)","hits":[{"specId":"d6cfadd5f9822b72f668e6bc15734c3939b9350e60c68212e5666ae882e443c0","relation":"reference","coverage":"unverified","score":2043,"reasons":[{"kind":"path","value":"specs/tri/collections/bitmap.t27"},{"kind":"symbol","value":"set_all:48"},{"kind":"symbol","value":"clear_all:53"},{"kind":"symbol","value":"find_first:63"},{"kind":"symbol","value":"find_last:68"},{"kind":"terms","value":"collections, bitmap, init, set, clear, flip, find"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2042,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, zero, table, bit, bits, discarded, sub"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2042,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, zero, table, bit, bits, discarded, sub"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, zig, header, verilog, block"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, block, parse, allocator, create, argv, print"}]}]},{"key":"ghashtag/t27#3512","repo":"ghashtag/t27","number":3512,"title":"Implement build_prefix and search in specs/tri/search/knuth_morris_pratt.t27","hits":[{"specId":"ad1f645f6b172b4c3ff97c07a1de07518b4344c47addd232f20a084035a674dd","relation":"reference","coverage":"unverified","score":2083,"reasons":[{"kind":"path","value":"specs/tri/search/knuth_morris_pratt.t27"},{"kind":"symbol","value":"KMPPrefix:13"},{"kind":"symbol","value":"build_prefix:23"},{"kind":"terms","value":"search, knuth, morris, pratt, kmp, kmpprefix, build, prefix"}]},{"specId":"949befe08d74fbddd4b1f79be2e36be09900c171edf1361e97ebf4973c682edb","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/tri/search/boyer_moore.t27"},{"kind":"terms","value":"search, boyer, moore, build"}]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, search, len, non, bound, expected"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, done, read, write, set"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1060,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"compiler, commands, create, kinds, build, zig, header, verilog"}]}]},{"key":"ghashtag/t27#3511","repo":"ghashtag/t27","number":3511,"title":"Implement parse_ip, is_localhost and is_valid_port in specs/tri/net/net.t27","hits":[{"specId":"249105154a42777f5e4f32a1e565d18565c1268a054515e331a1f83fee04fdbe","relation":"reference","coverage":"unverified","score":2057,"reasons":[{"kind":"path","value":"specs/tri/net/net.t27"},{"kind":"symbol","value":"IpAddress:13"},{"kind":"symbol","value":"SocketAddr:18"},{"kind":"symbol","value":"parse_ip:28"},{"kind":"symbol","value":"is_localhost:33"},{"kind":"symbol","value":"is_valid_port:38"},{"kind":"terms","value":"net, address, socket, addr, parse, localhost, valid, port"}]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, len, dot, non, zero, bound, expected"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, zero, dot, done, read, write, set"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1055,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, decl, block, section, case, parse, create, argv"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, target, sub, block, expression"}]}]},{"key":"ghashtag/t27#3510","repo":"ghashtag/t27","number":3510,"title":"Implement parse, compare and next in specs/tri/utils/version.t27","hits":[{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, zero, dot, done, read, write, set"}]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, len, dot, non, zero, expected"}]},{"specId":"6e6d50829c860bc9b518f082a70a91cdf099342e26c446808c22b896578a680c","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/tri/utils/version.t27"},{"kind":"terms","value":"utils, parse, compare"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1063,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, section, case, parse, allocator"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, str, target, sub, block"}]}]},{"key":"ghashtag/t27#3509","repo":"ghashtag/t27","number":3509,"title":"Implement the four stubbed functions in specs/tri/utils/utf8.t27","hits":[{"specId":"5e3cef83fe71fa8bdec4c2ef91200565a5461f4de0225a11d9544c366afdc65d","relation":"reference","coverage":"unverified","score":2048,"reasons":[{"kind":"path","value":"specs/tri/utils/utf8.t27"},{"kind":"symbol","value":"count_codepoints:37"},{"kind":"terms","value":"utils, utf8, codepoint, rune, decode, encode, codepoints, validate"}]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, len, non, encode, sequence, expected, encoded"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, done, encoded, read, write, set"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1061,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, section, parse, allocator, create"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1048,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, header, section, str, target, sub, block"}]}]},{"key":"ghashtag/t27#3507","repo":"ghashtag/t27","number":3507,"title":"Implement the eight stubbed functions in specs/tri/collections/bitvector.t27","hits":[{"specId":"32446899fb19eea9b774bf3a79dcba5212af07c832499cf0710ffb9dfdd612b1","relation":"reference","coverage":"unverified","score":2058,"reasons":[{"kind":"path","value":"specs/tri/collections/bitvector.t27"},{"kind":"symbol","value":"BitVector:13"},{"kind":"symbol","value":"with_capacity:28"},{"kind":"terms","value":"collections, bitvector, bit, vector, empty, capacity, push, pop"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":2048,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, zero, width, bits, done, word, bit, mask"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"reference","coverage":"unverified","score":1071,"reasons":[{"kind":"symbol","value":"WORD_BITS:27"},{"kind":"terms","value":"encoding, word, bits, order, shift, mask, form, bit"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"zig, std, decl, block, section, parse, allocator, create"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"TestBlock:1126"},{"kind":"terms","value":"compiler, zig, section, target, sub, block, expression, append"}]}]},{"key":"ghashtag/t27#3474","repo":"ghashtag/t27","number":3474,"title":"gen-c: `null` has no C spelling -- 68 errors, and the decision depends on what `?T` lowers to","hits":[{"specId":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ContentType:35"},{"kind":"symbol","value":"FileContent:89"},{"kind":"terms","value":"content, text"}]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"ContentType:64"},{"kind":"terms","value":"content, config"}]}]},{"key":"ghashtag/t27#3473","repo":"ghashtag/t27","number":3473,"title":"gen-c: a module-qualified enum member (`lexer::TokenKind::RBrace`) is still refused -- 477 in the specs","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"NodeKind:19"},{"kind":"terms","value":"parser, node, expr, call, literal, enum"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"dot_product:255"},{"kind":"terms","value":"dot, product, generate, token, single, pass"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"lexer, token, identifier"}]},{"specId":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"dot_product:180"},{"kind":"terms","value":"vsa, ops, dot, product"}]},{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"dot_product:510"},{"kind":"terms","value":"dot, product"}]}]},{"key":"ghashtag/t27#3472","repo":"ghashtag/t27","number":3472,"title":"Zig-бэкенд: сигнатуры без тела делают вывод некомпилируемым (0 из 9 спек)","hits":[{"specId":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"gf16_to_f32:61"},{"kind":"terms","value":"gf16, f32, format, recovered"}]},{"specId":"d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"gf16_to_f32:61"},{"kind":"terms","value":"gf16, f32, format, recovered"}]}]},{"key":"ghashtag/t27#3464","repo":"ghashtag/t27","number":3464,"title":"gen-c: 5912 errors are symbols referenced and never declared, and cast_i8 alone is 210","hits":[]},{"key":"ghashtag/t27#3445","repo":"ghashtag/t27","number":3445,"title":"gen-c: a function returning a fixed array returns the address of a stack local","hits":[{"specId":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"terms","value":"cloud, railway, deploy, config, var"}]},{"specId":"0c558f36ccaa222e6da0edd224b43599dc41bccc897a1d5fa61fde68d509e90b","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/server/mdns.t27"},{"kind":"terms","value":"mdns, base, local"}]},{"specId":"dee8a1c4e2ac49ff01ec4228a43bdcb4364d4e68fa2d1d439b27c2d5bac584a7","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/compiler/mod_structure.t27"},{"kind":"terms","value":"compiler, mod, structure, base"}]},{"specId":"9caf79744e4fe67d95900b03c1298e0a046444ab82e98057a133550f4c8ba646","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/base/ternary_encoding.t27"},{"kind":"terms","value":"base, ternary, encoding, zero, info"}]},{"specId":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/memory/formula_embed.t27"},{"kind":"terms","value":"memory, formula, embed, base"}]}]},{"key":"ghashtag/t27#3443","repo":"ghashtag/t27","number":3443,"title":"gen-c: two latent forms that emit t27 syntax into a C header","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"passed, inner, compile, balanced, verilog, handle, float, gen"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"gen, zig, verilog, rust, emit, backends"}]},{"specId":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"verilog, width, emit, header, bits, int, digit"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"gen, compile, zig, header, verilog, backend"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"verilog, gen, inner, bits, emit"}]}]},{"key":"ghashtag/t27#3440","repo":"ghashtag/t27","number":3440,"title":"Spec Guards has been red on master since #3435, and two PRs merged past it","hits":[]},{"key":"ghashtag/t27#3404","repo":"ghashtag/t27","number":3404,"title":"The &mut/& split makes a same-array mem_copy unrepresentable in Rust, where C expresses it","hits":[{"specId":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","relation":"reference","coverage":"unverified","score":2049,"reasons":[{"kind":"path","value":"specs/isa/ternary_memory.t27"},{"kind":"symbol","value":"mem_copy:227"},{"kind":"terms","value":"isa, ternary, memory, zero, mem, addr, word, read"}]},{"specId":"9a7a252b0234051663b7a9a6f9712ceb2b15501140378ef156612ab574aec6ae","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TernaryWord:80"},{"kind":"terms","value":"ternary, memory, zero, word, free, read, index"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TernaryWord:53"},{"kind":"terms","value":"zero, one, word, ternary, dst"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"TernaryWord:67"},{"kind":"terms","value":"zero, ternary, word, read"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"TernaryWord:17"},{"kind":"terms","value":"ternary, word, memory"}]}]},{"key":"ghashtag/t27#3399","repo":"ghashtag/t27","number":3399,"title":"ci-gates SKILL.md: sections 546, 547 and 548 each appear twice on master","hits":[{"specId":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"tool, skill, sections, move"}]}]},{"key":"ghashtag/t27#3386","repo":"ghashtag/t27","number":3386,"title":"cli-tri cannot be required until its context is unique and unfiltered","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"passed, cli, until, satisfied"}]}]},{"key":"ghashtag/t27#3377","repo":"ghashtag/t27","number":3377,"title":"A field that names its own struct needs a Box, and three tree specs are one repair from compiling","hits":[{"specId":"63216e4dbe843da95dd62bfc13b7741e6bf343e3bcf3d407e084d6be61e84dfe","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"OctNode:22"},{"kind":"terms","value":"octree, oct, node, insert"}]},{"specId":"338dda6bd5fe68db61f018bc4216fd6ab671562bcfc3cf92f1692fbdc2440abd","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"KDNode:13"},{"kind":"terms","value":"tree, kdnode"}]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"finite, one, three, exactly"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"pinned, three, two, field"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"node, field, struct, array"}]}]},{"key":"ghashtag/t27#3371","repo":"ghashtag/t27","number":3371,"title":"Two more tools advise against a decision recorded where they cannot read it","hits":[{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"bit, three, two, read, write, rule"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"decision, push, read"}]}]},{"key":"ghashtag/t27#3370","repo":"ghashtag/t27","number":3370,"title":"Corpus blockers, each priced in specs: 10 of 229 failures, not the corpus","hits":[{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"ProviderType:49"},{"kind":"terms","value":"config, schema, provider, api, language, base, lsp"}]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"ProviderType:50"},{"kind":"symbol","value":"MessageRole:56"},{"kind":"symbol","value":"ContentType:64"},{"kind":"terms","value":"provider, schema, role, content, response, config, base"}]},{"specId":"e46541429008eef0e3a73d4b33d40d438a556712791e282630da97bddbb20d19","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"MessageRole:14"},{"kind":"terms","value":"api, role, content, response, base"}]},{"specId":"f53faab13959683ff6110da18d8125f6c62af2516383c6b77aab8610a5584ebf","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"HyperVector:58"},{"kind":"terms","value":"forward, pass, role, single, build"}]},{"specId":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"TriType:32"},{"kind":"terms","value":"field, write, case"}]}]},{"key":"ghashtag/t27#3368","repo":"ghashtag/t27","number":3368,"title":"LOOP-RULES R12 denies a spelling the gate accepts, and points authors at a frozen archive","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"per, required, evidence, gate, accepts, ready"}]}]},{"key":"ghashtag/t27#3366","repo":"ghashtag/t27","number":3366,"title":"tri reseal check fails on every clean checkout, and obeying it deletes the seal path token","hits":[{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"compiler, path, status, build, skill, branch, seal, hash"}]},{"specId":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"path, tool, token, skill"}]}]},{"key":"ghashtag/t27#3337","repo":"ghashtag/t27","number":3337,"title":"Five more confirmed defects in the required merge contexts","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"pos_inf:2418"},{"kind":"symbol","value":"neg_inf:2419"},{"kind":"terms","value":"gf16, zero, pos, neg, inf, bit, decode, ratio"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"pos_inf:2418"},{"kind":"symbol","value":"neg_inf:2419"},{"kind":"terms","value":"gf16, zero, pos, neg, inf, bit, decode, ratio"}]},{"specId":"a3ab6aec3a806403d4c098509b8a12fbaadbf61d70ae0485b598be864bede97b","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"from_slice:28"},{"kind":"terms","value":"bytes, empty, slice"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":67,"reasons":[{"kind":"terms","value":"scan, skips, bytes, required, evidence, parse, five, gate"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"required, bad, path, default, merge, word, print, private"}]}]},{"key":"ghashtag/t27#3333","repo":"ghashtag/t27","number":3333,"title":"int, uint, float and double reach rustc verbatim: the Rust mapper never learned the generic spellings","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"passed, uint, float, step, f32, find"}]},{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"compiler, emission, int, str, gf16, generic"}]},{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"double, gf16, float"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"rust, float, array"}]}]},{"key":"ghashtag/t27#3331","repo":"ghashtag/t27","number":3331,"title":"Two sessions of the loop took the same three tasks, and the obvious lock does not lock","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"tasks, pass, match, parse, process, reports, loop, contains"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"pinned, byte, three, two, read"}]}]},{"key":"ghashtag/t27#3328","repo":"ghashtag/t27","number":3328,"title":"coq: the Trinity proofs do not compile — CorePhi.v:14 uses a lemma that does not exist","hits":[]},{"key":"ghashtag/t27#3316","repo":"ghashtag/t27","number":3316,"title":"Every workflow red on master, diagnosed: 5 fixable, 4 leave, 1 wrong trigger, 0 to delete","hits":[{"specId":"6e7314f664d45e80ed132829c617b1485c95fd263f8dbda7244c058800cecbfe","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"red, delete"}]}]},{"key":"ghashtag/t27#3312","repo":"ghashtag/t27","number":3312,"title":"Generated Verilog synthesises to zero logic: 0 LUTs, 0 FFs across 361 specs","hits":[{"specId":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/fpga/int4.t27"},{"kind":"terms","value":"euler, int4"}]},{"specId":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"zero, empty, total, luts, ffs"}]}]},{"key":"ghashtag/t27#3283","repo":"ghashtag/t27","number":3283,"title":"verilog_hir: two packed structs in one module collide on an empty signal name","hits":[{"specId":"21484c1e4832c65088a8b16411adcd3cee75140dd0e98c49beb09f13acbf10dd","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/tutorial/06_structs_enums_switch.t27"},{"kind":"terms","value":"tutorial, structs, enums, switch, zero, empty"}]},{"specId":"1a85a9dca026c580cc5c892fb15f566c34f56077b1137b3aa84ffbbf8976f492","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/fpga/gf16_to_fp16.t27"},{"kind":"terms","value":"euler, gf16, fp16, field, zero"}]},{"specId":"29d997ada23e0a8aac40eced1499f42b697353ff8747db8b0d9a87ba5159b783","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/fpga/gf32_to_fp32.t27"},{"kind":"terms","value":"euler, gf32, fp32, field, zero"}]},{"specId":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"hir, signals, signal, empty"}]},{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"verilog, emit, gf16, hir"}]}]},{"key":"ghashtag/t27#3276","repo":"ghashtag/t27","number":3276,"title":"Add a hello_world teaching spec, and scan the whole repo not just specs/","hits":[{"specId":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/demos/hello_world.t27"},{"kind":"terms","value":"demos, hello, world"}]},{"specId":"9e53c7a141c31266e0b275bea41a46eaff276426ff85aadf52524de77c69ecf8","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"tests/ring0_trivial.t27"},{"kind":"terms","value":"ring0, trivial, one"}]},{"specId":"9efc1e9e11d76314621e08b5d34fa54cd07ec75cea8d11045f76b846d001d450","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"compiler/parser/parser.t27"},{"kind":"terms","value":"compiler, parser, tokens"}]},{"specId":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/demos/simple_test.t27"},{"kind":"terms","value":"demos, simple"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"world, scan, declarations, compiler, typecheck, five"}]}]},{"key":"ghashtag/t27#3272","repo":"ghashtag/t27","number":3272,"title":"Expose the compiler to the browser via a WebAssembly bridge","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, start, parse"}]},{"specId":"6a3ef22445272843815bb1eef5aa8a4b6e3e881592723413e6ddf8c723b36c7a","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/api/c_api_contract.t27"},{"kind":"terms","value":"api, contract"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"standalone, declarations, generator, compiler, parse, five, browser, path"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"compiler, codegen, verilog, assembly, case, backends"}]},{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"compiler, codegen, verilog, bridge, hir"}]}]},{"key":"ghashtag/t27#3270","repo":"ghashtag/t27","number":3270,"title":"A streak of failures is not one incident: cli-tri's cause changed and nobody saw it for three passes","hits":[{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"one, three, needed"}]}]},{"key":"ghashtag/t27#3265","repo":"ghashtag/t27","number":3265,"title":"Two readers of SKILL.md disagreed by three, and cli-tri has been red on master for six runs","hits":[{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"order, three, two, sub, read, call, rule, findings"}]},{"specId":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"cli, skill"}]}]},{"key":"ghashtag/t27#3255","repo":"ghashtag/t27","number":3255,"title":"mutate: string content offered as constants, and a brace inside a fixture ends the test module","hits":[]},{"key":"ghashtag/t27#3253","repo":"ghashtag/t27","number":3253,"title":"Audit of pass 106's own numbers: 6 of 19 were wrong","hits":[]},{"key":"ghashtag/t27#3248","repo":"ghashtag/t27","number":3248,"title":"Two merge-facing readers treat 'no checks have run' as 'nothing is failing'","hits":[{"specId":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"checks, pass, fail, array, failed, failing"}]},{"specId":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"checks, pass, fail, array, failed, failing"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"measured, merge, one, two, total, class"}]}]},{"key":"ghashtag/t27#3245","repo":"ghashtag/t27","number":3245,"title":"Two compiler.rs tests assert absence over a region that can be empty by construction","hits":[{"specId":"488af77492c2664a504de98dc8dc2a19a37e3cce3d355f3a1af26e259bfb3038","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"on_clock:10"},{"kind":"terms","value":"bootstrap, clocked, state, clock"}]},{"specId":"12a5bb8e6d0975bfd72b3520ac83e9adaa6f52371be8ef101ef5fd39b8fcbf6f","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"on_clock:27"},{"kind":"terms","value":"clocked, counter, clock"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"on_clock:170"},{"kind":"terms","value":"begin, end, clock"}]},{"specId":"9dc4e475f38f849170b46b46c0a72486485d13a37e4a53150b6dd395b4252a6a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"on_clock:27"},{"kind":"terms","value":"emitter, clock"}]},{"specId":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"on_clock:38"},{"kind":"terms","value":"capacity, clock"}]}]},{"key":"ghashtag/t27#3243","repo":"ghashtag/t27","number":3243,"title":"An inline # comment on a struct field deletes the next field, in every backend, and both stages accept it","hits":[{"specId":"6abe8fe5b759fdcd2ddf4d172aab89a26064c793cc33b912369e9897d1c49a31","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/tri/pipeline/pipeline_parallel.t27"},{"kind":"symbol","value":"JobStatus:13"},{"kind":"terms","value":"pipeline, parallel, job, status"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"parser, parse, field, struct, else"}]},{"specId":"eabb5fbd560deceb47ad6ae9f8bc4f70a2b91e2504e8026ba09387963560b9f2","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"path, backends, backend, stages, status, stage"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"field, pipeline, stages, accept"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"field, pipeline, stages, accept"}]}]},{"key":"ghashtag/t27#3237","repo":"ghashtag/t27","number":3237,"title":"The Admitted gate reads 2 of the 9 files the build compiles","hits":[{"specId":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"admitted, measured, gate, reads, sweep"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"gate, reads, read, nothing, live"}]}]},{"key":"ghashtag/t27#3236","repo":"ghashtag/t27","number":3236,"title":"SKILL.md is the NOW.md problem again: 182 of 293 commits touch one 865 KB file, and every concurrent PR conflicts on it","hits":[{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"resolution, cost, one, per, touch, hub"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"one, per, touch, reference"}]}]},{"key":"ghashtag/t27#3232","repo":"ghashtag/t27","number":3232,"title":"Two commands write a reason for every undecided case and discard it into one number","hits":[{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"three, two, str, print, read, write, call, field"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"two, second, one"}]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"one, carry, two"}]},{"specId":"4dd1bf05316f1a0ed952457e8fbbe7e03c51d51b2891c1dfe603db0425b4f2a3","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, commands, case"}]},{"specId":"66f48663fb58c54066c3c13d0fa2afcfbfd38536ded273d84cd63bab51325b5a","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"compiler, commands, case"}]}]},{"key":"ghashtag/t27#3229","repo":"ghashtag/t27","number":3229,"title":"types redef: a six-class tally printed five classes, and rustc had said so on every build","hits":[{"specId":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/file/operations.t27"},{"kind":"terms","value":"operations, read, range, delete, list, path"}]},{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"classes, class, row, unit, field, fields"}]}]},{"key":"ghashtag/t27#3225","repo":"ghashtag/t27","number":3225,"title":"Fourteen specs parse, typecheck, and emit a field with no type — and a literal in type position is accepted","hits":[{"specId":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"MAX_ENTRIES:7"},{"kind":"terms","value":"rust, entries"}]},{"specId":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"MAX_ENTRIES:7"},{"kind":"terms","value":"entries"}]},{"specId":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"ExitCode:13"},{"kind":"terms","value":"exit"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"compiler, parser, parse, field, call, struct, literal, enum"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"probe, min, compiler, parse, typecheck, gate, accepts"}]}]},{"key":"ghashtag/t27#3195","repo":"ghashtag/t27","number":3195,"title":"Seven more labels that name a population the code does not count (fan-out over the whole tri CLI)","hits":[]},{"key":"ghashtag/t27#3191","repo":"ghashtag/t27","number":3191,"title":"50 red workflows in trinity-fpga are 11 events, 3 of them live; 39 are one July afternoon","hits":[{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"tool, default, cost, live, one, per, row, rows"}]}]},{"key":"ghashtag/t27#3188","repo":"ghashtag/t27","number":3188,"title":"Stop tracking Coq .aux/.glob build byproducts (already gitignored going forward)","hits":[{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"forward, build, diffs"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"forward, build, diffs"}]},{"specId":"959e06da2849febdf16205273e4592a5390ce6c4d2be52caf2b7a5b80e3f5a1e","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"stop, build"}]},{"specId":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"build, forward"}]},{"specId":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"build, forward"}]}]},{"key":"ghashtag/t27#3176","repo":"ghashtag/t27","number":3176,"title":"OpenSSF Scorecard: 105 consecutive master failures since 2026-09-03, upstream gcr.io billing","hits":[{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"open, decision, upstream"}]}]},{"key":"ghashtag/t27#3172","repo":"ghashtag/t27","number":3172,"title":"11 of 260 published numbers were wrong; nine of them are one defect, and the audit itself erred nine times in twenty","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"measured, merge, per, one, two, audit, pinned"}]},{"specId":"9e0a54bfc5992bb96c5dc38dcbffd57334be6866207e09185966985e870dacbb","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"published, audit"}]}]},{"key":"ghashtag/t27#3171","repo":"ghashtag/t27","number":3171,"title":"Add a regression test suite for gen/zig/measure.py","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"to_i64:128"},{"kind":"symbol","value":"compare_abs:491"},{"kind":"symbol","value":"compare_abs:537"},{"kind":"terms","value":"zero, i64, abs, compare, diff, restored"}]},{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"to_i64:248"},{"kind":"terms","value":"byte, zero, i64"}]},{"specId":"364119169fe8fa59b9f2ddc0edbcfd00bff4dc1e37af6b7626f40f093360f490","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"suite, parse, gen, zig"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"zig, parse, gen, rel"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"gen, rel, zig"}]}]},{"key":"ghashtag/t27#3169","repo":"ghashtag/t27","number":3169,"title":"The 15 hollow MERGE_CRITICAL claims: 10 can be required today, 5 cannot","hits":[{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":85,"reasons":[{"kind":"terms","value":"owner, required, status, claims, drift, path, merge, decision"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"directory, owner, scan, skips, required, five, gate, claims"}]},{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"status, critical, required, request"}]},{"specId":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"status, critical, required, request"}]}]},{"key":"ghashtag/t27#3157","repo":"ghashtag/t27","number":3157,"title":"Status: what the ten gate instruments say is open, and what is already settled","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":67,"reasons":[{"kind":"terms","value":"ruleset, status, owner, runs, default, report, work, claim"}]},{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"gate, critical, open, status, close"}]},{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"status, total, verified, open"}]},{"specId":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"status, settled"}]},{"specId":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"status, gate"}]}]},{"key":"ghashtag/t27#3153","repo":"ghashtag/t27","number":3153,"title":"All 32 Admitted live in the 18 Coq files no _CoqProject names; the compiled 41 have zero","hits":[]},{"key":"ghashtag/t27#3150","repo":"ghashtag/t27","number":3150,"title":"Two merges took \"ours\" and discarded 1103 lines of real work, invisible to git show --numstat","hits":[{"specId":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"git, branch, head, merge, base, show"}]}]},{"key":"ghashtag/t27#3142","repo":"ghashtag/t27","number":3142,"title":"lake build is red on two unsolved goals in H4Lagrangian.lean, and Lean proofs ran once in the last 60 workflow runs","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"owner, runs, report, work, state, done, seen, failed"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"build, graph, runs"}]}]},{"key":"ghashtag/t27#3141","repo":"ghashtag/t27","number":3141,"title":"1792 of 9842 spec tests have a body that is one comment: { /* verify baseline */ }","hits":[{"specId":"372952ca8c4a3d9117765dba58976196dc877bc0d619296403f39fa6b1fa8a56","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/igla/race/gemm.t27"},{"kind":"terms","value":"igla, race, gemm"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"TestBlock:29"},{"kind":"terms","value":"backend, block, parse, options, git, content, print"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TestBlock:267"},{"kind":"terms","value":"block, reports, print, parse, help"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"TestBlock:716"},{"kind":"terms","value":"content, help, block, backend"}]},{"specId":"4dd1bf05316f1a0ed952457e8fbbe7e03c51d51b2891c1dfe603db0425b4f2a3","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"TestBlock:381"},{"kind":"terms","value":"options, content, block, parse"}]}]},{"key":"ghashtag/t27#3140","repo":"ghashtag/t27","number":3140,"title":"Wave reports name deliverables that exist in no source file: ExprAddressOf and has_cycle_dfs each live only in the report announcing them","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"NodeKind:19"},{"kind":"symbol","value":"parse_expr_unary:504"},{"kind":"terms","value":"compiler, node, parse, expr, right, unary, else, enum"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"compiler, ast, node, invariant, bench, block, assert, info"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"compiler, info, binary, expr"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"TypeInfo:134"},{"kind":"terms","value":"compiler, ast, node, info"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":72,"reasons":[{"kind":"terms","value":"coder, report, parse, log, cli, reports, loop, tree"}]}]},{"key":"ghashtag/t27#3137","repo":"ghashtag/t27","number":3137,"title":"scripts/tri-lean has never existed and three source files tell you to run it, plus two more surviving count-claims","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"report, matches, ternary, plus, loop, generator, you"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"ternary, order, three, two, read, exists, phi, finding"}]}]},{"key":"ghashtag/t27#3135","repo":"ghashtag/t27","number":3135,"title":"Twelve asserts the parser silently discards, in three shapes it never implemented","hits":[{"specId":"cc960e5ccb68352c21b7479e7f775cc698d4a8fec103c05683cc962e5107b86a","relation":"reference","coverage":"unverified","score":2037,"reasons":[{"kind":"path","value":"specs/vsa/jones_polynomial.t27"},{"kind":"symbol","value":"jones_polynomial:105"},{"kind":"symbol","value":"jones_trefoil_at_phi:119"},{"kind":"terms","value":"vsa, jones, polynomial, positive, writhe, trefoil, phi"}]},{"specId":"be8b3a944add54031ff82e824411ad3bfcfaed42a8150b3131649cf1d3080a92","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/math/radix_economy.t27"},{"kind":"symbol","value":"E_OPTIMAL:22"},{"kind":"symbol","value":"ternary_range:55"},{"kind":"symbol","value":"binary_range:60"},{"kind":"terms","value":"math, radix, economy, optimal, ternary, range, binary"}]},{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"math, constants, phi, inv"}]},{"specId":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"phi_split:47"},{"kind":"terms","value":"phi, split, comparison, optimal, rounding"}]},{"specId":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"phi_split:47"},{"kind":"terms","value":"phi, split, comparison, optimal, rounding"}]}]},{"key":"ghashtag/t27#3134","repo":"ghashtag/t27","number":3134,"title":"Seven update-branch merges against five commits of work: the merge-queue tax, measured","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"measured, path, merge, per, week, one, two, total"}]},{"specId":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"git, branch, prefix, merge, rev, list"}]},{"specId":"25cdccd102bc427d00d9256fb1a8ede95a2f204de4c2178c2c83998c1c37c3ef","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"work, measured"}]}]},{"key":"ghashtag/t27#3098","repo":"ghashtag/t27","number":3098,"title":"No way to ask which binary serves a subcommand","hits":[]},{"key":"ghashtag/t27#3092","repo":"ghashtag/t27","number":3092,"title":"LAW 8 (no circular dependencies) is stated with a verifier that never existed","hits":[]},{"key":"ghashtag/t27#3081","repo":"ghashtag/t27","number":3081,"title":"test_run_fpga_smoke_gate_passes_with_good_report is flaky in CI: same commit, opposite outcomes one minute apart","hits":[{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"temp_dir:297"},{"kind":"terms","value":"dir, path, temp, directory, join, parent, create"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"runs, report, returns, per, retry, window, failed, gate"}]},{"specId":"031a4a295e848f75a59247991f0f074e203d34b4521a2c5f2f5ac511b3095739","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"suite, expect, failed, report, good"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"rust, one, good"}]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, good"}]}]},{"key":"ghashtag/t27#3055","repo":"ghashtag/t27","number":3055,"title":"scripts/tri carries the loop-helper dispatch block twice; the second copy is unreachable","hits":[{"specId":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"exec, block, copy"}]},{"specId":"1ede200487415c520e1aa5406fbcb3590dbcf7fc8cc4b04879baad058619d052","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"copy, block"}]}]},{"key":"ghashtag/t27#3041","repo":"ghashtag/t27","number":3041,"title":"Add docs/COMPILER_BUGS.md: durable reference for the copy_propagate silent infinite-loop bug shape","hits":[{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"docs, text, reference, author, documentation"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"docs, text, reference, author, documentation"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"reference, shape, nothing, extra"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"commit, shape, durable"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"pass, loop, reference, sweep"}]}]},{"key":"ghashtag/t27#3039","repo":"ghashtag/t27","number":3039,"title":"Committed merge-conflict markers in .gitignore, plus repo-root shell-quoting debris and untracked build byproducts","hits":[{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"state, conflict, session, merge, byte"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"build, zig, untracked"}]},{"specId":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"merge, conflict, byte"}]}]},{"key":"ghashtag/t27#3038","repo":"ghashtag/t27","number":3038,"title":"Six parser/emitter bugs and a silent infinite loop in copy_propagate, corpus 74.2% -> 76.7%","hits":[{"specId":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/enrichment/youtube_transcript.t27"},{"kind":"terms","value":"enrichment, youtube, transcript, text"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1157,"reasons":[{"kind":"symbol","value":"NodeKind:19"},{"kind":"symbol","value":"parse_expr_unary:504"},{"kind":"symbol","value":"parse_expr_primary:581"},{"kind":"symbol","value":"parse_array_literal:720"},{"kind":"terms","value":"compiler, parser, node, brace, stmt, boundary, parse, child"}]},{"specId":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","relation":"reference","coverage":"unverified","score":1027,"reasons":[{"kind":"symbol","value":"TriType:32"},{"kind":"terms","value":"field, constant, behavior, parse, write, syntax"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":75,"reasons":[{"kind":"terms","value":"phi, zero, table, copy, val, div, floor, ceil"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":67,"reasons":[{"kind":"terms","value":"phi, zero, table, copy, val, div, floor, ceil"}]}]},{"key":"ghashtag/t27#3035","repo":"ghashtag/t27","number":3035,"title":"starts_with(\"struct\") has no word boundary: 'const dim = structure.len();' is counted as a struct definition, and 1180 is 1178","hits":[{"specId":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/demos/jones_topology_filter.t27"},{"kind":"terms","value":"demos, jones, topology, filter, dim, structure"}]},{"specId":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"demos, jones, topology, structure, dim"}]},{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"equal, dim, identity, per, len"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"word, len, flag, fixed"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"len, gap, boundary"}]}]},{"key":"ghashtag/t27#3034","repo":"ghashtag/t27","number":3034,"title":"Six fixed artefact names in one shared TMPDIR: two concurrent corpus runs corrupt each other's columns, with every unresolved counter reading 0","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"runs, background, default, per, work, limit, fixed"}]},{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"timeout, concurrent, unresolved, byte"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"timeout, two, second, one"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"measured, per, one, two"}]},{"specId":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"race, per, two, one"}]}]},{"key":"ghashtag/t27#3009","repo":"ghashtag/t27","number":3009,"title":"`while (c) : (step)` with a `continue` hangs in C and Rust: the step is emitted after the body and `continue` jumps it","hits":[]},{"key":"ghashtag/t27#3006","repo":"ghashtag/t27","number":3006,"title":"gen-c, gen-rust and gen (Zig) are not byte-deterministic: 1, 3 and 2 files differ between two identical runs","hits":[{"specId":"b4efcdd7ff229ef26b03587176dbb0f75351666de1e6c689597be0322349e3dd","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"HashSet:13"},{"kind":"terms","value":"set, hash"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"byte, order, reg, three, two, load, print, read"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"path, gen, zig, seal, verilog, load, hash, map"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"gen, zig, verilog, rust, json, emit, backends"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"zig, path, gen, print, exists"}]}]},{"key":"ghashtag/t27#3004","repo":"ghashtag/t27","number":3004,"title":"\"One source, four targets\" has under 1% runtime coverage, and no tool compares all four on any spec","hits":[{"specId":"83697f2c0ddeafb4bdb3c87b327a2d663de93214f7fb8d10d485574ace9ac293","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/igla/race/mvp_ternary_classifier.t27"},{"kind":"symbol","value":"on_comb:142"},{"kind":"terms","value":"igla, race, mvp, ternary, classifier, zero, inputs, bit"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"terms","value":"etx, one"}]},{"specId":"52e2adbd19b94526511c5ceace12ae6a798212d379a78eacc965258c52983ee2","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/trinet/etx.t27"},{"kind":"terms","value":"trinet, etx"}]},{"specId":"f3b97da6289ecc13cd9efc132dc417b23dff4316a835d5f6d86875470f306c34","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"on_comb:107"},{"kind":"terms","value":"igla, race, unit, zero, one, shift, comb"}]},{"specId":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","relation":"reference","coverage":"unverified","score":1027,"reasons":[{"kind":"symbol","value":"on_comb:105"},{"kind":"terms","value":"igla, race, unit, two, one, comb"}]}]},{"key":"ghashtag/t27#2998","repo":"ghashtag/t27","number":2998,"title":"All 410 iverilog rejections classified by construct: 36 classes, three cover 339, and three new emitter defects named","hits":[]},{"key":"ghashtag/t27#2994","repo":"ghashtag/t27","number":2994,"title":"The local NOW preview says OK where the required `check` context says FAIL -- two conditions previewed by nothing","hits":[{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"column, self, gate, reads, says, nothing, paid"}]},{"specId":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"section, local, fail, passed"}]},{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"local, fail"}]}]},{"key":"ghashtag/t27#2992","repo":"ghashtag/t27","number":2992,"title":"`implies` appears 9 times in live source and 0 times in the compiler: the consequent is discarded and typecheck reports OK","hits":[{"specId":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/fpga/top_level.t27"},{"kind":"symbol","value":"system_ready:48"},{"kind":"terms","value":"top, level, system, state, ready, busy"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"probe, assertions, compiler, parse, typecheck, emitted, live, ready"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"compiler, checking, typecheck"}]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"writes, reports, live"}]}]},{"key":"ghashtag/t27#2987","repo":"ghashtag/t27","number":2987,"title":"The Icarus simulation gate has had zero targets since specs/scratch was untracked, and 260 baselines for subjects that do not exist","hits":[{"specId":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"binary_search:27"},{"kind":"terms","value":"search, zero, binary"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":84,"reasons":[{"kind":"terms","value":"pass, passed, simulate, verilog, real, reports, loop, icarus"}]},{"specId":"b4ea36c976d78efe1add7b0ec95018c0f01877755c257dac8482eeb7576f1909","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"zero, gate"}]}]},{"key":"ghashtag/t27#2983","repo":"ghashtag/t27","number":2983,"title":"Five open issues say a workflow is red; that workflow is green on master today","hits":[{"specId":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"red, green"}]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"red, green"}]}]},{"key":"ghashtag/t27#2977","repo":"ghashtag/t27","number":2977,"title":"A 'no competitor has' claim, a four-row table, and a survey that stopped in June","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"reference","coverage":"unverified","score":2072,"reasons":[{"kind":"path","value":"specs/igla/coder/benchmark.t27"},{"kind":"symbol","value":"CompetitorScore:49"},{"kind":"terms","value":"igla, coder, benchmark, competitor, score, rtl, evolve, estimate"}]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"table, owner, unique, writes, reads, reading, tool, reports"}]},{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"docs, text, generate, table, row"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"docs, text, generate, table, row"}]}]},{"key":"ghashtag/t27#2975","repo":"ghashtag/t27","number":2975,"title":"The Rust backend emits no tests at all: 532 specs declare them, `#[test]` appears zero times","hits":[]},{"key":"ghashtag/t27#2964","repo":"ghashtag/t27","number":2964,"title":"Competitor table: 144 of 168 records state a published score nobody published","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"reference","coverage":"unverified","score":2141,"reasons":[{"kind":"path","value":"specs/igla/coder/benchmark.t27"},{"kind":"symbol","value":"CompetitorScore:49"},{"kind":"symbol","value":"compare_with_competitor:249"},{"kind":"terms","value":"igla, coder, benchmark, competitor, score, compare, rtl, cass"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"reference","coverage":"unverified","score":1079,"reasons":[{"kind":"symbol","value":"PASS_AT_1:22"},{"kind":"terms","value":"igla, coder, pass, benchmark, rtl, score, write, real"}]}]},{"key":"ghashtag/t27#2961","repo":"ghashtag/t27","number":2961,"title":"Two of four required contexts have no master reading, and one cannot have any; the README CI badge points at a workflow that does not exist on master","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"measured, path, merge, produce, per, one, two, base"}]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"base, zero, one, two"}]},{"specId":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"one, off, two"}]},{"specId":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"bootstrap, two, one"}]},{"specId":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"per, two, one"}]}]},{"key":"ghashtag/t27#2920","repo":"ghashtag/t27","number":2920,"title":"\"Power analysis regression\" is nine echo lines and never opens the file it names","hits":[{"specId":"7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892","relation":"reference","coverage":"unverified","score":2059,"reasons":[{"kind":"path","value":"specs/fpga/power_analysis.t27"},{"kind":"terms","value":"power, analysis, zero, device, limits, xc7a100t, xc7a35t, budget"}]},{"specId":"b7f53f9c19f47f997361c3aa223dbc8b59aa62d9af13607a242b85c6e173082b","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"power, analysis, typical, budget"}]}]},{"key":"ghashtag/t27#2919","repo":"ghashtag/t27","number":2919,"title":"Five workflows believe they are required; four contexts are. coverage failed on 32 of the last 40 merged PRs","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"matches, required, five, gate, claims, block"}]}]},{"key":"ghashtag/t27#2915","repo":"ghashtag/t27","number":2915,"title":"brain-seal-refresh.yml cannot succeed: its last step is a push this repository's own ruleset rejects","hits":[]},{"key":"ghashtag/t27#2914","repo":"ghashtag/t27","number":2914,"title":"coq-proofs.yml has failed 62 of 62 runs at opam init; 9 of the repository's 58 Coq files are compiled by anything","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"may, runs, failed, fixed"}]}]},{"key":"ghashtag/t27#2905","repo":"ghashtag/t27","number":2905,"title":"bootstrap/src/tooling.rs: 7 gate bodies undeclared; two subcommands print advice for a flag that does not exist and exit 0","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"returns, claim, call, flag, live, gate"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"gate, print, exit, main, help"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"entry, flag, phi, exit, success, mod, call"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"two, print, call, phi"}]},{"specId":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"bootstrap, two"}]}]},{"key":"ghashtag/t27#2904","repo":"ghashtag/t27","number":2904,"title":"The gate against gates-green-by-not-running covers 15 of 47 workflows, and both offenders are outside it","hits":[{"specId":"b4ea36c976d78efe1add7b0ec95018c0f01877755c257dac8482eeb7576f1909","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"gates, gate"}]}]},{"key":"ghashtag/t27#2903","repo":"ghashtag/t27","number":2903,"title":"cli/tri-mcp is in neither workspace members nor exclude -- the same defect Cargo.toml already documents for ffi","hits":[]},{"key":"ghashtag/t27#2902","repo":"ghashtag/t27","number":2902,"title":"coq/_CoqProject lists 9 of the 11 .v files; 486 lines of proof have never seen coqc","hits":[]},{"key":"ghashtag/t27#2898","repo":"ghashtag/t27","number":2898,"title":"MAX_SORRY counts 5 admitted proofs; 4 are in files nothing compiles","hits":[]},{"key":"ghashtag/t27#2895","repo":"ghashtag/t27","number":2895,"title":"67% of the Lean development is outside the build graph: 647 theorems lake build has never compiled","hits":[{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"import, graph, modules, build, action"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"build, graph, evidence, commands, runs"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"graph, modules, build, action"}]}]},{"key":"ghashtag/t27#2893","repo":"ghashtag/t27","number":2893,"title":"A Lean model splits a dotted type into three parameters, and the theorem is true because of it","hits":[{"specId":"8e5ba5dfd346196b718e8abeeb200686d3721831b8a376938316f5f121955dec","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/tri/utils/args.t27"},{"kind":"symbol","value":"ParseResult:24"},{"kind":"terms","value":"utils, args, parse"}]},{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"ParseResult:112"},{"kind":"terms","value":"json, request, parse, params"}]},{"specId":"7520e251d23861075aa7c4899aee7074e7199364c34f8f3218ee7d7711acd6e6","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"order, env, model, three, evidence, available"}]}]},{"key":"ghashtag/t27#2880","repo":"ghashtag/t27","number":2880,"title":"Two modifiers the parser consumes and records nowhere, neither with a consumer today","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"compiler, parser, advance, parse, field, struct"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"compiler, lexer, token, advance"}]},{"specId":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"EncodedSequence:76"},{"kind":"symbol","value":"encodeNGram:124"},{"kind":"terms","value":"sequence, ngram, encoded, encode"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"exit_with_code:246"},{"kind":"terms","value":"exit, parse"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"consumer, three, two, str, write, field, encode"}]}]},{"key":"ghashtag/t27#2873","repo":"ghashtag/t27","number":2873,"title":"A script named verify_all_152.py has never parsed: eight conflict markers, present since the commit that added it","hits":[{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"script, one, always, never, returns, present"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"invalid, conflict, rule, commit, shape, returns, upstream"}]},{"specId":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"git, commit, path, skill, updated, added, digit"}]},{"specId":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"present, verify, verification"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"present, verify"}]}]},{"key":"ghashtag/t27#2869","repo":"ghashtag/t27","number":2869,"title":"Four Verilog-backend findings: 4702 invariants that are comments, and a check that cannot fail","hits":[{"specId":"12a5bb8e6d0975bfd72b3520ac83e9adaa6f52371be8ef101ef5fd39b8fcbf6f","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"on_clock:27"},{"kind":"terms","value":"clocked, clock"}]},{"specId":"488af77492c2664a504de98dc8dc2a19a37e3cce3d355f3a1af26e259bfb3038","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"on_clock:10"},{"kind":"terms","value":"clocked, clock"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"on_clock:170"},{"kind":"terms","value":"signed, clock"}]},{"specId":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"on_clock:13"},{"kind":"terms","value":"clock"}]},{"specId":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"on_clock:38"},{"kind":"terms","value":"clock"}]}]},{"key":"ghashtag/t27#2860","repo":"ghashtag/t27","number":2860,"title":"Five Zig-backend findings from a fan-out audit: a dropped loop body, a fabricated shift width, and assert_eq that nothing defines","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1075,"reasons":[{"kind":"symbol","value":"parse_if_stmt:965"},{"kind":"terms","value":"parser, children, stmt, parse, comparison, shift, call, literal"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"backend, zig, ast, invariant, case, parse, path, gen"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"fixed, operands, out, range, findings, valid, int, call"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"valid, path, gen, compile, project, zig, verilog, invariant"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"zig, invariant, expression, int, assert, stmt, case"}]}]},{"key":"ghashtag/t27#2853","repo":"ghashtag/t27","number":2853,"title":"Twelve quantified clauses call a function with the wrong number of arguments; every one has a partner test doing the same","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"reference","coverage":"unverified","score":1100,"reasons":[{"kind":"symbol","value":"YosysReport:77"},{"kind":"symbol","value":"match_at:181"},{"kind":"symbol","value":"score_rtl_with_yosys:295"},{"kind":"terms","value":"eval, pass, benchmark, report, yosys, passed, match, rtl"}]},{"specId":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"verilog_eval_problems:36"},{"kind":"symbol","value":"count_passed:89"},{"kind":"terms","value":"bench, proxy, problem, verilog, eval, problems, benchmark, passed"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"reference","coverage":"unverified","score":1053,"reasons":[{"kind":"symbol","value":"count_passed:178"},{"kind":"terms","value":"benchmark, report, score, dataset, match, passed, compute, rtl"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"reference","coverage":"unverified","score":1051,"reasons":[{"kind":"symbol","value":"BoothResult:102"},{"kind":"symbol","value":"booth_encode:111"},{"kind":"terms","value":"backend, mul, shift, booth, encode, pass, match, parse"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"match_at:180"},{"kind":"terms","value":"tmp, pipeline, import, match, verilog, score, build, wire"}]}]},{"key":"ghashtag/t27#2851","repo":"ghashtag/t27","number":2851,"title":"Seal Coverage has been red on master since #2841: four gen-c fixes changed generated output without re-sealing","hits":[{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig"}]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/vsa/vsa_core.t27"},{"kind":"terms","value":"vsa, bound"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"compiler, list, status, gen, success, zig, seal, hash"}]},{"specId":"364119169fe8fa59b9f2ddc0edbcfd00bff4dc1e37af6b7626f40f093360f490","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"gen, zig, seal, point"}]},{"specId":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"seal, gen, save, failure"}]}]},{"key":"ghashtag/t27#2847","repo":"ghashtag/t27","number":2847,"title":"Nine unverified findings from a C-backend fan-out audit, with their counts and where to check them","hits":[{"specId":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/phi_ratio.t27"},{"kind":"terms","value":"numeric, phi, ratio"}]},{"specId":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/numeric/phi_ratio.t27"},{"kind":"terms","value":"numeric, phi, ratio"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"len, phi, fixed, zero, out, findings"}]}]},{"key":"ghashtag/t27#2846","repo":"ghashtag/t27","number":2846,"title":"String literals reach C with their quotes stripped: a function returns its own address instead of its name","hits":[{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/numeric/formats_catalog.t27"},{"kind":"terms","value":"numeric, formats, catalog, decimal64"}]},{"specId":"2677ca7baf25df8c84d3370f519d73f134f0091770cab803ce7ef332beef5ae5","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BIAS_EXPR:26"},{"kind":"terms","value":"numeric, bias, expr"}]},{"specId":"3a0a496b0fac77bd8636bde8a08d4368f0fe0e71ba137199f8b95e6e3df40bfe","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BIAS_EXPR:26"},{"kind":"terms","value":"numeric, bias, expr"}]},{"specId":"c927b0667f745cc79958e4879fc6771b0f7ec6e435621dd50acf13916b52e52a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BIAS_EXPR:26"},{"kind":"terms","value":"numeric, bias, expr"}]},{"specId":"cc71041e45db26a32c01005cba8f5ba4f96e12701c851c63a7db3b15e17fe4bb","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BIAS_EXPR:31"},{"kind":"terms","value":"numeric, bias, expr"}]}]},{"key":"ghashtag/t27#2843","repo":"ghashtag/t27","number":2843,"title":"29 specs declare the same test twice, and in half of them the two bodies differ","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/igla/coder/benchmark.t27"},{"kind":"terms","value":"igla, coder, benchmark, rtl, ternary, cordic, formal"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/igla/race/backend.t27"},{"kind":"terms","value":"igla, race, backend, two, repeated"}]},{"specId":"207e008007cc79b66f7d80aac725675cff7bcd2f3029497cf29d15cb5d8702ac","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/igla/race/systolic_array.t27"},{"kind":"terms","value":"igla, race, systolic, array, gemm"}]},{"specId":"bab39e8fc8641fd2db77b865b5d5be1a34ec958105af238d4972010887805f39","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/igla/race/cordic_fixed.t27"},{"kind":"terms","value":"igla, race, cordic, fixed"}]},{"specId":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/igla/race/bram_weights.t27"},{"kind":"terms","value":"igla, race, bram, weights"}]}]},{"key":"ghashtag/t27#2839","repo":"ghashtag/t27","number":2839,"title":"Eight invariants spell determinism as f(x) == f(x), which holds for any function whatever","hits":[{"specId":"207e008007cc79b66f7d80aac725675cff7bcd2f3029497cf29d15cb5d8702ac","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"systolic_result:101"},{"kind":"symbol","value":"systolic_gemm_2x2:111"},{"kind":"terms","value":"igla, race, systolic, array, state, gemm, 2x2"}]},{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"reference","coverage":"unverified","score":1027,"reasons":[{"kind":"symbol","value":"opcode_name:56"},{"kind":"terms","value":"igla, race, opcodes, load, opcode, property"}]},{"specId":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"encode_keyword:61"},{"kind":"terms","value":"igla, coder, tokenizer, encode, keyword"}]},{"specId":"607d9e99f30688eb84635aa46ad305d3a08ee9fba01b2e0ec7a093276bcad285","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"ternary_gemm_2x2:29"},{"kind":"terms","value":"igla, race, ternary, gemm, 2x2"}]},{"specId":"7155d76ca10f03c4c2cbe92de1350a9f38a118d9c610a9cfe2c0be294d441758","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"adder_tree_4:46"},{"kind":"terms","value":"igla, race, adder, tree"}]}]},{"key":"ghashtag/t27#2835","repo":"ghashtag/t27","number":2835,"title":"specs/file/operations.t27 declares fn delete twice with different arities; all three backends emit both","hits":[{"specId":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/file/operations.t27"},{"kind":"terms","value":"operations, range, delete, path"}]},{"specId":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"FileError:57"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"gen, zig, rust, emit, backends"}]},{"specId":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"operations, parse, delete"}]}]},{"key":"ghashtag/t27#2834","repo":"ghashtag/t27","number":2834,"title":"gen-c emits the first reassignment of a var as a second declaration: 45 specs, 375 errors","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"PackedTrit:41"},{"kind":"symbol","value":"pack_trit:159"},{"kind":"symbol","value":"trit_xor:316"},{"kind":"terms","value":"base, zero, one, trit, packed, per, ternary, pack"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"specs/igla/race/rtl.t27"},{"kind":"terms","value":"igla, race, rtl, assignment, gen, instances"}]},{"specId":"532a215e4f4848a81dce61832d5469b4f5c97fa359b981754f641529e6178fa5","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/igla/race/cordic.t27"},{"kind":"terms","value":"igla, race, cordic, zero, one"}]},{"specId":"bab39e8fc8641fd2db77b865b5d5be1a34ec958105af238d4972010887805f39","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/igla/race/cordic_fixed.t27"},{"kind":"terms","value":"igla, race, cordic, fixed"}]},{"specId":"a3927bcab311e42d982b0667bf8b946da6c1bdb147d65a24985997700486ee36","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/igla/race/cordic_top.t27"},{"kind":"terms","value":"igla, race, cordic, top"}]}]},{"key":"ghashtag/t27#2830","repo":"ghashtag/t27","number":2830,"title":"A module-level var becomes a typedef whose type is its initializer","hits":[{"specId":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/demos/jones_topology_decision_gate.t27"},{"kind":"terms","value":"demos, jones, topology, decision, gate"}]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/queen/lotus.t27"},{"kind":"terms","value":"queen, lotus, phase, unknown, total"}]},{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/nn/hslm.t27"},{"kind":"symbol","value":"PHASE_FORWARD:42"},{"kind":"terms","value":"hslm, phase, forward, attention, mode"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, one, six"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, one, six"}]}]},{"key":"ghashtag/t27#2827","repo":"ghashtag/t27","number":2827,"title":"phi_split_optimality.t27:293 passes a total width into a parameter that means available width","hits":[{"specId":"c17f4eba133c5caccd5af0eb50c4ba920920ca361f8cb6cdcb8fcd4ac8a1e535","relation":"reference","coverage":"unverified","score":2082,"reasons":[{"kind":"path","value":"specs/math/phi_split_optimality.t27"},{"kind":"symbol","value":"optimal_ratio_by_self_similarity:50"},{"kind":"symbol","value":"optimal_allocation_by_rounding:70"},{"kind":"terms","value":"math, phi, split, optimality, optimal, ratio, self, similarity"}]},{"specId":"2677ca7baf25df8c84d3370f519d73f134f0091770cab803ce7ef332beef5ae5","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TOTAL_BITS:15"},{"kind":"terms","value":"total, bits, sign, exp, mant, ratio, phi"}]},{"specId":"3a0a496b0fac77bd8636bde8a08d4368f0fe0e71ba137199f8b95e6e3df40bfe","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TOTAL_BITS:15"},{"kind":"terms","value":"total, bits, sign, exp, mant, ratio, phi"}]},{"specId":"77346585fb0fb4befeba1c4f3233a3dbf8d4cbb3107df4f29cb3ca3f916c96cc","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TOTAL_BITS:15"},{"kind":"terms","value":"total, bits, sign, exp, mant, ratio, phi"}]},{"specId":"8306e86091bc7dac8c797b4eb7de6502fb4b38d65fb49b73b33aca60ee9ac31c","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TOTAL_BITS:15"},{"kind":"terms","value":"total, bits, sign, exp, mant, ratio, phi"}]}]},{"key":"ghashtag/t27#2826","repo":"ghashtag/t27","number":2826,"title":"opcodes.t27:984 says the sacred alphabet is empty; it is 0xDE..0xE8, and the correctly-bounded form is already in the file","hits":[{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"reference","coverage":"unverified","score":2042,"reasons":[{"kind":"path","value":"specs/igla/race/opcodes.t27"},{"kind":"symbol","value":"OPCODE_MIN:27"},{"kind":"symbol","value":"OPCODE_MAX:28"},{"kind":"symbol","value":"is_sacred_opcode:51"},{"kind":"symbol","value":"get_opcode_cycles:88"},{"kind":"terms","value":"igla, race, opcodes, read, opcode, min, sacred, cycles"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"len, sacred, cycles, opcode, range, opcodes, finding"}]},{"specId":"3195a264eeb3a9f6a1894ea50f84cd3ce9c91b52e62f169b7518249a90b5df97","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"sacred, opcode, form, evidence, holds"}]}]},{"key":"ghashtag/t27#2825","repo":"ghashtag/t27","number":2825,"title":"Three cordic.t27 invariants are false over their whole live domain, and the file's own tests pin the opposite","hits":[{"specId":"532a215e4f4848a81dce61832d5469b4f5c97fa359b981754f641529e6178fa5","relation":"reference","coverage":"unverified","score":1061,"reasons":[{"kind":"symbol","value":"pow2_neg_entry:48"},{"kind":"symbol","value":"cordic_gain:99"},{"kind":"symbol","value":"cordic_sin_cos:119"},{"kind":"symbol","value":"cordic_inner:125"},{"kind":"terms","value":"cordic, arctan, entry, pow2, neg, sqrt, inner, gain"}]},{"specId":"37aaa0322da86d9674dfd2f7ee235c14c68420cd43da356a04384f5dfccc2f20","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"EXP_BITS:16"},{"kind":"terms","value":"bits, exp, neg, f32, val, sqrt, over, range"}]},{"specId":"5fdec7f0438860173e0475b5e8912e5045a7ab37639ae21ea6f6329830989c02","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"EXP_BITS:16"},{"kind":"terms","value":"bits, exp, neg, f32, val, sqrt, over"}]},{"specId":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"EXP_BITS:27"},{"kind":"terms","value":"bits, exp, phi, val, positive, range, ratio, full"}]},{"specId":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"phi_split:47"},{"kind":"symbol","value":"exp_bits:53"},{"kind":"terms","value":"phi, ratio, split, available, exp, bits, comparison"}]}]},{"key":"ghashtag/t27#2824","repo":"ghashtag/t27","number":2824,"title":"cordic_sin_cos returns (cos, sin); its own doc comment, and the repo's reference CORDIC RTL, both say (sin, cos)","hits":[{"specId":"532a215e4f4848a81dce61832d5469b4f5c97fa359b981754f641529e6178fa5","relation":"reference","coverage":"unverified","score":2072,"reasons":[{"kind":"path","value":"specs/igla/race/cordic.t27"},{"kind":"symbol","value":"cordic_gain:99"},{"kind":"symbol","value":"cordic_sin_cos:119"},{"kind":"symbol","value":"cordic_inner:125"},{"kind":"terms","value":"igla, race, cordic, arctan, pow2, neg, sqrt, inner"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/igla/coder/dataset.t27"},{"kind":"terms","value":"igla, coder, dataset, rtl, inner, report"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"igla, coder, report, inner, rtl, float, statements, contains"}]},{"specId":"a3927bcab311e42d982b0667bf8b946da6c1bdb147d65a24985997700486ee36","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"igla, race, cordic, inner, gain, atan, sin, cos"}]},{"specId":"bab39e8fc8641fd2db77b865b5d5be1a34ec958105af238d4972010887805f39","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"igla, race, cordic, gain, atan, sin, cos, range"}]}]},{"key":"ghashtag/t27#2822","repo":"ghashtag/t27","number":2822,"title":"Thirteen competitors are defined 2-4 times in one benchmark spec, and five disagree on the score","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"reference","coverage":"unverified","score":2133,"reasons":[{"kind":"path","value":"specs/igla/coder/benchmark.t27"},{"kind":"symbol","value":"stepprm_rtl_competitor:257"},{"kind":"symbol","value":"cass_rtl_competitor:270"},{"kind":"symbol","value":"rtlbenchls_competitor:282"},{"kind":"symbol","value":"llm4rtl_competitor:295"},{"kind":"symbol","value":"estrtl_competitor:307"},{"kind":"symbol","value":"llm4rtl_2026_competitor:444"},{"kind":"symbol","value":"stepprm_rtl_competitor:645"},{"kind":"symbol","value":"estrtl_competitor:698"},{"kind":"symbol","value":"llm4rtl_2026_competitor:711"},{"kind":"symbol","value":"cass_rtl_competitor:724"},{"kind":"symbol","value":"rtlbenchls_competitor:736"},{"kind":"symbol","value":"stepprm_rtl_competitor:2069"},{"kind":"symbol","value":"cass_rtl_competitor:2084"},{"kind":"symbol","value":"llm4rtl_competitor:2130"},{"kind":"symbol","value":"estrtl_competitor:2202"},{"kind":"symbol","value":"stepprm_rtl_competitor:2290"},{"kind":"terms","value":"igla, coder, benchmark, competitor, score, stepprm, rtl, cass"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"reference","coverage":"unverified","score":1075,"reasons":[{"kind":"symbol","value":"PASS_AT_1:22"},{"kind":"symbol","value":"PASS_AT_10:23"},{"kind":"symbol","value":"pass_at_k:106"},{"kind":"terms","value":"igla, coder, eval, pass, benchmark, rtl, score, verilog"}]},{"specId":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"igla, coder, verilog, eval, benchmark, pass, score"}]}]},{"key":"ghashtag/t27#2807","repo":"ghashtag/t27","number":2807,"title":"specs/ml/optimizer/adamw.t27 contains two complete copies of the AdamW module","hits":[{"specId":"a5dbcb7030b094474aaaa271acb30a8e360843416a8ce98070bfee8cc66ae80b","relation":"reference","coverage":"unverified","score":2153,"reasons":[{"kind":"path","value":"specs/ml/optimizer/adamw.t27"},{"kind":"symbol","value":"DEFAULT_LEARNING_RATE:15"},{"kind":"symbol","value":"AdamWConfig:28"},{"kind":"symbol","value":"AdamWState:38"},{"kind":"symbol","value":"OptimizerStepResult:46"},{"kind":"symbol","value":"compute_bias_correction:93"},{"kind":"symbol","value":"update_first_moment:99"},{"kind":"symbol","value":"update_second_moment:105"},{"kind":"symbol","value":"apply_weight_decay:111"},{"kind":"symbol","value":"compute_update:117"},{"kind":"symbol","value":"amsgrad_update:131"},{"kind":"symbol","value":"DEFAULT_LEARNING_RATE:420"},{"kind":"symbol","value":"PhiVariant:476"},{"kind":"symbol","value":"AdamWConfig:483"},{"kind":"symbol","value":"AdamWState:493"},{"kind":"symbol","value":"OptimizerStepResult:501"},{"kind":"symbol","value":"compute_bias_correction:544"},{"kind":"symbol","value":"update_first_moment:548"},{"kind":"symbol","value":"update_second_moment:552"},{"kind":"symbol","value":"apply_weight_decay:556"},{"kind":"symbol","value":"compute_update:560"},{"kind":"symbol","value":"amsgrad_update:573"},{"kind":"terms","value":"optimizer, adamw, adam, phi, default, learning, rate, beta1"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, bias, phi, zero, copy, one, six"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, bias, phi, zero, copy, one, six"}]},{"specId":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/nn/attention.t27"},{"kind":"terms","value":"attention, weight, init, apply, compute, phi, variant, config"}]},{"specId":"e713662a43888a4304da49a3fa56934423615caec6edf983e2260fbb0123de3b","relation":"reference","coverage":"unverified","score":1057,"reasons":[{"kind":"symbol","value":"DEFAULT_LEARNING_RATE:15"},{"kind":"symbol","value":"OptimizerStepResult:40"},{"kind":"symbol","value":"apply_weight_decay:94"},{"kind":"terms","value":"optimizer, phi, default, learning, rate, damped, weight, decay"}]}]},{"key":"ghashtag/t27#2804","repo":"ghashtag/t27","number":2804,"title":"The Railway server's static fallback and 404 page point at a directory that has never existed","hits":[{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"tool, static, list, json, call, fallback, route, gate"}]}]},{"key":"ghashtag/t27#2800","repo":"ghashtag/t27","number":2800,"title":"The catalog has two generation paths; one feeds nothing, its only consumer is broken, and a permanent warning carries no information","hits":[{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/numeric/formats_catalog.t27"},{"kind":"terms","value":"numeric, formats, catalog, gfternary"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"consumer, pinned, three, two, load, read, write, exists"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"catalog, consumer, pinned, ids, live, finding, findings"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"exists, one, always, generation, present"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"measured, path, one, two, audit, pinned"}]}]},{"key":"ghashtag/t27#2787","repo":"ghashtag/t27","number":2787,"title":"tnf16's phi_distance is the value for a mantissa it does not have, and the field means three different things","hits":[{"specId":"22bb9ec2480d0efd0693f540c91de0ad95613e2fb560a7cf49143142e57b49b5","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/numeric/tnf16.t27"},{"kind":"terms","value":"numeric, tnf16, bits, trits"}]},{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/numeric/formats_catalog.t27"},{"kind":"terms","value":"numeric, formats, catalog, format, float"}]},{"specId":"49a3ef2231df6ce5d5cdeec62f6608317512b047d2c6adb620b327b04fbdcfc3","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:32"},{"kind":"terms","value":"numeric, bits, phi, distance, field, abs, format, log2"}]},{"specId":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:30"},{"kind":"terms","value":"numeric, bits, phi, distance, abs, format, log2, mantissa"}]},{"specId":"2387a4d9b48f4cdbdcea0ac11b1a3e95b82a71b42f9967d7318bc838c899f333","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"PHI_DISTANCE:30"},{"kind":"terms","value":"numeric, bits, phi, distance, abs, format, log2, mantissa"}]}]},{"key":"ghashtag/t27#2783","repo":"ghashtag/t27","number":2783,"title":"Four workflows are red on master today, and two of them are green by not running","hits":[{"specId":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"failed, red, green"}]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"failed, red, green"}]}]},{"key":"ghashtag/t27#2778","repo":"ghashtag/t27","number":2778,"title":"A recovered assertion that actually fails: trits_to_bits round-trip in ternary_encoding","hits":[{"specId":"9caf79744e4fe67d95900b03c1298e0a046444ab82e98057a133550f4c8ba646","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/base/ternary_encoding.t27"},{"kind":"symbol","value":"bits_to_trits:47"},{"kind":"symbol","value":"trits_to_bits:74"},{"kind":"terms","value":"base, ternary, encoding, bits, trits, decoded"}]},{"specId":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/queen/brain_summaries.t27"},{"kind":"terms","value":"queen, brain, summaries, reported"}]},{"specId":"1044d178fb800ee5aedbcc28ffb09b84ce0b85c8eb8982827c0073c523d23a84","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/isa/ternary_arithmetic.t27"},{"kind":"terms","value":"isa, ternary, arithmetic, trits"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"isa, encoding, written, arithmetic, bits, ternary"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"base, one, bits, trits, ternary, encoding"}]}]},{"key":"ghashtag/t27#2774","repo":"ghashtag/t27","number":2774,"title":"69% of the remaining discard is one construct the parser does not implement: quantified invariants","hits":[{"specId":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/igla/race/ternary_inference.t27"},{"kind":"symbol","value":"InferenceInput:26"},{"kind":"symbol","value":"ternary_inference_identity:68"},{"kind":"terms","value":"igla, race, ternary, inference, identity"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"finite, remaining, one, mean"}]}]},{"key":"ghashtag/t27#2767","repo":"ghashtag/t27","number":2767,"title":"547 specs carry TWO seals, and `seal --save` writes only one of them","hits":[{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, json"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"compiler, path, key, branch, seal, hash"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"twin, path, resolved, per, one, two, model"}]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"one, carry, two"}]},{"specId":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"seal, save"}]}]},{"key":"ghashtag/t27#2764","repo":"ghashtag/t27","number":2764,"title":"gen-c uses Trit 141 times and declares it zero times: the C backend does not follow \"use\"","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, zero, one, trit, per"}]},{"specId":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/vsa/ops.t27"},{"kind":"terms","value":"vsa, ops, bind, trit"}]},{"specId":"674a166252ed87e18ef467e7c8cb62f8363abc831102041a9eb6862be6ca6023","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"header, fixed, shape, uses, trit"}]},{"specId":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"header, fixed, shape, uses, trit"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"gen, zig, header, verilog, backend"}]}]},{"key":"ghashtag/t27#2762","repo":"ghashtag/t27","number":2762,"title":"Eight gates were green because nobody asked them: the readings are in","hits":[]},{"key":"ghashtag/t27#2754","repo":"ghashtag/t27","number":2754,"title":"secret-scan and cli-tri are red on master, and a paths: filter has been hiding it","hits":[{"specId":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/igla/coder/tokenizer.t27"},{"kind":"terms","value":"igla, coder, tokenizer"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"path, success, dir, build, branch, seal, load"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"path, secret, filter"}]},{"specId":"d1a87c87ff24072492c3d539a72af402b46a4acda477954b2485311592d7ddc1","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"paths, filter, matches"}]}]},{"key":"ghashtag/t27#2747","repo":"ghashtag/t27","number":2747,"title":"Nothing in this repository builds the Lean proofs","hits":[{"specId":"eca06ff812c61e2693f706b7389c71dcd769c30dfbb2cfb958e0416a5118b404","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/ar/asp_solver.t27"},{"kind":"terms","value":"asp, solver, steps, match"}]}]},{"key":"ghashtag/t27#2729","repo":"ghashtag/t27","number":2729,"title":"cli-tri has been red on master for three days; the path filter meant it never ran to say so","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"measured, path, days, one, two, ref"}]},{"specId":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"status, days, read, turns, ran"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"status, path, days, filter"}]},{"specId":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"cli, path, status, hash"}]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"days, ran"}]}]},{"key":"ghashtag/t27#2725","repo":"ghashtag/t27","number":2725,"title":"The formal workflow has never run, and my count of the converter keys was wrong in both directions","hits":[]},{"key":"ghashtag/t27#2724","repo":"ghashtag/t27","number":2724,"title":"The gate I added could never have run, and enum was not the only key the converter drops","hits":[{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"reference","coverage":"unverified","score":2059,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"symbol","value":"METHOD_COMPLETION:49"},{"kind":"symbol","value":"message_buffer_create:223"},{"kind":"terms","value":"lsp, protocol, buffer, length, method, exit, did, open"}]},{"specId":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"symbol","value":"LANG_ZIG:22"},{"kind":"terms","value":"lsp, language, lang, zig, python, info, completion, create"}]},{"specId":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/server/http.t27"},{"kind":"terms","value":"http, method, found, create"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"ast, case, block, info"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"TypeInfo:134"},{"kind":"terms","value":"ast, info"}]}]},{"key":"ghashtag/t27#2723","repo":"ghashtag/t27","number":2723,"title":"union(enum) lands the last of the 31; and the converter is not losing files silently","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1037,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"skip, parse, field, struct, else, enum"}]},{"specId":"07c1530c363c8cc62ef06874ca66311fb0da6891403a83ee756a1e6d79dc564a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"ParsedCommand:18"},{"kind":"terms","value":"namespace, parsed"}]}]},{"key":"ghashtag/t27#2719","repo":"ghashtag/t27","number":2719,"title":"message_buffer_create reports a capacity it cannot hold","hits":[{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"METHOD_COMPLETION:49"},{"kind":"symbol","value":"message_buffer_create:223"},{"kind":"terms","value":"lsp, protocol, buffer, length, method, completion, request, create"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"field, empty, argument, capacity, buffer"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"field, empty, argument, capacity, buffer"}]},{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"buffer, create, length, api, data"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"buffer, create, length, api, data"}]}]},{"key":"ghashtag/t27#2718","repo":"ghashtag/t27","number":2718,"title":"The converter never parsed variant lists at all — root cause fixed, and the hand recovery confirmed by re-derivation","hits":[{"specId":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/server/http.t27"},{"kind":"terms","value":"http, empty, success"}]},{"specId":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/utils/exit_codes.t27"},{"kind":"symbol","value":"ExitCode:13"},{"kind":"terms","value":"utils, exit, codes"}]},{"specId":"07c1530c363c8cc62ef06874ca66311fb0da6891403a83ee756a1e6d79dc564a","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"ParsedCommand:18"},{"kind":"terms","value":"namespace, parsed"}]},{"specId":"674a166252ed87e18ef467e7c8cb62f8363abc831102041a9eb6862be6ca6023","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"payload, nested, root, empty, field, fixed, valid"}]},{"specId":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"payload, nested, root, empty, field, fixed, valid"}]}]},{"key":"ghashtag/t27#2717","repo":"ghashtag/t27","number":2717,"title":"The lost enum variants were never lost: they survive in the sibling repo, and 29 of 31 are restored","hits":[{"specId":"53b65f5dc6e1f5dc9f3ecc755cc31e2fdcf455106dba6d59c1423ea0ddda0214","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/tri/net/http.t27"},{"kind":"symbol","value":"method_to_string:36"},{"kind":"terms","value":"net, http, method, status, success, parse"}]},{"specId":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/utils/exit_codes.t27"},{"kind":"terms","value":"utils, exit, codes"}]},{"specId":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","relation":"reference","coverage":"unverified","score":1037,"reasons":[{"kind":"symbol","value":"method_to_string:225"},{"kind":"terms","value":"http, default, method, post, put, delete, status, empty"}]},{"specId":"3518b9f0a302e6ba36ab0c41a65e331231b6824a51316201991894f58708c92e","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"TaskStatus:48"},{"kind":"terms","value":"autonomous, lifecycle, status"}]},{"specId":"c15e19f5e2a0ee02a6acf9817040877e1001e6d720eed0caec1e6ebd1bb4a124","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"AgentStatus:27"},{"kind":"terms","value":"faculty, board, status"}]}]},{"key":"ghashtag/t27#2716","repo":"ghashtag/t27","number":2716,"title":"A gate that mutates one digit and requires the harness to notice","hits":[{"specId":"9f64b649f7135a01834a1565e2704b40c1aafb3119a5e79b7ec3f6bac4f4117d","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"brain_bus_version:10"},{"kind":"terms","value":"brain, bus"}]}]},{"key":"ghashtag/t27#2715","repo":"ghashtag/t27","number":2715,"title":"Unpinned the enum tests and repaired lsp/language; 878 is the first defensible assertion count","hits":[{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"reference","coverage":"unverified","score":2053,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"symbol","value":"METHOD_HOVER:52"},{"kind":"terms","value":"lsp, protocol, buffer, length, method, did, hover, document"}]},{"specId":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","relation":"reference","coverage":"unverified","score":2040,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"symbol","value":"LANG_ZIG:22"},{"kind":"symbol","value":"EXT_T27:43"},{"kind":"symbol","value":"LanguageInfo:71"},{"kind":"terms","value":"lsp, language, lang, zig, ext, info"}]},{"specId":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/tri/sort/sort.t27"},{"kind":"terms","value":"sort, order"}]},{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"model, length, language, lsp, slice"}]}]},{"key":"ghashtag/t27#2714","repo":"ghashtag/t27","number":2714,"title":"The run-scan harness could report a pass compiled from different code","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"pass, report, passed, write, loop, valid, tree"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"report, passed, comparison, loop, pass"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"pass, fail, fixed, size, report"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"pass, fail, fixed, size, report"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"pass, fail, passed, report"}]}]},{"key":"ghashtag/t27#2713","repo":"ghashtag/t27","number":2713,"title":"A repo-wide \"replace Unicode with ASCII\" commit numbered the characters instead of transliterating them, and the tree records it as done","hits":[{"specId":"3a5a1d0bf24c0a354559c859ce379e3fa65b8aad313da8627e341daa273d4adf","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/math/phi_universal_attractor.t27"},{"kind":"terms","value":"math, phi, universal, attractor, point, proof"}]},{"specId":"cc960e5ccb68352c21b7479e7f775cc698d4a8fec103c05683cc962e5107b86a","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/vsa/jones_polynomial.t27"},{"kind":"symbol","value":"jones_trefoil_at_phi:119"},{"kind":"terms","value":"vsa, jones, polynomial, trefoil, phi"}]},{"specId":"b4ea36c976d78efe1add7b0ec95018c0f01877755c257dac8482eeb7576f1909","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"ternary_not:30"},{"kind":"terms","value":"isa, ternary, gates, gate, truth"}]},{"specId":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"compiler, invariant, commit, docs, ascii, text"}]},{"specId":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"parse, seal, commit, done, fail, failure"}]}]},{"key":"ghashtag/t27#2712","repo":"ghashtag/t27","number":2712,"title":"What a sole enum field means, decided by measurement — and the entanglement is gone","hits":[{"specId":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","relation":"reference","coverage":"unverified","score":2007,"reasons":[{"kind":"path","value":"specs/tools/schema.t27"},{"kind":"symbol","value":"ParameterSchema:46"},{"kind":"terms","value":"schema, parameter"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"ast, case, assert, rule, info"}]},{"specId":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"SortOrder:13"},{"kind":"terms","value":"sort, order"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"TypeInfo:134"},{"kind":"terms","value":"ast, info"}]},{"specId":"bde6d67dbe20541b56e501032706f53025dd6ec72b76ca204a86379dc56f0d1f","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"PaddingMode:31"},{"kind":"terms","value":"padding, mode"}]}]},{"key":"ghashtag/t27#2711","repo":"ghashtag/t27","number":2711,"title":"Recursive-by-value nodes and string-initialised numeric slices; and why the keyword field-name fix is blocked","hits":[{"specId":"85a7e9a6f0716d535f5a19f0e3e67da32b8bc956f9cd620f5099ba4961d75b55","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/trees/tree.t27"},{"kind":"terms","value":"trees, tree, size"}]},{"specId":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","relation":"reference","coverage":"unverified","score":2005,"reasons":[{"kind":"path","value":"specs/tools/schema.t27"},{"kind":"terms","value":"schema, default"}]},{"specId":"974e62d1cdcc28189ff5fddbf9405c9e02f8bb01325bc2f9860f0578a053b345","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"QuadNode:20"},{"kind":"symbol","value":"QuadTree:28"},{"kind":"terms","value":"trees, quadtree, quad, node, tree"}]},{"specId":"63216e4dbe843da95dd62bfc13b7741e6bf343e3bcf3d407e084d6be61e84dfe","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"OctNode:22"},{"kind":"terms","value":"trees, octree, oct, node"}]},{"specId":"338dda6bd5fe68db61f018bc4216fd6ab671562bcfc3cf92f1692fbdc2440abd","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"KDNode:13"},{"kind":"terms","value":"trees, tree, kdnode"}]}]},{"key":"ghashtag/t27#2710","repo":"ghashtag/t27","number":2710,"title":"The run-scan shim reported exit 0 on a file it never analysed; and a switch arm that ate 14 tests","hits":[{"specId":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"symbol","value":"LANG_T27:19"},{"kind":"symbol","value":"SymbolKind:144"},{"kind":"symbol","value":"symbol_kind_to_string:308"},{"kind":"terms","value":"lsp, language, lang, zig, info, bracket"}]},{"specId":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","relation":"reference","coverage":"unverified","score":2007,"reasons":[{"kind":"path","value":"specs/tools/schema.t27"},{"kind":"symbol","value":"ParameterSchema:46"},{"kind":"terms","value":"schema, parameter"}]},{"specId":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","relation":"reference","coverage":"unverified","score":2005,"reasons":[{"kind":"path","value":"specs/tri/sort/sort.t27"},{"kind":"terms","value":"sort"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1069,"reasons":[{"kind":"symbol","value":"parse_switch_expr:793"},{"kind":"symbol","value":"parse_enum_body:1135"},{"kind":"terms","value":"parser, parse, expr, right, field, struct, literal, switch"}]},{"specId":"1abd9bd8ba36e27afc61193b4da5cee668fce6a890cc6b7b0c4d44bbe13be5a9","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"EXIT_CODES:47"},{"kind":"terms","value":"schema, variant, about, exit, codes, agents"}]}]},{"key":"ghashtag/t27#2709","repo":"ghashtag/t27","number":2709,"title":"482 tests written, assertions executed 416 -> 888 — and none of them is behavioural","hits":[{"specId":"05267a4e1f59698a7b77f9960613213d76323188e7e822bfce442888d8367d5a","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/ml/layers/avgpool2d_layer.t27"},{"kind":"symbol","value":"DEFAULT_KERNEL:13"},{"kind":"terms","value":"layers, avgpool2d, layer, default, kernel, size, forward"}]},{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"terms","value":"math, constants, phi, measured, abs, pow, approx"}]},{"specId":"85a7e9a6f0716d535f5a19f0e3e67da32b8bc956f9cd620f5099ba4961d75b55","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/trees/tree.t27"},{"kind":"terms","value":"trees, tree, size"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"TypeInfo:400"},{"kind":"terms","value":"ast, data, decl, assert, info"}]},{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"TypeInfo:6"},{"kind":"terms","value":"info, set, arithmetic, literal, binary"}]}]},{"key":"ghashtag/t27#2708","repo":"ghashtag/t27","number":2708,"title":"use binds the module, not its names: 139 errors, and what is left is a pub-visibility matter","hits":[]},{"key":"ghashtag/t27#2707","repo":"ghashtag/t27","number":2707,"title":"A generated stub asserts nothing, so it should emit nothing: 152 -> 289 valid","hits":[{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"default"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"measured, zero, figure, invalid, nothing, emit"}]},{"specId":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"default, bad, matches, valid, emit"}]}]},{"key":"ghashtag/t27#2706","repo":"ghashtag/t27","number":2706,"title":"The array-literal scanner stopped at the first ']' and dropped the rest of the literal","hits":[{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"reference","coverage":"unverified","score":2054,"reasons":[{"kind":"path","value":"specs/portable/relay_observer.t27"},{"kind":"symbol","value":"WebSocketState:32"},{"kind":"symbol","value":"websocket_state_new:66"},{"kind":"terms","value":"portable, relay, observer, state, one, event, web, socket"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"parse_array_literal:720"},{"kind":"terms","value":"parser, brace, parse, right, inner, struct, literal, array"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"PIPELINE_STAGES:21"},{"kind":"symbol","value":"TernaryWord:67"},{"kind":"symbol","value":"MACUnit:71"},{"kind":"terms","value":"mac, units, pipeline, stages, ternary, word, macunit, trit"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TernaryWord:53"},{"kind":"terms","value":"one, trit, word, ternary, right"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"TernaryWord:17"},{"kind":"terms","value":"trit, ternary, word, time"}]}]},{"key":"ghashtag/t27#2705","repo":"ghashtag/t27","number":2705,"title":"RUST_DIALECT.json drifted in both directions; the ceiling built on it is unreliable","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, skip, top, parse, array"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/fpga/mac.t27"},{"kind":"terms","value":"mac, pipeline, stages, ternary, word, set"}]},{"specId":"ac2a7dd606abd2a289cfcf53e1362ad9e1d930066a8feaa18748f131db5971ca","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/automation/wrapup-auto.t27"},{"kind":"symbol","value":"WrapUpInput:16"},{"kind":"symbol","value":"WrapUpResult:26"},{"kind":"terms","value":"automation, wrapup, auto, wrap"}]},{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":2003,"reasons":[{"kind":"path","value":"specs/fpga/memory.t27"},{"kind":"terms","value":"memory"}]},{"specId":"dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"ErrorCode:32"},{"kind":"terms","value":"memory, wrapup, list, text"}]}]},{"key":"ghashtag/t27#2704","repo":"ghashtag/t27","number":2704,"title":"Rust array-repeat in a behaviour clause reached the output verbatim","hits":[{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"MemDesc:47"},{"kind":"symbol","value":"empty_mem_port:59"},{"kind":"symbol","value":"addr_width:200"},{"kind":"terms","value":"memory, mem, port, ports, desc, empty, addr, width"}]},{"specId":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"empty_mem_port:134"},{"kind":"terms","value":"hir, ports, port, mem, empty"}]},{"specId":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"addr_width:29"},{"kind":"terms","value":"compiler, width, addr, ports, memory"}]},{"specId":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"addr_width:119"},{"kind":"terms","value":"empty, addr, width"}]},{"specId":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ADDR_WIDTH:12"},{"kind":"terms","value":"addr, width"}]}]},{"key":"ghashtag/t27#2703","repo":"ghashtag/t27","number":2703,"title":"A keyword is a legal variable name; the parser dropped it and emitted 'var ;'","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":2046,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"symbol","value":"node_new:331"},{"kind":"terms","value":"compiler, parser, node, parse, local, decl, var, import"}]},{"specId":"d5d906f34640716defff3c0b92ac5c953e5d67885c14242db2bdccfd8e6f78d1","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"parser, token, ast, node, parse, decl, keyword, identifier"}]},{"specId":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"compiler, parser, lexer, identifier, token, ident, keyword"}]},{"specId":"9efc1e9e11d76314621e08b5d34fa54cd07ec75cea8d11045f76b846d001d450","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"compiler, parser, token, decl, var, parse, ast, node"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"rust, variable, var, report"}]}]},{"key":"ghashtag/t27#2701","repo":"ghashtag/t27","number":2701,"title":"Unresolved imports classified: 31 of 34 name things the corpus does not contain","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"PackedTrit:41"},{"kind":"terms","value":"base, one, trit, packed"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"PackedTrit:12"},{"kind":"terms","value":"compiler, trit, packed, phi"}]}]},{"key":"ghashtag/t27#2700","repo":"ghashtag/t27","number":2700,"title":"A \"using\" in prose became an import; and the per-spec delta check compared strings","hits":[{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"strings, parse, token, script, delta"}]}]},{"key":"ghashtag/t27#2699","repo":"ghashtag/t27","number":2699,"title":"Add a third instrument: do emitted imports resolve to files that exist?","hits":[]},{"key":"ghashtag/t27#2698","repo":"ghashtag/t27","number":2698,"title":"281 specs declare a module name; the resolver only ever read file paths","hits":[{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"symbol","value":"trit_negate:133"},{"kind":"terms","value":"base, ops, tritype, one, trit, multiply, negate, two"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_negate:127"},{"kind":"terms","value":"base, tritype, one, trit, multiply, negate, nor"}]},{"specId":"8015bf2fd623128d21e50cf1b1f55524aa3f75d3ebded4629c730e5cd9a8c578","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/sandbox/session_timeout.t27"},{"kind":"terms","value":"sandbox, session, timeout"}]},{"specId":"e8f81b78f31a4dc79b00a5bdccb14e4a8fb5ce58ba88a1a5c821c0d13ee3f542","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"trit_negate:28"},{"kind":"terms","value":"base, one, trit, negate"}]}]},{"key":"ghashtag/t27#2697","repo":"ghashtag/t27","number":2697,"title":"A hyphen in a use target is a path separator; and a primitive is not a module","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2037,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_negate:127"},{"kind":"terms","value":"base, tritype, zero, one, trit, per, multiply, negate"}]},{"specId":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/lsp/schema.t27"},{"kind":"terms","value":"lsp, schema, zero, diagnostic, severity, sync, parameter"}]},{"specId":"0b8463e8a0554acf19263278af0caae2e2982d7783ff3a9498bfbd7e4c21bf6e","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/physics/gamma-conflict.t27"},{"kind":"terms","value":"physics, gamma, conflict"}]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/provider/schema.t27"},{"kind":"terms","value":"provider, schema, config, base"}]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"trit_negate:133"},{"kind":"terms","value":"base, tritype, zero, one, trit, carry, multiply, negate"}]}]},{"key":"ghashtag/t27#2696","repo":"ghashtag/t27","number":2696,"title":"The emitter dropped every 'x as T' cast: 645 in 67 specs, 9 of them already passing","hits":[]},{"key":"ghashtag/t27#2695","repo":"ghashtag/t27","number":2695,"title":"RUST_DIALECT.json still lists math/constants after conversion","hits":[{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"terms","value":"math, constants"}]},{"specId":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"math, constants"}]},{"specId":"fb3c41eaf46f08d7fe6f5403a39fd0bfac635513f191898ff20ec67f2fdf76a7","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"math, constants"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"rust, json"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"rust, json"}]}]},{"key":"ghashtag/t27#2694","repo":"ghashtag/t27","number":2694,"title":"Convert math/constants from Rust dialect: specs that run 46 -> 74","hits":[{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"symbol","value":"ln_approx:137"},{"kind":"symbol","value":"exp_approx:158"},{"kind":"terms","value":"math, constants, measured, scale, pow, approx, exp"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"exp_approx:116"},{"kind":"symbol","value":"ln_approx:138"},{"kind":"terms","value":"approx, exp, taylor, pow, scale, div, single, pass"}]},{"specId":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"ln_approx:337"},{"kind":"symbol","value":"exp_approx:366"},{"kind":"terms","value":"syntax, pass, approx, exp"}]},{"specId":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"ln_approx:843"},{"kind":"symbol","value":"exp_approx:858"},{"kind":"terms","value":"exp, int, pow, approx"}]},{"specId":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"ln_approx:783"},{"kind":"symbol","value":"exp_approx:798"},{"kind":"terms","value":"exp, int, pow, approx"}]}]},{"key":"ghashtag/t27#2688","repo":"ghashtag/t27","number":2688,"title":"35 of 55 import-blocked specs depend on a Rust-dialect module: a ceiling, not a backlog","hits":[{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"terms","value":"math, constants, pow"}]},{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"rust, blocked"}]}]},{"key":"ghashtag/t27#2686","repo":"ghashtag/t27","number":2686,"title":"Gate Topology audits 15 of 45 workflows and misses two live violators; coq-proofs.yml has never been green in 50 runs","hits":[{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"gate, list, reads, dashboard, nothing, real, filter, runs"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"status, runs, per, dashboard, live, gate, silent"}]},{"specId":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"topology, status, active, wired, red, green"}]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"topology, status, active, wired, red, green"}]},{"specId":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"scope, runs, actions, workflows, total"}]}]},{"key":"ghashtag/t27#2685","repo":"ghashtag/t27","number":2685,"title":"PRL draft outline claims zero admitted lemmas; proofs/ contains 32, and the cited audit trail never existed","hits":[{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"status, claims, decision, claim, audit"}]},{"specId":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"zero, document, contains, inside"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"contains, right, zero"}]},{"specId":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"claims, zero"}]},{"specId":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"zero, contains"}]}]},{"key":"ghashtag/t27#2684","repo":"ghashtag/t27","number":2684,"title":"use std emits @import(\"std.zig\")","hits":[{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"zig, std"}]}]},{"key":"ghashtag/t27#2683","repo":"ghashtag/t27","number":2683,"title":"use a::b::Symbol imports a symbol, not a module; the emitter treats the last segment as a filename","hits":[{"specId":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"PHI_INV:14"},{"kind":"terms","value":"math, sacred, physics, phi, inv, target"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"PHI_INV:12"},{"kind":"terms","value":"math, sacred, physics, phi, inv"}]},{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"math, phi, inv, measured"}]},{"specId":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"PHI_INV:17"},{"kind":"terms","value":"math, phi, inv, measured"}]},{"specId":"304633b6f24931bc03b56540235f1cfb560e9648a6fa3473ac53f2c74c8156fc","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"PHI_INV:14"},{"kind":"terms","value":"physics, phi, inv, sacred"}]}]},{"key":"ghashtag/t27#2682","repo":"ghashtag/t27","number":2682,"title":"Correction: parent imports are legal under a tree-root; the revert in #2681 was wrong","hits":[{"specId":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"entry, parent, tree"}]},{"specId":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"entry, parent, tree"}]}]},{"key":"ghashtag/t27#2681","repo":"ghashtag/t27","number":2681,"title":"Relative parent imports are illegal in Zig; the emitted tree cannot build either way","hits":[{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"valid, path, compile, project, build, zig"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"zig, imports, constants, case"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"valid, declared, tree, emitted"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"project, zig, build, work"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"build, zig, generated"}]}]},{"key":"ghashtag/t27#2680","repo":"ghashtag/t27","number":2680,"title":"Every import dropped its module path: 92 of 144 valid specs import a file that is not there","hits":[{"specId":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"regression, import, valid"}]},{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"path, dropped, map"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"path, dropped, map"}]}]},{"key":"ghashtag/t27#2679","repo":"ghashtag/t27","number":2679,"title":"zig_run_scan reports on a 40-spec sample; run the whole population","hits":[]},{"key":"ghashtag/t27#2678","repo":"ghashtag/t27","number":2678,"title":"copy_propagate turns 'return result' into 'return undefined' when the write is inside a loop","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"pass, write, loop, statements, valid, ternary"}]},{"specId":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"ternary, word, write, copy, pack"}]},{"specId":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"write, copy"}]}]},{"key":"ghashtag/t27#2677","repo":"ghashtag/t27","number":2677,"title":"specs/base/types.t27: a byte cannot hold eight trits, and pack ignores byte indexing","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2068,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"symbol","value":"TRITS_PER_BYTE:32"},{"kind":"symbol","value":"PackedTrit:41"},{"kind":"symbol","value":"WORD_BYTES:51"},{"kind":"symbol","value":"TernaryWord:53"},{"kind":"symbol","value":"pack_trit:159"},{"kind":"symbol","value":"ternary_word_pack:194"},{"kind":"symbol","value":"byte_idx:502"},{"kind":"symbol","value":"byte_idx:517"},{"kind":"symbol","value":"byte_idx:543"},{"kind":"symbol","value":"byte_idx:1062"},{"kind":"symbol","value":"byte_idx:1111"},{"kind":"terms","value":"base, one, trit, packed, bits, per, trits, byte"}]},{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"TRITS_PER_BYTE:23"},{"kind":"terms","value":"ternary, packed, trit, trits, per, byte, bytes, pack"}]},{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"TRITS_PER_BYTE:22"},{"kind":"terms","value":"ternary, trits, per, byte, packed, bytes, int, pack"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"reference","coverage":"unverified","score":1043,"reasons":[{"kind":"symbol","value":"WORD_BYTES:36"},{"kind":"terms","value":"owner, word, bytes, bit, fixed, trit, bits, ternary"}]},{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"TRITS_PER_BYTE:65"},{"kind":"terms","value":"owner, trit, trits, per, byte, packed, bytes, pack"}]}]},{"key":"ghashtag/t27#2676","repo":"ghashtag/t27","number":2676,"title":"Emitted assertions never ran: bare expect() drops an error union","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"valid, assertions, five, emitted, ready, blocked"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"assertions, one, never, returns"}]}]},{"key":"ghashtag/t27#2675","repo":"ghashtag/t27","number":2675,"title":"Bind discarded call results; and the run-scan harness was writing into the repo","hits":[{"specId":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"harness, results, build, report"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"two, call, bind, unknown"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"status, exit, valid, bind, call"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"call, bind, cache"}]}]},{"key":"ghashtag/t27#2674","repo":"ghashtag/t27","number":2674,"title":"Unwritten bodies should @panic, not @compileError; and my sample was alphabetical","hits":[{"specId":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"compile, sample"}]}]},{"key":"ghashtag/t27#2673","repo":"ghashtag/t27","number":2673,"title":"ast-check VALID does not mean it compiles: 29 of 40, and one emitted line caused 13","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"pass, passed, compile, write, log, metric, constraint, valid"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"directory, formal, scan, valid, assertions, compiler, emitted, block"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"zig, ast, block, invariant, valid"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"zero, one, mean"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"valid, emitted"}]}]},{"key":"ghashtag/t27#2672","repo":"ghashtag/t27","number":2672,"title":"Interleave clauses with statements, and in all three block kinds: 232 leaks down to 1","hits":[{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"valid, kinds, path, block, invariant, put"}]}]},{"key":"ghashtag/t27#2671","repo":"ghashtag/t27","number":2671,"title":"Behaviour clauses inside braced test blocks were parsed as statements: 232 of them","hits":[]},{"key":"ghashtag/t27#2670","repo":"ghashtag/t27","number":2670,"title":"Every crate is now built by a workflow: 30 of 30, baseline empty","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"valid, baseline, empty, holds"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"valid, baseline, empty"}]}]},{"key":"ghashtag/t27#2669","repo":"ghashtag/t27","number":2669,"title":"The one crate no workflow compiles is the one that broke 169 specs","hits":[{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"default"}]}]},{"key":"ghashtag/t27#2668","repo":"ghashtag/t27","number":2668,"title":"Rank classes by specs-lifted, not frequency: one name blocks 150 of 189","hits":[{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"default"}]},{"specId":"9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"classes, rank, default, valid"}]},{"specId":"fe5cd36d3e031ae951e11290b42e4fa89ca8e1f8cc0599da1b4518bab9285c6a","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"classes, rank, default, valid"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"generated, classes, rank"}]}]},{"key":"ghashtag/t27#2667","repo":"ghashtag/t27","number":2667,"title":"The 99 pointless discards were the specs', not mine; dropping the redundant ones lifts 5","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2007,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, one"}]}]},{"key":"ghashtag/t27#2665","repo":"ghashtag/t27","number":2665,"title":"Target near-valid specs instead of walls: string comparison fixed, validity moves after eight iterations","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"trit_add:81"},{"kind":"terms","value":"zero, one, trit, neg, pos, compare, right"}]},{"specId":"1044d178fb800ee5aedbcc28ffb09b84ce0b85c8eb8982827c0073c523d23a84","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"trit_add:35"},{"kind":"terms","value":"trit, neg, zero, pos, valid, compare"}]},{"specId":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"trit_add:46"},{"kind":"terms","value":"trit, neg, zero, pos"}]},{"specId":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"trit_add:16"},{"kind":"terms","value":"trit, neg, zero, pos"}]},{"specId":"e8f81b78f31a4dc79b00a5bdccb14e4a8fb5ce58ba88a1a5c821c0d13ee3f542","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"trit_add:38"},{"kind":"terms","value":"zero, one, trit"}]}]},{"key":"ghashtag/t27#2664","repo":"ghashtag/t27","number":2664,"title":"Bracketed lists come from the clause renderer, not the declaration emitters","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"trit_pos:503"},{"kind":"symbol","value":"trit_pos:518"},{"kind":"symbol","value":"trit_pos:544"},{"kind":"symbol","value":"trit_pos:1063"},{"kind":"symbol","value":"trit_pos:1112"},{"kind":"terms","value":"zero, one, trit, trits, neg, pos, nor"}]},{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"TRIT_NEG:62"},{"kind":"symbol","value":"TRIT_ZERO:63"},{"kind":"symbol","value":"TRIT_POS:64"},{"kind":"terms","value":"vsa, zero, trit, neg, pos, trits, measured"}]},{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"TRIT_NEG:37"},{"kind":"symbol","value":"TRIT_ZERO:38"},{"kind":"symbol","value":"TRIT_POS:39"},{"kind":"terms","value":"trits, trit, neg, zero, pos, self, two"}]},{"specId":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"TRIT_NEG:16"},{"kind":"symbol","value":"TRIT_ZERO:17"},{"kind":"symbol","value":"TRIT_POS:18"},{"kind":"terms","value":"ops, trit, neg, zero, pos, read"}]},{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TRIT_NEG:18"},{"kind":"symbol","value":"TRIT_ZERO:19"},{"kind":"symbol","value":"TRIT_POS:20"},{"kind":"terms","value":"trit, neg, zero, pos, trits, valid"}]}]},{"key":"ghashtag/t27#2662","repo":"ghashtag/t27","number":2662,"title":"Cluster the walls by skeleton; keywords in call position drop the statement","hits":[{"specId":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"SacredRule:22"},{"kind":"terms","value":"sacred, rule"}]},{"specId":"b3fd0cb2764d0828d728fce767a042d999c182d5d148dbce8a380db78e01c53b","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"SacredRule:13"},{"kind":"terms","value":"sacred, rule"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"call, switch, statement, enum"}]}]},{"key":"ghashtag/t27#2660","repo":"ghashtag/t27","number":2660,"title":"The gate blocked a correct fix because the parser reached more Rust; exempt dialect files from the event ratchet","hits":[{"specId":"4cebca7f2af8129cdd9fe75b79a751bfeb933ecb2adac117d15b6789d8fd5245","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/test_framework/property_test_template.t27"},{"kind":"symbol","value":"PropertyTestConfig:15"},{"kind":"symbol","value":"for_all:97"},{"kind":"terms","value":"framework, property, template, config"}]},{"specId":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"TestResult:40"},{"kind":"symbol","value":"for_all:83"},{"kind":"terms","value":"framework, gate, json"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"declarations, valid, generator, parse, emitted, gate, accepts, blocked"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"exempt, failed, gate"}]},{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"rust, level, blocked, total"}]}]},{"key":"ghashtag/t27#2658","repo":"ghashtag/t27","number":2658,"title":"The lexer drops the mantissa of every exponent literal; the fix trips the parse gate","hits":[{"specId":"4cebca7f2af8129cdd9fe75b79a751bfeb933ecb2adac117d15b6789d8fd5245","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/test_framework/property_test_template.t27"},{"kind":"symbol","value":"PropertyTestConfig:15"},{"kind":"terms","value":"framework, property, template, config, diff, right"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"binary, right, parse, decimal, hex, digit, two, literal"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"parser, parse, right, field, struct, literal, else"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"declarations, valid, parse, emitted, gate, accepts"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"framework, config, tolerance, property, gate, parse"}]}]},{"key":"ghashtag/t27#2657","repo":"ghashtag/t27","number":2657,"title":"70 of 88 walls are still emitter-reachable; and a 538x miscount caught before commit","hits":[]},{"key":"ghashtag/t27#2655","repo":"ghashtag/t27","number":2655,"title":"Enum literals in switch prongs are the ninth binding site, and Zig blames the line before","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"compiler, level, parse, struct, literal, switch, enum"}]}]},{"key":"ghashtag/t27#2654","repo":"ghashtag/t27","number":2654,"title":"Anonymous struct return types: the last known declaration-loss class, two thirds of it","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"top, level, parse, annotation, field, call, struct, enum"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"KnowledgeGraph:49"},{"kind":"terms","value":"knowledge, graph, token, build, find, top, loss"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"KnowledgeGraph:48"},{"kind":"terms","value":"knowledge, graph, token, build, find, top, loss"}]},{"specId":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"KnowledgeGraph:83"},{"kind":"symbol","value":"findSimilar:157"},{"kind":"terms","value":"graph, knowledge, entities, find, similar, stats"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"lexer, token"}]}]},{"key":"ghashtag/t27#2652","repo":"ghashtag/t27","number":2652,"title":"_magsub: the sticky tie arm is the addition rule, kept harmless only by never firing","hits":[]},{"key":"ghashtag/t27#2651","repo":"ghashtag/t27","number":2651,"title":"Function literals in expression position swallowed 20 more declarations","hits":[{"specId":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"symbol","value":"SSECloseCode:60"},{"kind":"symbol","value":"SSEEvent:72"},{"kind":"terms","value":"sse, field, sseevent, sseclose"}]},{"specId":"45784e977fde6e94fc06398b713494335150a946f08c4332505038a063523222","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"SseEvent:64"},{"kind":"terms","value":"sse, position, callback, parse"}]},{"specId":"405fdea7d1fb2b058f76601757ce3b28a5c6667fdb68203b311c80d7f4db7407","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"gen, declarations, expression"}]}]},{"key":"ghashtag/t27#2650","repo":"ghashtag/t27","number":2650,"title":"++ was lexed but never parsed: 20 declarations restored, and validity was rewarding the loss","hits":[{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"terms","value":"lsp, protocol, parse"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1064,"reasons":[{"kind":"symbol","value":"parse_expr:356"},{"kind":"symbol","value":"parse_struct_literal:683"},{"kind":"terms","value":"compiler, parser, expect, level, parse, expr, right, multiplicative"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"compiler, token"}]}]},{"key":"ghashtag/t27#2647","repo":"ghashtag/t27","number":2647,"title":"Struct-literal field values take a weaker parse path: ++ and string escapes lose the next declaration","hits":[{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"terms","value":"lsp, protocol, length, parse"}]},{"specId":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"terms","value":"sse, event, field"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"parser, brace, level, parse, comparison, field, struct, literal"}]},{"specId":"fe0dd93dce72f6dd9eb5c505c14b2d99b06211a005574a31cb8642b32e3ca070","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"argument, take, parse, literal"}]},{"specId":"3fafd9ae6b4b9d4b0907a4335ae37b99a2e320927ee2481fc851323a5ec436b6","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"put, raw, text, literal, field"}]}]},{"key":"ghashtag/t27#2646","repo":"ghashtag/t27","number":2646,"title":"50 public declarations vanish with no recovery event, and the gate cannot see them","hits":[{"specId":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/graph/knowledge_graph.t27"},{"kind":"symbol","value":"KnowledgeGraph:83"},{"kind":"terms","value":"graph, knowledge, entities, stats, load"}]},{"specId":"67b126ee510d34e78677d12e64b2b2aacf9951410adc6f3338018101e0e112c0","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/api/sdk_contract.t27"},{"kind":"terms","value":"api, sdk, contract, position"}]},{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/lsp/protocol.t27"},{"kind":"terms","value":"lsp, protocol, json, parse"}]},{"specId":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"terms","value":"sse, event, set"}]},{"specId":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/config/load.t27"},{"kind":"terms","value":"config, load, json, api"}]}]},{"key":"ghashtag/t27#2645","repo":"ghashtag/t27","number":2645,"title":"The lexer turns 0o777 into 0; and the nested-literal group needs the parser, not the emitter","hits":[{"specId":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"IgnorePattern:129"},{"kind":"terms","value":"node, ignore, pattern, size, text"}]},{"specId":"fa02d9864b6cc48cfe1c2ba92bd8d43cf3e93a33b23bcfd646866bb8ccd328e0","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"BOOT_MAGIC:13"},{"kind":"terms","value":"boot, size, magic"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"parser, node, field, struct, literal, array, else, var"}]},{"specId":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"parser, lexer, identifier, digit, hex"}]},{"specId":"d5d906f34640716defff3c0b92ac5c953e5d67885c14242db2bdccfd8e6f78d1","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"parser, node, identifier, lexer"}]}]},{"key":"ghashtag/t27#2643","repo":"ghashtag/t27","number":2643,"title":"Struct-literal field names are the eighth binding site; group walls by line shape, not message","hits":[{"specId":"7f2793c56bd3d880115c90604b5dbf1fa7f130d30c6065df06a364290ef10b9b","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"PublishResult:51"},{"kind":"terms","value":"publish, event"}]},{"specId":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"LinkResult:150"},{"kind":"terms","value":"link, total"}]},{"specId":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"LinkResult:27"},{"kind":"terms","value":"link"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"parser, parse, expr, field, struct, literal, decl, enum"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"field, valid, group, expected, groups, view"}]}]},{"key":"ghashtag/t27#2642","repo":"ghashtag/t27","number":2642,"title":"Rename parameters that shadow a file-scope declaration, and their uses","hits":[{"specId":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"est_static:106"},{"kind":"symbol","value":"total_resources:110"},{"kind":"terms","value":"power, static, est, total, resources"}]},{"specId":"7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"total_resources:49"},{"kind":"terms","value":"power, total, resources, est, static"}]},{"specId":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"TOTAL_RESOURCES:12"},{"kind":"terms","value":"testbench, total, resources"}]}]},{"key":"ghashtag/t27#2641","repo":"ghashtag/t27","number":2641,"title":"Retract both audit hits: median falls for composition, not only for halting","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":60,"reasons":[{"kind":"terms","value":"measured, produce, one, two, day, low, audit, total"}]}]},{"key":"ghashtag/t27#2639","repo":"ghashtag/t27","number":2639,"title":"Drop 572 generated stub tests: valid 136 to 237, asserting 96 to 197, on its own branch","hits":[{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"default"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"zig, main, case, parse, list, branch, exists, valid"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"compiler, valid, list, total, zig, branch"}]}]},{"key":"ghashtag/t27#2638","repo":"ghashtag/t27","number":2638,"title":"Measure which errors halt the checker instead of word-matching them; the word list is currently right","hits":[{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"word, three, two, halt, unknown, field"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"one, word, right"}]},{"specId":"bcf4922c76661955200baaf574ae4fda7a915b33ca6fa815fd24217b0cf845b2","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"word, right"}]}]},{"key":"ghashtag/t27#2636","repo":"ghashtag/t27","number":2636,"title":"The automatic std import was never deduplicated — and duplicate errors are walls my classifier missed","hits":[]},{"key":"ghashtag/t27#2635","repo":"ghashtag/t27","number":2635,"title":"Census every extra_* field: try is fine, the repeat literal is not, and the count was 90 not 17","hits":[{"specId":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"EMBED_DIM:20"},{"kind":"terms","value":"dim, embed, compute, values"}]},{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"EMBED_DIM:24"},{"kind":"terms","value":"dim, embed, over"}]},{"specId":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"EMBED_DIM:28"},{"kind":"terms","value":"dim, embed, gate"}]},{"specId":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ParameterSchema:46"},{"kind":"symbol","value":"ToolError:146"},{"kind":"terms","value":"schema, tool, parameter, length"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"node, semicolon, parse, field, literal, array, var"}]}]},{"key":"ghashtag/t27#2633","repo":"ghashtag/t27","number":2633,"title":"The element list was in the array-SIZE field, and the existing rule reads raw text","hits":[{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"PinAssignment:24"},{"kind":"symbol","value":"PIN_CLK:41"},{"kind":"symbol","value":"PIN_RST_N:51"},{"kind":"symbol","value":"PIN_UART_RX:61"},{"kind":"symbol","value":"PIN_LED_7:151"},{"kind":"terms","value":"uart, pin, assignment, clk, rst, led, pins"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:36"},{"kind":"symbol","value":"PIN_RST_N:46"},{"kind":"symbol","value":"PIN_UART_RX:66"},{"kind":"terms","value":"uart, pin, assignment, clk, rst, led"}]},{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:45"},{"kind":"symbol","value":"PIN_RST_N:57"},{"kind":"symbol","value":"PIN_UART_RX:69"},{"kind":"symbol","value":"PIN_LED_7:225"},{"kind":"terms","value":"uart, pin, assignment, clk, rst, led"}]},{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"max_len:235"},{"kind":"symbol","value":"max_len:272"},{"kind":"terms","value":"size, len, right"}]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"max_len:274"},{"kind":"terms","value":"len, item"}]}]},{"key":"ghashtag/t27#2631","repo":"ghashtag/t27","number":2631,"title":"Parameter and expression names are the sixth and seventh sites that skip zig_ident","hits":[{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"PinAssignment:24"},{"kind":"symbol","value":"PIN_CLK:41"},{"kind":"symbol","value":"PIN_RST_N:51"},{"kind":"terms","value":"pin, assignment, clk, rst, pins"}]},{"specId":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"InstanceState:29"},{"kind":"symbol","value":"InstanceID:68"},{"kind":"symbol","value":"status_response_create:370"},{"kind":"terms","value":"instance, state, status, list, response, create"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:36"},{"kind":"symbol","value":"PIN_RST_N:46"},{"kind":"terms","value":"pin, assignment, clk, rst"}]},{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"PinAssignment:26"},{"kind":"symbol","value":"PIN_CLK:45"},{"kind":"symbol","value":"PIN_RST_N:57"},{"kind":"terms","value":"pin, assignment, clk, rst"}]},{"specId":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"StorageError:66"},{"kind":"terms","value":"storage, key, found"}]}]},{"key":"ghashtag/t27#2629","repo":"ghashtag/t27","number":2629,"title":"CSE hoists across mutations and loop_unroll cannot fire: the census completes 4-for-4","hits":[]},{"key":"ghashtag/t27#2628","repo":"ghashtag/t27","number":2628,"title":"strength_reduce turns signed division into a shift: -3/2 is -1, -3>>1 is -2","hits":[]},{"key":"ghashtag/t27#2627","repo":"ghashtag/t27","number":2627,"title":"Census the optimizer: 4 of 7 passes have no precondition, and dead_store_elim deletes calls","hits":[{"specId":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"optimizer, pass, dead, strength, optimize"}]}]},{"key":"ghashtag/t27#2626","repo":"ghashtag/t27","number":2626,"title":"copy_propagate had no safety condition and was silently discarding mutations","hits":[{"specId":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"OptStats:25"},{"kind":"terms","value":"opt, pass, stats, pure, stmt, expr"}]}]},{"key":"ghashtag/t27#2623","repo":"ghashtag/t27","number":2623,"title":"default_input has no author: the converter generated 169 specs' worth of hollow tests","hits":[{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"default"}]}]},{"key":"ghashtag/t27#2622","repo":"ghashtag/t27","number":2622,"title":"Owner decision: LOOP-RULES.md is sealed and two of its clauses are observed by nobody","hits":[{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"owner, tags, drift, default, merge, decision, claim"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"encoding, owner, three, two, rule, loss"}]},{"specId":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"two, clauses, one"}]},{"specId":"57e060a9c073ed08dfbd814acf779965d92f2cb75d21615ed4e65f39b294f3df","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"loop, owner"}]}]},{"key":"ghashtag/t27#2620","repo":"ghashtag/t27","number":2620,"title":"Close the unused-local class: nested if/while/for bodies were the last 23","hits":[{"specId":"320bbf24c3e227fc457fe90d95b24bf7d06dc2e24ed0ae780e3224fb281a5f75","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"AccountID:12"},{"kind":"terms","value":"account"}]},{"specId":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"AccountID:13"},{"kind":"terms","value":"account"}]},{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"class, bodies, valid"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"closed, class, close"}]},{"specId":"0c558f36ccaa222e6da0edd224b43599dc41bccc897a1d5fa61fde68d509e90b","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"class, local, time"}]}]},{"key":"ghashtag/t27#2619","repo":"ghashtag/t27","number":2619,"title":"The sibling scan was scoped by the instrument, not by the data: 58 in fn bodies","hits":[{"specId":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"measured, gate, data, scoped"}]}]},{"key":"ghashtag/t27#2618","repo":"ghashtag/t27","number":2618,"title":"Unused locals and never-mutated vars in test bodies: the sibling scan answers both","hits":[]},{"key":"ghashtag/t27#2617","repo":"ghashtag/t27","number":2617,"title":"Fix the rendering defects #2615 introduced, and correct which ones were mine","hits":[{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"calc_baud_divisor:76"},{"kind":"terms","value":"baud, calc, divisor"}]},{"specId":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"calc_baud_divisor:52"},{"kind":"terms","value":"baud, calc, divisor"}]},{"specId":"dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"ErrorCode:32"},{"kind":"terms","value":"tokens"}]},{"specId":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"ErrorCode:3"},{"kind":"terms","value":"parse"}]},{"specId":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"ErrorCode:21"}]}]},{"key":"ghashtag/t27#2615","repo":"ghashtag/t27","number":2615,"title":"Capture given/when/then and render them: 6540 clauses, and 169 specs share one unfilled placeholder","hits":[{"specId":"796d838e8069befa45707a89b86aa34f7584ce5b80ad73ce8301fcdf479dd7be","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/tri/pipeline/builder.t27"},{"kind":"terms","value":"pipeline, builder"}]},{"specId":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"default_input:122"},{"kind":"terms","value":"default"}]},{"specId":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"clauses, one"}]}]},{"key":"ghashtag/t27#2614","repo":"ghashtag/t27","number":2614,"title":"anytype for generics nested in type applications: 78 of 79 remaining sites","hits":[]},{"key":"ghashtag/t27#2613","repo":"ghashtag/t27","number":2613,"title":"Bind eq/not/abs to operators, guarded by the spec's own declarations","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, zero, self, abs, len, two"}]},{"specId":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"STAGE_INIT:11"},{"kind":"terms","value":"pipeline, stage, init, parse, save"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"isa, len, init, zero, valid, abs, ternary, bind"}]}]},{"key":"ghashtag/t27#2611","repo":"ghashtag/t27","number":2611,"title":"Half the undeclared identifiers are reachable: 50 emitter-side, 56 corpus-side","hits":[{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"HybridBigInt:56"},{"kind":"terms","value":"hybrid, big, int, trit"}]},{"specId":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"HybridBigInt:32"},{"kind":"terms","value":"hybrid, big, int"}]},{"specId":"d8ca3cf6feb27648ea781750913aaef0f7c8288be4a6b1d3f8ed1e514db17fa4","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"corpus, half, wrong"}]}]},{"key":"ghashtag/t27#2610","repo":"ghashtag/t27","number":2610,"title":"Result is Zig's E!T: 182 angle-bracket generics, 163 with exact counterparts","hits":[{"specId":"320bbf24c3e227fc457fe90d95b24bf7d06dc2e24ed0ae780e3224fb281a5f75","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"AccountID:12"},{"kind":"symbol","value":"AccessToken:14"},{"kind":"symbol","value":"AccountError:24"},{"kind":"terms","value":"account, access, token, list"}]},{"specId":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"AccountID:13"},{"kind":"symbol","value":"AccessToken:19"},{"kind":"symbol","value":"AccountError:111"},{"kind":"terms","value":"account, access, token"}]},{"specId":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"LockMode:31"},{"kind":"terms","value":"storage, lock, mode"}]},{"specId":"60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"ShellError:111"},{"kind":"terms","value":"shell"}]},{"specId":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"zig, bracket"}]}]},{"key":"ghashtag/t27#2609","repo":"ghashtag/t27","number":2609,"title":"Optionals are emitted postfix; 62 positions, not the 6 the histogram showed","hits":[{"specId":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"GovernanceAgent:13"},{"kind":"symbol","value":"SacredRule:22"},{"kind":"terms","value":"sacred, rule, score, state"}]},{"specId":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"GitError:70"},{"kind":"terms","value":"git, schema, parse"}]},{"specId":"b3fd0cb2764d0828d728fce767a042d999c182d5d148dbce8a380db78e01c53b","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"SacredRule:13"},{"kind":"terms","value":"sacred, rule, state"}]},{"specId":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"ExitCode:13"},{"kind":"terms","value":"exit"}]}]},{"key":"ghashtag/t27#2608","repo":"ghashtag/t27","number":2608,"title":"Explicitly valued enums need a tag type, derived from the values or not at all","hits":[{"specId":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"DeployState:84"},{"kind":"terms","value":"deploy, state"}]}]},{"key":"ghashtag/t27#2607","repo":"ghashtag/t27","number":2607,"title":"Print how much of the error total is capped, so the metric cannot be misread again","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, parse"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"down, print, metric"}]},{"specId":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"total, capped"}]}]},{"key":"ghashtag/t27#2606","repo":"ghashtag/t27","number":2606,"title":"904 emitted lines spell Zig paths with :: and it read as 45 errors","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":2055,"reasons":[{"kind":"path","value":"specs/compiler/parser.t27"},{"kind":"terms","value":"compiler, parser, node, parse, expr, call, struct, literal"}]},{"specId":"60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"ShellType:13"},{"kind":"terms","value":"shell"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"read, rule, valid, call, gate, emitted, text"}]}]},{"key":"ghashtag/t27#2604","repo":"ghashtag/t27","number":2604,"title":"Function names are the fifth binding site that skips zig_ident","hits":[]},{"key":"ghashtag/t27#2603","repo":"ghashtag/t27","number":2603,"title":"A parse error is a wall: total error count is not monotone in correctness","hits":[{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"SCHEMA_VERSION:19"},{"kind":"terms","value":"schema, parse, finding"}]}]},{"key":"ghashtag/t27#2601","repo":"ghashtag/t27","number":2601,"title":"Brace-less bodies are three kinds not two: 188 mixed, and the statement population is 551 not 80","hits":[{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"reference","coverage":"unverified","score":2005,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":60,"reasons":[{"kind":"terms","value":"parser, parsing, skip, brace, top, level, boundary, parse"}]},{"specId":"3b247694659c1fe7f9860804f7a960b8e8ca357dca00dafa651527b01487a667","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"range, less, two"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"trit, three, two"}]}]},{"key":"ghashtag/t27#2599","repo":"ghashtag/t27","number":2599,"title":"Correction to #2582: the SVA backend takes arguments, not specs — 1610 DSL blocks reach no target at all","hits":[{"specId":"40fd893c2163077ca7fb00a815db13a0c8f2bbd74efc3ccb0427faad49465e5f","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/base/ternary_add.t27"},{"kind":"terms","value":"base, ternary"}]}]},{"key":"ghashtag/t27#2597","repo":"ghashtag/t27","number":2597,"title":"Render generic parameters as anytype: -22 errors, +3 valid, and the constraint the spec wrote is gone","hits":[{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"PackedBigInt:58"},{"kind":"terms","value":"packed, trit, big, int, valid"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"array, view, slice, empty"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"read, valid, exists, call, generic, declared, gate"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"passed, parse, real, metric, constraint, valid"}]},{"specId":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"constraint, parse, valid"}]}]},{"key":"ghashtag/t27#2596","repo":"ghashtag/t27","number":2596,"title":"Indentation-delimited test bodies: 564 not 2766, attempted and reverted on the gate","hits":[{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"reference","coverage":"unverified","score":2005,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"terms","value":"uart"}]}]},{"key":"ghashtag/t27#2595","repo":"ghashtag/t27","number":2595,"title":"Report strict validity beside permissive: 50/454 against 200/454","hits":[{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"strict, permissive, valid"}]}]},{"key":"ghashtag/t27#2593","repo":"ghashtag/t27","number":2593,"title":"53% of emitted test blocks are empty: brace-less bodies are silently skipped, and 150 of 195 valid specs contain one","hits":[{"specId":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"auth_result:17"},{"kind":"terms","value":"e2e, full, flow, auth, sync"}]},{"specId":"dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"auth_result:321"},{"kind":"terms","value":"auth, authenticated, status, find"}]},{"specId":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"auth_status:17"},{"kind":"terms","value":"auth, authenticated, status"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"assertions, status, skip, case, assert, less, failed, skipped"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"assertions, status, skip, case, assert, less, failed, skipped"}]}]},{"key":"ghashtag/t27#2591","repo":"ghashtag/t27","number":2591,"title":"Bare for statements: 2 loops recovered, and 235 of the 240 sites I cited were out of scope","hits":[{"specId":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/file/schema.t27"},{"kind":"terms","value":"schema, read, text"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"parse_for_stmt:1041"},{"kind":"terms","value":"expect, stmt, parse"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"token"}]}]},{"key":"ghashtag/t27#2589","repo":"ghashtag/t27","number":2589,"title":"97 of 104 unused locals are used by the spec: bare if statements were being discarded too","hits":[{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/fpga/boards/arty_a7_integration.t27"},{"kind":"terms","value":"boards, arty, integration, clk, pin, pins"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"parse_if_stmt:965"},{"kind":"symbol","value":"parse_while_stmt:1018"},{"kind":"symbol","value":"parse_for_stmt:1041"},{"kind":"terms","value":"expect, brace, stmt, parse, local, var"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"token"}]}]},{"key":"ghashtag/t27#2588","repo":"ghashtag/t27","number":2588,"title":"While loops needed optional parens and struct-literal suppression: gate 154 -> 111 events","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1064,"reasons":[{"kind":"symbol","value":"parse_expr:356"},{"kind":"symbol","value":"parse_while_stmt:1018"},{"kind":"terms","value":"parser, expect, top, level, stmt, parse, expr, right"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"token, identifier"}]}]},{"key":"ghashtag/t27#2587","repo":"ghashtag/t27","number":2587,"title":"Reverted: I deleted live loop counters. The emitter drops 138 while loops and that is the real defect","hits":[{"specId":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/fpga/testbench/timing_tb.t27"},{"kind":"symbol","value":"compute_slack:38"},{"kind":"symbol","value":"compute_fmax:42"},{"kind":"terms","value":"testbench, timing, fmax, compute, slack"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"passed, real, reports, loop, testbench, valid, compute, tool"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"formal, loop, timing, loops, compute"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"gate, read, nothing, real, live"}]}]},{"key":"ghashtag/t27#2584","repo":"ghashtag/t27","number":2584,"title":"Land reentrant struct-body parsing: one valid spec for 161 silently dropped methods","hits":[{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, zig"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"compiler, parsing, skip, parse, right, call, struct"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"method, methods, valid, call, gate, emitted"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"strings, one, never, struct"}]}]},{"key":"ghashtag/t27#2583","repo":"ghashtag/t27","number":2583,"title":"Collect the layer #2580 exposed: 27 inert unused locals, one file excluded by its own check","hits":[{"specId":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/fpga/testbench/hir_tb.t27"},{"kind":"terms","value":"testbench, hir"}]},{"specId":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","relation":"reference","coverage":"unverified","score":2008,"reasons":[{"kind":"path","value":"specs/fpga/testbench/timing_tb.t27"},{"kind":"terms","value":"testbench, timing"}]},{"specId":"18757d291f23108eb05b89195d374e3a35643ed0d74c57a9caf8d05cc918a7f8","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/fpga/testbench/memory_tb.t27"},{"kind":"terms","value":"testbench, memory"}]},{"specId":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"receive_async:54"},{"kind":"terms","value":"testbench, async, receive"}]}]},{"key":"ghashtag/t27#2582","repo":"ghashtag/t27","number":2582,"title":"The behavior DSL is not a defect: it has its own SVA backend, and the class is 1 error not 2991","hits":[]},{"key":"ghashtag/t27#2580","repo":"ghashtag/t27","number":2580,"title":"The void return-type default was computed and unreachable: 31 specs, +119 newly visible errors","hits":[{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"self, gate, unreachable, read, default"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"zig, unreachable, default, work"}]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"unreachable, visible"}]}]},{"key":"ghashtag/t27#2578","repo":"ghashtag/t27","number":2578,"title":"Trit is 36 specs wide and 8 errors deep, and the corpus offers two import paths for it","hits":[{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"terms","value":"base, ops, tritype, one, trit, two"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, tritype, one, trit, left"}]},{"specId":"e8f81b78f31a4dc79b00a5bdccb14e4a8fb5ce58ba88a1a5c821c0d13ee3f542","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/base/seed.t27"},{"kind":"terms","value":"base, seed, one, trit"}]},{"specId":"82ecdcaef6d0f8cd6ee7ec4fba5e3abccfe9a19a896579656f2a071d7b15c3fa","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/numeric/tf3.t27"},{"kind":"terms","value":"numeric, tf3, nan"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"trit, layout, three, two, defined"}]}]},{"key":"ghashtag/t27#2577","repo":"ghashtag/t27","number":2577,"title":"Hyphenated use-paths collapsed six imports into one, and my dedup made it look tidy","hits":[{"specId":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/lsp/language.t27"},{"kind":"terms","value":"lsp, language, zig"}]},{"specId":"350126a286467b29f140c9e9b1f67c37c33af5715618ec5b6d7a8c6f27bd33bc","relation":"reference","coverage":"unverified","score":2005,"reasons":[{"kind":"path","value":"specs/lsp/server.t27"},{"kind":"terms","value":"lsp"}]},{"specId":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"DiagnosticSeverity:57"},{"kind":"terms","value":"lsp, schema, zero, position, range, diagnostic, severity, sync"}]},{"specId":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"TriType:32"},{"kind":"terms","value":"field, parse, valid"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"zero, nan, base, one, six"}]}]},{"key":"ghashtag/t27#2576","repo":"ghashtag/t27","number":2576,"title":"The generic-T route is blocked: 103 declarations fixed would break 103 calls","hits":[{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"array, view, slice"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"call, route, probe, calls, decision, answer"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"exists, call, route, generic, declared, tree"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"probe, declarations, blocked"}]}]},{"key":"ghashtag/t27#2575","repo":"ghashtag/t27","number":2575,"title":"Std.mem.Allocator should be std: 81 lines, +27 valid specs, no compiler change","hits":[{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"PackedBigInt:58"},{"kind":"terms","value":"packed, trit, big, int, valid"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"zig, std, ast, case, parse, allocator, exists, valid"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"compiler, ast, mem, case, assert, expect"}]},{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"compiler, emit, int, generic, mem"}]},{"specId":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"compiler, ast, mem"}]}]},{"key":"ghashtag/t27#2573","repo":"ghashtag/t27","number":2573,"title":"Qualified type names were split into parameters: 31 of 36 in a class I had misread","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"compiler, parser, parse, annotation, right"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"TokenKind:5"},{"kind":"terms","value":"compiler, token, identifier"}]},{"specId":"c84ebb22ae462190ddcd757725c3f409ebda3fab38bcbedad2845649cdc0345c","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"word_wrap:24"},{"kind":"terms","value":"word, wrap"}]},{"specId":"4c27da6a18f488afac5ac4be903b614994749278742678c74490e1a74ff991a7","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"misread, qualified"}]}]},{"key":"ghashtag/t27#2572","repo":"ghashtag/t27","number":2572,"title":"String == is the emitter's job, not the corpus's: -21 errors, +2 valid, and a reclassification","hits":[{"specId":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"symbol","value":"env_vars:258"},{"kind":"symbol","value":"env_vars:271"},{"kind":"symbol","value":"env_vars:277"},{"kind":"terms","value":"cloud, railway, deploy, phi, env, vars"}]},{"specId":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/fpga/assembler.t27"},{"kind":"terms","value":"assembler, instr"}]},{"specId":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/fpga/axi4.t27"},{"kind":"terms","value":"axi4, size, total"}]}]},{"key":"ghashtag/t27#2571","repo":"ghashtag/t27","number":2571,"title":"The seventh discard spec, exposed by the previous fix: -21 errors, +1 valid","hits":[{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"terms","value":"base, ops, one, two, diff"}]}]},{"key":"ghashtag/t27#2569","repo":"ghashtag/t27","number":2569,"title":"Bracketed array values emitted as Rust syntax: +20 errors, all newly visible in one spec","hits":[{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/base/ops.t27"},{"kind":"symbol","value":"mult_table:34"},{"kind":"terms","value":"base, ops, one, mult, table, diff"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parser, parsing, brace, parse, expr, literal, array, local"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"read, list, valid, declared, values, gate, emitted, text"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"rust, syntax, variable, array, declared"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"syntax, variable, array, declared"}]}]},{"key":"ghashtag/t27#2567","repo":"ghashtag/t27","number":2567,"title":"Enum members were the fifth keyword binding site: +1 valid, +4 errors, and both are correct","hits":[{"specId":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","relation":"reference","coverage":"unverified","score":2006,"reasons":[{"kind":"path","value":"specs/server/sse.t27"},{"kind":"terms","value":"sse"}]},{"specId":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","relation":"reference","coverage":"unverified","score":2005,"reasons":[{"kind":"path","value":"specs/fpga/formal.t27"},{"kind":"terms","value":"formal"}]},{"specId":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"members, created, valid, counts"}]},{"specId":"674a166252ed87e18ef467e7c8cb62f8363abc831102041a9eb6862be6ca6023","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"total, members, shape, valid"}]},{"specId":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"total, members, shape, valid"}]}]},{"key":"ghashtag/t27#2566","repo":"ghashtag/t27","number":2566,"title":"Owner decision: emitted Verilog carries widths that cannot be real, and the release build is the one that hides it","hits":[{"specId":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/compiler/stdlib.t27"},{"kind":"terms","value":"compiler, stdlib, str, map, empty, u32"}]},{"specId":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/fpga/formal.t27"},{"kind":"symbol","value":"CoverPoint:57"},{"kind":"symbol","value":"cover_point:135"},{"kind":"terms","value":"formal, cover, point, str"}]},{"specId":"dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/memory/notebooklm.t27"},{"kind":"terms","value":"memory, notebooklm, text"}]},{"specId":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"VerilogCodegen:16"},{"kind":"terms","value":"compiler, codegen, verilog, width, bits, memory, decl, str"}]},{"specId":"fb7ac4208772624a36f6651fd54d4c1347a96bad3b78093ee5c248f42f389a2a","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"VerilogCodegen:16"},{"kind":"symbol","value":"VerilogCodegen:28"},{"kind":"symbol","value":"VerilogCodegen:62"},{"kind":"symbol","value":"VerilogCodegen:108"},{"kind":"symbol","value":"VerilogCodegen:119"},{"kind":"symbol","value":"VerilogCodegen:131"},{"kind":"symbol","value":"VerilogCodegen:153"},{"kind":"symbol","value":"VerilogCodegen:193"},{"kind":"symbol","value":"VerilogCodegen:217"},{"kind":"symbol","value":"VerilogCodegen:238"},{"kind":"symbol","value":"VerilogCodegen:255"},{"kind":"symbol","value":"VerilogCodegen:276"},{"kind":"symbol","value":"VerilogCodegen:287"},{"kind":"symbol","value":"VerilogCodegen:304"},{"kind":"symbol","value":"VerilogCodegen:320"},{"kind":"symbol","value":"VerilogCodegen:331"},{"kind":"symbol","value":"VerilogCodegen:339"},{"kind":"symbol","value":"VerilogCodegen:351"},{"kind":"symbol","value":"VerilogCodegen:362"},{"kind":"symbol","value":"VerilogCodegen:372"},{"kind":"symbol","value":"VerilogCodegen:442"},{"kind":"symbol","value":"VerilogCodegen:448"},{"kind":"symbol","value":"VerilogCodegen:524"},{"kind":"symbol","value":"VerilogCodegen:529"},{"kind":"symbol","value":"VerilogCodegen:540"},{"kind":"symbol","value":"VerilogCodegen:545"},{"kind":"terms","value":"compiler, codegen, verilog, width"}]}]},{"key":"ghashtag/t27#2565","repo":"ghashtag/t27","number":2565,"title":"var -> const fails the safety check that the discards passed: 1 flagged line of 24 identical","hits":[{"specId":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"symbol","value":"EnvVar:74"},{"kind":"terms","value":"cloud, railway, deploy, env, var, init"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, compiler, init, back"}]},{"specId":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/fpga/power.t27"},{"kind":"terms","value":"power, lut, per, total"}]},{"specId":"040d3cdec243fde652aa9fb3cc81f1675508f8c1b485900003734245624c6d23","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/fpga/ternary_isa.t27"},{"kind":"terms","value":"ternary, isa, lut, total"}]},{"specId":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/fpga/assembler.t27"},{"kind":"terms","value":"assembler, text"}]}]},{"key":"ghashtag/t27#2564","repo":"ghashtag/t27","number":2564,"title":"Remove 86 pointless discards from 6 specs: -86 errors, no compiler change","hits":[{"specId":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/cloud/railway_deploy.t27"},{"kind":"symbol","value":"env_vars:258"},{"kind":"symbol","value":"env_vars:271"},{"kind":"symbol","value":"env_vars:277"},{"kind":"terms","value":"cloud, railway, deploy, env, var, vars"}]},{"specId":"de4ad2f0f5e79b5fee41fb1eb38ddfb621d640a46ac70d52f551376072b13445","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/lsp/client.t27"},{"kind":"terms","value":"lsp, client, size, text, work"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, one, six"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, one, six"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, size, compiler"}]}]},{"key":"ghashtag/t27#2562","repo":"ghashtag/t27","number":2562,"title":"The module/no-module gap was a composition effect: controlling for tests, it is 37% vs 37%","hits":[]},{"key":"ghashtag/t27#2559","repo":"ghashtag/t27","number":2559,"title":"Mutation cache key: an unreadable control hashes as an empty one, and the boundary between controls can move","hits":[{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"paths, path, bytes, control, loop, controls"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"paths, path, bytes, control, loop, controls"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"empty, cache, row, default, top"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"boundary, key, write, record"}]},{"specId":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"path, move, control"}]}]},{"key":"ghashtag/t27#2558","repo":"ghashtag/t27","number":2558,"title":"The pow check was correct and unreachable: it was inside the guard instead of in it","hits":[{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"has_tests:332"},{"kind":"symbol","value":"has_tests:418"},{"kind":"terms","value":"zig, ast, block, parse, path, gen, branch, valid"}]}]},{"key":"ghashtag/t27#2555","repo":"ghashtag/t27","number":2555,"title":"A pow wrapper: -50 errors, four wrong grep counts, and three wrong sampling conclusions","hits":[{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"one, three, pow, exactly"}]},{"specId":"2dae7f68a5651636623154005f92a6e43432b46d72b3bdd45c164df2a38b961c","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"math, sample, three, pow"}]}]},{"key":"ghashtag/t27#2553","repo":"ghashtag/t27","number":2553,"title":"Three pull requests have run almost no CI, and two of them change compiler.rs","hits":[{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"bit, three, two, call, unknown"}]}]},{"key":"ghashtag/t27#2552","repo":"ghashtag/t27","number":2552,"title":"Generic errors 111 -> 84: the rest are in function signatures, where nothing records the parameter","hits":[{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"PackedBigInt:58"},{"kind":"terms","value":"packed, trit, big, int"}]},{"specId":"332ed81bb0981410ac2f2467b61b1044e39359afb9db637e3a9e757befc32f98","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"generic, nothing"}]}]},{"key":"ghashtag/t27#2551","repo":"ghashtag/t27","number":2551,"title":"Generic type parameters dropped from the declaration and kept in the body: -23 errors","hits":[{"specId":"c800d8ce1a5f38e34d3755a0edbe898492fb8d83e571a18581b595c49fb8b5d8","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BTreeNode:18"},{"kind":"terms","value":"btree, node"}]},{"specId":"d7607eb8c81bb51425dd1458f75f780fe4cbfc009e7c353654b76d25391369f2","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BTreeNode:13"},{"kind":"terms","value":"btree, node"}]}]},{"key":"ghashtag/t27#2549","repo":"ghashtag/t27","number":2549,"title":"Bind expect and assert when referenced: 135 -> 168 valid, and the differ was reporting zeros","hits":[{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"equal, differ, bind, trit, measured, left"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"ast, block, assert, expect"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"out, valid, trit, bind, pow, call"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"zig, bind, block, assert"}]}]},{"key":"ghashtag/t27#2547","repo":"ghashtag/t27","number":2547,"title":"131 seals are stale: the spec changed after sealing","hits":[]},{"key":"ghashtag/t27#2545","repo":"ghashtag/t27","number":2545,"title":"The real error distribution: 86 invisible errors, and 22% of the total is corpus-side not emitter-side","hits":[{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, size, compiler, back"}]}]},{"key":"ghashtag/t27#2542","repo":"ghashtag/t27","number":2542,"title":"The valid count went blind: add a total-error metric, and check the headline is not hollow","hits":[{"specId":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"vscode-trinity-swe/test_highlight.t27"},{"kind":"terms","value":"vscode, swe, highlight"}]},{"specId":"bf24ed639a59b626b81991a835211692bd429df670e38b458ca3d57dc650a14b","relation":"reference","coverage":"unverified","score":2007,"reasons":[{"kind":"path","value":"test_highlight.t27"},{"kind":"terms","value":"highlight"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"report, real, metric, valid, tool, syntax"}]}]},{"key":"ghashtag/t27#2539","repo":"ghashtag/t27","number":2539,"title":"Zig keywords emitted as identifiers: 20 specs -> 0, across four binding sites","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"pack_trit:159"},{"kind":"terms","value":"zero, one, trit, packed, pack, left, right"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"pack_trit:102"},{"kind":"terms","value":"trit, packed, pack, time"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"pack_trit:113"},{"kind":"terms","value":"zero, trit, pack, read"}]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"error_create:189"},{"kind":"terms","value":"rule, create, path"}]},{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"error_create:285"},{"kind":"terms","value":"language, create"}]}]},{"key":"ghashtag/t27#2537","repo":"ghashtag/t27","number":2537,"title":"Brace-list imports emitted as an identifier: const {PHI,PHI_INV} = @import(...)","hits":[{"specId":"dee8a1c4e2ac49ff01ec4228a43bdcb4364d4e68fa2d1d439b27c2d5bac584a7","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"PHI_INV:15"},{"kind":"terms","value":"phi, inv, base, list, modules"}]},{"specId":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"PHI_INV:14"},{"kind":"terms","value":"math, sacred, physics, phi, inv"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"PHI_INV:12"},{"kind":"terms","value":"math, sacred, physics, phi, inv"}]},{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"math, phi, inv, measured"}]},{"specId":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"PHI_INV:17"},{"kind":"terms","value":"math, phi, inv, measured"}]}]},{"key":"ghashtag/t27#2536","repo":"ghashtag/t27","number":2536,"title":"String escapes decoded by the lexer were emitted raw: 134 -> 135, and step 3 becomes a judgement call","hits":[{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, zig"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"BOARD_NAME:11"},{"kind":"terms","value":"arty, board, 100t"}]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BOARD_NAME:19"},{"kind":"terms","value":"arty, board"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"BOARD_NAME:44"},{"kind":"terms","value":"board, measured"}]},{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"BOARD_NAME:11"},{"kind":"terms","value":"board"}]}]},{"key":"ghashtag/t27#2534","repo":"ghashtag/t27","number":2534,"title":"Function-pointer return types: inert today, and it unblocks the reverted change","hits":[{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, gen, zig, emit, decl"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"terms","value":"jit, compiler, self, emit, back"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1061,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"compiler, parser, parsing, skip, parse, annotation, child, field"}]}]},{"key":"ghashtag/t27#2532","repo":"ghashtag/t27","number":2532,"title":"The ratchet moved by two events in one file: jit.t27 has function-pointer return types","hits":[{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"symbol","value":"get_bind:497"},{"kind":"terms","value":"jit, dimension, self, bind"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"parser, parsing, skip, parse, struct, else, decl"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"pointer, one, per, visible"}]},{"specId":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"per, layer, two, one"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"two, second, one"}]}]},{"key":"ghashtag/t27#2531","repo":"ghashtag/t27","number":2531,"title":"Reentrant struct-body parsing: built, measured, worse on every axis, reverted","hits":[{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, gen, zig, emit, decl"}]},{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, self, two"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1073,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"compiler, parser, parsing, skip, level, parse, field, struct"}]}]},{"key":"ghashtag/t27#2529","repo":"ghashtag/t27","number":2529,"title":"A struct body containing const or fn ate the rest of the file: 1445 lines in, 32 out","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"symbol","value":"MAX_TRITS:34"},{"kind":"symbol","value":"BigInt:68"},{"kind":"terms","value":"ternary, bigint, big, int, trits, trit, zero, self"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1056,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parser, parsing, expect, skip, brace, semicolon, parse, struct"}]},{"specId":"583b5c7479c239140733752a9ee2df7b82afca6af96e9861af1acd34eac13265","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"MAX_TRITS:50"},{"kind":"terms","value":"trits, ternary, levels, trit, rest"}]},{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"MAX_TRITS:19"},{"kind":"terms","value":"ternary, bigint, trits, big, int, zero, trit"}]},{"specId":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"MAX_TRITS:25"},{"kind":"terms","value":"ternary, trit, zero, trits, big, int, valid"}]}]},{"key":"ghashtag/t27#2527","repo":"ghashtag/t27","number":2527,"title":"Duplicate @import emitted per use-decl: correct fix, zero measured gain","hits":[{"specId":"350126a286467b29f140c9e9b1f67c37c33af5715618ec5b6d7a8c6f27bd33bc","relation":"reference","coverage":"unverified","score":2010,"reasons":[{"kind":"path","value":"specs/lsp/server.t27"},{"kind":"terms","value":"lsp, accept"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"top, level, parse, right, decl, import"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"measured, per, top, class, client, gate"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"measured, zero, per, class, largest"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"per, valid, parse, emitted, gate"}]}]},{"key":"ghashtag/t27#2526","repo":"ghashtag/t27","number":2526,"title":"String constants emitted without their quotes: 121 -> 133 valid","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"node, parse, comparison, primary, val, arm, decl"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"BOARD_NAME:11"},{"kind":"terms","value":"arty, board, 100t"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"BOARD_NAME:44"},{"kind":"terms","value":"board, measured, largest"}]},{"specId":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"BOARD_NAME:13"},{"kind":"terms","value":"qmtech, board"}]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"BOARD_NAME:19"},{"kind":"terms","value":"arty, board"}]}]},{"key":"ghashtag/t27#2525","repo":"ghashtag/t27","number":2525,"title":"A missing space welded every multi-word type: []const u8 became []constu8, 108 -> 121 valid","hits":[{"specId":"aa28703435668f5af1666adebde67002d5cd800c48e0550c36becfefe9032bdc","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/collections/variant.t27"},{"kind":"terms","value":"collections, variant, tag"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parse, struct, else"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"write, parse, reports, loop, valid, json, space, self"}]},{"specId":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"missing, valid, emit"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"valid, word, holds"}]}]},{"key":"ghashtag/t27#2508","repo":"ghashtag/t27","number":2508,"title":"`gen-rust` drops `if`/`while`/`switch` without parenthesised conditions, `match`, `let mut`, `[N][]const T{}` literals, `fn` declared inside `struct`, and every item after the first brace-style `module` block — all at parse time, with exit 0 and empty stderr","hits":[{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":2095,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig, generate, emit, header, constants, section"}]},{"specId":"4dd1bf05316f1a0ed952457e8fbbe7e03c51d51b2891c1dfe603db0425b4f2a3","relation":"reference","coverage":"unverified","score":2094,"reasons":[{"kind":"path","value":"compiler/cli/gen.t27"},{"kind":"terms","value":"compiler, cli, gen, commands, codegen, dir, mkdir, impl"}]},{"specId":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","relation":"reference","coverage":"unverified","score":2089,"reasons":[{"kind":"path","value":"compiler/codegen/verilog/codegen.t27"},{"kind":"terms","value":"compiler, codegen, verilog, generate, emit, header, parameters, hex"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"reference","coverage":"unverified","score":2088,"reasons":[{"kind":"path","value":"compiler/codegen/testgen.t27"},{"kind":"terms","value":"compiler, codegen, testgen, gen, generate, zig, verilog, rust"}]},{"specId":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","relation":"reference","coverage":"unverified","score":2074,"reasons":[{"kind":"path","value":"compiler/ast.t27"},{"kind":"terms","value":"compiler, ast, token, node, section, invariant, bench, decl"}]}]},{"key":"ghashtag/t27#2492","repo":"ghashtag/t27","number":2492,"title":"Seven gates: nothing requires them to be silent, found by the mutation direction never taken","hits":[]},{"key":"ghashtag/t27#2483","repo":"ghashtag/t27","number":2483,"title":"compiler.rs:1208 says 'one of four discard channels'; there are five","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"skip_brace_body:132"},{"kind":"symbol","value":"skip_to_semicolon:152"},{"kind":"symbol","value":"skip_to_next_top_level:201"},{"kind":"symbol","value":"recover_to_stmt_boundary:238"},{"kind":"terms","value":"compiler, skip, brace, semicolon, top, level, recover, stmt"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"compiler, parse, five, complete"}]},{"specId":"83969c01bc42ca48ab841ba4e77ce26d08e9b23a0922dcc33dffee3b69cdab74","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"compiler, channels, channel"}]}]},{"key":"ghashtag/t27#2479","repo":"ghashtag/t27","number":2479,"title":"9,547 discarded tokens outside the documented forall decision (was: 26,546)","hits":[{"specId":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/queen/brain_summaries.t27"},{"kind":"terms","value":"queen, brain, summaries, per, phase, reported, total"}]},{"specId":"59c9aed7248324467e2d13b458a60137da5b8b07f5116a484580f0dadc808cd8","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/fpga/vcd_conformance_compare.t27"},{"kind":"terms","value":"vcd, conformance, compare, record, parse"}]},{"specId":"7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/fpga/power_analysis.t27"},{"kind":"terms","value":"power, analysis, zero, total, default"}]},{"specId":"8ff28a2ffa2c8d1ef05a013691f905a41e7cae6dfd3bcf7b818ac823509fe060","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/fpga/testbench/fifo_tb.t27"},{"kind":"terms","value":"testbench, fifo, write, read"}]},{"specId":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"InferenceInput:26"},{"kind":"symbol","value":"ternary_inference_identity:68"},{"kind":"terms","value":"igla, ternary, inference, model, identity, zero"}]}]},{"key":"ghashtag/t27#2477","repo":"ghashtag/t27","number":2477,"title":"99 seals orphaned by the naming convention change, 81 with a current twin","hits":[{"specId":"05267a4e1f59698a7b77f9960613213d76323188e7e822bfce442888d8367d5a","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/ml/layers/avgpool2d_layer.t27"},{"kind":"terms","value":"layers, avgpool2d, layer"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"path, content, project, dir, timestamp, seal, hash"}]}]},{"key":"ghashtag/t27#2476","repo":"ghashtag/t27","number":2476,"title":"t27c seal exits 0 on a spec every backend rejects; only --save refuses","hits":[{"specId":"121f7a349ba5b7b672b90a9f372f575e9530ef68756c687660ed6ef029278fc5","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/tri/graph/graph.t27"},{"kind":"terms","value":"graph"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"gen, zig, seal, verilog, hash, backend"}]},{"specId":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"seal, gen, save"}]}]},{"key":"ghashtag/t27#2474","repo":"ghashtag/t27","number":2474,"title":"emit-bitexact is a fourth permanently-red gate, and I merged four PRs past it without looking","hits":[]},{"key":"ghashtag/t27#2466","repo":"ghashtag/t27","number":2466,"title":"check_catalog_count: the paper-divergence WARN fires on every run, so it carries no information","hits":[]},{"key":"ghashtag/t27#2455","repo":"ghashtag/t27","number":2455,"title":"The required check named `check` is an echo, and the test suite is not required at all","hits":[]},{"key":"ghashtag/t27#2439","repo":"ghashtag/t27","number":2439,"title":"Zero-width structs: a field the spec declares has no storage in the lowered form","hits":[{"specId":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/fpga/formal.t27"},{"kind":"symbol","value":"CoverPoint:57"},{"kind":"symbol","value":"FormalAssume:66"},{"kind":"terms","value":"formal, cover, assume, point, str"}]},{"specId":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/fpga/hir.t27"},{"kind":"terms","value":"hir, assign, instance, bits"}]},{"specId":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/fpga/placement.t27"},{"kind":"terms","value":"placement, floorplan, width"}]},{"specId":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/fpga/vcd_trace.t27"},{"kind":"symbol","value":"VcdHeader:74"},{"kind":"terms","value":"vcd, trace, header, index"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"field, handle, offset, read, fields, found, too, header"}]}]},{"key":"ghashtag/t27#2433","repo":"ghashtag/t27","number":2433,"title":"Design decision: what a string field and a string comparison mean in generated hardware","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"verilog, hardware, until, validation, step, mean, bridge"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"language, generated, path, decision"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"comparison, field"}]}]},{"key":"ghashtag/t27#2413","repo":"ghashtag/t27","number":2413,"title":"icarus-simulate: three named emitter defects keep mac's self-test at 13 elaboration errors","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"simulate, icarus, until, self"}]}]},{"key":"ghashtag/t27#2411","repo":"ghashtag/t27","number":2411,"title":"array_param_index asserts a part-select lowering that W458 replaced with monomorphised unpacked arrays","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":79,"reasons":[{"kind":"terms","value":"passed, match, param, sum, verilog, simulation, testbench, valid"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"compiler, level, index, call, literal, array, else, param"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"rust, param, array, arrays, var"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"param, array, arrays, var"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"zero, one, bit, unpacked, select"}]}]},{"key":"ghashtag/t27#2410","repo":"ghashtag/t27","number":2410,"title":"gen-verilog: slice params ([]T) lower to single scalars — mac_dot_product is silently wrong for len>1","hits":[{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"mac_dot_product:195"},{"kind":"terms","value":"mac, bits, dot, ternary, word, bit, product, matrix"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"params, len, dot, product, scalar, slices, param, select"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"param, verilog, loop, gen, ternary, until, groups, product"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"dot, bits, bit, groups, per, word, element, product"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"dot, bits, bit, groups, per, word, element, product"}]}]},{"key":"ghashtag/t27#2406","repo":"ghashtag/t27","number":2406,"title":"Commit the Rust-dialect manifest: the measurement, explicitly not the decision","hits":[{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/ternary/hybrid_bigint.t27"},{"kind":"terms","value":"ternary, hybrid, bigint"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"progress, decision, commit, valid, may, returns"}]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"rust, choose, decision"}]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"rust, make, decision"}]},{"specId":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"rust, threshold, decision"}]}]},{"key":"ghashtag/t27#2405","repo":"ghashtag/t27","number":2405,"title":"Bare [T] slice syntax emitted as a Zig array: 105 -> 108 valid, with 395 real arrays left untouched","hits":[{"specId":"7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"ClockDomainPower:182"},{"kind":"terms","value":"power, analysis, total, clock, domain"}]},{"specId":"2bc144c93ba41b7bdbdcc2d72c197a508f3b44151489f790c19a71aefd6b0190","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"ProofStep:13"},{"kind":"terms","value":"proof, step, length, trit"}]},{"specId":"3a5a1d0bf24c0a354559c859ce379e3fa65b8aad313da8627e341daa273d4adf","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ProofStep:92"},{"kind":"terms","value":"proof, step"}]},{"specId":"c17f4eba133c5caccd5af0eb50c4ba920920ca361f8cb6cdcb8fcd4ac8a1e535","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ProofStep:34"},{"kind":"terms","value":"proof, step"}]},{"specId":"003820a1908b213b5c065d89ace38ed0ce6d40a4ddbf077c5f3d640f5f66f612","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"K_TRUE:12"},{"kind":"terms","value":"trit, rule"}]}]},{"key":"ghashtag/t27#2404","repo":"ghashtag/t27","number":2404,"title":"Rust reference types were emitted verbatim into Zig: 98 -> 105 valid, and partial coverage of an emission path scored zero","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"declarations, valid, parse, five, emitted, gate, path"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"pass, parse, statements, token, valid, step, reference"}]},{"specId":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"rust, parameters, out, reference, target, total"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"zig, ast, parse, path, valid"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"measured, zero, fields, reference, nothing"}]}]},{"key":"ghashtag/t27#2398","repo":"ghashtag/t27","number":2398,"title":"Between 32 and 66 specs are Rust, not t27: one Rust marker predicts failure better than anything else measured","hits":[{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":2039,"reasons":[{"kind":"path","value":"specs/ternary/hybrid_bigint.t27"},{"kind":"symbol","value":"SIMD_WIDTH:28"},{"kind":"symbol","value":"simd_add:75"},{"kind":"terms","value":"ternary, hybrid, bigint, per, simd, width, vec32, zero"}]},{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"TRIT_ZERO:63"},{"kind":"symbol","value":"SIMD_WIDTH:72"},{"kind":"terms","value":"reference, zero, trit, per, hybrid, simd, width, range"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"compiler, parse, call, struct, else, statement"}]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"SIMD_WIDTH:34"},{"kind":"terms","value":"simd, width, threshold, trit, sum, zero, vec, expected"}]},{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"TRIT_ZERO:38"},{"kind":"terms","value":"ternary, bigint, trit, zero, simd, threshold, self, sum"}]}]},{"key":"ghashtag/t27#2397","repo":"ghashtag/t27","number":2397,"title":"Braced if-expressions were parsed as failures and their declarations discarded; the undeclared-identifier class is layered, not parallel","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"parse_expr:356"},{"kind":"symbol","value":"parse_if_expr:772"},{"kind":"terms","value":"parser, expect, brace, top, parse, expr, val, else"}]},{"specId":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"abs_val:43"},{"kind":"terms","value":"abs, val, part, pow"}]},{"specId":"e3997228a0ea792965b7825f7b685c27f972c5140c8d2a5ce3f434e27a9de5bf","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"abs_val:88"},{"kind":"symbol","value":"abs_val:127"},{"kind":"symbol","value":"abs_val:202"},{"kind":"terms","value":"abs, val, part"}]},{"specId":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"abs_val:52"},{"kind":"terms","value":"abs, val, f64"}]},{"specId":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"abs_val:50"},{"kind":"terms","value":"abs, val, f64"}]}]},{"key":"ghashtag/t27#2394","repo":"ghashtag/t27","number":2394,"title":"Eight more corrupted types, and the third incomplete inventory in a row","hits":[{"specId":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","relation":"reference","coverage":"unverified","score":2041,"reasons":[{"kind":"path","value":"specs/ternary/hybrid_bigint.t27"},{"kind":"symbol","value":"SIMD_WIDTH:28"},{"kind":"symbol","value":"SIMD_CHUNKS:31"},{"kind":"terms","value":"ternary, hybrid, bigint, simd, width, chunks, storage, i64"}]},{"specId":"eca06ff812c61e2693f706b7389c71dcd769c30dfbb2cfb958e0416a5118b404","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/ar/asp_solver.t27"},{"kind":"terms","value":"asp, solver, literal, answer, combinations"}]},{"specId":"f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"specs/physics/su2_chern_simons.t27"},{"kind":"terms","value":"physics, su2, chern, simons"}]},{"specId":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"symbol","value":"batch_read:59"},{"kind":"terms","value":"storage, read, batch"}]},{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1042,"reasons":[{"kind":"symbol","value":"SIMD_CHUNKS:45"},{"kind":"terms","value":"ternary, bigint, trit, simd, chunks, i64, left, right"}]}]},{"key":"ghashtag/t27#2393","repo":"ghashtag/t27","number":2393,"title":"Prop. 191 lands: the parser repair passes once the corpus is repaired, and six field types are decisions the gate cannot validate","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"compiler, parser, start, parse, right, field, struct"}]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"gate, pattern, match, field, start"}]},{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"gate, closed, valid, field"}]},{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"gate, field"}]},{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"gate, validate"}]}]},{"key":"ghashtag/t27#2386","repo":"ghashtag/t27","number":2386,"title":"Five gen-verilog features have live emitter code and failing tests: seven guards that never ran","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"pass, passed, compile, param, verilog, parse, real, synthesis"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"may, runs, claim, means, call, marker, live, ran"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"standalone, compiler, scope, parse, five, claims, live, path"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, expr, emit, decl, bench"}]},{"specId":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"claim, both, argument, ran, live"}]}]},{"key":"ghashtag/t27#2376","repo":"ghashtag/t27","number":2376,"title":"build and L1 TRACEABILITY can fail without blocking a merge — neither is a required context","hits":[{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"owner, authority, required, overlap, merge, accept, decision, per"}]},{"specId":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"merge, set, fail"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"build, required, options"}]}]},{"key":"ghashtag/t27#2370","repo":"ghashtag/t27","number":2370,"title":"No workflow installs lake/elan, so every Lean smoke-gate test skips on every runner","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"matches, standalone, skips, evidence, gate, path"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"runner, execute, gate, reports, summary"}]}]},{"key":"ghashtag/t27#2368","repo":"ghashtag/t27","number":2368,"title":"The anonymous braced literal .{ } is one of several parser gaps in lexer.t27, not the gap","hits":[{"specId":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","relation":"reference","coverage":"unverified","score":2045,"reasons":[{"kind":"path","value":"compiler/parser/lexer.t27"},{"kind":"symbol","value":"read_number:362"},{"kind":"symbol","value":"is_register:424"},{"kind":"terms","value":"compiler, parser, lexer, identifier, ident, read, register"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig, bind, expression, assert"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"symbol","value":"jit_bind:533"},{"kind":"terms","value":"jit, compiler, slice, bind, dot"}]},{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, zero, right, two"}]},{"specId":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"compiler/codegen/verilog/codegen.t27"},{"kind":"terms","value":"compiler, codegen, verilog, register"}]}]},{"key":"ghashtag/t27#2364","repo":"ghashtag/t27","number":2364,"title":"gen-verilog: on_clock with a return type emits an assignment to an implicitly-declared identifier under `default_nettype none`","hits":[{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/fpga/uart.t27"},{"kind":"symbol","value":"uart_tx_send:64"},{"kind":"symbol","value":"on_comb:224"},{"kind":"terms","value":"uart, clock, send, comb"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"on_clock:170"},{"kind":"terms","value":"begin, end, clock"}]},{"specId":"6e486ce745126ddc7861d9f5de7d92ba10254e50aca17b80299cadac0f0a4c11","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"on_comb:231"},{"kind":"terms","value":"wire, drive, data, comb"}]},{"specId":"4277eded24a90122c7ed7ae38cfc6526de4c77038bc2175b57c92c5dc81fc00e","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"on_comb:137"},{"kind":"terms","value":"clk, send, receive, comb"}]},{"specId":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"on_comb:109"},{"kind":"terms","value":"clock, uart, comb"}]}]},{"key":"ghashtag/t27#2358","repo":"ghashtag/t27","number":2358,"title":"graph_bfs.adj is decidable from a sibling struct: parser-fix blocker drops 6 -> 5","hits":[{"specId":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"symbol","value":"BFSResult:18"},{"kind":"terms","value":"graph, bfs, bfsresult"}]},{"specId":"8ba19bb8f83184f5d2ae0610a45c8b4292896654b4396bfbff77229d296cb997","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/tri/search/aho_corasick.t27"},{"kind":"terms","value":"search, aho, corasick, node"}]},{"specId":"a2c1f1c987153e3d5dfd1983d6d41b0dfe5e1647ff9163a9fd6335ae28bbd454","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/tri/search/regex_advanced.t27"},{"kind":"terms","value":"search, regex, advanced"}]},{"specId":"986ab5147dece46b619e35c0ceabaf47380e7b69fed47a34cd8d1963699b20fa","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/tri/encoding/mime.t27"},{"kind":"terms","value":"encoding, mime, parse"}]},{"specId":"bc72c1f84ebfceb91f91dbc3d4d835a36fb38d8555ea4a2f1af4c1d322eee4d6","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/search/regex.t27"},{"kind":"terms","value":"search, regex"}]}]},{"key":"ghashtag/t27#2356","repo":"ghashtag/t27","number":2356,"title":"Required check `check` cannot fail: check-now-freshness.yml is a bare echo","hits":[]},{"key":"ghashtag/t27#2355","repo":"ghashtag/t27","number":2355,"title":"The corruption inventory was incomplete: 12 lines with numeric array shapes were invisible to my own pattern","hits":[{"specId":"8ba19bb8f83184f5d2ae0610a45c8b4292896654b4396bfbff77229d296cb997","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"specs/tri/search/aho_corasick.t27"},{"kind":"symbol","value":"ACTrieNode:13"},{"kind":"terms","value":"search, aho, corasick, actrie, node"}]},{"specId":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"symbol","value":"BFSResult:18"},{"kind":"terms","value":"graph, bfs, bfsresult"}]},{"specId":"63216e4dbe843da95dd62bfc13b7741e6bf343e3bcf3d407e084d6be61e84dfe","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"OctNode:22"},{"kind":"terms","value":"oct, node"}]},{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"field, required, fields, pattern, corruption, report, evidence, valid"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"field, required, fields, pattern, corruption, report, evidence, valid"}]}]},{"key":"ghashtag/t27#2354","repo":"ghashtag/t27","number":2354,"title":"Zig emitter never discarded unused function parameters: 25/520 -> 93/520 valid, 0 regressions","hits":[{"specId":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"accumulation_check:46"},{"kind":"terms","value":"accumulation"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"unused, read, method, valid, gate, evidence, emitted"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"zig, ast, decl, parse, gen, valid"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"valid, gen, zig"}]}]},{"key":"ghashtag/t27#2353","repo":"ghashtag/t27","number":2353,"title":"weight_prefetch_ctrl never terminates on num_words == 0","hits":[{"specId":"6e486ce745126ddc7861d9f5de7d92ba10254e50aca17b80299cadac0f0a4c11","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"zero, high, words, word, weight"}]},{"specId":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"weight, ctrl, per"}]}]},{"key":"ghashtag/t27#2352","repo":"ghashtag/t27","number":2352,"title":"weight_prefetch_ctrl writes every word one slot high — the #2003 shape, fixed in the DMA only","hits":[{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"words, word, fetch, entry, written, fixed, overflow, addr"}]},{"specId":"6e486ce745126ddc7861d9f5de7d92ba10254e50aca17b80299cadac0f0a4c11","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"high, data, words, idle, word, weight"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"slot, index, second, one"}]},{"specId":"ff49a27495a6de1e3fa7c6a16ed855385c7f772a67591d593199659d5387f814","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"shape, index, weight, data"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"one, per, word, left"}]}]},{"key":"ghashtag/t27#2350","repo":"ghashtag/t27","number":2350,"title":"Corpus repair batch 5: 11 unbalanced lines derived from the broken converter, and the measurement that settles #2128","hits":[{"specId":"a2c1f1c987153e3d5dfd1983d6d41b0dfe5e1647ff9163a9fd6335ae28bbd454","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/tri/search/regex_advanced.t27"},{"kind":"terms","value":"search, regex, advanced, flags"}]},{"specId":"8ba19bb8f83184f5d2ae0610a45c8b4292896654b4396bfbff77229d296cb997","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/tri/search/aho_corasick.t27"},{"kind":"terms","value":"search, aho, corasick"}]},{"specId":"986ab5147dece46b619e35c0ceabaf47380e7b69fed47a34cd8d1963699b20fa","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/tri/encoding/mime.t27"},{"kind":"terms","value":"encoding, mime, parse"}]},{"specId":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/tri/graph/graph_bfs.t27"},{"kind":"terms","value":"graph, bfs"}]},{"specId":"bc72c1f84ebfceb91f91dbc3d4d835a36fb38d8555ea4a2f1af4c1d322eee4d6","relation":"reference","coverage":"unverified","score":2011,"reasons":[{"kind":"path","value":"specs/tri/search/regex.t27"},{"kind":"terms","value":"search, regex"}]}]},{"key":"ghashtag/t27#2349","repo":"ghashtag/t27","number":2349,"title":"Corpus repair batch 4: remaining balanced shapes, 17 lines, plus 5 primitives my own pattern mis-cased","hits":[{"specId":"fa898a9e9a4092010e182f03399fe01d286f94926819801fd42ba0c1ed2a089f","relation":"reference","coverage":"unverified","score":1018,"reasons":[{"kind":"symbol","value":"MarkdownNode:13"},{"kind":"terms","value":"markdown, node, parse, html"}]},{"specId":"2cd1d3d51078f14f5dd0f53741536884c599975ebb005381d679a5c2542b1000","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"XmlNode:13"},{"kind":"terms","value":"xml, node, parse"}]},{"specId":"025959391860663c194a10874f66af7dd8da26f8597f5bee89be66a283a66f60","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"HtmlNode:13"},{"kind":"terms","value":"html, node, parse"}]},{"specId":"189991c3d70f34e820450087b50a7d572be1baa821137533ee3c56b0aee57145","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"AgentStatus:17"},{"kind":"terms","value":"status, pattern"}]},{"specId":"51c140fd215a3cca5cf1fe479e531f1d39706abf2b670a8ecd6cdd4bd56037f0","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"TemplatePart:17"},{"kind":"terms","value":"template, part"}]}]},{"key":"ghashtag/t27#2348","repo":"ghashtag/t27","number":2348,"title":"RTL fixes cite differential simulation as evidence but do not commit the testbench","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"pass, rtl, verilog, real, reports, icarus, simulation, testbench"}]},{"specId":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"verilog, harness, vectors, simulation, testbench, diff, build, claim"}]},{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"conformance, vectors, rtl, evidence"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"conformance, vectors, rtl, evidence"}]}]},{"key":"ghashtag/t27#2347","repo":"ghashtag/t27","number":2347,"title":"Corpus repair batch 3: the generic and user-type [[]X] shapes, 13 lines","hits":[{"specId":"c9417445533676df65424ac0b373d1c1c21d3f92542dfbd77e61a06a0a2f60d1","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"CsvRow:13"},{"kind":"terms","value":"csv, row, parse"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1009,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parse, struct"}]},{"specId":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"batch, corpus"}]}]},{"key":"ghashtag/t27#2346","repo":"ghashtag/t27","number":2346,"title":"Corpus repair batch 2: the four primitive [[]X] shapes, 26 lines","hits":[{"specId":"c9417445533676df65424ac0b373d1c1c21d3f92542dfbd77e61a06a0a2f60d1","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"CsvRow:13"},{"kind":"terms","value":"csv, row, parse"}]},{"specId":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"batch, corpus"}]}]},{"key":"ghashtag/t27#2342","repo":"ghashtag/t27","number":2342,"title":"multilayer_sequencer: level-triggered prefetch handshake cannot distinguish \"done already\" from \"done still\"","hits":[]},{"key":"ghashtag/t27#2341","repo":"ghashtag/t27","number":2341,"title":"damage_repair.py silently ignores unknown flags, so a typo'd --class widens the run to every class","hits":[{"specId":"b98ddfba7485ee8b15edf9072a02ea6f5449ee50733f2fd03b57e33db6a50294","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"apply_to:49"},{"kind":"terms","value":"status, apply"}]},{"specId":"0c5420f2741baa6b74f193374a5bbedd2014a8ad7e9f7ca76b990d3caf212145","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"damage, class"}]},{"specId":"238294bec292fc2ae75519984696c9e649f3828ec49be8d88c65d7c2a19d129b","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"damage, class"}]},{"specId":"489e64457fdd3c9a381073abd68b4fefea83b4e8f7471117b2e75c70fb79e6ee","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"damage, class"}]},{"specId":"4b2bd3dcc946b1c9c7f2d247f6968a6271cfd0b9f5bd12d9ecfa42b883ad7881","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"damage, class"}]}]},{"key":"ghashtag/t27#2336","repo":"ghashtag/t27","number":2336,"title":"tools/converter corrupts every quoted field type — one missing trim_matches('\"') explains all three symptoms of #2154","hits":[{"specId":"dae2f7625dc11f9fd8d878151c24c36e508397e0782405156da0b0bf634a7731","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"WorkflowStep:13"},{"kind":"terms","value":"workflow, step"}]},{"specId":"a6a7a8f430e0132d79aa6881521522066a94fa5b29c16cdc844405c1824c864f","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"KeyPair:13"},{"kind":"terms","value":"key, pair"}]},{"specId":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"converter, field, convert, pascal, case"}]},{"specId":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"list, missing, matches, may"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"three, two, field"}]}]},{"key":"ghashtag/t27#2335","repo":"ghashtag/t27","number":2335,"title":"cli/tri: six names unresolvable on feat/rename-tef-to-tnf (follow-up to #2176 part 2)","hits":[]},{"key":"ghashtag/t27#2334","repo":"ghashtag/t27","number":2334,"title":"seal: fpga_ZeroDSP_BPSK.json is stale — #1874 edited specs/fpga/bpsk.t27 without re-sealing","hits":[{"specId":"b03d87fec868d2aa28f16a77d0dc77dd068c98b1443f9a2408896c72d4a3c227","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/fpga/bpsk.t27"},{"kind":"terms","value":"bpsk, zero, dsp, byte"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"zero, dsp, done, read, set"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"zero, stale, verify"}]},{"specId":"040d3cdec243fde652aa9fb3cc81f1675508f8c1b485900003734245624c6d23","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"zero, full, dsp"}]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"zero, dsp, read"}]}]},{"key":"ghashtag/t27#2328","repo":"ghashtag/t27","number":2328,"title":"origin/master is a single orphan commit with no ancestor in common with the previous 2545-commit history (old history is safe)","hits":[{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"history, single"}]}]},{"key":"ghashtag/t27#2325","repo":"ghashtag/t27","number":2325,"title":"gen-verilog: 26 of 32 modules reference struct fields under a prefix declared nowhere — no single prefix can be correct","hits":[{"specId":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"apb_bridge:66"},{"kind":"terms","value":"apb, bridge, addr, width, data, config, map, read"}]},{"specId":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","relation":"reference","coverage":"unverified","score":1031,"reasons":[{"kind":"symbol","value":"vcd_trace:97"},{"kind":"terms","value":"vcd, trace, var, scope, wire, reg"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":156,"reasons":[{"kind":"terms","value":"tasks, pass, compile, param, write, verilog, log, real"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":90,"reasons":[{"kind":"terms","value":"compiler, path, list, status, gen, conformance, total, compile"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":84,"reasons":[{"kind":"terms","value":"tmp, config, port, fallback, verilog, select, correctness, modules"}]}]},{"key":"ghashtag/t27#2319","repo":"ghashtag/t27","number":2319,"title":"gen-verilog: is_lowerable_scalar_struct accepts a named-const array extent that field_type_width sizes as 0 — TernaryWord declared 40 bits, correct is 3712","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"reference","coverage":"unverified","score":2124,"reasons":[{"kind":"path","value":"specs/igla/coder/eval.t27"},{"kind":"terms","value":"igla, coder, eval, pass, inner, param, sum, verilog"}]},{"specId":"9a7a252b0234051663b7a9a6f9712ceb2b15501140378ef156612ab574aec6ae","relation":"reference","coverage":"unverified","score":2065,"reasons":[{"kind":"path","value":"specs/base/ternary_memory.t27"},{"kind":"symbol","value":"TRIT_CAPACITY:21"},{"kind":"symbol","value":"WORD_CAPACITY:22"},{"kind":"symbol","value":"TritCell:36"},{"kind":"symbol","value":"TernaryWord:80"},{"kind":"symbol","value":"TernaryMemoryBank:149"},{"kind":"terms","value":"base, ternary, memory, trit, zero, capacity, word, size"}]},{"specId":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","relation":"reference","coverage":"unverified","score":2053,"reasons":[{"kind":"path","value":"specs/isa/ternary_memory.t27"},{"kind":"terms","value":"isa, ternary, memory, trit, zero, mem, width, size"}]},{"specId":"59c9aed7248324467e2d13b458a60137da5b8b07f5116a484580f0dadc808cd8","relation":"reference","coverage":"unverified","score":2040,"reasons":[{"kind":"path","value":"specs/fpga/vcd_conformance_compare.t27"},{"kind":"symbol","value":"CompareResult:13"},{"kind":"terms","value":"vcd, conformance, compare, pass, expected, map, vector, bits"}]},{"specId":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","relation":"reference","coverage":"unverified","score":2037,"reasons":[{"kind":"path","value":"specs/isa/registers.t27"},{"kind":"terms","value":"isa, registers, reg, width, base, zero, carry, read"}]}]},{"key":"ghashtag/t27#2306","repo":"ghashtag/t27","number":2306,"title":"smoke-gate: theorem_matrix_ok is a hardcoded true (false green), and validate_lean_standalone has no phase body","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":59,"reasons":[{"kind":"terms","value":"matches, standalone, skips, required, compiler, evidence, gate, live"}]},{"specId":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"compiler, validate, commit, matrix, path, warning, elapsed"}]},{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"read, skip, gate, validate"}]}]},{"key":"ghashtag/t27#2301","repo":"ghashtag/t27","number":2301,"title":"proxy.rs tests are stripped before type-checking — no workflow passes --features server","hits":[]},{"key":"ghashtag/t27#2292","repo":"ghashtag/t27","number":2292,"title":"cargo test -p t27c landed red on master: the 1221-pass measurement was taken on the wrong tree","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":94,"reasons":[{"kind":"terms","value":"pass, yosys, passed, compile, param, verilog, parse, real"}]},{"specId":"6e7314f664d45e80ed132829c617b1485c95fd263f8dbda7244c058800cecbfe","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"trees, red, tree"}]}]},{"key":"ghashtag/t27#2289","repo":"ghashtag/t27","number":2289,"title":"CI: t27c's 1221 tests have never run on master — land the gate (fixes #2288)","hits":[]},{"key":"ghashtag/t27#2288","repo":"ghashtag/t27","number":2288,"title":"suite.rs unit tests are compiled by nothing — 33 tests plus 3 new ones never type-checked","hits":[{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"absent, unit, nothing, may"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"suite, plus, pass"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"unit, plus, one"}]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"unit, checked"}]}]},{"key":"ghashtag/t27#2278","repo":"ghashtag/t27","number":2278,"title":"emit-bitexact is red on master and nothing was watching: no push: trigger, so it has never run there","hits":[{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"specs/jit/jit.t27"},{"kind":"symbol","value":"jit_bind:533"},{"kind":"terms","value":"jit, default, compiler, emit, push, bind"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"compiler/codegen/zig/codegen.t27"},{"kind":"terms","value":"compiler, codegen, zig, generate, emit, bind, int"}]},{"specId":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","relation":"reference","coverage":"unverified","score":2030,"reasons":[{"kind":"path","value":"compiler/codegen/verilog/codegen.t27"},{"kind":"terms","value":"compiler, codegen, verilog, generate, emit, int"}]},{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint, big, int, zero, two"}]},{"specId":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"compiler/parser/lexer.t27"},{"kind":"terms","value":"compiler, parser, lexer, identifier, read"}]}]},{"key":"ghashtag/t27#2266","repo":"ghashtag/t27","number":2266,"title":"gen-verilog: module-var writes in the comb lowering infer an LDCE latch with a combinational feedback loop (ZeroDSP_UART)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":90,"reasons":[{"kind":"terms","value":"passed, write, verilog, reports, feedback, loop, simulation, gen"}]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"uart, zero, dsp, fifo, status, send, read, comb"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"formal, combinational, loop, exhaustive, status, prove"}]},{"specId":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"zero, dsp, mac, uart, send, state"}]},{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"verilog, emit, uart, mac, fifo"}]}]},{"key":"ghashtag/t27#2263","repo":"ghashtag/t27","number":2263,"title":"master's tri test suite is red, and two gates cannot see it","hits":[]},{"key":"ghashtag/t27#2253","repo":"ghashtag/t27","number":2253,"title":"Two divergent NOW.md files, and .gitattributes calls one a symlink it is not","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"path, merge, one, two"}]},{"specId":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, two"}]},{"specId":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"two, one"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"two, one"}]},{"specId":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"two, one"}]}]},{"key":"ghashtag/t27#2241","repo":"ghashtag/t27","number":2241,"title":"Conformance vectors are never executed: no vvp step, testbench 'generation' echoes static JSON verdicts","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compile, generate, rtl, real, testbench, json, step"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"exists, generate, never, generation, counts"}]},{"specId":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"vector, generate, vectors, testbench, diff, execute"}]},{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"conformance, vectors, field, rtl, vector"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"conformance, vectors, field, rtl, vector"}]}]},{"key":"ghashtag/t27#2238","repo":"ghashtag/t27","number":2238,"title":"The green bitstream carries an empty design: ZeroDSP_TopLevel synthesizes to 0 cells","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":74,"reasons":[{"kind":"terms","value":"pass, real, synthesis, cells, compute, json, synth, toolchain"}]},{"specId":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"top, level, zero, dsp, clk, mac, data, uart"}]},{"specId":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"top, level, clk, clock, pass, led, mac"}]},{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"clock, design, empty, port, ports"}]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"uart, zero, dsp, clock, ready, comb"}]}]},{"key":"ghashtag/t27#2232","repo":"ghashtag/t27","number":2232,"title":"Post-ladder master drift: seal-coverage red (dangling+phantom) and 'Every spec still generates' red (bigint.t27 et al.)","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/ternary/bigint.t27"},{"kind":"terms","value":"ternary, bigint"}]}]},{"key":"ghashtag/t27#2218","repo":"ghashtag/t27","number":2218,"title":"The 120 module-level parse errors are six language-design decisions, classified","hits":[{"specId":"eb7d96285206407ce71e8db80252ecfac68c600e7e516fdc4a247284f30d6ae6","relation":"reference","coverage":"unverified","score":2029,"reasons":[{"kind":"path","value":"examples/fpga/qmtech_minimal/design.t27"},{"kind":"terms","value":"examples, qmtech, minimal, design"}]},{"specId":"baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"specs/enrichment/audio_overview.t27"},{"kind":"terms","value":"enrichment, audio, overview, generate"}]},{"specId":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/base/debounce.t27"},{"kind":"symbol","value":"PHI_INV:18"},{"kind":"terms","value":"base, debounce, phi, inv"}]},{"specId":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/config/load.t27"},{"kind":"terms","value":"config, load, paths, base"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"collections, array, view"}]}]},{"key":"ghashtag/t27#2174","repo":"ghashtag/t27","number":2174,"title":"parser: parameterised type application `Name(T)` in type position blocks 27 of 28 ADR-008 specs","hits":[{"specId":"80d01a441ec4d93e5e7572db1c1dd4554c855576e3dc2caa4876fff33083db4b","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/tri/collections/list.t27"},{"kind":"terms","value":"collections, list, empty, head, map"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/tri/collections/array.t27"},{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"collections, array, view, empty"}]},{"specId":"9aa3f120d7149de57f33abba748180cf7cfa0876bbee28cb4a4fb6459b1cad31","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/tri/io/io.t27"},{"kind":"terms","value":"map"}]}]},{"key":"ghashtag/t27#2173","repo":"ghashtag/t27","number":2173,"title":"openXC7 emits a wrong bitstream from a correct netlist for SRL16E (same class as DSP48E1)","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"measured, per, class, list, family, emits, live"}]}]},{"key":"ghashtag/t27#2165","repo":"ghashtag/t27","number":2165,"title":"'test' as a reserved word blocks 'fn test(...)'; contextual-keyword decision needed (1 spec affected)","hits":[{"specId":"aa02acb04870c6d0c72134e4feca4eeaf819084a5cf0409341fd3f9749105177","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/tri/collections/bitset.t27"},{"kind":"terms","value":"collections, bitset, set, union"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"language, word, decision, full"}]},{"specId":"344f42e42174ead35a201804037295018edd2a0b4c05cd17426cc7d92239d51a","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"reserved, out, word"}]},{"specId":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"reserved, out, word"}]},{"specId":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"keyword, token, word"}]}]},{"key":"ghashtag/t27#2164","repo":"ghashtag/t27","number":2164,"title":"Generic type APPLICATION (Name(T) in a type position) is rejected; 20 library specs, needs a language decision","hits":[{"specId":"273a7e6b46c4b79c5cb6ddcdb4894b61722fd4aba4ec35a715f6841a93e6c88e","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/math/pellis_precision_verify.t27"},{"kind":"terms","value":"math, pellis, precision, verify, str, len"}]},{"specId":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/runtime/execute.t27"},{"kind":"symbol","value":"TaskResult:74"},{"kind":"terms","value":"runtime, execute, resolve, rejected"}]},{"specId":"b4efcdd7ff229ef26b03587176dbb0f75351666de1e6c689597be0322349e3dd","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/tri/collections/set.t27"},{"kind":"symbol","value":"HashSet:13"},{"kind":"terms","value":"collections, set, hash, contains, union"}]},{"specId":"da83784231ce7b0004279a51913a711527f55d8b2150da9a39fb39b307fab17f","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/tri/collections/maybe.t27"},{"kind":"terms","value":"collections, maybe, bind, map"}]},{"specId":"13cc1e8f0e62bc29eb874c628c2bea30950b100bd08a3919e4ff3043beb4491f","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/auth/config.t27"},{"kind":"terms","value":"auth, config, set, exists"}]}]},{"key":"ghashtag/t27#2163","repo":"ghashtag/t27","number":2163,"title":"parser: 'Expected LParen, got KwTest' in specs/tri/collections/bitset.t27","hits":[{"specId":"aa02acb04870c6d0c72134e4feca4eeaf819084a5cf0409341fd3f9749105177","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"specs/tri/collections/bitset.t27"},{"kind":"terms","value":"collections, bitset"}]}]},{"key":"ghashtag/t27#2160","repo":"ghashtag/t27","number":2160,"title":"corpus damage: freeze, per-class candidate patch, and what one rule does not reach (#2154 follow-up)","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":72,"reasons":[{"kind":"terms","value":"unit, per, class, rule, units, excluded, free, text"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"units, zero, base, closed, rule, per, unit, known"}]},{"specId":"3195a264eeb3a9f6a1894ea50f84cd3ce9c91b52e62f169b7518249a90b5df97","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"owner, rule, third, load, evidence, class, zero, holds"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"per, one, two, base, class"}]},{"specId":"0c5420f2741baa6b74f193374a5bbedd2014a8ad7e9f7ca76b990d3caf212145","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"bootstrap, fixtures, damage, class, damaged"}]}]},{"key":"ghashtag/t27#2155","repo":"ghashtag/t27","number":2155,"title":"Four sources state the catalogue size and give four numbers: 109 is canonical, and nine repeated names are unexplained","hits":[{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"reference","coverage":"unverified","score":2026,"reasons":[{"kind":"path","value":"specs/numeric/formats_catalog.t27"},{"kind":"terms","value":"numeric, formats, catalog, gfternary, format, per"}]},{"specId":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"GFTernary:29"},{"kind":"terms","value":"numeric, gfternary, canonical, gft"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"generated, path, state, per, sources, formats"}]},{"specId":"c5a5f4d86e39a33fe2eee3119242a951a9e942f8d2d1e8eddeda8f6ff0b0e9e4","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"sources, canonical, generated"}]}]},{"key":"ghashtag/t27#2154","repo":"ghashtag/t27","number":2154,"title":"A rewrite mangled slice types in 63 spec files, and it is the floor under every field-set measurement","hits":[{"specId":"bcb3b01dcd4debb986099332e1f8d6def66dc7b3d5b6e11f9dce845bb5007fb7","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"specs/tri/utils/logger.t27"},{"kind":"symbol","value":"LogEntry:17"},{"kind":"terms","value":"utils, logger, level, log, entry, field"}]},{"specId":"a6a7a8f430e0132d79aa6881521522066a94fa5b29c16cdc844405c1824c864f","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/tri/crypto/crypto.t27"},{"kind":"symbol","value":"KeyPair:13"},{"kind":"terms","value":"crypto, key, pair"}]},{"specId":"e12a4af3d20a17e48d35990420825c9ff5a1eee091b74ff1565d775f5ae63887","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"LogEntry:17"},{"kind":"terms","value":"utils, log, level, entry"}]}]},{"key":"ghashtag/t27#2152","repo":"ghashtag/t27","number":2152,"title":"Corpus census W737-W739: the defect population is 168, not 490 — and what is still open","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"parse_if_expr:772"},{"kind":"symbol","value":"parse_if_stmt:965"},{"kind":"terms","value":"compiler, stmt, parse, expr, struct, literal, local, statement"}]}]},{"key":"ghashtag/t27#2150","repo":"ghashtag/t27","number":2150,"title":"Seals: 0 of 1072 specs verify, 928 with an unchanged spec_hash — gate it or remove it","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"igla, verilog, parse, reports, verify, json, state, formal"}]},{"specId":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"hash, zero, remove"}]}]},{"key":"ghashtag/t27#2149","repo":"ghashtag/t27","number":2149,"title":"openXC7: a DSP48E1 fed from the fabric produces a wrong bitstream (40-line reproducer)","hits":[]},{"key":"ghashtag/t27#2148","repo":"ghashtag/t27","number":2148,"title":"wave 715: a clean clone dies at step 9 of 65, and my own commit added two of the three shrinks","hits":[{"specId":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"git, commit, path, branch, added"}]},{"specId":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"git, clean, added"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"three, two, exists"}]},{"specId":"c0881e50f64cafa548394ab698a373f7c74c7626d021eb904e2a8e036bb6a091","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"create, step, added"}]}]},{"key":"ghashtag/t27#2147","repo":"ghashtag/t27","number":2147,"title":"wave 713: my own fix broke CI at step 2 — the gate ran before the RTL it counts","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"detect, rtl, write, real, tree, index, step, formal"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"gate, fixed, ran, counts"}]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"reads, counts, unreachable, ran"}]},{"specId":"f53faab13959683ff6110da18d8125f6c62af2516383c6b77aab8610a5584ebf","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"step, build, counts"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"rtl, step"}]}]},{"key":"ghashtag/t27#2146","repo":"ghashtag/t27","number":2146,"title":"wave 711: a hollowed corpus is a deletion with the evidence of deletion removed","hits":[{"specId":"e80558ed3a7a773aa1171a8233e13517664f4241081525b100898bc468946920","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"corpus, evidence, work"}]},{"specId":"f4cbc7903cba83f5b77de3ea9da6843b4ad6074a3fc695555573e68537ebdb07","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"corpus, evidence, work"}]}]},{"key":"ghashtag/t27#2145","repo":"ghashtag/t27","number":2145,"title":"wave 710: deleting half the corpus reads as a 38% improvement in every ratchet","hits":[{"specId":"d8ca3cf6feb27648ea781750913aaef0f7c8288be4a6b1d3f8ed1e514db17fa4","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"default, corpus, half"}]}]},{"key":"ghashtag/t27#2144","repo":"ghashtag/t27","number":2144,"title":"wave 709: a scanner that matches its own source satisfies its own liveness floor","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"matches, scan, scanner, scope, gate, proved"}]}]},{"key":"ghashtag/t27#2143","repo":"ghashtag/t27","number":2143,"title":"wave 708: 21 of 44 gates passed on a starved tree, and which ones was a property of the gates","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"passed, tree, full, state, groups, self, property, sweep"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"failure, suite, aggregate, property, passed, failed"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"failure, suite, aggregate, property, passed, failed"}]},{"specId":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"tree, passed"}]}]},{"key":"ghashtag/t27#2142","repo":"ghashtag/t27","number":2142,"title":"wave 707: a finally does not survive SIGKILL — the restore must run at startup","hits":[]},{"key":"ghashtag/t27#2141","repo":"ghashtag/t27","number":2141,"title":"wave 706: the unresolved 26% was the instrument, not the tree","hits":[]},{"key":"ghashtag/t27#2140","repo":"ghashtag/t27","number":2140,"title":"wave 705: a lower-bound theorem whose lower bound is an axiom","hits":[{"specId":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"standard, measured, lower, bound"}]},{"specId":"bdca7143ec2e9b3765183834a305585274ff40876b6f767b7fe59f66d2d4ce92","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"lower, bound"}]}]},{"key":"ghashtag/t27#2139","repo":"ghashtag/t27","number":2139,"title":"wave 704: suspension closed — trios-coq builds 28/28, and lia was the whole obstacle","hits":[]},{"key":"ghashtag/t27#2138","repo":"ghashtag/t27","number":2138,"title":"wave 703: one suspended check hid five defect classes — 10 of 28 Coq proofs became 25","hits":[]},{"key":"ghashtag/t27#2137","repo":"ghashtag/t27","number":2137,"title":"wave 702: continue-on-error is a red check reported as success — one had been red since it landed","hits":[{"specId":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"signal, success, failure, continue"}]},{"specId":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"success, reported"}]}]},{"key":"ghashtag/t27#2136","repo":"ghashtag/t27","number":2136,"title":"wave 701: the strongest check in the suite had been red for six waves, and a hand-curated 'full set' hid it","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"one, six, full"}]}]},{"key":"ghashtag/t27#2135","repo":"ghashtag/t27","number":2135,"title":"wave 700: an expected refutation that stops firing is silent — and this one had been","hits":[]},{"key":"ghashtag/t27#2134","repo":"ghashtag/t27","number":2134,"title":"wave 699: auditing every by-name exemption found one too narrow and three simply false","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"parse, found, too, scale, complete"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"parse, found, too, scale, complete"}]},{"specId":"30907b42896f20f54745d8066fc6f48dbc090a2943ca9314c5c4daa0f50e5739","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"narrow, three"}]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"found, too"}]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, three"}]}]},{"key":"ghashtag/t27#2133","repo":"ghashtag/t27","number":2133,"title":"wave 698: 36% of the parser backlog is Markdown, and the count could not say so","hits":[{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"PROTOCOL_VERSION:25"},{"kind":"terms","value":"protocol, list, gate"}]},{"specId":"0c558f36ccaa222e6da0edd224b43599dc41bccc897a1d5fa61fde68d509e90b","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"PROTOCOL_VERSION:34"},{"kind":"terms","value":"protocol"}]}]},{"key":"ghashtag/t27#2132","repo":"ghashtag/t27","number":2132,"title":"wave 697: one contextual keyword recovered 2,865 lines the compiler had never read","hits":[{"specId":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"TriSpec:21"},{"kind":"symbol","value":"generate_t27:115"},{"kind":"terms","value":"generate, valid"}]},{"specId":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"compiler, parser, identifier, tokens, token, ident, read, keyword"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"exists, generate, prop, one, never"}]},{"specId":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"compiler, token, keyword, identifier"}]},{"specId":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"read, recovered"}]}]},{"key":"ghashtag/t27#2131","repo":"ghashtag/t27","number":2131,"title":"wave 696: 2,865 lines of spec are read as an empty shell, and every gate said green","hits":[{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"gate, reads, says, read, nothing, control"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"consumer, read, rule, gate"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"per, rule, gate, empty"}]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"gate, nodes, empty"}]},{"specId":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"gate, read"}]}]},{"key":"ghashtag/t27#2130","repo":"ghashtag/t27","number":2130,"title":"wave 695: two gates printed their own blindness in green, every wave — 22 of 29 publish no denominator","hits":[]},{"key":"ghashtag/t27#2129","repo":"ghashtag/t27","number":2129,"title":"wave 694: search for the question, not the shape you already found — 3 delimiter classes, 21 imbalances","hits":[{"specId":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"specs/runtime/instance.t27"},{"kind":"terms","value":"runtime, instance, instances"}]}]},{"key":"ghashtag/t27#2128","repo":"ghashtag/t27","number":2128,"title":"wave 693: the counterexample was corrupt data — 18 unbalanced field types, ratcheted not guessed","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1021,"reasons":[{"kind":"symbol","value":"parse_struct_body:1102"},{"kind":"terms","value":"parser, parse, field, struct"}]}]},{"key":"ghashtag/t27#2126","repo":"ghashtag/t27","number":2126,"title":"Wave 691: a third copy of the type parser — 384 to 161 recovery events","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"symbol","value":"parse_fn_decl:1363"},{"kind":"terms","value":"compiler, parser, top, level, parse, call, struct, decl"}]},{"specId":"320bbf24c3e227fc457fe90d95b24bf7d06dc2e24ed0ae780e3224fb281a5f75","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"AccountID:12"},{"kind":"terms","value":"account, token, list"}]},{"specId":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"AccountID:13"},{"kind":"terms","value":"account, token"}]}]},{"key":"ghashtag/t27#2125","repo":"ghashtag/t27","number":2125,"title":"Wave 690: the corpus reaches zero on every parse metric","hits":[{"specId":"6a3ef22445272843815bb1eef5aa8a4b6e3e881592723413e6ddf8c723b36c7a","relation":"reference","coverage":"unverified","score":2009,"reasons":[{"kind":"path","value":"specs/api/c_api_contract.t27"},{"kind":"terms","value":"api, contract"}]},{"specId":"05267a4e1f59698a7b77f9960613213d76323188e7e822bfce442888d8367d5a","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"DEFAULT_KERNEL:13"},{"kind":"terms","value":"default, kernel, shape"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"pass, match, parse, metric, state, contract, sweep"}]}]},{"key":"ghashtag/t27#2124","repo":"ghashtag/t27","number":2124,"title":"Wave 689: 107 corrupted field types, hidden behind a runaway string","hits":[]},{"key":"ghashtag/t27#2123","repo":"ghashtag/t27","number":2123,"title":"Wave 688: swallowed declarations reach zero, and the metric's blind spot","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1044,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parser, skip, top, level, parse, annotation, else, local"}]}]},{"key":"ghashtag/t27#2122","repo":"ghashtag/t27","number":2122,"title":"Wave 687: ? was three decisions, not one","hits":[{"specId":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"BlockState:35"},{"kind":"terms","value":"block, default, state, forward"}]},{"specId":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"ToolDefinition:71"},{"kind":"terms","value":"tool, definition, default"}]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, three"}]}]},{"key":"ghashtag/t27#2121","repo":"ghashtag/t27","number":2121,"title":"Wave 686: the parser chain closed — 788 to 4 swallowed declarations","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1061,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"compiler, parser, start, parse, annotation, call, primary, else"}]}]},{"key":"ghashtag/t27#2120","repo":"ghashtag/t27","number":2120,"title":"Wave 685: the chain is five deep, not four","hits":[{"specId":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","relation":"reference","coverage":"unverified","score":2012,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"terms","value":"storage, read, list"}]},{"specId":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"StorageError:66"},{"kind":"terms","value":"storage, default"}]}]},{"key":"ghashtag/t27#2119","repo":"ghashtag/t27","number":2119,"title":"Wave 684: occlusion four deep, and the two files no list ever reached","hits":[{"specId":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"terms","value":"storage, read, list"}]}]},{"key":"ghashtag/t27#2118","repo":"ghashtag/t27","number":2118,"title":"Wave 683: one mistake in two copies, and a withdrawn explanation","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"parse_type_annotation:267"},{"kind":"terms","value":"parser, parsing, expect, parse, annotation, comparison"}]},{"specId":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"StorageError:66"},{"kind":"terms","value":"storage, found"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"two, one, present"}]},{"specId":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, two"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"one, two"}]}]},{"key":"ghashtag/t27#2117","repo":"ghashtag/t27","number":2117,"title":"Wave 682: the liveness step scored every failure as a refutation","hits":[]},{"key":"ghashtag/t27#2116","repo":"ghashtag/t27","number":2116,"title":"Wave 681: both CI walls repaired; cherry-picking ruled out by evidence","hits":[{"specId":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","relation":"reference","coverage":"unverified","score":2004,"reasons":[{"kind":"path","value":"specs/storage/kv.t27"},{"kind":"terms","value":"storage"}]},{"specId":"344f42e42174ead35a201804037295018edd2a0b4c05cd17426cc7d92239d51a","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"zero, out, evidence, valid"}]},{"specId":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"zero, out, evidence, valid"}]}]},{"key":"ghashtag/t27#2115","repo":"ghashtag/t27","number":2115,"title":"Wave 680: 165 of 167 propositions cite a workflow that has never run","hits":[]},{"key":"ghashtag/t27#2114","repo":"ghashtag/t27","number":2114,"title":"Wave 679: a _CoqProject nobody runs builds nothing","hits":[{"specId":"189991c3d70f34e820450087b50a7d572be1baa821137533ee3c56b0aee57145","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"TaskResult:113"}]},{"specId":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","relation":"reference","coverage":"unverified","score":1000,"reasons":[{"kind":"symbol","value":"TaskResult:74"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"workspace, gate, read, nothing, real, filter, runs"}]}]},{"key":"ghashtag/t27#2113","repo":"ghashtag/t27","number":2113,"title":"Wave 678: one unparsable initialiser destroyed its whole file","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1072,"reasons":[{"kind":"symbol","value":"skip_brace_body:132"},{"kind":"symbol","value":"skip_to_semicolon:152"},{"kind":"symbol","value":"parse_top_level_decl:1176"},{"kind":"symbol","value":"parse_var_decl:1303"},{"kind":"terms","value":"parser, skip, brace, semicolon, top, level, recover, boundary"}]}]},{"key":"ghashtag/t27#2112","repo":"ghashtag/t27","number":2112,"title":"Wave 677: the crates nothing builds are the crates that broke","hits":[]},{"key":"ghashtag/t27#2111","repo":"ghashtag/t27","number":2111,"title":"Wave 676: 1213 tests nothing ran, and my own gate recognised one build mechanism","hits":[{"specId":"b4efcdd7ff229ef26b03587176dbb0f75351666de1e6c689597be0322349e3dd","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"HashSet:13"},{"kind":"terms","value":"set, hash"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"start, runs, claimed, means, hook, failed, gate, ran"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"gate, list, reads, says, nothing, runs, lost"}]}]},{"key":"ghashtag/t27#2110","repo":"ghashtag/t27","number":2110,"title":"Wave 675: 788 swallowed declarations were 161, and 133 were one missing feature","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1052,"reasons":[{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parser, skip, top, level, parse, struct, array, else"}]},{"specId":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","relation":"reference","coverage":"unverified","score":1010,"reasons":[{"kind":"symbol","value":"ArrayView:13"},{"kind":"terms","value":"array, view"}]}]},{"key":"ghashtag/t27#2109","repo":"ghashtag/t27","number":2109,"title":"Wave 674: 123 Qed are type-checked by nothing","hits":[]},{"key":"ghashtag/t27#2108","repo":"ghashtag/t27","number":2108,"title":"Wave 673: recovery skipped past every module-level const, by design","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1070,"reasons":[{"kind":"symbol","value":"is_top_level_start:186"},{"kind":"terms","value":"parser, parsing, skip, brace, top, level, start, call"}]}]},{"key":"ghashtag/t27#2107","repo":"ghashtag/t27","number":2107,"title":"Wave 672: withdrawing an unsound metric, 162167 characters restored, 61 deleted proofs found","hits":[]},{"key":"ghashtag/t27#2106","repo":"ghashtag/t27","number":2106,"title":"Wave 671: a Unicode-to-ASCII commit replaced 162167 characters with a running counter","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1033,"reasons":[{"kind":"symbol","value":"parse_top_level_decl:1176"},{"kind":"symbol","value":"parse_const_decl:1202"},{"kind":"terms","value":"parsing, semicolon, top, level, parse, index, decl"}]},{"specId":"9caf79744e4fe67d95900b03c1298e0a046444ab82e98057a133550f4c8ba646","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"bit_to_trit_pair:37"},{"kind":"terms","value":"trit, byte, bit, pair"}]},{"specId":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"commit, ascii"}]}]},{"key":"ghashtag/t27#2105","repo":"ghashtag/t27","number":2105,"title":"Wave 670: 497 specs parse, and 3292 declarations never reach an AST","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/numeric/requant_boundary.t27"},{"kind":"terms","value":"numeric, requant, boundary, threshold, question, guess"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"skip_to_next_top_level:201"},{"kind":"symbol","value":"parse_module_body:1488"},{"kind":"terms","value":"compiler, parser, skip, semicolon, top, level, boundary, parse"}]},{"specId":"9efc1e9e11d76314621e08b5d34fa54cd07ec75cea8d11045f76b846d001d450","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"compiler, parser, rule, token, label, parse, ast"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"declarations, compiler, evidence, parse, five, gate"}]},{"specId":"2a263b75b4f49ba65564d52f7697195904806ffda509bdf7734719cd03732c7f","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"compiler, parser, parse, ast, label"}]}]},{"key":"ghashtag/t27#2104","repo":"ghashtag/t27","number":2104,"title":"Wave 669: a boundary 139 propositions never touched, and a corrected pass-rate","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"requant, boundary, trit, threshold, acc, measured"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"match, rtl, comparison, pass, boundary"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"rate, weights, seed, decode, step, pass"}]},{"specId":"c763650c8fdc2e77ad17d147463a2a41f6073827281085c720bbe33671c396a9","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"pass, rate, threshold, step"}]},{"specId":"bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"testbench, pass, rate"}]}]},{"key":"ghashtag/t27#2103","repo":"ghashtag/t27","number":2103,"title":"Wave 668: the value check sweeps, and its six failures were an ill-posed question","hits":[]},{"key":"ghashtag/t27#2102","repo":"ghashtag/t27","number":2102,"title":"Wave 667: the engine computes 27, and no proof in the campaign is vacuous","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, threshold, verify, acc, resolved, measured"}]}]},{"key":"ghashtag/t27#2101","repo":"ghashtag/t27","number":2101,"title":"Wave 666: a vacuity gate, a config guard, and a withdrawn measurement","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, checked, acc, open, measured"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"config, default, property, gate, reports, exit"}]},{"specId":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"gated, config, gate, chunks, start"}]},{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"gate, open, config, status, init, valid"}]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"gate, match, config, init, start"}]}]},{"key":"ghashtag/t27#2100","repo":"ghashtag/t27","number":2100,"title":"Wave 665: layer 0 loads its weights — simulation agrees, the formal property still refutes","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"reports, simulation, valid, until, state, reference, property, formal"}]},{"specId":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"signal, simulation, reference, weights, threshold"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"seq, layer, weight, weights, load"}]},{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"layer, weights, weight, activation, zero"}]},{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"load, read, layer, property"}]}]},{"key":"ghashtag/t27#2099","repo":"ghashtag/t27","number":2099,"title":"design: nothing loads layer 0's weights (Prop. 129)","hits":[{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"phase, layer, weights, weight"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"layer, weight, weights, load"}]},{"specId":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"layer, weights, parameter"}]},{"specId":"f3b97da6289ecc13cd9efc132dc417b23dff4316a835d5f6d86875470f306c34","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"weights, one, layer"}]},{"specId":"90cb626e0465988603da5013588d2d56b237a09acccf0184d6050653ffef9407","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"layer, weights"}]}]},{"key":"ghashtag/t27#2098","repo":"ghashtag/t27","number":2098,"title":"sim: the value check now fails for a named reason (Prop. 128)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, acc, measured"}]}]},{"key":"ghashtag/t27#2097","repo":"ghashtag/t27","number":2097,"title":"sim: withdraw the value check's first result -- it was an uninitialised variable (Prop. 127b)","hits":[]},{"key":"ghashtag/t27#2096","repo":"ghashtag/t27","number":2096,"title":"rtl: the chunk-indexed repair, applied and verified both ways (Prop. 126)","hits":[]},{"key":"ghashtag/t27#2095","repo":"ghashtag/t27","number":2095,"title":"design: one units confusion with four faces, and a root cause refuted (Prop. 125)","hits":[{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"prop, one, match, never"}]}]},{"key":"ghashtag/t27#2094","repo":"ghashtag/t27","number":2094,"title":"formal: name the subject a gate exists for, and two negative results (Prop. 124)","hits":[{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"exists, prop, one, match, never"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"formal, scan, declarations, witness, gate, claims"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"replace, right, match, two, width, negative"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"match, silent, exists, gate, tree"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"three, two, str, exists, register"}]}]},{"key":"ghashtag/t27#2093","repo":"ghashtag/t27","number":2093,"title":"formal: a gate that could not see the defect it was written for (Prop. 123)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"formal, scan, bytes, valid, parse, gate, claims"}]}]},{"key":"ghashtag/t27#2092","repo":"ghashtag/t27","number":2092,"title":"design: a sixth defect, what was proved clean, and a claim I over-stated (Prop. 122)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"trit, threshold, finding, open"}]}]},{"key":"ghashtag/t27#2091","repo":"ghashtag/t27","number":2091,"title":"design: five confirmed defects — multi-layer inference deadlocks (Prop. 121)","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"trits, trit, chunk, chunks, num, mod, two, values"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"requant, boundary, trit, acc, question"}]}]},{"key":"ghashtag/t27#2090","repo":"ghashtag/t27","number":2090,"title":"design: activation_requant never flushes, and a property asserts that it doesn't (Prop. 120)","hits":[{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"yosys, prop, property, one, never"}]}]},{"key":"ghashtag/t27#2089","repo":"ghashtag/t27","number":2089,"title":"formal: closing a class that cost five waves (Prop. 119)","hits":[{"specId":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","relation":"reference","coverage":"unverified","score":1004,"reasons":[{"kind":"symbol","value":"CODE_MASK:19"},{"kind":"terms","value":"mask"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"matches, formal, scan, declarations, scope, five, gate, claims"}]}]},{"key":"ghashtag/t27#2088","repo":"ghashtag/t27","number":2088,"title":"formal: six of the ten over-detections, fixed (Prop. 118)","hits":[]},{"key":"ghashtag/t27#2087","repo":"ghashtag/t27","number":2087,"title":"formal: the 9-of-37 figure was my classifier, not the suite (Prop. 117)","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"suite, rtl, self, plus, you, formal"}]}]},{"key":"ghashtag/t27#2086","repo":"ghashtag/t27","number":2086,"title":"formal: the sweep's verdict was the sign of an exit code (Prop. 116)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"yosys, real, step, self, formal, sweep"}]},{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"verdict, zero, sign"}]}]},{"key":"ghashtag/t27#2085","repo":"ghashtag/t27","number":2085,"title":"formal: two CI steps already broken, and over-detection is universal (Props. 114-115)","hits":[{"specId":"3a5a1d0bf24c0a354559c859ce379e3fa65b8aad313da8627e341daa273d4adf","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"universal, rate, fixed, step, steps, target"}]},{"specId":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"one, steps, width, two, negative"}]}]},{"key":"ghashtag/t27#2084","repo":"ghashtag/t27","number":2084,"title":"formal: the provenance projection, and a superseded figure stated as live (Prop. 113)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"proof, formal, scope, gate, claims, live, path"}]}]},{"key":"ghashtag/t27#2083","repo":"ghashtag/t27","number":2083,"title":"formal: a gated claim and its ungated synonym, in the same document (Prop. 112)","hits":[]},{"key":"ghashtag/t27#2082","repo":"ghashtag/t27","number":2082,"title":"formal: the first instrument for the unfaithful category, and its limit (Prop. 111)","hits":[]},{"key":"ghashtag/t27#2080","repo":"ghashtag/t27","number":2080,"title":"formal: the absence sweep was starving the instruments, not the subjects (Prop. 109)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"pass, benchmark, rtl, real, tree, table, step, self"}]}]},{"key":"ghashtag/t27#2079","repo":"ghashtag/t27","number":2079,"title":"formal: the mirror compared nothing, if you asked it positionally (Prop. 108)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"trit, yields, resolved"}]},{"specId":"40fd893c2163077ca7fb00a815db13a0c8f2bbd74efc3ccb0427faad49465e5f","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"trit_full_adder:24"},{"kind":"terms","value":"full, adder, trit"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"report, matches, sum, compare, rtl, self, you, formal"}]}]},{"key":"ghashtag/t27#2078","repo":"ghashtag/t27","number":2078,"title":"formal: the taxonomy was falsified, as designed (Prop. 106)","hits":[]},{"key":"ghashtag/t27#2077","repo":"ghashtag/t27","number":2077,"title":"formal: the orphan check never checked that anything runs (Prop. 104)","hits":[{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":59,"reasons":[{"kind":"terms","value":"yosys, exists, prop, property, one, substring, never, counts"}]},{"specId":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"formal, summary, runs"}]}]},{"key":"ghashtag/t27#2076","repo":"ghashtag/t27","number":2076,"title":"formal: three defects in 48-hour-old code, and the defect taxonomy (Props. 102-103)","hits":[]},{"key":"ghashtag/t27#2074","repo":"ghashtag/t27","number":2074,"title":"formal: every decline, counted (Prop. 101)","hits":[]},{"key":"ghashtag/t27#2073","repo":"ghashtag/t27","number":2073,"title":"formal: the audit found six defects; I had fixed four (Prop. 100)","hits":[]},{"key":"ghashtag/t27#2072","repo":"ghashtag/t27","number":2072,"title":"formal: four more gate defects found by attacking them, and a measurement that reversed sign (Props. 98-99)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"proof, formal, scan, per, evidence, parse, gate, proved"}]}]},{"key":"ghashtag/t27#2071","repo":"ghashtag/t27","number":2071,"title":"formal: a guard whose members had different preconditions (Prop. 97)","hits":[]},{"key":"ghashtag/t27#2070","repo":"ghashtag/t27","number":2070,"title":"formal: -set-init-zero is not the reset state (Prop. 96)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"requant, trit, checked"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"real, state, self, reference, property, formal, properties"}]},{"specId":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"formal, reset, point"}]}]},{"key":"ghashtag/t27#2069","repo":"ghashtag/t27","number":2069,"title":"formal: an adversarial review found four holes in Prop. 92 and two gates not checking what they claimed (Props. 93-95)","hits":[{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1022,"reasons":[{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"terms","value":"trit, reached, claimed"}]}]},{"key":"ghashtag/t27#2068","repo":"ghashtag/t27","number":2068,"title":"formal: lemmas under T5, the encoding permutation as a gate, and a withdrawn conclusion (Props. 89-91)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"proof, formal, scan, evidence, gate, claims, external"}]}]},{"key":"ghashtag/t27#2067","repo":"ghashtag/t27","number":2067,"title":"formal: the six unreached primitives are an algebra, and it is now proved (Props. 86-88)","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1051,"reasons":[{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_compare:233"},{"kind":"symbol","value":"trit_and:282"},{"kind":"symbol","value":"trit_or:299"},{"kind":"symbol","value":"trit_not:326"},{"kind":"terms","value":"zero, one, trit, bits, word, bytes, ternary, multiply"}]},{"specId":"40fd893c2163077ca7fb00a815db13a0c8f2bbd74efc3ccb0427faad49465e5f","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"trit_full_adder:24"},{"kind":"terms","value":"ternary, full, adder, trit, raw, min, states, closed"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1039,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_Z:21"},{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"trit, reserved, checked, min, observed, open, question, measured"}]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"reference","coverage":"unverified","score":1035,"reasons":[{"kind":"symbol","value":"trit_compare:120"},{"kind":"terms","value":"zero, one, trit, carry, multiply, compare, min, sign"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1024,"reasons":[{"kind":"symbol","value":"trit_not:196"},{"kind":"terms","value":"trit, ternary, word, balanced, bundle, time"}]}]},{"key":"ghashtag/t27#2061","repo":"ghashtag/t27","number":2061,"title":"formal: the countdowns that enforce the tight bounds (Prop. 85)","hits":[]},{"key":"ghashtag/t27#2060","repo":"ghashtag/t27","number":2060,"title":"formal: map every growing register to whatever bounds it (Prop. 84)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":60,"reasons":[{"kind":"terms","value":"rtl, verilog, real, index, table, map, step, mean"}]}]},{"key":"ghashtag/t27#2059","repo":"ghashtag/t27","number":2059,"title":"formal: the MAC accumulator is safe because of a contract written nowhere (Prop. 83)","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1040,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"trit, zero, chunk, chunks, num, long, left, two"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"TRIT_N:20"},{"kind":"symbol","value":"TRIT_P:22"},{"kind":"terms","value":"boundary, trit, reserved, acc, question"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":95,"reasons":[{"kind":"terms","value":"reports, cells, valid, constrained, adder, tree, compute, tool"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"mac, zero, width, acc, bits, num, pipeline, dot"}]}]},{"key":"ghashtag/t27#2058","repo":"ghashtag/t27","number":2058,"title":"formal: gate declared widths against the ranges they carry (Prop. 82)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"formal, scan, declarations, per, scope, five, emitted, gate"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"declared, values, gate, tree, allow, failure, emitted, text"}]}]},{"key":"ghashtag/t27#2057","repo":"ghashtag/t27","number":2057,"title":"formal: nothing moved, and that is the finding (Prop. 81)","hits":[]},{"key":"ghashtag/t27#2056","repo":"ghashtag/t27","number":2056,"title":"formal: an exhaustive proof, a real defect, and a step that could not run (Prop. 80)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":82,"reasons":[{"kind":"terms","value":"yosys, balanced, sum, rtl, parse, real, gen, adder"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"formal, combinational, exhaustive, proof, status, compute"}]},{"specId":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"formal, cover, assume, concurrent, proof"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"proof, formal, parse, five"}]},{"specId":"752dad745fac0d7ac30994843be67a1238017536671493bdaf0bfef8fee72be2","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"steps, depth, step, proof, trit"}]}]},{"key":"ghashtag/t27#2055","repo":"ghashtag/t27","number":2055,"title":"formal: the accumulator, checked without trusting the primitive (Prop. 79)","hits":[]},{"key":"ghashtag/t27#2054","repo":"ghashtag/t27","number":2054,"title":"formal: the memory axiom, over a symbolic address (Prop. 78)","hits":[{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"addr_width:200"},{"kind":"terms","value":"memory, port, bram, read, write, addr, width"}]},{"specId":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"ADDR_WIDTH:12"},{"kind":"terms","value":"addr, width, write, read"}]},{"specId":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"addr_width:119"},{"kind":"terms","value":"depth, full, addr, width"}]},{"specId":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"addr_width:29"},{"kind":"terms","value":"width, addr, memory"}]},{"specId":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","relation":"reference","coverage":"unverified","score":1008,"reasons":[{"kind":"symbol","value":"ADDR_WIDTH:14"},{"kind":"terms","value":"width, addr"}]}]},{"key":"ghashtag/t27#2053","repo":"ghashtag/t27","number":2053,"title":"formal: the ping-pong finally has properties of its own (Prop. 77)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"write, real, index, lint, until, step, property, formal"}]},{"specId":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"level, ping, pong"}]}]},{"key":"ghashtag/t27#2052","repo":"ghashtag/t27","number":2052,"title":"formal: twenty-three modules, and six that nothing reaches (Prop. 76)","hits":[{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"trit_multiply:109"},{"kind":"symbol","value":"trit_compare:233"},{"kind":"symbol","value":"trit_and:282"},{"kind":"symbol","value":"trit_or:299"},{"kind":"symbol","value":"trit_not:326"},{"kind":"terms","value":"one, trit, per, ternary, multiply, compare, right, double"}]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"trit_compare:120"},{"kind":"terms","value":"one, trit, multiply, compare, product"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"trit_not:196"},{"kind":"terms","value":"trit, ternary, bundle"}]}]},{"key":"ghashtag/t27#2051","repo":"ghashtag/t27","number":2051,"title":"formal: properties live in two places, and one module has no file at all (Prop. 75)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"formal, scan, five, emitted, gate, claims, live"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"rtl, until, model, formal, properties"}]},{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"top, model, cost, live, one"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"prop, one"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"one, two, model"}]}]},{"key":"ghashtag/t27#2050","repo":"ghashtag/t27","number":2050,"title":"formal: twenty waves auditing the tools; this one audits the prose (Prop. 74)","hits":[{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"prop, assertions, one"}]}]},{"key":"ghashtag/t27#2049","repo":"ghashtag/t27","number":2049,"title":"formal: the campaign's most-quoted number, corrected (Prop. 73)","hits":[]},{"key":"ghashtag/t27#2048","repo":"ghashtag/t27","number":2048,"title":"formal: the gap list was measured one suite at a time (Prop. 72)","hits":[{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"measured, gaps, gap, distinct, list, form"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"detect, prop, property, one, never"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"suite, rtl, gap, formal"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"measured, zero, list, closed, per, largest"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"measured, per, top, list, state, writes"}]}]},{"key":"ghashtag/t27#2047","repo":"ghashtag/t27","number":2047,"title":"formal: the DMA data property, six waves late (Prop. 71)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"real, truth, state, step, property, contract, formal, properties"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"prop, property, one, never"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"assertion, suite, data, property"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"assertion, suite, data, property"}]}]},{"key":"ghashtag/t27#2046","repo":"ghashtag/t27","number":2046,"title":"formal: count the steps, not the properties (Prop. 70)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":65,"reasons":[{"kind":"terms","value":"pass, compliant, tree, tool, state, step, self, cross"}]}]},{"key":"ghashtag/t27#2045","repo":"ghashtag/t27","number":2045,"title":"formal: eight properties counted as proved, run by no job (Prop. 69)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"report, sized, tool, until, step, property, formal, properties"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"formal, per, emitted, complete, gate, proved"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"formal, report, prove, proved"}]}]},{"key":"ghashtag/t27#2044","repo":"ghashtag/t27","number":2044,"title":"formal: auditing the bounds, and a generalisation that did not hold (Prop. 68)","hits":[]},{"key":"ghashtag/t27#2043","repo":"ghashtag/t27","number":2043,"title":"formal: half the gate set, a phase-blind suite, and a bound that lies (Prop. 67)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"formal, probe, per, valid, scope, five, complete, gate"}]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"buffer, phase, unknown, bad, set, active"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"scope, phase, complete, set"}]},{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"scope, phase, complete, set"}]},{"specId":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"status, gate, suite"}]}]},{"key":"ghashtag/t27#2042","repo":"ghashtag/t27","number":2042,"title":"formal: the engine's 26, sampled, and a limit that does not lift (Prop. 66)","hits":[{"specId":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"CODE_MASK:19"},{"kind":"terms","value":"mask, scale, gap"}]}]},{"key":"ghashtag/t27#2041","repo":"ghashtag/t27","number":2041,"title":"formal: the last twelve properties, an inverted sweep, and one dead (Prop. 65)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":66,"reasons":[{"kind":"terms","value":"report, process, token, sized, full, self, property, formal"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"prop, property, one, always, never"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"dead, one"}]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"dead, one"}]}]},{"key":"ghashtag/t27#2040","repo":"ghashtag/t27","number":2040,"title":"formal: a verdict for every property, and none of them is dead (Prop. 64)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"write, property, formal, properties, sweep"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"prop, property, one"}]}]},{"key":"ghashtag/t27#2039","repo":"ghashtag/t27","number":2039,"title":"formal: an environment, and the three bars a property has to clear (Prop. 63)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"passed, detect, rtl, write, verilog, real, testbench, step"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"detect, prop, property, one, always, never, returns"}]},{"specId":"2dae7f68a5651636623154005f92a6e43432b46d72b3bdd45c164df2a38b961c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"property, three"}]}]},{"key":"ghashtag/t27#2038","repo":"ghashtag/t27","number":2038,"title":"formal: one of the properties had never read the design (Prop. 62)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":70,"reasons":[{"kind":"terms","value":"yosys, write, real, constraint, index, self, reference, property"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"yosys, prop, property, one, never"}]}]},{"key":"ghashtag/t27#2037","repo":"ghashtag/t27","number":2037,"title":"formal: how much of the design do 24 properties actually constrain (Prop. 61)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"score, parse, real, token, sized, tool, self, property"}]}]},{"key":"ghashtag/t27#2036","repo":"ghashtag/t27","number":2036,"title":"formal: the sweep now covers the workflow it runs inside (Prop. 60)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":66,"reasons":[{"kind":"terms","value":"pass, yosys, rtl, reports, tool, step, mean, self"}]},{"specId":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"formal, mutation, runs, failure, control"}]}]},{"key":"ghashtag/t27#2035","repo":"ghashtag/t27","number":2035,"title":"formal: measure the absence instead of looking for it (Prop. 59)","hits":[]},{"key":"ghashtag/t27#2034","repo":"ghashtag/t27","number":2034,"title":"formal: repetition witnesses, and four defects in the instruments themselves (Props. 57-58)","hits":[]},{"key":"ghashtag/t27#2033","repo":"ghashtag/t27","number":2033,"title":"formal: probe reachability of interleavings, not just activities (Prop. 56)","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"formal, probe, per, probed, witness, gate, block"}]}]},{"key":"ghashtag/t27#2032","repo":"ghashtag/t27","number":2032,"title":"Wave Loop 605 — the split lands: the ceiling is back at 80 with nothing dropped","hits":[{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"push, loop, back, end"}]},{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"dropped, loop"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"dropped, loop"}]}]},{"key":"ghashtag/t27#2031","repo":"ghashtag/t27","number":2031,"title":"Wave Loop 604 — four properties cost 75% of the proof; splitting them restores the ceiling","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"passed, rtl, write, loop, variants, constraint, tree, state"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"formal, loop, constraint, proof, prove, proved"}]}]},{"key":"ghashtag/t27#2030","repo":"ghashtag/t27","number":2030,"title":"Wave Loop 603 — the ceiling fell from 80 to 40, and the scaffolding costs 23x the design","hits":[]},{"key":"ghashtag/t27#2029","repo":"ghashtag/t27","number":2029,"title":"Wave Loop 602 — the conservation property is abandoned, and that is the result","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":66,"reasons":[{"kind":"terms","value":"passed, rtl, loop, variants, constraint, constrained, index, state"}]}]},{"key":"ghashtag/t27#2028","repo":"ghashtag/t27","number":2028,"title":"Wave Loop 601 — every assumption audited for what it removes","hits":[]},{"key":"ghashtag/t27#2027","repo":"ghashtag/t27","number":2027,"title":"Wave Loop 600 — the census, and an assumption that silently disabled two gates","hits":[]},{"key":"ghashtag/t27#2026","repo":"ghashtag/t27","number":2026,"title":"Wave Loop 599 — the datapath refactor is not worth doing, measured","hits":[]},{"key":"ghashtag/t27#2025","repo":"ghashtag/t27","number":2025,"title":"Wave Loop 598 — the read-side zero sweep finds nothing, and the properties bite","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":84,"reasons":[{"kind":"terms","value":"pass, report, passed, write, loop, variants, valid, sized"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"gate, list, unreachable, read, nothing, live"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"measured, published, zero, say, nothing"}]},{"specId":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"loop, failure, side, guard"}]}]},{"key":"ghashtag/t27#2024","repo":"ghashtag/t27","number":2024,"title":"Wave Loop 597 — closed: the fill extent now travels with the buffer","hits":[]},{"key":"ghashtag/t27#2023","repo":"ghashtag/t27","number":2023,"title":"Wave Loop 596 — the configuration was read live by a running sequencer","hits":[{"specId":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"both, read, turns, live, configured"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"reads, read, nothing, turns, live"}]}]},{"key":"ghashtag/t27#2022","repo":"ghashtag/t27","number":2022,"title":"Wave Loop 595 — the last defect is a zero-neuron read, and the fifth of its family","hits":[{"specId":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"loop, family"}]}]},{"key":"ghashtag/t27#2021","repo":"ghashtag/t27","number":2021,"title":"Wave Loop 594 — a start-time count cannot enforce a per-cycle claim","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"start, per, work, claim, failed, gate, counts"}]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"buffer, set, cycle, start, time, slot"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"per, claim, target, fresh, read, start"}]},{"specId":"cdd0a129629d3b6a0c492870d957d71610146f461af40f73df7c1a128fd285cc","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"claim, semantic, baseline, start, hash"}]},{"specId":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"per, threshold, index, cycle, time"}]}]},{"key":"ghashtag/t27#2020","repo":"ghashtag/t27","number":2020,"title":"Wave Loop 593 — attributed: the engine reads a slot it never wrote","hits":[]},{"key":"ghashtag/t27#2019","repo":"ghashtag/t27","number":2019,"title":"Wave Loop 592 — the free-property gate, and a semantic layer that did not land","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":80,"reasons":[{"kind":"terms","value":"passed, real, compare, loop, variants, cells, valid, step"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"free, label, gate, outcome"}]},{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"layer, gate, property"}]},{"specId":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"property, gate, pipeline"}]}]},{"key":"ghashtag/t27#2018","repo":"ghashtag/t27","number":2018,"title":"Wave Loop 591 — five properties proved by syntax alone, and they inflated the gate that exists to catch that","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":94,"reasons":[{"kind":"terms","value":"passed, detect, real, loop, variants, cells, contains, full"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"probe, per, five, gate, proved"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"loop, obligation, contains, prove, proved"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"read, cell, exists, exact, gate, failure, text"}]}]},{"key":"ghashtag/t27#2017","repo":"ghashtag/t27","number":2017,"title":"Wave Loop 590 — a self-comparison cannot detect an undefined value","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":85,"reasons":[{"kind":"terms","value":"passed, detect, write, verilog, loop, variants, valid, constrained"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"passed, comparison, self, loop, formal"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"self, loop, start"}]},{"specId":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"comparison, self"}]},{"specId":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"comparison, self"}]}]},{"key":"ghashtag/t27#2016","repo":"ghashtag/t27","number":2016,"title":"Wave Loop 589 — the read side, and the baseline that never existed","hits":[{"specId":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"loop, side, guard, probe"}]}]},{"key":"ghashtag/t27#2015","repo":"ghashtag/t27","number":2015,"title":"Wave Loop 588 — the MAC is 8x of the solve cost, and it is the one thing not scalable","hits":[{"specId":"eca06ff812c61e2693f706b7389c71dcd769c30dfbb2cfb958e0416a5118b404","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"solver, literal, solve, model, generate, cost"}]},{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"top, side, model, cost, one, wide"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"width, full, mac, dot, product, bram, one"}]}]},{"key":"ghashtag/t27#2014","repo":"ghashtag/t27","number":2014,"title":"Wave Loop 586 — splitting pays only when properties differ in cost","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":80,"reasons":[{"kind":"terms","value":"passed, write, real, loop, variants, map, until, step"}]}]},{"key":"ghashtag/t27#2011","repo":"ghashtag/t27","number":2011,"title":"Wave Loop 585 — two suites were never bounded at all","hits":[]},{"key":"ghashtag/t27#2010","repo":"ghashtag/t27","number":2010,"title":"Wave Loop 584 — a batch verdict is the minimum of its parts","hits":[]},{"key":"ghashtag/t27#2009","repo":"ghashtag/t27","number":2009,"title":"Wave Loop 583 — the scale ceiling: \"proved\" is a claim about (design, scale)","hits":[{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"loop, proof, proved"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"passed, rtl, scale, loop"}]},{"specId":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"loop, about"}]}]},{"key":"ghashtag/t27#2007","repo":"ghashtag/t27","number":2007,"title":"Wave Loop 582 — the last open defect closes: right idea, wrong shape","hits":[{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"state, open, known, shape, valid, write, record"}]}]},{"key":"ghashtag/t27#2004","repo":"ghashtag/t27","number":2004,"title":"Wave Loop 580 — the instrument was broken, and fixing it found the defect","hits":[]},{"key":"ghashtag/t27#2000","repo":"ghashtag/t27","number":2000,"title":"Wave Loop 577 — gate adequacy: 13 of 13 gates bite","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"zero, size, chunks, negate, num, two, back"}]},{"specId":"b4ea36c976d78efe1add7b0ec95018c0f01877755c257dac8482eeb7576f1909","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"gates, zero, gate"}]}]},{"key":"ghashtag/t27#1998","repo":"ghashtag/t27","number":1998,"title":"Wave Loop 576 — the document recording these proofs was itself unchecked evidence","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"zero, chunks, num, two"}]},{"specId":"bc197d64c27828950663c4af278f4f13fb522eddad5c105d1630aad61d997098","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"docs, evidence, document"}]},{"specId":"57e060a9c073ed08dfbd814acf779965d92f2cb75d21615ed4e65f39b294f3df","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"loop, evidence, work"}]}]},{"key":"ghashtag/t27#1997","repo":"ghashtag/t27","number":1997,"title":"Wave Loop 575 — zero-sized-request sweep: a 2–2 policy split, and a retraction","hits":[{"specId":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"num_chunks:273"},{"kind":"terms","value":"zero, chunk, size, chunks, num, left, two"}]},{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:21"},{"kind":"terms","value":"num, layers, layer, mean, weight, zero"}]},{"specId":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:12"},{"kind":"terms","value":"size, num, layers, length"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":101,"reasons":[{"kind":"terms","value":"passed, rtl, write, reports, loop, variants, verify, sized"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"policy, global, idle, complete, find, request, execute"}]}]},{"key":"ghashtag/t27#1996","repo":"ghashtag/t27","number":1996,"title":"Wave Loop 574 — first cross-layer property proves; second refutes and is gated open","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":106,"reasons":[{"kind":"terms","value":"passed, write, verilog, real, reports, loop, variants, tree"}]},{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"read, layer, gate, property, table"}]},{"specId":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"net, cross, layer, layers, set"}]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"cross, layer, layers"}]}]},{"key":"ghashtag/t27#1995","repo":"ghashtag/t27","number":1995,"title":"Wave Loop 573 — liveness audit: interlocks constrain without stalling; 19/19 guards reachable","hits":[{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"wave, audit"}]}]},{"key":"ghashtag/t27#1993","repo":"ghashtag/t27","number":1993,"title":"Wave Loop 572 — DMA interlock closed after four waves; all 17 integration properties prove","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":113,"reasons":[{"kind":"terms","value":"yosys, passed, rtl, write, verilog, real, reports, loop"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"formal, loop, prove"}]}]},{"key":"ghashtag/t27#1992","repo":"ghashtag/t27","number":1992,"title":"Wave Loop 571 — DMA interlock diagnosed: quiescence is unobservable from the top","hits":[]},{"key":"ghashtag/t27#1990","repo":"ghashtag/t27","number":1990,"title":"Wave Loop 570 — busy becomes a state register; interlock made symmetric; one property still open","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":97,"reasons":[{"kind":"terms","value":"pass, yosys, passed, rtl, write, real, loop, variants"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"state, open, key, blocked, shape, valid, may, write"}]},{"specId":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"top, mac, data, state, busy, set, start"}]},{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"integration, busy, data, state, required, memory"}]},{"specId":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"integration, busy, data, state, required, memory"}]}]},{"key":"ghashtag/t27#1989","repo":"ghashtag/t27","number":1989,"title":"Wave Loop 569 — DMA wired: 10/10 modules integrated; layer 0 had no input path; interlock open","hits":[{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"path, position, direct, data, loop"}]},{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"path, position, direct, data, loop"}]},{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"modules, open"}]}]},{"key":"ghashtag/t27#1987","repo":"ghashtag/t27","number":1987,"title":"Wave Loop 568 — AXI-Lite aperture wired; config becomes CSRs; 9 of 10 modules integrated","hits":[{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:21"},{"kind":"terms","value":"num, layers, layer, weight, activation, over"}]},{"specId":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","relation":"reference","coverage":"unverified","score":1013,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:12"},{"kind":"terms","value":"num, layers, wire"}]},{"specId":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","relation":"candidate","coverage":"unverified","score":71,"reasons":[{"kind":"terms","value":"axi4, axi, bus, ports, burst, config, port, lite"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"config, port, verilog, modules, ports, wire, top, matches"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"config, port, verilog, modules, ports, wire, top, matches"}]}]},{"key":"ghashtag/t27#1984","repo":"ghashtag/t27","number":1984,"title":"Wave Loop 566 — host path wired, tie-offs retired; weight-BRAM overlap recorded as open","hits":[{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:21"},{"kind":"terms","value":"num, layers, layer, weights, weight"}]},{"specId":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"NUM_LAYERS:12"},{"kind":"terms","value":"num, layers, wire, length"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"system, layers, required, path, engine, overlap, external, model"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"read, buffer, valid, exact, channel, overlap, host, failure"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"memory, rtl, open, read, weight, model, text"}]}]},{"key":"ghashtag/t27#1983","repo":"ghashtag/t27","number":1983,"title":"Wave Loop 565 — activation loop closed; use_buffer_a was connected and never consumed","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"activation, consume, rtl, reset, per, word, start, buffer"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"activation, consume, rtl, reset, per, word, start, buffer"}]}]},{"key":"ghashtag/t27#1981","repo":"ghashtag/t27","number":1981,"title":"Wave Loop 564 — layer-boundary requantizer; 2'b11 proved unreachable; activation fork now a port","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":59,"reasons":[{"kind":"terms","value":"len, suite, passed, compute, rtl, scale, ternary, loop"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"format, required, activations, invalid, forbidden, too, port, trits"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"format, required, activations, invalid, forbidden, too, port, trits"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"formal, fork, standalone, required, emitted, proved, path, block"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"formal, loop, contains, substring, proved, compute"}]}]},{"key":"ghashtag/t27#1980","repo":"ghashtag/t27","number":1980,"title":"Wave Loop 563 — datapath wired; first multi-module proof; a property that did not bite","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":115,"reasons":[{"kind":"terms","value":"yosys, passed, latency, rtl, verilog, real, reports, loop"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"formal, loop, proof, proved, compute"}]}]},{"key":"ghashtag/t27#1979","repo":"ghashtag/t27","number":1979,"title":"Wave Loop 562 — BitNet v2 validates ternary weights; the real gap is that 6 of 9 blocks are unwired","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":121,"reasons":[{"kind":"terms","value":"yosys, passed, sum, rtl, verilog, real, reports, loop"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"precision, suite, passed, sum, compute, rtl, scale, ternary"}]},{"specId":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"net, passed, bit, accurate, real, metric"}]},{"specId":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"net, engine, blocks, block, threshold, find"}]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"passed, bit, accurate, real, metric"}]}]},{"key":"ghashtag/t27#1976","repo":"ghashtag/t27","number":1976,"title":"Wave Loop 560 — vacuity audit: 19/19 guards reachable, 6/6 witnesses refute, 0 vacuous","hits":[{"specId":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"status_read:183"},{"kind":"terms","value":"width, carry, read, write, status, mask"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":101,"reasons":[{"kind":"terms","value":"yosys, passed, rtl, write, real, reports, loop, variants"}]},{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"wave, audit"}]}]},{"key":"ghashtag/t27#1974","repo":"ghashtag/t27","number":1974,"title":"Wave Loop 559 — sat ignores $assume without -set-assumes; anomaly resolved, flow self-checks","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":109,"reasons":[{"kind":"terms","value":"pass, compliant, yosys, passed, rtl, verilog, real, loop"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":55,"reasons":[{"kind":"terms","value":"len, suite, passed, rtl, self, ternary, loop, you"}]},{"specId":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"set, tool, both, handshake, live, self"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"self, bytes, loop"}]}]},{"key":"ghashtag/t27#1972","repo":"ghashtag/t27","number":1972,"title":"Wave Loop 558 — AXI4 slave model; arlen-at-handshake anomaly recorded as open","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":93,"reasons":[{"kind":"terms","value":"yosys, passed, rtl, write, real, loop, variants, constraint"}]},{"specId":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"axi4, axi, ports, addr, width, len, burst, slave"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"rtl, work, open, read, weight, model"}]}]},{"key":"ghashtag/t27#1970","repo":"ghashtag/t27","number":1970,"title":"Wave Loop 557 — dma_controller abandoned bursts and advanced on ready-without-valid","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":90,"reasons":[{"kind":"terms","value":"yosys, passed, rtl, write, real, loop, variants, constraint"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"state, open, abandoned, ready, shape, valid, may, write"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"formal, bytes, valid, required, gate, proved, path, upstream"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"valid, bit, activation, width, rtl, ready, encoded"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"valid, bit, activation, width, rtl, ready, encoded"}]}]},{"key":"ghashtag/t27#1965","repo":"ghashtag/t27","number":1965,"title":"Wave Loop 554 — sv2v deletes assertions; Yosys-checkable subset emitter + vacuity gate","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":134,"reasons":[{"kind":"terms","value":"report, yosys, passed, generate, rtl, verilog, parse, real"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":69,"reasons":[{"kind":"terms","value":"yosys, status, generate, property, emit, sva, assertions, one"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"formal, required, assertions, parse, emitted, gate, upstream, accepts"}]}]},{"key":"ghashtag/t27#1963","repo":"ghashtag/t27","number":1963,"title":"Wave Loop 553 — gates reach a fresh clone; one Rust implementation replaces three disagreeing shells","hits":[{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"rust, path, loop"}]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, three"}]}]},{"key":"ghashtag/t27#1962","repo":"ghashtag/t27","number":1962,"title":"Wave Loop 552 — SVA was never parseable by any tool; formal foundations documented","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":141,"reasons":[{"kind":"terms","value":"tasks, yosys, passed, rtl, write, verilog, parse, real"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"yosys, prop, property, sva, one, always, never, counts"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"evaluate, suite, passed, rtl, ternary, plus, loop, you"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"formal, loop, constraint, proof, contains, prove, proved"}]},{"specId":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"loop, tool, variant, about"}]}]},{"key":"ghashtag/t27#1961","repo":"ghashtag/t27","number":1961,"title":"Wave Loop 551 — seal re-baseline 0/496 to 496/496; seal_file_path was not injective","hits":[{"specId":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/ml/transformer/feed_forward.t27"},{"kind":"terms","value":"transformer, feed, forward, intermediate"}]},{"specId":"f6130cb4fb3292dcf0c8a59031b018b2078fb1add5260b24a1f651af62834312","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"specs/ml/transformer/feed_forward_network.t27"},{"kind":"terms","value":"transformer, feed, forward, network"}]},{"specId":"fb3c41eaf46f08d7fe6f5403a39fd0bfac635513f191898ff20ec67f2fdf76a7","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/tri/math/constants.t27"},{"kind":"terms","value":"math, constants, path"}]},{"specId":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","relation":"reference","coverage":"unverified","score":2014,"reasons":[{"kind":"path","value":"specs/math/constants.t27"},{"kind":"terms","value":"math, constants, measured"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"reference","coverage":"unverified","score":1026,"reasons":[{"kind":"symbol","value":"spec_path:50"},{"kind":"terms","value":"path, dir, build, seal"}]}]},{"key":"ghashtag/t27#1956","repo":"ghashtag/t27","number":1956,"title":"Wave Loop 550 — three CI jobs were echo statements; seal gate resolved the wrong file","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, triformat, bit, base, one, canonical"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"specs/base/types.t27"},{"kind":"terms","value":"base, tritype, one, per, bit"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, triformat, bit, base, one"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":82,"reasons":[{"kind":"terms","value":"yosys, passed, real, loop, variants, statements, gen, tool"}]}]},{"key":"ghashtag/t27#1954","repo":"ghashtag/t27","number":1954,"title":"Wave Loop 549 — CLARA coverage regenerated over 496 specs; 730 seals verify 0","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":2024,"reasons":[{"kind":"path","value":"specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, triformat, zero, bit, one, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"tt-trinity-euler/specs/numeric/gf16.t27"},{"kind":"terms","value":"numeric, gf16, triformat, zero, bit, one"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":97,"reasons":[{"kind":"terms","value":"yosys, passed, write, verilog, parse, subprocess, real, reports"}]}]},{"key":"ghashtag/t27#1951","repo":"ghashtag/t27","number":1951,"title":"Wave Loop 548 — positioning audit: name the real competitors, unbreak scripts/tri, three W549 variants","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":129,"reasons":[{"kind":"terms","value":"yosys, passed, generate, rtl, parse, real, reports, synthesis"}]},{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"wave, audit"}]}]},{"key":"ghashtag/t27#1948","repo":"ghashtag/t27","number":1948,"title":"gen-verilog TB long tails: typed let-locals get no reg declaration; unsized concat operands; 'Syntax error defining function' class","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":65,"reasons":[{"kind":"terms","value":"pass, compile, score, verilog, icarus, assign, valid, gen"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"runtime, valid, gen, compile, zig, verilog"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"byte, reg, operand, concat, bind"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"verilog, score, syntax, wire"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"verilog, score, syntax, wire"}]}]},{"key":"ghashtag/t27#1928","repo":"ghashtag/t27","number":1928,"title":"zig-test execution level: 37/69 tri-net gens pass; three finding classes in the rest","hits":[{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"migration, classes, finding, findings, runtime"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"three, two, exists, finding, findings"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"net, pass, assert, branch, skipped"}]},{"specId":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"net, running, real, pass, packet"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"net, syntax, unused, pass"}]}]},{"key":"ghashtag/t27#1919","repo":"ghashtag/t27","number":1919,"title":"gen-c: validity campaign -- 64/68 -> 8/68 invalid; eight long-tails remain","hits":[]},{"key":"ghashtag/t27#1901","repo":"ghashtag/t27","number":1901,"title":"feat(igla): Wave Loop 899 — module-scope [617][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"bit, two, read, call, field"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, power, two, zero"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, signed, grid, make"}]}]},{"key":"ghashtag/t27#1882","repo":"ghashtag/t27","number":1882,"title":"gen-rust: four codegen defects surfaced by tri-net's repaired spec-drift-guard","hits":[{"specId":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"tri-net/specs/traffic_animator.t27"},{"kind":"symbol","value":"create_packet_color:130"},{"kind":"terms","value":"net, traffic, animator, create, packet, path, color"}]},{"specId":"f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","relation":"reference","coverage":"unverified","score":2028,"reasons":[{"kind":"path","value":"tri-net/specs/multipath_router.t27"},{"kind":"symbol","value":"select_path_index:13"},{"kind":"terms","value":"net, multipath, router, path, select, index"}]},{"specId":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"tri-net/specs/mesh_routing.t27"},{"kind":"terms","value":"net, mesh, routing"}]},{"specId":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","relation":"reference","coverage":"unverified","score":1037,"reasons":[{"kind":"symbol","value":"create_packet_color:130"},{"kind":"terms","value":"rust, mesh, traffic, animator, create, packet, path, color"}]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"select_path_index:13"},{"kind":"terms","value":"rust, mesh, multipath, router, path, select, index"}]}]},{"key":"ghashtag/t27#1857","repo":"ghashtag/t27","number":1857,"title":"feat(igla): Wave Loop 897 — module-scope [613][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"bit, two, read, call, field"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, power, two, zero"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, signed, grid, make"}]}]},{"key":"ghashtag/t27#1855","repo":"ghashtag/t27","number":1855,"title":"feat(igla): Wave Loop 896 — module-scope [611][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"bit, two, read, call, field"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, power, two, zero"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, signed, grid, make"}]}]},{"key":"ghashtag/t27#1853","repo":"ghashtag/t27","number":1853,"title":"feat(igla): Wave Loop 895 — module-scope [609][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"bit, two, read, call, field"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, power, two, zero"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, signed, grid, make"}]}]},{"key":"ghashtag/t27#1851","repo":"ghashtag/t27","number":1851,"title":"feat(igla): Wave Loop 894 — module-scope [607][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"compiler, boundary, field, call, struct, array"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"bit, two, read, call, field"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, power, two, zero"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, signed, grid, make"}]}]},{"key":"ghashtag/t27#1848","repo":"ghashtag/t27","number":1848,"title":"feat(igla): Wave Loop 893 — module-scope [605][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"compiler, field, index, call, inner, struct, array"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"igla, inner, power, two, zero, width, per"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bits, bit, two, read, call, field"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"igla, inner, loop, index, step"}]}]},{"key":"ghashtag/t27#1845","repo":"ghashtag/t27","number":1845,"title":"feat(igla): Wave Loop 892 — module-scope [603][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"compiler, field, index, call, inner, struct, array"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"igla, inner, power, two, zero, width, per"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bits, bit, two, read, call, field"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"igla, inner, loop, index, step"}]}]},{"key":"ghashtag/t27#1843","repo":"ghashtag/t27","number":1843,"title":"feat(igla): Wave Loop 891 — module-scope [601][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"compiler, field, index, call, inner, struct, array"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"igla, inner, power, two, zero, width, per"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bits, bit, two, read, call, field"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"igla, inner, loop, index, step"}]}]},{"key":"ghashtag/t27#1841","repo":"ghashtag/t27","number":1841,"title":"Wave Loop 890 — module-scope [599][2]^6 Pt non-power-of-two outer-dimension array-of-struct variable from call with indexed signed writes","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"compiler, parse, field, call, struct, array"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dimension, compiler, call, loop, back"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"pass, parse, power, two, zero, width"}]},{"specId":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bits, bit, two, read, call, field"}]},{"specId":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"zero, dimension, non"}]}]},{"key":"ghashtag/t27#1811","repo":"ghashtag/t27","number":1811,"title":"Wave Loop 882 — module-scope [583][2]^6 Pt packed AoS variable from call with indexed signed writes","hits":[{"specId":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"compiler, scope, init, push, signed, literal"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"dimension, compiler, init, push, call, loop"}]}]},{"key":"ghashtag/t27#1781","repo":"ghashtag/t27","number":1781,"title":"suite: parse phase is superlinear, making `t27c suite` unrunnable on specs/scratch (12.4M lines)","hits":[{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"specs/igla/race/backend.t27"},{"kind":"terms","value":"igla, race, backend, parse, literal, repeated, per"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"reference","coverage":"unverified","score":2020,"reasons":[{"kind":"path","value":"specs/igla/race/rtl.t27"},{"kind":"terms","value":"igla, race, rtl, verilog, gen"}]},{"specId":"ff49a27495a6de1e3fa7c6a16ed855385c7f772a67591d593199659d5387f814","relation":"reference","coverage":"unverified","score":2019,"reasons":[{"kind":"path","value":"specs/igla/coder/weights.t27"},{"kind":"terms","value":"igla, coder, weights, parse"}]},{"specId":"364119169fe8fa59b9f2ddc0edbcfd00bff4dc1e37af6b7626f40f093360f490","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"suite, phase, parse, gen, zig, verilog, seal, fixed"}]}]},{"key":"ghashtag/t27#1773","repo":"ghashtag/t27","number":1773,"title":"gap: .t27 has no cross-module imports for user functions — every spec re-defines the ternary primitives","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"real, adder, ternary, full, cross"}]},{"specId":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"functions, cross, similar"}]},{"specId":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"functions, cross, similar"}]},{"specId":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"negate, ternary, gap"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"user, gap"}]}]},{"key":"ghashtag/t27#1726","repo":"ghashtag/t27","number":1726,"title":"test: bitnet_top asserts stale contract (busy + mem tie-off) vs current gen-bitnet-engine-top","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"real, assign, gen, model, contract"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"contract, stale, may, confirm"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"pipeline, contract, build, top, generator"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"pipeline, contract, build, top, generator"}]},{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"top, assign, mem, masked"}]}]},{"key":"ghashtag/t27#1697","repo":"ghashtag/t27","number":1697,"title":"[PLAN] t27 improvement plan — drain wave-loop noise, finish the codegen backend, harden conformance","hits":[{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"codegen, verilog, memory, fifo, gf16, generic, hir, conformance"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"codegen, gen, zig, verilog, rust, conformance, bench"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"memory, drain, stream, finish, done"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"codegen, zig, target, sub, bench, conformance"}]},{"specId":"57e060a9c073ed08dfbd814acf779965d92f2cb75d21615ed4e65f39b294f3df","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"loop, owner, canonical, backend, evidence, package"}]}]},{"key":"ghashtag/t27#1676","repo":"ghashtag/t27","number":1676,"title":"conformance: corpus split across two incompatible pack schemas; 10 narrow rungs have no independent oracle","hits":[{"specId":"fe6ff2cc8fb17534f6cbd181a4af31750729533339cbf99889aff1a06bd09151","relation":"reference","coverage":"unverified","score":1003,"reasons":[{"kind":"symbol","value":"abs_error:387"},{"kind":"terms","value":"abs"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"split, hex, two, per"}]},{"specId":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"bits, bias, two, pack, abs"}]},{"specId":"df74b541158c71d5463152e377813a5491def4207dbffe97f6fd78b23cf6d4d9","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"corpus, wide, pack"}]},{"specId":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"per, corpus, split"}]}]},{"key":"ghashtag/t27#1458","repo":"ghashtag/t27","number":1458,"title":"Wave Loop 500 — close the last documented Icarus baseline by lowering local AOS element field access","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"reports, loop, variants, icarus"}]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"field, baseline, element"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"field, baseline, element"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"field, local"}]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"close, field"}]}]},{"key":"ghashtag/t27#1453","repo":"ghashtag/t27","number":1453,"title":"chore(specs): propose ecosystem-tier subdirectory layout under specs/","hits":[]},{"key":"ghashtag/t27#1448","repo":"ghashtag/t27","number":1448,"title":"Wave Loop 472 — select one of three cooperation variants and close the wave","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"pass, report, yosys, reports, loop, variants, ternary, board"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"one, per, ternary, select"}]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, three"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"select, one"}]}]},{"key":"ghashtag/t27#1447","repo":"ghashtag/t27","number":1447,"title":"Wave Loop 473 — compiler-backend aggregate tail / live cold-POR CCLK sweep","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"pass, report, yosys, reports, loop, variants, ternary, board"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"per, witness, required, compiler, evidence, scope, gate, live"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"report, suite, aggregate, ternary, plus, loop, pass, matrix"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"default, compiler, loop"}]},{"specId":"57e060a9c073ed08dfbd814acf779965d92f2cb75d21615ed4e65f39b294f3df","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"loop, backend, evidence"}]}]},{"key":"ghashtag/t27#1446","repo":"ghashtag/t27","number":1446,"title":"fix(igla): add Digilent FTDI cable support to cli/dlc10","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"igla, cli, real, loop, tree, hardware, state"}]}]},{"key":"ghashtag/t27#1442","repo":"ghashtag/t27","number":1442,"title":"chore(igla): clean stale agent worktrees and preserve real changes","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"igla, real, loop, contains, state, remove"}]}]},{"key":"ghashtag/t27#1433","repo":"ghashtag/t27","number":1433,"title":"Wave Loop 460 — select one of three cooperation variants and close the wave","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":74,"reasons":[{"kind":"terms","value":"multiple, pass, report, reports, loop, variants, statements, ternary"}]},{"specId":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, ternary, select"}]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, three"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"select, one"}]}]},{"key":"ghashtag/t27#1420","repo":"ghashtag/t27","number":1420,"title":"Wave Loop 446 — Variant B default: diff gate golden vs expected_report.json + timing dashboard","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"pass, report, verilog, reports, loop, variants, gen, ternary"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"report, len, suite, aggregate, ternary, loop, pass, matrix"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"default, report, per, hard, dashboard, live, gate, allowed"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"pass, expected, suite, branch, aggregate, summary, report"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"pass, expected, suite, branch, aggregate, summary, report"}]}]},{"key":"ghashtag/t27#1290","repo":"ghashtag/t27","number":1290,"title":"feat(fpga): quad-mode flash-boot diagnostics and tri CLI hardening","hits":[]},{"key":"ghashtag/t27#1288","repo":"ghashtag/t27","number":1288,"title":"feat(fpga): SPI flash program/dump and boot-from-flash mode-pin resolution","hits":[{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"board, spi, pin, verify"}]},{"specId":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"board, spi, pin"}]},{"specId":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"board, spi, pin"}]},{"specId":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"board, spi, pin"}]},{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"mode, resolution"}]}]},{"key":"ghashtag/t27#1286","repo":"ghashtag/t27","number":1286,"title":"feat(fpga): tri CLI integration for openXC7 GF16 flow","hits":[]},{"key":"ghashtag/t27#1284","repo":"ghashtag/t27","number":1284,"title":"EPIC: Master-alignment of trinity-rust-rings (224 commits, 300 files diverged)","hits":[]},{"key":"ghashtag/t27#1282","repo":"ghashtag/t27","number":1282,"title":"Wave Loop 392 — 312 generic ∀, integration-branch policy doc, 575/575 PASS","hits":[{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"rings, rust, failure, pass, suite, branch, branches"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"igla, coder, pass, reports, loop, ternary, model"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"igla, coder, suite, ternary, loop, pass"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"failure, pass, suite, branch, branches"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, coder, build, policy, integration"}]}]},{"key":"ghashtag/t27#1276","repo":"ghashtag/t27","number":1276,"title":"Wave Loop 383 — 276 generic ∀, extend array/RAM lowering to ROM/array-literal and function-local arrays","hits":[{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"shift, literal, array, local, var"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"variable, array, arrays, var"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"variable, array, arrays, var"}]},{"specId":"3fafd9ae6b4b9d4b0907a4335ae37b99a2e320927ee2481fc851323a5ec436b6","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"literal, identity, array"}]}]},{"key":"ghashtag/t27#1274","repo":"ghashtag/t27","number":1274,"title":"Wave Loop 382 — 272 generic ∀, array/RAM lowering prototype","hits":[]},{"key":"ghashtag/t27#1272","repo":"ghashtag/t27","number":1272,"title":"Wave Loop 381 — 268 generic ∀ target + slot-aware tuple-return call lowering","hits":[{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"read, call, generic, cancellation, evidence"}]},{"specId":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"functions, target, calls, call, report"}]},{"specId":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"functions, target, calls, call, report"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"call, calls, target, read"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"call, loop"}]}]},{"key":"ghashtag/t27#1270","repo":"ghashtag/t27","number":1270,"title":"Wave Loop 380 — IGLA CODER+RACE + tuple-return generation start","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"igla, coder, verilog, loop, full"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"igla, race, loop, proof"}]},{"specId":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"igla, race, backend, start, zero"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"igla, race, generation"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"igla, coder, loop"}]}]},{"key":"ghashtag/t27#1265","repo":"ghashtag/t27","number":1265,"title":"Wave Loop 376 — IGLA CODER+RACE + retry board flash + gen-verilog as/&/|/^/~ width correctness + CI smoke gate","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":170,"reasons":[{"kind":"terms","value":"igla, coder, pass, report, yosys, balanced, match, detect"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":126,"reasons":[{"kind":"terms","value":"igla, coder, report, competitor, matches, match, suite, rtl"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":104,"reasons":[{"kind":"terms","value":"igla, coder, port, decode, fallback, match, verilog, correctness"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":104,"reasons":[{"kind":"terms","value":"igla, coder, port, decode, fallback, match, verilog, correctness"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":85,"reasons":[{"kind":"terms","value":"igla, coder, model, apply, weight, scalar, top, llm"}]}]},{"key":"ghashtag/t27#1264","repo":"ghashtag/t27","number":1264,"title":"Wave Loop 375 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix (early-return if-else chaining)","hits":[{"specId":"a3927bcab311e42d982b0667bf8b946da6c1bdb147d65a24985997700486ee36","relation":"reference","coverage":"unverified","score":1029,"reasons":[{"kind":"symbol","value":"cordic_top:20"},{"kind":"terms","value":"igla, race, cordic, top, batch"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":196,"reasons":[{"kind":"terms","value":"igla, coder, pass, report, yosys, balanced, sum, detect"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":133,"reasons":[{"kind":"terms","value":"igla, coder, report, competitor, suite, synth, sum, rtl"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":90,"reasons":[{"kind":"terms","value":"igla, coder, sum, apply, weight, scalar, slices, weights"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":80,"reasons":[{"kind":"terms","value":"igla, coder, port, fallback, verilog, synth, build, top"}]}]},{"key":"ghashtag/t27#1263","repo":"ghashtag/t27","number":1263,"title":"Wave Loop 374 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":77,"reasons":[{"kind":"terms","value":"igla, coder, report, verilog, loop, variants, gen, ternary"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"igla, coder, report, ternary, plus, loop, mass"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"igla, coder, fallback, verilog, wire, integration"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"igla, coder, fallback, verilog, wire, integration"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, invariants, escape, invariant"}]}]},{"key":"ghashtag/t27#1262","repo":"ghashtag/t27","number":1262,"title":"Wave Loop 373 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":74,"reasons":[{"kind":"terms","value":"igla, coder, report, verilog, loop, variants, gen, hardware"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"igla, coder, report, plus, loop, mass"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"compiler, gen, verilog, invariants, escape, invariant"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, fallback, verilog, integration"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, fallback, verilog, integration"}]}]},{"key":"ghashtag/t27#1261","repo":"ghashtag/t27","number":1261,"title":"Wave Loop 372 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":74,"reasons":[{"kind":"terms","value":"igla, coder, report, verilog, loop, variants, gen, hardware"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"igla, coder, report, plus, loop, mass"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"igla, coder, fallback, verilog, keyword, integration"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"igla, coder, fallback, verilog, keyword, integration"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"igla, race, verilog, gen"}]}]},{"key":"ghashtag/t27#1260","repo":"ghashtag/t27","number":1260,"title":"Wave Loop 371 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"igla, coder, verilog, loop, gen, ternary, board"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, ternary, plus, loop"}]},{"specId":"2b88d314726a5a5cc6cec95471fdc759b53013883ea59ef5bba73b655297453e","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"igla, race, ternary, zero, one, phi, weight"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"igla, race, verilog, gen"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"board, idcode, flash, weight"}]}]},{"key":"ghashtag/t27#1259","repo":"ghashtag/t27","number":1259,"title":"Wave Loop 370 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":93,"reasons":[{"kind":"terms","value":"igla, coder, pass, report, yosys, verilog, reports, loop"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"igla, coder, report, ternary, plus, loop, pass, mass"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"wukong, board, idcode, cable, flash, weight"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"gen, conformance, branch, seal, verilog, load, invariant, backend"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"igla, race, target, verilog, gen, emit"}]}]},{"key":"ghashtag/t27#1258","repo":"ghashtag/t27","number":1258,"title":"gen-verilog: incremental array/RAM lowering for datapath specs (fifo/memory)","hits":[{"specId":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","relation":"reference","coverage":"unverified","score":2015,"reasons":[{"kind":"path","value":"specs/fpga/fifo.t27"},{"kind":"terms","value":"fifo, config, validate"}]},{"specId":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/fpga/memory.t27"},{"kind":"terms","value":"memory, mem, validate"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":71,"reasons":[{"kind":"terms","value":"match, rtl, verilog, parse, real, loop, gen, ternary"}]},{"specId":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","relation":"candidate","coverage":"unverified","score":68,"reasons":[{"kind":"terms","value":"compiler, codegen, verilog, uart, spi, mac, bridge, memory"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"compiler, validate, validation, gen, skill, branch, verilog, block"}]}]},{"key":"ghashtag/t27#1257","repo":"ghashtag/t27","number":1257,"title":"Wave Loop 369 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":80,"reasons":[{"kind":"terms","value":"igla, coder, pass, yosys, verilog, reports, loop, variants"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"wukong, board, idcode, flash, weight"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"igla, coder, plus, loop, pass"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"igla, race, target, verilog, gen"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, coder, weight, verify, depth, pass"}]}]},{"key":"ghashtag/t27#1256","repo":"ghashtag/t27","number":1256,"title":"Wave Loop 368 — IGLA CODER+RACE + retry board flash + one safe gen-verilog fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":77,"reasons":[{"kind":"terms","value":"igla, coder, pass, verilog, reports, loop, variants, verify"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"wukong, board, idcode, flash, weight"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"igla, coder, plus, loop, pass"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"igla, race, target, verilog, gen"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"igla, coder, variants, full, regenerate"}]}]},{"key":"ghashtag/t27#1253","repo":"ghashtag/t27","number":1253,"title":"Wave Loop 367 — IGLA CODER+RACE + retry board flash + one safe gen-verilog fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":77,"reasons":[{"kind":"terms","value":"igla, coder, pass, verilog, reports, loop, variants, verify"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"wukong, board, idcode, flash, weight"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"igla, coder, plus, loop, pass"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"igla, race, target, verilog, gen"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"igla, coder, variants, full, regenerate"}]}]},{"key":"ghashtag/t27#1252","repo":"ghashtag/t27","number":1252,"title":"Wave Loop 366 — IGLA CODER+RACE + retry board flash + one safe gen-verilog sub-fix","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":72,"reasons":[{"kind":"terms","value":"igla, coder, report, verilog, loop, variants, gen, ternary"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"igla, coder, report, ternary, plus, loop"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"igla, race, verilog, gen"}]},{"specId":"2b88d314726a5a5cc6cec95471fdc759b53013883ea59ef5bba73b655297453e","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, race, ternary, zero, one, weight"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"wukong, board, flash, weight"}]}]},{"key":"ghashtag/t27#1251","repo":"ghashtag/t27","number":1251,"title":"Wave Loop 365 — IGLA CODER+RACE + retry board flash + gen-verilog weak-point triage","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":72,"reasons":[{"kind":"terms","value":"igla, coder, report, verilog, loop, variants, gen, ternary"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"igla, race, verilog, gen"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, coder, report, ternary, loop"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"wukong, board, flash, weight"}]},{"specId":"364119169fe8fa59b9f2ddc0edbcfd00bff4dc1e37af6b7626f40f093360f490","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"gen, verilog, point"}]}]},{"key":"ghashtag/t27#1249","repo":"ghashtag/t27","number":1249,"title":"Wave Loop 364 — IGLA CODER+RACE + retry board flash + gen-verilog weak-point probe","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"igla, coder, report, verilog, loop, variants, gen, board"}]},{"specId":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"igla, race, verilog, gen"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"wukong, board, flash, weight"}]},{"specId":"364119169fe8fa59b9f2ddc0edbcfd00bff4dc1e37af6b7626f40f093360f490","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"gen, verilog, point"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"igla, coder, report, loop"}]}]},{"key":"ghashtag/t27#1246","repo":"ghashtag/t27","number":1246,"title":"Wave Loop 362 — IGLA CODER+RACE + board flash of first OpenXC7 ternary MAC bitstream","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"igla, coder, verilog, loop, verify, ternary, board, bitstream"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"wukong, board, flash, weight"}]},{"specId":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, weight"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, coder, weight, top, verify, depth"}]},{"specId":"25c264ef6a580c0f8e95234a7bb4175d440e72138d4fff0e90027ab3ccb9efc0","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, zero"}]}]},{"key":"ghashtag/t27#1242","repo":"ghashtag/t27","number":1242,"title":"Wave Loop 361 — IGLA CODER+RACE + OpenXC7 toolchain install and first ternary MAC bitstream","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"igla, coder, pass, generate, loop, ternary, toolchain, bitstream"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, ternary, loop, pass"}]},{"specId":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, weight"}]},{"specId":"25c264ef6a580c0f8e95234a7bb4175d440e72138d4fff0e90027ab3ccb9efc0","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, zero"}]},{"specId":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"igla, race, toolchain, generate"}]}]},{"key":"ghashtag/t27#1241","repo":"ghashtag/t27","number":1241,"title":"Wave Loop 360 — IGLA CODER+RACE + OpenXC7 ternary MAC bitstream attempt","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"igla, coder, pass, loop, ternary, bitstream"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, ternary, loop, pass"}]},{"specId":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, weight"}]},{"specId":"25c264ef6a580c0f8e95234a7bb4175d440e72138d4fff0e90027ab3ccb9efc0","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, zero"}]},{"specId":"2b88d314726a5a5cc6cec95471fdc759b53013883ea59ef5bba73b655297453e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"igla, race, ternary, zero, weight"}]}]},{"key":"ghashtag/t27#1240","repo":"ghashtag/t27","number":1240,"title":"Wave Loop 359 — IGLA CODER+RACE + ternary MAC synthesis","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"igla, coder, pass, yosys, verilog, synthesis, loop, ternary"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"igla, coder, ternary, synthesis, loop, pass"}]},{"specId":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, weight"}]},{"specId":"25c264ef6a580c0f8e95234a7bb4175d440e72138d4fff0e90027ab3ccb9efc0","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, race, ternary, mac, zero"}]},{"specId":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, coder, pass, synthesis"}]}]},{"key":"ghashtag/t27#1239","repo":"ghashtag/t27","number":1239,"title":"Wave Loop 358 — IGLA CODER+RACE","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"igla, coder, loop, pass"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"igla, coder, pass, loop"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"igla, coder, weight, pass"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"igla, coder, regenerate"}]},{"specId":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"igla, race, loop"}]}]},{"key":"ghashtag/t27#1219","repo":"ghashtag/t27","number":1219,"title":"[EPIC] t27 Language Roadmap: 12 workstreams (R-TT completion -> Trinity provenance)","hits":[{"specId":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"ternary_mac:42"},{"kind":"terms","value":"ternary, mac, weight, mul"}]},{"specId":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"language, lang, zig, json, completion, template, extension"}]}]},{"key":"ghashtag/t27#1215","repo":"ghashtag/t27","number":1215,"title":"[conformance] Promote gf10 and gf256 to bitexact_selfconsistent (WP-34)","hits":[{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"catalog, gf16, gf10, gf14, gf256, shared"}]}]},{"key":"ghashtag/t27#1041","repo":"ghashtag/t27","number":1041,"title":"[IGLA-Coder] P8 Integration into t27 and publication","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":56,"reasons":[{"kind":"terms","value":"igla, coder, tasks, benchmark, write, verilog, gen, tool"}]},{"specId":"3e203c4b90a1ef1483c84320fe17cee7a366467c3f49dfb90d785467cc48b5a1","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"igla, integration, publication, integrate, coder"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, verilog, integration, loss"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, verilog, integration, loss"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, coder, model, apply, draft"}]}]},{"key":"ghashtag/t27#1040","repo":"ghashtag/t27","number":1040,"title":"[IGLA-Coder] P7 Low-bit / ternary track (parallel, optional)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"igla, coder, tasks, pass, latency, float, ternary, full"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"igla, coder, precision, training, efficiency, goldenfloat, ternary, pass"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"status, done, ternary, bit, parallel"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"igla, coder, model, forward, pass"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"igla, coder, full, accuracy"}]}]},{"key":"ghashtag/t27#1039","repo":"ghashtag/t27","number":1039,"title":"[IGLA-Coder] P6 Scale-up to deployable 0.5B-1.5B (budget-gated)","hits":[{"specId":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"igla, coder, sft, tokens, execution, verified, compute"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"igla, coder, eval, tasks, real, compute, model"}]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"igla, coder, scale, compute, 10k"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"igla, coder, compute, scale, eval"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"igla, coder, model, scale, compute"}]}]},{"key":"ghashtag/t27#1038","repo":"ghashtag/t27","number":1038,"title":"[IGLA-Coder] P5 Multi-language evaluation harness","hits":[{"specId":"da869f75b0e66b078c82ff9989a637e2e81426f78d2ede00b74df9da126c18b5","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"igla, evaluation, multi, harness, eval, benchmark"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"igla, coder, eval, tasks, pass, benchmark, report, generate"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"igla, coder, model, rate, scale, generate, llm, pass"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"igla, coder, benchmark, report, scale, eval, pass"}]},{"specId":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"igla, coder, bench, eval, benchmark, pass"}]}]},{"key":"ghashtag/t27#1037","repo":"ghashtag/t27","number":1037,"title":"[IGLA-Coder] P4 Pilot pretraining at 50-200M","hits":[{"specId":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"igla, coder, stage, pretrain, tokens, size, execution, verified"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"igla, coder, eval, tasks, languages, pass, report, quality"}]},{"specId":"051e8c6f568d660831950ec89c3148aa9219001db41877d1606d6ad5c019c53f","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"igla, pilot, pretraining, model, size, config, train"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"igla, coder, params, size, model, config, compute, best"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"igla, coder, report, compute, train, eval, pass"}]}]},{"key":"ghashtag/tri-net#384","repo":"ghashtag/tri-net","number":384,"title":"trust_manager: four spec test assertions that cannot pass against the generated code","hits":[{"specId":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","relation":"reference","coverage":"unverified","score":2093,"reasons":[{"kind":"path","value":"tri-net/specs/trust_manager.t27"},{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"symbol","value":"create_trust_score:14"},{"kind":"symbol","value":"create_trust_relationship:40"},{"kind":"symbol","value":"get_trust_verified:59"},{"kind":"symbol","value":"create_trust_array:66"},{"kind":"symbol","value":"get_trust_score:70"},{"kind":"symbol","value":"calculate_trust_score:78"},{"kind":"symbol","value":"update_trust_score:90"},{"kind":"symbol","value":"find_most_trusted:118"},{"kind":"symbol","value":"should_route_via_node:166"},{"kind":"terms","value":"trust, manager, nodes, threshold, low, score, create, node"}]},{"specId":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","relation":"reference","coverage":"unverified","score":1096,"reasons":[{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"symbol","value":"create_trust_score:14"},{"kind":"symbol","value":"create_trust_relationship:38"},{"kind":"symbol","value":"get_trust_verified:57"},{"kind":"symbol","value":"create_trust_array:62"},{"kind":"symbol","value":"get_trust_score:73"},{"kind":"symbol","value":"calculate_trust_score:85"},{"kind":"symbol","value":"update_trust_score:97"},{"kind":"symbol","value":"find_most_trusted:125"},{"kind":"symbol","value":"should_route_via_node:173"},{"kind":"terms","value":"rust, trust, manager, nodes, threshold, low, score, create"}]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","relation":"reference","coverage":"unverified","score":1058,"reasons":[{"kind":"symbol","value":"recover_to_stmt_boundary:238"},{"kind":"terms","value":"parser, node, brace, recover, stmt, boundary, parse, expr"}]},{"specId":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","relation":"reference","coverage":"unverified","score":1049,"reasons":[{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"terms","value":"rust, manager, nodes, threshold, trust, create, node, calculate"}]},{"specId":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","relation":"reference","coverage":"unverified","score":1045,"reasons":[{"kind":"symbol","value":"MAX_NODES:7"},{"kind":"terms","value":"manager, nodes, threshold, trust, create, node, calculate, find"}]}]},{"key":"ghashtag/tri-net#383","repo":"ghashtag/tri-net","number":383,"title":"EPIC: what the 2026-08-19 session surfaced — a red gate no branch causes, a missing silicon artefact, and four numbers a buyer asks for","hits":[{"specId":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","relation":"reference","coverage":"unverified","score":2032,"reasons":[{"kind":"path","value":"tri-net/specs/tri_depin.t27"},{"kind":"symbol","value":"epoch_seal:51"},{"kind":"terms","value":"net, depin, epoch, seal, verify, bytes, verified"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":138,"reasons":[{"kind":"terms","value":"buyer, runs, plain, completion, dry, session, per, work"}]},{"specId":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"session, measured, gate, data, scoped, self, probe, per"}]}]},{"key":"ghashtag/tri-net#381","repo":"ghashtag/tri-net","number":381,"title":"GF-T16 multiply: correct RTL, correct netlist, wrong bitstream through openXC7's DSP path","hits":[{"specId":"2d9ab503fe27887ed2f276cca7e093e3e017547d591f875a457a69bd58647f01","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"gft_mul:14"},{"kind":"symbol","value":"gft_add:33"},{"kind":"terms","value":"gft, mul, dot4"}]},{"specId":"4e80040a11ab6ae72d46b8d4487959caa396ddde34d00ebe15ecef1f4bbbb9ed","relation":"reference","coverage":"unverified","score":1012,"reasons":[{"kind":"symbol","value":"gft_mul:16"},{"kind":"symbol","value":"gft_add:35"},{"kind":"terms","value":"gft, dot4, mul"}]},{"specId":"35a33a43c6ba2669c285f757c838ae44d8cd5028598ff7912370383a41ee7133","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"gft_mul:16"},{"kind":"symbol","value":"gft_add:35"},{"kind":"terms","value":"gft, mul"}]},{"specId":"b99c892c8a0fdcd11528ddd0ca8d52d8646e0c9b1ce420ae16610e8ede3de5c4","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"gft_mul:19"},{"kind":"symbol","value":"gft_add:41"},{"kind":"terms","value":"gft, mul"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":111,"reasons":[{"kind":"terms","value":"igla, pass, yosys, rtl, write, verilog, reports, synthesis"}]}]},{"key":"ghashtag/tri-net#101","repo":"ghashtag/tri-net","number":101,"title":"build: build.rs rewrites tracked gen/ every build vs no-gen-edits hook — self-contradictory (R1)","hits":[{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"build, exit, options, untracked, generated, tracked, runs"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"generate, gen, tree, state, self, cross, model, architecture"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"path, gen, dir, build, branch, generate, block"}]}]},{"key":"ghashtag/tri-net#96","repo":"ghashtag/tri-net","number":96,"title":"Three binaries and one test fail to build: excluded from the build until fixed","hits":[{"specId":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"tri-net/specs/video_bridge.t27"},{"kind":"symbol","value":"fb_util_pct:81"},{"kind":"terms","value":"video, bridge, data, mesh, util, rate, pct"}]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"rust, mesh, pass, fail, fixed"}]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"pass, fail, fixed"}]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, three"}]}]},{"key":"ghashtag/tri-net#87","repo":"ghashtag/tri-net","number":87,"title":"demo: end-to-end PhoneA → P203 → radio → P203 → PhoneB video","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"net, call, mesh, video, send, target, end, start"}]}]},{"key":"ghashtag/tri-net#86","repo":"ghashtag/tri-net","number":86,"title":"feat(phone): Android port via Kotlin Multiplatform or Skip.tools","hits":[]},{"key":"ghashtag/tri-net#85","repo":"ghashtag/tri-net","number":85,"title":"feat(phone): real topology query — replace mock with TOPO_REQ/RESP","hits":[{"specId":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"node_count:65"},{"kind":"terms","value":"nodes, node"}]},{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"protocol, response, parse, req, resp"}]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"status, response, info, req, resp"}]},{"specId":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"status, response, resp, req"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"phone, query"}]}]},{"key":"ghashtag/tri-net#84","repo":"ghashtag/tri-net","number":84,"title":"test(mesh): trios_meshd_video on P203 Mini — 2 board bridge test","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"mesh, video, send, target, peer, create"}]},{"specId":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"video, bridge, out, mesh, packet"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"compile, verify, board, cross, bridge"}]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"mesh, board, create, packet, dst"}]}]},{"key":"ghashtag/tri-net#83","repo":"ghashtag/tri-net","number":83,"title":"feat(phone): H.264 decode on iOS — VTDecompressionSession + Metal display","hits":[]},{"key":"ghashtag/tri-net#82","repo":"ghashtag/tri-net","number":82,"title":"🎯 EPIC: TRI-NET Phone Video Mesh — phone camera → mesh radio → phone display","hits":[{"specId":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"tri-net/specs/video_bridge.t27"},{"kind":"terms","value":"net, video, bridge, port, mesh, fragment"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"net, mesh, video, per, end, bounded, status, session"}]}]},{"key":"ghashtag/tri-net#76","repo":"ghashtag/tri-net","number":76,"title":"Competitor wave 2026-07-11 — segment map, 9-col comparison, moat mapping","hits":[{"specId":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"is_fresh:38"},{"kind":"terms","value":"net, mac, hello, fresh"}]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"is_fresh:166"},{"kind":"terms","value":"net, gf16, fresh"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"report, competitor, compute, comparison, ternary, axis, pass, labs"}]},{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"mapping, map"}]}]},{"key":"ghashtag/tri-net#74","repo":"ghashtag/tri-net","number":74,"title":"📋 Execution Plan 2026-07-11 · consolidated merge-order (5 waves -> one ordered plan; #60 unblocks all)","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"path, merge, one, audit"}]},{"specId":"031a4a295e848f75a59247991f0f074e203d34b4521a2c5f2f5ac511b3095739","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"order, guard, plan"}]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"plan, execution"}]},{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"order, identity, one"}]}]},{"key":"ghashtag/tri-net#72","repo":"ghashtag/tri-net","number":72,"title":"🌊 Wave 2026-07-11 v3 · audit of 9 previously unaudited modules — anomaly spike-sentinel suppresses all spikes (P1) + flow_control credit underflow (P1) + quarantine 8-bit timer (P2)","hits":[{"specId":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","relation":"reference","coverage":"unverified","score":2053,"reasons":[{"kind":"path","value":"tri-net/specs/flow_control.t27"},{"kind":"symbol","value":"update_credits:37"},{"kind":"symbol","value":"MSG_CREDIT_UPDATE:137"},{"kind":"terms","value":"flow, control, window, credit, backpressure, credits, msg, total"}]},{"specId":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","relation":"reference","coverage":"unverified","score":2038,"reasons":[{"kind":"path","value":"tri-net/specs/multipath_routing.t27"},{"kind":"symbol","value":"distribute_load:146"},{"kind":"terms","value":"multipath, routing, paths, path, flow, distribute, load"}]},{"specId":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"tri-net/specs/anomaly_detector.t27"},{"kind":"symbol","value":"TYPE_SPIKE:62"},{"kind":"terms","value":"anomaly, detector, window, report, spike"}]},{"specId":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","relation":"reference","coverage":"unverified","score":2035,"reasons":[{"kind":"path","value":"tri-net/specs/quarantine_manager.t27"},{"kind":"symbol","value":"QUARANTINE_DURATION:8"},{"kind":"terms","value":"quarantine, manager, duration, start, time, health"}]},{"specId":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","relation":"reference","coverage":"unverified","score":2025,"reasons":[{"kind":"path","value":"tri-net/specs/adaptive_routing.t27"},{"kind":"terms","value":"adaptive, routing, paths, path, load, score"}]}]},{"key":"ghashtag/tri-net#70","repo":"ghashtag/tri-net","number":70,"title":"🌊 Wave 2026-07-11 v2 · wire/CI-CD/seal/deep-modem audit — modem sync not normalized (P1) + inert seal + unpinned toolchain (P2)","hits":[{"specId":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","relation":"reference","coverage":"unverified","score":1041,"reasons":[{"kind":"symbol","value":"SYNC_THRESHOLD:21"},{"kind":"terms","value":"net, modem, frame, peak, sync, threshold"}]},{"specId":"b03d87fec868d2aa28f16a77d0dc77dd068c98b1443f9a2408896c72d4a3c227","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"SYNC_THRESHOLD:25"},{"kind":"terms","value":"zero, sync, threshold, frame"}]},{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"wave, audit"}]}]},{"key":"ghashtag/tri-net#68","repo":"ghashtag/tri-net","number":68,"title":"🌊 Wave 2026-07-11 · beacon-auth inert on RX (P1) + hello.t27 ghost spec (P1) + self_healing cooldown truncation (P2)","hits":[{"specId":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","relation":"reference","coverage":"unverified","score":2049,"reasons":[{"kind":"path","value":"tri-net/specs/self_healing.t27"},{"kind":"terms","value":"net, self, healing, cooldown, attempt, recover"}]},{"specId":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","relation":"reference","coverage":"unverified","score":2017,"reasons":[{"kind":"path","value":"tri-net/specs/hello.t27"},{"kind":"terms","value":"net, hello, byte"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"symbol","value":"calc_etx:55"},{"kind":"terms","value":"net, etx, calc"}]},{"specId":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","relation":"reference","coverage":"unverified","score":1028,"reasons":[{"kind":"symbol","value":"is_fresh:38"},{"kind":"terms","value":"net, discovery, mac, hello, fresh"}]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"is_fresh:166"},{"kind":"terms","value":"net, data, fresh, width"}]}]},{"key":"ghashtag/tri-net#66","repo":"ghashtag/tri-net","number":66,"title":"🌊 Wave 2026-07-10 v2 · audit of poorly covered modules: routing feasibility (P1) + TTL/CFO/GF16 (P2)","hits":[{"specId":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","relation":"reference","coverage":"unverified","score":1019,"reasons":[{"kind":"symbol","value":"is_feasible:74"},{"kind":"terms","value":"net, routing, feasible"}]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"rust, routing, ttl, net"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"modules, gf16, bit, phi"}]},{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"wave, audit"}]},{"specId":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"net, routing, ttl"}]}]},{"key":"ghashtag/tri-net#62","repo":"ghashtag/tri-net","number":62,"title":"t27-first migration feasibility map: what src/ can (and cannot) become .t27 specs","hits":[{"specId":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","relation":"reference","coverage":"unverified","score":2031,"reasons":[{"kind":"path","value":"tri-net/specs/wire.t27"},{"kind":"terms","value":"net, wire, mesh, hello, header, valid, byte, u32"}]},{"specId":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"tri-net/specs/m3_multihop.t27"},{"kind":"terms","value":"net, multihop, byte, perf, counters, state"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"gf16_add:314"},{"kind":"terms","value":"numeric, gf16, phi, encode, f32, sub"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"gf16_add:314"},{"kind":"terms","value":"numeric, gf16, phi, encode, f32, sub"}]},{"specId":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"gf16_add:40"},{"kind":"terms","value":"gf16, phi, mac"}]}]},{"key":"ghashtag/tri-net#61","repo":"ghashtag/tri-net","number":61,"title":"Spec bugs surfaced by t27 #1456+#1457 codegen fixes (were masked while modules never compiled)","hits":[{"specId":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","relation":"reference","coverage":"unverified","score":2033,"reasons":[{"kind":"path","value":"tri-net/specs/multipath_routing.t27"},{"kind":"symbol","value":"MIN_PATHS:9"},{"kind":"symbol","value":"PATH_VALID:10"},{"kind":"symbol","value":"is_multipath_viable:86"},{"kind":"terms","value":"multipath, routing, paths, min, path, valid, array, viable"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2022,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"symbol","value":"ONE_FP:11"},{"kind":"symbol","value":"fp_mul:33"},{"kind":"terms","value":"etx, dead, one, alpha, mul"}]},{"specId":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","relation":"reference","coverage":"unverified","score":1036,"reasons":[{"kind":"symbol","value":"MIN_PATHS:9"},{"kind":"symbol","value":"PATH_VALID:10"},{"kind":"symbol","value":"is_multipath_viable:87"},{"kind":"terms","value":"rust, multipath, routing, paths, min, path, valid, array"}]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","relation":"reference","coverage":"unverified","score":1025,"reasons":[{"kind":"symbol","value":"ONE_FP:11"},{"kind":"symbol","value":"fp_mul:33"},{"kind":"terms","value":"rust, etx, dead, one, alpha, mul"}]},{"specId":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","relation":"reference","coverage":"unverified","score":1014,"reasons":[{"kind":"symbol","value":"PATH_VALID:9"},{"kind":"terms","value":"rust, paths, path, valid"}]}]},{"key":"ghashtag/tri-net#58","repo":"ghashtag/tri-net","number":58,"title":"🌊 Wave 2026-07-10 · P0: main has not built since 2026-07-07 + weakness map + 3 tracks","hits":[{"specId":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"is_fresh:38"},{"kind":"terms","value":"mac, hello, fresh"}]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"is_fresh:166"},{"kind":"terms","value":"fresh"}]}]},{"key":"ghashtag/tri-net#17","repo":"ghashtag/tri-net","number":17,"title":"🌊 Wave Loop Report 2026-07-03 · external audit + 3 lanes for next wave","hits":[{"specId":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","relation":"reference","coverage":"unverified","score":2021,"reasons":[{"kind":"path","value":"tri-net/specs/wire.t27"},{"kind":"terms","value":"net, wire, hello, header, frame"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":80,"reasons":[{"kind":"terms","value":"claims, fast, path, state, external, days, decision, full"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":79,"reasons":[{"kind":"terms","value":"pass, report, log, handle, real, loop, metric, verify"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"report, self, autonomous, loop, pass, driven, golden"}]},{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"wave, audit, min"}]}]},{"key":"ghashtag/tri-net#16","repo":"ghashtag/tri-net","number":16,"title":"feat: rewrite the mesh from Rust to T27 (.t27 spec-first), incremental module-by-module","hits":[{"specId":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","relation":"reference","coverage":"unverified","score":2034,"reasons":[{"kind":"path","value":"tri-net/specs/wire.t27"},{"kind":"terms","value":"net, wire, mesh, hello, header, frame, byte, parse"}]},{"specId":"b03d87fec868d2aa28f16a77d0dc77dd068c98b1443f9a2408896c72d4a3c227","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/fpga/bpsk.t27"},{"kind":"terms","value":"bpsk, dsp, per, byte, bit, frame"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"reference","coverage":"unverified","score":2018,"reasons":[{"kind":"path","value":"tri-net/specs/etx.t27"},{"kind":"terms","value":"net, etx, mesh, one"}]}]},{"key":"ghashtag/tri-net#15","repo":"ghashtag/tri-net","number":15,"title":"feat(mesh) P1: radio-Transport -> end-to-end mesh-over-modem (streaming RX + meshd integration), host-testable","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"net, mesh, idle, retry, delay, per, decision, end"}]},{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"mesh, integration, simulation, idle, step, sync"}]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"mesh, phy, transport, sync, increment"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"transport, method, channel, gate, host"}]},{"specId":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"host, left, end, decision"}]}]},{"key":"ghashtag/tri-net#14","repo":"ghashtag/tri-net","number":14,"title":"feat(mesh) P2: trios-mesh M5 self-healing re-route + convergence metric (DEMO GATE)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":117,"reasons":[{"kind":"terms","value":"tasks, pass, report, latency, log, real, metric, float"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":62,"reasons":[{"kind":"terms","value":"self, routes, gate, route, through, real, turns, table"}]},{"specId":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","relation":"candidate","coverage":"unverified","score":55,"reasons":[{"kind":"terms","value":"mesh, nodes, metrics, interval, threshold, metric, node, latency"}]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"mesh, hardware, validation, simulation, real, pass, capture, metric"}]},{"specId":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","relation":"candidate","coverage":"unverified","score":47,"reasons":[{"kind":"terms","value":"mesh, self, healing, recovery, failure, nodes, links"}]}]},{"key":"ghashtag/tri-net#13","repo":"ghashtag/tri-net","number":13,"title":"feat(mesh) P2: trios-mesh M4 — share ONE uplink across 3-node triangle (DEMO GATE)","hits":[{"specId":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"mesh, flow, share, active"}]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"gate, nodes, node, field"}]},{"specId":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"mesh, share, bit"}]}]},{"key":"ghashtag/tri-net#12","repo":"ghashtag/tri-net","number":12,"title":"feat(mesh) P1: trios-mesh M3 — iperf3 over 2 hops through attenuators (P1 exit gate)","hits":[{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"self, gate, route, through, real, confirms, table, runs"}]},{"specId":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"mesh, hop, node, throughput, latency, packet, loss, iperf3"}]},{"specId":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"mesh, nodes, hops, node, packet, payload, route, path"}]},{"specId":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"mesh, nodes, hops, node, packet, payload, route, path"}]},{"specId":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"mesh, routing, metric, latency, hops, path"}]}]},{"key":"ghashtag/tri-net#11","repo":"ghashtag/tri-net","number":11,"title":"feat(mesh) P1: trios-mesh M2 — TUN/netdev IP-over-radio with real ETX metric","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":96,"reasons":[{"kind":"terms","value":"tasks, pass, compile, write, parse, log, real, reports"}]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"mesh, hardware, simulation, bit, board, real, pass, dst"}]},{"specId":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"net, hardware, simulation, bit, board, real, pass, dst"}]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"mesh, cross, phy, window, counter, target, metric"}]},{"specId":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"mesh, routing, metric, hops, path, selection, best"}]}]},{"key":"ghashtag/tri-net#10","repo":"ghashtag/tri-net","number":10,"title":"feat(mesh) P1: scaffold trios-mesh repo + M1 X25519/ChaCha20 on real ARM (Mini)","hits":[{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"mesh, hardware, running, bit, board, real, create, pass"}]}]},{"key":"ghashtag/tri-net#9","repo":"ghashtag/tri-net","number":9,"title":"feat(fpga) P1: AD9361 5.8GHz TX/RX + OFDM PHY (single-carrier fallback)","hits":[{"specId":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"fallback, measured, gate, per, carrier"}]}]},{"key":"ghashtag/tri-net#8","repo":"ghashtag/tri-net","number":8,"title":"feat(fpga) P0: boot ARM-Linux on Mini xc7z020 + confirm AD9361/GPS/PPS","hits":[]},{"key":"ghashtag/tri-net#7","repo":"ghashtag/tri-net","number":7,"title":"feat(fpga) P0: Zynq-7020 Mini toolchain bring-up + adopt proven AX7203 flow as baseline","hits":[{"specId":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"scan_chain:18"},{"kind":"terms","value":"scan, chain, jtag"}]}]},{"key":"ghashtag/tri-net#6","repo":"ghashtag/tri-net","number":6,"title":"docs(skill): create on-disk tri-net skill (honest Phase-0 status)","hits":[{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":84,"reasons":[{"kind":"terms","value":"net, docs, sections, references, create, format, section, tag"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":82,"reasons":[{"kind":"terms","value":"mesh, docs, sections, references, create, format, section, tag"}]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"status, report, returns, per, work, claim, state, markers"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"net, nodes, create, node, link, state, phase, apply"}]},{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"mesh, nodes, create, node, link, state, phase, apply"}]}]},{"key":"ghashtag/tri-net#5","repo":"ghashtag/tri-net","number":5,"title":"feat(fpga) P0: sanity-verify the connected AX7203 via existing OpenOCD/AL321 flow","hits":[{"specId":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","relation":"reference","coverage":"unverified","score":1017,"reasons":[{"kind":"symbol","value":"scan_chain:18"},{"kind":"terms","value":"scan, chain, jtag"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"measured, out, existing, rate, rule, confirm, per, unit"}]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"verify, open, measured"}]}]},{"key":"ghashtag/tri-net#4","repo":"ghashtag/tri-net","number":4,"title":"chore(fpga): de-hardcode AUTO_FLASH.sh foreign paths + parameterize cable","hits":[{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"board, jtag, cable, cables, flash, per"}]}]},{"key":"ghashtag/tri-net#3","repo":"ghashtag/tri-net","number":3,"title":"docs(fpga): fix IDCODE.md 100T/200T mislabel + reconcile over-claimed FLASH_HISTORY","hits":[{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"boards, board, part, family, jtag, idcode, flash, per"}]}]},{"key":"ghashtag/tri-net#2","repo":"ghashtag/tri-net","number":2,"title":"fix(skill): correct fpga-synth SKILL.md hardcoded path + wrong board target","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":59,"reasons":[{"kind":"terms","value":"tasks, real, verify, tree, hardware, compute, synth, toolchain"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"user, matches, live, path, board, blocked, block"}]},{"specId":"2d3563e302746a958794670cd14404a7c4e6854dcf546468dd5f91907ff299e4","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"skills, synth, skill"}]},{"specId":"45ece51f52ec529802e387903a06b3fc58f3dcc088823785511c924c57567c32","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"skills, board, skill"}]}]},{"key":"ghashtag/tri-net#1","repo":"ghashtag/tri-net","number":1,"title":"🎯 EPIC · feat(mesh): TRI-NET mesh bring-up (Phase 0–2)","hits":[{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"mesh, create, node, link, phase, target, latency, route"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"net, create, node, link, phase, target, latency, route"}]}]},{"key":"ghashtag/trinity#1020","repo":"ghashtag/trinity","number":1020,"title":"Blog from merged PR #1019","hits":[]},{"key":"ghashtag/trinity#1017","repo":"ghashtag/trinity","number":1017,"title":"Blog from merged PR #1016","hits":[]},{"key":"ghashtag/trinity#1015","repo":"ghashtag/trinity","number":1015,"title":"Blog from merged PR #1014","hits":[]},{"key":"ghashtag/trinity#1012","repo":"ghashtag/trinity","number":1012,"title":"Blog from merged PR #1011","hits":[]},{"key":"ghashtag/trinity#1009","repo":"ghashtag/trinity","number":1009,"title":"Blog from merged PR #1008","hits":[]},{"key":"ghashtag/trinity#1007","repo":"ghashtag/trinity","number":1007,"title":"Blog from merged PR #1006","hits":[]},{"key":"ghashtag/trinity#1005","repo":"ghashtag/trinity","number":1005,"title":"Blog from merged PR #1004","hits":[]},{"key":"ghashtag/trinity#1003","repo":"ghashtag/trinity","number":1003,"title":"Blog from merged PR #1002","hits":[]},{"key":"ghashtag/trinity#1001","repo":"ghashtag/trinity","number":1001,"title":"[skill] trinity/blog-post","hits":[{"specId":"028f49b8d26ed69b4f8db6991666a5f51b9a2c2737291ceb3258bfd11ff7c3e7","relation":"reference","coverage":"unverified","score":2048,"reasons":[{"kind":"path","value":"specs/skills/trinity-blog-post.t27"},{"kind":"terms","value":"skills, blog, post, skill, summary, tags, timeout, min"}]}]},{"key":"ghashtag/trinity#1000","repo":"ghashtag/trinity","number":1000,"title":"EPIC: Make the public QUEEN board repository-aware for TurboBaby and future worlds","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":145,"reasons":[{"kind":"terms","value":"turbobaby, user, bot, publication, proof, world, canonical, owner"}]},{"specId":"f3c12d757eeb1ad37aacee0baa3c81e2bfe4905d0e799e3f778cae267324f043","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"pages, public, worlds, per, world"}]}]},{"key":"ghashtag/trinity#999","repo":"ghashtag/trinity","number":999,"title":"[skill] trinity/status","hits":[{"specId":"09185d50913f410e9c5cdd3338d2fd38adb97f0997208c6440c89b2325268b9c","relation":"reference","coverage":"unverified","score":2027,"reasons":[{"kind":"path","value":"specs/skills/trinity-status.t27"},{"kind":"terms","value":"skills, status, skill, summary, tags, timeout, min"}]}]},{"key":"ghashtag/trinity#998","repo":"ghashtag/trinity","number":998,"title":"Blog from merged PR #997","hits":[]},{"key":"ghashtag/trinity#989","repo":"ghashtag/trinity","number":989,"title":"[spec][Trinity S12] Consume canonical t27 contracts and prove clean-clone project reproduction","hits":[{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":76,"reasons":[{"kind":"terms","value":"project, consumer, pinned, revision, profile, evidence, canonical, zig"}]}]},{"key":"ghashtag/trinity#988","repo":"ghashtag/trinity","number":988,"title":"EPIC: Recreate Trinity from executable t27 specifications and verified project contracts","hits":[]},{"key":"ghashtag/trinity#890","repo":"ghashtag/trinity","number":890,"title":"Turn the Queen dashboard into a one-screen strategy cabinet","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":50,"reasons":[{"kind":"terms","value":"game, status, may, turn, state, dashboard, live, counts"}]}]},{"key":"ghashtag/trinity#810","repo":"ghashtag/trinity","number":810,"title":"Eighteen workflows have never succeeded — 8182 runs, zero green","hits":[{"specId":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","relation":"candidate","coverage":"unverified","score":45,"reasons":[{"kind":"terms","value":"queen, path, owner, runs, dispatch, actions, workflows, total"}]}]},{"key":"ghashtag/trinity#616","repo":"ghashtag/trinity","number":616,"title":"CI: main has no build.zig matching its own source tree (2217 files vs a build script from March)","hits":[{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"zig, main, git, commit, branch, exists, summary"}]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"project, build, zig, skill, branch, load"}]},{"specId":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"time, build, matching"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"build, zig, generated, runs"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"project, zig, build"}]}]},{"key":"ghashtag/trinity#604","repo":"ghashtag/trinity","number":604,"title":"chore(spec): propose organism .tri specs (mozg + dna) upstream in t27","hits":[]},{"key":"ghashtag/trinity#601","repo":"ghashtag/trinity","number":601,"title":"Exposed API credential found in this repository","hits":[{"specId":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"api, found"}]}]},{"key":"ghashtag/trinity#588","repo":"ghashtag/trinity","number":588,"title":"feat(fpga): add trinity-fpga as submodule + XVC WiFi JTAG flash pipeline","hits":[{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"jtag, flash"}]}]},{"key":"ghashtag/trinity-fpga#792","repo":"ghashtag/trinity-fpga","number":792,"title":"В specs/ четыре разных языка под расширением .tri (72 не-YAML спеки)","hits":[]},{"key":"ghashtag/trinity-fpga#791","repo":"ghashtag/trinity-fpga","number":791,"title":"brain-ci: stress_test.zig не компилируется — Registry потерял поле claims","hits":[{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"compile, zig, registry, branch"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"registry, resolve, claims"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zig, branch, registry"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"zig, registry"}]}]},{"key":"ghashtag/trinity-fpga#770","repo":"ghashtag/trinity-fpga","number":770,"title":"token_rotator writes to a read-only log handle; devops_tools no longer surfaces child stderr","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"control, token, fallback, api, event, read, terminal, create"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"write, log, handle, token, stdout"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"handle, read, found, large"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"handle, read, found, large"}]},{"specId":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"event, options, handle, read"}]}]},{"key":"ghashtag/trinity-fpga#768","repo":"ghashtag/trinity-fpga","number":768,"title":"brain-ci gates on tri stress --health, a NotImplemented stub — 47 runs, none passing","hits":[{"specId":"c8cd980319751e2b53501dc645f1beb6980bdbf77adbb98a158a12be441d957e","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"brain, runs"}]},{"specId":"0044630e40dc2673a2d1210e848f1a3cd41cc2b21b541bec98e305f0192a2de7","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"health, runs"}]},{"specId":"a3b21a33a8a8022b527e3f46362fb6df63fb6f2e5ee642a439d88862dd4722f3","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"health, runs"}]},{"specId":"b1bf93d0a864129e5c53a03b96cfe5d52069b5b65a7472dcef61a58cd6b87e1f","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"health, runs"}]},{"specId":"b5bd1483d24af17707d8fcf03dbb6f011bc8462773423ebe9b8ee4e506a76a4e","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"health, runs"}]}]},{"key":"ghashtag/trinity-fpga#767","repo":"ghashtag/trinity-fpga","number":767,"title":"build.zig declares trinity_workspace with no .imports, so it cannot reach any shim","hits":[{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"runtime, path, dir, build, zig"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"zig, unreachable, build"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"zig, imports"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"build, zig"}]}]},{"key":"ghashtag/trinity-fpga#766","repo":"ghashtag/trinity-fpga","number":766,"title":"1020 remaining 0.15-era call sites live outside the tri binary","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"tool, per, call, live"}]}]},{"key":"ghashtag/trinity-fpga#765","repo":"ghashtag/trinity-fpga","number":765,"title":"Code generators still emit Zig 0.15 APIs as string literals, so regenerated code will not build","hits":[{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"gen, compile, build, zig, timestamp, generate"}]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"codegen, gen, generate, zig, emit"}]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"codegen, zig, generate, emit"}]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"build, zig, generated"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"zig, build"}]}]},{"key":"ghashtag/trinity-fpga#762","repo":"ghashtag/trinity-fpga","number":762,"title":"EPIC: Gates that are green by construction — five found, two remaining","hits":[]},{"key":"ghashtag/trinity-fpga#761","repo":"ghashtag/trinity-fpga","number":761,"title":"EPIC: Zig 0.16 migration — what remains after #758, #759, #760","hits":[]},{"key":"ghashtag/trinity-fpga#740","repo":"ghashtag/trinity-fpga","number":740,"title":"The arXiv comments field claims 679 checks; the script reports 536, and fails","hits":[{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"open, read, text, case, field, checks, json"}]},{"specId":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"reports, field, script, json"}]},{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"field, case, checks, size"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"field, case, checks, size"}]}]},{"key":"ghashtag/trinity-fpga#736","repo":"ghashtag/trinity-fpga","number":736,"title":"audit_lut_table.py is genuinely over the ratchet's 120 s on the runner, not flaky","hits":[{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"lut, gate, table"}]},{"specId":"c0dbf24327e983c97c167b05ffd70525c35b60d03481d3aee9fec2c7eda45291","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"lut, table"}]},{"specId":"f1d6d26bfc285aecc914fd4f89104ad5b8bbfa57ad8f1685ccdc065049190478","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"lut, table"}]}]},{"key":"ghashtag/trinity-fpga#730","repo":"ghashtag/trinity-fpga","number":730,"title":"The paper's headline hardware claim is still post-synthesis, while the silicon flow exists","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":77,"reasons":[{"kind":"terms","value":"pass, report, yosys, real, synthesis, verify, adder, hardware"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"path, model, full, per, decode, silicon, claim"}]},{"specId":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"hardware, report, claim"}]},{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"exists, synthesis"}]}]},{"key":"ghashtag/trinity-fpga#726","repo":"ghashtag/trinity-fpga","number":726,"title":"JIT test kills the test process on x86-64 CI (no assertion, no stack trace)","hits":[]},{"key":"ghashtag/trinity-fpga#702","repo":"ghashtag/trinity-fpga","number":702,"title":"80 of the paper's 89 figures have no generator — the orphan gate's founding case, at forty times the size","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"publication, publish, owner, scan, per, generator, generators, gate"}]},{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"generator, size, format, text, json, block, location, right"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"generator, size, format, text, json, block, location, right"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"root, rtl, match, order, case, size"}]},{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"root, rtl, order, case, size"}]}]},{"key":"ghashtag/trinity-fpga#684","repo":"ghashtag/trinity-fpga","number":684,"title":"gft_signed_mac answers incorrectly on silicon (clauses 0011, ok=0) while passing 2/2 in simulation — the die check is stronger than the spec's tests","hits":[{"specId":"673fe6884c6aa531c95c463f4d883bcb5c076f4a66f79088a102c4ddd4855082","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"gft, signed, mac, sadd"}]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"carries, gft, signed"}]},{"specId":"b6ff8c82fb2e360cd1339f1da16d70f08ead54de9d015425f608d1d19101d81e","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"gft, signed, sadd"}]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"gft, signed"}]}]},{"key":"ghashtag/trinity-fpga#664","repo":"ghashtag/trinity-fpga","number":664,"title":"The six-bit superiority claim is not supported: the instability was our quantiser, and the ordering inverts under the standard recipe","hits":[{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bits, field, bit, width, per, supported"}]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"bits, field, bit, width, per, supported"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"bit, bits, one, six"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"bit, bits, one, six"}]},{"specId":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"claim, supported"}]}]},{"key":"ghashtag/trinity-fpga#658","repo":"ghashtag/trinity-fpga","number":658,"title":"Seven waves in one page: what was measured, what we withdrew, and the one human action that unblocks the hardware axis","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"scale, comparison, trained, training, autonomous, loop, lut, you"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"measured, rate, zero, figure, absent, nothing, human, record"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"measured, term, one, two"}]}]},{"key":"ghashtag/trinity-fpga#648","repo":"ghashtag/trinity-fpga","number":648,"title":"fpga-regression: the φ-threshold gate blocks merges on a grep of test prose","hits":[{"specId":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","relation":"reference","coverage":"unverified","score":1020,"reasons":[{"kind":"symbol","value":"success_rate:146"},{"kind":"terms","value":"summary, threshold, time, success, rate"}]},{"specId":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","relation":"reference","coverage":"unverified","score":1007,"reasons":[{"kind":"symbol","value":"success_rate:30"},{"kind":"terms","value":"success, rate"}]},{"specId":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"blocks, block, threshold"}]},{"specId":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"blocks, block, threshold"}]},{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"gate, threshold, state"}]}]},{"key":"ghashtag/trinity-fpga#633","repo":"ghashtag/trinity-fpga","number":633,"title":"Hardware provenance: the IDCODE matchers accept only 0x13636093, and the bench that would produce the next transcript reads 0x03636093","hits":[{"specId":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"bench, compare, hardware, verification, report"}]}]},{"key":"ghashtag/trinity-fpga#631","repo":"ghashtag/trinity-fpga","number":631,"title":"Referee simulation: the headline ranking is unresolved by the paper's own stated resolution (verified), plus eight uncited competing works","hits":[{"specId":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","relation":"reference","coverage":"unverified","score":1034,"reasons":[{"kind":"symbol","value":"GFTernary:29"},{"kind":"terms","value":"gfternary, canonical, int, ternary, scale, weight, arm, ratio"}]}]},{"key":"ghashtag/trinity-fpga#440","repo":"ghashtag/trinity-fpga","number":440,"title":"docs/cfg: IDCODE.md and openocd cfgs carry the wrong AX7203 JTAG IDCODE","hits":[{"specId":"4991d83ed59365348efc506f4907cceb29a04742b9ad7f610b6b754c184d55b4","relation":"reference","coverage":"unverified","score":2023,"reasons":[{"kind":"path","value":"trinity-fpga/specs/boards/ax7203_full.t27"},{"kind":"terms","value":"boards, ax7203, full"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"boards, board, part, jtag, idcode, flash"}]}]},{"key":"ghashtag/trinity-fpga#428","repo":"ghashtag/trinity-fpga","number":428,"title":"cli: UART test/diagnostic commands report failure in output but exit 0 — decide pass/fail policy","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"pass, report, sacred, cli, real, reports, synthesis, verify"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"report, matches, sacred, synth, synthesis, you, pass"}]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"failure, pass, fail, total, failed, rate, report"}]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"failure, pass, fail, total, failed, rate, report"}]},{"specId":"e23ef09c0f4e88517e32c8c48d183468cb808d9676f2311a4a229e0f43895505","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"exit, sacred, success, fail, timeout, exiting, exited"}]}]},{"key":"ghashtag/trinity-fpga#425","repo":"ghashtag/trinity-fpga","number":425,"title":"chore(fpga): dispose of 35 legacy shell scripts (R8) — inventory + per-category plan","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"publish, canonical, per, witness, inventory, ready"}]},{"specId":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"scripts, generate, legacy, cron, safe"}]},{"specId":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"per, plan"}]}]},{"key":"ghashtag/trinity-fpga#235","repo":"ghashtag/trinity-fpga","number":235,"title":"[P1][verifiable] Demo: conformance vectors → ZK-witness (verifiable inference)","hits":[{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"conformance, vectors"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"conformance, vectors"}]},{"specId":"7babf01001cd4e86adfad3f717ccf6cf0772dd38e143ab71d782bd66bc455b82","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"vectors, witness"}]}]},{"key":"ghashtag/trinity-fpga#234","repo":"ghashtag/trinity-fpga","number":234,"title":"[P0][ternary-HW] Run the TF3/GFTernary decode core on AX7203 — first hardware evidence for the ternary component","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"rtl, ternary, hardware"}]},{"specId":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gfternary, ternary"}]}]},{"key":"ghashtag/trinity-fpga#233","repo":"ghashtag/trinity-fpga","number":233,"title":"[P0][matched-substrate] GF16 vs posit16/takum16/binary16 head-to-head on AX7203 (close FL-002)","hits":[{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"binary16, posit16, takum16, gf16"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"gf16, posit16, bit, decode"}]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"head, gf16"}]}]},{"key":"ghashtag/trinity-fpga#206","repo":"ghashtag/trinity-fpga","number":206,"title":"SW-bitexact: cover 22 structural formats (55→77+) with numeric vectors","hits":[{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","relation":"reference","coverage":"unverified","score":1230,"reasons":[{"kind":"symbol","value":"double_double:105"},{"kind":"symbol","value":"quad_double:108"},{"kind":"symbol","value":"q_format:416"},{"kind":"symbol","value":"unum_i:463"},{"kind":"symbol","value":"unum_ii:466"},{"kind":"symbol","value":"tapered_fp:469"},{"kind":"symbol","value":"block_fp:476"},{"kind":"symbol","value":"shared_exp:479"},{"kind":"symbol","value":"per_channel_scale:482"},{"kind":"symbol","value":"stochastic_rounding:485"},{"kind":"terms","value":"numeric, formats, catalog, decimal32, decimal64, decimal128, double, quad"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"generated, per, formats, bitexact, claim"}]},{"specId":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"numeric, formats, format, exp, posit, index"}]},{"specId":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"numeric, formats, format, exp, posit, index"}]},{"specId":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"numeric, formats, exp, bias, format"}]}]},{"key":"ghashtag/trinity-fpga#199","repo":"ghashtag/trinity-fpga","number":199,"title":"🎯 EPIC · Matrix [83 formats × {SW-bitexact / decode-HW / compute-HW}] on AX7203","hits":[{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":71,"reasons":[{"kind":"terms","value":"status, per, metric, formats, bitexact, tier, decode, compute"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"compute, self, lut, pass, matrix"}]},{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"proof, gf16, mul, compute, matrix"}]}]},{"key":"ghashtag/trinity-fpga#177","repo":"ghashtag/trinity-fpga","number":177,"title":"🎯 ONE SHOT — Wave-49 L-DPC36 CAP-BOOST (sacred opcode 0xF3, di/dt margin +gamma^3 at iso-area)","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":74,"reasons":[{"kind":"terms","value":"pass, sacred, rtl, cells, valid, gen, sized, map"}]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"lanes, phi, scaled, sacred, scale, budget, opcode, exit"}]},{"specId":"3195a264eeb3a9f6a1894ea50f84cd3ce9c91b52e62f169b7518249a90b5df97","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"sacred, canonical, opcode, lanes, step, budget, third, phi"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"sacred, opcode, layer, scale, bank, step, pass"}]},{"specId":"fe6ff2cc8fb17534f6cbd181a4af31750729533339cbf99889aff1a06bd09151","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"physics, sacred, phi, gamma, constants, scale"}]}]},{"key":"ghashtag/trinity-fpga#85","repo":"ghashtag/trinity-fpga","number":85,"title":"P6 DePIN INTEGRATION · L5 $TRI receipt+Bittensor+slashing · pre: P5 · T-0 tapeout","hits":[{"specId":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"net, receipt, merkle, verify, pre, chain"}]},{"specId":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"net, off, valid, receipt, signature, pre"}]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"integration, pin, verify"}]},{"specId":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"integration, pin"}]}]},{"key":"ghashtag/trinity-fpga#84","repo":"ghashtag/trinity-fpga","number":84,"title":"P5 INTERCONNECT + JTAG · L4 IO+ECDSA+DSLogic · pre: P4","hits":[]},{"key":"ghashtag/trinity-fpga#83","repo":"ghashtag/trinity-fpga","number":83,"title":"P4 MEMORY + MULTI-DIE · L3 G_MERKLE+mesh-PIM+Coq · pre: P3","hits":[{"specId":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"net, merkle, pre"}]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"mesh, multi"}]}]},{"key":"ghashtag/trinity-fpga#82","repo":"ghashtag/trinity-fpga","number":82,"title":"P3 ATTENTION ACTIVE · L2 C_GATE+T_PRESENT+56Hz bio · pre: P2","hits":[{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"threshold, gate, power, active, idle, pulse"}]},{"specId":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"attention, heads, head, gate"}]},{"specId":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"net, active, pre"}]}]},{"key":"ghashtag/trinity-fpga#81","repo":"ghashtag/trinity-fpga","number":81,"title":"P2 COMPUTE READY · L1 GF16+TF3-9+sparse-MAC · pre: P1","hits":[{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"gf16, mac, matmul, cycles, ready, one"}]},{"specId":"af060b6e5cdb2ffe1de0a47995b2c621139367174cf85237d8217aa929af10f7","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"mac, zero, cycles, ready, lut, results"}]},{"specId":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"sparse, phase, ternary, matmul, compute, effective"}]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"mac, zero, ready, lut, ternary, bit"}]},{"specId":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"net, compute, gf16, pre"}]}]},{"key":"ghashtag/trinity-fpga#80","repo":"ghashtag/trinity-fpga","number":80,"title":"P1 SACRED FOUNDATION · L0 Sacred Core · R17 mutation test · pre: none","hits":[{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"data, rtl, mutation, sacred, matches, make"}]},{"specId":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"sacred, pre, entry"}]}]},{"key":"ghashtag/trinity-fpga#79","repo":"ghashtag/trinity-fpga","number":79,"title":"TT v20 TRI NET ARCHITECTURE · 5 layers · 6 phases · 148 gates · integration roadmap to Wave-15-TT-E","hits":[{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":60,"reasons":[{"kind":"terms","value":"layers, sacred, opcode, attention, layer, weight, matmul, compute"}]},{"specId":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"net, integration, modules, active, data, step, critical, memory"}]},{"specId":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"net, cross, layer, layers, mac, power, window"}]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"net, layers, node, active, green"}]},{"specId":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"net, integration, mesh, data"}]}]},{"key":"ghashtag/trinity-fpga#78","repo":"ghashtag/trinity-fpga","number":78,"title":"TT v19 SACRED FORMULA → SILICON BOOST · 148 gates · 12 sacred opcodes · 8 markets · axiomatic IP","hits":[{"specId":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","relation":"reference","coverage":"unverified","score":1081,"reasons":[{"kind":"symbol","value":"PHI_SQ:672"},{"kind":"terms","value":"attention, sacred, heads, head, embed, gamma, sparse, key"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"PHI_SQ:347"},{"kind":"terms","value":"runtime, trit, ternary, word, phi, inv, identity, sacred"}]},{"specId":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"PHI_SQ:15"},{"kind":"symbol","value":"PHI_INV_SQ:16"},{"kind":"symbol","value":"phi_sq:200"},{"kind":"symbol","value":"phi_inv_sq:201"},{"kind":"terms","value":"sacred, physics, phi, inv, gamma, lqg, threshold, present"}]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","relation":"reference","coverage":"unverified","score":1047,"reasons":[{"kind":"symbol","value":"PHI_SQ:13"},{"kind":"symbol","value":"PHI_INV_SQ:14"},{"kind":"terms","value":"sacred, physics, phi, inv, gamma, lqg, threshold, present"}]},{"specId":"304633b6f24931bc03b56540235f1cfb560e9648a6fa3473ac53f2c74c8156fc","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"PHI_SQ:13"},{"kind":"symbol","value":"PHI_INV_SQ:15"},{"kind":"terms","value":"physics, phi, inv, reference, anchor, matches, sacred"}]}]},{"key":"ghashtag/trinity-fpga#67","repo":"ghashtag/trinity-fpga","number":67,"title":"L-DPC13 · TT-Shuttle Squeeze v6 Hyper-Frontier (S-37..S-44)","hits":[]},{"key":"ghashtag/trinity-fpga#61","repo":"ghashtag/trinity-fpga","number":61,"title":"🧠⚛️🐝 MASTER-EPIC TRI NET: TRI-1 QUANTUM BRAIN 1:1 SILICON · 180 vectors PHYSICAL on main · 80 gates LIVE · 16 sacred opcodes · 75-cell Sacred ROM · R1..R20 · v25.1 BACKFILL COMPLETE · Wave-15-TT-E T-46h","hits":[{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":59,"reasons":[{"kind":"terms","value":"gf16, registers, vector, lanes, bit, sacred, zero, out"}]},{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"net, docs, html, pdf, content, tag, anchor, internal"}]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"lab, vectors, weights, rtl, sparse, report, physical, hash"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":55,"reasons":[{"kind":"terms","value":"publication, scan, per, complete, automatic, gate, claims, live"}]},{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","relation":"candidate","coverage":"unverified","score":53,"reasons":[{"kind":"terms","value":"lab, vectors, weights, rtl, sparse, report, physical, vector"}]}]},{"key":"ghashtag/trinity-fpga#59","repo":"ghashtag/trinity-fpga","number":59,"title":"🎯 ONE SHOT — L-DPC8 TRI-1 Max v2 (Waves W15-W20)","hits":[]},{"key":"ghashtag/trinity-fpga#58","repo":"ghashtag/trinity-fpga","number":58,"title":"TRI-1 v2 L-S31: Lucas-Interval BPB Refiner (MED · Coq-blocked)","hits":[]},{"key":"ghashtag/trinity-fpga#57","repo":"ghashtag/trinity-fpga","number":57,"title":"TRI-1 v2 L-S30: Invariant Ring Watchdog (HIGH)","hits":[]},{"key":"ghashtag/trinity-fpga#56","repo":"ghashtag/trinity-fpga","number":56,"title":"TRI-1 v2 L-S29: 4 KiB SRAM-backed VSA Cache (HIGH)","hits":[{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"vsa, attention, cache"}]},{"specId":"1057f56a22357e8b4fa94871b1c98d67432d2b69dce7b80c975c2a2f635469e3","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"vsa, cache"}]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"vsa, cache"}]}]},{"key":"ghashtag/trinity-fpga#55","repo":"ghashtag/trinity-fpga","number":55,"title":"TRI-1 v2 L-S27: Lucas-Period Wishbone Arbiter (MED)","hits":[]},{"key":"ghashtag/trinity-fpga#54","repo":"ghashtag/trinity-fpga","number":54,"title":"TRI-1 v2 L-S26: Strobe Replay Detector (LOW · Coq-blocked)","hits":[]},{"key":"ghashtag/trinity-fpga#53","repo":"ghashtag/trinity-fpga","number":53,"title":"TRI-1 v2 L-S25: Adaptive Strobe FSM (MED)","hits":[]},{"key":"ghashtag/trinity-fpga#52","repo":"ghashtag/trinity-fpga","number":52,"title":"EPIC: TRI-1 v2 — 12 New Lanes L-S22..L-S33 (PhD-driven competitive boost)","hits":[]},{"key":"ghashtag/trinity-fpga#51","repo":"ghashtag/trinity-fpga","number":51,"title":"EPIC: TRI-1 TOPS Boost ×12 — L-S19/L-S20/L-S21 (pre-TTSKY26b)","hits":[]},{"key":"ghashtag/trinity-fpga#50","repo":"ghashtag/trinity-fpga","number":50,"title":"🎯 ONE SHOT — L-DPC7 Wave-7 TTIHP27a (post-defense ASIC roadmap)","hits":[]},{"key":"ghashtag/trinity-fpga#49","repo":"ghashtag/trinity-fpga","number":49,"title":"🛰️ EPIC: TRI-1 Triad Submission — TTSKY26b 2026-05-18 (L-DPC7)","hits":[]},{"key":"ghashtag/trinity-fpga#48","repo":"ghashtag/trinity-fpga","number":48,"title":"🎯 ONE SHOT — L-DPC6: USB-3 Trinity Ternary Internet Node","hits":[{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"reference","coverage":"unverified","score":1038,"reasons":[{"kind":"symbol","value":"gf16_dot4:60"},{"kind":"terms","value":"depin, proof, phi, verify, gf16, mul, dot4, compute"}]}]},{"key":"ghashtag/trinity-fpga#38","repo":"ghashtag/trinity-fpga","number":38,"title":"🧪 L-CHAT-10: 25-test e2e_chat + 200-attack falsifier corpus","hits":[]},{"key":"ghashtag/trinity-fpga#37","repo":"ghashtag/trinity-fpga","number":37,"title":"📐 L-CHAT-9: Coq invariants — 7 theorems, 1 admitted budget","hits":[]},{"key":"ghashtag/trinity-fpga#36","repo":"ghashtag/trinity-fpga","number":36,"title":"🛡 L-CHAT-8: PQ migration — RingXKEM-style deniable PQ auth (ADR-009)","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"chat, auth"}]}]},{"key":"ghashtag/trinity-fpga#35","repo":"ghashtag/trinity-fpga","number":35,"title":"🎭 L-CHAT-7: Anti-metadata — padding, queue rotation, opt-in cover","hits":[]},{"key":"ghashtag/trinity-fpga#34","repo":"ghashtag/trinity-fpga","number":34,"title":"🤖 L-CHAT-6: Agent capability tokens + dual-LLM anti-injection","hits":[{"specId":"f055f3e19d5672b8a2a023c30ceb98afe73b1002e00c50a9eed5041cdb51da81","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"llm, chat, capability, acceptance"}]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"model, tokens, capability, done"}]},{"specId":"9c72e0708c09aa65265bc7a089d77f35949d4304f42c67826f5ae269ac268264","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"llm, capability, acceptance"}]},{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"model, tokens, capability"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"capability, tokens"}]}]},{"key":"ghashtag/trinity-fpga#33","repo":"ghashtag/trinity-fpga","number":33,"title":"💾 L-CHAT-5: Persistence — Neon encrypted-at-rest + client SQLCipher","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"chat, client"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"client, chat"}]}]},{"key":"ghashtag/trinity-fpga#32","repo":"ghashtag/trinity-fpga","number":32,"title":"✉️ L-CHAT-4: Sealed Sender envelope over trios-mesh ETX","hits":[{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"mesh, sender, release"}]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"etx, mesh"}]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"mesh, etx"}]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"mesh, etx"}]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"mesh, etx"}]}]},{"key":"ghashtag/trinity-fpga#31","repo":"ghashtag/trinity-fpga","number":31,"title":"👥 L-CHAT-3: MLS RFC 9420 group + Partial-MLS bots","hits":[{"specId":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"group, chat"}]}]},{"key":"ghashtag/trinity-fpga#30","repo":"ghashtag/trinity-fpga","number":30,"title":"🔄 L-CHAT-2: Triple Ratchet 1:1 — PQ-FS + PQ-PCS (X3DH + ML-KEM step)","hits":[]},{"key":"ghashtag/trinity-fpga#29","repo":"ghashtag/trinity-fpga","number":29,"title":"🔐 L-CHAT-1: Identity & Onboarding — Ed25519 + X25519 + ML-KEM-768 prekey bundle","hits":[{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"bundle, identity"}]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"bundle, identity"}]}]},{"key":"ghashtag/trinity-fpga#28","repo":"ghashtag/trinity-fpga","number":28,"title":"💬 EPIC: Trinity Secure Chat — Privacy-First Chat for Users ↔ Agent Bots","hits":[]},{"key":"ghashtag/trinity-fpga#20","repo":"ghashtag/trinity-fpga","number":20,"title":"⏰ L-DPC3: TTSKY26a Silicon Submission — Trinity GF16 Ternary Matmul on SKY130 [DEADLINE: 2026-05-11]","hits":[{"specId":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","relation":"reference","coverage":"unverified","score":1023,"reasons":[{"kind":"symbol","value":"VECTOR_DIM:25"},{"kind":"terms","value":"vector, dim, entity, hash, create"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"gf16, phi, full, status, total, matmul, ready, one"}]},{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"dim, vsa, ternary, layer, weights, matmul, weight, zero"}]},{"specId":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"dim, scale, weight, project, ternary, matmul, phi"}]},{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"proof, phi, gf16, matmul, matrix"}]}]},{"key":"ghashtag/trinity-fpga#19","repo":"ghashtag/trinity-fpga","number":19,"title":"🌐 EPIC: Trinity dePIN-Compute — Ternary FPGA → ASIC Mesh-Inference Constellation (NASA-format)","hits":[{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","relation":"reference","coverage":"unverified","score":1030,"reasons":[{"kind":"symbol","value":"vsa_bind:205"},{"kind":"symbol","value":"vsa_bundle:217"},{"kind":"terms","value":"ternary, register, vsa, bind, bundle, cpu, phi"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":100,"reasons":[{"kind":"terms","value":"down, required, status, fast, path, external, days, model"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":81,"reasons":[{"kind":"terms","value":"igla, report, inner, compute, rtl, scale, train, ternary"}]},{"specId":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"igla, race, ternary, inference, model, weight, zero"}]},{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"pin, reference, design, port, format"}]}]},{"key":"ghashtag/trinity-fpga#18","repo":"ghashtag/trinity-fpga","number":18,"title":"🔬 RESEARCH: FPGA → ASIC → Silicon — Trinity Stack Roadmap (NASA-format)","hits":[]},{"key":"ghashtag/trinity-fpga#17","repo":"ghashtag/trinity-fpga","number":17,"title":"🛠️ SETUP: Trinity Node-0 — complete setup of the first dePIN node (FPGA + headscale + exit node)","hits":[{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"rust, mesh, network, nodes, create, node, coordinator, phase"}]},{"specId":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"target, control, pin, config, level, status, init, enable"}]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"net, network, nodes, create, node, coordinator, phase, complete"}]},{"specId":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"rust, mesh, node, target, forward, udp, complete"}]},{"specId":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"net, node, target, forward, udp, complete"}]}]},{"key":"ghashtag/trinity-fpga#16","repo":"ghashtag/trinity-fpga","number":16,"title":"📚 RESEARCH: Trinity dePIN-VPN — FPGA Mesh Neural Infrastructure (NASA-format)","hits":[{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"pin, standard, format"}]}]},{"key":"ghashtag/trinity-fpga#14","repo":"ghashtag/trinity-fpga","number":14,"title":"🔨 hw: synthesis + flashing + hardware benchmarks (v0.2-igla-fpga Release)","hits":[{"specId":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","relation":"reference","coverage":"unverified","score":1011,"reasons":[{"kind":"symbol","value":"VECTOR_DIM:25"},{"kind":"terms","value":"vector, dim, create"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":92,"reasons":[{"kind":"terms","value":"igla, benchmark, yosys, rtl, cli, real, synthesis, verify"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"igla, pipeline, token, tokens, synthesis, synth, build, top"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":57,"reasons":[{"kind":"terms","value":"igla, pipeline, token, tokens, synthesis, synth, build, top"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"igla, benchmark, synth, rtl, ternary, synthesis, lut, benchmarks"}]}]},{"key":"ghashtag/trios#1673","repo":"ghashtag/trios","number":1673,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.file-card-strip.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1672","repo":"ghashtag/trios","number":1672,"title":"trios/agent-server/apps/trios-mcp-bridge/src/tools/gitbutler-vision-context.ts exports one symbol and no test names any of them","hits":[{"specId":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"mcp, gitbutler"}]}]},{"key":"ghashtag/trios#1671","repo":"ghashtag/trios","number":1671,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/history/components/ConversationList.tsx exports one symbol and no test names any of them","hits":[{"specId":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"claim, list, both, read, history, live"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1670","repo":"ghashtag/trios","number":1670,"title":"trios/agent-server/apps/agent/lib/agent-files/useAgentOutputs.ts exports 4 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1669","repo":"ghashtag/trios","number":1669,"title":"trios/agent-server/apps/agent/entrypoints/app/tool-approvals/ToolApprovalsPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1668","repo":"ghashtag/trios","number":1668,"title":"trios/agent-server/apps/agent/lib/llm-providers/uploadLlmProvidersToGraphql.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1667","repo":"ghashtag/trios","number":1667,"title":"trios/agent-server/apps/eval/src/runner/types.ts exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1666","repo":"ghashtag/trios","number":1666,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/useAgentConversation.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1665","repo":"ghashtag/trios","number":1665,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/McpServerIcon.tsx exports one symbol and no test names any of them","hits":[{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1664","repo":"ghashtag/trios","number":1664,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.artifact-card.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1663","repo":"ghashtag/trios","number":1663,"title":"trios/agent-server/apps/server/src/browser/console-collector.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1662","repo":"ghashtag/trios","number":1662,"title":"trios/agent-server/apps/server/src/browser/backends/cdp.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1661","repo":"ghashtag/trios","number":1661,"title":"trios/agent-server/apps/agent/lib/agent-files/file-helpers.ts exports 5 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1660","repo":"ghashtag/trios","number":1660,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/useChatRefs.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1659","repo":"ghashtag/trios","number":1659,"title":"trios/agent-server/apps/server/src/tools/acl/acl-guard.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1658","repo":"ghashtag/trios","number":1658,"title":"trios/agent-server/apps/server/src/api/services/a2a/pg-agent-store.ts exports one symbol and no test names any of them","hits":[{"specId":"67b126ee510d34e78677d12e64b2b2aacf9951410adc6f3338018101e0e112c0","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"api, contract, raw, store"}]}]},{"key":"ghashtag/trios#1657","repo":"ghashtag/trios","number":1657,"title":"trios/agent-server/apps/server/src/api/services/openclaw/produced-files-walker.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1656","repo":"ghashtag/trios","number":1656,"title":"trios/agent-server/apps/agent/lib/browseros/helpers.ts exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1655","repo":"ghashtag/trios","number":1655,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepSoul.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1654","repo":"ghashtag/trios","number":1654,"title":"trios/agent-server/apps/agent/entrypoints/app/ai-settings/ProviderCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1653","repo":"ghashtag/trios","number":1653,"title":"trios/agent-server/apps/eval/src/capture/screenshot.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1652","repo":"ghashtag/trios","number":1652,"title":"trios/agent-server/apps/server/src/tools/memory/search.ts exports one symbol and no test names any of them","hits":[{"specId":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"memory, search, corpus"}]}]},{"key":"ghashtag/trios#1651","repo":"ghashtag/trios","number":1651,"title":"trios/agent-server/apps/server/src/api/services/mcp/register-mcp.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1650","repo":"ghashtag/trios","number":1650,"title":"trios/agent-server/apps/server/src/browser/elements.ts exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1649","repo":"ghashtag/trios","number":1649,"title":"trios/agent-server/apps/server/src/api/types.ts exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1648","repo":"ghashtag/trios","number":1648,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepsLayout.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1647","repo":"ghashtag/trios","number":1647,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/history/ChatHistory.tsx exports one symbol and no test names any of them","hits":[{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, history"}]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, history"}]}]},{"key":"ghashtag/trios#1646","repo":"ghashtag/trios","number":1646,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/useNotifyActiveTab.tsx exports one symbol and no test names any of them","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"active, claim, calls, notify, may, read"}]}]},{"key":"ghashtag/trios#1645","repo":"ghashtag/trios","number":1645,"title":"trios/agent-server/apps/agent/entrypoints/app/memory/MemoryExamples.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1644","repo":"ghashtag/trios","number":1644,"title":"trios/agent-server/apps/agent/entrypoints/app/acl-settings/AclSettingsPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1643","repo":"ghashtag/trios","number":1643,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/ApiKeyDialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"connect, claim, calls, api, may, read"}]},{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, connect"}]},{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"api, key, success"}]},{"specId":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","relation":"candidate","coverage":"unverified","score":15,"reasons":[{"kind":"terms","value":"api, key"}]}]},{"key":"ghashtag/trios#1642","repo":"ghashtag/trios","number":1642,"title":"trios/agent-server/apps/trios-mcp-bridge/src/absorb/absorb-engine.ts exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1641","repo":"ghashtag/trios","number":1641,"title":"trios/agent-server/apps/agent/components/sidebar/SidebarNavigation.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1640","repo":"ghashtag/trios","number":1640,"title":"trios/agent-server/apps/agent/components/execution-history/ExecutionStepItem.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"execution, diff, step"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1639","repo":"ghashtag/trios","number":1639,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/getMessageSegments.ts exports one symbol and no test names any of them","hits":[{"specId":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"segments, index"}]}]},{"key":"ghashtag/trios#1638","repo":"ghashtag/trios","number":1638,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatHeader.tsx exports one symbol and no test names any of them","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"header, found, chat, success"}]}]},{"key":"ghashtag/trios#1637","repo":"ghashtag/trios","number":1637,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatMessageActions.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1636","repo":"ghashtag/trios","number":1636,"title":"trios/agent-server/apps/agent/lib/execution-history/storage.ts exports 8 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1635","repo":"ghashtag/trios","number":1635,"title":"trios/agent-server/apps/agent/entrypoints/app/usage/UsagePage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1634","repo":"ghashtag/trios","number":1634,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/ScheduledTaskResults.tsx exports one symbol and no test names any of them","hits":[{"specId":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"tasks, results"}]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"tasks, results"}]}]},{"key":"ghashtag/trios#1633","repo":"ghashtag/trios","number":1633,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/lib/suggestions/useSuggestions.ts exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1632","repo":"ghashtag/trios","number":1632,"title":"trios/agent-server/apps/agent/components/ai-elements/run-result-dialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1631","repo":"ghashtag/trios","number":1631,"title":"trios/agent-server/apps/agent/components/elements/glowing-border.tsx exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1630","repo":"ghashtag/trios","number":1630,"title":"trios/agent-server/apps/agent/lib/llm-providers/storage.ts exports 9 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1629","repo":"ghashtag/trios","number":1629,"title":"trios/agent-server/apps/eval/src/utils/mcp-client.ts exports 2 symbols and no test names any of them","hits":[{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"mcp, pinned, tool, read, list, exists, call, tree"}]}]},{"key":"ghashtag/trios#1628","repo":"ghashtag/trios","number":1628,"title":"trios/agent-server/apps/agent/entrypoints/app/llm-hub/AddHubProviderDialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"story, live, one, hub"}]}]},{"key":"ghashtag/trios#1627","repo":"ghashtag/trios","number":1627,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/AddManagedMCPDialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1626","repo":"ghashtag/trios","number":1626,"title":"trios/agent-server/apps/agent/components/ui/MarkdownEditor.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1625","repo":"ghashtag/trios","number":1625,"title":"trios/agent-server/apps/agent/entrypoints/app/mcp-settings/QuickSetupSection.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1624","repo":"ghashtag/trios","number":1624,"title":"trios/agent-server/apps/agent/components/sidebar/SidebarBranding.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1623","repo":"ghashtag/trios","number":1623,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/useExecutionHistoryTracker.ts exports one symbol and no test names any of them","hits":[{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, history"}]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"one, history"}]}]},{"key":"ghashtag/trios#1622","repo":"ghashtag/trios","number":1622,"title":"trios/agent-server/apps/server/src/api/services/openclaw/file-preview.ts breaks L3 with 4 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1621","repo":"ghashtag/trios","number":1621,"title":"trios/agent-server/apps/server/src/api/routes/agents.ts breaks L3 with 55 non-ASCII characters, all of them in comments","hits":[{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"api, success, agents, byte"}]},{"specId":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"api, agents, byte"}]}]},{"key":"ghashtag/trios#1620","repo":"ghashtag/trios","number":1620,"title":"trios/agent-server/apps/agent/entrypoints/newtab/personalize/Personalize.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1619","repo":"ghashtag/trios","number":1619,"title":"trios/agent-server/apps/eval/src/runner/task-loader.ts exports 4 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1618","repo":"ghashtag/trios","number":1618,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ToolBatch.tsx exports one symbol and no test names any of them","hits":[{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"tool, batch, map, success"}]}]},{"key":"ghashtag/trios#1617","repo":"ghashtag/trios","number":1617,"title":"trios/agent-server/apps/agent/components/execution-history/ExecutionTaskCard.tsx exports one symbol and no test names any of them","hits":[{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"pinned, card, read, list, exists, execution, tree"}]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1616","repo":"ghashtag/trios","number":1616,"title":"trios/agent-server/apps/server/src/api/services/task-queue-service.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"service, api, may, block"}]},{"specId":"e334d5dc5fc0c176e420a131ea712b9f8d2e1c03b56a36388a683081b5defda3","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"queue, service, runs"}]}]},{"key":"ghashtag/trios#1615","repo":"ghashtag/trios","number":1615,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatError.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1614","repo":"ghashtag/trios","number":1614,"title":"trios/agent-server/apps/agent/entrypoints/app/mcp-settings/MCPServerHeader.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1613","repo":"ghashtag/trios","number":1613,"title":"trios/agent-server/apps/server/src/browser/browser.ts breaks L3 with 5 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1612","repo":"ghashtag/trios","number":1612,"title":"trios/agent-server/apps/agent/entrypoints/app/customization/ToolbarSettingsCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1611","repo":"ghashtag/trios","number":1611,"title":"trios/agent-server/apps/agent/lib/llm-providers/useLlmProviders.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1610","repo":"ghashtag/trios","number":1610,"title":"trios/agent-server/apps/agent/entrypoints/app/memory/MemoryViewer.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1609","repo":"ghashtag/trios","number":1609,"title":"trios/agent-server/apps/agent/components/ai-elements/reasoning.tsx exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1608","repo":"ghashtag/trios","number":1608,"title":"trios/agent-server/apps/agent/components/ai-elements/code-block.tsx exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1607","repo":"ghashtag/trios","number":1607,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/AddCustomMCPDialog.tsx exports one symbol and no test names any of them","hits":[{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1606","repo":"ghashtag/trios","number":1606,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/trios-rag-client.ts exports one symbol and no test names any of them","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"user, measured, client, quotes, one, two, pinned"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"mcp, pinned, read, list, exists, tree, client"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"one, client"}]}]},{"key":"ghashtag/trios#1605","repo":"ghashtag/trios","number":1605,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/openclaw-cli-providers.tsx exports 5 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1604","repo":"ghashtag/trios","number":1604,"title":"trios/agent-server/apps/agent/lib/schedules/scheduleStorage.ts exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1603","repo":"ghashtag/trios","number":1603,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatMessages.tsx exports one symbol and no test names any of them","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"found, messages, chat, success"}]}]},{"key":"ghashtag/trios#1602","repo":"ghashtag/trios","number":1602,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/features/BentoCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1601","repo":"ghashtag/trios","number":1601,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ConversationHeader.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1600","repo":"ghashtag/trios","number":1600,"title":"trios/agent-server/apps/agent/components/ai-elements/confirmation.tsx exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1599","repo":"ghashtag/trios","number":1599,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/github-client.ts exports one symbol and no test names any of them","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"user, measured, client, quotes, one, two, pinned"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"mcp, pinned, read, list, exists, tree, client"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"one, client"}]}]},{"key":"ghashtag/trios#1598","repo":"ghashtag/trios","number":1598,"title":"trios/agent-server/apps/eval/src/reporting/task-metrics.ts exports 5 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1597","repo":"ghashtag/trios","number":1597,"title":"trios/agent-server/apps/agent/components/elements/workspace-selector.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1596","repo":"ghashtag/trios","number":1596,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agents-page-actions.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1595","repo":"ghashtag/trios","number":1595,"title":"trios/agent-server/apps/agent/components/sidebar/SettingsSidebar.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]}]},{"key":"ghashtag/trios#1594","repo":"ghashtag/trios","number":1594,"title":"trios/agent-server/apps/agent/entrypoints/app/admin-dashboard/AdminDashboardPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1593","repo":"ghashtag/trios","number":1593,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/NewTabChat.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1592","repo":"ghashtag/trios","number":1592,"title":"trios/agent-server/apps/eval/src/graders/performance/axes.ts exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1591","repo":"ghashtag/trios","number":1591,"title":"trios/tools/mcp-connect-failure-gate.mjs breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"mcp, rule, gate, tree, failure"}]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"connect, may, failure, block"}]},{"specId":"76ed9aa7465a9ba704074563535c41d2df1fcfa2ac76059bfe2eb5e3e52c5933","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"gate, runs, failure"}]}]},{"key":"ghashtag/trios#1590","repo":"ghashtag/trios","number":1590,"title":"trios/agent-server/scripts/generate-models.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"strings, non, generate"}]},{"specId":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"scripts, generate"}]}]},{"key":"ghashtag/trios#1589","repo":"ghashtag/trios","number":1589,"title":"trios/agent-server/packages/shared/src/sentry/sanitize.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1588","repo":"ghashtag/trios","number":1588,"title":"trios/agent-server/packages/shared/src/constants/ports.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"success, shared, ports"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"success, shared, ports"}]}]},{"key":"ghashtag/trios#1587","repo":"ghashtag/trios","number":1587,"title":"trios/agent-server/apps/eval/src/agents/orchestrator-executor/orchestrator-agent.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1586","repo":"ghashtag/trios","number":1586,"title":"trios/agent-server/apps/trios-mcp-bridge/src/types.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1585","repo":"ghashtag/trios","number":1585,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentCommandHome.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1584","repo":"ghashtag/trios","number":1584,"title":"trios/agent-server/apps/trios-mcp-bridge/src/tools/gitbutler-vision.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"mcp, gitbutler"}]}]},{"key":"ghashtag/trios#1583","repo":"ghashtag/trios","number":1583,"title":"trios/agent-server/apps/trios-mcp-bridge/src/tools/git_status.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"block, git, status, commit, branch"}]},{"specId":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"git, status, clean, changed"}]},{"specId":"6deb105682ed85d520e9ea126468db714fe5327c5e05ef27ebc160acdceca647","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"git, diff, changed, status"}]},{"specId":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"git, commit, status, branch"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"bridge, codepoints, byte, status"}]}]},{"key":"ghashtag/trios#1582","repo":"ghashtag/trios","number":1582,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ConnectAppCard.tsx exports one symbol and no test names any of them","hits":[{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1581","repo":"ghashtag/trios","number":1581,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/tri-client.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"bridge, codepoints, client, byte"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"bridge, codepoints, client, byte"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"mcp, rule, tree, client"}]}]},{"key":"ghashtag/trios#1580","repo":"ghashtag/trios","number":1580,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/ScheduleResults.tsx exports one symbol and no test names any of them","hits":[{"specId":"49d1e8ddabc30e6cc9e852ea156510b928d618264e25737e12cd57a2eb4d3de7","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"results, index"}]}]},{"key":"ghashtag/trios#1579","repo":"ghashtag/trios","number":1579,"title":"trios/agent-server/apps/trios-mcp-bridge/src/absorb/types.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1578","repo":"ghashtag/trios","number":1578,"title":"trios/agent-server/apps/agent/lib/voice/useVoiceInput.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1577","repo":"ghashtag/trios","number":1577,"title":"trios/agent-server/apps/server/src/monitoring/session-registry.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1576","repo":"ghashtag/trios","number":1576,"title":"trios/agent-server/apps/agent/entrypoints/app/login/LoginPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1575","repo":"ghashtag/trios","number":1575,"title":"trios/agent-server/apps/server/src/lib/mcp-transport-detect.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"detect, strings, non"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"mcp, transport, rule, tree"}]},{"specId":"2496a572dc04d4f7e615f0d235fd6cda542d1a10caf6abc91ee4ef3a3e36da1e","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"mcp, transport"}]},{"specId":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"mcp, transport"}]},{"specId":"6d12259c8f9ce6b5c139b041f23558ef50c0f6a3edb22569fb4e2559f4ca3b54","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"mcp, transport"}]}]},{"key":"ghashtag/trios#1574","repo":"ghashtag/trios","number":1574,"title":"trios/agent-server/apps/server/src/lib/clients/oauth/codex-fetch.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1573","repo":"ghashtag/trios","number":1573,"title":"trios/agent-server/apps/agent/components/ai-elements/chain-of-thought.tsx exports 7 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1572","repo":"ghashtag/trios","number":1572,"title":"trios/agent-server/apps/server/src/lib/clients/oauth/callback-server.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1571","repo":"ghashtag/trios","number":1571,"title":"trios/agent-server/apps/agent/lib/schedules/syncSchedulesToBackend.ts exports one symbol and no test names any of them","hits":[{"specId":"d9f354f8b828fc2f29503d7e928ea5771635ddec31997a8b9196a1cae79c1eca","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"queen, lib, backend, acceptance"}]},{"specId":"e0c9d0e21f7bbd9253fd5acdae3f3581ccc2cb38aa284315a98a2397e3ec1543","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"lib, backend, acceptance"}]}]},{"key":"ghashtag/trios#1570","repo":"ghashtag/trios","number":1570,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepTwo.tsx exports one symbol and no test names any of them","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"user, measured, quotes, one, two, pinned"}]},{"specId":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"one, steps, two"}]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"one, two, diff"}]},{"specId":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"two, one"}]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","relation":"candidate","coverage":"unverified","score":17,"reasons":[{"kind":"terms","value":"two, one"}]}]},{"key":"ghashtag/trios#1569","repo":"ghashtag/trios","number":1569,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ConversationMessage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1568","repo":"ghashtag/trios","number":1568,"title":"trios/agent-server/apps/eval/src/utils/with-eval-timeout.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"queen, success, timeout, eval"}]}]},{"key":"ghashtag/trios#1567","repo":"ghashtag/trios","number":1567,"title":"trios/agent-server/apps/agent/entrypoints/background/scheduledJobRuns.ts exports one symbol and no test names any of them","hits":[{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","relation":"candidate","coverage":"unverified","score":58,"reasons":[{"kind":"terms","value":"may, runs, background, report, claim, shown, live, rewrite"}]}]},{"key":"ghashtag/trios#1566","repo":"ghashtag/trios","number":1566,"title":"trios/agent-server/apps/eval/src/utils/config-validator.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"config, characters, byte"}]},{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"strings, non, config"}]},{"specId":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"pass, config, eval"}]},{"specId":"f1e5eefbb3fdd68c2f4f539e8a221d176d21851a20f6abf159266108b547ac2f","relation":"candidate","coverage":"unverified","score":13,"reasons":[{"kind":"terms","value":"utils, config"}]}]},{"key":"ghashtag/trios#1565","repo":"ghashtag/trios","number":1565,"title":"trios/agent-server/apps/agent/entrypoints/app/jtbd-agent/useSurveyChat.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1564","repo":"ghashtag/trios","number":1564,"title":"trios/agent-server/apps/eval/src/runs/eval-runner.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"runner, runs"}]}]},{"key":"ghashtag/trios#1563","repo":"ghashtag/trios","number":1563,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatFooter.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1562","repo":"ghashtag/trios","number":1562,"title":"trios/agent-server/apps/eval/src/graders/benchmark/agisdk-state-diff.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"eval, pass, benchmark, report, reports, tree, state"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"benchmark, report, eval, pass, boundary"}]},{"specId":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"eval, benchmark, pass"}]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"queen, success, state, eval"}]},{"specId":"da869f75b0e66b078c82ff9989a637e2e81426f78d2ede00b74df9da126c18b5","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"eval, benchmark"}]}]},{"key":"ghashtag/trios#1561","repo":"ghashtag/trios","number":1561,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/ScheduledTasksPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1560","repo":"ghashtag/trios","number":1560,"title":"trios/agent-server/apps/eval/src/dashboard/server.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1559","repo":"ghashtag/trios","number":1559,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/HomeAgentCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1558","repo":"ghashtag/trios","number":1558,"title":"trios/agent-server/apps/agent/lib/sse.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1557","repo":"ghashtag/trios","number":1557,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ClawChatMessage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1556","repo":"ghashtag/trios","number":1556,"title":"trios/agent-server/apps/agent/lib/selected-text/selectedTextStorage.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"user, measured, rule, text, selected"}]},{"specId":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"commit, ascii, text"}]}]},{"key":"ghashtag/trios#1555","repo":"ghashtag/trios","number":1555,"title":"trios/agent-server/apps/trios-mcp-bridge/src/clients/railway-client.ts exports one symbol and no test names any of them","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"user, measured, client, quotes, one, two, pinned"}]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"mcp, pinned, read, list, exists, tree, client"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"bridge, required, client, read, found"}]},{"specId":"e0af68eb26c5b4f8f5ac5e45aa859a28337cce715e90122020fed881b81a9afd","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"mcp, railway"}]}]},{"key":"ghashtag/trios#1554","repo":"ghashtag/trios","number":1554,"title":"trios/agent-server/apps/agent/lib/llm-providers/useOAuthProviderFlow.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"7520e251d23861075aa7c4899aee7074e7199364c34f8f3218ee7d7711acd6e6","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"provider, providers, measured"}]},{"specId":"13cc1e8f0e62bc29eb874c628c2bea30950b100bd08a3919e4ff3043beb4491f","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"oauth, provider"}]},{"specId":"4dc8ea103431d9df995c086ae6800dabc140cca5c5b70666b627bea92e0970f9","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"provider, providers"}]}]},{"key":"ghashtag/trios#1553","repo":"ghashtag/trios","number":1553,"title":"trios/agent-server/apps/agent/entrypoints/app/soul/SoulExamples.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1552","repo":"ghashtag/trios","number":1552,"title":"trios/agent-server/apps/agent/lib/jtbd-popup/useJtbdPopup.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1551","repo":"ghashtag/trios","number":1551,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepConnectApps.tsx exports one symbol and no test names any of them","hits":[{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1550","repo":"ghashtag/trios","number":1550,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/ScheduledTaskCard.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1549","repo":"ghashtag/trios","number":1549,"title":"trios/agent-server/apps/agent/lib/chat-actions/useChatActions.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1548","repo":"ghashtag/trios","number":1548,"title":"trios/agent-server/apps/agent/lib/agent-conversations/types.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1547","repo":"ghashtag/trios","number":1547,"title":"trios/agent-server/apps/agent/components/ai-elements/web-preview.tsx exports 6 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1546","repo":"ghashtag/trios","number":1546,"title":"trios/agent-server/apps/agent/entrypoints/selection.content.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1545","repo":"ghashtag/trios","number":1545,"title":"trios/agent-server/apps/agent/lib/schedules/getChatServerResponse.ts exports one symbol and no test names any of them","hits":[{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":29,"reasons":[{"kind":"terms","value":"found, chat, response, success"}]}]},{"key":"ghashtag/trios#1544","repo":"ghashtag/trios","number":1544,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/NewAgentDialog.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1543","repo":"ghashtag/trios","number":1543,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.file-preview-sheet.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1542","repo":"ghashtag/trios","number":1542,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/steps/StepOne.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1541","repo":"ghashtag/trios","number":1541,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/hermes-supported-providers.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1540","repo":"ghashtag/trios","number":1540,"title":"The noise filter that could delete its own answer never reached the base","hits":[{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"accepted, base, fresh, answer, read"}]},{"specId":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"git, branch, merge, base, delete"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"delete, read, nothing, filter, runs"}]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"delete, base, success"}]}]},{"key":"ghashtag/trios#1536","repo":"ghashtag/trios","number":1536,"title":"trios/agent-server/apps/agent/components/elements/AppSelector.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1535","repo":"ghashtag/trios","number":1535,"title":"trios/agent-server/apps/agent/components/elements/tab-picker-popover.tsx exports one symbol and no test names any of them","hits":[{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"components, copy, one, sum, diff"}]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"components, copy, one, sum"}]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"diff, components, one, raw"}]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"components, one, sum"}]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"elements, one"}]}]},{"key":"ghashtag/trios#1534","repo":"ghashtag/trios","number":1534,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agents-page-hooks.ts breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"533eeb860d6bc3f69d612c3d2630965bf50b8533f50c4f4900b25ab42e838db2","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"hooks, agents"}]}]},{"key":"ghashtag/trios#1533","repo":"ghashtag/trios","number":1533,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/useOpenClaw.ts exports 6 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1532","repo":"ghashtag/trios","number":1532,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agent-row/AgentTitleRow.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"title, block, row, documentation"}]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"title, block, row, documentation"}]}]},{"key":"ghashtag/trios#1531","repo":"ghashtag/trios","number":1531,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agent-row/AgentTile.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"row, tile, pass"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"one, tile, row"}]}]},{"key":"ghashtag/trios#1530","repo":"ghashtag/trios","number":1530,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/agent-row/AgentSparkline.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1529","repo":"ghashtag/trios","number":1529,"title":"trios/agent-server/apps/agent/entrypoints/app/mcp-settings/ServerSettingsCard.tsx exports one symbol and no test names any of them","hits":[{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","relation":"candidate","coverage":"unverified","score":39,"reasons":[{"kind":"terms","value":"mcp, pinned, card, read, list, exists, tree"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"pinned, mcp, map, live, card"}]}]},{"key":"ghashtag/trios#1528","repo":"ghashtag/trios","number":1528,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/demo/OnboardingDemo.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1527","repo":"ghashtag/trios","number":1527,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/LivenessDot.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"dot, non, zero, items"}]},{"specId":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"zero, raw, dot, non"}]}]},{"key":"ghashtag/trios#1526","repo":"ghashtag/trios","number":1526,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.outputs-rail.tsx exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1525","repo":"ghashtag/trios","number":1525,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/GatewayStatusBar.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"status, strings, non"}]}]},{"key":"ghashtag/trios#1524","repo":"ghashtag/trios","number":1524,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/AgentList.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1523","repo":"ghashtag/trios","number":1523,"title":"trios/agent-server/apps/agent/entrypoints/app/profile/ProfilePage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1522","repo":"ghashtag/trios","number":1522,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/agent-conversation.outputs-rail.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1521","repo":"ghashtag/trios","number":1521,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/QueuePanel.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1520","repo":"ghashtag/trios","number":1520,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ClawChat.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1519","repo":"ghashtag/trios","number":1519,"title":"trios/agent-server/apps/agent/entrypoints/app/connect-mcp/ConnectMCP.tsx exports one symbol and no test names any of them","hits":[{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","relation":"candidate","coverage":"unverified","score":19,"reasons":[{"kind":"terms","value":"one, connect"}]}]},{"key":"ghashtag/trios#1518","repo":"ghashtag/trios","number":1518,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentSelector.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1517","repo":"ghashtag/trios","number":1517,"title":"trios/agent-server/apps/eval/src/runner/browseros-app-manager.ts exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1516","repo":"ghashtag/trios","number":1516,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentRail.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1515","repo":"ghashtag/trios","number":1515,"title":"trios/agent-server/apps/agent/components/ai-elements/open-in-chat.tsx exports 12 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1514","repo":"ghashtag/trios","number":1514,"title":"trios/agent-server/apps/agent/components/elements/laser.tsx breaks L3 with 1 non-ASCII characters, all of them in comments","hits":[{"specId":"6bdb4f8974ba389d990a11b694eb15ced344591f6c3de3d24bbf23f85ea0c964","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"zero, non, elements"}]}]},{"key":"ghashtag/trios#1513","repo":"ghashtag/trios","number":1513,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/OpenClawControls.tsx exports 6 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1512","repo":"ghashtag/trios","number":1512,"title":"trios/agent-server/packages/shared/src/constants/hermes.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1511","repo":"ghashtag/trios","number":1511,"title":"trios/agent-server/apps/trios-mcp-bridge/src/config.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"config, characters, byte"}]},{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"strings, non, config"}]},{"specId":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"bridge, config, byte"}]},{"specId":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","relation":"candidate","coverage":"unverified","score":14,"reasons":[{"kind":"terms","value":"bridge, config"}]}]},{"key":"ghashtag/trios#1510","repo":"ghashtag/trios","number":1510,"title":"trios/agent-server/apps/server/src/browser/backends/types.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1509","repo":"ghashtag/trios","number":1509,"title":"trios/agent-server/apps/server/src/agent/mcp-builder.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1508","repo":"ghashtag/trios","number":1508,"title":"trios/agent-server/apps/eval/src/runs/task-run-pipeline.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1507","repo":"ghashtag/trios","number":1507,"title":"trios/agent-server/apps/agent/entrypoints/onboarding/features/Features.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1506","repo":"ghashtag/trios","number":1506,"title":"trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatInput.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1505","repo":"ghashtag/trios","number":1505,"title":"trios/agent-server/apps/agent/lib/browseros/adapter.ts exports 3 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1504","repo":"ghashtag/trios","number":1504,"title":"trios/agent-server/apps/agent/entrypoints/app/ai-settings/AISettingsPage.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1503","repo":"ghashtag/trios","number":1503,"title":"trios/agent-server/apps/agent/entrypoints/app/scheduled-tasks/NewScheduledTaskDialog.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1498","repo":"ghashtag/trios","number":1498,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/AgentCommandConversation.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1496","repo":"ghashtag/trios","number":1496,"title":"trios/agent-server/apps/eval/src/agents/orchestrated/backends/clado/clado-action-executor.ts exports one symbol and no test names any of them","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"report, suite, sum, eval, action, boundary"}]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"contract, success, modules, action, agents"}]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"contract, success, modules, action, agents"}]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"queen, success, action, eval"}]}]},{"key":"ghashtag/trios#1495","repo":"ghashtag/trios","number":1495,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/ConversationInput.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1494","repo":"ghashtag/trios","number":1494,"title":"trios/agent-server/apps/agent/entrypoints/newtab/index/NewTab.tsx exports one symbol and no test names any of them","hits":[]},{"key":"ghashtag/trios#1493","repo":"ghashtag/trios","number":1493,"title":"The field audit covers one file out of the sixteen that query this database","hits":[{"specId":"3f327ef3f375cf0914564095f3632fadf25550c619fe0244c6432b5fcd51eefc","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"query, retry, start, complete, success, field"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"query, one, column, row"}]},{"specId":"c157c4a023255a8ea006f50a5bc2b93cd30bf402b959e27ec224e6adfa9cf3b4","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"database, query, top"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"user, measured, one, audit"}]}]},{"key":"ghashtag/trios#1490","repo":"ghashtag/trios","number":1490,"title":"trios/agent-server/apps/agent/entrypoints/app/ai-settings/NewProviderDialog.tsx exports 2 symbols and no test names any of them","hits":[]},{"key":"ghashtag/trios#1484","repo":"ghashtag/trios","number":1484,"title":"trios/agent-server/apps/server/tests/__helpers__/queend-path.ts breaks L3 with 5 non-ASCII characters, all of them in comments","hits":[{"specId":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"commit, path, ascii"}]},{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"candidate","coverage":"unverified","score":25,"reasons":[{"kind":"terms","value":"path, characters, byte"}]}]},{"key":"ghashtag/trios#1476","repo":"ghashtag/trios","number":1476,"title":"trios/agent-server/apps/agent/entrypoints/app/agent-command/home-agent-card.helpers.ts breaks L3 with 2 non-ASCII characters, all of them in comments","hits":[{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"home, characters, byte"}]}]},{"key":"ghashtag/trios#1471","repo":"ghashtag/trios","number":1471,"title":"trios/agent-server/apps/agent/entrypoints/app/agents/AgentsPage.tsx breaks L3 with 4 non-ASCII characters, all of them in comments","hits":[]},{"key":"ghashtag/trios#1350","repo":"ghashtag/trios","number":1350,"title":"The migration surface, counted: which files restate a rule a .t27 already carries","hits":[{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"rule, generated, directories, migration, side, table"}]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"migration, rule, success, target, path, byte"}]}]},{"key":"ghashtag/trios#1337","repo":"ghashtag/trios","number":1337,"title":"EPIC: RING-00 is generated, and the Swift that answers today is proven equal to it first","hits":[]},{"key":"ghashtag/trios#1336","repo":"ghashtag/trios","number":1336,"title":"EPIC: one rule, one source - every law generated from .t27 and the hand-written copies deleted","hits":[{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","relation":"candidate","coverage":"unverified","score":44,"reasons":[{"kind":"terms","value":"machine, rule, written, division, zero, success"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"rule, generated, migration, table, map, live, parse, runtime"}]},{"specId":"79072265b3262e1328804af2c4408d96dec6c525f57f60fff3a181e5236fe9b2","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"user, law, rule"}]}]},{"key":"ghashtag/trios#1334","repo":"ghashtag/trios","number":1334,"title":"EPIC: a swarm that does not stop while there is a backlog","hits":[]},{"key":"ghashtag/trios#1329","repo":"ghashtag/trios","number":1329,"title":"A sendBack verdict reopens nothing, so every issue gets one attempt","hits":[{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"list, says, nothing, send, runs"}]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"header, one, per, back, row"}]}]},{"key":"ghashtag/trios#1328","repo":"ghashtag/trios","number":1328,"title":"Half the provider credentials cannot pay and nothing tells the operator","hits":[]},{"key":"ghashtag/trios#1321","repo":"ghashtag/trios","number":1321,"title":"EPIC: restore Queen continuous execution and four-account capacity","hits":[{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":42,"reasons":[{"kind":"terms","value":"queen, unknown, success, failure, good, active, execution"}]}]},{"key":"ghashtag/trios#1291","repo":"ghashtag/trios","number":1291,"title":"Enforce English-only GitHub tasks while preserving RU/EN UI","hits":[]},{"key":"ghashtag/trios#1286","repo":"ghashtag/trios","number":1286,"title":"A negative test parks itself in the review queue forever","hits":[]},{"key":"ghashtag/trios#1279","repo":"ghashtag/trios","number":1279,"title":"EPIC: T27 backend — rings from the decision core to silicon","hits":[{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"generated, interface, merge, bee, queen, owns, decision, per"}]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"rings, rust, data, decision"}]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"rings, rust, decision"}]},{"specId":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"rings, rust, decision"}]}]},{"key":"ghashtag/trios#1244","repo":"ghashtag/trios","number":1244,"title":"QueenTabView написан под удалённый API trinity: план замены, ждёт слова","hits":[]},{"key":"ghashtag/trios#1240","repo":"ghashtag/trios","number":1240,"title":"Ключ добавлен пользователем и всё равно не читается: перечисление записей стоит за моими воротами","hits":[]},{"key":"ghashtag/trios#1175","repo":"ghashtag/trios","number":1175,"title":"Сужать только при точном совпадении имени, иначе молчать","hits":[]},{"key":"ghashtag/trios#1174","repo":"ghashtag/trios","number":1174,"title":"Сужение прячет от себя лучшую улику: имена событий в строковых литералах","hits":[]},{"key":"ghashtag/trios#1173","repo":"ghashtag/trios","number":1173,"title":"Сужение попадает один раз из четырёх и промахивается в начало файла","hits":[]},{"key":"ghashtag/trios#1133","repo":"ghashtag/trios","number":1133,"title":"Приёмка решает раньше, чем приходят вердикты","hits":[]},{"key":"ghashtag/trios#1127","repo":"ghashtag/trios","number":1127,"title":"Судья и подсудимый — одна модель: ревьюер должен быть противником, а не собой","hits":[]},{"key":"ghashtag/trios#1090","repo":"ghashtag/trios","number":1090,"title":"EPIC: Королева-надзиратель — спецификация на чат и полный цикл до мержа","hits":[]},{"key":"ghashtag/trios#957","repo":"ghashtag/trios","number":957,"title":"TRIOS_PHD_NO_IMAGE_TRAIN: anchor hero panels via Needspace, ban hard clearpage","hits":[{"specId":"2ea5e1fa3ab0861939475141b94251a3f60ed7e6df79fdb2142394ecef1f70d5","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"train, hard"}]}]},{"key":"ghashtag/trios#380","repo":"ghashtag/trios","number":380,"title":"🌻 GOLDEN SUNFLOWERS — Trinity S³AI / Flos Aureus (UNIFIED v6.2 · 98 ch · 2.53M ch · 2173 thm)","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"passed, unified, boundary, golden"}]}]},{"key":"ghashtag/tt-trinity-corona#1","repo":"ghashtag/tt-trinity-corona","number":1,"title":"Phase A: GF180MCU PDK exploration + tile-size decision (8x2 vs 8x4)","hits":[{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","relation":"candidate","coverage":"unverified","score":91,"reasons":[{"kind":"terms","value":"corona, index, shuttle, pdk, process, status, tile, rom"}]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"size, estimate, tile"}]},{"specId":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"size, status, process, decision"}]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","relation":"candidate","coverage":"unverified","score":22,"reasons":[{"kind":"terms","value":"size, status, process, decision"}]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","relation":"candidate","coverage":"unverified","score":20,"reasons":[{"kind":"terms","value":"size, phase, plan"}]}]},{"key":"ghashtag/tt-trinity-euler#98","repo":"ghashtag/tt-trinity-euler","number":98,"title":"🚨 SKY130 nightly regression · run 31237034735","hits":[]},{"key":"ghashtag/tt-trinity-euler#97","repo":"ghashtag/tt-trinity-euler","number":97,"title":"🚨 SKY130 nightly regression · run 31147259750","hits":[]},{"key":"ghashtag/tt-trinity-euler#96","repo":"ghashtag/tt-trinity-euler","number":96,"title":"🚨 SKY130 nightly regression · run 31073511794","hits":[]},{"key":"ghashtag/tt-trinity-euler#95","repo":"ghashtag/tt-trinity-euler","number":95,"title":"🚨 SKY130 nightly regression · run 30977394236","hits":[]},{"key":"ghashtag/tt-trinity-euler#94","repo":"ghashtag/tt-trinity-euler","number":94,"title":"🚨 SKY130 nightly regression · run 30879963153","hits":[]},{"key":"ghashtag/tt-trinity-euler#93","repo":"ghashtag/tt-trinity-euler","number":93,"title":"🚨 SKY130 nightly regression · run 30787765115","hits":[]},{"key":"ghashtag/tt-trinity-euler#92","repo":"ghashtag/tt-trinity-euler","number":92,"title":"🚨 SKY130 nightly regression · run 30734056553","hits":[]},{"key":"ghashtag/tt-trinity-euler#91","repo":"ghashtag/tt-trinity-euler","number":91,"title":"🚨 SKY130 nightly regression · run 30685758513","hits":[]},{"key":"ghashtag/tt-trinity-euler#90","repo":"ghashtag/tt-trinity-euler","number":90,"title":"🚨 SKY130 nightly regression · run 30607093387","hits":[]},{"key":"ghashtag/tt-trinity-euler#89","repo":"ghashtag/tt-trinity-euler","number":89,"title":"🚨 SKY130 nightly regression · run 30515193075","hits":[]},{"key":"ghashtag/tt-trinity-euler#88","repo":"ghashtag/tt-trinity-euler","number":88,"title":"🚨 SKY130 nightly regression · run 30424719698","hits":[]},{"key":"ghashtag/tt-trinity-euler#87","repo":"ghashtag/tt-trinity-euler","number":87,"title":"🚨 SKY130 nightly regression · run 30330942966","hits":[]},{"key":"ghashtag/tt-trinity-euler#86","repo":"ghashtag/tt-trinity-euler","number":86,"title":"🚨 SKY130 nightly regression · run 30240722315","hits":[]},{"key":"ghashtag/tt-trinity-euler#85","repo":"ghashtag/tt-trinity-euler","number":85,"title":"🚨 SKY130 nightly regression · run 30189462888","hits":[]},{"key":"ghashtag/tt-trinity-euler#84","repo":"ghashtag/tt-trinity-euler","number":84,"title":"🚨 SKY130 nightly regression · run 30145355377","hits":[]},{"key":"ghashtag/tt-trinity-euler#83","repo":"ghashtag/tt-trinity-euler","number":83,"title":"🚨 SKY130 nightly regression · run 30069062725","hits":[]},{"key":"ghashtag/tt-trinity-euler#82","repo":"ghashtag/tt-trinity-euler","number":82,"title":"🚨 SKY130 nightly regression · run 29981955215","hits":[]},{"key":"ghashtag/tt-trinity-euler#81","repo":"ghashtag/tt-trinity-euler","number":81,"title":"🚨 SKY130 nightly regression · run 29893356263","hits":[]},{"key":"ghashtag/tt-trinity-euler#80","repo":"ghashtag/tt-trinity-euler","number":80,"title":"🚨 SKY130 nightly regression · run 29803600087","hits":[]},{"key":"ghashtag/tt-trinity-euler#79","repo":"ghashtag/tt-trinity-euler","number":79,"title":"🚨 SKY130 nightly regression · run 29719540814","hits":[]},{"key":"ghashtag/tt-trinity-euler#78","repo":"ghashtag/tt-trinity-euler","number":78,"title":"🚨 SKY130 nightly regression · run 29674666263","hits":[]},{"key":"ghashtag/tt-trinity-euler#77","repo":"ghashtag/tt-trinity-euler","number":77,"title":"🚨 SKY130 nightly regression · run 29631117759","hits":[]},{"key":"ghashtag/tt-trinity-euler#76","repo":"ghashtag/tt-trinity-euler","number":76,"title":"🚨 SKY130 nightly regression · run 29556689132","hits":[]},{"key":"ghashtag/tt-trinity-euler#75","repo":"ghashtag/tt-trinity-euler","number":75,"title":"🚨 SKY130 nightly regression · run 29472625392","hits":[]},{"key":"ghashtag/tt-trinity-euler#74","repo":"ghashtag/tt-trinity-euler","number":74,"title":"🚨 SKY130 nightly regression · run 29389886134","hits":[]},{"key":"ghashtag/tt-trinity-euler#73","repo":"ghashtag/tt-trinity-euler","number":73,"title":"🚨 SKY130 nightly regression · run 29306884956","hits":[]},{"key":"ghashtag/tt-trinity-euler#72","repo":"ghashtag/tt-trinity-euler","number":72,"title":"🚨 SKY130 nightly regression · run 29226645594","hits":[]},{"key":"ghashtag/tt-trinity-euler#71","repo":"ghashtag/tt-trinity-euler","number":71,"title":"🚨 SKY130 nightly regression · run 29181132793","hits":[]},{"key":"ghashtag/tt-trinity-euler#70","repo":"ghashtag/tt-trinity-euler","number":70,"title":"🚨 SKY130 nightly regression · run 29140814439","hits":[]},{"key":"ghashtag/tt-trinity-euler#69","repo":"ghashtag/tt-trinity-euler","number":69,"title":"🚨 SKY130 nightly regression · run 29072730813","hits":[]},{"key":"ghashtag/tt-trinity-euler#68","repo":"ghashtag/tt-trinity-euler","number":68,"title":"🚨 SKY130 nightly regression · run 28997633458","hits":[]},{"key":"ghashtag/tt-trinity-euler#67","repo":"ghashtag/tt-trinity-euler","number":67,"title":"🚨 SKY130 nightly regression · run 28919441235","hits":[]},{"key":"ghashtag/tt-trinity-euler#66","repo":"ghashtag/tt-trinity-euler","number":66,"title":"🚨 SKY130 nightly regression · run 28845314458","hits":[]},{"key":"ghashtag/tt-trinity-euler#65","repo":"ghashtag/tt-trinity-euler","number":65,"title":"🚨 SKY130 nightly regression · run 28772250159","hits":[]},{"key":"ghashtag/tt-trinity-euler#64","repo":"ghashtag/tt-trinity-euler","number":64,"title":"🚨 SKY130 nightly regression · run 28731407504","hits":[]},{"key":"ghashtag/tt-trinity-euler#63","repo":"ghashtag/tt-trinity-euler","number":63,"title":"🚨 SKY130 nightly regression · run 28696620453","hits":[]},{"key":"ghashtag/tt-trinity-euler#62","repo":"ghashtag/tt-trinity-euler","number":62,"title":"🚨 SKY130 nightly regression · run 28641324710","hits":[]},{"key":"ghashtag/tt-trinity-euler#61","repo":"ghashtag/tt-trinity-euler","number":61,"title":"🚨 SKY130 nightly regression · run 28562523648","hits":[]},{"key":"ghashtag/tt-trinity-euler#60","repo":"ghashtag/tt-trinity-euler","number":60,"title":"🚨 SKY130 nightly regression · run 28490811072","hits":[]},{"key":"ghashtag/tt-trinity-euler#59","repo":"ghashtag/tt-trinity-euler","number":59,"title":"🚨 SKY130 nightly regression · run 28417566451","hits":[]},{"key":"ghashtag/tt-trinity-euler#58","repo":"ghashtag/tt-trinity-euler","number":58,"title":"🚨 SKY130 nightly regression · run 28346188631","hits":[]},{"key":"ghashtag/tt-trinity-euler#57","repo":"ghashtag/tt-trinity-euler","number":57,"title":"🚨 SKY130 nightly regression · run 28309685334","hits":[]},{"key":"ghashtag/tt-trinity-euler#56","repo":"ghashtag/tt-trinity-euler","number":56,"title":"🚨 SKY130 nightly regression · run 28276800514","hits":[]},{"key":"ghashtag/tt-trinity-euler#55","repo":"ghashtag/tt-trinity-euler","number":55,"title":"🚨 SKY130 nightly regression · run 28214630451","hits":[]},{"key":"ghashtag/tt-trinity-euler#54","repo":"ghashtag/tt-trinity-euler","number":54,"title":"🚨 SKY130 nightly regression · run 28144208658","hits":[]},{"key":"ghashtag/tt-trinity-euler#53","repo":"ghashtag/tt-trinity-euler","number":53,"title":"🚨 SKY130 nightly regression · run 28072401842","hits":[]},{"key":"ghashtag/tt-trinity-euler#52","repo":"ghashtag/tt-trinity-euler","number":52,"title":"🚨 SKY130 nightly regression · run 27999425071","hits":[]},{"key":"ghashtag/tt-trinity-euler#51","repo":"ghashtag/tt-trinity-euler","number":51,"title":"🚨 SKY130 nightly regression · run 27927163472","hits":[]},{"key":"ghashtag/tt-trinity-euler#50","repo":"ghashtag/tt-trinity-euler","number":50,"title":"🚨 SKY130 nightly regression · run 27891878776","hits":[]},{"key":"ghashtag/tt-trinity-euler#49","repo":"ghashtag/tt-trinity-euler","number":49,"title":"🚨 SKY130 nightly regression · run 27858388231","hits":[]},{"key":"ghashtag/tt-trinity-euler#48","repo":"ghashtag/tt-trinity-euler","number":48,"title":"🚨 SKY130 nightly regression · run 27803006658","hits":[]},{"key":"ghashtag/tt-trinity-euler#47","repo":"ghashtag/tt-trinity-euler","number":47,"title":"🚨 SKY130 nightly regression · run 27734150706","hits":[]},{"key":"ghashtag/tt-trinity-euler#46","repo":"ghashtag/tt-trinity-euler","number":46,"title":"🚨 SKY130 nightly regression · run 27663199680","hits":[]},{"key":"ghashtag/tt-trinity-euler#45","repo":"ghashtag/tt-trinity-euler","number":45,"title":"🚨 SKY130 nightly regression · run 27591509430","hits":[]},{"key":"ghashtag/tt-trinity-euler#44","repo":"ghashtag/tt-trinity-euler","number":44,"title":"🚨 SKY130 nightly regression · run 27521754134","hits":[]},{"key":"ghashtag/tt-trinity-euler#43","repo":"ghashtag/tt-trinity-euler","number":43,"title":"🚨 SKY130 nightly regression · run 27486795052","hits":[]},{"key":"ghashtag/tt-trinity-euler#42","repo":"ghashtag/tt-trinity-euler","number":42,"title":"🚨 SKY130 nightly regression · run 27454797141","hits":[]},{"key":"ghashtag/tt-trinity-euler#41","repo":"ghashtag/tt-trinity-euler","number":41,"title":"🚨 SKY130 nightly regression · run 27391994067","hits":[]},{"key":"ghashtag/tt-trinity-euler#40","repo":"ghashtag/tt-trinity-euler","number":40,"title":"🚨 SKY130 nightly regression · run 27321176190","hits":[]},{"key":"ghashtag/tt-trinity-euler#39","repo":"ghashtag/tt-trinity-euler","number":39,"title":"🚨 SKY130 nightly regression · run 27250482439","hits":[]},{"key":"ghashtag/tt-trinity-euler#38","repo":"ghashtag/tt-trinity-euler","number":38,"title":"🚨 SKY130 nightly regression · run 27181351499","hits":[]},{"key":"ghashtag/tt-trinity-euler#37","repo":"ghashtag/tt-trinity-euler","number":37,"title":"🚨 SKY130 nightly regression · run 27113835467","hits":[]},{"key":"ghashtag/tt-trinity-euler#36","repo":"ghashtag/tt-trinity-euler","number":36,"title":"🚨 SKY130 nightly regression · run 27081191107","hits":[]},{"key":"ghashtag/tt-trinity-euler#35","repo":"ghashtag/tt-trinity-euler","number":35,"title":"🚨 SKY130 nightly regression · run 27050915287","hits":[]},{"key":"ghashtag/tt-trinity-euler#34","repo":"ghashtag/tt-trinity-euler","number":34,"title":"🚨 SKY130 nightly regression · run 26992996456","hits":[]},{"key":"ghashtag/tt-trinity-euler#33","repo":"ghashtag/tt-trinity-euler","number":33,"title":"🚨 SKY130 nightly regression · run 26927962047","hits":[]},{"key":"ghashtag/tt-trinity-euler#32","repo":"ghashtag/tt-trinity-euler","number":32,"title":"🚨 SKY130 nightly regression · run 26861387877","hits":[]},{"key":"ghashtag/tt-trinity-euler#31","repo":"ghashtag/tt-trinity-euler","number":31,"title":"🚨 SKY130 nightly regression · run 26795994978","hits":[]},{"key":"ghashtag/tt-trinity-euler#30","repo":"ghashtag/tt-trinity-euler","number":30,"title":"🚨 SKY130 nightly regression · run 26733109167","hits":[]},{"key":"ghashtag/tt-trinity-euler#29","repo":"ghashtag/tt-trinity-euler","number":29,"title":"🚨 SKY130 nightly regression · run 26701835229","hits":[]},{"key":"ghashtag/tt-trinity-euler#28","repo":"ghashtag/tt-trinity-euler","number":28,"title":"🚨 SKY130 nightly regression · run 26672836310","hits":[]},{"key":"ghashtag/tt-trinity-euler#27","repo":"ghashtag/tt-trinity-euler","number":27,"title":"🚨 SKY130 nightly regression · run 26615623618","hits":[]},{"key":"ghashtag/tt-trinity-euler#26","repo":"ghashtag/tt-trinity-euler","number":26,"title":"🚨 SKY130 nightly regression · run 26552306214","hits":[]},{"key":"ghashtag/tt-trinity-euler#25","repo":"ghashtag/tt-trinity-euler","number":25,"title":"🚨 SKY130 nightly regression · run 26488414181","hits":[]},{"key":"ghashtag/tt-trinity-euler#24","repo":"ghashtag/tt-trinity-euler","number":24,"title":"🚨 SKY130 nightly regression · run 26430002357","hits":[]},{"key":"ghashtag/tt-trinity-euler#23","repo":"ghashtag/tt-trinity-euler","number":23,"title":"🚨 SKY130 nightly regression · run 26381176645","hits":[]},{"key":"ghashtag/tt-trinity-euler#22","repo":"ghashtag/tt-trinity-euler","number":22,"title":"🚨 SKY130 nightly regression · run 26350450583","hits":[]},{"key":"ghashtag/tt-trinity-euler#21","repo":"ghashtag/tt-trinity-euler","number":21,"title":"🚨 SKY130 nightly regression · run 26321868832","hits":[]},{"key":"ghashtag/tt-trinity-euler#20","repo":"ghashtag/tt-trinity-euler","number":20,"title":"🚨 SKY130 nightly regression · run 26266181987","hits":[]},{"key":"ghashtag/tt-trinity-euler#19","repo":"ghashtag/tt-trinity-euler","number":19,"title":"🚨 SKY130 nightly regression · run 26203120122","hits":[]},{"key":"ghashtag/tt-trinity-euler#18","repo":"ghashtag/tt-trinity-euler","number":18,"title":"🚨 SKY130 nightly regression · run 26138839795","hits":[]},{"key":"ghashtag/tt-trinity-euler#17","repo":"ghashtag/tt-trinity-euler","number":17,"title":"🚨 SKY130 nightly regression · run 26073792558","hits":[]},{"key":"ghashtag/tt-trinity-gamma#220","repo":"ghashtag/tt-trinity-gamma","number":220,"title":"🚨 SKY130 nightly regression · run 34940767728","hits":[]},{"key":"ghashtag/tt-trinity-gamma#219","repo":"ghashtag/tt-trinity-gamma","number":219,"title":"🚨 SKY130 nightly regression · run 34818654467","hits":[]},{"key":"ghashtag/tt-trinity-gamma#218","repo":"ghashtag/tt-trinity-gamma","number":218,"title":"🚨 SKY130 nightly regression · run 34744670365","hits":[]},{"key":"ghashtag/tt-trinity-gamma#217","repo":"ghashtag/tt-trinity-gamma","number":217,"title":"🚨 SKY130 nightly regression · run 34679381327","hits":[]},{"key":"ghashtag/tt-trinity-gamma#216","repo":"ghashtag/tt-trinity-gamma","number":216,"title":"🚨 SKY130 nightly regression · run 34572536342","hits":[]},{"key":"ghashtag/tt-trinity-gamma#215","repo":"ghashtag/tt-trinity-gamma","number":215,"title":"🚨 SKY130 nightly regression · run 34448038690","hits":[]},{"key":"ghashtag/tt-trinity-gamma#214","repo":"ghashtag/tt-trinity-gamma","number":214,"title":"🚨 SKY130 nightly regression · run 34322222628","hits":[]},{"key":"ghashtag/tt-trinity-gamma#213","repo":"ghashtag/tt-trinity-gamma","number":213,"title":"🚨 SKY130 nightly regression · run 34196990370","hits":[]},{"key":"ghashtag/tt-trinity-gamma#212","repo":"ghashtag/tt-trinity-gamma","number":212,"title":"🚨 SKY130 nightly regression · run 34093572790","hits":[]},{"key":"ghashtag/tt-trinity-gamma#211","repo":"ghashtag/tt-trinity-gamma","number":211,"title":"🚨 SKY130 nightly regression · run 34017680523","hits":[]},{"key":"ghashtag/tt-trinity-gamma#210","repo":"ghashtag/tt-trinity-gamma","number":210,"title":"🚨 SKY130 nightly regression · run 33950580677","hits":[]},{"key":"ghashtag/tt-trinity-gamma#209","repo":"ghashtag/tt-trinity-gamma","number":209,"title":"🚨 SKY130 nightly regression · run 33846631735","hits":[]},{"key":"ghashtag/tt-trinity-gamma#208","repo":"ghashtag/tt-trinity-gamma","number":208,"title":"🚨 SKY130 nightly regression · run 33725461892","hits":[]},{"key":"ghashtag/tt-trinity-gamma#207","repo":"ghashtag/tt-trinity-gamma","number":207,"title":"🚨 SKY130 nightly regression · run 33600713074","hits":[]},{"key":"ghashtag/tt-trinity-gamma#206","repo":"ghashtag/tt-trinity-gamma","number":206,"title":"🚨 SKY130 nightly regression · run 33481717662","hits":[]},{"key":"ghashtag/tt-trinity-gamma#205","repo":"ghashtag/tt-trinity-gamma","number":205,"title":"🚨 SKY130 nightly regression · run 33371647688","hits":[]},{"key":"ghashtag/tt-trinity-gamma#204","repo":"ghashtag/tt-trinity-gamma","number":204,"title":"🚨 SKY130 nightly regression · run 33300374089","hits":[]},{"key":"ghashtag/tt-trinity-gamma#203","repo":"ghashtag/tt-trinity-gamma","number":203,"title":"🚨 SKY130 nightly regression · run 33243700624","hits":[]},{"key":"ghashtag/tt-trinity-gamma#202","repo":"ghashtag/tt-trinity-gamma","number":202,"title":"🚨 SKY130 nightly regression · run 33177280940","hits":[]},{"key":"ghashtag/tt-trinity-gamma#201","repo":"ghashtag/tt-trinity-gamma","number":201,"title":"🚨 SKY130 nightly regression · run 33071628725","hits":[]},{"key":"ghashtag/tt-trinity-gamma#200","repo":"ghashtag/tt-trinity-gamma","number":200,"title":"🚨 SKY130 nightly regression · run 32925053032","hits":[]},{"key":"ghashtag/tt-trinity-gamma#199","repo":"ghashtag/tt-trinity-gamma","number":199,"title":"🚨 SKY130 nightly regression · run 32803360044","hits":[]},{"key":"ghashtag/tt-trinity-gamma#198","repo":"ghashtag/tt-trinity-gamma","number":198,"title":"🚨 SKY130 nightly regression · run 32685053747","hits":[]},{"key":"ghashtag/tt-trinity-gamma#197","repo":"ghashtag/tt-trinity-gamma","number":197,"title":"🚨 SKY130 nightly regression · run 32614317092","hits":[]},{"key":"ghashtag/tt-trinity-gamma#196","repo":"ghashtag/tt-trinity-gamma","number":196,"title":"🚨 SKY130 nightly regression · run 32547477839","hits":[]},{"key":"ghashtag/tt-trinity-gamma#195","repo":"ghashtag/tt-trinity-gamma","number":195,"title":"🚨 SKY130 nightly regression · run 32441909382","hits":[]},{"key":"ghashtag/tt-trinity-gamma#194","repo":"ghashtag/tt-trinity-gamma","number":194,"title":"🚨 SKY130 nightly regression · run 32326409933","hits":[]},{"key":"ghashtag/tt-trinity-gamma#193","repo":"ghashtag/tt-trinity-gamma","number":193,"title":"🚨 SKY130 nightly regression · run 32210341611","hits":[]},{"key":"ghashtag/tt-trinity-gamma#192","repo":"ghashtag/tt-trinity-gamma","number":192,"title":"🚨 SKY130 nightly regression · run 32093543361","hits":[]},{"key":"ghashtag/tt-trinity-gamma#191","repo":"ghashtag/tt-trinity-gamma","number":191,"title":"🚨 SKY130 nightly regression · run 31989658184","hits":[]},{"key":"ghashtag/tt-trinity-gamma#190","repo":"ghashtag/tt-trinity-gamma","number":190,"title":"🚨 SKY130 nightly regression · run 31923149464","hits":[]},{"key":"ghashtag/tt-trinity-gamma#189","repo":"ghashtag/tt-trinity-gamma","number":189,"title":"🚨 SKY130 nightly regression · run 31860257599","hits":[]},{"key":"ghashtag/tt-trinity-gamma#188","repo":"ghashtag/tt-trinity-gamma","number":188,"title":"🚨 SKY130 nightly regression · run 31768954533","hits":[]},{"key":"ghashtag/tt-trinity-gamma#187","repo":"ghashtag/tt-trinity-gamma","number":187,"title":"🚨 SKY130 nightly regression · run 31666265452","hits":[]},{"key":"ghashtag/tt-trinity-gamma#186","repo":"ghashtag/tt-trinity-gamma","number":186,"title":"🚨 SKY130 nightly regression · run 31562276788","hits":[]},{"key":"ghashtag/tt-trinity-gamma#185","repo":"ghashtag/tt-trinity-gamma","number":185,"title":"🚨 SKY130 nightly regression · run 31456260299","hits":[]},{"key":"ghashtag/tt-trinity-gamma#184","repo":"ghashtag/tt-trinity-gamma","number":184,"title":"🚨 SKY130 nightly regression · run 31353897322","hits":[]},{"key":"ghashtag/tt-trinity-gamma#183","repo":"ghashtag/tt-trinity-gamma","number":183,"title":"🚨 SKY130 nightly regression · run 31292978161","hits":[]},{"key":"ghashtag/tt-trinity-gamma#182","repo":"ghashtag/tt-trinity-gamma","number":182,"title":"🚨 SKY130 nightly regression · run 31237141849","hits":[]},{"key":"ghashtag/tt-trinity-gamma#181","repo":"ghashtag/tt-trinity-gamma","number":181,"title":"🚨 SKY130 nightly regression · run 31147372059","hits":[]},{"key":"ghashtag/tt-trinity-gamma#180","repo":"ghashtag/tt-trinity-gamma","number":180,"title":"🚨 SKY130 nightly regression · run 31073652155","hits":[]},{"key":"ghashtag/tt-trinity-gamma#179","repo":"ghashtag/tt-trinity-gamma","number":179,"title":"🚨 SKY130 nightly regression · run 30977537983","hits":[]},{"key":"ghashtag/tt-trinity-gamma#178","repo":"ghashtag/tt-trinity-gamma","number":178,"title":"🚨 SKY130 nightly regression · run 30880103657","hits":[]},{"key":"ghashtag/tt-trinity-gamma#177","repo":"ghashtag/tt-trinity-gamma","number":177,"title":"🚨 SKY130 nightly regression · run 30787890853","hits":[]},{"key":"ghashtag/tt-trinity-gamma#176","repo":"ghashtag/tt-trinity-gamma","number":176,"title":"🚨 SKY130 nightly regression · run 30734161870","hits":[]},{"key":"ghashtag/tt-trinity-gamma#175","repo":"ghashtag/tt-trinity-gamma","number":175,"title":"🚨 SKY130 nightly regression · run 30685865322","hits":[]},{"key":"ghashtag/tt-trinity-gamma#174","repo":"ghashtag/tt-trinity-gamma","number":174,"title":"🚨 SKY130 nightly regression · run 30607241657","hits":[]},{"key":"ghashtag/tt-trinity-gamma#173","repo":"ghashtag/tt-trinity-gamma","number":173,"title":"🚨 SKY130 nightly regression · run 30515812124","hits":[]},{"key":"ghashtag/tt-trinity-gamma#172","repo":"ghashtag/tt-trinity-gamma","number":172,"title":"🚨 SKY130 nightly regression · run 30424851641","hits":[]},{"key":"ghashtag/tt-trinity-gamma#171","repo":"ghashtag/tt-trinity-gamma","number":171,"title":"🚨 SKY130 nightly regression · run 30331074138","hits":[]},{"key":"ghashtag/tt-trinity-gamma#170","repo":"ghashtag/tt-trinity-gamma","number":170,"title":"🚨 SKY130 nightly regression · run 30240915761","hits":[]},{"key":"ghashtag/tt-trinity-gamma#169","repo":"ghashtag/tt-trinity-gamma","number":169,"title":"🚨 SKY130 nightly regression · run 30189546295","hits":[]},{"key":"ghashtag/tt-trinity-gamma#168","repo":"ghashtag/tt-trinity-gamma","number":168,"title":"🚨 SKY130 nightly regression · run 30145426183","hits":[]},{"key":"ghashtag/tt-trinity-gamma#167","repo":"ghashtag/tt-trinity-gamma","number":167,"title":"🚨 SKY130 nightly regression · run 30069164201","hits":[]},{"key":"ghashtag/tt-trinity-gamma#166","repo":"ghashtag/tt-trinity-gamma","number":166,"title":"🚨 SKY130 nightly regression · run 29982097672","hits":[]},{"key":"ghashtag/tt-trinity-gamma#165","repo":"ghashtag/tt-trinity-gamma","number":165,"title":"🚨 SKY130 nightly regression · run 29893463740","hits":[]},{"key":"ghashtag/tt-trinity-gamma#164","repo":"ghashtag/tt-trinity-gamma","number":164,"title":"🚨 SKY130 nightly regression · run 29803729224","hits":[]},{"key":"ghashtag/tt-trinity-gamma#163","repo":"ghashtag/tt-trinity-gamma","number":163,"title":"🚨 SKY130 nightly regression · run 29719652506","hits":[]},{"key":"ghashtag/tt-trinity-gamma#162","repo":"ghashtag/tt-trinity-gamma","number":162,"title":"🚨 SKY130 nightly regression · run 29674737312","hits":[]},{"key":"ghashtag/tt-trinity-gamma#161","repo":"ghashtag/tt-trinity-gamma","number":161,"title":"🚨 SKY130 nightly regression · run 29631181378","hits":[]},{"key":"ghashtag/tt-trinity-gamma#160","repo":"ghashtag/tt-trinity-gamma","number":160,"title":"🚨 SKY130 nightly regression · run 29556799917","hits":[]},{"key":"ghashtag/tt-trinity-gamma#159","repo":"ghashtag/tt-trinity-gamma","number":159,"title":"🚨 SKY130 nightly regression · run 29473208457","hits":[]},{"key":"ghashtag/tt-trinity-gamma#158","repo":"ghashtag/tt-trinity-gamma","number":158,"title":"🚨 SKY130 nightly regression · run 29389995593","hits":[]},{"key":"ghashtag/tt-trinity-gamma#157","repo":"ghashtag/tt-trinity-gamma","number":157,"title":"🚨 SKY130 nightly regression · run 29306998074","hits":[]},{"key":"ghashtag/tt-trinity-gamma#156","repo":"ghashtag/tt-trinity-gamma","number":156,"title":"🚨 SKY130 nightly regression · run 29226784339","hits":[]},{"key":"ghashtag/tt-trinity-gamma#155","repo":"ghashtag/tt-trinity-gamma","number":155,"title":"🚨 SKY130 nightly regression · run 29181221736","hits":[]},{"key":"ghashtag/tt-trinity-gamma#154","repo":"ghashtag/tt-trinity-gamma","number":154,"title":"🚨 SKY130 nightly regression · run 29140881440","hits":[]},{"key":"ghashtag/tt-trinity-gamma#153","repo":"ghashtag/tt-trinity-gamma","number":153,"title":"🚨 SKY130 nightly regression · run 29072867447","hits":[]},{"key":"ghashtag/tt-trinity-gamma#152","repo":"ghashtag/tt-trinity-gamma","number":152,"title":"🚨 SKY130 nightly regression · run 28997774349","hits":[]},{"key":"ghashtag/tt-trinity-gamma#151","repo":"ghashtag/tt-trinity-gamma","number":151,"title":"🚨 SKY130 nightly regression · run 28919552122","hits":[]},{"key":"ghashtag/tt-trinity-gamma#150","repo":"ghashtag/tt-trinity-gamma","number":150,"title":"🚨 SKY130 nightly regression · run 28845467760","hits":[]},{"key":"ghashtag/tt-trinity-gamma#149","repo":"ghashtag/tt-trinity-gamma","number":149,"title":"🚨 SKY130 nightly regression · run 28772713086","hits":[]},{"key":"ghashtag/tt-trinity-gamma#148","repo":"ghashtag/tt-trinity-gamma","number":148,"title":"🚨 SKY130 nightly regression · run 28731478369","hits":[]},{"key":"ghashtag/tt-trinity-gamma#147","repo":"ghashtag/tt-trinity-gamma","number":147,"title":"🚨 SKY130 nightly regression · run 28696697374","hits":[]},{"key":"ghashtag/tt-trinity-gamma#146","repo":"ghashtag/tt-trinity-gamma","number":146,"title":"🚨 SKY130 nightly regression · run 28641442707","hits":[]},{"key":"ghashtag/tt-trinity-gamma#145","repo":"ghashtag/tt-trinity-gamma","number":145,"title":"🚨 SKY130 nightly regression · run 28562622322","hits":[]},{"key":"ghashtag/tt-trinity-gamma#144","repo":"ghashtag/tt-trinity-gamma","number":144,"title":"🚨 SKY130 nightly regression · run 28490923678","hits":[]},{"key":"ghashtag/tt-trinity-gamma#143","repo":"ghashtag/tt-trinity-gamma","number":143,"title":"🚨 SKY130 nightly regression · run 28417674835","hits":[]},{"key":"ghashtag/tt-trinity-gamma#142","repo":"ghashtag/tt-trinity-gamma","number":142,"title":"🚨 SKY130 nightly regression · run 28346310021","hits":[]},{"key":"ghashtag/tt-trinity-gamma#141","repo":"ghashtag/tt-trinity-gamma","number":141,"title":"🚨 SKY130 nightly regression · run 28309759122","hits":[]},{"key":"ghashtag/tt-trinity-gamma#140","repo":"ghashtag/tt-trinity-gamma","number":140,"title":"🚨 SKY130 nightly regression · run 28276869750","hits":[]},{"key":"ghashtag/tt-trinity-gamma#139","repo":"ghashtag/tt-trinity-gamma","number":139,"title":"🚨 SKY130 nightly regression · run 28214740983","hits":[]},{"key":"ghashtag/tt-trinity-gamma#138","repo":"ghashtag/tt-trinity-gamma","number":138,"title":"🚨 SKY130 nightly regression · run 28144319972","hits":[]},{"key":"ghashtag/tt-trinity-gamma#137","repo":"ghashtag/tt-trinity-gamma","number":137,"title":"🚨 SKY130 nightly regression · run 28072512253","hits":[]},{"key":"ghashtag/tt-trinity-gamma#136","repo":"ghashtag/tt-trinity-gamma","number":136,"title":"🚨 SKY130 nightly regression · run 27999539047","hits":[]},{"key":"ghashtag/tt-trinity-gamma#135","repo":"ghashtag/tt-trinity-gamma","number":135,"title":"🚨 SKY130 nightly regression · run 27927266239","hits":[]},{"key":"ghashtag/tt-trinity-gamma#134","repo":"ghashtag/tt-trinity-gamma","number":134,"title":"🚨 SKY130 nightly regression · run 27891944779","hits":[]},{"key":"ghashtag/tt-trinity-gamma#133","repo":"ghashtag/tt-trinity-gamma","number":133,"title":"🚨 SKY130 nightly regression · run 27858466017","hits":[]},{"key":"ghashtag/tt-trinity-gamma#132","repo":"ghashtag/tt-trinity-gamma","number":132,"title":"🚨 SKY130 nightly regression · run 27803115751","hits":[]},{"key":"ghashtag/tt-trinity-gamma#131","repo":"ghashtag/tt-trinity-gamma","number":131,"title":"🚨 SKY130 nightly regression · run 27734239071","hits":[]},{"key":"ghashtag/tt-trinity-gamma#130","repo":"ghashtag/tt-trinity-gamma","number":130,"title":"🚨 SKY130 nightly regression · run 27663296704","hits":[]},{"key":"ghashtag/tt-trinity-gamma#129","repo":"ghashtag/tt-trinity-gamma","number":129,"title":"🚨 SKY130 nightly regression · run 27591607141","hits":[]},{"key":"ghashtag/tt-trinity-gamma#128","repo":"ghashtag/tt-trinity-gamma","number":128,"title":"🚨 SKY130 nightly regression · run 27521852324","hits":[]},{"key":"ghashtag/tt-trinity-gamma#127","repo":"ghashtag/tt-trinity-gamma","number":127,"title":"🚨 SKY130 nightly regression · run 27486867811","hits":[]},{"key":"ghashtag/tt-trinity-gamma#126","repo":"ghashtag/tt-trinity-gamma","number":126,"title":"🚨 SKY130 nightly regression · run 27454876517","hits":[]},{"key":"ghashtag/tt-trinity-gamma#125","repo":"ghashtag/tt-trinity-gamma","number":125,"title":"🚨 SKY130 nightly regression · run 27392114621","hits":[]},{"key":"ghashtag/tt-trinity-gamma#124","repo":"ghashtag/tt-trinity-gamma","number":124,"title":"🚨 SKY130 nightly regression · run 27321259159","hits":[]},{"key":"ghashtag/tt-trinity-gamma#123","repo":"ghashtag/tt-trinity-gamma","number":123,"title":"🚨 SKY130 nightly regression · run 27250590554","hits":[]},{"key":"ghashtag/tt-trinity-gamma#122","repo":"ghashtag/tt-trinity-gamma","number":122,"title":"🚨 SKY130 nightly regression · run 27181456444","hits":[]},{"key":"ghashtag/tt-trinity-gamma#121","repo":"ghashtag/tt-trinity-gamma","number":121,"title":"🚨 SKY130 nightly regression · run 27113949037","hits":[]},{"key":"ghashtag/tt-trinity-gamma#117","repo":"ghashtag/tt-trinity-gamma","number":117,"title":"🚨 SKY130 nightly regression · run 27081257875","hits":[]},{"key":"ghashtag/tt-trinity-gamma#116","repo":"ghashtag/tt-trinity-gamma","number":116,"title":"🚨 SKY130 nightly regression · run 27050978700","hits":[]},{"key":"ghashtag/tt-trinity-gamma#115","repo":"ghashtag/tt-trinity-gamma","number":115,"title":"🚨 SKY130 nightly regression · run 26993114509","hits":[]},{"key":"ghashtag/tt-trinity-gamma#114","repo":"ghashtag/tt-trinity-gamma","number":114,"title":"🚨 SKY130 nightly regression · run 26928077625","hits":[]},{"key":"ghashtag/tt-trinity-gamma#113","repo":"ghashtag/tt-trinity-gamma","number":113,"title":"🚨 SKY130 nightly regression · run 26861486774","hits":[]},{"key":"ghashtag/tt-trinity-gamma#112","repo":"ghashtag/tt-trinity-gamma","number":112,"title":"🚨 SKY130 nightly regression · run 26796104026","hits":[]},{"key":"ghashtag/tt-trinity-gamma#111","repo":"ghashtag/tt-trinity-gamma","number":111,"title":"🚨 SKY130 nightly regression · run 26733208122","hits":[]},{"key":"ghashtag/tt-trinity-gamma#109","repo":"ghashtag/tt-trinity-gamma","number":109,"title":"🚨 SKY130 nightly regression · run 26701894661","hits":[]},{"key":"ghashtag/tt-trinity-gamma#108","repo":"ghashtag/tt-trinity-gamma","number":108,"title":"🚨 SKY130 nightly regression · run 26672909194","hits":[]},{"key":"ghashtag/tt-trinity-gamma#107","repo":"ghashtag/tt-trinity-gamma","number":107,"title":"🚨 SKY130 nightly regression · run 26615721300","hits":[]},{"key":"ghashtag/tt-trinity-gamma#106","repo":"ghashtag/tt-trinity-gamma","number":106,"title":"🚨 SKY130 nightly regression · run 26552423903","hits":[]},{"key":"ghashtag/tt-trinity-gamma#105","repo":"ghashtag/tt-trinity-gamma","number":105,"title":"🚨 SKY130 nightly regression · run 26488524051","hits":[]},{"key":"ghashtag/tt-trinity-gamma#104","repo":"ghashtag/tt-trinity-gamma","number":104,"title":"🚨 SKY130 nightly regression · run 26430103667","hits":[]},{"key":"ghashtag/tt-trinity-gamma#103","repo":"ghashtag/tt-trinity-gamma","number":103,"title":"🚨 SKY130 nightly regression · run 26381270023","hits":[]},{"key":"ghashtag/tt-trinity-gamma#102","repo":"ghashtag/tt-trinity-gamma","number":102,"title":"🚨 SKY130 nightly regression · run 26350515340","hits":[]},{"key":"ghashtag/tt-trinity-gamma#101","repo":"ghashtag/tt-trinity-gamma","number":101,"title":"🚨 SKY130 nightly regression · run 26321929095","hits":[]},{"key":"ghashtag/tt-trinity-gamma#100","repo":"ghashtag/tt-trinity-gamma","number":100,"title":"🚨 SKY130 nightly regression · run 26266284414","hits":[]},{"key":"ghashtag/tt-trinity-gamma#99","repo":"ghashtag/tt-trinity-gamma","number":99,"title":"🚨 SKY130 nightly regression · run 26203227553","hits":[]},{"key":"ghashtag/tt-trinity-gamma#98","repo":"ghashtag/tt-trinity-gamma","number":98,"title":"🚨 SKY130 nightly regression · run 26138940119","hits":[]},{"key":"ghashtag/tt-trinity-gamma#97","repo":"ghashtag/tt-trinity-gamma","number":97,"title":"🚨 SKY130 nightly regression · run 26073886086","hits":[]},{"key":"ghashtag/tt-trinity-gamma#94","repo":"ghashtag/tt-trinity-gamma","number":94,"title":"[CL-02] Adversarial Training Loop - Gap-1 Enhancement","hits":[{"specId":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"train_step:250"},{"kind":"terms","value":"training, steps, size, verified, data, train, step"}]},{"specId":"c7195be79157467c96d65abbf92dcaf4e20bc194e8a800cfcde8571cffecf4a2","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"train_step:52"},{"kind":"terms","value":"epsilon, start, train, step"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"alpha, evolve, train, training, efficiency, loop, compliance, gap"}]}]},{"key":"ghashtag/tt-trinity-gamma#93","repo":"ghashtag/tt-trinity-gamma","number":93,"title":"[CL-03] Cryptographic Audit Trail - Gap-10 Enhancement","hits":[{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","relation":"reference","coverage":"unverified","score":1016,"reasons":[{"kind":"symbol","value":"merkle_root:84"},{"kind":"terms","value":"merkle, proof, root"}]}]},{"key":"ghashtag/tt-trinity-gamma#92","repo":"ghashtag/tt-trinity-gamma","number":92,"title":"[CL-02] Adversarial Training Loop - Gap-1 Enhancement","hits":[{"specId":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","relation":"reference","coverage":"unverified","score":1032,"reasons":[{"kind":"symbol","value":"train_step:250"},{"kind":"terms","value":"training, steps, size, verified, data, train, step"}]},{"specId":"c7195be79157467c96d65abbf92dcaf4e20bc194e8a800cfcde8571cffecf4a2","relation":"reference","coverage":"unverified","score":1015,"reasons":[{"kind":"symbol","value":"train_step:52"},{"kind":"terms","value":"epsilon, start, train, step"}]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"alpha, evolve, train, training, efficiency, loop, compliance, gap"}]}]},{"key":"ghashtag/tt-trinity-gamma#91","repo":"ghashtag/tt-trinity-gamma","number":91,"title":"[OS-03] Python SDK","hits":[]},{"key":"ghashtag/tt-trinity-gamma#90","repo":"ghashtag/tt-trinity-gamma","number":90,"title":"[OS-02] CI/CD for Community","hits":[]},{"key":"ghashtag/tt-trinity-gamma#89","repo":"ghashtag/tt-trinity-gamma","number":89,"title":"[OS-01] t27 Toolchain v2.0","hits":[]},{"key":"ghashtag/tt-trinity-gamma#88","repo":"ghashtag/tt-trinity-gamma","number":88,"title":"[PUB-03] PhD Dissertation","hits":[]},{"key":"ghashtag/tt-trinity-gamma#87","repo":"ghashtag/tt-trinity-gamma","number":87,"title":"[PUB-02] Conference Paper","hits":[]},{"key":"ghashtag/tt-trinity-gamma#86","repo":"ghashtag/tt-trinity-gamma","number":86,"title":"[PUB-01] Journal Paper - arXiv first","hits":[]},{"key":"ghashtag/tt-trinity-gamma#85","repo":"ghashtag/tt-trinity-gamma","number":85,"title":"[SN-03] STDP Learning Module","hits":[]},{"key":"ghashtag/tt-trinity-gamma#84","repo":"ghashtag/tt-trinity-gamma","number":84,"title":"[SN-02] Lateral Inhibition Network","hits":[]},{"key":"ghashtag/tt-trinity-gamma#83","repo":"ghashtag/tt-trinity-gamma","number":83,"title":"[SN-01] Adaptive LIF Neuron","hits":[]},{"key":"ghashtag/tt-trinity-gamma#82","repo":"ghashtag/tt-trinity-gamma","number":82,"title":"[EN-03] Analog Neuron Hybrid - 1000× Target","hits":[]},{"key":"ghashtag/tt-trinity-gamma#81","repo":"ghashtag/tt-trinity-gamma","number":81,"title":"[EN-02] Event-Driven Compute - 10× Active","hits":[{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"compute, dependencies, driven"}]}]},{"key":"ghashtag/tt-trinity-gamma#80","repo":"ghashtag/tt-trinity-gamma","number":80,"title":"[EN-01] Subthreshold Clock Gating - 100× Idle","hits":[{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","relation":"candidate","coverage":"unverified","score":65,"reasons":[{"kind":"terms","value":"subth, clk, threshold, voltage, gate, power, active, idle"}]},{"specId":"bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"testbench, clk, clock, cycles, success, idle"}]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"zero, clock, status, idle"}]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","relation":"candidate","coverage":"unverified","score":16,"reasons":[{"kind":"terms","value":"idle, clock"}]}]},{"key":"ghashtag/tt-trinity-gamma#79","repo":"ghashtag/tt-trinity-gamma","number":79,"title":"[CL-04] Coq Verification Export Tool","hits":[]},{"key":"ghashtag/tt-trinity-gamma#78","repo":"ghashtag/tt-trinity-gamma","number":78,"title":"[EPIC] TRI-NET 2026 Scientific Improvement Plan","hits":[{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"net, priority, target, energy, efficiency, power, plan"}]},{"specId":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"net, impact, improvement"}]}]},{"key":"ghashtag/tt-trinity-gamma#75","repo":"ghashtag/tt-trinity-gamma","number":75,"title":"[CL-01] AR-ML Co-Processor Interface","hits":[]},{"key":"ghashtag/tt-trinity-gamma#74","repo":"ghashtag/tt-trinity-gamma","number":74,"title":"[EPIC] TRI-NET 2026 Scientific Improvement Plan","hits":[{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","relation":"candidate","coverage":"unverified","score":38,"reasons":[{"kind":"terms","value":"net, priority, target, energy, efficiency, power, plan"}]},{"specId":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"net, impact, improvement"}]}]},{"key":"ghashtag/turbobaby-user-bot#37","repo":"ghashtag/turbobaby-user-bot","number":37,"title":"Boot schema self-check fired while migrations were still committing (false positive on live deploy)","hits":[{"specId":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"bot, status, read, returns, ran, live, self"}]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"column, self, gate, through, read, live"}]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","relation":"candidate","coverage":"unverified","score":37,"reasons":[{"kind":"terms","value":"column, migration, rows, schema, live, ran"}]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":34,"reasons":[{"kind":"terms","value":"turbobaby, bot, deploy, gate, live"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"catalog, schema, migration, live, selects"}]}]},{"key":"ghashtag/turbobaby-user-bot#35","repo":"ghashtag/turbobaby-user-bot","number":35,"title":"Wire the ambient market literals to the declared profile (D18 follow-up)","hits":[{"specId":"9644a4022fd22cd07d2917162571657681889d2e6fe3cfd706ca864ab64921f3","relation":"candidate","coverage":"unverified","score":79,"reasons":[{"kind":"terms","value":"market, profile, seed, measured, utc, offset, country, currency"}]}]},{"key":"ghashtag/turbobaby-user-bot#32","repo":"ghashtag/turbobaby-user-bot","number":32,"title":"Clippy gates are red at origin/main (134 wasm / server dead-code) — toolchain lint drift, zero them at the pinned toolchain","hits":[{"specId":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","relation":"reference","coverage":"unverified","score":1005,"reasons":[{"kind":"symbol","value":"sort_by:27"},{"kind":"terms","value":"sort"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":48,"reasons":[{"kind":"terms","value":"verify, tree, map, lint, toolchain, state, reference, sweep"}]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","relation":"candidate","coverage":"unverified","score":46,"reasons":[{"kind":"terms","value":"backend, legacy, main, std, path, lint, list, fmt"}]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","relation":"candidate","coverage":"unverified","score":31,"reasons":[{"kind":"terms","value":"drift, path, state, pinned, per"}]},{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","relation":"candidate","coverage":"unverified","score":28,"reasons":[{"kind":"terms","value":"pinned, reference, zero, per, measured"}]}]},{"key":"ghashtag/turbobaby-user-bot#31","repo":"ghashtag/turbobaby-user-bot","number":31,"title":"EPIC: Operationalize fleet administration, observability, and production delivery","hits":[]},{"key":"ghashtag/turbobaby-user-bot#30","repo":"ghashtag/turbobaby-user-bot","number":30,"title":"EPIC: Consolidate, execute, and publish the TurboBaby .t27 contracts","hits":[{"specId":"79072265b3262e1328804af2c4408d96dec6c525f57f60fff3a181e5236fe9b2","relation":"reference","coverage":"unverified","score":2036,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/agents/turbobaby.t27"},{"kind":"terms","value":"turbobaby, agents, contract, world, invariant, price, authority, rule"}]}]},{"key":"ghashtag/turbobaby-user-bot#29","repo":"ghashtag/turbobaby-user-bot","number":29,"title":"EPIC: Ship the inventory-backed TurboBaby ride game","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"reference","coverage":"unverified","score":2182,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/turbobaby/ride_game.t27"},{"kind":"terms","value":"turbobaby, ride, game, world, speed, unit, displacements, per"}]},{"specId":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"turbobaby, ride, world, game, may, unavailable, empty, start"}]}]},{"key":"ghashtag/turbobaby-user-bot#28","repo":"ghashtag/turbobaby-user-bot","number":28,"title":"EPIC: Deliver honest rental commerce, checkout, and sales","hits":[{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":127,"reasons":[{"kind":"terms","value":"commerce, invalid, rental, sale, cart, state, fulfillment, pickup"}]}]},{"key":"ghashtag/turbobaby-user-bot#27","repo":"ghashtag/turbobaby-user-bot","number":27,"title":"EPIC: Build the canonical bike catalog and fleet model","hits":[{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":116,"reasons":[{"kind":"terms","value":"bike, catalog, availability, schema, class, displacement, row, valid"}]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"evidence, canonical, build, dependencies, catalog, work"}]},{"specId":"dd87dea212ee6b002f1beb0da611d8599e23f4c3ea31a1460404131532feac0c","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"catalog, canonical, backend, targets, acceptance, evidence, work"}]},{"specId":"fbcf95d6a288082c34c0ddcde52511345bfc089a8c49af43803ed0b64155b033","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"catalog, canonical, backend, targets, acceptance, evidence, work"}]},{"specId":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","relation":"candidate","coverage":"unverified","score":24,"reasons":[{"kind":"terms","value":"canonical, model, seed, out"}]}]},{"key":"ghashtag/turbobaby-user-bot#26","repo":"ghashtag/turbobaby-user-bot","number":26,"title":"EPIC: Complete the TurboBaby product identity and retire live cannabis-era paths","hits":[{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","relation":"candidate","coverage":"unverified","score":73,"reasons":[{"kind":"terms","value":"turbobaby, bot, proof, canonical, owner, per, evidence, scope"}]},{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":51,"reasons":[{"kind":"terms","value":"default, fallback, live, order, identity, per, hub, rows"}]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"backend, data, too, large, default, per, byte, identity"}]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","relation":"candidate","coverage":"unverified","score":49,"reasons":[{"kind":"terms","value":"backend, data, too, large, default, per, byte, identity"}]},{"specId":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","relation":"candidate","coverage":"unverified","score":21,"reasons":[{"kind":"terms","value":"identity, product, dist"}]}]},{"key":"ghashtag/turbobaby-user-bot#25","repo":"ghashtag/turbobaby-user-bot","number":25,"title":"Price provenance: the client price is the door number, never computed from a file","hits":[{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":151,"reasons":[{"kind":"terms","value":"bot, seed, measured, price, authority, rate, offered, published"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":100,"reasons":[{"kind":"terms","value":"bot, seed, measured, unit, per, class, scooter, motorcycle"}]}]},{"key":"ghashtag/turbobaby-user-bot#24","repo":"ghashtag/turbobaby-user-bot","number":24,"title":"CI and deploy: rename the service, keep the strict lints","hits":[{"specId":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"railway, deploy, service"}]}]},{"key":"ghashtag/turbobaby-user-bot#23","repo":"ghashtag/turbobaby-user-bot","number":23,"title":"Define the `turbobaby-bot` agent for this repository","hits":[{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"turbobaby, bot, boundary, rule, write"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"turbobaby, bot, out, rule, label"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"turbobaby, bot, honesty, nothing"}]},{"specId":"79072265b3262e1328804af2c4408d96dec6c525f57f60fff3a181e5236fe9b2","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"turbobaby, bot, agents, pii, rule"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"turbobaby, bot, rule, label, owner"}]}]},{"key":"ghashtag/turbobaby-user-bot#21","repo":"ghashtag/turbobaby-user-bot","number":21,"title":"spec: pricing_honesty.t27 - an absent rate is not zero","hits":[{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"reference","coverage":"unverified","score":2104,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27"},{"kind":"terms","value":"turbobaby, pricing, honesty, measured, families, rate, zero, absent"}]}]},{"key":"ghashtag/turbobaby-user-bot#20","repo":"ghashtag/turbobaby-user-bot","number":20,"title":"spec: ride_game.t27","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"reference","coverage":"unverified","score":2095,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/turbobaby/ride_game.t27"},{"kind":"symbol","value":"top_speed:130"},{"kind":"symbol","value":"steer_rate:163"},{"kind":"terms","value":"turbobaby, ride, game, speed, steer, displacement, top, class"}]},{"specId":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"turbobaby, ride, game, engine"}]}]},{"key":"ghashtag/turbobaby-user-bot#19","repo":"ghashtag/turbobaby-user-bot","number":19,"title":"spec: availability.t27","hits":[{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"reference","coverage":"unverified","score":2057,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/turbobaby/availability.t27"},{"kind":"symbol","value":"available_count:231"},{"kind":"terms","value":"turbobaby, availability, status, available, rented, reserved, family, fleet"}]}]},{"key":"ghashtag/turbobaby-user-bot#18","repo":"ghashtag/turbobaby-user-bot","number":18,"title":"spec: deposit_tiers.t27","hits":[{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"reference","coverage":"unverified","score":2078,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27"},{"kind":"terms","value":"turbobaby, deposit, tiers, tier, thb, gaps, 300cc, deposits"}]}]},{"key":"ghashtag/turbobaby-user-bot#17","repo":"ghashtag/turbobaby-user-bot","number":17,"title":"spec: rental_terms.t27","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"reference","coverage":"unverified","score":2060,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/turbobaby/rental_terms.t27"},{"kind":"terms","value":"turbobaby, rental, terms, pricing, term, days, two, daily"}]}]},{"key":"ghashtag/turbobaby-user-bot#16","repo":"ghashtag/turbobaby-user-bot","number":16,"title":"spec: bike_catalog.t27","hits":[{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"reference","coverage":"unverified","score":2057,"reasons":[{"kind":"path","value":"turbobaby-user-bot/specs/turbobaby/bike_catalog.t27"},{"kind":"terms","value":"turbobaby, bot, bike, catalog, availability, schema, class, displacement"}]},{"specId":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","relation":"reference","coverage":"unverified","score":2016,"reasons":[{"kind":"path","value":"specs/demos/hello_world.t27"},{"kind":"terms","value":"demos, hello, world"}]},{"specId":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","relation":"reference","coverage":"unverified","score":2013,"reasons":[{"kind":"path","value":"specs/storage/schema.t27"},{"kind":"terms","value":"storage, schema, lock"}]}]},{"key":"ghashtag/turbobaby-user-bot#15","repo":"ghashtag/turbobaby-user-bot","number":15,"title":"Game assets: one recognisable silhouette per model family","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":43,"reasons":[{"kind":"terms","value":"game, per, class, scooter, families, total, family"}]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"candidate","coverage":"unverified","score":41,"reasons":[{"kind":"terms","value":"produce, per, one, model, low, total, class"}]},{"specId":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","relation":"candidate","coverage":"unverified","score":30,"reasons":[{"kind":"terms","value":"weight, cube, model, per, out"}]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","relation":"candidate","coverage":"unverified","score":27,"reasons":[{"kind":"terms","value":"family, total, model, weight, per"}]},{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","relation":"candidate","coverage":"unverified","score":23,"reasons":[{"kind":"terms","value":"model, one, per"}]}]},{"key":"ghashtag/turbobaby-user-bot#14","repo":"ghashtag/turbobaby-user-bot","number":14,"title":"Reuse the existing high-score path for the biker game","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"ride, game, list, path, key"}]},{"specId":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","relation":"candidate","coverage":"unverified","score":26,"reasons":[{"kind":"terms","value":"ride, game, score"}]}]},{"key":"ghashtag/turbobaby-user-bot#13","repo":"ghashtag/turbobaby-user-bot","number":13,"title":"Game handling derived from real displacement and class","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":103,"reasons":[{"kind":"terms","value":"game, speed, unit, displacement, per, top, class, scooter"}]},{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":69,"reasons":[{"kind":"terms","value":"bike, catalog, class, scooter, motorcycle, displacement, row, family"}]}]},{"key":"ghashtag/turbobaby-user-bot#12","repo":"ghashtag/turbobaby-user-bot","number":12,"title":"The biker game: replace skate.js with a rider whose bike is really in stock","hits":[{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":65,"reasons":[{"kind":"terms","value":"ride, game, rideable, available, free, state, live, empty"}]}]},{"key":"ghashtag/turbobaby-user-bot#11","repo":"ghashtag/turbobaby-user-bot","number":11,"title":"Sale flow: units offered for sale, price on request","hits":[{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":72,"reasons":[{"kind":"terms","value":"user, bot, available, family, units, offered, out, register"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":71,"reasons":[{"kind":"terms","value":"user, bot, price, offered, published, thb, null, figure"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":61,"reasons":[{"kind":"terms","value":"user, bot, thb, published, offered, family, price, units"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"user, bot, boundary, rental, sale, price, write, record"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":52,"reasons":[{"kind":"terms","value":"user, bot, unit, units, available, offered, price, family"}]}]},{"key":"ghashtag/turbobaby-user-bot#10","repo":"ghashtag/turbobaby-user-bot","number":10,"title":"Checkout for rental: term, deposit, delivery zone, pickup","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"reference","coverage":"unverified","score":1059,"reasons":[{"kind":"symbol","value":"TERM_DAYS:134"},{"kind":"terms","value":"rental, path, term, days, two, model, base, thb"}]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","relation":"candidate","coverage":"unverified","score":71,"reasons":[{"kind":"terms","value":"boundary, rental, cart, pickup, delivery, checkout, returns, order"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":33,"reasons":[{"kind":"terms","value":"deposit, thb, family, rental"}]}]},{"key":"ghashtag/turbobaby-user-bot#9","repo":"ghashtag/turbobaby-user-bot","number":9,"title":"Bike detail screen: real specs, real units, real terms","hits":[{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":59,"reasons":[{"kind":"terms","value":"bike, class, displacement, units, family, unit, purchase, service"}]}]},{"key":"ghashtag/turbobaby-user-bot#8","repo":"ghashtag/turbobaby-user-bot","number":8,"title":"Catalog API: /api/bikes with class, displacement and availability filters","hits":[{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":83,"reasons":[{"kind":"terms","value":"bike, catalog, availability, class, scooter, motorcycle, displacement, min"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":79,"reasons":[{"kind":"terms","value":"availability, status, available, rented, service, family, keys, units"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":77,"reasons":[{"kind":"terms","value":"unit, displacement, min, class, scooter, motorcycle, rate, units"}]},{"specId":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","relation":"candidate","coverage":"unverified","score":35,"reasons":[{"kind":"terms","value":"catalog, api, limit, min, family, status, response"}]}]},{"key":"ghashtag/turbobaby-user-bot#7","repo":"ghashtag/turbobaby-user-bot","number":7,"title":"Data honesty: an absent price renders as a dash, never a zero","hits":[{"specId":"979b29b19e25610e1bdaac20f03ff6c2f302cf6809ccdbdd6b6f900b91031202","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"unwrap_or:34"},{"kind":"terms","value":"unwrap"}]},{"specId":"f4c734a4a68e2c20c6ff6824ee431d2ea1912898dc36072c2ee1229fbe79a688","relation":"reference","coverage":"unverified","score":1006,"reasons":[{"kind":"symbol","value":"unwrap_or:33"},{"kind":"terms","value":"unwrap"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":101,"reasons":[{"kind":"terms","value":"honesty, measured, price, families, rate, day, zero, thb"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":63,"reasons":[{"kind":"terms","value":"deposit, measured, thb, absent, families, family, counts, price"}]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":54,"reasons":[{"kind":"terms","value":"measured, family, families, zero, out, price, existing, rate"}]}]},{"key":"ghashtag/turbobaby-user-bot#6","repo":"ghashtag/turbobaby-user-bot","number":6,"title":"Seed the catalog with the real fleet: 14 families (13 offered), 37 units","hits":[{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":122,"reasons":[{"kind":"terms","value":"availability, measured, status, family, units, families, offered, fleet"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":86,"reasons":[{"kind":"terms","value":"seed, measured, unit, per, class, rate, units, catalog"}]},{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":79,"reasons":[{"kind":"terms","value":"bike, catalog, availability, measured, class, units, family, key"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":72,"reasons":[{"kind":"terms","value":"availability, seed, measured, thb, fleet, families, offered, family"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":67,"reasons":[{"kind":"terms","value":"availability, seed, measured, families, rate, offered, day, thb"}]}]},{"key":"ghashtag/turbobaby-user-bot#5","repo":"ghashtag/turbobaby-user-bot","number":5,"title":"Migration 079: rental terms and deposit tiers","hits":[{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","relation":"reference","coverage":"unverified","score":1073,"reasons":[{"kind":"symbol","value":"TERM_DAYS:134"},{"kind":"terms","value":"rental, terms, term, days, per, min, thb, day"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":80,"reasons":[{"kind":"terms","value":"deposit, tiers, seed, tier, thb, min, family, 300cc"}]}]},{"key":"ghashtag/turbobaby-user-bot#4","repo":"ghashtag/turbobaby-user-bot","number":4,"title":"Migration 078: `bike_units` (physical fleet units)","hits":[{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":79,"reasons":[{"kind":"terms","value":"availability, status, available, rented, service, family, units, fleet"}]},{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":55,"reasons":[{"kind":"terms","value":"bike, availability, row, units, family, key, unit, service"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":36,"reasons":[{"kind":"terms","value":"availability, fleet, family, price, units"}]}]},{"key":"ghashtag/turbobaby-user-bot#3","repo":"ghashtag/turbobaby-user-bot","number":3,"title":"Migration 077: the `bikes` table (model families)","hits":[{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"reference","coverage":"unverified","score":1069,"reasons":[{"kind":"symbol","value":"is_available:202"},{"kind":"terms","value":"available, family, units, families, fleet, out, price, rate"}]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","relation":"candidate","coverage":"unverified","score":40,"reasons":[{"kind":"terms","value":"table, column, key, migration, days, schema, row"}]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","relation":"candidate","coverage":"unverified","score":32,"reasons":[{"kind":"terms","value":"schema, families, migration, table"}]},{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","relation":"candidate","coverage":"unverified","score":18,"reasons":[{"kind":"terms","value":"table, model, min"}]}]},{"key":"ghashtag/turbobaby-user-bot#2","repo":"ghashtag/turbobaby-user-bot","number":2,"title":"Rebrand: replace the weed/strain domain with the bike domain","hits":[]},{"key":"ghashtag/turbobaby-user-bot#1","repo":"ghashtag/turbobaby-user-bot","number":1,"title":"EPIC: TurboBaby User Bot - motorbike rental & sales Mini App","hits":[{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","relation":"candidate","coverage":"unverified","score":150,"reasons":[{"kind":"terms","value":"turbobaby, user, bot, availability, measured, available, service, family"}]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","relation":"candidate","coverage":"unverified","score":141,"reasons":[{"kind":"terms","value":"turbobaby, user, bot, game, measured, unit, displacement, per"}]},{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","relation":"candidate","coverage":"unverified","score":123,"reasons":[{"kind":"terms","value":"turbobaby, user, bot, bike, catalog, availability, measured, class"}]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","relation":"candidate","coverage":"unverified","score":118,"reasons":[{"kind":"terms","value":"turbobaby, user, bot, deposit, tiers, availability, measured, tier"}]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","relation":"candidate","coverage":"unverified","score":104,"reasons":[{"kind":"terms","value":"turbobaby, user, bot, pricing, honesty, availability, measured, price"}]}]}],"specs":[{"id":"000cf7b4fd568fd728063f7f1d28acd812a43d58ceda7180381755d2ea9b7eaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/tf3.t27"}]},{"id":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/formats_catalog.t27"}]},{"id":"003820a1908b213b5c065d89ace38ed0ce6d40a4ddbf077c5f3d640f5f66f612","sources":[{"repo":"ghashtag/t27","path":"specs/ar/ternary_logic.t27"}]},{"id":"0044630e40dc2673a2d1210e848f1a3cd41cc2b21b541bec98e305f0192a2de7","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27"}]},{"id":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","sources":[{"repo":"ghashtag/t27","path":"specs/nn/gla.t27"}]},{"id":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/arty_a7_integration.t27"}]},{"id":"0119d4168128917ef6fbd8a991edae96003724af32280a9af0bd8fdbef080656","sources":[{"repo":"ghashtag/t27","path":"specs/functions/render-job-run.t27"}]},{"id":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/arch.t27"}]},{"id":"01abf020304a8dc0ce0df51ec4596f8d0e743cfce6785505b8414b7aca0c65b3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/packed_trit.t27"}]},{"id":"01aeef2f32ca6f6294e444026fff8d82b8a0f9dfc7bc39abb42c7894650a3d66","sources":[{"repo":"ghashtag/t27","path":"specs/math/zamolodchikov_e8.t27"}]},{"id":"022a99e9b297c32b50c7b82c7eecdbbc302dce6a374027d278ee30423252c9f6","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/02_functions.t27"}]},{"id":"025959391860663c194a10874f66af7dd8da26f8597f5bee89be66a283a66f60","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/html.t27"}]},{"id":"0282d379eabfe96387bde647535d0a2849c755fdbb32ab86ec98a99444ea0d13","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/settlement_law.t27"}]},{"id":"028f49b8d26ed69b4f8db6991666a5f51b9a2c2737291ceb3258bfd11ff7c3e7","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-blog-post.t27"}]},{"id":"031a4a295e848f75a59247991f0f074e203d34b4521a2c5f2f5ac511b3095739","sources":[{"repo":"ghashtag/t27","path":"specs/automation/inngest-probe-suite.t27"}]},{"id":"03eefe082ee54a6ca22094e90aca020dbec9bee84f0e0b2f3402b98451405dc5","sources":[{"repo":"ghashtag/t27","path":"specs/math/constants.t27"}]},{"id":"03fde1f995bd2cd29dfa456a54c99781b7e86fffe3930b99972b38513bfedf18","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/strings.t27"}]},{"id":"040d3cdec243fde652aa9fb3cc81f1675508f8c1b485900003734245624c6d23","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/ternary_isa.t27"}]},{"id":"051d7f2cf4839836609024f1e085e6f62fb14ca794d8ad779468c9b8974192ff","sources":[{"repo":"ghashtag/t27","path":"specs/shell/environment.t27"}]},{"id":"051e8c6f568d660831950ec89c3148aa9219001db41877d1606d6ad5c019c53f","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/pilot_pretraining.t27"}]},{"id":"05267a4e1f59698a7b77f9960613213d76323188e7e822bfce442888d8367d5a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/avgpool2d_layer.t27"}]},{"id":"054368075009acf87f6a8d262d47083b0d2fea4f2d01fd1fd17fd56be345245f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_node_identity.t27"}]},{"id":"057d87866236087a7d96ae0fc8b6cc5211d99e16aacd540373154853fef58436","sources":[{"repo":"ghashtag/t27","path":"specs/shell/process.t27"}]},{"id":"05914994d71d3fcee52588484794e6ad36dcf2f680e2a5694b6208df52dfd55b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf32.t27"}]},{"id":"059eee7ed42e869d4952cd8ea93666c80fdf71ee38337a20bc2d9839dececea6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/anomaly_detector.t27"}]},{"id":"05a1e633c80c5eb5e8f7f6f24a57c741492f5cc920591b8e5db7b48d51bcf0ed","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/flatten_layer.t27"}]},{"id":"05f3fec4bc98246246aa5cfa04b845862c7f71326f9892120aad67a1dfc8e670","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lockfree_stack.t27"}]},{"id":"05f807c932b9a3ce5837100fe8432e8dfddc733db9f62a494c777ff6da885607","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/rnn_cell.t27"}]},{"id":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/transform.t27"}]},{"id":"07191109132327c0a3743ccc06815ccd2c64b5b6d604b358d26cb6e236dadfe6","sources":[{"repo":"ghashtag/t27","path":"specs/functions/payment-ai-server-process.t27"}]},{"id":"074e665f5dff5af1a1ba81387c240b2b614dfa871221665f18bce0919e2726f2","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/self_healing.t27"}]},{"id":"0766c4ee0c06be78156aa2d0d148549b21da87c3db232aeab3e64d28df611ff5","sources":[{"repo":"ghashtag/t27","path":"specs/agents/x.t27"}]},{"id":"0774668f000b9f30569b5640ba0a091dba5107d3b8f591bc69a6daf196915ae6","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward.t27"}]},{"id":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/m3_multihop.t27"}]},{"id":"0797e9acbcf62779b5418e7ddbd6987a057455497a1a0c0a6d0f4117d9d338e7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf512.t27"}]},{"id":"07c1530c363c8cc62ef06874ca66311fb0da6891403a83ee756a1e6d79dc564a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/namespace.t27"}]},{"id":"0839d483ebdbf439a28ee13f15b8879c53c4c85687d842164106e6991a12ed73","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf4.t27"}]},{"id":"08411002114856e92f749b10f9a34354a932b25e81f2fe881aed62530bf885a5","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_05_no_semicolon.t27"}]},{"id":"08a7874c72e53ac1054c02ddb4a7649a6c4efb3c27ab9da7f4e148f6b9d05024","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/experience.t27"}]},{"id":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/docs_generator.t27"}]},{"id":"090f5fe32fbec3c6907143f4087ae455ec0f77ec0c8d2bde1c985cba52b6c29c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/formal.t27"}]},{"id":"09185d50913f410e9c5cdd3338d2fd38adb97f0997208c6440c89b2325268b9c","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-status.t27"}]},{"id":"093a8c454b5b7ac163fa142bcf6e9ad46fbc2acc1e8d1eb49bf38ef036f915db","sources":[{"repo":"ghashtag/t27","path":"specs/agents/d.t27"}]},{"id":"093efd623bffb2e986860837029e79e121722495aa9e232f3dba861ab28fda72","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_routing.t27"}]},{"id":"094222aaee6baf1f769008f2adc84ef15355ff58c9313e44285f16cdda26ae18","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/norm.t27"}]},{"id":"095347af6f8f5f079b3e9cc138edcc5cc9dc15ecc82a153fab158de646476958","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bootrom.t27"}]},{"id":"0976a74d6276db59831a2cab0bdff4086fe7f692c9081ba4b58f28def885f404","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/phi_ratio.t27"}]},{"id":"09f58e175bfeb73fb49d30bfdc6e0b197d775e6883fa8bb9417dffc92ffefebd","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-tri.t27"}]},{"id":"0a5a2fd4d418235a976748b76bf5d503b4a17e6b41e0c721fc696c17fad8d71d","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_minimal.t27"}]},{"id":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","sources":[{"repo":"ghashtag/tt-trinity-gamma","path":"tt-trinity-gamma/specs/numeric/tri_net_formats.t27"}]},{"id":"0a8c8fb8b35a2791fbab26a8a95f310c75edeff390902cda5972dabee26abcaa","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hir.t27"}]},{"id":"0aa1373204ff6f8fd41fd8d19428f3d0754fc124578e3f1fbcc2f55c9ff55f4a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/serve.t27"}]},{"id":"0aac5e911f0cf60e0912acc755c63777ae91da62510a806363ff99f9c3599cde","sources":[{"repo":"ghashtag/t27","path":"specs/agents/m.t27"}]},{"id":"0ad836431b5b70772112f6f3025589ce1f77208ca6e2eef8b2115057eab7b495","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/memory.t27"}]},{"id":"0af17f95057271f88d5ebbb4793dda45fcf0f97d95eaf3e8264be5d1efc6ec23","sources":[{"repo":"ghashtag/t27","path":"specs/physics/quantum.t27"}]},{"id":"0b5f7bff39da7f29b90ff5ff965bd07cdf1ffc1bb523a81cc03ca617fa57163a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/byte_utils.t27"}]},{"id":"0b8463e8a0554acf19263278af0caae2e2982d7783ff3a9498bfbd7e4c21bf6e","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma-conflict.t27"}]},{"id":"0bcd805f2c789604a16712f910a652c698fe0b16a2c26ccb7a962a764e379943","sources":[{"repo":"ghashtag/t27","path":"specs/agents/a.t27"}]},{"id":"0c0275fddc86371a7a8e83a01bd502e06183799cf51f0c46a29c1d444231cc0d","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/bdd_probe.t27"}]},{"id":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/docs_generator.t27"}]},{"id":"0c5420f2741baa6b74f193374a5bbedd2014a8ad7e9f7ca76b990d3caf212145","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_11.t27"}]},{"id":"0c558f36ccaa222e6da0edd224b43599dc41bccc897a1d5fa61fde68d509e90b","sources":[{"repo":"ghashtag/t27","path":"specs/server/mdns.t27"}]},{"id":"0c5d3c7ae88a186a93e8f9d59d674136e0a1c7555e6b2d4c3f58dfa4522b7c11","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_06_intact_field.t27"}]},{"id":"0ca5ed85564d0231316703fb63605e962ea2cbf2fb37a273c7d9eac793a45cd5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/topic.t27"}]},{"id":"0cba1dd14aac303207075aa28d1ad906b44b108ad1fb6f0bb10bad7a4c9f116b","sources":[{"repo":"ghashtag/t27","path":"specs/conformance/e2e_scenarios.t27"}]},{"id":"0cf723b0c54a06a9851f0f635f2191829a0c100860d1c12896afa5e4bb856b8a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/memory_primitives.t27"}]},{"id":"0d086cf4354cf037854382bc5dc532b4b3e7b166276b0cd603c2962bfb09a29b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/tools.scripts.t27"}]},{"id":"0d205500e7adf560ff03ecfd59e90ee13b51f4624e27555d4142e5b184100d6b","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-wave.t27"}]},{"id":"0db5f4adc1bc7230e3e6a2b4396c25429d35834ace309a10b4601adaea6b53cc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/stack.t27"}]},{"id":"0dd7fd6cc289560d1997dd2831d004d25892651b7beb65979ecc5973699c4517","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_variant_split.t27"}]},{"id":"0e053f342b33d78bd69e302ae9afb0c11484b411d895197522c747f35a8f957f","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/superconductivity.t27"}]},{"id":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/stream_compute.t27"}]},{"id":"0e2f8e5085ed1ea2b4b2f7732c9f9de00fcd19fda8d13e1f735865aa2cd32179","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-daily-sales-advisor.t27"}]},{"id":"0e7c3b187e4d0ea8c189c50aa2a09cc2c41c6dc77a595b63a0171e7227ca977a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/phi_rule_verification.t27"}]},{"id":"0e7e84a8a4ecec39d3893764fe7374abf2f961d12f9def0d3f607fc4e3a7a296","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/verification/build_verify.t27"}]},{"id":"0eef09b67cdd371654875a6b01da947d124213a3edbcc422dd70bb1a290e6086","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/color.t27"}]},{"id":"0f0f989b64c459cd0e5fe437464dbfa1e1649b6eb7bd7a066ec6a352a35e24eb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/context.t27"}]},{"id":"0f2dee7f0f339db9e0886aff03fe2bd45a8afcd58b09ca45379736f14a384a94","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_cli.t27"}]},{"id":"0f4494d56c800b3c811c9bcfc11646a059681d0fa9fa95ca4780a118f6c1c866","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_bodyless_fn.t27"}]},{"id":"0f726fb3c27cf8e9877344bd5e4e97a04a1c9f3a76e945222f7a7aa87e7eed96","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/layernorm_layer.t27"}]},{"id":"1044d178fb800ee5aedbcc28ffb09b84ce0b85c8eb8982827c0073c523d23a84","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_arithmetic.t27"}]},{"id":"104c0dbdf3855e1c5a9474958c62722dacba04b937ccb59ad8434e152d7ff9ac","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_hidden2.t27"}]},{"id":"105570e1b9856293381a0dd3a7365177b880aaf561e8659f5d50e240a593b5be","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/comb_bitnet_layer.t27"}]},{"id":"1057f56a22357e8b4fa94871b1c98d67432d2b69dce7b80c975c2a2f635469e3","sources":[{"repo":"ghashtag/t27","path":"specs/vm/jit_semantics.t27"}]},{"id":"106dee6126f578973c0b1b47f58ea10a7ee94213d8515635272981c1dba6bc72","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_trace_tb.t27"}]},{"id":"107a9d65a33d6ab72b3a3b119cd6ab33bad72e10964c329bab4b2ca889661c96","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/placement.t27"}]},{"id":"1097cfd770915f5519ab1c5575670fa94b50ad0af6661741879c10bd7bef9e26","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_main.t27"}]},{"id":"11055f7681ca0d5588ee71899ff6cfc2d374a4564f01d03669ff54f579d1777d","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_entropy.t27"}]},{"id":"11108a3f4c94af03d615a4f82336b1671b293aa40409293448ae52a58d598b20","sources":[{"repo":"ghashtag/t27","path":"specs/functions/reels-ai-generate.t27"}]},{"id":"11b24d4332b7e356f77b233a20d578c3ec31da71ff34be37d16d29d7d4471d5b","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L2325.t27"}]},{"id":"11b8f3a02528ec76301e1d268af20761b5ad9ec4d730b8d566c076b553b196b7","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_and_not_folded.t27"}]},{"id":"121ed4a8e32889b770a8ab90b91b3bde9a7b193c66c845aac0130f7ab66c070d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_merkle.t27"}]},{"id":"121f7a349ba5b7b672b90a9f372f575e9530ef68756c687660ed6ef029278fc5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph.t27"}]},{"id":"12299009a56b6404c248457a5d524f02615a7898a3155bc991a36dd702986ac0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/match.t27"}]},{"id":"12a5bb8e6d0975bfd72b3520ac83e9adaa6f52371be8ef101ef5fd39b8fcbf6f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/clocked_counter.t27"}]},{"id":"12d9ca3f44b081970a88c4d24c10ee9dbf36eb614cf18404ff571475552c10db","sources":[{"repo":"ghashtag/t27","path":"specs/base/types.t27"}]},{"id":"12fd87a68d187972253a58cf5d38fc6b92fefe35957386eb3b1e4e586d97dbdd","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_decision_gate.t27"}]},{"id":"1311f1b9f5b826d81f9ae077069f11252df3e04ac5c1c4e40b554b4783f75ad9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/axi4_tb.t27"}]},{"id":"1326aae6ed955fdc36c27c1976a93860701410cea46d59e147be90a330540a6f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_dashboard.t27"}]},{"id":"132770a2bab3851bc2af8213e5ce75afd4fcd494e908a28b5e1cfeeff603f344","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/eternal_monitor.t27"}]},{"id":"138a62838d44acac9ecdbf7cb53e980b3884af10da968540d24e656138aa4767","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_classifier4.t27"}]},{"id":"139a9520333fcd83d201956606bfd34d888141e74416c820e3c9b53ae8f2bafc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/oracle_fidelity_map.t27"}]},{"id":"13b3fa04c5f6561717e1897221fac69f797143f8630f44d037e070de3877b05c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/fenwick_tree.t27"}]},{"id":"13c773d8e575a6f617dbcb4c86415a09bf50217b58f257efc4ea0ebc1ab90a8b","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/fleet.t27"}]},{"id":"13cb1dcbfcb0f13ec58ba56cd2b3b2b788ccbc0e2b6cfc610e46b850889bee15","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-error-report.t27"}]},{"id":"13cc1e8f0e62bc29eb874c628c2bea30950b100bd08a3919e4ff3043beb4491f","sources":[{"repo":"ghashtag/t27","path":"specs/auth/config.t27"}]},{"id":"14a059af8b8f6a7aba34ec12b15ea9d0636abd0b73f524d460f0117a1d121526","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf128.t27"}]},{"id":"1528f6decbd9543f2abdb2d2fbccc9c62989e3cd44ba7b938bef838549398d86","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/queue.t27"}]},{"id":"157a8fb50870ca517fef375dc3c21784a134db0063a4d0485749bb7e574e7202","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_queue.t27"}]},{"id":"15c746892b435ee1bc30d61ad39a671a95cbe770e20ad28949658535efd62671","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cache_management.t27"}]},{"id":"15cdaa34d26745d08ad6a1a27fa1686346285adcfb53a62632a0a3af31100ab6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0012_statement_clauses.t27"}]},{"id":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/posit16.t27"}]},{"id":"163456bf9900804666e0f1f53bb7ca1bc76faa89f27e30bf34ca869f8388ea98","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/mutate.t27"}]},{"id":"1666853e3ab9026fdff4b541a9d0654d0eb2a6c2cd6cb1062b577ff94415e6a4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/wide_rung_commutativity.t27"}]},{"id":"16699964584ead70d3dbb826461d125b1276151999c9c80699bd8e5e33d7db44","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/r_mulassign.t27"}]},{"id":"16ea516e67cf93e24863ebb8aabc61ac3bc67fed76d94a228f947258b5296f55","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/types.t27"}]},{"id":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-duet.t27"}]},{"id":"17501497f6580c8f2cc5304a94838fbae23c56b4336b3ab36a1d4f67e80e2f5a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_security.t27"}]},{"id":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf17.t27"}]},{"id":"177ea00fa0a01d842b927273c9a7226772e4bdf0cf39ca8065ee3304b1e1ea4c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf8.t27"}]},{"id":"179cd63eb41991497c2b1624ff8750a9c3665a7771e43ac90c432595217c41f7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async.t27"}]},{"id":"17c60a99b292d30a67a6c772d5960a3524bca0ffc13f40fb84b9fc7e2c7eae3c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/cloud_orchestrator.t27"}]},{"id":"17e2121ad5a409fe247a3829ab0c46936fd4e374eb6cccc220a6c45311ca419c","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_nll.t27"}]},{"id":"17e6e2ecc22a850b5c3d8e109e76dacf40825b8d718a19c1cfd25a608c6570ae","sources":[{"repo":"ghashtag/t27","path":"specs/brain/neural_gamma.t27"}]},{"id":"1808c4120ee9ecc32b7995853c248d3e57fe16dfeb8e5e97c197ba0160519b2f","sources":[{"repo":"ghashtag/t27","path":"specs/physics/e8_lqg_bridge.t27"}]},{"id":"18757d291f23108eb05b89195d374e3a35643ed0d74c57a9caf8d05cc918a7f8","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/memory_tb.t27"}]},{"id":"18993c34fb1d21ab255a8071af2f5bfc747f194b892ea76644496b934c6990b7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hello.t27"}]},{"id":"189991c3d70f34e820450087b50a7d572be1baa821137533ee3c56b0aee57145","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/swarm_agents.t27"}]},{"id":"18c5e62bf0684aa0d53de69b1769ee150ee9ad1113b8b41ffb532f20087758a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/energy_aware_routing.t27"}]},{"id":"18e4d3de481682bb89ef06cca09a13dab14b2e9e5b2faf1de33c0e402b19fe76","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json_writer.t27"}]},{"id":"18ef09e675426f4fec4d5ac12678b1b5fe9670cd4cd366de0288d21ce46c9ae1","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum.t27"}]},{"id":"1916b5ef79c7a277691bd89e85161a6c6eeb4496115c875708303ec88cf39bbe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_clip_loss.t27"}]},{"id":"1954284a2f9b5b29dff46df7365664c2337d70054c222bb69019dffeb8631f98","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/lane_l_precheck.t27"}]},{"id":"197901547f62a48469fe038ac0580b89e17ab90168bd7f1ab461eda1217ad924","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_profiler.t27"}]},{"id":"19b5ab5a4430be22ca924c05a3bb6928960a3b3ef38b802a6e4a4bd752b2ad05","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/attention.t27"}]},{"id":"19dba96ffef309c75a31bc54d282f25026afa8beeb3a6f97600946700a5f74db","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-phi-loop.t27"}]},{"id":"1a01df4f397fe76552d278be19fd778995522fe45e9971a0ad8a017b723ca446","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/worktrees.t27"}]},{"id":"1a85a9dca026c580cc5c892fb15f566c34f56077b1137b3aa84ffbbf8976f492","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf16_to_fp16.t27"}]},{"id":"1a9efda5c73821e94c0d937d952ca5a2c0c235792b7674716943a5275c14a011","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/async_stream.t27"}]},{"id":"1aa5ec92373f3a0a9df24da027b852896fc303ec4eb50e4ee780d9abdea5aced","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-discover-callers.t27"}]},{"id":"1abd9bd8ba36e27afc61193b4da5cee668fce6a890cc6b7b0c4d44bbe13be5a9","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/bench.t27"}]},{"id":"1af58fdf369f6cf43e32bdea2ee35559bc445e4f7cb27a7fcb00eeb780d83694","sources":[{"repo":"ghashtag/t27","path":"specs/rings/ring_103_phi_sgd.t27"}]},{"id":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf16.t27"}]},{"id":"1b24b1694f18c7a0481393f176311bd7526fc2b05425dd1746211b294df65699","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_dropped_module.t27"}]},{"id":"1b83d4078b09bb7ce0a7c9ea86b3bec7c26880fa1a97085eb259c98c930b87bb","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/field_swallow.t27"}]},{"id":"1badc358e7b3bedcded55bfc6aba9c2ff976edde0c930e130560db5de6677787","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/hardware.t27"}]},{"id":"1bf58267963a4114d3b9f6ed017a10b942789add7f8196b5a058812b7c4f50db","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/tim_sort.t27"}]},{"id":"1bfab3b3ae5373ca4bcfe5f87bb793833baf91dc8c9c4f9e65182eb68fef9d72","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_train2.t27"}]},{"id":"1c1501260ff9aa29ccd8bbc389943feae2da3ecdcc567f041b28a8f902dfba87","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/quarantine_manager.t27"}]},{"id":"1c1a30bcdc55e6b2f8ad3eda8d0107f0109588bfa32eed9a16dddd8b454cdde0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/mlp_forward.t27"}]},{"id":"1c2c4ed75fb636b5111a9da51fa55a1fa03fc689daab0159c3d2dfce66984c99","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/yosys.t27"}]},{"id":"1c332b11b5cc758ef52d78c8517722fe3a7f757a8583679c2859f42aea529c97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/account_identity.t27"}]},{"id":"1c3e0fdc23d7ad66ae39662f81621504cfdab1b4660a904508b75867cbbd187e","sources":[{"repo":"ghashtag/t27","path":"specs/agents/j.t27"}]},{"id":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf16.t27"}]},{"id":"1ca3f27fd3cadb4931f82ef647d12e04f4dac20e2c632cae112490f4457c9093","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/fpga.in-repo.t27"}]},{"id":"1cb1bf87cd3f9cb92778ec47f85d079c6514ad532a7f8ee777481dd031ba4651","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/comb_ternary_dot.t27"}]},{"id":"1cc396e757d83efa5e3b66b65cd7b238e77a5b39e8d5f277e8deceb643f566ad","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/writer.t27"}]},{"id":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/m3_multihop.t27"}]},{"id":"1d1d64e5831cc6a6a565849215f783ff2c4001aa1bdf7d0c6ddf5fdd03f114fd","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_coding.t27"}]},{"id":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","sources":[{"repo":"ghashtag/t27","path":"specs/provider/adapters.t27"}]},{"id":"1d3566b76489aba82ed0353281a052a571e64b4ca51c4dbd2744cf982dd37735","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/bloom_filter.t27"}]},{"id":"1d6c9d7f9d279cf3f9f7ad3d4fa724c0bde2cc2a6f3d2f28f3f74b74b1c6744c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/src/codegen_python.t27"}]},{"id":"1d810343f5e26d852c7ebd931bba310d28129b26915bf4a6ec71c066d1199e1c","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/gf16_bfloat16_nmse.t27"}]},{"id":"1e249c99761d8f6585fd55b185588a515c04ca473bf228e9e8fc55a516afe7e4","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf12.t27"}]},{"id":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","sources":[{"repo":"ghashtag/t27","path":"specs/tools/catalog.t27"}]},{"id":"1ede200487415c520e1aa5406fbcb3590dbcf7fc8cc4b04879baad058619d052","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/sha256.t27"}]},{"id":"1f2979ec46485ffe6d160a06693bd346166dd51450f826fc1dfa8e8be350a1ab","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/timing_closure.t27"}]},{"id":"1f69f78fbcbe07d6ccc592bb92f39fd33449fdf961244731c3be644e0b8b719c","sources":[{"repo":"ghashtag/t27","path":"specs/agents/f.t27"}]},{"id":"1f82c3d43ab817edee9631be25b837a90b43651b9f24c7ac8293584454dfe274","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/avs_controller_48.t27"}]},{"id":"1fae3dc3065d42f437870518fdaf26c563adae20ac91c9d34dea1162824740c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/area_optimization.t27"}]},{"id":"1fc5326fdc967b490bc96fbfa827017ccf29246ba0dbbd5363feea2c0cb845e4","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/spi_tb.t27"}]},{"id":"1fcae111e08b409cbe15bd4a8488743e8dfdd08d3f50f75194f1d584e42c8f76","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/congestion_control.t27"}]},{"id":"1fe501e74db1912e57663fd489c9c1e004902d23cd4b1efe3fba43bc9f62bc9f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/twr_timestamp.t27"}]},{"id":"200348b47b5ced0087818255bde50e7bac8c0e479fef9f399fcc685e09f0cc34","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/vsa/ops.t27"}]},{"id":"204c8939483e6bb18f55dce184335a73236072e718045cf2308a35b76525a390","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adagrad.t27"}]},{"id":"20563b5638a432017af358e732d4c4b864b29c17d2d521cfe2a807d49d0387a9","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/self_attention.t27"}]},{"id":"2069b57fd0708292d454cc46845d5f0490fb0957e9062d5b62a126ad335fa4e0","sources":[{"repo":"ghashtag/t27","path":"specs/file/operations.t27"}]},{"id":"207e008007cc79b66f7d80aac725675cff7bcd2f3029497cf29d15cb5d8702ac","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/systolic_array.t27"}]},{"id":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/commerce.t27"}]},{"id":"20cddd29275d167e40e4a8f6194bf3217524e63de3616a9e1db28bb37ccf0b1f","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/random.t27"}]},{"id":"20e12b46c7f71fa6e8ea4d6338b944a42c95b37123debf8fc73aa36e2ed2e071","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/witness_mechanism_audit.t27"}]},{"id":"20fcb88dc7cbe68d71676487adce5aaee365541aa7fcc16fbccc56b2405c2c2c","sources":[{"repo":"ghashtag/t27","path":"specs/server/project.t27"}]},{"id":"2109327316ce9de03f2cc2526e1e7774a8a332900dcbe9de5144abeb52753a95","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/avs_controller_96.t27"}]},{"id":"211dd0f9c8c34a870c22c7da964cd97b0015c6677161e3493ee12c5afdfae35d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_writer.t27"}]},{"id":"212783a39336654dfc8aa95c1faf951730bd1bbde39e475d2c947842f47de7de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/phi_ratio.t27"}]},{"id":"21484c1e4832c65088a8b16411adcd3cee75140dd0e98c49beb09f13acbf10dd","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/06_structs_enums_switch.t27"}]},{"id":"21a656adb73fbc5fa02c0ae82807e24666fe20c954806a21203ed54b742bb9e6","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/lucas.t27"}]},{"id":"21b016c6929f2280608718aef11682faa3254a6524af4cb3e50b6bbd43c79b37","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/cli.tri.t27"}]},{"id":"2246bd2af584f9e2c3b1b8ade8c1032ef03aed4b1cbb46256a1c3af100be63e6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_sub.t27"}]},{"id":"22b7fd16cc3e23432ab550205a19de7e72f9f80efb73a000a1c9ce56b3c136b6","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_enc.t27"}]},{"id":"22bb9ec2480d0efd0693f540c91de0ad95613e2fb560a7cf49143142e57b49b5","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf16.t27"}]},{"id":"22f09be2b6651090b1704700bf03ee6e25c741ef726c92c34171cb37e0eb4fa4","sources":[{"repo":"ghashtag/t27","path":"specs/functions/analytics-sales-advise.t27"}]},{"id":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_framework.t27"}]},{"id":"238294bec292fc2ae75519984696c9e649f3828ec49be8d88c65d7c2a19d129b","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_04.t27"}]},{"id":"2387a4d9b48f4cdbdcea0ac11b1a3e95b82a71b42f9967d7318bc838c899f333","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf32.t27"}]},{"id":"2416eaf9b2f2d540b48a31f6006c594dac887d48f5f3d83faa7362c63466185b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/readme_index_divergence.t27"}]},{"id":"24514db009440e8309a739afbbf9360fea66059fdee08a09eb0f87ad0d0dcf77","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/queen/lotus.t27"}]},{"id":"249105154a42777f5e4f32a1e565d18565c1268a054515e331a1f83fee04fdbe","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/net.t27"}]},{"id":"2496a572dc04d4f7e615f0d235fd6cda542d1a10caf6abc91ee4ef3a3e36da1e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/t27-traceability.t27"}]},{"id":"24b113adaed5f1cd1db118bbe253e90ccb98b4981ca296427ee81929baac6ed2","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/errors.t27"}]},{"id":"2508126a477a8a323b133af6f2fb4c26d88be031b678b2b54de2a55656ad0cc0","sources":[{"repo":"ghashtag/t27","path":"specs/agents/g.t27"}]},{"id":"254048f421bfdd4950c606621dde53e6e7b157b8f22c6f105fb4cd16e3572132","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf64.t27"}]},{"id":"25c264ef6a580c0f8e95234a7bb4175d440e72138d4fff0e90027ab3ccb9efc0","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_mac_group.t27"}]},{"id":"25c30ec4e1f38b575e3bb24cdd09bb770ce5e2a1220eac46f4da857916540f66","sources":[{"repo":"ghashtag/t27","path":"specs/agents/t.t27"}]},{"id":"25cdccd102bc427d00d9256fb1a8ede95a2f204de4c2178c2c83998c1c37c3ef","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/related_work_measured.t27"}]},{"id":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","sources":[{"repo":"ghashtag/t27","path":"specs/queen/brain_summaries.t27"}]},{"id":"263e865f74908398f822237da0b16ef7a4e84d6712311393e9166be066f3fbd5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/discovery.t27"}]},{"id":"26703224e3fce9bbdcdd15281aa883f704a54855810c53d3db1688f7feb9ddba","sources":[{"repo":"ghashtag/t27","path":"specs/brain/unified_state.t27"}]},{"id":"2677ca7baf25df8c84d3370f519d73f134f0091770cab803ce7ef332beef5ae5","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf128.t27"}]},{"id":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/catalog_api.t27"}]},{"id":"273a7e6b46c4b79c5cb6ddcdb4894b61722fd4aba4ec35a715f6841a93e6c88e","sources":[{"repo":"ghashtag/t27","path":"specs/math/pellis_precision_verify.t27"}]},{"id":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_orchestrator.t27"}]},{"id":"275f814351a1bfa986f446fbaec1661786d07df44eaf73de58c9c0878c5d40b2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_softmax4.t27"}]},{"id":"2760dfd2dbff243837b30c3df806449620407dcd5faba535f977a09ecae47d4a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_layer.t27"}]},{"id":"27854fe25c9df055742edf1d76bb8fc8231ce08d25dbb3305cb36dde845bc070","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_03_type_expr_param.t27"}]},{"id":"27a8513429971feaa0dc7ec9f186464b8c45ff756ad8c3ea7dddc06f53361dca","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bundle2.t27"}]},{"id":"27f8eeac6179f904b13939ad3e39fffe5062b0aadf2e27ac070bb2d44d4856c3","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf32.t27"}]},{"id":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/etx.t27"}]},{"id":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-sellers.t27"}]},{"id":"28bfcdf211a0360991fe8d89dc376440d2144b936e030f81e0b5794a1c0eeb00","sources":[{"repo":"ghashtag/t27","path":"compiler/ast.t27"}]},{"id":"291f5fda0b7e766839e496a1180f30807ddf0445faff634c1533c78a41a3eafc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_wire.t27"}]},{"id":"293d2f0f3dd1ad97dcc7e6485a9285d91ba36deb71ec7520b80523877a2c8405","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/phi.t27"}]},{"id":"295218999824f8be1facebfa4cdf9e7dbe55c31f692d1b025a668bd974569a6d","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/runtime.t27"}]},{"id":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/local_processing.t27"}]},{"id":"29996bb0f8c54f920745ae5b4990af7c35d7d88513b9682b4f59a30bb342ba31","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_recip.t27"}]},{"id":"299b19c47e8161d2318839d18418d581f18fde1d2373650067713805d07dc61a","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fpga_synthesis_report.t27"}]},{"id":"29ad72599016b8ced9266c0cce3604e11222c3e7d569768312df89903088cff3","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_memory.t27"}]},{"id":"29d997ada23e0a8aac40eced1499f42b697353ff8747db8b0d9a87ba5159b783","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf32_to_fp32.t27"}]},{"id":"2a12ef9771d45205433d0a6d711a401bc983626abb1cce1cfc508097fc41bbc8","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/test.graph.t27"}]},{"id":"2a263b75b4f49ba65564d52f7697195904806ffda509bdf7734719cd03732c7f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/parser.t27"}]},{"id":"2ab994adcd287776d83e4432dfd098a89121d8d3f8395b9ef2f15dd8cc6fea04","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/constants.t27"}]},{"id":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/conformance.t27"}]},{"id":"2b44816b9f5f214e367c646d7bc5d4ad38f9aa5fd7e35cb6be985fab5d57c232","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_trace.t27"}]},{"id":"2b4c28dfcddbd8861d6e47080b8dab052a46a065a4e5ff773523abd15afa6fbc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/client.t27"}]},{"id":"2b70d19f6f5d4f13e880a395590a03a48b83d77c4e32cebf62216cbe82ec8d52","sources":[{"repo":"ghashtag/t27","path":"specs/server/session.t27"}]},{"id":"2b7ba398549aa79d07e55e175328b816600fbddbfeb000ff1ce425ec629b3cf4","sources":[{"repo":"ghashtag/t27","path":"specs/agents/y.t27"}]},{"id":"2b88d314726a5a5cc6cec95471fdc759b53013883ea59ef5bba73b655297453e","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_node.t27"}]},{"id":"2b8c2d7f2d556e30e925e8412b70667b19ac8dd137bd696545d364bc3ef7aa60","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/clock_domain.t27"}]},{"id":"2b97b9758290cb2c035ad4d058a26f4c081f428c20230cd076c72129f5d17b6c","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_single.t27"}]},{"id":"2ba9ba17084c14184271ed7794dd4892e06732c6aaea33c11fee7c31038f299f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_bare_call_given.t27"}]},{"id":"2bb4e5ef1161b9818b450a20760cd641f87ea170c7bbe29467bd99f875410200","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf128.t27"}]},{"id":"2bc144c93ba41b7bdbdcc2d72c197a508f3b44151489f790c19a71aefd6b0190","sources":[{"repo":"ghashtag/t27","path":"specs/ar/proof_trace.t27"}]},{"id":"2c293bdfba35cb5a347420b69e15cbc1f14300e6990ba46f9e4cb860b1d3b0e4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_payout.t27"}]},{"id":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","sources":[{"repo":"ghashtag/t27","path":"specs/functions/content-scripts-generate.t27"}]},{"id":"2cd1d3d51078f14f5dd0f53741536884c599975ebb005381d679a5c2542b1000","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/xml.t27"}]},{"id":"2d3563e302746a958794670cd14404a7c4e6854dcf546468dd5f91907ff299e4","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-fpga-synth.t27"}]},{"id":"2d830937229c3a5e780c372b433bbf53e38ccde9444ecb20e599fb20e65b2444","sources":[{"repo":"ghashtag/t27","path":"specs/functions/morph-images-generate.t27"}]},{"id":"2d98573747c17289c348f411e21d8a455be1a647577b6c3aba8d697689ff76f8","sources":[{"repo":"ghashtag/t27","path":"specs/agents/l.t27"}]},{"id":"2d9ab503fe27887ed2f276cca7e093e3e017547d591f875a457a69bd58647f01","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot8.t27"}]},{"id":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/tri_net_formats.t27"}]},{"id":"2dae7f68a5651636623154005f92a6e43432b46d72b3bdd45c164df2a38b961c","sources":[{"repo":"ghashtag/t27","path":"specs/math/property_test_template.t27"}]},{"id":"2e1c74a2e7066c74730a82673ed2d723555599bada8fa1122e0859a5bb24e3eb","sources":[{"repo":"ghashtag/t27","path":"specs/math/gf_competitive.t27"}]},{"id":"2e64758765a33902d746fd41a11372846b5aa2e7d2b027c25908bda679cb3a0c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/bram_weights.t27"}]},{"id":"2ea5e1fa3ab0861939475141b94251a3f60ed7e6df79fdb2142394ecef1f70d5","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xortrain.t27"}]},{"id":"2eb1e03a4339dec4215b765fe572b95ad02d53bbb971e1d326260b49945620a3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_majority.t27"}]},{"id":"2f44c7a542950430b6d29c51b912e967e045efb52490fb39ddcdfdd232f233ed","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/specs.t27-vendored-compiler.t27"}]},{"id":"2f44ec37731d354202474d2074769c31c6582d9e0486fe224c2daa8f6188bb47","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/abi.c-api.t27"}]},{"id":"2f8658ded229cb7cce70a146e20d08c970b7aa97a702665abe125b08e249bb59","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_fec.t27"}]},{"id":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_trace_player.t27"}]},{"id":"302708b4cdc56954ef9c733c9902e01174972651bb579f5e6ef4943919cd1229","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hex.t27"}]},{"id":"304633b6f24931bc03b56540235f1cfb560e9648a6fa3473ac53f2c74c8156fc","sources":[{"repo":"ghashtag/t27","path":"specs/physics/pellis-formulas.t27"}]},{"id":"3058e555568a46d707c7eb6bde87b2611b7b3b35d0bc44cf39e69b7105c96836","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/needle.t27"}]},{"id":"3076c6f6ada328638763f370697f192fea2be5b311c3dab795e995d798a7b91e","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/orphan_detection.t27"}]},{"id":"30907b42896f20f54745d8066fc6f48dbc090a2943ca9314c5c4daa0f50e5739","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/05_widths_and_casts.t27"}]},{"id":"311455eaad1ec081b56395b38564babf52e10966f35b98b862d97bc5be60ff52","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-vsa-verify.t27"}]},{"id":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/governance_agent.t27"}]},{"id":"3195a264eeb3a9f6a1894ea50f84cd3ce9c91b52e62f169b7518249a90b5df97","sources":[{"repo":"ghashtag/t27","path":"specs/vm/trinity_vm.t27"}]},{"id":"31d8e97942af2ca10445cc7bcf58e77c8e5d48e28fffb90798cfa7137a3ca245","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/activation_quantizer.t27"}]},{"id":"31fc2cc4511db11be5ce16f41f881ed462911238ee18ba0fbe5f8f25dd0fbfd4","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_reputation.t27"}]},{"id":"320bbf24c3e227fc457fe90d95b24bf7d06dc2e24ed0ae780e3224fb281a5f75","sources":[{"repo":"ghashtag/t27","path":"specs/account/repo.t27"}]},{"id":"3224406c5d9b53ca274552a1da0ad1eaad28faa8bbf5a0a6abda061ec5fc44c7","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/nf4.t27"}]},{"id":"32429478d43dee511c97477aafd758a963a0f8e421dc64db613c476c92520143","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/unbalanced.t27"}]},{"id":"32446899fb19eea9b774bf3a79dcba5212af07c832499cf0710ffb9dfdd612b1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitvector.t27"}]},{"id":"324d8917e25b095ffde85d09bbb631eec1b5ed14cc876299cda6d1e6f8ee2e0c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/json.t27"}]},{"id":"327c5189a740d092290fe5dd10de3cf4da56b54a44d1bec9be8414451e70ae0e","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-queen-hive-visuals.t27"}]},{"id":"32a5e865c0d356118c8eaaa83e222824e231c7c3a4d690fc89f4f36ebf52adb9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/script_tree_sweep.t27"}]},{"id":"332ed81bb0981410ac2f2467b61b1044e39359afb9db637e3a9e757befc32f98","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_01_empty_params.t27"}]},{"id":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/validation.t27"}]},{"id":"338dda6bd5fe68db61f018bc4216fd6ab671562bcfc3cf92f1692fbdc2440abd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/kd_tree.t27"}]},{"id":"33e2c551664306a682279571634c8ea1f17b96e6f3c77da10138de045a734ff8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/linked_list.t27"}]},{"id":"33f62114e7c8e1350be72c75b2c948739d34dbea16333fbbff2b1452f27d21d3","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/greedy_probe.t27"}]},{"id":"33fd6fdd02d955bdbc1fd99943a0c1eef3fa8818c2d5075fb3a268fbf8fc44b9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_06_value_rhs.t27"}]},{"id":"344f42e42174ead35a201804037295018edd2a0b4c05cd17426cc7d92239d51a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/types.t27"}]},{"id":"346a15f33a83f1587b8c61955907f492ac291d4c687970a47a655ceb52d9be35","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru_cache.t27"}]},{"id":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/hardware_validation.t27"}]},{"id":"34e12bde826ea098367fbf59daab759f4ea2f35a4a9253e07010e8f9ee437523","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0008_ptr_split_negative.t27"}]},{"id":"350126a286467b29f140c9e9b1f67c37c33af5715618ec5b6d7a8c6f27bd33bc","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/server.t27"}]},{"id":"3518b9f0a302e6ba36ab0c41a65e331231b6824a51316201991894f58708c92e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_lifecycle.t27"}]},{"id":"3577681475bce26b679c949a8edff241bef9590ba30c189338d5cdeee713065d","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_01_latency_bound.t27"}]},{"id":"35a33a43c6ba2669c285f757c838ae44d8cd5028598ff7912370383a41ee7133","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_layer2.t27"}]},{"id":"3608d32dfd4c527f8dbdddde6859f3afd7ea6a64572b24d4c418c43b78c168df","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/packet_queue.t27"}]},{"id":"364119169fe8fa59b9f2ddc0edbcfd00bff4dc1e37af6b7626f40f093360f490","sources":[{"repo":"ghashtag/t27","path":"tests/comprehensive_suite.t27"}]},{"id":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/trinity_compat.t27"}]},{"id":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/cell.t27"}]},{"id":"372952ca8c4a3d9117765dba58976196dc877bc0d619296403f39fa6b1fa8a56","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/gemm.t27"}]},{"id":"37475abd87843ff07715568fa4ff63f5d2a05a667e427fcb6f3968b52f258817","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/bandwidth_allocator.t27"}]},{"id":"3751f1916cc2dfcd00373c6f4f89f47b1fe38caa1cf1985ddb113ef7dffa2d00","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/prims_mst.t27"}]},{"id":"375ff3748192be0e691130621df18299442c31ef42e9eae4e791c75c4bf5aaee","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_madd.t27"}]},{"id":"37aaa0322da86d9674dfd2f7ee235c14c68420cd43da356a04384f5dfccc2f20","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/fp8_e5m2.t27"}]},{"id":"37e3dca7f4836af5ecfde5eaaa2aa993ac19087ac902adbb4015c04527a2af62","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L2301.t27"}]},{"id":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/uart.t27"}]},{"id":"38e27adb2b1502fe1200eaaaf794baf678bedb3dcf17667cba1c5d1f6eb393ab","sources":[{"repo":"ghashtag/t27","path":"specs/ml/pathway/mlp.t27"}]},{"id":"38e5a94cf9cac4f8e1638e6c60603d0334668763669588a0014d4a8cc544b59c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/gf16_format.t27"}]},{"id":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/verilog_bench_harness.t27"}]},{"id":"39c25a3a6c40cff4e3ad9aa098e7492803a9cc78a935e74966c4f95939c85228","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27"}]},{"id":"39fe65ef46e74e75fc0b39666f7398fc3558485c9910d5563df17238c94b530c","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/agent.tri-api.t27"}]},{"id":"3a0a496b0fac77bd8636bde8a08d4368f0fe0e71ba137199f8b95e6e3df40bfe","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf256.t27"}]},{"id":"3a27bd5a4d2a3afccb342301f277a906103ff8c6fd802bace787ed808e89e22f","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/rules.t27"}]},{"id":"3a5a1d0bf24c0a354559c859ce379e3fa65b8aad313da8627e341daa273d4adf","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_universal_attractor.t27"}]},{"id":"3a74a18b91ed8e675b2d44fc822f28cd25ced5d9c3f8a902786c5a31dd11c30f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_approx_activation.t27"}]},{"id":"3a7e6ffb726368b32c400032dfdfd6b47d5dd7041ea5f31c2e5837acf4a9c4fa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/power_monitoring.t27"}]},{"id":"3a9ce2c1a55f9cd69e4e74bc21a0f3d770f0c6d7846bb379a8233cc7583e2d2e","sources":[{"repo":"ghashtag/t27","path":"specs/functions/reels-loop-generate.t27"}]},{"id":"3b0d082b74f6a0ba7039d726899c4a02710622f702909956f8bc2615b6a45b8a","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/lut_npu_81_entry.t27"}]},{"id":"3b247694659c1fe7f9860804f7a960b8e8ca357dca00dafa651527b01487a667","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/int8.t27"}]},{"id":"3b27453bd662eaee697645051447f1d63e66c5c2c64a3157ec7caa0be403f4b4","sources":[{"repo":"ghashtag/t27","path":"specs/functions/welcome-avatar-generate.t27"}]},{"id":"3b918511e604264fc966545ca5dbb3deabdf643de21d2cdc651b4c278fbafe51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/types.t27"}]},{"id":"3b94513dfb6fdd9872b85930e5bb8e84667fe617f9e88468ba292a56c3191618","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf256.t27"}]},{"id":"3bbfd0601fe927c6db6eaebf57823a8aab6bdecfdb342e7a5ee7b6d89bbc2265","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/catalog_coverage_delta.t27"}]},{"id":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/benchmark.t27"}]},{"id":"3bc8d058f4b301edc4f1584510910da792098ecc9fb60f6d4e38f16ba3bcdf74","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/time.t27"}]},{"id":"3bfd60b0a6b6dbdddebdb5a5a5d0750b8058892126e151fa05f4a6125ea0dd79","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/topological_sort.t27"}]},{"id":"3ce626362e1150f71dba33168feed77ddd8c7c4a82281421db7e3a557f2faa32","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_routing.t27"}]},{"id":"3d2a241308cfa18d03fac309c858574b383580dc9700ca1a1f129df8103794fa","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_dashboard.t27"}]},{"id":"3d3bc18bcf65a59556cd172cc4e52c02674e3f4cf369a3b648b9e98187bf3a02","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/avl_tree.t27"}]},{"id":"3d62664b21a7e9bd7b6d63879764780b5c5af3cf661f04eee7b90a8adbaa5d1d","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dropout_layer.t27"}]},{"id":"3e203c4b90a1ef1483c84320fe17cee7a366467c3f49dfb90d785467cc48b5a1","sources":[{"repo":"ghashtag/t27","path":"specs/igla/integration/publication.t27"}]},{"id":"3e84d5413e6db52ac25368c67f1585b67c5c0401f80c30df20c96c626c3b345d","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/dashboard.t27"}]},{"id":"3e87dab9734df475d53b8013449de746e3f32a40c721723946cca15f0244df37","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_mlp2.t27"}]},{"id":"3ecc74e152223eb2912ded3c83f63e176a03c46c980887b379b1a83c2deeb3c3","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_neuron_nchunk.t27"}]},{"id":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_routing.t27"}]},{"id":"3eee11bf8df22d370b2a4d29b3a2ddb4bcff529c01e3a23212962b6f7db44ded","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/prm.t27"}]},{"id":"3f170da0db86ecb829c46e88c0a8fad260f37ad3de7a61d87b514c68c8d8c720","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_critic.t27"}]},{"id":"3f1d2105328665203dc3850fea9f0245b7a6adbe5558e255756d168478812921","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-log-monitor.t27"}]},{"id":"3f327ef3f375cf0914564095f3632fadf25550c619fe0244c6432b5fcd51eefc","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/avs_reconf.t27"}]},{"id":"3f487d270158277f2ba80e89b81dd3983c04568990e00f0014306d086b57077d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/gf16_accel_tb.t27"}]},{"id":"3fafd9ae6b4b9d4b0907a4335ae37b99a2e320927ee2481fc851323a5ec436b6","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/bridge.t27"}]},{"id":"3fafe68dfaa694ceb17290e3505f3baaaa84e61b351446b6422492364decd700","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorpercep4.t27"}]},{"id":"3fe14f0e675704ece025e11534de7629b8245942f3898cac1f00221227a8a6bf","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/gravity.t27"}]},{"id":"3fe3d076d8f6e05892175e6b4189e70fd13206f929d4d4ef7bee6fac19c0a003","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft32.t27"}]},{"id":"40030c89eba2881aed876382471cee3537d2e73a3cdfc72de27e24a0f52aeb07","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/zig/codegen.t27"}]},{"id":"40135abe16b0c52525aea008d3168e85920797f3d2a16df2e4d2d16ccb8e94a0","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/youtube_transcript.t27"}]},{"id":"4023211070b18117f67404d4c7941ea02e079d1c07aa41515aee69704bab07a3","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/project.t27"}]},{"id":"405fdea7d1fb2b058f76601757ce3b28a5c6667fdb68203b311c80d7f4db7407","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/c/codegen.t27"}]},{"id":"409e4b3c8b06b14fc4ff21425171ac9f05676cb27bc7b98433cb722b4f82be71","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/tri27.toolchain.t27"}]},{"id":"40e271225fff7d99d8fe235c2347210c228f6c558af910e84bbbe85ef0312d94","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/hw_types.t27"}]},{"id":"40fd893c2163077ca7fb00a815db13a0c8f2bbd74efc3ccb0427faad49465e5f","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_add.t27"}]},{"id":"41bc9e9f09ac42ad89061f2f9c0928916530ebea030857cc19e1475d437d41d6","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_axpy.t27"}]},{"id":"41d804d63c7cea9c3bed9025f52bd8d5f576855b3cd8b065800d6e6ba53f99a9","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/native.canvas.t27"}]},{"id":"422a79e6015d8959e474b78e93f8fb16e1db2e0b2d8a885bfdab1aafe2347175","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_slash.t27"}]},{"id":"425d0d272102a6cb3f37163eaaaa66d237b7b2e9e2d23c9546578042e0272462","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/failure_predictor.t27"}]},{"id":"4277eded24a90122c7ed7ae38cfc6526de4c77038bc2175b57c92c5dc81fc00e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bridge_tb.t27"}]},{"id":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_settle.t27"}]},{"id":"42bf0f894738516bde89899aa41ed960072949d0409958942954da09f598e5bd","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/cosmos.t27"}]},{"id":"43202aabe15b2c06b1e0709f8e0ae6fc1cb13b2cb7e5a5adee77340a1bf03ff4","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/window.t27"}]},{"id":"4360313e280f6638395cf3aab44984a5a215e39aa9c61d11ed8c0e5ecfb028a3","sources":[{"repo":"ghashtag/t27","path":"specs/functions/content-detailed-script-generate.t27"}]},{"id":"436c703f6031eb93b7faf8777d15c5c059c1ac5750fb1477ae321c1dd91fd082","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_false_assert.t27"}]},{"id":"43fb47d6699c50e81d6ecd71f0f0791c5e0c46ba0fd69a2f066d60825d8f6706","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/competitors.t27"}]},{"id":"4454f6161b15302cd298c417dfcade3dd0a0c42e6734f89eef26a1b5eda337e9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_retry.t27"}]},{"id":"44d2e3c8843519a512128399557c8d7af29ca2491f769f91c845dc44e0b63f9a","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-notificationHandler-L324.t27"}]},{"id":"44ffb909e0acb7a25ca58265b7e7150f63a335c1a2a46a249a89bedf616e52c0","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_un.t27"}]},{"id":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_framework.t27"}]},{"id":"45754d036ee4eced4776bb6c2d85addf2cf176e7c70098f78b3fdb4db7df17c1","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/mods.t27"}]},{"id":"45784e977fde6e94fc06398b713494335150a946f08c4332505038a063523222","sources":[{"repo":"ghashtag/t27","path":"specs/provider/stream.t27"}]},{"id":"45799ff43fefd2149b47df88a5da2a3c8cd85a40fc0a1f2951dcfa243fc13426","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/relu_activation.t27"}]},{"id":"457b54c3b38b424f41b5203b7e06d02af184affe49a50396c851cd0b4328c9fc","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf8.t27"}]},{"id":"45af6aee6801336077dc92898917fdea1ea9ef5c6e9283fd2868d9e3714cf91c","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/numeric.golden-float.t27"}]},{"id":"45c6ce4000cad4bd861ac6071208e8e54b6ba8e024bbcc6d8fd0dee3d4a43c59","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft1024.t27"}]},{"id":"45ece51f52ec529802e387903a06b3fc58f3dcc088823785511c924c57567c32","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-board-sync.t27"}]},{"id":"45eceaaa65e7ddb52ada5b5ba657ad0c6139d715f236ce25c4fbdd7f84e6780c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ledger.t27"}]},{"id":"45f24257632e6874936c6c861577cfb3e7dfe9980d45a46cc270402ece70beef","sources":[{"repo":"ghashtag/t27","path":"specs/api/c_abi.t27"}]},{"id":"45fd78626ad9ca71910d750669bd10a6f519d3eef067f24338c8b30e2681d067","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/mha_block.t27"}]},{"id":"460d9c7fa17cba1b4af999b79952e527562fc6aaa3d8b77e240647d477f854b8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/reader.t27"}]},{"id":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","sources":[{"repo":"ghashtag/t27","path":"specs/file/schema.t27"}]},{"id":"4695ba570b580a94f58a18cebaecc25b6ef681db9f74a7da9882587877475a8b","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/diff_probe.t27"}]},{"id":"46aa1eb949902b6b7425c0e5f00addc1ab4cf188916707766b2a20b357d3957f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/trust_manager.t27"}]},{"id":"46e0eb2a3f596509c6a0aec1b64f2558db9c145c0865ca6b851faec29e9bf0df","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lr_scheduler.t27"}]},{"id":"46eb92bbb340ff3345a79d44ec05cd0169c5c2b8ae064619690c31479ac3e2c0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/suffix_array.t27"}]},{"id":"471fe9193b42231e2ed1ea34770713954137ecb1097b3f158a4ca9168f836fea","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_train1.t27"}]},{"id":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/conformance.t27"}]},{"id":"47b46c345a7303aa1622922ca63ed20bdad3688595a267bd49e7357b45da998e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_tick.t27"}]},{"id":"47fa62e4268cf8e79f4e4b7ed9972b705c79a74d31b428f88f237d1bc09a7eed","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adam.t27"}]},{"id":"486562f3726f65e2830e5e0deaf3019433d59081fd5ba1edca4cb38f5aa3b195","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/quick_sort.t27"}]},{"id":"48793199ab1d93dd98ca70e4a7041b50c4f26a9ae24d5ccc0cb95f8a50f50d08","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gi1_analysis.t27"}]},{"id":"488af77492c2664a504de98dc8dc2a19a37e3cce3d355f3a1af26e259bfb3038","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/clocked_state.t27"}]},{"id":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/gitbutler.t27"}]},{"id":"489e64457fdd3c9a381073abd68b4fefea83b4e8f7471117b2e75c70fb79e6ee","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_02.t27"}]},{"id":"48c3a4143f39690e56cb9e36942625642ea277d7cfe50aa05290b325042391be","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/fs.t27"}]},{"id":"4907c0a74ccaac2e6571cd2d00cd6f090d240cb1bbdc40eb1571e6944b209ec4","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/diagnostics.t27"}]},{"id":"4909a13b33ff6128bf308132850effbdfcfc1b44bb8ccedf1c7bacc288dea720","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/pr.t27"}]},{"id":"4991d83ed59365348efc506f4907cceb29a04742b9ad7f610b6b754c184d55b4","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/boards/ax7203_full.t27"}]},{"id":"49a3ef2231df6ce5d5cdeec62f6608317512b047d2c6adb620b327b04fbdcfc3","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf64.t27"}]},{"id":"49d1e8ddabc30e6cc9e852ea156510b928d618264e25737e12cd57a2eb4d3de7","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/similarity_search.t27"}]},{"id":"4a02c3cd0fb34f6e9576d52e96910bc2937ffa3f921f315dd8887ec66f3776e5","sources":[{"repo":"ghashtag/t27","path":"specs/github/auth.t27"}]},{"id":"4a36751ee547427463eb6c2addcfb67293a623fc469f5e22fe5af9118a63740a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/experience_hooks.t27"}]},{"id":"4ac7d616c842e74b60b710cfa71e60d1e6c6133b41d31823dd5917771f2c063f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_bigint.t27"}]},{"id":"4afded3071ac34a51d06749ea6983dfd0238d1dcb78856ae19b836122019c080","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-farm-garden.t27"}]},{"id":"4b2bd3dcc946b1c9c7f2d247f6968a6271cfd0b9f5bd12d9ecfa42b883ad7881","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_14.t27"}]},{"id":"4b2c8ee5877c376316e94eda74ac07c789c1ee5c467313c7f093a3ae32bdc4b6","sources":[{"repo":"ghashtag/t27","path":"specs/functions/instagram-top-content-extract.t27"}]},{"id":"4bc5143fba34174835090dd6b44f8b82feeb5462e3c52407d60d85efb3d6988a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/lexer.t27"}]},{"id":"4c27da6a18f488afac5ac4be903b614994749278742678c74490e1a74ff991a7","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/misread.t27"}]},{"id":"4c4543a14768e2353cf1981460c90b96fa26a9c05e049b5d504e07a9e244a0d4","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/schema.t27"}]},{"id":"4c776204371d57c29ea666ad5f1f7c46a04d402208a4b93d2d15428315e94c11","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/handoff.t27"}]},{"id":"4ce32e084d3d43866017ef9bd2411fbafded65b8157c5fc2c24d2b35efe91f8c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_03_three_params.t27"}]},{"id":"4cebca7f2af8129cdd9fe75b79a751bfeb933ecb2adac117d15b6789d8fd5245","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/property_test_template.t27"}]},{"id":"4d4dd9b3fcd4609d6b57f0feaec724c4c0af2d16c27a4e7476443ab9531730dc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/partition.t27"}]},{"id":"4d62843989a3e55bc2b52630e79c32f09d444359ef2429da1fc529663910c953","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_node_sim.t27"}]},{"id":"4dc8ea103431d9df995c086ae6800dabc140cca5c5b70666b627bea92e0970f9","sources":[{"repo":"ghashtag/t27","path":"specs/server/provider.t27"}]},{"id":"4dd1bf05316f1a0ed952457e8fbbe7e03c51d51b2891c1dfe603db0425b4f2a3","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/gen.t27"}]},{"id":"4e19baf0ea4267dbbd23f71b8d324779c85427672378205a64726118c36a8e68","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/skill.t27"}]},{"id":"4e425fd16028fd4f79f0402fc4c5221aa3d8279d5397160013b0bbf013167a34","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/filesystem.t27"}]},{"id":"4e466319eaaca9d8dded516b01c4e044793adcf2dc0fd6b21baf29244e53b5f9","sources":[{"repo":"ghashtag/t27","path":"specs/github/prs.t27"}]},{"id":"4e74c213b43b2b2c253dda134a93795b3a6e627a4711d5fc8dffb3067c1cb0b0","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-doctor.t27"}]},{"id":"4e80040a11ab6ae72d46b8d4487959caa396ddde34d00ebe15ecef1f4bbbb9ed","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot4.t27"}]},{"id":"4ea7242baa7a03eeadf68af61c6d58551b24783880fa3319a2d0c34550ecdb44","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/softmax.t27"}]},{"id":"4f5f9b43b9ec8b0be6593775af54ff6721d169e5e2c33898a1443dcbdfe4d85d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_optimistic.t27"}]},{"id":"4f8e94bffdebbcef0e7bc6e7cfbace1a51c4021f68f76ba1aa35192bc96825c8","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/d2d_routing.t27"}]},{"id":"4fa7ccadd44d000694a91d69bfeaef6080397ad16540b682430c2f813303db56","sources":[{"repo":"ghashtag/t27","path":"specs/api/tri_net_api.t27"}]},{"id":"5047ea1190cda85e3c57cdf6e65be0ed4fa22c52702ce20c446cf3b50f301b59","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_sgd_step.t27"}]},{"id":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-wave-audit.t27"}]},{"id":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/formats.t27"}]},{"id":"50d838b5e5138ffeb2875b3a6c831f34ba6a2953a3086db6752b1a6b490213ba","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/ternary_isa_tb.t27"}]},{"id":"513b6a22de6436f9269e7422c67954b6836990fa5ddeb147df0c992e698e56ee","sources":[{"repo":"ghashtag/t27","path":"specs/memory/semantic_search.t27"}]},{"id":"513d1e81f02cb450989ea83082948afcce37819434528fbed6b60930b2941fd8","sources":[{"repo":"ghashtag/t27","path":"specs/functions/neuro-image-generate.t27"}]},{"id":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/bridge.t27"}]},{"id":"5189c2771d5edfddea6da5b8d20ee348fd44b3bd83e034188081e4a79f64fd40","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/frame_buffer.t27"}]},{"id":"5195f89bfc0b1f3ed434ef6371ba940a629ba01eee7a3746f6f14ec0cde9a141","sources":[{"repo":"ghashtag/t27","path":"specs/physics/formula_discovery.t27"}]},{"id":"51a2f2cad1da2385b6c7b16ab1e4721df80fe98918a60a3410c88fe14da4d743","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/synth.t27"}]},{"id":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/_tmp_pipeline_import.t27"}]},{"id":"51c140fd215a3cca5cf1fe479e531f1d39706abf2b670a8ecd6cdd4bd56037f0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/template.t27"}]},{"id":"51db6401e99e6d0be235e3db5a82accbef6311a9a2607375ad0882af54a29a7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/health_monitoring.t27"}]},{"id":"524a038de25358c30e02aeb7247c895c541564ce39383d61139d95d45b585920","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timing_closure.t27"}]},{"id":"52736507c4760db8b38d73a53705947930521587ea2203c25b60d9c13da41a91","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/stdlib.t27"}]},{"id":"52849a662623d3213c2b5f2c397c84a8f75045b867bb210ca9f322a4527d30f4","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_exp2.t27"}]},{"id":"52bfcb88b32809c2a79b368329ea005cbc3863734ec277278c15459c967acc4e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/dft.t27"}]},{"id":"52c87609efcb16a0ddd296875010488540b619c95b16e1967bc26a4a488f856e","sources":[{"repo":"ghashtag/t27","path":"specs/agents/k.t27"}]},{"id":"52e2adbd19b94526511c5ceace12ae6a798212d379a78eacc965258c52983ee2","sources":[{"repo":"ghashtag/t27","path":"specs/trinet/etx.t27"}]},{"id":"52f14c10cd747985da3a530220dbcd8de5079ded7c63466f3524939c07beee1c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_dfs.t27"}]},{"id":"5311fbb6b5afb8a3b4d2a0fa7b75138a2c9bcbc70e6569fa1b4296385059f207","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_sha256.t27"}]},{"id":"5327811d6750849976773faf4abbe18bd6c06f3a49799ffc4ca850c88581abb9","sources":[{"repo":"ghashtag/t27","path":"specs/base/debounce.t27"}]},{"id":"532a215e4f4848a81dce61832d5469b4f5c97fa359b981754f641529e6178fa5","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/cordic.t27"}]},{"id":"533eeb860d6bc3f69d612c3d2630965bf50b8533f50c4f4900b25ab42e838db2","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/hooks.t27"}]},{"id":"53b65f5dc6e1f5dc9f3ecc755cc31e2fdcf455106dba6d59c1423ea0ddda0214","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/http.t27"}]},{"id":"53f3415e61b946dfe7216c4d03e52cd53225207b9a8741bf9904dab9092eb357","sources":[{"repo":"ghashtag/t27","path":"specs/functions/broadcast-message-send.t27"}]},{"id":"5469641560c8dc73d41597e61dfd5764e82499c451e3bc22ed9e8ddaec2f77f6","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/drowsy_ret.t27"}]},{"id":"5481f5ec801d6a0206856c7dbf3780a4561037a33bf159b7aa356616ad9c4abc","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft256.t27"}]},{"id":"549e7fa1e7b391e1adeb47ce9e3d4525c56831823e9a119105b8b6718172c8ef","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bridge.t27"}]},{"id":"54be6db52c95054eb2850c805fe15244d3e4fa7efab696ae26b3f2ca5bfa4ab7","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_mac.t27"}]},{"id":"54d9c2d81be0a306a311a4e50ec767e81459c14f482a243a10e873a7654fa3ff","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/roadmap.t27"}]},{"id":"54e5543bf03d2e0f1cc52707190bf1bc222462a7c9f7a08162fe74f7d326a05d","sources":[{"repo":"ghashtag/trinity","path":"trinity/t27/specs/numeric/phi_ratio.t27"}]},{"id":"553424a2c0d86517157fb167bbc0664b24a5073e93e5b86e8a91cefd6cc9b07b","sources":[{"repo":"ghashtag/t27","path":"specs/sync/schema.t27"}]},{"id":"554e42402228649a53d22c401e9fdcd96a1d5e1bed47cda8e4c1be30de2c0d00","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/assembler.t27"}]},{"id":"55ca27e208e92c9ce5e0837c48e6739288aa2f808600458c022701d17fbc718b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/graph_bfs.t27"}]},{"id":"55d72454b468f3b1d8135c873b16390504a45b3d3d18fc08be6fa7620ee95214","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/cap_ok.t27"}]},{"id":"55e446faa75d219aa49a89a5c07f36e262e0cacd120fed49ce35fb6303d63f1e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0011_in_membership.t27"}]},{"id":"55fa9d68b2d7e5072ea94daeaa5281757a48278e5201bb1eac41ddbcb7c7a3a9","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft64.t27"}]},{"id":"55fc433f009d16c215265b756d6243a4807f5d6a930a3b471a84ada9708aec21","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_05_raw_string.t27"}]},{"id":"56113a8df816d524442da3e153ea33d793de0d06087326161aefc18fb0281dd3","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_deque.t27"}]},{"id":"568585089831aa323979ee5fee721d50669f411a61f8abd88bccfe17d4809be6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_metrics.t27"}]},{"id":"56f823f5a276ae2ec4740de0058cc1ec3071884ff89ed433dd20c4714c99997e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/cts_tb.t27"}]},{"id":"57308c312e2d9233223984d19e928d0583684571434c32a42d5c66810c8a07da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/disjoint_set.t27"}]},{"id":"57354f8525068440df541ffe1bd2e9d059248b1c35fcfc3b1cda4cd0beb8c08a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/sigmoid_activation.t27"}]},{"id":"5755f819b57e64354992f86357f6b047ac61dd4d6c67afcfad005d4e28fdfbf2","sources":[{"repo":"ghashtag/t27","path":"specs/queen/task_analysis.t27"}]},{"id":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/internet_call.t27"}]},{"id":"57648d4b56135798ce356c530e5a55a3df2815d6dd254ef86f5a2d99b1c00158","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_activation.t27"}]},{"id":"5774a55f23a1cedb8feb1044739647e4084ac88b73c5c3ffffc115248824e438","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/compress.t27"}]},{"id":"577d8800ca590ea678ee83aedddb8ad66fcefffd2923dd02c3b8818e899e0b19","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf24.t27"}]},{"id":"577f3aa5eb4280c6be165fd7d0458fb849988246800eef63c77b3c774091706f","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-god-mode.t27"}]},{"id":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/rental_terms.t27"}]},{"id":"57c23797300ea168c457a74d4edc25c1bcd249408efb634dcd32a7dbfa086260","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-health-check.t27"}]},{"id":"57e060a9c073ed08dfbd814acf779965d92f2cb75d21615ed4e65f39b294f3df","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/agent.phi-loop.t27"}]},{"id":"583b5c7479c239140733752a9ee2df7b82afca6af96e9861af1acd34eac13265","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/golden_sieve.t27"}]},{"id":"5847d80ee4a4f2fc5b812078febf793a17aa56e2e4ad3bd6ea158c2d218f0b84","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/memory.t27"}]},{"id":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","sources":[{"repo":"ghashtag/t27","path":"specs/git/operations.t27"}]},{"id":"589b4502973beca006108ffedabec587effb8778bfd21be45399b23bcae398f3","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/ci.t27"}]},{"id":"589c71bf222dccf9b301401fad6dc1c0ef62df01b74011badaf3ff5b8d5cc05a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/isa/registers.t27"}]},{"id":"58c646dc39ab0a74f6f1bc691f97ba3bbfed3868d1f12bf90e14a0531c1263b9","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power.t27"}]},{"id":"58c769e390fdaac1866302736c5b4762046fb6a4b7dea11d5dae37b150e0c871","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_13.t27"}]},{"id":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_validator.t27"}]},{"id":"5981241f2cd196051990feaf73a6afbd75a0e3a166b3e8dd18c2e60528974cca","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/vibee.compiler.t27"}]},{"id":"59977f6e1cbcafc304f2874fad21b31b6e698ba4341a7f9a4aa5a19335d22ad6","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/assembler_tb.t27"}]},{"id":"59c9aed7248324467e2d13b458a60137da5b8b07f5116a484580f0dadc808cd8","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/vcd_conformance_compare.t27"}]},{"id":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/test_framework.t27"}]},{"id":"5a4913e61e90b9be2632619b3eb79b7a93a445d36fa724601fac5f95e3c7a283","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/tokenizer.t27"}]},{"id":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/group_chat.t27"}]},{"id":"5b2fc085c2a125373e585ceb74c7881bebc67e760a3469c84644dbac5257ee32","sources":[{"repo":"ghashtag/t27","path":"specs/storage/lock.t27"}]},{"id":"5bb8cead0f512228a91fc385bd5d660ab111eb1c47c1206476f780835ebdecec","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/spec_parser.t27"}]},{"id":"5bf4a9567cd56ec9b8862707948c207bba85498d272b73b0fc53e20aa548cbb7","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_dot_sw.t27"}]},{"id":"5cf232894b16d3f2e49d5231706441904d9dc620db66d7f1c95b6d8caf819990","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/kl_divergence.t27"}]},{"id":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gfternary.t27"}]},{"id":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","sources":[{"repo":"ghashtag/t27","path":"specs/automation/leela-agent-link.t27"}]},{"id":"5da0cd1f49205e7080077d474642e34effa56a964c65882dbe82bc72b61473de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/fpga/mac.t27"}]},{"id":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/boards/qmtech_a100t_integration.t27"}]},{"id":"5df21156f6f33ef7ae6c3270097a3636bbf5beda07b9cb8909ebbd1d3c4b755b","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/04_control_flow.t27"}]},{"id":"5e3cef83fe71fa8bdec4c2ef91200565a5461f4de0225a11d9544c366afdc65d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/utf8.t27"}]},{"id":"5eca3b5f97e5f37833d43ccb80ffa6bebe1e2c76eec628c67cd63e45e2b67129","sources":[{"repo":"ghashtag/t27","path":"specs/physics/lqg_cs_bridge.t27"}]},{"id":"5f20d5a4653796ced96476efff8e40458120b4f2ea3a1552749d4e00caf461b2","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/ext.vscode-swe.t27"}]},{"id":"5f6e7ed53ca0f4ca52320a9c1ebdbbf079e371836de109c94dc440847fa0f2dc","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-wrap-up.t27"}]},{"id":"5f79143e4cf0f389ef7a03a3834a044e243fd3ca3cb04e06529a73690ecb4ca3","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/ternary_vs_binary.t27"}]},{"id":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/ops.t27"}]},{"id":"5fc4a500afccdf91e81c2bbde7b770e673efccc96e2d87ef377abdf723748610","sources":[{"repo":"ghashtag/t27","path":"specs/i18n/docs-ru.t27"}]},{"id":"5fdec7f0438860173e0475b5e8912e5045a7ab37639ae21ea6f6329830989c02","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/fp8_e4m3.t27"}]},{"id":"5feb63007768c9262c64e33e8fcab24e138067718da09184d0e21bdfa3204ef7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/map.t27"}]},{"id":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/gf16_accel.t27"}]},{"id":"601885b1c2c41f0982da8bf16f0f4f26296b6166deec06a77826452a04ed6c01","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf4.t27"}]},{"id":"601efe186f5a97dbfd2e82e397ac53f32210ccedb4fadf1c2ffd0c0ee62e4530","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/discard.t27"}]},{"id":"607d9e99f30688eb84635aa46ad305d3a08ee9fba01b2e0ec7a093276bcad285","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_gemm.t27"}]},{"id":"60a00727a2f7abdb0a28fd463c3ff731681e82b59a4371857cdd1f3be0b319f1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/measurement.t27"}]},{"id":"60f5f9fd2a85ea4dbfd20c2e42356184ec9e8d78ed586cafc3ec3fecf801ec44","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/cross_entropy_loss.t27"}]},{"id":"60f890605a6fb4ba6e5e160872c26b9fa2bc8ec5101b367e5d88a86693fe8aa3","sources":[{"repo":"ghashtag/t27","path":"specs/shell/schema.t27"}]},{"id":"6189a4f83f9da9e68406b2706010caa5304101e8782a8ca4f87e16dce45077d0","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/load_predictor.t27"}]},{"id":"61c1edda964778e108dde6336fc5e56af6f99cda5bb8549db12833e6d399de2e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crypto_frame.t27"}]},{"id":"61d170317eadcdfe028549190c431b633d93cb5dc2dea7fdc1c041c71154b34f","sources":[{"repo":"ghashtag/t27","path":"specs/agents/b.t27"}]},{"id":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/compression_engine.t27"}]},{"id":"622fb6068c33aa9421b0e45b345414a9874f73fa4aec3f625fd560c75a1ce810","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_benchmarks.t27"}]},{"id":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/corona_oracle.t27"}]},{"id":"62f35791f856137a862caf7c205d54de386d8494bf2536fcab561741f08010e1","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/backend.t27"}]},{"id":"63216e4dbe843da95dd62bfc13b7741e6bf343e3bcf3d407e084d6be61e84dfe","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/octree.t27"}]},{"id":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/build_graph.t27"}]},{"id":"63484bae840d98feafd88f099d1b9516bc111e97c5912ec2f9d5ae44197cb661","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/load_predictor.t27"}]},{"id":"634ede05a35cbcb717679f041f06b2f1dcc762090d29ade3e798650637f9bbe8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/insertion_sort.t27"}]},{"id":"63e47ac5ad1debf3f67aa872cb4418c39a903c509df0c6c53ee6b4b19e1eb22a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_layer3.t27"}]},{"id":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/availability.t27"}]},{"id":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/stream_compute.t27"}]},{"id":"64a8091d1c5d8163af7ce400dee2b8ffbe713584045340e1126a0b7560b04c6e","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/linker.t27"}]},{"id":"64d4d76ec19c214697c0f859f52391ebdd6f12947954308e51f49390b46d1ec4","sources":[{"repo":"ghashtag/t27","path":"specs/github/issues.t27"}]},{"id":"6532bcb37b12d57aa03d22717557fa16e727b9c4e6389c3afdd829bc74a23ab0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_safety.t27"}]},{"id":"6538e25864c29896db08fe5b34953adfb0104afe5180d6ef558f9ef7b57b5e95","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_adamw_block.t27"}]},{"id":"6566a6f8ad6684de58e0f80d857fe8aca44e68c51f45929f5f4936e4c1fd1da1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/self_healing.t27"}]},{"id":"656a55d5c53935a47b6bfb87528cb7eadd93b56ea60bc246f720ace506be7109","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/rtl.t27"}]},{"id":"658017799ed00ee1b7c5669fc3d07980513277ab969168144933764f0ffb3fc6","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/goldenfloat_family.t27"}]},{"id":"65c74d032e9e363b1e93223e24aa02a2a86cdff0a5ec36fb8959fa96ca518db5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/anomaly_detector.t27"}]},{"id":"661937af30a71e6136f8c9fe690b7ed12eb6f9c17ba55767a80308624cddf419","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/ml_dtypes_crossval.t27"}]},{"id":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_routing.t27"}]},{"id":"66bee6b87377d1747f36fcb46949ee39e39de1515779dbd1ead183c06efb0dfc","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/vsa.zig-hdc.t27"}]},{"id":"66f48663fb58c54066c3c13d0fa2afcfbfd38536ded273d84cd63bab51325b5a","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/spec.t27"}]},{"id":"673fe6884c6aa531c95c463f4d883bcb5c076f4a66f79088a102c4ddd4855082","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_signed_mac.t27"}]},{"id":"674a166252ed87e18ef467e7c8cb62f8363abc831102041a9eb6862be6ca6023","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/tensorpack.t27"}]},{"id":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","sources":[{"repo":"ghashtag/t27","path":"specs/math/sacred_physics.t27"}]},{"id":"678ece919f8363e769be5541575ec25163565cf04481f776448b81c3fbac94c9","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/health.t27"}]},{"id":"67977206cb649dcffe7703ea2aa8d330f67b0dce6b63c3e063d2c4ef5d1112e2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_relu.t27"}]},{"id":"679c0ec0793e64b28bbbcd96e15b8c0dab7f67a0519177ca416b02e619290711","sources":[{"repo":"ghashtag/t27","path":"specs/physics/chimera_best_gamma.t27"}]},{"id":"67b126ee510d34e78677d12e64b2b2aacf9951410adc6f3338018101e0e112c0","sources":[{"repo":"ghashtag/t27","path":"specs/api/sdk_contract.t27"}]},{"id":"67b24c96e29940b999c59862e9bd2c0d92482152900f562c0106a7064686464f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_09.t27"}]},{"id":"67c635dcb96730ead658e8233879cc6f2b3cb56d9c6e85259629d10b9a536b9c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/harness.t27"}]},{"id":"6845df8423731bfbdd1354d0f42e26554a10c80ab61af2348a4481846aefdd27","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/auto_config.t27"}]},{"id":"689a89b90876fa9967656508d3791f3de1a47afe358cbf4d7ccf023fce1c32d5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/needle-check.t27"}]},{"id":"68b8c2da2daf9b6ce37249dfbd858f326e2937b0efd098545f7b1488758992d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/area_optimization.t27"}]},{"id":"68bee859c3ffd508a841df8048fdde0932245af7a0dfe7c3596266cd24726dbe","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/nn/hslm.t27"}]},{"id":"68cef02f70476660ff1d1df04010d0a3d6cbe249c35da94d97f4c2a641e57d5e","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-crmProactive-L375.t27"}]},{"id":"68db08e2c74473cafa7fa60d467626f0b74106730d4f4b3c418442765125b168","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/research.nexus-docs.t27"}]},{"id":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","sources":[{"repo":"ghashtag/t27","path":"specs/automation/inngest-queen-scheduler.t27"}]},{"id":"69218b791f6a7e7d2144c8d0e90f2b320ce8e3282bc3a220561e29ab8dee9d6b","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorpercep.t27"}]},{"id":"6926ef2f5ef68b7a540eae2c7bffc4efd4928bcf00686806f549664b92b8afd7","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/benchmarks.t27"}]},{"id":"69729efabc127aefce11e671dcb1abc5029ecd942d0670615a9ab41e73b76fb3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/e2e_demo.t27"}]},{"id":"69dfde195e9294cbe1a7dec908d04fb3c8f2de72498d4df8f400f48eb6b2289b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/simulator_tb.t27"}]},{"id":"6a3ef22445272843815bb1eef5aa8a4b6e3e881592723413e6ddf8c723b36c7a","sources":[{"repo":"ghashtag/t27","path":"specs/api/c_api_contract.t27"}]},{"id":"6a4970afbc3c2312d69c058364a11f96063e468cbed7b915aa49f306a8dfc4c2","sources":[{"repo":"ghashtag/t27","path":"specs/interop/gf_cross_language.t27"}]},{"id":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/cross_layer_optimizer.t27"}]},{"id":"6a5e4f84be68d9ca3ca47aae1600047cc108dcdc5c6b7e83cf5d4b4c4a5eba83","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_coding.t27"}]},{"id":"6aa15bf01126f3f32e79fe5e29db38af084adfb7cce50123c60f12b0450ede6f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attn.t27"}]},{"id":"6aaf39d92a0b7c5443faa32b97cd7fd74b251a8258aee8390b6965d5fee2e660","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/unparsed.t27"}]},{"id":"6abe8fe5b759fdcd2ddf4d172aab89a26064c793cc33b912369e9897d1c49a31","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline_parallel.t27"}]},{"id":"6adddc181a2303061a5805b40022f137ec1c1e53b8356733092a3e97182e4a3c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/sacred-const.t27"}]},{"id":"6b554e4f84194043054ef2f593a39423682c17ae6b04450685038aefd630c361","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_typed_forms_alive.t27"}]},{"id":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","sources":[{"repo":"ghashtag/t27","path":"contrib/backend/zig/legacy/main_zig_handwritten.t27"}]},{"id":"6bcf3942f1f175d1c3708484d4cb216a6e6ba7492a6ebf7e6320887c7d13a42b","sources":[{"repo":"ghashtag/t27","path":"specs/base/ring_32.t27"}]},{"id":"6bdb4f8974ba389d990a11b694eb15ced344591f6c3de3d24bbf23f85ea0c964","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/sparse_skip.t27"}]},{"id":"6c4c986a981251d73c668906e1bf7d6d1890d1c9cff359d33a05a64551ed5a0a","sources":[{"repo":"ghashtag/t27","path":"specs/functions/instagram-reels-analyze.t27"}]},{"id":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/protocol.t27"}]},{"id":"6ceda74185ee271a4807a4a2201ab68947237d3552921392442065c13b8feeb1","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_logistic.t27"}]},{"id":"6d12259c8f9ce6b5c139b041f23558ef50c0f6a3edb22569fb4e2559f4ca3b54","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/trinity.t27"}]},{"id":"6deb105682ed85d520e9ea126468db714fe5327c5e05ef27ebc160acdceca647","sources":[{"repo":"ghashtag/t27","path":"specs/git/diff.t27"}]},{"id":"6e486ce745126ddc7861d9f5de7d92ba10254e50aca17b80299cadac0f0a4c11","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/ternary_link.t27"}]},{"id":"6e6d50829c860bc9b518f082a70a91cdf099342e26c446808c22b896578a680c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/version.t27"}]},{"id":"6e7314f664d45e80ed132829c617b1485c95fd263f8dbda7244c058800cecbfe","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/red_black_tree.t27"}]},{"id":"6f3a6e286db6e16573a7737f673ffe65d91be40d9b7d4f75067071530c5c8f3a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_simulator.t27"}]},{"id":"6f56957ddaaf4b356a9d67840a7633fb648da73c30f1d4c53c7c5173dfa925e8","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/base/ops.t27"}]},{"id":"6fb6c9bd19533d03aeedfa90cc66376ec7d766d39367b478e9448997d9670c02","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/axi4.t27"}]},{"id":"6fc7adbc3cb48e15a1b9746c3eebc3f03242dd124fd614bf0b50e4d103f6dcae","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/repro_range.t27"}]},{"id":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","sources":[{"repo":"ghashtag/t27","path":"specs/graph/knowledge_graph.t27"}]},{"id":"7003fb2eea2c09498de0d3cfb0cc3b7c081f4ac6bc16484aab5c97809daa6bf8","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_invalid_annotation.t27"}]},{"id":"70156b4f00e3f1c9ce6951510a37233b65f156c48b9c7a1b5e038c17f00d514e","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/mcp.trinity-mcp.t27"}]},{"id":"702364d386bbe3faa8d17ffea1d2cd632f4cce8155369cf4d7806d395c81f65c","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/adaptive_routing.t27"}]},{"id":"703f02d41e57b24b69b0cd6317b335cd2078cb7d3591741ae804803d84a50e0b","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/python_api.t27"}]},{"id":"70bc5c1e10d9905fa22a38de1c7b88926b75d69b6a82305e69613820f70f83ae","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-scholar.t27"}]},{"id":"70d2234eebb2fa85930ed2b25c43866083a67c5190480e9bda198faf98adcef1","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/queen.t27"}]},{"id":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/project.t27"}]},{"id":"7139b2b6b7aa0906259f23ce6843e164cd365035c828ee5bbd2f9db07d305353","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_constants.t27"}]},{"id":"7155d76ca10f03c4c2cbe92de1350a9f38a118d9c610a9cfe2c0be294d441758","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/adder_tree.t27"}]},{"id":"716635d0a782f18bfd6d112d88aeacc9e1961b81a85aec42b91a970fd55ce662","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-tri-pipeline.t27"}]},{"id":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","sources":[{"repo":"ghashtag/t27","path":"specs/config/load.t27"}]},{"id":"71a93868a8177593f4fdae670dce0714895a9ecaadd2d4a09e2c7d84c415e962","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/low_bit_ternary.t27"}]},{"id":"71cddbc4cc0d1eb79a135a98431f85beac07183932a594b271eea011e6e2bbde","sources":[{"repo":"ghashtag/t27","path":"specs/brain/cognitive_loop.t27"}]},{"id":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","sources":[{"repo":"ghashtag/t27","path":"specs/config/migrate.t27"}]},{"id":"728844f72e63135d00838501707b599e7543c679da8b990138a0d194717d00ac","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack.t27"}]},{"id":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/sacred_physics.t27"}]},{"id":"733a075bd6e68bd9a66a15d24c486f1d3b5af85e924522660a805c53e8b938cf","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf1024.t27"}]},{"id":"737d4c04a9ed568aa611bd4933a163cd511ba730d3a145643ab0ae8d986fb0fd","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/quantum_gravity.t27"}]},{"id":"738793d0462dc07cf6756fdac1350b90db3ae7f133ea54885ed6d050f0d0db9c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft128.t27"}]},{"id":"73a4f9207c1ddbaa304cdfc874c0c09ebd837b4faa4ddac223f7b08383bdf80a","sources":[{"repo":"ghashtag/t27","path":"specs/benchmarks/bench_nn.t27"}]},{"id":"73bb97ab69e0b71c9e8f4f889a00cf720c6ffcdcefde4e2d1efcdbd8c7ef17b7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/colors.t27"}]},{"id":"73ff76bdd9389cea8203d82ed1262841928f177d3f7ea7224317980581b29edd","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/campaign_self_reproduction.t27"}]},{"id":"73ffac03dbf57ae9ff5964e99e329c9925f2fce22536eca96caab77533bbdbd6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_scenarios.t27"}]},{"id":"740d067747a4de74acb2be6ba7072f11ef58da37700addab7e7a172cc0c397aa","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-measure-corpus.t27"}]},{"id":"7411a1ca05061742f6bf4dedaaf4fe6b88343896e80971c79f334978f2432d9d","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot4_rne.t27"}]},{"id":"7454245beb5d71c1fff9e450cc1f8a5883c47243aaaac38bac1c7a894287e8db","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/codegen.t27"}]},{"id":"7489fea274db7163ea593d3dfe4e7cb5cf8b65df4437bbc0ff6ee03fbe5c01ce","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/derived_packs_candidates.t27"}]},{"id":"748a19d26fa53cf98eb889e0f223855c49e88d6d7efa5a7ca3c68accc9768c0e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_gfvalid.t27"}]},{"id":"751431cc3b541194897283a0f63b82af55129c2166636be7e411fb1a73266e03","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd.t27"}]},{"id":"7520e251d23861075aa7c4899aee7074e7199364c34f8f3218ee7d7711acd6e6","sources":[{"repo":"ghashtag/t27","path":"specs/automation/agent-provider-chain.t27"}]},{"id":"752dad745fac0d7ac30994843be67a1238017536671493bdaf0bfef8fee72be2","sources":[{"repo":"ghashtag/t27","path":"specs/ar/coa_planning.t27"}]},{"id":"75412d3ca17d8e725265fcad1fa41119076e6557f9740dadc23d87d9d2ad3718","sources":[{"repo":"ghashtag/t27","path":"specs/physics/hslm_benchmark.t27"}]},{"id":"75436c3008387808f7f8e4f65bd94adf669162e85a6caac70c9007eac588f49d","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/format_table_invariants.t27"}]},{"id":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/pricing_honesty.t27"}]},{"id":"7613974a2fe2ce834ef4997afff960de62d03b4deb791e5f867dbb6edcd648f1","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/nf4.t27"}]},{"id":"76483e0f7da1650b1481b60303334b3240a0872f02c2ae3ccfb9f61b7cadbeb7","sources":[{"repo":"ghashtag/t27","path":"specs/nn/phi_rope.t27"}]},{"id":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/parser.t27"}]},{"id":"767f91d7c7ff22bcf8464595a5e3a9d32d24af8157cb882dfa4958e61aec6e0f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/zip.t27"}]},{"id":"769952ebb9d14eba7cdd2ee226b9d266de20e692ac0ee1e66ba6f622564a91f9","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-vibee-gen.t27"}]},{"id":"76affd22763395ddb1ff3639130a93df72fdd0c7491275d4ef3f1cd0bc5c9377","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/kinds.t27"}]},{"id":"76c535ae321a55517efe4bf622714db3ef444b370dfb442675da36a1be3e4ef3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_tests.t27"}]},{"id":"76ed9aa7465a9ba704074563535c41d2df1fcfa2ac76059bfe2eb5e3e52c5933","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-site-live-gate.t27"}]},{"id":"76f4b79cfecc890ab7a7f7bcbe9564aa9d6ecde995aedb1de20315716844ca22","sources":[{"repo":"ghashtag/t27","path":"specs/bus/schema.t27"}]},{"id":"77346585fb0fb4befeba1c4f3233a3dbf8d4cbb3107df4f29cb3ca3f916c96cc","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf48.t27"}]},{"id":"77566dd023604fbac7e5faed2a768ddb4e05c21c50d05569b2bebd5be2c61579","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/trinity_numeric_surface.t27"}]},{"id":"7764be58758765cb0794cbd0621d91356ee6b71ba3adfb462f615b62111d7454","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-model-complete.t27"}]},{"id":"778a670987f99f11947e4b8ea72cf4916a1dcbf8caa7dd709576fbdf17fd19ed","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf4.t27"}]},{"id":"7825f7dc3e52ed55629715cafb917773d53c396372836ab1db119fbfa5934984","sources":[{"repo":"ghashtag/t27","path":"specs/physics/gamma_conjecture.t27"}]},{"id":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sdk.t27"}]},{"id":"786f94b80c9cc8da149e371886d2c2a515bb29a289dd287d9d8c2986692e0b1e","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/lucas_accumulator.t27"}]},{"id":"789be8f18768603dfb45d8664ad51fc1bb1311f82a0288c3a93efc19c08534e6","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-implement-issue.t27"}]},{"id":"78b28f38bca810c196c06cd765fa22434b387dd43610531ff703e0e8008d7dae","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/wire.t27"}]},{"id":"78c06cefeddc0d7ed407e1edb5d6c88305e04fd7994a58410ab8bb8d59234d28","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_mlp3.t27"}]},{"id":"79072265b3262e1328804af2c4408d96dec6c525f57f60fff3a181e5236fe9b2","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/agents/turbobaby.t27"}]},{"id":"796d838e8069befa45707a89b86aa34f7584ce5b80ad73ce8301fcdf479dd7be","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/builder.t27"}]},{"id":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a.t27"}]},{"id":"7a3c3be1e5396eb22e6cef48b76a8f2a428408f4f59d1911294d60759094ccd6","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/modules.t27"}]},{"id":"7a4293fa70eef3448b38f3e6c58d84becf127f5c561225ce43062b8c379e2719","sources":[{"repo":"ghashtag/t27","path":"specs/functions/webhook-generation-validate.t27"}]},{"id":"7a4adce8c814539d604fa6a4830e32d5c3639f524aa463d30643bec72670204e","sources":[{"repo":"ghashtag/t27","path":"specs/physics/p2_brain_physics.t27"}]},{"id":"7a5b6523fa3133aa7549a4458414f55f0d760d5dcc4b41a50d3e08dd0e06789e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/invariants.t27"}]},{"id":"7abd3f624fa0938c88e2ca78016af141b213aa31840f7aab968b34ac534a91f0","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri_to_t27_converter.t27"}]},{"id":"7acc3ed7813ca1bf6b8aa5e0836279f1221cb7beab5596b9c03feae7e141857f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/math.t27"}]},{"id":"7b032422cdd86d854023351e841cf5c6f6f43327cab5504b6afd61ac889614e1","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/sweep.t27"}]},{"id":"7b16ea29ae644a0ff54968ea37806543ba823c4bfeddd82f64c66485efec33b1","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/meta_compile.t27"}]},{"id":"7b2395a369c1777ca0333086c29266630d5335628190e6e46c253b9390af9f33","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/url.t27"}]},{"id":"7b4d45dc89ac177958625f180a55cc0564880cab1f2acb52e6123802096a272f","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/swarm.t27"}]},{"id":"7b96fe0feb3e7bc3e57acad912c8ab1fba60c054d3e1305abcc27f1e0b94ddd8","sources":[{"repo":"ghashtag/t27","path":"specs/boards/arty_a7.t27"}]},{"id":"7babf01001cd4e86adfad3f717ccf6cf0772dd38e143ab71d782bd66bc455b82","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/vectors.t27"}]},{"id":"7bba43f3ce59e8f19614856e91ac705b6fadd2cd3a145663b482daeb9a0b7120","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/adaptive_retry.t27"}]},{"id":"7bedc4c32ff920c455dde164e85dfaa02cd125c4c7b754adb5d637e1777ed136","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_depin.t27"}]},{"id":"7bf7cec4562d12aa0f4d9928b70cec5fd4db6ed6f35b52d2a9286f0f932eeb24","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/neon.t27"}]},{"id":"7c9c089d1b173d6d76941827409038da1d98eddfa3704b85c4d9203b417b2c3d","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/release.packaging.t27"}]},{"id":"7cdce660af6ad27ae82aa135275e74082c436921cf5dbcd71ffba3b53d21a892","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/power_analysis.t27"}]},{"id":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/pipeline.t27"}]},{"id":"7d20a12b3d90fd2b38f8a94afd4527bc77a12e37e389ae9db9afaaf5fa9fe7c1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/energy_aware_routing.t27"}]},{"id":"7d41d9d1ab43028ea61e4c36eb6c0e40b525e6d0f456db95f0312c2d4d06fc62","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/advantage_estimator.t27"}]},{"id":"7d9f32c563a3c9915673cfa1ab10024fc5175dc7ba961c403d780d8a252650fa","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_01_single_param.t27"}]},{"id":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/experiments.t27"}]},{"id":"7de9d8fe941d574b862a1724428a32e859938c864fa3748f3a14719ff0707388","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_statistics.t27"}]},{"id":"7e01134039639647e265aaffb16b2ffb484aceee92710e5dd993a783a81a14dc","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_vn.t27"}]},{"id":"7ea2370c5b1c69d599af13bb3956130320593d3aa72db524671aa7ac35e35604","sources":[{"repo":"ghashtag/t27","path":"specs/github/comments.t27"}]},{"id":"7eb9c81b10e1dd99998207ce71b792342f1f8bdd3852b974f27eb20418ca480e","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-cloud.t27"}]},{"id":"7ed0768769fcbe3216daf7c39d9e9c3955ade2228159ee79593cc91a81f9eadb","sources":[{"repo":"ghashtag/t27","path":"specs/boards/xc7a100t_full.t27"}]},{"id":"7ed6aca7a17af29b1cae74b8e6bfddb1cef19c748ebc840b09a9ce2f6b3ecc54","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/bson.t27"}]},{"id":"7ef232c76f3a3a5f3ab6eb9ed8046faa1fa7dd3085f4d6d3288f2bd538da3f60","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/sparsity.t27"}]},{"id":"7ef7acd6dea18076e9b87ed6b1cc6fa16ef8c0de91a59ce03bb66cb5f4d01e48","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/binary_crossentropy_loss.t27"}]},{"id":"7f2793c56bd3d880115c90604b5dbf1fa7f130d30c6065df06a364290ef10b9b","sources":[{"repo":"ghashtag/t27","path":"specs/bus/pubsub.t27"}]},{"id":"7f320c4d49c56230acc624e69cf0b48688a671104a4ad4f3aa4dbf85e145c106","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_analytics.t27"}]},{"id":"7f64754295773781de8320b3fefd813ef5d1dd492b4b52f5ac56f9d9e4d01106","sources":[{"repo":"ghashtag/t27","path":"specs/agents/s.t27"}]},{"id":"7fac93c96e724362777dc1f52a0cb589a6a73739d98722c0c602cbb98f772993","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/03_operators.t27"}]},{"id":"8015bf2fd623128d21e50cf1b1f55524aa3f75d3ebded4629c730e5cd9a8c578","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/session_timeout.t27"}]},{"id":"802df073593e74b8a7840556d305d079c7f318b64ab7011cfc025c04cfd5c4f3","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/router.t27"}]},{"id":"803ff8d37f9f4f1c3e5119e70d5c9210cd884b6b63b4117996e5401e6bb46448","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/terminal.t27"}]},{"id":"80644bdb5652ccafba32d06857d8f4d260863c4e91590cd6fbc7737350a090b6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/dijkstra.t27"}]},{"id":"806c0c899f339d4bd4b1c2c6c6aab2bcd60409eabc76eb169bcf7a752d9bee1d","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/simulator.t27"}]},{"id":"80769686b1cd7de71b5a61a790f882226450793f423b8dab1139be10f4df4748","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/elu_activation.t27"}]},{"id":"80b4ee7f35d5565bc5b9ca341d79fd417db007eae274989cdb20829f0644d3db","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/router_tb.t27"}]},{"id":"80d01a441ec4d93e5e7572db1c1dd4554c855576e3dc2caa4876fff33083db4b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/list.t27"}]},{"id":"812d7df81a70a438c40b7ecf3984eccb6f10b2b634a14c5de49c569c29b75c89","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/api_documenter.t27"}]},{"id":"81bcd6de906b6266b7492ae105ebb8234948b2a3b95736e3cf2c8695ef99972c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_12.t27"}]},{"id":"8201d47aaa9d3ca811c9a2ddf8b4e227645473d0122da9311fd542a5e53cfaa9","sources":[{"repo":"ghashtag/t27","path":"specs/functions/instagram-competitors-find.t27"}]},{"id":"822f44bf1805403da8da036bcb562da391f26ccf15a7bc4250b0c7d53acfc07e","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_smul.t27"}]},{"id":"82852d35ce3d37feae88af635fbe95a80a18041b9e5d789b4ca44d8e3d239b4e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/arrays.t27"}]},{"id":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_inference.t27"}]},{"id":"8299d68251e18c6332f4a06d94ea9c95052d9d3a2baac664900c065144c90886","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/modem_frame.t27"}]},{"id":"82e53134ec3279b1ec33b13068530b445bf69b93e846c01bbe375ba0f6101801","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/topology_visualizer.t27"}]},{"id":"82ecdcaef6d0f8cd6ee7ec4fba5e3abccfe9a19a896579656f2a071d7b15c3fa","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tf3.t27"}]},{"id":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/race_config.t27"}]},{"id":"8306e86091bc7dac8c797b4eb7de6502fb4b38d65fb49b73b33aca60ee9ac31c","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf14.t27"}]},{"id":"834488d6cb46174413023d6fd86396e212af114c9d30a8b0a18b54d1e5b9cd5a","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/partition_tb.t27"}]},{"id":"83697f2c0ddeafb4bdb3c87b327a2d663de93214f7fb8d10d485574ace9ac293","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/mvp_ternary_classifier.t27"}]},{"id":"83812b46b8bdc96bec83780f45d276acc802c6900b2a5cd74876e11ef3e973a9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/eof_hazard.t27"}]},{"id":"83969c01bc42ca48ab841ba4e77ce26d08e9b23a0922dcc33dffee3b69cdab74","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/runtime.t27"}]},{"id":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","sources":[{"repo":"ghashtag/t27","path":"specs/boards/wukong_v1.t27"}]},{"id":"83e694d0156e30877c9a0d898b194667571fbc64181ff7c99dc0f7647a6f3452","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/fmt.t27"}]},{"id":"83f5c5c4cb4aa9441639a9dff69bc621c4bbbc53e44252b257a9f2089fbfec00","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/core.t27"}]},{"id":"83fd64fdf3b8a0001d74c1769230ca11b7a0d7f3729c46881b92320b51708b7f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/error.t27"}]},{"id":"8404e46c4a1aee5956f5ec1ae74f13b73ec67c553df16ec59812ff09bc41f739","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/r_combo.t27"}]},{"id":"842eeb98f3d4915e7c4beb3b5e53b803de94f5e1f8e3db5d574aa67f8a616879","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/video_bridge.t27"}]},{"id":"84753bf2bec3f9c744cac4ce527210e87fd55d1843aecc8f533e52e25641cbea","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/cts.t27"}]},{"id":"84a6ee5d56e617746da71f22a23e7c1db91639adfb29111a7ff4a84995d40569","sources":[{"repo":"ghashtag/t27","path":"specs/github/tests/e2e_full_flow.t27"}]},{"id":"84e1402434636a6019f33a2e38c977ff91b630ded94cf773249c022a12d8b3c5","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_05_enum_rhs.t27"}]},{"id":"8538ad97f51494ef1c556e7c9f0a792710427c5f2fb7354ed840a8dd71e05af2","sources":[{"repo":"ghashtag/t27","path":"specs/demos/simple_test.t27"}]},{"id":"85737878076cb079490db44c9772b4934fc0daae162b066db29d1685190a2c60","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/maxpool2d_layer.t27"}]},{"id":"85886ff8a1b7a674923d3b4ab6e76727ad0ab89b7adb14a853a12bd946df48c8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/crc16.t27"}]},{"id":"85a7e9a6f0716d535f5a19f0e3e67da32b8bc956f9cd620f5099ba4961d75b55","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/tree.t27"}]},{"id":"85e9e5f9206e17a924e9ae7f2a7c79a62cce17f06327cf1abdf424efaba6cf41","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/comb_bitnet_neuron.t27"}]},{"id":"85fd8a7d31b783c57da0443c9ca2156d6d786867bea9dfee682f6208f876e91c","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-security.t27"}]},{"id":"86475f7d52556f934215ddf1cd501cc686af387785e98069a29de61a3bebac75","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base64.t27"}]},{"id":"8680ac8254c709d607055ee4ac6872b05bece422635c44dfcc5494d99952992c","sources":[{"repo":"ghashtag/t27","path":"specs/agents/e.t27"}]},{"id":"8689a47ee97a2588da26a7492f8c6f543dd25702b9962cbdd25ce16070129d38","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/prose.t27"}]},{"id":"870a33f2ff7a6fe458c1d4ebbff5cf8632c697d2f59a5bf243e943bf1e5186db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/access_control.t27"}]},{"id":"8729edafdc8239d187c0f2b7d98238438d40ec439b39087e1654bb683366ec3a","sources":[{"repo":"ghashtag/t27","path":"specs/crons/railway-jobsearch-cron.t27"}]},{"id":"8739f5a9100f6f989b3558fa5c49af008fb134e3c640c67a0ca946e2880e42bb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/gen.t27"}]},{"id":"873b57df4eaf9b77f0d358ab646dd76e122a9bdcaa792f6d94b40c51a5d709ad","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/r_op.t27"}]},{"id":"876549ab3f5280deab180fef42f99976660d3227f726b3ba4e19d0a75f7afe2f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/swarm_coordinator.t27"}]},{"id":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/requant_boundary.t27"}]},{"id":"87edc9316e590def9f59b546eddfbeee0457669bd03e565e870862d0ea4a6fb7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/matrix.t27"}]},{"id":"87f4df6699be1253d8cb35dc7ff8065613c923bfb72af25822078017897d1177","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_critic.t27"}]},{"id":"880d0b6c01b2b1e4cc9bc92c11ef300b8335bdf8ca842308bca7d3fd7e979254","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-production-monitor-L80.t27"}]},{"id":"881cb1ecd624422cbe055e73272343e1fa48151ce41b680fa1b01eaed9a26319","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_sorting.t27"}]},{"id":"886e26ea3b1edab164a49afadd98eb874a22a2940b0b98d2e5db917fa047d0c3","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_02_trailing_comma.t27"}]},{"id":"8879f6761c27c51c6c8ed11a13974ac5935ae6e9776cc04f64ca8ff0ac4169d2","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/holo_mux_x4.t27"}]},{"id":"888f09cac9289bcb34d7779dab42458bdcab259b85f0d8d3dca65e634e7cb0f5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/cloud.t27"}]},{"id":"88a19f0f834d7cf72ce68bd59cfd69d74daa682ce4e2bdcc0174a0e47719eb72","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/neg_unresolved_import.t27"}]},{"id":"88e816a15bbe55f67c12235d8c07c910bd35c41cf2299ee4f91a203b237daea6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_06_alongside_plain.t27"}]},{"id":"88f409d2b7ed9bab788da1aa663b899d1c6491c476b76aa777d1761c0f0d7e5b","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_classify.t27"}]},{"id":"892bfeccae76c838fbdf64c33008605d79293384109ec5b22d087373db822e7f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/transport_tx_fsm.t27"}]},{"id":"89402274898f607a2be4d505f8925c76802acfe2683739605f8413604530ff23","sources":[{"repo":"ghashtag/t27","path":"specs/agents/c.t27"}]},{"id":"89577bc05fa188e69db1d81c4f6f5237c764e5a47037d5518788f84bc81120cf","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/anchor.t27"}]},{"id":"896ec37548b1099e2befe9e501eef19c0badedc03bf3e26a1e9c463d6e465842","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/cosmology.t27"}]},{"id":"89a7740fd5e445abd9fa8e839ea57020591daa228f2a83719af15e3e82c15b68","sources":[{"repo":"ghashtag/t27","path":"specs/tri/graph/bellman_ford.t27"}]},{"id":"89af60b026ed44f74e7fdeca2c3486d1b6936ed25eb36952a2acc4fcfceb8887","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_join.t27"}]},{"id":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/sort.t27"}]},{"id":"8a2aeb36832b43ec2112a770f943529481e4a7f3ccd52f7b4fdc62e7452978ed","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/mesh.t27"}]},{"id":"8a493f0dc62ede898be9607f13ad8d7d4c7171c951301718736f75a3b4ec889b","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf24.t27"}]},{"id":"8ab9285758d8870b2943ef4683f7cef21b36ec668f336787eec41dcc6f7e5b5c","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/hardware-constraints-kg.t27"}]},{"id":"8ac2f175a17a71996c19ceddfe61aa010318a6fd81b5aa1491dce361ccf5c4ac","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/negation_invariant.t27"}]},{"id":"8aea8946d266dd32d1455a5ae70c1b8a3b79f0ee4ac7889f68f14d0918094484","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-ci.t27"}]},{"id":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/verdict.t27"}]},{"id":"8b07a766bdb93f91528171c1fdcc4b148c1fb9705dcaa436467157c81ade810b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/ppl_calculator.t27"}]},{"id":"8b3bc6614cc288a837b694b0d936f51645d3d9b37966a25b4a8e34f125119585","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf32.t27"}]},{"id":"8b6fe7a680efb096f89b4f3166bdc6724a7bd3e48fa841b90ac94c4e1f66df01","sources":[{"repo":"ghashtag/t27","path":"specs/tri/net/channel.t27"}]},{"id":"8b7170ce5946d494428c43084d30ccbcad94c0cda325f4dde2cacb16cee3c7b9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_arith.t27"}]},{"id":"8ba19bb8f83184f5d2ae0610a45c8b4292896654b4396bfbff77229d296cb997","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/aho_corasick.t27"}]},{"id":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/e8m0.t27"}]},{"id":"8bf789ec0849acf8c11d339deddeaace0fb2c99e444c72f11b32bb922af544cf","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/sac_actor.t27"}]},{"id":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/dfs_gate.t27"}]},{"id":"8c085a1829eda935ee9ce257c16945dc1e34d4f8c3446d61f15dc4306a1c06f9","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_classify3.t27"}]},{"id":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/runtime/runtime.t27"}]},{"id":"8c42f30c24a45be46828ef019aea207d5b03cb44f8600434f3b3a60c8f128cbb","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf256.t27"}]},{"id":"8c683823554ee75c69b4dd27468eb819bd8f7ea003e91cf216b80be03dca13a6","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-run-tests.t27"}]},{"id":"8d379f63dde398e22375d6ab17f133e701bca3acb3d707b3208feba3fc7882c5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/batch_runner.t27"}]},{"id":"8d3bf841fb17bd564941055b1608bcc4363595ccfb11d79c9116f0024a4328a3","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/native.queen-app.t27"}]},{"id":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0009_two_clauses_one_line.t27"}]},{"id":"8d6628538bf727e99f5c131624d8cfb6867810bf4d763eb9f681cf867699a591","sources":[{"repo":"ghashtag/t27","path":"specs/ar/restraint.t27"}]},{"id":"8d982321638e3fbde1a0a9ac40ad051614868d399025685f5b4d580ec86a1656","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/quantum.t27"}]},{"id":"8db0866dc43faf34aef111565007cdcdb66dd1d6dea46e8f7c7ab2ec97cdf13e","sources":[{"repo":"ghashtag/t27","path":"specs/functions/reels-ai-callback.t27"}]},{"id":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/mac.t27"}]},{"id":"8deff6f95e04a674b0b6677969b4a46c704f13ec0ac17816ce356230eae6b487","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf_competitive.t27"}]},{"id":"8e07fb0816cb06ab42ba9af99164200de1bd2d929f3e16052c946d70dcb3ddc2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/arrow_time.t27"}]},{"id":"8e5ba5dfd346196b718e8abeeb200686d3721831b8a376938316f5f121955dec","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/args.t27"}]},{"id":"8e663bc28d1cce0a1eb38bc92ed95500f478f35c6a97cf1a0e07b062e284673e","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/seq2seq.t27"}]},{"id":"8e96c0001588aee91e7dc5aca1d68be9580b7834c595a78c7d62bfec83868b4b","sources":[{"repo":"ghashtag/t27","path":"specs/agents/u.t27"}]},{"id":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","sources":[{"repo":"ghashtag/t27","path":"specs/nn/hslm.t27"}]},{"id":"8eb008b250b93d3ec404e36be81a8e02c58a0495ba6f5e370e6f3f8361761644","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_log2.t27"}]},{"id":"8eba8906c7b3363610d70611c47190e3a0c577758540669ca80a7c6e383c64da","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/polynomial.t27"}]},{"id":"8efdff73f0337345bcb6950efb5c5d5b83e0db6a6d86cb2abbca629d5fef1bba","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/cap_test.t27"}]},{"id":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","sources":[{"repo":"ghashtag/t27","path":"specs/pins/ir.t27"}]},{"id":"8f93c36e4a69d1c698d8f30be012f20565fb849338a44d5418782721c13ea066","sources":[{"repo":"ghashtag/t27","path":"specs/agents/ti.t27"}]},{"id":"8fc1e6d391ef81cb63d49bc1d38dc95d6a20bc819fd8da94b111dac89e57990a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/tuple.t27"}]},{"id":"8ff28a2ffa2c8d1ef05a013691f905a41e7cae6dfd3bcf7b818ac823509fe060","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/fifo_tb.t27"}]},{"id":"90181cc2b6306945600f0e2a0202eca1788884a96bce5db64d16d820cf62ade5","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/archive.legacy.t27"}]},{"id":"905308ea72644feb0e72d64a5d6c6edaed7e0d8e7182e7d52d8157f9951e756a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/jumps.t27"}]},{"id":"90a98d73cbabf43baef032e5a8522a1e6aaf22c3ad5e89bcb4a1f4389d9698d3","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/vsa.t27"}]},{"id":"90c8b8aaaca66c08288a2e82386a5c48c79fd208f59bea2df1a3e556f575ad01","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf128.t27"}]},{"id":"90cb626e0465988603da5013588d2d56b237a09acccf0184d6050653ffef9407","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/embedding_layer.t27"}]},{"id":"90ea646b1c7dd08e161b4da050eef9fc3f35e864726f9e4ada54c09cfa29153f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/deque.t27"}]},{"id":"90fff63e83a250434c62c3918a91b8a53f7d72a93469ecb589470b1b1bee1c12","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-model-start.t27"}]},{"id":"91048d7c7ae27d96b52540d240f169968c0c77c769bf6eeddad35022b8c15fba","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/adapters_declared.t27"}]},{"id":"9114a4bdfb275175f60c5a111bdc07bbfcbb62c55a0871176b8f93e3436bdd9f","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-notificationHandler-L318.t27"}]},{"id":"911fde186ecfca915f43290f2a98316db08bef4167b499fd8c9d3721346df79f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf12.t27"}]},{"id":"9153036f09697411b9d386df51e52bea48444e1035547b0c602a02efd7c35a2a","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/instance.t27"}]},{"id":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","sources":[{"repo":"ghashtag/t27","path":"specs/ui/viewport.t27"}]},{"id":"925172c39fe861f4fa2bb6c2f9bd51f12ee863027e136e18e5f5db5a60b8fdaa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/physics/gamma_conjecture.t27"}]},{"id":"92611173f8a4905896c3b53d26dfdca357a97569f1ea647b4c482e0b36f25861","sources":[{"repo":"ghashtag/trios","path":"trios/policies/precision_policy.t27"}]},{"id":"92643bce03950f663ae5071666c57c6d76eae0aeabde17acf65d5480f27349a9","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_settle.t27"}]},{"id":"92c1db0cd818f2f40e8fda52e72083334421f2a3689b78e60330fa4f52f33bbf","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/tri27.programs.t27"}]},{"id":"9343d321dd810ca0fc3cba58db5a3b74edb7a4c28b8ac279ffac5f87c2ab9296","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/phi_ratio.t27"}]},{"id":"93548d18109d7be76e3c43ea298c9db0a335044e2bbb820d23606859c9939bdb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/notebooklm.t27"}]},{"id":"940d8e61a48eef57fd32aa3c5151276ec1dd91406ec66022ba6b54ea829fdbcf","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/reports.t27"}]},{"id":"944ecca9a2256abe010c7907749d6d2ae172c42d67c2e6cb2da6693ad19d6386","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/node.trinity-node.t27"}]},{"id":"9487c912aba6ffdd9b412b4873cea41baeec4e1a9ebf5049e38e03c3b9ef559a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/takum_libtakum_crossval.t27"}]},{"id":"948f91989383d6a7e3a148da37c9671bde69f5599fa95abf1c9704922108f3d3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_challenge.t27"}]},{"id":"949befe08d74fbddd4b1f79be2e36be09900c171edf1361e97ebf4973c682edb","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/boyer_moore.t27"}]},{"id":"94a9c3f27d49d51c2cb60355eaaaa9a9f296515a6974afb7c629d7ff00681f54","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/conscious.t27"}]},{"id":"951d3d8a6dd0c1c6c62a303c660a45205624bf2f558fd090b34fe5b45b9f1501","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-tech-tree.t27"}]},{"id":"952d5b6c692fb41e95e6d82afce9f6572af50b603809e8302b277864f8008c1d","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/web.docsite.t27"}]},{"id":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-client-ownership.t27"}]},{"id":"959e06da2849febdf16205273e4592a5390ce6c4d2be52caf2b7a5b80e3f5a1e","sources":[{"repo":"ghashtag/t27","path":"specs/server/agent-runner.t27"}]},{"id":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/swarm_coordinator.t27"}]},{"id":"95c9e9bbfaae6a21c206eb8bd48f2a4eb041ab64cfbb9e7e709069e3ac14de52","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-logs-analyze.t27"}]},{"id":"960962e79669080198f0efa31668d083b1ea8eef02176cbec9eb245c89d9cfe6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0009_no_prose_in_tests.t27"}]},{"id":"9644a4022fd22cd07d2917162571657681889d2e6fe3cfd706ca864ab64921f3","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/market_profile.t27"}]},{"id":"9680b23bbde4df74a98dacb40b7ecf2a5268714bc05b982fd8d95c2ec046f225","sources":[{"repo":"ghashtag/t27","path":"specs/ar/composition.t27"}]},{"id":"974e62d1cdcc28189ff5fddbf9405c9e02f8bb01325bc2f9860f0578a053b345","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/quadtree.t27"}]},{"id":"979b29b19e25610e1bdaac20f03ff6c2f302cf6809ccdbdd6b6f900b91031202","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/result.t27"}]},{"id":"97b49ba506b232e350b47ad6c381c56a13b59213dbac2feb55ef5cfd41bd3513","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/binary16.t27"}]},{"id":"984f2e0cacd78b57edaadfdf2044948512060e52e98a2499bd669847ac482d5f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_search.t27"}]},{"id":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/ride_runtime.t27"}]},{"id":"986ab5147dece46b619e35c0ceabaf47380e7b69fed47a34cd8d1963699b20fa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/mime.t27"}]},{"id":"988fde450417ef49c76850057fb5aaf9aa4c5a5addebcd66626e7f1403f62796","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_03.t27"}]},{"id":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/optimizer.t27"}]},{"id":"98bea5e1d3b21a3a20dbc1c9022b7ed1caa8c9b02db9d1fb921eb1e0fed709c0","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/nickname_directory.t27"}]},{"id":"98f0c29164ca0fcd92e851d96e061e6f442a80fccab59e71f5d617f364afd7dc","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/ledgers.t27"}]},{"id":"98f34738f6fa88c06b1316d6a9849fc24d62766e5e288d1498ef3d2006ce1e9a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/ast.t27"}]},{"id":"9973916e12d9225b9f175037e9bd30897284f515074a11b97585dbf7b1a59e80","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_challenge.t27"}]},{"id":"9988e4ba66ce159c60fcf384d153cd0819729c109768529d978dd6463fa69393","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/fifo.t27"}]},{"id":"99ebf178406aca85a298193daba6068aa347ae30b5b8eba462c6dcc5b70f3a56","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/timing_tb.t27"}]},{"id":"99f03be9bbefc5f7c3b0637717e69650f11b0bf8644563b4e03bd24d12a66c89","sources":[{"repo":"ghashtag/t27","path":"specs/skills/t27-tri.t27"}]},{"id":"99fa8b738f00c108b3eb1e9445daab42093844115abeaf03d2e8289b090096fa","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_bind.t27"}]},{"id":"9a0b5f5e3fb7872e8e1f74ab4c00ea76876a1d20785f24e3514f9068fd095093","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/edge_demo.t27"}]},{"id":"9a3ae9ac50319a1e9ef398229501b77efc2de36fbc7a0b0d1e7acda3d83f38f6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/lite_crypto.t27"}]},{"id":"9a3ce1aa2579e2bd858efa611d2517e13380fcaa88450c4147b653908fd8df69","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/multi_head_attention.t27"}]},{"id":"9a4c088046903f7c61d3fc801bc6f5f269665a171b503df17c4b916b0277b2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_storage.t27"}]},{"id":"9a61e51e4ba3726bba33fd5b80e6ef79e2785e9273dddde2f89be4a6ebae91e7","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_analytics.t27"}]},{"id":"9a7a252b0234051663b7a9a6f9712ceb2b15501140378ef156612ab574aec6ae","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_memory.t27"}]},{"id":"9a8156c31cf1ff378730d53a4e55d2265fb101558dabfa1c3cf9f3c9e3e3ed5a","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/circular_buffer.t27"}]},{"id":"9a8e8e52d33b66c6d97da9a594ad846be09167fc677663797690c1c043a6bf0e","sources":[{"repo":"ghashtag/t27","path":"specs/git/schema.t27"}]},{"id":"9aa3f120d7149de57f33abba748180cf7cfa0876bbee28cb4a4fb6459b1cad31","sources":[{"repo":"ghashtag/t27","path":"specs/tri/io/io.t27"}]},{"id":"9accc231b98fdb11bc46570815abc5d9c9f1f84838ddecc45971c549a9a003da","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/goldenfloat_family.t27"}]},{"id":"9ae6f8bd4402e16c75d45181fdd2600e3ad8514cca82dc2ae796c9e7bf1e1f27","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/gelu_activation.t27"}]},{"id":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/bench_proxy.t27"}]},{"id":"9b70a19282f97706600410642104485c1cb158c9a4f0ddfde6040850ce334635","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/cli.t27"}]},{"id":"9bb3e3fb5d73315392c6a08b674ca0b04d63b1e324dfa2a5ecb50bbdae6d074f","sources":[{"repo":"ghashtag/t27","path":"specs/functions/monitoring-logs-trigger.t27"}]},{"id":"9bbf12fd864d2ddb76503caa27bd5159f5f134b246d121e6c6e4d935c0cffa19","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/pattern_predictor.t27"}]},{"id":"9bc29526cd752989255b14925191d722cb8c5ebbf8b805412b22de07945d095c","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/e2e_test.t27"}]},{"id":"9be969e9ee07f2ac25392d6c3001b94a6386275db45b5a08881382a8c22782ea","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/language.t27"}]},{"id":"9c3bd00b6e03ac89e08a3c1a2a5c2b6d52a91ebde2eb0eee16712a3ff06db38a","sources":[{"repo":"ghashtag/t27","path":"specs/brain/brain.t27"}]},{"id":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cross_layer_optimizer.t27"}]},{"id":"9c72e0708c09aa65265bc7a089d77f35949d4304f42c67826f5ae269ac268264","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/llm.firebird.t27"}]},{"id":"9c8556d27e470bc9a3219428a34d472e98999f082aa4e47afd8d2cc325a76200","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf64.t27"}]},{"id":"9caf79744e4fe67d95900b03c1298e0a046444ab82e98057a133550f4c8ba646","sources":[{"repo":"ghashtag/t27","path":"specs/base/ternary_encoding.t27"}]},{"id":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/performance_profiler.t27"}]},{"id":"9cef031364c904a77e2e4b3b5e087264772e8db757aad7455942517a0d59ede5","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/array.t27"}]},{"id":"9d397a176e2db4f55c544daf8ea1142c8d9c45c1e0ec5ad9e4b329ab24eed82b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/c/codegen.t27"}]},{"id":"9d464252d2dde474735df22e6f84c74959316ce9f17c7ae6299091287e0867d7","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_mlp.t27"}]},{"id":"9dc4e475f38f849170b46b46c0a72486485d13a37e4a53150b6dd395b4252a6a","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_line_emitter.t27"}]},{"id":"9dfafc8670514867101a90a51dcec2f5137a1f0bbb3c90da038038a2c2f4312b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/state.trinity-dir.t27"}]},{"id":"9e0a54bfc5992bb96c5dc38dcbffd57334be6866207e09185966985e870dacbb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/published_pack_audit.t27"}]},{"id":"9e53c7a141c31266e0b275bea41a46eaff276426ff85aadf52524de77c69ecf8","sources":[{"repo":"ghashtag/t27","path":"tests/ring0_trivial.t27"}]},{"id":"9e7f3ab64dc081da46232c63a023d2d392652bf57c2720c46fe02b564a0f1f37","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_reset.t27"}]},{"id":"9e8b0319877e064acbadfcf4e2611da323f38382cee7f318b4f552e01d560898","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/lean.t27"}]},{"id":"9ec4b6bdfdd71d5d9e4e95513ab3bbc6ac8691ab2086dd1b4e0a2b681cf1b5f9","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf20.t27"}]},{"id":"9efc1e9e11d76314621e08b5d34fa54cd07ec75cea8d11045f76b846d001d450","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/parser.t27"}]},{"id":"9f31f299bf8feb20f30634bf278318e04e0294700bd1c46fff873e0785c77fbd","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_set.t27"}]},{"id":"9f64b649f7135a01834a1565e2704b40c1aafb3119a5e79b7ec3f6bac4f4117d","sources":[{"repo":"ghashtag/t27","path":"specs/brain/bus.t27"}]},{"id":"a00bd702944132e0f90601345516da4a46ff4edc7d602a4e9b337a6ad4fb3982","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf6.t27"}]},{"id":"a01f9b3b1f8a96dde1e164deabda3e01311adb78a77676daeaf3c10d3532f57f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf8.t27"}]},{"id":"a01fd77f5b67719785f929e4631a189fbdbc932bf81bc3d131345ee1cf6744cc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/hir_tb.t27"}]},{"id":"a0aad75ce804fcc056130bab7bd9b40af7145467cb0f0b93ed1147a2c6b89f8e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/inngest-dev.t27"}]},{"id":"a0ac4c99cda825e8fb9a82964e752d96e1806d22a65b354d27a383354fd3c538","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/arithmetic_invariant_sweep.t27"}]},{"id":"a10ca3fde42f89cdc371a5b78bce652bfdd697f2dbf85996b07ccc59e0a4076b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf24.t27"}]},{"id":"a12179df0112258f07ba1d050c5ed48d527d40d0c5c9311669dbd5fd2f6b80da","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/container.t27"}]},{"id":"a1431113c5c6deda18a9ac55bba10ae0e15fe487d2a8181788d5adc0be2f03da","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_full_adder.t27"}]},{"id":"a16c8b2d502ca53955b1e51f3816d111ac056e5fe80904edbbc52fc269e45a92","sources":[{"repo":"ghashtag/t27","path":"specs/crons/t27-pr-dashboard.t27"}]},{"id":"a17c670a518c715c6597a88710a861b14addef86901199bdeaed17b9669318a0","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/train.hslm.t27"}]},{"id":"a1cfc613efbfa850c3b9718a25d0b3217985192cb746bb938590ee047b8e4d4f","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generated_pack_audit.t27"}]},{"id":"a1d8952a42208b161d951d524922fe049963a312a15721e7e5d5c95097729812","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/priority_queue.t27"}]},{"id":"a1e332956a4113776724f90271af313d36df6a30bb5aab6514bb8df2729ef16c","sources":[{"repo":"ghashtag/t27","path":"specs/agents/i.t27"}]},{"id":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/loop.t27"}]},{"id":"a22ab6b15a934f1a5acdfb05426eedff2efbb9587dbc79b47d383c42f7225fe9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/semicolon_phantom.t27"}]},{"id":"a2763ea254fa12292e8679306c5d8f24bb81f8c13834f63a5c62737bb25f6af1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_add.t27"}]},{"id":"a288c0f16e4ea292150c59b5b5aad98b2f38e9da3d80150159655409eae826fd","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xornet.t27"}]},{"id":"a2c1f1c987153e3d5dfd1983d6d41b0dfe5e1647ff9163a9fd6335ae28bbd454","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex_advanced.t27"}]},{"id":"a2e26da390ab3d79813181b875c49cf801464a286c1e4cf1b9eaa34ca5652a71","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/http.t27"}]},{"id":"a2ebde7a92192f30a6a511119da778e11d984f67438e9dd6f7706f3c2cf25afd","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_04_fn_signature.t27"}]},{"id":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","sources":[{"repo":"ghashtag/t27","path":"compiler/cli/git.t27"}]},{"id":"a31847034f503436595dbacffbefcd06da79a418cc0f04cf2509286c3a1790ba","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/performance_benchmarks.t27"}]},{"id":"a348a6bc574e6fb2b5af6cb13db18dd55415193444e4120e48e62ff4b100b426","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/compute.t27"}]},{"id":"a38b7863503ecc5c37aa4ebdd7d239cc7cafaadaa5b719b234e802e6dcb322ed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/api_documenter.t27"}]},{"id":"a3927bcab311e42d982b0667bf8b946da6c1bdb147d65a24985997700486ee36","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/cordic_top.t27"}]},{"id":"a3ab6aec3a806403d4c098509b8a12fbaadbf61d70ae0485b598be864bede97b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/bytes.t27"}]},{"id":"a3b21a33a8a8022b527e3f46362fb6df63fb6f2e5ee642a439d88862dd4722f3","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27"}]},{"id":"a3ba5541115a575b99fce7ab3b7cfb3742d11f6273c93a0050b05275a23033fc","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/dense_layer.t27"}]},{"id":"a3cc24914c0e7e7480e9f97b6a296794f6d1458c0f11863974798181f5169ae9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/vsa_cosine.t27"}]},{"id":"a47c5e78116355ea3be4624018b2fb0e3d9e2a8f71bc0f666d915b13a4243312","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_train2relu.t27"}]},{"id":"a4dc20bdc817a79850728a9eaabe89d0eb37c43735b56b7024b53033dfff4e08","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_bench_measure_target.t27"}]},{"id":"a54d0047cea5a50fc70f0c4f93978243028d115b4578dcb5da59ca9d4bf117ed","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/timing.t27"}]},{"id":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","sources":[{"repo":"ghashtag/t27","path":"specs/git/status.t27"}]},{"id":"a5666136df528393dd97673ac9ea68fa10fdb3b7bc111b4be2d39b42c1091c91","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_uart_tx.t27"}]},{"id":"a5795eb0f4f613be5d87942a58c5841de9e27c69414cc8bd3398aee48b6275f5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/schema.t27"}]},{"id":"a580e7e0ab08c1395f0a233f729efb3b8e2a0da6f1765afd5891fe4c1b456453","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/splay_tree.t27"}]},{"id":"a5dbcb7030b094474aaaa271acb30a8e360843416a8ce98070bfee8cc66ae80b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/adamw.t27"}]},{"id":"a65ff9c73705aa9ceec3d2ac8abda449cf68771040c2457378217bd89663cf81","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/sparse41_decoder.t27"}]},{"id":"a6a4f6579d8cc4bf3f189a7e38513deef25050922364e0f04860087d7ca070ea","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/traffic_animator.t27"}]},{"id":"a6a7a8f430e0132d79aa6881521522066a94fa5b29c16cdc844405c1824c864f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/crypto.t27"}]},{"id":"a7a393454d6c7633bfbf3ce21e91dcb7e2232921c6492192b7db580242981ed0","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/fib.t27"}]},{"id":"a7f07f5357f3c3bad11b07cdc00422f735e6a80a9f6424b5eabe94f12d4fd0a3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/key_management.t27"}]},{"id":"a7f24bf9b6921c2d3b5bbb4bd4519b8bb42623a7bf54ba85ceb3b39e12799c74","sources":[{"repo":"ghashtag/t27","path":"specs/functions/content-scenario-clips-generate.t27"}]},{"id":"a8197c8c62744c13e229dcea0384298bb118088c8de922a85faeff60ccb58588","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/int4.t27"}]},{"id":"a83c6908f56dff1e15cc256e2a5230eafc57bbda16908f5618b1a690bf34d4b8","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_ripple_adder.t27"}]},{"id":"a8a83daf267d0504d21379f7c2dce998cf5c9ea4847715134afb9b0afd952da9","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/08_modules_and_arrays.t27"}]},{"id":"a8c995c80a03ce5ce33026ece6e71cc0b1a04c00fe99f2118d3a6b251787f8bb","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/sequence_hdc.t27"}]},{"id":"a960b7f1a9936d59ccf97203a7031161075c78d1ba6a0f7c78b65084d3a910a7","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/test.t27"}]},{"id":"a9a6c5e59b08e8c8746e04f84adce8407018d6d7e49adeaeba06ce0e250cef33","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/nested_types.t27"}]},{"id":"aa02acb04870c6d0c72134e4feca4eeaf819084a5cf0409341fd3f9749105177","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitset.t27"}]},{"id":"aa28703435668f5af1666adebde67002d5cd800c48e0550c36becfefe9032bdc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/variant.t27"}]},{"id":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/local_processing.t27"}]},{"id":"aa3c58adfab37776f186d26fc60f47aed131db48bb9045875ecae8cbbe62b51c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/state.t27"}]},{"id":"aa7a491dff3f3eeca6b4ddf68779ce179c51376db2414b0517b13cc9febee98b","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/trinet/ternary_hw_verification.t27"}]},{"id":"aab3e536f0afdce1db03304ea4591988b4f284f1a456a6d93bab689ed253eee2","sources":[{"repo":"ghashtag/t27","path":"specs/agents/r.t27"}]},{"id":"aaf7d2d4ae26d149b68e8c50d010bcda79b6ba3bf30c782194ca37bd60f8c7b6","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/fpga.t27"}]},{"id":"ab67427b1b6231635c4811115026c4cf04edf9bc820b52e02176879fb05f5602","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/positional_encoding.t27"}]},{"id":"ab7ee1773622aa46442aec7aeca5cdd1a1a3c36f6321451a5e426df80a75945b","sources":[{"repo":"ghashtag/t27","path":"specs/docs/system.t27"}]},{"id":"ac05a41e5d3f54a99466f848a89d6c13c12f300b3ff31994677cc9b4c429be34","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/test.t27"}]},{"id":"ac2a7dd606abd2a289cfcf53e1362ad9e1d930066a8feaa18748f131db5971ca","sources":[{"repo":"ghashtag/t27","path":"specs/automation/wrapup-auto.t27"}]},{"id":"ad0b455296e2c251b57c2bb0b95d5b6171cb884dd6547b6b994f5962ca011c21","sources":[{"repo":"ghashtag/t27","path":"specs/tools/registry.t27"}]},{"id":"ad1f645f6b172b4c3ff97c07a1de07518b4344c47addd232f20a084035a674dd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/knuth_morris_pratt.t27"}]},{"id":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/training.t27"}]},{"id":"ad278f2c5876f7f6c78a0fd9bd181c12fe7311b243653275b18fc045a8afcb37","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/linker_tb.t27"}]},{"id":"ad3a425fffc02fe0f02fc5c01dbb8ef29eefd702872aa00e4796e9e637abbce1","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/imports.t27"}]},{"id":"ad98ed47c35feba495e6de7e3cf342a608496ed635c62ce32a55a85d4915133a","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_identity.t27"}]},{"id":"ade667c954b1e7ffcf330e0b5029b371f30e69e723a40b1e4aa6fb2ce93662a6","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_scenarios.t27"}]},{"id":"ae32961a90fd40b66ecab5b4d20fea7d20293038c00c728d191d211a9576986e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/tri-mcp.t27"}]},{"id":"ae615368fd954b1c1696c0428f60644a160bd223472f2d6dea234af173ca89e7","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/web.site.t27"}]},{"id":"ae64dc117c95217e11bbf10e7a52d5c474418a7600f6b0a7f4d58b79e1637193","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/probability.t27"}]},{"id":"ae7758ea62fbd4d9afd94c9543b53bc7e9a3462cce2dcc8030a63c22d6831675","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/tensorpack.t27"}]},{"id":"ae78ffaeec23f0c29f7aece98aa361e30ae30e923624aba2aad40b23b4a9ef7f","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/blindspots.t27"}]},{"id":"ae8b1eae29f25b3803d69a1e650c5349fa7ed9e8bea6503be1bc6cfda1220f44","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/merge_sort.t27"}]},{"id":"af060b6e5cdb2ffe1de0a47995b2c621139367174cf85237d8217aa929af10f7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/mac_tb.t27"}]},{"id":"af90831f6b558a67512c2ee354cc44cfffe5e338ee85eb9996ae8bfda4b44a24","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/api.http-server.t27"}]},{"id":"b03d87fec868d2aa28f16a77d0dc77dd068c98b1443f9a2408896c72d4a3c227","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/bpsk.t27"}]},{"id":"b0439804871b40fdec6d6bd98dfe3f658e7a091e0f7d378d5d9b78999a5335de","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/trie.t27"}]},{"id":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_protocol_stack.t27"}]},{"id":"b051b3ca6f807af462602eb5f0474773b4ccbca27de39134b302713ad3575999","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/typechecker.t27"}]},{"id":"b0bd4e7b1ea364fe7be9e73786f868cffd64a04d512b68c1b2775124b3cb81a4","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/execute.t27"}]},{"id":"b12ab087d817d07363484cb0dea375c6002c2d8476162fc5792343663de03229","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/rmsprop.t27"}]},{"id":"b17e79a559a18949041fd3ba3bce6f83b286b6b905fceddc6b1f497d41a8532a","sources":[{"repo":"ghashtag/t27","path":"specs/server/sse.t27"}]},{"id":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-client-workspace.t27"}]},{"id":"b1bf93d0a864129e5c53a03b96cfe5d52069b5b65a7472dcef61a58cd6b87e1f","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-health-check.t27"}]},{"id":"b2fb3c2d66630369c42ae4aba3f80538661c5591de99f1b088c569185be83197","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27"}]},{"id":"b3105d48a28faff92bc02e393c146c4e95cba6c68277eb54f27ec5abc3b77bb4","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/abandoned.t27"}]},{"id":"b33711b2a50bd614b706e77c813e7c31e71cd7f547489bf073c0de59c17de2fb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/vsim.t27"}]},{"id":"b354d78a042da1a057338c5bd4bd2e9426ab6540e4b0b24c959782d3793e1538","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/govern.t27"}]},{"id":"b37a891477e02303d3821493c20d8c3a59d9cc04b5a01f1948396712e31cc289","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_a2a_card.t27"}]},{"id":"b3ad9a90feacac048e38fccd041005f144d9a5c7a2ad52b23ec20b6a163339b0","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/dark_matter.t27"}]},{"id":"b3fd0cb2764d0828d728fce767a042d999c182d5d148dbce8a380db78e01c53b","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/sacred_governance.t27"}]},{"id":"b46496033b9cc8164845ba0b6139ad8429704fea6f66a2dce46dd460ea892fac","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bond.t27"}]},{"id":"b4d0c294b461b507d9a2b078480f486ecf0d1a107c5a2cfc0f0348f71ba13f95","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_02_two_params.t27"}]},{"id":"b4ea36c976d78efe1add7b0ec95018c0f01877755c257dac8482eeb7576f1909","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_gates.t27"}]},{"id":"b4efcdd7ff229ef26b03587176dbb0f75351666de1e6c689597be0322349e3dd","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/set.t27"}]},{"id":"b4f898411bc6cccc09a47732cf878e2c8e66cfba98f2cab064cca6e54895c489","sources":[{"repo":"ghashtag/t27","path":"specs/agents/z.t27"}]},{"id":"b51af6a3f3b8f57dcb826250294e271f635ea4b36294d2d4e8fa957dda1ccb14","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_02_match_arms.t27"}]},{"id":"b5624a30bfde643e521bede2b1319057747d54bffe8b1118ebd8754689b66b6a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/cache_management.t27"}]},{"id":"b5779b849ac30c14dd7849ae7fd9ddad131d47aea14029d6e00b691f9ab6e922","sources":[{"repo":"ghashtag/t27","path":"specs/nn/sacred_attention.t27"}]},{"id":"b59a2bc4b80d44dd510559f38fc195bd72be88a0433938e519020fc5b8e57256","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/lstm_cell.t27"}]},{"id":"b5bd1483d24af17707d8fcf03dbb6f011bc8462773423ebe9b8ee4e506a76a4e","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-signal-health-self.t27"}]},{"id":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/apb_bridge.t27"}]},{"id":"b636530a07cd52d3c26a184307aeaf56846fc9697b40d0bf38391253c6d68b16","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/linker.t27"}]},{"id":"b6ff8c82fb2e360cd1339f1da16d70f08ead54de9d015425f608d1d19101d81e","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_signed_dot4.t27"}]},{"id":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","sources":[{"repo":"ghashtag/t27","path":"specs/depin/prove.t27"}]},{"id":"b70f5629049065477023aa4b4d51eb8272de0750a5c4809d7d445c698729c1a0","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-trinity-test.t27"}]},{"id":"b7538d332141732ec58bda9a10caf10a04d000aef901752fe67a03b1dbd73daa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/radix_sort.t27"}]},{"id":"b7dd2658343c40cb234c9abcafc5e9b9d492a4a0f4649b4c767009477b94b342","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/bot.tri-bot.t27"}]},{"id":"b7f53f9c19f47f997361c3aa223dbc8b59aa62d9af13607a242b85c6e173082b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_analysis_tb.t27"}]},{"id":"b8651d49170f8c475f2f7967332aba84bf88ebdcf0cf8969195774cf4c2f7172","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/parser/lexer.t27"}]},{"id":"b895a11732d8530f2587ef0ab2bfca6e4827cda34939ca3519fe25914b49f0d8","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/pattern_predictor.t27"}]},{"id":"b8c4bb5052b100a6e9fd6fdd7e3c760a73fa72ea05dddbe0c51bb2541dea0dff","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/rabin_karp.t27"}]},{"id":"b8cf25569fa15fece9aa281586f9998c767d802a8275a83ecee58694e774b64e","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/attention_mechanism.t27"}]},{"id":"b8e959ad3ee29deca1899eada363eb7bd86f6e257f6462eb87ed482c1879f4d6","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf16.t27"}]},{"id":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","sources":[{"repo":"ghashtag/t27","path":"specs/config/paths.t27"}]},{"id":"b9670f059a9d7492689f0038ad695bd660ed74ba03ed5719bb6f6855dd5061ee","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/int8.t27"}]},{"id":"b98ddfba7485ee8b15edf9072a02ea6f5449ee50733f2fd03b57e33db6a50294","sources":[{"repo":"ghashtag/t27","path":"specs/storage/migrate.t27"}]},{"id":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","sources":[{"repo":"ghashtag/t27","path":"specs/server/http.t27"}]},{"id":"b99c892c8a0fdcd11528ddd0ca8d52d8646e0c9b1ce420ae16610e8ede3de5c4","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot2.t27"}]},{"id":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/dataset.t27"}]},{"id":"b9be1025b920bfa48dc7a90b04ded9e71f123096b3c03bee0b6afb8837cd64bb","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_lv.t27"}]},{"id":"ba1839b37f4d2f410b20ad046fa80e343d9ff95865c1ed824871f74cb0d5e76f","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_bitwise.t27"}]},{"id":"ba9ef1c2084a71ad72f7b8c536de5669835bf957c4aec2bd54bc6b3496c2184c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/phi_weights.t27"}]},{"id":"baae843a9ba5aa64a51752b5feab3e3cde36a085f31e63f6467d5590e9b64f7a","sources":[{"repo":"ghashtag/t27","path":"specs/enrichment/audio_overview.t27"}]},{"id":"baaff4d44a3595acd0cf596f2f070219c08df87bb2a997092e0b3e4792f06903","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/zig-docs.t27"}]},{"id":"bab39e8fc8641fd2db77b865b5d5be1a34ec958105af238d4972010887805f39","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/cordic_fixed.t27"}]},{"id":"bacc3fad069505febf375adbbfea9a861e4dc884a6c3d98d723bc5cd22365290","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/status.t27"}]},{"id":"badf4b6c05c043017b93d89968ce4139335cac039a4de235b294050e2b916aab","sources":[{"repo":"ghashtag/t27","path":"specs/agents/p.t27"}]},{"id":"bae56d4c3ad6f4f7f7af13f90dbd6ada991a3eb5437cbdd9d88a8e80b457f9c4","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/redundancy_management.t27"}]},{"id":"bb4167b8b988820e63e2e42cc9b3f1eeaea9a9caf00e15d8c3f3e0b5cd9d0cb5","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/merging.t27"}]},{"id":"bc197d64c27828950663c4af278f4f13fb522eddad5c105d1630aad61d997098","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/evidence.t27"}]},{"id":"bc520fb9db99214b0349804b525a1e98f277b8ba699de1664456a00f242c92de","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/direct_message.t27"}]},{"id":"bc72c1f84ebfceb91f91dbc3d4d835a36fb38d8555ea4a2f1af4c1d322eee4d6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/regex.t27"}]},{"id":"bc950d5eb4085dffedcbfd2cb065f927cb6b7386a997fffc1a350516458d87a2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_layer4.t27"}]},{"id":"bcb3b01dcd4debb986099332e1f8d6def66dc7b3d5b6e11f9dce845bb5007fb7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logger.t27"}]},{"id":"bcbab48f544ecdbc72311c4267176a8842744da41535c318b487d214330e56e7","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/vcd_conformance_compare_tb.t27"}]},{"id":"bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/uart_tb.t27"}]},{"id":"bcf4922c76661955200baaf574ae4fda7a915b33ca6fa815fd24217b0cf845b2","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_shift.t27"}]},{"id":"bd04ddfca63bd0aa7d44a891620563e6c6f17481a536dfcd864878312e939083","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/layers.t27"}]},{"id":"bd3bb0d278274a7e547540c4c0fa4c4191c5d1095c32f538aeb7d9eb2cfcacf1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/json.t27"}]},{"id":"bd7accfeb733b5d197590ce3d41ef52a287c5fa9d85aa28dcb9865e975b98715","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_receipt_verify.t27"}]},{"id":"bdca7143ec2e9b3765183834a305585274ff40876b6f767b7fe59f66d2d4ce92","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/search.t27"}]},{"id":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/test_validator.t27"}]},{"id":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","sources":[{"repo":"ghashtag/t27","path":"compiler/runtime/commands.t27"}]},{"id":"bde59485223334094e6b99cef7d442757a07e3eacdc589c493df0cfca9f974c6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_15.t27"}]},{"id":"bde6d67dbe20541b56e501032706f53025dd6ec72b76ca204a86379dc56f0d1f","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/conv2d_layer.t27"}]},{"id":"bdf36dc7912f739dfcb27db3cfdc3c995a721f7f9e42721a6a5cc2c8b027ac8a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_routing.t27"}]},{"id":"be0e54b47c9cef2d0f3338635e692dfc3afe66258a0b9c9fdbb95cce022309d8","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_dot2_rne.t27"}]},{"id":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","sources":[{"repo":"ghashtag/t27","path":"specs/queen/lotus.t27"}]},{"id":"be3ed8d97c7404a17400311d3432bec040d027f0a76ce264a459326204780fd9","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/doctor.t27"}]},{"id":"be6fbe2af8975b11dd3d39819d7729d29e3b4cc25e1c41c400784a31506cd996","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/runner.t27"}]},{"id":"be7945ad86c2a4b2c94566717f0dc16f437b05b220f6644953a993baa955c279","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/convert.b2t.t27"}]},{"id":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","sources":[{"repo":"ghashtag/t27","path":"specs/nn/attention.t27"}]},{"id":"be8b3a944add54031ff82e824411ad3bfcfaed42a8150b3131649cf1d3080a92","sources":[{"repo":"ghashtag/t27","path":"specs/math/radix_economy.t27"}]},{"id":"bec81e5c6c9cb45fa4ff61087262e377d72bb012f6fd72bebacc81805e442c8c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/top_level.t27"}]},{"id":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","sources":[{"repo":"ghashtag/t27","path":"specs/provider/schema.t27"}]},{"id":"bf24ed639a59b626b81991a835211692bd429df670e38b458ca3d57dc650a14b","sources":[{"repo":"ghashtag/t27","path":"test_highlight.t27"}]},{"id":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/vsa_core.t27"}]},{"id":"bf61456c5a0ba1735ba7f0b243547c67f86ded98d23c09fd46bd2e53c1b23b04","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agent_run.t27"}]},{"id":"bf8691644b6ce7ff97f57d7ed21d1326de4bb6b858f20c524621fc02dad09c3d","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_mlp3.t27"}]},{"id":"bfbbc8dbd82391b975ea357722e3f95ffabb551f4ae40985354b4bcd0afac17b","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/autonomous_universe.t27"}]},{"id":"bfcd81ea5f3b3040dccce76d91dd699347e49c2df843529218ee138560e2d924","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L10845.t27"}]},{"id":"bfeb22f04f036c5745781787e8a61f8fe7e2a3c8e9a2c9a27b7f26005c0dd40d","sources":[{"repo":"ghashtag/t27","path":"specs/runtime/process.t27"}]},{"id":"c0881e50f64cafa548394ab698a373f7c74c7626d021eb904e2a8e036bb6a091","sources":[{"repo":"ghashtag/t27","path":"specs/server/vm.t27"}]},{"id":"c0af31c6f037f4308baa2a2d2d49f6f23ff35081aad85385e3a458fae29bae3c","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/rom_layout.t27"}]},{"id":"c0ce3a2b96c5e6a5d744a2c9eb71c76ee4ae5622b2fd335402be68bdbf9b45c1","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf1024.t27"}]},{"id":"c0dbf24327e983c97c167b05ffd70525c35b60d03481d3aee9fec2c7eda45291","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_lut_table.t27"}]},{"id":"c14549c69c9de5701d69e87b5201937a9e667c5b45999d877656e9e42f67bb3f","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/ternary_mac.t27"}]},{"id":"c14ee8b56f8c6b6f08ee63468872a178d8a9c9a4b6079b7723bc52595c019cd1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/shell_sort.t27"}]},{"id":"c157c4a023255a8ea006f50a5bc2b93cd30bf402b959e27ec224e6adfa9cf3b4","sources":[{"repo":"ghashtag/t27","path":"specs/ar/datalog_engine.t27"}]},{"id":"c15e19f5e2a0ee02a6acf9817040877e1001e6d720eed0caec1e6ebd1bb4a124","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/faculty_board.t27"}]},{"id":"c17f4eba133c5caccd5af0eb50c4ba920920ca361f8cb6cdcb8fcd4ac8a1e535","sources":[{"repo":"ghashtag/t27","path":"specs/math/phi_split_optimality.t27"}]},{"id":"c1809956a3761720000c6d726e52f1bf33aff57d8dcfe385b9c9c352cd31ff6e","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/production_deployment.t27"}]},{"id":"c1955126a803192f0a46ca05a2be74f2ca28ddedeba7e8b9355f2ed6baa0eaef","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/encoder_block.t27"}]},{"id":"c208991377d1523087aed04969aac10ad910ef317e8bdb67bf5d290d70a4fff8","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_argmax4.t27"}]},{"id":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","sources":[{"repo":"ghashtag/t27","path":"specs/portable/relay_observer.t27"}]},{"id":"c23121eda036b6ca75c36306d9a466cee8ad8d0a3d9a115f2d65681f98e0a030","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/exit_codes.t27"}]},{"id":"c25dfe91ff969f6ce75fe208bcf6126c6794a0060096503240f80439f0e93306","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/matmul.t27"}]},{"id":"c2cd77bcf1104c6158fcb0dc37e0533f063bf3836fedcbe3174681beae8f460b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/residual_connection.t27"}]},{"id":"c312440fa1cbe93d90bf3b0832ccdc6a5dfa3204cf85efe31118ff2ce8af31e1","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf12.t27"}]},{"id":"c33b4c112c9d6be992c7b95b97eeace83436c676b1dc2483d00c1c378f58786f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/heap_sort.t27"}]},{"id":"c3d44f746a9e911188536a2893fa316140abe6719407c5a179eca112db3f2575","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf64.t27"}]},{"id":"c3d50f765c9a9c0003446e9d2fa3df72d86d3c75c599c10498df31dfed1768f6","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/bench.suite.t27"}]},{"id":"c3f1a5e9f48b01aa84ce078c83e6bc960b823a7d620227a319cfb5407511145f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_bitnet_neuron.t27"}]},{"id":"c445d665e9324ddc28cfe524eb8be1570b8f5d83bc24aac13be278142cabbc53","sources":[{"repo":"ghashtag/t27","path":"specs/brain/phi_timing.t27"}]},{"id":"c4524d253aa50af4b4f7a25d528df1a74f902d4229b0103aa6544a6f79e6274c","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-model-v2-start.t27"}]},{"id":"c4d32975e53fc1cf71a345333d73454c185b745057a215af3113981eedc68517","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/emit.t27"}]},{"id":"c561ad5d10d55ee6659a9dc143f47c9f5b7846edd50d10f645d1bc4ec747354b","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft4.t27"}]},{"id":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/opcodes.t27"}]},{"id":"c59d180a0c7866d5115f7d72ba3cf3f88e566c42936937fafba4eec89ab39820","sources":[{"repo":"ghashtag/t27","path":"specs/functions/render-avatar-video-run.t27"}]},{"id":"c5a5f4d86e39a33fe2eee3119242a951a9e942f8d2d1e8eddeda8f6ff0b0e9e4","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/research.unreferenced-sources.t27"}]},{"id":"c5cf6004cce2295f921b7d983e252a9aafbd92ad662db2d5b595824c2774b7a4","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-review-code.t27"}]},{"id":"c5f2218c27d16037026e392844aee9dff023506272d7eb2ecae5c323be2994de","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/tri-ssot.t27"}]},{"id":"c638af50d443971716097050d0da73d8afc15857f2253e32afe63b4a49104b36","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/mse_loss.t27"}]},{"id":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","sources":[{"repo":"ghashtag/t27","path":"specs/system/unified-agent-operations.t27"}]},{"id":"c6797af7fa4e4aa737be47674e9ffaa4654b8f10a0cf5d05550cda9f416a3d34","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/key_management.t27"}]},{"id":"c6c888eead59d10c6030023702fa4faf2457e75a595c1dafe65a00f70626f17c","sources":[{"repo":"ghashtag/t27","path":"bootstrap/specs/physics/formula_registry.t27"}]},{"id":"c6ced4902ab6006cfa516bf6fda07bff37615a2feb036924757ae9b4a8c8062f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_07.t27"}]},{"id":"c6cf3e0b7de5d05674b0dcf9c9f2dd1c7efe0a507a99644025f58261c5b15efe","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/leaky_relu_activation.t27"}]},{"id":"c6d3c09ccfa2fca584300a0b55a3214d8a81d9bbac158af66ddcd51b57e85b44","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf256.t27"}]},{"id":"c7060c9858e8bae47391e7e0aaa8443be412c01538edf8fc71cc6893d13b13c4","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/language.t27"}]},{"id":"c7195be79157467c96d65abbf92dcaf4e20bc194e8a800cfcde8571cffecf4a2","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn.t27"}]},{"id":"c71dc9505fcf56e8aea69b4265d736e540fc598db301974f3c88e4f9830ce53c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_parser.t27"}]},{"id":"c72b9a7b5fa9804c513eb5c2ebff0868bbf2a7226347826e64bbd34f6bef6475","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-generate-jobs-L164.t27"}]},{"id":"c763650c8fdc2e77ad17d147463a2a41f6073827281085c720bbe33671c396a9","sources":[{"repo":"ghashtag/t27","path":"specs/neural/forward_pass.t27"}]},{"id":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/eval.t27"}]},{"id":"c7c0ed2774bd499f6142c9bd856ebe4a9cc955e78b570488e8b6bb86355df3c9","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/trust_manager.t27"}]},{"id":"c7ef9d8bbd94234b21eee3db2b9362560dca822c835de65d94f8e0d618dda68e","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/examples.zig.t27"}]},{"id":"c800d8ce1a5f38e34d3755a0edbe898492fb8d83e571a18581b595c49fb8b5d8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/btree.t27"}]},{"id":"c80b8ab5b11f24ad28662bb270943bd751672ed1e88781490009febf34661613","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_06.t27"}]},{"id":"c8115f6da7558dca37c56c947e233412f3a5aa54ef92ad407d953e0fe975b470","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/interval.t27"}]},{"id":"c84ebb22ae462190ddcd757725c3f409ebda3fab38bcbedad2845649cdc0345c","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/text.t27"}]},{"id":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","sources":[{"repo":"ghashtag/t27","path":"specs/i18n/agents-ru.t27"}]},{"id":"c8aeb8ca8c5ab34e88f39bd5a2268344bd3ca24cb1d9822de72e3792b30d7c4e","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dense5_decoder.t27"}]},{"id":"c8cd980319751e2b53501dc645f1beb6980bdbf77adbb98a158a12be441d957e","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-brain-ci.t27"}]},{"id":"c8fee4965aa004df807bb758bc2ebd70f4653e9dc08133b40951b990d2e9a0e0","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0013_kf.t27"}]},{"id":"c927b0667f745cc79958e4879fc6771b0f7ec6e435621dd50acf13916b52e52a","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf96.t27"}]},{"id":"c9417445533676df65424ac0b373d1c1c21d3f92542dfbd77e61a06a0a2f60d1","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/csv.t27"}]},{"id":"c9c294acdc2a491ad74598e51c3b2137b1b51b970d326765ce489445e76df2a8","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/hmac.t27"}]},{"id":"c9eba84a22f53fe0464afac2d8594e6b966eda17b0701cc2c5354ec27c1fb325","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf16.t27"}]},{"id":"c9f60c228cb3f4b1b2a6fc6e000f87b1e293557106cdf0f003b5d163c5efa5b2","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/stdlib_tb.t27"}]},{"id":"ca7f9a9edce47fe23ef59515d87ba7f391b878a9c5115b43e9c32b4a70fe90db","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-taskCache-L27.t27"}]},{"id":"ca80b7e37c5cbf63fb0726ef19a8b4455afb4928f06e6aac7abd01cc33c5ddfa","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf256.t27"}]},{"id":"caac41c686cce6b5e3fc60c3bec59b9fe1ccc0a0ecc52c9714690252f341f8de","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/string.t27"}]},{"id":"caad8e2f8c34c6e2997f965a89fd47734a06d34db58476b2e29a4471d708995a","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bitnet_neuron.t27"}]},{"id":"cad3992fa6893a5467a5e01b6a63be0fa42916e661d32aa8a25412c627835b7c","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/integration_tb.t27"}]},{"id":"cb49b07596285a3e9e101081b9ea8ad957e64af73d97a302d256b9a8c6825e26","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/lite_crypto.t27"}]},{"id":"cb96cdbd3ab876ea67ef98809723365d52c34bec5e892b804928d5ec6f2da545","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/rsa.t27"}]},{"id":"cbbd63036b371154deb8f49d58ca101528aa025a599c98e41fce34b9a8716a1b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_account.t27"}]},{"id":"cbfd2873f554c095d05df0bb83f393180d0db2d42c0065413a85d02d8880fed9","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_04_constrained_param.t27"}]},{"id":"cc345d688cf070481d769909bfc967b9b1216cd5e84ebc133c4aa3e9c2619dbc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/random.t27"}]},{"id":"cc3f084808aee4f852beafa9ea3e401fb89d34fa2b134aa79ca6b75f82be5cbb","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_neuron_full.t27"}]},{"id":"cc5426dfba21dcb6c38e978fd04c01a0ca38b62b942032668531508d454f5aeb","sources":[{"repo":"ghashtag/t27","path":"specs/agents/w.t27"}]},{"id":"cc58564de6f9390d852f7801bf6ddebb79b456483eb718e1ddd97ae1e44cf23d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/ring_buffer.t27"}]},{"id":"cc71041e45db26a32c01005cba8f5ba4f96e12701c851c63a7db3b15e17fe4bb","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf1024.t27"}]},{"id":"cc7a1b61f3b8550010956f71b0881712679bed4f2fccf05ce2a534ca95bca2a8","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/codecs.t27"}]},{"id":"cc960e5ccb68352c21b7479e7f775cc698d4a8fec103c05683cc962e5107b86a","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/jones_polynomial.t27"}]},{"id":"cd00efe30f02866b622344a58fd1bc8f5904edbbb0d457d2081ee87ad273a94d","sources":[{"repo":"ghashtag/t27","path":"specs/memory/formula_embed.t27"}]},{"id":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/ride_game.t27"}]},{"id":"cd2e83756f6d11ed08e29c26a1c145b8384e56b7b3dd9c2e39e815b739c7190a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/fpga.t27"}]},{"id":"cdd0a129629d3b6a0c492870d957d71610146f461af40f73df7c1a128fd285cc","sources":[{"repo":"ghashtag/t27","path":"specs/test_framework/graph_drift_detection.t27"}]},{"id":"ce0352d36e43b44480a79b3333031e61f637feda0bd474b8af6b239364a030cb","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/reputation.t27"}]},{"id":"ce309b67731ce9d775e2e45f9d1f42933b64900f6c93adc89cc2b7c57a2be4d0","sources":[{"repo":"ghashtag/t27","path":"specs/storage/kv.t27"}]},{"id":"ce88e96540e925752640868cee20c7e9ad63d0044bae71b0a3ab175474ca2df8","sources":[{"repo":"ghashtag/t27","path":"specs/sync/index.t27"}]},{"id":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/hardware_validation.t27"}]},{"id":"cee035ba2a228181599daefcf0c04af10b7f6b3326c6312cc97aa68c19f470fc","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow_executor.t27"}]},{"id":"ceeade29b5422ff8ecbad180c425515d7a8962cebb7683aef5b35643c0ddc312","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/research.programs.t27"}]},{"id":"cefaf01b690a9fbfdeb7fb404da33a48eedd555c2db0663c0ff864c315dc8786","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0014_inline_lambda.t27"}]},{"id":"cf0624fa9de5ec6a03f5d2829b93d023c6524b90baa6f9083f0851d40f2d6666","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/traffic_animator.t27"}]},{"id":"cf665b400e73091057d195296506e68e8c16acff3adc70a1756b58cd88e30afc","sources":[{"repo":"ghashtag/t27","path":"compiler/parser/lexer.t27"}]},{"id":"cf712b02e8c309ee589ce2061041207b64173c510b0d02308e48f07eb5e50d51","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/locus_coeruleus_backoff.t27"}]},{"id":"cf9e908b16b5a03e57bf788258e8b607f47d0342fa51d2f31ba7fed62efd6efc","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/pkg.vendored-cache.t27"}]},{"id":"d062a67d5cea57f6533fdc506780b589c98ff079f673b59676d7062dc3ae2b56","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/rtl.t27"}]},{"id":"d12076291cf317c67b13cd9a7cd04ac990b6995fa9eeec9828773e28cb36c437","sources":[{"repo":"ghashtag/t27","path":"specs/sacred/monopoles.t27"}]},{"id":"d129104cd484eaa9482e8ca20cdb733fd83cfe83a07368d3a4087274147aa40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/flow_control.t27"}]},{"id":"d14b698293100dd48dcbc0741dc4ad592c0a499b34d827515586e70551ff6747","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/tanh_activation.t27"}]},{"id":"d16bedfa83646e9e9df60e17c51928fabe4240cb5ca15ac682369f4dcc9fd9a6","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_mul_rne.t27"}]},{"id":"d1a693acd15cae25043e02fbfee7b30b09e309447e18c625574272912603eece","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/search.vsa-index.t27"}]},{"id":"d1a87c87ff24072492c3d539a72af402b46a4acda477954b2485311592d7ddc1","sources":[{"repo":"ghashtag/t27","path":"specs/file/watcher.t27"}]},{"id":"d1c8b70e3fe2176c599433da14052d4628bed850866bb109b217723af830ca5f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/pellis_verify.t27"}]},{"id":"d1e777e5373b04036adfce628b82dc8efaff46903dd4587e49a15d111370918a","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/power_monitoring.t27"}]},{"id":"d1ec57e9fc1d1f50680012edca90823294ee13b46b68107489a01ad873ea891e","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/help.t27"}]},{"id":"d1edecf60e69b3fee790d64e74207ceb739ff8d54ec60c205e267397a20ee6c4","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf128.t27"}]},{"id":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/network_orchestrator.t27"}]},{"id":"d228015ce607198f53341b0b9dfc55a2cd0616e69487598d0cbabc34cc6892cf","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-skill-detector.t27"}]},{"id":"d24e42682ea2720f08b7576f1a05a78a0387763d83c8e8392cf7d2f2b8555f48","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/math/constants.t27"}]},{"id":"d254d150341c77b095823eba91f69d97a7a47761df5a8ed60f80f56c9bea5323","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/module_state.t27"}]},{"id":"d25b2bace31a0ef0eb0cc61430287b55ef21001ff6b391c784042399f6e5fb61","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/enums.t27"}]},{"id":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/etx.t27"}]},{"id":"d2e4055108ee38da5e3e5cf5c999c6381ebd57c1d6c1ee7ada868b15cccb77d4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/bilstm.t27"}]},{"id":"d3462e16b085abcac92fe0307513800bd1e11907889cdf65484c5ac103c12c97","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/native.node-gui.t27"}]},{"id":"d349676390480743109fe238f507d2d7df3d2acfc16b7b24c4c18079e9f77f95","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf8.t27"}]},{"id":"d38927db9b1e68fbaab5f384d68c1430cc6d5a1478121dc25cff128ffd1d7a22","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/spi.t27"}]},{"id":"d3be190095b4141b094dd75baaf76f725478eb18f8709f08fa600055ab3d782f","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/alphabet.t27"}]},{"id":"d3c98ac5e5aeec6beab3441ee587c77acebe467ab7773fdd7bd06e51dbf48106","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_graph.t27"}]},{"id":"d3d025ff58ac24fbd354bb342999ac38fa79db08c17e2a6e38419fd85389f928","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/verilog/fpga_emission.t27"}]},{"id":"d418841c0c8387724f6ebc2e4ee6526e56395e8d980402d72bfef753a0319d78","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/lucas_exact_verification.t27"}]},{"id":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","sources":[{"repo":"ghashtag/t27","path":"specs/demos/hello_world.t27"}]},{"id":"d42e1ac02e6c07db9accf712b9f83035a8257e7c5c15d691a2da4bdcccc3faf6","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/lru.t27"}]},{"id":"d470286a2fffe65a4db790f6a3e2f869df079c8b225669a283becb0236677386","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/spiral.t27"}]},{"id":"d4817878315bd3e467d343340725ccbe4d73d8863c6541f5ffec4e5c69a653a1","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/health_monitoring.t27"}]},{"id":"d492aa25a1e06b4ced6c44067db4ae48e4cfa14f2939dea8c45cfc838f38c6b6","sources":[{"repo":"ghashtag/t27","path":"compiler/skill/registry.t27"}]},{"id":"d4947ee53db0368360cef453355ee9b159ca0ba130941231ff774a5e55c0ebfe","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_ilv.t27"}]},{"id":"d4dd51951de90ffcd73b57099bbd0bd0e8c21655538753684c0455e296f9c5c0","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf512.t27"}]},{"id":"d4fff09b1c7e86fca582abd18362a0dafd271e3e11b8bbdbe13f257d8e71a17d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/segment_tree.t27"}]},{"id":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","sources":[{"repo":"ghashtag/t27","path":"specs/storage/schema.t27"}]},{"id":"d59450c1d1f357b44340e8a90413e3685bd34a7c02bcc60dd5efdaa5d44f2fc3","sources":[{"repo":"ghashtag/t27","path":"specs/account/schema.t27"}]},{"id":"d596ee91ec23d39cb905e0ddc7dffc504c532952a2fb0fe7ed64438db707779c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/needle-search.t27"}]},{"id":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp_protocol.t27"}]},{"id":"d5d906f34640716defff3c0b92ac5c953e5d67885c14242db2bdccfd8e6f78d1","sources":[{"repo":"ghashtag/t27","path":"specs/pins/parser.t27"}]},{"id":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/mesh_protocol_stack.t27"}]},{"id":"d649c30b959f4c59c65b2c99b91aed9d8d4469b11889a347dc77f875550cbe4c","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/hybrid_arithmetic.t27"}]},{"id":"d67d46cada717f8c91861d127ff6037bd17f72b367713a71c41fa0c81eb29b16","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/apb_bridge_tb.t27"}]},{"id":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/eda.t27"}]},{"id":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","sources":[{"repo":"ghashtag/t27","path":"specs/automation/crm-lead-magnet.t27"}]},{"id":"d6cfadd5f9822b72f668e6bc15734c3939b9350e60c68212e5666ae882e443c0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/bitmap.t27"}]},{"id":"d6e3126051f418b8d58ea7b6c5eb552c80f0102041dc075b9863c6a7c6de8bf1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/rti_alert.t27"}]},{"id":"d71a2dd240cabe9e1e5d667259d245209ec4532632c30328971e84ec4cbc4bd6","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-codegen.t27"}]},{"id":"d7607eb8c81bb51425dd1458f75f780fe4cbfc009e7c353654b76d25391369f2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/b_tree.t27"}]},{"id":"d78bef53542ec408f004c9a1e1650cd9fd125ef0e7da3d4172f5ed9a203961af","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/census.t27"}]},{"id":"d7912780dd02240a27684c2a0ef9f950d41cdc8554d1d97d94ceaa5018a85b81","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_runnability_sweep.t27"}]},{"id":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/publication.t27"}]},{"id":"d8bd6eba31a437f911eec4ea0d056b1cd4a3b34039e40e207aa2aaa852e11f21","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/lamb.t27"}]},{"id":"d8ca3cf6feb27648ea781750913aaef0f7c8288be4a6b1d3f8ed1e514db17fa4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/igla_champion_capsule.t27"}]},{"id":"d8d03fabaa03bb05776ae7a1227e97cffb8a249d64b083402d956231d6e8111e","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/formats.t27"}]},{"id":"d92298db00480f503b1a24ad2dc21f2528fe7c97a45f49b1626129d4e46f35b0","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft16.t27"}]},{"id":"d97fe1d5605b55bc9b5fd3f8d9c653c5207579585eb7b6cadd1320d381958df5","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_sadd.t27"}]},{"id":"d9954ca190ee3e748ef8df7ce32bd183096f7f97003651aede1ccabe5c1b0e19","sources":[{"repo":"ghashtag/t27","path":"specs/pins/emitter_xdc.t27"}]},{"id":"d9a11936cb2b61bb017f40dff4ba7dabe7db35d9d9dc578559cecc763a3286bc","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/specs/memory/types.t27"}]},{"id":"d9f354f8b828fc2f29503d7e928ea5771635ddec31997a8b9196a1cae79c1eca","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/queen.lib.t27"}]},{"id":"da236765e018e3599eb952aa2e8a298e423c627751cb0cadb11b25e3908198f0","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/tensorpack_json.t27"}]},{"id":"da52721df06869c7108c634943a99ad067d397259d030de9781f7073ee0479a3","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0012_p2_coltie_module_const.t27"}]},{"id":"da771c66524714c3a8c48aa095e71a5928cfa1cc82f2f819664493e042e9a698","sources":[{"repo":"ghashtag/t27","path":"specs/math/e8_lie_algebra.t27"}]},{"id":"da83784231ce7b0004279a51913a711527f55d8b2150da9a39fb39b307fab17f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/maybe.t27"}]},{"id":"da84a1caec404bba08f5a4ce128fc4a35ff9793e75e8e5a73e9e94fc345bdb41","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/int4.t27"}]},{"id":"da861a10b1506958453665225648c17b428b023cf806648497c8ce58a4107405","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_forged_brace_negative.t27"}]},{"id":"da869f75b0e66b078c82ff9989a637e2e81426f78d2ede00b74df9da126c18b5","sources":[{"repo":"ghashtag/t27","path":"specs/igla/evaluation/multi_lang_harness.t27"}]},{"id":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","sources":[{"repo":"ghashtag/t27","path":"specs/jit/jit.t27"}]},{"id":"da9a438d7ac840510ba33d81294d8eb8c882e20c4dde2473703670ef40bb37ce","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/07_tests_invariants_benches.t27"}]},{"id":"dae2f7625dc11f9fd8d878151c24c36e508397e0782405156da0b0bf634a7731","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/workflow.t27"}]},{"id":"dafb04ea0b264953cdf3c82481e879cd47979b9b7627ac00a042e640ce9b998d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_pool.t27"}]},{"id":"db1da1f335f5455e94952bcbc2187cf3ae0aa0a68de09914b5105b69d18cb939","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/ppo_actor.t27"}]},{"id":"db4d7a7e1787579f9b9894309188ac030a830066da5ed24b098910001788ea93","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/tnf4.t27"}]},{"id":"dbc09d850d87e9623513a9eedf77764f4b84cb299f4175c068eee278a0748a71","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/red.t27"}]},{"id":"dbe34d0f56eb0ab7e4a0c00749aabc36acff541ac4c2bcdf39ba2aedd7ead55c","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_tree.t27"}]},{"id":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/olsr_routing.t27"}]},{"id":"dc4e3d6c76cac57a36074da8a9d6aac8df1f1c55bb68a593c2cadf94c94351b1","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-video-task-store-L156.t27"}]},{"id":"dc5b054f79d747598c75190379fe4a36400bb27af13dffe06d438f145c1af96f","sources":[{"repo":"ghashtag/t27","path":"specs/memory/notebooklm.t27"}]},{"id":"dc65b2b2fb15618f4aa569ebdb5b4359b65729054139f1f16df16f2acfaf1e87","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/compression_engine.t27"}]},{"id":"dc6abda2d082a9007b050ad51b10ae119790ceecbe26b23107a08d024bf0ea29","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/huber_loss.t27"}]},{"id":"dc791cba69c3ed6cf8357de50ee20f87589220ed8c2a7052b3964853fedae1e6","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorbp2.t27"}]},{"id":"dcaf41b89d5e0514681050df25be2054621764eb18a008d3e0d18d3dbbe99f86","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage_negative/neg_03_multiline_array.t27"}]},{"id":"dcb396f87eac603c6dcffe3d1f9b2f3e876747db0ca17f4d784326d77ee5ecaa","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/base32.t27"}]},{"id":"dcb5de4bdcaaac334bf386d0ee8c2badc68a3debababb033eb4a6df16ff6d6ad","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_control_flow.t27"}]},{"id":"dd1cf7b176823cedbc2f6d6549e0455812b5c44a52213cd758a969549762ff89","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/dft_tb.t27"}]},{"id":"dd4d3fb85955d4bb7423cf637941c02736855369320dd840082a8aed792302eb","sources":[{"repo":"ghashtag/t27","path":"specs/docs/chapters/tooling.t27"}]},{"id":"dd87dea212ee6b002f1beb0da611d8599e23f4c3ea31a1460404131532feac0c","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/catalog.world-scan.t27"}]},{"id":"ddade525fb5f57aa035780cb877afcc013077bbdf07f5ff155541fbaeb1f2176","sources":[{"repo":"ghashtag/t27","path":"specs/isa/tri27_bytecode.t27"}]},{"id":"ddb3121f389799300e03255cf947acad86a88631afd3d93807a0519c498a1996","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/functions.t27"}]},{"id":"ddc85831a627462ba15d3ffa3a037d32cecca2135e254541c38c90c26d06f309","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/generator_reproducibility.t27"}]},{"id":"de1a2c2dc3c88cca15f9061934c76389aa8f2de17a78a61a65eca5bd25aed69c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/integration_tests.t27"}]},{"id":"de48a64950df41b2344a8bed9ad969eb6776456406b9c68c469cba8c13b3ac7e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/particles.t27"}]},{"id":"de4ad2f0f5e79b5fee41fb1eb38ddfb621d640a46ac70d52f551376072b13445","sources":[{"repo":"ghashtag/t27","path":"specs/lsp/client.t27"}]},{"id":"de753fa421b4280246abdc40b8201a89945982050f86029f11c736f77664c2a1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/mesh_call_signaling.t27"}]},{"id":"de8489f65be8b1db66b2c9bf3abe96643c580d39e4b856cd6a9a3511e404975d","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/gates.t27"}]},{"id":"deb1ec9d99f16c1182bdc602e9a74db3a5c82f58f125c502e7a9c50a15820cd6","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/training.targets.t27"}]},{"id":"dec9b077038cb5c9d026a86b55e7cc667cd45217eb1aa208b6da83b866fdee22","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/phi_gain_freedom.t27"}]},{"id":"dedc154ce53debd9561ed0ed931d0c6c394dca5034b8149e179283ae8755a30b","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0006_array_then_when.t27"}]},{"id":"dee238e993a4877edf244c9e22dcc8550f964af916beb5e098a9b7fd90b318b4","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/scalars.t27"}]},{"id":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/purkinje_thermal_gate.t27"}]},{"id":"dee8a1c4e2ac49ff01ec4228a43bdcb4364d4e68fa2d1d439b27c2d5bac584a7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/mod_structure.t27"}]},{"id":"defe6bece570cfb3cdccfccefea6488172e7612f3860597b38f54c4302e0b7e7","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gf10.t27"}]},{"id":"df15f1fbd549cad6bc01b0599d4765ea3d8be69eb2759ef112ca8c94c101168d","sources":[{"repo":"ghashtag/t27","path":"specs/pipeline/experience_save.t27"}]},{"id":"df5f505af61f2555053be8255c4d426f10841ca71758e129e82500c9f64bff6b","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/top_tb.t27"}]},{"id":"df74b541158c71d5463152e377813a5491def4207dbffe97f6fd78b23cf6d4d9","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/corpus_wide_pack_audit.t27"}]},{"id":"e03bddbb9708c94b3c44f5a3b2aef4ac440d53c9328c75ae8b6c37fb9a21959f","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/omega.t27"}]},{"id":"e03e0b8b71566e3cce95146ec4825f3421b844c504f10a8ca0e755db14540e53","sources":[{"repo":"ghashtag/t27","path":"specs/functions/analytics-skills-detect.t27"}]},{"id":"e090c900774d21e520cd15746d7d2a06e1de22889cfe40677f68c9673e667622","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/src/tri27/cache_w/tiny_lfu.t27"}]},{"id":"e0932fe334d920e6591445980b99b8b9bebb845756394199bd209c13e13d0d15","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/seals.t27"}]},{"id":"e0af68eb26c5b4f8f5ac5e45aa859a28337cce715e90122020fed881b81a9afd","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/railway-mcp-server.t27"}]},{"id":"e0c9d0e21f7bbd9253fd5acdae3f3581ccc2cb38aa284315a98a2397e3ec1543","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/lib.trinity.t27"}]},{"id":"e0d6c374bc0ec25395ed127af2cd8abdbc6fc6594b32e8fb7e4213e4b61d49e7","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/pipeline.t27"}]},{"id":"e0db74fb04b07ce67ea824027d57b1d9da9853c9b36b609ef8cf54593b7d934d","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/phi_accumulator_growth.t27"}]},{"id":"e10b135ee52869e88202985777760978ff69db3d302a82983380223400632ac2","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorbp.t27"}]},{"id":"e111bef882601ff39e589072facac4a3d4501cf3f8f3c0edbb089981db7379c4","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/ecc.t27"}]},{"id":"e12a4af3d20a17e48d35990420825c9ff5a1eee091b74ff1565d775f5ae63887","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/logging.t27"}]},{"id":"e13491c6f9a89c309ce349dca7883a7eac0186b19b00d8d09b3dc0016d7bfadb","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/layout_b_audit.t27"}]},{"id":"e1355c4ae9276302788b24e68f1229d728b8b23b52f3422a96f55d68ab6e0b62","sources":[{"repo":"ghashtag/t27","path":"specs/account/auth.t27"}]},{"id":"e151864300830e0cdde07121285099fdc47c1de925ec4a5e78bba71a29e6a94a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/now.t27"}]},{"id":"e15cfa4a2739a1dfa550ab6dedfcf0a694d3629eab167bc9fb66faa289c1a109","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bigint.t27"}]},{"id":"e19d8ea1e55f5aa053da1b308ad88c43271c6d08e90e44908fff2b4be069fa2e","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/goldenfloat_family.t27"}]},{"id":"e1c387ee2e54fabfdcb363337c56c608d48108946f4b089c91a232e9fa8d0f76","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/https_enforce.t27"}]},{"id":"e1ee4634ec3f0bb75b6c2f870fda5b9ba40f1c1329ad5ed38ce03a9351065791","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/elab.t27"}]},{"id":"e1f019d331a24657f7d0d560011f931c93b4f067f7203e27850c7d26b36d098e","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_hash.t27"}]},{"id":"e23ef09c0f4e88517e32c8c48d183468cb808d9676f2311a4a229e0f43895505","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/spec_exit.t27"}]},{"id":"e2741ac40df961f84a58755c1c468f12b911d0a7361d164fd2c2f77adce806dc","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/clock_domain_tb.t27"}]},{"id":"e2987f7b0551651563d7d0730f8feaf2f319a6aa968fa44831048b3ccbcd9615","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_pattern_matching.t27"}]},{"id":"e2bff492844bb71720dc0caa8615e6025c5bcbf68978e17da5e89ef661adb563","sources":[{"repo":"ghashtag/t27","path":"specs/tools/mcp/needle.t27"}]},{"id":"e2dff6a23bc9bc46d15d01692cc8c0901ce6ecc2fb33e9f74dcd218bd7b77c14","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/ternary_xor.t27"}]},{"id":"e334d5dc5fc0c176e420a131ea712b9f8d2e1c03b56a36388a683081b5defda3","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-agent-queue-drain.t27"}]},{"id":"e33d06c87bbdb7128b94c03795ef3a4832b59758ca66412cd89fde649e7db5e0","sources":[{"repo":"ghashtag/t27","path":"specs/ml/layers/batchnorm_layer.t27"}]},{"id":"e3997228a0ea792965b7825f7b685c27f972c5140c8d2a5ce3f434e27a9de5bf","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/stoch_round.t27"}]},{"id":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sources":[{"repo":"ghashtag/t27","path":"vscode-trinity-swe/test_highlight.t27"}]},{"id":"e3de31efd8a6ccd03a55b730897b5ed9b3d2e3ee895285fd3e28f80da22ad0f3","sources":[{"repo":"ghashtag/t27","path":"specs/sandbox/health.t27"}]},{"id":"e3ef97f50d00b6a4e0f08c6953189982fd732104300083a1074d60b810f77ff7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/congestion_control.t27"}]},{"id":"e4121be453ae25e97dbcd44309f0fa321cb084f3c5054ee0466d635efd01c263","sources":[{"repo":"ghashtag/t27","path":"specs/demos/jones_topology_filter.t27"}]},{"id":"e438aac097dc857bb00ca5a05c750c5e10f014135ec409e71aa87c877cfccb25","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/tuple_type.t27"}]},{"id":"e46541429008eef0e3a73d4b33d40d438a556712791e282630da97bddbb20d19","sources":[{"repo":"ghashtag/t27","path":"specs/server/api.t27"}]},{"id":"e47089fd4638da45cfbde2769fecd228d72029dcbebbc7b25ee3699437c7bb99","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0014_comprehension_suffix.t27"}]},{"id":"e56f7e6a77a0696efa9ed42e43b81534cd2dcff1b7cdaea7123418ce427f244c","sources":[{"repo":"ghashtag/t27","path":"specs/ml/loss/contrastive_loss.t27"}]},{"id":"e58c713814db7a42b22fa996d3aee2815af783080bf6b98db6fbafad489330f4","sources":[{"repo":"ghashtag/t27","path":"specs/igla/w535_bounded_while_module.t27"}]},{"id":"e5c7e9e73e7de630088d6362ce58d83c55e9b5dfe87d23614b038a7f32668be6","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf20.t27"}]},{"id":"e63fa9e43303eefdf53f1f95499c15bb7794c7f08c9d14c1958f61e362e75ada","sources":[{"repo":"ghashtag/t27","path":"specs/skills/trinity-ux-wave.t27"}]},{"id":"e66aacd669a1bba304a235f5db230e9704385e4471ca44391855c9812652d3b0","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0008_semicolonless_const_pair.t27"}]},{"id":"e67d13adcf989dad50feda8d7c5a53a0fa8f96486804feb26b22a582ebb7582d","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/either.t27"}]},{"id":"e6a661528e1d16a9925f6be471b7ec1199cdcff536a7cb361324efb88855984f","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/resource_scheduler.t27"}]},{"id":"e713662a43888a4304da49a3fa56934423615caec6edf983e2260fbb0123de3b","sources":[{"repo":"ghashtag/t27","path":"specs/ml/optimizer/sgd_momentum.t27"}]},{"id":"e72f0bd25f3350a928a1972d0070a96b9e73b6b13d9d6e080353286c1309458a","sources":[{"repo":"ghashtag/t27","path":"specs/ml/recurrent/gru_cell.t27"}]},{"id":"e734823e61b4a42e32f1d35dd8da6ec17a9c3877be615ad1ef3af903409beb2c","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/null_pe.t27"}]},{"id":"e78e6abf68de0ce2b1f2810e02555111fcccd78a5e27765d7d54c0440936dfa2","sources":[{"repo":"ghashtag/t27","path":"specs/functions/training-stuck-check.t27"}]},{"id":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","sources":[{"repo":"ghashtag/t27","path":"specs/isa/tri27_machine.t27"}]},{"id":"e7b50b366482d2b8d45d2ac34d8c26df07c1834693fb3cce83c043be0509d75c","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/issues.t27"}]},{"id":"e7c67bd3e21e08abaad6a0e0b9319ca20f446c2352227a11c5969567ec12f0c0","sources":[{"repo":"ghashtag/tt-trinity-corona","path":"tt-trinity-corona/specs/corona/protocol.t27"}]},{"id":"e7e63c130082fb051a3de6136a00aa9de7368c70a8ec4c64aaebd1f79afdebb5","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/terminator/eof_generic.t27"}]},{"id":"e80558ed3a7a773aa1171a8233e13517664f4241081525b100898bc468946920","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/specs.vibee-corpus.t27"}]},{"id":"e805c111cc8f7dcdf826ad23f9ba35bc8d9426a9341cb6d084ad86a5b5afaaac","sources":[{"repo":"ghashtag/t27","path":"specs/physics/zamolodchikov_4d_conjecture.t27"}]},{"id":"e811defd32754534cd816aee83855abcaef5d5d6e3bef26227d36aa0b17d6bce","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/stream_view.t27"}]},{"id":"e8775999f06bfb718b8b7d5404691396f6e4d0cbb7692259bea21a167ad6d329","sources":[{"repo":"ghashtag/t27","path":"specs/tutorial/01_values_and_types.t27"}]},{"id":"e8c1e6bd3959a82da6b75507b3e3b3b539338e8123a6e665eed5e2195746119d","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/pos_04_no_pub.t27"}]},{"id":"e8f81b78f31a4dc79b00a5bdccb14e4a8fb5ce58ba88a1a5c821c0d13ee3f542","sources":[{"repo":"ghashtag/t27","path":"specs/base/seed.t27"}]},{"id":"e900a1f93f9d85ab1c55a4492f61134eee0720787e2cc59a88890e6120a7ee87","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_add_rne.t27"}]},{"id":"e964a96fbb9b1e988399586c9729ebf85c0274580ac0968871a5ea3576a2f3e5","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_bitnet.t27"}]},{"id":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/topology_visualizer.t27"}]},{"id":"e9b76a6307da8010148eccb359fed5cfa1757cf3d28368fab4a3b0765fd3fec0","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/counting_sort.t27"}]},{"id":"e9f0534647b2ff6479e0a03577eeb01d1c529f0973f585eb5c134ae4f819d29a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/bio.t27"}]},{"id":"ea80f658671db1395e5eb340107ce4e26b66f355f96eb8e3f39ee0146169fb36","sources":[{"repo":"ghashtag/t27","path":"specs/tri/sort/selection_sort.t27"}]},{"id":"eabb5fbd560deceb47ad6ae9f8bc4f70a2b91e2504e8026ba09387963560b9f2","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/compiler_matrix.t27"}]},{"id":"eaee2545844cfe66509afedf95424ca76e2d3717a8bced297abc0121b3ea6a8a","sources":[{"repo":"ghashtag/t27","path":"specs/agents/h.t27"}]},{"id":"eb15c59465bc42b003a394b15261ba2da9101faba2459665e7ad9b3a8ca51f6a","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/wallet.t27"}]},{"id":"eb6583207d52e56d6374411554d285ed3423bfbd918de232b7c6e95d70a08217","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/structs.t27"}]},{"id":"eb6c433fe01f1e6b9fd3a83a79c6575f3e1431b8cccfd78ac6d8db6d0e699eea","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/msgpack.t27"}]},{"id":"eb7d96285206407ce71e8db80252ecfac68c600e7e516fdc4a247284f30d6ae6","sources":[{"repo":"ghashtag/t27","path":"examples/fpga/qmtech_minimal/design.t27"}]},{"id":"eb822f04be9609854529eba06b82a4466dbaab6d4967b2784b110f2935033d2e","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/generic_const/neg_07_no_rhs.t27"}]},{"id":"eb850a68fc9ad4fd3031a1b25f81409fb81d07252387a3beec05a2da63119d05","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/bigint.t27"}]},{"id":"eca06ff812c61e2693f706b7389c71dcd769c30dfbb2cfb958e0416a5118b404","sources":[{"repo":"ghashtag/t27","path":"specs/ar/asp_solver.t27"}]},{"id":"ecd9513d1a791cad8f297eb7f3a7367650a9d8fd94dfb055812bcbfd350566aa","sources":[{"repo":"ghashtag/t27","path":"specs/isa/registers.t27"}]},{"id":"ed4df738f5defa8dc460667b55d0ebe4f498e6544d647f301ae97636b016d885","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/bnf512.t27"}]},{"id":"edfcba5ea00f6343f2fe06825c3f234fe3d804390667bce089fe85a5e282352e","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/production_deployment.t27"}]},{"id":"ee002f94a63c0a07ea37cd3b1ddcaca3a4ee552a99a18e532d99b16f1ae12ce8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_gft_ladder.t27"}]},{"id":"ee29f50406aeb45be1cfa1ec54701c6abf436b769469bc709b97acb20a94f4b1","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/network_simulator.t27"}]},{"id":"ee2c014c00caceaf27b81474757f674c961bc4930613a8aabf75dad6dbed65ba","sources":[{"repo":"ghashtag/t27","path":"specs/tri/agent/agents.t27"}]},{"id":"ee69c64656a0c092b397d440479f02e24391d40064c64af6b9ae2e4c3dccb979","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/pipeline.t27"}]},{"id":"ee8ecc6ee599567979a46dc51bccd9cd04cf4aca2af157874eb528ad877353e9","sources":[{"repo":"ghashtag/t27","path":"specs/tri/trees/rtree.t27"}]},{"id":"ee9f123c12e3f5dfe8594f1e27977994b654966d8bb8d4d19c464b40116f70f7","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/fpga_edge_argmax.t27"}]},{"id":"eef7ff2a5ea1d0b9a6071f460170f8b0f9091199a6973402056f9af579e08c5c","sources":[{"repo":"ghashtag/t27","path":"specs/igla/training/scale_up.t27"}]},{"id":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","sources":[{"repo":"ghashtag/t27","path":"specs/base/ops.t27"}]},{"id":"ef5a18962d09cd28074c0a9026d69bba4753b3a13eccf49dc10cef73fb5b4266","sources":[{"repo":"ghashtag/t27","path":"specs/isa/ternary_encoding.t27"}]},{"id":"ef97c85a18e66c8236579ad970aa519e61b85deb9c2094b7ae5dad85e7d1a767","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/gematria.t27"}]},{"id":"f03e65c6d1814c4d6237b43d428b1baec0ef499487a25ca6d53e5c0e50d8b9be","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/trinity_matrix/control_flow.t27"}]},{"id":"f046ff4cde6b29a60b3821753eec2dbf66f01bc183ae9906af3ea97c089e6f8b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/ops.railway-cli.t27"}]},{"id":"f055f3e19d5672b8a2a023c30ceb98afe73b1002e00c50a9eed5041cdb51da81","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/llm.igla-chat.t27"}]},{"id":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/subth_clk.t27"}]},{"id":"f066b8924661eee6b40b59b5c310ce94fbbc0a97a243fa1359ff68cfb10ef7be","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench.t27"}]},{"id":"f07180e5dbd5e9cd375c6711c3e58a8250327ade0df9f3ba888d49712fb423df","sources":[{"repo":"ghashtag/t27","path":"specs/ml/rl/dqn_target_network.t27"}]},{"id":"f0763950504737a827af7c1fa561a495c1a963bdce809ed36f94b5dc35160cf6","sources":[{"repo":"ghashtag/t27","path":"specs/server/routes.t27"}]},{"id":"f0843acd6ae7dba69ea6ec147c0c3906d98911afc242457cb4856568be248324","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/skip_list.t27"}]},{"id":"f0bde5c8a46118437ac641eb8b8f07055679070e32525e50e96e7c90a4baa61b","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/systolic_ternary.t27"}]},{"id":"f0d9f7f0c9030d184d281076ea93c44834770ef67ff8dc8aefb004c50c39457b","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/numeric/gf8.t27"}]},{"id":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/bike_catalog.t27"}]},{"id":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/testgen.t27"}]},{"id":"f163bb7559f99839973aafcb36af539b3aac81a71b6c9685f5c6f1f176e941c5","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf64.t27"}]},{"id":"f171ef4667b77ffd1b063e40cbb605ffd48ab2af624d21995b759aaf1b104e6f","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/0007_gherkin_and_roles.t27"}]},{"id":"f1d6d26bfc285aecc914fd4f89104ad5b8bbfa57ad8f1685ccdc065049190478","sources":[{"repo":"ghashtag/t27","path":"specs/vsa/packed_vsa.t27"}]},{"id":"f1ddbe2cdf89439947728b374031dce4b08639db638ef1dcf87bc412a19eb7f1","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_08.t27"}]},{"id":"f1e5eefbb3fdd68c2f4f539e8a221d176d21851a20f6abf159266108b547ac2f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/utils/config.t27"}]},{"id":"f1e9aedeba6e513fe9ed235d0501d552b46aa6c3e0c1cb7271888ce20d8f0c76","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/placement_tb.t27"}]},{"id":"f23f8e3b111bc55516c6e1860493acf41325dd40e6bf1b39842ba6c0dd906fbe","sources":[{"repo":"ghashtag/t27","path":"specs/crons/t27-formal-mutation.t27"}]},{"id":"f2fd554e5cb70cea54f2daf2e3b36699175354595d333585ac56b556a95864c3","sources":[{"repo":"ghashtag/t27","path":"specs/agents/o.t27"}]},{"id":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/integration_framework.t27"}]},{"id":"f37a671427ac064c67a6c1ee374fa595f077684c34fccabaecf4c703a2bba2c4","sources":[{"repo":"ghashtag/trinity","path":"trinity/src/tri27/sha256.t27"}]},{"id":"f3819844f477cf0293deb96d3046a16d9283e7545cadb4f5d24c720be99743db","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/timer.t27"}]},{"id":"f3b97da6289ecc13cd9efc132dc417b23dff4316a835d5f6d86875470f306c34","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/unit_weights_node.t27"}]},{"id":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","sources":[{"repo":"ghashtag/turbobaby-user-bot","path":"turbobaby-user-bot/specs/turbobaby/deposit_tiers.t27"}]},{"id":"f3c12d757eeb1ad37aacee0baa3c81e2bfe4905d0e799e3f778cae267324f043","sources":[{"repo":"ghashtag/t27","path":"specs/catalog/discovery.t27"}]},{"id":"f3e2f69d250bc5f198040de0d901df1edade830041ee144ebc454e908e53225d","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/resource_scheduler.t27"}]},{"id":"f3f7e8aeaa42c4806ba532fac6cdf1403e16f5463a7a11a2b157c53c7bb7387c","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/olsr_routing.t27"}]},{"id":"f46c60b0ba669110f8cf4a169987c7c2e794b317bd6889f0e90e40cfcb158632","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/stream_ternary_mac.t27"}]},{"id":"f4af371b0df3ae05342622d0c81cffe240b65253814ef5198657ba6635168290","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/routing_etx.t27"}]},{"id":"f4b1478122c02d2e4c50a5bb589e03e97212875c368fad659824f5f532e824d8","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/reseal.t27"}]},{"id":"f4bffd808bc11a137744efdaefe31a7910971b95a5c3ff61630ed5e25612b043","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/redundancy_management.t27"}]},{"id":"f4c734a4a68e2c20c6ff6824ee431d2ea1912898dc36072c2ee1229fbe79a688","sources":[{"repo":"ghashtag/t27","path":"specs/tri/collections/option.t27"}]},{"id":"f4cbc7903cba83f5b77de3ea9da6843b4ad6074a3fc695555573e68537ebdb07","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/specs.tri-corpus.t27"}]},{"id":"f4db9e04ccb4ab2e3a1e501a15c2824109b7827d910ebf70874e5ab1ded9c6cf","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-agent-cron-cleanup.t27"}]},{"id":"f4f846d8a160930b2f9915e296533a4739b34449aca9e5c9ce87c8537f5c9382","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/tri_compute_receipt.t27"}]},{"id":"f53faab13959683ff6110da18d8125f6c62af2516383c6b77aab8610a5584ebf","sources":[{"repo":"ghashtag/t27","path":"specs/hslm/forward_pass.t27"}]},{"id":"f5524863149e19d575d49f903c14ecb295da119701247e018d620827307283e2","sources":[{"repo":"ghashtag/t27","path":"specs/tri/search/pattern.t27"}]},{"id":"f573875f99459616a5401e26a0c901796df43b8e1f00b9cf21d1cdcbcecee2f1","sources":[{"repo":"ghashtag/t27","path":"specs/server/router.t27"}]},{"id":"f5ea415afac944ca16f0e1184078a16c0a421cfd90d0cc252f246e6883e52118","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_10.t27"}]},{"id":"f5fdfdf57c4b772c5d9baeae4cc8196dd300a217de71325afbbc83815f64b6a1","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/baseline5_decoder.t27"}]},{"id":"f612413427435d2851861658c17154cb2368b0cf3f6c05bfe06f6263a60c8fbb","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/quarantine_manager.t27"}]},{"id":"f6130cb4fb3292dcf0c8a59031b018b2078fb1add5260b24a1f651af62834312","sources":[{"repo":"ghashtag/t27","path":"specs/ml/transformer/feed_forward_network.t27"}]},{"id":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/bridge.t27"}]},{"id":"f6500ab3e4a78e54e2e83ed1aa6eb389ec0da64ebb735841849c788efc0e1a44","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/quantifiers.t27"}]},{"id":"f6ed2a2767f278a65e8a4f3ec6d3b07c4d2e3a152af7a99b9e5cca5e380fb04b","sources":[{"repo":"ghashtag/trios","path":"trios/.trinity/specs/parameter-golf/phi_init.t27"}]},{"id":"f6faf793a7547b31fda5fa9a40da0698c7b8f1100425bb474dd73b6d69ec127b","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/mcp.needle-mcp.t27"}]},{"id":"f7282891ba2e65b3c20afb9350d3ce1e1fb31227d4ad06d0fe7b867e16be63fb","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/formal_tb.t27"}]},{"id":"f8199eaa1c9707bff5ba89d553a644725b072fce2f7c4c5de7dfe4b6e9620ac1","sources":[{"repo":"ghashtag/t27","path":"specs/crons/trinity-pages-health-check.t27"}]},{"id":"f823bbea9d121e61a27e9c8d899004d2f3712876eab334ed3982a62908fd8ab2","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/one-away.t27"}]},{"id":"f86d77af65dfb35cc4adf4202c8f06577e82d7856edbcac656ef735eeba19a52","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-render-server-L919.t27"}]},{"id":"f93bfbf9b9f7fb215faed70ad4a01a4fa9d8e00ef5daed464c8a949d2a56b0d8","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/packet_loss_injection.t27"}]},{"id":"f93e784cc220b280b07cf1b25f8d0db0987d0783c6038794722332bd7741dc45","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf20.t27"}]},{"id":"f9808d318e75aa5ea4ea3e5b3bf33f0a667aab6a00c7c5aa91f2cc77e3e846bd","sources":[{"repo":"ghashtag/t27","path":"specs/tools/tri/orphaned.t27"}]},{"id":"f9b41127b3546ba9fbf057a603b081d9b3bb4eab7ee46b23f5e8c804dfd801d8","sources":[{"repo":"ghashtag/t27","path":"specs/agents/q.t27"}]},{"id":"f9e8a7e5eaeeb97556ce3ac9de353452c0fbdec01210e6a68170c0af0496907f","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_softmax_grad4.t27"}]},{"id":"f9f0164dee0c7fe1ce07cabf8eaf51af9474fc2c64e1469c04741a5c2872b770","sources":[{"repo":"ghashtag/t27","path":"specs/physics/su2_chern_simons.t27"}]},{"id":"f9fa2056b186e23ed82410422f87a164d198a5d89ff00738b77659b99da9399e","sources":[{"repo":"ghashtag/t27","path":"specs/tools/trinity/tri/identity.t27"}]},{"id":"f9fc0ccb3e186d62b12db1631ec90b5961a32490d90e53e45e42f76652436f9b","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/multipath_router.t27"}]},{"id":"fa02d9864b6cc48cfe1c2ba92bd8d43cf3e93a33b23bcfd646866bb8ccd328e0","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/bootrom_tb.t27"}]},{"id":"fa0b2c4b6213ae1664e5ede0f7277e5a92b077a8291ea69af9abda53a6346b7f","sources":[{"repo":"ghashtag/t27","path":"specs/ar/explainability.t27"}]},{"id":"fa4ac57d63c578bb36c3dfefb3ffd8037292c0fa83026fb3c194615f8e78a808","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/goldring/expr_probe.t27"}]},{"id":"fa7339fbc62c69d3c8cf93dbfff307d4ff68314f0365d2466bd1fc9016b2ffcc","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/fbb_active_path.t27"}]},{"id":"fa80a821d2bc2bd1d613703f065df2390d978f2eff470ac93979841c0c9eb5b6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_05.t27"}]},{"id":"fa898a9e9a4092010e182f03399fe01d286f94926819801fd42ba0c1ed2a089f","sources":[{"repo":"ghashtag/t27","path":"specs/tri/encoding/markup.t27"}]},{"id":"faa036d013136104c32830264768cb1d0342781e3066fabc393f358ed4b4ee3a","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/posit_ladder_control.t27"}]},{"id":"faa113fb557328b585439853b8b733b86f97d5df63e7824fe040d2aab10ad6c4","sources":[{"repo":"ghashtag/t27","path":"specs/ml/activation/silu_swish_vbt_activation.t27"}]},{"id":"fab0efc9b80a37a8be8d288f95c9e1067c8c8bbcc70cc2af2f5d2f67a6f528f6","sources":[{"repo":"ghashtag/t27","path":"specs/functions/render-riddle-run.t27"}]},{"id":"fabd8140a84d1f783f506fcd28fb82534af36d1f73f9d25d19c27b1bb167a7bc","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/auto_config.t27"}]},{"id":"fac5a3ca87e6e847281bc017a8cb45a92fc1c3819d34e9822947eb635147d2f6","sources":[{"repo":"ghashtag/t27","path":"bootstrap/tests/fixtures/damage/damage_class_01.t27"}]},{"id":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","sources":[{"repo":"ghashtag/t27","path":"compiler/codegen/zig/codegen.t27"}]},{"id":"fb3c41eaf46f08d7fe6f5403a39fd0bfac635513f191898ff20ec67f2fdf76a7","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/constants.t27"}]},{"id":"fb4321801a722b535d3a689a94f5ecf60894cf5f448d3e33e6447866619e541b","sources":[{"repo":"ghashtag/t27","path":"specs/agents/n.t27"}]},{"id":"fb78ae12983cc5b08cc552910a1088eec6c5b078c40053f127f75b516b3a0c8d","sources":[{"repo":"ghashtag/t27","path":"specs/compiler/stdlib.t27"}]},{"id":"fb7ac4208772624a36f6651fd54d4c1347a96bad3b78093ee5c248f42f389a2a","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/compiler/codegen/verilog/codegen.t27"}]},{"id":"fb82b6e4149b8be9916c35694faaeca85b555a6e3044cd3bc35f4d836ce60e49","sources":[{"repo":"ghashtag/t27","path":"specs/crons/999-multibots-telegraf-check-stuck-trainings.t27"}]},{"id":"fb85674138b3970b457f59c3efab52d413511259fa82b02de7ce2406d1d15588","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/bezier.t27"}]},{"id":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","sources":[{"repo":"ghashtag/t27","path":"specs/config/schema.t27"}]},{"id":"fbc99bc261c348711aaa19ffb14812698eed8b47ae7e3d64a3922fb7d418ec95","sources":[{"repo":"ghashtag/t27","path":"specs/igla/race/formal.t27"}]},{"id":"fbcf95d6a288082c34c0ddcde52511345bfc089a8c49af43803ed0b64155b033","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/catalog.spec-mirror.t27"}]},{"id":"fc14c912253e6b52a302909533c7da0fd963384e66b03eda50a3ca9ca7c68659","sources":[{"repo":"ghashtag/t27","path":"specs/tri/pipeline/codegen.t27"}]},{"id":"fc6550b88f43e488b6920e33f140cb90350cae7b7e8b7d557b6aaa2ba8f642ba","sources":[{"repo":"ghashtag/t27","path":"specs/tri/crypto/reed_solomon.t27"}]},{"id":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/link_quality_monitor.t27"}]},{"id":"fcce2147f2fced23acc8d32364023ead496c229862f1f03ae9f5fc6c7c384aeb","sources":[{"repo":"ghashtag/t27","path":"specs/agents/v.t27"}]},{"id":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/flow_control.t27"}]},{"id":"fcef546e7cfd5cb87d6c60d728b36bcd18bd889f48fe62678f23cfe99745dfeb","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl/dot_stream.t27"}]},{"id":"fd103db5e8f85819d411f1d6215d94681742d58e2c32e8dcea50d4180bf6d638","sources":[{"repo":"ghashtag/t27","path":"specs/tri/math/statistics.t27"}]},{"id":"fd622012c98c063b5302508590829a22d10013618c70523d1c385b0f6c848c25","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft8.t27"}]},{"id":"fdd88e4f5e3cfd9cd416509597c4b3581fec1de922622c24bf8e6b700a5a41c5","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/registry.commands.t27"}]},{"id":"fddafe59d660b9882a3f080877679430b0a60bfbc931d105ec0cce8f9f233402","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/bandwidth_allocator.t27"}]},{"id":"fdea4af949276c03185144ef699465fa3c71c59ec505bc0f1f10fe064a0d9e15","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/intrinsic_invariant_sweep.t27"}]},{"id":"fe018bcff0a85b6d153955f2ede41bc00a06579c2d3a942d9e33659812cfa59b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/fault_detection.t27"}]},{"id":"fe0dd93dce72f6dd9eb5c505c14b2d99b06211a005574a31cb8642b32e3ca070","sources":[{"repo":"dmitrii-f-t27/trinity-memory","path":"dmitrii-f-t27/trinity-memory/t27/rtl_driver.t27"}]},{"id":"fe149804c3b532069ac353681dea878cc30f032de18c74cd77fb24bfb79c0423","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/testbench/power_tb.t27"}]},{"id":"fe5cd36d3e031ae951e11290b42e4fa89ca8e1f8cc0599da1b4518bab9285c6a","sources":[{"repo":"ghashtag/t27","path":"specs/memory/tmem/edge_demo.t27"}]},{"id":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/multipath_router.t27"}]},{"id":"fe6ff2cc8fb17534f6cbd181a4af31750729533339cbf99889aff1a06bd09151","sources":[{"repo":"ghashtag/t27","path":"specs/physics/sacred_verification.t27"}]},{"id":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/link_quality_monitor.t27"}]},{"id":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","sources":[{"repo":"ghashtag/t27","path":"specs/cloud/railway_deploy.t27"}]},{"id":"feb86eeefa90d0d29d448f031ca0ecebc52235f088d0697ef4cd0920d126ef60","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/web.queen-web.t27"}]},{"id":"febf87624d67aa679c451ceba324033bcca3e9bd351a150bdd57a3e38e79122f","sources":[{"repo":"ghashtag/t27","path":"specs/fpga/crossopt.t27"}]},{"id":"fef84759ef56f8c9704b710d79fc3724cc415e9369a80779b22a5925890d36de","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/specs/numeric/gf16_plus_quire_audit.t27"}]},{"id":"feff526f6af3301b2c9d004f6e14ffadc2c85005d8a6f772c5080f67cb638d05","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/ops.deploy-infra.t27"}]},{"id":"ff009c88a09951bbf00924db019cdeb026e4af1ba6e546107d8739ba30917177","sources":[{"repo":"ghashtag/t27","path":"specs/ternary/gft_xorpercep3.t27"}]},{"id":"ff099338607fd6efd41263de62aa369a6652700173b110a5517c7132647046d3","sources":[{"repo":"ghashtag/trios","path":"trios/apps/trios-macos/rings/RUST-13/trios-mesh/specs/failure_predictor.t27"}]},{"id":"ff3d757f5e91373910923758a5bc7a8f26fde4d157e3d3aee120210996c45f0c","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/sparse_mask.t27"}]},{"id":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","sources":[{"repo":"ghashtag/tt-trinity-euler","path":"tt-trinity-euler/specs/fpga/gf16_to_posit16.t27"}]},{"id":"ff49a27495a6de1e3fa7c6a16ed855385c7f772a67591d593199659d5387f814","sources":[{"repo":"ghashtag/t27","path":"specs/igla/coder/weights.t27"}]},{"id":"ff5ee808fd21fd6db87cf1bce2c5c3972ae090bf6b9a10da44df62d28cf9065f","sources":[{"repo":"ghashtag/t27","path":"specs/numeric/gft512.t27"}]},{"id":"ffc4e8e43b996a4c45da34f15db97f6bccf53cdc945a83d78176b11c700837d0","sources":[{"repo":"ghashtag/trinity-fpga","path":"trinity-fpga/t27/specs/numeric/gf32.t27"}]},{"id":"ffd65a9544a8d1bbfaa1a92b670c9e73137add7ef85524adf4ca692df16d5831","sources":[{"repo":"ghashtag/t27","path":"specs/trinity/capabilities/agent.daemons.t27"}]},{"id":"fff90a06b1a2f41b4f5ef9eaa152a25186627c10f8fa89d56d5e4174fa53d2d7","sources":[{"repo":"ghashtag/tri-net","path":"tri-net/specs/fault_detection.t27"}]}],"opportunities":[{"specId":"c79668668fd5c4248c5be928bfb4965bf3ae44158fbfc3c56d89f396d573172d","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3569","ghashtag/t27#3443","ghashtag/t27#3386","ghashtag/t27#3333","ghashtag/t27#3331","ghashtag/t27#3140","ghashtag/t27#3041","ghashtag/t27#2987","ghashtag/t27#2964","ghashtag/t27#2853","ghashtag/t27#2824","ghashtag/t27#2822","ghashtag/t27#2714","ghashtag/t27#2678","ghashtag/t27#2673","ghashtag/t27#2597","ghashtag/t27#2587","ghashtag/t27#2542","ghashtag/t27#2525","ghashtag/t27#2433","ghashtag/t27#2413","ghashtag/t27#2411","ghashtag/t27#2410","ghashtag/t27#2404","ghashtag/t27#2386","ghashtag/t27#2348","ghashtag/t27#2325","ghashtag/t27#2319","ghashtag/t27#2292","ghashtag/t27#2266","ghashtag/t27#2241","ghashtag/t27#2238","ghashtag/t27#2150","ghashtag/t27#2147","ghashtag/t27#2143","ghashtag/t27#2125","ghashtag/t27#2100","ghashtag/t27#2086","ghashtag/t27#2080","ghashtag/t27#2070","ghashtag/t27#2060","ghashtag/t27#2059","ghashtag/t27#2056","ghashtag/t27#2053","ghashtag/t27#2051","ghashtag/t27#2047","ghashtag/t27#2046","ghashtag/t27#2045","ghashtag/t27#2041","ghashtag/t27#2040","ghashtag/t27#2039","ghashtag/t27#2038","ghashtag/t27#2037","ghashtag/t27#2036","ghashtag/t27#2031","ghashtag/t27#2029","ghashtag/t27#2025","ghashtag/t27#2019","ghashtag/t27#2018","ghashtag/t27#2017","ghashtag/t27#2014","ghashtag/t27#1997","ghashtag/t27#1996","ghashtag/t27#1993","ghashtag/t27#1990","ghashtag/t27#1980","ghashtag/t27#1979","ghashtag/t27#1976","ghashtag/t27#1974","ghashtag/t27#1972","ghashtag/t27#1970","ghashtag/t27#1965","ghashtag/t27#1962","ghashtag/t27#1956","ghashtag/t27#1954","ghashtag/t27#1951","ghashtag/t27#1948","ghashtag/t27#1848","ghashtag/t27#1845","ghashtag/t27#1843","ghashtag/t27#1773","ghashtag/t27#1726","ghashtag/t27#1458","ghashtag/t27#1448","ghashtag/t27#1447","ghashtag/t27#1446","ghashtag/t27#1442","ghashtag/t27#1433","ghashtag/t27#1420","ghashtag/t27#1282","ghashtag/t27#1270","ghashtag/t27#1265","ghashtag/t27#1264","ghashtag/t27#1263","ghashtag/t27#1262","ghashtag/t27#1261","ghashtag/t27#1260","ghashtag/t27#1259","ghashtag/t27#1258","ghashtag/t27#1257","ghashtag/t27#1256","ghashtag/t27#1253","ghashtag/t27#1252","ghashtag/t27#1251","ghashtag/t27#1249","ghashtag/t27#1246","ghashtag/t27#1242","ghashtag/t27#1241","ghashtag/t27#1240","ghashtag/t27#1239","ghashtag/t27#1041","ghashtag/t27#1040","ghashtag/t27#1039","ghashtag/t27#1038","ghashtag/t27#1037","ghashtag/tri-net#381","ghashtag/tri-net#101","ghashtag/tri-net#84","ghashtag/tri-net#17","ghashtag/tri-net#14","ghashtag/tri-net#11","ghashtag/tri-net#2","ghashtag/trinity-fpga#770","ghashtag/trinity-fpga#730","ghashtag/trinity-fpga#428","ghashtag/trinity-fpga#234","ghashtag/trinity-fpga#177","ghashtag/trinity-fpga#14","ghashtag/trios#1562","ghashtag/turbobaby-user-bot#32","ghashtag/turbobaby-user-bot#3"]},{"specId":"1b204a1ef4013b32da4d2c0053a89ef417770d751fb61d89e391517e4fff9974","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3587","ghashtag/t27#3518","ghashtag/t27#3517","ghashtag/t27#3516","ghashtag/t27#3513","ghashtag/t27#3337","ghashtag/t27#3038","ghashtag/t27#2830","ghashtag/t27#2807","ghashtag/t27#2577","ghashtag/t27#2564","ghashtag/t27#2136","ghashtag/t27#1956","ghashtag/t27#1954","ghashtag/tri-net#62","ghashtag/trinity-fpga#664","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"c651cf9d005389700d842b34482edeecbaebb57efa4da487543e1e1068112b25","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3337","ghashtag/t27#3169","ghashtag/t27#2754","ghashtag/t27#2729","ghashtag/t27#2685","ghashtag/t27#2622","ghashtag/t27#2607","ghashtag/t27#2433","ghashtag/t27#2376","ghashtag/t27#2165","ghashtag/t27#2155","ghashtag/t27#1984","ghashtag/tri-net#17","ghashtag/trinity-fpga#730","ghashtag/trinity-fpga#206","ghashtag/trinity-fpga#199","ghashtag/trinity-fpga#19","ghashtag/trios#1279","ghashtag/turbobaby-user-bot#32"]},{"specId":"3bc0b4f043a561e151081570bb5035fa4e54b3a62b061619056f8a13ecdcb1d8","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#3569","ghashtag/t27#3137","ghashtag/t27#3035","ghashtag/t27#2977","ghashtag/t27#2964","ghashtag/t27#2853","ghashtag/t27#2843","ghashtag/t27#2822","ghashtag/t27#2714","ghashtag/t27#2288","ghashtag/t27#2104","ghashtag/t27#2087","ghashtag/t27#2079","ghashtag/t27#2048","ghashtag/t27#2017","ghashtag/t27#2009","ghashtag/t27#1981","ghashtag/t27#1979","ghashtag/t27#1974","ghashtag/t27#1962","ghashtag/t27#1447","ghashtag/t27#1420","ghashtag/t27#1282","ghashtag/t27#1270","ghashtag/t27#1265","ghashtag/t27#1264","ghashtag/t27#1263","ghashtag/t27#1262","ghashtag/t27#1261","ghashtag/t27#1260","ghashtag/t27#1259","ghashtag/t27#1257","ghashtag/t27#1256","ghashtag/t27#1253","ghashtag/t27#1252","ghashtag/t27#1251","ghashtag/t27#1249","ghashtag/t27#1242","ghashtag/t27#1241","ghashtag/t27#1240","ghashtag/t27#1239","ghashtag/t27#1040","ghashtag/t27#1039","ghashtag/t27#1038","ghashtag/t27#1037","ghashtag/tri-net#76","ghashtag/tri-net#17","ghashtag/trinity-fpga#658","ghashtag/trinity-fpga#428","ghashtag/trinity-fpga#199","ghashtag/trinity-fpga#19","ghashtag/trinity-fpga#14","ghashtag/trios#1562","ghashtag/trios#1496","ghashtag/trios#380","ghashtag/tt-trinity-gamma#94","ghashtag/tt-trinity-gamma#92","ghashtag/tt-trinity-gamma#81"]},{"specId":"d8b478122f998a009fdffc8d1da6356dc4f7035a71425357c9947608ca0a5985","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3572","ghashtag/t27#3368","ghashtag/t27#3337","ghashtag/t27#3276","ghashtag/t27#3272","ghashtag/t27#3225","ghashtag/t27#3169","ghashtag/t27#2992","ghashtag/t27#2919","ghashtag/t27#2676","ghashtag/t27#2673","ghashtag/t27#2660","ghashtag/t27#2658","ghashtag/t27#2576","ghashtag/t27#2527","ghashtag/t27#2483","ghashtag/t27#2404","ghashtag/t27#2386","ghashtag/t27#2370","ghashtag/t27#2306","ghashtag/t27#2144","ghashtag/t27#2105","ghashtag/t27#2094","ghashtag/t27#2093","ghashtag/t27#2089","ghashtag/t27#2084","ghashtag/t27#2072","ghashtag/t27#2068","ghashtag/t27#2058","ghashtag/t27#2056","ghashtag/t27#2051","ghashtag/t27#2045","ghashtag/t27#2043","ghashtag/t27#2033","ghashtag/t27#2018","ghashtag/t27#1981","ghashtag/t27#1970","ghashtag/t27#1965","ghashtag/t27#1447","ghashtag/tri-net#2","ghashtag/trinity#1000","ghashtag/trinity-fpga#702","ghashtag/trinity-fpga#425","ghashtag/trinity-fpga#61","ghashtag/turbobaby-user-bot#37","ghashtag/turbobaby-user-bot#26"]},{"specId":"b1b27e9dfb1a345e102c102108727935b5d08aa56426f3575c81c30d439f4abf","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3624","ghashtag/t27#3237","ghashtag/t27#2994","ghashtag/t27#2686","ghashtag/t27#2587","ghashtag/t27#2580","ghashtag/t27#2131","ghashtag/t27#2114","ghashtag/t27#2111","ghashtag/t27#2025","ghashtag/t27#2023","ghashtag/tri-net#14","ghashtag/tri-net#12","ghashtag/trinity-fpga#33","ghashtag/trios#1540","ghashtag/trios#1329","ghashtag/turbobaby-user-bot#37"]},{"specId":"01353d9b489c0adbf88cda433d9b37fa974ab73977195601a6dea9feec74d740","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/t27#3473","ghashtag/t27#2694","ghashtag/t27#2559","ghashtag/t27#2410","ghashtag/t27#2104","ghashtag/t27#2100","ghashtag/t27#2099","ghashtag/t27#1265","ghashtag/t27#1264","ghashtag/t27#1257","ghashtag/t27#1246","ghashtag/t27#1239","ghashtag/t27#1041","ghashtag/t27#1040","ghashtag/t27#1039","ghashtag/t27#1038","ghashtag/t27#1037","ghashtag/trinity-fpga#177","ghashtag/trinity-fpga#79","ghashtag/trios#1531","ghashtag/tt-trinity-corona#1"]},{"specId":"1ca3627819c04ae68dcf83c371cee22a8717d7eb5e2cc0203d3f8d8e32c72425","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3587","ghashtag/t27#3518","ghashtag/t27#3517","ghashtag/t27#3516","ghashtag/t27#3513","ghashtag/t27#3337","ghashtag/t27#3038","ghashtag/t27#2830","ghashtag/t27#2807","ghashtag/t27#2564","ghashtag/t27#1956","ghashtag/t27#1954","ghashtag/tri-net#62","ghashtag/trinity-fpga#664","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"1720ae31aae18a562e7f781848c7b0b66d69b0e4e65596366ebf8f974895031f","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3157","ghashtag/t27#3142","ghashtag/t27#3081","ghashtag/t27#3034","ghashtag/t27#2914","ghashtag/t27#2905","ghashtag/t27#2686","ghashtag/t27#2660","ghashtag/t27#2386","ghashtag/t27#2147","ghashtag/t27#2111","ghashtag/t27#2021","ghashtag/t27#1420","ghashtag/tri-net#383","ghashtag/tri-net#6","ghashtag/trinity#890","ghashtag/trinity-fpga#766","ghashtag/trios#1567"]},{"specId":"57ab2510566143c82c45845ceac568714fde8e57e109939a679da7226c283603","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3248","ghashtag/t27#3172","ghashtag/t27#3134","ghashtag/t27#3034","ghashtag/t27#2961","ghashtag/t27#2800","ghashtag/t27#2767","ghashtag/t27#2729","ghashtag/t27#2641","ghashtag/t27#2253","ghashtag/t27#2160","ghashtag/t27#2118","ghashtag/t27#2051","ghashtag/tri-net#74","ghashtag/trinity-fpga#658","ghashtag/trios#1606","ghashtag/trios#1599","ghashtag/trios#1570","ghashtag/trios#1555","ghashtag/trios#1493","ghashtag/turbobaby-user-bot#17","ghashtag/turbobaby-user-bot#15","ghashtag/turbobaby-user-bot#10","ghashtag/turbobaby-user-bot#5"]},{"specId":"e7972e95bb56cff6bf29950fbea4738b31fe41a6cb19a48d82ba2b265a6762ff","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3035","ghashtag/t27#2905","ghashtag/t27#2860","ghashtag/t27#2847","ghashtag/t27#2826","ghashtag/t27#2778","ghashtag/t27#2677","ghashtag/t27#2675","ghashtag/t27#2613","ghashtag/t27#2549","ghashtag/t27#2352","ghashtag/tri-net#66","ghashtag/trinity-fpga#177","ghashtag/trinity-fpga#61","ghashtag/trios#1336"]},{"specId":"1ec86e7561e1830b7f478ffc835f028522b5297c375296b7674990b182956235","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2800","ghashtag/t27#2668","ghashtag/t27#2603","ghashtag/t27#1928","ghashtag/trinity-fpga#791","ghashtag/trinity-fpga#34","ghashtag/trios#1529","ghashtag/trios#1350","ghashtag/trios#1336","ghashtag/turbobaby-user-bot#37","ghashtag/turbobaby-user-bot#3"]},{"specId":"bddd8c89ee156b399270b7ff155003020a0e6229fdcea4c0f5d1126d0671803c","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3585","ghashtag/t27#3542","ghashtag/t27#3541","ghashtag/t27#3540","ghashtag/t27#3539","ghashtag/t27#3537","ghashtag/t27#3535","ghashtag/t27#3532","ghashtag/t27#3529","ghashtag/t27#3528","ghashtag/t27#3527","ghashtag/t27#3526","ghashtag/t27#3523","ghashtag/t27#3513","ghashtag/t27#3512","ghashtag/t27#3443","ghashtag/t27#3366","ghashtag/t27#3171","ghashtag/t27#3141","ghashtag/t27#3006","ghashtag/t27#2860","ghashtag/t27#2851","ghashtag/t27#2767","ghashtag/t27#2764","ghashtag/t27#2754","ghashtag/t27#2681","ghashtag/t27#2672","ghashtag/t27#2639","ghashtag/t27#2477","ghashtag/t27#2476","ghashtag/t27#2354","ghashtag/t27#2325","ghashtag/t27#1961","ghashtag/t27#1948","ghashtag/t27#1259","ghashtag/t27#1258","ghashtag/tri-net#101","ghashtag/trinity#616","ghashtag/trinity-fpga#791","ghashtag/trinity-fpga#767","ghashtag/trinity-fpga#765"]},{"specId":"6b7f2cbc1dcad4907338cb340fa8ae63b3d9c0e55243dd0fd6cda4a7c36c3f3c","repos":["ghashtag/t27","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3585","ghashtag/t27#3576","ghashtag/t27#3542","ghashtag/t27#3541","ghashtag/t27#3540","ghashtag/t27#3539","ghashtag/t27#3537","ghashtag/t27#3535","ghashtag/t27#3533","ghashtag/t27#3532","ghashtag/t27#3528","ghashtag/t27#3527","ghashtag/t27#3526","ghashtag/t27#3523","ghashtag/t27#3522","ghashtag/t27#3521","ghashtag/t27#3520","ghashtag/t27#3519","ghashtag/t27#3516","ghashtag/t27#3514","ghashtag/t27#3513","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#3507","ghashtag/t27#3171","ghashtag/t27#3141","ghashtag/t27#3006","ghashtag/t27#2860","ghashtag/t27#2684","ghashtag/t27#2673","ghashtag/t27#2639","ghashtag/t27#2575","ghashtag/t27#2558","ghashtag/t27#2404","ghashtag/t27#2354","ghashtag/trinity#616","ghashtag/trinity-fpga#791","ghashtag/trios#1583","ghashtag/turbobaby-user-bot#32"]},{"specId":"83cfb3b98f1e924dd17c01280857a659330cfee574d96091145ebeaf46cc3576","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2536","ghashtag/t27#2526","ghashtag/t27#1260","ghashtag/t27#1259","ghashtag/t27#1257","ghashtag/t27#1256","ghashtag/t27#1253","ghashtag/t27#1252","ghashtag/t27#1251","ghashtag/t27#1249","ghashtag/t27#1246","ghashtag/tri-net#4","ghashtag/tri-net#3","ghashtag/trinity#588","ghashtag/trinity-fpga#440","ghashtag/turbobaby-user-bot#15"]},{"specId":"be1fcb56b7c1f569d9717245eb321e512ba8e19bbf711f386557de51b33fdbf5","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/t27#3571","ghashtag/t27#2830","ghashtag/t27#2043","ghashtag/t27#2021","ghashtag/tri-net#74","ghashtag/trios#1568","ghashtag/trios#1562","ghashtag/trios#1496","ghashtag/trios#1321","ghashtag/tt-trinity-corona#1"]},{"specId":"1d2c8d2ce2773082a7e989f499de40c1dfd323677126d87853a231850ef6e25e","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#2134","ghashtag/tri-net#85","ghashtag/trinity-fpga#36","ghashtag/trinity-fpga#33","ghashtag/trios#1638","ghashtag/trios#1603","ghashtag/trios#1545","ghashtag/trios#1540"]},{"specId":"6336a6b10f16c0b0bf7e47bd4b23f8a84d7cee370e79aea21460274d7e0bf292","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3142","ghashtag/t27#3039","ghashtag/t27#2895","ghashtag/t27#2681","ghashtag/t27#2376","ghashtag/tri-net#101","ghashtag/trinity#616","ghashtag/trinity-fpga#767","ghashtag/trinity-fpga#765","ghashtag/trios#1564"]},{"specId":"711cb8ae46d5857fc7bd9f5ef2ae9df2b13e8d56995d5585d3eb629beeb58535","repos":["ghashtag/t27","ghashtag/trinity","ghashtag/trinity-fpga","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3572","ghashtag/t27#2681","ghashtag/t27#2580","ghashtag/trinity#989","ghashtag/trinity#616","ghashtag/trinity-fpga#791","ghashtag/trinity-fpga#767","ghashtag/trinity-fpga#765","ghashtag/turbobaby-user-bot#27"]},{"specId":"ad23bb061da98f151cca70bbc2e6be16536f23f09d867aac11c2040a2427ac82","repos":["ghashtag/t27","ghashtag/trios","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#1039","ghashtag/t27#1037","ghashtag/trios#1640","ghashtag/tt-trinity-gamma#94","ghashtag/tt-trinity-gamma#92"]},{"specId":"d6bbb9e395eeeee229b781f13a4168c265af5053aa782b937b8e846d5f7205f5","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3236","ghashtag/t27#3191","ghashtag/t27#2051","ghashtag/t27#2015","ghashtag/t27#1288","ghashtag/tri-net#74","ghashtag/trios#1628","ghashtag/turbobaby-user-bot#26","ghashtag/turbobaby-user-bot#15"]},{"specId":"d690f4e6293ffb745638b1a134bfddb550b6a4dd96f358abebb240e8c5190f27","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#2700","ghashtag/trinity-fpga#730","ghashtag/trios#1590","ghashtag/trios#1575","ghashtag/trios#1566","ghashtag/trios#1525","ghashtag/trios#1511"]},{"specId":"08e7686c4ae65f61e24bf0bbf7782f59c073ad1d61b95e69b337c3594f3df904","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3041","ghashtag/t27#2977","ghashtag/t27#2719","ghashtag/tri-net#6","ghashtag/trinity-fpga#702","ghashtag/trinity-fpga#61","ghashtag/trios#1532"]},{"specId":"0c3f0c58eae2a02127519000241783c5721222db35a3774f6bf2c46737774315","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3041","ghashtag/t27#2977","ghashtag/t27#2719","ghashtag/t27#2695","ghashtag/tri-net#6","ghashtag/trinity-fpga#702","ghashtag/trios#1532"]},{"specId":"274f9e788e1919b4004d12ba438d674e98b0c698e2d8416cce5ae4b3ca9d7505","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#2043","ghashtag/t27#1997","ghashtag/tri-net#6","ghashtag/tri-net#1","ghashtag/trinity-fpga#17","ghashtag/tt-trinity-gamma#78","ghashtag/tt-trinity-gamma#74"]},{"specId":"d5a6f45f2e24d63888479df20d7dade3fab3b8b70321edc602b433261e6342f2","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#3569","ghashtag/t27#2804","ghashtag/t27#2681","ghashtag/t27#2673","ghashtag/t27#2606","ghashtag/t27#2597","ghashtag/t27#2584","ghashtag/t27#2576","ghashtag/t27#2569","ghashtag/t27#2354","ghashtag/t27#2133","ghashtag/t27#2131","ghashtag/t27#2094","ghashtag/t27#2058","ghashtag/t27#2018","ghashtag/t27#1984","ghashtag/t27#1272","ghashtag/tri-net#15","ghashtag/trios#1629","ghashtag/trios#1617","ghashtag/trios#1606","ghashtag/trios#1599","ghashtag/trios#1591","ghashtag/trios#1581","ghashtag/trios#1575","ghashtag/trios#1555","ghashtag/trios#1529"]},{"specId":"face91b2c4dda278c97006286cdbd18e00e2a2d01e9288eeb0d6520aa47f7fce","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3542","ghashtag/t27#3541","ghashtag/t27#3540","ghashtag/t27#3537","ghashtag/t27#3533","ghashtag/t27#3529","ghashtag/t27#3527","ghashtag/t27#3526","ghashtag/t27#3523","ghashtag/t27#3521","ghashtag/t27#3520","ghashtag/t27#3519","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#3507","ghashtag/t27#2860","ghashtag/t27#2851","ghashtag/t27#2681","ghashtag/t27#2549","ghashtag/t27#2508","ghashtag/t27#2368","ghashtag/t27#2278","ghashtag/t27#1697","ghashtag/trinity-fpga#767","ghashtag/trinity-fpga#765"]},{"specId":"cd2267d503f2813d32bd75670237a09fe30ed941b98e5012ffb67fa5b3e56b95","repos":["ghashtag/t27","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2527","ghashtag/t27#2173","ghashtag/t27#2160","ghashtag/t27#2131","ghashtag/t27#2048","ghashtag/t27#2019","ghashtag/trios#1556","ghashtag/turbobaby-user-bot#29","ghashtag/turbobaby-user-bot#25","ghashtag/turbobaby-user-bot#23","ghashtag/turbobaby-user-bot#20","ghashtag/turbobaby-user-bot#15","ghashtag/turbobaby-user-bot#14","ghashtag/turbobaby-user-bot#13","ghashtag/turbobaby-user-bot#12","ghashtag/turbobaby-user-bot#11","ghashtag/turbobaby-user-bot#8","ghashtag/turbobaby-user-bot#6","ghashtag/turbobaby-user-bot#1"]},{"specId":"51a4cc5736c024df86bf59a18df1ef49ae5586141fb98dea29888908214732c5","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3188","ghashtag/t27#2895","ghashtag/t27#2853","ghashtag/t27#2654","ghashtag/t27#2325","ghashtag/t27#1987","ghashtag/t27#1948","ghashtag/t27#1726","ghashtag/t27#1282","ghashtag/t27#1265","ghashtag/t27#1264","ghashtag/t27#1263","ghashtag/t27#1262","ghashtag/t27#1261","ghashtag/t27#1041","ghashtag/trinity-fpga#14","ghashtag/trios#1588","ghashtag/trios#1496"]},{"specId":"f132d76e373fa4780e558e3265e743d5b5847cd92f2f90735cde6c648a7af1fe","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3443","ghashtag/t27#3272","ghashtag/t27#3006","ghashtag/t27#2835","ghashtag/t27#2767","ghashtag/t27#2695","ghashtag/t27#2584","ghashtag/t27#2536","ghashtag/t27#2534","ghashtag/t27#2531","ghashtag/t27#2508","ghashtag/t27#2386","ghashtag/t27#1697","ghashtag/t27#1263","ghashtag/t27#1262","ghashtag/trinity-fpga#765"]},{"specId":"7ced47ba19d0e638422a4fb841c25e3abd45b561787e18f3d62f2bcad90321da","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3188","ghashtag/t27#2895","ghashtag/t27#2654","ghashtag/t27#1987","ghashtag/t27#1948","ghashtag/t27#1726","ghashtag/t27#1265","ghashtag/t27#1263","ghashtag/t27#1262","ghashtag/t27#1261","ghashtag/t27#1041","ghashtag/trinity-fpga#14","ghashtag/trios#1588","ghashtag/trios#1496"]},{"specId":"5763bc5d663126370c1e6779f2961d67f63ca685c4ae74a48d3477a79114e3c6","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3371","ghashtag/t27#2576","ghashtag/t27#2021","ghashtag/t27#1272","ghashtag/tri-net#87","ghashtag/tri-net#84","ghashtag/tri-net#82","ghashtag/tri-net#15","ghashtag/trinity-fpga#770","ghashtag/trios#1646","ghashtag/trios#1643","ghashtag/trios#1616","ghashtag/trios#1591","ghashtag/trios#1540"]},{"specId":"8300963eb4317faad525961661a38a190b274dd3cc6956105938cff153ba5fce","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2353","ghashtag/t27#2347","ghashtag/t27#2346","ghashtag/t27#1676","ghashtag/turbobaby-user-bot#27","ghashtag/turbobaby-user-bot#15"]},{"specId":"513e9dd2458729e231321401a59e48a87fa5e6f46121300487781af140926447","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2439","ghashtag/t27#2134","ghashtag/t27#1981","ghashtag/trinity-fpga#770","ghashtag/trios#1606","ghashtag/trios#1599","ghashtag/trios#1583","ghashtag/trios#1581","ghashtag/trios#1555","ghashtag/turbobaby-user-bot#26"]},{"specId":"fe78e70813d0e3d95b70cbf96474baa05dc866c856d2b6cd4ab7036043071364","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3445","ghashtag/t27#2608","ghashtag/t27#2572","ghashtag/t27#2565","ghashtag/t27#2564","ghashtag/turbobaby-user-bot#24"]},{"specId":"f638cf4e192733c30bfbe81b3511a9f9d35b62fd1b0be2504424dbb60a74391b","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2134","ghashtag/t27#1981","ghashtag/trinity-fpga#770","ghashtag/trios#1606","ghashtag/trios#1599","ghashtag/trios#1581","ghashtag/trios#1555","ghashtag/turbobaby-user-bot#26"]},{"specId":"fba55b502378d03a684fbbeb6983d13a6d9bf750b1b176ae50b588c9052ef08d","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3672","ghashtag/t27#3370","ghashtag/t27#2715","ghashtag/t27#2539","ghashtag/trinity-fpga#34","ghashtag/trios#1643","ghashtag/trios#1621"]},{"specId":"004529e85abd9c48919785e32e065358c561574356ddff82ef9bdf5c387fa195","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3518","ghashtag/t27#2635","ghashtag/t27#2131","ghashtag/t27#2101","ghashtag/trinity-fpga#82"]},{"specId":"287d7b2fd22d87c8fc30ce304e557d18868494c9f25807f95501b140e3e61979","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3237","ghashtag/t27#2619","ghashtag/tri-net#383","ghashtag/tri-net#9","ghashtag/trinity-fpga#425"]},{"specId":"690043c09c0fe509c9fd9133917c031e0e18cfa11d362d48c1d7e3bd32406d30","repos":["ghashtag/t27","ghashtag/trinity"],"issueKeys":["ghashtag/t27#3399","ghashtag/t27#3366","ghashtag/t27#2686","ghashtag/t27#2559","ghashtag/trinity#810"]},{"specId":"26a90f2258f9189101875e4b475b529d5c0e2b7aab12e4820b835da3788a594f","repos":["ghashtag/t27","ghashtag/trinity","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2707","ghashtag/t27#2525","ghashtag/t27#2336","ghashtag/trinity#601","ghashtag/turbobaby-user-bot#8"]},{"specId":"b705492899feafbf3edaeec380ca7c5f3fc252230d57b3450f792954d97eeff6","repos":["ghashtag/trinity-fpga","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/trinity-fpga#199","ghashtag/trinity-fpga#48","ghashtag/trinity-fpga#20","ghashtag/tt-trinity-gamma#93"]},{"specId":"3195a264eeb3a9f6a1894ea50f84cd3ce9c91b52e62f169b7518249a90b5df97","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2826","ghashtag/t27#2160","ghashtag/trinity-fpga#177"]},{"specId":"627d342039bf426888d7c3174306784cedb865676f0f1bc3cff43365c6041b8f","repos":["ghashtag/t27","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/t27#3157","ghashtag/t27#1989","ghashtag/tt-trinity-corona#1"]},{"specId":"d1fe69e79677401a7c9eb9e5e3233474d210d680ac76031683cdddd714548ce2","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2043","ghashtag/tri-net#6","ghashtag/tri-net#1","ghashtag/trinity-fpga#17"]},{"specId":"6429747f3e5683b6dd7e9c9e306357120df6a61daa5be6685055ad1665ef9419","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2620","ghashtag/t27#2527","ghashtag/t27#2334","ghashtag/t27#2160","ghashtag/t27#2048","ghashtag/t27#1726","ghashtag/tri-net#5","ghashtag/turbobaby-user-bot#23","ghashtag/turbobaby-user-bot#19","ghashtag/turbobaby-user-bot#11","ghashtag/turbobaby-user-bot#8","ghashtag/turbobaby-user-bot#7","ghashtag/turbobaby-user-bot#6","ghashtag/turbobaby-user-bot#4","ghashtag/turbobaby-user-bot#3","ghashtag/turbobaby-user-bot#1"]},{"specId":"8de13250bacc6dfcbea6f0793bed435605fdbfdcb75e094df82ab0993de0c350","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3512","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#3507","ghashtag/t27#3404","ghashtag/t27#2706","ghashtag/t27#2705","ghashtag/t27#2539","ghashtag/t27#2410","ghashtag/t27#2334","ghashtag/t27#2059","ghashtag/t27#1040","ghashtag/trinity-fpga#81"]},{"specId":"2098c7fa5c6fdc5367e9c72a040c267829070d192b20b5dfcaf887dacbf78834","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3176","ghashtag/t27#3041","ghashtag/t27#2873","ghashtag/t27#2559","ghashtag/t27#2406","ghashtag/t27#2007","ghashtag/t27#1990","ghashtag/t27#1970","ghashtag/turbobaby-user-bot#28","ghashtag/turbobaby-user-bot#23","ghashtag/turbobaby-user-bot#11","ghashtag/turbobaby-user-bot#10"]},{"specId":"75476e50c5c683df50f4513921ddcd0037a07d6f35875a3d2694a3424e604e18","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3041","ghashtag/t27#2707","ghashtag/t27#2404","ghashtag/t27#2288","ghashtag/t27#2025","ghashtag/trinity-fpga#658","ghashtag/turbobaby-user-bot#25","ghashtag/turbobaby-user-bot#23","ghashtag/turbobaby-user-bot#21","ghashtag/turbobaby-user-bot#11","ghashtag/turbobaby-user-bot#7","ghashtag/turbobaby-user-bot#6","ghashtag/turbobaby-user-bot#1"]},{"specId":"b9a67a36ec91ba9f2df7afb43a264d152ae0c5577e29f11371fcb39668aad0d2","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2824","ghashtag/t27#1901","ghashtag/t27#1857","ghashtag/t27#1855","ghashtag/t27#1853","ghashtag/t27#1851","ghashtag/t27#1256","ghashtag/t27#1253","ghashtag/t27#1239","ghashtag/t27#1040","ghashtag/t27#1039","ghashtag/trinity-fpga#80"]},{"specId":"002100f24185da32f8e3ec26202b3f8bd5bcb5ffb6e58b0f29f96a4c572b9ff2","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3333","ghashtag/t27#2846","ghashtag/t27#2800","ghashtag/t27#2787","ghashtag/t27#2155","ghashtag/t27#1215","ghashtag/trinity-fpga#233","ghashtag/trinity-fpga#206"]},{"specId":"2b06972268c0f268ef8a288ec26591fbb0f6c1f6202af9055221d34fee9d9e9d","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2355","ghashtag/t27#2348","ghashtag/t27#2241","ghashtag/trinity-fpga#740","ghashtag/trinity-fpga#702","ghashtag/trinity-fpga#235","ghashtag/trinity-fpga#61"]},{"specId":"365952af756282bd5f43c023843fa2f133348b922dc1dcd6b4db9f85034fbfd4","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3035","ghashtag/t27#2677","ghashtag/t27#2664","ghashtag/t27#2549","ghashtag/t27#2398","ghashtag/t27#2086","ghashtag/trinity-fpga#29","ghashtag/turbobaby-user-bot#32"]},{"specId":"479b47d1d270c8fab4f6622a82d79d5137f3febdfd010b71b1494b5117160721","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2355","ghashtag/t27#2348","ghashtag/t27#2241","ghashtag/trinity-fpga#740","ghashtag/trinity-fpga#702","ghashtag/trinity-fpga#235","ghashtag/trinity-fpga#61"]},{"specId":"59567008d7ac8307e46bcb277b6225b5cfbf5721e0b7084a301ac7f9526b7a65","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3333","ghashtag/t27#2714","ghashtag/t27#2703","ghashtag/t27#2569","ghashtag/t27#2411","ghashtag/t27#1276","ghashtag/tri-net#96"]},{"specId":"5ff83b222f25bcc76c64b469ec36441be9d44750b4dc3e7d8e17a343450a9f8a","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#2288","ghashtag/t27#2015","ghashtag/trinity-fpga#81","ghashtag/trinity-fpga#20","ghashtag/trios#1632","ghashtag/trios#1597","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"91c9235486599fdd18a188c4e191dd6ff7a591a13b01625e766fc70403dd43a4","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#3236","ghashtag/t27#2532","ghashtag/tri-net#85","ghashtag/trios#1606","ghashtag/trios#1599","ghashtag/trios#1531","ghashtag/trios#1493","ghashtag/trios#1329"]},{"specId":"25ecc916082e749bfdc5d1df0e0e0c7a48082630dd2ce02b2525b400045daab5","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3571","ghashtag/t27#2778","ghashtag/t27#2479","ghashtag/t27#2137","ghashtag/t27#2021","ghashtag/trinity-fpga#648"]},{"specId":"2fc414b6270f06b0e2662b9c1170bedbd83bb8603b9dd98a0488a01add55c41d","repos":["ghashtag/t27","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#3245","ghashtag/t27#2869","ghashtag/t27#2364","ghashtag/t27#2147","ghashtag/t27#1697","ghashtag/tt-trinity-gamma#80"]},{"specId":"716d0a1fb27c56c2abdc658969c62ab43446eb52e1fb26b48001c81932868362","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3039","ghashtag/t27#2646","ghashtag/t27#2218","ghashtag/trios#1643","ghashtag/trios#1621"]},{"specId":"bdd06cb8e7ab2f86d5f21a24fcef1c512f5a7ebb6ee990be44db129ab403ed97","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2714","ghashtag/t27#2569","ghashtag/t27#2411","ghashtag/t27#1928","ghashtag/t27#1276","ghashtag/tri-net#96"]},{"specId":"2875a2d72c26be259293321022c58db30f3347318b74aac08d8391a2bc624297","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3004","ghashtag/t27#2041","ghashtag/tri-net#68","ghashtag/tri-net#61","ghashtag/tri-net#16","ghashtag/trinity-fpga#32"]},{"specId":"394d8b86852ee09f078b2e6df56a9e20b076cba63caf3dfc9451742d03fa8dce","repos":["ghashtag/t27","ghashtag/trinity","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2675","ghashtag/t27#2348","ghashtag/t27#2241","ghashtag/trinity#616","ghashtag/trinity-fpga#730","ghashtag/trinity-fpga#633"]},{"specId":"5d6525d3d20a69056421b4f5190ba1449801baa2a7ce27308734f846653eca22","repos":["ghashtag/t27","ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2729","ghashtag/t27#2386","ghashtag/t27#2023","ghashtag/t27#1974","ghashtag/trios#1671","ghashtag/turbobaby-user-bot#37"]},{"specId":"dee60af3f5bdab663b83f635338e9ef8d99b4901ca774edd2ac9e4e5d25de499","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3157","ghashtag/t27#2595","ghashtag/t27#2393","ghashtag/t27#2101","ghashtag/trinity-fpga#648"]},{"specId":"67898bda2d551b7dd1d6973582c81aafddc17d63055d8213c6bf1152dad01f3c","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2873","ghashtag/t27#2683","ghashtag/t27#2537","ghashtag/trinity-fpga#78"]},{"specId":"728fee1f10510f4c907f4c89df2d7296b45a05bf765b8453fadd006a0e3f4e00","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2873","ghashtag/t27#2683","ghashtag/t27#2537","ghashtag/trinity-fpga#78"]},{"specId":"8c00c702742c891a043e7de4046a4c2874abbbfba356d804b75f234c2524a08d","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2393","ghashtag/t27#2131","ghashtag/t27#2101","ghashtag/tri-net#13"]},{"specId":"986623834b21f4190797176a13267ec1001c45e2be9de27a9596ca374ac1d645","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2680","ghashtag/tri-net#15","ghashtag/turbobaby-user-bot#29","ghashtag/turbobaby-user-bot#20","ghashtag/turbobaby-user-bot#14"]},{"specId":"b99a4a370a7660d821a5630a5e83b60efc678fb0818bde4692a17c57bcc45f8b","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2724","ghashtag/t27#2718","ghashtag/t27#2717","ghashtag/tri-net#85"]},{"specId":"9c6b667d6b01b2c4416af6e1d5239c351f836f8456b6f6a091eabc8c3d3b1349","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1996","ghashtag/tri-net#15","ghashtag/tri-net#11"]},{"specId":"aa30e6b7daa858593edf1ec47214828faa5111dbbcb7f17f5dbee028171b48d6","repos":["ghashtag/t27","ghashtag/trios","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/t27#2406","ghashtag/trios#1634","ghashtag/trios#1279","ghashtag/tt-trinity-corona#1"]},{"specId":"fc969de1da29ff2dc15b6a981e8ede647eb2f708cae54981c40e5d1600a25bc5","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/t27#3081","ghashtag/trinity-fpga#32","ghashtag/trios#1647","ghashtag/trios#1623"]},{"specId":"031a4a295e848f75a59247991f0f074e203d34b4521a2c5f2f5ac511b3095739","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3081","ghashtag/tri-net#74"]},{"specId":"060c2f1a0244b16ace9212d31c89b0a43ce2d804c7d105ba3c84ed319526b42a","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#2328","ghashtag/tri-net#76","ghashtag/trios#1618"]},{"specId":"0a607a0f1c1163df383e1f19581eb407730857390f7e4da61c1750bce82c83e5","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2694","ghashtag/trinity-fpga#206"]},{"specId":"2da4d6627b3a63870d19956b21f5a59007f39baf943b5d1c48e0af108f11b76f","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2694","ghashtag/trinity-fpga#206"]},{"specId":"3eddcce5ab6375091fce38d9359b62452cb1c4629ae716bd257b72c94621a6d1","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trios"],"issueKeys":["ghashtag/t27#2406","ghashtag/tri-net#66","ghashtag/trios#1279"]},{"specId":"6a4f7b4653875e091cd267380a65af7afaefc2fc0cbba48de376154c4baa6a2f","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1996","ghashtag/trinity-fpga#79"]},{"specId":"bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad","repos":["ghashtag/t27","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#2104","ghashtag/tt-trinity-gamma#80"]},{"specId":"d2a61f253450e7e0948f27328936df449bdb774fea6c08b6ad9198cdc22ba124","repos":["ghashtag/t27","ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2041","ghashtag/tri-net#61","ghashtag/trinity-fpga#32"]},{"specId":"d9f354f8b828fc2f29503d7e928ea5771635ddec31997a8b9196a1cae79c1eca","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3572","ghashtag/trios#1571"]},{"specId":"f057dcd80e083217dfbd7f394a1434b2ad5babd2cf74c8712008b49ac714a708","repos":["ghashtag/t27","ghashtag/trinity-fpga","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#2393","ghashtag/trinity-fpga#82","ghashtag/tt-trinity-gamma#80"]},{"specId":"76798d436d63c826bfb2479ea921da0d91f5ec8f027730bd23ef277110372f8d","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3473","ghashtag/t27#3377","ghashtag/t27#3272","ghashtag/t27#3243","ghashtag/t27#3225","ghashtag/t27#3140","ghashtag/t27#3038","ghashtag/t27#2880","ghashtag/t27#2860","ghashtag/t27#2723","ghashtag/t27#2710","ghashtag/t27#2706","ghashtag/t27#2705","ghashtag/t27#2703","ghashtag/t27#2662","ghashtag/t27#2658","ghashtag/t27#2655","ghashtag/t27#2654","ghashtag/t27#2650","ghashtag/t27#2647","ghashtag/t27#2645","ghashtag/t27#2643","ghashtag/t27#2635","ghashtag/t27#2607","ghashtag/t27#2606","ghashtag/t27#2601","ghashtag/t27#2591","ghashtag/t27#2589","ghashtag/t27#2588","ghashtag/t27#2584","ghashtag/t27#2573","ghashtag/t27#2569","ghashtag/t27#2534","ghashtag/t27#2532","ghashtag/t27#2531","ghashtag/t27#2529","ghashtag/t27#2527","ghashtag/t27#2526","ghashtag/t27#2525","ghashtag/t27#2483","ghashtag/t27#2433","ghashtag/t27#2411","ghashtag/t27#2398","ghashtag/t27#2397","ghashtag/t27#2393","ghashtag/t27#2347","ghashtag/t27#2152","ghashtag/t27#2128","ghashtag/t27#2126","ghashtag/t27#2123","ghashtag/t27#2121","ghashtag/t27#2118","ghashtag/t27#2113","ghashtag/t27#2110","ghashtag/t27#2108","ghashtag/t27#2106","ghashtag/t27#2105","ghashtag/t27#1901","ghashtag/t27#1857","ghashtag/t27#1855","ghashtag/t27#1853","ghashtag/t27#1851","ghashtag/t27#1848","ghashtag/t27#1845","ghashtag/t27#1843","ghashtag/t27#1841","ghashtag/t27#1458","ghashtag/t27#1276","ghashtag/tri-net#384"]},{"specId":"da90f8dbf59c63115a11e0d473a963a568df10e6c88fb06bfa264215c08bfd26","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2675","ghashtag/t27#2565","ghashtag/t27#2564","ghashtag/t27#2545","ghashtag/t27#2534","ghashtag/t27#2532","ghashtag/t27#2368","ghashtag/t27#2278","ghashtag/t27#2032","ghashtag/t27#2017","ghashtag/t27#1974","ghashtag/t27#1901","ghashtag/t27#1857","ghashtag/t27#1855","ghashtag/t27#1853","ghashtag/t27#1851","ghashtag/t27#1848","ghashtag/t27#1845","ghashtag/t27#1843","ghashtag/t27#1841","ghashtag/t27#1811","ghashtag/t27#1447","ghashtag/t27#1272","ghashtag/trinity-fpga#56"]},{"specId":"1606807e957801063ec8369b22eff27e144b157313c8f1117bf8e84d48d0def4","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2774","ghashtag/t27#2673","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"878d7495c5621280e8009db8518c7cd82c2468e5a35fac7f5fabc390a70d5958","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2105","ghashtag/t27#2104","ghashtag/t27#2102","ghashtag/t27#2101","ghashtag/t27#2098","ghashtag/t27#2092","ghashtag/t27#2091","ghashtag/t27#2079","ghashtag/t27#2070","ghashtag/t27#2069","ghashtag/t27#2067","ghashtag/t27#2059","ghashtag/tri-net#5"]},{"specId":"ff4328346dfccd966a50faa7ef58b9465c056aad8921701b5eff0736af41cf1d","repos":["ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/trinity-fpga#233","ghashtag/trios#1671","ghashtag/trios#1641","ghashtag/trios#1640","ghashtag/trios#1632","ghashtag/trios#1626","ghashtag/trios#1624","ghashtag/trios#1617","ghashtag/trios#1597","ghashtag/trios#1595","ghashtag/trios#1536","ghashtag/trios#1535"]},{"specId":"ef25280bdd4c1cc8dac5b84533ba73f686c70dcdc5797828490eab07465e9c23","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3232","ghashtag/t27#2961","ghashtag/t27#2767","ghashtag/t27#2698","ghashtag/t27#2697","ghashtag/t27#2578","ghashtag/t27#2571","ghashtag/t27#2569","ghashtag/t27#2067","ghashtag/t27#2052","ghashtag/trios#1570"]},{"specId":"0e139ee39f5a8ac48c4d4bc3ec5efac1ad2ec1ccd43a42182461842cf492e364","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3243","ghashtag/t27#2719","ghashtag/t27#2670","ghashtag/t27#2643","ghashtag/t27#2525","ghashtag/t27#2410","ghashtag/t27#1983","ghashtag/t27#1970","ghashtag/t27#1458","ghashtag/trinity-fpga#664"]},{"specId":"38b2b810c4473d7a655806ab7ec5621bb9fcbc9e3ec4a6139255d83fdaea7016","repos":["ghashtag/t27","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#3535","ghashtag/t27#3533","ghashtag/t27#3532","ghashtag/t27#2601","ghashtag/t27#2596","ghashtag/t27#2364","ghashtag/t27#2334","ghashtag/t27#2266","ghashtag/t27#2238","ghashtag/tt-trinity-gamma#80"]},{"specId":"f117b961d2a9aad49ddbd19e568ceb5ac0fbb2f1d89b5d98f3cfd9e8264681b0","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3229","ghashtag/t27#2620","ghashtag/turbobaby-user-bot#27","ghashtag/turbobaby-user-bot#16","ghashtag/turbobaby-user-bot#13","ghashtag/turbobaby-user-bot#9","ghashtag/turbobaby-user-bot#8","ghashtag/turbobaby-user-bot#6","ghashtag/turbobaby-user-bot#4","ghashtag/turbobaby-user-bot#1"]},{"specId":"f3c0b79dc1650f906ab042673150d5ab89c8b8d5425352cdd88935ab5d4c1887","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2048","ghashtag/t27#1773","ghashtag/turbobaby-user-bot#18","ghashtag/turbobaby-user-bot#11","ghashtag/turbobaby-user-bot#10","ghashtag/turbobaby-user-bot#7","ghashtag/turbobaby-user-bot#6","ghashtag/turbobaby-user-bot#5","ghashtag/turbobaby-user-bot#4","ghashtag/turbobaby-user-bot#1"]},{"specId":"8bf0c6be4c10d6fdbc01fc6734b5896c441985b50194520b6de1c45d88f56852","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3377","ghashtag/t27#3270","ghashtag/t27#2555","ghashtag/t27#2134","ghashtag/t27#2122","ghashtag/t27#1963","ghashtag/t27#1448","ghashtag/t27#1433","ghashtag/tri-net#96"]},{"specId":"8c4013f79a379f6acf7fbeaef73f06644331cd82b0c0da43fffc0416b7ea4b74","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3404","ghashtag/t27#2706","ghashtag/t27#2701","ghashtag/t27#2539","ghashtag/t27#2067","ghashtag/t27#2052","ghashtag/trinity-fpga#78","ghashtag/trinity-fpga#29","ghashtag/trinity-fpga#19"]},{"specId":"8ea0766984db7775c474eab25dfb14965fa835ce0a56b33173df319fad342182","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2830","ghashtag/t27#2635","ghashtag/t27#2100","ghashtag/t27#2099","ghashtag/t27#1997","ghashtag/t27#1987","ghashtag/t27#1984","ghashtag/trinity-fpga#56","ghashtag/trinity-fpga#20"]},{"specId":"dbf334869e4d417591ed2cb6cce5997a90a8ff837d4ad3274891d9d87967cc4e","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3232","ghashtag/t27#3034","ghashtag/t27#2532","ghashtag/t27#2352","ghashtag/t27#2253","ghashtag/t27#2118","ghashtag/t27#1448","ghashtag/t27#1433","ghashtag/trios#1570"]},{"specId":"22fee06c36b53ccb90c461410d9d801697d275479c33ac199007d118b8a019a4","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2714","ghashtag/t27#2593","ghashtag/t27#2143","ghashtag/t27#2047","ghashtag/t27#1928","ghashtag/t27#1420","ghashtag/t27#1282","ghashtag/trinity-fpga#428"]},{"specId":"6435b9bcacee0748f5e714b47e98f95fd379b34dffb6fb8e84028d6e090e8012","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3243","ghashtag/t27#2719","ghashtag/t27#2670","ghashtag/t27#2410","ghashtag/t27#1983","ghashtag/t27#1970","ghashtag/t27#1458","ghashtag/trinity-fpga#664"]},{"specId":"6c5b3b9d29d56db16497bed51d23246e0779428accbb1de280640f638162f48b","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2893","ghashtag/t27#2724","ghashtag/t27#2719","ghashtag/t27#2715","ghashtag/t27#2650","ghashtag/t27#2647","ghashtag/t27#2646","ghashtag/tri-net#85"]},{"specId":"bf26288bfe3ad776ed7f7a58c63c4793a72149b50669cee212c5a0c6d6cd484e","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3512","ghashtag/t27#3511","ghashtag/t27#3510","ghashtag/t27#3509","ghashtag/t27#2851","ghashtag/t27#2633","ghashtag/t27#2398","ghashtag/trios#1527"]},{"specId":"c20e8f672cfc0d688be79d21eaf0c3640927492a895ecc28c94245e28a839eee","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2706","ghashtag/trios#1665","ghashtag/trios#1643","ghashtag/trios#1627","ghashtag/trios#1607","ghashtag/trios#1582","ghashtag/trios#1551","ghashtag/trios#1519"]},{"specId":"c58958012fcba7b9a9f9ebfe548f1b2531a09944f2865ca33bf6d47c28cc8164","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2839","ghashtag/t27#2826","ghashtag/t27#2393","ghashtag/t27#2306","ghashtag/t27#2100","ghashtag/t27#2019","ghashtag/t27#1996","ghashtag/trinity-fpga#736"]},{"specId":"50c024be3d15fb0d68356ef3e918d71a1ddd3a6b315478927a996a5760efc1db","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3619","ghashtag/t27#1995","ghashtag/t27#1976","ghashtag/t27#1951","ghashtag/tri-net#70","ghashtag/tri-net#66","ghashtag/tri-net#17"]},{"specId":"957eda56603a3b88260f0862061897d9b92f52a98262946b8b035de951ab34a8","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2992","ghashtag/t27#2977","ghashtag/t27#2729","ghashtag/t27#2580","ghashtag/t27#2147","ghashtag/turbobaby-user-bot#37","ghashtag/turbobaby-user-bot#3"]},{"specId":"008af9aea4cc3d4324c4c41b9418da42908be55e79790bf12301afb74c9328d7","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2617","ghashtag/t27#2589","ghashtag/t27#2536","ghashtag/t27#2526","ghashtag/t27#1288","ghashtag/trinity-fpga#85"]},{"specId":"1767f5d6d0c074a6c08af54111fac6fab458f8c3c18de07b88cb741e6f977505","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2961","ghashtag/t27#2253","ghashtag/t27#2118","ghashtag/t27#2085","ghashtag/t27#1676","ghashtag/trios#1570"]},{"specId":"5a4299fbb6f48fb26f693a78e96260060ade32e84a9a969e6b68465f57b18f0e","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2593","ghashtag/t27#2143","ghashtag/t27#2047","ghashtag/t27#1420","ghashtag/t27#1282","ghashtag/trinity-fpga#428"]},{"specId":"5d15f9ef5b075492d27dc7f58b33bf12d030fdf821239ec62e419787513e2374","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2155","ghashtag/t27#2089","ghashtag/t27#2042","ghashtag/t27#1773","ghashtag/trinity-fpga#631","ghashtag/trinity-fpga#234"]},{"specId":"8d4654db09b2c725ee373ecaff6541a1d7e3ba3b71aac227f8bffbe957d0ed97","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2961","ghashtag/t27#2905","ghashtag/t27#2622","ghashtag/t27#2615","ghashtag/t27#2253","ghashtag/trios#1570"]},{"specId":"b8f7c75f19267d15fbd1b8e15e1bb446357bdca35f783d8a58f012dadaa1e4cb","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3532","ghashtag/t27#3081","ghashtag/trios#1566","ghashtag/trios#1511","ghashtag/trios#1484","ghashtag/trios#1476"]},{"specId":"33678b37e2c94763d2da70fee97c6a0070cb6fac64b6d2dfa12619af3b164e7c","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2713","ghashtag/t27#2306","ghashtag/t27#2106","ghashtag/trios#1556","ghashtag/trios#1484"]},{"specId":"468c0d05fb6430308005b43d183c3070421c754cdf83fef8e76f36c8ed0ed2f9","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3474","ghashtag/t27#2835","ghashtag/t27#2645","ghashtag/t27#2591","ghashtag/trinity-fpga#770"]},{"specId":"585f8e034f5937d413818c08a078893d47eb9d2524c30a35d4bf9fb701d051c7","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3514","ghashtag/t27#3150","ghashtag/t27#3134","ghashtag/t27#2835","ghashtag/trios#1540"]},{"specId":"a2ed7ccff916e322f238d01ec8a8ba31e0c24cbcd2bcabf7c36c190f8ad74c2e","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3265","ghashtag/t27#2873","ghashtag/t27#2729","ghashtag/t27#2148","ghashtag/trios#1583"]},{"specId":"be83d2a916a15957502d6afa4d6eff7ab07d0373e81555704ee842500db47187","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2807","ghashtag/t27#2635","ghashtag/trinity-fpga#81","ghashtag/trinity-fpga#78","ghashtag/trinity-fpga#20"]},{"specId":"bf010cc8934d6a7e7d4e53b272036a117d7d225cf832460aa3639938fe7ba24a","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3672","ghashtag/t27#3474","ghashtag/t27#3370","ghashtag/t27#2697","ghashtag/trinity-fpga#34"]},{"specId":"cebc62b3c29a594fb87dd3e50a1c7a486f051210be34f87749a571d3fd7e258d","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1979","ghashtag/tri-net#84","ghashtag/tri-net#14","ghashtag/tri-net#11","ghashtag/tri-net#10"]},{"specId":"d578f5119a7cf08325892829db66a22d189ced7b969be6c8dd9a1022b2e06f87","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2631","ghashtag/t27#2610","ghashtag/t27#2120","ghashtag/t27#2118","ghashtag/turbobaby-user-bot#16"]},{"specId":"5db8c37f809a17a0b7778d8721030cdbdb8085af48e987890b553172ee119e6e","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2617","ghashtag/t27#2526","ghashtag/t27#2364","ghashtag/trinity-fpga#85"]},{"specId":"67b126ee510d34e78677d12e64b2b2aacf9951410adc6f3338018101e0e112c0","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3591","ghashtag/t27#3582","ghashtag/t27#2646","ghashtag/trios#1658"]},{"specId":"6ff24c8034abee79a6c63dedb39fe1bd331327c3641efc8e797fd784ae0ee9bd","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2654","ghashtag/t27#2646","ghashtag/trinity-fpga#20","ghashtag/trinity-fpga#14"]},{"specId":"79863f7b9356b6725e18c52916a4feaa194efd160bd87e1edd46db8138243b96","repos":["ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/tri-net#76","ghashtag/tri-net#68","ghashtag/tri-net#58","ghashtag/trinity-fpga#684"]},{"specId":"7dd21e0731838e7233a2f313d0a9516b0621812a6c915d68b5da61af5ae135da","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1984","ghashtag/t27#1972","ghashtag/t27#1458","ghashtag/trinity-fpga#740"]},{"specId":"89efc921cc39bec70c5b3e9db49c4045670f7c202467a7755844281bd5d74436","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#2715","ghashtag/t27#2712","ghashtag/t27#2710","ghashtag/turbobaby-user-bot#32"]},{"specId":"9b0d8c306d6de9f1140ce238ef58b1c955fc6483777c811339bff18da582ab4c","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2853","ghashtag/t27#2822","ghashtag/t27#1038","ghashtag/trios#1562"]},{"specId":"e9927cc72411bb1d9ec0d23c7fdeea9638aad2c15408bba3bba28f1d11f9e40e","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2983","ghashtag/t27#2783","ghashtag/t27#2686","ghashtag/trinity-fpga#79"]},{"specId":"3141c84ac07b0e0278a98f2c175f0eb68d499eca57a2a936bdc41cf5a0de85eb","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2662","ghashtag/t27#2609","ghashtag/trinity-fpga#80"]},{"specId":"347febabdec248e5241a7b94f572b8bac99536d5b946bbff146095f676917d64","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1979","ghashtag/t27#1928","ghashtag/tri-net#11"]},{"specId":"42829ab1f0ba5ad5cd945336ef18d2e0a92904510f3d743ad96da1b431954083","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2288","ghashtag/trinity-fpga#684","ghashtag/trinity-fpga#233"]},{"specId":"454a458574a0e53e0015858a39bde31d0415d45310a7e11b8605137fa9813894","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3169","ghashtag/t27#1990","ghashtag/tri-net#15"]},{"specId":"5f8f1e6257d4daea69a8f492f77f0531aff8d1ca955882b6bcab3d1fccbb6604","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3473","ghashtag/t27#2764","ghashtag/turbobaby-user-bot#26"]},{"specId":"727efa1d6127c74538d09d298db43a9f02c622507541c51d0659b078dee2fb48","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3584","ghashtag/t27#2539","ghashtag/trios#1350"]},{"specId":"7520e251d23861075aa7c4899aee7074e7199364c34f8f3218ee7d7711acd6e6","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3672","ghashtag/t27#2893","ghashtag/trios#1554"]},{"specId":"79072265b3262e1328804af2c4408d96dec6c525f57f60fff3a181e5236fe9b2","repos":["ghashtag/trios","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/trios#1336","ghashtag/turbobaby-user-bot#30","ghashtag/turbobaby-user-bot#23"]},{"specId":"8289808dece94b86b1c28d8606950d2a159b56c41e737f9d658ae917376702e9","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2774","ghashtag/t27#2479","ghashtag/trinity-fpga#19"]},{"specId":"8f46ba7ad0a214121f9f767a1d34411f435bf8fa19f3368b3182021b738bd4de","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2238","ghashtag/trinity-fpga#19","ghashtag/trinity-fpga#16"]},{"specId":"98ba1a67d94856b42f06d5db6c3c2a8499bcf955d74c5543c9cb630797815d4a","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2627","ghashtag/t27#2626","ghashtag/trios#1566"]},{"specId":"9cbf399a4e185207def9b62c59c9b6cefb29fc2fc9cfada401826defe67ea034","repos":["ghashtag/t27","ghashtag/tt-trinity-gamma"],"issueKeys":["ghashtag/t27#2682","ghashtag/tt-trinity-gamma#78","ghashtag/tt-trinity-gamma#74"]},{"specId":"a56255eeb15ab34b0d17caf63b58447d0783b70a185941a8408766153d1ba575","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3514","ghashtag/t27#2148","ghashtag/trios#1583"]},{"specId":"b03d87fec868d2aa28f16a77d0dc77dd068c98b1443f9a2408896c72d4a3c227","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#2334","ghashtag/tri-net#70","ghashtag/tri-net#16"]},{"specId":"d423c776e6e52065e43cb1e5f1474ce2d16acbcce28062c661448486bc58e629","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3276","ghashtag/t27#2665","ghashtag/turbobaby-user-bot#16"]},{"specId":"f326cd5211ea96977ae88dacce09ac2b3fa5dce9a7bf45d584fae498e6e5657f","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3169","ghashtag/t27#1990","ghashtag/trinity-fpga#79"]},{"specId":"fce2c526da99f5e512ade697751f7de47c7d18aba1944bd7ef745dc512c29eed","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2688","ghashtag/t27#2660","ghashtag/trinity-fpga#32"]},{"specId":"fe6a13330696c3abb70c0e003b84a1d4b41beefc62844447550a6c47f6ef3a0b","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1882","ghashtag/trinity-fpga#83","ghashtag/trinity-fpga#32"]},{"specId":"fe76d7adec120cd0d8e1ea2f7bfa596973c69444e08a9bd021ecbc3230320fc3","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3081","ghashtag/trios#1647","ghashtag/trios#1623"]},{"specId":"07899fe089fd3c2e86b4ac40eb12107658ff5719524f6a059798f4d53f44aa54","repos":["ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/tri-net#62","ghashtag/trinity-fpga#17"]},{"specId":"13cc1e8f0e62bc29eb874c628c2bea30950b100bd08a3919e4ff3043beb4491f","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2164","ghashtag/trios#1554"]},{"specId":"1d05a384a7d86a0b1dc51862a266e2bc58c5abf7aaece60033f027ce13464f34","repos":["ghashtag/tri-net","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/tri-net#12","ghashtag/trinity-fpga#17"]},{"specId":"295f1d1c7615bcf6b2e1368861fb008d14f61c1dcebc78145ad9b4fd7317846c","repos":["ghashtag/trios","ghashtag/tt-trinity-corona"],"issueKeys":["ghashtag/trios#1634","ghashtag/tt-trinity-corona#1"]},{"specId":"2c65fc896945f85b8a031bf434390756577e278e8daf5affeed9046d7978492a","repos":["ghashtag/trinity-fpga","ghashtag/trios"],"issueKeys":["ghashtag/trinity-fpga#425","ghashtag/trios#1590"]},{"specId":"304633b6f24931bc03b56540235f1cfb560e9648a6fa3473ac53f2c74c8156fc","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2683","ghashtag/trinity-fpga#78"]},{"specId":"50d027fc963bf66e1ad0bba2584df9d86a3964a397f7f74db7c639b2a6c1f796","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#3472","ghashtag/trinity-fpga#206"]},{"specId":"5a74ff484ea041b354595677e0492aff16e8995dd0a9a59f84f9841e1445c1aa","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#2567","ghashtag/trinity-fpga#31"]},{"specId":"61fc72cf5a4aa56e8399d7d00cf5e2639c5a42746c0169f20e35b4dd4d154bee","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1979","ghashtag/trinity-fpga#648"]},{"specId":"6619a7d078b3f294092c118c40c4eb95745126f1d346041fc49592ff8a957115","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#1882","ghashtag/tri-net#66"]},{"specId":"6deb105682ed85d520e9ea126468db714fe5327c5e05ef27ebc160acdceca647","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3514","ghashtag/trios#1583"]},{"specId":"7843aca460336f24ba9026067e1e642e110cb6d2a995064bf9613eaed662c115","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#1841","ghashtag/trios#1527"]},{"specId":"95bf602cc138f84906b27d19f2057a793f6a91bd3107775285609ccf4a777a1c","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2406","ghashtag/trios#1279"]},{"specId":"979b29b19e25610e1bdaac20f03ff6c2f302cf6809ccdbdd6b6f900b91031202","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3586","ghashtag/turbobaby-user-bot#7"]},{"specId":"b04d3c91271500adcd9889d0b9209dba366091627303dba6c92abc82757057ba","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3188","ghashtag/tri-net#12"]},{"specId":"b5d5ab2b04d04b08a4f307d4744cde9b0c95e7aa000f971bf648f33ca50717ca","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#2325","ghashtag/trios#1511"]},{"specId":"d644c9324cfbbea3cc981a52d4fc2628aca41d297dd70cd3f9afc3c2565adb83","repos":["ghashtag/t27","ghashtag/tri-net"],"issueKeys":["ghashtag/t27#3188","ghashtag/tri-net#12"]},{"specId":"da869f75b0e66b078c82ff9989a637e2e81426f78d2ede00b74df9da126c18b5","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#1038","ghashtag/trios#1562"]},{"specId":"f1e5eefbb3fdd68c2f4f539e8a221d176d21851a20f6abf159266108b547ac2f","repos":["ghashtag/t27","ghashtag/trios"],"issueKeys":["ghashtag/t27#3527","ghashtag/trios#1566"]},{"specId":"f4c734a4a68e2c20c6ff6824ee431d2ea1912898dc36072c2ee1229fbe79a688","repos":["ghashtag/t27","ghashtag/turbobaby-user-bot"],"issueKeys":["ghashtag/t27#3523","ghashtag/turbobaby-user-bot#7"]},{"specId":"fe6ff2cc8fb17534f6cbd181a4af31750729533339cbf99889aff1a06bd09151","repos":["ghashtag/t27","ghashtag/trinity-fpga"],"issueKeys":["ghashtag/t27#1676","ghashtag/trinity-fpga#177"]}]} diff --git a/apps/website/public/tools/spec-tools.json b/apps/website/public/tools/spec-tools.json index 162a3f02d5..dd5e521f59 100644 --- a/apps/website/public/tools/spec-tools.json +++ b/apps/website/public/tools/spec-tools.json @@ -1 +1 @@ -{"collisions":[{"name":"fpga","t27":"gHashTag/t27:tri/fpga","trinity":"gHashTag/trinity:tri/fpga"},{"name":"test","t27":"gHashTag/t27:tri/test","trinity":"gHashTag/trinity:tri/test"}],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"e02bcfa277591e13e90cea8cc0f274d6b15f53c0f46d834a3cb9dd13e5701c21","counts":{"byRepo":{"gHashTag/t27":58,"gHashTag/trinity":34},"byWitness":{"help-output":1,"registry-export":29,"runtime":0,"source-parse":62},"collisions":2,"enabled":92,"mcp":11,"mcpExternal":6,"mcpTools":255,"mcpWithTools":6,"schema2":92,"specs":92,"tri":81,"triActions":124,"triWithActions":38,"trinityTri":29,"typecheckOk":92,"withAgents":6,"withSkills":5},"generatedAt":"2026-09-13T03:52:07.716Z","groups":{"mcpByRepo":{"gHashTag/t27":["mcp/gitbutler","mcp/inngest-dev","mcp/notebooklm","mcp/t27-traceability","mcp/tri-mcp","mcp/tri-ssot"],"gHashTag/trinity":["mcp/needle","mcp/neon","mcp/railway-mcp-server","mcp/trinity","mcp/zig-docs"]},"triByAgent":{"-":["gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/test","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","tri/abandoned","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/vsim","tri/window","tri/worktrees"],"C":["tri/gen"],"E":["tri/experience"],"T":["tri/gen","tri/test"],"V":["tri/test","tri/verdict"],"W":["tri/cell"]},"triByRepo":{"gHashTag/t27":["tri/abandoned","tri/cell","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/experience","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/gen","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/test","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/verdict","tri/vsim","tri/window","tri/worktrees"],"gHashTag/trinity":["gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/test","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet"]}},"i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":92,"total":92},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":856,"tools":92},"legacy":{"mcp/gitbutler":"gHashTag/t27:mcp/gitbutler","mcp/inngest-dev":"gHashTag/t27:mcp/inngest-dev","mcp/needle":"gHashTag/trinity:mcp/needle","mcp/neon":"gHashTag/trinity:mcp/neon","mcp/notebooklm":"gHashTag/t27:mcp/notebooklm","mcp/railway-mcp-server":"gHashTag/trinity:mcp/railway-mcp-server","mcp/t27-traceability":"gHashTag/t27:mcp/t27-traceability","mcp/tri-mcp":"gHashTag/t27:mcp/tri-mcp","mcp/tri-ssot":"gHashTag/t27:mcp/tri-ssot","mcp/trinity":"gHashTag/trinity:mcp/trinity","mcp/zig-docs":"gHashTag/trinity:mcp/zig-docs","tri/abandoned":"gHashTag/t27:tri/abandoned","tri/cell":"gHashTag/t27:tri/cell","tri/census":"gHashTag/t27:tri/census","tri/ci":"gHashTag/t27:tri/ci","tri/competitors":"gHashTag/t27:tri/competitors","tri/discard":"gHashTag/t27:tri/discard","tri/doctor":"gHashTag/t27:tri/doctor","tri/elab":"gHashTag/t27:tri/elab","tri/emit":"gHashTag/t27:tri/emit","tri/experience":"gHashTag/t27:tri/experience","tri/fleet":"gHashTag/t27:tri/fleet","tri/fmt":"gHashTag/t27:tri/fmt","tri/fpga":"gHashTag/t27:tri/fpga","tri/gates":"gHashTag/t27:tri/gates","tri/gen":"gHashTag/t27:tri/gen","tri/harness":"gHashTag/t27:tri/harness","tri/health":"gHashTag/t27:tri/health","tri/hooks":"gHashTag/t27:tri/hooks","tri/issues":"gHashTag/t27:tri/issues","tri/jumps":"gHashTag/t27:tri/jumps","tri/kinds":"gHashTag/t27:tri/kinds","tri/lean":"gHashTag/t27:tri/lean","tri/ledgers":"gHashTag/t27:tri/ledgers","tri/loop":"gHashTag/t27:tri/loop","tri/merging":"gHashTag/t27:tri/merging","tri/misread":"gHashTag/t27:tri/misread","tri/mods":"gHashTag/t27:tri/mods","tri/mutate":"gHashTag/t27:tri/mutate","tri/now":"gHashTag/t27:tri/now","tri/one-away":"gHashTag/t27:tri/one-away","tri/orphaned":"gHashTag/t27:tri/orphaned","tri/pr":"gHashTag/t27:tri/pr","tri/prose":"gHashTag/t27:tri/prose","tri/quantifiers":"gHashTag/t27:tri/quantifiers","tri/red":"gHashTag/t27:tri/red","tri/reseal":"gHashTag/t27:tri/reseal","tri/rtl":"gHashTag/t27:tri/rtl","tri/seals":"gHashTag/t27:tri/seals","tri/serve":"gHashTag/t27:tri/serve","tri/skill":"gHashTag/t27:tri/skill","tri/status":"gHashTag/t27:tri/status","tri/sweep":"gHashTag/t27:tri/sweep","tri/synth":"gHashTag/t27:tri/synth","tri/test":"gHashTag/t27:tri/test","tri/topic":"gHashTag/t27:tri/topic","tri/types":"gHashTag/t27:tri/types","tri/unparsed":"gHashTag/t27:tri/unparsed","tri/vectors":"gHashTag/t27:tri/vectors","tri/verdict":"gHashTag/t27:tri/verdict","tri/vsim":"gHashTag/t27:tri/vsim","tri/window":"gHashTag/t27:tri/window","tri/worktrees":"gHashTag/t27:tri/worktrees"},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"schema":2,"tools":[{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; Filter benchmarks by pattern","name":""},{"about":"string, optional; Output report file","name":""},{"about":"integer, optional; Number of iterations (default: 1000)","name":""}],"collidesWith":null,"command":"tri bench","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Run performance benchmarks","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["benchmark"],"ARGS":[": string, optional; Filter benchmarks by pattern",": string, optional; Output report file",": integer, optional; Number of iterations (default: 1000)"],"CAPABILITIES":["filesystem"],"CATEGORY":"benchmark","COLLIDES_WITH":"","COMMAND":"tri bench","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri bench","tri bench --filter vsa","tri bench --output report.json"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/bench","JOB_TIMEOUT":600,"KIND":"tool","MCP_DISPLAY_NAME":"Performance Benchmarks","MCP_ENABLED":true,"MCP_NAME":"tri_bench","MODE":"job","NAMESPACE":"dev","QUALIFIED_ID":"gHashTag/trinity:tri/bench","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":["filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command bench (cli_namespace dev)","WHEN_TO_USE":"Run performance benchmarks","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/bench","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_bench","name":{"en":"tri bench"},"qualifiedId":"gHashTag/trinity:tri/bench","registry":{"aliases":["benchmark"],"capabilities":["filesystem"],"category":"benchmark","examples":["tri bench","tri bench --filter vsa","tri bench --output report.json"],"jobTimeout":600,"mcpDisplayName":"Performance Benchmarks","mcpEnabled":true,"mcpName":"tri_bench","mode":"job","namespace":"dev","sideEffects":["filesystem"],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/bench tri bench run performance benchmarks run performance benchmarks","sha256":"1abd9bd8ba36e27afc61193b4da5cee668fce6a890cc6b7b0c4d44bbe13be5a9","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/bench.t27","summary":{"en":"Run performance benchmarks","ru":"Бенчмарки Trinity."},"typecheckOk":true,"variant":"registry command bench (cli_namespace dev)","whenToUse":"Run performance benchmarks","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; DNA/RNA/Protein sequence","name":""}],"collidesWith":null,"command":"tri bio","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["biology"],"ARGS":[": string, required; DNA/RNA/Protein sequence"],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri bio","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri bio dna ATGCGT","tri bio rna AUGCCAUAA","tri bio protein MVHLTPEEK","tri bio codon ATG"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/bio","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"DNA Analysis","MCP_ENABLED":true,"MCP_NAME":"tri_bio_dna","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/bio","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command bio (cli_namespace core)","WHEN_TO_USE":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/bio","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_bio","name":{"en":"tri bio"},"qualifiedId":"gHashTag/trinity:tri/bio","registry":{"aliases":["biology"],"capabilities":[],"category":"science","examples":["tri bio dna ATGCGT","tri bio rna AUGCCAUAA","tri bio protein MVHLTPEEK","tri bio codon ATG"],"jobTimeout":300,"mcpDisplayName":"DNA Analysis","mcpEnabled":true,"mcpName":"tri_bio_dna","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/bio tri bio biology v14.0 \\u2014 dna/rna/protein sacred analysis biology v14.0 \\u2014 dna/rna/protein sacred analysis","sha256":"e9f0534647b2ff6479e0a03577eeb01d1c529f0973f585eb5c134ae4f819d29a","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/bio.t27","summary":{"en":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","ru":"Биология v14.0 — сакральный анализ ДНК, РНК и белков."},"typecheckOk":true,"variant":"registry command bio (cli_namespace core)","whenToUse":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri blindspots","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["blind-spot","blindspot","bs"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri blindspots","ENABLED":true,"ENTRY":"","EXAMPLES":["tri blindspots all","tri blindspots nuclear","tri blindspots atomic","tri blindspots plasma","tri blindspots optics","tri blindspots astro","tri blindspots quantum","tri blindspots condensed","tri blindspots biology-advanced","tri blindspots domains"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/blindspots","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Blind Spots (8 Domains)","MCP_ENABLED":true,"MCP_NAME":"tri_blindspots","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/blindspots","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri blindspots` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command blindspots (cli_namespace core)","WHEN_TO_USE":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/blindspots","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_blindspots","name":{"en":"tri blindspots"},"qualifiedId":"gHashTag/trinity:tri/blindspots","registry":{"aliases":["blind-spot","blindspot","bs"],"capabilities":[],"category":"science","examples":["tri blindspots all","tri blindspots nuclear","tri blindspots atomic","tri blindspots plasma","tri blindspots optics","tri blindspots astro","tri blindspots quantum","tri blindspots condensed","tri blindspots biology-advanced","tri blindspots domains"],"jobTimeout":300,"mcpDisplayName":"Blind Spots (8 Domains)","mcpEnabled":true,"mcpName":"tri_blindspots","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri blindspots` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/blindspots tri blindspots blind spots v1.0 \\u2014 90+ new formulas across 8 domains blind spots v1.0 \\u2014 90+ new formulas across 8 domains","sha256":"ae78ffaeec23f0c29f7aece98aa361e30ae30e923624aba2aad40b23b4a9ef7f","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/blindspots.t27","summary":{"en":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","ru":"Слепые пятна: поиск областей, где сакральная формула ещё не проверена."},"typecheckOk":true,"variant":"registry command blindspots (cli_namespace core)","whenToUse":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri conscious","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["consciousness"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri conscious","ENABLED":true,"ENTRY":"","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/conscious","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Consciousness Simulator","MCP_ENABLED":true,"MCP_NAME":"tri_consciousness","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/conscious","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri conscious` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command conscious (cli_namespace core)","WHEN_TO_USE":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/conscious","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_conscious","name":{"en":"tri conscious"},"qualifiedId":"gHashTag/trinity:tri/conscious","registry":{"aliases":["consciousness"],"capabilities":[],"category":"science","examples":[],"jobTimeout":300,"mcpDisplayName":"Consciousness Simulator","mcpEnabled":true,"mcpName":"tri_consciousness","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri conscious` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/conscious tri conscious consciousness awakening simulator (iit+gwt+orchor+qutrit+activeinf) consciousness awakening simulator (iit+gwt+orchor+qutrit+activeinf)","sha256":"94a9c3f27d49d51c2cb60355eaaaa9a9f296515a6974afb7c629d7ff00681f54","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/conscious.t27","summary":{"en":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","ru":"Метрики сознания Trinity."},"typecheckOk":true,"variant":"registry command conscious (cli_namespace core)","whenToUse":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri constants","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["const","c"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri constants","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri constants"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/constants","JOB_TIMEOUT":0,"KIND":"tool","MCP_DISPLAY_NAME":"Sacred Constants","MCP_ENABLED":true,"MCP_NAME":"tri_constants","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/constants","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command constants (cli_namespace core)","WHEN_TO_USE":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/constants","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_constants","name":{"en":"tri constants"},"qualifiedId":"gHashTag/trinity:tri/constants","registry":{"aliases":["const","c"],"capabilities":[],"category":"math","examples":["tri constants"],"jobTimeout":0,"mcpDisplayName":"Sacred Constants","mcpEnabled":true,"mcpName":"tri_constants","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/constants tri constants display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5) display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","sha256":"2ab994adcd287776d83e4432dfd098a89121d8d3f8395b9ef2f15dd8cc6fea04","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/constants.t27","summary":{"en":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","ru":"Сакральные константы (phi, pi, e и их соотношения)."},"typecheckOk":true,"variant":"registry command constants (cli_namespace core)","whenToUse":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri cosmos","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Cosmology v15.0 \\u2014 Universe through \\u03c6","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["cosmology"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri cosmos","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri cosmos hubble","tri cosmos dark","tri cosmos w-z","tri cosmos lambda-z","tri cosmos phantom","tri cosmos consciousness-de"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/cosmos","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Hubble Tension","MCP_ENABLED":true,"MCP_NAME":"tri_cosmos_hubble","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/cosmos","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command cosmos (cli_namespace core)","WHEN_TO_USE":"Cosmology v15.0 \\u2014 Universe through \\u03c6","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/cosmos","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_cosmos","name":{"en":"tri cosmos"},"qualifiedId":"gHashTag/trinity:tri/cosmos","registry":{"aliases":["cosmology"],"capabilities":[],"category":"science","examples":["tri cosmos hubble","tri cosmos dark","tri cosmos w-z","tri cosmos lambda-z","tri cosmos phantom","tri cosmos consciousness-de"],"jobTimeout":300,"mcpDisplayName":"Hubble Tension","mcpEnabled":true,"mcpName":"tri_cosmos_hubble","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/cosmos tri cosmos cosmology v15.0 \\u2014 universe through \\u03c6 cosmology v15.0 \\u2014 universe through \\u03c6","sha256":"42bf0f894738516bde89899aa41ed960072949d0409958942954da09f598e5bd","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/cosmos.t27","summary":{"en":"Cosmology v15.0 \\u2014 Universe through \\u03c6","ru":"Космология v15.0 — постоянная Хаббла и сакральные космологические константы."},"typecheckOk":true,"variant":"registry command cosmos (cli_namespace core)","whenToUse":"Cosmology v15.0 \\u2014 Universe through \\u03c6","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, optional; Dashboard port","name":""}],"collidesWith":null,"command":"tri dashboard","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred dashboard","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, optional; Dashboard port"],"CAPABILITIES":[],"CATEGORY":"system","COLLIDES_WITH":"","COMMAND":"tri dashboard","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/dashboard","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Dashboard Server","MCP_ENABLED":true,"MCP_NAME":"tri_dashboard_serve","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/dashboard","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command dashboard (cli_namespace core)","WHEN_TO_USE":"Sacred dashboard","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/dashboard","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_dashboard","name":{"en":"tri dashboard"},"qualifiedId":"gHashTag/trinity:tri/dashboard","registry":{"aliases":[],"capabilities":[],"category":"system","examples":[],"jobTimeout":300,"mcpDisplayName":"Dashboard Server","mcpEnabled":true,"mcpName":"tri_dashboard_serve","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/dashboard tri dashboard sacred dashboard sacred dashboard","sha256":"3e84d5413e6db52ac25368c67f1585b67c5c0401f80c30df20c96c626c3b345d","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/dashboard.t27","summary":{"en":"Sacred dashboard","ru":"Панель состояния Trinity."},"typecheckOk":true,"variant":"registry command dashboard (cli_namespace core)","whenToUse":"Sacred dashboard","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Fibonacci index","name":""}],"collidesWith":null,"command":"tri fib","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Fibonacci numbers with BigInt","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["fibonacci"],"ARGS":[": integer, required; Fibonacci index"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri fib","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri fib 10","tri fib 100"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/fib","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Fibonacci","MCP_ENABLED":true,"MCP_NAME":"tri_fib","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/fib","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command fib (cli_namespace core)","WHEN_TO_USE":"Fibonacci numbers with BigInt","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/fib","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_fib","name":{"en":"tri fib"},"qualifiedId":"gHashTag/trinity:tri/fib","registry":{"aliases":["fibonacci"],"capabilities":[],"category":"math","examples":["tri fib 10","tri fib 100"],"jobTimeout":300,"mcpDisplayName":"Fibonacci","mcpEnabled":true,"mcpName":"tri_fib","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/fib tri fib fibonacci numbers with bigint fibonacci numbers with bigint","sha256":"a7a393454d6c7633bfbf3ce21e91dcb7e2232921c6492192b7db580242981ed0","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/fib.t27","summary":{"en":"Fibonacci numbers with BigInt","ru":"Числа Фибоначчи."},"typecheckOk":true,"variant":"registry command fib (cli_namespace core)","whenToUse":"Fibonacci numbers with BigInt","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":"gHashTag/t27:tri/fpga","command":"tri fpga","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"FPGA toolchain via FORGE v2.0 (native Zig)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["forge"],"ARGS":[],"CAPABILITIES":["hardware","filesystem"],"CATEGORY":"dev","COLLIDES_WITH":"gHashTag/t27:tri/fpga","COMMAND":"tri fpga","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri fpga bench","tri fpga verdict","tri fpga run design.json","tri fpga flash design.bit"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/fpga","JOB_TIMEOUT":1800,"KIND":"tool","MCP_DISPLAY_NAME":"FPGA Toolchain","MCP_ENABLED":true,"MCP_NAME":"tri_fpga","MODE":"job","NAMESPACE":"forge","QUALIFIED_ID":"gHashTag/trinity:tri/fpga","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":["hardware","filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"experimental","VARIANT":"registry command fpga (cli_namespace forge)","WHEN_TO_USE":"FPGA toolchain via FORGE v2.0 (native Zig)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/fpga","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_fpga","name":{"en":"tri fpga"},"qualifiedId":"gHashTag/trinity:tri/fpga","registry":{"aliases":["forge"],"capabilities":["hardware","filesystem"],"category":"dev","examples":["tri fpga bench","tri fpga verdict","tri fpga run design.json","tri fpga flash design.bit"],"jobTimeout":1800,"mcpDisplayName":"FPGA Toolchain","mcpEnabled":true,"mcpName":"tri_fpga","mode":"job","namespace":"forge","sideEffects":["hardware","filesystem"],"stability":"experimental"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/fpga tri fpga fpga toolchain via forge v2.0 (native zig) fpga toolchain via forge v2.0 (native zig)","sha256":"cd2e83756f6d11ed08e29c26a1c145b8384e56b7b3dd9c2e39e815b739c7190a","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/fpga.t27","summary":{"en":"FPGA toolchain via FORGE v2.0 (native Zig)","ru":"FPGA: синтез, прошивка и проверка."},"typecheckOk":true,"variant":"registry command fpga (cli_namespace forge)","whenToUse":"FPGA toolchain via FORGE v2.0 (native Zig)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; Text to analyze","name":""},{"about":"string, optional; Language system","name":""}],"collidesWith":null,"command":"tri gematria","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Gematria word value calculator","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, required; Text to analyze",": string, optional; Language system"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri gematria","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri gematria hello"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/gematria","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Gematria","MCP_ENABLED":true,"MCP_NAME":"tri_gematria","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/gematria","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command gematria (cli_namespace core)","WHEN_TO_USE":"Gematria word value calculator","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/gematria","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_gematria","name":{"en":"tri gematria"},"qualifiedId":"gHashTag/trinity:tri/gematria","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri gematria hello"],"jobTimeout":300,"mcpDisplayName":"Gematria","mcpEnabled":true,"mcpName":"tri_gematria","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/gematria tri gematria gematria word value calculator gematria word value calculator","sha256":"ef97c85a18e66c8236579ad970aa519e61b85deb9c2094b7ae5dad85e7d1a767","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/gematria.t27","summary":{"en":"Gematria word value calculator","ru":"Гематрия: числовое значение текста."},"typecheckOk":true,"variant":"registry command gematria (cli_namespace core)","whenToUse":"Gematria word value calculator","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; proposals, vote, treasury, rewards","name":""}],"collidesWith":null,"command":"tri govern","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred governance","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; proposals, vote, treasury, rewards"],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri govern","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/govern","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Governance System","MCP_ENABLED":true,"MCP_NAME":"tri_govern","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/govern","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command govern (cli_namespace core)","WHEN_TO_USE":"Sacred governance","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/govern","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_govern","name":{"en":"tri govern"},"qualifiedId":"gHashTag/trinity:tri/govern","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Governance System","mcpEnabled":true,"mcpName":"tri_govern","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/govern tri govern sacred governance sacred governance","sha256":"b354d78a042da1a057338c5bd4bd2e9426ab6540e4b0b24c959782d3793e1538","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/govern.t27","summary":{"en":"Sacred governance","ru":"Управление роем."},"typecheckOk":true,"variant":"registry command govern (cli_namespace core)","whenToUse":"Sacred governance","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri hardware","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Hardware deployment \\u2014 deploy, status, stop nodes","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri hardware","ENABLED":true,"ENTRY":"","EXAMPLES":["tri hardware deploy","tri hardware status"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/hardware","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Hardware Info","MCP_ENABLED":true,"MCP_NAME":"tri_hardware_info","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/hardware","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri hardware` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command hardware (cli_namespace core)","WHEN_TO_USE":"Hardware deployment \\u2014 deploy, status, stop nodes","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/hardware","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_hardware","name":{"en":"tri hardware"},"qualifiedId":"gHashTag/trinity:tri/hardware","registry":{"aliases":[],"capabilities":[],"category":"depin","examples":["tri hardware deploy","tri hardware status"],"jobTimeout":300,"mcpDisplayName":"Hardware Info","mcpEnabled":true,"mcpName":"tri_hardware_info","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri hardware` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/hardware tri hardware hardware deployment \\u2014 deploy, status, stop nodes hardware deployment \\u2014 deploy, status, stop nodes","sha256":"1badc358e7b3bedcded55bfc6aba9c2ff976edde0c930e130560db5de6677787","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/hardware.t27","summary":{"en":"Hardware deployment \\u2014 deploy, status, stop nodes","ru":"Сведения об оборудовании."},"typecheckOk":true,"variant":"registry command hardware (cli_namespace core)","whenToUse":"Hardware deployment \\u2014 deploy, status, stop nodes","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; node, generate, verify, reputation","name":""}],"collidesWith":null,"command":"tri identity","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred identity","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; node, generate, verify, reputation"],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri identity","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/identity","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Sacred Identity","MCP_ENABLED":true,"MCP_NAME":"tri_identity","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/identity","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command identity (cli_namespace core)","WHEN_TO_USE":"Sacred identity","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/identity","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_identity","name":{"en":"tri identity"},"qualifiedId":"gHashTag/trinity:tri/identity","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Sacred Identity","mcpEnabled":true,"mcpName":"tri_identity","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/identity tri identity sacred identity sacred identity","sha256":"f9fa2056b186e23ed82410422f87a164d198a5d89ff00738b77659b99da9399e","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/identity.t27","summary":{"en":"Sacred identity","ru":"Сакральное тождество phi^2 + 1/phi^2 = 3."},"typecheckOk":true,"variant":"registry command identity (cli_namespace core)","whenToUse":"Sacred identity","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Lucas index","name":""}],"collidesWith":null,"command":"tri lucas","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Lucas numbers (L(2)=3=TRINITY)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, required; Lucas index"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri lucas","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri lucas 10","tri lucas 20"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/lucas","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Lucas Numbers","MCP_ENABLED":true,"MCP_NAME":"tri_lucas","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/lucas","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command lucas (cli_namespace core)","WHEN_TO_USE":"Lucas numbers (L(2)=3=TRINITY)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/lucas","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_lucas","name":{"en":"tri lucas"},"qualifiedId":"gHashTag/trinity:tri/lucas","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri lucas 10","tri lucas 20"],"jobTimeout":300,"mcpDisplayName":"Lucas Numbers","mcpEnabled":true,"mcpName":"tri_lucas","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/lucas tri lucas lucas numbers (l(2)=3=trinity) lucas numbers (l(2)=3=trinity)","sha256":"21a656adb73fbc5fa02c0ae82807e24666fe20c954806a21203ed54b742bb9e6","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/lucas.t27","summary":{"en":"Lucas numbers (L(2)=3=TRINITY)","ru":"Числа Люка."},"typecheckOk":true,"variant":"registry command lucas (cli_namespace core)","whenToUse":"Lucas numbers (L(2)=3=TRINITY)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri mesh","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Global mesh management \\u2014 status, topology, discovery","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri mesh","ENABLED":true,"ENTRY":"","EXAMPLES":["tri mesh status","tri mesh topology","tri mesh discover"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/mesh","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Mesh Status","MCP_ENABLED":true,"MCP_NAME":"tri_mesh_status","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/mesh","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri mesh` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command mesh (cli_namespace core)","WHEN_TO_USE":"Global mesh management \\u2014 status, topology, discovery","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/mesh","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_mesh","name":{"en":"tri mesh"},"qualifiedId":"gHashTag/trinity:tri/mesh","registry":{"aliases":[],"capabilities":[],"category":"depin","examples":["tri mesh status","tri mesh topology","tri mesh discover"],"jobTimeout":300,"mcpDisplayName":"Mesh Status","mcpEnabled":true,"mcpName":"tri_mesh_status","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri mesh` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/mesh tri mesh global mesh management \\u2014 status, topology, discovery global mesh management \\u2014 status, topology, discovery","sha256":"8a2aeb36832b43ec2112a770f943529481e4a7f3ccd52f7b4fdc62e7452978ed","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/mesh.t27","summary":{"en":"Global mesh management \\u2014 status, topology, discovery","ru":"Состояние mesh-сети."},"typecheckOk":true,"variant":"registry command mesh (cli_namespace core)","whenToUse":"Global mesh management \\u2014 status, topology, discovery","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; File to edit","name":""},{"about":"string, optional; Edit query","name":""}],"collidesWith":null,"command":"tri needle","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Structural editor core","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; File to edit",": string, optional; Edit query"],"CAPABILITIES":[],"CATEGORY":"dev","COLLIDES_WITH":"","COMMAND":"tri needle","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/needle","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Needle Editor","MCP_ENABLED":true,"MCP_NAME":"tri_needle","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/needle","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command needle (cli_namespace core)","WHEN_TO_USE":"Structural editor core","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/needle","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_needle","name":{"en":"tri needle"},"qualifiedId":"gHashTag/trinity:tri/needle","registry":{"aliases":[],"capabilities":[],"category":"dev","examples":[],"jobTimeout":300,"mcpDisplayName":"Needle Editor","mcpEnabled":true,"mcpName":"tri_needle","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/needle tri needle structural editor core structural editor core","sha256":"3058e555568a46d707c7eb6bde87b2611b7b3b35d0bc44cf39e69b7105c96836","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/needle.t27","summary":{"en":"Structural editor core","ru":"Needle: AST-редактирование кода."},"typecheckOk":true,"variant":"registry command needle (cli_namespace core)","whenToUse":"Structural editor core","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; File to check","name":""}],"collidesWith":null,"command":"tri needle-check","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Needle check","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["needle_check"],"ARGS":[": string, optional; File to check"],"CAPABILITIES":[],"CATEGORY":"dev","COLLIDES_WITH":"","COMMAND":"tri needle-check","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/needle-check","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Needle Check","MCP_ENABLED":true,"MCP_NAME":"tri_needle_check","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/needle-check","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command needle-check (cli_namespace core)","WHEN_TO_USE":"Needle check","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/needle-check","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_needle_check","name":{"en":"tri needle-check"},"qualifiedId":"gHashTag/trinity:tri/needle-check","registry":{"aliases":["needle_check"],"capabilities":[],"category":"dev","examples":[],"jobTimeout":300,"mcpDisplayName":"Needle Check","mcpEnabled":true,"mcpName":"tri_needle_check","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/needle-check tri needle-check needle check needle check","sha256":"689a89b90876fa9967656508d3791f3de1a47afe358cbf4d7ccf023fce1c32d5","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/needle-check.t27","summary":{"en":"Needle check","ru":"Needle: проверка качества кода."},"typecheckOk":true,"variant":"registry command needle-check (cli_namespace core)","whenToUse":"Needle check","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; Search pattern","name":""}],"collidesWith":null,"command":"tri needle-search","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Needle search","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["needle_search"],"ARGS":[": string, required; Search pattern"],"CAPABILITIES":[],"CATEGORY":"dev","COLLIDES_WITH":"","COMMAND":"tri needle-search","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/needle-search","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Needle Search","MCP_ENABLED":true,"MCP_NAME":"tri_needle_search","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/needle-search","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command needle-search (cli_namespace core)","WHEN_TO_USE":"Needle search","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/needle-search","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_needle_search","name":{"en":"tri needle-search"},"qualifiedId":"gHashTag/trinity:tri/needle-search","registry":{"aliases":["needle_search"],"capabilities":[],"category":"dev","examples":[],"jobTimeout":300,"mcpDisplayName":"Needle Search","mcpEnabled":true,"mcpName":"tri_needle_search","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/needle-search tri needle-search needle search needle search","sha256":"d596ee91ec23d39cb905e0ddc7dffc504c532952a2fb0fe7ed64438db707779c","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/needle-search.t27","summary":{"en":"Needle search","ru":"Needle: поиск по шаблону в коде."},"typecheckOk":true,"variant":"registry command needle-search (cli_namespace core)","whenToUse":"Needle search","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri omega","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Omega phase","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri omega","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/omega","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Omega Status","MCP_ENABLED":true,"MCP_NAME":"tri_omega_status","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/omega","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command omega (cli_namespace core)","WHEN_TO_USE":"Omega phase","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/omega","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_omega","name":{"en":"tri omega"},"qualifiedId":"gHashTag/trinity:tri/omega","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Omega Status","mcpEnabled":true,"mcpName":"tri_omega_status","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/omega tri omega omega phase omega phase","sha256":"e03bddbb9708c94b3c44f5a3b2aef4ac440d53c9328c75ae8b6c37fb9a21959f","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/omega.t27","summary":{"en":"Omega phase","ru":"Состояние Omega."},"typecheckOk":true,"variant":"registry command omega (cli_namespace core)","whenToUse":"Omega phase","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri particles","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Particle physics sacred formulas (49 constants from \\u03c6)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["particle","pdg"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri particles","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri particles","tri particles all","tri particles tier1","tri particles search alpha_s"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/particles","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Particle Physics Sacred","MCP_ENABLED":true,"MCP_NAME":"tri_particles","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/particles","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command particles (cli_namespace core)","WHEN_TO_USE":"Particle physics sacred formulas (49 constants from \\u03c6)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/particles","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_particles","name":{"en":"tri particles"},"qualifiedId":"gHashTag/trinity:tri/particles","registry":{"aliases":["particle","pdg"],"capabilities":[],"category":"science","examples":["tri particles","tri particles all","tri particles tier1","tri particles search alpha_s"],"jobTimeout":300,"mcpDisplayName":"Particle Physics Sacred","mcpEnabled":true,"mcpName":"tri_particles","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/particles tri particles particle physics sacred formulas (49 constants from \\u03c6) particle physics sacred formulas (49 constants from \\u03c6)","sha256":"de48a64950df41b2344a8bed9ad969eb6776456406b9c68c469cba8c13b3ac7e","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/particles.t27","summary":{"en":"Particle physics sacred formulas (49 constants from \\u03c6)","ru":"Физика частиц: константы и массы."},"typecheckOk":true,"variant":"registry command particles (cli_namespace core)","whenToUse":"Particle physics sacred formulas (49 constants from \\u03c6)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Power of phi","name":""}],"collidesWith":null,"command":"tri phi","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Compute \\u03c6\\u207f (golden ratio power)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, required; Power of phi"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri phi","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri phi 10","tri phi 100"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/phi","JOB_TIMEOUT":0,"KIND":"tool","MCP_DISPLAY_NAME":"Phi Power","MCP_ENABLED":true,"MCP_NAME":"tri_phi","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/phi","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command phi (cli_namespace core)","WHEN_TO_USE":"Compute \\u03c6\\u207f (golden ratio power)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/phi","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_phi","name":{"en":"tri phi"},"qualifiedId":"gHashTag/trinity:tri/phi","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri phi 10","tri phi 100"],"jobTimeout":0,"mcpDisplayName":"Phi Power","mcpEnabled":true,"mcpName":"tri_phi","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/phi tri phi compute \\u03c6\\u207f (golden ratio power) compute \\u03c6\\u207f (golden ratio power)","sha256":"293d2f0f3dd1ad97dcc7e6485a9285d91ba36deb71ec7520b80523877a2c8405","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/phi.t27","summary":{"en":"Compute \\u03c6\\u207f (golden ratio power)","ru":"Золотое сечение phi и его степени."},"typecheckOk":true,"variant":"registry command phi (cli_namespace core)","whenToUse":"Compute \\u03c6\\u207f (golden ratio power)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri quantum","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Quantum Trinity","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri quantum","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/quantum","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Quantum Constants","MCP_ENABLED":true,"MCP_NAME":"tri_quantum_constants","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/quantum","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command quantum (cli_namespace core)","WHEN_TO_USE":"Quantum Trinity","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/quantum","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_quantum","name":{"en":"tri quantum"},"qualifiedId":"gHashTag/trinity:tri/quantum","registry":{"aliases":[],"capabilities":[],"category":"science","examples":[],"jobTimeout":300,"mcpDisplayName":"Quantum Constants","mcpEnabled":true,"mcpName":"tri_quantum_constants","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/quantum tri quantum quantum trinity quantum trinity","sha256":"8d982321638e3fbde1a0a9ac40ad051614868d399025685f5b4d580ec86a1656","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/quantum.t27","summary":{"en":"Quantum Trinity","ru":"Квантовые константы."},"typecheckOk":true,"variant":"registry command quantum (cli_namespace core)","whenToUse":"Quantum Trinity","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri reputation","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Reputation system \\u2014 show node reputation, leaderboard","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["rep"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri reputation","ENABLED":true,"ENTRY":"","EXAMPLES":["tri reputation show","tri reputation leaderboard"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/reputation","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Reputation Leaderboard","MCP_ENABLED":true,"MCP_NAME":"tri_omega_reputation","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/reputation","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri reputation` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command reputation (cli_namespace core)","WHEN_TO_USE":"Reputation system \\u2014 show node reputation, leaderboard","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/reputation","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_reputation","name":{"en":"tri reputation"},"qualifiedId":"gHashTag/trinity:tri/reputation","registry":{"aliases":["rep"],"capabilities":[],"category":"depin","examples":["tri reputation show","tri reputation leaderboard"],"jobTimeout":300,"mcpDisplayName":"Reputation Leaderboard","mcpEnabled":true,"mcpName":"tri_omega_reputation","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri reputation` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/reputation tri reputation reputation system \\u2014 show node reputation, leaderboard reputation system \\u2014 show node reputation, leaderboard","sha256":"ce0352d36e43b44480a79b3333031e61f637feda0bd474b8af6b239364a030cb","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/reputation.t27","summary":{"en":"Reputation system \\u2014 show node reputation, leaderboard","ru":"Репутация узла Omega."},"typecheckOk":true,"variant":"registry command reputation (cli_namespace core)","whenToUse":"Reputation system \\u2014 show node reputation, leaderboard","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; Target constant (phi2_pi2, e_pi, etc.)","name":""},{"about":"integer, optional; Number of CORDIC stages","name":""},{"about":"integer, optional; Data width in bits","name":""},{"about":"string, optional; Output Verilog file","name":""}],"collidesWith":null,"command":"tri sacred-const","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred constants FPGA synthesis (0 DSP48)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["sacred_constants","sacred-fpga"],"ARGS":[": string, optional; Target constant (phi2_pi2, e_pi, etc.)",": integer, optional; Number of CORDIC stages",": integer, optional; Data width in bits",": string, optional; Output Verilog file"],"CAPABILITIES":["filesystem"],"CATEGORY":"advanced","COLLIDES_WITH":"","COMMAND":"tri sacred-const","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri sacred-const phi-arith","tri sacred-const cordic-sacred","tri sacred-const const-rom"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/sacred-const","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Sacred Constants FPGA","MCP_ENABLED":true,"MCP_NAME":"tri_sacred_const_fpga","MODE":"job","NAMESPACE":"forge","QUALIFIED_ID":"gHashTag/trinity:tri/sacred-const","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":["filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"experimental","VARIANT":"registry command sacred-const (cli_namespace forge)","WHEN_TO_USE":"Sacred constants FPGA synthesis (0 DSP48)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/sacred-const","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_sacred_const","name":{"en":"tri sacred-const"},"qualifiedId":"gHashTag/trinity:tri/sacred-const","registry":{"aliases":["sacred_constants","sacred-fpga"],"capabilities":["filesystem"],"category":"advanced","examples":["tri sacred-const phi-arith","tri sacred-const cordic-sacred","tri sacred-const const-rom"],"jobTimeout":300,"mcpDisplayName":"Sacred Constants FPGA","mcpEnabled":true,"mcpName":"tri_sacred_const_fpga","mode":"job","namespace":"forge","sideEffects":["filesystem"],"stability":"experimental"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/sacred-const tri sacred-const sacred constants fpga synthesis (0 dsp48) sacred constants fpga synthesis (0 dsp48)","sha256":"6adddc181a2303061a5805b40022f137ec1c1e53b8356733092a3e97182e4a3c","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/sacred-const.t27","summary":{"en":"Sacred constants FPGA synthesis (0 DSP48)","ru":"Сакральные константы для FPGA."},"typecheckOk":true,"variant":"registry command sacred-const (cli_namespace forge)","whenToUse":"Sacred constants FPGA synthesis (0 DSP48)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Number of spiral points","name":""}],"collidesWith":null,"command":"tri spiral","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"\\u03c6-spiral coordinates","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, required; Number of spiral points"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri spiral","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri spiral 10"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/spiral","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Phi Spiral","MCP_ENABLED":true,"MCP_NAME":"tri_spiral","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/spiral","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command spiral (cli_namespace core)","WHEN_TO_USE":"\\u03c6-spiral coordinates","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/spiral","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_spiral","name":{"en":"tri spiral"},"qualifiedId":"gHashTag/trinity:tri/spiral","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri spiral 10"],"jobTimeout":300,"mcpDisplayName":"Phi Spiral","mcpEnabled":true,"mcpName":"tri_spiral","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/spiral tri spiral \\u03c6-spiral coordinates \\u03c6-spiral coordinates","sha256":"d470286a2fffe65a4db790f6a3e2f869df079c8b225669a283becb0236677386","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/spiral.t27","summary":{"en":"\\u03c6-spiral coordinates","ru":"Золотая спираль: координаты точек."},"typecheckOk":true,"variant":"registry command spiral (cli_namespace core)","whenToUse":"\\u03c6-spiral coordinates","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; status, coordinator, agents, tasks, converge","name":""}],"collidesWith":null,"command":"tri swarm","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred swarm intelligence","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; status, coordinator, agents, tasks, converge"],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri swarm","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/swarm","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Swarm Intelligence","MCP_ENABLED":true,"MCP_NAME":"tri_swarm","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/swarm","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command swarm (cli_namespace core)","WHEN_TO_USE":"Sacred swarm intelligence","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/swarm","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_swarm","name":{"en":"tri swarm"},"qualifiedId":"gHashTag/trinity:tri/swarm","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Swarm Intelligence","mcpEnabled":true,"mcpName":"tri_swarm","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/swarm tri swarm sacred swarm intelligence sacred swarm intelligence","sha256":"7b4d45dc89ac177958625f180a55cc0564880cab1f2acb52e6123802096a272f","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/swarm.t27","summary":{"en":"Sacred swarm intelligence","ru":"Состояние роя агентов."},"typecheckOk":true,"variant":"registry command swarm (cli_namespace core)","whenToUse":"Sacred swarm intelligence","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; Path to file to test","name":""},{"about":"string, optional; Output test file path","name":""},{"about":"boolean, optional; Include coverage markers","name":""}],"collidesWith":"gHashTag/t27:tri/test","command":"tri test","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Generate comprehensive test suites","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, required; Path to file to test",": string, optional; Output test file path",": boolean, optional; Include coverage markers"],"CAPABILITIES":["filesystem"],"CATEGORY":"dev","COLLIDES_WITH":"gHashTag/t27:tri/test","COMMAND":"tri test","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri test src/vsa.zig","tri test src/math/commands.zig --output tests/math_test.zig","tri test src/crypto.zig --coverage"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/test","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Test Generator","MCP_ENABLED":true,"MCP_NAME":"tri_test","MODE":"job","NAMESPACE":"dev","QUALIFIED_ID":"gHashTag/trinity:tri/test","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":["filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command test (cli_namespace dev)","WHEN_TO_USE":"Generate comprehensive test suites","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/test","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_test","name":{"en":"tri test"},"qualifiedId":"gHashTag/trinity:tri/test","registry":{"aliases":[],"capabilities":["filesystem"],"category":"dev","examples":["tri test src/vsa.zig","tri test src/math/commands.zig --output tests/math_test.zig","tri test src/crypto.zig --coverage"],"jobTimeout":300,"mcpDisplayName":"Test Generator","mcpEnabled":true,"mcpName":"tri_test","mode":"job","namespace":"dev","sideEffects":["filesystem"],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/test tri test generate comprehensive test suites generate comprehensive test suites","sha256":"ac05a41e5d3f54a99466f848a89d6c13c12f300b3ff31994677cc9b4c429be34","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/test.t27","summary":{"en":"Generate comprehensive test suites","ru":"Запуск тестов Trinity."},"typecheckOk":true,"variant":"registry command test (cli_namespace dev)","whenToUse":"Generate comprehensive test suites","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri vsa","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Vector Symbolic Architecture operations","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["vector-symbolic"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri vsa","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri vsa bind alice bob","tri vsa similarity cat dog","tri vsa memory show stats"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/vsa","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"VSA Operations","MCP_ENABLED":true,"MCP_NAME":"tri_vsa_bind","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/vsa","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command vsa (cli_namespace core)","WHEN_TO_USE":"Vector Symbolic Architecture operations","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/vsa","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_vsa","name":{"en":"tri vsa"},"qualifiedId":"gHashTag/trinity:tri/vsa","registry":{"aliases":["vector-symbolic"],"capabilities":[],"category":"science","examples":["tri vsa bind alice bob","tri vsa similarity cat dog","tri vsa memory show stats"],"jobTimeout":300,"mcpDisplayName":"VSA Operations","mcpEnabled":true,"mcpName":"tri_vsa_bind","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/vsa tri vsa vector symbolic architecture operations vector symbolic architecture operations","sha256":"90a98d73cbabf43baef032e5a8522a1e6aaf22c3ad5e89bcb4a1f4389d9698d3","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/vsa.t27","summary":{"en":"Vector Symbolic Architecture operations","ru":"VSA: связывание векторов."},"typecheckOk":true,"variant":"registry command vsa (cli_namespace core)","whenToUse":"Vector Symbolic Architecture operations","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; Wallet address","name":"
"}],"collidesWith":null,"command":"tri wallet","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Wallet management \\u2014 connect, balance, claim rewards","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":["
: string, optional; Wallet address"],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri wallet","ENABLED":true,"ENTRY":"","EXAMPLES":["tri wallet connect metamask","tri wallet balance","tri wallet claim 50.0"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/wallet","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Wallet Balance","MCP_ENABLED":true,"MCP_NAME":"tri_wallet_balance","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/wallet","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri wallet` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command wallet (cli_namespace core)","WHEN_TO_USE":"Wallet management \\u2014 connect, balance, claim rewards","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/wallet","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_wallet","name":{"en":"tri wallet"},"qualifiedId":"gHashTag/trinity:tri/wallet","registry":{"aliases":[],"capabilities":[],"category":"depin","examples":["tri wallet connect metamask","tri wallet balance","tri wallet claim 50.0"],"jobTimeout":300,"mcpDisplayName":"Wallet Balance","mcpEnabled":true,"mcpName":"tri_wallet_balance","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri wallet` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/wallet tri wallet wallet management \\u2014 connect, balance, claim rewards wallet management \\u2014 connect, balance, claim rewards","sha256":"eb15c59465bc42b003a394b15261ba2da9101faba2459665e7ad9b3a8ca51f6a","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/wallet.t27","summary":{"en":"Wallet management \\u2014 connect, balance, claim rewards","ru":"Баланс кошелька DePIN."},"typecheckOk":true,"variant":"registry command wallet (cli_namespace core)","whenToUse":"Wallet management \\u2014 connect, balance, claim rewards","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":["GITBUTLER_REPO"],"external":true,"family":"mcp","fields":{"ABOUT":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["GITBUTLER_REPO"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/gitbutler","KIND":"tool","LAUNCH":"but mcp","QUALIFIED_ID":"gHashTag/t27:mcp/gitbutler","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"gitbutler","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/gitbutler","inSpecCorpus":false,"launch":"but mcp","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_gitbutler","name":{"en":"gitbutler"},"qualifiedId":"gHashTag/t27:mcp/gitbutler","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/gitbutler gitbutler external gitbutler mcp server launched as `but mcp`; the repository only registers it in .mcp.json.","server":"gitbutler","serverVersion":"","sha256":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/gitbutler.t27","summary":{"en":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ru":"Внешний MCP-сервер GitButler, запускаемый как `but mcp`; репозиторий лишь регистрирует его в .mcp.json."},"tools":[],"toolsNote":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","agents":[{"letter":"T","ok":true}],"config":"","discarded":0,"env":["INNGEST_SIGNING_KEY"],"external":true,"family":"mcp","fields":{"ABOUT":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ABOUT_SOURCE":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","AGENTS":["T"],"AGENTS_NOTE":"specs/agents/t.t27 TOOLS names mcp/inngest-dev: the Queen (Tau) holds the scheduler; a bee reaches it through the Queen's brief, not by its own registration.","CONFIG":"","ENABLED":true,"ENV":["INNGEST_SIGNING_KEY"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/inngest-dev","KIND":"tool","LAUNCH":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","QUALIFIED_ID":"gHashTag/t27:mcp/inngest-dev","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"inngest-dev","SERVER_VERSION":"1.0.0","SOURCE":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","TOOLS":["cancel_run","get_app","get_apps","get_event_runs","get_function","get_run","get_run_status","get_run_trace","grep_docs","health","invoke_function","invoke_function_sync","list_docs","list_function_runs","list_functions","list_runs","poll_run_status","read_doc","rerun","send_event"],"TOOLS_ABOUT":["Cancels an in-progress function run","Fetches details for a single app, including sync metadata and function count","Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","Lists function runs triggered by a specific event","Fetches function configuration and status details for a function within an app","Fetches the canonical run summary for a single function run","Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","Fetches the trace tree for a single function run","Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","Returns the health status of the API service","Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","List all available documentation categories and their document counts. No parameters required.","Lists runs for one function in the authenticated environment","Lists function configuration and status details for an app","Lists runs in the authenticated environment, optionally filtered by app and function IDs","Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","Creates a new run using the original run's triggering event data","Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID"],"TOOLS_INPUTS":["runId","appId","archived,cursor,limit","cursor,eventId,includeOutput,limit","appId,functionId","includeOutput,runId","runId","includeOutput,runId","pattern,limit","","appId,data,functionId,idempotencyKey","functionId,data,user,timeout","","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","appId,cursor,limit","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","runIds,timeout,pollInterval","path","fromStep,runId","name,data,user,eventIdSeed"],"TOOLS_NOTE":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","TRANSPORT":"http","WITNESS":"help-output"},"health":"ok","id":"mcp/inngest-dev","inSpecCorpus":false,"launch":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)"},"messages":["external package: tool list not in the repository"],"moduleName":"tool_mcp_inngest_dev","name":{"en":"inngest-dev"},"qualifiedId":"gHashTag/t27:mcp/inngest-dev","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/inngest-dev inngest-dev mcp face of the self-hosted inngest server (railway project 999) that runs the queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels. cancel_run cancels an in-progress function run get_app fetches details for a single app, including sync metadata and function count get_apps lists active apps in the authenticated environment. set archived to true to list archived apps instead. get_event_runs lists function runs triggered by a specific event get_function fetches function configuration and status details for a function within an app get_run fetches the canonical run summary for a single function run get_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run and get_run_trace for new integrations. parameters: get_run_trace fetches the trace tree for a single function run grep_docs search documentation using exact string matching (grep). useful for finding specific api names, error codes, or identifiers. parameters: pat health returns the health status of the api service invoke_function invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body invoke_function_sync deprecated compatibility tool retained for existing dev server integrations. use invoke_function for the shared asynchronous cloud and dev s list_docs list all available documentation categories and their document counts. no parameters required. list_function_runs lists runs for one function in the authenticated environment list_functions lists function configuration and status details for an app list_runs lists runs in the authenticated environment, optionally filtered by app and function ids poll_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run for new integrations. poll multiple function runs u read_doc read the full content of a specific documentation file. parameters: path (required string - the doc file path relative to docs directory) rerun creates a new run using the original run's triggering event data send_event deprecated compatibility tool retained for existing dev server integrations. send an event to the inngest dev server and return the event id t","server":"inngest-dev","serverVersion":"1.0.0","sha256":"a0aad75ce804fcc056130bab7bd9b40af7145467cb0f0b93ed1147a2c6b89f8e","skills":[],"source":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","specPath":"specs/tools/mcp/inngest-dev.t27","summary":{"en":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ru":"MCP-лицо самостоятельно размещённого сервера Inngest (проект Railway 999), который исполняет кроны и скиллы Королевы как функции приложения t27-queen; перечисляет приложения и функции, читает запуски и трассы, запускает, перезапускает и отменяет."},"tools":[{"about":"Cancels an in-progress function run","inputs":["runId"],"name":"cancel_run"},{"about":"Fetches details for a single app, including sync metadata and function count","inputs":["appId"],"name":"get_app"},{"about":"Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","inputs":["archived","cursor","limit"],"name":"get_apps"},{"about":"Lists function runs triggered by a specific event","inputs":["cursor","eventId","includeOutput","limit"],"name":"get_event_runs"},{"about":"Fetches function configuration and status details for a function within an app","inputs":["appId","functionId"],"name":"get_function"},{"about":"Fetches the canonical run summary for a single function run","inputs":["includeOutput","runId"],"name":"get_run"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","inputs":["runId"],"name":"get_run_status"},{"about":"Fetches the trace tree for a single function run","inputs":["includeOutput","runId"],"name":"get_run_trace"},{"about":"Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","inputs":["pattern","limit"],"name":"grep_docs"},{"about":"Returns the health status of the API service","inputs":[],"name":"health"},{"about":"Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","inputs":["appId","data","functionId","idempotencyKey"],"name":"invoke_function"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","inputs":["functionId","data","user","timeout"],"name":"invoke_function_sync"},{"about":"List all available documentation categories and their document counts. No parameters required.","inputs":[],"name":"list_docs"},{"about":"Lists runs for one function in the authenticated environment","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_function_runs"},{"about":"Lists function configuration and status details for an app","inputs":["appId","cursor","limit"],"name":"list_functions"},{"about":"Lists runs in the authenticated environment, optionally filtered by app and function IDs","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_runs"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","inputs":["runIds","timeout","pollInterval"],"name":"poll_run_status"},{"about":"Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","inputs":["path"],"name":"read_doc"},{"about":"Creates a new run using the original run's triggering event data","inputs":["fromStep","runId"],"name":"rerun"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID","inputs":["name","data","user","eventIdSeed"],"name":"send_event"}],"toolsNote":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","transport":"http","typecheckOk":true,"witness":"help-output"},{"aboutSource":"derived from the tool descriptions in tools/mcp/needle_mcp/server.zig","agents":[],"config":".claude-plugin/.mcp.json","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"Zig MCP server for AST-aware code editing (needle): structural search and replace, quality gates, preview.","ABOUT_SOURCE":"derived from the tool descriptions in tools/mcp/needle_mcp/server.zig","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".claude-plugin/.mcp.json","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/needle","KIND":"tool","LAUNCH":"/zig-out/bin/needle-mcp","QUALIFIED_ID":"gHashTag/trinity:mcp/needle","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"needle","SERVER_VERSION":"","SOURCE":"tools/mcp/needle_mcp/server.zig","TOOLS":["needle_structural_replace","needle_search","needle_quality_gates","needle_preview","needle_batch_edit","needle_autonomous_refactor"],"TOOLS_ABOUT":["Apply AST-aware code edit with Tier 0->1 fallback and safety gates","Search codebase for pattern matches with confidence scores","Run quality gates: parse check, AST analysis, violation detection","Preview edit diff without applying changes","Apply multiple edits in a single operation","Execute Ralph Loop: intent-aware refactoring using semantic search + HNSW + VSA validation"],"TOOLS_INPUTS":["","","","","",""],"TOOLS_NOTE":"Input schema keys were not extracted for this server (schemas are inline Zig literals); names and descriptions only. The .claude-plugin/.mcp.json command is an absolute path into a developer checkout; its home prefix is written as here (no home paths in specs).","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/needle","inSpecCorpus":false,"launch":"/zig-out/bin/needle-mcp","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.claude-plugin/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/tools/mcp/needle_mcp/server.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_needle","name":{"en":"needle"},"qualifiedId":"gHashTag/trinity:mcp/needle","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/needle needle zig mcp server for ast-aware code editing (needle): structural search and replace, quality gates, preview. needle_structural_replace apply ast-aware code edit with tier 0->1 fallback and safety gates needle_search search codebase for pattern matches with confidence scores needle_quality_gates run quality gates: parse check, ast analysis, violation detection needle_preview preview edit diff without applying changes needle_batch_edit apply multiple edits in a single operation needle_autonomous_refactor execute ralph loop: intent-aware refactoring using semantic search + hnsw + vsa validation","server":"needle","serverVersion":"","sha256":"e2bff492844bb71720dc0caa8615e6025c5bcbf68978e17da5e89ef661adb563","skills":[],"source":"tools/mcp/needle_mcp/server.zig","specPath":"specs/tools/mcp/needle.t27","summary":{"en":"Zig MCP server for AST-aware code editing (needle): structural search and replace, quality gates, preview.","ru":"MCP-сервер на Zig для AST-осознанного редактирования кода (needle): структурный поиск и замена, гейты качества, предпросмотр."},"tools":[{"about":"Apply AST-aware code edit with Tier 0->1 fallback and safety gates","inputs":[],"name":"needle_structural_replace"},{"about":"Search codebase for pattern matches with confidence scores","inputs":[],"name":"needle_search"},{"about":"Run quality gates: parse check, AST analysis, violation detection","inputs":[],"name":"needle_quality_gates"},{"about":"Preview edit diff without applying changes","inputs":[],"name":"needle_preview"},{"about":"Apply multiple edits in a single operation","inputs":[],"name":"needle_batch_edit"},{"about":"Execute Ralph Loop: intent-aware refactoring using semantic search + HNSW + VSA validation","inputs":[],"name":"needle_autonomous_refactor"}],"toolsNote":"Input schema keys were not extracted for this server (schemas are inline Zig literals); names and descriptions only. The .claude-plugin/.mcp.json command is an absolute path into a developer checkout; its home prefix is written as here (no home paths in specs).","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":["NEON_API_KEY"],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `neon` registered in .mcp.json; launched as `npx -y @neondatabase/mcp-server-neon start`.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["NEON_API_KEY"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/neon","KIND":"tool","LAUNCH":"npx -y @neondatabase/mcp-server-neon start","QUALIFIED_ID":"gHashTag/trinity:mcp/neon","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"neon","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/neon","inSpecCorpus":false,"launch":"npx -y @neondatabase/mcp-server-neon start","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_neon","name":{"en":"neon"},"qualifiedId":"gHashTag/trinity:mcp/neon","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/neon neon external mcp server `neon` registered in .mcp.json; launched as `npx -y @neondatabase/mcp-server-neon start`.","server":"neon","serverVersion":"","sha256":"7bf7cec4562d12aa0f4d9928b70cec5fd4db6ed6f35b52d2a9286f0f932eeb24","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/neon.t27","summary":{"en":"External MCP server `neon` registered in .mcp.json; launched as `npx -y @neondatabase/mcp-server-neon start`.","ru":"Внешний MCP-сервер `neon`, зарегистрированный в .mcp.json; запускается как `npx -y @neondatabase/mcp-server-neon start`."},"tools":[],"toolsNote":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".claude/mcp.json entry; no tool list in this repository","agents":[],"config":".claude/mcp.json","discarded":0,"env":["NOTEBOOKLM_STORAGE_STATE"],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ABOUT_SOURCE":".claude/mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".claude/mcp.json","ENABLED":true,"ENV":["NOTEBOOKLM_STORAGE_STATE"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/notebooklm","KIND":"tool","LAUNCH":"notebooklm-mcp --notebook-id auto","QUALIFIED_ID":"gHashTag/t27:mcp/notebooklm","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"notebooklm","SERVER_VERSION":"","SOURCE":".claude/mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external package, not in this repository.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/notebooklm","inSpecCorpus":false,"launch":"notebooklm-mcp --notebook-id auto","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_notebooklm","name":{"en":"notebooklm"},"qualifiedId":"gHashTag/t27:mcp/notebooklm","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/notebooklm notebooklm external mcp server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","server":"notebooklm","serverVersion":"","sha256":"93548d18109d7be76e3c43ea298c9db0a335044e2bbb820d23606859c9939bdb","skills":[],"source":".claude/mcp.json","specPath":"specs/tools/mcp/notebooklm.t27","summary":{"en":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ru":"Внешний MCP-сервер `notebooklm`, зарегистрированный в .claude/mcp.json; запускается как `notebooklm-mcp`."},"tools":[],"toolsNote":"Tool list lives in the external package, not in this repository.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":[],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `railway-mcp-server` registered in .mcp.json; launched as `npx -y @railway/mcp-server`.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":[],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/railway-mcp-server","KIND":"tool","LAUNCH":"npx -y @railway/mcp-server","QUALIFIED_ID":"gHashTag/trinity:mcp/railway-mcp-server","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"railway-mcp-server","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/railway-mcp-server","inSpecCorpus":false,"launch":"npx -y @railway/mcp-server","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_railway_mcp_server","name":{"en":"railway-mcp-server"},"qualifiedId":"gHashTag/trinity:mcp/railway-mcp-server","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/railway-mcp-server railway-mcp-server external mcp server `railway-mcp-server` registered in .mcp.json; launched as `npx -y @railway/mcp-server`.","server":"railway-mcp-server","serverVersion":"","sha256":"e0af68eb26c5b4f8f5ac5e45aa859a28337cce715e90122020fed881b81a9afd","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/railway-mcp-server.t27","summary":{"en":"External MCP server `railway-mcp-server` registered in .mcp.json; launched as `npx -y @railway/mcp-server`.","ru":"Внешний MCP-сервер `railway-mcp-server`, зарегистрированный в .mcp.json; запускается как `npx -y @railway/mcp-server`."},"tools":[],"toolsNote":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","agents":[],"config":".mcp.json","discarded":0,"env":["PROJECT_ROOT","ENFORCE_L1"],"external":false,"family":"mcp","fields":{"ABOUT":"MCP server over stdio that checks L1 TRACEABILITY (Closes #N) in commit messages and PR descriptions, generates compliant commit messages, validates branch names and serves the PHI LOOP stacked-branch template; resources expose the constitution and the L1 audit.","ABOUT_SOURCE":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["PROJECT_ROOT","ENFORCE_L1"],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/t27-traceability","KIND":"tool","LAUNCH":"node scripts/mcp-traceability-server.js","QUALIFIED_ID":"gHashTag/t27:mcp/t27-traceability","REPO":"gHashTag/t27","RESOURCES":["docs/T27-CONSTITUTION.md","docs/l1-traceability-audit.md"],"RESOURCES_ABOUT":["Constitutional laws including L1 TRACEABILITY","Audit report for L1 TRACEABILITY compliance"],"SCHEMA":2,"SERVER":"t27-traceability","SERVER_VERSION":"1.0.0","SOURCE":"scripts/mcp-traceability-server.js","TOOLS":["check_traceability","generate_commit_message","validate_branch_name","get_phi_loop_template"],"TOOLS_ABOUT":["Check if a commit message or PR description complies with L1 TRACEABILITY (Closes #N required)","Generate a compliant commit message for t27 including required L1 TRACEABILITY reference","Validate branch name follows t27 naming conventions","Get PHI LOOP stacked branch template for ring development"],"TOOLS_INPUTS":["message","type,scope,description,issueNumber,invariantLaws,body","branchName","ringNumber"],"TOOLS_NOTE":"","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/t27-traceability","inSpecCorpus":false,"launch":"node scripts/mcp-traceability-server.js","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/scripts/mcp-traceability-server.js"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_t27_traceability","name":{"en":"t27-traceability"},"qualifiedId":"gHashTag/t27:mcp/t27-traceability","repo":"gHashTag/t27","resources":[{"about":"Constitutional laws including L1 TRACEABILITY","path":"docs/T27-CONSTITUTION.md"},{"about":"Audit report for L1 TRACEABILITY compliance","path":"docs/l1-traceability-audit.md"}],"schema":2,"searchText":"mcp/t27-traceability t27-traceability mcp server over stdio that checks l1 traceability (closes #n) in commit messages and pr descriptions, generates compliant commit messages, validates branch names and serves the phi loop stacked-branch template; resources expose the constitution and the l1 audit. check_traceability check if a commit message or pr description complies with l1 traceability (closes #n required) generate_commit_message generate a compliant commit message for t27 including required l1 traceability reference validate_branch_name validate branch name follows t27 naming conventions get_phi_loop_template get phi loop stacked branch template for ring development","server":"t27-traceability","serverVersion":"1.0.0","sha256":"2496a572dc04d4f7e615f0d235fd6cda542d1a10caf6abc91ee4ef3a3e36da1e","skills":[],"source":"scripts/mcp-traceability-server.js","specPath":"specs/tools/mcp/t27-traceability.t27","summary":{"en":"MCP server over stdio that checks L1 TRACEABILITY (Closes #N) in commit messages and PR descriptions, generates compliant commit messages, validates branch names and serves the PHI LOOP stacked-branch template; resources expose the constitution and the L1 audit.","ru":"MCP-сервер по stdio, проверяющий L1 TRACEABILITY (Closes #N) в сообщениях коммитов и описаниях PR, генерирующий соответствующие сообщения коммитов, валидирующий имена веток и отдающий шаблон стековых веток PHI LOOP; ресурсы открывают конституцию и аудит L1."},"tools":[{"about":"Check if a commit message or PR description complies with L1 TRACEABILITY (Closes #N required)","inputs":["message"],"name":"check_traceability"},{"about":"Generate a compliant commit message for t27 including required L1 TRACEABILITY reference","inputs":["type","scope","description","issueNumber","invariantLaws","body"],"name":"generate_commit_message"},{"about":"Validate branch name follows t27 naming conventions","inputs":["branchName"],"name":"validate_branch_name"},{"about":"Get PHI LOOP stacked branch template for ring development","inputs":["ringNumber"],"name":"get_phi_loop_template"}],"toolsNote":"","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","agents":[],"config":"","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ABOUT_SOURCE":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":"","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-mcp","KIND":"tool","LAUNCH":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","QUALIFIED_ID":"gHashTag/t27:mcp/tri-mcp","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-mcp","SERVER_VERSION":"0.1.0","SOURCE":"cli/tri-mcp/src/main.rs","TOOLS":["tri_status","tri_skill_begin","tri_skill_end","tri_cell_checkpoint","tri_cell_seal","tri_gen","tri_test","tri_verdict","tri_experience_save","tri_health"],"TOOLS_ABOUT":["Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","Begins a new PHI LOOP skill session bound to an issue.","Ends the active PHI LOOP skill session.","Records a checkpoint step in the active cell.","Seals the active cell by computing a SHA-256 hash of its checkpoint history.","Generates backends from a .t27 spec file using t27c.","Runs tests for a .t27 spec file using t27c.","Checks for toxic regressions by analyzing swarm health metrics.","Saves an experience episode to the akashic log.","Returns queen and swarm health status from .trinity state."],"TOOLS_INPUTS":["","issue,description","","step","","spec_path","spec_path","","episode_type,summary,ring",""],"TOOLS_NOTE":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-mcp","inSpecCorpus":false,"launch":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri-mcp/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_mcp","name":{"en":"tri-mcp"},"qualifiedId":"gHashTag/t27:mcp/tri-mcp","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-mcp tri-mcp rust mcp server exposing the phi loop tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health. tri_status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. tri_skill_begin begins a new phi loop skill session bound to an issue. tri_skill_end ends the active phi loop skill session. tri_cell_checkpoint records a checkpoint step in the active cell. tri_cell_seal seals the active cell by computing a sha-256 hash of its checkpoint history. tri_gen generates backends from a .t27 spec file using t27c. tri_test runs tests for a .t27 spec file using t27c. tri_verdict checks for toxic regressions by analyzing swarm health metrics. tri_experience_save saves an experience episode to the akashic log. tri_health returns queen and swarm health status from .trinity state.","server":"tri-mcp","serverVersion":"0.1.0","sha256":"ae32961a90fd40b66ecab5b4d20fea7d20293038c00c728d191d211a9576986e","skills":[],"source":"cli/tri-mcp/src/main.rs","specPath":"specs/tools/mcp/tri-mcp.t27","summary":{"en":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ru":"MCP-сервер на Rust, открывающий команды tri PHI LOOP как инструменты: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health."},"tools":[{"about":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","inputs":[],"name":"tri_status"},{"about":"Begins a new PHI LOOP skill session bound to an issue.","inputs":["issue","description"],"name":"tri_skill_begin"},{"about":"Ends the active PHI LOOP skill session.","inputs":[],"name":"tri_skill_end"},{"about":"Records a checkpoint step in the active cell.","inputs":["step"],"name":"tri_cell_checkpoint"},{"about":"Seals the active cell by computing a SHA-256 hash of its checkpoint history.","inputs":[],"name":"tri_cell_seal"},{"about":"Generates backends from a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_gen"},{"about":"Runs tests for a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_test"},{"about":"Checks for toxic regressions by analyzing swarm health metrics.","inputs":[],"name":"tri_verdict"},{"about":"Saves an experience episode to the akashic log.","inputs":["episode_type","summary","ring"],"name":"tri_experience_save"},{"about":"Returns queen and swarm health status from .trinity state.","inputs":[],"name":"tri_health"}],"toolsNote":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"manifest.json description","agents":[],"config":".claude/mcp/tri-ssot/manifest.json","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ABOUT_SOURCE":"manifest.json description","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".claude/mcp/tri-ssot/manifest.json","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-ssot","KIND":"tool","LAUNCH":"python3 -m contrib.backend.github.mcp_server","QUALIFIED_ID":"gHashTag/t27:mcp/tri-ssot","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-ssot","SERVER_VERSION":"1.0.0","SOURCE":".claude/mcp/tri-ssot/manifest.json","TOOLS":["tri_issue","tri_pr","tri_docs","tri_sync","tri_search"],"TOOLS_ABOUT":["GitHub Issue management: create, update, list, close","GitHub PR management: create, merge, close, get status","Documentation management: upload to NotebookLM, sync, query","Unified sync: sync all entities (issues, prs, docs) with NotebookLM","Unified search across GitHub Issues, PRs, NotebookLM docs"],"TOOLS_INPUTS":["action,title,body,labels,issue_id,state","action,title,body,pr_id,issue_id","action,file_path,title","scope","query"],"TOOLS_NOTE":"The manifest names python3 -m contrib.backend.github.mcp_server, but the t27 tree at this commit has no contrib/backend/github/mcp_server.py (git ls-tree); the tool list is taken from the manifest alone (declared, not executed).","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-ssot","inSpecCorpus":false,"launch":"python3 -m contrib.backend.github.mcp_server","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_ssot","name":{"en":"tri-ssot"},"qualifiedId":"gHashTag/t27:mcp/tri-ssot","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-ssot tri-ssot ssot integration for t27: github issues + prs + documentation -> notebooklm tri_issue github issue management: create, update, list, close tri_pr github pr management: create, merge, close, get status tri_docs documentation management: upload to notebooklm, sync, query tri_sync unified sync: sync all entities (issues, prs, docs) with notebooklm tri_search unified search across github issues, prs, notebooklm docs","server":"tri-ssot","serverVersion":"1.0.0","sha256":"c5f2218c27d16037026e392844aee9dff023506272d7eb2ecae5c323be2994de","skills":[],"source":".claude/mcp/tri-ssot/manifest.json","specPath":"specs/tools/mcp/tri-ssot.t27","summary":{"en":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ru":"Интеграция SSOT для t27: GitHub Issues + PR + документация -> NotebookLM."},"tools":[{"about":"GitHub Issue management: create, update, list, close","inputs":["action","title","body","labels","issue_id","state"],"name":"tri_issue"},{"about":"GitHub PR management: create, merge, close, get status","inputs":["action","title","body","pr_id","issue_id"],"name":"tri_pr"},{"about":"Documentation management: upload to NotebookLM, sync, query","inputs":["action","file_path","title"],"name":"tri_docs"},{"about":"Unified sync: sync all entities (issues, prs, docs) with NotebookLM","inputs":["scope"],"name":"tri_sync"},{"about":"Unified search across GitHub Issues, PRs, NotebookLM docs","inputs":["query"],"name":"tri_search"}],"toolsNote":"The manifest names python3 -m contrib.backend.github.mcp_server, but the t27 tree at this commit has no contrib/backend/github/mcp_server.py (git ls-tree); the tool list is taken from the manifest alone (declared, not executed).","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from tools/mcp/trinity_mcp/server.zig writeToolsList and .claude/rules/mcp-servers.md","agents":[],"config":".mcp.json","discarded":0,"env":["TRINITY_MCP_PORT"],"external":false,"family":"mcp","fields":{"ABOUT":"Zig MCP server (JSON-RPC over stdio, Content-Length framing) that exposes the tri pipeline, Golden Chain links, swarm, cloud/farm, FPGA, doctor, job, issue, deploy, experience, oracle and needle tools; the static list in writeToolsList plus cell-generated tools loaded at runtime.","ABOUT_SOURCE":"derived from tools/mcp/trinity_mcp/server.zig writeToolsList and .claude/rules/mcp-servers.md","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["TRINITY_MCP_PORT"],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/trinity","KIND":"tool","LAUNCH":"/data/trinity/zig-out/bin/trinity-mcp","QUALIFIED_ID":"gHashTag/trinity:mcp/trinity","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"trinity","SERVER_VERSION":"","SOURCE":"tools/mcp/trinity_mcp/server.zig","TOOLS":["tri_execute","tri_code","tri_gen","tri_spec_create","tri_decompose","tri_plan","tri_verify","tri_bench","tri_verdict","tri_test","tri_test_run","tri_fix","tri_explain","tri_refactor","tri_doc","tri_reason","tri_status","tri_diff","tri_log","tri_commit","needle_structural_replace","needle_search","needle_quality_gates","needle_preview","needle_batch_edit","needle_graph_build","needle_graph_refactor","needle_graph_extract","needle_graph_visualize","needle_graph_affected","needle_graph_vsa_search","needle_semantic_replace","needle_vsa_index","needle_safe_cross_refactor","needle_vsa_rule_apply","needle_cross_preview","needle_rollback_all","needle_omega_init","needle_omega_analyze","needle_omega_execute","needle_omega_detect","needle_omega_status","needle_safety_gates_run","needle_atomic_refactor","needle_parse_check","needle_compile_check","tri_constants","tri_phi","tri_fib","tri_lucas","tri_spiral","tri_chat","tri_loop_decision","tri_pipeline","tri_omega_awaken","tri_os_boot","tri_tvc_demo","tri_tvc_stats","tri_chem_periodic","tri_chem_element","tri_chem_mass","tri_chem_moles","tri_bio_dna","tri_bio_codon","tri_bio_protein","tri_quantum_constants","tri_quantum_states","tri_bell_states","tri_formula","swarm_status","swarm_agents","swarm_register","swarm_heartbeat","swarm_task_get","swarm_task_add","swarm_task_cancel","swarm_tasks","swarm_pause","swarm_resume","swarm_assign","swarm_github_sync","swarm_github_on_start","swarm_github_on_complete","swarm_github_on_fail","oracle_start","oracle_stop","oracle_status","tri_train_status","tri_train_diagnose","tri_train_loss_curve","tri_train_recommend","tri_train_checkpoint","cloud_spawn","cloud_kill","cloud_list","cloud_status","cloud_logs","cloud_spawn_all","cloud_cleanup","cloud_history","cloud_api_check","cloud_redeploy","cloud_diagnose","cloud_issue_create","cloud_farm","cloud_farm_sync","cloud_farm_capacity","cloud_farm_rebalance","farm_evolve_health","farm_evolve_notify","farm_evolve_watch","cloud_train","cloud_train_batch","chain_cache","chain_baseline","chain_metrics","chain_patterns","chain_tree","chain_check_spec","chain_spec","chain_codegen","chain_analyze","chain_test","chain_bench","chain_fix","chain_bench_ext","chain_bench_theory","chain_delta","chain_optimize","chain_docs","chain_verdict","chain_git","chain_loop","chain_deploy","chain_evolve","chain_self_ref","chain_fpga_test","chain_research","chain_lint_spec","chain_list","cloud_decompose","tri_notify","fpga_uart_scan","fpga_uart_ping","fpga_uart_send","doctor_status","doctor_scan","doctor_report","doctor_plan","doctor_heal","job_start","job_status","job_logs","job_list","job_cancel","job_artifacts","issue_list","issue_view","issue_create","issue_comment","issue_close","issue_assign","issue_decompose","deploy_status","deploy_logs","deploy_vars","deploy_start","deploy_stop","experience_save","experience_recall","experience_mistakes","patent_status","patent_analysis","depin_status","depin_nodes","depin_fitness","research_query","experiment_list","experiment_compare","chimera_run","ouroboros_status","ouroboros_run","self_test","self_health","context_info","context_load","faculty_status","mu_status","mu_patterns","zenodo_status","tri_analyze","tri_clean","tri_fmt","tri_stats","tri_lint","tri_search","tri_metrics","tri_trace","tri_eval","farm_status","farm_idle","farm_recycle","farm_fill","farm_accounts","farm_wave_spawn","fpga_synth","fpga_status","fpga_build","fpga_verify","fpga_flash"],"TOOLS_ABOUT":["Universal executor -- run ANY tri command with automatic needle check","Generate code with typing effect","Compile VIBEE spec to Zig/Verilog","Create new .tri specification template","Break task into sub-tasks (Golden Chain Link 4)","Generate implementation plan (Golden Chain Link 5)","Run tests + benchmarks (Links 7-11)","Run performance benchmarks","Generate toxic verdict (Link 14)","Generate tests for code","Run specific test suite","Detect and fix bugs","Explain code or concept","Suggest refactoring","Generate documentation","Chain-of-thought reasoning","Git status --short","Git diff","Git log --oneline","Git add -A && commit","AST-aware code edit with Tier 0->1 fallback","Search codebase for pattern matches","Run quality gates: parse check, AST analysis","Preview edit diff without applying","Apply multiple edits in one operation","Build complete call graph with VSA embeddings for project","Rename symbol across entire project with semantic awareness","Extract function/method from code block","Generate graph visualization (DOT/JSON) with VSA clustering","Find all files affected by symbol change (with semantic impact)","Search for semantically similar symbols by code or intent","Replace code by semantic meaning (not just pattern)","Build semantic VSA index for codebase","Safe cross-file semantic refactor with VSA rules and 100% rollback","Apply VSA rules to validate proposed refactor","Preview cross-file refactor impact with safety assessment","Rollback all changes from failed refactor","Initialize Omega autonomous agent for project","Omega analyzes codebase and suggests improvements","Execute refactor plan with full autonomy","Auto-detect code improvements and optimizations","Get Omega agent status and health","Run all safety gates on a file (Phase 1: parse/compile/test)","Apply atomic refactor with 100% rollback guarantee (Phase 1)","Parse check using Zig AST parser (Phase 1)","Compile check using zig build (Phase 1)","Show sacred constants (phi, pi, e, mu, chi, sigma, epsilon...)","Compute phi^n (golden ratio power)","Fibonacci with BigInt","Lucas L(n) -- L(2)=3=TRINITY","phi-spiral coordinates","Interactive chat (vision + voice + tools)","Loop decision: CONTINUE/EXIT (Link 17)","Execute 26-link Golden Chain pipeline","Awaken Omega autonomous agent","Temporal Trinity OS boot","Run TVC chat demo","Show TVC corpus statistics","List periodic table elements by category","Look up element by symbol or atomic number","Calculate molar mass of chemical formula","Calculate moles, molecules, atoms from mass","Analyze DNA sequence (GC content, composition)","Look up RNA codon to amino acid","Analyze protein sequence (mass, composition)","Show quantum physics constants (h, hbar, alpha)","Show quantum basis states and phi-state","Show four Bell entangled states","Evaluate V = n * 3^k * pi^m * phi^p * e^q","Get Ralph Agent Swarm status summary (agents, tasks, counts)","List all registered swarm agents with status","Register a new agent in the swarm","Agent heartbeat with status, branch, task_id, commit_sha (circuit breaker)","Get next pending task for an agent (priority-ordered)","Add a new task to the swarm queue","Cancel and remove a task from the queue","List all tasks in the swarm queue","Pause all swarm agents (finish current tasks, no new assignments)","Resume all paused swarm agents","Create and assign a task to a specific agent","Convert GitHub issue to swarm task. Returns labels/actions for Go proxy.","Notify that agent started a GitHub-sourced task. Returns label swaps + comment.","Notify GitHub task completed. Returns labels, comment, close_issue.","Notify GitHub task failed. Returns labels + error comment.","Start Oracle Telegram watchdog thread (sends swarm status every N minutes)","Stop Oracle Telegram watchdog thread","Get Oracle watchdog status (running/stopped, messages sent, errors)","Get HSLM training status -- checkpoints, loss, anomalies, recommendation","Diagnose HSLM training anomalies (zero loss, phase transition, overfitting)","Get HSLM loss curve from checkpoint headers","Get phi-aware recommendation for next training action","List HSLM checkpoints with step, loss, PPL, size","Spawn a cloud agent container for a GitHub issue","Kill a cloud agent container","List all active cloud agent containers","Get cloud infrastructure status","Get cloud agent deployment logs","Spawn agents for all issues labeled agent:spawn","Remove inactive cloud agent entries","Get event history for a cloud agent","Test API key connectivity and model routing -- detects proxy returning wrong model","Reuse existing Railway service for a new issue number","Diagnose why an agent failed -- shows GitHub comments, JSONL events, PR status","Create a GitHub issue with agent:spawn label for auto-spawning","Railway multi-account farm dashboard -- shows all accounts with capacity and daily limits","Sync active service counts across all Railway accounts","Get farm capacity as JSON -- total slots, active services, daily remaining per account","Migrate services from overloaded to underloaded Railway accounts","Farm evolution health dashboard -- leaderboard, health_score 0-100, stagnation, ETA","Farm insight scan -- detect leader changes, plateaus, spikes, wave completion. Sends to Telegram unless dry-run","Single evolution sweep -- inject sacred children into free slots, auto-notify. Always --once","Spawn an HSLM training experiment on Railway farm","Spawn all 13 HSLM training experiments across Railway farm","Chain Link 0: TVC Gate -- search corpus, return cached or continue","Chain Link 1: Analyze previous version v(n-1)","Chain Link 2: Collect performance metrics","Chain Link 3: Research patterns and science (PAS)","Chain Link 4: Build technology dependency tree","Chain Link 5: VIBEE-first compliance check","Chain Link 6: Create .tri specifications","Chain Link 7: Generate Zig code from .tri specs","Chain Link 8: Sacred Intelligence code analysis","Chain Link 9: Run zig build test suite","Chain Link 10: CRITICAL -- Compare to baseline v(n-1)","Chain Link 11: SWE Agent error fixing","Chain Link 12: Compare to external tools (llama.cpp/vLLM)","Chain Link 13: Gap to theoretical maximum","Chain Link 14: Generate improvement delta report","Chain Link 15: Optimize if needed (optional)","Chain Link 16: Generate documentation with proofs","Chain Link 17: Critical self-assessment (toxic verdict)","Chain Link 18: Commit and push changes","Chain Link 19: Decide next iteration (continue/exit)","Chain Link 20: Auto-deploy to cloud","Chain Link 21: Pipeline analyzes itself (eternal self-evolution)","Chain Link 22: Pipeline improves itself (circular bootstrapping)","Chain Link 23: Camera-based LED verification for FPGA","Chain Link 24: Research-assisted error fixing via Perplexity","Chain Link 25: Validate .tri spec syntax before codegen","List all 26 Golden Chain links with roles and status","Decompose a GitHub issue into 5 role-based sub-issues (planner/coder/reviewer/tester/integrator)","Send/edit/pin Telegram messages via tri CLI","Scan for USB-UART serial devices (CH340/FTDI) connected to FPGA","PING/PONG test -- send 0x03, expect 0x83 from FPGA","Send raw hex bytes to FPGA via UART and print response","Get doctor health status -- one-line summary","Scan and classify all .zig files","Health score dashboard with emoji grades","Create migration queue for manual files","Regenerate manual files through pipeline","Start a background job","Get job status by ID","Get job logs by ID","List all background jobs","Cancel a running job","Get job artifacts by ID","List open GitHub issues","View a specific GitHub issue","Create a new GitHub issue","Add a comment to a GitHub issue","Close a GitHub issue","Assign a user to a GitHub issue","Decompose a GitHub issue into sub-tasks","Get deployment status","Get deployment logs","Get deployment environment variables","Start deployment","Stop deployment","Save an experience entry (key-value learning)","Recall an experience entry by key","List all recorded mistakes/anti-patterns","Get patent portfolio status","Get patent analysis and claims","Get DePIN node protocol status","List DePIN network nodes","Get DePIN node fitness scores","Research a topic via Perplexity-assisted search","List all HSLM training experiments","Compare two experiments","Run a chimera fused command (farm-cycle, train-cycle, etc.)","Get ouroboros self-evolution status and score","Run ouroboros self-evolution cycle","Run self-test suite","Get self-health check results","Get current context info (tokens, files, window)","Load additional context from a file path","Get Faculty Board status dashboard","Get MU agent status","List MU learned patterns","Get Zenodo publication status","Analyze codebase quality and metrics","Clean build artifacts and temp files","Format all Zig source files","Show project statistics (LOC, files, tests)","Run linter on source code","Search codebase for a query string","Get project metrics dashboard","Get execution trace","Evaluate expression or code snippet","Get training farm status overview","List idle farm workers","Recycle underperforming farm workers","Fill empty farm slots with new experiments","List all 8 Railway farm accounts and their service counts","Spawn a wave of training workers on a specific account","Run FPGA synthesis pipeline","Get FPGA hardware and synthesis status","Build FPGA bitstream","Verify FPGA bitstream against RTL","Flash bitstream to FPGA board"],"TOOLS_INPUTS":["command,args,auto_needle","prompt","spec","name","task","task","","suite","","file","pattern","file","target","file","file","prompt","","","count","message","file_path,pattern_query,replacement,safety_level,edit_mode","query,file_path,confidence_threshold","file_path,check_level","file_path,pattern_query,replacement","edits","root_dir,enable_vsa","symbol,new_name,semantic_aware,similarity_threshold,scope,preview","file,start_line,end_line,function_name","format,focus,show_vsa","symbol,include_transitive,semantic_impact","query,top_k,min_similarity","intent,replacement_intent,file,preview","root_dir,embedding_dim","intent,new_intent,semantic_threshold,preview","transformation,rules_file","symbol,new_name,include_vsa","refactor_id","root_dir,autonomy_level","intent,auto_detect","plan_id,confirm","min_confidence,max_results","","file_path,gates","file_path,pattern_query,replacement,safety_gates","file_path","project_root","","n","n","n","n","message,stream","mode","task","mode","","","","category","element","formula","formula,mass","sequence","codon","sequence","","","","n,k,m,p,q","","","agent_id,hostname","agent_id,status,branch,task_id,commit_sha","agent_id","id,slug,description,priority","task_id","","","","agent_id,description","issue_number,title,labels","task_id,agent_id,branch","task_id,agent_id,result","task_id,agent_id,error","telegram_token,chat_id,interval_ms","","","","dir","dir","dir","dir","issue_number","issue_number","","","","","","issue_number","","service_id,issue_number","issue_number","title","","","","","","dry_run","sacred,dry_run","name","","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","","issue_number,template","text,chat_id,pin,edit_id","","device","device,hex_bytes","","","","","","command","id","id","","id","id","","number","title,body","number,body","number","number,user","number","","","","","","key,value","key","","","","","","","query","","a,b","name","","","","","","path","","","","","","","","","","query","","","","","","","","","account,count","","","","","bitstream"],"TOOLS_NOTE":"Static list parsed from writeToolsList (210 entries; 32 entries have an unbalanced trailing brace in the source literal and were parsed after adding or removing one). Cell-generated tools from data/cells/mcp_tools.json are appended at runtime and are not listed here. .trinity/mcp_schemas.json lists a different, shorter set (29 names) and is not used as the source.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/trinity","inSpecCorpus":false,"launch":"/data/trinity/zig-out/bin/trinity-mcp","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/tools/mcp/trinity_mcp/server.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_trinity","name":{"en":"trinity"},"qualifiedId":"gHashTag/trinity:mcp/trinity","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/trinity trinity zig mcp server (json-rpc over stdio, content-length framing) that exposes the tri pipeline, golden chain links, swarm, cloud/farm, fpga, doctor, job, issue, deploy, experience, oracle and needle tools; the static list in writetoolslist plus cell-generated tools loaded at runtime. tri_execute universal executor -- run any tri command with automatic needle check tri_code generate code with typing effect tri_gen compile vibee spec to zig/verilog tri_spec_create create new .tri specification template tri_decompose break task into sub-tasks (golden chain link 4) tri_plan generate implementation plan (golden chain link 5) tri_verify run tests + benchmarks (links 7-11) tri_bench run performance benchmarks tri_verdict generate toxic verdict (link 14) tri_test generate tests for code tri_test_run run specific test suite tri_fix detect and fix bugs tri_explain explain code or concept tri_refactor suggest refactoring tri_doc generate documentation tri_reason chain-of-thought reasoning tri_status git status --short tri_diff git diff tri_log git log --oneline tri_commit git add -a && commit needle_structural_replace ast-aware code edit with tier 0->1 fallback needle_search search codebase for pattern matches needle_quality_gates run quality gates: parse check, ast analysis needle_preview preview edit diff without applying needle_batch_edit apply multiple edits in one operation needle_graph_build build complete call graph with vsa embeddings for project needle_graph_refactor rename symbol across entire project with semantic awareness needle_graph_extract extract function/method from code block needle_graph_visualize generate graph visualization (dot/json) with vsa clustering needle_graph_affected find all files affected by symbol change (with semantic impact) needle_graph_vsa_search search for semantically similar symbols by code or intent needle_semantic_replace replace code by semantic meaning (not just pattern) needle_vsa_index build semantic vsa index for codebase needle_safe_cross_refactor safe cross-file semantic refactor with vsa rules and 100% rollback needle_vsa_rule_apply apply vsa rules to validate proposed refactor needle_cross_preview preview cross-file refactor impact with safety assessment needle_rollback_all rollback all changes from failed refactor needle_omega_init initialize omega autonomous agent for project needle_omega_analyze omega analyzes codebase and suggests improvements needle_omega_execute execute refactor plan with full autonomy needle_omega_detect auto-detect code improvements and optimizations needle_omega_status get omega agent status and health needle_safety_gates_run run all safety gates on a file (phase 1: parse/compile/test) needle_atomic_refactor apply atomic refactor with 100% rollback guarantee (phase 1) needle_parse_check parse check using zig ast parser (phase 1) needle_compile_check compile check using zig build (phase 1) tri_constants show sacred constants (phi, pi, e, mu, chi, sigma, epsilon...) tri_phi compute phi^n (golden ratio power) tri_fib fibonacci with bigint tri_lucas lucas l(n) -- l(2)=3=trinity tri_spiral phi-spiral coordinates tri_chat interactive chat (vision + voice + tools) tri_loop_decision loop decision: continue/exit (link 17) tri_pipeline execute 26-link golden chain pipeline tri_omega_awaken awaken omega autonomous agent tri_os_boot temporal trinity os boot tri_tvc_demo run tvc chat demo tri_tvc_stats show tvc corpus statistics tri_chem_periodic list periodic table elements by category tri_chem_element look up element by symbol or atomic number tri_chem_mass calculate molar mass of chemical formula tri_chem_moles calculate moles, molecules, atoms from mass tri_bio_dna analyze dna sequence (gc content, composition) tri_bio_codon look up rna codon to amino acid tri_bio_protein analyze protein sequence (mass, composition) tri_quantum_constants show quantum physics constants (h, hbar, alpha) tri_quantum_states show quantum basis states and phi-state tri_bell_states show four bell entangled states tri_formula evaluate v = n * 3^k * pi^m * phi^p * e^q swarm_status get ralph agent swarm status summary (agents, tasks, counts) swarm_agents list all registered swarm agents with status swarm_register register a new agent in the swarm swarm_heartbeat agent heartbeat with status, branch, task_id, commit_sha (circuit breaker) swarm_task_get get next pending task for an agent (priority-ordered) swarm_task_add add a new task to the swarm queue swarm_task_cancel cancel and remove a task from the queue swarm_tasks list all tasks in the swarm queue swarm_pause pause all swarm agents (finish current tasks, no new assignments) swarm_resume resume all paused swarm agents swarm_assign create and assign a task to a specific agent swarm_github_sync convert github issue to swarm task. returns labels/actions for go proxy. swarm_github_on_start notify that agent started a github-sourced task. returns label swaps + comment. swarm_github_on_complete notify github task completed. returns labels, comment, close_issue. swarm_github_on_fail notify github task failed. returns labels + error comment. oracle_start start oracle telegram watchdog thread (sends swarm status every n minutes) oracle_stop stop oracle telegram watchdog thread oracle_status get oracle watchdog status (running/stopped, messages sent, errors) tri_train_status get hslm training status -- checkpoints, loss, anomalies, recommendation tri_train_diagnose diagnose hslm training anomalies (zero loss, phase transition, overfitting) tri_train_loss_curve get hslm loss curve from checkpoint headers tri_train_recommend get phi-aware recommendation for next training action tri_train_checkpoint list hslm checkpoints with step, loss, ppl, size cloud_spawn spawn a cloud agent container for a github issue cloud_kill kill a cloud agent container cloud_list list all active cloud agent containers cloud_status get cloud infrastructure status cloud_logs get cloud agent deployment logs cloud_spawn_all spawn agents for all issues labeled agent:spawn cloud_cleanup remove inactive cloud agent entries cloud_history get event history for a cloud agent cloud_api_check test api key connectivity and model routing -- detects proxy returning wrong model cloud_redeploy reuse existing railway service for a new issue number cloud_diagnose diagnose why an agent failed -- shows github comments, jsonl events, pr status cloud_issue_create create a github issue with agent:spawn label for auto-spawning cloud_farm railway multi-account farm dashboard -- shows all accounts with capacity and daily limits cloud_farm_sync sync active service counts across all railway accounts cloud_farm_capacity get farm capacity as json -- total slots, active services, daily remaining per account cloud_farm_rebalance migrate services from overloaded to underloaded railway accounts farm_evolve_health farm evolution health dashboard -- leaderboard, health_score 0-100, stagnation, eta farm_evolve_notify farm insight scan -- detect leader changes, plateaus, spikes, wave completion. sends to telegram unless dry-run farm_evolve_watch single evolution sweep -- inject sacred children into free slots, auto-notify. always --once cloud_train spawn an hslm training experiment on railway farm cloud_train_batch spawn all 13 hslm training experiments across railway farm chain_cache chain link 0: tvc gate -- search corpus, return cached or continue chain_baseline chain link 1: analyze previous version v(n-1) chain_metrics chain link 2: collect performance metrics chain_patterns chain link 3: research patterns and science (pas) chain_tree chain link 4: build technology dependency tree chain_check_spec chain link 5: vibee-first compliance check chain_spec chain link 6: create .tri specifications chain_codegen chain link 7: generate zig code from .tri specs chain_analyze chain link 8: sacred intelligence code analysis chain_test chain link 9: run zig build test suite chain_bench chain link 10: critical -- compare to baseline v(n-1) chain_fix chain link 11: swe agent error fixing chain_bench_ext chain link 12: compare to external tools (llama.cpp/vllm) chain_bench_theory chain link 13: gap to theoretical maximum chain_delta chain link 14: generate improvement delta report chain_optimize chain link 15: optimize if needed (optional) chain_docs chain link 16: generate documentation with proofs chain_verdict chain link 17: critical self-assessment (toxic verdict) chain_git chain link 18: commit and push changes chain_loop chain link 19: decide next iteration (continue/exit) chain_deploy chain link 20: auto-deploy to cloud chain_evolve chain link 21: pipeline analyzes itself (eternal self-evolution) chain_self_ref chain link 22: pipeline improves itself (circular bootstrapping) chain_fpga_test chain link 23: camera-based led verification for fpga chain_research chain link 24: research-assisted error fixing via perplexity chain_lint_spec chain link 25: validate .tri spec syntax before codegen chain_list list all 26 golden chain links with roles and status cloud_decompose decompose a github issue into 5 role-based sub-issues (planner/coder/reviewer/tester/integrator) tri_notify send/edit/pin telegram messages via tri cli fpga_uart_scan scan for usb-uart serial devices (ch340/ftdi) connected to fpga fpga_uart_ping ping/pong test -- send 0x03, expect 0x83 from fpga fpga_uart_send send raw hex bytes to fpga via uart and print response doctor_status get doctor health status -- one-line summary doctor_scan scan and classify all .zig files doctor_report health score dashboard with emoji grades doctor_plan create migration queue for manual files doctor_heal regenerate manual files through pipeline job_start start a background job job_status get job status by id job_logs get job logs by id job_list list all background jobs job_cancel cancel a running job job_artifacts get job artifacts by id issue_list list open github issues issue_view view a specific github issue issue_create create a new github issue issue_comment add a comment to a github issue issue_close close a github issue issue_assign assign a user to a github issue issue_decompose decompose a github issue into sub-tasks deploy_status get deployment status deploy_logs get deployment logs deploy_vars get deployment environment variables deploy_start start deployment deploy_stop stop deployment experience_save save an experience entry (key-value learning) experience_recall recall an experience entry by key experience_mistakes list all recorded mistakes/anti-patterns patent_status get patent portfolio status patent_analysis get patent analysis and claims depin_status get depin node protocol status depin_nodes list depin network nodes depin_fitness get depin node fitness scores research_query research a topic via perplexity-assisted search experiment_list list all hslm training experiments experiment_compare compare two experiments chimera_run run a chimera fused command (farm-cycle, train-cycle, etc.) ouroboros_status get ouroboros self-evolution status and score ouroboros_run run ouroboros self-evolution cycle self_test run self-test suite self_health get self-health check results context_info get current context info (tokens, files, window) context_load load additional context from a file path faculty_status get faculty board status dashboard mu_status get mu agent status mu_patterns list mu learned patterns zenodo_status get zenodo publication status tri_analyze analyze codebase quality and metrics tri_clean clean build artifacts and temp files tri_fmt format all zig source files tri_stats show project statistics (loc, files, tests) tri_lint run linter on source code tri_search search codebase for a query string tri_metrics get project metrics dashboard tri_trace get execution trace tri_eval evaluate expression or code snippet farm_status get training farm status overview farm_idle list idle farm workers farm_recycle recycle underperforming farm workers farm_fill fill empty farm slots with new experiments farm_accounts list all 8 railway farm accounts and their service counts farm_wave_spawn spawn a wave of training workers on a specific account fpga_synth run fpga synthesis pipeline fpga_status get fpga hardware and synthesis status fpga_build build fpga bitstream fpga_verify verify fpga bitstream against rtl fpga_flash flash bitstream to fpga board","server":"trinity","serverVersion":"","sha256":"6d12259c8f9ce6b5c139b041f23558ef50c0f6a3edb22569fb4e2559f4ca3b54","skills":[],"source":"tools/mcp/trinity_mcp/server.zig","specPath":"specs/tools/mcp/trinity.t27","summary":{"en":"Zig MCP server (JSON-RPC over stdio, Content-Length framing) that exposes the tri pipeline, Golden Chain links, swarm, cloud/farm, FPGA, doctor, job, issue, deploy, experience, oracle and needle tools; the static list in writeToolsList plus cell-generated tools loaded at runtime.","ru":"MCP-сервер на Zig (JSON-RPC по stdio, кадрирование Content-Length), открывающий инструменты конвейера tri, звеньев Golden Chain, роя, облака/фермы, FPGA, doctor, job, issue, deploy, experience, oracle и needle; статический список writeToolsList плюс инструменты ячеек, подгружаемые во время выполнения."},"tools":[{"about":"Universal executor -- run ANY tri command with automatic needle check","inputs":["command","args","auto_needle"],"name":"tri_execute"},{"about":"Generate code with typing effect","inputs":["prompt"],"name":"tri_code"},{"about":"Compile VIBEE spec to Zig/Verilog","inputs":["spec"],"name":"tri_gen"},{"about":"Create new .tri specification template","inputs":["name"],"name":"tri_spec_create"},{"about":"Break task into sub-tasks (Golden Chain Link 4)","inputs":["task"],"name":"tri_decompose"},{"about":"Generate implementation plan (Golden Chain Link 5)","inputs":["task"],"name":"tri_plan"},{"about":"Run tests + benchmarks (Links 7-11)","inputs":[],"name":"tri_verify"},{"about":"Run performance benchmarks","inputs":["suite"],"name":"tri_bench"},{"about":"Generate toxic verdict (Link 14)","inputs":[],"name":"tri_verdict"},{"about":"Generate tests for code","inputs":["file"],"name":"tri_test"},{"about":"Run specific test suite","inputs":["pattern"],"name":"tri_test_run"},{"about":"Detect and fix bugs","inputs":["file"],"name":"tri_fix"},{"about":"Explain code or concept","inputs":["target"],"name":"tri_explain"},{"about":"Suggest refactoring","inputs":["file"],"name":"tri_refactor"},{"about":"Generate documentation","inputs":["file"],"name":"tri_doc"},{"about":"Chain-of-thought reasoning","inputs":["prompt"],"name":"tri_reason"},{"about":"Git status --short","inputs":[],"name":"tri_status"},{"about":"Git diff","inputs":[],"name":"tri_diff"},{"about":"Git log --oneline","inputs":["count"],"name":"tri_log"},{"about":"Git add -A && commit","inputs":["message"],"name":"tri_commit"},{"about":"AST-aware code edit with Tier 0->1 fallback","inputs":["file_path","pattern_query","replacement","safety_level","edit_mode"],"name":"needle_structural_replace"},{"about":"Search codebase for pattern matches","inputs":["query","file_path","confidence_threshold"],"name":"needle_search"},{"about":"Run quality gates: parse check, AST analysis","inputs":["file_path","check_level"],"name":"needle_quality_gates"},{"about":"Preview edit diff without applying","inputs":["file_path","pattern_query","replacement"],"name":"needle_preview"},{"about":"Apply multiple edits in one operation","inputs":["edits"],"name":"needle_batch_edit"},{"about":"Build complete call graph with VSA embeddings for project","inputs":["root_dir","enable_vsa"],"name":"needle_graph_build"},{"about":"Rename symbol across entire project with semantic awareness","inputs":["symbol","new_name","semantic_aware","similarity_threshold","scope","preview"],"name":"needle_graph_refactor"},{"about":"Extract function/method from code block","inputs":["file","start_line","end_line","function_name"],"name":"needle_graph_extract"},{"about":"Generate graph visualization (DOT/JSON) with VSA clustering","inputs":["format","focus","show_vsa"],"name":"needle_graph_visualize"},{"about":"Find all files affected by symbol change (with semantic impact)","inputs":["symbol","include_transitive","semantic_impact"],"name":"needle_graph_affected"},{"about":"Search for semantically similar symbols by code or intent","inputs":["query","top_k","min_similarity"],"name":"needle_graph_vsa_search"},{"about":"Replace code by semantic meaning (not just pattern)","inputs":["intent","replacement_intent","file","preview"],"name":"needle_semantic_replace"},{"about":"Build semantic VSA index for codebase","inputs":["root_dir","embedding_dim"],"name":"needle_vsa_index"},{"about":"Safe cross-file semantic refactor with VSA rules and 100% rollback","inputs":["intent","new_intent","semantic_threshold","preview"],"name":"needle_safe_cross_refactor"},{"about":"Apply VSA rules to validate proposed refactor","inputs":["transformation","rules_file"],"name":"needle_vsa_rule_apply"},{"about":"Preview cross-file refactor impact with safety assessment","inputs":["symbol","new_name","include_vsa"],"name":"needle_cross_preview"},{"about":"Rollback all changes from failed refactor","inputs":["refactor_id"],"name":"needle_rollback_all"},{"about":"Initialize Omega autonomous agent for project","inputs":["root_dir","autonomy_level"],"name":"needle_omega_init"},{"about":"Omega analyzes codebase and suggests improvements","inputs":["intent","auto_detect"],"name":"needle_omega_analyze"},{"about":"Execute refactor plan with full autonomy","inputs":["plan_id","confirm"],"name":"needle_omega_execute"},{"about":"Auto-detect code improvements and optimizations","inputs":["min_confidence","max_results"],"name":"needle_omega_detect"},{"about":"Get Omega agent status and health","inputs":[],"name":"needle_omega_status"},{"about":"Run all safety gates on a file (Phase 1: parse/compile/test)","inputs":["file_path","gates"],"name":"needle_safety_gates_run"},{"about":"Apply atomic refactor with 100% rollback guarantee (Phase 1)","inputs":["file_path","pattern_query","replacement","safety_gates"],"name":"needle_atomic_refactor"},{"about":"Parse check using Zig AST parser (Phase 1)","inputs":["file_path"],"name":"needle_parse_check"},{"about":"Compile check using zig build (Phase 1)","inputs":["project_root"],"name":"needle_compile_check"},{"about":"Show sacred constants (phi, pi, e, mu, chi, sigma, epsilon...)","inputs":[],"name":"tri_constants"},{"about":"Compute phi^n (golden ratio power)","inputs":["n"],"name":"tri_phi"},{"about":"Fibonacci with BigInt","inputs":["n"],"name":"tri_fib"},{"about":"Lucas L(n) -- L(2)=3=TRINITY","inputs":["n"],"name":"tri_lucas"},{"about":"phi-spiral coordinates","inputs":["n"],"name":"tri_spiral"},{"about":"Interactive chat (vision + voice + tools)","inputs":["message","stream"],"name":"tri_chat"},{"about":"Loop decision: CONTINUE/EXIT (Link 17)","inputs":["mode"],"name":"tri_loop_decision"},{"about":"Execute 26-link Golden Chain pipeline","inputs":["task"],"name":"tri_pipeline"},{"about":"Awaken Omega autonomous agent","inputs":["mode"],"name":"tri_omega_awaken"},{"about":"Temporal Trinity OS boot","inputs":[],"name":"tri_os_boot"},{"about":"Run TVC chat demo","inputs":[],"name":"tri_tvc_demo"},{"about":"Show TVC corpus statistics","inputs":[],"name":"tri_tvc_stats"},{"about":"List periodic table elements by category","inputs":["category"],"name":"tri_chem_periodic"},{"about":"Look up element by symbol or atomic number","inputs":["element"],"name":"tri_chem_element"},{"about":"Calculate molar mass of chemical formula","inputs":["formula"],"name":"tri_chem_mass"},{"about":"Calculate moles, molecules, atoms from mass","inputs":["formula","mass"],"name":"tri_chem_moles"},{"about":"Analyze DNA sequence (GC content, composition)","inputs":["sequence"],"name":"tri_bio_dna"},{"about":"Look up RNA codon to amino acid","inputs":["codon"],"name":"tri_bio_codon"},{"about":"Analyze protein sequence (mass, composition)","inputs":["sequence"],"name":"tri_bio_protein"},{"about":"Show quantum physics constants (h, hbar, alpha)","inputs":[],"name":"tri_quantum_constants"},{"about":"Show quantum basis states and phi-state","inputs":[],"name":"tri_quantum_states"},{"about":"Show four Bell entangled states","inputs":[],"name":"tri_bell_states"},{"about":"Evaluate V = n * 3^k * pi^m * phi^p * e^q","inputs":["n","k","m","p","q"],"name":"tri_formula"},{"about":"Get Ralph Agent Swarm status summary (agents, tasks, counts)","inputs":[],"name":"swarm_status"},{"about":"List all registered swarm agents with status","inputs":[],"name":"swarm_agents"},{"about":"Register a new agent in the swarm","inputs":["agent_id","hostname"],"name":"swarm_register"},{"about":"Agent heartbeat with status, branch, task_id, commit_sha (circuit breaker)","inputs":["agent_id","status","branch","task_id","commit_sha"],"name":"swarm_heartbeat"},{"about":"Get next pending task for an agent (priority-ordered)","inputs":["agent_id"],"name":"swarm_task_get"},{"about":"Add a new task to the swarm queue","inputs":["id","slug","description","priority"],"name":"swarm_task_add"},{"about":"Cancel and remove a task from the queue","inputs":["task_id"],"name":"swarm_task_cancel"},{"about":"List all tasks in the swarm queue","inputs":[],"name":"swarm_tasks"},{"about":"Pause all swarm agents (finish current tasks, no new assignments)","inputs":[],"name":"swarm_pause"},{"about":"Resume all paused swarm agents","inputs":[],"name":"swarm_resume"},{"about":"Create and assign a task to a specific agent","inputs":["agent_id","description"],"name":"swarm_assign"},{"about":"Convert GitHub issue to swarm task. Returns labels/actions for Go proxy.","inputs":["issue_number","title","labels"],"name":"swarm_github_sync"},{"about":"Notify that agent started a GitHub-sourced task. Returns label swaps + comment.","inputs":["task_id","agent_id","branch"],"name":"swarm_github_on_start"},{"about":"Notify GitHub task completed. Returns labels, comment, close_issue.","inputs":["task_id","agent_id","result"],"name":"swarm_github_on_complete"},{"about":"Notify GitHub task failed. Returns labels + error comment.","inputs":["task_id","agent_id","error"],"name":"swarm_github_on_fail"},{"about":"Start Oracle Telegram watchdog thread (sends swarm status every N minutes)","inputs":["telegram_token","chat_id","interval_ms"],"name":"oracle_start"},{"about":"Stop Oracle Telegram watchdog thread","inputs":[],"name":"oracle_stop"},{"about":"Get Oracle watchdog status (running/stopped, messages sent, errors)","inputs":[],"name":"oracle_status"},{"about":"Get HSLM training status -- checkpoints, loss, anomalies, recommendation","inputs":[],"name":"tri_train_status"},{"about":"Diagnose HSLM training anomalies (zero loss, phase transition, overfitting)","inputs":["dir"],"name":"tri_train_diagnose"},{"about":"Get HSLM loss curve from checkpoint headers","inputs":["dir"],"name":"tri_train_loss_curve"},{"about":"Get phi-aware recommendation for next training action","inputs":["dir"],"name":"tri_train_recommend"},{"about":"List HSLM checkpoints with step, loss, PPL, size","inputs":["dir"],"name":"tri_train_checkpoint"},{"about":"Spawn a cloud agent container for a GitHub issue","inputs":["issue_number"],"name":"cloud_spawn"},{"about":"Kill a cloud agent container","inputs":["issue_number"],"name":"cloud_kill"},{"about":"List all active cloud agent containers","inputs":[],"name":"cloud_list"},{"about":"Get cloud infrastructure status","inputs":[],"name":"cloud_status"},{"about":"Get cloud agent deployment logs","inputs":[],"name":"cloud_logs"},{"about":"Spawn agents for all issues labeled agent:spawn","inputs":[],"name":"cloud_spawn_all"},{"about":"Remove inactive cloud agent entries","inputs":[],"name":"cloud_cleanup"},{"about":"Get event history for a cloud agent","inputs":["issue_number"],"name":"cloud_history"},{"about":"Test API key connectivity and model routing -- detects proxy returning wrong model","inputs":[],"name":"cloud_api_check"},{"about":"Reuse existing Railway service for a new issue number","inputs":["service_id","issue_number"],"name":"cloud_redeploy"},{"about":"Diagnose why an agent failed -- shows GitHub comments, JSONL events, PR status","inputs":["issue_number"],"name":"cloud_diagnose"},{"about":"Create a GitHub issue with agent:spawn label for auto-spawning","inputs":["title"],"name":"cloud_issue_create"},{"about":"Railway multi-account farm dashboard -- shows all accounts with capacity and daily limits","inputs":[],"name":"cloud_farm"},{"about":"Sync active service counts across all Railway accounts","inputs":[],"name":"cloud_farm_sync"},{"about":"Get farm capacity as JSON -- total slots, active services, daily remaining per account","inputs":[],"name":"cloud_farm_capacity"},{"about":"Migrate services from overloaded to underloaded Railway accounts","inputs":[],"name":"cloud_farm_rebalance"},{"about":"Farm evolution health dashboard -- leaderboard, health_score 0-100, stagnation, ETA","inputs":[],"name":"farm_evolve_health"},{"about":"Farm insight scan -- detect leader changes, plateaus, spikes, wave completion. Sends to Telegram unless dry-run","inputs":["dry_run"],"name":"farm_evolve_notify"},{"about":"Single evolution sweep -- inject sacred children into free slots, auto-notify. Always --once","inputs":["sacred","dry_run"],"name":"farm_evolve_watch"},{"about":"Spawn an HSLM training experiment on Railway farm","inputs":["name"],"name":"cloud_train"},{"about":"Spawn all 13 HSLM training experiments across Railway farm","inputs":[],"name":"cloud_train_batch"},{"about":"Chain Link 0: TVC Gate -- search corpus, return cached or continue","inputs":["task"],"name":"chain_cache"},{"about":"Chain Link 1: Analyze previous version v(n-1)","inputs":["task"],"name":"chain_baseline"},{"about":"Chain Link 2: Collect performance metrics","inputs":["task"],"name":"chain_metrics"},{"about":"Chain Link 3: Research patterns and science (PAS)","inputs":["task"],"name":"chain_patterns"},{"about":"Chain Link 4: Build technology dependency tree","inputs":["task"],"name":"chain_tree"},{"about":"Chain Link 5: VIBEE-first compliance check","inputs":["task"],"name":"chain_check_spec"},{"about":"Chain Link 6: Create .tri specifications","inputs":["task"],"name":"chain_spec"},{"about":"Chain Link 7: Generate Zig code from .tri specs","inputs":["task"],"name":"chain_codegen"},{"about":"Chain Link 8: Sacred Intelligence code analysis","inputs":["task"],"name":"chain_analyze"},{"about":"Chain Link 9: Run zig build test suite","inputs":["task"],"name":"chain_test"},{"about":"Chain Link 10: CRITICAL -- Compare to baseline v(n-1)","inputs":["task"],"name":"chain_bench"},{"about":"Chain Link 11: SWE Agent error fixing","inputs":["task"],"name":"chain_fix"},{"about":"Chain Link 12: Compare to external tools (llama.cpp/vLLM)","inputs":["task"],"name":"chain_bench_ext"},{"about":"Chain Link 13: Gap to theoretical maximum","inputs":["task"],"name":"chain_bench_theory"},{"about":"Chain Link 14: Generate improvement delta report","inputs":["task"],"name":"chain_delta"},{"about":"Chain Link 15: Optimize if needed (optional)","inputs":["task"],"name":"chain_optimize"},{"about":"Chain Link 16: Generate documentation with proofs","inputs":["task"],"name":"chain_docs"},{"about":"Chain Link 17: Critical self-assessment (toxic verdict)","inputs":["task"],"name":"chain_verdict"},{"about":"Chain Link 18: Commit and push changes","inputs":["task"],"name":"chain_git"},{"about":"Chain Link 19: Decide next iteration (continue/exit)","inputs":["task"],"name":"chain_loop"},{"about":"Chain Link 20: Auto-deploy to cloud","inputs":["task"],"name":"chain_deploy"},{"about":"Chain Link 21: Pipeline analyzes itself (eternal self-evolution)","inputs":["task"],"name":"chain_evolve"},{"about":"Chain Link 22: Pipeline improves itself (circular bootstrapping)","inputs":["task"],"name":"chain_self_ref"},{"about":"Chain Link 23: Camera-based LED verification for FPGA","inputs":["task"],"name":"chain_fpga_test"},{"about":"Chain Link 24: Research-assisted error fixing via Perplexity","inputs":["task"],"name":"chain_research"},{"about":"Chain Link 25: Validate .tri spec syntax before codegen","inputs":["task"],"name":"chain_lint_spec"},{"about":"List all 26 Golden Chain links with roles and status","inputs":[],"name":"chain_list"},{"about":"Decompose a GitHub issue into 5 role-based sub-issues (planner/coder/reviewer/tester/integrator)","inputs":["issue_number","template"],"name":"cloud_decompose"},{"about":"Send/edit/pin Telegram messages via tri CLI","inputs":["text","chat_id","pin","edit_id"],"name":"tri_notify"},{"about":"Scan for USB-UART serial devices (CH340/FTDI) connected to FPGA","inputs":[],"name":"fpga_uart_scan"},{"about":"PING/PONG test -- send 0x03, expect 0x83 from FPGA","inputs":["device"],"name":"fpga_uart_ping"},{"about":"Send raw hex bytes to FPGA via UART and print response","inputs":["device","hex_bytes"],"name":"fpga_uart_send"},{"about":"Get doctor health status -- one-line summary","inputs":[],"name":"doctor_status"},{"about":"Scan and classify all .zig files","inputs":[],"name":"doctor_scan"},{"about":"Health score dashboard with emoji grades","inputs":[],"name":"doctor_report"},{"about":"Create migration queue for manual files","inputs":[],"name":"doctor_plan"},{"about":"Regenerate manual files through pipeline","inputs":[],"name":"doctor_heal"},{"about":"Start a background job","inputs":["command"],"name":"job_start"},{"about":"Get job status by ID","inputs":["id"],"name":"job_status"},{"about":"Get job logs by ID","inputs":["id"],"name":"job_logs"},{"about":"List all background jobs","inputs":[],"name":"job_list"},{"about":"Cancel a running job","inputs":["id"],"name":"job_cancel"},{"about":"Get job artifacts by ID","inputs":["id"],"name":"job_artifacts"},{"about":"List open GitHub issues","inputs":[],"name":"issue_list"},{"about":"View a specific GitHub issue","inputs":["number"],"name":"issue_view"},{"about":"Create a new GitHub issue","inputs":["title","body"],"name":"issue_create"},{"about":"Add a comment to a GitHub issue","inputs":["number","body"],"name":"issue_comment"},{"about":"Close a GitHub issue","inputs":["number"],"name":"issue_close"},{"about":"Assign a user to a GitHub issue","inputs":["number","user"],"name":"issue_assign"},{"about":"Decompose a GitHub issue into sub-tasks","inputs":["number"],"name":"issue_decompose"},{"about":"Get deployment status","inputs":[],"name":"deploy_status"},{"about":"Get deployment logs","inputs":[],"name":"deploy_logs"},{"about":"Get deployment environment variables","inputs":[],"name":"deploy_vars"},{"about":"Start deployment","inputs":[],"name":"deploy_start"},{"about":"Stop deployment","inputs":[],"name":"deploy_stop"},{"about":"Save an experience entry (key-value learning)","inputs":["key","value"],"name":"experience_save"},{"about":"Recall an experience entry by key","inputs":["key"],"name":"experience_recall"},{"about":"List all recorded mistakes/anti-patterns","inputs":[],"name":"experience_mistakes"},{"about":"Get patent portfolio status","inputs":[],"name":"patent_status"},{"about":"Get patent analysis and claims","inputs":[],"name":"patent_analysis"},{"about":"Get DePIN node protocol status","inputs":[],"name":"depin_status"},{"about":"List DePIN network nodes","inputs":[],"name":"depin_nodes"},{"about":"Get DePIN node fitness scores","inputs":[],"name":"depin_fitness"},{"about":"Research a topic via Perplexity-assisted search","inputs":["query"],"name":"research_query"},{"about":"List all HSLM training experiments","inputs":[],"name":"experiment_list"},{"about":"Compare two experiments","inputs":["a","b"],"name":"experiment_compare"},{"about":"Run a chimera fused command (farm-cycle, train-cycle, etc.)","inputs":["name"],"name":"chimera_run"},{"about":"Get ouroboros self-evolution status and score","inputs":[],"name":"ouroboros_status"},{"about":"Run ouroboros self-evolution cycle","inputs":[],"name":"ouroboros_run"},{"about":"Run self-test suite","inputs":[],"name":"self_test"},{"about":"Get self-health check results","inputs":[],"name":"self_health"},{"about":"Get current context info (tokens, files, window)","inputs":[],"name":"context_info"},{"about":"Load additional context from a file path","inputs":["path"],"name":"context_load"},{"about":"Get Faculty Board status dashboard","inputs":[],"name":"faculty_status"},{"about":"Get MU agent status","inputs":[],"name":"mu_status"},{"about":"List MU learned patterns","inputs":[],"name":"mu_patterns"},{"about":"Get Zenodo publication status","inputs":[],"name":"zenodo_status"},{"about":"Analyze codebase quality and metrics","inputs":[],"name":"tri_analyze"},{"about":"Clean build artifacts and temp files","inputs":[],"name":"tri_clean"},{"about":"Format all Zig source files","inputs":[],"name":"tri_fmt"},{"about":"Show project statistics (LOC, files, tests)","inputs":[],"name":"tri_stats"},{"about":"Run linter on source code","inputs":[],"name":"tri_lint"},{"about":"Search codebase for a query string","inputs":["query"],"name":"tri_search"},{"about":"Get project metrics dashboard","inputs":[],"name":"tri_metrics"},{"about":"Get execution trace","inputs":[],"name":"tri_trace"},{"about":"Evaluate expression or code snippet","inputs":[],"name":"tri_eval"},{"about":"Get training farm status overview","inputs":[],"name":"farm_status"},{"about":"List idle farm workers","inputs":[],"name":"farm_idle"},{"about":"Recycle underperforming farm workers","inputs":[],"name":"farm_recycle"},{"about":"Fill empty farm slots with new experiments","inputs":[],"name":"farm_fill"},{"about":"List all 8 Railway farm accounts and their service counts","inputs":[],"name":"farm_accounts"},{"about":"Spawn a wave of training workers on a specific account","inputs":["account","count"],"name":"farm_wave_spawn"},{"about":"Run FPGA synthesis pipeline","inputs":[],"name":"fpga_synth"},{"about":"Get FPGA hardware and synthesis status","inputs":[],"name":"fpga_status"},{"about":"Build FPGA bitstream","inputs":[],"name":"fpga_build"},{"about":"Verify FPGA bitstream against RTL","inputs":[],"name":"fpga_verify"},{"about":"Flash bitstream to FPGA board","inputs":["bitstream"],"name":"fpga_flash"}],"toolsNote":"Static list parsed from writeToolsList (210 entries; 32 entries have an unbalanced trailing brace in the source literal and were parsed after adding or removing one). Cell-generated tools from data/cells/mcp_tools.json are appended at runtime and are not listed here. .trinity/mcp_schemas.json lists a different, shorter set (29 names) and is not used as the source.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":[],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `zig-docs` registered in .mcp.json; launched as `npx -y @nichochar/zig-mcp@latest`.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":[],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/zig-docs","KIND":"tool","LAUNCH":"npx -y @nichochar/zig-mcp@latest","QUALIFIED_ID":"gHashTag/trinity:mcp/zig-docs","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"zig-docs","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/zig-docs","inSpecCorpus":false,"launch":"npx -y @nichochar/zig-mcp@latest","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_zig_docs","name":{"en":"zig-docs"},"qualifiedId":"gHashTag/trinity:mcp/zig-docs","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/zig-docs zig-docs external mcp server `zig-docs` registered in .mcp.json; launched as `npx -y @nichochar/zig-mcp@latest`.","server":"zig-docs","serverVersion":"","sha256":"baaff4d44a3595acd0cf596f2f070219c08df87bb2a997092e0b3e4792f06903","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/zig-docs.t27","summary":{"en":"External MCP server `zig-docs` registered in .mcp.json; launched as `npx -y @nichochar/zig-mcp@latest`.","ru":"Внешний MCP-сервер `zig-docs`, зарегистрированный в .mcp.json; запускается как `npx -y @nichochar/zig-mcp@latest`."},"tools":[],"toolsNote":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","actions":[{"about":"List recovery sites whose preceding comment names a concrete construct.","name":"list"}],"agents":[],"args":[],"command":"tri abandoned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recovery sites whose own comment names the construct they discard.","ABOUT_SOURCE":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List recovery sites whose preceding comment names a concrete construct."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri abandoned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/abandoned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/abandoned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/abandoned.rs","VARIANT":"Commands::Abandoned","WHEN_TO_USE":"Recovery sites whose own comment names the construct they discard.","WITNESS":"source-parse"},"health":"ok","id":"tri/abandoned","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/abandoned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_abandoned","name":{"en":"tri abandoned"},"qualifiedId":"gHashTag/t27:tri/abandoned","repo":"gHashTag/t27","schema":2,"searchText":"tri/abandoned tri abandoned recovery sites whose own comment names the construct they discard. recovery sites whose own comment names the construct they discard. list list recovery sites whose preceding comment names a concrete construct.","sha256":"b3105d48a28faff92bc02e393c146c4e95cba6c68277eb54f27ec5abc3b77bb4","skills":[],"source":"cli/tri/src/abandoned.rs","specPath":"specs/tools/tri/abandoned.t27","summary":{"en":"Recovery sites whose own comment names the construct they discard.","ru":"Точки восстановления, чей собственный комментарий называет отбрасываемую конструкцию."},"typecheckOk":true,"variant":"Commands::Abandoned","whenToUse":"Recovery sites whose own comment names the construct they discard.","witness":"source-parse"},{"aboutSource":"tri-mcp tools tri_cell_checkpoint and tri_cell_seal descriptions (cli/tri-mcp/src/main.rs); CellAction enum cli/tri/src/main.rs:448","actions":[{"about":"","name":"checkpoint"},{"about":"","name":"seal"}],"agents":[{"letter":"W","ok":true}],"args":[],"command":"tri cell","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ABOUT_SOURCE":"tri-mcp tools tri_cell_checkpoint and tri_cell_seal descriptions (cli/tri-mcp/src/main.rs); CellAction enum cli/tri/src/main.rs:448","ACTIONS":["checkpoint","seal"],"ACTIONS_ABOUT":["",""],"AGENTS":["W"],"AGENTS_NOTE":"docs/agents/AGENTS_ALPHABET.md:144, agent W domain Workflow / tri cell, key file src/tri/cell.zig; PHASE 6 EVOLVE: W seals tri-cell commit (hash seal).","ARGS":[],"COMMAND":"tri cell","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/cell","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/cell","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Cell","WHEN_TO_USE":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","WITNESS":"source-parse"},"health":"ok","id":"tri/cell","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_cell","name":{"en":"tri cell"},"qualifiedId":"gHashTag/t27:tri/cell","repo":"gHashTag/t27","schema":2,"searchText":"tri/cell tri cell records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. checkpoint seal w","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/cell.t27","summary":{"en":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ru":"Записывает шаг-контрольную точку в активной ячейке; запечатывает активную ячейку, вычисляя SHA-256 истории её контрольных точек."},"typecheckOk":true,"variant":"Commands::Cell","whenToUse":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","actions":[{"about":"Every census's printed population, against one counted another way.","name":"audit"},{"about":"Pin each pure census's output, so a change that moves one has to say so.","name":"pin"}],"agents":[],"args":[],"command":"tri census","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ABOUT_SOURCE":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","ACTIONS":["audit","pin"],"ACTIONS_ABOUT":["Every census's printed population, against one counted another way.","Pin each pure census's output, so a change that moves one has to say so."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri census","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/census","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/census","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/census.rs","VARIANT":"Commands::Census","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","WITNESS":"source-parse"},"health":"ok","id":"tri/census","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/census.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_census","name":{"en":"tri census"},"qualifiedId":"gHashTag/t27:tri/census","repo":"gHashTag/t27","schema":2,"searchText":"tri/census tri census specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. audit every census's printed population, against one counted another way. pin pin each pure census's output, so a change that moves one has to say so.","sha256":"d78bef53542ec408f004c9a1e1650cd9fd125ef0e7da3d4172f5ed9a203961af","skills":[],"source":"cli/tri/src/census.rs","specPath":"specs/tools/tri/census.t27","summary":{"en":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по конструкции, которая его останавливает. Напечатанная популяция каждой переписи против одной, посчитанной иначе."},"typecheckOk":true,"variant":"Commands::Census","whenToUse":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","actions":[{"about":"List PR gates that have never run on the default branch.","name":"baseline"}],"agents":[],"args":[],"command":"tri ci","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ABOUT_SOURCE":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","ACTIONS":["baseline"],"ACTIONS_ABOUT":["List PR gates that have never run on the default branch."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri ci","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ci","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ci","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/cibase.rs","VARIANT":"Commands::Ci","WHEN_TO_USE":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/ci","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/cibase.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ci","name":{"en":"tri ci"},"qualifiedId":"gHashTag/t27:tri/ci","repo":"gHashTag/t27","schema":2,"searchText":"tri/ci tri ci is the hardware this plan assumes actually attached? ci questions about the repository's own gates. is the hardware this plan assumes actually attached? ci questions about the repository's own gates. baseline list pr gates that have never run on the default branch.","sha256":"589b4502973beca006108ffedabec587effb8778bfd21be45399b23bcae398f3","skills":[],"source":"cli/tri/src/cibase.rs","specPath":"specs/tools/tri/ci.t27","summary":{"en":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ru":"Действительно ли подключено оборудование, которое предполагает этот план? Вопросы CI о собственных гейтах репозитория."},"typecheckOk":true,"variant":"Commands::Ci","whenToUse":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","actions":[{"about":"Count the records, the double-entered papers and the unpublished zeros.","name":"audit"},{"about":"When the survey behind this table last read a paper, by the month its citations encode.","name":"freshness"}],"agents":[],"args":[],"command":"tri competitors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ABOUT_SOURCE":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","ACTIONS":["audit","freshness"],"ACTIONS_ABOUT":["Count the records, the double-entered papers and the unpublished zeros.","When the survey behind this table last read a paper, by the month its citations encode."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri competitors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/competitors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/competitors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/competitors.rs","VARIANT":"Commands::Competitors","WHEN_TO_USE":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/competitors","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/competitors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_competitors","name":{"en":"tri competitors"},"qualifiedId":"gHashTag/t27:tri/competitors","repo":"gHashTag/t27","schema":2,"searchText":"tri/competitors tri competitors the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. audit count the records, the double-entered papers and the unpublished zeros. freshness when the survey behind this table last read a paper, by the month its citations encode.","sha256":"43fb47d6699c50e81d6ecd71f0f0791c5e0c46ba0fd69a2f066d60825d8f6706","skills":[],"source":"cli/tri/src/competitors.rs","specPath":"specs/tools/tri/competitors.t27","summary":{"en":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ru":"Таблица конкурентов против собственного контракта: сколько её опубликованных оценок никогда не публиковались и сколько статей она считает дважды."},"typecheckOk":true,"variant":"Commands::Competitors","whenToUse":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","actions":[{"about":"Rank the discarding specs, largest first, against the pinned volume.","name":"top"},{"about":"Group the discard by which recovery threw it away, and what it stopped on.","name":"classify"}],"agents":[],"args":[],"command":"tri discard","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the parser reads and throws away, ranked against its pinned bound.","ABOUT_SOURCE":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","ACTIONS":["top","classify"],"ACTIONS_ABOUT":["Rank the discarding specs, largest first, against the pinned volume.","Group the discard by which recovery threw it away, and what it stopped on."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri discard","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/discard","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/discard","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/discard.rs","VARIANT":"Commands::Discard","WHEN_TO_USE":"What the parser reads and throws away, ranked against its pinned bound.","WITNESS":"source-parse"},"health":"ok","id":"tri/discard","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/discard.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_discard","name":{"en":"tri discard"},"qualifiedId":"gHashTag/t27:tri/discard","repo":"gHashTag/t27","schema":2,"searchText":"tri/discard tri discard what the parser reads and throws away, ranked against its pinned bound. what the parser reads and throws away, ranked against its pinned bound. top rank the discarding specs, largest first, against the pinned volume. classify group the discard by which recovery threw it away, and what it stopped on.","sha256":"601efe186f5a97dbfd2e82e397ac53f32210ccedb4fadf1c2ffd0c0ee62e4530","skills":[],"source":"cli/tri/src/discard.rs","specPath":"specs/tools/tri/discard.t27","summary":{"en":"What the parser reads and throws away, ranked against its pinned bound.","ru":"Что парсер читает и выбрасывает, в сравнении с закреплённой границей."},"typecheckOk":true,"variant":"Commands::Discard","whenToUse":"What the parser reads and throws away, ranked against its pinned bound.","witness":"source-parse"},{"aboutSource":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","actions":[],"agents":[],"args":[{"about":"","name":""}],"command":"tri doctor","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ABOUT_SOURCE":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[""],"COMMAND":"tri doctor","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/doctor","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/doctor","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Doctor","WHEN_TO_USE":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","WITNESS":"source-parse"},"health":"ok","id":"tri/doctor","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_doctor","name":{"en":"tri doctor"},"qualifiedId":"gHashTag/t27:tri/doctor","repo":"gHashTag/t27","schema":2,"searchText":"tri/doctor tri doctor start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status). start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","sha256":"be3ed8d97c7404a17400311d3432bec040d027f0a76ce264a459326204780fd9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/doctor.t27","summary":{"en":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ru":"Запускает, останавливает или показывает состояние doctor, хранимое в .trinity/state/doctor.json (действия: start | stop | status)."},"typecheckOk":true,"variant":"Commands::Doctor","whenToUse":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","actions":[{"about":"Distribution of elaboration diagnostics by message shape.","name":"classify"},{"about":"How many diagnostics are secondary -- same source line as one above.","name":"secondary"}],"agents":[],"args":[],"command":"tri elab","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Classify a compiler's error output before quoting a number from it.","ABOUT_SOURCE":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","ACTIONS":["classify","secondary"],"ACTIONS_ABOUT":["Distribution of elaboration diagnostics by message shape.","How many diagnostics are secondary -- same source line as one above."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri elab","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/elab","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/elab","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/elab.rs","VARIANT":"Commands::Elab","WHEN_TO_USE":"Classify a compiler's error output before quoting a number from it.","WITNESS":"source-parse"},"health":"ok","id":"tri/elab","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/elab.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_elab","name":{"en":"tri elab"},"qualifiedId":"gHashTag/t27:tri/elab","repo":"gHashTag/t27","schema":2,"searchText":"tri/elab tri elab classify a compiler's error output before quoting a number from it. classify a compiler's error output before quoting a number from it. classify distribution of elaboration diagnostics by message shape. secondary how many diagnostics are secondary -- same source line as one above.","sha256":"e1ee4634ec3f0bb75b6c2f870fda5b9ba40f1c1329ad5ed38ce03a9351065791","skills":[],"source":"cli/tri/src/elab.rs","specPath":"specs/tools/tri/elab.t27","summary":{"en":"Classify a compiler's error output before quoting a number from it.","ru":"Классифицирует вывод ошибок компилятора прежде, чем цитировать из него число."},"typecheckOk":true,"variant":"Commands::Elab","whenToUse":"Classify a compiler's error output before quoting a number from it.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","actions":[{"about":"Generate the corpus twice with the same binary and name what differs.","name":"determinism"}],"agents":[],"args":[],"command":"tri emit","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does the same binary produce the same generated code twice?","ABOUT_SOURCE":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","ACTIONS":["determinism"],"ACTIONS_ABOUT":["Generate the corpus twice with the same binary and name what differs."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri emit","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/emit","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/emit","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gendet.rs","VARIANT":"Commands::Emit","WHEN_TO_USE":"Does the same binary produce the same generated code twice? Every byte-comparison over emitted output -- seals, emit-bitexact, `corpus --per-spec` diffing -- assumes it does. Three of the four emitters do not; see #3006. (`Gen` is taken by the single-spec emitter, so this is `Emit`.)","WITNESS":"source-parse"},"health":"ok","id":"tri/emit","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gendet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_emit","name":{"en":"tri emit"},"qualifiedId":"gHashTag/t27:tri/emit","repo":"gHashTag/t27","schema":2,"searchText":"tri/emit tri emit does the same binary produce the same generated code twice? does the same binary produce the same generated code twice? every byte-comparison over emitted output -- seals, emit-bitexact, `corpus --per-spec` diffing -- assumes it does. three of the four emitters do not; see #3006. (`gen` is taken by the single-spec emitter, so this is `emit`.) determinism generate the corpus twice with the same binary and name what differs.","sha256":"c4d32975e53fc1cf71a345333d73454c185b745057a215af3113981eedc68517","skills":[],"source":"cli/tri/src/gendet.rs","specPath":"specs/tools/tri/emit.t27","summary":{"en":"Does the same binary produce the same generated code twice?","ru":"Даёт ли один и тот же бинарник один и тот же сгенерированный код дважды?"},"typecheckOk":true,"variant":"Commands::Emit","whenToUse":"Does the same binary produce the same generated code twice? Every byte-comparison over emitted output -- seals, emit-bitexact, `corpus --per-spec` diffing -- assumes it does. Three of the four emitters do not; see #3006. (`Gen` is taken by the single-spec emitter, so this is `Emit`.)","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","actions":[{"about":"","name":"save"}],"agents":[{"letter":"E","ok":true}],"args":[],"command":"tri experience","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Saves an experience episode to the akashic log.","ABOUT_SOURCE":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","ACTIONS":["save"],"ACTIONS_ABOUT":[""],"AGENTS":["E"],"AGENTS_NOTE":".claude/agents/agent-e-experience.md:64 (tri experience save -- Save episode to experience log). Lines 65-66 name tri experience query and tri notebook, which the CLI does not have at this commit.","ARGS":[],"COMMAND":"tri experience","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/experience","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/experience","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Experience","WHEN_TO_USE":"Saves an experience episode to the akashic log.","WITNESS":"source-parse"},"health":"ok","id":"tri/experience","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_experience","name":{"en":"tri experience"},"qualifiedId":"gHashTag/t27:tri/experience","repo":"gHashTag/t27","schema":2,"searchText":"tri/experience tri experience saves an experience episode to the akashic log. saves an experience episode to the akashic log. save e","sha256":"08a7874c72e53ac1054c02ddb4a7649a6c4efb3c27ab9da7f4e148f6b9d05024","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/experience.t27","summary":{"en":"Saves an experience episode to the akashic log.","ru":"Сохраняет эпизод опыта в акашический журнал."},"typecheckOk":true,"variant":"Commands::Experience","whenToUse":"Saves an experience episode to the akashic log.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/fleet.rs:1","actions":[{"about":"Scan the USB bus and say plainly what hardware is present.","name":"scan"},{"about":"Check the environments a claim depends on before repeating the claim.","name":"asof"}],"agents":[],"args":[],"command":"tri fleet","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri fleet` -- is the hardware this plan assumes actually attached?","ABOUT_SOURCE":"//! module doc, cli/tri/src/fleet.rs:1","ACTIONS":["scan","asof"],"ACTIONS_ABOUT":["Scan the USB bus and say plainly what hardware is present.","Check the environments a claim depends on before repeating the claim."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri fleet","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fleet","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fleet","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fleet.rs","VARIANT":"Commands::Fleet","WHEN_TO_USE":"`tri fleet` -- is the hardware this plan assumes actually attached?","WITNESS":"source-parse"},"health":"ok","id":"tri/fleet","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fleet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fleet","name":{"en":"tri fleet"},"qualifiedId":"gHashTag/t27:tri/fleet","repo":"gHashTag/t27","schema":2,"searchText":"tri/fleet tri fleet `tri fleet` -- is the hardware this plan assumes actually attached? `tri fleet` -- is the hardware this plan assumes actually attached? scan scan the usb bus and say plainly what hardware is present. asof check the environments a claim depends on before repeating the claim.","sha256":"13c773d8e575a6f617dbcb4c86415a09bf50217b58f257efc4ea0ebc1ab90a8b","skills":[],"source":"cli/tri/src/fleet.rs","specPath":"specs/tools/tri/fleet.t27","summary":{"en":"`tri fleet` -- is the hardware this plan assumes actually attached?","ru":"`tri fleet` -- действительно ли подключено оборудование, которое предполагает этот план?"},"typecheckOk":true,"variant":"Commands::Fleet","whenToUse":"`tri fleet` -- is the hardware this plan assumes actually attached?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"One package instead of the whole workspace.","name":"--package"},{"about":"Report what is dirty and whether a workflow formats, and stop.","name":"--dry-run"}],"command":"tri fmt","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","ABOUT_SOURCE":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--package: One package instead of the whole workspace.","--dry-run: Report what is dirty and whether a workflow formats, and stop."],"COMMAND":"tri fmt","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fmt","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fmt","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Fmt","WHEN_TO_USE":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","WITNESS":"source-parse"},"health":"ok","id":"tri/fmt","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fmt","name":{"en":"tri fmt"},"qualifiedId":"gHashTag/t27:tri/fmt","repo":"gHashTag/t27","schema":2,"searchText":"tri/fmt tri fmt type names with more than one definition in the spec tree. run the formatter and restore every file it rewrote that you had not touched. type names with more than one definition in the spec tree. run the formatter and restore every file it rewrote that you had not touched.","sha256":"83e694d0156e30877c9a0d898b194667571fbc64181ff7c99dc0f7647a6f3452","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/fmt.t27","summary":{"en":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","ru":"Имена типов с более чем одним определением в дереве спеков. Запускает форматтер и восстанавливает каждый переписанный им файл, которого вы не трогали."},"typecheckOk":true,"variant":"Commands::Fmt","whenToUse":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","actions":[{"about":"Read and print the JTAG IDCODE of the attached DLC10 cable target.","name":"idcode"},{"about":"Read the configuration IDCODE register via the Type-1 CFG_IN/CFG_OUT protocol. On a healthy XC7A100T this must return 0x13631093 (same as the JTAG IDCODE). If 0x00000000 is returned while `idcode` works, the read_cfg_reg implementation is broken.","name":"idcode-cfg"},{"about":"Program FPGA SRAM (volatile -- lost on power-cycle).","name":"sram"},{"about":"Program the on-board SPI flash (non-volatile / persistent).","name":"program"},{"about":"Read the SPI flash JEDEC ID via the JTAG-to-SPI bridge.","name":"flash-id"},{"about":"Read the raw CFG_OUT status register.","name":"status"},{"about":"Decode 7-series configuration registers for DONE=LOW diagnosis.","name":"debug"},{"about":"Load a bitstream into FPGA SRAM using openFPGALoader with a Digilent FTDI cable. This is the canonical path for the QMTech Wukong V1 / XC7A200T board because the in-tree `dlc10` driver only supports Xilinx DLC10 cables (VID=0x03FD), not the attached Digilent cable (VID=0x0403:0x6014).","name":"load-sram"},{"about":"Read and decode the FPGA STAT register via openFPGALoader.","name":"stat"},{"about":"Read the FPGA XADC sensors (temperature, VCCINT, VCCAUX) via openFPGALoader and print a JSON object. The board must be powered and connected through a supported cable such as `digilent_hs2`.","name":"read-xadc"},{"about":"Synthesize the GF16 4x4 matrix design through the openXC7 toolchain. Output is written to `/gf16_matmul4x4_top.bit`.","name":"synth-gf16"},{"about":"Program the on-board SPI flash (non-volatile) using openFPGALoader's JTAG-to-SPI bridge. Requires a matching `spiOverJtag` bitstream for the exact FPGA package; the XC7A200T-FGG676 bridge is present in recent openFPGALoader distributions but flash boot may still depend on board mode pins (see docs/reports/FPGA_LOOP_EVIDENCE_2026-07-04.md).","name":"program-flash"},{"about":"Dump SPI flash contents to a file via openFPGALoader's JTAG-to-SPI bridge.","name":"dump-flash"},{"about":"Parse the .bit header and print the configuration registers that affect Master SPI boot (COR0, COR1, WBSTAR, TIMER, CTL0, CTL1, IDCODE, BSPI).","name":"bit-config"},{"about":"Program the given .bit to SPI flash, dump the same region back, and compare the dumped bytes against the bitstream payload. This verifies the openFPGALoader write path is bit-perfect for the raw bitstream.","name":"round-trip-verify"},{"about":"Guided cold-POR boot experiment. Programs flash, asks the user to physically power-cycle the board, then captures STAT without a JTAG reset and prints a decision-tree diagnosis.","name":"boot-log"},{"about":"Deterministic cold-POR boot experiment with optional relay control. With `--relay-port MOCK` the command writes a deterministic, clearly labeled mock boot log so CI can exercise the cold-POR JSON path without touching hardware. Real relay ports are reserved for Variant A/B.","name":"cold-por"},{"about":"Board-less smoke gate for the FPGA path. Runs `tri fpga bit-config` on the GF16 demo bitstream and, if yosys is available, a synthesis smoke check on the demo Verilog. Requires no physical board.","name":"smoke-gate"},{"about":"Print or interactively confirm the cold-POR boot protocol. This is the standalone version of the instructions embedded in `boot-log` and `cclk-sweep`; use it to verify the operator steps before a physical power-cycle.","name":"boot-protocol"},{"about":"Patch the raw OSCFSEL field (COR0[22:17]) of a 7-series .bit file.","name":"patch-cor0"},{"about":"Generate a set of OSCFSEL variants from a single input .bit file. Outputs one file per requested value to the given directory.","name":"cclk-variants"},{"about":"Automated cold-POR CCLK sweep. Generates OSCFSEL variants, programs each to flash, prompts for the physical power-cycle, captures STAT, and writes JSON logs. The only manual step is disconnecting/reconnecting the cable and power-cycling the board.","name":"cclk-sweep"},{"about":"Read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working CCLK variant.","name":"sweep-report"},{"about":"Print DSLogic / oscilloscope instructions for measuring the FPGA CCLK output during Master SPI configuration. Optionally parse a DSView CSV export or run a live capture via `sigrok-cli` with a connected logic analyzer (e.g., the Digilent FTDI cable as `ftdi-la`).","name":"measure-cclk"},{"about":"Read the SPI flash status register via openFPGALoader's JTAG-to-SPI bridge. Decodes WIP, WEL, and QE bits to help diagnose boot-from-flash failures.","name":"flash-status"},{"about":"Diagnostic: load *only* the proxy bridge bitstream (or any other bitstream) into FPGA SRAM, report STAT, leave TAP in RTI. Does NOT touch SPI flash. Useful for verifying the bridge actually reaches DONE=HIGH before debugging SPI semantics.","name":"proxy-load"},{"about":"Diagnostic: read IDCODE + STAT *without* touching the FPGA. Run this immediately after `tri fpga proxy-load` to confirm the bridge is alive. Also confirms IR=USER1 select is accepted.","name":"proxy-status"},{"about":"Diagnostic: shift raw hex bytes through the USER1 BSCAN as a single SPI transaction. Reads `--rx N` MISO bytes after the TX stream. Requires the proxy bridge to be already loaded (`tri fpga proxy-load` first).","name":"spi-raw"},{"about":"Diagnostic: probe the IR capture pattern after selecting an IR. A healthy 7-series TAP always captures `0b000001` into the IR shift register. Anything else means the JTAG chain is broken or the cable is mis-driving TMS.","name":"ir-probe"},{"about":"Diagnostic: drive the full JEDEC-read flow end-to-end with maximum instrumentation, **including** the 0xAB Release-Power-down and 0x66+0x99 software-reset recovery attempts. Equivalent to `flash-id --verbose` plus auto-recovery.","name":"flash-id-debug"},{"about":"Build the QMTech XC7A100T-FGG676 JTAG-to-SPI proxy bitstream via the openXC7 open-source toolchain (yosys + nextpnr-himbaechel + prjxray). Requires `yosys`, `nextpnr-himbaechel`, `fasm2frames.py` and `xc7frames2bit` on PATH. With `--install`, the produced `.bit` is copied to `fpga/tools/bscan_spi_xc7a100t.bit` so the embedded `BSCAN_SPI_XC7A100T` constant picks it up on the next rebuild.","name":"build-proxy"},{"about":"Clone the openXC7 `nextpnr-xilinx` repo and build a chipdb (`.bba`) for the requested 7-series part, then install it into `~/.local/share/nextpnr/himbaechel-xilinx/`.","name":"setup-openxc7-chipdb"},{"about":"Generate a Lean 4 theorem from a `tri fpga measure-cclk --json` output. The theorem proves that the measured `(frequency, duty)` pair satisfies `measured_cclk_satisfies_flash_spec` and links it to `transaction_satisfies_flash_spec`. Useful for turning a real capture into a machine-checked proof without manual copy-paste.","name":"measured-to-lean"},{"about":"Print the PVT-derated N25Q128_3V SCK low/high bound for a supplied operating context. Also prints the margin over the nominal 6 ns bound and warns if the context is outside the documented operating envelope.","name":"pvt-envelope"},{"about":"Build the QMTech XC7A100T-FGG676 proxy bitstream via a Docker container running Xilinx Vivado. Clones our `openFPGALoader` fork (`feat/qmtech-xc7a100t-board`) into `target/openfpgaloader-fork/` and runs `make` inside `spiOverJtag/`. On Apple Silicon (arm64), the container runs under x86_64 emulation via `--platform linux/amd64`. With `--install`, the produced `bscan_spi_xc7a100tfgg676.bit.gz` is decompressed and copied to `fpga/tools/bscan_spi_xc7a100t.bit` and its SHA256 is printed.","name":"build-proxy-docker"}],"agents":[],"args":[],"command":"tri fpga","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ABOUT_SOURCE":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","ACTIONS":["idcode","idcode-cfg","sram","program","flash-id","status","debug","load-sram","stat","read-xadc","synth-gf16","program-flash","dump-flash","bit-config","round-trip-verify","boot-log","cold-por","smoke-gate","boot-protocol","patch-cor0","cclk-variants","cclk-sweep","sweep-report","measure-cclk","flash-status","proxy-load","proxy-status","spi-raw","ir-probe","flash-id-debug","build-proxy","setup-openxc7-chipdb","measured-to-lean","pvt-envelope","build-proxy-docker"],"ACTIONS_ABOUT":["Read and print the JTAG IDCODE of the attached DLC10 cable target.","Read the configuration IDCODE register via the Type-1 CFG_IN/CFG_OUT protocol. On a healthy XC7A100T this must return 0x13631093 (same as the JTAG IDCODE). If 0x00000000 is returned while `idcode` works, the read_cfg_reg implementation is broken.","Program FPGA SRAM (volatile -- lost on power-cycle).","Program the on-board SPI flash (non-volatile / persistent).","Read the SPI flash JEDEC ID via the JTAG-to-SPI bridge.","Read the raw CFG_OUT status register.","Decode 7-series configuration registers for DONE=LOW diagnosis.","Load a bitstream into FPGA SRAM using openFPGALoader with a Digilent FTDI cable. This is the canonical path for the QMTech Wukong V1 / XC7A200T board because the in-tree `dlc10` driver only supports Xilinx DLC10 cables (VID=0x03FD), not the attached Digilent cable (VID=0x0403:0x6014).","Read and decode the FPGA STAT register via openFPGALoader.","Read the FPGA XADC sensors (temperature, VCCINT, VCCAUX) via openFPGALoader and print a JSON object. The board must be powered and connected through a supported cable such as `digilent_hs2`.","Synthesize the GF16 4x4 matrix design through the openXC7 toolchain. Output is written to `/gf16_matmul4x4_top.bit`.","Program the on-board SPI flash (non-volatile) using openFPGALoader's JTAG-to-SPI bridge. Requires a matching `spiOverJtag` bitstream for the exact FPGA package; the XC7A200T-FGG676 bridge is present in recent openFPGALoader distributions but flash boot may still depend on board mode pins (see docs/reports/FPGA_LOOP_EVIDENCE_2026-07-04.md).","Dump SPI flash contents to a file via openFPGALoader's JTAG-to-SPI bridge.","Parse the .bit header and print the configuration registers that affect Master SPI boot (COR0, COR1, WBSTAR, TIMER, CTL0, CTL1, IDCODE, BSPI).","Program the given .bit to SPI flash, dump the same region back, and compare the dumped bytes against the bitstream payload. This verifies the openFPGALoader write path is bit-perfect for the raw bitstream.","Guided cold-POR boot experiment. Programs flash, asks the user to physically power-cycle the board, then captures STAT without a JTAG reset and prints a decision-tree diagnosis.","Deterministic cold-POR boot experiment with optional relay control. With `--relay-port MOCK` the command writes a deterministic, clearly labeled mock boot log so CI can exercise the cold-POR JSON path without touching hardware. Real relay ports are reserved for Variant A/B.","Board-less smoke gate for the FPGA path. Runs `tri fpga bit-config` on the GF16 demo bitstream and, if yosys is available, a synthesis smoke check on the demo Verilog. Requires no physical board.","Print or interactively confirm the cold-POR boot protocol. This is the standalone version of the instructions embedded in `boot-log` and `cclk-sweep`; use it to verify the operator steps before a physical power-cycle.","Patch the raw OSCFSEL field (COR0[22:17]) of a 7-series .bit file.","Generate a set of OSCFSEL variants from a single input .bit file. Outputs one file per requested value to the given directory.","Automated cold-POR CCLK sweep. Generates OSCFSEL variants, programs each to flash, prompts for the physical power-cycle, captures STAT, and writes JSON logs. The only manual step is disconnecting/reconnecting the cable and power-cycling the board.","Read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working CCLK variant.","Print DSLogic / oscilloscope instructions for measuring the FPGA CCLK output during Master SPI configuration. Optionally parse a DSView CSV export or run a live capture via `sigrok-cli` with a connected logic analyzer (e.g., the Digilent FTDI cable as `ftdi-la`).","Read the SPI flash status register via openFPGALoader's JTAG-to-SPI bridge. Decodes WIP, WEL, and QE bits to help diagnose boot-from-flash failures.","Diagnostic: load *only* the proxy bridge bitstream (or any other bitstream) into FPGA SRAM, report STAT, leave TAP in RTI. Does NOT touch SPI flash. Useful for verifying the bridge actually reaches DONE=HIGH before debugging SPI semantics.","Diagnostic: read IDCODE + STAT *without* touching the FPGA. Run this immediately after `tri fpga proxy-load` to confirm the bridge is alive. Also confirms IR=USER1 select is accepted.","Diagnostic: shift raw hex bytes through the USER1 BSCAN as a single SPI transaction. Reads `--rx N` MISO bytes after the TX stream. Requires the proxy bridge to be already loaded (`tri fpga proxy-load` first).","Diagnostic: probe the IR capture pattern after selecting an IR. A healthy 7-series TAP always captures `0b000001` into the IR shift register. Anything else means the JTAG chain is broken or the cable is mis-driving TMS.","Diagnostic: drive the full JEDEC-read flow end-to-end with maximum instrumentation, **including** the 0xAB Release-Power-down and 0x66+0x99 software-reset recovery attempts. Equivalent to `flash-id --verbose` plus auto-recovery.","Build the QMTech XC7A100T-FGG676 JTAG-to-SPI proxy bitstream via the openXC7 open-source toolchain (yosys + nextpnr-himbaechel + prjxray). Requires `yosys`, `nextpnr-himbaechel`, `fasm2frames.py` and `xc7frames2bit` on PATH. With `--install`, the produced `.bit` is copied to `fpga/tools/bscan_spi_xc7a100t.bit` so the embedded `BSCAN_SPI_XC7A100T` constant picks it up on the next rebuild.","Clone the openXC7 `nextpnr-xilinx` repo and build a chipdb (`.bba`) for the requested 7-series part, then install it into `~/.local/share/nextpnr/himbaechel-xilinx/`.","Generate a Lean 4 theorem from a `tri fpga measure-cclk --json` output. The theorem proves that the measured `(frequency, duty)` pair satisfies `measured_cclk_satisfies_flash_spec` and links it to `transaction_satisfies_flash_spec`. Useful for turning a real capture into a machine-checked proof without manual copy-paste.","Print the PVT-derated N25Q128_3V SCK low/high bound for a supplied operating context. Also prints the margin over the nominal 6 ns bound and warns if the context is outside the documented operating envelope.","Build the QMTech XC7A100T-FGG676 proxy bitstream via a Docker container running Xilinx Vivado. Clones our `openFPGALoader` fork (`feat/qmtech-xc7a100t-board`) into `target/openfpgaloader-fork/` and runs `make` inside `spiOverJtag/`. On Apple Silicon (arm64), the container runs under x86_64 emulation via `--platform linux/amd64`. With `--install`, the produced `bscan_spi_xc7a100tfgg676.bit.gz` is decompressed and copied to `fpga/tools/bscan_spi_xc7a100t.bit` and its SHA256 is printed."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri fpga","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fpga","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fpga","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fpga.rs","VARIANT":"Commands::Fpga","WHEN_TO_USE":"FPGA programming via the in-tree DLC10 driver (pure Rust).","WITNESS":"source-parse"},"health":"ok","id":"tri/fpga","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fpga.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fpga","name":{"en":"tri fpga"},"qualifiedId":"gHashTag/t27:tri/fpga","repo":"gHashTag/t27","schema":2,"searchText":"tri/fpga tri fpga fpga programming via the in-tree dlc10 driver (pure rust). fpga programming via the in-tree dlc10 driver (pure rust). idcode read and print the jtag idcode of the attached dlc10 cable target. idcode-cfg read the configuration idcode register via the type-1 cfg_in/cfg_out protocol. on a healthy xc7a100t this must return 0x13631093 (same as the jtag idcode). if 0x00000000 is returned while `idcode` works, the read_cfg_reg implementation is broken. sram program fpga sram (volatile -- lost on power-cycle). program program the on-board spi flash (non-volatile / persistent). flash-id read the spi flash jedec id via the jtag-to-spi bridge. status read the raw cfg_out status register. debug decode 7-series configuration registers for done=low diagnosis. load-sram load a bitstream into fpga sram using openfpgaloader with a digilent ftdi cable. this is the canonical path for the qmtech wukong v1 / xc7a200t board because the in-tree `dlc10` driver only supports xilinx dlc10 cables (vid=0x03fd), not the attached digilent cable (vid=0x0403:0x6014). stat read and decode the fpga stat register via openfpgaloader. read-xadc read the fpga xadc sensors (temperature, vccint, vccaux) via openfpgaloader and print a json object. the board must be powered and connected through a supported cable such as `digilent_hs2`. synth-gf16 synthesize the gf16 4x4 matrix design through the openxc7 toolchain. output is written to `/gf16_matmul4x4_top.bit`. program-flash program the on-board spi flash (non-volatile) using openfpgaloader's jtag-to-spi bridge. requires a matching `spioverjtag` bitstream for the exact fpga package; the xc7a200t-fgg676 bridge is present in recent openfpgaloader distributions but flash boot may still depend on board mode pins (see docs/reports/fpga_loop_evidence_2026-07-04.md). dump-flash dump spi flash contents to a file via openfpgaloader's jtag-to-spi bridge. bit-config parse the .bit header and print the configuration registers that affect master spi boot (cor0, cor1, wbstar, timer, ctl0, ctl1, idcode, bspi). round-trip-verify program the given .bit to spi flash, dump the same region back, and compare the dumped bytes against the bitstream payload. this verifies the openfpgaloader write path is bit-perfect for the raw bitstream. boot-log guided cold-por boot experiment. programs flash, asks the user to physically power-cycle the board, then captures stat without a jtag reset and prints a decision-tree diagnosis. cold-por deterministic cold-por boot experiment with optional relay control. with `--relay-port mock` the command writes a deterministic, clearly labeled mock boot log so ci can exercise the cold-por json path without touching hardware. real relay ports are reserved for variant a/b. smoke-gate board-less smoke gate for the fpga path. runs `tri fpga bit-config` on the gf16 demo bitstream and, if yosys is available, a synthesis smoke check on the demo verilog. requires no physical board. boot-protocol print or interactively confirm the cold-por boot protocol. this is the standalone version of the instructions embedded in `boot-log` and `cclk-sweep`; use it to verify the operator steps before a physical power-cycle. patch-cor0 patch the raw oscfsel field (cor0[22:17]) of a 7-series .bit file. cclk-variants generate a set of oscfsel variants from a single input .bit file. outputs one file per requested value to the given directory. cclk-sweep automated cold-por cclk sweep. generates oscfsel variants, programs each to flash, prompts for the physical power-cycle, captures stat, and writes json logs. the only manual step is disconnecting/reconnecting the cable and power-cycling the board. sweep-report read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working cclk variant. measure-cclk print dslogic / oscilloscope instructions for measuring the fpga cclk output during master spi configuration. optionally parse a dsview csv export or run a live capture via `sigrok-cli` with a connected logic analyzer (e.g., the digilent ftdi cable as `ftdi-la`). flash-status read the spi flash status register via openfpgaloader's jtag-to-spi bridge. decodes wip, wel, and qe bits to help diagnose boot-from-flash failures. proxy-load diagnostic: load *only* the proxy bridge bitstream (or any other bitstream) into fpga sram, report stat, leave tap in rti. does not touch spi flash. useful for verifying the bridge actually reaches done=high before debugging spi semantics. proxy-status diagnostic: read idcode + stat *without* touching the fpga. run this immediately after `tri fpga proxy-load` to confirm the bridge is alive. also confirms ir=user1 select is accepted. spi-raw diagnostic: shift raw hex bytes through the user1 bscan as a single spi transaction. reads `--rx n` miso bytes after the tx stream. requires the proxy bridge to be already loaded (`tri fpga proxy-load` first). ir-probe diagnostic: probe the ir capture pattern after selecting an ir. a healthy 7-series tap always captures `0b000001` into the ir shift register. anything else means the jtag chain is broken or the cable is mis-driving tms. flash-id-debug diagnostic: drive the full jedec-read flow end-to-end with maximum instrumentation, **including** the 0xab release-power-down and 0x66+0x99 software-reset recovery attempts. equivalent to `flash-id --verbose` plus auto-recovery. build-proxy build the qmtech xc7a100t-fgg676 jtag-to-spi proxy bitstream via the openxc7 open-source toolchain (yosys + nextpnr-himbaechel + prjxray). requires `yosys`, `nextpnr-himbaechel`, `fasm2frames.py` and `xc7frames2bit` on path. with `--install`, the produced `.bit` is copied to `fpga/tools/bscan_spi_xc7a100t.bit` so the embedded `bscan_spi_xc7a100t` constant picks it up on the next rebuild. setup-openxc7-chipdb clone the openxc7 `nextpnr-xilinx` repo and build a chipdb (`.bba`) for the requested 7-series part, then install it into `~/.local/share/nextpnr/himbaechel-xilinx/`. measured-to-lean generate a lean 4 theorem from a `tri fpga measure-cclk --json` output. the theorem proves that the measured `(frequency, duty)` pair satisfies `measured_cclk_satisfies_flash_spec` and links it to `transaction_satisfies_flash_spec`. useful for turning a real capture into a machine-checked proof without manual copy-paste. pvt-envelope print the pvt-derated n25q128_3v sck low/high bound for a supplied operating context. also prints the margin over the nominal 6 ns bound and warns if the context is outside the documented operating envelope. build-proxy-docker build the qmtech xc7a100t-fgg676 proxy bitstream via a docker container running xilinx vivado. clones our `openfpgaloader` fork (`feat/qmtech-xc7a100t-board`) into `target/openfpgaloader-fork/` and runs `make` inside `spioverjtag/`. on apple silicon (arm64), the container runs under x86_64 emulation via `--platform linux/amd64`. with `--install`, the produced `bscan_spi_xc7a100tfgg676.bit.gz` is decompressed and copied to `fpga/tools/bscan_spi_xc7a100t.bit` and its sha256 is printed.","sha256":"aaf7d2d4ae26d149b68e8c50d010bcda79b6ba3bf30c782194ca37bd60f8c7b6","skills":[],"source":"cli/tri/src/fpga.rs","specPath":"specs/tools/tri/fpga.t27","summary":{"en":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ru":"Программирование FPGA через встроенный драйвер DLC10 (чистый Rust)."},"typecheckOk":true,"variant":"Commands::Fpga","whenToUse":"FPGA programming via the in-tree DLC10 driver (pure Rust).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","actions":[{"about":"Classify the compiler's own warnings. `rustc` already answers \"is this value ever read\" and \"does anything call this\" for the whole crate; the answer only helps if somebody reads it.","name":"warnings"},{"about":"Run every gate script and its negative control; name the ones with none.","name":"sweep"},{"about":"Break each gate's failure path and demand its control notices.","name":"mutate"},{"about":"Open pull requests whose path-filtered CI never ran.","name":"prs"},{"about":"What the tree says is required, against what the ruleset requires.","name":"preview"},{"about":"Which interpreter each gate step is handed to, and who says so.","name":"shell"},{"about":"Gate steps whose PASS is reachable with the thing they check absent.","name":"quiet"},{"about":"Every bounded GitHub fetch in this crate, and whether it can tell a page from a total.","name":"fetches"},{"about":"Run every gate CI runs, in an EMPTY tree, and report what still passes.","name":"empty"},{"about":"","name":"required"},{"about":"List active workflows whose lifetime success count is zero.","name":"dead"},{"about":"Workflows with no recent run on the default branch: their green is about frequency, not health.","name":"tests"},{"about":"","name":"unmeasured"}],"agents":[],"args":[],"command":"tri gates","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find workflows that have never once succeeded.","ABOUT_SOURCE":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","ACTIONS":["warnings","sweep","mutate","prs","preview","shell","quiet","fetches","empty","required","dead","tests","unmeasured"],"ACTIONS_ABOUT":["Classify the compiler's own warnings. `rustc` already answers \"is this value ever read\" and \"does anything call this\" for the whole crate; the answer only helps if somebody reads it.","Run every gate script and its negative control; name the ones with none.","Break each gate's failure path and demand its control notices.","Open pull requests whose path-filtered CI never ran.","What the tree says is required, against what the ruleset requires.","Which interpreter each gate step is handed to, and who says so.","Gate steps whose PASS is reachable with the thing they check absent.","Every bounded GitHub fetch in this crate, and whether it can tell a page from a total.","Run every gate CI runs, in an EMPTY tree, and report what still passes.","","List active workflows whose lifetime success count is zero.","Workflows with no recent run on the default branch: their green is about frequency, not health.",""],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri gates","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gates","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gates","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gates.rs","VARIANT":"Commands::Gates","WHEN_TO_USE":"Find workflows that have never once succeeded.","WITNESS":"source-parse"},"health":"ok","id":"tri/gates","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gates.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_gates","name":{"en":"tri gates"},"qualifiedId":"gHashTag/t27:tri/gates","repo":"gHashTag/t27","schema":2,"searchText":"tri/gates tri gates find workflows that have never once succeeded. find workflows that have never once succeeded. warnings classify the compiler's own warnings. `rustc` already answers \"is this value ever read\" and \"does anything call this\" for the whole crate; the answer only helps if somebody reads it. sweep run every gate script and its negative control; name the ones with none. mutate break each gate's failure path and demand its control notices. prs open pull requests whose path-filtered ci never ran. preview what the tree says is required, against what the ruleset requires. shell which interpreter each gate step is handed to, and who says so. quiet gate steps whose pass is reachable with the thing they check absent. fetches every bounded github fetch in this crate, and whether it can tell a page from a total. empty run every gate ci runs, in an empty tree, and report what still passes. required dead list active workflows whose lifetime success count is zero. tests workflows with no recent run on the default branch: their green is about frequency, not health. unmeasured","sha256":"de8489f65be8b1db66b2c9bf3abe96643c580d39e4b856cd6a9a3511e404975d","skills":[],"source":"cli/tri/src/gates.rs","specPath":"specs/tools/tri/gates.t27","summary":{"en":"Find workflows that have never once succeeded.","ru":"Находит воркфлоу, которые ни разу не завершались успешно."},"typecheckOk":true,"variant":"Commands::Gates","whenToUse":"Find workflows that have never once succeeded.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_gen description (cli/tri-mcp/src/main.rs); handler cmd_gen runs t27c gen-verilog, gen-c, gen-rust (cli/tri/src/main.rs:862)","actions":[],"agents":[{"letter":"C","ok":true},{"letter":"T","ok":true}],"args":[{"about":"","name":""}],"command":"tri gen","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Generates backends from a .t27 spec file using t27c.","ABOUT_SOURCE":"tri-mcp tool tri_gen description (cli/tri-mcp/src/main.rs); handler cmd_gen runs t27c gen-verilog, gen-c, gen-rust (cli/tri/src/main.rs:862)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["C","T"],"AGENTS_NOTE":".claude/agents/agent-c-compiler.md:40 (tri gen -- Generate code from specs; trigger On tri gen command, line 7); .claude/agents/trinity.md:68 (5. Gen - Run tri gen).","ARGS":[""],"COMMAND":"tri gen","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gen","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gen","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Gen","WHEN_TO_USE":"Generates backends from a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/gen","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_gen","name":{"en":"tri gen"},"qualifiedId":"gHashTag/t27:tri/gen","repo":"gHashTag/t27","schema":2,"searchText":"tri/gen tri gen generates backends from a .t27 spec file using t27c. generates backends from a .t27 spec file using t27c. c t","sha256":"8739f5a9100f6f989b3558fa5c49af008fb134e3c640c67a0ca946e2880e42bb","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/gen.t27","summary":{"en":"Generates backends from a .t27 spec file using t27c.","ru":"Генерирует бэкенды из файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Gen","whenToUse":"Generates backends from a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","actions":[{"about":"Test binaries whose tests share one scratch directory.","name":"scratch"}],"agents":[],"args":[],"command":"tri harness","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ABOUT_SOURCE":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","ACTIONS":["scratch"],"ACTIONS_ABOUT":["Test binaries whose tests share one scratch directory."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri harness","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/harness","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/harness","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Harness","WHEN_TO_USE":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","WITNESS":"source-parse"},"health":"ok","id":"tri/harness","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_harness","name":{"en":"tri harness"},"qualifiedId":"gHashTag/t27:tri/harness","repo":"gHashTag/t27","schema":2,"searchText":"tri/harness tri harness source files no crate root reaches, and so nothing compiles. test-harness hygiene. source files no crate root reaches, and so nothing compiles. test-harness hygiene. scratch test binaries whose tests share one scratch directory.","sha256":"67c635dcb96730ead658e8233879cc6f2b3cb56d9c6e85259629d10b9a536b9c","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/harness.t27","summary":{"en":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ru":"Исходные файлы, до которых не доходит ни один корень крейта, и потому ничего не компилируется. Гигиена тестового харнесса."},"typecheckOk":true,"variant":"Commands::Harness","whenToUse":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_health description (cli/tri-mcp/src/main.rs); handler cmd_health reads .trinity/state/queen-health.json (cli/tri/src/main.rs:969)","actions":[],"agents":[],"args":[{"about":"","name":""}],"command":"tri health","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns queen and swarm health status from .trinity state.","ABOUT_SOURCE":"tri-mcp tool tri_health description (cli/tri-mcp/src/main.rs); handler cmd_health reads .trinity/state/queen-health.json (cli/tri/src/main.rs:969)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[""],"COMMAND":"tri health","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/health","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/health","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Health","WHEN_TO_USE":"Returns queen and swarm health status from .trinity state.","WITNESS":"source-parse"},"health":"ok","id":"tri/health","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_health","name":{"en":"tri health"},"qualifiedId":"gHashTag/t27:tri/health","repo":"gHashTag/t27","schema":2,"searchText":"tri/health tri health returns queen and swarm health status from .trinity state. returns queen and swarm health status from .trinity state.","sha256":"678ece919f8363e769be5541575ec25163565cf04481f776448b81c3fbac94c9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/health.t27","summary":{"en":"Returns queen and swarm health status from .trinity state.","ru":"Показывает состояние здоровья королевы и роя из состояния .trinity."},"typecheckOk":true,"variant":"Commands::Health","whenToUse":"Returns queen and swarm health status from .trinity state.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","actions":[{"about":"Run every migrated commit-time gate in sequence (l1-check + now-gate).","name":"pre-commit"},{"about":"A pull request whose title claims a compiler fix must carry a source file.","name":"fix-carries-source"},{"about":"Ask the required NOW gate's own script whether this push adds an entry.","name":"pre-push"},{"about":"L1 TRACEABILITY over the message BEING WRITTEN, from the commit-msg hook.","name":"commit-msg"},{"about":"L1 TRACEABILITY: last commit message must reference an issue (`Closes #N` / `Fixes #N` / `Resolves #N` / `Reference #N`).","name":"l1-check"},{"about":"Verify a fresh `docs/now/-.md` entry exists.","name":"now-gate"},{"about":"Session-start guard for the Claude Code harness. Emits a one-line status string to stdout; never blocks (the Bash gate is a soft telemetry hook).","name":"session-gate"},{"about":"Which hooks git will actually run, and whose installer output is dead.","name":"status"}],"agents":[],"args":[],"command":"tri hooks","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Pure-Rust ports of repository commit / push gates.","ABOUT_SOURCE":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","ACTIONS":["pre-commit","fix-carries-source","pre-push","commit-msg","l1-check","now-gate","session-gate","status"],"ACTIONS_ABOUT":["Run every migrated commit-time gate in sequence (l1-check + now-gate).","A pull request whose title claims a compiler fix must carry a source file.","Ask the required NOW gate's own script whether this push adds an entry.","L1 TRACEABILITY over the message BEING WRITTEN, from the commit-msg hook.","L1 TRACEABILITY: last commit message must reference an issue (`Closes #N` / `Fixes #N` / `Resolves #N` / `Reference #N`).","Verify a fresh `docs/now/-.md` entry exists.","Session-start guard for the Claude Code harness. Emits a one-line status string to stdout; never blocks (the Bash gate is a soft telemetry hook).","Which hooks git will actually run, and whose installer output is dead."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri hooks","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/hooks","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/hooks","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/hooks.rs","VARIANT":"Commands::Hooks","WHEN_TO_USE":"Pure-Rust ports of repository commit / push gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/hooks","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/hooks.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_hooks","name":{"en":"tri hooks"},"qualifiedId":"gHashTag/t27:tri/hooks","repo":"gHashTag/t27","schema":2,"searchText":"tri/hooks tri hooks pure-rust ports of repository commit / push gates. pure-rust ports of repository commit / push gates. pre-commit run every migrated commit-time gate in sequence (l1-check + now-gate). fix-carries-source a pull request whose title claims a compiler fix must carry a source file. pre-push ask the required now gate's own script whether this push adds an entry. commit-msg l1 traceability over the message being written, from the commit-msg hook. l1-check l1 traceability: last commit message must reference an issue (`closes #n` / `fixes #n` / `resolves #n` / `reference #n`). now-gate verify a fresh `docs/now/-.md` entry exists. session-gate session-start guard for the claude code harness. emits a one-line status string to stdout; never blocks (the bash gate is a soft telemetry hook). status which hooks git will actually run, and whose installer output is dead.","sha256":"533eeb860d6bc3f69d612c3d2630965bf50b8533f50c4f4900b25ab42e838db2","skills":[],"source":"cli/tri/src/hooks.rs","specPath":"specs/tools/tri/hooks.t27","summary":{"en":"Pure-Rust ports of repository commit / push gates.","ru":"Порты гейтов коммита/пуша репозитория на чистом Rust."},"typecheckOk":true,"variant":"Commands::Hooks","whenToUse":"Pure-Rust ports of repository commit / push gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","actions":[{"about":"Open issues whose title calls a workflow red, and what it does today.","name":"stale"},{"about":"Open issues that state a COUNT in the title, and a reproducible sample.","name":"numbers"},{"about":"Open issues whose figure is ANCHORED, so re-measuring it proves nothing.","name":"dated"}],"agents":[],"args":[],"command":"tri issues","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ABOUT_SOURCE":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","ACTIONS":["stale","numbers","dated"],"ACTIONS_ABOUT":["Open issues whose title calls a workflow red, and what it does today.","Open issues that state a COUNT in the title, and a reproducible sample.","Open issues whose figure is ANCHORED, so re-measuring it proves nothing."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri issues","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/issues","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/issues","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/issues.rs","VARIANT":"Commands::Issues","WHEN_TO_USE":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","WITNESS":"source-parse"},"health":"ok","id":"tri/issues","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/issues.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_issues","name":{"en":"tri issues"},"qualifiedId":"gHashTag/t27:tri/issues","repo":"gHashTag/t27","schema":2,"searchText":"tri/issues tri issues open issues whose headline calls a workflow red, against what that workflow concludes on master today. open issues whose headline calls a workflow red, against what that workflow concludes on master today. stale open issues whose title calls a workflow red, and what it does today. numbers open issues that state a count in the title, and a reproducible sample. dated open issues whose figure is anchored, so re-measuring it proves nothing.","sha256":"e7b50b366482d2b8d45d2ac34d8c26df07c1834693fb3cce83c043be0509d75c","skills":[],"source":"cli/tri/src/issues.rs","specPath":"specs/tools/tri/issues.t27","summary":{"en":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ru":"Открытые issue, чей заголовок называет воркфлоу красным, против того, к чему этот воркфлоу приходит на master сегодня."},"typecheckOk":true,"variant":"Commands::Issues","whenToUse":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","actions":[{"about":"Name every `break`/`continue` site in the generated Verilog and say what it lowered to.","name":"census"}],"agents":[],"args":[],"command":"tri jumps","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ABOUT_SOURCE":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","ACTIONS":["census"],"ACTIONS_ABOUT":["Name every `break`/`continue` site in the generated Verilog and say what it lowered to."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri jumps","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/jumps","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/jumps","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/jumps.rs","VARIANT":"Commands::Jumps","WHEN_TO_USE":"What happened to every `break` and `continue` the Verilog emitter had to lower? `break` was `disable fork;` and `continue` was `/* continue */;`. Both parse, both synthesise, both are no-ops -- so every instrument that asks whether the output PARSES said yes for as long as the emitter has existed. See #2988.","WITNESS":"source-parse"},"health":"ok","id":"tri/jumps","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/jumps.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_jumps","name":{"en":"tri jumps"},"qualifiedId":"gHashTag/t27:tri/jumps","repo":"gHashTag/t27","schema":2,"searchText":"tri/jumps tri jumps what happened to every `break` and `continue` the verilog emitter had to lower? what happened to every `break` and `continue` the verilog emitter had to lower? `break` was `disable fork;` and `continue` was `/* continue */;`. both parse, both synthesise, both are no-ops -- so every instrument that asks whether the output parses said yes for as long as the emitter has existed. see #2988. census name every `break`/`continue` site in the generated verilog and say what it lowered to.","sha256":"905308ea72644feb0e72d64a5d6c6edaed7e0d8e7182e7d52d8157f9951e756a","skills":[],"source":"cli/tri/src/jumps.rs","specPath":"specs/tools/tri/jumps.t27","summary":{"en":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ru":"Что случилось с каждым `break` и `continue`, которые эмиттеру Verilog пришлось опустить?"},"typecheckOk":true,"variant":"Commands::Jumps","whenToUse":"What happened to every `break` and `continue` the Verilog emitter had to lower? `break` was `disable fork;` and `continue` was `/* continue */;`. Both parse, both synthesise, both are no-ops -- so every instrument that asks whether the output PARSES said yes for as long as the emitter has existed. See #2988.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","actions":[{"about":"Match arms whose comment names a construct the pattern does not cover.","name":"drift"}],"agents":[],"args":[],"command":"tri kinds","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Match arms whose own comment names a case the pattern omits.","ABOUT_SOURCE":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","ACTIONS":["drift"],"ACTIONS_ABOUT":["Match arms whose comment names a construct the pattern does not cover."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri kinds","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/kinds","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/kinds","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/kinddrift.rs","VARIANT":"Commands::Kinds","WHEN_TO_USE":"Match arms whose own comment names a case the pattern omits.","WITNESS":"source-parse"},"health":"ok","id":"tri/kinds","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/kinddrift.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_kinds","name":{"en":"tri kinds"},"qualifiedId":"gHashTag/t27:tri/kinds","repo":"gHashTag/t27","schema":2,"searchText":"tri/kinds tri kinds match arms whose own comment names a case the pattern omits. match arms whose own comment names a case the pattern omits. drift match arms whose comment names a construct the pattern does not cover.","sha256":"76affd22763395ddb1ff3639130a93df72fdd0c7491275d4ef3f1cd0bc5c9377","skills":[],"source":"cli/tri/src/kinddrift.rs","specPath":"specs/tools/tri/kinds.t27","summary":{"en":"Match arms whose own comment names a case the pattern omits.","ru":"Ветви match, чей собственный комментарий называет случай, который паттерн пропускает."},"typecheckOk":true,"variant":"Commands::Kinds","whenToUse":"Match arms whose own comment names a case the pattern omits.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","actions":[{"about":"Completeness theorems whose model has no functions.","name":"vacuous"},{"about":"Proof files the build root does not reach, and so nothing compiles.","name":"reach"}],"agents":[],"args":[],"command":"tri lean","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Completeness theorems whose Lean model is empty.","ABOUT_SOURCE":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","ACTIONS":["vacuous","reach"],"ACTIONS_ABOUT":["Completeness theorems whose model has no functions.","Proof files the build root does not reach, and so nothing compiles."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri lean","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/lean","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/lean","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/leanvac.rs","VARIANT":"Commands::Lean","WHEN_TO_USE":"Completeness theorems whose Lean model is empty.","WITNESS":"source-parse"},"health":"ok","id":"tri/lean","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/leanvac.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_lean","name":{"en":"tri lean"},"qualifiedId":"gHashTag/t27:tri/lean","repo":"gHashTag/t27","schema":2,"searchText":"tri/lean tri lean completeness theorems whose lean model is empty. completeness theorems whose lean model is empty. vacuous completeness theorems whose model has no functions. reach proof files the build root does not reach, and so nothing compiles.","sha256":"9e8b0319877e064acbadfcf4e2611da323f38382cee7f318b4f552e01d560898","skills":[],"source":"cli/tri/src/leanvac.rs","specPath":"specs/tools/tri/lean.t27","summary":{"en":"Completeness theorems whose Lean model is empty.","ru":"Теоремы полноты, у которых модель Lean пуста."},"typecheckOk":true,"variant":"Commands::Lean","whenToUse":"Completeness theorems whose Lean model is empty.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","actions":[{"about":"Plant a stale entry in each ledger and demand its gate fail.","name":"audit"}],"agents":[],"args":[],"command":"tri ledgers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does each ledger's gate notice when one of its entries stops being true?","ABOUT_SOURCE":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","ACTIONS":["audit"],"ACTIONS_ABOUT":["Plant a stale entry in each ledger and demand its gate fail."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri ledgers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ledgers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ledgers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/ledgers.rs","VARIANT":"Commands::Ledgers","WHEN_TO_USE":"Does each ledger's gate notice when one of its entries stops being true?","WITNESS":"source-parse"},"health":"ok","id":"tri/ledgers","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/ledgers.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ledgers","name":{"en":"tri ledgers"},"qualifiedId":"gHashTag/t27:tri/ledgers","repo":"gHashTag/t27","schema":2,"searchText":"tri/ledgers tri ledgers does each ledger's gate notice when one of its entries stops being true? does each ledger's gate notice when one of its entries stops being true? audit plant a stale entry in each ledger and demand its gate fail.","sha256":"98f0c29164ca0fcd92e851d96e061e6f442a80fccab59e71f5d617f364afd7dc","skills":[],"source":"cli/tri/src/ledgers.rs","specPath":"specs/tools/tri/ledgers.t27","summary":{"en":"Does each ledger's gate notice when one of its entries stops being true?","ru":"Замечает ли гейт каждого леджера, когда одна из его записей перестаёт быть истинной?"},"typecheckOk":true,"variant":"Commands::Ledgers","whenToUse":"Does each ledger's gate notice when one of its entries stops being true?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","actions":[{"about":"Take the named claim, or say who already holds it.","name":"claim"}],"agents":[],"args":[],"command":"tri loop","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","ABOUT_SOURCE":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","ACTIONS":["claim"],"ACTIONS_ABOUT":["Take the named claim, or say who already holds it."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri loop","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/loop","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/loop","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/loopclaim.rs","VARIANT":"Commands::Loop","WHEN_TO_USE":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","WITNESS":"source-parse"},"health":"ok","id":"tri/loop","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/loopclaim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_loop","name":{"en":"tri loop"},"qualifiedId":"gHashTag/t27:tri/loop","repo":"gHashTag/t27","schema":2,"searchText":"tri/loop tri loop what is failing on the default branch right now, and since when. take a named claim so two sessions of the loop cannot pick the same task. what is failing on the default branch right now, and since when. take a named claim so two sessions of the loop cannot pick the same task. claim take the named claim, or say who already holds it.","sha256":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","skills":[],"source":"cli/tri/src/loopclaim.rs","specPath":"specs/tools/tri/loop.t27","summary":{"en":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","ru":"Что падает на ветке по умолчанию прямо сейчас и с какого момента. Берёт именованную заявку, чтобы две сессии лупа не взяли одну задачу."},"typecheckOk":true,"variant":"Commands::Loop","whenToUse":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","actions":[],"agents":[],"args":[{"about":"The base this branch is supposed to carry. A ref, not a URL.","name":"--base"},{"about":"Also check the commits behind HEAD, not only HEAD itself.","name":"--depth"}],"command":"tri merging","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is a merge in flight here, and does this branch carry the base?","ABOUT_SOURCE":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--base: The base this branch is supposed to carry. A ref, not a URL.","--depth: Also check the commits behind HEAD, not only HEAD itself."],"COMMAND":"tri merging","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/merging","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/merging","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/inflight.rs","VARIANT":"Commands::Merging","WHEN_TO_USE":"Is a merge in flight here, and does this branch carry the base?","WITNESS":"source-parse"},"health":"ok","id":"tri/merging","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/inflight.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_merging","name":{"en":"tri merging"},"qualifiedId":"gHashTag/t27:tri/merging","repo":"gHashTag/t27","schema":2,"searchText":"tri/merging tri merging is a merge in flight here, and does this branch carry the base? is a merge in flight here, and does this branch carry the base?","sha256":"bb4167b8b988820e63e2e42cc9b3f1eeaea9a9caf00e15d8c3f3e0b5cd9d0cb5","skills":[],"source":"cli/tri/src/inflight.rs","specPath":"specs/tools/tri/merging.t27","summary":{"en":"Is a merge in flight here, and does this branch carry the base?","ru":"Идёт ли здесь мерж, и несёт ли эта ветка базу?"},"typecheckOk":true,"variant":"Commands::Merging","whenToUse":"Is a merge in flight here, and does this branch carry the base?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","actions":[],"agents":[],"args":[{"about":"Root of the spec tree.","name":"--specs-dir"},{"about":"Name every spec under each shape rather than only counting.","name":"--list"}],"command":"tri misread","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The specs the compiler reads WRONGLY. Every gate is green on them.","ABOUT_SOURCE":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--specs-dir: Root of the spec tree.","--list: Name every spec under each shape rather than only counting."],"COMMAND":"tri misread","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/misread","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/misread","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/misread.rs","VARIANT":"Commands::Misread","WHEN_TO_USE":"The specs the compiler reads WRONGLY. Every gate is green on them.","WITNESS":"source-parse"},"health":"ok","id":"tri/misread","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/misread.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_misread","name":{"en":"tri misread"},"qualifiedId":"gHashTag/t27:tri/misread","repo":"gHashTag/t27","schema":2,"searchText":"tri/misread tri misread the specs the compiler reads wrongly. every gate is green on them. the specs the compiler reads wrongly. every gate is green on them.","sha256":"4c27da6a18f488afac5ac4be903b614994749278742678c74490e1a74ff991a7","skills":[],"source":"cli/tri/src/misread.rs","specPath":"specs/tools/tri/misread.t27","summary":{"en":"The specs the compiler reads WRONGLY. Every gate is green on them.","ru":"Спеки, которые компилятор читает НЕВЕРНО. Все гейты на них зелёные."},"typecheckOk":true,"variant":"Commands::Misread","whenToUse":"The specs the compiler reads WRONGLY. Every gate is green on them.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","actions":[{"about":"List them.","name":"orphan"}],"agents":[],"args":[],"command":"tri mods","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri mods orphan` -- `.rs` files no crate root reaches.","ABOUT_SOURCE":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","ACTIONS":["orphan"],"ACTIONS_ABOUT":["List them."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri mods","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mods","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mods","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Mods","WHEN_TO_USE":"`tri mods orphan` -- `.rs` files no crate root reaches.","WITNESS":"source-parse"},"health":"ok","id":"tri/mods","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mods","name":{"en":"tri mods"},"qualifiedId":"gHashTag/t27:tri/mods","repo":"gHashTag/t27","schema":2,"searchText":"tri/mods tri mods `tri mods orphan` -- `.rs` files no crate root reaches. `tri mods orphan` -- `.rs` files no crate root reaches. orphan list them.","sha256":"45754d036ee4eced4776bb6c2d85addf2cf176e7c70098f78b3fdb4db7df17c1","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/mods.t27","summary":{"en":"`tri mods orphan` -- `.rs` files no crate root reaches.","ru":"`tri mods orphan` -- файлы `.rs`, до которых не доходит ни один корень крейта."},"typecheckOk":true,"variant":"Commands::Mods","whenToUse":"`tri mods orphan` -- `.rs` files no crate root reaches.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","actions":[{"about":"Perturb each numeric literal in a file and report which ones the checker does not notice.","name":"run"}],"agents":[],"args":[],"command":"tri mutate","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find the constants in a checker that nothing actually checks.","ABOUT_SOURCE":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","ACTIONS":["run"],"ACTIONS_ABOUT":["Perturb each numeric literal in a file and report which ones the checker does not notice."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri mutate","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mutate","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mutate","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/mutate.rs","VARIANT":"Commands::Mutate","WHEN_TO_USE":"Find the constants in a checker that nothing actually checks.","WITNESS":"source-parse"},"health":"ok","id":"tri/mutate","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/mutate.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mutate","name":{"en":"tri mutate"},"qualifiedId":"gHashTag/t27:tri/mutate","repo":"gHashTag/t27","schema":2,"searchText":"tri/mutate tri mutate find the constants in a checker that nothing actually checks. find the constants in a checker that nothing actually checks. run perturb each numeric literal in a file and report which ones the checker does not notice.","sha256":"163456bf9900804666e0f1f53bb7ca1bc76faa89f27e30bf34ca869f8388ea98","skills":[],"source":"cli/tri/src/mutate.rs","specPath":"specs/tools/tri/mutate.t27","summary":{"en":"Find the constants in a checker that nothing actually checks.","ru":"Находит в чекере константы, которые на деле ничем не проверяются."},"typecheckOk":true,"variant":"Commands::Mutate","whenToUse":"Find the constants in a checker that nothing actually checks.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","actions":[{"about":"Write a docs/now/ entry: title, bullets, optional issue ref.","name":"add"},{"about":"Ask the REQUIRED `check` gate its own question, before pushing.","name":"check"}],"agents":[],"args":[],"command":"tri now","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Write a docs/now/ entry without hand-writing the frame.","ABOUT_SOURCE":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","ACTIONS":["add","check"],"ACTIONS_ABOUT":["Write a docs/now/ entry: title, bullets, optional issue ref.","Ask the REQUIRED `check` gate its own question, before pushing."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri now","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/now","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/now","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/nownote.rs","VARIANT":"Commands::Now","WHEN_TO_USE":"Write a docs/now/ entry without hand-writing the frame.","WITNESS":"source-parse"},"health":"ok","id":"tri/now","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/nownote.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_now","name":{"en":"tri now"},"qualifiedId":"gHashTag/t27:tri/now","repo":"gHashTag/t27","schema":2,"searchText":"tri/now tri now write a docs/now/ entry without hand-writing the frame. write a docs/now/ entry without hand-writing the frame. add write a docs/now/ entry: title, bullets, optional issue ref. check ask the required `check` gate its own question, before pushing.","sha256":"e151864300830e0cdde07121285099fdc47c1de925ec4a5e78bba71a29e6a94a","skills":[],"source":"cli/tri/src/nownote.rs","specPath":"specs/tools/tri/now.t27","summary":{"en":"Write a docs/now/ entry without hand-writing the frame.","ru":"Пишет запись docs/now/ без ручного набора рамки."},"typecheckOk":true,"variant":"Commands::Now","whenToUse":"Write a docs/now/ entry without hand-writing the frame.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","actions":[],"agents":[],"args":[{"about":"Also list every spec, not only the class tally.","name":"--names"},{"about":"Report specs with exactly this many errors. The default, 1, is the only bucket a single repair can move; `--errors 2` is the next wave.","name":"--errors"},{"about":"Stop after this many specs. Prints what was dropped -- a silent cap reads as coverage.","name":"--limit"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"command":"tri one-away","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Failing specs one defect from compiling, and what that defect is","ABOUT_SOURCE":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--names: Also list every spec, not only the class tally.","--errors: Report specs with exactly this many errors. The default, 1, is the only bucket a single repair can move; `--errors 2` is the next wave.","--limit: Stop after this many specs. Prints what was dropped -- a silent cap reads as coverage.","--self-check: Run the controls and report, changing nothing."],"COMMAND":"tri one-away","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/one-away","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/one-away","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/oneaway.rs","VARIANT":"Commands::OneAway","WHEN_TO_USE":"Failing specs one defect from compiling, and what that defect is","WITNESS":"source-parse"},"health":"ok","id":"tri/one-away","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/oneaway.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_one_away","name":{"en":"tri one-away"},"qualifiedId":"gHashTag/t27:tri/one-away","repo":"gHashTag/t27","schema":2,"searchText":"tri/one-away tri one-away failing specs one defect from compiling, and what that defect is failing specs one defect from compiling, and what that defect is","sha256":"f823bbea9d121e61a27e9c8d899004d2f3712876eab334ed3982a62908fd8ab2","skills":[],"source":"cli/tri/src/oneaway.rs","specPath":"specs/tools/tri/one-away.t27","summary":{"en":"Failing specs one defect from compiling, and what that defect is","ru":"Падающие спеки, которым до компиляции один дефект, и какой именно."},"typecheckOk":true,"variant":"Commands::OneAway","whenToUse":"Failing specs one defect from compiling, and what that defect is","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","actions":[{"about":"List gate and tool sources that name an input which is not in the tree.","name":"list"}],"agents":[],"args":[],"command":"tri orphaned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks whose input is not in the tree.","ABOUT_SOURCE":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List gate and tool sources that name an input which is not in the tree."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri orphaned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/orphaned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/orphaned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/orphaned.rs","VARIANT":"Commands::Orphaned","WHEN_TO_USE":"Checks whose input is not in the tree.","WITNESS":"source-parse"},"health":"ok","id":"tri/orphaned","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/orphaned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_orphaned","name":{"en":"tri orphaned"},"qualifiedId":"gHashTag/t27:tri/orphaned","repo":"gHashTag/t27","schema":2,"searchText":"tri/orphaned tri orphaned checks whose input is not in the tree. checks whose input is not in the tree. list list gate and tool sources that name an input which is not in the tree.","sha256":"f9808d318e75aa5ea4ea3e5b3bf33f0a667aab6a00c7c5aa91f2cc77e3e846bd","skills":[],"source":"cli/tri/src/orphaned.rs","specPath":"specs/tools/tri/orphaned.t27","summary":{"en":"Checks whose input is not in the tree.","ru":"Проверки, чей вход отсутствует в дереве."},"typecheckOk":true,"variant":"Commands::Orphaned","whenToUse":"Checks whose input is not in the tree.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","actions":[{"about":"Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?","name":"landed"},{"about":"","name":"ready"}],"agents":[],"args":[],"command":"tri pr","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is this pull request actually safe to merge?","ABOUT_SOURCE":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","ACTIONS":["landed","ready"],"ACTIONS_ABOUT":["Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?",""],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri pr","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/pr","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/pr","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prcheck.rs","VARIANT":"Commands::Pr","WHEN_TO_USE":"Is this pull request actually safe to merge?","WITNESS":"source-parse"},"health":"ok","id":"tri/pr","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prcheck.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_pr","name":{"en":"tri pr"},"qualifiedId":"gHashTag/t27:tri/pr","repo":"gHashTag/t27","schema":2,"searchText":"tri/pr tri pr is this pull request actually safe to merge? is this pull request actually safe to merge? landed classify every failing check and say plainly whether it is safe to merge. did this pull request's content actually reach the default branch? ready","sha256":"4909a13b33ff6128bf308132850effbdfcfc1b44bb8ccedf1c7bacc288dea720","skills":[],"source":"cli/tri/src/prcheck.rs","specPath":"specs/tools/tri/pr.t27","summary":{"en":"Is this pull request actually safe to merge?","ru":"Действительно ли этот pull request безопасно мержить?"},"typecheckOk":true,"variant":"Commands::Pr","whenToUse":"Is this pull request actually safe to merge?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","actions":[{"about":"Which specs are blocked only by prose, and how many lines that is.","name":"report"}],"agents":[],"args":[],"command":"tri prose","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs a literate author left prose in, and how far that prose is from code.","ABOUT_SOURCE":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","ACTIONS":["report"],"ACTIONS_ABOUT":["Which specs are blocked only by prose, and how many lines that is."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri prose","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/prose","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/prose","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prose.rs","VARIANT":"Commands::Prose","WHEN_TO_USE":"Specs a literate author left prose in, and how far that prose is from code.","WITNESS":"source-parse"},"health":"ok","id":"tri/prose","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prose.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_prose","name":{"en":"tri prose"},"qualifiedId":"gHashTag/t27:tri/prose","repo":"gHashTag/t27","schema":2,"searchText":"tri/prose tri prose specs a literate author left prose in, and how far that prose is from code. specs a literate author left prose in, and how far that prose is from code. report which specs are blocked only by prose, and how many lines that is.","sha256":"8689a47ee97a2588da26a7492f8c6f543dd25702b9962cbdd25ce16070129d38","skills":[],"source":"cli/tri/src/prose.rs","specPath":"specs/tools/tri/prose.t27","summary":{"en":"Specs a literate author left prose in, and how far that prose is from code.","ru":"Спеки, в которых литературный автор оставил прозу, и насколько эта проза далека от кода."},"typecheckOk":true,"variant":"Commands::Prose","whenToUse":"Specs a literate author left prose in, and how far that prose is from code.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","actions":[{"about":"Every quantified clause, its binders, and the size of its domain.","name":"report"},{"about":"Every line carrying a quantifier keyword, and whether the census read it.","name":"audit"}],"agents":[],"args":[],"command":"tri quantifiers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Every quantified clause, its binders, and the size of its domain.","ABOUT_SOURCE":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","ACTIONS":["report","audit"],"ACTIONS_ABOUT":["Every quantified clause, its binders, and the size of its domain.","Every line carrying a quantifier keyword, and whether the census read it."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri quantifiers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/quantifiers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/quantifiers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/quant.rs","VARIANT":"Commands::Quantifiers","WHEN_TO_USE":"Every quantified clause, its binders, and the size of its domain.","WITNESS":"source-parse"},"health":"ok","id":"tri/quantifiers","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/quant.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_quantifiers","name":{"en":"tri quantifiers"},"qualifiedId":"gHashTag/t27:tri/quantifiers","repo":"gHashTag/t27","schema":2,"searchText":"tri/quantifiers tri quantifiers every quantified clause, its binders, and the size of its domain. every quantified clause, its binders, and the size of its domain. report every quantified clause, its binders, and the size of its domain. audit every line carrying a quantifier keyword, and whether the census read it.","sha256":"f6500ab3e4a78e54e2e83ed1aa6eb389ec0da64ebb735841849c788efc0e1a44","skills":[],"source":"cli/tri/src/quant.rs","specPath":"specs/tools/tri/quantifiers.t27","summary":{"en":"Every quantified clause, its binders, and the size of its domain.","ru":"Каждая квантифицированная клауза, её связанные переменные и размер её домена."},"typecheckOk":true,"variant":"Commands::Quantifiers","whenToUse":"Every quantified clause, its binders, and the size of its domain.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/red.rs:1","actions":[{"about":"Show workflows whose most recent run on the default branch failed.","name":"now"},{"about":"Which STEP each recent failure of one workflow died at, oldest first.","name":"why"}],"agents":[],"args":[],"command":"tri red","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri red` -- what is failing on main right now, and since when.","ABOUT_SOURCE":"//! module doc, cli/tri/src/red.rs:1","ACTIONS":["now","why"],"ACTIONS_ABOUT":["Show workflows whose most recent run on the default branch failed.","Which STEP each recent failure of one workflow died at, oldest first."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri red","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/red","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/red","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/red.rs","VARIANT":"Commands::Red","WHEN_TO_USE":"`tri red` -- what is failing on main right now, and since when.","WITNESS":"source-parse"},"health":"ok","id":"tri/red","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/red.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_red","name":{"en":"tri red"},"qualifiedId":"gHashTag/t27:tri/red","repo":"gHashTag/t27","schema":2,"searchText":"tri/red tri red `tri red` -- what is failing on main right now, and since when. `tri red` -- what is failing on main right now, and since when. now show workflows whose most recent run on the default branch failed. why which step each recent failure of one workflow died at, oldest first.","sha256":"dbc09d850d87e9623513a9eedf77764f4b84cb299f4175c068eee278a0748a71","skills":[],"source":"cli/tri/src/red.rs","specPath":"specs/tools/tri/red.t27","summary":{"en":"`tri red` -- what is failing on main right now, and since when.","ru":"`tri red` -- что падает на main прямо сейчас и с какого момента."},"typecheckOk":true,"variant":"Commands::Red","whenToUse":"`tri red` -- what is failing on main right now, and since when.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","actions":[{"about":"Rewrite FROZEN_HASH from the current bytes of the sealed file.","name":"write"},{"about":"Report whether the seal matches, and exit non-zero if it does not.","name":"check"}],"agents":[],"args":[],"command":"tri reseal","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recompute the FROZEN_HASH seal from the file it seals.","ABOUT_SOURCE":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","ACTIONS":["write","check"],"ACTIONS_ABOUT":["Rewrite FROZEN_HASH from the current bytes of the sealed file.","Report whether the seal matches, and exit non-zero if it does not."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri reseal","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/reseal","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/reseal","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/reseal.rs","VARIANT":"Commands::Reseal","WHEN_TO_USE":"Recompute the FROZEN_HASH seal from the file it seals.","WITNESS":"source-parse"},"health":"ok","id":"tri/reseal","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/reseal.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_reseal","name":{"en":"tri reseal"},"qualifiedId":"gHashTag/t27:tri/reseal","repo":"gHashTag/t27","schema":2,"searchText":"tri/reseal tri reseal recompute the frozen_hash seal from the file it seals. recompute the frozen_hash seal from the file it seals. write rewrite frozen_hash from the current bytes of the sealed file. check report whether the seal matches, and exit non-zero if it does not.","sha256":"f4b1478122c02d2e4c50a5bb589e03e97212875c368fad659824f5f532e824d8","skills":[],"source":"cli/tri/src/reseal.rs","specPath":"specs/tools/tri/reseal.t27","summary":{"en":"Recompute the FROZEN_HASH seal from the file it seals.","ru":"Пересчитывает печать FROZEN_HASH по файлу, который она запечатывает."},"typecheckOk":true,"variant":"Commands::Reseal","whenToUse":"Recompute the FROZEN_HASH seal from the file it seals.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","actions":[{"about":"Run the five structural checks on a design directory.","name":"check"}],"agents":[],"args":[],"command":"tri rtl","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ABOUT_SOURCE":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","ACTIONS":["check"],"ACTIONS_ABOUT":["Run the five structural checks on a design directory."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri rtl","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/rtl","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/rtl","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/rtl.rs","VARIANT":"Commands::Rtl","WHEN_TO_USE":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","WITNESS":"source-parse"},"health":"ok","id":"tri/rtl","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/rtl.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_rtl","name":{"en":"tri rtl"},"qualifiedId":"gHashTag/t27:tri/rtl","repo":"gHashTag/t27","schema":2,"searchText":"tri/rtl tri rtl the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. check run the five structural checks on a design directory.","sha256":"656a55d5c53935a47b6bfb87528cb7eadd93b56ea60bc246f720ace506be7109","skills":[],"source":"cli/tri/src/rtl.rs","specPath":"specs/tools/tri/rtl.t27","summary":{"en":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ru":"Структурная проверка, которую предлагает t27.ai, локально: пять вердиктов, версия yosys рядом с числами и никаких заявлений о корректности."},"typecheckOk":true,"variant":"Commands::Rtl","whenToUse":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","actions":[{"about":"Is the built compiler newer than the source the seals are checked against?","name":"fresh"},{"about":"Seals whose claims no longer match what the compiler produces, and the one command that repairs them.","name":"drift"},{"about":"Specs that carry more than one seal, and which of those pairs disagree.","name":"twins"},{"about":"Copy the NEWEST seal's claims onto its twins, after a re-seal.","name":"sync-twins"},{"about":"Seals that record `gen_hash=none` -- a spec that produced no output, sealed.","name":"hollow"}],"agents":[],"args":[],"command":"tri seals","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What `.trinity/seals` says about a spec, when it says it twice.","ABOUT_SOURCE":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","ACTIONS":["fresh","drift","twins","sync-twins","hollow"],"ACTIONS_ABOUT":["Is the built compiler newer than the source the seals are checked against?","Seals whose claims no longer match what the compiler produces, and the one command that repairs them.","Specs that carry more than one seal, and which of those pairs disagree.","Copy the NEWEST seal's claims onto its twins, after a re-seal.","Seals that record `gen_hash=none` -- a spec that produced no output, sealed."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri seals","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/seals","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/seals","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/seals.rs","VARIANT":"Commands::Seals","WHEN_TO_USE":"What `.trinity/seals` says about a spec, when it says it twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/seals","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/seals.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_seals","name":{"en":"tri seals"},"qualifiedId":"gHashTag/t27:tri/seals","repo":"gHashTag/t27","schema":2,"searchText":"tri/seals tri seals what `.trinity/seals` says about a spec, when it says it twice. what `.trinity/seals` says about a spec, when it says it twice. fresh is the built compiler newer than the source the seals are checked against? drift seals whose claims no longer match what the compiler produces, and the one command that repairs them. twins specs that carry more than one seal, and which of those pairs disagree. sync-twins copy the newest seal's claims onto its twins, after a re-seal. hollow seals that record `gen_hash=none` -- a spec that produced no output, sealed.","sha256":"e0932fe334d920e6591445980b99b8b9bebb845756394199bd209c13e13d0d15","skills":[],"source":"cli/tri/src/seals.rs","specPath":"specs/tools/tri/seals.t27","summary":{"en":"What `.trinity/seals` says about a spec, when it says it twice.","ru":"Что `.trinity/seals` говорит о спеке, когда говорит это дважды."},"typecheckOk":true,"variant":"Commands::Seals","whenToUse":"What `.trinity/seals` says about a spec, when it says it twice.","witness":"source-parse"},{"aboutSource":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","actions":[],"agents":[],"args":[{"about":"","name":"--addr"}],"command":"tri serve","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ABOUT_SOURCE":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--addr"],"COMMAND":"tri serve","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/serve","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/serve","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Serve","WHEN_TO_USE":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","WITNESS":"source-parse"},"health":"ok","id":"tri/serve","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_serve","name":{"en":"tri serve"},"qualifiedId":"gHashTag/t27:tri/serve","repo":"gHashTag/t27","schema":2,"searchText":"tri/serve tri serve serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on . serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on .","sha256":"0aa1373204ff6f8fd41fd8d19428f3d0754fc124578e3f1fbcc2f55c9ff55f4a","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/serve.t27","summary":{"en":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ru":"Поднимает HTTP API trinity depin на axum: POST /prove, GET /epoch-challenge, GET /health; печатает «trinity depin v0.1.0 -- listening on »."},"typecheckOk":true,"variant":"Commands::Serve","whenToUse":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","witness":"source-parse"},{"aboutSource":"tri-mcp tools tri_skill_begin and tri_skill_end descriptions (cli/tri-mcp/src/main.rs); SkillAction enum cli/tri/src/main.rs:349","actions":[{"about":"Write a new lesson to the spool, unnumbered.","name":"add"},{"about":"Fold every spooled lesson into SKILL.md, numbering them on the way in.","name":"fold"},{"about":"Check every SKILL.md's section numbering for collisions.","name":"check"},{"about":"Sections whose body was cut short at some point in the file's history.","name":"lost"},{"about":"Every cross-reference in the skills, and whether it resolves.","name":"refs"},{"about":"Sections that state a FIGURE, and which of those a reader can re-take.","name":"claims"},{"about":"Move sections you appended to the numbers the base branch left free.","name":"renumber"},{"about":"","name":"begin"},{"about":"","name":"end"}],"agents":[],"args":[],"command":"tri skill","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","ABOUT_SOURCE":"tri-mcp tools tri_skill_begin and tri_skill_end descriptions (cli/tri-mcp/src/main.rs); SkillAction enum cli/tri/src/main.rs:349","ACTIONS":["add","fold","check","lost","refs","claims","renumber","begin","end"],"ACTIONS_ABOUT":["Write a new lesson to the spool, unnumbered.","Fold every spooled lesson into SKILL.md, numbering them on the way in.","Check every SKILL.md's section numbering for collisions.","Sections whose body was cut short at some point in the file's history.","Every cross-reference in the skills, and whether it resolves.","Sections that state a FIGURE, and which of those a reader can re-take.","Move sections you appended to the numbers the base branch left free.","",""],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri skill","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/skill","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/skill","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Skill","WHEN_TO_USE":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","WITNESS":"source-parse"},"health":"ok","id":"tri/skill","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_skill","name":{"en":"tri skill"},"qualifiedId":"gHashTag/t27:tri/skill","repo":"gHashTag/t27","schema":2,"searchText":"tri/skill tri skill begins a new phi loop skill session bound to an issue. ends the active phi loop skill session. the add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (skill.md lesson spool). begins a new phi loop skill session bound to an issue. ends the active phi loop skill session. the add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (skill.md lesson spool). add write a new lesson to the spool, unnumbered. fold fold every spooled lesson into skill.md, numbering them on the way in. check check every skill.md's section numbering for collisions. lost sections whose body was cut short at some point in the file's history. refs every cross-reference in the skills, and whether it resolves. claims sections that state a figure, and which of those a reader can re-take. renumber move sections you appended to the numbers the base branch left free. begin end","sha256":"4e19baf0ea4267dbbd23f71b8d324779c85427672378205a64726118c36a8e68","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/skill.t27","summary":{"en":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","ru":"Начинает новую сессию скилла PHI LOOP, привязанную к issue; завершает активную сессию. Действия add/fold/check/lost/refs/claims/renumber ведут спул уроков SKILL.md и описаны в своих clap-доках."},"typecheckOk":true,"variant":"Commands::Skill","whenToUse":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_status description (cli/tri-mcp/src/main.rs); handler cmd_status prints === PHI LOOP STATUS === (cli/tri/src/main.rs:613)","actions":[],"agents":[],"args":[],"command":"tri status","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ABOUT_SOURCE":"tri-mcp tool tri_status description (cli/tri-mcp/src/main.rs); handler cmd_status prints === PHI LOOP STATUS === (cli/tri/src/main.rs:613)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri status","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/status","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/status","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Status","WHEN_TO_USE":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","WITNESS":"source-parse"},"health":"ok","id":"tri/status","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_status","name":{"en":"tri status"},"qualifiedId":"gHashTag/t27:tri/status","repo":"gHashTag/t27","schema":2,"searchText":"tri/status tri status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. returns phi loop status including active skill, cell, issue binding, and uncommitted changes.","sha256":"bacc3fad069505febf375adbbfea9a861e4dc884a6c3d98d723bc5cd22365290","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/status.t27","summary":{"en":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ru":"Показывает статус PHI LOOP: активный скилл, ячейку, привязку к issue и незакоммиченные изменения."},"typecheckOk":true,"variant":"Commands::Status","whenToUse":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","actions":[{"about":"Synthesise a top across values of one parameter and report the trend.","name":"area"}],"agents":[],"args":[],"command":"tri sweep","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise across a parameter and check the area actually moves.","ABOUT_SOURCE":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top across values of one parameter and report the trend."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri sweep","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/sweep","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/sweep","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/sweep.rs","VARIANT":"Commands::Sweep","WHEN_TO_USE":"Synthesise across a parameter and check the area actually moves.","WITNESS":"source-parse"},"health":"ok","id":"tri/sweep","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/sweep.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_sweep","name":{"en":"tri sweep"},"qualifiedId":"gHashTag/t27:tri/sweep","repo":"gHashTag/t27","schema":2,"searchText":"tri/sweep tri sweep synthesise across a parameter and check the area actually moves. synthesise across a parameter and check the area actually moves. area synthesise a top across values of one parameter and report the trend.","sha256":"7b032422cdd86d854023351e841cf5c6f6f43327cab5504b6afd61ac889614e1","skills":[],"source":"cli/tri/src/sweep.rs","specPath":"specs/tools/tri/sweep.t27","summary":{"en":"Synthesise across a parameter and check the area actually moves.","ru":"Синтез по параметру с проверкой, что площадь действительно меняется."},"typecheckOk":true,"variant":"Commands::Sweep","whenToUse":"Synthesise across a parameter and check the area actually moves.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","actions":[{"about":"Synthesise a top module and report LUT/DSP/FF/CARRY4 counts.","name":"area"}],"agents":[],"args":[],"command":"tri synth","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise a top module and report area, with the instrument named.","ABOUT_SOURCE":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top module and report LUT/DSP/FF/CARRY4 counts."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri synth","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/synth","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/synth","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/synth.rs","VARIANT":"Commands::Synth","WHEN_TO_USE":"Synthesise a top module and report area, with the instrument named.","WITNESS":"source-parse"},"health":"ok","id":"tri/synth","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/synth.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_synth","name":{"en":"tri synth"},"qualifiedId":"gHashTag/t27:tri/synth","repo":"gHashTag/t27","schema":2,"searchText":"tri/synth tri synth synthesise a top module and report area, with the instrument named. synthesise a top module and report area, with the instrument named. area synthesise a top module and report lut/dsp/ff/carry4 counts.","sha256":"51a2f2cad1da2385b6c7b16ab1e4721df80fe98918a60a3410c88fe14da4d743","skills":[],"source":"cli/tri/src/synth.rs","specPath":"specs/tools/tri/synth.t27","summary":{"en":"Synthesise a top module and report area, with the instrument named.","ru":"Синтезирует top-модуль и сообщает площадь с указанием инструмента."},"typecheckOk":true,"variant":"Commands::Synth","whenToUse":"Synthesise a top module and report area, with the instrument named.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","actions":[],"agents":[{"letter":"T","ok":true},{"letter":"V","ok":true}],"args":[{"about":"","name":""}],"command":"tri test","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Runs tests for a .t27 spec file using t27c.","ABOUT_SOURCE":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["T","V"],"AGENTS_NOTE":".claude/agents/agent-v-verify.md:47 (tri test -- Run conformance tests); .claude/agents/trinity.md:70 (7. Verify - Run tri test).","ARGS":[""],"COMMAND":"tri test","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/test","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/test","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Test","WHEN_TO_USE":"Runs tests for a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/test","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_test","name":{"en":"tri test"},"qualifiedId":"gHashTag/t27:tri/test","repo":"gHashTag/t27","schema":2,"searchText":"tri/test tri test runs tests for a .t27 spec file using t27c. runs tests for a .t27 spec file using t27c. t v","sha256":"a960b7f1a9936d59ccf97203a7031161075c78d1ba6a0f7c78b65084d3a910a7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/test.t27","summary":{"en":"Runs tests for a .t27 spec file using t27c.","ru":"Запускает тесты для файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Test","whenToUse":"Runs tests for a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"Words to look for. A row matches on any; rows carrying more come first.","name":""},{"about":"How many recent commits on the base branch to read.","name":"--commits"}],"command":"tri topic","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Has anyone already done this, or are they doing it now?","ABOUT_SOURCE":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[": Words to look for. A row matches on any; rows carrying more come first.","--commits: How many recent commits on the base branch to read."],"COMMAND":"tri topic","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/topic","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/topic","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Topic","WHEN_TO_USE":"Has anyone already done this, or are they doing it now?","WITNESS":"source-parse"},"health":"ok","id":"tri/topic","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_topic","name":{"en":"tri topic"},"qualifiedId":"gHashTag/t27:tri/topic","repo":"gHashTag/t27","schema":2,"searchText":"tri/topic tri topic has anyone already done this, or are they doing it now? has anyone already done this, or are they doing it now?","sha256":"0ca5ed85564d0231316703fb63605e962ea2cbf2fb37a273c7d9eac793a45cd5","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/topic.t27","summary":{"en":"Has anyone already done this, or are they doing it now?","ru":"Кто-нибудь уже делал это или делает сейчас?"},"typecheckOk":true,"variant":"Commands::Topic","whenToUse":"Has anyone already done this, or are they doing it now?","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/types_dup.rs:1","actions":[{"about":"Type names with more than one definition in the spec tree.","name":"dup"},{"about":"Hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away.","name":"ratchet"},{"about":"Cross-check the written classification against what the tree says today.","name":"classified"},{"about":"Names defined more than once INSIDE ONE FILE.","name":"redef"}],"agents":[],"args":[],"command":"tri types","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"One type name, more than one definition.","ABOUT_SOURCE":"//! module doc, cli/tri/src/types_dup.rs:1","ACTIONS":["dup","ratchet","classified","redef"],"ACTIONS_ABOUT":["Type names with more than one definition in the spec tree.","Hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away.","Cross-check the written classification against what the tree says today.","Names defined more than once INSIDE ONE FILE."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri types","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/types","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/types","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/types_dup.rs","VARIANT":"Commands::Types","WHEN_TO_USE":"One type name, more than one definition.","WITNESS":"source-parse"},"health":"ok","id":"tri/types","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/types_dup.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_types","name":{"en":"tri types"},"qualifiedId":"gHashTag/t27:tri/types","repo":"gHashTag/t27","schema":2,"searchText":"tri/types tri types one type name, more than one definition. one type name, more than one definition. dup type names with more than one definition in the spec tree. ratchet hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away. classified cross-check the written classification against what the tree says today. redef names defined more than once inside one file.","sha256":"16ea516e67cf93e24863ebb8aabc61ac3bc67fed76d94a228f947258b5296f55","skills":[],"source":"cli/tri/src/types_dup.rs","specPath":"specs/tools/tri/types.t27","summary":{"en":"One type name, more than one definition.","ru":"Одно имя типа, больше одного определения."},"typecheckOk":true,"variant":"Commands::Types","whenToUse":"One type name, more than one definition.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/unparsed.rs:1","actions":[{"about":"Rank the constructs that stop the compiler, most specs first.","name":"report"},{"about":"For each unreadable spec, the ITEM whose presence causes the failure.","name":"locate"},{"about":"Cross-check the census against an INDEPENDENTLY built population.","name":"agree"},{"about":"Run every construct's minimal source and say which the compiler rejects.","name":"probe"}],"agents":[],"args":[],"command":"tri unparsed","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ABOUT_SOURCE":"//! module doc, cli/tri/src/unparsed.rs:1","ACTIONS":["report","locate","agree","probe"],"ACTIONS_ABOUT":["Rank the constructs that stop the compiler, most specs first.","For each unreadable spec, the ITEM whose presence causes the failure.","Cross-check the census against an INDEPENDENTLY built population.","Run every construct's minimal source and say which the compiler rejects."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri unparsed","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/unparsed","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/unparsed","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/unparsed.rs","VARIANT":"Commands::Unparsed","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","WITNESS":"source-parse"},"health":"ok","id":"tri/unparsed","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/unparsed.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_unparsed","name":{"en":"tri unparsed"},"qualifiedId":"gHashTag/t27:tri/unparsed","repo":"gHashTag/t27","schema":2,"searchText":"tri/unparsed tri unparsed specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. report rank the constructs that stop the compiler, most specs first. locate for each unreadable spec, the item whose presence causes the failure. agree cross-check the census against an independently built population. probe run every construct's minimal source and say which the compiler rejects.","sha256":"6aaf39d92a0b7c5443faa32b97cd7fd74b251a8258aee8390b6965d5fee2e660","skills":[],"source":"cli/tri/src/unparsed.rs","specPath":"specs/tools/tri/unparsed.t27","summary":{"en":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по КОНСТРУКЦИИ, которая его останавливает, -- и каждая конструкция, подтверждённая живой пробой."},"typecheckOk":true,"variant":"Commands::Unparsed","whenToUse":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","actions":[{"about":"Generate a module's Verilog and execute its registered vectors.","name":"run"},{"about":"Inventory every vector file: executed, debt, or aspirational.","name":"debt"}],"agents":[],"args":[],"command":"tri vectors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ABOUT_SOURCE":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","ACTIONS":["run","debt"],"ACTIONS_ABOUT":["Generate a module's Verilog and execute its registered vectors.","Inventory every vector file: executed, debt, or aspirational."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri vectors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vectors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vectors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vectors.rs","VARIANT":"Commands::Vectors","WHEN_TO_USE":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","WITNESS":"source-parse"},"health":"ok","id":"tri/vectors","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vectors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vectors","name":{"en":"tri vectors"},"qualifiedId":"gHashTag/t27:tri/vectors","repo":"gHashTag/t27","schema":2,"searchText":"tri/vectors tri vectors the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. run generate a module's verilog and execute its registered vectors. debt inventory every vector file: executed, debt, or aspirational.","sha256":"7babf01001cd4e86adfad3f717ccf6cf0772dd38e143ab71d782bd66bc455b82","skills":[],"source":"cli/tri/src/vectors.rs","specPath":"specs/tools/tri/vectors.t27","summary":{"en":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ru":"Реестр исполняемых векторов: запустить векторы модуля или проинвентаризировать, какие файлы исполняются, а какие только показываются."},"typecheckOk":true,"variant":"Commands::Vectors","whenToUse":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_verdict description (cli/tri-mcp/src/main.rs); handler cmd_verdict runs t27c validate-seals, validate-phi-identity and, with --toxic, validate-toxicity (cli/tri/src/main.rs:876)","actions":[],"agents":[{"letter":"V","ok":true}],"args":[{"about":"","name":"--toxic"}],"command":"tri verdict","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks for toxic regressions by analyzing swarm health metrics.","ABOUT_SOURCE":"tri-mcp tool tri_verdict description (cli/tri-mcp/src/main.rs); handler cmd_verdict runs t27c validate-seals, validate-phi-identity and, with --toxic, validate-toxicity (cli/tri/src/main.rs:876)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["V"],"AGENTS_NOTE":".claude/agents/agent-v-verify.md:49 (tri verdict -- Generate pass/fail report); docs/agents/AGENTS_ALPHABET.md:80, PHASE 5 VERDICT: V analyzes metrics, tri verdict --toxic.","ARGS":["--toxic"],"COMMAND":"tri verdict","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/verdict","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/verdict","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Verdict","WHEN_TO_USE":"Checks for toxic regressions by analyzing swarm health metrics.","WITNESS":"source-parse"},"health":"ok","id":"tri/verdict","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_verdict","name":{"en":"tri verdict"},"qualifiedId":"gHashTag/t27:tri/verdict","repo":"gHashTag/t27","schema":2,"searchText":"tri/verdict tri verdict checks for toxic regressions by analyzing swarm health metrics. checks for toxic regressions by analyzing swarm health metrics. v","sha256":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/verdict.t27","summary":{"en":"Checks for toxic regressions by analyzing swarm health metrics.","ru":"Проверяет токсичные регрессии, анализируя метрики здоровья роя."},"typecheckOk":true,"variant":"Commands::Verdict","whenToUse":"Checks for toxic regressions by analyzing swarm health metrics.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","actions":[{"about":"Walk the corpus through `t27c icarus-simulate` and print the funnel.","name":"funnel"}],"agents":[],"args":[],"command":"tri vsim","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"How far each spec gets when its generated Verilog is actually RUN.","ABOUT_SOURCE":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","ACTIONS":["funnel"],"ACTIONS_ABOUT":["Walk the corpus through `t27c icarus-simulate` and print the funnel."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri vsim","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vsim","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vsim","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vsim.rs","VARIANT":"Commands::Vsim","WHEN_TO_USE":"How far each spec gets when its generated Verilog is actually RUN. The one arm that can catch a defect whose nature is that it compiles, and the one arm whose gate has had no targets since #2283 -- see #2987.","WITNESS":"source-parse"},"health":"ok","id":"tri/vsim","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vsim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vsim","name":{"en":"tri vsim"},"qualifiedId":"gHashTag/t27:tri/vsim","repo":"gHashTag/t27","schema":2,"searchText":"tri/vsim tri vsim how far each spec gets when its generated verilog is actually run. how far each spec gets when its generated verilog is actually run. the one arm that can catch a defect whose nature is that it compiles, and the one arm whose gate has had no targets since #2283 -- see #2987. funnel walk the corpus through `t27c icarus-simulate` and print the funnel.","sha256":"b33711b2a50bd614b706e77c813e7c31e71cd7f547489bf073c0de59c17de2fb","skills":[],"source":"cli/tri/src/vsim.rs","specPath":"specs/tools/tri/vsim.t27","summary":{"en":"How far each spec gets when its generated Verilog is actually RUN.","ru":"Как далеко доходит каждая спека, когда её сгенерированный Verilog действительно ЗАПУСКАЮТ."},"typecheckOk":true,"variant":"Commands::Vsim","whenToUse":"How far each spec gets when its generated Verilog is actually RUN. The one arm that can catch a defect whose nature is that it compiles, and the one arm whose gate has had no targets since #2283 -- see #2987.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","actions":[],"agents":[],"args":[{"about":"Record `origin/master` as the base of a measurement starting now.","name":"--start"},{"about":"Report whether the recorded base is still the tip, and refuse if it is not.","name":"--check"},{"about":"The ref the measurement is against. Defaults to `origin/master`.","name":"--base"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"command":"tri window","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Was the base you measured against still the tip when you reported?","ABOUT_SOURCE":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--start: Record `origin/master` as the base of a measurement starting now.","--check: Report whether the recorded base is still the tip, and refuse if it is not.","--base: The ref the measurement is against. Defaults to `origin/master`.","--self-check: Run the controls and report, changing nothing."],"COMMAND":"tri window","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/window","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/window","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/window.rs","VARIANT":"Commands::Window","WHEN_TO_USE":"Was the base you measured against still the tip when you reported?","WITNESS":"source-parse"},"health":"ok","id":"tri/window","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/window.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_window","name":{"en":"tri window"},"qualifiedId":"gHashTag/t27:tri/window","repo":"gHashTag/t27","schema":2,"searchText":"tri/window tri window was the base you measured against still the tip when you reported? was the base you measured against still the tip when you reported?","sha256":"43202aabe15b2c06b1e0709f8e0ae6fc1cb13b2cb7e5a5adee77340a1bf03ff4","skills":[],"source":"cli/tri/src/window.rs","specPath":"specs/tools/tri/window.t27","summary":{"en":"Was the base you measured against still the tip when you reported?","ru":"Была ли база, относительно которой вы мерили, всё ещё вершиной, когда вы отчитывались?"},"typecheckOk":true,"variant":"Commands::Window","whenToUse":"Was the base you measured against still the tip when you reported?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","actions":[],"agents":[],"args":[{"about":"Also measure disk usage. Off by default: `du` over 120 checkouts is slow, and the holdings answer is the one that decides anything.","name":"--size"},{"about":"Print every tree, not only those holding work or unreadable.","name":"--all"}],"command":"tri worktrees","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the checkouts on this disk are holding. Deletes nothing.","ABOUT_SOURCE":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--size: Also measure disk usage. Off by default: `du` over 120 checkouts is slow, and the holdings answer is the one that decides anything.","--all: Print every tree, not only those holding work or unreadable."],"COMMAND":"tri worktrees","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/worktrees","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/worktrees","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/trees.rs","VARIANT":"Commands::Worktrees","WHEN_TO_USE":"What the checkouts on this disk are holding. Deletes nothing.","WITNESS":"source-parse"},"health":"ok","id":"tri/worktrees","inSpecCorpus":false,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/trees.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_worktrees","name":{"en":"tri worktrees"},"qualifiedId":"gHashTag/t27:tri/worktrees","repo":"gHashTag/t27","schema":2,"searchText":"tri/worktrees tri worktrees what the checkouts on this disk are holding. deletes nothing. what the checkouts on this disk are holding. deletes nothing.","sha256":"1a01df4f397fe76552d278be19fd778995522fe45e9971a0ad8a017b723ca446","skills":[],"source":"cli/tri/src/trees.rs","specPath":"specs/tools/tri/worktrees.t27","summary":{"en":"What the checkouts on this disk are holding. Deletes nothing.","ru":"Что держат чекауты на этом диске. Ничего не удаляет."},"typecheckOk":true,"variant":"Commands::Worktrees","whenToUse":"What the checkouts on this disk are holding. Deletes nothing.","witness":"source-parse"}],"version":1} +{"collisions":[{"name":"fpga","t27":"gHashTag/t27:tri/fpga","trinity":"gHashTag/trinity:tri/fpga"},{"name":"test","t27":"gHashTag/t27:tri/test","trinity":"gHashTag/trinity:tri/test"}],"compilerWasmSha256":"4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4","contentSha256":"647180f562978017c56bc7ab6564000e04f23ace919e1feba17a75ad973942ab","counts":{"byRepo":{"gHashTag/t27":58,"gHashTag/trinity":34},"byWitness":{"help-output":1,"registry-export":29,"runtime":0,"source-parse":62},"collisions":2,"enabled":92,"mcp":11,"mcpExternal":6,"mcpTools":255,"mcpWithTools":6,"schema2":92,"specs":92,"tri":81,"triActions":124,"triWithActions":38,"trinityTri":29,"typecheckOk":92,"withAgents":6,"withSkills":5},"generatedAt":"2026-09-15T15:22:20.637Z","groups":{"mcpByRepo":{"gHashTag/t27":["mcp/gitbutler","mcp/inngest-dev","mcp/notebooklm","mcp/t27-traceability","mcp/tri-mcp","mcp/tri-ssot"],"gHashTag/trinity":["mcp/needle","mcp/neon","mcp/railway-mcp-server","mcp/trinity","mcp/zig-docs"]},"triByAgent":{"-":["gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/test","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet","tri/abandoned","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/vsim","tri/window","tri/worktrees"],"C":["tri/gen"],"E":["tri/experience"],"T":["tri/gen","tri/test"],"V":["tri/test","tri/verdict"],"W":["tri/cell"]},"triByRepo":{"gHashTag/t27":["tri/abandoned","tri/cell","tri/census","tri/ci","tri/competitors","tri/discard","tri/doctor","tri/elab","tri/emit","tri/experience","tri/fleet","tri/fmt","tri/fpga","tri/gates","tri/gen","tri/harness","tri/health","tri/hooks","tri/issues","tri/jumps","tri/kinds","tri/lean","tri/ledgers","tri/loop","tri/merging","tri/misread","tri/mods","tri/mutate","tri/now","tri/one-away","tri/orphaned","tri/pr","tri/prose","tri/quantifiers","tri/red","tri/reseal","tri/rtl","tri/seals","tri/serve","tri/skill","tri/status","tri/sweep","tri/synth","tri/test","tri/topic","tri/types","tri/unparsed","tri/vectors","tri/verdict","tri/vsim","tri/window","tri/worktrees"],"gHashTag/trinity":["gHashTag/trinity:tri/bench","gHashTag/trinity:tri/bio","gHashTag/trinity:tri/blindspots","gHashTag/trinity:tri/conscious","gHashTag/trinity:tri/constants","gHashTag/trinity:tri/cosmos","gHashTag/trinity:tri/dashboard","gHashTag/trinity:tri/fib","gHashTag/trinity:tri/fpga","gHashTag/trinity:tri/gematria","gHashTag/trinity:tri/govern","gHashTag/trinity:tri/hardware","gHashTag/trinity:tri/identity","gHashTag/trinity:tri/lucas","gHashTag/trinity:tri/mesh","gHashTag/trinity:tri/needle","gHashTag/trinity:tri/needle-check","gHashTag/trinity:tri/needle-search","gHashTag/trinity:tri/omega","gHashTag/trinity:tri/particles","gHashTag/trinity:tri/phi","gHashTag/trinity:tri/quantum","gHashTag/trinity:tri/reputation","gHashTag/trinity:tri/sacred-const","gHashTag/trinity:tri/spiral","gHashTag/trinity:tri/swarm","gHashTag/trinity:tri/test","gHashTag/trinity:tri/vsa","gHashTag/trinity:tri/wallet"]}},"i18n":[{"bundle":"apps/website/i18n/agents.ru.json","coverage":{"n":92,"total":92},"enabled":true,"fields":["SUMMARY","NAME"],"locale":"ru","missing":[],"scope":["specs/skills","specs/crons","specs/agents","specs/functions","specs/tools"],"sha256":"c8871fb4ccdef8fc3cc2937af5db0e307ab0b62f6a03ece9f4512851ffd64f04","spec":"specs/i18n/agents-ru.t27"}],"ladder":{"agents":27,"crons":33,"functions":28,"skills":26,"specs":1407,"tools":92},"legacy":{"mcp/gitbutler":"gHashTag/t27:mcp/gitbutler","mcp/inngest-dev":"gHashTag/t27:mcp/inngest-dev","mcp/needle":"gHashTag/trinity:mcp/needle","mcp/neon":"gHashTag/trinity:mcp/neon","mcp/notebooklm":"gHashTag/t27:mcp/notebooklm","mcp/railway-mcp-server":"gHashTag/trinity:mcp/railway-mcp-server","mcp/t27-traceability":"gHashTag/t27:mcp/t27-traceability","mcp/tri-mcp":"gHashTag/t27:mcp/tri-mcp","mcp/tri-ssot":"gHashTag/t27:mcp/tri-ssot","mcp/trinity":"gHashTag/trinity:mcp/trinity","mcp/zig-docs":"gHashTag/trinity:mcp/zig-docs","tri/abandoned":"gHashTag/t27:tri/abandoned","tri/cell":"gHashTag/t27:tri/cell","tri/census":"gHashTag/t27:tri/census","tri/ci":"gHashTag/t27:tri/ci","tri/competitors":"gHashTag/t27:tri/competitors","tri/discard":"gHashTag/t27:tri/discard","tri/doctor":"gHashTag/t27:tri/doctor","tri/elab":"gHashTag/t27:tri/elab","tri/emit":"gHashTag/t27:tri/emit","tri/experience":"gHashTag/t27:tri/experience","tri/fleet":"gHashTag/t27:tri/fleet","tri/fmt":"gHashTag/t27:tri/fmt","tri/fpga":"gHashTag/t27:tri/fpga","tri/gates":"gHashTag/t27:tri/gates","tri/gen":"gHashTag/t27:tri/gen","tri/harness":"gHashTag/t27:tri/harness","tri/health":"gHashTag/t27:tri/health","tri/hooks":"gHashTag/t27:tri/hooks","tri/issues":"gHashTag/t27:tri/issues","tri/jumps":"gHashTag/t27:tri/jumps","tri/kinds":"gHashTag/t27:tri/kinds","tri/lean":"gHashTag/t27:tri/lean","tri/ledgers":"gHashTag/t27:tri/ledgers","tri/loop":"gHashTag/t27:tri/loop","tri/merging":"gHashTag/t27:tri/merging","tri/misread":"gHashTag/t27:tri/misread","tri/mods":"gHashTag/t27:tri/mods","tri/mutate":"gHashTag/t27:tri/mutate","tri/now":"gHashTag/t27:tri/now","tri/one-away":"gHashTag/t27:tri/one-away","tri/orphaned":"gHashTag/t27:tri/orphaned","tri/pr":"gHashTag/t27:tri/pr","tri/prose":"gHashTag/t27:tri/prose","tri/quantifiers":"gHashTag/t27:tri/quantifiers","tri/red":"gHashTag/t27:tri/red","tri/reseal":"gHashTag/t27:tri/reseal","tri/rtl":"gHashTag/t27:tri/rtl","tri/seals":"gHashTag/t27:tri/seals","tri/serve":"gHashTag/t27:tri/serve","tri/skill":"gHashTag/t27:tri/skill","tri/status":"gHashTag/t27:tri/status","tri/sweep":"gHashTag/t27:tri/sweep","tri/synth":"gHashTag/t27:tri/synth","tri/test":"gHashTag/t27:tri/test","tri/topic":"gHashTag/t27:tri/topic","tri/types":"gHashTag/t27:tri/types","tri/unparsed":"gHashTag/t27:tri/unparsed","tri/vectors":"gHashTag/t27:tri/vectors","tri/verdict":"gHashTag/t27:tri/verdict","tri/vsim":"gHashTag/t27:tri/vsim","tri/window":"gHashTag/t27:tri/window","tri/worktrees":"gHashTag/t27:tri/worktrees"},"pin":{"ref":"93727f733e23baf032d54505095777f16676d70b","source":"public/agents/experience.json sources[t27].commit"},"schema":2,"tools":[{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; Filter benchmarks by pattern","name":""},{"about":"string, optional; Output report file","name":""},{"about":"integer, optional; Number of iterations (default: 1000)","name":""}],"collidesWith":null,"command":"tri bench","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Run performance benchmarks","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["benchmark"],"ARGS":[": string, optional; Filter benchmarks by pattern",": string, optional; Output report file",": integer, optional; Number of iterations (default: 1000)"],"CAPABILITIES":["filesystem"],"CATEGORY":"benchmark","COLLIDES_WITH":"","COMMAND":"tri bench","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri bench","tri bench --filter vsa","tri bench --output report.json"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/bench","JOB_TIMEOUT":600,"KIND":"tool","MCP_DISPLAY_NAME":"Performance Benchmarks","MCP_ENABLED":true,"MCP_NAME":"tri_bench","MODE":"job","NAMESPACE":"dev","QUALIFIED_ID":"gHashTag/trinity:tri/bench","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":["filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command bench (cli_namespace dev)","WHEN_TO_USE":"Run performance benchmarks","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/bench","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_bench","name":{"en":"tri bench"},"qualifiedId":"gHashTag/trinity:tri/bench","registry":{"aliases":["benchmark"],"capabilities":["filesystem"],"category":"benchmark","examples":["tri bench","tri bench --filter vsa","tri bench --output report.json"],"jobTimeout":600,"mcpDisplayName":"Performance Benchmarks","mcpEnabled":true,"mcpName":"tri_bench","mode":"job","namespace":"dev","sideEffects":["filesystem"],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/bench tri bench run performance benchmarks run performance benchmarks","sha256":"1abd9bd8ba36e27afc61193b4da5cee668fce6a890cc6b7b0c4d44bbe13be5a9","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/bench.t27","summary":{"en":"Run performance benchmarks","ru":"Бенчмарки Trinity."},"typecheckOk":true,"variant":"registry command bench (cli_namespace dev)","whenToUse":"Run performance benchmarks","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; DNA/RNA/Protein sequence","name":""}],"collidesWith":null,"command":"tri bio","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["biology"],"ARGS":[": string, required; DNA/RNA/Protein sequence"],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri bio","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri bio dna ATGCGT","tri bio rna AUGCCAUAA","tri bio protein MVHLTPEEK","tri bio codon ATG"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/bio","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"DNA Analysis","MCP_ENABLED":true,"MCP_NAME":"tri_bio_dna","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/bio","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command bio (cli_namespace core)","WHEN_TO_USE":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/bio","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_bio","name":{"en":"tri bio"},"qualifiedId":"gHashTag/trinity:tri/bio","registry":{"aliases":["biology"],"capabilities":[],"category":"science","examples":["tri bio dna ATGCGT","tri bio rna AUGCCAUAA","tri bio protein MVHLTPEEK","tri bio codon ATG"],"jobTimeout":300,"mcpDisplayName":"DNA Analysis","mcpEnabled":true,"mcpName":"tri_bio_dna","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/bio tri bio biology v14.0 \\u2014 dna/rna/protein sacred analysis biology v14.0 \\u2014 dna/rna/protein sacred analysis","sha256":"e9f0534647b2ff6479e0a03577eeb01d1c529f0973f585eb5c134ae4f819d29a","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/bio.t27","summary":{"en":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","ru":"Биология v14.0 — сакральный анализ ДНК, РНК и белков."},"typecheckOk":true,"variant":"registry command bio (cli_namespace core)","whenToUse":"Biology v14.0 \\u2014 DNA/RNA/Protein sacred analysis","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri blindspots","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["blind-spot","blindspot","bs"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri blindspots","ENABLED":true,"ENTRY":"","EXAMPLES":["tri blindspots all","tri blindspots nuclear","tri blindspots atomic","tri blindspots plasma","tri blindspots optics","tri blindspots astro","tri blindspots quantum","tri blindspots condensed","tri blindspots biology-advanced","tri blindspots domains"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/blindspots","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Blind Spots (8 Domains)","MCP_ENABLED":true,"MCP_NAME":"tri_blindspots","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/blindspots","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri blindspots` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command blindspots (cli_namespace core)","WHEN_TO_USE":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/blindspots","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_blindspots","name":{"en":"tri blindspots"},"qualifiedId":"gHashTag/trinity:tri/blindspots","registry":{"aliases":["blind-spot","blindspot","bs"],"capabilities":[],"category":"science","examples":["tri blindspots all","tri blindspots nuclear","tri blindspots atomic","tri blindspots plasma","tri blindspots optics","tri blindspots astro","tri blindspots quantum","tri blindspots condensed","tri blindspots biology-advanced","tri blindspots domains"],"jobTimeout":300,"mcpDisplayName":"Blind Spots (8 Domains)","mcpEnabled":true,"mcpName":"tri_blindspots","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri blindspots` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/blindspots tri blindspots blind spots v1.0 \\u2014 90+ new formulas across 8 domains blind spots v1.0 \\u2014 90+ new formulas across 8 domains","sha256":"ae78ffaeec23f0c29f7aece98aa361e30ae30e923624aba2aad40b23b4a9ef7f","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/blindspots.t27","summary":{"en":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","ru":"Слепые пятна: поиск областей, где сакральная формула ещё не проверена."},"typecheckOk":true,"variant":"registry command blindspots (cli_namespace core)","whenToUse":"Blind Spots v1.0 \\u2014 90+ new formulas across 8 domains","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri conscious","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["consciousness"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri conscious","ENABLED":true,"ENTRY":"","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/conscious","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Consciousness Simulator","MCP_ENABLED":true,"MCP_NAME":"tri_consciousness","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/conscious","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri conscious` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command conscious (cli_namespace core)","WHEN_TO_USE":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/conscious","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_conscious","name":{"en":"tri conscious"},"qualifiedId":"gHashTag/trinity:tri/conscious","registry":{"aliases":["consciousness"],"capabilities":[],"category":"science","examples":[],"jobTimeout":300,"mcpDisplayName":"Consciousness Simulator","mcpEnabled":true,"mcpName":"tri_consciousness","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri conscious` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/conscious tri conscious consciousness awakening simulator (iit+gwt+orchor+qutrit+activeinf) consciousness awakening simulator (iit+gwt+orchor+qutrit+activeinf)","sha256":"94a9c3f27d49d51c2cb60355eaaaa9a9f296515a6974afb7c629d7ff00681f54","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/conscious.t27","summary":{"en":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","ru":"Метрики сознания Trinity."},"typecheckOk":true,"variant":"registry command conscious (cli_namespace core)","whenToUse":"Consciousness awakening simulator (IIT+GWT+OrchOR+Qutrit+ActiveInf)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri constants","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["const","c"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri constants","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri constants"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/constants","JOB_TIMEOUT":0,"KIND":"tool","MCP_DISPLAY_NAME":"Sacred Constants","MCP_ENABLED":true,"MCP_NAME":"tri_constants","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/constants","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command constants (cli_namespace core)","WHEN_TO_USE":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/constants","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_constants","name":{"en":"tri constants"},"qualifiedId":"gHashTag/trinity:tri/constants","registry":{"aliases":["const","c"],"capabilities":[],"category":"math","examples":["tri constants"],"jobTimeout":0,"mcpDisplayName":"Sacred Constants","mcpEnabled":true,"mcpName":"tri_constants","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/constants tri constants display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5) display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","sha256":"2ab994adcd287776d83e4432dfd098a89121d8d3f8395b9ef2f15dd8cc6fea04","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/constants.t27","summary":{"en":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","ru":"Сакральные константы (phi, pi, e и их соотношения)."},"typecheckOk":true,"variant":"registry command constants (cli_namespace core)","whenToUse":"Display sacred constants (\\u03c6, \\u03c0, e, \\u03bc, \\u03c7, \\u03c3, \\u03b5)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri cosmos","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Cosmology v15.0 \\u2014 Universe through \\u03c6","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["cosmology"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri cosmos","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri cosmos hubble","tri cosmos dark","tri cosmos w-z","tri cosmos lambda-z","tri cosmos phantom","tri cosmos consciousness-de"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/cosmos","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Hubble Tension","MCP_ENABLED":true,"MCP_NAME":"tri_cosmos_hubble","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/cosmos","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command cosmos (cli_namespace core)","WHEN_TO_USE":"Cosmology v15.0 \\u2014 Universe through \\u03c6","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/cosmos","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_cosmos","name":{"en":"tri cosmos"},"qualifiedId":"gHashTag/trinity:tri/cosmos","registry":{"aliases":["cosmology"],"capabilities":[],"category":"science","examples":["tri cosmos hubble","tri cosmos dark","tri cosmos w-z","tri cosmos lambda-z","tri cosmos phantom","tri cosmos consciousness-de"],"jobTimeout":300,"mcpDisplayName":"Hubble Tension","mcpEnabled":true,"mcpName":"tri_cosmos_hubble","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/cosmos tri cosmos cosmology v15.0 \\u2014 universe through \\u03c6 cosmology v15.0 \\u2014 universe through \\u03c6","sha256":"42bf0f894738516bde89899aa41ed960072949d0409958942954da09f598e5bd","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/cosmos.t27","summary":{"en":"Cosmology v15.0 \\u2014 Universe through \\u03c6","ru":"Космология v15.0 — постоянная Хаббла и сакральные космологические константы."},"typecheckOk":true,"variant":"registry command cosmos (cli_namespace core)","whenToUse":"Cosmology v15.0 \\u2014 Universe through \\u03c6","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, optional; Dashboard port","name":""}],"collidesWith":null,"command":"tri dashboard","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred dashboard","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, optional; Dashboard port"],"CAPABILITIES":[],"CATEGORY":"system","COLLIDES_WITH":"","COMMAND":"tri dashboard","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/dashboard","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Dashboard Server","MCP_ENABLED":true,"MCP_NAME":"tri_dashboard_serve","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/dashboard","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command dashboard (cli_namespace core)","WHEN_TO_USE":"Sacred dashboard","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/dashboard","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_dashboard","name":{"en":"tri dashboard"},"qualifiedId":"gHashTag/trinity:tri/dashboard","registry":{"aliases":[],"capabilities":[],"category":"system","examples":[],"jobTimeout":300,"mcpDisplayName":"Dashboard Server","mcpEnabled":true,"mcpName":"tri_dashboard_serve","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/dashboard tri dashboard sacred dashboard sacred dashboard","sha256":"3e84d5413e6db52ac25368c67f1585b67c5c0401f80c30df20c96c626c3b345d","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/dashboard.t27","summary":{"en":"Sacred dashboard","ru":"Панель состояния Trinity."},"typecheckOk":true,"variant":"registry command dashboard (cli_namespace core)","whenToUse":"Sacred dashboard","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Fibonacci index","name":""}],"collidesWith":null,"command":"tri fib","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Fibonacci numbers with BigInt","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["fibonacci"],"ARGS":[": integer, required; Fibonacci index"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri fib","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri fib 10","tri fib 100"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/fib","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Fibonacci","MCP_ENABLED":true,"MCP_NAME":"tri_fib","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/fib","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command fib (cli_namespace core)","WHEN_TO_USE":"Fibonacci numbers with BigInt","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/fib","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_fib","name":{"en":"tri fib"},"qualifiedId":"gHashTag/trinity:tri/fib","registry":{"aliases":["fibonacci"],"capabilities":[],"category":"math","examples":["tri fib 10","tri fib 100"],"jobTimeout":300,"mcpDisplayName":"Fibonacci","mcpEnabled":true,"mcpName":"tri_fib","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/fib tri fib fibonacci numbers with bigint fibonacci numbers with bigint","sha256":"a7a393454d6c7633bfbf3ce21e91dcb7e2232921c6492192b7db580242981ed0","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/fib.t27","summary":{"en":"Fibonacci numbers with BigInt","ru":"Числа Фибоначчи."},"typecheckOk":true,"variant":"registry command fib (cli_namespace core)","whenToUse":"Fibonacci numbers with BigInt","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":"gHashTag/t27:tri/fpga","command":"tri fpga","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"FPGA toolchain via FORGE v2.0 (native Zig)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["forge"],"ARGS":[],"CAPABILITIES":["hardware","filesystem"],"CATEGORY":"dev","COLLIDES_WITH":"gHashTag/t27:tri/fpga","COMMAND":"tri fpga","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri fpga bench","tri fpga verdict","tri fpga run design.json","tri fpga flash design.bit"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/fpga","JOB_TIMEOUT":1800,"KIND":"tool","MCP_DISPLAY_NAME":"FPGA Toolchain","MCP_ENABLED":true,"MCP_NAME":"tri_fpga","MODE":"job","NAMESPACE":"forge","QUALIFIED_ID":"gHashTag/trinity:tri/fpga","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":["hardware","filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"experimental","VARIANT":"registry command fpga (cli_namespace forge)","WHEN_TO_USE":"FPGA toolchain via FORGE v2.0 (native Zig)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/fpga","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_fpga","name":{"en":"tri fpga"},"qualifiedId":"gHashTag/trinity:tri/fpga","registry":{"aliases":["forge"],"capabilities":["hardware","filesystem"],"category":"dev","examples":["tri fpga bench","tri fpga verdict","tri fpga run design.json","tri fpga flash design.bit"],"jobTimeout":1800,"mcpDisplayName":"FPGA Toolchain","mcpEnabled":true,"mcpName":"tri_fpga","mode":"job","namespace":"forge","sideEffects":["hardware","filesystem"],"stability":"experimental"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/fpga tri fpga fpga toolchain via forge v2.0 (native zig) fpga toolchain via forge v2.0 (native zig)","sha256":"cd2e83756f6d11ed08e29c26a1c145b8384e56b7b3dd9c2e39e815b739c7190a","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/fpga.t27","summary":{"en":"FPGA toolchain via FORGE v2.0 (native Zig)","ru":"FPGA: синтез, прошивка и проверка."},"typecheckOk":true,"variant":"registry command fpga (cli_namespace forge)","whenToUse":"FPGA toolchain via FORGE v2.0 (native Zig)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; Text to analyze","name":""},{"about":"string, optional; Language system","name":""}],"collidesWith":null,"command":"tri gematria","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Gematria word value calculator","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, required; Text to analyze",": string, optional; Language system"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri gematria","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri gematria hello"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/gematria","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Gematria","MCP_ENABLED":true,"MCP_NAME":"tri_gematria","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/gematria","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command gematria (cli_namespace core)","WHEN_TO_USE":"Gematria word value calculator","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/gematria","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_gematria","name":{"en":"tri gematria"},"qualifiedId":"gHashTag/trinity:tri/gematria","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri gematria hello"],"jobTimeout":300,"mcpDisplayName":"Gematria","mcpEnabled":true,"mcpName":"tri_gematria","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/gematria tri gematria gematria word value calculator gematria word value calculator","sha256":"ef97c85a18e66c8236579ad970aa519e61b85deb9c2094b7ae5dad85e7d1a767","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/gematria.t27","summary":{"en":"Gematria word value calculator","ru":"Гематрия: числовое значение текста."},"typecheckOk":true,"variant":"registry command gematria (cli_namespace core)","whenToUse":"Gematria word value calculator","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; proposals, vote, treasury, rewards","name":""}],"collidesWith":null,"command":"tri govern","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred governance","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; proposals, vote, treasury, rewards"],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri govern","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/govern","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Governance System","MCP_ENABLED":true,"MCP_NAME":"tri_govern","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/govern","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command govern (cli_namespace core)","WHEN_TO_USE":"Sacred governance","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/govern","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_govern","name":{"en":"tri govern"},"qualifiedId":"gHashTag/trinity:tri/govern","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Governance System","mcpEnabled":true,"mcpName":"tri_govern","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/govern tri govern sacred governance sacred governance","sha256":"b354d78a042da1a057338c5bd4bd2e9426ab6540e4b0b24c959782d3793e1538","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/govern.t27","summary":{"en":"Sacred governance","ru":"Управление роем."},"typecheckOk":true,"variant":"registry command govern (cli_namespace core)","whenToUse":"Sacred governance","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri hardware","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Hardware deployment \\u2014 deploy, status, stop nodes","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri hardware","ENABLED":true,"ENTRY":"","EXAMPLES":["tri hardware deploy","tri hardware status"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/hardware","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Hardware Info","MCP_ENABLED":true,"MCP_NAME":"tri_hardware_info","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/hardware","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri hardware` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command hardware (cli_namespace core)","WHEN_TO_USE":"Hardware deployment \\u2014 deploy, status, stop nodes","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/hardware","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_hardware","name":{"en":"tri hardware"},"qualifiedId":"gHashTag/trinity:tri/hardware","registry":{"aliases":[],"capabilities":[],"category":"depin","examples":["tri hardware deploy","tri hardware status"],"jobTimeout":300,"mcpDisplayName":"Hardware Info","mcpEnabled":true,"mcpName":"tri_hardware_info","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri hardware` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/hardware tri hardware hardware deployment \\u2014 deploy, status, stop nodes hardware deployment \\u2014 deploy, status, stop nodes","sha256":"1badc358e7b3bedcded55bfc6aba9c2ff976edde0c930e130560db5de6677787","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/hardware.t27","summary":{"en":"Hardware deployment \\u2014 deploy, status, stop nodes","ru":"Сведения об оборудовании."},"typecheckOk":true,"variant":"registry command hardware (cli_namespace core)","whenToUse":"Hardware deployment \\u2014 deploy, status, stop nodes","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; node, generate, verify, reputation","name":""}],"collidesWith":null,"command":"tri identity","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred identity","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; node, generate, verify, reputation"],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri identity","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/identity","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Sacred Identity","MCP_ENABLED":true,"MCP_NAME":"tri_identity","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/identity","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command identity (cli_namespace core)","WHEN_TO_USE":"Sacred identity","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/identity","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_identity","name":{"en":"tri identity"},"qualifiedId":"gHashTag/trinity:tri/identity","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Sacred Identity","mcpEnabled":true,"mcpName":"tri_identity","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/identity tri identity sacred identity sacred identity","sha256":"f9fa2056b186e23ed82410422f87a164d198a5d89ff00738b77659b99da9399e","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/identity.t27","summary":{"en":"Sacred identity","ru":"Сакральное тождество phi^2 + 1/phi^2 = 3."},"typecheckOk":true,"variant":"registry command identity (cli_namespace core)","whenToUse":"Sacred identity","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Lucas index","name":""}],"collidesWith":null,"command":"tri lucas","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Lucas numbers (L(2)=3=TRINITY)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, required; Lucas index"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri lucas","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri lucas 10","tri lucas 20"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/lucas","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Lucas Numbers","MCP_ENABLED":true,"MCP_NAME":"tri_lucas","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/lucas","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command lucas (cli_namespace core)","WHEN_TO_USE":"Lucas numbers (L(2)=3=TRINITY)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/lucas","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_lucas","name":{"en":"tri lucas"},"qualifiedId":"gHashTag/trinity:tri/lucas","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri lucas 10","tri lucas 20"],"jobTimeout":300,"mcpDisplayName":"Lucas Numbers","mcpEnabled":true,"mcpName":"tri_lucas","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/lucas tri lucas lucas numbers (l(2)=3=trinity) lucas numbers (l(2)=3=trinity)","sha256":"21a656adb73fbc5fa02c0ae82807e24666fe20c954806a21203ed54b742bb9e6","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/lucas.t27","summary":{"en":"Lucas numbers (L(2)=3=TRINITY)","ru":"Числа Люка."},"typecheckOk":true,"variant":"registry command lucas (cli_namespace core)","whenToUse":"Lucas numbers (L(2)=3=TRINITY)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri mesh","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Global mesh management \\u2014 status, topology, discovery","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri mesh","ENABLED":true,"ENTRY":"","EXAMPLES":["tri mesh status","tri mesh topology","tri mesh discover"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/mesh","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Mesh Status","MCP_ENABLED":true,"MCP_NAME":"tri_mesh_status","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/mesh","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri mesh` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command mesh (cli_namespace core)","WHEN_TO_USE":"Global mesh management \\u2014 status, topology, discovery","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/mesh","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_mesh","name":{"en":"tri mesh"},"qualifiedId":"gHashTag/trinity:tri/mesh","registry":{"aliases":[],"capabilities":[],"category":"depin","examples":["tri mesh status","tri mesh topology","tri mesh discover"],"jobTimeout":300,"mcpDisplayName":"Mesh Status","mcpEnabled":true,"mcpName":"tri_mesh_status","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri mesh` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/mesh tri mesh global mesh management \\u2014 status, topology, discovery global mesh management \\u2014 status, topology, discovery","sha256":"8a2aeb36832b43ec2112a770f943529481e4a7f3ccd52f7b4fdc62e7452978ed","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/mesh.t27","summary":{"en":"Global mesh management \\u2014 status, topology, discovery","ru":"Состояние mesh-сети."},"typecheckOk":true,"variant":"registry command mesh (cli_namespace core)","whenToUse":"Global mesh management \\u2014 status, topology, discovery","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; File to edit","name":""},{"about":"string, optional; Edit query","name":""}],"collidesWith":null,"command":"tri needle","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Structural editor core","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; File to edit",": string, optional; Edit query"],"CAPABILITIES":[],"CATEGORY":"dev","COLLIDES_WITH":"","COMMAND":"tri needle","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/needle","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Needle Editor","MCP_ENABLED":true,"MCP_NAME":"tri_needle","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/needle","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command needle (cli_namespace core)","WHEN_TO_USE":"Structural editor core","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/needle","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_needle","name":{"en":"tri needle"},"qualifiedId":"gHashTag/trinity:tri/needle","registry":{"aliases":[],"capabilities":[],"category":"dev","examples":[],"jobTimeout":300,"mcpDisplayName":"Needle Editor","mcpEnabled":true,"mcpName":"tri_needle","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/needle tri needle structural editor core structural editor core","sha256":"3058e555568a46d707c7eb6bde87b2611b7b3b35d0bc44cf39e69b7105c96836","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/needle.t27","summary":{"en":"Structural editor core","ru":"Needle: AST-редактирование кода."},"typecheckOk":true,"variant":"registry command needle (cli_namespace core)","whenToUse":"Structural editor core","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; File to check","name":""}],"collidesWith":null,"command":"tri needle-check","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Needle check","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["needle_check"],"ARGS":[": string, optional; File to check"],"CAPABILITIES":[],"CATEGORY":"dev","COLLIDES_WITH":"","COMMAND":"tri needle-check","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/needle-check","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Needle Check","MCP_ENABLED":true,"MCP_NAME":"tri_needle_check","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/needle-check","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command needle-check (cli_namespace core)","WHEN_TO_USE":"Needle check","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/needle-check","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_needle_check","name":{"en":"tri needle-check"},"qualifiedId":"gHashTag/trinity:tri/needle-check","registry":{"aliases":["needle_check"],"capabilities":[],"category":"dev","examples":[],"jobTimeout":300,"mcpDisplayName":"Needle Check","mcpEnabled":true,"mcpName":"tri_needle_check","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/needle-check tri needle-check needle check needle check","sha256":"689a89b90876fa9967656508d3791f3de1a47afe358cbf4d7ccf023fce1c32d5","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/needle-check.t27","summary":{"en":"Needle check","ru":"Needle: проверка качества кода."},"typecheckOk":true,"variant":"registry command needle-check (cli_namespace core)","whenToUse":"Needle check","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; Search pattern","name":""}],"collidesWith":null,"command":"tri needle-search","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Needle search","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["needle_search"],"ARGS":[": string, required; Search pattern"],"CAPABILITIES":[],"CATEGORY":"dev","COLLIDES_WITH":"","COMMAND":"tri needle-search","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/needle-search","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Needle Search","MCP_ENABLED":true,"MCP_NAME":"tri_needle_search","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/needle-search","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command needle-search (cli_namespace core)","WHEN_TO_USE":"Needle search","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/needle-search","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_needle_search","name":{"en":"tri needle-search"},"qualifiedId":"gHashTag/trinity:tri/needle-search","registry":{"aliases":["needle_search"],"capabilities":[],"category":"dev","examples":[],"jobTimeout":300,"mcpDisplayName":"Needle Search","mcpEnabled":true,"mcpName":"tri_needle_search","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/needle-search tri needle-search needle search needle search","sha256":"d596ee91ec23d39cb905e0ddc7dffc504c532952a2fb0fe7ed64438db707779c","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/needle-search.t27","summary":{"en":"Needle search","ru":"Needle: поиск по шаблону в коде."},"typecheckOk":true,"variant":"registry command needle-search (cli_namespace core)","whenToUse":"Needle search","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri omega","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Omega phase","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri omega","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/omega","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Omega Status","MCP_ENABLED":true,"MCP_NAME":"tri_omega_status","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/omega","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command omega (cli_namespace core)","WHEN_TO_USE":"Omega phase","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/omega","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_omega","name":{"en":"tri omega"},"qualifiedId":"gHashTag/trinity:tri/omega","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Omega Status","mcpEnabled":true,"mcpName":"tri_omega_status","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/omega tri omega omega phase omega phase","sha256":"e03bddbb9708c94b3c44f5a3b2aef4ac440d53c9328c75ae8b6c37fb9a21959f","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/omega.t27","summary":{"en":"Omega phase","ru":"Состояние Omega."},"typecheckOk":true,"variant":"registry command omega (cli_namespace core)","whenToUse":"Omega phase","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri particles","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Particle physics sacred formulas (49 constants from \\u03c6)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["particle","pdg"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri particles","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri particles","tri particles all","tri particles tier1","tri particles search alpha_s"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/particles","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Particle Physics Sacred","MCP_ENABLED":true,"MCP_NAME":"tri_particles","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/particles","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command particles (cli_namespace core)","WHEN_TO_USE":"Particle physics sacred formulas (49 constants from \\u03c6)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/particles","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_particles","name":{"en":"tri particles"},"qualifiedId":"gHashTag/trinity:tri/particles","registry":{"aliases":["particle","pdg"],"capabilities":[],"category":"science","examples":["tri particles","tri particles all","tri particles tier1","tri particles search alpha_s"],"jobTimeout":300,"mcpDisplayName":"Particle Physics Sacred","mcpEnabled":true,"mcpName":"tri_particles","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/particles tri particles particle physics sacred formulas (49 constants from \\u03c6) particle physics sacred formulas (49 constants from \\u03c6)","sha256":"de48a64950df41b2344a8bed9ad969eb6776456406b9c68c469cba8c13b3ac7e","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/particles.t27","summary":{"en":"Particle physics sacred formulas (49 constants from \\u03c6)","ru":"Физика частиц: константы и массы."},"typecheckOk":true,"variant":"registry command particles (cli_namespace core)","whenToUse":"Particle physics sacred formulas (49 constants from \\u03c6)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Power of phi","name":""}],"collidesWith":null,"command":"tri phi","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Compute \\u03c6\\u207f (golden ratio power)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, required; Power of phi"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri phi","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri phi 10","tri phi 100"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/phi","JOB_TIMEOUT":0,"KIND":"tool","MCP_DISPLAY_NAME":"Phi Power","MCP_ENABLED":true,"MCP_NAME":"tri_phi","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/phi","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command phi (cli_namespace core)","WHEN_TO_USE":"Compute \\u03c6\\u207f (golden ratio power)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/phi","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_phi","name":{"en":"tri phi"},"qualifiedId":"gHashTag/trinity:tri/phi","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri phi 10","tri phi 100"],"jobTimeout":0,"mcpDisplayName":"Phi Power","mcpEnabled":true,"mcpName":"tri_phi","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/phi tri phi compute \\u03c6\\u207f (golden ratio power) compute \\u03c6\\u207f (golden ratio power)","sha256":"293d2f0f3dd1ad97dcc7e6485a9285d91ba36deb71ec7520b80523877a2c8405","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/phi.t27","summary":{"en":"Compute \\u03c6\\u207f (golden ratio power)","ru":"Золотое сечение phi и его степени."},"typecheckOk":true,"variant":"registry command phi (cli_namespace core)","whenToUse":"Compute \\u03c6\\u207f (golden ratio power)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri quantum","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Quantum Trinity","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri quantum","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/quantum","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Quantum Constants","MCP_ENABLED":true,"MCP_NAME":"tri_quantum_constants","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/quantum","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command quantum (cli_namespace core)","WHEN_TO_USE":"Quantum Trinity","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/quantum","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_quantum","name":{"en":"tri quantum"},"qualifiedId":"gHashTag/trinity:tri/quantum","registry":{"aliases":[],"capabilities":[],"category":"science","examples":[],"jobTimeout":300,"mcpDisplayName":"Quantum Constants","mcpEnabled":true,"mcpName":"tri_quantum_constants","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/quantum tri quantum quantum trinity quantum trinity","sha256":"8d982321638e3fbde1a0a9ac40ad051614868d399025685f5b4d580ec86a1656","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/quantum.t27","summary":{"en":"Quantum Trinity","ru":"Квантовые константы."},"typecheckOk":true,"variant":"registry command quantum (cli_namespace core)","whenToUse":"Quantum Trinity","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri reputation","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Reputation system \\u2014 show node reputation, leaderboard","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["rep"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri reputation","ENABLED":true,"ENTRY":"","EXAMPLES":["tri reputation show","tri reputation leaderboard"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/reputation","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Reputation Leaderboard","MCP_ENABLED":true,"MCP_NAME":"tri_omega_reputation","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/reputation","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri reputation` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command reputation (cli_namespace core)","WHEN_TO_USE":"Reputation system \\u2014 show node reputation, leaderboard","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/reputation","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_reputation","name":{"en":"tri reputation"},"qualifiedId":"gHashTag/trinity:tri/reputation","registry":{"aliases":["rep"],"capabilities":[],"category":"depin","examples":["tri reputation show","tri reputation leaderboard"],"jobTimeout":300,"mcpDisplayName":"Reputation Leaderboard","mcpEnabled":true,"mcpName":"tri_omega_reputation","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri reputation` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/reputation tri reputation reputation system \\u2014 show node reputation, leaderboard reputation system \\u2014 show node reputation, leaderboard","sha256":"ce0352d36e43b44480a79b3333031e61f637feda0bd474b8af6b239364a030cb","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/reputation.t27","summary":{"en":"Reputation system \\u2014 show node reputation, leaderboard","ru":"Репутация узла Omega."},"typecheckOk":true,"variant":"registry command reputation (cli_namespace core)","whenToUse":"Reputation system \\u2014 show node reputation, leaderboard","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; Target constant (phi2_pi2, e_pi, etc.)","name":""},{"about":"integer, optional; Number of CORDIC stages","name":""},{"about":"integer, optional; Data width in bits","name":""},{"about":"string, optional; Output Verilog file","name":""}],"collidesWith":null,"command":"tri sacred-const","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred constants FPGA synthesis (0 DSP48)","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["sacred_constants","sacred-fpga"],"ARGS":[": string, optional; Target constant (phi2_pi2, e_pi, etc.)",": integer, optional; Number of CORDIC stages",": integer, optional; Data width in bits",": string, optional; Output Verilog file"],"CAPABILITIES":["filesystem"],"CATEGORY":"advanced","COLLIDES_WITH":"","COMMAND":"tri sacred-const","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri sacred-const phi-arith","tri sacred-const cordic-sacred","tri sacred-const const-rom"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/sacred-const","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Sacred Constants FPGA","MCP_ENABLED":true,"MCP_NAME":"tri_sacred_const_fpga","MODE":"job","NAMESPACE":"forge","QUALIFIED_ID":"gHashTag/trinity:tri/sacred-const","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":["filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"experimental","VARIANT":"registry command sacred-const (cli_namespace forge)","WHEN_TO_USE":"Sacred constants FPGA synthesis (0 DSP48)","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/sacred-const","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_sacred_const","name":{"en":"tri sacred-const"},"qualifiedId":"gHashTag/trinity:tri/sacred-const","registry":{"aliases":["sacred_constants","sacred-fpga"],"capabilities":["filesystem"],"category":"advanced","examples":["tri sacred-const phi-arith","tri sacred-const cordic-sacred","tri sacred-const const-rom"],"jobTimeout":300,"mcpDisplayName":"Sacred Constants FPGA","mcpEnabled":true,"mcpName":"tri_sacred_const_fpga","mode":"job","namespace":"forge","sideEffects":["filesystem"],"stability":"experimental"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/sacred-const tri sacred-const sacred constants fpga synthesis (0 dsp48) sacred constants fpga synthesis (0 dsp48)","sha256":"6adddc181a2303061a5805b40022f137ec1c1e53b8356733092a3e97182e4a3c","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/sacred-const.t27","summary":{"en":"Sacred constants FPGA synthesis (0 DSP48)","ru":"Сакральные константы для FPGA."},"typecheckOk":true,"variant":"registry command sacred-const (cli_namespace forge)","whenToUse":"Sacred constants FPGA synthesis (0 DSP48)","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"integer, required; Number of spiral points","name":""}],"collidesWith":null,"command":"tri spiral","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"\\u03c6-spiral coordinates","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": integer, required; Number of spiral points"],"CAPABILITIES":[],"CATEGORY":"math","COLLIDES_WITH":"","COMMAND":"tri spiral","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri spiral 10"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/spiral","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Phi Spiral","MCP_ENABLED":true,"MCP_NAME":"tri_spiral","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/spiral","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command spiral (cli_namespace core)","WHEN_TO_USE":"\\u03c6-spiral coordinates","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/spiral","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_spiral","name":{"en":"tri spiral"},"qualifiedId":"gHashTag/trinity:tri/spiral","registry":{"aliases":[],"capabilities":[],"category":"math","examples":["tri spiral 10"],"jobTimeout":300,"mcpDisplayName":"Phi Spiral","mcpEnabled":true,"mcpName":"tri_spiral","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/spiral tri spiral \\u03c6-spiral coordinates \\u03c6-spiral coordinates","sha256":"d470286a2fffe65a4db790f6a3e2f869df079c8b225669a283becb0236677386","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/spiral.t27","summary":{"en":"\\u03c6-spiral coordinates","ru":"Золотая спираль: координаты точек."},"typecheckOk":true,"variant":"registry command spiral (cli_namespace core)","whenToUse":"\\u03c6-spiral coordinates","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; status, coordinator, agents, tasks, converge","name":""}],"collidesWith":null,"command":"tri swarm","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Sacred swarm intelligence","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, optional; status, coordinator, agents, tasks, converge"],"CAPABILITIES":[],"CATEGORY":"sacred","COLLIDES_WITH":"","COMMAND":"tri swarm","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":[],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/swarm","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Swarm Intelligence","MCP_ENABLED":true,"MCP_NAME":"tri_swarm","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/swarm","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command swarm (cli_namespace core)","WHEN_TO_USE":"Sacred swarm intelligence","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/swarm","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_swarm","name":{"en":"tri swarm"},"qualifiedId":"gHashTag/trinity:tri/swarm","registry":{"aliases":[],"capabilities":[],"category":"sacred","examples":[],"jobTimeout":300,"mcpDisplayName":"Swarm Intelligence","mcpEnabled":true,"mcpName":"tri_swarm","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/swarm tri swarm sacred swarm intelligence sacred swarm intelligence","sha256":"7b4d45dc89ac177958625f180a55cc0564880cab1f2acb52e6123802096a272f","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/swarm.t27","summary":{"en":"Sacred swarm intelligence","ru":"Состояние роя агентов."},"typecheckOk":true,"variant":"registry command swarm (cli_namespace core)","whenToUse":"Sacred swarm intelligence","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, required; Path to file to test","name":""},{"about":"string, optional; Output test file path","name":""},{"about":"boolean, optional; Include coverage markers","name":""}],"collidesWith":"gHashTag/t27:tri/test","command":"tri test","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Generate comprehensive test suites","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":[": string, required; Path to file to test",": string, optional; Output test file path",": boolean, optional; Include coverage markers"],"CAPABILITIES":["filesystem"],"CATEGORY":"dev","COLLIDES_WITH":"gHashTag/t27:tri/test","COMMAND":"tri test","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri test src/vsa.zig","tri test src/math/commands.zig --output tests/math_test.zig","tri test src/crypto.zig --coverage"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/test","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Test Generator","MCP_ENABLED":true,"MCP_NAME":"tri_test","MODE":"job","NAMESPACE":"dev","QUALIFIED_ID":"gHashTag/trinity:tri/test","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"parse_command","ROUTE_NOTE":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","SCHEMA":2,"SIDE_EFFECTS":["filesystem"],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command test (cli_namespace dev)","WHEN_TO_USE":"Generate comprehensive test suites","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/test","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_test","name":{"en":"tri test"},"qualifiedId":"gHashTag/trinity:tri/test","registry":{"aliases":[],"capabilities":["filesystem"],"category":"dev","examples":["tri test src/vsa.zig","tri test src/math/commands.zig --output tests/math_test.zig","tri test src/crypto.zig --coverage"],"jobTimeout":300,"mcpDisplayName":"Test Generator","mcpEnabled":true,"mcpName":"tri_test","mode":"job","namespace":"dev","sideEffects":["filesystem"],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"parse_command","note":"named by parseCommand of src/tri/tri_utils.zig only; whether its arm executes or prints not-implemented is not measured","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/test tri test generate comprehensive test suites generate comprehensive test suites","sha256":"ac05a41e5d3f54a99466f848a89d6c13c12f300b3ff31994677cc9b4c429be34","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/test.t27","summary":{"en":"Generate comprehensive test suites","ru":"Запуск тестов Trinity."},"typecheckOk":true,"variant":"registry command test (cli_namespace dev)","whenToUse":"Generate comprehensive test suites","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[],"collidesWith":null,"command":"tri vsa","discarded":0,"entry":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Vector Symbolic Architecture operations","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":["vector-symbolic"],"ARGS":[],"CAPABILITIES":[],"CATEGORY":"science","COLLIDES_WITH":"","COMMAND":"tri vsa","ENABLED":true,"ENTRY":"src/tri/tri_register.zig execute_map, reached through src/tri/main.zig","EXAMPLES":["tri vsa bind alice bob","tri vsa similarity cat dog","tri vsa memory show stats"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/vsa","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"VSA Operations","MCP_ENABLED":true,"MCP_NAME":"tri_vsa_bind","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/vsa","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":true,"ROUTE_KIND":"execute_map","ROUTE_NOTE":"named by a live execute_map entry of src/tri/tri_register.zig","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command vsa (cli_namespace core)","WHEN_TO_USE":"Vector Symbolic Architecture operations","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/vsa","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_vsa","name":{"en":"tri vsa"},"qualifiedId":"gHashTag/trinity:tri/vsa","registry":{"aliases":["vector-symbolic"],"capabilities":[],"category":"science","examples":["tri vsa bind alice bob","tri vsa similarity cat dog","tri vsa memory show stats"],"jobTimeout":300,"mcpDisplayName":"VSA Operations","mcpEnabled":true,"mcpName":"tri_vsa_bind","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"execute_map","note":"named by a live execute_map entry of src/tri/tri_register.zig","routed":true},"schema":2,"searchText":"ghashtag/trinity:tri/vsa tri vsa vector symbolic architecture operations vector symbolic architecture operations","sha256":"90a98d73cbabf43baef032e5a8522a1e6aaf22c3ad5e89bcb4a1f4389d9698d3","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/vsa.t27","summary":{"en":"Vector Symbolic Architecture operations","ru":"VSA: связывание векторов."},"typecheckOk":true,"variant":"registry command vsa (cli_namespace core)","whenToUse":"Vector Symbolic Architecture operations","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".trinity/registry.json description (exported by src/registry/export_cli.zig)","actions":[],"agents":[],"args":[{"about":"string, optional; Wallet address","name":"
"}],"collidesWith":null,"command":"tri wallet","discarded":0,"entry":"","exitCodes":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"family":"tri-cli","fields":{"ABOUT":"Wallet management \\u2014 connect, balance, claim rewards","ABOUT_SOURCE":".trinity/registry.json description (exported by src/registry/export_cli.zig)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md and .claude/agents/*.md of gHashTag/t27 name the t27 tri, not this binary.","ALIASES":[],"ARGS":["
: string, optional; Wallet address"],"CAPABILITIES":[],"CATEGORY":"depin","COLLIDES_WITH":"","COMMAND":"tri wallet","ENABLED":true,"ENTRY":"","EXAMPLES":["tri wallet connect metamask","tri wallet balance","tri wallet claim 50.0"],"EXIT_CODES":["0: every path that returns to main, including UnifiedOutput status failure or denied","1: only where a handler calls std.process.exit (not-implemented arms, cell dispatch failures)"],"FAMILY":"tri-cli","ID":"gHashTag/trinity:tri/wallet","JOB_TIMEOUT":300,"KIND":"tool","MCP_DISPLAY_NAME":"Wallet Balance","MCP_ENABLED":true,"MCP_NAME":"tri_wallet_balance","MODE":"sync","NAMESPACE":"core","QUALIFIED_ID":"gHashTag/trinity:tri/wallet","REPO":"gHashTag/trinity","RESULT":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","ROUTED":false,"ROUTE_KIND":"none","ROUTE_NOTE":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri wallet` reaches no handler and its MCP tool has no CLI behind it","SCHEMA":2,"SIDE_EFFECTS":[],"SOURCE":"src/registry/command_table.zig","STABILITY":"stable","VARIANT":"registry command wallet (cli_namespace core)","WHEN_TO_USE":"Wallet management \\u2014 connect, balance, claim rewards","WITNESS":"registry-export","WITNESS_SOURCE":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},"health":"ok","id":"gHashTag/trinity:tri/wallet","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/src/registry/command_table.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_trinity_tri_wallet","name":{"en":"tri wallet"},"qualifiedId":"gHashTag/trinity:tri/wallet","registry":{"aliases":[],"capabilities":[],"category":"depin","examples":["tri wallet connect metamask","tri wallet balance","tri wallet claim 50.0"],"jobTimeout":300,"mcpDisplayName":"Wallet Balance","mcpEnabled":true,"mcpName":"tri_wallet_balance","mode":"sync","namespace":"core","sideEffects":[],"stability":"stable"},"repo":"gHashTag/trinity","result":"UnifiedOutput (text or --json) with status success|failure|partial|canceled|denied|timeout; UNKNOWN_COMMAND is reported as status denied with exit 0; the sysexits mapping of src/tri/observability.zig is dead code","routing":{"kind":"none","note":"not named by any dispatcher at the pin: its execute_map entry is commented out or absent, so `tri wallet` reaches no handler and its MCP tool has no CLI behind it","routed":false},"schema":2,"searchText":"ghashtag/trinity:tri/wallet tri wallet wallet management \\u2014 connect, balance, claim rewards wallet management \\u2014 connect, balance, claim rewards","sha256":"eb15c59465bc42b003a394b15261ba2da9101faba2459665e7ad9b3a8ca51f6a","skills":[],"source":"src/registry/command_table.zig","specPath":"specs/tools/trinity/tri/wallet.t27","summary":{"en":"Wallet management \\u2014 connect, balance, claim rewards","ru":"Баланс кошелька DePIN."},"typecheckOk":true,"variant":"registry command wallet (cli_namespace core)","whenToUse":"Wallet management \\u2014 connect, balance, claim rewards","witness":"registry-export","witnessSource":".trinity/registry.json at 976df5174 (version 1.0.0, generated_at 1773041968), exported by `zig build export-registry` and held to the binary by .github/workflows/ci.yml"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":["GITBUTLER_REPO"],"external":true,"family":"mcp","fields":{"ABOUT":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["GITBUTLER_REPO"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/gitbutler","KIND":"tool","LAUNCH":"but mcp","QUALIFIED_ID":"gHashTag/t27:mcp/gitbutler","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"gitbutler","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/gitbutler","inSpecCorpus":true,"launch":"but mcp","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_gitbutler","name":{"en":"gitbutler"},"qualifiedId":"gHashTag/t27:mcp/gitbutler","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/gitbutler gitbutler external gitbutler mcp server launched as `but mcp`; the repository only registers it in .mcp.json.","server":"gitbutler","serverVersion":"","sha256":"488ff443b895b38f10748ab28238d7a9348819df4e53af1fa7adcc4bbacf3992","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/gitbutler.t27","summary":{"en":"External GitButler MCP server launched as `but mcp`; the repository only registers it in .mcp.json.","ru":"Внешний MCP-сервер GitButler, запускаемый как `but mcp`; репозиторий лишь регистрирует его в .mcp.json."},"tools":[],"toolsNote":"Tool list lives in the external `but` binary, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","agents":[{"letter":"T","ok":true}],"config":"","discarded":0,"env":["INNGEST_SIGNING_KEY"],"external":true,"family":"mcp","fields":{"ABOUT":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ABOUT_SOURCE":"serverInfo.title of the initialize answer plus specs/automation/inngest-queen-scheduler.t27","AGENTS":["T"],"AGENTS_NOTE":"specs/agents/t.t27 TOOLS names mcp/inngest-dev: the Queen (Tau) holds the scheduler; a bee reaches it through the Queen's brief, not by its own registration.","CONFIG":"","ENABLED":true,"ENV":["INNGEST_SIGNING_KEY"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/inngest-dev","KIND":"tool","LAUNCH":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","QUALIFIED_ID":"gHashTag/t27:mcp/inngest-dev","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"inngest-dev","SERVER_VERSION":"1.0.0","SOURCE":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","TOOLS":["cancel_run","get_app","get_apps","get_event_runs","get_function","get_run","get_run_status","get_run_trace","grep_docs","health","invoke_function","invoke_function_sync","list_docs","list_function_runs","list_functions","list_runs","poll_run_status","read_doc","rerun","send_event"],"TOOLS_ABOUT":["Cancels an in-progress function run","Fetches details for a single app, including sync metadata and function count","Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","Lists function runs triggered by a specific event","Fetches function configuration and status details for a function within an app","Fetches the canonical run summary for a single function run","Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","Fetches the trace tree for a single function run","Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","Returns the health status of the API service","Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","List all available documentation categories and their document counts. No parameters required.","Lists runs for one function in the authenticated environment","Lists function configuration and status details for an app","Lists runs in the authenticated environment, optionally filtered by app and function IDs","Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","Creates a new run using the original run's triggering event data","Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID"],"TOOLS_INPUTS":["runId","appId","archived,cursor,limit","cursor,eventId,includeOutput,limit","appId,functionId","includeOutput,runId","runId","includeOutput,runId","pattern,limit","","appId,data,functionId,idempotencyKey","functionId,data,user,timeout","","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","appId,cursor,limit","appId,cursor,from,functionId,includeOutput,isDeferred,limit,order,status,timeField,until","runIds,timeout,pollInterval","path","fromStep,runId","name,data,user,eventIdSeed"],"TOOLS_NOTE":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","TRANSPORT":"http","WITNESS":"help-output"},"health":"ok","id":"mcp/inngest-dev","inSpecCorpus":true,"launch":"claude mcp add --transport http inngest-dev https://inngestinngest-production-c468.up.railway.app/mcp","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)"},"messages":["external package: tool list not in the repository"],"moduleName":"tool_mcp_inngest_dev","name":{"en":"inngest-dev"},"qualifiedId":"gHashTag/t27:mcp/inngest-dev","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/inngest-dev inngest-dev mcp face of the self-hosted inngest server (railway project 999) that runs the queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels. cancel_run cancels an in-progress function run get_app fetches details for a single app, including sync metadata and function count get_apps lists active apps in the authenticated environment. set archived to true to list archived apps instead. get_event_runs lists function runs triggered by a specific event get_function fetches function configuration and status details for a function within an app get_run fetches the canonical run summary for a single function run get_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run and get_run_trace for new integrations. parameters: get_run_trace fetches the trace tree for a single function run grep_docs search documentation using exact string matching (grep). useful for finding specific api names, error codes, or identifiers. parameters: pat health returns the health status of the api service invoke_function invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body invoke_function_sync deprecated compatibility tool retained for existing dev server integrations. use invoke_function for the shared asynchronous cloud and dev s list_docs list all available documentation categories and their document counts. no parameters required. list_function_runs lists runs for one function in the authenticated environment list_functions lists function configuration and status details for an app list_runs lists runs in the authenticated environment, optionally filtered by app and function ids poll_run_status deprecated compatibility tool retained for existing dev server integrations. use get_run for new integrations. poll multiple function runs u read_doc read the full content of a specific documentation file. parameters: path (required string - the doc file path relative to docs directory) rerun creates a new run using the original run's triggering event data send_event deprecated compatibility tool retained for existing dev server integrations. send an event to the inngest dev server and return the event id t","server":"inngest-dev","serverVersion":"1.0.0","sha256":"a0aad75ce804fcc056130bab7bd9b40af7145467cb0f0b93ed1147a2c6b89f8e","skills":[],"source":"tools/list of https://inngestinngest-production-c468.up.railway.app/mcp (2026-09-13)","specPath":"specs/tools/mcp/inngest-dev.t27","summary":{"en":"MCP face of the self-hosted Inngest server (Railway project 999) that runs the Queen's crons and skills as functions of the app t27-queen; lists apps and functions, reads runs and traces, invokes, reruns and cancels.","ru":"MCP-лицо самостоятельно размещённого сервера Inngest (проект Railway 999), который исполняет кроны и скиллы Королевы как функции приложения t27-queen; перечисляет приложения и функции, читает запуски и трассы, запускает, перезапускает и отменяет."},"tools":[{"about":"Cancels an in-progress function run","inputs":["runId"],"name":"cancel_run"},{"about":"Fetches details for a single app, including sync metadata and function count","inputs":["appId"],"name":"get_app"},{"about":"Lists active apps in the authenticated environment. Set archived to true to list archived apps instead.","inputs":["archived","cursor","limit"],"name":"get_apps"},{"about":"Lists function runs triggered by a specific event","inputs":["cursor","eventId","includeOutput","limit"],"name":"get_event_runs"},{"about":"Fetches function configuration and status details for a function within an app","inputs":["appId","functionId"],"name":"get_function"},{"about":"Fetches the canonical run summary for a single function run","inputs":["includeOutput","runId"],"name":"get_run"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run and get_run_trace for new integrations. Parameters:","inputs":["runId"],"name":"get_run_status"},{"about":"Fetches the trace tree for a single function run","inputs":["includeOutput","runId"],"name":"get_run_trace"},{"about":"Search documentation using exact string matching (grep). Useful for finding specific API names, error codes, or identifiers. Parameters: pat","inputs":["pattern","limit"],"name":"grep_docs"},{"about":"Returns the health status of the API service","inputs":[],"name":"health"},{"about":"Invokes a function, executing the function either asynchronously or synchronously based on the mode parameter in the request body","inputs":["appId","data","functionId","idempotencyKey"],"name":"invoke_function"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use invoke_function for the shared asynchronous Cloud and dev s","inputs":["functionId","data","user","timeout"],"name":"invoke_function_sync"},{"about":"List all available documentation categories and their document counts. No parameters required.","inputs":[],"name":"list_docs"},{"about":"Lists runs for one function in the authenticated environment","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_function_runs"},{"about":"Lists function configuration and status details for an app","inputs":["appId","cursor","limit"],"name":"list_functions"},{"about":"Lists runs in the authenticated environment, optionally filtered by app and function IDs","inputs":["appId","cursor","from","functionId","includeOutput","isDeferred","limit","order","status","timeField","until"],"name":"list_runs"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Use get_run for new integrations. Poll multiple function runs u","inputs":["runIds","timeout","pollInterval"],"name":"poll_run_status"},{"about":"Read the full content of a specific documentation file. Parameters: path (required string - the doc file path relative to docs directory)","inputs":["path"],"name":"read_doc"},{"about":"Creates a new run using the original run's triggering event data","inputs":["fromStep","runId"],"name":"rerun"},{"about":"Deprecated compatibility tool retained for existing dev server integrations. Send an event to the Inngest dev server and return the event ID","inputs":["name","data","user","eventIdSeed"],"name":"send_event"}],"toolsNote":"Recorded from the live tools/list, not from source: the server is the upstream inngest binary, its source is not in this repository. Measured 2026-09-13 without a key: health, get_apps and list_runs answer REST API v2 returned HTTP 401: Authentication failed; list_docs and grep_docs answer (173 documents). The REST-backed tools need Authorization: Bearer on the MCP request.","transport":"http","typecheckOk":true,"witness":"help-output"},{"aboutSource":"derived from the tool descriptions in tools/mcp/needle_mcp/server.zig","agents":[],"config":".claude-plugin/.mcp.json","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"Zig MCP server for AST-aware code editing (needle): structural search and replace, quality gates, preview.","ABOUT_SOURCE":"derived from the tool descriptions in tools/mcp/needle_mcp/server.zig","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".claude-plugin/.mcp.json","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/needle","KIND":"tool","LAUNCH":"/zig-out/bin/needle-mcp","QUALIFIED_ID":"gHashTag/trinity:mcp/needle","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"needle","SERVER_VERSION":"","SOURCE":"tools/mcp/needle_mcp/server.zig","TOOLS":["needle_structural_replace","needle_search","needle_quality_gates","needle_preview","needle_batch_edit","needle_autonomous_refactor"],"TOOLS_ABOUT":["Apply AST-aware code edit with Tier 0->1 fallback and safety gates","Search codebase for pattern matches with confidence scores","Run quality gates: parse check, AST analysis, violation detection","Preview edit diff without applying changes","Apply multiple edits in a single operation","Execute Ralph Loop: intent-aware refactoring using semantic search + HNSW + VSA validation"],"TOOLS_INPUTS":["","","","","",""],"TOOLS_NOTE":"Input schema keys were not extracted for this server (schemas are inline Zig literals); names and descriptions only. The .claude-plugin/.mcp.json command is an absolute path into a developer checkout; its home prefix is written as here (no home paths in specs).","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/needle","inSpecCorpus":true,"launch":"/zig-out/bin/needle-mcp","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.claude-plugin/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/tools/mcp/needle_mcp/server.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_needle","name":{"en":"needle"},"qualifiedId":"gHashTag/trinity:mcp/needle","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/needle needle zig mcp server for ast-aware code editing (needle): structural search and replace, quality gates, preview. needle_structural_replace apply ast-aware code edit with tier 0->1 fallback and safety gates needle_search search codebase for pattern matches with confidence scores needle_quality_gates run quality gates: parse check, ast analysis, violation detection needle_preview preview edit diff without applying changes needle_batch_edit apply multiple edits in a single operation needle_autonomous_refactor execute ralph loop: intent-aware refactoring using semantic search + hnsw + vsa validation","server":"needle","serverVersion":"","sha256":"e2bff492844bb71720dc0caa8615e6025c5bcbf68978e17da5e89ef661adb563","skills":[],"source":"tools/mcp/needle_mcp/server.zig","specPath":"specs/tools/mcp/needle.t27","summary":{"en":"Zig MCP server for AST-aware code editing (needle): structural search and replace, quality gates, preview.","ru":"MCP-сервер на Zig для AST-осознанного редактирования кода (needle): структурный поиск и замена, гейты качества, предпросмотр."},"tools":[{"about":"Apply AST-aware code edit with Tier 0->1 fallback and safety gates","inputs":[],"name":"needle_structural_replace"},{"about":"Search codebase for pattern matches with confidence scores","inputs":[],"name":"needle_search"},{"about":"Run quality gates: parse check, AST analysis, violation detection","inputs":[],"name":"needle_quality_gates"},{"about":"Preview edit diff without applying changes","inputs":[],"name":"needle_preview"},{"about":"Apply multiple edits in a single operation","inputs":[],"name":"needle_batch_edit"},{"about":"Execute Ralph Loop: intent-aware refactoring using semantic search + HNSW + VSA validation","inputs":[],"name":"needle_autonomous_refactor"}],"toolsNote":"Input schema keys were not extracted for this server (schemas are inline Zig literals); names and descriptions only. The .claude-plugin/.mcp.json command is an absolute path into a developer checkout; its home prefix is written as here (no home paths in specs).","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":["NEON_API_KEY"],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `neon` registered in .mcp.json; launched as `npx -y @neondatabase/mcp-server-neon start`.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["NEON_API_KEY"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/neon","KIND":"tool","LAUNCH":"npx -y @neondatabase/mcp-server-neon start","QUALIFIED_ID":"gHashTag/trinity:mcp/neon","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"neon","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/neon","inSpecCorpus":true,"launch":"npx -y @neondatabase/mcp-server-neon start","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_neon","name":{"en":"neon"},"qualifiedId":"gHashTag/trinity:mcp/neon","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/neon neon external mcp server `neon` registered in .mcp.json; launched as `npx -y @neondatabase/mcp-server-neon start`.","server":"neon","serverVersion":"","sha256":"7bf7cec4562d12aa0f4d9928b70cec5fd4db6ed6f35b52d2a9286f0f932eeb24","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/neon.t27","summary":{"en":"External MCP server `neon` registered in .mcp.json; launched as `npx -y @neondatabase/mcp-server-neon start`.","ru":"Внешний MCP-сервер `neon`, зарегистрированный в .mcp.json; запускается как `npx -y @neondatabase/mcp-server-neon start`."},"tools":[],"toolsNote":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".claude/mcp.json entry; no tool list in this repository","agents":[],"config":".claude/mcp.json","discarded":0,"env":["NOTEBOOKLM_STORAGE_STATE"],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ABOUT_SOURCE":".claude/mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".claude/mcp.json","ENABLED":true,"ENV":["NOTEBOOKLM_STORAGE_STATE"],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/notebooklm","KIND":"tool","LAUNCH":"notebooklm-mcp --notebook-id auto","QUALIFIED_ID":"gHashTag/t27:mcp/notebooklm","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"notebooklm","SERVER_VERSION":"","SOURCE":".claude/mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external package, not in this repository.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/notebooklm","inSpecCorpus":true,"launch":"notebooklm-mcp --notebook-id auto","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_notebooklm","name":{"en":"notebooklm"},"qualifiedId":"gHashTag/t27:mcp/notebooklm","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/notebooklm notebooklm external mcp server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","server":"notebooklm","serverVersion":"","sha256":"93548d18109d7be76e3c43ea298c9db0a335044e2bbb820d23606859c9939bdb","skills":[],"source":".claude/mcp.json","specPath":"specs/tools/mcp/notebooklm.t27","summary":{"en":"External MCP server `notebooklm` registered in .claude/mcp.json; launched as `notebooklm-mcp`.","ru":"Внешний MCP-сервер `notebooklm`, зарегистрированный в .claude/mcp.json; запускается как `notebooklm-mcp`."},"tools":[],"toolsNote":"Tool list lives in the external package, not in this repository.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":[],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `railway-mcp-server` registered in .mcp.json; launched as `npx -y @railway/mcp-server`.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":[],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/railway-mcp-server","KIND":"tool","LAUNCH":"npx -y @railway/mcp-server","QUALIFIED_ID":"gHashTag/trinity:mcp/railway-mcp-server","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"railway-mcp-server","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/railway-mcp-server","inSpecCorpus":true,"launch":"npx -y @railway/mcp-server","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_railway_mcp_server","name":{"en":"railway-mcp-server"},"qualifiedId":"gHashTag/trinity:mcp/railway-mcp-server","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/railway-mcp-server railway-mcp-server external mcp server `railway-mcp-server` registered in .mcp.json; launched as `npx -y @railway/mcp-server`.","server":"railway-mcp-server","serverVersion":"","sha256":"e0af68eb26c5b4f8f5ac5e45aa859a28337cce715e90122020fed881b81a9afd","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/railway-mcp-server.t27","summary":{"en":"External MCP server `railway-mcp-server` registered in .mcp.json; launched as `npx -y @railway/mcp-server`.","ru":"Внешний MCP-сервер `railway-mcp-server`, зарегистрированный в .mcp.json; запускается как `npx -y @railway/mcp-server`."},"tools":[],"toolsNote":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","agents":[],"config":".mcp.json","discarded":0,"env":["PROJECT_ROOT","ENFORCE_L1"],"external":false,"family":"mcp","fields":{"ABOUT":"MCP server over stdio that checks L1 TRACEABILITY (Closes #N) in commit messages and PR descriptions, generates compliant commit messages, validates branch names and serves the PHI LOOP stacked-branch template; resources expose the constitution and the L1 audit.","ABOUT_SOURCE":"derived from the tool and resource descriptions in scripts/mcp-traceability-server.js","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["PROJECT_ROOT","ENFORCE_L1"],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/t27-traceability","KIND":"tool","LAUNCH":"node scripts/mcp-traceability-server.js","QUALIFIED_ID":"gHashTag/t27:mcp/t27-traceability","REPO":"gHashTag/t27","RESOURCES":["docs/T27-CONSTITUTION.md","docs/l1-traceability-audit.md"],"RESOURCES_ABOUT":["Constitutional laws including L1 TRACEABILITY","Audit report for L1 TRACEABILITY compliance"],"SCHEMA":2,"SERVER":"t27-traceability","SERVER_VERSION":"1.0.0","SOURCE":"scripts/mcp-traceability-server.js","TOOLS":["check_traceability","generate_commit_message","validate_branch_name","get_phi_loop_template"],"TOOLS_ABOUT":["Check if a commit message or PR description complies with L1 TRACEABILITY (Closes #N required)","Generate a compliant commit message for t27 including required L1 TRACEABILITY reference","Validate branch name follows t27 naming conventions","Get PHI LOOP stacked branch template for ring development"],"TOOLS_INPUTS":["message","type,scope,description,issueNumber,invariantLaws,body","branchName","ringNumber"],"TOOLS_NOTE":"","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/t27-traceability","inSpecCorpus":true,"launch":"node scripts/mcp-traceability-server.js","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.mcp.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/scripts/mcp-traceability-server.js"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_t27_traceability","name":{"en":"t27-traceability"},"qualifiedId":"gHashTag/t27:mcp/t27-traceability","repo":"gHashTag/t27","resources":[{"about":"Constitutional laws including L1 TRACEABILITY","path":"docs/T27-CONSTITUTION.md"},{"about":"Audit report for L1 TRACEABILITY compliance","path":"docs/l1-traceability-audit.md"}],"schema":2,"searchText":"mcp/t27-traceability t27-traceability mcp server over stdio that checks l1 traceability (closes #n) in commit messages and pr descriptions, generates compliant commit messages, validates branch names and serves the phi loop stacked-branch template; resources expose the constitution and the l1 audit. check_traceability check if a commit message or pr description complies with l1 traceability (closes #n required) generate_commit_message generate a compliant commit message for t27 including required l1 traceability reference validate_branch_name validate branch name follows t27 naming conventions get_phi_loop_template get phi loop stacked branch template for ring development","server":"t27-traceability","serverVersion":"1.0.0","sha256":"2496a572dc04d4f7e615f0d235fd6cda542d1a10caf6abc91ee4ef3a3e36da1e","skills":[],"source":"scripts/mcp-traceability-server.js","specPath":"specs/tools/mcp/t27-traceability.t27","summary":{"en":"MCP server over stdio that checks L1 TRACEABILITY (Closes #N) in commit messages and PR descriptions, generates compliant commit messages, validates branch names and serves the PHI LOOP stacked-branch template; resources expose the constitution and the L1 audit.","ru":"MCP-сервер по stdio, проверяющий L1 TRACEABILITY (Closes #N) в сообщениях коммитов и описаниях PR, генерирующий соответствующие сообщения коммитов, валидирующий имена веток и отдающий шаблон стековых веток PHI LOOP; ресурсы открывают конституцию и аудит L1."},"tools":[{"about":"Check if a commit message or PR description complies with L1 TRACEABILITY (Closes #N required)","inputs":["message"],"name":"check_traceability"},{"about":"Generate a compliant commit message for t27 including required L1 TRACEABILITY reference","inputs":["type","scope","description","issueNumber","invariantLaws","body"],"name":"generate_commit_message"},{"about":"Validate branch name follows t27 naming conventions","inputs":["branchName"],"name":"validate_branch_name"},{"about":"Get PHI LOOP stacked branch template for ring development","inputs":["ringNumber"],"name":"get_phi_loop_template"}],"toolsNote":"","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","agents":[],"config":"","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ABOUT_SOURCE":"derived from the tool descriptions in cli/tri-mcp/src/main.rs build_tools_list","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":"","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-mcp","KIND":"tool","LAUNCH":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","QUALIFIED_ID":"gHashTag/t27:mcp/tri-mcp","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-mcp","SERVER_VERSION":"0.1.0","SOURCE":"cli/tri-mcp/src/main.rs","TOOLS":["tri_status","tri_skill_begin","tri_skill_end","tri_cell_checkpoint","tri_cell_seal","tri_gen","tri_test","tri_verdict","tri_experience_save","tri_health"],"TOOLS_ABOUT":["Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","Begins a new PHI LOOP skill session bound to an issue.","Ends the active PHI LOOP skill session.","Records a checkpoint step in the active cell.","Seals the active cell by computing a SHA-256 hash of its checkpoint history.","Generates backends from a .t27 spec file using t27c.","Runs tests for a .t27 spec file using t27c.","Checks for toxic regressions by analyzing swarm health metrics.","Saves an experience episode to the akashic log.","Returns queen and swarm health status from .trinity state."],"TOOLS_INPUTS":["","issue,description","","step","","spec_path","spec_path","","episode_type,summary,ring",""],"TOOLS_NOTE":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-mcp","inSpecCorpus":true,"launch":"cargo run -q -p tri-mcp (binary tri-mcp; JSON-RPC over stdio)","links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri-mcp/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_mcp","name":{"en":"tri-mcp"},"qualifiedId":"gHashTag/t27:mcp/tri-mcp","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-mcp tri-mcp rust mcp server exposing the phi loop tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health. tri_status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. tri_skill_begin begins a new phi loop skill session bound to an issue. tri_skill_end ends the active phi loop skill session. tri_cell_checkpoint records a checkpoint step in the active cell. tri_cell_seal seals the active cell by computing a sha-256 hash of its checkpoint history. tri_gen generates backends from a .t27 spec file using t27c. tri_test runs tests for a .t27 spec file using t27c. tri_verdict checks for toxic regressions by analyzing swarm health metrics. tri_experience_save saves an experience episode to the akashic log. tri_health returns queen and swarm health status from .trinity state.","server":"tri-mcp","serverVersion":"0.1.0","sha256":"ae32961a90fd40b66ecab5b4d20fea7d20293038c00c728d191d211a9576986e","skills":[],"source":"cli/tri-mcp/src/main.rs","specPath":"specs/tools/mcp/tri-mcp.t27","summary":{"en":"Rust MCP server exposing the PHI LOOP tri commands as tools: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health.","ru":"MCP-сервер на Rust, открывающий команды tri PHI LOOP как инструменты: status, skill begin/end, cell checkpoint/seal, gen, test, verdict, experience save, health."},"tools":[{"about":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","inputs":[],"name":"tri_status"},{"about":"Begins a new PHI LOOP skill session bound to an issue.","inputs":["issue","description"],"name":"tri_skill_begin"},{"about":"Ends the active PHI LOOP skill session.","inputs":[],"name":"tri_skill_end"},{"about":"Records a checkpoint step in the active cell.","inputs":["step"],"name":"tri_cell_checkpoint"},{"about":"Seals the active cell by computing a SHA-256 hash of its checkpoint history.","inputs":[],"name":"tri_cell_seal"},{"about":"Generates backends from a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_gen"},{"about":"Runs tests for a .t27 spec file using t27c.","inputs":["spec_path"],"name":"tri_test"},{"about":"Checks for toxic regressions by analyzing swarm health metrics.","inputs":[],"name":"tri_verdict"},{"about":"Saves an experience episode to the akashic log.","inputs":["episode_type","summary","ring"],"name":"tri_experience_save"},{"about":"Returns queen and swarm health status from .trinity state.","inputs":[],"name":"tri_health"}],"toolsNote":"Not registered in .mcp.json at this commit; the server exists as the tri-mcp crate.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"manifest.json description","agents":[],"config":".claude/mcp/tri-ssot/manifest.json","discarded":0,"env":[],"external":false,"family":"mcp","fields":{"ABOUT":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ABOUT_SOURCE":"manifest.json description","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".claude/mcp/tri-ssot/manifest.json","ENABLED":true,"ENV":[],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/tri-ssot","KIND":"tool","LAUNCH":"python3 -m contrib.backend.github.mcp_server","QUALIFIED_ID":"gHashTag/t27:mcp/tri-ssot","REPO":"gHashTag/t27","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"tri-ssot","SERVER_VERSION":"1.0.0","SOURCE":".claude/mcp/tri-ssot/manifest.json","TOOLS":["tri_issue","tri_pr","tri_docs","tri_sync","tri_search"],"TOOLS_ABOUT":["GitHub Issue management: create, update, list, close","GitHub PR management: create, merge, close, get status","Documentation management: upload to NotebookLM, sync, query","Unified sync: sync all entities (issues, prs, docs) with NotebookLM","Unified search across GitHub Issues, PRs, NotebookLM docs"],"TOOLS_INPUTS":["action,title,body,labels,issue_id,state","action,title,body,pr_id,issue_id","action,file_path,title","scope","query"],"TOOLS_NOTE":"The manifest names python3 -m contrib.backend.github.mcp_server, but the t27 tree at this commit has no contrib/backend/github/mcp_server.py (git ls-tree); the tool list is taken from the manifest alone (declared, not executed).","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/tri-ssot","inSpecCorpus":true,"launch":"python3 -m contrib.backend.github.mcp_server","links":{"config":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json","pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/.claude/mcp/tri-ssot/manifest.json"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_tri_ssot","name":{"en":"tri-ssot"},"qualifiedId":"gHashTag/t27:mcp/tri-ssot","repo":"gHashTag/t27","resources":[],"schema":2,"searchText":"mcp/tri-ssot tri-ssot ssot integration for t27: github issues + prs + documentation -> notebooklm tri_issue github issue management: create, update, list, close tri_pr github pr management: create, merge, close, get status tri_docs documentation management: upload to notebooklm, sync, query tri_sync unified sync: sync all entities (issues, prs, docs) with notebooklm tri_search unified search across github issues, prs, notebooklm docs","server":"tri-ssot","serverVersion":"1.0.0","sha256":"c5f2218c27d16037026e392844aee9dff023506272d7eb2ecae5c323be2994de","skills":[],"source":".claude/mcp/tri-ssot/manifest.json","specPath":"specs/tools/mcp/tri-ssot.t27","summary":{"en":"SSOT Integration for t27: GitHub Issues + PRs + Documentation -> NotebookLM","ru":"Интеграция SSOT для t27: GitHub Issues + PR + документация -> NotebookLM."},"tools":[{"about":"GitHub Issue management: create, update, list, close","inputs":["action","title","body","labels","issue_id","state"],"name":"tri_issue"},{"about":"GitHub PR management: create, merge, close, get status","inputs":["action","title","body","pr_id","issue_id"],"name":"tri_pr"},{"about":"Documentation management: upload to NotebookLM, sync, query","inputs":["action","file_path","title"],"name":"tri_docs"},{"about":"Unified sync: sync all entities (issues, prs, docs) with NotebookLM","inputs":["scope"],"name":"tri_sync"},{"about":"Unified search across GitHub Issues, PRs, NotebookLM docs","inputs":["query"],"name":"tri_search"}],"toolsNote":"The manifest names python3 -m contrib.backend.github.mcp_server, but the t27 tree at this commit has no contrib/backend/github/mcp_server.py (git ls-tree); the tool list is taken from the manifest alone (declared, not executed).","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"derived from tools/mcp/trinity_mcp/server.zig writeToolsList and .claude/rules/mcp-servers.md","agents":[],"config":".mcp.json","discarded":0,"env":["TRINITY_MCP_PORT"],"external":false,"family":"mcp","fields":{"ABOUT":"Zig MCP server (JSON-RPC over stdio, Content-Length framing) that exposes the tri pipeline, Golden Chain links, swarm, cloud/farm, FPGA, doctor, job, issue, deploy, experience, oracle and needle tools; the static list in writeToolsList plus cell-generated tools loaded at runtime.","ABOUT_SOURCE":"derived from tools/mcp/trinity_mcp/server.zig writeToolsList and .claude/rules/mcp-servers.md","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":["TRINITY_MCP_PORT"],"EXTERNAL":false,"FAMILY":"mcp","ID":"mcp/trinity","KIND":"tool","LAUNCH":"/data/trinity/zig-out/bin/trinity-mcp","QUALIFIED_ID":"gHashTag/trinity:mcp/trinity","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"trinity","SERVER_VERSION":"","SOURCE":"tools/mcp/trinity_mcp/server.zig","TOOLS":["tri_execute","tri_code","tri_gen","tri_spec_create","tri_decompose","tri_plan","tri_verify","tri_bench","tri_verdict","tri_test","tri_test_run","tri_fix","tri_explain","tri_refactor","tri_doc","tri_reason","tri_status","tri_diff","tri_log","tri_commit","needle_structural_replace","needle_search","needle_quality_gates","needle_preview","needle_batch_edit","needle_graph_build","needle_graph_refactor","needle_graph_extract","needle_graph_visualize","needle_graph_affected","needle_graph_vsa_search","needle_semantic_replace","needle_vsa_index","needle_safe_cross_refactor","needle_vsa_rule_apply","needle_cross_preview","needle_rollback_all","needle_omega_init","needle_omega_analyze","needle_omega_execute","needle_omega_detect","needle_omega_status","needle_safety_gates_run","needle_atomic_refactor","needle_parse_check","needle_compile_check","tri_constants","tri_phi","tri_fib","tri_lucas","tri_spiral","tri_chat","tri_loop_decision","tri_pipeline","tri_omega_awaken","tri_os_boot","tri_tvc_demo","tri_tvc_stats","tri_chem_periodic","tri_chem_element","tri_chem_mass","tri_chem_moles","tri_bio_dna","tri_bio_codon","tri_bio_protein","tri_quantum_constants","tri_quantum_states","tri_bell_states","tri_formula","swarm_status","swarm_agents","swarm_register","swarm_heartbeat","swarm_task_get","swarm_task_add","swarm_task_cancel","swarm_tasks","swarm_pause","swarm_resume","swarm_assign","swarm_github_sync","swarm_github_on_start","swarm_github_on_complete","swarm_github_on_fail","oracle_start","oracle_stop","oracle_status","tri_train_status","tri_train_diagnose","tri_train_loss_curve","tri_train_recommend","tri_train_checkpoint","cloud_spawn","cloud_kill","cloud_list","cloud_status","cloud_logs","cloud_spawn_all","cloud_cleanup","cloud_history","cloud_api_check","cloud_redeploy","cloud_diagnose","cloud_issue_create","cloud_farm","cloud_farm_sync","cloud_farm_capacity","cloud_farm_rebalance","farm_evolve_health","farm_evolve_notify","farm_evolve_watch","cloud_train","cloud_train_batch","chain_cache","chain_baseline","chain_metrics","chain_patterns","chain_tree","chain_check_spec","chain_spec","chain_codegen","chain_analyze","chain_test","chain_bench","chain_fix","chain_bench_ext","chain_bench_theory","chain_delta","chain_optimize","chain_docs","chain_verdict","chain_git","chain_loop","chain_deploy","chain_evolve","chain_self_ref","chain_fpga_test","chain_research","chain_lint_spec","chain_list","cloud_decompose","tri_notify","fpga_uart_scan","fpga_uart_ping","fpga_uart_send","doctor_status","doctor_scan","doctor_report","doctor_plan","doctor_heal","job_start","job_status","job_logs","job_list","job_cancel","job_artifacts","issue_list","issue_view","issue_create","issue_comment","issue_close","issue_assign","issue_decompose","deploy_status","deploy_logs","deploy_vars","deploy_start","deploy_stop","experience_save","experience_recall","experience_mistakes","patent_status","patent_analysis","depin_status","depin_nodes","depin_fitness","research_query","experiment_list","experiment_compare","chimera_run","ouroboros_status","ouroboros_run","self_test","self_health","context_info","context_load","faculty_status","mu_status","mu_patterns","zenodo_status","tri_analyze","tri_clean","tri_fmt","tri_stats","tri_lint","tri_search","tri_metrics","tri_trace","tri_eval","farm_status","farm_idle","farm_recycle","farm_fill","farm_accounts","farm_wave_spawn","fpga_synth","fpga_status","fpga_build","fpga_verify","fpga_flash"],"TOOLS_ABOUT":["Universal executor -- run ANY tri command with automatic needle check","Generate code with typing effect","Compile VIBEE spec to Zig/Verilog","Create new .tri specification template","Break task into sub-tasks (Golden Chain Link 4)","Generate implementation plan (Golden Chain Link 5)","Run tests + benchmarks (Links 7-11)","Run performance benchmarks","Generate toxic verdict (Link 14)","Generate tests for code","Run specific test suite","Detect and fix bugs","Explain code or concept","Suggest refactoring","Generate documentation","Chain-of-thought reasoning","Git status --short","Git diff","Git log --oneline","Git add -A && commit","AST-aware code edit with Tier 0->1 fallback","Search codebase for pattern matches","Run quality gates: parse check, AST analysis","Preview edit diff without applying","Apply multiple edits in one operation","Build complete call graph with VSA embeddings for project","Rename symbol across entire project with semantic awareness","Extract function/method from code block","Generate graph visualization (DOT/JSON) with VSA clustering","Find all files affected by symbol change (with semantic impact)","Search for semantically similar symbols by code or intent","Replace code by semantic meaning (not just pattern)","Build semantic VSA index for codebase","Safe cross-file semantic refactor with VSA rules and 100% rollback","Apply VSA rules to validate proposed refactor","Preview cross-file refactor impact with safety assessment","Rollback all changes from failed refactor","Initialize Omega autonomous agent for project","Omega analyzes codebase and suggests improvements","Execute refactor plan with full autonomy","Auto-detect code improvements and optimizations","Get Omega agent status and health","Run all safety gates on a file (Phase 1: parse/compile/test)","Apply atomic refactor with 100% rollback guarantee (Phase 1)","Parse check using Zig AST parser (Phase 1)","Compile check using zig build (Phase 1)","Show sacred constants (phi, pi, e, mu, chi, sigma, epsilon...)","Compute phi^n (golden ratio power)","Fibonacci with BigInt","Lucas L(n) -- L(2)=3=TRINITY","phi-spiral coordinates","Interactive chat (vision + voice + tools)","Loop decision: CONTINUE/EXIT (Link 17)","Execute 26-link Golden Chain pipeline","Awaken Omega autonomous agent","Temporal Trinity OS boot","Run TVC chat demo","Show TVC corpus statistics","List periodic table elements by category","Look up element by symbol or atomic number","Calculate molar mass of chemical formula","Calculate moles, molecules, atoms from mass","Analyze DNA sequence (GC content, composition)","Look up RNA codon to amino acid","Analyze protein sequence (mass, composition)","Show quantum physics constants (h, hbar, alpha)","Show quantum basis states and phi-state","Show four Bell entangled states","Evaluate V = n * 3^k * pi^m * phi^p * e^q","Get Ralph Agent Swarm status summary (agents, tasks, counts)","List all registered swarm agents with status","Register a new agent in the swarm","Agent heartbeat with status, branch, task_id, commit_sha (circuit breaker)","Get next pending task for an agent (priority-ordered)","Add a new task to the swarm queue","Cancel and remove a task from the queue","List all tasks in the swarm queue","Pause all swarm agents (finish current tasks, no new assignments)","Resume all paused swarm agents","Create and assign a task to a specific agent","Convert GitHub issue to swarm task. Returns labels/actions for Go proxy.","Notify that agent started a GitHub-sourced task. Returns label swaps + comment.","Notify GitHub task completed. Returns labels, comment, close_issue.","Notify GitHub task failed. Returns labels + error comment.","Start Oracle Telegram watchdog thread (sends swarm status every N minutes)","Stop Oracle Telegram watchdog thread","Get Oracle watchdog status (running/stopped, messages sent, errors)","Get HSLM training status -- checkpoints, loss, anomalies, recommendation","Diagnose HSLM training anomalies (zero loss, phase transition, overfitting)","Get HSLM loss curve from checkpoint headers","Get phi-aware recommendation for next training action","List HSLM checkpoints with step, loss, PPL, size","Spawn a cloud agent container for a GitHub issue","Kill a cloud agent container","List all active cloud agent containers","Get cloud infrastructure status","Get cloud agent deployment logs","Spawn agents for all issues labeled agent:spawn","Remove inactive cloud agent entries","Get event history for a cloud agent","Test API key connectivity and model routing -- detects proxy returning wrong model","Reuse existing Railway service for a new issue number","Diagnose why an agent failed -- shows GitHub comments, JSONL events, PR status","Create a GitHub issue with agent:spawn label for auto-spawning","Railway multi-account farm dashboard -- shows all accounts with capacity and daily limits","Sync active service counts across all Railway accounts","Get farm capacity as JSON -- total slots, active services, daily remaining per account","Migrate services from overloaded to underloaded Railway accounts","Farm evolution health dashboard -- leaderboard, health_score 0-100, stagnation, ETA","Farm insight scan -- detect leader changes, plateaus, spikes, wave completion. Sends to Telegram unless dry-run","Single evolution sweep -- inject sacred children into free slots, auto-notify. Always --once","Spawn an HSLM training experiment on Railway farm","Spawn all 13 HSLM training experiments across Railway farm","Chain Link 0: TVC Gate -- search corpus, return cached or continue","Chain Link 1: Analyze previous version v(n-1)","Chain Link 2: Collect performance metrics","Chain Link 3: Research patterns and science (PAS)","Chain Link 4: Build technology dependency tree","Chain Link 5: VIBEE-first compliance check","Chain Link 6: Create .tri specifications","Chain Link 7: Generate Zig code from .tri specs","Chain Link 8: Sacred Intelligence code analysis","Chain Link 9: Run zig build test suite","Chain Link 10: CRITICAL -- Compare to baseline v(n-1)","Chain Link 11: SWE Agent error fixing","Chain Link 12: Compare to external tools (llama.cpp/vLLM)","Chain Link 13: Gap to theoretical maximum","Chain Link 14: Generate improvement delta report","Chain Link 15: Optimize if needed (optional)","Chain Link 16: Generate documentation with proofs","Chain Link 17: Critical self-assessment (toxic verdict)","Chain Link 18: Commit and push changes","Chain Link 19: Decide next iteration (continue/exit)","Chain Link 20: Auto-deploy to cloud","Chain Link 21: Pipeline analyzes itself (eternal self-evolution)","Chain Link 22: Pipeline improves itself (circular bootstrapping)","Chain Link 23: Camera-based LED verification for FPGA","Chain Link 24: Research-assisted error fixing via Perplexity","Chain Link 25: Validate .tri spec syntax before codegen","List all 26 Golden Chain links with roles and status","Decompose a GitHub issue into 5 role-based sub-issues (planner/coder/reviewer/tester/integrator)","Send/edit/pin Telegram messages via tri CLI","Scan for USB-UART serial devices (CH340/FTDI) connected to FPGA","PING/PONG test -- send 0x03, expect 0x83 from FPGA","Send raw hex bytes to FPGA via UART and print response","Get doctor health status -- one-line summary","Scan and classify all .zig files","Health score dashboard with emoji grades","Create migration queue for manual files","Regenerate manual files through pipeline","Start a background job","Get job status by ID","Get job logs by ID","List all background jobs","Cancel a running job","Get job artifacts by ID","List open GitHub issues","View a specific GitHub issue","Create a new GitHub issue","Add a comment to a GitHub issue","Close a GitHub issue","Assign a user to a GitHub issue","Decompose a GitHub issue into sub-tasks","Get deployment status","Get deployment logs","Get deployment environment variables","Start deployment","Stop deployment","Save an experience entry (key-value learning)","Recall an experience entry by key","List all recorded mistakes/anti-patterns","Get patent portfolio status","Get patent analysis and claims","Get DePIN node protocol status","List DePIN network nodes","Get DePIN node fitness scores","Research a topic via Perplexity-assisted search","List all HSLM training experiments","Compare two experiments","Run a chimera fused command (farm-cycle, train-cycle, etc.)","Get ouroboros self-evolution status and score","Run ouroboros self-evolution cycle","Run self-test suite","Get self-health check results","Get current context info (tokens, files, window)","Load additional context from a file path","Get Faculty Board status dashboard","Get MU agent status","List MU learned patterns","Get Zenodo publication status","Analyze codebase quality and metrics","Clean build artifacts and temp files","Format all Zig source files","Show project statistics (LOC, files, tests)","Run linter on source code","Search codebase for a query string","Get project metrics dashboard","Get execution trace","Evaluate expression or code snippet","Get training farm status overview","List idle farm workers","Recycle underperforming farm workers","Fill empty farm slots with new experiments","List all 8 Railway farm accounts and their service counts","Spawn a wave of training workers on a specific account","Run FPGA synthesis pipeline","Get FPGA hardware and synthesis status","Build FPGA bitstream","Verify FPGA bitstream against RTL","Flash bitstream to FPGA board"],"TOOLS_INPUTS":["command,args,auto_needle","prompt","spec","name","task","task","","suite","","file","pattern","file","target","file","file","prompt","","","count","message","file_path,pattern_query,replacement,safety_level,edit_mode","query,file_path,confidence_threshold","file_path,check_level","file_path,pattern_query,replacement","edits","root_dir,enable_vsa","symbol,new_name,semantic_aware,similarity_threshold,scope,preview","file,start_line,end_line,function_name","format,focus,show_vsa","symbol,include_transitive,semantic_impact","query,top_k,min_similarity","intent,replacement_intent,file,preview","root_dir,embedding_dim","intent,new_intent,semantic_threshold,preview","transformation,rules_file","symbol,new_name,include_vsa","refactor_id","root_dir,autonomy_level","intent,auto_detect","plan_id,confirm","min_confidence,max_results","","file_path,gates","file_path,pattern_query,replacement,safety_gates","file_path","project_root","","n","n","n","n","message,stream","mode","task","mode","","","","category","element","formula","formula,mass","sequence","codon","sequence","","","","n,k,m,p,q","","","agent_id,hostname","agent_id,status,branch,task_id,commit_sha","agent_id","id,slug,description,priority","task_id","","","","agent_id,description","issue_number,title,labels","task_id,agent_id,branch","task_id,agent_id,result","task_id,agent_id,error","telegram_token,chat_id,interval_ms","","","","dir","dir","dir","dir","issue_number","issue_number","","","","","","issue_number","","service_id,issue_number","issue_number","title","","","","","","dry_run","sacred,dry_run","name","","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","task","","issue_number,template","text,chat_id,pin,edit_id","","device","device,hex_bytes","","","","","","command","id","id","","id","id","","number","title,body","number,body","number","number,user","number","","","","","","key,value","key","","","","","","","query","","a,b","name","","","","","","path","","","","","","","","","","query","","","","","","","","","account,count","","","","","bitstream"],"TOOLS_NOTE":"Static list parsed from writeToolsList (210 entries; 32 entries have an unbalanced trailing brace in the source literal and were parsed after adding or removing one). Cell-generated tools from data/cells/mcp_tools.json are appended at runtime and are not listed here. .trinity/mcp_schemas.json lists a different, shorter set (29 names) and is not used as the source.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/trinity","inSpecCorpus":true,"launch":"/data/trinity/zig-out/bin/trinity-mcp","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/tools/mcp/trinity_mcp/server.zig"},"messages":["no agent letter bound by a source"],"moduleName":"tool_mcp_trinity","name":{"en":"trinity"},"qualifiedId":"gHashTag/trinity:mcp/trinity","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/trinity trinity zig mcp server (json-rpc over stdio, content-length framing) that exposes the tri pipeline, golden chain links, swarm, cloud/farm, fpga, doctor, job, issue, deploy, experience, oracle and needle tools; the static list in writetoolslist plus cell-generated tools loaded at runtime. tri_execute universal executor -- run any tri command with automatic needle check tri_code generate code with typing effect tri_gen compile vibee spec to zig/verilog tri_spec_create create new .tri specification template tri_decompose break task into sub-tasks (golden chain link 4) tri_plan generate implementation plan (golden chain link 5) tri_verify run tests + benchmarks (links 7-11) tri_bench run performance benchmarks tri_verdict generate toxic verdict (link 14) tri_test generate tests for code tri_test_run run specific test suite tri_fix detect and fix bugs tri_explain explain code or concept tri_refactor suggest refactoring tri_doc generate documentation tri_reason chain-of-thought reasoning tri_status git status --short tri_diff git diff tri_log git log --oneline tri_commit git add -a && commit needle_structural_replace ast-aware code edit with tier 0->1 fallback needle_search search codebase for pattern matches needle_quality_gates run quality gates: parse check, ast analysis needle_preview preview edit diff without applying needle_batch_edit apply multiple edits in one operation needle_graph_build build complete call graph with vsa embeddings for project needle_graph_refactor rename symbol across entire project with semantic awareness needle_graph_extract extract function/method from code block needle_graph_visualize generate graph visualization (dot/json) with vsa clustering needle_graph_affected find all files affected by symbol change (with semantic impact) needle_graph_vsa_search search for semantically similar symbols by code or intent needle_semantic_replace replace code by semantic meaning (not just pattern) needle_vsa_index build semantic vsa index for codebase needle_safe_cross_refactor safe cross-file semantic refactor with vsa rules and 100% rollback needle_vsa_rule_apply apply vsa rules to validate proposed refactor needle_cross_preview preview cross-file refactor impact with safety assessment needle_rollback_all rollback all changes from failed refactor needle_omega_init initialize omega autonomous agent for project needle_omega_analyze omega analyzes codebase and suggests improvements needle_omega_execute execute refactor plan with full autonomy needle_omega_detect auto-detect code improvements and optimizations needle_omega_status get omega agent status and health needle_safety_gates_run run all safety gates on a file (phase 1: parse/compile/test) needle_atomic_refactor apply atomic refactor with 100% rollback guarantee (phase 1) needle_parse_check parse check using zig ast parser (phase 1) needle_compile_check compile check using zig build (phase 1) tri_constants show sacred constants (phi, pi, e, mu, chi, sigma, epsilon...) tri_phi compute phi^n (golden ratio power) tri_fib fibonacci with bigint tri_lucas lucas l(n) -- l(2)=3=trinity tri_spiral phi-spiral coordinates tri_chat interactive chat (vision + voice + tools) tri_loop_decision loop decision: continue/exit (link 17) tri_pipeline execute 26-link golden chain pipeline tri_omega_awaken awaken omega autonomous agent tri_os_boot temporal trinity os boot tri_tvc_demo run tvc chat demo tri_tvc_stats show tvc corpus statistics tri_chem_periodic list periodic table elements by category tri_chem_element look up element by symbol or atomic number tri_chem_mass calculate molar mass of chemical formula tri_chem_moles calculate moles, molecules, atoms from mass tri_bio_dna analyze dna sequence (gc content, composition) tri_bio_codon look up rna codon to amino acid tri_bio_protein analyze protein sequence (mass, composition) tri_quantum_constants show quantum physics constants (h, hbar, alpha) tri_quantum_states show quantum basis states and phi-state tri_bell_states show four bell entangled states tri_formula evaluate v = n * 3^k * pi^m * phi^p * e^q swarm_status get ralph agent swarm status summary (agents, tasks, counts) swarm_agents list all registered swarm agents with status swarm_register register a new agent in the swarm swarm_heartbeat agent heartbeat with status, branch, task_id, commit_sha (circuit breaker) swarm_task_get get next pending task for an agent (priority-ordered) swarm_task_add add a new task to the swarm queue swarm_task_cancel cancel and remove a task from the queue swarm_tasks list all tasks in the swarm queue swarm_pause pause all swarm agents (finish current tasks, no new assignments) swarm_resume resume all paused swarm agents swarm_assign create and assign a task to a specific agent swarm_github_sync convert github issue to swarm task. returns labels/actions for go proxy. swarm_github_on_start notify that agent started a github-sourced task. returns label swaps + comment. swarm_github_on_complete notify github task completed. returns labels, comment, close_issue. swarm_github_on_fail notify github task failed. returns labels + error comment. oracle_start start oracle telegram watchdog thread (sends swarm status every n minutes) oracle_stop stop oracle telegram watchdog thread oracle_status get oracle watchdog status (running/stopped, messages sent, errors) tri_train_status get hslm training status -- checkpoints, loss, anomalies, recommendation tri_train_diagnose diagnose hslm training anomalies (zero loss, phase transition, overfitting) tri_train_loss_curve get hslm loss curve from checkpoint headers tri_train_recommend get phi-aware recommendation for next training action tri_train_checkpoint list hslm checkpoints with step, loss, ppl, size cloud_spawn spawn a cloud agent container for a github issue cloud_kill kill a cloud agent container cloud_list list all active cloud agent containers cloud_status get cloud infrastructure status cloud_logs get cloud agent deployment logs cloud_spawn_all spawn agents for all issues labeled agent:spawn cloud_cleanup remove inactive cloud agent entries cloud_history get event history for a cloud agent cloud_api_check test api key connectivity and model routing -- detects proxy returning wrong model cloud_redeploy reuse existing railway service for a new issue number cloud_diagnose diagnose why an agent failed -- shows github comments, jsonl events, pr status cloud_issue_create create a github issue with agent:spawn label for auto-spawning cloud_farm railway multi-account farm dashboard -- shows all accounts with capacity and daily limits cloud_farm_sync sync active service counts across all railway accounts cloud_farm_capacity get farm capacity as json -- total slots, active services, daily remaining per account cloud_farm_rebalance migrate services from overloaded to underloaded railway accounts farm_evolve_health farm evolution health dashboard -- leaderboard, health_score 0-100, stagnation, eta farm_evolve_notify farm insight scan -- detect leader changes, plateaus, spikes, wave completion. sends to telegram unless dry-run farm_evolve_watch single evolution sweep -- inject sacred children into free slots, auto-notify. always --once cloud_train spawn an hslm training experiment on railway farm cloud_train_batch spawn all 13 hslm training experiments across railway farm chain_cache chain link 0: tvc gate -- search corpus, return cached or continue chain_baseline chain link 1: analyze previous version v(n-1) chain_metrics chain link 2: collect performance metrics chain_patterns chain link 3: research patterns and science (pas) chain_tree chain link 4: build technology dependency tree chain_check_spec chain link 5: vibee-first compliance check chain_spec chain link 6: create .tri specifications chain_codegen chain link 7: generate zig code from .tri specs chain_analyze chain link 8: sacred intelligence code analysis chain_test chain link 9: run zig build test suite chain_bench chain link 10: critical -- compare to baseline v(n-1) chain_fix chain link 11: swe agent error fixing chain_bench_ext chain link 12: compare to external tools (llama.cpp/vllm) chain_bench_theory chain link 13: gap to theoretical maximum chain_delta chain link 14: generate improvement delta report chain_optimize chain link 15: optimize if needed (optional) chain_docs chain link 16: generate documentation with proofs chain_verdict chain link 17: critical self-assessment (toxic verdict) chain_git chain link 18: commit and push changes chain_loop chain link 19: decide next iteration (continue/exit) chain_deploy chain link 20: auto-deploy to cloud chain_evolve chain link 21: pipeline analyzes itself (eternal self-evolution) chain_self_ref chain link 22: pipeline improves itself (circular bootstrapping) chain_fpga_test chain link 23: camera-based led verification for fpga chain_research chain link 24: research-assisted error fixing via perplexity chain_lint_spec chain link 25: validate .tri spec syntax before codegen chain_list list all 26 golden chain links with roles and status cloud_decompose decompose a github issue into 5 role-based sub-issues (planner/coder/reviewer/tester/integrator) tri_notify send/edit/pin telegram messages via tri cli fpga_uart_scan scan for usb-uart serial devices (ch340/ftdi) connected to fpga fpga_uart_ping ping/pong test -- send 0x03, expect 0x83 from fpga fpga_uart_send send raw hex bytes to fpga via uart and print response doctor_status get doctor health status -- one-line summary doctor_scan scan and classify all .zig files doctor_report health score dashboard with emoji grades doctor_plan create migration queue for manual files doctor_heal regenerate manual files through pipeline job_start start a background job job_status get job status by id job_logs get job logs by id job_list list all background jobs job_cancel cancel a running job job_artifacts get job artifacts by id issue_list list open github issues issue_view view a specific github issue issue_create create a new github issue issue_comment add a comment to a github issue issue_close close a github issue issue_assign assign a user to a github issue issue_decompose decompose a github issue into sub-tasks deploy_status get deployment status deploy_logs get deployment logs deploy_vars get deployment environment variables deploy_start start deployment deploy_stop stop deployment experience_save save an experience entry (key-value learning) experience_recall recall an experience entry by key experience_mistakes list all recorded mistakes/anti-patterns patent_status get patent portfolio status patent_analysis get patent analysis and claims depin_status get depin node protocol status depin_nodes list depin network nodes depin_fitness get depin node fitness scores research_query research a topic via perplexity-assisted search experiment_list list all hslm training experiments experiment_compare compare two experiments chimera_run run a chimera fused command (farm-cycle, train-cycle, etc.) ouroboros_status get ouroboros self-evolution status and score ouroboros_run run ouroboros self-evolution cycle self_test run self-test suite self_health get self-health check results context_info get current context info (tokens, files, window) context_load load additional context from a file path faculty_status get faculty board status dashboard mu_status get mu agent status mu_patterns list mu learned patterns zenodo_status get zenodo publication status tri_analyze analyze codebase quality and metrics tri_clean clean build artifacts and temp files tri_fmt format all zig source files tri_stats show project statistics (loc, files, tests) tri_lint run linter on source code tri_search search codebase for a query string tri_metrics get project metrics dashboard tri_trace get execution trace tri_eval evaluate expression or code snippet farm_status get training farm status overview farm_idle list idle farm workers farm_recycle recycle underperforming farm workers farm_fill fill empty farm slots with new experiments farm_accounts list all 8 railway farm accounts and their service counts farm_wave_spawn spawn a wave of training workers on a specific account fpga_synth run fpga synthesis pipeline fpga_status get fpga hardware and synthesis status fpga_build build fpga bitstream fpga_verify verify fpga bitstream against rtl fpga_flash flash bitstream to fpga board","server":"trinity","serverVersion":"","sha256":"6d12259c8f9ce6b5c139b041f23558ef50c0f6a3edb22569fb4e2559f4ca3b54","skills":[],"source":"tools/mcp/trinity_mcp/server.zig","specPath":"specs/tools/mcp/trinity.t27","summary":{"en":"Zig MCP server (JSON-RPC over stdio, Content-Length framing) that exposes the tri pipeline, Golden Chain links, swarm, cloud/farm, FPGA, doctor, job, issue, deploy, experience, oracle and needle tools; the static list in writeToolsList plus cell-generated tools loaded at runtime.","ru":"MCP-сервер на Zig (JSON-RPC по stdio, кадрирование Content-Length), открывающий инструменты конвейера tri, звеньев Golden Chain, роя, облака/фермы, FPGA, doctor, job, issue, deploy, experience, oracle и needle; статический список writeToolsList плюс инструменты ячеек, подгружаемые во время выполнения."},"tools":[{"about":"Universal executor -- run ANY tri command with automatic needle check","inputs":["command","args","auto_needle"],"name":"tri_execute"},{"about":"Generate code with typing effect","inputs":["prompt"],"name":"tri_code"},{"about":"Compile VIBEE spec to Zig/Verilog","inputs":["spec"],"name":"tri_gen"},{"about":"Create new .tri specification template","inputs":["name"],"name":"tri_spec_create"},{"about":"Break task into sub-tasks (Golden Chain Link 4)","inputs":["task"],"name":"tri_decompose"},{"about":"Generate implementation plan (Golden Chain Link 5)","inputs":["task"],"name":"tri_plan"},{"about":"Run tests + benchmarks (Links 7-11)","inputs":[],"name":"tri_verify"},{"about":"Run performance benchmarks","inputs":["suite"],"name":"tri_bench"},{"about":"Generate toxic verdict (Link 14)","inputs":[],"name":"tri_verdict"},{"about":"Generate tests for code","inputs":["file"],"name":"tri_test"},{"about":"Run specific test suite","inputs":["pattern"],"name":"tri_test_run"},{"about":"Detect and fix bugs","inputs":["file"],"name":"tri_fix"},{"about":"Explain code or concept","inputs":["target"],"name":"tri_explain"},{"about":"Suggest refactoring","inputs":["file"],"name":"tri_refactor"},{"about":"Generate documentation","inputs":["file"],"name":"tri_doc"},{"about":"Chain-of-thought reasoning","inputs":["prompt"],"name":"tri_reason"},{"about":"Git status --short","inputs":[],"name":"tri_status"},{"about":"Git diff","inputs":[],"name":"tri_diff"},{"about":"Git log --oneline","inputs":["count"],"name":"tri_log"},{"about":"Git add -A && commit","inputs":["message"],"name":"tri_commit"},{"about":"AST-aware code edit with Tier 0->1 fallback","inputs":["file_path","pattern_query","replacement","safety_level","edit_mode"],"name":"needle_structural_replace"},{"about":"Search codebase for pattern matches","inputs":["query","file_path","confidence_threshold"],"name":"needle_search"},{"about":"Run quality gates: parse check, AST analysis","inputs":["file_path","check_level"],"name":"needle_quality_gates"},{"about":"Preview edit diff without applying","inputs":["file_path","pattern_query","replacement"],"name":"needle_preview"},{"about":"Apply multiple edits in one operation","inputs":["edits"],"name":"needle_batch_edit"},{"about":"Build complete call graph with VSA embeddings for project","inputs":["root_dir","enable_vsa"],"name":"needle_graph_build"},{"about":"Rename symbol across entire project with semantic awareness","inputs":["symbol","new_name","semantic_aware","similarity_threshold","scope","preview"],"name":"needle_graph_refactor"},{"about":"Extract function/method from code block","inputs":["file","start_line","end_line","function_name"],"name":"needle_graph_extract"},{"about":"Generate graph visualization (DOT/JSON) with VSA clustering","inputs":["format","focus","show_vsa"],"name":"needle_graph_visualize"},{"about":"Find all files affected by symbol change (with semantic impact)","inputs":["symbol","include_transitive","semantic_impact"],"name":"needle_graph_affected"},{"about":"Search for semantically similar symbols by code or intent","inputs":["query","top_k","min_similarity"],"name":"needle_graph_vsa_search"},{"about":"Replace code by semantic meaning (not just pattern)","inputs":["intent","replacement_intent","file","preview"],"name":"needle_semantic_replace"},{"about":"Build semantic VSA index for codebase","inputs":["root_dir","embedding_dim"],"name":"needle_vsa_index"},{"about":"Safe cross-file semantic refactor with VSA rules and 100% rollback","inputs":["intent","new_intent","semantic_threshold","preview"],"name":"needle_safe_cross_refactor"},{"about":"Apply VSA rules to validate proposed refactor","inputs":["transformation","rules_file"],"name":"needle_vsa_rule_apply"},{"about":"Preview cross-file refactor impact with safety assessment","inputs":["symbol","new_name","include_vsa"],"name":"needle_cross_preview"},{"about":"Rollback all changes from failed refactor","inputs":["refactor_id"],"name":"needle_rollback_all"},{"about":"Initialize Omega autonomous agent for project","inputs":["root_dir","autonomy_level"],"name":"needle_omega_init"},{"about":"Omega analyzes codebase and suggests improvements","inputs":["intent","auto_detect"],"name":"needle_omega_analyze"},{"about":"Execute refactor plan with full autonomy","inputs":["plan_id","confirm"],"name":"needle_omega_execute"},{"about":"Auto-detect code improvements and optimizations","inputs":["min_confidence","max_results"],"name":"needle_omega_detect"},{"about":"Get Omega agent status and health","inputs":[],"name":"needle_omega_status"},{"about":"Run all safety gates on a file (Phase 1: parse/compile/test)","inputs":["file_path","gates"],"name":"needle_safety_gates_run"},{"about":"Apply atomic refactor with 100% rollback guarantee (Phase 1)","inputs":["file_path","pattern_query","replacement","safety_gates"],"name":"needle_atomic_refactor"},{"about":"Parse check using Zig AST parser (Phase 1)","inputs":["file_path"],"name":"needle_parse_check"},{"about":"Compile check using zig build (Phase 1)","inputs":["project_root"],"name":"needle_compile_check"},{"about":"Show sacred constants (phi, pi, e, mu, chi, sigma, epsilon...)","inputs":[],"name":"tri_constants"},{"about":"Compute phi^n (golden ratio power)","inputs":["n"],"name":"tri_phi"},{"about":"Fibonacci with BigInt","inputs":["n"],"name":"tri_fib"},{"about":"Lucas L(n) -- L(2)=3=TRINITY","inputs":["n"],"name":"tri_lucas"},{"about":"phi-spiral coordinates","inputs":["n"],"name":"tri_spiral"},{"about":"Interactive chat (vision + voice + tools)","inputs":["message","stream"],"name":"tri_chat"},{"about":"Loop decision: CONTINUE/EXIT (Link 17)","inputs":["mode"],"name":"tri_loop_decision"},{"about":"Execute 26-link Golden Chain pipeline","inputs":["task"],"name":"tri_pipeline"},{"about":"Awaken Omega autonomous agent","inputs":["mode"],"name":"tri_omega_awaken"},{"about":"Temporal Trinity OS boot","inputs":[],"name":"tri_os_boot"},{"about":"Run TVC chat demo","inputs":[],"name":"tri_tvc_demo"},{"about":"Show TVC corpus statistics","inputs":[],"name":"tri_tvc_stats"},{"about":"List periodic table elements by category","inputs":["category"],"name":"tri_chem_periodic"},{"about":"Look up element by symbol or atomic number","inputs":["element"],"name":"tri_chem_element"},{"about":"Calculate molar mass of chemical formula","inputs":["formula"],"name":"tri_chem_mass"},{"about":"Calculate moles, molecules, atoms from mass","inputs":["formula","mass"],"name":"tri_chem_moles"},{"about":"Analyze DNA sequence (GC content, composition)","inputs":["sequence"],"name":"tri_bio_dna"},{"about":"Look up RNA codon to amino acid","inputs":["codon"],"name":"tri_bio_codon"},{"about":"Analyze protein sequence (mass, composition)","inputs":["sequence"],"name":"tri_bio_protein"},{"about":"Show quantum physics constants (h, hbar, alpha)","inputs":[],"name":"tri_quantum_constants"},{"about":"Show quantum basis states and phi-state","inputs":[],"name":"tri_quantum_states"},{"about":"Show four Bell entangled states","inputs":[],"name":"tri_bell_states"},{"about":"Evaluate V = n * 3^k * pi^m * phi^p * e^q","inputs":["n","k","m","p","q"],"name":"tri_formula"},{"about":"Get Ralph Agent Swarm status summary (agents, tasks, counts)","inputs":[],"name":"swarm_status"},{"about":"List all registered swarm agents with status","inputs":[],"name":"swarm_agents"},{"about":"Register a new agent in the swarm","inputs":["agent_id","hostname"],"name":"swarm_register"},{"about":"Agent heartbeat with status, branch, task_id, commit_sha (circuit breaker)","inputs":["agent_id","status","branch","task_id","commit_sha"],"name":"swarm_heartbeat"},{"about":"Get next pending task for an agent (priority-ordered)","inputs":["agent_id"],"name":"swarm_task_get"},{"about":"Add a new task to the swarm queue","inputs":["id","slug","description","priority"],"name":"swarm_task_add"},{"about":"Cancel and remove a task from the queue","inputs":["task_id"],"name":"swarm_task_cancel"},{"about":"List all tasks in the swarm queue","inputs":[],"name":"swarm_tasks"},{"about":"Pause all swarm agents (finish current tasks, no new assignments)","inputs":[],"name":"swarm_pause"},{"about":"Resume all paused swarm agents","inputs":[],"name":"swarm_resume"},{"about":"Create and assign a task to a specific agent","inputs":["agent_id","description"],"name":"swarm_assign"},{"about":"Convert GitHub issue to swarm task. Returns labels/actions for Go proxy.","inputs":["issue_number","title","labels"],"name":"swarm_github_sync"},{"about":"Notify that agent started a GitHub-sourced task. Returns label swaps + comment.","inputs":["task_id","agent_id","branch"],"name":"swarm_github_on_start"},{"about":"Notify GitHub task completed. Returns labels, comment, close_issue.","inputs":["task_id","agent_id","result"],"name":"swarm_github_on_complete"},{"about":"Notify GitHub task failed. Returns labels + error comment.","inputs":["task_id","agent_id","error"],"name":"swarm_github_on_fail"},{"about":"Start Oracle Telegram watchdog thread (sends swarm status every N minutes)","inputs":["telegram_token","chat_id","interval_ms"],"name":"oracle_start"},{"about":"Stop Oracle Telegram watchdog thread","inputs":[],"name":"oracle_stop"},{"about":"Get Oracle watchdog status (running/stopped, messages sent, errors)","inputs":[],"name":"oracle_status"},{"about":"Get HSLM training status -- checkpoints, loss, anomalies, recommendation","inputs":[],"name":"tri_train_status"},{"about":"Diagnose HSLM training anomalies (zero loss, phase transition, overfitting)","inputs":["dir"],"name":"tri_train_diagnose"},{"about":"Get HSLM loss curve from checkpoint headers","inputs":["dir"],"name":"tri_train_loss_curve"},{"about":"Get phi-aware recommendation for next training action","inputs":["dir"],"name":"tri_train_recommend"},{"about":"List HSLM checkpoints with step, loss, PPL, size","inputs":["dir"],"name":"tri_train_checkpoint"},{"about":"Spawn a cloud agent container for a GitHub issue","inputs":["issue_number"],"name":"cloud_spawn"},{"about":"Kill a cloud agent container","inputs":["issue_number"],"name":"cloud_kill"},{"about":"List all active cloud agent containers","inputs":[],"name":"cloud_list"},{"about":"Get cloud infrastructure status","inputs":[],"name":"cloud_status"},{"about":"Get cloud agent deployment logs","inputs":[],"name":"cloud_logs"},{"about":"Spawn agents for all issues labeled agent:spawn","inputs":[],"name":"cloud_spawn_all"},{"about":"Remove inactive cloud agent entries","inputs":[],"name":"cloud_cleanup"},{"about":"Get event history for a cloud agent","inputs":["issue_number"],"name":"cloud_history"},{"about":"Test API key connectivity and model routing -- detects proxy returning wrong model","inputs":[],"name":"cloud_api_check"},{"about":"Reuse existing Railway service for a new issue number","inputs":["service_id","issue_number"],"name":"cloud_redeploy"},{"about":"Diagnose why an agent failed -- shows GitHub comments, JSONL events, PR status","inputs":["issue_number"],"name":"cloud_diagnose"},{"about":"Create a GitHub issue with agent:spawn label for auto-spawning","inputs":["title"],"name":"cloud_issue_create"},{"about":"Railway multi-account farm dashboard -- shows all accounts with capacity and daily limits","inputs":[],"name":"cloud_farm"},{"about":"Sync active service counts across all Railway accounts","inputs":[],"name":"cloud_farm_sync"},{"about":"Get farm capacity as JSON -- total slots, active services, daily remaining per account","inputs":[],"name":"cloud_farm_capacity"},{"about":"Migrate services from overloaded to underloaded Railway accounts","inputs":[],"name":"cloud_farm_rebalance"},{"about":"Farm evolution health dashboard -- leaderboard, health_score 0-100, stagnation, ETA","inputs":[],"name":"farm_evolve_health"},{"about":"Farm insight scan -- detect leader changes, plateaus, spikes, wave completion. Sends to Telegram unless dry-run","inputs":["dry_run"],"name":"farm_evolve_notify"},{"about":"Single evolution sweep -- inject sacred children into free slots, auto-notify. Always --once","inputs":["sacred","dry_run"],"name":"farm_evolve_watch"},{"about":"Spawn an HSLM training experiment on Railway farm","inputs":["name"],"name":"cloud_train"},{"about":"Spawn all 13 HSLM training experiments across Railway farm","inputs":[],"name":"cloud_train_batch"},{"about":"Chain Link 0: TVC Gate -- search corpus, return cached or continue","inputs":["task"],"name":"chain_cache"},{"about":"Chain Link 1: Analyze previous version v(n-1)","inputs":["task"],"name":"chain_baseline"},{"about":"Chain Link 2: Collect performance metrics","inputs":["task"],"name":"chain_metrics"},{"about":"Chain Link 3: Research patterns and science (PAS)","inputs":["task"],"name":"chain_patterns"},{"about":"Chain Link 4: Build technology dependency tree","inputs":["task"],"name":"chain_tree"},{"about":"Chain Link 5: VIBEE-first compliance check","inputs":["task"],"name":"chain_check_spec"},{"about":"Chain Link 6: Create .tri specifications","inputs":["task"],"name":"chain_spec"},{"about":"Chain Link 7: Generate Zig code from .tri specs","inputs":["task"],"name":"chain_codegen"},{"about":"Chain Link 8: Sacred Intelligence code analysis","inputs":["task"],"name":"chain_analyze"},{"about":"Chain Link 9: Run zig build test suite","inputs":["task"],"name":"chain_test"},{"about":"Chain Link 10: CRITICAL -- Compare to baseline v(n-1)","inputs":["task"],"name":"chain_bench"},{"about":"Chain Link 11: SWE Agent error fixing","inputs":["task"],"name":"chain_fix"},{"about":"Chain Link 12: Compare to external tools (llama.cpp/vLLM)","inputs":["task"],"name":"chain_bench_ext"},{"about":"Chain Link 13: Gap to theoretical maximum","inputs":["task"],"name":"chain_bench_theory"},{"about":"Chain Link 14: Generate improvement delta report","inputs":["task"],"name":"chain_delta"},{"about":"Chain Link 15: Optimize if needed (optional)","inputs":["task"],"name":"chain_optimize"},{"about":"Chain Link 16: Generate documentation with proofs","inputs":["task"],"name":"chain_docs"},{"about":"Chain Link 17: Critical self-assessment (toxic verdict)","inputs":["task"],"name":"chain_verdict"},{"about":"Chain Link 18: Commit and push changes","inputs":["task"],"name":"chain_git"},{"about":"Chain Link 19: Decide next iteration (continue/exit)","inputs":["task"],"name":"chain_loop"},{"about":"Chain Link 20: Auto-deploy to cloud","inputs":["task"],"name":"chain_deploy"},{"about":"Chain Link 21: Pipeline analyzes itself (eternal self-evolution)","inputs":["task"],"name":"chain_evolve"},{"about":"Chain Link 22: Pipeline improves itself (circular bootstrapping)","inputs":["task"],"name":"chain_self_ref"},{"about":"Chain Link 23: Camera-based LED verification for FPGA","inputs":["task"],"name":"chain_fpga_test"},{"about":"Chain Link 24: Research-assisted error fixing via Perplexity","inputs":["task"],"name":"chain_research"},{"about":"Chain Link 25: Validate .tri spec syntax before codegen","inputs":["task"],"name":"chain_lint_spec"},{"about":"List all 26 Golden Chain links with roles and status","inputs":[],"name":"chain_list"},{"about":"Decompose a GitHub issue into 5 role-based sub-issues (planner/coder/reviewer/tester/integrator)","inputs":["issue_number","template"],"name":"cloud_decompose"},{"about":"Send/edit/pin Telegram messages via tri CLI","inputs":["text","chat_id","pin","edit_id"],"name":"tri_notify"},{"about":"Scan for USB-UART serial devices (CH340/FTDI) connected to FPGA","inputs":[],"name":"fpga_uart_scan"},{"about":"PING/PONG test -- send 0x03, expect 0x83 from FPGA","inputs":["device"],"name":"fpga_uart_ping"},{"about":"Send raw hex bytes to FPGA via UART and print response","inputs":["device","hex_bytes"],"name":"fpga_uart_send"},{"about":"Get doctor health status -- one-line summary","inputs":[],"name":"doctor_status"},{"about":"Scan and classify all .zig files","inputs":[],"name":"doctor_scan"},{"about":"Health score dashboard with emoji grades","inputs":[],"name":"doctor_report"},{"about":"Create migration queue for manual files","inputs":[],"name":"doctor_plan"},{"about":"Regenerate manual files through pipeline","inputs":[],"name":"doctor_heal"},{"about":"Start a background job","inputs":["command"],"name":"job_start"},{"about":"Get job status by ID","inputs":["id"],"name":"job_status"},{"about":"Get job logs by ID","inputs":["id"],"name":"job_logs"},{"about":"List all background jobs","inputs":[],"name":"job_list"},{"about":"Cancel a running job","inputs":["id"],"name":"job_cancel"},{"about":"Get job artifacts by ID","inputs":["id"],"name":"job_artifacts"},{"about":"List open GitHub issues","inputs":[],"name":"issue_list"},{"about":"View a specific GitHub issue","inputs":["number"],"name":"issue_view"},{"about":"Create a new GitHub issue","inputs":["title","body"],"name":"issue_create"},{"about":"Add a comment to a GitHub issue","inputs":["number","body"],"name":"issue_comment"},{"about":"Close a GitHub issue","inputs":["number"],"name":"issue_close"},{"about":"Assign a user to a GitHub issue","inputs":["number","user"],"name":"issue_assign"},{"about":"Decompose a GitHub issue into sub-tasks","inputs":["number"],"name":"issue_decompose"},{"about":"Get deployment status","inputs":[],"name":"deploy_status"},{"about":"Get deployment logs","inputs":[],"name":"deploy_logs"},{"about":"Get deployment environment variables","inputs":[],"name":"deploy_vars"},{"about":"Start deployment","inputs":[],"name":"deploy_start"},{"about":"Stop deployment","inputs":[],"name":"deploy_stop"},{"about":"Save an experience entry (key-value learning)","inputs":["key","value"],"name":"experience_save"},{"about":"Recall an experience entry by key","inputs":["key"],"name":"experience_recall"},{"about":"List all recorded mistakes/anti-patterns","inputs":[],"name":"experience_mistakes"},{"about":"Get patent portfolio status","inputs":[],"name":"patent_status"},{"about":"Get patent analysis and claims","inputs":[],"name":"patent_analysis"},{"about":"Get DePIN node protocol status","inputs":[],"name":"depin_status"},{"about":"List DePIN network nodes","inputs":[],"name":"depin_nodes"},{"about":"Get DePIN node fitness scores","inputs":[],"name":"depin_fitness"},{"about":"Research a topic via Perplexity-assisted search","inputs":["query"],"name":"research_query"},{"about":"List all HSLM training experiments","inputs":[],"name":"experiment_list"},{"about":"Compare two experiments","inputs":["a","b"],"name":"experiment_compare"},{"about":"Run a chimera fused command (farm-cycle, train-cycle, etc.)","inputs":["name"],"name":"chimera_run"},{"about":"Get ouroboros self-evolution status and score","inputs":[],"name":"ouroboros_status"},{"about":"Run ouroboros self-evolution cycle","inputs":[],"name":"ouroboros_run"},{"about":"Run self-test suite","inputs":[],"name":"self_test"},{"about":"Get self-health check results","inputs":[],"name":"self_health"},{"about":"Get current context info (tokens, files, window)","inputs":[],"name":"context_info"},{"about":"Load additional context from a file path","inputs":["path"],"name":"context_load"},{"about":"Get Faculty Board status dashboard","inputs":[],"name":"faculty_status"},{"about":"Get MU agent status","inputs":[],"name":"mu_status"},{"about":"List MU learned patterns","inputs":[],"name":"mu_patterns"},{"about":"Get Zenodo publication status","inputs":[],"name":"zenodo_status"},{"about":"Analyze codebase quality and metrics","inputs":[],"name":"tri_analyze"},{"about":"Clean build artifacts and temp files","inputs":[],"name":"tri_clean"},{"about":"Format all Zig source files","inputs":[],"name":"tri_fmt"},{"about":"Show project statistics (LOC, files, tests)","inputs":[],"name":"tri_stats"},{"about":"Run linter on source code","inputs":[],"name":"tri_lint"},{"about":"Search codebase for a query string","inputs":["query"],"name":"tri_search"},{"about":"Get project metrics dashboard","inputs":[],"name":"tri_metrics"},{"about":"Get execution trace","inputs":[],"name":"tri_trace"},{"about":"Evaluate expression or code snippet","inputs":[],"name":"tri_eval"},{"about":"Get training farm status overview","inputs":[],"name":"farm_status"},{"about":"List idle farm workers","inputs":[],"name":"farm_idle"},{"about":"Recycle underperforming farm workers","inputs":[],"name":"farm_recycle"},{"about":"Fill empty farm slots with new experiments","inputs":[],"name":"farm_fill"},{"about":"List all 8 Railway farm accounts and their service counts","inputs":[],"name":"farm_accounts"},{"about":"Spawn a wave of training workers on a specific account","inputs":["account","count"],"name":"farm_wave_spawn"},{"about":"Run FPGA synthesis pipeline","inputs":[],"name":"fpga_synth"},{"about":"Get FPGA hardware and synthesis status","inputs":[],"name":"fpga_status"},{"about":"Build FPGA bitstream","inputs":[],"name":"fpga_build"},{"about":"Verify FPGA bitstream against RTL","inputs":[],"name":"fpga_verify"},{"about":"Flash bitstream to FPGA board","inputs":["bitstream"],"name":"fpga_flash"}],"toolsNote":"Static list parsed from writeToolsList (210 entries; 32 entries have an unbalanced trailing brace in the source literal and were parsed after adding or removing one). Cell-generated tools from data/cells/mcp_tools.json are appended at runtime and are not listed here. .trinity/mcp_schemas.json lists a different, shorter set (29 names) and is not used as the source.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":".mcp.json entry; no tool list in this repository","agents":[],"config":".mcp.json","discarded":0,"env":[],"external":true,"family":"mcp","fields":{"ABOUT":"External MCP server `zig-docs` registered in .mcp.json; launched as `npx -y @nichochar/zig-mcp@latest`.","ABOUT_SOURCE":".mcp.json entry; no tool list in this repository","AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this server: docs/agents/AGENTS_ALPHABET.md, specs/OWNERS.md and .claude/agents/*.md do not name it.","CONFIG":".mcp.json","ENABLED":true,"ENV":[],"EXTERNAL":true,"FAMILY":"mcp","ID":"mcp/zig-docs","KIND":"tool","LAUNCH":"npx -y @nichochar/zig-mcp@latest","QUALIFIED_ID":"gHashTag/trinity:mcp/zig-docs","REPO":"gHashTag/trinity","RESOURCES":[],"RESOURCES_ABOUT":[],"SCHEMA":2,"SERVER":"zig-docs","SERVER_VERSION":"","SOURCE":".mcp.json","TOOLS":[],"TOOLS_ABOUT":[],"TOOLS_INPUTS":[],"TOOLS_NOTE":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","TRANSPORT":"stdio","WITNESS":"source-parse"},"health":"ok","id":"mcp/zig-docs","inSpecCorpus":true,"launch":"npx -y @nichochar/zig-mcp@latest","links":{"config":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json","pinnedAt":"ddceafb50cd0e620387161228fa2c9ae134047de","source":"https://github.com/gHashTag/trinity/blob/ddceafb50cd0e620387161228fa2c9ae134047de/.mcp.json"},"messages":["no agent letter bound by a source","external package: tool list not in the repository"],"moduleName":"tool_mcp_zig_docs","name":{"en":"zig-docs"},"qualifiedId":"gHashTag/trinity:mcp/zig-docs","repo":"gHashTag/trinity","resources":[],"schema":2,"searchText":"mcp/zig-docs zig-docs external mcp server `zig-docs` registered in .mcp.json; launched as `npx -y @nichochar/zig-mcp@latest`.","server":"zig-docs","serverVersion":"","sha256":"baaff4d44a3595acd0cf596f2f070219c08df87bb2a997092e0b3e4792f06903","skills":[],"source":".mcp.json","specPath":"specs/tools/mcp/zig-docs.t27","summary":{"en":"External MCP server `zig-docs` registered in .mcp.json; launched as `npx -y @nichochar/zig-mcp@latest`.","ru":"Внешний MCP-сервер `zig-docs`, зарегистрированный в .mcp.json; запускается как `npx -y @nichochar/zig-mcp@latest`."},"tools":[],"toolsNote":"Tool list lives in the external npm package, not in this repository; nothing is listed rather than guessed.","transport":"stdio","typecheckOk":true,"witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","actions":[{"about":"List recovery sites whose preceding comment names a concrete construct.","name":"list"}],"agents":[],"args":[],"command":"tri abandoned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recovery sites whose own comment names the construct they discard.","ABOUT_SOURCE":"clap /// doc on Commands::Abandoned (cli/tri/src/main.rs; module cli/tri/src/abandoned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List recovery sites whose preceding comment names a concrete construct."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri abandoned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/abandoned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/abandoned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/abandoned.rs","VARIANT":"Commands::Abandoned","WHEN_TO_USE":"Recovery sites whose own comment names the construct they discard.","WITNESS":"source-parse"},"health":"ok","id":"tri/abandoned","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/abandoned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_abandoned","name":{"en":"tri abandoned"},"qualifiedId":"gHashTag/t27:tri/abandoned","repo":"gHashTag/t27","schema":2,"searchText":"tri/abandoned tri abandoned recovery sites whose own comment names the construct they discard. recovery sites whose own comment names the construct they discard. list list recovery sites whose preceding comment names a concrete construct.","sha256":"b3105d48a28faff92bc02e393c146c4e95cba6c68277eb54f27ec5abc3b77bb4","skills":[],"source":"cli/tri/src/abandoned.rs","specPath":"specs/tools/tri/abandoned.t27","summary":{"en":"Recovery sites whose own comment names the construct they discard.","ru":"Точки восстановления, чей собственный комментарий называет отбрасываемую конструкцию."},"typecheckOk":true,"variant":"Commands::Abandoned","whenToUse":"Recovery sites whose own comment names the construct they discard.","witness":"source-parse"},{"aboutSource":"tri-mcp tools tri_cell_checkpoint and tri_cell_seal descriptions (cli/tri-mcp/src/main.rs); CellAction enum cli/tri/src/main.rs:448","actions":[{"about":"","name":"checkpoint"},{"about":"","name":"seal"}],"agents":[{"letter":"W","ok":true}],"args":[],"command":"tri cell","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ABOUT_SOURCE":"tri-mcp tools tri_cell_checkpoint and tri_cell_seal descriptions (cli/tri-mcp/src/main.rs); CellAction enum cli/tri/src/main.rs:448","ACTIONS":["checkpoint","seal"],"ACTIONS_ABOUT":["",""],"AGENTS":["W"],"AGENTS_NOTE":"docs/agents/AGENTS_ALPHABET.md:144, agent W domain Workflow / tri cell, key file src/tri/cell.zig; PHASE 6 EVOLVE: W seals tri-cell commit (hash seal).","ARGS":[],"COMMAND":"tri cell","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/cell","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/cell","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Cell","WHEN_TO_USE":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","WITNESS":"source-parse"},"health":"ok","id":"tri/cell","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_cell","name":{"en":"tri cell"},"qualifiedId":"gHashTag/t27:tri/cell","repo":"gHashTag/t27","schema":2,"searchText":"tri/cell tri cell records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. records a checkpoint step in the active cell. seals the active cell by computing a sha-256 hash of its checkpoint history. checkpoint seal w","sha256":"36ed34dfc7beb24c2fdd5b7dc5f7fe3375b42f357ffde7befd19f7cfbc22cdca","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/cell.t27","summary":{"en":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","ru":"Записывает шаг-контрольную точку в активной ячейке; запечатывает активную ячейку, вычисляя SHA-256 истории её контрольных точек."},"typecheckOk":true,"variant":"Commands::Cell","whenToUse":"Records a checkpoint step in the active cell. Seals the active cell by computing a SHA-256 hash of its checkpoint history.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","actions":[{"about":"Every census's printed population, against one counted another way.","name":"audit"},{"about":"Pin each pure census's output, so a change that moves one has to say so.","name":"pin"}],"agents":[],"args":[],"command":"tri census","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ABOUT_SOURCE":"clap /// doc on Commands::Census (cli/tri/src/main.rs; module cli/tri/src/census.rs)","ACTIONS":["audit","pin"],"ACTIONS_ABOUT":["Every census's printed population, against one counted another way.","Pin each pure census's output, so a change that moves one has to say so."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri census","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/census","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/census","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/census.rs","VARIANT":"Commands::Census","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","WITNESS":"source-parse"},"health":"ok","id":"tri/census","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/census.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_census","name":{"en":"tri census"},"qualifiedId":"gHashTag/t27:tri/census","repo":"gHashTag/t27","schema":2,"searchText":"tri/census tri census specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. specs the compiler cannot read, ranked by the construct that stops it. every census's printed population, against one counted another way. audit every census's printed population, against one counted another way. pin pin each pure census's output, so a change that moves one has to say so.","sha256":"d78bef53542ec408f004c9a1e1650cd9fd125ef0e7da3d4172f5ed9a203961af","skills":[],"source":"cli/tri/src/census.rs","specPath":"specs/tools/tri/census.t27","summary":{"en":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по конструкции, которая его останавливает. Напечатанная популяция каждой переписи против одной, посчитанной иначе."},"typecheckOk":true,"variant":"Commands::Census","whenToUse":"Specs the compiler cannot read, ranked by the construct that stops it. Every census's printed population, against one counted another way.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","actions":[{"about":"List PR gates that have never run on the default branch.","name":"baseline"}],"agents":[],"args":[],"command":"tri ci","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ABOUT_SOURCE":"clap /// doc on Commands::Ci (cli/tri/src/main.rs; module cli/tri/src/cibase.rs)","ACTIONS":["baseline"],"ACTIONS_ABOUT":["List PR gates that have never run on the default branch."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri ci","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ci","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ci","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/cibase.rs","VARIANT":"Commands::Ci","WHEN_TO_USE":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/ci","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/cibase.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ci","name":{"en":"tri ci"},"qualifiedId":"gHashTag/t27:tri/ci","repo":"gHashTag/t27","schema":2,"searchText":"tri/ci tri ci is the hardware this plan assumes actually attached? ci questions about the repository's own gates. is the hardware this plan assumes actually attached? ci questions about the repository's own gates. baseline list pr gates that have never run on the default branch.","sha256":"589b4502973beca006108ffedabec587effb8778bfd21be45399b23bcae398f3","skills":[],"source":"cli/tri/src/cibase.rs","specPath":"specs/tools/tri/ci.t27","summary":{"en":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","ru":"Действительно ли подключено оборудование, которое предполагает этот план? Вопросы CI о собственных гейтах репозитория."},"typecheckOk":true,"variant":"Commands::Ci","whenToUse":"Is the hardware this plan assumes actually attached? CI questions about the repository's own gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","actions":[{"about":"Count the records, the double-entered papers and the unpublished zeros.","name":"audit"},{"about":"When the survey behind this table last read a paper, by the month its citations encode.","name":"freshness"}],"agents":[],"args":[],"command":"tri competitors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ABOUT_SOURCE":"clap /// doc on Commands::Competitors (cli/tri/src/main.rs; module cli/tri/src/competitors.rs)","ACTIONS":["audit","freshness"],"ACTIONS_ABOUT":["Count the records, the double-entered papers and the unpublished zeros.","When the survey behind this table last read a paper, by the month its citations encode."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri competitors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/competitors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/competitors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/competitors.rs","VARIANT":"Commands::Competitors","WHEN_TO_USE":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/competitors","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/competitors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_competitors","name":{"en":"tri competitors"},"qualifiedId":"gHashTag/t27:tri/competitors","repo":"gHashTag/t27","schema":2,"searchText":"tri/competitors tri competitors the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. the competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice. audit count the records, the double-entered papers and the unpublished zeros. freshness when the survey behind this table last read a paper, by the month its citations encode.","sha256":"43fb47d6699c50e81d6ecd71f0f0791c5e0c46ba0fd69a2f066d60825d8f6706","skills":[],"source":"cli/tri/src/competitors.rs","specPath":"specs/tools/tri/competitors.t27","summary":{"en":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","ru":"Таблица конкурентов против собственного контракта: сколько её опубликованных оценок никогда не публиковались и сколько статей она считает дважды."},"typecheckOk":true,"variant":"Commands::Competitors","whenToUse":"The competitor table against its own contract: how many of its published scores were never published, and how many papers it counts twice.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","actions":[{"about":"Rank the discarding specs, largest first, against the pinned volume.","name":"top"},{"about":"Group the discard by which recovery threw it away, and what it stopped on.","name":"classify"}],"agents":[],"args":[],"command":"tri discard","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the parser reads and throws away, ranked against its pinned bound.","ABOUT_SOURCE":"clap /// doc on Commands::Discard (cli/tri/src/main.rs; module cli/tri/src/discard.rs)","ACTIONS":["top","classify"],"ACTIONS_ABOUT":["Rank the discarding specs, largest first, against the pinned volume.","Group the discard by which recovery threw it away, and what it stopped on."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri discard","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/discard","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/discard","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/discard.rs","VARIANT":"Commands::Discard","WHEN_TO_USE":"What the parser reads and throws away, ranked against its pinned bound.","WITNESS":"source-parse"},"health":"ok","id":"tri/discard","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/discard.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_discard","name":{"en":"tri discard"},"qualifiedId":"gHashTag/t27:tri/discard","repo":"gHashTag/t27","schema":2,"searchText":"tri/discard tri discard what the parser reads and throws away, ranked against its pinned bound. what the parser reads and throws away, ranked against its pinned bound. top rank the discarding specs, largest first, against the pinned volume. classify group the discard by which recovery threw it away, and what it stopped on.","sha256":"601efe186f5a97dbfd2e82e397ac53f32210ccedb4fadf1c2ffd0c0ee62e4530","skills":[],"source":"cli/tri/src/discard.rs","specPath":"specs/tools/tri/discard.t27","summary":{"en":"What the parser reads and throws away, ranked against its pinned bound.","ru":"Что парсер читает и выбрасывает, в сравнении с закреплённой границей."},"typecheckOk":true,"variant":"Commands::Discard","whenToUse":"What the parser reads and throws away, ranked against its pinned bound.","witness":"source-parse"},{"aboutSource":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","actions":[],"agents":[],"args":[{"about":"","name":""}],"command":"tri doctor","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ABOUT_SOURCE":"handler cmd_doctor match arms start/stop/status and its error text unknown doctor action (start|stop|status) (cli/tri/src/main.rs:934)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[""],"COMMAND":"tri doctor","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/doctor","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/doctor","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Doctor","WHEN_TO_USE":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","WITNESS":"source-parse"},"health":"ok","id":"tri/doctor","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_doctor","name":{"en":"tri doctor"},"qualifiedId":"gHashTag/t27:tri/doctor","repo":"gHashTag/t27","schema":2,"searchText":"tri/doctor tri doctor start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status). start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","sha256":"be3ed8d97c7404a17400311d3432bec040d027f0a76ce264a459326204780fd9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/doctor.t27","summary":{"en":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","ru":"Запускает, останавливает или показывает состояние doctor, хранимое в .trinity/state/doctor.json (действия: start | stop | status)."},"typecheckOk":true,"variant":"Commands::Doctor","whenToUse":"Start, stop or show the doctor state kept in .trinity/state/doctor.json (actions: start | stop | status).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","actions":[{"about":"Distribution of elaboration diagnostics by message shape.","name":"classify"},{"about":"How many diagnostics are secondary -- same source line as one above.","name":"secondary"}],"agents":[],"args":[],"command":"tri elab","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Classify a compiler's error output before quoting a number from it.","ABOUT_SOURCE":"clap /// doc on Commands::Elab (cli/tri/src/main.rs; module cli/tri/src/elab.rs)","ACTIONS":["classify","secondary"],"ACTIONS_ABOUT":["Distribution of elaboration diagnostics by message shape.","How many diagnostics are secondary -- same source line as one above."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri elab","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/elab","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/elab","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/elab.rs","VARIANT":"Commands::Elab","WHEN_TO_USE":"Classify a compiler's error output before quoting a number from it.","WITNESS":"source-parse"},"health":"ok","id":"tri/elab","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/elab.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_elab","name":{"en":"tri elab"},"qualifiedId":"gHashTag/t27:tri/elab","repo":"gHashTag/t27","schema":2,"searchText":"tri/elab tri elab classify a compiler's error output before quoting a number from it. classify a compiler's error output before quoting a number from it. classify distribution of elaboration diagnostics by message shape. secondary how many diagnostics are secondary -- same source line as one above.","sha256":"e1ee4634ec3f0bb75b6c2f870fda5b9ba40f1c1329ad5ed38ce03a9351065791","skills":[],"source":"cli/tri/src/elab.rs","specPath":"specs/tools/tri/elab.t27","summary":{"en":"Classify a compiler's error output before quoting a number from it.","ru":"Классифицирует вывод ошибок компилятора прежде, чем цитировать из него число."},"typecheckOk":true,"variant":"Commands::Elab","whenToUse":"Classify a compiler's error output before quoting a number from it.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","actions":[{"about":"Generate the corpus twice with the same binary and name what differs.","name":"determinism"}],"agents":[],"args":[],"command":"tri emit","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does the same binary produce the same generated code twice?","ABOUT_SOURCE":"clap /// doc on Commands::Emit (cli/tri/src/main.rs; module cli/tri/src/gendet.rs)","ACTIONS":["determinism"],"ACTIONS_ABOUT":["Generate the corpus twice with the same binary and name what differs."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri emit","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/emit","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/emit","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gendet.rs","VARIANT":"Commands::Emit","WHEN_TO_USE":"Does the same binary produce the same generated code twice? Every byte-comparison over emitted output -- seals, emit-bitexact, `corpus --per-spec` diffing -- assumes it does. Three of the four emitters do not; see #3006. (`Gen` is taken by the single-spec emitter, so this is `Emit`.)","WITNESS":"source-parse"},"health":"ok","id":"tri/emit","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gendet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_emit","name":{"en":"tri emit"},"qualifiedId":"gHashTag/t27:tri/emit","repo":"gHashTag/t27","schema":2,"searchText":"tri/emit tri emit does the same binary produce the same generated code twice? does the same binary produce the same generated code twice? every byte-comparison over emitted output -- seals, emit-bitexact, `corpus --per-spec` diffing -- assumes it does. three of the four emitters do not; see #3006. (`gen` is taken by the single-spec emitter, so this is `emit`.) determinism generate the corpus twice with the same binary and name what differs.","sha256":"c4d32975e53fc1cf71a345333d73454c185b745057a215af3113981eedc68517","skills":[],"source":"cli/tri/src/gendet.rs","specPath":"specs/tools/tri/emit.t27","summary":{"en":"Does the same binary produce the same generated code twice?","ru":"Даёт ли один и тот же бинарник один и тот же сгенерированный код дважды?"},"typecheckOk":true,"variant":"Commands::Emit","whenToUse":"Does the same binary produce the same generated code twice? Every byte-comparison over emitted output -- seals, emit-bitexact, `corpus --per-spec` diffing -- assumes it does. Three of the four emitters do not; see #3006. (`Gen` is taken by the single-spec emitter, so this is `Emit`.)","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","actions":[{"about":"","name":"save"}],"agents":[{"letter":"E","ok":true}],"args":[],"command":"tri experience","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Saves an experience episode to the akashic log.","ABOUT_SOURCE":"tri-mcp tool tri_experience_save description (cli/tri-mcp/src/main.rs); ExperienceAction enum cli/tri/src/main.rs:457","ACTIONS":["save"],"ACTIONS_ABOUT":[""],"AGENTS":["E"],"AGENTS_NOTE":".claude/agents/agent-e-experience.md:64 (tri experience save -- Save episode to experience log). Lines 65-66 name tri experience query and tri notebook, which the CLI does not have at this commit.","ARGS":[],"COMMAND":"tri experience","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/experience","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/experience","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Experience","WHEN_TO_USE":"Saves an experience episode to the akashic log.","WITNESS":"source-parse"},"health":"ok","id":"tri/experience","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_experience","name":{"en":"tri experience"},"qualifiedId":"gHashTag/t27:tri/experience","repo":"gHashTag/t27","schema":2,"searchText":"tri/experience tri experience saves an experience episode to the akashic log. saves an experience episode to the akashic log. save e","sha256":"08a7874c72e53ac1054c02ddb4a7649a6c4efb3c27ab9da7f4e148f6b9d05024","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/experience.t27","summary":{"en":"Saves an experience episode to the akashic log.","ru":"Сохраняет эпизод опыта в акашический журнал."},"typecheckOk":true,"variant":"Commands::Experience","whenToUse":"Saves an experience episode to the akashic log.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/fleet.rs:1","actions":[{"about":"Scan the USB bus and say plainly what hardware is present.","name":"scan"},{"about":"Check the environments a claim depends on before repeating the claim.","name":"asof"}],"agents":[],"args":[],"command":"tri fleet","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri fleet` -- is the hardware this plan assumes actually attached?","ABOUT_SOURCE":"//! module doc, cli/tri/src/fleet.rs:1","ACTIONS":["scan","asof"],"ACTIONS_ABOUT":["Scan the USB bus and say plainly what hardware is present.","Check the environments a claim depends on before repeating the claim."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri fleet","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fleet","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fleet","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fleet.rs","VARIANT":"Commands::Fleet","WHEN_TO_USE":"`tri fleet` -- is the hardware this plan assumes actually attached?","WITNESS":"source-parse"},"health":"ok","id":"tri/fleet","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fleet.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fleet","name":{"en":"tri fleet"},"qualifiedId":"gHashTag/t27:tri/fleet","repo":"gHashTag/t27","schema":2,"searchText":"tri/fleet tri fleet `tri fleet` -- is the hardware this plan assumes actually attached? `tri fleet` -- is the hardware this plan assumes actually attached? scan scan the usb bus and say plainly what hardware is present. asof check the environments a claim depends on before repeating the claim.","sha256":"13c773d8e575a6f617dbcb4c86415a09bf50217b58f257efc4ea0ebc1ab90a8b","skills":[],"source":"cli/tri/src/fleet.rs","specPath":"specs/tools/tri/fleet.t27","summary":{"en":"`tri fleet` -- is the hardware this plan assumes actually attached?","ru":"`tri fleet` -- действительно ли подключено оборудование, которое предполагает этот план?"},"typecheckOk":true,"variant":"Commands::Fleet","whenToUse":"`tri fleet` -- is the hardware this plan assumes actually attached?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"One package instead of the whole workspace.","name":"--package"},{"about":"Report what is dirty and whether a workflow formats, and stop.","name":"--dry-run"}],"command":"tri fmt","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","ABOUT_SOURCE":"clap /// doc on Commands::Fmt (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--package: One package instead of the whole workspace.","--dry-run: Report what is dirty and whether a workflow formats, and stop."],"COMMAND":"tri fmt","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fmt","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fmt","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Fmt","WHEN_TO_USE":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","WITNESS":"source-parse"},"health":"ok","id":"tri/fmt","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fmt","name":{"en":"tri fmt"},"qualifiedId":"gHashTag/t27:tri/fmt","repo":"gHashTag/t27","schema":2,"searchText":"tri/fmt tri fmt type names with more than one definition in the spec tree. run the formatter and restore every file it rewrote that you had not touched. type names with more than one definition in the spec tree. run the formatter and restore every file it rewrote that you had not touched.","sha256":"83e694d0156e30877c9a0d898b194667571fbc64181ff7c99dc0f7647a6f3452","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/fmt.t27","summary":{"en":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","ru":"Имена типов с более чем одним определением в дереве спеков. Запускает форматтер и восстанавливает каждый переписанный им файл, которого вы не трогали."},"typecheckOk":true,"variant":"Commands::Fmt","whenToUse":"Type names with more than one definition in the spec tree. Run the formatter and restore every file it rewrote that you had not touched.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","actions":[{"about":"Read and print the JTAG IDCODE of the attached DLC10 cable target.","name":"idcode"},{"about":"Read the configuration IDCODE register via the Type-1 CFG_IN/CFG_OUT protocol. On a healthy XC7A100T this must return 0x13631093 (same as the JTAG IDCODE). If 0x00000000 is returned while `idcode` works, the read_cfg_reg implementation is broken.","name":"idcode-cfg"},{"about":"Program FPGA SRAM (volatile -- lost on power-cycle).","name":"sram"},{"about":"Program the on-board SPI flash (non-volatile / persistent).","name":"program"},{"about":"Read the SPI flash JEDEC ID via the JTAG-to-SPI bridge.","name":"flash-id"},{"about":"Read the raw CFG_OUT status register.","name":"status"},{"about":"Decode 7-series configuration registers for DONE=LOW diagnosis.","name":"debug"},{"about":"Load a bitstream into FPGA SRAM using openFPGALoader with a Digilent FTDI cable. This is the canonical path for the QMTech Wukong V1 / XC7A200T board because the in-tree `dlc10` driver only supports Xilinx DLC10 cables (VID=0x03FD), not the attached Digilent cable (VID=0x0403:0x6014).","name":"load-sram"},{"about":"Read and decode the FPGA STAT register via openFPGALoader.","name":"stat"},{"about":"Read the FPGA XADC sensors (temperature, VCCINT, VCCAUX) via openFPGALoader and print a JSON object. The board must be powered and connected through a supported cable such as `digilent_hs2`.","name":"read-xadc"},{"about":"Synthesize the GF16 4x4 matrix design through the openXC7 toolchain. Output is written to `/gf16_matmul4x4_top.bit`.","name":"synth-gf16"},{"about":"Program the on-board SPI flash (non-volatile) using openFPGALoader's JTAG-to-SPI bridge. Requires a matching `spiOverJtag` bitstream for the exact FPGA package; the XC7A200T-FGG676 bridge is present in recent openFPGALoader distributions but flash boot may still depend on board mode pins (see docs/reports/FPGA_LOOP_EVIDENCE_2026-07-04.md).","name":"program-flash"},{"about":"Dump SPI flash contents to a file via openFPGALoader's JTAG-to-SPI bridge.","name":"dump-flash"},{"about":"Parse the .bit header and print the configuration registers that affect Master SPI boot (COR0, COR1, WBSTAR, TIMER, CTL0, CTL1, IDCODE, BSPI).","name":"bit-config"},{"about":"Program the given .bit to SPI flash, dump the same region back, and compare the dumped bytes against the bitstream payload. This verifies the openFPGALoader write path is bit-perfect for the raw bitstream.","name":"round-trip-verify"},{"about":"Guided cold-POR boot experiment. Programs flash, asks the user to physically power-cycle the board, then captures STAT without a JTAG reset and prints a decision-tree diagnosis.","name":"boot-log"},{"about":"Deterministic cold-POR boot experiment with optional relay control. With `--relay-port MOCK` the command writes a deterministic, clearly labeled mock boot log so CI can exercise the cold-POR JSON path without touching hardware. Real relay ports are reserved for Variant A/B.","name":"cold-por"},{"about":"Board-less smoke gate for the FPGA path. Runs `tri fpga bit-config` on the GF16 demo bitstream and, if yosys is available, a synthesis smoke check on the demo Verilog. Requires no physical board.","name":"smoke-gate"},{"about":"Print or interactively confirm the cold-POR boot protocol. This is the standalone version of the instructions embedded in `boot-log` and `cclk-sweep`; use it to verify the operator steps before a physical power-cycle.","name":"boot-protocol"},{"about":"Patch the raw OSCFSEL field (COR0[22:17]) of a 7-series .bit file.","name":"patch-cor0"},{"about":"Generate a set of OSCFSEL variants from a single input .bit file. Outputs one file per requested value to the given directory.","name":"cclk-variants"},{"about":"Automated cold-POR CCLK sweep. Generates OSCFSEL variants, programs each to flash, prompts for the physical power-cycle, captures STAT, and writes JSON logs. The only manual step is disconnecting/reconnecting the cable and power-cycling the board.","name":"cclk-sweep"},{"about":"Read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working CCLK variant.","name":"sweep-report"},{"about":"Print DSLogic / oscilloscope instructions for measuring the FPGA CCLK output during Master SPI configuration. Optionally parse a DSView CSV export or run a live capture via `sigrok-cli` with a connected logic analyzer (e.g., the Digilent FTDI cable as `ftdi-la`).","name":"measure-cclk"},{"about":"Read the SPI flash status register via openFPGALoader's JTAG-to-SPI bridge. Decodes WIP, WEL, and QE bits to help diagnose boot-from-flash failures.","name":"flash-status"},{"about":"Diagnostic: load *only* the proxy bridge bitstream (or any other bitstream) into FPGA SRAM, report STAT, leave TAP in RTI. Does NOT touch SPI flash. Useful for verifying the bridge actually reaches DONE=HIGH before debugging SPI semantics.","name":"proxy-load"},{"about":"Diagnostic: read IDCODE + STAT *without* touching the FPGA. Run this immediately after `tri fpga proxy-load` to confirm the bridge is alive. Also confirms IR=USER1 select is accepted.","name":"proxy-status"},{"about":"Diagnostic: shift raw hex bytes through the USER1 BSCAN as a single SPI transaction. Reads `--rx N` MISO bytes after the TX stream. Requires the proxy bridge to be already loaded (`tri fpga proxy-load` first).","name":"spi-raw"},{"about":"Diagnostic: probe the IR capture pattern after selecting an IR. A healthy 7-series TAP always captures `0b000001` into the IR shift register. Anything else means the JTAG chain is broken or the cable is mis-driving TMS.","name":"ir-probe"},{"about":"Diagnostic: drive the full JEDEC-read flow end-to-end with maximum instrumentation, **including** the 0xAB Release-Power-down and 0x66+0x99 software-reset recovery attempts. Equivalent to `flash-id --verbose` plus auto-recovery.","name":"flash-id-debug"},{"about":"Build the QMTech XC7A100T-FGG676 JTAG-to-SPI proxy bitstream via the openXC7 open-source toolchain (yosys + nextpnr-himbaechel + prjxray). Requires `yosys`, `nextpnr-himbaechel`, `fasm2frames.py` and `xc7frames2bit` on PATH. With `--install`, the produced `.bit` is copied to `fpga/tools/bscan_spi_xc7a100t.bit` so the embedded `BSCAN_SPI_XC7A100T` constant picks it up on the next rebuild.","name":"build-proxy"},{"about":"Clone the openXC7 `nextpnr-xilinx` repo and build a chipdb (`.bba`) for the requested 7-series part, then install it into `~/.local/share/nextpnr/himbaechel-xilinx/`.","name":"setup-openxc7-chipdb"},{"about":"Generate a Lean 4 theorem from a `tri fpga measure-cclk --json` output. The theorem proves that the measured `(frequency, duty)` pair satisfies `measured_cclk_satisfies_flash_spec` and links it to `transaction_satisfies_flash_spec`. Useful for turning a real capture into a machine-checked proof without manual copy-paste.","name":"measured-to-lean"},{"about":"Print the PVT-derated N25Q128_3V SCK low/high bound for a supplied operating context. Also prints the margin over the nominal 6 ns bound and warns if the context is outside the documented operating envelope.","name":"pvt-envelope"},{"about":"Build the QMTech XC7A100T-FGG676 proxy bitstream via a Docker container running Xilinx Vivado. Clones our `openFPGALoader` fork (`feat/qmtech-xc7a100t-board`) into `target/openfpgaloader-fork/` and runs `make` inside `spiOverJtag/`. On Apple Silicon (arm64), the container runs under x86_64 emulation via `--platform linux/amd64`. With `--install`, the produced `bscan_spi_xc7a100tfgg676.bit.gz` is decompressed and copied to `fpga/tools/bscan_spi_xc7a100t.bit` and its SHA256 is printed.","name":"build-proxy-docker"}],"agents":[],"args":[],"command":"tri fpga","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ABOUT_SOURCE":"clap /// doc on Commands::Fpga (cli/tri/src/main.rs; module cli/tri/src/fpga.rs)","ACTIONS":["idcode","idcode-cfg","sram","program","flash-id","status","debug","load-sram","stat","read-xadc","synth-gf16","program-flash","dump-flash","bit-config","round-trip-verify","boot-log","cold-por","smoke-gate","boot-protocol","patch-cor0","cclk-variants","cclk-sweep","sweep-report","measure-cclk","flash-status","proxy-load","proxy-status","spi-raw","ir-probe","flash-id-debug","build-proxy","setup-openxc7-chipdb","measured-to-lean","pvt-envelope","build-proxy-docker"],"ACTIONS_ABOUT":["Read and print the JTAG IDCODE of the attached DLC10 cable target.","Read the configuration IDCODE register via the Type-1 CFG_IN/CFG_OUT protocol. On a healthy XC7A100T this must return 0x13631093 (same as the JTAG IDCODE). If 0x00000000 is returned while `idcode` works, the read_cfg_reg implementation is broken.","Program FPGA SRAM (volatile -- lost on power-cycle).","Program the on-board SPI flash (non-volatile / persistent).","Read the SPI flash JEDEC ID via the JTAG-to-SPI bridge.","Read the raw CFG_OUT status register.","Decode 7-series configuration registers for DONE=LOW diagnosis.","Load a bitstream into FPGA SRAM using openFPGALoader with a Digilent FTDI cable. This is the canonical path for the QMTech Wukong V1 / XC7A200T board because the in-tree `dlc10` driver only supports Xilinx DLC10 cables (VID=0x03FD), not the attached Digilent cable (VID=0x0403:0x6014).","Read and decode the FPGA STAT register via openFPGALoader.","Read the FPGA XADC sensors (temperature, VCCINT, VCCAUX) via openFPGALoader and print a JSON object. The board must be powered and connected through a supported cable such as `digilent_hs2`.","Synthesize the GF16 4x4 matrix design through the openXC7 toolchain. Output is written to `/gf16_matmul4x4_top.bit`.","Program the on-board SPI flash (non-volatile) using openFPGALoader's JTAG-to-SPI bridge. Requires a matching `spiOverJtag` bitstream for the exact FPGA package; the XC7A200T-FGG676 bridge is present in recent openFPGALoader distributions but flash boot may still depend on board mode pins (see docs/reports/FPGA_LOOP_EVIDENCE_2026-07-04.md).","Dump SPI flash contents to a file via openFPGALoader's JTAG-to-SPI bridge.","Parse the .bit header and print the configuration registers that affect Master SPI boot (COR0, COR1, WBSTAR, TIMER, CTL0, CTL1, IDCODE, BSPI).","Program the given .bit to SPI flash, dump the same region back, and compare the dumped bytes against the bitstream payload. This verifies the openFPGALoader write path is bit-perfect for the raw bitstream.","Guided cold-POR boot experiment. Programs flash, asks the user to physically power-cycle the board, then captures STAT without a JTAG reset and prints a decision-tree diagnosis.","Deterministic cold-POR boot experiment with optional relay control. With `--relay-port MOCK` the command writes a deterministic, clearly labeled mock boot log so CI can exercise the cold-POR JSON path without touching hardware. Real relay ports are reserved for Variant A/B.","Board-less smoke gate for the FPGA path. Runs `tri fpga bit-config` on the GF16 demo bitstream and, if yosys is available, a synthesis smoke check on the demo Verilog. Requires no physical board.","Print or interactively confirm the cold-POR boot protocol. This is the standalone version of the instructions embedded in `boot-log` and `cclk-sweep`; use it to verify the operator steps before a physical power-cycle.","Patch the raw OSCFSEL field (COR0[22:17]) of a 7-series .bit file.","Generate a set of OSCFSEL variants from a single input .bit file. Outputs one file per requested value to the given directory.","Automated cold-POR CCLK sweep. Generates OSCFSEL variants, programs each to flash, prompts for the physical power-cycle, captures STAT, and writes JSON logs. The only manual step is disconnecting/reconnecting the cable and power-cycling the board.","Read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working CCLK variant.","Print DSLogic / oscilloscope instructions for measuring the FPGA CCLK output during Master SPI configuration. Optionally parse a DSView CSV export or run a live capture via `sigrok-cli` with a connected logic analyzer (e.g., the Digilent FTDI cable as `ftdi-la`).","Read the SPI flash status register via openFPGALoader's JTAG-to-SPI bridge. Decodes WIP, WEL, and QE bits to help diagnose boot-from-flash failures.","Diagnostic: load *only* the proxy bridge bitstream (or any other bitstream) into FPGA SRAM, report STAT, leave TAP in RTI. Does NOT touch SPI flash. Useful for verifying the bridge actually reaches DONE=HIGH before debugging SPI semantics.","Diagnostic: read IDCODE + STAT *without* touching the FPGA. Run this immediately after `tri fpga proxy-load` to confirm the bridge is alive. Also confirms IR=USER1 select is accepted.","Diagnostic: shift raw hex bytes through the USER1 BSCAN as a single SPI transaction. Reads `--rx N` MISO bytes after the TX stream. Requires the proxy bridge to be already loaded (`tri fpga proxy-load` first).","Diagnostic: probe the IR capture pattern after selecting an IR. A healthy 7-series TAP always captures `0b000001` into the IR shift register. Anything else means the JTAG chain is broken or the cable is mis-driving TMS.","Diagnostic: drive the full JEDEC-read flow end-to-end with maximum instrumentation, **including** the 0xAB Release-Power-down and 0x66+0x99 software-reset recovery attempts. Equivalent to `flash-id --verbose` plus auto-recovery.","Build the QMTech XC7A100T-FGG676 JTAG-to-SPI proxy bitstream via the openXC7 open-source toolchain (yosys + nextpnr-himbaechel + prjxray). Requires `yosys`, `nextpnr-himbaechel`, `fasm2frames.py` and `xc7frames2bit` on PATH. With `--install`, the produced `.bit` is copied to `fpga/tools/bscan_spi_xc7a100t.bit` so the embedded `BSCAN_SPI_XC7A100T` constant picks it up on the next rebuild.","Clone the openXC7 `nextpnr-xilinx` repo and build a chipdb (`.bba`) for the requested 7-series part, then install it into `~/.local/share/nextpnr/himbaechel-xilinx/`.","Generate a Lean 4 theorem from a `tri fpga measure-cclk --json` output. The theorem proves that the measured `(frequency, duty)` pair satisfies `measured_cclk_satisfies_flash_spec` and links it to `transaction_satisfies_flash_spec`. Useful for turning a real capture into a machine-checked proof without manual copy-paste.","Print the PVT-derated N25Q128_3V SCK low/high bound for a supplied operating context. Also prints the margin over the nominal 6 ns bound and warns if the context is outside the documented operating envelope.","Build the QMTech XC7A100T-FGG676 proxy bitstream via a Docker container running Xilinx Vivado. Clones our `openFPGALoader` fork (`feat/qmtech-xc7a100t-board`) into `target/openfpgaloader-fork/` and runs `make` inside `spiOverJtag/`. On Apple Silicon (arm64), the container runs under x86_64 emulation via `--platform linux/amd64`. With `--install`, the produced `bscan_spi_xc7a100tfgg676.bit.gz` is decompressed and copied to `fpga/tools/bscan_spi_xc7a100t.bit` and its SHA256 is printed."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri fpga","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/fpga","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/fpga","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/fpga.rs","VARIANT":"Commands::Fpga","WHEN_TO_USE":"FPGA programming via the in-tree DLC10 driver (pure Rust).","WITNESS":"source-parse"},"health":"ok","id":"tri/fpga","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/fpga.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_fpga","name":{"en":"tri fpga"},"qualifiedId":"gHashTag/t27:tri/fpga","repo":"gHashTag/t27","schema":2,"searchText":"tri/fpga tri fpga fpga programming via the in-tree dlc10 driver (pure rust). fpga programming via the in-tree dlc10 driver (pure rust). idcode read and print the jtag idcode of the attached dlc10 cable target. idcode-cfg read the configuration idcode register via the type-1 cfg_in/cfg_out protocol. on a healthy xc7a100t this must return 0x13631093 (same as the jtag idcode). if 0x00000000 is returned while `idcode` works, the read_cfg_reg implementation is broken. sram program fpga sram (volatile -- lost on power-cycle). program program the on-board spi flash (non-volatile / persistent). flash-id read the spi flash jedec id via the jtag-to-spi bridge. status read the raw cfg_out status register. debug decode 7-series configuration registers for done=low diagnosis. load-sram load a bitstream into fpga sram using openfpgaloader with a digilent ftdi cable. this is the canonical path for the qmtech wukong v1 / xc7a200t board because the in-tree `dlc10` driver only supports xilinx dlc10 cables (vid=0x03fd), not the attached digilent cable (vid=0x0403:0x6014). stat read and decode the fpga stat register via openfpgaloader. read-xadc read the fpga xadc sensors (temperature, vccint, vccaux) via openfpgaloader and print a json object. the board must be powered and connected through a supported cable such as `digilent_hs2`. synth-gf16 synthesize the gf16 4x4 matrix design through the openxc7 toolchain. output is written to `/gf16_matmul4x4_top.bit`. program-flash program the on-board spi flash (non-volatile) using openfpgaloader's jtag-to-spi bridge. requires a matching `spioverjtag` bitstream for the exact fpga package; the xc7a200t-fgg676 bridge is present in recent openfpgaloader distributions but flash boot may still depend on board mode pins (see docs/reports/fpga_loop_evidence_2026-07-04.md). dump-flash dump spi flash contents to a file via openfpgaloader's jtag-to-spi bridge. bit-config parse the .bit header and print the configuration registers that affect master spi boot (cor0, cor1, wbstar, timer, ctl0, ctl1, idcode, bspi). round-trip-verify program the given .bit to spi flash, dump the same region back, and compare the dumped bytes against the bitstream payload. this verifies the openfpgaloader write path is bit-perfect for the raw bitstream. boot-log guided cold-por boot experiment. programs flash, asks the user to physically power-cycle the board, then captures stat without a jtag reset and prints a decision-tree diagnosis. cold-por deterministic cold-por boot experiment with optional relay control. with `--relay-port mock` the command writes a deterministic, clearly labeled mock boot log so ci can exercise the cold-por json path without touching hardware. real relay ports are reserved for variant a/b. smoke-gate board-less smoke gate for the fpga path. runs `tri fpga bit-config` on the gf16 demo bitstream and, if yosys is available, a synthesis smoke check on the demo verilog. requires no physical board. boot-protocol print or interactively confirm the cold-por boot protocol. this is the standalone version of the instructions embedded in `boot-log` and `cclk-sweep`; use it to verify the operator steps before a physical power-cycle. patch-cor0 patch the raw oscfsel field (cor0[22:17]) of a 7-series .bit file. cclk-variants generate a set of oscfsel variants from a single input .bit file. outputs one file per requested value to the given directory. cclk-sweep automated cold-por cclk sweep. generates oscfsel variants, programs each to flash, prompts for the physical power-cycle, captures stat, and writes json logs. the only manual step is disconnecting/reconnecting the cable and power-cycling the board. sweep-report read all `build/fpga/boot-log-*.json` files and produce a sweep report identifying the first working cclk variant. measure-cclk print dslogic / oscilloscope instructions for measuring the fpga cclk output during master spi configuration. optionally parse a dsview csv export or run a live capture via `sigrok-cli` with a connected logic analyzer (e.g., the digilent ftdi cable as `ftdi-la`). flash-status read the spi flash status register via openfpgaloader's jtag-to-spi bridge. decodes wip, wel, and qe bits to help diagnose boot-from-flash failures. proxy-load diagnostic: load *only* the proxy bridge bitstream (or any other bitstream) into fpga sram, report stat, leave tap in rti. does not touch spi flash. useful for verifying the bridge actually reaches done=high before debugging spi semantics. proxy-status diagnostic: read idcode + stat *without* touching the fpga. run this immediately after `tri fpga proxy-load` to confirm the bridge is alive. also confirms ir=user1 select is accepted. spi-raw diagnostic: shift raw hex bytes through the user1 bscan as a single spi transaction. reads `--rx n` miso bytes after the tx stream. requires the proxy bridge to be already loaded (`tri fpga proxy-load` first). ir-probe diagnostic: probe the ir capture pattern after selecting an ir. a healthy 7-series tap always captures `0b000001` into the ir shift register. anything else means the jtag chain is broken or the cable is mis-driving tms. flash-id-debug diagnostic: drive the full jedec-read flow end-to-end with maximum instrumentation, **including** the 0xab release-power-down and 0x66+0x99 software-reset recovery attempts. equivalent to `flash-id --verbose` plus auto-recovery. build-proxy build the qmtech xc7a100t-fgg676 jtag-to-spi proxy bitstream via the openxc7 open-source toolchain (yosys + nextpnr-himbaechel + prjxray). requires `yosys`, `nextpnr-himbaechel`, `fasm2frames.py` and `xc7frames2bit` on path. with `--install`, the produced `.bit` is copied to `fpga/tools/bscan_spi_xc7a100t.bit` so the embedded `bscan_spi_xc7a100t` constant picks it up on the next rebuild. setup-openxc7-chipdb clone the openxc7 `nextpnr-xilinx` repo and build a chipdb (`.bba`) for the requested 7-series part, then install it into `~/.local/share/nextpnr/himbaechel-xilinx/`. measured-to-lean generate a lean 4 theorem from a `tri fpga measure-cclk --json` output. the theorem proves that the measured `(frequency, duty)` pair satisfies `measured_cclk_satisfies_flash_spec` and links it to `transaction_satisfies_flash_spec`. useful for turning a real capture into a machine-checked proof without manual copy-paste. pvt-envelope print the pvt-derated n25q128_3v sck low/high bound for a supplied operating context. also prints the margin over the nominal 6 ns bound and warns if the context is outside the documented operating envelope. build-proxy-docker build the qmtech xc7a100t-fgg676 proxy bitstream via a docker container running xilinx vivado. clones our `openfpgaloader` fork (`feat/qmtech-xc7a100t-board`) into `target/openfpgaloader-fork/` and runs `make` inside `spioverjtag/`. on apple silicon (arm64), the container runs under x86_64 emulation via `--platform linux/amd64`. with `--install`, the produced `bscan_spi_xc7a100tfgg676.bit.gz` is decompressed and copied to `fpga/tools/bscan_spi_xc7a100t.bit` and its sha256 is printed.","sha256":"aaf7d2d4ae26d149b68e8c50d010bcda79b6ba3bf30c782194ca37bd60f8c7b6","skills":[],"source":"cli/tri/src/fpga.rs","specPath":"specs/tools/tri/fpga.t27","summary":{"en":"FPGA programming via the in-tree DLC10 driver (pure Rust).","ru":"Программирование FPGA через встроенный драйвер DLC10 (чистый Rust)."},"typecheckOk":true,"variant":"Commands::Fpga","whenToUse":"FPGA programming via the in-tree DLC10 driver (pure Rust).","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","actions":[{"about":"Classify the compiler's own warnings. `rustc` already answers \"is this value ever read\" and \"does anything call this\" for the whole crate; the answer only helps if somebody reads it.","name":"warnings"},{"about":"Run every gate script and its negative control; name the ones with none.","name":"sweep"},{"about":"Break each gate's failure path and demand its control notices.","name":"mutate"},{"about":"Open pull requests whose path-filtered CI never ran.","name":"prs"},{"about":"What the tree says is required, against what the ruleset requires.","name":"preview"},{"about":"Which interpreter each gate step is handed to, and who says so.","name":"shell"},{"about":"Gate steps whose PASS is reachable with the thing they check absent.","name":"quiet"},{"about":"Every bounded GitHub fetch in this crate, and whether it can tell a page from a total.","name":"fetches"},{"about":"Run every gate CI runs, in an EMPTY tree, and report what still passes.","name":"empty"},{"about":"","name":"required"},{"about":"List active workflows whose lifetime success count is zero.","name":"dead"},{"about":"Workflows with no recent run on the default branch: their green is about frequency, not health.","name":"tests"},{"about":"","name":"unmeasured"}],"agents":[],"args":[],"command":"tri gates","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find workflows that have never once succeeded.","ABOUT_SOURCE":"clap /// doc on Commands::Gates (cli/tri/src/main.rs; module cli/tri/src/gates.rs)","ACTIONS":["warnings","sweep","mutate","prs","preview","shell","quiet","fetches","empty","required","dead","tests","unmeasured"],"ACTIONS_ABOUT":["Classify the compiler's own warnings. `rustc` already answers \"is this value ever read\" and \"does anything call this\" for the whole crate; the answer only helps if somebody reads it.","Run every gate script and its negative control; name the ones with none.","Break each gate's failure path and demand its control notices.","Open pull requests whose path-filtered CI never ran.","What the tree says is required, against what the ruleset requires.","Which interpreter each gate step is handed to, and who says so.","Gate steps whose PASS is reachable with the thing they check absent.","Every bounded GitHub fetch in this crate, and whether it can tell a page from a total.","Run every gate CI runs, in an EMPTY tree, and report what still passes.","","List active workflows whose lifetime success count is zero.","Workflows with no recent run on the default branch: their green is about frequency, not health.",""],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri gates","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gates","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gates","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/gates.rs","VARIANT":"Commands::Gates","WHEN_TO_USE":"Find workflows that have never once succeeded.","WITNESS":"source-parse"},"health":"ok","id":"tri/gates","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/gates.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_gates","name":{"en":"tri gates"},"qualifiedId":"gHashTag/t27:tri/gates","repo":"gHashTag/t27","schema":2,"searchText":"tri/gates tri gates find workflows that have never once succeeded. find workflows that have never once succeeded. warnings classify the compiler's own warnings. `rustc` already answers \"is this value ever read\" and \"does anything call this\" for the whole crate; the answer only helps if somebody reads it. sweep run every gate script and its negative control; name the ones with none. mutate break each gate's failure path and demand its control notices. prs open pull requests whose path-filtered ci never ran. preview what the tree says is required, against what the ruleset requires. shell which interpreter each gate step is handed to, and who says so. quiet gate steps whose pass is reachable with the thing they check absent. fetches every bounded github fetch in this crate, and whether it can tell a page from a total. empty run every gate ci runs, in an empty tree, and report what still passes. required dead list active workflows whose lifetime success count is zero. tests workflows with no recent run on the default branch: their green is about frequency, not health. unmeasured","sha256":"de8489f65be8b1db66b2c9bf3abe96643c580d39e4b856cd6a9a3511e404975d","skills":[],"source":"cli/tri/src/gates.rs","specPath":"specs/tools/tri/gates.t27","summary":{"en":"Find workflows that have never once succeeded.","ru":"Находит воркфлоу, которые ни разу не завершались успешно."},"typecheckOk":true,"variant":"Commands::Gates","whenToUse":"Find workflows that have never once succeeded.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_gen description (cli/tri-mcp/src/main.rs); handler cmd_gen runs t27c gen-verilog, gen-c, gen-rust (cli/tri/src/main.rs:862)","actions":[],"agents":[{"letter":"C","ok":true},{"letter":"T","ok":true}],"args":[{"about":"","name":""}],"command":"tri gen","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Generates backends from a .t27 spec file using t27c.","ABOUT_SOURCE":"tri-mcp tool tri_gen description (cli/tri-mcp/src/main.rs); handler cmd_gen runs t27c gen-verilog, gen-c, gen-rust (cli/tri/src/main.rs:862)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["C","T"],"AGENTS_NOTE":".claude/agents/agent-c-compiler.md:40 (tri gen -- Generate code from specs; trigger On tri gen command, line 7); .claude/agents/trinity.md:68 (5. Gen - Run tri gen).","ARGS":[""],"COMMAND":"tri gen","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/gen","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/gen","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Gen","WHEN_TO_USE":"Generates backends from a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/gen","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_gen","name":{"en":"tri gen"},"qualifiedId":"gHashTag/t27:tri/gen","repo":"gHashTag/t27","schema":2,"searchText":"tri/gen tri gen generates backends from a .t27 spec file using t27c. generates backends from a .t27 spec file using t27c. c t","sha256":"8739f5a9100f6f989b3558fa5c49af008fb134e3c640c67a0ca946e2880e42bb","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/gen.t27","summary":{"en":"Generates backends from a .t27 spec file using t27c.","ru":"Генерирует бэкенды из файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Gen","whenToUse":"Generates backends from a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","actions":[{"about":"Test binaries whose tests share one scratch directory.","name":"scratch"}],"agents":[],"args":[],"command":"tri harness","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ABOUT_SOURCE":"clap /// doc on Commands::Harness (cli/tri/src/main.rs)","ACTIONS":["scratch"],"ACTIONS_ABOUT":["Test binaries whose tests share one scratch directory."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri harness","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/harness","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/harness","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Harness","WHEN_TO_USE":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","WITNESS":"source-parse"},"health":"ok","id":"tri/harness","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_harness","name":{"en":"tri harness"},"qualifiedId":"gHashTag/t27:tri/harness","repo":"gHashTag/t27","schema":2,"searchText":"tri/harness tri harness source files no crate root reaches, and so nothing compiles. test-harness hygiene. source files no crate root reaches, and so nothing compiles. test-harness hygiene. scratch test binaries whose tests share one scratch directory.","sha256":"67c635dcb96730ead658e8233879cc6f2b3cb56d9c6e85259629d10b9a536b9c","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/harness.t27","summary":{"en":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","ru":"Исходные файлы, до которых не доходит ни один корень крейта, и потому ничего не компилируется. Гигиена тестового харнесса."},"typecheckOk":true,"variant":"Commands::Harness","whenToUse":"Source files no crate root reaches, and so nothing compiles. Test-harness hygiene.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_health description (cli/tri-mcp/src/main.rs); handler cmd_health reads .trinity/state/queen-health.json (cli/tri/src/main.rs:969)","actions":[],"agents":[],"args":[{"about":"","name":""}],"command":"tri health","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns queen and swarm health status from .trinity state.","ABOUT_SOURCE":"tri-mcp tool tri_health description (cli/tri-mcp/src/main.rs); handler cmd_health reads .trinity/state/queen-health.json (cli/tri/src/main.rs:969)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[""],"COMMAND":"tri health","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/health","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/health","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Health","WHEN_TO_USE":"Returns queen and swarm health status from .trinity state.","WITNESS":"source-parse"},"health":"ok","id":"tri/health","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_health","name":{"en":"tri health"},"qualifiedId":"gHashTag/t27:tri/health","repo":"gHashTag/t27","schema":2,"searchText":"tri/health tri health returns queen and swarm health status from .trinity state. returns queen and swarm health status from .trinity state.","sha256":"678ece919f8363e769be5541575ec25163565cf04481f776448b81c3fbac94c9","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/health.t27","summary":{"en":"Returns queen and swarm health status from .trinity state.","ru":"Показывает состояние здоровья королевы и роя из состояния .trinity."},"typecheckOk":true,"variant":"Commands::Health","whenToUse":"Returns queen and swarm health status from .trinity state.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","actions":[{"about":"Run every migrated commit-time gate in sequence (l1-check + now-gate).","name":"pre-commit"},{"about":"A pull request whose title claims a compiler fix must carry a source file.","name":"fix-carries-source"},{"about":"Ask the required NOW gate's own script whether this push adds an entry.","name":"pre-push"},{"about":"L1 TRACEABILITY over the message BEING WRITTEN, from the commit-msg hook.","name":"commit-msg"},{"about":"L1 TRACEABILITY: last commit message must reference an issue (`Closes #N` / `Fixes #N` / `Resolves #N` / `Reference #N`).","name":"l1-check"},{"about":"Verify a fresh `docs/now/-.md` entry exists.","name":"now-gate"},{"about":"Session-start guard for the Claude Code harness. Emits a one-line status string to stdout; never blocks (the Bash gate is a soft telemetry hook).","name":"session-gate"},{"about":"Which hooks git will actually run, and whose installer output is dead.","name":"status"}],"agents":[],"args":[],"command":"tri hooks","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Pure-Rust ports of repository commit / push gates.","ABOUT_SOURCE":"clap /// doc on Commands::Hooks (cli/tri/src/main.rs; module cli/tri/src/hooks.rs)","ACTIONS":["pre-commit","fix-carries-source","pre-push","commit-msg","l1-check","now-gate","session-gate","status"],"ACTIONS_ABOUT":["Run every migrated commit-time gate in sequence (l1-check + now-gate).","A pull request whose title claims a compiler fix must carry a source file.","Ask the required NOW gate's own script whether this push adds an entry.","L1 TRACEABILITY over the message BEING WRITTEN, from the commit-msg hook.","L1 TRACEABILITY: last commit message must reference an issue (`Closes #N` / `Fixes #N` / `Resolves #N` / `Reference #N`).","Verify a fresh `docs/now/-.md` entry exists.","Session-start guard for the Claude Code harness. Emits a one-line status string to stdout; never blocks (the Bash gate is a soft telemetry hook).","Which hooks git will actually run, and whose installer output is dead."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri hooks","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/hooks","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/hooks","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/hooks.rs","VARIANT":"Commands::Hooks","WHEN_TO_USE":"Pure-Rust ports of repository commit / push gates.","WITNESS":"source-parse"},"health":"ok","id":"tri/hooks","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/hooks.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_hooks","name":{"en":"tri hooks"},"qualifiedId":"gHashTag/t27:tri/hooks","repo":"gHashTag/t27","schema":2,"searchText":"tri/hooks tri hooks pure-rust ports of repository commit / push gates. pure-rust ports of repository commit / push gates. pre-commit run every migrated commit-time gate in sequence (l1-check + now-gate). fix-carries-source a pull request whose title claims a compiler fix must carry a source file. pre-push ask the required now gate's own script whether this push adds an entry. commit-msg l1 traceability over the message being written, from the commit-msg hook. l1-check l1 traceability: last commit message must reference an issue (`closes #n` / `fixes #n` / `resolves #n` / `reference #n`). now-gate verify a fresh `docs/now/-.md` entry exists. session-gate session-start guard for the claude code harness. emits a one-line status string to stdout; never blocks (the bash gate is a soft telemetry hook). status which hooks git will actually run, and whose installer output is dead.","sha256":"533eeb860d6bc3f69d612c3d2630965bf50b8533f50c4f4900b25ab42e838db2","skills":[],"source":"cli/tri/src/hooks.rs","specPath":"specs/tools/tri/hooks.t27","summary":{"en":"Pure-Rust ports of repository commit / push gates.","ru":"Порты гейтов коммита/пуша репозитория на чистом Rust."},"typecheckOk":true,"variant":"Commands::Hooks","whenToUse":"Pure-Rust ports of repository commit / push gates.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","actions":[{"about":"Open issues whose title calls a workflow red, and what it does today.","name":"stale"},{"about":"Open issues that state a COUNT in the title, and a reproducible sample.","name":"numbers"},{"about":"Open issues whose figure is ANCHORED, so re-measuring it proves nothing.","name":"dated"}],"agents":[],"args":[],"command":"tri issues","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ABOUT_SOURCE":"clap /// doc on Commands::Issues (cli/tri/src/main.rs; module cli/tri/src/issues.rs)","ACTIONS":["stale","numbers","dated"],"ACTIONS_ABOUT":["Open issues whose title calls a workflow red, and what it does today.","Open issues that state a COUNT in the title, and a reproducible sample.","Open issues whose figure is ANCHORED, so re-measuring it proves nothing."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri issues","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/issues","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/issues","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/issues.rs","VARIANT":"Commands::Issues","WHEN_TO_USE":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","WITNESS":"source-parse"},"health":"ok","id":"tri/issues","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/issues.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_issues","name":{"en":"tri issues"},"qualifiedId":"gHashTag/t27:tri/issues","repo":"gHashTag/t27","schema":2,"searchText":"tri/issues tri issues open issues whose headline calls a workflow red, against what that workflow concludes on master today. open issues whose headline calls a workflow red, against what that workflow concludes on master today. stale open issues whose title calls a workflow red, and what it does today. numbers open issues that state a count in the title, and a reproducible sample. dated open issues whose figure is anchored, so re-measuring it proves nothing.","sha256":"e7b50b366482d2b8d45d2ac34d8c26df07c1834693fb3cce83c043be0509d75c","skills":[],"source":"cli/tri/src/issues.rs","specPath":"specs/tools/tri/issues.t27","summary":{"en":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","ru":"Открытые issue, чей заголовок называет воркфлоу красным, против того, к чему этот воркфлоу приходит на master сегодня."},"typecheckOk":true,"variant":"Commands::Issues","whenToUse":"Open issues whose headline calls a workflow red, against what that workflow concludes on master today.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","actions":[{"about":"Name every `break`/`continue` site in the generated Verilog and say what it lowered to.","name":"census"}],"agents":[],"args":[],"command":"tri jumps","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ABOUT_SOURCE":"clap /// doc on Commands::Jumps (cli/tri/src/main.rs; module cli/tri/src/jumps.rs)","ACTIONS":["census"],"ACTIONS_ABOUT":["Name every `break`/`continue` site in the generated Verilog and say what it lowered to."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri jumps","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/jumps","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/jumps","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/jumps.rs","VARIANT":"Commands::Jumps","WHEN_TO_USE":"What happened to every `break` and `continue` the Verilog emitter had to lower? `break` was `disable fork;` and `continue` was `/* continue */;`. Both parse, both synthesise, both are no-ops -- so every instrument that asks whether the output PARSES said yes for as long as the emitter has existed. See #2988.","WITNESS":"source-parse"},"health":"ok","id":"tri/jumps","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/jumps.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_jumps","name":{"en":"tri jumps"},"qualifiedId":"gHashTag/t27:tri/jumps","repo":"gHashTag/t27","schema":2,"searchText":"tri/jumps tri jumps what happened to every `break` and `continue` the verilog emitter had to lower? what happened to every `break` and `continue` the verilog emitter had to lower? `break` was `disable fork;` and `continue` was `/* continue */;`. both parse, both synthesise, both are no-ops -- so every instrument that asks whether the output parses said yes for as long as the emitter has existed. see #2988. census name every `break`/`continue` site in the generated verilog and say what it lowered to.","sha256":"905308ea72644feb0e72d64a5d6c6edaed7e0d8e7182e7d52d8157f9951e756a","skills":[],"source":"cli/tri/src/jumps.rs","specPath":"specs/tools/tri/jumps.t27","summary":{"en":"What happened to every `break` and `continue` the Verilog emitter had to lower?","ru":"Что случилось с каждым `break` и `continue`, которые эмиттеру Verilog пришлось опустить?"},"typecheckOk":true,"variant":"Commands::Jumps","whenToUse":"What happened to every `break` and `continue` the Verilog emitter had to lower? `break` was `disable fork;` and `continue` was `/* continue */;`. Both parse, both synthesise, both are no-ops -- so every instrument that asks whether the output PARSES said yes for as long as the emitter has existed. See #2988.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","actions":[{"about":"Match arms whose comment names a construct the pattern does not cover.","name":"drift"}],"agents":[],"args":[],"command":"tri kinds","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Match arms whose own comment names a case the pattern omits.","ABOUT_SOURCE":"clap /// doc on Commands::Kinds (cli/tri/src/main.rs; module cli/tri/src/kinddrift.rs)","ACTIONS":["drift"],"ACTIONS_ABOUT":["Match arms whose comment names a construct the pattern does not cover."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri kinds","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/kinds","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/kinds","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/kinddrift.rs","VARIANT":"Commands::Kinds","WHEN_TO_USE":"Match arms whose own comment names a case the pattern omits.","WITNESS":"source-parse"},"health":"ok","id":"tri/kinds","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/kinddrift.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_kinds","name":{"en":"tri kinds"},"qualifiedId":"gHashTag/t27:tri/kinds","repo":"gHashTag/t27","schema":2,"searchText":"tri/kinds tri kinds match arms whose own comment names a case the pattern omits. match arms whose own comment names a case the pattern omits. drift match arms whose comment names a construct the pattern does not cover.","sha256":"76affd22763395ddb1ff3639130a93df72fdd0c7491275d4ef3f1cd0bc5c9377","skills":[],"source":"cli/tri/src/kinddrift.rs","specPath":"specs/tools/tri/kinds.t27","summary":{"en":"Match arms whose own comment names a case the pattern omits.","ru":"Ветви match, чей собственный комментарий называет случай, который паттерн пропускает."},"typecheckOk":true,"variant":"Commands::Kinds","whenToUse":"Match arms whose own comment names a case the pattern omits.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","actions":[{"about":"Completeness theorems whose model has no functions.","name":"vacuous"},{"about":"Proof files the build root does not reach, and so nothing compiles.","name":"reach"}],"agents":[],"args":[],"command":"tri lean","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Completeness theorems whose Lean model is empty.","ABOUT_SOURCE":"clap /// doc on Commands::Lean (cli/tri/src/main.rs; module cli/tri/src/leanvac.rs)","ACTIONS":["vacuous","reach"],"ACTIONS_ABOUT":["Completeness theorems whose model has no functions.","Proof files the build root does not reach, and so nothing compiles."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri lean","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/lean","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/lean","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/leanvac.rs","VARIANT":"Commands::Lean","WHEN_TO_USE":"Completeness theorems whose Lean model is empty.","WITNESS":"source-parse"},"health":"ok","id":"tri/lean","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/leanvac.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_lean","name":{"en":"tri lean"},"qualifiedId":"gHashTag/t27:tri/lean","repo":"gHashTag/t27","schema":2,"searchText":"tri/lean tri lean completeness theorems whose lean model is empty. completeness theorems whose lean model is empty. vacuous completeness theorems whose model has no functions. reach proof files the build root does not reach, and so nothing compiles.","sha256":"9e8b0319877e064acbadfcf4e2611da323f38382cee7f318b4f552e01d560898","skills":[],"source":"cli/tri/src/leanvac.rs","specPath":"specs/tools/tri/lean.t27","summary":{"en":"Completeness theorems whose Lean model is empty.","ru":"Теоремы полноты, у которых модель Lean пуста."},"typecheckOk":true,"variant":"Commands::Lean","whenToUse":"Completeness theorems whose Lean model is empty.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","actions":[{"about":"Plant a stale entry in each ledger and demand its gate fail.","name":"audit"}],"agents":[],"args":[],"command":"tri ledgers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Does each ledger's gate notice when one of its entries stops being true?","ABOUT_SOURCE":"clap /// doc on Commands::Ledgers (cli/tri/src/main.rs; module cli/tri/src/ledgers.rs)","ACTIONS":["audit"],"ACTIONS_ABOUT":["Plant a stale entry in each ledger and demand its gate fail."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri ledgers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/ledgers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/ledgers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/ledgers.rs","VARIANT":"Commands::Ledgers","WHEN_TO_USE":"Does each ledger's gate notice when one of its entries stops being true?","WITNESS":"source-parse"},"health":"ok","id":"tri/ledgers","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/ledgers.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_ledgers","name":{"en":"tri ledgers"},"qualifiedId":"gHashTag/t27:tri/ledgers","repo":"gHashTag/t27","schema":2,"searchText":"tri/ledgers tri ledgers does each ledger's gate notice when one of its entries stops being true? does each ledger's gate notice when one of its entries stops being true? audit plant a stale entry in each ledger and demand its gate fail.","sha256":"98f0c29164ca0fcd92e851d96e061e6f442a80fccab59e71f5d617f364afd7dc","skills":[],"source":"cli/tri/src/ledgers.rs","specPath":"specs/tools/tri/ledgers.t27","summary":{"en":"Does each ledger's gate notice when one of its entries stops being true?","ru":"Замечает ли гейт каждого леджера, когда одна из его записей перестаёт быть истинной?"},"typecheckOk":true,"variant":"Commands::Ledgers","whenToUse":"Does each ledger's gate notice when one of its entries stops being true?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","actions":[{"about":"Take the named claim, or say who already holds it.","name":"claim"}],"agents":[],"args":[],"command":"tri loop","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","ABOUT_SOURCE":"clap /// doc on Commands::Loop (cli/tri/src/main.rs; module cli/tri/src/loopclaim.rs)","ACTIONS":["claim"],"ACTIONS_ABOUT":["Take the named claim, or say who already holds it."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri loop","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/loop","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/loop","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/loopclaim.rs","VARIANT":"Commands::Loop","WHEN_TO_USE":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","WITNESS":"source-parse"},"health":"ok","id":"tri/loop","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/loopclaim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_loop","name":{"en":"tri loop"},"qualifiedId":"gHashTag/t27:tri/loop","repo":"gHashTag/t27","schema":2,"searchText":"tri/loop tri loop what is failing on the default branch right now, and since when. take a named claim so two sessions of the loop cannot pick the same task. what is failing on the default branch right now, and since when. take a named claim so two sessions of the loop cannot pick the same task. claim take the named claim, or say who already holds it.","sha256":"a204edbc1869df4b6d5953432ed6597eb23b9ba0b67d766a13c999d97499f45c","skills":[],"source":"cli/tri/src/loopclaim.rs","specPath":"specs/tools/tri/loop.t27","summary":{"en":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","ru":"Что падает на ветке по умолчанию прямо сейчас и с какого момента. Берёт именованную заявку, чтобы две сессии лупа не взяли одну задачу."},"typecheckOk":true,"variant":"Commands::Loop","whenToUse":"What is failing on the default branch right now, and since when. Take a named claim so two sessions of the loop cannot pick the same task.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","actions":[],"agents":[],"args":[{"about":"The base this branch is supposed to carry. A ref, not a URL.","name":"--base"},{"about":"Also check the commits behind HEAD, not only HEAD itself.","name":"--depth"}],"command":"tri merging","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is a merge in flight here, and does this branch carry the base?","ABOUT_SOURCE":"clap /// doc on Commands::Merging (cli/tri/src/main.rs; module cli/tri/src/inflight.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--base: The base this branch is supposed to carry. A ref, not a URL.","--depth: Also check the commits behind HEAD, not only HEAD itself."],"COMMAND":"tri merging","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/merging","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/merging","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/inflight.rs","VARIANT":"Commands::Merging","WHEN_TO_USE":"Is a merge in flight here, and does this branch carry the base?","WITNESS":"source-parse"},"health":"ok","id":"tri/merging","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/inflight.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_merging","name":{"en":"tri merging"},"qualifiedId":"gHashTag/t27:tri/merging","repo":"gHashTag/t27","schema":2,"searchText":"tri/merging tri merging is a merge in flight here, and does this branch carry the base? is a merge in flight here, and does this branch carry the base?","sha256":"bb4167b8b988820e63e2e42cc9b3f1eeaea9a9caf00e15d8c3f3e0b5cd9d0cb5","skills":[],"source":"cli/tri/src/inflight.rs","specPath":"specs/tools/tri/merging.t27","summary":{"en":"Is a merge in flight here, and does this branch carry the base?","ru":"Идёт ли здесь мерж, и несёт ли эта ветка базу?"},"typecheckOk":true,"variant":"Commands::Merging","whenToUse":"Is a merge in flight here, and does this branch carry the base?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","actions":[],"agents":[],"args":[{"about":"Root of the spec tree.","name":"--specs-dir"},{"about":"Name every spec under each shape rather than only counting.","name":"--list"}],"command":"tri misread","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The specs the compiler reads WRONGLY. Every gate is green on them.","ABOUT_SOURCE":"clap /// doc on Commands::Misread (cli/tri/src/main.rs; module cli/tri/src/misread.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--specs-dir: Root of the spec tree.","--list: Name every spec under each shape rather than only counting."],"COMMAND":"tri misread","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/misread","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/misread","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/misread.rs","VARIANT":"Commands::Misread","WHEN_TO_USE":"The specs the compiler reads WRONGLY. Every gate is green on them.","WITNESS":"source-parse"},"health":"ok","id":"tri/misread","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/misread.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_misread","name":{"en":"tri misread"},"qualifiedId":"gHashTag/t27:tri/misread","repo":"gHashTag/t27","schema":2,"searchText":"tri/misread tri misread the specs the compiler reads wrongly. every gate is green on them. the specs the compiler reads wrongly. every gate is green on them.","sha256":"4c27da6a18f488afac5ac4be903b614994749278742678c74490e1a74ff991a7","skills":[],"source":"cli/tri/src/misread.rs","specPath":"specs/tools/tri/misread.t27","summary":{"en":"The specs the compiler reads WRONGLY. Every gate is green on them.","ru":"Спеки, которые компилятор читает НЕВЕРНО. Все гейты на них зелёные."},"typecheckOk":true,"variant":"Commands::Misread","whenToUse":"The specs the compiler reads WRONGLY. Every gate is green on them.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","actions":[{"about":"List them.","name":"orphan"}],"agents":[],"args":[],"command":"tri mods","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri mods orphan` -- `.rs` files no crate root reaches.","ABOUT_SOURCE":"//! module doc, cli/tri/src/modreach.rs:1 (Commands::Mods dispatches to modreach, cli/tri/src/main.rs:1085)","ACTIONS":["orphan"],"ACTIONS_ABOUT":["List them."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri mods","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mods","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mods","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Mods","WHEN_TO_USE":"`tri mods orphan` -- `.rs` files no crate root reaches.","WITNESS":"source-parse"},"health":"ok","id":"tri/mods","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mods","name":{"en":"tri mods"},"qualifiedId":"gHashTag/t27:tri/mods","repo":"gHashTag/t27","schema":2,"searchText":"tri/mods tri mods `tri mods orphan` -- `.rs` files no crate root reaches. `tri mods orphan` -- `.rs` files no crate root reaches. orphan list them.","sha256":"45754d036ee4eced4776bb6c2d85addf2cf176e7c70098f78b3fdb4db7df17c1","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/mods.t27","summary":{"en":"`tri mods orphan` -- `.rs` files no crate root reaches.","ru":"`tri mods orphan` -- файлы `.rs`, до которых не доходит ни один корень крейта."},"typecheckOk":true,"variant":"Commands::Mods","whenToUse":"`tri mods orphan` -- `.rs` files no crate root reaches.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","actions":[{"about":"Perturb each numeric literal in a file and report which ones the checker does not notice.","name":"run"}],"agents":[],"args":[],"command":"tri mutate","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Find the constants in a checker that nothing actually checks.","ABOUT_SOURCE":"clap /// doc on Commands::Mutate (cli/tri/src/main.rs; module cli/tri/src/mutate.rs)","ACTIONS":["run"],"ACTIONS_ABOUT":["Perturb each numeric literal in a file and report which ones the checker does not notice."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri mutate","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/mutate","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/mutate","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/mutate.rs","VARIANT":"Commands::Mutate","WHEN_TO_USE":"Find the constants in a checker that nothing actually checks.","WITNESS":"source-parse"},"health":"ok","id":"tri/mutate","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/mutate.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_mutate","name":{"en":"tri mutate"},"qualifiedId":"gHashTag/t27:tri/mutate","repo":"gHashTag/t27","schema":2,"searchText":"tri/mutate tri mutate find the constants in a checker that nothing actually checks. find the constants in a checker that nothing actually checks. run perturb each numeric literal in a file and report which ones the checker does not notice.","sha256":"163456bf9900804666e0f1f53bb7ca1bc76faa89f27e30bf34ca869f8388ea98","skills":[],"source":"cli/tri/src/mutate.rs","specPath":"specs/tools/tri/mutate.t27","summary":{"en":"Find the constants in a checker that nothing actually checks.","ru":"Находит в чекере константы, которые на деле ничем не проверяются."},"typecheckOk":true,"variant":"Commands::Mutate","whenToUse":"Find the constants in a checker that nothing actually checks.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","actions":[{"about":"Write a docs/now/ entry: title, bullets, optional issue ref.","name":"add"},{"about":"Ask the REQUIRED `check` gate its own question, before pushing.","name":"check"}],"agents":[],"args":[],"command":"tri now","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Write a docs/now/ entry without hand-writing the frame.","ABOUT_SOURCE":"clap /// doc on Commands::Now (cli/tri/src/main.rs; module cli/tri/src/nownote.rs)","ACTIONS":["add","check"],"ACTIONS_ABOUT":["Write a docs/now/ entry: title, bullets, optional issue ref.","Ask the REQUIRED `check` gate its own question, before pushing."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri now","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/now","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/now","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/nownote.rs","VARIANT":"Commands::Now","WHEN_TO_USE":"Write a docs/now/ entry without hand-writing the frame.","WITNESS":"source-parse"},"health":"ok","id":"tri/now","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/nownote.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_now","name":{"en":"tri now"},"qualifiedId":"gHashTag/t27:tri/now","repo":"gHashTag/t27","schema":2,"searchText":"tri/now tri now write a docs/now/ entry without hand-writing the frame. write a docs/now/ entry without hand-writing the frame. add write a docs/now/ entry: title, bullets, optional issue ref. check ask the required `check` gate its own question, before pushing.","sha256":"e151864300830e0cdde07121285099fdc47c1de925ec4a5e78bba71a29e6a94a","skills":[],"source":"cli/tri/src/nownote.rs","specPath":"specs/tools/tri/now.t27","summary":{"en":"Write a docs/now/ entry without hand-writing the frame.","ru":"Пишет запись docs/now/ без ручного набора рамки."},"typecheckOk":true,"variant":"Commands::Now","whenToUse":"Write a docs/now/ entry without hand-writing the frame.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","actions":[],"agents":[],"args":[{"about":"Also list every spec, not only the class tally.","name":"--names"},{"about":"Report specs with exactly this many errors. The default, 1, is the only bucket a single repair can move; `--errors 2` is the next wave.","name":"--errors"},{"about":"Stop after this many specs. Prints what was dropped -- a silent cap reads as coverage.","name":"--limit"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"command":"tri one-away","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Failing specs one defect from compiling, and what that defect is","ABOUT_SOURCE":"clap /// doc on Commands::OneAway (cli/tri/src/main.rs; module cli/tri/src/oneaway.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--names: Also list every spec, not only the class tally.","--errors: Report specs with exactly this many errors. The default, 1, is the only bucket a single repair can move; `--errors 2` is the next wave.","--limit: Stop after this many specs. Prints what was dropped -- a silent cap reads as coverage.","--self-check: Run the controls and report, changing nothing."],"COMMAND":"tri one-away","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/one-away","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/one-away","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/oneaway.rs","VARIANT":"Commands::OneAway","WHEN_TO_USE":"Failing specs one defect from compiling, and what that defect is","WITNESS":"source-parse"},"health":"ok","id":"tri/one-away","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/oneaway.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_one_away","name":{"en":"tri one-away"},"qualifiedId":"gHashTag/t27:tri/one-away","repo":"gHashTag/t27","schema":2,"searchText":"tri/one-away tri one-away failing specs one defect from compiling, and what that defect is failing specs one defect from compiling, and what that defect is","sha256":"f823bbea9d121e61a27e9c8d899004d2f3712876eab334ed3982a62908fd8ab2","skills":[],"source":"cli/tri/src/oneaway.rs","specPath":"specs/tools/tri/one-away.t27","summary":{"en":"Failing specs one defect from compiling, and what that defect is","ru":"Падающие спеки, которым до компиляции один дефект, и какой именно."},"typecheckOk":true,"variant":"Commands::OneAway","whenToUse":"Failing specs one defect from compiling, and what that defect is","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","actions":[{"about":"List gate and tool sources that name an input which is not in the tree.","name":"list"}],"agents":[],"args":[],"command":"tri orphaned","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks whose input is not in the tree.","ABOUT_SOURCE":"clap /// doc on Commands::Orphaned (cli/tri/src/main.rs; module cli/tri/src/orphaned.rs)","ACTIONS":["list"],"ACTIONS_ABOUT":["List gate and tool sources that name an input which is not in the tree."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri orphaned","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/orphaned","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/orphaned","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/orphaned.rs","VARIANT":"Commands::Orphaned","WHEN_TO_USE":"Checks whose input is not in the tree.","WITNESS":"source-parse"},"health":"ok","id":"tri/orphaned","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/orphaned.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_orphaned","name":{"en":"tri orphaned"},"qualifiedId":"gHashTag/t27:tri/orphaned","repo":"gHashTag/t27","schema":2,"searchText":"tri/orphaned tri orphaned checks whose input is not in the tree. checks whose input is not in the tree. list list gate and tool sources that name an input which is not in the tree.","sha256":"f9808d318e75aa5ea4ea3e5b3bf33f0a667aab6a00c7c5aa91f2cc77e3e846bd","skills":[],"source":"cli/tri/src/orphaned.rs","specPath":"specs/tools/tri/orphaned.t27","summary":{"en":"Checks whose input is not in the tree.","ru":"Проверки, чей вход отсутствует в дереве."},"typecheckOk":true,"variant":"Commands::Orphaned","whenToUse":"Checks whose input is not in the tree.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","actions":[{"about":"Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?","name":"landed"},{"about":"","name":"ready"}],"agents":[],"args":[],"command":"tri pr","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Is this pull request actually safe to merge?","ABOUT_SOURCE":"clap /// doc on Commands::Pr (cli/tri/src/main.rs; module cli/tri/src/prcheck.rs)","ACTIONS":["landed","ready"],"ACTIONS_ABOUT":["Classify every failing check and say plainly whether it is safe to merge. Did this pull request's content actually reach the default branch?",""],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri pr","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/pr","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/pr","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prcheck.rs","VARIANT":"Commands::Pr","WHEN_TO_USE":"Is this pull request actually safe to merge?","WITNESS":"source-parse"},"health":"ok","id":"tri/pr","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prcheck.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_pr","name":{"en":"tri pr"},"qualifiedId":"gHashTag/t27:tri/pr","repo":"gHashTag/t27","schema":2,"searchText":"tri/pr tri pr is this pull request actually safe to merge? is this pull request actually safe to merge? landed classify every failing check and say plainly whether it is safe to merge. did this pull request's content actually reach the default branch? ready","sha256":"4909a13b33ff6128bf308132850effbdfcfc1b44bb8ccedf1c7bacc288dea720","skills":[],"source":"cli/tri/src/prcheck.rs","specPath":"specs/tools/tri/pr.t27","summary":{"en":"Is this pull request actually safe to merge?","ru":"Действительно ли этот pull request безопасно мержить?"},"typecheckOk":true,"variant":"Commands::Pr","whenToUse":"Is this pull request actually safe to merge?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","actions":[{"about":"Which specs are blocked only by prose, and how many lines that is.","name":"report"}],"agents":[],"args":[],"command":"tri prose","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs a literate author left prose in, and how far that prose is from code.","ABOUT_SOURCE":"clap /// doc on Commands::Prose (cli/tri/src/main.rs; module cli/tri/src/prose.rs)","ACTIONS":["report"],"ACTIONS_ABOUT":["Which specs are blocked only by prose, and how many lines that is."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri prose","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/prose","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/prose","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/prose.rs","VARIANT":"Commands::Prose","WHEN_TO_USE":"Specs a literate author left prose in, and how far that prose is from code.","WITNESS":"source-parse"},"health":"ok","id":"tri/prose","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/prose.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_prose","name":{"en":"tri prose"},"qualifiedId":"gHashTag/t27:tri/prose","repo":"gHashTag/t27","schema":2,"searchText":"tri/prose tri prose specs a literate author left prose in, and how far that prose is from code. specs a literate author left prose in, and how far that prose is from code. report which specs are blocked only by prose, and how many lines that is.","sha256":"8689a47ee97a2588da26a7492f8c6f543dd25702b9962cbdd25ce16070129d38","skills":[],"source":"cli/tri/src/prose.rs","specPath":"specs/tools/tri/prose.t27","summary":{"en":"Specs a literate author left prose in, and how far that prose is from code.","ru":"Спеки, в которых литературный автор оставил прозу, и насколько эта проза далека от кода."},"typecheckOk":true,"variant":"Commands::Prose","whenToUse":"Specs a literate author left prose in, and how far that prose is from code.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","actions":[{"about":"Every quantified clause, its binders, and the size of its domain.","name":"report"},{"about":"Every line carrying a quantifier keyword, and whether the census read it.","name":"audit"}],"agents":[],"args":[],"command":"tri quantifiers","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Every quantified clause, its binders, and the size of its domain.","ABOUT_SOURCE":"clap /// doc on Commands::Quantifiers (cli/tri/src/main.rs; module cli/tri/src/quant.rs)","ACTIONS":["report","audit"],"ACTIONS_ABOUT":["Every quantified clause, its binders, and the size of its domain.","Every line carrying a quantifier keyword, and whether the census read it."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri quantifiers","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/quantifiers","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/quantifiers","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/quant.rs","VARIANT":"Commands::Quantifiers","WHEN_TO_USE":"Every quantified clause, its binders, and the size of its domain.","WITNESS":"source-parse"},"health":"ok","id":"tri/quantifiers","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/quant.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_quantifiers","name":{"en":"tri quantifiers"},"qualifiedId":"gHashTag/t27:tri/quantifiers","repo":"gHashTag/t27","schema":2,"searchText":"tri/quantifiers tri quantifiers every quantified clause, its binders, and the size of its domain. every quantified clause, its binders, and the size of its domain. report every quantified clause, its binders, and the size of its domain. audit every line carrying a quantifier keyword, and whether the census read it.","sha256":"f6500ab3e4a78e54e2e83ed1aa6eb389ec0da64ebb735841849c788efc0e1a44","skills":[],"source":"cli/tri/src/quant.rs","specPath":"specs/tools/tri/quantifiers.t27","summary":{"en":"Every quantified clause, its binders, and the size of its domain.","ru":"Каждая квантифицированная клауза, её связанные переменные и размер её домена."},"typecheckOk":true,"variant":"Commands::Quantifiers","whenToUse":"Every quantified clause, its binders, and the size of its domain.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/red.rs:1","actions":[{"about":"Show workflows whose most recent run on the default branch failed.","name":"now"},{"about":"Which STEP each recent failure of one workflow died at, oldest first.","name":"why"}],"agents":[],"args":[],"command":"tri red","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"`tri red` -- what is failing on main right now, and since when.","ABOUT_SOURCE":"//! module doc, cli/tri/src/red.rs:1","ACTIONS":["now","why"],"ACTIONS_ABOUT":["Show workflows whose most recent run on the default branch failed.","Which STEP each recent failure of one workflow died at, oldest first."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri red","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/red","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/red","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/red.rs","VARIANT":"Commands::Red","WHEN_TO_USE":"`tri red` -- what is failing on main right now, and since when.","WITNESS":"source-parse"},"health":"ok","id":"tri/red","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/red.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_red","name":{"en":"tri red"},"qualifiedId":"gHashTag/t27:tri/red","repo":"gHashTag/t27","schema":2,"searchText":"tri/red tri red `tri red` -- what is failing on main right now, and since when. `tri red` -- what is failing on main right now, and since when. now show workflows whose most recent run on the default branch failed. why which step each recent failure of one workflow died at, oldest first.","sha256":"dbc09d850d87e9623513a9eedf77764f4b84cb299f4175c068eee278a0748a71","skills":[],"source":"cli/tri/src/red.rs","specPath":"specs/tools/tri/red.t27","summary":{"en":"`tri red` -- what is failing on main right now, and since when.","ru":"`tri red` -- что падает на main прямо сейчас и с какого момента."},"typecheckOk":true,"variant":"Commands::Red","whenToUse":"`tri red` -- what is failing on main right now, and since when.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","actions":[{"about":"Rewrite FROZEN_HASH from the current bytes of the sealed file.","name":"write"},{"about":"Report whether the seal matches, and exit non-zero if it does not.","name":"check"}],"agents":[],"args":[],"command":"tri reseal","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Recompute the FROZEN_HASH seal from the file it seals.","ABOUT_SOURCE":"clap /// doc on Commands::Reseal (cli/tri/src/main.rs; module cli/tri/src/reseal.rs)","ACTIONS":["write","check"],"ACTIONS_ABOUT":["Rewrite FROZEN_HASH from the current bytes of the sealed file.","Report whether the seal matches, and exit non-zero if it does not."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri reseal","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/reseal","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/reseal","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/reseal.rs","VARIANT":"Commands::Reseal","WHEN_TO_USE":"Recompute the FROZEN_HASH seal from the file it seals.","WITNESS":"source-parse"},"health":"ok","id":"tri/reseal","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/reseal.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_reseal","name":{"en":"tri reseal"},"qualifiedId":"gHashTag/t27:tri/reseal","repo":"gHashTag/t27","schema":2,"searchText":"tri/reseal tri reseal recompute the frozen_hash seal from the file it seals. recompute the frozen_hash seal from the file it seals. write rewrite frozen_hash from the current bytes of the sealed file. check report whether the seal matches, and exit non-zero if it does not.","sha256":"f4b1478122c02d2e4c50a5bb589e03e97212875c368fad659824f5f532e824d8","skills":[],"source":"cli/tri/src/reseal.rs","specPath":"specs/tools/tri/reseal.t27","summary":{"en":"Recompute the FROZEN_HASH seal from the file it seals.","ru":"Пересчитывает печать FROZEN_HASH по файлу, который она запечатывает."},"typecheckOk":true,"variant":"Commands::Reseal","whenToUse":"Recompute the FROZEN_HASH seal from the file it seals.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","actions":[{"about":"Run the five structural checks on a design directory.","name":"check"}],"agents":[],"args":[],"command":"tri rtl","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ABOUT_SOURCE":"clap /// doc on Commands::Rtl (cli/tri/src/main.rs; module cli/tri/src/rtl.rs)","ACTIONS":["check"],"ACTIONS_ABOUT":["Run the five structural checks on a design directory."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri rtl","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/rtl","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/rtl","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/rtl.rs","VARIANT":"Commands::Rtl","WHEN_TO_USE":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","WITNESS":"source-parse"},"health":"ok","id":"tri/rtl","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/rtl.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_rtl","name":{"en":"tri rtl"},"qualifiedId":"gHashTag/t27:tri/rtl","repo":"gHashTag/t27","schema":2,"searchText":"tri/rtl tri rtl the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. the structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness. check run the five structural checks on a design directory.","sha256":"656a55d5c53935a47b6bfb87528cb7eadd93b56ea60bc246f720ace506be7109","skills":[],"source":"cli/tri/src/rtl.rs","specPath":"specs/tools/tri/rtl.t27","summary":{"en":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","ru":"Структурная проверка, которую предлагает t27.ai, локально: пять вердиктов, версия yosys рядом с числами и никаких заявлений о корректности."},"typecheckOk":true,"variant":"Commands::Rtl","whenToUse":"The structural check t27.ai offers, run locally: five verdicts, the yosys version beside the numbers, and no claim about correctness.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","actions":[{"about":"Is the built compiler newer than the source the seals are checked against?","name":"fresh"},{"about":"Seals whose claims no longer match what the compiler produces, and the one command that repairs them.","name":"drift"},{"about":"Specs that carry more than one seal, and which of those pairs disagree.","name":"twins"},{"about":"Copy the NEWEST seal's claims onto its twins, after a re-seal.","name":"sync-twins"},{"about":"Seals that record `gen_hash=none` -- a spec that produced no output, sealed.","name":"hollow"}],"agents":[],"args":[],"command":"tri seals","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What `.trinity/seals` says about a spec, when it says it twice.","ABOUT_SOURCE":"clap /// doc on Commands::Seals (cli/tri/src/main.rs; module cli/tri/src/seals.rs)","ACTIONS":["fresh","drift","twins","sync-twins","hollow"],"ACTIONS_ABOUT":["Is the built compiler newer than the source the seals are checked against?","Seals whose claims no longer match what the compiler produces, and the one command that repairs them.","Specs that carry more than one seal, and which of those pairs disagree.","Copy the NEWEST seal's claims onto its twins, after a re-seal.","Seals that record `gen_hash=none` -- a spec that produced no output, sealed."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri seals","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/seals","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/seals","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/seals.rs","VARIANT":"Commands::Seals","WHEN_TO_USE":"What `.trinity/seals` says about a spec, when it says it twice.","WITNESS":"source-parse"},"health":"ok","id":"tri/seals","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/seals.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_seals","name":{"en":"tri seals"},"qualifiedId":"gHashTag/t27:tri/seals","repo":"gHashTag/t27","schema":2,"searchText":"tri/seals tri seals what `.trinity/seals` says about a spec, when it says it twice. what `.trinity/seals` says about a spec, when it says it twice. fresh is the built compiler newer than the source the seals are checked against? drift seals whose claims no longer match what the compiler produces, and the one command that repairs them. twins specs that carry more than one seal, and which of those pairs disagree. sync-twins copy the newest seal's claims onto its twins, after a re-seal. hollow seals that record `gen_hash=none` -- a spec that produced no output, sealed.","sha256":"e0932fe334d920e6591445980b99b8b9bebb845756394199bd209c13e13d0d15","skills":[],"source":"cli/tri/src/seals.rs","specPath":"specs/tools/tri/seals.t27","summary":{"en":"What `.trinity/seals` says about a spec, when it says it twice.","ru":"Что `.trinity/seals` говорит о спеке, когда говорит это дважды."},"typecheckOk":true,"variant":"Commands::Seals","whenToUse":"What `.trinity/seals` says about a spec, when it says it twice.","witness":"source-parse"},{"aboutSource":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","actions":[],"agents":[],"args":[{"about":"","name":"--addr"}],"command":"tri serve","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ABOUT_SOURCE":"handler cmd_serve routes and banner string (cli/tri/src/main.rs:1121)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--addr"],"COMMAND":"tri serve","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/serve","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/serve","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Serve","WHEN_TO_USE":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","WITNESS":"source-parse"},"health":"ok","id":"tri/serve","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_serve","name":{"en":"tri serve"},"qualifiedId":"gHashTag/t27:tri/serve","repo":"gHashTag/t27","schema":2,"searchText":"tri/serve tri serve serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on . serve the trinity depin http api over axum: post /prove, get /epoch-challenge, get /health; prints trinity depin v0.1.0 -- listening on .","sha256":"0aa1373204ff6f8fd41fd8d19428f3d0754fc124578e3f1fbcc2f55c9ff55f4a","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/serve.t27","summary":{"en":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","ru":"Поднимает HTTP API trinity depin на axum: POST /prove, GET /epoch-challenge, GET /health; печатает «trinity depin v0.1.0 -- listening on »."},"typecheckOk":true,"variant":"Commands::Serve","whenToUse":"Serve the trinity depin HTTP API over axum: POST /prove, GET /epoch-challenge, GET /health; prints trinity depin v0.1.0 -- listening on .","witness":"source-parse"},{"aboutSource":"tri-mcp tools tri_skill_begin and tri_skill_end descriptions (cli/tri-mcp/src/main.rs); SkillAction enum cli/tri/src/main.rs:349","actions":[{"about":"Write a new lesson to the spool, unnumbered.","name":"add"},{"about":"Fold every spooled lesson into SKILL.md, numbering them on the way in.","name":"fold"},{"about":"Check every SKILL.md's section numbering for collisions.","name":"check"},{"about":"Sections whose body was cut short at some point in the file's history.","name":"lost"},{"about":"Every cross-reference in the skills, and whether it resolves.","name":"refs"},{"about":"Sections that state a FIGURE, and which of those a reader can re-take.","name":"claims"},{"about":"Move sections you appended to the numbers the base branch left free.","name":"renumber"},{"about":"","name":"begin"},{"about":"","name":"end"}],"agents":[],"args":[],"command":"tri skill","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","ABOUT_SOURCE":"tri-mcp tools tri_skill_begin and tri_skill_end descriptions (cli/tri-mcp/src/main.rs); SkillAction enum cli/tri/src/main.rs:349","ACTIONS":["add","fold","check","lost","refs","claims","renumber","begin","end"],"ACTIONS_ABOUT":["Write a new lesson to the spool, unnumbered.","Fold every spooled lesson into SKILL.md, numbering them on the way in.","Check every SKILL.md's section numbering for collisions.","Sections whose body was cut short at some point in the file's history.","Every cross-reference in the skills, and whether it resolves.","Sections that state a FIGURE, and which of those a reader can re-take.","Move sections you appended to the numbers the base branch left free.","",""],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri skill","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/skill","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/skill","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Skill","WHEN_TO_USE":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","WITNESS":"source-parse"},"health":"ok","id":"tri/skill","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_skill","name":{"en":"tri skill"},"qualifiedId":"gHashTag/t27:tri/skill","repo":"gHashTag/t27","schema":2,"searchText":"tri/skill tri skill begins a new phi loop skill session bound to an issue. ends the active phi loop skill session. the add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (skill.md lesson spool). begins a new phi loop skill session bound to an issue. ends the active phi loop skill session. the add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (skill.md lesson spool). add write a new lesson to the spool, unnumbered. fold fold every spooled lesson into skill.md, numbering them on the way in. check check every skill.md's section numbering for collisions. lost sections whose body was cut short at some point in the file's history. refs every cross-reference in the skills, and whether it resolves. claims sections that state a figure, and which of those a reader can re-take. renumber move sections you appended to the numbers the base branch left free. begin end","sha256":"4e19baf0ea4267dbbd23f71b8d324779c85427672378205a64726118c36a8e68","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/skill.t27","summary":{"en":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","ru":"Начинает новую сессию скилла PHI LOOP, привязанную к issue; завершает активную сессию. Действия add/fold/check/lost/refs/claims/renumber ведут спул уроков SKILL.md и описаны в своих clap-доках."},"typecheckOk":true,"variant":"Commands::Skill","whenToUse":"Begins a new PHI LOOP skill session bound to an issue. Ends the active PHI LOOP skill session. The add/fold/check/lost/refs/claims/renumber actions carry their own clap docs (SKILL.md lesson spool).","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_status description (cli/tri-mcp/src/main.rs); handler cmd_status prints === PHI LOOP STATUS === (cli/tri/src/main.rs:613)","actions":[],"agents":[],"args":[],"command":"tri status","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ABOUT_SOURCE":"tri-mcp tool tri_status description (cli/tri-mcp/src/main.rs); handler cmd_status prints === PHI LOOP STATUS === (cli/tri/src/main.rs:613)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri status","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/status","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/status","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Status","WHEN_TO_USE":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","WITNESS":"source-parse"},"health":"ok","id":"tri/status","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_status","name":{"en":"tri status"},"qualifiedId":"gHashTag/t27:tri/status","repo":"gHashTag/t27","schema":2,"searchText":"tri/status tri status returns phi loop status including active skill, cell, issue binding, and uncommitted changes. returns phi loop status including active skill, cell, issue binding, and uncommitted changes.","sha256":"bacc3fad069505febf375adbbfea9a861e4dc884a6c3d98d723bc5cd22365290","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/status.t27","summary":{"en":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","ru":"Показывает статус PHI LOOP: активный скилл, ячейку, привязку к issue и незакоммиченные изменения."},"typecheckOk":true,"variant":"Commands::Status","whenToUse":"Returns PHI LOOP status including active skill, cell, issue binding, and uncommitted changes.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","actions":[{"about":"Synthesise a top across values of one parameter and report the trend.","name":"area"}],"agents":[],"args":[],"command":"tri sweep","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise across a parameter and check the area actually moves.","ABOUT_SOURCE":"clap /// doc on Commands::Sweep (cli/tri/src/main.rs; module cli/tri/src/sweep.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top across values of one parameter and report the trend."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri sweep","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/sweep","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/sweep","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/sweep.rs","VARIANT":"Commands::Sweep","WHEN_TO_USE":"Synthesise across a parameter and check the area actually moves.","WITNESS":"source-parse"},"health":"ok","id":"tri/sweep","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/sweep.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_sweep","name":{"en":"tri sweep"},"qualifiedId":"gHashTag/t27:tri/sweep","repo":"gHashTag/t27","schema":2,"searchText":"tri/sweep tri sweep synthesise across a parameter and check the area actually moves. synthesise across a parameter and check the area actually moves. area synthesise a top across values of one parameter and report the trend.","sha256":"7b032422cdd86d854023351e841cf5c6f6f43327cab5504b6afd61ac889614e1","skills":[],"source":"cli/tri/src/sweep.rs","specPath":"specs/tools/tri/sweep.t27","summary":{"en":"Synthesise across a parameter and check the area actually moves.","ru":"Синтез по параметру с проверкой, что площадь действительно меняется."},"typecheckOk":true,"variant":"Commands::Sweep","whenToUse":"Synthesise across a parameter and check the area actually moves.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","actions":[{"about":"Synthesise a top module and report LUT/DSP/FF/CARRY4 counts.","name":"area"}],"agents":[],"args":[],"command":"tri synth","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Synthesise a top module and report area, with the instrument named.","ABOUT_SOURCE":"clap /// doc on Commands::Synth (cli/tri/src/main.rs; module cli/tri/src/synth.rs)","ACTIONS":["area"],"ACTIONS_ABOUT":["Synthesise a top module and report LUT/DSP/FF/CARRY4 counts."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri synth","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/synth","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/synth","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/synth.rs","VARIANT":"Commands::Synth","WHEN_TO_USE":"Synthesise a top module and report area, with the instrument named.","WITNESS":"source-parse"},"health":"ok","id":"tri/synth","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/synth.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_synth","name":{"en":"tri synth"},"qualifiedId":"gHashTag/t27:tri/synth","repo":"gHashTag/t27","schema":2,"searchText":"tri/synth tri synth synthesise a top module and report area, with the instrument named. synthesise a top module and report area, with the instrument named. area synthesise a top module and report lut/dsp/ff/carry4 counts.","sha256":"51a2f2cad1da2385b6c7b16ab1e4721df80fe98918a60a3410c88fe14da4d743","skills":[],"source":"cli/tri/src/synth.rs","specPath":"specs/tools/tri/synth.t27","summary":{"en":"Synthesise a top module and report area, with the instrument named.","ru":"Синтезирует top-модуль и сообщает площадь с указанием инструмента."},"typecheckOk":true,"variant":"Commands::Synth","whenToUse":"Synthesise a top module and report area, with the instrument named.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","actions":[],"agents":[{"letter":"T","ok":true},{"letter":"V","ok":true}],"args":[{"about":"","name":""}],"command":"tri test","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Runs tests for a .t27 spec file using t27c.","ABOUT_SOURCE":"tri-mcp tool tri_test description (cli/tri-mcp/src/main.rs); handler cmd_test runs t27c test (cli/tri/src/main.rs:870)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["T","V"],"AGENTS_NOTE":".claude/agents/agent-v-verify.md:47 (tri test -- Run conformance tests); .claude/agents/trinity.md:70 (7. Verify - Run tri test).","ARGS":[""],"COMMAND":"tri test","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/test","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/test","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Test","WHEN_TO_USE":"Runs tests for a .t27 spec file using t27c.","WITNESS":"source-parse"},"health":"ok","id":"tri/test","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_test","name":{"en":"tri test"},"qualifiedId":"gHashTag/t27:tri/test","repo":"gHashTag/t27","schema":2,"searchText":"tri/test tri test runs tests for a .t27 spec file using t27c. runs tests for a .t27 spec file using t27c. t v","sha256":"a960b7f1a9936d59ccf97203a7031161075c78d1ba6a0f7c78b65084d3a910a7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/test.t27","summary":{"en":"Runs tests for a .t27 spec file using t27c.","ru":"Запускает тесты для файла спецификации .t27 через t27c."},"typecheckOk":true,"variant":"Commands::Test","whenToUse":"Runs tests for a .t27 spec file using t27c.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","actions":[],"agents":[],"args":[{"about":"Words to look for. A row matches on any; rows carrying more come first.","name":""},{"about":"How many recent commits on the base branch to read.","name":"--commits"}],"command":"tri topic","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Has anyone already done this, or are they doing it now?","ABOUT_SOURCE":"clap /// doc on Commands::Topic (cli/tri/src/main.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[": Words to look for. A row matches on any; rows carrying more come first.","--commits: How many recent commits on the base branch to read."],"COMMAND":"tri topic","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/topic","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/topic","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Topic","WHEN_TO_USE":"Has anyone already done this, or are they doing it now?","WITNESS":"source-parse"},"health":"ok","id":"tri/topic","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_topic","name":{"en":"tri topic"},"qualifiedId":"gHashTag/t27:tri/topic","repo":"gHashTag/t27","schema":2,"searchText":"tri/topic tri topic has anyone already done this, or are they doing it now? has anyone already done this, or are they doing it now?","sha256":"0ca5ed85564d0231316703fb63605e962ea2cbf2fb37a273c7d9eac793a45cd5","skills":[],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/topic.t27","summary":{"en":"Has anyone already done this, or are they doing it now?","ru":"Кто-нибудь уже делал это или делает сейчас?"},"typecheckOk":true,"variant":"Commands::Topic","whenToUse":"Has anyone already done this, or are they doing it now?","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/types_dup.rs:1","actions":[{"about":"Type names with more than one definition in the spec tree.","name":"dup"},{"about":"Hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away.","name":"ratchet"},{"about":"Cross-check the written classification against what the tree says today.","name":"classified"},{"about":"Names defined more than once INSIDE ONE FILE.","name":"redef"}],"agents":[],"args":[],"command":"tri types","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"One type name, more than one definition.","ABOUT_SOURCE":"//! module doc, cli/tri/src/types_dup.rs:1","ACTIONS":["dup","ratchet","classified","redef"],"ACTIONS_ABOUT":["Type names with more than one definition in the spec tree.","Hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away.","Cross-check the written classification against what the tree says today.","Names defined more than once INSIDE ONE FILE."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri types","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/types","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/types","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/types_dup.rs","VARIANT":"Commands::Types","WHEN_TO_USE":"One type name, more than one definition.","WITNESS":"source-parse"},"health":"ok","id":"tri/types","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/types_dup.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_types","name":{"en":"tri types"},"qualifiedId":"gHashTag/t27:tri/types","repo":"gHashTag/t27","schema":2,"searchText":"tri/types tri types one type name, more than one definition. one type name, more than one definition. dup type names with more than one definition in the spec tree. ratchet hold the conflicted set: a new conflict fails, and a resolved one fails until it is blessed away. classified cross-check the written classification against what the tree says today. redef names defined more than once inside one file.","sha256":"16ea516e67cf93e24863ebb8aabc61ac3bc67fed76d94a228f947258b5296f55","skills":[],"source":"cli/tri/src/types_dup.rs","specPath":"specs/tools/tri/types.t27","summary":{"en":"One type name, more than one definition.","ru":"Одно имя типа, больше одного определения."},"typecheckOk":true,"variant":"Commands::Types","whenToUse":"One type name, more than one definition.","witness":"source-parse"},{"aboutSource":"//! module doc, cli/tri/src/unparsed.rs:1","actions":[{"about":"Rank the constructs that stop the compiler, most specs first.","name":"report"},{"about":"For each unreadable spec, the ITEM whose presence causes the failure.","name":"locate"},{"about":"Cross-check the census against an INDEPENDENTLY built population.","name":"agree"},{"about":"Run every construct's minimal source and say which the compiler rejects.","name":"probe"}],"agents":[],"args":[],"command":"tri unparsed","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ABOUT_SOURCE":"//! module doc, cli/tri/src/unparsed.rs:1","ACTIONS":["report","locate","agree","probe"],"ACTIONS_ABOUT":["Rank the constructs that stop the compiler, most specs first.","For each unreadable spec, the ITEM whose presence causes the failure.","Cross-check the census against an INDEPENDENTLY built population.","Run every construct's minimal source and say which the compiler rejects."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri unparsed","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/unparsed","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/unparsed","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/unparsed.rs","VARIANT":"Commands::Unparsed","WHEN_TO_USE":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","WITNESS":"source-parse"},"health":"ok","id":"tri/unparsed","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/unparsed.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_unparsed","name":{"en":"tri unparsed"},"qualifiedId":"gHashTag/t27:tri/unparsed","repo":"gHashTag/t27","schema":2,"searchText":"tri/unparsed tri unparsed specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. specs the compiler cannot read, ranked by the construct that stops it -- and every construct backed by a live probe. report rank the constructs that stop the compiler, most specs first. locate for each unreadable spec, the item whose presence causes the failure. agree cross-check the census against an independently built population. probe run every construct's minimal source and say which the compiler rejects.","sha256":"6aaf39d92a0b7c5443faa32b97cd7fd74b251a8258aee8390b6965d5fee2e660","skills":[],"source":"cli/tri/src/unparsed.rs","specPath":"specs/tools/tri/unparsed.t27","summary":{"en":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","ru":"Спеки, которые компилятор не может прочитать, ранжированные по КОНСТРУКЦИИ, которая его останавливает, -- и каждая конструкция, подтверждённая живой пробой."},"typecheckOk":true,"variant":"Commands::Unparsed","whenToUse":"Specs the compiler cannot read, ranked by the CONSTRUCT that stops it -- and every construct backed by a live probe.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","actions":[{"about":"Generate a module's Verilog and execute its registered vectors.","name":"run"},{"about":"Inventory every vector file: executed, debt, or aspirational.","name":"debt"}],"agents":[],"args":[],"command":"tri vectors","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ABOUT_SOURCE":"clap /// doc on Commands::Vectors (cli/tri/src/main.rs; module cli/tri/src/vectors.rs)","ACTIONS":["run","debt"],"ACTIONS_ABOUT":["Generate a module's Verilog and execute its registered vectors.","Inventory every vector file: executed, debt, or aspirational."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri vectors","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vectors","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vectors","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vectors.rs","VARIANT":"Commands::Vectors","WHEN_TO_USE":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","WITNESS":"source-parse"},"health":"ok","id":"tri/vectors","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vectors.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vectors","name":{"en":"tri vectors"},"qualifiedId":"gHashTag/t27:tri/vectors","repo":"gHashTag/t27","schema":2,"searchText":"tri/vectors tri vectors the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. the executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed. run generate a module's verilog and execute its registered vectors. debt inventory every vector file: executed, debt, or aspirational.","sha256":"7babf01001cd4e86adfad3f717ccf6cf0772dd38e143ab71d782bd66bc455b82","skills":[],"source":"cli/tri/src/vectors.rs","specPath":"specs/tools/tri/vectors.t27","summary":{"en":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","ru":"Реестр исполняемых векторов: запустить векторы модуля или проинвентаризировать, какие файлы исполняются, а какие только показываются."},"typecheckOk":true,"variant":"Commands::Vectors","whenToUse":"The executed-vector registry: run a module's vectors, or inventory which files are executed and which are only displayed.","witness":"source-parse"},{"aboutSource":"tri-mcp tool tri_verdict description (cli/tri-mcp/src/main.rs); handler cmd_verdict runs t27c validate-seals, validate-phi-identity and, with --toxic, validate-toxicity (cli/tri/src/main.rs:876)","actions":[],"agents":[{"letter":"V","ok":true}],"args":[{"about":"","name":"--toxic"}],"command":"tri verdict","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Checks for toxic regressions by analyzing swarm health metrics.","ABOUT_SOURCE":"tri-mcp tool tri_verdict description (cli/tri-mcp/src/main.rs); handler cmd_verdict runs t27c validate-seals, validate-phi-identity and, with --toxic, validate-toxicity (cli/tri/src/main.rs:876)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":["V"],"AGENTS_NOTE":".claude/agents/agent-v-verify.md:49 (tri verdict -- Generate pass/fail report); docs/agents/AGENTS_ALPHABET.md:80, PHASE 5 VERDICT: V analyzes metrics, tri verdict --toxic.","ARGS":["--toxic"],"COMMAND":"tri verdict","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/verdict","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/verdict","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/main.rs","VARIANT":"Commands::Verdict","WHEN_TO_USE":"Checks for toxic regressions by analyzing swarm health metrics.","WITNESS":"source-parse"},"health":"ok","id":"tri/verdict","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/main.rs"},"messages":[],"moduleName":"tool_tri_verdict","name":{"en":"tri verdict"},"qualifiedId":"gHashTag/t27:tri/verdict","repo":"gHashTag/t27","schema":2,"searchText":"tri/verdict tri verdict checks for toxic regressions by analyzing swarm health metrics. checks for toxic regressions by analyzing swarm health metrics. v","sha256":"8afa0e665be25d336bdca685cd2369546a767678133bc86c9994d7c94da6a5c7","skills":[{"id":"t27/tri","via":["SUMMARY_EN"]}],"source":"cli/tri/src/main.rs","specPath":"specs/tools/tri/verdict.t27","summary":{"en":"Checks for toxic regressions by analyzing swarm health metrics.","ru":"Проверяет токсичные регрессии, анализируя метрики здоровья роя."},"typecheckOk":true,"variant":"Commands::Verdict","whenToUse":"Checks for toxic regressions by analyzing swarm health metrics.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","actions":[{"about":"Walk the corpus through `t27c icarus-simulate` and print the funnel.","name":"funnel"}],"agents":[],"args":[],"command":"tri vsim","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"How far each spec gets when its generated Verilog is actually RUN.","ABOUT_SOURCE":"clap /// doc on Commands::Vsim (cli/tri/src/main.rs; module cli/tri/src/vsim.rs)","ACTIONS":["funnel"],"ACTIONS_ABOUT":["Walk the corpus through `t27c icarus-simulate` and print the funnel."],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":[],"COMMAND":"tri vsim","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/vsim","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/vsim","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/vsim.rs","VARIANT":"Commands::Vsim","WHEN_TO_USE":"How far each spec gets when its generated Verilog is actually RUN. The one arm that can catch a defect whose nature is that it compiles, and the one arm whose gate has had no targets since #2283 -- see #2987.","WITNESS":"source-parse"},"health":"ok","id":"tri/vsim","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/vsim.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_vsim","name":{"en":"tri vsim"},"qualifiedId":"gHashTag/t27:tri/vsim","repo":"gHashTag/t27","schema":2,"searchText":"tri/vsim tri vsim how far each spec gets when its generated verilog is actually run. how far each spec gets when its generated verilog is actually run. the one arm that can catch a defect whose nature is that it compiles, and the one arm whose gate has had no targets since #2283 -- see #2987. funnel walk the corpus through `t27c icarus-simulate` and print the funnel.","sha256":"b33711b2a50bd614b706e77c813e7c31e71cd7f547489bf073c0de59c17de2fb","skills":[],"source":"cli/tri/src/vsim.rs","specPath":"specs/tools/tri/vsim.t27","summary":{"en":"How far each spec gets when its generated Verilog is actually RUN.","ru":"Как далеко доходит каждая спека, когда её сгенерированный Verilog действительно ЗАПУСКАЮТ."},"typecheckOk":true,"variant":"Commands::Vsim","whenToUse":"How far each spec gets when its generated Verilog is actually RUN. The one arm that can catch a defect whose nature is that it compiles, and the one arm whose gate has had no targets since #2283 -- see #2987.","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","actions":[],"agents":[],"args":[{"about":"Record `origin/master` as the base of a measurement starting now.","name":"--start"},{"about":"Report whether the recorded base is still the tip, and refuse if it is not.","name":"--check"},{"about":"The ref the measurement is against. Defaults to `origin/master`.","name":"--base"},{"about":"Run the controls and report, changing nothing.","name":"--self-check"}],"command":"tri window","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"Was the base you measured against still the tip when you reported?","ABOUT_SOURCE":"clap /// doc on Commands::Window (cli/tri/src/main.rs; module cli/tri/src/window.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--start: Record `origin/master` as the base of a measurement starting now.","--check: Report whether the recorded base is still the tip, and refuse if it is not.","--base: The ref the measurement is against. Defaults to `origin/master`.","--self-check: Run the controls and report, changing nothing."],"COMMAND":"tri window","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/window","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/window","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/window.rs","VARIANT":"Commands::Window","WHEN_TO_USE":"Was the base you measured against still the tip when you reported?","WITNESS":"source-parse"},"health":"ok","id":"tri/window","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/window.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_window","name":{"en":"tri window"},"qualifiedId":"gHashTag/t27:tri/window","repo":"gHashTag/t27","schema":2,"searchText":"tri/window tri window was the base you measured against still the tip when you reported? was the base you measured against still the tip when you reported?","sha256":"43202aabe15b2c06b1e0709f8e0ae6fc1cb13b2cb7e5a5adee77340a1bf03ff4","skills":[],"source":"cli/tri/src/window.rs","specPath":"specs/tools/tri/window.t27","summary":{"en":"Was the base you measured against still the tip when you reported?","ru":"Была ли база, относительно которой вы мерили, всё ещё вершиной, когда вы отчитывались?"},"typecheckOk":true,"variant":"Commands::Window","whenToUse":"Was the base you measured against still the tip when you reported?","witness":"source-parse"},{"aboutSource":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","actions":[],"agents":[],"args":[{"about":"Also measure disk usage. Off by default: `du` over 120 checkouts is slow, and the holdings answer is the one that decides anything.","name":"--size"},{"about":"Print every tree, not only those holding work or unreadable.","name":"--all"}],"command":"tri worktrees","discarded":0,"entry":"cli/tri/src/main.rs","family":"tri-cli","fields":{"ABOUT":"What the checkouts on this disk are holding. Deletes nothing.","ABOUT_SOURCE":"clap /// doc on Commands::Worktrees (cli/tri/src/main.rs; module cli/tri/src/trees.rs)","ACTIONS":[],"ACTIONS_ABOUT":[],"AGENTS":[],"AGENTS_NOTE":"No source binds an agent letter to this command: docs/agents/AGENTS_ALPHABET.md (rows, key files, phase cycle), specs/OWNERS.md and .claude/agents/*.md do not name it. creator.md and verifier.md name tri gen/test/verify but are not letter agents.","ARGS":["--size: Also measure disk usage. Off by default: `du` over 120 checkouts is slow, and the holdings answer is the one that decides anything.","--all: Print every tree, not only those holding work or unreadable."],"COMMAND":"tri worktrees","ENABLED":true,"ENTRY":"cli/tri/src/main.rs","FAMILY":"tri-cli","ID":"tri/worktrees","KIND":"tool","QUALIFIED_ID":"gHashTag/t27:tri/worktrees","REPO":"gHashTag/t27","SCHEMA":2,"SOURCE":"cli/tri/src/trees.rs","VARIANT":"Commands::Worktrees","WHEN_TO_USE":"What the checkouts on this disk are holding. Deletes nothing.","WITNESS":"source-parse"},"health":"ok","id":"tri/worktrees","inSpecCorpus":true,"links":{"config":null,"pinnedAt":"93727f733e23baf032d54505095777f16676d70b","source":"https://github.com/gHashTag/t27/blob/93727f733e23baf032d54505095777f16676d70b/cli/tri/src/trees.rs"},"messages":["no agent letter bound by a source"],"moduleName":"tool_tri_worktrees","name":{"en":"tri worktrees"},"qualifiedId":"gHashTag/t27:tri/worktrees","repo":"gHashTag/t27","schema":2,"searchText":"tri/worktrees tri worktrees what the checkouts on this disk are holding. deletes nothing. what the checkouts on this disk are holding. deletes nothing.","sha256":"1a01df4f397fe76552d278be19fd778995522fe45e9971a0ad8a017b723ca446","skills":[],"source":"cli/tri/src/trees.rs","specPath":"specs/tools/tri/worktrees.t27","summary":{"en":"What the checkouts on this disk are holding. Deletes nothing.","ru":"Что держат чекауты на этом диске. Ничего не удаляет."},"typecheckOk":true,"variant":"Commands::Worktrees","whenToUse":"What the checkouts on this disk are holding. Deletes nothing.","witness":"source-parse"}],"version":1} diff --git a/apps/website/qa/language-exceptions.json b/apps/website/qa/language-exceptions.json index 4e2b91c68c..4fedbab951 100644 --- a/apps/website/qa/language-exceptions.json +++ b/apps/website/qa/language-exceptions.json @@ -55,6 +55,19 @@ "06 — Structs, enums, and switch Lesson 6. Grouping fields, naming a fixed set of states, and choosing between them. . The important rule in this file: `switch` is an EXPRESSION here. The statement form parses without complaint and then discards the body of the", "07 — Tests, invariants and benches Lesson 7, and the reason this language exists rather than a header file. A spec carries its own claims: examples that must hold, properties that must always hold, and the operations worth measuring. All three are emitted into every target, so the same claim is checked in Zig, C and Rust alike.", "08 — Modules, visibility and arrays Lesson 8, the last one. How a spec names itself, what it exposes, how it pulls in another spec, and the array/index syntax used by every lookup table in the corpus. . After this, open specs/numeric/gf16.t27 -- it is a real spec built entirely", + "ADR-008 negative: a constrained parameter is a language feature, not a parser detail. Accepting the syntax now would commit the language to it.", + "ADR-008 negative: a declaration with no right-hand side at all.", + "ADR-008 negative: a parameterised value is not a type declaration.", + "ADR-008 negative: a trailing comma is not attested anywhere in the corpus. Accepting it would widen the grammar with no evidence behind it.", + "ADR-008 negative: a type expression in a parameter position. Parameters are names being bound, not types being used.", + "ADR-008 negative: an empty parameter list is not a parameterised type. Ambiguous with a plain type declaration, so refused rather than guessed.", + "ADR-008 negative: only `struct` is attested on the right-hand side (33 of 33). A parameterised enum is a separate decision.", + "ADR-008 positive: `pub` is optional, exactly as on the non-parameterised path.", + "ADR-008 positive: a parameterised and a plain struct declaration in one module. Guards against the generic path swallowing the declaration that follows it.", + "ADR-008 positive: one generic parameter, the attested majority form (22 of 33).", + "ADR-008 positive: the trailing semicolon is optional, matching the non-parameterised `const Name = struct { }` path. No new terminator is introduced.", + "ADR-008 positive: three generic parameters, attested once as `A, B, C`.", + "ADR-008 positive: two generic parameters, attested as `K, V` in 4 files.", "API Documenter - automatic API documentation generation for T27 modules Extracts function signatures, parameters, and generates comprehensive documentation", "Access Control - node authentication and authorization Simplified RBAC for mesh network security", "Adaptive Routing - dynamic path selection based on network conditions Beyond basic OLSR, adapts to congestion, latency, and failures", @@ -81,7 +94,7 @@ "Formula Discovery v1.0 — ULTRA ENGINE Specification", "Forward Pass Demo - VSA-based Neural Network Implements transformer-style forward pass using Vector Symbolic Architecture with multi-head attention, residual connections, and autoregressive generation Author: Dmitrii Vasilev", "Generated from FORMULA_TABLE_v06.md and FORMULA_TABLE_v07.md SSOT for Trinity formula discovery", - "GoldenFloat Cross-Language Conformance All languages must produce identical bits for identical inputs. Reference constant: GF32(phi) = 0x3FCF1BBD", + "GoldenFloat Cross-Language Conformance All languages must produce identical bits for identical inputs. Reference constant: GF32(φ) = 0x3FCF1BBD", "HELLO beacon format for mesh neighbor discovery Port from trios-mesh/src/discovery.rs Fixed 3-neighbor heard list (no Vec, arrays await t27#1258)", "Hardware validation - bit-accurate simulation and board testing Tests hardware verification procedures", "Health Dashboard - comprehensive health monitoring Enables real-time network health assessment and reporting", @@ -113,6 +126,12 @@ "Multi-device account and trusted-device linking policy. Passkey ceremonies and storage adapters remain platform responsibilities. phi^2 + phi^-2 = 3", "Multi-path routing for reliable mesh networking Research: Johnson & Maltz (1996) - multi-path increases reliability by 40%", "Multipath Routing - simultaneous multi-path data transmission Enables improved reliability and throughput through path diversity", + "NEGATIVE fixture: a latency bound, not damage. The first regex reported 230 of these as damaged, which made 429 a metric of the regex rather than of the corpus. tri damage must report zero here.", + "NEGATIVE fixture: a legal raw string whose body contains a bracket and an odd number of quotes. The odd-quote signal must not fire inside a raw string.", + "NEGATIVE fixture: an array literal opening a multi-line value. 10 false positives came from the opening line being read as a damaged type side.", + "NEGATIVE fixture: function signatures. 6 false positives came from these.", + "NEGATIVE fixture: match arms. 17 false positives came from these.", + "NEGATIVE fixture: the intact convention itself, including the slice and optional-slice forms that the damaged classes are corruptions of.", "Native HTML report rendering. Every data value is escaped before insertion; HTML/CSS below are presentation templates, not embedded domain algorithms.", "Native JSON-RPC client domain. Include json.h and json_writer.h first. Caller-owned live, nonoverlapping buffers; no allocation or network here. Scratch tokens/arena and partial output may change on failure. Reply is committed only after validation. IDs are 32 lowercase hexadecimal bytes.", "Native TensorPack CLI JSON contracts, independent of file/terminal services. Workspace, value buffers and output JSON are caller-owned scratch. Callers publish output only after success; no routine allocates or opens a path.", @@ -198,28 +217,34 @@ "VSA Cosine Similarity — TTT Dogfood Phase 2 Cosine similarity between two ternary vectors Formula: (a · b) / (||a|| * ||b||) Input: t0 = vector_a_ptr, t1 = vector_b_ptr, t2 = length Output: t0 = similarity (f64)", "Video bridge protocol: phone ↔ mesh node video transport. Defines frame format for H.264 NAL units split into mesh-sized fragments. Phone sends raw H.264 Annex-B NAL units via UDP to mesh node. Node fragments into VSTREAM packets for mesh transport. Receiver reassembles and sends back to phone via UDP. phi^2 + phi^-2 = 3", "W-TinyLFU Cache — TTT Dogfood Phase 3 Window-TinyLFU admission Test case: cache_w_tiny_lfu", - "ast.t27 -- Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler", "ast.t27 — Abstract Syntax Tree for TRI-27 Assembly This file defines the AST structure used by the t27 compiler", "audio_overview.t27 — Bilingual Audio Overview for NotebookLM Ring 091 — API-only multilingual enrichment", "avs_controller_48.t27 — 48-pin AVS Controller Adaptive voltage scaling controller for 48-pin configuration", "avs_controller_96.t27 — 96-pin AVS Controller Adaptive voltage scaling controller for 96-pin configuration", "avs_reconf.t27 — AVS Reconfiguration Module Dynamic AVS voltage/frequency reconfiguration support", "base/debounce.t27 — φ-Structured Debouncing Trinity S³AI — Rate Limiting and Debouncing", - "bus.t27 -- inter-region messaging contract (spec-first) Message shapes and routing rules expand with region specs.", + "bnf1024.t27 -- BNF1024: Binary Network Float, 1024-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bnf128.t27 -- BNF128: Binary Network Float, 128-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bnf16.t27 -- BNF16: Binary Network Float, 16-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bnf256.t27 -- BNF256: Binary Network Float, 256-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bnf32.t27 -- BNF32: Binary Network Float, 32-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bnf512.t27 -- BNF512: Binary Network Float, 512-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bnf64.t27 -- BNF64: Binary Network Float, 64-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bnf8.t27 -- BNF8: Binary Network Float, 8-bit class. The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in exactly one thing: the radix in which the exponent field is encoded. BNF uses bits, TNF uses balanced-ternary trits. Everything else -- the width rule 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is identical.", + "bootstrap/src/codegen_python.rs Python Code Generator for CLARA (TA2 Deliverable) Generates Python code from .t27 specifications for PyTorch integration NOTE: This is a specification stub - full implementation is P1 priority ─────────────────────────────────────────────────────────────────────────────────────────────", + "bus.t27 — inter-region messaging contract (spec-first) Message shapes and routing rules expand with region specs.", "bus/pubsub.t27 — Publish/Subscribe Patterns Pub/sub interface for event-driven communication", "bus/schema.t27 — Event Type Definitions Core event types and structures for the event bus", "cloud/railway_deploy.t27 — Autonomous Railway Deployment", - "codegen.t27 -- Code Generator for Zig Generates Zig 0.15 code from t27 AST", - "codegen.t27 0 Code Generator for Verilog Generates synthesizable Verilog from t27 AST", "codegen.t27 — Code Generator for Verilog Generates synthesizable Verilog from t27 AST", "codegen.t27 — Code Generator for Zig Generates Zig 0.15 code from t27 AST", - "cognitive_loop.t27 -- sense -> evaluate -> decide -> act -> consolidate (spec-first) Phase timing contract lives in phi_timing.t27; this module holds loop identity constants.", - "commands.t27 -- CLI Command Specifications Individual command specifications for tri CLI", - "compiler/codegen/c/codegen.t27 -- C Code Generator Specification Emit C code from t27 AST", + "cognitive_loop.t27 — sense → evaluate → decide → act → consolidate (spec-first) Phase timing contract lives in phi_timing.t27; this module holds loop identity constants.", + "commands.t27 — CLI Command Specifications Individual command specifications for tri CLI", + "compiler/codegen/c/codegen.t27 — C Code Generator Specification Emit C code from t27 AST", "compiler/mod_structure.t27 — Module Structure and Ring Validation Trinity S³AI — Spec-First Architecture", - "compiler/parser/lexer.t27 -- Lexer for TRI-27 Assembly Tokenizes source code into Token stream for parser", - "compiler/runtime/runtime.t27 -- T27 Runtime Specification Runtime environment for executing t27 programs", - "comprehensive_suite.t27 -- documents the repository integration suite Executed by: t27c suite (or tri test). No shell runners under tests/.", + "compiler/parser/lexer.t27 — Lexer for TRI-27 Assembly Tokenizes source code into Token stream for parser", + "compiler/runtime/runtime.t27 — T27 Runtime Specification Runtime environment for executing t27 programs", + "comprehensive_suite.t27 a documents the repository integration suite Executed by: t27c suite (or tri test). No shell runners under tests/.", "config/load.t27 — Config Load/Save Specification Configuration file I/O, merging, validation", "config/migrate.t27 — Config Migration Specification Version detection, upgrade, compatibility handling", "config/paths.t27 — Config Paths Specification Path resolution, directory creation, validation", @@ -228,17 +253,36 @@ "fbb_active_path.t27 — FPGA Feedback Bridge Active Path Active path management for FPGA feedback bridge", "fp8_e4m3.t27 — FP8 E4M3 8-bit Floating Point 8-bit float with 4 exponent, 3 mantissa bits (no implicit leading bit) OCP FP8 format optimized for neural network training Range: ~-240 to ~240, precision: ~6-7 significant bits", "fp8_e5m2.t27 — FP8 E5M2 8-bit Floating Point 8-bit float with 5 exponent, 2 mantissa bits (with implicit leading bit) OCP FP8 format optimized for inference and wide dynamic range Range: ~-57k to ~57k, precision: ~3-4 significant bits", - "fpga_emission.t27 0 FPGA Module Verilog Emission Generates FPGA-specific Verilog modules from .t27 specs", - "gen.t27 -- Code Generation with TDD Validation Commands for generating code from t27 specs with TDD enforcement", + "fpga_emission.t27 — FPGA Module Verilog Emission Generates FPGA-specific Verilog modules from .t27 specs", + "gen.t27 — Code Generation with TDD Validation Commands for generating code from t27 specs with TDD enforcement", + "gf10.t27 -- GoldenFloat10 Encode/Decode GF10: 10-bit floating point with 1 sign + 3 exponent + 6 mantissa Bit layout: [S(1) E(3) M(6)] = [9:9][8:6][5:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).", + "gf1024.t27 -- GoldenFloat1024 Encode/Decode GF1024: 1024-bit floating point with 1 sign + 391 exponent + 632 mantissa Bit layout: [S(1) E(391) M(632)] = [1023:1023][1022:632][631:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (extrapolated; no RTL, no validated arithmetic).", + "gf128.t27 -- GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 49 exponent + 78 mantissa Bit layout: [S(1) E(49) M(78)] = [127:127][126:78][77:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).", "gf128.t27 — GoldenFloat128 Encode/Decode GF128: 128-bit floating point with 1 sign + 28 exponent + 99 mantissa Bit layout: [S(1) E(28) M(99)] = [127:127][126:99][98:0] Extended range format for high-precision scientific computing", - "gf16.t27 -- GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]", + "gf14.t27 -- GoldenFloat14 Encode/Decode GF14: 14-bit floating point with 1 sign + 5 exponent + 8 mantissa Bit layout: [S(1) E(5) M(8)] = [13:13][12:8][7:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).", "gf16.t27 0 GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0] 12 + 1/34 = 3 | TRINITY", "gf16.t27 — GoldenFloat16 Encode/Decode GF16: 16-bit floating point with 1 sign + 6 exponent + 9 mantissa Bit layout: [S(1) E(6) M(9)] = [15:15][14:9][8:0]", "gf16_to_posit16.t27 — GF16 to Posit16 Converter GoldenFloat16 to Posit type 16 (unum 1.0) format conversion", + "gf256.t27 -- GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 97 exponent + 158 mantissa Bit layout: [S(1) E(97) M(158)] = [255:255][254:158][157:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).", "gf256.t27 — GoldenFloat256 Encode/Decode GF256: 256-bit floating point with 1 sign + 32 exponent + 223 mantissa Bit layout: [S(1) E(32) M(223)] = [255:255][254:223][222:0] Maximum precision format for scientific computing and simulation", "gf32_to_fp32.t27 — GF32 to FP32 Converter GoldenFloat32 to IEEE 754 binary32 format conversion", + "gf48.t27 -- GoldenFloat48 Encode/Decode GF48: 48-bit floating point with 1 sign + 18 exponent + 29 mantissa Bit layout: [S(1) E(18) M(29)] = [47:47][46:29][28:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).", + "gf512.t27 -- GoldenFloat512 Encode/Decode GF512: 512-bit floating point with 1 sign + 195 exponent + 316 mantissa Bit layout: [S(1) E(195) M(316)] = [511:511][510:316][315:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (extrapolated; no RTL, no validated arithmetic).", + "gf6.t27 -- GoldenFloat6 Encode/Decode GF6: 6-bit floating point with 1 sign + 2 exponent + 3 mantissa Bit layout: [S(1) E(2) M(3)] = [5:5][4:3][2:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (closed-form rule, no RTL yet on this repo).", "gf64.t27 — GoldenFloat64 Encode/Decode GF64: 64-bit floating point with 1 sign + 18 exponent + 45 mantissa Bit layout: [S(1) E(18) M(45)] = [63:63][62:45][44:0]", - "git.t27 -- Git Integration with Tri Skill Workflow (ADR-002) Commands for git operations with skill validation and issue binding", + "gf96.t27 -- GoldenFloat96 Encode/Decode GF96: 96-bit floating point with 1 sign + 36 exponent + 59 mantissa Bit layout: [S(1) E(36) M(59)] = [95:95][94:59][58:0] Generated by the closed-form rule e = round((N-1)/phi^2), m = N-1-e. STATUS: Conj (spec-only; no RTL on this repo's path).", + "gft1024.t27 -- GF-T1024: the golden-ratio ternary ladder, 1024-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft128.t27 -- GF-T128: the golden-ratio ternary ladder, 128-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft16.t27 -- GF-T16: the golden-ratio ternary ladder, 16-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft256.t27 -- GF-T256: the golden-ratio ternary ladder, 256-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft32.t27 -- GF-T32: the golden-ratio ternary ladder, 32-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft4.t27 -- GF-T4: the golden-ratio ternary ladder, 4-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft512.t27 -- GF-T512: the golden-ratio ternary ladder, 512-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft64.t27 -- GF-T64: the golden-ratio ternary ladder, 64-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gft8.t27 -- GF-T8: the golden-ratio ternary ladder, 8-bit class. TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and TNF are derived from the theorems, as the optimisation result for ternary networks. They are not renamings of each other and they answer different questions. GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden", + "gfternary.t27 0 GFTernary Format Specification 2-bit golden-ratio ternary: representable values { -phi, 0, +phi } The phi-scaled limit of the ternary-weight family: GFTernary = phi * {-1,0,+1} (a ternary-weight quantizer, cf. TWN / BitNet, with the scale fixed at phi).", + "git.t27 — Git Integration with Tri Skill Workflow (ADR-002) Commands for git operations with skill validation and issue binding", + "golden_sieve.t27 0 The Golden Sieve -- which weight alphabets a ternary datapath may use, derived from measured theorems rather than chosen. Five predicates. A candidate alphabet is admissible only if it satisfies all five. Each cites the measurement that established it; none is an opinion. S1 PACKING |A| = 3^k T367 only powers of three waste no trits S2 CEILING k <= 2 T369 27 levels measured +0.15 / -0.13 pp,", "hello_world.t27 -- start here The smallest spec that still shows every part of the language: constants, a type, functions, a test and an invariant. Read it top to bottom, then watch it become tokens, an AST, and five different target languages.", "holo_mux_x4.t27 — Sacred Opcode 0xE6: Holographic 4x Multiplexer Hardware multiplexer for holographic data paths with 4-way select", "http.t27 — HTTP Server Specification HTTP listener, request/response handling, middleware", @@ -255,11 +299,9 @@ "mdns.t27 — mDNS Specification Multicast DNS service discovery, announcement, resolution", "nf4.t27 — NormalFloat4 Quantization 4-bit quantization based on normalized distribution Values: {-1, -0.667, -0.333, 0, 0.333, 0.667, 1, 0} (8 levels + zero)", "null_pe.t27 — Sacred Opcode 0xEA: Null Processing Element Hardware null PE (processing element) for sparse acceleration", - "ops.t27 -- Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison", "ops.t27 — Trit Operations for t27 Language Trit arithmetic: multiply, add, carry, comparison", - "parser.t27 -- Parser for TRI-27 Assembly Builds AST from tokens produced by lexer", "parser.t27 — Parser for TRI-27 Assembly Builds AST from tokens produced by lexer", - "phi_timing.t27 -- phi-structured cognitive cycle timing (spec-first) Phase duration ratios follow INV-1; integer ms sum may differ slightly from 3*base_ms.", + "phi_timing.t27 — phi-structured cognitive cycle timing (spec-first) Phase duration ratios follow INV-1; integer ms sum may differ slightly from 3*base_ms.", "posit16.t27 — Posit Type 16 (Type-2 with ES=1, unum 1.0 format) 16-bit posit format with 1 exponent bit (ES=1) and 0 useed bits Alternative name: posit<16,1> Range: ~-3.8e4 to ~3.8e4, precision: ~1-2 significant bits at extremes, ~10 at 1.0", "provider/adapters.t27 — HTTP Adapter Specifications HTTP request/response adapters for AI provider APIs", "provider/schema.t27 — Provider Message Types AI provider message structures and model types", @@ -267,18 +309,18 @@ "provider/transform.t27 — Cross-Provider Message Transformations Message format transformations between different AI providers", "purkinje_thermal_gate.t27 — Purkinje Thermal Gate Thermally-gated activation inspired by Purkinje neural dynamics", "queen/task_analysis.t27 — Task Priority Analysis for Queen Trinity S³AI — Cognitive Task Orchestration", - "registry.t27 -- Skill Registry JSON Structure (ADR-002) Defines the structure for tri skill workflow registry", + "registry.t27 — Skill Registry JSON Structure (ADR-002) Defines the structure for tri skill workflow registry", "relay_observer.t27 0 WebSocket Relay Observer for BrowserOS A2A Integration Ring 32 — Cloud Orchestration 12 + 1/34 = 3 | TRINITY", "router.t27 — HTTP Router Specification URL routing, pattern matching, parameter extraction", - "runtime.t27 -- Zig Runtime Code Generation Generates Zig backend from compiler/runtime/*.t27 specifications", "runtime.t27 — Bootstrap Runtime for TRI-27 Assembly Minimal runtime for executing t27 programs", + "runtime.t27 — Zig Runtime Code Generation Generates Zig backend from compiler/runtime/*.t27 specifications", "runtime/execute.t27 — Runtime Execution Specification Task execution, promises, cancellation, timeouts", "runtime/instance.t27 — Runtime Instance Specification Instance registration, lookup, lifecycle management", "runtime/process.t27 — Runtime Process Specification Process spawning, termination, piping, PTY", - "seed.t27 -- Minimal Golden Seed for E2E CI (#150)", + "seed.t27 — Minimal Golden Seed for E2E CI (#150)", "sparse_mask.t27 — Sacred Opcode 0xE8: Sparse Mask (Sparse Skip 2) Hardware for generating and applying sparse tensor masks", "sparse_skip.t27 — Sacred Opcode 0xE1: Sparse Skip Operation Hardware acceleration for sparse tensor operations with zero-skipping", - "spec.t27 -- Spec Management Commands Commands for creating and managing t27 specs with TDD enforcement", + "spec.t27 — Spec Management Commands Commands for creating and managing t27 specs with TDD enforcement", "spec: AspSolver Answer Set Programming solver for neuro-symbolic reasoning", "spec: CoaPlanning Course of Action (COA) planning for neuro-symbolic reasoning", "spec: Composition ML+AR composition patterns for neuro-symbolic hybrid reasoning", @@ -291,25 +333,142 @@ "specs/account/auth.t27 Account Authentication Operations", "specs/account/repo.t27 Account Repository Operations", "specs/account/schema.t27 Account Types Specification", + "specs/agents/a.t27 -- agent t27/A, letter A of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/A). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent A - Alpha (Architecture)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/b.t27 -- agent t27/B, letter B of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/B). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent B - Beta (Build)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/c.t27 -- agent t27/C, letter C of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/C). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent C - Gamma (Compiler Core)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/d.t27 -- agent t27/D, letter D of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/D). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent D - Delta (De-Zigfication)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/e.t27 -- agent t27/E, letter E of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/E). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent E - Epsilon (Experience)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/f.t27 -- agent t27/F, letter F of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/F). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent F - Phi (Formal Conformance)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/g.t27 -- agent t27/G, letter G of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/G). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent G - Gamma (Graph)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/h.t27 -- agent t27/H, letter H of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/H). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent H - Eta (HSLM)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/i.t27 -- agent t27/I, letter I of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/I). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent I - Iota (ISA)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/j.t27 -- agent t27/J, letter J of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/J). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent J - Iota-extended (Jobs)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/k.t27 -- agent t27/K, letter K of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/K). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent K - Kappa (Kernel)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/l.t27 -- agent t27/L, letter L of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/L). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent L - Lambda (Language)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/m.t27 -- agent t27/M, letter M of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/M). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent M - Mu (Metrics)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/n.t27 -- agent t27/N, letter N of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/N). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent N - Nu (Numeric)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/o.t27 -- agent t27/O, letter O of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/O). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent O - Omicron (Orchestration)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/p.t27 -- agent t27/P, letter P of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/P). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent P - Pi (Physics)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/q.t27 -- agent t27/Q, letter Q of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Q). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Q - Theta (Queue)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/r.t27 -- agent t27/R, letter R of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/R). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent R - Rho (Runtime)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/s.t27 -- agent t27/S, letter S of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/S). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent S - Sigma (Specs)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/t.t27 -- agent t27/T, letter T of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/T). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent T - Tau (TRINITY Queen)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/ti.t27 -- agent t27/TI, letter TI of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/TI). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent 27th - Ti (Security)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/u.t27 -- agent t27/U, letter U of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/U). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent U - Upsilon (Universe)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/v.t27 -- agent t27/V, letter V of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/V). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent V - Vau (Verdict)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/w.t27 -- agent t27/W, letter W of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/W). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent W - Double-Vav (Workflow)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/x.t27 -- agent t27/X, letter X of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/X). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent X - Chi (External)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/y.t27 -- agent t27/Y, letter Y of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Y). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Y - Psi (Yield/DePIN)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/agents/z.t27 -- agent t27/Z, letter Z of the 27-agent alphabet Source of truth for the agent card on t27.ai (#/agents?agent=t27/Z). Transcribed from docs/agents/AGENTS_ALPHABET.md (v3.0): the FULL TABLE row and the \"Agent Z - Zeta (Zero-Touch)\" schema section. The agent is bound to the others by SOUL.md, AGENTS.md and the experience log; the JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/api/c_abi.t27 -- the C ABI of libtrinity-vsa as gHashTag/trinity src/c_api.zig exports it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's host boundary is one file, src/c_api.zig at 976df517, built as the static and shared libraries trinity-vsa and described by a hand-written header. This file states the twenty-two exported functions with their C prototypes, who owns what crosses the boundary, what each returns on a NULL handle, the error channel (there is none) and the layout that is and is not ABI-stable; the scalar rules are", "specs/auth/config.t27 Authentication Configuration Storage", - "specs/compiler/parser.t27 T27 Parser Specification -- Self-hosting compiler core This module defines the complete recursive descent parser for the T27 language. It is a 1:1 port of bootstrap/src/compiler.rs Parser to t27 spec format.", + "specs/automation/agent-provider-chain.t27 -- the chain of model providers behind the vibee-render agent (chat, seller sweep, CRM duet) and its RESERVE route. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/provider.ts (CATALOG, providerOrder, allProviders, diagnose) and provider-choice.ts (KNOWN_PROVIDERS, the owner's pick from the bot). WHY a reserve route: three duet runs on 2026-09-13 (duet-mtzyg2t6, duet-mu00klri and the", + "specs/automation/crm-client-ownership.t27 -- WHO owns a client profile, and money in the stage the client workspace shows. Closes the two gaps crm-client-workspace.t27 (#3604) left open and that were seen live on 2026-09-13. Host: 999-multibots-telegraf apps/vibee-editor/render -- crm-client-setup-tool.ts (table crm_client_profiles, ensureProfileTable, setupClient, clientProfileFor, tool crm_client_profile), crm-client-workspace-tools.ts (tool crm_clients), crm-touch-tools.ts", + "specs/automation/crm-client-workspace.t27 -- one CRM workspace PER CLIENT: a dashboard and a conversation thread of the seller ABOUT one client, instead of one thread and one flat list for everybody. Written after the owner said (2026-09-13) that every client's chat lands in the same place. Host: 999-multibots-telegraf apps/vibee-editor -- render: agent_messages.thread (conversation.ts), body.client / ?client= on the four /api/agent routes (routes.ts), clientContextBlock in", + "specs/automation/crm-duet.t27 -- a REAL Telegram dialogue between two agents: the owner's seller agent (from @t27_dev, 144022504) sells every function of the bot to a connected seller acting as a new buyer (@playom, 435572800, answered by a persona model from HER session), and the content offered is for HER real game -- Leela Chakra (@leela_chakra_ai_bot, mini app t27.ai/leela, 72 planes, entry with a six, ruleset classic). Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-duet-tool.ts -- owner-only", + "specs/automation/crm-lead-magnet.t27 -- the CRM lead magnet: a person's own Telegram photo redrawn as a vertical 9:16 story portrait and given away free, to show the AI assistant doing something for THEM before anything is sold. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/crm-deliver-tool.ts (the tool crm_deliver_photo, gift mode by default), src/kie-image.ts (editInputFor), src/agent/tools.ts (leadAvatarUrl: owner session first, bot API second),", + "specs/automation/crm-sellers.t27 -- WHO the CRM works for: every person with a connected Telegram account (a row in tg_sessions), not the one platform owner. Host: 999-multibots-telegraf apps/vibee-editor/render/src/agent/telegram-tools.ts (requireSeller: the gate the CRM tools ask), src/agent/crm-playbook.ts (the seller's playbook is shown to every seller), src/agent/crm-offer-tool.ts (an offer to yourself is refused against the CALLER, not the owner), src/agent/crm-sellers-tool.ts (the tool", + "specs/automation/inngest-probe-suite.t27 -- safe probe of every served Inngest function of 999-multibots-telegraf, started by the admin command /inngest_probe in the bot. Host: 999-multibots-telegraf src/inngest_app/probe/probeSuite.ts (the logic), src/inngest_app/probe/inngestProbeClient.ts (the one GraphQL mutation), src/commands/inngestProbeCommand.ts (the Telegram command). The per-function expectation lives in the manifest (probe_expect) and on each", + "specs/automation/inngest-queen-scheduler.t27 -- every cron and every skill card of this repository (specs/crons, specs/skills) held as one Inngest app that the Queen's runtime serves. Host: gHashTag/BrowserOS trios/agent-server apps/server/src/inngest/ (the app), mounted on the same Hono server that serves /queen/*; the Inngest server is the self-hosted `inngest` of Railway project 999 (private address INNGEST_BASE_URL), reachable to people and bees through the MCP face described by specs/tools/mcp/inngest-dev.t27.", + "specs/automation/leela-agent-link.t27 -- HOW a connected seller is linked to her editorial agent in the Leela bot (@leela_chakra_ai_bot), and WHY the agent answered nobody before. Host (the agent side): gHashTag/leela apps/bot/src/editorial.ts -- commands /agent_claim, /agent_claims, /agent_approve <32-hex id>, /agent_revoke, /agent; owners come from LEELA_AGENT_OWNERS (else LEELA_STARS_OPERATORS); the target username is LEELA_AGENT_USERNAME (default \"playom\"); store editorial-store.ts on the LEELA_DB volume.", + "specs/catalog/discovery.t27 -- how the t27.ai catalog finds the repositories that write .t27 Source of truth for scripts/discover-t27-worlds.mjs and .github/workflows/t27-world-scan.yml (gHashTag/trinity, apps/website). The scan reads this file through the vendored compiler (public/t27/t27_compiler.wasm), checks the constant schema and evaluates the test blocks below before it touches GitHub; nothing below is parsed with a regex and no owner, limit or exclusion is typed twice. ASCII only (L3), English only (LANG-EN).", + "specs/compiler/parser.t27 T27 Parser Specification — Self-hosting compiler core This module defines the complete recursive descent parser for the T27 language. It is a 1:1 port of bootstrap/src/compiler.rs Parser to t27 spec format.", "specs/corona/anchor.t27 TG-TRIAD-X cross-die anchor (carried forward unchanged from Phi/Euler/Gamma).", "specs/corona/corona_oracle.t27 TRI-1 Corona -- Format Conformance Oracle (top-level SSOT)", "specs/corona/d2d_routing.t27 Die-to-Die routing: Corona forwards format queries to Gamma for formats Gamma natively implements (no duplication).", "specs/corona/protocol.t27 Corona oracle protocol: 8-bit serial CMD/DATA on TinyTapeout pins.", "specs/corona/rom_layout.t27 Corona ROM bit-layout: 80 bits per format record, 80 records total.", + "specs/crons/999-multibots-telegraf-agent-autopilot-L1118.t27 -- cron timer/999-multibots-telegraf/agent-autopilot-L1118 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/agent-autopilot-L1118). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/scripts/agent-autopilot.ts#L1118. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-bot-owner-billing-L474.t27 -- cron timer/999-multibots-telegraf/bot-owner-billing-L474 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/bot-owner-billing-L474). The schedule was read from 999-multibots-telegraf:src/services/bot-owner-billing.ts#L474. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-check-stuck-trainings.t27 -- cron inngest/999-multibots-telegraf/check-stuck-trainings Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/check-stuck-trainings). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/training/checkStuckTrainings.ts#L53. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-ci.t27 -- cron github-actions/999-multibots-telegraf/ci Source of truth for the job card on t27.ai (#/crons?cron=github-actions/999-multibots-telegraf/ci). The schedule was read from 999-multibots-telegraf:.github/workflows/ci.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-crmProactive-L375.t27 -- cron timer/999-multibots-telegraf/crmProactive-L375 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/crmProactive-L375). The schedule was read from 999-multibots-telegraf:src/services/crmProactive.ts#L375. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-daily-sales-advisor.t27 -- cron inngest/999-multibots-telegraf/daily-sales-advisor Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/daily-sales-advisor). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L56. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-generate-jobs-L164.t27 -- cron timer/999-multibots-telegraf/generate-jobs-L164 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/generate-jobs-L164). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/generate-jobs.ts#L164. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-health-check.t27 -- cron inngest/999-multibots-telegraf/health-check Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/health-check). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L243. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-log-monitor.t27 -- cron inngest/999-multibots-telegraf/log-monitor Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/log-monitor). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L360. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-notificationHandler-L318.t27 -- cron timer/999-multibots-telegraf/notificationHandler-L318 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/notificationHandler-L318). The schedule was read from 999-multibots-telegraf:src/handlers/notificationHandler.ts#L318. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-notificationHandler-L324.t27 -- cron timer/999-multibots-telegraf/notificationHandler-L324 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/notificationHandler-L324). The schedule was read from 999-multibots-telegraf:src/handlers/notificationHandler.ts#L324. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-periodic-webhook-health-check.t27 -- cron inngest/999-multibots-telegraf/periodic-webhook-health-check Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/periodic-webhook-health-check). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/webhookHealthGuard.ts#L218. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-production-monitor-L80.t27 -- cron timer/999-multibots-telegraf/production-monitor-L80 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/production-monitor-L80). The schedule was read from 999-multibots-telegraf:src/utils/production-monitor.ts#L80. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-provider-health-monitor-L344.t27 -- cron timer/999-multibots-telegraf/provider-health-monitor-L344 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/provider-health-monitor-L344). The schedule was read from 999-multibots-telegraf:src/services/provider-health-monitor.ts#L344. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-render-server-L10845.t27 -- cron timer/999-multibots-telegraf/render-server-L10845 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L10845). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L10845. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-render-server-L2301.t27 -- cron timer/999-multibots-telegraf/render-server-L2301 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L2301). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L2301. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-render-server-L2325.t27 -- cron timer/999-multibots-telegraf/render-server-L2325 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L2325). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L2325. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-render-server-L919.t27 -- cron timer/999-multibots-telegraf/render-server-L919 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/render-server-L919). The schedule was read from 999-multibots-telegraf:apps/vibee-editor/render/render-server.ts#L919. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-security.t27 -- cron github-actions/999-multibots-telegraf/security Source of truth for the job card on t27.ai (#/crons?cron=github-actions/999-multibots-telegraf/security). The schedule was read from 999-multibots-telegraf:.github/workflows/security.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-skill-detector.t27 -- cron inngest/999-multibots-telegraf/skill-detector Source of truth for the job card on t27.ai (#/crons?cron=inngest/999-multibots-telegraf/skill-detector). The schedule was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/skillDetector.ts#L32. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-taskCache-L27.t27 -- cron timer/999-multibots-telegraf/taskCache-L27 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/taskCache-L27). The schedule was read from 999-multibots-telegraf:src/modules/videoGenerator/taskCache.ts#L27. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/999-multibots-telegraf-video-task-store-L156.t27 -- cron timer/999-multibots-telegraf/video-task-store-L156 Source of truth for the job card on t27.ai (#/crons?cron=timer/999-multibots-telegraf/video-task-store-L156). The schedule was read from 999-multibots-telegraf:src/services/video-task-store.ts#L156. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/railway-jobsearch-cron.t27 -- cron railway-cron/999/jobsearch-cron Source of truth for the job card on t27.ai (#/crons?cron=railway-cron/999/jobsearch-cron). The schedule lives in the Railway dashboard of project 999 and is not in any checkout. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/t27-formal-mutation.t27 -- cron github-actions/t27/formal-mutation Source of truth for the job card on t27.ai (#/crons?cron=github-actions/t27/formal-mutation). The schedule was read from t27:.github/workflows/formal-mutation.yml#L25. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/t27-pr-dashboard.t27 -- cron github-actions/t27/pr-dashboard Source of truth for the job card on t27.ai (#/crons?cron=github-actions/t27/pr-dashboard). The schedule was read from t27:.github/workflows/pr-dashboard.yml#L6. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-agent-cron-cleanup.t27 -- cron github-actions/trinity/agent-cron-cleanup Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/agent-cron-cleanup). The schedule was read from trinity:.github/workflows/agent-cron-cleanup.yml#L4. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-agent-queue-drain.t27 -- cron github-actions/trinity/agent-queue-drain Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/agent-queue-drain). The schedule was read from trinity:.github/workflows/agent-queue-drain.yml#L4. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-brain-ci.t27 -- cron github-actions/trinity/brain-ci Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/brain-ci). The schedule was read from trinity:.github/workflows/brain-ci.yml#L11. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-codegen.t27 -- cron github-actions/trinity/codegen Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/codegen). The schedule was read from trinity:.github/workflows/codegen.yml#L10. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-discover-callers.t27 -- cron github-actions/trinity/discover-callers Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/discover-callers). The schedule was read from trinity:.github/workflows/discover-callers.yml#L16. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-pages-health-check.t27 -- cron github-actions/trinity/pages-health-check Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/pages-health-check). The schedule was read from trinity:.github/workflows/pages-health-check.yml#L17. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-signal-health-self.t27 -- cron github-actions/trinity/signal-health-self Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/signal-health-self). The schedule was read from trinity:.github/workflows/signal-health-self.yml#L17. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/crons/trinity-site-live-gate.t27 -- cron github-actions/trinity/site-live-gate Source of truth for the job card on t27.ai (#/crons?cron=github-actions/trinity/site-live-gate). The schedule was read from trinity:.github/workflows/site-live-gate.yml#L33. A cron CONTROLS skills: RUNS names the skill IDs it launches. It is empty unless the source evidently invokes one -- nothing here is inferred from a name.", + "specs/docs/chapters/alphabet.t27 -- chapter 4 of the system documentation, docs/alphabet Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/docs/chapters/evidence.t27 -- chapter 7 of the system documentation, docs/evidence Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/docs/chapters/layers.t27 -- chapter 3 of the system documentation, docs/layers Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/docs/chapters/project.t27 -- chapter 1 of the system documentation, docs/project Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/docs/chapters/queen.t27 -- chapter 5 of the system documentation, docs/queen Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/docs/chapters/rules.t27 -- chapter 2 of the system documentation, docs/rules Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/docs/chapters/tooling.t27 -- chapter 6 of the system documentation, docs/tooling Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", + "specs/docs/system.t27 -- the system documentation of t27 / Trinity as one declared document Source of truth for the system documentation on t27.ai (#/docs). The English prose lives in the Markdown file named by BODY_EN (LANG-EN: canonical prose is English); this module declares the chapter's identity, its sections, its sources and the figure and table the site renders from data. The JSON the site serves is generated from this file by the real compiler, nothing below is parsed with a regex. ASCII only (L3).", "specs/file/schema.t27 File Types Specification", "specs/file/watcher.t27 File Watcher Operations", + "specs/functions/analytics-sales-advise.t27 -- function analytics-sales-advise (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=analytics-sales-advise). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/dailySalesAdvisor.ts#L54 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/analytics-skills-detect.t27 -- function analytics-skills-detect (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=analytics-skills-detect). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/analytics/skillDetector.ts#L30 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/broadcast-message-send.t27 -- function broadcast-message-send (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=broadcast-message-send). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/broadcast/broadcastMessage.ts#L22 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/content-detailed-script-generate.t27 -- function content-detailed-script-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-detailed-script-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateDetailedScript.ts#L191 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/content-scenario-clips-generate.t27 -- function content-scenario-clips-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-scenario-clips-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateScenarioClips.ts#L221 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/content-scripts-generate.t27 -- function content-scripts-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=content-scripts-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/generateContentScripts.ts#L44 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/instagram-competitors-find.t27 -- function instagram-competitors-find (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-competitors-find). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/findCompetitors.ts#L134 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/instagram-reels-analyze.t27 -- function instagram-reels-analyze (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-reels-analyze). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/analyzeCompetitorReels.ts#L211 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/instagram-top-content-extract.t27 -- function instagram-top-content-extract (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=instagram-top-content-extract). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/content/extractTopContent.ts#L33 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/monitoring-error-report.t27 -- function monitoring-error-report (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-error-report). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L175 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/monitoring-health-check.t27 -- function monitoring-health-check (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-health-check). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/criticalErrorMonitor.ts#L235 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/monitoring-logs-analyze.t27 -- function monitoring-logs-analyze (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-logs-analyze). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L352 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/monitoring-logs-trigger.t27 -- function monitoring-logs-trigger (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=monitoring-logs-trigger). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/monitoring/logMonitor.ts#L408 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/morph-images-generate.t27 -- function morph-images-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=morph-images-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/morphImages.ts#L30 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/neuro-image-generate.t27 -- function neuro-image-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=neuro-image-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/neuroImageGeneration.ts#L56 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/payment-ai-server-process.t27 -- function payment-ai-server-process (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=payment-ai-server-process). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/payments/paymentProcessing.ts#L64 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/reels-ai-callback.t27 -- function reels-ai-callback (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-ai-callback). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/ai-reels-callback.ts#L158 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/reels-ai-generate.t27 -- function reels-ai-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-ai-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateAIReelsFunction.ts#L44 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/reels-loop-generate.t27 -- function reels-loop-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=reels-loop-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateAdvancedLoopingVideoFunction.ts#L77 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/render-avatar-video-run.t27 -- function render-avatar-video-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-avatar-video-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/renderAvatarVideo.ts#L174 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/render-job-run.t27 -- function render-job-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-job-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/render.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/render-riddle-run.t27 -- function render-riddle-run (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=render-riddle-run). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/render/renderRiddle.ts#L59 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/training-model-complete.t27 -- function training-model-complete (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-complete). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/handleModelTrainingCompleted.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/training-model-start.t27 -- function training-model-start (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-start). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/existing/generateModelTrainingFunction.ts#L38 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/training-model-v2-start.t27 -- function training-model-v2-start (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-model-v2-start). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/modelTrainingV2.ts#L45 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/training-stuck-check.t27 -- function training-stuck-check (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=training-stuck-check). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/training/checkStuckTrainings.ts#L47 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/webhook-generation-validate.t27 -- function webhook-generation-validate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=webhook-generation-validate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/webhookHealthGuard.ts#L147 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", + "specs/functions/welcome-avatar-generate.t27 -- function welcome-avatar-generate (Inngest, 999-multibots-telegraf) Source of truth for the function card on t27.ai (#/functions?function=welcome-avatar-generate). The registration was read from 999-multibots-telegraf:src/inngest_app/functions/welcomeAvatarGeneration.ts#L108 (main @a9c08b4). ID is the canonical id of the spec-first rename; LEGACY_ID and LEGACY_EVENTS are what the deployed code still answers to. STEPS lists step.run names in source order; a ${...} in a name is a template the code expands per item. Values here are read from the source, not", "specs/git/operations.t27 Git Command Operations", "specs/github/auth.t27 GitHub Authentication for t27 Ring-072 - GitHub SSOT Integration", - "specs/github/tests/e2e_full_flow.t27 End-to-End Full Flow Test for Ring-072 GitHub SSOT Tests: Auth -> Issue -> PR -> Comment -> Sync -> Cleanup Ring-074 - E2E Tests", - "specs/isa/ternary_encoding.t27 Ternary encoding: values in {-1, 0, +1}", + "specs/github/tests/e2e_full_flow.t27 End-to-End Full Flow Test for Ring-072 GitHub SSOT Tests: Auth → Issue → PR → Comment → Sync → Cleanup Ring-074 - E2E Tests", + "specs/i18n/agents-ru.t27 -- translation contract, Russian, for the agent specs Specs are English-only (LANG-EN). This module does not carry a single translated word: it declares WHICH fields of WHICH specs a bundle may translate, WHERE that bundle lives and HOW it is keyed, and what the site must do when a translation is missing. The Cyrillic payload is in the bundle file named below, never here. One module per locale: copy this file to agents-.t27 and change LOCALE", + "specs/i18n/docs-ru.t27 -- translation contract, Russian, for the system documentation Specs are English-only (LANG-EN). This module does not carry a single translated word: it declares WHICH fields of WHICH specs a bundle may translate, WHERE that bundle lives and HOW it is keyed, and what the site must do when a translation is missing. The Cyrillic payload is in the bundle file named below, never here. One module per locale: copy this file to docs-.t27 and change LOCALE and", + "specs/isa/ternary_encoding.t27 -- the TRI-27 instruction word as the pinned consumer decodes it Rewritten for S05 of gHashTag/trinity#988 (gHashTag/t27#3567). Until 2026-09-12 this file was a 38-line `algorithm` block that stated the trit alphabet {-1, 0, +1} and nothing else; it did not parse (tools/specs_generate_baseline.txt), yet specs/trinity/capabilities/tri27.toolchain.t27 names it as the canonical spec of the whole TRI-27 toolchain. It now states the instruction encoding that gHashTag/trinity actually executes: src/tri27/emu/decoder.zig at 976df517, which", + "specs/isa/tri27_bytecode.t27 -- the .tbin container as the pinned Trinity loader reads it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer has one loader, src/tri27/emu/loader.zig at 976df517, and two assemblers that write two different containers; three documents describe a third and a fourth. This file states the container the loader accepts and every rule by which it rejects a file -- truncated, wrong magic, unsupported version, unknown section, code that does not fit memory, no code at all -- as functions the C", + "specs/isa/tri27_machine.t27 -- the TRI-27 machine as the pinned Trinity emulator executes it S05 of gHashTag/trinity#988 (gHashTag/t27#3567). The consumer's selected runtime for TRI-27 programs is src/tri27/emu/executor.zig with cpu_state.zig, tri_cpu.zig and tri_memory.zig at 976df517: the only executor the owner's tests drive (test_comprehensive.zig, test_golden.zig, smoke_tests.zig); tri_exec.zig is a dead twin. This file states its register file, memory, fetch rule, entry points, flags, the numeric rule of every executed opcode, the control-flow and", "specs/memory/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;", "specs/memory/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable", "specs/memory/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one", "specs/memory/notebooklm.t27 NotebookLM Integration Specification Ring-071 - RAG-Backed Semantic Memory for t27 Defines interface to Google NotebookLM for persistent session memory", "specs/memory/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is", "specs/memory/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;", + "specs/memory/tmem/bridge.t27 -- Trinity Bridge protocol contract JSON-RPC 2.0 over loopback HTTP between an application and a memory device. Stage one is an explicitly labelled in-process emulator: capabilities, upload, read, info, delete, dot and two identity aliases, with named parameters, a bounded error model, storage limits and exact integer arithmetic. The executable implementation is t27/bridge.t27, t27/http.t27 and t27/client.t27;", + "specs/memory/tmem/conformance.t27 -- Trinity Conformance Lab contract One fixture of shared vectors, the experiment plan the native runtime executes against it (golden bytes, loopback HTTP transfer, exact dot, RTL replay, corrupted containers), the catalogue of corruption, interruption and reset cases that the sibling specs cover, and the reproducible lab report that aggregates every consumer under evidence labels. The executable", + "specs/memory/tmem/edge_demo.t27 -- Trinity Edge Demo contract A small finished application on the memory stack: a hand-authored ternary template classifier (three templates over twelve samples) stored as a TensorPack, uploaded to the emulator, read back exactly, scored by exact integer dot products through the Bridge, compared with direct arithmetic and replayed row by row in RTL. Six synthetic fixtures, two encodings, one", + "specs/memory/tmem/stream_compute.t27 -- Trinity Stream Compute contract The path from stored codes to a dot product: the synchronous storage sequencer (load, start, busy, one registered read per word), the view that decodes a word into five masked lanes, and the framed ready/valid dot pipeline (five trits x five int8 activations per beat, checked accumulation, sticky frame errors, synchronous reset). The executable implementation is", + "specs/memory/tmem/tensorpack.t27 -- TensorPack v1 (TTPK) container contract Named ternary tensors with shapes, axis labels and scalar or per-axis scales around unchanged TMEM v1 files: a 32-byte little-endian header, strict JSON metadata with exactly two root members and exactly eight descriptor fields, and a contiguous payload of nested containers. The executable implementation is t27/tensorpack.t27, t27/tensorpack_json.t27 and t27/tensorpack_cli.t27;", + "specs/memory/tmem/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).", "specs/memory/types.t27 -- shared contract constants for Trinity Memory Contract layer for the executable modules in t27/: trit lane codes, codec identifiers and group geometry, valid-code limits, TMEM v1 framing, CRC32 parameters, native status codes and evidence labels. The reference functions here are independent restatements used by differential tests; they are not the production implementation (see t27/codecs.t27 and t27/container.t27).", "specs/nn/phi_rope.t27 φ-RoPE: Rotary Position Embedding using Golden Ratio θ_i = PHI^(-2i/d) instead of standard 10000^(-2i/d)", "specs/nn/sacred_attention.t27 Sacred Attention: Multi-head attention with φ-based scaling scale = head_dim^(-PHI^3) instead of standard 1/sqrt(head_dim)", @@ -324,13 +483,199 @@ "specs/shell/environment.t27 Shell Environment Operations", "specs/shell/process.t27 Shell Process Operations", "specs/shell/schema.t27 Shell Types Specification", + "specs/skills/t27-measure-corpus.t27 -- skill t27/measure-corpus Source of truth for the skill card on t27.ai (#/skills?skill=t27/measure-corpus). The skill body lives in gHashTag/t27 at .claude/skills/measure-corpus/SKILL.md (vendored copy: apps/website/public/skills/files/t27/measure-corpus/SKILL.md, sha256 b8fb7503f660...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/t27-phi-loop.t27 -- skill t27/phi-loop Source of truth for the skill card on t27.ai (#/skills?skill=t27/phi-loop). The skill body lives in gHashTag/t27 at .claude/skills/phi-loop/SKILL.md (vendored copy: apps/website/public/skills/files/t27/phi-loop/SKILL.md, sha256 d8af7f6a9cbc...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/t27-tri-pipeline.t27 -- skill t27/tri-pipeline Source of truth for the skill card on t27.ai (#/skills?skill=t27/tri-pipeline). The skill body lives in gHashTag/t27 at .claude/skills/tri-pipeline/SKILL.md (vendored copy: apps/website/public/skills/files/t27/tri-pipeline/SKILL.md, sha256 b4bfc290b86a...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/t27-tri.t27 -- skill t27/tri Source of truth for the skill card on t27.ai (#/skills?skill=t27/tri). The skill body lives in gHashTag/t27 at .claude/skills/tri/skill.md (vendored copy: apps/website/public/skills/files/t27/tri/skill.md, sha256 8fb4d4796c2d...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/t27-wave-audit.t27 -- skill t27/wave-audit Source of truth for the skill card on t27.ai (#/skills?skill=t27/wave-audit). The skill body lives in gHashTag/t27 at .claude/skills/wave-audit/SKILL.md (vendored copy: apps/website/public/skills/files/t27/wave-audit/SKILL.md, sha256 4cd0dd22105a...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/t27-wrap-up.t27 -- skill t27/wrap-up Source of truth for the skill card on t27.ai (#/skills?skill=t27/wrap-up). The skill body lives in gHashTag/t27 at .claude/skills/wrap-up/skill.md (vendored copy: apps/website/public/skills/files/t27/wrap-up/skill.md, sha256 a4a9b4fd9d02...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-blog-post.t27 -- skill trinity/blog-post Source of truth for the skill card on t27.ai (#/skills?skill=trinity/blog-post). The skill body lives in gHashTag/trinity at .claude/skills/blog-post/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/blog-post/SKILL.md, sha256 2cb755fd4a60...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-board-sync.t27 -- skill trinity/board-sync Source of truth for the skill card on t27.ai (#/skills?skill=trinity/board-sync). The skill body lives in gHashTag/trinity at .claude/skills/board-sync/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/board-sync/SKILL.md, sha256 f4bfa63737cf...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-cloud.t27 -- skill trinity/cloud Source of truth for the skill card on t27.ai (#/skills?skill=trinity/cloud). The skill body lives in gHashTag/trinity at .claude/skills/cloud/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/cloud/SKILL.md, sha256 53aa338dddc4...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-doctor.t27 -- skill trinity/doctor Source of truth for the skill card on t27.ai (#/skills?skill=trinity/doctor). The skill body lives in gHashTag/trinity at .claude/skills/doctor/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/doctor/SKILL.md, sha256 68efdf793010...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-farm-garden.t27 -- skill trinity/farm-garden Source of truth for the skill card on t27.ai (#/skills?skill=trinity/farm-garden). The skill body lives in gHashTag/trinity at .claude/skills/farm-garden/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/farm-garden/SKILL.md, sha256 672148988575...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-fpga-synth.t27 -- skill trinity/fpga-synth Source of truth for the skill card on t27.ai (#/skills?skill=trinity/fpga-synth). The skill body lives in gHashTag/trinity at .claude/skills/fpga-synth/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/fpga-synth/SKILL.md, sha256 de3915e66cda...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-god-mode.t27 -- skill trinity/god-mode Source of truth for the skill card on t27.ai (#/skills?skill=trinity/god-mode). The skill body lives in gHashTag/trinity at .claude/skills/god-mode/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/god-mode/SKILL.md, sha256 0c48e328ae4c...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-implement-issue.t27 -- skill trinity/implement-issue Source of truth for the skill card on t27.ai (#/skills?skill=trinity/implement-issue). The skill body lives in gHashTag/trinity at .claude/skills/implement-issue/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/implement-issue/SKILL.md, sha256 88ccafaece20...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-queen-hive-visuals.t27 -- skill trinity/queen-hive-visuals Source of truth for the skill card on t27.ai (#/skills?skill=trinity/queen-hive-visuals). The skill body lives in gHashTag/trinity at .claude/skills/queen-hive-visuals/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/queen-hive-visuals/SKILL.md, sha256 c6d914dc81c8...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-review-code.t27 -- skill trinity/review-code Source of truth for the skill card on t27.ai (#/skills?skill=trinity/review-code). The skill body lives in gHashTag/trinity at .claude/skills/review-code/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/review-code/SKILL.md, sha256 e5712744615c...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-run-tests.t27 -- skill trinity/run-tests Source of truth for the skill card on t27.ai (#/skills?skill=trinity/run-tests). The skill body lives in gHashTag/trinity at .claude/skills/run-tests/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/run-tests/SKILL.md, sha256 7ead75ab36b8...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-scholar.t27 -- skill trinity/scholar Source of truth for the skill card on t27.ai (#/skills?skill=trinity/scholar). The skill body lives in gHashTag/trinity at .claude/skills/scholar/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/scholar/SKILL.md, sha256 5c35431008a4...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-status.t27 -- skill trinity/status Source of truth for the skill card on t27.ai (#/skills?skill=trinity/status). The skill body lives in gHashTag/trinity at .claude/skills/status/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/status/SKILL.md, sha256 e4bc75ff45cd...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-tech-tree.t27 -- skill trinity/tech-tree Source of truth for the skill card on t27.ai (#/skills?skill=trinity/tech-tree). The skill body lives in gHashTag/trinity at .claude/skills/tech-tree/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/tech-tree/SKILL.md, sha256 f84c8ea67ab6...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-tri.t27 -- skill trinity/tri Source of truth for the skill card on t27.ai (#/skills?skill=trinity/tri). The skill body lives in gHashTag/trinity at .claude/skills/tri/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/tri/SKILL.md, sha256 4c38d1005219...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-trinity-test.t27 -- skill trinity/trinity-test Source of truth for the skill card on t27.ai (#/skills?skill=trinity/trinity-test). The skill body lives in gHashTag/trinity at .claude/skills/trinity-test/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/trinity-test/SKILL.md, sha256 648c7f095f0b...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-ux-wave.t27 -- skill trinity/ux-wave Source of truth for the skill card on t27.ai (#/skills?skill=trinity/ux-wave). The skill body lives in gHashTag/trinity at .claude/skills/ux-wave/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/ux-wave/SKILL.md, sha256 9690999e8d1e...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-vibee-gen.t27 -- skill trinity/vibee-gen Source of truth for the skill card on t27.ai (#/skills?skill=trinity/vibee-gen). The skill body lives in gHashTag/trinity at .claude/skills/vibee-gen/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/vibee-gen/SKILL.md, sha256 fc01e69f1395...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-vsa-verify.t27 -- skill trinity/vsa-verify Source of truth for the skill card on t27.ai (#/skills?skill=trinity/vsa-verify). The skill body lives in gHashTag/trinity at .claude/skills/vsa-verify/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/vsa-verify/SKILL.md, sha256 8b9c4518b1bc...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", + "specs/skills/trinity-wave.t27 -- skill trinity/wave Source of truth for the skill card on t27.ai (#/skills?skill=trinity/wave). The skill body lives in gHashTag/trinity at .claude/skills/wave/SKILL.md (vendored copy: apps/website/public/skills/files/trinity/wave/SKILL.md, sha256 ecf06fdfa467...). The JSON the site serves is generated from this file by the real compiler; nothing below is parsed with a regex.", "specs/storage/kv.t27 Key-Value Storage Operations", "specs/storage/lock.t27 Locking Primitives for Storage Operations", "specs/storage/migrate.t27 Data Migration Operations", "specs/storage/schema.t27 Storage Types Specification", + "specs/system/unified-agent-operations.t27 -- the one system that the Trinity repositories form together: canonical contracts (t27), the Queen and her Bees, the Inngest scheduler, the 999 application edge (bot, Mini App, Hive, CRM, media library), the self-hosted inference services (whisper = Speaches, vision = llama.cpp + Qwen3-VL) and the evidence tracks (GoldenFloat, AX7203, Golden Sieve, publications). This card names the parts, the contracts between them, the gates every change must pass and the budgets every run must keep. It claims nothing that a witness has", + "specs/tools/catalog.t27 -- the tools catalog contract: schema 2, repository-qualified IDs, legacy resolution S06 of gHashTag/trinity#988 (gHashTag/t27#3568). specs/tools/ holds one card per tool of two repositories: the Rust tri of gHashTag/t27 (tri/.t27), the MCP servers of both (mcp/.t27), and now the Zig tri of gHashTag/trinity (trinity/tri/.t27), derived from the one registry that repository's own binary exports and its CI drift-checks (.trinity/registry.json, 29 commands). Until 2026-09-12 the README said the consumer had no tri binary; it has one, with five dispatch layers, a 187-entry command table, an", + "specs/tools/mcp/gitbutler.t27 -- tool mcp/gitbutler, MCP server \"gitbutler\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/gitbutler). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/inngest-dev.t27 -- tool mcp/inngest-dev, MCP server \"inngest-dev\" (self-hosted Inngest, Railway project 999) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/inngest-dev). Tool names, descriptions (first line) and input keys are the server's own tools/list answer, recorded over Streamable HTTP on 2026-09-13 (initialize -> notifications/initialized -> tools/list, serverInfo name \"inngest-dev\", title \"Inngest Dev Server MCP Tools\", version 1.0.0, response header x-inngest-server-kind: cloud); nothing is typed by hand.", + "specs/tools/mcp/needle.t27 -- tool mcp/needle, MCP server \"needle\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/needle). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/neon.t27 -- tool mcp/neon, MCP server \"neon\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/neon). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/notebooklm.t27 -- tool mcp/notebooklm, MCP server \"notebooklm\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/notebooklm). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/railway-mcp-server.t27 -- tool mcp/railway-mcp-server, MCP server \"railway-mcp-server\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/railway-mcp-server). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/t27-traceability.t27 -- tool mcp/t27-traceability, MCP server \"t27-traceability\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/t27-traceability). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/tri-mcp.t27 -- tool mcp/tri-mcp, MCP server \"tri-mcp\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-mcp). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/tri-ssot.t27 -- tool mcp/tri-ssot, MCP server \"tri-ssot\" (gHashTag/t27) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/tri-ssot). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/t27 @ 3cb7a4352492); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/trinity.t27 -- tool mcp/trinity, MCP server \"trinity\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/trinity). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp/zig-docs.t27 -- tool mcp/zig-docs, MCP server \"zig-docs\" (gHashTag/trinity) Source of truth for the tool card on t27.ai (#/tools?tool=mcp/zig-docs). Tool names, descriptions and input keys are read from the server code or manifest named in SOURCE (witness source-parse, gHashTag/trinity @ dbed0905268b); nothing is typed by hand. Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/mcp_protocol.t27 -- the MCP protocol behaviour of gHashTag/trinity's trinity-mcp at the pin S06 of gHashTag/trinity#988 (gHashTag/t27#3568). The consumer ships two MCP servers and one client. This file states what the main server, tools/mcp/trinity_mcp/server.zig at 976df517, actually does with a JSON-RPC message -- how it frames, which methods it routes, what it answers to initialize, how it lists and calls tools, how it reports failure, what it does with cancellation and with a tool it does not know -- and what the modules beside it declare but the server never imports.", "specs/tools/registry.t27 Tools Registry Operations", "specs/tools/schema.t27 Tools Types Specification", + "specs/tools/tri/abandoned.t27 -- tool tri/abandoned, the `tri abandoned` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/abandoned). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/cell.t27 -- tool tri/cell, the `tri cell` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/cell). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/census.t27 -- tool tri/census, the `tri census` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/census). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/ci.t27 -- tool tri/ci, the `tri ci` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/ci). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/competitors.t27 -- tool tri/competitors, the `tri competitors` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/competitors). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/discard.t27 -- tool tri/discard, the `tri discard` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/discard). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/doctor.t27 -- tool tri/doctor, the `tri doctor` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/doctor). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/elab.t27 -- tool tri/elab, the `tri elab` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/elab). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/emit.t27 -- tool tri/emit, the `tri emit` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/emit). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/experience.t27 -- tool tri/experience, the `tri experience` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/experience). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/fleet.t27 -- tool tri/fleet, the `tri fleet` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fleet). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/fmt.t27 -- tool tri/fmt, the `tri fmt` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fmt). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/fpga.t27 -- tool tri/fpga, the `tri fpga` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/fpga). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/gates.t27 -- tool tri/gates, the `tri gates` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/gates). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/gen.t27 -- tool tri/gen, the `tri gen` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/gen). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/harness.t27 -- tool tri/harness, the `tri harness` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/harness). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/health.t27 -- tool tri/health, the `tri health` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/health). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/hooks.t27 -- tool tri/hooks, the `tri hooks` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/hooks). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/issues.t27 -- tool tri/issues, the `tri issues` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/issues). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/jumps.t27 -- tool tri/jumps, the `tri jumps` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/jumps). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/kinds.t27 -- tool tri/kinds, the `tri kinds` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/kinds). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/lean.t27 -- tool tri/lean, the `tri lean` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/lean). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/ledgers.t27 -- tool tri/ledgers, the `tri ledgers` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/ledgers). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/loop.t27 -- tool tri/loop, the `tri loop` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/loop). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/merging.t27 -- tool tri/merging, the `tri merging` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/merging). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/misread.t27 -- tool tri/misread, the `tri misread` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/misread). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/mods.t27 -- tool tri/mods, the `tri mods` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/mods). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/mutate.t27 -- tool tri/mutate, the `tri mutate` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/mutate). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/now.t27 -- tool tri/now, the `tri now` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/now). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/one-away.t27 -- tool tri/one-away, the `tri one-away` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/one-away). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/orphaned.t27 -- tool tri/orphaned, the `tri orphaned` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/orphaned). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/pr.t27 -- tool tri/pr, the `tri pr` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/pr). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/prose.t27 -- tool tri/prose, the `tri prose` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/prose). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/quantifiers.t27 -- tool tri/quantifiers, the `tri quantifiers` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/quantifiers). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/red.t27 -- tool tri/red, the `tri red` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/red). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/reseal.t27 -- tool tri/reseal, the `tri reseal` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/reseal). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/rtl.t27 -- tool tri/rtl, the `tri rtl` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/rtl). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/seals.t27 -- tool tri/seals, the `tri seals` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/seals). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/serve.t27 -- tool tri/serve, the `tri serve` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/serve). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/skill.t27 -- tool tri/skill, the `tri skill` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/skill). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/status.t27 -- tool tri/status, the `tri status` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/status). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/sweep.t27 -- tool tri/sweep, the `tri sweep` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/sweep). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/synth.t27 -- tool tri/synth, the `tri synth` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/synth). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/test.t27 -- tool tri/test, the `tri test` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/test). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/topic.t27 -- tool tri/topic, the `tri topic` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/topic). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/types.t27 -- tool tri/types, the `tri types` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/types). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/unparsed.t27 -- tool tri/unparsed, the `tri unparsed` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/unparsed). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/vectors.t27 -- tool tri/vectors, the `tri vectors` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/vectors). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/verdict.t27 -- tool tri/verdict, the `tri verdict` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/verdict). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/vsim.t27 -- tool tri/vsim, the `tri vsim` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/vsim). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/window.t27 -- tool tri/window, the `tri window` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/window). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/tri/worktrees.t27 -- tool tri/worktrees, the `tri worktrees` command of the tri CLI Source of truth for the tool card on t27.ai (#/tools?tool=tri/worktrees). Extracted from the clap #[derive(Subcommand)] enums in cli/tri/src (witness source-parse: cargo was not run, the enum and its /// docs were read at commit 3cb7a4352492). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools. ASCII only (L3).", + "specs/tools/trinity/tri/bench.t27 -- tool gHashTag/trinity:tri/bench, the `tri bench` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/bench`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/bio.t27 -- tool gHashTag/trinity:tri/bio, the `tri bio` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/bio`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/blindspots.t27 -- tool gHashTag/trinity:tri/blindspots, the `tri blindspots` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/blindspots`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/conscious.t27 -- tool gHashTag/trinity:tri/conscious, the `tri conscious` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/conscious`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/constants.t27 -- tool gHashTag/trinity:tri/constants, the `tri constants` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/constants`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/cosmos.t27 -- tool gHashTag/trinity:tri/cosmos, the `tri cosmos` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/cosmos`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/dashboard.t27 -- tool gHashTag/trinity:tri/dashboard, the `tri dashboard` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/dashboard`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/fib.t27 -- tool gHashTag/trinity:tri/fib, the `tri fib` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/fib`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/fpga.t27 -- tool gHashTag/trinity:tri/fpga, the `tri fpga` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/fpga`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/gematria.t27 -- tool gHashTag/trinity:tri/gematria, the `tri gematria` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/gematria`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/govern.t27 -- tool gHashTag/trinity:tri/govern, the `tri govern` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/govern`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/hardware.t27 -- tool gHashTag/trinity:tri/hardware, the `tri hardware` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/hardware`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/identity.t27 -- tool gHashTag/trinity:tri/identity, the `tri identity` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/identity`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/lucas.t27 -- tool gHashTag/trinity:tri/lucas, the `tri lucas` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/lucas`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/mesh.t27 -- tool gHashTag/trinity:tri/mesh, the `tri mesh` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/mesh`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/needle-check.t27 -- tool gHashTag/trinity:tri/needle-check, the `tri needle-check` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle-check`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/needle-search.t27 -- tool gHashTag/trinity:tri/needle-search, the `tri needle-search` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle-search`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/needle.t27 -- tool gHashTag/trinity:tri/needle, the `tri needle` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/needle`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/omega.t27 -- tool gHashTag/trinity:tri/omega, the `tri omega` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/omega`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/particles.t27 -- tool gHashTag/trinity:tri/particles, the `tri particles` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/particles`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/phi.t27 -- tool gHashTag/trinity:tri/phi, the `tri phi` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/phi`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/quantum.t27 -- tool gHashTag/trinity:tri/quantum, the `tri quantum` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/quantum`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/reputation.t27 -- tool gHashTag/trinity:tri/reputation, the `tri reputation` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/reputation`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/sacred-const.t27 -- tool gHashTag/trinity:tri/sacred-const, the `tri sacred-const` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/sacred-const`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/spiral.t27 -- tool gHashTag/trinity:tri/spiral, the `tri spiral` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/spiral`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/swarm.t27 -- tool gHashTag/trinity:tri/swarm, the `tri swarm` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/swarm`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/test.t27 -- tool gHashTag/trinity:tri/test, the `tri test` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/test`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/vsa.t27 -- tool gHashTag/trinity:tri/vsa, the `tri vsa` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/vsa`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/tools/trinity/tri/wallet.t27 -- tool gHashTag/trinity:tri/wallet, the `tri wallet` command of the Trinity Zig tri S06 of gHashTag/trinity#988 (gHashTag/t27#3568). Every field below is read from the command registry the consumer's own binary exports (`zig build export-registry` -> .trinity/registry.json, drift-checked by ci.yml at 976df5174) and from the dispatcher that routes it; nothing is typed by hand. The repository-qualified ID is the only ID of this card: the t27 card `tri/wallet`, where one exists, is another program in another repository (specs/tools/catalog.t27). Layer 5 of the ladder Specs -> Skills -> Crons -> Agents -> Tools.", + "specs/trinity/build_graph.t27 -- the build graph of gHashTag/trinity, its pins, its profiles, its generated-file boundaries and the receipt policy of the bootstrap/fixture profile Source of truth for tools/trinity_build_receipt.py (gHashTag/t27#3565 = S03 of gHashTag/trinity#988). The graph itself -- every module build.zig names and every import edge -- is derived from the pinned tree into conformance/trinity/build_graph.json and held to what this file declares: the pinned packages and how build.zig uses them, the submodule, the profiles and", + "specs/trinity/capabilities/abi.c-api.t27 -- capability trinity/abi.c-api: The C ABI of the VSA library (libtrinity-vsa, static and shared) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/agent.daemons.t27 -- capability trinity/agent.daemons: Agent runners and hooks built by default: ralph-agent, mu-agent, scholar-agent, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/agent.phi-loop.t27 -- capability trinity/agent.phi-loop: phi-loop: the phi cycle command-line runner One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/agent.tri-api.t27 -- capability trinity/agent.tri-api: tri-api: the implemented agent loop (provider requests, streaming, tool calls) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/api.http-server.t27 -- capability trinity/api.http-server: The unified HTTP API server (tri serve) under src/api One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/archive.legacy.t27 -- capability trinity/archive.legacy: archive/, experiments/, lab/, research/ and tapes/: retained history and demos One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/bench.suite.t27 -- capability trinity/bench.suite: Benchmarks: bench-core, bench-compress and the benchmark tests One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/bot.tri-bot.t27 -- capability trinity/bot.tri-bot: tri-bot: the Telegram bot runner One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/catalog.spec-mirror.t27 -- capability trinity/catalog.spec-mirror: The vendored spec catalog and the Queen atlas under apps/website/public/t27/: a One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/catalog.world-scan.t27 -- capability trinity/catalog.world-scan: The GitHub scan that keeps the catalog current (scripts/discover-t27-worlds.mjs, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/cli.tri.t27 -- capability trinity/cli.tri: The tri command-line interface of the consumer (src/tri) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/convert.b2t.t27 -- capability trinity/convert.b2t: b2t: binary and WASM to ternary conversion One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/examples.zig.t27 -- capability trinity/examples.zig: Examples and the end-to-end test: example-memory, example-sequence, example-vm, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/ext.vscode-swe.t27 -- capability trinity/ext.vscode-swe: The VS Code extension (vscode-trinity-swe, tools/vscode-extension) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/fpga.in-repo.t27 -- capability trinity/fpga.in-repo: FPGA and hardware material carried in the consumer (fpga/, hardware/, fpga-netwo One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/lib.trinity.t27 -- capability trinity/lib.trinity: The trinity library facade: SDK, science, sparse, JIT and the VSA VM over the pi One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/llm.firebird.t27 -- capability trinity/llm.firebird: Firebird: BitNet LLM inference and its wasm, depin and b2t integrations One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/llm.igla-chat.t27 -- capability trinity/llm.igla-chat: IGLA chat front-ends: fluent, trinity-hybrid and the igla trace tests One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/mcp.needle-mcp.t27 -- capability trinity/mcp.needle-mcp: The needle MCP server (tools/mcp/needle_mcp/server.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/mcp.trinity-mcp.t27 -- capability trinity/mcp.trinity-mcp: The trinity MCP server (tools/mcp/trinity_mcp/server.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/native.canvas.t27 -- capability trinity/native.canvas: The raylib canvas: photon-demo, photon-immersive, trinity-canvas and its emscrip One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/native.node-gui.t27 -- capability trinity/native.node-gui: trinity-node-gui: the node's raylib front-end (guarded by !ci_mode) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/native.queen-app.t27 -- capability trinity/native.queen-app: The native Queen application (apps/queen, Swift package Trinity.app) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/node.trinity-node.t27 -- capability trinity/node.trinity-node: trinity-node: the storage and network node (src/trinity_node, src/depin) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/numeric.golden-float.t27 -- capability trinity/numeric.golden-float: GoldenFloat numeric formats, consumed as the pinned package gHashTag/zig-golden- One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/ops.deploy-infra.t27 -- capability trinity/ops.deploy-infra: Deployment descriptors: helm, k8s, docker, aws-f2, runtime, packages, contracts One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/ops.railway-cli.t27 -- capability trinity/ops.railway-cli: Railway service tools: seven railway-* commands under src/cli One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/pkg.vendored-cache.t27 -- capability trinity/pkg.vendored-cache: zig-pkg/: a committed package cache (1061 files) that build.zig.zon does not ref One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/queen.lib.t27 -- capability trinity/queen.lib: libtrinity-queen: the Queen orchestration API (src/queen_api.zig) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/registry.commands.t27 -- capability trinity/registry.commands: The command registry .trinity/registry.json, exported from src/registry and drif One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/release.packaging.t27 -- capability trinity/release.packaging: Release assembly: the release step, release/ and the npm, Homebrew, AUR and Dock One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/research.nexus-docs.t27 -- capability trinity/research.nexus-docs: Research notes and reports under deploy/trinity-nexus/docs One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/research.programs.t27 -- capability trinity/research.programs: Research programs installed by default: forge, quantum, beal, arena, sota-report One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/research.unreferenced-sources.t27 -- capability trinity/research.unreferenced-sources: Source directories that no file named by build.zig reaches through @import: src/ One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/search.vsa-index.t27 -- capability trinity/search.vsa-index: VSA search and query command-line tools over the trinity library One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/specs.t27-vendored-compiler.t27 -- capability trinity/specs.t27-vendored-compiler: A second copy of t27 compiler modules and numeric specs under trinity:t27/ (34 f One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/specs.tri-corpus.t27 -- capability trinity/specs.tri-corpus: The .tri specification corpus of the consumer (the legacy Trinity dialect) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/specs.vibee-corpus.t27 -- capability trinity/specs.vibee-corpus: The .vibee specification corpus of the consumer: 522 files under specs/tri, 1428 One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/state.trinity-dir.t27 -- capability trinity/state.trinity-dir: The .trinity/ harness state: registry, MCP schemas, seals, experience, queues, p One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/test.graph.t27 -- capability trinity/test.graph: The aggregate test step and the CI-only steps that have no artifact of their own One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/tools.scripts.t27 -- capability trinity/tools.scripts: Repository tooling: tools/scripts, tools/bin, the telegram bridge, the webarena One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/train.hslm.t27 -- capability trinity/train.hslm: hslm-train and the vendored external/zig-hslm: the local HSLM placeholder One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/training.targets.t27 -- capability trinity/training.targets: Kaggle and WASM training targets (targets/, kaggle/, train-types/, train_cifar10 One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/tri27.programs.t27 -- capability trinity/tri27.programs: Ten .t27 programs under src/tri27 (sha256, matmul, mlp_forward, vsa_bind, vsa_bu One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/tri27.toolchain.t27 -- capability trinity/tri27.toolchain: The TRI27 assembler, emulator, loader and the Zig/Verilog emitters under src/tri One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/vibee.compiler.t27 -- capability trinity/vibee.compiler: The VIBEE spec compiler (vibee gen), its self-improver, trinity-cli, claude-ui a One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/vsa.zig-hdc.t27 -- capability trinity/vsa.zig-hdc: Hyperdimensional VSA operations (bind, bundle, permute, similarity), consumed as One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/web.docsite.t27 -- capability trinity/web.docsite: The documentation site under docs/, published with the website by deploy-docs.ym One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/web.queen-web.t27 -- capability trinity/web.queen-web: The Queen web client and its proxy (apps/queen-web, apps/queen-proxy) One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/capabilities/web.site.t27 -- capability trinity/web.site: The public site t27.ai (apps/website): explorers over the vendored spec corpus, One card of the Trinity project manifest (specs/trinity/README.md, gHashTag/t27#3563 = S01 of gHashTag/trinity#988). tools/trinity_manifest.py check holds every card to the inventory of the pinned consumer tree gHashTag/trinity@976df5174: the targets it owns exist in build.zig and belong to no other card, the paths it names are tracked, the dialect matches the spec it cites and a measured claim names its command and its source. The consumer vendors a byte-identical copy and", + "specs/trinity/compiler_matrix.t27 -- which t27 features the pinned compiler carries to a checked runtime result, on which backend, and which invalid inputs it must never accept Source of truth for tools/trinity_compiler_matrix.py (gHashTag/t27#3564 = S02 of gHashTag/trinity#988). One fixture per feature under FIXTURE_DIR; four stages kept apart in the record (declaration, generate, compile, runtime); a feature is executable only when its fixture reaches a runtime pass on the backend named here, a blocked feature must not, and a", + "specs/trinity/project.t27 -- the Trinity project manifest: what gHashTag/trinity is, pinned Source of truth for the project profile (gHashTag/t27#3563 = S01 of gHashTag/trinity#988): the consumer repository and the revision inventoried, the profiles, the dispositions and evidence tags every capability card uses, the dialect and build counts the inventory measured, the dependency pins and the work packages of the epic. tools/trinity_manifest.py inventory writes conformance/trinity/inventory.json from a clean pinned checkout and tools/trinity_manifest.py", + "specs/turbobaby/availability.t27 -- what \"available\" counts, and everything it refuses to count Source of truth for the availability half of issue #4's `bike_units` table (the status set and the derived per-family count), for the availability filter of the catalog API (#8), and for the \"unavailable rather than hidden\" rule the detail screen (#9) renders. Every number below is read from data/fleet_seed.json (measured_at 2026-09-12) or from DECISIONS.md, and each carries where it comes from. Nothing here is computed from a price and nothing is parsed out of prose.", + "specs/turbobaby/bike_catalog.t27 -- the shape of a catalog row, and the algebra of class and displacement. Source of truth for the two class discriminants, the six body styles, the three displacement bands and catalog row shape. The catalog API (#8), bike detail screen (#9) and ride game's handling model (#13) consume bookability from availability.t27. Every count below is quoted from data/fleet_seed.json (measured_at 2026-09-12, schema_version 2), or derived", + "specs/turbobaby/catalog_api.t27 -- public HTTP behavior for the bike catalog This contract owns only the transport boundary requested by issue #8: filter composition, page-limit normalization, opaque cursor validation, DTO release gates, and HTTP outcomes. Catalog taxonomy belongs to bike_catalog.t27, current inventory and offerability belong to availability.t27, and price provenance belongs to pricing_honesty.t27. This file deliberately imports none of them. Instead, the transport receives their decisions as booleans such as", + "specs/turbobaby/commerce.t27 -- cart, checkout, order, and replay safety for bike deals This contract owns the transactional seam that the catalog and pricing contracts stop before: a cart is locked, exactly one deal shape is selected, an authoritative quote is snapshotted, fulfillment is admissible, an idempotency key chooses create/replay/conflict, and a committed order makes the cart terminal. It covers both rental and sale without pretending they are the same payload. D7 fixes the spelling `fulfillment`; D8 fixes a rental line on a family rather", + "specs/turbobaby/deposit_tiers.t27 -- the published security-deposit tiers of the TurboBaby fleet Written contract for every surface that shows a deposit: the tier is looked up on the family key and no surface computes one. Measured from data/fleet_seed.json (measured_at 2026-09-12), whose deposit authority is the published tariff source KB_faq, section \"Exact price list (from CRM)\". Closes issue #18. ASCII only (L3), English identifiers only. --", + "specs/turbobaby/market_profile.t27 -- the contract a market/country/currency must satisfy The owner's standing instruction (2026-09-13) is that this agent runs on ANY market, country and currency. Measured before this file existed, Thailand was ambient in the code rather than declared anywhere: the money formatter hardcodes the baht glyph, the comma group separator and whole-baht display (src/trios/pricing.rs format_baht/group_thousands), i18n templates bake the glyph into customer-facing sentences (src/trios/i18n.rs), the shop timezone is a", + "specs/turbobaby/pricing_honesty.t27 -- an absent rate is not zero, and a dash is not silence The formal statement of DECISIONS.md D11 (price provenance) and D9 (absent stays absent) for one value: the published per-day rate of a bike family. Source of truth for the optional-rate representation the two runtimes named by D15 must share -- src/trios/pricing.rs for the Axum server and for the Dioxus/WASM catalog screen -- so that the honesty filters are written once and checked against a written contract instead of against each other. ASCII only (L3).", + "specs/turbobaby/rental_terms.t27 -- the rental term ladder, the published term-discount bands, and the one rounding rule every total is built from. Canonical source of truth for the INTEGER basis-point form of the term arithmetic that D15 puts in src/trios/pricing.rs, so the Axum server and the Dioxus/WASM client are checked against one written contract instead of against each other. The earlier specs/rental_terms.t27 states the same bands in f64. Its declarations have now been semantically classified in", + "specs/turbobaby/ride_game.t27 -- how the biker game reads its handling out of the real fleet Source of truth for the two things issues #20, #13 and #12 ask to be stated once: the handling map (top speed from displacement_cc, steering from class) and the rule that the game may mount only a family the catalog actually has free. Every MEASURED number below is read from data/fleet_seed.json (measured_at 2026-09-12) or derived from it in a visible step -- but not every number below is measured, and this sentence is scoped so that nobody", + "specs/ui/viewport.t27 -- the one viewport contract of the t27.ai site (breakpoints, touch targets, QA matrix) Source of truth for how the site's explorers (#/specs, #/skills, #/crons, #/agents, #/tools, #/functions) lay themselves out at a given viewport. The site (gHashTag/trinity, apps/website) vendors this file byte-identical under public/t27/files/specs/ui/ and generates src/lib/viewport.generated.ts and src/styles/viewport.generated.css from it with the real compiler (scripts/viewport-from-spec.mjs); nothing below is parsed with a regex and no", + "specs/vm/trinity_vm.t27 -- the VSA VM of gHashTag/trinity src/vm.zig as it is at the pin S05 of gHashTag/trinity#988 (gHashTag/t27#3567). src/vm.zig is the VM the consumer builds and tests (test:src/vm.zig, a member of `zig build test`; the library facade re-exports it): a register machine over four hyperdimensional registers whose operations are the sixteen VSA operations of specs/vsa/trinity_compat.t27. It shares nothing with the TRI-27 machine of specs/isa/tri27_machine.t27: another opcode space, another register file, another program type.", "specs/vsa/sdk.t27 Trinity SDK - High-level API for VSA operations", + "specs/vsa/trinity_compat.t27 -- the VSA and numeric contract the Trinity facade actually runs Source of truth for tools/trinity_vsa_compat.py and conformance/vsa_trinity_compat.json (gHashTag/t27#3566 = S04 of gHashTag/trinity#988). gHashTag/trinity re-exports sixteen VSA operations from the pinned package gHashTag/zig-golden-float (through gHashTag/zig-hdc, which re-exports them name by name); the canonical specs of this directory describe the same operations, and the two disagree on the zero trit, on unequal lengths and on the sequence", "sse.t27 — Server-Sent Events Specification SSE connections, event streaming, reconnection handling", "stoch_round.t27 — Sacred Opcode 0xE9: Stochastic Rounding Hardware stochastic rounding for quantization", "subth_clk.t27 — Sacred Opcode 0xE5: Sub-threshold Clock Gating Hardware for sub-threshold clock gating for power reduction", @@ -342,9 +687,10 @@ "t27/specs/base/ternary_encoding.t27 Ternary Encoding/Decoding Specification Ring 065 - Encoding schemes for ternary data representation Defines how binary data maps to ternary and vice versa", "t27/specs/base/ternary_memory.t27 Ternary Memory Specification Ring 066 - Ternary memory cell and array operations Defines how trits are stored and accessed in memory", "t27/specs/boards/arty_a7.t27 Digilent Arty A7 Board Profile Artix-7 XC7A35T/XC7A100T, 100MHz clock, 4 LEDs, 4 buttons, UART", + "t27/specs/boards/wukong_v1.t27 QMTech Wukong V1 / XC7A200T-FGG676 -- the board actually on this bench. WHY THIS EXISTS. `specs/boards/` held three files before this one: `arty_a7.t27` (a different board, csg324) and `xc7a100t_full.t27` / `xc7a100t_minimal.t27` -- both for an XC7A100T. The chip on every one of the three connected boards is an XC7A200T; `fpga/HARDWARE_SSOT.md` recorded that", "t27/specs/boards/xc7a100t_full.t27 QMTECH XC7A100T-CSG324 Full Board Profile LED + UART + SPI + MAC debug, QMTECH Wukong expansion Note: 22 pins from full QMTECH XDC are missing in prjxray-db", "t27/specs/boards/xc7a100t_minimal.t27 QMTECH XC7A100T-CSG324 Minimal Board Profile Heartbeat LED + UART loopback, prjxray-verified pins only", - "t27/specs/demos/jones_topology_decision_gate.t27 Decision Gate TH-01..TH-05 for H_1: Structure Similarity Classifier Tests if VSA dot_product + fixed phi constant can classify structures by complexity", + "t27/specs/demos/jones_topology_decision_gate.t27 Decision Gate TH-01..TH-05 for H₁: Structure Similarity Classifier Tests if VSA dot_product + fixed φ constant can classify structures by complexity", "t27/specs/demos/jones_topology_filter.t27 MVP: Structure Similarity Classifier using VSA + CS Constants WHAT THIS CODE ACTUALLY DOES: - Takes a hypervector representing a structure - Computes dot_product similarity with a reference structure - Classifies complexity based on similarity thresholds", "t27/specs/fpga/apb_bridge.t27 APB (Advanced Peripheral Bus) Bridge Specification for Trinity T27 FPGA HIR Register-mapped peripheral bridge for low-bandwidth peripherals Uses flat arrays + count fields (parser-compatible)", "t27/specs/fpga/assembler.t27 T27 Ternary Assembler Specification High-level assembler for the ternary ISA, compiles to machine code Supports R-type, I-type, and GF16 extended instructions Uses flat arrays + count fields (parser-compatible)", @@ -352,6 +698,7 @@ "t27/specs/fpga/boards/arty_a7_integration.t27 Arty A7 Board-Level Integration Spec Full system: MAC + UART + SPI + Memory + Bridge + GF16 + TernaryISA Pin mappings match specs/fpga/constraints/arty_a7.xdc", "t27/specs/fpga/boards/qmtech_a100t_integration.t27 QMTech XC7A100T Board-Level Integration Spec Full system for QMTech A100T development board", "t27/specs/fpga/bootrom.t27 T27 Boot ROM Specification Boot sequence stages, init vectors, integrity checksum Uses flat arrays + count fields (parser-compatible)", + "t27/specs/fpga/bpsk.t27 ZeroDSP BPSK modem core (TRI-NET 5.8 GHz mesh radio PHY). Byte -> +/-1 BPSK serializer with a Barker-13 preamble, plus an integer Barker-13 correlator + threshold for frame synchronization. Port of the trios-mesh Rust modem's synthesizable core to the t27 spec-first language. Datapath functions + state record only; clocking/ports are a backend concern.", "t27/specs/fpga/bridge.t27 FPGA Communication Bridge Specification Combines UART and SPI for host and peripheral communication", "t27/specs/fpga/clock_domain.t27 Clock Domain Abstraction for Trinity T27 FPGA HIR Defines clock sources, PLL configs, and cross-domain crossing Uses flat structs (parser-compatible)", "t27/specs/fpga/crossopt.t27 T27 Cross-Module Optimization Specification Inter-module constant propagation, dead signal elimination, instance merging Uses flat arrays + count fields (parser-compatible)", @@ -375,6 +722,7 @@ "t27/specs/fpga/spi.t27 SPI Master Specification for FPGA Mode 0: CPOL=0, CPHA=0 (SCK idle low, sample on rising edge)", "t27/specs/fpga/stdlib.t27 T27 FPGA Standard Library IP Catalog Reusable hardware IP cores with resource utilization estimates Uses flat arrays + count fields (parser-compatible)", "t27/specs/fpga/ternary_isa.t27 Ternary ISA Hardware Implementation Specification for Trinity T27 FPGA HIR Bridges software ISA (27 registers, balanced ternary) to silicon Connects GF16 arithmetic, ternary gates, and phi-identity to hardware Uses flat arrays + count fields (parser-compatible)", + "t27/specs/fpga/ternary_link.t27 TRI-NET ternary line code: 3B2T over a three-level physical layer. WHY THIS EXISTS. W652 measured that the \"ternary internet\" was binary at every layer: specs/fpga/bpsk.t27 carries SYM_POS=1 and SYM_NEG=-1 and no zero state anywhere, tri-net's wire header is 11 binary bytes, and nothing three-valued ever crossed between two nodes. This module is the smallest object that makes", "t27/specs/fpga/testbench.t27 T27 HIR Testbench Auto-Generation Specification Automatically generates Verilog testbenches from HIR modules Includes clock generation, reset sequencing, stimulus, and checking Uses flat arrays + count fields (parser-compatible)", "t27/specs/fpga/testbench/apb_bridge_tb.t27 APB Bridge Testbench Tests APB bus protocol: setup, access, wait states", "t27/specs/fpga/testbench/assembler_tb.t27 Assembler/Linker Integration Testbench Tests ternary instruction encoding, program assembly, and memory linking", @@ -390,7 +738,7 @@ "t27/specs/fpga/testbench/hir_tb.t27 Hardware IR (HIR) Testbench Tests HIR node types, module hierarchy, and code generation paths", "t27/specs/fpga/testbench/integration_tb.t27 Full FPGA Integration Testbench Tests top-level connectivity: MAC + UART + SPI + Memory + Bridge", "t27/specs/fpga/testbench/linker_tb.t27 Linker Testbench Tests symbol resolution, address assignment, and section merging", - "t27/specs/fpga/testbench/mac_tb.t27 MAC Unit Testbench Specification Tests ternary LUT multiplication, MAC operations, and accumulator 01 + 1/23 = 3 | TRINITY", + "t27/specs/fpga/testbench/mac_tb.t27 MAC Unit Testbench Specification Tests ternary LUT multiplication, MAC operations, and accumulator", "t27/specs/fpga/testbench/memory_tb.t27 Memory Subsystem Testbench Tests BRAM, register file, and memory-mapped I/O operations", "t27/specs/fpga/testbench/partition_tb.t27 FPGA Partition Testbench Tests floorplanning regions, hierarchical partitioning, and resource budgeting", "t27/specs/fpga/testbench/placement_tb.t27 FPGA Placement Testbench Tests placement grid, resource allocation, and density constraints", @@ -402,16 +750,53 @@ "t27/specs/fpga/testbench/stdlib_tb.t27 FPGA Stdlib Testbench Tests IP core catalog, parameter validation, and helper functions", "t27/specs/fpga/testbench/ternary_isa_tb.t27 Ternary ISA Testbench Tests ternary instruction decode, ALU operations, and encoding", "t27/specs/fpga/testbench/timing_tb.t27 Timing Analysis Testbench Tests setup/hold checks, slack computation, and clock tree constraints", - "t27/specs/fpga/testbench/top_tb.t27 Top-Level FPGA Testbench Specification Tests complete FPGA system with UART, SPI, MAC, and bridge 01 + 1/23 = 3 | TRINITY", - "t27/specs/fpga/testbench/uart_tb.t27 UART Testbench Specification Tests UART TX/RX functionality, state machines, and timing 01 + 1/23 = 3 | TRINITY", + "t27/specs/fpga/testbench/top_tb.t27 Top-Level FPGA Testbench Specification Tests complete FPGA system with UART, SPI, MAC, and bridge", + "t27/specs/fpga/testbench/uart_tb.t27 UART Testbench Specification Tests UART TX/RX functionality, state machines, and timing", "t27/specs/fpga/testbench/vcd_conformance_compare_tb.t27 VCD Conformance Compare Testbench Tests the conformance comparison engine: batch compare, masking, value extraction", "t27/specs/fpga/testbench/vcd_trace_tb.t27 VCD Trace Testbench Tests waveform dump generation, signal hierarchy, and timestamp management", "t27/specs/fpga/timing.t27 T27 Static Timing Analysis Specification Estimates critical path, slack, and Fmax from HIR module structure Artix-7 timing model: LUT=0.1ns, BRAM=2.0ns, DSP=2.5ns, routing=0.3ns Uses flat arrays + count fields (parser-compatible)", - "t27/specs/fpga/top_level.t27 ZeroDSP FPGA Top Level Module Integrates MAC and UART for FPGA deployment 01 + 1/23 = 3 | TRINITY", - "t27/specs/fpga/uart.t27 ZeroDSP FPGA UART Specification UART for debugging and communication 01 + 1/23 = 3 | TRINITY", + "t27/specs/fpga/top_level.t27 ZeroDSP FPGA Top Level Module Integrates MAC and UART for FPGA deployment", + "t27/specs/fpga/uart.t27 ZeroDSP FPGA UART Specification UART for debugging and communication", "t27/specs/fpga/vcd_conformance_compare.t27 T27 VCD Conformance Comparison Engine Compares VCD simulation traces against conformance vectors Parses VCD signal values and checks them against expected results Uses flat arrays + count fields (parser-compatible)", "t27/specs/fpga/vcd_trace.t27 T27 VCD Trace Emission Specification Emits Value Change Dump traces from HIR simulation IEEE 1364-2001 VCD format with variable sections Uses flat arrays + count fields (parser-compatible)", "t27/specs/fpga/verification/build_verify.t27 FPGA Build Verification Spec Validates all FPGA specs can generate Verilog and pass structural checks", + "t27/specs/igla/coder/arch.t27 IGLA-Coder model architecture specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .push(), +=, **VOCAB_SIZE, var/let before if).", + "t27/specs/igla/coder/bench_proxy.t27 Proxy benchmark for VerilogEval-style RTL generation problems. Honest baseline: evaluates current IGLA-Coder templates against simplified combinational + sequential problems.", + "t27/specs/igla/coder/benchmark.t27 Benchmark infrastructure for Pass@K evaluation and competitive analysis", + "t27/specs/igla/coder/dataset.t27 Dataset builder for (prompt, RTL) pairs from Trinity templates", + "t27/specs/igla/coder/eval.t27 IGLA-Coder evaluation specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .len(), @floatFromInt, let before if, etc). Uses recursion + if/return chains as the reliable pattern.", + "t27/specs/igla/coder/pipeline.t27 End-to-end inference pipeline: prompt -> tokenize -> forward -> decode Conceptual stubs for all stages requiring runtime support (BPE, model weights).", + "t27/specs/igla/coder/prm.t27 Process Reward Model (PRM) specification for IGLA CODER Step-level verifiable rewards for sacred RTL / Rust code generation NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, .push(), .contains(), +=, **, @floatFromInt, match, etc).", + "t27/specs/igla/coder/tokenizer.t27 Conceptual tokenizer for Verilog / t27 syntax Deterministic character-level encoding (ASCII -> ID) for spec safety. Real BPE/SentencePiece requires runtime support.", + "t27/specs/igla/coder/training.t27 IGLA-Coder training pipeline specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (for loops, return-if expressions, .push(), +=).", + "t27/specs/igla/coder/weights.t27 Checkpoint / weight file loading stubs Bridges external checkpoint formats (GGUF, safetensors, custom) to WeightBank.", + "t27/specs/igla/race/adder_tree.t27 8-input binary tree adder -- O(log N) latency, multiplier-free RTL R-SI-1: zero '*' operators in generated assignments", + "t27/specs/igla/race/backend.t27 R-SI-1 compile-time backend pass specification for IGLA RACE NOTE: This spec uses recursion instead of loops to avoid t27c parser body-truncation on unsupported constructs (for, while+if, var-before-if, .as_bytes(), @intCast, match, format!, .push(), .extend()).", + "t27/specs/igla/race/bram_weights.t27 BRAM-based weight storage for embedded model inference Flattened 2D weight matrix addressing", + "t27/specs/igla/race/cordic.t27 CORDIC sacred opcode for IGLA RACE -- shift-add sin/cos NOTE: Uses recursion instead of loops to avoid t27c parser truncation. All shift operations are emulated via precomputed POW2_NEG table.", + "t27/specs/igla/race/cordic_fixed.t27 CORDIC shift-add sin/cos in fixed-point Q15 (signed 16-bit) Fixed-point convention: Q14 (1 sign + 14 fractional bits) Scale factor = 2^14 = 16384 All angles are NORMALIZED to [-1, 1] where 1.0 = PI radians. Thus angle PI/2 = 8192, PI/4 = 4096, etc.", + "t27/specs/igla/race/cordic_top.t27 CORDIC top-level wrapper with AXI-stream-style handshaking Instantiates cordic_fixed core and adds clock/reset/valid/ready ports Parameterized Q15 fixed-point width (i16) Target: Lattice ECP5 or Xilinx Artix-7 via Yosys + nextpnr", + "t27/specs/igla/race/eda.t27 OpenROAD / EDA toolchain integration for IGLA RACE PPA feedback NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (.as_bytes(), @intCast, .contains(), .to_string(), format!()).", + "t27/specs/igla/race/formal.t27 IGLA RACE formal verification specification NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (.push(), .contains(), @floatFromInt, array concatenation with +).", + "t27/specs/igla/race/gemm.t27 GEMM via Booth-encoded shift-add (multiplier-free RTL) R-SI-1: zero '*' operators in generated assignments", + "t27/specs/igla/race/mvp_ternary_classifier.t27 The MVP: a complete ternary neural network, small enough that every number in it can be checked by hand, built to be placed on an XC7A200T with ZERO DSPs. WHY THIS SHAPE. The claim worth proving first is not \"a big model runs\" but \"a model runs AT ALL, with no multiplier anywhere\". A network small enough to verify by hand is the only one where a wrong answer is unmistakably wrong --", + "t27/specs/igla/race/opcodes.t27 IGLA RACE sacred opcode alphabet specification", + "t27/specs/igla/race/phi_accumulator_growth.t27 How wide must a Z[phi] accumulator be? Fan-in and depth answer differently. WHY THIS EXISTS. T93 measured the composed ternary node and stated its own limit in the same breath: \"The node is verified for a SINGLE MAC step. Fan-in, depth, and the accumulator width needed to keep (a,b) exact over many steps are NOT", + "t27/specs/igla/race/phi_gain_freedom.t27 What the phi alphabet gives up for the multiplier, stated as a count. WHY THIS EXISTS. T97 measured the two alphabets at equal area and stated its own standing limit: \"This compares AREA at equal structure. It does NOT compare ACCURACY... An area comparison at unequal accuracy is not a verdict.\"", + "t27/specs/igla/race/phi_weights.t27 IGLA RACE: the Z[phi] weight datapath -- the missing link between RACE's ternary codes and the GFTernary alphabet they were named after. WHY THIS EXISTS. Measured 2026-08-13: specs/igla/race/ternary_inference.t27:20 \"Weights are stored as ternary codes (0=zero, 1=+1, 2=-1)\"", + "t27/specs/igla/race/rtl.t27 IGLA RACE RTL generation specification NOTE: Uses recursion instead of loops to avoid t27c parser truncation.", + "t27/specs/igla/race/systolic_array.t27 2x2 weight-stationary systolic GEMM Registered partial products, shift-add Booth multipliers R-SI-1: zero '*' operators in generated assignments", + "t27/specs/igla/race/systolic_ternary.t27 Systolic ternary processing element (PE) for streaming GEMM Connects ternary GEMM to weight-stationary systolic arrays", + "t27/specs/igla/race/ternary_dot_sw.t27 The slice dot product -- SOFTWARE ONLY, and that is the point of the file. WHY THIS EXISTS. W808 measured that `.len()` on a slice parameter reaches the generated Verilog verbatim (T509). `compiler.rs:6962` handles that spelling for the Zig backend only; the Verilog backend has no case for it, Verilog has neither dynamic arrays nor methods, and the file fails elaboration -- taking the", + "t27/specs/igla/race/ternary_gemm.t27 Ternary GEMM specification -- 2x2 matrix multiply with {-1,0,+1} weights Uses flattened 1D arrays; zero * operators in multiply path (R-SI-1)", + "t27/specs/igla/race/ternary_inference.t27 End-to-end ternary ML inference pipeline. Connects CODER weights → RACE BRAM → ternary GEMM → systolic array. This is the first spec demonstrating a complete inference flow on ternary hardware.", + "t27/specs/igla/race/ternary_lut_table.t27 The mu-deep LUT: partial sums computed ONCE, selected by K output neurons. WHY THIS EXISTS. W806 built `ternary_mac_group.t27` -- eight ternary lanes sharing one 32-bit accumulator -- and it went the wrong way: CARRY4 per multiply fell from 10.0 to 3.0 exactly as forecast, and LUT per multiply rose from 33.00 to 63.25, because eight independent per-lane selects built 172", + "t27/specs/igla/race/ternary_mac.t27 Ternary {-1, 0, +1} multiply-accumulate unit Zero '*' operators in generated assignments -- pure sign-flip / zero / add-sub", + "t27/specs/igla/race/ternary_mac_group.t27 Eight ternary lanes sharing ONE wide accumulator -- the mu > 1 point. WHY THIS EXISTS. W806 measured `specs/igla/race/ternary_mac.t27` at **66 LUT, 20 CARRY4, 0 DSP48E1** for a single runtime-weight ternary MAC (T499). Against the 2026 state of the art -- arXiv:2604.25183 at 19.27 LUT per multiply, INT8 activations, runtime weights -- that is 3.4x behind, and the", + "t27/specs/igla/race/ternary_node.t27 The composed ternary node: wire -> weight -> Z[phi] accumulator, end to end. WHAT THIS COMPOSES. Three specs were built and verified independently in W653-W655, each closing one boundary: specs/fpga/ternary_link.t27 3B2T line code, {-1,0,+1} on the wire (T79/T87) specs/igla/race/phi_weights Z[phi] weight application, (a,b)->(b,a+b) (T89)", + "t27/specs/igla/race/unit_weights_node.t27 The CONTROL for T93: a ternary node on the unit alphabet {-1,0,+1}, built to be measured beside specs/igla/race/ternary_node.t27. WHY THIS EXISTS. T93 measured the phi node at ZERO DSPs and stated, in the same breath, that the figure is a measurement of ONE SIDE: \"If a {-1,0,+1} node with a per-layer scale synthesised to zero DSPs at", + "t27/specs/igla/race/yosys.t27 Yosys / SymbiYosys formal verification integration for IGLA RACE NOTE: Simplified to avoid t27c parser body-truncation on unsupported constructs (format!(), match, +=, .as_bytes(), @intCast, .to_string()).", + "t27/specs/igla/w535_bounded_while_module.t27 W535 positive corpus witness: a bounded while loop remains Icarus-lowerable after tightening the predicate to reject while(true), non-lowerable struct fields, and imported-function calls.", "t27/specs/isa/registers.t27 TRI27 ISA Register File Specification Register definitions, Coptic encoding, and register file operations", "t27/specs/isa/ternary_arithmetic.t27 Ternary Arithmetic Operations Specification Ring 064 - Balanced ternary arithmetic for T27 Defines addition, subtraction, multiplication, and division", "t27/specs/isa/ternary_bitwise.t27 Ternary Bitwise Operations Specification Ring 068 - Bitwise AND, OR, XOR for ternary data Defines bitwise operations on ternary word representations", @@ -427,42 +812,40 @@ "t27/specs/isa/ternary_shift.t27 Ternary Shift and Rotate Operations Specification Ring 067 - Bitwise/Tritwise shift and rotate operations Defines how ternary words are shifted and rotated", "t27/specs/isa/ternary_sorting.t27 Ternary Sorting Operations Specification Ring 080 - Sorting algorithms for ternary data 01 + 1/23 = 3 | TRINITY", "t27/specs/isa/ternary_tree.t27 Ternary Tree Operations Specification Ring 084 - Tree algorithms on ternary-valued nodes 01 + 1/23 = 3 | TRINITY", - "t27/specs/jit/jit.t27 Trinity JIT Compiler Compiles VSA operations to native machine code 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q JIT (Just-In-Time) compiler for VSA operations: - Compiles high-level VSA operations to native x86-64 machine code", - "t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing phi^2 + 1/phi^2 = 3 | Sacred constants for ternary computing", + "t27/specs/jit/jit.t27 Trinity JIT Compiler Compiles VSA operations to native machine code ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q JIT (Just-In-Time) compiler for VSA operations: - Compiles high-level VSA operations to native x86-64 machine code", "t27/specs/math/constants.t27 Mathematical Constants for Trinity Computing φ² + 1/φ² = 3 | Sacred constants for ternary computing", - "t27/specs/math/e8_lie_algebra.t27 E8 Exceptional Lie Algebra -- Root System, Cartan Matrix, Eigenvalues Direction A (Priority 2) of PROJECT KEPLER->NEWTON E8 is the largest exceptional simple Lie group. Its root system contains golden ratio phi as a structural invariant through the H4 Coxeter subgroup. Key results verified computationally:", - "t27/specs/math/gf_competitive.t27 GoldenFloat Competitive Analysis -- GF vs Posit vs IEEE 754 MATH-COMPETITIVE-001 -- Decode latency, parallelism, hardware efficiency Ring 051: Competitive analysis showing GF's structural advantages Main result: GF has O(1) parallel decode vs Posit's O(N) sequential", - "t27/specs/math/pellis_precision_verify.t27 Arbitrary precision verification via GMP/MPFR reference NUMERIC-VERIF-001 -- Pre-registered checkpoint for CODATA 2026", - "t27/specs/math/phi_split_optimality.t27 Phi-Split Theorems -- Self-Similarity + Optimal Rounding (CORRECTED) MATH-OPTIMALITY-001 -- Foundation for GoldenFloat being non-random THEOREM 1 (Golden Self-Similarity): phi is unique self-similar proportion for bit allocation THEOREM 2 (Optimal Rounding): round((N-1)/phi^2) minimizes phi-distance (7/7 match)", - "t27/specs/math/phi_universal_attractor.t27 Phi Universal Attractor Theorems -- Theorem 3: phi as Universal Fixed-Point MATH-ATTRACTOR-001 -- Generative mechanism for phi proportion THEOREM 3: phi is the unique fixed point of balancing recursion f(x) = (x + x^-^1 + 1) / 2 This addresses the critic's concern that phi is \"fitting\" rather than a true mechanism.", + "t27/specs/math/e8_lie_algebra.t27 E8 Exceptional Lie Algebra — Root System, Cartan Matrix, Eigenvalues Direction A (Priority 2) of PROJECT KEPLER->NEWTON E8 is the largest exceptional simple Lie group. Its root system contains golden ratio phi as a structural invariant through the H4 Coxeter subgroup. Key results verified computationally:", + "t27/specs/math/gf_competitive.t27 GoldenFloat Competitive Analysis — GF vs Posit vs IEEE 754 MATH-COMPETITIVE-001 — Decode latency, parallelism, hardware efficiency Ring 051: Competitive analysis showing GF's structural advantages Main result: GF has O(1) parallel decode vs Posit's O(N) sequential", + "t27/specs/math/pellis_precision_verify.t27 Arbitrary precision verification via GMP/MPFR reference NUMERIC-VERIF-001 — Pre-registered checkpoint for CODATA 2026", + "t27/specs/math/phi_split_optimality.t27 Phi-Split Theorems — Self-Similarity + Optimal Rounding (CORRECTED) MATH-OPTIMALITY-001 — Foundation for GoldenFloat being non-random THEOREM 1 (Golden Self-Similarity): phi is unique self-similar proportion for bit allocation THEOREM 2 (Optimal Rounding): round((N-1)/phi^2) minimizes phi-distance (7/7 match)", + "t27/specs/math/phi_universal_attractor.t27 Phi Universal Attractor Theorems — Theorem 3: φ as Universal Fixed-Point MATH-ATTRACTOR-001 — Generative mechanism for φ proportion THEOREM 3: φ is the unique fixed point of balancing recursion f(x) = (x + x⁻¹ + 1) / 2 This addresses the critic's concern that φ is \"fitting\" rather than a true mechanism.", "t27/specs/math/property_test_template.t27 Property-Test Template for Conformance Vectors Ring 053 - Defines reusable property testing patterns This spec provides templates for property-based testing of T27 formats Properties: mathematical invariants that must hold for ALL valid inputs", - "t27/specs/math/radix_economy.t27 Radix Economy Formal Spec -- Information-Theoretic Basis for Base-3 Computing E(b) = ln(b)/b, maximized at b = e ~= 2.71828 E(3)/E(e) >= 99.5%, E(3)/E(2) = 1.054 (5.4% advantage)", - "t27/specs/math/sacred_physics.t27 Strand I 0 Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.", + "t27/specs/math/radix_economy.t27 Radix Economy Formal Spec — Information-Theoretic Basis for Base-3 Computing E(b) = ln(b)/b, maximized at b = e ≈ 2.71828 E(3)/E(e) >= 99.5%, E(3)/E(2) = 1.054 (5.4% advantage)", "t27/specs/math/sacred_physics.t27 Strand I — Mathematical Foundation Sacred Physics Layer: links TRINITY identity (phi) to gravity, cosmology and neurotime.", - "t27/specs/math/zamolodchikov_e8.t27 Zamolodchikov E8 Integrable Field Theory -- Mass Spectrum Direction A/E of PROJECT KEPLER->NEWTON In 1989, Zamolodchikov proved that the 2D Ising CFT perturbed by a magnetic field possesses E8 symmetry with exactly 8 stable particles. Their mass ratios are determined EXACTLY by E8 algebra -- not fitted.", + "t27/specs/math/zamolodchikov_e8.t27 Zamolodchikov E8 Integrable Field Theory — Mass Spectrum Direction A/E of PROJECT KEPLER->NEWTON In 1989, Zamolodchikov proved that the 2D Ising CFT perturbed by a magnetic field possesses E8 symmetry with exactly 8 stable particles. Their mass ratios are determined EXACTLY by E8 algebra — not fitted.", "t27/specs/memory/memory_primitives.t27 Native Memory Primitives Specification Ring 029 — Language-level remember/recall/forget/reflect Inspired by MemPalace associative memory architecture 01 + 1/23 = 3 | TRINITY", - "t27/specs/nn/attention.t27 Sacred Attention Specification Multi-head attention with phi-RoPE and sacred scaling (d_k^(-phi^3))", + "t27/specs/ml/igla_champion_capsule.t27 Purpose: freeze the champion run so any later experiment can be compared fairly and any reproduction attempt validated. This is the CONTROL ANCHOR, NOT proof of phi superiority. All phi performance claims are [Open conjecture] (see FL-001 in docs/nona-03-manifest/RESEARCH_CLAIMS.md). Source: trios-trainer-igla src/optimizer.rs (phi-canonical defaults).", + "t27/specs/ml/optimizer/race_config.t27 IGLA RACE optimizer configuration freeze + eval-split protocol. Phase A deliverable -- honesty foundation (issue #181 child). Claim-status legend used in this file: [Verified] -- algebraic identity, no experiment needed. [Open conjecture] -- phi claim that the control test must decide.", + "t27/specs/nn/attention.t27 Sacred Attention Specification Multi-head attention with φ-RoPE and sacred scaling (d_k^(-φ³))", + "t27/specs/nn/gla.t27 Gated Linear Attention (GLA) Block Specification Reference: Yang et al. 2023 \"Gated Linear Attention Transformers with Hardware-Efficient Training\" arXiv:2312.06635 CLAIM-STATUS: all performance claims below are [Open conjecture]. The ONLY [Verified] phi-fact in this codebase is phi^2 + phi^-2 = 3 (Law L5).", "t27/specs/nn/hslm.t27 HSLM (Hierarchical Sacred Learning Model) Specification Ternary neural network with sacred constants and VSA attention", "t27/specs/numeric/binary16.t27 Binary16 - Binary packed 16-bit format (3 bits per integer) NUMERIC-STANDARD-001 Agent 13 (P1) Binary16 format: - Packs 5 signed integers (3 bits each) into 16 bits - Each integer range: -4 to 3", - "t27/specs/numeric/gf12.t27 GoldenFloat12 -- 12-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 4 (P1)", + "t27/specs/numeric/e8m0.t27 E8M0 -- the OCP Microscaling shared scale, and the trit count it does not have. WHY THIS EXISTS. `specs/numeric/formats_catalog.t27` is the numeric SSOT and it names `e8m0` FIVE times as the storage of another format -- mxfp8 storage=u8_plus_shared_e8m0 mxfp6 storage=u8_packed_plus_e8m0", + "t27/specs/numeric/formats_catalog.t27 Universal Numeric Format Catalog (SSOT) Single source of truth for every numeric format relevant to ML, scientific computing, historical hardware, and the GoldenFloat (GF) family. Codegen targets (Markdown / JSON / Python / Rust / C / TS) MUST be derived from this file via tools/gen_formats_catalog.py (bootstrap", "t27/specs/numeric/gf12.t27 GoldenFloat12 0 12-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 4 (P1)", "t27/specs/numeric/gf12.t27 GoldenFloat12 — 12-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 4 (P1)", "t27/specs/numeric/gf128.t27 GoldenFloat128 - 128-bit φ-structured floating point with extended range NUMERIC-STANDARD-001 Agent 5 (P1) Paper §6.7: Extended range for high-dynamic-range applications", - "t27/specs/numeric/gf20.t27 GoldenFloat20 -- 20-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 6 (P1)", "t27/specs/numeric/gf20.t27 GoldenFloat20 0 20-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 6 (P1)", "t27/specs/numeric/gf20.t27 GoldenFloat20 — 20-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 6 (P1)", - "t27/specs/numeric/gf24.t27 GoldenFloat24 -- 24-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 7 (P1)", "t27/specs/numeric/gf24.t27 GoldenFloat24 0 24-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 7 (P1)", "t27/specs/numeric/gf24.t27 GoldenFloat24 — 24-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 7 (P1)", "t27/specs/numeric/gf256.t27 GoldenFloat256 0 256-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 11 (P1)", - "t27/specs/numeric/gf32.t27 GoldenFloat32 -- 32-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 8 (P1)", "t27/specs/numeric/gf32.t27 GoldenFloat32 0 32-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 8 (P1)", "t27/specs/numeric/gf32.t27 GoldenFloat32 — 32-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 8 (P1)", - "t27/specs/numeric/gf4.t27 GoldenFloat4 -- 4-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 2 (P1)", "t27/specs/numeric/gf4.t27 GoldenFloat4 0 4-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 2 (P1)", "t27/specs/numeric/gf4.t27 GoldenFloat4 — 4-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 2 (P1)", "t27/specs/numeric/gf64.t27 GoldenFloat64 - 64-bit φ-structured floating point NUMERIC-STANDARD-001 Agent 4 (P1)", - "t27/specs/numeric/gf8.t27 GoldenFloat8 -- 8-bit phi-structured floating point NUMERIC-STANDARD-001 -- Agent 3 (P1)", + "t27/specs/numeric/gf64.t27 GoldenFloat64 — 64-bit phi-structured floating point NUMERIC-STANDARD-001 — canonical double-precision member of the GoldenFloat family", "t27/specs/numeric/gf8.t27 GoldenFloat8 0 8-bit 1-structured floating point NUMERIC-STANDARD-001 2 Agent 3 (P1)", "t27/specs/numeric/gf8.t27 GoldenFloat8 — 8-bit φ-structured floating point NUMERIC-STANDARD-001 — Agent 3 (P1)", "t27/specs/numeric/gf_competitive.t27 GF Competitive Analysis Specification Ring 028 — Proving GoldenFloat is not random 01 + 1/23 = 3 | TRINITY", @@ -471,21 +854,24 @@ "t27/specs/numeric/goldenfloat_family.t27 GoldenFloat Family — φ-structured floating point formats NUMERIC-STANDARD-001 — Agent 1 (P0)", "t27/specs/numeric/int4.t27 Int4 - 4-bit signed integer NUMERIC-STANDARD-001 Agent 9 (P1)", "t27/specs/numeric/int8.t27 Int8 - 8-bit signed integer NUMERIC-STANDARD-001 Agent 10 (P1)", + "t27/specs/numeric/lucas_accumulator.t27 Lucas-exact accumulator for the GoldenFloat width ladder (Phase F, leg F1) NUMERIC-STANDARD-002 CLAIM STATUS DISCIPLINE (igla-phi-architecture / goldenfloat-ladder): This file captures the ONE genuinely [Verified] leg of the breadth-as-moat bet (FL-004 in docs/nona-03-manifest/RESEARCH_CLAIMS.md): the arithmetic", "t27/specs/numeric/nf4.t27 NormalFloat4 - 4-bit normalized float quantization format (Google) NUMERIC-STANDARD-001 Agent 11 (P1) NF4 format: - Represents normalized values in [0, 1] - Uses a 4-bit normalized representation", "t27/specs/numeric/pellis_verify.t27 Pellis Verification Specification Phase 2 of GF Competitive Analysis (issue #289) GMP-backed high-precision verification of Pellis closed form 01 + 1/23 = 3 | TRINITY", "t27/specs/numeric/phi_ratio.t27 0-Ratio Proof 1 Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 2 Agent 9 (P0)", "t27/specs/numeric/phi_ratio.t27 φ-Ratio Proof — Derivation of GoldenFloat exp/mantissa split NUMERIC-STANDARD-001 — Agent 9 (P0)", + "t27/specs/numeric/posit_ladder_control.t27 Posit ladder -- the F3 CONTROL for the GoldenFloat breadth-as-moat bet (FL-004) NUMERIC-STANDARD-003 PURPOSE (goldenfloat-ladder skill, F3 leg): The breadth-as-moat claim (FL-004) is that ONE closed rule across a width ladder gives a defensible toolchain-coherence advantage. Posit is the", "t27/specs/numeric/requant_boundary.t27 Activation requantizer: the threshold boundary convention. Recorded because Wave 669 had to settle a semantic question with no specification to appeal to. Two independently written implementations of the same rule -- the emitted `activation_requant` RTL and the end-to-end testbench reference in sim/tb_data_check.v -- agreed everywhere except at", + "t27/specs/numeric/tnf17.t27 TNF17e -- Ternary Network Float, the signed accumulator format. WHY THIS EXISTS. Measured 2026-08-13: the string \"TNF\" appears in ZERO of the 1,064 .t27 specs. It has a 2,353-line article (docs/theory/TNF_ARTICLE_RU.md), a dedicated skill, and an erratum -- and no implementation. This file is the first one.", "t27/specs/numeric/tri_net_formats.t27 TRI NET Format Registry — Complete Format Specification Complete format registry for TRI-NET neural accelerator: - GoldenFloat family (GF4-GF256) - IEEE 754 formats (fp32, fp16) - Brain Float (bf16)", "t27/specs/parameter-golf/phi_init.t27 φ-Based Weight Initialization for Parameter Golf Derivation from sacred physics + GF16 quantization", "t27/specs/physics/chimera_best_gamma.t27 Best gamma formula from PDG 2024 P35_new (Delta = 0.140%)", - "t27/specs/physics/gamma_conjecture.t27 Strand I -- Loop Quantum Gravity Conjecture GI1: Barbero-Immirzi Parameter from Golden Section", + "t27/specs/physics/gamma_conjecture.t27 Strand I — Loop Quantum Gravity Conjecture GI1: Barbero-Immirzi Parameter from Golden Section", "t27/specs/physics/gi1_analysis.t27 GI1 Pre-Registration Analysis: γ_φ vs γ₁ comparison Three hypotheses tested against empirical data", - "t27/specs/physics/lqg_entropy.t27 KEPLER->NEWTON Direction B: LQG -> gamma (PRIORITY 3 - HONEST INQUIRY) Status: Final v2.2 Date: 2026-04-05 HONEST ASSESSMENT: gamma = phi^-^3 does NOT come from CS theory. This spec documents research needed to find:", - "t27/specs/physics/pellis-formulas.t27 Trinity x Pellis hybrid -- thin-structure formulas anchored on L5 (issue #277). SSOT: invariants tie Pell ladders to phi; observables are references for tri math compare.", - "t27/specs/physics/sacred_verification.t27 KEPLER->NEWTON Sacred Formula Verification Spec Status: Final v1.0 Date: 2026-04-06 This spec defines the verification framework for [planned] 152 Sacred Formula equations (N implemented today). It provides a structured approach to testing which", - "t27/specs/physics/su2_chern_simons.t27 SU(2)_k Chern-Simons Theory -- Topological QFT Foundation Direction F (Priority 1) of PROJECT KEPLER->NEWTON This module formalizes the PROVEN THEOREM: golden ratio phi emerges from SU(2) Chern-Simons theory at level k=3 as quantum dimension of Fibonacci anyons. This is NOT numerology -- it is a mathematical", - "t27/specs/physics/zamolodchikov_4d_conjecture.t27 4D Zamolodchikov Conjecture -- The Breakthrough Hypothesis Direction E of PROJECT KEPLER->NEWTON HYPOTHESIS: A 4D quantum field theory with E8 integrable structure fixes the fundamental constants of the Standard Model through the same algebraic mechanism that fixes the 8 Zamolodchikov masses in 2D.", + "t27/specs/physics/lqg_entropy.t27 KEPLER→NEWTON Direction B: LQG → γ (PRIORITY 3 - HONEST INQUIRY) Status: Final v2.2 Date: 2026-04-05 HONEST ASSESSMENT: γ = φ⁻³ does NOT come from CS theory. This spec documents research needed to find:", + "t27/specs/physics/pellis-formulas.t27 Trinity x Pellis hybrid — thin-structure formulas anchored on L5 (issue #277). SSOT: invariants tie Pell ladders to phi; observables are references for tri math compare.", + "t27/specs/physics/sacred_verification.t27 KEPLER→NEWTON Sacred Formula Verification Spec Status: Final v1.0 Date: 2026-04-06 This spec defines the verification framework for [planned] 152 Sacred Formula equations (N implemented today). It provides a structured approach to testing which", + "t27/specs/physics/su2_chern_simons.t27 SU(2)_k Chern-Simons Theory — Topological QFT Foundation Direction F (Priority 1) of PROJECT KEPLER->NEWTON This module formalizes the PROVEN THEOREM: golden ratio phi emerges from SU(2) Chern-Simons theory at level k=3 as quantum dimension of Fibonacci anyons. This is NOT numerology — it is a mathematical", + "t27/specs/physics/zamolodchikov_4d_conjecture.t27 4D Zamolodchikov Conjecture — The Breakthrough Hypothesis Direction E of PROJECT KEPLER->NEWTON HYPOTHESIS: A 4D quantum field theory with E8 integrable structure fixes the fundamental constants of the Standard Model through the same algebraic mechanism that fixes the 8 Zamolodchikov masses in 2D.", "t27/specs/pins/emitter_xdc.t27 XDC Constraint Emitter from Pins IR Generates nextpnr-compatible XDC from Design/Binding/ClockDef Output format matches t27c fpga-build --minimal exactly", "t27/specs/pins/ir.t27 Pins Intermediate Representation (IR) Models FPGA pin assignments, I/O standards, clock constraints", "t27/specs/pins/parser.t27 Pins Parser for Trinity t27 Parse .t27 pin specifications into Pins IR", @@ -494,18 +880,28 @@ "t27/specs/pipeline/experience_save.t27 Experience Save Command Specification Ring 028 — tri experience save CLI command 01 + 1/23 = 3 | TRINITY", "t27/specs/queen/brain_summaries.t27 Queen Brain Summaries Pipeline Specification Ring 061 - Episode summarization for Queen brain Defines how experience episodes are aggregated into summaries", "t27/specs/queen/lotus.t27 Queen Lotus 6-Phase Orchestration Specification Self-improving agent orchestration with episode-based learning", - "t27/specs/ternary/bigint.t27 TVC BigInt - Balanced Ternary Arbitrary Precision Arithmetic 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q Balanced Ternary representation: - Each trit has value {-1, 0, +1} - Number = Sigma(trit[i] * 3^i) for i = 0..n-1", - "t27/specs/test_framework/graph_drift_detection.t27 Ring 054 -- Graph Drift Detection for Structural Change Detection Monitors structural changes in mathematical and physics specifications over time", - "t27/specs/test_framework/property_test_template.t27 Ring 052 -- Property-Based Testing Template for GoldenFloat Standardized PBT patterns following T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md", - "t27/specs/test_framework/verilog_bench_harness.t27 Ring 053 -- Verilog Bench Harness for Hardware-in-the-Loop Testing Integration framework for testing GoldenFloat operations against Verilog RTL", - "t27/specs/vsa/jones_polynomial.t27 Jones Polynomial -- Link invariant computed from input structure V(L, t) = (-t^(-3/4))^w(L) * where is Kauffman bracket", + "t27/specs/rings/ring_103_phi_sgd.t27 Port of rings/ring-103-rust/src/lib.rs -- the phi-tempered SGD step.", + "t27/specs/ternary/bigint.t27 TVC BigInt - Balanced Ternary Arbitrary Precision Arithmetic ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q Balanced Ternary representation: - Each trit has value {-1, 0, +1} - Number = Σ(trit[i] × 3^i) for i = 0..n-1", + "t27/specs/test_framework/graph_drift_detection.t27 Ring 054 — Graph Drift Detection for Structural Change Detection Monitors structural changes in mathematical and physics specifications over time", + "t27/specs/test_framework/property_test_template.t27 Ring 052 — Property-Based Testing Template for GoldenFloat Standardized PBT patterns following T27-MATH-PHYSICS-TEST-FRAMEWORK-SPEC.md", + "t27/specs/test_framework/verilog_bench_harness.t27 Ring 053 — Verilog Bench Harness for Hardware-in-the-Loop Testing Integration framework for testing GoldenFloat operations against Verilog RTL", + "t27/specs/trinet/etx.t27 The ETX link metric of gHashTag/tri-net, extracted as free functions. WHY THIS EXISTS. tri-net#62 mapped which of src/*.rs can become .t27 and recommended \"SELECTIVE extraction of pure logic into specs, not a wholesale rewrite\". routing.rs is marked LIKELY there. Its arithmetic is pure; what is not expressible is the shape around it -- `impl DeliveryRatio` and", + "t27/specs/vsa/jones_polynomial.t27 Jones Polynomial — Link invariant computed from input structure V(L, t) = (-t^(-3/4))^w(L) · ⟨L⟩ where ⟨L⟩ is Kauffman bracket", "t27/specs/vsa/ops.t27 Vector Symbolic Architecture Operations Bind, Unbind, Bundle, Similarity for ternary hypervectors", "t27/specs/vsa/similarity_search.t27 VSA Similarity Search Specification Ring 062 - Efficient similarity search in hyperdimensional space Defines semantic similarity operations for VSA trit vectors", - "t27/specs/vsa/vsa_core.t27 VSA (Vector Symbolic Architecture) Core Operations 01234 567891011: V = n 12 3^k 13 14^m 15 16^p 17 e^q VSA provides high-dimensional vector operations for: - Symbolic reasoning (bind/unbind for role-filler pairs) - Set operations (bundle for superposition)", - "ternary_add.t27 -- Balanced Ternary Addition Formal Spec Ring 043 -- Formal carry propagation invariants, closure, range formula", - "testgen.t27 -- Generic Test Generator for TDD-Inside-Spec Generates test code from spec test blocks for multiple backends", - "tf3.t27 -- TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]", + "t27/specs/vsa/vsa_core.t27 VSA (Vector Symbolic Architecture) Core Operations ⲤⲀⲔⲢⲀ ⲪⲞⲢⲘⲨⲖⲀ: V = n × 3^k × π^m × φ^p × e^q VSA provides high-dimensional vector operations for: - Symbolic reasoning (bind/unbind for role-filler pairs) - Set operations (bundle for superposition)", + "ternary_add.t27 — Balanced Ternary Addition Formal Spec Ring 043 — Formal carry propagation invariants, closure, range formula", + "testgen.t27 — Generic Test Generator for TDD-Inside-Spec Generates test code from spec test blocks for multiple backends", "tf3.t27 — TF3 (Ternary Float 3) Format Specification 8-bit representation for ternary neural network weights Bit layout: [S(1) E(3) M(4)] = [7:7][6:4][3:0]", + "tnf1024.t27 -- TNF1024: Ternary Network Float, 1024-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.", + "tnf128.t27 -- TNF128: Ternary Network Float, 128-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.", + "tnf16.t27 -- TNF16: Ternary Network Float. A fixed-field GoldenFloat whose EXPONENT is a balanced-ternary number, built to beat tekum16 on a ternary fabric: no regime decode (tekum16's main cost), the exponent is added natively in balanced ternary, and the mantissa keeps GF16's phi-optimal uniform 9-bit precision (vs tekum16 tapering to ~4 bits at extremes). layout: [ sign(1) | E = 4 balanced-ternary trits | M = 11 binary bits ]", + "tnf256.t27 -- TNF256: Ternary Network Float, 256-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.", + "tnf32.t27 -- TNF32: Ternary Network Float, 32-bit class. Top practical rung of the TF ladder. Balanced-ternary exponent = 6 trits (3^6 = 729 offsets, exponent +-364, ~219 decades), phi-ish 25-bit mantissa, NO regime decode. The direct ternary rival to tekum-32 / takum32: fixed fields, native balanced-ternary exponent add, uniform high-precision mantissa vs the tapered ~few-bit extremes of the log/tapered 32-bit formats.", + "tnf4.t27 -- TNF4: Ternary Network Float, 4-bit class (bottom rung). Balanced-ternary exponent = 2 trits (3^2 = 9 offsets, exponent +-4, ~2.4 decades), 1-bit mantissa, NO regime decode. layout: [ sign(1) | E = 2 balanced-ternary trits | M = 1 bit ] Positioning (the 4-bit rung is unique): the format-to-beat here is NOT tekum but **BitNet-1.58 ternary WEIGHTS** {-1,0,+1} -- a weight quantizer, not a real", + "tnf512.t27 -- TNF512: Ternary Network Float, 512-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.", + "tnf64.t27 -- TNF64: Ternary Network Float, 64-bit class. Derived from the ladder's width rule 1 + E_t + M = N, counting one position per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A research note (trinity-fpga/research/GF_T_GOLD_STANDARD_LADDER_2026-08-05.md) carries a different mantissa width for this rung; it falls short of the declared width and is superseded by this file.", + "tnf8.t27 -- TNF8: Ternary Network Float, 8-bit class. Rung of the TF ladder (TF4/8/16/32). Balanced-ternary exponent = 3 trits (3^3 = 27 offsets, exponent +-13, ~8 decades), phi-ish 4-bit mantissa, NO regime decode. Beats tekum-8 by the same structural argument as TF16 beats tekum16: fixed fields + native balanced-ternary exponent add, uniform mantissa. layout: [ sign(1) | E = 3 balanced-ternary trits | M = 4 bits ]", "tri-net/specs/crypto_frame.t27 Partial spec-first lift of src/crypto.rs (T27-first): the INTEGER session-frame discipline. The AEAD itself (ChaCha20-Poly1305), X25519 and HKDF stay in Rust; what lives here is everything an auditor checks with arithmetic alone: wire frame = [epoch u32 BE][counter u64 BE][ciphertext || tag16] AEAD nonce = [dir:1][epoch:4 BE][counter low 7 BE] (12 bytes)", "tri-net/specs/discovery.t27 Partial spec-first flip of src/discovery.rs (T27-first). The HELLO beacon byte layout `[src:4][seq:4][ts:8][n:1][heard:n*4][mac:16]` is pure integer arithmetic: frame length, MAC offset and the parse-side length gates are lifted here as the single source of truth. The HMAC itself and socket I/O stay in Rust (T27 cannot express them).", "tri-net/specs/gf16_format.t27 Partial spec-first lift of src/gf16.rs (T27-first): the GF16 BIT FORMAT. GF16 is the radio-DSP number format: [sign:1][exponent:6][mantissa:9], bias 31, round-to-nearest-even, no subnormals. The f64 encode/decode rounding stays in Rust (floating point is not a t27 target); the INTEGER geometry — field masks, extraction, composition and the NaN/Inf classifiers — is the single source of", @@ -513,11 +909,28 @@ "tri-net/specs/routing_etx.t27 Fixed-point formalization of the ETX link metric in src/routing.rs (T27-first). Delivery ratios and the RTI penalty are expressed in MILLI units (1000 = 1.0), ETX likewise in milli (1000 = 1.0 transmissions). f32::INFINITY has no integer analogue, so a DEAD link is the sentinel 0 (a real ETX is always >= 1000, so 0 is unambiguous). The live routing.rs path still runs the f32 version; a Rust", "tri-net/specs/rti_alert.t27 Partial spec-first flip of src/rti_alert.rs (T27-first). The centroid/velocity math there is f32 (sqrt/powi) and can't be expressed in T27's integer world, but the anomaly-severity -> alert-severity STEP MAPPING is pure integer logic: it is lifted here as the single source of truth so the Rust node can include! the generated function instead of hand-writing the ladder.", "tri-net/specs/wire.t27 Mesh datagram header, ported from src/wire.rs to T27 (spec-first). Fixed 11-byte header: [ver:1][kind:1][src:4 BE][dst:4 BE][ttl:1]. T27 has no byte arrays, so the serialized form is modeled as functions: header_byte(fields, idx) yields the idx-th header byte, and u32_be reassembles a big-endian word from 4 bytes (the parse path). The header bytes double as the", - "trinity_numeric_surface.t27 -- Public numeric interchange policy (GoldenFloat-first) NUMERIC-STANDARD-001 -- integer-backed GF raw words are the portable surface", - "types.t27 -- Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions", + "trinity_matrix/adapters_declared.t27 -- feature declared adapters: an I/O boundary stated as constants and a pure verdict function over a fixture transcript; the real transport stays outside the spec (S07, S11).", + "trinity_matrix/arrays.t27 -- feature arrays: fixed-size arrays, indexing and a loop over them.", + "trinity_matrix/clocked_state.t27 -- feature clocked state: registered variables updated by on_clock and a combinational output, the form the Trinity memory RTL specs use; runtime evidence comes from the Verilog backend through Icarus (t27c icarus-simulate) and the C backend runs the test blocks.", + "trinity_matrix/control_flow.t27 -- feature control flow: if/else, while, for over a range, break and continue.", + "trinity_matrix/enums.t27 -- feature enums: named values and a switch over them.", + "trinity_matrix/errors.t27 -- feature errors: a status code returned in-band, as the Trinity specs write it (TMS_ERR_* style): no error union, one code per outcome, tests on the codes.", + "trinity_matrix/functions.t27 -- feature functions: parameters, early return, recursion, calls between functions.", + "trinity_matrix/imports.t27 -- feature imports: a use of an existing corpus module (specs/base/types.t27); the symbols of the import are not used, so what is measured is that the import itself is accepted.", + "trinity_matrix/invariants.t27 -- feature tests and invariants: constant invariants and a test block that checks them.", + "trinity_matrix/module_state.t27 -- feature module state: a var at module level, read and written by functions.", + "trinity_matrix/neg_bodyless_fn.t27 -- NEGATIVE: a required function declared without a body (the shape of gHashTag/t27#3472); a test calls it, so nothing may report it executable.", + "trinity_matrix/neg_dropped_module.t27 -- NEGATIVE: a bare semicolon line ahead of the module line; the parser drops the module and the file must be reported as incompletely consumed, not accepted.", + "trinity_matrix/neg_false_assert.t27 -- NEGATIVE: a test whose assertion is false; typecheck stays ok, so only a runtime run can reject it, and it must.", + "trinity_matrix/neg_invalid_annotation.t27 -- NEGATIVE: a constant annotated str with an integer value; must not become an accepted executable capability.", + "trinity_matrix/neg_unresolved_import.t27 -- NEGATIVE: an import of a module that does not exist.", + "trinity_matrix/scalars.t27 -- feature scalars: integer and boolean constants, arithmetic, comparison, shifts and masks, as the Trinity headless profile writes them (S02).", + "trinity_matrix/strings.t27 -- feature strings: string constants, equality and a function returning one.", + "trinity_matrix/structs.t27 -- feature structs: a record type, a constructor and field access.", + "trinity_numeric_surface.t27 — Public numeric interchange policy (GoldenFloat-first) NUMERIC-STANDARD-001 — integer-backed GF raw words are the portable surface", "types.t27 — Base Types for t27 Language Trit, PackedTrit, TernaryWord definitions", - "unified_state.t27 -- Trinity Brain unified state (spec-first) Normative types for Strand VI. Zig/C/Verilog are generated under gen/ via t27c.", - "validation.t27 -- Validation Rules and Invariants TDD and language policy validation for t27 specs", + "unified_state.t27 — Trinity Brain unified state (spec-first) Normative types for Strand VI. Zig/C/Verilog are generated under gen/ via t27c.", + "validation.t27 — Validation Rules and Invariants TDD and language policy validation for t27 specs", "youtube_transcript.t27 — YouTube Transcript Extraction for NotebookLM Enrichment Ring 090 — Fallback for blocked YouTube URL uploads" ], "skills": [ diff --git a/apps/website/qa/tools-spec-contract.mjs b/apps/website/qa/tools-spec-contract.mjs index 322f2cc0ec..0f3de07c7a 100644 --- a/apps/website/qa/tools-spec-contract.mjs +++ b/apps/website/qa/tools-spec-contract.mjs @@ -183,7 +183,12 @@ assert.equal(tools.counts.triWithActions, tri.filter((t) => t.actions.length).le assert.equal(tools.counts.mcpTools, mcp.reduce((n, t) => n + t.tools.length, 0)) assert.equal(tools.counts.mcpWithTools, mcp.filter((t) => t.tools.length).length) assert.equal(tools.counts.mcpExternal, mcp.filter((t) => t.external).length) -assert.equal(tools.counts.mcpWithTools + tools.counts.mcpExternal, mcp.length, 'every MCP server either lists tools or is external') +// The claim is the one in the message -- a server nobody can read the tools of +// must at least say it is somebody else's code. It was written as a sum when +// every external server happened to list nothing, and mcp/inngest-dev (#994) is +// both: upstream's binary, and twenty tools recorded from its own tools/list. +// The counts either side of this line already pin each set on its own. +for (const s of mcp) assert.ok(s.tools.length || s.external, `${s.id} lists no tools and is not marked external`) for (const w of TOOL_WITNESSES) assert.equal(tools.counts.byWitness[w], tools.tools.filter((t) => t.witness === w).length) assert.equal(Object.values(tools.groups.triByAgent).flat().length, tri.length + tri.reduce((n, t) => n + Math.max(0, t.agents.length - 1), 0), 'triByAgent lists every tri command once per bound letter, unbound under "-"') assert.deepEqual(tools.groups.triByAgent['-'], tri.filter((t) => t.agents.length === 0).map((t) => t.id)) diff --git a/apps/website/scripts/catalog-work-report.mjs b/apps/website/scripts/catalog-work-report.mjs new file mode 100644 index 0000000000..0b342cbba7 --- /dev/null +++ b/apps/website/scripts/catalog-work-report.mjs @@ -0,0 +1,162 @@ +#!/usr/bin/env node +// catalog-work-report.mjs -- the pull-request body for an automated catalog refresh. +// +// The nightly scan used to end in `git push` straight to main. Ruleset 23148303 +// ("T27 mandatory work report") now requires the status check "T27 work report" +// on refs/heads/main and lists no bypass actors, so that push is rejected -- the +// same GH013 a person gets. The way in is the way everyone else takes: a pull +// request whose body carries the report scripts/pr_blog_report.py validates. +// +// Every number here is read from the artifacts the run just wrote and from the +// ones it replaced (git show HEAD~1), so the report says what actually changed +// rather than what the job hoped to do. A refresh that changes nothing produces +// no pull request at all -- the caller checks that before calling this. +// +// node scripts/catalog-work-report.mjs --head-sha <40-hex> --out /path/body.md +// +// The output is Markdown: prose, then one fenced JSON object between the two +// markers the validator looks for. +import { execFileSync } from 'node:child_process' +import { readFileSync, writeFileSync } from 'node:fs' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +const HERE = dirname(fileURLToPath(import.meta.url)) +const WEBSITE = join(HERE, '..') +const args = process.argv.slice(2) +const arg = (k) => { const i = args.indexOf(k); return i < 0 ? undefined : args[i + 1] } + +const headSha = arg('--head-sha') +const out = arg('--out') +if (!headSha || !/^[0-9a-f]{40}$/.test(headSha)) fail('--head-sha must be a full 40-character lowercase commit sha') +if (!out) fail('--out /path/to/body.md is required') + +function fail(msg) { + console.error(`catalog-work-report: ${msg}`) + process.exit(1) +} + +const read = (rel) => JSON.parse(readFileSync(join(WEBSITE, rel), 'utf8')) +// The previous catalog, as committed. Absent on the first run of a fresh +// checkout, which is a real state and not an error: the delta is then "unknown" +// and the report says so instead of inventing zeroes. +function previous(rel) { + try { + return JSON.parse(execFileSync('git', ['-C', WEBSITE, 'show', `HEAD~1:./${rel}`], { encoding: 'utf8', maxBuffer: 80 * 1024 * 1024 })) + } catch { + return null + } +} + +const manifest = read('public/t27/manifest.json') +const core = read('public/t27/shared-core.json') +const atlas = read('public/t27/universe-atlas.json') +const before = previous('public/t27/manifest.json') + +const paths = new Set(manifest.specs.map((s) => s.path)) +const pathsBefore = new Set((before?.specs ?? []).map((s) => s.path)) +const added = [...paths].filter((p) => !pathsBefore.has(p)).sort() +const removed = [...pathsBefore].filter((p) => !paths.has(p)).sort() +const repos = manifest.repos.map((r) => r.repo).sort() +const reposBefore = new Set((before?.repos ?? []).map((r) => r.repo)) +const newRepos = repos.filter((r) => !reposBefore.has(r)) + +// A sentence naming the biggest directories a change touched: "specs/tools 94, +// bootstrap/tests 90" says more about a refresh than "483 specs added". +const byDir = (list) => { + const n = new Map() + for (const p of list) { const d = p.split('/').slice(0, 2).join('/'); n.set(d, (n.get(d) ?? 0) + 1) } + return [...n].sort((a, b) => b[1] - a[1]).slice(0, 6).map(([d, c]) => `${d} ${c}`).join(', ') +} + +const delta = before === null + ? 'no previous catalog in this checkout to compare against' + : `${added.length} added, ${removed.length} removed` +const changes = [ + `The catalog now carries ${manifest.specCount} specs across ${repos.length} repositories (${repos.join(', ')}); against the previous commit that is ${delta}.`, +] +if (added.length) changes.push(`Specs added, by directory: ${byDir(added)}.`) +if (removed.length) changes.push(`Specs no longer present in their source repositories, by directory: ${byDir(removed)}.`) +if (newRepos.length) changes.push(`Repositories new to the catalog in this run: ${newRepos.join(', ')}.`) +changes.push(`The shared core was rebuilt from this manifest and records ${core.specs.length} specs and ${core.collisions.length} module-name collisions.`) +changes.push(`The universe atlas was rebuilt from that core and now describes ${(atlas.worlds ?? []).length} worlds and ${(atlas.specs ?? []).length} specs.`) +if (typeof manifest.duplicatesSkipped === 'number') { + changes.push(`Byte-identical copies discarded while vendoring, so one file does not appear twice in the library: ${manifest.duplicatesSkipped}.`) +} + +const health = manifest.health ?? {} +const tests = [ + { + command: 'npm run discover -- scan && npm run discover -- vendor', + result: `the GitHub scan qualified ${repos.length} repositories and vendored their .t27 files`, + status: 'passed', + evidence: `manifest.repos records ${manifest.repos.map((r) => `${r.repo}@${String(r.commit).slice(0, 9)}`).join(', ')}`, + }, + { + command: 'npm run core -- index', + result: 'the shared core was rebuilt from the manifest just written', + status: 'passed', + evidence: `shared-core provenance.manifestSha256 ${String(core.provenance?.manifestSha256 ?? '').slice(0, 16)} over ${core.specs.length} specs`, + }, + { + command: 'npm run atlas -- scan && npm run atlas -- build', + result: 'the map artifact was rebuilt from that same core', + status: 'passed', + evidence: `universe-atlas at ${atlas.at} with provenance.manifestSha256 ${String(atlas.provenance?.manifestSha256 ?? '').slice(0, 16)}`, + }, + { + command: 'npm run check:discovery check:shared-core check:spec-catalog check:queen-atlas check:queen-catalog check:queen-continuous check:queen-spec-mirrors check:skills-catalog check:crons-catalog check:agents check:tools check:docs', + result: 'every catalog gate passed against the tree this pull request carries', + status: 'passed', + evidence: 'the workflow step "Catalog gates" ran them in order and the job reached the commit step, which only runs on success', + }, + { + command: 'the vendored compiler wasm compiled every spec in the catalog', + result: `health across the corpus is ${health.ok ?? 0} ok, ${health.warn ?? 0} warn, ${health.fail ?? 0} fail`, + status: 'passed', + evidence: `manifest.health ${JSON.stringify(health)} measured by ${manifest.wasmBytes} bytes of t27_compiler.wasm`, + }, +] + +const limitations = [ + 'Health is what the vendored compiler said at scan time, not a statement that every spec is correct or that its generated code was run.', + 'The scan reads public repositories only: a private repository writing .t27 specs is invisible to it and will not appear on the map.', + 'A spec that is byte-identical to one already vendored is discarded rather than listed twice, so a repository can qualify and still contribute nothing visible.', +] +if (before === null) limitations.push('This run had no previous catalog to diff against, so the added and removed counts above are not stated.') +const unreachable = manifest.generatedFrom?.unreachableFromDefaultRef ?? [] +if (unreachable.length) { + limitations.push(`${unreachable.length} t27 specs are not on the default ref and reach the site through a named overlay ref; a reader cloning master alone will not find them.`) +} + +const body = `A scheduled refresh of the .t27 catalog from GitHub. The scan, the vendor step, the shared core, the atlas and every catalog gate ran in \`t27-world-scan.yml\`; this pull request carries only what they wrote under \`apps/website/public\`. + +**${manifest.specCount} specs, ${repos.length} repositories** — ${delta}. + + +\`\`\`json +${JSON.stringify({ + version: 1, + head_sha: headSha, + summary: `A scheduled scan of GitHub for .t27 specs refreshed the catalog behind the Queen map and the Spec Explorer: ${manifest.specCount} specs across ${repos.length} repositories, ${delta} against the previous commit.`, + changes, + tests, + limitations, + tags: ['t27', 'catalog', 'automation', 'specs'], + blog: { + title: 'A nightly scan keeps the spec catalog honest', + summary: `The map and the library are built from whatever GitHub holds tonight: ${manifest.specCount} specs across ${repos.length} repositories, vendored, compiled and gated before anything reaches the site.`, + outline: [ + `The catalog behind the map and the Spec Explorer is not a list somebody maintains by hand; it is the output of a scan that reads the public inventories of the owners a spec names and every repository a vendored source points at.`, + `This run ended with ${manifest.specCount} specs across ${repos.length} repositories (${repos.join(', ')}), and against the previous commit that is ${delta} — the numbers come from the artifacts themselves, not from the job's intentions.`, + `Each vendored file was compiled by the same wasm build of the compiler the browser runs, so the health shown beside a spec in the library is a measurement rather than a label: ${health.ok ?? 0} ok, ${health.warn ?? 0} warn, ${health.fail ?? 0} fail.`, + `The shared core and the universe atlas were rebuilt from this exact manifest in the same job, which is what keeps the map and the library describing one corpus instead of two snapshots taken at different times.`, + ], + }, +}, null, 2)} +\`\`\` + +` + +writeFileSync(out, body) +console.log(`catalog-work-report: ${manifest.specCount} specs, ${repos.length} repositories, ${delta} -> ${out}`) diff --git a/apps/website/scripts/sync-t27-specs.mjs b/apps/website/scripts/sync-t27-specs.mjs index 4cf86db9ff..a02cc62393 100644 --- a/apps/website/scripts/sync-t27-specs.mjs +++ b/apps/website/scripts/sync-t27-specs.mjs @@ -44,26 +44,106 @@ function fail(msg) { process.exit(1) } -if (!existsSync(SPECS_SRC)) fail(`spec corpus not found at ${SPECS_SRC} (set T27_ROOT)`) -if (!existsSync(WASM_SRC)) fail(`wasm bridge not built.\n cd ${T27}/bindings/wasm-explorer\n cargo build --target wasm32-unknown-unknown --release`) +// Where t27 itself comes from. +// +// For a year it came from this line's default: a working copy on one laptop. +// That is how the library fell 540 specs behind master -- specs/tools (94), +// bootstrap/tests (90), specs/ternary (60), specs/igla (44), specs/crons (33), +// specs/agents (27), specs/skills (26) are all on master and none of them were +// on the branch the last sync happened to be standing on. No workflow could fix +// it either: CI has no /Users/playom/t27, so the daily scan skipped the +// repository that holds two thirds of the corpus. +// +// So GitHub is the source, like the other four founding repositories, and the +// local checkout is the opt-in (T27_LOCAL=1) for whoever is changing the +// compiler and needs to see uncommitted specs on the page. +const FROM_LOCAL = process.env.T27_LOCAL === '1' || process.env.T27_LOCAL === 'true' +if (FROM_LOCAL && !existsSync(SPECS_SRC)) fail(`T27_LOCAL is set but no spec corpus at ${SPECS_SRC} (set T27_ROOT)`) + +// The compiler wasm is built by cargo, which CI does not run either. The copy +// already vendored beside the corpus is the one the browser loads today, so a +// spec refresh reuses it and says so; only a compiler change needs the build. +// Read before the output directory is wiped, not after. +const VENDORED_WASM = join(OUT_DIR, 't27_compiler.wasm') +let wasmBuf, wasmFrom +if (existsSync(WASM_SRC)) { wasmBuf = readFileSync(WASM_SRC); wasmFrom = 'cargo build in the local checkout' } +else if (existsSync(VENDORED_WASM)) { wasmBuf = readFileSync(VENDORED_WASM); wasmFrom = 'the copy already vendored here' } +else fail(`no compiler wasm.\n cd ${T27}/bindings/wasm-explorer\n cargo build --target wasm32-unknown-unknown --release`) + +const gh = (args) => execFileSync('gh', args, { encoding: 'utf8', timeout: 120000, maxBuffer: 60 * 1024 * 1024 }).trim() + +// One request, no working copy left behind. Returns the extracted root. +function tarball(repo, ref) { + const dir = mkdtempSync(join(tmpdir(), `t27-${repo.replace(/\W/g, '-')}-`)) + execFileSync('sh', ['-c', + `gh api "repos/gHashTag/${repo}/tarball/${ref}" > "${dir}/a.tar.gz" && tar -xzf "${dir}/a.tar.gz" -C "${dir}"`, + ], { stdio: 'ignore' }) + const inner = execFileSync('sh', ['-c', `ls -d "${dir}"/*/ | head -1`], { encoding: 'utf8' }).trim() + return { dir, root: inner.replace(/\/$/, '') } +} + +// Exclusions, all of them copies of files counted elsewhere rather than +// judgement calls about what deserves to be in the library: +// .git/ object store +// .claude/ git worktrees -- second checkouts of files already counted +// public/t27/files/ THIS corpus, vendored into the website repository. The +// trinity tarball carries it, so without this line a refresh vendors its +// own output back in: the first run produced 563 "trinity" specs, which +// were the previous snapshot of t27 wearing a different path. +const specFiles = (root) => execFileSync('find', [ + root, '-name', '*.t27', '-type', 'f', + '-not', '-path', `${root}/.git/*`, + '-not', '-path', `${root}/.claude/*`, + '-not', '-path', '*/public/t27/files/*', +], { encoding: 'utf8' }).split('\n').filter(Boolean).sort() -const sha = execFileSync('git', ['-C', T27, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() -const shortSha = sha.slice(0, 9) -const dirty = execFileSync('git', ['-C', T27, 'status', '--porcelain', '--', 'specs', 'chips', 'compiler', 'bootstrap/src/compiler.rs'], { encoding: 'utf8' }).trim() +const T27_REF = process.env.T27_REF || 'master' +// The eight-lesson course and hello_world live on a branch that was never +// merged, so master alone would delete the whole onboarding path from the site. +// Named refs contribute only the paths the main ref does not have, which means +// this list retires itself: merge the course and the overlay contributes zero. +const OVERLAY_REFS = (process.env.T27_OVERLAY_REFS ?? 'fix/reject-vibee-specs').split(',').map((s) => s.trim()).filter(Boolean) + +let sha, shortSha, dirty, t27Root, t27Tmp, overlayUsed = [] +if (FROM_LOCAL) { + sha = execFileSync('git', ['-C', T27, 'rev-parse', 'HEAD'], { encoding: 'utf8' }).trim() + dirty = execFileSync('git', ['-C', T27, 'status', '--porcelain', '--', 'specs', 'chips', 'compiler', 'bootstrap/src/compiler.rs'], { encoding: 'utf8' }).trim() + t27Root = T27 +} else { + sha = gh(['api', `repos/gHashTag/t27/commits/${T27_REF}`, '--jq', '.sha']) + dirty = '' + const main = tarball('t27', T27_REF) + t27Root = main.root + t27Tmp = main.dir + // Overlay: copy in only what the main ref is missing, and record what each + // one actually contributed rather than claiming the whole branch. + const have = new Set(specFiles(t27Root).map((f) => relative(t27Root, f))) + for (const ref of OVERLAY_REFS) { + let extra + try { extra = tarball('t27', ref) } catch { console.log(` warning: overlay ref ${ref} unreachable, skipped`); continue } + const added = [] + for (const abs of specFiles(extra.root)) { + const rel = relative(extra.root, abs) + if (have.has(rel)) continue + const dest = join(t27Root, rel) + mkdirSync(dirname(dest), { recursive: true }) + writeFileSync(dest, readFileSync(abs)) + have.add(rel) + added.push(rel) + } + rmSync(extra.dir, { recursive: true, force: true }) + overlayUsed.push({ ref, commit: gh(['api', `repos/gHashTag/t27/commits/${ref}`, '--jq', '.sha']), added: added.length, paths: added.sort() }) + console.log(` overlay ${ref}: ${added.length} path(s) not on ${T27_REF}`) + } +} +shortSha = sha.slice(0, 9) // Every .t27 in the repo, not just specs/ -- `chips/` alone holds ~147 real // specs, and a corpus that quietly stops at specs/ cannot show a problem living -// outside it. Two exclusions, both duplicates rather than judgement calls: -// .git/ -- object store -// .claude/ -- git worktrees, i.e. second checkouts of files already counted -// (the same compiler/ast.t27 appears in every worktree) -const localFiles = execFileSync('find', [ - T27, '-name', '*.t27', '-type', 'f', - '-not', '-path', `${T27}/.git/*`, - '-not', '-path', `${T27}/.claude/*`, -], { encoding: 'utf8' }).split('\n').filter(Boolean).sort() +// outside it. What is left out is listed at specFiles() above. +const t27Files = specFiles(t27Root) -if (!localFiles.length) fail('no .t27 files found') +if (!t27Files.length) fail('no .t27 files found') // --------------------------------------------------------------------------- // Other repositories @@ -84,30 +164,25 @@ const EXTRA_REPOS = (process.env.T27_SKIP_REMOTE ? [] : [ 'tt-trinity-corona', ]) -const sources = [{ repo: 't27', root: T27, files: localFiles, commit: null }] +const sources = [{ repo: 't27', root: t27Root, files: t27Files, commit: FROM_LOCAL ? null : sha, tmp: t27Tmp }] for (const repo of EXTRA_REPOS) { let branch try { - branch = execFileSync('gh', ['api', `repos/gHashTag/${repo}`, '--jq', '.default_branch'], { encoding: 'utf8' }).trim() + branch = gh(['api', `repos/gHashTag/${repo}`, '--jq', '.default_branch']) } catch { console.log(` warning: ${repo} unreachable, skipped`) continue } - const sha = execFileSync('gh', ['api', `repos/gHashTag/${repo}/commits/${branch}`, '--jq', '.sha'], { encoding: 'utf8' }).trim() - const dir = mkdtempSync(join(tmpdir(), `t27-${repo}-`)) + const sha = gh(['api', `repos/gHashTag/${repo}/commits/${branch}`, '--jq', '.sha']) + let pulled try { - execFileSync('sh', ['-c', - `gh api "repos/gHashTag/${repo}/tarball/${branch}" > "${dir}/a.tar.gz" && tar -xzf "${dir}/a.tar.gz" -C "${dir}"`, - ], { stdio: 'ignore' }) + pulled = tarball(repo, branch) } catch { console.log(` warning: ${repo} tarball failed, skipped`) continue } - const inner = execFileSync('sh', ['-c', `ls -d "${dir}"/*/ | head -1`], { encoding: 'utf8' }).trim() - const found = execFileSync('find', [inner, '-name', '*.t27', '-type', 'f'], { encoding: 'utf8' }) - .split('\n').filter(Boolean).sort() - sources.push({ repo, root: inner.replace(/\/$/, ''), files: found, commit: sha, tmp: dir }) + sources.push({ repo, root: pulled.root, files: specFiles(pulled.root), commit: sha, tmp: pulled.dir }) } rmSync(OUT_DIR, { recursive: true, force: true }) @@ -116,7 +191,6 @@ mkdirSync(SPECS_OUT, { recursive: true }) // Run the same wasm the browser runs, here, over the whole corpus. Health has // to be known before a row is drawn -- the alternative is compiling 667 specs // in the browser just to colour a list, which would take minutes. -const wasmBuf = readFileSync(WASM_SRC) const { instance: wasmInst } = await WebAssembly.instantiate(wasmBuf, {}) const { memory, t27_alloc, t27_free, t27_analyze } = wasmInst.exports @@ -136,6 +210,11 @@ function analyze(src) { const entries = [] const seenContent = new Map() // content hash -> path already kept let duplicates = 0 +// Not just how many, but which. A count cannot answer "does this spec exist +// anywhere else?", which is the question a reader of a multi-repository corpus +// actually has -- and the losing bytes are discarded here, so if this list is +// not written now nothing downstream can reconstruct it. +const duplicatePairs = [] for (const src of sources) { for (const abs of src.files) { @@ -149,7 +228,7 @@ for (const abs of src.files) { // chip repos, so without this the library would carry 147 phantom entries. const hash = createHash('sha256').update(text).digest('hex') const already = seenContent.get(hash) - if (already) { duplicates++; continue } + if (already) { duplicates++; duplicatePairs.push({ path: rel, repo: src.repo, sameAs: already }); continue } seenContent.set(hash, rel) const dest = join(SPECS_OUT, rel) @@ -160,6 +239,49 @@ for (const abs of src.files) { } } +// The companions a spec cites. +// +// A spec's SOURCES names the files it was written from -- a README, a report, +// a directory -- and scripts/docs-from-specs.mjs refuses a citation it cannot +// resolve, on the principle that a document may not point at something that is +// not there. Those files are not .t27, so the loop above skips them, and the +// first GitHub-sourced refresh deleted the ones a previous hand-vendored commit +// had put here -- the seven docs/system/*.md a chapter renders, and the reports +// evidence.t27 cites. They are copied from the same tarball, at the same commit, +// as the spec that names them. +// +// `trinity:`-prefixed paths are resolved against this repository instead and are +// not vendored, so they are skipped here. +// Two shapes name a file: a SOURCES list, and a single-string constant such as +// BODY_EN, whose value is the markdown a docs chapter renders. A value with no +// extension (DIAGRAM = "ladder", TABLE = "claims") is an identifier, not a path, +// and is skipped by the extension test below. +const SOURCES_DECL = /\bSOURCES\s*:\s*\[\d*\]\s*str\s*=\s*\[([^\]]*)\]/ +const STRING_DECL = /\b[A-Z][A-Z0-9_]*\s*:\s*str\s*=\s*"([^"]+)"/g +const TEXT_FILE = /\.(md|markdown|txt|rst|adoc|csv|json|toml|ya?ml)$/i +let companions = 0 +for (const src of sources) { + for (const abs of src.files) { + const text = readFileSync(abs, 'utf8') + const decl = SOURCES_DECL.exec(text) + const cited = [ + ...(decl ? [...decl[1].matchAll(/"([^"]+)"/g)].map((m) => m[1]) : []), + ...[...text.matchAll(STRING_DECL)].map((m) => m[1]).filter((v) => TEXT_FILE.test(v)), + ] + for (const rel of cited) { + if (rel.startsWith('trinity:') || rel.endsWith('.t27') || rel.includes('..') || rel.startsWith('/')) continue + const from = join(src.root, rel) + if (!existsSync(from)) continue + const dest = join(SPECS_OUT, src.repo === 't27' ? rel : `${src.repo}/${rel}`) + if (existsSync(dest)) continue + mkdirSync(dirname(dest), { recursive: true }) + cpSync(from, dest, { recursive: true }) + companions += 1 + } + } +} +if (companions) console.log(` companions: ${companions} non-spec file(s) cited by SOURCES vendored beside their spec`) + // Tarballs were extracted to temp dirs; nothing should outlive this run. for (const s of sources) if (s.tmp) rmSync(s.tmp, { recursive: true, force: true }) @@ -169,8 +291,8 @@ for (const s of sources) if (s.tmp) rmSync(s.tmp, { recursive: true, force: true const registered = registerDescriptionExceptions(entries, join(WEBSITE, 'qa/language-exceptions.json')) if (registered !== null) console.log(` qa exceptions: ${registered} spec descriptions registered for the RU audit`) -cpSync(WASM_SRC, join(OUT_DIR, 't27_compiler.wasm')) -const wasmBytes = readFileSync(WASM_SRC).length +writeFileSync(join(OUT_DIR, 't27_compiler.wasm'), wasmBuf) +const wasmBytes = wasmBuf.length // The course comes first, in reading order, and the page opens on its first // lesson. Everything else keeps its path order behind them. @@ -214,26 +336,34 @@ const { totalLines, categories, tags, health, backendFailures, totals } = corpus // repositories, and asking the superproject's history about their paths returns // "no commit" for files that are perfectly well committed elsewhere. That // mistake produced a 46-file false alarm before this was written. -const DEFAULT_REF = process.env.T27_DEFAULT_REF || 'origin/master' -let submodulePaths = [] -try { - submodulePaths = execFileSync('git', ['-C', T27, 'config', '-f', '.gitmodules', '--get-regexp', 'path'], { encoding: 'utf8' }) - .split('\n').filter(Boolean).map((line) => line.trim().split(/\s+/)[1]).filter(Boolean) -} catch { - // No .gitmodules is a valid state, not an error. -} -const ownedByASubmodule = (rel) => submodulePaths.some((s) => rel === s || rel.startsWith(`${s}/`)) - +// Sourced from GitHub there is nothing to guess: the overlay loop above copied +// in exactly the paths the main ref does not have, and kept the list. Sourced +// from a working copy the question is still open, so it is still asked. +const DEFAULT_REF = FROM_LOCAL ? (process.env.T27_DEFAULT_REF || 'origin/master') : T27_REF const unreachable = [] let reachableChecked = 0 -for (const e of entries) { - if (e.repo !== 't27') continue // other repos ship a committed tarball sha - if (ownedByASubmodule(e.path)) continue // committed in its own repository - reachableChecked += 1 +if (!FROM_LOCAL) { + reachableChecked = entries.filter((e) => e.repo === 't27').length + const overlayPaths = new Set(overlayUsed.flatMap((o) => o.paths)) + for (const e of entries) if (e.repo === 't27' && overlayPaths.has(e.path)) unreachable.push(e.path) +} else { + let submodulePaths = [] try { - execFileSync('git', ['-C', T27, 'cat-file', '-e', `${DEFAULT_REF}:${e.path}`], { stdio: 'ignore' }) + submodulePaths = execFileSync('git', ['-C', T27, 'config', '-f', '.gitmodules', '--get-regexp', 'path'], { encoding: 'utf8' }) + .split('\n').filter(Boolean).map((line) => line.trim().split(/\s+/)[1]).filter(Boolean) } catch { - unreachable.push(e.path) + // No .gitmodules is a valid state, not an error. + } + const ownedByASubmodule = (rel) => submodulePaths.some((s) => rel === s || rel.startsWith(`${s}/`)) + for (const e of entries) { + if (e.repo !== 't27') continue // other repos ship a committed tarball sha + if (ownedByASubmodule(e.path)) continue // committed in its own repository + reachableChecked += 1 + try { + execFileSync('git', ['-C', T27, 'cat-file', '-e', `${DEFAULT_REF}:${e.path}`], { stdio: 'ignore' }) + } catch { + unreachable.push(e.path) + } } } unreachable.sort() @@ -254,6 +384,11 @@ writeFileSync(join(OUT_DIR, 'manifest.json'), JSON.stringify({ defaultRef: DEFAULT_REF, t27SpecsChecked: reachableChecked, unreachableFromDefaultRef: unreachable, + // How this snapshot was taken, so a reader can tell a reproducible refresh + // from one that shipped whatever was on somebody's disk. + source: FROM_LOCAL ? 'local working copy' : `github tarball gHashTag/t27@${T27_REF}`, + overlayRefs: overlayUsed.map(({ ref, commit, added }) => ({ ref, commit, added })), + wasmSource: wasmFrom, }, wasmBytes, specCount: entries.length, @@ -261,6 +396,7 @@ writeFileSync(join(OUT_DIR, 'manifest.json'), JSON.stringify({ categories, repos: sources.map((s) => ({ repo: s.repo, commit: s.commit ?? sha, specs: entries.filter((e) => e.repo === s.repo).length })), duplicatesSkipped: duplicates, + duplicates: duplicatePairs.sort((x, y) => x.path.localeCompare(y.path)), tags, health, backendFailures, diff --git a/apps/website/src/components/SpecChipView.tsx b/apps/website/src/components/SpecChipView.tsx index 2b5f719c5d..48182aab4f 100644 --- a/apps/website/src/components/SpecChipView.tsx +++ b/apps/website/src/components/SpecChipView.tsx @@ -10,10 +10,12 @@ // compiler default", and every field carries its own width for that reason. // // This is NOT a placed-and-routed netlist, and it is not synthesis output. The -// .t27 -> Verilog backend currently emits module shells: across the 676-spec -// corpus, 361 produce Verilog that yosys accepts, and every one of them yields -// 0 LUTs and 0 flip-flops -- the 4-8 cells that appear are IBUF/OBUF pads. So -// there is no cell placement to show, and drawing one would be an invention. +// .t27 -> Verilog backend emits module shells: in the yosys sweep of 2026-09-06, +// across a corpus of 676 specs, 361 produced Verilog that yosys accepts, and +// every one of them yielded 0 LUTs and 0 flip-flops -- the 4-8 cells that appear +// are IBUF/OBUF pads. The corpus is larger now and the sweep has not been re-run, +// so those are the last measured numbers and not a count of today's corpus. There +// is no cell placement to show, and drawing one would be an invention. // // What IS drawn is the datapath the declarations force: how many bit lanes each // value needs, where a struct's fields sit relative to one another, and which diff --git a/apps/website/src/index.css b/apps/website/src/index.css index 1916c5e09d..6d1cbd7861 100644 --- a/apps/website/src/index.css +++ b/apps/website/src/index.css @@ -1375,13 +1375,17 @@ input:focus-visible { leaving the code 332. Scoped under .spec-x like the rest of the Explorer. */ .spec-x-brief { min-height: 0; } /* This box sits in a column flex with min-height:0, so it shrinks under - pressure -- and it has nothing to give. Collapsed it is one 36px row, and at - 370px, where the toolbar above wraps to two lines, it was squeezed to 28px - and the summary drew itself over the tab strip below; open it was squeezed - from 461px to the same 28px and drew over everything. So it never shrinks, - and when open it takes what it needs up to 45vh and scrolls the rest, - leaving the tab strip and the code pane their own height. */ -.spec-x-brief.is-collapsible { flex: 0 0 auto; } + pressure -- and it has nothing to give. In the embed, collapsed, it is one + 36px row: at 370px, where the toolbar above wraps to two lines, it was + squeezed to 28px and the summary drew itself over the tab strip. On /specs, + where it is always open, it was worse -- measured at 404px the box was 0px + tall around 636px of content, which then drew straight over the tab strip and + the code. The first fix here was scoped to the embed's collapsible variant + and left that case exactly as it was. + So: no variant shrinks, and any open one takes what it needs up to 45vh and + scrolls the rest, leaving the tabs and the code their own height. */ +.spec-x-brief { flex: 0 0 auto; } +.spec-x-brief:not(.is-collapsible), .spec-x-brief.is-collapsible[open] { max-height: 45vh; overflow: auto; diff --git a/apps/website/src/lib/t27Compiler.ts b/apps/website/src/lib/t27Compiler.ts index 3ca4c94166..148d44c661 100644 --- a/apps/website/src/lib/t27Compiler.ts +++ b/apps/website/src/lib/t27Compiler.ts @@ -107,6 +107,14 @@ export interface SpecManifest { tags: Record repos: { repo: string; commit: string; specs: number }[] duplicatesSkipped: number + /** + * The copies behind that count: a file whose bytes were already vendored from + * somewhere else, and the path that was kept instead. The losing bytes are + * discarded at vendor time, so without this list nothing downstream could say + * that a spec lives in more than one repository. Absent on a catalog written + * before the list was recorded. + */ + duplicates?: { path: string; repo: string; sameAs: string }[] specs: SpecEntry[] } diff --git a/apps/website/src/pages/SpecExplorer.tsx b/apps/website/src/pages/SpecExplorer.tsx index 6a5ad396af..38f85fd126 100644 --- a/apps/website/src/pages/SpecExplorer.tsx +++ b/apps/website/src/pages/SpecExplorer.tsx @@ -61,11 +61,12 @@ const UI = { compiling: 'Analysing…', back: '← Home', backToLibrary: 'All specs', + alsoIn: 'The same bytes are also vendored at:', chipTitle: 'ON THE CHIP', chipDerived: 'Derived from what this spec declares: the bit width of every constant, the field layout of every packed struct, and the parameter and return widths of every function. Those are hardware facts the language requires you to state.', chipNotSynth: - 'Not a placed-and-routed netlist. The .t27 → Verilog backend currently emits module shells: of 676 specs, 361 produce Verilog yosys accepts, and every one yields 0 LUTs and 0 flip-flops. There is no cell placement to show, so none is drawn.', + 'Not a placed-and-routed netlist. The .t27 → Verilog backend emits module shells: in the yosys sweep of 2026-09-06, over a corpus of 676 specs, 361 produced Verilog yosys accepts and every one yielded 0 LUTs and 0 flip-flops. The corpus has grown since; the sweep has not been re-run, so that is the last measurement rather than a count of today. There is no cell placement to show, so none is drawn.', chipEmpty: 'This spec declares nothing with a fixed bit width, so there is no datapath to draw. Nothing is inferred to fill the space.', chipConsts: 'constants', @@ -160,11 +161,12 @@ const UI = { compiling: 'Анализ…', back: '← На главную', backToLibrary: 'Все спеки', + alsoIn: 'Те же байты лежат также в:', chipTitle: 'НА КРИСТАЛЛЕ', chipDerived: 'Построено из того, что объявляет спека: разрядность каждой константы, раскладка полей каждой packed-структуры, ширины параметров и возврата каждой функции. Это аппаратные факты, которые язык требует указать явно.', chipNotSynth: - 'Это не размещённый и не разведённый нетлист. Бэкенд .t27 → Verilog сейчас выдаёт оболочки модулей: из 676 спек 361 даёт Verilog, который принимает yosys, и каждая — 0 LUT и 0 триггеров. Размещать нечего, поэтому ничего и не нарисовано.', + 'Это не размещённый и не разведённый нетлист. Бэкенд .t27 → Verilog выдаёт оболочки модулей: в прогоне yosys от 2026-09-06 по корпусу из 676 спек 361 дала Verilog, который принимает yosys, и каждая — 0 LUT и 0 триггеров. Корпус с тех пор вырос, а прогон не повторяли, так что это последнее измерение, а не счёт на сегодня. Размещать нечего, поэтому ничего и не нарисовано.', chipEmpty: 'Эта спека не объявляет ничего с фиксированной разрядностью, поэтому тракт данных рисовать не из чего. Ничего не додумано.', chipConsts: 'константы', @@ -489,10 +491,13 @@ export default function SpecExplorer() { const wanted = new URLSearchParams(window.location.hash.split('?')[1] || '').get('spec') const target = resolveManifestSpec(m,wanted) if (target) { - // A deep-linked spec is usually outside the course, and landing on a - // filter that excludes the very spec the link named would show an - // empty list next to an open file. - if (!target.tutorial) setHealthFilter('all') + // An address that names a spec is someone asking for the corpus at + // that spec, so the library beside it is the whole library. This used + // to lift the course filter only for a spec outside the course, and + // the homepage frame opens hello_world -- lesson 0 -- so it kept the + // course chip on and read "9 specs" beside a map saying 856. The + // course default is for an arrival that names nothing. + if (wanted) setHealthFilter('all') // A shared link names a spec on purpose, so on a phone it opens that // spec. The featured-spec fallback does not: nobody asked for it, and // the library is the honest landing view. @@ -514,7 +519,7 @@ export default function SpecExplorer() { if (!wanted || wanted === selected?.path) return try { const target = resolveManifestSpec(manifest, wanted) - if (!target.tutorial) setHealthFilter('all') + setHealthFilter('all') setMobilePane('detail') void pickRef.current?.(target) } catch { @@ -552,6 +557,20 @@ export default function SpecExplorer() { return () => { body.style.paddingBottom = previous } }, [embedded]) + // Which specs are also somewhere else, byte for byte. Vendoring keeps the + // first copy it sees and discards the rest, so the corpus shows one entry for + // a file that may live in four repositories -- true, and until now invisible. + // Keyed by the path that was kept, which is the one a reader has open. + const copiesOf = useMemo(() => { + const index = new Map() + for (const d of manifest?.duplicates ?? []) { + const list = index.get(d.sameAs) + if (list) list.push({ path: d.path, repo: d.repo }) + else index.set(d.sameAs, [{ path: d.path, repo: d.repo }]) + } + return index + }, [manifest]) + const filtered = useMemo(() => { if (!manifest) return [] const q = query.trim().toLowerCase() @@ -1395,6 +1414,20 @@ export default function SpecExplorer() { {selected.description}

)} + {/* The same bytes, somewhere else. One entry can stand for + copies in several repositories, and a reader deciding + where a spec really lives needs to be told that. */} + {(copiesOf.get(selected.path)?.length ?? 0) > 0 && ( +

+ {ui.alsoIn}{' '} + {copiesOf.get(selected.path)!.map((c, i) => ( + + {i > 0 ? ', ' : ''} + {c.path} + + ))} +

+ )} {/* Derived from the compile, not written by hand -- so it cannot drift from the artifact it describes. */} {selected.summary && ( From 9921becd6a141331c3755f84c669b9e63be599fe Mon Sep 17 00:00:00 2001 From: Dmitriy Vasilev Date: Tue, 15 Sep 2026 22:32:27 +0700 Subject: [PATCH 2/5] fix(website): the duplicate list survives the vendor step MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sync-t27-specs.mjs records which file was dropped for which, and then mergeWorld rebuilt the manifest from a fixed list of fields and dropped the list itself -- so the one place that knows a spec lives in more than one repository was thrown away one step later. It is carried through now, a scanned world contributes its own pairs the same way it contributes entries, and the contract's manifest key order names the new field rather than failing on it. Синк записывает, какой файл отброшен в пользу какого, а шаг vendor пересобирал манифест по фиксированному списку полей и терял этот список. Теперь он переносится, найденный мир добавляет свои пары так же, как свои записи, а контракт порядка ключей знает о новом поле. Co-Authored-By: Claude Opus 5 --- apps/website/qa/t27-world-discovery.mjs | 2 +- apps/website/scripts/discover-t27-worlds.mjs | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/website/qa/t27-world-discovery.mjs b/apps/website/qa/t27-world-discovery.mjs index 5b752703be..6c726f4562 100644 --- a/apps/website/qa/t27-world-discovery.mjs +++ b/apps/website/qa/t27-world-discovery.mjs @@ -91,7 +91,7 @@ const merged=d.mergeWorld(base,world,[entry('dmitrii-f-t27/trinity-memory/specs/ assert.deepEqual(merged.specs.slice(0,2),base.specs,'founding entries stay first and untouched'); assert.equal(merged.specCount,4);assert.equal(merged.repos.length,3);assert.equal(merged.repos[2].discoveredAt,world.at); assert.equal(merged.categories['dmitrii-f-t27/trinity-memory'],2);assert.equal(merged.tags['src/dmitrii-f-t27/trinity-memory'],2); -assert.deepEqual(Object.keys(merged),['generatedFrom','wasmBytes','specCount','totalLines','categories','repos','duplicatesSkipped','tags','health','backendFailures','featured','totals','discovery','specs'],'manifest keys keep the sync order, discovery before specs'); +assert.deepEqual(Object.keys(merged),['generatedFrom','wasmBytes','specCount','totalLines','categories','repos','duplicatesSkipped','duplicates','tags','health','backendFailures','featured','totals','discovery','specs'],'manifest keys keep the sync order, discovery before specs'); assert.equal(base.specs.length,2,'the input manifest is not mutated'); const again=d.mergeWorld(merged,{...world,commit:'d'.repeat(40)},[entry('dmitrii-f-t27/trinity-memory/specs/memory/bridge.t27','dmitrii-f-t27/trinity-memory','module bridge2;')],f); assert.equal(again.specCount,3,'re-vendoring a world replaces its entries instead of adding to them'); diff --git a/apps/website/scripts/discover-t27-worlds.mjs b/apps/website/scripts/discover-t27-worlds.mjs index 6316d105e0..0e6931d2f3 100644 --- a/apps/website/scripts/discover-t27-worlds.mjs +++ b/apps/website/scripts/discover-t27-worlds.mjs @@ -198,13 +198,21 @@ export function mergeWorld(manifest, world, entries, f) { worlds: [...prior, ...(entries.length ? [{ repo: world.repo, label, commit: world.commit, branch: world.branch, specs: entries.length, files: world.files ?? entries.length, duplicatesSkipped: world.duplicatesSkipped ?? 0, skippedLarge: world.skippedLarge ?? 0, at: world.at }] : [])] .sort((a, b) => (a.repo < b.repo ? -1 : a.repo > b.repo ? 1 : 0)), } - const { generatedFrom, wasmBytes, duplicatesSkipped, featured } = manifest + const { generatedFrom, wasmBytes, duplicatesSkipped, duplicates, featured } = manifest return { generatedFrom, wasmBytes, specCount: specs.length, totalLines: aggregates.totalLines, categories: aggregates.categories, repos, duplicatesSkipped, + // The founding sync records which file was dropped for which, and this + // rebuild would otherwise drop the list itself -- the one place that knows + // a spec lives in more than one repository. A world's own pairs are added + // here and its previous ones replaced, the same way its entries are. + duplicates: [ + ...(duplicates ?? []).filter((d) => d.repo !== label), + ...(world.duplicates ?? []), + ].sort((x, y) => x.path.localeCompare(y.path)), tags: aggregates.tags, health: aggregates.health, backendFailures: aggregates.backendFailures, @@ -345,13 +353,14 @@ export async function vendor({ report: reportPath }) { .split('\n').filter(Boolean).sort().slice(0, f.MAX_FILES_PER_WORLD) const entries = [] let duplicates = 0, skippedLarge = 0 + const duplicatePairs = [] const staged = [] for (const abs of found) { const bytes = readFileSync(abs) if (bytes.length > f.MAX_FILE_BYTES) { skippedLarge++; continue } const hash = sha256(bytes) - if (known.has(hash)) { duplicates++; continue } const rel = `${label}/${relative(inner, abs)}` + if (known.has(hash)) { duplicates++; duplicatePairs.push({ path: rel, repo: label, sameAs: known.get(hash) }); continue } if (rel.split('/').some((s) => !/^[A-Za-z0-9_.-]+$/.test(s) || s === '.' || s === '..')) { skippedLarge++; continue } known.set(hash, rel) staged.push([rel, bytes]) @@ -360,7 +369,7 @@ export async function vendor({ report: reportPath }) { // Replace the world on disk only after every file of it was read and compiled. rmSync(join(root, label), { recursive: true, force: true }) for (const [rel, bytes] of staged) { mkdirSync(dirname(join(root, rel)), { recursive: true }); writeFileSync(join(root, rel), bytes) } - manifest = mergeWorld(manifest, { repo: world.repo, commit: world.commit, branch: world.branch, at: report.at, specSha256: spec.sha256, files: found.length, duplicatesSkipped: duplicates, skippedLarge }, entries, f) + manifest = mergeWorld(manifest, { repo: world.repo, commit: world.commit, branch: world.branch, at: report.at, specSha256: spec.sha256, files: found.length, duplicatesSkipped: duplicates, duplicates: duplicatePairs, skippedLarge }, entries, f) summary.push({ repo: world.repo, label, commit: world.commit.slice(0, 9), files: found.length, specs: entries.length, duplicates, skippedLarge, health: entries.reduce((h, e) => ({ ...h, [e.health]: (h[e.health] ?? 0) + 1 }), {}) }) } finally { rmSync(dir, { recursive: true, force: true }) } } From aa6254aa9cbc4229b918a43d7713f33b29dd42d3 Mon Sep 17 00:00:00 2001 From: Dmitriy Vasilev Date: Tue, 15 Sep 2026 22:39:23 +0700 Subject: [PATCH 3/5] fix(ci): the apex deploy copies every directory the build produced MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The copy loop named t27, queen, wasm and fonts while dist also holds agents, crons, docs, functions, skills and tools -- the six generated catalogs the Explorer tabs read. They are live on t27.ai only because a person copied them by hand; the next clean run of this workflow would have 404ed all six. The loop's own comment claimed that copying directories rather than named files meant the next data file would arrive without anyone remembering to add a line, which was true only inside the four it named. It now iterates what the build actually produced. Цикл копирования перечислял t27, queen, wasm и fonts, тогда как в dist лежат ещё agents, crons, docs, functions, skills и tools -- шесть сгенерированных каталогов, которые читают вкладки обозревателя. На t27.ai они живы только потому, что их скопировали руками. Теперь цикл идёт по тому, что реально собралось. Co-Authored-By: Claude Opus 5 --- .github/workflows/deploy-site.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-site.yml b/.github/workflows/deploy-site.yml index afcf9b4af2..381c160a32 100644 --- a/.github/workflows/deploy-site.yml +++ b/.github/workflows/deploy-site.yml @@ -71,10 +71,17 @@ jobs: # this map" while the same build served from /trinity/ worked. Copying # the directories rather than named files means the next data file # arrives without anyone remembering to add a line here. - for dir in t27 queen wasm fonts; do - [ -d "apps/website/dist/$dir" ] || continue + # Every directory the build produced, not a list of the ones that + # existed when this was written. The name list said t27 queen wasm + # fonts while dist also held agents crons docs functions skills tools + # -- the six generated catalogs behind the Explorer tabs -- so those + # were live on the apex only because someone had copied them by hand, + # and the next clean deploy would have 404ed them. + for path in apps/website/dist/*/; do + dir=$(basename "$path") + [ "$dir" = assets ] && continue # copied above, then pruned mkdir -p "ghio/$dir" - cp -R "apps/website/dist/$dir/." "ghio/$dir/" + cp -R "$path." "ghio/$dir/" done node - <<'EOF' const {readFileSync, readdirSync, unlinkSync} = require('node:fs'); From 604c0186d2c7bc40e8bf6790ff0ec99912d6274a Mon Sep 17 00:00:00 2001 From: Dmitriy Vasilev Date: Tue, 15 Sep 2026 22:45:26 +0700 Subject: [PATCH 4/5] fix(queen): a failed atlas loses the map, not all thirteen tabs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The shell was rendered only once universe-atlas.json had arrived: on failure the branch returned an error paragraph in place of , so one unreachable JSON file took Kanban, the Spec Explorer, Agents, Tools, Crons, Skills, Functions, Project, TRI, Factory, Research and the Mission Map down with it -- none of which read the atlas at all. Queen already takes sharedCatalog as optional and falls back to the older hive without it; that is the path a connected repository has always used. So the shell mounts either way and the failure is reported over the map instead of in place of it, with the same Retry, which restores the catalog hive and keeps whichever tab you were on. Verified with the file 404ing: all thirteen tabs mount and switch, the address follows (?tab=kanban, ?tab=specs, ?tab=tools, ?tab=agents, ?tab=project, ?tab=research), the banner clears the command rail, and Retry brings the map back on ?tab=research without leaving it. Оболочка рисовалась только после загрузки universe-atlas.json, а при ошибке ветка возвращала абзац с ошибкой вместо -- один недоступный JSON уносил с собой все тринадцать вкладок, включая те, что атлас вообще не читают. Queen принимает sharedCatalog как необязательный, поэтому оболочка теперь поднимается в любом случае, а сбой показывается поверх карты, а не вместо неё. Co-Authored-By: Claude Opus 5 --- apps/website/src/pages/QueenUniverse.css | 50 ++++++++++++++++++++++++ apps/website/src/pages/QueenUniverse.tsx | 12 +++++- 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/apps/website/src/pages/QueenUniverse.css b/apps/website/src/pages/QueenUniverse.css index 2ebd7ad32e..990e62761f 100644 --- a/apps/website/src/pages/QueenUniverse.css +++ b/apps/website/src/pages/QueenUniverse.css @@ -162,3 +162,53 @@ body.queen-shell .queen-universe-content { @media (prefers-reduced-motion: reduce) { .queen-universe-loading { animation: none; opacity: 0.8; } } + +/* The atlas is one of the shell's data sources, not its gate. When it cannot + be fetched the shell still mounts -- Kanban, the Spec Explorer, Agents and + Tools never read it -- so the failure is reported over the map rather than in + place of every tab. Pinned above the shell's own chrome, clear of the rail on + the left and the intel column on the right. */ +.queen-atlas-offline { + position: fixed; + left: 50%; + /* Under the HUD bar, not over the command rail: the rail owns the bottom of + the shell and a banner placed there covered SPECS and its neighbours. 84px + is the shell's own top rhythm -- a gap, the bar, a gap (--hud-gap 10 + + --hud-bar-h 64 + --hud-gap 10, Queen.css) -- which this element cannot read + as a token because those live on .queen27-page inside the content it sits + beside. */ + top: calc(84px + 8px); + transform: translateX(-50%); + z-index: 40; + margin: 0; + display: flex; + align-items: center; + gap: .6rem; + max-width: min(92vw, 520px); + padding: .5rem .8rem; + border: 1px solid #ff7e8b66; + border-radius: 6px; + background: rgba(2, 8, 6, 0.86); + backdrop-filter: blur(6px); + color: #ff7e8b; + font-size: .78rem; + line-height: 1.35; +} + +.queen-atlas-offline > button { + flex: none; + padding: .25rem .7rem; + border: 1px solid currentColor; + border-radius: 4px; + background: transparent; + color: inherit; + font: inherit; + cursor: pointer; + /* A finger needs a target; the banner is small and this is its only action. */ + min-height: 32px; +} + +.queen-atlas-offline > button:hover, +.queen-atlas-offline > button:focus-visible { + background: rgba(255, 126, 139, 0.12); +} diff --git a/apps/website/src/pages/QueenUniverse.tsx b/apps/website/src/pages/QueenUniverse.tsx index 1da5b10e43..abb6328172 100644 --- a/apps/website/src/pages/QueenUniverse.tsx +++ b/apps/website/src/pages/QueenUniverse.tsx @@ -91,9 +91,17 @@ export default function QueenUniverse() { {/* Loading is not failing. This paragraph carried the error class either way, so every cold load opened with the failure colour on a black page — which reads as "it did not load", because that is what it - looks like. */} - {commonHive&&!atlas?(atlasError?

{c.failed}

:):atlasView?setAtlasRetry(n=>n+1)} lang={lang} initialRepo={repo} saved={saved}/>:coreView?0?issueNumber:undefined}/>:repo===PINNED_WORLDS[0]?:} + looks like. + Nor is a failed atlas a failed shell. This branch used to return the + error in place of , so one unreachable JSON file took all + thirteen tabs down with it — Kanban, the Spec Explorer, Agents, Tools, + none of which read the atlas at all. Queen takes sharedCatalog as + optional and falls back to the older hive without it, which is the + same path a connected repository already uses, so the shell mounts and + the failure is reported over it instead of in place of it. */} + {commonHive&&!atlas&&!atlasError?:atlasView?setAtlasRetry(n=>n+1)} lang={lang} initialRepo={repo} saved={saved}/>:coreView?0?issueNumber:undefined}/>:repo===PINNED_WORLDS[0]?:} + {commonHive&&atlasError&&!atlas&&

{c.failed}

}

{c.title}

{authReady?{c.login} ↗:

{c.authPending}

} From 8a2629a87fd485925b1a468e71942ecc08537f1d Mon Sep 17 00:00:00 2001 From: Dmitriy Vasilev Date: Wed, 16 Sep 2026 00:02:13 +0700 Subject: [PATCH 5/5] fix(website): the silicon table follows the specs that moved repository MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The GitHub-sourced refresh attributes the GF ladder's second copy to tt-trinity-euler, the repository that owns it, instead of chips/euler, a directory that existed only while the corpus came from a t27 branch carrying the chip repositories inline. Fifteen entries here still named the old paths, so check:silicon failed on main and -- because this table ships in the bundle, not just in the gate -- fifteen specs read "No hardware run" on the live site while their silicon record sat one renamed key away. That is the understating direction the file's own header warns about. The refresh also brought nine widths from t27 master that declare a verified format and had no classification: GF6, GF10 and GF14 between the rungs of the silicon-verified GF4-GF24 ladder, and GF48, GF96, GF128, GF256, GF512 and GF1024 above it. Each is excluded with the reason the table already uses for its neighbours; none of them gains a hardware claim, because none was run. check:silicon: 1407 specs scanned, 19 mapped, 7 family, 23 excluded, every spec naming a verified format classified. Обновление из GitHub приписало вторую копию лестницы GF репозиторию tt-trinity-euler, которому она принадлежит, а пятнадцать записей таблицы всё ещё указывали на chips/euler. Гейт падал, и, поскольку таблица уезжает в бандл, пятнадцать спек на живом сайте показывали «нет аппаратного прогона» вместо своей записи. Ещё девять новых ширин из master занесены в исключения с теми же формулировками, что у соседей: ни одна не получает аппаратного утверждения. Co-Authored-By: Claude Opus 5 --- apps/website/src/data/siliconHistory.ts | 55 ++++++++++++++++++------- 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/apps/website/src/data/siliconHistory.ts b/apps/website/src/data/siliconHistory.ts index fcf49c79e0..d3762ddf30 100644 --- a/apps/website/src/data/siliconHistory.ts +++ b/apps/website/src/data/siliconHistory.ts @@ -151,13 +151,16 @@ export const SPEC_TO_FORMAT: Record = { 'specs/numeric/gf20.t27': 'gf20', 'specs/numeric/gf24.t27': 'gf24', - // chips/euler copy -- same module names, same declared layout - 'chips/euler/specs/numeric/gf4.t27': 'gf4', - 'chips/euler/specs/numeric/gf8.t27': 'gf8', - 'chips/euler/specs/numeric/gf12.t27': 'gf12', - 'chips/euler/specs/numeric/gf16.t27': 'gf16', - 'chips/euler/specs/numeric/gf20.t27': 'gf20', - 'chips/euler/specs/numeric/gf24.t27': 'gf24', + // tt-trinity-euler copy -- same module names, same declared layout. These + // were vendored under chips/euler/ while the corpus came from a t27 branch + // that carried the chip repositories as directories; the GitHub-sourced + // refresh attributes them to tt-trinity-euler, the repository that owns them. + 'tt-trinity-euler/specs/numeric/gf4.t27': 'gf4', + 'tt-trinity-euler/specs/numeric/gf8.t27': 'gf8', + 'tt-trinity-euler/specs/numeric/gf12.t27': 'gf12', + 'tt-trinity-euler/specs/numeric/gf16.t27': 'gf16', + 'tt-trinity-euler/specs/numeric/gf20.t27': 'gf20', + 'tt-trinity-euler/specs/numeric/gf24.t27': 'gf24', // trinity-fpga/t27 copy -- shorter files, same declared layout 'trinity-fpga/t27/specs/numeric/gf4.t27': 'gf4', @@ -181,7 +184,7 @@ export const SPEC_TO_FORMAT: Record = { export const EXCLUDED: Record = { // GF32 is outside the silicon-verified ladder (GF4-GF24). No cell, no claim. 'specs/numeric/gf32.t27': 'format outside the silicon-verified GF4-GF24 ladder', - 'chips/euler/specs/numeric/gf32.t27': 'format outside the silicon-verified GF4-GF24 ladder', + 'tt-trinity-euler/specs/numeric/gf32.t27': 'format outside the silicon-verified GF4-GF24 ladder', 'trinity-fpga/t27/specs/numeric/gf32.t27': 'format outside the silicon-verified GF4-GF24 ladder', // Above the ladder. Surfaced by the coverage guard, which matches the @@ -189,9 +192,29 @@ export const EXCLUDED: Record = { // would have been missed by a path pattern built around the known widths. // GF64 and GF128 have no hardware cell; GF256 is recorded in the conformance // draft as structural, its bias still an open R&D parameter. - 'chips/euler/specs/numeric/gf64.t27': 'format above the silicon-verified GF4-GF24 ladder', - 'chips/euler/specs/numeric/gf128.t27': 'format above the silicon-verified GF4-GF24 ladder', - 'chips/euler/specs/numeric/gf256.t27': 'structural by design — bias is an open R&D parameter', + 'tt-trinity-euler/specs/numeric/gf64.t27': 'format above the silicon-verified GF4-GF24 ladder', + 'tt-trinity-euler/specs/numeric/gf128.t27': 'format above the silicon-verified GF4-GF24 ladder', + 'tt-trinity-euler/specs/numeric/gf256.t27': 'structural by design — bias is an open R&D parameter', + + // Widths the GitHub-sourced refresh brought in from t27 master, none of them + // rungs of the silicon-verified ladder (GF4, GF8, GF12, GF16, GF20, GF24 -- + // enumerated in SPEC_TO_FORMAT above). Between the rungs first, then above + // them. No cell was run for any of these, so none carries a claim. + 'specs/numeric/gf6.t27': 'a width between the rungs of the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf10.t27': 'a width between the rungs of the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf14.t27': 'a width between the rungs of the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf48.t27': 'format above the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf96.t27': 'format above the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf512.t27': 'format above the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf1024.t27': 'format above the silicon-verified GF4-GF24 ladder', + // The canonical copies of three widths whose tt-trinity-euler copies are + // listed above, with the same reasons. GF64 here declares `module GF64` + // rather than `triformat-gf64`, so the guard does not surface it; it is + // listed anyway, because one copy excluded and its twin silent is how the + // three-copy problem started. + 'specs/numeric/gf64.t27': 'format above the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf128.t27': 'format above the silicon-verified GF4-GF24 ladder', + 'specs/numeric/gf256.t27': 'structural by design — bias is an open R&D parameter', // These use, convert or measure a verified format; they do not declare it, so // the format's hardware record is not theirs to show. @@ -199,9 +222,9 @@ export const EXCLUDED: Record = { 'specs/fpga/testbench/gf16_accel_tb.t27': 'testbench for the accelerator above', 'specs/benchmarks/gf16_bfloat16_nmse.t27': 'a numerical benchmark against bfloat16, not a format declaration', 'trinity-fpga/specs/numeric/gf16_plus_quire_audit.t27': 'an audit of GF16 plus a quire, not the format itself', - 'chips/euler/specs/fpga/gf16_to_fp16.t27': 'a converter between two formats', - 'chips/euler/specs/fpga/gf16_to_posit16.t27': 'a converter between two formats', - 'chips/euler/specs/fpga/gf32_to_fp32.t27': 'a converter between two formats', + 'tt-trinity-euler/specs/fpga/gf16_to_fp16.t27': 'a converter between two formats', + 'tt-trinity-euler/specs/fpga/gf16_to_posit16.t27': 'a converter between two formats', + 'tt-trinity-euler/specs/fpga/gf32_to_fp32.t27': 'a converter between two formats', } /** @@ -214,8 +237,8 @@ export const FAMILY_SPECS = new Set([ 'specs/numeric/formats.t27', 'specs/numeric/gf_competitive.t27', 'specs/math/gf_competitive.t27', - 'chips/euler/specs/numeric/goldenfloat_family.t27', - 'chips/euler/specs/numeric/formats.t27', + 'tt-trinity-euler/specs/numeric/goldenfloat_family.t27', + 'tt-trinity-euler/specs/numeric/formats.t27', 'trinity-fpga/t27/specs/numeric/goldenfloat_family.t27', ])